From d8286ced7cedc2146d8126268f3de560b69138db Mon Sep 17 00:00:00 2001 From: bunkerity Date: Wed, 4 Aug 2021 15:02:55 +0200 Subject: [PATCH] examples improvement - certbot cloudflare and wildcard, clamav, crowdsec, ghost and gogs --- .gitmodules | 4 ++++ examples/authelia/.README.md.swp | Bin 1024 -> 0 bytes examples/certbot-cloudflare/README.md | 21 +++++++++++++++++++ examples/certbot-cloudflare/architecture.png | Bin 0 -> 16316 bytes examples/certbot-cloudflare/certbot-renew.sh | 2 +- examples/certbot-wildcard/README.md | 21 +++++++++++++++++++ examples/certbot-wildcard/architecture.png | Bin 0 -> 13024 bytes examples/clamav/README.md | 19 +++++++++++++++++ examples/clamav/architecture.png | Bin 0 -> 22676 bytes examples/crowdsec/README.md | 21 +++++++++++++++++++ examples/crowdsec/architecture.png | Bin 0 -> 31060 bytes examples/crowdsec/bouncer_key.sh | 4 ++-- examples/ghost/README.md | 11 ++++++++++ examples/ghost/architecture.png | Bin 0 -> 10147 bytes examples/gogs/README.md | 11 ++++++++++ examples/gogs/architecture.png | Bin 0 -> 17162 bytes 16 files changed, 111 insertions(+), 3 deletions(-) delete mode 100644 examples/authelia/.README.md.swp create mode 100644 examples/certbot-cloudflare/README.md create mode 100644 examples/certbot-cloudflare/architecture.png create mode 100644 examples/certbot-wildcard/README.md create mode 100644 examples/certbot-wildcard/architecture.png create mode 100644 examples/clamav/README.md create mode 100644 examples/clamav/architecture.png create mode 100644 examples/crowdsec/README.md create mode 100644 examples/crowdsec/architecture.png create mode 100644 examples/ghost/README.md create mode 100644 examples/ghost/architecture.png create mode 100644 examples/gogs/README.md create mode 100644 examples/gogs/architecture.png diff --git a/.gitmodules b/.gitmodules index ad595ac40..246eab385 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ [submodule "bunkerized-nginx-crowdsec"] path = examples/crowdsec/bunkerized-nginx-crowdsec url = https://github.com/bunkerity/bunkerized-nginx-crowdsec + +[submodule "bunkerized-nginx-clamav"] + path = examples/clamav/bunkerized-nginx-clamav + url = https://github.com/bunkerity/bunkerized-nginx-clamav diff --git a/examples/authelia/.README.md.swp b/examples/authelia/.README.md.swp deleted file mode 100644 index bd48a1fdef6557b01c2a3422d135bc4734e51b44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmYc?$V<%2S1{HyVn6}@j0_B=#i>Oof;c!XuEE|R{sFq~L9Wg&em*!gA^3R6Qy&8UmvsK + +## Configuration + +First of all you will need to edit the **certbot-new.sh** and **cloudflare.ini** files (e.g : domains, CF token, ...). + +Then run the **certbot-new.sh** script to get the certificates and add cron job for **certbot-renew.sh** to setup automatic renewal. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/certbot-cloudflare/docker-compose.yml). diff --git a/examples/certbot-cloudflare/architecture.png b/examples/certbot-cloudflare/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9eeb14fbd00f5530ea81c3f3d97521d7981d0eb5 GIT binary patch literal 16316 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 literal 0 HcmV?d00001 diff --git a/examples/certbot-cloudflare/certbot-renew.sh b/examples/certbot-cloudflare/certbot-renew.sh index 8b3c8145e..ea1689f3f 100755 --- a/examples/certbot-cloudflare/certbot-renew.sh +++ b/examples/certbot-cloudflare/certbot-renew.sh @@ -14,7 +14,7 @@ docker run --rm \ certbot/dns-cloudflare \ renew if [ $? -ne 0 ] ; then - echo "error while getting certificate for $DOMAINS" + echo "error while renewing certificate for $DOMAINS" exit 1 fi diff --git a/examples/certbot-wildcard/README.md b/examples/certbot-wildcard/README.md new file mode 100644 index 000000000..c1cc1aaee --- /dev/null +++ b/examples/certbot-wildcard/README.md @@ -0,0 +1,21 @@ +# Certbot wildcard + +Simple example on how to get wildcard Let's Encrypt certificates through DNS challenge and use them with bunkerized-nginx. + +## Preamble + +We will assume that you already have some basic knowledges about Let's Encrypt DNS challenge. If that's not the case, you should read the [documentation](https://certbot.eff.org/docs/using.html#manual). + +## Architecture + + + +## Configuration + +First of all you will need to edit the **certbot-wildcard.sh** file with your domain(s). + +Then you can run the script to get the certificates. Don't forget that you will need to edit your DNS zone to prove that you own the domain(s). + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/certbot-wildcard/docker-compose.yml). diff --git a/examples/certbot-wildcard/architecture.png b/examples/certbot-wildcard/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..1e679a4c5b8e13d53fecd0e6409c70d72ba29f40 GIT binary patch literal 13024 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 + +## Configuration + +You will need to clone the bunkerized-nginx-clamav plugin and edit the **plugin.json** file. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/clamav/docker-compose.yml). diff --git a/examples/clamav/architecture.png b/examples/clamav/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f8450c481e8fa99afc54c26792680e5ebff21a6d GIT binary patch literal 22676 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 literal 0 HcmV?d00001 diff --git a/examples/crowdsec/README.md b/examples/crowdsec/README.md new file mode 100644 index 000000000..8afd603d1 --- /dev/null +++ b/examples/crowdsec/README.md @@ -0,0 +1,21 @@ +# Crowdsec plugin + +Crowdsec integration example with bunkerized-nginx. See the [bunkerized-nginx-crowdsec](https://github.com/bunkerity/bunkerized-nginx-crowdsec) repository for more information. + +## Preamble + +This example uses a bunkerized-nginx plugin, you can have a look at the [documentation](https://bunkerized-nginx.readthedocs.io/en/latest/plugins.html) to get more information about plugins. + +## Architecture + + + +## Configuration + +First of all you will need to get a bouncer key, you can use the **bouncer_key.sh** to generate one. + +Then you can clone the bunkerized-nginx-crowdsec plugin and edit the **plugin.json** file. + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/crowdsec/docker-compose.yml). diff --git a/examples/crowdsec/architecture.png b/examples/crowdsec/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0f69d305c5e9902a2298700b948bfc02081fc4 GIT binary patch literal 31060 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 RAY)<4OTU&Xerf3UKL8U+w^INB literal 0 HcmV?d00001 diff --git a/examples/crowdsec/bouncer_key.sh b/examples/crowdsec/bouncer_key.sh index ee42e7e56..bcb913e26 100755 --- a/examples/crowdsec/bouncer_key.sh +++ b/examples/crowdsec/bouncer_key.sh @@ -10,8 +10,8 @@ sleep 10 # get the bouncer key docker-compose exec mycrowdsec cscli bouncers add MyBouncer -# enter the key into the CROWDSEC_KEY environment variable -read -p "edit CROWDSEC_KEY env var in docker-compose.yml file and press enter" edited +# enter the key into the CROWDSEC_KEY setting +read -p "edit CROWDSEC_KEY env var in plugin.json file and press enter" edited # start all services docker-compose up -d diff --git a/examples/ghost/README.md b/examples/ghost/README.md new file mode 100644 index 000000000..4a42b35a8 --- /dev/null +++ b/examples/ghost/README.md @@ -0,0 +1,11 @@ +# Ghost + +Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications. More info at official [website](https://ghost.org) and [repository](https://github.com/TryGhost/Ghost). + +## Architecture + + + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/ghost/docker-compose.yml). diff --git a/examples/ghost/architecture.png b/examples/ghost/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..b0846a495d1066f06f2e0b95bf2c1da8d23406fb GIT binary patch literal 10147 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 + +## Docker + +See [docker-compose.yml](https://github.com/bunkerity/bunkerized-nginx/blob/master/examples/gogs/docker-compose.yml). diff --git a/examples/gogs/architecture.png b/examples/gogs/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0dad0ea5720256c325e5f5b1171f36b792bd92a9 GIT binary patch literal 17162 zcmb`vRalkX7d;9{2_oGf4N7-OOE=QpvFS!q=|)PVk?ux7y1TnYx}-b*3%}oU&bc@j z=i=}nvNwCbd&OLHjycAhZ>XZY1PT%X5)>2^ij<`2M<}QlWZ?H$L>TaMnfK!w_z&9Y zql5@l*$B}tcmQiIEGG;FRrwY9-VhEverYeM=>!G!y7T!Tbgx~32^5q_hLotV$|t?Q zX$U%45{qr4u#r6$)}cLb2+0vSvCyD*b;C3&u5hxcm5ebiE!cbX zcADQcU#;Zgwwk+bC2Vr9Mq~20KmNWyY)*4Gb3LkOx^pvg6+gxhMuP?4F`PRZh<>Et zdjf$N`QLM*w?B-@{yis2;!OYiB4M;$|ER#{7a@{+k5&GAqi_x?FV4R=hMWuciu`vm zf&c4b+kc%){QUgBeEG6iXQ$uv>7*kNnagg)*~v*pTDqvLED!y^Pc6qxaxOVIutq=# z&hWW?M^5f%R=KgY_4s&qgoA_QeRqjH_2=R0x4NQYBAaqb)E0nqU0+GjdA7$bOoSz9|x;pP8A7zS$Y4 z@K{puXrdXr);N}b@9`F`Z*b6VrD?viGrOuPHdP5jT1Mt85zj=idbxZWFE$R&gwDS? zF3^I(-d!E#b9S-XEU@=^oo>A3Pary`eQ5FX#)QND3AfmbsNyl^MHUtowm)0`1SS(3 z7uR3dje&!6c{VBtE*d*^`}^rp0{P$UA)S5c#>BkNA#<gwq1R0h0t!?h-) zxc(qx?^v~3(Xbkyw|b7%P5>v|dIf>{%Bb5AK_a-avhvt?)Z$-FBIt9!GoJn4?NFz} zpna~=cynXJB2{QC^FwfbJ-1`pzg?{{H5sjpBH|H=4C)CzSX7J1)QN zmk~$5U4Q&=-oXYe{fc^L9sk{>TUFH`lfg5VNM&VZ8|3KEYX(^dGvwjr{g`byK0O^M zD<~-Fp+mCZ4cjVtsVSEqcM`osQ8QOm* z;F3tj#GBs6#-{K5>MFn21%F)ixU_0DHK9#Od6hYH89mZ>y96(d_Xjz5Q9C9*N;}!K z+gJI+&oduanbZ5p)FE5%i8cOoxQ_>^IouBK+Ft@ zZ?rOr*hW~Cq}Pu|dQ!{kdh?Txf8HDk-X z;f;!#DxJss^REgiu^;-0t)>c;Ha9nOo`-PSQyBDQtf#LQ|2=-wEMeRH`?l$~ZS!xN zp>j#NH=1ZeQ)EntkGK0wwA}Q@JrTY`iHUfRExtd|wl&N<9i;0QBv97PJE!35p$F;)~ z?H`M_>vdNf)=8Ne8G1;WViJYR!hHaCrG*(`ip~3bSl?2kX{2oDY?o<9p6Pz5c9m_h ziDSmys>D%Ud$S}tp?QMUGgoW|DZE4sUP^zY^zA$HZ|I_7z=)Qc+~as(4+6hI#zsa4 zT*Yg4nE-eqWLDyy)_vx7jtl&L8p$0EMn=XO7_fp9mQeiz58evx(q|ngY{)aCr0+hb z5$7!Ztc`XQsP>Kj*~4q~Q*}#vu#1YCN#p@y3LEnVc*;7v-+57;Sp@}%Nm5c$#P4US z*HK0*W$nDB2zYQGNnA=O2>f2qHWOW}BTq`Auf`Hg6&Md^2xf>=081+kJzeWKI7(=~ z9tv`zuPAOB&Hq5|_pP~y0E0rKI8RtQDL>BT@2k=X(urpSIb3d3aniuT!Xjnk;rXSU zFApYkq*7q~S6!{OHiEt5-1s4{jTfg_^A779(;{yCWXoExl)#W4Z&&5x7{*-Kyo~wL zN;4(iv&*82etFbw2+dQRhh35~;$no}jOKW>14U&MkFaGjz3Y};c%G_gntm~-x^Ap`xe+aUxv-=gn@JE8H&u627Pi_pi zl>?hRe*Wu;UcLQ(g84|V?#A;zogXd}c17u6JTJIM-^0H1%12CAZpn|jy#rdtX}=a| z{as2TOwB@zOQcz2C0(K!X6h6hqPIYByV&T*EaIW>3_|fA0$*jijT7|f4K=uPC}ys1 z0{K+jS@4YA=SsdJ#Mp=M!;l$h>{{oV)i#ax(0*Ce8Kxq?cg=8)YwBD-D=J982LM;o zp>=Hiq?MQ zJw18MvVgXG?UVhc!TQ-Sa=t2vCnC(#hEoRF{a*boRO`yTKlq@)mH6D9b*Ku}Xv z1-{^7XWZY6nOTmCjCoJ^bg@7g14fEiroB z-W>G0k|@+x&tqWk(>05&?$Hu0s*fM0W)+qE*i!`AEiumZHD=&a(6mix8e(^kF{e>nkP$YjJo84tMV7r$=mT?7+alW{-<3O_VeF_r7}i?RJ>>le|5I zjIjHDsYfcX1Iv&clUI1mq#PXI^oX8^@-aS#I)`X3y-HEgsZeUhd}iLNEvrOqDvXl1 zKW)g#{BM}6QE7z%k<~BvJ=SV0v=Y-iDH*xggk)+))`*|V;X0NHKKrb%3CPPMz>0RkN~)TgN|_<)kPzTa zKmo7O($b=0qajq-~ ze6%W_boE45ODbVw5ASZB9qS{HKHi$Xo{om9YK-fqNeAD6YVJ1oqbM;P7OqZsj}EK+RJ}Lz)?kxPWf)=rvq?R!F8#&EK5kQ8TOn z1l49Q&D7ZFT`#VYli83+WIr>@o(z7;vfA!~q9R&4y5fR@AH9-@KQ?n7zszw42MO(sXd`1*inT%24l#I&OK-ZsH( z$*Vaa@(iO@AC9MRPaNF^OD+O69=M0ajoPw=fS=Hx2#a5wYL3Da&i6 z^^CtY4X_#(N_BWG=kP4_pXKGzbIKM@hl;_`*=9oL%mu=av(ZS>bb1$61QZn$i@aVz zMw1XOES*b|=7M8*&9^NG-JfZ4?{8EodF^!Bnqbdxc4++hY&27StldV^tZtwWnT$Tj zOkzk+#>vDPBU5B-y9@N+-#M?P+pP(tyfH8T#;i`4wA)^^sZoi1PS#C7_O*64EVT@W zLz~Vr$~AzWGVOSNfh=LYqqfwC_-Xv=sskEd7ARisAfrEzd8VnG( zVP3r0wF}GjygIzOxdATb;qEGf#W*M~4l}Yiqp7J0qza!;x^a(DVHU#9D{5uGK)WbI#?n(hI%x6tlO0d~7T zUu}M#-!)OH&1FwuUlJXSMnJ~$?b|nn3;|%ff7^UtK%6F40UA4p1)J7K7jtp$dhPu4 zIxu1%t(QDBVuy-}!;mO^oPJNEa0u2lJpM*`{d-F8lS2U|M+~RvY7k!H6P47ppvbDX zUbOmB8B?~oRd<|H$1O23EZwUK`ckywlTr2gcwF2GwPayo;r1fc;+;rQ(jPF>Slsi; ztftb6V^&06qLiXwtiYBwxJ0jyJ5eVm#WJofXqohyu3Mk(1i?wX`u*KPvjkpIQL)Vj z1eIv@!144`TsU+q^PZ8JC{toOpO{R%VWaO_lA5;SANN=%MLmbR()N+FQ!2bHIK019 z!gI^=o;aNk^|SExlKa8AioLJY=rv-unu)JSO7`uMe)&DAj3Op48TM^VY%IpFuZqSV zsv!{X<93AY(Tv{t6FZ!Fr|0!MrK5EIyYTZSsvDhWJTQ~k%wLy%11bE3 zY%F6MVqG#`;~1$e^khaCBq0QXJ}j+gmQXeK*0s#_wwpq=~uf5 z$@au_J~=pAL-fQ=IjX}THi=r@?;Oz2E{wK!dxmBa8p#XI;-g)S6=WsEMpTCut>{J_J*Xrx^O(S^kM!VaNvD;Mye)8hv2pQ*w@M}XJs4?*HBrpB49lQJ+=TQjQ z`z9tFC-daMF%xv$=mTM`)^-`>TT2e>JuU}xF0ISk`4g4p1Qi*_3Desj6E z9)|TS-GKAx4@Zf^C8T2Dl+`kc22S2E%Jp3KqChj5MSm_||0%nPnZ!~x9;^G|(q`jT zWa3Q?Lby{&vOK+7h2?FfnFZ{k{5c0n9OlMw`mdg20xB9B^S)>@dnO9ouHdD0Yin!3 z&9ve&>5U<|goK6hI`51D4=%;0uCA$xkAU=>8wAyun3#L2a|YgQ&3Pa z>F?_Uk!x`@;u-Vt{(?SiuiYbMA3w{(7{;*Ds`+45sWkQKVybm?Vn75$xXC90-0C5E zpP7w~z}unwQYteO99$MQBgl~Sp{z2z!$HHVal!-4OPlZoZb73wUOJ5-A+kAa{R&bC zS24Ijd5TXBJ!iWFzC8n@ty+qz^X#Qb99B3>eIa-!zOry|fnXyi>w5~y$^@LYh5&;x zPe|ckTujICVTB0H0VIBaD)}Ku?)wAadjr0jR{*TX2=^5os&3}~Nx=w+mMQ$N^6ev`Jx-V2-({sf?uzs z>b>tcm%6Wwy&6>Y`oaE?l`8fTc?P8d zWywfquR2tYGv~oOMMlJkI~n9aE0PibFe6m zk#UnTdh9I*C)>ZAqTpOFyc&2ZXDX@T65qNHr)#A$jMs7krZGS}QIZB{!x^Mmo9|y2 z6&L@>dGqECIIX{2_GkPNP(d)QuIjSxX5b->0bBi*M6ktib6|7ud%1q=;nvp7(9L90 zQj(94&(-0wza6Tcx3_n0eMQ^85Ln)K?{@uB1q>d-o>SRl^&C^+oI-{^s%pM*vXH1q zk`8#l0;hFt5GPxdjU%f?8_CUqSE$d`znf%{*z~>9+m9S$6Zr zP0g3(HP~-}XFdM8v$uD-HyzGN2^;Txy3r3Ju4P&?1K6^{!op*Ttlx}{wj!dUunfq%-}^5)+my-3CTJsK*iKxZ7qW+UIu zc7KGrxgdYA=r5KH?Q-H>|1S7$qg&v}fP}ZblXBP3kMO+7{p@<5PFQ(kvYpV!XEdE3 zdyg3aMq=W$wKby!qCtQ!;9ubh6;HQF`uOWMIBT~0cw1?|&;dKg&!0w5CGy3Nhn+n> z;hE%Sl~+|2+pyC|(2jVSk6CTWgA->45idzoQu%gy}Lz56O(Qm(jKNVZUMjhUj8jQRuCYW^lB^`6{nK2n$Y+u| zhi92got(^Swk+@t_vZ_o3I6r%Z3zlJLV!y-IXO4rrAHY8OfdEuaQg*4)tqx*i5MA? zOX9(fS>SvWgVj<)xV~1r9hV?+ID2U4CX?8Zp5wF>M%Gvz>+1_qu|ol*5g?XBBKp=w zzJpz|!w(m5g1EUWtls zq%1J7QE)xgb2;%>2YL=#MmsRg7M?Z}#A3aVbE*sNmE-TSN$+sTIBH9K&8 z8tLcVwOlhixxwf9VI(KN5vj94>c^fDaX*2Nz(1S%GCB*Qsuqt>UX5C*MwRt}*s9jG zzS%YLZ&%20`0AGQ2mO{I=LSs6Tmp{Z*EcWC)hd-s%w%8Rd5OEnTsOXekk5`X%&9Rr zCQ$FPt-r@XFKI~A=qj^->79sEsQ2-;kNwgRpPbHe`cE=MbA zt$pt^fjYL_;6li4{{!ehg@wCd$pNZHXpP9BoNx~(WtDn}QvI+@Zc#M~{2!GRn@ z-c>0Xn*jN?y$#R6f?An`$LqxU_I18yv`BvB*GCuRNMk91&u@nuiMSFaWs&3QJfh?) zrmxREhr+fm>QOm<7U=2=RileEt`%d?`iu1--1uQz@W)806|FRM8q5DR*NzS8>JqI) z#kO6j2^DX81C+PDbZ3AbQLKXyb(%h*cUoMT>R<(UlAb_M^mpxU^pGSqi1=wWPXk%4Wmjd0SqzpnC-uoS6MGbu z?UO5Wj-)GpDdNgdX+ctQJMx7LE8*N&LXrAH^S&?+?Vswz>ZzY}@)h+b!XuS1B`Rd@ z`zT*|uU|lpxd}m0I z29Lf5eC*9gJ86LPu}yLbIGr4Id)FGuMTx?ljb0L4iSF3_99midizG-%30op&GN1yi8W|Z`O6UbQFRuu5X%9@W{a{`G_;($-RI7{xLZVg@T3#;rA&`h8L?r z+ZSN+open{g9UanwzhLwFo2dre(7*^32}jELvxw@(4wn zDc6x8PsH4@L@Q7vkA%n9e@RmIv!R9?9V0FKFoiI|ro4I0mKBA~Y6HWSs1avP6X+#S zUDb3#b5Z5z|o&Y0<5H7L+6J}FPX*IFSlF9r5crf;_Tw$ z;_#ZCA!;}Xy9jIP(0oo?vde4$ef!6A%9@x^{_3Adw$`n`arEH?ifznAu5`alOyDEJ?Tf;PS>O$Cl{#y8qwt>3&kOy;dd2s^q%iP-{nCM7@5m>x}^*2OR4>Qr9J zECDh$8n!5x19O62jAl2hitf4NdFK(F*>!BQ{7bJEA1Uf2P8Hpw9D1|t&b6-AQTU-r zRCcvjwP}g;`cKHuW)N%va?1Ck;+U)dE%CVBRU zNQTx`?CszviiX9#*TScX;I7#cbF%^TMyp|zuY#V(Nrg!HYMIUkF}vqTHF$BCt0bI7 zdhKg(r4>T?&i%`$14uD*4Yaw-#l8Kyd2kSMDBaQwm7+}KRHUAzXhJk>1RQSIlcJK6 z9CVb}Z{Ng%CPaVOREBWR3?;FN!K@xH{c_5wQJR{Xx}KI=Ukcj;d6P-w2dyDa0T2X$ zK8VofZ1l1%R<|6R9eR*c)f?2Z#Q1;nL& z&5T2JK?=i-(~3DbY6Qf`vANcfvD?^6!%q163q?}{2*^XgNv6^{L_f@zNua;^A_1Ox z?|LA)XoT)SkBN!-h%dFP|Ct3&))Ykj=jSULOVDI5znb{QgVP4ZIWJ1m4YKgYos`Rd@({X( za?vrOV`F0h(&~#%O>F{}ZQ)z1+FQA*rd=1Gg8ut0c^G`#A8^PaEXCd?;csFf7cQBm z9TP$3y^X(qMZV!r7CqI*@r4D|0ODd|~w zBqV!hXJ@LEu}aL@-JNGiEn)G`8S{dhAgkX;oXDa#)L`Ay*nY$+t$8FFC<%9e7pSr~yq^zrp-C*3D zQHg<{zRpe;A{BT43foBjfNY#nVDnJlM?7pulDt^0rZ>C^VX|rxkyZ6&g%a{|E$!iu zZ;l{w_Sc8=gEP$*Gg{~%B(R+nKFffUOlPMFxYZEWQQ0YD;*Z37kp0H<475WGgjrQx zxzyyH8Wq;4%x6k8?He;)+eEs=PEX#Wi&CeDbI+`Ghl|N01k)&_Q|3mJSHa-m=Qz2z zV;*jqi3SpKVoK8 z(bK`J??5_*=zpJsogR*Vh!npej6!1m=mp=N<2j^-oil9S6Mu~?F&MrZwoSesS}5XrD&TtMwgU&RP?2m5UF-B{mLfaq|sIrw~K`B2`^ zfE4K_7mCPssXhh-OCVAKxvH!D^%3v_cqIBVvdBnCB_$<*v}u9?nbHqY;H7uxt7)1# zJQ3#_-Rzcs9mgtbYVK}r)j}ro01R$7JuXN3(g~!Yy7cA?y>MewGqYG*DS=~Lz)1p# zh>c=tn#$`Ewx|;OK|&&bTA=g`sLoKssD1KuOUs0w?73q*%Sa4WB(J&{GRvyV{FppR zjG>T9{kPwSa@7H`0VVgy1M$$x7Ivpk`p_LOdH%Ff78qBRjZCzDt z*H7P5E)@mCPYyO{rlBM|`nM?2Cr`OPdR$It(H04xj}SL_W|yanM9U3(WO}7xSgEHr zz%fJoS}U`HTRN)k)JzcE!*_%h;+~eAgKm-T$|O%&RZm!zPS}+$nN=Mo@h`iqt<|Er zN=c!ClDdjOuB#dSqAtC>&MLQlBlV_;TX^P$qhC%H`aVRK}1-% zFW0j=4OgB7Dr}-Y+Z>yA`~hbia*`rG5Os0<=R?&GxM%#Aa{i->aJwrMGwr=wp8Du% zI|9k-`LoJ0`!buo@^hL?I$ztY7aw;*29*U43xiq9uMlH6twIli2x(8*#wtWpxL=RO zHr^=WerBQd@sdSKbcQJhDK8&qil7rPQ)#@29IqwNdy!Tya(k!#EM1dQXqXxE$*J-Q zRmjHU53?${rm=SQi&wvGe2L5$n~q0|C=&8^D4oAis@Q~t-y{Bae26hLo7oT=4=xcW ztrLJ6K$t6EJO!1A5ZFac4#)&0BRtIN#dm!lh%Zay>Z$=Z({|xT@!9EVR<|7igm)&A zkgHGNI}wF=guSb4UU$`t`$eOnM3!^5iZ&+k)1M1qKclII1E?<-AhYlMz3F>|Pk-V` zP$yPbiG7z@y-R2f4I33%Kkd*$9m2__zGnP+J{?Dc%orl4gM1ImaMxbk{mHE~ldRQC zSygGoxiy?31%@ZAFgS>09QhK6LCd;X(Gtxxjd&vkVWWlgPv z=B0%XcCgu+TgLqxG%eOA-gIr2S>F$j6h-Y24au$Jv@KUOW$cB9GVWs9MjGi)4!PRqzOJr}vObUxAM9Fbq{u48x$qVMFIy zdH8Eqm4xr&84LRmf!CDuP_i-+DkrgVSz;x1`&Og3+kV!%NsHwVJ2PrI`L1U_} z)XP(;;FJBfEJqsY$`+KfVOg?cl(WO`UU4@8u}08{laiMHsHz&M{pzbF$VAYFgj(@|Ni} zCtKgqO|WigXljmceTsHhGAh@H4I!KD>7AM3UQXLho$UuVV=HrfLFX{EPu23VnrMrdb`7&@XVT0DD`gv8wR)rlTG(jFQSHziSud z_Lc3QZ#9DrZMPl(<{(@Y&^k&&I_M?V|WGxnK0qay=*>|XDsc@?get-zw8a8dAt!=VD1c>{4=kd<-;$L@$*NU^)=Z>UT^`zd`numPU+s z=-f{l15yXCpBG|XRe+|uo!3|;fff)D_)i3*y&2DxrykJj$!?yj7gwX&yIV{&Q>2vMs9M!MZ(Bhe{_CzYnF7y_hJ-M^oE-DuxH>+o-v=zly`y_>{HFV z-N(q-dm@72?4l}Gi>q1rAc89m_M<#zX|2|MdfgA(gXR^&H1gNfn8q4`zEC6}2 zcgFmdm5VFb6>#suvy#jV#)XU23p3Cq7qSz;*G4PN)x4)tuO#drh+er$5d>{7zQhGRd3fj0q6HS!a$*oX|) z9w=oPBS^J)xV?y$BA5E2Q4bGjdu_ujiE5(3nVAGHP8cFbWw>0w+FDMVhTRB4uBcja zssu(|=@c`N%Wev)`T}>tPQp6e#Ll#6+Joih?e6+1%7LCbsVcOoypr)UvilPW8@Br2 zOdoy5zDN_>35?FAYEfIA{;y9iX@!4T19#hvZkvUwBj#g-jj1GU#cS>cx-H_X$<{Sc zRXl@~R282%zLcz#F*hi7!vh!g|Yc$-bFKe*hLElQI z>#u(KY&rJN28z0#oOTO)3>4zVhY*SJOV{skz865oH!|6Vy1lHsPWZ*}3v0*{Zl5mn ziz(^mW}h0rDbxfv>_;6l8_UZb3=Esp(6QB}{cSgb3*T+=Gx@Q@zBx%VN%I}6smwbB z3{*IU({9Du*qF^>tqZ_uR08$_pcWm|GBK4G7DDXoTAj8>p0j)i3&U%)DnN07K#Of_ zZ`>P2%xcoN+V1~{es6CNyvW7g9uWm4H}k?Cq`r;{uu|mB(w>+0jZ&OlF%%M{>E)V= zb%%b*5C{Zl`#L`@r{mu#uXfy4w-H_+41Q;7wg2NccVk!@pzcf$IR8g!l;f*1yMqH@ zO22*XK*@>KtQ1th-?>Wvl#8CvC136PaBg}R8^%YG&MDU_{Zu)?Nrp&T?cvq zs4pHxB&E>Sp&x+qEUV+Fe*30Z{8#5^uty^6=t*U$C5{xShEe>WbxD3@Z1oJO`eJ`3 zf~yJtSz&?2J;@W5`>+15c6UCFr-iKam)#tpId31Di{+B5=>g7>Uua{7Gr1oY?wdJD{Z)}Y4 zd7a;?<9@k{ii)a{C9*dRq_3(oDvtZ8Bg### z8w6$u_G}CK_FkX8C7Jsg{3wa4>u!cXsJze$cZ5G*G|pto#Ad3{sl=!Z|DG`7RLc_m zezERl-Qy6_F@4Ba#t}(|5osoQnSn?oxvNhE-n*i0wWCXB7VjY_zMtH(mEKSf*!F}S zWW5?NF&Udy?4OqG7qiQWyF|nFcCWodiiOGPwR~7sQz*}hYg-`y;Q@|OU?Ulg)W1TM ztZoz-0g2j|)GqyA^p#eo{fy;n8swO5&&(b2UYiRUCpI`c1tVbIIC%{Y>+oRSY5=D2 z+mf5G$y5^YI0nF1((AXR;s9?!`q6L5=jzGlVKUTv83jwHCWvnu?^x8TAbc5Xv^#Hv z_XB@qJfEyY_266PDpf9)7E?Ze=>m$k@<)>W0b11^>iwl9=UA!aRQb_`Rn4b}Z3%Kp zI{Pl8VSmtHKIYxuA;-T<6{LS#J~{?fr$jjDn%pYdP5Dbbyph{G%HiqK^z75U@J)J@ zTST~JSnm$U-4K>slRBy}4!q}4MX7K*(nH+pLHg4Sw61`-ev?4z_X(}7f}i7`1xcKc zb&#jCmxV@C@h2Z?7#bRGD6FUeaYHi2=#Lr;8K2L6;=eggWHY}z+&zCMpJ&`OJ0DE) z#4-HWP)Xj*9ddH^LXa<+uTM@tonBQ;Haw$`7kMavHg5dTM2W8AEd?Cv3pg(S7*d-z zLD_r}eL8ehTho#+K`5}*h?WY!2+7?yDC)=5BdsFXN zt1|Od0jDMVVczhk9EdJU^(V!=LXV(hMezRk0|6~sG``ZX8^8(n*XuEpW~8S@P{5#dFocq8lj7ikmr=yP=ztDl7L97Dae&<>=> zP4_D9ioBNuQZ%EnBt~g-vT7&=1*Gd$L{qi^(z7SoXvl_gG$&%Wh;D9vP!N3B*xC66 zP$Q@d?TEy-Z4U|xTKb!=W>6g6UAe-VyruDU_4!Gn1-Iks_h$vMe@4-XIax;K4G zTpj!NC3?*s98C*;0RM!-61dVs!C1TW1}`!S}%1d#en+;giV2TjmbV}4WFa8rq zsbpnkR|WcJ=_i<`q1ffQQDo%g443CPVX@2&K>JeWVuE(KL+6fr{CQL4JS{2;v~7(R?*{6jDJuR3`w__|16tyfR* zh+TR6B*&+WcL>&ff@5>waPk1Yd;`s7P%(ybr1Dzox@PsQc{BRg={x>JzPbH&K~9K>Fgem@M;XDusPBg5j}4=O zV-?Rn|4{EYvc!Ly9i)=;*&v#Tx2o&+my32AJi;(bB;7^WPc1wkRY1mN9J{rnh~-st zcmLJY#P^^E3j^wLw8lv7>i(tPKd|S-Ix6Tu2Tu+a8Ncj?x2BTP+C%F@ExjA-N5^rJ z{&!e{Jos;;)fssRBf#Se70<*;*}vPtu4ch-u`|)?q%<_Wpb7}UXrNG?&%BKSnQrIu z8Hj3j^U47(F;kVRjX!>)gjZLGtcP!xx|M*cOShdd-x+j7f@N}0dI1_KP4ZOa)Rm8Y zk4WV9I%nUZmlu6Imk^jHz7*1DVPf=~>9s93i%Ut_-`s?IT>fZ-gWcVMGlqqB{hrU(VfvP# z&(pf}M8#8*IE~;&R3W`-hEn&Yaotl;@D}r5cMEy%?fuzkp>V}lOz9RJ6>WQZAzj@x zHB3a1CP+9vcOT&dzdF0|s$OgFQb^x>=_2jcWz5Mxo^7|2c^Hzf9Q<2pKjUz-YvuzQ zWTM`<`O`@jnCuiOtREmmCShJ$P(*F+>_`^Bgauh(8}Tb}#TC2*0_5>o`QK_c$Ay=Q z)DRSJa!xt?Q&FqFY^e-BW)gL+LC_b6 z&=6mtpg_t@j)|@Ira)%&Cg>Hu$Orwe#uuRE#`kX=6d@rY#!L48N~lNj*VSgjS-+lB zMVSvINc0Rtg9;(@z9fW*@grGi)p1N?WfgRG()g`Ql=jZ1KpD|qtIxR)5kYEA8efRe54><5iU@lSw z4)i1>B($$#gaH#qL2j9V8Ux#64A7Q*neeq$Ys>3in4P39=!~e(&~h#%KsE%I85@8B z0xGJ-v+MFBwTTrcvI01HiU8KH(zsWR%b_*z`9uxKbxlrU7IFQq?C9tKO|U$lj!7ZP zj?XJ%>T3WjlN}e>wQw}26h%~bhFJ|Lc1@;Zv9-0Waa8^U8fGyuFn)NP5!2Doz@Y&u%+~9c=-6^|LbF=MBxD^_a+3LqJRSt7Su9i!eIa+z8O^FfqV+M zv@?pAUn)TA3S{q86}uK==9?|H?@&vmF9@^4b2smmWJx@*|!ve)Q_kUZ#PvBSr zK2Av=4H2lB7PiRb+EH-FSHUZlFK~Z8m&ire%6y2rxR}*f1}}NemYlTFlAKBayEg%@ z1Sq1+XY&D@`g|o&`L3-0=|eLs>$b-0*RRjdVSHO!1cv{$DgPVT$t=Gh=*1ki5jGjA z1U**b3ZslP;?D;V^o)73Z)mLdL}s^;qJ3!@Tf!0DBH9PR3S6Zf6tdooO8)DfoX9Jf ztsEE_2tpwg_ZB9#cXZ5xV+a}Ic}6yMWTU+#pFzKb%>R0Wji>fCKt($qw>{}NTw8B% zFis7rS1<49N50|GjL(lZ!Q!oCy-292&-Bf&FCb|)H#3`nc^-}M0^Y^5Yjy{^bqFI= zc@q@G2@rNa^1oYubAOcHkE52$`o$n=X=w=xp8DWGeLD8tzb5jW;g5sQW^dACWNZ7{ z=M2<{qU%Bd8>XkHmxK&L&5l)@D|mSL8UPvtsQ&~X8)~p)AW>M2`JCO6cp0Ke0GVyIsP39JB}R76nNx`BZ7ZMUze;EwRv>(8N=O%NYIB5kWBxNOa8AZUX=F#L!*4o z@Sij0Pa~aP9$%W?{MS35Gwd5R4fEf7B~xAy7sCntYoL$jMBr6J{_?NWz6SE~o?=^P zSTa-M2Gq6KoiOD}RE9dqQ?FRiw@LVkljd>ea+Sf4@<_#2#D_*S#mKx)6o1_td*$LU z_3n&zXv3%;2dXdN17k^EL9KCUBc9SHmKr1PpOj6tb^mqs=h(!hR0cL)^-|lqBZdwj zV8@8RfRZw@G)Vi9*nh=Fo#;JU+zpFt8a_w^ue`2pz)Trr5E1bK``p5H*@cxoUoyGyiC^OP$g)lfb7-8az#5aV?iz$;0{e_YRmbyw_AKjNDy%V)vEC8BPqJUo3zx+U>>1@We z#Dg&?+cu(rA=5Y%`oDW3Xy8Iu|EXEGT>GQNFBAz6h0@EM+c7VB;5ou)Sc5n87Q3&46HzPA6Hs z-@YM*_LxlphA~|Cn4n&!N#fq}Hp@~K-HpYCG0`fZxNorV<%|D&*I?bX$)dziqjBK> z8`+B5Smg@kf45yYt@Vq#p#Fck8N>gtcXrs?9DG7xDu4PLB{{nY?q2~VB_=OgCSu_C Fe*orj|7-vN literal 0 HcmV?d00001