From cd8b6ab38218cc5d2ee7ed2cd7fc1bdfdbe3d901 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Wed, 10 Sep 2025 19:54:33 +0800 Subject: [PATCH] Manager: Added KPM patching functionality support. close #372 - Integrated KPM patching logic into KernelFlash and display KPM patching status. - Updated Install to support KPM patching options. - Implemented local and remote downloads for KPM tools. Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> --- manager/app/src/main/assets/kpimg | Bin 0 -> 179792 bytes manager/app/src/main/assets/kptools | Bin 0 -> 306432 bytes .../ultra/network/RemoteToolsDownloader.kt | 364 ++++++++++++++++++ .../com/sukisu/ultra/ui/screen/Install.kt | 190 ++++++++- .../zako/zako/zakoui/flash/KernelFlash.kt | 229 ++++++++++- .../zako/zako/zakoui/screen/KernelFlash.kt | 37 +- .../src/main/res/values-zh-rCN/strings.xml | 30 ++ manager/app/src/main/res/values/strings.xml | 30 ++ 8 files changed, 864 insertions(+), 16 deletions(-) create mode 100644 manager/app/src/main/assets/kpimg create mode 100644 manager/app/src/main/assets/kptools create mode 100644 manager/app/src/main/java/com/sukisu/ultra/network/RemoteToolsDownloader.kt diff --git a/manager/app/src/main/assets/kpimg b/manager/app/src/main/assets/kpimg new file mode 100644 index 0000000000000000000000000000000000000000..80125ec283a790c3879108a98105240f2a91e238 GIT binary patch literal 179792 zcmeFa3wTuJoj?AbnIxQM)@85Q#TeBbw+nMpv` z?za2<{?8wL#`m1_zUMvf`@P@JN!jA5Q}39`@Gq7A$29!^j7^;}YwFBdcjOxj>sK15 z-e$c0w%hMex~@0ZA#fc6*CB8n0@opM9Rk-Oa2*2IA#fc6*CB8n0@opM9RmL!gFv^I zg|dy>lbyT!(_NA=v|eJN?!5is?Tlqw8S8ChY}w73mYLd2Hgk3o>)qAgzxROF`o`>Z z*1Mbf94q!|9pm@Wd8EI88TDO$Xn**lrTfDd@82K3RDokHi_kMnqgXn%)sOV^Ht(}^ z-oE=#fBFK+(q2=@+83BC(V7V?x*!d$3GEoPlUVekHZ8K?CLB*?QQsZ7o`d6j7QKM$ z%dzGL{4{dl^%MR5-(N17LxnaCKmQ#+&%?Pkq)7_A-bv>TI6svX(pUno{}$)8rUkRb z+J+8i>AR$%oh$BQ(dCjRWYc5@e}ysk=qynh_x+E>xO-Rkr(e>H?tDWts&hsL#%i*H z)ZcKCrO(DXXS0#PmvG;uijLNc_jj~@w6vr3@g*lOVY#K30gtJjd1;sj z>&VMuQG;g3>n>?=$R!nr^2V^}d(w#DPXO;T+D+vZJAUr9vC+3{9taE%NE&@MlU$O- zmc6Uhns;Zg(DHefeTWM2>pOwpijM4k6D8KZ{j1uOwBIsi?ek^vT$eO7SSts|X%d$i#N`}slw5gFU?TE+&cm}ngUEVg# z25m@z*Nbt^_fapOr1q@>?a2=@?o(e!Yt+@znuxozWgV^WWOuZ_J*uPi^stWBt|0=S z-FY3Y1)x2q$$sPiMb?)YOK0yr+^oX&GWh*d>|1{K;bvB-Ij+)V{~S8jhCi!K3V*UP zIoxMW34i>JA>j*)SyPKo#UmD%;e63AF=24lD^X=$-(N` zEb1E1qPbeO%q&@=u7gsjnz22l=rc(#Kp z@M@{4B|Dk*9>#SU$JLW9QRny}VT)AohU0b%6>WJl%IiFX!;s+FJ|5)t))w%ypLU>;&C^U|`WkOZDyxQ(g)>acD(vl zOLVz*SWuQyo7%M5eOZz&`2H{!<cqQw&16P66Yv)GeKx*=$GI{NgE+&&r4tww*g zr0=P~c*jUfv~|!}ccd_!2l}dZR`(g09OU;nC-zliEZwKYeOzWFz<;?mEg05X`_2us zL>*>JGzWVkoGec%4(|dCE-WerFWn8EDgtlK1CPxOUw&v#7(5rUu6-Pn{1SkW3r z4`HEQDZrgHy3PhFVM}XV0O(WBE!NVF$RF`aNE&wlDKraR0LrXGSM)w(U&)Fd= zA7sV&KxShihcztPgy#UCL7fCT0?iN|8JHgQV8k9+r~q`3*AQ%h&I`IEedjr?99gf> zQ8no3eVmtpj@+OleOhYpJ?Mls(9v589j%vAIUQL+M^?;FbVU1voiOTS&=2w8g+)cc z$2{O=F7Pu4c$y9T6^4Pg5XsfET1%AHdJ*^hzo-MQujx7ju0!BD1g=BiIs~pm;5r1Z zL*P0Du0!BD1g=BiIs~pm;5r1ZL*P0Du0!BD1g=Bi|9=p;{Ls%4&z2C^)*!yEMVvbc zd57dMp{F%$8|8-6qQla69xaNt zrWNLgCt30%y2AY3CQJTLk_+?c8S-7}OHKHV#_<^Z_!`bm4#_!svnj`5-aWyRugCSY zhf2)D?$mQj8QxI8AOb&f5`IWiXGj*VU(XdY7+XfAm( zCA#L*{_|^*JCtv-G#B@#M02r*k~fQ@O^1r2wm%g`yS2Jb&_)yTm&at}mMq8{sh-6SWk;W^XpUkSJrAfHJ2Fq1YF>(n8qx|a99hdff_pXQ%9f*;SVA}_T8c~Qbm z9`I1Qb3uFQRJNo#=jhn8O5T-Pxx>tJWR%ax9ElVRKltV^M0pG9lf4E=b16rHy52N^=Np2C{5FHWhIKB^0 z4DD=AiE1P%Sj+_d%>J&RpG@H3dsz3+nv0^e*F)fqOa-?iP%}f<;(HtsIq(+(^ zkDLF8`y@WtpqU#YywV;yz19uk^y+U(iSGL6lxQW^_AYYwz81*7f2RE)2M^q30{4FK zsld~S$hTvA$OQe3=J+6Z(LK}np5-3O@sn)%&JT;Cgd_Ps1YJ_z{qyLuTcJy8O`uB} ztJ0;U*-=hw4`9AOq_b^1@hsX0=?{*hiJH)ORvg+HNr`TFHYGZha1tqsHa;u%aRzwF z0$ymHbWL4nB5wXZwy$f`pAmaf>F<5eAI+b*H}FR@t$8)%+J9@0Nn(#XFmFkUkmXcA z!%n3{o08eKQ#hvDitnS3@VWe*lxQ-J8?YaO1HpsC;@B|2VsWTp7x4N_O7wlyVl02B zDB7^AD5{ZnlyAgb-@$R~GXgdTV>~z_0-dJt;K-Ql;kdgvf%}xY8Ite&H6wa-kS}J`&4j^2`Y)J!&S(A0 z_CwZa(4K=1DZ{f|cm~zHtoRglF4fh2WxQTtM9-N|s1_!(=M3=pd(iRV+LTkMVE|4( zWQ)g#KEiQB^30R}fORR?kFi&#g?8fFy~;ICbK9~)60R*xyq1|B%E7gT@oQUI;MR~d z1bRMkzTD}d99)|lzlLX{ZV}fC67Svm)sU1l^W?1fIM{bdp&VSpi>7>id@Y%iLej38 zCvS_7`;a{cyNS&_nHL|omHD$mJ8|vS__$;2YhMj@;95@n+K24ejF5zys2k(gj!eWljC6cAYU|Fy);67Dp;FKt zc>mb$ul!xOJ0;KzJNuaK!?(`w49*M_e?-1g5Z?U9$JJ0|x+55xX6faeaNFFceTCwnFxHA^+HDZ%?s zrlzvvu(3L+PRWz=T1zeJlTz2+Y8 zvZm{Nwlw}6?1E(`%xi*-Az5m{`FQZV{O>|0k-F7q17tfp1mUE+V;cWai;rAo_UdHdw z_@$3CE;QmtGBfAKr!eLzjCl%Uo?6K8E7Y;J4z#E7o0}!IC5@wNnzp%;wvEh2QvEb2}Z zYE3svp|hw<9)Y@52WpcqkREu=x({%4QT_3EH>4cjJYIjie*|l9MLlFUY8g@2xvB@a zrFyL-;Qx&j7JBPoZjT<K=BOSzGFXz4MAxF>EB$+lGg6Ls z-ONG~&W)gZnwMs}V&+Nqfx^?SLz&|i&qQ>lwshZ>D z3v7d)**l&c-=4yH!+?teHRQ50h33eowMtlnqq@HDFrMv1-8elvM_SxR^P|po6x9oM zO+g(fY6dSqRK)89i9Y%dQH`z)y3>K@^x!$o7s9G*NJ?0R*XdzH!nAgR+us^ypfe7$ zt|3LJ;l3NP<9`!&r3&my0J~zyDvgl8bF_e+9A zxehRo%Sz|$)Z-*C3EtI!_XVvkVnV&J6>`%CdGq4IRM2u7mz#${JBc!YYQ;%zUV_~0 zkIBtZLDSCEL2`2xawUa+74{ zUdYUCkeT}-GdFXYnH7}7{Qj8CY}6D+NoF=^P%nHl-noFhJkRB2i9)BvfDge9G86pG zWu}(+UJhR>Be>}SH^TtA`Cq|}Qbh{Y&Af%G3WXcyf6<2%d@Z^luB-1qxi}hcDevaD^;| zyyWz$%2Mkv=%#DSQj()Jvr~_gO#K-A?cw~L7HI>2zXiEU{7rK8R}G&FDF;&-Y!M1{#E1x))kiv3G&ps2s$h-Pnq&>KjKhE zmVZ(!JDMv#`^JewTDC_ITYh$OX;8Z5U`vjS_ZDQl>j;^pXJh$0ViLxW$925(7TXTNXQYNKD-Z37;y9p_gvPTdHgHKWlT>TmT z#X0yHr8*W`&-6V%fuB#$r1`gFJro-w+SrPJ?`p?I-o!gs4E@=7=OiGB>(od8Zf0LS zSuua{i4C-7hYTk-F->qglX{-QGs))WV^b~7SB4(^A4zbprHWaFIXTaI&@lX4Np)$%px z9=x7wt!3k7>{nUKml@CDql||S8MMl5l?8E?|AcPg=Sgf;M^wDqdTH2AeX7r^H$sm> zcj7%GvtcU>r5ZJ%N$`K(*9OW-p90^Z0z2ys$ZT2NTIar<@Nq*qy5I-6CtJf-6-tu+ z^oZ^E(fc&(8S6PSWcyfI(w2RI`}!MLF9VG{mGir?h?}f>d(`%^$r^3-&EKl+dt18+ zqbMWCuco*qT!1-{BB}zUzy)*Xv*|762KGJ+zldJDS%muXM6Fok9IUY{Sz0c(>3A}_~V&=s{tcHnh>j=WuBKfQNN za4V24=Z$zC?TKQWT^*Wqitk96hh!tg{=Np9L*B2s_``M0NBZA7uZKTx+R5;4rmknU zaxeD!A-gv_#P3Z;j?lOxcK<}&ufK~OKMRAEpgq%mY63TZ7G#*D0kx>HR7S6 z;H{tLbdEI~&I_g*Q-iNb!^|Hbp0(vwb8x7UwMUTqs+nMEe_|edOS~Hzk@V*G)1*EV z;zQLFSbHha2d+2H!@HW{0??ZjQQvhnZL;>A#d^$GTOROX!g@Ve*8==xX=oX(uMO*y zrN_sv$DZ_9pNw^uHf$g3nsB(K7;7}&Rv30+y=g`{=xo?Lc0Qi9`&Co03Gc1CA206P zE=fHWz=H6D`Fg7He(O%iVS|kKV6isJp}MjD&626wiS>2>_r-{r=&t$c^k`^rC|A-!?;2zM4)89WXX`BInV`*MMAydM z1L>M*T0af@KEJLx@ACHMqo8X8+i~73>3QrtSGgB-ee7CvO*DP<_KnRn{%=9kp7DaF zT}ShR?(qX@+B1G2O^^6eG(7@w$T$p%UI<ea-`bk)&gL3RqIF7IMx6{gMZLLi}Wq3}t5U z5awG|3jT3QO=Dr#3^##yh~B%kCUXwrum#X5xp@CG_u)AwxQry-iE(9raPDga51>|| zIso1|tJRrh@EUR@nHZlzyg~iQ-BfoW&mv3US3Ixm?;ZQdpLF9q4LW!|p5K}y2e+Uv zn6dpn`46r>2j26Yh`C(&4ZW){+?JCXY)dl)e+M|f51#!gVpRQz)dslimLmi|b#L;Z zed(~Tf^}@wD_CPL_GW^7$i3w-bmR@?uR_1kd&kgke2%xk`_F>+ZJ_tZFFtZ&B6vRt zxwg<*v#(Rit1fd++SdU4Z!_RS_C$$f((Ax)>is#%Y)>w9c}W2HgRG)=V4s3Lkq6x_ zOPbF4%s}rbAK#4ioA8b;U=wM?^XMKK=NJ>oO@bUmKi$6>xv^a6Bw1Sj0$>_#!u4Xw z@&et{hEH{pM=xNHjr5I=2KKy-(`I(Wfa|T0P2G5Z zn(mj^5l&F!f;qA=hm1ME3!JyMYgjMkG|e`zfsbWrkmXH~ORbXJnJwWR{D$wg6a$x_P2}x$osBZvV+M>2 z4ag$_CX_2YGlVUhh%xx~LMPEk@NsLO3p7zJ=_5_RBaJV`Ip!HaBah>rR)t1dK_i@Y zfPa-n@^D`(?ytsk=>2^w=p+ZULAu|m&;{v!C*Uw2JgDmaJViFBy5C81VZxD?YNCk* zdZ>Y%BzmYmY7V-_$LXO4GE$`nqJ?RxjMKwpnMFH54>r)lDexW91Hqc))dvGz?jvg0Hdi9d27J9XH*3H*^cfrWEn+v>m{Cged{Q{)-j5PRAT zo6<}$#=dFK<^+2u4|^s%f_#8irL;0Pj!7PEfjrzTZ5ivvp2^-Ro$yM`-s!xL^FS~B6nl9McFuc{OTU9H(U1J@DbT=vX++PffIGf*v&^GU4U(NicF^y@ALk@< z^-=75C)N|md1b5{Fl>^{`f9+8_5~UtIT6y~xG@F1gY!(_jNnA_J{R(y_LYnNY-L}$ z*cZuX!X@bo1NQPR_7xl?4@u6O6*(xwjw3l}25(a?h}J>5J?BwVuzI{6dAKxl>8rWW zf2^HyM0r^I0^rgi$>zrwO5r`&`!e8>^i3}IquK{#XX+le^by?4K%Z{l=#^wP<8iF3 z3D-Wvx)x!5Th?ipK8tpkW?0#N!2LDA{XOZ4v4pEJ{38A^0q!QqArsb_OTVZr;^wnvWXg>u=b6_9J`W#K9UZx-9mV-U=Tc;<3*XN`pAIsW)}X`pLrC`H zn-AAqiz+{-L4HocIGX<=_CvCij$1b%M~COH0KF1C7T|iWqrUHmCaZHB0NUr0KzFhcPLa${-as%0YbPw%`{5u_LDUpZcysHE6n9xV`EQ5dPUZQgk_IMPz zx3l=JgR0|X=zLY5jp6Id22a4Y!a9F*S;%SfDNoZi_>SZ^_F2j9`gQB*EB&MXyLvBC z&XK@CV7b!D}HsM>U5R;2#r=zZY9O$-*pr6J|u@U0kyuhJF_K zB|N_f{Jn)*lOwlpYbnSPeyW~HojriNwE=M|%%g>^R)FJ!z}36JA!;Hr={k+c!STfI zhnmgMVFvu@`x=%<*SED{d?|F%@<$8WTxcmqSsoPprHD1o(Ybqx3jr8ADAa>*<2br8z-M?WybTJFz{Bty&JB4fdF82iAmd!?>37 z)`0C|jff4>eH3pXyp&Lk4A*lZ6J@s3OLYNM$7W`l9*Q4Pe89kVmXqE-OZVg3S-CZu zY2C=D(OTtOn5h`|Vhv`R5BliCv)HF3!}j@6(Pgq#8Dp0N7^6!QzTs8Zy2uHQfds0$7x^>aGqv;FFN)3P7&H_=(D5BJ%ei{^nhUx_C>jU zg8xM9rP|Eem!~ByY`_}y$(Hu&$*f(kLwh@GCqG?Iv$O}E*z~o{<^t1Z?6L9SxP6TW z|7qXm4L9x6{Q&2B_~GD@22J*7feoxJutCC4gP*o7aBJW$-6Upey!9cINyjoM2fz8? zP5TU>L6S*SH{gKGaYFx*%+Z)E?NkFZ7CNy@!|rg5542NF!QSCQX6*(}ows6b7%$h4 zTe=y#jbb*%9l1fXp5nN>&+F$NIDfA56ZoDis>k|sO_Irhd*lq3;kcEx{{l3*9Pn&M zn`n<{f%oFfl;H%=Y)R{~ffmT0NCl0SxNjV;4MfUKQ{~|WN*~b^<MOPfynnZDMsuL3nVv_`%LDbqk}P<=YWsoeFm@;OY_%j|{n^-OjhAR1)5_;DfT zbYM=B-HpoJM;!6Fw_xsb*vFh3<>4~><#4(megf{_%a6AJ&N6#S%u9Y-Kpabu1-Xb_ zpk^ymWY}c>{#}2a^?!%2|7shIz6D3JZZCWVvb$_(KZZ^nkM=C|NH_GzIp`6} zx2t*tzFUO!h+EMkH3@no2tDGGMg`YPqqrWqgm0O-AOqbAdSpHF^rT1DL!XcySr2_e zdZY(3hwdXi(gmHJ1Dg5?YJPVhPnBepLVbuwldSl)hI}8w5$v{qL_PHbEPMtwOJ+L7 z@3beEe^s;iKS3`P|0R3|p&JiKY&vMkOy`}LlkT&@zcEsLY}up`{3rfRI@msDGxin$ zOmfi@9r{5_f(A1qS1u;fVCDcCoJIIeph1$cM1$4Wph4Fc(x8}^XmA4NOjzr4Y>$@b z{7AlC%O*;cuZj30xDCW1`!8_FfJ4<5`0_Y3z!sqU2!}qx9byi|!&AA9pBZuE8esYy z@iPN#kp&BpY}O!VPyUYud4@z;P5b!>u?*6^XF->zL8FMpL<|;uBM$SJlJ5xZf*+BJ z*w7Z~Uc{m`J;3#{M!M#3;at=trs6wlk3T;re-h}R6tchtpTJtkdULSOX~1d4E9Ajj^q{mf>3s^w)X(!uioL9 zX@zVngv_G->hV5DDfVl{euL=05l>gG=i9MCOxwduzd{AG9oto37&BY zYdNJI6B)CZg~u>`h-6hU(2^*o|1{ z4$v~$55-uk12idP|AcqEhY;0+mPZz{XjTJ@A_vB4ITy4nE3}-8dx)0lJ`O|Ba(9fD z<%kJ%Lb8dz8){VO`NE>PppQAAli8pb@)v)@a~&i{qtNfP=7rdsx@Jyu{xLCG_94cQ z>@I%p3jelm_?au|Q!?2Sy0-Oq;@b0vuA~D#tLWN%98XFT{ZH(>l5Ubh@L#sJ^k<0v zb1#W|I@_+KADOzjWy{pYmi_2+;J9S!mKHPOge8|}pD0)-t*Qb4Sg=mA4UtniRscR* zzO(2u;Ci_XyjRkIaXGA)d>VWwvy)`UdiZ?1AZJJxmBGF!L0r-e{|Pb5U=aO!d`lQK z^nCR^wvTe|B(G`yvW(d$QVUrqZ8-~>B}3=?_=ax)KIChde@g=k?SKynf0FxKRi!MQq|8MIf zvO_K4Sv`|Oq?1TaoCW+z-V(o4oQU`xG6di2)dgKkl8(c6$zKn8kbpxJrtC35=8}!F z1GKOjGS`5d0?8DT5ukw}$z2ofgD;fN# z{g5k-Z=j#rKcb)7KcS!6)99yq?|0Bo?K$*Q`~IB#!wk04px6)5F3G+E$SZ2eKhTi; zfgT4hKgV7nJw7mAWPvUr+D*(w=xzzL%kb+y0xgj5q?2{Q={b1E1${ zhG$EuUUS&>Lax-*A|a0kIlHa(c6s;_z!%@-yS}ISD%-~m z*FRqQ0^q!gzI{yh_TXNMJD9=Sn@e+p2KfD!e}eBVjk`S+zGPFW8Sgu$x{Q+~lTl)q zPXV_i2jrVr#`5nLUAEww*~UUzJSWVbuQTiB2FfYk-rf0gZwbCrti~=j-Pc zWcWhpYewva$4m@Hz)@#Fyhh*S#C*#Y`IUriQSQx~ zsxy_rM>kK>n`nK5Weeeea5ESOIy|3XDPu1M$oH3!Z;Sl?$kagj*YUiOcvdFxxD~MG z{;fuKbzxmHgU^cN06&H=jN=CKb#q@T*P&0JyC3g>&~=?lCoRq>kv5NAuQ9kHBeTph zj(2NDnm42N19=;>9&IXo$l!Qp3Zex*Gxg*%YxJ%isJDU6Z#U`ms5g;%OgMJ{CctB+ ze5Dc3`bGKCms!Tyuk7{Gvl`9Jw1fQYfLI@2EBWeJAH@J<;8$*a$*ZIL`SE^lih6w8 zelO7izrOFsUh^Yc%aI#1Z$@1HoMFE=NbAI}(ToHqu00Oe6aA$D{*PBr+(&ieRNuIz zI&WW~+PqH>dTgpTak`jL1w+eBbmT6ry(iGX`S93qjfpKD`xQJ zS66kDTw0?0X>cYEo6c|vp^q&cZ!>>Ui%{H^j;>93>uM_9tj=)=E#)c z{h&Vv{qV1vRDHHK&1D0v&j8LZKzH|RhVt`!a85SPo0?(zeoeY-2gdYkGF&^+u0|id zYxO;}f2J|xWXvhK;HzLvitAn84siv*H~pFsE*oU!4AB3-^Z7L{qT_yz)_O{R-se7`1(KkFV`e+}0^#CIN?Qs}k{(K|d0Te= znl{uivH|EFKC!M$zNQpBHy&de=-B$^%unG73M z_&VIL(e^9{O>np#yo znF#qvwp{?WKI#2y+xltT)*la_@mjWiQ%+jQpxF9limgAG7KjJPU(Iyj-EHsy(LUwp zT)m%9Yd=OGeHY_eu|k#p1pSXhtp@U)h>@UpgVX;Ha4-3jKJe&C*mMLVbFF|;uKh|n z{#Fb3wMxG&t`%>*lKuj&#eI{s|I#<?Jcw95aJm8otT*Y4Z0*b#_jKrJiz|`F1NphzfSVgNA@?T^AQ8>Z`?P~{$^3s zvc&A~OQ5R`VShiz9JhqdK1TL8{T&PuGd%3IKlHW@0w=DS%Y9F!W=Tf@? z{V8Z4LqD}m=%@Ax^i$i6{$#Y@LqD}G=%@Cd(NFCz^e3Tx2L04V&`<5N=%@At^uxwK z{380P{W&r*OXS!~XA& zVU}ngm*pbgn)|7U&0j#@r(AA|>q2ghxu)Fg##s701S>!*bGd&(xoCkK_5E{N8@+>W zq`1|u^&xr}oz@qCzo9#jgKyZd2<-o!ZsqaIoJSrX*<5LupRS2-!Buj zr`uZy-`OmCpNeu2F-WF4utQ5HM^^;XKs;nrA}w{ zOp4vox2c@{{dWL1(=Xzl))i}s{-<{#M!cBkqedWC3_lz`>S<1ojDO2u3GZW}og3M4 zFOCUUbgW52t@zZtqw}HrAXlavfdhI^L5*`Plyqx^`hv8P-kl+mhHjV*#v} za7X?y{x(;+ZfAb}^Y|VT(K_9;e?@-2h~L z{I^D4-CUkGVQW^X zD0=vNMbZ7JPr>)QP){IndEGi3`CGuWRUc@7Nuvpo%|-GtTVlPZQGask;P#dP-Z@~9 zC#|;@I*($Gv$#%w^Jl*Xe>(>85CN-!wwPE?+-9e^KJdO3c-#tp+FFV=H@=MTC9E!r z5^ueWU+y~jNx*)qDPuvqyiO;Mvl5Pa`6HsOw}8(O@U=tB_EKFZt(Wlg z3a(Gg+4MT)eYT|UI!|~aoXwXz&XXQa%aayQ-1Oo3*YM3TI6j&72fd+BVxiU@8_MM@?4{5YEJ3YG7<@{y zg05p7TwaVa)l2C* z^7BhhfnVRp-&)g*=$Q@KO=F5DWuzYg&W_?oduRhJQ12R*v4?EbIcl&UiX%>3RTN#& zUKDjpshtK|yOf6dSQbV8a(e1K$Zp)%mX#K4E6fW90o&bxEq%}FFwq13`bLJ-?+{TA zjn>Kvhs5$ssG}Qx274wvR^Yw10_0(J_*;hrH`=!f2gvh1xfn}$r7@6+%Vy&}KKK_r zE}b}z=mLGmX-?E0xRzrswQh&_pXMEpx+^Q*719D%GU}~hi}k`!S!NADmY^k^Q7uC^ zm;DlAvYLny=VfOfYR*NSl@7mi$P+Qd$xCss+`vLc#K}!)Y3&|!K8T0X; zPchzEoP_+H4s}yz{D$I~{#M`))LOYvYjxmJQENr{Lh`|7Jg+$2(ro7U7=mShFZi(+ ze^ZdxSOJJ}ZF$sbJLoVwtg+T|_GEI5je7x^PFiXYnJ;1%Nf!DYl z2kehGG!(RLL0f~rjY)7nfcxl~%K`uQ@GTd5ZYf~@tYo0Sv(*V*-8qR31^kB!_&Zl{ z__v|v@qlyuXUKaTCmeD-04`K-_eFTnqrVh*LY@Wl@HU!p2?8!OQieLs68dTZU8-y4cQGGWaD{+s};CLc1aq} zjj7VYQqZOhy6i^&0Cd>P02iXmotW1OxCDqM02hkQVEoWBz@-FmkwIUSi!R05kzag1 z06OeYXt)8-Ao);2`@jMv?whr&2QalXv%lugCapIVGryDw) zY8La5yO@t3(J|gfm^l$Yn=+TWC!#-!I}@GJeoP9l85LgBJifk-f!Ann;~y71m!qur z0N(SUJsPoBmEO{@KNILikKbg4=MG4g%RBKSzS}|j#gEoOI6sAVPbrS2=l2bXJB`vwJh2%m8U|1k!xO(yTSB=oYW(~b#HMFM{`zJhQB;&cfKQ%(I z$-ukLr?lzN3Bw|YvFw=x*@!h9zh$Il=6aUIWhBi-vYXbSM?cBW;`gK_WoyR{&vvq@ z6LE~Zz}P&TZ^yX_$JMIt#TpWIFVVRwr^6VdyU{X}&UY%fR^{~<>2QLJ2{i_IpM>OI zi1aqC%>+1hL$?#0_!~6MKG(8*e4ALQ=U@ydnv!P$WGx;ivX&y0Q3o~_uk9>=LT&coj6T%NjRENbV=oOm|roMPz3!McWY z7V)kLYo=CrlVxT%p2c%~n4j*`fe#>Cr_;LV`RYBJaV_y4!U>I~weoe6EK$~(o45}6 zJ%iUla;F&2BAu3pdx!_m-MM`%>60=%r@DX0oirysFNe!0iTkav$?_xUCz>TVHvqnP zHw<|})=A@K?5`L$5#dD(+LVFoV(j%Ccpf;L-h=nZ=ot18&$*Og|70h84EPsgZpe&P z_}&Zm?Nqv;{R?NBwIn`VZr{TWjb9FHzlc1n(j&Be?efUwAJFF_S>~6#Phjq)O?Xui;0s z<2J~V_p-j-@++2#RdU#qmJdl9nJ_ zQXyN?6J<+ipllh&WlJKy`nAc&FRx5TeMScAG=`&&XGGY@Ec0m$a2C4dX?e;#{8I26 z^0Zug8-7dh^W%Iu+UA+I$v=B~^pulNr`LXr-^)*@PZ>4K=J_+)^jWsan`YWP<>P*~ zaN0AYYo|UlddiQU9$owLvYCrI?wPsh&uBM3lRo7%`qRffzwmin+jQfP7S0>@%)%7R z#V|+VjXM`=#{GEVKR%OQyXnT~7e0mWvsrH3u`uVxXBKX_@y83hhDdE^46N;(*3wRY zvlO+(A$LCBw?X}M9o|bpJ#g<6^R|rm=}nK1&};OD*A~1|`a#L7rLUOgm%g92pcLnO>ix-HUouRS{x)E85j6Inpxciz z{*rd6xlcRHd_kLT{s=j`KZDOub7+1?I|Rqc7?)+VGJjU=68>N5azTcGg zu@wCl?C-mpEW-uO=+f;{Qtum@Ov4_{2m|s0=99RNcSW!sE!L7^?m(`yo9PUPnQVw) z?>eKw)Tl`}IN316g+)ulyP3i8@i)rD@-3;RKI@WjF&k>QymE2a#L^7JQzOeG7}SO`0~M*A=jl2Iq`ri-mHMh#N@AU5ME34DbcX z+-~hiGwR7R3gG8J&M(_s?VK4d&7Ijg8}S9y96@)lYMm|K2^V>ttjO0<>lD6~*G`)E zqYvK}425sS-|~hG8|;@R<}AfJMEpXR4*&W;*ecRz4%h~CyaV~dZhUhP^L0`^PlZ9e z>#++qEb%aMrYul^MJO*XOx=Fu^SUlb-!a~d!Y<>eQ!z;L`z*4YZ(LGt-2(4Ygkcn9iy3SdL-f_xx; z1P(H3E;HUWF-Vy~7kod+yT}%dSq?iB#j@Paq?jhz`t*)T7xqB+%m;7e;a!t0xDUFL z+nHM+?-FfI$fzF5!IPgt_vGR^W%QgvdJeujaMg3IXbR8Azxl| zV)HvJzwtE7|21lU8y6N*Trj`!n`nol^`IS(_7SwVqkRJHY_$K3wjAxVXjh>96@Xp7LkhV~w`Z=kJ0`zN%k(Uyb8*U3vAdK}-Q9FN8E zeaf*J$KOXFkXgox+L}6>-&#>yx7O;fwbuLWUZdUXt@UDbC7WDPq@(yAJn_;UUAv(uk$)t*Ej2 zTw*w1hu2F>u{u3|yLYwCZS^~A?9*=N1FC#}n}5c1er&UOD;(2qw^rFIS37<78Plyw zM?Kx(@c|&popoM&oy}{vV)HJmeT{!0@ajD-Pwj&qqu0LD>BA$9c27lZrPH$#umha) zIGpDi>0hPYSK)Qm`JJ^MK-Q;cKEKyf0iaiTYil^zt)AK{TfN)QYHa=rhZX&ph*`b1 z2d%z3r^j0Fao1M3tWNJLuifXb_1c-$y1K^Z##M$NcDur1T|r~)mFV(T)LXrFTcvUz zqeb}YtakTpvy8y9+wQ|6VoR*Ed7KqSTV*BTol}W@wcX=amI?xJ))Hj-MS&ljRbqrs zf!yjEUmY+da7)1RR#jRnumHcfWMAX-TUUB(>+3iM>ODRO;L4BrXsgfervrXP5EZTf z_O==^Xr;^PcJo88-wN!ns<+qMot~;%eywJewYJXg5qCdmtE;W5QpfsNUNxGAT34*K zI&7Xw5S>a=oP_XHo8K>}nBe4G!6&NV!1vfZwLZ7qUKgVe!qt?T+DcIV6sO1MnOqSE zDuH~p-Rt`toP*A)>>Txi7#vk?eVe+mB!o&J`;1)*1C+odY98z zZ*|qxfY7UIja4?MyV9t?scToI9uz!Y zRpF>~3Wz)ij<&BBAQuEFj-4QU1)X(3y_FM693^#Lx3k8nvL6vry|Z%a41O=LW2+#( z;Ah}>f#n#F65m#-WL8I%Tj8If!k>=<{}Sl2WRI2P)HGIEUsDGTvQx8FS&l z&nJgq^7yM5Bp;SUG+OCnwZN0tS!q{JSJS7@L(ry(XfUXBT@Rvf7PxN9xs0SRTN$LTjto;+E>0YrN(WC>Ip6oJ!S@3pHBi77ycX|O_F z0@cSf1n;Sj>mMP$YN05Fwjv^5sVGU(mqPPY`C?+qUEzT4P?^B)hg6RT}do z_}%O(5_i|GbdtFDIh<8~C|_tFmY`l35e_}t2q6e*hD|}~(?#F4E)pA9#Yo&>B+(PU z!|&iKgv1P3jLRj_$$>0%bL9#vhmSR`JtoFYh?tJK$M_AetW21Q448|KnG^FiD_&2g!$+h2^O= zPKKPG%qg$dD^5ri8hwyrka>E>`+?`%nBQxwz~=3%R732V%AeKL)Ybc~!Wbj0R={?0 zdK@5eA;_=7y1fFVy~64DT}2ReD+dxuf@bm5*Dx!WlrC0g_j>H^#iZ(t_r&xWhzi^D zt*u!>ItH7ov-x~R7uZS9tX7-124b1;K?EPeKq7AHoU3d7R&Q;sfV$tFU=F}|03HV! z1i+82s)}GKSd6-3#-gLv=Z_heRj`;y_T%wx((zTybmpzZmK4#BjuxN z7Se7pw6d7RW&`4CKrw!=o3sjPmpTu_qAIPVtUW#kqqVZWPUv;cb&AmiEO=oseZB%v z_4w)<;ixoOjY@cgZepm&T z^HiwD8WcW6lQIhQrNRpc5K<}zJ+9XISxt<)FdAT>hmnO2JJVX@h1Le-_(cHL=@GcG zRZzFM9aIl=R{HFKBps<{I~TYK7CFt!t&6Hkp@+HaqC5#w0LJS?(xt)#S6v;Uy^Ta5 zMo%r2b#1)|f(7XFaCBC96sthxC|EJD4j^6!Fbx5eOF<@%gm|p?ko6L?rF9ePVBs5m z&Top zNiT5(#SPK7tRRWcY$>j6Ne7TNAURgRa?E^QR}6P3EGQJZQhkW zYK3ehNQ1%Lb;6vqt*)@b@o3d6l%L29#2g&T zsxl&;OF**lbk)u(?i&(M$4K+8yY4c=EcW`1ewbB8oL>CbujIW|PP_CuV`$ z>?Hw5q7M!9Fsyc!b+{1Zt_xhN)z~0Q&?kdIpV-H}xGFE?e=+iR%Z?5q7!(8MRymMl$On3uyE1hCFM((ef^$q-23h05}-!bFPnfWnOvJM7@eWh=Z608Cu z;tX6x?pyp+;45aa#C4?GXSWNzMHU?AL-JkSe#Oz`lmb^(m6<*Y#UO;CxXyScU8$`T zx2~uY5ekS8k9``St%ig***!7ymD?=hNf6C3Lj_YMm@Qa@uii&eosYaKMnNR3$^=!- zE2PZDI^;SRGPpMT>vzxMD1gOiwD~DQIH7XN1YfQxCuYc(&{gC86MX+b3aG*k75Sjk z?+{mFqvrBairQ6FA&)Dm_U=@nd?8OD?pGrW2KMJ6KpvdoEJLKm!8t$&(^WN)C1ixS zqS9YX*!kVQDsDv8)z-Ra85clEc-ILK`6V0UhaU95e@TH}Oz{2u}lj^WkvLQKoI z>H`75Xh4|32%TDKgz`f#^c3XiUB-F1l4vQDNi5D`8B=tPMhSLI}uPy8;Wf5@~X*x+wYyg{Sx(@LRaK6n9=!l?*?oQrrS6sk6h3P^Ay7FvM9E zYVuUpsQO$bc%eOT7j3Rqgx#RHAO<`uiHmrMliywe`vv+#;gOg}s}fnvm{h0?em3lC za)SBYv~Y?JDk>9(-TiX3YR3^4jc^NTrEy!8*c2irK@vG@NzV|R1kwft zSSduu<5u-pFbSVn{4&u=vQ<_Sz}N60E%Ccu0=q|3V#qZ3v2*m0sE zQdi+ryl--cRb&XBCx%e0SKbL&x)GV>X1dTV+=FGrwdA|5!2Ygc@T<)0YiSxq4mtq`C{Y4Lvt#0m;Gn0ECy$GtPH<>esNtz7lPPLzuE_lKF}2CA1<ryQ3tB`9c_a6;rw&=zFDd1bBB?iRQQ4JP1TM63BgN{I2a z4BSmxju-J6e!wZmtBOoUX>6!qP>d%g=(8CfeP1Zu5=Y%%wv*7%9UU(-T%JMfwQz91&Gl#c%nY2~O64m{klN(B|G+#HM^CE0IjK zR=I5}k zu?2ucJVrRes_-KS^XI}SP|&7Cf5aN7uae9MJ_-}@eOK^Mg|!ZGKPx#~D#fXy<|+n* zbg5J=3ph{%S&d8x!9g(*wV21O5N58agYzeh+(}iQ+DQ~Lr_e2FHkc9I6NZi!p%W|j zy5UVhI?-+b_6nMUMpIOq&^hZGX`q3)!zLzBvgq@~a-u!TttV5B6PPNF74M#?isU2_pD#?KlE=jo>iAUx?xG>z)VI6o?vyP>EJ3 zS0OA{tfff0l_Kd03`%r9NyzF+B$63~5YZZ^H*0Ehayi@kwh|z=ah*- z1uRH|`BYrZH6oa0bE{bzZhRtAZTHR6!=E6dyNV1J9(v*i5CXtP|JpiuA(ciHp2UML z6jbL?7Dxb+<^-pN;tZ~wRV@q00vT&4dL=NW#8UXhYh~yLi+|F=s^CBbkIGf%!dXhB zG0=J?Rw&9w;4aw*^)6UEDB>9--Y*+KOCbEEJib=W#hFAiRNO$RU!h&G7($hxgAc4poj!5$MsGkUBa_g$y(^U>HIEE zq1;}gX@NyhbIkEooD4pY`}WXL^|QRQ1iQ}i-4>TS2;1|$lLU^JT*ZV$LU4uBL9pB7 zv6a~VCmQ_-Wbia1&t@wG4E;v+9#fT|UV;gT;hfOo#YA*Ur9{ld_r#5KF8^S~4saES zHWdwa)pc%9Qd&46OPnY-2j+*bs+!=%D=NLlwC=T|HrxVMLpLkz{s-*{!rZn7*%b=J z(7|oD#ez6O3xW>?<-~wX)d4XHtoBifo3&b4>jMLUifhS5mT)FXh$c88pd?r%mE3rZ z<*|G#eM%q>kr>516?UCMeTp>zDuSpM!4;$h6$2{qnQ>vnBd=I6lI5y(gGimRWZ}|< zIdRg8c?&Ar!5x5xtca&9DSD49o>+cz^|yr3B|n^FQ<3TM3ZnsL$yF#MfW<_Pk}Xci zr3?s$#4t>r4M2Ad#}8XXKm@^b+N++??6I`J)rm44&U;D;kN_w5<4B6DA$eh?@=nCSZpUcutJ|iDBPEf> zqt;49fs+A+Wn4BN#~TbN08!EPTq+Y#RgY0*b8Nge11icYN)`OP_7Z_QZ>$16hHShw2}Y(!iB(k!**mEAj)M%VQcy=Fd$;~BiXf74ZsJ3G-8g6n(yHq;^BB)f*HZ9bA+C_%FCcx zef29SYoju736F17D7aJ;!#os@hoBZj zfCfi;$`Q8Z6{nmagnc>zgYZ5gw87zSvh9(kqyiGs=zN^Wr|`p?*i&jqKvht3U37r?U|}ZI z5kuAq8x!;`$Q$$JcqJW0ydcs_xTaSNK2W)REfFeMA2tZ4fJ&gmka7ftq8^h&fUA(F ztDQF3&^)mUp~`WoxP5MbKA!km0b7g%F(Iy*Q29peAtWm$TVXY;l?Eb0Cx9%>eCR8P zKt7kSuLiP@U@0Xqtq8*bg`G;QAYPAy3jI8)yI}SX*8@-$2Zc=Oz^DmUv18 zsu4yx6-LDht^iZ3$4gZ_h}za!xob# z%$b1F03c+Jb01q>h4hO^@zNti0s_U5-1k!vPCbgXtK>8hV#k9iu!9AQBZ}@M1m(zz z;m{bsZ1Lg@l9g4W5=sG9LdaXNPbJEylsbBjHWi03LOg1unUt2A(Hl^a!)2u^AFF(E zzKuOpu&$aYN{q@4CMg9#v}BG!yhFjsP+{1Zu7vnboJNfVsMiKyUlG6Y1S9kwP)P(x zs3BCb@D&jQ7xTzIMoPQ|QZaf8ueBWYk1 zF0s#;3s5-g>g<&TR6@pU!i-?53Ks$qam}N8b3RyTjA)c<5C)iD3XKZk&*_z@l!hu? zP*XEtd>p<56cCU-AO;l^Wn`}+F5_Rz3yA4WnTb@HmRn<6i(EVJF#&_nKZK%$7#}~c zj}xUJ^#S1Hy92;LRD5(S&&dyBuN(n^(74QsvqDe`>|;$L$gBhtRaKX0+~dB4 zT+Uiwm3XWmZt$OC2*xl+$$v247nD?y$DbH^9zg%3%Xo-V)Lij;5oPYUjZe}p?)(9p z^zIPzxtw^-0f7`iW{sb}`w&xQgj>o<4M3|>gR0`5Q<4>HR|>%K6v(sK#<(jkLUx~9 zKH;xTET2#;{Cg6MgcFS)JP@^K0D3HQt^`AfD&nD=0Ww$cG}+XMTXO<%57vuHqFhC| zFgE$nMCnw=y%v6XkXI(i3bk|!s$*2dtyVD+1c(?GtGu|TG$U-PE|KJjr4Bl}#$ zIq{~J4OOrr1xF4OexNNzXrohmRTWi;BO8<$QAvd593?NY48|joM+|WZmG)|w`3oxK z)D&9+A`tuy9T|S$8SPmx?2AY{uK!a-T`j&2!Qj7 zWqys^F2z-kF$m>nu{)~nF!C&h;FNeF$W^=sgRe^Def_m{h!#{hoOn`<=t+{1oQjDy zNaI*`UNt23R4q4&!a7PUUNB_*Wj+`MbxJ`A(r)o05+VS)m%miVOM2*vk6!c=a!Cmg zb3sk&PgtW0f$$>N*w$&K^Qn}iZ1Doxb)wOs!~z+>Q_1G70p(*vf)BW$uw+0!R+;o3 zWAVWBKTjeKcu6BRG8Pb4Xa4UO3V_9l`APZVT@oAg9e@2)C<|ePlN2Cz%n3m#1Jw%R z?nwN_Q6Z-lYlaUOWyaV+qnyZ5Rsr2>rmbm#}7H*e4(pKU^yiquTK_hT^(@ z_tY2@&P7$EjlT*i6g!Dr*weIDL|Rr^SJYR8}J$?RfefiKO zTO7$x?*7BZ>@lx)-H(d~{P1}dmWQ8f7YrHxx9V{N|0je-Ih+uhRV+hyUu) zskaM^jdsOqq}BU;4_- zoEs*8Rx@$Ih_snYm-+PeU+Ak>Pd;+6;n9iS=ACEv?<%Vr+gcYaJNVQR_ix9XZ9aZW z$`9Xo^p2qy>ULD8kL-AQjO@O1-24ZNzq0pVo}2!&)Eo0lBmcT^(b4~N|Nm|8UEr%K zuKn@7&k13lBuJhR9ySRN%{kx$0R_e85FQ55iUFThlMvAy!ZUypAI$-5ZyX@f$WSSzpE1|Mw@rP^z+32JXb)CMb%gJ6E&@9e#kvnMBsw*B4z=l8#xk1^S^ z*UYT-oi%IL%&a~0_hlCre7^3HRm<|9Ta&n^{z1+0`-e_U z^u)_<)Z5t6(WXp~2vnj@1@(OL=Pv$mc6i`M@JHSzMCrU$h4A*LK6pDA!W+v+T{X(p zL&d!`J@eXiK48ocWpmyzW%Inj%H~)5E1TcJ*%^?#0p*k{7Y_)Oo_AF+0e7{ghp3TF1fxt7)K;<1j`^A~SXYbR`G!-)cHZ|Y}?HxE@wE|~@BCSDr zFdAi~cdC)iFQm&Lv2;7CV zHKUcygOfYcYn08gfjp#t4|N!{HOg4pK%fbFmDZLNn2$WL7v)N< zi}h8L{-tBMvxs%+bPZ`ALPMcH-Z1T?W)_nw;e9*8T@tkAgk2}=#b8D%K+Q>j&wh|Zv9(nf332|@O zflBjiMb^plC|%=5O=dshbBghI=-DVR?z?#Q5c#Xb{W7GZ?r9It5Pb^I;ylX<7o8KU zP0nQB#yM#T;3-k?T|xbG;M@o!FZK5w4`^pWPS8-dk4EDhUC6lg2P)5%<~hja;{03c zK;wA<4SiswYgQd_Z%9jx;hlS;Y@Vq{en`)9EB1bUamuz4qKpietCOB(u?*Hh`K>w_ za!;I)4QD+q(P_=HDZ7gL({X+-%V0WX#l0h;_g9l zwv0z}&8(}BRVHXtC%sFakKqUQvBABqv~KourFAZ!ul)wqRd#R$&O7Pn-I;|mQ#`7_ zZkEqi8#QKKcGQ?>i*R;J;aZ%dkNh>rk9+K9*3BL;6KCB-d3?|j7s?iPmhWNX-0Do+ zG2@!!#y#G+XJ{kq#QA=~+0Qf-7Y0{t%E5W5V|Z4mBFZdx?<_A)@wsa$BlSbOerE6> z&L}bE)~eD1tk*T#UmWB17tgseGsv@h#`sd(T^IO^%kVpToWJ;Lq>p9VM1S#Orm6no z*+}y+EzVyYHN;=M%9mQ(ih3sCx69=(o{!&A{rtt^ImviF*LWV_FD{roGe{b~uf%zA zY)kS*ouiFmA0*$}l{13{;(e0Pla;V{1rD6qhjYL9UOz7gI?S_H`H6hHr3FcZnP)PMD-M)J*g{fPw^h@si8fao!T4? z?TPblHd2q=&y?0_(49h*lY^hL_x-vm2tDj}_a11C^Oii?wyW4~0>4JwZAH0RmIhsP zLl-q)Zu_M;Psh~7^!V_)m=~w(BK0r>XT*szRR5E1=oikU3uZvSW<$@S3>{-Vn$WRS zp<}1;e5yJvpgmDu+;X13n0H)7Wn>1EP=B+>U+nQsY;U;``hwrhm*6+viL^_NG)G8U zyuUcnH?g*PD0OCHZA+B#9BDicGM>LI+Yfpq+Ul|L;#A1C$Dy>s zw$7)_t&mffD^{l(2bq;>FcFKx0$a)NNt}^-qWo6$uCS*;mZGo)f zS;&fK$javl_?d_P;Df92UAW{|9^+`hV(u_ z`#K%^$9n+ud;QEi{a99LKVW%gIn0}jzHnUVZY z(>n^|UqbawM{!Rpc#KjEGPO=<3jR!$Le`=^}MsJdE1o54w3gZ zvdFH_0FY+y_jfTCChP}_hd0+c*ewgQa z@8sF4aw*SAZ2UyIhbB}1!oi1g_c=cGg#&z?usAefj3N$;jPvwOS*vg+rjYgF zf32)X3|;KJM;2{IKf~WVAXa-!A0G}QtzhH#>Rbbq>v%3*Mw~LPVB z_feQ{?_ZJcIXz!4^3Z=Ubt@%CS>Z#TROB)JF)c7Epxm5W%jb>*D(*c{tIjNQ;GRq; z&SQ+gd5ryV9%Cf#K)`w6M*fM&f3H!e)-)=>Hcz-NwJiNFnfkf)O``*+aPHuj&IpfZ zR%+P^oCOG5C+=4~4L=3?>Dw z+{-ddjLFf)JErsQrO^L$5Bt`oSUWjAoz;}|6L$@InixD&#Q^InC_Xj_w>a~Ik= z>)m$U?+j(W6VU6E&}-Ix3VO}C6YlxNU0sUDEU)AoWyJ>Q(0Ir%*M+g9(|>CZS!1Zj zT7r(zc*vtwuLS?N@2|BH=P+X30vII=j7q-F*tvjbGhX7YbE$*p6zspOEJGbsIAZ6I zhbB3cOVvaAy2k^!%bGstSlIhY@J;@NefZJYi#aClb5r5!p59y0IuKFTuO z&~NHaDs+?cYTnDn`;^WsQ=tP6=z zHfptr)%T&xxWCR*;vCwVi+StTNX!-Rn`z|t#3$-sdaEeQ^)j5aA=8bPn-w4YBmVjG&p9I({GO=NX`)e%PK5 zaVK5t8Jug3{>A=p@`-zY&~7sz^K{5Q4H#qs3$8QhcMqBJo3>TfTOEthfqJ8zU&rqW zu#JO&OBU<^=WnJh2-ROd&cduj`|~aa_K~U)Ug#>$^h95WZxv*DvuG<|^Jy!pB5@un zT!C}@x8_^6|Xcsi}bDSZ3-5l74EcAW&MOb6FJW!FT_jlsM@Z&P| z20qw-G9FN>TsWr_V^k35lLj$f1zk7~)D?%{N%+}^zlY%WxjNq|X)fVQ$ZHk5QGO+T zD%kqNrazWDFhG59yfh$|{@9lv>i!t+?-F{FT6s2>{#YDjVBVy2y}{LrvO6gazu|Wa z+vbf6>_^#|-t*wo;m#P80iR|9%V^|!#vOx&{l?tibMjr>ZI80jIX_hss!LJUUapyp zy)f`My!#UJ0w?H1*Sd$Wbr`Eiui^Y|-m#cPTL->fd8cD>wsPxs=op_jcq7C!?`Noj z-nyTdi9W8iR^q*Qenx*zhhB^4ZTfSw`5x^}dLN#lbJ?uB9QiJB>T3 zwaz-5r$mTn)`@y*G}OuS=~<_EMxA_So#GjF^10r8k2?803(sbK&V$pj=Err3t~CzO zx54%tr~YX>X4SR8pP!8}mcD)#cpaa#b*M{O`(%j&_u%#`9h#L|KQwh;dRZynxzMN6 z;!2&T{f`Yp_**CFnNj*2$NK79`=A$}a31D3yn|xfY{@}%j zQ3rWrJ=+H=!9w-np|jP8o+NMM)iS}?^T<>11IMsD+|kQ>%gLJ?YkVn6LLvProKZg1 ztWTU>eP1lrs=LmvKI@DKB*Koa1>bCk%I9NZxktgjvtEmi)#4J%6x<8rAE4|`!2ESQ z?(8@Mta!KLQOx->?{^032LWr)Z~yMsv7bOUpPP~fomB#Asz3W<=s9J_x=sz#n%C+6 z9`29c&3tAVBL9@HV{u<*+jBMjy5(m+=4V;C{k!KqaJi8;cS^5${r#+YaZguUKJxU$ zcWAv8xT7ePXEX0N;TdbpBCnaplsgosPjF8qN7Z}`s{skale*+E;ZVDB6VJSYdZa?-TTn) z;`z{Yu|}l4pWDveNI(Uj&wL9^*UeTeP)A0 z>ebJq?y7s0QFo%K8)xoX>Mk(q{t|V6iMqkJsQ=4rZ>&1=66YDLhuar&OIJURW>775v>KFgbanjt}ZLFiWa7?`!(<+U_*Dp}gh{f-cIu@{U%g!K(wj zs<_Ku=Qra0dklUD3x3}Qzc@#}6HAldQ{eX$cs+Te0vyyTzringJ(FW#+R5)A@S7yo z;d%cWd6wz?#~w#QHTCt& zYi|ahR{DxiS?(Hyvcky{30e9XvP3`@CuGs*2wd-@?nJ&{Y{)Z2$g>Rc{56a`LC6z? z9PK&KpBq(R=BV0h$Yb($<}Ra6I^{`*JcA+6Al!+^J)6X8t{sQUW61-Vo&|owzQA5V z4|W}dEmPh~EjtR{-LN?yp=~~fOjrk6kruIa=$B3Uy0JKKHMQM`g9!1Hv8L1_yy*k&8iPM*RkFMDDZ)8$};d_ z-Nc4Jw+boh&nYkj3Ps0J_AwX98QRd@6JRYow_A zJ=96RnEP3wGG5V>jL?B^BI8O!#x&p-D&s5PQpT9xWHiT5$T%R3jI5h7ZtX!v2V|^- zk3|3Z*p~I1G~8k5uG9Uh=;G+u#W+_U_lE6!IPZJGfA@VaxI@)&Pm1=&4y>2{0Y4At zorCmqg1p<1`ROanxh>{f<&)<&FVSb?Tq8C)P+<6NY)_8y%3BdZ%rP32)TF?Xw|RFW z{4?(JUY#s_G|-8AIh8{ZOs`QUr3BtI=-$OUtYdQxtVWqKI2Z(53d+Z68GVqXXInz}+?L9GT1G{|3qd$rbL?Zmgp*FF)tUBx}# zKJa8cn0qwPUn7pMFTD!;>nR?}S~*mytBO+UywIU~q*t7y)RB(;j_;{krP!~mhzI7_ z*9>x_55rXP1{^ADVgr%p3lW{;~2WLj#QC zpx*2`kWy>B6ZY=e1l*5^cn-c3x`e#j4&>Atdu-)Ox)@7*Qd<*9a%rHe(Yi11=wG3y~}kKN9!Wk8|E1dd*J>J z@Azb#4DN3G?EX!R>$)EI?qJRs&_GZ96KnixQd!Db#m%+T1XZa^HE__^pW(Ntyvseo zLw-I)-aRbS=nu4!v==(Ij;gckaVIy{5NIoTuh{If#1OUy`vXl_A8sj8tGp=Z?0uP- z_vtuvIJtl0sQUXbCCL1u4ImrmB^vUl!w&i&Bg-KldRb0U7J1@62J@i*1xrEO2)~7N z@a;YDw*=o@Q_gj8{Ua0ga9*eH0We=b*UaDyZiq~!}igpGcVg- ztaEX{)m>gZTm6xUYd}oGajqp4LXU7C;u~z+D##NxwcjC4?RSXxMY|tx&C7_3TH#$= zD(<{9+waS3oud6wejC<>JucWS{=Fee-`f=9C+eAlI{Ei()a&*Ywj<8wIAS_Pothf; zh6Y)Csxu39x_;;lMh);|{Pb?hn2I&A6o2+Cta(IXtf8JzKI+YE@IN1SDrwXS=%3I- zW6Yx-5@+H{EU2s4`whAJRs%R5khcxIn^~t}#^vN%;orXRQT{iTIWno{N zYuvl?pikU4(#zo-EycrfK0+G^I_MF8Tk7kNwSxZ)(V>cC79FboSkK$WwhOmcjTqoW z7vf;p??Ypo1m4Cz^-pviXjAesvF0jtsZCj!8T5h|1^V-HqcP_}`=Rey$92S_a7>@| zE@L$cYN;P=W61GOjem^u(UuRHN89JS-x-^FvtD+y^TBLaZen~?^04@VikFLKtIq4N zeq7j`;E&H#v+iv?f9p{4pef$EbVc9e$C|lVpV$1)X1laVagXO(>_=$+SF@x1FJ`+G zEy}H`moOF~7k#Y7>CcY#zZ~y6^J-C);)ZA*^3~r8}g>$J>?w{BJUXR5(8e)&YluArjYgJfhRZ0Xhj)_oro$#e%u)* z_?k6jSUk(hSnC)!4fn&6H>^{Ckqe$H9QwYxIUcbus56vW_JK8rJGOBAF=;~Wd`<-J zz5F+&>S&46JqLA*ez)T)VXqa~45fTrplKv+w(fJ$PO}^replkX7#lc;-C>ugkMHSUpQ?9?8_E^fn~KClOwreYtXpZAM2 z@aKx~!bjA&=ZQTl4fmOP>)g|o+6>4@TUiO-cpqz5+ogD1sM~|OXQOV<1JR|t_tT6` zKpCQqJErO5*U1~5SnG%oHjw*b#E15LAL@P#`=WOv*0TaXShw-qjDC)F;7j*JdcT;8 z_gs(SczY@M83um1mMZf9QOEa~(N2Sqj=oa!CDN6LXP#{wsGK!%Zx;QxJMP~EZ^k7t zCQ0BvO&=Rm5|tH;!CQ)^@5k=#hkXIav=@DWX=;D&w_xw1V^91=;45XgvSI*nPgSl% zyv>Sr_&W=8mX`kh?DP2^aTvMG8;e+W=sU}A!n2^kd;{M|B&H;ThIOJW74Mpvf1p2` z{!B``vLcWD#G#kTIbkW^XZW*uCn)2{T>d@rdh8j}JN^xQ9e0J!%{(ml+`1=zc0|ET zM{!Rc=19;%(rnH4q}30dg?^uo-)_Ydm8$CPYW4@}Dtt4K%ka&#l(VtaAKG$VSN91Y z$fQqKu(wB@gZ%jWjh06jz8IxEyUB$y4t>3~3h8WHKiYHzVt`%f$J`?lwq%K89_u%K zKGwaL^V{V~B0dEB-wkOK;sY2%YVz;zA8=d@`yyoNoo)f>6!2RQJ1ypa$%sR^K2!L- zz0^^j|3OAz-FSbt8GB~N`#>%s<36;}c*y9AsMu8Cn0|9>M7|Z_Xo;55U{z_*&no)j32yQh7Zsno4^+gwgTZ3qa5ZrprTRJqb z;8Gp8zUcN}=Fk3bjDNEJG@&1)1KTKI>r$s5qV8;S@g#2!`!Vj3>*)UR$haSZ3!jW3&oy==sDE}l6CnKEZUUuZ8l zhe|;k!>{dCM?(8udV2J{mIE(mYe^3H`qY8mF#yjE`B$d|j$YX_&+_`0raYX@`4;YD z<@Y-tE#g0lA`lO|mAVN#SOPsi3ZAuMr)SSP{0&(&HOaG;f3vNU59W$<$w5&HD@gP0ZCU%xf zzVdP3ZO^m`f|i(@Yh>oUuaoaC`y~3Az<5f(z&da57@PY8{9dY3!?+O#j1b#TKhS;6 z*Rfdh_N2oX#Cj>?Z?L|jc!+r}@csB4WnxLBQlz@Dc61WHO|btsH}0Rk0d}2sVgcJ= zbd<0Y#BK!J!L7Fm?5=2&bhJYWF1y+W`{Mg+|LZbZ297(3_N1-3+bHLwUNEOkHQQ!n zFLZL-jQoaeJv)=tE&lqdE*@C`!*+2ao*i7&;;wsZ-cCD*&tXY7zgMU=6t-UnB{;J)42Xsf* z8~F2LELm%`Z%L$gg#&s(U198`!CSX}WwtT<)KQGt?91n{{~Ed_`Wj-KddknZ9J36? zZCz*W2@mw2w){z#1RU3Vdo0boBj)surAfE$Y7@)f;9Dr}M`Ila{c#U$@=^4ybk3*O zrUOqW@LXu=iys41VFN+u(rPdla(UqI#nYd`yed9JOI(50`|!bgJS3L+b-XrLF3tnbie8w^qp7I0}Hahfv$sY9q9fcT}R%`xxKf~ zN9@O-J9?ejK3%a&^skOWkGam0;q|Uq0F2#Sd)S#C!2HeQhTfOJPSOYas6YI!HN%S5 zf+l6H?tg6v@xR>gYq2&Z{I8>!)1(?UjeUJ~?7D;;*klLl;+&cJ>3_LrI6Q85bUgMy zJW3MQ%Yd^PThxQPBNE*fQ_+-vC?C?Y~jSwojfx_ZQ)#Nqq!1 zX9UI^-R4{twvVuXRG=M3MPs~z{_Y2sq8}j5sJBO(Bl-dTiX_9A;FvZw(Zjh?i9=l> z#xcV$eiq}8hBl#JEc!{8U(v06c|7XfuaNDRHFmI9?52+h9KH1$v^VG$fbJh^Z{&UU z``@6wL6>=3_rB!v`{CQE9`+m8P0tq{;5dQ#Z7Q&4A4=1x`>}B&;P2(&8S{3t-MY;$ zU{f3NUr7l#7WlI-KpT;MD*L9I8fW$&%!B5Clm16tp$%mJ;&|h}evs&IOz+(WcKK`H zq+gmmkI4P@_?vm3MP74`$oLzMA6qe(r`<^B_|e4iBm8)r1{!m2=llkJVk_idAo_&v zQ`66*PdyYEX~0PH>3x87ANAS?y7Zcu_U7kt4VSv9`@mh_Y4@c20+-?A1DSXBuKOn4 zvv>83y*wA;I2`H^&%n1sd!T1c&{It*&(?Cc7k!NH(rII+!RP%ZHs)E{6~i}vHe|l? zEOeLHjwQCa+q3UD+abn#F{d}|j)Qh*YFsDodw}J3-4~|+S8mSnv3AkMIlgRrw(Gud z546@c+OE%2dY}z$qi!~ed1^w|1IoD`0Q}4ICnN{fE$VEiUg?e&cD7Ru%4<+U)&t~r z+LNk}4V=ql9dwAfjO;&cMZ5JfHiVUvdT7o$#GLaV9~;7!FSm~|HuON-)jqm!`z>(a zJ2J4K=o{b;x}z(4#vS@i-om#n@{T}W+NQqf_JbF$!*onztm{C0ClQP9CE^e-7mu~k z1gz~QR-HZI3@9Hf%Pz$pP)3Bh0(*@+8l4gN>4%@l9gY9#sydJ$*22rVw`ypoc670Sm%cwy&7xj52?{*Th&3WK0N0kFUl&vKJ%w^SYecgJP|9P_-LpJ>;Ui zRH5rbs=Z%#Or*?|(Fr@pxPL7dX92@{?3w6#p<`(Bl?$HgzoUO&!FovpJJ6=Yr~x-(H<~Zwx4juhT7a|A zm6s-oHcNlMq{?-_cT>yxN^la|q8|Bb(3 zTw!FwccqtqYnciRnYMo#UMBF1^K9aUJSyZVg^c1GwhSfMgg9pMN?!hizIp2OSRZBs7syrK z?fP&0I`fpmJy+Uv($`y$`F(@ zUZ)l3OU%%Dr5yzAgcSG#+u(b*z^-wxfcyjdHpSR4hhNe8ojA^h*t8D(YR;i$#FhPj zI`lrvnXErUzu1rK9mX@-^C3LL_=WlqowCb9=&+@!=JJfTcKX;xpX9vCo#otk%#aMw_V!w&9Uu3jtxu*YanZ+}adXlll+5cBZ~43WV*R?D zcHi}neepSPx#od`PeD(PzX@!jf4KF@ddF?;8xXsqsU|$Lr z_H)_C*}vT`FV0_bdouc!e31ssLwPazXddXTJB9C@HC2g*ZVP_?3Ot%42S;=N^C0k` zAN48dfc^2=z~UjuJ_dMD{?DVm!9|e!Bxn%BaUJ?lgYv>9fwzWugKwbi87G4^%;-JH zy9l_ojEt#z9(iByrvx_w%Qw@!b*(68HfY#iW~j8`nCRE>J@CE-N*!$s-|buA zty4ak8GP|g#CBY+1ikUfF7_kZ2nYD82iCL|CcWTgRh+P;Oe0n)u#fpzPo(XHEvmU? zSxjI!^p-fAeiHBqJdJoW+B`=TXh-UP66@Lk8@Ca>{1{lz2A>?Sw8`G!`UGz<&pD{f zff$5#%uBrFxxcqAg}y!7m%Ob7R_j2=b09bllP8w>IP9>N=H>Slj5{o6IpDoqc_AZU z+SpwBNuW(mQ}``m8)+(NuclzEHSBOF&FC%~QO=n`-D%wLB~hMsfnKj!Cg^LF2KW(j znHL!J=)=t?J9dZAmn-wTcu-Du=zOBz?tmVBiaJ`JpH|fhxl553XNA21eR+ei8d30b zH&iKAE$|zlo4Z=ZOs|5zyg_~A`&k1pCc(D1@E!czWBA+hJ`V3OW_G^E-+a$lNBTbL z__n-py&AwgYI6nf6XOY<@vX&X*r^Fgm}5H7uV{yfg#w-Rqb|zUc`gUiRkUv@#wzOG zO>cE<;d_>4(lD;*^qG#qEQjYsGTuF9h4wCgf0*HX*ZdZaeWZQ_#`vMg3oHyht=S)m zXX+Ac2ETC>ZE(}D0Bm>-$4`Dk_c7`)^@Z`1Y&WwE+Bnh9A17JzkiHtc&c^snJhIRq zInH<P`^lz z-)23jh})_-svaVqti#+>HTSXmIzvVqg*IRAtxJa8(x59T`;_C@SD8N~+8aCpyG%ZA zK_8``GYqzJHEi@{UvJH3>^R3U-+5^7AviOPSi0~x>});GJYZR_2i|?E**Vk$-zzR9 zZdPk1=6{104twhU3(+3uc#Ge`{HGrJkfIJQ^utchLb;4L%)=TR+uH9;EJItAr#+q; zpx-GG5$)wyJMBy}&bp`sUrlHi=KbVI#}@R>U3Y%d1CEmIc#6%ti7Ewc@%Vwu}CvW_E;H56SbI-syfc>gm=s?D3 ztck+5~~ALf^w+mbg~XLzPz zJI;CyJ=4&Ob9XS$tD!z%-?`eD)72=W)W9~_!?dTzVf|D8ZlIpy0nTH|0`|mrH`;PH zbh;M5PoY22zwK}&wKf7L`m|c1Ri9goGc`^?ug$)qrTX8V6@hQ2aHhsFjPI~h)y?PO z%p#*d6YIux-*0CfY;)}+{d}KB$F1$5&(wh?jIFdO(=eWqj&_868ZzO#s$mwH_#GxXD7O5sCw)sYOn)$2~ddhr~*Lp`2KkITzp7Zk+e3fwL{IKm2d%S67jIxXUG7Z1=x)a5B+nlTMyf3y5F>Zxz z--0&bI<3%ynoxsdFwAGJ( ztU7OQFOd4N=De+4L;tMj9MO4eyFA8=@}XONpNcVpJSxuN?Ws6_mNM`=KFydvvMiQ? z7-O_!l85Dzp1iXU3H?C74JQZtCFgj=X$XF&qJ4NS4f7&jjq;_|nU7^wMEEzcjg9x+ z^ezQFa&9X4NB=K{y-7Hh^r;OG8i>%?o#(rez<0n0|6K!BJ+KKHIgbq(eJ7qYNTRBHeLpxMzejY!uS0zKeclh(Bwcv1!%c7q`-#45*)T5KInMWYkhYrXE`@FAnyw=CeRQR8j zpgRy>T=m+}d#j#>yqPb2H}L!O?yJ(0I8Wm^l*ls%MSrCYDui4GnW;i9Qy$EN*@rsY zgJUgy6UvSL8gI&|+fAHxXT=!3;P%;)!d&M0>7AX`lXKHbJk*h>Ubb_UM|xA`gfc! z;KaAMsDo=9T;FhEZKK(l?7^CX@QD{-k9gS4L!K(=4?YI;TLFF8)I1#P5;*6x>Oybb zF~`*QLfDcNtQ~#csK#pUx~F_YU1f`)FWhgyS_9rfl z?pITeke_uIdN);omOk(kj^S@G4VY$+SeAMCH{db7_+`q8{6rI?CImS4m};EOk77A)VJ={+)lY@ zD@*5f@lgss9BZ#W%(IA0zDZAPZvbzlz=!Ko0;>zB3Z51j<#x6~Nf&OjkSD7n_wY>Q zG27aYvPNWN9?lf9Ui+xqD3AGxMdm#3rYl6g`H!;Q*k%QyV#5|*rXKSWaFHYl|iOWH6^5`XxXwxBr$N7)4e)cQ! zgSDfb)F}`+xV%p~<|i6*u-`eZ^llm{H8Px%Lox4nhKGR_>1qfWPw1j<`U@ zFn@L)_{a89mn`?}(X&AF%>Wuq@N@SXxO1}1v~uBPi zf#LX@Wo=x5c{R>cfxHuD!`GUHvmj`TH>^_wc;Dtm8pfx#7<@~ag}-OR4qY9oOo+i* zzdMk>5Z}Y@!1u5Z`IfXVR%6P_rbZrmSdBPTq7G<9z6Q>FKZpIKkN$@^CGd!PPTAi; z(}DMy7-!1yJTNoz5ZA6#)VS6rjEQk0A`gwjSd@Xi=sY~fIwB9na?Hg%x(RCrZ5#Nv z*1DE|4_RB6;z(#s!{2{P!+aCxHSUA0)h>Zi}4-mXYkoRb;itj2;=t)YRpE;yaV5%QeKqV zr#_fxz^o8@kN}?+XM3W(%{DFkTrb1?F6mK2@06Fmx|rvG(5GTM`S^EQzhDL1wLCdM zU!pU8w2?kM+M4b*(m##2reDxc_lM_ttm)$n`j5w1)2|ft<;t#6*7T`@z75`{HGPIr ze#~%d`YfaT#7nH{*BI%qNOE0g)LSv$N`Jjk{^Jt=Hyh~_G%NjWMmaA?IOG}W=?*LX zLZh5i)tc@z_`GM-8^7uQm7_ zE8+Y@BmKP*R{9M_IeX8urax@(pL~HeJz(%TL29qZjB=Js?f!(3t_-l2^NhjIE~&k? z8Rg?H7>hnv8T@2P?XuG-KLTgkh3fx4qx@!x&)1A{-jv$?pixe$#OGUPx>WulqkR8B zYrXFp>2oE0d*7(HRBD&M80Alp>TNR8%OyNNG0LfTS?m2w&^IU_Nd4uwQOb{5!^2>s2FlyK$=|S3e_tiqv0Rk-EK7hFHrPV9+m@aElZ4ZHiaI zKgmeHSkliSM)`9kxy}{k64^#MjPo35)N*I&nzkZ0)wA56FSRhoU$@5 zGH8B75IV0lZF=s`FgAU%QFpGy)0IXYl~;7uA;y5IM*0U*AD(6K+936@YmD?Z$rfB^ zl#?sz;`Ii-Cbj*|f*xmNNo{$Xkv?BaUuej6M#651QT`oL`f4M6bC*sCOpANQRE+6A z9o~7KSLb;6up!&yUF{>Vd(5a~RH7BrCk$RcmGt@+|4Nf)GZT)-ggWkvNKB#<)J}7hoeGs}R^wgpg|Nqd@a-~a0YlOVIj@ICI4YLpE>AH?K zgy^WAuIp%n(xsz%I&>8NdRvH&>gmu?(YJA4h=He`zC+O0DE`hqrl;>V$~n{NU+U>Q zMS6oWYNEBACWC&`xn_EUkjsU0Svh~ezKW$C5hEq|ym+)V9q}PZuTjz^|8*kP-)NgA zjI`2EHOj}njHUc%jC5}&pE^I=jP%8lzfxt?`%Z?noE=8Jk4rYC&PcyilItx|PMd-; z!h*9tJ^+VKo1){Xj}PTa*Z82PV|)rZ)-Zehx>H7FkqjZfAdU}wQD62FXUZs5<^yC;ttCK4_$0Ew#&8RWE<8)V`w~Oa~5<4=`Dz zw<&Wa{kdMG*C=PCcKO6;$5m4MwixN@h^Y$o*H;+j%$4+NwZTv7SS$T&20xQ7w5A_2 z(zVWhs^jn%qx{WM`Ar7>1tSysMq(g%DF#^{f`E7e-vwb)#=l2nv8v*2Jb*8&I>~99@n}5 zyZUp>Cw?OE(+@w9`02lc^)+Kn-mHgvQA{hq9+8>GeGoy%G-bWmW9I(y z&|Y}L9)_OhY{%}N_{LohdR@KHoB|E;;r@aHSZq6;89e@njxGGneI=%ShG+VI+_!ds zKNV-3HtT6Mnma9k7@YO-Cyo`uOX+y?vH_y$G9h&5=zsfZ&|c5NG}9C~(|a%g+La>(3Y z-?l!do!_s7;)C_N@-*~o#po}he@-78P_J|ZFM_T#MYv8ot&mqf>^|!bG0>5kU zL){zKFRsiRhcl!cN^xqWQk-+#d3-k3^Nu2BH4Aa0$B{qPcYIAFVosDPN_YDN1zfHt1&)Vuvyus@RKvU5zU)z_)p#oZ{na{AW5Y z8;AIr42R?RTIBs0Yi%h?jGhmB_-4Li!Pw%;ue$Q>J#Ed$`*l*30j+Bh)7pqRS_bas zOT*u|7Pz=M*p*KSTJtex^?9@paltyFz~BOPK-u?zLA9zB|GZxp2K-*867fx+f%Zb* zXKOwO27kCxiT^N7$6$vGXA!762G>CTJ!*6-<3&lov0q#<^IUkg<1&+u^0uIUla}k5 zq$39C3pKmHNDJ)c_`7CgU|ZDQ;#2*hYpW z-aTJ9kME9G0*v=6z*%5f&>hA>NBLUT90LZkfk95%#KKhUlVaZlvGO_wrRQe`f4yjB zZSA7*wc6Q^UAb8QXABF^Su^iEre3Bb$FJB1*?HC#Vz;s>KkH^+WBn6P#1@;jF0}4y z)NR&BEV-VYnh&)Sy3|Xej=^fdOp{VjXJkdm}CIOZ+~9J1em#T9bS@E$}X| z;aV{I^cwQe0hv!hW`2)Fnb}{cBV&BW*0iGDLdaZ_c3EKs+IKc&&M{$Uyu~@Jn)vKR`i-4wgR1@LAE|@<+4!K(pi8c9#D1!Rv}=qsVRLq- z1)4xxf-)J~>;W#9K|gaCe-Awm#pM`uJQSBVfhY43OYZmW)AgrKDL6Nf2yFJn?=2R3 z_Vn;TET46KYETv{ffzmyGW6>~#Ml{Fwqt*jI&}oN4FGPxg4~Vq{%jR-1HVLjUjg2K zh2Lyj*6W4rrXH~$m44mdqDN6*cXaAe1>`sRr#)dGVVkt!H?f%bS!^+FQK-y)=t6^1 zIXIwx)=>Q3uRFG|?a6!nljX&OeQVmuANvO7`1PWDYLx_Cj#^;mf*ilb@Bb@u9RCO8 zc;||Mdc2|dXOJToc$@v{0Qf%-yiz8%%{}PP)R8&RTNh;H-ZsaE7~E5}bx8aQ#K_K1 zfo<1d+u0to5d)8S`RXOUPuF~gw%7sv-jkLtY&*W22y8X0rf8p#j7Akg(Sz9f7RvqAK}00+wm{#^8U1d zurKe83eXl$gAByIYJ|TSV@SjExYIQXn3rCe8HCL3Rk**k0KcEdeXg{L4*k?qB}A%U0f3$~@fx2MfKi28^R+m&t1vCEA*IfgI6_;n7( zuS#S5GTV6s+Zp|an)f*O<4Rp|#nl+Q&HR7B z*lp%v8}oaIwXQ=Po7$8$7Y5G0tov&`7rYccSTkZAH27cGPyMI-uVW}j_rcul^cgEN z857TVMm=7Y&zgvR(&L%Ld-1G)D=^r=Rq$!zia9QEC2bbuChk4GuZJJo+xrZ|r}v^= zSf<&I;mZ5++F3a7mvak}$`Jpf0v4?<5Ac>3G+ecX*mUJbir^WX2fZVDiAd?rrcP%((^qc-lqbf5W%l zcQP{=hj>~{1Zqm7^!7`_erZBi`_<4E_u@a-^x!{>yRMUOtdD)^BRUe1K;+mSQ}K2A}jpFfMzd)#$Pp;1BaWQa5bc z0DQYZ|BG=zLWgm$+EnOhj*7b@-}lsF|93vmN<9IctsTY~66}Yk`m+&7894j~{BP7# zmEx@fKjo)9X@NITKd{4Ge{3K{9nu=*+%VLwK0Y+mnaHrUM{rmEcX`Ht^(bppIt{?hTB>Gf;^eGKzCn$QKY8xJSv#w)H zBJ^Igy^@T0jYQs?6!;y|MOqfqlB@UQc_nyaThqtnIzQf*D{YelA4Wyil?;rmW1C_A zFW#k|68c@PBkqGq0HZkSp2n!Iit@c%JZKSC_w%6uLVyZ!~}kf^3>lKZK^u_a5i~P z#~H*MPE;3BPub_$$M&J^HKjDW75$5A7WIzEy5~?vy7Ge;qf~D&2Q+@1A(5^;(D|(J zIU?je&WcD^?(ce!=Te-Di*uu^%`$RvW<+{KR~e15c-Feg$mO$gUuPNoHnPmvzeg_XkR*eM8!O`owu*;i5&bm$*+D`o#5;LfFs} z^bgugj5UcK+E%(Jlx% zN?m~}^1QX7ID_%NM?2<=zC3nxU^~(W!2XjTmc0f)Jg;OJ?D=V&8+`(P5y$^CST{TU zli1=?$i?~mDcG_Cj5&KS7A=5&{SvWP+V2^EKe&1pY|1I;@ahztq4I%aSQ+h0YT$;` zjlob zw?iH?eNIq(XT~w7+{A3q35<1)1nA13>hx!{x|<9PP3-35nfZT>GAofU3N-wU_c$}@ zI|22Xthza%;hc)Lo3^qPZGd>m6=S(JfV|_;Mu~_g)NOJ?Yd!i2?R1x2PH1%_jpHln zRzo*Z)TCC#nc^Gtq}EyZO)Lu@5052%1ry79^cAkB630A8Vp$Y$^BOqvITFv%u?d^e zz6E$@J==jH>s|X@CBc+?^VZnnB*^6k?`$u|+EeZVwACBX{}}K}y&j8LKYmwS2>p+C zMsK{pM?D`P^q6{nff@xrD@N!!W4wudR9$SbXPZ{1)*1c?_Sa7T3U~Tmn`Mm4S7E%J ziE(!Z#^31}m!~2ATlaN|(W3&Ngw{%dPeQBD#OIOl_-qZqhq{Kjy@zW(#AvN!aM`}s zF;*KG@%cA+PQ^3VcXm6b#+4$C_diqDn$cfMfz3F?hVDVk{ucc0`KV+51$d@i_!N4? zwJ5|q&et$+J&7}j(lC}Go^h~xUgJQzRcVEm+g z;P~mm_-Q_K{PbY_G@tz#FFhDP&1VJA8!>)*l&ESmjpL^WB0DE zK6Cusi19PD433{s7%M~5IDT%F(l~y4Fn*e4as1qf@iR0Z$4?K&Pm_k@rw8Mw`ONXt zgYnaR=J>f0<7a3Y96xbsg(Z#S=SC@w<7X7c%Fw(VKQ~Hg96zHlR)*4X{M;y|as2dP z{4{yv__-0|XJ|f-pHUbqL(@2ZZj{nEetIx|nq_hP+=%frG#|%L55`ZEhU2FPzF*WAb6^t*h16+y5E8-M15Kz|dLhBIh9UppT((cQ0|=`Z_aMkMC2( zxIH~8aQiPYUqV_s(o$Y??A(C$&@A+wLi~n5R>QGv$%&c4hki3N7`@LCKumZU*A6(Q z4G?2mbnAZffdLrrIKFZ1z%x0vxE*z;O>QXm)3+RcL0~%S;hr$paKgm|a!hU6?tRgP zeLb9WzvbbtFi&jn*b2M=G|To@=ffz{l8yd4GAP_nZLck>&ZA zQ*zCccRX@^>5IMiHVS7$5DOEBqxjB2;FNeCeDH+o;O>qs3jB~$z)-swz9z;%oZTY6 z@zQW#V;1(oEI(OwC-TQE@rExvsf{!7dSVy$jbq_?irp_I7>cj1bT40C|Q zcV<)(k3k>ItfHJ;HzPLwiC@KH&9g17d`Rav-TFQ(?`s}ZeNP*FjufSC+e+@w4z6AY ztd@U_y*T{l_v8h*_mSV0pAvZK-<5Y9u-^N}`V`2Xmp!v;Aj`v92HS9_AM0Uxw;JW~ zu0FlIkh|)nvJz1a%lpak?&Zwxr5v6ea0ZwV3lo=){@z1LICCg*f?g*5q%jy?1kEYN8@@0KPrA4_;K#o@*3uv&}+;QYIsLDzpEUXbWI(;FKf$eNC-5d z%qHyrbG?Xkd^XSM!dV>Gr6_|6DUWt>=}^k#z&hspA9a`O9i-{{HqVf2zL4w8qxgQt zIA@XPUYx<**KA*&r{A$Y_K*slr>?MlE7mKA9Pky-pe%grdHi{_GuxPJQVu`Q2~`3o zjCZ8v-fq)Nk3ETf49`sHEc+kZU2fwY25+K`*T;%`8qeU~QuCaX(C@ES0VmP#Ux*Bp z8sEympWnrPxZr3<>{{rIxo^_2NB_P`(7!@H6FmR9t78l2CL%3jVBk-9W;uASQ6AFw zQ{Y31@{WGg5t|oM-YZ?@)hNTAw0(LxW2cC+e`}QG=XkJKw@aaArG=DL6cJbAqY>pB(&Ma%c#Mh5Q%W4}f$`U-p3>9Vlq^qoQWq5x}StI^xm2rJ&Ss#C= ztE{#JQC3-3Sq)0TSW8)s&#h%GH_8&c_=k3tbw{EoYfV>Kh=0`AK09Un*jmwiAB8{idnAp=&piAjV2sMf zPZ56N6>aZOB?dpK_!)(tbo`9PkD^2=3T7m@UkbnRqs+!{{3wg?dlA<0E&s?1|B(;= zBTu3K%=czmWbl9YzsThaZ@atr{`>{M+#M*tdf&A_yy^LZyGD=x>03d!d&|W|m;dD{ zr73HIz-WF5QX5159&KW2|F#jZ5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k5wH=k z5wH=k5wH=k5wH=k5%?D&(4d#o|Me%Y_!pIE7h@w}BVZ$7BVZ$7BVZ$7BVZ$7BVZ$7 zBVZ$7BVZ$7BVZ$7BVZ$7BVZ$7BVZ$7BVZ$7BVZ$7BVZ$7BVZ$7BM=6G4*X;Cu=T3t zZP~-t=e8}@=MxWDpNsOX&%+m4pWj+@BQSf4XiS)Xq#wLbfvus&ZS z(ciz^`u=N4p1+n`-{&v1K3l-S!`!vj_X{O{qVBc6-}9LD`8FxP`$yLId+xSACrjlm zl=8n(W~Cp#+4}rf3IBnQTi-t^wfE&qtnb}Ydpdt$eeaR@J9(e={jE}a{87SV$TBPa zYm$D*_|KI1^GW6ZRFda9iGIJNZw=COy3`+*O8O8h$^RV*&z(~JIa2-SN$vArQvIJk zWyRy5qz~hy{ObKy`t?$OTrJ^qQYwFq)PF9KI-j&)rOX6>_q)!7Syi26^eo^A5MB@KP5t#NTC7|M5!rot5gldc9S?Z4!PDNcQERB=2dd{U=FyPm`XnlklA-@q3TdA1{~m zp+mB_k4tzxDB&Hs*ec&`lDxAdJRJ{N=^vKlzft1XCzW@Z)E==?{W~RmZ&%VZ}f3 z$JXa(B!1>e_WT`5Kj%vNcR<4bS_!WKQu{wC+4B(+Ki`+^r+SZ--&u>S&-0|`Sc(2Q zslH*-`xBCVc}~**>mRY!_oURGcT4u9|D#s=pG)|Tmg-+9wb!c>{c`F3E{VTn3Eu>% z{uPow-6gf}T8aPF())=Lzmp{WE|m1|0ja*DlK%WcYL8naeaV-e?~}?uSJLMcN!~}L z{;vGHwLKn`{Kc_S{wRsQT%unk@%INw|NRnv3#9(?kwia4s&By4R({=*yiZH~+$r^! z=Oq1<=O_Q$o_`_P%Nhy4>5@Kgl-h5V)P5OKdkmM_YrfuaW9|S?Yh^m)^f9>Cb^xR((7n>F*+Gyxkz#lcyy4c1ZkRAld%| zQvIcpJ!z2M7fJfRO2V&3!sA|v-=9hR{cr0Zw!Ah1HUc&RHUc&RHUixd*f04H8zq16 zcalHlll-X*CI9UQl7CVs`KNwqelb~^pQJ9f`eS~{|9M05*WQrklMhSvPnP_z8B%?- zr1$?Rm3Ks{?^Egh7>VC05*}wH`X?m*{zLMgFO>Z44<&!FM8dy&i~i51$m^H#`uBEe zeW$PekB24s8n%@^l<^NXFZ#lpGEbj-&>u2(Q zoSeTzS}(ax(qEZgUJsYw%g@h9{a=3H*YocsyuT~yvz%Yv?~&KPUy$@?@H(q~_)6*@ z^8Rj-)L!!XuFQ|TUi5{eU;8#&>zDJtD$Tz;r2O*!lDr=)mnZKh%lp$Zy}Vv6zn7oo z^*sx~hyO~_&j}Jfa`}%)qpQD%>O^TzAx{8%lq4X?T3Hc{q1;3 zUxrKeS>A6sB>7KO65ieLkP`mf$9R$`wRf82Kgj!`^8WU>-9N9E`lq~qF7MB;m-O#B z$v)*v`Y6Z8^%b8Y#|PXl*+U7=ZjZMwvi28w|M{w?t?$Q4?fqlPpMOf~k2g#C$4mNC zAk{DLC(HZC^8T{CpDf20$ngk$?bplkWB+VC!fTSg$ng$xd_-UI3v&FK9M9L+e&17l z_$RW0$oumvrS|%NJswq#zga5zKg*>4*;l+!U-7;#OZ~sE_+L4`Om3g|rS%&*KKAEQ z|CIN8j<(H-Xy1wF5kmEP{iudR%zC(^DIVIsI z$A4^)?1LN+BFB656(7=9Jct}mBgf;ENctql@5u2zay-zUNU-39{JWrG4|9so{ zll!Fg4Ou_?j6Yvy<-f1^_HP^iA;(wC@$7QEyBx25OzIzXl7A@2!^`pRay+~oFE7U@ z%kkrKe0or_A2%$v;wQ)N_7$%y$4@IOtmVn^)SL3H@8x(JIi64c{y~oSy-Biff0XQMu-(&uN`>%_Kav5a%*+#%dz(&AEz(&AEz(&AEz(&AEz(&AE;9rhFTa43E z=E{YuRxi&fSeSRm!XnEH?RNS3hDY(E&zn~~@DNrn0xHxZ>?`{h;B6n?g`n&}z zmn~kssyqD$5`EFaRXIHpqlQrzTKOqJGvzEVTDUx~sC(g{e|lUPdf(EOtDqNQ#8teP zgrQ%(wC5b-yVHj&*G&6(f|Y*tQc7UH?f!e$L@T|JH@_gyw=^g3jyt;3KYnSC^hFDo zEbG={>6e9}zo#f~dH144%B@#~pN>$bf@nXqWhIR~QX_ z^XFFjyP*F)Q^WrJ!b)$NH8W4n!o>@hgfLbv(HFsT_Ey19Ypmrj_O0wR(a5YyVySkwRbHd)rDC99my|}OSANw4eRon(Q?o>0ly{HG|HTq3;_=p6 zYxyDc#lW%8xh2h%|?M4!L9s0hAZ&T3y6 z=K&hDW|0-o!aKnQWX)T-Fn>uHr@$YUzDIJUG(7$CaK0xMx;!jBu@~yz?SGGlrC;15 zeMMOMl|9l|_DG+zJTDBSHR0%&_gK7A8;-sxzuP!u3cfciJ=#kixQq<-Vd)q5NZ$~a zKCCK;8r};_zqH2;jbZ8Y3#4Jx6jy2PiGJzou>O2oSb9uhio$1T4@+OvGed>p`%6y( zXkq9JeamxJF3-zfC_7h>IyMabsv=*gi`R(_|40r?zj&d=h==4z4NJeY#|-IV=~piA zsr-w>(&zV>VNzK7cKx2)oqma! z0)XDPw7W^asXKiRM_<$sHeYUc`XvjOV3nhb1;5Rqd!ip7*4yVK_t-E}t{v4!E-SK4}@U%7m-FI*o>UfkWD zi#5JGWl8nt)b8|muk0m5dUyJjOM9WexI6vby=9oxoqlD0FBN#Z)8E}&hOF-Ng?YUQ zJU0ye-MwVEsXP5j_QoFIS8}`4-`!h=WNE&zWC<<*>iktX%kI20jM>eU=!HAqOO87v z`uw7Wcl1!Su0VHN^=(ywSfS}*_M#{e;pu%#?_7o+FJ>DSMb#wwmCLb0ba9Rk%P0Cw yz(TDkF+I{7oUx{mJWosV3Vg_jE{EVN6xj-iUQBUJ&cgup)3Eed=`ST7i($ISQ4jS-%8;yEa8fO;2)=aH>y~s=dx@*rW zZlzxHhm%z3tln<`s=Y>gR$66bm6clKknwS4-sRd0?VpK8Ei&t=iAH;&=@KD`KP$Dy z>{jXto&WBi)R(8t#2cEvWFoXutG#O~)>c&Jue@eyLGd+31;vH=<&!nV(*I37(x24g zyz-KQJe9!j^6RGZ-~avJwG+mVpLp%~|1}b!JDNx4$4$4~rtWng8sk5E^e4ZG{r<(Z zGbcV$+*JO-<*1YXSfXez*QXo!kZ#~(x`7Mx`tyYTT@RqEc4qbptQx2EMu*_&2+Oi+b#;zmInV-_;Ggp&NK(H}GF}1An<2_;0#_zts&~gsZE5 zwR8h-?FRlY;9ZUTr`?oyBDh_(+q)b1fNtP}yMZTk10UB7d{Q@XQU6`hIj0-={BGbG z-N5ha2JY(yUeXPGRX6Z;-M}|=1K->YTq)<*{+|Oa>*D$PHJrNiqqH4`yvSc}A2GB} z^`r^Ap+EpGwS&C;NiyC{MW=Q8%gQP$SelzvP+U-{va)j5IHp z%Sy@%RYhfaaqh}e(!7#Ym1LkTSCPvtU8|Or z=jVf)>P7j*S-HMKdBOh$VP(mxBKbsbA>3#l%!ZvO*g%0Cxs62t~}RQuFFUV%PLCBD3VShZyfH#}|m<7LZr8)997=mHJvpojf69V^-G~nJ4_%gG6b_o2-u}1l-5csb~ z81UK<_?Bx7`2G<1Qx^Rp@aIPv<<-p2^sgFcz&#;wk4cX=1b%$DQ9e5aK0zi4e^nvy zS1kHN;4hf;><@we@CpM@a|ryOX1mJUnf|iTMtM&Nyu@R`vqRvw#v5>72zINPc0?!kJ%%3L&-fH^$`_0sn!@6%9d1kPWV8 z8KW)ZZmlKdwc7?CY%3pSgWK(6oDDwIR^DTSTT@zIC)(hq3edI2+u-KZ)$pk{xJN^b z|9EZi1RFfv1~*lbe!Iv9H&wQV-)V!7vf;_L!7Y;@uYET7Rkre_Hn^!`^xHKyc%rR* zl?`sHa{ad222Zw?-)e)Ks!+e(ZiCC3%lfOe!A%vfU)9;*rb*E7MjPBTIU2q!rwAY7 zp3(PuuB@2msa#u{Kh1Mx?if$WGR$=4G|%`oSB{^$CPLkaOOl`GsVwp2VzMjqJuI3_ zJ<9+_sAUDkd09E7rR61SvU2kB%JVBK@+&k>mea-gMV_TO75N_Xjft`docU|=bJaa# zb<$}K6*k{2_e5M0s& z8qTluRIDn^FE7krOFt?+V{hQU5$fi-2Qb#eJ6bi4PNfgBLV9PEvPg^&CvYiVVqsRP zZ*4`E_Rq2^%hzTV6K-gK*BP8!f+Gg6b78Zc$)&I=tHM{X3}Ua$gHyCMZu$M{o|*T0 zRu)vy>0BQyDk|~7hN6P}yfLt9X+?h7s{G&nZ_~UXTw7^9`|`tEF#|W?W`T zNm0c(&+7d03W`F_nuv(oDqy(~=Am;pr`|H#bI-z3&BJly#@!ncVM3=xcsyf$V?1NW z`tplPJzf7Tl68cq(pLcg8CVdHlWMD_n%QVq6^&|Ef#Ovwm*$s`^BB;=QhIDr>?v60 z8C&S7fH?)r7<`SrRIuw&>2_C1yQ_-3ZTU9yl`asX4Wv1Zq+F0_ff!qXL|oE?j857Bg=UZs zIz2(#@h}g@j?G(zHtYItw!E^mg{Po+SqW1~Pn0egp($G?7?&00EbkhjM`J7~M1w6u zI=>FaBEeY1LbMx<#(<+I%pnq-<=v1elAy<|eYk|^ulzHb$X`=gp5tNlxl+^J-iF3` zb5dvd`kFY6*=ER^p*uT~uTdjOHge5brYBZ`u*RsiC^a+vk~Yn`Y?MHte0qoqrIs;4 zE>p`+Q+w44sj4Mz{+zomY0l$Wj18*vVYN&l0I#=gC`JoU@YB zMMZ0M`z6x8SgZ{ zGHGC}xGbK`yB2kD1lH)Wloz6x%JWwjl&q=<#c@jqj!uMFoE04U#bt2Z-hm^3wHW$2 zx6ipH)52iVQC_fod49RaC~z5MsU66~-g{CrZd%-d%0R}8RV!(z;&MHk-GL}CzcPn` z?ff^}0CvF`&$9B8l^x?9Az`d6J(06aE2!=BS@a^^F z@2c)NC?2O7R)Oil@iFAqE>!l_qAct}DbT!Vmn0D(be#lxBa{|@rQJAj>x}^w<)SV( zW-{pw2{M;&Svv9_+OCe1hssQ7p?12A!D86**I3laVx}|kD|1*|mba6yg#y{tD@mrc zP$inrzIYzvS)Eg~is@~vEH7nGK`{jiEE8g`!5J!9k*_K)EH1gPm}QEw522UntW(CYnfSVwNy$>UaJP#QCL-OEc8twUd8IpT!tCN4f0t1>!}sWreaoPda%S8 z8|x#j03+13lc!xfb=sr}jAeO6K8i~gqPnP_XT};;uSLvtq(|0~7Ks&=#=eW8$5)zF zLPS`0I4&8-j`_GWG`=80C=R#^^#hdUl^JVQi(ffK*b1%GE+zjOaks81!I3JzX7Q@R zg2lIG&DZ^3Bp!*;(Q7JYd3cS?lw5VQp#rr=GZvPj4Yg$Jg(*v^9FGi$timptDVUY4Th2?)+Id-jp?Gww?}`@YI-5S*vq2ONy`nM1hzh zBFMSR%S*7lr6o)iV-FHLpCv8jtitJ5D{ zM>Cme(k>yQ3bTq?4VS7}_!j5~Lsc5e!Cc*H%j8KkdcQc6rMsaIES+h$kfFnBwr@rF z3?4y2=l~f(H9f)f($s9iR5`N97G*O=tF_dOoAWHc$QUz25ryK+Eh(3kniaM5AhK4V z(6n3?M01L|p+)nG5L_V#an#OD&Z!ev9tro?D%s>9^iNP7qxGlU03(ERHLp(T*0 zw4qhfS^TG>d~BfZnXGK>2HHa~(llce&qN^HMXrh|K-vnF&>8`3Y<2+!Ow zm*(sTpB9u3KY9#+H61>F7hY{U?+5@}=pvN%IkRMA#8mlT`f#_`Pc!9($f?VBC{27__AR+bdQVLhp|A?~boEUorcykpF@kyvXP!%)Y>)R-MR zKv^Z_*5*pq(zPtl#qhIb5i)UY!>)P4ZjmfhFO@p2R6U$WSx!91+R=zm(kHDE44tZf z3XDm?+?Ii0v0Sj6V>2CUMe|$p!Dav@EKZa$E5B&`7`%-NqWrQLGpvbKE|g8};W~q> z_K-VcO=ZJZ#4FOlUUQ*#<^6=fkqC;&ucd1%^YQih9ibM;+E7?6`wSiftD&nb*vgz0 zCFPXH5n5SLZ2i;@w?Ls6rDWskCC-NFNp>8E%#hI-gDjf>n2%t z$l#tK1{{pC$7}Q;UouJt!5uDP1SYwnQu$Vwt}4%4R#Y&pV%p+qh0{u=b z({7n|`?S<)3Te3lYx!KmceB|@+48FFhX zAdlvh={#L5y$HS99&~B0J4^@zW-bA5Y~N$n>%I0JW*tq+%a_%om`Ni95u!!3>)E9d z?l2FQ84jsxOcgT{Xlg0qBsrX9n>-Qsq@tLB3G40rENc<|?^rlJ2B9;q#%8?&ZZ_0pA0PJ)Co)TV0F zk@XUA73HuaxRPH+K*@-;%G~UTg{HdxfB&ur!L=rmt47KX73YdE0VKm+t|%APtwZMHVvoy*{Jwty_FOo_gVf zjq!tj-+a&Ve}u1i=*P={U4FKB`n2;4pWlAX!)gB6Q_BAM#s0m||8?*2dtSXg<#hkk zcRlyu%tzn*#;_N*H}rbnanHs9FF$ncsDt0^eOu+dFPDG$)BmdaQP00UReAcU0|yG8 z`smv?z5K7=K69YoTRVG?Dj9QpY{RC?d4H>KT=JLd!0L=!Z`i)_x7XGky4uzFyY+Xy zayGL0w>SBJ^xmzxZ}eQAlob6?#4oR&nlN?PO{9i|`SUv9bS2sK~ zru@;Jt*<;gf7y__(wh0N?z*+;cY|9WeS1{T9~^mTQr~l>wJV}x4?H*6T{Pv21^1<2 zz4xWYi9hc>EM;E9`?oB7Wo7~RdZTUR-^460@i=O*z zSK#F{Ys!A>80xxS?r6*tzGWy?$!{O&Hqr-3>qxhgzC>C_dYJSAsSJwuHl?PL?zx@w zgrqOssnlDfi|*kZ5(D(wz5FKK{|%*{BVClE)F-4%a+R9MAikKVR1xX9eCo=e`WROZ znS~VrC;g}t+@w#JgO9^-FI9kpv~oQ(k?yIY3~Am*=-?3Ao!@~D(mc{_q?M#~q-#iD zBHcuKm~;#2N2J?G+eo*Q_U5o!EvbjJj&vgFi=^qK`$?CO##MuZ)I++Rw3+lZ(&siS zH40(7^AV-8NzajPBi-{|-jg=_p`XKT=e8-8N&3n6p@FpZM@s#Pw2ict^iVyxIqbIS zMcN~6-3=bnb3cZ!q}zW2Z~8DUjY=&b-9}nTdWy7`wDhO+k95<|X^%s2m7GmnK)SsN zzL0u1&ebk7D}Iaesz#JaC0$XzzF>=NIM7+O~!8Oy15OJG-wp zz4!2_A3C2wKBUf6p0{{!ot+cd0uyGPe-v0Y&z~q~wKIl%CC_1CnWP%G2i%^=oZG^F z*z*~8W$$=TdSBr0{^`H|uCFaUN3nC1pN(v**?q?^=skSAl>UCt$K5}Sc&2xRYm=jQ z{CHUT?w{T}@?U?S%~;K*=-+r0bD>fc6Fpeed$`xC_eAd>_I)NQ!nve(ymygN@y}Az z`L|90l}^=B)E~2$F*DlV>R8fycy>FYi0!?9(D%uxrv^M7{lnO2;v!tHK@4R~r0;+5 zm%skaph5%69gSFU__%+3^zEk z@3e4OR4f9|Iq($Sg`VJdm;B7^%*_aAQD?vd_N>9{bZCmc8`=6=v}JZloAgoYFImET z|5|ts!|F@>I1xPWQ{RJLTSQ+&$Np(^?BDMgYCS?Czfmq^I}5#H)a#HnL(-hJ?Om5q ziSTvGI=!~6!Iy0CjnDqN{duX&{^UVd9eB>=pkKnsEa+Q$c@Z1~9_1eBj&{emW8H(? zaqhwHA?~5>VeTv3!_y;O)goUZ5^B&J1^%t*`(|ke`Mg{^uG+A!&?u3yJE@rzI!YGAb?u&04-3&Gb2 zY*R?N*MO}FfxQo`D5UNuz?J}uHrpK~X)gn&?VPV~)NIqr<@Jt_n%!4nfeiW*DYwPe zMk4U(z^Z`l=eOt>?2_j(ZNnm*CBpGnjnetIK8o%f@qpV@^%(7@#v3R;{1f%#h zG99JBCwAo!_}74ck2%&|+m$LAM>yf0?mZS9W9+58k2YEZrGcdLJ3}y7J{Zt9tZoX8?MPx~IUCxXZkgF}q{Fr`zVc z%{C-E^uJfu|Had%D8YZZBb2drfUG;kO+C z3Dn;QuJ^&!*cC3*zq4bK?u63hmAb6Qye~3$3_O>Pg>zHqp#Vw8$QV4G4UT=_h%)9v zY5Tl270E{ohrt_zsWRu+P-ok2!;g@r_525R2w1g2i(TeqozgCJkYN5cFi zM*H3STH=dz_Nzp6b=$HYUGkImK6Jr{MfQ&CdNQV7>P=)2iVT|D?Po-`HKFj5scIP0 z&c88Y?KW0$Z2?#2{{b$MkN3e<39j*moS%Y$m#*2Y7279FH%fF^3Paz^IC=WPm!FaH zTmHuLOa$fwwp9S>m##-UFPDruKI*(i9dpiiTJgFr(7ql~S@CxK?HJ{HZ@8*@=L()? zm+~{b(KAQ7-V3@MZ(m&Js=s(p`F)U4Af$YxO58nC14-ejfkcP<&G;Vbbn`~FyV+GW zqXxFddtC4NPWFl-juBW&`D5T~am6>J^-c{89j>-z(N;E76W!9FobgBYyRwc5tcASP zRl#7Cq|Ot)q6Q9E(eh668;=`#q3hzhm+Q|hbktu2H=&@dLR&@8)PNhB+>U`Kl|yB^ zFV1?bps%|ox`%o@X+u_<$1(Frt1G&pG8o)@ZeeQu#dWXNy#g+2|Khs;tpD^52RNM? z=XsZ-;hf8vd{$^uDn;7gaPdM^?NQ}_P*r7|AEvfdMXE^$g2BdwxJZAqE2be0_`iTt zzN~f7jv>CDDkXN+6^m={_U&6eKsEL0Ln!KjA&WnDspR+=RhAm5GVAhq-_r}tv5~%5 z)f7&dx(IIoU$&{)8RVs3~r@WAQ5bzS&Wgv3EdfAi`Od z5#L9Z&2?-Z5+AP04gqg)dQ;rweSKBaydG-eYRYT66Q}!+#HI$0x}uZ!JH3I|puLW= ziD7D@uctRfV6O**hm-op_$hxlVR|oryaSx{*}b8c-|5)=$cPF(xuj2kT^vWQ;Z4 zQ4{^{!Kr~)p(*WfqW?A0P0z*qpJ!~8!y7o(t180}4iDq;7^zwBaKcB^x~w-cqKbf& zH?Ya9^X-m0jS1NUx~#J+(x`KvS!XTj#dR;$e}>F|dWRD^V$L9&h736xkpE<7{|yC)r{5IMg;Tu*bjUeXQ9P+priK47{-o zpFxx4jq-zZTc1dImzr3&BE5+?1-J&8bi_8Khm>uhY%^nBKW%oPHTSNcxg9&t%yhU< zdYOy%dUeyn0x2PN-=QvR$K+=E*g_jep>4b_GpOM@okk-Mm-aU}%c=F#g_5xP&zJY8 zZ_Db5%=Ci)ZmqNKIDGwkT84i!$=@354J0$pNoC%)bIfm<+s(P?CV2cQbG>e3eA|hB zDscR)qiry4Zhv)hjf_*PYhpuHPvt*K*<*}@!x2}rp7|V2nFo+bmc3h_9+(&zr|?Zz*IneHCml=vo9mcVb{fU2g=E^o>Q&geHIdZ_*@py94{iTmbW3{K2;G4}>| zn}m1A;N9Cp)wXKN`Yssn^qkD353a!tZ}9H#!Qddl_gOD=5Bd?)74244kNP6qHJhQM zWtQ@%!IvQN?2f5w@;KZzf1_S2@|JyrO0nLn9?E~jf=}xVKMY*xjSmYeb2sj|+c#OI zgd-oC)*HMjnkF^bpF7Q)5;j~7cuw#zM)e!B+TtDICsVcDh#p91OmAXrZ)A+;)L$r> zjl9pQXYBo=7k)*(;6cMqwPl4-wg=1gE4!!71rT@JX4+C^H(I0-FHNKBU)!hm`tFt+T)-u=y&b zu$Rib?E&v&M;9w>PISXY^nD9*R0a>S!_=N97(0>Kx?57G9zrL(GrcL*q;0@naSl2; z0-m;_i|S*&Q~6v&nLDO>h`_Paneor4vRT1k=24g6j%nBcZoz*yxLwbl-I*?f>?_HD&LoR!0yAa$M z^>#Y4DZbQsbWbb#!je;Wj5p8*EuYVF`@diw*16)_1}{o)(mvKk$LBZyb3FnF6iR9_c(}$-oPd}b0p8h-ocn0!B^ThDP@(kjM;~C5|gl8zv zFrMK&SMbE|e%v*9K6WGdod~sU&=>39^%hQ9Bl$m)uU_wcESvo16~3v%;9IL}SVKKL zjOzstU16t1hy4P(bCiCG?7F-nyRi+g4pG}gW{=WWfeTFDy#$=?#8VAU)o=vg=5>6N zWMrJV)sWOnO(u?Z3b{Oues4_rO^QDb{rd*L=Y1S6{z_v)^jN<_FQ)b1{N!i&V|xcw z52*p?A@DrwjGliVKGo9O-A#4aQYokFtQqcqkTNpXt)d$li+Y!#kE)z1^J?UAGqRLU z+q!(Z%aZ5DG((;nH;tL#KNf4qa|yUao6_3|2i?b^-|dK=UjWTMXb#0!doh@~hPE#CW5tIRUsg4s2e#E}zoD~V_4sw^O{=l( z)#&8-{;EuL!QKc1Z4w1IpzIy(Ml{7O9!WQ@cYiAl!RBrkNUZ6A(MWilVc zFEPf@c)t-}<|f_?T=)>`)7i`BxbWG&5P!wM|NSuN{k$U|B=521?YO)>RP^QNo4b9! zopm`IWWLGR%G`2K?3i1uWy=1ybL$1S${d=W-ejyDR0DGuUoSp+aINxBLudM!A2Q$T zSF}zQy)qq}XU*yVZJYI~ZOUes`_`EkdtEEKeHdd_$NbwoR1KIu+@0);RQ;{@yO6oq zZ{qhc&z#J!r(EvH`W36ECaf!Hn-cAv`pICmZAULvmaTQ|u;klau{F%&x6yf1tvU(o zd~HW5_jE6HI#px=Tp|lCz`WR*>dEO%%=iBBE_Y!~TQF1RiDd^w2e;3g%%OVT9Hp-4 z;peFzgM5sF{_1Jy;~pC_9`3avL)IH^ekVGrpA2_z$k?#Lw=bP_$HS~8s#nzQOL`z~ zXclGaobH;Vy><*y2a;;ywVtr(zRCj?SBMl!zP+g&$AA znpN5QABjZ+C7cw{0CgV$x@y#pNX&Ik{j8B06EM&a) z(;$A(kmMoAw~X;n$Iu$zpw4ohNZGqhImeC-YQ;v_?SbW=ew8c?(6aDS{e_UVVQ^N| z+v1;E`dNI7{lVZ?)!J9=*VcseNq+HF`%+)^RC`38MK>m(Q$D;vmU^s5T1GP8tEw_Yo}_#{KJZEAcqU`KjrIRV*6oaYax>)wcNk@RP)_Q}dQ9qG zWKKz3<3((^z#O~}^@mdN2k8^@VitYvye<`a()4-UdOe-vs>%@iV!{urMu!3KQI+9h z?u~$sKhdVx47<;zuyZd17dv+zep>OGiTK3C0~*s#jq$r!w@6=G;MEJ1t;J^$-s$(F zVsxM6os`?f`)qhr=N$Ovao2=~=mdDB!fT+lQH4$N-=?D9l(M^6w;d8(q~9j30%wjh zy5?E(($+)3cJf9?4;I!{r`b}5W81kvwK${ONY=21?Yt9(Fuv@1nd1V z?A|b&PFRahczwkKQ&X{fQ_%_I;LUn;LY20ALz9P^I$@Y&SWUG}C!}KgMpAa2sS~7s zbz-Z~#SNWw?$b~1Gxszbl!qTi09cZruI zx47bxKSK7hoimT%KTWDb?|#-(^$$ATg@xyh^~iB_l8le#qaL6SU!{*^-rDO_F{h8C z|J}ayrs@ba(O646@I{^Yq%M3@+nO5MEW4DIr^=o^7{70HxXSz-oL}%P$yT>w#~=MP z7<`9q6V`4qC&Pm;Kk6R;{U_tcc+Z5N`tXcWb3c#S@ck$6&Q<;4W&bSKu)>BgmFa_r zKX`Roje~h9_N$p#h45=Me3Ew(pYouStoQP6l=)89w;pJ-zZ=fGpfmPlE`Dizzo^r- zUj#Fs!Vl#b#a`A9ds(OMS-<{6*J zlE#E>GdkhC7n~BKIqz~cY=%d-ug`ug;^K$zw7TNvp9luee1Fce3?ur8Gor?w zqi+3dsk${ON4-7Tk=0fh4DK1dA**e)r0AEEUk3M_`0%?KNwl4;YRlst5rsv_PJM5q zUt0eio~&s&5N7Bm(Mu)Jv4l3_Ttgy{<3knP_WcaagSLMDxwk!EeiWHKhU~h(ne^0L z_>+Y15OHz+yY7oiAM;Q@%n=cp432o$phEE->JMh^8-{-P;LGgCgg>pWq-3$*i3#e~ zI%F%1ww}&a{vEEtCnI_qGV+9Tn3fTVDTwQ#YvC0{%>6mHK zumN20YS785&x4ux4gK9}P)+rU$!&-69i(p}FP1NyX!@UX(L37Kdj}fhJz?_@1)o}w z-Ki!S#SyPMc@(zesW2mKxL_|{BQc4D_?}cZpSp!R-KKPb<=o;c4@r>0A=(-OFsIo8cxgGS8an*M3g7kG(_;o{1 zy^`UkUAKyPINmYzq{JPDsi&X3d!WQXh7|su`bNKp)NEiZt$v@0R@?6TGB}YFu_qs- z-(pJz=Na)k>4WI}x1xc=hYRrG6X1U(mJ;ZtnuLY`<>5)gbk+PQ#}1-pJ?>OXKL6~A z9YcanRTdM4zI6?)2{1RaTyZDg5MF8i59!4J!_a}COo|`oJ<|+dg$|)X^teTrwDV7s zt|`d5*#DWV_xe!&IKFhCm$#{%X4b>Klk13Zfao7)anXPZi6T9@eD?X2w%FAu_x$b zyc%-S#r_-D5o$!P;?XZJAafkO6`2|E9%C+b>z#3tBA-vZ%DU2==c0EC!GRpkZ~l^4 zC*_R&jSe}^<-NzL_6jcHVJN;T@C6u43+El0CUshH9*vlL|7XPbB>sPh`iGXfhYn(Y zFz6iG-rorL`u?klHLK8_jD45=Ow%~&7xE-?CZPKnqx;<${K$ecia5jn(!ypX@0WLx^>g2Yy2bU8uN21JU490YErAOnHjcvUFwp_;rn|tG(5M>D5iK*&Xq=`_9aKTWrjF_A@F5sJ9=1 zXVvhj);X|~u6+RhFmETaKT^07{=_G#vLfc1TgA5LKY`Cxlif{^-N=JJ6kqPK8`GN} zLuNPPhtDFl`X_wr)VBx1%)SlOefuBgp&^@>?q3RySCiGPVwWDIJ;7B6ZS8z|I!WUa zpWtto!E@Pl+`({L?34Y>fhuremcuVLRN@(R8?R`KOUKqNNN=igh3&3#_1G=(yDC>t ze)r;W^Mvz6@I>T_e%bfU5TD`!e&dGk> zfV|`EhCk~-;>i{G!3C@vSKpo9B=f%BvE|7%E9&=!yJ91gdU%=F;e`z%&+B7`9>Er_ zTf1W46zt)NK`M}n1)U^Y>TqSmy6~ zmoa~1vFES)snPV2xYhOl3+=em?Xf_?ZUsxSd+`#NJPf&!~X~dUG>TM7MwW%x#-FW}34EE@lN1_w%8<*a6jx!*&Op1bB{)g^K=A>^ms)*;;RAN!#huBW z=5~U~ht)SwAG$pICu?8FqUArJp&EZMo4AQ(du8uJ`xd?kjZ181Kk%GmOrFJGOq<cqtpm;dfsNm2 z6WQ{3uzwaGm_wpFPW~~NdHT!XAgOo!nDWaxo{4uQwh6C9UJAZZ-Lw?F-pcwT5%!zp{=8b|#hXLwBt<8++$=_KW@ z(eV>}{~gQ)_RjU1&*K^fFFV#Mi)B3F@gVejEwL5*y9K-pCadxm@jH3%b_~L=j4LZ7 zFLkm*aCs>oM>*+_#K0vUG)T^cv9DVVFIuq;*uK;3XJlR&nOc9Gawk~ZeLj-DaK`8m zK5dF4qGl4mzYguAE<^k9f0Oq9UC`btXXv1vn4Lj;xH_GKuYc4vELq0oVX^zjc%30T zjUqcsP1}`j*o8*Dell&B$Ry{swhaUybD~k^#8PuU90CXHA)`F=LDoaE4*CY=Mb-}y zyOjJ=<{mf?C$zf#ckoW+FI4uttcSTG8QqD;S9=2~CXXk|;1!q{K+)8X%J>%AzHlaphoanP;@eAeru*62a@I2n7POii@9Kw#*68rw}yNWuIA(q4F?>1KIm9Y~l~WZ>^s~@rRywxgB1~ z`3u>jI0}zE_`4Ek8v+mH49w5aMY8|tVcg=QRap)xd#cI51MW`Up21bt!UOoX>*0y; z@dYXW0DD8sr#j-jf=lr758C;Am^h!2GT;(f5Zr=O>OO7OZ2=#09WCwbwzacA6eoL+ zr}`OmR(FH*J2sp%O`O|pI6bT>I?;Kp^8eMuS7y99+Zca2OR4RD7q~?y zgtmA2b$TDYPG7;?ll@dV*TFsm_+`#{1J2B<41HdyYC}en@&?jBa5ecT8}D(wmoPpo zD*Ut~a15GcZQwyp9clx<3FicDYxAM-!wp@*jm~=Zz#4-=N4>-kB^D4Iq+`kG%lL-Y znW~BSbMmk8o7UZQgFh}lH6ZO&{P7F9wjC`zZKeER_8*Ty-$!SyJ}(oPub z;J-V{+~~p0Uk0OAus@p=9#P|Q#2+Dst>emW>hpbxz`xKv^1FI~3Wy$3{ElW^ICIy; zp8uqsv?=fF(O)NA4uARwliJP`?`^T_^;CiX;i9j^w&|EHr&_RZp- zG4y7<-%-|#ZxjCmN14cJGyV?W1JP&Ov1QTmZ#&9*i(DUYlzF7w>y9$nM`&@S)yvuJ z{^3U1c~W*KWu)v+9c3-ZMD?>|gBC4MG-%;zki&@KB}6FEas z#od=?&c3hZUQ1|y6n*wk&Z0%n!QNBx;bR&GYuy{4ta(CvN#yOkNTsgK?cl*am$kpb z6ZH0;myxwg+Q(jwG~4-a##{KLX;{=lpRwqHY-xX?ZGf?N5f!KJpKOe-$~cWKlR0>n z)a~AXxB6z(V$nD5>2U+y)7=xW&3a#0!))&rzXfKc`giaBf3c^!PU+yqGG_I^_#(=4 zmv5iII7g7o*|)Nz*c*9w=$Btax$nx|mpJOs5bV_eDRXh%D>~lY-j`GKg)!G_!jD{< z{#T({blSyr2Xq`)E$X3ZH|~Nt>(3I~ySP#L7jrhGWh8eB*xM4`kEFkHUMYy);%Rz- zG4+K%{7y4++tRD5De`8S)M;dK<1GKOADBEfOh;w_!J)o^=cZSIr9Nx6)I{!iQKF?Nj3?3yF+ah#=gAoh;~bf4 z(0gcG-2OxG@p*Lj^Y2gBXUHu6#<=x-^G}4Ye?bTEi5J7K8x`mOjP-_tvlns>=@|ZX zrS6;8@X1aM#wUwTzPxX)F=OeHCI2h( zKchbRCdt1{{#Vo|zgP0Fl7E%@m;4{d|AqSGpO^eQ zZ|?(NEBZBYgYwri=j(UPsBd*uJzBp@z3t{)Rl}|u>ODQYyKBEQW4G`_ z%3Cz<#3o!=xQKPxLhen4Y1)c}HkYAK^nFEeX4-UmHT7*ey~*91^Ni?n(do>$OZ2(K zdqk(-0^WEvP~ZDQ-whBv79Bb0bXg~A9+~=F>b>!0@Co$#RxffP_Q-(`@&I_mc3dYZ z_Q;M$&L&J3`r)JK!%NPo(U&{v3u{6AS=HdiZ;^BV!auK40dKZq@0b`aF$cNFpiT#$ z$d2NSo#-m=3N|w~+{FvHxhp8LecYu2+y!eJNSkXTyiNBb6LQu_^q<_fn}Xlz<(`Y& zzw1jGFXzPWa1E-FPqDN()tid*kXG5A@?LBnYg5{2zwdVtxpJHL{c`x7jn7FuCXn7o z?Gc{uB<^=~7H2E5qxd%Z{HkR~Ph)F^f3jxJ9-{RAi|S?EMNBl-M_cvWXud()d(jUv zKV)y=bFtG8rcT{I&)Wo!iNyMz2){71{~_)fCfyu8K+Zn3u&&JJ{_yK7yn)S56?i?_ z8<;};DCmqS_xZl8W7#y;8n~xv5?bRtY_czv`)xIV-$> zm$tF9ld1<0zrc?Ard2huN8bP3{fTV_(^OOSRjCDXM&0cQuZd=!?BG1#NO&V>3)AiW z+IN-im*_RCUwo@TkJVb}mho?wL1;4K37yYEX_-9O?qh7#{y_E>+Q-m-p5pD)KVM-{W_kQ`NXnXHAuT_A2yH3*}{= zZ!+uZImaDy*^9+LXiVDB%P)Qd_!<*Rqx@G;j_)As5t-kQT(#@@HPf^m5gO;3xRy@y zHtBkqll)P@IIE%eT1OM7m31xa*~9Awjq~pVcU;K~|4XD#?}`%HY}~sn!oLm2JPE?vZa_n=cf6O zSg=UB|2wpSgSXq#`7Q0vbve;V!}K}H5eK$E$=wo7Pg*}I8`JPRDNBE3KRSo~YKa{L z@$W^?$lav$Ua3j4K4uTSMlt{Xgbl6=;~qG;kFs`xhEoY^diwX8c#pCNqG6|$ztMs* z_jI3Lyw3lE1;d}$urUe#{{V*HI;j1wjd}mq!P?iDr*o0hbma9WJ!(~@d-I>YB5-KhL>HyQsR&_diL z4SUJ>_#^dQ18<-JJa+rof?OKByNkZv3BT@uUp=+mFQ)8e<5084zWtBuRY2~}vxl&? z75jZRXP@Pqh{S!^*GSpZQ(?D1Q8 zCVoVls~2Y)!;%BQJ;rF30OCczpm~x9)PLwET$gZ7d}I zMr^81>noYuz6a6FGRb{{wW@r@^`G3(jl$Gq$_6 zM84rMsNvH{wJl-SZ1yGwaesol6XctB^w!Ms z_57omUjY=HQ`H3ROX+!OD6Np5e1F(D;9rF>`TkRF#pk6 zJ^VsD_wV6LY(pvZdS=1D#i>nhiOZmea@KSX5gC^8f*Q~|mB{F7eX z;VFS9_wa3k4CW{_1Ze94Vuw<1Ap6ulzLlU@XV>;rd#BRhbED@q?ckhpB(w`n=h2%# zN2duLIpEk${r&VE8*qB>2-YjaFb9UIy_qiN=18C3o65##dHjpu6TY78gMwdTI*&@e zFL~qpEy>@NJpQ8iPV)X?^7wU4ZfH5Als-Eu{VHU>`kb7HW&GsKkK4sP--xOvpZ0x# z!;3Ea1J8c}t?ucZAzV3ZfDhabc((z##S3}wVC-@P#@bAmXRq0JD#&+URMQ4@uk^bG zS^ha?(M6|^;zu3mS@opg_!+RS+V*nK|6{3(yu_o|X023F;{Q5Xqt{cX^&0dB`a^Vw z^pU-kOg)CApOoP5A%nw^3lHPrz<;*zxC&L2;MfihDJNw{Q06%8w60$NC}*aUdjmVk z{#H_p!#~!sq-|V}^tM9wX8)Lyn$$QcHEEusU*r}?ROCEIU(!CL&i-3?cH%oOarBN9 zyz&hLVo#ZZH;MRfD|bYbT9iMz$Lu!j`|0^fsYx}i$jBAkSy)2dRAk`O;O3^|-|;pb z`f_If7<}XEi!=N0bB0Gc`5o;V7P-UeEbPM?CmnsUnKBcAA2RlV#Wy^a@PK*O)McCv z{BLZ8ls!vK8hMx$O+Q(uaAwVb$sVZKH|pXG8FxZHqJ7Z|awqd+=Jr3><5c+Z|4n>` zxz!|h^W~h7;QV~#-1>9qoq>)aZ&o`8MxH}<754l+$}B}EwYY{fG>=w+p~_kFCt$6+ z()1b7J;?r9c*I;!{`=>_C&VUMdCn;WDl%06v*0DJ*d)5FnfW7r%t3IluQNZJGY49q z(blKP?q1+~q`jN)8@^N3be=?zXGFDT_yYQ}6>CHxa+O{Tgq|UCa?; zSd9|HYDQO#yAXUL(RPO-o%6|cBL<4yZ%nA0h@FW|*6+<2_EzxP%gZ=OUYGBUuT448 zLBhL-LdweCu#}zY(($aV63>$Iy6*c!bRGQGMu~ZuF|Mr=-DF(f{fF94W2v=BUf*SI>F+ot=RHHZW|> z?YqM2<=n((=E$+Lf@@%d_+;LV4^5vtQw1`2^{oFrcjJZLV>Js4tbNVOtFI0i39>{XE zn%vCzj>4YFn#F-GyA^)3{%;Vt_#;=!JNb*?K}0H2j> z#5^U|ATiHBv7a()`RtVa5yTpZVIG!zA^8EU5y-zK`4aL&h?$W`=C{qNATKtI{A-fG zk9;!qiDB-S{5ta2QJ?%vl3!1L8uiKVll(^VY1AjbNAlkxKacv@i$=-UkjGB!B>$r1 zzeoOV>XWaN{A1*oQlI>Dl7E8y3hHC0YbE~_`Eu%$e_HZ8$lp(W^4lf9i~NJsC%;Yd zKO+Ay^|4V~CI15XN2yPKi{yVo{z>YSua^AJ$v;bd@|z_8OY#lW$M>j`{IALXjQZps zko+s;e?@)rYb1Y={HxR_Un%+Dk$;2wtYJ$f|0el&s87B~@_!`%7wVJuN&a2(N2yOf zPx5~ze}ek>McI=7EBQ0jC%;7UACmu^`sD8htZtGQ9^`dn>kw0&)OUva^WaJm*&*3jDf1EJ|Gdwffd_3_KS>cPZdSwlA-`EF1BJuL1e z=y~OJ4Xy#O?Xhor+nSt%YnG6oz@DJABQpIY?`ors{5pQeD`(joF)A~LcIzk~-x6~= zVvx$T`pcMdCV+DRd>2b#oM*!}p)*ap5CM)BS#P3?wC{yaDL(J7pzZGOT;<<`UffnZ z!>{ARKX21Rto1qLcv|#LFY%4w;kWs2!=@j3lUNrt z5r=I03v2Ml??_D&-MSZ>Dn3FL?VjaKV|6d?)bY(I^jY%1BoEFi_TnUeQu2}H`x*KF zCeJqvo8&zH23P9t2m5(g`*{MW=qaV7-ua#8)WU=Yqw`O_XK9{ zpP|2BG^L95U)pYm!wG!<3@2^1Y@9=0?LNBk#@$Y65xHu{Ui?`00nqb&qgm_M21(KL zb)*yFshp_`t`D!TmNR7b`BFK_u=&s-^QD^dt^K?K;!Y_N)h5+r!nC|dknJ^eaFUkv^B@9C*SI6r!j9tmu+n{>+xM~P2V(o zopYSyWlt8}(W$Lj*LJkUy%1e*jJ@8XAzjuxHrc2*+^iGdQRi?%UC%D-?3!S;72D9y ztk=JzUSmSlurBKzGw&Tb%{qLm+~UR7ggoQB3ZeaSjWOCf&l*(5nD72|)Va`gosni8 zVywE(345LQjc-(jwzF%T(avAZI)Cq|)0prUcZa*+xhvJE^9QreVbXu`xD&liNj!Yh zZ@!!fF!q#f-zPh${I?PNsUz+qF<<^2ojnrIA;z+&l^7T{z%MZgiR)~{-}w~XbB-97 zJ?^squ8z1%18rU|?jmumZNy$UyF9;ueGUh<iGQ7`8OhF^}1gaF61C4!Z3`t~aFxTEbPh+CaYPhxvqh@EwqMNeqv*-K z(BDk?AAnE#YwZynkh43KvA)lxzc;wi*c)h{AFU~&eBZk1wMl;0LWA$6;1roCCpGJI zB}cl>NV86^Stq}vPGf?3&cP-Vy3R4P&h2KMJ4x^3G4{k<^`DKDZ;^I<3sK^E63de@ zZH_R;G_|+dBj50NmOUofR~LWvS#a#{%ej8#I1SIZS8I&9#Pem$W$b&H<9o3JqgWg z%U?>g>;GEgUcf=hiwzeW(2MdSFT|~}k@z)?`FJf8F%8kY6WJI*Dtv2~4g3W|Hg1H+ z@|_!rNAo>ObMNS~@-cOQf7h*se6(WEL_SWCURFM+bI`2wSF_IF?R75IGg~)N=a^aN z4`!XiU!%@Q?t%zk4w!Wg8g&k1=aAjLmb^ELo!dk_L)w{T*4bm$;aj%SAEQo(>~^Z- zT5PoQBePCD=^-9D4}HmZk`9h|TlS@^P1(gR?wJIBiA9SplJ6diOx9t?MOH;d?`5qf zdP!pMcD*<0niO?<-$ zKTg&iR!n#oZK#kv@KoYM!Gj~Z{7zB}ex$T_`V;wv5c>x7sT>?4Z_-@9sF!&H@@}Uo@ z&==e&XEUNWo6(;=&@lh5$EMcTA2ZHoJpWXRKAUkA+xMf5L)vyR#<_RS)MqrFo8@?0 zVmfk8qsucIJ8fq)!n!`AQAGPb+nDYo27F=Rt>}_P?9~`&G+dPF>hALsoc}%R3S<93 zz9sFH?=RtB4{De|c^zj!zez0iP0?l8K7((U-anQ)S5c?#jqIuNo#AZR&-AOZ4ak?C z^W#VQMeom{3}-I(io996)o19|!y6>7S#8{zTuOZ8HNK-K-zNK*c%lBec z;>~=s>ry(bbBW(O8GJ%LP#a;LJ+zYl@@eOWv3KQaSV=n`zCkB(^>EHnOKcrK zqp5)BocZl|@tv%;cfQ+o+r%%oJ`YZ5U+5?_+h3{M@BGbq=^r+JYg+9zz8fy%D)&89 z!#rs5y4$9p+miMB{rwmd;`Q*@hwqanw1(T>r^j`?hu_n9?}n!jGEQj^^yzrVS?dY* zcZrib-f{M14DZ;x2!vC&pfCFp>{rM>ks|RPB!if31IKOYmiuiUfW0zzc zSdVXwTQBEX4O!t{6yFI^fnV@m&gRrG*F~meEQm!!%N*MEw_wy!bi7rkEvV}6!xkOK zmL}qtOW6X(x6Y;Z4xx^2OLfpU{y zTBf(#<^boY3e9(#?{{*h)tYx#s6d|iPSZ8NZ~HsV=MgHfL};_~`6?9{Z1w-`OX(bL z=QCwBpP54u)Y0wtj%{ya4!C7ra(_NhkZjCNUo!h+ktUyR!cN)7JtdTuam+uH7T51D zrR8(xGk4vZLrFIe!UZG}g)7#)KdH`m`1QK-nS8^|Aux}3?M(Jtcfz0WQT+b9vn*A9SMuAzT@sm>(cVBL zca+h`nGtKeYu68sIGHB=#8wxN%mD8{5uP--VI*bTafyV zee*YDwe3jYz9K%y0(iQ`5m~c?e>b9l{NME6wElNA8g7t#qU-S!Ia2^X{CSdh$=;3f ze^-9vm+NtUpR-fI_5#B{H(;j*X;`Dcu!*`{W1@z=ATaczhAk0Y#<^U9q3bq?Z!>X% zhT)%WLtnB+#urDQ+40@(e{X{`boiNF zzw7EQYYcSO-S1t?zeRKU7;@qM`2KeXnY40;wL!<)p*7Co(BJMk!uh*+SFGNbZ{@ya zctUDQJDsU=W-VINIme{)L#N}XBF~ITgZP!9_d^ATdo1TZI7iXd`|fz_hPQT_V@;an z?6^hqAd}|3(9AhlO|$+tJi4Jd&ZPO35Sl~(4Hvg{TDo?geJ^Ikc4#l9lu+a&I%R51tDo&s>qaXYy}M9gsQ4zdSjZ9x~A3jO05y6VYAz9^i)C1Nt7|F_&>h`ucvj zU;8a$+8E7`jqL9V{m+~9|A^F%Z;B1y zR6D*s&d&TW@f|er@ekN({ys)(#TI6|@iCZFGowhEPcuFIyGqOt#xCG=s>u>_c>Xkd zn2cqbQj>RZCq&_US+NM9)+#^Otc>GS-YA#R9ZZ?gfNnmopvG-e`a$iTzHzdLZWGcxjD zH~)TK)Vx3ZKla`~x~}WG^SkM3#BlpqO`APJ&i8k(D00~Kmh1i@dW)>5pHlx5EX2=Yg4%@{wk9D~+Ov+?owM@!PITOT-&EibiDOatg zTrH=I<8nGohnX@noP?RuQTMrbfA+cWym#NdknKtSFxDc^cki>${&jxdAMd@F|K!O} zzr1e6=lN$$q;>j&z6Hjg)`Sg>2BC)z_ z*l+%ezv%v#V&~7=I_2HCF8SV!P4d0uo1glNwr;tnvPIUP4Kn68%J)m$_td{~>ss4- zk-Pt?-+AcQ?tQ+ked8asKG6BUb-Z)0e3tns_Z?`xZ37!$ng5xyzw`9@m;a%Z^4({h zfByU*zWhh64|eWrz3b)Q*?nH{L!FnS-i?3$>L0%R^R0Jn{4I&^cU$l8ysz!Smw&&d z{ZIeA^}f#kRleuqwyb}DCVcrW5Amm6e7WnXKalTce6w|9=O0HKI{!zBed9pqlfTir zrSt1icjv{Zt8>F(*OPBVn>(M1Hg$FmZG3XW;N4Fq&#RN)rE%9mw|?@oG7j7|&<+^~ z6?sp7O3v()vfr$W-}(Mi*-K^5J}jTFIQ-a{ytns{R)6I2-&_5W#|Gp*t^=*V<@S-+ zZR!S{y@(0$>)9U`^_nNU;Q`aY~uE}-@XN9{cCf&u*9>92u9`9gbve`eRuOzb@xIx7Kf!XPaYk2Kjpu_ZIQh zeWvKe@5np$GVk4c-v30_2`4ANU-=Vqf9F@-=i!sHQO|EaB|f@yh5VYxUo3qk`mLqb zr5{sw#@w~n6w*4O`y)crpWFUoge@B7x*{%`q?fp14IY!+L~pZTQwE}9pXKQE>G?tw2z zxmC(vl=4|A|BjR|N%{AsEKB*@Qob(bKbG=~QvUkb&&z#P;Y)eHl)o$G2VK3C@|$bR ze<j#x@1}f~eMt7=El+*&FS=ja@T>juTcU3M^DnM@TIya;>SFp?p}&%% zpBMTYDf;6=e=|jYLg;U&=$C|U-5A@7_5GO8TT}GQLcf%vKO^+(DY`85S5ow6h5km0 zepTpirs&TL{p}R}y3nni-u`Z(x2EVfg?=eTe?jQiQ}h>w{z{7eIibIiqW_lA-%QcJ zDD<~e^jCy#?eg~D5qfKi{<_dFrRcvS^y?}5?+X2u6#btG{f!j;UkLrp6#e&w{&tG~ zhS05dd;7mG^wt#pn?k>oqJLZH*HiR=BlK5N^zRD&jTHS4h5lxW{>MUpJ4Js}=+;f% z{vQgxHAVkZp4*pUl{_-|EisJlOTcRc>ni%=QmH^X$kA&p-FvN4NEVcyZ6$^8f2^FYJ|KVXq^8X2J1Zf9*?iv;A*> zq5q4|eRSx#=RY>{WdF>g%@7m zJv{Qvv#&ifvitStpZnO%vmg7|3%j3t_J!wP8-DHeXPqKpdW|9{E|15J%-Iiz)xT>vMqB$T2oVm#c=H|Si z1ZA0H1!#%NKtgJXW`SvQJ_Seu{zxuPPrG$b`pQBu-cWLXJre*gP&AZo9x0i>$ zpk>~)lsJDJG}aCjcUTwh&`K*p#rw79fN7aFSp{K})5<@q<+^AwdhwwuWV=SE>~8f% zZd1j7%GS14U_=`mzh9AzWZog@r6rmXkd8I5$~ z0cGeR?s(hX%Ug1D9JXqc4{5%SMnnC%jqsbLH?<1mvSbiAuHtLUV7IoCkpe`atbxF^ z?&8C_f#1xJCYu5?m)10CkBan8*s4(P)HiC_ktcywSK*@Jo z#(%OU0QV}Zc{hem5P@_faIZNr1H`P;Jz0gCH790(X(zJ#J9L7Xk=jqOEMp0XS?5IA zoY-zo%mUL+WG{W86Wc88Dd0Y1?E$8pm@+5MdqH5@iK)yP8#=*qDYs9741|_wH!$r) z#hh3%Cw2qVPE-mz!DvhkOy;qSH??8~izA`XnkLPsUskK8(=WSGf$6tXJzvmLEPc5O zv8+r9{iwp@o^?v$8PB?`@VaNU>xk^Pky#p3$Osknz*&=;RTWl*nQh>CWS%c-Gr6H2 zJ<(!=f+!@)mMX+CFWVxrkc20)tyPHAUba7rWeB|ZBc<<3>&pX zdy2Xy??=afYiQ!5$vh|%jl69a|Iy_#Z4-w7Kg?NulgtaBEGva_R&OUWXJ@|d-F0Y8 zNg24n>z2kDV7nf%lPw6!Ukqf16`C70bCW=9$c6yKK(Z@Ad2^W)Dl|7?=G+gY#DB~Q z=|13u2Au3aP$f%4W zO^a#1KCAO;)e43)9%JT)X_>3nlDUnb<%G6AYg$TXQ2~a}9jvVxP*MgfP~O>y|71A= z%4;FUn8vyhhPkUG~(Jx@qKQL{HKu~F(= zPxU+@eMQawv_zNGx!&q|Li&rE<+Q{msdGKn^Mv#nH3!oY-BRazt>+2pH)`m&I3M>& zo$I-tCmQr!y@V>aBJ97guUe(A!aiz^o~ed?(;7Wn4SSpT$Eskm)f$ad!Q@BYiKv2asIAuM-$e1z$4W^HuO=<9)0OW_G*S!Piahg(`S0v3Kbbeb~0M zJ>jC<CQ{hC;k~@2kgdyII_bJ9FXzO6Es^{TSnXfvQIBdFGR2t(5OUogG;z70 z`Gl!q{+apEGHQmc$=s;I1<$hP3PLR;hE8zKfPH3io$1w#jauf)S(Z!k^Iz$|5hW!5 zz(Lb80~}LUa;SpZ>jl#)9VXDw+_0IO1Y$$R2@nIxp$f{In=NW?o0%&E>1(;=0Yq{0 z;}fAUP2M%#Zvbx_YXK<7$N10PAXnIBtOb>~B1{{$hAq=?)Mq1n;i4}2msNj<8P2?> zAxKhl)SAp)R@iU8%;C$TXIUr;!icy(veOiofIMK6RAI}{ffBalHRt%R$rFe3zgp`> zpOP}hfrG}H1u`C!F%HG1C8HC#qHPmFsGD9R@J@}O5>}9z(A!>9WDk^ZQLbKq_?Ju( zC|ndlApRwSP`D_9z_hp7_jp5Zd(7K1keMbk42XZuiENb;}C^)81y^ z48~i!y@0l&QDa@a~wG_4m?_ds%mj4F^}fY-<(byq9&i*dQ-?*)}_`yz6D# zL>BU@mu;^?T=TN+A`3}IB(`;#XSOB@`Es>i6_Wv(FThkXB0Jm>y~qJqRYja&2qG6b zU@8ewT@pmDK?0(>1c+RN;IkjT5&VQYS<+JOs#FxtdX^$9!ug6QsSzzEs~~K$U-`>g zN&s0+ba}Mue%}O$12Tt!Y$$H}lXPl!L%s?DZ?K@XtGml_F5BS$ZSHzG2aAuTGdLgUsZU+cBagMfG;RM zYKkX;Uh!PL;>^=+sF;OU5)ABWON_~I0S+iDS#6;Py&!&4W(|xb6=;d3fE}tu?qqa? znjH_7l%eWTtyt009gV?0M|;T8HcNiy&2MsqX1cO1S{$@B4b^SYJA+k})3Y%XhbcqH z4>WPSq&~DnZ!9asps+%7!omn;XzZ|7crCMN@fQQE4k)n$A{jZaHU5A&3+y$Ir-6gU zngv#jl{*cwu_!qb83yRc%z?BzGcDXj`9v$^FV&(oz=7 zyZ}c6EpDu%aY5_c9h5vh@56L>9+$_uOYKz@k@19^XFk*w_fx2iXOElxe*^z(UaCBa}SiS zc&_?XOhZB(Q137DK$7CTIn zjS9nqffhGp&`6$|ZB*!aAEt-ZG&^pxC83DqHQ%T(AL@$xDO6Rc^Dd}YYgnFcX_GEn z2r`##{6%}})|-t%1>sOc)Gs%g>t^ZKYL#tQQdWB4CH1+1 zFKX!q8rZAJTtP!M#1XHc5a?-(zB-sWOG8aK;T+nl&K!tHIfyJD03yF zYtO2vPeK{P>>qMmQz0wDkxuK&W;nOW9ToKln*|^a$eDnS@LS>n@R$w8Y4b}#=pMGb z;x|!z%Cx+hr{%DUdc%`Ur}L&IH{tsOEpFXH_6W}pp z%>pkfOYcakYwY&&_$95sLWJ&H$H`&0Wu3XqV?XA`ROh(qE&fR+huji7WCzA!2aboVaRvd?_U zTxv1Aq@qWyNeTBEqD>6n`p>nQ7UNzE@Lfy79Ea)K#wr0jQWy56%=2Anj;zV*0rci} zV-DR-E}25b+bxbV&?}y;SDcyVQ1O^4o&tKsGxdtY?@zFW6vf+AAp^&48DPJE?E#+A z)VD>y+){-&XZ?|RJ3cf=@5X0z2qI~Verd2uEc9?Jsm@x#3J|I%f^;jDLJYP< z^O&QvT}v~gpolf54yxT*{{844Rh#H(@_2yYF?~*(N)zBkV@(6E80!sShh=D5E3F7a z$CjVtnYVL7_eRx9({prIqbAQ?vzuhD!8Bos^a+?`2O74VWS+jzaznF)7B_^zY}3t7 zU+8%srf;ihmfqyj3q@qS`2`u~LtSw{g{lg59;fN0;yGMa(WBNRcLhWARPiQ=p0*~L zC!y%L&4C!OUdpBhteBP=;Iy$yz@5rUjxtd4oyYN?oT7m8RoU@h^D|HA*HF?(M)D*O zXXH2y#H>gGG27(O9onjxt@1I2EFsS6vOUh)XKBdX;LvSOtHSuhP#7wio;lo}S5_AeZ$k&A37K>5|l_)l)o0CyQ{ensImV=ZU` ztYGQQ@;rX~2G?21y?k8~LKR-P(@1)Re7c{1Are$}%mdr=}Xt}0Z z@Kf?!uO)XN-c~I`=1U3a74JduWiOSNldrw9wl7k~u-!Pt+=7?@Mii z=XKwbtqdr?CJ_HM-^xPWYz679%yiFI6rM}z&c31#bq{J7a^DfiBQ04nft(AH-3)3) z=duU_dEk-=GS1tz3lc8Wu*L8eFdakoYjDIs&dI8qGqt_q?~~DHLJ?{Re}t*nr5?ESfe$NB?&=&@c*?VYB(X^1N3}U^ zAVK}RL&Fd6%~`^`M3taH~qVOtjYFUd z2j0Y&OWr4-A0_kj@2K_fo4^TUeOJLuTQV2utizslRN*OOm4JjUS7pFPS@8X5?`IEM z$aC8iju@*1^y!-;eWy%n;jBV(<`NISZenlVQh3`~C7{ppn`C+1Qd$C%Wv4%HPB3P? z=G|!avpjcq8rM|&jw$U|*0S#fQti`Q;=^AfK2{(f25a)JRJ#s*#-$Hp4AsZcBW1D~B>Nu^Uhx40UJ84>C z(66NIDnLIHW`GMi5|YaTD3(^)OMqu<1XZ^c_#HYiU`|W|u`D;afS7eoOje<=EP}wa z6WJFUp%a9k%0$Wh%G@l`!m)kSn#_$U^jb3SaiIlKmPVOC#Cb|H+hk6KT4vROb@I~q zQj2}wsK+$zu2-J9UZ8xhD(x~YnJ1XA$pLLD8yR;YPZ;Y};2C4R0`&LDGH)heYgt<# zH7(P}6<+WxMOK6Z^Ex#aBt1igJ(fHE>&A)!16YO;&>Nlwa;GhsP*AMsGM0h;>Omq{ zYsz0dhEDXWpj?mxFBxkNh}mR9LG@b9bHKC{*%JyUdesuG+?Qi0%L)=sn?9|Rho4i5dARy7+J3T}dfx@NtDJo~7-qAnl>zRaKmPE>sCj2=mKTh-FnCOG02- z#yk)wVmXNRjfp3*Mu=WzN@L(cXG#uYNtq%CTu#eDob_@Rw}LSI?aHTv+^Gxfb3I4w zr#0v9o?y7|0RwyQ^ebD0OSinK(p0uNXyZ{;aoRRP~5a}OZX_(GHR=+LF? zj~!>VYIX$AZgXfTFQCx7CRgH^VaNOI1{?U5JEfZWwX6d~4w{D*;-0X8co#1ifu|yd zqc?2O?gsAF-jaCQ@qJLc%kjROoX%?N_?1402@7Zsu%fJ34r0HT10G1rL68->F9N)j zmLo-7>COzI3eQ_~$Sn;(*0|7DVTEo93lA72!Xo!qEcb7b^A(#Z7^X(VbUdH!AYRva(ezt4rMh$5vcSW`y9>%`w(*(S1tXF|pZSuY$PA_R| z-z0Y_#}}FuJ4=PF))F;S1ID0p4UFjmXQ>YD<1Q`bECuW~R_|tKtPMWrZ0~#e-T3YgrW^)KXY^iVxR$JU>zA@%&1i$Mac=_x`uFH3Lef zZh;;%*4$NvT);NDp&cq_KS;f2Gd*#$9f!Pxhv?e#3+L1Rq=y{EgcYV9>I z1@!&4TPv;LyoZ~ET7zdYAb|ck$vm)Pwo1Um#+nCuCrekg7SH6J66IJCdeo~mm$Z}v z!&Qa!M3XZFaS?>ibP3B1+#9goE~zOiLidP7wy*fFEBdOuu6iJPbnAg=Yqd+cgQhU^ zRr@n%%tj2jzb-uh9JcHE86eMX-5@Mgp$>aN;BjRof>8czYi58eHG;K1`FrT0xAcYTibA;aZYgn>)0Mm-H7Y`KmsDcG8X|L}-IYB$0z|U43Ni1QZT3R=InQjbLfrPub(Xk_=0kL5e?euI%W^SX@9;bA4IF-_ zqk+TkbTx4Jo$dw>zthveVPR^PtYBv0@Q~Ip)a4Yx_+d~tIrXDuShb`k{!V4hYAG{p zS>XxKI<0WUv#uz-baZ+aFv*lv>{ zbB!Vg1WJF4`4bufQ3{Kw2uWCkfd9h6Uz`;d&h_Veq+zJ>C>rpY1P&@IS*T1>0fPiZ z{mQ46tUp;zX8*g|8b*dh09?}BVsZ`v9#&T34is;EG&!(@=C-MI@et_W2i*b zd2^W?IOgc<3u-Q2nIN{?Fq#9FjP(lefc4`X>oE_ZE0(LdGYY+%bG51V`$m?V z?wbChHoBx`v(NE0(?hfe%)>Wu+I#rM`|%LX=QU|^ecBJcV2PXt?o|hzSm=S{eK#(! zg@~SBaIbd(m~x@FfeY-_<_YtwP=0+D1`jA+_AUTZE(|tsVbE+V2wm8#e3D-?qW77- zH-SsWdIfmWSZ@MXjP(l8kC!(?Kbu@tlBt9BZhqN*QR7{$l(puDLXL*Q0(P5E3&3s0 zDvc_<#JH(W zUv^k57V)xaUa0Sd1x=n6;a~}SA#LoA8Ji_>gBIB=i7R;)iM!}oq~x||k&+H`e3q{R z?)R)=g(c4-yc3>vM&Vh{I;ZfKXIbg{+yw>%{D2fE+;Pw(9I(Bqj`3kSca+QK05O@aiHz~=q;JyUcn zBfeLBwhmqW{iXMOwto3$b@j^+Jw7I>T)Ok#p{3RLlFB5t8N!n1_rAJx^Su|Fr252P zA6LF->HVH5Ivpg3*(oCj*i&f2h8_)QD^Ua-d|!%2y&~Y)`%=WdAszv_fLhz6AR(d% z$bmFb1hvh(4#aXI2({e{0{5*cMih}DaSb?bx~COc!3Iph*v{Jw2>&#Iwc~PIwmDDZ}0-3k(!_ zLyIiz)i%N+3nx5_ES&c&vOwt4@S4^VxO_I?z4yLsKd$HV@CteGr|MVg^Y99J*k%#F zLLSCEi#$|3OZ~7S%mY5-(Z=X!qvzbl^4LR}+qY^rop>Vi4v169Oo!TOe%a4mEh;M! zG?fZMZ>jfbm;?@)?pH8JI^^yRFl{b>s$kCdbs6}s)~$=a7(M%e>J=q@=F7me$?Tid zf<$nP^Y~h@NA7B6kQ^wfj4Uem9T=8GQz0nQy{YgIH0T~8BnZ?A_zQQ zBM5cgYXqiUD?Z;wO;H&*Ypf~YK4X>f;Ht4Q$3&Qh5o=OfP?+j8s*-5YeJq&Dk!I)g9=0I&?mjohPOZ1LrnzLskjAYMC*Wqat;VHV54bPQ#Sfn%X)1mbm~5o+3N1g2xi zKR?lt=PbQbz;p~#7Q<~X2u#N?WigDJYg0hHb}>v

}#fyrIk*Ubxs2Re))4E9Nb( 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�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 = withContext(Dispatchers.IO) { + val results = mutableMapOf() + + listener?.onLog("Starting to prepare KPM tool files...") + + try { + // 确保工作目录存在 + File(workDir).mkdirs() + + // 并行下载两个工具文件 + val kptoolsDeferred = async { downloadSingleTool("kptools", KPTOOLS_REMOTE_URL, listener) } + val kpimgDeferred = async { downloadSingleTool("kpimg", KPIMG_REMOTE_URL, listener) } + + // 等待所有下载完成 + results["kptools"] = kptoolsDeferred.await() + results["kpimg"] = kpimgDeferred.await() + + // 检查kptools执行权限 + val kptoolsFile = File(workDir, "kptools") + if (kptoolsFile.exists()) { + setExecutablePermission(kptoolsFile.absolutePath) + listener?.onLog("Set kptools execution permission") + } + + val successCount = results.values.count { it.success } + val remoteCount = results.values.count { it.success && it.isRemoteSource } + + listener?.onLog("KPM tools preparation completed: Success $successCount/2, Remote downloaded $remoteCount") + + } catch (e: Exception) { + Log.e(TAG, "Exception occurred while downloading tools", e) + listener?.onLog("Exception occurred during tool download: ${e.message}") + + if (!results.containsKey("kptools")) { + results["kptools"] = downloadSingleTool("kptools", null, listener) + } + if (!results.containsKey("kpimg")) { + results["kpimg"] = downloadSingleTool("kpimg", null, listener) + } + } + + results.toMap() + } + + private suspend fun downloadSingleTool( + fileName: String, + remoteUrl: String?, + listener: DownloadProgressListener? + ): DownloadResult = withContext(Dispatchers.IO) { + + val targetFile = File(workDir, fileName) + + if (remoteUrl == null) { + return@withContext useLocalVersion(fileName, targetFile, listener) + } + + // 尝试从远程下载 + listener?.onLog("Downloading $fileName from remote repository...") + + var lastError = "" + + // 重试机制 + repeat(MAX_RETRY_COUNT) { attempt -> + try { + val result = downloadFromRemote(fileName, remoteUrl, targetFile, listener) + if (result.success) { + listener?.onSuccess(fileName, true) + return@withContext result + } + lastError = result.errorMessage ?: "Unknown error" + + } catch (e: Exception) { + lastError = e.message ?: "Network exception" + Log.w(TAG, "$fileName download attempt ${attempt + 1} failed", e) + + if (attempt < MAX_RETRY_COUNT - 1) { + listener?.onLog("$fileName download failed, retrying in ${(attempt + 1) * 2} seconds...") + delay(TimeUnit.SECONDS.toMillis((attempt + 1) * 2L)) + } + } + } + + // 所有重试都失败,回退到本地版本 + listener?.onError(fileName, "Remote download failed: $lastError") + listener?.onLog("$fileName remote download failed, falling back to local version...") + + useLocalVersion(fileName, targetFile, listener) + } + + private suspend fun downloadFromRemote( + fileName: String, + remoteUrl: String, + targetFile: File, + listener: DownloadProgressListener? + ): DownloadResult = withContext(Dispatchers.IO) { + + var connection: HttpURLConnection? = null + + try { + val url = URL(remoteUrl) + connection = url.openConnection() as HttpURLConnection + + // 设置连接参数 + connection.apply { + connectTimeout = CONNECTION_TIMEOUT + readTimeout = READ_TIMEOUT + requestMethod = "GET" + setRequestProperty("User-Agent", "SukiSU-KPM-Downloader/1.0") + setRequestProperty("Accept", "*/*") + setRequestProperty("Connection", "close") + } + + // 建立连接 + connection.connect() + + val responseCode = connection.responseCode + if (responseCode != HttpURLConnection.HTTP_OK) { + return@withContext DownloadResult( + false, + isRemoteSource = false, + errorMessage = "HTTP error code: $responseCode" + ) + } + + val fileLength = connection.contentLength + Log.d(TAG, "$fileName remote file size: $fileLength bytes") + + // 创建临时文件 + val tempFile = File(targetFile.absolutePath + ".tmp") + + // 下载文件 + connection.inputStream.use { input -> + FileOutputStream(tempFile).use { output -> + val buffer = ByteArray(8192) + var totalBytes = 0 + var bytesRead: Int + + while (input.read(buffer).also { bytesRead = it } != -1) { + // 检查协程是否被取消 + ensureActive() + + output.write(buffer, 0, bytesRead) + totalBytes += bytesRead + + // 更新下载进度 + if (fileLength > 0) { + listener?.onProgress(fileName, totalBytes, fileLength) + } + } + + output.flush() + } + } + + // 验证下载的文件 + if (!validateDownloadedFile(tempFile, fileName)) { + tempFile.delete() + return@withContext DownloadResult( + success = false, + isRemoteSource = false, + errorMessage = "File verification failed" + ) + } + + // 移动临时文件到目标位置 + if (targetFile.exists()) { + targetFile.delete() + } + + if (!tempFile.renameTo(targetFile)) { + tempFile.delete() + return@withContext DownloadResult( + false, + isRemoteSource = false, + errorMessage = "Failed to move file" + ) + } + + Log.i(TAG, "$fileName remote download successful, file size: ${targetFile.length()} bytes") + listener?.onLog("$fileName remote download successful") + + DownloadResult(true, isRemoteSource = true) + + } catch (e: SocketTimeoutException) { + Log.w(TAG, "$fileName download timeout", e) + DownloadResult(false, isRemoteSource = false, errorMessage = "Connection timeout") + } catch (e: IOException) { + Log.w(TAG, "$fileName network IO exception", e) + DownloadResult(false, + isRemoteSource = false, + errorMessage = "Network connection exception: ${e.message}" + ) + } catch (e: Exception) { + Log.e(TAG, "$fileName exception occurred during download", e) + DownloadResult(false, + isRemoteSource = false, + errorMessage = "Download exception: ${e.message}" + ) + } finally { + connection?.disconnect() + } + } + + private suspend fun useLocalVersion( + fileName: String, + targetFile: File, + listener: DownloadProgressListener? + ): DownloadResult = withContext(Dispatchers.IO) { + + try { + com.sukisu.ultra.utils.AssetsUtil.exportFiles(context, fileName, targetFile.absolutePath) + + if (!targetFile.exists()) { + val errorMsg = "Local $fileName file extraction failed" + listener?.onError(fileName, errorMsg) + return@withContext DownloadResult(false, + isRemoteSource = false, + errorMessage = errorMsg + ) + } + + if (!validateDownloadedFile(targetFile, fileName)) { + val errorMsg = "Local $fileName file verification failed" + listener?.onError(fileName, errorMsg) + return@withContext DownloadResult( + success = false, + isRemoteSource = false, + errorMessage = errorMsg + ) + } + + Log.i(TAG, "$fileName local version loaded successfully, file size: ${targetFile.length()} bytes") + listener?.onLog("$fileName local version loaded successfully") + listener?.onSuccess(fileName, false) + + DownloadResult(true, isRemoteSource = false) + + } catch (e: Exception) { + Log.e(TAG, "$fileName local version loading failed", e) + val errorMsg = "Local version loading failed: ${e.message}" + listener?.onError(fileName, errorMsg) + DownloadResult(success = false, isRemoteSource = false, errorMessage = errorMsg) + } + } + + private fun validateDownloadedFile(file: File, fileName: String): Boolean { + if (!file.exists()) { + Log.w(TAG, "$fileName file does not exist") + return false + } + + val fileSize = file.length() + if (fileSize < MIN_FILE_SIZE) { + Log.w(TAG, "$fileName file is too small: $fileSize bytes") + return false + } + + try { + file.inputStream().use { input -> + val header = ByteArray(4) + val bytesRead = input.read(header) + + if (bytesRead < 4) { + Log.w(TAG, "$fileName file header read incomplete") + return false + } + + val isELF = header[0] == 0x7F.toByte() && + header[1] == 'E'.code.toByte() && + header[2] == 'L'.code.toByte() && + header[3] == 'F'.code.toByte() + + if (fileName == "kptools" && !isELF) { + Log.w(TAG, "kptools file format is invalid, not ELF format") + return false + } + + Log.d(TAG, "$fileName file verification passed, size: $fileSize bytes, ELF: $isELF") + return true + } + } catch (e: Exception) { + Log.w(TAG, "$fileName file verification exception", e) + return false + } + } + + private fun setExecutablePermission(filePath: String) { + try { + val process = Runtime.getRuntime().exec(arrayOf("su", "-c", "chmod a+rx $filePath")) + process.waitFor() + Log.d(TAG, "Set execution permission for $filePath") + } catch (e: Exception) { + Log.w(TAG, "Failed to set execution permission: $filePath", e) + try { + File(filePath).setExecutable(true, false) + } catch (ex: Exception) { + Log.w(TAG, "Java method to set permissions also failed", ex) + } + } + } + + + fun cleanup() { + try { + File(workDir).listFiles()?.forEach { file -> + if (file.name.endsWith(".tmp")) { + file.delete() + Log.d(TAG, "Cleaned temporary file: ${file.name}") + } + } + } catch (e: Exception) { + Log.w(TAG, "Failed to clean temporary files", e) + } + } +} diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt index a0a910e1..7c37ec3f 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Install.kt @@ -19,6 +19,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.AutoFixHigh import androidx.compose.material.icons.filled.FileUpload +import androidx.compose.material.icons.filled.Security import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment @@ -66,6 +67,8 @@ import com.sukisu.ultra.ui.util.* fun InstallScreen(navigator: DestinationsNavigator) { var installMethod by remember { mutableStateOf(null) } var lkmSelection by remember { mutableStateOf(LkmSelection.KmiNone) } + var kpmPatchEnabled by remember { mutableStateOf(false) } + var kpmUndoPatch by remember { mutableStateOf(false) } val context = LocalContext.current var showRebootDialog by remember { mutableStateOf(false) } var showSlotSelectionDialog by remember { mutableStateOf(false) } @@ -102,7 +105,9 @@ fun InstallScreen(navigator: DestinationsNavigator) { navigator.navigate( KernelFlashScreenDestination( kernelUri = uri, - selectedSlot = method.slot + selectedSlot = method.slot, + kpmPatchEnabled = kpmPatchEnabled, + kpmUndoPatch = kpmUndoPatch ) ) } @@ -154,7 +159,6 @@ fun InstallScreen(navigator: DestinationsNavigator) { } } - val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) Scaffold( @@ -188,7 +192,12 @@ fun InstallScreen(navigator: DestinationsNavigator) { } else { installMethod = method } - } + }, + kpmPatchEnabled = kpmPatchEnabled, + onKpmPatchChanged = { kpmPatchEnabled = it }, + kpmUndoPatch = kpmUndoPatch, + onKpmUndoPatchChanged = { kpmUndoPatch = it }, + selectedMethod = installMethod ) Column( @@ -247,6 +256,33 @@ fun InstallScreen(navigator: DestinationsNavigator) { ) } } + + // KPM 状态显示卡片 + if (kpmPatchEnabled || kpmUndoPatch) { + ElevatedCard( + colors = getCardColors(MaterialTheme.colorScheme.surfaceVariant), + elevation = getCardElevation(), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 12.dp) + .clip(MaterialTheme.shapes.medium) + .shadow( + elevation = cardElevation, + shape = MaterialTheme.shapes.medium, + spotColor = MaterialTheme.colorScheme.primary.copy(alpha = 0.1f) + ) + ) { + Text( + text = stringResource( + if (kpmUndoPatch) R.string.kpm_undo_patch_enabled + else R.string.kpm_patch_enabled + ), + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(16.dp), + color = MaterialTheme.colorScheme.primary + ) + } + } } Button( @@ -327,7 +363,12 @@ sealed class InstallMethod { @Composable private fun SelectInstallMethod( isGKI: Boolean = false, - onSelected: (InstallMethod) -> Unit = {} + onSelected: (InstallMethod) -> Unit = {}, + kpmPatchEnabled: Boolean = false, + onKpmPatchChanged: (Boolean) -> Unit = {}, + kpmUndoPatch: Boolean = false, + onKpmUndoPatchChanged: (Boolean) -> Unit = {}, + selectedMethod: InstallMethod? = null ) { val rootAvailable = rootAvailable() val isAbDevice = isAbDevice() @@ -335,9 +376,9 @@ private fun SelectInstallMethod( val selectFileTip = stringResource( id = R.string.select_file_tip, if (isInitBoot()) { - "init_boot / vendor_boot ${stringResource(R.string.select_file_tip_vendor)}" -} else { - "boot" + "init_boot / vendor_boot ${stringResource(R.string.select_file_tip_vendor)}" + } else { + "boot" } ) @@ -537,7 +578,7 @@ private fun SelectInstallMethod( elevation = getCardElevation(), modifier = Modifier .fillMaxWidth() - .padding(bottom = 12.dp) + .padding(bottom = if (selectedMethod is InstallMethod.HorizonKernel) 0.dp else 12.dp) .clip(MaterialTheme.shapes.large) ) { MaterialTheme( @@ -635,6 +676,137 @@ private fun SelectInstallMethod( } } } + + // KPM 修补选项卡片 + if (selectedMethod is InstallMethod.HorizonKernel && selectedMethod.uri != null) { + ElevatedCard( + colors = getCardColors(MaterialTheme.colorScheme.surfaceVariant), + elevation = getCardElevation(), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 12.dp) + .clip(MaterialTheme.shapes.large) + ) { + MaterialTheme( + colorScheme = MaterialTheme.colorScheme.copy( + surface = if (CardConfig.isCustomBackgroundEnabled) Color.Transparent else MaterialTheme.colorScheme.surfaceVariant + ) + ) { + ListItem( + leadingContent = { + Icon( + Icons.Filled.Security, + contentDescription = null, + tint = MaterialTheme.colorScheme.tertiary + ) + }, + headlineContent = { + Text( + stringResource(R.string.kpm_patch_options), + style = MaterialTheme.typography.titleMedium + ) + }, + supportingContent = { + Text( + stringResource(R.string.kpm_patch_description), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + ) + } + + Column( + modifier = Modifier.padding( + start = 16.dp, + end = 16.dp, + bottom = 16.dp + ) + ) { + // KPM 修补开关 + Row( + modifier = Modifier + .fillMaxWidth() + .clip(MaterialTheme.shapes.medium) + .clickable { + if (!kpmPatchEnabled) { + onKpmPatchChanged(true) + if (kpmUndoPatch) onKpmUndoPatchChanged(false) + } else { + onKpmPatchChanged(false) + } + } + .padding(vertical = 12.dp, horizontal = 8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Switch( + checked = kpmPatchEnabled, + onCheckedChange = { enabled -> + onKpmPatchChanged(enabled) + if (enabled && kpmUndoPatch) onKpmUndoPatchChanged(false) + }, + colors = SwitchDefaults.colors( + checkedThumbColor = MaterialTheme.colorScheme.primary, + checkedTrackColor = MaterialTheme.colorScheme.primaryContainer + ) + ) + Spacer(modifier = Modifier.width(12.dp)) + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringResource(R.string.enable_kpm_patch), + style = MaterialTheme.typography.bodyLarge + ) + Text( + text = stringResource(R.string.kpm_patch_switch_description), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + + // KPM 撤销修补开关 + Row( + modifier = Modifier + .fillMaxWidth() + .clip(MaterialTheme.shapes.medium) + .clickable { + if (!kpmUndoPatch) { + onKpmUndoPatchChanged(true) + if (kpmPatchEnabled) onKpmPatchChanged(false) + } else { + onKpmUndoPatchChanged(false) + } + } + .padding(vertical = 12.dp, horizontal = 8.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Switch( + checked = kpmUndoPatch, + onCheckedChange = { enabled -> + onKpmUndoPatchChanged(enabled) + if (enabled && kpmPatchEnabled) onKpmPatchChanged(false) + }, + colors = SwitchDefaults.colors( + checkedThumbColor = MaterialTheme.colorScheme.tertiary, + checkedTrackColor = MaterialTheme.colorScheme.tertiaryContainer + ) + ) + Spacer(modifier = Modifier.width(12.dp)) + Column(modifier = Modifier.weight(1f)) { + Text( + text = stringResource(R.string.enable_kpm_undo_patch), + style = MaterialTheme.typography.bodyLarge + ) + Text( + text = stringResource(R.string.kpm_undo_patch_switch_description), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + } + } + } } } } @@ -719,4 +891,4 @@ private fun TopBar( @Composable fun SelectInstallPreview() { InstallScreen(EmptyDestinationsNavigator) -} +} \ No newline at end of file diff --git a/manager/app/src/main/java/zako/zako/zako/zakoui/flash/KernelFlash.kt b/manager/app/src/main/java/zako/zako/zako/zakoui/flash/KernelFlash.kt index 1fb67a71..c81dbc96 100644 --- a/manager/app/src/main/java/zako/zako/zako/zakoui/flash/KernelFlash.kt +++ b/manager/app/src/main/java/zako/zako/zako/zakoui/flash/KernelFlash.kt @@ -6,9 +6,11 @@ import android.content.Context import android.net.Uri import androidx.documentfile.provider.DocumentFile import com.sukisu.ultra.R +import com.sukisu.ultra.network.RemoteToolsDownloader import com.sukisu.ultra.ui.util.rootAvailable import com.sukisu.ultra.utils.AssetsUtil import com.topjohnwu.superuser.Shell +import kotlinx.coroutines.* import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -16,6 +18,8 @@ import kotlinx.coroutines.flow.update import java.io.File import java.io.FileOutputStream import java.io.IOException +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream /** @@ -78,14 +82,18 @@ class HorizonKernelState { class HorizonKernelWorker( private val context: Context, private val state: HorizonKernelState, - private val slot: String? = null + private val slot: String? = null, + private val kpmPatchEnabled: Boolean = false, + private val kpmUndoPatch: Boolean = false ) : Thread() { var uri: Uri? = null private lateinit var filePath: String private lateinit var binaryPath: String + private lateinit var workDir: String private var onFlashComplete: (() -> Unit)? = null private var originalSlot: String? = null + private var downloaderJob: Job? = null fun setOnFlashCompleteListener(listener: () -> Unit) { onFlashComplete = listener @@ -97,6 +105,7 @@ class HorizonKernelWorker( filePath = "${context.filesDir.absolutePath}/${DocumentFile.fromSingleUri(context, uri!!)?.name}" binaryPath = "${context.filesDir.absolutePath}/META-INF/com/google/android/update-binary" + workDir = "${context.filesDir.absolutePath}/work" try { state.updateStep(context.getString(R.string.horizon_cleaning_files)) @@ -121,6 +130,20 @@ class HorizonKernelWorker( state.updateProgress(0.4f) getBinary() + // KPM修补 + if (kpmPatchEnabled || kpmUndoPatch) { + state.updateStep(context.getString(R.string.kpm_preparing_tools)) + state.updateProgress(0.5f) + prepareKpmToolsWithDownload() + + state.updateStep( + if (kpmUndoPatch) context.getString(R.string.kpm_undoing_patch) + else context.getString(R.string.kpm_applying_patch) + ) + state.updateProgress(0.55f) + performKpmPatch() + } + state.updateStep(context.getString(R.string.horizon_patching_script)) state.updateProgress(0.6f) patch() @@ -162,6 +185,206 @@ class HorizonKernelWorker( state.updateProgress(0.8f) runCommand(true, "resetprop ro.boot.slot_suffix $originalSlot") } + } finally { + // 取消下载任务并清理 + downloaderJob?.cancel() + cleanupDownloader() + } + } + + private fun prepareKpmToolsWithDownload() { + try { + File(workDir).mkdirs() + val downloader = RemoteToolsDownloader(context, workDir) + + val progressListener = object : RemoteToolsDownloader.DownloadProgressListener { + override fun onProgress(fileName: String, progress: Int, total: Int) { + val percentage = if (total > 0) (progress * 100) / total else 0 + state.addLog("Downloading $fileName: $percentage% ($progress/$total bytes)") + } + + override fun onLog(message: String) { + state.addLog(message) + } + + override fun onError(fileName: String, error: String) { + state.addLog("Warning: $fileName - $error") + } + + override fun onSuccess(fileName: String, isRemote: Boolean) { + val source = if (isRemote) "remote" else "local" + state.addLog("✓ $fileName $source version prepared successfully") + } + } + + val downloadJob = CoroutineScope(Dispatchers.IO).launch { + downloader.downloadToolsAsync(progressListener) + } + + downloaderJob = downloadJob + + runBlocking { + downloadJob.join() + } + + val kptoolsPath = "$workDir/kptools" + val kpimgPath = "$workDir/kpimg" + + if (!File(kptoolsPath).exists()) { + throw IOException("kptools file preparation failed") + } + + if (!File(kpimgPath).exists()) { + throw IOException("kpimg file preparation failed") + } + + runCommand(true, "chmod a+rx $kptoolsPath") + state.addLog("KPM tools preparation completed, starting patch operation") + + } catch (_: CancellationException) { + state.addLog("KPM tools download cancelled") + throw IOException("Tool preparation process interrupted") + } catch (e: Exception) { + state.addLog("KPM tools preparation failed: ${e.message}") + + state.addLog("Attempting to use legacy local file extraction...") + try { + prepareKpmToolsLegacy() + state.addLog("Successfully used local backup files") + } catch (legacyException: Exception) { + state.addLog("Local file extraction also failed: ${legacyException.message}") + throw IOException("Unable to prepare KPM tool files: ${e.message}") + } + } + } + + private fun prepareKpmToolsLegacy() { + File(workDir).mkdirs() + + val kptoolsPath = "$workDir/kptools" + val kpimgPath = "$workDir/kpimg" + + AssetsUtil.exportFiles(context, "kptools", kptoolsPath) + if (!File(kptoolsPath).exists()) { + throw IOException("Local kptools file extraction failed") + } + + AssetsUtil.exportFiles(context, "kpimg", kpimgPath) + if (!File(kpimgPath).exists()) { + throw IOException("Local kpimg file extraction failed") + } + + runCommand(true, "chmod a+rx $kptoolsPath") + } + + private fun cleanupDownloader() { + try { + val downloader = RemoteToolsDownloader(context, workDir) + downloader.cleanup() + } catch (_: Exception) { + } + } + + /** + * 执行KMP修补操作 + */ + private fun performKpmPatch() { + try { + // 创建临时解压目录 + val extractDir = "$workDir/extracted" + File(extractDir).mkdirs() + + // 解压压缩包到临时目录 + val unzipResult = runCommand(true, "cd $extractDir && unzip -o \"$filePath\"") + if (unzipResult != 0) { + throw IOException(context.getString(R.string.kpm_extract_zip_failed)) + } + + // 查找Image文件 + val findImageResult = runCommandGetOutput("find $extractDir -name 'Image' -type f") + if (findImageResult.isBlank()) { + throw IOException(context.getString(R.string.kpm_image_file_not_found)) + } + + val imageFile = findImageResult.lines().first().trim() + val imageDir = File(imageFile).parent + + state.addLog(context.getString(R.string.kpm_found_image_file, imageFile)) + + // 复制KMP工具到Image文件所在目录 + runCommand(true, "cp $workDir/kptools $imageDir/") + runCommand(true, "cp $workDir/kpimg $imageDir/") + + // 执行KMP修补命令 + val patchCommand = if (kpmUndoPatch) { + "cd $imageDir && chmod a+rx kptools && ./kptools -u -s 123 -i Image -k kpimg -o oImage && mv oImage Image" + } else { + "cd $imageDir && chmod a+rx kptools && ./kptools -p -s 123 -i Image -k kpimg -o oImage && mv oImage Image" + } + + val patchResult = runCommand(true, patchCommand) + if (patchResult != 0) { + throw IOException( + if (kpmUndoPatch) context.getString(R.string.kpm_undo_patch_failed) + else context.getString(R.string.kpm_patch_failed) + ) + } + + state.addLog( + if (kpmUndoPatch) context.getString(R.string.kpm_undo_patch_success) + else context.getString(R.string.kpm_patch_success) + ) + + // 清理KMP工具文件 + runCommand(true, "rm -f $imageDir/kptools $imageDir/kpimg $imageDir/oImage") + + // 使用Java方式重新打包ZIP文件 + val originalFileName = File(filePath).name + val patchedFilePath = "$workDir/patched_$originalFileName" + + repackZipFolder(extractDir, patchedFilePath) + + // 替换原始文件 + runCommand(true, "mv \"$patchedFilePath\" \"$filePath\"") + + state.addLog(context.getString(R.string.kpm_file_repacked)) + + } catch (e: Exception) { + state.addLog(context.getString(R.string.kpm_patch_operation_failed, e.message)) + throw e + } finally { + // 清理临时文件 + runCommand(true, "rm -rf $workDir") + } + } + + private fun repackZipFolder(sourceDir: String, zipFilePath: String) { + try { + val buffer = ByteArray(1024) + val sourceFolder = File(sourceDir) + + FileOutputStream(zipFilePath).use { fos -> + ZipOutputStream(fos).use { zos -> + sourceFolder.walkTopDown().forEach { file -> + if (file.isFile) { + val relativePath = file.relativeTo(sourceFolder).path + val zipEntry = ZipEntry(relativePath) + zos.putNextEntry(zipEntry) + + file.inputStream().use { fis -> + var length: Int + while (fis.read(buffer).also { length = it } > 0) { + zos.write(buffer, 0, length) + } + } + + zos.closeEntry() + } + } + } + } + } catch (e: Exception) { + throw IOException("Failed to create zip file: ${e.message}", e) } } @@ -176,6 +399,7 @@ class HorizonKernelWorker( private fun cleanup() { runCommand(false, "find ${context.filesDir.absolutePath} -type f ! -name '*.jpg' ! -name '*.png' -delete") + runCommand(false, "rm -rf $workDir") } private fun copy() { @@ -195,6 +419,7 @@ class HorizonKernelWorker( } } + @SuppressLint("StringFormatInvalid") private fun patch() { val kernelVersion = runCommandGetOutput("cat /proc/version") val versionRegex = """\d+\.\d+\.\d+""".toRegex() @@ -288,4 +513,4 @@ class HorizonKernelWorker( private fun runCommandGetOutput(cmd: String): String { return Shell.cmd(cmd).exec().out.joinToString("\n").trim() } -} +} \ No newline at end of file diff --git a/manager/app/src/main/java/zako/zako/zako/zakoui/screen/KernelFlash.kt b/manager/app/src/main/java/zako/zako/zako/zakoui/screen/KernelFlash.kt index 50a94e24..75ff72ff 100644 --- a/manager/app/src/main/java/zako/zako/zako/zakoui/screen/KernelFlash.kt +++ b/manager/app/src/main/java/zako/zako/zako/zakoui/screen/KernelFlash.kt @@ -54,6 +54,8 @@ private object KernelFlashStateHolder { var currentState: HorizonKernelState? = null var currentUri: Uri? = null var currentSlot: String? = null + var currentKpmPatchEnabled: Boolean = false + var currentKpmUndoPatch: Boolean = false var isFlashing = false } @@ -66,7 +68,9 @@ private object KernelFlashStateHolder { fun KernelFlashScreen( navigator: DestinationsNavigator, kernelUri: Uri, - selectedSlot: String? = null + selectedSlot: String? = null, + kpmPatchEnabled: Boolean = false, + kpmUndoPatch: Boolean = false ) { val context = LocalContext.current val scrollState = rememberScrollState() @@ -79,13 +83,17 @@ fun KernelFlashScreen( val horizonKernelState = remember { if (KernelFlashStateHolder.currentState != null && KernelFlashStateHolder.currentUri == kernelUri && - KernelFlashStateHolder.currentSlot == selectedSlot) { + KernelFlashStateHolder.currentSlot == selectedSlot && + KernelFlashStateHolder.currentKpmPatchEnabled == kpmPatchEnabled && + KernelFlashStateHolder.currentKpmUndoPatch == kpmUndoPatch) { KernelFlashStateHolder.currentState!! } else { HorizonKernelState().also { KernelFlashStateHolder.currentState = it KernelFlashStateHolder.currentUri = kernelUri KernelFlashStateHolder.currentSlot = selectedSlot + KernelFlashStateHolder.currentKpmPatchEnabled = kpmPatchEnabled + KernelFlashStateHolder.currentKpmUndoPatch = kpmUndoPatch KernelFlashStateHolder.isFlashing = false } } @@ -107,7 +115,9 @@ fun KernelFlashScreen( val worker = HorizonKernelWorker( context = context, state = horizonKernelState, - slot = selectedSlot + slot = selectedSlot, + kpmPatchEnabled = kpmPatchEnabled, + kpmUndoPatch = kpmUndoPatch ) worker.uri = kernelUri worker.setOnFlashCompleteListener(onFlashComplete) @@ -147,6 +157,8 @@ fun KernelFlashScreen( KernelFlashStateHolder.currentState = null KernelFlashStateHolder.currentUri = null KernelFlashStateHolder.currentSlot = null + KernelFlashStateHolder.currentKpmPatchEnabled = false + KernelFlashStateHolder.currentKpmUndoPatch = false KernelFlashStateHolder.isFlashing = false } navigator.popBackStack() @@ -216,7 +228,7 @@ fun KernelFlashScreen( .padding(innerPadding) .nestedScroll(scrollBehavior.nestedScrollConnection), ) { - FlashProgressIndicator(flashState) + FlashProgressIndicator(flashState, kpmPatchEnabled, kpmUndoPatch) Box( modifier = Modifier .fillMaxWidth() @@ -239,7 +251,11 @@ fun KernelFlashScreen( } @Composable -private fun FlashProgressIndicator(flashState: FlashState) { +private fun FlashProgressIndicator( + flashState: FlashState, + kpmPatchEnabled: Boolean = false, + kpmUndoPatch: Boolean = false +) { val progressColor = when { flashState.error.isNotEmpty() -> MaterialTheme.colorScheme.error flashState.isCompleted -> MaterialTheme.colorScheme.tertiary @@ -298,6 +314,17 @@ private fun FlashProgressIndicator(flashState: FlashState) { } } + // KPM状态显示 + if (kpmPatchEnabled || kpmUndoPatch) { + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = if (kpmUndoPatch) stringResource(R.string.kpm_undo_patch_mode) + else stringResource(R.string.kpm_patch_mode), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.tertiary + ) + } + Spacer(modifier = Modifier.height(8.dp)) if (flashState.currentStep.isNotEmpty()) { diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml index c5df4fad..6dd8762d 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -620,4 +620,34 @@ 未经签名的模块可能不完整。为了对设备进行保护,已阻止安装此模块。 未经签名的模块可能不完整。你想安装来自未知发布者的模块吗? 钩子类型 + + KPM修补 + 用于添加附加的KPM功能 + KPM修补 + 在刷写前对内核镜像进行KPM修补 + KPM撤销修补 + 撤销之前应用的KPM修补 + KPM修补已启用 + KPM撤销修补已启用 + KPM修补模式 + KPM撤销修补模式 + + 准备KPM修补工具 + 正在应用KPM修补 + 正在撤销KPM修补 + KPM工具准备完成 + 找到Image文件: %s + KPM修补成功 + KPM撤销修补成功 + 文件重新打包完成 + + 提取kptools工具失败 + 提取kpimg文件失败 + 准备KPM工具失败: %s + 解压压缩包失败 + 未找到Image文件 + KPM修补失败 + KPM撤销修补失败 + 重新打包压缩文件失败 + KPM修补操作失败: %s diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index 15faf5f0..f8cf97e4 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -628,4 +628,34 @@ Important Note:\n Unsigned modules may be incomplete. To protect your device, installation of this module has been blocked Unsigned modules may be incomplete. Do you want to allow the following module from an unknown publisher to install in this device? Hook type + + KPM Patch + For adding additional KPM features + KPM Patch + Apply KPM patch to kernel image before flashing + KPM Undo Patch + Undo previously applied KPM patch + KPM patch enabled + KPM undo patch enabled + KPM Patch Mode + KPM Undo Patch Mode + + Preparing KPM tools + Applying KPM patch + Undoing KPM patch + KPM tools prepared + Found Image file: %s + KPM patch applied successfully + KPM patch undone successfully + File repacked successfully + + Failed to extract kptools + Failed to extract kpimg file + Failed to prepare KPM tools: %s + Failed to extract zip file + Image file not found + KPM patch failed + KPM undo patch failed + Failed to repack zip file + KPM patch operation failed: %s