From e6b21710727e796c50458b991da67fcf34b8a640 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 1 Jul 2026 04:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 01 04:00:04. --- .../20260701/20260701040001-Binary.backup | Bin 0 -> 373576 bytes MikroNUC/20260701/20260701040001-Config.rsc | 5236 +++++++++++++++++ .../20260701/20260701040001-Diff-Config.rsc | 110 + 3 files changed, 5346 insertions(+) create mode 100644 MikroNUC/20260701/20260701040001-Binary.backup create mode 100644 MikroNUC/20260701/20260701040001-Config.rsc create mode 100644 MikroNUC/history/20260701/20260701040001-Diff-Config.rsc diff --git a/MikroNUC/20260701/20260701040001-Binary.backup b/MikroNUC/20260701/20260701040001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..08c59fb7269f441dc71dd131c9eb5c8799228579 GIT binary patch literal 373576 zcmV(fK>EM$sF8C>vjqSY!&L^--ywK(sK6X63#l6b00000000080000G;0Fj@xXW~h z#v%UtfPoFdXUeaQ5Y zU#N~1^kZE6;{uiD@ANa8?lCb-9hNWSy*$Q@-h@V~=8xT1o0eL+)UG=B>b!MbvyxMM z*9W6#M=HlisE*%cRH;hEs~?xd{64S?GW~<^pt6BY`5IHML7{nQGW5BcOOtN|UQ*j{ ziy39hiVrW_tV+@kgSL+qFHUG7MW^3rYZQ*Pk4tPb)qH;O0g?EPJWs@&4&a%ir(#3{ zaHk!;4)e@w?Q31*FA@8mAC|z0=8deuf3M}|OFDF1yAb`iLijKLTMOUi`JT2Rl(zakgioi^IU;AOSOT6jI? zB?<6bLJ0$!@J<_8xORyF)vAxnfN^^pqoy#$%Sc*>nU zeFykFgM>yiv+Sv!bN53bmfj#iY0cyUNCK(u_IovAAG%Vjn+5hTiED+dGzou~a^Yp& z%*s-ThICei7;1vwk$MSUQM)K>PBQa$Jk;$D|DY4mspr9%2<+eXUx*Q$op7qP!8`K2 zn5j^&w=dbP==Py?+hH8;{^AD{nWY$7I#sP*9f(!Qk&Kd{86-q!hjr?ZgG6BWm}fI( zv1C;RJ1Ra|68Mb$z%yKL^{W><;NPBO=af;G<|gJE_O;8d#$j8hkTF z>!Fj0lWnGurib_wrf*j)jQk4?-T1GreQray*i}(zo+Wb)HA)rSzx!Y4sCU_W;HgZe z3{}T*0G!o)7+IT|>J)**{#g&^Q(@>oyeQ?O0nBXk<|P+De0bdV8Ku@v1(Lr)qDB6e@pu~6k6Q*-C zf>tYNB)7c!nqu>Y|43*#o2+2}&XFDlyX60K64}`+iZcCD_W@HBt$5D&bJ4*{8M{0 z@niit5L_zlcIr)UzAB91ex+pBO4(@`!e7Dyve@ko>Ks3-7bGJalAov0DWPl1;~e^{d^;= zi337VS5?@8UkA8n&R(+m`7KbtjMrW^f_BJ3_C5jaWM)NT*`807``GnEiv9F!c8DVI z6(Pi&;z*|P+?>uZBh+0cVjBvsJX*$`si(i1*ab-V8n9=GoR2zqYRzZcuuorcRK&;i zcE}kas>`D(9~()T4H>DRmCKwcp6P4LL{vkZPK z3T0qnDWyLh&Zg$0aCZ@uRn^T*72I)mxXS9PGVh9`?HByK-I*KOkM#Jo11BeR|CFU! zmZwdcTl;u4ppK4b|7rxIe~m|EB7rkJ9}O4$f#C+9-d>a0DbIe|{pQ<|=qj%)=JWG_ z`ZKTHcG#GdL1bE1I6$Tr=O0tV6DhrM#SBtS-)@_7U6nY|pQPcwOcdZKjvNl|Iz1(j zJcPuLiTrhbU(eKD;ZYhW><44Bu)|PXN_UIV)eoZq-*`iZ^Q`udc*_M+L}2Pho+H(4 zbw}QVyr;%G{;4_Ae9L_2qT`i>GTf*$8$NacUZ}5WA_bZR3iX3#@$>j5mVA(Ia%w6C z0lz|75xN^358S=h8H7$XG859PMc*^AkyCy{=kRo*lvTe3;%)fUryeF%63`g*=L=hy4(Y0&P0O-DP-^jqt&oRjj+ z2Z^*sCKk@yl1JNBQXl`xSFm-9(~~CYT7}8ou_AQv0{HhA%U16UVErxH^I0_#1(o)r zy%5{;W~4&#-L0R;jnxWK{=}FD5|CVsB^^Y=)kBVLK^K81qGFJ?*#xxzO!11cI zT8{{z_;k={k2E-GTRFG(8Fcb>5BIBIqC`Qh*gRFZ@~<+bwIN)dkEeF}7ZW0=LO-=s zoIeK@h|k@n96Q%2Y4YQd>%)%RdfQ68`{7aOkW;=z1W>*sAh zh-OR!JbSglVdR~60`0T82p6_59CYp4=tOz1r+DOc_!Nu!fyWLE0pO;IT2wlY9c~XY zM&cF5nPg25JjtaXc@*BJ?5;olIN%hCYU)*==~sTJ=WRX`C_c3rnoDWOxXAut* ze`$zH+mUA}5vyEXRuoOQ8V1J_`5)`kXNi+TmH;<_NeM-TZxF(Gjuu#B0=nhC$oCST z6Nm{_rry}y1={z2(>ROoex`hC{3#9a^CbNbuUlf4Qipa1hN`sY{3K{K|8tG&Zg;rN z!40eTEQ)3|?J%5Ue)U@2a%k=5U8wlD!txb>O5G>mEZL@ z`(a!k_xdK3Iuj#t+5u)87i68@qrmwjZ?i#&8<_b)!mF!9U=M)mJ~OHh5XdEvt!Zta zejX#A1y*MsH)b?|+hfb$kJsK?82m;6q;ERa+)=jDIhiVyXcDTrMEpH4_o#PnN7`oq zKl7Tv1>`C=X*$}J zFZPGY<|lEcAdF`&_tf|p86B1#6|rK;j$fH-om>;ti32A4h8i#%Tm~Dx@B+Dtc?^Bd zZh(W?KY*$Xdw6r5ky}RGK@UT1_YT8>!Y0ptQiK1veDSs~Xo8ZXd0^7x*P1QDC zDH$3T^$TymC+ZWxzJMb=&`<5<9$P_aX6)pm2yi6J1Id!GznxEs5YxVQc z;Wr&ewHb>7peG5=_wH9K5cnf~f90rufi(DA1XK)^Y>OlE^--av+Vr0j?jq#%y;OVg zd}q`_A+E(K#`3wOSf@&baMLeCU>}R2;*&iZuezAwao&yT&V-J z*5jcz)C9Kk!C>phfE(|ul=#yOL)mw}1xu;LUy$S|rLjN9OyLWUK$-rM*@{liKUWT+rrSGkJk^pi@e?%Djs5B093jbtTg$c@J~RYA!u* zKZHyS5d5!B6ZD)Wpk$s3;zJh{b`W-Q?%GbYZxDPTA3-v80{fpXbqmWSx>>V9L`z0W zOsUVl!E;waoI&*Htxu@`gul&u`rgrx?tF#(;lkgGJ51rLfw6J#X#;P_n;f*Li%ZQ$ zFkb(E%LpRC88Q4r+?&GIQXIz^o(5d@kZkf80pkyp7Q_W-%56PaXTxITRLXp=;E)6Y zlqg#Mu2SVT=KLaS^1V1D@0VOfyUg4y2Ppe7z(2|RqFLtF?NlLKwmlsziL6q45D;WX(((oiY63~;2_usufILn z42cguuy!^?%#?j{nmFlIY^5d_gd*U~D;8kys~ z?>Fk;b+;I#d_3lDgP*A!z+pXNwatNWnE=VRKpe;CS-I$qO{X^w4&tDx_2(i4w!{P??d_A(B*E-l4m zMB^wwii9)d-%hJ#{Z8W##;Yq3L6Yk$l;!%t`!C^JmdaIZ0pjDA7EwyaY z43q@Rkw<+}Ry?*P?wN5H8jw=B%YYlLv{*EQw_8zo4~ks-gvz;egrFTii3) zh|LQa^c`N?pZS5#R?#*dbRyXJj|N#A63r!rCfi4pwJz~0VI1>US$pIB813J)WNG_}HmAhTv zqA7ZQ(yMiTK~tC8z~L44i)V|GrDKLx!Njba1zQwwk)ylP{G#l`S8O5~YBDfCS5`;O zb*~xb$npyN8g(!o1gg}AZHzDI&~l|@4ZCnN$N_Mz?95OGjuleuJ@VrG6uO-m!QqgT@b6lwgZMnMrZ1X>Pjyk|d-Y*>&1VC223grYfi0r#|kKqu6 zGysuh;T|vlxf!r})7E^-NstP(RCsb!Qcu*5gJf$*p9?_(lx>nW>^`Os8 z>Tn2BRWMDaf1Q8#s*vRsv^tJmfhe?0Q@MT9(518?X)C4#7`z16Y9i_&_7P6I(Pfu$ z#8bt5FNt5u5u>{A#C&e|^;1^MZA=rr;mVP5n!#155cR_~spA>Jck-oIWW%y6nk7t% zmrl20CxS5nBg*WlW%+|C-=^-wd^{eR>Xluh*ZW0!0uB@*vZ5OyheDfbP+BOyi?mC1*uJNsv9khv{;7fY2jWdpzZ+q5pY?F^!I8@)7t4eC2a z{Wtk5w=kQGM+I<3Hitm35^heFj8zQe6|fnoRXFgam&zF zL;x6RCO(w~&53TQ^X_J2eT(ocJfR94M%}m_}K;pLYiY5lN_92e!*d&CGpF^k ze*5aS^9Zm2%!rG3TflLjdO{->N6Du1|Li9yO%DCCLXW)B0Fcu`Ih;zB3@T_uawMs? zmYi^>Q8orauReL$R&A)O=J7`~@5Kgnw|ZhJaH}bn3u1$MAD%_fT~iuq&1DuBi3F|H z9;-Gw!z#L|3vF>p4C31q@o&Z2_?aez4f=R8oP-n=w({r%L8MzO#|($L1-k~50CN@G z3ya6TMmnH>2HLs-Wf^VE)p_> z*}*S5f~2qdi5oC)kfJJpdct_M)_5B+m7ZoX3ME1fH9b$ZoRpyUaqI}~K~eo^ht=$7 z7&1Cl%&8x{s(hqSmd_7&rmgTA$oWsM8L&I83y@q`LQ@7SvpdD|upXo8Aui^)71yZZ z;{TEBib5H29A&s>Vm2)xkYoTcu7s>y04ywB58gzbcHyY0X5yRO71J5Se3F2hfkk^9 zbfUi)?xE_AWlvLy2IjLJi`nr_G`@(s&nQCu*))RLeS^diJK1$CY|Zh!m9VXXLPn9e z0p@$n(RT8_0m%6hTQ^&j>f4_|P7Wb9?hnhYhBUA0(fZPL(xc>haDAiiHe)TLL9PjiHcf0sp9HuHR*b|XXyWz zu*wqqlL=KzO*&@TLWsq%navk4EdcjV^b@WTk7h`|sMpnDe0zg2J$2sp?hA`i;l2v& z-8C7cIqnnpz4>0z?=*IgITwXTfw-i32;ZIF^YNhY-JP`L!0pu6baaM<%Fm;s8Gfu$ljZCR#|Y!;vZI7k_p|@$dHqfl=_-n zZ@Zqe4P*3WY`w%!#8~Y;!~oTn^TyBd(XXoF^tGEBeN_UkoL7oVV$tdCiPe`Bq$ddmzm|XWRUJI+`;T>C@|Gi#Zh-9s-r)R1 zPdBSM@4q0U?${)72ga0*z=Kt~Y&n(Nhr6S;$}odn;1QRVB$&6O{|ZnIdo#d&I-WKr zjq2B6_Y}bC*jcKSZVxrwd+B^>auu*L!>-BbP{+*K4ygBYN~t#|^^oP-ElXfppUlmq zKXuVX%=TK|K%A0Ew>T;NaaKjVsY!#axOIyuy{QCx`EcH}t`CsXH&3?}){^e}Vk~tm z-2|D4Q7QXmzFQlSDHSF1y$=-ovvf_o&c;SAn;LUT5WBxZ4(SnQ3eA>iH1lb*Y@&6_=^u)k$1)0r-YJ}ASqB^nzu8p*(=~RP8>4ah^>}3ho zgPFW6oe(C!I|Y4~YF&P?Q>db>%-HK9vu){JNh4Fu_N@X)`)XgD6(kQY7724j9#mQ) zV)Qmu5BC*W!Qo5`)c3c%HTlWn(+BB zgVtiEf<#d|cJ^{U*I1&Sm=Cl6{O8|Kbd-@%8xT!#M&=FaAMfnQ)kJz0w+w zt%SHGu+Zqr*}oECvz>9}XBodq%Q;{BHM{0GOVSaZUUfk44yQ@0856kb3T+iGv~m^g z^;qiBIHKQu{8TbTLe6GjnI7h57d#(Hmj2`n8QlA>zxsQ$wSw8;92g%(*}`u8s@2|4HOM zAZ|1Pr7LjViu;v!xOR`tbv@DKp;U4)PzOjsbjN`e3j=YcTTgR8U(*DfXT?Q#hVIb{ zZEaH9Q@E(2_HgVkR6vg=uJyMRtA|L#a6-2p92p`+*EGdQMu9&GIR(SqqU0xs_?I1s z*tR!HkwJ3u(SEjB`d!*r;@Lh_2?^AH;vR@Db*&xTiB&pSB-NkQ?^G^H)0{ntFYbv^ z#49p~HP?)DyNgzTI1jOq^>-6pVLJMLv)@nfy>ec?v{2ek@c?360zXH>ba(XlEeS0T z{!L!b*K8CXm+r%8(-T0th33JA^pbn9jlFQzb_OF1VhTI#AyF#2)-|lw!lSn`3Y#{9 zB7%Z#EG6{kaqy{F-%$(Do>8427wd1mUctqdR&hter4e1K9^2<`sw) zi5jr`ibnLFbz^>26ayTq?^%}aoe|+LS-gYN0vx5)5(o){72JZ7*7c&?8SQZd;qodb zhZ+ev@}_@!bL=Y)_)TL27$AX>o*T}IUguDV9UQxN zUSn1QSD5KQA7LAKmW8U}7^7ML8x1BsF=)Y$epPt;ax(Xj$%qbyfQxC>CE9123cPB~ zvVDgCO1)!J0$wW%(#wmDe5d;>E#q~Q3;L%5>HToIL&M3uZw?{tE-RrwS??yXT?$9K z-fzfUuC&J9bQyHoWzGH-K|quu-(CF~uAq=xW+N%$*-VN%UU$?Z6qhdu-{ui}hBFVz zdS(dY@)fIHR-2nOPTY(S4l%Naw53>eNQ!UOARPqa|8xcS0Vo`f4`?76xD?= zj#YnRu)JAPDt%jo5@?s2-ba(T%x$qIR$C4^a<+szPk&_9=|)SYGHs6tYCq1x-S*Fd zM6}eU8+7e~2klj_h^rMAQ6fPbsymdY!3EdXOrJU)Anis(|KA@MiJ<-jf-Ok48r6$Mr@wR_3@>k8xz3iRaFm zZt1a={Q>f#KGIy-P^_^5e!p=sY$1io5#J=D``lz zVPxJaO26bKeAW5kWHpJe+P$2?5xSg^%fY1$U=(x5(NEo=KI{F1s6qC}PbJw``#~}} zs4h_pSWKPE!3_Yw3#s4%l%vxPw6b@R+BwR;#LT}53EGZ=`Xko_XDj68VSqe-=A)rR z=`aN$a=Wy7Z#30pS|haA4}=WGY zAyQ8EN$_)~qVAZdYMZpE=abdlb4^KFgyOG6on79z`=mlsA4v3tr`tH}1>ND7^n?b7 z>)GA}J#QXv4x~1p4&!e%5KgVLU@%vr2}Lh!4u*t*sgCr$(t#zqh>M7(x$ z?5fSQ*{CA{ry1L)b3X@lw)(F)BOeYnLPFuHj<{>Q5~=2*DnUhY z`|Zia&uFJ0C$Nzr{w$ro2kB`56?KVq=laaU;6_*g`f@T-FJc%gq7^3KQK^{b$G>Z9 zt0%yYVHJa1&(si&mTwbI4uD{Wn>R;Gpi6}nl>RI`a*>!RluV!J zWdfaqIT{WBSN_Eu*XJbQfH3v~-Sr;Y{;O30sdCv#VuGC=NLyGwhL2bC*|F&_W&C+b$hPfh>9R)-qNj$X`Kd2AS5wxASQramCgEe&EcvzQqg?9y&C^54u@5qKCBTvbk@Q(#UcnhI z#o8zzO6GtJ|4LM`=;DJJTErrD3=0=x--GTHOVclvHQzQA!qwA{9JGp8*dpp;u)Nk zJlNs?I0VZD=B;5APq2R!YnR?SY=+iA7%9ofqj*Orp_|#p(I%jO4X0uvDhJhv&(w=$8GQndR)JCY>3gu7 z93}&TM*v%xUSGr(LkF}Tq+jriu58m}Gu9_%?Jo{}-|k+EqC3lW`9Ut#ZJ<_1-S7Sm z!bD`qnTjgo9q9D(h_F>dt6FJ<>&RRYMbKvik$AfzL=c znH&1{(M-s3URusx+_3?x+>BW0EKKq6du+_h5&aDtaMki~u^By?c0wlye$kM@G9bu_ za?y-B%tP_a!X;dO4r!(2OniO32J*syx|{@ze%A!W zcR$d;6P=-P`!~hYEA*b4{NM}})B*0`H;b^Ccj$0dZSv9=SuH9;y*f8O8&6^|?a#Sl zw3QomgV}a+%_a-er*?SH*dxorEqAbh2kOF?F#jk33IouQz|t6=!|Ki|9{uUkMYTKH zh-Zp3otksS=%5=VR)^D5{A(h z+ve^bBAM-eIl?SS72~+DZl~AxQQ*=KF5UDHM~r?aXisSgjX&|1;vApi9@=KhaS$n3 z!0rZhyr$4wv|GH?ZMX@$6N~cvamMa-W!=5=3s;E_0|oT5rQkkLf|M5tihgg@{KkUY z+Q3|haSq^ULL;R47qQ`~P;gyG8(V{$KuKrl#jm|lnkXV8n2>znW1yVGU67}%5??n! zS62Ll+T;9+QID*oh(3Bt@%tO!1oDEns%&WuoLBaw#q|R#l6zcNT`o}(ef#ZqVlnI8gbxi^>5nEkOqP=E z_yz--3p=yyJE0~ULl4iyHNR|*2s6>ESUilM)a zlt3oU0tvR2UVb`oMPEth-r9 zM!^T>v)0pcrtSe>;@`kjVS@&_xgwNoxKP89Gg;y7d_u{MKQbdGlEW}`rMwp16b{!Y z?!I0eora_%#jVcYQAt2|l1^Q1q`r#CW1W5I>g(mjmL2GI9u*eJsiJXj)y z;p{|+QU@4ldMaCBL9&EuGiKC5Yy-6dkfkU~_Yi>qA;nZbNL!Y08IQtq{Q&maDOGh~ z8rTnGptk$`4d*9fCZ&1fb;taK>fu9^M``&J#ex7gIh-4Mj}~fGAwHT#lgRVKAxKFG z3N!ejr0s@sgGF9Q>eqKlcQF=3N&|$M;mo$loSuALzvs`OUV|nc{7-_L(*CCz;a?cs zr)lv9efU<9>B==vFA8=FJ*$zXp}?izO7Oqd*yKHxg1rChYyx5NI^#^z$DSV^rVgHa zkD4yjJzYPvg4orr;cuxWMGg~$LROn7SqyzWE-e66oxOD=hM`BN`C}#-v zs-%bqurGvyo;lBL7RThgFI?%hco=-I-r+S+V}eO7Wq2zuSGD5eBcEfie$>J5SufF< z#mtf?tHUX*DWU~IUt_d=oTj+PfJW|BE+non;=L_wZr}$3*nq!1H8@Mbg6$>Vwk~bH z!>AYgC8U&w_$kq*wt!C;79%z$Fo_(GZv+dG`9NowX}t%siYM&&?8w$KWJx%JU2F~A+D%0lXyTU=g z*D09LhFWfiUWs~M6=7Bwfv+v*cJ@sC0amc3d^RVK_CEV%*XaZ}Tzq`s44*6n*|DzB zg-J6{FKkR!xlR}fQ5#jt+iB6rv`_BD+ih+~C>Zqf#*#lYW{xhLLn6%3%nmAfR|IGV zNysgiBfKr`AC&;)4AO~rT<1J!{xFg4+NKCdxdNE0BBYEDQjmybm9I}ShzC`(_i7{f zhqhRjj&Er<1nC*etd8jYLDFgL9$L9=nyaBWSNMeb%*}u=F{VLKpt`->-e^EyO7u|3 zr){Yf76R1nsB?U9Na2)4;6T#{1-5G5NYZS!YAGMt;=s2lw6@@zR-B$7%k@E$p0>m>eoF>sZ4`9=k!ZEAM~2W`;;$P zLZ4rcA+vbrXnSa|9uQh3)e5Zesth?R-CqfTVW zZkhfeFBUF*)^cL9kzk5Wk|RU?rH0Af5C*K}sNzdgwuq3m)a^~MSL_xcic21iu^{LT zTgi|u>llv@;ok+IKK9vqc+-OnrMpZWBsV5y0yPg>=vBdTN+pTf#!^;JWLwoQ(~T)& zjN%pdzL7ZXbF}MdMii#>xGhj;ewmO$0qPeGFY>ma#ElnZ?($)3h3l^PK${GvrubI9 zic4yRJdr>a66)KW5_HS3;AL-kXFVvkl5bKrdgj>v4-T}yVuR^*0U>KrBy48;;MAG-HH z@<*mV?ma)oD3oSts18!oRzW*q>{{p9$-G_2bpZj@nCTcB%DayZieBpig0;m?t*(wO zpW0r0?0Qi6qWF$;CJJlDk$99~+fvq&Q`87bZI*QA$sx}7wNqsfH&@j zPBYWi%LSt1C7I{o1{n|rGJZDLvx;8pb8x>k_+??o-(uO{BP_Z03&ABy=2FhQtSUFO zmYO?l0-a2$K{G?N+-rARZ&o&gMynfl;dW?w$|jYr$OLv3VVKw{~KsgBGXTTzj5l57xA#!1vjcfBaSK& zH*drT3N&LbXMifiePZ}}qH(r2;(T+yfnAppJa6KIKjBF1{dn2T;bFe;xAn5yC8;a| zHAov;z=bsZAU~%|enS`Z&gg`w3(9g2&sI6H+^;e-7XEyAoOG6o7IAiV8SftKwVj-g>VTlft{*sk-C6DTI&Zv43>vk=g z^}*Po>yJrpsh97@QgkUM_zQeQ&9J%ydnD;1`$<62`ig!2a=l@cKe^LThyIazT-ipF ze4U{i(Q<-+NIep?#=}Ynr#~%$Kn!bE;)}hZFKNfdhcyH`%a9D<0isU5TsgVcWF3Bd z5{CE?xi|5!?nw2O#k$yO%cUMK`oHGRiC;jeF$8r%j>ol-jSO<4Q@eZ z64(*n6%j|o5gk~Vv^DxX3VL(NXj!M;0`HRgcmyN*xit5a#x+$MeR9OU2bMbVk!k(D z@teRU6^;2rv@}QTyLfn>o#Y`Sh6?LG18`=;{MPdFSG$mDk4j_}maL*+G|S6yTfrzD zZ87C${>}K%_Y}T^58gOuct2*#Eo+8HbkNdDh)2~Uf~%-(ZnmL;@7UFp_Mj*i2{To? z9fKJtsXp>lQ8%DB2l2C~qf6le+97JD2@!x}Hhbxz+A_1yY%3fr68;4JD;Nj58=aNl z0G?Q8E7w#wVk8SB{{JjFx)!I`X=^}oh(C-r{P9_-!pUqd?Ejf5E5sranFY$vOQv6K zW{r1Uf<$IWcGfXy2`-7p`fD}aE`pCQk2{27&PEk)_I$j9h{`G~Q z03PLzzHm^$A3>lc=P*pD%S0ch%SFIIspsH@sk!XvS_JkCRIrXjFG7AopwqRw5u$Qv zyO$}1ZlA>@bNd6k$>VLZL|uewte>_h!q?4z?^;ZI*a5E@c9=M6%;yC<$|;L@Gz&BG zmm~5RkWoN(<1H8_xDXa~{3oh)ES)(3KZTkb%Sa5^|HJbb{2~>u@MMMQ!Z6a@17x){ zr^xghL=N?jd7r7_B5AYx(U8D9Ll+n9iWk3$g`tUy!GT^XoxT2}iTTWVpWKHCB1@&GFtjOu`6H#5fmxH4by=)Rcsr z{_s>L_yEEe8aJ_0oU~bE=rT0pZSLsOCJb*wD6?<)WE z3bh5RmTQBO8bi65M9V0hM=ACHkA&h)i8Bl~<1bByG(9aUl^WShrPs*!KyQ#cw+HlJz#P6XWL8p+AIT=0{>kEhE zi(4A!^?Fre`?hu9J0@@QXXl~cH%2@Pi%6;2Dc*M;hBskQ9BE1qUww6>t!Tu-lH`!8 zlMD*_Q_G0d62aWhsZ+AMnsM&E&()sQfM37&poR6^Z2mJ~5DKUB;PYfv@Bhd;1J8aX zHEUAQQnPf2Ui5;ots~Og2dIRkbqJW*3i~#@4ZZwS)*Q=OwmQG^lz%lDQ`OhbZ6uldgOwOERAiCVYd%01L+{vzo64R!b=V9B_WF&TVWtOB zk-z^WMA-!?@H@nJ7@2apo|XLaJzxeL)V%qXpC$r;K&WiT)l!C5W;O!zD6L2k-ck$B zO$zyiPg}Xsl4J+TLm-!X?*1@eAEZYfE=7s6l{7(kjr`*AKM%l-bN0g!f7e8l%!yl6 zTLxtba6(jqO{hxgi(5FGSf{|kO}E{=+sPype3Escz%mi$Z#>8qFr+KGi+b*hb5`ch zK|)j;RW^0(x{=|6}wwgSE6=<@ZlEu604HiBU_|E2Q@qa^oQHQPVkaB>-x zag3r}H!$wUy;jKBZDLrouBtew)Xqe z=XO|NQ0n%KAxVUZ<~XWsT9|V|uv*0<2Q6LLQC(=SaEVn8-mG0GH&69R46LSc;dEr1Enj|AfRHFb+3A*}x@Vs316h={4 zJ`*GVD*pWa4r8GB@ltnVTZ%VaqaqKvN4Ot5nO=pSAG%uqQ9TwYG>2ty10 zZSOvIrecz1_s!E*m=FYa3f{+ZL(p

yHJ1-g8iP&-|d5j>cQGPbWJ*?ATG7fov=zK`Aj5B2}VJ%qVTLz*+W z(r0e}SQ^&csHs-v!R3okJ{YI@{(nIz!LvgKI>W)}U!AnH?>P1q{K0?%-gl&3b_4gapzX6dcT)3f0;^+!}O;6!!(8I)TJ@e2@yXjqxHUMC5k_! z`A>XTTgx|PcIY3=#V+c%Y@qUVbGs8i5RlynQ&Kv22Lyk=(RAt*9ZN1glDQ&+v=Qci>13ECKQ2zlP_w#_Vd_uu$2u*03c$S=9Bc+Rq(P=Ach{mbxCB>t@dWA}VTjeE}Ox_DZI< zx==<3sXmK1e20L+`qb(qAsKHv0GXq#ywuW8jVgosPb`p`LXr9CQt)!+a(f@S@R@UL z%O1fY)56ITBX|ueORQnnd;A#ns;u1st>{T8RCQcs0+zxpA zfei}XIHs!!zPV0f-_3!kjJz_nbBpSob_wuaj(Wjt?w8jPQtcb2hw#k1u z5Ko4IJ>Xij%VYsK%SKA7<4}R-tRfHZi6^cEGUIr%dKXsREdIxQ^v1>NJ$o#bL9V|=|n zfY|+Bz@X_o5|xmBgIMSi{(+OAtBEiFW=}U98-y*~_1263nKnSsvCxuo#_RcqS=8qt5-o;_sYRx7@ zN$XPe@(S}$g|q~Vi0Itjgc9-~(YPtagz9X+ParUyY%Zws1jF5pSfFvdml0o0C?Tn& z&}J2Jw{-7dIy}(^q=%vH7AQ=eVGH2G>VN0v+fIj%^b?Hkyb6K0xU=Z=+Q--Bh77KH z@`1B{sf5oz@w@SW$Ura3asg_azINlpKZhM4nOdFIi}j-Vn2PfdJwN(vc~8ri9=ARp zFWeb?k>nt`-F>V!mywR0!!3b|j4#kF-J}wxKYiOvj_)n?mN4pp%q=%msI)B?&Q0YG z!u4CTzI&WZ@G*tkzZJx_o zCioBt;z4N)bY(tG$jzj>Wv5)h=$h_zhth96+C?3(LGXcm2z$Ph-Xl5SpqzkXLY$^F z+n6{0Q~@-L%1L=dWYl@^buWyC-}FTh#h-){jWnYX)mo5#cz<+G>?wcC#>6e zL8wal>fL{{S~>B2y3rE?0rg^bv>Zxj?THGHV;djrgw$t@z&%bfw7oKtpw1Pn6+huY zX_3VyvL-4Xxv3S#HB=%&%^=Vh^Mr?txL&4@w1Nsr*_)mM14Ry>dgra+K4H-CY%}M1 z{1pd%IvE~OrqXdBmVRNe1^{!XRFJ<|g*jgb^}@}o$prDkrpRY_`&leYkpF~sDA`@QF2kp^bw zaLZ;q0>3KSZ5Kgb@fK*FiAw1`RfLg-x znf14SuUasvHKn&PX+)5P6wW&%Lq4v5lr?AaZeQD0H2PR~VBcdWeFq(DImr9kULh}V zFQTpf5tq_R@n%Zi6{)l>(EE(o9+beir2Gi>kkGhOZSIy!3?D$*@aEg8i!eKc^xl-u zz2lH)TUgjTZ?)*Az9vR&Aas-N#mSG;7~~|Tzybh-GkXsB&w1{3A`Zmr#mFc-tX$n2DB`D z3+0=145m!jS$CZSu0>kGE_blo=I+G+!*b9jPO`@(+3+6a1kxu6eqO2G($Bx`!?voP zp|L}yd4+b_?;fnb=Ch}*&Kq|LyQ?;1=Ok=<=cL1|vgtDe4-%Zf6_z1VI1R97%^G}9S2jhc)XJm7w#J+a!5rQZ z91}Jo5;xMb>5_8F{+xo45}_)1hN~CHR3+8=ldC>;V+6)dVOkmR@@%5pO$TpYCfcAj zYk|}>eiT^dAsUnD?RE~c)>m{yPzBJ4b+eJP)>-kQK3W^bvH`V z_maJB8=d83Bj4oTOR@i!Rh@{dp4ClY4vQfIVacM&OHnY?{Y0Y-T7ei@gi*bkWsKeQ zGfA>v6L1)Yyt{m%CwGI*EDkwp7e$wRC{Nooux4CoR+ANZa5(KYyOm;`ItgCL)iIxR zbD^loUFAI6HUcQjj@rYMPVB<$c=}c3T>=u(mAg^}MX$Yefo(qQle{`-M5}TAAin-L zk^%|Xn@@}84G5vfc(>yl!5L8$$<{0kN#6(P!I0)d(%ag021+GhTUmWv$$%JM2Q}Xg z@O32%IG8`qa=KU+Q!bk1OH96_9)8zX4s;R*B?0qy%Cin;nhvfzrrxXxPGIeT9AJ1b zCojwiS&}g6m85u~W;(9fL#AlV3E6a!Q?ep0cUq~WX(7+%a($ zuOAgKxVXSH#^~u>1M5BOKGiz${k0En}GD+<`!s$BWXSS~!^99y!BSQ8}BFg5Z zx3ty*ZQ>X;sKxo%ZvI8ZZi9O|92f1UG7s`!I1=%@d4DKxv%$*TUy!zfcFj1_h#~rfp#=+0{om~7=6R7w(Xo=jJpu>2?V3L!u+CxyjPU`4DvW=@B`rHFRiH~RQjjdA_ zU;ikSrRzfdwYr6dS^ntTDZi8efFn;HK^mm~CV#ba_YbyYRdws!6p4DUXGd@A%S`_| zs)&!E#+d4slEKw~{sr47u=h*lnZtRO0+%wgRT*u_<0oJu_5A46H z7ze>|06BDHkm&MPxuJg4tOM)|4J&Iw;U0XA1C`RUS)LY1i$UMd-E<;z?Zuf6Xu~yQ z2Iz({1!~%dFw~O_gfMeNX&U-GkP)I+G-d$`^jpr5_p)7&j0xr|Ho5XB&zCgP!%>3v zelx)>nB}DYy&u8_u4X`Br`UU$(W!}W+@Gw`23 zW_j_k>7nteI_?OljZqS-?in81`$sUwks-?|d(_wa0MOopUuY6!Dvtr;-fu>*F{p`` zB<&=Q`uXjo@6iGQ@b#A0>kZ|D@I!$T%QrAVPfE^cfSI6wy45~)62Fa6YNgeg!XIeE zJ>^k$t<>yNEznpEjXBizaBn;OUN_fcLT=&PD;P+5pTf+@k%sK%4Lu5GH@ZHTGpyY_ zyKd7Dyn(H^3qoc*D%m_y4aDRSt_txwLSWiz&iN8~@27oP4C1*{vG|iIGX6hQf4Wv4 zoe@okV{23q1?cBb0D6kJA3(HeiI76fo$E8&M6DS=G~q;r`?o<#xhkCeH#h5BvVqK` zH1{i$0T&FG30GdcCWL=VfV2jV1Lg%9O#Vkb(tLzu&b^a35h7sX0GMQPV?M8IPsg8t zNh0T11!fi59Eb|O#(FlhoE!yzx=Jeyo89 z?4LLohIT2>9#M`7R*6#S6+f1052&r*V<{j?YS{n@;g*vfw+dC(+|ItM|KVd)B64Jb;pL`8h;fo6Q6%%!+=>>S#m z>1TvF#!aa6M^^Rsfmve7wN`}V32F3+EnPBNcz=o$Ho@DWgGOvy7Q4HxwGeG0f$s|0 z6=elq{t4`vq!`Li0yzXgW)|ZWT72eCbZ#@`96q zfQ@2+kWiIwo3S@kcL~Ujh3h(nnia}N?(PP^SaNB1@FF2jTPyKr0E3OV#kKo7@2zw# zKln3wA)Kl%U~cI~89f9P=`)9Sx$-1|D1d8oBb2wBz|*06m-n`zscS6PN=SSEGJfbJA4|mytQ_B>@8_aj zASk@3QM5SA{y12zeKSt-K$Exn{BuK&pcB~g>)`l^&VW%?mP%8v=k|3Dq&Zu5f(7T=`vb)n4p!H@;~)g|=s(_fm;k?n7o_h zfvt-jjj-*lBI+RqzA#i^KZT|3u2XquePco7^*=1{9_d26>!YGS29ak|PQ^ z_xmQ*Ozd?=VfuO=%9zsW{pWbgebGA7>~r3$&&EcrfDS{QtH} zx}yOPl>eKOR8$F>msmZpl#Rx;rheHfdI)nQj14Q0bnXd|m%3TrWU4$!OoF16CXVcI zIWykJzHyXhNKPiqT(LYux7taCcbF8nN^708n990NhV)i;9tas#c|jV z{+WeQq%Jz4?pQA~@7_(+AcoaKf0SCRJfc@DtB9Zi!wi*kh&s;h7Cqh5U?hNH{%bZ4 zIwh%i(v4gZm9B_D=PX{@M3mN*1+-@wbz^Hl&*etz5(w;z2ro^Ms zCdKNWF^c7BqBPxF;0(IIH3XIfJ+X%HMgINsWROS+W!q`$9sfh6;E2S9yK+U_SepS* zO3cvyCc`JUB=^Jej;zUBao(68_FxNvDBa*&@h(Ib%~ZJrVNSQHx25_(JTRNhnDuYy zX-ry|Tsqb#Qa$=)_+wbTeJqJqROfJ*6E}r}SZQIwblATFrulrdOW735eMk|3-0^^r z7W`mG&#_|-zHmMym!(&dTZNNCuxS1>3EgH%9XyR{#E~xv2LX!oVHD4X!w1o?{GWS= z__Jz;ui=7RZ2TEICyku3!Yv9ux+Y7xkbGh*QUqOEv_HZlArsaQiNG<5+~O zSqJ}{ETp-1rkwCEau%GiLw^#q=@)*Qb}m8pBMjL&FEWC!+D1@(8{IoDY9I$!kC|D0 zbnk-tLlx-BSb6sgPP|g2@CO6xOZs%cg;dxD+n&Ub$ETBAnN-YfL z^6PB+Rst-E-8&uDZ}4+zFGuJ^^lqT?Gvfmbpr<9JG>snG64m>t7SVt2HYaITO&4EP zl2i!W4TE*`-+@Xf^1MdGbtl5+{y1Evhpk!7wGiXGk>PuQKRSmtq(w$bnN+_UC{_Pv zs!u=P5u=7K(yb9wtN@)MVDtpk2&LthYimXV;EDzEV@Cs;KSa;e4<;pw$T)6* zulH^Y&t_0z^hf_--G2SuhuBQG*U|~RpQZ8>{vz686-3SzO68XT1|uQW>drX|ghkTS z3OhWz95Yt^b#NGKGxm%&6KRerGb1x#84xl}I;yfxD)O)vCgXzcWTFOmcA8|-0sd9V z`sEoaboPi%Gn?Va@8iz>W$lbS3!^z{*>H8!dGEabw+ztc8Npv-TA@$~bk-$FL+;O= z+TD!jEOIL3X*_5;@$b7-)aR!!iJIp!P6J)9C(Au}EH95I^Xc%Y)f?&ElTsgACj^Y^ z94*OEU2fAS8aYwoX;!NJo#z^`9f75md!-czjO&}0URt;8-RcWDA!JV=-&w=eA;ieS zM7Oi=FK#E$nY6MPa{ud_Hc5uPB|Q$91_r3dD*tu&i3KCQBS1m~qazh9!(dV<+VoM8 zq$CO=NOP0q;@FK`Y*35iy;So(d#XAwnj=;*WAmeQqd!#~`|N%SFl58uB|M7WG4~!c z_gW`^N;W1t`qx(0ZNc2^9C(0kR%>{5=g>0zk1dJHv6f~l_hIozb)9dMVb^6ObSf#s zv?gTSK;_4a{#uH%uBQ9$e$Zi>IFkMk!{upEA&CEZD#FOsVv|>0$06I)wqy^xNA=gI0#o@Xf7DSq_R(1BN9x%z zEU0eP1YGlT%(ylF*HrpxmV1A>k#Xb7FE98J#~^wKGG`r9U}U+QFA%C(0D;anpJuHE&9g1L1h` zR^r+(s=J7k*GEg0&HiqrR74SA7viSY#JjxS6>{}c0{4f3sC1Nj3xst~`ALn_AhhBI z0IzAZhQMZ0Iy1A>0M*iJ+XAGv%h!OTkp#K zH^L;JitMSb(5*?mQ6Tp%=L5ClfOF#f={rb!LCm_@n)QJHpfotFNIKP4bk!G@BBGmL z9y?cNVu^4#G7mZTYjFdvXuE?ISP=23fX7NlH0jNab9YXCx{5-++R%&1l^P`@kH+C$ zEi|R8AG-NxYN2NsLuFO4BAjASSXaj$s$w6&n0M}j({r0at~-2W%Wqsd7j}p)t&MNX}{3bpCW|92|rDu&+aiElct2d|{{Zf>d^^ zo~qMyyekjq5_Z&&g`4brl zD?-@6uzz;T&l+{MSF4lrDlsTVF#dXzEwx7}XSA_$Q*n^kf5!b zQL;`|?UR2bA2Wq=cPH8SkkN{v3_`g!WD3N`aI&{q!=&t}$P~v`?WpmZnjPC3_Zo(> zk^@ui^jEu+>>15N(BB$RKxX%7?#tqU6Y*GY&&aWVzVF3DIwc>@f%Cm}gkYgHv3Rg|Bs;o@;-Ka){;qW%vFvE;&xQ@_ zS~**b!B1i*(c_&d6&Bv?(7srbjN#zD1O0bQ0;^@U&X%J9U=OdE=Kxj zh@-vr#6I=*<~GF#1g{{oVr%|~tP}7!2~>z<2_bho0GE8E$a{yK>u(~oL(TrM=0QVp z#*&(Cnx|(h`_P|1(J{0;;0d3P%5YN8>ZdQ*sS15#RhZJ}baIp#!?IBc)%6`=2F5*0 zYMu=O8(+z%;Tp-KuaWbr(rPp~fO7>5lT5V6%dEHXN@5%dGr=~|vN@Df(WtBzk^S-d zf4595VEs~V(PBb>xzDY17jcl^6j0m``uhxdk)GksA?P6K`;ax(%ZcpOB~lQ6IrWR= zeBlu16POk=zi&j(xs#-wzi2AqVI@p~S8vgCmh2H5B%8rXTOAq7G*Mn+Q;%r9(P+CVhoSI)oq9X`L56ZwdU(LOH1IIX@QUBZploP@pPmkmp*{!#n%EHO3it2CCU$VhN?F z)H>Le0@8;aj;&}uyO%++Aw3d~J9ud&&q6so(9BhIta99wr|3qSj-waOK4y=YxoIi4=86Z$@1 zP~jJj0F5K=Z~7bslnLUBMo{C5-`%S2+tRcNoWzLt=7w@2LPcSGz(RW8-&VGUe3N(Z zQ8_hIqF9<~ukX|&^L)DBk})(>Jl1Ozx{loOK@GuF%MTuIRh0S$YUK5VH&WAX`#Rlj zi0jQ@Fn=#|83SE{=2{~5sP>$#;|BGh(7P=QbB}G!1XBt!8}B+vq$OGrys?Tww9u*P za~36Psg6wgBz?oR#^BH+W|+1yYSfw04uCIzRlcd{cIqPSFJ>JAJx1pDX}HgD=m`MO z1cT=%{|qoGI#W|P?irjah1J4aZbS>Yk@i6`TNIoV_R%QtQG9hO>2kmd#r?aEaC;ZW zcbbN%5646=J8H49vyAss*v`Gg8J!RMfFtHR8)}AI&pE(Lr#P)>d9inq!CJcA)b)^H z`91&(%B6H-mfOx)q4mo9a0E3D!Fs(2~QN%ri#1R^sHoWWY_29_tufI{SDW@RPC&#&k^}#6z==$!AJnB_yyt_IO@&n_S zg|N|yQ%CV)s>zg<{eS+gbFtc~I|2C>Iz5yk5ALh8%m5u!uG>J`ez3Kh0&I`5M&2-5 zdsPE)JxD)#`N!9z_!Sl%-QzxgwgwxcQB$K0F&QCvr_2tYKVKE(4eDRKSF!Cksi=G@ z?+ZoR+Gd0bGL8lpZQZg)?82~aub;GhZa$`jNC6PMOu_~{w&7#I{@+o=-+?jSY{ba| zsK41_N=RA#dwfPmx4lKkEgL-2Ct(Hhp&@AVajxY;sPn$)A-k zJq)d_>Hr3KwC!ET&g=c$#UE!{j&(U-C&`*DaS)*RXcT2moZjQK+Xth7S6if7+0a2j z!;@6IH7Jf9Rpt~}4E+vx{A3{;7sg*n^nX;+UXauaK-G-6Mxh2~nfGCQzqoJg zq3Q_5;=&<*RXa81;BXuA@bO=z)@2!UtJX1#+&m6xEl>K_aUVpbQuSH!A`BsE^7r7i zly%k+f;Z3UN`Z0A3Ly^}@FDAVYjlO>N$6zLl2?_BjLiu_L7Djz+YA_J6XR9B^8?}q zspI=^w3E$V;L{B!>qP!~9f+Hq!2^9x_AW8}%Hcat$C3P=?cvav4Uj4#Wc<~jckcEF z_9R8$un`hsHvQFMCT)!$Im)OceGvW{Yi=))Y+J?93ZuU}TL}` z9Bp8s9CZ9y{zmoXcx=$6nOB)ksug9A&vMhJjg_jY-W8UZNK$ngOYZK5L@LQTBrTwo z8#)mPi>xv96-F~o^{p!+sNnUe(cmHc=g_eOy+YMq!v=jcN?=v~Wx5{2I${^#*0WCV zfU&og+6E>(T)7GfleZ@n3d^5^6yTn_N;Z_bbF9mO&#bKJ^Eilv$Zza>CTy&^yK|If zAkC%To;!PaNuoM88YZvQl4i5wi=zmOV- zVk<3=Z&2t+!NA&ENP6h@5pwNv`|vi{qrhT%%eOdj$yI^F;YXVEyd#eaI3|=w-b~VG zS&^>=ZkH~p<~qY<%H|Q@^JRkrb5o9d)yiq~W4B`X#B(Af6eSywq4!|>vC$l1B~9a~ z0BLRyws27qPxC7So5u$lq=y1~fV+wC+JQ&?4Em5xy|_||2fuZQ{sOrE`9`fGvzzgO zF8TAciMaWp5To*&Nr&K&zZf3xJxMyo6iPg}V8wl8>jP>70@M4Yr}f|sU_jAj`FEMl z19ITra4d>kbt?i$<50Svel;6y8%wCs2y7h<11%Sjg!i!AU?h4nQ2^K{by~)h) z0ueXL$lF*lit(&5BQHkdEgByY{uWa(f+`h?sj=PB=`zB9Z8Z?hM&pvl)D~}iyo-QOt=}8l+&&f!DK_>1N+;#PHJ*q1ckwU#SO+7!5=ggE?nCQbaxYEIL3G2VK8s zbJjr46`~Ib=da=Bcw){ZVzznNtvEi+f3h59)!r*4*DZ@5O=LSX zVqecbh!ZoxlWsehDro$M?aou{fC)gLAQs`x?oUqYrKNx`Pp=jWT#9Ook)u#Pf^#xZ z8LX4^a+DOfH>=V!kAeQ*m)8v0@tb(XFAm`WH@%?UmHj~h?C5)9t7im)za>CGdKNzB zs-m?esB%KoSU{eb<|L(yhB5=0CLSw?<`#cG2MMKT>r3Kuq{pMM0`$Dm-Je_N&u5&g zdk6+b-TI{Q9dP=I+Y3#R06#(e0rny&QVKSlRTF_EOwPql$83X;{_&fBWR?Q+$ z@ZfpLSRW?k_0<3b^9RB!qH6Ypqq$w07`i%gQEOOjMU%$A6yZZV9$u^ATdWE6JbXyY z3Yb|1>t7$jZ$2j*oHILf<=t+z8V0FZ4!+w8h4lCEuLgEpgu4E+F}oDA@-BauQPna86OzO(whk9XYWGBrlsSbH@WrR))y`*Z2^1Y_cA{_l#kvj(}K)m??X;MpTEz(Ay$;_T&uL7@|Vo-xq?s;*^Z8A3X?9oYKi-2&Pn*N%{jH`_HP$~!=FC_+d? z*ymimRQ;FnbHpt92veLDiB@UUbrxY0J5LYU$K=$aD>+M@w@(J|cigBaE{!)8yRn~v z0i0AQ$JzqY9<2x6PEF&^wOa&POYZzXM!cvh8$`)=`4SN{%++7uzo3Ji56~(rg>~1* zw>g#zFFn=FsV>^w?UcE`s%P>k7Zv|>vJ+&RfDB2(O>|8aSyHlFr7sy%$ngf9}&i!VUlQ zIfxrIIY2K^&Q>KF&H&K*U>%h`a8oo(i}z7C@2?Jm^ogJK)95ClMIJ>OX__wBeoz18 z$~_-osBOjz;Y4)(AdV|R3usS>x=>m2tCSGQG?oACpzbHb*Y0Bk8e#7-GEelsv$)FFfV7sbxSAc`aTWYiUcItnw9 zm7wqf&Y`Ip$%n;}C|?66I*W4VG=60k)smek)1SpQ-hEdBFnJO$&-;TD;cXg=lpfsb zXQ$)3!|f4RwpFni-Q!4V_#5W*Cm3~4`|D*F)y=M@(*S?JIq;jI%~CZQ+{Hp}WC@ED zz#xu)2p@58g5pbbmEbjx6 zTG@P=_#2{`^j$x37v{;jI7@S6B{;{pWMW*NC22h5U3iL{f$G~>px-jz<8l+e`^%_s zfcwX*H)*frm`K#bEmKC#5phonUv{WqXY@X2{cu4@F}O$JxkT5Zv-;XM=}`cP4ENaR zB;Fit{{o@?RgL%7bs8A>jM$Z+D4t6fv3!!HRw#26+-Y?WVDuF4TK~!tF{d*3QIDYj==Uavl zs_?GOXMM%*WdPSUh(A@Pf#XrAK`~~1_?Bxv7GbM#nD;M+wcN%n9^PFh{-|<9PBBIL zYaynw6pUPN-rFF}&HplI*)r&*(tGe-(z?3}qlOT6#P%BFKpa5vrH6%X`sQlD-)jVB z5w#kPC{cS4t<)R?T%&jcQt*uA1M%7)h;JcmKkI-9RO>O6V%};t%j*VRmzx9rD9drSZ)QDcBYUEwcLki)Jb}y$B*lVi@lFI z*Y#=OSPgucQ zyIf2`&I*1U6b7bx+XYr?2(x|^?H2746Yrmv4G zMRKg5m@P$1FyJMy^}9$jRJ6kaZ^nqxptQxP$4f;_Jl5!m?hf#JHLq-*aTqTAV4xRm ztfSUj)rh0t2|2h*@Z#q8@E7(*6Y!-#g_J=Vd{JDBl&Bgy(m1dV_;$bq{9)cjNcXT(>!x z?Zw&b%zz|*1D{(_4M^tgxIVXuk}XLRuzy#SO`TT>oEC#9 z%iIFI^+D>b#mzwZ?U|)j{FLUr5p?BtCcG$p5Y?~bOQ`amwYj*isH(KXX#x~Tr_%q^ zY-Z~mXLZ6BcDv&;ebuL8Y05>bzO{UU=vGTWvzF5_gWqjDX{%;uIsp}L%^dd50PL=F z@3XCgG~{&|h2syn!4au$&VLt%zPGhN=x@W`_cRB2?68Remz(;_X`hpcdA0`v!P5p} zV{PJ1u%n7OE$P~JjP^&S?Z+3%qA(vO6-?K>S(V+ z`L5#I@hQ$`oDMAgwb+%0%M1XbAdjmMA+#hQ?8%H0sZ_|6nFyz^E+6-0TJ(!Td<=zW zYrxh9Qj=9RJgawFmA~^>k8e8|+Q2Q+49JvLE4Pj3AXnXhS>|t@rCk{n;&fk#EVeqt z2Fc80|1DZy(kQ10e0Ujpcf4hPp66prlgA-JMs*;d``UdQ*3xoXN}k1m)ZMVkd0o^eYy;bQ$T>UiA|0n z_r3gbP&^)*DEE;J;?K8n)`~Uo{0Ho0?OOzyc&FvFo3tGSXzK4zvx#d&b2Xl6rdnxB zgrK3x=4%G4z#)Fy=AjJj($FJw>YfQDe}OR&O8L4kc^~bc{U&hI+GJ_zE=n}^hOf=o z0DqJ!=W)pZU#hdNKbab$eja3RBI{<+O);Qm@6Z|>0S5IO|3X{uMr_-XBNPPc*1`+` zjwr;w?A^5^;|C1UboEEKoNylgr2_K`MG}ZGcUgt3mF-OixF3k zTJqSv18+~T%;z3G<;@u0Y|3|Sv;F){tY#~qT5-NS6>85Kq~H$M^Tk!8PtA2UzdS;J zfBy%A041U`CDM`ynKQ^4&eOb4D>~cnk~CYVbs zLmw^|b8pKf3Q zbQ?KcH>fFd1MUlU4Ah85vnZ?Z(O*>h>k2<{d+6V4P-ZLm!52goO=iL1aEj0_8uULJ zFggi8m{zf{(LxvqznLmmrNlu{yJ&}Sk0$+F?qv$~k+(R`NE zz;ondqezdS1KOHDd|XQT?M2SX@ot}j7=1l_qsUea^>`087gwI@IYfuu_C4zdP}n2I z9s@AIi|&IpZ%yA$lSyv7_0#ja#tYM|IjQTl(lP|suIW&M<4lkUM~FKwFT8SFRz}Wl zqAudcN=T*;VkIx9WtQQ@3OfVR`nO@~gTyX<+@7FSUWhvjqYp1pH(G#8Zm$wEXv)w_ z;)1Ih$v^93jM$cCig*AGT&RMtk}Odmr&mI42Q`Ub&ZN7Q(gNQkRH@ilT5DDUxc|*Y zG}4ufNibt@8p}FAH$HZ3GXxso8_#9^raiOkP}Yi197{3Y{#W60+*Qzap4RRWsp@Rj z;|`Tx9_un(tp}pGyMfQhZqWa%@zabIx7EyyxixkC+!dKa%X$HS867^N1c(3Sb_AWa zihgc-Fd~?1i&*rO|9+bS;IbRCgiC#CY9&R5wYo5Dw_)X;okR*~^|fIrmA7jAqmT<2 zGL`la_T47cngD?pOa#Txe-t9GRJPq~O)n~~4Yl~+0u*=*LG`2Z&oIanaal9IEjqJ( zSK4-9w8N@p@P-oZ&>3?-tcFh-`1~O|5Kr!#Kw719ZWR{4{6G~_=uTOOlCar%aE99c zgEvF`hKz&aGB8lm4-JxNxG`8}4K7%`GIqQ_okTZGLWv{+|KZoA z)o~hEFr!E9x5B>)xfnX@0SSrnPx+=46d_wIj!niS%5;!XU<#(P@rz@vm{fk*A@i;V z8P{Ce@n-Xm6*1-ws=?10fhA3=vbA7&K1&D zf>uyLuw3)*!8>wr!Xgq)GuMn!E)=VGD2@Ll!Z`BLaqb6~=9ukmvEZ^;!-5sEr^txN zjlxuh!k>7*gLW^Dbwf!V!~m@*p7tKg1EA#{U{6JQJcC`ct8q5#!=u-~C-^qiQKb3V z-?LzD&m=VZFvrev`UJ-p&4N3~b{&pjECr)p8)gQqqxePFt+63+wB=%Lw`TnDQn!Tz z2X1S{?$-A8YlzBOxFTK<_rA5IBQD=9eVqandJI2;=y5Zu7;m*dsdNlonHH`RewrM{ z|3)JIa4c;qSJ~iI6A%+tr?jf<&%tW|zV(EaPjv>bDR8{i5=Op_Inj2JFc zG)xm3Dg_>$84Ldqib=8Mx8${VXRR{I!lMwe6>B*)za|ltrH`6`DWGw})ELFwJ>}b0 z&m?}*H|FKb2`|Zt+2etN=#J8xmWb$w3taVN#Ac)w?dqzAG6Ab=H7yHQDO%ouqEK0H zeS~@I?FH_g8h2qCx0|l|5N5g#DTb?e)59{Mo|WNr={(Ctx)Ava&TN@oqf;Fixv2!Z zx4PwrZwck?chMucnrtaWh?~h=kcz=2Os>G*(M?=3`Q)H9ygS0rJ3kXmv4AN(0uTH= zN{x|0RXK4eDtEzbsnmBlBXs#rY%1xrzPEct(Xp9Qapk?y)1GV&F4#|W4t*BHG+X93 zQL)4^u>;lV#mlZQqO4cgXd7M;eW5)aFNv6DOo#ZlS^T>6?bX-Bevpzwmz zY?>|nO&94Rt?PglE|xBcM*ZC|qNo&zzPTj>q1->LudRE47;ktfEs?~7^u79B<>~S| zN|CRKT7NEo=LGP=gFJ$G&faRLie zaMUFM7jQVPpSZi@>&<-LfuQ0pi5huqA`!UzIOkUxD~z6APOA@n za0SWVL{oW^-_m>~&X3k=WZK^OB})V$c*~Im)vAfdPjRP)fpM=nEcQ9XEC>x;FqwbN zP*H#XiUCRevW;*omkOCR}?XO@sSNAfq^*5CMgy~CY{W}0!wP@i~?rl zhDu@!AK0mjzpIsM$H?P~vY$8L+tfjgBM+(oH!bqlI}YG(N5J*#rt6E*H%;s3r4hfX zl2MeJo5Kr_iU@yhAmY(#e4X}!)x8gpE#FPsyKxQwYvy6%|S*X?oV*7Mc zhT_B*))u2eN>*7Vvh{mp^S{k(U9kP79S9ZcsV24#lnIh0cwcKy&em383k)0fz9**a zye(_}IpDMU^99b3dqTI(R!vgmve$WlR9Kl61Z?Huaiyicf=8^}PTE+k{~@$Wg6C!W z7n^e&=f%&iVWggE88IN>O70-dIJ?|n6JIT#^~=ftsTdNmOrgHebwF%sfeBg|yMh!E zir~b*?QTj(t|KT@p4xu15h-p{U;H0#ilWeQfoY&q2;gby9v!*4W>Vk{n^nR1kV=9e#bB7*q)}TkWN)w z4^&u(r*o}e4PGy3n#%>3iaP-aRsbd|>$9Dpe-oNKv%>B*g_0`n^gJvR6jDi46)3s_JWXIcm}9- zTH$KQ)p9@-K?m~3R7~|dOj){sQri*dDZv6P_L(YXRCh6WAF#I%_!+Ah58W3NUA@@F zfDdXa_J}KEuEqNl zSlbmwv|Vz&q~AX#6zn5(%TR*x<_(+M@Tyvw7W*fFPN}fg{q6aLDlzgnCuxluo8tw}| zy<)|vgWEaFq|-Thl(9Ltojl=oeRAanYLqNvy6}gJ8;+i)Lx@?Ba#*o4L1wTwrHDqo z0u?SiFNSWJ93MTkQ4HjeymO}9QA)yUEG^u&9>&!bQy&7j>`##<9x71Djy^IY9TS0^ zS+)QQa1SE0(EIPZ_HNu|)7WF8751K4xlM8a|33i0Eqls(XnbBlF`Ff8phOm0P@HI+ylU3mc=lO9g};&KQG*M^Fyk>*|sN zo>uyQJ@(2$?MYyczJ#;t4Dik6q=sE&(%TR}a!6lY04(wg*RZ$5_F7EE)y&3iP-wON zNaliXR}CVM+E96i&D*6Z5fASwcC7ZOl0k)am?&=-A0k2{Wx91cZ3h|$zcqng?>Lq@ zMX=W|UjH#fJ%DQxt%pt9XDIJx6dzy-Y#?&SlJ2>@LD=-|myr3k6WygS@;HpTgGGR| zG(n7in11ad{Qi5lyS3O$ku$Q}@YK~+IO$r(@3O?F+%m@i!wUX@-&qLcsJ1xc{0t_X zgb}MSI7nnR@SPs;u}Pbhytwc|5YD-5UV90DH%Y4=tr<#u04Kes=~cAdHE}sLq;BpG z%#}brotFtl4+jL5crIMQZUdp8%E8}~C;Z|zl^H(=Cl)voZkV62gNuN3B~=cFk(qO7 zU#Og5L~E+D!KY)ABgYAmlw3oTz9v9hm1|Hdeiw!_F^$&HRHSgh(wHKy7d0e8)bjKk z$T23&8H2=rmvpc&)wLR9z|XzwW0OCf?W5Gv3HDf|V^YBxd!^0*S_T;nJuNz(mn8CW zek#@@eoXvKn>7BuY&s{ZimvpnJJMG@BxzT1=M54_u?Gz_^`GusH{eaa_l* zg$6CBQe`H>mt-g}trG$N$vCDU&S6WaMG_M!lx~ktZ2g(_dq$Z1HlArIc1fGF#nKDG zDt{!8!Eb!UAUTd9SQI_@}^%BgrXf`$FoWQ{p03b1cQeNG#K12Jh^SGiBFcg_N z4WoY|YIh)In|i8Hm(ow-MyI93lfRp#i(wVTd(AwnWo}G0PkyO~rsk~xri5uHJz|{G zg<*^6K3ocM=E!#D)!PAnx8@v0c@!-PzJYrR%Gg90W$`DS&X?uaQlyeV!sxSFz_Egx zy-7$A9@b`p`da^dTU0Sg%lzKF0)h8i79GD2ZmTHYaUr^Dsb_3Alr6Xn>V&nvn|$TN z0aS8aj><>BvN(oDo>8}P`BB<>Z*+xuujU4!ondIgc!uq zADN5~dYLZ>q5t!aT^w3#>rAEE>u|R(iEFz(9moUx!qV)Zl5#zdjGNgNsPa$lDCUA4nx>%dG&#dXU%c! z_bopu-(s=*QVXVS-yh5l$9SR$IURTXd>z1n6TSO@f=+uRy{K>$ebq764qQFSr%<;X zbCV&T|2m|wmC+|p^~A(gl-}qP{z*n30VJzmu^)LDSfDwv#EDtHbrJYkm_{4_6h^Os zD<1xllLtnxTm;g?Fa^GEUAbzGVpt)ohD{3dOL9O)7Q0tQF9I*|&pNa5F{Kf>4&Q-Y zVf(6ZR883`+4gIlcSG4T;})DzZY?7_ir0p|54aHWs`kE_BBdv9HvqGpwP*R{`!TXp%u8TmRAOY5(Z9`d1^H$1_HC(1@bS$dV4Kd>ZR@n;ZWi@~3 zbmonfpYc-ich-~=18>=7pbXue&;fUcxl`0x1EPILgXeY!Yov>OJAy(g)@0sUHghuz7wZB+w$d;BzCl)WZ-z-X1gw z5j!A_zSjI%P#S8T)M((;3{CD;hUPS15o4s4$7{wU(%r6%DguzGT3aNOtq6uh4VmsHd~biS?)`DI51 zo^qUJg1fXq>aDcwUpBM{(95y)dYzc4(gku+ygVjX{$WSK8e1s|3|DM_m6C6Gn)pfh zBDPkxx6-9b`8@YBj4Yj^)uMM-Fd1y%f4-}?&=!QPh4P%Fl378R9}m~cOWbOTFLO6y&1JU!FpYA zl~7^NF~42WfG{`irnpwmTpFHpGOMBt)yYblQj!Xsnh0d8@_q04bkE!@Y8UD)1CgbV zUt~byOauvwy=WgsPICYx!ZigbQ&FRG9!=?nc`1Sf7eM1Pg7EIyGN?2v&jM8o`&VwK zob@geb(4NQiM@{#8|AEY-0@=Vbn?mP#WrOf4Hp8*o-)Wj!z*#orSMxrt()rBF4f!!0e zd&L7S;2UwtK_9^uKsj^(fFegEK@HPq0`YtNdTgRL@2zpYGLZkkpD=v{JU-mHN*Ks( zhA9ffeRPvZA9uO7OyB0;&X6`p7w)iZ8O-;ysK1I%Ao zDrZZak6L9~N;7IRwDNe{y-x4VPhtg192;I4azC(%h14M~y@|5}VR2f>ZvA4=MkW#` zuLy>j%Z~LO>W63&C%*~NlJ}@dp4~0pssmwKjtAXIP+4%oAUK&`Zn*7yUDhdmlS)-| zg++6jRt$8?H=Frw4~W;a1~MN66&ba;u(7${iThWn*eBQ`e6vkE*~nsPDgm|ws~Ytw zdNXc4eb1BlMaJ}Ye~#DGyBE|+gS-g8(KYjV6!{>40HU=*nY;RahGqlMwia{YDtcu8 zpIJ8Dy~ND>QB*7VU5LtinRPoRh3t-@qa1(voq43_i{7G!U?j!L04JNeeG4gopVOtq z+1nROE!rEQ&$FPpko*g@0NQgQn-w!O2%K^)!K+qvzN3+FDUhh(T$dJJxZd5dh&5I# z!6=DBxR!K`y88Rce-;l{>s|RGay%ZXqL`6wOBQ}=UiZzE_xaQ<;MltfVPl{gAd}8W zTUbsi%9<<(4=_pB8QMA}bJ8X?5|G?mku0r5`#GLxZO*^yiOz$`hmpm!|+uud5SW;CzOgVwzwHi7wDPJ#p{qEE^hH zLJj4Erl(KIxenH7k4~|~@2YoZoRbhB`5!`j6hseJ=rnPjR-xfIY+tN8T}3%(3({Is z1f23$$IA1T2mGfcfenw5)CYFQ zPeN|qIp;u9S9u{-+o3a5m01C9{hR)-g61w=SM(A)(yo|H;?>ir|a^=9`o7=zy*dd30#?rwh>ueOsb6l>~!_udw+k?T67cw zzLZ3t_3;D)0sZFm$fV~YCn=z`` z9R2C0&4xBhdF8k15CY*9yG2a{o=Q*oRvC45gmg#KF1a&<8 z)qIdDJ(96QcwoR*Q&9oL){`@jyRt2G|(v_f?ent ztidngnK5}ZyK3RFJ>5hj?AJD++~=Y+*DZ+N#*4NU!K||Z?k|n13LbisDBtAD97nq< zi4dzsHZB{P`R{hAMgMhelDlGV$8U->8+pMk`Q#>I%j`12F0jh@#87b`sMjLpsu6Y5 zL+c_(AP5?;rHz1?>+C&;gY2IQ-Rg7+@y3|-^XfU4T1!aO$p4GHfsBJ`yPF&EOjpg` zJ=>gV7s-!rH4qzEh?-JzzAE=J@?9dI7}8;6mK?vem(F-QW1yAPs_7~%J?@2ujD6DBtH6duZ){YvyVEN;^i{;; z0b-Ictw^jOuU@&A&Yt!51&Ah<(g;68a>14d0dH8_tk*R#gBe&;oGiMOUB+b2LHgkb z=hiy7)7{dPz>~sLOp;ivFsE;PW4Rp}ltV>|pNt&amgXf23sKnmlX0z&RIIZM6!n1% zYS7C&pB<~fQ`YAEE%Q=j57JF#PD2HejwZ3ILsWbA(cle&lRg1^tU#z!%~M%DdcW@zdl6@5?sfxA;;1mQ+cFVq zKaOlGL9nMo$1kwfVymR;X@& zVOxsSx2LkzMk^n+veDC~_&!H8Y3+q0IgQ2z*eV_Kul{;L;gyvGnHYXGWB1+k1%x?c zj7~Gz$4mV9MlUmQIwrPQfUfJ~jaZ{)4qm1GD4V$XAC4k^Px}{q1W3~>9pFzYs z)0mm9-DA%P2|7$Zey#b}2t-TUNl;hEI=NYi0JWVfg7lns@v!8lw#~tXF9mRUs)A1Z zPzR@d_qfLF_#5OBoX*oZZokphA6_5EH2e~VCOe8RZQU*f*2+K@rZW`nMi#k(KC7xy z7NUBmhDScFZkREYIVu9M4j5uFD${=1c7gAB^`rZVJu^EuF7aeG@vE9xl`^a?(Lvay zz*Sz|I=w9aJn?}3s(=gej+aepO?AFf)Zb<4NT7&B%Grb8YHkm|OoH`-1?0m2cFd~h z)Kc(~`V4401h>g*A-U8~`$BnXms2ZLAmEUQ9r2UH5XP_m-Rj$nX9z;P%qT z=`2FlJ)LoX8f)@M?SI&8&XZ9*nytswkaN}v)sHKvSuqk)WH2>#o=F6RVu4CU-Oh1x zB@*zztZ@Xt%sbt&{bjz995M3dQDkj{qqQERdE_n!MQS6A#xJ0wmzDYevbo15A>I)z zLKSi?&6r|zKXIM4ep-QQLFJa*$}Y(F*rmdVe7I+=^b&wcX`?BIg8!iq4V2KD*l4m; zg#w*MsLfu91Y9eMH6UTK1&fVRhUt%QfQDv6c6H2Y@kla63VbD=Dm>rpoH$tA)sxf= zQ`|w8xu~5W@y4nh4PksWQsh-a0yZ~y>wq#UF!i*zcxrZCu_-6!8aIKu(z3X zYw;ldqLm@wSWz!@!il6@p-q}ud2oXMNa_6&c&_D#2W(h8YGGp{z^@)}9p6*|K;7J> zQZY$+?VUR(;u%az`VyxblFEVo{rms_z#5Q6{n8u8FsYLC?j0)!xa_t)Qw8Kqj<5CJPP2vG|vHkk;(z#Qyk?lQJmUUlqrXuXJO zy#c$_Ywy59cs{F1qMlw2;v;>PxNVG(x0f1wB{*>X(SRv*rZn(-Sj<=|78tPOW9$ac zsbLiQ7)wglyz^@b_y0xUG!1g2JR>Gk9~51zlV?x=Dp2S3)a;H0?dxXmpI>*bTQ3rK zd&ULW^@v=N=l)$|6DZTUk)?xuE?R_Pgi ziVo$z8%84T*}84{cPM}R=%z9`9d%$LI_?f&qizcRy@~WwS?P5*Xr8OQ@J<%@JQqPq zX2qCV5qmUDof_=FN=f2+TqVIE3q62gyzzeXQ_8KGu2^Dw3&%B#nLS3h@)YbRFB}wE zpPMpcRhHO?;QuWT(w0@hlKq=Z`c)VmR{0)T%m9JS>Ep4XjYG|>+~VL34)#XEe!8xe=t3#1AN3+KT;9f%XJHW`FJncjsp`q8$gl_-mXK zHiSs)iOf)x5+#@L;l-yag+LK6Q^`O-Il*C?aq;39MSq6MOaSL<=uy^U8KU5M9MF}% z#f3X9{Sj7NyHctqk3fLbgNuwmaNbOsA3sUcxGBRR8tH)=MeuT(y?jb(OVEReY*Pnx z0u)l85UUwP)bitO=*q=zdK%FX68VGrt0UDSwfSNL2j{PM@QANaU+=m5mqO5nqlHlP zpMo{N;DG1>(1VuMHYEF>A*yJJ&s(?ChY4qfBQDd7dQ|Jzx@Pgvx+r%@eW1ms)f0_- zqSV@BbwOeGylv3)#a=ljmF=VlI(^q`y@}p(H_SHDLW!wi9B2KCT50q(6G%LykLf(q zB_22mUJ9R?1>qwr-dtMwDBB_g*^%ZJ>aJcc>Sb9e~C`rwVs9o8`m|t1jIIH&0X1AQU#w}~&*_)5!zBiW7 zyh(wT=nTOTyc>jCt|Z8Yf!ic&r<^T(SBQaDDJ z)yq!qU{X~isY#GY`Nb@?7J^je?s*Rm5h6-UofSIgD-Jl6PsOI}-8R9nT;LgE6JI-k zV=66|B14!%#R11&AC{L!jQ#}afZ1ZqbfIiVU^Qnc+JU~X1olJtD10d(+yiCwNAXOL zE;L#prV|jC=i@`b`_syKG6zTu2^MISl%EmBWS8NULI_B#UP+|7@K@XtQm0O?Z;LKm zmI0&)u|qB(Z(gTgUt6K06&i&gAfxOpjKRz3f;FqSG9nl=gSOf%Z13{RKWotTy{)=Z z;vjD)NXVjsttqy@kr7gZgPDCXS>Lc$(Zd>;w&tiHhKQG2VDadNVHn&X$>D2PBTr7` zcq>Awx3&ruXP5ft_qcsW|Hq?}{9kP373y{(IS&t6;TXrUE^^L(_fukm1$=%49oGKk z7SaW&i_BJ<;$^>VTF1bGW;7E<0MR`MtXP`oEnbWdr9e8AJzj~ZvPiI+X<0h5bZVOB zk`(g3A&BTTgDzVl0rE&PX9;~Dz%05SWnFAAdO46IvpQzd7ZXWiIh`82pUT<}s<(7- z2gEsr7dH;XxlMeP(e=FhZo@G+mpn5K7db-)`g;u>jx#B~^TgZ9h1VyzbXWkD>VsV= zbi-f|Aa6)|yw(8oWx*;@w_Qd0&( zS(#B?Q|JM_W$RE(M-iq&PuHV(s;|!=#l#0kjQYNJbZEo=CD#+Ar5XeQo}9Vt@0!&dQ2g(<6Zm?Z-gOFsuG$0vh6V!IjLl` z=qDp_2RyV$muMN5pol7_1w&4iV}qy(U7DSHEW2RSW0SkCpo^&BGUXMjW#v?wFgaH$ z(8l_}=z3I%Hp@64K3q>+kZRuRrk5r@PAWqS+Bn+^yO`V}P50;TD+5?{>I^JWuzTy7 zP_OXoN5o`IMr`<#v`M(h2LBgW9C;@0oR4%%YoV+v_Cu%jF9Sc; zi)dD?dAyRd;TzB3Ma3^b?^~LE!O4ni}Ere>wa{``gxs-&QEf1 z_KY-V3#)vBA2>Yftk@gp=&rAkUlE%V%9?eP3lmTmetrAcl-qrBu}3NXi}h=_pRh}c z?9}dklv2+cl8vV583c=&@Ii(xk)1Xlab~~CTZ|moc zokF^YQYJzE7i#EoANo^#IV*k3=4x9d@QoIc7!0nUX!XN=5_{v$LCP{&TORL&=UlV4*V#I3ZyUevR0>mEdG|Pe{K)dlI%f& z@Qeaw(CK1}%PF2w#C#=0-a@Mn4Fl%TVY7Eb)}S>&%0gBjKEuwnX<=+*twegdeL*pHb`r zhO(k62`!vSI%CqgKGrwOcuFdR%S0vgmP)hp&pock(-4ETX1&n@ylUImc@GlT<-84%i{zY=o>UQ&& z3VQc^7so05M}DFJ@>adrpDIZQFUJ^OF;ndC-na62K7`SRfHLzffR2*bEj&_njhi5R zt)!}u*%r4xd(#M8x8W|5@BgoRn^EKnzF;{xZUct0}1 z0Q5;+rgxg)-&!rKJmB(W5k>3ju=O52QClw=c$?YY_PWsEWVjcNxITk) z-fy<35R)G-VMw~bl3>KoY`gU@PL4utv%Qc>C+n2O4UxlQUT$YYpTbBi(TT{9ONIM} zfas93CG!aYbs75@IOZ<$`K|f>yZ%1hzruS|!60Iot6n2WgAC3`1#EoOzv^AI`KVA7 zL;v8iL8jpEzQ$bQ)QcWRcgT}~fuF1x`KB2-a^@QDHjwCU536516CT%j?cxW%Ki0ur z&ypNW%C=eRBDTS2!nN7BmiQT|gD4t4L_9Di_nTc(ORKq07vDMIdbRTW?fy%Vlte6< z(uoe)$(No6FjzePWzf=aM`?To#TbnuX42qbRyjyxEg%c=iu~vL;O%*}twBIKou#Xd z-Q)bE_`&NWyAg%C-4MT|lGXVbv<$3|MZ)Pd(i=uf1xH-hGj#>=lHAdmH`CO9*&Jkh zvLNKfz#uCLifh3d)0r0#i{<`a5<8JP@3SFzVKx7*d}5|*-H2)+a`xRY;BU+P-&qe% z#ow#!(K2h3vhv=VMOlO|20-Z5)x%K&`BwN%$3Cf$PS9!4#pXDNJez<757D2Y z;|pA_4%7E)T2*Q90D`;>GNsR@4aS_G2B}XYe}qX_ug7?=IMGW|HewD3LkU7BPMuWU zh7NCvCl=vif%NEKjK>2*xY&xa zk{15XK&0Jcd_>C}Y5+nH3;k_w>WiC5vbY4g=kHL%GgiST0!NQ`lv@61%1nVxGW}3k zo|w%OBkRo%QfEorW{DpXOx1%OJ*&;dKW9szQOYE;c}`7r=B8M6Gd?Frp$qkF(`M#b zTCcindQyw>>p&7lgAx)K0snAJZ6ZZ7^hgsAOvkcWTN=!1LztUDuX>(KKd%?}5`dKx zCvzLNI7~nftstz=d<243m!pVV*-sPdY+`e@cHa%kJka^Ejr@|vqsdWF!5iA!VXLc_ zf&*BZVQ#0L#1zPsaf#Un)v0tanRzGE?b2RZssWO9{&?`kyAWO;=kpe>Z1g_MKo~TF zjzTJ;bOg9z>gmUQp1=vxHAof)XDPHYY7=y-->KaM0z)Y*+MCdlibUNE}L_?IMTb_`fh zOcM?zvv~2@2Ifi?Kw+&6^XH(9l>uO-itI;d5C8fmD~OBb(Z<1;b$>jVIcIoPjIQEK zsjh0EzU{Y>{qFN`gPhgh*s|$K$NNux^9`bBd)d+(;o0J7W5SP1c&J1RPxY)@&*x}3 zOQvK6^S@GR7}W2pI@>GrY^-knw|*Tu$@9c&feecnT~(I-ZD)lVc?V&H5tdw=#H=J` zP|yqYjeYkkRA45ixc@lp2=5&(q>{6+0d=!v3(_wg3c*k1aMpt**;<`ZjMI*GBSRDY zEPhhhLjjgko%ZQyR|F)C6qj1o{K$kT1}VmNMH?1c+$#i(3Wg5woE(EC*4+!|JhD!$ zh2+B{+wE|<$`FyA!RIaJoXnYE-CRrLNjibj%T!8#t{=YoYemAen zuqvT3ZHyLiEJxB_gIShgCfpA!&G4TA zx~#?7_M~Qvqf~c0t9((Q6u}zju5S#`-0<4vKabeF!bjLSTgIwz#RG2@nr+XZ@*(HN z0fzj95!dgF^3i`D8!ZB#%ir=t>TTosClR}$_gb{qhhsDABWB8z^YYPuNFz$*%-Vs| z+#r3;vF$VkSS>+HayJOt3a(NYDBS<`C5j3|MEDkDzhpMC4% zTTx1ix!xD`ft!dV5M`_6m7wuoU0WT{yEs*%1+`fyY^8yxNqK}EP-Q_-V z&9hE@RHpJrrgW^Xt9HE2iJxVqlW>k-Jjb^U11+2@Yn9X3nLTIro%rM{?^DgKP3?_%0vY>6z zem?^tGGeVI-P-rDdE&j|P+Xq|b4^wJ*-qv#RLQxH31CmRF-~Q3rhohZ=;v-+aiRCr!!Kt{fdaww!vNFjsJV zOJG~J${LcZF=7K)EGagyMMuHuvccbh{$o?zlzY3h0kwSiZk!Cl<Vv;e2D>=0JnmOQq_LaXaIRW$#@O<#>E-DC9F zc@n<9Pj5}tRQ1a4VovXtQe#FO7)UG_hu1-Ii;~vIboV(~4pid)mKzDAGgJ-7?ktHRXgNNDs1aE$Deg|!cGSn|x0s|7pq zfdOk%+rBad{%FKee@3Q))(_E0mLJJRu?zcE1kq95j>RFP$b|gAhKJP02aFkz(L3k* z@Ql&BYre3aDPWXRhE{lbLEywS{&Q-`2$h;U!)*+!)oyA4D!k{acr6HsRg~kyhtVI< z89!{l7@)DUJUM>lzd*-o|NVAhDS+NlfzYqmm=+XO(DDeGJ?YSX4V)5>Q^yFDRqXj& z?^36#%bb1Uy)N6R`60%pg3l?tHL^p<<99VBf|bK(&E6Ts=wZLTTDEHWKr`)u(3Z8> zvxomaVKkpi*>T9p*^Tb8`Tr>1%x(K2&LZU@P~txCqi(ut*E5LPoHj;pAB1_OsFsdD*P&8jZTj~=kO@95-*VDK%FX@Mh6iT z^C#1Kr)Slqf+Td4Z%ub4>*S zdHl?bpqP>9jFnM8tYP9EmhfF0DIO_I_s0AYA22p9r3CGthogbAst2i1h6K2D+;G+( zfzODN-h1~bD`|)6NXD+>Hh5v}kw3%k>ZS$uQd(K+hF7Lys+&wJ!V|Ib*ka?sF?3fI zAYHJ@F&um|;tusO__1Vv{C9n_yRE;uIeEj0P}bT`YtBGzvvHNXie zkHDR;mXg+$4{+2XO{_?CR9S$p#*9MhNl7!~Tvz~?)tq0$yc{ces_b>WUm8T_tYT%e z;aG?$E1P~qk$Mao`ZIomLnp_au??^h>&&r~G82ahEDqR%ZBr>~-cJgQtM-timPk0p z(|H6ES7Dq=9JG0?=9TX(BNZKn%_iMD%%up43g?fX@-KhMj#I~8`BVbRJtzd1$b!iS zxi6~A^&R(nXtlScTAno>&Pz3R?Ep&U%Y}EIM3m^qu~~Fe z)rYX;01vuw{1$znEs>djN36)VFNakI8iIz2PCFB(OWZfAVv#lRCaSY3HsUUp+ zs~RmViX1Z}ds6@%3SNE|ksP%KgjmH4Y0B@4RMs`Y@v$-x@+NgyGVb=xtfNkg|B^hz z+#alYbjF}7Btjsm#0fM|>7QKR_8WgwtsS6-7(5_iN`NtBFRZC?kHJS=z(O{3eGae; zj2Oe77GV~G4TRi380w9=1a;;|yO5JJ6#-n5yY$iY=Wp~z8mz5cXb(w=XhSHNjeFPk zH5=2@YvpuP{7lkq_yAXVkwxV85Jugvh(iqKk)RC}t%nXb$6EE+H$*lwNN+4>LEZMf))_=e-XH#|-SOArT-PeC6iZ8w0 z6N9hYUJGqabWXK-DE$;A756kO-w2P%>C)7A`}0kAR!^lAgf;A|XR499VgDQ+e9tCh=MnzehQERC5kpH`Ow+LWAE zPAoLtkrC(&pC@?QJJ#Oe6A6UwMvYXSDjwe5zX@QW%f*;3Jvhr9Nl=g0SR~Wp?eERj zr-_NE(MAXj9%sP{Z646lw7NAv&(1qW?KuC${?{<80Ja$!0kZO!$o!ctOiQ{rRrv1b zi0(w*^Aus`hGJw;8ZJH3oe9B0bxvRGQMv=$VJQiz*utq%4qz$Q65{Q_K={w`s7-B070MpzT?EO4!F zWpt`b=whm^bC{2+LKks!9J93dszM#y-Vxp)wS=c;Sy0)k2EW%uD3Vk&C9`!-^zquW8!NEAK(0KtK$oz@F#2KkJ;x{19D_f^LK{Rb!X zGs-RIsG*ABzx8$0>?k9>H&wFCMd^#2_apT?wZX8h&!$fKqc=zM&RH zXBl~DYaUJdPcj(RH)yqNEEV07t#e=_DZn8*t#AIWMRkxiap+Dn@w&VJd@P*2nKtJ0 zV65ZB0~pISgTF68T(5U+V=Hb5>Bi!;rQ%NuFqg8*WtI5ZtCF5@Z^P-YB4Lzla$cJ) zC+tF;M*&-P)KR-M+lbXGC=|q{$z=l8%FPSY<<$5Kvq8qCQ11-}Y%}sxQBAkryHt6cz-EC$h96}LS@0*ZK;s6M{}gG8PoSai z!29MH2oa@iRJ|S6qv#k4r`s*&A@)AXtla`HU2BG~LHIxy?JA&zEY4^RD8J?*PDFLY z=g}WR*4{S1mUD7$sAnTyzUeD27ELg5OHecBin|%ipL?XqHO6>PJPSqHrJ9_W)C@~U zZM)x9ov8$34}~kPE*qpkt{OK+DuLiWuNYVDCY&+w|AMQQF7alI8!-bDXnMUK5~I0j+B>$LwZDKoYMf(F7mD4R^2Y@iF?A9m`sB|_DKfJW+U9qS4nFsqX#Am zF0{&R-s@Dlp4chfF|UnDL16L~&Mi>-V&N1GC7>mz9rPr(nj09U%cwB3*7X*Dh?$pL z?2p;<|!bhY>UWH{atHvapvlkKj!?`?h>3$$o5zm7VrWXX4@=NSUGuY0Va z0vM#GPu}ao)L-?)DKeMT^hSW3?YfbxBSD4MGjY}`n+Iu>^?xPLmtus)**h|5JY}aL zU_eBzYc)qS;=U)-U7*&o*b_iDi!o&Lj2X6$CbL)|2J|T?_<|0kCkh3x z44;P^dAKk2!w(t&AvDL7(Z<^q#d~E7bmm3=>h40-jWtC8|33i0q}50b!Bw*>k5T0r z1%z&6v~S?`MvvOX>HcmH`pj+5R)RXRGKRfo{3x|EH<7?tXxvM*sa+vxqP4w=3lkZ) ztb?&DE>61#CeXN1N{XS%SzMcs2GNw8x4fpEw0f6hEFTafomX@j2Kdsk|57?cf;XwnMPK+AIiLTH>=ZSxM)9CFWfQJH zKPwkByZgL9_z?5j9{yepZl?SC_a{&xV^u+VtI)d{Ob~DTinLYO&3m*^Z0%`zSvhkS z=+LBRgT zJR00pX%)G}e-%A3P1JTbmmZfL3;Hiy%RCW1QXxUy0O*p}*h)iS-nf~jR{@>(ZP^qb z26Y@Kdi_mr)fy5WMmrGasz0NFGYBQ1Hc*q~MwL3Wvp$8w|ML_Y@KRwx+Imk)R(cf4 zVRPP>yD=xSA-h0ZfME!{BO-x(m*Y!)fvEtH(DQUWvNGKxEr)ITI)_5kT=xeU)P~p! z650g=(iP9{XrW;nu=O~GS)XYvJMVIVJvifXfAgG*>^8(CJtNflGMf=1fmnLC0*O7| zGt1Cm5DY!exvpglSO#qE^&tM_Bt3b~a2hNOUz<43te0;JHFO1m|I}YpUzkYS?h~dU zV1ZEPw__4IG@b~#poeVItI_$N%GxxXUy7R$CMzR~RXGM>zmu;tJ+*^zI%)EPXIywJ z8~qv@b$+l$=1aQ6dbF8!eR@ENA+H09Z~r z1$_G9%ngnyf0tUoGGsb3$9KUVdoE7A!Hpr_XFHtO2vFJktjlcGJ1p<Mow;t)FE`$0r*@y~Ws{(d!kTmmFSN_OW{6NNyMJR1y>Z$kPThZLdnQx$MvHL~h`$=5T@sS9LTj4w;M7MuB1 zgb$23#jcZ5&uTZ`2A+;CsRd!H&7XiTuuvf^2AIp2v(0^9@T~64Efo0lFtgOKvkyLQ zd^z44x7xN;-u)EoL8-(6BgD;nC4PL=a?H=A1KInJSfK48m9SYYaAlw(=4Yl~+>=82 zM6P6(XBM*3U9-8K6NL!^7AGip6hTL^g9WoUf;{&^cH8Q{O1&YYo57j=j0&l46Q^AE z)#S5!6#dMD7*nfEghAX8vUJ}xW9xV`JHIeos6K^+GE68gVSQKExa+N&yMsB>W7Sl& zXwSuR>ELsojJ8st#vXWYEEz5ds^=fDG?(iWf2!Km`rzsj=l3$P6Yde1PO9B>R{|7& z$ONLT*l^l7q;I@J=*|18XMaYJAX=DT$^|S)-Nd$CtI(Z;i;~0`$&B^)0swv$q)gLh zFSs>hOlDXd*b}^1fbmu$ed}1sk#0U%nydbFr!I<;Hk5b_6FtT{ad9gxm~TctW;fO9 z>ca6nBp*b0PkG56N&bfjpUWw*1_b8xyjO{TxiWblApN*<<@y!t;$iG9n5Qao&>N?h z12w^R)F2L_H3PwSIMxh)tjQlKJPAyk$ALbrwKh&?3<6jsshS7|ZUDiQt9#o2N zX~njnqR%1N>iH4DU=)dbdGxoL^4}UX%ckrj1*_DD)0wi_!`iLtsd`j-A)Yz~mBir3 zJ(wMBHH~?{Wf`7pLpv8!${Db>y-e52xH3>RG4@4rCv3>2uF$)hm-I}emh0I&Q%2@WPrC*D!NCTwbm{k z;sm^cTSHfdFFst)xWKW}ab_i^7s^4kh6bAPi=@Bif{a(^jysbTK=f)eNV^;@akw(N zTO&0H=1Yo+2&h-a=rKFrLgiObxaF2zkQg8c!c4UX%h~P_gUE6SbCjX>=Zc`wv8tj~ zrz72pHr0l2TjJs|N=dFFri&a%H^pT#0?`Lgp{AY|cadv|q5P7-lJv=v#Sfm}CVX43 zDDl~%_gu!Tr$wu#5YlSA^mFv+OO4Hdg>d}bs>%eeA@m5r=$2Os!q z4wCw;F~&Go+{wc<(x=9wJ3l0Tf(fu`{t5&~Req}2+v z(@_kbC>duJg?fVVrlVi9?!y=IbB$}>4lD7Vn-Ik&I>rkTTEQ(ji5F$xv)kbta|6Hc zU)`mI>^cod@PoQ%Bv7UkpjW@3+azO@tSl{wGX*f*uqoK2oL}6@`U-cPcH%{3+SiD& za)&4b+=`!9z9s`4jEd5F47#64Q?*_G&LhC+^KJ@c2mcF@w%rd6h+f&f)V!j{Pk_Md z67jN#X&`xL=D2f7ileT?(xt7o4D6Xinj!onuf;mugYt}`8Cx%O%>0bsQhII^G-KH+ znIi5y^hmgpxtz-~Z+=mo@_^O@j(0rkqftxVhVb1v>|O7+t%6QN8+t%1lLD&r9kY1Y z#IaORa&Gm`4GnZ@%}?ueO49cS4Vk9k^CLCf*)gSK{&Cs23})y0W|1+Ef0Z{}e!rD* zv(g99j0v79<(qWIYEY~x$Q%B*uiiF2Eo@_l33KAa6k|T_l}BNhXt;?pPr=RhS+Sh` znV1vY_e8vrc|~AYd}6No15HR1<_x^#)NAq8k_ca~J$ z5YRsz7`{+=;_9?t|J?H}tpNt1ovH_t{(2Tr^tgos2?Vd1)Ny!9&5gX_{O$D8x2wO8 zpe7nl;JgVcdBX@NKMliJPE=JEKEK(smNHj;qle!iDsZ0?x|hgMePL*BvWkhA*AHq$ zFc}`f8@;Ok(f~Tk*>u06JUwxpb$zN5=#F?*PE!o-);v70Uy4e{EuIl#9&0MWN2tC- zUlDj*t6ZJTpq;N9xW4YjXQa-vXXj30+8;(}IRz+HOn@{;$(+L(=)-5WKoZEs1uVZ< zPC8)2xl&bXFPVyvmD|)r43K4-FNH*fv&H64{caA8q~JwMnNlv{p3Kdc!wC9!_?R#y+ZRw@qav; z%oh78q!*UeaXy64^G2xe)l6!NNH>V-QhxY`1!lw$?$#`s6K6od2Y#%(f+2B%M>fS# zUPV|2f259{!jsRq{1c(vBA0QG+iqg}WD!JGKWDAx=BLJ{02@Z@sJFEIA$Y1j>&69* zkC0j5ALqs?|}Gi=Wjv?jfq4~}BJ-;zxZx#-MKpl}xV zv~eu2!p0?csAbj_@xhg&H4>lY=K&)!*;>3k2KUbfo*C6cFE@2I5(sz@jfo0YRNIjK zP`@s5oe@Hya~Gf{yPnc=0~FALVpi8<+V7?P3*2)|mbIy#_@23PW!VC43D)f=1jsfG z!75AdhlwEht>R(up4mt>Qm)zO+*ML&K;d5oC|d$=?}R_`tU{$E{%r)PsU>Y zZIw7u1VJyBKd17JzjbJg(vv@Dakp|>-)g0?p_yw=P`nP0atuS6nhitC4Kvdu7NLEC z(=a-F;}YTyRLQcj02+`y&XR*=QY{d&3#kci3wh^(cilJT#ZsLrJGhwmWO#02Q9ReF2SkRbU*0h}Mr-)PusOGcueL6J;W0Np}IEf48~KGdt7F8L}n zCPgG?@tJV(z53G!btjRdWIppN7Iw#ibqB1S10Q__YfO(gsu^nQJ_Mk77Rejh3eFhV z_`n(jO5(6+Sg-beC(6%LW3K^6#;F#$2lvObs{Lgkfi%um{=8gP2IJVX66L;ZxTHA8 z^^#0N;}VOHs*k-zp3^YY4p(!iQV1Rn4ak((Rd+xdBBie(Bxk=ARTSu5^4zdOe5Hm> zqCb4@_aYhldUyDfrGg$JctCqBH`$)t)a-x>It1>5Cs*OnJcK^iyO;o3b%_T`nx457FP;_yrdhnU+g!%z4l07&`C9;`@Kpe1(M?1S3Jmw5^y7qXB=+r> z%1Ez3&L;x6X#^xlop4Y%ZER5qV2_l`F=sc2hIJm%=c-u>G;%*#&W%+x%YK00>-Tgz zti{ZTZm53e6ZFzu7idC#I+hpz8b<#d3;3j0Bld`58OtYhsz(M;J*eX3h2gb>x*5{u zuBe%a0Qc1?ruJyZPpgMeZXR5oFu-M2>5h5Ys6*DXYVw3x2H#7<_qCu^=ZzGwMWTL37f2or@|@k`|+R^z_YnS z@s(Xr1B&W|aL#!!I@SP%NcueBb^W4iC!EWzs215fxU%XeH?!dMRM+@PQi?_@=!QRHVR%jCf@MXqM?Z8lhio_JJyp%&evmr+#D|pU`@PqiA3%hY0 z4WhzSvCh34UmN^$EMTWO*BbiEC%RKGTi56A|3O!2 zxI`L%O@IDpUGoC!#8}` zHNMIC0U5ioVEy+e^c8Qf925^%DzZ#X56iaZ2-&6tGwoD&F8=R$kKo!Lb_Gkn?s~dymO@c9^?PxKs3nC`xic z1fV`oaft=n-_eyfHV3ozeoczH$Yd`wfmDG{UJcZp|B*Xj6Q!AtEO`uN>RlYw@H86< z{i?qk>A>u>fW`aCu-xJH5(c237?zK$p$6o8O%FZDkT+2Ig)*m8r=Y8AO6fD`aF1g1 z8_$^y`vF4hRVB#n6bJP@5e+XH(Xt0>6=t9w{2yW}I?g%o-sL)d;EA{cciRO;0yqB9 z-E^ReVEYMmimf;v&5!!rh5yyqxLt;lropu~{0M>zuIkwvSHu@1(AM@~e#8BFD?@86Lu72y;=t zLO=+s)GQhb{xZX%My$17#=T};d%Fov#(C7`6&b-#ceb4<69ex^Ac)#Kd6tpN*H#YB zE4Y==lU;vmhq`!4eB)0_N&8TW1o z$8`kiQbUS|NN2rPJrf?U2XP;?r0wy){Kz)RZ_fE{&Cj(^;3)@i!eolF>X&cSSoxXk z@r$MWzpEEmj=AeDc5u`VC-U{+7m4VA@p6zwoFVkLF?PR%+R!71grQ`A!E8snZ`mJ#9K2AyLopIxZs%C0szB8#>vMipoFJ} zKz$?^s|U`F97W>R*qrluH9H6=5B`V9jH;;8t``Mfd!C1V;i8(d0%_dAkx<@N0gYi1m2Re52o`Y03HP?E96TN)?ho zYB4H~{|1I~DKvM*Ep@4vA3E*E1-_!)s!KTu%@;|z03LQn-%!5OSHyfYKF#_a+i{B# zxW;1~FhUn^GVVtDWVC&$X6<&mLcbmV*dbe*WA3a3<2Uf(L1@+u> z{*Dr7(j9cG3FhwaZB{sN>cI&>T(~)(WoWV5*@Rk>VJxfsC2pT5(qq;7dE?p;M}?3L z@vEjCq=^C`x@b)-Cl1fb!%p^A4i7Ib>UBL;m3$%&n)8nRINUpY-z@&I>e~{9FtEE( z=IF_P#h!D3dQgc`aA{F>xp0%`z>(@K7S^^RqG&!OrnmTqHHubzdWe}75mTlEMAV*S zM77Dyc#hlea4Gn{5qV1OFpTBGx|iUN=qU;_{%WI1Pu_KC<-zE5LRvrg%?SSdlq8W2 zEO9F_qM{+nYtwcitso#Cky4ECW}4Caj_)ZxZ3$Cb#|V4eiWtAq`706<_@exirGA!3 zut&t2HF=iRJ^M7u=S%QC2aaZlFHa1z3;E6K;0SjSkTqTQXiboR-O-d}CJfR-8Qy*l zl)d7xgf2;r_JZeHnEodO?v@B??lShjA_T*_u#|8IHn^4S-`)(pS>CDmY488VaQLK< z6<-0Xg2WGk^bj>n&WZ2~*b7UsW*ve@@r&XnS@I<}a#*K=rWay^81UCjIp&>@V>T z$eG{S-_Br{NjbD9&0j{wZ?s&>Kor~^f?O^VdT!Qj;iPTpPEapdW>X5(q zxG|ooOm3^h7kTF0T5-5Mp*qViFz_K1>Tq$n+*&j&bLllLBA=Pu=7~`_>Jop3265;87%pFg-TTMfyXEaTra7TdWY9a_m4Ojpwbq zD$TbCna(6<`F0EC&F%SS@p-s)FTD$=4_vT_Xb0*6W^qLXSiH1 z`i5(oySZ7d8ZfDr-bg2w3w$^3ZqLGV45KM;#8`>S$q@n#$XxW5n+X1r(B-rb0aY_Z zbVpyEdHs ztiRKt!p*U92#=6G5wI#r0TEqBzn;;XG-b7$ZiwOXB;2?2u`K#@T(f^zI*O8-d4LA* zL4_eg45t$nKieu}9v2#WrdQH|B8-5gAHZF{ zz^Bc#I$n%L16fvoUFHd%V)kSE7<-G~YhB4BE^tCmIsC}KoD&i~cd4wWRwi5ErvcCp zef>#Geaq01J*?NM^0s_juhhVQo=Ns@^i;s=UQbMGs6ReBAd;@V(4I@7o>9Cr(|~dU zYWS&Ct@Hsb_laKtG&!qT7yYP#Sg?fA;EJnaYnfl0-k@X`(z2zUyW~-;K~wpMdmOTz zH3usI^`>5zLb}A-0tA~k--eCYQ5Ad6U)p(;w%Vg{aT3_zsH;ST_{~C9j}7UrnNv&D zKI(2`3%ORk{Z z$NAPpk-GL{iSfq(5n^{b@YRw7=;`I#J=U&buC5MrVC7+dh5e@pU>J)h7a2AE82v8l z(Wbuf&!#|!3Kz-75L$=`!H(q1?SnFwH2C!(S27x{pf?{aG@WM~RLy8<{czp2RT|ft zg)4b86&e8y_vsALNxg4u<~ruXL(ArJoKXb?4P!Jm@NDE@y>zF@=Y4rS9jl$!6MPe1 ztLgc59j>We(zDm2su7`WJf@?Nu19LHG~Mt4kL0YsOFSToV~9@;Y4{B8Nut2WIWKhF zOjaw8UUS1b*mS+Pum;K79S;_XCK1`}wx4@|qOYA0=|xKFBE zyDOxoSg0=bHKqO>o12S`srffl5}ohRB%4aDsSIYf14(9!M0nBZ@S%*HrlORnqI}<7SMYa)iQEs?o z8)DZvLSV#KI*#E|$K4hzXVTm~orL@7X^1F=G?tARUd#O!&Hs-U`;dJAoB)xQ+H>8) zbivEWE;w8OwR2c4B(uwt5wBGS^y7lefj62S)DINYh)+!ec8<5)*&7PXR*Ket@38d2 zY~V*q^9tX1PmPSOji>T1%I?R?0W~Pgkbm%qi`z6pY3aE#>Z$XrC3eVNG^JMXR4apl z3KJ&v?#-p`$RxP`jtXtm+NG~L+nU6p>q<@Ois6xQQ+4DxlFe%2_pi{OXQog2~kj!mS@8_ zTHagF!HRCsMJnU(4+ZRZs+BYGpb`OOPF^_1@eQDxfFEtj8}zuW&ZYaamPMXjcZ`tm z>-i93KkHFY68#vH!S3u(&uBGsK#i4bE>d#pZ!x0ijyTpv2P3+?|9mk`7Kwu)~p>pYXqH@+VoyPR56C} z;EBw@;OIWT&^1z{2+)T^4re%9E;{9+euHr0msq-q2Et$_^3BS}Ve>SU)O%-*pH&J1 z3v+-E@MBM6LR6c`?qJQ(H(j1Gc#mSSRxb^qi94vRQp zYiaR>fn*#1YnnQE7W9Wv53G})rz4~k?-X-(_8_ZF_TTnFk2zg?E6re7RA8%;0SXEn z$xLE`g=;JKg7jbYaHVww^60?_c8;y6qigkGD3=v8Mp(K&$~73%$eZabbuaImy%9hD z;ldUZ`J|`3=9&j)S`LPzBK*YHBhOu|1rEj=k@FdJ-^v*_6M#xRYhC6cAbz zagP2P@R09O1gUQoU3Ae*6yqTGquO~wb(q3R=j2{qAT<66i>`ttm!Iyz)%RM$o*|%V zMJ6a$;#&NIPdpPkaS3tJ4-De4v!rYDec{h89-Fq6v|84qQc<3yAx~_y#(E4EsO$cZ zZ>xR_5l=P(o7Nr_x7}G|Ri*2{lv^o<@;sg)A77=ps5?$vVc57-W$KT$_gm=(e0CCL zvtgMnVH1s0WnW@9meP>&&rofJmuB#bu_QuitYoYH+theZhrrpNWwQY7HJ+l&7Lk0$ zsIwD^nJqkFDP2R10ocEG%h$pem~Mr4bC>y_zARa;$C@}S&8!<0B@=j{@huEK#bhp* zL7ueGD1&{87Ungu)K=tx9W7$RQatRLfonl%XFnFJ7AoCt+RTZ>ku($Q19#ps0v5fv zb)m6dNM5bwLIK{lNg}Ap3Z_*HI;K1v`2iE0Rkt zL%G3SKGUao^&g|}SQ@@~A3Shlnml3o4nU%fmO##!HuJ{~KM@)ltLx=Uj;n7QQ>Mb9 zhTR4cI4Cv=E_W!@{Jd66`DkQVY}3^+W8g4rMx|uRt+>1M2rVXblm<-8uU@U8arjV{ zrD+m4XT#$!l=bE|C9gXcq+SDh+w2TFd|f5+lOG`Yq@5CAgXah{O&1Lh({WDD=t<}u z9L_gv%=*cBn5H0ry;P497vi*H2eW6z;zdnZ{RyKx3PlO~YrWKf59gKAhy<^=J1fRLh9y0__f z$l~36z4lzvht|H9M!?fb=APTSRt!5n(5F}oGNX(t>n~pui&;!fOYm0P`5E>XUncR~ z{s$YsMw{P5+zF_Y@usKfdUfmsYd#n(nL`&g{T%%!E?ECEkcDD6edqpGB_4hrg0*fz z)>HuU=!tzjv_MlC01$t(7j6CCg|f#6eq4e8I>_flq&hVxTVFcPP5(+MBHoc`N?4L( zZ*+vhj(>NxBb5mUE+9h6CuJHO()0Ne+%Q+|iXVi0?6mVWx~lp5K&A3 zx=WVZ_^~yWpGtfs7iUB9n$$ONmfWJNtw?@GHx19}kHx1&;4~-V(d&OwZ!}+0mCNc- z(HxmeEI0wZEG8WSF;3O8SLDv|Z~AO{7^BfgGtck$*y4LOA-etCpmmx9*oqst=??S2 zXFOD;XQjr{F7#xB4ax(+yA8n0f~i4ncS=1x7y z_!G7vY?uU@9bqra9oNd$P}p?SiVMP%L)a5RpnGZ@Ce1FuYxAmgm0MP(J6~f;n9QZa zh_83AUpPDKaq5+aOwQ`r_J?Dh><3&qg&F2tc zZikP}(uTp42nE!_%pgs5G(Qn;Sn7uMi#-EArbgm1XDcl;)~6mBmJlgt}CuTTNIi)TuTERO#1u;jDFVKdw#S(VNGb&8=HR) zUsSFWqIWcrbd^fjzVt(7POe2Q*$Dr2d0JJ@l6mgnq;Ch#D%w_RxW50_7G?TP<7Qz% zYLYnuOZ#DQ<=yM3Z?73vjh6r_a*P-W!~IR&<)W#bz51rs-%1-%kv1dCb4Di$ND28epOvq9z5Z><^Fi2V*?BO9gA`XDT@tN!VPCx-hv&1<(XT&*XtwsgEE`bU8Hex5~N3A|pu zr~{%>5}i#jn@Jh-*#tk^#2vBhzbmJcGuYg`~8>CD0w-R~oQCFGyfKssLK6vWE{|VoKb^k) zo2c3l%izQ>qm@pOdv8igd@d6 z5;U?uaW^+d1pVO7us0x$NU%S+lv=(%wZdH)XIK|~8fUQur>J1A-c$p1eyoK{kJW8= zQsnW^X8BNLKapwxYOj--^_)UElZwNpwkU(8%Gt#%3P9N~_{gh@YxKaufYncjKIKns$AeiM6K zGO_Lc?GZy#TfIGk8wCX(WB;Iplj0- zGGM%uhtwyM8okgD9$+S7CTpU2C_)FNNw?e2&dhnb>S(Lwgov8Wi3v@j;i>1rr=4>L=Mk1k-i#Y*KdW??oyY51*kqrnjT{3!={~kVketkx%c-N`J79?nhLZs<0K%pvSJNs)$(+e zWF#N%lPX_X+qar0Sp-gZXvB=JnKXZjq>1m!iqe2x@8cyLPSH;lrllU-uqohSmxv&_ z;;z|6A-!FXG?e)m1?m4eE6kkrwcyWgCxy8f!x6ibX6NL+Su$L&6PyeG&p;)NI!jKF zB~z3v33)+q5E(7OVgj+$mDH&P9rbmAv-r-HV94bTr{bV*64H7p^h^hJ$yLXH1}2JV zMiW3^XOieVGG(XG(fDd4UbEI9=;2~WFK)P*{xDNb9CgEaH#ARB?UoAi`&msV2nxR& zdJagAkLltO>3XYCB*q!sextd0)swXgs$$@^B-B-vRp`nBs}ryVT@7)xyz8sykBuwV z0FrmI>$t%OSG)ppC#M&&&j6!OJjF0@p2!qPkDZi4BwzqXhIpJ9N z*gjj8R@hx$r54YK)$7oW37j)3NgVLtf7>9{;ZXL_Q=`dhPeil_a_CP*Iyuf%l;0*~XV*=M4fL0nyzT48DpGu<1awVV7hzbe?1RL9VQ2Mkds6jQJ-3=yOhP>iQd@BEzq z)aZzqd4IlCQt9Kv(cl!aE>im-^#)dIn@n+nAFjWfhXwdg?GQcAlK93Bt?t|14C6LKR78l#Kf5FX;jqp+Sn7D@jU|WZC6a#QC)w$IveobH zH7Q;d1AnJ$;QK&$2JNEDvC1fgbzAg>IM_X+_gKLr^+xu$@(rH`NpAsN69On-%9~jX zv~7B>nok=8oBBpY>-SYM3t}kF`v1FB$&8kWfkJ-eHskHy~OI=|J=axz@ zGGISj(%d(V13f7!?~Zw&C2O7ZLItTauBBg4#rEpSRuT??*Tjar`70@DAxPuW9Bq}I z4ssKdK^lY+zLQT9jnewzvljfa&A48LccNfQGX0u(@qS@}sDjXh_D~^?siE`Ey7ixpwp%)02cta}UAfP=8;RQ@_ zwDj)s!^c9DGeFw81u2&4I}K6TO^kH=4*w<+F1{DfjHlXA+&^_(n$daJDQ5uMWj~k& zuX){*O50!c^~!PtlmxF$NrQ^&vszCpq`nxZ4HvLxRQFpJK{KzxOB_!1*W!!EMxR6! zJPz5_*R1Df;id^lrtiWATft#|TTAv?okJas_z!#?I~Wo1N{fQVUeZ*XS1I$3rwN$V zxi+($WMg*F>=Y-J%8M09Xj@@WrG)*kGd!~@k$EFSW?i}PmhtvV1wI2@zstdlL!>Pk z6;OSA??#1AglR5gbg9~iHsSq^%>7J#f`cl8>Gglgj;3>ry!UwI&03i%eG(*7yR5_&4fpeTz3T-vSIGm9q#-50>5#8t14duN^Y-1O36hSQd=>hgdcqwoPkhz0S)yK+&G1$N2rd|K+q`NU6%Q=a-BPRm7u6ixxOk}bIa)BQOS`oR0ayt;D!K+b2Gl=dB{|^e)B9BkJ-|D*gie#2%DfGVVugPw1vp>(R z-|(iN7L)8JzVPNF&K56sfyR_C5}9)F+1v*XO58~=xWW=YhbG2{H;I1k@M8@j?^gM+ z4L)(U1*c1pb#j2q$+H1FnqMvkNyp&50S5hyyQkU7k{9?(MRp&oY6y5(3Fwa{sAc2m z9F^(K_6&nc4n|KQoQE1kqJFrBxox5fjVZ9ZL*~v{Ip`RvWRsBy_PW}^U);{eQCCiy zQ`*d|`ePNOsTbTB_28odL!765+UiOYd!RR>cF`Trw32oUbn$SNC?Qh@`uti~%CGly zf(hX3u*>}<0~!(g!?w4T=s12PPUAq_iUWc!hRk^`m^I2?BQfz;fU9gBlJD|Rcl~ey zS&0&o*Wr7ZNIH*(QVq@F4NuAE9IrZ2J4KUyAc69)g?#~`H7D3KrELc?lo?FO}b2XDfLZm6V&f^esEneA1Qqidb2 z+rj~n5nAcOg4+=N6@OSjX?QA&Uhp2I(4eF%hrUSG?kay|&)Ow^gVQqDJZTP`BZB5| z+|wM*Fz7#X@9HLrLNO1h6a0BE8MSFg?i~gETf!|E(3UtONNLcTO%49Xqa|qVtA(Qo z=X(fb<)$dtZ@u}YfM-bfD}Xax-8~y{s;1uPU!_`zWaVL5-ehGtR<*tQ7{?oHxxZ!1 zPH17x6V+t4H2d6jWKeGJ><^h9FOurehe?erb~cyk{piyNrNYgh0E58=D6sv2ApN(X`&h1+J~&n(I3*zsa)cagJa@N=6wa|SGafr8Tm8KNWW1J~!T5CPyH$L^zA^w?NQvx>C#PL6v}Hus&V!P5%g zNrD`|)^qvz1hJ%3CVMMcC;S?OJZQY2i}ipRB$Xkg5DVl!xmTHWVgChOujNVsckU@d*~C zu+i3%*6t3KwN<`PIBs9;$iTeLHe0;No{haXZ5E25_W&0%qGV403dOmqthQnH=TAHt z4N9k3r~It;9ejR8MPOw|J-+GK5=7H{ubmT}GMhFY(E=`?J$<`pL?_?uPBtQ3wn9eu zXN95Yy&B(pi*p^GRsoxs7Sq=EtJ4;fiT?u@G}TONfp2nEKO&V5FX1ARj8F1 z66H#>{3(nhAx;2psTH?OB1XpJ0<0Y*1ZF$+;}VR9Ji-i0vEc6Gi1vTi$$vPiQ7o465)>F)zf41i^6wRddF^Fy;AN2^ zGQGY9x#H~);`*DgNybAu3W##wTtK5Eu?KgD2`Bq%kvEJ_0VSFF#UY~6u-8w8^UGz6*gVEA^C)G;;W8fuYI6m6Qe z3pYkOR-CsiE{;xDK=&IVT=lVxOEp6^$7(Epw__$0A%h#i;5e+^ zH-~iBDWi6)bSqtQ#{`Fgnk`9&mZ@&MWB{f_aj&+E4|pYvpxIo|+(TCxR;`wW#FkI; zDGq*JQ?K@eOq#qG9#>{FGbv9tiZ9nF!XL7Tx~r=GP38&Q7JO6qsbW!m@v94voX%Vc zMi`g(k!+)DaA_fx)@HGQ961d^!vzwk%?`K1we5dNp=TFT%-+x5aOqgMg*J0kRA|jX zIo8WUSX3gAc}1doAJ92gj1vSkOD1&{T`L9EpXRygSs{2viy-%spqs*b^zv+6W{Vf; zvS89ORz09J!%MTQjsB=lQ?__1e$wgU&|8DzX2*H%W=;aJMJTCfHZOaL)L=~S=W@2t zVB9(u)<~ZToN}FHntL$_j!mu5pUh9r zoS;8D7sSi{O#WbZdJ%0vY;Mj4(%2HRtEoK8fHc-0Fqk6LBb$-3vo0gcg#+^-d?rJxtS&s|iq9m07|LyDa0J ztA=pgVk&E;#`xh=H97)*fA?%h8r(xFu96Rtk8}!{O^A<)yR>l4e^vHToXQJq%SOn= zVj?ssr0}r%d>k%I|5G@DZn#fUFE|^UZ~J%jQl$JoR7Zp$um&k=XqF$gU!e(j+4+~ zz@3gTdfR{TgqLg1!Z)yRRHY<|48lNf9vg&k9Ud^o?}f7n37i7y|~naC!q0`Dp6u-Rwa5;n?7a9BJGAZ7i~u5MZ1Tc)MCB zRyIhr6ny=e_&jY$h9)Y?Y=3<@HYT*g12;QIGM4jnk>UZMU8rxh+6w!3B)RK9DQ2Hk z)D5By?JHluLw6GWOFcj+WYu_Ds$Kc`j{W~`(?lIi5T;+ma&Nd83~WEq{c^;FjeVH% zP>!5QR#GGG2YUy<9oQ_tx%U0)3yLuHt;jM80J2*gsz;O~s zzABOsPV1zft}5dC&vlskn|APlNVB%D9P{Z`@-^A-7Cv)O7*dx;06N>(0xE1n8Cl+< zxpAl{Mt+$6jUS`G2PaOWx*X=y<>@AAp?#fY&yca6Y>6oNc?6xIDl{a?iRNyxhIAkx z^d)G?0zH)jyMlVxS(pU@hCthrC>GnhD>;=G1Pt@pyW5}E|K7N|Yj`y2p z%_f!N|7yK+Z@%s_SVxNnn`7f3M z1y{i!sP=^1gmlwwdi#akB{VU`1%3W+@pi;;u)!F~KCX*Dg?o{-02Jt?(op1Wk+&-# zqk^sNH&vRZu--v_nc1%Sf+Dba)gg>!D6B$Dh1}$8ZxSTWiq4ZU+^D(&Zthaz1Q2UO zQ%94ja6ioH5d0tw_)~RjdA;*7CGvF)uRou|B-+`FrmwMB&KlQgPD~JX=M?;>D<~@j zB>u*?@(o4u1>hr`*7>!Wc`qMn;?)tteTIL$qNeS(V0u-Nj4sQC?9&?_ae~xRQ+v`M z043YEG$w8p{ca2uk9Rs{0Z=P+2&*g*HVsd)F=A!2mq93RctyVIdO9G+Zf@>{_e6j^tl z+}UOn=TIIlLU(>(1-`%ON+qS=i57PMzJQ{;GE?8Qwk#%oTbe6Pm*_OkYtiNWO#SkPPhl264;NeOI3338BR> zEucY#-)z+b6sXs@Tb`2@I&D{3O#HNS>*6|J&}4TjXcLyrOtfoXMd4+d-_NXeE?;Eg zQ?$w&$r>|ng&UoQ{^-Z6kUHEMtJmlj>`2T;otJL9c*Ux<&S6mNzp758b!4I$;87YC zzfc?8oIUN%;?9CnQ#?+I6bmuv6X)9ZVG%WKo#fXuieJ6xGg@Kwy}Sk11;n2iMmiohJCO_G`fpF{Kw5EM86yrDRI7W-;Io+VhF`dbwek}x*y zY|9%HEu>7up^V}Q*la>|OV1n2kE`!aTH~z`lhG+EW!I0iP>8g{zMKM|BqU_-JX}26 zGJTfp)|~W18UTVAPpu*;qoEea&|H4rspZ5XjDd}$VqVcx^h8|TLddV^Tu7MS$W_HY ze@aUlyS)hfFJZMZ_G#*s3FT?z{a`Q=4w_{E2xxWvFA-^?C@`nCCSfh7T!~`@&J$MapJ4UvAF+?I&*Yu^8vQWd`ELUUjwjy|^ff5M7S=J^X5$^F?}RI$Y%>*Zw$ zMxD0a>7( zLCSceEx0sGJnM3LIX+d1{eic+XFhx;8NU%J!199zv4ua&+U4Is?1c{KhSLfSOw8DQ zY>R&_g+<35bE4lsmq{d2fKiRnf?oJ@-v{WyMF7Zk1P__#*<+d7jxy(K$_eJdtK^-j z8QMXr@$cp6zH=)`i*T}@tQbvZO>+ru zP%ZHlA*uGqNYR-oLf>H$JnHLq`1s1eS3A%(yD*Pu7bnh;pMvkqj8lMV>LF%!j8 z>xIilSxQd(fPWetDpKRkUFd4*eq3$da1b?j2{1*5BFJ&p<2 zxxSk;5Ck2CIUXmEufZwaBhxP4hPAMgrLIQMBNuABbt0Q_$w%u@?HqoiRpXk^IFbRU zNMvoJaHQR(EY3URA6q>AF(VdshVSxpW!O8`Y-YbJ>mb?BnL#;A?Mr@1q56-RT0)Cb z!cQ1r^bW$>w}dzw|3h~T~`R3 zgZ2?+Dq(Yx=@X;3S z6A8ow$yos`-pyOi>~b|0=S~iK-lzOortTXvcw$F&FqU;q`iJp#c==A{JVw zP*biR)lK!-Gz#%OpqoEcNq+a!NN+bb63EPbcZAS(7XQJX*WuoVrXyEJW)peRJfKXu z+tI6K+82Ab=CU(M>GTyAfiunp!qT;5^?0Ej0U~>$8HD+n5nO!M;);+DWs+JhWz~a4 zD%B0gdQ)G}p)ujuEF+sQo6`Sv|6K*83c36XCT#2Gw}MY&YmdidROK&D09`oR_tso@ zyt<}!#mt^yot5}v=7*}BDP&J1J83hlP5#YtOLIAvtO#kouZ5oTr1Rd5*#unqs z4}zZaeY{<>^l{Tr*KBFwo=;BgP2j4GT#o^-58LiR6wEqUm8jtf{TNX;#ltS9+CC^k z_^VlCfA|xQgx5Nd<>i5)&}RE4j>0w}Xcu*A|3#XdDWoiJ6`@kS=NyDt5BC$K(BwkY zXboPz1KpMMl{h*XR0PZW@Gc84`IAl$0N||Jw84)f#?>kB}_J{H`%bnrL>5 zs0j~f3l4X4=ZH3hO`@5ltP--mlIL)OId!lWpTeeW4fNRX)m&5AEM!+4#C7#wWWD4(8P5}#(<80{P#akS1|iSmW1w@O>R27;PkesutFWBOv9_=1o{m}93v1eb*Gm-1&D zwx1#MKO9j59$&sYtnn5r>0A>0gxG&Pt>q zQZ7-z-E1Anb3m`^&DXfDaA08k#eB zWPKaI(6XU!VEA_FQbnOJPJz@)1p>C@eG8xEduMf& zaz=}9LVx6vwIrPZmGQMT1!htMT(UkXUi#Y@5$ASdG)6s zlZabXRAPOoG~_Y|+E3SeieOiN$!(WzDE9@Su^gJ>6Fn6AO@=sx%gmg?S=cjogm#e?6g zBe^!r2*2$&X*x@u2Y4Q@=lQHxrCXhR+a0tL)8Wx#;|15fVKYw9+w!Uic`F|KYI%o1 z-tCae1Bj1m1YqAX4?~zFT#`VZEfsf?N6ezS`xs&sG%8>*=N}W7w$4Pe7{63AXRhx+ z2c`Fs6zP6N$i+sX)$s(lKJ5 zGH&R9u+c>EkDHg>H7yX$#`Bj*awkJ zu3}qO-Aw^eOh{naEuY)qj~RjCB!5s^*i z5eh*Y*@7TQc&DLk03<*GPwQb(ODHS>Z7sY0iOKuDML#?>e;Git9|Y)AGxF&~(NqZ%K1NF}buGC2>iwE#^EO zy7FriKb7W|7LA8{{hYM@fV--^?@^e%8=*HRKb^vh7=ny&*|K*WarRn+--_5`J2KG@ z7%o5s9coTdKUg2hLWubPNP#~L!T15~5;Zn9ddvamgSFVT?3h9GX9H_ayVu8Bj!D{7 zlp;0>gx-K({FLBnAv;VIwpFbILR+cX9KRgvKyj{A^46O}HlJB@2XTf+yps#mUBteG zP@|(~P$~fX0LkMlY)UHb{I9w+vGX^dm&#sULUOl8|6nmf5#4R__nzxOkomNmD(f3S zf;8?*+vjbR*UvtlZ;d0YI0FYywuD#wVPU&en$0#WOA~|QF0tk|)QffmlC7K-%+JYl z+3{qG`;XX`(JS}rh%zx)g?wedrv8~=kT`&GOW@bJ^_*Y6YJFa*{~4KD-|Ace0iQV>l+KtGRv{~+FtTXl6VG=Q`CnjJRQY}NMFBEPd4 zfQ+bPitNfSZv%)IlQY7x6TeL0lH(`gBETjLeQ9#!1RTF^KrxiV!laXUk^_D`)^P1}E!f{u_ z#~_p?PiKATRA{8BpYHph%2Fl=plM3^v2uvswrvR{p{(@%8MK$Py4_Xhv9#7;x6M^t zuJZ`8x@QNt)(iX!QtORwbR~I>BKc=3qIsw~?Y&)%xgA7x87UiF5@)Q8!c2rY=HFI zjn_7e$pX)sk$c|e1sh-ZYq)Ymy zvDPLPT!g@?9Q!Z3LLejt$Um>GTZN+d=x~cz-@>vjBIcBOjW9kVE5&^aK=ox=SjX=~ zpJ)=jZEgr!A_GMF?7ZD8qmY`24tBYyi9qbTqlO~8Eg0TU9iW7jTivMvPR z4Oxauln!D+d`#Z2JdP!z&H84o-_jmMRlfXn69nZmx!AUGt)9+Sv}m#s$NA^mO5XbqaEezmHNO`=3QbJqV}-8ctARh!%cofL&Za=G4oPg( z5Tsa%iyS`JlJ$DztY{Evxz>_|JDylMblO5dP{yMPeG;2^mcw7kYiS_(ql8q!@XCd~ z*)fanFOj(XOn1t*B7W#&eFLOjDaP!s0`=>u%(jKBS4O0F(va`ats+WkkHnEV(fNa3 z2wFh~hE9WhBY}}W0v9x4v3#SxTBNCG#J|AnyLR~EoOzJagr2ODSN(2vY8an-v+`>mE`&Fgl$1K9cGVVa*s5VfRcgAWNCk%s7e!K-R? z_LVP6iy{^tffb<)Oo{p$+|;fs=)?oEWDVoqX4yHghiCmVKk>LRGXAJxEAa^qp{Bov ze^tB(tZ`8hq>$UDP;jZY{9R2>=+E=Z^ECJ<_1r7gjM9O7C@frjFOd#NO_gq&&RQb*p$cuv`fdbC37P_N;-TFub&NTw~qLUc z?qRZkUBG(NrvpZnOq^%FOOm$d1HAI)gZoV9PJmTHC#EL#ZUP7gRytAxxp;*KZG<2O zJQ&l`qD>`OaOwQNZ;F#xYZboSEEnGpc+YX(bjC;uU&% zgWtLiZ+t0qtcJ3N47nENiNL(8Ci#GK42-mn+**sAN6rvvA)L5OB; z302{Q!dGEaB);1C&`+!abf|C88Es(OC;EiX$L)0?Pc$YxQ7q1a2ucK)j3A?>UEeXr z#8=V{`E1;Xz_fkubXuhYXTuQzyU<~xstu44U=zHSRiWFYaztZzq8f1~W77@rR(d@q zCo4?tyG6gy%QQ7g3f4}Ya3hKE$75u<(O(Ux8m-PJy72ydo%uSmSYvBiR;4rH^FYP| zL%%8C!2csu4NSsqAJP<#pqK)7leyqqzLSu zLWmzACzPO+*uGS+^;K*5vlK>pL8&)L-=leni{zm`1ScMQpEw<+a-35Ju^*sJn?1(H z*Tn6m|JSoQl+Pa8n2-ah4E;y-VEpECWcD%XXKzrzC5Q%_f7mfZccB!`e@N(R3F-U+ zpEBG!g-^?v6#KKSC*04m8|%PrMHcdkYh-f)3!&-2h=M>6OY`>_Ah0`2v&#-Gvx^}1 z@sCjllVL$(k9~f=Wl!^GYZ&gx?bg`63qmA~ndAsOEuM<@{P~1#Jw{=>QZXJVa)N;lqrKsrXF%*o&b3N!7i*BX}cz0wBGb40%gS8Xha=9)3Er_3#Td0GZwVzTa zIbIg&rXhB;tCu=CJ(m_>`1h#(g9qlsJ-?WtXP>@ZuQ}192XyU`;9n1_;Bwo6$Vvkl zyXsu^g2$*-PU9t9`hCkcCI<1tjg{UyKsJ4k($^oRR=nFkK)iuM^JN*Mm$mC}z!Yyb z(nY-L?*kg-{dgzkozb$?Bvogd3|##c`iuAGhZp-&gcZ7RU@MsiF!u9v?Lbf2E$}JlpMIpHk|L4T*;T-IjIu_)|kF zeOvwJ6^dwyR|xdbkf8@YU=SkaRb^FyB zAp~pEa8qR210O%ke3a^zhr53U50fRmHt9v>>3>@{G`>E3Ov=*j2b?x%J=z1Yq})5~r*sr`?yQn=H7&vO~EAVTr|W8HN_$zQqKbY<(4` zV&!{_rb=>%vhC=0P+{q6YJVX~=1WA*5*_afvI61|Tu>XuDe3V%u?xCIEW z`jv))%JWyPB4wig>ljJ&|IOy4vAeIM1)(2@GM#dd6NoCL!NeC)`=t^*w*WW0kxA+N z35rrs3g7yaHl!;+wUxq~{Y7kC+CPUoo}y%Td495|UtWbk4Oh+3-IX!eoHNN&L=dJX@gahIK|BxxDE z6A=AOPW|G04HocSlyI3#h9U&Nt#K(5XUim9p{FTw1C6TTbYcIPp-4~{S>d1IX^>Bl zcPQR^y|E^`?AvQV`Y&+OyNnLyn5KgtYTT1cm^8k|@igj!9;PgBonBSj%+(a&7D7fT zGC+|G$;f|{WMZ|2zN2pKIqy^CgT;hYZP5iE2aY4X39HvWQofxOP~#mI|3B}CESoWv zjUZo<>N)~M7+#WXy0bFR%}ZtIyASY=LPHq+`6Ko-a1PZeZK>cOn!pasz!D93rJUob zw;m8jr{Yi7I~K#(#lIm`6wW^EOKDy6>N4R=l4w!Ee1c#Z-1WZ~??}zpz|->sXf0Yb zlo|iYQ)BOVnQ55SrD3)+br-#fPMuJ72OoDC&>Plfw=)mD^vhI&+SH%rY)F-}L1ck2 z;}c>mjNS1YGhsrKT5MUwi@mXbD<2#VNkZ$l{O4uV(>#6xHKiO*?*5%Vhd&vW-KxZv z*AEd`x$F{>Un$3{)JlLMmXr)}e;gzzHIGR0wd=->0-H+XU@FnmuDn{;!RP=!V#uH~ z*uD(cum;&Z+}um+UoW}NKGi}yboSD1D+|cX+bmMZUm=iG<|S}^@$-LB74T*0Kh_#k zr~HXs9KgU(egD8#{^lVLk8{6~JlXOrQ%XM6CH-ZV`58i#YrW-zAL(5}w5S5Q=veqUadXOKUqtk*wplicw zrGfxhmY1yydzj}ikoz(dXYXl43zwjPkz%;B90N|>iS$(v29a<{#xE>(PbBI(0@q$y z?SZfqU`4hpGV-703*v57V|9mMAhqu4FTFqsrm^)wO%JM$HPqWHBAqK;iKL*zLs@}y z#ub7%7%?2Q*?#t%?!%yl?QvuS(6oIM*Z&?CWXH9^9r7iw@!E~ID~mRMMwfZ2UInS^ z+o7$vdX3z8rS{>WHZShPIKpqYfql{R_gS5!m*vJ&u?BZzGLgK{XeZm(2DmIY>qCKO z^tjr)zFFi&CgrT{vQ=o!7C^u35z&M(8dn>Uq`^bP&wkSE+w2qiqo{SNDt49OTpEML zGc7=2_oq;gibF~n!MM+GB$x3eUO2yyu$qkeS7$a4l&Y=(7^fGSB1rX{M7~;iQT%Dt z(?Tw|k z{+%rlsW98d=pU3>q0ozfF+1hqMPxN}j<3l7Hwb8fng|zca#AOw$2i<=;&i3L3GLa1 z5sJ+>cQ8%LG0JvGp1Gn{;DN#`)n`8ZQW9eCyf|O01pLuMC=Fjq4!jmWRqx)yP{`AF z(V*;gBkf~oK|2b#^o_Oc^@(c#uj8+}*B)VLKFQd+6)?mMv44M>H{GBhoitK(;W?#8 zY{AC?MVhnN>xuScp8X^04n&#%<DxHriN4XipB6%0?#*iQ6?Y8{JD? zbOxPQP!=~pD-`YP2mge1aQxQBjrf!{LAB7dnGews<7eVZ84cQ-s?>O{3!!1xUfE2L z?5jvpi+EcrZfMy>kES=#?*@D|EC=3Upe=a$m`p5b{OuW zXWmPYoo%&V+S9229Ye}>y!KRmJHd02FG<(TS}+s<{s=RbX-eg0 zv7!zW+eMn{UsEeN)1&hpVy8NJO=9n~Kfa)|1z$*r-Y5UD7N*H3s_i_)%vI=|SHX$Ogcx!iJ zVv%6`MDGFk)^T9U4Jt~W_ipnjWJ0z{dopWVQx7nnj@Bhs)0k~ES9^~#?c$wdg7}|M zYL^fgVZ zW=xSoi7+6ptkhO!|K3>$edbM`9Epl}=$mqDh+yJ5EN6VcEGZPwgIpry$}f(@O3ln{ zu=_NAHdlBm5Xgvu3$=`zR5kRTc)?sMSBx3+Yzd@5eOeK2-hKs|C7{9#77q(og&(RHYhClva>b?LOtpM&L?O}HI`h$Y=Ov<_i??Q>dwG|Hm;NN&?1)V*<%>SE(ak$`>dx~)E6zMsLH*Dv z>kKD5zUkwp^Vs+l7UcQh&8t%V4 zP61q!GS7akmAIN743>A^u-TCBjT(FUmJD~yUe_TT71$k~V_=?W#`u^+u>5=R;`=A0 z{>`q^d>;v(UNIQY+_WkmZr^)s8r=-BOtAWJn+l0&F1~||!SD-y4!@tDs8~Q$G`??y zm;KJ44jfrFj8R4()GpHEDs)k=#Mln2YB;Xqk$`Oy`eR;rw?@V2<*i5C&oX1H?2Rk`zGe1B3z=v&?lWARN(NL9@9sIh}L?{WDT1FR+OLaTaJm znn%O-_<3`UD~wEiQ9l?GL=Df9EwC2B1Q%k;Q3W_QkKMZ@8QnpCrX{0KyMW@zYn7+LE|jt5>7)8+cCPgb|<_jg5zYGAJXXy^3U4K|A2 zxjMopbLwSpXEvi9i`tW+kQ50EfM1oz&4H*!%`_b7Yc3|My5X*+Z-?nOoO|O%%h@jB z&Hkwk9o~UJO1(UE=x~cib^;vEL#DXdEeH&|6C>W0yflUB`hMKJ>a1VXk!BL8)PBQ1 zYz1ar=Ei!l*ytLoF}7?ocC z!3}|&9*{;3MjWQ)+Z3kNgm=k((MtBq_M>}#U~YGYvv_-`vsD3mn*XqgDpTCHq0<=f zsJep7<<_@>-bJvV<}nLgNb+1a@doiSoE!=A>kp9F7qZxW3kxS3%St^V7o8g&nOpa2JZ%!!EjO zDv)3h)*3hx1Z?i2*tbP1+d&Wy1e;~~dt6tDHm6Bd_Th`y{eWcRG`~@?f-FIm*{I+X zX@FMG7pwbB>_7pvo*Kii@~nWteA_Hb!#tJA2oO$ zrzPt7nF=&`h_F@8cOravod5TlJ%xZ zTul_~M0tp;pJ?p-s@MU9<-mWinsTY?SC62gCuk?-?MYAl9o`;g2>%Tpl@)r7j9D5f z43}Y^LH3qAWhE{ak6m(M`|675?aUkNKiG#FX6LDb;vE&1QG%R(!FYPdE?E1E{rMU{MB(FnEVak zLac*^ewG$W8xOtofIw1IiM;EDuo$a~=&0}V)rzuWD7^YfFpn{4-%ekB8;JPh2D4P7 zL-vcqwOs4csc_yG>-EVZy4|$@Q17&-EZE@w-$&@Ojx@bt4qzpZx4YcjShqcgwU* z#l71~GJannh9}j24^7p-g~xobo3YLggxz{q=>tP6+d^a~YO@#-8)>xJxv-~aTCNa} zcUdrIroy_mU7_E0MH#?P-Z48R911L-9|3o!E%T!3UH1gs2!P5KhKxwQ* z2LM`$=&;ixb~uB}u(j;a3vVk3X@NGSby#Nxc-rN!cUEI!DXCG~5s>N^=B0?)0D=}t zcZRGGhC-1>=p;AWc=az1r z{^5?GlilytCu2o?3gt>mT5q$n4;0fd+ov9dvdf=A0#-gJe zFjj^*GiEjrBM|nU<`n%VYOg-g*#?CP4jnq9hC>-?-2}-DyA?B=c-8$mk$iy^)CG-k zD0NNDwHSQftV%GN6wzUU{#2Z6f=OdJ5!P=JKkr}JE%4kDHF^D=(Ihm1-v?I419y$l zeZakT6L38RfiB2RI-;PsD z`^NuFYKEL*LwA=h;nwNDZk$44VM=H5V!_?CC+inr6G+Jl0^n4BSbhrl)V%8QZ4QW( z|74yiVyOjdBqM&UClv;)EQi}R1q~%e3$<0LrD#sHgUA{8FDPtt}jsb7qUTQCoR}`1mY#GOv8Cf6+I^Uk8x2I0`8SO zlWqSQ@!5K0R<`~|fP3=@GpON&)NH&kPHMT%@;Yr)418JC4q;Q;x4s>APuTRoDb8Hi zd)w+T5j6SkYm691Oa-_j59vbf-Liu3MX>2&YaY~n{D0phftt>74QStx+H1Na>KF4d zPIxHg`OWyWGR#Mf3+0@eE~uH=k1DKh-@yJyN1TOXupBQ5i?0YB!xn zzS(`TLnN08qhAP@$w!*bHBs*ua4uD2CMn8SFq~6KnxU~2B8b73eprwPXRh8{VPn6# z0nRVu8L*v%d1=5`FPxRU=w!P#?UQXIr8NUNwu5(Cb)kg!#`jet3>U+OV^i3t{wHmm zB7_6?LgB-q2N`a(yf)T={VE8aU2wl`^o?kXb6; z|1@RL(8DW$@SuEjJ3y5$4imV|9$q1d5sOhT6eOhsdvZ-Qf?e*!Iz;!%wL?@C8)~u<>3qLziB*sRdEI!t_qGGH}{q z+UI5c8m8B^%yrBVIyhX7h)tjk)9nVuiR8PXjX9N zI|$?*(}%MhGC)-E@Zn|m+^{^n&f}AMY(2{N znB1`Sj!9S>Ys;4rLVK0V1vh?46*6-?=kA4Tv_-QW)7dP9p^R=bKR%x2gpi+KBh^** z-ZuYJPqEW-ic>l^qo3$`igtQUUaS0q{R?%UTl)A*N$P7~>VWm+(#N{=2bJ)zKZ>yR=2WUG%q%s&<^p0r_A+E$^=4<~iYV&WH zT(u+U`+8SWNjqeXPSBUKcaOlE$A$H7mhqwfiH}_yI>3gFhY_sG(u~Rk+1ZxRi+}a$ zZxr54g~y)}?EN>ATC6w-z6I`#)$pbv{z=3n$l5W^JvaZ_{9-_L8(DyEvuV$5*C!$T zaonlqs&#*k?s@*Eq|#Hx`R-|?R4+i^;xEI9;G!qDKT=OnL)Ws_xS_#%Q8Lp_Hy7$& z(FF^L8dnjh!nTWB_ZL^V`D9pq zRtX+GX@av3IUs6?8e*O3)fPbu`%8)K-T%w&mt%$du|u)n0#gazQ2!Vg z@;ew>40g;{I657zQ;@$Xz5|}>rhO2UXw{g>r7pWuq6t3`6>0C+a@P6=zn^lv?hV|i z@VnssG`pnFI;jfG;>Rakm0!*DgfcOO8c(K?I=U}bmHoM@ap4mq`9Q3WLYX3GF6&Al zu*q;=o41zRy3AGf>Gd^sp_paaXbWW)y_(fPc;vN2zM>KUT$MMhj*Pj8unYveYwqX3 zerNiUy9U|}u;;DSeh-vN_|rRlP6#f#ykXDIW|2bLtBZ% zNoP7P7tJz=nhE$T3RR*M71t|~JmzhUb-7#~;zAStN@?1p6P94jq{lT(m7?OPMP78V;v5l+$Z7>oCO}oA;e1YfH3Pk$YTs%)otVc$2{*Cm8MTYH$mK_FD{!n4JYolYr3;A@hAB~d6H39}Z1XBA=DT!KX5;<>f-r10ow4B{z8T?8 z_IGJWyB%3{p36T7=L>un$?wGIx*Q&Ojg?+u&`ogbr4TsrNz7Rj1{K%s zuSI;Bp7>zG>BIRo;fCai4xwP2BBMp^md<=JrM^`?rYiVU;C~vbAjSKL;!j@Gkf%#D!1|aVx=wu;?uU{8^{sutO0)REyKQ2e<;jE<;^>8u!r8jcOY2}<& zslsX3)W%F#dRm6PU>f~Lf;=Y1tztCSB>;^ldYMq1D47DQLBAntT^>)7jN$YygSDG8 ze914$g8j;EF23E%bNqydfzVUCpS%#twWasob-5LrT2ZG${$%W85&0~^n0Y6fR@r@; zuV5;q8ZWP0?vbhKpbejS`OH&FFiZF#T)cC6m;FPoLiVB?jYdVNvM=1_P9_Fp(ZQQz zlIpU0bN6RKpt1Ocr2p+}frHGeZncguqOe9fnn$RRBcAl>=_^#P!fE+E-$N;|CqMP= zC$2&E+0n4WBv>TL8=|xKUmHE)L4|uI%EA|aP->ic;_vq^_C3pX)?22Cvg=;FLcT`N zc)#tZyBe29mgkMm2f%O8Q*OVctw5pkxWvpA8RTh1ontu_fSBanzxjV$La_+c0=4Di z=3*1~Bz_h&afgeY8*F8pyCP=tLmAhL8Gx~D>hw>GN0X0vQHA&qb-TYKw@X~5Ak1k0 zeZ0riaO5wcvYIDyOzlCuP;tYa+#j?pas>1l+on>`ytspmVG*LKgt!a70F2PGyqKc7 zKjL_gDB_nNNy{f?zfwH8NgwjMqhfA)cs7$-XOAsV$QJfP*{IGR_3`DPPnmEhCgj8k zv|{?pd-YqU)mBNdyy?~_>}YT-ZHy!o2Rnbstl`jPhe z@%mUkK~$jPeI|(ZLWL&>Ch!p(VCia@?W4aKY0~UUhVcZ0E=kM6ph>yW`<&wjo_8JM z^Is~FgBb3%dTI;(2yF_OqNLyV6+L`z!r0swV-G^$)#}Ti)m>$Me3$O>;EXD+?-!$f z5VKY=jAac-j1XydKW7g5tdeMdFzq3LW)iE7=dq$?R&s-Y^nW2r`CU((KRC`!#c|q* z6jpvAf^^HIxE}+4l66!xQ^Y(3)5<@QHPnH**RNqN9~7?a;IRMySM*OM-P7(@*40dH zC&(UM-+Lc5dR6ug6?ZYsa7JQ_KA0^h@f^dk{e@8YJ`ya$GL0A+4+auMMBLU}FgHtW zV`g<^E2$@9GxQl`>b)y8$tWJk&`#J)Q&N9OM|DdbRfw|+H8-p7aW*7R`X~Y^6-E^Q z7F?Ex(0*_(+S{sheMz|0!`F$%b zE{`DdlGUopRj~(p5HcHd(^eb0n^qrA!ZDN>g$x!F_9B_nZMbd%YdXH|U+ZEsCpo&q z=>I5Xi6pEr%$`x`n^kyGr;~askb+-+Ws}4Od3=*|FMk5r4 ze2WuNbYh9FAY6me{h1cISbb0JICytcD$8c|rNTdQ8@|`p!0ml2`{J(k2sRE!4|e?# zVaOl@M6KIBLfzI;(;iF)F>_YC8u=)Iz05F`izp>+o=sU1OHq^d=TS^7K|UXvA2tt& zGKo=JmJ~1(zO7b2`*o$9W0rmuLqv=_f|u^?tRx9x{!{#S3h&1jgad6JMtS@%-XBRYFJtN zu4J!YxW8K6e}?vY{!kst*r5}3p<6r9E;@HR6hxSnPgC#Eh_?uJ<0ip$*nKw0hfn$* zXuScyBs8~oCRFO(ez$UOJIhOx*@6kD$D7VEN^F}gTaXyE5LhC$_$x$fB&je{RAW;~ z7Ip;`sC3l8z6FUU{<|ebh#{2kTOcU_zYv-R8HrY6)e@0aeT7XjfR5E*3VZZ2MlqL! zQ|II#{s9hVTbd$Ls2yhOHQtz;e3QF1(imG9Xul7C!aHsGAmC135dPpYsQYpYye$Yp z%yDVXBSKt^X+nvmqO>NLHsuqbV9a z4c$3YrZT$}jZnLbYf9cuMj{M%Y9?E>s-#E$Njd`hfYkD`mA$QX>99$zb(h}i|3{F0 z`yldsYZjr=2Jso|J{c#43P(f0rNm+*T6R|JxO8mX&kT$`O_G>`83+Vo%;}Ps=4vcp z*G0yZUTDNnGFM${zb1k%b^c{MqI^78jYhB^@)HY@TRSAiC`do6ApC=5lJ>df2D)|B zahVpKwXz_aKsVeh^Nsf$X)CL^J;2NwL!!kKO{q{=ts^mNCG{sK&Q~qT~wRgR`kL0`pAi zO<(ScRPxyLNH89ZT;|iKg2Y9qrLlI=)`ZmtE_jP?5dkjc&&iu#%cQt?-5rM7IX7@H8yw{7p*4|~)SD5r-#$IMfiLJrn#VcTe$c6GJwbr=%> z0zm!0ZUX7fSXj=7^egLVlcRDMfEwX-IJrzv0KjL4YUzSD|N= zfnOM7V?GwZVGU->8UsXIi+24CCpS~_U8cedktIRiv|szt_j!k*w1J|?5;@#nbZ&YQ;EXYhVLOV&X*?x+DAlJguUs=BTvcVKBZd1z0*)Qw!zgKRyRGtpi zkv!DV-K~;;OsuZ9&oxJ3>0eGSlUCKk^!Sx*(2x zo_*9xW!9Ndchs6J+BjC|vf2>gj|bA7@d*@Y@j!{i=L8s~%Qsf0!j7m#mrvmIOg zuCOnm9G&ijzTnTlWwrfVNe=l@^-fTzc!D(1ib#+SvEhEtg>j z!SX@*IE*>($6AAis~C4Av9_1VepHn6`O1I42{x0g?SWdWspi$&ljeoUdm9>_C(;3C!i?*$d)$H%4rixpwOha3UiGq!+tXsf)9BLJG%2$KKB?0dorYznBq7<_ z<+y@?nkROJfkgnz>7wUn8IT_t?3|Ybir3l0md=!LO>%tdktVZlR9c7DbD!5$PF-iM z-0!kXxCczy`rpZg-qdkh+b^CA@F{_m!B32!qb*poIG%zs%XT`70)4bi|F-Y*+vv%l;0)l zIKk~HV2kZ2t$5SwLq9M-B=?-u$k!^9O0eX>j4~G$Y)P%vBn|}mNKdHlqJg&ynQhxo ztCyfhm)nfu`Hrq!o`7{0jT1#YK&fi8>TD`?4ivg5dfNtBIP+6M zz&zJIWL1@HU*=KjeN>fzIFldYc*7-|FQ|OzLCgZsNyQa{GP;m@-MpxLEsm?S9ub{1 zaEbWFRmN;Wi^!OdGoU1rxaZ?g0O~(32@rchLA1~j?_C>UAVbK-MnFZ09~+` zE99bBS(xDUA-n`Q0{&|8O-OS8@*baq$OI9V$x#~`H%94HThyr?#9I=-j%uddMT47l zC-crGAqi7o(1DwD zq(_9v1JJ1=iz-JOw+#{m9+*x&6sSXFI=i42>SY{(VYkN$zJ|BaJj%CiH!)bU@xzoS zlK>L_Q(E|`Ulz8JBP&2USNRLN({|YnS<@CZGrF&)x!hwaxt;=5dkmTmDI&txL+fmy zZdeY&17-2pQ)-`@%DaIi^lq`?OiSs3-x!+t>1`Bz*xWqsam{Ftx(Maj`skUInplQujo#LEWpbNo4+|D%2~5@v#zzv(wBj4Y@hDi{x- zvJk(bE*d67zveI1p84Wz_+)8c&zev^n=AS7?hrcz{K9}9B!bEDIdL<_%e)Sko0ug( zo!pTh6?UNE^O)_x26dgz2z>%bzt4V~e>s^}RW%_a!h(KkbYf6&n@6EfeT;t^hAUWgT{RS`NI*g^kD$20J)JyE8|YSaF<4_{WcY}d)iH*`T7cX>?T8kW$`>-FAP z_0bV21@oogL>wi!TWRBiHzIFWjqU%whLXFejlr)NGt`lq!pbV(3>slg{$rPwir`9E zSs;%r*S>PJAUvJ^GwZ~Opt0mk(KKN22Arn9c?uWUKWk)YWQLb7Ggfn}i`K7QRcx+$ z4`uhUbzi>kHdWu=`$jqQm*B_1Llf51=F7fnG?ZhlZDXch9unv}Ck##B^tbLUSiF4R zpA^pH)+Or>fW~hz?gvtEQWqq!e(D||n&56$!2u+XC8obtBqtGgh+asxPa3Kkr<26* zjhK_k+oRZFSi**NUyo|aT49e0Xaz*g)>7BR zw&9fbo(L;bxW;aw=cF)71#*oK0qCk?mA6}5zM6;pAMXegUPzdBg2-HOr>psZ+^f3c zr}e58dHO_dvM|#}@V3Z8Gm`$EDTRfv0dw(h8iB$qXi;EE3hrMU==mP6UVv<8QiMNm zdin1TK=WR`(xpM5)i4!yT_Brd=+miXP`4+bv~;OM`~SeB2pU6QvqS{FcNTe2rHnN* z-lgfi2x&dP$W_mgSV_&)5PvKsLo&?lF%dsW*B7Y*o7y#HvqP=`?^9^a*_W4MW}ly6 zuKm8nmCwx^%uR|DZQ;7W+h?0FFC00UBR7!8qQ#ubboHd+&ZIr{4s#6zuu1!VPE(-)%z%t-2q6WIE%~iOF{#5m`@5F4~Ygi zG%mnX+4r4g(l2R#nJ<7%ODf4^W;l4GbvPXU|9SU#Sb|hK84ah4S~eCWej^dZX_t=)bc>zJn@)qX6@(!DH&L&B4EHX~!2?Z&rzuHdnN; zF;J6k(Nk8U1mHT)3RjJv`ocX|v|LGvq2s$NgQt|?g*@tgqClS+4vKhK+Ra}46)giK zUXQ1-*(*FX@MrcZBS++j`slen;S8ucBjx^asg3$%YKesnRn~~n6VB!C=r>+ulG()bXFZ>E~K~LEv`2MicZ8;+)D(nYcGs=Z|Pqv82f zZUDX&J^B5h__VyK-q@n{oZ=eIEHW37if+5ZBO^Ab9he{>>0ID{9BuUra0yh;HOk&q zUxi>1rfRqnU#$^(+u!JuVF)97V_+uDWShbtzY~;xpC#@!9^UXKFmB?xsMQ=D*fZOT z69D`OYL0SwRFLRuDSpT8_ucCEPDpqhZdmuZ7R?gWD(SYO$9q)d$^m$60K-PesOye6 zD|a@fIT5M~E?kDEJ2d@vCNujZK2ch_bAY~L!h zB9&xabBVHOk;pfC02j3ge|l}5fV&@fJ3*hUPqB54jKFBwRwv+8n&hoS4I91cyd$fZ zn&OZA^dfK#9WIFBd-K3Jm<)VsXNoUwme=Q#isv)d;vd|LZPBQ9E3m{-aqN)-DHx7_ zYGkx%0)`znQ`Ex1v{LSoaOASa{onSm50?`>R=BJ=hIg$Jrp*N_DriUDop)Ztb`9(C z!0UgnA_%?y<$wVg+0u7w!&K}M#~fe-4&8QCgm`rSvD|-k4OIex(rnezSB4Gvh#+qY zj31a8K**hj{pJQ2`x0|@Qr(_tSDLsy&p9!?Y17ms8AH=g2dn=h{HL@qjw&s?w06L! zt-C;1-)&zzmqM(@f=Xe4@4<@;kM{haY_TEV%n32Vv#R&>3CD^eq(3gJEG z(sdgEO8Y@9)fig>3QB*xCaN)k0U`5lnn4SpI&GM%ZL+rHff9%vuO;7}lTu{sH~ zyp=sV!>sS!UjE0NBk+<0iRd`3BM9f_EB>pBOJl77MU@uVcZF9-Z>fua7WgdUER>_^ z^;~V$0b}5*u@&x7@a!yYHdrr5v#vc^3yt8ZP3DySpjtY!Rp>2rkuEv>OK7K^9B5N% zPB;Zt2U5*BbY)*$NB2c_7}g=E~DTA6bXh+uC9CGw8Mw85M!+aYfQLv!_@z^HuE?Tl*QZ`DQcl_n^ zFCe=q-c-2SY`mfsH@OlN4HX5Vs^wr8?+Z6)3K0*B!go3H3b;=9#=cRHi0?6B_)5F7 zmZ8#G&GfC=ejfegbWyuJTD`iope=Ww)jUp=Qj!J-gA`;o3JfX*mgj&P=F?tY3`#X* zu($iAHvW!fMs_DRBL>)#){ z4kMQhQB69e5EB%X{RWHk-j`WX85u$AJkTENP<0>WDTsu${}c@VBF3iv@#aW($Sa!! zXg;ZY4Vz7KQ9{yEf=-&_@8h|HrT=R+G2PENv;!s|*~83)AFMUgX5bCa{uB)H%TLy# zC$N@_5#dEULJW|96xL*4bmY zUY}v>z6)--J&)E8leTDPCs6^cB~c zhOPuQ#UGc{%$my@$s_o0Da37yo7F6_XR`YXcr5wpf?bcK+j{~&Ey`_D((PJhk=zR) zf%m%e$|+QLPzL!fYvH5wuqgVQ(A-zD{s0S7Ozk{B4%YhR;%amG1i+rOHiQLx zpkYbe_CG=Bt9#MW55s1`7W@=2{6dF!0@x8xj>d2l9d#Ex>ujkk@cGk<4r;n34x~1; zJt3bJf!LCvyKbl|G~bUib4npqi!G{aI-?-@NEz(2Its>YAdYtAA`c6LUSLN_^ZOeT zmsdeS!9S)RdBWi4`f0h(i7!*(IZ%6cniftBmtW)E9hqrP&M~6)w+uf|jM~}qNs7}$ z=yK#ilin0b^mAkAb>XCb3H_*pyVU9WnZQt?QHM8E7B>uBw+q{Wr0mdL7NkNkEQV0a z6(R+Y{7BZ8i)vXNpF1kjy84(gQ-N^VqiOTXb(Oh1tK>sEmHX$5t}$il{P5B8%~+Rl z3iob$P(MpFCAQCPo4_ghE`MqQ!38RvOxQ$C5lB7XEGpHIL_C;v7 zS-ilZl#HBApTMHVhJyC~HN&1E{zb-D@IVQ0!+8ff3eI-o&7x-qW~OZ%KdF&f+S5}c zDd*n<|Aqo0i!%?jk?aOPnwL!Zw@a(}0Z7FG>4goH|M@vEBWOc{(R=)&53I5qS?=I3 zj-C=OVlDI*o3i|v(dQQ+s(8uWo2$@q)CQcY(zAd7^RJAjuANg43JJh>6UYHOFZ@Y-?V^% z1K(HsHO!_qk1AcY2!@;6%U7W^q1D+{)#2w;k(l0rOm%fUvnBXn37SzP2$oC?BP8s2 zI>TS__F^=LDu{c*3^?3WMBK4Pq_J^7DIwfbl1z|6B&m5UKeXa@aIy^d%+v#}(QNq8 z9BGoBF+WltzUjyExVbG@gtQmik9y6I@BHdA5U09`dWaKc1(Jf=Iiy3ZcOVHSVPvq{ z^45fRn#MQ3d#%H(G`Px74C#lMkbE|xwbyUismTh7soWF4(2}~lgYVHa;DWD(iSREr z197gn^OAU2b2ZFmt0eXE?D*(#;!Fu_OrInB6}AXFD3KBX&5Y0JC4|lB?(SpXwLAE) zsP%Sdk4;eKZmtLqEvIkfTJ{WCpo(ykx1(8`)srB^4wuai{xa^u+_A127pA{0XmG(< zNN>D+lh5JnK_{Pck~b+IvJK91U6Zx2%uu~JsMwXPe)MMa%icmR*j=vOi=*t+~T{NZnh|AC8*mfZq;cj&eazYncUFv{Ft8`{D23<0S1zWS8lv5Ji92kRM-Vi23xM z|C(yommtO4eUMYmNnyd#u$8E6Ti=Fr^&gpE#$tG*IGcI@<=YDoQ?)vcMG&qA1G5uy zhGxO1-Xv_=0=UF2Z_GIvu4}$zL;;Jf8%{F=i;3SIw3z;NeF=IN(?& zkfnDCkB&qVU;A4NsB@+!glnvb!Z5ye^-Fl1!L~62$V?HzM<>EGJe3&#rpHJ$qjcn( zcfhd9rHf;2G63K6ezVl$K5a8V?krj^9*1|BZc)OLcWhx;89Xan5Cg3D{*)T{LS@|&-Yc>G*zQwzzEZ#q>089sEK#xkh zc2cJ?%1+xV9I|n=#q)tQD!=!;^AQxyR3^(b-Xs^paa9SZ2^wnzV5;);Sc*+ZMr8$0 z;)u1LH-d0;U>&u#JrV3Z5`VAzmWNRf@PvWIwfQ3PRxH|Lc|-B~G-`Gfb*+8-3sEN$ z8KcWqsYSdR0Luy>%dU1Lho!e(|No!5)_H@aKs49jhMg6x$adzCr^Q)A*!d8!*Y>|W zb`6%7iLP2qMq#J+W2{N%ML{2dLjMDB;5anXFBW1r4Wt)izf^C~uQesBx zjyed+Jj>V!VQ;ktvtd20A?wGZ%8uQy=ZJWGK;5*@H+jGP_>)`{#g3EBO8@iz1f5P! z+mg6#BkaU^R@2pyE3);&rc|$}vVzukr2U812P`y` zu;6$tWk9s_j}a#{@k1EynS;q5W1uesV)$A&`gc`pzTAm5@rmEO^aL>$;FGMVZ#Bq~ z4BUUqueG@^>C>66q9y<<++USi_=wA<-50S~2sETV+IUCayJYvhJb}k{r7eh(I1W%G zeB|sNU4q~+(2pQTLZ`G@?Coai>f{!JW1_tokFCI|-N_t7B=A&4m8Pmho>(P{WKBB? zer>PQ3P-OGMGbT*QXRB4^U(X2hAeUs2CD+R=mD@1WKGOAZ4tQR!f=WlVLg*)>I z_!7SVC#e4cbBpo`E<|H{BDPrhYt{)ty~KOMAVEC8DXLZ5c-L^wf^N{XLCcI5-G;g` z3CAh+$8DgM-um`-x1qKc$An1oRT~0%=n@_zHuN~W*s)G%t2(a6*|1f)<1e835Cs)C z8LY#ul-h;Nwn+pGy&8bxOem2b!dPPP1-^PeHNJgNVK~x7=3A!u9Re}{*w17kTSKjr@}Zp2q9755wPDhPglR z_NprpIy?B#k=&4^v3s-Bw!puqkug_>nT@4H4l2RvJ3kLSB;lX@gBSz+daVTYE7r+M zPm<)b#a*N88Rs??p#>fz{R4X0igF~Fv;%1}9HH--$iB5Pxk*VUBty(+iau8FP0s0; zDsdi};A)n~DMQ0WJQx#c{us2`vdymzi`}hu4{p3y;~Z!j%Y&$3qnB_r)~Pup>lgFk zr&EjTRjEi7;<>fsesm64p?!A3zrk>Mv=M=an46$#@Ho!ie~5mEi{aIF3T4z>wi9q000Mr{uW5B*IXC9u)>)O!xoVZcdd3%c(lJ-)YuK;AQVH9Vp3z_TX!_MF? zsP*A8kT=gMu|c@I%9f?3@(MmGkv@6+GI1{mAMmymV|D%{PFcgWZIx`Nnu&3P_anO9 zk_$@`^E3}b+p-6OMQOWDHgI2HxCL2X*_kJ^irtLj2N$5 zz@-$o7X~Hb?Lo-3LjHAG3i%T^kM3SNqKmm8l`>by?x;6Y+zptqXsMToeZ@trFXhxzmUcw^Vm zO16kE{_ugRasb7t_OQKN+sj}3OzC;haQ_yvWkHgIwHfvrB%-hp2qDOYRp)~KT-C0@ za=@tF*l@otIJBgH)Jrq~UH%-qzq|j?%5$BowAO1lZ1fp}S$3s_DoIRVuSi70S4zxD-aqG76D#MxVrz!fbI^xoI( zJp&K5JqyP`V?=zkV=N$ z`jz;?pj&2ZcN5YZf8#_4>C^qui$mhd<^~&? z5i%~*Pp-Mu(EDV#K;QI4>8d%N*l*6`n+)HRDr3#W=pZj8^EfwomHr6XTf1f+=M!uh zG?C@CEE<9C1k+nu5h){`30urmYO*=6n*Ti5&5mGh?33;_1uqfmD4uTEg_K?m72us$ zlaSqRkII@H7V)_9fm{HplWH(rD{E4pRH>nn=Up2-pue#8Eha*;kPw}N_!w{o&aOXV zwg7bo1P-LBis$?SV}u6eF3afvseO@Bh|S{3Yj@PsUGPrUWyHGNqqv_8UU2MWIF?p( zc+}LsXA#Rj^p2BH`ijr1{#R?HugFZqo=0I$Fy9GIeNUSpe>!&9mF%j==kqwrt@*4B zeqrE}U^F!^Olj->X9m@pH0nGy=KgRH_EI&Oyl}p&bo%iRWb!o2<9DYEM;3f|P4zeL zJV%<3h|n}CG?Ae4kqr(sf~^u)A+z&Me(Ixl%qVAf6}x9j(|4)QE$Mzx;JpW9`PH}{ z#~2K%n_%i5Z4*fX8{AZ`P*ARHwb};!)4sw#N{v`GK4K$XB`1dYKy+xONV$a zN8z&7hg9{kO|xyNY&$JWEcR!R%9ZaqgDz1ek25#t-b_sVCOGcq`%PiTLQzX(x%MR+ zuo#(r_9xb;nWP~l2WFn2iek2R9_qTip0`)Ib;%MMFx(cb4&XGhUFkFfVs}&+&rqk< zoOoX;u^nUN6BkoU=c=f&lx@xrkK#5?cJAoF`bX4It!85qAD1+?=vW87RsASZYBFZ7m9QK zD5U)F#?K(P?qy0$Q+b|+@vgeNI$n8<2=f@r+p{Y;G@h)9-iswBX zJRWak9Z-2MA30%HdsFRj6#li!m(attKFz#c3_pTGKkqAtpV>2os=xaJNt@6g%6_0J zY*%jfnd(ScdRQlAF_CNW+{_${WauJ;@RMtJ?;lmS<(7LU%53#S8~Z1fU|UbD({_jA zGqSqsn>W>WHS~V~nNRA^o$B;_Ml;^e83PiRsNlu+2uI!40-NT71#?yF9*t*~hjNgK z30WQE5*SeUR#nH zEfi5Uuz87UVu*`|s+GX2bSb5Zi%ptjwZbHr-t=2`7p^>7CUiSpwdBVXjd-oR8t8e> zeIAMrPrjd}it2HqIxH<0)xL$|%}(Yy930m8I#s`FztJGzHwsPw?nUN4->?r>C56I@ z2z5KagLts&jweAK{e17dj|W`Cjf)K8KfvR)Dlf%VK9mxkcRuM>P7)Pl7WU_S!nxV2 z=SQyy4MAVUtZass7$o}DASmipyAMY2lVWp#&J?U1TgQrK(x=meydm4`#;&D$5hY;# zP&tK@81gRwC^lCEX^zY31m7d09KXx%)ikWckw?|G5&s{;NYq_9jZkf)c=`kthd#xa z-$HZb;6t>7_${Qta7xmhwT*gnDVYnN+Dc=nn2d}rnl}5<1BiERL2^#o@daro&K<%M zv0H7NevFhtl3=XcAZ}APvwaS*?Pei*YkqP@9{|WI=4p2)#Y6CKtbjsyo5e>V2&p z1+Wn_2$*X#vujVya26f5=8AvB^F%ZXx!j)S-dNRaw*ZojbVBTj(zs?7;j z6x-nxSpZk?z8`eBQ0gUx_rjn7Y*R>@-o-iN4riT7ks$heDCc~3TOln{hW!s^9~D?I zVxxp2=CRF)1Ao4ZJeA7(jxT*sT=>UlRXaqCo?X?uzC-Q~`~h0mL{(C>?)hc*B#JBp z3)%9I?|CR)c4j00rwNj-MXofE-&epS``z756K2OFFDBd52FsRJKZke*LmJF&4zHMd z9{7Q;^sLh>-IC>Ax8w{k1A+f?7)pO5H_qT6G7Cjt;%H1NRd(ZyZpbmZh=4BoNSvAC zCA>hJ1Q-`MtXA(;0qIHkuA!Io2uO?mjj(hz2)DtSwQOb5I5(R{I*f}j@^NW2cORrp zX12m!a9aUO>$a8;(AL{mmBw;c0o)gWm_xHQCNiGOYi{aJ`LPgD{UQU=r$a1-l@h}F zutkN$GjStkSI43&ailq|q}DkM2tFjXe)I(Oiw8?^wB)tDsh4k@xN|+n^LNp=?eNv8seG1rPXa*3 zvt9}2I-kA@_v>H}7JRfv{|4pquiGKqCp*3oa8RSLD#vq|29JR^1 zUR|xnnQ}lDEvx3Uxz||GjY=dRu3P zKf6xd>CkfaD(UJCv18z{LsZ6k#UFJYL^{YHJ|zEp9QWi4!1k(W5>2!+S6ibONdxEQ zNT(SDP#}M)O42>DdeT<5$LN4w0&T>)J{NDb+~iw}EkfSqmw7V%=0#!G4wDTPt+(Wt zccDKVx2A5KnF@MVzv>gB@R@1fb`d>ia~V>Ld6i9z42_rlP`biQN4;ON-M`j9p71oeV>3u{g4tWg-|dmmtFaia zXb~6$dgbvq8mhsX(N z#}Xsd8{s1@ozxk~!YoKeGkGBILxnXG3WI$~@h-hIgX&1r#tvytzf6d*Y{HuVUF)$u zQ_^DejcK8`K>?Gedp$8aN596syLGn<>qB2)3o6%MZg{5Wk4ugLcnF_TAs#_M1#x@?+Mb}j`X(*t1zWy8-nlK zK01BAJWVAtC(h=Jstb+`P>E5a+F?8$2m6u=WT$g9MTml0s}V^cHiH2H;oA1C3PS*` zmNUM@AFiFBW&ZcokB?$4!*0OL(bzbe4f@F$)5u|YwM_!NO17IXWy0_+_)vlAzJRMW4b=I)w<+FlXO zhbbT|I`*2bL&B0&ZAe&m*%tt_0-cL*KfK`OJ@SM?KosG2W1?_+-T|4X{~3ptYCCa8 zrt>XwM5))j5*|V_d0iiN=sRAZ+GUQQM;YlK3?TG+xaamL@yZUW!5s!nmN+4XuFqeq zUE``@_u+Y=L**2@J}&~5E8ALKiikf4R;{BrU#=v0L*x9iQQkVHmI zh>5UN{=f4Jbj1Z-KB)@p^XBWn_zN@h+b%spGoM4b?|eF8+(XUofXro0e3DHSOtWW6 z=T3>ep)Vc8NGtYQ&6x%VtzmA%`Chv7Ul5Rz5%;H9$v>!A146Bsy-ZRA|7X4g4%R=+ z7lwr-r_|-}($xht^zGEEE82oHE>2Be5~$WKI?p}D*LL?w1z(o7m_ry$X0s!E?(!Rw za?Y+Vdhg$JxjMQ#5lmAzY@XVYSyvT)V?bB8Xc-dzyY{WIYE=dj1D2w`zTwR7;{k_Y z>~7`3yU99r=X@y87+aGxxw@+!sG34Dwgv_Jo(CGYP;JS%QZDeRVY2Xnj;D8-q1A^n zizo?{)0{1aMImp!?dz8IoKt_f>G^m6BU_nU!(cXs^9VkJAfALxuefx??z zDX7aaS}uamOsQZ+aRWh;?A1Z^c2OWmD8{Ls93}` z5WfQz&(SQ4VZ+VX00Lsq$}*|Pe51UdBf7LlPxWemMT7Rx<|%{SvKwe(`bB`DQ*8!? zb7D+4(!`)5_ppmjz<|l`5bm5Zd(ai*olFN;-?!<-sua_f1@`3DfHINZI7U2{@bI)s zjy#z~=$kS}ZIQs+OTe&&L>cvLUHFg2fKGjR-ol}BL4k!UR4VAMZ^vka@r3cmqAxRY9Nb^mph zP!2`#Medrcx2wC>JE#Wucz3)g3~tk?xX4Yho% zUGII%&-NXD8w=&a(oBI|kXEh08{1Y1dR@r@9SXKGkl&bPs5?c@T;A-@%QNS0r1@vH z0BcdxhM%Pxgv!Ta?{!b?WeOvfX~B5bcYOk+eqAM=WY*gu(Ykr*I$3rw`gF34JPCc{ zybaQf9z(pGD+q+gJ(yTLp9JLw6Y>%d6{j>G!? zSt&qRJB?k4XztraTHJbeb6+Ga5|P~R5{RpVi(<~|EeW5v#MVZ%YK)o{GeLTcA(u-t z;awp`ne;k(0!{Ul@a ztScB@ydU3PE{$cjn)ojEUjqv{BAQSPi9Vu}`u1|W*=Zk-tO$!vismmg5X|_*ny0Q- z#wKv7FQR->jB6HZn806%bq1e@zL|YCl26ndUPl!JZIJLFi7Bx#?ouBl2af4+yz~-O(kV|z=Z%dO zUySWTv1Th* z;b)lsJi*M_wxz)Yu$MBrqttoJ@&VZuy{vyA(U0biyD=V0NYf+# z&jlpXKsWZH;oJ&1h@3Y=rKRwjP__k)hfu6O0n+1YG5^@CHseb<6*F5y4@E z_Vh`18m;|kqEl7UeU&*D^W08`MX@XX#W@oN^gKw+w(G6$Q$3F?%)(p}c9sPX!|wxx zeI<;UlgW%-d~StFICKDvQIcvP80DPcQGgGzpbc0SMq`&$xfI$IXqX71AFk?qh^^Lh zz*apJA^u<>CR!L<9W+0ug@4>fT7q;0Kh6eV4aBWv!Q^w>vWj1eFt8f%{7rWC!GpU@2ngP7=}CnnqFFW0nF-G=JmV7J`T1R}>m6g*3YvLcS95Qp~q1bGm*jMu;#K;X}V80PXM zL2)f2#p48F?HySXIE6@_NW7SA@fkS_gqwC#CK4}nZ2Weue!RAB`q3$*EHUm4Peyy7 zNAUKGA>@`pQ|bZk6W?K zzHM6gt4S*%(Q5ScFBs%aT{SzrpRBL~(&5bCcjD)qmkA@c?S2!R&?*mY3+fEoA(Rl+idZWgh0ODuH0qwds1XvRzlICpz?KpMv-3+Tu((84lJ&M! z|4LzoawiV9s1Wc*xQ=9d5MxKnb5Sv_d$ZB&I+v|`xG z&B#Wjh{?%8u-r|aF&w3^FD~M6;%e-bf`2?76?J}zi~`}fL+GS&gbVI4UCMvr*VK5< z9A!!C%~xbeXyGz+bE?#VZJ>E67t;F~7UNW)fMYzC8bnyP%KtGW@4d8^(+dZyhh8J; zb=+@cQT*s_;C56d{i4qiKST@5tEl|YfAKqYwexMN9}Hw01XoT-XA@UMJ$q46uXt?5q-;hPGFq>84bSf-F{e?9NHrR7T5 z)y1utr1sr+`*XDFEoRFIVg!lOo_8qI;3kxR zzkBN>@LnpfUJls8s36HlA9nx|8rqc)w-9(eZf4ybOV?ULn%~cjRJVfMlQ(>%1O4&C z$J2tVpYy$iGsY)CRYU9 zQVxzb!+`R!h`sY6-Mr~+$D}V(arW@WX=tbF{MgjN1Jz{K%(IV^;YFXHtLeyF zk41yEm|+nX&7YPiOs@A*Qk$D~?%Al+`w`TDML_!QpcFh5gD+nG|V(GYr#|f=5 z_0R0DMAD#PV)U>unDTvRzP$KwAsB5l+IFEsYktv;lK`iTSHj>&DtreX@^}p8!_n1> zYr**ADoa;}&Ec;VGOduY_dJBW?PtDx90cD!l|&dxqQbmn;E62D3J;iRkAaJ(eg;DkX&6q@*HNV2!AGRs^g-qNEA@&$(=?>&zyS8(%8F z&y&g4dELRBtn?8D29=lRxB%$nG`&=+9*8FY7%iae79VS8bEfDZtVB>F$!p%oXVWG8 zaPhvVDm$P?BrU`bXr#=}-l83xj6fYnBPV5|(MIx9eX7u>M-8De7oONln3SmU|C*1j z$@&Co7Bqrudub$ncFhh&*~)1}XUCK9NzRSg9g4zV#u5$#VO&r12f`7AO{NsbKKrMO zy*aPsNK`KPnYMspubbv&Tk*m565yN<8@H)eG^NZ$yK}!6z9_qM-Z{4`3gp^$*#1q> zS3N$wRd&gS)Qrk9$#*tHiaj?C{3Powr(yMus@@xvBr8))UNzxH5A}n6Z|EtxVU-+$ zR#GSZon*0z0~=i+kF?v!OoU&CQ}vJ&{U&vBpg&=a7<_}SQh24pMPF~O2ytR-@QLx; z+<7tLk<+Rp?9u4lBx`IGZEG`^NjE^5MzZ(4MfdwWR$o~Qi}$MAg3tSA7WB77o6$;1 zI0nin;pfD$cNbQdWq^c#NIm3|hZ&^G?!!PZZL&IjXax%IG?TwH>Vhod$tq5j?U76p zuF8)qD5fQ_?=ho#GGKuyvIt8Ikb1%nfCp0m56r$;16C6Vec9er38d8jvVk9}8CzDj zi;eFbk{pQNTyMlZe6TW>Pz&H(>9CBRUh^`P$TmFvduO(3!)11fcXom#k8e6evro+R zC5Qb<)wr-nh~*<#Ls_0^DBGy(1D#0U!L+jNKtQWw4rlWzoz+OxzS0m z%6WM=MRoLZ)W-Ipd+fKt`drSH$B$+};va%;A;Z~gzOaJ24cNROoRf|pSZr3W+dQ6f ztFVlD2u;;RULuF_=v6vzqHW%)0DivwU2;5>IrM&p&trbw(~c0#%Z~ra9Oj`rq;&ZG>P|?mW=EaLbt}47qe9#7@@9P!r=**f$_YBD%!0h zFb*9K(!6j;bx#2QKLEfIPdowW2cI`kR~I~XG`V&Sa8r)06Zkn0-uq^C4FzEFxZ$xi#}ls+@d7)N zR60?;gs%>f5GJmht{smm2`mZmmw3_U>Cqh@(wv)~nG0O92{9Zt9g;1UZdz4LF=5ZO ze*q6S?Z=iyUhxE-5gc!&KEr58FgdRxjbTQ3$SR#w+95$;yp%$zoBruxs$%e)FM zSVlP*L$q^z**q^3l^*%ZIS5$3Jv5UB$i=0ZlX6Il0S*3|!@s=vH7^iP`0B+Pke^cT`nu zBGH4T9OKClP!i;w!2x)Ox%&Sc@}!Csor=v_^u~h%1yamD-o$#vGXlS+M-iD9ClTdLo%VoWy+V^%r{9ewY+9?4k8Usb;2f-^RbUR_ZtJT{a%8xWN4R^ zh%f6-VjX|%x1g3Iqd(F3EPb_mP$RaFI3|KZ-_!-GbHd)cJV#Jl1Q1o?wQ6eP4~nqJ zuRok-Uf^*B2+c?T2H0A{59Q<=88+zE>uWfD2yBUblij2k8cKQ>yKWi0ju3(j$cN3LVUE+agTSWCh=q$eNK?Pul8-BDM?Ba{qNA#U4PL5lpxw!h3S$otl` zE0jPt_NvuP6I}!viO?@46^DXk7ht2Zb{t*{)1HgKjbJr3*wSl#Y?1t=)_BBdYqf&U zYfBwUOwY1c4R&+D|21wxDgiO`i3hr}E!l8MP08%x<%rcP1+WTb<<7ODGJBe3JCXj; zrFA2%fgDO1;wIPmId4HBxr~5thO1E#&en2i?xGta(@6P+5C=Qz16 zYoSC88)U;5!=r1c&B8Uw%|t4)R?9hxxE#eFke2DadfukKgM{d$C-TQfHv2KiQ_OJ0 z5mAE{0lgSCmZE%)l^w#t;{9$_2xajyR19G1?oKXyY72^`L^k zsJ>UPx~U!-Kx52zU-Z441ew{aKOjDH7v+;pi%_JRjDkBQTvzn zH294x50>{Y=?X%vv+<%~@4V^f*L5Dl8Vj`F?HeR~|qYtP9txs<%jQ#YhQ z>d0xm&aKa|oo#rxv~03_wA6x8PQxkXikWd>D%qV=AjRWze+|F7M1ODgO*5zt_J4@d zx7Ypw?ka|U8ZfV`gAR;R|Lx$wk6Rwum|b|Vq6S(21;MG44QFmYxuAIP5dT<-ZcPz{ zdtVZ_RnFpSV~MrX_L|R3B$PpKUqJxB^6Q^_KY&hfBQ+2XbfS(Anwkp~ZWf61dC6=| zk{Ev9mDShk2auM0$2i2?Wz_12oOogTfMD=|nY??IS7iN8-w1E+AcE3D& zRZ6y&4OI?FsHF8mXrLHf(%ZP{vn+uZk@2n#UNpDs(bAHU$c z@&0c^gi4WYvkWN4zVQtu` zYce~)$5@DR^BVRM;`4&&exrvZ?Ib*4E^3w@92fkv&ZH;@OB*SKxz+k@PzM{@5(wb~ zWdmM3hkbZYY9I&$=cC~leAxgaPil(>kuW)xW&~z=3bN(fCyiC;77?MW1WcSZZ{EJ-9+xNC5Aee=OQep9vs>&|NrAZ_{U2xC%P=J)T zm3Ni_N-E8ph6h%vyHCs2YY{||g~Qvq95e@{c8*P+s?6bMNsYk$&HUzTHs1-ihK3y1 z$QFJe-g*h@o<2O~>juoE->H&bBuP&4@2#uJBKMOk zODe^w5DWFQnY}9Ygs7asgi@rl43*<3z8L?EYk^OV=}We zuYNYfmUbLc&9%=apEGB}3Ikw!E~$X)&iB3oqWkZ}s*6=>YnhY&csYx~sx`Yx^;B-- zp7^liTYqKgiF0|C90W}8;b4DrCBa8Qo2x30STab|!7y57GUU}7%l!C^2j9DQ?-0g8 z&lwCzInvsHiPqI?_Gw=T8SH@{ZfdT zKV$;y7;~^BLdoTFH|=+tximyxOviL7=TBoIR6e1$QJB?-iO>t5vj=_|vBwOgoBj5) zQ=tYB{6YS@m-PK4Q9E)fr5NJUhqM(;J9;4YC`hQoh>I;vje`)KF<`X~NUmg@%uRZE zt&1S;3Smuawzbr)eGZ8j-iOoa5b6l2lpb8p{H3)MXe6ze43^F8u_s~t_?fPfF!Vj2 zMaWsEu(xD+l1VSIk-}+VS@Ar{o%8x(*G#JudA95?om1*0m0f}8Y1ubahNP=~6Yuee z84c}g!U`(GwebgVu~1dSYGpJTrF!R-_RBQxVaX}>xsh|X1v+{rUgP+Q$daS}#QM)E zo|(+3w5vc)7UM3`5B-{GZwZ((#A!a9H_Y39G{VpXQgrt#VJ?gG z3PIs^5)FKXK=w$Wttfu*ZKUKZn;L>kC{JZ+^>&Jc7Nr&lN->xfznKjli0ReY2GIhC2ru z?+WTX(VUfm%I;@%Lsk@H+!Dn5 z(yUwsn~2TYOad~O+SD8|_@k)b6(X#`uYk(MQuQ=h5)}O*9Z{8&_jlj%iJUO5*u}ar zV!#pf%BkyC2Oib=GCoiK0NFCN+;sbVIUlzYad?&voI(uq2+-U2-S5Tze~ARN6#7R9 z9DdxFGO2`%NyA;nF6!xaEwy;-b?K4TobIJGxPvtKs&*>{%y}j5P@?ovRU{F=>dxt% z`U8{j%P_1}Fs!Gepyg@;)r&?YZmT80=xkkd@v|1SbVX@X`%78CUk)PnZjd7~CyO81 z>vI#~?Q9WuJl6DL5Y+vxT9x1_7Am2rLGVocQ8Q~P4zCLoV(s~~8HEGl0SrC^C2)g& z_3{N#Sy9@?s{a?R_Z?V0e8Bb|mK5=U;gh0H%ufpK{f+@iFX*AEVe8ENbd|pCbW~dj zJKwh~dt}t%c`oiAZ~EIB1EgNjs0yVjn*yqVOApUuTCXm-IW-Z3+l60TeAQ53x+Qgy%jIc0&B$`VO(5=Sj$SOnX5bVfh-(7IGUya81! z|E~S{$hdxXhQU*z)ognvN}N9X<66Qn*7(=&fL|VvIct*TTm?4~-%CY#>f~5El;l1x z@0ts5s)~NEfPxHLa(1`eJRFu)<2nB=wu(p(@ zvR#lzJXX{T`$DvO!7Vq;tcGL@G+@&tcJ`s2v=B%T>VsnFysXpu(kVA{QcIY%AWB17 zJ7b3?!AB=pF+Ix}xHU6-=T1EC)jQepG;La_{J3bR=2gIi1Q9w^2Yx2!DP(1nx|L9d z6=`{=m&VtSR_0jK-hvn)!s8mnhq`8;C^0&h)K-E7&Gt+AYDa{@yCBY1mMRvZ=Wg(B zp|I2bV$$t2X2FFQ`KQH#4%TYoEr;GXpUA=VL89Gm(h_7FAgLG0LILFP5M-IzylrmG z)>R$a_NX;q{Zg=8=aUv{j!2lSu}wS#fD|E9q_@?iwmG|31?uz}`^?Xz_Gz;kTY{*_ zAbN+QeqStH=tG@8B#`iCTt&?BdsJ)7iJGHN#XE^iVy%`(3kfOewA@qBz*1#ub=8jl zlVH*1k4Z=&GBWn#2irm8F8hc>vi22F6pQ_$ee4iDUbbMQZzW^;Tm_pkUsE5$GnssSK@KwO?RzW0&EFtaHra zY`J|yu5rge2f+-#yT@qsLAGe_Z(skoKXkx94zQw-&+fN?I0525|WeAt5XYH^1sEknFgIxD_ct$TMi;bF))6^mc1V8mHeu4VKB}B5y6dyKwr4 zW1aYFbS4(3C`@GgYnCDn_FU7!c}ciXY}+Q^Qh>HWQ-=C+|&sDTDm%X zg8OD@jPa}L`93>^Rg}_LuqKdr(cZj?;`wp^&U6*D8! z+QG>@0uW|EIVRhMwYeh+{?d4mM@9>+XFv@Li$;kN+2NUgB;C0Iwcrytu?A`rU2a(L zP3+mb;I+ISBH@iN^K+$+DVHa$Ptx_JjzlT&ImkNN$gSh}ZK!p&Yz~u`%Gi;5blPO| zdS%CDJIMvQoJvq>ztmi`p-2dffTR6o>f|u1wyVKG*G)!eP3wV%?vOT=H`9VYnW(oq zy))tKpdHYRJHhl(dnmj@0vqE#iJ|xV2$wpSF6JL}^B?S5;cfQ@1@D8_yq53ShvYSi zG-des^v1u&R1&*4`PYARaP&ac2``n|vom;WcLnRfr02BB`@ONwo@97V;)LtqVX(=3 zwa2@_HsZ!j&XNF=?XAN(h*icEWzwJY3iz9T2n^9##YL#jQAGBPZ@@PFM>= z>FR@)T$V5N6f2+hZ2DN`kU<%R#fa~zc#-y}@Xg}{nO0z`pwhplXTh(!5xoB^8fKX2 z8otKTI&nVrrr#cmzhh$pY;Ki*TUXGb9&!W2^^F;mh-VGy>hLuyFH!|lnym~!I`T6H z^Gf^57CTc?%zW3u^!l-Jx@0pWREb2E@7+N04CfJSe6A-XKKR7-DAs1M*#KYM-4Z@# zreE6g!E>Fd>tH&VUAB(M!58{$ZIdhp(F+GI$4gGv&!Xx+ZRhvK%ry(U1P^&yRv8X- zpV4*w^q@6C2wre-#!Jzc-%#97X1se$p*5u`f}8=+)qNICES{Ev)|nUwXnhZ-^`|i9 zd%nUhFX-pId6uEH+e;+?3efO!u(!DU0T=uhWN?%C4kFMY!;1(07xP8JS`QewF`k#% zC|`Bx49D!I7-kS}{7axbGyhbF1OH&c^+eSosJ18E+aEzTE4n z%66Tp7t<#>d?}P>pbE01Z8q^=b157b%#X-@ufO#PY1p9|j#jTnCloc^|0&Z7`p;!&i?iFJ}oxw_|hoeQn6 zlRkCx8(i#q-K+D}z4{=nqggl9j(BP8OVW?Qmfz>`@s+Heu=)ebI73dKNDb1Bj$%qN z5U`Q0A!>4KlECd@MPQ4HzfgjF{?Yu@ZY8PQCqn&c3`BiDfmt5DRuV&X1wZJb?3nzV zSVq5}4STzVN&_!QDd}LcZb#JQ0=-dqZpzdyZiG)vl^OxxCJ~Gul4Z2Q9fiR>t?6@K zL&k#|N7iZK|4ypKX9JE}bG~hczUs)eH%lac2^)Pf@%~RyN_*20JhqgOD4JV_UC`2; z?ZJs{Ol;*#YsCVMn1;kjVXGae^GhepUHip*viT2TiO)TUosK!+2eY1owQ|2I<^wZv zg>?!|IMsezwo@Mxjm~8F?>zxLFatOx4c6=BB8M+g&b{JBpFuqM`iWi<%V2<|B#Gk{ zA#&BRgg#mnuEt9B4yI!wvYZ!e$B6X4Ne4`)s~<+DPHO;N(jnJ=>?Hvmu+N8XaegA8 zz{uV&&wd&Q@f`VARZMf=9xc$QzC}j4hs(L1rkS)pG}R!8D~7lCET4t%INkP<{XsGq ziA8RiNo&G{r`au0rqfcl5Ok9s9Ff-nKsFU6`_LYPo^BI7m{EMzMC~7oYl?nJYz&^k z!2YtA_Vv|mTQ5M$S(<>nrpBzs$;DHDcJA*|)WXW1%${SeHeRP*9s%meB&SOz!#Ae5 zt3})ZeqD?X*1?J5s&o#~pk5Qu1GliR=~>W5$sZJ_vM$Q}uBRiHH#KCRiXB6&yknT0 z7naRM6sQpXKZIig>Zv8I(c9e6m}niq*Ld|~<!NJ(=*y<%zN=R}c0CIGv}(@qt=y-q z`wm|bDop&7e(~F(<_G;<>kSA`f+P=Q$NE&$E#b+K;}?k9cT;#k^49b&Rou!zruPqh zF2{#H?W!o@^rT}#SS*|r%bykV)WJli^^ou{)FJ~BZ&K|(2-c&9;JcHoWKYBeORb1+mda zBHl(Y+=}6AJW~nD<0N4h&)M9z0;q_j&v9O~xfMsSu1?V_hsNPxv~vmKTxLkRU*z0| zSXs?FgjcQcs*{Zc=sCqxm%9+LL06aoIiosJF#8s>Er9CE!^WKy1yYwp%sf`kg?u99pgNi06By(2a-+ByuFcn--Y!-=l1( zOLXwYyZMx7I2s}T2w0}r|D~V;nURGO0 zW7L$`-kMqRm3DCT_uzu0QYLSc|0}5gZnfuKPf* zxYs)=6N*-+x-CfbPpA^TIF6cbgf!xSEZe0M^U%QIQHHK|MsEMpNOeh-mT=c?dt7;s z5m!l-Z1+_ARF#3HoYRNhp?TcwfRiKH{g2fV&mw(0>tIG5Zt`I;GmY{Rs=3rGyf@Yo(<@TWmn zjXYH!(230Ypx!@pPfWknP(PZT)!P6Q(aS!BpLS!DPj|6dSV3wD)GA`h7q7_yz_GcA zF0Cl|(sOm6@o8EotE=8-&9dV{7GM3qHO%^`=zZn^FBm0K;c>hgaTeeMd$%s|v`aLJ z6)>}^6?2WcTt-r9?2L9+Qu?M%UsNyHs!Qqv%N0X&=2IM=;!~!5yvLJp7~>DBZ7`Ky zC*X(*BA>&nxYm3-0KM=YAsU+x;K$W)j3rix1?rO$=jYuO)|^7dY)Et7&7Ss!5h+yo zhGyx6o#Z$$hkNz7>7ECrh91So1rnW1lLO~?~<)joz#;XBbp~9RO&G*d! zS#06GYo_IiO6<$3V?*B(WWS#NcGu5`RBip0aOQleU$DFmDagM}NFAKL>k#6Q6uR5f zvSZUz9RKlMF`i>r1jacn6K_Bxh-Wq=onS)ucQpMUu(wNGlC;6Ci}O7dIFkVRT3|CDmfQ_^P*T)WJTEmMShmBCgNc2aMO8*CUZBa z2mon)wf*=u0zYZTYd!-2K2+h-V}K8bIt3pGzqt?7cYqc<*BLo7dHBI8`Da5PXaxNQ z_+aX$V0IJ`sC5QApkRpl`_qk?TI`-^6KyCTu#d&HH8`Ff)TjiAo#@+_AC0KVoh<;^ zOeYK)!2-zsFkut^XxRMv3Uq^Oy4IfGFb>-~| zSDQS^o~!<9Nv3j-fww7hfJaj_g3HFd(bN}AxxUqSPKG%w8u5PVq^&#>$q`r}euD|MGL;@lYrJk2U@Wn?63di{Q=5LZ|XU=8a-_ z$r^~3?XG!dxnJJ5&K9n9Ioqg&LyOEaH=2j_qhiAH&Ybj*$zfsTSyh<2lgxe%3h$=U zPr$nY$T?U*h09`1=knksdN-2UxzgCldasPLf9q#ORwzUOn;%*DzMZBFJd+@pHi;H>;MkuLORhf-Pu8`n-6CBHZU5&*7p12+qNqR?xJVgbO?Fh!>IM0 zPGsNnE5cX;(RT4aU8FrH^7ps8gPsR%jEnT~P(@EiM;ry)pETELSN&6?Ep9^$T*+o0` z8A~CEs6*Ga_j1VZ75ciNqv5F1M31;-p$WHbnB{1bx4qJORY&|xzq5z`i0|>Yyg+lC zO*HEGjo#$|Xy30y`M6OO2fsnDgl@dh$`Uzl$>^uJZSa@gKL3NB_$Fwp{BRm3D0_ug zaJ;tdNj(&|0_`RiZ}_)jE>*}F= zeQ1Fs`n1}$dOR_`O(9%JeE>?r?n>e~n}G-THa3i9)xJc{j;+o+o1=x!_MlR`B{T)? zJ|6_7P_poG~UKhfYJCdq=u*C2sX!gO=Xf|5iYFPJgNBS zT=4UB0i$_epIVxA+wUU|^UPIzL?=(-6uWF2&mtqCHwN4Y)Zj=kGTJaf6w3(0QbSN; z*?&V9qIQz0fHd10rh*t1TWPY|ElMV|FS>@S@Z|TwM#JgpLD4x0xs%Sh1Di!2%QT)fYOn#f;SzCCZmNtmm-z*pXbdOnx=cU>Z9f^?=S%$LDnzMQ+F_3 zYNWpd(~5}^KTc8fqq}CA6Dn-l8`gwvdyu-+{G$NqQx_4{sCO-AByEG)fa;$e`vrRy ztq4PCmW*BABM4%PNMPlLYU8BLqpLN#e5=EfLYcy7DLe*luh&~=F6gQo1t27*fjJv~ z*p^y03Z7*`5sl_KCM4jAc>4Yf1!>KRMYyC~5uxu{EYyt+qSgOagU*USTG>=1f+TH;y zDM!AFo-Xb?acA-Uhj4)yNVhp6D*fCoqV@;NlW91cGk^u^>{e#Q3Fw_mUb=8 zwpxN_EU$&_VIn_)pTUmr$yf^j+Y-;1Py5NtK|(2DQ_)zYdo7c5-VH)fYO^%BmNtFU9m*ggDLC{g4BU+M0o{JA2#@fn{ zyuJRq)l8X@vyr3ctdL$s-Q61mcg^u$3DA2YQ!dJ|Y4x=``Z>zCd|3WfH65_|;>F(A zA`3sKd)9Vk$*0QB-JA#0?=S`+WrkJhLP-fsk3h@3NAKH%mzGx>34$lCv1v|ib5M(x ziUtM6j>I3`IZODvl&S#k2X;6ld{rW2WLsBd%ReM;nJyHO0R%EB~eaktSqa4Gs{rSt60t8`MCB&?dyR)~7yF~C@* zzBnk06o0o4vc&VeG4MX>FUmTU?02j}BCz&Se&GKY^VyLS_QZp;HP<0qx#=$57R~XA zfOm1AD}S^jR<}!?V8#n7^yep*WkWwEUq7(xS|*P_n<`7{17;mW3w(8~Bc{EAFqM@> zl`D{^3vmFFC-j1YrTTu3I71Z(sUJFy%DEXjr}keR=eSbONdMxa{B6I+3ldzK0PSu` zG#n`C|C^+EdQDt}jBZVJ7c65H;Hm?Qik%ZpG~4!7(r8dYOg_La8wUpJTw|;dqz{g#JCR};)o8~ z0gv1ZfMWQoXlxC-uIoWLAs4VKzWo-_$(Q1DfS4>edAccV! zM5cf=K3wl5qCyh&ddq=5dhaHZHoWGnCas!pE@Pbb6IQ55(R3M%*Atjd*8Q7v6ThVBl zd_0y_Ki#r2-4g>tOmc_0=SFQzV-%9J)9cwA0WtL;?>dD;PAyTEA~vztqM*U``HRK@ zFr4(F=^9lQK95;?@BBDv<|e9LRk74ceMfo=>KDE*IMtW27Vfg~WPr^nqnZN!)q%O% z6}&-0aG500nsM2Hei)XhN<6GB1T>G+=VMvlIM)O%*Box|5&~Q>md#mO%x+foteTy4 zpeb(zvYs>zWkFkz5Y>ebfaaIS0K=yzj{H8BPVekiSO3_{^V(?qD)AmoHlo19r+97s z@mGK;ZklM%i`^DkEc^sOs*?f80j1WDWODQgny3a9r%T`wQR9<;1eV^+*8MQ}i_QtB zj32g!;l3+FsZTLr-D)ciIRs~YT9ENK-_cS${#k&@&*^hqIPW=Ns6ZYtrxGn;q3795 z(0D%TF)IBQ%?TTl0lW)!^79oVSwTFWSBs)L~XFMGMAl`Pi*?F zEvEfnA&>am6mC$wqdfp*BbJ8jKbcHKBikan0DvwbsyY$w&H$`C>>7+%0{H{?AqXDB z(QR>cL5~9bukG#|y_hQVINA}re!0{xDoFP*=|{p|fn+N82_0vRx@kJh9Labso_KqlC$-OS1UYma6L(iF6&x(wk>7pq~7yr)x@qzoDA8dbl*M+PV;1AN# zwH+H;@z6xy4pqFnbvu)7i*!m(>@*JW8A12(){eq#W0B-~V?S#sEv)sbZXVA`m%}QQK)NsC(?P#iEK+QNgxaQ5Pt! z4|#p=QBz8@Hu&s*q`BNs_>+Pxj=fIBsbBR!9JpN`3hd33EthoUVO!gaLnXlRDNzBD3me_| zsZ0ec=V;qb{GVlqaD~M;P423s%C!#cqm>w+pUShd=j{GIGZE(#lU{7jkl}*uH8N@C zoKfheG~;f8W0P1|09FE9eCtP0P9RnIprQBZ+xk(Ls?blM?~OwLC={?waJlRdY{r$xPT>Ql@IU_ux2`r#so9cb>ODK8DAt6KZm@MHi zVO|0P>xlMeERE(|oosPo9>q!ZpyHnk<4Tauxu817^_xVHXZ>TH6IC5<+p16iwzoSS zyQTzJ5j(qcd0?!+2>gCe9>W@Vzo!OA2;k)#a9i3>DIPJ_`1MhyOP+0(;< zF>(p88Vt1!4U&KFl3+ zVWLoRcAu6`3NNZ?p&QO)1Mpl`pf8%f_a4#cd84r?(ORu?8OFynuB>JM3mDW{bE-RzrMmiB<(dl9P2+R z9e-DRk;}bjN~mlbHM4={Mbv1qoY+(lDZVJf2vtc;S);$#q*ih?5Rr4d=ZKb5_8bt10qhPFaoP(Q(SWS$(tquOih+ zpa!TomTn^E+Ay_HbL-d-ZGiZcDxa;$DA>YaY`8wyd|9nN-H_3i=N&urO_?!j;g|f=mQtZZ+C>LHUhsk^__atvN`A428nZ?*%y8A%_rA~ z9cEgY94Xf=Vu8&&&k!ahu0L9Ctt2GZbCMbU#Y89y;)DUNHuY}lodI*J=Pz;;Bmm|KD{9iAEJw@Jy+KX2M6J{ zCE>KVgWs?%C*q+g4qC~YB}%1}B!OwN;?)~}z;)#st=rQaPE_;3yB{9_lT}rgn zIAKCUdiv&@dIc%EN!fFJ$T)A(9`b1kxC^T7@6Sge!fN{C%Nd%6G3HCOl3j6+HeoLD zhFrQQBn|Q1HYGQWlL-5m63rSPI1hI*(MO_V|1Xgk3ELmRiKCA%2Mjpn9Pn`Kr*tu; z?<9IfuYcSQ{Kmt6WT3h=kMe2vW5fLKdR4Drq-nvs+6wY@@KACI5i?&4QWby8xv@SL z0dmO4)(sOmWoARQ3Oy}psG+);?}YeD$)mibS7Ck9*?hlV`@i~cNUZSbkiWId3uJKH zrX#B{vky;-`mJ{xN3{}8sm(=~ndLh188AAkKdUl8Cn)GCxXW%S&ulue-LOlAV_dL; z!+>L93Y9lm;=wvQuOpEdR>0uDF;q5UL?c=h?tJUa+%F2U+7tm86dG~SvOj>T*VAjq zBfL_ic~&h6L$X>11hLj}ne0!NP=Zi6+{D25dHZE0opVs#kPk(faf%5Zm?1z?QbHQ) z>nAlUniR>(4K=4RoO&F#6z}4bupQEkZF4%& z@5$S3F}Dyyn_%Mtur!|#s__E$tSpKxW}}oy-5J4SLlgDTBwKxJwr;$0c&|%G2 zeD6MHcrdK3jh|w!+=KILl-M93Wh;&=Yw(v<#O_1+kMi> z^fOxQeB|uv;5SN*%`6PImW)$rqJjNG6~)2i&tDa6zn%S|*`ZX{X&4akEBy1Zh9Lz5 z)?=~+Qr*;lasrtrF@C$}^(t=7KU?&E#0oJ3$_$98n_%a@Q*q8)^_H@l-a*217Pbtv z%jqplX_2ZC&cL!^MgAfj6H?+J4#w;jdByJOzK1PLkx?_pr!{%hu*4#pgo5OhOU@w= z5HWvlr71TPn-Xhey?&SuaO5?Wf<2 z&uCD*s9q0l4o1QBFm85jBxLnnWGqMUNM9xFWeM!VU4r`hoNyV_TMn3xf+LjX@Q!vQ z|Gk1hlg||#s6&-RkUq`RS#`FC4%H6yGIb?U#V&H9a>g{s0biTaSvNU#fTJgAGA}as z%dW|3S&+z@9%X-~B7YqWP3lZ?>nMH8z^}guQ#oltjRvD>1}4Lw416%>_U4&LlyBc~ z?rikT-V?x)IuE``m`}LxQ3U`ub&h;Ur7y5ogF}@rodsG4h2(InTZx+<6!BegF98jB zTzkcHamc&1P5Oea$5-j$Z91xo9KRh<_bRm{Tj}EX#=7hPEGRsR0Q<$V12C?Cn0|Ao zCUqpShB)AA?kIC%zV`Z#Qs_5X`QDRkgV~@lZneyCPS)i)r$1%qyc2|IvaD=RwfSU>95Fe&x$>6uu8kr^PWU!jU` z&sRf4DsUh(DlB@5lp_~en^N#bgod$lTBD~T1&|a6ne}^dm;Jge7f*LYqoo~HhRt_m`}TYs zX?rQ^OIN}yaUj9|#1V5j{aKK8)o336f1Da^g(z2M?KHkl^JWlD2dwM*_yC@FC;N6n zd^I?rbc83l`;8~3RWG~5C$*nCi@<|+v7Su1TM{c7xQPK9eE3BwV=xvgg(GL8m~Pm= z+f2l5Y&3561LDCY20Jp2p%MXVq1~!>j(`=PCSI>@JObK2t+DIHU14yMBfH8F+rb>j zCHq)zZ*k2%y&3m-3PA_G$OSXugA>r%Q$XokLoO!lsIFi(pyX}&1tV)tylJ~>c+Hi< zfiIGb!t%-O04@}i{ALz{w54sP`?%xSY8{b6J1abCL&)kh`#d|E!P#;F*8Q5DWQxF} z-8b21y!xHx)bpPZG#^&hdT{^`bnkfQGYrpT}Qf_OZj#kT;b!x%6#^k z;L%{!3<09fh=F7~twmsVJ-gRos=+ zZ0@VddWwyp1DaoLqPc7Ry!F!u#=AkM^*)25Mu*zKW>?NVaI(;t$o}EjH%W%-k%o?x z_a<5CP(UtA&-mQ`P3b@ke6aT0CkFmBH4C76zsfn$d5ZelX8<4$TJ_{T1l-V!S7`zi zxXTbNau^^eK*%gIIxV+a{g`*ko+eh&rxo^Gv$*9YYx7`>NqAe{Oun$Zcnyf9m#NeZ z4}~>1?NhJN%cCh4p9!eLdP6uj*H!`O>o=9&!I4)ydEQe>+X7Y%n1uut-;sUd5{oO? z^~HliB~INH!DOD+Y0OAXm>x8C1J*W8NWQ2lX)wcJ=qkNstTPnjlFN7N%&vRPE;Yg- zY$cY%ACiu-7bc#Av1`$sNk78|oRyOpG5Qnx>_4i`!(K5gW$&sD4TCw|BwePCOepbC zrV`e?w*6*%ddXlpw(6k}gRX1WS`Sz%F3g72ko9+y^e5}+#wb*?OMrLQ`%(@O?{M>~ zY*0vV>cKSZlbu%z2gxj`B`Ib@N}v@=#5im)N{d8mCydp(%O0Sj9{ZMHo`~kVMj@^M z%|lK3`zQ0P=13r$SVA4mt>MAv^60mVNbZ)}FUlrdJk{o0iH4dF=H#W}I{LfAu`q?Q z7rET4l%7;ggZ_7rL|zew&VF=(W*h?J;{S&%ww>{(~s?rk? ze*l;WuB71BrX=xNmnfxLE)!=Cd&zz^<2}kOjTnd@i(AUTQij(nL3+RgBPfALG3;Ca zCI2VQP>3eO$r>)rElC8&#>+|{bt$r}-dxa=Jr+iClFV&H~Ul ztMxCnMYf`MBxM-!FFyr=k!1VbN83MK*pyB0wfv945-~#V{UbV5pjgu2YhQ?RSFe?h zE>g(hc}1n4Jck8rFL>+zoJltRM46H`o4Pb$#E&k|QTJ+(5R?0m{^fB%(xRkB^n4~nE_k-m^Ufh0K94b?pYqDOA;w2 zCX%K?l3pzQT^(PS`&EX#T9s@ei%^d8kdE8>B^6sd(u27Bntz zoubK6^;u~k2Lx|GJ=KwM%Kc)@GCL*roKW|^H>p$&HDy}G#}nW^AzL8nu% z=n-;)O>S;q7Vx=|o$CLYtK^VOC$kW16MGQ{pc8+^fw7L8f%pw*IdMf7+`DZ-2(lFeK=s4HQ#Zl43Wn+HM^e5~&(BMi_JDECvCuHmH|5ZJ5*tQU4*sSl zW>4;D94g>SY2v*{Agi`V_*z8Mj^FU+>bh^Q=+@)|xOjt;ok?b+b8(4y_T4JTn0t}{ z%hCCmK)th-!J3#s`7J~X881ABNdoS`j!r&ToQ?Ag)V#9v0(l2Xm^0h{4q2LyGsaTr zj}O1iaV4OB_bVe}#zE4V6;79jFg%&&V#OFHg} z)gaW6%_Rvk>}65Uwx`%MMJaqDmSy`qDiI?FMY(A7NKh`wW5;~Z=}o`fN)Fa<)BPHN z5jpMA^T8-A2wby0=009@mjP^y&UAWMfu|--k9=5<`aBJTtJK5cYm;GH}FgSh`B?vAd))G-#H9JO#+dvc7B(DIDEr=Hf--fS`PS%{9CCN2&65*!?MDb6GQ4 z0*oQ*<`ANzCuw631l=L(s+ro&x_F=>D}aa#FaGNXJTD%42J!0I8vElG_s_1sCdruq zqwj@0awk+_@Eak%frix|+#&$~KLEhzPku&=CJ!wio5_LP`lfPacey$hPYv^`%@Ols z{L$RK*0q^^8XOkK{be}4V}4Je`>}6pxI-DXLH(&j=t?+0F)%0 z6&XPb0ycZ-{3G41i^lFnjJ$rBvsNbjY_CAF96b}jvn0}hsi6TMGvMM6nEbDA6vU_I zwR5zQ>^NsB&57D0Wh6R}R9OJ5bgM1Zm2bz6G*h5Qi^e7t69YB@w9`wmSE3Z2V4tCV zCYJwby^yqtdC%XU03|X%=Z=kQC4h3RKv#?g1p%Le=Xk3kz;6XPeVsXqg>7rL z^@-ruo_@>KGWgkO88KST<#US)Bfcbmr+~NPjiO5b8ePtn3X@|iVs#y@nA0vEHQrn| zf{UX*zwEBld2P{SbN9<$X<+Mc_?3YbA5}Mz2SeYG5q^XUmSLpBwp)AwYXc(0)B`)(_t6gU+vE7Ymklk^~%L_H%&{1EG9AEnj+*3+u*=$=pXy(5mpv>dqfw zs1s^f)ol*seN$XMH$k(t^S*~k(VS8R$VKicmWc1t=MftyI`dW4vEfqONMc74`r4=q z?Xm`f9mDQ~<0=^d>p%rDbJr=~WvT0MQtCVSIMmwPEXQJQYV^|YB z^6neBGy0;}1?{mt7KuNCf4_)Ot)@cH&voX6=FimZJ7036R9KzT+flS-WaN-x`?-rp zh~Xn`yfn<`7>}|zZgR3uVpSCu7QGjBT0Vv>^0x&z8UrkPF?L%h@y^ykjzo57gT(4j z5Ny+E#grm$2-NE&BC2*OMnov$7slzV3XQ{SUfy_+EY8w;7o^7;2WXxH0O43?O&U9~ zxJa*nw#^n-xz(0!bARXZCMyxeclGyXr-<|oJ&1fu1g9QO@uWXBVuTRXCU8qc)UOSR zM$-6`#XLRWI)caFuP^JeQF0m7u@X$-l@;WTPIj>kG5g9=si4QWusIV4hhI*yU&ZM} zL9hglptPMUQR^jJ!kzB%87Rjp%p(tbe01qayEG0K0efonJGXebxDQII+0F0+`dx4r zC@i+M-Rc5&+u&!q3Egi*tMY#54;*=c}A}>*t?qs+Vt@<41wDg zmk{ibeAoNFz*PfG6If+;mN_R-8%v@2cE%rY%Mh8Dtc`^Ovfr1&m1ijHvXQ_-yUGZN z!T$^fnxI;;#Bf;*^V_SD(>XQXNrn?C95f15vqT*U4c{6Zd6U3ah|46Jqthk{u1#0T zhD>X?jgGh~~*vxiIhFH9=d-eUBiahfKSC!gLr*3#lbyxLF)yDj1VGf#! zAM8NyS+dam?azNmM9GqX@pBsvaX=D$laxl|M@XW zmA)^Kv(gATZT!04XVKBA`ReJN>id#4T*HA5>8db;-c~gnxLxk;bW#44{X_bO@>?$2 zjc(3^>2^v5;hjTMj9(=S8PW!H=d`+{8Xzsh?_R`sm^l_{NC|voMku)e#Mb=7e)%*1 zRCk>VTVwT0Zi*o2*kD3Yw3jTES4qW}w%H)E&BG5k;PZ4O^wLH**>54A0xJQ_a&gh3 zHB!|@-3T0K$i%w}Wx!U~2QZ9aJhM2~1Ak4C;pVE0gk$7yGG4q*WD77d?RO52E*xDl zGG9fB${Zq|J?_VJj7_0qHofBq%&zYL@x7)pgWB2zV1r}7LS*_5<%pw2%Df*(Y)mP$ z49VHW*KFU?^|B^o7`A)MROOo+|7}JSg--hsML`0C9W*veCy%TWElN(Mj(@tiPYk^V zl-~E99OzMMn@}5WtA)%cdAl*$AMTS!7bk;lkuTq5IueD#YennWb#Ht_B*`O>T`(xSlYjpV2eYeiq zg#;P|XJ`(mnw816S8;3J^pbxgTl`aIJk^N9B+Se8!w%EC6OXQ7oUUIm0zK^O5^^<) zAA^?r-bUx=jlK-a6OKlR^Bga$eHKs)nfp7EszAR2gT`$8pWE9yEe5T*#+n{e;UeXK zc5%(pkK&^-*ODW7vD#JE0qtR!Iay=?+21?dTZl>i?VDoN7A}5aKN?56KO(_b4Q654 zb_ygk2QF&yve!z_g@lS1ftuGWdvGp9H9>4XDun?us_$LJg8H^RK?DuQ@ha*gBWsZp z4=GiolsmHP{C7B4TC?!?NP2MXJnHk-cEF%l*>eB5@bXE!=uDO>r%pxD*{bWCMAt$E zNDU9~XO0b$ZpcUAl4aoluUdB244u00XCxvFzYqZ%|5mQ6Lmn3Bl3i&gUSZaw;S`hQ zG`?+)a?ovPk~rd5$X=L%g3#0nU7@T^7PX36dg|a`lX?O(_^_e9qKok{+_V@sO(j%J84JV#H!PL~U}7bGjGGt#Gd! zk9PxCI>Xj9NDT#D2*^Zc%U#jo?5Fk6?p~7{D%f-*eJh}{zR8JjhY=e-irx4u7&dHJ z*90Aa9wdO&T%pf$#x;am^9}p4FKeWw|AhLCs#3k1&yAWu)Iwd zD$Lcz4ao-R0rTvXIw&Sb;%H*QZe;(5vB%>Al_)dt{L16s@i_tSQvIxDx*Pm7Cc83jifPH zxPH5muv1)!Zm>&1T*QcT)y5Yp9JmZ#i9*67lia#c_o=%P@7c_%hYUEDc;Gv5%i*fFxt{be!O9O0f?1I ziEwC8|D6eXr=ed?Ka8);Y2VME8-5M*adNzk3C->U#E3Xu z(={W%xpfe87&l0o*{2oGlRc zDve7XZ+x-9b2X5m-qW_17YmwmKp1CZzgUh%&0QBWtp2(TH(^Z*X%FAnEG&6{y)xLO zQPcRXC}Zva|EoQVUXtCpdN+I*n_Sm*#>`V12y^LsgVMp=$?|U3BXov zXWk!RwFEUP+&^cGviX<=sNKtGgBONzroU3!3QCzsUkbEOkxuG69&bMp-1dcgmk{LB z*n`Cbn{L8J*fUjf+qFpvjX9#;WZAVZypJRDJ=|r2lME_AwxH~_dMa8B9vy(;c+|AW z;$0{~%xxxJ6jic{P(ERoV(EX%Qb<@x+?s`?yLyK?j|JS9c$Z5;zw6mA2pRPxPv)8_ z>8F!#KtDmQ`JBz`0C~yiA3fYnrGACEec$g>TybRx@MZ*N@&A;zdW#P$C=S$?iV}qF z-yOUwnYA@#_|7yql@PQ1UZ%u}iSXHz+uNxLsDGXk2blmLWT|I7`&MV>g$0fp$zbp8 zzpk6u$@&)qa>Yjv@L}t>fnzG1vxf6|Nxp-+QA=+FV@w~iPm(N@Pq&pe8@|I51R=oD zR1P96@tFpTlL4Ws9~!b3lX;Z2c%a6%1Pds~dnatygo9$D#<($8xUaGg@sw?KA{$CE zPIWu+Honh(-ld@0tclE!H%`W)Ap*lg-Im!yUi&_>D(Z9p>h(GeX19nfWhdmg)%V0M z7xnw&0ZVE}H?dA&EB3n3&ptv0SgZGa=cOf2uTuH4ngr@^_Tc-s3XdtGeK8o%?yX`_ zCe!~lnanJgrzxhmmhPxjhyEQ7HrtxO)4sm#6AWHJ&I)gSrKSZSl7z_8fO~;)l(w>sW`LTch)372uzW!k|%NF{As++NBJazq?^e$R1Mu|{Kt*=(3 zK8JrkrruEjlA0iu?E(qS?&q!1oUQs8Knf_t!O-D<0C&eg#$u|Zvf`4dmVgAm#qcy= z-$mGE3&IQXn?)$-&S{xPKt2YeYvP{eP3Si zrzp9Bp3ZumWpKn`I{F0ZKK0ZLK^LE{<7oUUqmL|`?cmtm(1}FS!)JHZ*OUfuXXdvU z#X%u)0n#3gry$L_Nyl9ifab1r%}i%3&a2_AViKnxvc^Sw^O63OKn&B&{J z94qOVZ&g*5jOKsf`=*2Kv{I_$FNzGzgy2vfFBQOU_ej=e3C`XALQc|rf5dq*v0^bv zw}1Yx;vuLh2}U(T8B@Q7PbG!fYp?1*5FI+Te+N{v8=Hj&Yz8jYjP>Q8G3v9vZjaij z(GsE=D5{NYC=rvy2Q*S}lM0HfS<8N)hG`+_Vk(Vpaq9zAOlGSQX_6riqj?H64tVs@ zAFezT3|ZsQ;74Q?&x1BI%1^=Xl-tlMsSY$YC`XF%)s}F6EUZ>0PgrIX`(3--N-}L; z_2Ho)3!o91(!Bkgfq~o8s{~nS&%N`i2a8e<0U#E^4b6qsUg>J*7&qm<_}=vb*wugr*7q1n9a7@KKW2q)-g$Tq zXNhJ@jX8(s<~C7)ApTIjW?!+b@Zy=M zPNB3@R+|WBQW`JP=~_`Lt$pryb)^rgtt1Pw%NcUmCGfq6OQLk?_puqN8{g^`#g9D*z8O=|+zdXv#C7Lbz9bE`e@kn9QbN#$QES{}-Wyej;$k9j zK_T=9l(wkmp;-&q%^=Eymc+W@L5h(JL8r5|qNildgykEuw#Pq|G-EwJneBtE5kSVRW=fr|apRov!+n)m{|p6XRLn9h+kCJ#{v8 zCUxbA{73hK{%zTei|W&&f}~|JZxzS8exOJ@6g)*kq1+NW@WaPsZVa*|I0(EeJuDT; zjn#wU3g^~|?a%+k8=gG*W=voDvk&m6#X0()JthV|@xb~2Ra1TC;x8bX2Q2bVsGziP z*V(vi4q0dmTr2AgxQTM|HnG*oWnz;phPY{T)7w0F#nXDCp;u+7Dsu!tlI3i<>}r)l z0U%%4k0mz2a{A5MxS8-5ZKxSr33wyBP|%(b#sXxrV?o=+8`P5?X34xq`}p$luoWCg z6q>Q5iob!hf14c#R@mj1lU%SVV% zcx9MZ$8-2WsYfhja(glo-zk|?kW(77QPE|1@aZ{ORn)_;o||Amg*dR9HEmLI4;qxC zFiG3__&n4VLATF*3st3uV(q3s2J^y=ryGGK!x$3kZg9J=x97$%4VY<`!#4cAcM-g` z9jEE}s;SUDF-}0XT4w1PM5HWd&Q0o0Jg781MlDVRBuMKz5d^@|3wdvn{Kum$suLTV z?{Eq`VgXv@41!FYsmT(-#^Zn=h|d82DrC}yx)S`U;>X=TcVtWVm9tHJVLYQOj`D8K z>cr?v&9aP;^oNIf>mn@xcgIR62kO+rP5ql&TFObyTHNsg8|l8i)z~&A=dvqF5l6W^ z7=Kr+*^wnjJ&BCrRpjJCQ$-_8a2)?>-K)@A(A`o+^axsXU+kTrJFUh~5%_`GN_>g# z3pkZIdzhVI2@fw^`U@xI+D*IxGw+TDfwwQ(@GL!L!(ETY@j`SutF@X!Pf;}%xfM#d zLNf4@T}S$ZG4c8M_6!bLdk#zRQuX<3e9Fi%gH7ZFrm`s)$%l*p(=3~-ucd9f4BG<@ znmABEI76djS}Z|}3ZC}y#RU2c^6A}Ulq(h=#0Kw$4tx~in(A}w#OMaA-q6?toZyjlhXIo zU|FXcqLb<#3SeXmT86i1KSFA>9v> zyft))Q&6%k-jaxtzE?9`GV|EKnGiXgI;et)`yFyVqFx15Vt<+f`bF6~ck9oZ$8>H= zvNpC-c+7gP4vO1gFRiBjqvd+pjOZW`dY6!&eQyQX zG|CdZ2`+ZNHwL~z)vWH#;PxXgj2_GL)$5?}4Xo_!vW9>b{lY%+vgJB<1 z*#b$FrZrPX1V;hSi(kO9YwyX%`}efkr`Q22{gvS$tjBP4%Xi3+XL&=Z0dd#JqI749 z@Ez*$(5+N*XeMjXNn6DY5anTdf-9JUWe0TnNCIIx%$9b$9|~O?&)CzW!=SRnE1*~} z3UY&d`Z`*Cd<1%9Qi&|jk;UP~1>)WFAOQ=4&-L-=#DS=m(Dd-(M~gmqx{vD?LB*xrCq-#>?u24DlKZ%*!%N=BTbq9d`imPg?6jRrnKTUU@d zk|8i&tlFjQ3gTk$$f6$hE@VdSGDVDMv$O)mfn$`F|CM4)oE9_zJVP2a(=N;q7w)Fs zvXoiLxbi506W^4wWN=`2NNzJ8=` zqPrTr6{W(mslN}JgwKv32CDR-hN~@BYLO2q0ws81gaFy~Y_2+*%GOVq5Q?Sx!{p;vUv`h~w|N%myU#$E)IUr_l$vh44mXOd*M zjK8(C_o1riW0p(b!8K#lY91Us*)t{N?oR0&WO@euV{I-FKlZ7Y_-Ry3cUsfZYW}$` z9eV4T6I`eX3bo3e2cTZp4zPlKr2Mnn)F^IbJGu1}C%Ty3*lz7t&O>Xg@g07)5R1oI z@Ih8sRTxhTCP?FlwJWt8<4Uqv{;E=*{qxsJ(H$S{b_|cBMtR?$BWWU1oumzpf(Pae z3ti&q;~x#K0>=KIn|!FotbJ;c;W#_$(2Fxm`Z?vPv199nm6R#j*Pv*M^&|O$SJ3MK zXPD-(F@iA&qSFPI{GAK{VKGZPefBi8E|cU+6`>N=XD_2%4WD!xdKWnVkE>k5AK8-M zV(Nw^$T!%WOd4Ty6*y;!zm!`5e2lyZYZL3*c|qJUyrxyk8t+6I=b5H3+ceGjQ}~!1 zmt!B^UaHH$>R9sW&0k6|u&Xi!%ddJ51Fak(w6|C0rw+Pi^yo$y;Qii{t zP5^=G9p+xKg0hEx#Yf+fJs=GE-CpB+ya>Paz^3)jM=iEUY%}Q-%$2nf)eD?Li_#q$ z`czK6q!fW{802=GioY+sLCG3>_H(cFUntj;5CiB0(XBwkwRO8y*d$%f&vkXH@#=?l z0fFHrfrY2>5gMN$zIh}Vmbso?oTm4hSTsyle@{iuVV>c!cDG>^crphbI}n8xL3=z= z2xCx8Cg8Z+ViXkknB0H28z~EmFy{6=YX14M>V`?cny%1#?7U4}m}vJ?23p%h`d@7& z9=0j2^9W(_%IhHcASG&QLrt5eJ9?P-HsC5`v5xzYX|t+U|(OqVA4h=Sa{4W!unLP5c}_{~)im;cb12-C?X3Lyv%kzQ z0%x4Cuf#>h>T}HkfuvhF^!%xoz|Sn3X3*h?dl{vw1ct*AI@6tXt}6UQtPXc>J5DRu z0}vj}*DBi73E|`vK32mig(_+$)2FnQw;InlyqrS+QubVsP4v1~3j$B)hiZhS(AfGj z#-tc~0YI9+erd>S3k&o;J7s+tjA$E6k%cCKb~KEn z>O>>K;4yVBN_8p#?O|US4;i2MS?O%o>60m5`wvqiQf%ZSRuWnA)$kEHQ}v&a0UWbI zz2amOSlV#oQVWB0x-Za-R9+rTw<8M48vEvGd!=qaSX(-Nj{ptiTirkPuZsHG!BjtFS{e!Xh0#6AsI+`8Ax7JxamW&P&?Xf!jG z70KCVf*%z|JEXjOpA*u(`vqfb)jz#15ZhYBuTUnzHc6)&9|Wgy+aaU4H3B4O`2%46 zUK9lW)PGSyiyZZ`J-6-Rhca8UiQ1dppAt@3KubR>$02S}i-*kiV8115*b=g2+4U#= znrv-^u$jJ+-)8h#jS5!}7G5_vNic3}dgCS<*TqdIO~Fj@8CJGIc47-?!F!Q{=?Pc$ zwrW?>7t1>?D~FFLzYu#j%@&Q>kqTRsI9P9y_!d>34!hHx{ed>#N0nAvc>j%D@7ng1 zj}NHW9Op@dm``{QgHCU!57%q9DhIIaKTabqg~}0;%{xez63hO(1aS+qaDa4GV-*&} zmP?c}t|7gYzFunP}w`wm|esH@00 z;>J#;|0fIQPXZvs`dJ5!Vt6yc1~|5yF@1Dqhg55ET+VB01ON66u@P40R%Rj85lQf5 zXt*dLyzk550kob%f#2~Pd&FwVRQ7e%d~AIenp;!9w;LMSE_1y{rK=;v3#BFu4BGp! zJKtQYt^FBrXBsdO{@AaCl4A{&9!*v=tY9H-oox~`#-90KD!j{Pk4=dWah7vw|66x1 zh&%Q&GV^IUPaYb*cuVa5TNunF5CPnv5e`*xW_ zl0DP2@jljrgw^LG`iB=+G(n!`l#;z9U{K9mN z+t*l32c8)xzi2H?L0-8bN&l5htYmrFr4Pq)P4=9>^V_z_JJCmiMCt3=AX}e48+>9_ zQhzxaagOM{fxd*;W112U)8s+`9u-Z7PJ6C=UW&-MUo&o@-0;Atxr`G#`a2;XDe>#uL5{zX8*;c&ZgI&0S=45<| zI|0P2hdH|gC=oCmxl>B$3St>(X{5`3r|)YCc>|T_nWUn(a8Z3kj6HLtHDiHlje|#C zzmlw@OxFiam>t-AQP~``)EAt;f8zOk$2>kCIhC#D#iv&0dzddmsL(JY0A{&!*!!j= z_=KVCRrZb@{ptk?9CE1t<9w|92dYBrWnI}-A3I`IZpo6C=*y>pDQgoOFxT(Nk*Xnk zxsRSOeBL{6E->uVwnQD~5>wY$D5!C0^u{O_ZOHKtoTag3}#@JeKq+m!0N{0b_kiD7KkzzEtE3%UDido}!E ztwxAkTGwDfkkGwv=qRp5RRC9&sRLEIyua!jM0J<11lz%oxZ%d;>Ob;h#U($ycsHcs zh3D_o_BD9|*iRPe3hiEbBv^aQ2a`b0(n2oZdI!1$saW;3NDJLyJ$C)Pdfw78Yc7=z zSv8c2EKg+|vR}Pg$raE^UyN=yo}Fcez5RAg@N;p`&?u|s1kU8+wDi1g`g-~bvO9OI zMSXa~pr>GtL+fyFd`&f?M%Nu3y68xhcIo^!Eu2Q7PCQDP+hLtAV9rO^rVn>STp&6= z{;PPLx*LNJADRiza~7xzKIH+Yy_#Y$6>kKp=eA9(FSm`Q4#3R;DkVZKVRjgtvc`$Y z$JsE4d>TD;ghQ8VgI7H7M)|T2){dow` zCX*LQmaw>zG+8Frr*0+yb!LQt|ENEuE?t~^I(qwi5Y?|J8qJ44L6Xd`B1Fh;o7kqt zDg6Z}@N(<<`VetIIHG_q%0w{JLy_ffhz6V}I-aP0`$Nl|vgP~S<;18)223?ro3*7x zF|95|lI>nWJU={|$d{PEp&a{cQJV-d#2WTJ1jXIJ+W|-vD1MmbAc$GP>jvRI%2g^t zt+6ila!9FXrD@vKD}%63dtNkRM1{c(;(ioyqUB4XxQ2n6La72aqOZVs^=Z*tkqMy9 z+<~41DwHo=wn%Q?q0=ooQ@_G~E*QQb0I^N|F$&xYm$Ka^X-D%H@C4>R_aMT11flIo z{d;?$$op5HwUoxuSzHIzWaC@DJ9?taVrC}=%_e6xrwwYk^-nBCRFEoaU^!b8#-26l zKHs$83YCvr;LqcC1hfyUXP?cm!evoJAAq>=Z8gxB1iWuLp{4NPEUB*OuMfsq%_wai zU5gA8FvB?@Vz;AcO_+J-414@sWu+Db+b6r=r!%nAjbAIV?45_a1waP&`>uO&ZVif` z*f~A@o;EJAa`=6gvBGfRUc2?;BM7=Z7=qIrhDV9Mn0a4!d1IWB4v%)$u`Z6g5;fFC zmVBwnGZtt#2B`U`14%~F%~cs>FUp_EOrx$4J=~<;>gU6A5<}hRISG^4dT_Elgzu|a z7|qU+jO#6@&a+SIR$REO91l$>m~j-`sA;|iT7;7*4TO6k;^LriTxg5Sj95%yP(J%s z0w7x0E{bwkQRyL@u+MXC+{Nygw;((JP1; zt|l1;H4V*rsb>2j2~I&6YmYsWoGzHAP@;8wBF1y+OUAhTRlVCp_@gBu+3LyBT}@jm?C2ayGyZRtd@a=v z;Gf+ohYW}c^`T6@w&1U!o$ohqV3qV14|)nRSj@zfnmS*^xDK!v&u)m_W-(4%3i1-0 zN!;1Gn4qUO4PYiZw9^CFVgJxC*4Hq2|7kuqp-bBOTmP`;Sse|_7X!$PCw3aFQT*$B zI<2hAuG?%n2hHo<@3WF+G+l}-^cU79vGDQrs&eTV74?M^RQ7-vS2?4y!rUS&h5}`J zw^^2r8fb&}q=CkbA9>QsHtJtfu973w*)6ncVy^K3}S%G#pi!N!|hsj3P(Swve` z=IuJ$>d4z|9b?UqP1D&K zWih^5Ct~wgA?T(%Tp{(k|GHCoqz4k$hoU0pW~c_C( zpFOc!3<+f`avRz%7p+n+Ni`;ihGQ3N_)nQ2HEFVrXbprv#9_%l3BNo%l~U8?UOCiK zG48dx>)&lXWX6R!CgTqxoCeL6QxU7VlqU`AzJ46T8cQGo;Ey5j9?EUhYu5+WEl#vh ze(vp(5akBUw}OaOT{X|E_#8@>|r%gqNd6ISm+M5Ss!*6um#>yHPgw^TR}3hdFS(# z8eSK&mD*%o>6My(xnnwedvL7xbP<^t1cQmwerz5<3RjhPr6Iy@z3m1xzUE7eHsIQi zDo|GF8dV!fU>%ZTBy!JZghbo$K@}rK!K$v`%IyD;9vl!CKH>0*hX-RRzwN(B$5Q5Rt}@cRV}>X28whazoN`Hz?N=whJpCVI*I5;$ zRwu_`%+#&CfP&};^#>d}K%(MTpGXJo5J*3*{|Ap1!Ql!K#6OROz zTQOg~aU~~8wZc1yN*AGlke_p^;IRWYv2_*535LBmUE|!aNpAS`k&-&+=`uF zuULl)1DtU%baB??FW&`snRO>1b(#@SGR120haw*0Y~7S+nz`N+)dcD=gA7N@=d!F$ zXzQEwfc3cd%VwE+h8JdJi8X;j!~TxIti5F>U`FiOGQLa(5b`-XSOEV)uoXnW2{#G# z5tu-Jr-p@>%aO^GOY-Hhx-LI}Cb@@yn2smg+WVnTV< zO}M}(WASDRr|%E41UKe;0QNpsQMO3nh;j3SeCe6Ry!r_QC$e|;X`4l63xw{S_6S$3 zk5DtBk;X2vGihfBj&H(o-8$PL58Ebg%r@V=U5n13+~c(FP)@2cx>J%%q<-jzdL?sY z5(c9oJZ4QxxT-%vVjN}p5(EDhXe!USb(p+&6YJf*v1t0FQe-y*&i%io>LB_F zC9+o2TJ5f<=WN#Jx}pq%pV$NNxs81@d9}2lgq_DQbbz8NIAtuxRc#nZ=rR9`Td+jL zl&QSUZM0aq#d91nWVH%mdgRgo6g2N%-Lm*kE}xI(S63bbXQrv(g&*zz$PhQq$OP1e zfDtZ>DdeT3O-lAbBm$XHz{q@HwrHi(L#s52bbZMgjxv3kClGI}>NW0%?auNGljM;`J6_J*dJINyvafe8HxH;WNzZh=H^Wb<#dVD(-yGbk`-fd0tvVsu zAMg3JTaA|)hf+J$Aah$N%Kw8-EN+hEXV^hHaE7IGh;0XRzDa?g(dU7=naAvB7ji$B zI#%#Gp;>_?Yeq0$6#n(2?WBkNV(i;7*(cs&=AVo-ueNMnB_qgCzsRO)+}@M2N=o-u zz;!!4ugAX)(Iu&LB)?dzFKf?BO))UYLGNj!;!8N6(LEN$SJ=rQp$j%}bo#hmhY zaYM{}FrOb>(4gKv{*LO*+D741j_7fdk77~r*Ag7ufeK(>l)#XcVS}<7+@I6}YCxJ9 zE?Kj=)nFEZj=~Rz?rdDB{-W_Qa^_x_(a)SI8K|4y1 za*<-!>K(kPKneZ-H{?<+{=MtmtqhcE&BV~kjPSx+aHmczaj}P5vO7YNa~SJ#!!yE4 z!N7GiXE{}Dxk@#dIkr;r`@d*(>eR;8*nlCcO-Bi3#ca$}jx$%$1)x!l0Ijk)QUb|h zwWsRv7|O3wX*YJIaJKejPj9G+F1`sS&R}Kn{xGyqwIXyJZKHv?ZE>bp-)EEa9A1y2 zB${auuQC*sx)b*vmNgJpo>@Ic=Z{6*Rdn>*+X;`MU?JWb0-2@t;$0Um!!@D<;O$TemQ5ZL_>_YT_qjfKN2ujcI# z7J)jNB+yuY!XV&h7%t8ZZO?l~|A?!NhFfaI%Q#Uq+8D!!sayy&d0a)O zjqF%K0y&9FfLW~}B7M1Gng zhQTfEcrly05?LQ{rdWB0On55sOhdgSRZbJp5jZ|-mvWd)KXD?*R^*f{3bD30HIbW2 z6PUZ$29?ykt|yQ=Bou)T7<@W!8`UawUR}oOCRA(E_BDEQ)}! zN)E z$1H<(HL)m3|Fr$ve_{RH7qr5hJA*`EC?5s*B_#*uC!@P~cgY-k(C!2ysfw?2vX3!5 z{KI<7f4YNp`Os86N;p((G6qXO(0Bq@~srMKyze;gPu z2q@2}ApS;mht2)mk{)@%KuBF;9QK<`OF|1z16D%8P!1eK>`zGiwPiAc$g0kd!ws-j zM`S=Y3SBJsYtei@)+4&=$!C5+KlPQ!zcJ0dNo|@)_aux4CIO^T_jMf^1p8)vnvhU| zD7$eE)mr>;o&zx&r^nMN`FW@Q=H?98W!WS4LxLX0n?&BeSr4I|EF~)N%0Ir-6Ei!Q z;2$&zFL2;29mK?POlMgRCPD&4eNu-AZW1PEd<0E2`>A#!qWFQlFPhEb8tZO`6C*U> z8|9!JDg$MXrDN3?KBlARrXYIf-7M(K-u+RqfT6Jy(da{teZRb zx$0^gO<)5#n##Jggz=Z^Q~gN{%%c_|WYyi1kOP{1<%V{&pAh7-6POmOk74X4h_FQGpAV9PuqI9MG6-vnCmN;e zf}euEc$I-8Y=9i_v5p#{S95e`u3c;|pgz+PO?n46g)?_8C0BeM z-)O#6xwz4TJh`NUvAGkA0HQjR5wD7K`KfdHMqb|xz~m^s00@`Mzj(+yWAS;%$~U*r*sJ;?Edmq#+44bc8*uT0nf+5t+I;- zrny@X|KP5JcUx}xbLvc<{jsr8{Rz{(a&r>5A-jq)P|$&X15Oy|X->Jdiz1fi3;ca@ zFWfOU+$)Q7yPS|K&%&_rESHN^dV=3_hb;DlprYj_4asLkU_lBli@T{acy1C*QIXwW z0FIwiADO_`xSfGZV5LCGG)2F!YFadc-nfl-IiYUVUAs|GhRFA zGR`J{)jtM8W6eT(db2psoKq{)b7L_;bT@W@ls1;38(T|L3VFBlB9raOHc0< zF?+}b1Mvc3PbOD>-o?OuLpA-4lWi7RSY(U}6l{i&<{j%YS7t6*5R(=H+Ki!{7O$K474@plcfyGeRea87 z#~DD5{B8{4{a1&%j2gt~a8$nLhMZ%;W1ARnhs?XtVm=dOHv;4#X)rth#Ne8W$8acD zN5S|R?OS-~{ZdbsHy*3#vc=riy=LeMU=Ev$gB-xk#fwq&QgGL)(PBPl{UC0ugGOlY z=Z9_1JAzRhUQH<4WqYu$b+jiukt5*K$sZQ;Ui;tlfAGH7kTtXFkQI|M%fR z>3Xsi#Wfl1EOX54?(R7HhJFbroKdur4*PUbfwhj>| z?8gvTxsM*9_W)35?@NdQ?o5lMsNY5N(VQ!ksJ1PT$Zb-vnK@-ZeTN|8ZiCF4R5K(A z!AA?})Qt{m+Tn> zg~g(PHNEi^;>GGR5sD?zluYD`)jYPBN17TxSNDeRhhl21FDL5{#i%JdlrNf{t_j{N z!y9|z(h~bf;zYu_5!zTp#bRyG_is){B@=_A*E+;Ba;juvY8c2@#c9nm8=IWyqWf#9 z2k<+hM3@?yZE$REoIwRJz(#vSsG`--jWk)u&G#5uuSXEgaWzy2=ZY9qW9C~PnI;0e z;;*NHDb1 zXW};4CI4$Lit$IZ(wN=CypvJp3$bM}=B1+qL_>j#_r}xN9wcHu*oo9buqAc1HExOq5d>03iq&BupQyq3kSY_YZA*AX=6onHVJclB)%@ z7QXP1V&&2i#m5&{uBPJP2{;4*=x>R-6T$;m3bwc95Y=^ya@dhK0;B!_keD`0-(a>n z`KLVI;-VVB$M#S^YOOAkR`xw}qEaAVB@P7G6euAXeWnH00sCBlHOFyvm z0u6|95_IY|A|x6-a4S-t46gl1v-hx<(m$_Rcf5un(>y}ON;kGc35y3_lMmJN65Mo= zd3?aJN>brI=QtIB1>7pgd-FwW=7jlwB&Qnxni7#Nin%4U767R@XF-1MeC)f_ey<}` zZj6j!OJWV1BFEH+7?&xVXQM<$?T@XmamMIt5Y8EOd4|!I>3G;ErwH~W~rx^CEvz1_`nG;>$&?g zw)7_lT-+WE>Zs_C@0@X!{DviOB*^7wHdp}vKLEg%rQTKH4Eyy2lpiL!y2YOkcGuWFu{lvd$yp@sfI6AIzrmjl$&Wm zsOO`bD>l5Q3bWt%#`2#wfKYZt4m>&kN5kev`$gk0`~Mis97r2DZ!;nR)Cux)lL#<{ zgLpNs5sAf_Y7K0l3VrR3+yjIKvI7n+cJDNb#b#1DnpP8znOwR_8F1Y%>?tk$)DZ4`!7M1BS;0iEWYoElS;md!(kguH6Yf~Eg%dd{W! zHXpc_w^ltgdjgLVe%Xea%g7IDaJq0%gcJ5>-#%XjS54{@5i4&Ykm?vo6e&urAhQSy zRW7uRZzf6VJw~$!bFeeN?^M?#*%Fz&cYO)+h+?U&z#2LBX|h?8?p(mU7Xe5=ZFp(9 zaOl%sRAo_Ecz+O}BxT1*Ti34A#!;JB04#z~D8$zqL?A+5q~PClgq}8I;vbqbk+s1X zgh0xM%sxw45_#IMNYK{%)Luc@+}%7_%l}{o9T{S3$`qlkuyC_XAmnl9>}Zkwcl+(K zo{$tg79%W!O?zDxjn7Ek9~EGX|LJ2KkgF7NR})9oUDA|S_72#P>DaAxkmA$Yp-BW4 zy{k7JYap>XGI=w4vZcPCo;bC^8EdB#0fdb>JcCLAk}R*>=q7%E`SXXNS`Goelm4tM z&%LXudYns}Gizjqlh1=f0i5o%zM@}R`kD^ohd1hRVZ%=iYwMgSFWfU;i75D1wD2AU z%M?>Mqt#y${-Qm;*xliuY9G9KRiW#o*DyN*2+^vv#of$&uYCb5d+P4Ru+|Mcb%@4q=ANpl1WhUFC1 z*J9*ua0z>8#5Zp}25lB^6IKIpZL%pI(x8SSldzU2zjy`HT4cV7sD}45_83ORG#|vy zRr#R?3|hQrl9yq|^J}Su5`t+G<6Rg-I`#|(50evli%>NIX?hL3!(tSj*LXkG9YazGSA8a?O56r z7N-=E>8tj4$>5@gQ+V&s=M0ySk`v@wf;|YsfH^9gS%&42KrewUj>8rqc(&hOzQN84 zPWl2ExNIGo9XY8h1;(Mbu5S$@=Q5Ncdmzhz88<(?N|L$m4r&|a^b#X?Ip&rH{zH13 zGCMX6C>t5x6OHusAd!Uh5_8L|IRm{Y;5G%8{g~h>RWbhNGX0%&FmEL64xqkv%g|GM z=1(g-DTb4FQ9@HDmx+stM_a307~|@qjHgnCmmeSPh-DaPVj7>`S03)*P5#t}DK`eV z$LE$sEwe%x`YcdHy6^o)U$er)w(oE|)6cyb>Lmi*{uNZoT^71Nl&TccVasr-c3eAh zDwD}dZg}P??U~vWdm15~S6g@UJ~$_xr?h}Gh{o{QO%*6@Osin$n>zmbX)H&pX7|lN z@~zGsa*DN?A8?GZF%GzAab)F~|SsUGbuLdQ|k< zBYe&;KvMz|Q_<=GUvO!!=>z$%`!o`T0C7`P;p5dvK|{?H;=r2G`*Q|)i{%e14dnMz zPt3`GZcH&+4UAjZPLVPIOC*LXKP5wSvbf*crKYCE&0L;dQF)PNX;v1DB8co01}zp8 zQ!5O=h|K<7HNbd^5$lBgn2tnRgBdaBLE)Z>G#8|_XC}3)&KSD|^eosB;~Mw`i2Y~@ zrq}+;vl_t=uRmKCAKw9ZifVTip2t$CIBt^NB01D!osmp5Mz^d|JI~>#flj9oOP_b} z&50>7(R{d%S(3nt%+!GHx0bb_WUhBiZ0-f`2qDt{7Nta9k9}^71wD?ag>5InYK?euYJE0z%71W@kFjp;z8} zD(sw2&_0}si1nL62%tZAK`q(=sxi1>5MTN~OXeG^+!0a}Y?s78xs^e_s;eg@^$74x z94ld!x1^L0W;AN)a4zdH>QKJBkHSTNkdbNe&1hf+vyN6SrWMZ_2%WID`!rr|g+le@ zt-3i~SsRiIE1y3GQY}ri+qA9BOn6s)M}IZYT`42-B9}PaF?|0pTE@ReCuv?HS(Vre+*~z?PjwRODSH*t7@TNQM?3_Y?VI7} ztH8A?0(kG0b{`nN5UKmVdYJmK`VgN@w;Ft#BROgL#ez1oVW{*gh6@xwyWtKcNKVdr z+lzoGclWlc8P8`yz^oGt6%ezoFO`YRC+58fJ3N9WY4HKt&CcG2kCj&OeE`1}_!94^ zxE?f2bg!X91Cpl8BADTyRl)s(ZxKD=2xZm6sia5ZEZwyzo1z204i9vw>mUn$T19GX zQs75^r*41={BLML<}+xPa>6*<&*_@()nK6i8aD)!!>z7bDTbh?^(1BjF+Q+@xNwU| z$4V6UB%G2R!2^;?5Yo0y47moQba2C8iL}`%*~1IyXrEqz_8<7qwf!t;4WBj$C_(k8 z7Hy7FXa)bbZ0-P?>~n>3yM0^7EkOJ|+V-EvdD>2$2I=aBnZdKo0vmplmT2;I&kiC9 z`1>wfnzY36-un<>7f8LP(N^ryr?iBR6F`9BcbqslA4=~xOOs~dL~l!Hp^4^n-q zrTr3%*1g}v!TL0hgN2qbbGIwuc2;c%-;>iWpq2uZflV%@7_yFWUJa4Uw>vL^7lbTb z@EcN)D;Tc~Ax9xc67z6y1tC$e$1ZfKcN*4;w4p~ zkrVTxdI>VUD4~K!RiU-8R@)W6IUj7Bxm#fCTnYelpB%i)d?q!u*hTe9u3AGq=eL8e zu0Xn{Z5JfUK5-+q-vfb9V?HjXj3t(udfEhyg!DDrU?#_seAc z&e$32<#P{y>}3^9>X48mVcc(3y+&2)XurzD#32|CqkC;{rW?2439!6aV9^25;zA%GQv!o{l%Z4-b&zH<|pDWBmkoit(>$^ za9_oNSS7nxD;-hoR`A}|?CiQ+7-=<`l5{{8ZpE&tjRs515dY}`&oEGXkU%I?EoDTR zLHy&V3q}Mwo46g4yW64WeYGQpoMAiOFKMJ6Q_0&Us6VqmrfnM_4)MEtdN7v>EF(Bz z;hGNdpYQ@5o*RrsX**_l{u`SRQ~NY(x0CEZ9z8%OKa<4*tI}r3hKWAHSLc#Rj)4o> zrWb))faJQv>5vo1Wbf|AKg4bM0`UP{x)|@y#wpf1up0YtqmNxYJu7LE7#^rra`oJFE{SxDNKXR9=hyh8Wm zbIMP9gCUK+>B;0f$g8pILTu8>YOG+j!=!tz zjLOZS4dQO6boH~NL|STBkU0hPZ;b;HYc$)ox-zE@b3U*hDXAxC)YHWzEexA^H3jr9 zbiq`SCxOdyHlY3fjok4yJR^c4L{5)OaUjIRr|`MNn9i?t06YX>N}4GtSfMibzV~yejsvtV*aL^ zUK6a-QTS@n`xW5Cxxw{*gy0|Kl$qB2yc6-EMz*!3&ttBCaUaIgsi_T3?IK|JHr*+3V*_P zTPQ=|J7+ANil;{@L{`KKiV)s5xbK zjA6I7wYaUeep?Ol2`HnI8&PlZx8S&m3Hs=;bd1?}%XwbUbKnmVfV)Z+nQb(|b4*-> z^X`NXDd|grYvHKgHB-{?Ax^ZK{K%^vL`$uMx6SNn_Vvbj6b^=;k*q*`=e7r|^R^X~ z9Qqwi_p-(6%-~>1-dQB2YS~U|O^fb+mJ7!T5yV`Twg4o9jA&{doiup4E%8~57p-$- z{oQ7tjC0b~GJw-msF9-uH8jzZ6kz?X3001PnxK&c_f_P5L=d22gUrIt$@f9$}BL^roguMSgs%R+PDD6?GIw6 zb4P_Xa&bd+IKXvMR2e&zR@>iOPGo*o9x{-{zM%eAl9iA#7(s-ke9KL3{Z^t?+eJR4 zHO-W(R)pj)Y<)06Tz}s3HtrL$_D*Lft7^Un5Jm$<5fl{(7RuIrDcN8lf*XXaFA((Q z7AJF3bVC3*$^Q-Eu~cv6?55;fNI07(9T+K8(3pmG*bO1vJ*j^}_`y2U-UZung^`S} zGR*0wGlT8(^%M^0C!d7IwLqZ)jd;kWIv!lBj)R6W8)hq<3wewn z>Vc~f5XYKYTk!0QtzOKw!cZdp(pjBAwZ->e*5Xu zu^rU+O9%#TuqMCD{ifPyB%;m z+UIfW!q*gC=)n}O#yRjFAe*)Vyqv1cy=k0MJs;UNm{{?1JUpD!WB|$CvgPgBpsBDU zp97m#JE_$UEeu$M^RB9*raOQ9R(P6(pi*ERmW9-<3LB7aKLfzI^=`>A8^2GANwGyH z7Z6`cshPC4!&SHkc6>=-4+%h26F)XT@efSO^0+=_{8?ca_#?%O4t4pv?V1<}QI8VK zWj}5YuH$mW{gc)?*JhFlD4;BckjOf|qHZKQJ^i*~Q(4zfLE6d#YR^@D!V%b)jgFmV*zR72Pw$4pOzapU!07@D0k7ddI zV}!mwZ~3#6tWcECFq{#>FDLI~j>)K|@Mq|Nlx2Xh>_D4;yd+oh_E$FV7k7?gu^ddo(cXr!DvIv2WAdo2Yy)W?2y$2j(8mo5hO7fbDg z8qT`SB_!7y3KUs@=Z!!o_>`*wx4|NOokF4wrd*G0qMo6(pmgK}al*EORF9kfjDY!( zhkpwBoH`ov6H0m|i&T9>FQh-o#(fJx@ib#bIj&AkHk4r_E4;&H&pYLohj@{&1ruHW zcF|+rOai4zBFB;7Lf|TfvRfp@v|!qj;nkKPw$lOyYY2nzW*3wgpl9ADrvtuW0HSx1+{#)^A^eVXVOe27Bu z*(umG9m`@P6lU48@73_>vRi;2AAo9%ySCw-r^fO5F|=7+O@pcjfe)mMWE)>QMTPku zarKA8NRKxt4|(%)?egZAU+>D zw+Q^}N3qn~Xe%Lkub;F1V54f>--@N`9v;31nLI27aVT72Rhtg=FGtTJPhv-%YSg$D z$8WS*Sm9PJj88EBJ7pLMHq7)(A zAEYn@1L@XwEfH|oj>J*r;Im9Vvc1_itnRGt0}egkir8hl^K0%4;~;aA3)Cz8o#UT9 zaZXA&Ua?ks;?K?|5lDU`cQ*&fdEvnvVgU4mcC zam&@)|I*slg&am9#*wLCh?mZhnc5P4JfQn-$q8*gv3IioHIBw{nTWx7cIE(eDC>-ZMMFji(ev za`6T#h>yP&*zR&i64u06f(}?@|DciXIhaZB|frj7~@?KloIf&Mr!Tp&VNQ z>IuVLf9aMO%gl)^g|Bw9!vbM0$h!6Z?0Cp4Id&oKd?-!yb-9?lXlDSwrzX!)BikwS zK()`jQz`smR6Y3O@D@$&Zp7f19uCRpcbDp?EoIp9@dq1JD~czk4kn&If%AxBaT!re z5)>~KRYk+8HK{W9j35#ub!$e+2UFx`N9G=uRAN%^btr3v?XyT(k4(I|0uA`mQz=z< zRz5!4E{iiQX^0h}wN{|63y>-(5?VnIq`~Xl95L9LVw&gWPr$Tzf{WW3M4SnZ5fYle zoz95`{flL&n-LeT#ECNHLAP3xVutDD3D+|VAo#_A>|PIzUkgTTm_Q#!sN=55KZFsa zwmSY3?T4BD*Cj=@T3>a}W+y!3aYZ`VX0BG=sYb~}0UWYwO1`GH3grlu3U>Aw{{d$+4u0iL7~+z2ZAF(QY3R&YUk>-s~OZ0^VaBW}4nY}d=%8Fft~ zN#7}SaAT^rI+QDoM?YO%oZarLP-VUvEMC$~+sv_+ z16y=whro>`3r7u{cI7iazdgtO^hgvQ-3M`<>xnmKi$>S0gMr}95&albcdAa*5}90Mvl^nA$*$MxLWOG7_=~5rj1z%eSH@0 zEf;1c$hS;~hF0A1OG2K7hRx{B`etXzx1|V~X}krxWF72<6f{FAGkWn)ioc)F(>E;K z!6-#ojR<#Rrt4`L_}Lk%KSTO{4Stw2@+r6nyoi)=-OY!exnMI@0|6dK?jG0IcI1GKtAPRzQbBc)?klxFEWH4vl7mwnT?^HP)T&m#Q4U({X`Fhfe31 z4Q2KRc^K35u=z_gsW(?^gteFf&Y#6b!zc#m6ExBV-Qj2Djj#;;YSLi8>C~6Jxmi(LhNZ`TqO+A{l=H|H*Yya-rIE=E=4Io0h3E*%s`o)1y5nEn|1q@Qtb zAkh@G()r>|NC(gP-jf(4cB+t?wVq$?dWfa=)yD}VqQt_UVnD=mn}9s4$@d-ufylyj z4KifbdH9C0%z&0lpd(=AV>0Nt<9PXRnUX%`D35mxayuSlDg)gv^o|I0Rn9V=7w%@y zM(>l+nA*2LE23~7L3~>*&Rcx!TqA}im;uUCPz!H?7Zgv+V3uW(h}BS%G=*X2LV{d< z`#RjLX%SI2l3TZ(>CBukhPXDc$d5-;5yjk!Hg)di&Ji;bPAz|`#=*GmDrm^@3UQTR z^cT01D;3641{b91AaedQ1|lE&@^(N4Xrt1`g^2&sThsVEmRvttfcvqXVam)P8`Ypr zCfVlI$4~R)@{J&&j2Sfz{{%^_}lpZt)$i^-L}lOO%VO-fz?Wh zlqKcdV0<)Zg!aYbAQv9irVnB|M(_TbdcV=B`>^}DRf_y7Wgm~IkXo3e zLNst=!~Z}BWo<3ThTkQx*s_TNao3>`LLjrFY%cH-N%?@$Tz@~Zy#Dg@Ze1LX`eA0V z5L0XB6KLSt8WpdEK4G25b7|SL!jMpRYWl$o_-^Fq(5=^#tyw-ln2D*Suoi7MleyzZ z7*~%FjLw}%M|7Z20>pZpc@y?+`736nhBa>!{W&Knvn9t{S5FXj-&>VSsFcWPyz9`q z!zd<{*R>BISk}?<@(y501M~E;rLAtxu`Ai^FV%}t#z5pS^NO%QFoN)P31mrD9>IEk zaA({jWXVG{RMS?EQRK{Mt%W*5IsyB2?eV2Kqk#FKu&+sV=+XKYfb23X$gdu;Z-Car z3dbU~CVj9>$?z$uDm1a}@xHSD0VgV(LT7+OX1+XRn5t`kwawbT%{DR7QL-WznF*-c zv1?*m+C!gq#sMjT!x{DWbL)#*!r77o%<6pL&@7fp#t(C}2V1MAl~$^V_m(Zb0!&z2 z?Z>-{Ae!Rm4QhjM*u(oCrY<+$TlDhwDccm#8jVfV4^InjVj4Ou-Q^Xp;jpOyZF3%P zQ7Eg_Zi*C5_w?9-^SDFKnivn@Xjwa3G`?5JjOzzV=|P+7C|F9J4PJV;2}6^KS>I-m)TlvpFfHnMkIUjY4gC`5fP z=~~8xTpSEx+!xxQe~~c}8sgIvMY1-Q>qIGjF_<8N$>!1@MXCUZJ#?jT*-9M#cxw56 z5A631+FNDK*4t*)wSK3*26(Csq7J*lgBW z&-|C98U%9+q-3NcTs4FN8*v44ku3}F|5mTqxrM0cl(Febq-GJ@Tp^^395(DyxujbX zp7vdLo?U*8c<<6FoO)#WAYh@^EwRpA=YUFI(z-aYQhPwg64&0&dm!+#3O+k6Iv9U_ zCN9ZYuwCIwvi`ZhEd2t^heU6|=H_K0shL13bXQ;+fhO%^UZ_d>H`$ zDS^PR3vVDm2)!$NXTPkd@5L~S)Wvb9jfsE{5f=*sVMfwPRa_!8bSe&h z_hzFrVJx<4rdMdP)P}I~i84C0NaOhq`;jk3Mb?I^LE(YghQsK1zNfh^TWv80Yi?FY zZ$`AgbiJjx;5PNHmkrmySW{cr&TIXFyayX^Hz&W-UQYeT#8;O3Z^mo&_m0=cvxb#s zHMqi%J`PBXHQ0Un&to7=I7upFOC*M|!N2($E9?WY1ho&CC#r`Fcyv{|2b`;GwYpXv z;A{FWF)vOFzY9&ggmP~;mXa6@MImIqT?g2hm~m?r_WFZsIs=M(lXULc%f!Rwhu48f_N z{mDt1!Q}wexIvOsHlat~5dWbZ8$VMNsiF3g`9kfR|J-V#OC1nm+q2_faz5 zs=oV$^G04lhYmFzXC6u(-j1?-Uxq#n>q^v)N*bev;~%ZYifhqkhH!BaZx96aVb*1ycykXT99;T%mzkg&ewWx%*l6s1{jdT%~n!I z!(cF|L+D(9JKYvc77%Z2?3V0+)iK4BPHuA7RIw^4U&7XmHoa8BsIN$?dJ9zgKV&D% z*rBq$Sjrb?!fU0to;W5)^fL-pi$DH`7tL@{n!ykrP-CAMlVaLdRm3g|d+aD4*zRZ3fWez!(J zqrgIi@(rACmT_}=v)!yS@QwNwcWQLi%4=L%ps1t*L4-$iRp-|xkp|=6prIr;w{$+e z4(-6)7>Yx6X30x}^jvLq;g|`W0x!SDe_q_r)SU^yBZ0Q)Ww`;+2RLckpLxs#v=F`$ZBhVYmmUk|xHm!meY$A#*pD0~lM1^6Cr(b+=-X=!Gr;~iPC!EwV+EZM0GBu>*~f4D#8{{F zQ($<*$FM&S=G{~oG(W}=2gJBZYX1rUe-~Fal4hzllECovi}oJAt&7zk5FdJwtdv$N z&2o=w;hnzYZ(ak#aJ(n{W#TG4E$gBu#ij7jp}WK4_ztMK5!XITjo!=m*sT~Xai#mN zb?MRe2P%nR%t0;@_@Y+W%dFu$xSZ3NH<~dSl2kWl9AOs?HRtRqX-7CgdIqZXL`;GK zIw!RUMS9ky{9mzI=_(a{u;yuP@&4v_s|s*0J}4PtFAbUPsC>T+$u2Tm{rL#Fg)KQR zWSC!Oy2hB|H%+QVpv?gx5y=z=@0$a4Xp8LER7U79l#3QQc{w=Pwlw;B;|{RR{piL) zn1U8m8Tsn!`3kp3jBN5;e>e`eX?O=x`z+CS&6$lW@8?wwzDxyH!oVXEg)e~AuV-Xm zCKDW!`K7EF{bM4B*{9QpD%TN}dsZXmp^*?(p_U(L&SwoXu0HMo2Y^)1jRSzbMb7jZ z_^pC*SA*_75=?7hoU8Bxp*Rp<0m#DLZslmh=dB*M9ei$3i{8u;q26Y3@yJ~oOws*8 z954Ps*7_h8Iey7?j8-mjap;`tPZBkh(Z+#7Qj6?RFN#izFGtd7t`v%YiE80-8)KT9 zVTjQq{waVZO9`A9as` zY*QB`sy&=f(f94Ssbm7SqunmQY%F5b2a_HA@^0YE;Lt}1c_PdjlZ^6?{|BYpAHHp& zmD2bJ?mhOX!fsEaB6-&DO5t7Pw{g2>*QH^tL_kiek`Q?$>is2yUFEA`p}7cj)>09x zS5*$%Hq_E3yuO_rkHoM8YLrTW3s`wppf{X3Y8rsLm%xB&`M9xAyiW46CW;8>Z0A;= z147zVvgpSxl9w4y&8Oe(7Y3f(^ z6mpvY|Mu0HNL`u-J6eGbF!*DYTZWJzLXbN?1^nq0tcN)8to*l|%l_KIqU>p!)xw>ORuVun%2hceuY4X!l z6(geXOIrIaWGD~OnHJ_E5m4hlOchcgwhjtEMkg}LiIUKBojokWqM@zK*=S2|p@eF) zE%_C23Pce1SJ-cXzjzsh4~%xTSNN3&(3cH`Ldn%_qLdcvyvrg;3i}evRc%6Ru5#mM zvbMW}WZclKhL1y{kA){3a)2MoK`YGrcRO8tWBN9`nH5MSmg7i1H-B{3;tbU|J!(m2 z1t07oA<3dd9eKeMY zkvtm|)m?9CMk|4d0awhh){aaONZiXE#Nki8RqM5m4A7iAf8`ujkuh#R zw;ojOmww^Zu(=@fu;|CrInzQY>5&8FhyOOjuDjpVUHGPwZkJX7prYEf+}LL5nmkh8 zu>_Ky92)q*$TA&L7c>wfrbg(qEe+z6sB8TXp1+BJam{k<0ERz`vMZT)e@RK#qR) z&|zBC+!3U<>YxU*h{|4QsAO6Lu`yjFkATuMt+!W!yatH>W7%0Bc%9VgZRQp<;6PSg zR-~1RbBhDFvx(>h`_@0$9oUvxw%^rIZ>*BVFwZ&rDeR;-^x)dJ_ zY50X!=bg-Y_yr|2}pFVIfUe+6uXS??HckjB+NN?em((9_(> z7h4+knTMDgl@}ppxu2=)P*jlB=bYq&*na{RwrL5byPrae-zj8mD<^|9K7gtIXK^bt z;)R+yAmNp2Qn^Qg8?>6~20y6xD7$zE`DNd6&f%ay3@UBZ2@~TVIZm|=pwq*LBb3EU z{`YzqmSy*9hdP7dPRNXsIAl%0L1MOq)h_|k#Bsl8}KQQrBE} zaIJKAyi5D*4iLZDwJ{IHT3jt$ps~pvGsZpLFfhF+{WqeReX1IxY3YSdE53e5?kK0Z z$%)7bHvN6Xf9>Zf(KI3g+H2NmFa;hQhkV4B9)t{OK-N{6qWwjRHoro4y9B6KxyJSU zMujG}k%9{;%zrHIDo$;^DaPUKcX%2(CUb zb{r9cPf)bRQHUAow)xf)RMam)+K;SSkA1yp z0yozTcs`b-UO~l_el#71*sm4U$z90&c4^tcC#p1qlFySS(|OO$HoH8 zAlu-Q6_s9K)e)*eljegmdOb%)rmSk+MugfB6e*cp&!;=om55^~{Y%s{kiP;cXw_D+ z{ip4TxJx02_)%1v1~fZh%vqTFW#UK%9gz=m9}W|^tW`ebN?^;gx-01e1ID6>lW{E? zg5$yqje&81xL;$KPWa0k-*B!c$W{_LB7!N^s!#E+3wB@JnT0c?#>fB9&nl==|J9Ok z%#Mx%w7BuCixbE!L6r?+4#8B(sn$J8f=mvet9-&M#HH`pv4VCnNGLVrPp{l`&sprS z6-&lmgQr0o)8{h`A|&%%Hke@Z@Fp9tn?ZvSyxJ}qb%f$awlXOhvtSq;=(L~s?>#2q zMb^7$U9j$3T#JVuxZq;42?hr1)rCVmUMpcM7XR4&a?bj&RXkKa0gW>A9cGf$K_zm7 zE`mT;8MMtX;jhf0a{|u1$7~pl756)U2Cgb&*413(UZ@d&p*Dv#UXGb42w_#gx^PAK zlR)H2-XR^!P03kjitMw_TMB=t=PN=r103{+$}!sY6nK#lLlh-ME}nf9Gj$3g%ZvJG zeDF;hwncAV{EHw}egr~(p0hGYUDzUIM~_#2g%t!-7fs0I_R)sbOlzb8!RxOBiI1UJ z?-&1$9MWBc!Otod&7GoUg>CvrCj1eSr8Eq9=s)yu&=}9{-zkTRz*UT4SM$R?645T~ zHHjn;@S*wC@|tsz8u0Hf4CGGcDy#aQ=;Am6n;dig8Y=y7w0|-vJ}I`7(>60y#&R zr-Qn(mwWUEcEzy|HHYF6hoLL7u22KPNC{mzlE$TeZ(b{S3`_xR@wDYHIs|b|=^FzV zSUt9etP4HZl{sB0+_Ij~GnjwpY0NA!ry~5tShz(zG5qS>n*Q`>{4jrx33JxdX10*a zAW7QyP~dpl4!)95w);Zsc=>mv2LV}~5QY_GHAW^RG^a*C>gf%<+7M~@AfG{zFv!G<@^N$>JJBtEb~9WZx>Xy5?vbD zpYO4Y^DOh7j6$1%^znDMrw`cyZrvdyWP6~592zl87lqqAo`Kk#JZ|9EA-^`uptf|R z6(~wjHk9arkH>C)<21f$tx6ZhH!1@#5R~I%2Loai4=}&6^l>+w-Ih^l6Y0Qdn126^ z#So9#3Mp$?6uHmJ0n$6!6R~1x3>mhgjBOVSA~vmtUgr{V+Z<0{b`0ahl|!W>pP*~m zO6r!fb)KO-Jj&#eM4RN>o(vDzLB;=L*15exGt3ZEJ%MODX``SOusUn z#L)Sa^jDE?VZUOqh7g^#k^KopnFjTVY&oT7U$kM}aPW4yu1%B>{z2*4u&+tChnfqi z0JXkP4DiIA(I&V?H4kAYJ#^{*|L?O6&+CBPV53~;M%d{ zoI8OeHn^igv+I(8j@UsY6Id|B%1fxZbv4ueM=}2qXRatq^BZfTFX>1GVT-Dv;)6 zAxLFQ_1Qgr+870(PgbzKgkU~$P)na6u$Kx(cc*9*>fTKiz zs}ablqK~X9l>HkE4`W!eCOb=bo}G0dz5sJWv7E{VShG_Y> zS+YZC3!Pf^&a38IyYy-meAFQc^vkwF3TFp5?nF(=AD`RoD6=WmZ8l&+SrnG$h{8np z161S)t~L|}&$rc)z1w=w)?+)wgt!d=SZL_5{^`3DNu?IO>#qonV|_B4zp<)coy)%{ z2LV6)Z_XQ^%FW@mW{HMTSX<`%Ht*hr;MzU^chj!^lX`b}wZYa96RaLtiE?iHfX_4z z1C(W{t(Ef2h)O7072wa=!u9rb8e&e^$m0gJG$afTzG`g_+_zAP;Q)G$p`Q|=^-P>vVuSz zw+Cgfb>8@{Lj$Z^2MqL;OLs{2z@Wg%ti|48w|uPMH_moI0L~_dS^Ei{fD{iU$%ho6*}9wMvbO zU>~PZNYIVgTWq|DGu<3Z;nb*M(^iB>FrM+`DHg*<_Ql=1pV#II$>vD`f%(Hzv`Po# zGQ0t|-F;?{(l<+91N`xlXbHwjpoSmme#2NJt){Mpe|C| zmqAhOe!Z`p-y;XWD@XbDI&yvA2La93P!Fg62=NyK2cTZmvoyRn4iMZT(SFCi9=Pj> zQ2k`c^%vvsiI;?ki9JuS>VoNgMXN0}!7kc~FssF`MeIyk%y-o?4XnzA`X)^5Xj*VC zL+MKrz@zx|aTPYaFGZEB-lA&KSbfNHtt+ghDJwdv*vntz58PIiIiBCZp>u=F*_ zIY|qfP(q$hyLF^P6^y`iK;h93aJ1*)ca|nnCO>aDPYdC43h|~(J+K%L4fC`*CUyzg zP6_pOt3=H_+eQUTiT_+r$2Z#I`@MGHiG|;4nbi)RNG8?}j~MhH0uq5euZtCTG*+EQ zBq(lD`@*N2q?#uuUAa>N)74=kwM#YBoPvBHjr~!rn$J^ftcjibyJ2c67R~!)ROf_p z8Fd?1j=5=y3TVkC{dH5+&4=DZ?p?s^K`}-b8){?OSUhy;^S4{xLqXPCU=dEASe^OL z(PP0m;M{bE?mb}gI>azozHlU^m*N?6GbsCwF22pp%ab90+CUPpz;Ooh&V@_1-r}oA8$j1w$;gy%`0uu8tC*+_6Nr41qqm^cV+-C@ z-h(*O7aH;x!r(^SZsX0twgdsp1;5kTB;;3JXQpj$TXVw+RSsI`A3glB)KK`HqUf2b?sv(+bWB&xWHsq zw&`nnjqpVD2o^qXQja=J8e#gDudczpBEyy;?&W7HOgJx=;u|Nm+E!J$u5t#7*_>&h zTVbJJ%<(hY=Vz+Cw8GU&1A8ra8($?#PSoYR;eR|pLbuzd@wY}%J9~o|0KKua8L_cd z`w*Jci1Cbe+G>5j6%5-=1o!_0WjDv6dJ%u+er}e~MT4>tu0*O&L$;JQjcXurQ!eyS zFR8N+ej9xZZGRx^x92*Tkl{bAA$z}3p$$HT&|Iw?SydbAFM?F_bU$qR)~?z$ag9Tt`-%YnKLEg{U;g^uCb7Ic$_gK# zm0A+J6OaFE#<74xLrfB30LjP0kTa|8{6OssR#&q`oG@;Dy-{B2SJ7@Z%V~JeV{f5b zrho_Bl%PaKVnEv;av#QI+ZPebubcJ*rEfeReCIXREa&3dWZ*=vvO-a0>fU~8~gU1Y1YEA z^a`I@A#HgA=uufP!uCswhOz7R_-&a@WUfAajZRdYoF*K;2oKW$f;A$JH31KZuDV6f zfC5ZcJDDlaZ#=v9&6OFl$Ih5)ulghbRN@G<#S)U{1W8(7o$~yswtXeyokd9a4s5KB zpD24;cm1=c)3D}b4=$utQS+jKf!h2+B{MaMKEkD!`@-r2aoz_dinOP&P)Thseh54p zE7w^<#k$Ys@f!y9PAelt#%oQNOavysT5|86^fkDPOp_dS(W8YvXRX8EP zz)P@Qm?TbCy5iEeBt~XgwU``CXSL{DD-`TMY))cp3Z(mScKF^LHjgr4+HRfsXvPsn z>%JtG95i@qfLw-@9 ze`pa#%Y8B_9C8E+3KA?yYOm!d_O%G5gPHd$T>bu922uagpW)#y_k*%Ty1@T4RSwGb zU+WJ3?X+akNZV_Wr(2RLqVS@VW6Csb{R5V8W(pCbz?m6M4 zqr995CL48q-muXY6aXzz$a&>@MVv_Je|~og_(7?%T#Hh4guT2&1Z(eAvv|qzf~AV_ zO*`JcV^Ffg5sCiGN6C2&S$cNjGNNEPKU&HoCe~DGNE28k_U)Bo>M3T$8dCr4UAd4j zC`imU#iy{MRC!W*;ZlGPC9b-obcw2R@V_=g#MD9nbzmhcvksZMTr3Xz-L{f(68!JV z4jddZ0uc*KMpCd4OQ6994e%s5#{9w0h?8Tx&B(h<^#SCS%vbpw0E~?jTn7gzSZ4g; zPeZno{h9aOZ;qLIm*y3Tz`U z`eemOw(yI${iXEU$eCiX_*`1jv%|RdF}MSV2kKYLAtu7YMGI;{I2?U<3C~B2n*v#l ziKSR?-KET`Bx8{IvXXvL8}3s2UWj%-UnQ6(25JyFoZ^8VeOF*4%i5<^_@S-rCD~r8 zxFTQcmKw<*h?L~S;n*&zK2a#^j1MPPHyUeU$X_6B@Tj=A|3R9wA4qFr1t_Bag33`6tc( z@si(&2}bXq<+04(-OvqlyqhAx*Y1}^oncvZsckd5kC1PrJ7>X!9B!e2ry)P zgA&+xvO%r+uS6It>X#w7GLVlR>d=Z@!^b*Xr&)&8bSln@MaV^_P`2nI3Anyc0@JxR zpvIHO!#~K|=Wwa>9U$VRy-t(+oS|q=gM1YKH|HH?rqRio55+kbNqxuoRy#X{eA$8K z!hl?Ly4e*ZVi588dR&JlUX^;2%0}PLlc)I;f0$L(-&#+RTb>l+C$m~gS}my(TjP8nd^nJx zKRxLOgyM?fWpx{Iy3IClhoZI=9-n_Q6#c%|S%~$ra;lc^_e^z-ynzbKH9$qAp}gge zS+y#(5`j>B-=;Wvi4-*)TNpSIP^$B@PoGVuRTpr|VlZS9bk19k(B6A=#eI7>Mx$zB{U-rZ$ANU7C0Mtm$WPU<+8tjul`*8(iiU*23k4i;o^aV;y>o$DTW)MRCV36q^luPw#r4lP0YGq|s9^(|qk{}QH4 zZoMaZyw;y6(OkE_t@PctjW4MB#b6JDv8(fqFFX$8@19_y`oQP{8IOsw6IEPzUiU9z z4vNB!*=wZDnN^Bkg_pzbw^c^|;f8O--!z`;Yg)Gts_C(}!D5mmzZjBsufCu5q%Y#64!MlG{Wfk_Wwd7arf;9|?JmJvSau_3FO3|#a4 zhz(Z`9nw%sgr!mw=;akY9GE4HAi#zmJiPvdHpmRXy`vqt>_E7~&rg6-RK=j_w}A zO2kT)5Y%f*pbx26&6xOBWY6i0l5gvyN0UxU3n~w*_zN+x%xVr=JSpYr7t@mV7XHmJ z;0%y1Pp1ulg-lrB(9kWfcY{(mEfg$0>bf113)u);31RNk2zsJVSw-3KWTOA2)Wk!_ zPw^0-x^hYkn(E$p!i8nDzZbB>JAfnXr&ovJ^W!87(joCiCg#_3=F`D)UD`6UdC4+j z&fzl%G1AbxkWzs^J&X1qas9s}KI)E0yn=pfiOXO>ZV@xKq46?OXgWTaU;U-$5!46b z7Avq`o34U%s=PrPgW~4bsB~+{mc<*|cMRed5U~enP)+^G{e64KPm&vRUjPNVcvTGN z(Nv8_a_Ns@{=R9E>m_vRf&Y<3oE-5_4=_Rk4x)-0m9DF64K{Qs z^`>+l1%kF-QfgHR&D@pO#*bA0aZ;x)=NBBfO5frRUeg^w;R8H$J-CM~;T;Q-!Dk`* zgR=!8cfcPLyO8%+DSVGOtm^~jb}$Co-w7swasCDK(9Z0(Ml%N{@mt(0#!-NsF#Ih; z2bEc3KDkFI*|OC*so(@<{x*?TWLMSl;NofBCGJW-cw#4#*868{h`1iL3V;_Iy}Ysq zDtYO97`)u6pMWd`EHd($3@%1Z%xvwjxfR1ygfjKXysg_J)o1wq-Tv}p5Q^&3Rh%Y| zb!FaAl#Ugi0nF)n*}oG4R<+ZoH$x%v^^&U^cF8RU+1KRoD-+JMr2D7dU9WoyY?Z3T z;PKUPG?KD1+m$3=yRSE~NtYL?|o z>BxT=SeEfefNi3<5vJ#c(7)5qRsb+df8KOlsh^3XLkn=xA*?rr+tah4xB=893gW0{ zM|oC&JKs-#&3Z&7nzf20VK$Uh%HR-y3NrA={89Me6mrky5D)J_(6Td|gy!rqgZ(rA zuHvJp8l8N};@n2)BJ{%!p|1iAsXTfM61yx+4kJoz_M%&jGJ(%PN}1Z6GDJ}oGXn@m z=JUj7rx7E+L!o=yiNm<7u^0r!suZesO%?)TwW!7))!hUmcVhfMPA(Sfcmn=D@<%mF z$LJtOG-2(^hG2(~5v}HU8Q1Sp!v~d9eXDvXXrg0?(sq>^R5xlJ1#yB~FU{_?Jb>5$ z&|Uu`18eF_;PF2zltkh!S5)zC4)}eShvra98mK*wB7^7gDsN|FTt7)pU0C5enOokk zLqj{dvJzT^X`ZJ8cxDLqRe1Ewt#7Ug0?5P0Qm85M`H=%SO;K@B$z#(hmy3`FYCcm-7|DZUE#H z7}S0Zj|>{P%H(qJUJQq80$AukF!P3Q>*8(D&?1c+<*R!w30^iuhnG+#zEj8HyH?-s z(RZC@8%cAbxRSD0lBs#?lrjpnVJfC3t9;X-7;kAnRk8b+HDC~FXfr6O2dp?-t<+i&PxK_FZg5q#YsN!$N++j?a6RVB&KLOV50txI?1_ z8fURg*vzW&tfg@5=@*!wZ zTzdg;<(1+aq%vaghoogXa{I|cPKV|s?udKc|MD)k$rPeNkGe4I!BaS%*x*M51IPWs;y6M39e)wa(4AxZxrHOCoJ z%j~xZD@BA`M+9AHPY9SC$kphE7}~Te1U#Gu_k^?uZ8EpJEg=dC7daXmFfUHYD4_w| zoHi0W!1_uSbOZYrvfi|%CUfJQCA2;K|3!WnS>1nb*V7GNt3-|Vv>SyDCBwJEJulje z8hUTOwP>csG#O=7vBO=h5;qGGiW@Rs(~@x;E|pxDHJHzGWm^Su1C5+(kqRu%CAltO z7O1%J$Sb#$RLIgSQ+KBE$X``;7SiR|3v_Wf$+)mf$m{4MM)JSH<}mX9{K;pDbe3x5 z(`8t|v|IPRFZk$9n->7VwHRn0VC?3C2cGnPhtB$ec#nB=G@2*@+73)2e337XEn7R1>*5>v&SQ&S5HO6K5nwQy zc4?jJK91}P3=P#rf9PBKrwmx%o*FGPe%Ydog=~hug4ideYn#)8CA>i zm(sgE+ZmuXHnz4pO+y>r`ScfY(U0NARuGZOwVaIzC-muHKBY24&b0&yu-QzPGlki~ zoYjW@0Pu=~?t%r5+$z=sF#A-uG4##X35m}FSQ=ypZ4T3K)=<81F1zA4Xp>sejuZ{T zC=n#4YTAr9)5$3Q<~IXe1)j=rK^R{sDRvdU_3n*#w{}F|7j`-u9tzLg*r`P(vUHDO zKLAv-q1M#=dESGg!Z7?xYUa4!}=Z)@89QAwttiKjT4?PLiH(!0NR zd_YL0%lCx66CMoUA9iKsQLVj@NrO3@G2icEtIKC?<_8ef2gjh^r2Y0ftjN(n|fHVEX6- z>8d<6D*=cu`RVhZ$B6FahsvGWNME2M49&(qa;8r-r-Rg-Lc}=Fm>_R=w$^32O zKuT-LpMW9DpAknCI+^nxiH|_o^T>}el13*$sl(^x-jnW-E94mpLa!8XQwr(5xPY&6 zRYPNbA+?s&w@NQ^4ewH8pG0M{q7eIEj>mTzEkF?vXPbficKw!PPfDNC(P1H2p|iJ zFvwfQBt^%oAXb8WN^pMP;*Hu;6$k=Uw+4z`fz{WkAe`T4v_(oTUA$;n zBbD{ks-JD=XNYhwWCxoj=d%AiXM}XK&imQKU&140Zq7g7QRog@wL`hChl?>BczaM~ zwV7#dGR1`Bg4=$LCpZxyHXWul;c}z$;SrvZ_`Yj5DBkxW;7$MCQJUp)BL2cHCQMaR zyDMx;lYO?ItX`te4jS#hsb7e1$`3;6Qp;W`!~D^vp_L6f&-2!D+ENq`L(nz6-6^J~ zhvxw1Cr@ZF7NR%&+Rw(djCI~S)1!UB2I+o}={LA~Qw+SLrvvk5J~9{aoz1A$r@BU1 zNT`r<*)Xlw7ADdPQzyI2F;<^XT2>B`Yv;BK|3Exmu1HmGr(X9GR!gJY1x*qoZxluK z_${^b+vjnE+uYbvCw>Tx@=Quw2}}n>SsD)B&whO(so-dtT2(sgct9KH5T(4+F&mdS zy)=X22X<^wYs-%^CjKpuIVrQMlY8N2hyKv%i^>Aaao4DXuf1_@mCD^6#mRw%40YI4 z0@3t7;2DAJv{>6P!tvkRbA=C1wlpTg@v%~PiV+TSqKwtAVIO-d)lzaWY6mKnY+`p% z^XhiE7Jezg6v-M+E5JwoEMOW)vR9zTNLvk9h5!D{mb($gTWNkZZCsF!qWumW>*r-IJ44)f zE`Q$E_SkEgFMsRmfORW-Wj4koc6ZakVr!O|_UPX_itKjl%YS`HrDT~`1zo$;lcEw*eGi(VS@wp z%*13KFF}8fr%Gs-#J`)C_?>x;ewHQ?&WGs0V7%q_* z-bsNeY@6hfskan-iMNelc>UF4UN>13Llr9f!LwoL08}7iA#HX1xI}M z#o={Tc1JnL8H~*4+I^kZEKoj%Ye)8UxpfK!5aO%j5WMW&-tP zXUZLMC}eH_plnvvRnL)>NvUvvbfjQ(fad*Li^t&SIwEf!4i7n6?`~yY-C{vCZ&DC6 zlCZSWVnSxetb?e(q+g3YZz~w8=?hJ}YzD&4Q6%YFa*K|Gn-{Q9Ak($7QBDn?cSAJ~ zPu=F75dM5+L)rj2xe)iE>e4hke(5A?+gWSX6uVe+rX%SAWLF)6GY|oOLrI5?Rs{D= zn-0XXNQ+u67lFPnj)tUu?^ImNp0*mtgPN6Ay&r@%kjFsPUa^Oq7bo*n0-!aXARmA72fNU0Y1SL(mnVkdhy%=8Z$z%E21sZP7}T-Nfv8E}HiQ)GJH0?<%Kb7A|G)8RcensB z&#%41yUNsAHRiXn$kF~6L@p{wf2$S_Ssgcw#X2{ffpy@)Bn3u4IxUhy>%s%trDPpK zSx4R9^9LR$+3=M$FcW--NL`fj>t)8h;1(9StiPBLLRzlFswlv%YOWQHwwMDR2j9M# zbun1YxKLYlnMa1M!Q$`pYXpNccv9*8f9Ax(@9^Ng9V7`qn>pk=ssJfNXW3f zeagX1#AQ%lDwvt#bAb*-%mn5fd*JIe!tEm1$D{VdeF#Xo9{RmPHeX4#6YDu|Gn|O7 zX8ZX0Tres=QrcXC$^Ao(V$ktwG3T$DS1kQ5zBm)q_oN_x)*jv7q9t)PgWI7U99Ye=p!LWrSzkyQg} zT);zz{4G7P|Ljy-ikQM7i;wjluhCvhU@66d@o)j=0$#TQ7K~~34}ao9W0^Ls)=fRT z#-}|EA?8zH=-7{C`rp8d=a640NFO>P^C-`#?C38|9;p~K=n=4&26b~<%Z6k-`!7S= z?2(qZS6MF3vY-`>6DF}g|M(xSu$p3YB&WCjPC>v=2~}Tqy`GAn$zqCK1MGYOElFk{ zMO|Rk*aG6Sr9LOa$CzU^=EnLw%iiP^UtueIuG-@C%11ROm+s`DIztcZe-Xr6;AbRJ zcRD#;gc-_n96s%O2V9xR)&;#u{(0U+s-|AF8VFJSwpsNq-i#yz-36fPsoS1ER4|Cs zanSA1fRXUSKVKzAXlzLx7R%P~Y9R_BmGhV*_P z-qh*pT!^#Dg+J*Vg;}D#nyp1f7O!`uAiYN#s^n+V7i{*~{X1hhfwnNCg-vhYLg>B)cZzJL z=NBS}7lTi?tL6L z^evfUI0$SlVK7}!Yj1N#nXAz`g8S!E(akbEC;A+7==XauLFoW?k=^(IUlWN8DmIEzFj?r`h>~-*> zcuws)ap@QNQJ(x=`X@Y8`A>aAE!f;r_d|j}Z9D&VIvT7}CnyR8PDC)+bKL}C)`C!j zSBw@v3M@}g-J2`ELseE?m?g&(zRENRI>;|=U{R~Qw`kDj2HQUywu}wtaCABi(!CNQ zQ1Rj1X#qenY%Wbvu$cd2WgRW`50#I^W*Pj?Tp8<&@;P6J_U$Tu8U5(5Ea(emcjt zA+o(PUr&l3NY4aWW~6)AWgr6jp&0elxIUco}(U-m=53Mu+%$7+cazR_bi-a;9yz zOiR50KEy$o(c=XELK4`|3K;tPnyr0R(AR3(sp1-mKtwyO8ere#$%$e*`0ZZ4xkOu0 z;pjI_3MM;RYRjn(`)?CVk5n{3BFeoCd^7mx81>PyrlNvM~&R%g0u|UpN*u{Aa9UYnSa|-tjpB&73l` z2|$$?QR+0b)+_g5Ka{d{t;onuVbqEtC)CYnlP$(Ax^VkyC?VUtE=vo!%iF>9? zKaP-zli#ZYn^3^i5mQJ-8N-=0wMzK1@J|$aNUziXn(g}pke!9AIvc(P@G=j4D5M?c zb7DTTFoGrXFrB@_Km-}?UA_HzT1F;d$ouW6z_*GX^+S2WhG@hA=&w#U6L>8rGQ11` zr2x}BnwM>s@OLU5uBXXSjz8$BaJyIkHGw09C}tjo?vw!?hgjxJrDc-TN)moP9+V|~ zo$T{J?qLGrXJ4?XP7uLIVCq#Oys-6y5b}d(F6Q{5Xjgx^*-lI8L01zIhWO~K{yFhl zbQ#}Ga$q_3i|rOy&}|N3M6$-vXXAQ?EMPGHC?VjmYwwc%NKRcR2}o!Y05f?Q%)R`?fIWR;l$yU&5)b08)(G11F1W-l;%llS|@491OQ+no)o)fEQ zIG?jWu-yhhV=i)8O0RX(=Q;aP{Eqawk?lMYJnV5L4b_(tVgb_0qeCN@7VOCE1ltQX ziNVrnc7rwI)HK|i6}?zA$=lnJzh~FPewL`6F~h<2IIj%7Z&G}P=S$oE61u^#c?@LC zvPntuaUC{TDj*0Zebqx2V=9151A3gJozA}9VAP5@{_c8g;sp-p40m%n{l{HAs^dLa8UIdvL>6p8FyD8Gy$~Hs zaB+zqMkPT1Up4(Vt_)%7V`k$5C5W{EKjJH-8`gb~Dysk_RK*xOF6dR6{l)A-h|fV( zX^#^f3hCj?3wEskFP?y#vHY>}1KpQzOvbQY9=WQ(UJ}cQD{dMB_a?YapWfx?igY7l z75{im2C?k>OHcw$be9BvL*crClE3b0;8n%c%f@DPKDu-2hTM&-*G>=Sh}kEnZANpI zH5dqvC9rZVEnrEx&3XA>e~s+_{LowiJf?_Wg1CGY#m$=BL|r}!5ucAV2fnMd21 zLL^n+wDyj~E1pZTt>SJc0V`)?YLQj|re^Ca4(Tp%dJMTr?=yE9^FLESK~l>C1|eiD z;o_sU-l&bVCjz9sYhJmw*4inGe*Ss5J2(^cKY83TsXOk`@EupJEf!O*c%Y@hO;SZL zOb&de87i{{sIn(n9;yY7PPq)%`PYYNhfm`6$zoFdx7P8nssF<<=|errDNj#CL)=<1 zb?Ok+V!bvPe$k=>Rdb#UPKh+b78L%B5EsCWc$ilFA9rgeYdY`Y@|^_7G{x76Le9&3 z=^6?@3vZmUi@p9QB^jauW9> zT3a`m>o8SgSL%%VI)g?!tfvR%@Rat_MZG~OOit!h-Sn2(nlr0_tvj-h@nESYGD(XG z6XR#eYgLTe1;?fzHyltVJ0)$VL7uc$tb zAG(A$Y9j``DzoHfO@`!Za*`xf|O zTX^E$EfSN@B&hM)_gDmNP{{oQtspOUk%;M+#QG)qa*=u9i}KecAdGlCt{H2qkddD~ zz#E3%8eIaVp7oDB0t+TywN^h3i0k!LJ)C~gXooAtJ}KxY&+vx@;4VP3dr~c;0)N-N zVPOHj6fjS+0pIoGuEQ|KerOd{Ed~YI*r~h5wj{l|3i{gG2OsQ3FPzP?C9u?CM4EJY zq0a8W%UOh#d%$-amHC0%n{JnFN|pdPYkJbDN4vRH==R~Z4AteKfp!SCrE@1GnM-Y) zRIY!CSRmQI-7U+MhNgu3%M`w+@EQ1Q6HS7WHc(?a{teX>w{_Is`tXAHmHm!!osx>n zai(J=lK_l)?ZNFtFuis%S9hkw(j?Mbq{qiA4)Q&&&r`OW^%Ca|49E%V^k*SWrsTtY z6S15H@<4prSbsn283U60rKg@Ncjqf#)FZ<`!XdGp?>zKod)&lL30wFP>lodlaCj;W z)zu`VSQ(n=hUys=P9)$QFR+@^hT$HDO1jHb%cIDJrHRr{pW`H$6NwdF!1xnRe5BpV zm7Nr6rSg<>8Qg(lnV5=XJqU=`9O0J#V2^qisdgW~AwydPz`ONh z%Woh} zVON%`?6|Ad;Ms8McZn8w_4rFuB)n-bAfc-B;bv`iA~9kG3_8gc`H<8HyRReF<2okt z^{wtV6|B&XlD{JQXXfUG#eb%YWf4B+JSK?CFKnNS82e|2_eBmq7kK{;X~Dl0{nFI&o`_tW%n@@M^7+7-P^*;$V*6kFaS)1i30 zHM3p2omVNmWQ;LV87IKd!*>NW9rogO0W|MSHmTW5PW~QRHejWCT^GRWr|B4LUWx;& zgaSI;kZeXbHRA80>udTxDIp~Lko=}@M77@bTMEj`H;p5FC`qhbqw=4^^B@0Zw>?vk zno7q4H?BlWl;wz#X4ddy@yGK%(vzc1K9^dvh3)W)Ff%r`5zbG5{K|O+w@cUS>VaKv zz3OL8Kc646UE)y?0Dwi4K3B|+FpEZ7Cfn#>6RLNNVyCt8!*4Ys zUXRPSR$0Kl5E=9aJ9A%g#eeQF`4-a$r2uDMa(b~Us~n2gWYczfSAt^Tfc#^Z2D;wF zdVV7TYZGE*rPcw}TdpT{aCLcHQLCr9n+|paD0U{@N>_n}wC(m90t&mKb4upSbybF}hEAm%KHjV)NU~2ov`3sh$P5B;yJJ^Yir(i>i&M z47b{#sRs4lQHKb$r9}#hy2_EIoQVLj(6essJYcmnFc(d&1{lXOMfLL}z%}bNOc<$cK%1-DsC8^-cB z_#E?ST2eE-|Bq|ONHFYkkJqjmXBvk6P9W(bNUI5@U5R6NyG}jK!by*&W)8;TTIII$ zB3TX*WgWMp&l!ZQc!Waso%2~zmOkG^f+`=#sFAet*%eAOdvYy&9&C72)S%YFAC7cF zz|~7^4Ye`j?|=Mm$=GaGJ%q!h4gyxM+l}4r#!D6i$G>O@SSCR-b%8*oz;<`u7>NM$ zA#O{acbQatAX|aE0g5ePxNkK+iN@c+vB!oZ>p{^Faf|p`vl+w`D|@Q2uT|uBo&=+o z7@Gn+p0MTtu+tQHmR*h;?odE%C$41owjzJdBu2IGEyK|EbHWKViefkuCYeYY&P|V! zfhV04hywvWWx`(?G$<~$2Jx%)&eNwN7+MQ`)O`)b9lGbEYm8Q{=&GryMWVgFEjqlj zL^9#rk=HY*i4@76My$FAjUikq+azlOAWK_A%_G|gH?xfZlGJC@6GB`pakBUeTD)uv zs+F9s;xW-0HBJ+J%^@;P8LPj-Qj?{h>c!bryH(r01BEEAF=*R?oXf~y;BnA#gw1={#GE6=avcfMUEH+650x!z-OHnGQ+Xr{MoMA}X>%y%lz$U_ z%*c7M46cf4(o$$+}3M17Ua`JZ8{*S;q#Gyz5e(U#VMKo z4EN_=&F;|}zFjikgOA>>*&2N=WAImQq;$ANjldE)K$V6|tlpiBk*G;7g|p4aYaNFA ze|G$U*Qd64j01+}9K|>%lsywwWvQarq7*8oSDp40=hb6YEoZg}%!r$$k|O;KOJ(PS zp|{Wf@{}ucoNqU5k4iIJ6m^@maY8t{g&8|)O48E;Mr|5Bk6DTh2L5* zYZvzej*sjaYrdUGS0C5-L6q_MaX960j_=^+$I~c~bs1&EN}-!mLrS$GMppC?LfEWW#5V%cPV^k|$mN zlX7*pn6?6Oap-^qwqLnLMt3pov85L4P#b1Umm@L zFG|J!{dfNWdRCkVYOun%TV#Z6cu%9I|9NS9A#2Aj&*Cy$4vCU-7uFR0v(BqeU~xeZ zASFiHKP^TYZ%)xNUt?0_ubwuM>ySWfD?AumywQ1%l$}lo4!5NW2QJ7TxHkF*5TuGV z$(KfdS&rJA%qo65eQMI?q1#R5(JgA5vGsDUw9VuHzGat$IAI<=?G=p<-+Lq1d<$Y#Uk?HY#1gXenbob(2e`I zIf1)MAl~(`(e8PT;J-$dsF^JQx49Z47h8&S8 z48|$qc6h_8(XG~Wd5^sqh#H_(XtBO)Vo*2&^ux1j{&F-%StGg^qwp(B)t4++$)uPz zft6^eFZY<)7z6FWXg}+k82$qLPF3jg(9QjU<~mF=V2NgS;u1!In6k3PO&nMet%JcX zE2k37I2TaeQnWsJ5sY<%PBBE;8Ir8s=){jnI)=hmoGFia$mSd)wav`ys4fx^78Z1wC00(G-Odt4>T(R<$FPp2^*7F!<7cmz6isG=u;B0TwA3<~jku z=%Q(L2k;Y4vG}wdKyBbb{wLziQa`0x#ThRl&1a*ZAG$4Aih_Hex5#+}@NR{%u3ivtXL!@)Hcl@Jpa>9)-LF`rE(ny$=e4pKdU6ll=H|;b(N9NP{uRCP#Ad?;KG& zVO|6#JxZp>&<5D2_i>KYChi{SEHU9tD)asQ;ZNFclnIj9W&!7bxVHgI;MCw6B~6|F z)uw~bGYpUrogs7XHjOhuu2(Md;1l%VK>oJFSqhDkHWe6VynrL3v4uTO2S(}2h4`J~ zb)sWP(Qk1$_sx}yx6gi8(nFAALg1B9ZB%^&vZzd%T63m-h&keurs0~>WjsH}`+2p$ z$-w^em)SfqXzmAncL|QIvBqUi}}t*g$N59 ztI??qps#+nq>^Zd`rrb|d^M!QidL3E7a?BVA?R>G+65J#NQ@?0x^>FvL1PRiiF<8q zXCck&R2c(8fC_rMFMzwjKoSwz%2u+8O@W#8RrSP$?JP84CR+WqWJ~cO(SEbfJAmry&*!iY5TjX!|GPnnmyl?tDR~tjlBpbc6uhi>oQ6K{CNjmJu6H+ zMeR?XRTiT;69(^>!R2kY@U7gUzpNJeF(ylbEYHDI@bLX}@V*;XUBNu=Fl!A z=HG^q42d3)4a*J{7op%G7idPyeGl~_WjR!m#uN=MiVzI*17k~Vbm)bsl{mI<|_vz z6E2o~e{aZ~7w>K18zO?n{+pOtxj&P6ddl3+*~nhV2(+kEw_nFbE%p_{Vd4Aa8{F{+ zL4I2F37j$tnu<2Ku35qH!^=UmV2_xYI!10;A0MU$nNNXeN7cOVIi}Ic{2HxHjGk=V zFKK<$W5-V+-;5lI&_PIwc?2gGv*#GE`UqnA_i$lTke7zjf;t^W2?D)+J}+o`a~EUD zD>1;eo4ihFFKWA0(_x@A3FAgbg%)P{zs=EV#nU7!krXiB@3-LOC(82&YBd$Hg=sJz z=~W-~oek;8ihh#?X*rlx1xm{86O!T@I1C29wUi0;fW<(kj7bl|Z)Rz319QmMMR{H} z&^R5~0#4#-xrNBRcoXAMCDXq=M=yxm%Oyf3XlB2LhhwhxMz{AIUa~mF8S1p{V^25{ z2?iCp8l0OMS}grin*F^uY1Q-HDR_oWB*4{VJu@RW2r_JtO#lcgiAhS3=|e8|wUZGo0`OWhh`QU#Yn#R3y1 z7jtiu*r!lN0Y9Sm7Q-T8ndlxZC3>Zh8J8Ja5_=gkMSaQ@`T{*Rq|$^_S)P568e+{O&w^JT|jo9Q18%CjGj?LUtx#2|l{&<3--3U3b zh{_Jpm`<@Zk+8GT`Gf24`P&V%t4H=}TLyt5|7X1@gr7ftTvBC-)Zq)`v9zKO)cGRI2GSML)pYuxl^hp*2 zr>m;-1+pYLkG8j7I7Q0Jtofn#td66-!m*A`nc0v-h^`jjL+$?7kQ~WwD{H1H3-SfW zV9!NK0aD83gZ_-+!%o7R@0qbbWGS6xgHM5vE1Oy^l6>Ti zTlAQ~GRbGBl(zbDd|`!r|NY1>3cj2(hk793NkLQ_Ean5EjrS3;{ne2bPFLS&N>x`q zXT@gilV!$hVzdCmqg7k!2&2#`!46WdU$U}Gq-F9c+soz$lSRc$y1M}XKLEgV)N&!3 zn5Sy-{NgdMUx4dQxDAk;fKDTso)b_puK<WtYI~8uYO$6lcuuBjU zA#+rMq9-+n_F-9@2!lLS$HUXG6=_p0PUfH8t95~8Q*^{K~@PDMb^8PQprB22g;y>nOX!35lugxD>+)c+Oy4DC3$Iot0Zh1^>c>kzI)na*dQimt zHbZiOOKPP^_!khLWiLz6Y$^r|?+_QA`Ye!jm+M*EG=J4OEPr-He3ztYOb&^h&kG{L zsBkR1WU^g$ZSd9XIM4nOcMzL4s(NL4#w4IvzB1$;jz2gWObw(U5EQzBU`uSmqDnW-EbXvNt#nZID zQ<8Kx8B7ra>{%`K*dS@=n&RSoP!MX&J*yCitsUsqhxm0KZJ5M0!(^3RY-LPIoA0p0 zg*ylmT*LU%EplmRz!QjVi5s{$xp+(8`k0N%^PI)%T5G72^XEz?4 zC}gps4cz*?fTXtjXj5*+H=UFwoYT@<|FXN;~@ z<~Ck=ZMKI^j#eKf)tFf6m!F4v2WdYpe7!DP@T{Jly)%r7s+yKuUL>{mK`=|LW}KEl z;$XX@15EbLr&#U0A9}dPI)oTG@M?z&L)!=()1ySIN8hH~T>Q#(?J3Zsu?0jWb`iK` z{9AKqy;x-n`Hy~NkmgCFbg3(ZvXEyNFre@Rqmp9ZbGfh_wNIrN}(2t zuR~{oEH?$~BmW)V$n3h;T40cac6LT`ArebHrySdVxA8W6;&8o8UmfW|#z~ow>mRD# zx9mJ*zUT8dVK)GhME{#$>WJ49ajLk`6g&c8!g8{W8zXsV+N`;cokTqny(YX0ynig3 z@X90lnomkg`;d*0U-q?+v%0nRmpX zF)M=fUkh5j%Du&tBuM4HR+OmkH*->9G)1vWrIXrmb^a!|&T7Lbn&kk*Q+0yPhL{x6 zM{#$VW^sbc6nNKP8a>_XTa%&(m}ojmg>-#QSp9^%wxEhL-P1t>fT76_TP5Ss;bvOc zIM)>AqI>qKgCAdVq&ho$=vn2nqINuVfu3kX@=kn+b#!#^Ua9Sy;Upd+ZRZmdD^}X< z=D(WE<$g4ij}ak&ylu4ov{f_MiUHzP3RV8dbM2xp~y#GA$+KNdw=H&x5GW3F2z(&2lbDxm#_sLPvT{_H9R-N7Esk@ zJK>I7m1J#tB8hM+$@!=8%XR?l>}~b&xTE&iu;P2MCA$S<=$*JGfA!lelBjC&y8 z9=1cpPmYjDDRS@!Z!ES%$tL9sw2rR25xgTJR#E{gZ>#H%=48^qAu>55yPQWG!Ze{m zkZ-53(T_Tn#lsPMPUc{L0J2}{~`vuxy>3h56v)7S@VJ`60UPbBZh#opm8 zvxj+zA1#Tpx)aIa^^gWCuO@LcH22k0*J_)q%N{ofC1fO&!djb!zZl-s&v(S>rv$Ri zMbB;SGQ>=Bu1sa(sdoq)y|pObToFylKkR z#}h3f!x&610c??3)9jX`*w@sghJ~8i-?0_H1FEh^++tMV0yN_j-H58wauIkTCHV9prCMI>xhGWQzcmNG+Eb;E_+6EYq zU=;7FFi4^)0#fcHpA2H_QN6n zO)&B+e*5x*rYk-hm?V9t{Gw{svm8^ye>$IYBtur-ftyz;&L!1+=cjJlli|8fT_1Nu zIew@L>|U<^xo*WMR0tgvSLa>oobu?!;2DSN>Nz0WwwIjZgzCT>(~864Lx|E>nO|$u{0gx z?A%t=5^eSbXMlczfgX$Sb+nT@@x5BR-0ZX1{SOQLbfzhk42ly|{VT#*waS(m$J|zo zfX^uFaT1(ddp1p$3e@NhyjTI=xLZ&Pw!Fgwb*@7;ZjanWiPV~{GLNR<;Kb{{ zQ&C$ka9aQ|0?N)61b#c*h0)OKWb6eMyrS3yYlA3Sh z5&3UieS?`wLTJ-k{C&V8Ncx);ARbBk?s4YjYsQD2PhNR&_`p0k-|X1q{lqN$>{gai2smX<%|V z;y-n~@3e@zN_G*M3^REFq+8NQaeH|L8<%z}E}8ov)A`iD#dG}?IY4>A#9Cg4YI{odvwJVtaz9}ojKVKmE}zSF)L|Vg?(bQwVdeTlz#}{eu;@}IkVDJPLmrKhQ2ESNBr$i zM+#eq!3YcO+>Bm1og@0jBEyUo&NQMi8ZsccVF5tK>ivAU68><#Q(yjNv9oLzZUnU=EL$(ex%4_*)0s$*r&_Au(i84%YCzg7WVQh5%K9 z%^Ur9ZtDb`gTuUK%lRvk%lXuUoc-H2<|$}T)%Gw4!8egVI!!@cJyX6jFq@TODpO$b zBO0#CmKD!b`H7RZ2=@}Ml7fJ*G>+tO!a7BR-vB-qWWQ%CR zeB<8|n8jFDYx#R3{Xa&z->-UkTU77@D=3&rD0!OcuVY_NQSuXzqhs`WtbvG1@)LG= zPFvRoYngSDfK-+a!B+|*z4PLU1wu)SA3W>r_UT^NTLH2I&r@eMt{cl%JMg~l4L%Ux z-idmim!EC}3htJ3ULVt4?_T4KF~xdCpAfEG%^6s3;|=fl;c;&>u0ELfQ~}f%bHVax z`d8h*vD2N$JP|CaNoTR35gEYKYkF>U;1Wr;nds)^)lf80c`-VUISP4t29HMdh}^r= z;B{Mft2gBoAO03y_oov`DSC!kbK~-Eh|t0oChR%-puzaB;!0iE2ut0<+dRJ`^Rrdc zK<=%BVmCf>1O%T@#3L|EGd#gB{!xK8g9fzk$llO_Ajf93C06-o=39(IH^WQ1+(6ZI zvPiy!BPzmwt=jUtaV-fF0UC{W%35wv?7pEf1ETCqS$aJMZswIU@04*u;*eB$iY`YT z%J6znA4Ccxa7F|p;)1;YP!ze`f7?V|8FXz8QMaQ+o5)8CMbye2ylZ6I`u28&wj22j z5){9{Kn%Nw@^T^Ug6f&C@SSW+%jp`Ligb_I&!x}05xrpQJKvK`$0)@>5mM7uXQr^v zuNQ=xp*Sa-vUE$GTY!Q_jj_q!Rc&J!E*;kObyu&{&DikmOsOZp;FAfoaUzwlZ0Ye_IfkVs0SLG36i2#$RT|9%6Rwcwh+Std<<``EXVT(ra0 z9-^RTF=$o$pG2r~Zm+I^a35%e9%Wz1$nwH2>x0YhRy5(qufC4XhdNGqY5`e#l5{MM zy=mXOXByFR;Ou2pvfjsjY$+nP)G+*t%UV$-!vWn#s<@`RXojA0s)}z6f$5lpXc#v znue4m>>7BYA1+`!?OPt=15wFP9otaA1qmP6{C0Ac_?WmofnKF1>GP8Z**@atQ6KFP zmeu;oQ{?2nsNI9Vs6ms<7CZu^hYB71zpH27L>|1s4Pz%I4a^*5H+SK46LMM15xBrjA-eZ z`oG$WZzP$lLP)jxGJyk|Hm*1R~`6Wd0`C1gic6_UNQ1CwG z>t6I_#LMJa-XLb3VF@MxadVFr$Z^cxIR?>~A0{{c>Q-r_Cnyi{w~ z*S3h<>6RbprdQ^1mZBn2Qp_vITSw-)y36?*0uCgD0}*Y7j-*ZX67N-qx=C>`;ikY9 zlRlJ*1~YS%rer6@)Zij2&}b5|lLug6;UQqDE&bg}v}&HWohn)h%+DaX1Hb2?kE%s=#wnZY#+N>Rh&hdQV3r}?0szBl|x0@hiM`2cS z@gU8>&hB5`x?IkGx|g}$rW1d@Y6;oGRH1Xu23O7wg0(ABI3ZNA3M*f1{gM$g6ED-h z*eZ(8K)nlnJ*hCc7vXdvPy%Mp8^uRj0*L@2n@?p0}|~mwu(NWU*%p!YtK#0B?4Dez9HQJrbIvWr@$b7=sg2 zKo>YUXr-&n8c07Bc~iRZM=Wus1$R1?Z%F7isGS-u*$$0{E(a?K92_?7m~5qA_FC0w z`mZgMpm`c@_JBXJnI*GhNW%F~pV9He+;N{V#(k{Hn_j|i{jDeX?u9ygR#^P;rgkJ1 zmzJ{EeYBWP1Y$&+n>80bS2cCZE6*gxyPZ#E#Xevx^i5V*RBFC?@E8F>af{yY!hq%WN^H>EkNEQ_C-odk4*?9vViY3gKeM+!D55X#~H5H zh2BDxGYuQiwy%vf?)*BGg0UK3IXq77DvroxzkTuP-S~rzZ1TC45*1@m);n;jEgSe7 z^r5+FIRC$t2-unV+SLP~nPo?v%KqeDvlfZgP|%luBmLm`nb%N{^w5c(dI(!`3mVtrb7GrC1{~<67_V32E%3_z*Wj56g z5F(Vo-GW-AdgnN4+cONaUonlxpYPf)8EBgxd0NZp^9w_%BJcjydqI z&I5{G*5Q?oWB;;Tmkd4c11+ARO97?zKz01)74DpTCu6y*e~y|rWfg5sHv* z*unSvX2G&K<#s^A*w=|lEjzlFeO(}|4{E0GmpBg))VU*DYMi1FyNH}M<%*s-r+PYx zi&KXeCk_8}h^+Y&Z$9%MtFkB=Lp(F!usO4}QfjcRrJLcaMR329)E2^bmAJRkl#ngd zOW?t;qfvL@sikHAD=SVR$a_mpo5a1#d}h`^I2DK)M>&dB?-^*3`*lh%3c(R$Hs4s; z^Y>j|n`Uy-FTb9&TVLvY!%^Q9k2<+k4xW#ws((DQYFJoVO^aycRS%arsGG_-1kqY% zAx6ZyU#0N_htt}hltVq7Onj=&r$>!1On}5+mh`{>wu7SmX=hCyKPy3+Ut^Jv-*`IdDm@S@BR1hDvhFCtqS@z;c?ghSht;5loBV zxCm)Feb4{i$9CqBtk|TbkP<3frdK!*w|k8p*=yi9)Q8KV7iaO-WP#FNY05N z|6ae{Wu=OWm?J&moli=T_2u1}l^)Kgd)WjdYtBHWW-3s@#sC)U&>Xv!`738u1ne3N~17R(@2_JhgF zN>Eakqd7<*Y?XUcV*?cc(_{Pmw4t)7O~yT-d5<~#DmSeESG3>A8(ylqyu_vwy(ET# zwK!7pQR?{xV=q=V&jUT2pp6?zCzv05W%~|iyR_|1CLW)Jo4~bp<5_?AM(xs)9F1lqaU>W5kqgS54$kWE`{hh{1~DJ1G^RzJMY3a8f$eqXau zi1_1FVleo=K*~oyIjR=WtZm}gHZ6#g`qymPDwYqhUrd*njP5Xe7VB<#Nsg%ssajm& zC_-G86n5PYuDFX9d;-K60a3P-`aKC(xRUoFaf{9x&_|=q)DwH^LHgvIjUFa0a_FqG zw6+F&HXP|7YPZ!3{lq98VdOd_8YX91rC!eS@5*^A;C{HNNRbAj1*|I|{VRcGBepZ< zvmNk)*}CqYuNT~}vhZJBn)f(6|CgGeZTj)tPTcWKHGu(NLm20?%ZCDzemjL5|7?he z^GRI9RXDPa9aK~2 zv9K8G#f39~0~`*F zeM&duCUlg@L62>Ky>8)ngjc(@gO?31n;y-PawiOq-F7z8q<3n@n)Sc66iISx^<)?X z<%O}1+Br3CqI|+AuILR@pomhynbE@-)`JKBs~eJVuPvD(LzOR3 z(0{=ebvQtc?xgEH@NG{m?q;h_MWwD-rEU!BtXy_6PD4=V9_6NzuEa%m2?2Rm4&OEa z*6n7BR;TEu4F~57fwmLwoSsco&(NvHx^F0a`+d_-^;>G>x7n zTtJ&rwtq&1ryY*%e*O9M*)m6sej}+rpXqWI6$bV4qJBl8ywqKbjYmKh4W)csVc41r z9UJX&y+>s+uYKZrlF2U86|!@L;OdJ1_D`%@Mi(NZv%MkWoF@g3Ox`J7(!QSNVY9H$y!TsjIdbWmBw3ZZW^J||;J~-B`s62>wArAsXzeM+1io_mK06qasZ&Q0i*_C%tug@80S{T>P4&7~$ zRcZ(UoI%-v*1%4e$&Qv(-MPeR#wsgU%#5(IAs{uJS5=<{VZ`u~tO(aTd=FD5g~+Tq)gzue?WPMTj{uQqvmW7{uz-PI-Yk&gJZ@ zQ$#!G8dbeJ>kV-aqQf27S{WU{SOU-WX4x@NggK5`D@0Hd$2|k7O5*6S-yy^S3d}O# zq%O%3f?!z~;kJUMc18>S&V>A6zz7MEA&>lb!70zVV;JONt_rFVcO0Of{R+I*)1HBKlOSTp+VE| z=}}6!b z1j7tR{i+p?T2SK)A5Rs?EmQ?-pnFyJb-`v`0WjgZ5D$yMTYkiu_K&CuP3Sm52uM6RxZh<=(*PLg$y~b39hO-VJP;-NLxlX?Lk0E!5IgZ%RmC-F=EDaPQ@6kF3 z|3CgH^b2?@Dqr|l9!O$qy#g>ZT77jInyY|+0R|;;*I?d8v$Sz-P0r#W8=`?7L)#+dNFJtn_P48B1I*gRz$X&YD`en* zfBW6n*JZH{V9MBXiMiEkSiEYP&@Y3P&*~hEXjm2L6z5a=!nTTvM847MAFf_&QfyCJ zO;w6>hwg;6P}Afc=wWu>7rzZ@?J8HTWs9}@V1b^0FC!ZN!X#!wl{tbUoQRQQnzMdn z2fw%tUv@h_2P!O0{dNmV#ojfm-Gv#{i@3&b2|vV<^9R#mLa``u;0F^P2HTiJkaMyY z@KLwETe@C{RMw7F5X&)AnXa&1LiDqER$|^{`~WI{mQL?byFkw=5;Y=rvG;KnaOTsfjY z60j^3cm$sImq#tdyOC~j=mY!ge087ja4h z-YpJxL_>93OFB+lk$E0z5$)cG$JuDc?x0k*zV>F$hPP6STNyTmrk`a0)^l z+Z6cmv``?^I)T*KCl<|RF^5m-SUH#Q7soho1|Q9OdK3w;lI^gBnF2Gp*(WvO*dP(UJTvcGK!m4SW< zG#YQ|*j<%{-gkWU%@ILszlC@wyeuXuua^U9*;U`H3zt*K ziXL4Sv!i^@c#^}8iIvu$Rm?u4Ik5JzWSwocTBI>>1?77NNZg0)5j7+bcY{DV<36EI zqQvzk7c7?9%s6bEfqYjEM?4YdKSB~Rl@oj#JAql&AvvzF$J!ekj5JXKjyip@X^_5)d_7=( z8qkzC3D*(U6pFE^8J6YGEkt_hUP0jwAaxIZ4{h{ok`LFPyS8QBm_#b7k29MJ)FKC+ z-2vL(Lk^s|fkt9>wS`cp3-Pyy&-z+E5?_AEGvmXrTUl2HK%5~-O!^96`}2QUJ8lB)vDEcqc|31h zt4jp~V%l!q%*e$B*{xC0vpC$t!6|F7jM`=i27D!1+!5C+8^;0(#2Zf{Wc?zvlqt*I zw@_sqG|HEzIB?spv`9MOJI9W2OjK_%p`G_5Z;uOL>m`;&UWRn+^*k&+#_RGX7`Psd_nPH`*g+wTODG%F>-31x!O1kQ1#K7=T2w6RkJ!uX7*Q&p7Ol z$Q0vh@@!!vKQPz}4G#yyrq)-h2azGKbB;RuPMV0B)#y*Be?2h1qI?CyW~V8)xpT{{ zSCgv}lF81ff_3R_G?wvSlPN$$3nc~vISGIp#N<(X|0{YPK!p~4+Q#1w=9ybiv(cC1 zPi5A`a$18=1uD9dn2?+@Az!e|C_~VIBGM+Prgkf-!S8Ad^00%o-q8Tssp6TD@p)fI zJs@6;pw(;ADe8uu-a5k+kcjiE9YB>39-uuMb=8acD4i^ngIj)+3dx2 zG9V$5_Na1-*-YLcEv=dA#|mw(_b#aqK6FS^Y*3Di7d;JFU{!33q5(prH0lI2h{ z{FhZ7K0wb&G1dI>KzUuB`uQlMUe*`$nL=1QUQO3{cp{22uf9x~sI$SdHZdogW*#G-{GS$Nag&TKUK3f7 zA(VvK5Mvq#@aZl6tNq}EOW1?jIhl^+u@l7Lf5FzZ^iaUVoqG<7N932vm9}1k*T&JZ z8>i_f*2B37C&J#-^%-*WWv3^x{io!O6l*Vt)volP78T;@F-1z5*H<~x4O8S>$v&{X zla>%9HG)7cfV6x>>(rz=IyLj8Av11$2w=k=QZBq_e%mr%HjDn+}{4*}aN+ zkpImK$2X8)@0N?MsOBMpO8FrvQ z5u5{gR?Sx#bZG0~T&FKl-FgkF=P>1W#uxCB3Fs~l&}O}Y*HeY_AuJE*2FtkAG~j9P zb^-rfN0qH0lMNlV7OKbNFhig-S4sJ=&i=eU96iiozph$(WI%0w7QRnFPWa#u7S#8e z6lX?$&60sBpAxfE8gZ}Ra+D!S9n|F(NmARo{Yiw%Fi9ZdNenEjiqr{FgCBn&Hy#c* znLW@tvvYeDO7RH~bw7h;V*FHq^f4h?pp=Z3Z@yG!N#C+-V*Rgo{TF1lxHky6qLIBK zrKvwlyQqW^2zd?(BC)IguFQ_gDQLpa8;(?R!%~uS#kwdtO-8#8Y$Ap|87E7u8AJnU zrfy&?2ceaMOAbZ;r#Q{yVg}h#fy#mlkz0r(#!2#GMl_@g3)Tq9QAW4zM!MM3SZa7A z_P-BXM~E4AknN^HkXypkkJ(cnhgWqyhg#=g&dccdlF|n41VA%Qr`iHrAqKUw;fa!C zq-+&+bRaCo#+A*Rh~Aa|JD1rc7?g$<8^oU>x0BZ7s&})Ga+s$*NLzd<2YOUQJT*cY z*~Af&E2f?IxXv6p&{0h?jj)w;;#>n3YIAYA(Dq6*&fIdO{9+s7o`>pey{}Uk;@!}L zr(C}kz4S@|DZSyDLo)JrXjZH=Ud*ldNv5Otp1^ULDHC&7)+|Xf9hB8#?UcO19Diy1 z5?(H-jBv;Y&@kjM3D<&x?nd9D|9}|DxBb=Ua+)hV=q7ZMN{Q@2Y_UBCVlZL&+hW<5@-6>cbf2qIPQ=gCYy%-wRl|E9W8%*s@2(P(D>?xA{_z4ost?XVf2X7}!bX@c{7<`VujY9>|x_EU3gGJzQW4<1Vc&U>zhZpOaOIPDB zgU0Bky@JUu+hPrI0q4<$s{bJhqd#B32QJK43tgdG?czbC52`D{>$gig?8I$vI;js) zV6N~Jt&XO6(Dvnyf{LRPC_2&xIA#Z2AHTOW*y#A(*HY@N*EU?PT<0IKh->ICw$7XZ zl9=P!9iHAqIKOvhPJ*QqY;&@MQ};CULCFDQw*A^jj9!#slZ!bAO>SEf7C&rz%wFI z{nA7_+S}5fH5swnTN|?3DK8WUB|bVK6Z~Vj1DXac%+#KyTMeMIPwdQG*St_iaL_x< zAq)&k*OgssPABSMCvCDhG{T@lqL?Fh4+(3EhS35AqE?$M{48O2f1wXc%7w2&2#lWpRKBx%L&SUQu!7bQ$!*N(N-0 z<#Oz@NwG)-ml@EJ!iNA04KXI(sS4DO5h2&?`}va~$fAEx3{3(yhHa^v(#iypqz-zh z;gi$r@;;pO)nG_+(ek=8ru1`1@im|Teg?H=DZ3su6m4~{*Oai%@h&)F^&o3L6m?(45`pE*G|?jgkg|m%5!YXtjZxa6=6gGq$}cp<$-A z;9H{Qhc;K!y6qL73-=ED)d}lGNObOA@COk*rx84iwnenjhaNae#csSrfy2`kmOs7MF)G+oUh&(9I=n&_!2@9Cw&v zh1Y4X(-OXCPYWJ#5c05b+Mb>Y0k_%TzsMh7u3sR(C-v@(SpeEdu>O zA+2#@wXWn)c)Fnuh*HH2=J;SYywmhPSqts0mWV>0M6&jy!05coR0Kn3k+MZ4UXadt z0V6b&uA&suo7v49z$xf26W1)}dZ~i;pNs@q5Z^{5X45A6&x3?|5)CuTVG)65E0{Zc zj%8jxxJXR($TV>q)p5@VG11SuZjnY*Oy{hOfCi_}P#n_i%wDK=W`wa(xd+r?Ty9!W zkRtsCycv%iXO2<5B~f};voFDD0dMZv zO>W?9G0#yygu+`%4X6mFBgYL)tGX8Pl%(|@DVHUwoNQjcVRe8Xb$*n7ic^_7nv@VuRB3J`7F#B zm|?N`C$|LF5nNoy3#8DYB=Hw*7+^(Y4n3UF3OiHmci~ zBpNCn&Q;-3?bsz@x>huQWT#*VsdH{X6B!lp)B$}4>5|_D=b+`DBL!ZQGj6lqlqQOK zd-I|eOp|y23O04>!@`nVH|n|X;jH8%|G}EQf)s;Dy`ZHoJ=SScS(By7c$k9st26@Z znDGWTaP^Aw%FWp%(I$ebEL*C%b}5+t;qhRw7QpZA+zIR)?gQ0gZWZ3Ah8aj2J+eWM z0Rvhe&N_M=(%>R8F0qg1MNuOAxZn#?006D^@T2-+vkOz`(7iVUM{Be;mP7pi0;P5F z(KdTJZ9}bAEg1^-JbPmntCqGf-25X#!X~l1pe`2H z3Yaa{cDn9$;~E4PFJXTj1+Q=Gm(gMtVEqVBC*FZ(a%YPzYAWEu9#gQb(gw*a1q2K( z=$j--0r;UxS9?dSu9KPVXBU}fcyP9k+!16MK_EUrOQu_wlhIsQ)L>V(IE))z1Evaw zkLjo|{{gjY^90Nx2tDixR{ICe83pd;-X9vIC#;rew`N%~;V-0{#In_BoxtHclHb?n z`2FhfJy{<=t0g-de5{`H##lJx5>=YcD+2%K6nv1BT?*z&zd(ad_N~jr}`;B`o~|zUvsTrtU(+ zY!l&AN}gbvyNeglt|~T0S{_M3sDg^IhLkV^?#(B~yWk7_Q0K=fpSNn{B>ksVupCmq z`p&p0xb-v}GKV$GPQ9;7t+HlhPf??zR{7Chj=XzTHgK-}<`^o*>^in$y3x*sAk``v z#LOWaC$TOxluqZft|d>9wl@_SrGZAG@>y1+?jH(~2GHsqg#4w~a3xnPH=97SghhR# z8d#LWlC7N@aanqAaXXW1n+$g?y`?+WA=4WHu4$--YBW$Z4=Q6{^DNA#*kjG9UJrDl!Ic#Ah zVqNV<3MH-!;?F$wg7^ou9`8}N6>!*+IQntl*+!N~0K&I*YRxhVpYE`1eLskffgT3< z^%N4yh*?=aIiw|>ST(hll#Y9jvei1RHp$jw37#i@lavqZIVyIK(GJkYGs9qAoksvC z)F%Qh{r4mlk^Kv~$qaPjrB(n6dF~hd`Dll9#eaC83 zc?TbEgbT}+1KC<*d`z7Dkg&n2@_=&Sh(Y4*1?OJ_6xdk@ZwUTTA%Eh;Fh8~P^JGy0 zIj1afFV%liXsqpbilZR+Kv5ikOIUU$Va z=(I9Nv<*Ml#*k@&>;A3FQE(2M>zGYtA1@gaPMHu^W}TJ$nxRQFI`k++TOn|(#fQsC zj$2O@-+aJPvUXXxm1kw-S6g}PapUly@iwOMth^oZ!sVV3#Le~-MW7aocM!r;@i3L? z38|~7y^6-~`>?sG0^dMxF?9#IsE$CZ&bmz>+;cM-PKFb1Q`lP_ExsMEDUGF9E6AX3%b{mQvJcI`2^dQT%2X&P+oH z0O3;YjN_>hS1JPpv!WU)ztee$PZXA1rZL1A@f@u8WB!hU#^gO!ObR>TQTY6_AOV?^ zyG8b(&X^6Q;$|%BdYsX2@%&*r*D6yUN5HQsC2C;20e|OJ4QDbAQ4n!XDYG|$2q0N-VQu3U)1FZyQT#Jt66~@vfTWJS`S-}f$#J(D zS$F0+ey-${1Ub32H~n=Sn1>M`?6Oe5TYpG3vF@?Y`Z}Nuu5JF_b5U2&=Aa?Qr5tje z_XmQm*>Nj-0Y0Kt(LYyb&PoLSbmBl`^ZU$^Z51{fpr-;GlD`4BdS_2hOBs0>+{rEG zTA#$woflDnh#7(#vA|`9NSmhFEE|f+5e{vt57Sk3^yDYBGcFCvS<&xB7A#?T%dagM zdhTFQJ^~ue<@&ZO2$-zlOGPH_a_Rkt>X93n94|t3u`;~S#W8gMcJ?~6$m?|02$!tC zot13k6@n&Br?s9^mbzWyZtp*5iWoIXxN7SFL4H)I)) ztQ&>V9H31YgQ{69u18?%dX-IL9<6`VNCX7oF3r6F}SAw4v0$S$bWXHv$n|< zW34mC0OO@#vvcE=A(@Z`fNbVNV17t&QUPJPDzawj`Vc?kw-I`q0hmpke{0xl-saf1 zwEOQJ$cMhNJsn4YHrjBAq@Y}nR62n2zsi3T*z^~QbgMV{)agavQAMo7(imfHaO{bh zoxTpg^1;%bqNsnnN!FiLq|2pnUQDWlmM;;(p_v zjlCNXXgqIvisr5LSO{V=?bvN0{bD*bVJgP@v{#gNrge%Z($=de-{h+GQTJd^Z9}WO zz4Y6AzELoZ8YF1{e?EiQV-i{^>qjCt+Nl*E+qr!6Bx8Z@X&r*{{7oai%$%ilUFZ@r z)*e?;-zFXV`(AOauVIE6tcSq^r$eIf`i30j%CgW2`D~?_^mlETk~Hc)u%`!EPk$vg zB$i@Avo}IU>Qc`_K_MC%aHF~pqtfvL<-WS0^rbUfiKfmZeiBuYF?m-ZQD6eXr89y; zegKG~?SUuOL7;h`$;^m!)tAR~a;^`slq}1RdX>K@62Jo#FFZ(%1hl4Iud>K8*3@dJ zFr41`&nqLnT=(|{Jn9+8-rK7kB`50ePv%*pue;twhYf5#>EE2dlI-m^mIma0;`w|{ z9}u;xO{~Z6#}Ad0uc;E*P9wD1mq>iMt#TeX!_3ZPyY`GOGu4(9RSbVGna``6F~FVr zs}+Z=X@>XV1ZubR7#P)~A3Pi(J$DfvMZXCt4I0(D&t%@x|KZM}Ja zX&_R|9cmZjI@hKqp*L1dJE_g(f`eNGEzJ01xOd|$zkX;|8QkfU%)a3C%NwP{2$-!Z zkjr;88}%hZju~j>y3=Xh6Axt5owDwO(2|bI-5mzw%17F7`zd|e0Eo1rE?vo9O=jHz z{mY8*nsTjhWOOi7SPNbDRG-m+{woWrSKbtSuiP_=_4o&lG1iIj;+Aj-fGSdfRyn=G;Er%rXY<4u?b|+=y<9Kd$aT`el9}a#s-g1uO2fRsPU>qJsp9sj7+dHK{m1s_=v0Q;b}K1z2J& zYS!J%_7qpW8xkexo+H3O^BLuwMytqMgoG%3IuJm5((7=pz=MnR4HE>buwgpliDzH2 zxoqMnTB^$J+XYB)?cyvhtTK`7==L_@?+Txvu|>x^nQsd|jpQi3cneL^+E{lq{!g(l z(Z0dZcJ-^%)i9lmacel$?!(fS_np)MRm!nRO|D(6G*S+22*6IgLalNAh|e@h{@~!s z8Co(I`n>CK=JwvgiCdvQqMbn(qXY-QvYb1=&aeky;Dg%V*obH$sy{zgFT6A;dCqi; z!>Tzeqd}B(Vkp^rK1!NPxZu05wKePbA#960}&iK>skyRxqCp5ZDM0} zlNDmR)lK}=UW}t=ep$>+z9rCYj2&#&D&fH~n_TG_v@J~l328tL6Tp^;@z5o1 zCxVn$2yGENq-pfX#xN9jytA&Db)O{&tX6HpI-|JL%7`6b1;g%R7QEVC;Y;iPdsVFz z)MIhX=^KBr@F;k=svX#Ey>G3E?Nd|ta%<*sG-8-`96&Yh_Am-`2Nw(7MR!#7|C1r4 zk!)3=h{Z6OYMtggO8Qx~g? zjU=e!;5saXGQ#n)0%q$=>d%$T6pp}-&nf_VH=QwauAdb4zjeBq5z#LNWl2~eAw~>p zIL+^x!Ha$|2m%1IY^Fx1Ug11aGSf(Vf%3acoO=jbX54KBEuOX{!wDs~?`dR|H?S{- z>dr63v;NC6zh~Rr+QuxgSHm$LYo;gH3AifOd3ja>M#)r@B`)H{aD$5vNQ&aZ<#*{1 z`m8dBtBo0@fp6kN@`hoj@2^_UyA#I40iAXmhaKc=YU^zGcI!-eolx%Y9;J-Nf4!1h zGm(r33>^Y5UVDMQ-bww!{dmk^AZ)#k`SK<0I(1r%@3K-Rt6HX=i zA(=%Gv()2BF+cdLY14>LJp$mgjr*PpiXwOoVVN8na7 zzmSH`h^dp^kA=R4$0aR{ZP3fhQ<(;_{kz^Tid`hbKtLm1&4fhio4ml@CPmgD2f@VF z?UyP4B__?C`oXpvV=l;OmF$QXGja&VuH8p@yG$iFSp>dT!bN7ZgS1(t7t^DfYqM3A z-XUbaD!StmHciq@r?YYCRn{9_*YzBwM5_5S1;xnwbh=g9pK9(>2{zZTe*T)4wNAXh z`EUI4%Zo5$bo=abD{T!pOdKh?VudXT&rV-ZrrS7WMjZi6S{eYND5vx>9^W=mua;%b2`+XO)PDXCWmrp*MN zkB{dlY(c6EtW3=CGys8MQnouci&MSLg}k=A!P0o9R7v9gu=H)Jcl+&2S`Sx1XA#}` z57;P)?pje>5m@k^)tfyXNn=Wh>TXSJJMwePwglML$Rr~(z z3C5D0STsJa zv~7gTdLqX^9_<6|WH^_{)5p5L1ggB|9s0!;hoL3b30us*g}g@+Q=!7?<*t)*q9+T#er88q`QoMt;=#P>nv zx#^QTh88`3jVc|p1-O4$9w@W-;ce(Bud^hlo_XB{#XKLhDl z{&AWpjqan%tFe z2SiYQeRxF+R5?Dw6e|w)bTY0WC;urK3UUqYtw;Ix%JgNIRRtdVd5 z*kNzz__GUF1V4j&sHPG)0tM8@k2h~O=0f75wPp6+!>E)ws_x}wIP$r6XlK`*mOzg# zeMhc7XA7m}W;Xj%H~18_$^Oh_5877o-bx+s3~Ex` z3=?jhcIS)_wtBckt-7lb8p7ae7Qt+XUFswU7<>Qi2aUf}%i%+=8R!G?6|bG{=*Yka zXh~)|aTdL~-5{eO0`RRlOlmS%B<_Z zJU?$c;K+d)qt}~G|M;JG%dBLZ-aG;OtEDhFX4KZ>AkAMSXrn@zB5->4k65Y3ebltRtU18VqR+5;{#&!*RLiNtpd=tJl z3j*r5!`MBPXakfCGrG&>{>g*z-@A@M>}%fXy4|>9{K*r5tan_Y%eiBla+y?`FP}%T zY^ztgl7#MBjf7~#$I}(D4y@zXO|Pt#O#0z{H*+js@7%R1MM^Ld zLxMIOHSsG;6rWlF{gzDHF7U-MW+C}kkA(O^i?O~s;;o~--S?-!A{Sz#NtDifK!9^v z_2hGdyU}tDX=#!SPDz_1$kdiiCEHCmGiOMS5p?*l`gsK&9s^XRh!+S&f_rn{VgsVs^UjRp*bxAcBDy`!%9=rCAKzo zU_Xgh>Q}FK(HB3bvG?u7t@xabj@)<1DRxke8@u6nvSgC7vN|vXb2uxXPBjbB^#Op4 zsvc5;MFW2JQWcD|bAnS@=``IN*vjO-K({043ZD*#<9{p0R2tjr0sXB>MOUNJzo5X; z3!7P6+2C#{3&EGJKOzq41sT-N5Jd5wR)LDrq?7ISASfNKd|i)DD8*la+6tN_*=Vv8 z8{z^ey^8PN^J2;_IW7mumEBI8umw&jKH6Xp$nJ4nb#O!H^Qz}gHBykiLt@dI0;=S$ zVxSHrWC{7)0=!Bv~m`oBj$Y7Jn@=%HDSGLjJ8cYQq*G1t9ZO;iO+Z~@^H=NZE;-oGMK!@k*4mL!m%nv!sK)h;!#h-cIu&UC;EWNY z5Np&UXIJJ3l0kvYS2Qup3!+l4%OKe8TK-oCvg0G)DNyC&d%P>9$m>gv%dcN(~}f&sZpr6XqAzL-|q{ z+G7hqrL>4q1+9cfy{SerSKsI3)vuW2T5#PI$y3SxE7KxTb!B9g0;BZQV=ztNqqt8@ zP!?RCokyq;{&{i0S6J<2fgU}7c&d)|hivUMI3vj9Yy{v&xji`h|0JhVpk>DzXXQ!& zN-PVNqgCQ9C@#k)?PMrT9vySd}%&}EvGZEuTK3p)tMYH+b#%01$nw-Tk-V< zN@6s}lGwJ)PM{7vy_zJho%DBByh2&kiRYkdJTFa-0J@<>PYb%)wCHUA5`8E51FYX< zImJ?~Uo$7Fk5hQ(#-o}ez4R*5TXAG1@Yyvuc?uL-7>QeLK)z7Nc-k_dTI2=rsVfQ! z>NGC-vnalYr2}TFG}}%wa#$q*SOHWTs0N> z?AanMvY)xhEF4c6CFs1e8h&bCG1eX5MC?GJvaCJD<`J{QrXJgO@i=B!MXN6KXcg}= z#XSKEGbz8jgLg4rdz3=H<{W>5!v|MuY`J7d@KRiPM~uMF)>np~KMELs=+ApdG7v!=T8`^YG2@7=gC`)$0I}3$P}hJ&q?{eh z?o)Hw-hG(3m-(hhbWSMu&BhF(=JQ$Cw!pz7w10xMVJrp*s&VrWK`Ld;U=CwZq-?w~ z;1L}BEzZ_IY70D#KaRsBJS|0f{;YuP$H0c_B$3F3+ktyG@oTwtsBvW@ZJ3jMVqppM z0Rx3wyJ`E}RHM|lgiz=FySXV7vs8F71@y@i^>~aT*oYIDwOhP!wkRQ?$-~;2L0Sn2 z$WnZhCMm=`e+(f6yGZ`#+rjm-UjS>yv_Dah>eng{Ne znVa*CvjB^CmaHEO5eYPuMQJmW)_X&9!o<4^>nAI01f+%v_JIp?-+E5~?VsHD2+Opy zIYhZU0gj|Z?~*y-e~mZOT78h)+ySLW3oWrMO=FC`?5Y5M-NwIv;BfhsCqKiC9FBsd znvRFBZjOi0GY<~zLrKUTS5cBb=)cHnL*~HZ3HaAradn?5MXh<^R(plXYY0}>maF?w z$KCL>yAdZdo+TvrZ~ZhS;)}dMNq?OisAyK63q&Sh{#hQJzlab*BC=>#=gX;B0{pVb zuKdP??q#RnAn@Liu|-1b^m)h;DmzNgIQ5XnsZ|XgQnBzWu3*SxB5(|N+0&A7mv;M( zzJXKZ1z|9!cq2R>=fIdQsXyl2B#UC4KikE!_43&-#@yi7IHQU8v#O9a-T*o^*284Y zOMjdEj@nQ#?;fI~=9W)AR(xDv_xCm8gT_1icczU;05fL|$ z^J?(a%EQWGE>37<%tX)C;UCt|Mem{+9`HVa(jb{i3uyIKScqYiXPc{I-;$M(13(Ws z)6L3E@FW-*K&)a<>LaR-tXl>tVD`;@jYbmA~Htyh zGaZdDX~=+*C>BQE@X-w<8$z}wg^$s+3VM4Q8ls*sZzj6l{F^;x(Wn->X~M8ikcmyy z-a-&>oTgoz(GDBP;DDUazBxJD-Zz)ei*^%mnOO}vji7D?jaO-?kZ+(nBL$h|dBq7< zY~4Bh9|ZM`iz|QVE^jkt4021&nlx@!TLC;a!tvToNUUE{t5(yv?W}%91s@>LZqL;T zH~BPH>aMUzX>(6Lf(Z*{9kGjikaFT#o3sNggv4M9Cm!nY?!@WBVY7zIWpLYg4wNq?cdw!G9I(gzOWydS zU~mcI^oFZIFUN$BNzn|jo+OKj01~K4+>7?;eImYL*DC~;7l#*Fyt?!xMHMx1T9*UJqD$)QXnuQ9%Pn~M7 z;uk#g+Y2k**w=38ZsKEc((R}xz@(*S-A(UAaJ|>OL;aG2N+bXCGfKyD=cg87J4^va zwf}pa@%yoB<7C3=hl)2t5?Y)LJKT$k@~l3D8lUQ+1M`e?bS8QISg0(kmxs?IYjBA_ zA_DPo=xn$i+omDK{ri_Bp6TCv0nZg_J2GXy$9*j7{EpODEl`4RfToae_ri($(+USN z%LUI`=I{L8MhWF|FXS$)C=Md?_4{8HIbteoy?B^^h>>yI(|J9pbF7|Awru96g?cL{@C%ap9A! z2uvy%*`JumCeoXhlK!ByF-eB(@?N%wWc(M+ACU?^El1L~st6{&C6q*nKTcCl0Et5~ zO}vesvLlDwi^7~(bfv+Ge@V1G<-U8mx9e6ijLWAivaPxclv|7j3d%}Imd=l;fN|nI z&FeP_j4m%D0yx)W`uJFlxfNX(3RN`rlKcHdo38Cl_}s@;)#qQ3TZK=z7#*kRIB1X`~l4^~+eg>V{_8x#?}fg>o0W6R-7n&Q>1XDvXeyG|tb13Apn zpigY7wF%t+4AmeYSIeGMN$ii~NQj}dli3~jV-Ip5?NoU+acLe`F}BuM5aJi_yL)X5 z$dzF0Y%6ql8VDQl!I$l%&TOC<#ZNgmcKYT~|6#M6F&OYjTwi8i>3I}?s%s2g8Az=d z=xZrbNOW}RS}U8^-F87O1qnm$$r^82$N3AU`N$;FX; z=aym6e)_RkOHb?wOfiNufnBz``y_i1c^77<7y$qGOT ze9+H1`uTzI=4Kae$@$_JdH1!tMw8~9N3JEk(LFB5Yd_4_R^(`*Nc=XQG$deiWeBGs z>c?stZ{KAi+VG0QJqFZJ96~OfNFra2#ANx#vcxmM2?=nh-tYYUnb^?>*S=1^_Hy~P zO8xP>aR;0`sE98)O&)}UU_&|+@Yqm(pSB6C2sb^tY@jB%A}}H{EBQTa;!!Zs9iO~2 zL0t0d_H(gpYcQOUqKRtiz}AZWFGADcqQU8%vZ9_!t0O=~>)gk6}xS04JzlrK(dxS-OoSxMx$h))LNZRu+pfh!j4#lWd6tOW7GvJTVq}N+p_6l`sg&<$Q0We4@Dfm^QPH+k#_^T3K3&1l`7ASsSXT)W=;A?>hXdC9QK$%gE4x1(!E#H@_vs-p@`e-Gj3PM^uR0qhYWenZN=tV-O{i3H?2 z<7cFxQN2Fjx@5=95x0=2So`7*X|{+T8X$W>={PBIOVm$6;H(NbqRg_A5ap)`S~fA^ z93-?Tv&Hn5vxYo=z^fukgOQdU&SdAo(1B#sNYQcGm=kut!~2(n!On0wJ*aJzs+*Whv?oJ{kQ zm9oQpJpHhd!(0+1=b4gW|CEju5kxs*-#HqG^uKJlUa1-)$8ul&RrivK-ZcAak?iX}(dcQptTxnXBtO*3MN~6B87Q8O5Bw%C1Xw@=37E${E=*?TBd0iB$??VrkWqnJN6ZR`xMvB0K@BOZm0^<&6atyK*;{_y&>~$Nt5(+5iVw7NHUyz zzq%#x6gf#wS($ArWWnY^{mWwoM%Izco*E~B;apAd97KazHLVr^!jiEEG#u5U@>Q*v zMqV=)?pGM-Y?|S%D8uHAlv1vFHc4v&kWtF;fSy2+vl#wbYo5zQT?J1@A&j|Es3tm4 zsE&6(b)JQkWv~1Gw3z>J^oV4zuAK+Q0--GvEqq;S3`mnOmoeuxCb^PIg>-C7PF(oFYD>(mTE_5xyL|I7p2shq<`>vQAR1(?n*6T z!BTsP23OV#_TzH8E8hsX4(N(f82BZM#}cQWW6raR0j3On@`c^BK|y>$Z(Ahv;}ByE z2)6T1yZ2DKuvyW#CrCbT0xS#=whCrT2p7BmU_a);yr(!2sDNR&c=mw1m3qTcV_s zBr{tAlU75uDNvH=;KFvi^t%@Q2jC%cvV<^pwazX(g+M4lCs%Ri^%+AVn!|Bp-gWxB zz)G~CdISd#96|D0ET238XE`pQr@zvr_Cu!x(br8;SD}GVvLA_`;zoJp0Kd*5E=cD` zi3r6^u+z-hCvCP7Fr2g{$O+^LujR z-Iw&CTLULNtt`pYN3h4MM%1=pv%0U|2Er*(8SbZ(FYhd&1%dd78=`{H$Q5K1?(TzO z_}J`=x-W87A8&kOmaukyI~kJNXD7_fp7*41PbU)l{l)yGxF9CS`dJ)XrUbW^Ox5Ic z^JxmtOgXpR%p1@14?+JnmSRn3hg%WI9grYL4U+9d_t$sda-=Y#Y2`-`OH752x;Kh= z!*hj+TYW9VBZJXgnS16M-~*%Cgt;9=`%39fxO1Icr)s;@Vo4(>G^wse>%!!T&@e8t z&FbX2OjeUdNUhYWywL~ix4v7bbcV$Ycb#{E@Yb4oO2_#kl=QAB+GSuZP+zS%7p8>I zxrc5}rQqlR2v>l*f=i!DM6ro*7f_?+n2cKd9aAl{G14FV5x}j^VYih5{$;MpY5y-? znkEn~TJ&nEbka8Me2_%qOFf+Z!K{QgS1qQo)BwX#2!NIZI{dUPg6mI}uq@qQENgp9 zU%{7^|L6VC$&#|qkG9{vB6~t1pPeoX)0Zb%7q@Z`2N?#i{}hwNW$Il&kf&!$GwZtM z48X;D&g5MG(LlB|p=6#sAtcX`^c9jMg&7WXg&X&d^gPhu-?{EZ!xIhCyNpoN)=p}T zPPdxSC(qZI*=;gCth>>h$cr*jP;vlVowaB9av{Fg5!$}!>rR=wOTuyT#?fNw+-~%> zlpfwrQlh#XhBr+hPNEj&Yn;0f$RaEsJsi;UQOBW*z|uqL3*8av>ZOh^r?aYCHt~*F z1!xcgZE_Shg7LtZNmm5GBi9||oreX%DT}fv-A<)HfX0VGOJ*|5XfsXCF1OCBIs{Hv zDMxNSVdz`m{nO3eE3d`%U}5PVo0jW zxJ`Gk-&H7zS7Ql8y*M<{*?jxq`@IJwsc?&aN3Ovm`nCDEoEPFJxl*S;#m)MT?3HAx zVNZ3@99^Pc@IPFgT{MkjA*|`XhNDQO{goR|fZ%WIKAa(I1BuM0$U`2N($y&*EJ76`NvXoY z1(71L5_+2v1aJ0mc9fCX1=6R5Ar@sx-Tc=8L{bQ0s>+-N_4x$5k7xQblP{QY)x46E zEzDRurrqC5V|aPY@Q|-*qk#lNhh?*=JYqcho}1xxG!NW~xK6UJwDQUw_cQW=>$Nkh z8E8z^FWJSn;@qS(CwY_IKJqrsWYuF(Nt0rn*oyEg`hH;cv4SJ`@V<3-G8c%_+vF}$ zwpsA-d|jFdH}@AqSf%e-|0ag(ijx70cdtb@gCb<}32|hFemw`QNu~wjgbmInZ{;*L8$JOspGTyUfh$IpOA( z-}EwSXA>sU({g|}7%vv)ewA)!dkjl3^v-}#UBTxOCLrY9w7Ci-^Tj47332YspGxYc zbq#1Nkf!^p{kf&#K%F9@5Y7#2r;%e&?bb8PNh$GF-PF4Mj)eAR=`h_&JryaKwJ5J8 z4!o~FC-e@=0H1!80}%7H1OM4Jv?lhIbTLIYM{>YqSKbgxR%egW-yRenJh|JT%`x1MiZ zM!QmP^faVq4hF4MZ&f7~V}7*;Mnd_IJ!^;w$Rm|z;=PVmw+eM=4$x;^vNveqcK`>f zRJh?kiTSzCi8*~lga4#l@hBzaf+;R8bHPe!VWzXtTbH&^$&&~+HLCEV(BV| zjs&^}^iYLMbtDOmh?0U5+y)g$O{H&|J}-PV=!oloTzzFTBuebyrZQ!#v^Gfi9yV;$ zkNe}2M$Nhhaf3H8WehZ7wtFDQ;oGM@lj* zTX(ne_M(XwI*NOLFGs3xk#}o))$a|ltEmJQuGqjpDC`Z#jjWw70m{DB70?ghPst${ z&1|g>M{0gK8TZgbIEpNKYwUjl-tTiPS%trDI zeu0k^6-myqsO_E=WkF|Xo_*V4F@g~E*M8P$xT(*BQ4B!it^0`I+Y-d^!z_2 zJ3SB?M>FGFKzD%hw6rECH99j~$n2&vAi)w=7qa)cN>)7s8>cXl6%OSjRbxNd$D-;+ za-BeX*4K{~n)=IKx-%gBYw3-!s$T+bR6!w4rDH>M*P+xg?W00mtC(QM<;YKu>Er z8U?GvzwTTe$ni7H{*WK>^N@uL7FsI~>xy8n4;#&@TgYwRV9l`);9Jos+HCteH4Y)^ z$*-5WA7Ch@Q3aYA`wQ)`UMa0Rtx3g5&;~+9R$?X0%!jyocr?SKT~`bjt-p2mwo{f+ zJSd`ZPEQ%BJk2MBATWg4$BFS#V#4i#m?vMhtnG5J)FE5A=oA#{yhMnru18#R`?~j9>5i7xs zlD>L5NdY+dn6ScrOBmRzMs_+x!f&m&(m{V+&y4UgSsV^$Wi_^l>!Sv1sX}yvK?dzP&t?l*up}H$7^Mh_l&#VdjM zxdHR{^J#vLwE>rME|lJ?=%G=rP=D70$21zr2)JLRCv^i&_y8pHw3$iO-?-B{+^1fR zZk0Bc=kN41Mg5+0O=^H8V9?MxaUF&QJjC_&`)D6KY@O*7dyU9rsl#WJhc!&=P4P-Y z4~~SW1=$jv*Y1{&@Fs)AvHp8F+bJ)fSr<8vcP1c5r zfjuxtL`7uyVb8U~g29tzv@cH!4ik&p8Aki)JJ!)YY)cs)psrF)?xEIi1m)KgAP13z zXlOt@&f4PKOFe@dSq*!cMXT9SZk(zw6Cdw-45A1TN{D+7uHC4iEtM_%hjn#yl zOe<~cd{wpRh7kgxGK1h(q}tI^2q%lj(FXVXw3a9WXspvC)Or({@jF_)83_vF!GI>R zEZafQcC+^j2}8m)6xRWFG~53E&b=Y)Nrp7wguGw%>24Y^ZI<$$0L?1$sbQm{Nq+{U zRz0k_p(6`bq1cZ%OktMz=yxpd5ZtSdObrLRPc#M75azspi$CdZ8j;@{Z$V3kkU=a2 zmrYsuzg`t&D)thr2LN~_cV8(q7MmvaPCY@>G*xb#adM?%$z4>AnoL>mrSC2)+v80g zfIUH$>K)yU2QQe^=Des?h`S3TS}Wq@lJ1ck3s5J-Dp_T+kDu6j-*73vLgY+mUt0ts zJ~~j}y$7I#eoxiYRO8o@_$L~bN|J{Y+n69+WmW@EgXJ<~Q!*Q>;>rJgpL`ah^+D_5 zoa)=g6oryP4=WPW^CtG#vNQDTsbFD&M$4E#G$cF7@kt-q7f5)VAGh!aF#

LZ$lb z{k#N^Rrm3dYa9o_d|V?=>yp4R2){|{EKx!sFp|KG({zm^vt)W__WY%N?%OWHeC5>) z;IkG%PstKeFw>MXof8}&%Po$4Zohf{<5LDgYx$^|=Q|iDw@T>kgDBCrkRF5n=th|~ z-bD~rf7rB2=avvkCZUSJ?Rm`3R^SJZzb4}w(*}D-V1R)ukgnd2J+lJt+`&dtA=#_X zZw2q)EhAnus6P|%g43p&B`|BM>5ykD>ZpBx(W`kdNAwax%g!*7o6+$^gxBzk!vi^N z_y89I%SbkLLBo*(I1X(uZU6g7UVnx9zc309#P(b&Fei6ls zeDon@Z61U>CU)rjr9};R9+v|=D5cn?3y(>7FE_(+^ihMWRWNe;fVm`K_jZ`#e*-#8 z1stX2r8U%y6hxnh0DTkgf28kPmMp;vitxvG1{|cXShxYaY%}qSy`yNba=WCzBZu#& zQ}1(>YMT!{afjr$8BHfE)T;vl-eUz(Y1)v>IAXCXlC^I3h!srU%1$vtXw-8Vd9dJa z_WDOR;aVe#hHp0A^Zl&jAPo@I>h z>Y~E}QxS_okD3AykSgj+I3EZGqIErjNlkyLxA6_sgW$h_dkz=;Hmdo`bK=gY&4YII zhqn6UGCqkmg<%ID!NzF4$2sGuyaWsD+>zY4<7QJO`!-b17HiFCGcWUJ&BQ1s;a@W1 ztj$U;n$+Nf(uAdN;qa(5&upB2WHZGJXF~)ksbfNpe!EPl(ft@~Bb!%Fp5x&O$sS zk4`m0aS_aD@+B~b~<^tw$CLOX7 zoS=`{9Wa;hTfi&41J3CrLWg`zLUWo>Zx5|$ujd_)$4rX_6Y(HphAhE%rf8N5fu4%~`wtdT8l|Zg~_h1r=jPr6@3l>#K$14c=Ut1`KzOMBtLnRe48j zJcce?j6O*wJKkecvU>OIbS#NLBH*mjhlp_UCYB5pC`3L}QHQsaO6MM1L|7Oko7(90 zZ3p7lP?DHhdrobaP+{U9TIV;EpC%tocE0BLgAU4*updJVxE8^r6!uMnV0O+`~ zY0X_=wq+yN97#>5qCA$3sm2RE@oF;&SGD=3tL#3#hS~|t%i(xkEo-4C zIH@b2skrl^Qf03E;Wp>ZjtSIzUZXb#ZqS~-saJ?hRuKeXxIyb$`G1YX@F5nys!!I7% z{9z!gQ1RcUhV%?)l1`^U|Er)~-Cs6FkwsjTQ0rL+v?lEI<1gSY=Hw~j^MIj#a9 z^~j7Yxx_hwb@%N>7Ia_-khLBnE;0LSEPB_i6gnoyEVb|}96xU)bnx#YGPH|3k|#8T zWEP&_6f8HqDQQO zGIg`9y{?Ss?aMlH+bTu?1jiWqFIRoBk?dxTreMo+mJk@_7$%Cv#NN6erjcQb*cH@u$3(a{v*wx#_dis(nfzIr7uS7?F%fG>?wB|GL)1K5)=bOU8%{6}BoQ2x^#YX& zOuYlPDO-qy)gp7yfG6ZgS*HJ;=OIKCcH2^f5Y>sN1qnMcwv;h9>h(<+lS38D+R*J% zrShf6)}a`f$0Mkhevetp(wc}L*zEnr-#(Yp}3tGImgZ^RvND5%tyJN>bHqM zTk1d-jmM)oGV9)Dvr7%2`=j7?jRpZLxHS5NaHN{JVK3Bm7kF!jDna_nc^_!Hit7M~$|u;f6;ztOkw@h&y5@!v za@UZZNRQadg&)j&;1&EWNaS1p;I!@jfShnulI)y^*S7gYDvIyBcg7e59B=yB9^+q6 z(5Fq2@_B32A@1}Iw0Rp6bG@*M1ATE3a&bb1jJTP7RYe-(PaUVzAnkcx885n;x<6uv z4HO?nHJ;U8smVt96RjnSRyLqo9|xf(m=wUa_2&D+URmVpqT;D%f$jB>i7c*Q}szogrih)j z)K%J&?nlyoL_9FyPFR=rH*P*qRY0;tDWDtSd?@}9xh_M1LPMY0B~_%>jTl_&VWsdw zO_hkbAE+FZc!M9UB|-IvM52Kodl?O#{k~e~F#X;W9ZW_m^X~1QZ3oTn=^(#0YVa~A zx?cUg4-)zd(+iy*mp&pD8O11!l`YKI&AE9$<8PdzcNGEKz9Wm(U#9u$?a&F*Ki%)t zkvF+DoaT)4gz}nr!lFhcMOH}rXaG>}tYY0joMMid3d(aT<`gfwX%q#M4X#K3kII}J z>)aW|&z}6W8BaI&D$NDLvj?|26j-s7_zDktxv=M2Jt|QZwZStn9Sz3k;L^paLOU|% zydHFZ*tWXUPt?%ZD_ag!dI(gdwOK?>7u{bZR9HSX)a<+c?`=Ody= zd|y%RAhn9urAc4B2yi8;sfvoPBc6Y&aJ5~i$FkEX4qc8f&!E?GDRw&X?bq{D6h5$` zI24cy#+4Ks&R!63HvI_7F8V@;Je5NCb9iW-WnN}CSavW85Zw5To$mXSB+z2wUyhcksq$%VtwOyfc&57LZ!eEt!mR3dh9|)K}!d%hq1lokb=&t(2 zvWEos)| z$t!PkI-0*!Yc18FuxMcmYQfpK@k zi(3Q3(2+z+XD6=n_KveV*0@fyyq;k`M+OBfJ<1#Vm1mv6Eq2sjpzO z$5xit(xb4#r3e9~VqeKGSASmUIsr$PRi)eIj(>@3h35D9OL)c%#lcRJ(vEtH4&T(JR5QeRZh@N9@@9Xn${vtThv_(S9G<-;HHeS zgEvP-i}}VJ@p>$p&QG=A|om=}PFZmd4&FDVy$i$}!|ZPnxcupz(vsB+GAFyR&iQ6NaQrGo zu{~kIwk!buKLEgjZmFuMA*_`0c&0K{dp@9u=*WM(c7*RKI3y%n7b?SSA3vZyQE1ak z^s3(z&_JN_rVO)q7h^c4EZCNrcQV8;S4QgfaEI#5`u6DO6n#QRD8(@Y?vav)KCB}v zrHhd{4l_i*Jsb>zdvVyB46$6UOdtqn*Xo{G}@XnekV{G5{VVq}K#M>x)k=KRAoT zEJf;z1r2;=-rENdo6&*sn7at(`4?NDs5bHb1F`Z3E5xR%Bb zI01JG-|mxT-f-ir7DQ68)8)l4nKQf}@IE=y0$aa#1dKjDSRadh^^VHA43EaSJBAyR z?8>rYkJ0+w*2@^mkslB$T{UKvJjB)vzyqv#fonqisnzv#>@$THR>?A+Gi(?|1u;^> zT0%v`in-{EMJe_%J5Znm-Vg&`7I^RK!qp_HAcRp|QZLbR_5C$+Y;A+A6f}+jzRXe~wUNx7}FE5t(-aA=uGBtncRHAcc#vUV0O7?A-+*?@GR`q{pp}zqJ3) z5NbG3O2PDJNddB**H%NFodHP*CpS2(0J`k(_uauHaW;lozpYZt>OXdnf{#j!t!Fj# zp4bzRm^^ZnkVEu1zE>$~{rwql__x_)vq?hWP~B9F$n0O)*%UrEvU-QM0>*HPF2Mpnd?t znQUJLdqQd3o3gnRT6Bo?d42FxYbymMsF)=&7{LUHUI0|yOvhM~Q zp%_B-Efj~U)E}NVduun0()(d=#7wH-1zAOSL;!645kF+;6Vfe?)KO>H#t5M-pzntlOS{5F zl23qE!}4jy?Z97%Gly=k|J-Ti3wddMZd^=cb>Fp`%gbZlbDHJ|2OtFH%fGB~PxzPQ zb4@0rIehJ=poCUsg-U-&;IvkuXQ=VrOzqWF4q16|a3@y(O<~&DhGNB>CXEC_oWhzN z;)(~tX6SX@WKNKb^bR@VCTH6w2~`nsfR>8ys<6n;@1r#txLo6JbIrGg;+zC0vRk-X zLJDGamUs+YmOMC>DvLv&nk+Z)9?}Nkdp0X_PF%qjycLJL++`O&Ya3GEnWSk%2KL)n z&;*FF!2sQtNnQL91-bY%W37_dBa~IEyeFokAFE4xBQLOTyq-FEr%$HzXX}^_7?Ok+E z{sFVtdciyK+@ib(b0~r6;mRuwZ7%=k6LudEczf}({2y$p#xMgEy56rh5nZVCCG%+e z5v+OT>WfaUfPTx2Ex$5FxGOp(4`1Hs;p}c8XC0;jU{CcY`5PWDg z97rRi)b^-9ZJK!;Zcfc(uLUGpr552Ca}0X(58zEcqXuQw?zBV=rcSK+@$92u<$U$~ zaGBpPr_5RsK70I=pW)wKe6wpTEFd}{MZ+mX%vz(TISm~Vx-KrP6F$&ep#V^Hf&uZt z7!4D8eLdu=Cese@n3{_{PwuC@Tp>40!L*mgYFBCn$q#(7=EVfm56px6aW@9-_&eXRA?;HOW-{k+JT|R zREIcC7Xx6_=Kh@gI+pvPAznPvYKlKXzGhMlF5y?_h_^inI=zQ`Y1zeJ0r8?y<_-zf z8P;Jw=6ZckFj{V0u%pZ~khYNy8n0vqzz%f}jIfkbG)NF( zZfXLfjvFSjurGXvOpAOj?>Uh=jqWWAqx{MHW%MHuK_&8lCCsyl!%O=!`Ev|4wb{23gD@Y}!*l|B zpz|Ya7}S?02>Jfa9{Q&(F_twqAAjkLOGI`dEQjpFmH}VY(a^e`&XZ04TNrAtlPMlS zxxoO=oW%K>=b`!wUUyj?A&k_bbfN4~w&XQKKm89H8wsj=sAZS<+R7;9qT$yZXL5#fD0jSA@a& z2TNL4H;-2`+wKRr54SfWM`o zm|l18L+ATXz(v}U>H^g{y`SQUH5df}8|}&0V7!b*L%9sF8)5nwvMcNZ(F5}o=6VB7 zM~D5xFexOW#9DVmNTd)8&hAw!{9$H5O%}(~l6%ya0P+y`4<#fciZ?&M>uTC8ho!^n zlC6xWWU|!Qtn|wYPqpWn=>Y{~pC>1W8S7S4lHt|W{xcjiXtZ|9W@2W`bC zT9U^W#V}vqRB7q6R z!lZVos^c0Dizx1E_IPN95a^K-hT444_Hw8aP~|pC{BIH%nNy|bXlvwaf*d_i2Tj@i zaycOd%T^2N#q%t#tZ+gwhj7U zZP3^Ho5hGD(YVs*3leQu_6e|_5n!0qf=R=0S#ms>8p0N`;u&zzXGZK9xm3|tHqft| z+(f`gVYs6`MDEbCQ$H*EDVxsZ5qfu!RLU_h5`NOOPfM~#{c*zwa+vDQ<5cRI*#rBX z7Y|FE(p~UE@x3Sz{+FgahTJFRt~(NZN@|k@7-x+qH94T|*n*R9hho4cFqq&%Ealvh z6oiy|P_;;(#uH64!W0D$-T-~%27*`W(6fa&buYaPe{R*nvpO4M-u!fAh9Hx}Y4$S1 zbK;80Ja!qa1f|3laCLhJ!hO`}Cj7@25TH<_f$lINAvhGAN9s1(0M4T&rTzyoClLc#ZET=;YsM}%wKv<@7mGJ! zZR|^oum~w`m?-hrU#1yUO?N>fyy1nkfH^MQaNIcD>sVR7PMT7zZ!2q*iU^ym!_pZr z>N>abUb!Mdhjl4 z)MJX1C_8ri?*MjjFcKf@vDT@N8`~}8uH`LHHJgQ5Y8C1znpdUhOK}n(o}%0lE+%-V zRBTLXFJ+Q!NImY+ydlJVhS##%($msQyUzAfLwQ2OZk(?rD2a=2?J&{i6PtzDk=B*s zNO4J8LI#t;v$J6il!)NAoHqOyYSI7w-r)S!!HPSxZu$do*jRQ)#LUoF+R|)+BTj*L zPgX?_+a0}f!ipcBqWBN%RsrNs!o-NFW;0j3y7!Zmfs}@At=7RF)8@0OiSshobC#Tu zb`Q$1a!G#AAm+_53*g!-Ew}YP&#WZ#KOy-_7K9ZAa1%Nfucr-LH3D@=kpfEtDo+{g z^@ZX;GH~?r6k3Jwv+N{=o)q5XPyag1JfJmaY`Y{vEp(PKcDXy9J!W!Iu5w#zob;r` zf_LbE>vI#9zWE5(i7aAPZR1h8&O2T1tJkBOisPA0to2}<>W1Mj;=KOevAJ-ihO~90 zVL-k)&MFCMeLL6cIp`0H=ID(Mi&cWYY>3J+B{-PgHu!p3mFPk3@rIw5@-35_X$8@2 zJA)5_*#EL+4~r@l8>=IaeR|1kgzOE6o8{D4pBAVg%HLYACDGU{Qw6@%@f=G;uS8+a zYiB#n`Tmd77X#99Bv(*{(|p5-H4eAG_(R=qb*APxYd<}&W8xL=(up)WSyH1Mv?%eG zqeL1_+j|7@hNO=(MZ{ngs>@9?uY}5T4LvqChcB-1r2 zuGvb2#;yX`m0fUL*0HoZXLJ4r)} zpq4Y^S_WqAxDEJXyav7mEBPEyZck4yQ)63Z%HUnBDx;F+luQv|3~an@&cje7lgZ@o zn7U#y^WB{de3asLg_}amHF6beou&Zj8-Bw@77z7iL0ofm7F0(SNL6W)d#gwP8FKsgdtF~wIGC~{ zUmKs2wCO_heHvVDEw;x_<(A^%Ywr5-df4wiHXH82McQ73WR)BIc+DM~zlcK{Rs>z? z<$fe_t9r3IC`%V+6ttOJ$df2$MS6B=XlNxvz0hMT%#aCRnqN5WoyEl8>r@XtVVzHm zVNsUzt$*tB4c)0METpVPm{P<>yHo@U;V^p%Xg_xnuIv)EaPq33_UX#lu z&J>iHp9!`L+9%PRT}e!y-XyY;Dl=_B^;CGodOz7bfR3^wq_2fWF6vDI{vGfWzv0~m zy3ys`<%7RN43_Ow`9U8&gx;P!ShL6XDh)>V?_di&M;*lhAoxe!ZZFk3fQTrwRuk74 z$e5_<+?rN#aUY<#o4!by8`mv5M-Du!iQ-$)^9Fr>pK}`dll}Rr`ca51Z~LmU`*(W3 z4cPxiu{P#WHezSf^Dzj-e+v91#Iyc~2y?et4X%bip#4!Bt%F+*#T*LHF$Pz*$1;B` zBm9>$0IMWCRh-NZR#D;SHGXbVN}y8^+6Ocu*(b!g34dpuJX+%qwNEQmEqvckPmMJB z)YrREUHi(@1b*&CzgjGS%R2{05sWQ`*)>w{>jxu&JabjKnIUP-J?4_}c-1(h<*S^hLam{ejP{{R z2_?bwmTa$W67VV5q~Q)E07$B-fnvlIod?0L2)1kUV|-!HDk`@&J^EGtlob)2K76t? zPvau8eGA}ERz|WYHU(s@VBDGPrea*kWFk>!I%E!{qi5fjtXk9$r~MT8~tV0EfC-cZPNvWkuNLcfrP$e1U*B5Phs}7FeEhQCX*Jk9!m_rtPT% zy9p!mURd?z6LceWDB875#y$#O?$#y#9UsEe`jeSNs;Qx;Jmk#+2PY<-sTc2*Y*ZtL zf!FOel4zS+>K4IQl_AKMP|a2#1kPvwVM|;rrdi~u!`o@}Nj#LY7oMG) zK;6@%QoEh=yza*vNG2+pYku~Us0^4rl^DCEv@7<7F%vT8eX1lyt8bXYy))+|MbXeY z#|M+mc4((~@V>I9z~NW>=g)QjPbA-T%MMeD)Ut{tyEi=8h09JI}<3|$(A(h*UEmyUZMr6_$mpb{rknb zJ-waOB8uC+n5=z#Ni_3;B<=#~{T_9r0h|EXe_L`|`bc6sR7|mQz(I{wae(?9RYazG zd(X?xK|wsGZo(5CelM+<16Y6}3(@tMhIKw8?y*)V@-@m;Q+7DnpS-W{+w$OH$D5zs z#GJ+|UPJUUen%1w0%ng0Lka}751Og~U&t!nQhvF^C{_t?j zoJ&OIN+A<9?W+ZecO!~{-f0o2T{K>xio~K1>DMn4u_taJaGye#t9R+=)Z?4El}S-6 z5^I1oSWtjm*hu1m5%v@IVHM7Ma_X>Du&|5Ou*DZw{Kb^UIE;V(8MEmBXlSBW8Y%3J zU$R$z+Wj26G~({*@a*<~^rFfePYEH?m9zo~?R3WOdl8mTL**37hTk;hMZE~-AcTau zN2^VRyAAo_PJ?v(Tp8Ly>0~mBwdBeVXXVVYFY%0C8Mk96RC+|D+<5qmg{F1EhZz@> znPpr6;TqtHU6Ye9I>TDTyuJ+q)xc*3bgh2cy;O&X;F@)*#VD0@ezEPEck=GSIT~V@Zo6cWt+$IG0@7 z^*s}wc*pe}F9q?$?fJsYZG=2*u`Keo>!8ewUYFQh?m&TdB*5Ua07HluYM`S>;x90< zE^UkHs};#OOfYv}P+4)4=VCmzSkk{?_-6#wa}Pv2qIAeNg0eKDDf3m*hF(EPhSzKx z4?E~J%Rm!b(UdZtJ0X*6>kU8o6dFRS*0Lb$nU_16N`d)?{4{9j84i8yn+(hZu{z=X zM%Iu6s<*Ffp%3f4Ses#HWE;KJ>YA6E2*k*<7_Tk27urheD&Xm}L;}t@TGRe?NUdKX7U*wdr+g zX*cM$VO5L-i}l2X0v1!E{1SHqat;XiewKD~E^}7??lt=HM4bO<>17aKXVX zSZ02hUu*uuBKpM$aXHaP^Ynf=0g~=1F}8T;N*W6BQV!2bYIXCUzG?rJx1Fj0KCcjxsJ^}%#E_J=6HO9IX@8c7O{K5pcwVDuG)Wt znAPT8C&o0ws2T34Ms-n{$ckVN;Y$1OBRTO)XDoRy_t6ej!!Y?~Q&Z8pkMe6|9mFsZ z?gN-UKZ%L;hIp*Q_Vk26e!4~GV*n20!2HsUnKnwbyQy98Gl;#xDM79^LnL3)Y>nPl z+CK^c1g((e1#gUsB~0R2zz$F!N1PgXBh^jBkD}R9$nc0(=-w*6c5Q_ZoP3cY^uV!a zL>K>)ka$<00PWOJC4#~zW;+dTD=*I^z8R4l8gCvYV|`~BzW%D^Ez7Pe5Byu*8J5VrOy(Jz7Hh+;c8%L(Rn=`AXcUCkEG*7kgE%^AGsgwu zRkNF@nmVch5xyw3=Kry3HNh)-TIr%-44A=FKPXm&Sccf6c z)N*VVJ&>T+Bc=3AN6C)yi(+P}j{2guX=?MbihO_b{`y)T$@9chp?EPgU0Lu7SsVrt z)QCDsAO3t4tl!I=&Swpa@JDZnHALhX2f*S|K-)g&y;N5 zlBy*C+p}rLMl^c!jwYL%iz{1{1*I}Lm!$Z>oZ~F+&mhuJNk9h6gDaQVyFeCiRoih> z4li0Ew5h%1M^ji7Yb9nA*8-C?F)YGSVR~vs%3HlH8OQL!CA<>GX|>yUSaxFa1}P)C zve83J|Adg$QX~x7o2en=W>hlB3#_;upl2U<)xoo6I1fQtoJ1A$9k0iIU}u0}jtoi& zC$o;D&!jPFkrmrp87Gre4*O^X_>Z&AIs ze}^JlU$=E4oJaVhn_j@iDnS;EXz?+Mfezws#bV%fagP)wBzA-%%8Yb}B@bvo z!ihnt*oO4@cviLz!OINUnAFNCPT`u_xU2PVLEW!f@Ta3eJvP?rOQ?Om*k(iybF9uN zv3{JL#CBVs!<_?cH?NuGHfR(0^}svaog)ZYI1$Z87D#8ePZDr&Qh z|Mtvkd`e=lMU~zOivb;qT$DdqzPuO`1T$TDZWee(%VwCdYZG_959S5x4VaZFb2@#6 z&vTi-kNdvwd75HUN~e1l;|u&tHC(L`B%R-TJow8;b*r^USPEiCOYI^9gsze;WtaGT zkt?^i^pb(Yw!V0re(qfAF%&&v+hG|!WWjyOM+#vx3MD0oIK> z*`=X6g0>gV9_W78Y5qFSLQDt2d|XI=PR$3k^wp!nlpf3MwqA+fZqN@R7tUkigRi>w z&?-uWrDBAEEbAjHt;uy+3J_Fqa1{nt^9ZG}G%uXIW))GmF6`mZ&i^w;^zIR>xx-kK zwWGtk0BQ;36s`uouifVdPr1Xele(GFuK?IwfU}fGxyhX!uTvMz%Wtc0Z1}mF9V;q2 zfD2dxOnVW1nQ`6ig$j)<<>kt|a?MS$X2w~1dWwd;Z+@gm?y-f#4^`e>Xi8{U25x%7 z{k%R)rd7x0c7zoCy_)}hFyQs3hL5;2f^rQ|rO1GL8kgV{eq+#Wes@3epd3ibin!^{ ze2FNDNjCC?Z;3SF<|EuHqBzrn;ZtGaMccQi$nc0LesVxAtc*&Lh8fXJV}ZhM4vUXi zFf#81c9Cz7#C?LA+BUW}8*w*DBd%T+T$a@@gmn4_B&L$Spd;SMujL-Fu7@C`2)v_5 z*BKXslE~x*yI@M`N{A>fyOj#!-{!@~TY^PMoKZ$c9(#8AW#{c~YutFPH!X=0bT~ zOkl?6LmIbdk@nf>z&pM{`l;3K!1FybBd`3W!58PkI2OFOJyTzegfRi(U^qN4T-?8z zO0_^c(ON?SY`{Xt8oOn0;qLA~SA}St{J@KbGNx-d97Ac@S88%d^|w)kjT14KGVY$) z);sP@f5Eo}hgSNh#whyUYW6MXbm7G9nqsU#*VF#c%GusywyYPkB4U84!kRKru_wIM zcoSRs+}%iluf&k=Uqx}s=*nVWl4d2yADbssL$uBSZj)YfZ<q*_6K+bM zQL?-}o(;6KnW;>Drqo|4^mjmup8F?lZUJHagl#YGT@MuH#IAR-xqBk3Em$G!u!lnzgOAtWHpsZXA zX)DpQCH}F<`t9QE`$@Xhlj@rGy<1a&{&Ekr@Z5L8k)ABxZ|MF#pXBD8)Gp@Pe#+`Q zu@Etss47Y#Jy?hF&kl7!2sXse+zk^}0D)!6un3=8A?OA2!`%b4Rnq7`4r32nT6j0M zxj2&v>+1<_el#v&>3#-9hZ$SvUT8QUTzTawWwiGMsS3aFKRU)p(gm@$?}JJEDij-z zm1CS<{H$iAN2J+RCgZLV7+?&8jobv}4VQIrfmL^Bp(ckk{`hvRw&FVVuz0EA3GuP_q z(>e|W9AJW7C`RLb?4Y0K=r1*5;Fh&7`*g|3tL#GjB#?2nI2wzJ0rSyD?~Z)+Ra#P& zD#tm4K68QzPKgN)1FjV@i4T;NtSwUQ;Q?VCkbQ)lup}rS0&u|n46}?D3er#90HlE@ zRoECiGQ=35Q}kNafPuMEHi>+jm=!jGG3}{e_Rs?Y%~k`@Cef$`jm=r5YDbmyh*N!H zr#o8{@K%j=uRjt=R>;lq2|pRW2(U%$b6b=evAyY?ontDqCWb$l`@YIa-wkFCym7y% zHD`A1Nm-HgJp8HybB{te-QJmed)*)IFn8UnzrAqO8l`yliONS zMzuKN0zrYM45{H(SA~a&v(MB!f8bDHb6UW#zp)Ma%MZGFfukgXb$aw3)khd!=Nf)N z>W8DwrXFlgJbfU{f~)D|@OIRttGb4QI6+lvq5`ZC*y!m0Qs_p)K6M>sk1B^Wh5zCB zHfEH1l?H!E>Da?0@$N)==N4>;17jPOUqs<$zv0kaFsd9`4(;`w zj~I!yyLJ8Djh!u3Sh?<*k9q4aY=Sa*H?s^zft;TdNK`bb^fSw)tFj+Z9zmpvd`+q)S}v8@%kr2i)(ErGJ~%|C$V|Xmitn?| z)Jt27XHu_U)*K4p2X+FhVk%1wfjb9ubiz19kSd@cF_Q|frYbj+QHr>ykKQwQDvwd1 zw7G!1Uqz?ZJkRZ;^F3x{SNa%29^2*uw;x@(0!j05HRs6S4}Zq@M!%O&5LsY= z?hmC&vGPxVd_9h#^fVGZ=5@I zXZ^5wh2(Q6n#(a5dQhNR6r>{Eob-_sQo4ddfC9O`?ON>Y4HF1-i?LZ~I5ysi@V0v> z!5&LtvG_#*bZi3lfYc*sS8>0QV~ak72u;DzDI}idy6Gr&o;q z1?Q*AqeQ!tUAgjXy9g6s2LXqyt+2)#8vlse8R@SrQr@VkK|^ z(^I!$?+f-NgE=8Kp9;gWI z<|tNG#;xVkUR}NQV7^px*+%5OPB*Oc);-mFUwv4G5U%U-<0mBL$+4{&zs$1to&UR? z?DMFLb{#2Cx2mQ$evSzMOO%h*54v5~%!f6t56`Wbsh_VH>rxXSDBSdVxJ^YQv(aL{ zRN5#d3@b>>t*yPdB20au=&K?vZ!qBG4YTl-{Y-^CtGTa)O3&ZWTfmiJfU?zme$=BQ zEno{k3|D@PzQN^&XR9^!YdT6thhHF2iau$l$tQ>_ff!i6n?Yv34=qxEQfrorDjm- z_6Z~-sRQuvl6GR0@o?3}Q7uGW2vEVePw9T#X9!&`) z$P`@R9gdGLhPI8_3W9lSs8M*?$K65xUaKV(S*x0@o6|5}#%LWgd?OsH0g@_0gq%v+~RP=|NNw13dLw3 z>A@t?pNh}NT#U7K?65bAAqg8$E%q`dNZx^^Rv+7*er`&;`PSUaH5V}R+k^#QMa%?a z6g#abNfq68h&rRvsES%3NMH1lecEPXgW&4vvvgSogNkYHJinU`pFZ*ay72405os7t zIAQCXPL7{_iU=Ojcchy_6baDq--yT|iQ#YY&*--+xQCo@8BLMUyj_%Sp^_}sR0Kqy zNWi7iR@bj=?dGJvzyLa01fy&{B4}y+|FR)_B`Dt5e2Qa?gL7)pS2b5d1ewSfajQTi z!({^%2}B9vZEjOT<=j5ap1|y?fpeu}g?p^$oXa|jGDnj;+py4~0t0i1r?R#5wd*-` z3^CYzpAyJ5c)IbH)mG|nJ55XIw+Pf8C}8Q=NlBm`<1DAFnZv)}-|U%(je6Q58W!>y zNCLn}tYdzhk7##x8IcvIL)#e`m8Du0r{XQB=y0WumaSCp*wGhD^eZC-9mfhxaBSul z$?tB>Z!Eg~|Fmpk=4a|@=5uh&7?>A#)6uP)XYsj4C3lm@^zNqYa$;S=S62U$=M-H% zMY3WriA~~==x!XoMuAy&|HiD{@zeW{1&f1nDCVM-R5|)bzKq>;F=)%D&ZGGjhXBK{ zs%F&WEPKM#@p5l0s(+xbu&~`5(ai^;`r&Wz3k`Z-Tnhd`uhA0AS@EzXD{w-Gi(x2( z@4f5%kB)%7Bp<{XFE|R_NEXUeWaQr9&KPz-S%H$EHs&z|dCVWgEAtX$<25*QV=D&` z_D9_l*rmrCJ_4AWwteI zT=D8;Z59PU0Di%b2isq`W9T|M{mG#IV%CSZ>k=71Y7P!eLtQ6<9XiNDa3ATTO+otG z{fwbpPFGd!Z9-I|6vMT`*-3WT$GHSgUe-_WCk=*Ok3&RsU?<&Cl#GByW5{(<Y6h`$kzv(8d_v|04yefar;-CY6x!~?E!cZlPG50wtL`LZYAfkTE} ztnSt*lMAXIsDQ`?WP*-A#xSl-t?}XQNLO|JzoTGO0;xEr;8yV4-|QLos~*(wc$10| zlp6U|*Ll!@n(^~!y-7rW>}ulD`SO~+VcOq@HQQ#9-tx@7HF|DWQ@{jS&v8k)ZxK%L zJFeSQi9PS;DKLp2gB#E(dY6<_pwB@uH#1yXYukefKYA<>-;n(muXPrmmWeoxBbV#v z;%=laP_W*p_iqV3AXBy)%oXMO(Ddky<|>B&d@S5+xAaDaoQz)7X#zHaEkst=yqO~; zdF4M41oil4+`AKPjB@Q}t zJ}-;>ihvbgKwuwj8_8uSg_$Cw4lhL`0k4oY76?3nPUSSz8HF*dQx}TxPE5_iI2u|c z(FXHbtO>-QO3VLOr#pze+R-vg6!esfFtU;HQh?4A`4fu<=lf}B^dpor z#{Bxt$Ap$s#V$>?8g@{sNBb!>$zghBS?>LTJrWfJ{hiTFf?h0qa@rhiJlv;lMmkr< zwb@g$(W{f~5uC+rMTY64k?O2N)EfA>J7IOtoT9?cS)dBT+H6M*s7iNv52SHl?B45l z(q0MUcs0BzPFi9D4#ClpYrrSG$+7-819&fD|I%psmFB_{{uaiax-DJRQ{JQghgjS# zB~uATf81h|_c3bLaA6o%0kb8awi}f|l6BBu9;uTBg>u@%-I2h9-zIXFA?3ukn%WbE;I_9@;_5qZ7l6SDNQ37?7W(%94ep3do zUQlahR`$hX6i^ppi{G|G?n~xTH?3X#0pzy(HvkQirh#0#vXzg>JLuG02H76P&p9mL zupvf|Wt&oqZGZS8PE&cP$d^`bunZ%&dXl7R3qPb=C5bdbqb?Qg`qZ}e(IrCq?=gkQ zF=gJGDBL7WQox`V&fy%CM1KNj-CeA%u^b3#SWaw|SKQ)4+SOIL!?`L;?blVm@04s> zL$A$XPiQrnTy;UZ%nzmLT#}zD9SF{M*C=Px2+4bs1R#L`*Bx6TemTRuQ_3 z{~%jRV+A97G}i5ZCed}iQw^feT?=_LTVQe?rVoZ9d3Yvt^Ai~xhVvpJsoM0_nBr_XSRFb!+zle!tt7}JfEFsAh>Ls^MvyuPO zyG>ovJp@z^{P`Iu_pkt!t$)x7b_#o7#aG8 zoH)#)Ko&=0M-Z=@nvF8lsml+DZf)r^86Q%21q3jUJmowKak>j1You~EDwJ7z!+zZSj zEO=(?+&~Ye1PlQ|51JATSqyeHmm=~)Eac52!XudP1jDGA!DpNL*<+Hc>6k*PRN2iO zU3kHp)XP`!$=?{$yZG>E{ydsQ^KxmkN(2=KkYBgNizqbxtg2;(xB`i)DB;2je4_L>hkYm$%p3_V{4FtffhKCEC(x+Uqk@g}7b#7is`{Xch^sSQ1lWfqPYA2VXqSc- ziH!ESP6sI&=au$P59#GoSt)7v9N6KMc?+pO8+FBTjp{ZfU7i!`48YHcqMrVJ1eO9} z)MqiFNz)`Cg0q!IV-DZj>L>D+z z$@EPkbB3Kq>uctk8)DwMHX;T!r+@(ev~;QpNU#{$_@U0REguylkPdaV)MGr0*5|F) zJ!TL1Lcbm_>%$n3kpr1NM@C{=tU8v_HbQvZ(e@>G2UpRUXE`85m!pN;hkK8VyP7vu z8TxZvBbt))#f!AYnIewb&HpfsRHw{8nEc)AM4dRrWjWel?>%QI)>*d{pEUKU@<}r1 zHECixSur`w)KT5In+HC%>)=lg$m}vwT=S+nQnQ&wCP)E0x zs5wOPTWNjEymzAD_=hO~sWV3AM0*cK0$%~081jTkMGv=GDr^hhnNk z3!?B$3qGP`3-XQQk;KsFVP0>k*pEU6mf3{RS^FYRm-AuEqZelNLV|K55nBlRuX=NC zXAL_6fyoLtvDtcXJS9~m=PYiJSSN<(ES2mh;uC_kVT~2~NqV9|^4jPwoHo1EURW91A9w? zxP85}ec_7<<=ILa^x(w*sR`L&Sa+#^U7UR>40vmuc}UM-=EohRFn5;0lm*2EH*t=v z;rY3b2)ToU5!*oBU`mB-aw4_l7r{35vhu!y9Rl1awxyl9cP|fC=7Qzy~S5 zPrXV3BJhy=gQYd(^LQLJ=4aT9NP>~WA8j+{euKs#D_%juE{!ccLz0I?Q&;U#E7pkF zY+j65#!Q7g~z?0Z{0tNf*r=N*vi2mB@pL9CYQw}*I?+?uhYnI*R;~yz01x& zwwpowvhhD8p)6AjpKsC;kMrI5X0sX!=V9xPlkd)@O?06PG$M3q#mdq8?S?3X(`q|x zs1We=iZkTijbSkqw(%8&tn;onv>M805sOq-$t%%NRU1w942+F$i5{{O254eAT^!$a zgh&hTHHt_64r^x{+;xz!%a`55!+OynTfMPb9CD1;Am=s|xE!R8R-GIF z{%kj>#otqeXPM{E)@&xzgv2P1i$$RQMy0OIwQ_=DC25UG0P`p&WP#2g4ns>*`COTm zy4GIL`7(I*@NI(TXeb_@5TSG0P>5|a{+XIE|7ul#5$h$f!Wx!I5pMgds6TBp?puk( z`JT#yLe>&8MC<61JDs7sDn2Kz<&p!}*}VokAq5q1lY(^VESSv3^HkBCNh5BKk#)k* zKtG_&M|dZ?XegCj1ze2w199JZ z=XWG0Wk_blb{#LO?fZEZs*_kx!^<$`@@4`O&4bsEtFUq4uPi3t(TkX zBzGNBdTameTiHuyYQH;)epDjZyr85uG6;Vk^PgzPV;}8sRug(Pp;PQFATzFh3h*8F z8!WTA0dhj-D{MO3aJ>461ulJp9EZtyl${Fp#BI2xZ(9wC#)I)O)>u;{4h_cimD}2f zI-t3zcg8xRW#exjg@_max>#Fi{#@lzdiC;tK?2NmrEP^~KbvKCx=-B^VOy;vdEeF_ zEc?&4Tz?AGZ45YR5v^D4gI;WuD7F7Jlm{TnAyWPZCc6K7U$73Jsxj3CNv#*UIm3M^ z=^i~q(sno!+GJr5Dl@Y|_}J-s&r*eg275@&`m>isOG&|8f|Q_e>!$1h6ex!+g-m_4 zv-!h!DbR`hk61*sy>E{GLe+uYj3npve=4>syE_+&_clNXfVe2(1^oSX>M#dWNWUd2 zR{Y!>h4vz1*umg;dx(Fuao+JkCT$Qq`;}?2fKftT7*sZ?ek8^m0!Hy>-%hDiS&G{G z)lAm4tl@{NhQ5tLxffqW5G6;XWJ}#Ol)+dd2n~O{Nr7ldElZ0t&4$0FSy(w?D8tp? z!RgV{-+H0fgSYKxk~->P#v}Lz!KUnNws^&4Uo1w{;^{(vx>C^rysijEoOJxB^gE^N zEiaIyoG-bs6foG>iL;IvS~G#!{XsSd9=5=IoPnFLOwct`*{Ky5G2VMqc`%}HMNt0A zU&nt#_=;FSXnUD`+hw9qxmff@C*)wJRlotR#9KwD#q^I6&#sU`aaOdapp)Olj*pxa zzID4?`uPK*!@jW&3nu2ehI`_`Wk6r2!)`K7;>~eSg7~*IXDA9MGm3lPZZ3$Fg%qKP z-g4VE6ya{hBIe79+2XgOyP`V~*A-6hOfFJ7^a~46t8OSXy7Wg>Hcyl96||1G>aYkb zdA7wPzi4zo7J=P?PqW zXa%iKUVc%qY~uuznXt%-={Q4%?v&v#NhJ>Y9sOM&Dd~|rnhkJXs6y1_Y^n}H#>CIX zW@!PcI2~h4dCdzml}5c<5Bs{|6;j9Rlu}H048$pBYNZKr98q0ZT!}IBaEnet2leZr zB^;89$!|%6$8`nYF@M~3Nh07c)FBzWM}3IUB(|gf!`8rwYo$hU<{2V4GPF8Vw2j4a z_L5so4TR8W4=d{9Qo{g{rD84$q^cO=7<%KEw7hW9S|GKBs3g2tWQWrIv48D}(Uq-L z!6M-1b{ap(x>~Rj^pH!#9<)xKPjdXp-(1{bPxF7@^L zl;7VuYz$Jg3qnn@R85i*V@|3uo=f_z^NJhUh|n8_`_--u5{RGO^NsY+Z%CDgHg_$e zqA%;^QoTj_KoV0NqX(IA`b|-i^zRn1ez}Tv_9Iwr?NLBY90wS)Mqb$w(`XH*XMyi4 zUn#P%d^9ay$T(p^VR~lH--l87Q%hn<_@QhoZH7LLZ|724_PqACZHN&s9P|9R;7=Mb zs>TZ(>X#*{n$C25Dat{pLd_lDV!JR!tLJWbGaxIfbAtH^JeaTa?Bs#vNHS70$z{`! z!m-~%WFsQK(}6zrA~)Hx`f~vI$85@1qMUIM=nF4A~6%La>DUpn2ta;Duk6&$*2%d;r-Fd|`^Wrtc0AXp5*ysCoo-loDmC>Vqe82t| zvXC}dUBw3OZd9SG03?O@;g%Bcz{Ghwocfb!iq~vED`t1}4!7uZ4Iu_XQe(@+;XCxn z*@SBOT3J4z)DAvsE`f8motW0lN4xL8g-i!%@yHDCqL|xFK7WiBd4YhD*4_V=+%kg# z34QNXCULMqz*wBB5u=o6cg09H+|=IAJm`4$Sh3Q&(OAyKa;%Xp?qq&_l%X+G^3yAT zozw|MGJwL`;<*QIV^j~CMQPCiR0SNYPV47J8>YrA;hw-9zW#chf3&iTnD<9h%-XN^I(GhWQh$A71{ zZB)M3a&9^mU8amR_AQcHG<9fUYLBE4Lz8$h7X}CN`yqlVKk=!Oi+Olf6_J5r88{Zi z3*9P$X=M;{fv6pIPE6&MZm&Q(+#A4OOK}1mMyb)ue4OSxyB3OPmHXhbh=Rrq zjwP)C2KbyyKh2DOe&giYu*cy17u(m_Wn%tcMQ_b{W_#k>ZN*jBfM9Vn1BEPZxJ!Jx zy+|Mrrad0+_OFLr^FMbuNiamLaU1}WiFe~qjyvB*X=lSEo=d@w1`{NoMUhzB8_OXQ znpeCa%T0dl8${jgJERPfhISL8Nace~-wwZ< zpGA3E40&r?-Nf-O8_M~6)0=_fQaaA3x&0T@aVCzw9jJhGY*OJi9ojXR!!0z?@Smw8 zbM7*AMddDLJ4qoQ^L`?uRsAU$k48vFzAh+OMPmNBy<bQ3T7I8CTGLw@bG|c9ZPObO^TVk`+!1 zB(oAz+~)T5^NJli=MEMQQsZ)S5_i0X*>acdIX@v1X%tQ2ztYo;9+5>_6y=@rEM1vwYuj+Vwo+ z)!(qx!g)vEUSzeCq=wH|B1Cs2;xff@%L&BJXvw}KfjoOe?FPF}k^fh5LwnD$Rl*+| zcPkjA;B{LautRZufw~~Wh-ahyZ@Cci$Ur8~={3jm8HPSR(I z^J6l;YYTU>A!DILedHGvwE)!5st3+f{1gT^a%1i?Yq>p0kjDZx@O5t?)5+aZb&^Sm z63veS=@Zz^8+;tCwbi%C%7IZdZ?AnYr>;r;@jm|L#k8%D!EyvRW4;yo*7<*|DYX15 z<58zpNUJfsm4zRLvDzMF{hXsLZxpHjA73%3Luy~^<;+t+1_vjEAqZ-e0qsuwG}S!p zvo5zG68BClMJg5x$g%mw7Twx>B7qGWQbt*ti9xO%r3D1G5XvT39BtX7n!47GYyb zD=sDOAyOi`T8%iiP6ZI_`h6rprNUL2SFb;isx!KJ5vfDi6=SC)!H{W_J?{|tpZL!` z>`zUe7VN~9`%t5K^qIKgd5ipa12x5VP!8B7hr=zQ0(Ad6&)gnRqH97|D-W)Q6JaazRBx z1#|YKuD{f|53M+-JB$K#8)7|$7<8)soZV5m5A2`*o}GuyJkoRUpf)ii@8u4@JQ035 zr|vsE)mIR7^Suqx4GohLNuS4AWpvE*d!hm=_jmE>slid7h9p+sywlntkve7 z`&Ru@PujGpoNIcy@o32~!n=&~$)N~Y-dOER(4wH~bh*NG$St*^%-dD14lE~@+$ z<^V_^X79&Acp*@h3d-Hpa)~>cCRV}ZGB*o@M-?0jd6%Hu^_UQQR7TjSY}p*OvJvA2 z#@JL_B+@xpt}tkVsqdP(`b%4PmKo(mVY+7Topm^V6K{OE8e_R6ULA$V)9VqIadI-` zbZ|lWR?@+%L87jz&mXeO-8(&70_b%2Ue)AS^?r>bc+d$R)JolLM|>lNfE~{*Ac90c zN_|2>M)I47U9?tq1>QY<1~RWFcAv!E%Rr!g!`qENKYzcicVJbNHLBgz)5ICC{TCv{ ztyY6T$noIFB< zTX=083OU!W<}Q)F@z~lyGXqLo3$v2A1sXpT#$$8`-`ec&7KNx62mnz~(Zuwti1f1H5I%%uTrd$T)v~4X zrGH677jx7zoMoN5(Nr*hqoXhKre`)zr9PeJOY9KkCOUJ4}JpFdb0(^6Ip%ddc#pQ+nY0 z6s+lq=a@T2#TK%MO?as8M}7*ajH^?MlQ1^FR`8t`FtKVHpow9%q?@4al=E)?r^Vr1 z5RVJ>_jkePv6G6nS~pf_Ce2aZi&^afnn{yuxC-G?Pkn z_AkKDV%^^D+`Xl<0fU!JUAU5lp)e|-|7ba5J;tdSMDM$`x|VmM50_4r8rbZy>i;Qf zuAqE%HHE){!B=Puo zPbCVtWBS=;4mcAMvsz5)a!8XBVGp#3bazWbn?qI&TF#P!*>K^_3F1&PZ(Bi-7r>!k zgY11H!FM|Gpo1?^hMQW?o=GWG);}(2=8l+V)b7+6WeQ%MgyZ9t88O6aS;{ucX2zX_ z+_T2Dz%mNaAcUUteCUQBk_KrCYeY;>{|PpHC+8E@M{gSBnkB}ij-{_fE-|(fI2IY0 zS_jYnN**sn_hUm!R*E~$fLd8fUA^_-NsYH>W7^t&ccz0Jy)07ENzWeIK9&92w>n1E zjrG;KtjzDOVSpCw8OnJ%nU|m=Y~euxQ}5QRFcse{Mk6Qhk&LnJ*j@snP*;P|1p{72 z*v|dI+7IAUKC6nju?+&aq_V?W%LY5hEpqb>DAiEeVtIEO%umu#T0T~^DWm|RDx#0qecDVlf6-0_Y6Q%*>P0Hhsp2+iUGL2j2VR2^o(?{@neCDV zyI1fvK)Mj$cdrwke|p;&r0NhP5NqymTmlWcOX5I&)AzT6SIO@uA5$Bz4GnsauFkLx zm@DUy3AEQN1iFo|ClW(g>%s2v@M-`&U!-J(Z^cq{T z9K7IxkPi1RKHdnX+)@lEhTE_p2BMy_!wg5hzx`suxc3|a;NkE**<$P`^S=W@%U!3( z+@>F;<0Uu;)+)qrYZ{T&F!8K5v6j$xS$@FL;)hcO#U;!rs0m^P-~|MT`3Za-PpuAM z$!!i5?jyPLx+RRX`IR3=3QhWhNcY8 zpT1&mr-d>L_RFSG6pwJWD6JzGQVLV|d=Al&{C^~VMJxuXVzNSmxRsGnVIgYS`*O<2OdzBO-N(qok#H~*>MIT6t0Ob65gDw$b*vBMnB?b;{KQ_T z`sX^f&%kqD5aKYhyt0W_blusC+RQ&GtqgRxl32HW`W+zO9S{1Ce@TZ0@d4ecaeMz! zB{{%<3jU6>67QL#fo9-`7ZTVcMF57PVR}2HT%T1Fsj^y*B?#XPdS|u%joDlVel*fYfpZUR4n0=Lwxrlwz z97CN!hT=|`5Uik>zX+;hE>0oOy*&YB^5(FtRjcBqQhP7AD*QT`)$!(e@%$g2M^t_m z?YaynYy4-~(1*%bA2?zNrLT^&`7jNdH_?Q>a|ee-&!>kt=QmfoGlzg+PfY+j=J`tY zLpv{(H9j?C4wcA>Im)A;dlW~C9~0N5!|D;;sC=HUkXRg~t_W}%scOoBEJ{y4z#T`y z9kca(ZYsO-S#MrN<1sUrbu8#kK3%&++(7TXTEpicMzp2GL%bo6lTz{>qxI^%i;<}) zL}FZw&_?5`j@B0=!fW!rO){i}=aljXUn@oaS}T$lHflk-1~BPGi#GNanG9uT=LJ|? z%Em1P@+E|w2LPUnX^VQFu&Az_tVVJi1)Ts$Oyv)KJ>|sf&yn#5qO~|#sU{wgLyU)7WMVFkR5rKI zHuTJz;S#L~_=6lX9`_re3RD6;!du(NaK}P_epE8NKr+_C5}7>2bH+-|a%g^z@4Ka@ zdw$3tLJm6Z4eIu)G{(@y9Tu)D-2dKC9Gr)~#q>Y=AN{0(iDrVwFYS({E(MJA2R6@) z++ezQcIHAQYwV4|7~H?|%5~BdID5GcKYs(Wp?iO*H-eWSlBt;biftr$9yw({I#YEy#yOsTL=Ikozze3O;hnxcV!^O%{zd#ChQ-rv9#~&ck%qHknPU0sQ}JS9FUNWg|2`aIY<1 zsvFy=Y~`l#dRqWf5gwhv$*#o$; zc+q=57P>dkC@@Sms4SFFT;dy`zPU8?^1-5pU`k~blvR+iJIp{~7e@8mf9 z;;99;iz31il!kqCOY!U1N*y>{JVcMmK5oMPeQIT?wy9{JZNrhvQZB7b!Ii0r7??;&&uVtWI<- z-ueDGf*C^&A2^z>U{>S6_zJej95VVD&sYb{Uc8*V!Gj-|I!WE7p`7la`ml zb_?4D#%2bG7>HK&U>U%{=zMx&L=XbVkE!z&1S;%7l0AdhQ~6E%5rDz{%lwOM zgfZcXwf?`9tH(gTGqde&EBy&sZOn_RP~mg|-1A7wdeijz&Ru8?!_l;Qz&rT#H-v*B&pyqZ z@r*BID(5&k;H>YPwsae&0kG}c%85aX6+4CR)Io6EE)ur`EnN7{;$kaW5Ekmz+W&b? zvYC<86N*n@AEQpPEa12Asc^+@<`Zq@v!jY4oKl2PMQi+&CP=<6KyV3B3o&-g#qWb$ z+@{NKgG9V$z+UpW{4^5To9gX$+wS=^>F+A~C~U7gWoZ7I)oz>P4-Tg(94CnNje7wY{J&O#svS7ipJ z)Cz9}+3GA+>OE(xC>t6S!QT%A56)zva0c|~*#|uj4`zy>s3DS8-}%+w=|Aw`@K4@9 z6(grJ)osnkFhzs~`B>q6fMEZCwN8~S(21!JaWdWK3hQrZF1+f$!0Rp_V>nH$Wd+TaNBTSy{CHn`n#C)q86Ru;0je+U}GiQPcEvy`MbwZfzD&@f@f1w&M*G~=J7W4O$ChP9tb8AabT1Wqt2CLY8BWDi%w7PFThXNNh$ z=NDqZ1>R4FYPCj&wBEJ6Fm~(T>hTo5E;Dn_x|H{=>pLZ6p7q^%o6DA?QS|0s6-F*| zyC};+RYRl}-=R6;8u-fr!vUQ*6#~3hYX(?086n|2dY3aY=k<0rku;MhMqqxsA z=k#OLmX;3Vl;86Xh@4L&@_<1e<=~t~8<3I#2)R6YTydui^f827eEax(&8l%TsDX31 z)~m4Ne8tPccff37;yY$aaoBa}K8yqsL%3?>$o{ZO+(Cr@2(1zLU2zRkTO)LW+M)m0 z>l!*d(W?k^5&%J3FNDRDox0vtZWuX^O|+;=2GBvA$Fz<#uwx|W&Qi6INR2CnbX0Ln zQ*-%OBPJ_CjZ~#L-^#+V8=>mLh0 zVSlDMzH{J@MV)?H%D17++)YjPK2$AIr-e<~*JZM8QqY8V3)})wCyKjxMHe};$|9jK z74;c@?qKE&`%4!^a#JjeA8TIYlAz{d-W=tJavpu7{tKzE#*d^l=}zC82IixSUChqa zq8~LepxsUDB`M=X__x}QxzT7fv;TIQgBhrjsVH%;^qE>Qs#7Ytp|hS}8dFGCx669hQ8h@KNAeV(Hi6AJm_N3Td}qdIX_gHgT8 z75yaN}U`_F?p0q?>jou4mDoBZj&FgLlyC)_9T zIsw%SakQ1rq_8ttY4#_SPtn!*SeUXS{s2Zd0ON3jVF)_JhA{^LghsB!WAoFBcK&D} zslKu}R~*MYjymeVu5r%X)O0%wdTWe=$C~FL8lrN8S~*cXEh{?fzMzPoUgg1+73dEQ z0&xXTfNfve-Ly3jL>54Ebj}3(A}>4`eJ(hZ#`F{82_iPVeMUT<)T9<<)u#H)xO^yfu^(xnobf@9(8gnZNHsOWhwL-jt_U+QypNf<;^5< z+ri)hHWK-c#>q@yIdMJUco8!~Nb`?q9Ne;ff;Qy|OYLJ2#)@+oOPRm&`9_^7Gq*!R z+bGiDfG8btOn3qYpu#&9&7>)E&2l%M`y|j(C7ZI1E0yf86*&f|T=`U$RY9FllLD?i z5o%!A?c!1TZWHj$w^CKsu6+#eo+9-0t{~c;*m<~o8OfEWeNgnkWfSr8MulQr3!q|e z{>rBohut~KS3``j5fY)M<=K+cWwlAs-3acz2_^S6gD1yBe9~`to(VI(1F&(T)zSYk z&xvXD{Jk>=DYm8*aOU46$z8jAxI8_e6Fo}EP%iMwk(2;JIu!2JkvuYH@z0G2eocS6 zY+=j6JtF*;frHfx#xD>syI$Xvc8naGmmKtGV$+(NuE*}wT4HS>M!;Gm?4bNjJpUSj zzlSZp^|Q2{7PNO#M|D*dHL^nKXYdUz@cV)%LK&Cl5G+f@uXMEW!nZ&oYtEdsE12Dx zH6S6mLaY^CZtgq3&Z4IFe7hoiAG2`%Vg(ehw?F8n1q%rnUoBU=J$I4+dHo5~8oav! z$;ypoDEQ{Fz=ta{j%x+!n(rq~!ry@WlW2)gS@s6UrGu?fSi96{kZ#WaO~njStl9?+ z+y(zPyYG%8ZzUNoflNG6yWa4yQNMF&lSrfQcN-Hv&tjci9`L@2qqD`LzeH`JmRNpwXj9$Iqw&uJmHfn|R5U&G< z>q>8b>h_8lE0S$*z}Rm7XBuoaJw-3m42k2>M4VjF&w&_|=%t3EcP65&be3QYb%p?t z?ySv`({V9kv-5RpeDQL-xHpJF!ci1CI50hVO&EK0l2Mh%wAWHR9Utvc1q9q?+7X@J zZY*1!c{2Dwc$a9shuJn0&HhMe50Vq9KyY^E-8-(_q|rWzSyb;+2=<#SGY61c#8gH`6|Sz;|m^d)$qW{gnwEVRKPc z?^JMz*3@8+sS{H?RPx##l;XWk2vu>yWP74=HM)zFM2`_Nqu!Wv!{u8mDD6*)Hs0#! zYA{7VD|4KE>y`1hcpr!Xt6_US9{zF?_qAz7Zok3{Gi``12R9VQez&y$tsHkrT*(*k)bUL`XF`2nqOK;OK?eb3ydj=1Us;M19heE@? zkJFer`3J=KN5ZO8%zFE{lv8QaE0i^2BjksI67 zPaG9EyP<~6+LEpm$OO+_z_n|nPhD#H#m*Ov_NCJ~Ka`qNc#Ke=mr>QbHSP;GRqv(J z>g?EEs(F!~v6-^r`D;EjPm)t+*)Yp1IQk08S(L|WqA)@hY#D#x3~>*swEe4aZaqK& zobI3%=!uxNX=Rzn=qe*O({4w7O%V_*_V3Fidz1TUSfrAgq zfqpaiiZUY}ARIpOIll;v08TEb{GH(dcpkJho)z>gLMrf*p`pc-`UnJTSZ5yg?Ak%VYn8~|Kr z3nyke*%@MGLR>+H5n6%WP8QW7B{HT{8pJzTlz0Z_|23<0RIu0Gy+u z01n`O?(ktrA@;A@=y=h|8QT#L@y+^+;Bnh;o_(Py&Y=MRj9$PzWI& zEWQTt$w+ii?;r<_vDB!dr?5^f{n}6vmL)7JO?b?p7L_J)MJ2yQ0@{nlTv)^Sn#@Ht zYR4B-qI)?i_3dIw=S-PO9zB5I`EdDw8suFt3Qfqn7r|A{^ob8Vhx9?`ki#$SZ}Ifz zHeNj|Brv!>zOObCkS&MDK0gXec5DkfM0VT6u?N(+G`98L5mVMgf0*$w*?6o%*1LwQ zl7l)KaSCvUoN6=Xo$pCiJ~B|cj)hqg-RnHVbMd`$5)!2v9J~~CVnZS6GUZWL_Abr) zzSoG?C_8fNphD0oXPGD^gJW2@c3IUp#v1o@!7~pAebqq`H?cG?VR1Gz(MrE13>!u8 z^l52p)Fe1$g}@GG+;$nMYl^T%mbwOEUooSWt4FjoyHt49J)H8vP%wju`#S6(#2I%{ zl^^^%>zr8z4ne^2zlQhaY$noq1bU`)KU4Enuj)qV4@fi)otJmL91^S0_7a!mRapk$ zbcq${1Z5lf1laAcf_%30jW8thlL(Df-dffmaI1vu9?Or!^TlB003)Zu$!H-Umj(Ek zL6fEn!ukx!-q1*^I*0M!+f;o|afhy`DJ5^vr)!iANBrELf=NgEmG)SP%!PaDoS!?G z2)iBFqd1wyx&xoXC#CO~M14o3`XLHw{2d%-_bz4T{jtrLpqCP$nsQ6vc}6u@6e=fW z17dw?3*|A;#W9r1?ipxG_3OV4V7hy%{yIU|>7PX2d>CTtmiWrk)*pVE!Ua36fgsTb zFPd&EAWyG{;3wL`@m)M59H&~ztWfE?#4XmhS78WDxig`3_FW(^*x0rV`)an|{o+Pz zI;3fz%K79zor<&VuM!g_Y_ZXxcvMN#4Fgy+GQi6=ZqPPWVMK=#Wzp$|@^O^9?^Yye zdd|n8Ez&BuJX2}L4vb%*AvQq;OIBJ|B_Ev*+7UCC8 zl3?)swzq@FZ%I+6Id-NiG|-P3xg{b zCKzd_&iYRwhmxIF^d(m8+U$@%YG!J=O;%)alw&zUy<+DH_~fnV?hMeZv<%~Dub$0n zjZBOlMR=3&Wy+G@r$tCzxY7n-R|+Rk0E>b~rMeBRW4=`Mbo@qo)BPI?XE?7#cb|?s zlO**B{QKvw3V&YZS9Zu^$3i<9qgYWq4zj}>u;mFLmij9xSyXWFz?czdjx`js(0haL zPp6*(O!NKjLbZ=#ocjdlhmtFf0_d~sJEi!pmR9;l5zD9ecPSgNM;P$4{%>UVWUj(1 zo+ft$9b3Y}2uSY@RNNJ_8fgs(LT$3)4>V?}4RIPbsn=JVAmbjN9ie8lt?{pruJ) z3K(OKM-o$U1(0;X(~FS140dC@cdJxSSkgxO*oBkPQ86`O1k={XI~cFkHTmGH zU@Z(AK22xpv+Ik0aH2=%@vRIK)IG@wK=o@Cg zu2fQ5MVuH=cU@MJV%K-pZ_)zs1?w zf_1i{fl_%~Pt0Q-ym(unEEc2Me0a^XQ(9W|-0$|CvDT4M1zUa* z7{^hYEYUh&pXEDCAJJ=KTiP@9gumvn3?VdxNW;Dj@^PDUN4K+>b#Mn3_856R4VwBoKFLa1#8r8%B*OE=hVtexq zlg_1od^1}S#J+70_~%W}1~=4`atNLl75S{8z8D1|vbBAj<&#^F-@-IATjmFNzjpY;@iw$xgRD ztZLjsI;4$@!rUZ*O@Oqfu*DQt?P6={&B9~vJ4V28xAXAqiO~J)cvM{W@#-B}W2PA& zHS6>BXCkBMW3|KK??DdNau!}4L)lq^poLG4*l|z%E#zqW{G~RQ7VLAKsuEe^Kgw|R zU4fs^0UlWFe0k*@*Ja?oX-bGM6m$ zSX%c61S;1mfUiDx^y9z`TbKn}Azj{W3Ux}GpbWysbhh|kOd=+)>(eUdpHYupe?rs4 z%@_|(lc5k-xP|EqK^fn}6QJywVX?L4iBPsyaffp((>mHvrqeuKak-J$Je0vJ2Y?`N z^x9Zbg4_$Qr#okJ0Hn3xR=M%Ld&fOECt>OXMAK>c`U5If=1uTIop}ns)a%{M#2}r< zC37}88}a;2x>u#E8{{_(lEPr6 zh%RsK*!AxD52u@b8%g%`m~GEU^H_c8HS@W(;6%X2?ZKGbp{q82u&&~(ai|5xjD^QJ z_7~(IEQu`%OM^=eAE?v6OYmygeDOr_GUn7)wmjO<>F>>JXnWHwSZ@LIBQE@Xak=Wi ztKb&|1T=Lj#zrUcUp~WEBh*)Y_}dwTVp8e4A9P-k{BUrxu&VQGSAG}fx#77jk4zR= zx5)!?jFZ5X6L%Vsm;s(%QLL(AI$znlp7*Ng^eV1xs}$QejkE|%oq3HvtTAx`Y8jwR$c9XeLpqjz6X;PMd+K&}aeF9N*P_Q&OAM25i3Q+^Tr)egF z02$Gd185e?>x8K~H9umHai*k?jdsHW1N6qkrVi##a-`u@r}q6u<4);*oCY;)8nFA?ADGj=&p`KLi~#mu*x}rBScjpH)%a%r_;Oci9}ZrcCDlt16KS7Itr}-^R76 zmXbpp{z}x^S<^%d4vi*Mh-&2vo!4T>r{NVi-9m#jB68*sR`nF?Ygf(~z5yTIu1#RElLZ4~GSKWLeoj0@gQMH(%g^A+aNnK%orf_CevDOuH$>@Rd1|sQVq~-$`B3dTi@$5ZR=_# z=Yqa4CG!R*0_Fp;PhMzDci?+8e3+1nP%Z~mF@SxL~X4Oqe2idjx)hJhGpM|Jgb z%&OkOQ64K=h*Q5wv96>y(ub_`@wyfCm&3_%kl{yiq#KBaTv24JZV9_F+J-o-ew_NL zxW-7mnqR8l=u$VWYt>YI~6=W-(?%_=WZ7aPRzvubve0OgZdJ%ec(!+WoS)P?sY zwh!;W@utxXr>Xa0SQb{JGLo}=c;D62j!a0#8xvzOJq;I&=1xX`RBHvUlRy+w-eMJ1 zQVtf?VgnYg_7AVCQ)G#y2CQF2%%e=kVY2It)aC!>&?{A>*z>d!Iy54yI@ERa22DK8S77vFgaAkN+-m;JQ7=KziVTrWhFT!ODFprq+Y^ z8CI4${UkCaRwSIBcmfPky_>O2a8kbq`38nQRIclRUBj1OfUKeoQZP4dk8sF-)qre`e_hq|MMkKgVfb1-t z?^k3F*>UHe894IMeb0e5ypYEU0|VvPESkazo9Jp2-$|k#nv?h2b{TM`FpW`6os%h) znT@qJbR~qQ1{B2Y`Q0s332{nV>uy+1{G8B7cAcKo$+EArDHvXxQasXf$QvpASDf#1 zb}OFB?{IbgJ9Ta- zpgzIF(&-xijwWy1o+0sO&n_;p2gup6LA!sqk~?%!Hlq0SWwAfdK@J}}maANooN~!D zc{Q%j*pO5@z-p@-{D zPy+*|;pK?)QKMB6lN<21A;aq-+`?<58#!h{7^ftjImPHY!*=G5{k)1s*~+VAs1htf z5ZMjrG_u-#Yub=z0@l~G@jy%yE(OYsi97n=(rou+15GFr|C59JOH_KM#TPj2{^lbMRx}AOU4y2|P&jEcwNZ`5QiyuRysK5f?P`T>9#5db3X*yjT zFb4?>zR7>ihx^&cSqHfSU#z)5!z8qrcZOa}=hld=I0A(N)*DcJAOPRtC${)i;>;j5-S0x~&Y)#|p+rCbaUy(Sz3 z6Ph>W8-_Jilyki7P`E~+%I(M4yhfIjO43JA5~vaMq0O;-vuPP|!1n2*6`}u}H8*e_ z_B^0+n`;w7!s0=YJP#SH*Jfg|LEmPYb1aO1Bz6Y8adON^SsGp5&T!aczt@Qs7}1QZ zh3bYant~iF++Vhud4nqwJsId4F7;Gu>QMYBiw>?yKmMEon5l2ijgbIm%$D5DZS83p za|1t*lbVeEQ~wj6Ej|Uox?P4ska_<$Go0UbWOsgB5G+#y`Grs1V!bpgWU2qN0jN9m zpws{@Wa!Y5eJCnEFmMiZ8E+pv!l2rNJeMFG0oIOuEPB5Jd~7!pikyWw5av!3EC{56 z*H3GesJln$&I@&EygX=q-J2R)zwX%#Na7C*w z(fYL~9(#tD`kF;=v-UHHqj9Pfi0>YuVBUw70X{FGuwS@|-?d2JFot)GM2 zSair`;4M!mDiaiJ`_{TncBbE`l5CQvsb{ttFn#H`}vf=HP-Yxzer-nwp2-b z{nQA(pEH#9xT0jgTnHSd!!FjDJWsDq@1$u#P%rC!*Zg~oci}9mf4c_@^Gg@(i>Ig* zwFy!6%RgPtb8tfoZugRpoE;>sNR{@sP`=cw_58U?b_H;0|LXfMJ-si{9Q$?bu((q@ zn=Aid6J}sy9eypnSS<3w(M(Zmwe&9$$Se*5W=vz`m~ez{FNNW*94^wYLw{4ZNsIh| zKoBQHa8MR(ru#`xbK~sYJ$zb;>ab2Aq!I;q>l`RD|bs-Qgw@6$Z+8nJRVL5Mgj~)j3h-%m8C>~*I z;rkBFexEii8Bl;M5uG^l+%+`R|4GZ=XjF5m1`vm9mcg0?6CB-~J?qz0-DQ|A6;|G- zcyP#Tp)A3Gz|RY;8v{Fn{57oYa+f^WOnA?9Tn*Q(0nLVok&2q9?&e1Eb>RFly5_=e zvTmxo6~7b&ZKZ5{s^JzsFk?V!=~S_B72t>#$~;w#{ZsNDEp_F{*~Zb{yorg8DDl~K zDcZLZIT%ZJbu~pJ%TTh`?+Ko2JMpk_RI6_P?Dc9E5PG~o!O_brx|YpuE6f~%2PTtP zJEpa3S|Yznra0P88tJphI`0;5s@E%`8#4wA1#qO>S%tLU`XTz&2Nu3)4r8t0Rw|?TD=yna@(&dz% za=?awo$UdUQ@yDWsXq8lEZYjOfI~w@PBmgQ$GKL!Z#y<)$w?xFNiCv5TRo|bjFW8V znhLmQ%^V8eAa|}&f~|H7ex+S*?F}AGf1KD{k4F0(iaxV> zr(3bfu%e$U>)82q1g(e2+924;NZx#C?lGYm{Ljy>fmV{2Xo>GIr)tCrRuE6&OI~c=@8VLk_3s>zzRlcq;x3IIJfW_ou%DdTvzMI$~lbu)`er z3_&Rw*)#U;Ge@~_9R?iYnbbm$5>rnWSkmk5A;PbSNVP9=5+ytKP{03GL-MDB=Jo{+ zD2wTQSrszE@$4w`&zer%xQu0XxQa~(oFWyX@Nq^sY4J(KtMxYrK9t|@#e@lT`5*5b z8|jaPkv~~o3Sx7++a+^;02ZyOZUo&j;v1`-sZ1VkL8cWkLa>L9P9RR<1nPE~PQWWX z0MCUnese1?{jxGw5x4_oCHF$ir<+j-a0P|scJ`6Q8l@}GeXml!dDuyIn5c0d>eg#D z`R%=h&3KeJ&(AdwUTqkHSHNM9rU!J+*%BwtkKVzgGvRWAYJ-tbGBCsh+Ai#BhLiO% zS6s}?>D;YlI3Wd?7~>qLVFYf~ ztgOhz&rNd8eVwtf0g0zP0&gEF)M@HbGLM0nx^8!R;`rZmZ2Y z@wiDw{a7_QVWlEa$)u({IJ>*L6+@Fmu8pB`6>J87tzpr2Zb8;6njW)+b)*a4)JFB; zqAc90CTZBzEMtuA$Gp*j=nxUKsVf2uopQI1(s195)8}E{s7s*xW#Xv4D{RtoeOAhm zk$pDDXk(@rWK%@J^Eb)J1$GXdlLYXIJdq&s|M{#p(+rhmbz4C?>Oa3q@EOb40#M8+ zp;CiWM&^x7m#dw!9`yTlIr2EON+u~L*dh;0`6LlX- z^S^YZEs&etUH&sHSXxZQ_7qN$S=V?|B}=|2YJHdeYeLsq^*Bv(Gw$kNqJV4x!EDmJ zzmYjc$VDL0GxqPNJ2e3wDm89rBR5f`c0DnGJ7?)2srcs} zsA*D}efu0_FQ;Db9TN)IY$AMo;FOS=!I^&7G-Lv(+`+!dEQ7GTK4hRTke8iyOb z;Ip~yy+u6f_@r*|5sAWt+=)B8yfeOK~B5z3pRf4xtQ7LcAsf5NwdHepGg+?0rjvoV(C%~8QrK%LTzJ2 z27&gELS^4{0oA7sf}znk+W4do z>SihOBbLjnhKz5tS|maw`9oJTbCkgyy&x*hpZ)&A|^0NQ)Q-`Pfdp^ zFzhcn-Zbvug{Jh$F9s%EQ;kNd=rR!1#G|nAr3Y@jTry_9Ajl|z7nV`?IFuPfV;wi_?SNZy1e212Ohf}b?w<~k zEFRaJV1?o^xK8HJy*Yk}B*MT#-ALpYvfjkAOmWQo3m94`kPZ`q1SrFCR_^?a|yDI~;_%()9xe>-wN(iO(zXLu^M(0WY;-O~sG`;;d#jkkuNQ{%Y&>e7eUkmLGMQxt&#?_TsYM5+CE_d#pKE#*JkH`Hcw#!<7EbrVA|Es%JG4V)+$ z2)zg&cfDicdjx?^a2z}c{nU3EgH2C^Br%5rrYDXs=()*c6Z<0g8FN@~=^z;TV`Nz{ zVx02Sbe$}RJSvb#mARLl>W8!%k)5RG!{5J0@muf$D*TI;8lGe6?#Fwz=UGZxg*2`G zgy^37PU@JcpE3`|m=B!xdufc%;~HT`O&eND+%~^hxisARa(T9eSR^(DTA<|{kY5%4 zwsGAfCHPF44oIlzgyTX!A@5MvS`Av4a@atNt%LNNNu>JSn|~kW_&o+LvCw8kYjy>c zuwRQMKdx%japNStA-FR4bk0bygiCNyxVTi$hb5>pjoaSv zRVj-0bn6`d-Y!atha1w_ItX?tElE$hX#sjc*BtWNJ9hC0Sb4sU0GATi{H^(fF|_l|hd;SjRGC3p2CFM4Td1gzYta?osZSsNZyi^;w-DRX+htixUrF@Hi2u<5g0~T}K_dWrC_rii0 z==&!QYk6<%KwM5~DkJ8x@Y;62F}TtIW7Vu2mVOpFI&V!sdkbhOtq;244r)l|)b*n= z0ZI3`KfdfQRc6h@Z1;4iPT^oP9iGlok3H&X7PnD_yf496F-M?;Th^Ea4skK3J9G^} zOBFSo_LUd+z3g49QE}B6w<^5t_YXrylI3-xUSJNj8vQYg@?QSAKLoOVw8Tf}DIJ@H z&W$z%Wa+hA_4rmU4Ko^otXIxS0BFV%H%&?InI>dmS&I>dNF|}2lV`en+}HMa5JdT) z3<~ECK$)!bqv#S>$H2gWMPLrat3mbXq^9=6hoa2tK zEEbUcYN7Y1B!;ZNsU-P66YEeT2y~j|FqY8jfXRtuV5;$22FgD-xDE!ty<9>Vw!j#d zOWTF{X&JC~7LU>6X@zcmM}b#y^5)+$eE_P%LX7i#aHh7M#FtuB*8xmprz`xg-P#qZ zA(f!oC313&d1}i=d*u|3%XW%UWYd>hsZT6^G1YQ{>bmfTHOsVQHSNE#G(rf*Bea2E zw;~N$X|mgq{tR6Nn%vc8fN=n%y?nOI}(p->>*Ln!r~swUqEbE(rG zju?uZRFa*x$^4e6X_|6k8{%@vcT=mk|Ps|6lR?na-tXgqE+v*x|-JF0x#?8A2m;~vHsp+c# zqFaMlL+95Q#D=>m^e2l%M3zXcHZ!8=%2W(jyLroSP!y!dX9x(20#e>4B{e5-CN*SY)SMVD5{u^JG5IR zV8n-*dgj(`i8#mT`9*5W&!e*6(Sk-!PmDfJ74iLSW`U^W-!F11!+nSmHW_T(%Kb?P zozJGmhJJ>9)-X{G4=;QU0x_dj>&-{uyA`CYf@(#%Wi@YGSU%p1(T2Bq2oj@Um*}_= zhh%SB*eg#kF*kwqz}|7R? z>W2H;`fn0Z0TZ~X7H|p=G8GieO-a`ypInqO_Ei~a9$kZZMh^ZnBuDM96%694Mz zILIyj0E1$H&DE&j*@jrRc|op=uAG`SW@6@vrgs2eyh$)cam_m{6GJ3i0TC4Ct-~Xu z6tgOu!f)aj4Qx-^r44a=P0#fJmS+<;54%a%+WGT@M%RvolS@+5uOpIdIRm^;<#ywl zru|i+GS=}86L_^C<>RR*bGRpL+@G_l&0QdQd=Ni(LQT8@1$u4SREJpw6sMX*TKyr^ z9;H$U#Xcwy0srZ}9z=RJiAY7KYa^SMl53zsP;pKh_6EWa0+SBOQ*$jtLP-}!BpU^L zX!t7R0Kn9v^-|bdxL_uEeSvIat3$4n&Bg2nI>qJ#yq!8wWPUjiPA>YU+37sz(GeWgu22og)a>c}r1~qA+CGf}<{O`~Yc}j9dxlG&kU+$yvQi)l? zO8@BzoZv$DIAV(@V(<<-z|?#reE#L~b?VWWrw@eS{zQV9ysd%>HM1{rSyWbZQA)90 zmAXVdb@SCwNlnF7YXTk{u=5PmAL8V>;mDnRCAb71;FHkm?UfR!hD#o0DMD3F_UBvl zs&g#7E(nHG{BIIOD3o09snk)`iQ~)9Q-nss-(Q5|;h9=EjV$zzKi0uXd{vQbwcI1< zCNjwPv`Is5iD2mg%tohz4Fz+C%DJjX+Ywm7jLj@@*47&M?~hcMD)?`>t_4GW`e=d z65JI_o*Yh;IWdIJIrvY))X~MslxN)E_Q|}U!BJIVcb8;AvNFpMC0VPBl21eCe@@ho zv`RNtPZZN#9>Cn+(zghoKIxtgK%z3=B*Z5IsNorz(>>4wraXCdi zU()V$FYgvR*66DdYt$dbuFIJ~OLq)yeBmR^#(84x43Dde(p8<6CUzF2U?7J)F#U0s z(gOaXLSk?xANd$5)xerqGJbVox=Nn9`Fzka_vqscT=buD}erK7E=Dq5}!q zObZYmgY;LefQeB8n264M!09s(eHiGf({ixPvY1DNt)d!QniCVd*pM+kk1_>9U;EGV zYLC#3SttqA{i3}WR@HSq4XT~#q(R*7dq9wUarKF@jsMa{xJ<-D^Ku7#{amqiyBagv zd%lSfE(xS6779g8F4d-24UTtoa{r`e2=uq9U|}5ez1ghRDS-8!y#hguW{e9WP9&n8 zcnsh3RSecj-8aY`+)RiVljXzh{sf0z#eJsigv`qBj5PAUkajMo>g>t<;65Q6Jz3r@ zL9Jg>V=OcE*_-EqK)^rg8-xU7$_>iruVqFzK9smh8%11nO4?ks`H5XrU%BI-n zqxoX4cqnnVzWhbB-qdV*)uhNhY~0R}q^)F@2+Yb4R9Pf@NGAW>hLp3FAn}ODmWmH3 z&iYz^byG#L8auABf(Qs3;>Y^`==*f*d&+rGxnN&_(joQ8pFM_a+!8)xn~m4b(t{S=L{+ z5%lEmQD_Z@&=oDbbB>25$50=D_H;L5-yYdIfZp{6m14;|_O7qdmB)P@y9}WesyP*} z^YYD6@!%(-og_Jk!!K75b8<`m$BV8WJWy9e_aKT)WpzP$1D7!&S$+60bO(2aLVTF0 z>Q0vwHOj=8Ba>!fnzxOkZ=fYXR1m9B!N<5{!pOUM-BTWYYxeCI&PQ_r0>&8lH{*`> zb8GH#0KYchc%)%d>TYG_s#k*BUA?M*l=m7%Ts?+#oAPkDT_{A140>MP#yUD}VC-Zfe0%&DhT8~0_w-VPa;OPLc0MEzag!F49AqnU3)>>v z{AaM@H1LM4h^zPdbU_VH=fN~{BM;ep3l4+f&2*WOP}?@#K>H>_g`zEW@1Vpz*$&{c zcHX5cK?TDQFq>h+9!D=O;rsgK$0bqneig&um}*O+Zz~bP&fy$+$Djv4vC*Dsn=V!$ zQj^z`2}-6~z>Vx-!`YQaXxB?R+Y+Ro2wJ* zeZO0d9BYkE{45G&%*?tgT(cKRISS0mHviqFvTK-^rTU)TxsV=l(Y5~<+f*7;^cMw5@ z|IjI}tP$X_iVJ5lk^G#@iae2Dn)Qbeu#e^;8!T4)nUr!wYS@%1=S#{pg?U|7U=}cJM=75}- zYz;H{uj{g+Eeo{lT!1l!P#^XuE{zKC$bU`5|4=^q@u*Y1@Kx0j{w@KoWl1nv!Sy+j z3T3$|Fke6qedjNUbOb#pO;-SSzitwQ1`gi}v1EJR%%FTZ@k+XN?VbRU`k5|xw^XK9 zID#)T#s$n-bV6&~%fEAWmXB&h6!mwr`@2nbn2R(e0=K$iFEdc1AMnHe@o?V|V)%yt zE&Jal0+#4kLQR24`N3ew`<@F=C}e$W5kw5tKhk!q9D#rbN(MQ>0ESS+l7RC$<5f~m za=;t!Fqm;E_11v!IILA^jnB%3UJ|$K`$JD`UXJbbYv@29Jm$jVo|t1G<8G+wfo{qh zre;*K1~ov8KI>jAU|}^9g`KEtjJu}CWpHrm2IGsx!i=gNjX+mqQ4rsHI z0zfVwl`=*L%G!n)>&tRHvGx_B;u<^Zh*h|u&X;DpVr^WL$xnyGKiWRLSFzfl!h_y~ zhb*G8lMhtGz}QaRBe$j`uvRwe&&cgw*2VInJUxGvR z*NFJ2L*v%fRdu+}Pl{DDP)7r0K!^TXpP7>0S}f_h%hpTQp2!bV12~i}G?(Gjx(Q+Lc=2jh)1A$!fWYi4{j=5&bvF&~cNwftP z_X5~Pg?ESb86lzdqIe$jO@9K1HCVh19*=OD6^ODk-dwhEvpqXJMScDdrw@@N?l3-y z1u*s!=8f9@z>N4#ZpA`_AgEVnloHuo$IhD%}fBjSsLnnEa`4?=J_I`y6!X z`GcD(2opJg5JoDUC*(v0$`W-OVXyIJFN$71^IioNimPN7clR1R+m-Kb)~~KXJzY57 z&VHIOMhB&{<(W^WiX=3>$>5&Eu5bz~Q3Vb;5+iI|3CU}@0G@b5|8?GNQYH3re|Tc| zHKp%Q8&_~&9+6c5O~p>tb!JCJ(L$QyWGzXRJVE`$cv}yH26z#EkScjK`FTzJ)4`hl z^BB_0>6V@|8cyxQNM1Ln8G6Vz8SG8ddf-!L1?QS_e{!!2 z7j1)Kt%}?EIhEF4BR>Ygw0H+-m+?lMRVD;{Bz>SYRqC8VHz0>l2Dey8bEjk!v9?Zc z+27-op|o_vXSka9{!k~2W8e?x5I!{&r%2H+z&36L_j7radz76^4V}mmZUXKKOs}wP z6WOi;_bTTWoO|ygyEObo+ODnWp{LGzbu(Y%Xx}Y^Mgg)d=Ci zfTBD?QIVg^)2LUX!PFTN;EhWFETw4NH~iv`eL5Q`0oKKr8qJ_1UH}qJT*C!BMkwD( zI>+}Sb-)2y?2rl0wN3w}l7)(IN+lYo+FhFPX8APTX?X>q<%VPcd#xWkNl18aZd$V0 zz7x5}Uv@dvQPIS|5KD*cj8M#_mPZv)S-ppzoskbaszoK1gh&Zczk*bho+ZOAkbjJ! zV`a{$~CG|vZpg`z)Y7$OB-fCOx|v1= z{gST9Y5Xk7!l`-WaNYk$-M6=xSW;}AGH4IdGoG;nB3>V^Ja+xoeSW5~=xA)*&Jcq{ zQqvDX_N9d4zq-BY83YxqGWww2gF9-RJtY#dqwa3;Edp{nPB^R5>y#wFexKhGsWPin zH-ktQsOivDX;!PGH-9V($|d$H3#XUv`F@udfhj6jo=M`iSe02!Pv(myKtXeNcF{v% z>Iz(SVTiSTcPPL}3_2MxJdjz?ss#X!H>AhHbtyooA>_Ml9@mE~t%rh-jRE9h|7<{E znS%I-9{M2M{2#IUHQ!kx7sr9RQ6ewWDLiT6ap_y0dfEPron%l(3XLeF3#6!z8UFkK z2>`nNhIU_W!QVhBG3Olb(}fuvW00(C!KI32JRN zV*7@Fs<3bN7mz0Onp)+DBenf;&(Azc(bzn1+l>e_$GD|(g_PEZyD*?GUJEePU$nTl z3Vv9^WkF;TFyKNcZ%-&x=J>K$rz@^9dDZU$fZTCO)r zK_y>ztKj`kGVSY5dJWWn00q4fU44?56=P&?9J3|marce8DeWyMA(dmRX?H`e{m8*8 zWouI&$U$$ozL>mpvU$^}6Hre0x}|INZjrJ!2ax~V_*386Z0}Rc(h*l?*6X}#8jtr=q z2#SGxrMI(-klc>vyz4P&0kkC0_U=BJq0lLgQxA>BrCLjp9B-eo6R5R)LTSF2DT-U6 z*M`TYdDYlupOT+kL=2E;zBbh>=PIc=TJ{h$@6A_&)umLW8K*Cv3t|SRpc{xH+SWwr z?+R;buX!B3O5nC;unWGg$yBbMw@i<5P-OrFUZXkD0D=C_@-sRfExj)T~)-8Y=tl$<=Drp$ksQ z#@e;s^4uD*^iuW{_kE*r3)w<^0Oi9fkZzWR5Pn%$t^bNPnUz_d;AaU$Gd$vavyl`I zgx&ryEnq83HTRk8B`OAYJ_SK~eDC@mLF1024bT@bpccD+`!_ByhUu$5jl-CAy3JR} zma{$oPuqmXa9M_^0&1ahq?}|C+V~l?z?YYFmlS$jY_nl^lTZb%xk|gW?=i%? zcm*^vGm6q&6NQ|gT=(gRx08*L(8I`aUX2z@_1_xur$^?@U#$l*;D*IsV*U|iveK0fW zX9gr5B7S-LmXx{EW4H-$3ei9pnF#=GKj;?CWaXNUId$CE|BandBLS@#+7`|;Qb2aw zTu`DY(W~ zg+v1Z7G^8^|Grrs3-Mk_cOQSn5pchN_FLEIsQlGfC+<-stC!bwX-Cq=(DwYK=hTq~ zG$-#Z^~yiA>0K!}Bkwm4uky)-9^y;eq6sR(YQSufZscZ#E z*Jq3<;=ek!Qoa-8Q$xXhM7gmz_rzj4lI2UC{YpjYZc#*XVsU{)14jI4oNQ~;Q!GWO zT{y6NGqa)+fFl*UfHNl{2kP}N5W`K?-Hu{ai!&oMz{eK44eY5 zbJAh_Xpv7olLzD3V_e64?LN&=TSY*g3tQi2JD5NTLm^uT)X2nccjY1rH}L&)wu9W!;5S7j-A1*SNNLh@}?7O~$0N%8~3eWWhwt-yVXz?%=w<*`3lH+Z*0D&g3gjP zy;5qfaAl0`7GId~Gj5ja8bM~^%0}up(L+-HAEhkYVum{}z#GlbvhG@ApDlxf9!l`mw&MI`{(Eo;f=&AcuDE+P+RYrq!K-< zY*`6RbY zv3Y$fZSecytkY9<(j~^gW*QBPXidr~U4G27DBIET3Fr(LNY~L&3DD4%){Bh0M(d!5 zPk!3nU7aHKG)l%8t-z9EQNYWB%B%07qj5uS$fY1-7^2`gqCQ*kGQ={tVi4zIrDoR^ zm>3?J8g_idrfw4ixlYMmUdkYDJyRWwq|@ssWe_gK8(IQ6n_uSz7rVnnj_cyqAf=MP1}X zjR1jpuuqb5&Em;^SZXc{Ff{<2tl=FPg_@cvK}=st_-^_x4fl`G$O3bLmzO6ngR{42 zVmlGqxjv_EN6co%6SGdo^;NE?!FQOR%-=kC+wfox6tP+p?%cgDJb1U`=I)h85 zGZQV<#m-GB8gc-|umuU~cmOM;;%wSbaT3^wx$;{S#qchn*lsh~zBdG2So9EmsIM>G`8(>I{tnJ&__G82oEIEO{v-nrS zpx8(Xh+pC@L)t#_yk3<CBW ze})DoTPRDcUxerU1$IpRo59d{`yFdCI_Z<|h4jkNKbwRXuUY#@Sz<6J-1dIATVFJC zLHtMW98=uZ%=M`Ma|YGSr(CLxzdsR8N-Zc{FWmIkmxjW1UmolDzEM2!vh!fD2*1SE zVd~S1eb#B604mT-kCqQ)vu&yc=NT|8%5P8^`vM^xDTHM&iowSNCwOvOoI)Ztdh;Lk zb)-9L<6TQ!#;Iy}pv&OoHKsa>G1zRJfI@i$Dds^I(0@3Mzkx+tU~~6(QJ{vI)AhH+ z%W$UkX8W-=5P9qlP*YL7By>L=C=?$HzENnW8YRIun zeA(40fY21`sArTuPq;aZRK~{!?Bl(%G1g7F#a;DsMbpsJ4h-ss>blqVlbK8lMpGm< z{)RJr9KAGFUc;(*np`?O7ZiWGn|S$44W&(ItYKMq%_w4ukB#QM<6(_q z@HARjJFz6mz9ExL6bW5<;^Z`P_j0Lb9K!}S=Qo@~MpI;_lSnNwFT*Yh<^z8%KJQU@ znDt{}=v8e}}+#)R8W~j_{I-WCy zD0f>6Zgl&@ghi-9r!i~&B>ZGK*jVJqD?WpgxVYX zoqlyvpGgdbyb+Ru;Zm~#fi=|A`@W4!GiGA2k<1hNKz8lynb|xMLL8;zfeXx6`LO>S z3a%vQ3W)|xi?8u&q~?DcG!GrcNlhnuw{+*x8oawiLA)R#fa+M4AJ%JCA#AqY_@%&@^+9T7?8auqO`>~-Fn!Y~@l07}U71DE1D7x_amv5v>wKugB)zF4C|7)=b zLKfDhKppC~GI+50JV;A?pynn!qBKs2r?_q6(F4jgQx5uXiVjCA?VRm2qO0ipMc%>+=}w_CTM}`{ zT$T<|G-k~^X8d!Pe|?&y;Y@9%E|%K(iYpiK+7Ns5;yGi`vsXCz`-)*L_N-{~-Fe6( zXD9p4MtY+{8AZDcpBa)DC;gr9RNvN}WytGO z1gi*VOcN;BFjwW&u-ttOdy6ST+cZ!ug##VKh{0qCDx{bA^`9DBh!jSB2T~t%6X)hH zOx0|I`-A?yEJu%&Rcdht8bUksE&OT)6*ya?M4T;&XLQ?GG*U*js~2+RDw{0a)LW%$04}@b4HC7W==4OI-N3rPPdSN zQBHgJbspo8jP3AqniwZpJu0$f_+hg zJ&ubNqyj?gwJ__=2{+-lJEgCW<<{5fisU_M7*Du^Cy{GV^WJ180PIe6YVa&wuQ3*S zdi)O6Kv0BIF=9X0ZAC#It2ihgItlAD4>=su(w2Hry1<`C*ueg#X!b>|{9& ze=&ERi1gr7fz)3pc0v zl%+_Wz?tsmw(KEZXv4~El%?0IcmpC9 zny96D5#f(yK3)4e8ZVXJ*zu;l0(W!|16#ergR8C6;z-8E8KCaQV6b8US6@HJ7nt)L zP;Eu-e^uFNTS982PFife@m33@Aiy#I*Q0mMe zymZ?97KmD^EG3?8=U{tnp2B_gI#YEJP!U+Km8N=u8e8X^QP)l@ya-ICzJlww-BBt1+9qd zPlK5;2pxXHl>@H=KaRk(u6bgxN-ug9QqS%9%&g0q7R2Rk+K?`24q_gr6{req3#@VM z<|k^{fN-OG26%o#^r?X1_4)WO3E^Bd#U+mA{a+e z7X3_%qtjV@66A zENEy@DH{A3An~^ocMbK{rG^4XH7(;VpK*ls`f~6}1M=sepD_`q0b0IC-~uJ1673c* zyea(rsDgCKkMCs`IX9W5jX(ydmdOB=U$-$gEfL3k70Sl{ADFfDY~DzWnZwj|$vW<= z`VW56!Ax=+<%^ZNj6xHxHHhv4f-KzZo!R5_PFl=HX6j&?kdsle4J=f6$#zN^b>%mc z?|~6zpOvfs;&aG?2*W>zf67x$1jCCaqn(5qk6u2PcD3Moj}`T^)N+!`E$Pv+Ykdry zSByy^2I3FQS8aw>g5;NEK2kObor4Z_#dqI@pbNaESw)yr&lWsJnrdSQoT5h(Yng!2 zz($hN;2(_u%=9G+EkRl4!WoRLbOrV18nDCc#hT?}FaLH*)o@d({5NkeUx zEB-QjDl2TpB*5DEHwJF{xH>2JB6(wBhMMAGwM&R7KVYL7v*YKBi~=w#%a+zJ8$%58 zHY6cCFiH_4CT+BxdDob`fV0fm=ss&aq6u@+fRJ@emE38&{}+u^zFBUKf5~h(X$MP3 znjGHF^htIa%n$PsOf6Mni-(3BG&iKOM4n}~VP9}*j0{cuSS*{s+|e@ZU>G38yC+-y zi^bYJkcJvrsFP_K#3x5}yq!J3-CLxK;hLvo#E-?OkF8@m6Uun>lQBS#W?M(~3@y`& zWh|E|*M+Iw+4axAgn|kF4&bLi$_Z=_+Ii|wS-c&c!n~!Xs$D8VZ+Vk`?gL6oZRBVwp4pde-yBAXemLp^x+lL zS6%c4anN4;N-+8x2i>)-Q?

  • Yjkfa^* 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ëoBnB0W{iYqjn$0zB~a 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

    t_5u{%BHr9qPDg_NL`2O{1ke77aXx@-J{ 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 YXMbp)K9`8=3R3fKCYI9Eqikij6@c*)q5uE@ literal 0 HcmV?d00001 diff --git a/MikroNUC/20260701/20260701040001-Config.rsc b/MikroNUC/20260701/20260701040001-Config.rsc new file mode 100644 index 0000000..c5cbe1c --- /dev/null +++ b/MikroNUC/20260701/20260701040001-Config.rsc @@ -0,0 +1,5236 @@ +# 2026-07-01 04:00:02 by RouterOS 7.23.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=BridgeLAN +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/disk +add slot=ram tmpfs-max-size=100000000 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/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=P1505n 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 +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/routing table +add disabled=no fib name=to-awg +/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=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.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 dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\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:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \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" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=*100 +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=LAN +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=all internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=BridgeLAN network=10.30.30.0 +add address=192.168.100.1/24 interface=*12B network=192.168.100.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ + verify-doh-cert=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ + BridgeLAN 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 port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=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=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes 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" disabled=yes 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="Every Day Check For Fake Bridges" disabled=yes interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260701/20260701040001-Diff-Config.rsc b/MikroNUC/history/20260701/20260701040001-Diff-Config.rsc new file mode 100644 index 0000000..6ada73e --- /dev/null +++ b/MikroNUC/history/20260701/20260701040001-Diff-Config.rsc @@ -0,0 +1,110 @@ +26a27,32 +> /interface veth +> add address=172.19.75.210/30 container-mac-address=38:5A:3A:BF:30:5E dhcp=no \ +> gateway=172.19.75.209 gateway6="" mac-address=38:5A:3A:BF:30:5D name=\ +> veth-awg-VDSina +> /interface wireguard +> add listen-port=14710 mtu=1420 name=wg-awg-VDSina +31a38,42 +> /container +> add comment=awg-VDSina envlists=awg-VDSina-env file=awg-proxy-amd64.tar.gz \ +> hostname=awg-VDSina interface=veth-awg-VDSina layer-dir=\ +> /sata1/docker/layers name=awg-proxy-amd64 root-dir=/disk1/awg-VDSina \ +> shm-size=4096.0KiB start-on-boot=yes +5047a5059,5109 +> add comment=awg-VDSina dont-require-permissions=no name=awg-VDSina-uninstall \ +> owner=vados policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ +> \n :put \"Uninstallimg AmneziaWG...\"\ +> \n :log info \"Uninstallimg AmneziaWG...\"\ +> \n :local prevDNS \"\"\ +> \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ +> env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ +> \n :local storageDisk \"disk1\"\ +> \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ +> ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ +> \n :local prevTmpdir \"\"\ +> \n :if (\$storageDisk != \"disk1\") do={\ +> \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ +> Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ +> \n }\ +> \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ +> \n /ip/route/remove [find where comment=awg-VDSina-dns]\ +> \n /container/stop [find where interface=veth-awg-VDSina]\ +> \n :delay 7s\ +> \n /container/remove [find where interface=veth-awg-VDSina]\ +> \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ +> \n :if (\$prevDNS != \"\") do={\ +> \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ +> \n :put (\"DNS restored to: \$prevDNS\")\ +> \n }\ +> \n :if (\$storageDisk != \"disk1\") do={\ +> \n /container/config set tmpdir=\$prevTmpdir\ +> \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ +> \n }\ +> \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ +> \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ +> \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ +> \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ +> \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ +> a\"]\ +> \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ +> \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ +> \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ +> \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ +> \_} on-error={}\ +> \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ +> out.rsc\")] } on-error={}\ +> \n :if (\$storageDisk != \"disk1\") do={\ +> \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ +> n-error={}\ +> \n }\ +> \n :put \"Uninstall AmneziaWG Proxy complete!\"\ +> \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ +> \n /system/script/remove [find where name=awg-VDSina-uninstall]\ +> \n" +5122a5185,5210 +> /container envs +> add key=AWG_CLIENT_PUB list=awg-VDSina-env value=\ +> "NAonhRSuFIrFpNKTs5X32ItcvFuO1kiJUigQZb95YlE=" +> add key=AWG_H1 list=awg-VDSina-env value=472437748-472438637 +> add key=AWG_H2 list=awg-VDSina-env value=707808381-707809250 +> add key=AWG_H3 list=awg-VDSina-env value=1609078552-1609079495 +> add key=AWG_H4 list=awg-VDSina-env value=1012329484-1012329741 +> add key=AWG_I1 list=awg-VDSina-env value=\ +> "" +> add key=AWG_I2 list=awg-VDSina-env value="" +> add key=AWG_I3 list=awg-VDSina-env value="" +> add key=AWG_I4 list=awg-VDSina-env value="" +> add key=AWG_I5 list=awg-VDSina-env value="" +> add key=AWG_JC list=awg-VDSina-env value=9 +> add key=AWG_JMAX list=awg-VDSina-env value=920 +> add key=AWG_JMIN list=awg-VDSina-env value=105 +> add key=AWG_LISTEN list=awg-VDSina-env value=:51820 +> add key=AWG_PREV_DNS list=awg-VDSina-env value=10.30.30.33,109.107.177.79 +> add key=AWG_REMOTE list=awg-VDSina-env value=109.107.177.79:55055 +> add key=AWG_S1 list=awg-VDSina-env value=90 +> add key=AWG_S2 list=awg-VDSina-env value=136 +> add key=AWG_S3 list=awg-VDSina-env value=45 +> add key=AWG_S4 list=awg-VDSina-env value=27 +> add key=AWG_SERVER_PUB list=awg-VDSina-env value=\ +> "o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +> add key=AWG_STORAGE list=awg-VDSina-env value=disk1 +5137a5226,5229 +> /interface wireguard peers +> add allowed-address=0.0.0.0/0 endpoint-address=172.19.75.210 endpoint-port=\ +> 51820 interface=wg-awg-VDSina name=peer4 persistent-keepalive=10s \ +> public-key="o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +5140a5233,5234 +> add address=172.19.75.209/30 interface=veth-awg-VDSina network=172.19.75.208 +> add address=10.9.0.3 interface=wg-awg-VDSina network=10.9.0.0 +5149,5150c5243,5245 +< doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ +< verify-doh-cert=yes +--- +> doh-max-server-connections=20 servers=109.107.177.79 verify-doh-cert=yes +> /ip firewall nat +> add action=masquerade chain=srcnat src-address=172.19.75.208/30 +5159a5255,5256 +> add comment=awg-VDSina-dns distance=1 dst-address=109.107.177.79/32 gateway=\ +> wg-awg-VDSina -- 2.52.0