From dcc1376dced765589502fd226af45ef3f9b4c35a Mon Sep 17 00:00:00 2001 From: Rob Watson Date: Tue, 22 Apr 2025 07:01:59 +0200 Subject: [PATCH] doc: update README --- README.md | 56 +++++++++++++++++++++++++++++++++++++----------- assets/obs2.png | Bin 0 -> 39206 bytes 2 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 assets/obs2.png diff --git a/README.md b/README.md index 762a99b..19d85a5 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@ Octoplex is a live video restreamer for the terminal. * Restream RTMP/RTMPS to unlimited destinations -* Broadcast using OBS and other standard tools -* Add and remove destinations while streaming -* Automatic reconnections -* Terminal user interface with real-time container metrics and health status -* Built on FFmpeg, Docker and other proven free software +* Broadcast using OBS or any standard tool +* Add and remove destinations on-the-fly +* Automatic reconnections on drop +* Terminal UI with live metrics and health status +* Powered by FFmpeg, Docker & other open source tools ## How it works @@ -70,11 +70,43 @@ Launch the `octoplex` binary. $ octoplex ``` -### Connecting with OBS +### Restreaming with OBS -To connect with OBS, configure it to stream to `rtmp://localhost:1935/live`. +#### RTMP -![OBS streaming settings](/assets/obs1.png) +Use the following OBS stream configuration: + +![OBS streaming settings for RTMP](/assets/obs1.png) + +#### RTMPS + +Or to connect with RTMPS: + +![OBS streaming settings for RTMPS](/assets/obs2.png) + +:warning: Warning: OBS may not accept self‑signed certificates. + +If you see the error + +> "The RTMP server sent an invalid SSL certificate." + +then either install a CA‑signed cert for your RTMPS host, or import your +self‑signed cert into your OS’s trusted store. See the +[configuration](#Configuration) section below. + +### Restreaming with FFmpeg + +#### RTMP + +``` +$ ffmpeg -i input.mp4 -c copy -f flv rtmp://localhost:1935/live +``` + +#### RTMPS + +``` +$ ffmpeg -i input.mp4 -c copy -f flv rtmps://localhost:1936/live +``` ### Subcommands @@ -86,7 +118,7 @@ None|Launch the terminal user interface `version`|Print the version `help`|Print help screen -### Configuration file +### Configuration Octoplex stores configuration state in a simple YAML file. (See [above](#subcommands) for its location.) @@ -100,9 +132,9 @@ sources: mediaServer: streamKey: live # defaults to "live" host: rtmp.example.com # defaults to "localhost" - tls: # optional. If RTMPS is enabled, defaults to a - cert: /etc/mycert.pem # self-signed keypair corresponding to the host - key: /etc/mykey.pem # key. + tls: # optional TLS settings; RTMPS support is automatic. + cert: /etc/mycert.pem # If you omit cert/key, a self-signed keypair will be + key: /etc/mykey.pem # generated using the `host` value above. rtmp: enabled: true # defaults to false ip: 127.0.0.1 # defaults to 127.0.0.1 diff --git a/assets/obs2.png b/assets/obs2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6448b58ba7e015c9ed8b978a4f63c31f657931 GIT binary patch literal 39206 zcmeFZcT`l(vNt@SU;sfxL9&2?NEmVsDoB!`pajVh9|5>Z}C4rmJDz`}-H1NS)a;RNNI;GO|KCceM>ss?4u zb@}{H8k8`U|GG=b$UnQo$;QFX#>EfXvvcwYvU3Y^a^7L*6J+NXNjJ zwsm{~mA5A1;?HEn#qU_zAPh~+;Sh*ZoO`H{bp5lN@6JS%>26)}f6os~pVB3boKnkt z_V(%*732Q8nN+CpuaM+Y{;N4SmuUQ7ULrNpqSC~9w1G9n#?MqP{b8QLhlE3$e}-C-7R$4+^#xZn<@#ya zQKVN3B=KRKZn+*2;(8MwYy7sT_1nmMJ_m75zdqxBpebXkIQdyNlb2{D8DMUh!2g&f zqFilFUxoL@6xmezSJQ~~uCgqvv8gPT<*ZRgPrcI5*(|p4rZ<^b^smreY)((|dce|P zJSfc(`ei%W*Rx^Me3gl(`%aFC{SkCkZ^AfX|CmkZi;Ls~Kn9&mUZ~lr z$;$~EAS~GQUs@I#nKdc6lpt zxUq?}iw#`aMd5{ki0s>HWPADfQE2zP0>uhPK=frAhOOGM(n}!73*1*QZ%FYB~c?UyNPak1# zCqhRD-rxCad=^&n@_&=JwEe>czz?XCo)wgXjU8%X0sZF|wsub(0Fgff`nN4?UpQOA zp-OODguRUc{D}kH(vJS0Nx%&LZf|98V}3pzm;n@S4z~bRZ9%Ub|I#I9$Nk*`!vZ4{ z3#;>1fZ6|2)6T^3AI$ofv0>hvPv@Tp0-FC#_g`xNHTUz%pq9M6pajCe9y2@{2@yI> z|AH`tfeB3TyvU)?BLFktg0r%-8|txgb8#E63UC_mu<~*9@pALCbMf==^86Di8B1F` zJxc>Ph7=&qW&-HI1mK1+4i0`+xSk;|D>s~*pH)v^pNAD@$j&Xm2cGf6c>jrnqKyfV zNT|HdV4NI)lmU#DpU04kl~0ddfQy$)AI_t%cTNgsASj8j zvCsp{X=0&g1czE#8lAtuFkJA_GZ_&&PB!*`Jb7lWXJ-f+h|tNISlT=NaSet$JLIp0cm?woH5K|O=tQ?S)@fWywm z326O(WniplX#@w_Zke!E>+kj7>m7f!)&&tkc05{-< z@p5o+|6kN?5r%e-dN%M!Mu3liS3o?^PpCWh&lig6U&rET49BbjU>GYqH!COS|IIMy zp9w=TI^(Yy3q$`4PlV4a{F9Oa?S4N4$_wa1=-`a=l|jLXD$98_5eu#r<4B` zfB(a-|FG+S#ex4-<^M?6f7tcE;=uo^@_(f3|2KAB{f9dRw**#@BXE{%_fGbKqlK&g zR7wJJhWYzkl@<=3T(Oc?w}n9Ph%p~5$fvm5;Nc}Z8Tlud7B7H7QhHCKsYM2ltVOmGkEya>#;-4eH(zF^52U|z zMda^isY_g!fQ7r;+ODq$_hm<1mo;@8&y5;f9@`e4ckXoWtUDdE?X<;*KqGRE?XBz{ zO8mao5(SX$`QFFZ-u<|zlgDuPuJNB25@;MFBcqj@c~5>nKv%tedvS#upYHcX==-?% z{qO6qLi6CaK%6KImy_A?(Yk%hlC0lf1A86_baZl;$@yG+3>T2w-Dluc?)& z7aHy?ApHrnDwvG@-@i{zI;-tcFSZjkQdqvqPDB*izT=lhDuQ?O2eK0#G<)Ua&7TQk zO*zf)rAP~Ej!kbrC57rw{_v5D;}5kQEgvoNC^YOa9!X}pAV&37vtWDwp#Uo{FAYi`t^yZ-UO`=dnzwmJ4Q5Uy{ zve#U0o9dpD!AE}Lm-cT^5Ql%+^%v2h6K^|TuU}E4qwyLz_%Y zCH-Y(?T{U}oa;y`%Job_S3bh7uJxCT^$8+mTrS+Ix!O1rZO|H6qu(tFiDda5=k2+a zS4F0pRW7%}TN-@uNEb%RxMFz`14KXu6ay$ltNU_Jal;t{X&L5l^Yb}0E3ZpGete=s zD~y-@sz$0}U-YwNM>(uT|L&a$ZivOOL$ceUY=p}fmffWqAEf!*tZK$s@d}{nhHl)K zkbGjZI{Z@fY|8acQ1(h)}gX$Ku%G7XCri8>>tPs{%3M!%9iFijLrF?z(|J|e|pc+3gK)_qnCR30c^kas$98K!uo}-Uk@CqA(X2t?CPwP{$-()qMY2D z>YnQ%q5@5V$vcqHBD zJc?+3Z*_y1*r`bN+CZ*`vxf6>3Ce(*{BUoX7S^#O+0-fW-p>!VpOejU;7(FzJ3Cp6 z9$gu$il2cI@9hzkuvUZ*WRDxH#hF~Zq>~DG`Q2>Xr_S5Opy-uJPX;SNP>|bczivQh z=Xc{nw$9FP;ooOk!h;8wdGvoAglYx{(IKkm-@CnbZ3bJI`qJLs-uK0!P)+9(i1A<< zmolTA)BQ&kUKK{4_B(73IiLreB$>A^ctFhmn<==qF$b3-CB9UupxqG+4 zfH!u%bVXrr1zFb;-t;~wNPqPcytE9?=<498sa2>{Y>q?18ZB>ZeEAV+SE1o9C(1=Z zy+D`!_WQsOw1R?u22zB!vo;|P$?x9_TjS$i=ookQrRyRsWMzI9JtusO_U5)KHQ)Z^akkgupb?CooTbC0Rg5D=DIllc2sPyc+L@q!8RGmyfF znJc!#?R0mL+q6$w>I0x38bl@1-mQ4NX&On+?NoTBXt}a(D4%{~XXi&}XHcDZ_2IFY z@+DU~x*uouiG!A9l|r<%Sg%5+wL+5--|OSd$fn^|+aF5%{x&8vtW?l2Qj4%PqM z&AftFks5!lS&k4@jsDP=l@`v6HnZ>j0}U2W4hf6I{QG5-7uUIFCR6V!z1EngEP1t_ z+kx+6p2nj7i&Y~}_fa{VQ6a8$xg6}(;KG9gejtD?A3K&8QR~V}eczfU#gFq}Wd|JW zaj|@?VSFl6R^Pz1-)0xpHj$;mJfMM&s@XL!?Kg$DOgWp6uPMe0?jFwcPM&OS^9RwK zi3>fKkVv@CObRueooWouIt^)%xLR5|Jf>KA`@N^c{p^!1Z1(lmdjSsf3+kV{$CvMp zjvIXAx>;}myGyy+?T~vPZuB-Wkp}C{yggW^X5tPQr}f&1x~8V)m220qYWsPZN!j8m zZ0{7S99!|J6kno&zlH$qt z@Yy4Cb9`TdwUk|PYfv?e{jx;LJl~O=-z_OEh1OwK?q=jvHE()$nlz?G|bS$hg2!JA_2`WU4|R zsOHGU3))+1q=92E`J^ZZa5%g{m;G6ip_ZGQjXq-iq1q77N2o?E5CTZF$TBH8pUIP` z92$LYL1H4Jp9S|k$LWh5I&8*VYnbcb1?nGe`Irxv&IPrtHB}1qI+s{5;(7|krKd}) zy->Rb)W?+~D_4VT?Wnk~9 z=&l?>ER(tPOv=aUPp*=5c3X@{CWY#Fd}@BTyUg#rbr;?mL3{uHdjZ?IkmzV9joP)I zLQ<-7hl*@Dpvll8ii(Kp6VsdS$96wpoF*7kW=$Nf2z3!vy-ezQEc6jDiG9xvQjr8A z+^hIqYzfiP(!M#P2PeIX_g`k*q?Zb+T%}&!nr-XN)e&R4eST(A(~8wpHZ(OdVa{gZ z*IJ=Oai!MYM*{BOCe|KVCUHUPK3rJ|4$|*0%G`IyJx;|>Y^i?Pa--3tx10y)`#h0L zD5j?**w|fMKyv%3}qmc(G@&AI6W z%Xw8a{#myF6|8Gb;qhZ(#-OvhsVBDPUA-j0RPr(ZZ7_wV`NhBc%W9+5_-&L){MW)S zxT`|3mfzMN>#W&3Z%9L_u;|_6-z{b)pMj0?#{~Ot3xD_eKNX(;Md*-F;3PAWD&ES@ z?uRbB@!i=Edik&NqLtZWZt&bbHy5{@-kKXlWnCTIk|^LB(wjH-txBT5V$DH*Jyhsa zB)_m;Ki~KcW`LaZFrkH&B4Hf-*GWmlEiDY!-Zkrt6uO3Xj1mh8jmqBz6AW=?(oO7F$%8+u;(M!;=i>Ps0S1BmcZID)*WLbB{zbBN%-gHTvlmsvnUtb= z@%5LAl|gZs0%#f6*~lpMd~@0~1%eMU7DrOu*S?#VVo&Xr&d z=3Ff_wwijvDMfAME=2+pTsV|-SI%MeRX-Wmkp`|?U+gursOLqpa1HhT2a(7;2eJ#I zOC7;tZc^Ew`V-3Q_QvzP=$>3%Oec1}dN{LztJ^lPs>VX1udhFpSC<$OaT8K0EE2QR ztL9)i-e7oE#BFx;(PC6f=!8kV;9{mK+gw+;)KH!!PLbK5TrawH)<1n;QVZg+J|dT| z|3v9{x1~;z*kfh_9Zz{|Am;AkSYzZ#DE=+1i_2q$@5EW~^&XY$_NyuqH%=J86qCE`<{MM$BzCQ$!oddErq>qcF;?0O@FZu_UkY?`Ifscs`f&sRo@eA%>IL%Grj z+oISec4D|Fg&eTG>uObX2vSrN(HC(O=BxIHyLYlB%|{jpAAa$|X^!P1q(HlPW`3A% zvfAh-a`7CZ@veIvt5NK_x6i(_I_gul{gK_Q^D(NRwzfuW`yJ1=bA<)pj~_pk_^t_h5drAX_#xUtnh5m)resX{S6&B4JT44+{yo zPNhy4#>7H`mpx|L7E_4Tp14o3J=Z>w5~bADI@cNLUjTo)-J6_ zb)@VWukf%|05p3VmGk*kk!s6FRvz}6-GNvZtzxg4nHg^Pqr=%$Sj&w7N*>(s76~P# z8+v+^WJ~Mg8#`8M(xF~iuc{{B3_vwfZ_aA7$j3TpnGA2aN7`g+;pu>@^$-#4h?zKq%NW> zILVjGV+zV`IS?cx)|IR?o+Bs?c5ng*pT7QW;T zpqC8t)!qjL==U$#7Z*|{Bv1!Xad`zUe=Ibdr6cDv)z$FqJ(_)ytrQd4Hdkn{EJ)Is zD6={5k3NNOQ7?bIuN}~cXJ~y;>rh~5pW;&VfJK|1;_Mpp2H3qHSwAf-kT^?%eE=5J zy7EN!nqk*r{9=v5Tw?*eITA$*yq~?nzVTeoc-qTxcoBBQv7K;}b7at)DQWlX$wOYs2 z0{Z-}duwT`iC6~*GrH(XvbbyfO&^HU*l**1H#_Fd9y3uiH>ac$`VQYVpR(>}? zwYB*0h>-HfAs%VI8VgVbX&U>4SIS6aCm-Xef7c~pR?WW0#-=S*+RR0F@1D;sX4UOs zv!e8!t*0zH)qWuAlF^^;->6?UEvS;o({YT0N7_4ix__CURN7pV64>~a7V+KP?3K1o z(-RY~k>yT)7DSJBmL%E6 z<03r1+*S6B(K}WuZ}G(AF?&&z&1G?9u5U068OpQ9^SMd_Y3?rPGVGkxoNz{wB0oQk z0$jTKu(s?WI5?YUmow=#W|;OzY!8`q)}9o=TCg8}nCepg@>l@PZxg|+>LuW^!++t( z)7Z7zzS_-sbGIYL(lwS3k@Bn#yAm~LG1sMI*ChDpQ53)X5k5FEn(FGPU0q$bW;R_v zqt}{>y4k&Q-#x2P>9<>s?qC{1ot^3gl$02K+N#|qCF6DDrV`x!BDbjY-Mr@@NQ@U8 z$5XS5p>r&5L6q9b(H)vK_oNN_Ie^PXw@)xE)xH-e2_eO58ZO!CHq*+F$6>kuH=Eq~Mt-Ayba#S|&B@I3YtIp!g2B zRQ+^{0(>Rr_%vt%U&7V7nN9DLjrz-yK}Vrl75muTNk%$uwsWxgJ$cLls>~4F)YiM5 zLu-%RisVi|69fuXx0S26BSVMgp}I(s6ME<_`0w#)KH#0b$k8b8c?7=TUv--r!Oqud~gt#eIjdh*{Cxi z$s(5IHa;#T73INa1C4>K?IwNqJlJT35n}>W}-XU8tK;-mU^o=vlDb&eKXGq3K?cj?S@;3C-F z=i-D0%1Fp1A3vtc9W)D@Y~!Y}8}+-@+Ebyb`l-a+%$0X-jf%pa+h6!X5Vc6>GJ;$7 zjApl4`e>(WJDU|+qck1VRzr@a(z$lFmb06yeeKKkC6Tqv8ehHbkMVaI?)J>Z8``ZO ziK_TVE-WkuoGq&6_`KsVT)BC)zx)%$8hf3TrYj4H=Uj7&dbl)QbF{bU zZ~sXqTsimlr$dyR=wT@z>!+%glJVf#?nwju(-R?3^G6s?uMFqCe8+KG28B=PS`=ET z(S}mQAxup1Qu6UDj4_%|h=kZ%IFpiL=Q_xzCns}~*CGTN&-#}x2s~{X6^;S{0>TQ zU-J^)-Xgu9`sg|sGoylKz*q>2FuTnNr{+DjtC>pU&y3`{Q{zhYgur{yjd4n*~oKW@tHLJIF6$7{fgt z9Ci!ysP1kP1at@&s;D6XvRP-J1WHJW;Fx}tp!c4NxmL%?PC30_Q(4RbDb7YCE*^MG5H z|BCw##z)zgNqYc9i}&gf=G(vbYA|o;zJ{=#-~Xq=zim$_p8xg9P?7tEw4imPregcy zr@!fJNmw;UC{R)^Agj0#JeJZylw*qn$9nA-i!D(t-*p(KCMOjnV0YJx)-$Rwt{}Ls zBKdY##$r0-hsTRL2@M$XfU-?JJ0f0NLt0>=jJZvrGN}*Dij?}}vff}gMHGsUoSSI= z(vFV=JzRe1ud>STZ~`meHB?B9W6-TZyI7F-WwtHv#+v5Jq<%A1m`j?#BfpGkNz@WO z(q-LD%cE`7DuU#L64mhN3JD7STCYzqM^(PFh#l+(#hsPWME7IDE$!o+i*b0#u7e6Q zU5QX}celP0(weTA)OhCK13x44JrFMZ~K$BPi?$e1(9i& zuA`TkFAQf34p)ZCgM7A)lui!67H?4sRAQVz2Xn2a>QS`a`tV``it+bsVwS~(!re>M zf3B-8t8@UC=eB1~mulOvz z6uwc{*y+v^7lbB}vK>T+3$f<;t*36jc{9H_a4P;d$49C3*&`72ZESsM_QBsDL;~4o zdf)8O@W0(AWz)}BTT`#mLY0{8D!2k`VqxeDtGC#qVr=m@y(8b}<5n}x9Jp@6H@&e6 z;B5|FtKq&z@M^j^>(;No1;Y8A+LQr8Lxn{k=AE7@bxnvnW825v>UI08qz~Q$r`hww z8vnICTElo~!rmjXW=O?oF01S=0|Pd@$yTnN@flm0?K~a-!ID;6HVIye&V3mW)`wia zcFiFCjKp*xy%ku8m&@&t15$q*GEYGXV%Q#6Usk(aEV!Q`_D^OI)o>c_=}4LF^RG@E z!;TA*Ha1IHgEBHiGg}?bgJA6Q0m>w)_hBGN1-7*ERJeQz>oN{^Wt(8|lV$=uJR{^* ze*l%(V)dZKXa<=N-mQs+Nv&e|JT^4>3i5gA^WwplmKLB(!s=0NBn7?9C546c#_d0b z`~7=&$_zVPAi!sM*vo*>M<9Y5_3Kb5Jn#5A73ju^5BKtDriZaw^lA~({O4pYa?#E9 z=sGpE9^Me&;n7^>@*eQ3!6iM{8WBQ8LZSfn?u)EvL8q6L5~)=xUo=+aY(M^Xqu9O| z03gm)mKNIIw#b1ugeHh#CVif2$Asp0p_H!TKJ82V7XAe!f=^%9$3a%j`|G4&N zP|eEZ1yL+okLDFtV+7o{+;c0OTDI)kfI!9rZy@=~5Z|Clf5A6aSc!WH&+#4&9S27! z8%<@`B9~E_3r~Z}ndNMgVqCJ~x@ABjI}UIp$Amqi!@@UrcJ8pT1yS%R9b1lNaZppQ zEm|(04%GCgw5jsD^1fcv65{Zfx>@U&n+sLVxtLbrKA7XPwBR9&M4^Cx_83Ik5!}Xm z(w@34?bYYUKmu+IXT?G373FB**};m0NOW3Wo)v@QVdN&Ur$UKBCW*Xyf!(YH2r}q2 zn%SF9&duSzKAW>>k3VJBI8jwDmNPl>*pc~khr3OZ zl+C{BLzfC$tm5Pk9Q6uIdSKrH&p*74kI|?rA;~^=-+~w^l1{K*lHysT-DlRlQtWy{ zQ{2At6vMq4nf9xTvp%6^i3R~2yN@^J5)ZOmid4z=8q=IyT}ShUfiF#)=-&7-TZnoL zdIh(><^gG0RF46}^_zBAk~r|h6v?F;{brqVM};uU3=yjtaoe&MYmH*|N17Y94N!rY z4~B9S$w+pz*OKGh`qK)l6Dneed4A-5cva1IfGhMhAqW#GoxLhI`*Cw2uDD z1y~hp&YPqM+9V06X|lDpE+`)j;evP>K)`v)ktJt$bUcMVeg6EEZ0y{m2u+LBGIVq* zd3|kSb+s`MD%zhA%BZBTe}l^-_QFHpLtL0xSZMBRnNA01fbATsZeuGCFzergkOKZg z5V%|D`$9E2NhBA?9VvDu?0v8CF${JyG&B?KG1G zV^Mjbb#3S93??iWKQt1Ue~Vj`0}3)T*6!%ufjUq++b zBmyL--ObOHSaUB^Zx>AUTSA%6ce4SLgWT39Yl9s!^CN|6omZaa|M0(gKP0h3qnN`% zbID+-wMy+BpLTA2?W05_b;sP|tc=}`J?=GhTxqEjM9{%l3IrHfvt2_V7K<=yo{gfBE`|I|Jgydl&RlngXs&nM?FQZ zI*^~iR5Bpk`Auc_7C>PmzF3^w0M4(Fz+|Il1Hu7$E0vr;)*0DG`kK5ybC^MfS$Pfz z#2q$UCOd$P-R5$jV`J-d6ScdpaXPr+GCI6JnhX4MpXuhBgwwT!1!KIbc){-m$gr}N z@j@Re4duiXk8Sl8GPHS_Etb`$euxFKV-SRaVaC71{RxHyvzB{VLs{p(>(N_NDX>KyGV+*;eN*+N#=wXze4X4#FnKNAPx{?Ll0 z@mxj%0)hxuWpYA7$Dl<17DS=vrHR@)`imDYDphN$V`p5lxp(kjOgjNs^Tq2!PYP25 z&G-3HNR%FkQyna?toMhQMKEn+Ctf>@Zj17c+1lpr#7U@GU$u4M9rn0*Unhqp_eG8! z>Mo3I(F|AxabljKQOs2hio}ut82SMZ7j z$rjr{sM8~D4WlHqb9QbR7LoxMdmTnl`8Z1_aWaum=n?85YN9WpjC&fV}kusIMD~ms%_3a zTYy8`jv-5qwu5@b>?R|wfD1h%Cbl=1xYDa>hk){4VriVuDJzkj_}nO zJW3>NAxkLOFTng9#m%D%;~hlj!e*Be(Huq5FD6BAQ(81aWH z>(drOq_dk=sg*#217dF8KT%;*rb++cP;fkdEi&X{DvNNJuZ2Im=}&d?{`N@A3Uw{Y z=z~T7ox?Rk2TJ^={>B8q6yXo=c|#jpf=q8!3OLcpN`=3d#&vQz)<+mY&Y{GaMFU_x z6;?5KN~->N?47t0694X&*W;Y zC&`SA=I27Yieud#{&um8)XG4uE3APrbp!d9m{P<&KCtFR%KQesTYu(VoD-?*tU?xK&(V zvs8$?Tv``B-nr4^+IT;@De|D<<~w=8md<)2!LLtd^5>SqUSeT%PQn!x=F(Ebd!lT6 zE!U7y;#1CS!FUxx65Scv)Tyjh(rh$FTXUS82>I(O_Rn36qC8g6KF4n5J$ z_UYDHvnz|m6gMdqYg5!Duift;o}JFz{zlO|9K?8E5}D-EWXQ?lu{*nzE`d&CO;d?VjOZ z$5t1Bm9Ent^|Q)BFTXYd+REkb^kmqrGFa?_fm61Pg6OhJ*r1?AZzv00Fi(;h?{937 z;Wqxn)XBnQhg3PYViU#tfu=Kt{R7v75(DeZi?_DD@S?-A?JTuJ*jTUXa;hIVPvW#2 zGW#k%DKt^MeJ$g-z!{-dzWORlW$YLxHqX|`u^sCtN1+|Mb#Gn7`>=hMRKSsmz`x%w zwSPUH#HX`unQL3B(_j`CCq`1#=)Q(;?D7r|f2!hqe>dC*R_LSU zTaUEm4imee+|`K?xh|Oy*Exh*_RoATJZ49TL3V|eAEDNIo=nOKguAb-Tx*TAO0&yf zDVFK_Y9J@4<@AOSbqjaGmkdjyDH<|lf7c7_PwNNlb2;G&SU{fGJrp2f9YRfJxihd| z-8Oc&U0x@p_146QY}mxD+UHP81}N-h#hjRa5;QCJg>;vySbiGl^p3B>%53y2ks`4i zrJ3wuKrKhyWbWZZdmt3@0ZQs!^(NwGW)STBkPJ=JOdSmuF;MTeXv1b}9NXln4HDmX zq_OpDZ2h!K+m|s@{}k#35Dz<>?EWLix}x`YZ-gm1O?y+RWtpg^KWp_Kv+(P#T&Mn# z6b9mo(OUGQ#pkL`Vg_lre;46at;rVQJ{HfS@Qr5r5F2@4b;R4iNU2L-N|W#TN}0K% z1wB9a8)B@%#opq}3PImiXLjuw(xQlRR}>oVMVAr9;y)}L+?tr2OHPvfO?Rz%QfADl zB#QvEot)j{^IuKM8e@xf3bu_UeIt&S|Ku5z>ss>=C3$#gw_=Uj@?6?KeU9sJ|L41J zFF6E}M3f(!KXWu~j8jOCs=6U}p1uqVV>KVL4;+=^RxUl)+3$sYXpaw&6qWsEs^zml z6OQs0I%X4;bnQ?%k2ciyG_4IujuUw%qtIfgBl{K~Ot>uTCZbe9D(1X>GuICV@$>l1 z@4(B}kW1OGryy~R!FLZ~(A6n_B4|%1Dk{Lu9vq6ZovM`g5G`kN_Waxw4-P&%vDsYH zq3Y4T9-1aQkd-4xDds2YE@pTfG+J6-{w)8o03BVzngA6B4HgSZnAr$52yWcNUl@${ zf24ZgUiYhl&2_j56Y5>BISl~u4K4u0pti8PW|I(!Y%^`kQgU)E;c4if0C#045BzT0 z^WG(Q@Fx-}t?7o1N5W>%6ZW#$Ugz7%4GYxwT0SEJ_S?q2ITRcm`HHLjzz!TCjBgg8LR5P+8r_VI7%5AnJ=~_!Nvyz z6>i)UT*D=1@*k$2V5PsBg$p`5MTI6Y{z^9yBIhxQWzZF~m}a4)v#Fuv23Y}ws?WON z*q!l4JI%RdB8J$&CHNH)Ovw=^;=13P*#!Z~IP9Kd_?@_M(+wY#L4@R;n_vjAMy$|3 zo(xy^hDjm@47NY^eIUWR*{nz{CdP|EdW>7BvwZa3BO`5(Z)Fs(nVUw7004&Yj8%w9 zsT2Y%zPq%vZ`P&cCuY8Ju|x|+0{HQ>_;HD~t?l$q48$Yhh(b%uSP|{!41DSdUmC{3 z^;$iRitx0~nbnW-Aa8BrN8=sIfVhVn{nr6-2SB2vS0H;qkRKDr<{J;3?MpO@-bN{& zY%NprS}0IOk@xFNHq$hH2&%S3%?YtqwETBCvr-rC{#s8ANHxH?ASXU;F`~BAkvcij zO?&Gh9jwfdLPIDF=~v`PS$K7}ZR4;TU0PmxortV)KZ(JL_s&MbY1)1nMPIIM6Gx3b zi*~L?_!TjEdQVX?O|3I@Xo_*D7XT^?-J7T(owygbj=kW0u1O>SNNq(Fk`6CvSKCB> zeyY0Bu~^@tY_u@)5cuvooJMY_ONh&4a3#!~B2Bzz9(fW_$Rn!J* zrzNh&Ds+=L)oNlw&*pG0c?a*_;!xQo$d@mA=3C>BJIG%OfKV0W4{ilf$ z){jh2%1EE~rfR9S&)sx$cYhyLja8daVk?M7bM|>5+e33 z+qh9vQ!8@%`bwYRApU{uR2h%p$z;y$&k3ripg1O={E2EK26zK{UrFE{{+d5PGJJz6 z4cdoVifQhy@pb}3vCGTXw#;ctJ?|6Gr!A+#Ps+hBL*=g1&~zPKQBGG+!`dcg(fifF z5y7N&RcAczcA&aig$u{>ARGL2IOT{^&qGujeEun|9^fM$;;@s>Y`(`kXP+ys=2niOaqOG)3_^qgC^eGB;a&&o*AD z+V{AI+AA15oW&pf_XqGyCXihhFvvEq}(r&Ye zvREG~3ZCDZ?|63Rcs$~0v#gdpzk{>|(Pm$ec!NE$IxDkncrAad07?pt{u$;268Ge7 zJ8ktTHzNKxOk>Vz>$>0Q%!M=M3o zzHrsfS?+?vfs%C4FE!~@S(*Gimkt-x{;Zz>B`-AXZ~+R`xk@|S4mw_prvJ{SUhd^! zG0wogfo;8M9Vcv0{@Uz|9)`zu91Aw@mYzsRj&f2nN$Avs&Q;av){c!OVDf=bNR!vF z!kC5hWha+%+pRvbqdl5dAp~E_(|Lz1&7y>HL)JUUxIL+{BSfEJhu|5vflV5m@9@Bh znCzCtGR+-s7RpOfQXmhLUWxz;5-cp2FHHoN^L*3EC2(+X0DBrF9OV^OY_AUj5TJMv zcx#s~`Qq==*syYoCmwrf)_8d5R-@n0Chj!$^n`|lJR_hM^y`UkR7sQB-h<3^OgBX( z64v%N`he*4m1}qjo<)YgvmdivRVmC*5ppyPFl6A5)6prNp>Y#xK*%U*)2gd;Ui^}- zX(-4Q@f;U3H!_kM9W?FU&TY%<)!6IWSe{*cPTS_9*Z0cKI)d+mGz;DRgbT&{^wm_Y880a; zGaVPVZk_P0e+CM22*ilA6R7zG1oSvlw5cuI!+hSpZEy`L1eVO>J#XnCuNimpmqgB~ zWgweqUR;a;ksu7Rl5#Fy+MX^=9IAlwbYoDyH>YB->2f&O&zGyoe|%OHRph&!mYket zx+{n|9ud_P@u@2wD3^$@UvrhyCv4A-h_pLmd1snKr|&Y{>nWDU>%`HXcx9~iNpLWC z{LaEJcw8JM)&hvxEe{}mf`bYKAj)n~>St;!dd?y=95R{fXyXK2gNiL)v0MBUrd(M) z{A_^g<0?>Lu2U7iEbJM&KU}Oo9N-Mb3eqJuH>?;%Y3q0k9YFXCQ7bNIVk=nxCC1C@26Oc^hmm^YOAMFPtp{_S=9GQD(m%LV?C~FspSPFN%nmxUHDV z6~JB>K(-Z`kr92zCteuH&e*3k0tWSY`r#dngjk1{^s)wnbf1aOUmRI7)zc=aqCEFc zZ&x3Cw2PZ8Kacq@Sn?%26i7xem^xUu>RS8R_?g*lZ}u`oHqtEtgmEXPro5`+sTdXF z4S&t_eW=pTPzy?GQcy}$;Zey(MyFQc?kc{;voJ8sgB z2x_c)>@Y5>mA++qFN*|E$Z<7o{B;+|ivd<>ccv7h&EZi<1dNWCE$9~WVBt|N$BAD1 zUC|{};61!F16j^|msJLp+|h;&=%rEHI7~(r&fl)nR1oBO54wJF{e~KzM z-b`a5XK^;2-Do*gGjH;8RwmonjEbwdo*a(}Lj=E2Gv07F!bE18N4hwEM!OK86vROY zCz#l~?(=WV_v7EO8S$^K7+f~Lr}CxLH7|@a)?>%;-zVgrXOt>{0K_@2>ujh-J?WSz z7jw{FSNA4iRA^ge`rS=bM&@_l1R-xR~7C1Q!qs zPfl)N6oT#l#ygGDEdj=2x7J6U+20zSFSdC3I#J8Te2zhD2Zu&e9FbH^fu6`~T~9R5YmjI=9oySftPS$s3P3sy z1efsW{d^+yr)vGXJiATG)(AG7+SJ`Pa8j@VT-5ORW0Bl3oDQVjB8Qzq{`5JsIJ?1b z`69~Fo%01$l}%@Brln(eH`bCFRp=<@fGY%kxYb!FF10q?+1*u>YPYE5cG{879pwO` z(Ek?q+)F@x)Q-hSA7I4JQCBByFhe~s9yMTl5?p11UKuG)c*Tk&O!YaOdR4->!g~ckJgjV&A!MG64v9 z2!%>HoL*e41CT%?!23uOuj#jZMS{?b`zbC^QKe;N03VSeK!E7xy4uH{7~3SeB=g+x z@Nj_Y-SsUQtT9#o&H9@KG(%x2%#dh)kDJ@`9gy1kdXdp15KKQ2H4yd^2g#p zg$vKyr%|~Zuj0u|B3~ZqJYiA6V^lniArI*=T%kf&3yv{L4I|sKReoJt;`$E)L*+Hm%&f8MA4^Rl~BvK5r&U->%=CSUNR|b|9dcytB zOo6d3KOQW4IA{Tq6EVu8n6_t3+j|3g8~hTY7<(uMCXA>kH9Q`qS|7{j7?o-Hnv|=Y zhV(ClCzeH1BBY6`JAdNmoN8)Zr$_`_LteNRxS7t>;+9$=PkElO67<5 z=(Z?#_1|Nb95f$-?-bC3bHv#^B{^AFR^jg6&t3fft{7&*YL7!}J1e&bP4u+1LD9?4 zFKS(On#c;#*1jEcEb#NTGU6V(i+XbRFlu~bc0O^0*8~Z+*ujc_u8f=Gc~ zk&#}#u;{|INu)W3w|dz`9(Ex$r}9B;6s3PLzsSD(_nCS2(zMUvjX&mn1bnm zNqS8v-Ig4CxuNoJ5@aCi7w6Hux7*fL#2l3nv-$qR2ZjsjEV_{ZN>4LR}|uj`k;<%8LI9+xVy_+Q~oK3a}_iI3mp86!P;Tiqv5P{ z!6_JY#B1Eh#`uhPZ)Kz*SDA5`&3A1eg&rg!ovB&w_c2X773ztgTpjmUveb@*0x9}E zjotZ$D9E@s#4D?WW4PhuI&M5(tQwA1yQY@`LOE1me+lzMMmcqIb+!dFt`+mXM;K5y z>5Ke3tD{}o|!fEWt`iGpnLC}ohApZ6-;e5}CxTMhc%+1x7dKt&gJ zs5?GY0(@zHdEy2}cpHBAJT|5cF(1#T@Naw!LQd$|lF%@Hy^YVoPUu5@Hy-oLPf5El zX_^r8S2b}r8vXN~>R1S9h7>@|%gM!s-J$(5Z;nRir$~R}k@Pp&!At!ac}|n&AP=S% zq{F-_Hr8iGfymPCa@Eh_m;T5?TjH7%;RL07PuUHI?-nD}+sga>ol|U5Dm-ujVjRv8 zpw}^ctv$Y^yI8o&;*%Hx7aV8tse$A3a?^o>%gO3m#SLQ*~1i)Dj5GRRM$3eN9E))FdDrCxYvrqp2=(_GVkelMArw~mhEj5w&TFROG|9tu9_zc zT#^ZUT)fi#fw(5~dA*B`m6Kf|vh8F0%R21CyE3<0qe8Q@S%ugjkmd+iDxsUqucZAw zPJ%+NL4toBZj;*2nWv{JQ0G=UZ>zCTh&WU}K06SnmkLzQ96&5K_ZWoT1-8+1dSB!2 zkmnC{zJ0VD_3N4WkhnOs8J;noo-*d1o91@BtI`tIcu!`&(@&8GRIK+U zcmaOi*>1sOHmoL^jmnf<{aH|4JmBTb#WU&uE#rAbeyZDH(a#{Vk9ubo=H@&7QN%@# zXIQ7~>x}+zvR#uFCC{p!;>a>>;88`2d5T&PAPw`;%qg9AzfZ6 zdqx&0>Fn&1zQcTvXa5*y?oPP?EOTk#TMYRORI@KKb22O$gaMcyJdo8+NSG@oVbjid z`&I(L|0aVuRl|jjH4114*|6^x#|pE1o%hVlmhFyvKr-0_ubjBZzj6VT4&VaS2Vb8Y zRvmq3GxnB^WTA!T_K6;RH_xcGualLN`))kFXTMm2uwjsSv&?He=GEx3*|_3TV&IA# z9$spXdA7ZUvPa||r`xX$tIk6;^_y@Y5K5uvLhlQxKB4Uij_RtR842Mo(NiPa)!J}nsoGk4qcw&FSJzE~w5Pu*!$3t6B zwPYQKRW4{Omu&{%W{w5Qk;$ktiaXB}dW-3#AS^7r$f}1EC!0{u=n`Z?!1j1(Qgb1( zb#*o65smxjkumLZhtu)_9E;-gV{U3O%o6t~DFwVD{r+foX+SB(Z`OWhf#cNuqaAr_ z1&QXh;AfhemE?SwsTx1e)%USk8Z3z#GahWAOm$oziO|y^T>8=Y6ddU<&Vt{W{8SC! z`9HnAcU)9ww>FG1YE+OUiYO?EQk1IH&{YH+s`L&PkPb@kU{Hu6#i2=85rG-%z<|^N zk>1PDVNj&^G9Y!nwTaJ@lboFQ&3nGzIsAhTd(Xb_d*6GlYhCMFYi}*2I_-X__FO}u zqrPs;#GTg2x9%~nuBn;+x)g3X4ceuf3f@YPp)lv^F)6<8;!+^y_2s23rOeS?FJtR{ z#?k(_ax~K~Wn6|OhL@L@+p-A0OaczCj_oY`CKnQOPKVySdDjlt@+7fmA+;qZc|X-+ z{HAHskG8`&nVo}QxeN;E1(#OZPc|mij2=>oIU~fvidW91qY6qT=G0*xBVo>;@xPk;g7R-a%@4 zJ(p6!(i|(GYN8x>(bKa8nI}m8uyu78z1va)w{@~q3Y$$r6K>tTi-std7pksvn=Ax5 zrKBp)-v&@j%+fP@`V<8Ncv`zzWZRps9LZT`RbEhb$G^Wn-!cwv;Mn{;=5zH?>-M|8 zD0NfKe3xyUPPSI|$78fq6#}NcBR)s^M(mfem8Q^B-QE#u6A#l{_(bklN&uw-_s>B~vR78n*Mfqlv zoXJEo2-C?M^d_AAocfZ*uH7$R_-mDPTQ@}Wg+fU$wjXcY2_F%YJlx!nLvHnM`dd<$T`B7Uy}Ltbmz9k}B4-Fl2nOVn428~6=a)`T;3*lEvF&PUQE@bHz6F9dO;BG7HqP{5Gh1td zJ1Q!Z^Y2aYu1QH~=Ux%v@tKc{NPBe0S2seLM^hnhZuT^{#0z7$%4^vXoOgVVxwyGK z4%zki{3xr^#j&;e>UUI&&x3xTRV*yM9@)RSGMGML#l1|&{bs*sfz$)-x{G{DEs-Xj zXVfQh^0u8G0zx=ET8jZ;)#>hsPEML3XGFV5g{o1sF6n5t6DKC^cZ>9i3gabI`zyks zJA^SvFV#o-$wv%Jkbip2iiko#+^d^72~%38FIe_q#0vQNN-#!H~#BTxGI$IxaE-`QDBlFp5j}3 zo0e8YD^ndM#S_PM=@LqMcQubSJyLaLtH9pc8X&+-gDHQyZu|Mr`~|6O*IO2oNwb%b z@ABigVCuVBf3xTpaZ+AOA*nf%wQQJENRwI0OB1b$(R{j9K+3shbXLqs*QarRSGf^m zkQqfhM<$VJemp6Np6d-w<-YNxmGS1}11tBf8prX=>su%@g=m~EaGeZvyxTa|dLmI) zgCn#jO8L=|zV~t$0%_6y`+KJLrh>a{TJruEQejJC*%lj$kDmJ+>d4Lo=e6EuBDs9V z#e$?Q%}4Gjeno>ZDhU9+bJSG1a-7&Tao2h61dryfbVXVrJ45NJViT2JL-W=EjB!odLFS0)2D zj;5XNriyn&PoLv!^xN+?R#52k=PxW283(S}YE6!PC$>ot58V{=oTud>8@#adt}=Sm z+uW=LB18og>PoZ`P3TQmNj_CtSy@@Vt}=%)jE$}Bmk5E>H*b>r;;1C>>gwvIwzkbz zsbHt_4@chHy~N8a=i+iqLCH%hQ3Z6(+3$OMYrB1-lq!!gF6Ev-KYupLbA6f}rJw5% z%$jb~*MWX}uU5tMeTcumKZ6J+ds>JAvx+4)QGgF_?$PF8<7n(3Z*e_5Z)Z2&^Ak)7 zT=&bTE)5&%#RC8UBCyyXn|Z6o&MG62S_8@uBjBkLty&wIwWz2P`#&*Dh#081G8jH}u|e!*3C)2IK7gPBLt!f)tJg1%5tGtgLg`aN)y~pyCrJ z-?A8*2i(51krA2duBoU z!*f7~t@;(hr>KjaXR@hh48N{CKXcacVrn=xBhxmqFBd8Sb=K$|>xe@d^sPzmUMx~r zQtwAp=a*0OQR8}j2z(^i^}UIakQ{VgF4X8Rzo!#mi}%e7ey2>~Rd%nK#vd^*xt`>^ zlp@6_jbaWx`#NjES-mOq6oM<5ecGx@t2U0E!l>4S-0I;y>%7v<)0`+^Qs&{L?CQC* zN!$KXO$P6+820)2&-wRid6i@N6G(diy2AM}MMc#1eL&bv%+ZV4iWI9zJk1hP9rPZRL<=A5L7V zOKxs}tsVe0)`^3OQ0j z=Q--BWy3Reww-mBfmB%yRL7R&mSt^=QH*{n6cfjadj{wi*sR@RDFG*e1PnhP?>wdg zo!nl-6M z{G#Bhs+1*i92Lu!vG$>Z=^%&zpkm33)hR517654)sVz6r*M+mxK7HU*L@)nm({9n) z*N5s%RqlF6#?qab%+{82{jL20_9K%#N&8UJwzjlpLaAGU5AyG08BDLnb8xVS1f?RfbMqGD(-fr0d zcQv&&p13s1K_2_kiZ@^Ip*bU=UQi&+K$$v4!!(J7YSUlKCQs)L)o3?FlHN3N4g^tC z!?hRVuha}Tcm;$_P0{wDPvmgkG9t~SJqe0xsP5B?GV?fJ z1Z(xjkJG776uSr}%qVnpYM=r^U43Ynaut1oiRpDSi-A_53WSm_Mr;ZvG=Q`;6=aAE z3rhnT#znWeBi>>@=;v}5JV^pyaw=a{6}X%<>zn<>8rj8e!yn%{x-LDJyujk=SSRc) z;qu;?SNCdmnYI>Twm%v0qUCf^Q4uFUzdEE>#&OtBKm938ojGv8HVnoCoHlp&Up&PY zvd&bhzI7@}N}3NA<%roP@q zX`(sY0GMZ7ZmybxgM-z@^#?i*4!A5MLW}YD$ajWC$cjh>g_N^fTXRM7=?HhuXl7{| z!&?0GkW|dI|2yIvy?b5$4E%q|owwKQfr>7rK~k`!i7 z7{=u(N^1S0YG?26_I?J+E5sfyyOL*@5~&aRgWn^P3PZseIAEY_KiD~L#rrs&Oubaz zh4RcN(k<>I&N`Hxi&>rJYH>aQyFMgg~E_}Q}lx0>rK!EIsJcJP)voT9(tqLDO(-l30#<1S_J`HIuK(&X+nWOX zVBVoUd(-rX-3;$X>}H!Bl%971gJIQP`gCy6Pynw2Nb)=FY~u55^BC3kgG_=BVeGPP(DP}h%r!iL4Gx6u}pHEA`pulpE2m=_lTX639nJ`v- z!i7y^CW2?>nOND7isJ<3BNfbJJGirY9~BOK>akjSfwMVmQxKhSsWRCgqy-zrtH&QM zNeNugEK+~si=Q9%KGd~QX6&U-<;Q&-?1#td8WE_3JX231M!VyYe_-UxmtSub9;Tw2 z=Yw5Av90jwb!M)cScYIeG3?bGS)vbneL<7^;}zX z!D!`e`j$)nZZ%su-YLVqjd*Nx3`a#p0U}87!BrF6AC9#}HCxlYZ%|D!0pJbjsbkgh zIP5p80|z#-fWVywpqWO1Hn+*!uwd&GFt`4)zW&l#-$O2SomE5Ij!SoC^I3j@$o+2b zRp<|>nH0j9;zt*x1vO-jWiTbK2a!nyHpW;pMPE%gwyANRnBB~%jfD{5h~Zc&q}Z&B zND0mY{l;}QLY#(Q%~0sLIP5#+gjdL)Nb^6Er-(a=3s(eei;IgbroSxp<1XDo;{Gp- z*MI?Q)lAw)RpDRXQ4+)~j+=O7EUf_MfI({YLYaO+z7l)*^#YroFX^3h%t^N&`u)tv zh`n;Jb_NL3lQYqt_~-1;nXxTKo?P6sI507SE~}R#FB&U>#4uLKJQ1Gd2K)N&5T5fu zHp$f3b?UQwEM@dA{O4`xrf(V&mUMS(Un#sR==G%*A#c`hP_<@4IeWT7(oA%C z_}E;6A_VuWsBjLSci;uF*$cOeN=oYCixZ?AwQEC@fF~R*x<#JvG=Ufx3qXI2VDtLB zo`YQM?2wjZ0a^JUj~^Q%jGY;nSZZcqVx^;h;8Z<m><^ z>v1v#7`ud6%l=<{KfTE^q={xt5cO11Q&U@BUiC`z;rY5`US0DpU^R?qfb3BD9XcZ2 zr#X&rv(T>kCK@_2SsAbUIE*c;gK(5ge7+Fz@+A@_$;!z|c6l~MHY$Q|>}=|jt^ImOnGj<{N1G5sVT{*E_IFv_F!eE44~pp-7UdY{~4Ki#I& zHtXr&8tQ?TCG}&$XQXcJKNNh~WWZ&M3OlgH{8qFgR>1X90QGWYbaX1ON%{GtC}q0$ zytK6wazt&-7sO8u1QIY0Bnb_+ChfZ!MqIdaKrckV=!jn}0R2n?|p0bNuTAj*c5HyW2j8719Zg68`XXSh_ zBYf zTdgt;l$@P4GBgD8I~h6=DG_S7@Ke)PeeY5OOW+}Op4%iVA$#6**w@2#>2nIF{`S@c zPTslU>(HT7HKDDvU#R zl$woAMm65Qke1b;&|994D?$Uvx%+(IFDf0?rAsrG9M*saHUMT)&WJi#e9XBf=DnHG zl0>+zw%$*kIYP6e;j-p(8tgfs!0{et1Tcj&s+%6|o9hF2Pog3CDZc$T7Y{}{aM;%Xm(5+)bCp$YrZUurro zeSb!0YAYZ<1?JT$7D^3 z+2zFAdjXcDc^-ZIvbmmt0T$veU@bWf3i7o#`MLu}sBEc^-3mDq5=*%Kf^{nS+6BZQ zD9`A?IX@zFUyJJ##Y<$5DS-MHfu^w?&e4bd5^Y&STTPA95W51^VS#WtTkhrBSx549 zeaADHyVCC+vehT(18A=6@@!Qi@H-IZka+g`lOt9Jbz(a>?__5W_|-Q z4$G~mbD2jCvkVIFt^&o08wFbb)Tz>=C;3rmErszFmx9?4+WZ&cwQJIv96`~Tm!EJ& zdFB@6*jG-f^d|4!(!1?@xls-eA9h1*Ot$Llc&2)@E#z#8pk;#-Y-f~$B%S@X`90IH zYZv6a-$3m%G8<=4icG@M9T|ul^vhS}y_cux`}5tghwCaCZAg1XPxU?W6?0g9*-s#j zrEgsZ*RKzhKL)zx+-+su3u@g|uDe7He$80%EK9`FeyG2cTI@2FcISfB{cHq(`%V1N zI^p*5?kiuqOAiD&EwFX%ZG|FXzB>hutfq@oCO4Z3VOJ>&}53!(kw z{r?$f}k(?K~#KxuvAM(dMr(kFp1AeOWYE$_w^xir6JC%eUOUbR* zzk1}&&0w@MaUg32Y=!XEbNzUo#_j!1(_N>fz_dU_pi%p8V%T@w4K@#jw|$`3Vsc~` zIONQXj1CeQ{0I^*l0o{;Gf0tseZ1IPT{CF<^Sdh$HpDR>jel z8V9=AE}T|c5C#OvVHeHuNqyG$XUq&T2a~ zd2D=~6OxnOyM4X+33)j6fo`dFTM`(58piI(dQ&75miV%g>|W-7U4|k^@yeE$-pQMn zZk(H&)5P9)UeiUs(`{JBg^Y1kIi5|blc(eCQJ?c@UakIUi8zqq;UYoHWgU!0c8q(B z`_Q!3{D4o@L1*X5wmTaJDy_EW+{hL-Y5Bv}WTcPCx7^I%MF(p6sw;s$!Y%?C&|&giK)Pw=a?gWP=)U~MJDL0 zFlOm6u3^5q^#1TkvRv?~46xtWo1d<`c9U1%+i#uiFC@Ob)JcX!CULzg zu|ar)3o>g8=<@jGqGQavT2Mw1Re28jl?>;3Eq`py2abVEKFjUuDzd?&_o~yph10XZ z2BV(xYpk$67P^ADdrqi3tqN&n+~OTtUe(0t8ru%L$uBJ(o*tayQBIIBo)dFw={gm{ zByOCd7~S!;HPwQ&>yLiRrnp0v8_+&tOhBQb$F%WSYmzFUvD|M{s^G+meEl5Mrv>Ru zs{!^o%MmcfX^MXzw?tyvf3eY8NcD;#K}1;i;Es>s1T{l?OpO{*GL z$ee3lzy9X@g=Bv2_2t!DQ#uM(^Xo@hQBVore+H)o8Lh5r#XHLnTy;9xX%H4xG5W&^ zdiv-)?jAn+?{B~q(zEG#)S#amPr0Alt(jki(;#FW7X~w_HBx+=jh!9$@Abcr;{*65 zUwi$e*~5oRmeXLB>xYMzRr;f|4a>|2V9~W+M<1P>q`1U1wj^%JDDG%O*kc6Lxuv^> z0%#O|e@8%KVZxoF)W9=mX6Z`pp2)i2YCHJkiBY%b(AMORT>@E+LYvELVNWLQb^zdOYN~(5syJqXgbeHa)##LQ7&x!*48V*Eq$e9f- zP}euatgtmY`}T$3DS>KntHHE#Opiqx5Sqh>s~_!hY7|F+F&O*&`8*>dBO3=tT(r5S zkC4Q5SP-kheEjp8{QVxAt9mpH{0h+4JXXxC^ylM03wh3OQ#VrTiPak|6$8C>)zx}% ze`psUrScejp2)VpuhgDpqg+kktjHkD*siHb!@+P>aPX)^X+^x$QI@!!dY zVvl(O$LS7MM!T!tcyHgd?o7*Bwwvq>%14`K(VO}OB4y&SDuGZFKi#n z@A!mCM)-H$eUUrB2Czk)J}@S2_O-NWN-;Wf^O8^9y1S3W>>l_F;AXUZ%6k?<&zDaV1gCkV}zd$zj zwjb+M5+EeJdq&qdwXTs$Zp@N&c<9_6$h_JHgp5F0u(nh)F|XFsp~0QQlrdP&d3sO= z=mZXAmLpH^SN%vuTbpX;i0Y^vWw+SOf4XehrxdvB`mwYWq9q2QyE&z$5_s!%{XKtBum>Ich-6PD++}skW@MKaPRdAOCirr@VfOQe4ACX;U4nPq95|;XcGc;A0igNLbMrb?7EqLShile)}nC zGSXo!EGfG(Vm?kuYqLYCWuCNYpc9F_D`?dczoEaHmxKUPZ|TWPD1G|(hUl)G`WZ3b z-CskPhf+U&{Ju>8bpR{ag6M!_Yg*8vh5W0(Kd9f+pn7l`UJw$)z{thLMP8q~kaSWx zQeZ-{*g?pUOFOH(Nl!XQ16fs*d+dyEKk$_<{t7*OGmmrlbOr>oAkkW^U>2XaIOui? zZ2DHotM#1fZ^J-mkU?+Kl(k8=it90%PhyaZ6R~AQH2^iQ5XGGpPDtng<9ijqr4*_XHLH^&J@u>vt;HJ_19eC2aCL1Lps z*k08_zbqdlktu#P0kl62_p% z6`)!=WOipjfHxK5iAXtKU6q>aFHu2NMzGX$B^MdlS zOel&~a?iCuAS*5eOT=_!Z;6Pw7*@;03ZKonulr~g=Psa@H%bPZn`O~X<4p@Ho28~0_PajeUwGBd@qw_oKTbnDbE91CPuWoQ_?i1PcTx?UvLc9of%05w%lT1XY# zc`tb(E)lpYlzQc_8_i|~1qBeRwU0IGu%bYv(iLBHl)JkG?DM-#yJIBZ?Q}?s0^Xkv zF38O9vVS642g12?&f;6gVrK^W`s%Byj3ArBMIz0Sjty;kvJch>k5UqWljB4+BuQr% zar^Fiq2B_+gk8UzA?LGy#WZ zD0RQ_3FhbVOa4U%!YRV?w8&4o#1kS*s9np7v&(CAq!UrrqzoVS9DVmA zw3AD-jt<#0>q$J6XcqkRsTR}@Bccn0>W9=vHlpd3Vz~x1>h$oaOy<%4S742;{T2>c z^}l_+(Y4UDx?_jc&enj;EFScdh`a}GLmDEI+-bJ)?zPX69YXTFy}61=l#yvrC^+Bw zbd%hB7}Ru)sj5j@5R721Z{YZ2JA87(;^Q;ci`Uz0lnpdVQ@Pf=*vgxgdf8=zr*1d7T}FQ>gbEZiyOt@uErq*ctXM zuak(k`}yb3T3L6M4<>r#nS=d>-*AawmJ-lE)0K9c;mBbl3cP_`H*p@SM1E);|JR;(2@0vSu$yOH_s;L<|LRO#;(n*#+J1gih{l(5!pw88y?^8kiTDc#v$R|>u2SQ@<^N^o2Z%*U@3>UJH zFLKBR1#;gm;P2Q_cS`Y{nm>nPKtMx6|_&akOW)lZI!y zyZwaXk&B1r8t&8cMl=MF?u+LpARBXabW#Ikqd5e|O{j6C1;1NXd20H+PSF z#EE2RH!~1VKps!LFtf*jz^ql;o8Y%FK8~@};INn|AomxF-|+Tuj%Ee@uqEKb{(K)i z0$>|b-QR5)1m&WFjwWF2Wpv&@^| zhhBRdfWXIyK=A?mHJfe&4jWi+R!d-2jvVQKB}!UHN(uy51}w+P5T{*$1P9)1#s#Gg z<@pf<0|o{K^I@zB;`Eqd@6DM8;sb;i*pBAWg!mWq3k|m~PY$Wrr|%3HIn8K4FLs`L z3+q0WpaLyKfqRD?X(Hq{X>pnwot&J^YWcTx2cqjxZgvmLs${X zXV0{A+4nUoXs@-Uc?|CwyDHxfGsYTgg@o`ap!J3AF%|eqfXrxCM9>A9JVkU%yku%x z+C?Zti0w%d@r9SwJ$u1wJD9JvClo};DrlKP)DbAxxO?{v6z$WUKFtPFIw*vAJMKgH zkAjWntu;DiCW~M4>ZfV+Aus{l0A45)w1C7EYd)>CMGT@@xkT=_fd~Y#sO9l%!O-!| zxphq}-yVCNkG`#)GL-JRHpr|$U3eXoKmdF+6%?Mi_YoI=Sedcz$+8A(3bh7_+d3KA zLF39@J+5Ky?!bdtbrz=}DFZ=mm7hT)sc#UdWM(ImrL0;kn=UqV;^1knfr@sn~;@jwCP4QMOVWwr|RbC+8L zia;54VlR!OKH!sV%Oxs0*3{)$_FxGS?I%l>6*ofe4oK1EwU!jHe4w#-4AnbPa2D&O z-_FqT8@`PmBpq zU7t%{FL4&8lmbeVViKwR>|{+~JG!cn{xcH5>_{`*=WT@`bK`|c#psWWjw>$~R*(fq z49$2D*DglJk+@^(eYUbX6L+Grm5%4ISuRIRDWI-kfOut)$Vn=S_uI=Wxat4l@R;Mw zz~NOeavF@&@fgmgLXKT!J>X9C2VQH?y?IQfL~CwFq7e%Yuk%5C zU1Y3d-WR8bBdD6G&&X(YZMEO?D5}!$QRXA=e^LB>Qw9E~ECq7rza%g$j1|%Vfer$Y zraHI(N8BU%N(-esdl>+JkmIFe|LCsEPKoMua){|kL!QE;{U&<^wrmMooUS3XyW0v&`R9t znAb&Del1kEc1z9QrrB;le_&42puoJj%TR~9|E57nPq!V`8Xt$9c%QJQdn2>p)Z-JM zh6Jm_@cP-e*xjz>zi*}fq3N;!VPj{F*1`0|k7h6Z+$DBnH@wRQ0!dpd{sOHlJ53;L zqk4fD$@2)w{UZ`aoI}jSRfJ>o+Y>n7Kn%}sNCfl8pZ~)-dw>4xIeTCEe>rFG&;Q{% z|K%`#AKPDs@%z~RIOlJN@t1SAzWIMUjDNC%|7hs{`#1l;{rLQk-u(Z^$LF@m z(^>T*Q-@jlh7=rP*L^?N@vg<5*?Mv}-Qov`^pk{fB_)L)ccj-2Ng5eYgPl8dS&NT+ zR9wVfNlRH7gSA$FaU|R{NsTvBgPZOE7`~kK8!qS*B_$fO^TM)-9dzBpdH+Yd0ul)t*^6Bg%1zk6}BG?Q%^TNSMnNDELLR| zXx^LCFHvMOrIPKv!BzY2R+^Ifod=$`MC-#Fqk4lRFBeX5(iQA(z0TN2bqdG85UVlG zbAL3z<&h-SGfBz5)zwWWyW#kNfbp}&Jzc%$rw`_yWQ>#R4ceDD(1JW10d}S$c+<`r znuAv=#0qUxs#Ly9DYtx_#>h%XhmyG$RCa2l=qVi68*=^i$gwr1ThnvOuX9EVeV4_1 z{jJSc3g}NS_Px9aD@Uyv&j?HLUwe{Xws4Mw7g167{d*gY1gt%3o=Xj$Thq{zgOmJc zn(aM|jD315V?fk>hZ>zLAJQUf?tAe#$C>E<{{9SW+eX!KvETQ;oYnwegdM#or zU1x;m>ohgBP5W>h0yFZCj$7L$n^{G(=%bE}nJX)K1``}82FB@?=0-wdOy2nTc+wCr zI6uG4BTufw%cc`rLRy|nxU9TRAS;?m6vW_QtL6Hskylxk*w=d@wC))lcDZXo=lqfmp6CU4c(&k+mJj81balOK^|7)FVQ@9| zcvju?elvE^sc}wbmn=^dWl52%WRON~8&8>`B+7n%H%Kp^EaO-RW8)})4vf9V3w`rjw?x?`~wJTa+?1K5&WOB{1sh-_y$#Uai zGRGRW#p$K&=gPO}Q{Ld-ke*{O7>6ZUlcpV7?v^Iz<{|UMRKQh!*E;y$hzbb_=@mIR zKdZjWT6 zm+kiwrK|0$@Rs_b7!eVX6iv<)e5Q9`&-R^aOomYjFKYSYa%x9+xm2at?K_xyh7moSLLa~d#+*sN}`TLve_urMC@p& zxR@(tdHA`shhY|Bs(?jwMLAA56^G+*hFfcGLKw0h-pL{~d6HH_G_|$g!HmsrIC63& zl`$7(;qfFJET-UoSKSL9OIvGI)!g2NtzZWC+sD#G&q>EGCHRDrd}@D%N%(F~1*d0a zsd(=+7BKen@HF@3e3~k6%`TgdGIXut+1Sl*%(G~>cbxdOL>BhrVl8ti7UR(M{>ny+ ztGTJ7jt*%wyk+;+F;O>7?JWIp*3(j@ym}=<(_l2Fr>Ak2j`AcjA3T?b=%phxhS#&W zO?J0dS65BR(|8$&d2CNc^Rr0o@>=0ewF?R5_4)BA|Hfb*zuB~T$69U4P!GjPjuO-` zKpD==oIBk<7=giDe^za-dN{+NCn_r|E8e}El&Z<=xg>4Qr{c51=&<7$vOpMreE3py z16Y8(h0{5A$1wQ?1ruEKM(Av#?G%a4UL3M1%68qwc#nZCy}foAjCQ&*ii62kB^`ddR}&(~zz{W;0W0`_h@PdA!n6a!Xg36gUdC8_lc zuaOAX)Ym>U55Gi3jU&4 zqp9*xXak05y}XE)=Qmp>t?jhzybe4Q|Kd;q^#8LG7YF3soJRPD_ zACE7m@EM0$c2ZJFafyWJ1ZZL)|!7BT9;T@3S{zO zMQ+hJ<#RL&T^lVK)2S-XhR0WRbQeg846d&D^bp!M3r_O*TwL(ls+ZX{%3OF!xNIO+ z;?Nza+U%~;s$8VmvPouK&g3djdUDh^vM_$TrYS~9a%f1h$gz?#p6JOuIJU488N^%9 zA$^5SI%a3*1O~%DQQI@tz}(dEgx(}}B{eawPk<1&-^vQ-(cJH~L!vm=QKD@J=Bp>9 zJ&o1XUT`G3aq4(&HEerv)J{P!5z7$qwMnn#;~Eb2W)!@RbnU+pKwLlAMV`P=DKYDw zj9%+q3B*$t^$f?uGZ>w}Tbkob{CZ}$A$p>i(eCW(1iwSqYrS%t`ePF~kiKuttZ2_^_U)%%W&a!+B1pet_iafDmllx- zr~!kq>gXK8SCQcj<2U`&bZ2wv_e+Q%0BRsN#nCZsBK9!!ZwIyy7YJ8bSqpf%d2=2;u)lBaeO7(W9p`j=i-yfLym)C=rn7Scs=-WP zp!2n^n%awk0-?3LeiH=(bb-OA4OGw##$_~A6>XZN-uRlDpDvx)rY$TT%0KD+*qin|G+b`MIIejmu>(YwOrXm|$Ti%a+@LKQBaxAnX+ zh?q#KUYY@>pIrC;xJFeARcBPU>1QW@d;jgYxqtmL=g=?6GfO3&!zKUmEP_4#jQ;qi t