From 239837d99fc27680593a6fa8c804f029aee4b60e Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 20:39:49 +0800 Subject: [PATCH 01/16] remove macos binary --- src/psutil/psutil_macosx | Bin 255924 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 src/psutil/psutil_macosx diff --git a/src/psutil/psutil_macosx b/src/psutil/psutil_macosx deleted file mode 100755 index f5c8e43e572b009abd0d93f7fc8afda5e90a17ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255924 zcmeFad3;nw_CDMZ8l!@V3W|Hg4Oh@1ieef`iVC;DUlHE{u#CO$;badohk% zTt?%#WgL~b0C532h)G08;~o{YUAaM&h#D3Z-sd@|>UQ-)=&=6e{Qz3RP|r3Wc`DUp+2N3zgtoD6~EPqWBv-cGR%rB4u>ZcF+BY3%5y}?SG2?VZo_8cjT(6h8hvmh@@Ti|f!&}xW1`t78|cvwQVW;!zGtoc4_K2 z+tvOGg+`sJ`gQJ*;>;(H?V#i3h~X!m5IJVJdM`%T?pk-9kv&RLK7Y6Vru0+|p-?|? z3}g}L*i^;%oX+3ozgqkr2t`^?>lP}AaG!&vo%IKk6}P zm*Xa$RzC36={>*sz3|Q+OAp4i68s6qqRm4g{P8<=!K|~%zWCR;q+CJ2tfZWAYtu&y z);kz~EYp$#Ob-PqU7*jY|G4t1@s}KU)Pc}z;yED1f8?8hzku)h7`pgfp#e%fV8q08 zt~mROe+)SGinA{nfAwWoTy*7tqc6K+{IQo!z7!5T@v=(~Jl~cKIDPyTSK`W*1BPYL zn0m&z^@O$oOz5}adWN5L!o;g`i*-8n0OGbIvK+wG#h^jQrxL7yjbU7)n@8_25v^R0iE0MfeAttIuyK z?}wi|@uwGVBw;*Mv>@8Ax~bs&*kU1xjp~Q8`=zWf8Xvtn8rwV?ABhkAimWbLFsWbF zx;DfIMm8((FBwn}idHWw{@W|*`iwGopIIe%6Tmx5zqSEUD_DsaxT9W0qkri7_3J?~ z{bcCX66s{={DJt#zw~QTl+MCr3GkiJqca*CC?8&Fod}#%3>FwpfP$jDFDQL6Q`=Hr zoD7y@`$nrPd}z*T1nfS|`w+iFnS=Q0g^NU7qz$Z{sPicP^!jvmZ4w&RC?v5a|LLNF zklz9NqAk+#mK(ecAjem>?^*gaPy3dy18i7fXH_Z@v~SDr>(}R&|FQ~gh5T3aYda*g zK>+QUB#?@PzZCqu{0#+rW%r~g#kOLcqgf_4t?2Zd@x$MWSE?74|Lv9Y4=mbsDt?7R zHR4}hcp9dyXdI5P8Qj4oF#c!T`x31xfm(OhuesX$IMq*;K?~f-n!U0ge=)`j8nj~d z{9=^(T_liZWz$7E{qgh|dPDW1QLZ|wZ>ql?Y?biJZdd79?NQO{&;3ms;x*M{qNPM% zi^hk}FQf_#TH#FS4n5dri-k0Nq>x6E&5;)R703rG`686>Q7}Ey(iLebD4Hg{QMw;^ zUsv8u46iiD9*8phTj>zm0=5Ct>>GnGd!^e5-(=XhbPN5O%f?^*Dwwoqz{ayt0XROw zx;h%0EF3TJ62BAHe(WcceSZt;z#bx&wf5BZ)%w3t5v>1HM;bu6efnI~-yB&XJ?v!x zTsq64p3h6R?je&qi~gCQxmNgb_{NOLiaiR7<|Hy(w`f;8-j$pF_K1j-{`TBY;ytC5(G`=HZbFHDgnP2i7u6>YEueN)1|+~ZVoWa-c6Z?3=rRf1Pk$4*>$*E|UocDt?#O^CKim?5yZ<3saC>eH?if{KxU0k< zqlAImx`HNioq2a3dse`dA8vnvTc$&p+jn;s z0hm=b)ORPU5@#aQ8Ms))C}H4!^n(MJDF%O#GX2kGDo%&{h|45!*RK`0B`(t^=o^kR zUluUshdWTn8&ZnMiIaCcLtquiQ)M~MUXwty)=+;V|C>EJB5qeMU+xc9FXxE>N= z0o*A@2?MuhpakY!fqQ{6MP1F0HcSTYhu=9i61WE|)2VJvTc*SPcfgb%ZdBk_9h3$4 zY!Q$L?o+D-?gQ&ZJ1n;_p~V_4F{c$9bbCFV= zD3+Cdw*q{CqzOMqqcOLRRxd=b))I}q>A#DOLIEAe2eJU5jTLBBspaAMc6~VhI6~U^ z`f#1kc1C)`EBi&i=32Wv&NYZvR)XG)77Lb%XKBm5ER2yhzil6J;LP~>ep3$CKOR57 z_p>zqtG_vp-Jt7p>)6Lwxs0EgNbnz2rZ(zngYIh$lX2`Kmr45Zg~}9nYdY328OQ#3 zsR(Sts$_%lb2P3~(s$W2@O{Fbrx!2%Nx-)M>gfH7uE{OfKL;wwb#uYaG)x9; zKbJ|sRw&a0ZcS$xCIj~SZ~q9`NxD|}J$nLvO8E1jU9(cqF2hbl&`R&?ir=E080Y}B zOq%(Nl&REhr8>i8&<=8$1nsTL)Zo^1kzq1u*MIYe&|*Bn$Xb+*c7gEcLA!e3Ed?!QfF7t74tLGl6BYVbv(}sgw2seJ%Nsa!aBSv~7#ocw(#T}g>or^I z7+H_6=j+!-Xh347G7>aOMV;T5=>y~pc$vk2=cm_ekmcYcc+8$qJ{Dm%uHkAa5BF98 zjm?n{3vjvCvNvk+2vdxr8e8-Ni(-*RjM}S_t=xt`C98z1)21Nj)lrN~2PI-n(U>Q{ zg)=T?V5|gnB|fK9jTg!7g}?qv?AVB+8pPz&P5NM4ol6_0DAff46~_Ab=$dGJ#M_ue zM%Gf&KS%?$x_~4-m(_5MviCRaz#8fh{9wCI%X$W)E7~Ou8;#AI1S|nQWNV3ULIyth z4G}PblwsP!S7D9Dn*Dw&M5%VfAoxS(s$h*YQ^Pc^_RcRY?#Z=i#&*9+1AvB?wfv2s z9CoQrV0w$xbbP1-al=hYb8}q)NGx!IM)E=!`L=R+2J%}$f|K^p=|AL?@S}{A$*01!qHdf{2e=k@CNnTl_q_D%1 zR`q%<!dzsS6=Es&KrQzEA&fRj(?=PEju>SG+{paOGTdKKB?j)ek zwo#2#;Ch~w%lSPFQ}_#%sZNr}hUq@TWQN57E|Uz4GnDDSk{&cn=Nl$7EUx`r5$2!Y z&6KzKfmvbti^89066m2itkOK3qW$uhG_-#Ybg*dO{!UD^SkuzV^ps&TXotB>g7$u8 zn&;Lu#V{GPJp-n^lYmZnI~|aP_KnYItvqP^st%jEI{f@|8rtb1!{kq7h5gksLHo1Y zObZN?L3^spBxs*jrnfZVrzV)zM&px8B%T?%Ul!UG zOE!Xbi0ZJvtHX9i2eab*ugGxG_E4tdT#xv2Wg6PQyG(-iZHy)uB35d?&-lM#GH8bd zOnK4v7qlnun}xPuV`xXJ4oA8=>|=B=Xy<)m2M=`I9vr6nD%0hzL;U<>8rtbDlc4=- zsi5ud*0jJd8MLPcOnK4jI^ZG=Bh#~rIWjM9{&T6~Dn!JvKXV+U;^(eA5E z_qh(yBOUF%E|Z}B=IfYDF5_s{^LIXv@WuZ{9l#?V-Y- z2W|B?V)3gq;izcG8XXMUpV}R?J=nGrnf5hI2JL*8NziVuOozKQ{qjQ^+E~Dp z7j0C~-m_O0+Tp^V2ko6-3)-7B)u(7LH#!)!;Xnu5Z^tRqZZ6s*43k0I_Mu}ULA#$a zjc{w)G#%}I0aISIqXg}Lxo}CP#l{A_&{9@iFMcJ^-gPUy>wCnj1*|n#b)}zIu<`1a zB2Mx>Vf~sb9-O-zlDx8k%p7LNgKvDGHt>_%NyB93d!97q|EGBH>n{b>`!(`AN?J^14 z2b5`nThld$$)MdbV9MLJ8V>H#FKg&|^Icji58546hb>$kx;oO(&JY=H^!v@{g0{m^O@-(XYmX>ycT{*!lnbosGcVPnFooRbtb0 zxc7++0~fnUI6w56zz0twUD^H0GH~KA9rgZ;bnud0Y%Oq&u{Zvf!vu5lR?JUD&&>kHy zoLK3M?1ef-9`h-{PL)N z%{9OL`CCZz%G#K5%bs5@7DntRRBn}Xei>oP|4;MF)Fooh$(rO-bB?1LsrlvSx2U_@ za3?9#7}vM=Gfc)!7r0E)a62f|5VxkTZ?q=Ua5Dm?d=01Vwqv%Jo*?XbhM>DY5wO!W z(WhXqG%6S`-84`E?JsfsIm%R>*8YacfPLpp$3g=30A)JSt!cA#u>T5}@_{wUl>^|V z86(i&gg+13|9mWH@73I(qMi12TGMVH=wPRptCVTB+r35^CWH3t|7D^bs!ZeDnsziy zrfFvdOnK4jWIA-0EVP#ie;%|ieI#g~lx&_!XWji(8ruB=9e`F=EjKCC=dMqlW0(xu zt~WB#o~%q)xHTPMm<-ycfN8^MQ^}ROt<#2}sR6Scf<8w|A1nUVZjCQ}i6Lk&R-0o8 zGW(rX%M+MYa_lFJmnvjGVO#y$hz`$euDhSm`h}Pel|u-M&3?kyuhSwU8zndSb5H1= zzMrs2$|Jg;;6*C2Q9Hi`BK$^l4azYa3qKjUXp3wM*jip-Z5!HKU}oCgTae$v8K0(E zYfZtMOnht_6Zow2MN0L;H`qGOR>Tk?Fk1~%3sgU|)$rS5X?ftpR)g$4-#LZSn!XH2 z3*MF^#v>~?R5-j4CYrv%Qf^t);kLLfj1lAWlvBw^{tOCuW%W$W z;ywu`;k;hY@>ePvu=^oriI|Pq zZ%6adpw50{{ihI_z2CUVa&YhBy~3>V;Snj<@u4~Lpg6`>)WZuWO%bG0Gb!4dpBxXW zDr(l_d(q4={_Qx?bXM7W^umv&IPF&95%v=MFSiP-mxan_4BD!E`s4?R<{w7zhIb3s zHWRyO8tRxpaJv^=|xkES;}MS+$xMzcJ#t;-3J|6iDa)7R;o8v zOs6Y$dl%O@fZD$FzZ&Jd7fH2kVIQ9kOhUs=3UESeWenSLIpd)W}0$=CJ zunDZ&y@Qez)}-I{3A)|c1g!gsZ1kM_iI=|0mXQ84Ucct*KifeZ`cHr6`n~W&O#OMi zu3&c8=|7JO#6G)-80|lg@lx*n#P{re;!BjB)qilBoqA>N*M~*8^q)D4sCmx*GvQ-t z>CE|cs^wt+xg(s_f6kL~JHJlTF|B3(7=Z9cv%BNa*umXVsTQGC&4hcSVZ?;XF%k6Q z9C;_){uwPSzlAeCjo(qrKz_vaBQ|X?f1yq@;cjW`j7y!-Awpm#+@a|cZu}LR3O(IZ z&F#E<(VbLx3@2SV^Yx-Yz1J{HH}=9O8s-i6=KT#tu8FePR?S|hy?I^flCAd^G`nz{0Smc$rP z=Smu+qdtAE91&2aI&CrN0t}|p7Lu3alsTUvzYPX{HyFrD4ClO=h9T(>YloIk;vds# z*$3RY(p~?SL|d952ZEeF(h^B(b-2dc-r}Quzx8FYL=w|z34~?t*I(MiV(tI>HD~|- z5H)#a6PUq8|7X$<{hz;_{%_6`>>^?|I)C;K`afl7^#AJRc76Y5Li9_Z_E+_5uJ!%Z zABcXPOtqynvgZkI5k{=<>k4wN?=LpxV8uq7^xf8T_?hp1n@8TDqm|yN**#qZR#J`B z`o6c7%lvT<2=p&grqz-OH*2XA4AXel=!HLDK)@y`AWPoEmFX{TP1_nKvn+ZdVA}Aq z2x%zIA0J+vwFtaW`133R=e#axAJ^=jqW$OlX=wKfbO74TiMC3a`nhQTW|$1xALnPH z9idE@xHa`ROa|@C0aISIy5t>!J2o>G_}2-49<;5C1?>x(+*7oVyqAV{aG-;2+uN1N zY#J!jWroS1?dCE`+n%LNH@Gz&ZkP<(H|JRs$_vT1n%l!UC@;=W1c;T-85`RqL$e)To zHc{YEMS?@n%S4wq{ul!h?qnsuh0~l^i|M*Qefgh?KV}+bZ9qCi@&mc!k1Z^%r=U{t z2jklQsrW;n?qH7bnfT+)7u6~ojz69>6uIJ$8dK)1CgzPorNP{7;txg$t~unlF$ce! zxtpwg1_N1%;mcRkFeLq^x1iA9j8| zP;`^{VNd;HkQB05Ux zXw6CL09sBpQt`ukb7=_^3doE)K$%K(LqeIhFid9Deb8l+QFrYtQqzuZO&|PEYciwm zg#lCEIY#4$Yp`<4m{Io?{ycNc-&KbTG)t(8pJH@4PrJ;wb28BmQ>IgN=RlcuHcSTX zGcJ>$?Ws%$xHb82q@leoV9JYDn>0zMXrF9NLt7r` zVA0;EOh>o_&eev=pxwe{5>Gx~nQnG#I?6B^v>!ZUO_UeyVDaQ{k#x#HdzbL%LHp%A zLHn+x)Ql(3Z%IRYN}vPK%EsPP%5=Uv;KU4*LA$fdBxt87(>-oYrx_-L)^GSjXv+od z>UGdOb+q8gfEQXy+`p+-SmK)Zt7b$uC$iQc?$2?5#aSXt;)T)rHCMc_DP$p@sbmf= zJ6_ny=;QN#r5y3XZ?g>6|4Y0u2w@}Qg*`Rxr@mQCHB#}yBUUc+4H7S`e@U3y+#%$X zSCz@M)@3e}wANx}`c5-u*_T zdu|Nv7}a68tHU6pgF)N+lEu|@}j_TwiVw9>Yv%5=Wlqqj;&`>4w#XhX`h zn_JV8g=!*$c2dBU7j21*JC$p*&<+&-JZP`O9sw+ViRJ>;zs49H4BF-Yb*IzyQjyF**4VKQi6bD0F~9?BGPYYL^Ky(3`Ci&o=>M^T z+Nd&3bZgqfFd4Ls0aISI<`@wU9wnY*tr((gn zfEQXyEcolQ0LrNs$|f2NlozeWgCkaEq5bXQji8OH z4u`oq>|t~;Xd6X_LED{Zw^63^+$mzk3u$PpT_!>M*(^c3Uh{v7_C>>F(4H7DHQy#Q<5J}P8N&Wq2c{hGntdoPqIcNh6cn1qVp1!%EN4;H- z=O-chy-f3eiuO#SgF*X4T_)P$%Jii>MeJ#q4B8i5CPCX z@nG+4Pd-NY^R#WvlY+KN^M8u=VxxmW8wzx=p8OYO>gl3A)G!&euRrLRNYL)3Ovkx3 zZIX`mu7D{IT5a3G{s%k;pWe2o3xA%r{r7(b?d_WXQ?%F5R*M_7TL(G-t&GW+DAOVC zv^Cr?8ML21kcoD%GM(Yp)Y~wbep??fw3lHrXkQGN@}kvvaPfE0JQX2b zAMip;iI6_}k3d`LRyg}PL`Ws9HHeUK1os#dA5|^y-l&6nrnZ&^;xl7 zJ7iF^;QagjG=)9?{wXU++aF&f<-z$p-HUCRKZ=%~%?*7oeEJr$KQ2Y7{qZjiBlgF+ zmuss@95Pvph*U|vj5;idM+FST{X^~~K6A;`Ty{@s1z1C3E{ znrNQdAE&ybQv2fqb?rxDJw0aYg`YOe8{Qwk#ZcthAD?8acFyPZN2S5uve_Rm$uNif zHs;`Wv$srE?k(T+xM@ARKR*5$ReBn2?uFOfYZ1%&Jfijw-YIQ={D43+HK3l)qd_wF z$Dg#q6hjh?IC5DBMrC~_=4>dr`o&=)%+YDt*IV{Yz|vn^3yB5B1IW&vKO(4%La~7@sWPfoZf}iYwgnx zM;HNYaai>r5x|HUPdtRKJh3h}ir~APV4sfPsBbF~N;*CRT^iw-@gM+%FEyzQ{LsDzi#u8c#cURsmQW7nZ zCFI0u6+Yve74#~G)P@2-`p->5vB;9>xg(cgoKLcj-GsN-9l|>@(H!}Njb4YV{H!&f zjs5sLHZp+*gKu@Mb6tZ^i-d%flucCge~mJ6I zH4s|IqTPj)*Z4etT&wN~scY?TUVSl`6rkLLpI-QbyNFzb@P-I5EDJSv-|9e;>}iAn zSwRP~c*3`r@;wmnWma@{(JkAPCQE~Bie`?=Sukuv9A_5I+$AT+fd%<(rstQFQ;HJObXtCXnTK?8u8?K9HYYxL;5|Xi(0ggSBYW zR1w=BBH(a=4_sO_^&h0urpYKgv1saFH&}Q~(bSoMvHKVs9!+*A`X_#R z;j?tKg`;B7!EKEA>EE(eI%ne`B^hE#&|evnc5v{dh*B-z(U#||_gGUeR+7SWh%$Y9 zyY+Xx7G_Ri^_l}R^gC4P<_C15-(RWU@-?cTbRjQ%pCy5Q-NDsyq^as~6>+UCSBSe% z#D9#4AxbjFl30j=)A}oD41Jfyq`$qAdY?np@=EgB_|+?2EHY$DdR@Qfnvz1BfGJ*j z&&z<1nc^+}^vdoP1}v1~NBVbpQq%zHLPC?HWzNRHClggmq}~=0t(m;)v3~9}p&>R) zh4UQ|9xhXGoQ;&~#@-}|SJdMQp26p1C~WqxewWu|5W)5Ct#IfDYWRT)SuNE^+FBxy zNbT{827eL9!Rm?z=zv?B?Cn(zdVAG$_x7skIsnA+P|0|&f4u}Gm{j5w7%rP%l=Z`N zx8M~yvBWX4$Rn(@2Nm?fm)u6oGLP0r*C&P*)imK}?Xa#U`v^(4lmFMLqIxaL>N`3) zip0Z%SqUVyi~79|6ZJU;$kDKhZ=l7;ek*B`u+Z*)nz#)e53|gWpuHV zR{Svk+qlsG5A@pmTR#!nKCcVyXjuF(|6LIId~qNi$ykZH;6vtpAe`?n|A7eqze}5IqWX<s>4i5}Yjt+?S$O!&;dH}!B37^;t*I9Lcy}DET@NY+qB;2EaHooq`TwcsR~J^0yx4~ z!WlkXIK?S3v=8PfbAPdLMmp^b(fW4Y900*V}O-in9&p+IIsJZ76lkA;in3SYf7s$bRG%vW!%d30k-T=3Jp-S8QUtoBbJZgFz9s_oySq&>Z|lSI7i|BTeH zxoo$Jf>Zw5DlPAo?PxiqIVHwul|E+u6b54ER9#i3Gq|esQrrj2sYJ%lk$yBj91ezc z3yQZ^Wa{X&Fk%}lAJ_Xg%HWxDPYkU1FXR11Z-`XEQ=wmT;n_O_PaoFlm7S2{=tPaO zZL}?m6c1chF>aT-2Gw1RN3aAS`ij8tT5&FRN5R%s)2$1#rI!p$rC6}yKzoxZ+ zn@r+f*&CLF!AlG`eSFSC>#BV@N04KJ_ObPyoT_i8<<5S-@6D*MIkJkTY{OYNw#_(0 zjmri8)u?AiWR-n~7V66Gf2rW-J7L9Re(~-D{mL_<3CLwXY@>Jt4BIG1I~FI7=4j}Z zHd+p1Bs9L63F8v(+m3g~iv*+#CXOL-Y;r3ij-(x$&mh2%sJm5ITpSBZz zvCrZe^a0?=w$D$9O3nMu5~oPTrT1HEu?_MoP3t!E<^2HAk|Iu31+Nl1KzFQjk+F`v zC&LS$Y)P2CsQO|(8Dq$^Lda25^xe|>Z(^`z4RUfVXVyHxF(RaU$?$#Eq z#_WjM|Ht(j0CY%qg&ZHCtp8k|Yl;(OTo7(o&+Kvcno0VQ$tEp`k>Q2sx%wj)m zWs97p%(A@B4piD(zvfbD6jVZwu`btI*-gy!%S~$3=Ez*M zBZo0~%-7x38Rm9H=30;WjVlDqURA;uo+o^qy)d+&hSdyu4SQtkjavRMQ{EhToO0{^ z2GH;&hmUtf9=9<$cE?3#wen01cpg)p-we-VU6IGE9(C;TsAsD3lm>dBuWMqgbsCFw z2IY{9fP_yADu>bikAHy`u;`AKkFI6{{ zpmdZe{ii8yo_3Pzr&~ju6z^JC`DMZMJ9)iJO09A`iyh1!lEpFvu>hJ-2-C@TAvx5% zUDf=dn%#g{R6+npFwHToewPwA1;m(-VqUq?`tCsMp{g}=5`&}h*(C5wFz-?omUYR$ zR`Z=ibGfS#rUcKVLVqQup4`-UVy!5Cuj*17=t9oM`u-?2HJ-&(k$I8^klv>Z-7Q1) zJPyM)AbHK$<9?<3>_%%3k5n3id$Pj?QU5YX;of~ILjkbVA5QgRav8Q{DSpW&8TcMl z;Z;U>^R(^A4LT7Vc;GYxo~2zvV@+jStxg3E4zx6n4Y5v0jdX&U$a{x5!Bj2cirO9E zbFLTn(J7em;Kx-mH0GMWyWx@BHr`oI#9rx>De5Gvmx1vUyl4b&m6Uc3*O&0}Y$Mj~^+u<&4KK=mg@_daUgs(XXth<=`M+wKPO3hUHOI z5B0dPXQ&*krk!}OT;f5m?0{7L^DAkaob@kVLEC72ey!GBW2t3=85*r#ikvcBPqQ?u z{6$bED`Zc_SGN8aWUN>GR$})0-~y-qDO!KAr55Zr6echw6g?m@z$*W^T$N8{6Xu%# zj}jdu9*JKk{*i04{pts4gJ80KLVe^6hvR8pvN1_FzL*E;n3tftc_h^h=LdHuU~yQUDD`*t_D5Y{7>+xY+f$Mbx^LmUYM}8SXO@}y08gknKWJB z=Wbjf?J%W%$I`}o?fe+n;)kJ=g|w)wG1nivOAjrNI7yQNF1sy(f{o|D_(IFeToU+gC z=$$>@U5!U><4{KnD&Y)A6SXDz>Gi4?u90wE_(rUv;YIYh&S4DsX3{o9+A9b3E@5FP0Jw zMk9>qbNfH2_UK$;#LGSuLGl6bNS7eqAk0e!zJi!YRCk-hqdO)J((JqZ{p+%C>c%?5wku!RX4TxIy7d^sXOc9ST zDH$C6yg14wup0O4M;FWO`eWVe5aJF3-KMliCxdg7@uFr(ZB#XpPwG<_6BlN^;_HCH69Elef)bEJ20dB-$!&u8dA% zd!E%+Myr1aMVr3u9xYfYM^_Bp1_)$GNZ{p_Rz1{Rh{wTVL$lDIvlKN{EvkW{=@W>? zBUQ`W2qBfi+)~U6D|n@Q3mVwYGz&t4dcv%j?vMIb+SrC9wa*Ct(qAxJ!Hlr>*0CJuc!tfhH7y+S-$+acaL5x)^%Oj5XRTY)s51HLuIa2`vb5%e*5P+3R zOJy6X3YDWly70+*WP`;EpJ&O^md=&Yrqwvg(4y0Y<{QlObj*ji6osM{3ZjQ~7TvlH z1>3g+$_c~{O?z>rB=tv|lCZd*UNld_(+NxDKqqDn;UsO7#Yuo2tW}ModMGrs=vK)d z>Z~d(`lP}R?qW3JZzzNhhQD;+J5}L#GbNH-FQb~5wVH`RHC$K98KK&FEYjID(0WKD zX-s@1MCoDf7b!f8Je>GJsRFa!5NsByS3575V6zrx7j#Jt4!4L|vUs1*r zEhCKGTq$na(a*?!RY~@9NNoFJ=@l5cMajAcWRmPk`Zu#~)YPiwUtek48Y3@L7rAb7BkDwsw|7fJVt5O~ar0}fZQJ8VT1K#%nUb)WMQLewAx{g{ovYlQ? z`VWKa5;Y|Ki9bPGJsMp5k=Au^s;+iSG+d9=YIGlATaJNIrJ6Vb@(a0ej>)y=X@6#k z__SG?&L%Bar$1o`V)}s;UGlG;V$7a$?Gmkf&K1^L5$HX#jYDYl7X{JHTICmZbD_*< zN;@M(i%7Mxt^`_{6@ZzP=;6G~0lA|P#o%sbfJiBytCV8`DPoaUf736;A_>xbp)@4{ z4Fc;JlJO||l0|5>=4q!3Z09(194n@i8G)LIo3cY&i$sk@zQFKFi;%fX{3q{RR^>BfBgcc(qstdko4Il75|KKCYR@RMoD0DIa9yVzgofVu1|jY z9D?m42*q2V7##gAhfMffbgd|e7OX?J(y!I4)<<{amVoa!C5>u1&KIaYctw(kllA|b zGE3ylKU@G^GUH(x>AYUG!WG2BjXC1sM!$5TG>gQ;zTgOt(>V!|XDZg!u*f)RC+*?? zPAdfAtc?$=mzRq@y|RyGcozMyzl@dS)c^6%#FiowHf_648oz9W<=~jqw7w^}JNF1)LsxNtimKu|uiIiDb~g5gyNdE%XU&6;cUqKE(#TMY59uGR!VK-548I=pReq z++C|)gf&EG64d z@Sts))^6q>$D<31yYVlIdz{enOf6`tzSIp*IrZN7S4Ds#C>+PNrnT7cTo%HHXIrsc zsQz+jH1;+lmk{?nH^Z2WC^SA9r0YP6Fg13}%3^=ir>HgqvB{TA%E0@Es$K`Y%@+&a z2H>qXc!3*uYyB0U2;L+wvv?bhs9v8tQXK74Wc}zt<}^5yF}I@l>w61Nc%1Oy7+-ue zTJn^_=zg$+Bu-^ktnVv>wUonMg4wlx`}FG^nMIWyQ`e20ZK>g|!DZVdwCSiqpV>bW zl#sv+zkLxwOLb&NY^G}LX8FycT-rqQA#eh)a>iY)>!DWsK)a`A7W60_Uc48ZE&i*t zoI2nn*8w-wp9jnIHk$r-h^RI?0c|t=Z|uj?9*w;OM4z51N~axY-zy6JZJ35gZ;Qqv z1^?cK0v@N+Wh0Lm&~2Li1lF!hVC#Nf+JUpiVr9L@u!044)Adyl96(5c|2lOPCv?w) zr2Nk-{i~=wxt{BP5ht^G1I>%RmSFqfCFNIsBv>1gxD3h?ODX;A`a=I1-Lrfa}L zt^woNZRXE-Z+@rC6jQLILF_54uri_(vjaDM2}X8SFyd$R5p6a)8pi6t{IzOzRG<|y zC!F1@nz9AqRU$@EyeFP;KCCYVe4_#i0s$tYl^;T^=Snim94e~IK|_Q{y#+U>Q;x7r zUu+UB5T7;+x`w4%+wBvq5i#9K2Ph^VTnM*sg#6ZaaREBM_4iR2e=u*AjnyeHfv+cu z5LBEId+;1vMFT_DNgqNEZt0v~OsW0O6_e>?6k0`ClaGOhye*9TIy;=k2rPd}=H6KKeXlVJ`AN zk#$-m2?&WjwUa+DbWGXEAe!_K#h$CblEN}}57OE!Il zh(J2x+qNS{$OZ0?q?y7mj2F*_5Dx2FE5Z)#4XBmUAp@Nw-W_PlW&G%P#0Y6tAy)-L z5X^`m)2*x^+pT69zE70z2+Ie3T6jsKA1>Ebh3c25Q;=PVo25kJHRWD+o>iTzD5`He zWfTN<&74@G)NKJZ28@+I3zjTzP+;D%WUb!BpyR=J8Rt*plr-C`Re@=4r86akyTnl}colBcws%eST zpJLj!fgNSYutIZhoYmrQO8@EEDGLSQ@5jLe+c)aQD&g}1A;h&5AkdJOMRjaFI#Vn4 zMkix*(Td**{f*<@OStzg_j+Z-h6zrO*E7`v1mY}S_=KP$S`fol{5DBU?Xxf%lW%^- z+hAZl)r&Blrq-V+f7kh7Kb;TYl6|_y5hkVv@%6NrYS%WYzTr`7@AY{jMX5e6TVY$r z+A#N?hbbR8f|(6UASm#|(O8q-rt)qw$lca*ds%kxFsaHdJb;7RACqdrP&yah8!JEq1kJD!dU#xHHp zi8@ttJ+PN3k#jw8l0GXtiTdcFjdFa{>+|zj;sFUUpsdY?a^8$jov-r{`~8;l*WB7N~o9}9Wn9gGQCO2hR`}u5F7aj zol{{YV+-SxAKC4L*ed_ypK*u$JHuja*c$B|u4*-@yw@=@pdJ`1(m7&?9azm!*tk%M z9!n9y2^e0Bj&Yrg{c9l}mo4B|l<9Jp>Hh#2+#!ED9}3PTOvYN?IlnVX`~~-Oh(+Z7 zhjkbhakUL*m*EL>9eOq9s78NpeeO2r75Yglb}~^=_J-wP;)dg=|MY6<$(%A;D|9e? zT!FQYJ;U1C9#Ur70{SNfV@m-XF+!klw`cl+xQlgckPz~P}&>EIMcQq+b2 z`g55{)b(8wpH!~_!6iMbP}OTRu`2RsOo*Z!K?%!!Oe$bOIlR8*SdJMqK?Bke?)AR* zI`Sg+I$9c$6!#!Ok9CW^4mmt=AYvxj%Qj3=hvMZ4dsb0a3$Zkr69|hZ#;Cd*ub`T8{WOi_Fi(Pct|@cLUh>PUl1Y6i?sD3 z0dtqquDF{{6Mly%%C;?qKYYLNb6L$^FdBp9=48ejX=oZ{mN66=xJ6V!y(BGY%kmc; z@17Jen*Wema*lUn^#R&R(^!poA1ZM5>25h>?e<~4>qX<4mKmt|K;W?nk zNNINE8ha}Wjs+;Hlp;(lB#c$@S4XLlg#&=}teI98=5v&Q6upR5V@(C@vYQmC!)Fpk zYTRC#&ag~s!elgdd@+l62x`Yj!evVA_`bZpV{jeEkUEiB5<{Z^4;P^lo2BHz{^Vnm zG|HJ~#c3`dPcLrVB@jog%1iJwVzO@E+0#c%d`e4zxuPG6#pL@jpP3tO4QJ}n`%mlakr~T4z_)SE&QagK~ZTe?&Bv| zio*k_H+7lwG6D+$-o9UE;qXF~CQPa9bm=&f2&BSUw`+yIvf$3_Z+nS-F{pZFJ6jal zcw3qk?*LJ}>?Z`#Vi}9~1}GtaIY8e|9*7($yy3aRn?h$m%RZ9}T5ws^a-+XnN|OMz zGSBs@IGpn>_XLQKs#wWxq2(SmMd1{3`NKHsz@$0!Rknw1fj(+rT z&>yb!6AZl^vf*&fA&E#Q75hJ8nq|7vJxXJ%lU;Z(yiZznWF3f#AZ29IUx_4t$F-~m z)eY6^)?l3l-?TUEXjO90j_==Ss&ntz5hH;8Xk~xVu$zfO*sBw89<7qI#dWMT405|@ zNgS)Z*Qa%C@-FxawbNfA<0l~sms=IF$d$9a`u5h}SPH6Nlxhb{ zB^y1wN1-)(&kMz@Z`B$|tS4<3Y4rw%R_*18MI>=M;>TimWgUrDk%)`8>WVr$-N{6T zvejDIQ&?FG3A(XAwM$eM-Zfh8rOI*nxDpHdS1X!(S$y6~>>nI_6M{ujD@Y;9k*1Tl zTuA(G=wBf2=zc+Ae-^F_gi-Hdgc{=Y_377b{E`TDGq^a7RVRv}0Kj)J$nGZTE1V0$ z@-9p=h$-Nw7hZ@|gF=ne$sH{*oF!Rls@hCx9!R6XkxJ7;FEC_1mF#Luh7EdAHf}`H z67kCivi7Ur5o6Y(m1c$7Cwo|GnQ&g1IAGdJYQ#vLxN^Gx` zH>N1_Ssg1mvHC8`H6q1DEpRTSO3z@)M~B=I3T<{%>RkeAL|@fSM4Y6uyR#UGxhx+l zDr(o+mhB=l(Bz~)TJ9f;)O47fNMa8a`Wn(zY6z3+eNwmZYAAVcrFk@5BGc7RI66bsGnu4_MW&lU5Rs~I z>KHhkW8f4$n3LFFC55dd?gH_|MwTi4L$JvYHF?WOB`QM}G2=XWc`%=OrD2)qCBOf~ zNiw6W$~9_a(rH#w=`-ww5I}1bFqJQY8jrGtxjH| z8e>9}b!;JALVD9&7IVC7i6n7}J>J(zc5B2ND8a~rKMb<|LByeJOdQQl_m^T!0l7qv1!DNwnWD5MPIFo;pV~;J=b&!iJy%1S-_*<@AuS{ax-n0>tVQSR>c_@Pa?!8L(T!o60&bowaWcr-FBjQ^67C)`Nz( zl=a3GYiipF`BIs8O>(O(*fvT%31DybY-rG?Vul1_jO(&5{h^)Qw<*9TNNv6;rvlYS zwAxYn5i+56vu!o+cx$?i>;|v?Mw{*()q0xcgQyl)kGSq5=iatzcul#Fv)uA%O^gb` zw$*K@MmnzTy$$awOYeY1dasRr8s1A)j$Uo{u7MFpXzg$LXLwLFkwl=LuRJ`OTuC z^=u`HSQ7eH@GOJ|R(1|4%<&UByscSwOq3%VGM|gkkoH^zY@YGi2r_F<2CaKesQ(LM z5)1-n|F&v*gP4xA7NIN#Q*n-C!4Pn=2-1=r4n6X@#ZKtuw|54g1P~iUB~@ zUR(pCg}XJ%E=Np1K(${$g(*6YK`6=HUF6<2rHlhIN@I~EFCS44*e6;_1B~GrJ-)?J?9oA|BOOaU&XA9_H3AmnLdz z8KkwWIo2Q+w^Yr~z!n!3DOHjW0usz5@xP-5)#YHVHxEAQ`evkhZ_8;YGF@KVv&ZywklM?odSfflk67a zg{&GhhbenWz%GHR&#jK3{w_Quq;Hue?cqxMbHp_Q&Np7ogdEC;X!(0VdFtRi#Oabc z7;MUv_;E{&P>n?D$@Ej))BQA@Li%SMJzRIo8ip$0WrnYL+GUtK$wpUdrz?%YI++KL zSK1{1A463=5)ih7L#MIXA-)3a+$_%+KE;fyXUGlH3 zmLsS%bGoB>*_3k28!UO0);B+{G-sSNYJw{Jj^j6aT zCyiDP)BF3t>C)#V416TME{zy|x4s>zmKUFc;HpI&VN>UMQ}d7Jzt@ZU$k};)X2Z4! zdUDM{W1od6Obf>okk=<}DdnsTwobWwirm?@CQ_F)(GJ}~3!W2%C;VsO;dTx~43j#Y z!RMTkNYdq)W6YyN;N*;@;TuSoEyP610noj%R1&J-8>zzA!YQ>oh_i!rAZH+dQ?yx! z$Of&nh8KP_pmh~#Fp7+#K$+~UB!;FKtB?sp51NB481+3_>%Gy)YL3jo*gBiOtZHLT zJ*0}@aI+&HGBJ8~S7f&J`aQ`k>yS#RmNnW=12j$jA1~*nHl9c_Y2+{q3)>BC=_$^i6bSmx+w4N4FAw%^J zqcW-!s}e~lm!+B)J~yjM8nRQ9;;pAULev}$w3xpV15JnAtO7}YR^_)hlA0sWr;Lnm z%(GZUOAzPcZmrg$`_<&ncSWAJH=vbK48)C5af>llDoWE{T)b~wmPS#B>Ok0fhRV7= zkYyA(8Hy~!yWN??9|o(SeFNbC^i~s}iq0 z(&E9U<-%{(NB^c}p9N(qh~A80?0!RamQpolP%)ihD6cS-W0i7dK#97J#mzlLIZn&2 z2+GpxDgjk0cPvAgztb#m>Z!g|{?pw84&HMt)|Tv%dULngl_uSGu{@l7P%c zKxe$(%Ia}e|4*t<?QVaJNHA?Y~!#7^7Pu@3W$JklfHJw$FGtiH zi!ApC<)}P3Pm#6XaijGXuk>*Qjc|}$DzrVJDh$z7PKBl9k%it|cABN&5t_pJo0O*} zSHCmIjJi7=1!#{{o_!1tYz}8ZDj!8dHRaQWYxPKQ!IhEU#`W^l^*Ws_o|SYmA8DZ9 zKom(4p)<-;=Ua!TuGJzNRtSrV4#%giv!W6Rtu>Rz38|u5T&_oAu7ot;ZYfq> z;4n(JVf`^O_wSIb2(&s~>6TzEp;f|QRJz;opu-tNgrK9*+M)5OL)Cqwowk!-^tcE``P)4F3U~cwL#XVIrWOs1Dpvq^f zkRB-^K3cSfMdt(p@S83o5k?Mo7#|QKf~ffvW=)SE&euBrjg^{OP814q@{leY0(fNg zVt+U0`ce4>%5!PJ6RF{i;8@&6?a9oo2|>rm8h?94@*O1x)C6TdC}5U>w8lSeg@Ny1 zSdVIK9zWOk(Iy6w&B|q1e4_KVLahWUa5pQrd0ezjydo8rCQ_71QgWWqJnA(hWX>Uu zKkd&Bf#<|paP3BkkxgE+>oBXQDtCn#!la)`cT8>-pp+fkF zv%rG56c6@|#^#M7af>|7OjVRC{`MS(V&*Yv^G1=#leHAx=E?u?=RB^OTBeP_zvT2E zLxLnGKda}-MYCdfUZyE!ZjqblwIY3@n|Ur;Tpy3d{RwX{YtsjkHBTEr@zJ|m4i(T@sjh!VRj?1IU=HEeWCd?5bC7^7cwyO~`5TD2<@S=Yl!UD=-S(p54WnBz@ z)F_rQFEWY`^tY2ibXqaURe!AvE1{78>ujlvWhqAeHPDyanvH542L1mjHI?b04W$R- zwtrqgnhLEVUz?{D;Q}?00`pjaYQLOK5X0O~?Mc!l|61)OVVR}<8PfLYn2>8YD%a&= zUmhcpAp;Npl;cd9mrMNLbJz>-!uvMY<$=Crw=;zd_8Dp!sPoJ5-GBUfv8h<;M;=hX zMWiCOOtZ;s`ij3C(>9I4vM%}88bgk$WK=fLmsO+NB14?I?tu`~BH>s5qFsgK7ZxAW zHiHTnCfJew_KN@T{&zxC0600RPd|E1RgQe# z75UsME6WLtbp#47P6QJ$bYcL;GlJjr_hPi6yU?xpWcD|>^=k)V!EJ=Q?M7axQQa~S zwYB-<;I<0K?C53YtG%+{kmrNy*vl(B@?iOzEA~6|->4p;*@JW$udKJFl*KMq6neK* zTOEsoQ-4$X+x+xDs3F)N6ZY`?$c%!eJsR)TJQH8#nI^qn;#UwoE<#XhLU1DTkEH|+ z7hz$90k|K3JwvFrdX-rf$P8a0GWp_%@CEql&!F;V_$*J~Z}Z9?m9bsUyWW1F;LjD9 z9r}>q?}QdIQ(n(cuk7p;hc87?Rmb>mpON;m4$$d`sf27Hr9Ups&NtU{Ev4*t;Y>N6GgH0J?##&XBUnpX!VA|6FnMs#fjzT%#SbTEP!iJddPE8Z}^&-N3fPwRl=k%;v%tUi=hjz;)LlQN8oB zZ3rptiZYHhzCI^tCXFo1z>M|pD97Kn6!Ee?+8pyZ{4G}>_|pTTvN}3Os(Bjcv`ZfV zhgbv)r2TkaTEm)FzU2{t%JV|Q9HAV^!1-&8x&BHD?JDdQuyfg4Iy&aE^V0hi?^S}g>`_aZKA$8ei+wOT z+3S4W9G}O;dxBCOJn?r+7vx-|r!mt-dUVki|B>HOWqQpb}iIM#D!Zp}j1PK+c z!xbqyk)Jy8*2xq1bv(M;6kp9xFZ{KRr%)6NLG##o8JCq4tzF(1W%amYJ8+PJMuZuX z9|}aspo?}F49XVo-Rkd708n<6R{7OFMp+Iz`Wn8vj?;}F$q4R+M+P#DEZE^?O)w>7 z&)5s^n<7D#3}KGz>yKgcX!6L;Pm`SS;&|baeA#yhgWwzqDAowQ+Rh zSO9_>RnAd?9GHtq(A1fUUZjwr8)p>dxjSI1R<D+=zrLb)2T=Zk(pX zpY112g2x~{NP!?mJ=SIEt`}|A&B=r;v z$t2+ALZ)Iipns8WlQ!P0N(~RnIN@z2uZoNDMUIWrNuX!?F^pnX*&WBb^$cKREGRRc zlQFuPm@{RQ$ylh0O%@xQ+@jSl);>iCX~&h&0=m7w9aiX|ZikiH@##|?PZ{p93^JeG zP>gQlM`MSPVkRj9g}I%7QX#M3n!0X$_@rW9uL-WpFbeqeA2ejF`x^hMTBx9-8E%A3 z-9TsVCvnHq?{FRgZprglze=ymz5c%&0?|Jo5FDj%TT1$QOmf4C2Sp)p>s*OvyZq48 zzt4CRdFzBXd}q+NG4E7;D^I6y`k^~VVNyLLVmOyX&;YpBg!=*IJn}J}uoo^=e>>E9 z59143SB9h`f&FsObU`6~10X3GNhmygTfW)}Oa0b!zkkZjivq zI-*A01Qjsd!>gKW z_M_8DSI3C93aYfr^J{rcp2*?fjymMU${cEk93M4VZ1FGg)@W2VI%D`$?;RsCPJB3i zs|Pnnma1omwL0{4%;+-^7$5@@S=tp@YUh(J2?+gNtL}?m9hG$GtOrip=Y?{tET7Ji zYW4I8)MpSPcNh^U29(rcGr3(V2(&QaJkhCLMtTE=*P=NiSH<33-`4RjF3rt6STrYE z99vwyY}?q#sj<J2b>J@)k4&xh`^KhS2mOks4(4Tf9G00dsERy)9la7QY@QFp z9v`37w`k62+>cub7I`dfkUs%SZ`BHe0|pG;r)|S01BHa`58tCQIvdr%Cmo&&C*;T& z69`xfw&+8waJe2aLxXt|fOIlml7l9ZI>QO0Q8A8Wc)dh1uKE{m1(~r(9R$@X6%RvB zuJd2vdK$NxqkzU|b2VCPsfdC8=bH(04QQqtnp!Z|_%|u@bTHx1gc{Z$uWd?cP)@_b z`i`M6t=Kwavli(rR_#uIHr^ZPID@<`QMWE6w36VL%|e3#0^Tc)7KfEvFtuH5^@obh}auk6#EIOb^nN5AG; z`yP5L+RCm#;bj_BmYtpA@TGPbMe{#*kpY%LGXPNp`JWnG*l7O8EBm(<>6LZUuSrzg zPU+Z-MJ-X@5Bc~^(Wm`2LiWl&+EG9xVOV(J(D~>PA%7dHz`-fjgAx`CY4~X&jUXf0 zLLUM7U?m@fSb(EQOIM`DCM8Xn+5WonUSW7yjei=(On(6D(40_4eqjF#lCQ3j3((Mu@83;(x-I|5T zYE*)#wgkRE5`TE+$NFo`C%^OWG5iJl)o#ATEB!>IO1yiAe$5r{?S4yITP400l}gXC z9O8?}2YqK3-U#HrQMHd$wOgSnd=@@3KI_^S*GgIorlQU`QZiBYn7{w&>;p`t?sSp0o7}5Oz{cjr|c6D!Cug26kWPHIn;fg%buZ7IaZvj?RE=WwCph=2`#{v2aTrlG4V>MdZ*{V*BjPOcX@Z=y3e zJy{>#QiGJt`Yj;vDEz&Q?>XkH4ft2))GQA%1PFv%Tj4Q^)obhqz%*@X7Dyb{JvQ?B z*yx6$say-l)ESRFU+oviB2N}gz0bXtSW)e70$fEmaz0OyZj0Ah7fl_OcC9Z0oua7+ zq+Q!F7P-G@YBcTIPKbMorY*JCU|Bf3HuH5j?c4DVO4M%B14_hpJpbK6-+_~BAF)m^ ztp*0^=Y6C1L{}YV96y-MQAH~pzs)$ltSB`yQzABYM@FJ6{88#97>ST~#E8^!6B;ws++sWV2XiKdXLmg@%8nkGFL&1= zG=Z-t^yavfGavsjghMr7R71BV*?HPV+{&D4yJO zLKEbr77TO=^xx4~)g4uc?{Jq;_rP0_7T*GUYjhp|-}WYSdb7l#&ipzq(8nviwXYb7 z`G8#oQqKJ8D^t_#)wo#g_5D`D3}ct=b2;qv26gdDcgA-hm_TR!pHP;)B9sViZFk}F zw7P{YU8hUbI{&PMfF(!(gx+9(Tdh4+*clNahLo(CJh-M&o?b7J66Uv-9+*Ev@XNJSS%!vHL&#taWm#v1)Pqk)5x>&TT3$GM5Rp~h-RxxE9j(n?%F2P9Z z0x13+gY^qA^~E+~LF3P~(_yQNZsFQpe=+nd76wreblCe~E6I3?d@gSqtX@>&F5pam z9w`21mn;Ag+l;bW`72t&EuH#M0J;~7b;M(H6sWJ}+`88?oQUfHH2;I%l>@}bV1?WmV-h!K?_IbI#h zJ}1)UCmwW)QaL0CuVjxEw-^e)hGnp_#u^k4we^`8*O6A}xhPDJ*UH5{UfGK>cFFTt zZr_s1Af_<7I_s@NtAHDqIS)YXiI!3;*9Fv1x6zelz2$FrBfiVJ$c{%PQXkht9FK$# z-{ZKK;oAQ|rZl2EA5049z0!#~q}QRFujoY`v6M1t3Fru&uqLeaZ%2X$m$ki6%+wD! z=A}4H3$Q!?y)XAOHA5jQLrum*BU4&5t4C2y6WXG!tI0Yy19bllie)o(!(=KHtr-;Z zB0HU1Y0LTrIsgn3MUYWZ@Jat!1a#s|pwY=ITpZBQI2b78$?f&>@(_8rHeCZL0l0<# z9P#SVfw?quKXja9zXqLR60pW19dCoM0QQ4bV82HH)Em<5*DCKa@k;+`Irxq%bE>U` zZh(2|a*PC+mo5wDC3q@&N5>3Pex;V5lq&Cxu5VSVHDp*#wnFLZ-H>DwyVhq=NbE~@ zwj$~>2xOdN-iHf{>K}2xW-Hb4V?-7VvZ>%QIVnydNex zT;Nw>3m++L7%rsy=nRA7F(hfgM+lba^d~GAqjP9z@c*(_>*YyHbgthEsUhDpHw(m^ z3I^&ax}U1m0`Ak6c2mi9_%OtS{Vh~@9fa5UGw~x8kW)|QAyLg;rW)}`Ia*NQpG*s6 z+(TjQISS23pI)w0K>}Y-6%pbT;t0;zvg#VaWcx>}?%S5_mf}#Kg;%Xlc!q#|+32GFpXhdzP*Pup0jE3sbgA&CmO1;v0!(uIJsd%9#MoNyyEveUd zsm5DN?We|1(4Ybb#B<_3DAm~OQLD~T3h@@e8~^uRYi93#PEPRBe*fqDemqY&v-hl7 zYt5Q9Yu3!HnSJj-ksWfmj7`~hsZjVR>_D~A4)Za$;lD$~e;8eF?65Ca|H-fzWE}ua3BW6*#x4KEu%GeX64FyAt!xN|dxUmC3eLI=2oJaCQ5F4HH+le_~w$@@__xHYhRCf@U*Xc)@Xt z=*Q$_j?!gLmrW!+lAiayv<7=F-F(5xv^y{^UpxzHk{k&QF(!GjKup%UP73O}K;F=n zuU#b&%t93ORQZ|5Co>z%xw%qcjA#pW31UJ36r|Pni`C-)(>CS#{u;GZMof6m35@QI zHqKZR`5K=tS3xgzp3##-7;{N{N^H$QT#81y>!oPW*I17X*@p%G!qmX{hzkrKEi^#J zO)c!IEM^I^K9U6<)P^R;?RGlLZTW!u&Pr_@teYLg_fceft16ttPgkR zrcwO592tayg#KaEii!~^PNzj2bJ)BIJ*db!te&D&MWO!&c!5sV{%jIN0F^My>GvsU zgg`LgA0J?MQ<%uWwGYMM^eNa-e_1D^S=1wI>jSL=D3n`nZBz@(dYXdKif{1gQ|%QW z5PM%33{>rIT53IBv>)Z#ZBA6uT`1ONNkb&S!dNBVQ!Nevaskd^(`^Qy&fq($Pq^d= z_NH~3N8!vMBZZ6(R-kXuU9@NiAlv{5lG8fOWm>cy%%$)Gzd9tj)zI>XFiI>jzo1=a zmX(mDVpjn}kHW4WR7ra{8=~&2=xV|2-fTo}gSMeQLkD$s|NVog{%P}!dNf&(XG1|I zR6b6HWp>|VS;A}d`25w3z<-VIM;Fl$x|Ez}mYC1Uk7{?I4fpch*VKlK6t+-fpbdAk z2g`_!6|NgYGSQZ2%_sm4_f3oOi!OsbNnM@j=IR8)#3yu{w`ub!4^f#hrD9#+zRNR~ z1#tI5^I?OD2uXQNA2xU}YQg6qiciSpe?$B~*na2AG03!8i>-LA__uGrsv`Xx^J$$B z{20P?<`vojSMt%VN}E1)*>dJtv>H;yH{M0FCz$eu`wb>r=5?ADnRTU28M}$L0@NPk z3Qmm$p#fMZbN;*9r-*)=fyAQP2`Y@_*~n@n&0AoztbE58ug^6y#8Q#D{Lcpo`AO7w zy83mJWf*;Iis>+Ar*%E%Cp5uiSyWhcV@>>VyyZW**~gZ~N4X6QO9uuS1)ifa1~v+P zJl{8m?!KemPZw&`g=Nm3a>r;F5Tu-oL9SB(N#VB}GUzrBs!*VF)~IkzhH|lL4)x}W zGSwZ&_vFw4_C&Y{$6@DL^Cc%=0W_cnGH@GhJOSaYn`nP9f6zr>P^9@BQ;Gt%U(m?` z?fPu`u+j=BKgkw5Khx*FsWY*^D(htUP?9DC(~4;stTUE;=9o!819z~v`%->>&HfIO zE=<$GXrQf`;i?XV;t9%PkcHuE>5M=Qcw5i6&|x{!nPV8RjcIcwK8$}K zJM+FevwHBeDOKIPI1nR@89vz2Jg%aGqz@!!-+N-+09zr36)r*7#V@k4Lhs(U;hj|U zAos3m1|l1^6LD!$=k;H34-O^8Xy8K;4za91TqAIY5CK52aYNdNI1sDFG`HXo_O@bA zf(f`bB6zc&E8f>>@sgl8yGYo^1L>u+jVGe_nx`2bZ4V=&jnC%%#Z5ciBojD)pg8~Q zOD7KWgwXX?XRU=y)hpoN)>=R}-$B;V%u;@v(brq7oAWSVha|=ZBRL3T8AYDdS>eiMFf@eza^s2?B8W`G z7Inc@@1k3!ie2GJ~uYpuyI@ z^r-+1$m0C2qUnsHc?CJSpEE;O(rsly1A@ZWb|QmipSe~(Swz1`W88%X8}Ty2PT1?{ zZB3cR>U|(zY|^g2(A7?SL#%tUc4MP#$z2+OJMJndh``$PQj^pnFeN?#gGbS@Fc*{o(J#AGR<^B-acuf@3YGmrF?Qu-qmfxQ3a&7p5mz(f{!Wd`0?fyHy@sVf5ci6W_AF9WPI8mx=; z{$yq}0aDvS$9g&9{t9CT*fbESg~e35V8y`B2VqzX)}N{Z`mX(Gx>g1I)xcW*>&7V?tSY7p!TeM4yZJ&yH>6GM``qE87Icc?--9DlewB6a*BCpv zW}{s->$)nN4BVy7o>Y0Ah4h&WhvQ4rihO>;IdhEZhN#4o-aB|rmezI2W}HNXL_E_ZAhoHRYX7?rhF)U0Jr6@P+(gFL zu@MXv^&t;C;JwJ=V}QkzwVyDe0#h zxMDF9Qe9)-xDetk=zwZ38&`CZF1n#vA&HoQAkbTD&*P4VmCrrQ^7ZzXx5G5qGt+Wl zi253n zW+Ee-0!WpZSNZISNW++qfK}QAt1fd~h{MK&qrl$gG@@}Ss~PPA)*fVHYmfm*&p!&> z@HQQoImVc%zR>YY)}G5en!g0($sg}TyosW7@JX*$V1dfpS7Gwv=>;EfCTfQkV9@sP zy?-4^T4nFZ58|X{rOB*AvlpY+v|8v_?bn|%Q{oS*d-aBKY_C4ejcEiUS;0Wv9lZEg+0R54IFd^eiU9)j;Sb_lp~X} zepDwdnG`k548I;k+es*3tWdk`mHHHCG8g_43RkQ}v8#u~Jw zna*hu#fU15`v)<5pKL_p0>`&Ef%Du^1?7hcGYD`QspT=;rOjqq{_XtoC$Q$p+J78D ztT1iA!-|FuiiP`SJo|?x!1CM;DcbT?k@Jcw2KEx{7un!G&DQ~;f(-fIdo;1ASI!Pb zfX9-s9g6e2W3d0B{!>%!Euz^)z2o?cU(p2}AFnqU-@DiZK@OFQI$w zqc=6Tn}_AXT7K$1Z9G;|dL=DbDOX~6mqnr)YaN|IhE8TXWlo$d8{ko9r7)xG1~G-O z$Yj~)nnYb|?}|}~mIcrlpdNA&mhRMxo9CDvlqKn$7rL5?QO##5Rlripvh-`APCl** zS!%Q_MFLr<7(b+r7lf+>{_FUleR000hx!RGAMrnLOS0IS$)OX04r>cC)j|A^gN*q1 z;(WOIDf+LuvlC@(WW2fVRYlOFy<$H>AZr(p7&?&lnVp#H=C;ycBh5rb(++)aH-F&+ z`1nB4{0lcUfJ8S0X7zA@nL}1}Vc5;*w7!1ru>y{rF?`xolg0eg6HgQxxj|Ri)x|m*W9*>tgOdBor+EE_4ua)8l>vZKYi#esacm;LcgY#*!{{D zybb-+qtW@zd~jRnpF*!SUYa%nHed*zja{0>Ugst@^5lM2P`kx&9aXY;#2+j|_A~UW ztVR~VKGy*NGe0it=dcbxsMGek;R=DAQprh_>g{I4V$Twq(=;?Idcm1a`!O%Q>=6oO zMplQ&8BfU*S)MGMpkK|uA10sH`rqkBlErlS;t8Mv9Xejy zx5h!LBr2qZkv)OgJX#ph@e}wCdGhOfpS~-N1oh)C2EQTM!Q2z2q}57Tu@fFtf)jbQ>-XI@_H4}W4t?Q%^En5VQnlYa}phZvCqUYup#ki*Yo)RsZ z;oB0^Krs|-pxFJaI_eKp|2HZc-UnAMm>~`D$>Ndq)bAayJjhbBU;Fkuf#jtNEh?!3 zwS681kn20tN?a{NT*m+xhNN~WM3EsYb42Mn41CNU&ur=7e2-OAeSK{38U{F1SHbt@ zA@Wi5{Hd!?S}W0o`aF^qF0&xg&C;lkAtyLbd*X3YpY9zvY9LV6LDHV{zn7j%U`bcgQ9g06NTyb?bV zGhkk2>z950(+x`2ZN=>ssI6>Hbj!M#4!E}IKvAaT@uc_USa=gkDH4W&ZKLp1prw=o zB^Vtkwx%rfx-$=9y?$djd4L_|N27I)P0Y%T-9CvJZ z|Ay@D`!!__T6|MP5us`~k;%gQH!@iJ1J~UIkP{KUw@j@$M8#by9qVL11dvwZ@Vy5e zNb&nOZV^go88$6J)_Vm8zRkmfmXS+0^sqe0-KOLYvE<}-i)pBB;q4X;fOG2|Rbme` z+NZ~4XmjX3@`RBJ!{`wroPWAc+M$Z>q+3sDT#*7QLE%JUUA=Tfigtbo^m_tueA;clw-L-o9AM(0Kr&s*>zQ68EM z$1k`+g!^L<4ah+&v8Zob=spETt7Uoll6!ptUx!XgCj#WKkjO1=*yGcs?c0?`T`BT5 zj&B-k2Y*-;u|dmCIC13ed57dOW*&?Nrx(%aJAu8ysW?wUnec3U@^!i3aS+cAiyx=ZqD8b-&ut+lXYP!~{SRmEhQfi%XT zk`AE(vm*m-S8kE80nRoQ>PUR?DM0Mu&j#Wb|0-NBoHh{yeV_G0TYn{Z1^CBWNTHP! zxn2SOS790}W09*@)Jxb6B&F%qOXxxGhNpf|r@7$?;XQN`;CQRRGIiBtRJqRgudVSm z=NtuCb>$$$hN&FOC5k9qDAbqKzEWiYU7SW&3@?1YMk&MwqAf&&JtFoAB0K3G%Sf_e zIuUbnKYC1c-X|m^gCSMHk_wyB1>(wbM57i4fn@VUaW;4bsw4vidI|eMqCm2!V;60} zM>@8WijoyMM0k9NJO<+r>?ilv?FrG9y|I<9Ut@<{aL6k~J6EKD>TM^Tlitj%Nx~L& zN0U}HO*cVwPTLLRKVVTwNgd9DX6#u|dE(lrt-QbhJ_YIG58~3GDK^dIP=cj-5|j)$ zRt^b(WjyEr68sTKBVn8!U1NSit_o%g!FmF9l=FoL)E%aO{bIM+i>&K$5&wEMOd(%i z&N14rz1KmCPA{4>9IpJmW2pteDc|Vpo*|Ilr2^?30Qn@aIr2ycc|@ss0Cp5i))lTl zI{x-n{%FtkQmR4EkIZLIRQ`IT{b3kZDW9LeW-Xxd*;++yz%s{364h-r5RL|b1nYTX z&&2=a{uIw!Cb0de>ETFc<oc{QI-($aag zH}>i`qO$?7tj#^Rfw1K0;L96WNs#*dDWA^Hmd>AgV}JTaba3Mo=y0hJ@^N%H;CmiNY%e2&qRy1o$|c(Y-aq0<$_389giDVRLMw0^GI{Tg?yM3H)2_{A$NK;aU1-Glz#j(dYPB( zCSa@X^zu7oV4d2*yw;W59sR7yR9Tu_uh1DArecr>akrzGyUl1n_loNW zkq;zns_)^9kX`yD?G|HuZoaZkG8mc44$h#~nL&$Dg4pp|JUxxmklCEzb@GkQ-kf}| zu=0)ONr17sLO_`VrOM^$qVjc2=5Vtb<8$4E#HCZGYDYL$*j3$w1c9Me^ig&7~70p&!bfhi%He$!>i~*$RVc^dB%Kr77Rp z-6XR>ai+~AUbQ1s(SEwt@PO1!=3G(5ECnuetd?e)$cC}B?_JLo>#*ME5kcgvW+r+l z6Qe@WHZ3WrhCJJ9FpWUUhV=(huK5yzI2uLPqd7f`*P*l={=3*$#I{_2bX%dmyTg0b3j_zvcs61S632V}fm( zPVpq<$}v$J)C$-8qf{O1u8xvXHc=t_X@-q&2WG7@s!iYK@Cvh>FUQ3f3h{L)p{m7T3^d`2MYbk`0%y3)%yCK$m{YD$!n3<72)g7$m_x3>-mw_Te{ac zCd|9Y%y4!x-`iHJ7$>(9F5%ZKg33eeS@aPF{eqKv-&?thNTZsdl|<*)+)xPmvVuNE zP+evN@YV`^P6%use@jr_CUCON1GsGz?vM~p>CYfiP*HoiFKY7)WgD)jakm@2%XE5cE;Kw~)*oVYO0j zWAnW!0lu=&SAts{p7d*eD>g2cG6T5e0(^2qo1Xg1s-=7jKjw$5gs#*EM_hvSpNhnc z&kfdAN;HNrO;3ylj4@$rF$6cw_s)P{wngjSW7`c0J9IF?!moG4XVSn4~Z_1;UuVKQ23 zYnFOOOARV4wH-^%)lxH~rLv%(yIxCeQdsIBmim>Jx*}TYewI2_OO+Lt+M1=}TI!Z) zsb8?vFyvCA3(E<%lY-qE1*<0*G6hV&C(q&Yd+-9yK6tCm|IY;jO7h}Qlitvspns}p zTOi54kvINTAl7e973`l?YLB`(?M{X-vm4aQn?laWTEUQ4?!%c9EpL;^44gJ)jP}N#z#N<^$zFvBhHQ zAviFJ0Z|!WBvVhsnlrOnGlP}=MTj+L$@`hPrDg_mdRgN`rq9gYCk1UVx^a@nl2e)a zx@HD0%c4y*^EhTcshM41s1vVC7Kt-~qpr-nQ!}xT)OY<<{R6-DNi}jQw9!RS4%oW@ z7wla(*}&at+w6k|ag7C131OjjOjyDW`f%AUyBo01%);U>#_b}o9OfH6g27umZ0knfcva$rg z*8bi&7D;P=<$_GLzkkQMINL2=K{BwvuPDCvMUjcG>~fi&(f+omQBIl0LzPQz<)Y>( zh{4+5GaiTieVLW$&;C}4Je@eGcvr|@_~3ij z5XN3o&>7};nJ44{I)WMlz!>)5a8Du6U-xSppAe-_L94IOWU>A@YcJ4r%7MLETp+3E zZ4RCzg2S+jCh}_@+nQQkZJ)N6zO|ls#?E<6WW1cwsg`7DUj-*M!*iiw!sd~ zF|+rSdUt4uS>;&{lGhD19SEhc=NnbO$z6Xz^*Wbu=aaWryO6?&lErCgsJouIw?S!m z&n`os4YyO^Yn?dHYF^=jZjzrMNSlk>m9HPFWL{9SV2ja!RLEsQvOUC=>5O?AqBdQu zP7|++F3^X@6>Y?n^mcd~VnJW!n1dq&AC?b}wL$ckETOb!PL*k}cbbxGh%5&|X3dnD zTta0g?g2XfjP`|NfYof$p-&e4C(84-7RiU@6|pw+>M+6}q)I+uA`3!iDBK5P^J5LD z`W!5?x0>C#8n7X2lJtJgQ6KEGJ#dwU`=)LiisGBP$IOG zIpomyN0=(0=7A+Z#j>IdDRbrSpoz`Aff$5Q=otqI1Hwx5n1{*Pd91ry**^48>IWgI zZFDp%Mrs=+rOpaSZZGD)_H9dYQ57m^?xtL6UjZ;w$A_f?z)d|&R_HqK1*I{s6Pu2N zbGWU*kv~~JLt>6X5ghU8|zE>0YwaFzbA6kaN_igHMG`n_IGk7 zi9lHz&KaF(uln$COQ))DfBldjP4q7xu%kKiF_B&t9A{xoPQ{GLG|=MnnRfOf_u$t| zX6700nOCfx;2!*%Gnjd}d*4@N?Jo2_v6 z_C=swUdXKzm;cE55w-iG#eb1Xia zOTcZuy=`1!S0G?Tuo$kNOr0RgIiVFud>Lvc%mKAFs4`7%yY#Xavptri@jA=b%$_a1 zt@317LWg;)BS0;oSJ73_iO@bfBhj!djiYR95k%e=f+z-C!dbZ-tJRwg^K7}^eHcX> zkDz5*-1($Gp2<;*%V%4TU~F|0qK^EFA60;OBoPtXuJ_9`9%04w9z+Rh)!mAu{_KvO ztfE&V&*t!(MC8`Glmes*uJApd01}Vr?!-)i!Ri7Q8{~HzAKjw=f%mE@? zhIftZg2493zboRS_z?t#Rp}H7{`})E&)mu7SKM1`UVT)sX3?S;C!}Q?>~Gt3O63wq zh5K6eN@5uZ3aWJ5?}=0Q3=%O6Lb0}bV)VT#Raj`1j8qQ4tfKQn8c7|%M#mcLq;iuD zgcHZX>JD2^3#hwK&8T)39YOA%3`Ts|2)?UARilk5&qCPUFzF8m2sPx&BK7_T6J>s5sN2NghA=0K}7vY=le!xP02=mkBt50nCX zP&@Hw5;IE*xRGbe4b$vqWsD|3u=E-iqg^9oD~#j$e#>K z_FfnWtG?M@`O-F?V)eb9u^$e-4O*E!VhLJk5{mUMaU1_0fX$EYBhu)$MlOqGMDy@2 zLX5Xy(tH(JuhaedUx=p4d8egf!;5}T{kWZh4MXz)X`7l`9VF*HaLmm0^FZ=olC;z1 z$ohw0yX(ssRVeC$@nac6$n5y>k|v9dAFt7!3dfJOP2Ko$?d{0WIT?NE40=H5uU{pm zaXsTl&z&gUzrWsilyoOIe(Wv$1>?teiQTWPz}s;Aco91*W)viqKYoPqqYI=@i)%Jf zlYs*gan0V{DN>AzxKPXgt$Ys+d>RxMVm^%JVhCWUQyoq0M};G)*9yrSBfj% z{21hDEdJ`*(~Z$I$Q~e9G}z$=b1nuk>bzM3CnG1BZGn=UJ)j7LvH+FMVW|@*lUCtm z(yCnsls}q^x@dNNw9kEHAE-7V46SC&Txvv773``Kv2=ZiDIg%Xageft5x0_J6C$@ENK_O2^llBs>D?^DcmTkg}*>Ucd>v9`o*dVD-wT?f2IA9YR zD|2Evk|<_xLQBFGK_w?z(Vub`9(}Kj80`!iRsS7!XUsCpR$$xPQMh2eS>vH1pQ!X} zXQ_A2K+k`)lY_o+??oV+PczO-wT8q=Ws!r%F#x&K&!cfvliP$FJ#kTk0-yTPeL5IgNYv^ z%qYqo`bXJfj#8B9fN8U%qHM@Vc`i}DkD-$&I~C<~YTS!)*=*L(+oPugl+WKOT*mTI zZcUV}7UeUFa(e$L8_a!*vVkZsQIwnHqkIbW$i*zmXBFkH{h}2A(HtXKrNK?m)G22U^50DB|z*kC^?_9HxkwCgMs(ykS1#(~0;E#xp?_ zFDl~25A^MyRut@$=KZrU(UUo3^Rc3M+XY~HAJyhkzYX*&JA26nuyTLMLv^HCfy>|ww z=&UGe?1zIFH!?DfIYKpmI0O0#(dH3&cmQT5z)}T}eDs49{Scy~17T;&@{C8|(N8(( zz{~O!;@{sT#lUbv!#eOKa;?tVL2y4Gcm`{N3xBam1&CIlkXa##9UZNt*LDix zZ#Z>&<(-~4Z0k#gGt5C2l1uUoeRexrZq;N8x6_y5x0=BU$f)aif2U*7yD z|Ge{6(g`F!efjUHibdno&)5nIgVn>0biR9k2r2Ve_yaxWp=Dp9mq|zrhD}VYk_W?W zN2D~p%Wro@(KQcJclDB%NjEdi-aiu9jcLaYqWKH?l5^eB_3k>5W1zsP!lukG*Zhuk z>+9y>zSmh>O5JEj#5~*iW!ja{`Q@lDFlWE!I)Gw^ZA2dZ%r9}@U7oW!><>bk&gO*< zCyWruMP|7Jl#8y<#WvN(9i*%%&@smK5xgz?CGn5Vh2s75McN#G6S(rd$GDFZj=C+B z9q4?a#%}d}>OgUDY?8ln_rRKjD7xeBX)w_LM3A@e${gSH_!5F@o>oyl4 zELOF@T>=?Ypi}s&55ILVJO@%xTQhqLBs83B5~mP{1?w|)bgVb7!d5w4igQ@i+JcBX_{Zl$vUaNV^yJsKfph zx&PXl2-V{h1h`kfDvciBV4g1nPM8N-S4vK6kkN~^NZ^80yqCog8(>`i=n)l7sm~Lc zCNm_SkZECJ<}c{z&3aY4-v;#0lX^3;`^38JdjJ!=IJ)p1qEz)=VrQ{7@EpXQLy!Wi z-TAV>c$W%{ER8~(Y}Tn&2DeC;&fk}#Y8Uw(*_Vh^E!Wh@147){lPc+;V^-pv3Xy=ZX;^D+49J37TldBLYCcWA&OQk zg|^w1ExG*!*_P0ZfDkTw$JQ;8{+T?G-%RjvC{AS@hDPPoT zF)wT{8O=~k{D~xom`?aq#5!JUR_a(KTM~1K>%loU&FxG80RB}0-@40*fLcyu)#el| z6Puei144Jj^Vuzrf4Oem3n>3}{|J9N{`M~@x4C_GzYZUt^XyF@{l8o|6_dV~CMmj3 ziYDAfR{h^ZWszbPi|GGiz7O<&Bi{457RQJXLuZ#o{Hf9bFlV5aNUT~x2gqSYDPnwz zxP0$+F=^76?RZ0@VQkx!n(eof25T3auMJjVwt*v@JG&qKd|I&{?y#y_RB1eAEUJ?` z-tx6|Qf6L|m_?pbE2Ww%yGTw0>V~5yVCyr7YT(L-pP^|Ys`Wst)0l{A{f4U5O0GeG zoewf;4hV<=?J>(Q7dcR)JK1i4In%*3&1i9_IW)RX%CwjstJlvc{C*BTuTw}LC^d5t z^@bi5=@@kt)aPq7=5CR>U6*$w@Kj!rE#mt%zia%&}*vQ^`I&xi0W7M_Zt@Z%Jo?db5|?%=sls~>d) z?D&eS>)&m713Ns=nAd3PALdx%nl2M-5Y)iJy>wLKga8XE)j54{AR%jm_rA$hM3yrh z0&9jLLER+}H@q8(IwbMY?Y6w_&kxjfSMcC=t=xoro$>Mr+aK^IoHo2ciV`<`88zD%Qf?VT3^tc^f=BwPsTT6W>Nkt@P#e#%d z_D-dMuybOeMj(^(^hw&LBA%=;Z!{^{VM?~rk!_M)d1q0onG5Em9=^BgR@Yb}eTeo( zN;K5f&#+Jv9tShmcp%~~vc~;r?*VuY%=f{tO$We!$ovEGglOa9_F|b36nk-zCX3sP zsX%5nAEZ^uVnxbEcp#f z8r~exJmK2j*tPD0mr?+t2hoOJdv)wu{?6`=&34%}#Dg~4m%qMuRKNiaV)u>12L2D% z2?@oa?)t74$9{@qqX35*CA06Z(XOK{(EbYarVeLpkOsVgn)2j##=N$Sa*s7Y$y@QR zfs_1?;F9Go+gKSLspao><;8h~SkzNSO-2zwY>K{0h+Dxr9vI|Myb|WY*TNYJ*c-jl zGtY*iL7?K5IGNtam%WnZM2A%XD_MDcwfqnH7P|a%K@s z%66>p{qbhkhcy1ho;_Z6l`5~EaP($csN7L#eO9rK^kM&k($bZqU+&eG0kD`Ro?vr(F$WOmp#+n5ajes-n5`}ASl}Rw&$@v| zrl0$x8;u7P%g0>#@N#@RTnyoGs$Wd*Xb{%u0U$Pu!!k-i^a}(_avn3xK+f}ZYlMj9 z7_0A%ca)=d_^X^k{1X-bNX1_r;-Ahp$$8As`Mhpq5Wk#k^SvH7Rz<%pY-Kt!tVy-G z7r4OQaG_!Ajja|}JgNIQN%eMa3ylU`;m%jKZh!4l_A2NY;1^xGc!x^Mw7AjqgYJZ+Ex(ViI+bJ5b;{KqT9FX zoRQ58S3KfYl#tG7DQD++?^qob8oqbS4X#J{0-NwFgtb_^oDd-sj-I6DRJssSUn8PC zm#H}9*m`CrH$fCmgW!_$m|@bJi_Dk{4dbSU1ro9W&T8|wUkV^00Lati7Ep>N=P|=f zS8Q_D9BfL(eedb(1F>`mj~ZV3Uv zR0t?Vlk=Eip5+QhLUJio5wP!V>8pE+_%@0uI;4xb;hjQ zS_6PWHurK@(#1xZV25n|#|aX$w@Co$u(REws4Fe%leEC= zSclQBG693qjqSEBlb9<#h_fu%2e_f1+5Y`wEqP~9k|eZbVuRcdEz}tbbx8o#A46At z2vKh@rDo2d+*mL(vn@!*+Rsv4dj_~j5oXmk!7cICqihFfDGJ+m@YRVxlUpPBA|0Hs z(ZN~HcJKpj2e(8!TAYA$&K{G2^Rr6F_RFeRdWEynb3?@tv=C`cFuEevnx4M-k+O=4fZ(K^3`_!kF!4FTv)_&bT!cT$!ep^Ag+boU? zd-HJ}fqM5@A8_C2=F$KMBgRRp@3NUxqV_awA(}UKf@T!`{*U|qlU-WCQo@thQl1l1 zNY-nz$O4yHwff6-Bc4G6cAhVEDtB_QZubWlbD49|x6Sf35K{m5KTHaiHgI!+jDNDY z_Rp)yM$!F}i$I%{?SALuA*5lez*WZg3zq)J_e*Za>Jo5cJ1cFbUdnX1-Cm=C%Fz656$(xdG-6V*bI?GSig18{m1L~WJ_4T7S8Y^^~<8} zX44||^J_oB9*n8V*!d^ohp`{WSrvEWekJvl9l3j?7DadD?)gOO+aryKP0=bEJiqJ$ zTcS4>c>l6K;(PbYwok@9z7$+y$0#S^8sYo9-Fsp*$5WhKx-2+>TV%g(D;a=A|IQS% zQdIvw`Z%wB4h$i~_L=?if4qIR=WdkMzaE&NX#3Qm?aUO)u|WSK>(_qmlq;!zvSqiG zFkN)ZeJibA&>Y{F=BRyhmK0`aF>ce=SnS;)Ukvg`aw7;0x0^Oxhd}Z}#Tl~=VyvZ! zaOzrM_7E8F27!rnFFJ@#G=h^JyWP5{0$gMPfVYFqNc?*-%WjjS9_@U$w|mz#quqHp z*IW2%MK#=^lK4hF9^-gxq@URAlpU0 zcR>Kd>&bQEkm!luqH$=ezXUjUa9XW&TI_GvNUg?HQWO%{N^e?;*~T=klys>lQuDJ$ zav;I$&90=nA$Z4+_lDmaPEbrJDTsaV^_h-$Kw-Vseq$K*h<;p{j~xYH6&4Vl9?{PU z=YiNmCHm0_eCDVjLPU3tnsaBON;>d1d}#Z$+Zu{|FW_tl39IF2Ct|&b>KG%9FUS6V za}{wGz4oB$gJ_qoJtu^eE?xfEv|ij+!TTLhWB7Ws{B#Nq`FDe8jz|Kf?bO?0!!z2c zr(ANUUwRf8k(@5cw7cXe2` zIy#+^@uUUSHcybR0(%vnKdBWq#aMN#-Rh%d5P5_HLf(EK&i{ab>3R(OaUsl{Fb}C^Ppn%PJscA3kL$_1vQdAb@Lw{Q zOeS1@d=2fy8gd=?p*3;|67D^a_)+!9qV&g{IOc>g6UH2W+<2JPi{8f>A;0Xf`9%I~ zym85R1{UM1Pw(-4?N-Pho9Gvyw(+SJq~eL^ z;*C#Dl6NnTZA@27>ZP%bnG#7oKNbtiu+U=@FN|$`x{bD)d&2m{yf;-JumgpMI(jMl5z}T9|X^@AM zJUFY3`>XU>%^L|%!mVGwczr-gDKj$O1vZ)XE<|cD-uxWD{FnBAj1<0F;gxl`H}5<) zpaj<&mz{_lWSqBrKuNXYITuNyOnW~?YA_mNOTr||&ctIp;hl<-DDmlQ0p-;;nfBHo zwKZCBCk6cwk0^gK7rhf@yo);Rz3`Z_@+^LZbHD5nf+fn9;tlLQREdFOap?x$V|?jO zM|!zO@s#m?^-4hdGMh|$mm@V4nU~;~|I*$Rqz0zFBv7#O&G@ZA29S?I4ytmcQkmCj(Ka1S-dA@7TM6zkcRJ0f!r{PJJg+W{#Eb1zG0cl>Je zc^`urpxc$0?P{>^-7UkcH$=%n@x8O=kp@H18hI1yppjtB)4K?X1pBO5RNk5J2sj2-bHE%N_D{y0`v_$roC72KT#bA zaJ>AdynGsXsU=JBTLp^9zYQ74f07h^@9#1)dyn!-KJnvSG?&=OA`4!E-{CBnD7%!* z`DOntCCYxmr;N84(4JJ~R-{0`Y)kwCdM0>7>2oNTFAI3sfUt#3S(R8{pYY@zkfl z+I-F2{DlC|rbsHD&5)vXm`0dH*@k!op6voWA45>EFnV_`PmCwL_nsG+L(mw+0q}!t zGVRqOMbq&+!X&%{*kEWk9xF)k^gmTLLhNpzzg5f$FZ00A^fb*Q@Y|r!R!+uGiuT&|8AIrCMP*PkV!r zBGoOFvjYOE6-u>sfM(qEY*5$hZ8GiMfE1|KE?^}Swb$YiPupz7y4JSh2~>xoO)b^$ zAgOiT4ynQ8^l%?QE7|TD?>%U*3i>Ik^|(aMAkEnJxdA03kpq~mkyISpAT@ZLUz37@ z0(3AQk-ripFqAX-zD=gR6-W)kn;d?Xz+aG}JqI1J=lCU)klDk?fdsF_8$8v{kf+P> z6i*DDr&ZbnKepXBvdOepiWHP?=mmsH4Bdb~{?OY*>4t8`r;K+j8p6urXe6~B#~{TP z7_Y4q11aTk2c#f`p@(S3R!}HQb+ApQy)BSJ3k>~C+I{F|R62j?JZbl#TjL2-Syx-I z+a}ZA>qzZ_O!jLf*NN0XyjcN3S|)RWu-~Jw!Q}fY<*r9usXrhECM*A}8LKR3#AB0b z?_WrP$;z7m1JHNzh^IDTvQn;2&3KQ3x~2LEk}8_HNDW5Y&ciP-UL8<9L#dYCs~Kyb z32NADlWA`?QlMHk2{7XlWgp-XPmc@Lvd{1Yj16GLQk@a7`zxeS*Rm_{3z)+Ksza5k zcfMu}gv_m6OKdXj4L}NNP_`Rk5@nz9$1hthYEb4O6Bv&S3my>^j3YG!aX%BqSt$Df z9@E}__2k; z*qe}|#vW)nL-GKdOnW1df;=a5fk+Mc@oVnTsvW|orlqAPk2z(`sbfwXb9%vfS~q`k z>%j@!=!U%#L@t+Nn%RTtZ&p9|mNn0x%sH9lftKWTYhJf$5A&*Q9(Y*|@Gf&hm^a+! zVNhdUr%-3)1lN6Aex796e(XV8nAeA&tHQiK{7n8g_}L@G+ebbXVO}48K0YC+M<0H=nfEQ* z>-G?DAATCbygvM#8RqrjCtk?USKG^KE^fk>V)ZoNraIdi=Uv!MdbY1SICo|A+*Mcf zN{%jBOa**bJc;Fc92E91;mE~Z*QQhjUS{Kq-|*rCI%Rj8(Z?Bc;{=Mg2t-{eI1-Qx z`vn0`1vy4Rz-S69)3^@*aJmkCzt_`GUBAuv@z>)6z39_^sW7ik``sJn^=ZFm=H=_t z|7`nQ5N)3+_1W>#ICWrJ<+}Q~Nb7|8)h_?F;`wzh|1r%E+vVt>UF`aEo#>xm`{`78 zBD$G$$4@0$Y<)KKdj9$>;?&{I)Sl-`a20*=I(#G*d$xc4Ghl;tS?3>&$Nl7(0Uvz< zY2a#I-`iUX%PEIWI#ZFY(~0@yI+eN2T-nmD2kJLz@sn)vWc}yt zU5O=$`nic^$q92`c@Ou-Ctgl;!3o@!i&y0f2W^NmW(LyeF&DGKDzowVE7T>fy;OdO zNpoTO0fEPpMH?b7Ix!Oqsm+BT`S z4p%mpn059BD0>hl_cK9&&Gg!>z#aC}sU79ef%7!lI$C`f5J+zUj2L# zo5ru1`)i7+_6x8aPk1i^GM@A@{7H;NY5`Mz?dd{kI(MPExE#$XQ23qzKWoJJ^?eQ_Qc ztnbdmK4w)i-Zm&MDSbiE~p}eW*aA-6b-EEs&2$$zUM&VPS{z>`dJ-Sm*6Y$oHlbFj-Q* zC_W6k`)6Ypjv$Hg!;p81$`tgXZ!OY5u@yfK5{xGS~PfL8(KaHh{Fq7KM_KP_T(w%K|*3r z4u_P?Z}_Gkd*bNtp{Quj_6@Oip=5MF_Gazb&Yo=?LWcAYjnYr!!3^e`qV#?5lLc%7 z2o{GLN~1%Z?f=f+{f&KA@Ati4lf~@aY6ROsKFSP6-z!Pkul;dYLPmPp-Gvoot(O40 zF|H%-S(I>*5!cyYC$GC5O4xr*W3&A}cpbWnN@PhN(FO8pS#uHd#M$4F z7@ieS??C~LW#wCuy0xz094{Gw75yxvs58nwr)4j+Wl09d2~o}2Y&X|gt^!nWzkl5!GnaG55H$@qGPNw~`kAY(4eqwv^BiTQjbXJ0Xg*`4DA;(0eE4>Ge@3SY*_ zGfIC#NWVUUjoe0@z%4;vE|3K6Cy@o(J4T=v@|B~_c**PJE1IiJ5^dqGf`lyk^QUZo z+)7Z2KeO{Gw$=K!@2t;IC%-oS1R(PLnUyEAPz+5Ce9=3(^KMz=?i0u1E>H z)|c^XHWgP)KCy>-mCDn!W{A51aFjv|D=cT}%>CF*h%`ilIvF*uoI}beC7qTUXwaj_VF@U2oc* zOcEnM9n&T3O=5+HZgB^ZtWj1@vq;YMiT&6;?|2?(;VhlCw*JWle50TI`4Zc`38@p2 zd@4w4wiP7Pn$MMt>uY9h7lM2)NTxL>V@vmy>_luSi+BtJigw9a zst{9ROFi$*DaXHq?A*`M8#A%FfRN_fKsvE^vw%XP5uJEy4!(n#YQ{$~q0NYW$H0`B zPA>hX|O!R^Xx zF@8e)%yD!)#qbZEJ*XxO#4VV-)q7^VFN#MM1#?tm>hUZ}7%FiP+rS_lN|w*id;m+4691{ak7P`nk;9h?&sQHaHm37Tqj-3CARxST>^5=9Gmw$@-;>a}`0(<~HZt z*wQJ_zCY8#mlwd71@ILie9eRZy~M%~E`Sg5ZxQCeF~oezyumlL^o>hXXld?Y)VcX8 z{j&ksJr^_kRsLBw#+Ls4Gl^HAWZWAEZ<={qIy$H6lHHN;0v zSc5M#bFh7u6~KZjOhCIyFlP8=5%CUIo=l{XVz$!S=cfKI)ZSo_LKYWNDnm5gL;1>}ZXnZm;f zp}*~WHQavg*MDnV(LjDUSNCf#6CTCI-CL8zrd7+;WpXZ@MgU_TBolJj9-WlXd4r0< zsIzzV_YokT!sGX%o7UjI^gpslvC{o~31h@Fm=BCvQr`5l{tC{CuC~t6B_EnFAuG3I z#oB@uTFYu{v`nij(+Uk~ldBwMoN4HSva)turX|a$V@n~X<|w9ShY6uB2=4UOMZYlO*`Hx~*v%u!bJN$QAEGwu80&+{M z$(QA)&MME5;r!&#aMpoNkvBg%0FUSuf%3eB!4R4^*p(2!`-)Ol&)h~>_4MmPf0Xt~ zZ$|za^T&}7_ivxJm%OiSpZ?Wc%s%7OWi}BI%%Q;Fy%Lzt3 zC$I_!XsCd>`=LevJ-~wAuAmDepi3<%FtsBW&^8tPeMn+C3NADjU z4urPX>FH%X^DC}JQhW~-5?=)}sh65~uO7=L;v!6VS{u3cfFP*rcS%M|IeS3x2jmby zmeW|ksoukq(69^u98N$v5}+O`eU_$CWW5Tk7OBw?)}R8MiF=mt15X-Yg%(U33WNSlr4~v=1FvA zUN=CnUise*$jjkTQ9!>Xi#S-JGcO8L9Q9BPB`8{i+ci+>s2Jqga?3O#Us!TIVnC#O zF~p_-u{>MEOj|LqG_CZdEu^JmT4DXM`(`hSKSCAu;FGK-^{HjHI5SvH&#R?8TV|L> zEm?9swd^X6xU&GUJX^#}+gh?TYk9+L{MtS(UiHQ}S%b#Dk&T7MUM7#cF6+g|rNbX; zoA(ajMDt$vBU|xeH{_=Zc#&tz3)5VfC}9-ss}w+Xw;~(w=&|M$h-riDQS+Q` zB5BPz)i4*YB{HlfHZJ8r6LkXZ_*^j}B_p)#SYsH1V~Iw-b1Z7u_xwX-zvygXLI$fd zHCb%1I%f^ndRB|HwiE7a_jl0Z%H5FKZyg=<)#iDCUL9L44mL<*NRK+K!Th7@>+T;- zJX}Pc1+FUKa{fp~P+QSISvJWXOxDCI%C`EN_&~T`I7>#wrl+0UB91LJZc-#(G*3aR zMWz^4*Z}~WfSW2`t_`*$0(#N)v3E}(OY(i3Lo``TX8Y3Fll|h=Xw#u{v1VTJpejIv zh_L1uSC}hAnIlT^RwUfWUmhA0(f0iw)tbETQLTx5kE&b_&vMNf3x0m>a1e#P>M*Yz zNM7`+-0h&4=DTE07T*f|yGr3n^x+IF_(00V>ULtUR3va-c2NIrge&3K?g`SmwENk9 zfaN+kG=E2d^EMVZbq^>a!}V-)9gzl(VD!9Bym3XB$OMY*_Mj5=*>M zV1)1Pm#saXY}dDg-W*C4b2hk5uoA7N?GsW!0V)H&ZwWBC^IH-%=~59Wul_vxBrZXM z&2k^Q0vZ&8lL8?%1mjtNMlS@54C~WjP@JQ}v>N0Y4YbA^@)Q>s7H*KaKPV7Q^G0{*=jH=O&erbxr$*V5i!6J;s3mB7U%NWxbo5hjrr@D2; zv5qXjD$f=x)3&-S&FX$O3%{r*C;b>_cazx!RDpNi+H0qzi6^j$m%(P4AAN)p?#i-) z{`}X&q!V*L=`Bqb>(8@36q;^7X?_T)U7RzHrw#=_!G6|Z7?s{&sR9$P_F3;o6BCUs zRdKd)j@YlQ&}0hrlc@~)CiEM9bB-CLEI5|0zy-;!TGXn-I`9j4G)- zTlq2#rcDR@2gGzd6f^oA!EC{3{arK!dP=s~=l`;K<~AEKw{3E)6yMFl`GyB!->23H zHJZ8(SqSvK9fW@b)Ywf6G$RIQ3KFf!BzI*p=GUW8k}a%;vQ5|zPaSv2;vo*GV8#xR z6j<$nD591tAy)@Q#kO8(519*24ErJz7Pco_R4k zDD38p2GfC&igO^o>6QQ89B3DvBz6qe!d14gGp{3{N63)+h#o*3W&?I zCC)UY-pZe1I^T?pLVOJc_~hB*W7-OvMJen%8o7y-NJkf9oQFJR0=obfqQ_#AtE(A> zSxt+P^^zIM*%((!X@&qhy$EAd3mB7U%NWzBD2o-X=;R{!CKce5XN!+%TTvEeMdvl( z7yF?9CCgJ4XuY^E_r|Hy!KibRMQADW>09t zM?LdXXyj?{<7MO0HYj2K_Zp(}mCueK1=-MOI8u_uHZ+>v6Sj=V6gwI_Ac2X?(XIsR zv@TtAKf_d$wOBU3Gh9E6wkAVdL5x9k0_gUiqWoQ^{J}@5IpiSWub7YW7C%yfIm9aE ztI|P6=6}L6B&%wHWr1?Y7z}lwQ98_T3E=v`V*b!{=vvhN$}>tsU7hx@=eD7&Y$lw*ED&zs zukXzlUO4WfGMO=@cq`eB{MAvNbIa%N!vwER-pQpY=Au2=<`NRY4mg)O5q{^o10p2$ zlLPED^_-KBo`=6>+8A(AmXvTW=n@>G`>W5t<>WU zQcy1$qLFD0yIqkHU{ZmEaAs<8N;P!;Nc)lA+EsO^oRsOcZ}!Xx;uri6WOqQz=&w1FCk3YZHw z)QGBCy|GztbU%tkP;`VA9U3r%3CVS|)X0-diLsj<UUITnzMfGyv z@}|J@y7=zy8|1A8c6U?JYu=`z<@eL_*SYe6y{9tQ8yNiTIGpn^hptlg4pR7^1n^`J zbN6+rG4ciHSj(7#?>FDFJ4(_?7juH|hD?7OFWe@6)S6-zCiA`Ed-O2BFw+dC#`*{r zL*5Xo_zs0%HdB)f3uyyOTo-9)d(3Dt&HofuyZM^ghw#@gJIEn`w0# z5v$B$5dQVfyn;XuPqbOx^&EOGMX2K>8zY4t-B+3sdjL4%Av$~#K2wOVj#Z6tF3*;8 zrmb00bC5QdV^R~`HAN#d#jQ7uG%1X0T;+}S(35p#zHNWX0)g5;(B=)MOJQY4f>PEk34gWm%Lqc=j(zg6mb$ilR-S=c5PMi_LHB zJI%wQ1%Se;4JpD(MFA`FY*}F%Rb#QDRVyumucQEEk*Av^fEo*LT?wzqcSw>$S=Hh(04(f?h3u|Bh=z-5?ddR`P&hp{cIpx2uBe6>DN3iwD8$*zouT3#q8$zf3UBt5`hgP0))U?=yYsliS+Uy zTm+*7McLotGGbJNMXIdUtGl3Hjk~T}*8!U)3t4LvrmFzvRKTFwyAf5_Ret+oe2=5K zer0cLr8}%~I*V&#(I$w72w(kuMV#j^7-qUVBJLT@7b}$Z`@4W*(~Q)h^4ldwYvt9k zl{6Bo%;LXCB7I$?%lgNw`h%%&GG6_uR+7c!-u*X_bPH<1;8AvuD^W}tCqreTW>B6X z0V*TYY#LM}aD}Rv6%HOp2yO%wxxwSl`Gd#zTz)aylL~0dv!%_nb_6?k^c^{#lc^49 zM=Z`n6e~2Q;|s{hvn9hcEDnnmwK(x2`05Jq$+N}Bw6!=aN{jP@3;G{9e*IS8kz->1 z$nmyLq~`qJ7&#_Pr92DGYYDnt_W$&-G2`dO>Sc$G7I;#{*FCGC7Lj3NTim9N4y77f zWY}0c%H|jAE#Gq37)XDc!^WTThYjD+`l?}LSd~;g1ti_Z`?EZR!$#hIWZ(Oo*NkM1 zFoX9ich_VW;24&LJ>DAZqtH)WiImfW`J_pFMzd zWPkQ4O%_`#d8}LL^pHI0b=mm4-?$P&&&J-c8HX)@oW>rR~^D2xG|MtM2g0#>f}I6B1&Ap=zYaNuy7|pN(hR zP@0JIQ~8j&@{KtBhwZg@WQ^QC5! zZ9LnGzv|8c!FmPQtvxK)@yW%r-L;<+kOmcoV(5WF6cK~L>!`;e&sGdfLkujr9x-H# zBknFhEYB7(({@~DX^P?gb4jas{jm;_AJ2CFzWvp*t2i^A1=J%cYa?Yx^{t#zjKNVG%TTG@ea5{6&930jT#Kz=@8(WFK4cVnb4U z0Wb1wd0~1!tYyFPY|rjP&T8J0g>-lfi1so2TjDmJE#`>3c(!*qF$HsN%G|C&zKds@ zrbvGmMfwKEEEKv+3-ye!HPU#tiBNEJzC9p4UO`^`ZqV9dAY44#aCU~pt|NE=HiNbW z@}x%C>Q{zx1@UYRj$RPY*2OIg+@}y_@*ps2e*ZF&K^BcmInYEWWj1~xx<7ESAeMNm zm#WFI+^1bQ06n#gIJuq9c&mTS#(sQTGhRU;4N}{hf4IW`v3RRHIjFE68gDiIS`HqF zw>k&I8TTBhn16)e%%fzk*m!=Q@Fe5;M|-nwMdPjB?UIW0pdK<5+IXwQu7qDZ1Ee+H zDp?NL{CKNd1Wt!9ib&(FhKa!F!gAox^KZT~-fFdAlz6LzCX2;eRg>-imGM?L;Rql! z!^K-Yy_fWZ{^G54tPop?$uJf}GlQjKX!juA3NZb}Tb+v`23pbuQ9#)L>*K91Jp=6e zmA9b>QA9T0>h3+Qh(z7(NLt?|qT#3-##?Q2Tc7HVhdl{KNJtIiF;rc~(dYbDSDdy#5>VRrg_OI?} z@rIwL{hIMkM>~$bBHoF9SmF8%{h%nr@@yGq8tTqsqVC6$(Ih@BOm_qxFL1EXslC?$b$v_Ffjd+tjLYz-pjqDyYHuTI2UsG{G_q;+;A%QWT%}7sNYN z+rl8z-*iXZxC(G-H&W!;GR?HMn%#y4XZ^)HJw4nuVV`&>I%I)a5U*d1%^bXrN=u$C zVWuH{mW(>8lWBZxRnP`)#Sym_AeLu~m}%P#EX`)v?ljIy*5RpORzhmpCL_%W7&$3% zg7wP(&Ka8y%xo?j@3ioHP7M7@yahO-6_;nrAJbOiJxm7iPJA-$TxZq8U4`*Zhlg~X zj>@OZ3U#!hfVezc;!H#8&HRb%W;uKdrX!;e-_!zp@@(-jZH3LE6!wFstT*0CEPC;H zC&{w$PI1a167Mv*2xF597?Wqq7}KaIixsWt#3J~{7vPg;i;rnrQ5I!IpFSDCzW2^7 zS-#->IqvJ{4I?p1woVl`-f1Gxne$!*XrWc0g>VZaw{f8Iy=#cM5Z715JCP4_KlgK> zu{Lt!r0)b8yWV)G>o+4~E@H*TJDrcuzG3L)Xd8`pD!9Lc``>=$S-X;u#MiX$BFSRo z@HI~>cN$bt`GkY~AB(T~kx=-`_?kVg41+4BQjA+}OnC(HHOH3;-&s)!NY}>Ke718S zU6{VF8DDdWD-^cUBktAz+4!1AFyVz3EXTKM#D-%K(1EX8jI8>sF23f37TCyw_?q@% z5m6RjyAy{sGMLG;?W9a&Y|YzLDhRbYI-r0Bi~d8cc4`P!fj+M(-AGh{Y4-iGo8lKu zR}ISOscUvpzQ09$%>rAL-lrL6`>lQ~e9cEyY$)9Rz$xYN3n_-e_!@qt4@x9R>)5ft7NGV1ABe9x z{)fe?W;aUD+2U(%l=f_I`!|<|ifoj2x%^^%W=(;MD9^SrnASeiC%)#-T=y#yUvs9T z6E&uq`H7hm)4w!uKx4dbycR}f#5arwn)bAX5rT=Hyb zGo3eh^c^{-INblc<7?im?|itb($CytRWNe=UyrXDTC`qv z*r>)S?c(cfRqRMGkTxuH{?_XsHg0kG#d^!P95(KG4lPn7zGhEH>#K&1C7g^5BTQN^k4GZpo{TEP=2u!AFMj@ z)B$+$6g~&4U+sJfp99STc5EVz&w(~bDud5~!V|{3rDJiS8@~MZ@H8&kzya`j*vuMn ziKmo4r64pswdhlaJT;}Nac}j~3pOaB$whK8l02%D_Ld;U?>8>OFaO08p5dXPj8};_ zT=PM4ivWB}3tr*C^_zY?oRs$N7^@#YyA8jJtMYavA*RhlwBAj8Vg!M-t9P@MYPF?q z#4mZm2fYN&_x^@eOYqa8rRb_7O5QtHN?m75&BiY)g>T^z4)S>rrSNn$OJ%&(fMyVE z+Ur7!Usl`}zd-XIe(+hgnntCVc9mXpF5aTJ$S|2Ep$G6 zn{V(289(4*oMH)r>J;B0M5iDQ|8Qg45Qs!f6g1C)tfuJrnsGs6VuJD2$!g0v}2 z9J_J}A5P`H&>wHh@P>QCU<#&c4xW-Kr}AONzLQ3>t-It=-i=R;I>cRxeJW&&G`sjT z1d+=a$5D0!*qY0mGX$TxS-wrODuhkJd9W(bIv~Pm`+^B}Sc?$i#gsb{$F}BE4bY3W zRwv#vt|asJuj9Nx*{mn0|L_B#=`O0l9!ZP$>POH1@maz7x>cf& zQ#nRh%6aY+R*)l#z8PtT@^|@Mq{*qAf$mh+dG4DF5efjNgx%iPSFCi8fqcz_;5^*G zpVnN%I5p0{k+PFh-qn-`HQJa+r}AkJGwe^g`GA${YVOy>mweA<@AFruOv&$Og%fhD z|6cI*RHmQb4{CnfA&P&8^LvQN?=wl)FTbaS^82SXMLs?(FTY`kQ3cBbCcitGL>#zt z!-IZ)x0Oh`%TMvJa~;py96sl^*=*B^G)rv+?i&dUYb#-aPQH#jq$9#&&n5WCst(=d z<`A&hSXq2Jm^yQT4B0#ipXKUj>Qe~?)+UPew1*|TSQKRqfG}S)C_UQXZmPJBhbwFO zXu`a8Oq{c9KCs>fn4Eh3A#EWfsdERxLLtwd#v0T+zo68&Hx?UtX0_kU%5nt~jG;y; zSfR2O4R6$MvA&*F{WU(yDtvN*R^guiWbjKxz5pe9RUuwWmXp^PiO3g*(3}`-+Se-d z5;hlKN0%C%R1MOsU1Wu_)g$?ybU!3#r*g?*u(G*>MlZZM>}xblxP77&0H<=?QIZQ- zOTl`IT_F#ra$Vso_uOb>Kxm?>1o?&9Xu13EZ`cuFA(0!2cu0{sc?{r`%d;Eg_z~GW zt%r#mLnnutaa;_9J^N?pQ!e)G3m0zXypu6baTOk;+lb}PSeNUe=wfLZ49_@v`BMZV zY$-|LJ}Mq0EBRW;#6#!I`)B$lLBcBTpZQ2&=;=&EqW=8;nTIi}4y}slE42{j=~HFu zzj41p0sVesf(CQt(Vpx+!6si)U8i#U0Ml3<4bTnP`!8nae&P*qbghe~yq`rp{|dJU zYYnA|r}Mmx*ZasM=YHD9IfD!xm}kJe*Ta;8t!HIyPLQct*pYKrjw8EB8(!Mn!wwOs zcizUy!hoAl;WEsTRiC%P+oHgx6>M7FQA{WFFz0P-7O+7f;{x6wxhM`sAMc+J=~&ww z$t*>-t>QkLs;c_F`Uw2J;K0>r4IB#S6#QsOum|G0ku;VXRL|1mxc3j%mMf@9_Zwo7 zf)@;S;gb_r#(o=JIJ*Gxg-=FS#`=yn-&jl|CMez%3hO$dz!zdqR@({dPiC;f)>h7pX>&J$PY}{ifA} zV^T6istrWsHSm!7$bClSeJmdL!~5^szB4+dOU|j_kknKKqBiFFP>I1^d~J*YCNaT9 zP~B`Cly~tsbM!K&hV>+va6OX#z7u|8QraZ7cU84=Mjwmr-l0?Xe}FL zTqm2KHql_N0{nU(Sb9Adl=Oh|S4~mZLG|o1U zsRY&)!oX?~2GWJ&m*}p4BM?Y=wSe9TG^|{tH)+z@*I`GIP5&O9?#WCockRY%n!MIq z@Nc=zB_Zm~BxszPW_QwZ5!{*( z!3CEDm{N6;Vm3jxPCz1Uai~Sor7Oj7C(76{1`SH3`oii z2CwlmDC0J!*4;YP8r-!ka+g;@Uq~y`a^@qaNJG{aPFsB;zR@6MJ8H)}bEuchQcvEE zdJH4EBn!0>VHKW3`%F7ut9HIphI;HRg|w>A(rWhSq7}E1aU*!VEr(XESz5`v(TZVc zMY3=vc>LO1a`0=;;wSHhAHyaSNGki!P>@U})JrDV@5VYlwtHjWPqG_t7o>Ot9`?N1 z_$|D8W(myTSl`nc35SsAl=bVQgBGq_OzT{y);amV083wzl_F{kuDEME!-m2gqQ^hA zUa#oo0eTlud;BV=3#ust_{*JTqAIEyej+$hDzd~xYez1=Ip-PUh^<>+X-%nrXj5 z6EpR9Kke)#n98g+%QenJhYnn7S(%aeMkO8*5O;abE?tT&^4)~o+hE(3-Uwg%kj+iX z=8NBa9XxZ*-x>*pnWiG0?hTyD#C~z683|pq7_XqdS*h;}s7(rRCzW(mviiCY^^lEr zVOS~OfFrQAF$A+)l-W@pvy}8x#M*$~N~n5>U#g|kl9kZ0DnfPw7*pM*jPpFkp&E5E z5|mw|PC{Hb)8*Y{I>T^dl7$PHU(1cp!7rM{Pu>kbhD`w@DQ)ZSL=oCJnp$qBpq86= zg0^F=w`-zC$Y?Rrwk%G7SN-k6tP52%(j&<-ROzRZ7worqK6Quke6LSU-4Qj=UQ=3_}jda^_2E4t^zB z{N&y6W7y;iNtrL>cl560H07+F<#XGc~2JR;1B z^Op<${Zrqlvm&i`s{N0|>q`8s1%Ip@~KVMY0-Iz z3%j(uo1`)f(~&Hv>H5$e&F0sOxG+C?H~bhjrXwj$S3H6u%&7+a%5Ea8cj2%i`$v42 zkEhx7_6kBX;R*)04;*?0v_r3{p0%?6<$0Z!hm&gQD$kqhOgP*cAt9@4=&R zrc5wNJEF7&noexkA4m3N0*BKgXhOVbL^Q$5iTw_}PW zU5H^OO*%&t_`y$J0$HR?Yb+<2WjS5X`;w=!_tG374KDX8mm57UDLJWKlm+xYLZuPY z&vi_Z?UMBCnuD1>k9TGzTHZ~f8Ag#MnG{+1(!d;rp)A{zIas!3v6Oeil3`P7NlH7O zupOmPAGwMtM_crR&KkDfuZg~EsitmOoB*#RmqP-INFJTTJ93~4@GNs)*DdBG1b!~q zFj$Lnju_53@&wI0=fWh*9x&$Yh+}Pt4ONC!TXUG8CCdczZcM;1(n_*WTSd;xguj;{ zbR)7wHRll3lqE{ujVOj8ie#(Gz=j+w>$6zOyJ5+&$v~1a1Mk%1;j%I?uj)z6oz1&i z_?t49g;FE^4aJ!iC#GEZBUZ??#kZW7M?O8M`E*AwUitP{RB zo)l}B5^t7t)`G^S5|G(6@n2B=Td6klsI;Dd#=`Rvg|7TA(>uM|DA`}PA*vf8rZ!67 z%sDEEYE@>BdCXKn@5n{hc*moPHQQi$Rboc3L6YqC8k+hmars+fNJ5}QGalhy1F6-| z8v2v&r=)}!QmX!#DzzNFZMtkn{93^CqA~f{+3z(la+!dfhIQKBJ6Fea7%Xk889) z*X@)mA#kAae1OTb%H%_=foR>Z9RSQpLGZ?wV&u$*JTJ?#@@_24FxskoJ}@b4oQ9ln z`Wk*cCwrN-W~QhX$xS;l zOglLTZQXCRh%KDGZB7{LoG^z_FENyAU5Txq$JEV=^Ov(5{WI5$ktHWQw=AIxWY!1` zuZXh~V%#!)5$7b}o6o6l?(>!UCX5(3ctw9s`zt3E*r{z~S%0)Gh?a^E2L$Ow)<_*o zeyC%K@BXo+=t2xM4f-&3?D;rF-_)^H1VhVq)$*1vRm+a}h5)dRB|@lR7?|ESgWQnHJsqWw9tB8Fj2ggzDIT%4u)eb*x~SI<`yPzrB-w93H1D zC$El80vs+&@~)Tua$#AzOQy%$m3N0bO>!+<$0~Q!vBg6|b?kgK^KM_LnO#>8 z!fSnA<2N?(UUkBHb4MtVh;wmbr&QDo63o#H0ZxK zq=;}nqSJt>w)vQ9Ly>9%n){LrK-w85$?q?*3`ANNX+l3_q>zW?pPVg|0gjdD)?S`ua zI}TcZQwKcOqmZ2}Z+I7$Z*^O1*m9;{( zW(WK_R@0U1Zpf~TyCJ(mcSFvU8nmX%{g53+9>Hmro_^P4#XnU;%tvQ2&plOARny~E z^I$dy%L&|2$xkGlnr?3U&U0g*qBw2-KEQ125(N{u;EC;R+?Y5L=h8)L3*!Z9oLZE) zS_F@K!5#4`+Vr)89g^ODz})vmuN)4ZIqr+b`F3DeRS&glux)O+?A*~E50#P*n9nJA z>=PzQ?tp9pI`g&#F-}drd+NIxdD~Ra3wfM^T8|>MiFaR6!rc8g0L{SAJ=~VaJLRBW zXIQE}exOK;!bm-^2{&FhT_eJ*^+Z^t8K5p)XJBpu&A!fH(?zVsunWYrqF6`EY(js3 zVFjHtgqITZ8o5B>1tEb^+*Mt8J3U@*+Aa#x7s{fe>{fTl?QOJ3Pyy zUbJenrjIPhu&x`ctKzegO>CGzrtW4?6Ii**t^b^C< zvG8QXH)V^Ts^YOv&f72C)K7eqivJE<=R=8a$|?R}6~7q6Q^_B-{179)AzOTUzNEe( z5Z};Ge1nQVCsTYwPVtAR_$isHfs^U+{6u+8^mxeA|gVRNWcD8{~ zLMoLyc~d=#Q4aK@3yD-!zAOs+K_h8%YIB%s^WM7|##r5G!!{^en-8C(J>;CaKpP_V z(}t0%&5@bf2-{qxa)N3zHdC8?qYWFzY;CHkjeo;WPr8AloRsVmf>}_{$Sn{Wj3g&2 z|MWY4YTc+eB|9G6vnrk5XN5T-XtUYIvg$a4d>!lj7Y&n?Y_;)3oJpvB;&1i@>m_ir zrRrs_L?Cv_cr;2({?V_#(knC4oh&fSYB}JD(AY5`tY2)Jf-RD*B^d zps0kH;>`JQA$jsLY{SW@&d;XR9qW^nr-m9-&WKAQ@5;a>dpx_Y3Lpp=Q9RNIU@+(2 z`YIyo7O{o(+WWdCrQ!D0+`l-EJ$|QP6G=Nh9B>L6-lBYb+mMPh&~|8ho2eMi*d6mS zxJpxu2!JPx;R=rTC}K6;-Zp5{L+;-ui;nCxm|mW|GhDiB}*XeM9rli z-=uo7=Ng;xy$wS;)RL=1!al`3^17swU#6h+>oC96#yrI~SANq6VN+Dt%s^NY-X{KE zN?n0+s-m3ep_tBmx>CCa4QD8Pv=8UGdDX2XJ&PcwK`$+9RsWd*WwTsucU3EiTTuu# zosT5umB{97mGJ2s9=Gab)Yd*XpyvcaTBAd>2QQnkCiR!|@>Al{gqZRryPkaW!fTijXN-GiY!T4WUsXFG&?al)`n6g zVXnpxin6%MyWz?(h9)En*Dcfdt}NU05%v`|Eb|Z-R#e^%ONNc2B&DM755-ew+-U-t zao0YLWDr)Q^NU6y#BCo+tI8Lh`L?vb`5^ zVQb2}u_nV@65)emN8?E$mhEm1mOWW4<=wDk*klk%nL!mpD23neNjD36&7*|EP`x~4 z=o@A#aWWv;RqxGDz-TcUj-n4CtHNzSYbYbH|ab|b#IsH5HEjdm>_@n zrnP$>LSfzI-NW$Gdy5KXbN+I)U%S=v*MESM5CbK%yyE_?{z=nR#5EgC!uO^oN90%W_3K(Fc<(F z1zFm7`RSDURD9rgC72!}KqEwkUadM6FIiRLKU-1k(Tyix{9)=!Z9Px*Yb1$#=xU-I zk$}*}2kI1(pltUoW6imN5DOp8s9r>eGfLi7M4Vx>U`1-ybl-E$L(70C0)0>lzt9DS zn&bpc;SDk%P*3sI={D-PVRaa(>hxr(Bkx8XhK)L;raC9&Qit5!FR|=m)S0a63=ONJ z1|K4ogtkAEK$T_mL61mXO9;|TOQ++~lu16Gq--DV3^G0yp8+IQH=IH4*Bc89LOrv^ z+65Om(;YU2qR^GPvP>cG#uN-2Q;?dbI6RdjXUNU{0IN{xU)axc+Iy*i=F%yu|97cC z|AbWi?gLAFq*E2CGlUeAl;tY)omm>oyV00oQ|QMBI-I8LPYWJM}xy7*YFH+OLe&#wscF89<_Y&*_FeW)mQ+UgN0+aMB z`K@7fxYS2G9ddKOm3?TfhG?WZiTbK;Y0<z!FSz1aiI zX&%ccYiBLni2~Mp3n?tpx-7EXoA{ohL!y@9iZRb%bVP23n&HrR^$~n z_D}fEUc$YF#q2MA@3~*Z*2B)-X$GB?sTdqSq5-#RxTY z>UqryY}bLgaDEOxB6dIf9fUaV$(`{u&4U#q?~=Ie_4m3Z%~Zr&pVRwl)=x4Di^@*% zRADb`%ZSWaqucZ;@D6H-K3ELc}B^7REtA=EpU#T&M4K? z`kspt3q>U7!qo@!I1N6m(HYkE0_)Hy>pOAn1bGH+@sH#5p5ulks8po_KWR5?C7CH7`^j=&$!_6_|vjA&o?5`I)l5ANr|L8eF zavovV@B}!Amdy3i>+%OZ3S^f2)ka57@6$a%0R)}};kP(5;gEUXP^&!F=F zPLn9N24HhfO#exFwuWI3lXt;3b7FFuOv*jtVKE*(wn0yO!}-lHehp&a^eNp|)Bt%d z)f!KEj`hgDjS5tLRSx%Uvlv4iu9&V222m>SSk2EE29n{kW#}IxZ=j4-lo}5u6{!`) zb0u?9Rx;&Xu+7;&CYk4QaKODO*kv+*Cm^`|;hQA0r&~%wEtBcK^|-w7I34;EiiO{w z3pP507rV=OLj?CJBf^&rD(gJe6>J$y; z+Iw=qqhhvRNfK;xCAD@ccMT|90YMc#Uv-0zLBP!7J_hUraV<>^YTJR&S3Tcj=~TY; zps3b^%#cncx}lJQZfK|bRIBLYov-?Uhbg8o=d0ep%1I9CTa6rE5|ypX1vS#s?|juU zfU`fGS{CuY=-!kxpnX|s_cgS%xH|`N?k{DHrQK;*dF10)1pgpzUc`1hPk2{M)c2nWM%DC?(l>N!Rd9CLsl*CYdyc$JKywu zbPb>{goq#O7R2?afaa&>|0>Tny|?GtW0J4V|ZqY{kY!ka^vvFnQmyYK1y=suJW89MG`yI(t{s`8{RBhUQ@}!55>YLy5e~qkzLLjTY{ZqTPC3eoRbz zva+tqtWM1SJ;yqQr!Ed~eq|Z#J4(tv_ZV2ck2CY(JjTUQm!mO(Ze8w~T$FPvw}w#n z1T5AeT*2@Jgxzb{UdMP&d-(inT@ENXZ{5LQ`ntQubt_h8oM&p_V+}mrkOiLrjmG^( z`2}~N;~lkMiqonlabsf4_0&6U($z$!#v2{tdd*hsfjc|7GSo@{1bqkY-7;C?b zdo&slirOznV=t89$ow0M2ImcDOv-9NFdxAV>pFyZS-~}U@(&jgEO!Ox3&a#LCS`r* zqc1k-pBi*rSl}vp`7r-L{@qNl!`dC8jlrM{PyTgSTOl;0!#WHp<23+>;K{#n&SrgJ z33g)ozlvzKl|l^O z_7;t;1$YD6@pv%J9oC)<0iOI?xE)HkUHPCe{T6X#>f*^ixYv0A0KS;mj&&PGhY;}* z-lBH-DR^{P_kjb6{)MMxkX<>4OmX_Kj3vwO6cNSy2zHCXz8B9@im-(NoUBO-nAJ?| zlvNGvA%J&S+akn!7k-e>!>lU2M(u)&*AerrgGWBuq^z|}u)|s#A>O-CP8{1>jSt7# zMWq$t?U-=;;tiCfxt#8X%dn~cOa1oB;Gk(myLCA#vgy6X-%_xTb3EJekQ z<_fK|jlSpf9(NXDrhzl{1KYzCE|o;#g(?HIPo;M--+-WSI#xT4r>}hC2*4S@a(Xr;FrE8{U_VH z5U)A>p{$=jc%2dNDVuC%%*rFrrBui!WoA)V_?X--sTa^i>f$UU=ii(im?gTUxhI+! z(}__EyF4lP-~=6w`JdE_IU4;6KlA)>`op<8+@n97ufbgYa13QZ>9hEBtf;|ES+}kY zLm1%Me4;%{S+$7W+{B*a$DWT^R84s<{L^=)T7a=9K1K(7-a=3v1b)1;PpvE+UPi2Ws*2E@b}bTM)%# zb{ngJfwgZw@O{Q&GEsihl;8UgAx5`*MWug=XiVBf`U+>uR9+hh`G?Inh`VMpQn3>q zOz=FT2rI8}6Ff#U%mfpP{h0LnOnP%N*&j?a>2l7J2xG;G5-t7G4HinjRDkG}%7!L% zuBv<7*}zCog@P_F(1w=nWzfvM31Rn9MmXiWp>vCqpWLNOR;+CCCen9hlCWw8WQ08P zoX?0SJ_GCzQUz4HSPsUeOW-Qb2$2OhmlB6xKI%%1c=hz zMyg$R$pI@@vfJ2W4)+$<`KJN+|63j-?!E#L(jm#T3wP?`O}>ur^ndbt)wT(Cq*2Jc=H*K_3Cos z;UhOdtA=9~zzOOk%5hHnJJvknuPS}P{d#pv>RC}b)-OHEzivU%T8t>(lnt(2vzJ_( z5tVCw&oMv}!-EDyV0iFMFC!LWcrY0edd(hhOpMyRW-m|Tc+FlH7>>1h&0e#F7LCOU zu7v(Gw(dVw6vt^*$9jMjfq&ax9u1_|j^MVv9uAb{*eak}a=?#XbBDKDg|)zLcpI;8 z&H7fVZ%z8vt2`U@Evawy`qrRtwfZ($-gJ3F*p_L;G*l0YA)lp~qYMS33!T`g_elUX zY1W8IKFKtV81F|^X++eIDAEXNAB1Vo>cW&wii&O32-cz+QL7Qd{fNn{2}!9RQK}dv zenhWgu&PrYNsW-EQN%WAM4pc^jU#AVD}VGwFvmm10kB~j+=Aa(6j$+L4F(zxoG(VzDBc}Qh90-BwWIv)y#ZK}gnl)m) zA2CfMqJBh`MpXF`J<`dESNIXF8d2s))M~_VKSD?S@lrpcR542Y2$X7STI5G0H6q`S zXwZl}FCvzl41zvxK%seJau??CA^zo-+aL(P<~R_cVZiNG+|HyWt}pl{$Emo^Z;vt*a3eb*%KisH#=Rw}dKSTl)#^OhZdpQ3ma$O8c17PFGq< zi)|GO?F>UpSV;!$xk_83w5Kbr7{<0fe4jd>WoQX2&7hs4wEHXVaY`#zwypbxcCw)* zYIgj!!p5n1~@e%|f?((}u+*f?FHXJ~l*zm1LOVZKYjTXvB86uuS=hy$O8ZGO->ijvv*X=LJ6UNXLOUNIruSJq#bfQ_=ZNiC_bcs_ zO53HhQR)-G;U+G$GrAm6Y(N{POBmqvQn5D`|P%Fb1yeU<25C7Pi` zPYF?rAtJ0wiSARP4V0)^iE5Q-mJt2R5D83)?pC6-^!2RUl&D^bjuWCg4H04Dm3Faw z>Frq0D$z|ON?DJi?5I1=Mu_hC&O0=+bst`l<_2ZjxdM~UDeJgD25Dkb*3k&6M;?Qa z=aG{T?ywHTFFmqJiQfW8)JI06)A2MOc?NYzs1MrK$@>r+PKb^(M1+;n%6=7pxMGXP+SbAP)~2*2 zLVKv8CCoVAAw3;{Q`YCG$f|^4YBgA>|f8xo%4r?kxgOS88)#yagXk(+% zhIsNXYFC!1MhD&`64&LMcf_2vhY%GTBEmFVE7wz^lkO0r0wwBENvjJ{ks%^Xv$b*^ zCHlJ(Ln8WgQ@+0krR;QIpZA5l=N(@lC4H>8eo!-xBi4Bjm3uL^l{B!b}}-of7S% zLp;)2%|pekX_~ zDbcP%bP3`}L|BDNnn5(jntH1cozFM#lQ(Oq5KTuMi3qDwq6>)TSpT?Hh|cC4?*H!A zEa|XbK#0X3VG9+Su|WnG7$I>Ge_c}{RG!W~u}e(40$l=u>G z?2v9THL8MO;{>Bsqt;tQ;wZj(+qpBqFRxld+c)U8O{S7otclO#C;YAea=a z2TGLUA4)M_mW4h#ro0g;ESxiZ;mj<27nUFeygh zIbJD5567CU6x)&_W$oAP^)EI>h;B6<^kDOMyh4X0f@l6BK9#p@kg`fye;`JEY6U`` zPyLSYID4m=qCkOBU`;%Y7qLS<&e`F2i=aio#*yYp7!-e-|276bLrK1o+h8Ms63IKNTM7(0Db?={%*>#IJ*_Ux)y}w>qC6k>_ zElWTa~YG7tzgqC`+3ObM@BkULBOV0r^pAnQ@??# z;rmd%^g5NB3A*e@eCtYb#a1lJ1vQdm z|068)XZs%wEwUN=AA#@QMW546LgD>6SPvL4=~4fkAat@H?;s84%F~~|lr(9^Ay4N) z0Q`8P5XIAs%D!KI6Y9Wh&Df6@mVc!bLy`Y-t>Mt$r!L5nZ}tP;5~9etAMiHj{ebfC zRTfF4=8h1zJp6@x`X_vrCx@{?wdVi=_PHVK`Hb??9^U`C3FQA@?Ee&&y8jcUAGwsv zzfR*Pg4qB02{5wue+m&6cHmiV(V^IGaT|S6eL1v$W18{jit9uO>aI!?%vE=tHW*cP zWI4-nSGAB=D4@uivG1VRHm}@Um^qT0onu`pV`JD8Jk3>;7dG4 zw=rez(8d+|5skYhJOTUSx5g#*NjT=T@QR?nf0p|8Ng|MT%&>&@JcN=5!(&coeZ?Sw`ax?(AMp!0Au>*w39Lh`hK zal)k%%vDD5)oQqZQSM<5)W0aCPU4klw6Et29I+SK1;hOeM+fY$^e;L|;q@<`HEc}( z;^BY|lFlXgocFEIdmk)Twf>9ts?@jt|L6VN75^07d*F$s@I-I_^>|Z1?j-6+d`oP-wG>3T+kronM%Hf1$r~$xNe!Q#nDo_dsBFf9EMZ#m4LJ zZ0}))`yb){&P9}-v%hntmjtKs^BE#Km%IavycflFDxdZ+!}4hD}2C;dgT`#al*D0239M#$R1K>eNT>u5-k|KUXv%q9P) z-^8bU`QG;rA&Q*+ow>}50sA}iltmKN^}``<$h&ZV=K{#j>hD|;!d_*6X9VQ`_5RL< z!czJ>F)4{T`#WF%iZnTuEtp5o>hB!v6<_vuN~7rS%w@i1^>@tovI*<>yTL(P%05(a ziF#Te-(fn|EDbiJFf|!Nv;fGnr!l>YK(JQ^jh+_b^Guh9_$>AEbkJgY2;+f(<`SJN z9Agf~?-S9f++1YUG-DGaSd+Br13qm=eIY#`M4{c1C~__`Xdn4#s0PTZ2EydiQEc{| z4{1nTqfDbY)t%h@VlQw})zoiBkr%^m0=fgUktFRRC`l|Sy@csBB2x9S$hI~S z;z%=ZAd*?X<#5KI+0Hq|zesbpV00UC-B+;rmW1f)0%$E3API4|xn0eI)AT7p==;Fy zyVzp6eH5mroS%IcgQ4>oI78{5&%hT~dm! z75$M{1ooHvBX>NwivGy1Nl}G85~*b;_F{w8K4(C1&hJsQJ=5{tL6Nq%uK&VvaEQOZ|y9Wzz~at?pdI#`GtS3)l?Q zpE%_W2p^z7F&@73wzQ?t7BzteJE3n9&cJ%G3k-Ou_3zrY_c5B_#e6!}Q6Y-Y8HJ5t z-V~F&=S#ZjvKIs{3Ek?;50fM}F;yqTKn^J8Htr~Kp; zb&~Tsn{;5+gxCkJWULIVT9*n3t3{%a+Yt8?qv)sRtNcXG+pT%-+_Mntl>dWMic>mK zyEG72$qP;wa#T7Ad}1A2P=Zu6@Cyt3T_D!F<##Zv^h^L7EnsBV76OR#y=)X}nz;(l|c(k~;u`5xV_Zo}m*qwTJxV+(gkLQ26pkg~M!_yyzOWlKjF z4y($i%;jPpB7YGehmcB%!~%h&1L>ojNJT{Y)ko?Hkc#Bf{0y-rcKj?jySq1yA%%f?dQCa(^t|-mGQ3QzVsDJRc88MDdl))&MzrR;4XhKFT&!x%Z-Cx)en2-Hdb0GE{2*Y{og#3lqlVjDkP8mJ($fHCj)RD7uAX1XXdKC!6^!M^UGd z3w7>qgY)wIedBD9T^Efmlpz$HC*y(p;PGoaG>VZjh*BKuvnzb@ZXT*eJAQb8BU8jq zal7C&(kO{`0Xxzw&>n&#T-~{-WcA``BLH6vLO?;S5Q{~Evkqn^p(D# z@T%UX{5}qVmlP?&5z26i?~+HsSUg6zF-h)5Gnt*%nl}TkTH!lwns%E&t5kd(az~O? zWH&OLXqVr4%rAGxsXpzRN}H}hj5@k@@lc+|+48|bqVY1&=z9e@O{~=yX+KnhwZx=i zkc6Dpt{B6CZgdnmrX(dCu6X09Htxq5YooW~knvbM${^VyScD+y5k&EQg|@sxZPZO$ z)-7V04NvX_<=LA{!C1Z{@-?Owzsid~Lu23%-;GS{E7Z#_zFHRf%KO5i05HsX^{&hT zTLUmK8k8PJB(|8hM3?jKH5{E~51JMES|*!<{poc}l7eU*%v#or2RPNru8?EBdl_ww zRbqU|q(Qa>=(S770Bumzk)!b4Pk%u|9W;bqwd{=oOgADGd5%OR-a@jmd@JEMU0RlW z1+@qYDxtLza5v?VVZh%~@U5jXjT31|MV25U4^8qq@?f(deE&u~j$uMq;1m+(Sc4h} zO1bIt{t%X1E6ckKOV|ms9{$3SA==9jJz=agctW#s{{PhMzV~lP)s^*uAP!0<#kGKJqH+6Rp ze^-sTv*H}>;UMP;PoD?{sQ4}l|Az-pRCl7Q&>3Cu&5-CIT(eZ2Bvu)* zb4=p)Qq3A>h*6l^Q?K)K`_#8Jw<{IrEQ8|?JqhhlzFqwsQ@^(Y5Ahfza2mr1AP}~X z!ge>XSj}^5n+00WFryV?m`CjyrUdcnM~#mADbf;|C7~l!x4@fvc#;8xj3HFK2u`L~ z3`FhDU6TvrJg`ft1FE{ zV-A><(*7 zDP`{FOM%E?exl$8t~7*4_H45Jkv(6~1SO#sM)s#n=Ey#1f9jT?&SDk$n+j+~uwH|$ zkR>%ThJbCv!KsRUKS-V22O1`_*F0VG>@m-7K2s5_^axsuEFs||aKl&*_;dH-f#dvI z4PuVeRIU?}e6&XWJ{>GLqwe6MbQ`$~>|+RGoEfyBR*;z`cYDr`X%m1ubhNX!wb9{N zhy%>NIwM%_n>uwPXG%)`1U>%b-VnbV}rH_;DX9 zg8HaE=Eov(I74-Q>q6fqE$dMM*r$!Y&#BqGXyGHBdP=;EII>TPKko=}z8UI#wPd@Q zB*MDPV@p#Esjh_@y#${bPP%>)-JQlkgKS<~&Q_JGd|Ga0NVyvwuLe0s!CM-zJAqEc zu1eh^IwLwtVgIb9A_?o?7(ICX6C4PmwDi^wWa37gA=_II{0@vUUzy_f5g_+wBNrk* zG#lAPU@G#8;6VM0M8C>9VO-OS$;s774af{hHKV>jBPUT8n<#+0hMKrbe6$;dr&IF^ z<|2?~-pr&7`@77v}*-}%%%0;wM%gI1c)S0gPo3Vz>! z6VWuNN@$Sr})>DiN6pOV=WV`e5R*+4TVdu=n0VOt~0p zT0f}_+WQP6j`jd5Cy2b-;RBvwo@;*i&?N&J{3=OEWsz{sF!{<_>>4T7SpWPA${=R zZWw*FSu|fT&6@i%$xn{Xo?tcmxy=2a92Pj04I)S8vwogNm2%E!oyohVtk zFhn5>nuc1y8t!4g6@6b$U}1{l2DM_F`xvyd;X;UORA$o+vqTLXtGZ8z&sbe{s+YKD z2{wARk=C09yWjx9=HwM_+R<9Lmlk#^tDe9kWAbX-15x!j<@XcNZ}Mu%xs27xt0v)X zeJfEqd3B2@9G<-D#-RB7qbREUKQTOl$txuk6UqoMTlBOPyPBtbd&YxcLY+ zxWx<8MeKn9|xzG33|9!F@gg((f+_G8k!*q*@yVnmo@|$8{iR*Om4PdKY}69>a3Z0X?AT-(arPD2}0^*31Hb zkZ?^Aj8;OyN;o$FP__I3@=yQ?rXiqi7v{&FLE8y_^Voml)aF8{(~V&i-!Y8h!%ZKF zoRRs9n9Nyt6}WUH)dsb`=u~pf5iZwKZmEw0Wyk#8cvkKGA z1ExDGHFgbv^;Y^$ggY#?{rvWR1g^wVIRpf9tDqGa71v9}2 z&da{e$j-tzXElO8?A;StdFuXzx+Oh?C9G=<3EL~qUpUrTs&NHv=U9((7TAmog3~GB z?;Ifk3 zVs9$0E~4p$YhED`w9Ilq?r$l@tDF#3>!d#q68g469|@qyN6bb{Z+ixiJh$#?S*4O{ z#MtH?CAln2qD4pC;tJjc;8?ZDM;(UZ>oDZLj7ay*M;P2WI^DMj;iL(dV4*=}z{9Xi zQB`V$y{Ezo17WyETgrxdfU+9Sg2w_Ajx2N6=N8C><(unBInED$%Ja9o}m2~?)Gq?H#=V5eBLPZIx!wi+XC>Ymu9i_0p zd$3!f2H761@tb?`n=;<)U_3@)gFP)m%d8X8!zTH$it_1cLWOQub#LMG*A0giW53}> z%^N$aYQGv(RX_cCA|FR&BxhOVd2h4g9xw_)$19(k4Ij7hP(kGgr|SfTU20(Ix6$Kg z{D~Sr#g~l++0sRslv~k&fuvLU*=52<`lu%<{_Y09BYp_n6*+|wi!J8}p~}GGKb_cp z05Y((Sx}bAucxu}Kpm@@jJYon{gcabAZur9TP6=nxkQG>Q$&M;M^B|voCQg_WjDz% z6QgQvnoB|9&h3FC0sj=$xK8ll24S45frFvbOTeoK4VCGgp9jOcXWzpTQM|3p?6c91 z)Eb0(whMV^4(vu&#@v)Blj!c6cao%F2=v_bO=M9mxYc6F>ppse>3S_hYy)*VRdxFA z6sCc$DK)DKU#FD5q6tdtmD>?{O2@-884)hpq*q41vG>x$Z zKx`Bi3l;+rld6OK%id-d3O^--7VT6nbV)0f$sq~rp5_8poI39g&k!Y(htUOJL)5QP zdvrczO`_t3o-DpG#fPdaZCY2Isw!AOzw=AfG`r7@4ks&1RuN)!w%U7i9OVOut`v8+8QWyar zh)md@oLHuD8rA*>K>h;ckl8)Cv-i1(*WWCKzeOFZ^du5#rv=}wpD1ta&Y+A;Nc>n!Nx{`DZ5(EGyGRxaJ?<$MqQez|> zsibrbTw=`D6Y0xb+uY*OVM2{m5Lzo&>Qmsa}qUk64M`Y_n`KQFDn>M!H-h8 z2tGEc^x#h9COn()>@tWp8S8ZqfM8LaZKq_;tN>!iaUvk=G&ee>`ezQWW=p~AQNP|9 z12pcsS;4s{B~GZm=LPc7pKUtMuS5ZUUGr5tj=7Zx?yZo?NAIoaI7 zmsY+Mv36iZ2>-caES!o9vAT1KiWSyLM(`zEvU6*MgPw&#!U<%2r-^Qa`Syc~>3P!QyU@FtD?qjF)1iFn= zP_71R;wCqz;8>C7wD2tzZ^na;jA3=F1X1^)N4(NazC-Nx$z*{cHy%VoFd77_f?!1u zEHlCR4e(Dl|6SCfZ`$wS+ox1~cz{L0Ux@=3ymSoHFB+xdTN@Oa%yA!#aJbL6#iG$JT47g963Yq$8BDQ-N-En{ui((I_Ow}CdFN+au zhs+JyV50eO0i51Q#*&|d-bkERW&em=q>CAnp<$A^0AfApQ}=oE*assyfg@9WOO=@r zQYICz^^)k67b9J5bY4y&Vi$UPU(t#fY1Hvq+*Vg^RtC2j0k@X`2y?qlxe>!8AzwMX zfV#_1yqA)}p_KHOy@pcSAxhLNf$T%GWN)FeiD6{(gEnN$0U-`JoP_3$^$Z~C3`!S zO$;NOhv_2ShlDuzvP%b)U8t1BAxiX*0@+Ie2&a2)m86>(Ms|^McuRWPS?R7CQ1&pT zyd^}5x;cl}!vI8`l;v-A9Hvm~?N$Ie`JCucx$|glN$m1kzW_lK$vEl5%1g z>FX}kx4gC}8#Y%feh!#_if%NO4R@m;lt8`)*=^H4AV?rGKv={w}^bM7E zix6!pUJ*zy&5}NEZ%HCCjPw%a@G)j!`=!0~Po!_8w0DPSQ}MDu`U6laoc29cIx&p& zjg`X*Ar5}p=_CV{woR1wZy{PV<$?6wvZOyFs+-5{Y4?mnw%Z zWxh0{v~QD_S30otEtU3x5G{_^4y3;WwZduNN2L?PNZ(31oEG8`q`hij>3>t&5g}S^ z$PJ{Qo+W+3C`mgpjP$LQLs}+jv(sKXu=H(|_Tdn1DxMce?}J+5wC|_ViD9H~s~pY@ zaR}0m!*T}l`R$Z;mk@0#-uGYAIdaP5Sxax+biv( zAzJKO52UZ3CH(-EP7EV`2jy^Xh(k#Fz%Ba-rQJP5n~J-E^kx_(Z21>QN)m}-r0=L4 zew4YJ?0nC|%-{fR`%X$bFGP#ZY9M{*Ea?ZSbYd9kJ1d6^LL7p$qYFHc^j(y8&k$`Y z-W^DP8b%4H{nZLdJ28y(GUf0K`knpic{FkZO6SH>w9Ze5XjAd7K>B`J(hpJT#4yr# zQw|q}I0R|WA6WYCN;@h=+?o1O0k14}Pg+V&7_ zDxM6aACV<}f=VYw)X~G9bvXNXVN`ITFw${uqA|(xclx|wEU^^VGEHKi!*1*es*F8J zYetDViDC;UfucL0sQ7b=C@8uDijg4-9Kjs`{t*IXjo=n`FqPJR*nk12a!HeDr`~Qo zrzN~op4+LIJ6)st6pNDGlQb%i9s5K(Wx9uGRDLj&8b$fIT5FtStEsWZ6E5>*9oWv{ zUW_3tW!VXI(q-a67A?+{nBh7dA_>sR4U@ zcy@df)`}^7z`mGlajYNJ3Kg6Ia;)uCrzqca!JG8`_97$}5w6Pz2JbCR)K{2!MK+Pa z^Hm^qYk#02xfuhC(AY&pet5Q+XR~=W@j1T)Kkj@o$C56v8Vs~vprwR10~*>PSxX31 z;QY1;a=o%gw5gmV+O$)fRHO%`fT)CjMmT021n|YM0I)a=a6=qF4+EBj0AGXwJO$sA z@nsnBbBN-b0KkoxLV^*vQ(bTNUGBICCrB=Yaz@>6N#PXO7$Kt6QtMbd!Fgr|B0MX@ zR#aNZjKdZ2NqfDcxGZV8OO=@Bi*lN7sGa6wsAV$s2 zG7ws#LlkINHyeas$lB)swPmW6yqAR`ScXV|#-DeV#Rj#+a#b!rq+9|_Y`2z?<& z8k4DZQ{hv?>^F?=rK{4t6}k&B(D2s~W6Y@+J~@6!?6-BzY}|(|(Na_-zkX9KPr^b` zkX$UKRo5CVe-AP1ucdyF*-UFHFw?NLP_BfUn`@gD=f45V`K2Irug%oy57p^4S;^9D z^>66LZWLKGD17ozi)$J)g%k^g%6f&67Th4DdJ(;@8!+cqid>D=t9T$B^%_>8kK2z` zPQl*yNZl=S+qTn5M|I2@%c=RuNPI7pWSmv3h=P%b)Z#LfsW4v`3G{U`Ub}-=v~&7V zszNL9>ITp%y!HmKEz{BR+=W^T&%)|7S zyRSma&|y?n;ic~Ie*DRFiG;QJaeP1nY2UUFIUeT!M1roDc^mAceVYuAq7Jg}#hu#@ zyZDWiYy=o1Dq5=r477bKS_i0lM|iVjrP)L5w_Z+Uw!aekIr%!+g5oWWzNry2{fGq` zQR_#viYlVQL8?M*KPYOJBQqL4t{GMn#|N@i7p0uazhma#{d`A(GCCFC!vMLn1yl5R z!&w2)WS;c;YgoPwm_ z$a*KPvDaJBVzSNAo6Y`aO>j|~Bb4v#fN#(WaYM9IeiAdqnK;{BJ|erV(M8_vSjLpw zQOa%afE$~`$Al0cl(9`=VvbR?4Fj}}_y`&-Q8OD7f7=h%ya+@bV>K?Q{cKRZL+~;| z@;-aHI*!u(SpVeb{n^;C$$j=iZ4ep+>*ynt<~}megvg z_}cVR;=LlQrnlM>g{HO?kc7Tq6FGTd(WhCkiVqDEaFH-A-&B~&x15lcXSiaB#~@tfaVS)II{M0SqVi%E5GWy>jCwHVf_ zF&hNcGbS6`5KbL&d`tIa064QWb0TLR|=X~Pyq>%C!Wv|{}wrc z>@g=h=m`v_;lWNn_f`nm3$<60OX$P}$5~wSP*$@=MnSR2@J!$A>1)Rs1ZtBPqbZPB zq+m}?0in=99vLZcGzCxTL~bYr*Mw8>O=b#u$SstDZp@E| z6f}7Hn(Mhzaw(VOo~D2Z5aLb;^QdjE?9xX@3a-->{G!vbp%h#nPC+^|1>IRG*dUw& z;vxn62PwEgQ*fQg@KR74q<}#rc7_+DDUevC;PI^`1%x6G5I*; zWQUbeFGf=!u}Hx#U=A-L6e*BLMhb2d?$#qZxf@Es?F48?t|R_cW(tzz7D_?aR-qIS zH|ofiI@UnVs{X+uKr_IOx2evA-z{>yoEh(@qMbPIx__6U)CKt14$2UUnpP&)9Db+eq5e006h+mFS!1khxG!CKDihxWMqq zVPc->;WSc;+qxN;Yk9v3&7pJ3vB@&V4LEXif1bE(YG3M%^#rvd>LJguW5A5@Vq>qIW|m>uKYi596(|NgU& zI9Czx2_aU`w4G_BkS*Wtn!@`b>hToDM@S#+QM}`L=#f|#``++T(o)!}83_KckS`b( za&&}Y;fm7i&n@)(&IvfMtO+@Z0o2D_6p#T_uMFe3SJMlFdZ1~I*KEU`kjxd%Z(WaMSzKw!V_KE#cY+`Kpio4@bcQHnsVz_2M9@YxFQ0sMCN3W4KvOgrN0 ze%Dv8<2U;-9* z3$NF)MHowmG-HXSLY`6~XBr_GNKe2pLC+5u9q973qKz?VCPUJj28^CjjI9g?Cd2IN zIqtzQP9icVnkZPrr3RUP=#7qiL-+lwo0+R>>K4(3j)9xqym|lm=jPQ&Ze1>1XpcTj zAa?!+)7$fsd^lF6y8d{5y9M*0@aD;ULk)`uxN|moss!O)Q3TvS9`?2`$J-2!L0_l| zIyB(p_RL}43L=nN1N@dC*c=3#f?$IebYz*1RbL7CyX*X$qv_cm6kDu<;EW(h^-f;u6?#zs#b*fQl(9+fg#rvflPD?5 z@=YNs-dBhkCj&bbA4BPsnhf^224PxEZ*}-}mMno9>F=xbn|2LM znrIZ0V+Sp=Bx-j>ZxL;x%U3`U-Pe$QKvI(p==TY-IS%)vxs-4HBs0V*_XTuQKr8F2 z2{DJ;x*e;#c8S8QCpARFk>~c!mP&0B#C#~KS-+P_3MID_@n*^&C2E*OiP38TuBQA* zDP9ayIFjv&Mj>3VSWjMZ8iHheEXmN)pNJC>n=y2-DJV~@=`;UCnV%IfcL#0kH77=a zPZcK`;J}TNV98cQcqhtWe=e?LXbfZ+5U1Np`925CY$@M{S&uL)_#G3h#>^e@M_}c= zSi95$qYLj`Fd9=rW9l77FB70wyKh9^QV zaEeu|(ZAwYthmPpxamjN@Hu^{(7gjF+KUlzR&~T-i9hrT0Qf*2tbvWnuo4u>!)7Eu zw5cB|@k8tTp&}ES-w87JhZeeAdl|~7MtmX>^Ll}W*$RVe()pceSJ}KXP1`;hKregp zZHJl|yzhyp2nnYN9UR-Cb_V)G0ObN(71fw3Qmu_5Buu$49w(kpC9nyZwCOU_9;aWw@Q?z`<6YXL}Dzad)bs{m7|FY`8XPhbdYq(FPH1 zw4k+%9;hu4uQiNq`^BwSb8Plb!ihFXI1Q3yW`jxcer|%LL-N?z&(S6I*Sr=lcoN!%?3dMDFUd62u9qo?Vf-FfM)6@sM_qtk|j~Aml3gK8UELnY{8uA)8cNIZy;Rh zZjef1!+bSm9?4+dGywC`{>--|b2M0>N{OEVdtLB^QM2sjoi$BKZX`zrdKxx5CoV&G;Q30*;+&}l=DHn9k% za96(<`c9FlR`<*;S(FOa-dE%bJsQ7>M@!S9uW=V#wQ0HIsz31Q#OQi{EX4L@V^!`p zP86%-pv(7=BsX+C6lQhu5;DJgs=c7_sRi5Q!A%zQx5NNU9lG$V{W`|6b{Z@vupEN(&kT(ck&0**|4($D`#GbW{vaFD((I4u07cR zn4X7rtv*{?y?fUxHWN{AEMDXMs{3VqzaJ~=?mvP)cV#z*SCdN~Biwc$860f*pjhoX zxK4QWgp>Z#}91xTqjEQ_=|^h-ptwHxN=?u#TD9EjxZ9#u~L=SdHz_j>r+dr&}V z;1WSrZBL8M=*MR8*d0Ln!M2`f8l1NtO8)Ps( zFXw|7DNc8ZY})>dYmjJAF=6+vQ&g?+QJ@S~sqMPGNxFUGKDQM6?Pck9Tezk2F5T|z zy6uy0XZE;F-AAQ#`}0>(W({7xBy!?maw2s>1jYgjpnK?q+%}#>R-ZC(n@piShENx= zJM*>&uvy-T;p@7TBHYo|^@6w)3H0m)PJM_Ief$5Mf;5>bb{V>RuG=jQcS#jmE&*GE zS7+XhnV~btD6>8dNJqErb99=6I&(R4^qp(F!N2PXPk9lX?p-aALnu4bLIju=qCq*v z>)*uCa^HHf%$@i;lkXRofB4p4-2crBFaPl5FYf=zg%^DRw=e(j#{MVp;(Z<4&t1od zJ=`TE@U2xG?l2yCWZ(Pp?fauxX@mJM!6Uz^fbEF}?7rC%U@Z5-n3t-^=<#8X;@ zS};^^^uO?J2e|-xP}0MaHYJG%nD`{RqzfqpPTfZiwoA_yVR;BC@Q@74w{I0GKne>z z`+lJe%eS6=Fa^Hx-0{A?P4o9l(dX726KjY2$4AZ|+Wub1L!mokYzDaGG) zi1;@``~za!w2+>{Oc?K?PTltn3j5cdDhkJg5dNSPev=fw!NOl8h2MCH@Ie`NnyDAk z>zL?5*ojd%=(PQ6DSiXuH>CK@SBRv+T2B%77fbP9upUgBzo(*n>a{B*4#j;Aer*4x zxOeR6D@EZDMyKwh)Al{@C)@J+V>gHty9d7BBYj--_UE=pem?5mS} zoshmxzC!paj4-uGzV?4m_$sbv9KzRi__{8A{l?2hTxq!^`RbCs{_C?2#`RlofgG%A zgG_j6*?!uGDbjK;>0S5H?d@5g5Pvts-z~+zR*GL^@op*pHHV15ONw`z;=g^L5KoMp zqSLl>LWp03_%$j1IZ`~WV5HD{r1W`zZW2(}ShI6dn-613GO#H7-0j4G&IB z5B_RdB+n{);FTVH3d7^>cH(oVA!m2n^mg!Xh4|xAJe{^%_lknN3h}E_d`60=r9~8e zpA@eiBEAUmwAl62uf^onBgpT66idqly-pnI-SZD`zvd3%2bO2~?vQ>Qk$$YOAAada z&mn$XD5G#Cc|bXwgCEFYVx$nAw&@92;1s<_$hRWJzq3s#WWFSVVlgUxcn4-nyA$c% zZ-%H-$G%CE*-*IIBdR+0jljbzZdT;TZ)I+v%s1DD%x6wU5aK7fy8;DOei|A4QF+$O&H zw`X}GzmN2`@7Ox)6Dja_;-wE*&%UmHn)AscFQNt^bI_4Kkgwbkd*Zw;Thd-3Ltgw!Yw52wgqEb z5+GBu^FB`V`<16oe)mGMAikgYPI-xr?ZEe<-~2o9Y4>HW55Ahx=hVsSu8VElK?0xk z`-#WiB#Oxn0utG)L7Mv9h{(@VCvSeT2+t;@KUqrOg2xY$bUastFQ`NhZeJk7V}3vJ zjL_hqFu?yqzZZS`?~3FbVf_x@t2F&{n^8D*@|~uXgZ{mlUbThWpP@*eI@vaD?)A?Q z2|$JMe6spkVf9!@SbcooPka))rD)0TMSp_g{g~fRyhgYa-!FW+ygV#VKZ*K=fXa+R zmdjUs4xT}+M|~15H&F(5$0uFiU!`xhn9ZRmqDVSw4XlV08Uyi$EIHFV`OVi&eiM%? zF8_=BWfNiMr?r!xXj$-LaY{T{y;v4~o#9U3H}3L%Lpn5HNOeg2gk(g~+225kmX5+S zM}j*o)Faou^u-p-BiFr592dngDUNAz%!p%79GAqgD2`=utcas7jx}*?h+|6}m&NfF z;`mB&ToK1ti{op=@i)cs4sm>)IKEyS-yn{w;`l~!{2g(8lQ^Ch$G3{(+r{zs#c@p> z|4vMk#qoXOxGs)=E{-1*$G;HAd&Kcxar~G#eq0z~{xMGi7H;hs9YA%WlI)hi~K9W=D>ML|rr>if~)tz+pAYJ`FU45Lc=)JsWK1f%8 zLs##itAC*@%q%>T`yO4P6@MgWfqro2^>jt=s5tX#x}x3hXIgYcJ5$e;>5BH+ok`PG zn64J+>Sc5lp{o{M`RVEuUA>U5-a%LWboEiXI!;%#x$Mj{>54X0owFQH-MN2i$K*@Y0N6X*N ztkc#1rmJ_;)%|q!cDnikUA>X6=%L&hsEm)~en?lZq$_%aai&IBPoyh+Sp1P3O>Ul9 zq$|p#Gc$B`67wN6*0;N>2m ztMlnwySQ?g#p-gILsr)h>-&X;bg zX<9LrQ}SiwCg2U%q}7I6ys4N^-ek0mnp(O^5zg~k*|-rFEEy$VRMS%CSgBI9z?xsF zDaFU_L55rl*-|RJ@~Rm%RkOgqQBS?BtC^7IX{UmIi( zMbFoACAF4M$rMSesi>N$RdQonG+7E!RHoP^PtFQPE`xQ@BQY zB4OiNtfuG7*~cw5UsH9Zrm^5Al0uDZ?s_Jp>W^DyM$=15EmPE#n#d&~)lb+Fecg?H zL;n{7o#+!Dl$EmOhI~0=p+6OM!JRM1l+5EVUU^N(z1U(gYD%gQ%P&8ES=m$q<)NgN zg~+1T998Ps$1hH46l=Pw3Sqf?HYcSSYAvD}c`6c?tXgxSa5U5yh24@j_EEVOQ){E@ zuh4!Ji<+!`DXm%?j6R;mo93dfa8IR7&TK ziiovVuUWN>wWO9by?wEzSQOq_lyo|vDwTSK=zLZBze%vKf6b?hBmeH*%r|3O^#$-!vmy!M_hIIuTB|zcTuQ4WqxSea zTGWz{?qyckILxyy6GJo+$V_yzA-Wbl8C^`(HMDW$Epm2fK<2GcPr@$U^yCz1C+MFE zLZak_GajXa@?J(W2_=Iv`&UroP>4jC-z(2mZ<+F;eZj_o8x$HhltdXcY9A=+l#*&G z8Cgq3*HQwC`Lb%sKsOXr)0LEJ!6$lDDvlm%$6k2yI?=bJRQQAJvQ(6;I#y1rEpg>a zr*%t;n&0Vi-9R$sjXe$J^RKg9cb!EuT-4}A;Lv#7385LHK@%x~*425Wb);7te&q? z5p^T<1xr!5Dx$z6(iS>LMaO{}E`nyZ{7@{-&}jxY$};X${o~rSfue#o2m!V{4~bhA zdT1018nk{^p%reb!VOi2hJ_|yXx4dyS}o+BXz=|S8dljAM>N!BRrlo7RDtwFw6)<> zs$R*fX-cJ0PXZZCxhHatrHS60uf6$(ySm7-tgx!#z_BPh%hDL9t9X7A{9WbqG3dV zG>~0XUt~fHvtU_kmIEG?{{}kBGzv3D6VmqM3=SIPdM#g+sXn6=>#FEgEj4XIYpS}- zNagdERH-tSEo(Z|<~HgBRr3&eU4-(Vrsh6lxlY^_-CV4YuW%Bpl_E8c@FZWcETO)^ z0(bOkMN8%4d9JSWoeJ2 zkrhQwlVK<;G^#Mr=fu31PFQ(Ts=E zz+{NU42tNrNa?mHVmO6t<%^^k9~+jGP{Aw)8bTBi137PCaAH9PB2Bhv$!YKfBS@Xp z1Wd$Gm`YT`D%2`lGDeNmOs#^{Otx#Pk-!vAjW3~KHPDfYw3hcx5GLq{;T`qH@Gz}w z=)}Z{kW?;=IY}iFLvOwow}n4^TV9LXRJ{1ExTKp#qNGBH#}I|&$?JV$_uWd?jdnt~ z&7?7@RLU3I77@K7s*Y|cRy536>Ec=!*GQLI-LO>hXk<_mWf2v+2_n^`juMICYo(x; z(x?{p5^4*5>;97WSYIfdvE>)=u zX($x9qPQ8<*Ct4xN{~uG5s-!=XA(s%n}@b5tjjxvG~l%R}eY2@`V-CVkW>q&t=h@mJ>$1oU)WPwWX#kC(4>pN1C6g zmnm6KD8lfB+M-NBW}m3m6^x#0r2d@{3OU_E^{|}Kkz^Ueaw4rYw4%Hy*OJIA16HAG zqV2o^O*ev-LrZu@1bI-_DCjMv2F>_HTFrii%5*UH^;)0YC5l2 z#=l^@6Ieu zn_X{lQyn(V8Q3UJ?Ta;zIGN^q@319NR!~et&QpvqPA1rA z9y!j88FlgF^T-LSWXxZSAD>4=vxz(1_HVXIdwAX@etaI`7M6A%h@UA(G`YCbeP6V# zxZf>@8)ge;+r^L1Bh*6E4-Y!UkIy4!>y77U;>YI^8h93Qr~AHa-z^qQ;E5lfN5p;E z;*0y;>32QbzjXh3BvorA42+jC;-)9V2jmJJTSrqMOtI2}-Sb(5Ke5LWo>Pk-pDA6@ z78Kd_!TcC`iL~Dx-dk8scl>2{b}(IJ2X`=i%`UGy|3nuEKf3RWUJ>`Z^OgHYOLzP_ zJtv2^JAcg%wObx{um}9%9````p)Qzy-QgA8@*(%d*cSJ@!`tb>Nf>_J@IF1_nYYAD_1mOghwzwY}S9chT;kFmypew`b9f%WF%XWs9wUw9g%-(b~rgeWcN z-=t0KxD!76q6m#Jv6JY8Bh&mw*k6T89H zOm&?dypZklne4l#W4reMhtacO_o(>sndC*rD8P|?MYX1iSc^f=Lk{SHm<^}NEh|mT zE5(ax_oevpc?5G#YRifqjvjC(F?LEDC-CqCBITo2Rk!91DesO7|Aa6NG8! zJYuD%EqGF7LrJv4th>BoqOGo){$li(Rb~C^)^A7-#2je>Zl_Pu95XTh)LEVvZBmzP{_NiEk3KXaD*sk7V{sdtFKFFlKW&aeaFy!tHm zTk?K)`L^}-+Xn`R9L`~v+vD~5r7eqv-VH%NKBF9nscfqzo|ae@@nnu3mq=?Cv;XAt zh)1gz)1uPK1{aShse&fel!74{J-kH*qP4}^z&*cfX|0_2nd9k~-+Zg!?(*|;w$~kh zbDp64zHAK+mP0AsV!^g_@#AwRzH%iH*DKgK_1zDx{nw}0UqqcOJHcswq`SYE=5|sv z`a)H)?#}<2fq}~*7Q*Kd8kdR5H#u!{JP?k>6Q0O)Vj}GFCdNYk@by+6Yg^^Qx0|ik z_E{`ued6=sa%LtUMS=_n7dH!^_qAWY5T^RMh*KibKDc$nYk*-LI=?<}{le|-Lx{j(nyKNS8lN3gq{yxDf6$f5(~ zlQXV+oFnEh&A~dt-dztkI+hpn1)pX9Q(8mW(R9q*WVGXvXxQV6#lq2FqCjT*9IgTCSJ_^&5(!6_|#Pjh7`t6tDM=rY4`3C&x zes_Cv^5jXnec*n--G1o(fq?;Wzgs>gmqpXpt@rJlF&8zpRumPLgo}0J!p1b4M*C$i>3bw@O5i|cXVs2J;u4IME(^dE*Ip)}i&RjlwzBqTRrw3!u zHB3Z|;6DAmgHw;L$=#)xrEua*zmZ#edRDNSJM#UWp57n#Sk~f4j;zccv8*p1>Dj0q zu~h!<$dS#zH%q^C^UEAJZagZ&y2Iy@nGF^{CtYZESApx!vY}@)-Vq^eq0Ha?YL4rNFrqIF|zFQs7() zoJ)aoDR3?Y&ZWS)6gZax=ThKY3jBX51zJbtIQ`Xpem$Sx#OF0WzlYBsz`7EL@HNEWU-YmZJE+7tMWe9EbEmHV40}^ ztT@UgY6^A^;^irs1kBUzVj5!V$wZP?l*0X!NPx%h!3vWaHV4Yx*d8o7Ht_Zh6+1Pt zD{sZRalw_VBIt$%4m^HuUc7@u(c9SaE%seoRxQSb!YouTB~^Xz{a$fDiWj&jSo8>s zSBe|bFIe=*D>AX}H;IXjzrJ!x!}^RYSvdaWk;GVdOf22h^blUEKzD88u6$(yqC%_F zjJQT7&OIi3LNFq3%a@txZC@GhLGfVKWKH$>BiM?9*RbWWAq?&V2Q4DR5%F>j;fyRr zgeBg42xGiYD3wEi`Hm1Yx7UtofgCT2ycG-L2y+6lEi_eWQ(n`(ig^z&urTknWRa*~ zVQVd8-dyRCcRK}zR?d)wJ4^$;i1#;{)>p;dqE^l>l~7_V#%XZ_zAt9ac;twn1Z zVdHLbr-j9`fOUdQrdY?j6oB^#q&H{K>qY3!hPXpJtpN`TsF(Lz*cA7~E*i4(5Mfru zW>ne$a_v|s?DY)|kjWOC&{i8QlUCYvbDMAO25*P%h{b~Y7kQEGhdX8@ocDj?{>l-! zp@mC{a!nJ-a0lHf;5`ZCY?VM%C6Py{KD3sYOip)9_GwbGUFy;MQf7LL*kk?Bx7BfT*^eZxAxu^ zdrxt5n{JACsF0N%BINgO3O+3EKn58H@gXXPl_5ewT1?+}O$26$@*a8)3-IilJT zpEkKhsb}d)VD0nKL@9?o-gvW6O-WO- z%0+AEul20=u3oYBB)YPVY{8jz<>HO=Rw2Pkgwq=2ZS_Pdm9-=5M>dbF;_l|faLxZ# zd)9Gh?YxyED?PTI^R_Ns?b+z5Y#!O^Sv|VbvvS@B?5*|e97XVsZ5~~R=&d80J?k)A zJF<0j=OPFPkE|bCJ+gE0+C}j4$QGPzTz~*=oxctwf$K-tdPX3w2TqQy9NB==&7Rfs zD2OBseBRbk1Yiv})?vJMq+;7ZczaiRHf5kMtZW^%*;WybbrFY=)uTJ`WBr1SBbDC8 z)t(WE-|Dfg9Kjv|t8ME%_>6n-4#~PhLclBVXk`5YgrdhvabCl{P2kF9Hfv-Z!CXCW z5z#nmB~hzAt4DC}2t{-Uxq)~>&PA18ipFZs*7>VX+M=r?8$`I;IkIy8%CYqecb+;z zK5X^$uH&$Cj4ly1t8L>-WDmr4{ey3~yVX$i_vL%E}YiWLM(}^c){$DF zfJa7FkC1Q*$&rl|C~S$;K7y7p@*#J%5DU!FRZ_A*67GAXpcz z)~#dK#gPaCWsR(f_*vJEfsmnAYsF?=Jx;>mkm4d@L&g>OXM@PyyBjE9Hr(By(ndLR z>Dn=*>(Pz#c8+bFPcd8R*}7=s>Xl1v@Oa~CTj#Am3wdW9=|vtct{mAXEHYyG(KjvF z({Y~VXWz0|XxGQPz9;$N#U9I6&v};fianMz?*Co6N7(B%h^D6USvi%h-@FR2jnjqQVVuqK37cZ0M7c;Lg(+76Q zelIp)llzx4Z!zC#y6=_dA7tKP{wkQlyNCshiH^Z~Sd>PC| ze3@@zwmw_he<}0UHIi>-Ub$BCJD69oz@Oyb&%6UAkN97iE5nj6$AVu9&&CTSKOIc| z?=YWaUd8fVa=*lE8 zos_)7JTfi$4^8(8$)7Ua=Oq7td9@&!-X>4svlS)Z%)H2)28;A(?&M!d+Bfs7w=DS- z+qW^_YciG-Q+k>1D|N{auzwcpUms zD;Bnk^u@L>vhQWKE=w*jTV5`C)wIui5Az1|SD9_EkoJ#YA+L~stK{b}ue?(7D45cF z^EV`S>d%Vg2HW3ZemC16`Aup5x6E72zhGXxU79~1?E=Z)Vtxtp;vMXtY0i8vn8I7R zQ=0!9n_FKe`9Iivo%xBEa`;~_&0l2lDam=}$QvY6J4EtVnE!%#XH}Yi&9wh!$(NvA z65(e)$-H)2n&-eIulFsI?_yqjtK|1EN8Tp+3+#UD?UEm1^UdFreEnq{pLa-}VP0L6 z{0gw}?++yZ0rNWZm)QQ=JEi&0*xdFm$%{C zf3M^#(2kRTm5)juW?pArVqV0D0$|N@r)mEalK+f(>r;~d8chDLd`9w5*}V6&lCQ z@83&)6PvFw|Ap!PAEf!0P51vO`RB~*%-3BZ@z~ukdm!_1`4FlG*l6$!7oGyDi!5|JRt`Y05t%&Hvhz z_if2PWM2G^o+jl- zu9W6aWv(zkhk1>8fO&)YMa)~wF|cS)eqGADow@RK$)^5ey-M;2*nExo8>T$w|7LUR zGo<}XpDx2|d6wj-Fz+zG2u%KOS*3Z3dGpzlZ)dh%Bl%C5cbLD(T)9@7|F>y=o#d;o zlJafOl|0H^VO|1Lep#O{&3}u{*O))XymCUCf73K)zUmn){|1&1CV7#YB)^V%hxwz- z6`M5wHoG4gko*(o4d&-OQ_A0Xfi#aW?=ZiLxfdUHq4IS%^CI)dP4kn|{GXXOnJv$f z;oW+%G=CnL@?&H~a)3GFl03`yM?8{W&AiC`KGVKenr|`Ne3HM*yup0FRrahl$!}ub2ul74vu#51gQk7vFM~-!(+Qm@+h?LvyzW}KUuT|W-ekU&dGSrs z{yUj>m_Nt7@@8rNL+0MolArb*DSwUG&1`#%G|w?_Fu#F0@>Xg7LFO&yuQFTSCe1H- zu9UyS>|pMFyEK0p^BVK(m{)#Jnt#A_&-@Ux?H%m@d7M7X=KOHh2 zEYJD}(*E(|GXH!3P;!)ch1ndBkGxBo7ho>x8}psaJItnkl|Pd9&GG&Yb4UMtw>0nQ zpUmcXzw*b@+#EmeFq`vFD|but(;VI%W;487e=5yC&f%-PPx5EX@G_g>TmLg@{vRxF zllijiW%{hVUz*>*-23N}P5)MyO?kZ^kmfpx2FeZG{p%6ucU<;&7M!o0F2xyHQsHOX%= z?SEbJ$Cz#ZCi$z(>)(-l?1YS8@AoC2V2=D)@(lCFe@T7~nBu$gGs$-|?=aub_Sbuk zi1>exIdVku6*ox#R+(MQwxiPAte+KTbG)+7Y}Su0X0v`&&XexV`Z01$vROYin9ceT zIbWKaeZ(O-%=R~!6;u9;rFofo$1C|((;VM^Bl)*8FUBPQk!gQg@}GmL z{#)iHoB2P&Z07$avzgy(3(~%s-?o=XHuHOp+05_Wmr8T9ysa{u?ac z@QyH>`8|R!+EK90^xb6sx*4B@G&l2mh53m$$^2Vmehyf~e^J`^FZO{I;}o{}pz>!EA%$7O8NUr?Gk%e~ zqArFqCqFJ_&2@wcV@x7A2#Ju)C$!7nw^#RG9{^diGf5`SXnV)8t;aR^|ntPddJ}23H zezEgK$!7jrza+WN_9M)1W!_}|EOYOcwEqL<%GV`dH6Ysu>klM94=nU2W+!un*~RuZ zm}l60i&RHdo6M&EV6_|-<=?Ddi_9OU@E=3Pc$zeSi1|w9pD^2)pEfA% z2bf>LyvY1g<`(m<%&W}5&wMxYCzv;wzsCF!^U)#c-wyM2%ojdghIf?N%A98&VZMub zj`>fSTg+czKF$1n=6jf*?2!IH#5~Bn!#vA;;Z-s`ZDuR;+nAlq_c2G9zsj6r?r}>0 zR+z70KF#c7zK1!>yvckg^EUH)nJv$d;rkorE1Ca;*~a|DVa{J>J9CbCnt6q}$$Xmm zEzIl8A7y@!`Jb7$nIB=cJX416**8o7uVnTxJDFAHIp*7$Tg-pLe46=l%K*&`n0J_em-)hH%kX^|{7keT zR_1?UbL-X8{1N5=v-L&N|3zjObBj62yvlqV^WDtvV%}u_D`v|z(!YOazLNQZ7fb(a z%+F;GFpn}XGSfG{sXe@d`A+6_=09QHV*V`imDfuDzs($AzH~&&JI#Cp^MlMG=7*Uz z=Hu5%d8^DV=JzwNF@K49gZYQdmgh+KSGc7AS27PWJDF#g7nz&PE#}kAtIQu^zK8kC z%$v+VHQhf~`hS&M`oGG2lKCFymoaZL{|56m^BS||xRiH4bA*U znSIRb%o*kfnQv#_V!oUCVdl>;_g*i<^DXA%%$Inj|0B#NnCF-$nJdg?=F`moi}^w3 zKV|NHp7igpnU6Dnn|Xx!VxRPXj`@1#3Uh$@4(1$~>hC?wZ)EcanLog6dA{`jOUwc0 z?=!D5_xh#(mJ`zcP0SVM5c3vunfYPnH!%0!Al<)@*~a{N<^c2em`^ibHY)wUhxtb4 zP392u!^~yoEBSqcZ(z1DzmGY<{CVa@=I=4Lm@f-R|5urBWWJj@#B9Fju*__}@9+)G zR({{%``WXh%dxD9c?nbo-iia#(V>_lX;SPgtTr^$o%9<>3)Sd$h^V)8s^?fDepe! zMdlxZpZNsL-!4e=r-vlZG2hI5nt7i2A?7yol`oO*Pn+(UKWw^Z{s+@N^M9J|Un<>S z5oZ6H`?Q_n(moDXS!$pw(0(5(*4B|_MiEA%%_>hm>*)! zGGCdH?r%5UGyjq4p7~Rzd***N-7iY_JyYyI^Rt*wGrx%WA?BAdU#Up<%cgtgx0vpk zKWw^Ze#ms6lhs0`0(=0WC%m}i-Kg|3JW=mT7{|C$$GJl+T>wih}zhNHvx#X`h2beF6OaCLx{mgUBe&$8y zI&+TsZOj$sPne9g+dUSGxyAf` z=6jgGXu4?Q-O!qbEe#dmreA&G8|8C|Rn75gO%*X4}{WPITJq&|EQdH7~R7@M)3D>v5Rk)d=w|~dozxZ*Wvee@yELO zt6ltyF1`xF_R70Sawoh~l5v#3g)Yu@aifc0+r?NWK>p#s{Jp1(Kh(t=UHpYE#$(NW z^6;2)AAh%tf7r!8?P5H(+von$F8=i{es&krHZUnt#?RfwlUC>?N!=^|sa^ccF225t2fFx$UF_{* zsA2p3o9^Oc;Pdf!0sbz;ABFE?{9S^-OY!#v{9T5>%kkHXzbE1E$@sehe^0^Rui@`$ z_A#@{vgyB2>Krqj^e@?893NNJ(?VW>sJD;hFcZonT@ ze+$%eOCSFF@n^>$#d{EcL-=#x&xyZb{N0Sd7vPW5;UxYjJ+H(cUK?(~ki+sK{Qdte zj#f*;+-sRQWFsc_wqpO~;hVZ~w`)5$?wH%Cad}`1_uhM5o432SZG#VN*zVlx_%RlK ztWDZ*v(HM`_G}nG%Es(n)6SOc$KDSQ8*;lgF7|BHmSk?x1{r%cXA|z z$-VsYQtadxm%ID66Zpcg+^`Lia;Ns5E!y-c<(kFZl%2?QHd`mer#%yyJ^QZ{{Ds~_ zc3jh~-L2L{yhHfV&DHYeo?X>@wo}V})Q4=KmbZ3yPD}3IGA-}!d5HmTh|SX?<*{p8 zoUvUxQKF5}iIUtPEp|rBZ#3_2iSDr23(cFL_w0VAP0qaS+1&3;yS-_nbAmoDLpz+s z1-3RHc#}dxSMrAHG7P*sAd$#cM#o17J=)YV_OBZSe|k6>8FjcU_(W~VuhTb(NswQ` z$Ac3I`()LhpPuzqr`&VlcDSfG!nuJgUco@GA)rrxB;+S;q;UE&d?GPBoLZXEQsutd zQf}5!akRAD_|lN{VANAD>uM&XdDwimPEbTeNm zG=`NSTdRps(Wln2YdwV*KqL~bc%K@rXNtkuc0BG*Pb~So3(0Jv-?WFXS=SBz$}9?M zIy>*u9MMdAdS<55C}e`(cFEZhTCDBb%teYzW&60tJ7u%gmAf-4T9aYn%0U%MTh5g%{3El%=+UtyK_P-4j6M|3u8zUrBcB=4EQAziH`O8T%$ke z&6VQ=+0xQNW;7Y_8L24?z9x!qnd&xQAo=J}fTGPS4<{k@^TAzArW(O` z1SK~=HIo%V^=Os${-9XL_c?WX?>Ae|T7|E>EV=Ta#N+94w?{swNV7r%kgLY_Y6wY%m*-dY0$Y?OB&uwNO-Ic%6w_N+gzBnV@^V zT&oYK+)Aa8(>>urUnYzGkG@}@5U=ovYwmgmZ;eSLLgiY;o}C>|_Bm`5p6GBYJR55F z)esS3(T|V5*LH1B>#kv?T5n7@1O91$%i&a~rwVoy7B!XA-1%}$$)FiSV9AbTZjgPkSk@OfO zq3fza%QF&*;pAW|>X>ma%rvLGjly6^A5MCMX@n|Yj?(ub6AAZN)n2q~?uPDG=VNG2 z2lI1z_*1N@)yHhVcY6l$RrI{3yQsUy+fUMw8WoKCa&XBt5JMfww3qV3sX$!%DjBwJlV}!$X~(q@rY1^bZg?9*P&Tr~^@C-Eh*^ zC_9=l+qBcyDZ{B8KF&FfUP?_T68&Sjf#KA!lD7xv$8*!F-Q#R!ZH|uIyb&Y)!b5J( zZhJS96}ab^5I9V>;+`Z9=CA*K6U7sDq`+Xj&gIvZZpnfZ{o;P7W*H zg<_LRo~|@!@ljROlVVXMc_N`Tn)cA-?3}t_n?g#D&R6?<{c#ir%@8&sNJJEgz+^Z# ztIzjMO)3M!O20cb-i&z{Iz4f|obuFlT?Ak}GF^052JHRLg$XoaWnV3+ETlR~OoJ??hNu|&h8mZmnKUS%#F5-WWL(1-N6#Z7^Re-T@vJ&MI6d93D9+JP!?4dnGBoH4-fc8imP%|a zI+5|!QnShablH}xIR^v2X0j7oG z1x*puT19^p-*>YQZLK?>6{62pf;#bzK`7psmT1|uVP(Rw>Fs2GFxD=Gjp0;2KGBJJ z2JcRb)$=v_n6sM(Sc!yU%!KTd;mOf{-R-Kz9I;Z+wyVq{5PO>yTfXIX7lZD>sn8&F zUcIzji~dAFy0gPdN(pvSoh(L0K{>nK-Fz3(Pb8*WwbX)r zDm)i7+>X*@D%YCMKq2Mi;h~g11I;NpGn~p5;}g|Fer|pu*qo-&A672UR(&Wj@a=O{ z@8Ohdwpz)K^@WnT+=4wd6A9$Tu#!X!!FNmJSfpX-?P|e5p0rv@);>0+ld6|iA!AG% z9QOu2vB7%((3o$wX&WE3=a5|dHnC2|R>z%-{L|+-B zbJ8n^leq}GZvXsPS=9o?rIs^1*Qi1sTNEAVP|{trxds~3b6T{~fJPTBm76gnhwM3( z<$#7E+F;cfPWJm2hEp*^9mtdxcBPDx9$ZWhD@*7SXR5QQMlv)`Y|Q znCObDxwdmunNuPVI8oJyW}F^01b&nZQIZmgSa{rrP=r0EHvkSHQLOc|Kk7+Fog%2+rq#=P(98#;fiE_%XrnAlE z#!$RCIU`$sZ{A4hdCaHaHJpirW1^f3WctywPew!Oa-`->F3~syZ}P<4gd3l7r=F_6 zZuCc|-0gVI*_VexINRV#0WLz=r2~MtI1-mY_$DLQS!W|=#Qzq4w!le#%rS<`b<3LBg<+Nlf9xp2#HHf zq2>xMWg;5Z)3yM#KU~e$`Y4N}-KeLJa!X9b&@9kgAg@8$s+1?RfMc}nS?XIDPO1hn zg2u9PR4Ck_pghXVRVQ$2Gp1IlAHa(ZG4NZC=Ni=oWl2FLtqrH99I-IQs|bx$!SR83 zOr;_T5IDF)E2TykkfcL_RvcPPe7vDdctc?^36eL$Wggj8is7Q)m~y!qsrj_M>>r%S z%+i!ky=>HVOcrL#2r6|OG<@?=+tIGj)Sz0M5Z|wdS2L)a_)4%C7N>Q%InBz!~z-oJvCz<;f}f{@WpKtV~%h+ApWSIX|eD zCq~`2v|rW3L!tI?iZr+qC8T_l=AP)*APerss0NfWwaIWR*{<7i18sLZW7v)A616`0 z63oTa991r!`>W11bH!T0HJ}fr2Lh>PsWqGmIbmIL~B|I^BxqI6zs-{a27t(^aHYn#EOF9Yo*kRcv0q_`P_cTwB1)% zeZFu|NzTnj^=!U9*lG9oyAu_ztT;W+$~2m@iK*F{X2CvK9BgEeN<6C)tEGK9x)i0q z;LTLiu~eTrpRp}?X2YX-sxd}RYr=wtL7HJ;yn@*pBODD4r}T8NWlUg@txu)Wf!HKO zLdWFE;0j*bN;4}F4MTM?OT33r1WjvNg){?DHrlxY<*=Q^~UkGG^v#F}TXoykjW7t3nQAdb`kE%GFU6$;cMvGcfDMGb5Tf>+b zpr+BB_wf`b3e!_TzcZ*uTT_v=YuuY2L~$Sm(SyeX`4lxjXYKAtLok}EiZS+C{Trk? z94Vzx4vwNBjd=35ywPyv2DDPJmF`plvstId6OR@HIn)WKQuRt+O^ca@oId4-8qzMKY4d??!0`BW(7MVX-|KZh!RXASWXr4aWpZY_;Q;jC7vh)E^TuR(Rd`=>FrC2EeU zdva>3fN?W)z8a=}lYyYuAMX!GlD?Vw0S8*%PFX_b+ZP+nQ5dZac=FZUu;Rf)=K`iI zpnlXl`a2p!w72LwnZ3d@})_>dmK)ABjO z(MYH;H=Ifi#zGnIRDYZF6w%h~?GBXE4CbJfrRsuhsJ^7BM${chd8xyN+UZ5Jmz#jP zg3^lDjMLoO*=DCif3`a-x=^u0kqqQA7<2{w1-dh?_@mcLECtEXoU)lk#ar-eGmQoP&FJi&~q;r1A$z4 zqHlcO<%#YlU%q4x8sa&;4?I1Asmmgb5b(xgekK?YO&$=wrt=0(0wfYqW4>Q?70{CS z8bxm|=~!q-{mxD{!m3(+RGYhlD_zZEq^s&N@y2EL?dKf*S6A9;1 ztvZz)U6=_t+IA&U@#XEw1r#*I1yyZmfIE8;YB5PILOr%O)WH@W$`vOyf21<2`!G4# z>QA-DXF7usqn<>lp)t2}!zop_wM(IBpcoEkoe{@aU53~Uj<0R>XC@|x`h1wksK+Lq z<>AzrfdVQ5;LSJOZF+#V*ZW+|j;5$J*LDWtQ)BbdW+tKs?4A54Wrwsz)rHBr)O_2& zpgOYA(tsbsyLhlj#n=$~@t#B(7|cX!{@nb4Uui^@`KC7)&2T{RoKmT%Lid6ilL?00 z!65@pqGLHTyVO749CP?OP0k*PuF(<_soru-`VD^xQ-;ogA#Kh<3C-clhkXNMVOwF) zUCVjL!tGYu@9-hwdxVTbv1;RKU0W>=M4GAGXt-S*oS@kfGl}z~SzB~0m{Ow+ql9@{ z|8yWsLXexJEple=5gF)n8DVc}Nu8f`C3h`pVS2h&Xq0{Z%v z3NwnAEaXce5%h4zLr?#+Y8eeP^nWxW`$;G#!%6>K+%@h@DdCBMF|FON+1+;1M%f)6 zu%prmt3!CA;2w2)`kn2xI$x|~W*k#o<1}M+(DL-4x8;vSD*=yZ!5f^NTE@J5TFg`C zQU&BIDf(UR_N8gYpL2O_YA6#6jiLugy8A~ls=!{Oy$N407MIZO&kiQldSkXcuAzZ^bE;bB|B(L zjVTdldw$M6R7>s;OC*5jWTEl6!&eAa+>Y2-%RP9dUtm=M^bN;gcsdgGg$%c=KHw^AY6QXT*cCE$=cwB^+ir$z4!1q3)a=S~ zYyi2l-&TEes6Uk%U+5c5^&9!1-4mQBkp{otR?O+08Omi+SjRC%Ykqb z{><3RY6yON3(@RkdvCIcsHVp!vQzE(l51vuYBrD$$K39C`+%ooYG28gZuBh#vX1_- zY$U4prMw4ZX~|mEKW}7fgZ|9;SgctomzL=1PbXx%8BuLk1Mxz%(ah=5wl7qxrvp>e zcpYLD^<*wRg|$FSN+_sK`P|;wLYkhP9Aej34Y!?>W#2-pP^eFNmx5(C9^UV@D+*V@UdZn$RLrTSDLP0zFGu_ZrDN==3x zx@&gI7F?d6i_B!*wuR_!hfy+;r1gZN&bdOcXbki_Q$^3T?(8>~cb}~kAI;LPLb2Pm zPmGQ=^HDr%k4-vk#q_8ro?9N@_0&+a8KqvVb##uU?08=g-E}3^3OJ1U`59Z?>!9Lg z)Y8R#5~`YXV07vk)z#KauHvn=LiJq#OfK5ruFmTXD92DT&|LG{Br#J{s_Xb4Pz=mu zdGen80#sk9%SuuA_qAs1Q{Fy>T8n%MT`u$hv~*gnXvcFQhj(ZqHap(0%|^nLRXt@_ zT65WE4ubH}mIR#>iJ^#R9!cj3<*LJ}a&)3xoedV6)LhcTLg*YxEgu+lj*pk~8ADHM zS}Z3t7p(Te^Mzz+Xtd;6&dlS{oIPC5w!-y3>ce(h$w;-Jjs^3hrGfs*A$vVqYuntA zo;UpXZU`wggHx4KeQ>JU^v>HA)XX@V;-L`&Nos3cYJ>xs`sCEiu(B{4pAO<_ z_tZjRwh}R0O16}B7t+D9QFLqe;)0s?s_n7B90G(vwK-oq8}QCL8e`eXOksH;RSEXF zLSB06pqdk~&1t85E|c(Oh-OpR-qEu80!v_jCe1 zH|U-l^pYZz@Qvz|{;8I`srlTkdbZC$mL1H>@Q4}M8E9hR>Y%Gt3qoI5a#dXue*e77 zjDD$34|8NrrL~r4&c39<>qs`IYv`NMy|kuGyNDu02FqHr9Dt%98Xs%)X$p#^&u;T# zQa)xItg9W{d%|dx!u`d9BQ~yQmini{Mq5=HG|muNoP_E#=vGSQNi=jhd#0V8^es`f z?_{x~FF#W$DGQluZYZg^tC%1jD$tUsJ$YBs7nYNaa(c`cz+CkFvUhwiri9=JR2R-U zWmb=QW?h8_RETygH-iO23Kr4O)3rUB*K#+|6V5h$=^?kLSW8W5_K68t>11BZ-|{X8 z2keDH%Y{OM*{!8H%}LSO6XSB&Sg_aa&{tJ$8S|sn^l}EXTT)A)R7@n=qZ!}m3=%lt zo6*C`xjua`=kp($F=I+~A)WU5L%J>REj4_FWFYLyo+VqN#s0yVGvuhH2Wmmb46P5C ziO+Xz?+N6>SfdqdtE0a9?0h!Y9B&S%GGnCdaH}FcIJEcPZDP}9M62kSDR}2S;d*&C zJElR+AVsFr#EWKI)0b-l$)QGayuYUQ4Po+ppsmBNj;&phu}XeA(-(veR)hXFhec(@ z`SDWwfXIyB)0&)IwmX!vR+uT;?L%0NM)j-;eGB6v)NUvb7>v-eso~^kw(2W5qH}XJ z^^eT&3#9RYR;nnXb@P-euu8?Mf!XLZ<`+r|e~1gsR3kjuY=qp-WN~6DrbXv6V`Ue$ zibg%IO=wM3cNwXCUQWZ}CWMV;%bJe0MQvL9NzbZ7BoR-js8w=Iv}T8zQ>{Q@YBa1W zk>*g@w}dhcr>=AwbJ4iq5Fjc=)mNmT(M<^I_(JV{tdOsWBHl4Z^pOm(8&xYsOh1DK zQnElfU&1^iM&O>Ilzj=)x}{cl(1ps@Z%lfmGqmxh&MH=HO7Ae!n99ZR*(W5XqNP3h z?3|GbkE)@WTz{%kUnrmo)UZk{i^VK89(3m76)gXl3ubeDj!LV&Fl~g&)4Ma}W9fUJp=Ca zG-k&F%|a}`w>S!GSmW6k2v0?dqgBJzKbY4-&Kw%gjxXB&P`B$tsa7`VcF!e4M!bM} z(4I^Wh#r@Ng$K5WDZ{&E-vt&KNom~fnr`HHiB^A-2_SSC=IPZuhElgkJvw18TImc3&Fy;hAW;mBnF5SBI+ zqF8L2Gg5=JSf!5n{ztPR9;R06LJs^2&s8ufoS!PR(@CQ~r+LawTiJ;+i?WNYe5Ja=veB+&+bjXf2@!mOhEuA*^)F<}sl~>s9izfu`5l9v_{K&Chve{b)~p z`|MV7Z9`f$pG8ZmI(*-?bo4181g(0wVM|bnr`-R6wT-A3>b`=#z z7|Z*SgkQ!>^YZ&6Ie!1JThmDMmz4&0l%g;hTn+cqsSmfG6<~Aztk4|l}Q28O#z}8KezBjQ(&41 z33(a}Lu~`T&3+yRLq(IJ!pTtaL|c$D4l1Gy6;g(ZDNDtarDDobF=eTkvQ$i2DyA$I zQEQD zDyBRYQ=W<`PsNm{V#-r7<*AqoR7?dbrUDgHfr_a>#Z;hTDo`8|o~+Q|PF83jBP%qB5f!jAB`PotqGW{zP_ja^M~Mow259!! z-4i>&eweI4SxW5c$qmrPh+QzT1?+*z3bf6D{V%zN<`E<-(6$qHzT_5YYl$5zu?6f` z$qKZm276U<3(a9gR-mmWc2vX`@L5Jypgow~=G-Q>(52zfrEM7e*+A?9zey1lusbFz z(8hqBF}VfWrp2z9+yV`1?1;%N&~`O;!^9S_7bYvvRulVRatpLwjrHs-vY zYV2q}dvU1+LA^y~n}wE1D6)o(Nn(n1vxp??=G-BP8y93Cg2vbG$jV&e1dDms(O$RS zR@#6$3d`0Ze7la5LcA`mVD#%d@SEnlhvs>PK2}idubu@EYL6DM_RYhS|MG8r;AV_& z;;apAXl2}UW@#Dj*~w|Ux1$-b0oWOex*>a#xS0n@+-yXWxS1wN+-yRU7=Pju<&@sB zqbJ%o+lM5_AMQkXv%`tM!>~WxiB&Wd7P~gK68&dNqlCr5Q!$9Sq2PEmD`;$x#b6}pzokb<_ zRW9F!;&3%)=nD6|o+AMCjA6Z{7| z7$xD>tOnE(DpPr8vvqFVnEUE#kAa{JzGs7;;a?bXzcu7H;1qt*p@?o}e__}CrCo0W zhtn_m`}!>~OlJe<)h~L41+=8;W;&TJOvzE8IEvJX2D~&C_lC5EdtJC;M09C5d&bTX zuC~Ve4l~zn5A!2g^8Sanx zBRBDnxU?dsKQ(=BF)EYVuT86K^-)k0dN5koK@x>6o3T z=Gx3*D)*SBnHS>;+fIx?48+Et`Hfg=?m}C89Hy04trNHu-40L2&1wf`@yV8FwMV$? zTggy(0`twa%C_ri;g-{jE37*~n(ZH@r0$GsJ7*G46Zbv80{z%J2oHK2aw%y z*6pjr%$#Jj)8k}#YCHeT9mQQIoWvjEd8T^(`#5pjk^!<>@7apQLQ|&t=ydEVj5Ph) z#aw5VwSA}ND?QG-6Lvj$XvzLO$#bX!gN;8kO|kTrnYNsUY}!wy+qf{kcH5vxTI0{$ zQ*8X1``b!ClTlmoTO%d3PM_aWu5P258? zs^v74jkD`O3iC|5de^<)d&Y2rh2QcX>-1Mh^6=Klqhq|XRmka10OftIcGiU(<*@Wy zZfkZk&#tfo&PpLa*~!|y8A>8RgL_n-udY?3&-Y79=VCYP8nM%;4=BWPWtHkt0LffJ8D7A-MO=deK!FlyffEd0 zx5=M$Pn`9-+3a9?&)L}-c}MdZ$}%U$??P)(y0WfX^d8d51BzVt&RBbUC3s;9>B(U5AKY&w&aHt_GHLnt+k>oO)ijG4at+|;|NGOqH7&|pnhjQkk_G> z3x^)YntLY!@iQz$_>kO+Qz!rn1lz4q_OpHW7WOZD82NX-%_f^Y^LQ37Z|g^}1zj)Q zSF7i@<`xMm1*LZ8^NZ0l;{7-iU#2})fCz>tMD-NEc9yJ8-Gy2m7pL`p5*!{ZZ0Oec zSgdtk@v|`;-fD48cs*Vw0@E%vlrmjRhRzAXThFTh>^oYldul6oP&G@n454Z#im3tZ z=;?@t!?dfpa=fdzDmo`+H#wHJr;0$KZKc6LKSy`dm{uZuWp~x-?y3HH^*h@BWmEw{ z`Z?~(g1B^qy;Xab_u3sN(Tg8-SaZ1Or6 Date: Sun, 24 Dec 2023 20:40:07 +0800 Subject: [PATCH 02/16] ignore file without extension --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 34fb866..4867281 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +* +!**/ +!*.* nimcache/ nimsuggest.log temp.c From 95c0d868d4a39a237d366b7c510672853953c9e6 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 20:40:23 +0800 Subject: [PATCH 03/16] fix macosx --- src/psutil/psutil_macosx.nim | 59 +++++++++++++----------------------- 1 file changed, 21 insertions(+), 38 deletions(-) diff --git a/src/psutil/psutil_macosx.nim b/src/psutil/psutil_macosx.nim index df0156c..1b71309 100644 --- a/src/psutil/psutil_macosx.nim +++ b/src/psutil/psutil_macosx.nim @@ -14,10 +14,8 @@ template offset*[T](p: ptr T, count: int): ptr T = # Actual behavior is wrapping, but this may be revised in the future to enable # better optimizations. - # We turn off checking here - too large counts is UB - {.checks: off.} - let bytes = count * sizeof(T) - cast[ptr T](offset(cast[pointer](p), bytes)) + let bytes = cast[uint](count) * uint(sizeof(T)) + cast[ptr T](offset(cast[pointer](p), cast[int](bytes))) template offset*(p: pointer, bytes: int): pointer = ## Offset a memory address by a number of bytes. Behavior is undefined on @@ -197,8 +195,8 @@ proc mach_port_deallocate(): void {.importc: "mach_port_deallocate", header: "", nodecl, varargs.} proc mach_task_self(): cint{.importc: "mach_task_self", header: "", nodecl.} -proc mach_error_string(): string{.importc: "mach_error_string", - header: "", nodecl, varargs.} +proc mach_error_string(): cstring{.importc: "mach_error_string", + header: "", nodecl, varargs.} proc host_statistics(a: mach_port_t; b: cint; c: host_info_t; d: ptr mach_msg_type_number_t): cint{.importc: "host_statistics", header: "", nodecl, varargs.} @@ -240,7 +238,7 @@ proc cpu_times*(): CPUTimes = if error != KERN_SUCCESS: raise newException(OSError, "host_statistics(HOST_CPU_LOAD_INFO) syscall failed: $1" % - mach_error_string(error)) + $mach_error_string(error)) mach_port_deallocate(mach_task_self(), host_port) result.user = r_load.cpu_ticks[CPU_STATE_USER].cdouble / CLK_TCK @@ -259,7 +257,7 @@ proc cpu_stats*(): tuple[ctx_switches, interrupts, soft_interrupts, vmstat.unsafeAddr), count.unsafeAddr) if ret != KERN_SUCCESS: raise newException(OSError, "host_statistics(HOST_VM_INFO) syscall failed: $1" % - mach_error_string(ret)) + $mach_error_string(ret)) mach_port_deallocate(mach_task_self(), mport) @@ -297,7 +295,6 @@ proc get_proc_list(procList:ptr ptr StructKinfoProc; while lim > 0: size = 0 if sysctl(mib3.addr, 3, nil, size, nil, 0) == -1: - debugEcho "get_proc_list sysctl fails" # PyErr_SetFromOSErrnoWithSyscall("sysctl(KERN_PROC_ALL)") return 1 size2 = size + (size shr 3) # add some @@ -313,7 +310,6 @@ proc get_proc_list(procList:ptr ptr StructKinfoProc; # PyErr_NoMemory() return 1; if sysctl(mib3.addr, 3, ptrr, size, nil, 0) == -1: - debugEcho "get_proc_list sysctl fails" err = errno c_free(ptrr) if err != ENOMEM: @@ -345,7 +341,6 @@ proc pids*(): seq[int] = discard let proclistdupaddr = proclist.addr if get_proc_list(proclistdupaddr, num_processes.addr) != 0: - debugEcho "get_proc_list fails" discard # goto error; # save the address of proclist so we can free it later @@ -406,7 +401,7 @@ proc sys_vminfo(vmstat: ptr vm_statistics_data_t): int = vmstat), count.addr); if (ret != KERN_SUCCESS): raise newException(OSError, "host_statistics(HOST_VM_INFO) syscall failed: $1" % - mach_error_string(ret)) + $mach_error_string(ret)) # return 0 mach_port_deallocate(mach_task_self(), mport); return 1; @@ -642,7 +637,7 @@ proc per_cpu_times*(): seq[CPUTimes] = let error = host_processor_info(host_port, PROCESSOR_CPU_LOAD_INFO, cpu_count.addr, info_array.addr, info_count.addr) if error != KERN_SUCCESS: - raise newException(OSError, "host_processor_info(PROCESSOR_CPU_LOAD_INFO) syscall failed: $1" % mach_error_string(error)) + raise newException(OSError, "host_processor_info(PROCESSOR_CPU_LOAD_INFO) syscall failed: $1" % $mach_error_string(error)) mach_port_deallocate(mach_task_self(), host_port) cpu_load_info = cast[ptr processor_cpu_load_info_data_t](info_array) @@ -777,21 +772,21 @@ proc per_nic_net_io_counters*(): TableRef[string, NetIO] = proc pid_exists*( pid:int ) :bool = psutil_posix.pid_exists( pid ) -{.passC:"-fconstant-cfstrings " .} +{.passC:"-fconstant-cfstrings" .} {.passL: "-framework CoreFoundation -framework IOKit".} type CFStringEncoding = uint32 # type CFDictionary {.importc:"CFDictionary",header:"".} = object -type CFDictionaryRef {.importc:"CFDictionaryRef",header:"",nodecl.} = ref object +type CFDictionaryRef {.importc:"CFDictionaryRef",header:"",nodecl.} = ptr object # type CFMutableDictionary {.importc:"CFMutableDictionary",header:"".} = object -type CFMutableDictionaryRef {.importc:"CFMutableDictionaryRef",header:"",nodecl.} = ref object +type CFMutableDictionaryRef {.importc:"CFMutableDictionaryRef",header:"",nodecl.} = ptr object type CFAllocatorRef {.importc:"CFAllocatorRef",header:"",nodecl.} = object type IOOptionBits {.importc:"IOOptionBits",header:"",nodecl.} = object # type CFString {.importc:"CFStringRef",header:"",nodecl.} = object -type CFStringRef {.importc:"CFStringRef",header:"",nodecl.} = ref object +type CFStringRef {.importc:"CFStringRef",header:"",nodecl.} = ptr object type CFNumber {.importc:"CFNumber",header:"",nodecl.} = object -type CFNumberRef {.importc:"CFNumberRef",header:"",nodecl.} = ref object +type CFNumberRef {.importc:"CFNumberRef",header:"",nodecl.} = ptr object type CFNumberType {.importc:"CFNumberType",header:"",nodecl.} = distinct cint proc CFStringGetCString(theString:CFStringRef,buffer:ptr char,bufferSize:clong ,encoding:CFStringEncoding) {.importc:"CFStringGetCString",header:"",nodecl.} @@ -799,7 +794,7 @@ proc CFSTR(str:cstring):cstring{.importc:"CFSTR",header:"",nodecl.} proc CFStringGetSystemEncoding():CFStringEncoding{.importc:"CFStringGetSystemEncoding",header:"",nodecl.} proc CFNumberGetValue(number:CFNumberRef,theType:CFNumberType,valuePtr:pointer):bool{.importc:"CFNumberGetValue",header:"",nodecl.} -proc CFRelease( cf:ref object){.importc:"CFRelease",header:"",nodecl.} +proc CFRelease( cf:ptr object){.importc:"CFRelease",header:"",nodecl.} var kIOMediaClass{.importc:"kIOMediaClass",header:"",nodecl.} :cstring @@ -843,35 +838,32 @@ proc per_disk_io_counters*(): TableRef[string, DiskIO] = var kCFAllocatorDefault:pointer = nil # This is a synonym for NULL. # Get list of disks if IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching(kIOMediaClass),disk_list.addr) != kIOReturnSuccess: - discard # PyErr_SetString( # PyExc_RuntimeError, "unable to get the list of disks."); # goto error; disk = IOIteratorNext(disk_list) while cast[cint](disk) != 0: - if (IORegistryEntryGetParentEntry(disk, kIOServicePlane, parent.addr) != kIOReturnSuccess): # PyErr_SetString(PyExc_RuntimeError, # "unable to get the disk's parent."); - IOObjectRelease(disk); + IOObjectRelease(disk) # goto error; if IOObjectConformsTo(parent, "IOBlockStorageDriver"): if IORegistryEntryCreateCFProperties(disk,cast[ptr CFMutableDictionaryRef](parent_dict.addr),kCFAllocatorDefault,kNilOptions ) != kIOReturnSuccess: - # PyErr_SetString(PyExc_RuntimeError, # "unable to get the parent's properties."); IOObjectRelease(disk) IOObjectRelease(parent) + # goto error; - if IORegistryEntryCreateCFProperties(parent,cast[ptr CFMutableDictionaryRef](props_dict.addr),kCFAllocatorDefault,kNilOptions ) != kIOReturnSuccess: # PyErr_SetString(PyExc_RuntimeError, # "unable to get the parent's properties."); IOObjectRelease(disk) IOObjectRelease(parent) # goto error; - + if IORegistryEntryCreateCFProperties(parent,cast[ptr CFMutableDictionaryRef](props_dict.addr),kCFAllocatorDefault,kNilOptions ) != kIOReturnSuccess: # PyErr_SetString(PyExc_RuntimeError, # "unable to get the parent's properties."); @@ -881,11 +873,8 @@ proc per_disk_io_counters*(): TableRef[string, DiskIO] = var disk_name_ref:CFStringRef = cast[CFStringRef](CFDictionaryGetValue(parent_dict, CFSTR(kIOBSDNameKey))) disk_name:array[kMaxDiskNameSize,char] - CFStringGetCString(disk_name_ref, cast[ptr char](disk_name.addr),kMaxDiskNameSize,CFStringGetSystemEncoding()) - stats_dict = cast[CFDictionaryRef](CFDictionaryGetValue(props_dict, CFSTR(kIOBlockStorageDriverStatisticsKey))) - if isNil(stats_dict.addr): discard # PyErr_SetString(PyExc_RuntimeError, @@ -922,7 +911,6 @@ proc per_disk_io_counters*(): TableRef[string, DiskIO] = number = cast[CFNumberRef](CFDictionaryGetValue( stats_dict, CFSTR(kIOBlockStorageDriverStatisticsTotalWriteTimeKey))) if not isNil(number.addr): discard CFNumberGetValue(number, kCFNumberSInt64Type, write_time.addr) - # Read/Write time on macOS comes back in nanoseconds and in psutil # we've standardized on milliseconds so do the conversion. name = cast[cstring](disk_name.addr) @@ -946,9 +934,7 @@ proc proc_pidinfo( pid:int, flavor:int, arg:uint64, pti:pointer, size:int ): cin var ret:cint var retval:int32 ret = process_info.proc_pidinfo(pid.cint, flavor.cint, arg, pti, size.cint) - debugEcho "proc_pidinfo",ret,"#",retval if ((ret <= 0) or (cast[culong](ret) < sizeof(pti).culong) ): - debugEcho 111 # psutil_raise_for_pid(pid, "proc_pidinfo()") return 0 return ret.cint @@ -989,7 +975,6 @@ proc net_connections*( kind= "inet", pid= -1 ): seq[Connection] = continue else: - debugEcho "proc_pidfdinfo error" discard # psutil_raise_for_pid( pid, "proc_pidinfo(PROC_PIDFDSOCKETINFO)"); # goto error; @@ -1018,21 +1003,21 @@ proc net_connections*( kind= "inet", pid= -1 ): seq[Connection] = if family == posix.AF_INET or family == posix.AF_INET6: if (family == posix.AF_INET) : discard inet_ntop(posix.AF_INET, - si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_laddr.ina_46.i46a_addr4.addr, + cast[ptr InAddr](si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_laddr.ina_46.i46a_addr4.addr), cast[cstring](lip.addr), sizeof(lip).int32) discard inet_ntop(posix.AF_INET, - si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_faddr.ina_46.i46a_addr4.addr, + cast[ptr InAddr](si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_faddr.ina_46.i46a_addr4.addr), cast[cstring](rip.addr), sizeof(rip).int32) else: discard inet_ntop(posix.AF_INET6, - si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_laddr.ina_6.addr, + cast[ptr InAddr](si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_laddr.ina_6.addr), cast[cstring](lip.addr), sizeof(lip).int32 ) discard inet_ntop(posix.AF_INET6, - si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_faddr.ina_6.addr, + cast[ptr InAddr](si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_faddr.ina_6.addr), cast[cstring](rip.addr), sizeof(rip).int32 ) @@ -1040,7 +1025,6 @@ proc net_connections*( kind= "inet", pid= -1 ): seq[Connection] = discard # PyErr_SetFromOSErrnoWithSyscall("inet_ntop()"); # goto error; - debugEcho si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_lport,233 lport = posix.ntohs(si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_lport.uint16).cint rport = posix.ntohs(si.psi.soi_proto.pri_tcp.tcpsi_ini.insi_fport.uint16).cint if (typ == posix.SOCK_STREAM): @@ -1052,7 +1036,6 @@ proc net_connections*( kind= "inet", pid= -1 ): seq[Connection] = if not isNil(laddr): discard # goto error; - debugEcho si.psi.soi_proto.pri_un.unsi_caddr.ua_sun.sun_path,444 raddr = cast[cstring](si.psi.soi_proto.pri_un.unsi_caddr.ua_sun.sun_path.addr) if not isNil(raddr): discard From 7f36a8987d1ab06c1523a8f801da05a2dd1f9194 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 20:40:55 +0800 Subject: [PATCH 04/16] union pragma move after type name --- src/psutil/psutil_posix.nim | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/psutil/psutil_posix.nim b/src/psutil/psutil_posix.nim index 636733d..a8b2dc6 100644 --- a/src/psutil/psutil_posix.nim +++ b/src/psutil/psutil_posix.nim @@ -52,10 +52,10 @@ type port*: cuchar ## # 3 bytes spare type - INNER_C_UNION_9261176668105079294* = object {.union.} + INNER_C_UNION_9261176668105079294* {.union.} = object ifrn_name*: array[IFNAMSIZ, char] ## # Interface name, e.g. "en0". - INNER_C_UNION_7660000764852079517* = object {.union.} + INNER_C_UNION_7660000764852079517* {.union.} = object ifru_addr*: SockAddr ifru_dstaddr*: SockAddr ifru_broadaddr*: SockAddr @@ -312,7 +312,6 @@ when bsdPlatform: copyMem(ifmed.ifm_name.addr,nic_name.cstring,sizeof(ifmed.ifm_name)) ret = ioctl(sock.FileHandle, SIOCGIFMEDIA, ifmed.addr) if ret == -1: - debugEcho ret speed = 0 duplex = 0 else: From 6f5e1dd0492dc49b90cc782de8d4050f6f70cb78 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 20:43:53 +0800 Subject: [PATCH 05/16] remove extro empty line --- src/psutil/psutil_macosx.nim | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/psutil/psutil_macosx.nim b/src/psutil/psutil_macosx.nim index 1b71309..3fe0245 100644 --- a/src/psutil/psutil_macosx.nim +++ b/src/psutil/psutil_macosx.nim @@ -855,7 +855,6 @@ proc per_disk_io_counters*(): TableRef[string, DiskIO] = # "unable to get the parent's properties."); IOObjectRelease(disk) IOObjectRelease(parent) - # goto error; if IORegistryEntryCreateCFProperties(parent,cast[ptr CFMutableDictionaryRef](props_dict.addr),kCFAllocatorDefault,kNilOptions ) != kIOReturnSuccess: # PyErr_SetString(PyExc_RuntimeError, @@ -863,7 +862,6 @@ proc per_disk_io_counters*(): TableRef[string, DiskIO] = IOObjectRelease(disk) IOObjectRelease(parent) # goto error; - if IORegistryEntryCreateCFProperties(parent,cast[ptr CFMutableDictionaryRef](props_dict.addr),kCFAllocatorDefault,kNilOptions ) != kIOReturnSuccess: # PyErr_SetString(PyExc_RuntimeError, # "unable to get the parent's properties."); From 609404832de160366e64f92575102250dc5559d7 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 20:46:12 +0800 Subject: [PATCH 06/16] CI --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 912fe6b..b8686cf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,8 +16,8 @@ jobs: - stable # - devel steps: - - uses: actions/checkout@v1 - - uses: iffy/install-nim@v1 + - uses: actions/checkout@v2 + - uses: iffy/install-nim@v5 with: nimversion: ${{ matrix.nimversion }} From 332f1e72c0b163ea90d062edeec827eb8bdcccae Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 21:27:15 +0800 Subject: [PATCH 07/16] using unpack --- psutil.nimble | 1 + src/psutil/psutil_linux.nim | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/psutil.nimble b/psutil.nimble index f34229a..8af2447 100644 --- a/psutil.nimble +++ b/psutil.nimble @@ -8,3 +8,4 @@ skipDirs = @["tests"] # Dependencies requires "nim >= 1.2.6" +requires "unpack" diff --git a/src/psutil/psutil_linux.nim b/src/psutil/psutil_linux.nim index 5313f03..49372fb 100644 --- a/src/psutil/psutil_linux.nim +++ b/src/psutil/psutil_linux.nim @@ -2,7 +2,7 @@ import algorithm, math, net, os, posix, sequtils, sets, strutils, tables, times import strformat import common, psutil_posix - +import unpack ################################################################################ const PROCFS_PATH = "/proc" @@ -796,17 +796,17 @@ proc per_disk_io_counters*(): TableRef[string, DiskIO] = # Linux 2.4 name = fields[3] reads = parseInt( fields[2] ) - (reads_merged, rbytes, rtime, writes, writes_merged, - wbytes, wtime, ignore1, busy_time, ignore2) = map( fields[4..<14], parseInt ) + [reads_merged, rbytes, rtime, writes, writes_merged, + wbytes, wtime, ignore1, busy_time, ignore2] <- map( fields[4..<14], parseInt ) elif fields_len == 14: # Linux 2.6+, line referring to a disk name = fields[2] - (reads, reads_merged, rbytes, rtime, writes, writes_merged, - wbytes, wtime, ignore1, busy_time, ignore2) = map(fields[3..<14], parseInt) + [reads, reads_merged, rbytes, rtime, writes, writes_merged, + wbytes, wtime, ignore1, busy_time, ignore2] <- map(fields[3..<14], parseInt) elif fields_len == 7: # Linux 2.6+, line referring to a partition name = fields[2] - ( reads, rbytes, writes, wbytes ) = map(fields[3..<7], parseInt) + [reads, rbytes, writes, wbytes] <- map(fields[3..<7], parseInt) else: raise newException( ValueError, "not sure how to interpret line $1" % line ) From ef492b68293f7bc666824ed3edaed2fa2fd3d946 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 21:34:03 +0800 Subject: [PATCH 08/16] fix cpu_count --- src/psutil.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/psutil.nim b/src/psutil.nim index 870e3b7..d94380e 100644 --- a/src/psutil.nim +++ b/src/psutil.nim @@ -60,7 +60,7 @@ proc cpu_count*(logical=true): int = # If logical is False return the number of physical cores only # (e.g. hyper thread CPUs are excluded). # Return 0 if undetermined. - if logical: platform.cpu_count_logical() + if logical: platform.cpu_count_logical().int else: platform.cpu_count_physical() From 53579641352f4d47bbb3a31bb07a9c24419e1799 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 21:34:19 +0800 Subject: [PATCH 09/16] fix macosx sysctl define --- src/psutil/psutil_macosx.nim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/psutil/psutil_macosx.nim b/src/psutil/psutil_macosx.nim index 3fe0245..d688ad0 100644 --- a/src/psutil/psutil_macosx.nim +++ b/src/psutil/psutil_macosx.nim @@ -184,7 +184,8 @@ proc getfsstat(buf:ptr statfs; bufsize: clong;mode: cint) : cint {.importc: "get proc sysctl(x: pointer, y: cint, z: pointer, a: var csize_t, b: pointer, c: int): cint {. - importc: "sysctl", nodecl.} + importc: "sysctl", header: """#include + #include """.} proc sysctlbyname(name: cstring; oldp: ptr cint; oldlenp: ptr csize_t; newp: pointer; newlen: csize_t): cint {.importc: "sysctl", nodecl.} From 78255e9eea400ad0c86acee7aca45860804c2eca Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 21:34:32 +0800 Subject: [PATCH 10/16] fix tests --- tests/test_linux.nim | 1 - tests/test_windows.nim | 32 ++++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/tests/test_linux.nim b/tests/test_linux.nim index c48a236..993d781 100644 --- a/tests/test_linux.nim +++ b/tests/test_linux.nim @@ -23,7 +23,6 @@ test "test boot time": -debugEcho pid_user(1) quit(0) #[ echo_proc pid_name(1) diff --git a/tests/test_windows.nim b/tests/test_windows.nim index c1c8dfe..5150d48 100644 --- a/tests/test_windows.nim +++ b/tests/test_windows.nim @@ -3,20 +3,20 @@ import strformat template echo_proc(x: untyped) = echo "\n\n", astToStr(x), "\n", x +when defined(windows): + echo fmt"{getnativearch()}" + # echo_proc pid_exists(77724) + echo_proc pids_with_names() + for pid in pids(): + echo pid_path(pid) + echo fmt"{pid_arch(pid)}" + echo fmt"{pid_user(pid)}" + echo fmt"{pid_domain(pid)}" + echo fmt"{pid_domain_user(pid)}" -echo fmt"{getnativearch()}" -# echo_proc pid_exists(77724) -echo_proc pids_with_names() -for pid in pids(): - echo pid_path(pid) - echo fmt"{pid_arch(pid)}" - echo fmt"{pid_user(pid)}" - echo fmt"{pid_domain(pid)}" - echo fmt"{pid_domain_user(pid)}" - -var du = disk_usage("C:\\") -echo du.total -echo_proc pid_paths(pids()) -echo_proc pid_parent(pids()[0]) -echo_proc psutil_get_drive_type("C:\\") -echo_proc process_exists("test_windows.exe") \ No newline at end of file + var du = disk_usage("C:\\") + echo du.total + echo_proc pid_paths(pids()) + echo_proc pid_parent(pids()[0]) + echo_proc psutil_get_drive_type("C:\\") + echo_proc process_exists("test_windows.exe") \ No newline at end of file From 144a49a019fa1c609dc3efeb06b32bf104186be5 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 22:35:16 +0800 Subject: [PATCH 11/16] CI runs macos and windows --- .github/workflows/main.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b8686cf..7e2b25f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,9 +9,8 @@ jobs: matrix: os: - ubuntu-latest - # only Linux currently supported - # - macOS-latest - # - windows-latest + - macOS-latest + - windows-latest nimversion: - stable # - devel From c5669594f8f124c80034f8dc51f567f43dafa11d Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 22:38:36 +0800 Subject: [PATCH 12/16] version --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7e2b25f..9a99d64 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,14 +11,14 @@ jobs: - ubuntu-latest - macOS-latest - windows-latest - nimversion: - - stable + version: + - binary:stable # - devel steps: - uses: actions/checkout@v2 - uses: iffy/install-nim@v5 with: - nimversion: ${{ matrix.nimversion }} + version: ${{ matrix.nimversion }} # - name: Install Linux deps # if: runner.os == 'Linux' From e18e4d00829e5dae646cc3191f9ac867073ec346 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 22:44:14 +0800 Subject: [PATCH 13/16] add dependency winim --- psutil.nimble | 3 +++ 1 file changed, 3 insertions(+) diff --git a/psutil.nimble b/psutil.nimble index 8af2447..8b47eff 100644 --- a/psutil.nimble +++ b/psutil.nimble @@ -9,3 +9,6 @@ skipDirs = @["tests"] # Dependencies requires "nim >= 1.2.6" requires "unpack" + +when defined(windows): + requires "winim" From 7bf95bf3ce83ee01f446bc00ec694884d9de4495 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 22:49:00 +0800 Subject: [PATCH 14/16] use setup-nim-action --- .github/workflows/main.yml | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9a99d64..b44fe4a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,29 +8,17 @@ jobs: strategy: matrix: os: - - ubuntu-latest - - macOS-latest - - windows-latest - version: - - binary:stable + - ubuntu-latest + - macOS-latest + - windows-latest + nim: + - 'stable' # - devel steps: - - uses: actions/checkout@v2 - - uses: iffy/install-nim@v5 - with: - version: ${{ matrix.nimversion }} - - # - name: Install Linux deps - # if: runner.os == 'Linux' - # run: | - # sudo apt-get update -q - # - name: Install macOS deps - # if: runner.os == 'macOS' - # run: | - # brew update - # brew install libsodium - - - name: Test - run: | - nimble refresh - nimble test + - uses: actions/checkout@v3 + - name: Setup nim + uses: jiro4989/setup-nim-action@v1 + with: + nim-version: ${{ matrix.nim }} + repo-token: ${{ secrets.GITHUB_TOKEN }} + - run: nimble test -Y From 3c1dc8aed4a7097ba48066fa42aaf8b33ef29365 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 22:56:53 +0800 Subject: [PATCH 15/16] ci --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b44fe4a..460a1ff 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,6 +6,7 @@ jobs: tests: runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: os: - ubuntu-latest From 326aec98e42a8c373f0d5d2cf15070e7ea85d2d4 Mon Sep 17 00:00:00 2001 From: bung87 Date: Sun, 24 Dec 2023 23:05:23 +0800 Subject: [PATCH 16/16] fix windows --- src/psutil/psutil_windows.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/psutil/psutil_windows.nim b/src/psutil/psutil_windows.nim index 8d254c4..4cea8f8 100644 --- a/src/psutil/psutil_windows.nim +++ b/src/psutil/psutil_windows.nim @@ -58,7 +58,7 @@ proc psutil_get_drive_type*( drive_type: UINT ): string = proc psutil_get_drive_type*(drive: string): string = - var drive_type = GetDriveTypeA(cast[LPCSTR](drive)) + var drive_type = GetDriveType(drive) case drive_type of DRIVE_FIXED: "fixed" of DRIVE_CDROM: "cdrom"