From 145fd978329cc64fa27655bf7d2a81cd823eab58 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 17 May 2026 23:20:50 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 17 23:20:50. --- .../20260517/20260517232002-Binary.backup | Bin 0 -> 252263 bytes .../20260517/20260517232002-Config.rsc | 3445 +++++++++++++++++ .../20260517/20260517232002-Diff-Config.rsc | 35 + 3 files changed, 3480 insertions(+) create mode 100644 MikroMaster/20260517/20260517232002-Binary.backup create mode 100644 MikroMaster/20260517/20260517232002-Config.rsc create mode 100644 MikroMaster/history/20260517/20260517232002-Diff-Config.rsc diff --git a/MikroMaster/20260517/20260517232002-Binary.backup b/MikroMaster/20260517/20260517232002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3097fc9ebbb9f0226354f34e1b27c5dcfa1fe777 GIT binary patch literal 252263 zcmV+aKLEh*sF8DL*#iJQyAX3akf%;9b}ueQR+%CI000O80004Z`SAPzLlIc+M1LNI zAV6qwSSl=Sx={}c_NM~vVPfc+XtvLbkvecQQEJU{se?oy)}8j9+}jmk6qhbN1v%Ug4L5qp}#i@=L1nOX~o;wCv*~FXA-2LP0q&!Nmu)k zM2bVJERzP|ww`oAxh)hGl^*m5n)w05sPRooDk>lqc0Yg6j%d|$&0y5V<6LF6t8nqq zXg(Wn;AL6E?GZ^#nulex`n&C^^UL<)4Yq4ygE4VQ3KidHfumLfJ$Oe3i!bpnHp0ep z4DC7h=gfgETMp3TI_i$BRNx>3neCWDBUiLiYcq^7$Ut9G>6Wl4CmjzTvQ~P>vTLAi zkk<&?f1;*A&||oIhh$c1zvQr(lt<89`Ntw0vMZj7*UM>txK`0}5fc zE{IL#3|Wk5HpLsqDz4LF=^$DOQZWvPOO+)rz8Cu4uWTmo?B5YSSC8Us*f$%3cW&HG@`2N`Yse#iDW~>iz04oeIZV67km;YLaqbgkiDOli-OA4Q0Y zTZG5A=yp8Vl=wr1n%3{C-_0vPadzk=9w2R7ma(ye zWqa>psi{+#{Sn zQ$G+be^tFpa9ejAT}ACmbr|;Pt&W~(n^@_>J|mrbfm!JvI!6dd5v&*TtFFs4Q?NqV z>!fHK{X#<^HY$i*_2>n2scX9<1Cl?kLNo`%)9eCnVw9>*YaN764y^qgquS_|4IfDp zOnm$&(`bYFzFrC7OS*$C+jT2{xgvrSE5MG@tK#JFezdgFLWU{t9MTf;_GWg!O<1GC zbba^w7+U{DG@GLs?T6dgs)}$JeUpH@Mi97EVq(8@nr4T#mEx$8W&M&F1t*+>>fs%I z;H$-p!3r`MG>^V5&qfp<}7g>6UxZfJs^M?&K>K8V6<; zjzrf({nFh<3^9IPQdrE?aQNwGrWM7u`ZYZgU_{CJ%$x(II<GAAjuEz0^)M=7$gLZF2H6>dbHkdy|6X+bQ)vZwO|Q=LsQ5v zMPnRu{nE6aH4+)aG!hTj+4;rVE%Xp^NvX>${x%oqYxXCaM-{m!P`{?KaT_Wm;nPVR(PRkGUGw zFZujvuqahdYEURSB$;y{<-mMrF)8b6N4wv7`z^H3t3VJ`;smp(H-6a4El^y?GGuKo z=l5N6+4tnJx6Ke?E{;W%P3p7iE&q=v$yDIoVCWU7yaHwaI|MRkgiEUOEnXKr!tkiV zz${Ngn_*J|c@Ivn82hSd&pvU@)wQ%d*e1EB6y(FuQS9WqS-lDMwXeR9elmBL+m1!W z)VNpJG3gaJ&SL)5oA0SK#hO*#25DT1u&}~Xvti^$l;t9W_2|Ya?aSbSN!e|E$Rnn< zv7&7G#HsTWR5o&=_xUV9>kq}h<_NU`ZLz$Yq}OcK5THCK-fMy zFWHy4Q&{BLzpoksIiF=uCb_xysCM8_@9}gWJp%Il@si4D|`U`d*dKrXNHjTlARKdFoSsuYRW!9afNnnpYtOtZ5t zU%Ri-*YYhx3kdHe8cF*;2tU=7PkCa8&j(gX*K4*D`2EqMb|oy4pCMt%Wpe9U*%_fo zmP(B$wyBe>r96kA=TNM*8IHi4m_+FwdLJGWm5I>z?veM76@AiHDmQgFwA9I>kWXk5 z#4_pZ6Pri{QN9C2{)yQD6CITUu?#p#g#xuaPn1}JXC}JxampF#g|_4h{XD~}!tY=6 zgs$)x96TM_!m>$VtV1Smpf6%a*Rcqt_<;a%l7gJ@=YTD`p{KV-HJ18vny>WNp^MD} z8I$Q&In3D6pU=}kW(j5>tltAX?4zz=iCG9Zc3V)Ej=>P9q7G&-B!PMvVDbh@t7xAJ z&-y=B0hpvs=;tF@t^P*QttK6AaNFiyjDIRTy+NJyCjVHmGm?G~pqs-y_rxj-U96Z- zcrhENPuGZ>)bO(l>}e%7JN4cZ9fJ#9_yLXpwpp&M4L8@WhXRWq+YZLAZxSnW!JS=+ z#LmwRitL&kWdnm+_OvZ11nA7xjElx=utl0(e4*1RbLnCJx~R$U#HW?NaimPG_ca-q z8w5~e%gB9+oC?5w8&24BxkJeHcXj4c~^LuCqK46Ok;i76aCq%(ZBvLVGtdDW9gM)nxr#(pG<579vovXW|*x{NN z=Zi4LsoVe-0S;i)*;EO3!NJ~;SX@XfRGXwGA)Oor0_nCXn$pl!QtV_qP!cY}=n0z? zUu-@Qvm>)8r~e(HEv~;pgR1gw10&GDoI)6nA8A~PM@EWa|BzSKFJGPtz2}b4o$t8IB|9eo_e6uwYqN6d%Y_y7m#ZiVvPjjY1ki1eZWFmLg|3+cs{)CaTEDQBKhLOCi-n z)2j-#R5yxs*cEiy6Y&3Tg`D7p@;mBXIweR}!$O8hXja&-y;nSK(#$)O`{pjAX)#mt zJeDE_mv&=!hwS8)vN}~j`NPOh6|CE32|Zji+GmNQi=R}x^W1N^U16k(uc=XguITpZ zLe%jh^m;i2$EA~j#0HwxZBo*`hAK9mREK{YOA%w4koU$hPAwd~HbPrFMyCzSv>+={ zk(PV0t{eMV4Uz@;mX(X<`L|83q9lVA6(AHW+`xO1PEZ%WOIw@+0;37V)PKHKF$tzR zj?O^%A;wDx*DSv{cyJX$Tl0^3wKh*Zr=`G5@5>*>=je0)C=dMtdtt{ZH7Jp6kda znhiY!{!Q3ou*(0rbX~uyBd_kLt8{I2-YBQZE z85o_PHLgS@VjyImiHPOgS5&nMVn8t(bL%y>gfoA1JL4ckX=5eoHKB0>hjEo1MVcO? z)u#NGT9UaZxVzCAmug&YZxtLwMb9@iNDux>3k{TvXx6~DS@GEmhedk{2i)V0@cfA! z%UN!ri4<3|Dd1EHywDg>V~Nh_suj^m1+e`uF4;4a6C62tueF4^FpFAHaazY);_k7Jk1=zAvp`Cfs4Hq{FEd=r&;k-bMRpvmyQwzcua^xBpn=<7;mUPK|Bj z#4sEI5FSK4%y8Wa46h2YZ1ibc%Bb5+k3dtBPmrKKs=-3YbeU>kAKS7z(VS=bqSByW zRG4$&q{M?1H80Z4IARO1-X}g&*rRy`YudZ0#*FnE7cR=@&_)ztH!md zQX147UYQLqzI5`Q+aotAh!ewc_I_N#^LBdArFUa|_u$ zmraX{|80S)zfnV&W^Cq(4ehmR;9grLRWp2*&3VXikY1v)C9!88_+XyR8nBceL@9yj{ z&O2a!h}qgj1ww72j4+g;SbmmL?`V3gb`jNruf4>QzBX2?-?t?MlHxsR*L{TW&FF#2 zz^?anrs%>cV@x_v*^9-P>j#liaXknZ9(h(DG@50NUnR z_E9?{jy(MGQ~nCc zDmjJsS$ueRZe8g+Md3}61w_B!dKuh5O5dX`z_M0c#K=J)hHrJv*PWEu?8v3AfU%43!}WrG~D{QO6&#Rxf}zft0!yVZ{ey*GCB%fvK^A6mh_tf z2NrcnI6rGHTL>>DK4*mLW~N51A3>xLTPgU(j$^>=V(*5OWXo~6rNjdJw{l3f+p{cB7j$+gBPK^`XQ}B5-)E6(~KHiKH8Ng;t%qmx4f21vClw z8H0FvYDnr9sx4L9q-KxqW)Kkm=M|ka!kt0XL=W&!{tMR&3AiGhgbJPJ7NhTeU2H@Z z(pS0rpy<3FsYmXG_HqSd_OEzZv<{p*Gtk7i^z)86U?_9Dx=@hwS%Rwc$ww)Tw`kYB@H%Fu8bFSnW3{5h0y&CEyT`RIE=@Cz z=;yYD{O81(K{$W3UoItZ7nFuq35m1rWnPieh~vmSFy@}!YE6Wzf1)|TtZZg)LR==} z_5O*(YS)An!b>=-_dh4Jpl9_F(k_~Ui&WmZ8K!ZwX`@p2WwBH(Kq&*etHhU5huny6 zO{Wy_)Xp0jE)aL7o~-VoAP$l^=2SfhJ-F7U`wa_U(LXiL8Aj!z=zH)_8YwE?Uy%ww zs<>*}y%rKJ=P9S+sruw?n(bj4z*e(L+*rP|%*s4CrZ(1fbii52L@Cpj)mgibf~5zu zKMrHZ44}-D7$@3zX3B6L9O9Ecr4}a}!lqE3!Pyk(^R?}_DR~<#@~K+v|G$S|6Gmn$ z!!u*bfHpVf&4}BKX2T|RfCQa2&Pgs z0*ehuJs;7njr_0|S#@6*pduD5nJ>g}7EdWjg5a6O%&)Lf4NTD!ItzFC1Ji`Ao+mv| z8KGugiedtLYkjm$U1k+VRgrllRXlx}62^MZZbpg8FD;3>oBJ6L8oelK$`Vm#(?}?m z9C3<91mA|Weh4WlDyZ}#@m&`$v)Y3MG1{PDwT!jm$u1YI5lB2gxj}wbo40JZjJIt3 zzU5C0o>XGwWCK7)6w9nVGnlW`hm*{$p;DrRlC%vtwIB!D>+iK1t>~#?1|N9Iek%DvbO|PWc?@qAd zMQ?^^Akg+wtlziB8U!slqjOfX$+M%F2^ujrPX6I3aJMP0k&k>saD4;^J0n3aNQi($ z0>3ZhIqL)A7T@eAJ7X3&H+}!e_Yn44#pno-y5B2QEPye(0J&l6i0dTQvkU6-SEj?o zlBQ7Cwh@OvN{`4wkGqWRJYwrQ?>)n1^iBWjH)4DJwWfCo1A0n}pCMTQn#|u4j4}k*T&1y&IM|yYZm$;&hR}g>Z!`CQ9~W z83$&GYAEY%`v0SAStU1L6bf@Gt#Xo4m~5_XR?zPN>bt6$5M#$LV%7E>^Wq$M7pj9w z8+IEe(!W6sAk$@u-DHfI&)OkM1q}5Yc3O1HE0!%bI9pZEL2qgWY3xWgfv4A)VR$Za z?yFt>#ss02$I#rGMitdyQSYf5F2{lr4wcEElXW={tnENf2BTTMjK{pVdO62j~>qDY3v`{Rnw30<6soJ1S`&zc&DH>@QkTY#r*##2UvvF%>~;rv<>;{5(T}>(rr#J9xVt|r zdM}Zq02dhAcz6grO(R!G74!dQ{-?MeLbb{Fb(nd54(AC30gBJLW()c+zXF!});PhqIukHy=_!TA&dv=~o759v2V>dE^l$mhztG6-aDj5*M z64!mZc^xU%|~mL9jC28w^n z65A;5BdXB|p-C1N4b=4PjY5Uol-jyP^eU`PsrVvCJ%7Flq7hbeO8m5ws zoaK4eK4?SA*csMb9chYfZgQ34QG=7LlqY)F(#6KiPeljP1+K?{$Lg?ck>#x~BSif` zX&!0m(mDRin2C$IFQ8Dabpa`Up^r`hDv{byPhu%izE1#j{LPyWT_teqX-t2tq?tDl>Z^!oI=Pv9-WaNU!WqfjS8rw@W^Dv7Ml;s#MqEHg}wU zKehghKjodyW<1awoFY?Ly6=!5wuipI+q}`s@iVsVKA5o9xf|zd!~t8?c>p| z?8xM&xZ#iof{#?egUgp73P{rLWW`X9gI!xi+4*An-E4)ykF{B4etDKUmwa-5cFqPJ zf0XJ8A4UE@LaFfxF~DXWA1amdVpH1F!Yq{Lmli~svBXn!fcCE8Cp{heR2&MOoz6bU zrLq+kMH?R~Nq|QC>%l^jLcV_|O}>k@%8l%|U*jYv3|_a9pqgs3nToU&YwYldCNQ4q znd+JNwciHtE%m1;qL z#E`hPKYY#|qXauJ*qSy#&Odu-!f8RASlf=$x#CM?G%-NbCENy@rf-0iYP9dDtKp`n zs3;DHc{9~})o_~@8YHIeXh0gj)m1Vx+HHS{-@oV~4!jU*H$Wuk-7Ro{2_=%o^qXZ{88bt#{)FbpD0>GGvfuncI!Tmk*<^6U%%z$y;$O*0Q&Aa9Tqk^ zdsiPD21XS5jmPOc7+%vO^Xm+Iufpo0UA!ju+e-lalweq74PNrjShD)X>!rG#XV zF217Tey?*u;1{p!R)OTptKMa(TV!PeT9>MP> ziv#wvy_T8L!9OwU=E#*=O7sJ<^;9j%*}lJbjeSsI^{@tCgDU=3MMcOs8^mtb`W#@3 zbM(B`{Q)i9AR4F`#|s7GEKs&l;KVLs7FwuU6GFN3x@Iy6uXhN~%nnN;qhi1Dbj!J)WJwz+@C6S&^m;)=h!`R9?93%sMIf~ojQnz9zV z7FAUg)53sQ#L{zF*^F~8xwVd0e1ic5Qxgp@o9(KlM{AXTOmOKN*C&3Yw5y7Zro75j24%V5xBD8s6w8fWf-jnIyC9!78hpb?xj zp?oX@XHf#n3T*H$?M8Mmrx#HCn=nGxFpW~y7HFzOt&auJL!?MRVij?jtRpz$a4)fK zgwX~2V4?si6a4OGgL=$>%2U5^&$wHawV?E8=B-NmP`kEW;EXo#Cnbx*M{O`%AQ-`D zOGL+2e{)M5R|b$5UyG7?y~xep5v>f4wZRrlWc+ALaE@VJN6o8VJ#O@v;je1Mi*t_y z9{&zyEM8z>$Dy`4LK>({`cmqJY*Wf@=Rz0ruT&I-840ptt4w%P{)gs&nCF9|!6+QV zTf%RA%$tH%4#{uzjQq1zYTYbN;%KUKMoJQhwiMj4L4i#09@91SV6*nOFG6ndl9mlO z;lW6Aza+buMMcQ>DJre0Xj|Lagj(5pt5`56>!8PEmv2-Ii^hy|EfHNsvVTc1qi~2M zu6$N3bR_?lpW#NU2C8hq=9!Jy?{{ z5tS9vA)aKDbj8!;#~*1gX3TTWy!*)khv>sc!sI=-Ue7PW0iPP@gy`h;>t*gY9LDvv zEyZzhVktVhIz6K(Hp94rQmmd6kxm2h6bw`^KG$O%JVq2?+V@$@Jo?5=DsI0ixVi># zay?cW6Kx62PQy~xuc$}c$Tf7gE)hTD>ih6ShR;wBRh0dx4Mr(1NZ7|zo{cdIYJlwh z>w}#3+})nBzX%ndu+3O=3B?_8(vU=RP7OV)OO;rZ3x`% ze}mO7!F=N0f68>?d1Q>z4YOix$uqQ34oSx+H}yrGPt?eP$k-(Ty0-vU{oRP;$Ae#s zR8IMPM^)4{hkY%(@+~eqbsip(r4hbDvNP_1vuDCTk`5;EqpB}c_Z<87p z))Gg8iR-onuAVXX41S91sGbO`02xJ~`_T-ty6L~h`X#$&FL?H8PL&A;!{>LC9li?e4WUFOe{U5C{h_(BJ)v&e_A%DOsZ?j zn$~_YE0bL?%A~ZK+@7i|@3df9_3Dsirn*f&4zPKgu_fqpj zr$dpVsgWE>mR|mmWvR#G`VGE&{*q*nt62E)wq|I+%DpK2TwW^(M2&7qqSf8_p&n*+ zUA!~mgWASm!TfJaHC}{Ha#q{xn(*D}%_mf~^r_vbmjC@elT(xxq+l~rXJmglv4Hz3 z)q2`*MFOg_Ri^25Xj{~Jqpc6U`$XD?sGE{xMt^PAosvNi^#f!+22=IuIsS9r1~+cY z0frWKt$pK|CbAeBVADL~-xpm{#B=(OwO`w| zlYh=LIM(19>D)|_waz#HfIsNDOb~oYpqw%Bgcsp7=Xr9G7JFj*@2&G(I?*RsTHX)X zMqSMmZ{uMGK4oMwB;QP6@6kVg)}S_`J-Lg@A8-@|WGL&!YT${}q)c$y;iZS(fZz5n zogEWIYJ2@c1Wim|!YaB={q8JAmS?1_BqZD{oKA|IW>k=XNSS*}KjWq7~Ms6r+5 z5XoPMf_|)>079BH{*-L~e&vo{L#;D#HEZI+OLGN?)KR~M(5TPSOh9|`r4e&S%7W8k zUIqBsZV2Sc-QWo#)t-r>xuzpG^+UOAF1LiItgdN{3J9IE8RBDtI zQ3|3)2G2m-V}PBpG8=u8$I@4{4+J3)6678kPsM%3K<6E>+dAZuJKg?+$B_zp)&B8l2DOXkH_a=Py0p7ubx-`UZ(u#@@hkv!`JJGEhk{`1>IsW2TtiCmT6Ox{krQVT!vIt^AY04}eFq zDsNbGJ2h?WdW!mNBPd+w9m{{GWAk3DG!!8aM{M%&yN(5tB^2TwElD*J3Ghzex6tRc zC@PCeZ_Mmopip_@dn!x}YF(c70|;t*zapqh2fa|Q5i}rq?J(r_iz1r==<(YS*_o_Ws9@OM!0;~y|)bnxUs?je!&HwN!q(7~5*&>On zWK&`UWDGlWlDg5!-b?;Kxa}6`(VzsmLiy4bjSOm-*MV})=UHyH7=WxvP+o(;gLvCV zP`8!|i||Fh>Q18kb|}pv+C`q1y=6lka(=aFRq-KMD^k2>)8mq{Yl?ZVl*kAh>IFMF z6O*`Rkyl!B8U_=DI6TXPZUk~{OZC@m=1G+pZjP^tVSTu3iwY*);eKHHLK#g~G;m@^ z5uW9TtvF={9h_GeX<$m;avZZ-O z*+ZD^eY#zlpS5yd<7xTTV#!o1<-?Hz(RB+W0T~zeJBkxjSL`2OCOQ1o3OylzEKqmH zEW+0oNqaw5hXzl(sNu_$k6rLT+UE@eJ03|Q1)~2{GZOhj@ef4RL=!*;IBMEWqi5S~ zJ62)26vN$TOK7l+US}KF>^148Q-L!y*dXfC*3jvJq|^vVyiZck4g~*`S(2UlJ|0Ms z)IE8n)0WoE*SMM%2~|D+%`2RSB5C!uITd`pd)@&r7XPZi_U;TUvfOSgm#dL#xZ_m2 zXNkFEBTU{Vx=#AeEcD044ll-P6;yIYau=gAvf4Bm+;EiON;n!X9DXr@RuyW0Q!szD z1?+4S+O*=_g~1WPi-IDX4@HV&s_m8GgPR!*I2I7xlbTpr2B783I|(u4P3ugsC(Cbh z+;I383WnuQ^{bf5P4|1nO3!15i>5LcX`d?57dr@XbiLKBFa}rdrGYJv{Pvny%eCfE9#NEzhr!q>+uNMv4m|!j4vP!I0eOD!~D|qK7uSah{(^@FV zlH=R5C$7{tjI9`jpe0;^Yip-PKLE9bDt|m;Y1<5vSAoRQ|JUz}Jfu5{O54q-wYui+ zjD7&fJAR63D4a%cTq95mZj|OAN09;KAxV&`xs$X?ZUg0^&-W9FIXr<8fm$y_x=v#* zNJkTu{YFJ)ohZHwZkM_zi-_R(49); zP6G}@dt1+iY1W64swp)3DF2wBzeF94S19)s76zZCy9OCDOzZ%#(<}IIIjVsxpJzIG zq+#c#pp=8Ry2JhY_f*7Xyu8;ml__pM_O5G{Gi9h+lr)-Pt( zxSjQB=7@&LFYk-$<8wQ8Ez$_Z^aFtoKm6K{!1a2|@=%*0)=D0DI;McqH?m0SMY$Bt z`5k*cUQ1+|Cy~~z7W}Ke1j5P!tTshyXJF_8i_f7g4f~q7Z=zDuerqH9XvC)DnT>qP zY+_|H4F2_{RS4-zmks^Qs8_xy_A_jilZ`{GNuBB~%>!aeXSzMSaEc^{3yrI#xkSlj@hX=@P3c1-t}xyJc%>+r5)$*P}NJV1qJ1fqy!-LPI7xS6td z1)B5t2Bib4Wgb6oJ@>+5>)g9ySa-rFs?Vqw%lD+FcMdzscg@_?@8=rQ+g1q*SC3mOHJJLd#FRZX<=hn9*iY$_znT&N4<_TgdOHNg@r zL??W4KXE23HFwKob6X{w=^MI}jBt_@^N4CxtC3hK2(Mrnk?)=XO*S^uS(a2@mt)ZN zL`oR|A{{0Ba1nblu48u|L0c-!;i*z3Y~}gYG`%$KF_BCykr1GY^);xnf9pcto*#zP}Ip-h53$ODxkL z3kJyZ38&x1>jLbW>HRb@qI;|aOJ{aEA`CE84IpC1cRn$qUh72XCN*Goin5I79tU;W;ZAsl;=IR`<5Sf_+&c% zM7f)LLhm%w>8m~Z7&uJ)Tj^WW|CHq^5YWd=fF{)ssboNLi^bX5MURo>Saf zLC&LY@(vy`TX>g(u>`_x@KHViQS}5u{~zeu974DsJRB`2CRYT1am`*<^O(M7()Yvv zLdFm)$TkX2*wA2*#X*!0HH_rbZ`KPhbImnjTqM!h8Q_rikmvO|D|;Duih5zXY} zn-V@v0D*;#*iz3KR7EGz{v|>6!guM=0E0Ga_!4jVN$&GI=5}rdKLWH_56y-6R}(LbiIytBDEu<&1# z(`pLd8j%BO*E<30%nj zEZ596sgFH2&eFObb$D|5jKY-Cg`RW5FZ>JR!>j$i#?o0dEr=Qz00qiOWC3eF*v zC>VBT@mwq0dQ>S8H#ff~;IF7l@aOdj&PLqR{m*wMrV{C0pRc{)UFRPyUa_v3`g(@3 z1s+=o18%jwcTbpunuS4+4}z(zkJys5Tqo zP2uk%Krt36jrr+|+&P9(a>u6AzaSSvxFX{u0eI|qnN>y z$qY5fH-hkI7e~BWc&;ng#iQL&mvL&I5c$QAq%`zO?uxLcIsdL?BYaQ5T;BHJO}pey z`D9e99Ntadyt_f{+#{*Mkyh+js)Br`LN(s8K_eqZuBMnSkR95ZfuwvBV2;xu2J>Vk z?L{O6(mYH&KL{|FyQ5p+CvGLdlwWHtZg9yyOpqYELrDMN0wu3lP1G77#&Rn{`Vrr* z0l?yGi(QF8Qf1SV{F*xnz#FX8U+>V**4?=P)qXwL2)LgBZR=q=ocJ>P1+CZr4^j*P zgk@a<)*p6Xz+S?|X}asb^;s8HOIT}Ou@nmJ0jn2e^?s8#yT)@Eqi!Jn_yo5h3<^E` z;+rS^?S<5pI!X@Em=bA5EhI8-0jYC|N*t%>d@5K9yhbdsAIN~TmP@`>D zczg?g2w?Os$xwQchmy%Sl2I;XxMCvHuw9@>@#E59Q3_zbr<0sIOr&Qdis6KFj&a&3 zU2*Sw9tEP?@bdbyJ2G9Jn>rCm;ibx0b5t3>0Lwuc$o!chq7|RW)1w{!UV2*O>(upg zDk6hF?8-?!Y%t>4F0q+B^?n>oiRT5FY!TsbBxW;xb(QredTHFK$^JB`9NRA*R}Fx; zVy0LQUExNq2I}pQiXCA#I73_5>T0I)b@Je$j1 zVi<1LbUEQQXvbBgf(3Tc*pKxr`fu5zPH77{PyOu?HnIqYqs}`PcLzcKCMW2ah3q|YMCmv(Q3$W&Rm(}+xZQ!f`k8uXk1?`^!!?))BqSDp{fF`DV{Zz zRa5aB6GR}ulhz;acnyDgFYgY1kn>uvE1tt_t2@Yoa$Yki=PnQIRk|!2Z^!P(Wsk3h z4!S`$RCu&u-punF<`ygYr6qo>241N*D2^d1x@HigVYlQ<-Uh+q35W-RNjX@Aw@6Ah zlD8xLmw%>@TN_D#4SpmFQsbuOSxSo&D6Z3R?5M-(r8{!{?UAqBe4&(>I1^UGpSpX{ z!N1UXi(5e?WY)K*&HNSVMbIqOGwRHnVyqYKE?!SK+8nc_Ru1S~PN`cI=Av}DNbajq# z1|s*Rq*c#gZH~xoSFY5tE#ax^G)}$KHhf{jTp+Dg5c{5=S72d%flpp!Fh;EBTl*9|@E_(Qxh1}{1$j*g&H*NqZ z7Fq*s5f5dEanVEN>|QW<>J*400_!qR{tDe?@$L)K^qmDvAP!k`5UA zvp{J&oXa--JGR%V7$DMp>@_p|E2NPm~(IeSshe-^Wj-bXag$yoM-!TPA0f`4zVfeNw>XAS96}8-`(te0U zVasqXFco!-vtg`GLekFoJvo>dkj0eDOsTtHF<8ejkG?Ual-svgz_EQ?zz7Ue=6BZ; zg&h1y6QCCy+9PqcR91}ZQ7>(x3dYIxnB|lv_y}+#us%M5r2%DogmF|)l>PTOK&C{! z@b`4T)yU)y#0{BfHUx<`gmsznm(Bvsuo}cH?=xO+mndRd3UU_SD=YoY>19ezIH-j z@fld4cgxR_r|kH)N zB^OSVM4n&bU@a!qgXz*AIn&*0lN``QI?RjTY=l(XrY%xrjIk0MVz| z3F?mEk!bLGv}&&Us7uTZmVGPmjmo{qdzI zqaInliOX#w>O;Nh^r+XaDes06!VdK8H}(UAkCY?CW?J_#mj~wZ;goXse0UTnYe7t) z#jB52O4tF_^yE%l4Wcy|SQ`umDMZ;6SIk*;4oD*I)@%4628p)KMcN3d3$!>1{XB@% zbxg(`m_Mc}-$Q@?i)gIlMz{@WYRt}dz7M&YBdS_nZCrBoaE#w0#a22xhfCJbj?!Ra zp%0`Lbm!M3S6-QO_>F{62`5ze!mO0NQ=G-i!o+FS;QkzkXNRz|9?Vj_nQzl8@P0V3*mKTG)J<+YR+4aHq;!8 zxBG*x7!*8Ta2)@c))`(+aMJYK$h%=*Gdz`j zC`A2o_}@0PV0OncfyOp(MqemZ;o6SR+-k7pAa3qaRx4JJ_Nm1Y+tlYnrI)R zrBLgcS8Gm@*lhs+KLEgg3=cq;&sKcE%*Id-iIH9B*KqP`+Y3@9fPYLsX|2|(?J)bm zEk(M0=@N_Fq6(E+Q8ydX_^xZr$mFGRscU_>m>;7`y>5YcL+eG(0}4Ue7MMKKbt%}c zcLB!`ueQ=g0G1*5Ndo`%=SNdjkyExvRDvnPQ=v%7>9I;>Cc-69IQIMt@S5Sz*lI_J z)KY6_+8R5);66wzeo|uYxV@854 zb)a*YNQW0f-=c~rQU5)ucaO88%e@Tji84PV=|`*@3Xwj~xFAuiI0r|L?(GOUpP>S4 z8DZ}zm&qaq%zo*mV0kzz3V!AJZ@gUkh5$wq8Wi+8xg5tsO}i&wl*|>6bSbxs(uKWlvpL7l`lzD zq7{|-^K2Y>0nAXlCj5*|c19=gXrN3XY4bM<&Oz!D{L>>pf+U?npPW5+GIA0JsQG3W z#Ef0c%*Ei4WiIKI;gNiR)MfaFPr;y;vw26$!_zpVk zje%)gEWL{j*Ho_EcD}D|s!9mh#v<*JXRv0aTPN01HKV{UP)-!Z^1#u5IMoyf)&OB7UI@dBK0VNl~9c~VPKyq(V9zt=lY zjMdCf@z2uEGWETBg)Wm@SXT06M;zpQIil?*h~?-aOvPl|PCTuKQkhO@-?4My zOrwI@gi~KULsX8{yj5^Ub2`^8|LKJZ0QIHQr1Cx5E?7^&^^!qouT(C;Kn(Kpu(TO$ ze~Y8-^V_~&+j+F1ff&De(Y@#mX(t?8&g97wCX}Z*=V_aY{SnbjhU|)-vcOJp*NUUY ziF<36Z)?1>FK+UU&NMg_!7u<$!$M|^6H?rnqYI(=N`w-5fzj$VE1_A*o&3pp=PmL1j@{T6^Mmr&zU`k6|Q-gPy8iAL&t&a{ON~?WSyWc+AvK%-{1P2KMagAw}y_unvd? z-mz$CVGSgn1>VN&vXVJWmJdJa7yvjiLU}X<=njpQ2sJ!^Qp}qCUt2%fV>i9< zTZUU!=t1X>+wJ7d91HSU3x*9O;w#cMK#e7c(RBuADskJNRo019se2BOzVl7VifEV| zA~wPHl$JR-++?VWADLx*tToZs45&#IQ1fB4E#T}AFmwN&<2!o|4!5&(icP}_6&;RD zg4~U#NY#}DjoIH`Qy^g!Rss!NUVx=~Y|(dAz!+2_%>2;CMo+ix|9(Rj$%{|AvLv2# z!7Nf{Iin)Z2HWjk?m}|mli<9}naJno&w7o%*s#EmV4zs>R%nQX7q;i4s64Yc~Ci5w)gFN|^0s4}r z&H1a zG1cCFXj-M^j*vsJ3d`faU6MZcG|Y4(^J(mq0mI41W+VAh3^eZ`;GG3*8vmyDc+><> zk6UZ5TLaA}IC+XNGHs-T#l^YTvQzt(GkR&Hqvy<9)Mv62*8D)aDcbz;jC+fMlkvP} zj0H)?=6+7Hs zvuecFBQkL@%V&^$Bg$VWrBlZASYLx1;*Gv%Mr*ptZd&Xl*^KiOdSiV;;vU4FBa8Hc zQl{Js+&tei=CvYXw`kEiHJ4K@zY##p*uuCBfrXaZymlgRr2qYX`}nCBVI+PHy7K16 z;XT}hOyBlBi8`k`M(v}hjSPTJ_Jvfaw z^U!4kh2@Q2w+WEwt6EsggvhIuVMM9kupI)P+{Sh#9xN~*)(Vww9zVN*lAVK-SFTl; zmOYSV3%zK!yt|3>3)TMS(EH)|MD_t@-?)gHv31U`ljG8tn}aqg3}G@;oC9sPeHYh! z-CZB7Nfr?%>7SDsK0^4i?rON`uw*Ws{GFIuK+I%1gM40=JCJ0mD~kU?{{H3DT`^5o z6B3K@x|wV;Z4s0p)ru7A^)<8~LfYA;+sf;mn3*9?&;Si*?+wFpU$u-tBD5v`KQr3? zOH2^6B`yJDjPTWK4#))w@H-5$6wkNmwCX)LKy(MCa!<`w*w8OQO3q_)<|Z?6LXGc?ZFb;^f6yj_J8uKhHM z0t$>Ayku*F>JJ1Tb6TfhWxMvL}Ik;${=V}jFi zH^jjp=S@l?JXuVhu)b#efj&!4eJ)(K6t48)XjBe~W48WI%eiDF zs4Pk55JIxZ9y|ELV}2zC6xxeMM!hFl&8efYFMZQUW(m$0>{^6^gv!6R`F&ajA={_o z_FMat(AN;{+k98QB+t&6;%0dUE@mg06+nWUqZf0(WaTdx=M=?$t5<+?)GA+X+Q&vU zoJg9Nmk{#_wEkSL89m&=)5uafnmZ0gQsS^m>%Ak&-g!gLh=7}y?uvm(70QLqHgbJ9j@4Ws+_(PGU@?tr%XAGom1Pe~!&iq~G+ z@=m#|HBh+}U=dseX?vjTyHB28eh)6lNXJq5>V#D9^fHM59*L?Dt#4|&c@0bD+gUF; z0@!r1T$K$4DNuNSD$^*>$(aFMRzuG^j#gJ*XLqx5qg_Fr8u=k&LLOgD@kNhyU%_C) zrn>DFtICd3YhW7+18=q7u0Ir4RZU%*FA&4bDEVlRgY$4Y?7kk^`U{H#|H3!B_nN9S z*Er#=O&GzKNlv&5wr|jiy+m-17B`qks@F(q{f{*HUXW*_`p%kna!X_btLU*YxazNX zOB<9f%tvy_#Z(h_)i~4SSToxl??TyhgLG|93Cgf9&?f>Y5K2=94kb*@>K*F)zP&lsW zA9zlLD6B{?UXJcWMbF>?$-qT;E{+~9h2LGW}eB3BJyV7Z<<&h7Z)I@}_wn>7G!0rpr^#9g7WuW8VI zy^gpxrYxfsR<`EQQ;9flH6|-)@q5Uw5Z#Y#p;Armz*1c9)a9(&>d}4580=bZE-9>W z2!)TnP0&lVvvQ)!_rwD3?@|Q(KvUJb^zrm5w-|nl=g(_5HlvG2OU_-aAYJ`O7=J&H zG7Y#oL8$r>?Gsy_yusn1&X2^MekZpVLkzhQ1JITGOR8>=2Iu1=wd! zQ;G<>$x$tv8Ngl<<$ZXnR*Q+m3CPN6W!7!V4)c|2Pc}TusY;x^g+C%!Y`Zt=&szfB z!AZ$=vUSJ1@Oqvw1+3$m76Z51*c`qvf#Y#bZHL5NrbOb?JJsCTj!xGE> z?6*VSNDCGym!ZDVL%{`XR*VHX*dew9E+}U(hb@Nkl$+=bs0L8@*wv<~;$|7btr&#% z>)Io4J_%p|hJnHdAS1ZmU02XAmoM#pI)Y6|HIQkca-<>eIq~AGazeob<(BdtPF~>b zg^Mo{l#C_me*(*s6g5NrCrr`%f=1>R-ok#Apj6(^sz_b`fRY;vH<0|l8wO{g&Vw-S z_`r~?s@UPZH>#oR5hp0!HzT~<%K_Z|_(7H$B=i(!betms(Tvzg~J53}5SNQhm?Ad)^v_`YLfBr?t5(qL#9rK_n-()CQ7i%ey+gKkdC> zv)0G3iWi6uc!owIKk!I*EfSZEJvhzuI)=-7>DK9%<(t%65AUB^$*T&5%flc4@iu?= zOcfMia5bE%-8eRV-aoXBs=GIxuDQOWDxo0=YF|a$No|0zJ5v&HfA;Z?$V4L|Q!aQ^cRP-Fp^E0@sA z`r{nX2RP$hUB&vXQg{BozZPNvp3HC5S4m^cJm*)BuBW8brJYr(KcY&@*K8wUjvb3i zS&;4@u7*T^*P}rUNSoQ%;#!I@OR&&JwLi@Mr)HWTiqTK9@mSy$JUQ(mB{7rJO{0#J!WUU=FtWBIInVt0Q}m@rK}1+us8N3F~8+b9iadg9Pw_)-2K!k zhHt0cp>|jXxn(&k4;~czf+6kbm?!_V7de9er^`p4TPrP%>PWjJGH2&iJjO)gin9BsY^rHYjn9dtr2?7Nj_*`~TfZCEL7bYYkidzbrVXx-W|s;EE{)dCi_gqu_jgLRA}NC*nR7oO>D<*4)ezj2kBuf*y9_sQ`QiHtg6eIspje0c23m(f+0GO?q;IXF z0dCS6fSs1FAcYfwfX1+*+`F8o*;5b#cq7zFV9~k-947Re8FBmPSmNc?kj!KnE%67_ zMKkiGKuhd))*D|G%N9Fn(~q~*;+uNuW3X_BXIOU-xR`2@=7i%#Y~dnNqJHyaTJo)C zVdfwh;`Ndm#jLTL>RT3y_ycIieYimn8-$?Cgm<*7mG40nI+m;ys>Gm}cCCibOnuGT zm7HqEFgVdm7wTX|;4MRaA&QW18HP_mb;HWiT`$o4E2Rw89u{1+i*|OdfaodFAy(z_ zQMhhQ_^z|@Ci*Zs4FH7+UN3DjForaam~%4d?@cBfQ9HCq4nH536)=}C3FH*q`GBK+ zrmek~N@j?Ew&GyotQ?0h&7)8p;zi~CD?LW6$`kNYF**jMzBxO#rhiC+R*rfg7$>PZ ztq1J5fv}0phH3j;67v3f0l|FX{M+qW07=)udGgs!YH-E1GeH{ZSAW;;8g;!`5u+s5 z^~a**1OnH(DR3K3voH6d?0v5lcm-Z~@U|1$-eRiJm-AuoC~XhQa8M%~*8?d+i0SwBE_k`8GK0lc^LU#)> zox#ii@c^Qey}R7qQQ9jh!Dd5;&M==~?0L4tJ@}4>HE)I;vIWbU_+v&|LSw+W_zwTV zZt=75`7-qZrpuUt9#xZA0;fk=f$3swJu9DxPpwi=;E9>R-*rb@_HLFJt&SB!6pvUB za^&0f;=b0^?v{X8EWDrusgI&}XaBFYv|}PLn8g|ww30Xpl*NdOkxUQIk~*@GKyu9w z=leFx>`t$J<~r>5s1zH?e65U$tj76%Z}$Rlwd!Q>K_$5cVDiR!Z36)i<{Er_ypq*v zVL;C;CcMj4OhON)f5kKz`CKLc1k9EgNqZ@TD-3(d9O#`Gc)vVu$hp1c?@^hvBP5D0 zhPh3^_Eimg2LY;K$v?MdFiC?Xm=h*Xmq|~N$ml*gRK5%C+MWLJ7Ses=o-N%1HHS## zqny!Z!!g;`HyQ;Ku*xfqR!~nKI|)>dk;A936~WK^XL+yh^|a-w1eqUeWgfL9a#+x{ z`t9SdRyxHAlo)022aK;Xa$gxa$VrJHTV!@kFE4u=m>Lc5FZ)2rrr75%G_E^ln%H9IAW z^i{-OdhF_|5PVRuS+>@XT+ykRQ8HQ2%M$Ek_0~%I{hdpUpGrISi`A{qT!Pa5jy3tr z-~4~;sGhfbzxqWysle7+8Uw>Wbg{3)>4*PZu-m1l2X7d~b_{XX92f=?L!OtoVNtAfZ0-^GSh@2V{cXwgv;|z!Ez1*iOBv6{_TuIN!XezYreY z5ycchWDA!vV*Za}}JUA*EZ1>*)LOl1Vf?;8_>rzypW!rJ!5cbu7yS0$JX zq9y&B&|8x-U9yN0aHkjL@%dN?jt#~0(M)E#tiS)O@JU7K*ShhoyGQ78?r;|{j{8rS z*gWpM3zJWy?oB(|!M7jbv$_2v4a_>5)=nL-r`3?Mqt zPL^BVXJL%W|7o zd;$An=-8+# zJz7&C?UhA!D>}9C&wJ4V4&mP@-23va3a?G=X2mK~mlF=wgClJ!<*>s5(HpeGsa5GS1Z=I@bdRQA8s6W81=jMAm6Y{iguY$Su1R^_{U{&bS3P}D`UZE7yT zyTK??Nm7^s>GIo3Pbd`S3;rR;$we)0by|adh0ny454j!s<;lFdt>oR+a-UN8AhSu0 zEw&p2rhNeLbNj)EXx+Qjn=N0O1*6jqNRx)q z7K%s)9UFXBYYpQZW0R^lM{Zmhu2*B? zOiJBScE3;L@0=W(Xkd^I4gcgQq)0m!{}x>a1%#r$8nW<2;o(U0{InNCI2v2Vo-43S z<{Qsv=b_&zmE*E*kT5*NFi$^hrTza8FNAYdo||@O+`OG-@YCTUG?7!1mnFGlFXQ#L zBnAAuZ46N@s9H(buX~4{dLSc(CH-%Zfm-Z~sMIJ#6h`4xfFj94)SMo#*jY4Z$BQY% z2O;0h1A#htM+|SyNPQ;JVtY}Z#H@neBzPlAG|d^J41VGVxnhj-n-e{7N_-rJ9fG1g z!`T9@N{aVu8O=sWe~Go8kM5etRyYZ7BA+0223Az4SCdiKz|aK=!%ZZG1Mb(<{21t8 zf+=#@3LRA7F4K+q*dM0V{k|XV+Eva8zyGs`d@SQRye8qrx|v9y1R;fa^NAq@_S?4j zLXThyo3LIZy=f!ADE^Uw;f4awqoo=qieYWU=RmtVv?pS<0eu2J#G*5`b!akX3>2*H z0VWLhf`Wx-^x_q~&?G>K@L&oqW)W3Ip)nuw&W)v%2Q`Z9OOW3v3EU9w!SO}FQ)?@| z#f_-j?C7sN)ml&40DMY27ngR1n#+(-Ga3#B(0k^6N7InVZW=m z34RX9F*5+Z&DcA*P4U(2C{K2zX)j2MYqknKCCZm%KR@GUdQG&)tn|A!4war4aQH~y zS&4{7>!fn*w&*Gw3cr@)NY|?W^xd!JUI_}I-JllLR<*+K?;kJ|Kn8S5BxeF7G!d17 zxPi~tC-*2}Ox2b^t3_AMR7uHghVLLF^i1W<94^yYame60bDsmDWe{Ily(Lg9Ykkeh zykW|G63c%7plRaXqU+tK$m+*Qg;6|pTGcv@CyuSr2o)~Wb<)*pS6v;+&q!41FKk1!&S?v|C&Ds;GCDH z+~z8N&X5=mMh`5RJ5Gp4-6R3;L>AVYVx#vHj})CoEAwkB3F1@&(cQ+1BzB)L=*As? zT#GhM50(l&NTbqYY%#xJwwRe75AFiAAD`0vFB6p(cByN80R-Z3@N^;QqR_3(v zg^Ag=uE1GsnfLl=jqX+$;`j9e7#jR2RDb^CHiQkX!swX4l_SKtag{_bV z2KMF_Phs6fV3%uMm4oiH* ziAQH^alTbKts?NqcG{gB^2J18F7j72;Ld+KqT7UH>n!7Qvw)tb8;kFVUh>y1ZOu~YIcL=Zb%D*$FH2$q5J4nkfFU0Fl-ENGmCR4d-jO*TFVG>PgtIU zAnV$gD7ZJzC9pv)WcseV4n%vGA!b}u&l3nmx|^Eowvc#qt9jYx1FZ4T6z&`uK~Zg5ZSpJH&W>|V@BYu%kM>XAN#?^}3T$aiL4o@-XU;Hh`L zaF`ZI-Y^NX+GYs3ULBCm1B@DAPw~9$2GVF!ut6;%rnQ36H^h@@gf@3&Dgv}Sb~b6?$Mk?9VP)#VR~F=bdUof0q{*FjRGbK|I4*A#v8(~C?fd5Nd?Qu zF7qdGL@l~%7f|5|#gh+#-F#sdbZ}EeG`~lxQlf;Nz_az2*7U0<8o?In1)Bc2BXu;2 zZU5J<7Mc9Y>1`-BpCn5Y%`g@@k&4T>?zRN$c15WCS7I95o1#f1ELVEq z;o_k61@}hGYgov zR|(m?4mzeb$EOM~vaG=UTdf*S|32W1mBYs^%xc+Jo{{Ra9D9s(e2IEUj?F3T`C&00 z`FIIRz+*ydJ~bju*06ypAl$B9J=P8iNIBhbugUm1LM&921IVwu8*Xt~A zD9mQxdUg(*$CYQpyT#H&Pt7girK?|bYjvq~k-54w&LA7C^qcZ_7>{l^0W5GzyisvqA*Xv~ z@r`M{8dTsi%qKDMPbUhR3Hr;^>M+84%N0F#mFt-Sz@mGyY6_CCu7ro_Vc4L;#gU@d z_J&p<87d5bM+#^a>)ueqN&Bvd_VzuWl3ryt2@_DkJz3aGJd1ip(?(xkQ-Hb*=gQxS6uWNuYuOVmcv5F+5q{CJ> z+(gl|DZNm-9PRvknU+k}C5mcbD;gL%go0-aTP0l4^3lV&glqBQ$Xo7@ql6_Yq*0bR z)x9EkBv_NAAEL8$)(;7``S!dJOXonjej}pTUAYrItrhnj9J@$1O1#$$I~K<3o;S91anr{Cn3uq_jkAt0*$F@E($1->5 zqdNsE7~hyT12(rENR*~o&eaC;eEu_(m@5#tyTj)(z*Cx{h&TWrT!4%k+G6rw?5GL( znr%!3(%Z3hA;h@{r*wj{{d;PPR3|DZhrktU#eU9_DBe{t z9WAUpKABQ0PAz1Qj^W9JXbh?p@YoG)G{j(zF8rK@_1=o53I}Y_c+nouKYH^rllLmE zn4I(qt$%KXMev_5cvicj#U#nbf91pVu76XH;2vUB zzu)syX|-^~jncQqnyP!Ljj-(MmkGM<%8G6^&9J-RClTY*L@ z!=J-gstgz!fu2oJ7~CE#Y9h>1@+%<)7R5P}WQz#%tQ}pmN&Xhym<&Xh=dX&z@YH2i zAJ{o}9X9;k*V4E;qVp6YnzeBN`XdWTf608aiq}yGFGy?z!Ub-`z<$rCImw z6k7GaxRL<`vzppjFAEvBTwVDZ6b253iE^M=%|lT@j-N&Yoi6@^L>(uFX7_%DZeA+% zf7Vff1bTpg*PBo}&(M79o$8zUnYQKvs#_&m%NTo{(gTVw<7s95LA3&T7TC9rQ@H;d zC-hb%m|CbRGl}*LaqoIKC<;GUc4KI%*=+>Qa9#!U>ta(kzMclequq);Y9xL?pvS!` za{EaOM|fCZg{|J6KA}6~flgXGG9(_>tc(O^A3*cdcQlygGe&V?MfI-%)Cir*f)4*y zktw;Yomo_?uB@Ul5aV^Z)35DA##R}(z_Vw19lKclR*_%lLT-3iEg1b-r+|0}rIM^k zhSWBVd`M$W_x&jL`-waavlMwS$35Yv!4Zj8+;8)^qxm+3VRIqXzue&)0kDp zk?Z5Wp#_F^(^%@58AHxv{RR4%Cqrzl1?LTS5$}Gw^-h4-ZR!cnA zW&%ELoRvS5xP14|K-Q9800nQ`LI3gl9?}I$S1#R{+`#N??M^^s@DFdudtLTZ%Q?k@ z?2kCM1@2({?D;AMHq4obeJ23HHtK=Q$wX)wj$x+g_Kv?b47JXmd z*iW9`-W>PFFXVot9097T=?VM@fY8YWi&$Fr5@M+aKC0@mh2?Wbg4`lFLCAHa2Gew| z{2v+8jooGOV}6#9cQf#p*zi=d3WE zyv8G*?Dz!eQGnp_b(gx@tOuAL;oKZ>d3vNgg5K47x)4odh%+cAeN-YS?iyb{cgMX7 z6r+WTYFDw;wReXm)eJ?BbSpAAeC4IuH9_j_sUU^5<_}YYp}_B5K{hGVd~3wK7Tr&d zv04+qp{C1*1~ts{HSik5?x{L0A$27hb7Jgab3OysU&=IFt}x(%dkC@m-z4by1*vSE zUD_Kz9>j=(20TlWZLFV~-`HCEgTB@{IO(6$lDm6wO6hn8S-9ZsGM|YEd{O$AH>pm@ znt{-KFNw;o#~YRq3nZTOXf!JZfXLm&2}XyD6oH66j@ZGWxHCBHpE^5m9V35eXw!y~ z_&Ts0Lr}fTdNzUTSRMOIeO^g*fJES$CclPp0d~tVP$QcEXi@g1CMFyRUqO}xIGifR zk;2$o$AnaGq`g>uK+7Zi0Sb+vKy-n8q5;mzL7Xa3A%=}WklYpLO2%eR(od)ThZY)5 z_f14=L+Qc|BXiL>3fLFSHUMNRc-uvvND9s=vVfFK42M~|Ghk+|Ab^@HMG99j4vI84 z1xDA>7i~6hgM&=avylO8#D=xjDf41k1*6c#nwCCss*MD=P4DZ|({aYEm$4Y@{6Zq) z;B(C|LbTzEB?%S4G;%LGp6y;&S#o{2xf|`F%_SEUvu7=YV_~dxNhT!qvk++#GJfKf z8j8g8M6GL2&?;NlEj3FFz?2prgU-Lv!f9+x#*#OE6uK1i|MOL_kk3bh9DbigUfPvu zU$}^}5rZCz7KDIt25z<{eu>tVj~RtTwxO6YZ;o2tX{Cy!iclBJMzHeqfms_l%lDVClVl<<-)m_{#cx?Czz4(U>b_uNG(ddAMk3SYv+@IV7|>HkQiw~%)*?F>PAUtv zV(cD0P|X`YKhwUJS7&A}2htffQhy@SD?3pH!^@!B_T*CDekG2jpIm?o)T;&5zsLr>%@N>MPv?Sa+|Wn1mBX zydUt$X5Gbhc>cTpi4bI%lTMzG4^QT<%hc_%9sU?lr1y9zf@1Wol7!jju2 z@MLv`nzPgPU<1}!Kw=5Nb=s#%4W=X*K;Tcf)~awqy{#ds7HRa$Y(2q-AbdK_zAaj0 z2BColjMX_{Qk5^DMUQvVHpn?8luMlU<4l|J8VVmvw1fHC9AnKGobutQ$m!W0+*8P}1&OR@LYZ7?K%HvCE9BCl7PXc?;EZ)%?4_Me zP;a5dEY*s;N^j$4IwZl0sJQB1w&xtuAKo(NL7iC4G)%*uW+ykAGMHo{1>cFjn#N?C z9v4F);dAkzkN%xz+Qlv**$ClbcYL7HwAdxH^m^!y#W%7!t>YIjtc(+EV|5wjSH@aB zmLQUa+UP7ULzIp`tLz+byi71nik{@$WG+7Dmgto6-@z80192G+;Yo5&$jMjHJ~D(Py(p5HZsbMSy=t{< zD`If5u%U3a^a#tSDzKqLs_MUPo<-&9X;w0mK;()8wkF1c>3E2;`p^S8Uj-HTBGNTg z-$d)X)#J13q^Rs`uUx_rQH1&<2j5DZS=g8MD^WO&U2)Bw=Ye*i>FA8r5l2Ye@(Zu9 z79@U|Y_V37<9YA=fVNOw^t#yVe53Q*K@BIbXU=k2H@ zeAtv034ES#pqvOD(I3c&zeGw-^qT8>vBeaa$g%;ZQ|8`ikBye}{qT=aLzSsK{DEBehl+-3|{LoAup+8I_7M~+(%t&4Tho27gH z&Q^ETKapjSm0ocb7*?|to<}=Bj#~J!)>Lkqyfy_8-K`K9RP*GT_T|j2DmWOLlZD+k zVAaENj;vTvZmMBz%Y8nkKUV1ZZ0?wk`vxfQ&)S9^Bq4U*j$EyQ%hwNPxQB}DdX~o4 z=kaCkPQ4%atqjzI1HAS|x0?=pbn^cDQ)glKh`|G>76(h3Z8bW|4={sdM>Pgu_9Urc z9>UpUZwBfFs^Ec%a_z(AYEz;<+Vh05UI)8IoyeOSS&DcgS&EDKUVi9RX6uJ_je>#l zx$Fwt7c@2{zzos}l-=wUTE3-d}ewd8~RGu;CoaF|;73}OV*&gKKSNBmo zTGDK{o4t;ZB>RvTR+q4)+eMkGgLIT|sBY?Ov)B?aI|wQl_Hul#Q6kPsR2gmm&e7dv z>^QxBH!(FEkKpu!3YC_b#Mmd?_(!AP8bG8?%rJt8SE(nI`~P2DT5p ziKNXrlhHYkSV0l8Ds&=SY|zhvK}?%N(xo)n@u?(Z0lCR;TJUnkaE|ILaO7;*w9f#v z;r4PhglAwaBKBBAPOCQYr$P{He1O(=fMdb+te4bOFCf{5xNGn@M*>1+paz?CgWcm8 zy{4>lDL~J(ybb()a>ov>1YH*%r+oi^1wg>id(!VIx6#st3Pv`ARv|X6y7_E|GNSj&})uo!@)$hxDv%XfLd+(xq0N%%~b= z(oTBeKPftZRU&IBmYvC4!4^dU4U<6Mxrn`tsrbq{9i0yFI}b{cT9{ui-Ec;aiO!e- zy=vl_q1{^|U9kL={s8vAcrw>NP~@AyT^Smh^5W3?B@Jr|c^NZm?bh-H9raptS=p2D zu_I09mYZIHQQZS@F!14-G}1JD{GQR%cmv0wMcuzzj`S5;cAF3%erYU1BjD6vIH0HH znY~GkGN$VdyB8y^R}1kr%bCsW9+{3e4p~rjNt4vRDfG@s87_#nFAYyYzmQrMNI%~F z7Ck1G(|OzEkVF>_S^LcT6&nuux;@b7ZdS#S1n0Y1lilK+3A1b-Ll_%>iFk9|{OWb2 zb3lW*RaUl~{!k|$7-4AZyKMh@yqZd=zogniHo4GnCXG2#3^`+=5N`j#U^3TkV4Lw`vB%7)FVv3S zE*kg+zuc23o=9gSCy}zA^)dYX(N~Q@#*1meND&x*aW$vHuNQHLeb*z=ssm8iWNw%IYf>z0^LcxLzSW5 zD;cEKot8+J0HoUw@%YCiXyVeJA_z&yB&16FV>{;yC+_#=WyYeleRB@KjPIsU;0j!<5-Yi zlE0-xXMe$n#-&ip$W=RBAu45=MKdU3BGX#F-cg{ zloJJ(xrV`_wKd%AqDi_zYJhe9YG#|E%T~U3&In=sg^3S^EpZcLq*ZXscdin10T@`b zsg-=`msSZ-Mc-+ZPNk)rWh^+Vh6@71dIA-EhC%k497EU#|JkoD6Huh_@(;AUPMlrL z909~m<50P$cgwc9+Ffd(`9KV$QS@6`o@jSK$-7OH+Mh5Y%iB_7u)$KQj%gOln7ab1 zm0wR`XAz%eUZsd|{%7uTe{~51i;L@2n55;g@kD^_g+ogy!)Q5iB`3H<{?5lmUFsei zvU$uc=EblM7#56jV>a}q9~z@p-#jp@-!ZJc0m6-b&#_N|`0iU14V^QCt8Gm~n7h1c5ZMlSux^~18wbcdPA z@XFgw6I=ul9osa;CyWIfVK!jy3|9k#4*O}BqQbp2{0+cgxsrNvd$*J(rVhWwahp5S zhq%sBmG5&t!?8q21Ec0HVQ3=?O5e9>{C;rlW>s zi$2j$2*A$hakV!GkQ1XljYhc1s}X|uP&fahAkwy#T))Q_W=xNc53H$BxECaZtX~=u zRt-S$E+k^DRLQ{#ASJiV9{};j7uO}&&U)B0Gnt_!xwZ$p5DzUU`SGubQ4EWeYCk}z z%{PjxIPqdh7R|jap9si($R~+B;yoM33^jx$n-4-Tn*@m5QagxqS#cND3z(k^n>QTd9cs9!h4U$49$@f|l|_(E|YKSh>AU8JqXh zT;XUCoS2^qQEN}UX4d=jglt4k*;d$KT-y^3-?Q^5##M-;z7lK5tN(8q$SEb@!zzaT z8ImQ!pV_Chi>K=|lNcl`?Dz2fBY(E4K8ZU%79c_g{)IN0h*M^NQx6#6K=xPaBFryc z(U%3(^RRGg+fZmxdQUg#*$8jX;jWA&Zsyh<8!cN;Xw3 z^R@TZq#CouCV(gt6An*__|)+NOA^LjS&|&de-U3e3IWVQU8&A3oG$Y%U|clrbx@($ z4BKTOSyy+~E!v0U(bmLw1b;j6@K(iUrBIbg|1q{ z9|obsavqJ(Z-La+q{oo!v9x6RXiRRLk)DwL0f)>lPNdDJ=rox1d#3hO4#Qxuei{?+ z-zeVMVy;;qcTctHTkG$>7EkAR6ejF|-c}9G&qPUd?h(bn3|U6AX`t`@Sh^d$SP~!a z*##a2+e_jrpcE?KGBzHy6G*oE3EBfgjz0#bL}aG6-u9Impytm(4^c-(QP7k_c^jJA znW#?Ke$1)7ORoXdHZtm0xPdx0_hbO(UKz6E)w2Cf+do;U1&*TVJ<3I_3E?9T zY&OytjF0H4ZQ*Y1 za~Gby$`8Ox7*IK)_!jIYa1AN4byeNwZE*GG$Co_#+J;r^aAlfh`3wceif(Y3v9py; zj1SdYJ-g%k9pLU^InS2b&H(3^SAItC2EDVkalcHhe^c zH2m5!p7C+cKl`zh4xD8nGb4Ym$CLMTKP?46XbntGAbt+ z3R}2Ozxh16X`kPly~xyz_b3eyv31I@@R?({iJxf7DvWMUk0i zm9>S5bjVF_V!YS2<#%B5w8sh`N+HsRGv3NTCCmEHth;tixJm22-sMstsnR&7p%#mo zq0ut48OuX%2YhkIu|6}GSPj1TFYmiB6;wJFb_n{f+| z9}yHD9c$P0hprD{1~WV@48w99vnjmR6i6#QEX*iRdh(yGQ(5SjGLKGToRk)lLr-%a zrwS~8FY1^coe(V}vS3TqZHfR1QVBrvc`vdVUrUGqHB4VbZA%olRXn%Oe-QrGAx?$@ zx`MkPcGN}-x;GX3aMBK!d_p!gW|BAI#6s2`M(+GfDZw}Z&W~FI>YYy(QdKDi=ToIrlA#ru&ps|bdc&```RRx#8vlE8cqj6GK0dqb$ zH0Y%D^!229Sx-rr;G#WYb4O4~Ne-zLC^Agi{AHSP3HF&+_7$eitX_;^Q!1t8KI1qh zowwp%n(qqzh(aCYQPxKxn_}uG>XfULn^6bV0HY)*VyQLC;*!R6z~@XWYH}AmgPRK4xPmtS_)ShnM@>x|LrVaXBxtJq(EwMvgeU)ZHSMvg=27$_o?r>@vwg z{n1yol6L+=k(kMY*3iH)h+(YuGw3(FI&x~5A^7CBazyp5CfK2(6mFe78x>yNAdvqf zRw$g5%_ulr`B?Q?iVK?megJwqQH%8eNb3$bgzzu^e7a z!f{a`I%y}ZfV=Hh0c2#fqOxZ~0&@YZxUJAA6^xQ}`R zJ%p!vfz5@PYM|5~3ML%dVI@R3hl=aii6^`r=ig!&>vLu)x>Du63X1(DQzVVIJ3QSy ziolPqV>Qkf02J=o0$!vgwi&iRXBC^P=aa+&#y6E((R!6gKBBI(pYK7Wk!CmVnX=gV z+Aj4P^d@Xp+M!OHQ1VFQkYKhGbbu&e_}oWdM5o!%$-6B!h9YP5QeBS_WA0CJ-3ir# zF>Wyiv~cl)tFC+8wzYgh{3`Eq?&3G8WAQZkF*JoEF=l4XUS6@)xDX_w7HvJKiOike z-g}?t{4H9{6coOX3t*fRG1)!`HY*%d!e;arPmXW@w%=j?`r1~#h+z%)m&-Touh@F_ z1uk$ODtJo2nTbI2`p49I`;LX6vBP&85WIZ#@g{V2>`ueu^@NkG2^r~>eI16vE-`;W zr+|nF#F~B?DR<9u9O}t81A)vZuTF4{?hn$WK{Bg=@%@2|kDdc@2X-u#mUOk(GbxDH z9$L&~?mT@)WJ@Ko0Xg?j>b1Hd6%q`GcWFqN1ZBH472b(UySbx(0l`_6R!ma!w9U{= z;xW544J7wq5Hz0A>!9~577p>3N*OS$KRei{3gPCK0XaVeloq><{<+^7j}KU@`M}W( zTc2PXH}U54^sm8{-~&_DzO>3r1);gkT0H^3)KV4t;2m2bh&hdRIhNYtc#2<3P+!tb z|Gd2}_sdkFU{95n^DB9=y$9t?d}y)pIJjOu-DG(}uwg(D)ur<;-R3$0$}Wg`nwFe< z-`MD^^P~Ug%X|ICdZYH?%AJaqzH;c(oi+rcCP+7(-Biu3NoNnsV*>>6?aI)u>IN~ZUe?|1f4dOj-N zB9j3-3>NR3wPnq_coT=@ExQki6}A05-9}^)VB#NfFIHN?$DU0*@Y#>0a*X(#zjSw=@~u%-ovvAVi;+Tf6e!6&uRRk}*@UkM?NPm~FkBgB^IZ4DG+!hUsLpZr)5ZwkI zY4{DzLwKN#ep^D~DYZ_)-BFjDR8s&}Y#}dUmQ5zk_bC?SWWt;xjP*y|uZJ@T46OOA^^7!F8l?|s!Qd<_GdVj?CVtw|@aqbF9SxSV#r}dtg(e7vA4%X()CU zB?gOWNbvM%Q5?Wnl{UMW4R_2!h(GQj^9^a!+v?Z?d1Y50Ga`q`=6N^gB_YTr7P#r^ zlVg*6OSJWVzRL3gu6t!aiCU{OO5xykF&?B)SD z*E;k=(r>qInOu^Iuq}d&eq2pO_b9Y#DGZp^J#z*qBQ)7BSVsyDZYk+~$U7~?b@MO^ zWL!k)^lN-tBG1mvH{LOT0v;f_^4-$Et~@+b)wcDhKlmk!N-k9-x08W-@@a^i4~G8X z$B|*AoxjAd%~8o)Xy^~QI9@T>?}aa1B22HCb980;k2wO3(1igg*$S=emjjE;t;$kJ z`N%cCO%!T?iIz=X##eP(0xm5weMW#|A)1_rwRdsP=c(O)?K28b@~9A4?h$*DkDmFV zoC$W(QchcjWUWRPDXJjYY|k|QTL*F=4@fq{z`O?#vYaG_zW_g=O#6E6(zBDi{!S-i z&+ZYv#mWzQ3p$PK^{wT@Y;EQ~b26XZ=(Lh8kSN3wB#GqA$J8uU-n4N@QsoKgCS+?M=wwA$&g9?7UW)Y<93kW%>( zNXML1$XauLe4|lbwv2E{N}K#6@XPGS<*oZ988qf4O!VPIBEdZ1+d|i^DEomw`uBgj z%lrx4f-WK3O!+WA$n{79sPe=Ty^ z5>o1)Vv(jngpxk1KjnC6W(rMdd;7${ur8@~^p0DxV4O`_^>+s|1q+O%Fs?@`?Yy$w zVG6k6Hv;J@7+katkj>AN<`gF+YMx-wl*@Rj6ro6~;o%7I8BFC?)`J3a39mu#RCM!a zsX3BcMhU`5nD)9p;>O-%-tmLoK=L5Fi%ZDi+mGsWYquRRU^Wk0)i_u92@4@8zVZ^) zkMAn2R#orrbqqKWPwLYY>3q?w@YF)neuv1bwPzxkfZPADZyid!=$P&>7R6*>7cIYp+^*f0Zg+i-$6l zC`CR9fDX2+I{!Vx=2qLISv*Kp{K>DsY_)@U*0X5RpUr7szXZ|l(*Il^z`*PG_wp|q zyYamkc2=%J-Re_4Gv!!X)O1238`qT_1ew|R_F9x6tD5GKO0zg2|5GPHw=I7i7TeOXW7Fefz4B}{Kk->8O^XoOp^26Sb34gi3iTFq_q!*h0|_l-{eGh zT@FY#G_Ag?24Vdj?kgB014M&aZ1@*Fa~t-j4oPPA+z{2CW$gA2Zx0B#nxBk&D5NMG ziwbptLacm_jXumN6lmBr{wjbMt(|$UT$YP&c)40DV0}Gk88}uHP)XWNxx+VQs{B_8 ziGxHT5HFf+{jQ3CioM0 z9G=-Wv@BPr&SVATJB^RpxOu%wQ%#PY?s%w&@u;|%71I7N+{VCYH_66QsHJy9ghJxD zJ`@ugh1*po;QF7#AT)x6`%z-gB@8Z!Me`Ui=q`?SsicG%(!TQ#8`}+GX=gEIg|ezv z5=+==8+v;A9G>g8`N90J(I_(%O#Gd3AK3=_0fZTSY&QYi0uZJcYQl8Wnpps*aFrbLzUI)oE#|7H;ETwu)h_R+7xCu;Vz5O^o%ePcz(KA zQL8)=^l)Kf?9!R{l4FXzPJ+|YtD|WBZ{G*a?0_)$<*QuWCU4PK4Gj{pRExJCE_1IZ zfl4cD4zBO#8a_Y;FN|09%wBy6S3tr65O9ImQBs7tbWZ8v3Fp|+g7Vv4A#M*uG17kk zFsno?+@h`tOw3T&g{Uh>dyZRzPT*uZ_#1DcG#}e0CJlTzttBkd?`KG=!Y4?LS?x_o zf><)7=~UHZUXiqIOPORld95f@^7G45Q)JvOi%OBX7_ylqE@z<7qN)KHSQrKSp3JY$ zmv>62^hCwVj2)=e8JkEoS!d_xk02ZJL_<+DCy^fuC&87y&|>;!{l-VCpjYu+5w)tg ziSq-+PHPbAEh-PR^YM+}vb&Q>T zTt{(s>ewt301dKX15By}-&P+?IemuK zbx=_goOe_%D3)6pS7<{DG;gEzE?JLi>ydK|qEc0D8e9=W+a3qU$s%E;K??b?n&2XQx^){_wkocK^XCJZ2=STcJ) zix}L8^#rj57m@r3n*p8Ypz7^-^iojZYdgtlE^KZann#T_X1917-j|D!P0kB`2p7~~ zJAo3E7dg5;5nAxr8Q-P&_VsW$61H(kb}L|8%pEQSB&TD7%vG34JI|XiXLyhPUp&It zD%gSw&z@F?Hw(qpcvNK5(*Ly(Yerx~qAhZ!=V=jK=hP*Rlmn-K=Fz926E~1rgJEH6 zDBCdhLy#lUtIMT|Va);|?swD01goM>8<%7TWH@H@@-avKF)VpvbF<8OBLTAuA)+%X zC_S%rk#Rv1aXK6YuuD;TQI8~Eq6013;VrXH5Ux8-NwRBJ9>e&!Ch*Ql{j)s%)$dyv zc|(sbJY!4oh^{<(gxv!9)80_pdRY%t4V4$~yNj-~Vc5x3*vX6*ZNdPW_})1Sq+S`c z*sO7#uXf=K_V7xWyb90@t&Ru}q0QV{x+t>uU;H!u(%nOrrMH6y3;oQoQD89GfxYROuFsuY6`MQ**Z|) z_Lj)wBz8&X1)3D5SrVBriJW-@zi89zui*OtavoJ(qz;tBVrRxKp?gngTs->5HVx~6 z$FZwe8QCE=lb{62u!AWS)7_m0U2;|X``A5m3C-Y92R&;LB{2kRM|PC@g(gmVTPVX< zeS}1;zT(xNyAY8EA%4^mYl7;5hw9OfYTy#TqfCc3$zWXoTEI?x?nYi;1>3Trr|7O* zM9fAqd|Rv>z9I9#|F6mQ^pN#pISdwYpS_Q%{~T|#A&L{I8kKx}bI!Tw3C{_Jh;k;J zV&euw`P?UtxW41+ryk9qNr{5TvuHvg14kMZq>7@D+EcYcBYYw<{FMW68yv#_lYK!n z15Mfr#Zs5=O~vxjmbp#vWtQIzx++QE7}E($7O1D5Od+}?SKWv(0usX#;ArdmYEjj1 zYAkMJqxhaLp;;gr%6~Ygb*j{Y zioQ?~ilP(*vw%^BwBH88;fxbgnG68VzQvigYV;mmBfT(}442XV3nH+04v2MwS^})I z=iDDwvRgxHk-=yyRG&D-!~kn{U9E`nfWGl3ls&iY>pGw`oBv;Gw)OlY<}`Ls)r7Ek z<;t5!R#Q5%=1vW10-*gdyLtu3VOGon8WlvsD+iNALPrfF8*7k%f7#7Be) z*sPDA`fxv*rfn(w?5AxjJVyy1W|)(OJ;&M&)Ay*|&r_^w3liyc$ZT1y^6%hHkXw(j z1-2aRRdjTuX_Jy1%j-}_oY@m_09&Xi^^&N2E2A4(hibdAKo?u*4}hl0fWJt^N))^8 z-S_?~+!Bx!|H2pOlg;`Y>wZ6s8(oRb0`@$L{1He!%_s-CECn)5P3_0kY+r2N^bRPsP zENY?!H1<$XkA7m>Z71LAgL5{8cMeW|@d{P}rTRWby*11;+jaPDnEe&ffvwK(BCqFV z3`$MOVh*x*K#iH7+mxuc@a@WbcZfV2GBa@hks!>7PEDkZ`h~6Q_<0Y9NCuSgvi|vJ z-NQ^LLuS$Zx0Th{F81?nR^G77>__*RcabU84HZI8bZ_}U?@VUb_1{6y*TsT@11_l1 zq`ja`dJxNxhhHH})=F4loKD|==v+s@?d%GF%Ca^@;Oc5KOo~WpqI#z$(WP2-$xuyk zL<-gLnFrZ^17|==^nJzlK9Dr%{m(4|quR=jVn%x0UUU7dspf{7FV4|HjFvb{i?4~+ z9Wm{tp5Z1YbT2duMj`De$IF&)ZeT>qJ&dPEFvXyUfZjseKaI9XG~Q|EoOI4nME|cO zi!K&2i=C-8Fr3yX@_-p{>Th|G4`2*Jt_LT!NFfGb1To^NMw4A?ZJvG?O4{AP`z3R0 zg_|+sPtw~uq7dXPl%o*t@}eI8m5>9VYNBZ$sIT3`O#|$KskPwF?2YW%OitfIhQDc1 z{nEHA_c}S<|kp;jJ938<#_)1z_?3C^bqZIdZp1${S%FBrttBJ4TMU#MMt8aCS#551==kB<~=IYTX zSYX}x-txa6hEB6-aLod)aWa@eebSUy-E?d3R?&Qu=!(ck*3 z;M*n%KVkFD?HIFFKv_cbHRmype$h3Af$Ftv=0f$~#kEzMLmG;KQWas0tl&x_gSL{m zqU;O`?F*W7^_g%`K#$B{g{Gq~5<1Yx89mZs1_l5jn{&AZj>bNPBut|20Vs_2*1Qj2 zChAmk$w_HXg7hgEy|?5Z&9)psJKi&8Q7aG@2G^`FW6vwsA}{{aTY7&K-4>48PRf`U zbzZD}8X3;uVyK?tDshj{FYIM^QFxVTLb7hWwSe~}vA+&f#x3{Fw~yyMS!sV;_BkqX)fW7u@E-0%I;XiLGEa!Ta|#CP$U?&b z>5b9m4bI+_f|`~T35sP~92~W@p{4|5f>$!vd68W2kz8~Ew=PwdJ3U{^l{>Z}Nl{7z zffGB_?r_4`80)sv0?val&huL>Z%_lMaU=l@Qy>k~(_DX)^sUuk|8_`hNUGt8*r zdZGPJ2Tp&f#_h?{OPl?mD%8oy3S}7MEWultejQ&;b=!7uE|y$&uJY-*IPWq3SQB6q z^*)ET=BE1xtvq7OOTT397~9@&v3$wh>FF#Zo4VxT%|jnGiOv6mzM{tQR3LC%eSNy#~0=Id+=^?)=L*-TzS}spePNb3wvCHgGX!-pBk0XjFy3W9fw}Ia>_5&o?j;-x z>FB)_XHEy*{lO7tEJNa!7{wdi5?{r#j~QtMBFucA>_fzN%i7Z23PNfBeGP2jUqes) z4d!GmFxZ4Aggj_Gp1=Ab3Bw=2w z0Fsa4*`0B15fthzsg*#Snxgp3cESMg#xc57(BwY?#5e@H98&EHG!C=$$6Xb3zUc_@ z>A6v4VmkZb@_4kZxg10Wp&IMjP|@E@T)GkpDI9okiHOXj_qx#vQ^C#$PEgR6G~vvG2d5WDpzC889fgiWNbBer;xVow7&f;JV@hZP<7o{Pyu zKY)F~`?7omqmlPiPri@<@)c|Fr0u}qw&k@jE^$R|vPyHG>Rz8O%VB!2uph2X&^dJo z4z-+EGgVC?4z68&v^o0{RJ+=E$i&h!69qwTL!7VeU9 z#;d@L&b8>5d3eXWPA$Fsn_y#Z@~pxlK)+JZB&C50PQck5fKhYUy4l{Z2ju>5tD9?X zqlGebVh7EXy6&uHQ9$om`ZOFQMFi2*5nrfYX8Q%HCvNcS z_XxEGM}LcH{uu6%Rb~q5RiB`7IIXe)-*(v-l^(LDZFiV~o?1?c2k(hX#lyl29q`!3 z=xd(imzN;ISxt1*js;qSlGn8FRqT$s9T@trhLGBviB6`Ah#-s---@5;wu2}Br0Vw#|7>~z1N?(UF5iBuBo*09og_s$g)HKSbkef+{5$ftT_tZM8o+?F~$ zVa$xvN%%&?#zc;e^*X_2Hc!#)XaZDfx7U_l<83i z(t_Gkyei#d(1g%#Zqtr>n9;;VLJeOq5p+b?y!nWYF=>ImXopm*=>L)>i}Rwmq*Cb(2t;qHMkr z5Oq>!^Qk34h;t$4G-~zAMS<1S`YCWSDr>}<@1GwFIxx=A0f>%M8Ms>JA-M0&!N?7i z0SV9onN@uzv4zM(c-Hfa4#FNwpn1a+eH3mWDLhop%?!R~Vls77rTL2og94R|1fB^j zsG)z#0*0oCv98bQYCffi?lfL04p}0sLjiHI1gIk4!|gUFuqsZ=yw)flA+1vHkf6FSBmi!otf5lyBZ7(&~f;b?n%_}Dg?S};R7~P;Wv5u zI{-<|4n)%{TWA5pOJB`1t~x>P-TEK6w~WpdC+*7UuR^EK{S3;WAl6u$=^JP>OqrJ3 zGV06#ySLAHdCHbaw5_Rr@{XB^PgEaA!Hw@Ge=S9qYmkIGEv`TZRG03(t5LRtaxaIBD1skLsxR z+luL)ZVfJwX*FS&g$hX3wR-@oAE?gJ{TZBm6DEt|w&fSXj}q8($QQFer_A!<;c7Ql z3RDnV9!x48KBg@x#`ypuz9Flz?19%3kadE!M9}~H-3MYT*gKmGVlJufgeR2K2)LpE zaDE{VskrscbNVa&;+izi^+qRRsIpbybemrgH2Z^ulcDv@F9P9A1ZTDF(RJev1Fyw> zh$_B*lJxUjFk<`EmJc@KoIVl^5m`pzg-OOW?Z8DL5ZD}Fx_j41%E0bx6n?;F_Dw`g zKQuN6e^V}^l9`J-ovi(j-po*9#YFHy5BZU|J$qf{rvGf&)PWPThJr}&? z{QV*&UJ=H-dR+he=XbQn@Z#o9aIrJcoIM&WFS}*{3y)F8_h%yuxG(Fmk<;J_ReG=G za35)?8xwMyaL~Eiesr6bYpIb)mOy1xZ*^Am-TEzjrTsM=xT(93QK3zpugY(GM|QNT zxQFBvRh;SQ`{4)A_M%)rdU~Q0ZNyHxJ?2RTXO(9GCDb)+)N6(6|*hiHVv^-1z(}x6-qD?x;qh)$KXKH9B zoWMt?$%PrFgmQAH7EONW8EBzsOYEeZ{fRSN*V;8qLg)l`89Xh*Bz}^P#13u?x)J-t z)WftZcol8~l%Ux_mh1BC8fx9Gy01DgsUdslt>mQTRwG}koblv+X2Xy+WrPRfxanJ8c!<#c0BG~3I=IC-m)r@pSE%I(enk$5;xVu;D zPYN^zi|w?3L9IwJB+s4*2G+AB%<$biWrZYjXn`MgdMN^c>>QRU9~VT4EUteWEZfFt zMc6x>vK1M-zC`nlhNl?I>;|lH>dmwW25rh{dgz|Ca4^!Q(CQ(T zsXM>q5-#yu(}L3iNg#kW={z&Zf@9l+EbE~QcdXyk5?YJRvrTnV5?(XP=d>SRE z_L+E{V*bzU-H!^kG|OpzeFUk@ZQdk5F0W*{l{AuMyXi09J-YRVTZQ+~Yi)6J7ht`X zP@ldPC+La_$=!6+af%3Y$@$x*DyLyKOxfP zy{rxVu*J1`#moeE*$nEs?KA(|{pLWCp5U_gTGae{ zo?&2{q-6WVndkU}RPv%@HPvrnsK1*X?xJ7BhDn2peP^a`2;#zHifznIA8uV}Fgg~` z!DQWG<;DOnY3wMF)0ug*u)8WIcU+moEKTD_Ce6c_nxdGd>2_Ye4-(#nfrsF(hx(lWTMs_}<#gND+>~35oYv|^ObUE`_c!cOR zDdz$r#rXH&xUwIj$Rw~1$=EK#7er5*{wJ(#b?nq>5Vt(5gYwOi8J5qw!oAbRhi(&5 zo$M=XzVMQK;ie_f-Ch1o*!wS7D}L!k{#j&u%brSnQk~L*mt+Q~!iNQ_(erCGBQD79 zbbdg~KYunxYRnDotxKFcLyb9Md3yd8975pb4x!pYvN@y(>87Tcl}WjVxNTI?yMHqN z>}fi}Wmvrvd}Be&#cJzXD1W}Ch=@#AFNg2nW^ z@%LwO`daS~xAH-l#I$RR$79H1C1HfWqDN5*GV$LiZSN>PY}9?#&|D+hVW@a%)s67g z?o&icc*zb!0Dv!+Ko>V3l)o)iXE=2Udd1@Wi#j;d@RCz)NzasGEnz-9ce*ba#;R{c zhs8_mp>e}4W0!k{ofSmHx(!njB8aw??U-I%y;E@f z_5=0l+8;bnU<&gRO4AZr zeG-9U$9GkYiu+^#%Icp84`3T6MVeb^q!pWg{>|u9Pl=rceXFkT7F2qWvQNr6IevD6 z>3W-kr7&i>1dssT^|5n+QR~|Ca-VPI5z2fH@+=W8XSoQZi82v>D(*EM#g<2k{1b zIUh}NU7>4_AMFawN98Cf*cWl~utHqRgVfP; zqn6QaqVzA%&s*CpYHLwAoz}{lh97nqk!Sj`HTkd2u?_u=Uj)WmowR~KxZniRUeD1< zZr_kI=Aqns>H#JqcGnwcywXDo6_!#fK$D93dzpy6UZMtgX41CGaG)eiwFZ0xNYJm z${YwJ?%5;~RdG7*W-vD&bFg3Mpbf*v)A?s3k=P+QJ z?2Q)UDaF~l*Ulo$%yJTLaZ1louWvEmnxwfVF6Ttg@c~?ry}20!wWw{5QJzI`&o`&i zez{+jW^wMBCJc*n;l^%3osz#&C8H71mxry5!iK?e^wu}! zYL&1s`eq{o*aE+G)25j&LVtVtDCzuwDb%-P7L=fPH%0pfAXaK0|B!1mGz8Q#W02m7 zbAn>~gYcT-et`@|L+UCFb5sdkW2GxCZs|w;xy=R7B8qo6zt}8n)eHa#m&>weIdH>2 z3Xx%0&y=0uJ@%lOI>S_w%k)+CmuV6!8b=jgY$rX?<_dm?sw=o z`|4=#*?}_WCq|NoTrbPpgt@9746VmN2kQRQqvCtkTdSOe6W%?ot7MlKuDDrydR#Lt z+2EVZ8?vc_lJa|J^AR%!`F{ttjK_StgA3X`#8tYEZ!&GU!IB$Q)&V`2rt#5!%c{wcJzCZVw6qTuCbvCtZgJJbpK zH}@W1myx&Pf(1mAs6EXgrdVy??Lw@wbcCe83yg3e8}5jS@fD?ECCyPolh@%j7Ife& z$fN@~&~+V^OuE76`f9q$(~^H|OqE0A45JXb>@7t!5rgMnmh7`EyoA1KY`5N8Y%jUg zi&Z21jXF*R=U7g-ueT)+&JY|TN?iG3%}<6+viP4jKN+HDN5tCk(c9MA_6^489QyF~ z>fC|hQDyf!MYmMJ^0q=r=5C!;Y#!AZR71=tvRc+JlR;RB-Hm%SZQ(1@mK5}vp?jh| z&i(2YD+?6PJzQp)(xoABl?fZf$>#D_X)rhmGOyq99p4GF9~iHd|D_~?K5nfW+#`3< zupf%$d(kuq4tJAOtk!-B?l=pJ7118Bm<5l)?5P_V>|^;#b>)$Q{YYaqpxx40kM%G2 z*iHbu#E+Vl`odB&Ni_Ug%b0Fao}zvV%hFHU3?UZ9)`uo@3h@+zT-HZK4QSiVdRJpd zjq4gJ#0eQE?!4JmWPW9q@`e0jOCUQc4unV?GRDLe(=d!K5-{p`G%@yxd22 zInbGf!m+c-9+F%v9l#m;8AG>=KA>*M=>s+k77%7EbqKYYl2OtuWfbZp_S~U8nUE}% zN3#k(C($=Bp*rvNup=^ur6(DjlQd3{(2bA9oqnz`goqq{?TMxsjyq5ZhSU4|{md=i zGq|O`H;#p0NNv7Z&Q3>6?lKmBY8X3X^MFP}2@&Qsb{ z>H&PoH&Oj947S`Sx+n%`E_>v?n`q_VG-QXu_#=hX1R@2UN!6 zs(VCdeBpEEETp%Fcgk+^LZUl`k9g~KYFuip$8=x7vV&rUydW7-80nZ>Z4uHG=bo}o zUjx@A>{_9t7_Zx<_^X%As?>Wm#BYD%Y#1dU+3&#xGL_T~4x}#Fhoc+mI3vnoo(btj zIMI*e@bH{(E_6m38G}Ic=oMNG8VZfY0bR=|H*D zDv~}xO}pV;=Z!)-Y2~w5V4AYlhtPK2h6)Pn3S7ZOsMl|{NuQ|N4@>^F5WtGpvci-> zX-+(zs78uUu;8&8Bc?b$tN*vEGuQwfKE~@}7o}xqMbX`STfq!JUiepWFy%ff^8iTo zbMSqqIao@d`t=E9BT>h;>G4pFtIO85)ZaxMy<=W9SH)QJW&suis!b8#{996dU!Y>? zr-e6cLgJN+O_2|igLPd>`btfWx%}}3j**fO(_Np*!n>A{9;Z$8gDqT? ziSV7r^2TUR^SeKJU2a)9{|9Kg0#k54ItIaA0e634E*|=&aySJo#MOJn?p^ONZw!f z?vj`L3(1Z(1`B>5dg?10O>-=rkj4w-%tS{C1(1*nc19SGNzsMvLbDY2`qz<#`+>cz0|%oPS&) zz{cz1Lew1-`tCE%sRA`8Pk5oRcwEy-w&3R@E4)_f{)KCtaJP95A;9>ReAI>9DM`DF zcnU-6TYDnBU}Q=S!0>W4HmviGKTrWxwlcT-x?rprT29FIlUGGL;=-+lIlQ8WPZ-MH z39h{)oGQG_0j!Mi^6n)bz(qN0;rsC(@8=(A>6-!1c{t18P-}y!Xwg&tb`*!CEgjN7RM>9?BHuX0rAh64eSb zT{%`UeG3oVs47Tfse?8vRd@r@1U{lCGABsUxg9>DgHzzf^$Fcb>rE;QyK+a-YRx4g zTKcw?cJ&7?#5Rn72DCYo_}s?qY+1HV*(8{{am_g_|J7TNMU}ggTAYFFFI<`svGEbt zcL|6arKi@@l+c2jn|A)yjJnwC?855gQMZHb{DW+!)d9m_!jExyE>)Mnk(fT@@XH1Z zPtuLHVI)-z0ayEUV~(Z$q7A5BhgcqI&p5^SZcImwN7V;FcC8Ku(YlY_w4ePz_Mc{L zntGDblZK9x|xtjP8o-C^|QTm>6JGZHWx-TR&xG8TiHWP3ch+t5$L$R)D8 ze`Kd~hXK&BgY!*N9FbHCgvMRhI0i{UK*XTr+>g}U6Tyt1hH5C1P)<}e*omkpx3)QJ zyz_bLw6EI~eG-6`1?d?Uv0`jY6PQ9a&}oe-s59)U_P6EISh>&f=j1kNt1_m+kU{~1 zt^>SLwT!j`iYLqNp&>qNF&U_XXtcKxV{3ogGH7zelItxf$Ro!KVW&-nruqKpa!Z$J zJR@X4!e!Cj)P#?g$unf$Iy_|QU;SB{f)Cn6s1YssuRW$PhPy1bl0#`Hgn4?bh_1gK z@EFsDbaC;#I`Glih_dUGw7HD38jbV65TxiPji)yS53u~D>>k?-k0r2<<69G-P3%Sr zkKQ6c<R$8O8%W%c`5&QA(JnRAS;83#y9*R_QIf)W}x;3Fu|6#8zO&3v}H>awR#< zJkX323WpRP{vVBG%d5!dFsp}Gtep))>{XXBOL*6A(wwfAJ~5)$(NW1QHEs)7mU7n* z;jqe@1;GgCj({m(B&ikXD?K5H1|#2dAQFq0<=!PQjn|ZCu^#IaYMcrDe`bwXs4hVf z`T?wghj1miGiNoH;bo&>@?tK=wb16j;~8>Trn0RMRW<`*OvQNMF${Dh#Xew*@tjLA zc>I8J*z>w~!Q{N|GK91QJH`!kYyV+8blu#2g^ImQQLi2FFZaQJcd}giHBt^>PNCaS ztawu#QV-*{n=jEkQlO(%anL-}t zr+<_u7p;v}=Jiw*oc@N$Hw1vJXpzrDQvt;V3q z)IR{A;k7JFjw12((z+pJ3W3DeXBpgsAjKxT&#$`a?8;yTbrk!i!GO^>19M>@yCMzw6AAqh|Kt53kPPvbo-L{Y@(W$=D)z4X#bdSim}yqd#i*~fj{Cs&RDJp3hU<$s(HqXYr->e zRYevLAcK_nDx0cps{YDHH<<9avXKv4jTo5^&AH%gP~$kkU6GVN;>?#Wc*s=gRo={Z z9IAoSGmlM1)EI>LJ2243U1In#WrsPhSUM&dnt=x=2_pMY)rnsGWNBIJjlX58H~0Me zhDqi|nVPfyNLgY_?v@5Ege)%j^#Eun?ZCh_`wdDaWt|1+V?1N?IDjqcR*wF4U{;rH z2s%6*5y90}?9{hjeMKRsH#=jg`-9@Vtw?=c<|O&ss;R0(WDC>m1qUpAVhFM^a`Tjp zW3&NDN|YC861-`6dxz~A@+d06YPYwIAyy9mf^J-1($&B_2r3qaSwS>P$h1mS8_-98Z7DZ%%z6`%efw`F>U)y~dv)cotlQ zC4oJpOnDN~F4+FprcctOQ4ozyUdlg4^kmGsne+xQKds8a3sA7kbG${OXitl$XDiKO zOd%kNmOze>=~Yz8YvwS6Y2w;Td0jI`-BEbj3~ie&w>KLop>;_uU#sanuJFw%hz$K= zcM5(5X_Al`%A+Q7I->6<4!mdyvE3N-?odGq|84|6rIgoD2gzQN{Z;BUCP3GZIHcy# zqxs}A|1J9LQ9dI7i_qqO4A}ucH$o}OF?wGXRl>ttJ5X$6T>IgcF+Al=~8p5TeQ2-7bOr(b%x`(1!R zBr2gQ+<-`pIItQ}V=zm3M{A$+}|h zL}qL8IRr6NhDYVF54r!*G*pa#ZGK?v{~-UcF{6Wk#1~5@Nn2Aj3`XPJePP-!!O}B; z2tW$9Pb&Z?9YOjQSVpU72nL%wjZAc|1PG2#$3bKkcuqY;FT*z8%2-vpuG+Y`zxefynkjj19C|*evPXNgDQbxk$UQeU z@O*{9FCTp4mylyM5Ulo5{s_!hImsuSk7;K2SKi*EA+gs&1MoM><#_sS-pC-*u8z7E z-87tLG!;L!lpvh^g%_f5B@|g!mGZ~>%klG)w zSp#F27;D`lOBnDj7}?ByY&dB<6^%PW1@nEw4dRD5lTVw=Y;1#CM^AQ0#xwvzG`4+@H1(W}$Bs(UF84Lv+?JE2$89zOpu&C;g-dWi4Im)$vB5Wm4q~wBp)gi8 zK&X*4I3E5t85+Kl?M_m0v_>}{Y zcl$uqbFuY5Jq}P1mh4-V+cKdF;^N?Q$}>%Q!TyBF6#@w)X8EPhmNA?BZM7K65&`yb zF5$_RdJf06KT?f@OACg~=zHiDLtDIkdI4^p2ghBg9t%D&$5=~^D$Uh^)sojb)|d^? zwIEbXYe9DMFCCId-WjZpZXK|7w6FRcnj3J76fxN4M>D*$&$<7po&y+!Hd4#; zaNiU2X`qO{n@@@({BbXoIakF?DX2u>93v+$7vZa<{}BZok^*H0i7)L%%~``PCgk~C zBi;E6VCfei%XrzL?(A$P5BES}F2aDe0*gR})&!d^A8y9aRdtTud*&>W)3qOuL*Cbi z`6L*iPMx2TOouPN{hEaie@RV?^5MKceDl!;)!o|K!f>b%_?W3#9@+a&Ov+_F-bH`` zhM!%O+vH%1+=P&E*6w!IrRTID{(b#g*z@EyjW>~!PCNh=1Ndd3Y-vKa7s+UI{m-w9L?ehYo~Av6`ycV7+0^R{ZFyz1eYO&Nr?2v| zIR{&@&uT$pWwKo{RB-vo`YAlJjHDBjaB=cSih9r0_kf*}=wwp>bh<8nkyute?3swWw)g(R67{pmZk48Eg(6yDIjMdGLwoX ztIQOXCZG^*f7H-{1-(>}gI4A>WWhj`i6k`{yY0rh9PjoONtQ>3ER3BSD9FT?&%$Iu zwele`$l;UQY3fhh6{v&Oni*>^86&byA=$;1xPLJC`YG6IA`*f=LHFw57|6XDfz5&r z6)KBl9E}J@y+t27MqOcvZ$N`+u2X-&!A4R8qxtM3JkZr+S5H?TX^FXZFvdnw@4bSh z`F!jPcxG)!6)B)XoX8mXngsb9S?gkdVIs{$EHFpoac^%`B+b_-l|B2g0ChART4H!a z#BqIS#88@sRS$^%&-EswB`i%BbE5yiP5_)EPKP^(>)Yy(gs08>W+>F)Yue+DS}y*@ zD+SH^emTI#J+wLs^_p_DVC&ao)QP754R&3xWr5TbIim;pMrZwdYlq| z$}HnS*s1#|X2`mR*{ocuLzL$l5O%AWl zB*KM4d@2B!{_Frfj^mKt5@5hxVL}l`<<0wn5!|9;HigDC;&xERY55lrkQml_<9L{O z4|z;wvY%wF=hB)perYpAXqHUl!H9Hqj4VBcye6wkAF+-um_!yb*^3;MY!`61;~0np zNk^tGfl{Y9oy-92v1JHnJM_Dvh5pJlyqB}Zdwn3Mui%s2-KP)Uokb$9!K_(VzPY(%dZcHFnKXM4+I9T z4KnRVsGuJWwcp0*{AL(kkt+~{hd#QAza2N+m}Wiw_sLw<8{(jIrrN3?K0dfdO?wCR z(!i6G)3M(nE)#DNPHlyET;M>Y2$s$JMAudvIvniakBESXmJ$}Fey6QdMM@$hOpsmq@mT3wY0s4JEA-B zx2f07Kxs=)F1T0^*UK1Bc5};DyKhjb&<*M5RE6FC)5WH-z%#Y=+1mjx+1mlDbN#mz zr$60MipAVesSZGucxE;Urlx%DMexDNF3Ygk1vK~Kg;;4If$3nc1?WDA;Ss<7QA|u0 zPbSDZHfadiz+AT4Vx}h)<5advo7xcU2esfEth!o{&Tn!!y4$XDtjRAq2~@s!fky@% z2dcX-bs!oC+9`%{jbnQuq zMAru+5fZ&<&cB}kHaVk2N-kO(T(P%Nf%LNsFrjd0y0xE< zoz(R|wntYX??#Plc+4v^fpyyVV9QF~H3&|5IWDgycV%j-9bR*Ok7GTuLbzP z#bk{rEPTlb-QOZ!VVAR9XOCBsmT&_ocpxhk&Ieb~KtJW3)TOkhRosC?a6cGGf$8uL zwFk+bIm9?n*+%w8Z3M%Asa=IoS;}?5Y@p{EYQ$3j0LB+3iY5r@n(3hY!9Z*j-?b>< zZNGZy+Yj{0ntw%aP4kr>j62?UUmSQ+&xalFAZbaag%kIPLPTS&6vF*6gG0pFo~_dk ziruf(vK9x$QYs!DBT5hPNGGG|zK5w#ky^jDPKENAfet#M{p6aRFR+#c-iiCn2Z3i< z@+7MGVJ%`>P_$3AYTfaEeL@Xt9MnqXz{+Y_MxuTqlymRYB#3ucE#a#B%)OX z7i0YqSku@SLd@B@YkXi9*Jh(^9M@PV8c-3H8qQv^2hrmt-AhQ7l5yNfg9vj6c-qP9 z1MR%1#F121tfo(UozyC$=3iRx>E-mdo+f}zkd8nNtgjV07)xwa!1nHwRz z`E|LCM{NZk$243U&G(^JSd>xRq3MhrY|@vwhyiKsq!NN|sCHaD95MLsYontw`p zlb5(!_*P_Bl*}wL3B;eUj^e_o4?U-v38#6|lN=&Z`jT22h(12r1?yGZB+$u-n}kVd zc9*b3ciD!}2!M+PkU+-P<1n^+`saYnk*d?cIp$o#f=naHadfppE9cXb$kb;Yi}+x6 zW~n4&Yg!U&o;FnyjdoRD;p<&h0cffPSuPqqe@n>6-^dJ_8WER;`&$V6%qBo^VYEg) z1r)<8<=bDJiky8dg5C?7BmrX2P z!rUK3Efp$j5K?+``p!x=8cdy{)n@2_-l#s{xDXmf{ZU#4N2%3SL4Dke$@JKTSm5oU zwCmTY^-0u3f#V47QFUm|pY5g0@7w<}ax?g*0=X5Ol=*iiv0LrdG#YKXf{!`lIM1P9 zmim-VcXNU=i0sPm>!CtaH<&MlU}jDQoEsxoTL**q5z-}Vw4`$rA;T3_H`RC(^0yu) zVBv+0%S2!uxpOS~G8KQOhhg)zS0)3#F^x?%Dv5UuqPT=H0};dD-g7$(PI*38okTIfI>#ErfhN$->FP%$?AY!9n>JUfDw;qWd0bt5^jvq*C}r zyv8G!`BX}z{DFrySedelGCpaMcg+^%$j-3a#d#vc$Bg#|FTCaUm{{0wPBedJ7}mS# zu4z$Pnl{4-qcNs(Q9BoPk*ikYzK}QtdZ=p;L$XN@e1oHF1)$KDvUsRI$y{Tcn^!4Cqmcvr1Kb&kJTXo4LjxZq`P*KeFTcf9^67oUshe;RJd+DHD<;$i^xKk>d zp#|ZVZLC_2RvNOZ=Jg&!O*dwdq67nwe3SyOVZTJNOPkRag6~*LUq&~khktC0Gm}k0 zCnpPu9H@eL2YN%3kR4+dO9?HPPR~O?<&4CNR_b9p`#0LYYC58h5_ej=o0~`9Q6`MW zj#-Cii-Z>kmMYSCMul8#M#zh%GK~>B=eXJ@?ZP0`XLjn`*;iBUu*zQyvnNN&A?-#+ zu*{Ar-%gxGP-5jp7upNR-6&Lc1uYtk@V7*S%$z^1_?IGyo@oU81`(B6ERCcM+<{AI zmVWwuAwQP$q4} z^e}eHpJ#LyIoq@;dj9o~*B}TakwEar;rO5q>(YavHw>@^xbMwhBT%<_%8Vqs2XA2A zA;eAg`H`#vJ?)E@U%o>cA2kfJkZpk(>~)Zpm82SS{@N=#UYS^nvadnO7oMuMuRAYv zW4OY=la7%x{`k#Js-<0{p7dA;sQZ>hL1kasxn*iD@WxW{EU)2r@6mQrk;cs^HPCP9 zCErPtxu{R)A3{XqQYiM_p?%Tk_@T7pLai;iGWUPmjfWnbO|;_DkwjYW;)kQ*D_irB zW-fcx?S7B_{6NQ z>~B-~Ed{{y^f%G`pY%9sEHfM#Zt#D!a6~X0w*5|SDiL7{F7&M&6~jFW@Vg!vB>md^ zPKk2;6R)t8pjyorWbfdQs+jCh3`a#*i`q;~BG-D-I070dW=Blsh zWd=A+6Ow*c@6le;5WElgxlA$k0LFJJz-3H4lSPKEQpc>+mfW0TAi9;S-3~yZ8M0U9 zr`tSRR5n73z#iNJ!#G-+aJ-YGg7-Cz0Rh z#81;quER@bi5KVFdlST4*#_Bgj9zT;M5z^qdeWW;43G_pbUf%8a^`Z$N~g#65xihEq1H)iYR4uhsQk)C9oTB4}1Pt{bkL$YTs6Tw&8dcEfd6#_Tm|(%UUZja3my z4mLChHF!SvvB|6v6ID$zrX0dX_|=U-ZTUTPK>#`2kjpip6bFB z*5=`aBL;g6pTg*CQ5!HcFBsjQh(9?bf^O1Lh=O`0{1St)eu0#ZyhSgHX3HhNKR=Vs z;;gSh3POOa4%QvWsjAyPktoxhYNVnlCvYUjuZT*@gqIad`3)u-jDpPg*O z>U2Pn`|lz*_05du_V=fmp~+bv=thuSZcxEV_P`H=YqB?9!o%C zOQv|bD__Y~tFK3eo-8PaQlgDLLZe_;F}CcG3+26e=J{buE&MFPlK>xvaDD3~vC6TH zuh^8H4MZ3~%oZFcdE6}Q8IS)#NAxr=$5tUP_r+Njs5T!ERx^(#hzfCwz}j^sW;3QB z-}TQDf)Ae{Oa#j0Xtxem3)cHcdDL{tXT};3EJ191vb&--OIseJ%)MM4*R9JKul}@; zH&*wBp2kQTkN~q}b9$2A2F=zMDdeR@HX%zGr7Oj37gE+-*n21Y_v?WNB6jBQHRhbD zGYMk9a|!>OOSN9;cvzg{tIm1k4+7g*k6_21I;=HI)i~2piA90mBOL={Sz_Td|2+nW zsCzBR7F1FWxid465NnB$YciUp@>m3kmZqQKis5_{ht1v}@L}PwH?u}O-lxM5S%IWY zBPRNzsXY{*(I>BFWv)JUKxE@I5)ZR3tIUE5d{DAAx)ASfIxlrGdBs5a`NSX}v|{Qhh6Vb?TLh0#^{ZO%2|TYH%(ExaE< z20MjVM2!)lhr>OoYoL=F^08zlg}*GUs#C0tmZ;WC2i^_3wFL-+jM2BM|AX<44rbrq z!I30IuSvjK(1r6^mWC%zg`Q;oAIWMMRTCmF|MB?O#C%6)eyX9##D&DUm9``Tk0HNqSQioD>sgBQ9;>ib*nZcHd z75`UJkKttX!B;(st#S~YRJf|*ixaeBw(2TTZJv%?`H>_;Z8UBg*D=3V{ZBb4d)xcaGgb+T0IGV??Wr$}9t4pEAoFrcYc|eI2rUlp>Ea+R zR5i}9R+xm01O}wX`Jiop6ATc{#3S&>p2$W$J5%>7*+hdV#?+muni20(h$xP{;g`^w z$wW)?=Re3)*=!S+*oA(oV3f1f0V$-(fH-9=44tZ;u>Fp5tED*c;3gBJv+uR&4F;?}?^Bd;?5x-K^_?@`qBPfuma0?1i!9mfw!8kp)nXq5>f z9leCD31jnNi2MUz)#Hm+yNJMYe6LVfv&AmHDoxhcO$7qIQ{5-T>2chcM?IPgkW>o+ z8nL;)`*`-e(seOuUF|8?NzMZuk@rMC3HCyGRO4gzc!_&7gRp@<`k%amp6CitVv{S4 z@3dy7dXDmr9YA@e1yNUY!7?uf64CoKHN=6N7&dqUK+_&{cQ&k!Yryzi9Y%1P81yjTS>J`cVWpe4i1(W}=!w^jrHW=@Zn#`nTt1f|j7>WY!Cic6 z1z2#?8LLtHHK9Vj!q|UzAjC!8UH;6FAI$>i^TharSdN<~RJKhSlX^7Y8dXr>AuSg0 zHAS9=BuV~L^w0^DO6a5t%S<<~ps*{3aAFO)vg+2Q=2(5UkL-$|#a%Ah%{uL9TGA^yU$y-{q#!FMz{e+CWB1E5@$5@o&syvHq0BBP|fZOaewXdLEAw z{ZSU12E;^=l;H;njj0|ghA}NsomM>NzdU3Q-?)BfPh~M1p~DUJ6Ba(uT4zbF2Qq-A zSSnzKBp}RcP)mt@f#kVT;vTx6*Fytkby<$Y-PD$0;rs`4*bM$+9j_JgV2IFYnNZCH zn670mLCy|BCbPE#gf8sMYMh{w=o^J=CQdJ67!$1k?%vP0+kdVlDaorP_3xz{l}CSQ z#@Ai8!f!CVA+)poWY}IB^W}HDWSLaXRn^^Q^aBcyQ=$C7pqBLQK9c|6cf>kRwQV*R;C;LA>aJ<6Ko0!Lc{Dc1?T$dv^`VHuthmSR^fo%XB(uBX%P4=a_0tUj zQ8gtHNhhlW&<4<+ZDd}UQGo-1_@^DirE}SJI~t?$MJ3$^AbmdpNXVQ)qS*z-tCWC* z`h0XTYTTx?Db=`#gd3`A*#0VcOWWI7+oD9_mg*OFO_sxzAejPkOXLpdpbyu!l1~bl zd1H@d?28EQCcM4;FcZG7@)_LIE zTJ5ObKzQQzQ!v|yV;>8ci(69rv7MoHmFx(!AUr@A87bqbj~iP|^A(mvE|-7V9g$Gu z&PEhkw6URLOZ@6|>nEYIti=5;hf6L8D;n@^ZW9Fcsald)3~n9(+^qq9S{@Gb$!|OS zz#$7~Q32pHXWm@;=@vlIRR8A{O}whr7pay?bew+S6gF<5l!r_n6e$8$Itq{Lx8@`} ze1;aJVExvE%}!DtTn4HQ(7gy85n<_qil8JNne1(ur&t;E-=1+jl)1J7$DxY%}i|9sHx!2H+Gd;p81Wv>aP*65=6aox@%7e^ORdlf>>8=bEI-Zl!<;vU| zc&!Za;U6ROXJ@qPbI9)euV$oGQ4fA`+iikBOwp8DZlzutUBlL~eAmCWM)UvBO=29* z-->5vQ4HUi(^y@TIZdpdogw=$S;b0`)$%QdiQ^K23dnqFLYIM%nhKTfmVG}ee)WcQ zu)c%1%W_L}d|yd?_@_Bd0bOYqS0{62Q>Gk30&Y7g1xUx9ADG2uiy7-}LYdolQ7x|m zyfOTf|JP-^CSJ+Q+Td!&O@8TC(Ui^aE>90j0q7oL&|F!le{-iUw?B=%`~|S|%^N9A zUR?(UfNvg|E9sj|Ypo-se65gXjbb&_3Pnh3Of_EM{50LyRG-Yc*S;NtEbpu6XTO8M zpLl62kwz)!Vy5|JJkhummanW+L}4W?3a3N+bG5NI1y?`SR$cJ&$AV?Z5ffI%lmm%^ z*KYeoAndz`Rwrzo{x^~aIKuaCmWyRiW;(3m7iA^FNwB&}0o5i>;kZY&ZVQAtV(;K+ zNqR=%G6rS2HZ4NE2$6)fwv4ScMC(Kd7-sPsh*eCbyH}FIVVT+*&i;~$coT3x%Zt@)BX-o6RdNk-b{6IES z_o;A4`(`Q<(b}zmhGw_0x`1=%bie=qsb4)^bSYV`sDW#NLkec1k`|yc(^LjJ#(#1H z>0H{qwL6^-2m*TNAc`SI?r4oWdRQ8;v6@Je1C*QMP(m|v;!T3`VhOH{a6N&wn0WG` zIG#n4~0+6!I^k(aoN;Sy-9r|m^XSGVOn{{dq^jwDdb6&nC@Z0?_=u_Mc;jn(IYAzEd0X^j6V zqpvYt!bkl`QU@F5U<2H2!N#Wg_g5LYC+ztL@ak6lwsym`8N#$+?`GqJ{Oa{>gq;LtBE%4-2>!bY zKEv|WRJpvm)LNEQpN9pAfN`i*Nn z9fhb?u(;38QU-dYGHf%k-U&C{Kt#+`dZWD^vuUx4$#(<=^A)Z9lfI1TtY2Osu%Ee! z!?C0fYEc50W+!gmS-3XJ{KEv>Q1d5Bas8{H=`91#1NxId0`-JHWlTPBZWv2Hk3e7! zY2U?q#{;t&jq<;_HsmQ^PZgQroyDHyD>&Rz9v}!rb!cT+_E4$Wqda%OdeOOu#Nr`@ zwtjM6-w9O{Ad*nlG&(q(8RUXVz&A?i@tbLW6RjhHDI(o6KuDH={b}2cB7w~Hh_Hid z`{2o`5|kYGWCS^G!`d$gV7D8Kvug#mf1}}+njX-xKc*envTNL1#Z_ug*M^3jhaotS z_&gb|qzyFd+uOQ);^_ZCe=RPC*+qzd{t@`Sn zbtuY>`3Ba(FWSF96Z^@Lm%`f-it=;QUaq}!e}U9z{&w6;kXYhcwPO0@rBLa2Npl)v zo~$AJ8YeGaPXNc3S;-b~o5mHMjeapnOl*#187KmG0y7Y}UDiY3-E>{6d&&}~0BPz2 z6_HF$HoR)B^ShbqSNz!axt+}}svmc_zB%;5M*}P$W!zf&6+)wIoMvVeHC>!i;j0`i zWDXYz3YgmGqBz({uxTG#3_Yks5VTr8!xk->Nv?cZ&FHUn?`U|ju%_N=9H!0uwvqHj z(=HI~{AWPn?zZBd1eTYkt~_DZ@*H1N(D~x)(kqcQz&qyZL(=_=+_}GH(+Zja4c$e* zfbY^c;#N8+)FcQMVOmTcPXA{VHSwmz-%J3E6L_Ws&=+!F3OymdI%I17iV;4&PltnY zNb1_75%puSs0>ud?FrPlYSc5Ks26eUPnuAn*UYFtrk?Jdu!FOQKvR3?^b9(ZqiTo5 zAV3`?HPXHli6a;Ruyc)`uU+kwl(oLDon)YW)g?XsjzBfAxKo4NG*kiRA9Bhg#+@TG z)qTUO4+*YisBM1je>jS9ZV}bW*bsSB;SYzs))T^jk4}}c9eb&Dug|XiZDpAWOU0YI)7-m@(L{0_c56$f zO2EVJVIzY}4$fcTj$R@n6EG){bf22}IS z0@@AJ6)TZ-GZzcu;hg;MxeJaF_?G17%4U}erJhR1&`XO5Pl?jCkA^-w?_q1(07h9i z7@d)c1wW+-Wa|P?jB{O?G?9;3K|*6|Mwbe`2%cE#4fpgTHv`9;=V=Yr3ndEmkaT)9hSP zifW|V9f)zYonIg*62?D&qR3+>UJ{kV04WrK3 z7xKz0XB?je{HN>1@g+m6zip>zWt3iQg%BI3X)j0)_nfzG{z7lm&+9Z(19hfWt=oo8 zzP(z|!ZS@ipwEguGR9Rkm00SldH)13|8tFE`_ii?0=Q4e>ZpdN0*ue~DZ^>}zc>5+ z_`a9qu!=(hPxcYuku0JD9Gz+&XZb4%oT>1gY3dJ0Tp^%1j8xt8`I{lxreW|G-?dCZ z#6}kd;-qNSdk?TCfixpL7RxV^+s^Ev9S@QpFJJ=W@+*X2lP1QT@)=bz{oNdW zsDDX!$5VBteB9K+Q3Ub&?Y{rGqz~aH*OH2|8yrIoTu$VdY#*AEb6)6N#v(V5Jyt4- zl>CUI!-tE=(!oVV1!`JJ%}Z`s-~uvysV$0InW+m zZ2l$qDCUL;3#=p1dimMT&WtnfM&8Ps@vP?-HiMfm_b>2++3An))J0|N@{92NF}#{= zIG5l~&mY6V&W#WlkfHy~7@LfeE|d)@P#<0fPb**hfBgGj+jR2`7sjehN7sG)bM2u! zTy9I1y=(o`f4DU6H$c%VarwI9EYi78-DaQR9bE?35T^r$LIQ&$pwE|r!jur1U{_QDMlS(MiUqkdXst1&*dcnA#toX?k zZgE5IH6xZ}?wXQm3gEJ~v|XZJXb#W{$z4Lu0*yxnf)S0laN3X=d)CuiZb;3a5na9a z8R*nj6tTui2@dqEbLkRb%;4dj*h&Wt>%TTlxA7lD@3;^*YT6z=rBT102F%L9j>^KN zpLVdvm>6AG@XIz+m4HFl7I|pLTIx7$KpI5dbqv+82D~IY+x8f)vQrAMY-J)D+FIs; zWiMA?&tU0Xm#&`5#{~2bPq|ABJAH3au}h_Uw)nF+@Xb+>-fSUfWzq6ZJ9ImGeXC2C zoescAnVnf5IT^w?y~Z8!B0L5?Vu%%FXeHxQh!7(97LI>$W6*qdTJJ{tY*kgX7{m8@r}W6g8T ziel!DNzZ_cr|=3iB~!Y#$QT6!AnS?LA8|Jgni%lLJ6hnSq>bkny4DMrYYdnyvW9|t zZN8D8I0kCCo~~7G!%qq>rv&%(%Dl(;VPwY)7V#!wTaFf&^%_N2s|^D{<2*H0>>PPH z(xxm0+M{q4gKyWH7z;c)kNzn(az9ZHnVlAC z_|(%HkNdh$m-14E7rxsP)s~+!6X|`slCYgS$vcN|$SZ>8Z-6N2mol4LWKaEH7e>TT zk*FWSW@%A$9e1;=N}NRpkoPMSv>PP|cPOHiMVR$?o(*0NjO8+lysrkNO-g3RN8{rPoBi^yK z3#tBv|2@1!bL;3c=z8wiF3ZXc85Z5SfxJlf9h|nMY$Lgz2=Yf)EcS4KBa=BF}S%i(tLg{pw0f75%KX4~U&8x;*db$a&(EUM;g0FOO ztYN@2i97T8A=24MQ9V2AN?|+jrCCl){vO-<(Ql8*XIzMuQc_SS0s0aw4G>AgT^o;A z@^Q>WVF<5Rkz2grS!A278V- zME^SF2iU!W&Q)P;2nj)7;jf*o@U84be_&+q6z19v(EkDjVr!T9L=+hAT{==nL|X?7 z^WeB1_X!Qf&q2#qom8Q`n`s!lIrvzSV(@=9Eo)1C2#+HpU8p%#0eQ4U)ARFFd9iXe z7Tk!DT6zEBXFw+7Rsv3Mlw>20)xGCqX29;#wzpocJhBXdci%}gZNr5b)TbT+1H|eu zUp1|Aymof<4M3{-!F89!&r@(-EZ#8zhbZB+7d2*x)ZsaxAI21clJflXO#OB3w-3xS zZjLOS>$y`N%#zi1*?~ z|I^_*d8@V1bnj{Y#fqO3ZCP|vPS6%zR5_K=kOG<`Upm&o`!b?lk2MLM6F{HFmEZ-w z!A1rPo#c@lt*PHDPdTM}fY?4EYjfXlsRHjoW|tFhxijF^YzO9%V8qI}ZQ_9Fcpv-d zT8nW|)-Gsw|0=MKBk9RD-WHoDOdX12fnruXKhhQQXK*YoOR-Z2?P9f>D%bzH_2_be zqniDFHMf-C(Z!U~ytq(s(SH3MC93ro1oN7PaCgkSM|>(qQlmwvB5=S0u^FDg%1|Tk z;^}cM^OI?a0k*~}1~i6FAT!*=tqw2eU>N80+jQd;0LZzVb=QCK4EmLAGEfWojZ`p_ zm1$-AGZ}<2KTEr`JRnXtV&kCw{z4EXSx0+G#l{b0L@x!2ou z&81p#0XuN5;a|@@RT2v;KxmQPoQmd~{m1#{hgY^sqHB(09w`|D#X$C^6Dwq4E$B+u z!0B?Lqjc{|)TxGCGgBd+ftb5G8~h@oNil+jpN~_>OVqO~{6X@3WoUyD5EA&qzZYp^&fz#mV`wyn)dJGlJZ|&a1Y8>D`H%fQJ?U~ zmkixD40#TDds77kZv7^^F>zmQlk&7ZdkO3O+?S#|Htq)*juoh}6JpC8z^ScZW z8m&`#fgT38(ovL2<;0O`0OAq}ne15;_l5;h$b?5n+xf@wdYE@{M+~Y^z9VEYR_*;#r={DIq%X5BLMnZ8uR@@iMMrHW(@%YHx6{&i$WQGUqI0NJPo2@1JfyBVWdBsOGe1mshw^^|CPNg4A)u zobPEbs1wdBx`f_pC+jd51X2i#ej1K-f)5O1q;3JrEF1g{SybNFOT^9&;?p;FH-}mt zc{(uwoLoJ10pcdDP-dM-GS1}JwaFsy5WihpjaCpi!8d0}i7jfe(`gyI02%#(FK?(2H;nB66WAo(USs;-al; zWx>6FM=xT#=ib5<>gG)&;EESf{TJPP& zpnSRUyem++-6SWEL$#L|2I?X=U-x*I@r;11?C8Pz*bdK@{ z^nZ%42+S*|$gv*)tR_BJ~=)^3h7JLkUiM0X0YD+T0x^KJRXY|e75*<{HU z`|Is8Q(M-&+?q?EH@fS`L8D6iYxE40+w)qYs}LvDgFsCq0izm(Mal13-87;B{@Hg; z+Bithc(g*CX{pt`oEvwx#jygmH49XX4WFW86T?zdL%?1B*V zvgJ*K4l3nEey|a%(cQV;;I_6S-_(L_2;utNmU4k|F@i|IyYSo>G2oasS1EMD8`y zxg~BVM0sq4{F*+KxfhTO!@Vn=iB3k@*^|nDAe!d?fe?(37+(iQ8SIy~;L%ZyArjVP zcfD%f`u0ZTkS0sgBai`O^DUtX4V{6w+`^K8Dd;4-R;%cMI&lh%t;hz*5m0WHo|>Fg z^7z#UAx~~ZpKXJI65M;a;qMW2Vu8UVlYq$lUPz6=56zhCRl{JVYT@`^PO`)1EA&e- zdqE?#wpPs41R}079jj<%C~pS8XR5Bad+EHA%37lCF%Gl7jD=!HYsu(|aKAqZKToRX zjtt3MhHuTfoCt4mph(mjtW>ksDvNC9b{W0Fx%tZ2n{bL{w%4JXe0GiGG`fAlqvkk; zN8Z)(4bZ~wGqNIAB$E8u1USfZiKQQxWZkDu4vOpCL4=yMLV6H$$y{tzBzzU^q9N4# zQN>5B`ix0Fq3G&I6$iezXF*KPP%Pk*+~dWJ4<4u)&}rYV?&(h9gbjB2;hw|l<#rNtJIpM8qjzsHbp`Az zQNAmx5C^G#!Kl*%^Ba?79PJa^e*yCV?1D~tJXu6+q?lhdZLOhNNI|9}K450hMz`&I zp_Zo8o=~IsZ}X<>&?^Gl$r_K83GqA_~q+5p|6$T;U z(s)pc*FQew&z@=;CSNa488)`S>J-c1{}hpl->m>+Uuj>jNz>SBE!0o$7g%U8W$Q=e zxJVo_@(h^OoqJNUYIhIMn>Pw18V1E^m6KvN$o+CT%#GgCe6}dC=6z3X4iE%BKNI>n3n9Kl=1u?UH6c5Cki9?y)>7r2+pe%?_w6Ns#l564w?ciZ9u; zwckJ@X}O>I_#pjKwv1B6NqTkW=z5<1H5^#&QnvM+pe8^VOeZqmkyuT8jq~bsH4( zk6S6a-H~95d1x!r=phrwJ1xR=>G485l<5;GUUU5hO#mO$)-CDwv{DA!sYw+Bb!Z)k z8Isz}v+9NHM=09+|MT3NJFt@;tD-E9#MGZ;ttGx`G2Q(I!>!R!=q@{m`G`GF8h{5SMCh+WFq)vxpAE}B|5NCY{Bct}M^(uQYC6S?kH)A# zU{7eMhQB5*^m^V7XZm1a<|J^vbJ^#|y&1+}0+D2e0(2F}I2C`DIjX{yObfIuJxc3H zw33AYFEaurUi=*o`yx%1B(x~a9KO8a6YfIRJ`<8F~GKOl{&LHgTV23;U0y} zl9Kj5Vs_bd!tY=K87NE>3#7&_W{4p+ev)b^+xk_bhV`q_IZ;}9h*+Cc5l@7b0k_uil>RcD=ym+8g|l+%)^bmQ~q_aF}>grIQQ;cy~xuk}_al-i??JHf_cL0Y6*zVDX7qD%j>RrG+S| zyzo}V^B@9(0fd0(_Vnr8x*Bwq(Tcl}j}9frs+`*PKz$b5c3Aqj{tmx?GwPnjX zbhVG7eT{&^b8^_~)%|w@el;3j*s>-f(`yj@Oc#2l0(meRteAroC+q+Wp*~-|{oXl= zRz#RCD2Jd;eM%Q)z*XA1?F+z!TM>$Zw{69!H{Ane)w!#si;rgGw z^wlCw#FbuyIeynm=;C@g-x}+dC3u9E>PHP~Nr?YQ#)uHg)_dBpBTFC?6WxP1J33xJ zNn4&bvqZ@e7tuu1Qk$)>g())Br(fF8(`q}#*7MUQkA;4qC9mreMF+XOQ)irSpKu3F zc>JeG_Utqi!oep^0%IE51tFr*LbH11)i!bZkWPZyWiem{XF;q~)=a~FI^Hng^2C(f zXTP~y*Wm7U?%HD>nud!Utj?u)Nh^%S4GDS)EQQ?1JoGN=6zXi1@eJ~Z;OIZf zJMJ33r(3IbCP6}zZ$=_i09t4ezI|*nw-Iv|t4~{+MV<6lATtoIV0q2Ii!15g8vgX# zhJRbT!fvoVj2+@a6S$jtq9LJ=JpE}o97g&B?4%8FxnmTvW*ITgYw!%8aeqSX3>eQB zpwn%_0lUsXMe)ndhW8HsH~k%!EEQ-{F&&gkxn(MqGc7LPVDCAwX%4{xhrZAZ%PpH) zBm7Uc&WrE(sj}C!8p(o!M0&^OWlS@Y0eKX8hl(ZdMYf4Ws_Rx$D=uO{T5We!ywB=v00hd{ggv>*XR+{$X#(Mrbe0cVg3w-3cVd?~ zT4iP~>gC*!ce7gzoaLM5qsC|=I9-8^@9>U?_M6VpzgtZ3Lj;9IXVojOoQ3Natx}?Z z9r``)07Jh{zRRa^|ARUduNH(t-+ky(H;F-TgB#>k%W_8t=@kEH8eRwF|0>s}JWFSD-VY=cuUN}=mctAe54(@{lu(J-9l2^Pdk4G;Q^k|N z?qeWm)ck)${GAtig7t%^`|!nF(DO@u#fwKDTkPzIh$H$ohXl`vr~1Ll^Yo#nz2pNH z)F2>@Mi27+6kRy)4rLxGOq4>v0ulRdbA+T=%T&kg{0B^>ceyb`V{OQ9zyNq*ti8gQ zHb$-ke;W}ermDTt>wDdM+9U8e`Fv<_INncP@nhzLfQ4nHaq(hn%x>vLA?Ro37n@z&A?kwJ8XJQ3$whzdS;-vucy^E8t<50xOx?Ek_YJi}&8uN~&U%l{Tgk9E+3;;A&U%~2mN$hm zkd`fWv!4sI^iuV zS~Is5H-9Y{?fQHMl=5HF+s^#BJ~P@tb)9(GMu0_0B|(e|cJHW3L~c8$;tzL&t;Yfh zvI8-U*gr3n06fKO9*hgr;nfx*>$T`FPXXVEv=`^$tNiD_ONCKErIZ6gX#u;?yR0nN zZ^MgmpFUuAqgK2$*R}aUap%w@O3)r7U!SbvN70w`ZtP3&+DUIMbHBs(1N-xLsg)XM|yWrE(!e11iUfC7cH$8pf985we}cZrcr ztclP#y)C~f%B%kSn9ei$iZz^pyTMId^$vo^L(?ie5W$E)nR!$>4`d0+hG(T!ElMIA z)Z#ou!K)ZQbK~m(@7UU^XK*X(IFPOBYKABORYAzl_@gzebrMudQP{#3akvcVMc$N%==i2B0+4gpvz7 z3zqJCCbY35BQDML6~ess)W1uVQ10DRe7zNwr%df;uVIseBme7 zJ{vLOgp76?;y~SLio*BqJrDPcc8a(KKvuYO4U3~@@GHg{G7p>@ww)mFr#Or9s46GE zjRo1XUOCfC1TP=E#12<;!x_4{UYoSFJo=E&O5a5`P8B&;QDD{l9c?7f+X(B_zjf}50r=N zHFy3|2!fnAMc>Dxe|AFhcYipcU1Tjdt;_RWvv(&d+YA2yfD7oGo~OnG+?>&$D9I&L z4{62^(o@wn%HpQXT=Q1m(XO;j#Ys0lN*dn?W&W>QUkv>@=Qf|i6S<{0fwU0I?Mn4A zu8`^qwy<>n1gJ`+x^Vq{4p&NQOt6JwBs;EXkpFnCiliYHX#Razt-;cZ{jzI=IP=Fp z$>hlHYOvlmj_)<$6nh#~q;=eO! z2k4rMbHRrP-RuTOcVUDBU1+mMte&Lu^Rz+WJ!pDrLi;V2&eBwu;hT=Hs4S11po`@84G@G(=j@9Es za{Kz$i7u>E|M$F9dO0k<_?gRrtCc^zPnZP->Ei;qOnsICdH&++Y%y*wVClhy&Xr}t z=s~^MR6XDmp#%`t?Kkf3?XPd1DGng9dxXmA~g%3yF#Ru}@i zqu(8U#QN1bFpMd1p$SJ#>WAf3P`2Afth77|wqr|{By6Ler5-w)`0whF|=Gi)|TiWVU%Yi_F8 zE$T41!H3#~ZSrfZho*e1#Bw(1w?g`L)>4-j5MSILtpR4)v(9!Z&ldtT$G_4Q{$1}s z4&YM`?ZTG4?}n~avKtt(4P~Ec3eVNUaHxMp4=QE+u&%t^UW%waeItLki3?Y&hue=A zDL*yeSPiA0fy&|gi2ktcu|?bvxIWx8oocLn*6EdCV;8hm(b!kc#`42Ufl?ij4Rbfl z=Km<6eu0o`atsjuGb_&~`K!BLib5^6kxjMz$bWW%fCo^XgyqmVLNu~3|nT+>sXwUgYqU{ozy z|1p#ncjx1^idLdKZhXdjXf#?KCTjL=qDVVjpnae+o16{zA`Dor&jnQE|G}_?Z_||N zgyjmy!W0o*1Jw;Tw(Xm|VZ?s@*j8^a?dR&2y=KUox9Rol5-@PwGm6;`3K>kr0SPU6 z9cI5!`VoszO+8K<*+WcFUd#z8)!u;t&E&~CuooZ6AOn^Kt+F-jLr^DFg8WLO`Nw`h zBv#zC5R*p~0?7x(UKgl97f4~DG9+Ng2#J{u0Z@0RSeF)dB&| zme8lVo)t^^ny_<4leofvVQei)sSHP%VU!Uxj7x*w0SqDp6Ix&kArrc%-QfJuUsRoy zut)*J_|yIoeRnFS^WRg()UFd}e}AYkF){^9!zNl<{v1-Ufu2$!<9-k zt6(AYZQUu5)-!A|XwlWs!6IE;X9)hovLdKgnLhIn;_}Yb7&;JG{WX!Vk?p2YxBbA8 z%isU)Ho#TIY)VH!;V*`d_1lsew6w;vHgiFX&1H`cTG#BtwbcDD@Jer`7!Jsm5f;0N z*74{}74Y5xP+eH~CzI7~zvh0#7+1^|k-%;Q!RJ|-HprVycU;5Y&QUx7rwI;Yfz~m5 zb?KO^H^otEhUpE1Xin7v`F>6c4ej$yPRKZTe_QOQ&2zS|4_fZ^WGZw)?%$>5g-Gk^ z8@vegcKD65zEjP{Ix5>L0;fd4X^-=oh5Cx80Ru}k)=hJAdhF`7+2Wl3-~4?~9mz@i zokAKtmws-xWVAvZtZgO^85*p499%H~61h&aqmAbL;=`NdIJyzGF(1r|oyxT44QCRo5N8oas~_Ov=*0Hx3S;jB{hwOjUjJ0a1*oLv(Y> zrqdZ}q1bzkz=NDPNyUS8l5?L_-}3=pVO7dgML$X1W;FmR`J*^Yhj%DGQuFh*m|pdq2j9#e4Sh-XP0 zipv@|MY-pC_93j&Z=WN+%X=+@6#Py?C{pAmG^!8fS+9Wm;acL|$QDIH`47t#$p^*1t_zfi-VwVlYJXN`B;k<|wN`gVlB#6}w4Kt#3W zNo6_ty9O+5Qm??>fPpapT6bXqqaY!m_>WGEpog9Y41!Rk9K_ zCmR^x&p}?4s3DdX?C0RR7_zPObosz}jOFt@V41U8L@ zSJh$F9-bNLlE%3{*aSR|laKJSu30Fv8t2heHs(x;V}ss=8AKe%?yU{SQtQab-CINH zh^Y2_XVT20ugwY%5F1%U(;~TUG?~*YJjG`RuOf)xas>g1vc$+XU@sxD3HQNI_d;_Z z>I|z8-xryR(oH@phlbb@(dD_rVe_7bT-Yht?>Vc1!^_RpWg&XLvn8MjedBUdYZ>CN zWK1R1Rvw=1XObN@@I*wJmf%Py$~tqr?;u`DpXRD~iUWaYehB6-OMXCDNejA}j|sEw z)E3`oIq0>4)((05|C+v@^NqmNx}a{Qv6^F6jb9(rVSF`1u{Ve08BTwS(Nu4u$kn|r zo(`m)l5DdrVcRtq{}Rl9geCFcfKog7v?Mx5N~KZ(_JdYsS0RI2SdU0R_Bb2h^EQGJ z+`Q@oNAHmi`AG9oCEnmmLr=zp=!g2B9&R@{7jv1G*z;J<^7s-WVL2>r_7+dJN1ei& zjJyjsJ{2a1D3TOnS@MAU647ZBSU4>3EnI|fh;I7Bt+ycqVT^k7DiaUgQz|00drmlP z>I++VQ6la{=F-O}JWRI6;hBK(uqkvzS`HfX!fcgCvhC8 zi;4pFqBwfjL)0@6D4A|*JJj>&U>yIQ30vtrh-(9{GunEw(OZodtqu$!L#|x>CpFgQ zyQhfPbAbj@YEf0f3o!NOQ6|}adr9x(E#R>L_z0Svu=H=NdW+9{^+VJ^sHn!EZ7yA( zSJVI03c8Yq3=FFJ$5ATufVAy?C9qg=Y&SGy6u+=M;RYOWA9<@%N0j<``>O}8ZXRaL z{uOt2#)7X@#4&SKF)cW{7f=YgEWQ_x)QlHHr2$2Zmdo*t*XB^7vJ_WesOMDEBy%XDZyqSk}BY>Y`8q~sX;}}7h^T4SsH-EBq zn@~0;kd(^DP6*Nl%7wi}zs;3#fQb6)o-0G1;XemP^M3goRNMlbO1tz~IWEI|?~EuZ zI}EPo<^#A$j3HC&+u`nFs=^s3oWO=B3{HH1OlMOfbxM0KIibW}0-f0e02}O>Ky?VB zGH9st@u@I7WSj6h4BAGbX2_s{jo+CZvOik>ry)ufv6qvD@&mXvj23PpWBRHgmHHK` zbuyE{gAmCkY)oKNf@Ed9a!vqAZW>Yfa~%;Ca`@tA-DB!D8NEd50xfkaa`(B9v95xT zO<{{`2IL!_DfoP(`hY+o^89#E;ABpw)-M6Ox&ryUrUG!QRyZ3lG}xb^J`T>=&6+9+ zC6CKjZn(2YBE}|addt3IK7RH4<+4Wrpk<+WLY0hKAcPuJ4_`=hjtwIXcg0@$j5m{( z7ta@|_EXXgf4{#akPTbV^~s+6xmIx@y0rB)9T0zS8VcwdG=!r)vTT1enWxQV{G2+Z zteyAwCBU%xBMWX(r?r&3+TJfBZ;)y2)i`Yl_VKW-jt%2=oT(3k-%M-n6q)y!D(a z2+Js2wTZ&K1XUG7U*Z4J(u@({IY8SI&meg0d$&eaet?^(fMeW%IN(kf&`~k_9F`Gn zlW*eCScXDpto(YazjZ%f7o6lwO(;g?&Z1RAnPI?IXoz!|ig^-kZ_!LlWihZ0a zIpRBuQ5`)9aK+3do%*}t0UZk(?5i;sRjBLPlqi%+%#;>4C&+=68jqO8To=?#1SiB}fSAb}S zW;~OgQ?~E;#%@i{rVEU6J1_7-B+pB9xngB+%K}>ZT**~OhEZiDYax})N1Xm?vqH@B z(*UO)6%Cq$9hk#I*7T#M7~%e3%5N@Hm$K5Z=jGl^(v}el(C0K&<~$G{n7)k zkzkM>u8I70;Qkme@sgh+tYMhWBtW6}gWy_Jl=!{ea_wR``*>zc%7X!D@t=I2BZ>Gv zeDM$W&6~#$N$)>q2M*`lBZV`85v+q0YwjgKw#;OI5 zxD}$GvjF?I=kph-Fi_c+N_0k3ir&XXf{QUm0gPq^nHls?2dXo;M=Ugcvy30 zAJ|T86C6_y)rA$XOkmQG@}75&8*3WWxnXrv`~jRf6q>Dtli4_YCDYck`P(uIp0Q2! zL1ZJX=fK}rb@VJz7!7tXFi!R$IZDyO1z(w{T1nHgsgnvce^!=XZ$XMNDssQ6nnbK& z;+wyp1TV*d7YnorkTVcBjqTu@DsWmf_7*)Atmg|YPr5urbuNNHRHx1?AnzrU5HEGZ@)%wx*88FPn!&1C4Nb#omY8M8cS zNBt^uk`kjA8(7=i(;iFLB&7?BOQC8wQ~7%mj+S=c?p8_pytrG6-&GVhw^E5(39j>hgL-YtEeijp$v zPwaM;l0IHse2RmQ2(DSxqv1tRB>Oi9=@D`Lq)KAtf2l2(Ij+FOW|MS{($}w;7q5m$ z86x`TjrRC@8b%#?_DXe^a4ERS^#+pGDM3*mP@h0(5LX^w`BOyatKLMKY_WsaW;UIV zKqui_usEi_%1s1gOo3AyGw3GR&q#>rhDxNQFHkpkC0GGHdp}-W(ddAdiF|^ z4pXgydy(}L^<8omBUhn131x3K;axF!)@KsBp8FBk!KI(Ql6Ls=1%l>g7!Pp#XwQ@9 zdRpe5vzv?@jn8HVLgfUSNC02I%xX>mj&e7Y5*H+K#mF#I6BZ-{j^vRCNmuA4m#@q@Z`mN-EqGCDL-yG}TQ~U}i89E)kRPH>^PehxmzKh0rBp(2ZD-iJ>ci#*xJJ|=;N1@| zNxg;eq}j$``+xF)+=-o{Wfq^p=@ zLqH87tXGC87{frN(n7n203H(cc?yoRj`5*Bflye(oxn@$N1r2Br-hLlmAA>*5l zQOb`|$c{-NQZ@-P-OI4x{*oMn@`NhBAWE}!0bO0D^21ZT9dn4F_FLIS6%W2_IE=Xq zdIX1J+zS~ZHj-yA>2XL>0@<$q^tW8uYVHoy__RN}DTK5px7(&P?vYmpP45y|0Hqdc zjC;_cAH`*SpK!8>0!cU}FHi&^&mJ*Gj`Z zV26+Yl&B321Q+hE1U@~b;n)3iny*Db80yIn_5GZa1vK!ARU1QG~?dG0qOLyW@ zPBlNoWNtyB2CHe5zgrIM(-bmL=}4IVww@YhnzojKUyVRn>nl=|r><~A!P5sV5b|YC zc`g7h(rZ6g9quC^l=g~_#`8RaKb!Hkgk|k3;sv#`gg=;leQWZ1k;)I0% zzj`YW&o*}N8RHaTJ*v10`!lRX%c8NK53|}nQe3YPOQ8Fr7)ehEo zKU4>a!qZ3_z#Jz6?slK7GD*LP+oM*gPo@qpwuJKY-a!S!UmgHq7$$&^UWs$XZuXqU zcvHw;Ezlf{agKx8kjT>?JKH~|d&j|AL_-lLp&Za9=F!VlZ=T=X5@ME3!fIT87U`JQ zFts>}Jhuh9jV1df9wL77TTHH(8^8`Ac%oDhT#NrF4#1Hde@`T;pa+-Y6HaU`zkhez zN{s(>f`^^;RCBH$BDyirBCe_j{?UfJP^j|eoTv!km-$DsA>w-!M(ic$tj#^4i8rhucO zR9f$REs+M*^@&L-v+Cg{9M^|9-y2mJg9%8%?F^uq0w$th7Mlk>o@*43p)8`Sq>dx+wJnQVPOHtuB66|?8Zfy~PFHxHG$ATQW;qSv{X z5?ar3pEV3G{1{03<}TtxTlG1!=|fiW51jih*8Befa|Sz_ zGzwPYDq$zwMQ_UtWR4WMk`SkKv?T4DTx?Gc(kOGz-}~`IKEmP_eE&jh3m=4>kr|~C zPsC4??-1aXjv=lD`Or`Wb6T*mC=fvKW8508^~gwbI9g$D&mSL<;|vLb(lRGt_5j^5 z(jm)!Dapr}@!TXfKOkR%wQv7Mj&^5O<*}6)9vZSRN+zsiQ~TjFE67s1Gkj6`bK38I zvN2C-xCjhhei7AV`zb3x!C1!jc01Fv!!f@J*Mv>x&tZkI(7b`p3Q*~c|Hp>+k)IuvZ z;pir3%#NUGGgp)MAu$>Phb&iEaGJV)FD-0XmX5&9dy#H%p5uY6fx(K}b@Jp`4IS#Xh(&0t2bb{wj2tx0 zfc}K2v!<@Tkwqq0V1sFaE-u2{MQkG!34aFXo>7Ip;Jfn_HKd~3O|fenbP}vh6Pi!V zMvdkn;c82keTNZ3TXK=qc0KP06pmxzjwZd4o$VVBs8GsFWXAf?sYYE@*2dW=*9KQ2{dAAzkPZ)Qt%?1eOM_RR3_m6k#_n{Y z+r)&uo(K8c;27-_{+#i0hBCHS>>S6E?10MsgfV(spt?DK_z0v6!5BedKLq{c3fTN0 z8TrqkA|$0CY*6wVWZ-DrD(_U;#W$!A+$sB`9_)!SktCY6a_ir@eGn2SPRW^5T#wFS zDFb6vhDg=r{I{|wXK&50*QQys@cTv4fgqkQ7stMcK;S; zG{DIek3PVL!h)zs%y*>_#Mf}?#{Ksc*dKM(D(NUi#AzbU@d!U1!OPP$j!Qr)a1oxYT7 zXE7f|Cc#Cp-5KH8&_)9!(E}C_dXiSRu%J?HbxU6-@GNO+C2E-DPRpzQb5W;Dpj!G( z6s4Af(W9qV%Z1-xh$M?YshT@Tz?42-Od#GMDV)}ai|$hOVwuGO<`SLhySN=N{o0tX zm7%Hr7$E)i998V@o!lH;K~fIj%Bm~VAhR5u1h~8fB*f15#t#4XNQ~g$@?L`|Z>q|%H4980s@G4@|kp%J0r*dVGzxqNLGz_ z8oT`LxKdD!g%OB@Vrsye%x=uCQAVS0i;vt0nLV^oItr*I6_d%2>^!-uepv+a^~@b`-^eo1$OPic$R=)jA8Jb}7!Gahiy z$Sn?V!wRO#=9AM_q*_yFj3?VP@mkvljeCZFPMf%8L#|$wUk&rr1mEc6$|l@ zJ7_JpI8u$qs|WRl#HPyAdfx#*Y94;7Yjju2n>omvcG8^(+dacQ8jJRQu?*o$NKmewv}rk=o6BhLK-t4^$p5lU+IXz}rC%@*n0 z+pdCrg*E=OIW{CSeZ%XWz(Y>E1I2pn{5m_vnq7Y~j7=i-Ogx3q#Q)se$XF5uS|ZT$ z@A@LIgZFGUAT-r$>(S-h`Hban1b*;X%ksZS(Vn6f(sx)GC3y~{FW;=ezouk z7Y}nn;FRw)9q!lC`pxu5#|% z{$WlZ=!UaZy#(}Ta2ctPj<@y`fg#NZ^W^f(zGp|?8~J~-UkmGLkr179d&17D!S&oj zqaj#}6%t}sx58OdluD6c30XD>Va0Zc!fIvm_wx|mNc>_cZJCY6+<(akfV@2}nac?t zQW|fkpar$x?Qpu(echH64Npes?q&{miz*5Gb1VDaw&|aeZf#I$WF3T6Hk*=hwoX0a zM=In3^#>$~@s)Ff0UzF^yq4j;ZexGY7db^zM&`c_F!qStJqJ|%3+-iYzkXl8fSpJ< z6 zaRdRo>>o*n^Pr5b;xn~AjqyVxJPjU80SGVOfuDj3HsEZaMfv^o$AT3fer`WHcZyj* zp`d7`=GRKce0>M_1+~X!n$h7{7{?co%Qm5+W9K2wgNf8sHLFpVA*wd$zXgCCA_dq5 zNJ~=(h#n%1CIY<}>tjnB3x;|t*vv1a@lM=?nFbaYBT7h`xa-u>KeYj7n45o3MOuM! z9`&D=qlitDhznd*{jBa+Uf|2rb zVg2Ean0o{3d)J(2N|@k2?_)@*S1EkEmrjmTb=Ax`W3^pe-Y9vyEe^(ZwhbXAc!BYu z8hXH{1OAY0dk$NsV%j>&$US!!I_8G?_FS}dq{HSA%i+GkN*9MXU{9XGe~?X4E-$qI zz=+{6G;d&RW7q5soXS|L8vr90!UaGx9%`MDO_L7xc2-6-uNXCQ|J+8Frg$F<#(%?O zy$dLFD2HxZZQI9iX(V^NilwEbK#Dnlev{Pgd@$(hd~ls5rN$0Y*vYm}z|xvYAq@s} zgz5M!){|-;%F-7xG0*RrMYvHf5tiz>7K|6zxHed?Rv};j+LEr`E|W%1rM|E}@spyD zK~W&{C1L-?VMz5Sx-cgnr-Mg7j=Y6Xh_YAnAQz75BEOV~$w9n&9i7%_g5 zzY2nGBGXw*v-#Md95FhC@#<+w6s5{!^;Qv+haJ^}Qsk(mSajmmJ#z539vcs@yQ77FSWinfXhJp!lJ_bbCwqt0dvnL|^KYZ)0-_I3&#QQIMgr6l$R?n1hh+;N9*@jpNL|2w& zA2%>5e9i~gt1i`%b~Q7GOzpJ3N22qTxWhx<6nn^c#HJ{El!)A6hab9fB?_1h*P6hv z-tliX{twq(jG`_)5;w`kz-#CO0_r7P*pLQ8zxl@7w=hyjPNVa z)Tap1jJq|2sCt-NPv6xjp~q!Kh@gPThy`!MsnoMcy~4qk`R}S~TEz!S-AeFn$1Fn( zyA%>d2VLwN*zij+=&7M0CdkttqBipj_qww-nkg+}w~EX9uI;@NY8G;i9F?JD>gug@ z5723cpeI@3pzh_vpI+d6lxA(0wJ%Z~y%ssOJwa+_Q84o9$KsyEBAE81=2P-zs8a7S zrHQZ;?kOsASx0O{q?jM?1m&9gjnfhAEBiUuws2ZoTidE^6ToH}`A|6bZtvpnq(PjR zsnBxMse?3t^Ao3ffaC0lK`80|h>V{BphtuUM>K;qtXmGZSmmmyLLbXAP?7jB4vEsm z*8gXE$QdZo0`IjfJh6F>m%wNGB8G!F#f-y3U!(={5hvx_ez7xFdgDJ@j2PW2ML#|2I(lR! zlwr1AK{C(PWGI*j;Py)AX_YqQgI$$i&ka^GRO@ZEJ%~w7_OSe%#ACaGvft>POxhcq zwqG)Ynplt308ggfMDOO9))uz-=NL2c5b>G4m@sH#*ZT?YG0VyH3iTj_obZnB4C}@6 zgPyl%ZDDEUqD2o>VVh-kXLhKxKVkoi`~WbWT!=q1Z>z@}b!sa()1A{9xo9&^4t8qG z(8N1D)u<4d6w<9k`LaOxxwd>)6x$=B*B&nRuGxQMjisGTzJzO)vX`n~-nf**F(e^J zi5RNwZM(&~I(UakCq_w%tQ>Q7EHDLnm2Rz0LnnWLqTDnJR=IbE_VF`CCk)+IPR}&P zBkncRCXYe`aswi0%orIE+Ify_&M+$&;}(8WH=*a515C`jJ_&CrCfUrKAMVo7fsd}p zURu29gct&G}Ne{6(;t3<4qAIDG$8ZcZF$E?a;N* z*l}iEOJ+c;oLps+>d`vwL$qXAG?WX$J+<-_jU-vkRU*<^Q}G0#+62-aIY9%`?FhnG z6Pwamw`qz6Wc0E%0@V{T7yIKxbfDCT&k-B?qb1b0x6Mb}IRm z^l^KlC38vDw%|pS{{^j$vg^z)Od9@>Q+7SGvP(?3!zWb5G}M@2P4zJmJR{=6d`*FP zu*;e()o$%8IrIf8_q^m?1B9o+ONnVjM6#z8FJQEVXOKeiP{s8E3cQh_g8Ehk(YY-K z9dnS^jP6w>ujm|Xza60aXJ~H{+VF5WDit; z`%xMBG0#=N>keIzLQ`;Jrg=|v?oad$7q(9uBYBThsH|BKLE!+_w;uWMQh#aMDD1W&} z23uw^wecjBgtQ zN6K5zV>8-cg`D{lByhBECZMGi~t@ z$~#H0MhbClH)W`-l3UKp^AY^aeE2WA)JYt0coAoGW|Fd`g#XHNCNB}t{zv^4;fJkr zX28g`-Hs?H)QZbaWmG83aafaoZ$s6L9dGEpg#G=#AZT~Fe%`@tO%F%Q7mkz=0Y}oN z|Kqcz<5il?{~PQnOr^&1Y%ZYR^vRbPkJSA2A72pa}}{_Lqv} z*WwyWCwO`ApUU5>j6%8a*OrfBfp)TTRXSov;HGn(P)-)YHDUKvUEElKyV6z-qYjY0-U`A|iq??kZ{obgd6_*{H*n@Dnw%1?G-(48|+W*oe?4kX<8b*AtkXNbi1 z@W(ADRS1$6lsle#h00cU6z&OH-F@@;_e2x0)Wi(6uzT>fEyELRXO56<^I5(D2D%Pk z{n_^t{JKH}NCvH80lj}|@bM-NuSdT7KZE^x%!f@1DLw3wx3w zrP7h3C>nJZLQHLbfmyZU#70HVDjse-Q8T;70azSh1=S+ovaZ}VV-JZ8NIRX^uNOC% z*St@prIxNnC9%u#%$vlYRdRFQwJY{A$avcHYx<}*z05^l>;n~isi=FMco$DFlPd-^ z)J0wlez+6ukd&B(!4wFTKX3I2^Sr(G1Uw*%)3uq!K+1mmq zuh+`UO)D!!L}Vu7TwQO0AlCHZ)>F_tz=K|Q8pV+?AudM3Oa%9g#e|b6nA0$EY(kpX zC1ErfjdKNo93M-#OQl3t{io*qx|aa9$oWnJA?oe~AgIS-PNyQgy3N=Ltg^<+CTJ}K zrY>03L;yibv2N}xG|hGtN~t$3yg3p=_`w;9%5V2j>-grH?K6k`*sJW+W|$&TdgCSsc{v zdV<@t>cZ~&Q4j!qwh+bz*I<-{{?8ibHATb7b?=kDCJ4Dkd2?#CzETLt%%B1k-quV7CC zS`iGp!E*M)akBD50B^!^$PT^k!`EInwydLO&N+(4&5%wKt zLWt6_JDD&CktmPJXbpHGBEG=Wa~0pm_@?$K;_l4H>uoCLvEQm}4kIxPC5^|7c7u!A z12&EPX6(pO8tmx1?sSpdgd}B#7fhA61kylnBLj+N3A#YUrr;9Z-@3hxtMpmMV zuttNEfkT4{E60im$h6y*u7K}3pF6@!rf6kp(7iCaFi*k8>)GBW_7gRkBp+;V%~^+x z4PTL8C1Z{Oqh%A_dhQk<1`TvT8fwa#%p_SfQ;n|v9w&wruH0$@I?*+Tkx{&rWW`sb z-7`C0Xk@8ak^X}Hzc%_tMAH}PT0_v=0AV@xkp;kMLf32F zF-&5AVzJ3oGM&<;Am$+R9XZ=tIlf^R`a_V|*N!?rc3YxoW$z1oJ@E(H&mjetn`8yH zXFzfUakqgd@JgSF`Z~IsyjD!x6!krVBTET~If`)-%!4tqZ{i0RlDR6PNCB z=za(5Fum=yDbqZIg=&4s>q9)<*~7AmBOc?dqKR5{)#u&Y?U!K|5!> z5FWkot=ln1s-r8`F^ z8>$Ow!L`(}S~IA5Rm=DV$On>Z%+%Ag@eYBkaK#|idpGFRJ_0FhH}Sw*-KO~6#e|z^ zK(f2TUz%xqhHPc zHSTa-YQKl~ZNUbDtFFQcMOZ{8TKr!phE#chW2>Pec-9C05OT>z=WR#AB~d8Rq^05R zV4qMIBcjeW^m&;RG@hUsK-e~w#rb3_+NXAqQ}^Q?MKN8)s4-c(8i-t5^*!{y&_X$2 z>-h|b!`Xy6`gnAgRnJjwXh-#n&dnm>@gpT(Z@4`I`v)0ZkS5uJ}`(v{&W1bP%q@L$qh&L&?5yV(HktW zzVzL%En{zHHIS6(eG<{o{N9v z{wszekrmPy99I>c3fb}9MwC03QD@`<>F8%(GzZbI0YnN9LsQv|d}~mOMQ$R*Ege!0XK#(s-?cgdzpA>0I(MAYOMzi zvQHapzu<3We`H(1434Jv)#k|sX4zi*Ce@o0@ZE~G4 z=C;S18g041s_xDmYC4-|Hwd7l^-1H=6UhN_WP_{&s;xMksw`WI(U3OZUrU#`q-%T9 zD?K14zsU*>7Mqy49Q>2^3u{ju}*5;B78lkW0 z@}R{`UE0LI+FNX*MIc?QxM)|lS2{3l5@Uo|$m=sH8!4~}XbnNQOES&VO9 zrR-1lItK_hiZvzsZ0xJ-3BilfSYW$qM^m$ry+7*0!utHUvfQeJ#SGc-rwVx>JHVQ{ z0Js+SUkSymEmnsRlakbXZLGBKPj_ElcdBs)ygQsUAtHy=t2gLXzBsZo70t|(uJtQO z1^bHgE26RC1?(SiA`WP;0o`CeZA)gwNJ7LRxC5a%aCl${jK@N5cCDn2n4J9d-R!pC z%OX-CA4RnC7$O1gD^iE;4_AL-TTA&8g5D;aC-pZJ8vJ~Z?%XOqP1mPSqx`SwcN1QA zq=Xiw_xxa*!W)h1_@ud3dcdwtM*Z#}Q5kC-=@GYGToSQ)E z_Au1s?n(Lci8z&H*9tT}-H)#n=HS@18j5;7)LKU1JFuM`FjP?7E-QaQKE^2&vQQSt zs9=DjfzxZl0J$(mGsU#H(1E7BUj*kQ`>R+Pujfef+VUA|NwXb4gMz5dxjKi3fr-=-eW+}4`eX-*hL2{8 z-ycN{5Xj(9;F-qX@xw!rFe>hkpvh4t%rdEzEUb&6fJQ`N9nH)&3k&1`-Y6_)C~T5W zB;?!sTfm2_3I=XCx1>|COMp}H{u;LB-c?excQ*6?f|+7=7*FbpWJQZ<6}uTR+!H|x z=JD!Vi2IolNK$K%_kX|sl*@9hPnz+{p~%BnNZP3*9`284e+AvWiyMLh%xxrHEJpk% z6;LuGq#d#xGv1mONeLT325vllnr-Fj2=ZJA9#&O`LIAWQ&BSr*y50Ay(Lh@4!N~?3 z)SMJ-lT;hNghap=OSG1!dv8txO56ISkzxoLZc;$vc@Hc30+A#gilftp@*IHG3!Lb; zYWs~YKR8Fu;`1iD+e=zWH~2}vo1h(jtR6pUG5xSs3Od3?o*)D`D!d!bHS}_}7T-m# zbDG`8eKKNeRZJg2xU@1_QyT`>tE*SeF;B?Ti&VqCOlDyKOE37bMtC34w=;wGOt{w4 zwum0fUfxX)gk76CHl!lYmIvZ((Aj%kV)l`{QN1ZhsIcCO5tBxM1K8b0PWpb*U<%;zi!vlI55kxmSf>1lu~ zDo>6^p}>jv$|*28TJaxz`&A|-vMAr6wP9Ge+lG*s-Bdb{HFFF56wqP+?m}PLS8^9) zbAO5H5B9E~V}k!$zCT~`xWEvWNb4;`a!$v@f4ys3xtz?ugHzF_snPJ z&)T~us}^h5*k1ONm_Rn{xqi3)JfN0rN5M37xu(SnpYK$zl|@p zav}V2ZniuMS{?9#0#-^)CLkGJuL!?iDBJO6H2o`f(zx>&mk%+}I`-AyDp&`U0YHwc zJAA)jWcTdqFUs0zO)JGp@&uyxpnRK$2{-xV{PDa!znICL~ak5A= zFkRU@^T``&WOEzwW=VaY6B)1Wrc%ZS6x!7TE?`VK`_&`#(O6mrrAdlV>t-A2 zu>UsoHTmrV9gE0Mw0!a(eI9F+eg!DN5Y_@ZeDnwF$zqzXT1!X%%ZY8;@^Mk@%2O@B~zIO$Hh8k-YTuRrd~=EG4v^hK)-a<^n04z>mm*Jbs{0d)R?|hpnDu{bwY(;fM}P%^YlPYs znInJC;E^z;-Ae>`b#YQZ7-u+&F?ivPoMf{xTH=(J6};{9(}p8r7M;mwWZW5;8p4mx z?~wzp^F?xdSI)g(P(e)GRB$%Fvd0ln`c};=C#J-I!D}=W;H~yI2ZMmyqR-t^+)zsF zKrhtGf(TMqpcYL@oHB>_16DnL{cF<{Iyj%5U2iC`LXy=D8tunR#i@HC(&aVpBH8XQ zPTw8)zno7`Vu|%d+D&B??uwe{FFX|9Vs>Zn=CZq6LJ5+Mb?9s5t|s(kH(?@J_9ZmE&et+XHy1? zOb1>9-DIxT@=vm?qgOTsQMjOSFW6MJLbNqHOXA)z3udMOsZPMwVUrNrPiSOFcK2cZ z@iDPUjHcG8;|hT)I@SqSqp2_BjCyuzotQmswE5fS`^C^4rWcYv@N#G?16Y4yRS&Da zjx3hMWWiLuv*~YuH^Y$iXC~mRk32nqhYYwgFL5XU&r2P$Cb2Dlx}hT_S`m;{$(B&7 z2g)glbgJC9e1V$3e?Id#t=(`p3i8vCS*km0ol}iwWAyCCS1uG9?i{CV*l4PMvr~P} z9Ghn<(K01i(LvPEehOAw@RYS?hD3i)FX#jY&sC`zp6UQ=Cz_`UT-;M&^c&-BppS)J6eI zBOjxF;ffRYvUik4+Ugy!&X3LMY(+B)(cIZ(?U&ImpAaRaXCsl~2hrY5%N1!iQ?!*g zRx-FU<1F-Kg98P>A55ci(Jf*yT&y4ry2{-t2o?=05%IdPUK?u9}OruF8?$$tC$0Xw@}S7{oHwII&J}mBt&P9!py~QIueiN zoS&o2Km*gOb{s!6I7o7INc=BWzTUP$-NP2u(Ml6g3&6X-S9!9Uq9GlT!OkJr=?;R> z)J#4U2jo=@+jGsuR*A79Br*}HV5?^zN11h-eJ_JDS1`(*aw5w06ECF=ie!eSy`6A+ zmWsWDI^OqF2jj6SnUyOql>tgFi=_)SUP=-rl&R43jyX=)M5zD^8xuVX)i~*yVN4Nh zoI%S>vBQ(*pY|^6s1u@X0oD1Hs7hIaP9NYz)!*F}{|x*}kgzoS7y?{matr(s*8%a~ zz0G+Xy={ti(blFw>Bjff!w~D~_{GCk5Dahyk0x!kJGF1!z`{bh@=zSlepdTtBx^mjNVF#eL@QY zqBLO4cnfekP3tsM9+ZOqazho42W;!IR1igu#pkB!d?sF_tgDCr>nY5yxx~S1wvR1D z`W`A;A`EUu(3-YvCwK<=@z`@}fLsS__8fi{U5sJuyNd!)OG5a`{aAOUT5y{#iy~!k zk?D_B^6Q&^p84G)_DkNn!Ha-G#aXKH%Sk&fdS)~~Bm?wj4QVxE-=(f5*yqSxI)1(u z2S`-8AcQ!>YeLH4tUl%@rXpuEp!au$9l<>OEWbyP3By6jo)C9%!oPJTkf%$^*^1;6 zfOK?Uq{jYXT{AoA&{e*xoHWzlf`ivfww@QU)ILd9oNSCj>&jv-zC3j{nY$ANy+SUz zQPP$eqdYi3V>|n`9IeH6+uD8e5VI6IQAlSQ@7-p7Df?P|#@;D-MQrR8pHk19up>Uj>WwE;uxjve(ybkn;^|jEE`3D8b;V!H- zMCqqCmDT;C!f>9(U8ps3aay@GfTQ{LwEkJD9kpsv99sKpURs<&u8Nv5k`*0WYEK4l zuzzbptFd8OU$fildgtWaBbN#>?MYb9^h@zLF zCbd>_9}I7ANWgN!y7Oc8BfY9;aHQ_yNCjdZ&F(t%jXXWO#@Jt7r@lW}RHmRuS=NEt zBbr0F{gcp3khjG;bya(!y}+_Sd0hBVuWypA^yS-F<3pRAlq#AUUp%RrkZ`EG0ff^~ z*KeHAyqLH}?*P{9gpS-hfk|HgSYy7T^b9NA#=@%rmG8lNq^51i`kVpvF#w_kQIMpQ z$k7e5uEk62L$uiDnYubbhc~f^<=PU(@kct?rMN3=ZN?OY3&&3N&>C{izZ5<+M3rVo zEQ&<>?+tVzBnY~KUcS6K$QZ|!Pe!e%eEYbtSgM?M+;A<{tKded9xa_w1Pkod1=E8E zeey7K)w2Y+Z*OvdJg6O0?~EX}{0X|^)WLz76duo9=)%y` zLCogKcwLsf*ho6Ld@VT6l*!gr!~k#xSX=rJVLF^r8-bB9qKn&H(1WG5|67Igno`ab(1rk07gKoln0HOPR!%OhHBhE_X~b!2zOu*ei$pDvPegUS35_i z#BQ3RPVo2h9yt)sKM<4yG>iM4%wwS@ddtevx4*1v2_qcSweJ_NNh7Rb|MTzKKSbf^ z5a1E@P%)gV`Z%&OHL@#~4HI`{aHx<|Q{fbI#pPAnUwj0dN^@q7ctA~}Wn+wrSK%(( zeoa7qW76K~o4@Iz7LNR#y`_l(5)I(zG$K3Mgp+>6>8j#qwZ|V#LV(ZukQEtOC@9si z`@fqq3MZP@RBaox1H3m%na_OM52L$LAr<-qdZ(cWAQm8ekd9@TE{Z?& zBb+gwW8y^X!nX^MZeJAf@JNUDN7+l}AG#%`%^bj7xJT$UUOp+cdFGV86YZWOI|`#T zNl&tLvgW>p)Z&J8pJ{t(z6IF}&`<9$_ij~vnT1IH*i;54BH#nShM^6AVSr{<4wt(B zarq!zBiUi_ebC_RIPJT>BR^ucWMw1D0-_qIiEmX`pvTU8efbOvF*#?Q z*1{?=JMQ`T$a_e@NblnYTOW*c=jGwkT8X-6o0VmpCW$|eZtpCS`QOl6pSPn6 zmL}(E=lglraq=EN_*}Z8B9_`D&Y0@ARa%@N>{`GiRGXfjH*)>O{W4cF1S>r~P!+U( zx6j@FV3JQS3k=%K?#a`m|EG?CnXkk53AB=D!P5WiK5_iHd$JvZ(BrPV+O6(Vx5>pS z|6YG)5FtF#Pt66C;~5>DL3Y9`!Yl*E^-Y3;8kB#G*44st*>~S&zeu12i#yKZe)YG& zu)pI=hJ>Y){r(N@6xNnuUsR8gFe^A(0P{5=LqYz?^)PcUvhVZ8j=0?dx_8F6J&NAk z5Y;Djbl2O^S(lHoy;{-(&j>jZPzqfbq@Wr$GRJ#3Bz0=@>?ULpR6yX~2P6QK!H@YL z?ar3F9kEGa=m>27%Dlp#g=UmRBtchAWdNX4Zfw0qWLpc&QU@n@D!vrR7gIUYFf`DJ zWGNnib`3?Y8_F;Ke;I^&I)zzkbgX#>=OY3AhxmEIfY#*|#{hHl&n2IOSJj zacN=n!IriYF^iK}pPSPXpI$BEhroEvfZX!*@-WEQ>{9K0F2N37;t_4>Nb-Vo*Ie#< z3`hsOqOUP2iH`EMO}vkAgD26mW}Yd;Kb?UmVH`XJPVMHSF=Kp<$4d%R4rL!^)9HCswG=K{{-)M^jP!IACc(lH*+7GDuwoon2EJ*9rL2XRuqeX zjpnmV=SoWE`dd>7daxb&iA3lqm=pfH;@$xSJGdIFoeJ~G;W2LE{KA-rQp$rVX0QLjXm^v@j%M<5dQRfW+q+FE|@j&spHPFyTD zrTr5U94MkM0`@trpk2eLN<3mqL4<;s&z{o+gaz-;`IR|AF>p?%Gg1}M%A|B#Y?H!y zQ8^2}s#ty5OrYro>cM+uTR8?3@^kqxQGWbbi)IX6k7{NRpL^4c0)JHKBT;Xo&R2}jVG z^?ejmSwSo-ILN;Dsf|eLoBTn6?wS4CClXkQIv8A4>VAgkA?=v$MU(*nmEcd}S_6x7 zl}01qR6KvE81%%TYpo{Kgus%*y=VM%MtQ&aIs$pXQ0Y|@--{vN9{j1i=Ke3)= zvizzF7({P>@rYDiI;hc?Xd-f#RpWE4t!YgczgFgISWf0|v=x+lO`{K^h$KDM1~A#t zuqa65Mr^ygxAk@)jwvsjq+5iKOoay;&pH zn*sS*2kTKp*#f<83zxxt{cvGgs1~7&NJ=P#VPJn5At1c$eoX))GZ{I=?M}pTRGq*} zqSE>3Z>}Y|c6yzIT=xsmR8%$kNx!A{<&DF~OQdnock4Tx8fYuQ?`K_zGV!M)fm)(7 zvpF(~t5g3#DO`~UT`M&T^?CnU(lO|@&2h@mEJvvi*OB6Aq6Z%JX~e++ng2$`8Hyl5 z4k>X``yFu8<>JS!YW%b4LTK9+0Y$?hQ~gF*`dcl$`n!+t5JC-`Q={=&{=!$B+ePu; zqeiY=04SUyfo;Pg-rpK47c1#%HDc@1;P=BEp>HKrJK&tSgF-&!V+3~$hXE&z+>UZc zuYZ>6KxDuYYm5x>bWUfq&bKVwUFs?jXO#GGeF9g~H<3<$fvkl5*e;-q?F3D~?wHM{ zz+gcCUo*9?aL(F;Jnmw@IhP<%HYRy4Jb9pB%4;ij*45z|Q{U#2yq}pUM7d)GLy`Tuk#oA{F4 zxEe52raA@ZNl7U<(4BaywNwVk?bOn;s)X!^_PMdQ0ka%4=9ukTHt z*`?TW#o8nCS3e-tDt=oF^?kS)ka?`9ID>DQR2AT83M~oP&bXW)mcNr1{txAg7-(gZSvHBlcn^ zCzLJC^ghv8l)d<&TeTTz7Q?&jxyl5>HHM68nzmY%iafk+@)3gZOaUCJ_B93qV-l5u*LG!ApKk zDT^QsU^Esi!os8PIQ|WJUA<6)z(J_eJ{%Ec@bvvSu6_uKw?5o-=yyhg&@ihzs8aDg zd;Y_=Hh9t3BV`pHmaZ*IC`wiUR)>jLG!-(YQ)cOd_!lc$zSo=YjC|{Rnz;q`5*8&K z)DJrfCYLf-XEM`71xmDuRSrNa@xA==6M<@v?O`{i=*D5g_wcdE?a3sBzq$ z&zR>4@-e}YWr$zBdk}1%G_(vW@4OD4h5ebvBo;)~jDNym4$?^CoY`B?6ndWkH4&?o zU~q-BWRRp?vy;Z$kgPyLOZtx2qCm&Ku_BsY=PU<?{4_#%NnB!yi9aIc2ME1SYPcnd4g=;uq@Fw`BH6&GIMY`BI{27 zrSuJbdvw0s&>O!D8FmXD+S_fD_)jWHUVxVi1l`7__;o7(xPKZl`DthP>Tqg@_X#W; zQ5J>eNBw&K1|K_jvnRj)umizPP+uB}JaBM1Tl(1xRP>GdxKr^zhOO&Z+(n-bB~RiJ zchtN9W{>xsLCqE{sJqQW=dZu>`tttQkV-|Y@?-n6uEIKs(pJ$ylSb(T7T$|e5?;N*hed%ltc!v=NTLA zs-TS$V2n<-o4KGoO8c_p+GWW-uL_ec=>Hv(xQ^vAY>+p>=jqnaKf(%@ECRw0*r$!z<>8V3itY$-E8T{KP@6X*1nK0OnSJizRBSs|OM;F9x>t z=F7^d`XlbjXopHdpJy~LOGv<;qH z&(6=O*qz#54$P^xE(}1&hB6QqwCH6b=_5NhT&%l@{t<;*l2^T#&nI_?S0y06T$G7! zJXmItt3-a$9LSY$^W)5|Yjd9LXM-@vfsUXfF^f?!=Q6Cs8XKl6x~$mO*nTYn++W5p z!P`U3v&!K;zxOuU(zRgq5yQQKENqD(E4T#Dv{6PBSf`(Kr${44w@Qbax*U9&5p0D;@P%-bf1h%1nY0L?F zT4y5n2-*=scM8Xu4hNmZAz}<|3HQQ?JW^41Tjs_TF6CMRQ<@NfgF71Lc&EFx|Y)9#p>2emXjCgBT zu6rx27Ru+sbqsREL~&8*+1Nrva|jJSgaod;PnLouQ=t>0dF+L8I%w6*d0r`wUi6@)rDBY6~O) z!km}GHX89t(6f0(>U{|6NBVYZIYJ7G!%&^gcX;*74Ar{gB>Sg{@KEsGZ~W59L#iu} z0U1VHki5$Q5{tDFjywD!!G-?|uu?{l-uNX-;dT8s5ds6U4egiqs8041jMYBW2d@Sl zr~P7`!^x~dCqo3n!=3c1|l5nkDFOX2f#&h{cCLw!zhwM4;AlD*rAgaWg213dDV>TxatSVP13S7JQAPm z9ui1stmcLn)FKjd4d&F~g>OdILA@lYpk7g_Yp}4o0II#U9`34OzlW1>>{7Y+QcQ9j zJ4~hj<&PCR82IbAR)j;xrO0YNPi&Eg0cqNBSF^--NABfZ%SIK%^leuV0)J=X)6K2Q z+LE?g=saT%atP$R<}$s4J+*(9fB^#5eYg=Ep>dUmm}{O)45#4SckqLCJ4bx0m7BR- z`kah#XY*G7kE!IuZp~EcF%f3DF;;Vq0`SRQ-ct%WCPVSlBhF)1^I)G-66*Fbp8ecT zzC6ZxxcE!Pu^iUquui%BhI4@FquFuVT-+qOY-*@bwk>2Xsp?rHE?u+sr>n!Qp**D z-eRTV#m2@`vl*^l79xINV1$XSaH_1e9Bk-u+qp*=Kh(0pgpsuo>vJGIP&~hwjK?WM zeC?x#DmN=zL^p7(^Lha*atQ$6A&z>sovK^<1;f944(uxlAX$A{xf;FPEpGnnP*63! zE$qH$nQv7G!XNFiftL9=y6i&IusvC^+!)R{$Oc0Al^+D_DMJGkju9ztz zg`k|IavJA-RYl&T1q$nPzK4VqpbWRp+84o$We}6r5FZ7i@Uf zF$tRhFT07YYmc*Wa7Ig(v3Vq?2Rx{!#MP1wHsPF{ibo+46+#SskV8c%`m~P8M`v$) znAVVyWC$jxk|uNwzpu%A2YJA;db(td>DeK^`MAk6HsVA|w&KLm*xKyJ@s))gE4J-l z?$I(h2pJQkF+|}9EpdU(sm!>!%1H(p>awxzZ8v2)Sv39Ut1_1$=9I9&UGGtnPY)kA9;f4# zl&y-|L`a1q?;yRzxSrhE7cDA)T2Fn3ZF_<$O7{Typxj8(a`!i~L?)SntBkQSsu{`8 z6M027=sK#ntzeIVR>3aaT-x&Q(1A3ZxXmL}CIW@>%IzCZ-c+hRIbyvsD!TNxQ9|gJ zH*CI7T%4b$;&B61)3N09=|Os%hue4Z+ph4L8drV8e)L*K?a3Q#Rukzg@Nj;@UFK9fcW3|iN%*dLt}V^#&}Gi$ z*XHamgF$cEm;-2>vGw}hnIjaR_lG`c5vHACRqgy}|1!E1*cFMVEw_B!w1VkrSm~JD z&z*<9x%%vFH>jAweK!SUk)Mo1Iz()k_Egyr>dt#zz&6%R)sYGH#lxL_riVsV*i1|%+rjI24^j!#3Znv#wOJM+$F zZ9e#NiCnenhz~jLEtgAOhp`OgzaL2<$RmVWIn?at=^U;=)&nztWLK(4e0iJc`CWnM zv}BEKrzT#ByeVH`A>C&7?;Cp|O6^t)Y?~q^>K8zrd8_P%#n++C8ly>4>7mc&LA9J0 zx8CGzfrfbpU38Apy6!!75G|pn*&J`_v^(MSWZT179n{U%;twxUbS~@|SgsG`6rT=EF*s+-Z=KdH4 z%{oX}=Ksdof}E&Eps8#;O>|4SG+Xm==Dz&?-tCcA;ZLe=W%|!kO4IXT=5#XKD8`tn1&ndn_z=s>AZ&1qnXf<%Q+3y0y($ zNHO(7zgIJH1$!i1B@fi>_9-<8O{qAZnMKaD?;p%I{(EH635GXh;X1TDf?H6^En^%o zPCaO1Ey`1Yf%dzIqQLr_^E-EpN_e>T8XX2xZ6zd&m~b_;#IcV|aNl8G4L9@Em&c!g zv%RFX%rLgWc!6($9OdWZAhU)BldwKPDMj{!J*N6Dbz0Md_f&LEkaY4#y3H8vUEHm< zwldqSpq7#!E|i$s&i93gEv*h>2&P$3+SPtsd~f@PrS{@PhyBP1>o}Z0RPbIg&VtC@ zHaeE~x06R&e4bV!(r1k%Sjq={)#)%m(3kze@9A=Z)XjhbfDGk&`%XhX^77bmT`g_> zzMkAcTxlT>*`?Xvk9~s#thH2jk3X{y@773>3KM~&tAHis;X8V$TYrA9Ode|7!|42^+z+S7S86s>xXb-wxvehV zufajWe`6TgT=v`-0c=TqpWk7;bbw`6@Sjo$WwBHJs;ykj0f9}bzZlrnYu@FkHr(bN zmC#7lhIWm82dl5J7Mg>Ik9JL_4RT20@)Q(Q_ zt#_krJbUcAbDtr(lE`^a*qiK6qCOL4DE4b{%#pD2t%>O+u#~iBVR5&N2;{Gk(o3QY z+;Q+Nj~ybFpAOCZF0>-bIbME43Nj`*qntI>nl4d%rY_}bt`s$L(G9@MNkT|>ZQJ@) zObU)0a)DFxZbsjPml988KRNz`$DacyC>*8uKj{pbj8H5=uC8Apb4rZIAB@&RX<#=} zJQ+IW)TZDh)5L^cs?0;mrpg##AWd!1OO3hF17hl12iTS&V<^|KJn21zerL}~{3?n- z=Bxu>_%K~PG06D6rYA>B&c9hlZ-vaxX(1Qp-i#Ji0IrOU)HuG(X?c|@OguVezae@Y zILI)3n`B}oEQ7c6+f1CVrQZ<)i?je6c=Y&dqW8d)*@;)`yOZ4F|9b(p7X=r#1kMRt z8HPbLQIMLbj8OCXAfKIDzPsVVlaN4vkP`+VgJ=BvZy+UC$$>_m{|PWF?`$jN8n8&8 z?(%skqbbd9Ug*33C&UiNg+qMu2VI66TUv+tEBK6|pxn!O^s)ExU9CVpPXr%`eNy{E z;Gee9^kxsmxIsp7=yd2*+&n%1`nk{4ibz?$LdXodgQF!-ySB)rDYjHd;v%oQZ+aQr zf>y_NgH|DlLPQ3O2i=hXHXB*Qevei+MzB+b2#4ZO=@tOqtAmq7B?aYGpBZ$uf}L3bnM10voG{Zbx@bFdDiKy zgN2A5u?jBOeVoFK)5soOy5@&b z)LuP4nSJbtmR5d76g==@Kwe(uPqT4yR{^$vgRdQWIT~7jjQ38d;h)|*jQ8Vz=SW2b zIsh~~rEv99y42Q#L1MGQpGZd~M)oWcnh}$sTUySJivAYu$D#D3hxn zrfkO7q9ZIAiYvX&lW>z88si4`*nqAj^ysz1g*T+fdHc0`ElOXjthN*OBz?PS zFQ@$EkZ@$hH>9-cofK=3XXQ((0@DwViq*pHF=OlnMY7I#n_-di9CTUBGwrzb1)Bf@ zK>fdFoNrZ{!pF{XSXfU*t;4~YPQ4~hw~3~roo8_^o`blyth&mfGx7yWN&)OD+g|RL%mcV341nln%`Qva1G8o%sVDQ@8fe6Z%z<43e*JI2Z z>xD=(a(kZ&-q4w#2a~J>5qOr%MF2L;TI|N3`M_T+@j71LPHF4-RyU1FaiSbOUqa( z{btpjNg@4d*7eY1EeHvQjj84iiPMAur!%5qWuF?r<60Ki-C8Stp@y!_mFVwZ(k=#& zL?Jh5=sBdI$bGBC4)!d1d`j zGWv^v3Z>Hl@>ov1!{*Pc1&cOcN2tXHskJtC^$}?lp%2wUuWy>$2Uh!}bjD$WG!k>R zjNZ0cu4U*}!QBNp7FI#!2j0jbq)8nOvx*VZqoX!)L^uIf)`Q+gBp?Tq5b^1kAN>m#(h5S{DTn}1BrecewA$YCI40ZPC12U1Q zy>rkrMsuu9HUNf|?p%-w)5H=iy(_+Rhnw%^v3~x66l)DCyCkkk>VzFCB@f3a1r?XTAkW2BPu6>=zY>&L6lTUryu1eGfZRSFF+D9U&$KRqPVeX%Oc zKbremxyNK;f+~7_?Xj94(LFjL5|W!y4bvXfWNi$e)=>ktkf=MCOk5661d9$ts_MD{ z{cV(fUTQ0>L#r5fV-wO0_)h}q>WzU8+K8**=x5iER`xk4EZ*Uv`ut|4v)#9Q1x4d< zxOEBLnEVKlwm{j+&EF_J1Qa?rNiV)5ob>hLI_rj^4!6Vt2S>L(+}Q*^uzJrI_-l|b zu9G$e@&c#XS?Jq@yE$r2MT$tM-p9uUg>@Dyf>6{kk65kzEyv#16S5r*VXzl+No>$j zOsT0Y_s;q@!V?{WGVV_AX+NbFPw|0aL08*Kg$FSk`=~yhPXL-`SG}hQcl>~IQRGh= z^8xF!8~vzY)8FrDNb21*9b~nnTKPD6)5G{T5?i|rOP^wzw;Y1}JT#$E)jF!#4cL59it}C)2fiPeE04)VOT>>Ro~6id!Ip_`}5*y#n2auuUFrB7Vo+MBHE0PJBCNA zO#Paq0VtUmYc7-&j(4-}cnBY3UGg5gJH~yRNC!C+N58m&LUeEe48tUwiZ+_(3rICC zTR48Tv0Or(A^rC7(cJ7NSeXwgO6`oZT0<=}C(H;7C% z4fGap|AQi6v{@z*4k)MyvmbPQeIgYJE22<_>}#uLf%ZEZHZ~)InB2%a-oq_N&Y)Ay zX*bCzo7+o3!!U*Nf~GGncK$nnFTf;J8OaAHjOKlpGAyowz7O13PDX5vRJ!w z690l{863hV9yMG~aaE{QXLOE|ZLHL$7e1ecFpGV7x(K0gNW&*?LgqEUvKbI_Wxid0I=zj#FKgxCgYYJE{C>3lu%0s= zbJ~l&*Z z?@PLL8R9PG6M%k{w2|12juK{-p<`}J9IAHJe17po0lz60WkXj9B}MvSnl4f4Jw12$N=Y% z#=&o30hOTPjyg%6emU0&K|~;ub&zl+O9^u^It{2)I{g4vu^6Pq@E)yY!%SQ(YCGhu1rLHxltWEGw|;$-eqmSA7odsA$}l<};i5 zATsQ5g(SXcKun4;S;wra78X{u?}`_1==GH6NkfDj%ZlP62qr?tWgB~0Nz37!SbD3Z zkj|u=V7SMrwC%V!N+p!P>3aIM701fi3t}((S3Cv=z3_p>Dve7!5m6K$w{ft<=v&=d8B{_GId4{ckxK66S>sG6sEE zfu+>+l|ErkGcn~fd?7e|x~c~HqjBFv?JaSPAxLV)4?M#%C7ij3<==;Tsie|%0LbpX zxR@wj6g=Bo7OHU`!bc~#JPj8(SCB9^iql(-z4!&Y2(^Ii2MyKn#ypBdyK`NqASN5o z1jJ>gKMo)q!-3t~H@#fzi3qj(a)_ERh99c`-X|{QZKeL=nxC1)k)ccYa6&K;Ngdx_ z5-pGyt`?nLR>tn-Oeq=RaL3df#{gDulA6-Yqm)7%0)FHP&wCWhX$aZV8hJfbaWBnr zT>xVNA>5gc$6+#xNV(;NA+93yup5irn4SC=E6*6XoL#mJeBktl;LWJ6{7xXk%5ohu z(ST=}dj&3VFXU`^`n21{cdB58&OAND+)T1LrYVfo0ONzm%g_K|UHIOdK@KZHGEeZR z27j0OQU~R`RaMjkgZ4!Kw$6bAL@f=lp+Arn59P6zrpFrv_Wmcq z0=h<2oloF33?evXdPPDBnIerl{1D`g?fRYQw{No<-QS=3EaqAbBpho>ygjk^LH>1lGc=luG%-9zx>+06 zm|qVMx-fsd^T-iHnrp`vy%hwApSGdFW9;yeiHWC{P}$y$Glx%j`Cue=*%cvNrH6ac zJpP*G^m>N(H_D(34kk#hrzoS!k`lTB8bRsUtG+o8YU063-9ft=S32(magM>ckb>SP z;UAe9Ja8)N*`ZMZRdp*x`hf5}zKs@)8k31ujX|rc5jybv{=HUo&stm@XZs=5r*9OS z+1p1kwVDR(Srp*wW}Il1p1xpghovT((({!0P19YEGWk-bL3XqjieDiS-&voA66{R1 z6)E%nKTY5UD<+X4)!ua)bdActDOoH2;|7VYy5fxE z*v@Gk<_hG(cer4CXcndUy%AKTMYQ4$( zbBHEXHRH5C_Kk2(amO*cX+5GD4V|H{Yb%ls3bwWv&&8Qy)zL$XE;Jb-PxGX^I1E(W>%y(1c6&Y5O7=%VA9Ow29WT19Juw&W_;ReoWoj`RC z2&Ecufrf^I=|QiW0_#019#aFybFRt~RC~>aYMijDQ7qz!r6L~F;0u!o_3-Gj8SqvKum#$19(rDBl{C&A5=)uJ!Fr3UeD^LFH;^BOpMk11aDj{S+ zU6pRrg8hGjbZQa^2HBj_!|3Z1s)v7|9!%>?yJNW67kIqR_(evoa-O@8x!$7_-$7V7 zw*uP?usfW`Nx9(&<4a*4bE);sc-cY6%kiHHmVb)?Zd++QFy z@5sihBm#EQYJ@=qi?YBl^tV=dC+Vz#P&}?BK!-Em8ikUM7x>1r!lv+7U-1R?R)*z`=(+E%-vz{<|i|f7eUK}RfBK+D6M18^`rtur_xeg{@xB< z+U!tHdRYz%F#b%ii|t^`i8sWl6@yb=uOX>)yrFz-?dWARD+=K9_*@Xc6#^uMK7&sg zRK_U(WPSt$jg5mExJ|`JFc-V1WsbwTM~SBP({RyVPs(gjBmrnX3ODge27aI)|6BQ) z3R@*jAxM2!P5+Mau^NJ?;-xuw0Q>=4FZj@9LAMJgJ@uCXDhM^N7pRM}d%Bhsc?`T% z=unE_I-00Mp04F1PYi$}6*l`NoC_zac-XdZ;B}=hJLSQk>!N*&F{5G@aFcFilO`-I1*ydI&VX%Ys$LO1*s-U`}RA;Z!pMW?!h!z zspmljk|@1nyKCB6UH6p4Mr7DJq%Sa)j(@j%RY&3j8r5XnNJ+uX*n@QGK(0bFQ!7;L z3Whul_P^XyWCnHW%s2oza}h9{UZ5c{0j1Ltx{8|65vMCjIUQ3Oe|XPu$=k-~dDp$R z?(zXC;*}sTOR&g4enJ0zed2f7n4^3<0EE0GoM)Xq&+0?t*3u^~w=mY0(iLXN*0G=1 z#nkI9)=!5^I|7bf%hYH03G!b<)ZS{1OxGPG5)stw31Xvm2(D|1T1-qr7KzVxZbh`% zKiQCW#2J$Ub!aAlaYmZsUNz5sC?G zCt)FF1&{$3OgudI)EQ=H5mQt2gih_xa_E(K?)(=I*`-W^F3SUfhO1`~G0<8TLUNF- z#ibZZ`jG7#)CNO0q8V`tEZFb5o(8xY$HsOh3uAIE(Qzv!nFn|-7PAT3E|@UXf2heE zRQ-qg3D+&3cG9@jL5b7-Wf!kzn)0s|f63klYy-%eq;j)0-iwZ4Ro1!UO4?NKqfX7hN)rspP~RoA7$M5-$YE4D;Eiy*E3T zX9_N@ixvwqqd$GI=zRZQqQ?ck9uCGFS?zJ*AVHMzB3hlt4{PhwYW-PVdPI%_X9hRYYi?XkN`feaB>FST zH|<6nY*%W0ge1LKIuKF)w>opxS_3U4$C~et>3I7aw|%(hCGuKdCduN?=MZubJ-ttq zSO}+j%oU0&rD$mDCN4QM)@h~u-fRPI!F`fGMSaipViY*AO z(d=P)UMV{!+cY97HMH-J{QiQgy+?M84MNCY*12G)iA*XWp!9p2t0el|vZ3KR11m;j zLMp;aq<;!|)g#hS8cI0#%hYmF}k`@3Z2=^G(JFHd;_xm~xp(FoGjq-g~Bl z2vJPR;E;?$x|%N??eRhEs-q?HQiBH^p`RS{p3P~EATkWtI#99VL9Fy|NKuRqQVuy$H?_H?@zo+F_!(SKdo8GPaEJ^X~?d}*!>FZV)V-UiLvUv^HiK= z?$7goT!ab*OiRR#!obG<=5{zt_B|JOwyFs6qE<S1STRnD_wQe?y~UtYP-3QNHqPE;oBNbta~BjIA!BxsI;CX=os-WB-v(1`O86@PAFkNc?Ovx7=h;^&!8ts6n?xA z+j99!&FR8pV3M^fG8qiw=jVj2qInx_jkdIr#?jBhW0^20>xSVK2pC=a?_2xXKLd-B z5Q~tFT+8VkoGL>J+I6qisXG>j`P8MQG}FU(RbI$9|%FEb{Lx1_NrW`XSLr+Z32n-uR~n0?BRT_@dEwUItYTcH5PR z)&nR;d(rqk!t$rpsKf`__51==oBj+l-%GBI9*5Sp)!VhC6;)?44~W7%CleBR?N%!7 z*yKHoOFb^xZ#uZ901$4kA_QC- z+);b-NPAa0(C>M{S>ES*hC1M9}zlgHyT{!3Dvv}dTw#BPG%`baMt7! zdlkOvtj9g#bx6X_udQZt}a)dL%mWzPe#*aWz`~!x|*a6yknP*$qIew!CBCdO~Giu0? z*L&X9K!5b^TlWK~lZu#X>0CwI;I+n7II4vI ziPlb|Al$p0rQQuiaDL79_5d!CTKS!fi0ffjJDLE6zGHJP1H%P)9j|$|_j;-D8C3XP z;}3JVueBsWb9sS5f;r1}uaRS9V3bB%af&CyN*!@NmPEf0N1~_zL^c0>jol$tmbOzL zhLXX9(B=q7Py9$-oo+;#8s0M?rnOiHGc679q*h-(20roxX&_)7$fn46{_`Ty4~hzD z`WFhdOaU-WxkjYiW##4WT zoH>$p!Fx&U5D@-ffB2krn_BamN}A^`=^n#vQ)7n+GjyefBTm6TxT;Ra^h?6+I&p69 zZDZeo*__?J185rMtgnk&rA_CYu~p6&Ksq2_+IS0vOs+sXLCdrEr3rhj84mfqOgrx2 zmJlAKJG|O&9=Ex@K3;0i1!>BUoYA;1Pj2_8T>+sV-)zG!!P>0y;vyg>i89BB5Kk(Nz9M4UiEG0Tcpc_SwRKy zpQ$C~8vHJ}nfy;?9B29bdRj}DOt>iM_;BIuHwf%JT7s3k>Tzznft`<02{HlYh zh;}M25myKg<|E>I|sCuKd|D|l&vNB353|y(5di)P_x%Uvsg$->UbyRXm;8BeC z?$xm8Su)jRL=YWU|0G(hzVYAeS7Kv^BI%8z;uCcW4fGXkVR$7_^dFa@eMA#Mc<`*$ z%Uj??iw`(%a#CRRr8iEG<Rw^~uc&Bj;)McFfO-p_%`pG{%{0(*`@4$6~^yf`=rc z6>Y>OM8Dq@?ZKEsY07s8SZ7@k^(xPSmz3YIVMY8T+%Qi^giAguVW`V^-q{(^TNkiQ zIZh`*g3CO-4H@95OklTT+`$cd!y%j8%?2q`!K=y-g?7lk0@!CbQro$40a1;dRCu*JJjEba~fHD|h{=J*eJeR_wEn zXxLC!qJ(S~b8{}{3DS#^M(iEr8~}YXCBfqfq~KrOJXrBhIpE03YHt}63ik2s<3Q-T zk9<5`2U!0TfBu8 z)J$43b={R(am$1zH}$1r_BoFVj?wfMXbS12H)VH>qOF7mgs&}!VbAd6aCEb67@yOG-~&z>Qm_eC3MW~fTumZE!q&w}DR{eV2MLyY6JKAa9MNkXD- z3~%3f>5O7jolrbbDo0_(NL^N-#vqT#oEh!(jy*pkJ}4L5ClIJ32~mI3ebulQs+sQ( zI&f(sGr%>Wf%!c3TJ7IPQgb?aYqCN~n*$@e^NsSu>I>#Wz*sr@Y`8Wtp>bqz2YT)0 zj>l_hKT7BNw$Y{LLM^*W&e>&N`E)nK_q?vRgpy6yc5=TdI)PjP*1~7QpCX6hDr^|v z;Q46e;H*sXa_v(n|eGCnx$$S0U-k^Gsz`f-J>wsWq-KLf}^|NDDM zV+G~>jA1Bwd!FE|Z0-rPrp5dO6b#0m#c_L0$P|_F#9z8}C%IRO?N5H^B~kj=V%0Td zZ)SyQWohJygGYxKFGbgLnfQB~j3V0X_zk$bHail83mNF7GIQhZDvVriNwI!q+?8F_ z7R`7zC$_FhH%w^ySKMF-y?2ZHn@6hwBxSap`G!o4@JBjk8~L! z31x&FG0ZnTar(;75i^qe9+~I0cnVdvS3&-7$J%$*p9p*VFyw+^SU+{n;Ggm1e8yF@uHw4Cq<+T_Z%jxAKa_K|Vx_qi?=u z`wAz2pUGpDwy(PA{r_`83?ih%-Ik%pRWRYLZq0gH7R{$(b{{&^wEWM^*s)r`xsFea z-wwVAC!088?sI>gnEWD`mpZu-kI;V$AbBl<-QzTi&b$puw2mI0=r77;Eb7@1e3V|v z%#OczOI?Tj{Fnxrc@pFo{)9?08Lf!VmKEXyTvec~TOoyUACW4zFHkz{-P;?jyQd9ED4{JlZYApHf=cux`e?J#HgU>huN^h%>;zE)}hir3&c`Q&q{h4{k#4wAGQGsJu`Dmhy#h^@^P?49o9*&SAcg4 ziv(Nl@j2Rf&`1b8aH^Uu-?(po9r>d$wi9bAFztam!*a=M5igkO9mv-@gk;k^)nA5g zTCX;y89d>h*4Y@BJ0#7|#Z3f+<#heQ`qzJqQ&zBOU#6MjAEBQstIwfFSbM=PDhvTL z(7=Esc&XxB*kuT({8OKhzgY-pf*>1${lI#qnK4cQXLnOau=_=dSxgdRR(3&Vd6=zd z-J>xLnBRm2cf<8=T4oirvc8S)r{?eE!7yCtAVe2a04ID+xlvaO&SweY84{?YIGqW8 zp&F#pvUfLzGLmlfw-4z(7oPj#O&xdj%Od=4U$MJel#c?Y);7dXZEol?wKjFsrr@BO zB%?{Q^-U_fSsxtetKWnlS&-BT8%QoV9wAvcqE2;uZQR$`VwOrC5AOgUh`>C#5OHWq zR;SAV&Pz%W2oS@sGO$#@0COvG>(pN*>?CqruW4X63H(yuq+HTf~nLSnO@P){+}u$>a*%-Lk@#e0Ryw*G6?uA(3`yx zL)X3q_b*p3?`BsTpaP<0-OVlK=H@nWlACY{o;|ZE#wAO?xw!jS`nwaAB-nVxWAMux zqzGr^h=sA*?3n^~{^kLfbT&-E^i!>)M{Y=A-YoN|wGhXXbz;rs>q+3cWHOcB=JQ-d zUkeaW=G33@gL(hr6%(AN)PCwiXc&Vq6J#eFcUL}UKa2E(0A$mLLh3guEs@}#={eSv zSxPH&G*oK5!=Hfe*IfFinX@hW2wSrD=j==COM$!djpFW|Rb0+DjI7f$7Xzkx62jfd zSsarfjQ2Z7$tmnv2xZ%=I!0@XGRHZ41w-uRmktumt%S(-6BVZ!8Y6z6&UNC|F7?y; zJPS!V#9q>dL36Xl`A$UnD_Ev$lMEEJl^`~RY=WofH6L`{6&@-AOVZvyj9+cV0V34F zoj+Z*DyPeWp{^6{Pn_rOvJIL)=P9KozxM5)&&CO*@p4qvs{;ixr(ix=SKv$QReBjb zfWTCM^XzZ~Vc;${rT)o_`p+aHxkgni6;plaR*W0 zs9jIeBbXhXtMK_)G9+Ykkhl1U!EbR%RlUXvRe7Q?EpRs$=V8UlgqkTekkt4Ju64^) z0Wd|*JzRL|>mK^|7t5k&oBc4WA8iYqTcthRGiR79lKFMCFL;Q(XcmE-MC|L23Zx%h z=&GZHGSQ7uJdhB{Uf=4i#rJFmmpk@ssYS6aZSt4Ke+}+2a@OEa&((g=SFHZQ@~B5m zJ^&liyGC$O<;5}+fNEKC!k!pw+CF}wwg$=VWNt@mTq@BP`9DoLk8f_OJanZRfs}X4 z|Fw4RSF{clUp{0AR4H4NI`r*o>Qwjs6DbaB4Tcr0=y%0tj`2i7M3wgXqzqM12Bg4t0BqG|*VTP%>lggO_xWdw*cQ&6 zs9FD|3ZVYK`}2a%R?pPEmXdMCn8R3p5A1CeD}fu_z3Q31Z$31B@yLlDE_<&B)$IpR zQ4j3zWdNpZ(u*pO`-nf}Z!zEFoOl0u(%JE@NPK~W`7cN`lhfBiO|I@vjW4xuDH>|KK}UKF!Om_$Gp<>@%>*<144j>?AT+kpxH?H8OvL0~@$ zITmomkJz{k*MpTP(Y_WmC6cHp-k^?0b%G-s$kZQ9D-KvI`f?N$P+jlq7gF;wpn(-t zoae3J@YL__!JTSjaX{zz?XGmw-9{Z>Rt+aHq$h6dlB8egp{;_?9~f}>3;lmvv_uJ8 zRoqv8zT)WdZ>RVjNXT^sxLL%^%fM9&%n0#|%1757ss@sLts^&@pK@Qg>S%ikzfcF}a^PH)zHy6~!{cJ04Uqr4*YQlZ)!Nf25bAop-6|lU`Y_eR#c4Sos zRaF8CC+doOI(gGyel0V_LHWL(P9fPx?ddMavgz;mmo-F$0eS2Ed@&8Ba4pt&-8F=D zes^b?3DcsbGDxrHWfIHnsNFcXQ?WXbs~!f>ebMhL^L0PhIrA6wiq-xL2pbN=Ur&8k z{v8~69pT#fHl0g!wR)BKMx{Dz7lQj&t3Qv5iMZgJ@R@QR?Z`GM=1+VR$ zU=~(|Kk?;d+${eApp`OQ`Y?Tbu*g|16fRZ^0UoQBS+CjB?`vqG3Hc-cQEU_N<7X%f zU$%9{w&*MAp)LcAwaax({4Ma<{M!V|QmfVxgqVn>@(No_Nivwz6@8kRpAN0Fre1O& zl8XI$iWD75yOh$a>}cPq-W($)Psrhz9YJ17W>;wL*{M)@XmCX8M$A&W9e%3UV;!j= z+b{8#wSQW}SkV4;fP^B8Ftu8&hq`{EG>Zcnvuhv!ftzfCSNFSC_(hl9=K!nF&A3qL zT}PlahywSYNdITp2wG11N`19B&`g(T*Fc5i`Dl(I7DhD*kcc&QIodOX$cw8aB}ote zRurwM77iMErkXiO?{sy7A3=EW-YjzPM1HJkEDjyWA&W*<>k^MlelxvhhR~PIgEO)< zAGidh!DO;iaOucf2yzhe64EJs0Nd-$Z50(gSKfrm9o`j~x7HlM!d6aRB>#ita=ow3 zb0bCz-ew~3MFK(|bm}I0zMD7-rJ>+JlL0+JL>-5KWzfHdV`|i3^q%xY@wOwT4g%K- zeFp{%m~~(7Ev7e8$gefHFxz?{@#G9%bPF{A4##ofo3C!7ubhA{@A_>3O$#gU*YROwGMRiRd2 z?@34!C5_(~0{MTIBVH!8PxDyY+_E1l-_>XQaix~Kp2+y!Hl4g9`s4!Ue~YHlMu zMH3C{Jd~x=;lU4^7A$rnV7*%Tk;sc|zg!V4eYq9BMZP(_8+tkRp{+-(zvtgaJu$2j zwS35R&{!fR1jQ7@S1R0%tBrl1c~8x2OZnI>Ah9=nC&YdDsOar$Pq)OtTh6stfd z0F?l?==c1VWnSGOI{jQuS(GMke??TT&J5%|R_Hp&gnF>V+liM(wdOzG6T5p6Nr5gk zL3(~JIInY`=EuGPHJc~T6(z6wjzi{LqjaD?yLr;D2%Ox_&By(U{k)O0R|$148;>x( zM@d>HFt!oEs&&nW`RmhV;0;Pl8BA?<&ttD{nk+4$YWbUw%Bp)tO zQD5E7&lNaxQG`F)P5}0J zWfzE#zyH>YUp+HGaDA&FCKL55q|Ok(2|3#I5%dji#0lYbc1BJa8dm}%P%5UuU?wmE zXI_sA(Z0kc=;y(w%|HB$n;uUTLT;y_#?CesDStpF zWyx1{?>=j3r=fb}8ZDk(vZ1$_5NS%YfUdVkID%Nv zn8(SImD)CR2tO&u;RF)swF|ko$?ogZ{BR_ODsOQFmd@g!ERy>ZReczWVEk$UpJ>gx zhzO~XzjU(fGcH0+cN#r4hO8R&mQ2LL1rNnq=3={)DuT=TU~#xw_)}D*IKvk~E-?5x zpqV{q^yqnJqnHL|(mlJdq*CL&*R)U4`%Li!dk`Cow6*!%0vd>OJ`$9Ic20?^+Hr|h zq1zxj;muom3`S{W*B!K!=6WhHs37vg3kfEcmz4_6irE*emF@`-YdpPdgc?@A*wr7J zj!2Iku|7x9z0hnR3ZVIvzF61D~dEQll#9^eG&IVD$JMfE;*GP%Y%D06R zBk@USXE!4PC}zBZdoVV7isAOTWMNmHDAq%+nJM(mnoBIk=&^H;Zk_po9t6x^0A2i+ zHy2qdmI58{0BlNz9NJ@sDv2AZ#y=3w7po%#aYNck0%BdI+T{D2CpkRExJADuYr!y{ z4b*W048u*pSRl=K1Ks2b8sCwwv5BRsahZ$jdXJrIRUOFrPh}0XyE!guR*qf%FO5fX z_PjW29GgpzmCY$?m|Gq7|FS+n-NimFB078)ceU3K7!8!NW28dJ*&iU->0)t zG9T;X!e$1fo*YJlVfa@~I_l@({6KcV-EF>vi%nbI#Jz2xL6$&4T%i5_?7#~W{cZBD zp|bYrqWO+TNkkFQ0c8JQy}j@$lZFh;ZWds90ba5*dE8THWO$<}-W!i&-3k zikD%NBZdODj{K7PJsYpAN9!<5G0a@w%c4|nlu9XWlCw{5BWZW)Pa{eOURbp6xo8iN zAFkss?lo#-kf8UER$d;MI*TS3tGq>}1+x)L@H~pbW=PZdBVg_;TB!3ViJp6P%P~wx zBk#5HPEIpR5#_|L$!9Q-wF-a?ip(unDp?=S?omJ0kY6Bf47#HEkavtvIgbYFl4w=hP>QS+rpdbvOKeHz8DiRu})bYbk>wxe!Y`A=yh$%1whZjyxkoSCW3* z0o~>r2u6w%cKQQFyzDvK+5*n#=nLJx=s|;Ct}Fo+F)NnQof_&(6g}s39k>+dM-;Mce-0K&g@}`w*1iiH`mro*=1UP7yJpD%aa>ePuQFxY0 z;UA4fBmt%r>L%t7yDb^|Lcl3Lxv<8>6VALI2kej@A~kiqFE4z6NjoPEa16!=0#L;T zgjf~|3aXGPb?CtQ^tdEDNflNqN797Q=&^4g&D&ui@1sB1hp!g#3*SQQ(CkGa zE<80zljbq7?-m*L+<&ujgHIGWRbfX}JY4BhDVjQrzWQu2Uq*-@yO$}B6WQ?Am9+}H z+XPDCXg8{5^S9IxMI~J6<-il@k{aHZT1wNS0aZxdK*PY}fgHsCJ)bEGMcQ4rD&iFc zG}C@5M}_X@_NulQcic=u2oAz+BrJZPrJG%vNQ))VBxRP%@yemTn19W;PX}Z$(BK1%)YGuu%DuZCiEn+Ztm2ABB$sV*vnip$#VuaraJL9;>5|VA1sTKJEA@Fr2s)#IW7Nx*;_u%c41oX*AkWW4SBitWCKpy$I7cig zZmdx3^w3#W(aeuOSS@*9wA&Mc*#JqQs#qp}n-hG$_r=kOX&Og)MKq@DU>JgkQ-0K! zo6+hDTw;j7df#4eYQ1n#lr$co z!=3oS`$Fm)XZ+@d;#FEisQZFo8(8jn>{z@cy_g!{AiM*7xL*f= zOJ8e;G*W>Tp1sdFp9^%eKPirtATa*~BxyoMM&4big=R2hP(Yy+@%S8;!`2(1eRd{S z=^?8-8X=t5mI`u|o;e;a^N`$+q;WdLAKyc5Z>tjje}hf)DfIhq3L9c*-?j?Vl$j06 zmGUi}ik&lzaFh#1&K843D-B~*-bpmtV-RxwomQ=8k34bq%H#mDo{GA{ErIED#h%>V zY8qU#)Q08aG9M#GlUybXV(MJktUO_q_1Ppo{uS~3RbfS7pYl54%70G00DbO_mjQ*0 zNGNrhI4!rHtAG=;+*7qDIp5v9rq!y!G7#G<=|>-$@$MTd$=fd)cy8WS8n?de1UC+0 za*o@*vw}$Tt!uTIyQn&884v(bZo=nY3eq!GBQ%bb*U&>j;(`wd3t?Gm0+goa64~U&*`= zEUSQCNbhP6pn~W}U0_-sn`HM3jHed*gWyPW{x7R@A8X}>PXI0Td+Us@%Luj;==X7Q z*N$k;@wktHg!8u;N#Jc-46EkUYlhpv9-N1!++FpcZvI1xzB+-t+G3tZCl#k>>gBP{ zX@K7p>T|!%ssSrdf@BkVw0$2qs;$FHUP?MJM@9?sZYSvJ+=1Qet}1&BJ$w*1*`P`4 zBpKtt8Qx=<=Nq)O$6itCH$>N37o5zAcg#o8lFYVEcm7&Ma;SR7Bzi&pSWge8d4;VR zHsC$7MHCb)%vs-^(3qkOfDc2~L=GP5yQGJGg(#>Ek8{g|gj5axg&_hz$n^Z@H$W6= z$py6+`=d68&a4yGLV?#!n)Ts$8fZVTOr1ISqR)nRxzH;a(z=+@eq+#R5yjdrCxtg; z{&d%VuF?+ZX!E`&XJFHmR?P`4##OMRL5ObTFmWMk3YMEMfltReAgljaKM)Te!DHTq6!f_rd^Y?FC6{ii@Xr-`S_R(qrE!F<98-0-bqh#48njgz0#ynO*X0*E*;OdsTJ2|EFb@Hl>VTn~YDlejB zKt?Q}_+eR)W1EaLq!SkDXkj7~FCvbW_W?tZGrn1#_Gl?bB)^iZV5yV}IM9&dQlZXg ziJc)$6>n+H6O_qN4a4_qU@*EgI8hGP4=uZ85?+()w`E%pZy$Wfi&S;iY3o?Dd&x~Y zvD-LmkDVM-ni9!owqkd{m_LPj6dtxH$%Cgonu^xNX%MN`J65#d(30nDl8Z(Z`jLjs zj)mFayh@nX zL&{_a@Dx9TJG%Or67k#E{8YENT_ZW4#3v3UZevX`&=h(r4is%m8&={9S495Zld|Zc zUgDdP$sz+as8WHJ*`{KIRYwabNw@Q!fR{Rv#t8X?X5qBGYOz4Bxrd4nIDc-q;1g>> zP*;w;Fn2)n*b9T3{7ao$d=#$ob$@VJwCa)2*ciCWm#&qk?9Ox0+_el`hDbbkE3yE= zt>iA%P*R6+bSlue>ijwxQ0+^EskL^PBgudcK5Ye~^(!8Hz&pOOBsUIvA-lfImyJ0#{;w#3o)Hw*6()uKeZfjS?+RgTbL7P2m+MBUw{0ARWeQ<+a)dOY z2qH&eMi(M7X==JWa^U6W+z3ubP>vqzPgZ7d3dc?V&Z(>ilyO#2;hbDYnR!H_eZ>Fx z33R8AX9KhqmGXHR?!WZcc;RI&CD-Y^2IA_;od^0!a2Mn;=Zi^TmS}d9{h|UTX^A1 zg!`zL%PJiFZS(W8YA47u509BM9i5CkY;+$q%r@>1Wjt!OIc-6a-9HZ;n{3f$%qb%U z{Zd&T6Eu+Pyu9EO^BiLheYHL2(n1!{0ztVV3oPGw-N#-$e7s9JMtD0v7KjY_Ru=;^ z=%87ot?g*!YTOl9DI1&)YSn1YA2W}{%PNUGAcd%L!Blkn`0rY)X^y z$_#^6Bl#EH`yboBTY+P;qdyB`82LRRyt19Dv_HAZOMLjGJkT-%x zJb&)2ijVv-j&Ek{jgB3=uq47Ta;GU+t`E3QsMYUaH;5O47KOmVT;|IN5JkLs`liNb zl2whmjmNj*$ommhaa7i+361Xz!q$GX2i915KfVOCzP7}fxBaC^{_Lhx2$XDJ&wq2D zcye1*#li!ZT;iMQRii|5hP~JbCbkgs9JoD&Vx4W0S~&b(h~}TjEV$DH{5phQn_XKz zYFKL3KiR6W&9f^>TZ|@<+T0!LnBSTOh8LnFyB4E2D~a%t0OG#D5tmRJli?JQu$3jO zJ@krU(FzRJ*$K7W6IE2^@VH9n!3dC&`AufR{gkBeLn6oSN!yNA36Dk5BZ5@9T_&L5 zntP@-pM{tkmkm;kjT?c+two&?=d9!;=%ub>s!*!I*eLO+4!7L&^#uio0&goWGI+UZ zfeEU}){Cm}Xg!6!!^4H7I&YF2+J49~Og^eM$|1qy;UW>RWd~4riR}l%89T(RI40_! zSxw1K{T*XC-dV6p=p0=1No zKdyg*b|(8AxcmDesQD2Q^~+6cE>Pvz%WJ));%Y*?*xj*>#3c>)D^c2vI!+0quC zU^x@Ph%utLub zzV7qyceqAO5`a+4BD2}ZWYzh}F4S@E;eNDLr)HUyDiP&ezoul2slR+zTHQk{6ZWOL&Ik);De-*h4FF)cJLi=#u%3>)rkV z(pZkejk(f$KN~d20pLdeoUIJ#+5L;1uP!O4ie3a)fILyz6UlOr!7f*|kOZ!?&P&P57q4&;1H z`^N*mn{UM0YE)&FfMedXbu(ub4bYseKgeZ`;wD#;V zL_qR;G&G!WX78)eZCg;q!XbO1sbzwTxZ9d?YNMEZyO=|@5tBr_iJD0Wjo(6M=Vc*V z8HD*W>iVfuXCN{8R5~GMYEqfqfLWrL609c*4$bgBvxX$fZ&gW2(qAo2?$ND^LrgXQ zHC(9Yo1|qMN#i7+F24|0&U;mf)AUSB5e1@G zxYFSXU!|cY#{r~DR$8@{x@xINU=Ddz7A-QXG}COmxusovnlb&3nHQI)3;Jj&w&u}x z8@ippas*kUG1;J3xNjgzJH=^%}DCfmfXa zAS0-6uzELxF|E3A{51)c{`GborQ3PJA;pS3Xilb&H0}P+piS@E;REf!_5XajIBn&D zC~dlBKiqb|MdfKSpF7W`p<3d7#d`XjEhnJ7fzi=N0(}`47xQ zBJDr%eFXd(-47wuV_htBL^AOhWm2Pbi7EhuAfhY#KyKZ{!0m&g zA1o@jWPw}LP8EhVuv5lWVm zy=pjInj1FCr8J@#HB#Cr<$Tfk-ca+C8IzdCT+DQz$TB@JOW8M>KiqPQE)P4ntqo|?f|z=I7p z?_(ob_;X$^JESF$uucqoZ~g3=bNXfU`Ks3l@jTGm((=1CA;UT82A%B4F__VM;~#Y& z0grhr%f;T>L6%v~>Q@fG99MI6UCv)xC#Sx8*+NkhdL-kP&tbkHFz17bc_}SZM5GFl+I>~*K4=4ti=1ij0sO;V3&-G7QpQ6qGOlf%hE8DSNSGcWYkmKN zcaGD|;%|9PB7S z$5c_RXY^McP{?qMoA(opPIT&GN6o6xJk_o1*nF{>)_DQ-n?cjS-fi za6g5MLq|h?f`UwArwi5#>UxghwGb+qurUfdz0hX^27tqzxKY)@D}A{9*6Eoiq1!CR ziFaD3jOmylQZy1;GKaErsOa=@`L%VINnp_eE9`@@KG3l|3-bRga_ZrgRqfChsy|by zUgP@Z;_86!t53!q9Vh{q>EL%~q#Vf>1&sO7Ain-AG#|KL` zJdin=g%}QokN%Y5oKbkhb^C#j@uv=tsn3qk{Cf%_vr>K^htaOS8g5^~2VWz#33U>L zGuScn#E8FyC+64#;ricJ2qyNdZI}UTdVX@0mG+5717{8IE6OLt5T_y?ReheU^r4{Q z#7Cve27Q%K@ZO|7!ONi(Q9ipU)XjbqaCQI=GGW6j)6%C-bnYD@tK&AfTz&cp`>B+4 z%i)o#whvhnYxqD4G&k(Y{)3m)G4)2eI@M=&W(Yryo%4nrF=}~L?3%+Cnx`sAKsG43 z+F=!pu;Pv;GiVY&s{j$;pY%8Bbo{)gdeuR%dfGLTG~cs)Y;!Fv<{;`k%vKha+H$U$ zldDLWxDV_m&m$ciUa43Dk^o?6hA6p52Rw`;jRiSx(V25mkiA@t>eXj(tpMCmx8t~Q z$w-_5T>ZJyrK&Nc6n{QGaC z=KJo@1&{unD|-@%q*umC98 zOAA9p+M7OQY;RAgcFwIkBDTd) zdGH02r=YC}#!E!Gqn8^_r{t(zrMvh~H1Mo$Tkg%tQB>6P)l0ggb?XKxM_dR3>8U%b15np3TIeJ?m21SOr& zRa(``vzE=0cJ{j$>6N?&Zyq>x?--!+v6}MD$m=5OcqgG%H>>S{mW6h)yud?dJ_r&C z<@$>kN6HT(<{{!n2IIzRAK14yLFEAzY{`e?UX0gWD|gy&*gn-!3-Q>_w?Xs~$X_%@ zeoK_GJDF`_-9%>s`*F7nS=VPe)r9B0=@xw!$dh)hK$c0PwC?2&sYuzc*c@Yboj2Au)r4??2Z>=w-WxPq&bKREaBaRo0Lz3e3Mz}b(%R9Y!Mz9!T&8WQ2w>p?(gpls0GawzX<*nx}q19PpjTB^v{;hqA zqj-93LW-iM;tv{t(za7$&denD)+3k!wpY86yxz(eF<6+&IbiXyV)`q59HV-$FeRtP zvpn$>OSjTK&?@VA2|;JQ8pPW)pUnJYMUH8`7)q+gf)G?+9>hV$;xqSwKJ@`vl{k$h z^{}4WxIl5h-Z>C-^l)4Rilj=M@dxB7G32I1_HOaJNa@_1cUmD2CI8;^yXiR%wESAP z>%GSmiRn@7HAZ5KphDX{b42sZ*|b-A2sUTq+wNoclJxYcS@ zeM3~P?W_TGq{kZCEDL^be$_@a<$xl<&g|Vi5T=E9fM1>a|2$Myu|ARl+xtEVRF}=} zLcv^cjiVKD6zUZC-73T2(Vh@7Qqh?YHb7%snlp=2V`>vCtS5{Ufb71BXn!T2z<>ev zT-k^1Bl)!f)^d0<2m3Rw$Qd`GiH62qHwzZ@IWk?KI2RRpWHT0t;VH6kwyjzETo~X8 zzuo^(>W4F4i1eJ9oj>%_$Bfgne1{C0b;oJK0YVuXSnfy3*l$)Ye*Cp=^a6UB1rHzY z#vsGs z7)~kIMUk)6Lgm@&>S&%o>RAM(GhlQ~C`e~;^$<~2*+;ECqoKO8{4ew4%hV^KS>m~sl#HvjJCqpoqgYt#5uTpyJ zF=kc`ixptYmi{Lg>xFM^aY)OwXr{JIE)M~g2!CSl3V3;WmxJXPLAij72gKA-S!avCKM zm|NgZ{qdn!%H}FntexlZLcusZ-LaS}aC=L;!_64?z0LHJBa3z!dLT}M*S1kg3Z zbDId*nXhV}@PFar?Fd;+(htgyieoJ#>L0Zd(u@NL-FYGD;{}@nj&GIZ|C305CpZ~- zKiWmzYfHg|a^HQ8-d2GV(475cC0%Uu{mM_A4ppIY$aEY3V8DkFk=s{bIeXv&xqzuV zORfLd?fsGpJrGNi30XGoAp$+TAQyAfuh*)$S_t>aeV52`6Bda18e?I?!#5RB@EXdaNCy6k2z)- z?mlS`+Z1!{$3fpb|70dBhc|2S98udrk940}pP-Le9+M7{Z&!l`bB&rvthJBb7SR}^ zl7bdn$PMO#CI4g1CR1?s>x!ZL;-=3io^1V8l;@O*ojYliLJM9q+at?3SN?&3M9@Hb z19F(S6QIp68s{N4xblpKWk5EKK`>9+d5~i#$Y`4AuD8nsI=I{y{rPh52m8rYKyHEe zoDUb?&0KL_$qVhUdA!-2WY>7AwcY;@_-e0UM&?-2O~q={YckRa8z2AaEi}1{eCiHo1ddgex1FUxJHqxtq+H1pg%WbU`^XZ0>j2&+EBtYC%wFp zx6@BBM`A`h8>HTtss+GIvJ%UfBo>v!GxHKyXS5>IxN`KL2K$K9{STxaEYi1qMq<#H zbLAg1BBSW2yfMQ)jg78pQ?BFpC>^u$`>tQXX z`w9+M>k-81H?a;gLNS~Zo^qtrhRZ@Jw!X6Tv+6^ieM>DhK%Isx%!~os{avdn&xDr}B2tk&?Dkz~?AGB{qI@M*rQZY}# za9!AopdRjVDjR3#~gfTt}AKfD&6c5uc>L%u}LbIQoPi>kEjkN;)=nl{$%4 z1SD^I)_Xnu{B3sh<tC^KqCv8C{|%+wo^ zg8aGieB82>&JLA3I$7W0cKQQ2a)WuA{`o3@EbR&T9W%JrEZzNvX8LgikO4uGoD%Fe z1xReA1fvC(MF=*O8wOksYeZEiC8|VAa6~yibB39S_e`RLoi0d6Sab5!MvmmR|Zbda__)bHwi!8 z-B;}Y0@jY*RitLa^@4hyZ>SG4{qS`z22sCNBBIAnkV1CZlp{Yr6 zSK=XBKe_il`iB>c+%0Y4#bF^g(p6d!$jtEuP~fY~AIVWhv;Q2SgruMXulyNjRh^j1 zqel&=*P(7_h=c7Uq`LBb@?>q(s_=*z9PKXiJepM9We3X4;JBLawR=Tj;Cp^B00a+1 z0u2zC^22cRmXQFw#?Bia7c4t^$=ckobYVUG7OJG4`m<_L%18Q^s-S0QUFcrz+>Eq7Fk(RV^GLN2&GQptG(ZxCZv+@U+giIaCaS;)~Z?6f+ zBUHd{{sr`Rag`6Sq${IYwMq}4qp5!3az1VHR)=o{AJ5nwSD*(of@?4-ET{yMRQZ%$ ze`wFVP^5{QPASOxG-Nti@&!qG!U`D1fv->B$ht6!E<}`?V;XEX@h^bc(#-bM!h*R} z$>ToTOB%$p3a^+;ETUa>bhL2=2z|u>JEtnSj4Z~TVB4OCUy-Nwz4D-yHE_`VQ0iHH zQ{-S`-HyL2u;PZ2!a zgx{1`YDqjf+~6_+d^m~{W43t;z{KIl{Gp%`TSnTG{4Nyk-=`d|WC73=!u<=FF91dC z$FM|FLska|$bQn}X?oM*;hPdO*lwm?E^edbz6SL4s&2%Pc3cxrYT*GyzFHv~EXVfP zJ2G#^a(sSwOWqHOu3n`QIJaBoCB;)nYUo={nIR;`5KYhV&e8GWk+*RIslbW}mYy;Y z`);GlGW?9X<-6iNF=Qr1SnGDY4ksv_GW`nG`!E98NPQyU=GrDrGY!^@dYrfOu!2{d zNne*&(@b?4F`JHeAc6**we-H~rbTg-bAKrU7uN7%5t#d7%~=2kylHH)>^hb54(yyW zHOIsO{P!*X@z5BCu6Q6$111n}sv~lMRK{Yf;8r^q3y3;O?sjKYlc@fA?@$>>B)=nT z|B;~pq%W6S;V;g$Rty>}iQbh4ToGp@beB%9*^(=0E^ZZfY$jSUV>d9aWh`WClN`)g zhsQ1g5>==yVXrz~Z3o3$@b@)Al~o#7=)M<*)^cqw#}csvcO0(*q99?al3*F83ee?K z1;^f^&hvu^9JNb0sQkT)0k&Te>-@tJ)7K7+7p-*(SabDp?B@Evd>Pd#K)|VGOf6E& zPgDEK_tpruFM(wX`s_8D)+@s3362>F!ye)aXGMr3gACYS76WKtGds{9PMPgsYPI+v z4vOtAl2wfqz{2TA3f4wsI50;dWhh|n)Fja40EciQo=+e}dzMzK?5<86POELX4DIeM z#TQ^T3X85AoabCkZwzNwfB!^R(S1wYYRI{JzkRQd`&=Gnejwr)wehpsnb7-Au`0;w z6w3mAzD_a^7VShE*S=C@>5@b_TRR){ z8q%%3l$cF^z+!lCkF)K`WXHb`!Fa{lw9enX6^tZeyl)q%Ce=mBZWI|n!Uu^zM2}{L zEZxQ!Prm@{8u0%fwFRtIgos&Bh2*w!8KSNJZDe*13u%rtUpinrqOCn{g@o();V*2j zD`H3`t)+N#3df2C6YJ9GVX(4cOmDyQ`tY01L;=*4cV7TSskMu2M5lhqmbBohphLpO zNihO&i+t$j^YnBd7w135P{}sYjjBoBT9=$0RUG;xB4K(t9Gc(h`$VNXcekLh{RM!3 zLRRGa**ke{F_}h?X|X`4ydtV~wX-e)bVA&Btsc{Pt_#yhC-nG|)u0^oJo?Gzu0Vju zE~hH4X-s6AOg7bkF5nn-ef2!OkA`g+PCy!vlq)o;<#ldYDGb-6}m(% z-;zbjHr#0BRD`n9{?r!-s72!sNS4O`Wm?K;1jb^6IoyImDogJRq#r*r{4LH^B443> zMO4(|dh7jrzA4K?9KfPvtKQ-Bb!5F#bwm> zn6C&R2PZ;mIf-Sgjq|38y!~LYL-`Qy$eX*YeNZa!y)-~2x#f^0B!}iWRF80<1;Mk% z2FB{cA1QvjGXPAU&_{!{QMzxT^(p zF7?X8_2G2JB{a_+a(M9uwTtK}s8zP5^g`}eX?2DZ>_b=2rXF=Q=mbUQ#aO;@{(sjU zD(5p#Mj=Ho5ua0Q zJ!uVt+?t6iAG%!*ZRa68+~_Gfw%RRN6@zG4A$qGYw=CdG0{ajgax3ZVm0&8;Uebyehx&zhGKOfAG%_EK{R2k8oEO$Oa zgFh$MhaGVS8+;)#VX3QT1++#nVb%-h)j0>*dY9>Y^Pm6X>NkU_fS@QfNZG&$VSeki zuoSlyq9BK2OW1OhjLxhuQg#DHU+4GT0_K2#*bs^dJcMwj0B9B39DLcq+JCPWLb)HJ zVAx^+DI_*+BwPaVkR`9R9j1T=4xQCKkBGLF@B_|8nIs7X!?!qQ^Bp9H-_GyX*OX}v ztIJA28|vA)U$HblN)f?nYPcSWYDk{Onuxw>Da}HpTh%(Ijad}4@CgD~ZDoqRX1xt4-(S~@2N8E-=AZo-7O zVT5`&+0+4ph$pg;zIro}jEt`*^rqr%1a{y9AA4imOe>+`_#qiiui(Vrw)&mdEN#;rCA?q@&GJ3j@!pv#y3rRI4j_b&8y8hs53T0p^^nCS!u)jN>l zeej-|Eb2TZ(o*@s0e>LZw2Tle&l%k-_|47f=jv^O(-6dOOtULD|CLo_pa)#EN|0C3 zM*ZxuoaWEgJYahU?i)gsCKDF?fAu0du1|TTq|qWIBQVEN6p+f-Z`4jGa6J8kZlRdF z9rDq7DNILr7Ub>S-oIRZyCXM|hLb^no=3<670J?lmbu_K2;;`(W$V~b!o|Xa6u89l zJ3x1n5Bu{n(r?Ov&Rh{9`?%8PW(_R!-h&LbSz#LCTZh0sr5{GG+lXPcv zDOj|1FN%+5HRrQ-mXD}hQGG~!+!4;# zY+6bsnB-LX8`Tlwy|9<^0K~gd`TOo!Px}QLJRt|zIikV3p^04WA{_1y?x<6{N(A8E z3%%p?N-$tW4!3G;}mUJ~)$U9*rqZz}D;HW|_bDc_` z_$_6=U@BWd2CAskp^QWnsc5&26HjI3MQ_7z`huL`esFPAFYKQE{%Np^2MSuapictk zDY6PhHW|;5>Y*D?P(dTpxi#zev0cDLQL##jKoIl*|D>*<6c-)OiW*N)TB1{YDG_b3 z)1^zFzzh)o-f@9*sE;b2!8;V)HbL4^oZ3tKSl3&+^*^Fn(**C)?<3t*f+LH9qjEe{ znJI$%83dCIZq8re$;Hq=TGE3CFj`8V?`gA-^)z8+p<_ExFVQ206ym?u(xXY%PMy|v zau09;kc17-ovB|m?K?4kuxdI)U7z%w0<(4X(va5k>Ps@Dz~eDkHX)sz>vh8DIiOf@ z&FS0r>%t}srJKsS|C6A_IGV7;=&i!t;zVfXk?-fc5>EC6S1mq_ZDGV@vCHdZQ|fRn z(DTy&p1W>3g72Zr&XFxOjAct=GZ|5V?PdI&xZK&`Fs+gfMarzGa9*EJbF{+q$pXn*F#Ic8MFi^=?I{-Zg+45fCB>Gmvx&T3b#@DXmNK-r-3w5Z^ZlYWVX`^| z`8>mW&vI#HBN-J2ojr(-lC7`83j9BP5P)MR%$GF8{qgKJ4ik}{$5gJ!YLp>5&#T3q zq#P}bE?WyXnx__U<_urmVwjEkbQc&7GC(47ilFEFsYsnnt1CiW9;XfKEAM7;xdlmUfOT-3M zq_-1E&7?=^-_jM$7P`Ao=P!Yo36h*=#n}X@yMdx1KSvR%Y@CMLi>m()KHyB+Va>)O%>qhn5eM_}a zV`&Tf8o5GkRF%knP=dt|PbM+U(3S&vB+b>h;w8K`V2$2jK?M_GXqVp>?3ZAl>tB3b zgy5O7k^8o%tJ-)yw8W^kt?{6V2P`k#{`C)%j}A>LF~EL0nkw4ssh6~_-I-RB*9=y{ zOOJt(Na7LYsBKi^?^Cq@Ckf>vFE6Vn8z1@Q5mSOY|ELY!lHxuvKL(Ru-&^_U)G2Mu zE*>os@EQEWe~`h{rolPQ!d(s-851KNsOP^>x{XEs zeAg`6#;CnlpdWV~%xLHzT@GMBF#8+RMkav#F)#r}%a0xU5W{lYV+Hi85~$cjwgyrO)da{c!Ve1& zq&zxVr)xtgj+OzhQ|7T&kutbm{4wgBD6><`;j8%!wl*%)yfcX-^NR(e^af+XaeV?V z&CXL-_PLo8*T8?~2KWID&+>K$rDc(eUuD0&ixY#kE!?f&IP<@mV zcMApzL}@024x&g$JLbp|KT?VY$q&~kg78UUzIyVi=P?H0n0xBNUhSHt_#+jaGFaAvA37vuV4Tt z3sy(`WaW7X=J}F%T$_W8B5PzBiYGJ9<^(ZVgN2BB`jo6lgU{zH!6FLX@NuK3lLZgiG2lzJYaoeX2ew-EmoQL}=iX(e(NU$P+=Ro0 zjxK}MU<%+06g*8+^HwbBIj?%;puTPcO>#0X*EMGk!^l6%;7WU z(5bS>U=8?~P@)qUT63*8e+|;WK*d!$B>~?VgxSZqDl^lG6sU`tc|nDjyb6*?oWs=QQn^%zV&mH`e}nLe6*Cnz+B7^S(00%OCm$AoG2RrqcP2EOA~5K>4LysP^=vb6n(D@=SNKYX>UVKdUw`&f4!~)( z`CRJ8us8wSF1;<}X#fN?6|hhAGh3v5ZD|AXP~EC;W?3udv0-*%G15{Rt9@75q^Y@$ zzi4sJ2ja*6>H%J1ooB&0@!?J^>^R#o*)=psJDl(_Q@OudscZ zCUYOU{s8>g(!f?WSm`)}Z6}?iwv-$3aDO8S&IU_8uc3mL7AzV;N^ZY&$pmzKL{+#5 z*1Kk|e#?5SG5Py~B)xeVROY%{2-gYF$5Q9W8|6&==nmhLS% zcjlryZiRJk34ZNdLwB^O?{L-h1?Y7d=;#;Xqr^VMVJQm;N%yehn#fS6Lw%I+rV8Mjxx1p4He&HPxD>|uTN4R3s#=;u5jqp zFk@d*e_n;ZCAQ!i7+egPrQYH_Gh-^VbSo~nM4Exd8P0liwtPJHgT!B~zq^{-Q(y#W zMJ*M>NeOLAV?||QGPP~Z-$m-ICHQJDUvses zketH$0aSUHdOe{@ia=%MF|tn~OdoZ}n8~oM)X`@cFECTe0PT@f3r${+N)%=uuNCS7 ziuctl7+?jjh9x*KlhHb><7q0uH}e3v*xSv+x#hRjtxyjy?LSk7lprqoz_Id6?=D2I ztFFH`uz+t1*mx%QY(|6tA_Hu~TIsHj0occMMdr zCfFK)DOP~}%OM$(+0s1BRtZ4RMMjUbz=$Hk>DRJi_js|!pI|fzF*QdxAWO{iYJR(IIs2k!%PC$Ng+gU8P#AUbA}=xF|qpAQM&njL*Zjp$jUo{CeB)y|PssODp}1Jr?;ERVT#j1a%Zx3qdDc|LUaMZi{LxV+ zo=$a5S_3);DTxsl}bKuaFXB#*#qDjtLI`3iB7u8ktb>cCV zK=Mt=fMal|e$Kk6eX@+=^D%dtFcTVF^Bs0Qy9W2ET4;~iU-`O+Ncr#8E}~4FV8vai z21GiKav+U{8B8RFoQ97XW0UK+axS!fO^O!f+(hXUj&bt7+7HuQ)@7=Ltv9@AvCz%rLuM_AB>5-svfWNY zrO>TurM3O@+df;BBQ_bwWW4%@riHVZ;I~J8h(SsuC5|&vDT_;*p`KR~2z;fScNxX6 ze9#=o4QG2Z0YKWs$~;n9+y{4AIbQ03>-_7mAZiSu%Jj(ZO5qVi0&({cG;lziP>VtCs^0+%^;$K zI{fYG3U%=rx`p|sJy$OINcI_5iHAbl4g4IE>K%2gw}HSLwSDX@WeRHAgYcCUbQ2F6 z_0OXy>h}-^3kFA`NZ%orp3U3xot8Z2SBM}z_AiNOSqts=;Ko{jEfLm=y^}%UK`Ic! z6iUtqRqr@WnnNJCB3y{5o#pLQ2bGFX91>!4en@^k-JLIz>i`BZGqeb;V8jHOTNr^de)qJn+oR=bol$j7({cG zi{myO;E2N>Du=X``~}NURi$3Nz?X*(YNgGe9Ju%qL3EUy0&=-6rJ`OCFBIOGek=N@ zKd2@&9W8WDWJomVbcRb@w|Ng6Mk=+PC8nwfB_RtEQj>o0Ax9%PIZCE>1^^7E{vy8I z*;37DjmE0e5T@6r!s{*hQTX3!G=v&%8|CjZPttfzc9axzZbm9B4PT0?6Jg#gG!?f) z$0wqO$AjaF>q5clKA;a3go`Ibh{mWxieKz3?ddD5zRyc_82zP@j=aPWv8WsEOXSrrF5V@lVI)300@P^ z#s%}93eNFxm&+zZ7Z<1iFHx2HT2qq4w)jC&q0gn zRhFIFo5R)6kTIhiNo~6`6->(x^6ce^+#MC?uqR9LcOn}+(>@$h4N&1X@;Qc(QSkIo zRF=MQ1@c?sGJq??#0hUb*XI{RTrN34G((pfRWbKe!}rs9SQ0Xn z&IWP>ynmjin0IE@KpMG9I>SdsqboZH%zGF&eQoz$o?}ATWTrlW8?)fAf|;oNwP$|k zFxxN3^3=$U-$jVunr}~!Bin@(@SYQ!p8SGwIz#o&?8#N-h@8*M0F5fUm2=0P>Sck! z{V_tHBMx>gGxLLMBIF48{dT-qX~PL&lBL~g{YPw>?E%30f3?1>2vlm}_$L?O%1z4a zpB()QIXo<5f;u5x+0~t)W5CeUFUX(p@6d5UukjeNrywf;3edpUnWm{4-;c_TiVaZ& zI;|=rD1P-0;-;jYNrQ6)Qec_Rxue?zt?XN7)^KnwDYH6C1Mn@DC+n6W&czm*%ILcA z+u?C$v-?FtNs@pt=8d1b186RG4>j%&E zYg3$7(AqEizWz%BY><)kA5-S~HFc>{Q%CSR5TiNxe{%WFzqv!`*Nuk(r9$Z1l~--n zVD5fclCZyf95IX@D%rMS-=%TrZw|5j@i6~<;Jt6yBQGwbc`a;$`xX$@pA&Ao?POOEtmUw5xfv+%;uUJeHM6(hXf zip=$hjbE()U~XC?G2b!W?+tgCG<=Xevt=1zj?7F>&jQAyi?stvHLdkgLZF&i23gUVie|h?9^bl zj$P#3;+&kVQKTfw^v^uzOcp;GkYJ)b6$Bo5yN|uR_W3S#u1cuN{=3L`x^R%~at&pk zbN9of1`hZ^1ds{Zt`8K77vDh5PA{+Z%@hhya#kEMGBNHH@uVIAMWNY>)*ppI{Vy$y zLi2yv74Ch+7+NCY2^|wvQ$J12 z)}-QP6CAaC_nHGM9)URJqZdj2Vecv2&lF*QIcb+QVU(9y=wGCUrSe=MWtDIIt`ZFT z8TePL--idv^It1a3STH=-2Zd$y5H-n7}pmC+Iv6Npcg3v-G-~7cySOvLN2*i~YXQ~9)FSI*l^307_54tNnat7x> zDgoaN#h%{>Ii2Lvfp0C|oV4jIZx<%af(sb9FYc6)u@5ec(LD&zM)YdqW4rrFA#^wU zJ?uB)T&n_un2*4bOBLc!=*e22rE4Bm%N~HWQ+dvP12vl!JXBvzV~UHW`HS>}L=TKvAMjxNDmZJFFip_pM=GjG0OC~edVm6*cu74C&b3w{CO~?--hh@GkmEf zBtCDkT=|}x!xO5LIo*&z%kqE57*9N~q?C3u`lD0w%DtG4=F`Pg!-Nw7i=El@Ftj@! z@dr&X{7T|xGir=A+XUm^OwIuApL_LtDl+$RjI3|&YgRztlU5qPp_8+A>ske`%Kti~ zK;}TTkL;tnbTeZ}wJ@JyVHzeu&qY2Nj-nkR7i#|h4FK-v8)i>^42Sct&i!}9CEQ76 z(b-j{m(Cet{V@+UzywWWIRCf4uz5O1=RzdHkDul5r0j0aL3eBngVGf#8Fk;b6a4~; z2w{OGNF=@ffS5oW`jt?Gv;YD?{lEA1V+WEpvt6Bshg1pg89v{8$xrQJ6d){mZNUPn zENHIA>>xl>vQdpUxABtZfbI~$@j!!d&J}}Y4=i;D^d*(q_pfd~PpGI_yOcOPHR?*M zHSpjkRnG}{O*uPL2CT+H#d_rjGIb{3bUB9c3vmBQeXAbx@ z60|$7zlG0yc8nBZ0K|G2;Gz)t6jA9dN<(?e5GER$)C|KDxg03(`d^uyQrXC7f4G~W(hT53?GJj9n)@qGNg_S5DVraT@Z!(p)5I+ zFPVLz>kAE6*-L3VhP5HW?NReoJPXpbY~N)@-}rXLS;26%A?#20QS&oaL&OoeZBLz0 zWI1%LpN)Zu$j`3*skhIQ0d*u3pA(W^0vzO84q(%Q&gv!-V7W5a(s->CE&rc5Mca?7 zP$?BFh@L`Y)#jcfMP$M+w*S%I!=GNPfV@qeR^o){c()q@w5R3mUJE` z>Ahfn8iK}*Z@`kZcP{%gwRnLCf8WBIH4o$3j5H{G&O3+lNS3rGIYUHqulKG{cyw*F zGL+al=9UaXYyNqU$E&v~M%BcEV8tF{`rZb&8bjsrJg;9gEm^a%r41 z$L8Zy*#;E?Bg!`) zy&{89fZWX<@hbI{W9seeC;z^$(ENutcX+?>v#?E+1lUT4DpJg;(TU1jZ%Dme8A)c} z>TgS=KU)Nl7WQJn=iIGUJ7Q5=mX!-PB^~2=SZ_b7-#Bviq>hKbXPKa5op5N4Jo>a02LzyC6u=??o~dyNBlJToUcA3F~+t1p)D1f<)oLr_Tuhm@Wl{jg8n0FpaXbNPM zo-H1ByKhL=CQPqob=W3GQ9+N34U-3L1q1DF(f9KX7HV@e$@(es#WGV}lUi7X1$ zGMQ1Lf-y(2nEa(Vr(AXC!1@>v4!=`C8pdyMOo((RC7e(wnvD7ROjH{J2X_Vkz=Sdf zM7ZF2GVO`8VnOibQ8ZRe8qzkKu5+VM)z$N0^s>@lrEgIDYXv*e^2A|CRmxLyJ`!jr3NHcDpcHl||j-Syq3ymfpA z*J)KY;#u$=>m06F0>1*`;%`eW6d`R=H&P}T)tOAy1gnQ6v;+NvN>}>M>ccP`4oVX1jPWH}ADOmzvH! z+Z_F+JkvDLt=s-K_=Y5Z8?J}p(<>$-Y1O&L)tQ7mPtW6Z7E}Hopa2L)p6nXM$Tc@+ zjVQdW>jk9aJqKB-bGy9mV=k8rw`+XMg)2Yc!-!4CXW`1*(HKRbjT@wrl)yif{IyLQ z#W9=yE=Gk#chU7YWKd;P%ghYwu)LIG3N3!OAbFN}oZZazOFRjg(h!>K5ro!vJ$;n; zwp%wn_G17Tit?8g~&c3>EXA;qS(iiav2I#sVy3OYji(uPrd>~(T|e~ZS>O=5or zD3e_9)g&I}z4RpAv$1(|#CP;!%I$52d+NDSn)S}ZZB#lRh<)BKKYXWzRQboa;ZAx~ z+f)PLp7+lqpnL*hVIT|g((?R5T!z2{%HS4u`aiV;>3&adbWqp3YA*9&oAt|GcihRO zMOPVOP|vr6an9d~7j2s&7S8ocG9CPK4WS_!-WBE(oBwMy(+n!y^9T}6G7fPUJSm5r zeQh{X$1i!iK$zO29Qp<;Z>hl24pR=yz0Cm$hUBP3{{ek7$7^`*C(i9i|BF z2c!HU+?T+2y8YK5Lg4PYX<=o27Dv>om`UuTYCpmk4H90ANp5P#f2X6Za8N!1yI|aU z{{p0f$OZkv`9vv{gs$gi4{}(KRB(;Qm<_af%G@9Pd=@*7*Ltn-?bS!Q_)ntsMIx(3 z*^_A!;eS!-GvN2WRAUtX2yx256?oR^BVpDZ z@c#wcmr~2rYR&=0%qycC8wwwUlKAb)a6f>>h&fA4as5^zmCbFKmOE@~e;DUS8frk> zTE~v_E}Q_7y)3uCPPRupUQLwOo%bJlzJ%C> z5!vux)*m*vcpF{L?M=$nJcVSELc6c^cR3f+)7Q&aUxuevp$h9i6rgjSx5?A9Hzb=| z99BhfG;^D-edBv)uJHjrhbe+5c7c*55By7m3@p-A#_rW@vGbjkK zaPfUGqOk;>WBu56lBU^T>#tS#DAsrw8BUq7GsCKCLdXbM}SPhlXKt_pIK>*>PNh^j@7ISEsU@y#cxHdBB8%2BC(`7&H(52aL(3 z@tRGqwwW|mrISFcufs0njN31shEp2usv2s#ydpbyaINfOT00P$~QA|Vo6n5k92tj zL$nKac;J9W1qY_0r~`|&o*JV6dYMsQLvT#e!=NjELx5fp z4`3lI8n6kxv@-k3isg*K>)-318qP~rr&8lNRJ{*l$IIzX68GgGi@QHdpoQfjMr|4NF zm!_uIsP@hF;`f5~qQWa$_94EK0twOF0v+qwXdjs@U`leGRC>SIvAr}Qyuem6QsN>m z*6HPbwM@7J&qa{&IZT>;kPT;l+BDoWSbkpQS|WXYZyhAIqD4mmr=Ct7K+P93!?~2K z)p@p-h_VYg|94F0WV{iUZ*K{S)Gikd#LX}ekzM=pzHAGj!OOnQ&~)PyQt!nX#;h>x zmc3L&$fX2)9a-DtZeZLH!g)UccUoDo?Qo&w(xt6YAm(y#RV+ zz($)#D&GBDW?`)yCU+~V%C|}V zh9kK+Yp?tW=^L%B(GqpjSsfo%+l)lDFiyDvPTl??BG6ofHQ)+AT8HsQAr3eiB^xmD za-t+Og9^Lr9rP~4@Bf(aFu>}R2A{YN@D-F&T;_?-_In#5wEan`aw1R1R5TExWB-(9|uBu=Hz`6NOB!tKXniL zF+yR$TITGga8#8gOMx`7E+H=SgX2M}2h}Lnl%>HRb&QI947BXb-A=}zdEPD$N)TpZ zy0l(?&)p`_N1tjWU@E`M)vp%28E zo9!wktTV&5n$b|ljzAbmjC*VF(cW|%Fczq#o)U&Cs7F8;3?Ec|8gESY3IbNq0m2e0 zC#4M(gN8L@UmU1bG<9-pjqi^1jjC2*3CR3B3kqggcZ62mhDWfpeB{Lz5!x5dR4vq$ z?Zp0-#AS%SP&+=v{OX~tygz+0zF8^Wik#Yo_xN)V`O)v;i9 zfi_R)1tR}zgd|9q0tpY|2}uu$Azf{r%XDJ7)*a$>0ec?5(W`hKsx2UUYya#0?-UZt z2BvZKL;C0f%vQc>cRR+;$wesz4#(C$+$8WCawSipqVj#Ef7y_H zwr}GWGE+h;qu6tPQwoq|Li0T1cgp#&7`q|`_d+F`i6!6UbPMnUI4ckjWB~7_d;>GE z(@Xp^vglCqv1LhcAu&al5qYI0qnG9(bv6G9=xtNA_MnepFfYiTcR?u^Yy=S{33ap5 z2Qw+26;rgu(y70I1KI!7{7rC=@P{A6GCah@?-pL8>Y zNXJwDAE0&(i`~ZU_!0V_Lmqn6LB$)S5sM=eYeZhl$X(O>`OYmyJ$i}Y4ntQKy)b<7 z7^EXW-bC}FGe}>}k^7NUg%EvR?l&3+aP6?@XX;-gf7=h>JBbZ;=z5wzP50&NCvqPj z^Kn|vWRTSqoV0NQG%shMVI&dbLt%&DVgT!?$oC${oYQqb{llwZ7Q+g_qK+-U@yFw8 zF#VE63Jru|IQVd1L3w6%iZ|yiXKS@HYqFz)!80Qumll0OF{WL<0hmV!t(V=fRHHF4 zyt6(zhJYweV_Vr|JfZtF6bL!deC1aT@y68a4A{Q*u+@v< zD)Tps3RrzrXe}9cxRL${kLQ zWP#arbn^d&>;8cX-Lj)0_?zw=t8vq9Rnp{f;F*-DkhMLFw$*9t*ZDM|$y}F&d9ds~ zww)SKbgr9$EG+=|hZ7(5DA3tYLn)?o5-A9Se9JI!WXEr!`%o+{9bJUDOPf^ z2s^IDo*lVE=e(l251VI=?+Wj1Cl+xJBL9h6d=^KnL&@qp-(+yeK3ry`q;GME2Q!I) z8f0LXkO_x7=we48EEiTfhD?v}nFP0a65W;#YwmB;L)N`_%SM$dI&4B ze#aw-OHoJ;|1p+pnjKEoMff>d67vu->b;!LpNbV~ePH)lb)`37K{(%9_C8ZR*Mnm* zBJ@$X%33R-*d+nZK3NNmNn!!|Fa_NU;TYOECa8){M-spfI^S+!h~9Sn&bFVJ{!r|n{Zy6RO# zKRTdtqir81ulMc!2n(lmHv3kduC@Od*e=V2V$s4EsQNSGxl3BZ@3*AsV^6gM2|@F` zbOs}vJk{63s)!_T^Nm5BtOd%nlZa0srNPmlurT!sk&KO7$|&Y433WF1La7I}KsQX6-`vUz)Pl59{utVIk|U0RSd zvxr)*)M9svvXzeOOE0m&A=zet=owoW>xr+%=$WowtK2?xRK~muE4`gucP=I(U=w~5 zF1q8}K&MTUA;3W>h`X#TWv~afacEsWzby+f8?1P8?_B)M%z?U6XYaVc*~N zUCEJm!j~ePxH(PF~ME zbN2HSuayd z41oV9;ePIBqu`Wl-HvmTa6+Z9_JA-jJl7nOh5O13mG6+0++GhlV=WQj3oGAw7?sp5 z&%3Vr!+?@ycz|~;t*flpUODEIt8@lvQ4m{-z*zxfoCfu4jo(dM4T(fMSUd63LeO+6 z$U3zC^o=V0MxA#HSofEBl9To6*yHqWlS4cbMc>!qje~DNtKj|&W&Zb^2s&=Mw2h5e zc80GeV_8RT$2l8+6b%3se2!5<`yRogz=6b0)X5~LoI!7+ti5v%({rV{gC#gC^U-%o z%N3qwA|2n&O(=jS`i#b8Oy-foYDB3iAJ~Zf#~l4W*2N3*1D*QG#fW501$qa*pL2Q8 zIGHo}fWu;)h{Lmh(^9S%ENI)ql2A`4vB>hylZtH=$Qo`-#qHYo#z zpZE}7(4~Rk(9(f>rm?e(55TzoGma^!I4fv{v6n-`FsrF}C)}L;p_-tXRQ%cGtpuhf z3as6+=RCha8k@(3(?Gd0-iY%vp&iVxNC{4+5rJM<)ZnLuXbdbLbY{HG0liz%0dOb! zY@}1L4XYJ#Llq#2QVeiyzzBO93dd)gbKK;EafiTA(Iq6lH}idE)v$DKhnBM0)lRQi zVTXKeA17L&MXBg>_w3y~OCuV;H-<&pWtd>| z^3`(DA;hj>>ia~oA=BL{YFm?&{QI4U(yDI@1pfQ*mMs-C)eqq#ye&j*VCWpn%dvKw zql56mY0()&^ECVbZhZQIp9mM^Y*{f$7u?IngB!QE_TsJsM=Dw;udj3DKre7rzmZ=i z=O2zDHNQBeI0PlMo-X0{N`MrN!Kl6Bgf1Y;TZDoqo_@G-kJ(Ig+czA($!=Sdv4SYg_xi$ z%fs1U7+vMYDU?<+2dZ@nj=k!-QJT}kUj`Pmg67r*64}mhs8AEuvpKh}-hrqSZj%Ql zhScF9IWC(q+1Mx~7%o({W$ASwq?d3ijqr_Z{AW*@+Z)K{egoJ_MbCGRFp-sV8*E!M z?=QVcY9__qbUWGMdVuH_DeD+9vjok;3j6MdW+=4u$s+m`otR3%LM zEb^t!4kZIBeL1cDIV-Q%E~J2;x2ht0^?hAuQ^d%9gg*?tsw}8W8&c!8!hW_1-~}q- zaPuNI*$5ZF4T&oh3xy1lXv2%=+-mNRW~|K}lQ%fUP3qHK_+~Y3q~FgS*Vf`!63{9v zvvxA+JcDVF{AX?|xm_u7djK&{Y^5N@Bkk~k{t z0>{I5vh`Qf3X^PdXN|uEn!@#8LL&l6ji!lrY#Py$0`8xpiaATb9vgfC7ZR8M=t0@< z4y;~i;DFL2mF{BW%8hJvQUQbZ?0ydEK47VMbf()Ua(MbKMd ziyY+IRCC~)PZhvNDB=-VAr*e|vDehLv}5`YNv$pDUS(Pi@sbciU}sjsbqur`2s|cAksz0MQOtbm z>ar&lG>aVv3Tu}f%{z5p z`EDf@$0=uo`z3h!(pNjlGfd{d@3V9GEs(qn?F+VRnP5)O%gw0!Sj5 zt*G%03gEcIen8u&#b!|?!zuCd@jKdcSTMA__ZM#>OWGXrc<^R)NBk z@h)|8w}F`*(EjnB+@mS76CxGAQ~jU8fo^NmbskTDe<3WjMX`R>NAL&tiZRZAYBsCr zxCywxKhMTi|1%e-IA^fRbP$D%){QRBe*SsMsQM}bDYEY51XOIgMXYyOdBZKWRXvcv;iQGu^rRWN|Gdj&l2AAy&P=Y#4*QQ zy#N5 z+$w(^a%H!1X5R@E^*uR#!nQp)InF;>$0aV$M#9we(A7qb+uW3$zoZY%`gqMUugTX< zy3fkT*T~JU5_W$uv0C45$znh>4=>|=!fQkE-NHGeA3!T3YriH3;SFL{;!YSqNa<;2 zkSHGi0#p#_#gR3MBxM>+Y^io2EP-0u!{=h#%`EQ-&VG@v4Bc$oP!fbL+Lf*W^c3R1 zaa5;V4mV74^yEAJ2r9j^Ln-rq{mOnR*Y$1DLJs*=cxk(>qa@9&gdX{|> z;yTn@Qn~e;=*EGV;0BdO>5R9)t{rde%JXvznP&2YC)YsSlu_e^&cKwmJz+#W))I0y z7tnKF3l^8;Po4ljjn=`z64^Z~n2)a*FCYN!Xhbc-FK?WM2ohOuf^K-3hIY7Q7)N|7 zYV%v*_8JX-uE?W)utthvyG9N>t^nrIr7$#7$sNMVQGsQ>IfT z$CWM&zNQ!QKb?2VmRA;f)aI8#bi4b@@%0rJy67%`+!{{a9h zb6WAvY@B>`LLZEeda534A?Gj5Y!-T*Rkxh9`j5lZ?V3D~+Awd*%zbADozsR=uqScv zB;%9JZ6eTo@{CiS-u9>!zkx_H4_UM5yhAkNt##xz%0q~ABQ3?C+#2 znwkMk{JrTzrxE{cg|)+_*G3OqEkYL~K3bbX=nUO*8jvuJr)c89cuTGKF`-FV(q^sa zl^5*V3!tQynS{2FNn-8N5`#LfMRZc%O+F_3_v-sW)GRTV^PzdbPMrpO)i`AkhcQk< zR^OEINI>_dxP*w{ltRF<8@Yu){31|R%LWtUrQ1s)D9P5pu0aa348AN?tCG%PV0hdy zSaW}KWvR|4aD+kqd>(RggUS-44@=zy_(5*Y4)37t;;IA2jLWG$aHKMo#C^+q(CPtl|YP@KalA3P@19xP=q4R3e44 zN#=d4^z8V0!_W+a2z+%(*u*3Su3mhbs(pq#Y4nlh=w zR)X-FqaefVpwWr0%2&pWMf!w=Pw%QQhpTFQh4?bkA}r zqmrd+IuB`Snm@XVa*R*?(8Zoyx5~yyQA5T6W-x#x5Y7%8wj)k@SA2w>P1+Ac~gw!ohQLY<#*e<{y7i`Q46g-QV16sHhUY0wKR*1(8|G?H+&;toEbq^`Uw) z!17f*%-2P6Qm@m+tl#9{+6SpLHj9xKIY<)ke+h>p#t^NG99%SXd#Dy)fkDAB!Tr!d z$Kr_>*>~;#C6CR#UN`r;(j!%{j*x@=?0HUUa{ev1o zmka$UYnoKuE{PIMRmHYiVES8mQ#>_$U>l2r139VNWiOqoYvQj({Jv``o*Q>y{t%hr*Xs`+EH{ig zhJ+|f1=5Lh!cca1*a~$R6Riv@hr3SzI>@wG-4_zObdw&raJI2AK~XPdC}XPeC`WZ~ zOF(ORaVW44lq8)~2Ay?mPQYU2LA5^O{)Eyna;jd|KcAKsUxv@fl`-bjsVRcDOL=s9 z4y?up4)H&*fd;$)!FHiHSKt&sYpP9>GLf-|cY!c3U;xsU`%}^dGE?*mWKUp(8z!^w z#Bp5zb&?fQO|Od(9P3{vhh~F!d%ltSFp#TNaABjRO*`47v?JD=eT4P2BZc4jaU=gqxWqMq57`ZJ@{}YQ(p3** z(}2liY*L9Cv7VwewBfPoz)3HU2@Lb>nbAW-Lz$wSLBQBven0ysuLjoyL3ZkkgrD&v zzu#*X%>CA*>`gHU%p||#+l3tjAy2lTRwE3p#n;G4ovE1}ga4UdlTcQ2_tv^nYU{e% z`jDGY!ubRZ`%T}TGfO7taEA6#m1^Kk+U)VTOl zl@n!r%Ce`|EjM-7+vm2Kbj_W388vwicxGfFby-2Cwr8kw8h|eY<2a>dBXH zF9R12h#2@_>}X6@D|ZzPheCDDyQWqb2 z$%Zmh=^faPSZ%wwaggqc7*zoJR%%0-Rq^i)e@?*grTNVOQWAy_-cK$@eJQEocw!Ot zLB?;_Y-4@#q5T84tw591qkVVZGtGx5-SGdHpSZ{jL>_$(UrJ(yw}7i~!@L>a&?kn< zJWd=r|4%~q+srl#f>&$Rn9=k%(G$X>j0BLQvY@cZboY# zZaE~m7#!dblZ~v>B#pL7uz_uRt)~%;W~!lIew2*|M$*kIL4($OrD-&ENFm$`tW4(- zgC|y6n{@MBCyFd7fVJWw-+2U~-l68}8jg#4H>VWvQB^dmyV*?hCLWXSoTBE2)gC=zz5l-OZ2|g4DR$g-)D#k^aTc`j{qHfSbV_xRy9;#f){(d!UE&de z`6EJ(=1)24*s&@52Nf8yyT(+dIB$qJT2nT#-ht2&c*Nuh3de@_> zlK2>J#(iby0M(^fNExXz>S#keV@ZlAH+n4#{Kc3WXOGA%peEJLrY;upo&V|gUY4&d z0vS)FfI&DB1Q4YcMtkVP+cEfLbq2_veag9oNQ%`cq= z+*LLv(pGA4Mr>sz?sx`$@tYcD%SxML8&{(>duj2L& z)HY2Vz1BASjKcMuCP8%RFaQ?4^phSc@`ndAy;lGO;ne@axz)WTme15?T%!;JS5ZLo zx>ImVCSsQMHq?X>!<)IFI!N+sT=@9}CMJIovS1q!oY){FYZGBv$cU_^5l1IpTfrw| zTMJEsuM8eu$VQxPlqWlz1Hr!bL8f1eF|V2Jf8j9L#omO2)XrNXTRrSxmwxWqze|=J z3B+afpUZr4#?3CCbc0w+MzaF17=yqrNxaQqCPx&!;y^tTFoL!vVz*>$v_m@h_HR*N zu?}tN%*b2QeSy@*(}dYEWZAm_Ww7^Ut&4$Q#xVa-Yr$|Ygz;lyVb;GNm5Qa15p>c{PgL0@E z1bw0jkQQFM&sa(>93!BbZ>%A2>%4jkUMZr3xHo*4bA z*pr;NWG`oOolGva%PZ10|3H3AK4j43n+A`(sb};ET%Iy-lo`)d0@VZd!}5WGa_a== zEcoHKz&t2YFwE37*8L=A(PZ`*hxLkuGO;MN`XDjvX$qy@1UA)WS32iz<4^d!=EB+= zDOu*!`lT|DY+0de|I(HWpqGL!mPd^m@G+qT#Uj5m2IJz;s#~%+6C5E4er|QgNXTKj zdC-QnAmcWZP2cG+4b(K;RcQ9 zbf#Vzn-f~bdPp%0>y!}kPj~l=^Ar#n)$fRe$(n5k-R^&PCusF`da}06!&IkH#J3R- zPY6+mO6#yGZ+IJ%6pLrlHEcB;s z{g2n?#vCPpY-nBSacO&`R{Ln0d!uo*_J4+!4v3ZwQ$1%Qp7aA8F0|a18^X0r!Y;lL z!Wx@*)?rDVs8~}-ULLIL(+kKdg3n1m{#Af0Flv_#;m5aB*DoZmn=)Nm7!i?z^4_v( z!2Eu*P@{xaP9CN{7_O{g92Oe3^lvrCUd1QCnlrOiuiZrrmAg>bykU6YHaWW^LjPYJ z`p;(>ReKQAC4E7w4Tr{6eYlB5!8DX?@(djlJ|afWZUX9B$93?=I9~E&$d|}iY=f4K;^#cEw1|fL+VC> z!PEi)cf%JN_JOK5hX23q?G~_*0wM(oqUpU&Kh$4I+J3Sh>KyEof2pyk$+W-I;(qJG z(Mo9MMrlSxHU1R;&I=Xu#+0O|1m@sKaJ5z*6POdUH{tPln=$U-mIFIGb=5Zn)A{-a z7B+sk+S#3-xdf*{-ED)W8)sCe$_qklzmPglLZzB^_c6aD!(lX%Yba|;l8EyC#`=$X zbOqi{Zs2Tj8SwrU`NGhc1R7s~xDJ5{yW{$Pi##>35m1KB1j&sH849qSbM>K3{(+lk z&*Uw?b3+1#Y3+OA3mbbPn>9jh047`scM25)q2X(flc(5`(JPL+V=>tfm+BUA|E&$xJOP%)G4i1aKjU`; zE5Gl7Trq6GXnUw*L|D)L0vHuOR4F86Vmt?kOy$80GeCHfv&W!gu@3mC1CcA4=~c_O zqXtUwSs+*l;g$*D|3B5L7AnkBbkLRO0>caQVV549vPXbPjjAhCrA=pAdY<}jMg+<} z(G?S1{IP8mhna6FK7f>}AjUwmCkd&}xf!?jbrh$esI!5Y3PulOrP9%*aLuMgG~EI=8~ zhyCQjPFvzRVpF#${YMTopu~hk25AYB>N1io=l5#wK(QSE#=SBN1ZdZuQz?LGK$Rs4 zk|K=MbyoMhSNdT@>E?|2rW}1~UE{R3dbffQcZqjH9o~3`J;*L`J*a(6r22D+gZeMtB&ej?XE8+i_uT|~_R01HybX-U;neVBPyAJ9O1L8Pw1;N}s#n1j> zJwnN^x2h+OA#l*lHEe5S)Ff}m(t{K=NHi~qZxZydTKeps7qRrGDv(wW|L#F**?H)7 za`U~=x>RChcZE*rZF2FJVQ{fGIpDSKG?owKTAdoHWlamWU(t8}jv49y&-;kh%oS3& z7Ff$|$)4xoPZ@8z7F3!>0)%ntAr(N5p`$4PXVTmABe9#y`EU^conipTM_6x| zp#cc+>7ivbEpQ5{ACBOu4&8=lA8W+1Q;p~Cne?e+7&JRxX6WXX8whXxhZ&g2GIx~G zl(GUv0|$Pz)?F=0u6i^(girSx`Mhy2)5VIyS>K{pZlj^e35{5Sa5(5Cupd1|oAl_s z;dK~}44kPCP<>M%;n`fp?!2WJBXAfo;c!lWXwUBjJ5As;+FTKkOe0gb!P9fA--Yxw z&S+tFS;%*n?H-yGrV7Jc^D&5RZI=$eLL=evu1(_vtm&$90F;(7>hZ9aQ?;&9-ZFhh z${Ip;h9rF3{{h}1jWe3bF^THtSM!2hBqjg`*7cPYLCuAG$-nwtKsWhgK)=g|jiCh3 zcr2;kOY>(va}LTW)AwDGv`TFXlSj22HRDKRO_&HujCIDtTlKwHrYLFu;UAfFS25A^ zi_9uEhFR!t=I{gL{reRrz6m-2J~Qg?B^-Eu6<+2*au4`rwm6nw7+GAZKD>}O^FiXb zxrJyLCzo#c@7c98mnFkg)vd7(D4)cau%yUW_j`hD?K|zoWVDRRs#@gzRZ`ftyTpS_ zYf!Y6^Q7$IvJqz-h^H!-bDf~-%BS;S3VCnsmW(c@)D48 zlf6ga!Zd*h580Dix+J=}7lzvsiEy@IO6eJ!W8&UZV)v4W9I}QRbHnL7z7hf6;t~ok zGY)+oyvo)wMo5*lf+V3I#dtVWw)drcLrVa!0d79{q-U#Xnn2xV>L0deP^7jcy&a7u7$?*p zcH12caPM0rwPii0w)L1Ynt84$>8tN!u_X$bBu8~9bl?$G%4OiP_cy--4c#-CN zYmEXtK@=@J16`DV>mqPGjKVEPXY}{TB^D|+!?vRJVRu4}lke*yG<1LV8>dz}`*dKa*q;ID6c zE=-g@%1hP~Q0T-;)Zva7hun8`AMi=DD)HggM--49eR8Q@yyw#t6eDy$c^+w%+rz{U z%*=^htIK*;D2SH@mFHMYD5(TbC;4YuO+@xLC82Bt04<{ZI}pTzcIBqJE6@?R8Mjo! zo8^SIJ?g8wuR~iwubh`8QWOf~!YIoljLCxLtMpp4Y4mM{(ez0dtcwdZI``SZL{oOAAp#**0FmYkzV&`wy#Fn@qL$7;;8Edb*}SGHY#MtzEKKg7NFW2U!JVBKG!X85xTX zIdHuObKSCNrWrFOYp10{-wv;|tA|pVNd4qV3NP!M6Cus(wG=Fdw__#3s{av4BEyx zx&Qe9QK|z)SWSo3(FzQ}UIOhPtCmgt4x}~+9K}ak_c+#+7Vtg*;<;IHj2QA*UH*^h z+FXCJAc`gyhO~c*ma>FK`3c?jd>VS$;xRalWEGd^H7d!XQ|c}}HYji8ml$yQw^=FC zWi)Dw298H+3oyeNv(P-VCPrP*%(hUj7IL$T0RKM#z>b{t+uM)-s@Rw;@Dv`O}V zyu%&Lkq+!<&RJ*Z4IShxwcCU1+nqbK{~CnpPjO1oZaU;o_!zRc`P?JiM2g(4cK9>u zH|_PWvd{J#H66QEwDF*CM+isVSx_rL#LdPx{M2tQCLIpK*n7^u`3(C>OY{0ul|#ex z->C*I#0YJQ_E+C@n#mXwSI5Uv6cQf>fSKwAA_gx@EDxIQ-@SDz)o{(M1YRo67soY_ z$tM*)mCwYx^WgumPIQ1zdlzJQ^7v$b(R+Xv9MBsf!6<4sUg#{Y^Kg`m%$R`Cpsn+d z?zeUC_X4I>!P0?zD?u=<=Xa@M{|H>o#Y|FCO-XyM;s7ZGc5#F}n`Xfd%i={W+tzlo zTlgIKc8)(1*oGi7Kj2o|s$K;qZv|Z)V0{u+LhTysI=8I4U5}fLeP^}e*6Q{LWaFMM zT+nkS!H;oI$=Pm)V)z z0oZs0H2@P6G~`tQv|6ILz=`8XaNJ4(2*|@7K8$YFpYi$^&5sZX_CCF8Y(ud3r2qur)cbn33#cU`s-EXStO@)r0ASX>C_)pr%4SmBm%d1xm zmS#9u4hryIT2W%>yuM<+;#v{&GopQ;@`9C)TyThElf}FeGDuTSkdh9?vvceOan5J& zspBqqDdP|xvn?Rs#M5^5!Jq+>KkwY7fU}8$gE|yq9~6YvFC3EHfcR{(kEwdC@~(b? zd9WQL|F_UJN=fScA0k)TI@QNrYd3%p1hfH9XE3$q>8ch76&jA`#4*?KxP;HqaxU_) zIH73@2zlm-=H>{}Q*qQ>l4`Z9BZ#1R>Fu|R;r6pN1`PM``!ytv%?7he5 z;<^kW+`}I53Uu3dtG}3Qx^`lm=;^7dt*0z0tI&uC8fdH>47JLXzppu(zA*5bzINpG zoh&Pp!0#WLv<9-tG0+)&fplOz77xmmcJv4Km+=*h$a#+Zfudjwy{5=@KJ%s1HNsgB zG+=~r_r5d2Speo`-EZ`8_gBnt$A3krgpYAVC1lWw1FsoPQ$K1-v>~q z1Gpp7ShRoOpw?^!R!0TGE66ERbmZ|tSysVmzCItUznts)T3a;9Naoc-wOTB?iqs*# z#;Ks9DWsP(d+G2>aMzbL5~lsX;^*;b-|)pF&d=g z7!gsMp&LV)<~5Zkm`vT>eX})BK!2`7%4vx-8p6q@bbvtAeP`dXE~hfl@L6;mKdSR? zyI}`b9US6U`8SOSK4iQ5I?gIIB94u$Usj#kjEjV-g2Ms>dvKW{a(rych+3<#nAG?R zbfJ<%jtvIWd)oL>>tOxs9ma{g&S%W?FqXg*#uPgCe!~dgk>pCg%>Umz!|=t@O=vY- z8I6Tj9NPg>r_Cc7$m&HT5sY0kb2eZd;VJ#dKMSV=t7eLVG>_-7OSMcUIAi6AQ z7pBE#+0LOrB?7=FzwNI>_VApC(F{pTIO!w1WMK}!{}Jg8)_dPUWC1p>4lNf$qm=+< zd|1bu3+k}*1cPq`OLBKok=`P-Sqz!gpMkdWH7Xf*^-|h0R7OhsWlLYa&`%-C$h?KF zl2#rYj5HP?`41QaBoowY_6W;hJ+?Oc_eb{JTCZRJ1s28S%92U2BTm9CeCCWtQRyUn z{VqQBuB~-I0+-%Q2ZkP2_zu=f!o8-Znfvx{elM|{KtfXXZHeviuJ(K3bA^fLliw7nW0kf7Fq<;@(oeZ_CnhbU(@LX6}l6*sxk0N3^@9GLLc?RLEI>l zOj0mk`&N7wCcWUB-QQs%5;J3#0^oym0{rEUZ7ej}T<3ZmvXL{K?+A?w!Rx%Etq)N1 z+qjfE?~t(mc99LRc`fSUH(&-yNR`IQDEjDvabuanG0!KC-{0?F&|)yZ{TC5dz!xil zn}@|!zh)`LP{dT$<@2K%CMW{4sH5}=wuZF;C~cB&>N@kuq-qrKA|*W%8323)OAM(h zDr^(uy-|LvwMpT-y-B7ubsk6*TC|%@=6hHCgW)e0=YNLCv!+G*#W~7uV~c>Hq$a_k z)4l%C=CQ1SV=g{B`HPJ6m{P1h z-Z&Ur@oOFr1G;qtH%T=Pi1_-*!>gYnMwd{YoODc3-f&Ha)t8!kR>e)VqlW{4La;x& z10DC0rk4Xqa+hGyb)Xgsh9@hE;MGWysi2}kbqi%i=zXKr{OxM+d;!f5k}?f0s&fJF z8M{nRAj={9+J`H+02T5m=^_t$xVDSLINTVEw$}^RnRr20+D)7O)G)pzed(HgAKk$$ za@=Gp!}V7VZs6Lp*cd#c$GN-9h%pmY4+D}Ke)?x69>k*2@M74PSif-MjXlP{pe&RQ zy*-Ur5m~ikQi|}Bv~0n!q0Cr}$ay`o?oOfX3W{xP=QBrF(#(d}xT*`HN=wC{W5VtK zJa!YvoSlYIN!he0{IEn}oYJ>0#Cyy7GRPH|=m`<6%9N@jdEuC)I3o&t<`kzy>cTH2 zYhDH=4kn3K9WT)#bgLG=|2L+PB@Pwe>|2O^4yd=lV$66lAK*RkjY-W<3qI~(z7(>B z62z_@HY&^AVJBOZ7uh9OV2SbZ6tHJ{@C2wqOx(N&|i(`eE>Nx?4nMo19wfUU` zm^|wPx&vHiql%Z&>jp=~r<7%*O$b|VZ4rZ3*TIq5Q%s~k=Ja3opgthoDs`%(uI3Xh zLxiFd7qy@^?zHe1^?saCrUML;=@EM0z7x|91A3qX2GVCsUvCqVW(U)vhR0R0Kq;%e zm&?Hq*0wc88rSsYQ7-;_-jdLos<491^(UE{N{5|N*#_H|V@KClQWM#m0^jTZy3F=w zT+>*E!m3}Z%y-pI+P6g(sGPx6U zHsfXDeiqcf2~!WbJH5peF+d$KkV>&X9EO5D>u&vo z7KBQqbi8x%$*Qz2wa}T4<6;%ZMQgS|q-(!(R5fRs)vSrtdrc;5TaVX^|$O_OE^5vZr75 z$R>AAvrBfOs#R{+k|KsMSny)DBM(HGFawfd;e9!^PYF6CuqXK*0>iQNZx=_PmVGSW zv+Pb~xBO4A*md!kKF}1Jixbq-e@(Q?v+=Ggc=J7a$?s-up#UgbH6%)RWiBqQR5)V$h@_?{)V&tri z6jxGDHL#;2cjP*NHL@ZV^g;gE40%HT8_z9rY^Y-o?B_YPA9ZdATPllImJA+U4FGBw zs)3qT16oTM==u)L)Cje}<2J*ybdSIXFN!0Mz@%%oF~dh;?7!G$pPb44$Be$Q)*)3d zAkluw7Zn^Mn$Zl2=3^9QMnup@z^r(EqcYeSR=hiaFSug#1VzvMw}kc-FfbNMfydk_ z)q1^VG0j@S0E^HdWVCWcOKqj}#hY#)aL?0k3v+9sbM40KaO`F|;5KF9J*uOq52iV! z%`5L>hM?#O=<>`#3Isnq7%cvBORUl)nIn+a6c32wE!js4hp1sG^`V!1!N#DA7Z$Hw z?&u4My~!2`u@X!Y^FVeh4fvRA!`dv-sgVU7@mo&w0UMj40iRFv#r zzRhI;1C$sKhIjjNv#J}ru(?%AglJAk$TF*=uZ@QtvrAX|O`Avx*TMJK(4>?0(^MUOJE3RH~nqO4yDV*nVVxFWxN5)a!w)rdFI1tCs1q~#Izy^?~D4z{f`xKH|5n3Q?1eJ9 zGVBwtbA98VCAA(6-pK+A4Q<$YT0YtdH0Zmtsw2N0&f9IlXI`jLgNvv)9NN0Q5mK16 zkPP_=TCoULK-`tsB)H*`ybjQmUNyAk0GpKu?B(ZPn%BD&n`W ztt}YMWQUYQ`cV;z9O#EE#|bv6y?RHYz~ZsOWnz0D_Oka6vpkjry(Usr?H2)^us0Oj z>Ptx7xM3{2mxdE=7Y3($TxFY_P$3L;8APJ9O3G>$?-SdFr4Qypb@SpPd%o*CAn`W; zL|?1G%aMf2aSys4h^Dda%gvdXRFS5+sMuwcJsrQOZjX#(6czfu&lq{;x)yl!*#2vF zGY~lI3BUtKx0Jq%qdeMccS74@!2v88)X2jt0^9B(IJZYu`FryvKh0OnqkQl?ww7dK zB&OpTdJS-F=xN`4bQZ5>l2L;O)jaGMg$_k*4=MqR+B0mg!lh2)Udvp*JT6D1T$nfydud*i9Qaj->cid6LmllR>z0Xi=2J*TV0M_t_#0hQ~SZeX-4E_0JJ zr#7Kr7M`s@gnRIr|K(XVN+&!EC&R|3+!-t>m7tFa-w>8I&5Ffn%6ttm;BE z8XhD$E}lco8lKobv=oeb?)e|UCwexWJADz|zcf5-}F4A!LSluO+;x58B)W4c_d!>5zaC?bB|d!`J7p_wB7)*YEWs zV0WtUul#N?68^X#9j&7rP2TUP|uYX;##|tt~YPwJ6zeDII1XtUQ6Oj@-=l zPSKxhH}niA(m0<7aS-MF)gyzU@h*mR>VMD=%=$?z3+7~_95LaEXjG8Q0nZ}+mBL)z zI|IR0d7E`HA@k4B4pi1}-3mrKD*WiqY-H^aPg6FSh}#{o4E!^c-rzfYGLl<>@@I_HDdJzzCP2U607{O63@`t6#$Fdgiz5oqN+K zKbbOfQb5bH#hhL*F|mw_5*W}-iqqh=Qeo*D*mcc=rCKOoA8{^vmoJbjIpVE^;af%KV-|BtPWqCk6*Pj0Y{M9i-k@Eoc`zG8a6$S7?Y zS&F9N8m7noQlBtQM(c@lsx>NzAR%dumc(y4jLjp+ZlLxn`v7VnR@Kg8#Vp01r9i4l z+2~jD_NIq1-3=V0l$+M+$i08Xf`O7>bD z5xqs(eVIGsb0l{+g%Rc;F!d)Z_#}6*I>ZV5k`v94sGhHDs`%acRy(=Em3?F)+&-v@ z`P}Lgv*5buu(qbQe*xveoj4Eeuo=&~yeO#I$5=7=JYN9|>hoNmKV22mEWf&F z?zcz5+5b^go*LpD4#1fjh%JuaEBmY9c_6sHo2sT7Ef)wO@%#G@8R}Xz4OzVBIzcyK>eBHfn4*!Ft(# zg5RBfp;rLsru+Rr+9JQfr3yymT7olR$DX*%l#87&)jM&xx)ElR-&P4?Lx;z-n4Nun z{!*u6y7>r{Z~NfTi6rB5;>n+$_K0G=;9hF=D<2hfP1fxiy8@vH;pvaJkl_FXDz}$x zP+hSrt+jo_UalnH9hlKYbRF6&g&<;HP6vBa7crBf@j%sJzpxxN@cq~0w-*1g ziq>U_x_MQfyu-7|Y(oslbr;r9y7gJjkmptsG{69}yI$IlRMyeVvts&JQNE~7 zgZm+w335yNwXCR7>yvI`Qp^z6$;Zg!;D)LeJ-~0CxH-%}Wl1&RCfFZG%#T%aFSNoS ziEN3^AH!B0zZQ-0kUb)Cs`#|X=kynvVruMPw>2oJFI-*CwjgDFC}nA4hDIBvEVyHF zegG9*h!BD@7g?3Sflui*z8WN#b!!x198wxSk`|1DT1F#%P#>pA9b4O4CgH&epNnTcl<)}ft1qbIe#NjUC8vSbEEp?ZEZ5;74c7jwRCx%u zY~FEEz+I3j#499!Z(;QjbkH=c+SIssur>l8{20yYaT3P_#Wv=(B&d;q zP{`SxnB)U1d$1y7_5zAGfxXJFu|fcOuF?_YLXG{)K{wG(POxMS@L6q<#a8ya79Lol5t^4A__MP!REtRtZg5Kix#CE%mmce>{X1>(Y;z*)&rw zPR_kk42=z&1rcpWHlDRI(@)nsu(A0WXTv{PT7K=|yOP*b@l{KMa{2r00`^QRpM3OH zN^demYzC`P#>o1j(LxOuE>7K!{KCd*Uv6@OLht$imb{fUL1z}xmtY6mvR^iEZ&jMn z&!IX`C$q8KZ;vskiKxlsb711Y$J;*W7u|l88KbS9?qqf`Vd9EqZZ*frmU6qo=Vyn7 zBuYrG3*A_-luMWrR7-Ped69chNNUXe?@tJd<1jS18`sd{GyFzXjg>4CQ|0{KZaR<9 zuDVLV+mBvnJRE5;w2BDee!26m7U${tClk@LxT<~I>(V}fm}K6pDZ`+U3LMMi0~m?p z5&K(w89>f1nHE3oQqQ%0QdPqi)_&Lwi}BVyOb-GHWD<-^o`1_1B>s-1V=S$Vkp^P5 z00QGI!BErL?N;YFRY3dz-xX20GVSWrBo;AvX{~?lp1z*6R`W-{Sc+ORj0RW0w0g(Y z?W`PWjJpfo`vLld7cOjuq_6X)aYyxjI%mydGpov%v7{+OOF zx!cu1JZHZdvbc?kwNFPpklU$@VOW z1Rd$hjPSni4nFbgQ36v058(LHE8Cn{!}c?KGF~zy>~_wBafVDFT(48C7j`BcT#ucZ zQq6C<)p^Olx#Mdt+Y^QUXn07W=BFF4YhKsonHGwDk`}R+)8c5NVKBdles?9-5@@C{ zUk<|i694l4*LY2YjE^KTfG$eOuCb2z!xLOVd}MNt9-~yoccY$ZFAm8m*OGhYGo@P~ zDcO-J;NYbC(|OpSkrm&31GZEr-{(XD?s~1%&x04Cq@>hf9Px`ouGY(a!MbQFD4qH? zA_0p8Co-ub&{zU}V@oX+?y03%#^kTPA+h}e9V#|Z#9d?A6aUP}bnAxTxMZ>14T z0UPH8x}C{&^?gx`sg#)mT+nuEDcDeCcAkcBIf0=BpsI0>jdr67gzO!(f<&vq718@B` z&S}cM_J<;k({Z*zsz%np!T5vjqP z8#!4hcdTVBauMhMOGb+jrE}HxuS{&I5o0=C{*;l|%cScz{djgi?#L3*I^-1@E$=iyqM58JkMAuDnZ#UK7pbOK z#9eJ<$8aDF2Zrqq`*Bt{*mEuwn!(w3`I{Wm(_Y$~IvrYMdH-qb%h|)BXDQTBTN{Q} zO!ckV7dK1iOxDlbfQpy*NuR@8067;B1t%RwZ4=N@o4t#L^u6+={}ycuk&usi#S!ew zGBNC4_q5Y6{~USTTb7`olbl9b{!SHRSg}r}o@P-td7vSg_fm(`Is*>t&`9o&I#i5r zZ$;6o62znn_jKba@#5K3Ruhcx{2;g(9Q8Cf^U%|J^j(s@D>DlgfaU%P*tdbZj^<_POZ{0z24EnZnsCd-EKlYnG4yi`EHiGdNoKlDS ziIg_pym7c>*aSB&ZNl{=xl`r8gDm5Xm>?d7UXSILQdW0+&795G)KexXR^8AelJH<` zAE$)R?~ANWd>)Z_3pok z_OMRNTo>H%Tk@FnrRNTEr}Sf%(~+QKHI z%ah@Auxn3yWtWQhBc#G3Zd`U3h&Wz^sI6HGa-~PO>2^zb%EiQjgR9DGzYG3i$~LU| zxb4kigFdHG=Hh}_K)d_61id_q!j6WMp0;?u!v@x?Vm$`RM2NgfR@xoLI7NO~Zn6liE|!j#>c?-3YSUK%nK7o)&%Z&L&js&`5RA*0cA*n#y^hf{+-?J6NZn^H z^_?c?hW$;nbjQ!?zMa)voRi}1z13v|yA1Nr@Og3d-+?_8lGBN;F26qKF)U!6H*#GX z_xf#dhE zI-D!V8x(2GH+DR1l{c)era$a>65~G~yu>1C{D%=SPc7gmBWfWo)p?z)h>%+*A{aBT zl9nSPCSqjn;z<;!-@oSxgnj%TPP$PQJB%!d*UJfPc~DSFcoK_^1}%Da6_@-sfKGL?ixX{ecJsNfaLEiFCwRVnW*#i9RFYYtRx@Jq+_+nBDVq z5^BfMI#8-*%}d8%w>T{^zc_2hfsPphk*TAoclH#yMEu0@NSWw2ke4#9a$18%{A>j_ z9>{6y&VQ@Ea$>(Pa&7y{B4)cLT$gxqjOAlcZ{F1@rl~Qqc6X`-bWk)2=D1B;GB_-r z9%dDBcVkSS#)3(8cbmI<4^JZlEQmv)eoidMP~t-yKts8FU@9f@iRn-DobVG@HQDK) zQ!<4|=dEN6xeGd@Nm6O>pbI&uSw#aIeSXMVhPTj5l>1pXn@^0j`y#ZVo!(q+3G3w2 zbshts9J!~ zu%}WM7LBu)O9gdZ)S*Pyb%y#Y-&Fp=dU4E{{p9^n(!1eIa zKNzNnK{106BZ0>n_dpMEZ<+YTPglZF85RIiDRz5f!Ns7+*HHAfIpY_xDNfzzR*zIq zkLrs)%z!}xhpu_1UY)YmD!B1t%@{R@Y#6mQPTWnHt187JQLnc=d zG{|9xgcK`jwJJsakcUSMYE9DQLxlftME(hzdHQAtJD!H<5)wu?~U7;U$5_U<7) zB!P6|?xyW=@n>7r-a1j9AzXz66t&Ul5+~BC1G+mB(&T@<(vSDCeQ57GxGQX>Fkwnj zGJFHLO35$W@b2-Gw)eco-`F@k1YprY+QISTsErLsDF2onz#8n#s@U1raG(3rHZE8^ zECFErTLM}TEP&=(kBlA6)u!UUbftru)8}a;bH_vrluWLsodq7W10-io|D;H+QaP5@ z^2Jb<(XGoX0RSfLCLi_bPF2R*wVDng?(UiqhEx*zaRENp?)WS(&N{bJ}i^F@z z{ufDhp}?^SMS3q!3+0|QXFET2ia?ka6i%DB(QLtuj$R?2Oubg|@1=RXF$}P$cjuPX>* z%>ne0^XZCxSEq`a{fCW8?JiciNW$Dm4DSGS9(glqszUD6$4hei!36eYqm80_T*nPDHM0#p>@z2W2>8YnoE%EI0u*GZ)RmKV;!a7pCg7^?ff#FctN7p zs(OQoRKnG~8OR(jyWYlhx5YTwL{&P$Y?4T1%(SNu7GH)pj40r&pc&FP;dI{UM0t>i z6>?VG%_E#uKr((Cy3+E^M+2Tikd-9pUuV4+;||f6rI&KzElae7E@R8UNT|&a zorW@|b1jEmu7t!m!%fwR@Rk+-=>B%rS{;-58u2vo?c#R*R=KK)jmThti_bEd{W zEGWP9;$}wq<~aAnHBMimx=CNO{R4kf8pEV!=rbFF=(!itb}#MXve#u+iWI@cJ5H`} zWesKBNU7%VQ;I6uQlN6<{;fjiDbX23DZY?dzn3^&C7Q)%<|Rq-ALVJ773^9IXj42& zx>W^e;&K993Q>3=u8=0|-V|%-{~S-+y@~%t_{D*6lX2YHnR@PJdTRh^lAio7+1Wk9 zfje#B+nW5RkKlWffsRyM>yBBAR@NhSv6B4p?Lt*ens@`W;0q?0zVfp*l%h>4G%X~wQ z{J>2#%S(-;Jx=eDt%wwlsxUz z5`DZ-{uxjohynB~!1j`_={-MMO!7{-+-0!ac3oKg-V|p{n#t)zplGAeghg}RC+{Q) zk-MdeDmpdT8{j93kV@<>d=Uy;Ig zE*;hXb|(L@>6kO1!_n~ZWav$+T;rDIIeSAKG|)RwGTDb^iNl+lLdpR43uady8Lx(x zAclrrM!Ufe0ek@&di zS`?ATP3NaZpW8)IdG5kQ_Z#^_yYcIAWlBeH-%+Ctn>d-x44K!|UK<_v$s8DOqf^l% zu7VA*5jRza`>S3Zx!(y z#8Q?cw-*7yatJ5lRh|Jf*8L+p$L}@>2};LP-rmb@$?=rbpBj$PQ)QQCYR%g@S0cQJ zc96|_zf3vcXy{5O&frUoIRkdPBO%T5wcSuz_faMsF$kVc)S>GQ0lz_m#N4A^zsSZw z#pP(f!7TCfGBXeP7fH0bPeN7rU8hMQg(tL}r0&huxn8X44e8H7sS{w5dAwv|iYA^x zX#Ut3o-*4Q>9WzpL7~>F90ne}u>f@`rkYb}G#z~YM=(uMR|jaWBkCIj^Px!hb8-d* z1>LuVXWH5S5@q;EDKRn85&SMHluWzlAEn&j$XD0})agt5m9OV57mlR5Q-ta>2(W3Q z`X|-y%F8!Jdvbi#pba|)x`@C9OBKwXwV+t?fkN7?ZvMDLw;ZUv3 zo}EVr<4$0G{X9_syT4n;DVh;7ss{*bjob2oI*p1-eT21+2L%tvs)wXWhN8*G0>$ez z$Oo}}=DkO#*mSL)EHEgjnWTcAw@ri0XrwseRvmbgUi%HRfxgu{&?UA~_1m|cFM=_G zS8smS0J*?O5C*0p+3K=8N26jDctQiMX_E!w9tS}s8_tlHwASejL8*a4*#*gLXeg+k z1Ih%URynAoJp*chC_C5k0(ubRFTukHzO2SAa7kT3>FbO^1GJn4Ow#PQ;oJv0qN_l? z#Rx2ps)Zyne@hohu!~t)QNydSf*pZo3aZ&pxom=;v`s_MUSeMCnH;~YiJhhXN#dpJ zEgU^4l=8V(aL~UJ4K+ph?+d86`-1V(i3t;Ms=^x>ilb2Zt^5yvga>xli^wFvdJ#a+ zNTWDsNug2o=c7BHan&ArD$$gSIV!GavkJtyApJa7wc7Q(gu^U`S1=GqzqVF{iUXxD znRv4NTg|t@^S=~6vwWyoNRE-F-;yq^!$lUSY5OEeR-3!p))YE&yx_1pU^nFRYOZl; zk7ZZZ>5V2WuD3ZO5I;NjXwelD1n1q^0z{3So`tmuW@sBMdf#<-w6}s`Uj#?gaB5(I zC%12-hvZCp^V*we5i_60cV{Qo-z6E;YGvSKNtTv9vFqZr`xsHR6xB4!d_<_)h%fux zD;CsOIs}z0_JhYPhspj9u0$3*k-)x5THSbOm0E_BlmLF|nVhw5%66_T3unAe#O7_)7;q)&|gguvZUP{ZB@~D8V{t2vd4H3EE7h6-yfebTgMPz>!)*WIW((B zM&e!Nj6!2c&5aq{f$TjJiRvb3^2$vz*jWZ)RU3N2os&gN-Ux|`)U@&-})~`4(IN+wl)w;{_o`A|0}=4Dyqe=T+B(9YA<3DG-*TyA3r^#5N0q~ z*x8pq`ByDi2i*Mxv)^gv#*q})U^gXuT8i)<*n?;E_{Y&>LedD8TLodzk2G0fA0Mc; z{Llh({a=3CJOf6ne#?!9I{IlZS^klL#MIAhl>=X1aA)13cg=j<{7L*pNYoi=x-byT zxM?fA0rozY?^|2{BR<@qRZWz!hCiUR;Ung_RiMZQxto7bX0BTiCfB<&J2l?lBv2i< z)^zjXh?}?>IoNuBDIxn*RwUH%Uq~1da6=#H>xovnJZ2b}e2~+26#|t=B}(CR<^TqX zi0igH{?RdIOtS-BoVwVdFMN_CmUrjVqGQAO>nyB>HN{K7O>8OVqE{#Uj8E{1*`|fl z*pu}Msvynk>yp_2-o3Q49>6SH*GQ|pNmm%y^Gta|&~k+`5O9H6vy?QpicK69QdlnX z5KRbcP+T1w;0XNyW%DHQuPV1#4NdaF>Y2vTgzw;Oe2j+u3F=)+w}oav`#`vHg|D5^x*>Kox;MzOsMM930) z+6i&>OTChn=#t~?P0ml-7>=#*WDR^^7)-rhWvKapQs+kop0xJzM0 z5^l9a$=~+sG9GGx)+FSdW;*Fbw<2N3v~+G*Qy<=?rJjOA3q7p)S+PE{f`G_cxEe74oC+g85OUS z=fh||;F6}$=($l@c0oq%tP2er>|PCD<#2bC8W`3ST-}gu5-!uM_!p$`Ck#0X-y@?3 z`5DQtRi=Z|QLn%`-YI!04>>+XbFB4NEjSzgsaFJ0Q!2Mg(`Q+{4Jha{YvHJ^dK%%= z!A6FNu7o|Xso^{YoYDWZd;EzT{6mMY`Zzc8`8s@S4jkT?ivMPamnHX2!o?~+j%UH= z@2HvLwFb%)Q4p6IAs^U4aZ1;Oysr<@NnRaHj!{)KMNU)e{8|ygX<6PIeeUHr0G>-S zD@tBl|F#v+Hr9UYVzV%QH#JKrO?T3(3{()Os9a(iXO&b%uL@`uN!ruIOZA@DS3?>! z+hkOuVFZ9{;BKYmZP~4nfF~yaIoW(njzS3o*%GGW$%4?K`DrI{`yrnD2Di}q@v+U- z<=0XQ)0UBYIMh!Gcw%olNNW_rt`?*|6j5yys(%Bz$E0Hr(*aoDWX~_?HMpE1r;)3i z7#(q3v?bbsH!|Qf4wFTfS6-`?GX)#ou_wWEE;ZN+0}V%GgF=^#{=97RS5TzPd>FXb z+KphKxZ>)8jB-fWmzH>%P|mK<6jftjProFCwgTnEG2z{#i&D|2Risbvfljo%C`OOFi=3zk95Js~j_nGjBY;Q!^5+J{ed z#^Uovc(pV%@$L~8F_#!9$&NBM)=oMxB!oQYdZK^Nt2#k%u;#B)J>;*HERPqxhtAAU z0VU*jN~U_q?@PRX#FaA><`>1*Z*>b;ySxIi{;l_siUkw#876|J>i6R_Y#q!?OFENG zsGH);;xcC88p`5SM@r*Noys9>x=0aSqj#bvgn67gJF zjuzmEl#uN;0P)q?@y>tYoUSfk{cR+baHjRXZ)$YF<*|%F-qo{J$+y=mTx{$C8FfE8 z-bAT6S-O@##YHnGy3N??j34_^9BgsvTkSY~HLz69r926rfi{OUcgDN=sa?fa6$`nn zqj{m{ELuMC!Tky?oI`iyBiWHf_1U1OGB1D0a5F9ggb35WYe9~p3rr}lJ7NV(N1e|T zAToZcje6Hz!49&pb)jsma0A`Q$6j`~R^%+ZOGd*kg3_E>M(fix5}Qw9je3=D?jxo; z7zSzoO%;l6dZfiFFA88AtFaSJnWfSl7efbuMloYDI@n|v&)QrBSMY2OP%9XcW)pc4 zk$^u<8AHQ!ME>mO&-(eB+H;RBGYJ-`0*SWu&%9XQ(q2mJ452LoP1Pw}Wn*d&Q=IGY zdP6zZ#b#(BPFCK%Z}J@~0Tlk*R@{b*=Fcjpi4Vt$I^9*zqFQdRYD+(sCPW}6SS(xR za-TLPzMmMu>`xflreeY+H|qIVEJd8QS1nvA)$`o13a2%NvC!FbYY{r5UF-@^mcqd* zTVa-$k5*Ejz_P^yVEj7gW!2`L0MtX8-vs|ZVsKQ?cd;;G$!ZYl+*0Nfecv8T%l!|* z|McO2h1W}7Gu)-I)k416cDA9MA}!a`i#4>lZzzM6O5$jHZZ8v$)4(Q4XNQVsY~+px zPJfGG)QR^Rq&MxCf%+N3B`v2cjTg>!G3e8bedwWm!1^CXcsZJu-t&mJ`(c$On&+8P|Fa;c9%2dI#Qk@5)3p>lvmcg)IIWM*r z`jrb)DgfH z+8rliuQ6v}nhw;2`3blCDc)3zHI)&Kvj{%YX?b%41C67rkx&VNw6zA?0+wHl^7Q*{*P z5poMvGm#-S7e3gtp*9YgSx?a(NZW_=F{&M#5sXb;jg$VUN6cNb z5W+&{o*6Rq%KR=jqaY{x&#^TI*jHk4yGz~VFPNYm&yhq)TbfHh(x*V_;MneMc{iRn z2xAvimvb0;d>KEMoR?anvFkP}*gy6V|BiyuF)Ll~@Nb9b$lp@IKuKU+H5s{xD^hib zDu5ZOn0jV3W|p8m0pejjs^9rloli=6K#zgK&;1R{sE>RqV`+5o><*FhmowCN{kZ0RKM#z~O<5N8GOe3@IOE z%P-TylK-_ec=Y#uqd|PxTo*FyQ56Fup~2X?Cg3}&z8rprj+~9>+g}hTnJB0bjLD0t zW|{;GBy1x2t}oZ&Meqy=*weD2xfhD8smXymO{7kru!mzAd;7p{V8LMa9u`XU=ro%H|hp01kx!YTzK z<+G{yTK$rTE~zQ(s7ITX7J}?-RtN|$>eah@L3bDvrHMH(d{~5WVv!PF zvQQ`d4t?E@eTLMRu3>T`qaX7Dq;>Z8y^)SBp>%Zkx_j zz96j9sDZpBl-+)&Y8YyKMq*?ZZKem9c^fTe0Qay$-byf4(vTFb#Hin5Ta7skD$y{M zMu-ve=DW|ErPr?f;nY;JKEhlkG~884+`g*XBu$-o%IRK}R|^hWL?*=xAx&Ly7ZaLm z-|@$E00f3812jKVlEht|jwaK1Z~=sTY-#5?1m3}+sR;lk?40Zv6IO;S^Kb&bdQmM| z=wwvdL=)$yQ`7>UT(A2gv=WXbnV*KK~9&L-;DzxSal=nbioah^RgE_30G?+ijbDyu~Y6mWi1tETJ(4) z5O1_HFre8g0z-Z-QrT>27ki6t1x~lRM(45^cA%b6p<+DAfD~Q6xPPy5ARolM<(M}y z4hnzYg6b)AB#5AKVNK`v^Xi5+@+uOS;F((&oSY)EX+#}egE=t}w3;?~je{*8Y=Pym z`|!%!5F3yjC{t=(o~Y}rSZpEUoqk<&yD19Sr>)dX=ExGzz{yQ!P$rtH&jt@e*a8^! zd6_p76!(6Lv2H%{5AA)OeY*pZ#NK0G<_q-IB1BGit3AeTB<}vwJ%?PQ;~f501P5(lI3{KDRr@YXpRtTpC)PaOHDLS+ zx*6J}0it$izIsbwKlg9mJvLE_1bxWH$JC%W++N9=@Rl;qH~T#DtWX={*+&#Dn$H?S z#XL*5IqVA120Bj!tGo0~iRRd@bR8QVjsb^^GZQNCLP9%$_Hb%na6cI8i1ImC4?}h| zJ~DJZCH&(hR=xXrs-#Li75Gp$gl+{8xqG+njWO;wSj>^^rn)`( zkagL&h6D&-{_q`frd&-9ZvQr+-6vX}wVKNnBy4B2B;cP_TYIQPo~-CiY^8g_Do&a& zURlsRwNO@~M0TQLY>`c~D!Pw(a5oH zPAFO|PEMDCztWngE4C(LesLG(dT7e>vcS5*)2m@htR+&;in1(TbL+TobJTm9#59@w z5$n6^1y?*&`OTVzq${`FRVS=R|7HkQ-o?SxDq$tBGxPT#I1=cPXLF661VOMmAzv7= zwp1X^vw3wBhvda$_9*Y!niTZjWmM`Ns!=oe{^S#cS*)J1^_7j;5!Ra28ll4=ChyfWr-u!lO@y@j{p zp2NU)s;Zu9!=z!823EyJEHdZQja?dbAS0y6_G=z8Y|Md6T;n+mG@pg_QfnV#sxO_D zFOk0bGRgd&CxY&rzrRbUl6_9pZuH)$Accil;0|hE9sb8^4Jrm|NMl$22satHT5-3S zSUd1{vES?K$b6y)-lW5mcI~KFsW;8e#RiB%&@V+Urn5_+U2z1=l-fr z=w`_LsO!sNxi@!{R5lurckIdDqZ&5lT+$WT!1OAa2WzMEGvoi{?(XPf769IK?KOyr z?3hcy7o0I{lRFPSjo751XvP|R4%_<@elCvEWC>;TN*Z?Q7k_fa@YTr3ta!;?*EE9h9ZqaZgb7Zv55( z!BW0UFYDbU2|6!c7GJEP@C`M)QD`!>CLlSLq1C*<#MZ+TqVfsbduOrTAH5ljLz8pM z*SOU&`OghP0*~oo`c9%I<0ptwqzqJ$nl)56y*q5*!=s5s5zHVD5zZH}Q8Llj!Ofef|O2D6xPQ zdEeS;oX2jP2Zpy?PZ{f{Z*T$s<!eSz znyI(vi@mT2x?U42^U&q61akF-d$uG%xSA@&AM+`stys}2EdtkxkFOf2cU>_Hw+l;h zXh!cvItO3dj!|TV()cS98s!a1VinN6+y+&`ahX}p76KwK2JP3r=14!7BH$IJL8xU! zJ-Jmjk9YSkZiqM{%Wz6)CRsIa78I-!NcK@>@KKDgu>yT2B0uQ1mu9j~QMn`=b_&im zF^1$8Kv2t3^#MqIURl%;63%{NBoJs|s1v(W=2JJLt*`@vQx0{k$n+#l_a=98lHTa@ zP@wtln%ylFezzUX|Np3^^6OeK#1rZ*D{->w^6mjxY9|3d2)FF>4En{U!^~Bwerv`a zPe8K0?}LiVh}WrDBzwXvNh(|sQiyeh_&$h2s&AP6Hzxh-N3T>6hT^%@q(pu0q=rOR zv$Mt2CD@acDM^LbX_~(J`>s9Apn`|UO9;NunGi(QXM`&DQwLn<*3SxyN)79L|qL4y5&o)_oE8G*CkHP5FcktPF zP0on<+y3vT5;8t7u!_%=4r13Ty8q0QukdbYG+IOMIXQ8g1V(e_BR!-BY7eBS`6VQ>}^ zrgb>|sgoKOfS>7Ub3F4n%WB2EuSC0$y@!@7@zUgi`E&8xO|Nkw7b$!-ncA!*A?mD; zHO&HyhSjh4T^fvVe5Ep26+7v51pwAl6G8q>))o%kAJWWQq@QfxpTaC9tDA%FN)FwAXVPgyD5!s4}Wl7;hrv&m%tbb8G& zitk<1IuMlz0S#pK0JCwTJy*|I7g^usb1K2*wc1=ZsVZf5aa^G$Mdl&ZPpf(Ih0RY8 zF0;hxhpN==lLK(9R!vqI&&ksLdRSUj)l}hR{yQGs)PednkpAMVnfxfQPWgDN>7eZ3 z=+g-K%N}tfgW4oXh8xO6H&xP}bRrwwVLWM3RD-R!HOIRFUx{mx{1PGn7Jc)HmlOck z?G^Ti?@JAIQXt_CKMcgop#_s8H?z1I$F%ofS~!SH^^*N2!aHP8S6Wa!{pQm-nh7j8 z{=NsG=2_GEPI6Xwc$}Lu=_E-LB+G3KKN{@WOE>nXPVHHSwGnn)5CcdJ^dQ3dPj9Hw zJS}6Tm^=lGyU+!vk4Pg)s9-+ymaLV%AK@#wbj;+EcOrmo+|%B1N&I-Phv!&#$qw0< z5LWv=ZyrCcy^$e*08>zpg(d_@MUkRSsI ze`L%dJJ}Uw#EQCx`(-@-0GTJ8^z^!*#*7U;sH(TNfMlNZ|42dtnTQUqLhBY!qb>xg zjK_oI+X-_k+%r*fipX$Q!o`WB;z%YOACf2y znsLz|)>xu9NouuW@t-}&Ko7^KU=tax*NB61!eOYPULNb#klRNT(=I;Gb4UT;V!h^M z$&JB^fG=Elx*-?ToNggzLKDTZeXirddLzzo-_(FIIP>DYlAh+Z4qXZ`H=;nx1kvP2 z_vf}WWZ1_Bzi)Jr5Rkx~4X|jnW|qlHF&_ZAF7AU3VLOp7Oq&#Zi1QLXRQMLTdAdqm zU$Q_JfVy#1%S4pCq{>raI}=n7cejKs#G_?$Tl)HQ^^)~dL5|tezk6wgTPq3n^Q6`^ z&m3&m+us`;|B80ujYif)62;^OW}h-i%XIw@DnVsQjzL@eqctNpPJ`*@&`1w(g(1l#&s(f*QFcuTlX5&HD0IdtWkFIp+6vkfNKr#xIL^QwPLn|~ zV=bhZ-mbE8j+sWKV6mK6bXizuT%*{*60Tmxp2IC%sXqKEI`B7d`>Ylm=wfqLtYmC+ zt`*V3_4hiF&oV`MMcNarblJq{w>o5hs38tAO!V(W78P_y-umng%zp>}HKWx{Q!D+& z2%FNtAI5pVvtx@hIT{S$a#JUHs|1%G4hWfA|3!qT7zNo11RrCNWY9)&h{E4H%qFPj zgml{la;MizBvE}fLhXy!Ez7vE zfPansqb|cLr$7&#pIyw`ln)bU<9c%tl@iiV74oR~!aTbAV}WVdp1&Ax<*bt0moLR~ z@}kNWcSHV{ixJ68=caTXzz~dd(q7#UyV-$wQO}zA?sOkrb z=deCEw3mP^NW6)}k0E`jzP{ogeXC8kj7Mp0+3bl@eeU>?7o$j(mK{i)K{c~R%SiVj zv+yV_GR-(?3_FZ5A$04M4$d<{%tN6Xh^*IceFWccUWKINLAxw2LPeW8&-wPtbpE>=C6gHpwcDCY!xGSx_YlbB!4Xy z!7+F{XSSga8_Ms+K1l`t;$u1;ctSY}wch{!7ofi3%NZky9LnV;WtxgdZc~9Xct4Fv z;8hpfTBBB7M#3fqeO6;=i%Y$B0J0K_)HNY#EC;!#^G1fvDo`6}mWfx@bbD+)1>?kS zXDe&u<6e^0b)*-LSP9IJE2@k4b#OX=dlZiDBM$zkjS-7N*|q_*u@sQxZ`?%lisj|N z#ypBPuc!S&7sEw?Zd3ej;L`LJgCgH_AKI@rv(_*NGm8)U{5j;S6P|%iJF6`Ea#IwN zFk~Ysb*Nsw(gdC;_21s6;YYde5hr%L8 z!g(Uy<^lU^^7uH5#&8%IY?8Q^aTa8UR%(YhjI_!eZ6D}VFL+WKyOpN&TAe9GPj>jd z_IHCjHr2q4lqnr0ZD29HMG43)3>zOcN;4;A77>hCUNc%}`3`Zs{9Qw{0tKR9rBdaO zSmYrpjhXdO(Y-t%9_CwfX{Sa4OM|yDiZ&tDpHGm1E2ci!vxyKtTw3dzcn@)_X^5+R zL{MWPSD)!G-O|WW(lh4(xs$nzo@y!yM%vP)k0)Q)ZmUq#NE-=UR#d_@Qyn_c9pK@8Za>gP!8$MPh` zh=5kxR<)1n^s0K-yazf|3BOHKY5-vZa3+?v!n zpX&WhGOvl)ZH-H?HcAb?d}hkp&zqGE3`gS6%NJfgd$m%_x4=6-Nbqe9*W!MFvlb@R zyG89mvII40Z0{BzDU)#tJljNG{@x!^bwB6-4D87ARiE`&&cn(@rrYXD!Xldb{~cU% z4S*5J!`;dm=hP6$sVubYg%xV!-N6;@MYgTd0`sf>xPU1!pS=(M3}!WCv8j>HYq#56 zniG3ZAv_9AK~uxV(P&;~bErcRYD^$+bV4%yQ??p(9Ltl_a`lRn=6R|V`2FO2!M2UX z76Dtq)_nda&rT{2|TR`(KGf*BFb?rQMtRccLe#F;HOAj*Atx>=|aW+?>a zi!PjswsMph)=vP5T%}cUS$8B_Zmu^4cY?qI{bW!SOO6ZzDr4ZZO$f*}py&^PuHF7A zb6nP_{O_ORRMSVMMV5wQLp-IZ5oe0j6@Pw_zbeJW!J&(vGh=9hFCM*kzd{2bM%{8BHYNbbhKl-0Ix`CWUH9-$>6sF49!@;=kP;lVOAUU5l(B_l~QZ zvwVsk+x81K!J$k9(mg*E-*wIEM<;K5vqJp#L;Q;^UMh$9X%XFxa;_n2HGv&vx)Wmb zb7ZiLt>$rgq3ptKV+1@BA3u<>aCS_>2ueZ~4+L*O7X95XiodRXvQ^Ap0-;nU2){B& zHkYsM=z?6-%EW}2iYY&%)!_{FxO*tnfU@So2+H|z8es}+XEj#aHrGmr!pW&ja4r|> zJ3tHynVTO7+UyvqNT?w(kB7V-aI+>WREeE+Ao`=-i>(`(>=GXSfEMgkyZMJo)nSn< z7|f%XUeXm-#cyM+C{7{O>)0}1Dw=y+-A#DirXTApD3bE;c{Q%IqyldYFJX4aUWdP$ z*Dn(BBxEiy!j}&xSU->(s&MzHIJ9`EbLNs&gH=AEYjyb}|>&~U^@RBn_B8@3qHOtgxe zq{pIrg)(0W;~|UYD{Db@K!uFj)T~0m-(6Y4F*ZFx!O4%cy^|s}0iW9rEiro4Y)h+e ztqg6*Ze720uRNGRI)_5V`%?p&fMkfXS8H~RoESZLPfdy4o;Hf0YR9!a4)Yn5WRzeaHRs5B%M1E~fmXWwU; zTC#twtGK=p?yE4Q*XV-G6s=ssnS=ic$!F`!~pWseox6 zf4w+HRr%c!IS%Ubl|0eR8A<}3o|YtTSP?-xeK}UQbd~QZD#%7=$y`y!{K4Hi8$+s-YZ9_eVO)FaxUSo;d=`bFA!fw3@QD%q0>jvi3M+l`s zQ;t!zV#MP!G7dw!W#XL56uP11AVZXiWE~Vhc+3gT#NlrQN3=i}{l4>X$`eu1uyp~! zQ6?T7rr>K|UpExK0{XiSZ7+7b(pFUbgGdgVxtB29Zj>_brPfw*H8$aS}M zUw-=1l&=0(dZQzHrRr%cf>D_Qapi(Xi>eaVxO>S&R62^~I#|efxLY^-I?JzXBDQ;U zKRBd_7?4zxBT|dTo(Aj)0TzCIT2K9mVV%AE%(&UYVGFT05;{A-07a}!=8=K;E-?0n zu=dSZ8u2RB*6a_hK||UkPKY=&@Q3@UCcd-tL0hCf!2c*d_cTf!K}wy{l$pGcA;~$$ z@{Qy>>Ya)=IO>LnW8}uy6CD=o(GYfDeLX$)hY<86L*_?ts@)Rs+w4tPYXpxIa;0JD zMk>vnS?U&nE51v`hA!(&4(iL(Iuo8j+{0Yc0M91col**X=L)S<`IK)ge#enV`R=wN zBc|;ewvPGJp_pkriMx)zItPva0KE~WEuV)V)iFhEo{Lpq!k&_UY_$6V*}13mlWNqe zYrae;Mo0V7KEglS?O2f%Yq^(xV%n73aPd0Gxuee%(W7501@flhU9o`Oo$SySN+u-a ziz`9N{c8vx14hMJVI!v^N8sDnb_DI0uR`_-=OK(Eyq7I6I3q}!G{0`t2BAeHY@|8> zU6f8-g|b-xQ0csm1)r~)Qx{{qG39W&M?uUf(YZ!ea#sLW9n+7?f(K>h(^u7O6wI5{ zBHY(&a|{JaYREp>Z-TcHjBmF~(8;F7qdh?u8ML5HDjvZlu6(L9SbS5>O`26@jTJ0g z=p`AJkK;jl3@mcDwr{`+*fVbLn5=9Pgd5trmjx~L%0P%53aLnG!tv?MZS+iBD&%Ug z?yU(lvn9u$-+DRW>gOtyL1=NjnW?V{_jUTS5tE0!pW1lvd^2H1r>S1QnCmJe!}J53 zkxj-kL9zu5@qZF5ZF{dK8K+6dU8fvCyac4Ng^1vrQaGCc1%$KGT&~x!^q#TY4=Rob z7Iao7qKwE+-^i-BxBju};TEbi*FL+Aj$NoXx@{GoTJwHf!y6Z=V&TtzFQQPC1R`xG zVzf56VUd@%vO8iSu?LoCw>Z8L!rRW!g5F13y@f zk5$Xj@Ltc~;D3R)@{{Gf_YhJo1@jc@F!?x~Fe8*Iu4*au+E?Gti~o;%{9dpM+fAVV z(h>_SwTcn!RwsUf=|4Ll*fW>IX3LNQ3ZWfO$842)>;`A;&06fw0MCKXnl_G zcAPie0>3Rzxv=Zczk4cSWs?kC!1x_lh=Zl=N2Q*1#uw>+eR;BIOVBCdeW3*CVZV(0 zIvjAa1#84(lyrbi2fqt43mI=fOc%oL6K`^VTR6G!@a59@gHA3lGQC5jq-xS?hVsZ& z|2`_W6o8<4G-ZerM562FU6qWLWN9}ZE}b5tUht9QxRWp!JmUuTt93swoiKGPgKRdB zbBgPf|3j!?_Y&!$q07yKaGWgM;ff4xF?|pE!vmp%t0x?s1Q0~6X~-eI72vq?cI4W; z)CLad%C*C2p52)X6hTWD(!YekX^^gy$-;?aALJPbrL06LDEoqgtG~IW*Vvi%0j;oa zs170Ok;f|=$I0nKrgl!AL%^^en0@MHbHcMYNN!43#I@b?5T*$BG5z5SU#5qdK2J$6 z{%_uGHlo*~S?Ul)6i8y%0I9ck=&b=&g%N*|_LCLzpae^IpdFNq0OhoEYlEX}XFjzj zfcfhpSPu*+?;&{_oU9`(R$~9M#-&e0%{ZP}05yT5_oj?QeI!*P%n zVly2&I&Ctvpr(C0IO4X&5?slMM;O2&4QR*$D}2s(qnO0(oJt?{+5CN7;@=|^kH zV@b^%(u7GcNo*2WfZuDyw9yfZAy5KeC}98h*yXiSgmxm{7Y-@On7MXujbpsErHBCW zbXhArY&=CiibQ3iYc&y(+ zwT2r%iJl(~4$V_`3>)?dH7>p}1}@X-wG?>R^Gd-qWq+APrj6DHk#2#oI)BQ>2-l!! zCr-JTq9riay1V+_nxigl#rV%Hf~=+{OIL}9sdlz+TPWB(sJ+EGt%RssTpGnSQNmin z!8@U#o%4!}{kJz4ejJnu(XY7ja?)&X_p^(uBjZ0g_R%)KM@EOxlMUfMED?5ssRNwW z1^!V#jve~OY~@zC;Dg=2VzYHpTCJ3|cf|rkqO(u#tWEK4=5F4R2qqUz#myPcC@H5L z(118a1|pJxls2y)J@>FKz1*;ny9rvHkluo-I&C+l%Fz!I?c;%-+qE0HHEIcvmHo6RHs|oYY9`UK1Sy-1R_4Sx%|=`LMYd1l3uIH}&dB`l|5XG-6{uC86g-gTBm%6`tDg}7jP2c`Y!-FT0!JR5W2+SBFCs)vGb z_9nU+j%C4CPM<14P_&dZ1kbaUqr=MC#6VCLDTm~1f?7xerhE&a)s>|-At$254kbsK z#eFtZ$a4cUl|5qTr8^&Ez?S^$!7mc8asE90@p$+3mgWw~@3n5X%Q&^n1k+Ea-fCaO=14V!R2Rjo9; zn&X-VW?t8{XWLX`VsNgsf+apx!2T!BPTobJ=H$4-wEc}cGAH^_lqYwJM$q(lW$vYN za(H0TPmC35q@f7PbL@Ms`jA_VPn$uE!BT3cr1=FFK~|&RgT&aaGMV{act6BRiF9i$ zr|a{L25q|3U315#@U6D|CS2PSh;>{Sw-CaUFw}L-m=Bdc$cJU-L%^FjG6Zl0fQ&{ z^}~yPYR`LSOi;kOIYfMlc!lp388ILg#2@nHqsx&q#iNwl5Jy$#0+qM`AP>FW+lbXD zhQqQ9IfCqT(0IsNM>6OPUy|UY~p?54ESvR`)=sOponZtyA z`zlhkCTk1pm?i=;xb>nf-;asH{m>vlh}u=LdrS3@%X3~St4oz9~cao zHueMiHI;B+G*~ga-?-<>j%hzIhd!SlFUDSx_{Kg!SnQh)1(pWUjq1#eEbjk*sX9G!bPs;yM!DjeZ1Cj=&m+tn<$MVJ3aZ0aKBF+Tff2 zSHN+uSl9Wnme{`^jRh>|kx!J?r?q5d-eZl;!!e8qbp@bJYd1lNYRq3xa)Z!>nptV_ zYgKZQSy z;Yv@$1}0sasvuFTcN3>8P06#T7>IU%Mc2Mk(y*yAK1IpM2M;fAfU`DUwqpw0{VF3Fy=}*l4lOsI5TDuv^TIB0m>g7x>@^* zdAk(unD^UqisVNWz^sVfoltW6mGB5P+Z-E4;Vz(T6?D-7^!$2mZ+7k5I8MB$Njrr_ zMD>J?LFeBIz83sv#geFO52UTd=AkIB+PM-6K9$X}TnhUq`s$s~n+v%=w9sCTqE7bK zCzAr0*fXZ-a-PDdbfLsvPTWJ+1eF&THd4GC+5nE8@IMg?`qJq5ygg{xa2RLk7r1W} z5}iDJRZW50wesBn#R+3ioOmv;U|+dnAK+uT^>~cHC_m#B_+SnFJkgoAHNg@xaIV#c z1b9Kw2XWv05jV16%@#NqD@t9Wlv*X*_sfS!*!pubxfK$$of;L7t#hq_eUDSbjKHVl zaa^8JNr*a2#(;cZ3hd3Mka z2!0@2Z_wxyql`F5h&5kY;z>&BaU`yk;-KN>%P?B1k~Fu##y`wv8(yhUn%HAFy)1K0 z)6I*Ea~+_G^xTwtbf=;V@SD!CA%pg*xQ4w?447&#qAlI z$^tdT88x>pJ`o^;6kf{@08Tc_c@vy&Uj8oK^&XHVlll(m{(;}#Sih;7VL=%+d3DC2 zFzFSXlu;Sa58&Yc6ka5~6`h0QHf`Y|M@e1~E5pe8cq&Jw)54G3JIOWC@_GEHx!Y`N zR-wi|Lt?vi;N-z_cJaa9{b*HZcaG(k8i>_p7}BMbE}PzydQ_MpM<#1UC50xEI7G+g zg$V(dhKapT1V{jDmerZek)1uB!4IMkQlA%9Io4t8Gl=LuN2XivDWuFJc&quwN<7XM zKos4{&jDLT*`zu@jKxW;PN%NYMVwM%D_iRl`+D)&%#7-#=gR|R=XrdFMWfWJ?}+pg zJG5tWJ)neViQ|=RjcxeYe4uGoI5HePpm^-R=!Nn9f#MR_&jn%rEao`M1K;P98c~yI* z=Pfk{t<~s*%QEy_T{UnMiUiBuBIjUwA@!34r-n`3flVQZ0dSIb?$s+OnQO<5y+-1f zR@+Q0x34@mblN$2Tu&#}_YrdJoOjbrcq%qG?d+_v=GV3alrN&fWN`{n0kSDLktNgd+? zww3fhq$r0#^rVf4I4L=-eE{8)_F}%it6czMGX{gN*scI#?1PwSAUFF!E|;o6^2269 zEf=)D)7uz@QH0;6l@~eNA0zX>{UQo@ooY90UV@YmOcgh9Heq2f!HhUK>N>eG=<>M& z?iu#c%nKN@$0zcrYxLiiKyx}Q!MN^FcMW7$BS>)rk5l9VL1qV}+)tzXY(0XB9&PzC zw$XR?WNWsUD6rNspho{v9t&RlMav`+!;Ep#qeHp$L$mbuN;P2tJUJz(CnB5HAUg^D zNLNZyj1rcgM0$U`-6e^p!d~noPiUUWQNK%%=@&khpZbp@i$3{w7ZyY)w~9;MPRv%%HERMP@F)j^E@D!b|p!FLk98% zrwi+g-1J8{NG+#`1e~zRagwN&2tU>X%tvWxM+5{o&TfF8&f>pk&Jj)|_X*xk3kU-& z#zK#NO=a{ri%QLqXx_DGHF$dzsytKTkk5i;bKS{@Q|L2!S8d9BmDwa@wPp^3dG%Cr zwG6%?t2*ztM&gK(K%mTK2TqE=y~%sUFwNHE7fz)Sq@`@A-KE@vKmEsNr~ING#A|TY ztubERBg&=4Oogu#QR|~RD6FRKNGEz=6Q9)%@drmu^{bypKb3TaGc`QitQ`Z%qQRc~ z^m;W_P#cCY@%W8Vfk!v2fyt*wNKv1;rpQqQhmS`PG$EZM$I4gz2-U+1kn`-cXR)4l zSA)O*@nL2J)|ukc<;C2`GS7_-Qz+m<+&Mi^X=!p`Z^6llO8w+LO;QcDd7;hr|$7b^wL3=DvvV{ zP7y#T)8{J1wrl@rf|p$$;Pn4m3P<1h#gxUOhuDHxkaF$)q>7Jw=e z%5Yt8)_YzNpb?7oql>zT$ZfrohG28UZWVG~PJPlg4TUe?5x+KEy?vMI>uX7qANq?fg==qWh z39fiK+bBo&5Ma&DO}Emr_bT?mW=CuopH#e5e;yKXCY~h}A0FfU9rZ+r(||BOP1h%i zlJFy$zAN2qBr81D7%REvCoT9U_i+lKP$3eVBmme`cKOkuYv8dU6xz{i$Xu8v@gQ5P z$Qt-70#_z`kl+J_#)XIZYV{{MTCI)qP5NbMMxw|z#(;Y$qVhWY;|NM5hfvC-e@?$y zdDL^OyTBf$ZE;2L<{Qyb!jpWBMEv2UPGdeuAUleWALCxcWpjHcyNyjWq2zYCrGADA z{FLyyzozr6TJDj_TMGw8*IE+noOcOS^a9-jbgMl*WaWwUfdn~6YSAN=!>EyeTp?)f zEU1UNRic>xo<4Ypok+*zwauOZEhE=fbs%3E&Xn1l>d{yXe$CQ!weQ79w^dYG>~CLW z>(84=@=*+%cDHj$Cw|b2-pGb&0HQ#N2@WaF_~Y^I<=*Y{vn2=*|Ngu_$SRGZWs7}^ zEzhK=6or#a7Gf_R#g|YdynjbYkx#)o^ivI7K!sN1Ri2b1zs}?v)Wh_6fYG{t9RNnM!)6>~hM4n;v=n>xVMwdoCwvjec4>B|!I&@7yA4w5ZJW=OHL~m<5`pTuJmGX1<$t zc${ob(Yd0|^}i!LNNO?`H=YnG98m`2T+3!F(&By;a$zL<8vewl0k zNXNWK)!X6Meq~7_7kTaK(=PSECwOQRuWyT>J7kRF3$ra>XvAG4eM$Hw`lsBvd1_o{ z6&)i=4FGY4&w?5TS*!o_`mu#f*vVR$7MKlG#Mj~sr0o7lGfztp@D>_~v@%NkY9O1YvY6Mqw9o=L!?E0oz z3Yges{&ebNnhUmoMr#?!KVJ8Ad0X$hi0h-D-vPNX)VfcwA!)Od4y*#M4o6mJ~`vt<1UC5UWX#ppR3$vdinXxzf>`^K`~X=$B~+6R_|OE z#;<8O*Hkh2z|pX&WtwmEgt{|@)uvo{_OziXvmwxx7ORMfu*c10!13y0E1F`tT>fN0 zU?}H|R&0FqYV9!iBP&`s)*~9`I2@rxxp=*9@tWtOSF?}L@|aUu8w{ySX^0!qPp)C) z3=6bvjm~6nIf!@p63h)O?%KpsPnoom z4AkQtXG-9Di@$FvfqD(z#GD4o$;gSww4kARY)7)6F^vaRAdhLPt1d83vvQ;f`d2J1`eQI+5^- z%I5C3COzW&3reGQr=;m=@J*yN^uez79%lh)YMpn@Bor_XjP+@?7VW@S*$4l;=GzSP zBAAzQB7w;FpqiNa$w~RK$nEa5#V3vtt^DN8Mh)^*Ia>8vUTV=APWIVZt);8{HP*tV z{9-h!uJB&zQq0gxt}zF|G;QOQqLpD>tbPB_08}g6DGSYqt$F5c5t0;m8GJjw@miYSs*Ry^g#0US%$$0T&cv1Zg4fW z&{@q#I30%@7;j2`gL2 zqXRTpnJfg{`%{Oxtyc{hDN zgYw18w7%SD1z8llvEXfJxEaShmi_OW6{@=g2Ecc@wVkbd!YrOunWp_ z+N79sqhJ4LhUs=9T8^*X#+ zV0E&^WSaODi|k2)X|~CM)26QwM>qMEI&7d*!kWsu!h8dGKy|sEbd(Ypmn=Cu=oGxsQUODbFDGvRU~kjZdE+vmc@caLLdGRVGV`bwXDR-oZHEW# zaj;u^qd6pxnU*}GaX&#BQ&JGSpc zS3v{jA<9(3GOcZ;B@s#2ClZombpb^zFyH8R`Ki74u3X~77AN(sjhC}C{FhWRZ{pVC z?x)0*>JbJ)oXNPxC-Z7KB$daC#>Q@rQ&(20h|nf_1!Y8m;rbB!C{&SXLQ0hOg~Yn@ z%Ad<2UzgtnQ?C&zB|ujPwqn1~P&RD0TJzGtlr5E@Qt61MJ>SzP04PN+ctIhfNI}X0 z==f{7#MD3lJ}n-mL#pZ*%|guC;@8%zew_U@S~T?KcC93O)9!8(Ag>5wE#>I~*&^}y z`ZduWVqbgA5%H@4DLGr`nI8f|y($ynE2BjLbS~?2cMC-HEC{g8Iqy>C=Cb8;1-<+B zj@p<^vxxw%iB+=OX5_sdJ$Z#narGSIP?N$Hjg)KsP{ZR4&5 zJ(_nQV0FO}6@?Isy}fFPOf_-!aqwwfQnwhkePz%dVi-cyjg%@Oi#|#pMu6r=j$(AF z@Z20;0zZcY2AjIDS(=$IO%7_H*xnTW_p&sAvl!^)%OUZC#n-sejdNba#d&qYoI zG3d3D(hmaMhm9}&;=R-xcs=Bf!x79tdT6Z!cfw~Y&T2S?3u$J8k9Ys~?P+k&{f=Q+)>e~-d!wIrAJ`Fwo zlvT}HIwI&Ef!Iz#fGqJNz6G6wrdZ)Lc#T$8==1HJmr4F3!YNusrMMtR&fI_SqkX*= zK^Tftc7ct}-GF+R-Lc#o=^&hS0}k$IA}QRjBC6<6IL^~vKU6>@Ce8V>ExiDUX{4U& z=gs*4O;INbMET%U*xfn!azs-VZ+@hJK5r*kK<6%VqPbbLY>Kig%Je)70RKM#z#-kq zPazsGK-E7PQ6I}E6#suuK^f#y=;s~HFMty~im-hNqRUl)bQtU^kcfUCO67Wqm6qQF zTwfQwtQQT7&r*fIN5q7P?kzs8J7xzay%}rYzr2B$rKwwOx6I%ju?jGJWj-FhYdrRzuV&zV7vbfQwq~AaYdmXKRY_|(S}T8O(+5Xs7}4M3mUR|C`FUvmCI1JgE!TL<_Lg#RD&tY{ zgIe6Emc3t1(hTh_yD%6(Xlyyh6zwRRpP!4-8CwLO(DZ_$Jr9#`ejjINPY?tG79AFJ zF1{)Ni?Wq@7d*dHP$zB7f8Jev@H3r1WCqy}?Z9@mS(YTi`mX;cDcUKkVpyfW)9Dam zBCI<_O);BYS-;Zw@N17V1UvKeJ<%gO?LqM|l>f!kZ!Pir5`e(h5OQ3&JZBk`^Wo)= zd+X(J|Kb8=ERN`c%LRk=$T@^`!}y|KzPz`p>&Y6}CKe-0To#XNP;dcMon%(SL-?2h zN2Iy7zzzv0V8+hVtR-?>QNG2N29h9=CHghyKRdAaIpe0zjBPBdqn6amxj#=UJo0KA zX9g^$)@fyEBe%8u?lnIOSJNh8S-ZY(?s-rfW_Xp z#ze?_Fxq3-erSKp#{tc$widcd0ivBA|AvhLMuGsiW;Q1McJKd!GM(OekqNZ3U23ly zLJrd(>B8ifO{QXdw_`f6k?x4`f)ahE`EPhePdT{IiIilR9JSwB?NmNn8@|Yo2d-x2M^hV9d?VUrn^#=~DB4`u?S&2GYOI$VTm_h7%Y2YGO3;jZZ;UY!(G7Nzc>c?=ZEd5|DsVE31^a(890bsqzV2$YDYCj zoTTbX%Hk;2aMJjofDwqbku|PHCf=CX42w)0GfFxl-vb*a=jQO=QE2sxlG+%}_4Do$ z`aA_)SKv43-;%A~F3A%bkUw$9_Rk+gtv&y5g=w7^*36t5c52YKp8`9_vHVH=B?N3r z4^SYEsetu}C1bu38L5Rou9nxWq?qM&(!+Ck1_W5X`IYq~FykPEoCK-Hf6mY9cy3|91*M91Yj2=>VG$q1&k}(G=^mO#uUBEOa0!1p)r!~F`g$4A{N_Si* z2gJ3#K8nx2h_$-MMcMb8PUNPOpJY3zD}yfnR;Iq+;-hkyMD^J)dcz`rdz6bt46^0Y zvjGL>Sj^~45w4$HmCv!)pG?ag(1;tdp*S)yvm^ zpcOv@GlVvkeY6{Ll|iGv=jE;Yt0km}l$XLRueO}qW0Ut^*v%>%5A_e&?E2?Mlpj%Lvm_ufiw#kSpxO_f1D zKbOO|q0Q$o;1>@o&#`6GY-R#wAUacTO=2C$z*0H1RyKg`V(PM8&Il##eK@tX}p4D<+KhoLlR2qJZ1ki?Pns^bOgQ z^o_qmzcR0E>TGX=g5(niuH42y$P5Dm>oBUrBJ0a)Wi9EY=(G`j!vJ%jB z%5R9_-{iu*q0wlKj_=gbw8?5?_q`2H_5QT>g;no`cxRT}T4XSC^8S}jI1e7Rvm{dm zji)Bo@ACz(y-F_NE9xhLYbG+I}^y8qZrR8_Q<9TnF~bgnyND5r$87jzRA$dZJdX4=AkC@5R~#k&N__LB|lt z@i9g{KLr*}bA`GqSe+UnV9aWzpSw>P7ia(gLz1&lUU;9JElSzH{`h1$&`!bngIjr| z+olv_SS8UYJyplzHWJT&DxX2RV9eiu9H(H|`V(sj#Fl(mpSSVbZu}&n$<9f+cnX+x z5FgJkrQArxg7VI_OsKN+a7_O7R=Sn{_DQ^kw{3|-)XeQvS`0weFq4a<=nP7dE}wBZ zEZW;_h=eMXX>^^QFZ4lxS7cG2c(m(qe@e+I|JB^>+{9a2c72tFBl)*hN@kg+lL05r ziMF+jN2kLzseO&r|8d2!02KNbXledDgkB46W+c@%$-jjudw!=n=hB=PPpk-NqLj~e zE6;MwJ1BE-I7WSV0DJc|>NDYhYl%?w=Bcnw*9%}_QF5nqMbsftoW_N+bQp(z{G{Jz z)1Vw<61H-1MMcd3V>i5<0usQ_kUBiD)n2?TEQ`e8kUa?=CcQV;2$a`mDFQ>=p7B!QQLcx19A&lakGL?gfa3;gvEji( z$PcI?AG{w1NuFZ^i8(?M6isO`jIA+5E~egv4iu_H3*5~8&d}gfwGmLihob5oI3B$y z|1@J6kjqUcQ^MTLNt&Z3-lSY6Fnb1YjPLSdZ&N@9M!ymAPjB*(y8%z|-W8WJ`Cg?p z*ChKD{-K|kZMCG9mj!V35~cI{-91)dRY<5_p?SfQ;NkZq9uA_ds2R03IzulZ(_)dQ zD5J#3$?BDywI{`(DARsI;Pb@!ezK#wQ0OWAlY{T;an{aOcuGn+jn_j|HpV+HMi-@z znSzA}8qrpQv8&6ky!m4&cPs%n0$}%!8$n&64*&SYh9m}Na`!I6=GII=7-u~&-X)#k zdF)!b4`GTDkbDuRxOi_Mnrpb@$#Q3L-cpD&4UDpWin7f`dU8zc`~Dp5>P#Yjz>~Hs zN#);z)HOOzR^%LmX%nzuds}yEdV~lvSb+yCb&nmi&R$>eH%HlW zAr(ywYrV!XU3~mjBkeXz!q3Iizt|9TPE3naS-)7+2Gv%f-3P{o+; z7-Fq-Jo?x~o(Cpf1_I*Tz`p(esV*0hO6X91Rpzz{<+a-rT#Ys2n0;>NctzaR=DC?9 zcXnx_8!asi$dSE`Gy@Cq`@9#PkF=A6JnMGJes69p|LBzoufM(}vfJYM)ce++P^ z+#=nIRVdiZ^8w9vc?@o}t22R}l%M;y0;;cL=#pQFr0_b~Iaa~9O^1QK6#hzf1103k zVT^T}c@%l;1Qi=vS+5u(%Hh(OhhE&U6z<^|KCA zNTTmb6h6N9F-+*8Ymm>EZ1D2Jb8d(mQplrFbmScJCX<;|Z3iET07C~uS&z+ZdwE$x z*|#-5;(9?l?p15u$VV&>uo_iyz4LsB4-I1V+~Q3kC9yOwFrQBHh zl-6Ij!}TQ;(2($6ZV3>cRvCHxPH1>1pyMcH@jroL0CKl6cP(4bIGKWQC`%<-(5Oc>EcOkSyhgdAPs|{zacW#fPUJ^Lzdh5S^kkJ!%4AatiU-Wj$R!a zVrfx8xy7iBE~O1Ldyr*BOUvpElcCYf!wLF90EO++=i^(wUiX zND{s2VqPJ6ZVPo#FgtuAT|>4bb&lSvN)`I;(S>Fh4s~#Hw zP%S9M`9$QMfb*JbwQ9+%@f<8r9X>v4gv=3?3W3&U!Nd~qX)2q5gGQGCg@*x8I;rZ` z$JfN#iviea&w(-L61_IXjKP7dn;K=Fp{$-c8VS}D9~BJLm>t4nU+7Qvbd&!h@;N5i zqwJ!^P@YkHfO5s-cN>LXdHaehlSsQZs^3e{KF@(KFFKji`235GwX8!(Z4DuQ z5WOa4*V=oV+!aC^`?1Va!fu#?LWu_#x(C2-D0)9-+^8RaPS>oQ{|%nQ4G&|M?g5voWoM(xRsYuPI0TDtsDbFo8}iHaZWuZ ztz4I?y2=C*0Fm4hxv~`$u(j;mMLcO2AjJWQLo^Pqj_BI}XuC4!mFq$fuNPR>bL*-f z4DPTNZZusMtLDU`%*%$e1_nHfqat8_;sC=U-7#DcGEK;xh+obY5&*t2fD(_`Cl#3cr9+pJ@1lJ+H@IwO@5gr{zUXPYnC zwq4o6QY>?l`2hIhwsek6QJ^-_(OYCkY zmfd&0i@N2Y#mR+11C-HSVRn0at^BXeQdtdDO=AAT^|!NfVeDq|x!2ggXT<33a=l?g zV`S?;uKjEnTL9cyXSF#PQDEGE3)&I^$g@Lo1}8iQ14jDL)=0sOCkvk~K*n#Bz8-OP zx<~%WjT`$w!R+<#IwfW*m%TsjgRL}oot0frrZJ`4oI%NB9Y*<1vg$L5G_$L8qk5;T zPUCcw*F#i0`Zu)$Yt8t0RRk>YXw5w&`NY2wkM&bh8|yW&o{|PF7K>t>HvRK~j&6$a zsyejv(6}x6G=AZQGYz%2kn~JMeNG_mXmqvj@7q0$2LiiEZQF?;kfnxOAxZ=)xHgpS zkMKmKM!&ZMOuq0HfGmT<01ptS3!1;`KoPNN^iHW%b9Q_EJHy0H@(XddgH}Yzv>+_| z`O%;4aj};LJv6kzeO*kG27d=tDf$MDA4q09e7y{BiB-5IU`HYS`NO>L;{$Gf7T(L# zkd1j>h)$k4PYf$*=+k`XV1L$>C8bv*o%qu|d#Sbw;h$)Xxa7sur(&j&70bJ}V{xrx zi)P?N`s*>M0zz`tebIM!c;y93WciY>r^X&xA0M1-kWXtAuG=X2eZ0 z#5)IAIUNL)Ze!}MFI`}4+;Ok(Csi-E1{W4wm1}4ADujAFv001$_=KB$ldLN6)so$T z!=i#9qI@6wD%j4D@WFg&_H0_z;GH)>=~V~0C%s8BIi&hteiT2N!;rUJ$LstG@pqa4M`zgyT*fU$uy0Dy$lW!-iF zAc&2iM5k}{KO($Enjr5Nr zV5CGj^l?7zA82fF&AjP=~mWsmWfbt^|ZXl}2AO_flFIDOdkSiwPIh zrr*LLFokJlddvIV(`m~pA!f-iKCS^cvg%Y;+lmcQHkB6c?2MRV@_;ThEd1UL$J-yBp>xGu`uY&j$9qDc5yIP2cEpv4F-^q65PWKARo zKxWd|lf~3r_RjSUlEBN2QuK#HSClzb^B27qo{)3%W2Mj-o6pCyqk5|rS!S3jIXpWd zBI3^=vL$qMBJ z{t`#lTTEfbzcqD3pv7z<{%I+BoIg3P{_CvMHO1ZTkEC@*6dGlE_tljG!5$NPEw6^- z7)DVz6RqzHn10m%W7Wt@Ra56S{%OH~k8cQ08hWlN5E(clCc`>7#c>~nkF*DMuM@e(E? zJ&Aj|=}xkpq9rwSaIRsXFvM6RBP9I5>^jS-TZd91yojND$T;Sd@RQn}E8qksTe+|l z^Nku_SS-FDdLX77^}+CCkgu+YTKtvpFXW!q$iGBwa}K&i5@(>@HB@(GGk3w?GU`$S z?N$Py6b^Kx5_r_a1&`6z@|@lb%G-a;{j=XdMuruX1vUDO?VUjl8~SMTch%~(dT5qDX!o(Soe$t>mbI3Jkg_;3c8ev?OOH31Coj zweH|_y6ElIB$pxjRb3Jub<~4CF{r?*j&m{eqHLCa2R(9t<-iB7^`iSB1zm*^(#7W; zJxrtEZq}3aRRE5(h&IrsdSSguK=@-k__}YAZ|@z1Fef79s*BE#-FwCG|JGMS<1LcW zSz-M%y~LKLf^~vDJySt;ox-%GY3`UY(@%)51%`1!GZRD%LQao*w4{f)J2Y+44`)B~ zIq2g~uTZ@LtB~%hweFC+@YiZ2ojZ8VnYQYA0=h78d$U6sFW| zKUC48$+B{d0W@|Lq>;qLrl-*AV})q-E#^{ca_101AUeW2w{Ynb;F&0rXntpqBmz3k zHxe8d#os#h?B@4?m3;}dk81M?ey1p1BGXer5x-O#I=aroS}INaAhWd?1NOqunbCM+Og#BQ%*}_ZSOZfmpOHN-k(2J~Q0GD; zC8FKpeMsj}P2&dC2nMp>9``t3wHFfdX+F8?ZF6DTaQ}=4d=b?2NIQcT5^q8MX9yF7 zpU(Y_qu=34HSs+?_O~N&dPI&UmAt-m5I!iHNX^Q}G8=sc+N6QY7B$zLWZlvTe6AB% z9St=TaoVvpuvK=9pru-4lx{da^Z?ARaFUe(EfIyCPKHW?N>)KS1cnzg7%r{BZ2B-8 z*Yw%Y1|ra0;I#xgSf3|cmw=2C&IB(7oh$qxIMv>L;=J^Is$+f z+wYay#zjV&mWOg{YiAH@x3m!a9VweF)U`z1b`sao)Wa5Z6cO5+&W3Xdwb(n<*}I#3 zr)B?A1L9kV6`W=c#!{J*1%b>&;J@SprjjP`qk&^g8zBF~0#7G$9dj#Q);^qfnutBq z3W!M+=|lQC=8)rcW2d{tbWWaUQ1d^!l6(DP?%7->0jd_=30pn)?QCRJHymJr_*Z#r z0QfInIOqr~;pdIcmYQ*}ZnS;Q)pmn$lD~%v+wp}b@E__j77^w-b})2U0s%EOA5mN{9t4zkUS;`JwFcH#=iMtj4Kpya&9p{M!GK99f_-|naR(zP>9mZnjQXC!uox7e_fblxuRiSyJQ;Z z_VE#88K*o9EQ$^PJAATp?>dzDvf3dq(eWza4E~%xP|_wVz7+0x+Mu#chQ8`bMTJ)- zNpXv_NxuA0RKw>`i)I&73pLQ7Zoj@gAw0x{R<*(Oy|jl~cC~RgCErwqQQ9QqO7s4* z+&bVY3euB)qetUZil6bHy4J=2pcDA@`VTPnS+(LqaPipah7{8#l}2l}ciPVYsjj-& zN+}pU-;lvESND$)-rlr3?90y|3W9(NF}~3a-x>t!7zjc{PR2v>E#z0nj+Q0sMNvfK zzSX3_5=c8imyvmHxp#v=V~oy0MNVuT3;i>|z{I^ty|l04o)i`Lci^vRfj<2Lj@}lB zPOm~J4B5ERlk8L<0iLn|z|509NXkbthoOh)7uRXiVMSd^u{Q&y(Eo{8-bt_Fzk@ef z>|s$Bi;%8oBXuowiO?O9$evU$EebG#2#a z=+r&rbnWq$gO$bFbSi#zB%DzP31GX^3?xg|PA> z(>CGfsnsvt0hjgZj=yRz7j{vL6Z>lUouLevKmCum+Y4BX*Z>#rfK|$$V_NQwqkCNq zs!qL$C@oa7tf5$Uf-9sXYQ<9rj?w$#Uc-8NLbiO>g*-pQ!c6i7Bsm(`t|&=TH~?)D zrK|2z>1ZyrvzNVG0C`GF$Ms$5q3eOHWd|DBqz>3u=b!G%N^H|rXo-8gUd7;F5Skdc zMOM>?`27KFv`^taqTAac?>_I!A3Ko)=N(lM?El-B(f*sx&(q>&sM9;i^_W-A$6-%OadoUf6E0ancM&(&(T z#KY`n8%e}?we0tdUpGsq*+zU`_s~{cZ65XV^hJj3B0!E=t!k3V_F=e0$=9$!(o=Ko*W;T6y%F!V7+`z!H&OlU&1{v--V(rk_lHD z3MfuQuz5$B=+D~pc`&hOgav+Go$+i=)3>rb4nMxj?gs}&JP=dgv~L{S^mz`ruaac= zj%#AX^=x_wx}@P`cf~T(paEdGN!=q;#uZ;KcJ1BGQV?{4QIEin zaOBERp#XRw?t%x%Xy{I*tKf7ip|-u3rSAuYuvoLW-jak39dA{(B7dNjZh9Z`$uT*H z&o*IR)}3X7V(14q0fSEY$C@`o+c|OENWYbbnun3;PZ9vL#`d*|*iY*VhC_DD&2( zZNGZ$6)MZO1P*jZ(nQzi(F$tO?Fk@}18&k}@A9S(EtVR)uZcz`pvOr{>ZSZUQ#X+o%$cvH5i$jpI9FiUn|fKrT{*#J{I~RNh9t-{ z8t@QXbQ~&GS!q}}<|=104Qp|NC91Cy?k@QUi&TkF7R=9~#+Qt;ZP~*O^&ERS#W426 z0uDp*{*aIc)0xa2zVirbld6CBV6`(PS9nU5e)u6wJN4TuB}bIT*8up)ZZov4<*3kO zdMmxT^)_Bo;ny?eP>mOG7~9@jdOW}Oieh*|Ii)l*hNT`F!p^P#N}(Y3;0M;!cw__2 ziZOk;hnrPdVqg_ySzZdI~Sq% zjGP)Osk)79Hon(bLp!+oS~{eJdVKR4{|O?I9XmP>=wFj;=;k)|ZnU%@$^U#Z6!)1z z8&LNo6YQFWKO<@p<>7}6OaviuE+&%u^7@x}U4-ij-&-mtr3?E8c~il+d|}N=nFJr4 zu1Hf#dGY_T7)|EumH6QWAEAcuU8glb@Dq5>2ipujui#vOq*4?tX`dOaY;!Sa@Ll#m zYa-_-=IXc~J@Rw_hAA^QgIO0x2}$qlr0n|=vS_V}f&9;B8CaK#Lp6YPRRhF81Jksg zTgz|iY|1^2j4&2}ShuB*#K#mhdosXuT&n%onWgmZRR?w|>qTL6TTnhUI73+nr#;nl zy4%Lr8zmeo@W6bpzy7YI_Wo;W_VHy>T&lWFIPA=bbAHvGMMk#){gTqGq=J&sUp%C> z97`&K#J8*k6Z_?Q;Nun=i%B)7Pvant1dsY-{9Pb&EjjfH+Ggyr@^P-wcGpjY7rOSF zoDz|hBD0byOYYWJ>G}*=&M9X^*Xz>|&3aR*`Y=B{x}GGZgA@xk zsR*tzzU&YepGXZ@U63WEir(r-#HvYR9hPwQR55kW39p@+Niw(?Q&FRAbGA|6iuo!+ z4pbWNPgCb^+StelYV6k)n668D?>WeX962-!OFxVaDJGRKvx;w4mG^$MpEiSY$br1F zeCve5=PWTf9ty{?bh6>sHI6WBH`};g_<-$5N;5Cde$$zPQ@7Z-!8mY_VvhJu^!PQ( zZCdP7zajp6OuZ&y3;u~9sU{9#Re9f!Dtk0kP5VSWIqAGCjP}j3$Tvt&3uw4Ob8ZB5 z+bI_9m$M7J#)xVVcOI$nQ_}~zZ)K_u`KnS3JXqlO)X1IN)BMlv^fT5jrw-C|H9r(= zr<*R>?xr7Z!(f(BUm7U4avZfsNz{uWR`7k~am~G9Ho>Q0T#_`*zI3vJND8mE(g*8F zDmHfJ&HH8h0@dEKg2_)zUG!~IQ4;wTN%k&lJu~ls4uy)?7g!W#h&{o$Il$@A@fMmV zoy3LK&^ORX!sigCi)4`yEi=Gd1R#1U;ll3bbaK{;4XnEZZAk62#=JN>9P9og{`$$ z8Xmreg$+@DU)r_X0+YTuaYkh@kpz1&oeU7)8g3Hv$Z1q~WDS{FDpOs{0HuTYXY4kx z6ju#tjOKFdD=wLevtJ}hEmnRRp3KdsVJt1PWnlHv3*~I2uxJDEPh@}j2O_+SRzT!$ zX>{9$(?k80Mi4oGu`Y=l-T51?fpj`g&`h~v6v|pV$hX^ful7 z{rd>P_xLQd$j6?tzP*uWb=r9CE}D8H83_B^1zz8@oOnV8Mk&lJ77l%29=;u(h>AOm zfH4hFjfK$+%Y>Anx-@o&yMyQAbyk*1-B*>mQ0ZLXT14^_4Bz=xcd`D*!+d^&w~^+y zr(bayiL26R8QK8^ZKAmLSkci?04b_$wV<& zn`D(jc_{%Qx;)-~f6gug6`+xC_BP!mjuyX z;_<;$?*260QuGpysq!j`Mj)j%Qy2RI7g;m}2C9=1_hlHMFD1o59FqMF%MX+94*i3{ zkc1hjPSCG6g_h#*eka?*%+T;Kn+s8b5#iSWuq2(t2WdMB^hwqN(`?>1+0Eh;>3U*5 zf%4y~-(E_j#f$2U{D9V!*qz8rN1L#Gi2A5S<1`<3IzJCQ2RJC#AXWH&Kk)Rw3Enxf zMLGyRaE`H^hc=X}Iu+wgNUL68a}HVkJ}k3(qUB72%VU*}2bN-mqPb&5JGwFyUj0 zb#ye$a}{B zK0qu|#roYuLMH+@^OKm_y{+a=1tRu4F|a4|y8qXUZY1|lqt7qhy6sY5Sszc01tp54 z#wZQ9i0{8&#xSJlMh$~Cq?6U3r>!^7;4<3%&?$Q&PAC}XMJoc%uoTBE`>=P#$c{PT z^nv}E7gt*`-r60D=O`Nt+JN5ZIy|wze${baMtQn~qX3aA4lAsz;Y5!1oF72{2T#{C zu+PdWY&>2Y1mg2l0U3~9L!-#j)2)S?Z_*I5+9Am6Gk?2?V#=!jZs;r`lUdfvED+Y+ z#rG{Wh?u*^_dttfxDeH%bu{RuPpNWU7`h!L>$OTE}nCgA&pO%I?8vtot!dXz4J ze9l#gsBGCdT2g`e(;N$WnL77tPcPp5@d zQf@EXZEjFA|47I8Ba%F)K0OZ7GEbNqZZHXVhK=jEK$9Q{S=>#7M9G`Ike%zc5Ssf( z-`45uwTPoO(nDdt3j1+rG5Z;6PQ5-N z%EcwPiLDjpe;mdbF*L{W3w5r-j)c>en&g>*p)8drt zsuGN#9C@oE`aocGyp@GsJhp#+I2mP0q(%oTvlo!$>3Q^&@cP{wvC+bPYMy#?dx5=N#Zw<`j=Js2ygXqPF|w-7B;-N#Hi%-Pz^vj% zX*9#5nHZ7~@k!6uwcFE>B}=LPPZ;wmP6LI=TH9RvGt6YBZ3RDBxr|#Kw72f~MQ$sK z9Blqxk;l^6Ou(%9LBbBdK862)W@uGT{G;6tgDf*ihho8aZ>eFnm#F6znZMF}dUk68 z4L7&pRH)f4*KIYq-HdeB#1*E@j$|V5piC4aDVUX5=oat7zYvxb>WfoNL}DLzL3rwrqq9%gUT#Lkh$TqNxhW`RZdu3P z8y9+6@4O+TU3elK=?%gPZM(1veEkfsKS1Q>5O0fs^O7x6DoA5a3fC3>pK%wGy?nXF zH@VJMr$@%H0n@neF;DuzD=-AAIN>%b4F9kBgCp`ruEG#LZ8?}nn8(qJ^?|8Y?7(mc zDMWdEG^#$6bl~5KMw5&Fb}nFz$O$r!7Fd=K<2dV=wYM_I6Hv~@7uW@iADwYi;({(5 z&55>@p%}|p57mGWAsj~=7IDwr%hkD5PnA8X;Kfjf zY5ec2ZBR>oJ!B6ayPkGh72x?rPkQ{gJZQFbw@tJ)m(UGzD^w4;p$~pvEOBgu28sKy zIy4v`gP^hAjL7O*ztYs|@=5pOQpj6%~`M z^Dm2NO2)20Paz7nvi4m;2=ZH(WwhsR)ftE39V@MiT(|SThuZ~RwP4z2U8ztZ={`MRkfN5*s z??5VOI^3o!dU9?X!Z3(jHG9c_ z>pdP>4DlXx@th`(9~iWCIgGH^tWkBBo9%J%Qw0a_iXpR)JyRZ6Zcjr`Ta*ycmQKv> zRy_k?sX0ZUg2ZD2Ddr$|LxDTcw!}P2IAx8M1T8<{rp>(}??9`PU~noJL4BXbZ{S;o z-jarPw8F$RJF7wZ=OZ7V&%RL|8)NU576o=}NX6|Ed?+*yqn04o=xu9d%6$|b)ESCb zHBqOdaAY{8P$jrZd9LyN=oo(*J z<%Q$z&MnC4FV@(&eQz0Hy>+Fn^>mK~Y(q5Iz%GhP3N>PINi|@4x-0MGsNNiqU7ApX zcvblSsd`jih^sW0!Ix4A?VQ673qcDpat=@(hA_i{xsE0|tS(bw(l{_GwNI5nPE7j> z7M)jK{Ut`%{FovPGR5@*byJg=!z5EJ7LN?^v>p&!VYks}4yN$B9zB*(hB8UG=~trn z{Z@?h7u;hZSuh}CGCN1GC!#uKBqZDwq~T}W=d!mo5kBSHXLqp_&cV0L2AtEakISJt zIJG#qkP$$~e;tVY`m6r?HxkQ%0B`2;H?=F!Sq7;)ILNkTJKSw~gWw(>Zr~O6j}9Lk z$o?%U3AV=qi?~+D`SS2q_>4XOmtsrk3Eo(zKkoEzA}f1)8+4>pBES=T4#>_gu>2cu z)%12}HgQA}#MvOm_?9)iO;pY~@TtvRCy;GPiwBEg9D_%JC$VSr7&p-eOh#=QrTMi| zK&<<~*T5CYtl1I=ETa-hwJd{P-bW>#-1;WK_+cDzXsNGDO|GP8W7{5<_4_O{JvQu9 z)8vl}Yq}Z)BHg&j2*l04Sasv4xFP3eBfdGc_a$T*rJ%|>p7~0{WY?%lOBhY z*tPLYq}G2!*!N_~;2^SnR$N&=3?u#1;f)VEY!ZyyE}`Jp?`t zZfK7lDig`gSpX`ur#7cn{yJKED68Y*YpNTVWQ06l>liz-&KwpxAgIX{w;oQ0-h2Z1!tGjl(#WU&vYy#GX}fqOrl=FKR84>5u?J48MPgBYX8 zZBBT0OM7cds)|9hpq4PMA{aWWaSrYJ^O{U7K~L@Is>eXAblx@N#sj8<%1Ne&%ql}yu#fC{}6 z;JCO2^El*>!~g_XjV`cQtyrMH>c-nV{h>;gh&^O&!F!&AH|kAW51fg!AFoy2`_3j2 zjaO45$ncZiuJSYa)yj_sw$EXXqd{DI2}M4%6;%Sc-fT!GrA#&&1QWv(_$!bWl8$vI zzXUssM%0gitR}eoO#Aleawc)g)8DIwF1yciz;Mo_3+LnOuVV+GMkk@R-4H2p)*%;V zebvDT>ddZrEaA6m{3x-{v|8#O;r>lF?<*VxiGZhLhH)=a_RD7B!i^ien;2gfbh0+N zytLG}sp>EHT)LOWy*j+q^ZS&hqc}tBRKs~$#$654k$l(CVP) zF3_L*y3~N;{u$4xm=yP|(nh^s5ar2Ol2HXn<9y{`^yLI|Sr84Bd?wHgQv#|zZp=V)DXC)RN>>65X}$NJF|@mU2V`4)Sf zsqByL2NZ|06%WJQ`nX@sN%(k;=i$??kfx1~&!36#M$F77&I>j$8SV7*EA9&9&Gv@i zA9@aS&+;=;ec_BQ6vt1}3l|jKKgM4matTPJ9)hZhyi-*FeKN2J>3N$zjVjX;W4fmr ziUFCy?zi55YRxa6_3wFSZug-g6lsk|r2}Y*=T}e@LSCS-qhUmVW)`mfsc7BHL&DUZ z%U8Ql1soV!K*4IZx>;<{yU~MHCoZJBM@y8iZ-EpkB|E$XvuB&Bgt#-3mG2UZM9#;d zGdVj_22V2u!`10W?oJ1CPAS#P=zWk~L9CnR!|vel+XBn|12cZgnwq~T!Rt?(ID0?L zV+PS?lqmM>CROUgHy%pkKY)qY9Y~1ao*Hdlg|c}#5$!$U;9Duym#}#Rkl3K@h&#=Z z9t5isYocKB;)R^sXtd0SeCjTR=WkBCDH)nqB&s{a^5fbC=ivIPDBPFjTh_NLy&5nF z%consL6k%txJ!c)0Dn%<|IHpG?o)nw%S;6$020G|{eD(`+`(gknf^sS?-DcFrcH$4 zb^+v{i__5MKxs${$@=dA3_O+|qV37bt*G&n95EeFZ9=w4&)dTR;#QD@sW7Rh!m12T z{*qRVYBiS?4oxhC{hZqZPq~6XwW+!6EYccj0hLk3E7JJERmAge15QMU>%!Cc`0R$b zQ2z_#`m0sJ<A^2zehtW|HVB+OG1Enwicf+PoihD!%6$C}4P^Dl%p7B8jQo?V z()pulPgD*uPUjC4m+h@yNNyjwv7mUd{BcXmvWC=Ne0g4jUSh-Cmdgb$79MB=Sa+j= zg{b7fZ5Q2|^Vz2q6q2~*zQxg=umijOlD8srf=Wo>9`Y-P)V)8~2~OD>gu?NwU{Srm z$u-`de;4s%W~QMf5S!Qf6vA+uy*u@{S8t5%tvLfY$dk(pMdyrZ2XV${ zqJuE4w9expdc%MWV+g`c8!<@MOjaKb-}>?h&>E1XV0PyB)4{b_O2dHm-|^_T zjIWW-{--;Bvzv#cxBYG?^N_D6u{WJbam=HSNvM9{_Pj(10yS3QWA(odLbmmlI=&|- zsWAYqpB#0qEdF?3GM&wh*(zMD8iIe%6#CBEso5tm)Z+1j)FF)Mv;)LsP+#I?`?9#a z`An3^km8Q-ZPdWKHYHPN`Fb^b*^-nZ-2!69P2hMQHnoHZK8+0Sb0og^CcGG?gnB#9 zdY*Tvz$pXtt$Iexav54PIorj6!CUqmb&Dx_5;_;eRNpHo4P{b2L~8Y(kY7nNHT%{g z^EXw(WVPKA5gn(+P-=b>DKZ@Tz`3Uj?*Ig{+TR7O=@Y7ddYeY&C_QA}J3-(AbDfY0 z+cwdW@9_m3UG)|<@y1ALtru${RteHrC-r+AV^|dZV06#dp59^^? ztiZ$*=$|2*^K7J6xSGUCQl?f{DGR*JV!bi#)Z+e#X}d3l@46Hvq+=$H=#z@~RI+v~ zqkIf6)d`Ik)*81wRmDifLa1R0hP2|0mpB5|x`q;ai$8ND>-oF&^$xEWg?y zV!sW+Gop8dmtrAo8vKM~Tfv5n*mwc;kbI>z@;E=;7zlS$6-)r#z{|c7fBySu6DR3V zr;M}DUcK5|>tJ7D)m{x{`G(X&!YdbZ}+E66Ydu*nKG8{xmDLap% ze{jNO@fRmdwkZiC^HjitUZ>&mqRT}QyQW!W)d8}LPDgsg|AObHfxiI{t#?>;2Gb+9 zL!-TR*(+8QxY_pd7uVHeh1%`Fq6CQaKdRp_eVQ{q^cUVqOw z3R|qifWPvDgWvKIhpplmj__^l5sD_WQpLdsT1J~^2JmAnA8xK56{aiT;v`SjT62Yu zO@;5$fbNZQ9@dS6eEx}!G-h7MIf2E#1ZWUWU~Un)G_6bJ9(0bgs_E^_foKDM_vO!R z8GT=TNZmC!9Zn&zrbc+?297bRIfG+-)M*_6SXCM2>6L->OV$)!pFeLCL|$bnHMryO zXTQfUv8?CPh@w?vcwr>oWoo-z7^C`TV9zOM+j}rO2<3T;w&dU4jlwK5x0CkC&+T*7 zlO8>H6BmebAFmia^Ss0qzX$~Aekd)dz7kUX^Xy_{RO%gF7X5-~+s%$7EST~MvqB7_ z;wI+>zzST^Ones*Vfk!ab0P5FFrggpC$ePyNm*=xmvdSr#qPo7Hkr%z4`$CXzQ7`) zkKPr{Nvvl%q~-g;75n2E;=6{`qo-fp$Rhi2!%vzVi}LbWYuIKNtTXoe+?7N51GAgOmOGJUvYFN%zR zA^tLy=qTL7nyKQdYIAoAB#J%S=8u(aah@x`=8T43H-d^zB4C<(oJ9*p2CJpvC)S7! z0RKM#z~DaqdeR{S)jYj-1cg)kAux(7-@4gl(_O=sxF6(-NK8*e#gjF0Zf);e3qugk zKvxMtB5vlqi_j25*nHyy;@U+}kCm-(C{PW$=3K=6%nS#~19Nh-=R}jJ639BcsK0$1 zdsNj^X59rI$ut+u@aY_|Z4Ji~ytWZLrZ#5~Qea6o{#1@Z3E3G$M+A9sk>{|o-lJRA z1v)I}&2I{n*ZgqdJLf&0A!WXWWp(p6VC5+!%DrLq9c0eBpqX5?hQUtNV}M%E%=o|) z9IJwrm%`bc61y16x$;FGz(W(bH7h$qsulLNz__h*X+>y}P}=T4ba~kloTnG9p6;=*z+E8a)!T86 zWzN8Kq>gPSXhdxuCJ%d0MgU0@LO$ak7<2|br)yybCC@`x*!rtfe~9ihnA~RIZM$At zmIYUI1qj&d?y^H=hjzDYj* z+I=1RlL^AG@02&MSJYPwN{{($a&OTkU>eb}n#9>-1y3E_(4Clc>=r%HqjHp?Ou)FY z8_nBM6Ai;7&0de*nPaO$j?0dj+67VGny5zOydPit=tR{)6e9ur6!%KCXGQ;PC&7%6 z!$3XC=tocR4y+sPC8O4DxrVQD-|pA+czg09ZDsS3dpLM1=UF0kFn)<~t6cVQewXN` ze}uxnk@v`P15q5-e|HUhi$BEviaEd)T<6O5v zwpYJtq0TovifF(r_niuP?XFcaak15|u%2I`y)Q~iq_Z>kqTjrV$T4kaFx_#(jhor;%6Xa}-4C$XiDOK6~e32x^Ry-EktWFL&7W~TQ z%EAR`&ao`X#Fhrqqfp2rH}Q}V!V#oY(iZt0OYpP$@qf@K9!_6<->c#lacFa6h*ZJE^tcMp+|%L9rHboCh3^4~dQiwTdc=T6avynJ#fkk= zmye(d4E@F-DQovD|*yYUZJ%SBQ-M{bt4fRbcJ8O19vqQrByLYjqXaDHA&Zr9(g=KTFtEJuH z8bW{j0(L(#Hxh3MZ}N;c3{XTd6B-taXYn4qLG#8w?B>upu~^Gn^#*(_9vD z5mR(MWZCSCE~+^J>AYn>>=$pGU>^0i1~kyJG&c}9bNsnr2jQDm$=Qh}7i3R6xO?Oe zZ<#sO#_R@8VXqvD^*3pg6vsnu%k%bBAbywa~i++_GsX+V` z-l+u3bdXlQjDd<6Cow&C+h$RtvdxP83PN@b^hUS3j*clYdLBON$#9`4Q_~UT7++Ui zfj>+N?{>_sGUUZ6yi<~gYQA7*uEz~b5{ARhP)gs5(ZiZTMeJ2qMs1?qOIgM!wJYo_ zn6rbAdvNMS(A~$05-w7nhIg+I&qf^2U$_X4JO3tqdU%0Z{bN_2BKia!6um(+Vldfq z^d(GP=+z#T;$g(m8D3B0n647N%C{{00#uCbMdw^#@{gq(EBJ9VL>LjFb(lp&O@Ce@ z)uJ)gwvhS|s0miFFYP)k!5u)u-P%!h-WiA(Yt}~&RCa9Kt4R|I7REeRN7sdgqt#^> zo~9g%N=q)zT3khhjHN$SD8Md;bG!;&aXHxVi`DKEh^elW=xk$_@+~FRE{4lmw8FM^ zuEM0t{=gWFTzKH)qTp_?fdH@&LNpGdsLA2dr-k%gqFo`#@iH*_0O3z!W@**b3A9Ho zJw8OM05E-lD#{)3EInX=uRkTzpSGTpJ02jqtbfsf3PNE|EYmmi06*JS`w8~1=1GdN zvl)~rRN2e(6gUa>YLp^g(_2qQMXC#ILzAq)8LrzFh-I-~ThxHTUTXgh+N=&p-rJ;0 zWc?x4K1By8Fm`dB2wM*JnKX6;iM`2iN*-s6ip%JgfrgKcYgCvGYnSwiSjkp?wzetw zLW{!JoXDTnvoX~|aXSL}X~7{w01;8jsE-i5#W^eFs~){0I!$VGtJk90LUmaM*({7n z082)H(rGl@T*biW(K8Qtjt^QKM+^#~9*1I`rooop!xNHU*Nd_Z z9OpCzNFFDmZrh>yOXztrO11W2m4D)#_$<977iF%DOCORlE$C_zfRe2cKE8a6CXMnw zWD<|Q`Q2p1yxOp?fRa(JkHD#c3T_*P2#DY5$hk70Md9O#7n+B?Fhfr+e_cfwq*k6V zeL;;iwo@|;-?HfWw)q|>-;=?c&4RTq54>dSnOT|?MNs}Yf)r@QG}ItEA565 zbm!qKBl)7IHv(&gxp2VyiV)Iv#>LX@);0+KUUEnJL#w>Y?dh2F@}giD+BZK|^te=L z=IW?_z{GKj#gZY)?hXFXm7`N%*W?b}s_N7U_(S61>vHPqqge9)1l091d(G@>_5^E< zTa+oAkz$p2?lWSup-*;3$}Y^Y&h-ohuWHPze5+>9DJ<1cN|qKLdg2-HK<`D!GwZe1 z8p|4OFrO<`KO<>cRmuU>Dx$tpK1J@KqxdMrLSem`DelY8KQA`N`Sh2lV_tZo_#g+u zpSsKJJGqpMZq|^+9on*E8A!S`v`OMTz256Sxi71TK8sIr;Tp`_*40lB1m?l_J92ME zwm5~)o6Jt&Q2>Qg$`qzE%~%ilfniJ*huhM3lQeYuAPT(GipXrRBwpalSVuLuKfApu zI@q0+i8jOigy)4vz8YVXx$R67-N4il(_OrY#1DVpN*T?-3p!*XF`hc07~NGN8Nid-P-!Z<*QSQ?C5PZBYVbOzfF%Zx9F9nwuz!>n$$|IoVX29J z@vXGc_!fXr0~ff08s4z3Fij(Xy`B;Z?o8IhcIwKPw79%E{WkZ_`7zT>WM?YIcTZWL z>VEL_GX-;tfzf9nVfOm@`@F(%2Ul@4=pB1V-@05FSg-{P8$-2eE5dxZ6IwOgHwJBg z;1eovVPx#3+jL`E*V4fd>r*R$cy>#tNjCTs;}8+n^k-i%M&haB=WABRavi+dELXS5 zUS(Mu;BF+xhVFwFSJ3sL^I=s};7;hUx%g2(`Z;WoU8*A?qf735R0NjNv*s*3GBFeS z>F5*1xXOo6CR!T21IJF{{Fa-S%pk9d`XdSip_PzOh@g7~RCE9iRq^T=v3_nnSZ0sF zA)>eOJTfoTN;>iNz@+d^ecn===r`{W%YI1-_?+J87m*Fj%HYK@E-EQCpr{SXR6TEp zyT#Htfq(eK&Dt$mA`0WLQxS8y$NfE+McWZOWTv)C${$I$^#JhVlIV zCT>duIz88T9>UqC;zO`^s?}zCqQt$%wqF?f88qIc^*?;5;i2E6cgRPi5xgf*g3k zRhF8k&bN*fT!Iausd4hYD|?Nl?s}X~zm@&t=FLEZ@$Vb><-FC(rev2QS9pi5 zHG1+m0>=Y36ZxA32*!ZqG@j(foTk7cXFr_$E8EsR+T+79rWG|#!t~x)!aVX>NnVDJ z#0-E@7$UX_4tNC)=Xx$&UM=q2JGN}nmqp92Es7g4L{)T|>^n|C+f`X^*2VmJ{N5!Q zvS0P0W9Zz$Qv!+^ZO!>d+2`Z-Rzbq8i+P+%lGMdcLj|VmnQ-yiN$2 z0a{iZhS1-5@bc-P0|=smvAyd+Fw^Hy5&gXdi#->%wyL{MZwwn8FHJswrdTG%*;l8F za4k8^YhjXub27p43KQWL-Jz9?j?==Jahi*C?xT)!ysjXh;P|afZT^{gR(2uH-a=Dr zN9vBFN)Q@Ed4-pE1SYV5zZbB|s_6n8gXjgnI!-Cbwb60}ppHRhxS0!Df0F_u;~CMh zmO>O7jQvI*JRJ;S$O>(K1%6{8V;gkiA#j>p$@#Zem1vCM&xB%Ku^z^>j7 zjRbr#3kWX-s?{y7@8ViRLkGSUlCRpier&K&>krDfhF29&PL*cc7q=9Ds zrIz(oQP|yVWCn(KMr79iQ$&;vr$nhq)VLULrc1BJ4{a45-dKq3cfn`%mOuQbbiuW_(SnKAtDL0BeWd{|G zK*lzu9dwT3&|O(5VLmm`O=1s|WRm8Qizic&mJ~73YAIy{=vGM{f1LRl+x7|lF##;< z-z3=alnj5A< zt{HI#sKn7WovhOz*WIus;)~X8l=$~|wUq+RggRwvGsk?mG}?61&wnV4{BztFB9Jb5 zR_#mdf-A4fV70t_`i@UqX!a0>dU3fHHKOqKIi9=ECE~!zLa;e=7@-0ii!uJGhPe7m z}TB$o?FkhnXc~MzKRD1pduE_kphT z(4L8cleMDQ0vr9&JD5BDfKXAd`k)4Pv1cT}PiSx4Ci|E$kwqgm1@c*{E!~NYD=#i+ zXwx~gkq7ls>(cfO>6NS*w&?u_x&26_nKcR6E4m-7a!m1>@;uwW3S>!9F+zk5yJm9B49GU z1Vjm#30E{2k&o#(cmQ<`7c64kj|P3&mhWVi&riKnwXsuc%PsJdPVJ&0jbMg|c`yy| zyg0$9#RZ_11=eZp{wt<0a6q1`@JcRzciF+qeY{jOa!^CeZpVAjvke*IEa;W;x!W445l5it>ioX!!{k+LLd%; zP82=p0K<|V)t>`3HZsv7fWTvQ6}d2enO3~_kN+T$I0$?Jk}|2OI7zP%Q>wU_`;o=E zGXRRWS3&jbT{Im})_W=0ya=>=wPpSq>?9FPTjz-d(Z)Jfl`Lc9*pE z;C7U4r5e3}8;R1+Ns}5I-cM+W`9KqP(@iFl$<*Yn6$!jWm%#$%hBISu8_-_wZ_4(0t1{A+l&U_P&~obh+te@-oCS#11_4@$MFwx z&P~uAy|y@QDffHOg%u#;0TP!7`$gz%#)9MMn!=I8*2NyX!|$KsGKm(dl2ETDbmK1B z8Hk1!Uh@GHjrUQ}5~*^Y&kAQVibPVRoY9@nA{EvVepy%gCH-FsndezgmVL5FT)ZA{ zqb(iU&eET!Gh&|^!tg)C^~`zSv(z>^Ol-XgeXEiRdnMkeqcIBvpoqGH(viLar4Gf~ zA`8VZCO6tG5)a;wqViN*w#9frGv^YNWgc)pYc`aOzmrh`L>A=)7;<ojbT5`5;4*zcwr=LH87NM?m*W-G!xbbm>b$CF>nIsIilg8=iqK$u%k#W-bShVS}(`*%g{RZHG zyt+oGi22~t;R;9X@|;G_6Sb_YZBTiF5{tJ=dxSvnD1D)@Ypm}VJEONcGQqD;r_xSl z_x8Ea7YVNRj0N5|tvX=1FrZuYDWR_E+u`m&xLFK)lDfs&ca_P-zRXaHVz%Cx0XK7<3Qp z%MHz!ZIUAhDr)fR!0C%SlwwRoZnYEn5ZLK9SoGF_lwhW`dvJu?%_V{kPQnG1NpSRb z^1CsqQ25a+NG}sM^inxEx?pZ@`AWdFGaMXR0^*p36{Tt%9h-Av><)!Jw!S2dJUb@Y zKpcVF@F_g8;jkDRK0AG#=1-ur{VUjnGQApTq?@w}JW=9W^Wzr@#UU@{4`K_mkQLI|qDeM>f=yVoUC zj-JBr576W3LCL!e?E|F*=3CqP0xP~ClJ|6Gmsc?kMc4J@Cz_48L9%okG5pex6)i1> zHxg?FiJoZ-mh_a;ZctE*Swkfb?n5BGwFLH3o9N&wK`z;(v4kXSu~+;jqKsIFyJ2J^3AH^H@X^54JXwMoRssgbw2f?8=bg7zKBHx5)AiTpQp-Xv*Cbg5 zmX*DXP13w*QkBC--@wEBImtEKzsk#KsRW5w**`B~9HKPJpu$NwXhnp>toX|vzpyzv z*;xuFFY(+58!_$3GV_N;T4M+%yfYDzn(V6!Mi1HY5NHgk>MC$q9TfOU&5&ynprg{_HG(T8M;>0{}+BzO88JJFlbM*H~6yWhMMFj#1wDL zcjG;aY&_j4xR()^{R}l4u~eoUkQ%1|AsP z5|QM$vcQgbW!2Do2DgkFg%-wVmqQf>VzLo_?CI|EkRLr5E27m%T<;>=t{I=2n2f9A zs z#z42Ia?7#Gl-u3sfG{st_bRn=d~z zKS9)>TE)kbRucWC_g+_{fIn$)p1TY!H2jma7i89QAFoMZ=&l&$5Cs>wlV^!AT>&WQ zHdtS+2d@rUjLkhP>aprX;=zrrZAPM~L!;K31U~TqmO$7L-_eGd9THbNHb zarqN|ch&PK_a-g(?iDMLEEHtv8rvXVMw@@>8FX;U@&No$TG@8nG!1|q5nBLyo({*@ zHQ)KWFm*}zQ?L(XNQ-VfPW{#rbdnZ70G&s7Z$r@F9b4)~YY~2igu8XIJw!bcg~)=D z>GNp@hDHqSjq@lSg@SOmpd(61kXhs-qdKyNxyYC^LQg5X&9Si@jdI1reOu)n!Nv_uZnncKzX+A#L5UaT$HQd2|<>aloy}S3D8qQb(omZ^g2y2nIZ6WyLPC>;0_^&B5 zo}96$i!<%3iZylM z;ORCNTQ&$l!Ph-)o7mW2(=T8V0i-5BI3rYI(fLc-CfzmUly91jdwz@7Usu65num(TeAb7bp5F1(vPLKP zwuauqC^RDO)qT!1crjMpp^mkY_&5-Gid*2R(dzSs)!j% z)*l0kvfuz2gKSDAYUsxwu$m;&DreC?+OQ&;ssfvBx^(!;b0LEN*2f$+mvW|OMHb5a zRs;#IIfZgI3KQ-Eg>$E2MW=kN8cX@nQ8!LoKlUC9Qf4fX%o98m80qSAj*&`OUU6m% zQQWeZvbt>!+F<6X*RQ+ei!vpAgw~(a+}HTwy^Woaqh##LFQ2r0mG(D;8-c6BVjNk5 zfLwnE(8bOvOgW-CoXevct+ep*s~Gyk>(Z613M`^CcbVFE zzY+9M`}H{j4f4Ui_|2EksC}F;iJvC}oSki-#n?GjKiiXmS!6upQmtaeq6=70SiG9R zB3JC9ll8*eyMu6h_bVD@z|5ckfrB?5P*cMlS=JFFoB zB2$kK6v2C*v;H%a%b;Y{Kq0U91DLQxGXa6p98$G3hl$zQk5!Vh?6BLGDyy+3Xl%2? z8VC2dj(ma3R*H1<(NQqootVKps`6q%{hG3$-$Lt0vJtoi$0^4RIoqctON(DY^7(nE zvtam`Jd99$&*c#$APaJ%GEw388jGFOr7Fhi9>`76V#9CAtk{P)`j`$*eA7euISMO znTpahKVr#ryGC`axfc57P!IZRQg-RJIo<8W zynzGhWRtSP#A{p*M}+WfhO8Z4NlC}j`=5NM5zqT#R2>l+>4?O(w&Kc$jDkeK?{pp2 zslb%y!9ObXIa4B|^0=>+h9ZJ<+IQjI)ppiEnTK*?Vz( zKnFzsRXa#TZ58OwJY+r3yxW=NXg9?7-j=?cVO;l0Uy=}Ib~*RlEd>v6TAZoBIi;(l zLh}DniG#3@5lx*W@lUz2yxzB1U*fL*Y-hGjK_UkA)%H6c75HHBve(qFse1qb$h6|o z?*pSsk~UnNn+|r?>pH`*^jeVh*LRf=Z%VfOCVFCp-NGmN@7A>k)5uzSsTeItM9aH^ zLW70cN_+k6njKWAe5Ibihcvdjcod$q3i{3f6k>QstJ|}Stl+8~!Mu{)Qg_}nV258$j;X;hiVZ$~?ek#Gcz>^V{BRB zE8b@5B;0f5hC+L>f;?C5#U3L>2i3@L5lD{U6x6Aki?wlF7XT{`c|%Gz@igR1`dIr} z657}ewW-ouV(7k8&eui-S-j@s2zGGnHOqS_QDn=KaJgTrGmiGmdS>9&zWSRetn$h7 z;0EmX=|d-EkTsYmzif2sh-fxX+bnLYC>NJ%>szqj z$k;q+j|%ytfE`r(Y4ozzZF!yK0vN^Le=Fr40*oBQK9iva zP%Nhby8kQ^J;Y@~#X`$q%R)sP`t@sjJ9#omOv?LPU$GA@y~On|r|xR~vI&{MVgX)S z#<6r;v}sMD3QNT3L}PeODtkAW-;4${8H2GtZu`=;%Uf!56scKteZ}gvoJAgh4VQz* zYVBMpGa*%_XE&4AbqiHi$tueMANJH5wG7cIbQ6;2^9LYxFv|)E&fROiwZ4pp7?`;h zwlVTEtpQ}N5S(n_1rgd&V|tBBoMnGA&t0zFog9%eVJeKx+P@<(ENq!~??WE|&iITJ z#h8pw^c}QdyspjXYd`7OcZ9wPb{lxHktUmV2wlw!t%3Z~3A8843uBAXu1|M*QV^K) zNYLVW$-tINuL+rmOl#3q8}04sn?C?V?kRve_=#7@fk&;6&!E)2UW+5_sad|I3FN5n zD-;Dvl;B&GfG-ZVJzua`rZCBN`rF$U8<-g7jG&%0z$qhdB+J}#?ye!y#W)w%uSMor zpbqU~Cj00K#SR1LkiaZ4R##g4y4OKK#&rOzQlyVXXnKjHeJ%E5XUR>t1}u2|t!(e^ zc-W51_9{7J&dN0#a{E_-of+xxp%FxKhGS6IVAx)oG~V^5(j|F6DK0I|k~3=@37f)D z^V_nN-}%8M%jn%^c}NStND+MNQ7IzvJKY^*sB~XP+pOclv|y9dNEABU%X+~IxO!5p z>zsi&Uf3Ll6#m}vRwxokM>=b5nFa

$|;^HF%f3KjedTg5;NDznxoI{C2&)wej=H zHFa>pafu)=6W!Biq_I1JV+(7yna8UWu@blI+#ZD-KX3(Pf%S-VVN5eg$-E$jC`_w- z>1`SDZ1X6HCHz?_wou|C31O#Sj^^@9F%!0Nbl`e`ysb|$aJGex!)bH2@Yzy2)wd1; zO7W5Aq*xEgI=>m6oEh`*>@(HEZqW2yM z&(z)X6nN5}(?(5_?gFm<9m;|nxVxa-Ue0!O2x-G|OC|F!K$QX6!r7dQyx>lgk^gktXx{)jGDdhN~wBFkC_J6v2r;p$yIwF_O(T7YzpRW1#AF3r%q=Lp9FKbuBdaUjhJ#@51NL=7a# zyIfAc#4Z4Km|_j*1;nIjAb(3XKpdh@D*n3WY|LdrdFX}`K_`S736D!45Uvo#bRWs) zqN?sT113cV%$H6~KX4@6 zDG~-EA;EG88HgA%z%vAX|Lm(VXV-6Qf6F$1@BZ$P-sE)Bz!A%oH0_c*ndGHQ5k`

BmKG2Ul_0~2Kn;R>xDn?R9dzdHRuW&dLIhy3f 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 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260517/20260517232002-Config.rsc b/MikroMaster/20260517/20260517232002-Config.rsc new file mode 100644 index 0000000..89677c7 --- /dev/null +++ b/MikroMaster/20260517/20260517232002-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-17 23:20:04 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260517/20260517232002-Diff-Config.rsc b/MikroMaster/history/20260517/20260517232002-Diff-Config.rsc new file mode 100644 index 0000000..4e2228a --- /dev/null +++ b/MikroMaster/history/20260517/20260517232002-Diff-Config.rsc @@ -0,0 +1,35 @@ +3225,3226c3225,3226 +< dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 +--- +> disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 +3228,3232c3228,3232 +< "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +< VPN_No_FastTrack +< add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +< out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ +< 1381-65535 +--- +> "Mark VPN connections to exclude from FastTrack" disabled=yes \ +> new-connection-mark=VPN_No_FastTrack +> add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ +> 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ +> tcp-mss=1381-65535 +3237,3241d3236 +< add action=redirect chain=dstnat comment=\ +< "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ +< src-address=10.30.30.0/24 to-ports=53 +< add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ +< 10.30.30.0/24 to-ports=53 +3244,3245d3238 +< add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +< out-interface=WG +3260a3254,3260 +> add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +> out-interface=WG +> add action=redirect chain=dstnat comment=\ +> "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ +> src-address=10.30.30.0/24 to-ports=53 +> add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ +> 10.30.30.0/24 to-ports=53 -- 2.52.0