From 645608eda1105601d8f7d181cfa8c51c7bd5a109 Mon Sep 17 00:00:00 2001 From: LukeeGD Date: Wed, 4 Dec 2019 15:11:24 +0800 Subject: [PATCH] Updated scripts! * Included BuildManifests, downloading otafirmware no longer required * Do not delete ota.json when already downloaded * install.sh and downgrader.sh merged into one! * Autodetect distro/OS for installing dependencies * macOS support! --- BuildManifests.zip | Bin 0 -> 54839 bytes README.md | 9 +-- install.sh | 46 ----------- downgrader.sh => restore.sh | 149 ++++++++++++++++++++++++++---------- 4 files changed, 114 insertions(+), 90 deletions(-) create mode 100644 BuildManifests.zip delete mode 100755 install.sh rename downgrader.sh => restore.sh (76%) diff --git a/BuildManifests.zip b/BuildManifests.zip new file mode 100644 index 0000000000000000000000000000000000000000..5d9f286328bffa138d57d6f6e99486d5f67c6fcf GIT binary patch literal 54839 zcmaHyV~}Ufvaj3S)3)uNw(V)#wr%6z_Oxx=Hm7adwyitw-sjvMapT-a2 zeAX{>$xDHPp@ISdK>=ww2g#-Xa#JyY00JT=0|LSa0s<0pv9LClF|f5THF0ugV`SE| zkT)=9qG6=7x3+L{zSLY#PG>;%vF+)fs;J5hOR3gHr&O+t#^_YmYiB|vB0+=_91QjK z60}jG?V9A6Z&&qU4DpebeUfz)ny6^OSstw-{DJhOtA_^jp#tv-!4_xM)r}pqfYDUZ zVwc_RxpcuQ+Rz<;kB2&^4WMyr6umkFAC~C87KpZrPH*!Sn-^>Q1365!tky=Iq4-TU zT(x`-BCY@q+Cjx|@CNoCJJXuL;T4C8Ds8DtHhIxW5S*}-K9Xyf&F9e+bc@3&6kV1! zQxHas*}WG(_JBnQRv1j7HzW7tKAOTvSiHnTIR6$KU+87`0;lIYcnR>fnyHP;`CYR( z?wuSA|2vEjo4pPuHf2@u){A>mOFzWK0Wd#%KGNlXKpo~mb5}24&YUxBN)jIwXF!Hx zyo&0jvlEKdEYm6kVa-7Z%N&*B0{nuds&hcZ?)b=2ICBXa4;>hzDTW`6PAV~jwu|iTBqLxTx=&H{RKjZ*uB_whGc_)hWPF|w7x^PY^5P^l2}5O%Yu+9DCr}m?)3rE-$e9o-=FOD} z>iSY2YJ(g)MPumgQCu}exv<;l6QT*e}J#B@y2hVypr`*4ign|l8-k!3h@zS*y zDNwCQpHYd`yF-Pw-NsGwd>N8uct^tu!|D#_*Ney$Ul<;&G=v;c;;&e4rV~(0X4rzu z^V%KcV17DW#I;K0l`2W_@AH!#*R&xCD5{|R1iFDaA>UosJx%Bz7I%UZND`bmDZsi9C~m>k z=DrdGW)Jx1>gU~vVLaSQdX{qN$R7`X>DmNBV>mXXd(Z;R12ylFF|s%5Mz$61dLOR0 zSH-~kJDhsfD&yu{3>Iv{)Gy%T7Pje(a6#?EI|znGzE%frrnXS71-&<6ZaV3x$pnk~ zEIE97v}f{6W8XgD-?Q}YTQ>%+3mGv+u0+_1PL?+=qSgHF@4I0O59aG*EhGwZ$+X`E z7k5hpy>L=rkvEl_EF#xQFwU37x;kQDv!XKvzi%y4yU%r&U^wF$i|Hfs7})pP#+G!rN=$}H zsqjuXwoOX5$&yM!wupr@%ZXwA{7O?pOLe8NNyTN3*{)`L`CL>5Sk!B7jYQ?tI}mGB za-ZJru2j6`ew7rt?RkpnXq^38P0~VZ<|SQOt5`q-bon_zV@6fZCI&LIJ!)^g)Qq}d64DaDV5Rs%IDh*~ zUI(BqNUMb{UMIZ4r)g*B1AY7}g2oskwUMM#tbK_Sd@yy3WVZB7fLg7_%8{ad7DG^1 zU8*W$$Xi=OcZbhaY^bjLSXQP4fD*%t`imip?IM31X?US2OCTpGpevOXr#v4WXF0>o z#r(G1^#blU3a>w@@iO-cT2KKFlo!`?;zd4J-B|aaqu~o^hGd>PqO8or z$TOqF2=_{~A^*NDqL$!WFAXm}6MbdN`&Y^KsZL?x4VL`>O-}lMlanA|%d`>_2&kXx ze@#wI|DBw)oYDnQeQg0E>B}qu8w;}Z15JJU`2pm&MGgHC6}@})k`H-3UG5fC$!s>3 z^IS@1xJcbjyYExkhxIkvo1uN9An{QBZK%6AM7Q(!yGj^-Cpk>k1&^- zE>~-B61cfR*^OQiCgl_*$FL;B4nSC1)=)|d{zWB z2r^ljUyVnJay%zEJ)w=N-P=QrV#sIfB&oPp#~rJ&IEjl2h9?Qd@)vVh`g2g#E$)D{ z$-@c6Ct}LsfP_g^YElaA@-(LW2sXfpby3(6az<4+5soL*sp&E0`yS_YHV|U;hsF&A z?>8w~k7Pd6m$>OFwb}8&B7BaWe_PETTf86ea6JFK&~@YnEyJZx8t|w_opL&~m!J%m z65{OSdA4H$OkSuc5g>vQYYJ6yO^+ZDan{|275nujIMzE+{G1XJVR=OwhZf&K{FUu5 z-s+lebU&hlDG+-BzNV5tOWk0OaxuBtG-D#_QK{F&QV@(GURBz~na!=V9%y^HSfmuCu-LI#w#4zPn2r-Z`Vs7r98BsI2niw1 z`Q2`q^{ozy8Xt!}J&&&@(-o(Bi72;NnB=g8(OuzRN1khwah!4WBY;5cWCTycmMWfR z{F#-zwel_fjV~NBxq8luU_Sf;Q>!qg+k>MRZj;Tvgg^SnTa)<3^IkBo_2x(bRx`O! zicZv?{hNIdAE|@^{!eY_TACD}F6|{q%XiqrKw?Tyn=4>DMH{`h^aXU>hp9igERuHTA1)x(?!(;cv@)8ftywH{;!KnayzI zS4Vp)tElr%iceZc@*WSuJ(9B$>sTe|QAIq^J+so`XLZSp`0%ZH*8<*n+F>)QY305o zI<|O{i#p%hsNt*VME)%^806ZRWdX7>`sMU17Gy&ec{|7#Q^wnH%U{E#efHy#?`bI| zNqKMXSRbng`CEC#&PQR=NAT;(GbtV^Vp;nsd2cLCnD>P4ogmMAP6h)wZk&GB^X$1| z9X>&WTMN8HFx^=o1yS)OMBDwRcFsiaQJzv5GH59_S*P*C^mZi5Ui3e*mTuz-b{@j9 zHdwyF6zVPA7^WfY}u14@|}4H2=hHY)yIfXfP!lgw69F3gGcEwbs& zcCitksgb9ZoLyc3<^#?jFD5p%QgBsTuU_J&YT=@7pK162c{)TuuGY#axtUv*Q}BhY zDsu$>!4ZYsO#Sqr@eh+K1vqh5#5BHPiOEKbkb>};8w-7#xXCV@#_hPi`b6ZnNV$p2 z$C!O-2HbNowGSiF z2@LxOBoY44p=MK?!mj`~5MIO@Ic9>Zl@ET}FO>N`)!%@-!)gEWx3aB6RJ~2!>>$ti4kIq~XKhb^cVmA2(rH1!tVmbVVh z>Syh(xa>1NBWdS2^chJ+)V}XTbeSzFcasw6YG??gxdYwT>VB!BeX~mX)p$&ZhxiN5U3;oBuFmyWA z-OCo`?P(>pthBD>-fYzXQ-8ix&GGpA86)4*cC5m}^NiB`mu9SPkf~FvPJ2lbtzHF* z$5u?xmW|H7t+t)1b24V8j9TR^6^-7wju}n|8DQ{`d{C|Am8q!zXAy0dmL!|TrB+gn zGc~sFuxPn5^+$I&Z;X*N)17Pc6ce3BN2*&a+f8eV_7xfb`sS-ykAq*l^*+jf^1R{S zJTKEBONa#p1myDbf6epE|DES0Qqlzw`6zk}nbZmh3H5c8hmWcY0?x^5g3+~BgIswJ zT1pg9@`={}Nbh+Wzz52xxI8|qsIfZt__nxYb+E#c9C+DX-E+Qu!Fv|l5l#C#Z8J-1 z+OSjs7lobjvBCq=Lc~S18ZhYQj<3Y$ai%l(gF1-kfHD z*Hu_BZ5Z`e|7rGSOM|I!IfI}d<_2d-BZcaS-h3s&4taij6{`x9_Hub|R)b;xtg1^i zT&_7Y07Zh?RV;4w0UJaVW|!>~@9UbF0VN>1?k%YH&BqytBqpOq zRYPE!ZiDZ2fmvt&VhdWAnV@&ph*z>p{@vu63-hi`PrajyS8r?R$I`|4w-CBD?Q$&@ zyE6*cc=H!xZ%t}9kb!BT@O=+W(=@}qhqiPiWJjgO1H@HkTqE3HRP8^tNl<>mhvlOl ziqruGpjMIJ#dbJ8>ICJjLm1#*eQ8{e49tWOIcO4c0N#?+Pmr}g5y$KymPX`oZ0QMS z`Vyz;J#9d#ry#?F!ItE(Jw&DPDW(Q5AA+4I!1;8tg<$L zY8FzRcTFRpJO-UduB(45&AquMb1wV|v3uVpQ4)Ddiz7W9R4Z!Vb}OAJl$vwo`l<5y z+O0hJt{J%c$Ksmiwy3DPfet171SQL+*2!C+Y_ARqUM-eO$sCkN${2ZtFBDt^)0f{x z{7&}DF|;rlhEELAh4LF7m=psovo*rjX{2dYYN%8yDk^q@B-P#H$T~2XA$yKS3l{J^8P`AW z3rOo#vclHz`kW}D*BLdIE5IV(@=+)6_90bPI$x`~Klj^dS<_7Ky|a%j()U{zP%E1X zlh>}20k+az?&30O3D!*{CwSrrsWu+nWsL-q<8hk#yUu((lFi)5d?in>M#J~86sYsK zayiaD9HDE>1fJ#@CZm$6M~)@l$r;kc83eL%kUF*>#+X`$Iwddl%BHuuCnS3H;{|KJ zc1bq(8JIr0V7UDp@1O9NpRSX$Rz_8eE@CQ8FmSH&)xTd%0M4s|Zx@4@A>1YqLK(2H zx1%Wg*m@!+8+6SjiUYM46N(-)bI^k)5D6uh7XfJ=Acrv&GtAH@!%n$DI9kY-NB#RC z!Ac=UfZFW!JjFZPxWG{)jC&M1IVs_8F0 z=9E>q$G5Q7Hs$#P{%ttI?WQTY!5uya7@jcq=xUA>5XE5eCBQwqcD^Jqr&!jP(v7h) z?P;^_k(+S5q=_EY^PM_3c!2v~Kf?UJaoWtlUVpSe3Y)6qVn9o+H8wd8n^g$CH?Lk9-wcAocDE@O<8^?lM`7GZ`8c2h4}S|jxue4hKfu0I&ee4zk)>+6f@jC zvrC;scpzz_L(B4<lHz#r&!mvqeTcf7u(8711-{Ih^FyNbfd zRT1;4(dPO?hw$%r|UOuItd1)KTRKhH|t%PQi>BRA|ca(m8f6>r7}~FQI((p=w*4fUs1- zb|}XM(yN9mcGaUq^l_!E#%m2OMAyCl4_T_W0C4S>{UMK!&9@uONs_%!x~IF)JwW4w zVr(z&H^5QtSW@9rIfLcc%P|I$`3`R6W-^;i{msRWI}W#{RdFDW{4*|<50yeeU);fP zZ_jyBKiei9$Hr(qE@H5022guc7Ii^tWJO~|aEb}@Z$zv%pJ+6QxGl<+Z zJfRz4)vUUG?a=Z@vGUG?R(To`5eldyCz(_ua~6%C3qUDO+eH>ZTPPo^SFW+l<)j+1TQ6~h3E+<}2RIeTv;dc-U$ZFSyogs7tQe zjd^MDaRBh{OxW-S`wvuT{DlgWrjEJczv4mlU-5wOe^$25?QBh0{-bScx&6h8f6E7K z#1YWET@K8eeK`6HDcRtvgpN*alpZH`*ZIxLQtOR%7Q7|hK{U(_4cqM84dYjTwe9IH zaiWOKUVx8;YIzFA3_HmDZPjv0`dW8B{dTv<+gTdJ&f=gd;HvWqbc3VkkaFPp0g+vL}yzG+5D9-oI*p`Dk{jU%L(3hD)o)>}h)t->#95WOfQ z95PDszoyYgeb!$Bj{8jdf$~THJxEn4ZSHOBvUE`qGK*%u9%qM&JwxTjlUm~97tB46 zJs#fXvTwO(CknZ-9Q5$Mv!(x(i_9g3Gbl}u(f7N6N(EfACYluF?>4!tOuY?Xgci*^ z@rC+_tMqzXyJOJ`jK}wjUn=I2KV2%$=>z&@k>K=#<@j%%!@8l+q7ziAb&a4)5Ehk# zMrmjFVvSZEq8%`kPM{fFU`IL#BP0`jLO=|{lP_MPQ`{xd2WN0V5<|W0XFB$WX97;( zG%9v;KR)yf45A$15D#+U6e%cis?iNk^d*kPy5RlOjsyFJfX~g~>P0bX5Hbs3j^R<$ z5AP-&Z#}D|aoJNM*~^$5Hniz-GZIdx^z-daWwM%J zu-7GTHE<-94gvN(g@?}Yr4M4L7bVkNqqx%iJtg>!XnAmd>*%=f@sp;ZDqK+?oS#_9 zz7mu~WNsX=Cf?>DTP)qYccp1Ftsfe7$x9KuK1Czv1sPsL^N8oHA^t1p6gOZ3&QBxk zn3z$L&>@!r%poqRC*-mL4}|%{U^ifdF8k+tq3VyGUyyaQ-*gZMIyOq-*tWXj>}bOc zXTya^!wh9ma%Acpo;zlFHwm1IvcS~TV@ZgWpSTeO_x=lYGi*n~w&c&rJegvTRC0Od zib;V?e9-qEI!gXm{W&+Z^dnD{mKFFXQUbaOZ<%_xpXcdVJbu?X^CiTso#kq!l1;j+ z(*+UL^h^AQCb{-=ymc9p{XoXWos4gotrO*&y*KbvBlfsSF;%IpAXmm(p?>fCe75Qz z3BhdKhBbE1?P)GT3#V!95_U@snhqEfk595prh3~Y%cHhPnwnVEBcc_33^EawDN70O z9lYCZK9kYzrV2UCEEP|Jkx=Z0x5bl0xM@gm!-Pld=65al^plO1n$!=RzhuWED!dVVr?}a5a9CF zbXBH?Ti8(-1>6T@C+he^vv}+{vInPzW?0^g4mM*jZ!vV-HjZgIa5|q@w7)x)sIgYqWL`E9%eMhO#him zMg;MT@1r2>`6Pt5!li7bOcq=s=P?dVOvlwHA@w_4KU0d+|H*LsC$;yV+I-B9GTzyCJU_Fl*mI`aRoM?rh zKCHU6&k3!EXAew0e2Wc2o?v_{@(TjLBK7)glFx}_D`D8JXzf-xLz3t|i3Ga(Mv8FA zsCIRntXA?;6};*JZF+NPV0d-3m>Gu$L-zYn9c6eWv8~zk50XM7r^-QUH_)`m#dDK{ z_H5>Jk4PyBFdYE>1!)_K=!gI(d@Raj@lO%G#dPCO=$s2>>FJ-4WgBITECHzb((n_I zg)toyY#`y8BX6~Xu5(Xm;@q?mMF7aO zOO&%%ZT>xPm@vrv@Rp3aqh z)+D7(m2%o)>(;jYBw6>2LT$S_)-NzGJ=4H8@i6ZfF)QW`?>hlE4w2V!O2~(?-{3J? zgM`pvK4Hay-QAT=ytmW%AD8l~iFOKnhmCdCu7CPwC7Fx&3iHH42W_keVbBg4spkA&p!0RDp>HLmZeuIt5^pzOl+U0tpR{9~g_Yem%%qAo`Jcrqyw zwFY?xs~y5|f?aKM>eJ=v?60!mM!#U1cR%x!oCoHWboT7XDoJSXOcT*D+e}bUp4&2C zrQ#&(7e@#oDvnxs1tZaxm0;@hu|#dXB)pE7$q5YYg(qTy2`%mgm$NwbpH^tO27Dhk zu3cSFxY55Age!9US2hB|@lwngqANY&{WX4I^oOS}*XGHZ8 z2)_(|i6tI5N){VkwYe||$OfgHal!vV(*2p4M?|CE`%JPy-a@q_;=Wmtj_;lwIXW#% zqW>!YGFlmpYYf@k{qUnv3#dkQYBLSr5sHP#m)b;)y8bgVdS-ziNZWqk6Ml9U1M@Va zy=_#oKK?hhKp>w33QFy&j%r}n+C-vN_ zLd>GS7?&~e<)L(ATjmsx?MEW6MNWLdn-yvh)JUPeZ~aIlFz;>MUXwPJrY)(gI&?&klsEmeje}%@ho_9|B@ot_@`r~+evOxP z5gY%aLy*Aq8fhr_+}iya5MybZQfvMIVW8wk3u9n_bW8lXWcGt^WmN4^JsNcU!~7Do zT_kD!Vl?><8eceS|F%z9W3~ zY2Io*ML1-x$CTbdZ6%oqv#3jto-O(=Uu9$D+pK{X@u;lPwRk4(;6fqqJ!AA>jEDOI zrbst;Tfp7MLkPBKVgOqkj;q9z`C|AEoW$2+W}%3w*`V0ImeT@v%Erw;9rqIWn{J?r z4)+81gRyL|TbuzYQo`Ed#_4957QLXd+xkW-G!USR*S%n1z;>EcVcNd$em`^p%;L9D zk;(r;2JZ|1mAYW4N17ToNZQQt!uhg~9;u+JNB(jRI?k2(x@b~N5cU~Um1081i_Y~F zbs$mmpxZr~MSm}rN2(VG2|MLI_3@7Zf`1#h=e++f1NT-}+B})B0~!(vo|9W})yo-% zWiNu@g`AT<9t`crNz%S^C82 z2`hUS#}_eLG@=?l1{d2rnHznG`0&1U%d_R_%&AzeHA(n|i^cR^zuZqvCz-+cRg9gY z625q>Kqx+`hR`W^DSS2z8OP3GNO(U*{l5i#gd6fUGO)VUv0;-YFnltzU56!I61jF9 zx_T14>a*|dS&vCW(80c-$1;bGQ(7{IN-(uDhcbu$y_2Y+CQZJ8{*G;y;+lJ!vvV)` zEtkkNccFch9`KYRhffq3fS$=0tyfEFr)@>=!dYdcp?aF%EIeaL%ko z4CZ5N)6B@-swEqGVod{B!ku!G3@`4p!u7?X7^i%ue3}jGN+B@DecmFYA@lj~XGUc& z_#Et*0z(zaf^3|aGSeeCP43{oj*7u0I@{0>C(eq&qi-9ewWDt_!MF{h9HN|}8qgv| zSX+6b3cTy=FNXPSiC#e_GFh>b1%DLXS=8v|petrcsu;|Ie7HZ_MS&Q&d~(ZK1aW&v z*(ZzmwSY1Hv!i`lV7nhH|ExCCSL!C!3{uSo9mY)n#*EJKQhSp;x;C~RgHL;AX1QVQeoYlr zg093kTs07Hc>BdTLGlg*gZG99BXrN_`I3e=!dCL~60;N>_7x59u%u#B`}+(qE#%vJ z3-=%5A^S@_5=?pigwQ}h{JH;s;`#4}i7YLrd~wv_95;Ruwwl!ukxpZ3X00&NTVxTz zgcqjZ8ACB!wlGG7_f-r=+hJGl{%sdiV6z6ZKTbblz)oiPw)WLL(p(BoPgNB_Ycf;_q6 zIS^5B`E81?cF@W6ajz|qCB(Pg=T%yNo<~`K0udHNWqLL*V-4lGLC@sHQx2SMQup`w z!i3pVG5*Dk(dEAy{;Nfysh9&Oo3o6pdfE(_yFmRHfc7`kJMlSUg70b;wU|u(Iw~ z#j=T8Al0fC$lMr}9TGUrp+_vCmZJNIS<= z?o|jCF!AIbq9YKOVwVEPG7^U*0@lWeQZIzvpri;wue{qNOjxE#!3z5G1~}VH;4$8A zXV*!Q2jvK}nP|KTm27KGjOWq@;eriLDx9CTzEnHompL^DR)cv#1-A;O^xVhdmM4Yl zcB(^Xn{J6SM)aPmo?ZgV6dUijmz8A2jOP}V=&$-uAapg!foi9tj5){&h?77KySXR3nCtqhUoi0G*~bJ0m{3NYNm2r_ z_um;<ap7LwJFBFBZ9+YcH&=-W4+Gkb}nXYP;8=p9rIIa}t@&eNZFCtyTQ@$y7qkgpFpSfrM^~j5*v=mN3O3%e#I`8B6^HQ+|h{{zZeaY9d*SdJ7YHoa(1&aZcst@l0!Nd*nDXi>>IDsMRCa{;tk7~(Ex9eKG zwkZ6k68IrNw1suil`9dO-IZqCZZ~(`C}={XwFTosMhw@f8yX(Amqr@=+NXwz1mUCM2xx0#- zTADr~`NjI=`f}nl4={cZ8zP0%Li<90RSps-E{6X2icGVyoBkNe=SZy!#5p{Wq>RFv z4DXk8_tH3)+WTSxpi12#Jh&t<z0C{Q5(Ttd;nh_^J^pLRo>3@G4_BWjpOn z(vBLm{$%q*N3Ug7s!eZk;7QrLliBNi+?zW&=%2w-|HI(q*Nvx%oG{SmgJyhPvEJ@+ zwTO9JgjBV;ohABf)_cw|@39Y>MdBVlM5MomQsGGH=-(TbKB9h_2)KG$NO`~et#-t_ zj+yc4wJN$RTUfqa&8q(RW0_?h^LRVLz_MM#Vuw~~KRaxtw* zBc$P@f1$_QDWU za=`qKmv zsVF+8ys;52>XNGd#@qCtcvs<>ov1BjqiZ#;tmUt~4Th2repe6a%*Km8Q`9S8EJIvG zbv%Q)C>v(jZiXEs9TFbqNvtoq*gTqOq|AyDS?76=9ghb$C?!uHOAku|##G-*+k0<_ z{cgN%A9rK;kc(6?UM@x5^O!ev)#0_JZq`8;*9HQRcrEt+q|Z?EnBOLJ{auRWzmA^f z$IKpuRUMScBL=-MpK_eOrq3n}FVh}pm#uI*5!gm76OYm0$T1I6pDU)(Xk7vwh^6ha zQ#nSLPbU4C@7UM05r5Z1Ac#*3m9&4hzdm;qBeXNLbG>1lIvhOuiQa9=0u$HolAb8h zHaSVgyI0v?wRl6AhkS>88g=585Rl_O9}QJn`91C>Nfc9r50Znsn&)}f4|jIxZfsx-(IeY*y@s>T+}Ek2Djsx~r* zkTM?D8yHvk2Y1%G9sYu1!ac#6d=)Tkby$0YNbSGR57Gl1} z(&@m0j_y$!@iYB;KgO2A(EIQ25#IQeC$t%>``#Hu21h8u@%s zLF*l5D}CvLBR?ziC5PV<5aa6eaU5kgK)CgS@gK0H`U{qqEE34Ef5GzZe*w$??$F6v zb!!*>3zq9W#FJL#G<)&c56hs28)(4GDcK65qy`Ctmw5m$1tW@LQW=_rU(*NSJ6&!e z^v_erhJG8Lb@dY!;1Avdb$}kzxraxzMv7?DmAC6E*025HX}6xR%Y3dxNwsQ= zm%gM0H0;H_MVE+t_hnWhk??YNGS>14Pqe|@QpNMPGf#A|D?8LCZMu1VtE6m>rKOn? z(rJf0j7l7ZTIGY-C6G%lY*UO+cdl98$y6|Y->=gvq-p?Eo`Izb+?qcU=1fmPe%AW5 z-?9JYkR0TB&eKyTHAnA!`CcE>+BKxEvpfF@+T@nPyIwXos#yq*onGtV2?qkWtk5*n zQoa%JKr~+XYfBEp5ruypkf3v=j6ROi38YJFH4xy5CI|wgcKz-skbK!j10l;>*G6sW z{Hh&+rl=>KyXTswtcwa-53HE+X$uFCrztW3m*zQ;bT}vgnZ#7l+%JUA(~bP?l4s5( zHSbLIlw07`!_a)pzV;n$ahQ>%=+?E8$oaWzz%si0sTz4*CMkGqSfbKY0v{1rzpL@q zC}aiO1&EsYgVh{wFk7hCT87VXfk{7GXLB;>9&T?Stv?IaO|bvuo&jzfwcJHXop;Wq zd$VByElr>}J&_(_qn=k(`3a%r9UCqo!Sh>Ldzt8G!xG4&cHIBH=QFF zM>}KgI%4$R2Z`rc_he1Cl{tCDht5ARv}U&Aeor&tOXEwYn~RHKmp$zxpQASMZQ>)= zRoYHD4XY2y_(Ku40QGOrToK2-{tq5^v>YbN5vBe&yTb?|Zw`oNS3CD5Hp+StlJS|K zUH~6r`TDzUX6ON@CdX>ARVE7dc|o?yI)a~tP!&8cPPzy~nhy)~&mmI7kzQoDZ^kLT zQ+&Q(SHotwHdjXY$uG;x2Re|m_RhyuN)tI#9 zPk8y|WLm1zU@RI?_*vO@$*F2FFvlzw-@{{Kk1wj_XfE_^4pGYJ=@Bdby;(YPsh2#` zNIH6H#2rL_ATbDwoK$7n>4m$M)Q5a%IX}AtfQ#fIp@KztQ-L{&6}CO8>|)Y*pjK_m z|KaVgIa_*6iJrWHoOgK94nNF7e*OgFnSHCsq}-up1y=Z1<)cF57kd}48d#iLRdpd< zGE;dJte_vO;D+7>^$CGc>Y70y+}m^TKDco;LYMRIE~BKH)mYQI>;4U>V^BNw+sMT?SoasB9wuSsEAaGt-zICIpsQ?a2in`)9=0-R_!M*{Y^U zjaJc~>%QEtr&ATQCg=eGC$6r~=bv>t-VvjW&e6r3(UF&*QncM7rG&xMB#LVxVP8udRmrQBYNyeg1$Gk-eTq-H#aFoOP3wnG%K)5!#ui-Aw$>(VRX7B2Xh z(J&6&`=g!M@Hksvz}OO8VY z+WZOiF>$)1w?x4XO+$wdnbe-GV&k@|2`dQ05P0?)m_xKfu_Gr=`w zm@_meKN|=8_AyT{VeaXk`Yq(SkYf8&+f}q|i5M|Jux;q*_1@%*CH{bZ036$Z&%js6 za#xR_HY}K|1?v9CeF8d+l8PSrJBe}(;L&iMavPBP{NxOeBX6wjh=C4D?6rg={UviSrPm9i$xwh#A^h2_a6ZYQ_+ zi_)C2nQ8-+CzL0OLi8^ekVtiP$H>~8T7HW<29?L)I>5In$YS7)^G$}NFwF#)WX)}@ zxmpkodMb|mR7}MB4~9FT1VLiFi2K`Z1b^j0|7ue^vM>iNJI`|bahp~9gN zrP9=~;U3)G-g+yjZr^1f%kSIGmUm1?;O3NVeVqB^I<0w?D{b!W>LO+Sf#(!ClRCrk z?-k6p&LZmOF?deq)>kyNrr2Qx?1NDyPcojuW=$P@kD<$Jbie=TTr8cZ^%Mr|r?Jvf z-Xsa~_55IiJH_p(i2>WZk{&M-4Of%gJ}lSyptK8Sx}l#?|I;6@ zrKg>@t>86h9cOwTWO}Y+mwk3KD`!G}-!7lViVgh^gq?P}R#Z_v7{H{phI-LeG(Ozv zarURXx~kLq9Qo~M&=k5Njo7iB5=(}JRWkl}ciD@^sQn&IZs^ppgx;4Qm7ewJjLmYO zm%!*|?#?>bakE&2ZwOq$b744|h0xUv;iTN%-!M|v{d080?}gKI{^i2$&evCYu>kW& zAG-(fu;YX7--ah1Gw@IYD5|i4Nh72S7$lgkxy;P&1_n>$8 z!T!3xBI@((w-GPWXIq}8d!wj-!u0RZ!=Lt>Py5EzPH)=7{$HOmFtAy2v(~m=^B{dM z8t8O=?jQj^2GK}SC{g=pFvFJi9+>PwinkR6?>h@)_COo1J-V>W_^=Rgr3h-|yoWxx zw7vXl-)k&|&BK6)MA62CMliEBsMuse;J$8#VR0z|O^{B*U3Iu_fYeQ#8Hy?hedXGG z>@>}|^J-}Ek0r8%vByFXl55&DS;uK|%z%7vm*-ieR#&QZ#7W0*SJF0_DoxCrPt~>y zuACVk$}#o}z7dlAA7L+>H=gj3PiBXB7Q1{Zb;jeFjrKqODx|g8vFKMp=(2jZcn;+( zgsJ#x|9$W#D=Z}kPBsaO;_9e`m^T4sDu{B zZ`e+~6kIf@-u4*Ml{Qs0xY30dDclFX8FmtOOv#dd=^I8~`>RLj%w2vjLmInrwi{oR!1Td$1(-XztrlL1@{fQ@oQx&*hTXnZ%O7 z5EFT3MUR;hnrm&~c3a^uAkGeL{|98L|AMU3EvIzB-+s^VPcOHGy3$IvShkCY3-?lAG=!yFVkJmZma=G z&r<7S8$t&e)%Q=*BX?$4CllI}&QUF9`*Ge1TwdQ-CWk5oY6L!4?9ACFZyfUk%ZaYM zPOg0pD$@;w!>pperS&W-3Zz*ehFLqz(i%92ws4|5Iy%M!l2lxe)~JPZ&PkR7p+Y5D zRzwbB7i(S7vrKv4j-2zm(m4mNb-PPx^k1scQ#-8khDbKeWLQmy@u&ug@V1@ZySVtY&}PxiX3I7@8oxB1jylWs^O$5Zl(Kc zd~L+s!fDf<Biz9<4658aS6#hYim>{S&e5bi*ju{_=Q{h9_J0`coQ$dF2HcTdeY zDEsY4ZadDUTdn2Rz%RWr%+DVlj23=G4|S3Ha8rF%r{q*zPb_{0{UWw99SDsojUi$?!bG#WG^81kul@5wDSv)>Nl3Fz!|cru(UU@>Udpol zEnSvQ+f4xKs_nHbFb30p;ASEcJ`zF`;p9i1oxQ*lrb@tLF^w4Yz5ybVLU_nSM@REP z%D@|3(qnfew$es)CwES>ZH9+?>vNxwi2wG5Gi30)pvKEsL@|Q74m@B;e4TOdiEpqc zM_CUALvR%1|9*cjZ!b>T!@eR|{=>osp^*jzi{HYpRwEjp5A z=J@*Qw#iC7QT%tWI%dYXJgnAl_42V=Fqr{FV~(0 zd&*UHUNSvkZ=cRF>9excZ^ zbhK%#f8H|XW9ASwlEVkZ92snIV0IuULHni>5TUMY7#Wun$8S?dY4T{1ptq9sp%xi) zb%D%+@j{o$(S76J^TzQDq-7#T&hG<+gr5W;X*pYito$b*Su5%z>cb*ZgsMU=;loj1 zqeJ-HmALWOV>_vgWR-oj9-yqFD`QHgn&L1T^Ubqxlzko)JCHBX_pbqZ#D5upeS>}b zw*i#52(RI5_|LEY_{+Ue##CCzW2qLZBs7-KR>TnS@31^Ok#vR==97{#^iL2$5t^TM zgSpeWInC;c^>4;`^cV0xT@FdYy!)0kIe@s`*1VLu3YXC3*V&!cJo^9NIF`Ka7LWmF z*Ws^5=PK|1`3%18<-4qL+m$o9hl-;V!Pk36!|hrjyQ?Zz4WnGeP8?&2#{1*Ig zzxCzx{o8Nhec!v}he!eTZg=;ZdG|%EI?+18*PGkP{L&634V^Sg)vrdR{BZ}jghu~| zu(yn=BkH!aad+1M!GgO5_aK1)!8N$My99R#E+@FVySux)ySw#)^xOCLH^%MnXN>{7 zR@Eta_L_6gda+T0?0pmtqw96;eXQ=u{4+z@>w0PI^XA=>OC?z~ll-&Ct>K`5kdY_? z-k^lceRZR@rLD@XBK^voZI9L$C=G+h;YLK#+u%kZGu7fm;6_Ygg~}@da3U~s;=MOU z0wW5Jc%)pTB311)-AO_qNoX!q3-0N(Kbt(1F*3+N<#cYp>JcA`(Ri&k9B`hi^5CPXHpP{yT}!cGR^)fjrn6k5)EJ#$ znbkQO*Ucg$L(T&5Qw7-`%|^@=v$Oy=$4c5si~d7~C%dMq_2w&GhBZM%v=&<@N<&p{ zMso^v_)UNK5I3%J;N_@y?%}omR3=+QO_pcKZx#nw?~2_76z|CZ-lh$GUrc6CHqz&g zLNXpn@*_r9CVzY(+My%dm&4#j^Y<9@bKpNH5^a;0M+M$K6{mp?{2$j5a`Tgmyp)i! zL%sIhH~9VIC44Pj0hq6eay$k-`$oK&9k)1oM`n2|P}OM}W*plWOr_Xa{8?{T695m; z->4pAT*E=>zB+DUOk(z8_Kms|`B0Qn*TT;;In}EJRYY>S>v=giFTe9X&wtVj^8xq( zN>x}3I|h6K&)r)Q#{d{lm(ixZmU1(|Q;e4SpkK$hV&fDw;%!-5LlnCIG9&|*(wc@2 z4*y`c0gkL-Id3mc7iSlzW`*%jzp1WzRkPVUk2~=LS5NMiKa@Gk9&Bw8j|n*_VR^j* z%zRVEpq|YybJyPLns2);coSN)=mZ9sI=q5#z9&q*DzfdaU?277&7G;u<64qGE$^nVKoX@ zgd6E(`UyU(a$&$VrVNo2bZbXTG21PgGNip`H&JpRwZRCF^22VNX=0 zI@I6_0W;kx6?^kcq`D>iDJC32{27m#zvgZxiXR%{iu`lroOlwXN|N~%LPmlPe(&oW zGcN@y*n8_8qGIq1Zi{F3Q5GbAyzuVf?&@*fcy=#bmDIIt*igFT$>6f_%sF3s^Ztw& zc-hE-kJ-tQt!ABlxrS+kt=VE4<{R&x<6?$uSiFCvNi|CHtiB-pFSelvvdtBY6H_LT zZRGzSY{T{+wvljJWCZ%%PV)XXV8Vc?Dau_8Z(RK@ss|&q^GNH!e(7;nLM)v( z#hR#|10BJ}as8X!M&sLaIVz$fDpxk*8fU0X6^@4;ut^7w_`)N%l{JHNoUl%+xiC7uCjc#Dj}w*q*@ zMsM-hbHcz}3eQx4RO*e9y&Njn1tQhtT)iF$m4P3D#t@0wi%67GF%#Mil}KfpbUPPB zSO}wS<#fX0wKGGdV{h$B>SEP1St=?{fzLSvy;aSj=pe)KC$U9`7q?Fej|D2>M?Fk( z;a>^YB7gt3DrHqEDX7wxNm_l4FE9w~jNLk1WA;8$CrkkT#BD*1|J~z;h+l`1jzZ5f z9%J)H)}yyITeQ#_js-g2lr2w4f^7{w-0ebawX&*-n1p|28RpZ#k+MgKC6z9pD@`C=>0s$-lO zcu?J<%RO8EZH>}XN8NDB(?L^Qjljs3BrordEY_;4+!Ap&5@Y_uayKO?20OuGJCPhd z^-|*?5XYIcF-|M~vieES6Np-rxJLlga^!GPT*GbkcIV<~vXYxZ0L zs%DQkdr&N+9LqKp`6)?tGmCkPE(038e4{_kP>*|87@COECgtpe;IAju(=0JysQWW? zI-TLkVhMDPmDl77z-HL7V99=Q-xr{JNa~gh^d~br_pp916*v|Z_^yGm0YH@6aS;T1MPfG=B|jywB?B~I zO;NN}b3a)10a80K^TS?D=IeM5vYekJNMjg>Ze_fm(cb@32J!icR$`M)~nUjT6tafq}cEZ&xojM<0kbUEgA@`XQkL`2vBxoC*e%j{yiC z2_F9qfc}VRM16|%a*Lx}G8DaO}7|w~xmAhyRRASW}*yd0T zbE0v#!*BD3J;qp^ykE2zc(sOI7y-b{5d@#QZ05d;33B?r3zA-}KBhjKe-(7uWXXke zobUSeU5lpo@D4-A5%jf1?WF!u>aMnZpi9YnryFSG7Nvs?_k8z)%z>>It1m4wOx<6& z`39fPNky^Urhtp;sSe|WUA9X3upe(Vh8L8Qjf6j2)x{`=dYBl#JN*{z0zPHlHm_`+ z%p#r4Zh~flyft(jU}Uu|expgwx!u|Mp6jZId>yh8ekPL7Ze7cR#ZO1qm*%8SH+Gt) zDYa&KjP}SXGQ7*M9hSdMFQO`eA1@)*6(CtrHM!oNBp@_rmpA5>8#7U1a3+SWJ`-g; zBX$*FFJ;Rz$2SPg85Q?Mi45+o6#C42KEJ0`jrrZPd4Uw@CXYYw9c{c|f1|&nO>nyR zJKD(D%h-R|+CI?cCMSD!;EG6LbKNKh=jpf62io`n`~W2?v>#~mIt@gdGpW^-=>62X zPP3zBg@7E@nyHD@-W%a)$ftxgt*D$~|1W#HYg+5?XtRSOEAWmseVl!q>J=*QXv0aZ zIQY~GElnyOLDwEx_twjZvOCx2(k51&a0el-3h68x z^-=9A`gywdM=eyh5RI*8=>l*Ylp7UcO?)^$O={XS+ToDj!JV=mS*{@(J%e~b+x%HT zQIQc{`+i6QXilB=Zi++5Q+AsxB>$>%2AHb>FL< zN@L2$RY?skvNkO7V}GANeT$>IJ8OE7$y-ar{XAO797zJTN6k)|bHKFvtKr8MG11V4 zd;a>J0!0zl(`DED%@=1*X@jvg9{yREjxVL4Xc{2j@+enNprIN5 zi7zB34j(J@G;Xyeri#NVHR#~a{=2hnhbp;UtP3WDBg#2?|0otC>O>el=1x~o#iEo~ z$)!1Qrgo0{g}foRAFTumKcekoAdlrhTjRRjfecfV3z zjR{5@FQY8Sq;S#IO6pg2Kr-wuK(op8J(Klu+N1HFd`BrP3@s}6nOgEEimBp?fxcVi3-6JV>f`S7$M^XzZJAaonpCx3kn4+C0zSz(IZdte&~a{7pe`Ehan-a}ci{UZ}XN%Qq=-Krm zULRLdCz+;G(JB=VNdI(WK4Zq(ZK*yKt`KdhcpU9_vTp2*$`{_i=Dp8Pa?IJ60Qrgg zMY1FuSgNrEkg_l`$UFQqx-wyT7=%W4<`Jw(r}ZUfc1w?l-*RSQ5b@tQ#(>J_6GRS&D>-+T=kXfzPBF z!F`bOURSj5*C8DPJ!-+Gfn4tZEf1{pDGryT4HZ|)fc3evB~GokrIZvF9JMaB>SU9I zjl7W?2|0OaXWb}=i$)yzJWfee;~UF_gil>g)|Dc5V3zhGSnSEUH9DY)ggg;gME?!#R_LIaW&xs!C1{aXs2;Szlk$!7@$3(Lj` z#mVyCPWWN3bQaE(K=s4r->W|G^=z&l@y=kiS-Ld_RNRI|aszRCExKB|oRvelxmI&b0PNatBr0$lrqjx*%fy?wBtD z<;QEF_ydDmM$$FV6x|zUpD}Niv$>~3lv$(AkY=G2sNI^D=&`QnT+W{C z#@F5LY)nMcyp|-Y(3<~cF?^f$1o5VI>}|4zgg#Cz%cMp@Qj0KoCxW5+-m$4z{DPmo zP1Uisqy6{Ul6KCM0%OYeo8MHd+iG-MunH63XjCnLu?G?g^`tAv8{gI_HNK~?iJST0 zD`H_Ko;%%*h#Y8M^)+grI+-7hswoZnSz54J*yU?fO|FEI%&b+75goh^TaB^Ykq0}0 zixaUoB3oFlnw>-bm0e@=Dt_WIHAsjZ_cvVW9Jgh%{WQ?r%^1in-#gfJB9R6^DDOTT%IL7#*hKS3_6{?Ygixxvd+DVQE zvLQ-U_J`(W2_&d2^4v;}N;SnpaoxULE|Y0OVbwwyc_wWwxPwd0HskO-D-oS2Q)sbSu(pi>JgO`jPD6Uj z#^eD{!Y*V)qy{9>+1*y}nIsdDtCj|C<-EJ^ZdRP>J^2T|ri#=#k#?Yo&R$b|&cVhH z=%Qn=)O2cpUOpIJ11J%`ApOaGW!_)-2Z-p{<$cBPi&SkAJSW zL_*zth{4_+blI{J{FdcF6IV|RpVQZa$ZStIw!W8$ROdgx#PN1KjOKp;CQoKvV)?`+ z05P7a#?cHYABX(sn(Ckr5$IWLm7Y`{ewZ(p&3h4R$oq<1@K@n5pG)Sv-A{+1WTX8! zbnn}f9*Z^QDON1q$y#Es^X5_p`69?T6fyApVZ(pc0lFAJHb1KHX9H=fQ>jM%oma(w zj7dUz6>M+CcB?Rz9%Y8(6MMprb4##5Bz)-}W&7fy1UY!K##H-dPN6gs|J?-mOCwVI z(-nWe)|L-_{jTubch(ehh7>DBxE;$JIn8piPflr;9bLs{dH-y z9nY$!()61!FCuc$xtnrt8!JK&Okq++SI(*Ux>m}YqX^Wt_MJRL-ExFhR0V$TU1cBf zOIglWx|9`FeCHA<)F^V2Yigfk8B}d;2j%tC_5VBW#%l~M0!4Q@69c0nq8sWcPz@gP ze*RuYxc?&8kSCV3p3xE6M1O7Z>!KS)^{tgvb@_eD5gzX-| zUT7u1!P}Ugmn%Aq!8OC^ufcsLkXwHyG2Arfud3zWe)@$P07cLxSDTXU1KAz9O-g^9 zhu@T7^Vq#OI;5b5LZFOVP7`(JoRhh$YKClK(II?=`aSY41~c)hS&h-yk=c&uPk z>tJ4=Tn`6XMk(1{Gu$sn4lXOE*MFn-sq-eu6Kmq@CaIIg{7Ias5%*BXX|c9w6^l{XBPiGgLBIe|SuG zrsw`_xAZ&hRT~$V7TTTK0OZ$5#e%!~w5_1!h5Z@p*d^=`9p2hy4FNzL^V((5dE&FS zXOOojS?%Tt89kWWqWpNg?|uzlbHmi}yjZ`=k{Jso?2(?5c3!Si74`aFOP`o-Qea^! zPEh`WLug#o6jPSo)cn#4ih~Y5>HdReP&3N)3vpe*Nf(m{|GfIHi(T18YM*+UmdQyG zD3FKJyJpq}E)df+nB$%$L{pkd{e;fb9hQ7T3-GIMR|7JP^@{)%#z z^v)Y^<6~OW^WjtjOjIc%V~=QHELB}rM!OuLKvuRiKQe`kwrU(bo6|@JvU0>JUM|bS zOJmWDCET3X>&4XxgKkqM@8As081u`zuoV$F6H>;~tY40^kt@Nsc)6dRFRo~LP?w36c|82_Rt`oO-ZQ!F;{0#SJ>9Dp>*f3hQ`wE)>~90WaJ+(z_w|N2#j!~7;0=y;r`>XypAEeW2QksW?xPoxLB!Kuj`V!M zf(`}KZV68ZH6mSSF!uGKdA2n07soNU`iT|R=^3|#Aw$TBvbRCRc)_i5vL;gt`5m!K zNF|=Mz)QrO+K>>|uy)1US0E}E*_gB4W@j~MCoMgM-vZW^S{Di&yJmpv%Jtdt41+M6HdODc<8NUyz5L6!2(+=CkFVj`5J9JcC(tzee7=ZD{iaa} z#Du^13`_2-a9QukpAiw&bWIQS-BZ)kd5ChMm}MoL(pog#haQgyU8MN!whcIdum+nT z(qIBK86ds=g14xF{?QYD%k5+O>Rr(&#P?{e$~Wo__R=m|j*zEg&}b9n$O{g^xJ#y8 zPY152Zd(q?V+V~GvBPqIZ-@N=7TVHSixEa*-AG2SKGQ7$#99aa}CyE06uKVV72^pl6AO3r(TP4)y6$&Iju2|z_vgU z*!6*1$-2IDX8@S_#Py!dqv@SBN)gc*=j!qj&-DFV=w+#Y)N=6C?4OX`?S7cupp(4{ z)^P|4uwwxUfByKI*2#ErAKnARIrVtX&0x-4PCPWJ`#^~}LF0z@_D%I@5IPdOY+^r< z*m=8oBu5+_Rj=@pprdmo*D(l_v$cX>jwdmgBr&&Dv$aR_+27qh6a0F$9bMPOwV;xM ze-x)*pWWY4-GrSF51Dx-4Hhk`oaBq|TK>(Jlqi_l%r+d`N96*ivZZ6u2<2`tk23-T zhc4Lm%MX@^I@ozpH?8Ll&7a109ezASj8`1UEb%ZFPIHd+@dbe=m?Hh|u(&d-C9HONbH<&s)1`vLlwDbeHopC@ zw`nbw)8f1)EOVSc6OPRpj6z20j;|;i+hD2{?V0^S`WmWOMPh%$fTt-sVObKClku0^+$3CXAbVf8I(e z(b!&z9M98IM!2D?pyT_hP|eN>)p~N|&&NK{MEi3q)zI2-G|_;xyShc$P(A*XN}Cj+ zJrG7+r8{;MJXDWse4USSt6CJIIwrr$S(C-9t!wMXX#%2h<-+HL9Uv-eLIO_jtdE?s zQL_N2|epleI9$oZ(9vF)X-tohcBER`3jA!THY-@Ug|_{2;oY#4E;+ z+eqX{W~txoIvAHtVk$sUUhxCTEN6x^M(e?Tx`5Pd<8b_RB)D|An(|p8w(!Wa?^9VS z(Z~ZA{l1u+&NVpW2O7g>h_*tLeemYd*TzyQymwl&Icg-`-Qyd5_IvOvTJt&NQ3>?u z+dEz8@bl#~j6Kl;xw8B7Ky^j=8|#5u5aNBEOcH?EYf=Yw@Nh`~b#bziPv)_RPkC=f zRd65saKoMlUupR^v!TD*e;7CRm9ul(Y6=|cosHl3E`ajRU2;Hh2C%C9u6$&c(6*g> z+rn$(sWWwaZH2#fp{TJb5|R_j3gpV$erBQYpy~V_!$)QOZdVRXQPWs9IvTnmzWh8?yh4&m}%42eH=%W?W2ZkyD;U ztIErL((@&babT49>vGn!wM>;zId<7E!I-WJR)GT%w^p=v%!sM|Xci#G;87@Q+o6yj z(}j=Ck3;Ch^L|mMWrf)2TX?gir?%bb^Hs0v8m?T$*dxrE*x!@ddvInC*ghcMdAury z`*YN$XD(Nor}6LjJL^BS@$7m;%U(>#SfNLIIi7_L6#~KU(_GD?^U(l zaD_V}H=L>_O*043ng40XdQ$-8I1qVO;^f4O~ zpYQMwZB>w|@s#}GePK~-c2`vxeLM)oNpXQ&4ckXfepSznd_wkh93?+IqUD6+5%|fh#F_EopG;Yg!ao#oM7Vs? zK7n#2c{M}5V$(vQjd-1g@EpxQFz)f=u_ps~gT3aI zo0Z|FS1?7K`S|T$j7D$?1Ml3ZmrDJ=6-bPHnjCazp##P- zO&9!*UqEi={+stG-s{D1FOa?l$ij=ogf=0?P<{?ctKfMvOeVw4~7SrPV1=%vn35XbXU zz$5vbjY0}I7Xf+d#L4QG4F=GvkQH|Hpz*(wtRdTa0j@$7X1~{T#iw2R+qftk*<&c1 zhD(ywdpX?+1?(|%&;piLTLes=Y0(oVox!|4euc^5<*~|O(W1?)Um7pdD${7cK=hlY zPf;M;8P_O8(&e2#go}9&o9gAIlK^SC>6xQf%Fyk#Z_G@@%|zBZUeWs&0``OL-M|*n zqaZ^?*y_8}1r*yFDeD0%ey6782zwTwH+YYO0Jo57g0J|W*G}8^VSnCm-$GoYjzS1L zTV^{U7MzAXZLR2bEWblh1lKt)Sp{gq$+qVF*-wPD9^1qhJaws(^o;hfarjkYj zFa$-Hq#`H=cwZaLI{98p!ukW{fAvqZ5Tew&4)o=ga8jB`!XLo>XL!E;&0)%$X|thjNqwumA&T zA&z-J(MyAQ_%p7DN({+uY{+5A=h!lc`;$|DsC`$IieiGuaJ7rBPkd~Bl1BlqmPRWs zj?wE=!*%ubCB)YCTKMdzi5i%FdW5adaWvtTilkbURq^(C5W9&$ublv{fB2nnk?#`q zIs{C$VG)WEs>q)b|A-R#mb~s5q?ltToLu$nA(3F!%!VXHbYr8dR@fk9+4`w7RGNKQ z*nbOz)QgH6OTckIU7r7m?Ic(jm=aTmbWKqXoI`MAlICWMsb%V&)|(_slXgovn&WSx zFyML$>8UXJ?D^MwNP}{87f{?y1Ka<{R!`F22ZFzbio?zIA>$jb-HoY0%4AZnx{iSw z0{G@!%%4GQ{}IZsLgIuV8aDl|OUe^QIJ+s5djs0kH2#R=e(7gADgg@Tuw1`fZ#4<; z8Mld@a!Wuw;_&PtTvypYQOOOCpDZc-f%}|Bc%x$BoGna0tu^SMBDJu*)hjENace@g z%##xHiNllrCvoN1Wgw$w^R+R)4K#i^CL;`HfiUMM6QBl#C4t}keJK6R)y|0eiP=8N z3iRlOUTIqmV42IUP@V<7<&ZqSVX{hMUSfFeJeK?3zRmDNtUw%r!;vN8h8xNK(z_2T zCALaCtbJm|E`N8TAco!cE}FyQ-p#Q&j18hB8hC{nrv8kZl%PvGYwrUG4{R$gIOtY-M7y}->j(Ku9E!jKvfSR zDg4hLBV(NJR1Qp3&e9rR^d-I*NtRVv+@b3_>iW6@GiD~V&+@i!+fxI~mnJpoBI#ExmF;O^IB1NYx2BBDi-5>A;F(S_g0eC`pH5J%Mx zB|%~1b&hP)cZlHd;JM6{yMAlPNE_MsqFO@QgYujOt=fyP%K66iMyeF*QSvYNU8*txErLW?t=H z#ou#g_+($_z^0aoUZCvNvQ)F8S;!>PclLDkR!{vFvs+VpuwKwJVek00k{9Q0sKveTCf14Ko76Ff*M)qqsBUi7+E=^HscaUG!OuLeP7DR4IdwBW-6!=YR z=9T~H?J^!RFZu6!`<{eH4+4Vz*_g+;+nSldvlAgMBF|G5{VZ8xkz#Zv*Tq)rFZz{& zCMEr@m!j(Z&nZ)YDgMvEao|35dl@g8w~uj*#NGm-6W9<~LLKQvaQ7!_+(m{Cnu}rv-yO`RR5tx_&zG zsueLU0;Dv)!qW@Fx3T5)l06=+5w2jM_)(|J9B6Yq8Q*n}p%>bf*u`mDfn#u!)KNb} z9Vq1dgsFe{b*xkC*l#dmOIt#oK2ADx!2VULR$%I~Opb5#mV1t+pk!Uhj>{`Uy4uz{ zL0z9k>$$ZGop+#7zihEEe)_P$-5>$kzl9XrwpMXhhjY6`sT$}J82a!C{0oYyQ)`}C z%$iYa`-YL&W@Xt(emR$TD=Ah$V-#2Fs7|Ad`9_!@y0f_BFs8cPj~p*{HzU(j<)u6) z=akYIRO%PB&>8n9CF^N++~yr5K9t>i}4VMm4VAtEopP4l5ZedR7^$&#!U{SJ-I;Zp7z+kmwDe@1?hn1J}6Z*$h(7gl@zajghl;@Tp z&MNYDX0@0Pfg`-M2N9{lbc;JCQcl`C|2VH&2lBmXPsO%`sPC!==pOOnyu5ni;~a}j z?nvE3{fJ-T+2b*y!3s46O8)#kMA{*{+&ph|g??}8ceWM>_L$0=z}ut$t4?RO5h2$fOhwY3z+{a zErydnEX%gW_E?<1P;3G9h^4~bOWEIv`Ny7P)>oXG8iZJ^^(Rpf4>Xvftu@b|e#Kja zg0yBJXE2{pj)RzbxxrRZ%ilw1IQt?56eCwqt8+$kv`}Aq%ITH!UUm@ZpLcg^9&OeM z|C0WgnL2{GuS!7;ayIP`6(-^RxqMN3_%}opD4Cap{8bDRW?Q$I`84K%7b;)(r{?Cl znJn1wZuLfM``XjVh3oQg=-F>46Jx~=aD-+4_SRp$c$bi+)ZmdeFm{wv%+tV>JEhdf zi?Vd#R&86-1KS$9Wu3S_CMO0I%_l!Zb4&|t8?41EN8dVh>9Wc39_X>waF~i&WrJkq zn>>-TaK40qa>M0icqgZRQ%t@c^#=dT0xAdCF`!^GZeNSsWDJh~9R>p$#ZBaTL?)#F zHUsp+tm2Ei`m(e8(AG_{V>9~yhiGny zkPX87k{VIzP@S^H00$(7%5%*B;u>xs*Az{OqHF{EfcXETX3j$UpD-9rRj)!ZjE_Fx z+)v2vlD6fg%zE-tT1$o(P^6&Bfy_-|emA+Tw8R)zi6pYciw&*ccB8}3d#P9aETGLV z9(s7nH0!R779LF$Q{6Y1->Wg(|a``zSb8TL454YI0>ZrXfhjDuQ>0UGFK(yI8 z{2DjF7@_Aa9e_Dsq*XKkuN)mNox9l3+L->(dZkYB-UytOp)Q%r~9C93_b zSMZI5_a<*nj>YXLZzXtC#-Zo!71#-cNAYBUZe+5M@!2_QMQUD>wzqZqZmVhHbUr2b znCHi{^~Yi$jeQ|Y-+uLK#n^c*7*TM=5J~$J%}>KdbOvqOi3U!@PhWhBo=D76Vk~=V zMP3!kXjwwa%EHGy7?d8WM=A;Eq2&L0SYF$2gP zQcp`-%yuaLyEHKwL#JjZWe`=F+@LONww#u1li6ZvXkP`HDCyEG-gtgM2=2jV;&JaA zpDI6EdS+df?JH%hl!a`Vs^`@_xMyOVw#WqH!nn(2={3z%|HNPPSv~Lf`07Iieiw*x z%qhWEiE(_5&ejo5!66n}LkC~aq(-Z90GE#wv)7Y9LNyR9S6D$n#2In&80qkH;9Oug zT1CCio`vyY{K{t`c3G2ip0Z_%j>x$EMMmzy_*d6yM9#P6`%9T@zDa}qFto3F>wr{?f8#jHL*&z_egwyky z&RIfyO6h}rp$ZMpOUFh9Di5@n4C$l=bqiyC;D7SAdf*>8Hm}0&`LnH9WPRx`Su`u3 zai9wzqT!R;TQ)6bw590lL!5Apw>y5dB)I3$x(LJ>^@=s->qb>w<_i5LN5$|IztE#FDFWF(|patCBbvep)A$J7l zuVBt}P7^dq=RS!OiHu)T3SU~$FIGVGWiVW0kg1ND%*DBrjMLwKh6f$2%enS}o9y*< z>)+vCoI>;0NGZe&Mi|>klB4TLm8Z=e8bLvd_{fdkV!ZwT=+awwUc!P&wAe zb>FS|k(XHclj33fNI1y$`xHUPpDholzEy&1)wUJRU^Y>k$_VbSSv*dLe{lkSUV*mZ zrP!l(S@I--E9RooCOVjJ1}^CJ247JD$?sJps?KlLwQ5~z=doq~3-rLMZwZUEe>%-| zV=iLd4Rc;R!Kl1X^U2hfrT@dNt`k(?O5D6IpXjdSPm+|e3HxI-?;W>o8l$XlwTE=^ z#^6QcAQ^oMv52bEII2a=Oe=o7+T8fz8F41DLK)M?N2Wc)gIhb{NeWbbcUqOQEtOAp zc9U?u6u*3%R%cNOR^w zJSgWaef=7V$J8V%`iqrftp(Z6vm}QWJhZq_^2hvnE%DKf-?qxrZJ9-DpM_Rw&6>*B zx*W{3!JGqD!E7QdD-%_vxu_VxfQ)AAvg=NE6J$-J8s|vs0Iq<^A1F9rjJh4Q6yI4D zKReTHY`SZM&tQQ0#7r{Ey@pJNLs7LR2g{962hZ2CodXvg1bZKbvWApeH8fTUiZANy2UUAsXjlBZZ@(vm05nnF{@rzq zZ+fr5?wg35N7A!4Ji^w?bQx$9IRjpJvzXj*W;q4kQSFzRY1evA^+RP+5ym6ESy|wI zalv3!zPZC!@fp5kcL-t3Bn&*#xxEmvKks=kr6_#uEixs`8suj~l^|>5yE|4L>H{#6rQ#{nVyCdJDAhY@=bozieC|+OY0gjQy+=*l8@N zcsR&a#kacAR}5fP+h>9JI9NlE;YSHS|1X6Mu{UmFe-CD#T(mbSG(vCB8jJbPi%jVE!ri9|F52GJrcf8F*S15khiLH--aYxwowKw&S)3}Gl5Agi)3 z3%VrurF{<<`sm9F;p9swRsjKCd5uQ(6Ud+o+MPUJ>A0X*&&t#D1M zhR&?>u>C~uA7aW5rBC?7mA&p~%FSY}=Oc)@5V9`)t%s7MhfEXlnD!`@bgvP1ZDLqk zrqwUzUj0;7m7vVW&VC>v^9y&L&qO}+jc%?6 z+p#dQk1FnI4m@m8)J*VFn3dxo9#}G7_Qcwu>0#$S`RVK=^cxy5&e6tbsG--sNQh)Q;Ui=^>NEC}yWC;|q2uyyVr(|g6d zUjSYgmwVsYVD*d2fMm=Z_S)8Fl7&`JU+zA<4oe!qw;2s`8_ZWr#C?eN*TklFV7A*X zm0|cf@qs_$;lhI`ag3kMmkB@#GEe!4vuiiJXWSta4OG9!+BVB($*ThT_=N%wh}d-Z zyFS6{0QU6~UzuLAAmK&X>s1~D`TsnP!UML1OI+_^VxhHD!Et@-Q0{b=~Nrxc)UO~7{FfU`%5ez1i(+7HrcPNou{3HwmiyYYCQG9V@&m_ z&DTt( z45d6kIL;Fi#oPqKG1LD8j{g&Aqp9u&gkz6?pO&;mWjIJk$LdgTCRrzMy#^;h*`dIW z%+BKs~+5$w6u#RYM<%2K>gHJ1zresasRNYB6MjZCH-kj%%6#v; zf3YQ=D;-Mka(@EiackeeozP8Z)i7~03RIk9Y*T$R1&cTL4r!7RVKBArlwZS5wYpym=;Zhx6@MzhkHn!-%q_|hC_oF&gV_kf z8p;Yu$Ng9!d>FC`#I-+hY5N)D7S8#po3tlhEG6gZX*6a&rSm*hH>vP#@t$U3SDGPH z%|aGKSx?wx+N1$L4t{Vm>3$4cG)6j_tf&AxE$n4*Il{{J6?28!;c-T=*)^Y~*PU-d zvgGfQL15)i_QYvRHo_Hu8y$8Y34o=3QTy8*jALphz6+k?BR9u_EEGpis1qUdJ(U)Z zN)p~WEjf(*@@{peGnE#b)}PN~b}#1zv85`Y#Oa9+(tXvW>LGq8^S+x_dwy=yyi>3~ zpwCvUn$o2Q=jdVMu>m1t4FfKee}cBOWt1_G(aO+ZCZewQLs>*N+ob0CiUBp@Jt zYv?~~r28^u(c^=<-cHE#CB|_5PPXY=g2X)ce#OgX_v8Cc65u2`C%jhMaIjyvrfk`M&i9 zCOhavJar6W_t3D?w%JvBb|-G_kNR*v2J8%-1i^#|o*V%iES+!HUpPtghCz&EtM5Ym zVBOJve}6}HrFS|836pI-Cs>mIgpRc3{@m~K7J*QKE~Nz454hg7no`JZ_^V@4(??;n zDE10_&5uN=A~q0>qe{$q2#fJ;O`Db=Q1fW~1X{{i4YPZ-f-w8bzC<=_jPzQ;!=a;! z?9W+7Bkog-XXUDK7N5>*!SQNLaK>@Oh*g#}fBw(@GzaaJf8(lMLv%<6=swM#%6I@J z^PU#WbB`~MfzcFGa0f2a0bnnzxFB6t z*nrARwe_9*A~j9BBJeJnftRN5+6{R5Ei@?L;wL=#fU@c`rz3(MSFU^S?|h0#WN!iC zg(bamUZ0DQyKY^pqAaOzX4|K3<2!xJs%ZO$*$g#V#E@@7^4FX*v%qgM#+L6mZ||_1 zSeDPqvI`%~3ay0`E_=YbvP(goCH`u0;TaTaT3zWwbLKz=fd{9X=T~+Vip70D_=NDb zIAI({kSRQnlVZ3w&Ba}|%20OfE93U-T;BaLZUwLu>u7Hk%U+NEiDw~}XJxZRE`!^= z73Z~PWsH(j#Jzfb$W`HNn!rZGq7vCZy*+lUx6E;Yo+0RF&R{xm#gj9fZC*N3JXY)`eupd~ge(}~WliBm3z52-Is*m@lMa||5q7WwQ7B?EF_uvmNT zEkDhE&(uOoY)zRIkla8JUhi9$z6jrr8MtFe>h&Bu4bOX)Kf+}(m?n&%G4(3Xzu8yN zU@maes0OEZ-ubO8gPY~AWk3Q7FJZY6hpxqCfQXf;>fuO}M+z#?q75<~GR#vMkV~sL zyQwJN7L6!MZlYY1G=&XgR8)1jqx)7mdI1Jmv6S zQo;@woA_(uDW?`2?qKwH`r5UbQ}c8V{Tt(n-r^V#kjdWx*%p3^FZZRmLx>gFKfYZ$ zee^nh7<=+_7d#rIqtb=)kfbj5kTAu@-)efA%JCS|+&b};ep1cyZxtbaFZ2_fyzz!x=H-A4^T zq_2A9G0`sn+-1Ki`y9fFx+Lv9w>9!>okw~A4>6>skgER_7Om}9&+71!pe^z15zj#q zQm&Wu8*YYw>(74$Joa7xDlPC-*I+!9VE}i^r@EN%D+Q@AbI@-J9Q`l%>DfNH23;!MV$izeny) zs(=InSDR;Ib1`IndPk4hT946(raeZd?68IV?Oi&20pW}vN8{7}hgm7hs=4>0j!x&~T*VCYi#+@f1i&kze9OX-h z=G7YjKpJ_I(2Gu}X%yQA3)9}dY(8zvN7RnG3WfW8-B(yjbcg z<}JeJz_!*;5B3LE!_Q{cNSHr*`nSZ%z(XE0D^fYSbYW5lR+-miUC3v+9W-ShwPp>f zF@>-O=U9c~FXzb8#=cvSzG(hDXhHMYE%iq3yV3*(Ni^~Q68Gzrri+mF__EYhtI~WX z^;+)k>pS7q-7Uk|!QrCw;s-%@U4!;<`5X}ydsRZgPZYmyKJItc%U#*jo4`n0;%z`YNH>eKl^ZJ8y#c$d@KITT|?V%g->$UGW5{njNX5IXO z=yhk=NfM-Lz|zp~!q%8ygK4-Mqu&8=vU;>)i0cpG-0bC(T_(|3-{J*2buS?U1Y}$w zAanf(kbnAJW!Y58@9;grqB!(esWngN4t5&bol$K)`lhjlbQK}SygYk3f#$l3n3uin z`-E?k#Y0f4LX?yBgOtk-Gtt79lL^3Mg_v4L#0bRjsiWOHIhp!kiO|j07jjY6y31&n z?3>KZ@d==Po5cPDagRERAnI4^eopp(H^p3|%CJ_#bP-+_(g`l&FXU@-4^W`41 zbhNoPlqiEQ@^)Z_p{C*KsJ0IwE9$q*Km%zWkdC>NB1Zc$%8C|k`%5GeW+X8)qp#CR zW#0909PNu7ARA-cy9}BGZ#nmmTdr~j)yRhz3q$1x@k+i=pxc;_9z|HqQliP_IFapF z1yt_p$rclAin!S{W2tD_YJ9XGb1%OqNB~{q<#kUKUqkc`iD3fUka`kO{T1UTQ4n(uKHrFk&gYYb0HzTA$ z@*5j+R(sKk_S>!37_;B@I?;dijRk>dj2MJz{jP^A{6F;Y|3u_yF2n=%a1WVQUFNcZ z{@r9fEX)y5fw3!tBD4LkBKG`GuC2$}=r~-VYpheXU7g z+v?*U4m4!lv>^>;bXVfy6q$B3NzsnoE*h!k&Iy3@|^2*FrVz z|FNA$zIp}?16Vcl9KCX}yxI^CoE*Q*JgI858}NeR1oEDb zgG~8|^3}t;6+b%2*O?)hY}ZE}f5Sw?d0^ZDG~_&{V|r3>VAh?#a|GR4@apq2wXGB) zFLLI(c$tskllN1{vEPoG%zi#RKZuO5a8Zt*+f~&vNFqoJmcIu5*a=@Wj6+RP23q&i zia<>~@t|@P^S$i1U^!5=c4T5OQO4<9tT3VKEnGE_&oY-fi-;pCn9#ujN|t*h=eo8| z?p`6f@sw4hpNhcW_M;-Iv8N_>b*W#hF36cCwa~Ig6nyWkE~cVEHdZEfldiS5V)u~X zV2vVj8U(vz5`(QT zQPk~y=F#bsLApV@ySqE21f;vW?}NVejq%>^{_WZO+56!Pn65e3 zZ#De_4Lmz%YG2ADrJOZb876xQsZnWW*)%w-#3}4H@xv1ljZ+QEx#pkq2tD1=KU!Li zpJ0@{Q<0-0h8MK`=O?(q-1w-|2)iRj{Ok}JZJDR@*;7nUzFqe_gXz(| zjOlNQ%I@@Z_|i4&dSutP9G!bS`bpsW@T8`-d#(r{^c9Eb3P4HVVFa{Ns@^N`f}FZw zh&bc|L*9(vRy5JP|WBe6)I*er11(uS=Q zZa`1Vd(~^_3m>HMm(6Nlbo$-XPwO?xA5^*(`}PS$v@D9tbUnSgTJ3u9S~lK3Ub}Y- z`}fRmdu>8TDyizxoxTqA`EVvQZ)WI!hA^oejgVC(+G@U*S|-{1G4^=GEwK6AIF++T zUg#%E*?@b>vI?}J0C!DqU8@wCafmhZX?XcE5&1lE3pIX_GN-LsLC@n-@!6+wu;O0U za~-LTjf!WdqlV5Aw~-Tf1|$Q~8-)GrBLqeJp{b7*Gy?*9dWwoGWFV}GA*?+I%%)AJnbA1X`D3*b9u*Td1vDbp<|>y-{wPOSB}cu=l<(0 zEXY@(8zKdHni}J}$-v*WT$k7utW(?Hd0I}1gl>GdPR>2XA1ue=Ag#0R3DiuTyzGNV z_U?dPrkHYpo|v~?-g;t~0zz)}I10)SX%B)0)X=*B$YIV13vXa3?O1(~9=@;}@+va* z_MV0nkY#53xz2|p9Z(u1ZL82Sn0m#ObJ!NH)}%&Xxb1j9pyNY(z+=zybJ>D88a?@U z1P#?~ArbEjxL*hWirpXP z9s^SGfNMKT$+o_no@e`CYh1tat`JQ}!dr#jFXv-g<~t5Yt?=+N;e9Ry|r6j9T3 zQ}4Cm(Zs^*`9kIjOgHXxFWV?CAN1RYqNeb2XP_d*I2tv@1O`YfA`S)IZ&IaYK$Buo zKI_V0M?qZukRS|@Q&-LuQn?x^PA`O42?AI3z3Phg$7N92tatP7fwP%H2G`~8%w4U)g^IK~S#tv?-z1ZfzJ!1RI44a$|LWL~(V8<+Zt~D&34%0QV zwR~UNSB~V0nO8Q5 zHJ$6-aJh!^9_h7?M+|G`uSa6DfSey88<=Mb3pDCP^c8(}0>9cSlfiXiSfAF8jCvm_ zHhne$qk(hpx2&DkNm>u+(vaMoKNsG(DprxVW7_i?#u+H=iJQ2YkUEi-n;i-FDpoX4 z6oaE7PkZUl^fRX-Co{&1un0raUJDM<{Tl7ro9BfAe4p_cG_RIXuqq3;)LNxBK2(~; z2S~yf&sz@e^w(@^CRP2KH^of8!%&+?Fe(~LZQH%nf~zLNl7}OS9-MZ3@^qPIrp3Q{2mRl=Mhwt3xr9>c zH$cg+|Np1t_n&wi9Szq2G0cDCU|FlfrRAHm8soCa3d7y^g>b(P?ttilaj*=QN4?*- z)JG_$SlWa3e)IgWJ84_v_%t|nDm~wn1cAHMetSsyEti48&+M+?SffMt#`F4cdi%8F z+3oV%LeWi#)G^tYBgSTh2P}CO#UDKnJV5(Z_>1xa6yuS<1 z!HyJ_(~BL(Yi}XORf4~Q0Ocm6akj`II+z;kQq5Smo`!yFwOSIpT8NRp>nbFz(OSK?S0l`dxf%mF063wY%aB7Ykc8@+XbW|a(}RTirDzN+bECGXDAvg-Fv#;E0-9@PKf#<;X=8J1uq^DGx1YN~gdAP!_~hA1f@meXxwyp~ua z>{=B0xMtTPzhYQ5Z&9xHJlA$&c{`H)dT2^fM-=h!N>KC zdlr-*Gw~C*qP@3ZOnOSLECxs6!wyX;UEKW`h*2I8-yaocBZtNx z4ciI9D5|caJZS}sR?jP;gI>OUQ|rHW%dI-rOgVA{Z|GigDY0yUL) z{aj#s>O3D+Og(u;v2hpHU{^mgt8N)C-CC6z=p|P@t$fI7ZO%sZ&YGAs=EDs|6NGF!CBgG5ot!Sx zQ@}jdyuw*c2@v=Nwoyh$``x8w^X5WIgDu@uV58Z(VxD!{3FOeRs&I4l6@ve!V~eEV z!J3_|oUmNy$F}gGEL7^}h@~r?*BoGeS4d`O*P1R=3j1MHCYLGgn2vWhyDiV>I+PU> ze4oqg(cWmMi?p()Al{76+S^AM>u}?KHAp(&e_UrXj)m_6Jqc{2sMjMapT2s;c zp(iLvnZYX?hRn$dx0OX#3BPg%c*NezhUT1o^*!l4(~6amC3?)VjS{RPoP`Qai8^^) zIvc;6e9m4EbuH)J$Co#1+g$iK(^ic$vfyV@RmCZsM_kUO^^n#Cc_%X7+*Rj4Lw&janHQ%Y15E+ld$Nkh+8} zTlPow9DUx1EG9=D%KOzK_UP<9#Eb)$x>_O)Odme;rLLO|Aew!XvVPCpQ$yHOU>k-K z`)E(pph8Fe_45xGojqQ#-Knt#a#)jGRwY}?x)!3v7t#|EaQaDF*&kB*x8VG>@!JXK zsKW@}?^HK`vd3_Vf(o#GrRMvBz5 z+tj$FHe8b*^s}*wz{a1+r8DlCXmQOX3fqS+4C;-eedB8E`-4qAsrcdO#?=$vk4qO! zMor!z!&2kkU)%pX|5V;okYe9<&~c_exPBNoDLkoB?U^eAt-iq!T@EM=d=UQ)W}N|_ zMa(mPzBM6R)NGE`Bq#D6TXAw0`ubp$t~oH-w|h%Kj`3Zqyqf^9_!jo>;_k7I`R_0pK*Kna#`KQ9BZpuI3VxrYAi=sR8rKldKKipc8;?ZA+QdV^19c^EB)RO z+@~0;6Mvsv-#S4!@%WNPAQKwph$AUKL0Mm7v3ZfDd>U-DS?ivuy-VGi$)s<9a2RB#iN(iVrVM$Z$T9)mLPc;B6dG*w18 z_N1ev*QKg5$t}w9FlbVIQgYx5|8ak?FzA2xH^tX~Jc=NO{No0e6)x3oi+u-`_K|2@ zIe%SM0KVneWt*a7KbF+}KJLr2g$q<>JC9NR?+T{cvBZo(8+kh#`{(C&#ytuTNxs)AQ`U(IUR`%i;f4U8)|ErD8O?(v|;@MUU@steI^S>?!{ zCG6Ob@}Z1JR!D9&DLH*Ci!F6a_X;O3 z>_-J>Afp9}fOjRt2yY1NRL2222nzXYovKxVzH7200HuAokm-dI#Q1?+{4-ZuAL+3g(AHOStmK8VdB#(IIXL zx*Xp%&Gys(dDc_*_t7Q6I;m6FGS&35e43f6rl+GbjA} zocpOpog&qa2h%t)3FmZGo(TM0iLxE)ZwB+b&oN26=7i{fGDko=oCUvjJA4ntF6gHq zsTZNbsDL6M!zdHLy{76!z>cx~5|bi0)2@lpTR?jFvE(A|RC9AX0j)2CyC~MuNBjX& zHp^m75hJdJiv@Jv@^zJ_c6wr%hpdzztIB#L4YmZax0}WZf~+*A5o1;pegz)YlstlI zdpE{=o}jjQ#xMKX!MDIpTvN@(HNf`M!ntpPJK@LsMB72-Y{jqMd*fPTwqvwsAFR_i z#u5ow+qW^e`C~r}dM7OA1a~~^g8_e^OiC!m!9B@n!ty#j%AkpC=^iuE8Gr38MNyD> z_8z!So151WNZA+owKD0g#H7J6&J$kK$Z!%daXUoktjJAG^LZk6n}hU|{Mu8u`ftee z!R`pWMcN2YXmtu7E@SA9C5@aw#DL zyAR=93?zG%k6-}#Jyl!fVsZ`WA`j=I7%@twXzu?Z;&hWS#^HH-N)YpBg~V#PSrc4< zQD^to>Vvqh9+lrFIuD zXa)(*DAz)*UbZ{ei`J!yOF|U`$RmnVd#8`;e zW5T?vgz8(v4Dv+H+z%3jdErP|O`CmT*vn=>!s^(eI_1eW<_~1milCunC>H$5g(`&F z%wGsDqLE^Yp98_5K@{f@{|cw2P%As)PyA>2nC^Z2cn_eL0f!uysCL2YED*YH_S}id zn^WigOOkJh9MQz&eh&iXv(ZcBJ_ze_zel<+_q>VxMOi{}Cn*A>fYzN(D!v=~C1Fdh zCt)M7Uhu)e2n`mehXZr509J?qLQidhK z@wt%l6f)aTL(mFh4NOf|F`DEWeB>hnNsghTDWiPN59mjf?ECeIo}Tmx?|Gk=F&T z6i)Yf>d)C&++-}sUZ3>+yS)7Q%HwC$A?{bUI`o?W@g^O+3HMieq$(^ywE(~#e*o<9 zT3|>ayN6*qi%q(F@bj$|47Q>Jg%~z0vao;7Zig8Hjv)^Z>!U3Np(al6%R1*E_hh_8 zGDVTz7_SHMFN_2%nWgd)e~tp#Dw!-sZ`8B;oWMX+m>+;(zN1zG1T#MvAebE?0SnQ- z)1@JxyH1Afgu(wbbxjC5UyB)^c_!G9Va^H&j|Tkmp?0cQP4~N2RBanL_;zs+<97un z5cqA#2QvtSzLo83e%3B5{nJMcHBW0?hl>E-M-S%9EmaG;M_W7HZg51QMw!qc?_~9F zr5PuXQ^%sh@Nh5q>7yP_#?G)I(`P%{g84nC2rw42u>ghm9lM8J3V&|qC&-xY=V)rl z$d{|+?1HChHNx*1_aji>AI76k@FO_yyu^*)?sW~jCc!ciU81;dX3%a9JkUl{JeHLsZ#8G znvRJ^Bi*h9w|M+t!OWaoPMXlBIF~cYht5+iXg`yUj88c6rB2GK4^wmOXG+<`+8}MA zdcI|7^UBFF*5R{cf%Qdk4NB>F)j<-(SnvviD{+~oG|_qYmtX2(+be_UkB^Eo$gVgj z${h6#D%lFz@T?+JMFbn0o5Xe-z!Z6ki=`#&%4fXFewTKf2On`d`5;eSuZ8HNHjG;) zFdWGgijnOLEie+Tp>%a`cIU$oVxz$KVWy zi;FXBwO!81Ms}XZQ<%H1gB2BahVwhlf#?-un5bqL=+o1)7kZ=GNh={Bo;gI<+R^ja z0(jTJ6qJSz9tF_sK741GnNY^w!M(xH1B{4w=NN(LO?5&j^nzdt>R|d%aZH+fEpN%n zEo?QAI+!tF+7`FVKuw0x9y(o^?R*NHk(TKgIxm^DlI#()G5B$`-pyxpkx7-LzdF#G z2`u(}%Xe;J?|6^CN!LOk-+9Y(62Y5(dwFu%EU9eN($Aiw(UV~w(kCFXA(4^EbgFd% zuXheCX8T_jC*Bs#xUcCj_uPk7FTE4+q@O{FXDvf~MB+*+-W_|q;}+O?^UT-C|9R%8 zMsGssWLcQ{KaSS9ozEZx=fKiA(1R0;;zwu-8HNze;?Ey6cooI0RSR&6vWCS$E;ZJh@} zMk{gLF+wXUcaE4K)c7ALO!Jv$pF6c*u^bT``F0-uz4rd=GccCdz@zJSA&lD3wzXOx zQ#9tVm|=GjDm1kCvjDl=9<8y`n|9g2(P^uJH*{k`6d)%@uItj zW=)Rrs4MNM7>DWHALlxT`_muaA3ScE#?;Sv;Zhnly;I`LzR0d&6`NBo>}#+p-3^`Z1DmJ6N^(mRB0 zE$&Qe=?03iEmkdgUu1O;6*7et%CmKk44{!*MJP-AA#DubT@bz9^6^57hIFrf+h&m#`-)29JnN z{e5#+AM?ZKC%E=fmy0``>q?MdH10#UIQRnf4(?lMBnt?Yax|)gfqZXoKOtq+=@cBR z^j3p+zi4S1H{$Qqfco>0?`_#|W(P;vc|{X1EWE ziOq%g(leTyV=YM$Sx8Hsz%fUJUp809mkDj(ZX(GE^ z?%Ib20tKhYY?=imWW=>fn%#@0Q<=QMOKkzL(>}ErK8cmMx?6r3p{XRj$Vmj=<&}H8 zmup%U3FMdm5ho=8#Io^9iU=1VmSuqXh(sU|NZ8rJ+E~`W*22`p(Miuj!Q9T)g!R9= z$aOS6Ur3;OXWV1OR74pYrEhX#ptGCE2KX^Jg0oJ>k5SOB8~8jr3AST*>?u;wbzA60 zWfwO)wiKVp%4}TgeVl1j2h9i8U++@>Fb1m2Y_;N(DNpW;Q&OLsMmlVL+FoRBr8GNK zTfZRg-Q$$WWveC7(^ue%IT1oIMwJfXlxeEY(JLT^(6G}p(En^defkS1Eecf|%C-p! zA)axtfob$n5a}w96LHvzrJrI<-Fuu7@)ZBFxAycfa*YVd5zNIZHiuT}wI}jNhsE6N zF8!q0qw#!X{NYDg+a9L%3X$q|I_1*oJw10TflJ>`dGav>15qB0Q_ivDJto0+cEI}Y zU?0-u0_3v6uZ@|{@DTQUJ;5irMrDWCgb))Q5JIB21q{MbPI_zBP4aCX#WRc~%ZsJI zN+E@)_YMk{bods1ZE2IsXpkB9p$QvFqB|yK;J6)6%6Hxm=WtAYG|{yhb+qul5qoOz zH(ab8tnM2O6tn8^TYt!TCP`AOU!`{m=xa_(;pOK?tZ~)NeYa|5X&WDrrZ$Ja%!xc6 zg0nx9lnU|Zg|QoB_b#GyQ?kQhM!U8VO}E-cqca*X@xhV(jrTHe)=jsSn=#f^8puR5Cme*?MXQJ9#<|al z72RxM7u!L!4__?!KllZxjk^ee$y`I#=7Nqn&Fuwyh1yeGq)CE_V8lBS8ZO@mr5(Op zqWl9Jiw3c0k@DQeWXJb1wOpCwUi9sq;!6l#weBgK0yqK~aHvZ}HW_1H=$Ra&zSZrf zx~fFOEQMM=p8_NtzY9}+VNmfrVsOUM{`37 zj6-0$PaKLcw*B$v&G`{$*oFZ_sm4U{_IG6uiSnnw6irj(R^CwbI&EUyy^9^lQiL6LAZZv&l@n%YCt2AK!;@Ek_RqI6JxFEgYVvk!p{u+h!$=U5= z)4PDYOCyt{Xmw^(Qs2uG-)xpTy11)pu|j?|Npra%zB4@rVz-oBIul!vogKY8SsTB0 zD|+gA)v|ozLhXW5%A-qCUL`dK6YPgSXisOHIk|h%X?4z?kgK@t-55e(I)7AUy}@rh z$aOmghc@)WyMw8|K-Nwc{sd5^fU9p|cNJ>WX)vh`nhyq0rK*IQMwZ;lM{_w>YzySI zF1xbST63_a6~zZcYU0BsR?ssrFUTkbO%g+3qj8VtRXvaBbSaO0&BeMyH`DN3ci!(5 zwn~eul|Il^%^!A`Ixdf_;Mg9{q|An+gL8VhJrwOjK(vzhPR3s;C9D_cCeD4pgQ()g zdK9I6{jT97XYQrMVNRcVuUI)!ODRVm%*OJ!$>E^GW$m8=-~b!!U{V@9_6{9 z`Ks7Tr}(N(EW7h2Hx?-p84szND|sgRc3@KUs%V6=imu43I2{as`KD~?!Jhr38(JB^ zf+VkOTlsM!Hp-);O%2oC)S)lGX5WiGbz+Nb!i=B)c*7GyQM(_LI=o;SojL$M z=wg((D4)BbE{$$2<0h0U%_LZcJE0rHr^LsLq|u*sZUs)$_vXtnucf+t&8Tm;HF zYqqLTwD7+m-Lr6L&xCru`EdFr*~!H10o^Yb-A~GIVTx>x{*52hPzafYPWpGPyOiJb zZ$@M@-?b@Q@f|1j`5AKP)y3^klb3bHHYjrEv1SuT0%CCr8$WwVc!1FR8|HHh`wf@~ zL;?zdQt6%5O*~)PUA9&=9oXtk&`n_L$$URu2`46PHjlvij8Bj5bmYtTyG`*(uWxUd z&)+!!K?aCKyqz0ez?JiSS5WaQdQsDy_3uMRBU5SFD$Fffq5VwO^BL*q|9zc1y6;Gm ze3mokwS1kBqc_4ORQvfC*9NuzMHin**ppVTXUHO7L&)*jMZtigS1ElWb44&gC_x$X zuXfk~$0uG(1*8Cm%Ap=q{4fgHd1C{fg3!5sq$io+X~d)Kyen<8gp7Ufke#X5gdwS( zLHcO)seVndKwvCGF!_aN2iwGB`0C%~qxR2vcwb=V8h+$|qFUR(N3Mun|MDeO=~onP zX`M`F@3-Qbv9!?jv~MRjU~_TbX$Ug4SCrUaVwyx3ldA21>!TGPuo!J>mYqQ(Y<`9) zPUVjDFu{B`sXyp*KJGX}#T(hre&e z1=75cr3lkXRFTf-M~%yUN!aONS(RXW;l_v3eAlBPUBZZYk|;xZm{Wbih#*fBsLPPa zE!4HgZ)8X&vu8uB0){3W>DBOt-TIvaANB!AGLWgvt!aaKOC{>pKeW4g_I^6J+Cj27 zY3{tB2_1;Sy-xwqoM?{Ljz@W-f^$mN%Jj~1_HFNPl}}!|Pk!F|DhLbM!YK;_2?O#S zTuLXYJ%Haig*2Wx*|90W5xLKr@lwHD3>qXCYrhBwx%3j|!ux#yRqKDG+$UG%*v4db{^3K69a?{~2)hn{pcu z8tAy4gkF-Q?2=>$`|y@#0QR8-OMv`$U`6!8gDT3d4-5@sngt66$8%1cGEO%3>Wj_;6HOyjr!wg?DmreBp@#2gee0GLnapUoej%f7&`_#G5O5QC+c_SRGI zS#JB7(n{|qB93Kg5Y<{o>(GU0jo9+Eiwkn#ADwj!MG-(5tPmSZ2ivmzklm6Nlz=>% zRd#=b%&h+HcTS`?dhYy5D6=pMhwfr56kxJCeAFef$6int5`u!7LSS=qJY1|IH7p$q zPA-mmX8IZE(U$uoE$Em!<@!KGRI^38;hVH83$3Bk=q@K~#<5FSvuzg>S)b=057?^} z()r1YF33iXBeu)drc1Z-&9Ty(HXkR5m~#rGvHj0}8VRDNazgSmonU0qbb4&^;5pPw=*A{$SFraSkC(r+tTV3D?3C8;R~QZ zyRI1(xYCQP!8cp6X;43fG82A#P=Nh%cmJ~mPyO{hgN$^=VJF5MGC84$wZV2FR;zWY zGm?bi4;6auy_VTcDm{1V1jR-%La6+H&ay~U48nVsg|-b(_ePub%e6m`g@r8U-llR_ zEIIhHx%#eYqVp)@W+>A+Zjli97A>Uh(-p!@9Xch(hG>>dOF1eU&n^<2uR%vpT!M?L zp`&nTJmxnguerUVSzzHGOS!gr6|dsY>??fag&d<=R^H07Pfb!=!E0eeE)Buip3z<) z|MO}EiSct!GbRMkoXSsb4j8R&^Y(t3fBFLRi@?T}0!h2Zn(|c`x}^W`Tyz8fPx0Dk zRVxFbGK}IE7%d@a=>qjx%DJ_xK+m|0{h&_J3rdP{glq4M0B$zrtxBfj=Cj=URC&^& zAH!H1IDM0nVBDmzIwaq_KIx>`qG#zaWDv%EiL01SRMCk=(ud@<_e6=vvs-^;P|k~_ z7)AE5UcJi_;h)MFr%s)bc`-V7bjtCLkz+S||6p`}84l`e`8I}d|Hj3?_bojQ`>caA zpIpRkAngAovN6c|kKWJ;XOs$wHsudQ#0%}pF3&n8H3&u}A{|C=PYleZ?yo$Z;Ff0& zqzetg977@(I^Nkf!)!xvG1rO{%@{$&CScECcgU5Ts;OSA@YemThE6J}9Dy3~9luvP z;8sw~2yIUcPk!7r%x{$ipz8E^+ex|4aKeJq7+%H)Z>JU9hj;88$6(0JC5rqWzZ6j* zv6k5IqlypP(3dbrJEB%qnole_nDjD2e?Sl<lMeo~?h1N29D=wMZJpClC*>T3lFFM8MKCku z;dgqBrDQFWNdJ{hL_xDBNr8yYQE5xehkWQf3#(?+GuK7XL*>@5ki-vrP;coMScf*Q zXIOovm-nR)4j|;8zY+4|mp1&5ZLdSEl9!t6AlvQQLl9lg`|*|DinN~_C%X8>tbA9U z>UD?$uQhalB5mZs-y-c=U?7c8=@!U%u;*@a-8(#S^tqH`h@+K&ivZb25BBVqia>JA zbVSWIUrD^da)oie04u+M5)KU4$MK=4kQ@P!oqfFHv-e&FCZ*cSsC`~>sZ~_uSX+y! z=k6LgF){)nflU)`)x37mnGUm!?X`1oI&F3)A5KFA*q@h-=Br9vR4Sr9HY^Jid}M2r zbyv3tPWyhw%J>q0hlgn|ZSwY|fmF>fJ%*oG+Hg zn20@V29e>-;Bzu~MIcfRc&*hor^fI zcG5S-t2%;8C!GC^y)rNf4-%Ep?-Vr2T5UglFe|(0~O6o1~Aw)OmU5a5!WEmej@Gx$?90Pm5#z!NrnDZ=7l5CLPnT6Ce#F!2u70~>@)Q5B`||V{=Ebo zDhL<(Rs}DR+&oA`3n>JWoLk4kfNyrVN6t#{<1-^mN_sZ5U)a%VkIdVgaMOoVb*-d* zrkQ`oVJrxpNWLdgS)(%{F6s6@)}`_^H26?5t)9ed>ftynYAJC@+rXMOVw*!9m%m+U^+sb_WM#DaFoc6O{bw~7bLz*Z zF-!w3;*srKVX-8|KH_CmEwPGh^W>C89S$g2t^w&=rmWQTMLE&ZN{8*1w7SboQ7^sL z@3}f={L!dY3sN|ASAYAPW`E(h0_vGKl8&}s4izZYb{CEHS1jfA;A_+1exfkKYOCUn zlu%7_x4H0NAN-k4NkGZlz5hvPK3;F6`8$1ZoXmMhyNUTuNS>p{3VS>WRAQPcjQI)r z-4}lO<~tUKvBq{)sLQ(7GZhS+?2;ePQH=CrM|kjJuXq?d{gA$k5Qn6B=Gl5IU;Tpf z>MN1Ex!>DVqB>u5%nOmAQ^x^>d{=&@9G537WZU(}PB^B}pHa9E89<2@=hwo`f?}j! z^NhWX?jAt>G&mXf{p$WZwgV~v?%7HU7sCS{pm9bUyhTNT-lY-%=?O#|@Y=u2ZJt*g z7(n?EGhL;}LRK=AGL?cV!QXm{=KdIBfu7FSFhm9UCP8~+%V~pkT9K<+Yx}t0>V6r1 z6vZUdf0PZ;4ll5i;O@Amf&d5r)x?Ib>TIv3nB8j`>$QBY)gCnYBLI7mdjQbs<-)mqic?QQV!18JxJE)s?d{lO#6Yue) zK_*%|qcOFsdA0wFld=22C937w<=Q_ee}5C0hkHpTx93lUOHv`>=URk>;5OKhfZb86t3I1{5xSpnEGhZlsKtIE~R z4hxj9iR0PK>ch`;zEf->C`&ebJG{2jdq(aylB*Qc)4~-J2BM&%_5S5u1VW0gcQ`y=!)hI(U5aq%Ge6*YvlA3G!Bi}6J?d~(m>JF#FJi#-3C*45 zc%}HWL7(Z7f9LE`o1v9@NYKI&`$n)y$z6}6AN2z^F$5k``MedEgQw?%ZPaItqe1^e z?n&Q$Rz(>U1wcB7*r@wchGwA9O8Tezd_kUOu_oCAz35xe`-&gG3ZrQ{==ld=wAnpY zpF?hVB|Fi3FcA{qWI^z*`Deiv3{QXA03A0?ZTTgA^Gc}CGuJfsBg+b3_GDyD70T?8 z`8qc9o@cA-{!bwCqPizLf!(;nVr-v$P1TJB`)ZoeLTukeKg9R3-qhV{lHOgU%UAU^ z#foP7Viu9A=Ol2nfWjbJP=&GCMg=Bp`Gzz!lsmopX`3d^2V&fh^=j-{b#M{ZQ-ehM z;C-H4s0Ygq4C5jJG1!Hv4$+RnM&7eErk?GFDT1EB$d`hw!kJhxp|PY-Q89+$Asn%n zKRh2%zCNx;<@V@|KBK?hq_nD{I*YrmrYcQMq6CmeEVOQ2ICNESV20$(RkbBgR~LZ3$S$x0+DvO|DD0`15BB@UCs9w^t|*cSq1tdu0Qx$NB8 zL|CPh4i*uczIZ&a3+k4a$g`SGDPx>LlptcN0^BPYSpPHV^XIIP|lq)>^QUr(zn6P&!o8+Oll$yM^m+=&95#z(FU(Ozd z1zS1p5@xOIOKrtIII-3&UC!9lFP9bD3xk5!tOZ(z7a&gu^c-UyO{$VgI82*0%I9lz zJ;n*rzJJ@b>&Gz(=VE?_MLv1yPuLcBVN#P)*^J%PEl>USEvch=wa^48p6hMetBDFX28>sBKLC^ zq?VsCtM1IDd~JD|J=lRG;BEX6ji!7cL#UuOK>GR1NUNmmKwt*1m%@P^SUJ@k&CTR&F}*Q6 zxc1ZYLK>y{qS*>M099yPvGVGkAR!pDM7xxwVObh1;{JscgWn_Jj=dtXl^b2i#Gvlt z+Mh;c&Or8HVmMOH$1Hi%SHN=N*Zm2zPoG(Wmag%hhb-X9>kx@;2B z9}weIcaamc_D*#(Kv($%=hqKH$6B8O>>=gPdcUDh1;H7AN`sQ%5EAU0nAO$pwe{+Y zl6CSTeFiMQkL!Umega2@i{sS1`|%csEutd>3xkvZLb*EL$>>>xNjv*TdSkx|G)0U) zEAem~nLUF&cb2NuvuI53j=X$>MHhYwy2B7hcqQ`(@|<;|VVS4^Y~SGEV1(kOxh4lt z&a^9RO&Jy!+YaydSiLszq>?7v$i4~aZE&PxHSNiV3AopuF`%n=b}MNG-NBtxBViYm zx2tcM$x-_#rzGIqySTQi@AqWr2FSxxp4-;sXP*1si}%XYUt?^@6Vp9Kz6FA3vETU! zKLN0-qBp@#$uf!b=yXt#`f|};eZa9#=?hXwJq{kuRdSLtR{+q${ zqS-|U8Qt3EZvhd^xqx7f_;Lf_ zSaY_MUbu+M_u32NY1z<%VMqMrf2Fg*n{*D^hnx9#6UGAZztUL`7tv4oy~BsGK`UPs z{HX}m61PJG&H+F?G<4ZYCRd&>Ueg(DzHJc=NAMq8u$RwA+Ep@oc;&Yq z*EEJU`oD-YzS0HnP4+Nl@Cr{k@UguCM>lJX8%CZCqowy%Z zRkXZlVnraWJBH%uE05^LOgYw!Nm+doqovJx|2-%g1OMNH0Al|8#Gs0H9OIONo?@}8 zK<(^5sszDPBF9A)D;&R@Vno27Jc$HTA!mX4Qno8$s}%8nXmP;E;Lw5jQdUtC;AC+B zPV-5UbVQF1j+nS>vaqpCurzs9)`YbbajyAfyo7djjekuNT;nAq-tYHlGAL{<`f}WW z^0~B`y!k*GO}c(8yj)7~V_J`;pwk>22atAXA8Xk2v@J*c2%*8;Q@mp3RC8JGOAf~) zP1Qvp)PR3<_4+N_V&Lnxdxjki9u>}N=^Vcvi&@T-Q;a}P6VxUTf5zrzSio<^WLnKT z9Fn)+8D+-Ky`uW^kWgrt>I}14J?Ul>>}35*x=BUhgCzDIoaKpWPVSPSD)sD6`vZs^ zIt;xACq-yX+#8OV_$Dm`IoS*SkZwLCf(+o^0)y!WkAg5~Fy7*PBqw|sk8Y`RRu#K9 zW($@nCX<$5{@jJg^Cw6?4~Qab&-E`kB*wt+50k1o;172myA+|D*1#;hG}&77Y#_vm(&Yo-x9KvWem`w|<-! zF%Ghb%Z6y&%I;{(?U$={3OC7dqhb(hyd6IqYrB2i0wu1FQOjAvR{|ns=kJ{PKQVD| zI)`J6S$aGS8Eu}AtyjXw@1NyYEQcMlNb;HkrE1Fa#>b(ukKB<_A?qp%n#Y<~<-g(v zDA;7?j~|hq=^}Jnvr7|5mt4WhCWf?6_6DCzwnn-J^%8VJo_ z(B-azN&F<|J4X^kv}OWrL9~8r!#PPG;Zo&Ug~dDAD+307I40ML!Y&e+p)RPmw+cb{ zXAnU`Pz(K-IqwBwGAtlTHz-^SR@g>OY$joy*4c^U-<$29hbn)M{0qz{27vke)4Jp0 zsUuBKn;T|Z5|2@YHW}Zx2Kpw%!9Tf(r{Y}1_U>}*bg2IbN-rjNheqNElR%}UpkW2$ z%+IxFWMPyL{fUU=kXiYX=^$E$v}eGrjzi8uST-CK^3xgS+?XqH!1I@m03#tx5|W?J zpZEQPKGv9;vi7}`QQ`2<%kO=?E4d_A8WN*yZSkYmyP3it9}AkvN~o$QN#-FnwS*F> z0H}i2dg6^v5@4Y9DoGSULln@m{ z^3HSFboyYy{cs{|^dm99H45BL9KO&!Ieo6{@p)%gKlhNI$fAdRxRRA3c+#P<$-MNZ zn-cT`RF&J;uEPix350*)Iw^r>f2QJtnMBa^3%WjLOj*tjbU>a~v%SWh3i73Y8N=*sPvhJ=;WT#?tn&rMb%8IbB?Jaf%2yjVYSv~ zF(F2++7Db!@leXw`8=(u^w2|;J}_fYPg$#|L|GGFwU-mu5( zGy#0|Dmy%xPQ!RDZRjs}fUgdmq}RCfA$x}(THhCGa-y!>p~vvNXYxx2aQKAa(!Ml`Mb?xZe3mg)GcBdx_KY#2OfZ zI;R~VimbLa3TKW;bI7OWG z%HkC#JB+)!bWro}OmKqhrBMmOsMPa9%Wob5hw0l7uMFbz9+Tlj zA2yDbXIR->q!`lf#6`hpD&HS2`PMXxIjeY5Y><~E1e$hB);a+wiF#A~rF1KcsYG2h z9l-3?mcItOVYwT zKBmbdjsy6W(n8IKQ?clV+8LOD0YZ_v8HhT;rN|1hsB7#Wg@H2zEe;tJ$iM+Hb`Fpz znmGef4a!SZHb@B!fl!FkDp(mCD!MUOOJEL)t1m-$y;bw;J;&%D-!y6X^j;uO?z!i8 z>0QYKugbUb`m6Te`q2Fq|L5J}fy-BGqBPb|dXH!ths+7z;a#Wh4G&VvPmi|-SdL~( zGhUBR`SmkLtpNTXi)#1CNB{dBWxYwK>wKRm%Daq5&V8|J@ajEdR{hW(TTy9c+QP$S zJ3HTV`={MYRk|Tb^K5(B?(!4L`F>5J4B2aZmB*E^5Rt)8MZT}LV%^Z(V3EG0Bf{{w zT0ADXvoiL4a(vJ6Ti@R;&5f6c_Re_v^9qjPasg#u+ba5HRY4C7`rO2x--0vs^~v~# z!+oK0+r*^gOhl;tM!HVf_J;eCm}U=Mt|ik_cj&Qq%kAOe>sF&(azD0crZ2BK!pd(q z-wd9f3Q>P$R^)9qd|AEb;?#mi4fp08{5U_V&pc01P$P9rpJinF9&rPP0p_<_DO5KRFtxcwVIRowucuMF`~u|CL@h z$fFZ_D(tN<7}?R_flzlK?VZ5iViwQ2NC~~dv;dpKqZ4|`*!!SOE?JDP;pXgaw2VrK z1!8Psm27@F#-=z}kd%$F25zsig=$ic3~urX)N4i{{Etes#~LM$9(MTZVV+Hf}-Nl6emLF(je%=yHl z3ue08O)x4U#yyu8Vm~R^nDdlgh!y^D(@4gQN{Dd}HG`Nim4&@L;>-n$R$n3*l@Q~e zGy<`aU2Kdo^-;v9S4cNf2{CTvW{5q_VPmYRf7#7MT1F+rxV7*gCN5@UjHzFkSlLf7 zDj~)#Py?|)53(`V)c?_Mh;$>B5aT}H3$Z1~*cfZ-Z#E1Qj7o@cACG`otd5J#{(t`? zuQQ}0se~MNXB^}@8rj^-^$IxskxW!iT1O@1xVIA__sB3C$NB^Kd`$!4sDvDM^#yY8 k^l&+_76aRcS0qMAS5ld|0ue&KCda#f0rK$LfB*mh literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 05c34c8..9f51de2 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ ### Prerequisites: - **A supported jailbroken A5 or A6 iOS device on iOS 5 to 10** ([Phoenix](https://phoenixpwn.com/) for 9.3.5/9.3.6, [h3lix](https://h3lix.tihmstar.net/) for 10.3.3/10.3.4) (supported devices are listed below) - **iOS [8.4.1](https://ipsw.me/8.4.1) or [6.1.3](https://ipsw.me/6.1.3) IPSW for your device** -- **A Linux install or live USB** (Tested on Lubuntu [16.04](http://cdimage.ubuntu.com/lubuntu/releases/16.04/release/), [18.04](http://cdimage.ubuntu.com/lubuntu/releases/18.04/release/), [Manjaro](https://manjaro.org/download/), and [Arch Linux](https://www.archlinux.org/)) (a live USB can be easily created with tools like [balenaEtcher](https://www.balena.io/etcher/) or [Rufus](https://rufus.ie/)) +- A **macOS** or **Linux install/live USB** (Tested on Lubuntu [16.04](http://cdimage.ubuntu.com/lubuntu/releases/16.04/release/), [18.04](http://cdimage.ubuntu.com/lubuntu/releases/18.04/release/), [Manjaro](https://manjaro.org/download/), and [Arch Linux](https://www.archlinux.org/)) (a live USB can be easily created with tools like [balenaEtcher](https://www.balena.io/etcher/) or [Rufus](https://rufus.ie/)) (macOS tested on 10.13 and 10.14) - **[OpenSSH](https://cydia.saurik.com/openssh.html)** installed on iOS device - **[MTerminal](http://cydia.saurik.com/package/com.officialscheduler.mterminal/)** installed on iOS device (10.x users only) - iOS 7 Pangu users should install the [latest Pangu 7.1.x Untether](http://apt.saurik.com/debs/io.pangu.axe7_0.3_iphoneos-arm.deb) @@ -26,10 +26,9 @@ - When the prerequisites are met, usage should be straightforward: 1. [Download](https://github.com/LukeZGD/32bit-OTA-Downgrader/archive/master.zip) or `git clone` this repo 2. Open Terminal, cd to the directory where the scripts are located (example: `cd /home/user/32bit-OTA-Downgrader`) -3. Run `chmod +x install.sh downgrader.sh` -4. Run `./install.sh` -5. Run `./downgrader.sh` -6. Select option to be used (8.4.1/6.1.3 downgrade or just enter pwnDFU mode) +3. Run `chmod +x restore.sh` +4. Run `./restore.sh` +5. Select option to be used (8.4.1/6.1.3 downgrade or just enter pwnDFU mode) 6. Follow instructions ### Tools used by this script: diff --git a/install.sh b/install.sh deleted file mode 100755 index 4a413c8..0000000 --- a/install.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -function ubuntu { - sudo apt update - sudo apt -y install bsdiff curl ifuse libimobiledevice-utils libzip4 usbmuxd -} - -function ubuntu1804 { - sudo apt -y install binutils - mkdir tmp - cd tmp - apt download -o=dir::cache=. libcurl3 - ar x libcurl3* data.tar.xz - tar xf data.tar.xz - sudo cp -L usr/lib/x86_64-linux-gnu/libcurl.so.4 /usr/lib/libcurl.so.3 - if [ $(uname -m) == 'x86_64' ] - then - mtype='amd64' - else - mtype='i386' - fi - curl -L -# http://mirrors.edge.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_${mtype}.deb -o libpng12.deb - sudo dpkg -i libpng12.deb - cd .. - rm -rf tmp -} - -function arch { - sudo pacman -Sy --noconfirm bsdiff curl ifuse libcurl-compat libimobiledevice libpng12 libzip openssh openssl-1.0 usbmuxd usbutils - sudo ln -sf /usr/lib/libzip.so.5 /usr/lib/libzip.so.4 -} - -clear -echo "******* 32bit-OTA-Downgrader *******" -echo " - by LukeZGD " -echo -echo "Install dependencies" -select opt in "Ubuntu 16.04" "Ubuntu 18.04" "Arch Linux"; do - case $opt in - "Ubuntu 16.04" ) ubuntu; break;; - "Ubuntu 18.04" ) ubuntu; ubuntu1804; break;; - "Arch Linux" ) arch; break;; - esac -done -echo -echo "Install script done" diff --git a/downgrader.sh b/restore.sh similarity index 76% rename from downgrader.sh rename to restore.sh index 2b625ee..9aad81e 100755 --- a/downgrader.sh +++ b/restore.sh @@ -1,5 +1,10 @@ #!/bin/bash +clear +echo "******* 32bit-OTA-Downgrader *******" +echo " - by LukeZGD " +echo + if [[ $OSTYPE == "linux-gnu" ]] then platform="linux" @@ -84,7 +89,7 @@ function Downgrade841 { iBSS="iBSS.$HardwareModelLower.RELEASE" DowngradeVersion="8.4.1" DowngradeBuildVer="12H321" - DowngradeBuildPre="12H143" + BuildManifest="BuildManifest_${ProductType}.plist" iv=iv_$HardwareModelLower key=key_$HardwareModelLower Downgrade @@ -96,7 +101,7 @@ function Downgrade613 { iBSS="iBSS.${HardwareModelLower}ap.RELEASE" DowngradeVersion="6.1.3" DowngradeBuildVer="10B329" - DowngradeBuildPre="10B146" + BuildManifest="BuildManifest613_${ProductType}.plist" iv=iv_${HardwareModelLower}_613 key=key_${HardwareModelLower}_613 Downgrade @@ -120,20 +125,22 @@ function SaveOTABlobs { echo "Download/extract tsschecker failed. Please run the script again" exit fi - - if [ ! -e /tmp/ota.json ] && [ ! -e $TMPDIR/ota.json ] + + if [ ! -e ota.json ] then echo "Downloading ota.json..." - curl -L -# "https://api.ipsw.me/v2.1/ota.json/condensed" -o "tmp/ota.json" - echo 'Copying ota.json to tmp...' - if [ $platform == macos ] - then - cp tmp/ota.json $TMPDIR - else - cp tmp/ota.json /tmp - fi - echo + curl -L -# "https://api.ipsw.me/v2.1/ota.json/condensed" -o "ota.json" fi + + echo 'Copying ota.json to tmp...' + if [ $platform == macos ] + then + cp ota.json $TMPDIR + else + cp ota.json /tmp + fi + echo + if [ ! -e /tmp/ota.json ] && [ ! -e $TMPDIR/ota.json ] then echo "Download ota.json failed. Please run the script again" @@ -141,12 +148,10 @@ function SaveOTABlobs { exit fi - echo "Downloading OTA Firmware..." - curl -L -# "https://api.ipsw.me/v4/ota/download/${ProductType}/${DowngradeBuildVer}?prerequisite=${DowngradeBuildPre}" -o "tmp/otafirmware.zip" echo "Extracting BuildManifest.plist..." - unzip -j tmp/otafirmware.zip AssetData/boot/BuildManifest.plist -d "tmp/" + unzip -j BuildManifests.zip $BuildManifest -d "tmp/" echo - if [ ! -e tmp/BuildManifest.plist ] + if [ ! -e tmp/$BuildManifest ] then echo "Download/extract BuildManifest.plist failed. Please run the script again" rm -rf tmp/ @@ -154,21 +159,21 @@ function SaveOTABlobs { fi echo "Saving $DowngradeVersion blobs with tsschecker..." - env "LD_PRELOAD=libcurl.so.3" tools/tsschecker_$platform -d $ProductType -i $DowngradeVersion -o -s -e $UniqueChipID -m tmp/BuildManifest.plist + env "LD_PRELOAD=libcurl.so.3" tools/tsschecker_$platform -d $ProductType -i $DowngradeVersion -o -s -e $UniqueChipID -m tmp/$BuildManifest echo SHSH=$(ls *.shsh2) if [ ! -e $SHSH ] then echo "Saving $DowngradeVersion blobs failed. Please run the script again" - rm -rf tmp/ BuildManifest.plist + rm -rf tmp/ exit fi } function Downgrade { - IPSW="${ProductType}_${DowngradeVersion}_${DowngradeBuildVer}_Restore" + IPSW="${ProductType}_${DowngradeVersion}_${DowngradeBuildVer}_Restore.ipsw" - if [ ! -e ${IPSW}.ipsw ] + if [ ! -e ${IPSW} ] then echo "iOS $DowngradeVersion IPSW is missing! Please put the IPSW on the same directory of this script" exit @@ -198,7 +203,7 @@ function Downgrade { fi echo "Extracting $DowngradeVersion IPSW..." - unzip -q ${IPSW}.ipsw -d "$IPSW/" + unzip -q ${IPSW} -d "$IPSW/" cp $IPSW/Firmware/dfu/$iBSS.dfu tmp/ echo @@ -211,10 +216,10 @@ function Downgrade { do if [[ ! $NoBaseband ]] then - sudo env "LD_PRELOAD=libcurl.so.3" tools/futurerestore_$platform -t $SHSH --latest-baseband --use-pwndfu ${IPSW}.ipsw + sudo env "LD_PRELOAD=libcurl.so.3" tools/futurerestore_$platform -t $SHSH --latest-baseband --use-pwndfu ${IPSW} else echo "Detected device has no baseband" - sudo env "LD_PRELOAD=libcurl.so.3" tools/futurerestore_$platform -t $SHSH --no-baseband --use-pwndfu ${IPSW}.ipsw + sudo env "LD_PRELOAD=libcurl.so.3" tools/futurerestore_$platform -t $SHSH --no-baseband --use-pwndfu ${IPSW} fi echo @@ -234,16 +239,16 @@ function Downgrade { function pwnDFUSelf { DowngradeVersion="8.4.1" - IPSW="${ProductType}_8.4.1_12H321_Restore" + IPSW="${ProductType}_8.4.1_12H321_Restore.ipsw" iBSS="iBSS.$HardwareModelLower.RELEASE" iv=iv_$HardwareModelLower key=key_$HardwareModelLower - if [ ! -e ${IPSW}.ipsw ] + if [ ! -e ${IPSW} ] then echo "Please provide an iOS 8.4.1 IPSW for your device to get to pwnDFU mode" else echo "Extracting iBSS from IPSW..." - unzip -j ${IPSW}.ipsw Firmware/dfu/$iBSS.dfu -d "tmp/" + unzip -j ${IPSW} Firmware/dfu/$iBSS.dfu -d "tmp/" pwnDFU fi } @@ -332,12 +337,9 @@ UniqueChipID=$(ideviceinfo | grep 'UniqueChipID' | cut -c 15-) function MainMenu { rm -rf iP*/ tmp/ $(ls *.shsh2 2>/dev/null) mkdir tmp - - clear - echo "******* 32bit-OTA-Downgrader *******" - echo " - by LukeZGD " - echo - + + echo "Main Menu" + if [ ! $HardwareModel ] then echo "Please plug the device in and trust this computer before proceeding" @@ -352,16 +354,85 @@ function MainMenu { echo "ProductVersion: $ProductVersion" echo "UniqueChipID (ECID): $UniqueChipID" echo -} - -MainMenu - -select opt in "Downgrade device to iOS 8.4.1" "Downgrade device to iOS 6.1.3" "Just put device in pwnDFU mode" "Exit"; do + select opt in "Downgrade device to iOS 8.4.1" "Downgrade device to iOS 6.1.3" "Just put device in pwnDFU mode" "Exit"; do case $opt in "Downgrade device to iOS 8.4.1" ) Downgrade841; break;; "Downgrade device to iOS 6.1.3" ) Downgrade613; break;; "Just put device in pwnDFU mode" ) pwnDFUSelf; break;; - "Exit" ) break;; + "Exit" ) exit;; *) MainMenu;; esac done +} + +function Ubuntu { + sudo apt update + sudo apt -y install bsdiff curl ifuse libimobiledevice-utils libzip4 usbmuxd +} + +function Ubuntu1804 { + sudo apt -y install binutils + mkdir tmp + cd tmp + apt download -o=dir::cache=. libcurl3 + ar x libcurl3* data.tar.xz + tar xf data.tar.xz + sudo cp -L usr/lib/x86_64-linux-gnu/libcurl.so.4 /usr/lib/libcurl.so.3 + if [ $(uname -m) == 'x86_64' ] + then + mtype='amd64' + else + mtype='i386' + fi + curl -L -# http://mirrors.edge.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1.1_${mtype}.deb -o libpng12.deb + sudo dpkg -i libpng12.deb + cd .. + rm -rf tmp +} + +if [ ! $(which bspatch) ] || [ ! $(which ideviceinfo) ] || [ ! $(which ssh) ] || [ ! $(which scp) ] +then + echo "Install dependencies" + + . /etc/os-release 2> /dev/null + if [[ $(which pacman) ]] || [[ $NAME == "Arch Linux" ]] + then + sudo pacman -Sy --noconfirm bsdiff curl ifuse libcurl-compat libimobiledevice libpng12 libzip openssh openssl-1.0 unzip usbmuxd usbutils + sudo ln -sf /usr/lib/libzip.so.5 /usr/lib/libzip.so.4 + elif [[ $NAME == "Ubuntu" ]] && [[ $VERSION_ID == "16.04" ]] + then + Ubuntu + elif [[ $(which apt) ]] || [[ $NAME == "Ubuntu" ]] && [[ $VERSION_ID == "18.04" ]] + then + Ubuntu + Ubuntu1804 + elif [[ $OSTYPE == "darwin"* ]] + then + if [[ ! $(which brew) ]] + then + xcode-select --install + /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" + fi + brew uninstall --ignore-dependencies usbmuxd + brew uninstall --ignore-dependencies libimobiledevice + brew install --HEAD usbmuxd + brew install --HEAD libimobiledevice + brew install libzip + brew install openssl + else + echo "Distro not detected/supported. Please select manually" + select opt in "Ubuntu 16.04" "Ubuntu 18.04" "Arch Linux" "macOS"; do + case $opt in + "Ubuntu 16.04" ) ubuntu; break;; + "Ubuntu 18.04" ) ubuntu; ubuntu1804; break;; + "Arch Linux" ) arch; break;; + "macOS" ) macos; break;; + esac + done + fi + echo "Install script done! Will now proceed to main menu..." + sleep 5 + MainMenu +else + MainMenu +fi \ No newline at end of file