From df93c697f2ef603f7c8bfa4db619243889590f8a Mon Sep 17 00:00:00 2001 From: kokororin Date: Wed, 3 May 2023 12:23:05 +0800 Subject: [PATCH] feat: supports old phpfmt --- .vscodeignore | 5 +- README.md | 19 ++- icon.png | Bin 0 -> 99540 bytes logo.png | Bin 28534 -> 0 bytes package.json | 337 +++++++++++++++++++++++++++++++++++++++++- scripts/generate.ts | 32 ++-- src/PHPFmt.ts | 63 +++++--- src/PHPFmtProvider.ts | 35 ++--- src/Transformation.ts | 18 ++- src/Widget.ts | 59 +++++++- src/extension.ts | 7 +- src/types.d.ts | 3 + yarn.lock | 9 +- 13 files changed, 513 insertions(+), 74 deletions(-) create mode 100644 icon.png delete mode 100644 logo.png diff --git a/.vscodeignore b/.vscodeignore index c361adf..54ca439 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -16,14 +16,17 @@ yarn.lock prettier.config.*js .eslintrc.*js *.log +node_modules/**/.vscode node_modules/**/*.md node_modules/**/*.ts +node_modules/**/*.txt node_modules/**/LICENSE* node_modules/**/license* node_modules/**/test/* node_modules/node-fetch/** node_modules/whatwg-url/** -node_modules/sha1-file/** +node_modules/webidl-conversions/** +node_modules/tr46/** node_modules/dayjs/esm node_modules/dayjs/locale node_modules/dayjs/plugin diff --git a/README.md b/README.md index 2ddd59d..f4f9497 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,14 @@ The missing phpfmt extension for Visual Studio Code. ## Installation -Open command palette ``F1`` and select `Extensions: Install Extension`, then search for phpfmt. +Open command palette `F1` and select `Extensions: Install Extension`, then search for phpfmt. **Note**: PHP 7.x or newer is required in the machine to run this plugin. ## Usage -``F1`` -> `phpfmt: Format This File` +`F1` -> `phpfmt: Format This File` or keyboard shortcut `Ctrl + Shift + I` which is Visual Studio Code default formatter shortcut @@ -32,7 +32,7 @@ You can turn off format-on-save on a per-language basis by scoping the setting: "editor.formatOnSave": false, // Enable per-language "[php]": { - "editor.formatOnSave": true + "editor.formatOnSave": true } ``` @@ -50,6 +50,8 @@ A: Wrap your path with quotes like: It is recommended to add the directory of the `php.exe` to the PATH environment variable on Windows. If it still not working, refer to [#1](https://github.com/kokororin/vscode-phpfmt/issues/1) and [Stack Overflow Related](https://stackoverflow.com/a/45765854). + + Q: Is fmt.phar (phpfmt itself) still maintained ? -A: Since phpfmt has no maintainers, only Serious bugs will be fixed. +~~A: Since phpfmt has no maintainers, only Serious bugs will be fixed.~~ +A: We now use `fmt.stub.php` from driade's [phpfmt8](https://github.com/driade/phpfmt8) which is very updated. ## Configuration @@ -80,6 +84,7 @@ A: Since phpfmt has no maintainers, only Serious bugs will be fixed. | Key | Type | Description | Default | | -------- | ----------- | ----------- | ----------- | | phpfmt.php_bin | `string` | php executable path | "php" | +| phpfmt.use_old_phpfmt | `boolean` | use old fmt.phar which supports 5.6 | false | | phpfmt.detect_indent | `boolean` | auto detecting indent type and size (will ignore indent_with_space) | false | | phpfmt.psr1 | `boolean` | activate PSR1 style | false | | phpfmt.psr1_naming | `boolean` | activate PSR1 style - Section 3 and 4.3 - Class and method names case. | false | @@ -99,7 +104,7 @@ A: Since phpfmt has no maintainers, only Serious bugs will be fixed. ## Supported Transformations -``F1`` -> `phpfmt: List Transformations` to get the example of each +`F1` -> `phpfmt: List Transformations` to get the example of each transformation. @@ -182,12 +187,12 @@ transformation. ### Running extension -- Open this repository inside VSCode +- Open this repository inside Visual Studio Code - Debug sidebar - `Launch Extension` ### Running tests -- Open this repository inside VSCode +- Open this repository inside Visual Studio Code - Debug sidebar - `Launch Tests` diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5538a1c69c3fe5968d9defb9b773348671fd1ad1 GIT binary patch literal 99540 zcmW(+byQP-8y}$zK^UPS4=m>BrY;jY0lhzJCN zt1275%GtVd$mg8$0VJp_wCsV@sQPS*|{j=fm6H97&kq`j?F8?GoB@U>E`u2yt7_SJGM5174U zx<|5JQNB3;@J76wtIdV2>(-^sgSq_jgxpZzM>=fHL6VzmXpyAvbxp#y?nKY9V!du% zf~J1k;|H>YX@w#6kdw00aSO|TZ`3F!mpY|gRd_x-3j?YVr4ew!{hch>P%DCqhOmpwG; z@v1!(mbUl}xc6-XXO_hS8W1GJnl~>YkM(b;7i$N6S7UB-AI^#@mJiypnK)#T-wL z?YFo$)CF3Pgr2@_gPngDd2~(B^jmjNK53i!=Ziy@+5?T4a#X)4pI!8mWbymQ7rE|b zi!AQ-b7tGVft5^@kCjStTrx3L7%tD#LkES6+_vlCiNgt=Lwg1P|A*>lbl9iPsRqAb z)dU&MalwHxL5hfidG~5ebu|W4T~*~9I1fvtiFJF6Y!sCc*_*CujFP`_HM^W5To7U- zmNId97Ym{1x<>)q#yOWK`YxBYlr+8n9!E9Xay=O>2t=xc85ehJXpoeY9OoReWl-De z-{_y6HLafe4{?zvB_+G)EP=z}xOsRge>(S_Sd4fy%n|lS7TbKU&g=3+cN7WRi$?sZ zmOj^trXy17*Avd!HWwtdOw>H=N?Dw_Iu5~Z!FE24bKAEgSi#}ElqsAm;ZmDJ7EL(n zEyW*Mjx+TSBUw?jAcT@rOJnO9HQ{hkC-;1}5tnzhi4Q6>!dxYf6MtiA!F9s6Smw&6 zgf;LGk+|h9m-b{C0Z33it=NsS@UW0XONp zWb9Ew=;fPGnE%GAO)vA+K-+nx<;Gdh^{G6||8ujNCT8W8kI&Km+CaLH#lrM2Ri)v^ z&49Xbu_oV#Tk}m00RdkP_lfj5iY5_!XzV0|KAj4<5L6=dr*%JtC0Eh!xR8wHJR2We zt?zNUK}T?!{+E6gwQ`+FE2rxT+4$CrVe~-y`IRzeAtN_4FDol6J2x{o*F`cr5AWFn zE=0i5;=pIS9Ndr~>VT4b)2Tj4VY&Kq<+qrdolQ7yXp>izI)S&f>%RY2V)^`?tl&o$ z&8G{2`1voMn#CV}ZY0Thy*%mY*g3OEu*r;4?9$>#Bhj4f&Tji8;&LG1&czc~ z{1yW?BTg18C!It0SXzVs{3u+!+`rCP4*!?;5Et>+auv5=kUR;MyZY&i>Bq;=J z?G|zz1z3RFp&TgU@WB#MnpPx&kCZdgeTtY|4{_fCQIW!<(|k27TeTT_HPY(8HLZ^b z^*-KVNy2shi$v3BOTTFMn z4&p+I^h;ZsS%$8qrWeBkuFpo=PM0at?AX{})13IZf^2Xsb39g2c!AXUubwL!ir0OO z2lq75V~as2O}Yw4wk<{mh+a55+R#*_AIugBQAHv7(dussf!hYNF-Wi@Rqoq_zZIsm z3|?D1!eWaxl7jc%TGqNz&=7%%-|gkKb^c4f#j?WR+qUrf`qqG*!N!xM&`&@A%3q(Z z2(=t`pEdfkLNxk>!J?VuY@`lWamNTvu2jRYC%kABZE|31>@6@`yl2m=tkUZ1!=H3K zI>RHwA%8V3ov~RAHGgOs0QROgHJq|<$dGz zvh1B2=3-Z3JoWcA6IX5=pyg>jQ()IU>VQ_EtjsMRm*hhfg2x zJqz*-nUZt9bXy8y38Xt~2%WC%`}d?}u}ps$*g+qwt6DEp(nl;{EH{3?z9MVeOQ;sw znkg<}q$1mV@W7MtzkyV*#;sW@NOEZfDl^%XpB$tDW+UaJq@jU;f5(gUh%fgU^oH(6 zgs#Ph9t~LfAJ+6jZQ3YKE?0Jgp#L6wZ~gWegD_=Bdg%Uswnqz_;6$f!{8t#1T3;OhMpx&)NgNPVA843NCq>rH41FGTTI+UQ` zc-kY?x_5Rj@5BP{cXQ{ey{V<v6j57(>TiX6hG>>kDG4eMogzICB8IWm75v->j6qc`kci)p+-1Z4{*>tgn zOxMr5*7v9KL$cuaqm>zXP{{XzEmrYFVHJ21B19(NzUMG@%t1l!>IzTrPP4Nl%ucml zuBDszO7L9I{~=uM{l6{E)m}{as7Hgt0-%(Zp;t$#si`CvRB{);#9DDj7gt9|39OWY zY>1FXLwMt(9RELi=RnZ4EV zjW%ubRhk>e^W@U@7a5$fZgXg4U#*}Dn7BwCojRF8autbGCt`(CEreWPrb5mcxDL%0 zFDHQrb_neUkzU#@hlYOmf0jq9e-|nqVq^U*HP@?~7n5>WQLM`>^GeUYc5zeP(-9^e z?%m^<%xO&z&pgYs%^_C-r4xlwEe0tmaN0N4G39({QVx`LkgjKo7y!bq6>O%Ytx@P`jn6KCxve4*#5wXIOBkPw33f{@YweF`1HJCnB z`8#s(b+P1)!{HlQyB*;qE`@-gUuP-LElx?E-uQo0`btB}c}A-=yM4UB5r=~{`QnKY z9m0kP{hs(0RsGL3jlX4dT8s{Y7WMp4lQB>D)}lvxGbaO_oc>-mia8ADn3-7QWn^6T z8@KLvt?0^Bk+i*X&;Wrh{r1lK68)87=MJ8FbtfEbFCF3!-YnryX8zwiYJUCq*}Y+I z-hHHgOTD--H4W*cs-!d_YVaUCTN$FIs~eb?pT0*#6h_Mq#f5Wpy!fFQd_EXU*E?rs zmNUweA9UV*&+=E3pAh=cIC7~?InSetML#J-$;;P^nI=P`>hv0yOF^SBuk`<^WY)lx z+!PbhUa*MAnm(NJ9!iRra_qV;Slm3yN{GgvA^Et`XJYF2?SKMCwR&G1H{n}-&c^IW zGqM+t8b^Y6erqs4N=JZJ(*qSim&CmnSZ^ZY@|WD`ObUpaewrP^iM0SbhTveo*HQlw z=yn%*b~9>R&%0bMb1z!SpIisWNB=942KPCqPm?l~ot$vSx%K#LQ+W_;(V%VhTwRpJ zsIy2MS&bQ7inYNx%6 z)+&DXH4wj+e|dTtb%6MLb#W4UHee}#{=KuKHfClwbVfQ9oqd&a55oEcLi6VL?(p^; zZaA;$)$g(M9tLOnyA7_rd%yl>It@#+KjGqIi?+$(j-3pEQ9d$<`JGR|t5<(kV$Up^ z?*6-cwRLnF^MpuoYVY?O+}p_Cdj6|KrfDiLBMp(~L`Wsk?TkhI3C)v6Lt+qyo=#;t zTyJdi=#gdX;jk?JS&MI!{`q$f4Z^-+NZ{f%35bPcD)c&*Fk~MSp--PHA9$=mICwKv zWx)aRZo;tyZq-D!P#ig9%&TCDD_@w4OS2)LCqYW&${@5Ygw(~wrLwZprPAfC-@V0v zl?3DD5+r75P)k=wOEP;%y-q|{s?B982#e(EddU^Ezw+(h#=Y3O2D?Z6PVV(ctso(n z=HPqnvua#AqTbE{NvmSMW7@GneeThE-9y%^2&E)3oBp?V2@&?I*Vpaeu4MhV#C15b z%pdr@oL?k-Se~UUy2tZ(zR6D~UmhCXnN}>WZB5b^WNxbg^@#P*~#{t ztdx|Zh{&ijma+G@ik=ED7YfN5nY`Ftw0l5O^#AmD-slbKkjCXuzvan6a zYvfavX%$0(wX-v640f;<2Co&|q`oPjIWXn%>#4bUv)567CiRHdu>6RVWVV69xVN|W zLDRn!dX*;>X@w$hck7jmTsLVS)T1{3We;wMI+A^{p4k!#ghgo`6J>@-x$ zX&6N3-^6>XfLZl=H;1pp3EF{XSL?_Pfb ziBc54-~Nx)L)F&YF4>!k6pBvc60Cey`5!fle;9-z`uF+y?D~2S@J&8$K6?ve^WC!i z1~GqNzK!NpMlNe!ndCa4_*d`k%O~rd2~(-5fN~wVrAt*LHc1U@pJXv8L?~HDWWJu9v(ka=RgEnhW$PI+7hBj z8Gdag%t*Py%O2^7K^tZcCc{cmyj&61taVyWTxcY+$LV9L&bT;yTu@V@h)a-7aLUuQ zx8~tnk)Hb;C}jV?{U_;x3RPwH=et8tt%F@YOs${+lBhsk+$RuW!VGp?&6!KInYqg< z+z$~)zjSuqpB}ZTzS=qhD4kJPhJ@fpFvzcsmkO^4R|!W6XJ;0n7Y&57KQ%UOuW{KQ zjj7KgG}9l2oc?}uvNQiSMR0&N;R*O*D#E)CSTXQGpsiYr#6;O5lNrH!F{P81pjS#^ z!lHFuv;I4SD z^0vbY1}!o9fKEg3qf1chI{yfVlT80-x3Ru1m38&4cPXRw>AT^;aFxj&egV@OGlXZ_ zAzl89>~y5H8mPB-u*a?2mz9>8PmzESPK~Po?6atzlAPNPc4i?4zZL7R)q2+C8|>q@ z{iE>l;uVlGLA%O`kQ)|+bOvs?*V$OA-$L-o>`|pY<3$y|(Y@|xR(9rWo!{c+We^%! z^Kd}Wo%@MU+LvG58d)s%^cni#hpMXNb||s5YK9x$?KyMAKRAS0PeQrShW2AIDEsIa zp4=Ez8nP5_{v8t0H%ZQhg7jn(-Guyo8F$JrG0IA#Hy!G{;uf54Fn$| z#?B<(yN-;u01Q=CE^ESm{`~4VXRR?0Vw8nOA{K>a>hF+t4ka8J+UJOl2oP;xFqogI zKY{Hd2qzob5=sa`gjNWCudW>$8Zv(7zqZ8tdDA z#{giZXg6?Rf<9VbU$00h8_tz&Ypt36dsNG*rn)Gkt@XLIv=rEv@qy;xVc7k~;Afce2pY;l6khFuwqd8cE4X z#f!u7v`>Ti(;K|tPv)NZPT+02=` zpbfL^;K>R=@+^m2GX;g zYv5OuW3xXyJCTzFs7)zMi8{byOjSLT4LaK006u#UHPbv8xRsA3(1<8gG7q7(Mg?{gZ65HSi zPB~)Y3(Lnc%@F7^6}lF zXD-rr!Q8;5*?AiDUf*Eij$yS+E3F_J8|R#v{uQ(G1zAy5g=smMoI~^@(ZFKbX$51v z8Gqo6o^{3Amz6o#mzI?}l$LS}q{i8iBTQN^wkOC{T3+H82zzY=7UL>Qd9Ty&`ByVi zKrbDLYiC}cnKZ?hKXDbC_cgClJ}G$BmzaKsnYwE!Jj2d}QNtulq=&KhNN%LwO;wzg zF+)ZUpt!_Dr?-amy5=|%^CnFZnWaw2obcrDf(8Ly_xh`S=?6$cx(@IHpAvWabQZk# zu7VX=9;%-`2i7M=-+_D|)xp}AKQ^m9KIS*Q_&rgPGB5xTgN!kRooHR;nm@Ax#&BDz>6ei6So6f@#%t^-x47pu(i0*R!wtfn-#;(Q{Ta#2)-4V zWXp&t-)*oX6rkh%46ZH z*U`pN_SBS-(Zd0mfWv8EzgLiw8u2|BW(#v%MxqTB9!yOTc>hB>C**Agv^s=q?Nb;W z7Ey*3U=xdYwGC3Bnp`O`lf|cm-NQ_y%CoMOq%$6%30$~+u4F2pcjZ79nl<3UM9sa zJOD8~VUAHRxUt$$mzgiBexHQ6tLqp=OoY~d{Q8opphs}vX6Nrui<)DG{C0D`Xk>-a zhkCaMZbGD_2})qJAy_0XDSrD2se1PfR3>FHFJ*+d_HFie)O@d#&ab{_HY`s6$?vY# z7-*L~nKr+4WP`rB3hk2oz<;B2X*kymH=NrB1jwjtGw`}bBT3<6%R7ZG#Z-XLjtYiL z;w*KNVZ6z`&J&rzCXM(Yt|`58WIE4_%alp+#9Tx^3|+u>dD2F{&dhX4Y^q+j649&mvUcd_BmKLYT!t{n=|#{KUJov(G*?ztJ9UF2RZ`xukH{fl$WTg zBFKxV!mZ23$vX}C)RZ_t#5bOQ**TlcYUpDvj5n$0iu@D_>8Q2P09*4abBKka(0{Fj z|GaGSWOTuVK?Z8I=$8VjmcnV1;rG?qxF$}nSZkE z>ZzFJPFGWOw`c0UNgE^VO}Nqgw+zqfQ|z6fktW=QF+3@p!1A1Chc%^3MMQbG4q1|g zS%w{4nWrGBZbk?W#D_Yg16p=+W&HpIP^`aL=YXG>;6x8bHhr-XO|P(VK^F@HeEU-q ziU=BAUY;&AdGZCH2l;H)6f4ZHDBtUEvUAwXy zXG*?S&ZRp#gCMIO-nH;-pKr7sF~^y8Kg>lLS719w0TIfJr~GVPwK>jMWcAeT_~g>R zMh*hnV_uD`feI_7T{>D{>WUE>>Rj?ldI+==L$4>W<+@-*Vr{tWa=M(785}!V&j8>6 zEshsOkgE|F=od@ED)~gZ;Ed6QD1JCyrahvv=72zBvS)(e6UtE}%(_%BGzK=9S1?Jx z{PU-#7=WB!7D*t6tXRXbtuy;dB~`vUR?2ZsiI2=FB-p3-RCD57;^Gx@u(!(Da#47zxyTZE^lG!Vl;?U`BQ6a$lfwq z_U&8#f%SEVlWj%eQD^Byj>u1fZ@tB)$;QPKig+obGm}A$A6khH!1Ng*`nQB*!f3YC z>ga6pSdz@&>i5I^Tze1XM-BwtX%M_zh`+*=7cI|1g`Xrp<}QMuH^sHzA=9Z0sA1RZ&K-qp_*CldiHcnVdc&KtHm+UJ{OZcD@_xtb zLuRcw`Q4??z!Sk~Ngfn!B&YTY=P392!$%WamuK1$9anE_8z+lTK?%PchfA489S>qi z!RXRelSkkM5;3#?c#nu(pp96-$kk35*?a>R+^^z^Kk>&1`P5&40~GXOH$Yo;xJ5@w}CBq`@q$Dgh1 z-n5e*iUPLwPHb)-OVns(b@P6mROousHK1`O^fHI$cvqzY69vB9tQh};sXG+Jih@+w zR!`|BcYWCrhW1#Cx4HNg>r3S@@}VI)V{+nGF@gA}#7oBfV+_<|rhYQH0DV0ziThPB z5(!~brPrtwsN`DA&&XNLd7yCV7%XCiMI!GN6t_1?dA0xw5x zybs1Bk(qW3H1F7nA*t!JVGv3xIe0P*Ok7d&`&UN7tdGT%kK5d` z`Re?256_1`DC=w1HYfy>xeD3-8>{_|L;4e@$7q{d|c_E~X zRDi){$oF2fa`j?`6M2H$FYWb^A4 zw$Je5>RD6EPghAZ3^y)q5`o~dOA~MdIVXG&?tI;MwOC8)5VNt4G4p7?)+w9w-~C<~ zOh)ykN!cqHUGI3&OrtZC-a~WdE2e*4YJMVy|ja?jrV3*bxX)mKRTe; zB!B(^eC#a*Yp+H7LlvG~S7B6XRH>tF=ulQx%FR%}4egzbLH4skZz@CH=%;<)j7>E( z)iiK(7<_WR?vcNKMdeS!1coJwjb@b_RpxkOL?}Cz+tTlJejhA**DEArDdEM<0tn>Z z?sx3(64#w3H_t1Q5km`=SO;ol{qU{(`vbT~=6cBCkrBnCRRdkQy{^Ft`i75|dw=7B z@QrJ=Bv6ud5)KHLgnYTH-|so7gHB`@Gc$9ENN;Cw|Ls|~Z=1sW+(-z>6)mOcT=pNT zeJKphLOtWdw$@OAs1*-C;ruyNs;tZI4pYlALoc5io{h#>bxAQL)GzcY=qB3+2e(XZ zN++&-&5Nape8>oti>;fF8pq)9aN0oXXqC(Lr|*Q+ep_z4G;|LNiK6BHf|E&HyV2P` zP~CF96FV+)H0l*=_Nb8x;w%CoMWOT|_}uK%o^%Dj(_G zOaYIWgX6Ce0-5cX6$)Y%XcXbRnh>zOTG9E2M>|WgfI`8>e~3{8FYEFZ7ntFG0l4LUZ8CWUkbr zw3w{?=*RzPDAq=sC*Ihji%_scHwW?Sa?&iQog&V~AYB$Og2|lBazS%0^6gtY`>Y27y~RF<$CLJf{d>sWd%t#X ziw}9+f*e|${2d9l4>{@Bqh4rw`FDB9OloR!s@lBec&l!N5%yx~9$#?+kfGn7T!*o< zst8kt>_)IOU-#%zvncGh;Dh~q-E}xX5YFDgB-s3M?5TUmY-iq45LXGJNi^YuS9K16uuGB|uvP zHcM@TN2Em0nL~DV12B1<@P_f3*$vikYy8$=h{ltq*c7*cV|hiLWEebI{6?3crp4U# zMtUpcwYLq%_=E9Rv#W%_icqVhp_YEb&i!2Rxa!4cjb3N#21$w?Fo{)#2#i5p0*-hd z1Xilp{+hTVzHuZz)WN%TbkX_yhbprmi{RjaQWz3*WF`C~=IiJura7V1mu>l_e7JaT z>$qLw$h+zrJQ5$tR29O-P{?9i4R~s4CZyuOU5W%F2pR=ZQsFCX@*C3C3R-zz+^dsw zx-^S*>D6VlH2r!4^iGAN)s$4k4TZGQf3Y2cK!oF#(=D&}HmeCQ1MJs5uGgCY-IAM0 z;>IQ{Q8u><7m$kh8Dky)GJl_2al$04a56G%avFa^UKn`y_-PvE^Kc2^M3Y$tNaNz2 z>hH%CaxXr2;y(%{hwIxDlOtm7q{YU^Tb@ZlsetBg?)Xhyo2l26$uu zppdZamK|JfhS*Nvpl6P__6kg2)Bw?xcs2c)EL}?XR_}~=fzReFW&kHNa?I_wZMiFu z8r6AG9U=_#T;FJovcSY<@v&z~=tK<^Qna=t}x4e3bhY7@Bb;l(oDE+K?nXbPu;tR2i$W)Kx4c6 zdHI*ZnbT{V3+!#}-n8U%K)F4i83~zm6u;h>3zd+SjVNyQQKA2%Q&w5xDw&<;Hp*B$ zOwI|m@)c7RR@533k1Mih@|9q?ji^A04wS(8{az4#|8rp(eh_S%KUJ=6f!XzUUf0q? zXvYq4_F#+zC_9BIwZpBz+u%R`JFBatHiC&o;@WoHZ&A>=)iTIh2P4@#WDznRsrjNO zV~jsGMZRum#>mIcsawD}QEnH+^_l#E;%~2TgvVk)jyNq6bSsq!nwt(6U|<7eyD_#_~+F>_+FvVdeR$4I#!P}0K*9~1O; zYcj34Y5k?9#(E}AA5wy1sIT^yEl#{-RFTNxtIEZU>`d8^%d53Dbm(AQC43ic8+X%kLp!Qey=>APJ5=h(WSUR)9G1!5g2tJy@jW%y=_*mkqtz%mM z_uWt`zn+r?{k+D5C{!G+sJz%p6EpjI)}?IVV{QG|Rp(C}RBd|{gKGj5H>oyquqx!r zqB0a*s4TvF??$#sSxwS1Ki98b0Ntj+eIc&+`#~@%3d!whE54nbu-?-X&@fkwB4O8@ ziRn_=Kkab6egYmXzwNHhM-mpP3A2&-n3rK+4ypQVt*(wq(wh3 zWBWGoz{(p#xgugBK%gWq@2PVjZ6}w_wr*iJ(WOV-s{u8SfkjY%%S6TqdV7M$0i| zZvyxR?az2WM|?YIDa#A_Fyq{MHkl2u!6DlY)%;xf!8_h-UUzyTWC&rDG#>NKXAvxy z1#_G7giDGMg^QfcX_Q`qOejR0>LTK2DmJzcK5_!)Qr9hI?IT)Ul@#8n0hN~=%C|kM zrlH#%pcKJ76r-}3jgXW{l4MXd(o)aq!@HFdZ>3 znh#y)UH4#f^Q!$D-!z|kUo>(9HoV$3k?=qYq_p`JQWQ41qj~L}#5pKz59W%beTa7Y zdBAwF+j@pRdGztoL+Q2sUwQH^$CJxHH#Lnt6ojQM+_5r#_Znm(_&DzwKnqr_1TjKA;BX zd=w9aD_#cMxIrmTjH&cgP-*4*_DFkLum}wsyS>w09zbv{4Xj31JWad(E-ADx-{vvQ z$F=9|$bci*8=K;~pY@Sz0j*1)9mo2}BiDnzX7H7y8u5x{M#1UTYPu~Dd<`Zo&wl(4GU$#)ew`-?1HE%d&`CKSB&EKbrM!@471D3TY^Xc&S>mr2< zTk#iZpP)9jX6E#u_oAj4Bh57=G;-d(Oc6k&2(JLOw1(Rx1(PP+G}vSW_|X?Vgd;l2 zE;b0l)8N)y&rwGTRbm@J))k2L1Al%KMgNPZc!E`agiZyL-0L_LyG~&l&)(aD#wz!cr~){(gbt3yYDizT&X%`mK2i3Sd{O zYth%C>s+-%(Gr_*Q@nT$?V%Xx4q{C)q3>3P9{*QDBk{wi<+G>5(auq&r~&5h-@j4w z5jxeu9yQWZ1El!lH)it-n5MS_nl7gBUfOy)&z^F@NeNc4)pMWXi07XlGfrWQ_!9tI z6GmD`2QxyW+yjVgjpkI*fYQK3^~Nd7Id{7Y0l}imB@ldKkD`*1eS!m&1s-?904)}# zlgtUoton@I`dOtn>;_`?#p+HSF)5sq%Wqq8W@%~(RBVtD&m{T%KdY;&0Mb6&aH%$1 z-mWdL24LLt9@6m}{px!48iIu~JYc7=pav)mlAkD&OFO3Z2M zq@p!6ySiqIu!{?_nwkv_zE$}X^jeZ>Ck1G}*D&n0mO-IOVC8KBGRAu}K ztq(R)xnb$#k*5$?*wWZuQJ$t*Z^b>%2T>K)Pw0z=ja*QKvu>T71ENRTr%PnTv&x^F zM_%X+|0+nhNF8x908;|o>DA`l0d;51be*HNq@pbzmVt07q`?{if^v#yh6iJBP44$w z7~!}v&Y{|g<~*ojG}MdO)}-`}sr}eV@c6VYA1je{Yzsvo4`HQik#MDG-V)%mb(!z` zIN|CU0h@pQ(%;{1>Jk7Rax1Vz|H> zr^ESZ-qD7aOWWj7SjfF%k*=OV6yIcJVAHreSY4kgOnFTfZHpl1JCBYFU#z#XrJ@sk zjtW1B$XHNOvW?f))_M4FVe^Enemjha8ztT-k8}04Kb{;i%hUn{Wn=zS&}W)CtefVG zx1P?V7*X_V)}ho-KMsO05RksW?Wd27EqeVA2G`JLQkq8$4O_zSBC8lB$=O`dDQqpi zQGtnkIRTifj@3#83azfeUEv0y*cJ5JS}OLxDPQxcqo8WTN5%p_krlRclJ}as05hmr z+Rwi)i+NGV=bj@&%UYi$VddmOq7}7*bZNq&-B7X50&J0PbDoS**7Uu5!?KjpTqNkO zQBS#%6%~*pqC)+pJYl5uXbAVU1<2kHL-aL(VZ(cU@J*VV;>qPfN{WH~$cSy4Jwkxf zkVK`_&_kFN%r#OL$&axu9a?w`<`{&#pn=0pw*$L2GdTlnM1*+CCmS=_-(QQ21HqFy zW9c-X_WZs~K3RH9oud$J+V{~2lL+hNxJyD@pl(|3X7ySY`2nQFCK_fs6S)4@rbD1* zf8kAT_nN8;+{6P~Zpg)}nP>3u0yGi7$@Di+DX}t>CKv?DNMQ*B5vhmiA0(ptQInp@ zB_=YI(b?JA@!o(TG8NG>%A4Mw2KlFFjj|j9KKZN?M8AHzy!!~f3g*s#NVq#p(IoAD z7Dr*1>w22q{nCQJ!(S{diNHh?GKm}p9K7iR-~31ad&13QN=JtQ!uj>Kk3;3v`KAYD z#BL!ObI_l5vKzQ)@)UGta@MMQoKse`^3rtTW+P}WSn8&93LV{ zjG;~o?IdY(#5^NKXm1pN)4MzZ>35F~Mw;zeASxQ^x)tL5X(aMh?7eP-IByW%xGsti z=OnCWK#d@3UBDSV)~9A>2XcUDH|gRtb--}+)y*WLofX`nRce}PduyoHk>OE>WY+WO z)fBXovuyq5m(tKtNAVZK2~^K@{GlQ&aea|MKgN8XL?hu(?{dXtq@)6}q?5QHB&cGy zE0#{G%F<)fg^ZfXwVpc+kc5(LGYxOhFhN)oRWfa{0gs+c-Y0vK&GA!XEA zmuzQyS^u99K0V~^6+J#XncqY-sipBFx+r4@=c@;mx11PD47r9(2WlgUlyAFz`&dw# zI%!KKD`otB?-pmHAoN=dSo+-R7KW&9OI@En+PY~TIF)vbEpVoD@Ia2k+ue)EKntF%iinMT7k&>tCPx*k9__2csu!64pQG}yz$l=iR7z7O@8-pZNb0##l{jxQmi3`qoEU%pIr)KK%>sS z>7t8yi=qx&W~|+^X;lQRwRJ~a-Cb{5>tPJBlkns(RhsvuXzyZ-T)dv2?_(>ga8u4d z#kJANCRq&2{0@V)OvCrBQ6l!9%H*|_CHs8IX6Rl(t=4-V0iNaMrr+w(u&QmdAO|eV%*p0Q%G+Oiq_{*XqahI#&^VD z-nc=Toik=Ko$mltJ)H5y%PvlCFPbJKGsikEiC#P< zLwCjO(9@ehZ&XD>dNTOv`e|gr5TYnZjy`9}Xu0u+)OM?-#yqY_lqj5*ja2w1sd;ZO z&_yPvj2r4_FHUxDAW*1^!DLP%(iC$&gai>HX35Y#69Q?fSB(Z2h;xwgK23XvNGso> zjF$W$Z$S4Gq0P4Xbw)6~3H^jyXaEBCR5MdkX*@K;Q zO7m%&Z!f_6hg2BSs+_iZG#le|vRPcp2x2`T<$hO~Aw2n2p2Lh}@dPPxN39l1Br*;% zLHg;*Bea3)L&-863Kw?#?kD8d|=SXxTypGI07H@ zkQ~Gbmt&+NM@QGU%&REQW~ie-5Wg`-W=S5(HFaMI6;9XQ+I{AN5#?)y6pQ`Un2=bI9IyYF zDI+7}SA)ai*uEDuDnVVI?OjR5WENr{}l21rSCraB~EufJSP+NR@f&Ui@m z8BsGEJbi1D)p9W0Bp^^ZWZz-ofrc%3?zK0u98rh#+$@8Rjt&u9vEkiYvpFVI;tVfj-xO(U zIxWDTHAB5{WzjCSJ>T%V{^B)PyuXB<9%gdyU!#rha7`;MmExWl%S|j z(%gY%%?|ngMM#V<832eb^dEchhjKAUyef>(Uc( zH`}Ol>Kk)LRdL0yV2rNr?l+aKgr(U8RZ39(;9K+@A)_D5V!rcAoLC_4Q$`35Q401; zOMM{wx2nfykh6RJ2cpX*((8xREaE%A)Zh&4Vdo<)ftqDH`M&bihWjVmi^dqkq16f+ zJ07H!1aZTd6 zoTZYs1W}JVG28>S zbeDw0Mwh_Afiw(}l9onNT1k;oQu=p){_m!*yL<2Fob!I3bFY*BG!;)-J@9^I(X$o! zvg4b0Vg?(83yP_7T@kB_w8qEHZhSZnL+fj~nU(UP=k)@q6!fdlP=F)++1ZT^^>bS3 zs>L1J6MlKZ3cNIFL08-v8&}hL;#~&Axi9q>Dj_eRTs!3Kr`vd>z$k~OOkI``|LtKh zNHLE+3a+x(Z|`OoDody|H0)5{#4AF_0cvosUUUV#2P>cb_JNA3cE4URU&6{s^C*+* z;khm&0_SNi!X?iUJ^bjb_7$8Vr2Y)RgXVsdH#Ie#o2BSBc43N8T&|DQkOaja*lE+Y zqR&)(o`9SS-Q4YASsHB1{=B0YwFw6!$7Q}OkjKACmYuYD!f&sovPK=2F@2nGd%fLw z#8StSpgkXo1u_GbUI=_907s}yK_A&bI2!(wtlj_a$hIM)F~j*5K)cnHh(wB!roq5D zhO1!%80g_H9gdG?*LvGHsLRN;y7~GxmdtuQME1m#aURsw%|0@P+AX~HHOy6uMD#PmNHAbqi2IfL# zw>%uHcR35y7?Y;uTXtNT2I7MXyD}hbdrwbKTif3gtL;E>d$G`cKj&CuSvTK|IJ_{* zt62V)hR3L~6_G;GK-zkogYXsnHKe!oS-Zwa02wmD_v&M4+Y2Ysuy+Lz(nQ#fgM5PC z-s@K!gk=(`H|oD7Fq;w>59!ph7VR0<(Q=#fGDra&c1DX6rBYK)v?cgfX&Dnb2{fBu z>(KgvxKIRYB?&}B6A$S6|7Q7h&0cl;cP{TkK%R?_gDL5k`@eHveT4wuklQ+LfO(3>u{!;N^fqvkx}g@0P`$miE5F{&;a zpZ3BE#=I=yKAAbGVhyX=&aq(Snc3{7F~Z%+V8^#}0^`DpA3PSx$;k^RvWB0lMb_d( z^!${a1dIrUmaPkiS~^;UqhjJiF&yfy&jK7wjo`keMm6d+ah=at5Q5sgiUi~3uU~lq zvxdWq!9|fuZsbXJ*T0tw@ca~Z$kO5xbh@86rv6kBUV(G;1$4@glZuwm28OmZW}|aM zAZpKSlhcF}-QCTC{PPK1zGR_zsi?=x4V#=vPixQdJZJ%GM+*lJSJ_IS5Ea>e~ehzU#aHGrc{UoFw`dNJ|GC=Ec8z z;T-r)GIiq|)h@y>^5%7qT6f)!Wb&IlD>rwjpDyd z6-|2it1M%7>Z!|J$c7ZbNz+kcF_$zTXH*jCXIB96%PE^uhq&3xP-u>e)!cIA<5InU z0jp-6o^`eUQs#7Yhp;wx32*g0M^lxEPqnhLl8f#wx4yX$AmwPrL;e>AmDmM;K<4EY z0ZNN@@B3Q-+E)kPZ6pc&W9!zd(^CY35cI0hP4K{{@bM+$dnSer1&E;b2EYycwEph? zd=w>IMntgTJkFT~!U13$E;a{I4UtS-M$mhN5cemwjDB!n3=^%|=C4G zfzM#_&e8-C&!{lUo_;6`xc3JncM&~LhmNB7)j zVY#V_ndExVu`{#DmH+`>i>?q!dZO^_nFU0K)tkQqu(lQF*;kW?mq2LJ3hIK{#;(A@ zNpN4+87pH43=5iWbH|sNtmrv6AU}*bJfx2Y_0UU07@Jj?5Dq{ffYpaLsppv*7b;nJ zguE6po1mVD9Rak~F?H|HXvMP%2>7Y(%E;Um7QbEr2f|UTyn#`0sk1EbhKWz_Z9^e| z0m6tdK}6C1(PC3R+<)DX*t)1ekl@&&)1YGM{2&Zs);kRaP7NogWgbO7j?8k35%30XiJ)i%(<@4f5GVT(2cYN0Uq+70fuufKH4fnN{lgt z6I}0M8ifm2&m9oDWN|>jm}>WqKN^CqMg+DN6NSPJNt%jt6ogDOVnxdl233Yx3m0i{ z&qd~CXmBU+n(J*mdYqgjUPX#TsFaR!f@tf$*hUJirP4xLb_3P(Xl1Qt=2gIqTb(Y7 z3B%~b;7iKUZCIz}Wk@!)Ps7IeZak}jOQ8d7zt9*PNZ7Wqy;;1x%Mh0qzwA8~xcw6^ zClhdQkx}t~7X^TZp*{2fRgds6X0MowEKE^NdtlYl>vZ|kT_})4&VzFCAPK3WBGkLy zdNb`RkwX)>%3#pP=%=C}7AIZ}ee_A{M^^Qg`BabgTDRp?mjkV)S?6GyOLhb-V?kOq zF%DgyBkgq?&bxZ&Qm=Q24l|id_vcHk_!HiR)9D@b+o}FJbYO!rL=ktVUi#C|-{s5e}+_ zAU0*K$idu(`s^kYXTs+FAA+(NY&~uiLYQOrr9;>a^IO9RxTmx>X^$(K!u3fk8Hkw- zJ0++Ob7(E0Ib*<8gPezIu(XuDR)1`AKGOIC|Yb8 z=z!(xQB&F}sJukpfJjBE7chsUqzOXYG2Rvnjl2`NJywmpk4rh#$)M_J16R@CbI?V9 zdXS(gQq;6_zO2LREG-u`TaRNiHP zb2ZW!E9a+Nj0xru&MEg4l&5BKf{+d}d0LG;864cP7W^ZdZQ2VVF3%_sV&WZf&T?3_ zG={oNs1fLyv8iV`x|CT`WpOsWJzmVNTT}0~w+%Wm55M2NAwCMfLK=ttIU(6+m}Lk8 zJV){GG&MENvg-c>5~Bk?^tcKXFU?$7O!Ab(?4AB$TYnghp>Bk?E{~UgG_3AA78wL@ zX{8L*jPK1l8VG@M$RY@c#}uuduL8x>=N%8l{tGLB4-Eq?&`eg18NC^--DRAYkFA-l zG;J()A1Jll;(c>2hZ zk|43Q%mX_H!jhP-q#(J%mz-R=n4)UV|0Q)+j^qW`dy19`8u<^>cU}8Ix!v+jUGy{Dy1Jt2|K-|^7#`*%pIlI~e2xBrOJhioF>9mG? z9#JhLL-jqFMK!iZreRH6S+e*bFiQ+%bO)5CEX19NU@1|7qFwaMFgU6E#P~QMdxY?a z`*H>1EAMhc<5qUmhfP)>OxpZ6N5;z4A)$u2wNZ1;-1O9qZ(#%KphrEOp~{7W3(Y;w z#slzo!9OAI^ePb0rZMm+Y&p?&8wn6RXol8}>jL>qMt1yi#bI!8x8n%|jXSvT@;I8%&^tMIrayPi|>uqJnnro4@^ z>=W`?A9|ddz@kdT+f50gzCve){|rq*)*YwejTn{*HW*sFeP-Xk4N@~qFwwU8UFCA# zS~>Q3MmwN-d2L1i#C=)J1q;>R;E^mF8goQFd?7VnK8<|q-kQoL7364nGeP$d4(#tmGbxt1*xUag_J-ygmG8pK_ ztof>tgk`#Jhm!mb$)Fg$H#Zj^vq6sj6L47;1RYiu&}aO9GIEmMN0Ph+#-$3r;2oP7 ze{p#LcbX{b^u0P+T3R|>Zk;Uh+fUg!de#1aV}_8B9`Fsv8eIBH>bhoJ1mGAlE<*q~ zWRKL1#yA4GJ%F(;&&;ebN`h-A-@E?R%VjH*C*x#_Deq_f1JXUyB6Ezp_4PD0qEL-i z=w3Kp#JoDu2t(Tg)Wfo)lr{a34K=HJ6~e%*iBw)l1MgXI}3w!wSUTNERku%mF<~zu}ov|4RX!yeZ zwoU3YspLL_*qYkf*w}c69qm;XcL8pXlznj{W8>h?qxi$|Br1Xb-y$_eXoFjrx;GXs zFoAS$H>yUiW*Bd<85+T8U$V_Y{?B!oTUi~GT+4qwn?)qDP%0UV9h=?7f0wj~BWO+2WZDwNUi zT~Nm;I8~QXVA$D#I(($OUb(0B(bvoX>I-~vFH1Yl>aJ1TO5S4Y9G!Vm=Qo0*jhv}XitcvOcaxX) zy^>9Q+6n-&VKma^u?Ua@Z;|uK!q`9BwChykqiq%ifK%0I?|)LvX$-_#i;2|dq$`8N z>|gJ2-5Sma3aUwUja-Uy~C45Z@HX{iblAz3zHZyo`te9P8d2@K?F(b&j{lImDn zM@y%f9h@ervB{|jns9EJcYdC~;JNaPB)%oc?o4QV0q;v&&j0;|c_FtAL-R%po@<}m zKE0`1T|4k^2TCa5=|0J2ZIJ*QE-uO|D#-ab>$(lR*7yUvjJb`eoz9KQNJTp`x-lIg zM=NctsR74p9)o`QZG{XXy)>1S)W2RENO4hW31-H6EPINYrEU_(_W|snpzZ6vgWEaR zIlltn!?=+Mgil6}g}lrE>ki;|rmTO3{qpwm*> z{4$mY%+F*d_g+hz<_W8iG7**iwEpm1cn}NF!0f&DTI;Zpo;X-37)JFmYR=61(+_^y zZ3C2Z9NLAhUYGzWxfPvFHhCcB*S)^p5*z>_TFyTNd_aI(z(x?<`)U2yFZhl%HNNi; zZ1-dlzS|7L9DXV?u3lj0V0Ud7Lp{!33*7}EKTifp-|{(EAO4fi zE~K-dh{$W2CQcMhnM)oQTawlGYmZlq*uecdb|I)Afgi0&fD+S7`1?G zQ}C)~Fuc&5a(e}HVAeA2+M@Zcs%N8RUYScPp<-D9i%X&j>e7=7=_P7q*@0q&x;=tw zjsv@nf$XXvk>oBKUF`sHtpy@Aeh?zBl}|;id+98ynqe>Ki8om(Exh%aN2nI$zod72J3s7@;xO-lFUS$O1->m^s zm)O%?$d`sg^xh(Rco5? zH-GU3ErftfH_x|7Xo6{V{e()Ir!||>gDI}hrm{VqRj4JV{^dB_W9YYEeAw`*1<;6F zZwqw_bnx@{cXV~_ZNvqA1D9x?GH#nu74}+paq}fAvS``mUD=r1LLdNifKyT*vl~R0 zf5@7GuQbg-6fJ070A~WJBVsf(l2(uAi)8W5#@Rtcczrg4tO!^Sm<`XX{#CX057&QJ zTdjqt#uZMKqbNTJy|52&-$B4!URX(|lu5iT^QJz->ztT33a)Mfo)pcEjhN58B5bI) zn`yAd#!qkVmgZ(EwVz2}`~rx7fEa@#j{E1sxW`_Xt>5d*Vys5}jgIxW7LU&}B+v`LlYMeuX0d&N z*nu)7_AalZ8R?1eP4j{%YYakuO2|t>@F;Ooq=4VEqf{Yhdmj21ju@Ee)deca$)cMMx<%x%FnvUw97LG8-Kzp?|}~rcs`X@sp8qWy(~LB zS~{3!Vgwx|#aeK8S9Zh{P>rI*Hl>Djb0YvrYS$Thz63zxDYB2-f6sC6I&NsK?YPeF zojk^pkIjQ9CO8nF%6lFW?WiU(g;(HdgZ*9!fGOJxYmc4!7)5_~M&t~?4h{8iaX~K@ z6y!K#$pe&)Adu)FAiN5plW&e0;M5YiI=&M<1xJcZ$Q}ijS<%GG&3;IEW?I+&{1-`_ zO?_KeLvx4k{tnmnt+Qd3z=7QZY#_7bi&H*B9 zK{PHLKZ#cWj$DumZoWYOHW<4i<5UNpwdt6Ev`fb%rt0bOT;@WlXuiv=#{_j{fzYU* zq#d-^TjGF3$~22~FvhLjp>BDvLS2!N7|cwK9hl`%!KmkaryEni52Zmu2j5DhHU*Rh z-5i|^Bc(HE;B(L?Na(a?g=rjZi}v(~73QJ#+lV>@tuOKxp6LE|c zfscI!b9`L&`*JWbQvr=w@!qQxI=U3Zlpvkp z%YK~XG1CQ#P)Q$|YM7G?C%scwOV^6a2x_RO7 ze&WT}&F4eT;rM+3t|}W!eHQp5GW-8jOQWfnmC$J~<661C&Zy(YoxwsZVdnXAt_Lm{8?vNl5iOv>nuqFJ*E;wx7aixPnZ0LE=1PeM@b&QzW>9&$0}=v|FTVsl z&L&w|H($K6z$sO^uCTrRg=FxbAC^>axN{sd(4yRRX6R3={I0Tk)p{y7eU^||UtmO3 zVW2u(U&RwercJXY6(NZv)pIoEH&x|ANv)^N-O0$oaWu9w+@$sBT@2*W^SD@;&z;Iu zK}`;(GGH9G@h^&a2xglyJSK9+eE-h?&k)0U|6-iX7WjpGdR_pIa4ReG;LE$qi2}*c z^WSs%;+_Sv!8;;4;X44b-(@9y7!(6hJi)FRGRa`~p&#X)k*dU_D1E=I%f>7?fdG;) zeHd1|jLFKrug+A^Ol9@$&qbWQO}rYUQ{JMwJj6?v^rNR~g8FytYQERvtst2v5_45L zh*gwyKt*Mx^CG??gw-k88_IQVG1*wan?eB8vD*`c!G+qbbIt$}B2);mH8-m4WOEqw zh|dTC@l*U^#qxG zx}pvOQ|CDyqRhw@;Tw=uqj{l95sBUsxhb=mo0zyTITCrx+XfFH0R^-hnkK_8;2b)I zGGQD2+dRgU$9$H6rDfDA$Yr56aFDuJts{x?r3y_MFOXeTZ&pzv#?`$%hvDcdO75Cw zy;rdYNh=!+UJ%em%~$BGYkK8p}Fm%05ho9JJs18$)vr${dCbXde}Izlh- zqBR{6!XmZVk39+8AONjfYe4&!(J((XThA+;DZt|d+f%NRWsXY9nO8 z{VXokuDuo~u)OGWNj`D_9LwtkAcOWQ-{-(u$B<&N9;MH3^KceV{>)0$~Hf36sz z=UAbfLK_bHcD_>6;|&?8=%Xj)VY}3L_w1X(BaJ#Pu*DT4i_BwAkHar%=EMGTayI!8S-U|z`8 zBsz;v0w5B9aE>xU-9~b5b9RO}>~TSyb^s{fb+dYW2Sl%0@h=WnS62S*9)~|zJq$f0 zZ|3+6a*jUeplKL>00(TOCY=Buc0}P#x1PLEbj-L!TEpFhM-2B}>AG7DmT0MVQ?i~b z!HX(KQpG4B67j`{9;NH*5hw=ulJX+(q6}E(AQP{K1f>&u zFDNBJWkoyRIf_ig>NpeQu{GnfT3HPhkN zK58F}%B^go6l_K-Mpe>BOff=(gg)_r#N>rL>&?H@Cs;r(#3jq6Mv`ibX!7N0!agTa zlPDX=C1cB$#J(KU4HxC#;%?N8IGi}h3v#x(KB}n(s&ORL1ym!H33C~shRaSi@~Hql zO#&2PR&{aRP{&RvNHVLzw6(Rhw7ewPPNpg0%0AQ0gQq)Qul>d&jqijTr=qB#@N>wqozK!h@*SyalwbE2Y-`K$-sGp2kJHxZCx_pUdEJr$?WxRXks`V6` zH%$_S_||Fw4ZwU}_0;hmq~>}{1p>@UdKnitIJ0?_xNkeu2C0X)6Dh*ToYyBsgs)|= zB6I=m$IrTl-*w%8HXd6fWLt$@72p45=wlRIzE{f{1$RoM9^SBxVu+64`B=(}l~sVU z9)5ECyT3;qWXtLF$GAeFsB#A%Mr9WyS1y`YKX=TYj7=erX!E;|>?r12`Hy8;Yl;YL z7ziNk%fIke!@~bXc0MgClDL`}9Q>TVr3d9O^={oiujB#i~p8Q@Ksh2B9`0x|C zeYC9OaA|CQ^A2R@*j4D_%j9f^C%GN4AVuT%LBF&Y3#6?6A>?4Hm!+M9zd$z7$%izd zo_8Ji-bP%ig8Zy7q{Fatv>&~O9j2v)4cV`_LiqMWeA<8aBp?=Mjc*MFR9yrpM1|=R z%~|db$DnML8U-At7(L}rp-y{S=%if%OFCjaGdFo?L`skyQHz52eS1Zxr`26u{Ws6T zR>k@K7NB=*6>{ii1((@9Z(X~+zkEQ+{mOHW6&jSB?4!iaf}mgo;6>NgNXRJWmvaa? zBS;w9_5*0MQ&3~gI21az5qU9IJm~USD4Y89@kR8{DY$IUqpd(LO0z;%uj~KX za3K&Q_`=c9JNn-rS8o5z4l@#I($*km&9G2m=&eA0yAA_1QJJ-a-xE*_+t{1m0I~7u zC?#J!zE2)(V}3EA5;SOnHd}QLz*ErV&HwbG!J>pHLU*tz%=uxhB7Em8Sc8WLFx9OK%q^~O|!P8wCffg_dVxUrIHUs>Zb=XA%BMMpBZ;!-G5#DY$- z6*+<2845X0v{=~gW?Z}WwYyhedsA8VaUtr z4Enn==e97-`*QX}a~3Tmryl6?*e$o1A*GMTrCT$2{oQSr={bXHWkp1qzIm>HhT}&_ z)Oszlp|H|HQ9o>h9Hrj&ZMPV1MSjHEx|Lbop&MyTLc zn$GwhmlI2|WpFtuAkk3jY|5$9@p9F4>HBwg77(gHSOu&#Q{FW96eBAxd#CX&H+*^b z22OJBvo>4TY|9SD0xdVZc(^@XznZu-BTo@u3)(!sKRTXYn1645LP6-MMzC#h7IepO z{|lc(r=Z@W)qtDS6`|KW|G}r=G+Zhf#?Gq%8hbNzdnNcm9Gj{DB1}&_Bg%!8X$qvA zG-~KnNGClGsfTda42n$3{1lOZ|Nb}q`>lbQL+&27P4X36_g1!q0}>htZ|dyo8m57d z@ncQ7i^f2*`K@S)@fE=fe(DXjdeG`~JhIPkya=$;MJOo0zmRxAN-1brjVKB~^G>SP zXXt4Cw#JIcWs#`O)VOppfNG$d=P`#MCO5Zzb=r6RkNy2+6~7rct5sibz8AsXOeQTA z7C{A{4aJZ-dtnyD;zUH+>BfiWXA9Um27*UTv-DIR0Z=cmM(|zN=JyoG)0wot4=@%* z6P*`V|JHBM1N@JdLQnoBcHh)J_<1-Wg-1BIll7I%@jlE|0q+UcM<+`>bs=xA5yv+z zK`)ev^fm!SlX6OOg#2J&n?(aX$FMM$$n4UuE?@+0gaI@va>#z(cm&p-p?V;jC zN=%=AD7qa=9UZKkU0!mT;Te2*4&l6dx)XGnmEFWD_J@usneg3bwjJar z51rW&foIaQ)_;Q;IsmCGag2{mHWauhLLwb?9R- z$y45idG3`WCBc-s$%%4cB|T+Af#o?_eSA*``G(+m<6MKvZBnMSvv{3hl}$a8E$-$f zMp+e|mc{UDqndlVzModGA)4o0_rNPU=-`{`!-dzw#h-K~DgmqO_U?xpptGQ;9Yd2g zNj48C_(K1pvdfL+ZoiQLl64PhK={|-F~o@e|B#XIGHk-6^V=T{HnagGt|Aqcv{$R> zz2JidfMII16_soZ)OxJfaZEa3EX6d6Y4L>AUAe38eI&=`pMp1+hG#f}@51s(iWy_l zGLCgHv_+e~qh?m-fF)XJBnFZ!%>S>yp91FpbNb3ZI8(@|7C~bNDzL`jc;bigfUb7HJ^6T7;C55)e#UyrDcKkLqyQ`C zQ|-;|slfk-WqR}v`w#yZDs>7P-Iq^8moa>!&;B2D;e3A{QVRdDA?+Xq)bteZSA0HDaV^e^uX&wVGuMSjq%k z^!_#rhTsBq2p;ywHD~RX->JYti0_tOEHEJbxs0-SgM_&S`MQK2j$NIqX9d+-aT{_% zls(|W;;U~++sX+;dIaRttP8v&>4XVe{fkS_(HxYz&7C1+^3Yu6nEFTO5s>x#&;H8%Q+2Mx;a#qPNioQH7 zy}9>tj{$snH3<=1P~83{USuZ z#-2X5&(f=UwF|Jx=ZZK1Gy8vTa-lcp3+q8QhnH(NKl=RJI|C~ABBbEg{d8U(fk(Zu z_tqr{JVlv>!rZ(n1D?DuOV?%@nHe8x|I0DhzfM8O?#UdF3p0&fsz+Puc&tOtMeQcA zL17y?SL2`WUiRmukL%DYQ5$*oCSEO-j3NrK9XlzreY1&kXY;3y=gF0om*TGEh|-@5 zZMC~^wmHS}=0){=eSAo58llMV+S5~wh0spFot3uXVHG#mX);Cimk=# zJ}#(8@mwEAUp^}5vDvnGN{NA5;}~-?wt`~0BC&yP6?jHol95S}9yj2qhM@hqNa&Xh zTV=+LUY=~XL!=-2d6RQ+6a0LsC8*}&M>L5Zf7qS!9aY4I z0BhG$Hh$f#KkT-yg~5GoPueEK*JkmbmP`{u{12DT0VT%;plPkH<^eWAIMyu`78KA+ zKXAB6@7ZTL@Et79xQpFHhqW#P`y4F1o7%xWTxA#s4wt24l9p*k2_}_RDx^{0&mV*5 z`$IY*Z!WHDj=Xc&GK2^b#`P=ec> z5pY}+m-wRN;iqql?f1qq*h}>EcavUDBChwBl-b$FM*hcZvLdpVUVOcGGA!LcZo*sd zGKiSvUThvDaultYtcP47v#kOT=U%l30RGR2HV7xE6ta<6S=9A)E3AoA(XY8 zoOVLjPd$#)@fo^;Hzzu!TQ84SMWjVWX-?fW1m}G_@9=kx#Kg3%J_qd}F2CC8AZ76V zT6Dhl&+=Zbw9_3zhjlV}Q#W|WfezlDL?RMPJ0c-8i#%!xe8Legh% z;{V6=sXkTUVF*CaV^KgP0u!YQA~(zuMXWv&_ejZ!Yx*<#}QXsFk^@5gN2Fso7xF!AY$mxxBmw z7ajZ4GDL3y{0d)vNW5pAEe$KQyYcNl%mUN zaRK#y*6w>?e@gK0e}5S|FD_!~0>px&4Q%pCS(#yr-f3rc9;)cWYYWaVF}j1X^?YmI z>eXhsuCt6uR9+THVLGBXV5Om^80~n_>5rd%$DMZ*%eX4hFtzuqd@4^;Ga zot4(3OQ99{^Y{cK$ESz=K~$p*$V;nK=QCO7RcKV36Rw2flSpIA{9aH{6K+lYg=QTR zN7pYLu5|@2`>n)33;N#JpQ_{3ESh=K9a(%ixsJa3O-=(fX+-qZxXR?v zk+~UbN){??dYLBZYyEIPRP^TLAeW>VSZC^sk^vfVOPIgBwx&kai)SHTfCgpi*m&gW zXd`tcs6V-jvEZD1k&Y;I;gywD_)TYkRrvA08f1-0);`$;Iz-ksR!x?L>+QPTzJDhU%};@8 zqyO;^CZ*t_7a}1bo~ILX1gHro+A=x%OkSL?JWfd*b}iFGYZFJmsh&Y2H86HVdP@w% zaecbnvC3aX(_NOyh&lT@Q(9^tb0l{b}DJ;d+u6p6{ zQF{P``*SDKGqvVuinYmDV=wIig@==Ey8Zlp;NK27lUe(<0~jxZ|EW?P-AF|c`COA9 zf|+Bm=i*c8?+=`c?u+Gad)(^o&fdqrGa5nJVprh-r5^yU{<%732O?Z+*SeFDZY4(k1^@}US)Ys$eW|fbq1A}|GkMI=qfu9Tk4Axej)U{$v@c5XAes8 zQuW=l>V@BO;<^HFuV^7iz;rqQIC2oeS#Eo~p(k1OxK0P;u30QGjEp|K`{+tJ`0um5 zfq?-HDgl|h+)Ax+2GVAg8lUy9yP3?H(a}+R8PsKFtF2}6-l3ZqU5(1=#`V&4=Qbe1 zdaPlRr4=ct_-gXhB4BF2NHYAJA9`CtpzDvKo$Y6_w$a90z`AqyaKx{QaPyG#AFqm} zK0{3BNfS(k(F1PSq0|?hjlRe9R7$8^Z;-Q_>ot7NtV|DBVr3fucQExXK8=0#cy#m< zm_EwN!Z*J+lo__pVmeuA$TX=N9G%#^?wte@i>F8gtR9Bn-48{R$ickCy3bPty05M$ zYc1N=j)>z;6>rhg2cAqH*9Kv|(7LH* zN89nAX#E*@`{j}B-?ezETFcPi!$a=*#%|k;;NZLEmLQ~HR28*((NI$!q|{)3-yJpv z*{c~yF=!Zi7V^=cwsf9`TUqdfw8EnVd1?h%E#_$Cjl-2EdW)Br*93DeWM9O|mMQuq zuFtZrb#9ON8c5>S0W9dB5Po3A4gC<1ngP`OEoQ5YAJ;80;Z_Ql#@z@I2v`jD;&w_2 zSTHtOAba|&Y)E1=2H0%`6CN*t@r573Cp-QQ0;eUn|M%id(r@&k+{h6?&JvqM1-Q>% zTzt2Sf)6!}M;Mo_k`17h&wtsyV~_{|go|5I`bX-ho4!bPWpcumjnpT)s9qJdL#Y69w3R|?p?HqjkJujnGiTyB`i9$JX zIdNldLzziKVVv2BJkp%?mK(W{n|%0jk%ZsRk@Hh0VDNedl)bojYc;_>&BebJe3|WScSq z*!&m}Fg`gxq4`*O&GBN5iV7)V7h@be+yv)+$ zG;?7?LN@-S_tkY=LxbJmfX;-FrG@o6t3V4*lKI?yTIExD^#qj~ zQgE4l>7pyLdet+aX@-S$N&J-#FjzkR7Z2 z$9s+4x-1W)rhi>+G)A=}zOJo1%5KlvSRAZaVAaZP8XcdTZ@>E&2mO3(1$;#HC=Zpu z`qC%A7I%kWvnPa$B~3PujcWcqFa$r)u&QR26GT-V%i2wtdK2SDfH;N&+0a$|fVeWK z!Vxg1To`HF-xsXBy9wa%l`}dTs`;9@;yHPAkoIhTW_4!OaBj{JX*$eJu2uvR?!lI4 zlz8V&vg^6kS$WwvCM%OBpHWr7Z4gjpk0+CmpPMfmT6MiwS+$s>mjD+p&RMsRySb*D zd~uoVkqhOqx<*2ufV4*E%|`2y#nVuAev>A{OB`m$x%{5Q%y+~@sjjF@R=0{Qp= z33{cd4_Ik5xW9sG_o)AxXu8Hmq^JP9<~Fa-_vpkcM&}A)4J*!Kk2Z7NF|C!Y-QC@F zb#=O&XJ;4o!nr2AgOd7C{78n>A)JWGhR5HXWOVJ7sO4W2Ck@!yRQp0JnV%W72N&C! zV?2zj<^&KAmXLBWOuqyjL;kPB!_}pgrL`q)3g4(x??Dmfep{iT)aT}&ZO!D(W-2SG z2iRO%F+`DYK`jXV6RfZD!Hl8I%$Xv6>AiojU0TX_@t`~j%mZJa`A(c(h4AN}wBU)> z^koigOw7?W#aifiO{=3|YI=GM!gx@eFI|8C{(RpfuRinIsP*lhyO@!o<1wU(zUFxZ zw*6O0a(2S^>gHJqLrreT9rFcaf;j@lb2^};p^x(+{gqDF>$fHaYwOi5zQIDRsRMO7q(VRtA$m5s-&2|z4PnvN_s|D zyI4q7xVZPbgd!@&w0U26aJy06#7bW0*-sP-^>hKAj&>~j`B~vbzT|7?-@h7I?8?Z2 z{}yFZZq~q3^lQeCUqy+A8vCGElMVlUnS3hCh*goHKGfiL9*5xG5Q8uYPf&vn5ToTS z9?Mpo51q_FT#_++^qG{mw;LQ-x#r>P8!l0!MV=lPB2|O49*}R&lfPy^kZca3OixVs z8tc8mi*BaLj(d_PQTD~lh0NKfE;RZiG?q) zy{)}X)hx=ax>s#EQlb6YPq54C9R#@^mG^Z;tcZT9*KK+u?72j#WB*d7ng*LoP{J20 zM!vtAhoW)@a6!*e`MigyO`T^~Wci+|6anQL)NO@_MzJ{2)2w|8Q-UH#9lLbzgO$9g z8ice?XZL1+ts6j!8c^hGk6|%t#mFZrE4rAj{ef<~mccZ(8j}+_-#V<+YxX6IEMs{_ zq%^p{^AD|QLrzepu4U6dtA1Mj=`9eT)=utypK5bU=SW`ye-ZO1tF8 zeW}Q(HLjg|n(p%U@83k357#?+oBbON-|rhtP(O>>o4xmU#&Ag1nq)y_n2lSci~Nv3O38tB-!!-@TvYh@ zc$KO2KJ>dS#+GjLdHV5{T^A{JKuoq@cw9R#;unTuy@=yqwFmB$=aFK<_YVuQ3oZXi zD>Eb{FbUfypVrijUkX^Nv64skS(RTOJ?Zgp%KCGDe@D*3(q~*}!Id2_y;nYOHj;;J zt$0RxV%cI+H7_GqBF}7`kVjDQB-MyHOFPGBNHm5<1C8H>TkWRcBP%OWkS7CLapn^U z)|AK%@nZ6FR+d-9osu^rk0rMdbahcxOKbl3UTITU{k4K;oywL%z~uSa#T6^jO$#xpQ%-}?38G-Kc?YG ze8f&Ps5SWgTc}-YmXSc`r6YI#5#6uJ?UQ{sy0B3=Onuq=_Y{cL(^u}#lNo;2jVvbd zEPm50oL@L5_N>#f_x9XQv~h2npY?UV1*<8sOVc+sMOGazw?5qCYma<+*gF;Q{7A(R ze1i50IiA{(>O-j zbYWdLN6Y)wZdO6R(IGmMR3qVaYO~q2AQ0c^(f+>l<@F++xEJvgl9u2m*Fh5Tw^RQ#vU?H%CX0Zs8qHXjb* zcOt+6OSufnQelH|WBO^9#by2#)`bOD!i1i*AF|6Ea7{9=Nq{&}Frj7JsOEX7k_57^ zaqKS_Q}pj8;v9c>>t33bW21dDSLq_ihdWocLN!fIBB40W=lX<_t@P$1smUxb?p&GY z&#y9@j*G%i4{}wD4vvq3MgadY;0cvY8?-u^UgUGeD2O+$7aJZCv|GD&R=VCgE>l;(bpf@M&%R8w-o;8>%D-i z_qDv$q;}0!=jpCby$GdjuZg=p+O!JNNtmj7u9C zk>irn7ka1E*-0IEBef(b6;y%+p`Hmv+kb9Vtq~Z}EOzltqBG+5($+MS-JGBHtHlX^ zEl1N(@;eu^U2gZe;~Ap*rsz|6h`nyf{984=82KoDx*R3En;|^y|50=neocOD7#|^^ z)DWc`gdd@#bc~P=1q1{n1nKVXlosih5|9!Gj1K9Ph5@6yYrufL&-)kb^ErFYIrq7* z>;7K$2}apQpVA+BW~P|m0v)cyEDB!L7dZI(->hrQ;*-B!UA^dwR7f|Cc)xUmO(VAE zVCUfHb#*>DIius9KOsh?!je>gBQMupYV(>nY?pe#D;G5>=J-kekp4atA?kDZ%M9+D zhj;IC+nS?wLb7;dT#wv2Dg!f~-0sf+OfSyx+?By-0F0f;2m<=uG30Mr@6Uk**|W2L zI(Ua8kWKz5b9*8!UHq|F(=7Ysg$li4Yqq*&PZxzUhiQ~wJML56R9#!BPeHzLGWLAh zV8Fv!aBaI0LmZyUjQp@xgzV52R0picO2D7;{t9B1;bO<=)j}S>@+u0_|6pa%T9Zyz z*w<7*y68|7c|-@pgEZLFECrsve<`0pPjP(YiY2Hu6Js9br!n+mbM}Wd_7x7#)IbqQ zQDb{L-wmJ_*u`_;y}!c?izp5@Wstom0nrTm>~8YPx%vc{`r4K*SdEP=HJ`L=oym;| z#Q7|zXolP438@rE*FLQq7S4*0;1igI!|Uo>-M01*XZJ_#8n}~=WP7x~VU}f%k_B_5 zc#v)He9<{R2D)j zejDdoDx;~WUFL-QzPXOv(H*b@I@@?ag0cM|Z8#9*bvg;5I<-c_ypU*f2OkMstT z-15Id^qHRZVFz2y(KgKa{9t;<{Y_>HE2lT2WlAPdfWddOeZwqLoi;DChR_zKhceC$ zbhYhq*UZrV1GYM{ug2A+4mV=X(izpPsr9++T;o?@b$gG6cy}Je$dlzv{V9JbLgzap zsK=b??5}@6DQkydn-%u)()s=5{vu$%{o>)Lm10O-w`a$iVPvQ;=JB_V7A5!&8av;9 zHYihtT)ey-y)7=8Q+(M+LRgkW(OlI6ZFg|Gxs$rN15V6lfev`e<4c>z{v)x^4v!LEa=-2QebD?S_y4u+kE8YL z#eIFg9B}~uI%>dAZ`5i9Cn7iGTy|N`HRMai(UVEE)9I5u7-9$2UM zTZIu^gu|YM@h9Ds5=YT^;J5wuI`4bUBqqd@$tVnGQc98y@Ks<)f?LT_IE$pR?^&&$kgN`Z zNM5sI>pJ9M62Aq7*e@XS#6=Uw``#D@y8Ao=Ytw~=OT+d?*s(z$=H^k;cybg&E-2XO zl5t5}BfPn%y*;uwwU9f~vQs@Wu6^;K)g7JDum)2bzsU8wRsl5j>7Bk2l=zm}bhY<$0vW=WdnolB(S?70H^7djwcc4# zOm2VcTA{~9L~yz7$f=iOOGF^}`F~2!cQ_f^~-a_vO#J z#T@;crZ2x(*YFJ};uoY_j5rD!ykCy@g(fSop8HEoB4Ik&0@lU#llcV0a=`pqbN&ofeKgq=ObnW`@ zO~6(ezh!*f&pF7e!o;5varlW49+Gh@M6nL7c0NhCb-a44GiSSz{hN`IADlCGth5?` zIXK1ias4G=>EMcr1Fhs_`q96Ulsr8=$T*tB*FLvbF}gpN(TM`c6H$IY z*;`-*8J~VsTIuK@Tq6BDFa#T#eNIn1EaAETz8kE{j`LU1mVw1Qn|~}Se6OQQ zbhc_P$4IoPf|}O-31}1WRXQ%u8wJ>Btsv~a@X;nqPyE8b&UPhn)mHHy#hMvb@x6*#3IDSvWOhB$#q;vc_P8V446Ayk&l3+4%pC zx9>nd1vBi!UqM#$1ud%|kHqTc*f(C`V~RZ6Ol7DHIZriS)ZB9SwY{o6>y|=SB6ijK zARKm)mD9@z0nunyIRVu^%6gkcPpEw8g*o35r~lSa%3vrexwdHUug8Ae%F4>Wq@;`m zSVoqRMvlnnwLW?oi#feS1mc>n6@a`pESEUA`6ok_HSOTwNW$r~^XA5@AW_IuN!bgI(E+@9AYD(K#z1WPac==muTHE*qc|CSJ16D&QG@B%?JXQ84uj5M*TjUVr z^LKso?~Nam)?U~COJAtc$*d~k;uu#3X@a{uPB1!S7$(MRuGmb#7d3_j!0**9q5sK9>-( z&ghX?_$T9NEJ&#Wh|k7|bc(!rSI5FY_rjImI^|)ad1`Tl#bg%T7&uF- z@n(p%@xWe}o#6?6U84xACy4pE#s#x$|vG{xHSH3Z^jghrufiB>l zTuHJ@URhkMn%OVY=A%o%?*h#J`1o_x#*S~ZZvEsbT0hu^97HU$fIsQkO!lG~+|4Ir#)aHq-9bXY6ULk3Ha?Wq}E?LrxMJ zkns1}$G}S#(#C1CXb69>FpLrQQ6O@%so(bRDHpn@?|o3ojFO{v#tQ-mQDRWJQbVI3 za7*H8iOg$&?gcO!Q%ehX*}rNYGRH;TO-2LN!`{DtAI2OistPR%KU8U_e2*}th{#a> z`xQ(P!OO>&J!pQMWd7KXPr_&-PIq!};{HXaw!P-!@mfn##4k?oNPjuT<@`yfgLd)T)d#GH2icw; z;0QI+|3pVgIcEOnN*}6eYcW|Sn;a?GW!vgD{Pdv410SSxqWq&J; zP>4t#j5SdOH4r+;Edg}P4{723Z(I>DLpc+gCeV8jb|-{1C`9n8G>-E44oN}`&637C zTFj7$kW@93dm9RZ=yO-U+$d9Z)Tp-pgkoc>{+wl$oG;3yhZqH+U!{p}Qk*?>lU zQtlc4JdCiLQC{xZTeD4)1_-H%uw1o-lz^yyBr~Yx(}P30l;K)V4(3nTWt27`$Y+Ud z;Kqxk4k{wAw@`Pkwg( z%tV4|y{Kn=v1C!uD3qhj*it(BXrGJ*;#{PNb+=+Z`6EN*B)P3WFD{g6a}*8M(wfKC zmmeP91n|^4t^)zsB3@4AnjC5x2)z5w23iLS5J*4iM79DW7oPmR+;kWN8(&>hq`$ z`|@dfttYadt*?}bUXY8ovHpGeEa9;Hs$!>N!6oA<`{~;!K~zc1PeZOvI5FkI^A{C; zir|WJMZp5#@L(?k^1??w&>EGQ>AA5iH4%f1T0Y(nrakKgnXSU>4~>u(z!56#HE_+C zAIc(cDvtG~fIKE2fL60kh<+hvXlQW=TTm!AwfAMqP%hOft6{{o?3nN3dP21H|$`Rgl#`^ zk=BkQnZvMRD)r#K1>9TYEZxNvOgrLsjW{4>_VEj)zAAmjo zniybJ-a@qGz7L;s@O9n2TeG(zUlc|VQxOW~jb@dQEJDV-jUCbRH}kXCvt#PK;$^d< z*>LzAqWTA5Tp|9U6XG1fg)P;CR4y)YT>3pn9WG<)<@Fbj_LndG2Hltl+$g%-pWjn3 z+Q?PCRV;owK&%bk1qztqEsTMN*zV3mnNa?&@aX?QUlo3MAr8 z7pzC*`ecofihj?zp`rl&2YNbDnYeaM(*CqCE$VM#_j?f<+ycB8SfilsLuTgAiJ1wK z9}4p;MR-`iAPEBx15u}`=aRbsk}mNbJhG${UwA{O`(J)=6z?X%y7R%rCI%J|&DE?) zh37Xur;Gtvszu@6%?Sy5cz7(X`E6eD_X!C#I2giyLg{FzI4)mMm`yMI`}weU(kp-Z z|9j%OB0ILOvQQ>r*^gO$+oSmg(_))b_e-ss9DiwKXVNr{+FZQt?O*4p(@MIq&?QXK z3GJLD`4!xEsKV-WOe2>S7I_G!1Td^DE&HzwA&@aVX)FvG@PItDFPI>ipX6$pXta>k zF4VKY1U~vCqEjYxb{pkZ6%NsY)5qJbIIK?ir%*Mcnd6FrSQ5i_vDX*~_T7e`fLQSQ zKfM!_YSqSD^9b(5z<^+}Gc6Oz%V@_iGyNn&V`(~64nb8}HiA@bw{9JvI@Qye*=LUh z1(WJuy}za~D*W{+G;*8{{x5Hskchad>bLgLR~+!D*sJ-K#oTre!unisFQ+elA^b!i z;_L9;?S^+Qmrgza&#AzS^ADu+w@SZ)xN?-ppLwg*L!lqpb$<$q+4s!57>vp@pZkiS zcMDD%un>cRy$!faUw2!yoY!XF&rz4D5ij}vvnNFVGOl6s_cYiqKyiptMYQ}w+vh$5 z1?dC~14+&$>{uNuR)^Zat1RkXs6Y%tU0$|gr0)J3brz| z{|ppH7kbc4F4+V`BIgco(E&g%FE06`her6^JP_q(32b2W$HAOA9l_*`B_Vc-)RfUw#@!lkiCXty>4#YxOB$La4 z`P^EgAtZtXYtH@PN~dm1r7T*&>UGMPg-d@tE$7R|(rRNe8ruGUnH(wKc6`gUC!K!- z50y?N_=B~CREN`A_q(#KJ$}o+K6x>}-Zlc5x;`P=!4U(vMyr*N3D`fSJ^=9u09DAC z1I8oO(bmTP6@(qj%b=;x^mDa)^~)T{lhV9sIgM6ul-6$V_?<}_BYOVDT<($!-kx)3 z3wY!Beof{x+u#9&o%pDtFFG;K@#CXeivkpw9I|zf8Z%YBcD5%R}zuXi6q_bGPjt+9}O2qGqez8FjZ?rf{3Jzw) zmW#{pVN&l~l=qvnI`JNrlDI8AB4*&}qhMm*8o!>nP|NpN3<%dm+ zx-}QN*@>kU@wxB9rN;!@+EUNh6l*V*X_w_j@^i$zKZE2_e z1PG+3u#h+#=IG#j25|HBZN~t%YNgtgu+OGm+lsjF^&u|3AwkIM-@#6CJ zgMTt`?vtmqd~G^r@^r5hdo0D_Q9WA?MJB|@HpR(9HH{1mGV=1+!o0W~p0#Y<<<7=N zPdt;)oV^{wdyk=v{p1&%z4P;7W^>VjtlOJV=0E>wMA=)_gg%$Mdk)2kYQ9!j`Ac`o zH-b5l+cI@U=Qw9t8F(|45mYh-N)wVtgLq-X)iP!C$JO zN^tGxb+*1f`5eSU*8KAQz>b1Ke`;zfU_kkDcGD%Rm1=fiwLjZ0)!Z?RAqA{3%KZu)2Vx<%AYd^s)bhCk0SxM1d+ovn~{=kuEhPK z;80^R%H!Y3bp*&4y}B``LjT~uqxjFXndoJ}v#kS*k1cO@YwVO{6^qQ;!9^0!btP2i#o5K%M4U<`rT5S3oB6fYuF=1+2B5?U4Em=(a4LJoFk8q8l5nvU ze-&S64k0N>Fd5l3gLfK!oV;B&A%72=?V<%gg^<>CCHVuG7Yb`1WR52grR~xOe#(%d zOe^NWl{K6;EVjd)%}uUSG+jEpiT*73`2RBeKhu)Ih9hqOy)p%Q@995>=jykWjR^fu zpI%?Sz`=xvXQ0nv|f40uHJlIz0Jjc*M7w`N@9Y+fdkdQ3A=F{zQ1o$zOKmlJ=R^!j`vhsPe_DbIPz zjD8mhA4QwhXEDgJM~#`EfL9L;%TtX;E7DR37`XVhRdLT3yN3>R9hS0lvW(N&v_E{3 zbb*k$U}2ku@P@huug=d#Yq1dnerDJ0J|M~)SY8s|zAwC}&Mx3h=pSdX0m!>Bmn$ld zVu}+dA<3Q`lzR$yruRM5bCGxgF@iMsF4JX9R=i=sX{BSJt*x)GyXyw9)a(upStUus zFLhGMjl7Q3hX3T=O%^({;b4R8l{LaFmOYLWTAm-?*BP`;y<_N<2%L$V3GBuwob$cI zi2R_OH45jI%4|*j{qa2qna3-6P^E68%9MfFSB9j}PqXp|F-E zu`b@YHlfv@28eEM;KM!(SR*cg1R3y62z4y4EM8wYW0Q4;6tekt_Z#y>Fk4>WBOCgx zG5CCT9?O61FF^&y8CVA z=T#M7m=E}vwV+~Yd&f`onISGg=W=0qlBAib7{f$nNJ+V_A`V^&$8vlH1WU$aC3cD zEgqb-&7HU6j%B}j@dt!W5R4~{0Wz_y!FAWgcy0xXBH+fvuy+7ZR*sfa3oGq(rY;Q6 z*uz@*vEgST5w;A6tHs?S^jzKA)pcXG(jYBGI`KKN-X)X!HQO7BQk*|;CR9E@mfJ@K@TA=?tU{rxY0X0*>|@%H1zXiwrV-M zOo$4ZBgres*G-AVzyvdBA!mgDGwg`RAR;D$XqLOw3JCdcXjZx-WRV(l3*+5_j~{Lj z(GAMLBye8kApl+Us^TE-hO7H5ebh|q3 zXZ5WokEm!x(kFa?X9OI6O9I(cO)vSHjsvZm;s%EZ}3nyzI+_SGyhwJ9B=u0pI;f(mUYih@;PejgI63S)+OP zH~rOl5?SM0?YEVVw36aqKehB2VN!Cv=K9>~wKkN(8KZ))xerukH^=}q(skjG+iA=L zCh||c>}C#u0+id1w84^Gul=&#eey--#@rK?qB-utZ<|$`!k1X1RhYA*)^zj{4Z28be;vA>8vN9-3-k-1Jt;v<}aHE+*v(P{{qA&SZ}oh}6_5;|WFo zoHilfgGjLF*|AKbV5%1N)!ZlPIwSH@ki{vRj?q`&JifoVsY>46W!P+Scvr*|8-7h$ zU({LH$)=Q_!m7kK(XIh9j3V-*czdWzRsV(NnZLgRQmBMnNOjC|XS?ci8(=X`;3e^R zyz>IWyWTrdP*OcUARc-Oy4J{zZU$RU+UuH{E`h#Ao~ZjdFl!Vgc5MJ8R(8j5>)1f6 z{T~k6!o?HrG9Ox9U>^^J@k6VPW;FB=k>l-ZguTK7VcQM=@^ENQV!?9E|`Vl47`!h=4c6pC{ z`qtCk{>t(3I`X9TfoS7!qCi$5f#%@kq*2vQyTZVhnv=6my29HFeUmZ8rkSBSA4LzJ zsc)eZ=YvFv9x;Kyx8=~LLaa`}`EJ*B$ zs4(!}S`kX;OAy!NFdd=vagw{aGdr6@jC0_U*%>4VkO3NO$(oi zFJc$2wv2-KB z)`W_dbseT4A|!Ym^9+E4w_$U}9YDPgesD6sY^xGs#$|9v#)1IFiXy5bBDsIwBJ z?j{Cy@fyTTF)<^wBteUzyrQ2Uk}{Z95F16mJCTY{SYGiGlu5K)r|e#H#?k;S?13+y z=x=!SGDkLuIq7L%Qj(PKleSL+RBXcydB&t|O$d5o2>KJlLc89wt3}J*w-;(<#SOcc zS(5KOo>vE)LaU|VQ*-_A|8CTp^9@S&4$w~V5Yvjz&&?qh7v{!t#XOJhF8B9`xymjijn<7l;%8v-lUx0&YQnc{ z=>eO8yI9<3%hoi9{?D(EmVx-6$5qDwr{hDIjK-Q6;&!xsWd)+lG^ro?+qEx|7bhy) z75-;?XB&N!fYvRZM&C$1=F$7?GTw*x$sE-(Ug;l|a(7&It8k|(ivb(6rrOcVTsZHf zmTUNro_%S(sFdyQYA}C4F`cN@LhbIe9;1iP{R_P(5VL_FWvS37&b1@&hb;roy9|}6S$?~5IJhv6J@_#SN%HdY325)`jqmtQEf}`EMCP0@ zVpt*ajMGsIw$*KckD=>h>W+>l(`%v5{Y^ew`$KmY1=VO<Ju9m~JOAr-oB&|@@VeteD-&c6!8#=wsP}RjT(R5^BlViU}G5h z-2PwHRUX%1B|S6$^L|(9)dtK^9i;t@8ajEmxjXTI%o#+!pdjAy-f!4D+1&09e3>{a zH)&s>$&?D}6SG0MCx{+}SRtuxwA@I71gxG;PPJF~JuT`vUQLldm>n5Cnz?Oa#KBe2 zJWKy7qO-J?`Z9tb)_F6eeo`3&{GGKjWin`>X_Y{5PUrD3yb)nsE*R?-_q_=Ex={_| zm%o7tYX%i1g{a^CG~m5K-Ql0<$>41i+WX+))w52HTA2Cx+#SMP)2dZf!u|bWhN7@q zsE#d8nd)}50v-CCfBf(B+JyNCW6u+JUCD}bg_H04%|^qX6644prAJ;|bO~7{U3$XC zZ(T^8k)M$+_h?GFI!25w(V8EImhhlleiHB7-B7_>=yPgnu zzA>D}{UpHY{^sn&4`qN$r2Z+@n>z2Z@N!av9lP1c)~MYLfa4qG=4BBU(Z}>=>rF=Y zZw%`3k?e?`?q7u!5TE3wi+V96kMo*>t<~^AcF4U*d9kpoXkI#p!+IfDW7aJeUTAPl zt&`qo3c~wyiI-k121O~FqIe-T#eZ6x#Ovxu6yuNN3bc(K~Blqlz^B9FVM3?hEJ ztyw66j7q3JDTx(Ge&Bs*ySwW(w^7^utSA>7v6-JSfp|fd;#N8b+tN2mJNzHcY=Ytw zQhc?6=61qaC(<~zavaIZtjUzg_z_@^j_<*&M-7>c4x??S=bZffLW$CRDFOuiiGMmu z(LwbhFm&al! zBje-VRWSqgCK09!4V0c-L_^pajX79mg{abNBr%c86eg4W^cYJ7?z7?Gq<7^SpnS0* zg!3)))()6M3d|cHwCVjv$K60pQ_@T{QMybMzBK>)g{Lqu7O;@4)@vVH2v(nT`ocvc zI_j(X96z2B2Q##7oY zRQ7tglR?v7M11{JEBDRyjWl1xo*jV2^Yrri;^)>{-6)l#s+VeVl!+Kp-#g!`aBP2= z?OvCe(i(JQdKp7VKtz`#>T$XnoGYWAF26e(j!z}ln{3arwd3p5p?@o~6!2d8@dUk( z@H;_CDb6Qqun`cc&FPLrm*N8uU2*sAM`kVD^M!gwFWuHlTW`-}R{aB=imNfWBl;-e z(Zk9d(XR07_f?hiTgcBa$9g(N-p zr^|p&B5{1ISUj`v#(zB-zW}Lsyv-G0sdu?@hVX*+kB+1O#%DpOR$CiZwDyqTJH>1V z%eQ4yZ#U=E19H=it#8@T*9i1&9y;8tt9|WJwfnv3FYSFXcSO|J=L;)IXM>jQm(y#q zsLIc~TXW~fOKRO&WY}G!Swex=b$O$sV?gTQIP!_5DqeprVUGYoDDRsvCp%vg6B92l zMbg)AxIV-F&-3mjjYiQop$FM=sc5J=m+8KDc!?{4R(%7!EiK*Mtt|i*$-=|cwW3~& z=*M~Scu-=9A)n;ZoF`&%gKeB*6&REo=4k}W&9(;dYgp9#LAU)@UHJ` zW%-h5emqV**m|OqVgoaY@z)-89XgNR(1&zvU>aL?lVieY`O1H+OF%WtR$Wr7eRcrC z4+-7Zsfk}9b9|X%V5!_^Z|h~gIx)SLjFj-&T`e#ajR5_^sw~i{_}n3a9P@P?A6@$I z=mo~aAG2`3052!EFJBOkSb%DVOVdx(zxC)}cdr_p+wvB*6L?LoTWthZ-TCejD4FZh zL_c67>u@4q`&!)VKKSJEB9Jd}91%|Le!?mxRqS?bP_fYDbG2Bxu<*rM3=b1q9+(F( zvog@Bo6$$i1Kd`L@b1mW!K8m{kfA+WV3_q{>wFC0K&Jtt-t8!Qr!PeHJFWqJuT92t zSSF)DnNjtVqIlYsv-9jnzpGw5+B+Qo7_NfbK{Hc;M6+_~iN!|8T~1>kKNqy*l)%sD zsQ-xm9qqP{9_+1O%7OE>XL63N!ZRlOG*^|UHrt=s4XgK)IOvWd8BH)&_`Nh?QO4I8J9?f_{nyLCz)wIE4sSY13d=(9cv@<%r5<+I58{}) zc)P)rU+FHyDkd>4`dgX@wYt& z%F2$v9b0eC6UOrb9nJh-r~ScojdojtRC;p6ZN*V7-Ui+W-jWjoZnQug%Xp@XG6xvV&IDW54=j@IdL` zyDO-WgM-2eJG_K9Nt2>(W-_4YJvLp0J6qge&_;;q4r`4Sh1D-~EHh*`os?hXKl$KF zTlE?{fmuEOPeOtON3Uo$CTf$7ABJ=j=q0{KiTtZ$Wdb#B8D+KKO_3Y52DnE2INW0g zUbOmcD^>z`cer`}+bY0VGn6*c--Ua^_d|fXgA_)RPRjZ9Ek5~J`(xkzQucX;GrWdN zb|_yTA9J+>t$;qvGDes4#QN$C!nv;vbAJRAnEP(VvZ@7H8IX~$GslVkM3>clHmNtB za1bL5OEmCs-R{k6ce=W(-}u`nuRu(b?Ph1$qSqYo(6_#>DNg2l`pBOkez&{3n?4_x zB02WtJrJQ)$P6r!`l6%_G#a};}v5;Y4z%|b-I=L02KDem67_PvNt!;fbl=kZ* zV;c4D0ZBF%ASz5MAJn|+kbjn<#2?`yZqMf0St#us>k6glG zcxQTx}^A!^@msrLLfHyN38d#)Q`=H(Q`?6LTq^xt;htO~#!+K1_eK(3J2#Ds)6 zMm0@MEMIwedCzXl5^}`d7aJ#S$A2f;DK`gVs{ET=t zQB*TAhfYB6c8Iy(y&$JaS{C#Fz_jtp9c2K*L?DZ`XKdWf%=}&b3-v2}bMd2!psb@! z6ub246!g@T)X++a@unmCL+KIOZ;QFFi7_x#igPZ2Zo=Kd9N;mSD%+f%UQ7CC+UMl$ zeRaOYX#j`sX`h#|{U7g8`b^@B1|s_+o$%G+9|*o*Ilt!Denx zM8c4ydAW$|ibm4EvClvy!x;OX1mjG~;mL7v(LWEt5B|`_hY8}t8PLY&b&*@|eBu?+ z;&9@Z{!3M?*+y?HsgNz;!ZXklJ^x>f4gJrz2s=Sz|DzN@r3mn?Senujc0SbOOEEO~ z)W++oQoedwHU*qLTY&wqXB9ahiWWFO8wym2E0#cmKuHHs!5D*zieYLM&MSR2z3X5s z+=M(~2PzLs+#|`ooU!^HL+oW*#EFN{9&@#njN-xtuBiFC5~V;^oKM>ac3mMMA#yUZ z+1a_wQJuPlUpf`JJ3dB`B7z=p2zALQ5Q<^RztB(bdpO9Jr&^+Ugnw*!cXR}VFG9_P zjcm;9ua-R#VnB1ppjgvUV|-0k>jBGObI+iz@r`k_cGYYI&RyQ)! zX4tD&vOH@1s+(?}$!)_J!BGNxR+F+nkn#6I*z+oc`|S$!IWn*ov#?gJ;vcLsn8igq zZ}+d{y-OQvYMd^%NA~aZ+jMLNG67O0qp&)lTV7pWv#!^=iEaoJVNTmXbCkdOySv-k zR%|t&$*psa``^M5j~09>$9|htyQsp+>+e5t$Uig~D#PlVZtCU&t{;8LqfFe)Z%(JR z5s>NwpESuEtHRM)+o?HuxR@*r%zpConaxK>-42oo6lNIohfP65U-2m zpMaW;0uA1OP%|J^`=9}>v8DXH>X{e&(*!%z00(@I3~}`eN3D>c~$4!D=Kp= zDrSChV!oiMpAAVSzaipt$c*-yR4SrWarEKYxbn3al6k(Ovy|tXKX*S?_L$_SNorH6 z#8H`oLkLODapIF0c!EJ<#quo6)pk0FCS&xFMP+_~5F0~(SpQv%dyvz!CXA>xamVVd zhZCvh8+1UzdMMj^Ey266twaSyIpE=Bot3mNFFF54b-~DjLYgU?Q5NJdOZFwJx^%`T zb`YhJa~~Rbst|5Sr`V|F(+Q3?0YnPR>elPNEXUcbD>tUwk+eK9are`q;^FEXiI&eC z@d@#gsLQ&3jcnCoEu=XYx@tD1A6HVXJH zex{4A0{iLnZ?Ka9zAI-j3nNs&(xswyX33a#Y^*xUTe4H<2e!rW!irhmNNKD)w6{&6#vc%2?6+gKB>l28piur9+Us-;70@-IcU5bNl z-QK3Sz%o@!@=*I}d47i<#*vK;sSPm((vU%Oafhr?c{4Nbtx4$KR?0_>Cu%wq>Q&}n zIe5q@um%XQux1vye)aa$4y`@T>z3T%@(Wr|Dsz<8r>aKjHRKrx1|3e5MBF}s1gkRe z)!5~#7VrcMCzj}ZY%JFw7F;9-6{Red%|6lxN?r(6==?<2SobO>vv%{0Vqkak&_=qh zIFKmYw>DI$1d8#~f3N9z`VK_Z>SMQK)8GM{`wcKXND;S3h&VV625)9O`1OQEo%dSz zt*(*J)^??VI@k57EV1O-G->-z$HOd~oZHAsAQP8JHQ>Miks)4VjOSd9X#~pqS$^WM zqKNz0m+*Lh+}~B@SWrj-@}=2|KT)^GYk9z2BxL!y>1s*LM4J+-$X+o6cu6ao<3{74 zDdEL{oo4jv3sm10R@t;ckU&J2o}Df3L4Ytr5^ahDsHi+wL^ep+Hiba zJe;=_5uL}NZwyZi-obsmqUM(hSSzhM@IQbffX63{ngaoS_W|yfs9FA@`sDBj;MB;` z^bQDk1mregxW3Y**yU_Jaz_8)=FAKzmfIx!vlIl=$jF5n1u+`Z2>$^6$nrUVq^8GgZ(Iu$F6`iRLe ztWYe8TXU%XX9ENfJ9vRl-K**BZSCq^2c6|9rxT3T%jd6}AO9`Bf%BY0Y4T%yayHHI zoIZ5ULS>w8e@|&Kn->zDNm+|6RJq${GDqH*_*9NA_558U;Zr;cOCRoTDl(E$$6I;_ zj$`x0XeVLo`io>7>^EN6yzXQ=3XUzd@kvZCg1gJjvE{z**kq7S+SkrrhF_2aMX0Fj zcGD`&wdA(mi1+SVBw(yr@jHmCtL`{E=d1>ZZ2lWrh?}_Thdv;9$T;x9a!R-Q@x&H= zPHl|dHq#K_o>!l{>uB8E;0m0(^58t`4~%e-%U5YU@$d<%5iu0b`Iv0c@`UYgB6Q7d z*GOn$tSVxYgK6tdx^4mBa{>RKx3jmisj0iSx0!#>RaR{}zp!vKka%7D?`$n;Z6%kk z-}$GuIw}y4UsG9VX}kOIKBYnzz&7^~OZ?z|0oJoFy$q$l?-cl(fuh&@WQf{Rk@{p{ z;JaVO{Q$Id0^X$U{q%DCLF-1*zQT$ z*8EN+Fc#~zKGB6`wm~Yx^MBXE_Vuhs@t+MJIy3Pcb++|0JuWhwdd8wY5nK=>fhk@O z&(F44#+__NOdd?gL;-9DTVG4K{u!8j$1;s9ZE~-El1E64J9IXQ88qpNI%`lmH08fQ^%VWd)%_^)C$*d7h&Go?~B3KdfOZ@GjQ~;W2=%54QW=nIYbH4 zx1*=&@4M(N_>{tqKSx1zg`Y_Ch>0OXPXbRCp?mF*kAMhyJP{nKT;aJAuru0-_&rw+ z*q^2wJI(+tamrchnEh7ZrG;18T;6G}L!X!V!?o}pC`kVaym)eG=+6#nV5EkEj)cH8 zJvBqUWTQ6Snrf}^WYG%`1f2viq!^cJTWph&?~u<5&Z-y~KwaM91Y2iDmJrbiyP2Rj zHz8;faT1}h1@)CO4|kUzqZo3PKMr8MmFu&!79-9P5fOI%jF@8?Cn(@BXbQlof*G+$xw=S( z>h<;2_4Reh_orR3St?548|ssJDQ&0wv9W(KY%j8ANIZKWywgLu7|0A9{fa`NLLk7z z-%=CoyiRCEC)T#+;5oG@`zRgduoXXDzM6%+s|tUl(r9AjKQFz%2_R)0oJhM#ssW@@ zNS%;wm0bfJJa1jb%7NKzy3L;%tB>Rf6R{(05@xK73m($EFBm^jTH6!?%GVX-;6~Wp zTt~5UF|q7n5sN+Hm6ID=?7IJ~s$s=*onEsWJMHi}Xz-u1zr@Oaug6BmmYd!0M#|oF zT8t;D_K3T!cA`%a=)8dYeQpM8~aaR~wO%WjQ;^T`-);05{^ zDs|t}Rj@V@w5(;&Nt+_&qA%r=;TZ~Q`I>-iuh?qA#e-sj6>UE{LRWkaa_ApVQNbs# z)}Qt_z<3gQ9Yo_v4-WQdX(;xO*v(xs^p-rn#Is|YaUJGP*+IX-dx1cJj0}T=ii%30 z%j9ClYw72=zB=9YfJ;O~L?9d=4xWujB2xLgxJ^gt62;dae3Hhw1q{e?q^_U+eH_Gk zX!9?zXZp$H^0``%%fa3;$M6>1S~9o z0iWsBRR~9l(pSD(ub&fBTGg{dDavg|#`=1{bcSSQd(6xV8;-&NZZlUz9xvCoy(0Xl z6rgZ0hKqT286@S~t4j9*HhPV|;Vm1ek-hTl^QQ^KUKV2-*EXDm8O0QHodPb{kO{m2 zLYssMf~$-q9R`VrSiI+C+4II$nl&|_#l#a2)x-w8tj>DaC8DB6K<1)$bTm-3B{pNE zMq~hmQ*gxRxEvB5e2eimbEvNDSo}nyZGHY zc}at8<^&|r62aCYksS`+)~W0jE=NTAqtpJb_K4s~N&SExYZ@vC@sJbkPl`aTAdSUP z`T*wPE~AuN~QePK!WxE4OEFHq(eeLx@+j}P*S?3K^YKX zXl4j$q@{c4?(Y1~#~=Q2T`-(|o@ec~?q%j1=u}&6L3mp#!zXd{^#zMSL^LXu>LO~K znVuS`K=e21OZ&vSzhD>iaaT0zyo2C;N3J9EaDf`0F&fS{!--~-A9Lo}QLz-XzE`h@ zC=_QG=~gFaD5?YFbq(Xrb0wBOd`vii`oHBX`*uv-{O z{cyN^cbMn!bU?BF1QZ&~Jnzs1UAKq!n>6_CpQnnkJv+{LXZKD}O)X z7)^+_qUs85HS%zasj@!wj!oQQ~C)m z2#dy9>ALekaSE&-lo%}XwvC&E4*O1juCM>RHFR>fFjC3~D?`hmx&OcW8#nOq^J{S( z-?VavRZ%i0sTED^`iSQ#FmVok6H(*X(t~q`t>mE4T9mIR@brWc6`>`3qGUOw$j=9Ky zMnnE%wEMTVaUoE4KJ^=+#c_Rk8IGOSjEmCV*EcG8Z}a@%{8W5$Hpu;a;vC#i-*UU5 zW#YG%S<-0N>UvZkd<|@Su7i&W|KA~f?DLc#d*!YDe6{fk^wB?v0Y$?jn20B_Mx)Zv z`3*qIoA7*WXJD;oipvdP^-oSmb9l}(|-wph)igwR52P?OP~@g(sAE2OQhp3crM z+kU$$)~2Sk+5O+s$)QvXl(c8-2Apq*)=wL1w29DT&SL@}-|u=TVOc<$>ssNw{QT!z z+0KU9c~15Er9ci^!Lqi|hdxQIWMWrE{53zYi{--W2h%|;&cm#hZZmh8`5A1~)C+R!i4MDf4w zAztODk9Cr@Ej9Qzod(f`CI`N6iMN~1hV8qvE5B+>5|@f5wxq0Mq6#7Cw1oIXt3+B8 zi(%K0ARNV(XQ<|C%E@ruSnEx+(bbn6M@pev$%{GQfLz%;qYr_6r% zP62~XM4tGMZ_7<5=Z91AH-?y@X9hXITe;6?;|K3U)Ry=4r4vFb45_8QsFzF-!yxP` zw*84}=6caOMWI%GM~1{YhBi~>;pzA>$mDs{?c&Ln;N+^7#KYjV|NNJUsH5aN<0Z(gIe>=cSNKAH+`RhRXg%{QQCHU(k z24byWPvVeh76w9PY}0vK4ZaZ~!6c**m74HmA-Bb3_4L@Arv4cVyGRX|USDkZei`W>`A4ABR}-IbTF9 z|JL?iNVmzfRxd0WMP`gxYh`NF=SBTBmj=WF3l?A&(Oa&O1Lu#;lL zDmuQ`hky<)YE^9bqb+|-xj_KcLuYYrZVph51^=6}|HS@Yl-HOoy>1*3mm2M|%n^8W z3n)osD73_W72fC5|KtWaN&PfWwFliZUZ-2XPA}_0`4&g-QvA*~UwafDt3U^i=g4|c z4r^YdlnFoyspCmTav{s%o%%wk#fiYY;>9XTZpUNLcBY3((bG!*Dhrdv%5nwX^iiqW z6=hJ2jjU9#{^IHLqQNH47A13BU!U{Gl~YTU@V|-S7gA1GSO$!6v|*lW#j(HwuIyJ$ zMO5A1LN}w}tU9^j9Lmr{Ms}w~{0Fi(`Q;T@AV$2?1Adc%?V8{#lc)3g-CgkS%Am_K zLh+LV?Y&D~lgF~QI|vd^K$X?>=HXe4 z0ICva{m*gwYx{&IFS-mCT|;hEw2OTW3S|*slSaqL!UmaxlrZD=1X(%jH*zv#?Qo$R zc&U?3WA;)pppPhY^fuBiW`e2{Ugh6YR2j?la>&)}AlqwV&H*k@|D=ysR@Z@J3)K+? zS$yw$ECn4LSGE8ok{F>`-B4H8P+e^%RxP8Y6)xRTQ?52(Bb2vmDNGzypi{;UqwIBR zbmDleT%rYdZd`+$O0+p%#guxud3gN!*vFj0I#^@D+Y5IXO*1dj?( zY&fzS7nfMbyniG0Qu?&Oy0Hl97Yq9{U1)vQ3yFL7~kaxGHEd}nZQ~$Eq*ir8K$TzMKpN}y z%Tv7_8vY3Z%3j`~UqeYz!Zxy<0;6yA8Vcj<@XFYa0PhA z^~T|%mBk~iu3}|zmDY|z@1w_I{-LRFXIY*L`iMTyylyii__U^(nar?IrNK^53&qBx zrG1;p6Yj`M*Eue=sJ4xA^xvIRHjTBF>&%h`vv%x9%s6xvIzlp?fvLko{26DWqLT@) zg4i>h`>VtIlIMf`$Nska6v#~F^NGCV-9O+yA4%g|q+h0P(tP!xZt{@3d<)a#xGMYm ze7tuBq31q9AQ0PI+tyA?S&hCH5Q|#lGNrj1^w;L})&(m{Wg(%{1s~05q3P79hx^Ok z7n4P~3K0CDpFlmko0WC39*2D?nT67C@PJO)uCMXRz1dgH5ZkXhSa@S^QBhU@OCrax zk^L4`XARP{JM^#j`?+LG*WOVo6P_m(@kg_alat#hzx8ssagK1Lt={?UWcQwiI$M0F z`=!C(@%g>qE7P+#-J_!)#i=3w5r|U)FDMB+MxIHj4jQ@k?@xnu^1VGI(KkJJ`fO>U z0-ifVnfEFa+L~@$4!s0ZdEPZgu_)l3aR$>mhPwV2lT6%6O!Qz`I@!M2vErIkawi2P z$ntd-EPcO;FOhW3ve_CReLJ3H(2`G00dnYOPWz=AxYMdFe>eV|J7|pqoJda=|K4Vv z>pB^7zV%N2X<1A}wo{<$|4o~Yvg6fDb5OJZtwwiTq^&`yS7@vm(wL~Zabng9J+lGD zKV>)9k{gAtrs|o-lZ$s!5?ZG@6!ny+U~nS|1_+M%68t@Lr^cpPUC4fD^!D(mm8crmL$6Eq8w$%xoOPK-B`Yg(_pAEPve{cv zVd0C#;4}57!?s%?p$e1W(-O(YEkx_(&3eM8fz9*dHWQYOeE*}*06*a`%CkYg;{c65 zBh^h%sbQ;Y;2rRC{^RSUPJKmFXow)w`%ZM>)S}6(e+s2gQ*8|~0s@7>xI~l(!`&zqfMlUk2%4vF^ zU0He8K{RD>&U%PP6$+HRUoAM4{%L(Mb1gCE07_3@VMO3D^YV$-I6DC5FikP$r50+j zaW5k8V8Ge}*p2i#g{T4aoEV>k#F1|hOkdJvWo4B?YggrU*9MB*u0_PJdM_hgJ802# zQT=odzt;Cq98h~r`Nt1kQ$?vdO5xj9vAc=C35ZqSfbe?4fm=rz?a9~n^9L}7J}c{6 zkPFvZv=3Wm&0&Qoe6$+{6vFfgGFfTd2(PQlQGoKz<$=e?7vgZ=a2vt0pq<24glNP& zw9?I;$zm_U6mn2(+TVff#ud=}s`=|Nd`V9u38L&m$lIzvwN-D%ZLAl!t94>3g!5m9 z@S5i~{kMirbjVbILK-@Xu8GQOzJOV6T>eb6Ehx#dEn6dxMUsTZ`pPF14{w9(t8n6px{3v%~hHbn^Q)`4FBL9oXNcF&G2w?KFRpf7qbAnKS@10Q|cPSbM%#t$U|Sn=MH~5|{)e)1#tA7U76gip=G~CdTioa+Hs%QfaYJk!gz-*!8RR z0vzgVYsncW=M%j*T0J^UfEBuFUwTSoY;d<* z-jV#i*g`%5UEz+CUbU}rbG8wcABHuxP`^ECHBx9X)okH5Pt_uGm@uyRO|#FI78TkR zh|_!$I#OP?zP{dejTwA${JgOYIKUsDo}L0p?txac$N7Dm;JY<-OpH6f`#Xt!6iM#r z8a@y$RDYQ(=w=m|0K@mL+E5tPgTeavFD2ay{ z?7zc)767b~Q4?iRVIffrt{8_Gu2H70vZQ#Wixe+IiIb#Z?_8Yby@p&lhRJ9{r;7km z5SHwQxIn{n(`Rmzrjz(>NGTeO805e#!WXpCcN!U=Bg`+{Dw*<+mOg2kkrhu$Qb)9m z(Qy9np(A>q)wz~dByb&o85%9?ag(|!_5XwY)34Vln=%|p;lm2N=NUk7uv;TReJ|b^ z@+5t?0#3-}d$e%5LIxX~C;NrHpfV~4zZ9j#e}Kk9ve zhAN_iOu=M2c&xPOD`cYo0YN*I(9fMXvLk<|HX&v8OQq6S%Ni7&xIf`MTM0_IT`W|g z0-+ckM3ymysofcZzn{;b(CtcoDw-Dz=&ydp1afc)!jv+VQyc>NnnH9Ymv1dd4L z0e@nzna0!S)P7n6G{Y0P^aARIc+Uw#p6`R@?v=qRI z;(ODN78yUU#xYQ^yNLPB`u1Y|{W5ZX{#)<*PX>msT{2T{zE{%@Fr6{kdV3iX-iY{h zyfvV4*m9^bSNhXcoy?XBhD=gwVzfU7e^&K$+1VMmT0YHx74 zQ|;aA!4=CdbCMW3OJF1;Pq*>+CFn+~%80`_zwt9$+RJEJ^$OGZ>4OItBxBh5@L=*Y zJWqn_LwYKDlzoV|2oEX7#cIw{RlYYFQC+sVc?rKohA16K#=3XQewdIuEdh_|j*nNh zSJ5ZzYP*xD^&SGR$sG@nTR=#mOL?iFXi13oT^!GPUlvL*;9s^z47%tiGwbC?gjLALM=( z2Ivle5>uu@S#{=gwO=CVaX{T6WFR-GA-ai4P5WI4ln5VVUI34YazmP(Rl5u0uLj2W zIdpvWf(5U+hnQqRfRlO4rKc`gKm2bKQTQ}oXI~apQ8$B((9G*KIn$K7WV#{~sLoqVx3>Oi+La(mYyj><#vq{V zF~3gewK!b;Q%+JFCSQPjP)DcTIi^v7PB`ZT1_n8`mXrutBV`NTDY9-F|2y`{Y-ShB zL8q71Yr-5$!F462rw3+xz_N*vLEAe?gGwR3Qouw$mbKU<;(oXnxp}Cn-fKU1Pq7sQ zMa2+hTqFSzK}d3k^AN%5V88=$2Yz}GgTB+RKAWcvQPD!^@Z+b&l~+o z4&#%ubdkJ6xUyk9vU>zSP(tW<@uEz!I3I(9n=bB>!}}$eGp$iku*fE4DKn4#NpI9R za(Bo-IE84IPyF$?)>*FD2UY1dOSh+qegqeR^uzzPOFN+{CGe-Rtpv#&H`qJFRArW#T_8Ag(FJ z`Slh$*M3ee6crVfjg6)aM#n)<(g`IzjQy6L3}Uney^IQrEnJZn?t5kT3LV@Xg2p#2 z6?%e}@6oj}VBU%oz?y~^?Q_V2G%W@&Id$kZbOJ=8FGAYM2xF$PG$7jDqb{160mmzP z%Ro5dWcFsmGI%+}3W){IN}cCizl{}R^1>?od&s#=*mE7nAHgqVvk%Ddlatl!z3z=U zW>{fFBMEE$JlhMOF&s^k=CPqwaa25(k7!>51JS1R>*pNwi^tOUl-A z++}!%#f(v;kZX~2t!;scfgn~h7b%(?Kn{rUkl`SBdtN~*kqdqf*$2Q{by2lkH8;8frW})$eVTQ2TUHjs>VHT`v!8&}i86spz6w7_ z{74v8qb8D3yy;Qd4feI#h1HV{67+C(gb{tA+ihoN`mQ++Nyj&P>nDdVriflxLU1@_ zY#=5H&6o+lp%2s3M!vQ$My>dh7)Ht~b>x?-Ui*hA$5lx-%3orjin8{Z>vk28n4Zds>;0^AH!;4CGzqR9#<;`{undk&iw* z$UG|K3qKd06V6xnVZA6f4S5@)B;Jnig`vDo*`=0+&Zd?QZl;#vdH>!5f;xSYQZZgv zRF7z6A-bpFgP3Gq%k1%yy7YxSTYZa>O1B04aG}XpYhWc5lUm&8#FQ@$>vP2+j{yQj z6b$NlVL?UUP|^_HdD)+c^2Lk{AT^a3R_L%7rKWy6txC`Q5Fb#2$JE63+NsR&#Ea%g zA&SL*PpYWCB6Sd9ZR72w6k!MD|2$DMQ2+l13*9%{?-64cX}$cg?q9#TGM^}M49Kyq zprq<3C!;qEeDtV5>yjzanwTR=e+bCqJKAJa^NhlOQ37FUK&RVNy@bQl>3Qul!J`%Gx6Z>=tGY zYu!W)Jjz54Y15sFbe2#g6DNgVqh09?YtE$4x8_&PNR5Kc*oj`(qc9eK!EpD+GayGr z`3Sk0r83o>_e~e$5b2o(G8O6)ryIE3e_T#G!7me2p0}#%Hn4%sM4^sjpg9_mW`BroGUw5#svl!-U8V< z$pSMhaMKReG{+7+jAxel1$UVD&$HP+HmFCWs_H_xInkXSwS%*g}c=I8z>Marz zdq~t`;ODYy9~kgMvLKW^Ms2J`)-1y(4afz&SeUJKjS#O-1gszxJDP2agXq zO0RrYG!x_f!)bft6RpH@lt&d`%P1acpqVH|jQ=pGk$``tuP1iJ?h zrM~#=9m$aCFLD_`Xxhl(9WBDDCukPH1#J{t7^IsqukAX(OT1ky%PXCQ(}rETcEs_A zg&97AGzZ(y19#_(t^TvtlUZ^^pZ6iD@A?C0TXK5tlKiS!O^Pm6I|leEC$1NTM8)aR zon`jGvQk8o_EYxtzu#pR+szegx!JvtcU41UDy+rKpjnIKdO|(I8-zgNqCtUu^YFg^OcvKiL*=(@njD7aq?X)vpA?m zn+q*Z(?aC>ie3K_~>6He_67*Kx%2;KuB`iI^8r@6B;&B8>ao5QH_meDyQB5J`yHTQ4z2sfCtWbR{iOtH5i3 z_^_Z0?g{pSUZf0eW$@h#vxpi4 z7PfMD2~ulTM-wkMwPXkr-k$Ty;Y`CJ%l^Bao#`1gqLw|$xdK6Tiji-|()?~1J6aMX z&Dm{P6%iU>+G4a}z1q~{Wo2B(01H+%5f_mYSZtQe_xChyl zo!hR{k-r#y+tHal#G!#KlL53wN?3L-b~x5pp?#@36_#-!LZo-|b+NNMtNbHDm+Xy( zD4?Qox(Bd^_;lz=qQDEO5G+Hi;ZAYdM7bGU5U{u!ebIQl`1@)$EWYbadMDtw*mQDq zyt=r`5%(N`=kP54sw*Zc0)b`C$kMI6M`=fZrs-rWkzzV}&c#m;JNH$%<>SBSY+r(8 zmWI<9h{G5T$$psT;F@6(CtY1sEQ9H|V0AR;X>Pvm7PVu)c)0k&#n`$Ilh}od5G?=P;?3d%w#KG^m747iA;Aet(KIQ)8oL8 z0p4R}Q<-+6p(z(xrS&>NP-8+kdl4xcO@rgx`vVWUv|;RFj#Q=wnec9{NPd&|$>jYa zlp&;Pf2MQAq}E(nQ2v8ni0eaP3NPm!9Wk; z7)6n1$W*$%BAA0ueZaA=%u5hC$$k2I0+P*K5jdPs6QAXf$*{y`DQy5+jg=Q%JJFbam40rv@e` zQ!RR>i@`p`RA3(ZiyB*>%xyoQyW~>e(b94VaMW{`50n3ZVGx6WY(=#;PFb+1!N-O( zV8L#NHB7#JxZsmrM1*pnKTx3I3;;Y3h?uOz2b zcDZx&aaBI}e!N)8XATW#eZKmQ*U+x=IU3q$vDY!u)aXpYEehK&mK1lJ z&$m-$*=a#z{FGxRo}^7-x^LeV{@~YY3BDKw(-CBa&=qqA_=t<-y<5sGYmr$0=ZKk> zg{+h1PqJ_1tfa;bAoLihvGDpqq+GlnuaIp|%SA2Dzr4v!r2(0m2dpJLoe%=$r-~%j?!H9kp3MS*m&u`@ z%=`ppA{GEg@>ztr-0xrqTj11o(+>O!>dQ#ymdh(K=hnMDb`v1fg^A(URYKB;q#E`^ z?&4};j2;{mGPWZc)>A(~=m8uDv+)WI{ z3gL)lQz)~qhqtyK-7l@2CuSl zp@>L~=PS(R`;|LGR?oU_`69v4-47BE6YMmM<310QrvXfH?TL0E^x>rJc83+z22Qsg z62c{Kv!nVp;}$M{v`!vk0ckLZ4ufKTsW9(`=KYdTPA%yNoL`}2o#6SqJJQecTFy+Xdp9sb+|Jx)LOU_AVavA!boZ^>=H^mBzn6g`KJPU{(K!Eskff zX|W&y47oHCJR%a+m6av5cd_`@1tnu{61@b5Ru*eVc{F1@Xvv-KrdZ7 ze6`##)i?tut956t ze_ZbbdEeuWp<$h3P8OvIKDWq6QcI>frNsWEAeZ3$+V%0=Q!_;;DCORGNPuiTblW>`lbefdQ(h4(@81@PHgQ~_K_|bD z;o;!}ZQaO!pLKp|4@&x9-m>d*bvrPaWrOuG1~Qb0>EE1MZmpc0jHTF62i}-{b7*A7+{71^;rg@v!fu;o%Tj$IooNFo(BYdi|j0I!WNzQ@$ zVgO|8dfVFhHuQcrMg8jfsv3@q@AxdF$%p=;om3%N79Arj*L}V?`3u-y6{sxev8&Yg z;%ko@({7%+1duAlG0?TuQU-trOJsfo&W)haAV@A`vY&(~$Hc_R)s`R-l_fJZu;FnC zfbY(3mv*bg+xSb!4KVn0AflcZdThX7gq^+z_^whi{>6R%F&0aqyhWIOGj}e$5y17v zrz%15#5%%>Sw3+&aV|E^vBBJnImMo`81iBIey#M)ugi`W zWag#I+R2=-5q#hJ)L?7#R!seuJ7%J5i0qI`x7n{2MH1Msv`?E)z4Y8=)j ze7CD(r(c0bmP%sWfaQDoEq0#`mJ_{O&x@|_j>74mAdM9~ZjV1xFiX_(BwR06EDJ|1 zkOVb}Vt81#WLtnJhDg18x^8RxQ}-}mRw;gS!m!@;Gq$>-$db{_g$m<2ip8oS{5-yt z(99Q9<=8y<#6{UjlbT+WJIhe6OHQx<j=V7bos9`4Nb)o$p_a7#knIeHgsIdK-ki&RXeN zn{T^Yx`pDr?uoz~ED~J1O}c!|CWu@o^?Jf+?$abzBJ$*3+BC6;Lcg7?S6O^s;r;ZU zCz%2cgwfK%H%nzAlcPs!PpDDEmn(H3VYFcY?rh)=-grdgJJ0+m)&@O>A}(jQ)LB0(vc7?|$UTfihf1iH{@@&QBKYP1Kl-KgDLv{f=r9j=UJaqp{^^KB|-uZx|r z)+J+9TG~PQ_^t{Nr=&0UgmfvP7kz>n=H=%b=^2(!LHaG-EUScG$3Wuh?Hw&3wN3C} zWn#Td5l8+fmJ%s!ju~4SGc&*I)8gs_f|s{?=KYUb>W%IDyERzv#Ln+QAt-3z3gV%F zpWD%m)~?m9$@4ihSwYTQd-XQdB7VzV3B5G{eU$^LR>X{nGpsa0m^Faod$j{uBoTUw zw2_Y|6r;+f5q(dU_yft|(OwfzzZBu1aSw?Sfn~5i?>R5|dl#pX&*m#IcK%k|K_{J* z3*y0xC5n>Ab-Gq)R`w%A^0^tZm@5+5nb?;m((%dtSELzKW?XRB#oXfos|$em1-X{i z8L7N|>8P^4ZWMyNY7u+lMcn~;EakNH9<0#n|v_0izc z&xp-2Q)eieBEpoo+Qzxh)4StWuqbLG(N^D1YhhuarX7e6kIpA@d~_+WX&RHBEW-6+ zRzvpc>v8|z@NgmH;FizM0Es?Fq1#(s)#zDfN0dc&MVzwj4Y5ThLnMr^%S&kN%V-l& z@h~&vyz~c%VE|Uuc=dGD`*It3y3#-Zw;y%VLW7+~~X*YRBs`gAOc8}DyOOIr4{v$Jsk z_H5qeIG_GbSok|2_kLwB%}CeTa$3a65=#lc+3g*s6mJ-Dbr^3-?589_Sm617K5;si;$O3VU@L%o{jb~ zkyvChUi>E0 z_^r6iq`zPJqF1cZ12oV)js^kf2!zCQRT#1)VQ=ek6q4vG^F~VhPm^G8v(Bw*=d_i) z4t4UY4z7z|9NqL5rLrBSK7uhcak%0sB?kU-3rMYRryvK?X#W`YG&qWS4Hy5iUW3ao zj0NBH^&;2zJ=>D_JBY$;Y50VT%U?eIuseoCoGR)hWnzD;{33IV_p0+{D#e{@RkQH&83nkQ&LAK9fq{*prpyAEX=rQ*5!9nHPsXc4QvN3FJ=0NRc zs}S0OUD<%wv0qI!Wzm&91>OAC!+&;33iIyzR%DDs2KBwbq#uNn*a0~w7ra+r(WWW(3CU|$vrQOqWz#xBJ*=v(e!3R2?DK8F#DP6g{dquSDHI5RUqw3 z2-!D#{Z{?>zF17Xaopa_b$2Un|4>JUHSl5f^bCBorNGkV5dvZvOHB zAhX~<*%qdrzZ^a(un@b{hav4GFFIOhSTHE>UPqV_MHG0pj5P#3Zj}cYiu_q9h~Z^&iW%_Cf~WHWtrLq~XTC>K6~e?EobTcs2uo1xTQkRawpAt`}!- zKLI|YCU$@Lbkmf*lS6rBMY+=_K}bCtPu_?X|1HqKdX~9gJF)(ib!3-6q{uR|I6^%z zVE0PXs+4o4NI8hA{Y8%lV;_FeD_nok176#&SDz7^0YO|dkKsKfx@Aar zSeoK?LY!r=tC?6BwBziCMgriGb>u7%Z_K(%OlKGu)`KA;mdRVHURdCU#UmisNsmzn| zkg(u=lDomgIKM3-(FXuxo;FTq7LY(Ws@S@5iNV@t`2my=FuUh|PaMC^h_)bmy%(IX8=?gfCa>jle|n2S|kLc0tU0e`?d5#0NSL^ua~+#MW>Asm@C z*amgVMEtjhuYeZ4)vgJxiNEF@0_}V@R>J(PCeDHsN~{cpwe>A6jT&|cgJ?^0Yip+L z!M885S${OV$NREq$4Ej+fvB9>kK*AI7vQJGrm%g;?f9) zd6rC+mcxLL(m4m@3y z#eB?4_1pX(x?7k1YrcD^P|f6h=e>F!A)`Kiq9xubKnCu2#Z>0zO>oHIHN%<+1Tx@O z{>^`!gd*FHm#!meo44|82ZVg288z(ng*9b&(Y{&65Y<_?=yasmU%i zGt&x?kP!`^uVN@fpf6U)`|IP8H)sFkeopMe?c*#(15Zw*dc7oP>hH`|N7X)Fd}fW! zulh$_aQQ^MdS3m;LM6DY=5{QT|M<`OFc3%p5aIdXU5rYmoOA@)bDg|hU8@)EH_vZn z*>)Q%wtc0QpsBzU`smfXXphkTC2SGDZe6pR`FQWv_-jcALKR_VB2qH4#PGv-1lSEt z9dgnuluST1SyTGmhP!yMQ1fw*eBoBg!`@BiK#y4c-qfJ3gs8u@qs4o(X8Cx^+lr)f3cZw; z;C&~+|DKNXemxs8V$?WMJ`?V!IQZGwbJ)1a%QB!(v4M!)@2!K#J3aBY&d|bAQjzj3 zrm|Fz7&{F$eGyzaCA$g`C@euyR!W;{)s5AtKRI4&;4O5s?l-c9C_*0NUAWQ<*RSK> zJBAt#{nj@xj%f^smW)K{xcnPTenuvpABSC`6V>Lk%Ki1`8TF@=bWd1U4_7j3^gVBT zUi)fK)t7V_&i=cF^Aqi&ww|cvc0|}ZEjjN$g&jJ-c_N}H64a1yC$Y9fn4pwU-pKi} zOa70MsA%J4^l2C%`eMHtgaj|nx&@l%36H6!lH`t~u6?NHO9^L})@?g)LvKq-N=Sx>B!NA1m zqBS)Xt}v>ca$an*L#hd;yfe+yEM%gEaSjf@c7vMp=Bj0X@r|MrrIKmoSXhAJLm*Z1e$UwJ_6?iU!a+U7ZTBDDhb28%tz!ytZO~@xBj_r4-a!LeCUyjh#)-3 zCjXDxOI$Zg&`8>ai-;G?KW(6A@%A?E5+Bt`Obwo>%J>p~NdK{9=Ci?PD5Y`V zMhWJ5qhYaLUusQesty0Ja7>Y1BCiw9Ro6!n3qvBgwOtliZZs~rdkSE&lyrUhb7mXy zc$mGdW|im93cQ_m)F@gXhAqNQ{|ouiVVrh_=A(AvgKAk)FRi{NJrQ zt6QaYA=24l_7><$m={?j7kwrP)wFjt zTkVy6GO-!XLu=2>3|uEk@lv@`C?20v>2Y$bMCu(Ruj=k!PS2S|)0vcjaHWEPrA zy>O~tSHl^B?kVCXl1x|MuI*zF(X{`E_4zD!Re-#xFVI`_K_*;wqrs{3+=2P^lKjD? zpK^?HiG;W(km8g)ac^9hoV@6s^(oY@;~3QDU~rQy?lc9uJC2SP=6jk59<})n-)hG1 z>nHQdE;`P@+1Ll!DIkLb*G3UP8z)cu$3ivb6clkl{Yh)xPtoS{f%_NX$}`TGQq8}= zRmu;Lg8iA~$@@c@-Q)KXsdX@9*%Nmq%y_}p3u%!`Wt|@L1%>zr z258cHmFE3tf1W)mKXpb|YkiDN4-nnQU!ekWs8+J1UfBjDc78{vUzys->~j@uUPf20KY!mOgDH-jtD=#m>JB_U8MQ8*;f1uf2Sssq`Xf)V^Lcmup)Z zIH|5&yr&6qm6HXixbE)m5Qwsp2FGju%yQPr&78}xCYC#M@b!kyC>vCJn2_MiNS=uQ z>RPy5ZKm4W>jdiWSveeOO8u6deQ_?N32!egLE7n=671fRSY7n<%_JU_@lH{*hY2T4z8D{vLSRJ-O4!E>ywA<)Dk; zHf%hFd5o+1U<`UW?sq?Z&B5g&BhPfSB(>xHARWld(RLpJe2UT`bz|Cn7ZVm(?Jr2g zH7*F4l8xzoPkV9`mhLwJk|{;*cT(xA)oCN|>)K%=SwC0T%SCqYG99T|ktzGPNN*FW z)#qMa!uSMyy`1;H;1-`>ms^_#fQ&BO_NS?^%CMI5Tu3TNnn*~57d>S@rN6&pg-HW2|$muw)F-;HgeJabNV|` z(JZwR&cS%30YxZL&kOzW8mivp*KbgP?c(fj2cs6Z%{6F@fkB!qpX)_mVf9#bXveB0 zpWW=o|1|6lufOQS;7xxtOC4TF&A1+D!z~TqR*E3JfVMH)3K+)}0&aK^_geEF^So>G z%eqM6wBhB}F_-U4f`fe5WY!*GS_awiq4PiMk%TG<_?*t=%MJX9CV15!abXc&6s-S9 zWu%!kIL z^=z!U((_Tb_=*ZZ@VyB11|1nacbnZE*?=kd97~W*ZjU`wMtCITSZGr%_l8b~%aRD^ zXH)7hP!FR`3PWS?r+~BD%qbJ&9Lf5NvCb>GM6s9ONXbWfZOKLzz)U}+Vu#5?!70;4 z3TR15GUNKJuvdk0mIe5T8j`!Xu=3#j(hMUcZt6HrVzf3}2l*#Rz4gXJTRLHY(V_D8 zt3c|L3^)S*Jd+UouvHnfdEc^HxC%IV4Fv~9&_E;Z=YZ^(@9hu?($Uo&&X+u%JiF867|~+2}Jk~oFbo0J-^Ci~jKT&{Z#KHjcozqIQNvlUS2$d_VJQO9FJEI&jw zDN)frpy2Z}s>J8GTlOsfxSy(Q+>PAB0<}ZQsPd~E?$_OIB!Zqj+a_{Fe1=>d;Xj$4 z`h|RSZB2btAr$)=uk9Uc0#v0uAFEoPj!p7}J#0~_Fn_S*p@ca0|D5>Qg%;lHG}7X4 zb>+~~m?XSZefFPacO$gr`xg|>*wnJ=2x80c#`?Rz-fMWk6+)y&js@V<`D_w`{G~sG z0&PE!U%oVqGA`M?e=-(WrTOw0G5pMW8$iMuIPXHf2wd_mXM*kkBI=$h)Xd(^9+2D9 zlrp(yqGf;Rv006i(=noI!`a_(8!9v`)sFm+qw@}ji0DL*-ih9#t}eRO_MP9m^S{UQ%*>s8&pF@okw7%BK5)R8+uy@o zExp$+ZWkB3H@*xaG0>$gb+qy|6-(699BMtW_>ta#qCfSec&$oOrVp;w(qho+cQ6a| zGil9fu`9h4<>wQJ8Zti@olBmQ>f`@FQSM$*4+w|98uTk*ALPq4i`CenxCyQlSZ}N6 z%Csx84(#Ig(}+U8;qQK)Ij9;NA2P(38}24eOO*V(aFt&cRnZ>c;~vkTtnz*#UM`lW zAh}v0S$3kz;^ZrZNWk9W#@X4Q8yxQEq-bH7=6{?S)(MLsx(A>n-t!hFP$h|^;_%s* zOx!WyJgmqm-O23te#luIHZy$!qJ;Uh`79v_h%ky$zU>ku%Co(LM!Ve7B~D4MSccuz(~6!ei|2gI zuU23{mrEP9pjkS0Z80f*%x`{7hn`PcQL;qgNQQM)E;Sn7?X4NK`06YkkK6!TJT>|x zu==MofO#F=Yq}i#T(5E`by!ljWUbv#Lqh{F7vdeH ze?w%~t`F*g;p_dyTR@M-kR3E<{mN0q$71|_+D5RUku~d}{^$r+d;B?bpyV|+HedYA z`Gao3O6h;aspa)Ylj}h>NlD7kUQlw>?|gU}zP2|Is0|}~YW7rFQ6;mE*UcV_XSis( zYE!?(i7j2lYMK&4Q~J_|gMjdP3KQW6aty4bi)ZNcXk}_ivt&0oofH`t?JUsOGLnRm zI4^FA{*)|0Ebxn71NBr>&C|nk<991NUCHBVLm?D`kOas6wsBD3yEd7^j}!ZKOO*}f z0&RvzatVm`yKY>#vK@_5ULvJaof9xmD4`QF~TdUN8b{vZX0vKk9@d5~7CpPdPE_I|_C!p_#! z7xJ~yVaYA0tS0H4yxOqMiEToYlME#J*%JN+?=3~>(6s|6XEi&)7?-Hm00xBSB2u0Q zEihA)A{<;7g#$pyMW5}tlQBq+ec6VNFoQPE)~%0I=zI&4ISh>aW_6f?Qm6<#84W3J;}VyKu6~Gu+rO zEtK|>S$|-qA21SUL&=`bE0o=~#KZ+4L(=7jC?yVU9GGysl3t6ByV(=AEWoB!U6I7U z+keARZmg&^M+eS zhHg+LFU6Y5{4mcxamX@W^szAA6`1#OUk?$4j_&-K+>F0V{61erp#Qfq>k@O;$jg51 z>;0q0>me2b3{YQUGTsL^enN$m?k3IgT>*4c-c;ZFU1io9`>$p1|A=<&%%CL=txDoLJio{NOSRxsSZiOpT_|E z)7|Y3Xn=NI3DxObYEY5MQ5Do&S50b|ZJiOPv&^KljR742?GD-Jsc?tE1SPf9ZFa$`3i`8?()xp@cdp@cVMJwJ_*x3+O#U=%;= z3FL>y^NEXVF{f(HHc-{OmrS~HELnY@JziO~hG{M}7?-&!wqVrKoJx$1dN&NG5=pJ# zE~*#_w)`Rbu9e{&soqWdS>W30_aC)leMJ#vAt{oKe=kAI1i^t$gFcfz@a7-tj}00HA}m>`5%cvACg6sbf+3<^ghE1+rgB) zYWcQ}OBHNv_%R;Z+JcKmX?0tFJ0;6Ljab%JW&I828*5ovot*_N6cyDgX2^_k{=CDwP2Ip|DU_4F0r z9kI(8mtm`u-QJb#l8tTgTN|e45f?!YzJk9(-}P##SDan!j8w#04d7I}gjVcwymMca zKSR)X!+Ewg^Vskcs;>E9R ztJKU1Zjn6b6M>2tVE)X?taMc)VINyay7y^OI$p0ROIW5mfBa}Aqf}fc2dUVO#|LDd z^mHs4PE;Viu(a^NaHPr8x65fmX ze-8fUNyjN9$IXtm!0@)FxKpX)8bV&{r@w!XOl)^L-&uRya%^PND<~+4Afi<$ zntm}^b0k%kF}}@kX%{_IP4Yp}WJw^1DD@`?eocbGQ(h*pFuCQdwr+(Q(w|Ec4=wC( znuT5(|Fg$P0&rp-)2=&E774UP;>Y}#Pr?9;jc38(lrLV$mwd^_SApVuY}2i_|2Qis zsCU^i3*BR^1vqG_TT<4Q-eLg`ZNQP!T`xzgb`~~+-cf)-<4y%`xK5Qb6nBE;$lEx4 zA&thTV}B2g|3PEE+qmzd#Fp;3va&qS`sx>kSx88aj?#etM+y>%jf_kTP&bXwLKw-+ zZ+2%{EH^Y4;PwbDk-T&0l5sF|@N2D=-8~Nl+o%N*EsFk$&q>V=F*tUzKS(0%@OOZ< z)~QiDw_>ILi42bXt%BNSj-Q0zo7+vG(JQP9MLe6&-G!hh*qMoDLs#RH41;{iUA6fN4iK->V#l`qY zDSG(l7t~30vz6|(x|JVUm-LpFDq;O!c+*FVzbGs@QJ4kcRn+S`*x41Rmwl|z#eO?? z-Rht&Mg$Q~PaCm3PoNb~9JEYQ_!FpWquJfy@VYBZCVXj0uVmby$^U>;T0l%cmx_Ih zPoWFbhTa%#gvl#5Sg;P1)}Y~y$(_O1e2{xJ`Da|?h8^yky7e?;AKhN_Y_t?qCC{vs z!!*H*0<88NH*HjljHx39%KXdrN`zH=SCv}H0&_LZ-0ZXd9aG54eyg8wvT{i_O1fz4 z+gO=bXgGc=4m?Dk6U;?yrXpisyM*=hzc2n$wm>b&+4cba&Mwr$N7I@Y$v2TdJ32c% zlylIvtK}?9$RCG%GEdd=LM&>MZ*S!fwlQVEk%hoy8dz2s{BNND;qv|v! zVfF>ZM+7!{dWV-C;NZ8(^|-+WGw2W(68#l`3X_ ze@ZkYM7r1X@g8{|e?UY?EF2%g^CPk*7L&pj#|nocoK-Do%@*ljjkt@GHFIzP#DdqDQda()f0=>$x z*;KEw9shsxpP*bB4J_udJd#g*OX!1xOckZE(ZbS5-M{>!BJAtSxcFjrN6a`?2CUxt zzdRdUtayC3gsVlR^ux>B{1CF|_j0dgo!5|86$?^^PlINy(*(myu$@{zZ`6pOgRmig zaR?$?ftCmd^+Gi|ULtFq|-hG45yxEgPzOB}g zzsQAtlJ_DqIXnvdpr?z$&Z}tk1t%6{w%#1^;na-zl&#<(fb;Io{n4`G)T6r19k`GB z;u7_aKx?9&6wsD5B`KULZ{kZ#v6;pgM@4M5!yYxNP=vqojC`(!o1DQT+IB;3Kr}?GvU;c(Ps_E#V4dk1Ksg#Vf^1#-cn%t zPwcs7j>@)uIB*w{{M!O!h1a~uQY!Aro3nAOtR5d7cYsylkHx?b|IP<){rJ^B8*c3D zYLEK;?=uUcsR1xiyM!>Nbi*QJ@uOmGXk0~BQnyn*#`V3fr|RAFQ~}*6gX#tC2*%F| zYptX*DNrB$vwk0(D0LQ!^+QK9q96)`K96H-YrvSvB*0xHk{>Yk@L$XHw%{)!#rLKY?0ts`5vE9_3dtka5d8t1? z!gSW4i(%@0hOHx`yJwh1hn<8qZ6@+kemL@wbT1&2Y4GrtMp%&u*b&X_fowp81GtGIQKmM3 zm!`gq&91HdaxNk*AE~qPH9!0P!In6%?yS{;fV%(MB3BH+*(9_m$@!v7yMpLVJN4%* zvNu(G1%JO8_OW;Dy%p>{UypHrj3D+T3%@PUply4&(#t(iQ2|5%o23T8Gb__n^~Qb9 z!A*(K*G*$Anp{5&$i@-si8^(ftEo2X;E|BH9uslo=^Lf!5|%bsEQ1iVu2iiZAlnSV z;W)-3?m(CGc65KZs+F&J1N0%)tu*M~a`XyF^B1Zi=7yJGJd0>C8 zYhh<+*4EPevVpq6iZ+J=D#WKTP$+UVJ98lD*&lE<(8U1!uesD8HoqNo27c2bjnu{N zlC?MpanT0)VIAtVPM+xF__$Sg``IvjRW6*uWui>PdS*kyTUVHBK1DyxZ-7nWU-T@r z*e+fsMc$h`>v3$5a?p~T8z;C(t3aS{2X#aoZs@s>3!%Y8BX@5%en>`4%azDI9<(;1 zj`ugFwB92zOqjUZ$dX~fjIP|DtxWbh{DkDB9{-uc06Q3M$=%^Le1 zdJalMOGJ12Fh`{0ruRViU=Qwxlv;Jl22NVcWTb>L<3bnsh|;(iW1x7Gmybn-mij-r zaq{-_4gC1cy}S}A4UH?BymO7C{Xf)w!N_`980ze?Z@a#i$n6;+-urJy#^2^G%j~k& z^$@U^D}wHayGfp7jEnGWmG&HY>=uLV>=6FoD;{j(4VFM0v|lo}6Q}(#%}auu21l^f z!J;q8a_@H{hDNx*-wq#&^+$4eW8AJap#aBrlbObx148%^`^`1OqBYNG{_Cne?0(@= zBg+LFyf$xvHb2zfwf~8n zM)EZA2+~iQyIt%mZ0!E}{XJRoTN3Ka#RJECQwIkJdtXy)>j{@O&HwK5m%&1l#mrv6 zKaTj{uuCPrQ5+FU;GnMwD*KP0Gcol6-AEhiHs4BJ1bD)w z8JGSiK5JAooKAFg>Ly^!71fHF)lyBndfB!~qK_0{yN1>*>Ix<5RLg`X%gMonWQybB zm%nQ^Ujxa<`%xp*_BhvSsr$p4*Upx)aEx_JLdYzM@iPM@3|W$p$nugmq=~XLcwN{L zeP6x8k!@eOI1OIXvUOa{yJ+!B4+xQWVj|JeX;Y}inij5P@>%Pj(jTrwMIqseX2(qmTUl!q zR^6PcFCclB)a0+E)f6#!L;jq=xlFG^#e-7NK(-)=IUPDF4@7$Xjk!f1yIzEN@2!92 zi?9MRMzP0A3}gj$MfFE5Xm{-j*{1crS8yJ6Lt_HbdV=A+gc>t5%|7?5XCE)6>+H~_ zjO9c1q3S|ymYYMVF*&Mt?@`+*0bZzY0#(1@lhuy?c1c8s2Tfg!v0UNqMiIU?r_s57 zqb93QRr;8@Vv#8{HA(%S{ITp=shJxJ7t+(f{a-c?vzU(<1p1aV5kqYGNg^+0Hj{u7 z019gKS;@vhaHO7nVH*Ako=iE+D))a@4y4waYnp$y{A_Pug*BqFB+17TB>>jo(XD&^ z>~d8jkN_vE$(wVSr7qInAqIjZzvpq@&L6q&kf%AWW*X>J+S>yKv#R~XK^VGe;Fsy$ z#EI(LGKzrayXQB}_3PjA&3qH%_ST3v=FKqb_Ul@!dlveGT(#)O5k?%eq~7HBFElUD z_i^%~zR^oyQE5`}?hz!Y{JPCKS!wbtuQyoI)t4ueJ2HO`Zng*kLoaIP0MhvpK2gLq z;r&|e>Wz;TYGYG`Ez4g}2TP6_@4HL`e}=)zu|3Q_&PSCU)0imE4-p%_)2Y4E049|* z9XVP&2V0|Kj(K|B=W+C2P5HVxz$3RK`ZMb8YTu0v#`}q(kK&kpth$N(ksK*4$tgKs zDuvE485PT8j!ub9v-R{Ux#x<#j%t3hTJ7=(wLl?W|ey?m3qBoHTIZ|BERJ+O4S+qy`#XKD4ed zr(&}!L8}Bmy&Nb6@Em;^jD;z@`{%KCJow8|ezl3UIRBESNb`eO=aVZ0~ykPnVtPPNlBJ$G~{Ew@5+wmI|`};)TUL z1sb|*>u(NMueCP?pNR`{o0*gb60NYTzROs;*tpvvTh2s^1~K$oWOPH~FZiy1qaq7I zffKGgo2T+5#1xSO!p^t@ZkU8rV(9S$fqdw}Kjhl9j6c>b^F;*7QVYL%ZQWy$Cu@| z;J{fe?ew&?utar5tiR3i7J49XI2}UNoR0M{fxK@fRlP5{0L(SEOG2@2&#Q0;0oLj3 z5C{QAk?U7Vvds7@NszH-V-t(cG+F77Y1o|Y<#rLk^O*rgHuL7rNe6xDJZ=VR_WU&N zu4yS~XjEP&$MQ*G$>_3Gc9#~vJD5p*M}X=-T)yWLZ!td|_AkK?Mqp#Ve+d=l7W%}T zHdI8{@4`+pgAb8LCzJX_5C*OhYN7kdJ?GSZzM{Q{dWk!)VwUMB$yG#!_!x!Yn$kXw)+fUzDb4n7KR7H<0@g_-{C5K5~q^`YD z-j!iJUm<^)1=m3(RIlAQTG{=*3o{2CvAy^iy(VuP2R8?M+w9vIuiffSp0okXJhl4F z0Zd)@0Qc~lzH5nhl93}S>BDK-@D9T@{iOJ0>V=5dpgqyR)(+|q_cI%&9J{m>8#6)> zY@4?U1(bMbpnR^fmY*|15*=lqGRt5S4h#D9a-be2JWB2fk!N@$CZ32`LJ3SX$dre< zkSPECMhw?Vi~qreTuH9?*{LgQ96|f!Bg&%qmOxQDGqPK4A#KK{F_nqaoC^ogL>&6l zqqre|KN@de^{H- z|6+Y~=_$kZx>S-v3>=dmOm9Nw_7s%KxhP{2TM9~?&3R73lcc)CJKay)N*$h>`V357 ztSau%%)%YSkBDt$wx2opKmoC30w5oQsA&lfL7$WRi$A}5d4ZFZ?^aZt$eiQo7*SjT z9t(pcfpXd~CPHLrrSLw_Aeo+6S)IK+=pkwCk31>*XUyX!_}NwxVT-Pjo-7?N#^!*G zCd-f7&jcXQBqIp)F1$bP1J-KnoqQlcJ@^%7Ib{0S4be2yY8ELBT*c0RwaQr$R8@4V9G4a)%>efsc%h14%gmR60d9 zFSvl}U`GgUf2|4UE1D{^7ig_-1MZ{Vk=D0VoDenlLPier0UcM3`dL=B%(}n7PR?VU z=G*dOBS4!7Yh4pweg*$%c>Vx4K{pUIwHG+3zrF428#wKg^At8 zUu6z&8{UjnumRVSNA(D2iiSXAwN%iI6`x^RNm{!OFSSUeDn^hB2krIkhj?hq3dv2<=Q6WKag@{8v9CyCl9`J zm;b)*s_Ri64KzUEMADDFvt!)4g0fxu-D=^7_uU(JCE~1GwPB_~3IN05&IqPZ z4L?srWBMh-nU$(OyI-Fr2)k%m0dgtchSp(Hcw}83wk*>4KdaXI)Lsw2gx4(->4SW~;9tMUa=I4DzZ_W!GQ)f(vh^@yGS`LZ~1hXqmm`XHPpM%*`TKB=^W7G2?AG8c33qJ~$ft zUcPMvM5Ju@ihc|yFcNLkn128l%?s=fTQ(31KuYy^;W^8RIaHXdm#=y%dc71_WYv+6 zwfaTSShf18wotzK#oV)aLUmrcCuW_JN`q+Ns6;dbGlw2`Sqf<|A02SSk2vX=wtdrn zo#RLg_58=SSAz_jPxo6*lGK7G19rNjg3@Zcn~$5{(a`pAE&_;G(|Pg&Sg+|p&8c%y zy3nqBm7L~1KXMfW&Z(MYq&%H*A$%!Q26rmQkglo{=69un(dIfywD}RLPY# z0Vns)>MB7cHa)t?oPN@A6Zt~}Xo?;yG2jB0nUl!QuK&7y=V^SswF!Q>=p2hZN0$5o61|XErm{fiXXhOG#+yNiJJ{GcHECI(@$AtZ7!V z(z2>q0NRk}^om`8WG@7`lx3Q*m3Ft&?jq_&*a|$0uTZJq$)W#Lf9~_8{n8kK z-E!?Czz(wQ*KYghK&T0sLsT+gDPZf-_}YIFVv zdoVUNrPm&K{S;T4(fH7X-ypcH(X}73?lyXf%*y(=D ztmBi8P-Bzt;Z1(5T|ck8b@>KEN&*j7CmGc?q=&( z+oKCv4DPy%xEho)6zE8Kv_O{n?NVvn6laI=FEWbeytD1eStW*99eh4FHwxxV4R{+G z@qN`o96g}Kh)lQ4MKk8Y!R;*7AF@`JMlATDnSuChB0{rvTCJDftv}OPh!~y*vhUzn zGeF5AL}cBP!9f(#rt&yLr39qB3RJk76Ar6@i*T!6A$H^0pZg*WQ>Z!#jrF z$lfE{%c(U5)5oy?pOiStY!)DVSTWu1P5Ee@w*{Yl6*=_Ox zmcHmhg==rBtPz!OiNt$1w!t_yJ_}ugM`25ql`2aL(6SdY!_dViQCAUtG|QnILg?}g zaH8LNAAkJh_Ss)tv9SBT^OA`J4TG+;UNozaL(Mt4X;QHaCaB6977e;L?0kZVEi}Fi zuhQzVPg4|ronunSoHckEoIBOB>Cw7k2+i`^3jT))k;IhH(Bj# zeA~}4UxoePSo+B!jr~_D!$uUYm>RupT9z2?>e==CYb1ySg&4-~b8meRJ4IV*d_MmG zLt#A3U`qXwiKgq`+8sE5FZOuMRUvq+W!cwfAlIk!6a;l~J!ilami{;(|b zhhXr88a@v_<#am5Pbz zyS|r|pBqP#0#7_u##_r#OxPp6xiTMUs?d$XI2}aE^yN1}8Br1i$eRD*)ZL5whk3(9 zg~J=WgE*~suQY-WOUJonf9Ko;^F*46K|oU^3|!A=W)x=xw73k~pi9rG_tJe@LR+YV zf5=eq4koeV;+T|5+P&L~2-1qSdv??I(u|!zOlc8FmI>%RS{AW9uPAc1MJfB|b)GdZ z@87ZljHohh`PUi^2QBe;Kur=Y)OD+1x@67gI;Yj8b~pyV;3X)!f^{C+iE_pT?uAKzF9-7LiZ zT@3``O#D20o$I^b9j4SsJ~!LAzsXSa$SxOXZRsO>dPC9^gz3jk|A_5c9rJBipG$*+ zIbPXerAmJ(*l16Q_2$I2MpYQNt1h^H018f!ht7Iv|O zxx@VY9)?mYs@rdeCJW@)?W*^?=0@7fZ!pbTa*>3SKRm$@^~p4_#Kg5f@8kS~MQW=c za{q8$u3w0M*U{$DQiKTYyC}C%o8v~@SA+JNpHQg2<)i>rREA}q!g;4}3W@B9ixK>82fslaj>c!kwGAH@^cBsO7J@!NKxCn;FI_=kd+l(&71`P%O5T+2pE3=l z*R-uZM;G(U8|^*ViF7Qo-d03{XF`#fen^oxD1l}LXOnruT*Qv@EIC2A@RRsc>T(~J9cG|LxHyk zkEUWT&GJr=ljN47Ixp6x1R7`2J7&11qLQxY}X- zxluAQF~BOt%AfMs*-xzuCvnx*U5E#2Zz&P^>fuhXmwKExe=aV*K2}IPkfRP!+`>E` zsy_l+!`$Qj_@li$j1#BllgiD3MS#Q@3gUUdXCJ}iy+TXmE;1sxaO~zke;EURZFM#3 zdjLnUWyQ5tqzY+q6L(CJRYw6w@bD#TR~9sicQt{s^jHL-j}sdH5&T<9X1zh{mbEQy z?t%ni^WUB5?nubNwSsxWwF|X z9|iaEvuJsil6gHazq|Y1CC8Dg*{KA#wg()k;PDUv_kC5zX?4OwdjVFLVSGR&f;oO4 zn`;mdS!tLZa{aXLzEpp^vwzz?HRQmHuK_@GXuSGfVF$bh>JR4ciWx6bFs$Gek<4wMmU9C$=oFB9gF5*4khf?rV~r&r^) zHK>pr`L^4Y6C~BDm|qz=rr#|1l5IJKsYsG-B9yEGCG-3pDEw(q;Jicf8p$$i+{?Nb zjy?`$I!oviPE3S}IB2}N3@PO>$Gf-8nBz(r@=#pC$>D^08D|SGp2G%`C?2d>>F+#P zr@|+`Xy*m9e;g#MElfi_tL8*X7Ex&MWR|CAFc-Z8K^@h6{s4&ER zb8K6Q*3js?=XNL6&$s5EGQ!fnbDq{ym*rWyu?ccLo{ii|w7VY_AY11e>{8YCG=FmQ z{tPfZo1d5vpHm8J2Naf3S;9Kp*Wd1OWpT*Rg6dv`|Gg8p(pQWk7}aw%x>gD{b8sAfJUBr-0mM`{Z_c?H=A7U+4^(gT8-ec zx2G%$87RB^>`yQ&H*KpgLET0B%<*46f3wm)|k%{c67jLv%xc2ke9I7IQFn$x}X_Nd6~cGv(^L3}%x| zu4@JFJDUc`!b1#SThDlW!Qd%JGfBATw0TB@O%ka)vv_y%wVAsSP4z<_xPIyJtmt^T z?5M&~le`Ld#YqS=r&yg%x+~Gk@T#WY$nO?O8~dJyGfhqjh>b}nPn~I&)?rmXlg9FE z+iGVe2?Vp}xS~Nc^FL%pa~<|rh<;uhd6an2M%~`6A^mr;9q%^~0myWe8O+@<%%sDA zy`nxqln*sW=JclF?(Mu=+Qs~2fmKP#d!sA~f8(!`vfw^O7%1tRA7+e9w~&16mBJ$T zHkg82jjH=)k^|%P>h7n9DQ_#gH#tLUGKGv!l;u4V+Lz3fHy0&|2Z00SkJlz{_s@mXKi_!Gmw#V{xBZy3 zovEKaz}J2;d?jLQej#7k&Qdf$t{8%`*^pz-UXJ*fe_Usmua!BFMns<0Tt_k_36eJ{ z)hFg*rqW(q_gx zOR(BO-FiR1rjCEFB60a!L)&r9K!1r$iu*UsNnehq%eV{0`$wmgJo<(A5IjFTUtp$* zDtS-e&qta?Vu%Qg2A0mqr5G$~V@n5OShKB_s@Nd?(7`$%Yu^{n(iL&5JAK7OAqF~> zSR$G+{{WLXIt8enc^ak+&4GR9jhJ3$fKo0LI6ZDrdY?q{JxtA ztEOUDj=P=L9soo~2c@M%X{vG`nE~8)#nVC}v%a7N=a)ifY5{j~fGS zmO9QwB!-G>0dlqvs_pv0&{4a1n++fB@l*&kw|Fd#D!}emEG{9US%tkBH~eZ5OPRwL zN-@m$TTmr$P<~_Az{$6c#QIec-Jd+y(z4A0+LnfN8j3SFif}PZhu@BGnBR3t(lrOv z{i&GqzgirByaH0a_Aqb~#-VkYtFd$W@b~7T8Ld`TXzbiwDAN&0x1em85kzQi&Mjny z9u$PNk1U^?%mWcTj++L3d5jJ#a<=%JrXEeXAo)z~Z?ZbLnqlOtZ2jZ99PPNEH_Tl~ zlV8H;{Av^+$O%E6Hx|hKQ4>ie$%D%DaI`#t*1ZR&B<{&uop0y!adPo9@$oTpb9>yc zCm#PAP%vZLq)MNp9Q*#IMew!NCi6@zhyW0ct z{_RbE%Ea|vZam*zw+wl6rJl;6a&|oJg!niF z&E07k{960uJIC_;^8Du&Oav)}bbqlj)T~JaoI~HAu@xfOvV=yod`0hHa?Iu)VuA)W z)U|jC zAe(u+C{bYEGkR>vKCi#mRltnZWuMB9Wv-~Nd9Cil?!`iHFVeB?ejh-Xeq;x_FD2Z) zT~3eBbXknf)OBP6{n4p;%C{H@`~3LPLNRfyox#yz2Dafc1T;h-Jlq1ucq}G!<>F~! zsR@7T`@lM^KYkbQ888C%TwD;x?6nuxX4}WxY>1-I9S;u@VxBiT;d!a(l1pdaZJdZ~ zmvv#ddn;8rXW)($=$~xGV#Rlu15jyPjWmg%8{dh@^}LN})~C~K*Wu0Be+wGextUHN zY$kGDJStR4W7OEIOLVpx?63lRQdEV;0^{tO^v%s5bqov$ga5I4Jj$7%wCx^#En^r8 z?#zz?@dkZCr=6in_s0HLa((nT5~~8`hfx=N?ppUB#N+7KN3BbsnnA>hR=he($J&JS zi7kEyS8Hu9-u0AYhY~jh5;qSL$Ycqq_u)Lye~P*_3IIMV57k;}+QZxHrx+0e2bDv! z#k1@2BdTO*Pp??6aUPUC3;iuK|CMsv&$?ABJrEx!X7NL~`y`(%o=};fR!+qsW8+-+ z8``vP6Ul?7bJ{YcZ*UoI;$xjmTBGdS3%h^J*oNjiE;P)NVbPIG;k*oQ+n>GNKRX(l zRWEG~J~#jAdH)+9@EU8`vo_G5y6E5h?%vwIdZXY4S&v0k>7YJ z-a$ln@2K(!@=xMn@8-+VRmc(POp>c;twN{ zDKWd|DI$^2Oo{5f+dgN?wvrE2#t3G@oXVExj)#CU=(b>0m2Hp5NWHAe<-fZzYu+Z7 zzS%rHyxjMsU;0dcj)0uzFKBaY;Z7$c20r#~tRTqlL{l133 zs!%=H+yQ=VdcQ1@cN78Qg|HF=t0@qeG&pKt-^);biFmF)VKehwZ^rPiNW3;@{0?tV zNKZ00vG}@I8RVbJdyf!PTbk$2$6KCnfgP2OKysRe0$rE|)Jyu6=&cT6(n5p9QW_Ir zH?`)#SW_QWaf%HOP(uv9T9^o-uhEipILSE5F=LdN%X&7Yk@yWFLOyiype(VtYCCgie0T_ zo_HyA8+E!wdU{z&C_ifnsD_LgEphde-opZrrEbuss8Pse4iImZ}uixtevYxZi7nTkK&E82eHM7sR9LTWg4so9 z6&Y_uBciFubO_mX>f*3zuHp#AL7zGIk(D?L+IJ+bk>Q08BPdL37j|9Sy}Q>K5U6Me z!CxIpOeyXiC%VpS7Z=#gBlTfL>5T`5Wr4h*YSdd?`_`0UD}Cd4o_a6#T%LrAvbIj< zq0y7JV}9A_ji(YAw^qz z?Q+MChsh21&RT|p)FB}3r!0irkfgXsA$l+r#6j;90+(@Xwo3?c&%o*_(<@aOjF|a| zmh|jQz}D(_*AhO5r{sLiZXe3U39KaB& zB|#JfN6jt{M+)akc*oyazm;E;G`JobXX|J8g2{dOO8_UP6Slzv;o)Q^%FeV^L;PA6 zEw;975V-tObq{Vwbs!sQ#!LrR&i;N$F^{?QRLh(<(A=P;jprbWkGPzij`wGO!s6Vo z2WmEf^QHt)gL|EwWhM;7)Yeds#E-oaC_o^2kg6DdKD%F1HR^YBYVoYxbLC|(0zB=P zzox@&=o9GV^SpkybE3pO`Ce55+jC)VJ;PE%g)I=zC2#2l? zuQf-t8WEvL$IBARvGCV;|6e}clECN(H5?P2w4~InY?m>#q<61SujO@-jEN~HhyS&X7PJk4)^=OLIp{6gGWc|K}d`}n(~ zAOJj!r=sM+dhr4D8NC=S4$S>~f4VOq!!q`h3_ibH%rNTS{qs)us9r_ZW^!`Jb-^0- zOX?CDoB$6{aQxBHlHfVOTs-z@zdlkn`7vwZnBC#EeM|F7s*ihYN$!Afioz)Zyn)sa z-~nDqReng$AHx<86}JwPDW$Xx?<5Eb0*SP(!uiNg?8^^-pAR1#Rivv{S8_S+5hWaZ zr-o zX!+WCQ0EuXy}_>at^AN}%_-gu7Ad@?hQgF$?Js}32NZBwBog$=(LmBWP~5S17JdgS zjjOHx=b2c&6sw4v>-Z;r)024ne6&~jR|CinlJGPO8gXZHdsADB0`K+xBT2hHxDF!g zY}$HxS8mw{i)8tsVu7=&rDRF)q}^kkRf);}-@_WzdyCoZ#a(L?SGi0d@4^Lfz+Efg zb^S^_?v~vor_HUN%L+bkvN1(zOiKTfHalTE1(9U5U_d4c>#n46Fx1eP38U4h8BNs` z4ca}A`tB`F&IXmeUPQLEsTNEwuU0h~Lg7QKMLuoEQ$rhzebMUCJWTBHF-zi?-nV;J z9S;R-cWVLvdIHjwExmJc9a^Kzzu>PPxS_9U54rjuxad4|*?S{tzNB;2l!!nACr|5tTZ2!jm6WWiR-wFnJo;lvMVh4qE#syc ze%gnQQ~zY&3FiJ|u#BU8`N_@aAiZSlyM1GBz_#9diA#c**C7$2zLBEogMKKHHQg4! zyP-?A^ylf~O|F;N;}Si>7_yo2Hj$b<+(YLdUUXvcz5~gyAB%oRQ(&+L;h{xF(t(_a zA{7so1dp@ZL>?;o>L9u;&v+oCjSO-|;xMBM}E$VO_)ieiqSBN;*nI3C&A6VBz z^#k<3XREIvxgQ%;SLpWdZ+-5xXGyBkD6a_B+2yGx{`yCjwFE@@%t&hI?$H^1k{ zo_*%5z4lt`zHY-X_+)8*q85?lsH$`FP?D?+11gaap#Y$U{$W@`;=ESfW-sIf*IzwuWgTX`l%i!ReF$2~W31()kD(~<;P5IX&F0XzZ8siwFc4TY2`XMTRWor$5Wx z20~ubq%Vu63iPt*rJ^ZGiH0=p9z8vb;4Iqbst%8gtcpCJqJLt`(J{!v2{g>(INO>M zlk*ZBKRYeyNKx1-E{@qblPta`mIVLmI>r^RQcO=|-HyX&w?hyq(k>i=xHixYl(w`d z8&HW76>26Xri}%YJ_tp#>Xc&xd}3(u{zLn@N?cZrH<#dh1J zz)Ywd#VFD%(RGIt_$r@GMmn!|?8I(gK<`HzJF}b*Rjv?Wr|?#H>TWnIjhG@TvxLy_f%xNH^+5CCGe*|cZMNubzlSIeP zWJxTM>5rzz1KeQxSw^DLo1=RoQ^)M{q5Zfp&VJ&ANlOVRW59ZgvXBkYOGA2xuks8z zN`+Gm1P=)hI!qMcj@iXSOi-eFroU)t49T|;+M?|}D4len8>8pxIA`aap1|W#Mpb9_ zN#<_$*F~3iSK)FGMBKY%|Lu=t&%LZ?@b|6Znk=&c^QG@7;~JZG~@VN#b7-QVMr#&73s?Bw_0<THOfy;8^Ffr;JHM^c1oX2s7Fk^0f80a9+#AQtH@u@x7@)!VUw{9N ztqHAA&&e0PoguYRqfEcR`^wbb-Cdfu!8CTMy*&Py{kGwnOJ9s9B$l?!cH)h2&gmrj!EH)7q(;=pNDNVs)D!0Rmh*zZ}m&;BTZs`{PA-jV;Y z|4B%qipbLqFfsCcwoqbJetE*aCiM7xn^R@f;lhB0j8AU1Ohil~JF3J5fyB8OV+oiA zemc0!d3Zon@VW5UtCi0Ft1xfi5cIY8y1NMoiiuJ>RHWC4JZ~TH>k9ei$3IAK2GDD8 z-C~_Lx;hSj7xc(tW2bzRAKg?t!`C-@JA=3kgmS!n=r{{~ktcebo&!ppM7W2=D$XTD zqrmcTU#nxXaNb@t#`kP~j))L@UKnd^WX`eM?acl!Tb}-Yw{N6E?78orYR!KK47}LlT5@LO_i&X#<=fOz zkNZ7)f=q(v^xXlDd}s*dZsXzCng4x;(dr7uAAAPF3sB z0OE+dcYD|ME23PdxcFa`UN|c~&E61MoB+m?N5_&Lm|g?JG989IX(Fb4SbE|ID{PTx z-?K@l_WL8ds>ikk+m-u5pFC?S5zPBezN-@(Ixqh8>2Luv24zvdgDXU%-{p?56}uJQ z(Ix}7P-P$7MxB0`pG!A5x89LA-6L7cP}mo7hS>JS*YLkV7fVk|TWFQ&zgO-N$I036 z{k!H_32=*+B;WwFP5;-^&FJ6B#k`|~Y2UT2ZlqwT<-r@1R1%r{oI{N#9seM!v z6>G5gXsVhR!z)rATPJ7hhf*u{&ZosO|EJG--_~v?ju)fvPf#A||4U>{y_>L>eMzn` z){w`;rOt{z8CCF+ricpNPc@1ympf4jbLhy?u`;Dnw}8-0=IsG++ME+xrBSAV!MrWy zy#L(DBGt(^VT)MbT5i)hKd0XljrKslcE?%;EW)OsHbag67M(8tGUDu{4NnN4zyH+~q zsG!;K19PzPVfIkSqsAgx#$mG;eEzgG%F(KzLCvmCq(A;Q;7i48T||QXqL{?e3OlO2 zg0=0rEa&mzxSyW>ztI?j#=kEcWJjN0{X}1JH;;_Mj`4j)@1&?}<*zjGM+5px!ML&an#jwvVe^BMvVP|mZ!-th zlgGI5{f&umui7d5*(C%*tBepF6|FwvIFB&SHHg*8R$yo=-`;uz0mD$@u^);_FKw9( zkXyv;T47oCtwp<-c6Ir$l#*);GcC*AEkx~*qe94+s zU^=gwO_$3^_MNZ_|M`5r+r|RQm2X_kvMiy9xAhR7xBXg4+bq?eiYBhAiz~@iF)@&1 z%eHFJ>3!hjf7hsykkIFPs)+pj-*L1^={okR$H&(6pSRe9!3I6xtx*3{$3VC0fCEFq zi0O?WzC^BtB7YjC!n^B>sm}ABwNdlWAV>m+d%E2^1Jx_Bja_t-T8G`O(}dkI|F(~% z%S|q{DZdvR5Og9#U({P5cYfpNJ%){|<-E30ju~%FCFoz6x1v`#R!z+mN_B{^74i#S z0_G`TaP2>|sUTu3oK#2>E$dbn$+?IiXEGJl(3Weqnc^reNQqxk$`~hVvcT_+w-Vs+ ziwr23nY6hm1n(C*(2s3DNx7`$2l8D0sJ9gcF&HU>m#YoXFsM1Bp=tC{LcQYDyN2|< z=YMe69vmM3)R#GRJeG+89W>L2xO1_ZccEASm;;zwvz*+I8O!SYdOm7t(Z1ryuU8Mn zpfkJmarCrz_3~PK@|^-W%^vxv=3BSpI6Jfy`|RtP#Ad(;fRq7ltvT)7-g{l$rlr<* zXwJsV?jj6G;>~9;bs-FnlP|Te>vRLGLwY^GQyUG6xu03k7_dcog=-SaJboQEC4;+t zCkdL^c$n8VbOqB4bf1YcC%N5~>w%4jA1*nxJC3h*!kYT3`8dUPBgrZ#X~fqvWqlJw zH{6$T=8qbbOWF9uPFx3M({T}fzqzdF2{A-naoET{c;He(C` zw-4U*R(VTOTE=8PXE*@AeQWFH#<=uhDiHGTT5Tu0DfI~u7AHa?2Og;cN=hguaBYlCnO{!ZX!;f%_+J%;xrJH8xH5OS{Jf@ zsoa}j6Q?lbsHgawRWUSA0yOu!G`J7dtyNb+i_OYljvjf^{F}2Wo}2#9n-k(txcgVp z!*35s>hB?p6@q3G&XnNky zqQI9-<)Um#;&o+h?0zBE=xI;CKG@9ce?i?1F?|7XT5`>c{MGK8YV2U&R73kdS87imafjF2?54OtirB$KNFU!wqjr%_2+aDEL%592fv{K4VzC!A57ZHNUGbE7g z>Uejw?w#?Fdl?|?oWUS4w;v6$kk6pC5)Y1MH5iDKum+ocz}yPP)KwD+!&~Om9oOW_Oi}2?xPBIIVsdaO+O65DYT7GnN!w{sAWfLUIysX86cL^p0Dt6<)n5!}OcMWS2 zzs=U^IKFM&@txEyV+@c@&zGkH1w!o`mpZ7N`->7YUlMwEm?-*PX)U(4BqG|Oxs5;S zXLP4_)mvUD>PFY;54o}~x!BLS<3;PS;b3Fo=tZMO3ZQ>FE8JqUO8Yf_Q=LFvlk>1u z5;64ll&v$h704f+-)pzcuHYXZ-AL3;tWtGkGQx6~4(fGTi+Di0iwEuRXNY!fUxY3*6RS5t;p)sQer_nFo;;9=5#ab ztPNvyJYC{-y1sO$0{@?9+9e9)p9UQ&Qo8RTlb==`tCkLsV6lWC#v;f>4GR-(xzshP zyr|@>oLib}eas*y9y@^0;AqdQXDn!Z62h@}<(1_)cYGH4OsBQp4zmgu^*4f!?D|;AcrF7`Y*0=2?(ch_hlQ3RpTTTiB#Y zvZQVpFtiN}fgfM{0OHE7Pt4Q0fUX_k*4hrmx;M2A7S}(U2nzd5yJ;ZidA#Dmob;#X zw^7a`0hQo0|Kw3xGzW6k5j#VV%GpDEPyZ3|20tH-1V+8OE_Ht5?EIiywW_wBQQ4d= zY%ul|BjenhVu`PGGeT8K-`zxLlTUqMfU`Bz=Yl8DvzxKBclkabxm|Tp;KOh!`qq z*+LK)z(-75v4ptNs%U8ch`0?P=~PWXv}`iuOeU9WmhFyZ;XJSx|K0@(TcL|=V=-ZY z209m2!;x!9AQ}w?RFm)Z4fb|`XAPJ`n7`~7baKXIf@SrZlzyz<9xT?Yf8KaPD8)w%G2n3;9rub|ND*A5L~dHc5%{ zI#bNw#?eN{^6d9y?h6){Zh`)9&}po$LD>7}eC%iyqEPw< zvXQr+*jZWGop$l^OLre2I<@jg{6uL(WWgFe(%T$o4|0T{XeMg>W8m zp^UW5bX`Nem3e(hLi{L9Mb$|J2f)Rrb`0LXp`2D8QYNeAWnnou_1ml zB*ZsxK17^pO=|IdZX(yXL>r*^3I^)+M8oT_MfeMuB_DMjH>X$6C=M21FMst78LTf% zxbP>rvQU%ANx;KcfeL&bb|NP5Qi%rnHO^S`9@v#BBHUY5&`i~j#BL)^ucDemmKu+P z6?`i*&cwYFcc0OgD*s%yvx|9ddLO=op0BpbBGa5aLN))?JM^o*RT?IkU*FrauGek- zx_i~t1vB%`qc0HYf&`>FBWde*Sj9GoR#H*G;^>R(Z0naQ4=}0!?sfH&#wp4|p;9h> z5Ww_F1|0;3S%<+ToR?~fAgyNJ%Ww9qX30BeE%GhPeE&_C_CW(E~!uW9JMWFqPD+~L2U>N^cT>>8h)TzUJcid@X4jYsv#zT_%= zNyPQZse$?ml~t7ehsSYpUD^8XoG1wh^CJjIJi1fYMSf@@xfOjew%l0`iPn6Q71zqY(%6i=ZX_TUH08uSqryhBvUxQd0EnexJF~^XedJS(oRMi z`%+0^ut;v|;5TphVMcDKcRal+Ef~T{-Z-5f6!z^t0fbaPC5C0qN~w2eJ?@O*pZink zKuWz3R9C6@l^_~yI9!=4j`ej2L8QxEL!FjoxcFeOSqz0pTeE<-mHX9V{lS97D&E;# zhYpZMJtNH%i3U7dhU#jFS&fp=2C8Q0;Bc2tca;9Vyd0Ux^J>a1|5Nq)Yn|lk!r6YUkmak4+ZxOstLsNKxMf zE?2xf2%L`_?^#k{@Z@Adm7KfptLNua=n7^D4OtSSpx2v`E+o6>aoo{xQl#<0j08Rd zl@SQRrD%-GD;w+QJTfcM`FZ`$o6~^-W%8lzv(De`{#y?*EH&)rkoUmf*JN6tVTgE6 zjoWZi7e%#M6SK$I(NQ$*1T!SRj%8xstu>2-Ct{wFA6pJ`Ng*|rO33tgL(1f<2v6$S z(swC_BYbmYnhKtadiQQdXBW06f=RbU=}@p-acV=3Yt!7F&CHmqF9xXLN0L$d+e?;PICWw5?@k*R69b#hwf)aiG5HS+Ju zT{OkpIu`k~6)n&Br^kUTY>oE*S9wew$pdR;lnHKSWxaYjHy@7xJie;30^I~!^nnf! zpyF2};F{-#B+(UbO2&z#*U z24p|Yh02FRE3r=3O+rNrG=Ql%DerL7ZeVTRs~31bRU=Frs1t^uC(1Yl_SS?UsdV-~ zW*4>Bx}eDT6+|o&s9ecjNv8$;%V(Ss`R4*-jWxjW0dtFku`$ORrXh1 zP5wfGHUr~01|abg%#e#gITchYf1f-pC!aIKyr9EW!ReD4;=hX@`=9)fmJ~VdO|;yuv>SWu1s9E&@Ep$#?((bz29Ia3JoL z6tCL7egN{x_drw`w>rMQeecT*yYFTXnd*M48#sur_c4D5xp(X z(eab@>Bu(~=&$fknO20I2BZ*AY7if>laF!}x41SnEOrlFxR$LR$E#WGz6S}TC$*3U z%8Fa61tQDPC=C{Z+O!KTi&n!jd|WR2U=C%%&~G1>jA{CtW`Af^2u_}f#DHS+5JLKY zIIv!!I9(q)Y}NIs$}=e`bzn+X@CIN@n(Br@YABX?kK-&OUohDZ5lW=;%GGV51seRM zxq4Y3=0MjZCb4(vb?keyacf8PWl}kL0L==!#Ssm|;~sjy6`N-?0zssKAiUi>SA?9R zJgVPZU&C^#`MHj^xkl=v6jRukoPyO1{OZc3>1bYu;+nAk=;D9z0IzmZzvIjv z6WHXmk5*Th`%;wns7WCc{!V7X#P}2G@j2nyZOpJlOrOGBns> zY=%{o2$(%zBhj3aBY&IbRYT7UwALAdc6x;V zB?RRj2S-I&xPd}x4NUO*?X?l?X>OrD!SA)%2LW*qGy$vpBcEQBC375&L!#~=9*dYz zvmfG*LJ=3g$944p<=+RK2s5CPLwis23aMSHMw?|d%gDNM(F7vo&J%>fH7W=L=d12B z?xBHU?j`NbADMPuCR=PslD~3a-O}gizZZW8)lIhG`)BoZ=hk^+Q5(^I+a`AfzUO>K zS=pw}em=UVYP;<&{b33$^uv)DBRJ+Sh4Hn|A-DMXqXn{!IC!v7U2fW@{%>RC735WP z^LzT4ghT1G)Qg3#)YZH4htzM zQ!|$g3QW=oGuqzRGF!a_;E>4{`-~Kjjo=0S?jfSr6Aym_SKCX*%zzt3oNslg#2*xN z9Qyd*w)HLT^&fFej^R!}0P1fO4&?81*gBaVtx_ zHzvQ!{nDvS`;7=d>!Tv}S7wDM_c@Z_*|6>VbNdVW%W!_Zj03>;W~gy2%g)7aYdql| zn=(Nn6u=KlgCV?c)?N_AVuYVODGzhjVjwY*dJaEZ2fkKmpcTaT@Osrvs@Vqr9hwMec+qvLpNbcFW@F9;;X1~y~)TMcy{4PKWxlY@%U zBcpW~t*owA&QfaDw`2rdLz!1Aw|&HNJx|j7m@7NObQ=o@@j|;-ns0O3uI`qoj8qN1 z)=mdXu*uiett;g0G}6{`ZjaHgsYY@8y-$?kr@vMl$t#2yHAv+M6|x+6|Au_Vd8Ewo z?ET-n?wO!YDe5y{o2lnvxpsH*I5bzu?`>cVClA0SX`x`sjSavlz}mi!ACe>H}93 z+a@e{JUsw9pF19Wt0bVSLmI4}KQh~g1G}S!tu4Av7P40K(OH9A>fkur*aZ%>1KQ3W zg9{%poknY|9nTWe+Jblg#Mgl!vN-zb>n&DdaTja13D*YZjG?58$L+s8mEA#=tF*iR z=0@Kvrqb5#d&G!|NuIXJoGKm4v&8&&b}A0;aVWo@RSyi%%ZMz!H-3B~ov9e*K>Dn9s{>4Ii#?A`1AYet2f0Lwbm`lR-qkd+#kQaFFXjE794&Jv1DH<{kh z`1X_2auc7wnY%?1;rzCw$_Gl3_!E2ScNRY!H&w;Zw#S{6!?MzM^R6XN0uBzf%f6av;jKiDhHe%#j2XZy_j_Vw)xWLDqN_4X?N>|eRESA(KC zx4Iws-lkOQ3wrEa6e$wP+anQ zByB+4#p1-FzcYp5mQ4Rqj;_aj_bPeQ#0l4^gzkZ3!8?!ptNphrJ8#K&5qb*&6KVJ% zuJT;P^0*-`5&@SQUXb4*>yFaZd+bt#7SB{LEmMNsjPr1ApC zk%wSkrgh%d&MY-rQhJ{~UmZVJEoei&&NUVobgp_+P>wvr94d0rK*I%8nYWC5T%Lym z?q;7i0dF>?t>Y1PR*!V_{!pA~>|HJ!CSqh)kb^4{=c1Bj=o|n$PzaHLQ#AYcr@~vT zY4W>P zrCkEl$OUjg3<&K#=zEfuE|Pd58v!fY_o`1%u!ApRg#mCd=FbJ|^2*90Mbx2qaZdkm zIXROQ^y!L&gT~zke&*(YzigJhj*b35{})s&NF+4pX^I#LT$O18A{lC4lxgeR@B>2i zX1C29!1W_20l#NE|BWC`yt)gFvcg5_D63A(1TJD5ucWIcXF|>$A%F+FN%D+bCqDNN zUI*pYTVmZmDtb&BKdMvZ13m_AKb;@Xif(7Ng`BtFv`uyazI9o@sbi!20y&jw`?H&R z{=G=TlvEOTS*sp=LG}0cT2D-bvu@AUqO8M!^;P0^U~nuGc7C1iNdGcoVL#wLkm&NA@!{+5BpQO3|-g$IFij;vqv&WI!x< z9Z2I+a%y^P2}rU9N_qpF-Nv5A>q#Vxq0X%KXOLROs zveHyr)1qspV8K=D!=y&+%0<%cY2?UFe@M2Fl~orYSd94v0uKIJh6)Qn65V_qAp!RT z$G{`cyN)&a=7uCucSnhtZcR$7h#*m8bYI5C7$NDOU41qJk(( z4M^V&s+Pi|e`dN-CyiJzVI?1r8n(al$JSv=5fl(~^|bX7$oS0iHhrkNGgT%xOLZ1{ zgF7jc8}75l0Me)|^Y{lq2H_sWTPwpex^_X+rK%2de90*(jw>zATBRIJZPhkT&L4`oB3~lo2NK&* zOj<8`(TW$|6v)difJ0?Uei8vy3etBpnnC@3t=nqXiR z1cRYaj3uRF4Zqr!g>qIc=FJcZ|E-(pnZEy`tv^*i$YEeY;WLv)hy-)mw3MBq$6PX@ z`t5Sp;CJVDm>*kb_IUp_HXgiTpxd;^2KMJC`8wS;HLhS;vby11L1?Ej-)sZCByR?m_F3xF&q z8`4X*S6+E%yf0C=(_Z?Rm$WsUAQC6Hr4g>r^$Lt|uUa|}u?R5{Xl$#g>DYOLzu6Nc zKW72P$iqfHd;B?d^@wdI1tqr1Ll!%+LpT;JTzwf+pyS@2=%$S+`DS6cfJC(cT}w zj2#}1`o-$U4>>6$n$u$7?Hbc6$M(vdC5nKbG|a#lc=I?`VqiF~K3j*PeHJ#uzOqQT zKHK%ZcX8R-_)2Z<+bowh;ot1%J($`@K(A95h`v=uE`k4Agvp1Kg_rb-#F-!vWvd9A zXFjC_j%gDJ6fYDP_5IH|k=s@G>F;6NKd@=Vk$(?9Yb6-^AFx`pKdy6!fO{L3{#@R= z5`k_!yM)5Jjt$tUU?(KPe5ecQL}kn3ok?)HwiQi<3^&&=UwD<8i0O76mA z)|8?vCfH+Co$=dDU{H}6TF{!d&B`o;YJNl8{C&|!1p4Ur1%`>J73TQ1^PvXZp+Qg9fu1I%d=(dQ-s?GPP>b8syAX*YFWjerhqk8$;r-eE#p z`*ks3vm5O3#q>&3pmus#V+!u<5{AL$06*Krx0ui${e^?61Q4D)dMH>rmpA0;bqF(N zkSnp)uUx#nnpukq6zO#PbevpJ0DG=<-4+Pml*$gUx=gFZVNfgpB}9Y8u<2NpQp{BT zdh(B@>MK{Sn!K(owOBFSTsU1nF-Y9p5;87jr{KL^ci+M%<|tPRbI?}~4q6&bQOSwE z>xrrc=jxZ~iLG1nZ1Kn9wv&XM5Zx%ls=|lp-7~zy!UpoiDSv7)BusW4z?YFeXf$H=nXdff z+e;Y(?fwLpsyQPz{GX&gL4v~kp9W7KEE)}}THa?Eq!3$elUbU~Ds&%+pD@XL7`D_m z1L6t{iFi61yZaze;$K~+9~|e_0v|xdq3lM62K7}WHzQ^!;u|M#Pa59KHBivwW|QZ9 zms7dV>ND46{lq)}SKpu@QSd+!smv z;?2+Bs24V2LLBVfDx7fYER=P1x6(8*ZXyoXxhkuo8J_n7(antz3KHEl#w%mMY2oAnP6w!bPan9EZwCDD_Qf7n*8FEq{@dV)!NAQxarnqeyKA$E-sp&_JgfoLD!F3k zb?Ynaj4$<*^z<5_gUaD<+)f zCI528AR$T1l`guUYn8HR`*_{%Go1JFU?78^7Q~**)ua8+i2QZP?_WM3#ZnmJLLGS; z4lc!qP5Dp>YWB~|WWLaJVafCgBz;hhuoU%>y$zwki0l$aPNRkW(;JyOj}WL-pn1%2 zyg#!Q)r*~68fmw!h+~`DK#aI?8FOUIe*%H~IL!rveyJY^V4VE1X#BA%jVrJJ1y;e! zhXGR1IR=?acN}$dj-h#`SoA#Pb&txRBQ+Sad za7~t`=$U21tQcBbg-vn^YxjqUjIiz+;rdm8A?iOG-gZNOk<8TT8%pFWskm1T2}p+< z=~~y4{sItX=|~QYS_>-V31&OgEq8idirdbpEvsEr9YHCC!9!(QmTF*=giCqBcY>t1 zQSCfQi%%w(s|BT9PS3{$134mwMv^dzo0n~hjQQuawd%xYxhWq8;y?YM(fMZ^N{&P+ z&gKcQ1UMt`1TfhkQu8)^V{AtQF7}h=^3Qifaw4a##{x`L-xr zoL~DQGTA^~(9nfT0z6ATaDEbvGxfJ+kqt6#?5Y*lP1)aswES=5T**IO=?Q%Uh3m}I zNqL?HU28hD@{>P3>^`sVyYYpx{1@%Ti#u*E4iC+rA<08F*U7K$Rr%ntzGG0C)b|8& z5;e*11j5>)nz&(R17O@gBm)icVptbP-A_;59a^?Llnqr?ty$PVr)@706%M$2E6d9L zW>h~LEjy3D)52I7O}~1pb}8`QZHW_dWN*(A^V!=cfbL;~3r>M!xOF#{c^&p3kMEG3 z3G3A2aDEMYN@O^!QZs0W4Nc+ghkg{!P{F9i#+auIbnXIC@2kI$*ZzH`uJ>^Szl_$i z^0lg{C@KEB3fdagayCPn=6cU`Lw!USED&a=-7UkI&THsJlN&FlQsBdEfQ`8fv(tdXz`l;OHYQj zW#-b`r zf*N9uM99)NQyURRL=>Y?WX(ft8 zjUi^Knw}?CVq8de zP}h9uvrD$N-11hEuL+mC0Tc%kBikvJ21^J*UmyHpo9u1DMY_kGUeXFw^aRixO%(#^kmxH=JQoBYsB_H*S`kX zMOctyqunHd{%kHj7okyNN_dM3Jszaz2t|?bu-uo5()m{l{q-7Mqtnb0ZO$Y(x1KHO zSD)$cVZrPC$9G!6-w9B-nAch0$nf#IgzL!4wzihXlg{UXo1d1{52&k5;9T8^n3xy= z`A~LtL8b1?gWqlQf}aU%WAxqD_6^GrxTq69w_c&3nUGzZnZy-w7EVu`x(HTYp!cL0 z85Wlc3fMdFlFHjUIxcRW&S!Jg^ghjK&cfEOQ7!F`OEAOXTDXIknWFmMp~6*@{qgb9$Wp&R2IHSRW>~My8=XR0YnEL%FHRZpr!uNvCU`I}k*JiwC0Xr<0E-HPeoS;mW5* zal*wFsMY=ytFux8o;UG*+uIhczDiQNyVqn}uSI$>({2vZ=WqJG z|9m<6iF*RDF@FEB$sqgLUt4`t)_HKYjh9=a0SY$p^z@mwrC=FEa<0zLk<^1KLXnxc-4a#>|^>vpQ7%CLiA zN2Y)hyy3}X%%^}JzLBwH=r5q4o=`))leoY^#(skQi$+E}Si=m`m3%5l)boSRnYY=g z-u<95+Wu!dfYU4J*ieOl2vh^;i`38y8HpNy+NjDTG2=YlIpKHVh~88&bo#p9{{5&n zud(i6{N_r>D57od{$lHJq9<%@sk7tuFd+ziE#lut!oGe1ja7rA;r)8;<^(^tLT}iX z12V3B)CS95*mqUj_}I-mKWCS2#VNn9D~PL<@CgNJwdR$BVgK{a_oZOawt_{O8b8!J zQe%M;{#}k*XaLMjW+uhAU)Nb=rJT;Ka%K0?|{6M72z*JSCHF za{3xtdhc)Nq;20|Coj$(QwR>UY7D^T6!u-ogA^ggfOCj+ykTS2eUP8+By@azc>94C zHkZF%_x&e^)e6#MIhR2jq1Q>y@)v~G+Y}N}LH=JdzCrf}G!|r#uWPh-4pJcTd6>GI jgI$MqaVZPo`7`=Q@0j^=zl2_(SOSulR+g%iFb@1bFHIpG literal 0 HcmV?d00001 diff --git a/logo.png b/logo.png deleted file mode 100644 index e4f79644914871b2568f1d79b962ed39ef47617a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28534 zcmV(-K-|BHP)bjo0;<}*48IW@Y@+sl7&FrazH_Rt?|%&P zcl`+JM^Hbq@B8^vdIRgWZSU8Q;>o}V`o3-3s;VFdsQ>YR#Y4Y;i^Z}mP19JG#c^Cw z6o)Z5-ji3YgJBq+=Z9gym;Za(58^+^uIsWa zi=qfxE(n4sineVBL6GM;%d(oLoy6##)Lx?>OAq1!vhVvo3`5g2B}vkC-F4kKj_bOf zrilzFibCAee*>^$`=1B>flt#^RaI!VEX$tf{jgsKni2wG6n^9o3W1=YcL*qiga|+& z5eguzTSQk%stUND9j>)l7VO3h#?;J!?>}eG&!c`Ehd8sYEBKdX0laP7JO`p^*t)#= zOZDe@Zdn#wqbRED`aDl|nWt&O41Vu}Pv7?q!k5pi+D2nU47yz;^iUQcM|G5uQ5ZC}eIlw3EgCKa)y)^$TRRHt9b{)q- z_k{VfEVC>FGlowcv~9}*_Tmq*9~&U+d7j6u7vL`w{bbxD;;E{7yZy0u7v5c5Z~nmZ z*Zq$E*4=mO?(XhLy$#aR5ZszTLWF!`L?D7ju~LoUQiFXZ?>)2Gw58wmCFMDsIrF)5 z=gyty{rJ5Tjt&eAIET8NUL}W?3;ifP+aSkN*6r`_f8>!z*!(M${jZM1?-~`_uS&mi z8UOfuef+GbsCeRuC%U`4=U{(jXP>$uB0aNDw9j5g_+Nnk z8t{%#XUsb~IzX;~-`w0>Q&U6T6ZCNh48D@zGtWGuD>ofJ-IUxXleSQ6wEnAoYj-ShC39h^D zx&;dsumpv&ULk!bz*7KjX=!nz+R@u@zrB3<^7S)Bw$`p)YnABr*I$2jhKNE#LxZP_ zEq)gD*;G7tPRoBB{%i2}_4UzyF&zxRLjs&g^d*6R`lo+tfrqOu61+JaH^Lm#EmR~x zPe1)MMW^DTNTMTGQl3VMU5%0>vV3MKZ}LB(zjP$~uB}(qJu-VIT@Z4Nga}X*HRB;wjuB z7SU5JG7*XS|Kfu0HO&rPS#M@9*HU_>_`rb!j(`5=e@-B-9NFcBrV15Bg)!z4AnSyO z4h_uBGLrEkiv~zjM}0TKS2vuLK)j&8jOb}X4MEzWa$hMO6I}zh}Zk? zzb}~JSu}Des?@c$wPfWQ{Qt&UQkwny_glVG%$Kioz?dZ#vr@;k<37b|YinD)c(FcA zF|EDz)?2YY`?sRyKbxNM7q7nhD$7ArVMEu!9NW&?!;*3Xk~?rjRCdl){V6>!Kn?^P zstyc~pQe^uJ zE?eqI(WwiqaxUGsT}M>UV&8l3z0{ooz3{>dgy5&yT|p5GF~R-!-%kxI!<)XxfAw3NhTWrV*`TO5z>x{Lt`OGhM>3?#WhrTT$GBQTWG)Vo8?4z-+edND`F=ieo{xmH2ZNh zn5r4yu)#8V96Ugd0!HB1=!n=Mw`g>WN256Yr2dXE`@DmIksKhvBPXWeMIsiCh^au@ zkq85M5phh}Z%4}mc_e@-mQtr0k2}~+u^`9YQW^}!9VRqj%mzuu1vyN|LE^$Z7>ae} zBRJhV@4S;?5E&>5&|uGEJQx+{z%yC~Jav*5PL5Aat3EwO#+*EP0-aVmJTc{5BP=Bv zV57c-1`z_%kbpFD>_m$W=B%fP1euZ>9i0m-P;nB9wICv8^Bw!S!56R-dD)BwPN>5M zTLB*(3I}OkbTLXfn*t1WVb-JvlXg^w?q8 z2+=#byF0sf`lo;hBf}oIU^qS&Lrv67gKV)k&@#T37@ZFrXILo2}8jSHi|PCUU^b z*l&2_jW_<;pZ%GFlG=bsg~St6IcM@cEryc3l>J7qxA?{^JIBg|U4>td*Tf6SH{Ie# zbG3-Y^#7>=AU%n+34z;z3JfEV2900?kE6i}3Z}pG>Z_|)uj${@yK8qxS7%pOcY9ZN z2c531uUorz-I~>FHmqO2Wy{8z+O18frMbPmJ%ZwB9C({Kd%#VQfaHFz>K3UbZJB41 zMkkVciHw9r=Q-Z6I4_&`K|VZSk5kTJ7Eg>v0T@H!ho>OKwWLYG_?Ikyjs(R}ZcJS5 zDNx~1X}mEB98qwIgXc{chJyopedzJZ%P)Vtdc&K`HoU#O;@zby)^FZc*HqfQYZpn< zjU^~i{N@%0fDEt-3;@yyW@1DFz)a3~hlHHk>9L+3CX`#MS4C~E}pLR$x z0(-_FLO|D{n|7iAW<(BH4zCG*lZg<-?+`xoOxkH;Vm%aJkTr<;3BRM)7V9-OH2fH? z`tH0%T9C-}B+A$UOY%W4k(R8l{H*F1%2N*hh z_{gzihwGZ#9(r%hb02T}yN4DmtZKXK<)y71Jr~ZMA!C!L#!sI5SGfUOobiM;Yo#e4O=kA1N5*5}@TeA%bvl~v#Wa2D`HE2TzNA=4nKj8=@9 zXKD8oxF*~)a~{D7ZBE%=2M^Up2XkOBbl{$}aQr%WO>e|o35Ga=X#YIilBI$xzjq$q zojZ4$LO|}~4;Migi~&PA@CDcy2Y#B0JAOK*%$`ypibh5$i#`U|$M`V7XpqMvc$Op{ zm)RAUQcF;E>+A1n~+_G)^b~iHhv^;Si zjM;E=PI(6z--DPOPt*YwT26G5#}WcJCYekJlVP9I!Q{QWbQG87q4s<8fBL6?Vhpta z{_KVGETl5a=`$zsuJGmfg=_3T<)-&ZoWeWDqU2Ys#02uFV()Ba=lFAcb5E383fzj+X1-O{3*mp3vw<9s&FaXS|*FO6X&|O4&pOL6Bwf+_BYybAa*Z%6!MYlZh+U6}AmHnW<6;)3YIZ&m^ z!jiH9Q9ufa~Hk2{E#lew${o3NR9sU)A|AU42BtW?6FvUyhFVLAWtAO8`w zR3ykz+_u(M>*GY83T9D<5`ahO6gZ3ZJ;29`x@%6o&y871CpxhQ`K}Lnu13HZlZ%10 z&i;gl@w0mX>-*6@3om<{+gj^O%}q@u2L6c!AN;@To_^@L*LUpLUOSEUwDE6fXv~VD z20{=5e5!Sxf@CXD2Q4G#5wMR0Q1n@{=*DsCR$N6M zhu}fC+)K{b27VW2Zpr%Ffc+W6#PVQIPiIGWSI_RA(b1vz%9me%*OO~EZLY1aZ)~h9 zwUrE_9t_H0iBi}BywMQg+4DGlav;t~a0k>h>aQh|m!$zSG;N6@A#jNh=u8@ja@l+; z@L|&pH{2lP5hr_Rj+Vb496DH4RsGf2Hz~zXQ=$;1feH&rU%?NjL;&E2QnCLc(Y~L^ zz4(}reojJ21epzB@VI`0-%!l8#_%0U)MnOU_Y4m0Hvua^<>gD3E&Jf>ua7eYwKcU= zTh%`c0x*Upw9HfIl$A(QEIBe%P-pPS1nix=g#e*QfQP04ki5X$j0SjDW0U5I_9I@_ zDwahKe9w9v_Cx?sL?id^>EC-`|DmHt4h#;!k9qgK7!@}T+2!MDIXIoC z;E#-{C!>;uhRC1!Gw<jf3&z?02E0Q1bF^ZIp=z{K#0C75V>9?2W=xXA$9L!% z`6x<(G#;W|KZ#|8 zGFT>vq0=5=e4=BJ7}QD?m_NSX^0x9mK2p1=KHuM3z5aMpWmENr zNl@8vadHyZvO?qiEsAGZHXCZQ-V>Fg8T8dUs$2A7L>Yb^vgx+iZace3?70wv8U6+* zSCyXVG=U>D`eeg+EO{Qp09=3l_4WvXiqX;@u>C|?_j5EX&jLb&>xQz(o9!oAv_#}7 zL4%PEl}d1gAYOx=AOwjG^)H(r*kd%yZ*kM^=zMB9^YwLK+v@jE_txy#y!QCl-#~Ke z#25^`d3HP54S}1nsF48Ym=fE_H_8x_`bSgA0XK}-j0cLrDAK~z5W6 z;K#>n!MKiH9Sx0j^pi}a>Yh?Aay6>P03=_?;+}3g<1%QoeGlq!F@=vH0fy2cTLggN z7KI8O#4gHkVizSNC}vji>yZHcqsrO)6$6vxHe}>jCNJnl03$@ zBP5x0yY{kq@CWrQm15S1OP9bhJ7p=^&aTc+m%shpQ0t|m?IX<_8*8>D5x{O76qDni zt(YVRcv<j3JV2Rfxxx_x0PG!pAOlJi1F_hGqCAP_T1qW_QN49CY{fZr!r3as6`pZl;a!zW$ch z63nP9(V;!WB>_~5#3&m*vWl2M4>9RjPt>Ss>Ob_-YMVHYc8UxfS$pUf-pSm6U(aegRs4`^PNR+9BJKhd20Ck&-b3|-@f|om)~9V20m7Oy0xjbQ3-Y3`Zddz zF2g~o9r$qvA7y?J-QCm8LTuW!R@Shoa>?4Y8( z3tO|Ra|Zrte~+hGNK8Bkem0iSu)6J?9r|zECK#xek%D1I^Ry87O%?B%KLwZSw4Kg1hfBGR}vS;#h z+jS^U0Weo4 zKx>Ih>gdC7BE`$(%e53VvmFTV#phsI1R_K6{a1a~hl%;Eff0K1$<%^-Ztv=fU7@9DV`8SWCVQjlsy~uwak8 z9mh{DuX^nd{CC`O2md-bG3nj5H`D{QcHOeeQ->~(AG-YY$dBWrm&OMt`szM<@4bBo z2ccz4omBvKqO$Uny2b`jQ3!Y82>f=T8=@nmT4`GUfm_ z1uJ^|>o8x@2_mX5vQb8K^t1RR)GHSffb!+l$szwPPYt%MSxUuyj-|RUUw{+8Te)&2?%0jv5-kU0)>NRfvV1Y^ z|M76g$==3~KUmz=+h@tHtFyDdVS3%2@c zaW~>d+}+)s7$m_Zo=oQdp83(aY_i+lTiU0)-94|v;pAjyGUt50Za@AIq8nxvclW~{ z1t$ud5p|%ZrpAyM5fN8(u_@w0LJaV=e+k@Ac|7GkurJ+l6_sV!Wj6M9CD{p*(O$&< z+->&mxtkr5d)Fp+6P$-?$H;(U z($bQN;QIxInOiyV38HeB796Uu73Ez2O-WA0HjfCf$%3q4-j7okp^9&aYT#f zFTwK1s@k(>5BdywURqX6+ohh~xu%L7>1f~VaEDy?%T>Tg=iJ!!+RP}k3x+6u>Tk)u zbai(51o~f1NyY%A?FJ={DnUFHmCA}|oE&W0sM?QGHUzUp-=oh&-(OxO$JAwqx-;HOhN&_1k;bly=VV^hyeJDiVNT~ZEc;dhBC?6faGQ? z+%LV;E4_Pd?tZWI!8PgljTnDVM^{Hm?nw#qOp?=5Jv}^$@6v&Vh<0;x0Wi*i-^fOI93E1JASx4j4ja)he< zeSEVDvhg`xUEI7v(( zq=3x()i0oN9~F!Hi%$>#VgC~k(b3gvsVxHjxuG`TM+Hm`wcThgs?ADh$WN@!inBD* zrRSBr@93k^o}Nx;7suS3TucFCg%&oJG4XLY@xV{iFWlQvIyN--uuuB17t)cAG}R^t zxw|=3RMq$Pb(K|@BRj;}Mv^+?b)^>v-)csYxR0vyhLUavUM19~>|205lP*0e^4Tu3dPr(Ca@c{PV^v zi*a~x5@r+>a900ZSxzEc3)4#<^i`yUnd+&XKDOuBA>|W?l+T?}voh9E-oDxOvh(2Z zAQhO&>B%16-n89g@Z;E9nwuaB28M27C0sJqPrl+_m>ilD6Ofw{-C3SCcfF>sB;MD> zmc;zEo*v3K@ZgyCg#5qOPf)#9WOS%9B3~en2;K5RA^G?f73Esn+IxrQ7S-I&uNex7 zE5_Kwe#A_JaOd%^*cKMF{eU6Fum^U4XzdUK=6PIy{_~%SmHoqWzqmv04fP59xM8Sm zEnS_|m|)c3aBJBmL(M;Z^xm?SE1rMprPXh~@xiC--~Z&ZKYjkyo}HVu)s6)DdNJgL z_?)wo6Pg&p32L*>mMOoPUyCpJ3r!9a6cO`fsNY341YXXdS6zwYx-K78-Jw_jfU`qEV||Ms`PUApw8ZAxER z=$qb?SL#cOm_YC@4TX7ujlv1G2uI9SwB)aT8AYBL*fcKT zwL<{}G%nfMs+~BN5g*i8TLMR#JGeZ%?weN+89w*nSHFJ$n=e(gjJ#r1w9kwUcVgAo z7A8f6`j(XxVF6%^73O63Hx)?cZZ(yqVp)?Pze2x22_ZT6WgN8+Eb2Y zT)X}c?`(WY`IK8`nO0!R*3;)B!mfBZSb19;WCXiem|bY@=){dAgn%0&n!J)z5{{^- zc?YKz*FVfD?aL{B!N&5DL}zUS8g6r%vqMyB95ncaF+{@3}Qt zA2IL);GcILrU!nKTYRi2O<<(iFCpwB0w(YcRT83%mB`OooipWWQ8QCRv}0L$`Tu&e z>TBAri`Q>h^#0~|bzN2+x7xZ(`QD9&x%>UZ2Cxt%_dDmtZ)C(rIA1cIzS$zZ(=#*F zD!tt$ogKc>UAy7<$ye1ctyVR8_MK1v@W!84>^%Ijk@q{Mep|H-DA#}ZV5lxJ_(4N@ zZiG7%AgSlae!MXzV>AD1t`?0R-dZ(hSKpRf#?QjClZ z2n-xJaFFkh!N~3WxQlxzMjOHIzz;ErWySCae)UV5=YT0IrtOA?UvY7^i3@Opvn6xm z*1=I<8oM9%OaIV1_-zB{FMP9?AHR6wtp51*7U}%~$*m5_tsYr?@J{c&zQ(k;z=wSe z(z{&8*KeD9cn$bBA5(it-S*A%UN7%B_J=i}zkb}{)iciT*~V{EJB5`enYuO8S}@gC zG}~F~=U{dx#xi%wW{X6V&&iN;J%1H72fBw?H91^nREpM>t`$$+=0NJbKnWWrwlMYVYl|xSj#cEJy)xEW1TH&fX=!gGz0)PVOFX!X%n*TLd0yZeF(L?p zUvUKrkjRc5XH3nv*##c(&;GWOd zX`HX4g{6fBBfD-4$uv<)MhY(FwMQ11HbmUgw@xD@_Z)AGG)R>|Y@d9B3 z{)lOj*>5-e3z80^A|5lDI0P4eIfdTnGb1A-2pnfRB08!tFW=QvYoIn?`r!KP#Dl?+ zVeQ!Bx2@yWSw(&Bnfto2$7NSL>Am);fy&wIb&`>GkS0JRNPz?a=K_0(fSM7i`+>$U zyJDqj*r)Dk?-=`h=$`Sx34`Loe9839nVT)VY<94Dy0e7R!h3b;J{J0pF3yzy0` zfsutRL!O2hs*|e=^^8%TwnO#V(tABf_1w(l56>8{KI`(8)!MYVtpoL6Ut5haKQ=ZlAW?*30>hH+eR57~ox@!e#34KW z*c&PzqgYv4nb;!rAgCCEeL_6^qTt6(Vwwx4A67TRRWq`Z@?!mOHs#IT?;+Vged}6v zVY1t0`^1=#^316I`U2^V+Iuw_T?KIv0b(Br1?n>HM+V&Pff_i+EFf8Mv$g1)gUiR} zUTY`B^Jl2m2|C39uP49eD4E>|MMat$`vy3piL9M<>MNUs2?fm6?U#^;o=P ztMcgQq$J;MTtn0~bSM+!IsqRJKVrZK?+$&BoCkYa33x1|p65x0UykrcnNhmg-P1{c zm6*1Vms?@9|NZVVSbz3bmkg)TLFpsn_Wjs{%X?Gc)4L3zCOh%4hC$PCw{|<>7ZnLau}{9h~Z9aTh5BBz-7@AGG8MA>;)qbb=_UJWTz^lmW-z>=syp z;$yZRy)!%WaBlPtS7vXu0WKG>$`VS6+S_{Q!X=@M zC?*IoICO)|5Zq5g5;lKIdYZsP@?*Qf9KU-Jv0n)M+z%bsgv_w}!Xv`4bTGM3sU1xZ z_om`Q1~v%Yfk&^Q1vnSR8asf^+>}XpL;}ARX8*U?bJEFm$-Tb0(Ho=<`B4y%c!78e zCwv;$B@ojsnfgFBG*#x4@}>8Po-+RcUrItm31L!FGI79Rnu=t@S8h_DeqLXnIE)Mu zDH3`1KYq!&U;U%6xi=$c8ysuWri{X&)*~$~olC~%rkN1|b7MnbEG#?Fo1k~czfgbd-!-zQOQUj9j!BEsgZNz zgJ1@DAS4(5GF+eB1&b>fTHvbK`4viC@k(JH3er(jkP;YR=TFQa7%&q1>MOFMS>AzF zbSV9!+A}a9Ff=TXSQ}vT-LMB?eFBtJe~X00-@M0valeAUzgPX!-bl{(sOnJ$IZ?xR z{+v!#W-R4dpaMuT<{tSk+I=3z!q5}v>~gD~S7HqIDrn*_)x={mk`vaqf`NApHP5u< z7AAyI@5!tfS>O2Z5bNexSY5;}5ld@fnh<&;I8Dy&`|s{w@c%c}w0yH=vxT`i&XvJA z{lb(e>G;iA1++5E+67eN$gY4N@C5Me=x@&FQ3;}65C^CWkpM|?opS;Mvv>ODhMLLx zNLunLu7+UeUmw0XNa^pu0Cs3@ZU*Tn1U?o3rJ-~sKmTy$$8R!~qEhVX0vAE57!>g#Y~T#dl!* z-C}?YnueAp!R_6?NVyMs9P&-6`43MdInHUhEy$*`KX72S=rA0PS82&&wa$O>{hin(bp&%N$ zZ0MO85q^YRYz(!{c9%^z=S{U_&$i~xH09LB`JPfaKm?jdAG11%^)hskSS00KVrCOY zAG7@Aa~bO(h%1p1Jk?n-r)D7!{EYB(e4M3#K>wq@kYZs~Dxb(wD=zZjm~n#26cq3s zL?8xaU|Sg)ooAeSb#L{G3PoHef2mbMvtf_{q$*Ndaebrrib_2F#0S|Ft z4FG}@C)HHr;^GMiQguVPVp=k*5Cf0`rwi}vKN$WQ!A##0ri7h~KZTHAX#J7`M>|q@ zPpCx9DHp?%7{-ANSSbHFpXUdnR^7ck4<0!j6dFp>J?(0IkcWL+X&T8MFveB~V^|+V zCD?s^jSnkRX9k*NT3`r~{y3luPMCypBVQKEmC?j- z<6K`An!dl}YGa(+^{n7~MbYC8=_vl`mfXq4tjXGx(V7%VQ)aM*_E+ER*nV95r245# zHfFIAVd#7EynHROv$23nL_`?!-{gXks_Kyoma;Y##q;MDo(A}*=YC0BX9qJ)Qm!Vo zw09ClRmdfN`;&6N*x-0_cMt)M`(jm6F;tUkZpL7uQ|Vt6NV6@ZCk6R3@`Hh&>ZeXo zl&_uufb#X0BCDG-gdSW=z(mO*N)IsERSrI84 z^nj0!+C8V=v|Jk-DYQa@SN(F6GsjXj@*1w7O_1&@ND0$ z6wv)tt%$V^V0wZlScQal=;?$Aum;GW%;S|OOs)ApJ$yJu6c)q#YFg?!Jw4lt#%;Cv z@&;a-55AS@e&_$Mlmtu1Ov6@VI>9=-$Ko zmGpLV5;wp6tCelukq@Xsis_{{X|VNx?fi5d!vby z$=1U0_5x{VQCoK0D+ewwK2x+(w`jRm;VP}XRc8xdJ74~qLFMZvHLET(y=GeffkD=~ zgXeed+~(=!J~llmbgHcV%J3Yj3e$&BG4}|4|3pOatG_K$By8g9z|a7bWSd(WDMv(- z&Qk$mHTju2_W5RkuoES70P|RaN#vi)=uMIzP&Wy0UHK-WV3cVS9@)QtKRm7Y5{i|| z#R*3-xPa^#PluUl#8Ww;j-C0L1pA1$AQgxiFfoM_h=WgtR!rra37fHrfw7VK1ygJ5 zOH>JL*|Pc2(IZHL3#R%e#>N(A#`@r;HJ|~ww4yRvIFks1&^fq z+(_|wP!tLF;|-b9^=T9J$#;kdbdD~jsu61W)zSyxF3YeDPEsqF(z#zb4^_6cFu)`Jn^1I`nPtW}l z#V!g@K~!9Q0?}zM{H1)BJb8Q!l4Np<|D`ie*5NZGpEZjd92}XxfjWoz5auMpVRup^ zqLGoTD6$>n4mHo`DE`pA8b!)jiKLP`+p=W~FjMABUmP$4Cr6@bv`B`_H;61&zTsj~ z-yV~g5SN%hL?JdNo-qy{p02c6nVDG*505l8RwPmg9PFd3t?`AD(mOjfm#KyAdgMt)Pe zO!v3s&$boLbQDqNgO5NUXreKP+|R?BeJEcntIHImxl))D>5Dk-w>h2_lJBDlT?cc3i#25zhq&# zATV zA=1UdvdD1Uda=+PW)647kF3XoeTOwba1@tMF|3UC9V9tJya)h`js>ysonU=Xhu2|i z{tzmkhs6u1u2ihQBsNC+u;?kpSi`q(@VfBu(3se$&3lin-fg-3Xyg+0?3c8PpVz5e zqFc5~s|cfgxmNLi-WBNM9VqF}&x#2iEV??|mOs{%LyV7kf3gg3Tk%v!u_*VOx!yR@ zlsVU#8R8fGhr^MJRT7t|B`wu0dPTn+egB48J@9js?dA<&FFRgrdegk=Ez7nw#&sX> zIaQRKC2Ibkl=GNGJPPg+I)(y>hAniPpB8=vFe1h`Panv6bdu3^jI2Oy*EcniRK+Hz zeF@uD>9cqCe75qK(%J)?-rlS9@e$=M2b6bg-0Bjv^B5cM2srr z8Iev!@&i9Dj06eLFAx^?lu$8{7Yj15C=cWLaKXvMs~cJ`JL0#>uyMIw*)pBH6`Hv# zPG>_0OHXGl)y!L^Q}v(sgfN&%(w#d|mo-wJN?@Owj_H=d+18?&mi(F4Jkos>0%85h zPFiyZN|W9>;rq;~>}U76FI7*+?0?O$0(O`0Nc%bB>zG>O8_Cn)pCLL?` znqCPE7SCKEfCZ!ThyWgSi5S43fxZP;KMwZ`&s#x6#HUzEnECZru7op~c4=^4_<>26#Zs@tnsCQ+1517I@w;Efy~Fj zn{LfQ^3T%S+f_)Ih?wzsbM9Pwy0)e7?~f-fK9&63KA)93#jl<#N9=<=G9N}4*oz(P z->__!9ZhOqHEUaa#LLCmc}g<1Fa|2j9V}dw9rFLlmC2vV^n0xDzctGlX-9wZ#fw&| zs>hD)+kRr-Cbiw4sqI>SWYbz#^HYftm!o~GtaNvsKlY{m(XUQ!e|N{nOW1d0hUTWhJkJJi+C%~Dh6_%`$NC-bwe4h~*pDO+aZA~}!* zXnnDuC>w1LVllSeyLST{BArRSxIKU>mOTJD0U=^zTE30TH|Rzzu!!-93=qqp@HwQ3 z`4G-g9K1`c!$_emv=SWZ%Y02bfj&KK@sd{I3fO0qKD1WT-&AZz^UAgU(#oIrAVbABw4t}v>_n(*S{A}6o&z35GymZEg!zLf73fmQ*ExRM)LzaOKh?| z2|rkJ#1bSDfYFZH#(F2xhpUDb5bIh)0Z4v8g}?a~*I{Txh*)V6)Y*FFn>dHz>7>Dx z7=kwB+|SrP4_}{zgv869m$z--xaQQAWoK(vYUHid$^m{nv}LCYmY>O5u93U^OdfQw zLK7_j9TYyRntRyTf4U`mqAeEz00n?LOpoN3rTd!mq}NOHQxlNh&z{O%b*|)P?fl>G za$j;f;VqkXImfpEvtkz%@FXd`cD{6lansVnUMi>5=fS_w#N$RVhIk;*0SfeoPl6P> ze`0*x{j$@sqk9a_s>`^4|JFl$w;fd8bZGZx_Px8l-oNuJPWJ8Eyl2~&%r`r*bMv09 z8;&czfBfrLl|Nm)WBuY?pDy0_<*Jk0-v{p_8&|U*Ra$d+;~U3!tUsr5C_KQUv%MK; zQ7){f4Pc{xiM?1MU6}poY;Z->W7A=;!MIST22A~C& zXyk!9)bLm;Xy-1`DSl2R&d$Y8+MPWsrvOrXvP@5Fk+iE++E)@26Z_IZzuz2Be^IC4 zCGC`IE|o}sKaBwR zl@R?iGm|Vy$#cXnVolK-gLp>Qds(lL+2n1kI9K1)z!Ic&tqt|IHnv-LY~QK$$x+1n z=gWZ~A+M_RhWhq*;QNCcUOD*Ht18<*KBuqLo3L0a3uwzuoA?~Bg{rTdoe!~yao1byq=|)S;UWaDuz5G^YJEV zu)>UBnFm8tGiBu+Un?K|RNeDy70Zv0*}QVpbLp{=MJiVpY2+d5mz>E3d$=F@&k6gB zr?MBF%zsX!_nf0qg}4ysTHUO22l+HbZKYxJ^+R@V7!Tf&vJBh~-^i zk{=HL;{YEYI&XmF{7|6mAFCVf-v0HWFJ1xZ-CwRbxZyQbrPt2vd{cGvoBO_gN9V{k zM@xNQPp9PMc$sm|ielYelsgg*>bu^@in^$3?oB|hpaTJ_ko*WV5EYA(2$6s~hZJCF z%sRvXz;m4=w1PoLsE0KYPzRU@^iB5k^+Lg{zR7%Tq&}?A@@x!h#tBT%NR5t;Q8}e{ zV4w2d0|(yRXAu<|GToZenGsSD;+*7R<#561^WECd9FD;5lXHKe%y_wUEk)~owpa`N)`4YqS~SH0l1`c(99PZh2>-*70Xqher`hj+|5>BSSt z?_BCZwd2;q+ydqW0sy10nG+&_t8`0VK3l$W^C@d9Vi~Y%^t?(GC!XH!1f(m4GoQg{M7j&!sk3$*%^A^AVWwZN#Qq6zaqJ5ulXGG2IvFRxwaEUMf{h`RU)@?%U zW8uGTF7xa;UkJb4?{9wPd>O6>;o+qlRKvrC-~T=35rP7UimIrn5CwTE;V%JGFRaks z$>>?eS{^y@&HnA5C@cNxllAYMR6WWl@F%rSZEY1%n23ag{kylQY!)?ktyGJ8 zL8oTzL5EQL3uE;el7Z5>;l`P}10;F#0&SP>uwSZEy-Gd%MXg*|->>in0V^WhLJIcZ zok*&`?OJfxBKej@%8+}>t^AIAqmz#VWi@TR%T&WwU8sHgQu`W<2GB+9BimPBZ2oJK zU*-zFexZKF*`inU%3jpWdw%^v>VJgf|K529oM0Zoby!ORogc>im{HTb9r3v7tM!L= zZaBVINl)uUaIjyWe4den{V&OpIp#`Vf4XzyX9yq0R|1S65AwC7DPt33#q#LD*3?X6 zdjnD$3J_kISoBaK@Y(p@&;$ut02AU}EKSP^pMzk>&_w`14T4De6psKf$*w2W;*8{5ohSf%Fh22( zY3%b_dGFY?tue2I)e=A1r@@k8q{_bAdRM4_ zVjG0TP;Eb)`xT{Kqhk*X3Ud&Zz{b;8!~+D?bH;H>p6q$_=q|~Uy5^Rtsd0rY65=So zsPORN!%VkD8Z*zjSxyD00EXY8zZEMb0~LtE+`x&Bz=GvY!~*%kZb#aSk*2(WR|+A) zi5TBV=tE!+anM8~R_Df6l>r|j>!-}jObH4KwzDwI^mmx(D=m%jadLDjt1jBL_wbT~ zQOgMKYUQqyRbf=Tpq96IhwZ6D`DN3pvR+J3l z8}XEc3=r)8Eg0lMIZD!s>X)8~efLrujE=1*_#Ss33J^LTYIsY?1G&s6_w%Yz)hdIE zW!lBWm4AOC?Q1>1g3=P*bLVIb`i`&ri_Nyoe5a1SGdBs_RWiJZ(FsjHg6OT{hK1@1L|_)pL65^ zGXGWM>Q@cQm+KTQ(=1qdw(NHYEe@Bg;&_-ZPHiAkU$}*`?pvDFRO%&v?g~~TvJK}ec0uTz|#UOTo#MeNcvnCSu zBMu|MK|Ygs9kfDy4xTP+C-5$=FwP@8JBCYFum8 zB@gV^!uM~R!~G3UM*3j=R}8B$_ke$iZoyLBvc7Ze(DB|J1eD~q)-!+b8gTN$}q=%;vHoa@M)>n@k}RJ3M>I~r(c z9N%^=7$y|{;ZIRnyYhdS<u>K02{6%V+AE~+Cym|f6#3KU(*Q@1JMzm)n0_i|5~pMZnhN z=_$tsY|MDnxd_V;niWe%i&e!TZDKq87CA2#ljTRT%sekZ;N!1P&rISPpcin~;pyDG zZ2Scl+@S9O2|@IR0u9>dSXkA~)7!{EKg!i&Bqxlzt6V>;5`XK-23bN@(pyOtc741@ zrkn9pT{;zca}9Y@4LPHYxnuQNqqSL&YSTu!-jGQKk8+*48?BGah7v2n6EHn!G30E?dpe#!R^ zRlqt!4`J|A89>1ncmp$08e{-WkCg{cb49FehMk`$-^2>^n1oyxtBQ-TKgA%(e?q^^ zyu+&`VvoVdyD<8w&WMePVTBFqbUoahT`!r0yPAhN7{=M?R)*T#EsGtix?13AQWI(` zAt76zCTYl+YtN_(wrYxUo~=*4QyMc?7CTxIJyss|usG^oVc6}$@R6L5hoy0ookjHQ zQL+K{qMwUWe@egmsuOuC>a_l_>GcAcj2Uk#gyy7e zC4_`qlS6bbIKO3>x5lcC$d3sBQStY(LDkFWWES6Y?L1sQBF&4GUF+MgjXioWF*AWF zM^gXiZ}1jifA35s_!94*>MLq&Q0gED@ObK=i+zW9#4Uld#WLdJH*>FaCAe4lpYIH}97%M$m*-FE z{;iCl`xS}g?j}16W;)9y*J?!P*X&Jt!Fq4ERip$vHdPdUJ4ozXUtm@iEUB-rI(ka0 zxVS)iuWgzMq8)|PtvQI3@#cJKSNZL-1S?DXm$g%o0c$OrR-^Kbz`hD+kH8|a2MU3H zzbDwxCuwqO94`ie5+4_L-pFuX-_p+m|6gsKdvX&iLeQm#`Iu0G+C1NhX;xIZSCDyg(Lz0pc`Bh3vYG`;kf>Gnx0Y7uC zfn-mr?jICH+$xEitWCOA8eJ24xirwaA=IWR!l5bFHPhWRDpn?qnOjj zS|9mQo+at=)AHP!q5v90B*NdNt0spf!;l%G0d)3yi=?xH3b3)JEXo5%>ylaIAo7NED#mgs`NIq%R*k3`H#~JDKcI?&e3%;r0nCsB#*_$Hf<3Rq9)!8^0Of^W?d+I!5wS6l0vb&`d^8fXP-v6;)_dk7d`ZqgW{=dUX&#PyCa5{9?8Am-$?dC|w z>8f~2wJ74CY8&vT8O$x(xkvB@d$9%@)5CKk11fvEOK(pU42?!Kw7Xrl?I}xibwxpUK_ zC+{*O5gAC6Krt#`-N%-BOD=2k(Zyy%NVCQ!f#(lQo z>s2a2%T8w<*1Fi95tC#2 zYp$n?4sd{<9d45?2LAB+Kvjm9+aWC=)eoig@byc6Ht}Y_oz)xBnRw1imVr;6I z%KEc(_@Ps2o5)Vd)-7)I`7)1_=05+}xjsR~VREe~JGDJNV zd{1Hqu}{*0we5X;y)Idpx?30|`#Cgc$0m5$l*f3pdaC4Bon)w*=IZg*93t~UHby(Q zZrq`~$KdplmME8p716hHLT={;Pd4UEv=mT|L7(M#Z928Nl;cIYnkcE7o-lGAZqAin zucrfRv_6e6@Ura=e>k4<@`cuCb~x?czU_8d95p;t@_;=%Cv$_1FtkK5t9f+res@KF ztaoCd-C%VZ!y{a%>2M%H9vSy*m;82r zq*Yk<%6Bf%hYy7CMNDv{-z?-d9);QBr6CH9-d>|#&mNr ziX1*B>NnX_arLrZagZsCbHU9MgZ0D)=6VZ@5+l|fx%k`t@y{L%eRciT{6Gh3XTex= zCe}NjFxkXO4z0e-d=~Iy3?c)jZq#=rUA|S5D(1g^y9NkHfM+_WY!W;Wetoh#a|4w_RY`hg zj{naW7c{KBi67i8i=S%Go^Hxw=k2nNt&S4ZInZ(hT}H%04fON&7e$OzT$SGKo8>y= zUcQ|T2JniRP>2m;$)Xr=tTJ{m&1=hkjsLXAZ?!?yuMb6hb=9esm^QFj|NWlO<{(Qr4L=Wg|i+0J4vC`a0U`6jb1 zIdq3zIxIvSlzz zFnMPF_*W1QA%jWL3rCp7&_KWW9zaDr|7n#o|(8C4mLp@aY zGOa^0P%EbZM0z`n4!|f8y1{$%LLT*2LIGS6V?o4hf7x*uDv`;5zRX-#Wks0v`dwUGE>bN_{OE064iq^69V)|&dBmiGR>fk75>Q{`soC0Bob z%O3>~XM;U-!1N7B0dB@)A!0@M9n8%+%{u%FuxZnwB#p*Rq`heF{HuuukxrF9kz^yu z3*L|W#zo+rYf?@HQ7CF3=J?Oq-7Vb7aIP~4%!uJ20|1^`8>n7b87;s$-u!5Hd3~(i zL~o7sejlLHmc?2=g()#U5lJJ{vo0QP&C!>o-4$4lqNj&Xqmi3Yt?)4vfc!`D3r#P5 zFz}$G7#V;(fEt8-fXtWa{#z|#kTCC>>8>2DOf=S1U8NDb*06rRL4uKWmgD6jTc<)7 z&oXYYC)VF^dHn5`9F~2ACKQ7q#b_XQjDJa2NwV{~btl{x>r}p{Uwp(O*U};9 zqHVgtg~&6y-f9}I#^#CE_BodvvR&K@s%knAndC%Jix||fK0jg`K@Ipyis%2chkXRw z{nySPn>V!Q>9=_$$Vdnxrj8C)x#4aMR$<`EbX_*s13bc9=yKG-1WeprLPJ(#lFRMN zWa&Wtct`2XaARdgluvNPm}Dlp@3x(beQ#<2OL0L%7=Y;hX}K0)j2lb75egI*zF6Q5 z3t*zJdax*bhOv>i`^0(yLhEB)Qb0f)ushyu*Kz%qbW2||DF4EwRNX8^*C2S;9=#7f z+OmA*+poO#(T-i(w$6E%9CFMrW%>n{BqXL`DHAmjHBlm~LL7{2DxNdE^fSQ!-5Ec{ zU?yR#D!`rx`A@frM)dZ^Iu~;T8RRtL)TC3!3HFczP1leDI~7Rd$pu3Y!jC7Q3lU(KUCRpY%?_FCt)Uuhv^CGd z#IR>z5ZfZWb*o_lurrp+f-u6lpj^0lTH69TVvI=PlCTJ-Ys&%cZ%Xy=^AZgDBI zxTF@F2`3rdkBPl-nmJ)p%xX+7A$R{C;RoX%{M)Dbi-dy=^-g2tPuFL_{a}v(;Dp(m zH0QE|A4D+KSV(43cV@S#Z z08I!FnHdPh5bhPL0?KW`ZiGKXARTU@%tS(*V6fpvRkpr{`bQsqzHIqh+jeMgQ`Uar z#n;|=>$A1*Ygor6_T|A}|9a6^8;`kqR)W2)Q?8?1K1~v$Q(Xkn=UG(Z zL@Zh;XyRvt|K}I}idkaFZD9o1*qT=)1xdS$$l=2Du>M$WD)7Vof(U@0Ba5w%wdE5P zM);4lWE-jNw|8>1cX6hkfZnvS^4#)pM<@eIA`E~dfC>=8pJ)=+z)V*$z~k$SwI9$X zGlO-=e9S{aO!r$$0-PO=s_6gmnU^r{-Fzzb&WHT*ndR?&ptO3;`e&b8{{9Ewyz%De zfB54|@4mn3qHU^!Yk{qk%=#-SZ&eH;LB}hq&E~0EBBc1(u>Mo){(taI)Le=a(RY!Y zmg-=lJA17J>re3gR2_TjL|uk}f3luP4qBjKrlWw|JQFy5EcA|_P$O&&GeyP5;ApwK zyT-ViJ*v1$F(9!c1U`uX90wx7XaU|UJLxPJfnIb0$)VY6WmJ4%@r`vBdz$MVKYnK0 zt~1ZS@ba$RdM+MimiFnt{{vueT=VAVFD-t3(V|taulYoIuYr|as;6JAjZ?O*V_sN9 zHN94%YaP1}%b)z&Uu8DDK_V->?4KQeHpRSoQHxDxSyxAWpd$-n?cTjJ(&d7*rwns}okXxKoZP~m zD?gFVc0h#84AwFZdZxd8y03!d!c0$Py!)knyAQng!51HWynWI0t2S;@z3f$ivR|?C z-6hM{ezD;Q!vC$cUs~Fxx%pK4hqNK{ZJcv`1In-U-eN=Mi+TvSpQ4Hdw<-_3cC;`^ zi|@&~C=L)4S{7=GUq1Zvs?m`Fz5)L9cu4!oCaTk>YO~;bQm!ZhcDV(Rg=K&kr!4b+ zP4?;Ihca?9ct1mR*0l8fA=dp7>i#lk}gMcXLn7&qy z13BAYJ3COHf5pfB@|Abr|7_9oFYiBe;kUngVZ){qwoW-0ZBpNPfAdDAlN*&zJoC)b zPe0q^6WHSHQD$wQWo4Hg5L(gNK1{ZpWT}80!A^K|L8@J}+e+w}RaHG07jX_RF^qkFT;MOA(ILmC;;J)D=6u&@VjVW zeoA|S5>kw=2_a0eLPiWuO0q8aZX57jW!RZtP>w(KdSJ%kTX5H;YcFJO1DQ_rI@s>vKo9Vzj%PcU4$)|DOE@AFkW7d!K==W3IJ* zHWpt@e0_W82;mZdS4^_}TPD4@%7`l0psBdPlHouG|pTimiIsX&;RSj z&1yzwQO8tm%q}L`x#R;g;eDbyrWSFg7vo$#E9_kIy!}dI6KZb^-39e|p>z@NTeyjK zg9kTnyIr|rTh^%Q?4hfB_QuGtLN5ps7WeW`1V6hd#D?s4i9W#Nn%%X$rZj;2`l)Vzy%cK<{a7Ehl3QV!(5KWr%(FexkKl zo>R`}h$_KBxL%xaZ2P7^f4X_uiZ@<+ZQY*zhUV7EHjdfob$dDX-|qRCfxf{lp8l1w z33Z)aH}BpXn@jK)@aX8k1z?wT0(Iuu7-;$i1SrN(1Hrc^bDVseP!iLKAGkPQ*3(ca zjrX4GC?%#e+ffcxArI!-%W?F_+Y4O`bv{}5*;{Xawr!WD)>$7QN7{q;yq&n7)8%|` z|KhTWYr`Xd#cl_9G4DGcz>6*5aJD*$XeO_~_#ummD(eT?!mr3;zOm z7unIpqwq>pO?F;Kd&dZWXkmXe*1ib!fIW7={7O5q%dd2Ibvq^ISQXXV6ja-k);Sh8 z>^Y@zB_vd_qOmynCBy&S0bucXtLmyw9zEo2u3H@8Rukh{6z&#kqj&nqJ_mdI>9L10 z{$B8mB=dV(MNjpZrj8D)LN(Tw=Oo1zriP`5xP;o9x|tg|GF0C6iiuh9fBH|q->^~D z$&K*sW4_0-v$D_SgiNkqU|CLH$K89Q3u856h?T&eApfL%o7ZA1w7zJ#=QkC#HM(Ab z#%U!^WsMGb)s8hC<|(;5l$DuO`n-gudJy#XJAC-jFQsEJ<8kl&g&;8 zCo81He~rErFQ5v8NXy{=-`-iUx0Ngj^dBzs<4krYOcO>^5;KX-D9cjJcE}(*wwPHK zo5DlOynCd|yQ7d_;{7=4ujfw3zEi zKl{s5m#+-~yS`3)`KU*WdkwLQ6@y_Y1c2Eo{CdOG=3=UiJWTd1sflvlmMiobJT@L!V{JGczBUn)NMPBg@usG`98f z)jyB|4N>NDsY3hC=`E>aCF}|Kp!zcF?;lxz_4--&y{U#(kJ=NjUvyj?Ur;%M8fU!2 z9sR}GOH?!xk>&Aa;}_Lca^*^0a>(9Hy=9aA{_G{c8SN);k6b~=w z6X|q3!4YQa$>uYe9BJ;Hb&&H8G*M_;d2u%7@DrgP0==ldyau`b@kgSe+CfvZE!6Fc zYn|cqV{`S7H%7u)Z6JMX;=z%V$C0Er#aSx&m773lG9xM;KKMU1uc>r5IQwkH6Xp}< zon7+Lb8@1M0$9|OL;|FoY@yUh(-82Y^fZO5)Myujk70OOYOt3Rj~~P@BB+S0Wq$sK zX|5}f8H;6&@x0C%)B9uN$?Q-tH54hFxzpI$(ZSzU(z3r?{D{A-;1v%}*z-{QyH9Dt zgChx~u!5YO*5c(8&z=LDR-hpOg`Gmakf)a#P8=YGx=5ZlW90^)cZ5An*vp&yS9N&# zeD~tr#+x%%jXT!k4)=N@I!8$F3>c%iiR9K~=4rn(eCYU54js#nC<62)&ix8?#rE@j z|Bkm$$xh%xNun!QX|h<^Z>6Fb4KtA2LJD?8@38?=$b#8H?kb^)1W1Fu6fu+|F<5EY z){{SEIjxVCTrpY9$6GpER{d&wpvMt5xPp3TsLL5_U2?QO+8B>!=eAy7*LBz3uAzeJ ze|;o5?+d|S{& z0{9#$RED~9?3JgmSIom7yqFllI&-t8YWh+8s#|OIw68c@R~#)5*V`W3m<~?r2m8Fy zsqC{6SM;|h&#(xTAOYFvQTTd>O+ z?(xP(!YK^EO#a3B=8ikHb=;mKKmNWDd@BA*6Z~?51+K8?peoBqvhn3|F*(VK56A`q z5+Fh#nE4ipE)C>-g~k|}z#d32M|@J{cYBY0alqjxv&D3!Lv4-~%&8r7a@!K$qK_xG z7~e~5k0Na=FQQPv|C!T=Tpox9gOKGuHEQCU zNxI}>i%U$PgZC0lxk)6!Gyg4*>{?euLe4+n7u;*XF&xtz@D?TkXC}wkMVu+;V z;tD7kc^?euN<3fE_ap)+Yk_jdUSU(VOqH+vHz()LHng(9L+{6-Z%IJCj_>n7)hrg9Smk4JUrLb)bC4xb~KtW#S7(T|DCZho;8KCP#;SmDA~!) zy~CHTJY0NSVqRW+{PXcwTtD=fQ+AxVMw?}Vr?K9nI9(!>Mgl0#qpUCAci@HkM=Q1o zbsCaU3fIfIzSFI$(O{Zj&Tu3JU@W{m>1DG%;2Gyli45ie)#sNu0r>xy^gY!LcldNX zNBKQO%nsuERT>p7j-EI%Y&0g*X{wJtd%m~5lVj;$4EknsSOHvmvEKV1a+3D5SjhiN zN7*HpYiE0>U9Z2aA0VcS-kYMZF9N0$-J=Wp@`(V$fX4Ga5`Z@V{>j{4`=iyvM~}SX zHtpZvpw8eR#=m0xMSIrm_FFYIM^Bv`o1EL)EnZAe^zU|e@$ZX~->uB+AHM(Re=F|V ziG|<4NLKm1=Q8-=#VhusZ>ZbqCLY||d}i8A8)GRL3t;GuM03NjVn-Byp7^8k%%k^1 zp4hNI!4|++B4-Swzd3z+DG)5XjGZU_^YK@NfUQCX9K1Vr^5oy%Y^d%xPA@J)ojf}h z1hnmE#Rw3qLDq+O{x}45iT+~D`42}Bw@-=hGEiXr_`?rtON*+Wp4t&(mp3w%e=2rf zFvE2?k{t}CMxxo#2(UlgEt^}aMceJkhZE@?es(JL^jKB3wrfC{dKi2b{tETC_K=VO zH2YRf^>6As4;hSShVFf<=~0cE?S4NS095CDO`#@kttjEANyzW}Qe#}aqN-Hek|JJ; zMfu^oS8LYA!NH-<$%$Tv*PPk8m)aePrm^kjn0WiS;ZVBQ7as_xKZc*zOp%-=y{%bs z9`7))OyFmybI)%W`p;jhE(ZVQ$o+vAew8K{xX`MqZ~mgH>8>?&WN_*?oqZ<;r;lg{ z8b`8STiZe(u3& zAP#jRdX{JogAa17JySTApGZ!ZJA(f|5Y7xC0pZO1_?Z{LPrzr;8>^dKK=qNH$=tK{ z>4#sRKbL*=T3J{&!u~2hwuKwPP zdhY(f!)4vXf?@j6b#32uU2pf?!~WTM-Oxz8L1!2m&<>9@4;dRw7VXjo+HA_~;jx2! zEG#abOy_xXEH@fScX{LV!N4ZQe>jr)p!Opr@MgY8>6rq=F+`Y#JmFs*Ke6l&0bY`g zumKhP2P_{US$N$B-5;O5e0*rC;YpC*X!YN*`s%Fyx+mV+HDAq&r)JSr{m@1pe(Mu= z$MX6wZ#ULhW=DL9YV-Up^MWyy8S*8K@xny*nI*kzj4KrLGA4>A1Mm+95_)&k;E4?c z-{2R||NV}}BLsMbfENK8-`pk!@YTi3UFK>2@YD=eaz-ln4^mZ%^OS=BZ!cVHv48k8!(RsH*w8S zYiv8rSf>^Fg#nf)cn3Djxacu&c6-7)SD3u6{y=gd_)+`_ib#MtwWV8gw$81<9(kI` zKRw^rdPk*Y$tUiMRKlv@KS&e&tII3DIeW3%>f)4z-W@Uc;(BjX;|i->L9HW7S34pa zXH@Ho4TjRp<>&MRe|Mvy{gJKD8~?V?e0O?D5CYpA$(EM#c?sRqnZ*@vuFs#;dt(|$ z5Y-1i_8-?zW`_@UV<Kkc3w9;wpqY?m@d4yrqW-&(?DALPe1-7vRuJ`z$PJ@ zd?x$L<43PfJvO*E$+I)K6M9!%?TD#uVY`0tOO&bBY> ze)fk-{$qxSVawG0!>7Nks;@tM?C&2gFID#Y|DPTJhkpL?%;k$`hbMZ1o6O2|j6Vh+ z^qDJ20EN=79!k$$SPdj9$^{_3kMSFVnXe|6+&CXWPFg|m9mp`s?gfupPpFc6+Pm13sjQ7D0brB{$jo*4amFxAye|6;8MRj*y z`qfvp4J}O#a^e6ESdnEh^ z@C$piUuW~-XE5Nm9*plCyWMcEu}v4u)UVin@%6ElKh&hDwLH*0@t@EQX;xhj`n?1w zJ9tG=z}M3{L#lNz8GOhPP9ON8yAOV1KJo$~gsRDhZOabgNaNwmaB}aAw(o4Gw%rl! z@Fh>Fd#+!j>?V7iC^3kOs%Sa%Fx?AFq%P2}rV5irY;A6qxTUzpo>hF(V z97bNi)u_L}+OlXv4sa)p$?Xf>!>80;Drc-^BhO`ww_>RB~nvI?bs& zO})XK+8$)?M*_glaXYmu${5S9bH}j(LJngNNS1Kq#EmWUK5k4bm_rWig1JS{v@FR47$!76LvT$j@e6riv>L?xvZ}G&g z44Wyg|NX1ipN+o~^QVhFa69e4I(AZPD`M_k4z}<3`*D?MDK7 zyb=0I{qW`Cshi^qUu*j>nr0i9>^=TuDX^1Zvj;DaQyk#$c16I?CxBlj{{6L|?}`CH z0vL$lA@Fy_IDfitqRk#@T65J~{T=Qkp+M>Z{2y0Cz}JtlcGmy^002ovPDHLkV1k!U Bv5^1( diff --git a/package.json b/package.json index 8169215..3885966 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "phpfmt", "vscode" ], - "icon": "logo.png", + "icon": "icon.png", "publisher": "kokororin", "author": "kokororin", "license": "BSD-3-Clause", @@ -34,7 +34,7 @@ }, "homepage": "https://github.com/kokororin/vscode-phpfmt#readme", "engines": { - "vscode": "^1.20.0" + "vscode": "^1.60.0" }, "categories": [ "Formatters", @@ -89,7 +89,7 @@ } ], "configuration": { - "title": "phpfmt Configuration options", + "title": "phpfmt", "type": "object", "properties": { "phpfmt.php_bin": { @@ -97,6 +97,11 @@ "default": "php", "description": "php executable path" }, + "phpfmt.use_old_phpfmt": { + "type": "boolean", + "default": false, + "description": "use old fmt.phar which supports 5.6" + }, "phpfmt.detect_indent": { "type": "boolean", "default": false, @@ -123,7 +128,21 @@ "boolean" ], "default": 4, - "description": "use spaces instead of tabs for indentation. Default 4" + "description": "use spaces instead of tabs for indentation. Default 4", + "enum": [ + false, + 2, + 4, + 6, + 8 + ], + "enumDescriptions": [ + "Indent with tabs", + "Indent with 2 spaces", + "Indent with 4 spaces", + "Indent with 6 spaces", + "Indent with 8 spaces" + ] }, "phpfmt.enable_auto_align": { "type": "boolean", @@ -138,17 +157,318 @@ "phpfmt.ignore": { "type": "array", "default": [], - "description": "ignore file names whose names contain any pattern that could be matched with `.match` JS string method" + "description": "ignore file names whose names contain any pattern that could be matched with `.match` JS string method", + "items": { + "type": "string" + } }, "phpfmt.passes": { "type": "array", "default": [], - "description": "call specific compiler pass" + "description": "call specific compiler pass", + "items": { + "type": "string", + "enum": [ + "AddMissingParentheses", + "AliasToMaster", + "AlignConstVisibilityEquals", + "AlignDoubleArrow", + "AlignDoubleSlashComments", + "AlignEquals", + "AlignGroupDoubleArrow", + "AlignPHPCode", + "AlignTypehint", + "AllmanStyleBraces", + "AutoPreincrement", + "AutoSemicolon", + "CakePHPStyle", + "ClassToSelf", + "ClassToStatic", + "ConvertOpenTagWithEcho", + "DocBlockToComment", + "DoubleToSingleQuote", + "EchoToPrint", + "EncapsulateNamespaces", + "GeneratePHPDoc", + "IndentTernaryConditions", + "JoinToImplode", + "LeftWordWrap", + "LongArray", + "MergeElseIf", + "SplitElseIf", + "MergeNamespaceWithOpenTag", + "MildAutoPreincrement", + "NewLineBeforeReturn", + "OrganizeClass", + "OrderAndRemoveUseClauses", + "OnlyOrderUseClauses", + "OrderMethod", + "OrderMethodAndVisibility", + "PHPDocTypesToFunctionTypehint", + "PrettyPrintDocBlocks", + "PSR2EmptyFunction", + "PSR2MultilineFunctionParams", + "ReindentAndAlignObjOps", + "ReindentSwitchBlocks", + "ReindentEnumBlocks", + "RemoveIncludeParentheses", + "RemoveSemicolonAfterCurly", + "RemoveUseLeadingSlash", + "ReplaceBooleanAndOr", + "ReplaceIsNull", + "RestoreComments", + "ReturnNull", + "ShortArray", + "SmartLnAfterCurlyOpen", + "SortUseNameSpace", + "SpaceAroundControlStructures", + "SpaceAroundExclamationMark", + "SpaceBetweenMethods", + "StrictBehavior", + "StrictComparison", + "StripExtraCommaInArray", + "StripNewlineAfterClassOpen", + "StripNewlineAfterCurlyOpen", + "StripNewlineWithinClassBody", + "StripSpaces", + "StripSpaceWithinControlStructures", + "TightConcat", + "TrimSpaceBeforeSemicolon", + "UpgradeToPreg", + "WordWrap", + "WrongConstructorName", + "YodaComparisons", + "SpaceAfterExclamationMark", + "SpaceAroundParentheses" + ], + "enumDescriptions": [ + "Add extra parentheses in new instantiations.", + "Replace function aliases to their masters - only basic syntax alias.", + "Vertically align \"=\" of visibility and const blocks.", + "Vertically align T_DOUBLE_ARROW (=>).", + "Vertically align \"//\" comments.", + "Vertically align \"=\".", + "Vertically align T_DOUBLE_ARROW (=>) by line groups.", + "Align PHP code within HTML block.", + "Vertically align function type hints.", + "Transform all curly braces into Allman-style.", + "Automatically convert postincrement to preincrement.", + "Add semicolons in statements ends.", + "Applies CakePHP Coding Style", + "\"self\" is preferred within class, trait or interface.", + "\"static\" is preferred within class, trait or interface.", + "Convert from \" implode()).", + "Word wrap at 80 columns - left justify.", + "Convert short to long arrays.", + "Merge if with else.", + "Merge if with else.", + "Ensure there is no more than one linebreak before namespace", + "Automatically convert postincrement to preincrement. (Deprecated pass. Use AutoPreincrement instead).", + "Add an empty line before T_RETURN.", + "Organize class, interface and trait structure.", + "Order use block and remove unused imports.", + "Order use block - do not remove unused imports.", + "Organize class, interface and trait structure.", + "Organize class, interface and trait structure.", + "Read variable types from PHPDoc blocks and add them in function signatures.", + "Prettify Doc Blocks", + "Merges in the same line of function header the body of empty functions.", + "Break function parameters into multiple lines.", + "Align object operators.", + "Reindent one level deeper the content of switch blocks.", + "Reindent one level deeper the content of enum blocks.", + "Remove parentheses from include declarations.", + "Remove semicolon after closing curly brace.", + "Remove leading slash in T_USE imports.", + "Convert from \"and\"/\"or\" to \"&&\"/\"||\". Danger! This pass leads to behavior change.", + "Replace is_null($a) with null === $a.", + "Revert any formatting of comments content.", + "Simplify empty returns.", + "Convert old array into new array. (array() -> [])", + "Add line break when implicit curly block is added.", + "Organize use clauses by length and alphabetic order.", + "Add space around control structures.", + "Add spaces around exclamation mark.", + "Put space between methods.", + "Activate strict option in array_search, base64_decode, in_array, array_keys, mb_detect_encoding. Danger! This pass leads to behavior change.", + "All comparisons are converted to strict. Danger! This pass leads to behavior change.", + "Remove trailing commas within array blocks", + "Strip empty lines after class opening curly brace.", + "Strip empty lines after opening curly brace.", + "Strip empty lines after class opening curly brace.", + "Remove all empty spaces", + "Strip empty lines within control structures.", + "Ensure string concatenation does not have spaces, except when close to numbers.", + "Remove empty lines before semi-colon.", + "Upgrade ereg_* calls to preg_*", + "Word wrap at 80 columns.", + "Update old constructor names into new ones. http://php.net/manual/en/language.oop5.decon.php", + "Execute Yoda Comparisons.", + "Add space after exclamation mark.", + "Add spaces inside parentheses." + ] + } }, "phpfmt.exclude": { "type": "array", "default": [], - "description": "disable specific passes" + "description": "disable specific passes", + "items": { + "type": "string", + "enum": [ + "AddMissingParentheses", + "AliasToMaster", + "AlignConstVisibilityEquals", + "AlignDoubleArrow", + "AlignDoubleSlashComments", + "AlignEquals", + "AlignGroupDoubleArrow", + "AlignPHPCode", + "AlignTypehint", + "AllmanStyleBraces", + "AutoPreincrement", + "AutoSemicolon", + "CakePHPStyle", + "ClassToSelf", + "ClassToStatic", + "ConvertOpenTagWithEcho", + "DocBlockToComment", + "DoubleToSingleQuote", + "EchoToPrint", + "EncapsulateNamespaces", + "GeneratePHPDoc", + "IndentTernaryConditions", + "JoinToImplode", + "LeftWordWrap", + "LongArray", + "MergeElseIf", + "SplitElseIf", + "MergeNamespaceWithOpenTag", + "MildAutoPreincrement", + "NewLineBeforeReturn", + "OrganizeClass", + "OrderAndRemoveUseClauses", + "OnlyOrderUseClauses", + "OrderMethod", + "OrderMethodAndVisibility", + "PHPDocTypesToFunctionTypehint", + "PrettyPrintDocBlocks", + "PSR2EmptyFunction", + "PSR2MultilineFunctionParams", + "ReindentAndAlignObjOps", + "ReindentSwitchBlocks", + "ReindentEnumBlocks", + "RemoveIncludeParentheses", + "RemoveSemicolonAfterCurly", + "RemoveUseLeadingSlash", + "ReplaceBooleanAndOr", + "ReplaceIsNull", + "RestoreComments", + "ReturnNull", + "ShortArray", + "SmartLnAfterCurlyOpen", + "SortUseNameSpace", + "SpaceAroundControlStructures", + "SpaceAroundExclamationMark", + "SpaceBetweenMethods", + "StrictBehavior", + "StrictComparison", + "StripExtraCommaInArray", + "StripNewlineAfterClassOpen", + "StripNewlineAfterCurlyOpen", + "StripNewlineWithinClassBody", + "StripSpaces", + "StripSpaceWithinControlStructures", + "TightConcat", + "TrimSpaceBeforeSemicolon", + "UpgradeToPreg", + "WordWrap", + "WrongConstructorName", + "YodaComparisons", + "SpaceAfterExclamationMark", + "SpaceAroundParentheses" + ], + "enumDescriptions": [ + "Add extra parentheses in new instantiations.", + "Replace function aliases to their masters - only basic syntax alias.", + "Vertically align \"=\" of visibility and const blocks.", + "Vertically align T_DOUBLE_ARROW (=>).", + "Vertically align \"//\" comments.", + "Vertically align \"=\".", + "Vertically align T_DOUBLE_ARROW (=>) by line groups.", + "Align PHP code within HTML block.", + "Vertically align function type hints.", + "Transform all curly braces into Allman-style.", + "Automatically convert postincrement to preincrement.", + "Add semicolons in statements ends.", + "Applies CakePHP Coding Style", + "\"self\" is preferred within class, trait or interface.", + "\"static\" is preferred within class, trait or interface.", + "Convert from \" implode()).", + "Word wrap at 80 columns - left justify.", + "Convert short to long arrays.", + "Merge if with else.", + "Merge if with else.", + "Ensure there is no more than one linebreak before namespace", + "Automatically convert postincrement to preincrement. (Deprecated pass. Use AutoPreincrement instead).", + "Add an empty line before T_RETURN.", + "Organize class, interface and trait structure.", + "Order use block and remove unused imports.", + "Order use block - do not remove unused imports.", + "Organize class, interface and trait structure.", + "Organize class, interface and trait structure.", + "Read variable types from PHPDoc blocks and add them in function signatures.", + "Prettify Doc Blocks", + "Merges in the same line of function header the body of empty functions.", + "Break function parameters into multiple lines.", + "Align object operators.", + "Reindent one level deeper the content of switch blocks.", + "Reindent one level deeper the content of enum blocks.", + "Remove parentheses from include declarations.", + "Remove semicolon after closing curly brace.", + "Remove leading slash in T_USE imports.", + "Convert from \"and\"/\"or\" to \"&&\"/\"||\". Danger! This pass leads to behavior change.", + "Replace is_null($a) with null === $a.", + "Revert any formatting of comments content.", + "Simplify empty returns.", + "Convert old array into new array. (array() -> [])", + "Add line break when implicit curly block is added.", + "Organize use clauses by length and alphabetic order.", + "Add space around control structures.", + "Add spaces around exclamation mark.", + "Put space between methods.", + "Activate strict option in array_search, base64_decode, in_array, array_keys, mb_detect_encoding. Danger! This pass leads to behavior change.", + "All comparisons are converted to strict. Danger! This pass leads to behavior change.", + "Remove trailing commas within array blocks", + "Strip empty lines after class opening curly brace.", + "Strip empty lines after opening curly brace.", + "Strip empty lines after class opening curly brace.", + "Remove all empty spaces", + "Strip empty lines within control structures.", + "Ensure string concatenation does not have spaces, except when close to numbers.", + "Remove empty lines before semi-colon.", + "Upgrade ereg_* calls to preg_*", + "Word wrap at 80 columns.", + "Update old constructor names into new ones. http://php.net/manual/en/language.oop5.decon.php", + "Execute Yoda Comparisons.", + "Add space after exclamation mark.", + "Add spaces inside parentheses." + ] + } }, "phpfmt.smart_linebreak_after_curly": { "type": "boolean", @@ -199,8 +519,9 @@ "dayjs": "^1.11.7", "detect-indent": "^6.0.0", "find-up": "^5.0.0", + "phpfmt": "^0.0.2", "pjson": "^1.0.9", "tslib": "^2.5.0", "use-phpfmt": "^0.0.1" } -} +} \ No newline at end of file diff --git a/scripts/generate.ts b/scripts/generate.ts index 613974c..f488f19 100644 --- a/scripts/generate.ts +++ b/scripts/generate.ts @@ -1,17 +1,17 @@ import path from 'path'; import fs from 'fs'; import os from 'os'; -import pjson from 'pjson'; +import phpfmt from 'use-phpfmt'; import { Transformation } from '../src/Transformation'; -const pkg = pjson as any; - -const readmePath: string = path.join(__dirname, '/../README.md'); - -const configuration = pkg.contributes.configuration; +const pkgJsonPath = path.join(__dirname, '../package.json'); +const readmePath: string = path.join(__dirname, '../README.md'); void (async () => { try { + const pkg = JSON.parse(String(await fs.promises.readFile(pkgJsonPath))); + const configuration = pkg.contributes.configuration; + let config: string = '| Key | Type | Description | Default |' + os.EOL + @@ -59,9 +59,9 @@ void (async () => { } ); - const transformations = await new Transformation( - 'php' - ).getTransformations(); + const transformation = new Transformation('php', phpfmt.pharPath); + + const transformations = await transformation.getTransformations(); readmeContent = readmeContent.replace( /([\s\S]*)/, @@ -86,8 +86,22 @@ void (async () => { ); } ); + const enums = transformations.map(item => item.key); + const enumDescriptions = transformations.map(item => item.description); + + pkg.contributes.configuration.properties['phpfmt.passes'].items.enum = + enums; + pkg.contributes.configuration.properties[ + 'phpfmt.passes' + ].items.enumDescriptions = enumDescriptions; + pkg.contributes.configuration.properties['phpfmt.exclude'].items.enum = + enums; + pkg.contributes.configuration.properties[ + 'phpfmt.exclude' + ].items.enumDescriptions = enumDescriptions; await fs.promises.writeFile(readmePath, readmeContent); + await fs.promises.writeFile(pkgJsonPath, JSON.stringify(pkg, null, 2)); } catch (err) { console.error(err); } diff --git a/src/PHPFmt.ts b/src/PHPFmt.ts index daa5a1d..b410927 100644 --- a/src/PHPFmt.ts +++ b/src/PHPFmt.ts @@ -1,14 +1,11 @@ -import { - workspace as Workspace, - window as Window, - type WorkspaceFolder -} from 'vscode'; +import { workspace as Workspace, window as Window } from 'vscode'; import path from 'path'; import fs from 'fs'; import os from 'os'; import detectIndent from 'detect-indent'; import findUp from 'find-up'; import phpfmt from 'use-phpfmt'; +import oldPhpfmt from 'phpfmt'; import type { PHPFmtConfig } from './types'; import type { Widget } from './Widget'; import { Transformation } from './Transformation'; @@ -22,7 +19,10 @@ export class PHPFmt { public constructor(private readonly widget: Widget) { this.config = this.getConfig(); - this.transformation = new Transformation(this.config.php_bin); + this.transformation = new Transformation( + this.config.php_bin, + this.getPharPath() + ); this.loadSettings(); } @@ -32,7 +32,10 @@ export class PHPFmt { public loadSettings(): void { this.config = this.getConfig(); - this.transformation = new Transformation(this.config.php_bin); + this.transformation = new Transformation( + this.config.php_bin, + this.getPharPath() + ); this.args.length = 0; @@ -93,6 +96,14 @@ export class PHPFmt { } } + public getPharPath(): string { + return this.config.use_old_phpfmt ? oldPhpfmt.pharPath : phpfmt.pharPath; + } + + public getTransformation(): Transformation { + return this.transformation; + } + private getArgs(fileName: string): string[] { const args = this.args.slice(0); args.push(`"${fileName}"`); @@ -137,8 +148,7 @@ export class PHPFmt { fileName = Window.activeTextEditor.document.fileName; execOptions.cwd = path.dirname(fileName); - const workspaceFolders: WorkspaceFolder[] | undefined = - Workspace.workspaceFolders; + const workspaceFolders = Workspace.workspaceFolders; if (workspaceFolders != null) { iniPath = await findUp('.phpfmt.ini', { cwd: execOptions.cwd @@ -160,11 +170,22 @@ export class PHPFmt { if (stderr) { throw new PHPFmtError(`php_bin "${this.config.php_bin}" is invalid`); } - if (Number(stdout.trim()) < 70000) { - throw new PHPFmtError('PHP version < 7 is not supported'); + if (this.config.use_old_phpfmt) { + if (Number(stdout.trim()) < 50600 || Number(stdout.trim()) > 80000) { + throw new PHPFmtError('PHP version < 5.6 or > 8.0'); + } + } else { + if (Number(stdout.trim()) < 70000) { + throw new PHPFmtError('PHP version < 7 is not supported'); + } } } catch (err) { - throw new PHPFmtError(`Error getting php version`); + if (err instanceof PHPFmtError) { + throw err; + } else { + this.widget.logError('getting PHP_VERSION_ID failed', err); + throw new PHPFmtError(`Error getting php version`); + } } const tmpDir = os.tmpdir(); @@ -180,7 +201,7 @@ export class PHPFmt { if (ignore.length > 0) { for (const ignoreItem of ignore) { if (basename.match(ignoreItem) != null) { - this.widget.addToOutput( + this.widget.logInfo( `Ignored file ${basename} by match of ${ignoreItem}` ); throw new PHPFmtIgnoreError(); @@ -197,7 +218,7 @@ export class PHPFmt { try { await fs.promises.writeFile(tmpFileName, text); } catch (err) { - this.widget.addToOutput(err.message); + this.widget.logError('Create tmp file failed', err); throw new PHPFmtError(`Cannot create tmp file in "${tmpDir}"`); } @@ -205,7 +226,7 @@ export class PHPFmt { try { await exec(`${this.config.php_bin} -l ${tmpFileName}`, execOptions); } catch (err) { - this.widget.addToOutput(err.message); + this.widget.logError('PHP lint failed', err); Window.setStatusBarMessage( 'phpfmt: Format failed - syntax errors found', 4500 @@ -214,31 +235,33 @@ export class PHPFmt { } const args = this.getArgs(tmpFileName); - args.unshift(`"${phpfmt.pharPath}"`); + args.unshift(`"${this.getPharPath()}"`); let formatCmd: string; if (!iniPath) { formatCmd = `${this.config.php_bin} ${args.join(' ')}`; } else { - this.widget.addToOutput(`Using config file: ${iniPath}`); + this.widget.logInfo(`Using config file: ${iniPath}`); formatCmd = `${this.config.php_bin} ${ args[0] } --config=${iniPath} ${args.pop()}`; } - this.widget.addToOutput(`Executing process: ${formatCmd}`); + this.widget.logInfo(`Executing command: ${formatCmd}`); try { await exec(formatCmd, execOptions); } catch (err) { - this.widget.addToOutput(err.message).show(); + this.widget.logError('Execute command failed', err).show(); throw new PHPFmtError('Execute phpfmt failed'); } const formatted = await fs.promises.readFile(tmpFileName, 'utf-8'); try { await fs.promises.unlink(tmpFileName); - } catch (err) {} + } catch (err) { + this.widget.logError('Remove temp file failed', err); + } if (formatted.length > 0) { return formatted; diff --git a/src/PHPFmtProvider.ts b/src/PHPFmtProvider.ts index aa7e4da..cbaaac8 100644 --- a/src/PHPFmtProvider.ts +++ b/src/PHPFmtProvider.ts @@ -13,37 +13,35 @@ import { type WorkspaceConfiguration } from 'vscode'; import pkg from 'pjson'; -import { PHPFmt } from './PHPFmt'; -import { Widget } from './Widget'; -import { Transformation } from './Transformation'; +import type { PHPFmt } from './PHPFmt'; +import type { Widget } from './Widget'; +import type { Transformation } from './Transformation'; import { PHPFmtIgnoreError } from './PHPFmtError'; export class PHPFmtProvider { - private readonly widget: Widget; - private readonly phpfmt: PHPFmt; private readonly documentSelector: DocumentSelector; - private readonly transformation: Transformation; + private transformation: Transformation; private config: WorkspaceConfiguration; - public constructor() { - this.widget = new Widget(); + public constructor( + private readonly widget: Widget, + private readonly phpfmt: PHPFmt + ) { this.config = Workspace.getConfiguration('phpfmt'); - this.phpfmt = new PHPFmt(this.widget); this.documentSelector = [ { language: 'php', scheme: 'file' }, { language: 'php', scheme: 'untitled' } ]; - this.widget.addToOutput(`Extension Version: ${pkg.version}`); - this.transformation = new Transformation(this.config.get('php_bin', 'php')); - // cache first - void this.transformation.getTransformations(); + this.widget.logInfo(`Extension Version: ${pkg.version}`); + this.transformation = this.phpfmt.getTransformation(); } public registerOnDidChangeConfiguration(): Disposable { return Workspace.onDidChangeConfiguration(() => { this.config = Workspace.getConfiguration('phpfmt'); this.phpfmt.loadSettings(); - this.widget.addToOutput(`settings reloaded`); + this.transformation = this.phpfmt.getTransformation(); + this.widget.logInfo(`settings reloaded`); }); } @@ -70,11 +68,14 @@ export class PHPFmtProvider { const result = await Window.showQuickPick(items); if (typeof result !== 'undefined') { + this.widget.logInfo('Getting transformation output'); const output = await this.transformation.getExample({ key: result.label, description: result.description ?? '' }); - this.widget.addToOutput(`Transformation\n${output}`).show(); + + this.widget.getOutputChannel().appendLine(output); + this.widget.getOutputChannel().show(); } }); } @@ -233,7 +234,7 @@ export class PHPFmtProvider { } catch (err) { if (!(err instanceof PHPFmtIgnoreError) && err instanceof Error) { void Window.showErrorMessage(err.message); - this.widget.addToOutput(err.message); + this.widget.logError('Format failed', err); } } return []; @@ -269,7 +270,7 @@ export class PHPFmtProvider { } catch (err) { if (!(err instanceof PHPFmtIgnoreError) && err instanceof Error) { void Window.showErrorMessage(err.message); - this.widget.addToOutput(err.message); + this.widget.logError('Format failed', err); } } return []; diff --git a/src/Transformation.ts b/src/Transformation.ts index 4ce0251..a9e1429 100644 --- a/src/Transformation.ts +++ b/src/Transformation.ts @@ -1,26 +1,28 @@ import os from 'os'; -import phpfmt from 'use-phpfmt'; import type { TransformationItem } from './types'; import { exec } from './utils'; export class Transformation { - public constructor(private readonly phpBin: string) {} + public constructor( + private readonly phpBin: string, + private readonly pharPath: string + ) {} private get baseCmd(): string { - return `${this.phpBin} "${phpfmt.pharPath}"`; + return `${this.phpBin} "${this.pharPath}"`; } - private static transformations: TransformationItem[] = []; + private static transformations: Record = {}; public async getTransformations(): Promise { - if (Transformation.transformations.length > 0) { - return Transformation.transformations; + if (Transformation.transformations[this.pharPath]?.length > 0) { + return Transformation.transformations[this.pharPath]; } try { const { stdout } = await exec(`${this.baseCmd} --list-simple`); - Transformation.transformations = stdout + Transformation.transformations[this.pharPath] = stdout .trim() .split(os.EOL) .map(v => { @@ -34,7 +36,7 @@ export class Transformation { .trim() }; }); - return Transformation.transformations; + return Transformation.transformations[this.pharPath]; } catch (err) { return []; } diff --git a/src/Widget.ts b/src/Widget.ts index bea876d..36e2ef9 100644 --- a/src/Widget.ts +++ b/src/Widget.ts @@ -6,8 +6,10 @@ import { type TextEditor } from 'vscode'; import dayjs from 'dayjs'; +import type { LogLevel } from './types'; export class Widget { + private logLevel: LogLevel = 'INFO'; private readonly outputChannel: OutputChannel; private readonly statusBarItem: StatusBarItem; @@ -37,9 +39,62 @@ export class Widget { return this.outputChannel; } - public addToOutput(message: string): OutputChannel { + public setOutputLevel(logLevel: LogLevel): void { + this.logLevel = logLevel; + } + + private logMessage(message: string, logLevel: LogLevel): void { const now = dayjs(); - this.outputChannel.appendLine(`[${now.format('HH:mm:ss.SSS')}] ${message}`); + this.outputChannel.appendLine( + `${now.format('HH:mm:ss.SSS')} [${logLevel}] ${message}` + ); + } + + private logObject(data: unknown): void { + const message = JSON.stringify(data, null, 2); + + this.outputChannel.appendLine(message); + } + + public logInfo(message: string, data?: unknown): OutputChannel { + if (['NONE', 'WARN', 'ERROR'].includes(this.logLevel)) { + return this.outputChannel; + } + this.logMessage(message, 'INFO'); + if (data) { + this.logObject(data); + } + return this.outputChannel; + } + + public logWarning(message: string, data?: unknown): OutputChannel { + if (['NONE', 'ERROR'].includes(this.logLevel)) { + return this.outputChannel; + } + this.logMessage(message, 'WARN'); + if (data) { + this.logObject(data); + } + return this.outputChannel; + } + + public logError(message: string, error?: unknown): OutputChannel { + if (['NONE'].includes(this.logLevel)) { + return this.outputChannel; + } + this.logMessage(message, 'ERROR'); + if (typeof error === 'string') { + this.outputChannel.appendLine(error); + } else if (error instanceof Error) { + if (error?.message) { + this.logMessage(error.message, 'ERROR'); + } + // if (error?.stack) { + // this.outputChannel.appendLine(error.stack); + // } + } else if (error) { + this.logObject(error); + } return this.outputChannel; } } diff --git a/src/extension.ts b/src/extension.ts index 2713c1c..5994303 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,8 +1,13 @@ import { type ExtensionContext } from 'vscode'; import { PHPFmtProvider } from './PHPFmtProvider'; +import { PHPFmt } from './PHPFmt'; +import { Widget } from './Widget'; export function activate(context: ExtensionContext): void { - const provider = new PHPFmtProvider(); + const widget = new Widget(); + const phpfmt = new PHPFmt(widget); + + const provider = new PHPFmtProvider(widget, phpfmt); context.subscriptions.push( provider.registerOnDidChangeConfiguration(), diff --git a/src/types.d.ts b/src/types.d.ts index 022c89e..5e3c996 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -1,5 +1,6 @@ export interface PHPFmtConfig { php_bin: string; + use_old_phpfmt: boolean; detect_indent: boolean; psr1: boolean; psr1_naming: boolean; @@ -20,3 +21,5 @@ export interface TransformationItem { key: string; description: string; } + +type LogLevel = 'INFO' | 'WARN' | 'ERROR' | 'NONE'; diff --git a/yarn.lock b/yarn.lock index ea671dc..98e7043 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2127,7 +2127,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-fetch@^2.6.9: +node-fetch@^2.1.2, node-fetch@^2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== @@ -2305,6 +2305,13 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +phpfmt@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/phpfmt/-/phpfmt-0.0.2.tgz#69122de46104a7a99adaccf8e331e5db0ccf10ef" + integrity sha512-S3oyfyVq1p3y1vWPel8eCXEQUt9neELtYy/cDLixyalRY2vl/Gatb4ad2w2OnjCR4Df8fOk2KVwC4yTfIT8fNw== + dependencies: + node-fetch "^2.1.2" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"