From b189d2ce2eac5252bbad5d74876b2c11dbb13199 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 01:00:04 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 12 01:00:04. --- .../20260512/20260512010001-Binary.backup | Bin 0 -> 381516 bytes MikroNUC/20260512/20260512010001-Config.rsc | 4778 +++++++++++++++++ .../20260512/20260512010001-Diff-Config.rsc | 8 + 3 files changed, 4786 insertions(+) create mode 100644 MikroNUC/20260512/20260512010001-Binary.backup create mode 100644 MikroNUC/20260512/20260512010001-Config.rsc create mode 100644 MikroNUC/history/20260512/20260512010001-Diff-Config.rsc diff --git a/MikroNUC/20260512/20260512010001-Binary.backup b/MikroNUC/20260512/20260512010001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e00eb2a0b6d57473d9bc6934659ab0f68289c3e9 GIT binary patch literal 381516 zcmV(fK>EM$sF8C_(ggq@)vR)hZ`}oqZ3|VoEKEQE00000000080001R$p;8E$gT-U z*~91T*`AN#d?_K<$kBwDtW9E>K4hU&NrV<~Jj7K}9IxF00JxYuNqv#iO00Y|nxAwO z@|_`Ilr`jsUs8d7NVv*9WGK^cZp5pAhNT1j{cVru8X(3dm?Qt*hO{$e6G)ynfZpvfJczr`mF|Nq;jnHq}nAV zCOKn}SL5TWDgOVRE!%2Vlc^D0iP_KXsTV>YKG{30S7Z@~x>-AY2Z{@9S-0z@N+l+K zYAz%7s&Mu}r^bq6;clR>dTZ%F>o_NVwf6|4GIY@~N$t_qjQ9pspX2elh}3KU_n#Vs z{|(m0{iog{G0|}{_ET5Np*y%aOR4- z@$EL`@#xdNN6#*=x8AKT(~osuT!fe(L#~ej)1jZ(l~cZVj_{_eJ?t+95Nw(;Vrk~k z6#d)nRX8?q+5B(1n!-okr~Eo_BUqIW$RK-sF{3w6jWo&=BE zwV)cLy9nO3v^LRndw}WX<-Du%FW6w%@~X(XY2l(YJ`bm}xE4vg9|qNR=qSkAY50H; z%6*ZFi5*IoyvF#BHaxs2pTA11C4e_(D)Q3es>hF^~X(>NRe89IjR>o| zgXXob%9tY~Z~QKvvY?^%QvLEGZ8;BgY-n{7-w}y24{Y0%`L6ln^U9Y`$)J^)fc`@c zBzoPX{iJHcdX#2eFdmt*cfL5)c_Ak%g?5Hv!#9^)TNWY^^mI;%Wn^Upv4@JKDuy!`K;Wu+E=ioKycmtayw@?@=TXA8ftB?w9P3UV08 zijhL?B4rf@Utt)Gv=@LHJ8Nwd5fJ;Bt$Y-x+RwZo`W@)wUk>)tKyU7epL|mvj~+W{ ziBwaW$p9k;T2_iSpF1a8Z!h`idN;-I!I_m3P9~vVqYpUBx(F)odcgltcoSu7K&Q$J zcp;2yXs=#lXaY#?DZ`b8OM3dgR1-cfxNwxE0D9CL^scvWLEFwUE-*&k0p~=jpjSW^ zYdtj_*tBKoCyQ{LrM(#u3#YiozheDFHHoz%-FyqmP7MyJV1C=TOj9kNhpzLzOX<0k z6KxG3o{jXTAiN>>RoCmBn*KKem0N|V%k2C^R+I(KUTLg9hMrpcSDLH3U7|V(CSL~P zW&wLR)?;R8s1Tqzzz^poSu6Nz)RW+T?PJx+zx_CS1ovVYrS|86``F5L`*F@3YCNL$6`OiT}Kp~`hav^ z6z5PCL-3ZR2|e7j1Omzq5;mPo=4@pTy&qMz-)e)RzA-}}w2OrxQrw>mAoyEcuOb z&}az`&>+tZh%OD*g)^U1ESc!mA8QQS>0PADIab;$hi9_DF)Hc{J~;m-$I(iy_f8h@ z?7sRdh)V5Hg6W)C$ueGEg)ViZnm%BE(9<+Uz*dS>X&F<9L;29Xw|p*mjC-x+#$+x^ ziKJ?00WK@!k3-<`sn#UE7Y@33a~+&?KZtlmYl((~clZJu^=SC!DdSb3lM(CW;? z?j%~;axzT>^T7)Zm7UVRlK?yF)8-(mXFs-afv5>Mdr5(qWnyWOLda@!CdjmQ7D@Bg zUN^R#h*ZyZN%kK1rZcVts2weGw=4IIG}7gE;-%@u0y1IYHhf>eT*6m+r#?K18ajPx9Ub5FcIS~6c7<@Uvw40||Pi@c08f&(jnK3#F*7g+@C zBNeJ#pFk0Z7^3*7$9|CF%XeTg86R0x69LMVHL9V_lgRDMx!OSJVg)?92hPxqCel*~ z1jJqhA&Aanw?a(8P}Ol>=ka&{!e~qq(`JcG>|f+$qRr29oPDFUMGlEcJ4+zkey22? zZpg|DzHyAul+MR`EcnYq%AXL&TmCm|+5CD^=BBK3f}33sGBl`rzjw)rolAc$Ll!rH z)RB|blt8aa>72}Y9aO}ltBi@Z`tQ5e_CAcn;V$PJ!f0UEW|jB{Cd}&7&^uphV}8{f zteuxQ(vaCZK@~8AF!%M(1+75FTF7KLH+C!&UOTOhuZUeGkXs(4!uUe-eWuP|4wmMU zVm(#*%9w+luYN|{^Rcnb7AVoi5LoERG!kAV6XWVJ=O%|vYi1v49tRJ|G(38Z5;pv& zDT3273#qUYA)WB%cks&aC~%6c`{f8*ENl|QS?z8ML7O%`I1j)HME@I!U@BX?djg%{ z3dW87mh2z%LhqMnj-!MGoo0zS z<#8zrG0D)%OE_wY_T8i%>hJMW9nmH3)@08v+P)$PEIp4F)Ay^~%9qZN-NHHUB!!5N zc2{60cD#Y-_(bQkinB;?UE*R8`G7F%gEY@PpaTkwDIOmy9JsuFc92Y~8O*P<5M&w7 zNXcu<&1C)4);&7gO?wvWw5;n~v%mv!jVqIvqDopCQ22`Nxyc!YanKsSy7cs}0Hr*r zw4!c^u+l1?S-mB=D@;KcD6oOdkq@WRc}>i@FQJHQ#A?B|m#Fa#D9YM>z|D$_vY+B!Tk}K@*|N8z zC6|Z^0`p3nKQt{vEVYzQqvJ1ysuwaRpz8s)t-($S>!^cwG}x>j>n3IjHXa9R>&mek z@v=pF;sst+q4FW>YUVf|9zLG_qKU0CZ`6b4Qnykw4Gd{PHbj&~o8#u?e>m|x7(1GL zMfx;w0O^4=nKZiE6mb%m`5qQksoMR2?Jd7k5dAqj32tbK=F}_nVA<&(0Mk3#&G&C$ z4;Al{19Or+-z>SI(1n4bCzP7JtaLWEflrWb+tBsklz>k1ovkl!$ZtfnG{kcL z6E>BknZ8!-($W-6yG|il1u0}mSXu16v-Ni~Z!oJ~lGsug6MInb`x4MC-ZJG|IIeHe z55^qdh8^_1nFeD03Nn^^C*ZsdCJDhv=}J91JZqwKU5eW>+^T%2s2ALT4q5g;r!SOq zvq_F8lW{8#_+-X>1!phbuZkKR%><6YR_`WAfy#bet6}Y!O z<1`c0FoD9I?20Sk6rc|!&qxq@V@9=MwdRM(#aAhu+E(+2WbCSY+M*zM-S69ioU?!Z zs;2kfN)QCgv!{>-f|6${EAH2W_-)|Mu3e}H&KEc-jn>xnDB_X>TpcG9EiE4fiErL4 z^+G8b`@EzV)IjYOx*s)}(;E8aBA9(zJ5i53WM7|oL5=Xh<~>q&x&0z9T}3*YM;Vme zMqxDr_8!;+Ee!c5wmKObH6F%=FNX^PvNm>q0CF4F5HQ!OeZ5m6Xo$V_9%(&+-+NV?B`s0+%!B zvrKkSI>-LKq4EhY%#kU*1S>&;Hk@|7FDaPdyh)HBx#oosMs82u|B;M$SYj&}AUL!v zU|kaO#Eo!7q;XbFr`9;sTzJrrN%bV#^gOOp($nbYVC8*@>qw=YxK>`QQUg<@Z1d+8 zVZ!V(oowy5S5sIO*Bd0AyB>aKbhN=!ArNXo#DGom4W%N`e^UC2%nfG@9B`wd`wSUj zRq1H`d4(?)!m4qvbq5@zwV$-}3$R%Lsl*p^2OHT+29E?qLM>fUD!=`k9wVb?p%CdX z8DX8eW}kUCIN;$Ryv1ZcvC_D9%PU@lKF-2ncZqpj2w0}_tpm^Cca3QmJ8Clfb9$9) zK=;Er;Ki~_*T?FptWb*m9VP65#g96jZq_qjmY}#rXix_@rnm^iw{Zf6#f}FIJ8TVw zJL?CE-O{XR3)H5x64=!s%HGBRzjZ9DZvw%-nlI_8zrJPO>I7tP#0R@;FP5S-(iQ#Q zIfe7~BlSI)`)o<~(gSFzi%iBd#)B@S&*9+75Fu?}olCrQg075Cbbvf=T)cIIYsmVH zf=dPwwS>{K0w@Uxs0bSjNozQ^ke*u@;o`d(3s-a2WMHAd5z2>kU{I+(4eBnGlB$k*JZ4^V^Xaa`6j=<0-B@n{R|nsan4+cL)73uI zx;p4jxU`|Magx)Z{bp)3d$Q6QX|WDIF_76x(KK)Soq^;{PRRafz*nMj17)&T(Qbu7 z%$R0h2%$Yig<`c%GpfcVl_aGs>qMtK!E9)3NOXXK9F!8&pPUPanh7r6*gL!`uR z?P;)O%d&|)JNImwi87}FbZR>X$TsY{-`xLuKu;?#ACs>nV zhE?Z$->KCSo2)JRqBfiYD^DhA?i>F znIsgeSs+W=kCzNvoxt&7Vilk3G#!D| zGNM~OKxC24fx;W(z-;A-sCb^m2*04l!HcAXFG?k!(8A8?#vvuN@^BL^JH9OB-j?)n zXV>3=A%&Rv4h|VrBBjv~0P-VsUAQlI_s4Z{mamB3Gf1c<|h%nRdn zpTTkyREkRrspcI~zzZ6ZDjYp(rm!xiF32nEmBH0$?A@(;(N2Q1|1+twOC_Fm=St* z^1Wv_K>GmJzKL*1_JS&bZ6H>(4&q$ z+CdXdW85A{)FZ{VZFM0-2|H(%1CmL1>CA!6>=VM9Rpa%;dP=a2^wlk2JgV&q$KBds zo#%&GL4qpd-``bgWR=HF=BQ-UfP3e-gojv-QeESubC#cNrm{~^S@2y^(oo_2gw86@Hm1hhnkw&!vN-re+k(1 zBzq18ADWNyL6!?YU)FrV*BISCICSx}Fc%P7v~LAfI+y>H1hB!p0*h!^oqS7LGU=Ej z8;t4H;HkBi&Nk{@`#=#NpeY-g6ka~}R$zE0u#kPhW?8uc^8S!{mS86W5>-?X;eC*%A6 zQX8{rP+|&?9A`H4FfGa~fGlQd>PzFVwY?i$kzGPZ%e|AjKU&3yob~s7M%l6l7gjzc<+S2gTCxP8SZ zNlkmp-o+GY&ci?qXiDp(b6XX4k&siyLyvK7*%7y<1XQR`=`NT3;@y5k@H%xf)+_|D z!PGKrT*RN399GXQN%lon;09tUF7-R!+UAmfixmW6%yHeA|92*2)VwyJ0 zn#J0b8$)pMhTNYQ8PmT3_(r6Wi(VrUs#gSm!;QpdKY7gZ6+`H&N_mtJjnsre92`>* z;OP>g^3zjx?yw>IR1R^%P7GfHH439^_Kg9XqMf9LZc4b-wvzRv zYH^s<0gR|eGK47Zgjh!l4AQhLOu7a2?cXi-rR(nY-va;$iwlIrp`hruQCB0|pE;W|ZY zwlD(0`qkiL*PuUT7JNp{1`JFNIa_2k!oC*2LGPe}C57yei;>E+J?zQ4OU_0eQFvo^ zzqQt~gR5S}NF@eG8QIi7J3dJtLC)BS^qqIJXPtrov-S|rZ>pL-{TgmSOqZ@%Szx>3 zfDf4mv%&S4O%u~3Vg|THD=rRg$0GBIk;Bbwjrj~>y>?41BBkCl-6FU;4L5>=xl2lx z78^w64S39JsfF(|+{Y$^)G4k?Ox(!Fqz3BpP4V-WgZ*k0S$aF6X%m%8@Ja67GkQ<+ z2Nmu`3kG4Nb>T-BmcN!wSZ2Ab)}VGEhI7s;`?KrNqM^)GYuV>Hosu|Q)%0u0{*Roa zmY#=wP7i|ARDTZ2N29zXEI{7R+Q4k-&Tw#?dgm)`Bf%7!$cgS+qCu*OqIxoTGG*L)frZwAXa0@ufolR^>Y;w%b3W0lsR7Hu}zPF-OQP; z{J1xblUI-{er~sJ+&Mpme-z+xs!%Ii&GM3Sqvd&Aw^q%7lGuiu(16sUj8E z@N0XM&VRnaIr2%#!Cl}n@@Cbd_8o4py>Vgd^U9Yq{~2xOj9k$*5;{#zQn_2+t**p< zSm5buBJpa;!zejFfP}j*fN#QAjclXY%=Ni(^64ECC1e%~dlJEe$Aj@54pT z5pw1u1|Fnx=*A@snchRADlBZ=hg!!iC#8;gOpo}n%Nd~H+f<1v2hV2)phrxXh>~(_ ztv|`Ye&`;zj8|2PP@}T2Pzr`q7A1jpQ93qEuUebWm=+yW81?&=o@8aue@B;b z-{^U#EV}s`(~et+iA{s-Nm!pax8JN2*ltKddH;W{1J(DBAw)jFH|)?{rp?3IxA%9i zzYlP5i*PxV#f1MNKI_Au=jzy&ea@2c)2a%WX$gD97NDOPdTYqa_sX4z46>()?)es3 zu0;;j)a!n3o-&gPx^Zc1rS)<{)O^;mKS+mJl?7oUL!8rx3#ot{H1oL0_(OC^7TKhb zQrzc903yb@0RY^h=loggBC2Ot-d`w7L`)`FycwE*)H4@8Y^;h}`MMgL?y0OxpsTzN z>7APlfRc9I`BrA56QzJXsvMQz4?t+j1=-^?#WK99SN|Rn+i2DJ`~EWmG!SS!(T{*K z@$1cftjvRmwnC*^;&UPi+Vy;SYxyTG`Ud(V{S1&$efYZ(o}cCGGLiZy3e#@Q*4}>w z=wgWElihu_E+Tei_;}YxhN!_zcoi41aIiqL*R$5FCens)3;J?>Aa8gd)exxPQO1>= zKXZut(-y+)=aC^A{%a70DznTjc1PS>H)dr`efUFnZ-VGtiqSHzh;S*~|R(-;BAflOBmNjSy3GI&jXgpDH}dm4}Y9auV6+;l-r z3%+nTE7xRG15wdH)gD-2bkXUnN>1tK{jW~- zMwWID4c%y!REF3g;(^bUFmYOaVs78z#UW?Qf`Wf(hn~^9wdLdVN&@nF5M2D$nUcYx zBk#|(lsm-E5Nk09W7}G+I9Op*JrMKPC&%O96Mj@Qxx{iEtio$QE^x>SsEjc=LalG+ zfpo@cyrt@21riSd#&M%i_8HM`cf#Vs)vuqqkcO8zY|@2yzbUvlY0hEWKP_@=AdYH< zK16HxoEI0)r91 zsKvJiW-L>QrmBH@PzL!*zYzA2VV2sXaoH1Wu*a)M60A5my1<%MhaqA4Hng4R*GqQQ zbt9SBi;K`vIdY`!Y;tmJA@L|-ffpkkq3elN&(@dS$p6mhT_vQ^a@o#!(z>?&Fz)j? zT3_*`2rDg*<8ar+Z8d9~KN$=`FN1*fbDG`ITi*x7C4`uz7>&%i_#>y079i|4?$z5DV-SDY@|R)8i^uBt{#b@*eTF0(K{6yi;b?$%}cLQzL(b6Y=l zyEUi6FUg7%hQG6w^bPNhtH5f0okq(4%AG$WyMdM8IeN@;2XO*UtJ1^ zzhS9en<}Jx1joo^Y$MuNyUFc;7QofC)#)ELu zvB{E{@t3F(Sh&be}oUY zW`_=q2n{jEf3=6PCTkF?UBIzA$^ov$l4^2;aWO>v^tSyQi@OBVsHcJgm(w5=#+&=B z?f~$!b52;~2LK9)<(3@FfOr}*4l0^|#DPS574!TQl|X8zSzoCmegO#GDHg^Yhe|k1 z$5OXf=CHo2jyI&z!D*=+{Q(c5feH$|kZYU8;Js=hXn;hObd54m!FLE9c~@(XYaI0z z1@$%T-aURVJs3qM%Q;<$y{=Ph{NgGCNv~D4k_H4QTXz@QT75i$DqAt(%Pm4SEWax0 z!UoAH8t5@;vq#ba?;f_uEfKN!`WchRaTP(x!M6vn*%Pn=G15ebB5n=e*LuOO}6xk{ik8Co|IT#^zp=CYGA`yy0k-0Inty5n^hhgO<7O_~Rey;^lc@vY6^V?Pq|%(i~N)FisT>CRo(tEcboN(H9GSu;VE!W6jvr4-)>e zGd+#s;}B>ko512fN0E*gFoMr_6YTP$4~W)5$E`>9nE=kg4>S5-hWzO zd)olG5^2O>ss<=z74?q^S6`(n(Kpk6O7kVw=nJ`-w2SP}GZR#4XT+dXO2)DT&HStUBjxPSV43mX0adBiSS! zmZ9YK3fOV_?kRFsH{;EP05*1!z)#ZQG!(1PP@M6C$7F(#$)ZdmzAX@ILM~JWZT)N{ zc}IN2@6laBsDtdlEvCXbL)hj=YB&XDLYE)4z>}dD65Gkau?iK54`#F~)TVB6G&UZt zuBC?q>0y9SAi;&yHFq+s)CAtf>Bs6d!;o>Y;VL_KUBE_WttWZm#< zJSw8kP2Pj>MVYW(SON#cz=0`8biJLO@Y4BlW|SUN$=wppW*dk)C{YdY8~!Y8eD?S>R~O)3XIw3l*v{JuEg3fJxRD830Q3PKwO?R66oL5xit{GEx-HBSv>9U+*UhP7{R zz#B6NN zRnBMYFU^?3qqp@lDr+#Hl_>#wue#i^Jx2KRh4vHOXp-Y~?<`C{3wIQw#N8iVOB4$* z9Y~@@`-t)ZTb<=W12riMSRJX+iDEMks4|Ce9D`)qB~XS6dw>|&#R=&jPTl&h#n!bR z-hW5d8a-`z^dw4|4)c76S)1M(rW$8p?j!!ybUP@t^PEoUMnPz{@j!pNpPp9f7=639-%mvirg+kWaJmRU z`u#KsFE_MGXaH<_SKUGmdxjA}*`5nHWKxBUR(5(mE$I}`PFoNjC1iSVSq6}2eBt5N z>{MV;kSXp#E|x6xYJ*Z3sm;ES(h)2sO$U)*iD1g27D&fJq|^#OrHRV9LG!T8@}9vZ z9dofU;Fri$hlrU9!kzY%5ce(y#Eui(>%qprA<*^Pz=WW#dti*h8ov8Ey$PV2_+GMX zTae#X*K_Dn=&j&WGm*n0DdFyas#3Wi?bI>5c%QWBdFXEFEv+<8{DP6FP(hV3%mIu{ zs~Q^{l*39sG2GBwaX2bauazlZ*%)Z2)-yWA8BT{!*r%d@qV8t!$6{Cy@HE?F;sMSW zJJU@=ylM;Ux?ua}U0-s@l>j1BT!M^?aM$j7&at|m$~&1KQ$zo6|NG38s&E{G?q@GS z(69lZvlM{I;zc*P3KgI`u$+MWD+S+Y>|uTskjf>%TKYr*%e5@XVQK|!bI`-3zvvy(h8*o@9A_-5PR7^T zA9gIFZ<8^m={`#Zq%bprhm><$mOLYEdh^Ya=$j#fUaWj;xdq1qeKFFA6c62C9`@zr zw27#zI8Fl%sj>>XM%?D-iJ>xA&{PegAi}X-S{E} zZ41qfnRHHN6dReapC3{BhpAG9M|-QDq!d0z3Y*&W1qk)t@O-%#^!zcJL;#ots#yS3 z5$mX1{@Oij*_DA-lJ*y0WLok|h#`k=w6* zGw@-%3>uoPDUjIU{Y$bqR9pKA!_HBtRe_U{}EZzj3ZWR%x z7Y_gqzL{tPT(bF!c+pq6^{G?vP$kEZ>uPSpt$gGhNg!9pE`mWO-M38}0`a*}J(Ip?M0A$Gd4 zp_)5#w}86lj04lz0ah4hCsvp8CqWWUPof$+lbK{xtT7ew6CON+57;+bl0z0S;eDh1 z58F-67dxaHD#<9*S`SM>4EkK-ZL(Y>jE9I}NsZlZ93Yj5p(x`tj|+oT z1PYm^(K{tu$!gz+F^!RqRx`Ke7w9*ab@JMCpxxksHrABcWm^h#@^XSo@#{48F$}nr znrNTk;R%TGOzfyPAf+ROR)7jVSvMt)ysz8Im-|)d)QJVL-@IXGsWxRe*~+730_v}g zUVnc)-fYToR!5*LuPEF@Qfe+I0457Vfrgw6t!G9GlgA-Dv>WSkV!;%Ina=4u$ns@o zFl!s}5byVXz#UQ-%2F9K@NavE^obEm2(v6FBD!bjMqWH}h$3A^5ne?EIvi_r5PA7q zSDJMI5WHE}<|s7O6=b_}sqqYVTN8-zEq)o&fCM-^bR{-AS~W-+WU9BRH4w0l43RQQ z9Q9zEvCpp8{7H{KAp(#=N6~IToR5=@88b=3?K50#``U-yE(23B5rzqTO}~HM?#c0d z5+o~8xAos-@3)P0te`5+e+Q64UIRA z39=Qrfv(|a`C83|b|3tV=e;9p+Ho>Fi6R&knXEw|sx~L(hnT0M(dBHqcMtz;p;#kz zO2vS1mS6ujt$%?W&6;~6&Z9LLR`qKiD(#ngTM=%(Ktbu3$0g0CuZrt0owKatezLzQ ze;~R#Hvr_=bp~Xn-*R%M<(t0bzhXU{)!B3YYBtJsUM&ROSa+C5r!wIB(me0*@1 zr}%G^AUwmT=c8j*8x+Qijj8J4WeoP(8ED!?tk4zOz1~vb3;C#HR34-Ant|||14Z*d zceXqG4X1BmV!nv_&Z?tO&~X)6DUoMDV4aS#Q6_R4%NV?_(9YiK;dV^uvYXyFDP6Zn z`>8)nuEM3buT7!#4<-E!gJ}<&FaJRX5zH0o1DAvwlb3aFs4JF??tkoV;N=i98g0)m z9g^nuNi z8y%{JD8k#tJ+Rv60d{u`{G#H_|^W(!Fc<`X844t>;ivJVOfVz zSKgA55K<;bqi8Fou3T3`v88NnY){90Y5WQ`qM5r>=&2DiDH5;R$Q!+y>doRpcDAg< zSDFqM0YLq9LNQ6OB5>5%BY&p1&ZoESf}b+3HCXp| zj-5QJvK24k*0 zef<72ry-ct9IsDQbp7SYBnn5Jjo~9Ej%RQ#eyRdSAJtM3+WMVIHsHlBd%YH0?rgqD z+_uyrXWvSz=#rlORQ>hW=~7i7c!dCb?$h?1Qylf@t6@I@ldL^e(-%7s^s-AQ6TzkH z{0o5QG_5yRYpIooQUp)Z=DNYvQd73Y%<}0k#B~l#%mBkt983+`H&D(t)93B`lTh9g zcPWzG$BPPhqHarWfAQ-DpZip_X}qxAIjlXW-A7R%d&g-B0i;|r80<`A@V#9%(|_`u z1sNkNmBx`!NVBm0AQ>bDFJgUQwgtiua~w-6K+n5<^a17^2Xr8|C&G#L&b9GUpZNbb zw82d_|1ouuU}ecma}#pcze}zF_yOr`N&94V^=fY#xI(;c3|euF3$83kCqaXaH)O$6 zOL?6xyED)e0{2=y+a_QLuHlYB@T|D+mH~vCGF9T76(=l-GeQt1#OF6%=PufgQ}H+J z##Y@I^VgVM8MF7w=u|IDeHNMEK+lcClmc#flZBtCZ)Ue0CMVWE(K9n{ZknRIDpT~9 zJw$d!l*$LV=NjHYlmH>Cifi zR%psj?IL;K%v(X)k`Oe>8e@l%+f$$=VAx$OdS@W+P~c)B z)`5>XCmx~Vk^^h1&++q`kTKt<#`5=?e<)jqd5qTsND(ea&dz20l7Z*ofCl=v!U7FG z6cLrQhJl{`tC*=i3j;Fd;3Hnuy1vVKIL)@fxv`x_7BLZFLefUIdhI zHq-kvpS6K8U@QtGZYf$|{SLBtmFWN*oM{&wyS5!)2;_eX7Ek(X_ocUEAh`Nw2^^$! zs3V4%rgD!7@b_gM*AEnpgerax`Uwp>TA)C`AA-a&INy6EV&?nntOo%2~4VsEjT zo?L!!q3`)_7gF5LH#OPJr$nv@IVs^nE++ic2=irocHt%u>yrcnqB~Mb|Cmc@>h+|mM9V1R~3~qx77o?uZOh!L?s!>mZGVQGr%_O_VkP`yEz?>HD{G^0(E}t z#MKxj8pD5Mz4hKuYRdCKH9dtb_%A+03p5vryf2txn;?Ims+BLopLj)!aZ`l{O^#k z;jN*1M7EH+q6ItOIz%Do>ggQgM-}hCvGicER_Dhs+4K2y;qI~gjmdUoU4OYCvp1V) zeEUBUXYC3>VgXcmS#Uv^t&W*r**OO;2u^eRk$SznqAtaR!ETO?l*X5s(2}Nu`Jer> zR>C6ub;Ul{vV5j6IJTCA(tF1gilG}@%BNsnG}LEh3M+GA_7d)=m0*IF+9kFMY?TXV>#s1Dag*GW*Q3`aJsJ(ncwYnrph_vu zAiAuZQp6jYwQEwG@N53$W0sb7hprLyQm5+U(=`>r>^C0#{ zjVsCs*uHa)o0v-Jf^g${u|sx_76NSQ zMHLseY1&3Rdg}dx`;H#frC`Jj5~Cp(rxX!F%q${3!ZkmVE^%V`OyPxbt1x_h?&VgQjq1 zAT{D<$x`~Mf;B`4LUQ@UZ2s=+*&NE*6lc2;NiTkDwo_exkD$Z}Ed~vvcAZwlHaTD9 zshEMay|R%*+fxIMbpO%I>&Sp)fC~N@C8%`$4^?b$ZWA0gO!^&s%NcqrNL&p~SJi=K zziY%^Fl_jUjkX>2r5lZDuh?GP`JmY^YU(6Y#i_R&d$iXfC1DTtGFG{;-lH#rK(q!g z3!EQ@xy$en3Y3Je`Csiq+Wbj3sNuf86^2IJairdoi*nN>i@V9Yf6jl3 zEn=e-{}vdDPK1E7Q@p(+8YGWKu$rU>pLKn~KqMP|*#Bh(g3$uilkb!aAuTWca2Cx! z%zhXTo`f&ZlJN|u5U~P<=1{8gkm3DhWgYJV({pp6)XR+y?4^^%68ownc=>=*0P?fZ zY{=ZEW%HF-b~H=fVi6z0xR(G0zq3c&Ml5^_2J$^@^J2Ms3RiIEO=4^U7;|`0>+eoa zDHAT3&rS9x21%I)@q2dMY1E-cB|VEBhHiAM3<8ktyZxBmuq#clyHHsdTR^R3i115n z<5w>zX@+!lXUVt4%~2Uk$R}H94RBK1ZTN&J$*JtEFbH6M)xliR^zMt%!{&LFIr@Z^ zB}0sj%bT`tg}ZF$V7;^4b^wu(z`kh!ik@_D!U+Nh@+o7tZkWosMuI9FKRNA<-FF+E zyu6`B)9BtCR*ije#&Id>PDzdMsI#Z^Z2KsY-#E1&BkndCUC5))8@lT-IWqRTGF}c! z<)Rn zm0EYbEf{__HZ3A^)9Z`pK2p=f#);8(B7*Xf9yUjusY(r$^nN;|1!i7FWg07&IMX_4 ze&?8f(u-zudG|7wp45OUG~6Mq<}hYLw!wSyn6E1b(CB+EY*SBj{qFK(Y)7ci<~2jg1wRk|dChZnZK($%mn?tOK&RHa8Fi1heF(mm;D(l=;eE zwV|`dYcn!zaXibK>PzsRa;zDbBMujJN>&-*TiT<=wxe_V#soBujbmaV%;;7~R_AB* z8-)@#qHjfZ6xUv>r5G$Tmj+m=Bk#bUaGxxeKoEg`4^S|^w0skhv-3eqa66%D&kzof zB^(XykftuM#)P5AbtenX)@cLM_IoecSU^@0RVP%NQq=Kmx4WK@qtwwcKF51xNrWgI zc!%(gFcQd8vMGC*#G1ZuXr3N&#&z#a-p9>yd*XO}kawH}8SQ3q%I^Z#AZA1uyF%#a zFsuz7N>0q%tq`W2_e^RC0RZvFsRF|b)BZl~)w(w6nOYlV5_6*jA-Y!g?n~;A1rsD5 zbxcX*wN<&LGg-*`1nZAF7JL~+<|A$N$dqL5h(;F&?P`5Kt)~M4wVQK+2!}U61qhZT zW{;H~=Bj+E=TH4+{N92MN!$!qRF*HjEZ z80raA`k}ZPV)WjTm%8tjElwE}QLr4itLXgGdbDSc?fO5&QBh!zgtQ5yXw_~>l^cyd z&Q0+hO378GeA&C_;>$C&#FN{9xZ~uW8woeCvvUos%QKlIS`8F*JSRmUf}8?^bpQ-~ zgtw^5tPnOCAy^4^>bM~3Zo+&E1ebj;uDe;DvFm}B5|syD&A?*HnvS(8eo46<8o>jf zh@TR6%3BAfCVakkIE6T&#c0(GXC^}&32P9@gJqL)eyv(TnBer1cNc-c#?zX!9 z&tF}hij69OMkET+R+0kgAGG1i!WEi|Rv$(D1YGI>Y!v|ls~2v-I*UdA^M?9EtvWytXljXo~rQG6`-m7I6l% zTnLNwZGNbs8>CELNeOT4vYXa+@ZszNa%5YnS=gY;M-dC6gFzaY5U5rds8vblFV3}; zx4G}Tc@nYV>?yS$u64hX|M1b&LDh4X2Rf2u{U2Yw<# zU+#(k0XW6E>JoeEuXU*#=Y{6>#Sy{8mnhe?A{FR1yX*+L?qBScY!P-cY+;g8VvqRY zZK;osx`+~ArX&EeHs=_+AWX2LQ?knStYU66P%dxe8*}el4GkV7x7DZudKL06Ucqgy z+w;dPxgns{+Zfw6C~;tGxR6Hio-1*5oU1hZ)J%8E#RhZQz+W=QpWY$ zKQ_+3_b1pxf=p8z`^p@4C~av_#I%sh#k6I0ghMgI;$uZR0%(W|AG1UZ!h3jT#Q)7t z)z*)5{OCRKCe!RP0D%F1_HD=RD}^#&ZETo*e_ydpH1H>Q82jz-acb9O2VO|QtFA?2 zR7P5(bY-?y8SOzZnBTy`_*Aup_bKT*NN*@(L$9#%>it z^~vFBeAwk6N2+Xim$7<0kXA||JT zLdvS}uzlrPe3ZILt7u%FQ--HN##0t>e7}rV%`HZhGZ5K`pzVp?nmz)nB%!r^(0Yyj zTP?vEu2FMC#C9wBn~5{T9Uwa4DCxOkuq?^)5$&!U=JdT5jN?ilhb*!~S7P0!yF$b$ z9mT$wu<3b%!H#Ek4j+xHWa!_yJ(q#K$|4Wbf<;QmOUa=$RX1JgUqlA-3EcVi9V@XU zc$0fn8b{dEaedR{c~k{3w`LSgPLAEmr&8d@gMmMaPIS26Xa{D*G`hd|p9{?;=Y}25 zS6W7KzV?!9n@+>KfAt#*AEmt*bFE}3Z3tdnW+qgr?_xnyYD9d}^vaYmilRke$V5c( z`>q5}ArUR)Qe1q7II*8$I39TxZUX`>@SzX`Nz;tfMpsfIpd{ZvtTk1Bz`tEeH3g|S zcq?MU@_1wM#%*mtw;Inef6Cv*Un43ybTD63KerT+Wk|A7%ung5aMv zX)vee?Tl%7{RkQ@@qVlTSVct2WX{kj3-jGd74%sVn%^^xPGw6GJec<3Z|vD zXbecaDbW0m2=lU;I4fJ;(66jlPg@{bF`fjTOp$-cxZpeIdtktd?z&{H445TAvq5Gs z)=2wrf_PU8iv<57VXeoDGO~UoVc#>q{YplBD1waC{vY1vjn5xQLcG9khu4gMu*Tv_Hv2K3Ry;h4Qp59=Qg;&~a1IT{ecvGLNVVirG2b zlrjqJrCaY2OmA-=fVmqAqdFu$-0YR1plb>w=vu6DU3s!X89JIz z(?d=v(L-jM`uaWL*Qmuts){*~>Q77L!4jDog4~~+B<@P#*q_;C zN$kNwPbCUD9t!22RoKFRfl_ODg5}iXA^JE+dj<`zg9B_)C}Mk;5iXL7^?=&PI5Ya? z&A2Y^W(8=N>8P@1gZ{|9*vY>5*l%#UclJ4qm?}yh@9w>*Mz~{o4684KRE?x_82DQ` zL1|PHAK3`b5xqQ+!7f`oB|gR3{qQor{d&jowe~}nFlBxf6n7^v)*G2HpxSyp>c{$P zVAbm$Q|G1`q72io0&M;pFbv2cO!9NtARQl})(r&`MKRMKMt<^#S5X+<865q$aBbNT z%Qj-@9VjBm=jv4A2&C%;bJyCUPV4%ejs=W}-VwJg&06vHqBR3;Nl_WS&(F;ZT@ZGY zR8m6mSB2fyhS7YK$!d1H$0$&)#`GckU9UC{s!*dSG?TB1u>v0gG9x8;&@mF)R&@^g z4MU;IZHBC`Ot7y$dVV0!v`Q~0vMwNt9;3Ce9wa*O(RCg82oR(j$S=jinaNDcb7jI4 zkK!HQv`pHSzxh|_8JnmI8baYa)H49(yREc9Q5-HB)uTxX`yDPRm{#=HVM|Sgcu zQZ5eL6cUdIi88;<3`D`fSLsa$ZjHi2&@4^}OyhNAnJz|yExx3^Fgqg64kOFu)HPB< zFXBDSNc7ZgkW}%+aTdh^?38$l41R4<0Akg&MY;~|mP&_RO80rV8)d*OBvmf^q}73_ z_zQUsH^*yXoB~p|p=DC}m?XWQ<7)Waf{?;VCtU6E3)sowkR9>9ZEM$!?=^!jSsJwS zRR8W+Qgk@4o~c4#cX2vZ=`}wovpgQh^fKc<(@DA4K2euFN@)FNO+A^#(7Q|%loF1M z-R@uN_2>n=z3xYJvc$An%@3;VfO3|KX=8tLOV4RsSi|5@E}a1VVOh_g*3?5&SPAGk zua2p1YB8h4mYZ>+b5ErS;R%-VpPW4;D-OF=1>xE+%jAMcmBBRE`832}X@tJP?-0Xj z>V+BWxaehzb6(4pPtuz1hY*8xm-EQ^T(pVYYIpC(&W;x1hB=GZGpm9tf6@4EMedg0 z0FZoa2=ij{N->R8z#X{#BBnNG!5%9v3s&|{V#W&A7KeCC#E)B_FsBKHPoVrotlc@> z;gRMVEp8Hv6z~d<#`Jw5-S6h77$tty1$`Qii#T<@syM{3@?clJ5T=t~BK`FGI)MT# znr&N3IvzrjC^g)RPS~fG1WFU!saY+Bkc^@(3g1{das!m}l@E4BbN^@Vi<5H@CKR_3 zi+KDxdVL0oRUWT73|ru0-_3jH_j#Y zJ3L5MpPezr^_+7HKddm@QsvspL2eH%e|2<>wUaDu%m$KnE%yY3d0&=3?Vx|taAwCe zIyRJ@Qv?HaSX|aNN`*_z_hsQN*(?~~YMae~iosg$VzsH zwY1mzgYqEmFW>}}Z>g#+Y&zR$pLLeXKxuT;r0ab&5lCh8#&#$h(j~oN=T>IKyRBR^ z(ii--fnrbNRkzoA7<~4Z;gy=n|1p832i9bYL9hO?J^O%l9P^23?_XK(;0qem|K$PH z(Ayw}@$J~MBkIN7&3u4Nptl`bO@ozN-sH}(3*z7AM8#GfJOG8{P^i06$TKnV1ui_8 z%}V(+QwI#-jS+>~!c-5b{~QhGysj!)c=Mn(Gn(}R9U?Jy&X}E%t-KJW#cDIjRgo>a zl?LE4SAz}0zK>>X3>u>wqwd+VBRI;WD2oAzyAlS{`P32Zo)6;|AwfPV?naE%Qca#4 zf-b@C&q{i62Mj4(VWal_k7mDbWrpIcF3uIByM#dBm_N}O*X(>_-X(d|mG?e`PShPP23ZDsy_B<8G^p5!h_LFZP9;Q;k9eJ}rX?4%3BV+Zi% z69+>G$j4FK-i3wHYlVTKaGWR41x6fX_lb5ogmF48(c(!!UjR&3Rm-Idh+(Ui=S5wu zzmcKiozUNrM|iMAMkqKNwvVdWH`*&fCO-cko9M!?Rtd8ZtTPb^f0cKBGg&+movCV@ zTDVTqwGFoG*E%d9?4mMbC0MdqSCE}__XDxyQM8*0`ows02lX;9F8rf~l=3w?g!s0k z&Vg?njVHXTLY^gMZNja73IID1as6CgK179Cv;)e$L<~^7Fzzv{Dcg1x7R0t8(gQpK zu3XXT!KRQ(9G-P$HzD;BVU1@rM?g+hRh6(ymQ)o>wWy$LnuH2n@om z;?ST4-0;*g#9Cf22hy#k%4vZvwi55=f>kF5IcQ%}TE(p4Xzvht&8YIZTcj%oX4G_aMw z4}(2b4EM?&g=r6}Z?dOau{GN^J-(2zO1=Qu#pTosN@NeQB0bx<*FH@A(tNnBRsc?y zQ>ItkjMBN@k4y2;ahEQrcXIMk8?nk~0Y4TZfX4%*sU8lqc%MNz0_|M*>AA^Me?lG@ ze3!5%(Wz)$bCW&}OH$Mn0t~vWd4)3AKSrstdi)*cX4o5ZUcWQAW7GOqet<6MWnm8? zT&L$=8Xk7|aG0HXCNHS^l~sMquV!h?He8y@!Qd^5?<_81eJ?q8oG&zl7KT#@rkv0Z zdvk8~z7D2;cZHiLF9jaqT6sG(#Q3BzRchmuq#y%}F;O8UcOfF7eL5TP=e8$dLyEP?597h+^!S}xzdz}#n`jA08Rsn5ZeoK;A(Ca!>RD4bH^-^bPKHhL|7L>+v z>aKFd(rSBD`dtfSbNuKK(L z_*#H^ z7BXWl1@AcL91UjEoHZl=y~%}gLCZ5KXYxN5q}Umqp62AK zWFZN(kS1!c`bgoL=h)mQS(q=C=H}k#yjg*>azs$cTpHkM_q|pY2TYvSHk%7Bj5=;v zXYjuRhB%r@;zbJCEp%`{v`&RY8MEuSvgV(esFCjpyAtAR=xEeP!7cg4U|Q@HC%BR-`MWDJ+HHd&IEf8lRMd}XIy(@!|+;1pyc9HWvueZ{-fl0Y5fR_I_8BEOK7SyquET>h^ z-G|6cV7~d;qYy8aphF;hBRrN;F?476Cq zbZ4No7uq?h5X>}T4!GKXr+9G*_}^&YQ1IaJ|GqottJJG$x;9trI%JmgB}2E zU==-{54N^3@)sVAGi7aLn&N#lzDwV@ti6Hs|1jc**mXCZG;q|G{;Ud!B`lC*&9D8x zh6M0W!^ABoEqA&a@|Ztae?^sMw`gG1$FyA)oLPG(q0?R}N!V#SgugvE@Z9Bc)6)`J z!vK>|<@7uFNt2Wg28D{~mh8#pK|QP&sD=0cV`f`_02(R5aRb3VAfVv>b;=Fy!GlAy z3DAnU3$LvW-KMx{l(1a|+dCf1QR)`kB&aeFi^_3D(gkV z?vUOz@HeX6sVGSbNgpO>E~%1cMk1f zww~j2D2Oozd|$svLFNj&+AG@ElO?>D$=SR{>^4(-3U(}RLIO{A z*>LujrdW*H(KsN?D=ouG!QhHQ!eA${v<9pGaK2!_dMd~-`lO8X^%EybkuOw|3Rq*V zBfp$BAt(F$|b>&|d)3U8$YTIt#p}MR>e*2T~l-lt@mHc2%TFC!LtK z(6as@GWzndSTCU8K-T*sZGPz5ySVmpG42{^em{=}4&kKtFk;G7(b?XUL|wPO3`Zv6 z*mjuq84lx?ta{f81%z)PPIfL1?{2sv9ga^SibYo~Y}@L30<|!%yFNVEHSZcj1_6O) ze98Pv!D^e-Uxt@M3v-L}cL0!7IY|Q~P-!9WU0VY9&wAX+<}?6q@N!Y>2=0eKJCiBi zDR%3&%h-h>=K)tQbWu=Yjdj(58x8>?PjxDbf~s5-M5=c8_-5{x(`W7WkD}rcjafSi z{3B39(-;cE2R|S_ct1rs#r}EpDFVh}BBnXpIFX<4B7U~qX0p_V+my*c&Z7q7PR@%R zj7Fq(!C^`aF?&ZlGwG09gqXAJonl0VnwE$*bT!haCc1B$_x{%JJYmL=RPvXcfk`M> zOVmafWoW3v^0Z;H81bnC(&9vBvLVJ)0Nd87sW4dbml14xu5(VvuSLcb(hj+TzDbp%CHXA$|B!$bb?@BzUL;l%F$z+7$i zo*lakIF=3agYyvF!&&+x({@fMa|C z5!{8sE+WBw&H%-6GbP|nx{55;yHc@$P?9E>s`Sni~PJJD5)b4?@JDKJz6@E%EZd zq=z}Pa7|_YYNCONERFsE|34?tq*h@tjN`V9HMQGSjpw=Jv?a605l^r{Y;)XbBZ6r4 za1O#~ z2S8UXE9U`y<0@vQ6b@X|$UdB?=g}IGfZ93?W=RqZ*OIoRB+o7$A)$?WKMx%NSwTqe zTKaRf>z6_cMm(k#88-FsTBY|{$Y{uLT@tElrrraOBgbc** z;lOpj1TC0LFb4-!hur}oxx*Y^A2NyUjnB|Ss9$ft1xHVNKfyf*Rq)CSZe|w33GE@A z$J+8)O8Zq*V7F<^^Ng;-gQt+9+3Zff-qMs^>B^6f9^TC8^#Y>dV( z^J+w;-MLyfLJ}@sz~_*@>na>Tka7d)MbTPt6?Tgd49}Oag2gN~T)zrrI8z3sQI!$n zRt3EW(M<_`Ma5M;ZPTA@7;Jhqe{R|i!*kdIExK?bq%c;N<~k2<(1k}qr!6vh{|W4m=rPSmsRXSibRQeBwpAFY!!5wS#n}}_?`B=b19opt|1W-2)6@> z3%esf01r@VKBG|u0QCkZpQ;rK@)8f3mG=eD78*Bp8DI>A|Im=wyb@vH2?aLp2+9y` zO%|ha5k%=$n(LW{9b9znA;~V|C+!7~^W_}KS zg!C7Jnmo0}pCMkLhVYnSiyA!mHH)cF#>~#*yPw&26UrmtM4w($0Tk1H2Ow)8X&_p+ zr=xeX$Vfq~@7rG<{0^ue#DnjFH8fTuWd=tBh5j(gWB1dh+#i@%7D z<3!k-?u0sDwkJ0#kUwpIRJU(8?kcER5BnU}jDliu!`O5&bWF6Z=t@k~nh+_QA1TKp zBC~tPNQ5PKmU0gs-?>I#5-;rHAoje7th83j#iS|;>bO!x^rhMKouidIC_##IIzI9H zS&z*(D~fTxkoAP4hjr9Jpy%sZQN4h4a*33D#(~`Riz!i{81_PU&vS7n+c+`{U_UAh zcbiM4A?G}dm)W@_`TPZbxPTs0_PIOmNPI*plJohw^p=VHKpR%QuSXcu1xV3!SbZba z;!toNc_zrz29md9u21$}N&&iNQ7WbEKWkxnTQ7I)Iw_vi_`D>ku@*DU@oat|6cM^r@MVZ17u82*zACuyw|j{t3}5qJs?A zobA*)(f>ao=5im2-P{CmIF~3-!FoX2oRWz^!)YeXyd8~nr0g>|j4jyG*fA%GtF+%` z51S=!pB3c$pLcyJ&=hq24eJvPH3zNHjQ@*CF!~h9jO=g}@&+qf_MI5+=GmNQQ<508W-2%ixc~io6dhxFk&hv zDYbc-M2SZ%4~Ves6a1fR6Ly`0$0i3sDw3{Obv=aVjnam)B~g<)7hE+Wod|Ck*H%)| zrL`PR9br>J8{7W1jr735V1%`C8BM94_oQsbYU_xhS+=~ViPL;~KIb4N+PAmu9vL~x zmN-z~+)0r@$eeDM?S5;iyWVA>)abc53G{aUTPRJK6A~0qs zhy*s&^`#CL%AVRVA!th$djvO#N(4wFqUB5PU*Fjou?h(N>31uk>Vym(FB-G(&9^cn+aX~wnrS)|&PpsUgHw#^*QBO= zuF>U3Ii~|bcqJ(>_G?GSTD};CJFj_8tAth`0(q_!QYXHI58ZpSyOwKmmwo0k)ioZ| zP^VSi=MtQozvD*2d~=_4#HgvcQ(_lN={SQlm+WKR?l$~5YU}d_;iut9fM^{}D$kgb zumqbQ`pjyi@+T@Pjg)xoO+2@;jZjZ+2|GP>nn^?2Z9DZ#Np6l1VRSW!I^p8vhu-36 zMW8$S*9iX!G=b16;qz3L6i#81WshzuonBCtS!EuaTq>GVX%!zqlRw;hQ9~8-kqiP5bd`nA0Ff|yT zHjL`!S6JX8-Gx5MlTQ-wj;23tgEX(NM@0q#J>@Yr#&^}=|L~&|RgL>sPQqGmsi!(8dhJ(+3DYLQ9kf(|B zYu`zkDA?Pmq*4rkH51?dr){hm4K44Io;rftQb;2NpTTe&1xN zOekHC&J6UN!c=AOI0w&rV(4x)!Y`4*`Yg zAFN{iH8GLhM>HqoFPM&GH_PpYnQ8#p7-Lm;&VYqzoeJW9ex&WVSf_sej>&*DTW?Az zkxG_j=`&;v_qQBScBLP2A%fpd=4+AsdgCSZlgM>`Xisy*NW*-Fpb(y* zl71LMzrCQEqu*XHBq~nVFL#9XF{M=#=f$Uj&fyE~plp4*eQBv3nI5yY!p4~??Prk= zCm7M?TIHp(QVlTXBSzaIXlJB2K0e1G_4$Bv0a(pht&4?A%86H+^TXd)xq-aj76HsD zIP{|7V&BAufbuu0fq^X(?6W|PPk=&A&|`5#O|*4TQU8+*FAs>u)us0j%|BnY%XI$P z)%UqvTLuvN#_1^v3HpYaBB&?Lglk3LQA-t0+ZihsUUpkBJ*{9l8|2;7H_F2u2YT;u zWn;(vcmp1)9VhAWa>*eQ$myJBaZh=y3cJY={rn$L-uD9<9_An3_{uf+LBOP^YeS8% zm#9p1f!UqxNSr_tWv?+#dtk|Ruk`;NbCe?P6vE->>cK5AdnfGCam@up#U;iVwbrl> zIYEoytxErua4#h|9CZ$~RO!n~>nYnt>*!z(0yuIiM~gytqfykz;qKaB7=pXgfNF8O zEK7o1$|X5(jo_=J?8~G~rm?mON!H-~W1STuqsA(jDo3?tNACoJN-?SzwQYcIIQY|^ zchziLjrI;5Yr&K6Q4YxtY#zxHRW8nrr(1ALYI)h;deciA8f8DiVaHZ=ojjwOnou8_ zH!;&wBpziBzZrqa_%S!RIjlRrWIvP`G@YB>uv+r-n%IN>qFGKx_a;euo)VLekv(n# zcHSsK3y-+)^n+{Y=H=y#YPdW;efd)+yW*v6Ad6Cx)40Ln{`lEHBjGeZB-)_JQv_e9 ziL$>5|FK^?Ah0tvxTMnqi59;;K$P^Z)`*4P%9TkP!JC1uKmnhy>#$F)0HiVhi@UV+ zjhpY))3K=>^YTLsIsLB*5nvygv;*~$53i+1&EB*V^ItnwpCUXk@6+l?ZM&XyeG(N+ zkBykl(hRXfY!NIlb90(3}+SYoRSf7!fhr z+>pYrtjv$cu6)2UjJ$@cbW#%BPdHHtsOGTbl?byWlojdsWHXR#28wy5^SDNMPlwN-G^K}! zdfqi~-NA|*vb>OXvz;HcSbPX{tIXdhJ?u~JMYE(jI-X^jO0VsTfnP`9U)I{09X2aO z;-~*2si3mVKABE%z#K6XJZaL zn?~fb!~&l?``)HPp`>ZTh}D0~ZR6L-T3o>AId$&F(#}+% z_{%-;#kLXUdV0@6hXnML8*MV|>b1)s5ZSy~xE3>F#3$jC9Pym?-MrWR$ z$Y3gRyC(qXnMK^W_t3;4=gV%}h69c-r%_fWVfytnxl|703^U!OiqiX0sznjRvs-Bwv}i;lf&Y{SD+RuC^~oD%!0 zk|hgl1@^71LU-`#rklUu3j+`^#GIq>EV}) zSBYQTo>N^kZr%1M$h=9o9iz0`bnVn}XLfDF77JWoKx~ zjG-IuSqry+!yf!LA?%4G04u=X%(q%IMVUf;L(BQKenzGwQmH%AAJNu{^j;!XIO*)v zG>qVK7TUVWpP-j;19X|9{ehIBOeg}0AQnbgsy?F~$&Jn5iCt zeCYJ=lS6@hB@;61RzR(1v}d=qRkpLcHDUjiR5~WJ`CK=jUhb=Outqa;yX&;btv^)@ zufrlM0hX;oC)mL_jIv`Or3T-7q=`%^J`Wj$0#oo4kkpsRl#yKimfI* zk~+;z8*I*ChrPjLxRqOdLxS4Q2|iTLEBa)qxcdMYlXzw~8D#-=di`q>rq2k-KRnB1 z{%*KntlO+|#X>F+tI9dsQvcSQ)?V}JF?~UTga$U{TxbFQ)pE~_{^cG#q3j#`zxNz* zZZZ5HsP?)4C)z{dn)dzv5T9+ z+gwM|MfLWv7^1TMY|Yp0dDH77ztV%MuVutnP; zu@)0FjSH@WVnn)`-7o`1tp^Wvg_72QN_mH*w<9%(()rzu<)U(+f$U+0LdosyF4s?; zw8e@`h>L+cJ}et_D!4B6{-^e4 zt{Q}Fe{F_-hCU%QoD3*{Q0LpGwwp_)p6>5`>Wd|Jq0RTIS@C);+0R%jitlW@_wtGy z9DHl7D`!!`_V>{w3CmHxwL#me=6{Es#}rYBrq#)$1(kZ!Fr`Z`kmm;FWSabVUc9&Trr9`>JR8CzWGn z<}V&{p3b=PmJlb?O3djeam4=zs(k9^;}P*DT@r544;-g)CRq?-eWTK_IB+@l<1)qmbP~(=~*y?8E8- zULRNxMF9M-J@C%>KTx5wD53w~2;rQRFUGR8DatRhE)jGf7|>qfyr20A2b(F_H25`R zdTb(VFw|$5ZO`HK_hv;Ql&~5|ixloJ#Z)GmlA&sBM14!%6ov2H^N26bq?=&LWqG)HI#L#2Lf^PDR1DV5suLJd-b1weV6$l0s8HbHuo8+F!?rx<6y4#lN z{SdbjP3Wb-7Ck1A6C=SR`Q=2Hn)#=by7g`YWz2o zvqVUHYbUviQlfLW`Z3fayBTK5hdqj=``8D@}M42H8R2L@DYF5kyd`!p2h|X zWt)kV*Lc&09j<`N}Rm=};mGvUl zq0OD@{0){2KKSCKRlQHPQ(n|=8Kw*8q!?*#K18kU>l6;y2v&O-TTzhuoN6(9!lVBO zVE_Wg)0TdU`j7+b1Af_9&}*Jd=q1lju<4&oI6N~xIj&nTKC+xcgKl6?jUN7p`P{(G zH|@(S4G0cCx%x=I)&_lR)+~+WMt5||1R~;w+2s*&NyaZGyHDD8u4`FYaypR{W#mWL zVjFHwd~FMbK^N;tG;RM^;+;wmn%tlTbUyztQCZ*O+yurD&0@2a7&S2x_B71HM^l4+ zh;#^7>L)p>tOTQ$QWB(zOU$|yRY0>kPxg0bmM?zb;3Qcye&STP@k zaD8F8Q`+LVxGLCLH1zRFh`x4D{Uqg~A$}*(i1_ue-b@fY_RB=r8kme8QIv`bS@30T z<~TSIV84fwrY)>;F-|W*v<5JXEEjf$(&8>GRD7g^d;)CBeU#K0|Lp}b5{e8SYhkLB zZg-%RR3WscyN^rv&RViM)BKILAsqqeUv0u?&ifu2NZZCK17$78E3<<^22^3n-y2{< zG7Y#@Vqy5+mqKs@P8X-VgbAXGoU|Ci@{-bq`{FgAM!4DDNPjJ-8o?+(u;lO?%#;pJ zstm=fJ?;q$W=95eJa;#q`MNhkGVfc!h2d_6l{lsbma`PL_=&$tCZPoo0TI%cIR831 zr5L1z1 zo1f+C1Lf3Z39H^c9d6S+6zEP8!l-t2^L4MI0Jw?wv7QIt!VwnBw~0BevE{tug|=x4 zRNP}i)vHW&;?*@qU0*>!{r+Ykrb4=%dk3um*M&v`eEC{ z$q5Xv7DVXTxb0t+F9$z9bUW{5gw+I<*_`CcnULp2J8QECP&v&crDX9+jn3&-`5I3_ zx<8cNnC^jI*kyJBCZa0u{c`zEwH{CQO2kAZZ~u@v0ABwb2B011LT%1iAC+6V_46lO zmUU}r3p-{L)UV>wXuon0UYC!9iMd&&u|L71c zuvB}DIFrLSu*DVDxZrHxv)DL}iqF~Z(tL1LA!R@o$&QpY1g4H|q#^@GWzq={B9(sjmYsIHe{L1mbw@bNwrc9%$tcmDq^t0^-8Q2OOy-ne!Yw2*zWO zaI#E0T9H3<5{qkzrX_}ZiWdYbDCRJeJ?;&ZxW;PftO=G*Ct%WtoDNzq4yu-$GuFWz zI$cgkL3+}t%|y{2EHZwDM$Azx>q-~1$3QK>_od+L#@g5jR3r(`6W04=?a0RhZ<;DfA>z=9B;fREHA^6`z<>c$_Rwa% zw&WMr1RtU4xioMue!k|<9U;7+=?Szn={0zhvjbX%&aCa0zi*-}8_}zq! zu6xqtPe)|KGIlhh5TP9Cs2{|G%@}lyyzmf1`0Nb8k@w;v|J!)RNI}$+2}}D_tWpR) z>ii7q+bP{@yCrj9mi;w|w-8q@xK!>Ja1U1$p7 z^PqqJF}!Sv z%kIl|A+l`7+EpaJEe--y#GHu|ZBwCFTOVMSn6J5m5xFAw;eKqP6uJZAVcpR#8smWa z@lgfCyPnEKpV}*Fj;s6UK;5UkY_@XnD)H_LlKuYK^%6R7&X?0CDP8s#^wXUwmB|3B zaDvGTz3*e4yZKngRGI_hQm;ih&vG=eVDlL*t1jb4IyfmsE*77=)O@pt)4$co&aOWh zzSaOz$sF`TvQZpf{)B1yxS_);G3~5vb0|}UgeRt*pQ6i(Ez!)Hxn_1Q-WNQcIh3QS8Yo7q$0h9f=+bNz>u@O8=^)SThuY*ME$0a9gk#q z3xRK?^MG@jp%+hc|96xB{q`Y!v0kvp0BTxoI{S)^$oz6m@y>9QQT|!3lRVzxB#kVg z_TXl8ZMKayw^ioUT)GJgTVrA6gM8wtT49n$*M%kXercNLuH!73A5Bcvn*cMDhK30P zMWkB83>wRULCjg;u@MQU2TgBr>@C)>k;)5Bh&wP@tum;EAYuG-sVXkmk^JYoEMM4H<1C{W88}| z-@}xCgbRB@jx|?vfn2gdt&288VGf#4sG~hMCa0^&JYkUy>dQ7pQ<+4xZz~8X0?|Y8Yk*$Kay-LurV59*`tB=r#_042|tyo$ai!Sq{i?Ckr<$%s8_VR7jF-49vi=OM<$l`mcXkIS%h)tl;j(I$vXTjnP ze&9LN5nH+z@8l4aFjUf0ZPiG_0<*b9qQ*pAROBTdETK9c(O)|_;7s5<8Vv@e4;W&K zqjKxvN(LzsB>UU2cNeHvJX7JzeH;hw0H$1Z@y;mM1hxjHn(`U-Yhi>9!77siYx;JQ zD#JQ)WH+c!(1l#6-l_3g^#2XVl%UGhc(i`wABoG4jJqr2WKu2W>JXu|nRL&N%u&jf z#5z^AyS&cMcLFEY;vP90XxLQC(kBPK;o_%X!L|*}SC<$VyX;cuO&`hveS`*rFPKg9 zARdSKh05;%sf>5Vo$c9oiNQ@J&NF#zpceB}TZNgaZ8fWU9JGdQ@et`B^r>44#Pjpn zS%xFMDGNQ&cAV!pQ`W=brfq)UOei6tL_7|96#OtQMrS^(!P(t^7uKiq?nWenpZ*{} zeY@s(Z?Qm$Ii|p8%FM@s9g>3@B7pH}AysQrj1Alnn&6fC>!oN^BoYq!x}&@U>~vKL z-*r}^QXi$aW^2A(7nR&|7g86j1IyCg@$o#fm!Iq&?g%6j3t@Gr?I03qiBYw8NsUhj z1^Gl^-m{v=tcfM~tKlCh>g1MFUCqa5^v}NNI?!j{gFyyqd;|>xxTJgE;ovDzfNn+h zHo8v{n#2y*rK31L z+>mo5sTZp73uIB3T(G?NpJS%T6k`w2eF`M7FaNb4Jr11ktcH|d0zBNivlyX%CLCay z-k|RgS33uP2Upx_^o;+fn9p#a+*dwT)3AXNB>n9ZjtHBNb=}q`hCa(cgvePMYZW8! zLAx2g@*>Mxjv3yO9o><2ljGR=$msA?x@KRPqyS_)s~dyT#7?Y>^dC_jk}LbdU1r^k zz}(z{4=}9ae7K#w)1;zSk#7mpr*0FcUiIk|tz^_fHflm7P2%m92A(4z;rRGj5T*mI zOmL+?*c1tWL!j>i?p5T@?A#3^Lef=0w3JtX~3fF<}McLaIih%8QDox&a(Af%Kx z%Z{|G%M(ww`}*Y$s;!?I2T;J(MUom79%SQcvY(olmT3Z4R>!lOJ z3w60WuyADHjUoBB{k&HgH~PN5hc6A~ChTP&AHLdVFp$V2ItJ7BoSNCq+Xult?^Pg> zAcB(I&fuk6HRoVVRiHN7cU5;%g%v1+0=fkKAEar~*PFop(ZnhQBC;23R(t?dfX_<9 z`Du&v9`dl?slv?B|BZ4dSYV&I2xqH<^N&pzAn}-tf8i=+-v03I8t2qIY!@$1&fy#{ z(Ys+P#Oxy;E1;-*Wya{*8GznY2v!}}wCV$slxM$)m+~?RkR?=AW!XZaTl_?iP%HJ? zE>V5=Pv3%9%JKS?6%`e*s*dGFZ&Efr2$sjN9T z8J|=57$!+c2tS+whOK9rq&nK^xj)ZB&i>l%jq@j&o9&C|hbdou`;xVYA-F#-t_1h? z0S?;*m&B3LSBy6q3b^24lNYcK(wt-HKtA)9H(GO17b>lNGgSPsQeAo0Nln#bIuMDk zJ}jtLbYhU57@x6=_ON;u?N_!rhL}&MikR+3$)%+D9CIw}_kB{89&pzVAl(MtFk>4U zK2BUV)dUbhMMadIB9zC_&TaOleay|(Y4`O|?Bi2F3Nq3+xdHiGKyt2TEfB?-99k4U zCQybu^hmeL(nji!;_&{sX1ZCv>|6Pgb;c`sE~0%@MgZ5mF?+(Kh(*QO0S+GCG*N0Z zf5&I9q}x}7u%~c)BGl)n{E*vez>j*8h;;a$D=f-mFs!RBi?*^V6obGDl#bSk!ev8a z5sBN+R*fyks$(`3zubq?lrVSICN_w7skq?6uXx!Fb8Cn=3ctM5+n*AFjLUYYrph4= zk=}O^_;lsfmLyV5Z)G_P)`n+HK<)%C_hU2G>!!p9`i(RAy{MgE5QN%#olzQeN`HR> zRv}ni0*C);jb&YBm7HRwaGkdQ3PIj)r!~U0t(myabpTWYf@OU_L@s9btD*QD-O>`4 z60|ZqBA-)-ZzKbq&TNj<4mE%JP}6$9bgE(37R3dAKicayl(QOhT~z)S{z&Hav8@P_ zMw4J6J%ctKYhdeH9*%py7`fPnC~2dmYYAcG-T1j7i9G*t@i}Yv62v-m6gIK@g|=hb zed!lf*6&$2pLh+yEQ&s*g{1)#lS8=Y4`oobJXBSU7MaAM$&R}L%E61=^WMwt)C&x3a(k}r0 z|Lm{B!^#vNwQClEyHs?OO)Q6|DHqC8A^rdE}X9Y8Gu zg?kVo6C=ZX3I5?}sfv!(CF;l`=CXAJg;q0DDL{*@ErFN`w-sQkM42j^ppreeP?*I0 zCqE54j{ki&k%+cjD`+vbLzJ|1RzC)OMmIrJz}r%qgbx$4dk#(1w-X^*#|qDb6Kw zWxanYK=pK1#w5bi7RX48A^>^$bMbN)71K4P*8^^q6jrYKk+X5;Zp)nUx>ZiH9b&TLd`8iai?` z!~hLmgfS1sa4y%6BLO&)#Rfq_WqW_E-z6zir~5);zv^Zk=*m!V^k+`Rh#F8!7N-2X^7=be z3!a33Ed076|8vrv03TJHvkX|D@=@;++ekrtv==v4FNEYhITw0^LtLm>8nR zFY1XnY~02*o7I0!*2h;k%M@XTvc2>k@1vI$gxS*9hnB8Bd0Xe=hx2np?dj?8o5O<9 z1I&+I^JlrNwxcG_Mpad=ZVE$UCi_C`XDt50BF+||M7PSMgsmP|s~szfxB@CS9oFOF z;tv`OKYAix~5q0z9G zqCP!j!TQ)3MW~mM{AAv;L2mW?!l>1bt7h5AzNOyMW)8qeH-Ti~A019vt}pMa=YW>5 ziztHv)IhEQ40qehHQFWqg&OB!(M_VKg?0n7EuVI<`LeLai-7T;3tjI<9#H89$!piN zytR=4ysz?#vZupwpNhAf%@_r%yK|PJV}C&#|H#YWiJIqr&uYokehUsCAdCO#++r5l zv&JyjF%+nbtBRiF0;&|?L)q(rqRcIN;%e3}s5-K5x@iphgw%wqrOMBp2A7UZ$&acZ zb3+A_Auhd$k0@b<@y~xY9Z%g6k>nAnvD0`O)kgv60))=C!i-2~|28xp6=Y)rV)i}R zq8W}!;zeRCNe&W&LDk*&dQ7n$85V|qW=0*#e^}U}Ug?Q&NiC$$_df-0k~sXtM-3BY zS22`6v8@$$Ea?5E6v2~FQurT{9@gjlA--$-ehkNHRt6xJd%aRe{JRxSpk9^EegV^}DIa@#ojJqZhE9_EFTMskli9IZ49LwoVgX`=(AZ=dK(R3bA(@tWh=q z=8LDYhc!HyJ+Ca4Mgs=Ytc^dNZ1$_}42LHJ&v_Z=`o;6+6SbLEBVD)txFoEH$I|Op zD7NM%ylkUL^~KWig%3z>l+=G74D^CM z7Yfk&F`y>1QfgfE-S2^PatxZ`rzQjXounkS{GtdLYOPRzNepc-Z^OvVYg6L9>Ymc_ z1dtqu2L)N6L2WUZg+(=K>qMN5))`q1N}_o8cEu7(JJX{^9~xRxww|Tcy~WnGq``Zp zASyO^;^`Oaz0d7Zv;YrG@q2Sb^HhhVmWEC|dhb3g6E;nPR-+G!a1SfjSeL3O3EBf)?tamYA6(^($GNGX6S+b6hz|Qrinp@M9Dg8;i^`DTtb+D)b>~R z6krVEXA#uNZp87W=aG1l9vmf1){<_9Nfm6GFyS=4-Etm{~ZQ{x8Y5<m4uh5B%4h z#)0LIh0D^9ZD0rW0`i0C7ve}KuUm(mp9Q7oP%tV-TP`gI6|c2L1$@EP^TMEL+ID;I zQdFZb{D-ioFxRv~;ehh<3u!-Dn~-U5l2RTiLf+#-l-Q+Y(J{8l=s`)q*Iicn1OZPp zDA@mg^;#hmGS|GZ;@vjQb2t`RtnthCPGwj>R+4g&4ST_J`AE0xqV|<1aqo|@`INbX zp7LP5(Z~n>@QvoO?;7#}e;w>%`uB-;iO^`#fPy?>?|D7<87K-4*O&1IUWEi;h^5gJ zhsL)cDPdQ)t2N426+4yXeOFg^O8q?X^blBc!o)c<&U`+QCy~21z2qRoRC@(Zs|mfu zXDpiJ%Q1zp6OH3NS0Z9VlIvysw2VRez+o9)sYghP>52sKN*>VkrHw6Y@MBpexFo?s z6VFa+goyXR=Ur65@_pSGMsqIAT9R)S_+@Qu^d5dBX9?a`kp1;m=m;ap)H1H zroNFont*w?*IyC5V3aWAtltw`L=hX!9FG2(>;t;>lzx0%Mew=&WM&mH_rmo5Hf*{= za@-pO__J`)H69nQMl6s*P-!27LfaGbW96L#7~i&&>P(81mLq$mTaGSYx30k?E?JbK zpO11bO3v6ECfzH zbhMY?YWXPPh@>q$_kWUJX7CU{38RP8sJk3a*rd7iT8clBM@}JNl&~^?02St~eeC*LQ(dBIx=b` zMkrG8e(OD_y(|`>AWj%^Z@&F@A7In{+)x)=n1vcJaWo{S$}UdN3V6+YV}(b>2+)lf zsotdQlj`r$K8DU`x>4|b5A~wLHoTO#NN>+=?<$yr(5eQ0w4WB2ALH1CSR6D6?DJCu zb>^bPDF^E%v7*a#KAp9rf>wGzr0xsE3e94Ar@XDAR4ZMJ&Akzp*{6?{1lWWvJ|(aK z0xNJL=Lg&<{Q-L~-a=_Y4*X>}8hYQUTPBai9}B155Zn?T9w|LilV7F~Zf+aRHp}rJ z6`q*lFA9?nIrH;s$0f56lH&QcG(6;3snm;k@0Xc+k9_h9Os2RiLVoQW_0dR|c7zje z$sAmy7A2&TT(c17XuT<2*ca+eu2)6UQDFagm0HJfd)0L?$1ZDyC`BrJQ1)g+vsLzJ z%(kNO2|bWd%ck4`uPRaLEqI5BIAI!UHklGO6HYkug$B8j{OWZ}m z^A-NW;iV2L_8uH|$tF(07mHR+o-C(ky-pSAB>Kh7&JP$kDkI8t)qDhI)5VHhqsFyt zjjaY;Od436to;C(w~O&jWlr%2Ww~3^r?Ib&*D0_>N0)kLV}8eUesv9hSKV2XmSOFS z3UT^oTwt&9Y|6YS9PNCMk4nu?r2wj)GXRsDDs3iWfvOo=E>kzGPUgwJCADQ#l?W;A z99*e`ZD0{+ul9*1$rroUSd{#mD#P3w)^sU$~(!coN| zk|UxrJ=AwY=N+#xvxo4=^jB3LEv%iYn&KE||K|faoR_?m&MGF*x)GCOxm=G#a*8?* zt&VQ9_&AG!*Zr~+j|J8LNBfo!%LlzljcSx6%=3fk??f|L=|RF&oVddtOR)bl|ozTW#1Yk zBw`uo=+9(PB2hVt_J>{6z|zcn3rcz_1KXcfDo)SF^FkwZ>v*vM%iA=`0TB5-I>-Hk z^kK3@XL_Xu=ONGo+tG{JvcMYbI$dzESp{9q_d#XzKLM$7qE0raDzBE)QJX4F2brjd z!Rq(WUy@&F!E0D3-6x?cS}0iLHqEG+ofz@_fG5583!*9Tm5mB_RDt735J!XH#U7B! zw&F%=d=pBb_L2|a0)I()W0)rj4cz+mD&Jn4ijwWt&BbUWbefP*z^2*LK<|liw!gru z?1E}KLPVBkuAKeeEJAJl7MB&KD*Po8zG8aYM7rx#2CqV7-Fa4z~OoP3GEz7z5rHJ_T0tdda;I5Tz2H~Lmz z*;OTA{>^QEW51&R{u#0)$gV7<5ySxQ4oMs8gX7%(xBV3wVL4V{F5qLyu_m}_P_P~^ zSZ6}feYfK+k6GP11Nn-tkI&867Vh0>89|t*ppPW}!=&plnuIPhW&@B!f)3EUxpaXQo4iRh;yeDt z0Z6=dC^OVr91&!w|ACi-SZnoI^Y->!IqNwhk4GGVX8SXZ6&PiIfHJ`%o6)RoisJG` zgszc;8s_4X`!iDTq|f>7fXP@HS5B4cu=Q723Q2 zWZ-H&@-DZ!)wZfh`Xeclqi3=yJHc%am{_~#m+%0zeD802#*OkRvz=aV+TtetSnYqm zPq|u%yU8xyLG4u#GC#;V+?XNU-5$wC9+~$)K)arsMVo;<_>L9zHP|m1upN-IM`_(< zg0Uph>p_ZHeCsDw)p_WfYkde2^x3YX{*r&0bZMPDJPK!;q)e60A3_U{nvy86(SFR~ zj66l_K)zt4NH|VoW?DCbHzbD3h}*AStHs$I{Ykwrx7`*#eCb>7QQ0b^%15N@i=jn` ztv_`8DdZ{dmKGIAIn{L=kv`sbkuUSv)Z){7lQ;fyT^~1?Drmpm(ISGYr`}{s!%cxd z<5#LkuKt!mp*%v*Ne%bYY9|#D98ybh(*Q#+J(SJ37LpK)Amr8y-EN4np8>OeH#@xxS54|jurtk2EE%V3%Y&?qzcwfa;TM@^0RHj2sAhP6qIukmL2-Xw()|Gq_*x)o~ewQOi-rZeI6`6Q+pT=5N{qI zwxSmx@SNinodlS74Qr>0B6~o^nE}nGuujs%vxyPpm$?8merGkG2+o`A4io1Z-H6%? zI-_a475lVPP&N(jhYCU)gsHox4OFaIJpSxWgO}SG={HX$=zKJ=Cav-tc{^2aj?!=} zcvl&vb(Pl%$QYfjQzWMHER6fMFI%{LLv5;=IXLX_12tUizLOr5$hz|hBJ=E>R%+e) z>}gEAkqIsr5&^gzb7LTo!_hX!m^(lH;UqP08uQpbpl}FQNusq&s=nw41hwR1_@ke2 zX}RG5dE?)<@4nr<-4DUWltIVU3QHXiEdc{*CpK8BSR!hIKS)lm_1#!~%e!wA`}Q@>8tFFp1pmJD>3EN%sZE`m7wIS4U*Z>2zg%p7l0O>9DR_vkG=0u8Q6tj`KPuZpov6hj@qJqIymv8O*?Fh`NMA7qiQh9bde0r=h zEIL_B8skStuw7>c)6TTFZyHe8x!@fl0Jj)Xo$3zN&ySS({%I1BK0iuj2$Ir&aMD6X zC@%kvS?80Cnj`tGz2+hZ_veX$SCfG|LfF1mph%aOIdD}Si-cqw z-uW4DjS%^?UWh#qD8!bYTX~Vv({;b(o^3iuy5?PUxZq|d>vFJeF7p?$=HQ6pyA#g&fRkX65p%^>cg*{ymfBM&>jZhbN|pcX5DZ*o*S7&Loo(oqMoJ`LK>?!u z?Xm#q*{to}CF=Q{v--=>-J zkJvO1FCBlVev~-}GD$R--AJWeES}8mhrxu8u~G`#FS`HOQ10|wW7)zLGbfO=7qI}U zUnCwVI~BvoqYqY zG~9M&V^R+FXj{uBR_u~>1V8l%#dNcCwHCD+4Pipyr>oM3TYc8quapSz;R zOc@Y-PQz{Z-JK?v8Zx<@lqnFcY_94FQx#VUW?P-ZGb2b5cCMt}CcZ+#wKg)+!HE3x zKYGnDVhU%V%(rCp)jj3r?nXbYN83&Vyn0&tvt@3Ov6?^a1n``G__H>-Q<%NM_g2mx zM1JO-cA9Y7-N0m13XanwD3Rl`o%*1}^RMf;y=1s}3J+hxjopa~@Zm{^)U(wZINEn| z#9N{nfTKo04cY95Fddfq-6xXMPuNI}BZ|M_rTjB^be;34@C}*PM$wUZG(&VGl6Dhf zjW{7*0%ggQM|2CYeR%`Y^yR~j8A|f$~|P|I1_;guqO8d?oq&Qm$2o<6iNfW z0*21BKH%S1S}SsfRY{)rV3x9&L>%AlLmd&&v=2;MoQh<@qkiFw)Yk!)v>wL?ezf-P zR6tN$lg=$P`_CgzPoj?}XUjO4NylnwL8*(;ewh$^X2^=LaVbfS39*1$3sH@&s6*Ww zpC1A@(hZ-;Ah-HkiCMc@6V@{b`UjISV9|*h#vuGS|Apu{a3 z7K({BUbaaDDM0oPCy3ST{T_j41vKrm?$X96JNC&%bgtlUnJ!;Ug47+Wqk?(jkI4trxLG*K-TFd8tAjf=3DTDaYMnTn+ZBt0g_ zj%&b_6VdGFM^&>du!|(cCmzr5VhCoQ%0ldsRf_kM$R(GrTaQ7`2|rRn|8+K906v28 zr-u*+&Rb1tH<8&zsxiV-6k5eWB>JttR7$twQY@mqeZ!tvWW9;p-lISwRij#Yn6GMv z%aHE}Js?Z;V72-QL@2L%4VC~>R*dlpK3a>dsquErbRt`0)&i8H`QK~x+`{@vOwSpP zg$(BPWNGS2^sSW+3Ku`@_bG|mO0Mz1WH1TrD92DpNBR`v0U1z8hU-4)#_nYjLD9{q`UMh>r7_f}XmZCm!PH4wlon6c&5K*7N>f6*CM1B6QD8#uNLkp zml&tFG*76qZhk+aYT06WCX;)Y(zGf#_r$AELKlXyaZ zJt6^;R8L^MLOdByxiz;mq*+aSU^m%D&$avC!xC>+;|^8T$MmLHjCvs#=hWTy49T^y ziXIud5^^gR+$z@hoQMsD<@SFZRTgi9W@_-=Gn}B9^OF{xErk z(EKKAOh|^_SLL%N+cC;gs4ZgG;M8vl0Z9cRAkp|EnUi*BD9VPe9U-EWo#?u#N0-Cm zcv@p3R>u9(3GCtFJ7ENXj1tp{#ouNDv%*G%ZB%e?8o69-sauZ-54o9!7*g)J4BZy(Iz)&-C zz(>BhtCNw7-fmN9I0kIe!Iw>Xc0TAeyZY{hBt>k)zadA((kfmzzQ>ht2x+djC_54T zQ-@&sR!*7Y6Y8#*P%Z-%e_ZcMAM2WBbc|x(6r!K8&hid;V96Zep{sh)VL?5lJxfq! zQd@=ef(Y1N48YIm&nM}YZF^lClaj3FeNz~;}j)3EP< z*~suoK3_X202W6yaFDd#&)>X!Z`Z*9Nf68tW%lgF z3Sd_Bep43%Ro$*dsr{8)r_2jbnTmF5e6H>B#lx2yFUwG+NA_|9L>Y(HSN}P4*~vBj z^`ae1Xqz879=A?;nWW8bh4}g148{%W-Gp%BPA5w!=i}n=cC~x(wNQ#SFQ(q@DhAtI zj!eRM;tKUD(T_+l?PVb(8KeUW6uumGdd;xHIr80)=z$=dd;Lu6@Fi%d@$aeYwdl0=fZ*$l`qYlo_@a<3ajS7E!_Vk>pFB&WTj1p^1II z>$qkgLt^%z8Ga%|*oj$QzREsCzz6SHR5MGlKkz0(BOjUCIO=S z$w{d=lPDuz@km_?&pb)Vo?s?@Q!#WF?hl0n4M=DJ=4YRMj!f3>llf*QVSDLkK*c+9 z)w>R*slg$f{wV!bk43h^ z=UR1g9q@VFjU`n0jrWE8nF#6338`Hu5GR4b<#3LczHau^_ld%C$sj2bZLk2o(-Go3 z!B8`k&mF)e<|5LK@fFp9AcT>W+SiHX*vZZI?F*BTI}10Uj|hs+#wr z3NWxWT*_$e1XQLSv=|snA4!)2Dkndhs7G83;Uo{D5oAy?<`hz(c!BUTZ zQcerti?Txt*4TFFxg_muQDAa7)M4;Dm?cUAyu40PsJ&`v!8s^_6F_c(rTla#_ zRrI{^?m!J_Sh<6)(#;BUL}lJ1jaBcUNBzQX6VC6g|7GZ197(MKYLr)9|9*cFosRMm z!fCdW1?-7_&Y786-2DW>mXw$;SO*JsSKxg8v6;=XYZgT;QOk_NYT6#r55D3yql*K+d7i^CVP%5 z2@nBGm?=li^#$cC!EMYqUsD%IZi-@6(qEwU z|G0w(+vP zr#Yei@}m_TU<9`iOR75DHfmZ`Nx-m0gP}dwCQb&FD^XnK35_7#j({YelsX8UawOMY zl_Ad~Zz-CL;^$Bb%({8>okaq+embU=!Ba2_5pD+wcKNvZ@< zMi7rvBtb!#%Kit21afW~KI*@MOzsLyP(N{-A0WkpK34bZ5c(OWK&#CgcVBP&^f}yv zaMz5*2vf@>cOKjb>LX{Et%cI-_21d9ovDUw_lh%uPs@*nM_)=-wv}2r$Cxha8YBNF zWY3Jvx@5@*2%)c}2kb_6JH>JUt*6hxkdkI8)=4WJzF)_BYero`V86&@?TbZcNRFRu zbC4?U6pH*%)z)GqLr&&Kv*pH^z(wbe=8NA9M1yE8snel}<{P5bNNQ)YiB5KA8Yj1S zbS6ose;nfcqI`1hab}3Esb9f)3-VF1zDw^k1V`bkBrWG=zoTc#O5Dlmp^~gr?>kMd zv031UO`xD4bGGHZD=CC1CcKS#hd#OZ2S+&pT@=j!>VO!lg4mR#d#7z_dn@(_3xWf; z@sZe67R$%khq_2eH@+Wc4l?@Pfp#)R(KVf??|7;M#&G*%LHBi0*Fe0lSe(ZGTWlVC zx6Q%vCtdU}6axP+o4xe0^@yVjVR!@#;571)`b)`Bq+QvM^%qJ*xosButtdD3A7oUI ztMQL$eCk@ zd0nlLLc^WPs|key4CO(1F+uikmN>7>^|-dkj~-)1IkLNIo^&zccQ@+xYJ?EhA`@K9 zk2{TwVUcMc94VZrU?b}-DY}I>#e=WjZBV;tRkocAkoSpEpOwwa96N`<{2AS^4neZ+ zkPbyCvec&X+h^H_W+!f&jb5oa#kP$;hRdaQnbt^odt`)__khxf)eI zom|7B+I8o7)kHKtvRHCx^48Rt{VRZ}MX-?6s%ky8m~8R)-ltAFe2}WzIi*Ols%Nj_ zFIj?bRm4ry)AER6V|Jhv;~LqsRAqP&yo% z+gKCA7Wv5j7UXA`LN8?fMZx){q+qu3{p0C%P%wJD(XXTvl040+LfLdd5(r#_9}S#n zPTWZblCfjf@tudA*Qlh`Oo0r=IF#! zK=IrIDPpzGByS+%S>)8NRfgfs{ACyE9xTZze27v$KIh;;{@wcTSXsoxulE&0B9sV? z9tt+5PO}^vD_yDVk+_|VB1Op(DQL=gjMINhilF+sl$oOvsVx;`9=WFYBa`Yf!2ayz^%B`i|tsVpnUg$i5 zlQqJ-utYP`QAUymSa!{}{1?%JG~lKLWLrbIRTIGYL_l11SD+xH!OLx6)#ef*H}Cf= zD@&6v@w~cH%4<;^Tv*Bv=*aH*aeS11yS*X6xyncgM-&Q~Ztcs%O7&b#gdZuCbZMgt zbj}2o%AwO3nO)YySM?zr8ssL|Nb(LtHRW~5@BK8U`@;m(ygtiA!(-uMGOnu0F6pGc z92TQi@Nanp3{%gqETDZw;OLvK;GSI%vX!a}&7xdMNX&$Z8)6EDOrCOGc7=hkXnaE` z^g#gYy!+Mgu3aIh#sgPhVS%jwJBe*sd*lQ;ZD>;O8&t=H-F+eqhF?&&OS2N8;6*!h z^yB;DWl{cAE7*Kc-0C+-C@i);2X}ZaCQrhlF%+^-W|6B{MhM&{ly+1?rB+-^0r6%` zK$yiv`>Av&!X6R+D?EX*y?2>dCWw3ateI{Iz|I)XH!hN~#q#&%7H1_mY0u5vojHG4 z&;V$IZ>5k~*2We;mF|1%)b0B7q+F=7d5N@NopV&!@acFvrIH^u!-~}Z zD1(}dO=NlbHvp~wL+1jY^duYA9;=ILm~9x&^@3KO9wQ9a{_KK6NbukcI{Gqog%W4+ zz#EjE&y)*0V*DKxdEFkyE1~#*1l5eGt_pqygdCYFt|nYn*D%`cIF6mm=k0S7{yjZd z`rP(c_*1OhylRYR&@ufLR~3En^mFIdCIlZz$#YC`)~ZG7R4qWkoS@i`!?{$yW=xdS zc{{6<-4FyY96-}jMjce+%|@lB7sl zO^)g1y~8`13O|4DnC;KGOdfm%*31Mts!~o>r+qQyNr*UwqswM6%ikC=z1(Mlm<-#) z6`rGI$oZdRp2C=)PoNX$!^!=ip<$O1mkSsG*ye2e*n8h}9mf90G!yKsP6Min{@UDP zmL=~{(`-*JqyA=Nm;P(@0ePD@U<9K9z0$bBvfVSMg&t+JR0|nhvYtv8F(e2=H?Ecq z={JL)6`ii_A)Rp9+}G>vl?;I4 zHxQP7*$d-_a!-6|7NH6R%Bs|{GipdmIh4$B4@-~r><~>$Gz1w%^1!RVgp~23bhi(Hge2n5&VhEs>t`~q1y0gDN=l|9dgWohi*je-I@;mGlIJLkLJh z(yhf1B>-GLnhll@{fLI4NsNpDKg}lq>8?AGrLFYp>DV|Z@PA^L@Cz9fQ$2`plUo!5 z`~4CwxpLwCz}fJwF;_P+tbGC9NrN+SS&}Ho2SvP9VN?IQqn1YXAeJpt>W?cR(%Kia zukE$na?fV{4QhP$oU({{urFKviR}tboX=NSwk(yK=Gufh#w@a>_rSY+*0H9h=ao!) zhluR~8~PuomAd*1Li)QfcpVyD2R|T_tcKtM`(d9SIaVLY&eU#(gH4{g7lH$c!!qJG zJrzEVs?1`8mOC8^X{CH`g=A9W^U65z+B0>&RPY%aEkz;|dL92)hBN7uJAcGlXHjZ7 z{_%QiVv3B@Eeol%;EW>-vAO@dW6m0QIp=ew8hhX4FKS&uaTcxmDGuCET z&F+@Y$%;SCVO&JK^8tuxCra+j*@+4?tSxrCb}}!uY!A+(TB}FodVI?sZ%N*VJ5MRY z*rMMH`p$}ihL#aS@&**eA(V64!VoSUd5XV_W7?BA8GU2v>-xw}*2_}6t&c+-X?W}6 z774^0##JBNy>t(@mSvY`ZZ{}^tm?t?rs)UX+!zYB@~Bm(oQvyBtzCx)EBA-UU6)<9 zJA3Pbh!Sm%iMmdjg8wYrJX8TdrFBMi|M+I4h``2;F%x1x)y>>&SBNWyo!|@{Ew907c zsf^j@i>kbTE;;p%Yj|HpxU8vdek&b<5{YzcP?$lrYNUbJ8=(&75^nVMvqU~%)u7a< zqaX^rkzjxxy>)trxdYYMo|G!+Vv+2u?5F|alA#OxA^H|<~Jy<;icl>CqI|d35xM%VO zQ1|fM0~AuA^Z+xb&PX4FTpBmP@^k35MlmxKw!<16fh-@ffXkm8_8&`zP#tA&bg;dMomJM5Fo;ffq8yAd=*q{{fZ$ zL_dKuka*bqq<<)G1w(!GJL7h~OrpJX1{kc=sl*rzJ}vog`H*>F-wgJ&pr}{A_~s+V z6gs_f$s9JU*{*u$i}#p^h012Ho$;$|nDo&3Fh><^Y(rc??78cI`aBq=_TDu@39yss zWBq8nzJu5>eHi|XI?-_&7d$li(t@S@8^P8xIz+pZ?^OY*>1N9tyzh+VI&C+%U%689l5cg3+9mTv!#n3b5=(i_=CZ2N+50WM)eNi_3nS0V-_lFSS|`B8Yz+LomT zM4mCo4C|&wwYldj;>(eSK>}AL`gZF4ig^j9uT`3L+~ZY7_hux!bXnTh4~QP^l@}Et zkkh_PpR#E5N5LX?;p@>Z) zW*_Tsa@f4R(385pY7j8*b0?ZEfR!>?H`vK=ZUbdU91ezjyFidlOj+?H28f54j_HC8 zMfK=C<3raruzqWsH2@hN&E(=uR#Q7n&pbP4Bl2UGvlUoOi~%k3D@H<@${jMN zpjcAprKlvq>2e+{71RAu@RRB+?$t37ll?HwDe8=_(~b^ho z#4GUmS426|gsKqWDs2ttt?58pVmz(nfxJ$;bq@BnSI37{9^97H%_lXi7pBrYYCA6Z$rLQ=6Iem6 z9x|UcnN-y!MhxAVIVKfJtBsNaPhXcJDk7`B*nalUe(t{y951kr!57?vsMZ@_?r8ejiL#gx}J+p3=nV`knq_d*IRXVqb0 zRFTCr1Gcn8%Z2f?{BGP6bRQ)$|MHdE(8 zeoE+@?+p6aRe)D)=#oWXOv6GZJusc8L>5uwcsuEFv<6n`s~yr{nn?kHE58HP2YQp6 zr@b^uT4k&;xmYbc2uMf&m%sUG;{%Q!a++h_UW6yb!A3Pr^{#G`Uz16q*T|>A>7w1b6M@j zA!iIEy9MlH4L05FkUOXbGsYbm_ho32Dr2XQqkTQ67s?@E>0R}eRoacTsp5@I!(C-h zK+V|j1zN01?dKi7!Z*CRryW&q!||`=Fe!m61h4j;5!?qyl><#U>WgB^lQ~nCRvfEMQh|i+@$Pvhy8eOJK>{g>~c0O=cacJ^OExS z`;oKT2Ea8Wks=iB^(I+A@^2^yD8bQ=wI|*y+L|Z+k%(H;&SElXT7oI`TK<6}suWhA zpd*$_bYMQUbP=a z-?o!vXEYF+m(QdOfYmkJf&!zmQ+CPE;Kjf{hs2+D`WE!p6ub%x3Ngsff8w|Uxr}%2 zish`o*V;*G?$4<=6xDqObd1IRG-gxZ=!wvm>JaJib7Hd;BS_&%=Dl4OU^Tq$T`UmZ zbf2nYKdx}b+{&~8Xz#>TL&E+pbN4bz;=LJFzGVrlIpqLv-Ne}p!_e_@aU!mGP(QfS zr-p?0$tBX>oikZ`$-X?=$h6xq7E++o!8khURMcFA{RM7z>Nh|lrXm{)11>Gm3YR~Q zr92+|>$@aKN~=6v#x^a=MXm|!EvmL$vce9NZRP{z6Lo1o_Z*Oh;o)=ro{tjk3XF!!2;uJsI0vyq9D+kd5XFB3NSI@Z#u^C zOh!y%*JiMVWOUR17YLMjl?ve_d&4lZ$OjS`1g|#zt-;lMBm7W$qQVNKzd+66%A?=By+^s@YHQIp!UJu1 zb9kT#WoiO!C(&KeHnD-_^{5M`z~uQ$I-obVx~p_P|8zY*HoTd-t<5?B(&HLcSAo#(8g zT>WK_ECxIi7Z%H{3X$%s5p7Dr0EU?nR`yVfM3;l5^BAor6oIw~hsO15m>IMvY%t{L zrZ3CZJb^>-fivfP6vWnnVu?yjZIMR2T}V9o!^i`E42dyB`fta)HZo+^8PWXU@3!Yv zHoIR}2^hKyNum?3gr;LtB@K>IMKkG%7Ii0bWSU)QkpJ)i0zm!097vh{&O+})%<1+4 zm<2eWtjlqS5*vQsGC!$UE;xYT#r0BdO@bDk^uq&~d~;)yQ^o#+ZnmeW;9hjh(KHN4 zP3P)FO`kpUXXf;OQZmGsO|uR?M44}J4zY(3^7{odFI@g0{(7J8D)7^8^fJA;=4zpL zwKq=Xf++#*%{5Wl^(wPmu>?A^mjKoL6yOT!_eqOv`yS{ylOOF8xI*#NyOoL?Ph2pm z7TpTk%NvW$if$MFDGgQhf0?Yl(}LkhUOm+)^ozhF=Mfdt8H-nyD9wx?xAc!?8fzvB zoK-s*<*l+YLi5lOo#BgQxVv^*bFI>@cFyw$vRPl?2NA3JH;^hRw9(k-AJbw*i`2}RfsT#vr{76tcwTkMAH^a+0gCti zdJ209yM`cKFQdyVL*Igy?7jO2l9B04b%t2TPJMeX;|B@yCRRgGkjuf<|0)C_3g;v;=%4ZlQ$^ z2@FF9ubvtGoZp-b9Yr-aX+4Mvs$$WFq_mDrlP}FlZ2j;1cVmubB3EftU+Cj^Z#8Ox z>Y?2UF1G2?dhQWF#^dgI9poMAwAjQ=%re6q>JH#R^r<1l+*G+Z%KbrJza8jcbZ@mt zaJA*Uo1hZcx$rZ0j7LlbXO9xFtk~1gicBV+qDKR^Z>=|9@}-rw1TW;o+qruHpHcNQ z5@4AkkTl%;qvSvAYJNxq@#rYYRa$_rW_tel71JjuzQ)%9u?~1i=@>hf4Ur8smDGco z%p_1>=fe*An^}w)lZ>?N?GSbKOEH+7YXQOqCkLvJ_@Pyyd7X+vt@7*eJ{45Fv9 zZIQ!M>ve$EBhT=KoT#7rP2M&?o}`;z_UBN&!BXbU+SGUTsqkleZMhYWjd0L?bK7l>hBUd=tx`7RF@`*ZF zZqkP&$?6*Piu!jWWHtqGzMB15N|f@#3HcBtz(J^nN(Ek8y_R_0$~dMQZVD%~50*9a zF$Pl-VmpgQzhZhL%X*)ZJG^pTh4k{D!KvT{&W!_@fxOjCf}qBN+))AZT!$ocEs?;6 z{r=bi_bV&+$F`kmXN-L;IBB~9^v!)BLJBiQetyYfGEzP>Mj+xCxac+#@UnYE z1$X*IK{asRwaFROKE<_&z9fndS)dB~CxR)gs2I+Gu*yQ)+mW!}Kq-@T66=GFYI-F0 z)7pKdiPNy6X{AQQGlqdr=vh?O(+qA+n7V=CZ5a!zbsdX&*Ai7RerAP{}5*>{0>1K^tq=#L4;@~NiNFb-avi}^28 z&Fq%*k@D}k7Ol`#>I>k+2VI5pMWO}3S<%bJjcGSN>mF8Lob?`%BHs@ld#)m?%|PWc zNwV71?TJ!{a(QDf`u~$=_)li=nRE~G0r&7+obkI7bMg3@&v`-9F(F0A^L|hA#}_nN z@bp=dB%H6d%Vb+)gh4Y68Sd{2_jg6>@rVj^8NIHS+)w6yfvXIdt(elOhle0K`JJ;k z#JG7+!!4&0(&6IT2M4Lb3rEB|u>@bYqzT<<2QvACW|}0?7{MslQs515wjo24_bnWI zOlM+qh)Rs$zd4zGab2-7{7lm9j}f=z>+MF;-ncgc!Q2*d0td74mJF?z#it_$;@J{) z%1ju&nP-7csjxwVn&Dihs^_%AFra(C)G`9$oorjxWo6;$Nv-UQtv-eFPHj$9_y**4 zjF@_T0Dz9L`IRz4QPYcSVAPCSC1H?veLOPc9%Og~-B!a@A5Cue&7<^*pNsU|h(#eTmLv{HbLYHR)@di->^XNT2q-`2={~C^9CSB;K%(|sR%Hrmmf2Bjh1#AK zJL!4{Eg$?Hc%Ic$70>&LXMwSgwYHkrtPy>OT5Z;w5_Yp;v=xiM5MW;~n z`g$(9d)Y(o96A=@(-o)Ly?n+{Sm#ya>OK*0fEb+&p=ue4Tm)a$q9G_r`2No$tS(jxWV7o^n{RY91dl#p({gXiaNlx94OU zQ~YK^s!LMO8wH~)DtjvPUm`J2o3FjuB^=b{UkkRmF!t{A97lon^v-Rm7usIT_7=+a zZ=94d1qW?nO{beVdKDYl=%gdm5WqmmfPChEmhg(ICMr2=)%_C^8qCj9OL3KSH=whC znOPWEZ_30)X{-d+o}_bep!S0uJ;r6hU0Pnuxee`sVx^acFV3Ke046v_ppH%)s9vEJq|ZmpMcFF(T9e>G;Tm}pH*!EJ;d<9)zn?kXIwMD6?jFv9Qxi3er7^xArMx&L|p_}yu-tE2=>iLTP)tr^^XM3?m0bZ9EKkAvR7*Do0`EOH6rR}nU2_t~kgo34c5hCW;4m_LF<>~ES@(|k zXaIT7#TqUaXTomr3nyioiM~~k8wZsAYr=pjd)$+nLz~0_RJz#}G(Xs0hr&YSFcw)~ zs^_09w)Bb=hzFXWVv=Fg6-y9Y38K8S_^1JEaDeo|aa zZWA_+CRCzsrTUcnhbHvO979(e=L+6BKxq6h=L@DxL&cz?USk}QLiFE=Kb$aT$KeDm zG%qofa1@0jSVEX=Vq`r!u3)_;bZN1pzHaHPr!QdP=V|awr_)}s<%5Vn=6<$cL*38VJ5zl51cNM)83h}72BL9xsk*Z^|N7*FifpcMD6mq_TbaPu2I zAJ{IC$6y@$e#F0R+_YkF6Z##N-A(Sahqdr!T(lj-%B%B3^{3E1TvLOFSy1(dal}nz z$n*sA$}H`cBh6a=6@4h(Rm4x6e6~0Ua1gz?MBW+6qs_+P%Yt*AFkeVMjM_H%^X~Z- za3eqT_XKX~NK!Q_RC-u}rba_OhZ1O?77~fHdZ8TKnXOIbI>#G=#e)t1- zDZs{I7L7h6-qnl}bvn}~_GqqBMZRsZjz@QjJC|JtmTQw0u@s{6H>pQgRef;*q(p2S zgqw?PFBorxbL~~ILOTBtMp%37wZZlUjb<+0s2zAIIDfcysqv$m= zJ5W|-W!Y@5t%Su>_f&@v1JvxoZwSGvj4t|#ilE|$?{XE z!vAnM7ZW|(D?a1pjLKOPSKz+<`6!wAvaEagU0BJRSG@#SG-d{UHo@Djsofv&?cU&> z@Jl3_SqFKwh@d4^^9Uy0A`j{ck5$;_hjDOa+DQ%h^7z&@jB zNRn4gEDhF2FRwoVsSXTZGZaufpWy$`El6t0Vk%FHIs^xj#~R0H**ncMHS0ng#s@ZL z-UocXtNYE#VgBWOp4a!aHA~P2{z#mU#RBFC<$RNN27(A&e8jCFFHGVz zwOLw5n^zMk4YN;uHKmvj8Wj7Agw{AwO>Izb=JYDFI>DKEoMZs%qu2?{?s83g6y6dT zqml36@b^D>N&fM?p47dWq?sho5#E5)@iKM>O==h~Vnm|||ADxTT@6l%f9}(g1BaQlBJNi!ki%A^5 zra7Va19Daj&*tm@;ZR*uV|P99h^9T6>Ci~8RnNc$$hLQ*Lz)u&Y%!JXcvWrAFc3ZS z=k>M=CbXz-+C7sbhr#vd%;~7aFQhN|BH#97l$|U{?Pc3G+vOU_w1b;$dc@ZGY@*3X zXmAjAFUC6HmV==)0IDC~ubgRQ+JwsX>L&1_mrFHNfF1fO5)!Rp2Jx1avUj4lVYoDdahlGIiEgzoTisp+iGCZ!LH)j;Y@*`{KFOVeL=2QGg-Dq1<`WZ60x>!c`hz)Av%10&J z>Yh?Cg7YTG-bjPBDsRXN7uf-|ZA-VWu?#V!Pc!49-`<1L?fR2?w^UE|ZBWrqV)!nm z&d@p_nzmTz>n$55ib({w;gITZ&g za2m(Ay&#p5NxJQPWqGE=-Jxh4|B@f~DFY}!9Y;w>U z<^YNhW&Qix#)Mqh^Oa)Le5S|2zVF+Z92+BljV;{Q{hc$G7{r5Z6}Mf$a( zxV>m;bpX0ZNX7pS7aiB$cjOo3z@C-v1glbVViljr ztocd;F&bY3sr1fK(DV>!s3QPKzJTGP{wr?sEn|Ug3O>euWfj}Fv!ECluFCB%KE_vN zcVCJKn_X}kSP+Lkf|l=mM6PtS!ltl*l?QA5;odC`Kl9r@JZXXyDqFPcvORht(+jbx zE#e z;3m|3>Xv#N=IRe@xkso2gd+xE9Ao1GjEAEu-Epaq9RmJ@Nr~u*bN`<7FHkD9ajNmF zphbtfd!u4}Ok^~I5yN$!!_P-x6u;vpbi!}G19s-lJ(q1#}nx7j6LmsOFK{>+2*EI zckD)hIG~FG|4L?5j2c4c{TEz+R<^JVU6Gl>Z)(k@XZ@~gg0Dg#c-{Lo!D%4kTwn`g z6Pob8ZYVIdyGfWJ_U_%yHV}zUmA7YJpL_a*m{L>6pPG`9she8I|p)Mrl{u z0uP(tS*^n)bB0mb-eIE=)v`#T2fm$Fd;@+ z{9l|SV;8bL<#JF&g}Eu`m2=JTDCY4Vwb>N#DI(^&r*gc5z`n9qi6(!Q~0}?`mqKOcxq?G7i^V%bVX||A8xI*YZYp?YMb}Pi0f&Kkl zE~GVW-*+EBoiWleM-)k`gSk|T#f+YI3 zXYOsLV2h~iF(Wj`b_p9-nG6E&K3vD;+;mI%6I?`jb>ox9w z)%bQ1*Y@OC(t4h;p>$S`JvxFRzC%2H9WB#!zS)4jN9z69r`Cm|yVYVZeyTH)P0H+i z#xf<_BFy$;)zz1vsi~XW3WvRB$X-oj_fBm6=kP%4VObT|KQC7xHIzA_IvirgDC*F; zo^Mz;9PT25md4>wiV#z6=C0_}({Ov`<-1ada~)|mlMYO;TgLrg}rqO5Wo z8T+kR&{O^trxv4dah7Mq_isE-CH)4zT5EOgdvW`3xDn`q!ZiCC`Rbw|YKM*eHO;sT zU=nsC8}pY(Oa5H}kM3ij%3%PbKlv#!96z3pn=4exkjRTp{lb+qIC+HVqZ%y*wh5PQ z?fi6vH0VI3o9eQSN| zg-6sxW)d_WVoS&xVUsQo*AGHKoU&HjsYu}wK7xHkeLMM9{@#rTCE(t*kwPMN1Ay~! zEw-LfN#wn4t=%n$?P|fJeTNVsIh?GOXT3Fp9nh^q?J=~5Nr=q}zYRXhi8Xy& zXMLuFqv#_$bO;F^z66ud@NYG=+VcB~GW7aj=m+i_A#B*Ifmf{*V*H~rDoyj$NFhw5?hFAC|j+CB)oNr(` zL#ALrfmIAH4cLb4-L!v`bt>9CmECq>E$@5zm`|8(XT}0aSbp&5^=&Y?J&v+)@c{Op zQlri#25MypLBzIF9a=Oe`*U0f%HR z*9!C2mkYmBz9#cQCfj^J(e#hxT1kW2gN;@WPOI>f=!d-ASAdztu4h&Q z3Z^+`O3g5L3;J{(?ux0DXFVoiqVj9}B58$wQFx*keybB|kRA(}lXM4+h?A)N^kbIW z$SDAAtYBVsj^#c@F-BO4)diSePds42JG_gO3o&VgS9Pcz(38>22t{e-okAZ=R2+wR zY>}XX!H#+YtAuf~kJ*iEhFu5=U)p|wu$2B&GuXMu;X-y7HwmOuWMhUU9H2ag%0)Dj zN@ccayo*XcC5GB|MvA^clV8AiV-VP%1vbbqe1zZ66hdIUy9_XRpCfu1CT&14(&v!@T~@1*L`M z=1^7!78*Xy6gpq4Z=(epI^{MO70iGi71r*auGu>XAA@XcGgs?-!8OH7`$ayf{~P-7 zn?gFw$Tl~uw0`Cee)9-zyx1$lfw?guTdwt6h^h_#X zMB<69l${g0uWCn^H@P%0GTqk?lj~v=+aNTvOez4tUr2Q0S$SoqZ+lb(wBW|z!x95J zCquTCJ+9qD^`w{c$d07J@T!?fD+B>>fTgiu5tC30n>6P~)<2S3RISI7oYb&Y z5OHW{o!Fm1ftB^3d{InGh4i!$Je9`XWLGGR}r(L&_J`3)j&xcv5q4``bkmzI1M*IpSCyhiG zp06gwGL!AocCbP7ruN-?t0AiJ45)&TiCn1^^sW&Tkx=z|EnO8`5s?ni&k4GlK>dA_ zHs~3B?KLF=iLFTm)VN2v+7ZzpmCZ!xFw1$+`fQ~2Ajg9>mzSunDM~e4h;9iRIzfbBd7UO7Ytv5}f1CIGQ*pD{CE@GM;Wx1{9WRs$VAGQYSEVAn9JS6$TRE#+Ut9nImXZG2ZZZ&7VU3zE#ZQGB8hP8R zlb9p)8U(NJvOM0sci<4>Kzy+SVLa)uxt3CSFzT85en@!O33LmALk+*NGv$?v2QVR9 zEx!0+b|iHjtQwmAVW*>PTz}YTRFDryZNlgdV-L3HNU?&wX zQ_zC{O71U%8RZa93h(y_*j3R3uomNK*R-sP0gL(SWCDNI_vNmbHcal1HhEre|LWiPsz^P)^P|mgUav&B3X9 z6!#Xwnv`#osTa&Y&!Ft%rw05|ipThcxoGARij1mYK2dvTJ-0eG9suBNA|bZ@0$sWX z_XIUJdj(os8Sh>$*Hz?CV@D`L;{;jc^bdo`lDb{k9NxhR%#CzzEC8%X|ARL7P#pJ~ zl8}vK8ZI`W?3r7#I9{PVBO>?Rw%v;xHGkHN$zPfEb3|CPJ}ulUdrsrJ?3W{4-W9kV zmLmnWBGUQBo@qA1~TjIO!Um;hj?!hVRNPa(j0_3B2NtW zsL6I$v9^6hsk0WJmP~;Y*C%ROn!BS39$<#2JG4M>v6niF)ArqrZ_nF)*xefCbsPnf zW@Gi6|3zMpZ7eEAE^zTb^~i}N@b^}-G3Y09FjA<7DRbb6arUIe3$BPCG#uLuzQ{*7 zD;Q^bRRZ-3`YV6pYlNIJZ8uH@q*zHuj6l>q2Pvl>)gpddL*y0o3^oBQT4>jLoaP!{ z-1>UWZJ&5;@p5a_{ihvkjIXX=)Qg4bK>JO~Vb7ZVJ zwB=sQ$_$`@l(dOd%6uCnX*kXN0=Ggs)!2dbHcT0MVi5r#6nFx*dZ@k#ru2z5LAr>V0Q*uwA8kA7sbAB z%a>yX0y5vwY$jt_)_giq0|1QAd3QS*!984a)D;7fYYu1)-nUqbN4-KF7X942+CCWe zDJMKT>}Ta5$hM3^Les~=uPv-@UiT>pO#!1y=?qLmw#bD5{6=JiGpjQ-?Otkm9YwP&T~{TUDz|vxISQF{mg6i)>+YeNk83X5lS?)Z^gq-l{1U9thuR(8a_5>cF}imsQD+V5*_Us{=!f%KSTJi$YkAp#`qE#?|l3&B#o8q4rsFE<&HNsg?_}RAf1zNC)NkGs>@j zu3djNtsmDWLfQ4^UbV5%iEx+uXk=brSM?-yM_OUCtM}IYpx5au>a)%J%*DjSTC^$F ztX3T@;!v9(Dx*r%3Z7)t0d8eN>`ajl|Gbj`m$RG1e}d?G{6IRS%QF+adxy{op*qJ9 z*p_7hx9ww^iAtKTr=8Bq@xdVJOw4Sy%yV4cmKbLl*cf7hQw1IHm?F&N)8H;M&m#{} zTPsNYZ)1!!oq?|PTdZ6i^v6jYjo!4BsGvG-{5^o)+|iQe%(9WiPxnYe~t~ z7#wgMoE!WZ=%T?G{`bcQsj|`pj5wBMRL@#&BDyIi_oH89py*Ap9Zt1CS?NwZ|mgb6LbHZIvKjc$R;%Ga40X1 zveKnCfqhy1g|sJV_UXoXa*M0PMwFfkRo#(xlu_?vMW-%;8N3H1_;7cqo%zbL-2C&* zZlSeVtJtEb0&N*l&6z#nNEgJv&wqSoS`IvXQIjdm09C)$t0A$yNeZtv5cd#y+KiMD zat-#d0$QEX53}e@uu4dqj^sLz`l&)DEZKYc_m_<<3NhW?4;3)`E5*>C*!kMzc~6Su z+!vl6w}k*IT{ZTOr>gz-V;n$D=(vIq?fvclkLk=0@{}15zfM3gTFdGq%(v%ur2eOCB^zxNFiNj_&dhin%2Fh@0t&1 zZF*j)M;?Zl+~gQ3RRG8Ss_tw(UZ;FWZrRip=ZXAJrCni(PPed! z;?~iOxOyGpwK?t&HrCXQ@=cQPmfpNWg{Rk)nY@H}tSb_WXJo+ZCL(=jx7~)ZXN$j+ zk_I4GJ)hn2MQZx|U4=dR_?b}V+6pcJ3{RqT3Osy2ujouEOmNX|#ZwX#2#WrW%9z0I zi`F(nL2@aTUlJ57G6I0A9Kwo-Fh5d?w^q}x*VNr2%+SDczb70y`1ec6i zK(;pjGlGfu|FEX-pN|#U-_!S{Zv-}Gh?4qf|@=O@H2lCRsw2kb*5pQ454j|gW z21EGqZTON9z@P2_mW5jc6YJQVLGoI~li3F310k8iUxXlO;bbGZPyZ}dq(L28hfRnb zkNt-wMXYY5NuM_cmhBR?0|r=%YyG69!pEAb9n4`bD<%-wWqNik zPn7P8LrJVGJFl=f==YOxM0jYDMSi}|sJUc3X+?R+Ht?MsUal*nTb(Q)xP6<rLNe%8=`d}4*}sfOE`&21J{amf+_YA^nqM;a&3y!neR*+)k278r=gQ9VK_btrd zW*}lmhu^_q>c{dEM5416GrtR1%?N4aPH%AJFQZW_sbP#)XK)C;pv7yA8ym|y#pd6H zi)Mc2rN1@Vp}#2|MN4>}#H*pZ*d+yF7>OU{N=V|Mn`JBW$IueeL+56xE__nV1m~;$ zZy+zm(U=@J??p_Ii=8upB~y)KWJ8E`Dsk;%aKiMMt)atn(D zMw+kt+;!i;KyTe7AhUZFb?&gpOM>Ovg*clqOXsr#Otnz}Vhqn|y5sgV&tRrGU^g;u zPw32aHYmwkXI={*F5qQBO|gJ$kg7Y?cG41_YT8V?J)bdIZPXezu>_NOutd+l{h`k| z=3Lhn0R4UQ0P)mGC}Mu&wn*>x^;U$F6fXp$p4}&Vx3Jytc=Sdu{s|8W3WjA7{gEfI zQtnWrECuvkQ~0gl33+1KkBtjDb47A!`Cpx6CC=}Cr+GOxr?C^;o?n^FaGbJj)(=WSd4NFgYaG+W zBG2bUR{KX5+=<~|w|taHw8vXd=Qk6D+1nngF9e?Ag)L`E;PhvU0xruZeEaLyA>8Eb zGdTXst?c?nL$>O1YxK(`h}>_}=`EoV8GCO@wj!rXuSfuU7`$qa$;!Nks!nK`@mv-0 zg3n-bF-T}^dWUSM0C1+RTyJpF+2~z!qlc^!L{hps>#a)ER-X z18@Q77*H$4-s^81I<%MwXU$!&MGxrs$6JAqyud2#8axXfCen%i4;*&?*#5bu+~0k} zbEQ|T+(AIKH;HR;7YH4&^(G+AVGSLFcp@%tJj5?}qbXI1#5vasZ9m!ItkG4Ai(A3! z_|IO5K-8hHGixsHbnh!jaA33c`TVp?cXdLv8ZtWr(L+VcOYS7b0ezm{JYYtGw4y~x z0545hC&6r_lDbI7U6tMwYFecaQv>c?mcwHLBtpC$xJnOnTNeRhUAY7q)7FCc@i-O4#aX$ zfW=hB#GX#GWSbN>f?oJDmK2%Bj`IL4HfR~o(?}WN7XN|Bmq5-ikwDKxcR|;s(CMeE zR(6?bGxERU&kDkVb;iv97$Cx&;iEaZR~Nj>R_RF7%p z&gx$FTAWY3*|HVd42E3g^3CShc(4-j7C!>tVRsNqrB3yn*L0AS7aLlRYAWu|&!1=# zPj~BsG|k?=;uDUD#Qi?s!$5btg>QT9TUaW_v5_0yaOi{tIGVQQ<6mq>Q6E}S12~Eb zT|JqD6HnFe?^QIilZRQIIP>0U?a-=uCKQEzM;#czKpTsUVAPW$`E5s|obUp2d+7R| zMYFQrLzat5$PG}78IEUgfr%3+%2%w(RN?t)f6Q%+h(-q1JyKPC+Z0-)x{{Q$2#^{T&aerEWqK?xb zJp>1cw%|+l#+Mf@RC8_tfr64n!N1>k#>eQdm0t_2 zBm(SjNSu^J;tc-2eZyAu)&0E1P+Iz{eQU5};kIy}qiK2pWpHM_XV{4=q1?v8r;}pL z8r{Fv6)sq~-N$OoGllJ;T&-{0S1_p#vgLI^3d&9VOqC`h+M?W=9;iyA={Z-c&<^k< z$t{&=+dtLoj_|fi?mS{rI;64pzc%F#)+7o7dLU1id93_>l(n42pcjcR&iYdZlvX9! ztu)B*I=j(+b+LRWhfcN3$=)Pq4cC@o|9h728EIL;sQcO*+O?pb$Iw%u5vIK2*q^4OIJ*- z*)Za}B&i27Qpn4|ypm&XZ1B*EsF@KMNAH{UIAB#MKS@pKoCr@_o%OCYk3JYBm-QkZ zFRqE`FA**hO(}WnO9)^jhsejD&4V1~){r%{^e&nAMx1DkaXNur&LW2QO?iCh8VQwZ z-G|v%+QPwAuq{1%Es?yJ8Q#ItGx=X|?R@C`g*d6B)C<)vy*W5|5l&p}w+uggscKd_ zXLs2^mDI8ix=}(M@dGd1+~Xyjz-G7bp=-_DPsbSEqYamKTV*R&J?X4?&LrG`H9T$K zh)HCuS%-~!fS*D@8{$M;IXr*&zj1A;ROOEcaj~QlaVdXp%ZlxyL7mVya3ER++2`e* z9|xL5cEG%j6y6Gy%{NdGL?9<%B%7G5seVYUWR*siNlV>R92LR6(w>a)2c`V#=0z8i z`*ht~Ipk)lKEU>vF2QrAzeO)M+y)27rY&T$e?|D32kQZZrUE3!X02YlqECl?SqLkS zAiIkPiS1qG9sk&UeewoBHu6`k>7k-xZjvm!^IQ_K4Y$i}dA$HXMP9xI>P`g~_fTZ%D6lbJMd;h z1ARB)6LGO7?o-K`@xbEEPZ4GOcj>Mx{yl5&L8#~m@CTL+raj&|<%#)$#3snDscUal zpvlZ{6#@+`{NFy_dLA@&lz!3WQ6AugQ7$7m5tsGD1fDcA;#!XE2Jesb)tr^$;6?WZ z>gUNvFc>2`m&BgF{a?&!s`BxMKi3Kp&+oV)YzBz`36Fy(Vl-k43o&PiJ!SoY${Mqs zJ+)d?y-(K72Cic|jm@rv{BAtL7htxv>2#oe;6qOg5$pF$>qU78sn-x%v`_>^(_K7v zj>_+g)U4oT&T2r(NJMRm$$N_p+tP0GBt-UQ%>EFsi^9NLzjv`V(eB5iExi{$w2N141BCezzc|hkRd!XK%3m8?a z8K%(`E*oB$@91hv5_HbJ2q@QXokVzmywf`}2p3Bb+anK{k%59!XD+bUj#sgI4mCE? zec|x+m2v26oI@N4X-l8Du@7G-^oVrH;JSe#J@tI6^(eFIyOps(PIQOd0*?1hY+Cl> z%R*890sfHXJO#uTfybd*a?-SpTZ3Y-(jm{HbSr-^Z~7gVqr%0-VAb{IjnAQ#sNWxG zPb*|ovLqu(FfObl&SzV>$>hC}CTqfS(hBmSTy>#KwJ%dF=2Jx~Z=(JN=K8bmP3Sj& zVRuls-{TOsCnIV9#7U8BIMZZPS%{7sSlcFnrl3N+kin_A;lE0(#|%`aOvm* z65Tm_*70AfGCw8=X@1XW=u3_-bExXmvBu6~Rxav>b);2P_7`{i(EK>UD}YZ+%Ccz+0}0-xA#^j=9ey z6IMKZ#CNuT#T$J;YzcO=5!YpZY|HL6i2|1XChAip4Kkd)DxcSOwg2A+*6C=SE%?Q% zy|F}O{&J`5&<3|T{Y3J*3l?>x8i#xyOGmmA&DFX~@SD7$?8nsbWg*O8a%_amTUUflbgZ@6`~d*}KLEgY z5CQIvim?el2#;8cZ&%?p(Ec7GPZPL_U_%hZi?IYWx=I7(AH3fU*#xIb1|?$l-bQU5 zx(d^euU_-w`r$1H?3na`@llRd%~}LZx?)@0^*jo7eHZI5kmbW{c3sL#>9KLWOAuv+)odYy28SA0k!}R!bjUcHylrU)=b^}m zO#mD90Y;c6mGbz#sjr!IwFOle;n=_IM6GD-_u?xX+57&h@WhTcW;YU|9<-VOZd}-+ zHn`JHEzIk`6+q=1G`u0(+3lX)Uw$HVX+ucE$x`N5qq``VFrMACW4P9&%*XN3s$Ak1 zjlUa`lR5l)V7jA*x>kNdPzkw&Lt|0Igom_}%sl-SlGP3w!m7oR*T3A`krYk26_;|3 z=Auj0s3Q*BP9l6+mz5OJB-)vgu3^YCJS4Y1OP%UZs`0s?M-j1qs`E z)S3*|XONN!2X#RY32LyWshgNZ`@6mZyFq@UBK67(R6MmGMiGs%}KalBLnl;!&h7?#&L+3a()&gAD};F~T2S<; zC8n`2&3r__V82xHp`_$2m;G4{-L84x?Dq79Tr1QEBXiTa;f4^Rtm2=*=S$WYJXvRz zDdwkeFClg%S>4_RY2uf@u!99iu(NJe6|ePx^Ll}q*d7_juj?N}MD3(vE17;dWAE_O z${1KCb{DN%5e-d@!(q3R0k2A%$cWp03fIh|Na+_k(Ccdr6M55LZJ^}|pN8t!Z;)7l zR-DaP$Y-sas)bGZ{}GRVC_{FO;;s6RW)^gK!3|zL=fwg1J&$FPXr8}G+8->_2c zfb3WLA&3L<9CcxYpIq8V8U0_JVin>{m6$MpnY88&BQ1#&shpB{RRvYTL`^Lo*vLnj z9PD4GcoC_pbO#Fle~{E&QgIeTRBAR4v%`D4 z+kC5C7#wHb6*jn_L3={U2*}lfTfS`ZGCuCLE2T|E7ZPHM-&1XT+2>Vlt4>G({l6Vt zLbF)pHq}(E2pD*z!zHi~_NrEkI@g{y+MmDW!Cc&UhKXyFWgb3aY{GKB*7{}vfv%b8r-T@3Q*jYdtKxD4f1tRS+g`Hsx( z*InMv2WkrMEw#0~qdSc!YZ^^i1qR@}5lIXuI8+L^m}TEkVtRonkA+lAT2uK5^)jj+ajewGd!UvZo3#lnZo$k+Tq(E1!S zkE7Kc#)9l9`9}k(P7gD&RAc+*q5Q6yqam1xqq8O*(cHSt=TQg;epJ~@J|s;&YgzDW zAIB~(#hHO=OuTdqeDwk+rg{hBLqH^W`3_r%*Bx_vcZZXy6`J12Hf)nceDpE_9}xt> z0iq(@c6;YMq-~UR{G_NC#V(+{3kH#iTFXyuZlx@ENuZ5%06BsEZ~;*;*STJxqxv}f zrd4J3r#=*YnWD{Dz9&Ha?wpu*LFMkB=+z{LmY#|wRqh-RGwZ?1$NA|o_%*>Dw8jyM z->|FLYh)eYo`@6|1TI@6!M)tw2*WyjfW0PGOgm986kn6G2=({UNEYeWi3r9GC@1vh zY!j)4s-6c{vds_Ywm@_s5I5x69am~^PI$E1UWtj<#)FQSnJ z8DLPW*lk^z8nksN4S$@?K;ft>6Jyj1@894dnQmeW#ARjM6`f^d>H(Woy`d|$jjdr- zArhIdtt#O@wrnUZU@IVulj?iDdZ`Q=Q$LUmQ@KrVDpN-ZZa8CvD7byR;NtaVKCvd0 z->sYKZ{%;&e9kmRBix8(sWHL5vc3JDHjGf4unI7tD7=*WNL3SXI ztuis$0!dkc$swSwr&xqyV6lm~#r8^P zTD#xEBTH|6BYgQ?LfgZP@r$kTfSvM=*m~s|*wa)&@27g!JCCny89N}&9O4!-x&W{~ zH3GP75aJ8!to-i{W4zg|#VTfYN^lzPP976;@mZ zP6SE8N+BSf$^V_vw}!kQHO(%J{I@L{l^Dy>8UJl9#+*PF#AyFA zAZ;gyvYPgEb#lP_IJ{A9N7FiWew2?1HNu!@;i2o71~)9dIjSt@?cAQw1C2;h zxXct|5DNaH11LcQj7&s2> z&WYPRFyp5r@WoVxY=KmSi?})s*>F6)gN;-I3*uZpZ-wSNvHSj&|7uL@xkV>`X@4Mt z6TtSa6oO7Td*!KBV7kAYfdQjksd1b4U-3xYsK{?v`>}3B+8{xjVaaHaeds}2K#YGM z5MaR;i?Z#yFX82gs8T|Ne!PEc!mY%PBU$QqLo|g-Y48_A^Gzp8xC8D%qsHgO2xmgM zrx^9Kg$rU_T}qZ)z@5orUK(IM5Y#Q@Zv`fo-%A^8X z&I~6#cak??Hk81;L)Rln*Qi-LkpDYfY4En=8a6%@Rey7=@QgK$c|e^WBZE3bvWHT6 z0Y!*x0lW16$04g(pp&3t79S-A78Li9pwa={?^vwN@WxQM>AZw*$45vc-MtsYY3O4` z%frFl@LGIVo=b%+GA5TY5Vb9En67L>L^c+SUzW*?GRGoPW%) z*Umz^0km(<9dAKJ~=p@rfDVh^4O@&|P5 zaFHMyh6zJs_zmSk<3l$`6mr!$%-Y5#XV<+;_~1oti@J6zd;fQRmlYE7N)MwzgN*WN z3Y8qNdKkr?3{h-Jqzj5fJdf^H}4~nA+?*Q|j=fD{o$ryf{G<N)& zB3h+!0+g;Zgbhn8-Q^rt?ZOdb0j~m#rfKNeCPG!1auXrRCn!113bCtYuW{82f~$8l zCqUW*SY3?N6;W=o$dae~kO7dkY>>_vymLd|hp1JHvNFx2g}KiP%8hMJ;JA4g*(Emw zfJ_@smfZJOL%gMJJbu!DH;`h+ZRU{>VlP&!U^o5)A*=sv{?saN1sAQJI;l-K`;JFT z44TLKa?Mhg+5&S58YstE0ZJYXlQtTcwMrYPkZh3*lt*sJbI%+zUS0hkuVWsqk2qv? zo}!A+!C>Hi#6{0VU193d8GuoS$t$X(?rS)QER9L=yBWneMrD2(Tw#j@VQa{Gj`VU5 z8oqOxq{cL-tA5QN#J-{Ajnn*)KhRh+1jmxj6lcyoE3Mv3jeGIwqp&MpO%c+eGaog?CR-j5Zh~t z;<4qwD(zQ@r><15m8o7*A(xb;t705NZaP;=Sg`u-us?!w;?-GQs}JvV6`}x&ZVgUn zQ$n4?+Q#vCf=RbwL;f1dh~DwW=v61X(69jaaFY1vYh_xh&g1g>ad`p-m_>&YhJYp zbbT?wlO|nE`K$Eh0wyipXg(_r(_H&1>0$(ZRV_ow8*5qRo_nJhjWy2^b5??{xe%I? z?l@U*G^wn&Di?L-o=+qCmE>y!qw12f?{%qdnw3(#%ASPPzPT*!zx$2cp_!g*X|RD8 z+$8dmT3_R;?_GG+!L5p~u)ipVApwKrz55!xrdc>=x&CgsI2VHc+7EC-`RFb&5?Nn? zq<;ykP24$yydVs{bqyfC>HZY+Y{NCCK1_@2iIkggmMK$I91au^ z9Nf3*4M@M>CzC(!K(edT_Z_+daCT@I)tvZ|7ZmJTtfJ^8D)w;pg9t1fYlmf0XU7>K zv%BRzt%kh!_S#6x+DvoXQu!M~N3LORZgZRHZR57r{LyLtPtpfM-ysf6?)~($lxn&Y9|n~ zDL!!!RuQUu)t|R>9VWQ@HGGFXH2*M;&HnzdDxE@J~&D-uv02bI>RQc+4ka4pRwKP>oOh8e#Ln|EZ8=|A^N+eTNR^s`e~P!*B`>K=JY4NPcBsj%y8zy zBG%oS&0BK4>u%_BwG(^!lz(kHbuaL8&4klRZWueaZ`Bi5!tY!O4?)6>SHVNRN@%Ow zkf%WeY#|cG&3nq2Dv6v5GJGWil1Y-f=K^K<1p z$#~VN&2VlizW=PeeChTd@cGj0^bqj+EUVdTd)C{yP+*bf-n#T?M!?5d*WAWjbM}K7 zH|YY0x4_f>s3Z0truX90n|XKhr<{tQ=k$M{y45#s=7og*#dj`w$mPMSqS?Fz1skPe!iL7ED* zMgDEIlG(JGcTB_Wu0q-1pX(lAIRHu}!l(WI`^Kx!0>-EHAx@jKFmP(6DeMaEN>mx# zs*LMqf~Uu2h6d8*n$souk~wKOd}A;o*rD)yx4l|K+2{|5`v<3_uY?Fb&JM9D>*FVJ z73te#J0%Ry$YsI*L;qn%+fooz<);E))@Sowz*+LawgtyC&jeZbb+6I77ec=6hjxZxE>gV&fyrbffLcGz$r!d7(|l_a zhxU;Q#)Dmt`_0c{tLB6!-^i_K8Tc7GiTv z<_r4(X}ZNVSIHyugyXpNlt^Fs4mfkQ@aX_YO^z@*xmD5dQ}{zIp3b-=jd?FdRpKDQ zBN_$zjNik`)e)of%fDz;tCfjrjyh^9LL#4J=CQBL3G><s^y}tU=FH0VVt6V^FKkQ%oSjDNptnxlT{okV$}vQl#+KUcyl; zYQ3GDqx+D2lb!z{F?EzAw?){T%@Y$mQj1yQu>RSHL6^dbpxOG|`PpsyHE1XF;)P#B zbK2ekQbG(WJOpV4Zb$GY{bUVP7abxrK}FciR@(+@yH1?w<6-xLc(h+E5466!hVywA zT*VHH>E5N{`iR)^w_g&UwH#T{dt)b`%&DlK^g=?lBC9lw&i2%j#>F7lxUu$Q!}=gH z1yE9P_aKSAe2@43%og|g&KnNk&0xC2>^}b-jb3jfSVFiWJfArSUF?-B3yu$&q>7~C zEsQ{>wdYN&r3dIfQ~2Y8@DxmTq+;1*g?Q+=nw&LM?|AbwK1IPZ3@Z1xk$Dps;2dEZ zL1lUDgOMI8Nh#dQFkPjKsD+?U@91bFsL3U75_oUiri!O0t7|BVMIm8Nj81Yw3r+B_ zK_pQ0@V5!Q3#Vhl#nQ4rz(1GsY3qf))=IxwJ|J%bLCSCfLGp)O=LF~ayDsabim~_BLEgsRYQnD?L!AN2I-%>`RuTsmS})nd(kzIa^*TV963NIxKBG+DKZ6YkJWX$L5;u6i!LnVZYu+F z`7?F27Z3E&DM!3j8i$uvb^~yppZJE?K$opDWgGuL6PJ0>H2F9-EDAfbdg?0f5<5J* zcU9>h7g(5B99K7Ze@`Q)sl>m(b+I@3%jPR)!{>!zD6m-WP|e2uC+$>I^#`NBf=A`P z=2CnErJL2g4E_uFYW2{~!`YA<>?P82@u0}r1=`epiKWpf)5J{0^fiqPc?sL|Z)lxC z+A_VS#s{OdGNNhEZzcMF-{yzr=c!NFsff$JT#0UmLX0--TWQ|FE~19dSCaHu4|a~W zTtrRzXHZ%qUHP45oCGrSvKHO9d21yM>A7;5K=eC{uKGpXRgC+?pcpP+6!{=QvGs6r~Z<}ET(m`F=bOp)UAoqA-m@u_Q&6Rfn?r<2d6BxC8^|!qSAAoW_Niei-UYbX3-$SS zH_R^XxH@p`u&N)?)_3Nw-s6jT+ut1mZjJ*WqGy#LGqc6MvU<)3`FjFtip2(XL8ref ztCNV<`QyQuycRa@OPbX2`ngslEZMYq@GFFI)*zJes*~KUsOTnlukfcd6t1FyEa~I^ zM}$B8fVIn?6c?|){*IPgN8>(2j(IqVf{6WM;F5yKSYHFZD6lQZ$s20p>aEYg-TI3c z;I)C}eKdTidlWXL%TKq*+k>5m8Ejv-rU4$IrC=4a%n)sFw*Nc`YWkKaOiJr}8sY9t zM0FVwe~8$E;5X!9qW^IgG5I26oE79;hh->&K0_pg1OVZGuTT8LAWY+2Ru!kyAGJ}u zyJ-Fe5ZzmpEK3kHt$ED-hXA6;jK`NT>MEy-kfR4@R~RAG5T|0Jq40c^E=axXb0o&o_3s__<4>Hw%~OeqCUNZQRghf}oM@Mgbi0mUg<20v zNbpu4s-!c844^^1vg(F+&VRkWp*IctG!4-sP@p$UX(c_Y<5`h)R$>b`4;L7v+=nP{ zA|ko3XL@Umb>)AN5VW8K(2<8eZs2)J3{KF18PRPT8!3j389+3U??ia;s=h!p6xUPN zo}|{=B3xs4jPAOO?r&c4TOxbPG1uKcgj|k_Q_K46A*1p#Fdz0 zCR@fiGv#@bAE+_`660JrbWA1(AtZIX^~H@fz|u~Wc7YXS56OB1uZo{sm7TM!J&rvB zAD%{G2A?h_=q3EGc#>Ak9jj)0HmGF$1OPR?h6i$6J4Iaax}AwSDV_GS2?j~dT0$t` zv#BAEI8>uW_<+5eW8=R`J7`jy@Ya7yFGr;OQ|P$qelaNnEWSF1#;FH4A-j8RK+%}u z4^lb()Uo{Lb!9!J4Ju2KCyvBG;1TBAIq!Kyi~ELJHI3OUy@n$~(gJW{XkmGtF}fhu zCRay~iI~kVwl-JymFGhk7H54%95s^O^^EbGSZ#&}H-Lw7AiLVBR-?)3T zWBwY$*B+a(dT&b#ri~?7!XZYwXh#oZf1YzM5b^)Ivb|*4X zP>Xo3`!>m9mlli6t5O_0$HdR8;YCjeTXY3egtcxEGjRi=6L%GwUlS|w#`qMdZ|4HW ze&b(Ki8P?xdyj4(a>rG0xakfV+PZtMQxA-Gr)2TY^< zv$^@Blesi=6`FY6d+p^M#GO5*+HX{xOcXNH3JT{QUZO~f-`-{`4Rs}_6vXMA-Twkf z9hj0v!xxJjw&{_OJN@K(F3%h}pcR*Bd&fN?EM@v*Uk3T(Y2l%i%^tZVhFLd3uDA($ z?J6aq8BF0HFRzM#E8=sk@)|zrXhTWOhaO{<#vDh$g}q;E47|h$VND#+ZKM0=L5f)X zs#O!-f#GKoJ$}-ZNl`_9ASK3>h#kfl-lS9HWSq7Y zT1-j|T1!#D^Vb>r<6G4T4{0b>SGk5z@QYD+@dhO%zx$dpN8Q8N;Ak@Fisj>vvSK|6 z=j!`Zn6$>JuYC`rZ5w)Dn=cNkd)ceOuu1k3>Y1(c+!x;yRNws#QX+~jZOQE&d~}qk zL&m1^ZB_-673pu}m)^OE5Zs3%Dr53I5$HY>@fLC6E}E zgSq+QvE`<$ymEi%5W?A%K8HkCc}&{9YjN9QU`fKX=8a0Yv7mPdp3p=Hi!WDa8D;we zbe;o-K^@UZT@%slq(9=0ki~Z{Ot|msdYMdP1_bA@Z?=qCpxIEVY-S_#Lx&S*S&pN_ zdjb`bHrsWq35YZuBjT?d-Hn?fC&9L(GrNTK)i5BWq&YB}lItV$$iB^<2V~Xg<79L^ z{#V)P2VAJo$={FbS&gz9F;yNKEK6j6WD35~u@{EtxkzbggBvm=7N-`=E?N6+lK=MF z8iwqM!xhWi|47R~fk#~U%8{RNluE!N=mO!v3dkW#ZK~}DMXr)PZ;tz;MKE%3Rzd8< z%h385aF_%QwYEtb&!Ry8A3?-_c_1Vu)iHuL*S`9+2(!H3>y1~$dOZ+ZQXiby(_$2Y z>@=9rtZqJ!5}r**R$}AJ78I4+sw?Mo7v<|MHmHG{N+Gu(uNX22=n&l_cq1Q+I2Mlzjp!#nsfZYy`8p_39*77`#ITWv@(tI5&VbqYOz%GRfeBI>!(uN zv?EIo=020^j48?!^@)4MQL&s?kU(jYm?h+){Ek$15)O!x2P&9E?Fb1dbDTHK!^;Mk zz$PdhTmQ0L5xB9H67r*#cKTC>=hkcz_Tbqsq}PqDmwexoLo$iUa`=NR2cILmGg5*@ z{SWf)9S0&78lNGNs|iA4_{wVJlV~pW?d$P4;)-zn19gbl{=*X!c{zS zTBh+f5SrDli^$mgch_?OL1va{5~CsbF``}XN0B!L8RI#HCY!`lk3^Gu7tX><|$s-|q|VIb%?UzRo89qu><~RE=v}53Ri$Ghm}t$`5uNb!mV`% zT^#+{pKpEV_x*$R#oCE**1F?L&yGC{)jj&{&N4L?5T));scMlpR5+I@nK-D!!SWYuBQeScdyVMdLPKfSp_hN9Ta(?Xd35of?p@r zp6Sjw)@B>Xxg&MgZjWnI0oc!%!k;{obIP&XXjl9ApCZx1cGM2Z(8k2@XBls|hmC}2 z0CNg01!U}C=6!t6)g(M6^cw6yylU_OVKrQlRnQ?|)5A5gZB#_DeJ}DowlFzbQkglF{M|Z;}F-0|x0mC5{QdO&3?S{xlRQUgBr<4~n5(26P8T z8`ajLj~QLMGl>~|^<0GP+DAd@bjEvk$b zCIdKj{Ujne!WvaKax2-g?7@4fDjUK)e`VHqSm8zRwLLsW3i?O_G{ivE>ODTKjsGESNd*{GiV8hG5IkOUZ15D8p3bi!xeKTO(bSr-DP)X>e_U;Pb8>6}z$2U?XNt;_Q)Oy<^d%YGU`RFPs_vg<3}Y> ze+fYDNbXztw)Il13%(r}+o7CzJ}@9DnS9jFa_4Tg?nds2z#sgfe7;$VV#5z1y za5@EtVo*SKNm|nF88ovr-fy(_W5LwAiq3ft015~Hoe`03noG=@yLH^25*@7-mJ@?B zcg?XCfOn3YGy@7hDmkpyYRA{p*=e&L4>x8a8wh3u7iH6OA2kS1hAu|o^;Fu;yK*6odg4B**v zx+Hmp=W8UH>-GpDiEehPNgK-sTT0YS`{SW1({!A*yG>!Y^$-B4?)q(PvNqkRcU5hI zU@~sP#Xk7BXfS+PDp(PhQ+dU(WyaH|+h4pzrpsC=g`o6_*(vT|PuDtBf z*<9ND1`%#4>byy0zMPFR#4>-XE|`Z7J+%Ol6nK_%4^6(aK~)6SF;gT?5Y-u7Pd%s}_6Lc!}leQOE~GpS~Ta@leQ# z)M(5;?EtX{#!L5|Dgt_+TkK*H^@FPkck9|35v@z(E6<85*vkBeE~W*OTTRW*6sp zM!DKae+Fr1Ruqx4pwTa-9wAe+FV2I%PV5&cbp}b;Vzo7*xCy>9Q3QyMfc$WB%;@+nt-$@wIQzr-~n4l<1>6;0#dLE3c07-5R=xAR@=d~SkRyJ7wOiR1j zH%-wMCoAb&Bm_8EXS$~D1mvT*7Wj?8h0lvq|E8*2cw> z1SgssCO*1_xkMTvOJEmp(jJdr%;Fym{WuyVS_WN%P!{T7CWrJ}zgNJX=5hx%DDW<2 zc*FqVX(yWACtn|7n9g_=(dFa;S##;xMkkDw64?pm3SYNf_m6Mm?*+$fGGK<)i(m~% zo!6lB&1OfZ>DC#Nycv|~D}(=O?=A0kGL-m#92oT!2pG6){bD%^-PirJt9ySu@A+r@ zH6LGuUC7BAX|X4d_1v=cSUJu#lVpNtkg+<|7)1xf zEwVKwl*e4t=3=yi-bx+pP)tnrde8A{Y=bfqTbT_w1efb)T4H^tda=mNJGgVnLEg#6 zgelMpiOIAvX-~q7{Rdi5Rk+@k{Fvj@K;eb*W3~yIR*lzkv!n71t>b%<0PX{t?3(sW zLfJs-U;Pst{BuMc{epF4p!-NEGYg$8zgY)2zTXu6>$ZGeXyU!6?%R3hid?UI18O+ zPn*HzVdwXFfc0x@1%0c;05ZOrDJ`tH=Qj#u*~z4+R+?Gk{p#CjZx@gYH?jhRT!F*& zZok}YG8P;4=!KxsKFZRj4yi_PA9*1ae)~GC|FXT938a8FXC@@58<8!9Uepz5NOp-B zzS_!IXf(-xr)`sdV3&ThctZC^CBPm~J~pF#hT$ccVx2=P8(g2u%5Rg?-k*&c`ys*~ z7KtP@nRh}PYT48nf$j~J+=RG}dZp}fH}B>1RJUYFV~9TOhOAO{w;b@|k8{{pABNhv z{znVW`r85`^$aM&62nxBmZ%f?)HX*ajdD8sjP5C5#Pv71e5w0Hqy4(DRBg34o6Hrk-)#N|wE1D-tU0hblW2M-~6+yJUTUyD5?}5P%sWwr76^^rj-| z;V9G*-*PDM@8Hj*%JoH*CAWiu#G4xh9F)TJKF8i4Z;a%DNbA0gu<@CtQjs+}5S@U6 z&tG@2v;D!`=DwoPhyaC+;V(?-NK3c4l6+6;_q)}h?s5@?T4)>)|J88{tH<JlBX1 zaINDe^tKF>WF#!JRW^Hp%PBJpd3J3v)OIe;Vu9zAW!r(o^f_2goqx?!TSf=DCio9WA$~G}%uDa1b)Hcj%Ox>}=vzE6&S}!DMNXLt_LpX4dR!6u(={)8hud#U z8rF;7#JQ#5eibwIkG|J(UuipwiNid+yRXuMNl(B0{ROe z&&cWeUz_@R!CEw$eR`6NhgZo^@CRj?OB?5|A05U-(%%!sfr_MIRVB%F^L4C1dR-Xz zyOpH7G-fr8Tp$tDANMmH52BLXqE1dw%vTSiya5JY+4c1XY`BJDG1mM{ z_|39>$qX*;#;na9&6S*nyOMQx!jfXI6^1ses_Y+72mEZqr2qTSZv3nLK{)zynGZWr;;LxpYX z;Y>vmJssIuP}tN0pi(OS=qFl&P2U*X>+IjndCQzwwIR!u%`>tVwU@pK zyDWlZd&8^OA63^VgpJUR2*uE(L@bibLC?bR+25N(F@1JtI?*QRX5qsy4QSJ}l*&HJ z+S+b){-It3-kjISbOy5YjbmYA(ayT6#zZ8>SE+DyiK)>Bg z^0JI+y$wdrajjd?zWSN%BWJ&7j0Evmi0bi!do+-lL-!DvdU@UX7t8G->FoO%FmYvPCNW?mxLy+9wzV zK_R>xOozwW!RIC%%(#!~g>g-N6NOd`9~`)zLA$NH@@=?xVOy+eViW1_$TfEP*y__S z4XaeORW0f~l_5?V)A%%`AscrkgVdp5!C95qQ>djpm0@;gVD;q{gI_Udut}#^>#mPg z<1r%~v6HK9@p|wyF^9W0z6p?1=KfHx^|IBFeLro%vkVunuC_Qsds-Z?cXtG?`8Z6y5r4kV$vfr8YQY=TEGjNTXy z8a}Y0xJTjC`W$@ntns%NC5Cdv$emY`P#zC!{i%O4>)7K#$4WPR14lY$N+v1COOa$# zAhnfT*P{Xwk!s>+8Ru@QA0-aqgfMwG*W^4ciFh$)YGRGHC0LkO}G8Yo`ROFvfkB$iYK zKs=}Z%v|J*hR(pwuE0G&oQHd$w;)U_$nfxu#Rgz6{kr|5CT$drEu#HLvRCa73L_2q zOhJjpwQM?*bI+r>)5GV#33nwkm=^0mSw3+?1`vH40YlCEVBb^e{MEiwAHzbzN&D!w zyIG$1tW8eKeq%hU_TyMFhTh}#J&vY0hEWYR2Kb?(C};*<4$@USD9nHQCE6d?_F6z* zNgJiO747+Ul+xHzHH1dXL3ds3t2S?C!!m(zrUO()QlK0{|HB#~##AesEd{_p_t4*+ zR1?-%kH!+>PB-wNct2fx2cejVs+nfb!=lCVyYa!v&aESpYeTlF|CA*RXlbTp;!qAI z7FudOJ!ZL((3lCr6_uR3P*XcLpqrNdb!4lNAul_Qiq!xM`w{uUnsug~9K12p>skdv zMwKQ$jo(QXcq?8R=7Q2C;*)-MEBz&k}GTW5X|mEL3@i^dPTC+A(SxNl0~ z8E=1YtD04)D8Lo&#pt<7HvNTJ-6U7+HU>$)JUwf(!Cducv*%)NoAZCqq$?)RE8mG! z?#nlq@9T?pDndw)*f*9cOay{++L3R_IUBOPwGfNSTki~3r0>)gM}KP<$hI#+efB{i zwaEg>G}wFt%#yTH_C?1#4@6-Y1+Il7hCZ;eFX`e(n#lw^oPJFPjI?2JFM2P-Gd1U8xiVf^F5} z%@k#O_|Bj5-Rzn!Gf==eDxtid@<42W$O?}gSeqU|!3q@AboJ`8`Mr*>J)<`Iy#$T^ zozB(=y?iK`n)YMm5GN_wFr?E__paTbq?8m^^%z*;#D1H@6e#`>gTv<1U?7U`2#@=J zbQ(iys_ghlTM5co3X24kCyO}q<^Kmz7UY6`@7XGKL&A|eR3vyEl8>Dfry9Fp2~TsH zKlvO|LJrUYoIe{&O|uss)+HBFak6+SS6ZDN+lqQ?);A#4{*tQ)X);V$)y7^2K1^Cu z6&ffPz_n-_n3o?=pSpafh9ZO}jqCB3{p+d+TzoyR6R%7_6@%5`*R3NN>RCKW9f^ll z^@S_vD?h0WO|-oMT{j1=Wd5U2*jnM0iOP+fzQNpl>-vpCw;qa#1%z1j5L+fq=ddG#PLq;KOM19$kzly11&Wi~!%!mb(Gd@UUqb+^(a^#Kid0i*UyWj(nWkhjV&-z5cZqQ;g~WR ztH8#rQubkZ`Qe$rel4s=H*fK#h{n*vs+7%)L3qOh4c>B#zoC(9qVRNbExnu74xrzC zk#o0k5HBm*CpS|wd3pvPFOe^lq_4LJom1^aJ1eVV1Aol(eXVcR9_b=~R^5DmPqy<8$`n zg}VU%KLEhQapXVZ(9{ag=@Lj!EPkvOkhZ6Q(1$yR>AAcSHaB`}mr{oeRt73Z4>fNK zENh1o?Xuk?#^}w>b2bEB$GEsBqq1e>5m@&~b^hErn-%(ODVHLe(X66RE2 z=_+oor$g%*;^OJX$yDIXk4t`22vxZ}la?-IrM4ung$nMfXey8m;Rx{r)m0BO6{;R- zzN+kmfM-gn{d~JbW3H-RY4y*hA>GR3s_!JDKaI}5CRV34&(Q~~mg^`-=8o~IgnCgo zZySQ8YE!o#DUfI^mKiL0FqL~6b)$U9^g(U3Nh)Z<*0Ud9EN0XmHX-~IpnGi%?ZAeP z*ebu?!A3%z00(NAD>LRrB`7e)M<)Z-7w#h#EUIA7Yy>eS{)F%MX)hp(Y8zgLP;dpX zIMu@}BCxGocxs)*spvmRE8UbXr>6uk#SGs898?{#uDa&a2uqFswofYOJHB0GXjwpvlvS@Op@HQ3 zN6{1O^71U7%*@^h{Y1pg%Q2eqG9w=l#=~+vVIy6bo|M5@9Bd$eaki&%ee0V@3$c6?x zSk=k!FpdN{(GBhdt=wssY_u^)9{SnM!`xuO}4>S$a(Zw>gkY6sc{u+D##eb zebzKm^1;MPE^x^!2D=0L`E^oi0u@XWs+F1U)O2;qQWt*C)%jBQ_?C@_2`0c1m;-3O zRrv9G{V>iaH-u0?IbXPXKH>`GaUKc>pEd){4c5ghv3ocl*KFXeP%4kdKjY- zOC545nVHU)(j^m0h&ERDvC-$gA$J$6qOr>kKQY_+XwJ!$I+U09 z;CmI@{Eby|J4Hf8=j%e*i_D~?8R{NgIoa=fkLma-zL zjd@Petvx@K7n3d>BvL{MMsY`myuIxaz92fRz#6xI>>XP|(02em0!`|549#R6F6Q?V znCIJvo;80_2}7~boB!q_!mb{M_;{BXkQ{DR_fwf<>PR;lwpwWg&awWqKvg$F*QX^= zUSd{d9384(m`?U9zs0WUmu@*Oi8;rsfN_Ms^FVjn zYfTi%GiV^e9b(e}dlSVK#8ABt`*Zr=%)Xy7E3mSKKRP$J!`2rJdud!c7FE_*ubvHf zfahGuE=l)El8R9X6Y(xHt)4p$` zR}N|~;fD%M8J009_QHd$5GR_Mq}jbVZpbPwc2Q$X$Pq^;nVoF%HC(l1v}XHEA8Ok$ zH&!q?=y zKamYecpv!WZePaNq7jw_22pB((C}3|l~7m1oPy#fR6IdD=LLVR_rsvXeFrOw^g+>` z3WHv**+c_bmbSW7ub;}m?#cW%<;>Q3d=|8bi_ZW^1piNrM>BHziK(M;DI@vCoaE-` zrp3==`+^Vm#EM11gL>gryYsY%RCu=Q^iT}Zi(6o19CSQb>R1wJ=K$ke4!gw|YU1py z{`%?T?gk6JH4x$Waj`b!LA7@LhkwWa+4d3s4LV0Mw zvFJURX*i)BObbz=bOMxb4@ED4)1rEdsuN24)3=6{+oWJXfJ&H4ME{3_^Z>n!134>DnEf+Vo`w9lNbcYem zCirA1uVE!yFP{TV-Z2sxV0>+c@>6llDlWJ1-d^E#F&=V0QJ_sE!ySnnm?$pqrTS${aC!0!dneq8Ssl5))iT9Z<;s*Lw*Y zmJDdTG`sww)MV$?vuwNY;ZOx!HEdTyovmA=F&IfZk8Fpd9SjdwUzo&;hfg69spr@m znrxvnt_glr4(LMzw7lpzfL#A?w!M9W)ua$$?dnyc5`lFBrX&C24Z2oji*^c8%-CJ! zOsLmBa@iwO5MF2Z$P)Q(y2M5meW(2utkxC{alZ-cC;Km)zQCN|FSaJrRv0MAsGo1- zBu)>anS@INyjJ@B7tM+$TlsfRF;&Si;4q`f7kK5g+vxm2E3b9#^TH}f zPFnX)lAB)2%#+YYlDp0eCuh*gxUsLdVnF#^35R>pJcH!+fwDO{6= zPXJtz8!d_`t*^vdzx^MJwOqaa*p2TF8M%?$P4tE+imyIKIfy|gLu%ippb`e8OJYb3 zWvvyEYvb_Rd+)UXb2+uCnqviZyJIIILKGuxv5I6F+7(D6t(f!+3qy`1ryTVrLe*IM zakOa+MvQPdVpmRW$MJKSa?dn+vmv5=8S$Rw$fQ66Cs0{R@T=_0Ps`nSQ-k1)uD6l@ z#DIO*<5hJJd2xoPPAHB8-gE$_hO7CYaRV}0fQLwx-H8rwy^^=$%u@_!6xSm1RR0X2 z4mEbJDlv}Aez%r%W8r>3gm3#t3lgK5;Ci$$E1^K0OC>xG7n^%7s3_sj7zZnPKpNt4gqxLU8Z*FZ4?nWnQqAt`Ip&S+a{D%& ziQ1~${npBwa9FjbFV(NJ&meE`>2KQInI`9UhFmDCQ`==3n-!hdHu0`=@T6aqro#?i zQtVrb|NH8^&*FZfNb^LaC~O9B_{x>pzlav+<3*4g=nVZA(r>ON@?WzLX>F5E5>8)x zTrs2-o-48{c}jDVD*92#EoWZbbo9O2jxIeywKmwA52r+w+~H8D-neo`+ouekKko|E z9hdztmRU#3?*ZIJUrk*-7^owpf&aZG12a)@n5C)p+M!9?od=X4udNQllUZKZk0SU& z=J5{~T;H5a3)e~?zICCQkE%)GrCO>$8y+{`qX+QgRCTA+I4cH$f(c*iJB^-Sx=Eos z?J%$N>O(d4nlHr|h*}A5XSa>&qfdJj#ixJgR)0aXm+KkeFrV2=E7gq=E2F zQ3%p=ULS>&)c!33MoU3=P!$@eL_ntm7j!QM=%Xo;IQ1emkVu$2Hf_-KyZGhTc5)#p z2vu{rK#rtA^S_UC#p9he)8{>gG61R_MFMoJ6mwZTY9$VPVpX zQ}W`AH$r(cgO1tO10+1F7?M3Qr3IV(O$u}C z1?ZjN2I?rSmxskVt*s7$u8a9G(yP^|6V|)0P(f2X8d_qPOD>>{O*A^F<}QE7#xD${ zi_X4uLek)+k|zkwQ3v;PJlR6@RTV_2HJzXd(x7GQe>)gO==*x|BERx97rOmNqqSiH zY3tDhvnmUO6wFW%+Z?q2t1_V7<_9;cyT}!=lDUjYs0)Y+ykQFU?(`ymsde=zk>@^a z%)S(3)*p&T9#I5~ZuKJJQw+w;K;YL>cr5*JCJ26u8*w9OLz`aM7oQXo!DW@hByYKT z!UV9O;7u>LZPl=v$mS$`?|`1my7i~uTjWr<%6+V27|Qb(_kzE6wZXKgz`Mx@gX~x5 z2Nuo&Nk|lbTgp3pUrsRzW3IF93JX6!>ma5#_v=~4;hQ^kUe(ReSH zBa1R5h4B=MC$X$hkN$%(GJzj@1k+sW*X)$DUu#XlrN>3iXPSkQ?a-sGitEKngrNS< z6AT9unKQ)%oQkgF|69E`}betk^`ADxdltbL>(mwFdQZZVl ziTx30#sScLjT*?5#!r?3ae$Grh5kxYg0g+GVt@7Xy0;Pk6AUI~(FqAi!|~A@iaSq1 zJg=`mS$F!Vs}Sighf{W|H74WxH5gy3owTW&mNJilHjQyG!v%bQpnU6=I&P5xKq7<% zNdt#CgS^HMCP;E5NmQ@M9>A0yz80|K!Ng1Z4l87Z;s0)Q@wS}s`-FOD$scG389Ul zs9yG;FVcWS5cNI*IUny|yx~8|#3TBnQW+w3So?CW8hEkclR;75Tj^&~=`&S9mgU#ydM!gT@|I0lJkk%-2<)X6-p;~+nzbM&ic z*D_Tyz1R3;(0by|ndNVHfoB`vZo?!045=%dslD40GH9_eG^B*Oi2_4(zDIkSf+-FN zsEsL`@W>jaAKTPAV2xGUXfbN>?i!^cdWcxh!ko_-3VE~AAd`JF|t9DdShWibdz|#Z5j8xI(ZO7 z?nsuuCtFxK}# zvZ=R0;4GwV&6W)Y+o!WulBZ+#rZEHeB)=@Bh*pjOEUa>~3@ z?2yi_%`C!5X%?UccMp>;xdfZIF-d>7xbGBsYJ4>=@};}D2t-}U1OM*~Q&=BhhbDR zk*OGME;k=#MERx8bGWcZF^CXY z=IdfMDS2;M&928cMG8e-JdTLxZ^9#=CH!=9Bf_$)5hr~ysq8Sqy|VOptg(9~umc+k zZvJydPjH<`z0Tu4!C*_%!&)S)Wc}%GmVZ^=fEOR6xMYt^XNojU((wve2%5ux5obUt z4)r6v(3%@+QYAkQbShTa65PJ{d_FKM)hk=?vYEm!R(k(~*A@Nl+@%0e(By&dL|fll zq3?(xx_A$Zr`ri;Mu+I4i~U?F?>J60LK;}%T-v?L6djh+`~)@m({r>JJ@Pv6HW9fmF%TZBgV#yZdVGzM1!QfVEXnVG(m}> zGZoQ4yq)X|*2a~Kz?6~I*8h@MN^nydrDu1av)WN30Ge`tn9J~HkfY}>J)7;rOaPB@8MbBlGU;v zSjFmE*9g9jRvDHLvNK1~G$hJ1l5v)a=%cA_X;zZo(~G!UR6DMX7th{kd+n*aC zH8ubGsxJ!wy%Ywj_#qU>X=)j|F?t_#O3~-jWR;Vi*gb|zk$rmHPi1KkvgRz6FGktU zGJLP8`|0c+Of`9YoxeLOIl z820VRkmH-Ykf^`Gt_1o}joRbWY4nZ>{L0t>)QJOj)i`Q;k zXp}aU{)Ez(Nl5YIxq!0Iw$LPu$g|A)v#JXUY7GFQZd&E#@iPg=adj-%H>Z#dg&q-3 zwiIW;h?ZGmRE*xZg8aH_*wnalyX}kD;&A;UmXF<{V2~dH9Pk$IHC>VVf{aTd!=e33 zH_u|N@g^(7C8MA?dcokh!Zr zdOl_2yf)CfQq{o`?`6O0KTUP^srN7r0wRu@@0@~RyWzc;e5il^$b!KCGw2bol<=L+ zlZ-V@kl5@IL?{~csU7BwP8ITj4tp1e5*O#P_^hia6SxMg1 z{KEOHK{1+S)~%Nj52pI&WcMReau%ydIo#}>>@*&x^B$v#7e;A-Dg@?S64d(`mV2KaBX6b6x=r%g5fS6yCnZ9j+{L*vAAg8+vlt!$D4ujHf8d z12&}G8$|9wp^Mrnt*qiLmMvN9nQ3BT<)rTaOi7)R@Fx!`ilj|k96jUHXdQm9VkKVx zdq341S>o;Aw2SI&D#(~kk#hq0?B+xtIwm?&YPi$?L*vn!S5eoQ0*pQaT!~y__B^2o zFbpUNWYXIc1==-ay(II<_7+7v+sfZq!t#uSr?^N~I{BsaEj0=3Fh`T9X~nBs7{oqb z^QhEE?Hj#%i$C4FWKmE?!&91d9uJ(&XWoX3u_rWnQ#PU;ys5uDnnfAioxj4 zt#V@t-$S&MD1!Rd{c+2Herhex{LzDgJ=v zM87PQ-4M(8q8ybg`;r5v*$l`HksK6v$~mEMb_G6T=1~SlCZ4fzrKwhz5%o=XanQ%6@cW3_i`Fz}o&~g`>x$QM_Iq`OPte*C2uHdgf0~U747^S(<*p zjLH0O1j0Bs)+{PNQBKz}hlX z#n`OfV?bm{z@9)UN6iEl{Je}eVH&dNj~BcR-15*rw|HOyQ7o@>T8Dou zQ=8^X3PiWX-qJP=HyNi!5$3WAo%b~YFnx++Um_ot0T0UwV%#K9wp1u{2y7d&&4VEVoE zMWe1yDE(epJT9xHBt($z3KL_>(TC(j3_9AKhLz#Dvg*~jN0Ez%WZ%MLp?k-G`lZp} zaOrf4aOBYuli!9KWbah2YIOUInT`IjryD22%Fe?i)fp=XKeSN}{uqDNh5 zzY>0h2Ir3-@-u^bK<>tAx`~}joNs;rxMQ+ey2%IET^6g{6r?fi&0!Z{ z9lH_m$;f@fNyNB50qWLXz%2sjfK1p(?&oGu^Tqi@VL*&8*|AbfnJF|NjK>Zicj(jypp|+Wg*52HrL6 zUT%G=5OVN-8>ds@KWyJB8Mek#t!o+V|LZ6X3%r8@brJoQN-bF@ccM8W-7o#r71y(` zOn~w75){Y4TpMTYgRRiKD~|Z5=H8EokTEn`zj1X_vgrb;$?c>D`6g!o!5*4~&~;Uy zrP2@J@k4S!nu>jQO*VH*ii3bR6eYQjucK)8X#qPaeqxau3UX?Av^+vRm+G3Mly_G# zWA^D@MChX4oY#Ty=uZ1mw9wvC*}x!Cv2xQGfj7U`U56BTj}SEll*Lg4xPEfB%bSg+ z(H#$xOEfgCmgS4#39rbwWG~E+W-l%KSzRM*s3VueRA*UST-J-6(Yf9B=wgp=mV1r4 z*L))$(F(9q7BwK;O~Z?iF!e9`E)+0GdSpNZ&r>=x*3xg2XLD*Jb~`3Tk8__bvTyh8 z1*?R{8!g!xQ3uLb0WXkH^&7{``XBK|E?oAIXn8VN#dPc#*F~HqrZeX4-j&(1bHaRx z3Qf^&CDGiRjIqlkCL2D`au9Xcc;C)C9Kf|Ta%(638Y78FmkL+X&KgQCR&tXB1@C;u zNd?V`-k!)rTdkz7$mwS}aj^_x$8m({x@Py)&4P;9<|FkpHwLqHhsK0`5=T zZv$IKu1x<6C)Jp%sWg3f`Ww=bZ2pIHk?-AXEEG z2@F}x89YcV%_u)zJ z{;}_0oo!8Ln%1l2b{tSoOct3j!fbIM&!I*Vu4r%?Gg8IJS!i|)MSlXOko<8}eHK8t znE-a=;!y98(hFhynIry%9md8a7YjtRU6J=nU@(10@v#$JYh>A7t6y6H?~vEynN|{r zpaK#={UgB{eF^}EG}z4v)VB%Hg#PrbB59MVt2lMn?>HZdmFzn>3Hoq*62OX1xs)t! z*$Tij+21Z>kdz{JtU=~h2XK}fMqI1=*F!m7hN;U!yaI9{1_7@OU8iK#26dj|C(t)1 z>SNNYjjiGPrnakupaQ@bMA}AS-%p|96+mL(;c(f$Tg59UhCIBAk!)|N8x=w+Wf;X( zv&An(D)j6~+Ae6e!#Qte&7cB=yq-8U;1Vt^jO!bh4si;3u5Cc5J$^Pg0Pe|fR(hq1 zIMEp)}w+uBx|ppnPh%gj635E44 z`Q=s7n(VC8iU7J04RK3%){DruZ4oLGESX7zdX=Xk2?sEs_kM>8{U)&)(&tX{)}vER^)`Q zk7i#NpN`vhv+{I>RfQ;cDRMrnWfWuK@5?2wRdhV4i2~P3(WJChNa6Dc*Bey!eIc$+ ziIfgoSoX^R{Yr3qgmiv&MdL9F=KY$r%Hd;KpCM@War`+btAdP?+!FrL*Y!g)DT#*l z3zV$Fh7P9V<9Qew{byI4htT0r7&c>aYQ8ZU^OKmXZ88~ZN97v!pbRt8yWWC;Z&b^? zfwu&Z+IhQHvT!S&{~zz`Nld@7CjAp3=FWUE5dO6 z6D@1iG4;<48)qv)G4}XRp&iq-m@Svni?ca2z(%=iT;AfnwcBC;y@~7hQ^*nO1<2@M z80iu7{0>NQnQgVuzb#s3xm_+>S1I>X6$=TZbp9L&{g-SK62-V51gs8X2Zz>Q6xi!N zybp(T8yxfQaw{r9vbRo;Z4eU_ysE4LS>16#TS?2alwLS-SFL&SxDT$tqSKsdJA;n) z$1fQ1^&t_H6nrKCdz2B1d;==!TwJltp{ScPH*is_#6jkjyq`)N#Mp)f=Rji(or8^NDqU?aB0sLNxNHXFnb#`IeWft6C zEPN6H#yK4z;rpbA37+C+aE2u|2x)C*ELjJw@g#@iFv&h*{ag3DL9n$-5;N2rkb1dXOl@eH-d1 z;LZ5mz^ZYn$PtHKHGyiLeke#1C;_zt~o?!21{YJ!OT~ z1lx}2dWl)PO$E}zdb)1WB4MaRk1CfOGi^pkh8!%WKh{!11WZ}QGQ16ZrDLB~nPjEC zbWqc!rnfEjl9FQUgCq*j(2CD98bp*6U_Ley%UPSIJJAeT^;36_qk&P(oyP4;`7d6{ z)iRIgKQBw>NeSVJ{abZAn!TSC9<)9vZyyP7*C`SGR36Q1IPxzl6a%pKug3PHV|AX+ zi!H`L3MB3Qqau)i*7|@%VQ~FiVbL{HAZa5gqa=KDuewrjr#Tt{bY`6!1CO5@*Pajh z#$3bsIpNSj3O?`_+n5PplzPE^I~=1tW5QR37DV>6VNZa$cz2re-h)DO3cB;r%v~DU zwkPoG_A*UP6k3=GV_Vc=gsaph&TJCEi7hJVf(wzBoUhuuUjVoM)?i5Sb<5+M;QwK5 zE@f~c6aCUjo#g z;25k0&~iq?o|JW9O(hSL-5D7Y%{j~!@;+r?IJWMD=q|6{$(8k%9HWRoTbe2%6}EiI z9x1)%WI zL|%h(;(+7E%5s7+9)E0@##%Vjzh$rFBgZ|6QS#pn`4{^p=G$=Aqc9%4{T46d4w;)Q9n%$18JG>~ zP+?=b=zA#~go3>N$G3)XtY{g`7lx|sT#8>^>SzLTj7#{QjS6or?HoxKgB(i<~+$=$z!G!vYM&Ec_Iz|EaU zKFr)xYvN9(hDPBKgVYh9YxvmR8h>oNPyRS4qJ%%ol}f%$X+AT6s%Nl|9WUr(&W@0` z2BRC#*J<7O!7j{P(#eGKgfpY7Q_(V0e9SbzL>Qdj=ftS)U3nSD+w8?@#{SPovQ;VJ z$L9zzio)v$mn!?!A^S6)?jrd_#|qe_CFOcQxg+3?Pmp_TBH-Du`sq-W(n=o%bS`w1EHbxm7CBwBj@&OTmn z)oJ=9TjwpBDr|NByhB4hTObYu(%uC@Au8a>;cC9m2R4n{*|K;YBY{7qIRsOfP^(gI zixy_zs+kQMH}UtG^}2xS^Ho-`Mg-j9Pk&cRJ@G`s^7wl`%}a~`SY$m2DiuyeuQ1f1EFojSr1Il=|xD_v!<8dGzn7M-2gn#Hh@i=%xU zORdhlt{Qb6{>X7c%}d(Rg$7Exraq zEFzk*=wyp-e)}?0g=XhB07sY{-9ge4ZdXhmpK&Wfpv#EzFf2N~{*FHa21l zSe?~xZxA6ohW)QyQ7J4;OCQF}uMWH|K9}e;t5>zXSMh*U+?q^P=fJLoe{JyQqcb6( zX>`6oS-%AL8*j3cSxH}j(%$SnrI@n}G44-CA^^z&OJGw_i^x}WM`8B@$gMIg+yz$lC8rN(Bc!uS-uHisUC*@W z`|lJ}bX~;69RS7mOLs5=7W{Lz?+}TwkE-to%fHnzDFsM{4GeTgg#~Zm-!#+78Df{{ zqGjE?wu>Cbk}+p81!Fz`XF!&ZZX*oPZ1z*KNUo?U#s%{2D+U;0a@__n0|EE&f+eQV zQ+7a2#U*5Es%@4S1N!XkXs%D28n~v518FMrqL38J)%bs|ekU+)6*280MU_R$Rc+ywhGdKS!Qu{Q9tb|fBjc56+=UXaf9|x2p~Tm z_dhAr-zny?5C_J984X|2r7husikS`Rej!Z&^#M&fP_m|m{K?d%mhs@perN6nci_S*Pn;T$~b-%pF*p8s~l}y#q?Gy6;3H&3K@?GVa#M)6d+MJ>v z=9R+Tctoqa9Fk-4%%BVQVCau=|3fYMazU*L0Epc>JBh%&XPuCS3~4`D2z!<{^vHi? z=?airs?@20!$+fPa52~dTgzWyvLz$WJUrp&lPI5%K2;SS1|6DT9s`e#*o9(wKU)_? zG2nM)Wo#F8-XGN&+EB?H$W_6B!~@Ye@R90~0#AbIch@F!?3m+5=j(`gkqb>=XD|@% zgyxf%bi7qzrQbFI9fLny)f?4$+elI6(55A=(Zb7po1*(AyT#-Cckhy58V+QSL{ma);a5b7z#foS?rFo*F24XM%|$?l0RXmLlc-R z%f5NV>}kDRX1XSZaabQIK@{X(_e2V1;6Nmt1Kh702qj=5iqo4EZxpV=fYb#uFz3V!3YlH$bgjU`mFXf=YU}gFXzp_ZX6hBDf zTSfSqE~~7xrN(e)@h*QBvqu4Wb2JMzXPgqBMx6eB#3rvcYvR=H#C@1IxKSt+v&0HfUW^p7R1yq={nyB3 zKC)7$3tzdiAXbS)7AHw`=QZinj7|2 zm+>|FL4ieq*~MS<|5}jJ_;9{WOj*>BfHrZ!OAHhlcfckwcUq@M`kiG;fpCGQND0!U zEi(=NjmKZ*Ba<#&1ES6q?tKYdcshXzV@vsVaGrae&AlIH%4Sl-5`;V=!zeGc$V;^( zWnQj5qyLlGiJ96!G_uoYtL$JFyDA|S{|m*O=4W!~ptk?ASz3ODJ>@2F+E`z0Lg}%H zm{+)1-9xpF6+d0n~-$hpbndF<#X#NmPG^n{gVk{eu6AU#)f%xAQx6nKdFNCtr@ zYzp?xNsBPr^>$Ix#jKm=0dG)Gf#gP0EybWa)<25WQf1?a!Ouf_}*xf83ZET1)Z zg=I(mIN~vY`kO^fk3B`BR661FgMIQJ2vA$lPbsn{q3~`hd4%rThZs|q$Gay9sSc#r zh5$AR`YUUSN#gnwDVz3sQRay79mefk>8$I~;Yh%)N>00k?;In2wR-0}h2IgMbMk=I za@9S(oHk5TV#LDz`o=cKDMxxzAAQdT6f0YTE~5cOOm<#;mvsK2GfM?TC8;T|(iJ>R z(sXfv_@=@@j3_$tEjm%x;Q~1bx zxzeSMbh>io?usgNP_#sJZ5y?NxHr#a*o;QP5%cJ=kX5es%oDRhxX{BK)qrZPoiBnS7=*1CdH;1!&C(f|@0v=`X&IFC8Ef(eq&D!B&73Q1N&D9LdHBAnWGH$!889Zf*zw{3+`F8887cDo;^Yjp?VA0U=R)Gl z3be#Q8-zTGj8Wk@hu6bvf!bpjedap!C~KA2%JR3v=*eeaB&pwzeZU5NVFL^l5SwX4 zL7Z4u^Q6o^9}Uah721Nx3wf+?2+Q@>R_PfF;MKG(YbvH4-@%JSAmf|VL*T7jys%(5 zYd0B?QpS^%txf*S-cDnyB~R& z^f@g2GW!eaAxYc#o*X|D&FeoM-oW#dY(wrX*D?Op*0pCd97rmx@BgOqHI9g(ZV;Oq z`1N1ksrlQ<0)}i(@@lgS8KYTb|7q-cQd2$~z!6P{8rF(&8f)hcHaX-IEICh9fhn#_^zb}b}hLN!` zwNRK4;5m^ViSM%tJ7*iu_k)3=XB0rUZGjoQ@E#~dv&k>DI1EZ z(oWi^J?%;^Km!5=HpPZ2ryeqG;G+omiA)d_GhN0?f_x?oN61FY7shUfN(S~Lj!hn50JZ~Z zG7S(BJ|NqX+y|1Sx^XxFN4wC-=|L*YsX-lho1yL#M%E+JFqhL-SG=I+VP7IIw!^Z- z)^LQ|81UI>h2(iC<P#i~7+;9SPHPG@jX>!HGPrRN*BU-Yt+dW$IyQe%EVO z4*{RfCIxO{1^f@L-O7_RT`ZW+^usT`c@?9`3X*b?`Eo)sS`0Mj z`zrAyaC_-?y6YJ>CqyBfxl$$&njqb8Q(l9*F99>(U+^iC)rvHjp z3vDT`#Jn6vL9#bJGe_i;PHmP|#WOZp%!{XJNS`~x^&iqT2fqFB0HB2QpJNO|z?&+l zU{VM}EoYp%2Yy&XfZykT?+ZR0+Csn!-MngY*?3 zz2EB9@RdYQ{44199ce&o`9*IuLQ%(nh%0bJ#$&!bbA4Fyq-m2oxpRe*K2)YEdg$Z@ zAWwgip5_&x-xXtt2pyUehE9i59qbTeDLk7^(q-HjYpdRlz+b>V=E>AQP{A@1DiH4_ z%XT@gv^2p!=%{I7GxDFa7ojABDm_&C^o$2y7=Y_3Ru_7Fnfe8Tc>K#%uk4*@hz?wY z0G67p9D6|#ey7L|4dO5SEoQy_l{p=eM-pLpk6pfHIn=!7Jv)lOV`c2r`mmN}k6E@o zf4>|(BsEIJ=&V!XI*w4M;rA>7=V&>R5 zUzx$0;{rv3^G*pBP&qWrxu6J*SM=FIGoDlu6hK2CCQ)IB7HmkfU@~r+fGw*Rzy(YR@l<-IB&D@}!Ez!CmR#mHD*Uy*|rg z&Fnxm-NiQu1aE`hLKs(ekDqJp-vM=OJKk_)WcKGlw8( z*?F+Vz96&DRlkf{@CQ9ejnmIQG#cE?Mp{;xeQ_=PPmMH z6^~%`6iJPdPJyy>E?&$m_f$&PjHLgtvLtOtfL=ntqaK%lj#PK_z{Pf)23(p+ML8GV zExC78g=#52RuF3)NH8odxQWH0ZwP-gQf=BI!leWo2;x1JS0H0iTuFQW??&hhz;ds? zm8Z&$b~|gUJR9-@kfk8tv8_1O^dvl_;Zd`BtYMKoS&VV3h6dd9JKn&4>KN3`a1F-1 zkX-I$cF^Rc5_?|9e7P=yGg>H^YHpt!+s?4UNt=n^Owi@DUhJk^)a|JWs5_gx#>q^8`M2O8V#TW=0phg_8S{AKnGzf>0-&-)8l?y%gI!9cm` zDbtaC$}~$qSg``q)YHnjklTW$O9q>Yv=P>x35B-%xjq#cLcHEu?sM7byIM1%n=D+ZNd1x4TOQUaxB zLNMXmjUPoxjHs!uRPzBm-|`P8Ze-#`P09PRysiRzz&O5&EfK*V%l?Apr-z&u^v@Ms ztN}BTW2Mv3{QA%wP6jl?80(D_GGouVu{uW<7PErT66~3ATQc zi<`-wWyTN3J?;8=edZsF6i*6--AnOAV%CQ1_O)>w$fk_}gr?Rv$sgNYErJwqy!PlC z=671^_41jk{Z?u0*y!y?iogo^enzOZ#@;0xIYPhHJA!|3@|JU@TG0@;io-2KzaVF- zVLyXjc;hj@(=u~6xlaO66XrC~2||RIR7Y~Kv0$3YyJCE`WiBRbgKMzLTd=i1wfWc< zCq_Rd__K?CDj+ z{Svy-d)%za9rN4DP0R6N^GZ{zERHM)4?;?k2&=gUS-K#P+l0 zoyVot^;owu41MrNmm&o;n)fef$aB~z7Wp$`>o>XAxufNfUZ*huPrH7;`-B+l*cDZo zkrobm*+(stT`h<+y`_rrNUO-sY_d>G!uOgoggwLH>|M3$rK*7%gjj?7NPu8aL32DH zCOQUNt)rD+UrJ#UotL^$!D+!#En=3!uvaPaXtnSd#>W3LxMr{=D8q`l08h8+h2P^fVn8ABsWUoD5499cl!wgsT*r!j#lJvJ_2yso9 z({t-R?EVP7cj6#K?1u_l5qBJYUH8|mR|Th3ctLS{rCs)=8M8v7{K+YfcaylxSPY{x zzOLDSeEW-1A^$@R7VN&t>U%c-y4;Rw488ev{t~I&_Ka>~I81M6J(nW^vl$qX78sJ3 zkbwX@9mJ}EkBYp7sazcV4OlHche;&m{?OzVq|aa^Xuw5Xpi8@Jb}C&r?v+a@PPd2B zy}v{^%Tfv#jlP4u@|`zQDi$LgBw5xQyekqpw2u=iKS^8p5&8iw;O%0j>%(}xfypC4 z@HZz=Kp+()HjN{+#KuweNWYZu_v?=I7wOdX0$6mz6lAXK(bnq9PZRJUYV;}2PupNbqB z01DsBRD?TV!i_ASFG$}9V*`Z91gK_vH!-+w)K9n$bqfQ!AX}*wJ{@zsH|1TBa@SM! za+f)9bC_zBsyI@svYpchFypWxz`OaoVn${SHM696`(O zMYDJUcVYQzbsDw&3WbjFQwT{mHFAg-iW9qR6(`DAmpV%}RHLhW%X~}ggC`$Xwi7+4 zj@jseI1%?N5hK4usCS_ms2r!9sb-EIE%TCAxbP4iYs4ny_bPDq3eW`-8A{qRD-pt$?mc{7vJ-WfFn+AiYN!8Nuwp_6!P{PkVPxnBA+ zf9BWlI_*)z8{|wCM#}>UMqA;*ORWp+T&w6*c~`F=I636QdLMA|oFf$(ab-+&$&SA3 zBx@cUDeEV@ZQi{5P%f9T>mGu7D${j;U)Hexr~-f+RenBfD-Z9axrz}x4FXkdEGf5< zzNxEloT+HCkb|nnZkK`W`FgXIrd(*0MT!^51HoKu6wSkd zbG;2W3tcg(cv^*3`}ecZfO8!?AeBCxiFl0KF)tA1aQ$w(>*Z1p>BM#?&4{>-Lfz^D6+H*7NU4}Fs+djSC%^+}+_q9Crc(6T45W==loyodF?!Duq*WF;<=M)7GA zYr=NQJ8@=yt{H$Hh4H}v*%0Ghwu67NF_DO%?9l)SR&RW$6jE)UlUcv6_-N zC$d@f+zG-Yh~eWC@qf|HnCoc7m*sFIT7-vrIV>Q`&#ts9eKt9v)dA!QvnGgyx(FeO-b0+G>kyJKbMk!Mqxg~gPajJL^#UELlJ`40ZtUtS=SGlDA zFGxS^xbdA}VwL$+NQoo*CAn<8>`DKjO#O_kONT=70fgMtbkDyU;anmOl_}oBrqY^b z!G)f8gjsIH@jPj$Gg(lv&X9I{4Vo%*W7R(%y*x$Eg0~i(eC50fWwu5Ne-S)cHIEMg z9~8jgM43*16gi?^G@c6X`?AGG)lfvJud8A7_)~W_zaGcYSlH*vs!3!d8(g#>BDo@*u25BFuE&YIE1(#!z!1#xlUy6wU4#47R<4jw`m%5~()rq5CN*7|AL_y%$K(?PaCzBnv1e{5qEb}ly%xt$e`o@q%Wf5&+b~gIMZh?`) zyWnIU!DANnxwe@*Lk0o!9Q7r}W2oC_+Qd{fE?S-2Sl`ds76sT7unFDslmPgJFvDe$ zp>5An(SyvNtpZ|&ox~B4uWM>d(f2MiyX@Q{K1YEm+{5pOP;m9kbhi4oonlIdaZ<{< zWeHgHR>oQ~rRdKthD^jSgzg_<)VrFklln&EKcSBaO8amAol-f%U=?F1A-GH;lh2jq zYI1NNQU}#&-K$=scpaP9weso+tFWzdwv`B7!|{kCG-A%Wx^_~sqBI^^$Hh>YxR2vt z!@B>ll%2u%uqr>54NC2V5k1`zi;?V5IaUbOPg537X$kT+)3A6q2i}rp69(~2`|3EY zm#^*RLrhcXAdRK+hx;Dv^u#3OM56GkYPD4MMcvo|M$Bpd8F43ut}{k?c^83Dlez36 z%O2=)!(gu_Oav=(-(-0jyHSpXiJ_D0&QG}@g!|@6dak!(!~g%=I7>RBU?>l5YUo9& z8oSmKnZ~%QZgZ5uzcJFTRQ+?jh1n{NbR3I;%^3Yy)VmJ}2=~?~*)t31yo)zg=}K=I zC>aguj7ytxpJv%_q0k8H>?uHl+Q7f?a>MMMEU9tAW|1lhmfG%eQ^V1R zHgVI0ZTiPA`(i;pviB$45g*h2BU-@F9p_r_#$shP>)9IG9tbitF>O9p+bK(PR~9|C*+lBGNk_OK3*o2)y$Ai&=Zpt}^*beAM;K2=$eX&= z5?i!+FbZ9q0HpnqX4XJxj}gT|C--$d#BG*T3ghKUCp8ml0mWcgvYUELkUxNYi0uTB z)~8QKkCbROCkO|dhct7@#9oNV?*r;g*{k zM?yf}D}6sa^}=L!9}(_xz@3%88toBU$LFK|exjNSfioe&kS=?vgHC-lS_eKkoEtPs zXs-~Gq@w59iK=N$shb9M6ai*Z9&y?>Cw+m54x42^O9nF#DRJi}p^yv@aH9)S4BG;} z4&MJkAW?}omAr~SV!wfNfgdQ6v_`>a6#pQD{>71GcDiVmuBu!4+3s?yUe^kB4GAF| z9P_#PJHcC>sFg#Kla9cAB;<9BHQVTNs5PTO0saFBr-8yB>${pV%Q4y_(ROU`9JdIR zXiweK4yc@*Q49jB@f3f8^ck@hkIa17W$;b!D)bUvMj~!p4#^s98WkrH~9wt3C*dL!R~$1tR{?UQf(MvCi?G|?r$^Y_=N_O zwckb%AdxUWh#tR79HtH$qv`gbv1{%t4~_x8l1Sm&z$ToY}!N*z0E-RUcbpG%ZI-`Hsrt=iJ*aL1*}mt zGQ!+_S?)F3f8#lSo_(2V-GW{aUQq*^-XbK59N$lq-$bG>K>-N?HS5_NLxqY?C2D?u zqJS^um4G*XyUKV0^s}lpeVnzWfac%;$pMWtx5UW9!+1vqJP}cM#HXk+`*9Amn>@KD z#8__zk&5@4gLAWYVvf8&>1^gMF!I0DMD1RsVypNG8$SEeqtJ9g)&IfmpW*@L#&A_m zRpP^GuL${VKco679`|6v3+xL4l)9^|$0-a1bSBQgKK5%X3ud#tBm-l4lf1NxC#`Ve zkV|tgl|UIgBRCEY2nnzyC}P}$u{@LJkyZm&*dpsEzPVv(Y^*DG5XBR~%b&?RaY4=)Ff`b621d+Z00g%13uv5k(HCwWskGfe>Rgx`4kO`Ph=p zYjzkxG3O7AAYZPG%d70^P$wU#f3Cs#iaxKpLkGiDq`$Uo`|HRh*xlNzvj?b&-OZM7 zFkbdjh5&9CZ~cbO#(|{jFoKVN_p)>*Llt0pnTmlqO&R-MFIEbyiv-??j8ERG`>B!n z#{EAqbe!!UpU?Ib6Qblad<|0&Q%-r0e`=D4-6gi_1mtvHzY{{zINsK+p)EU-KkIlh@r!bS)P zNm?kS%?LlJp~w9_CY%r*L#cUJR`5+Hfoq@ni08cJw<8Y?YIr5Bnj|{*JsU0e$^<_k z%FH8E7#$$75wfsYQI^H<;XvEBgkZ-CVFx=CJvX_Fi|D^{e^<4pEIPv)u(dAa48LAZA(tf$|RV=z3o>esBJ@W2Jf~f10DDHZ? z>xgU~y_^%7k!duIff(kUQY0GISRT-6?i7WkqK{{4w7}gFoA^`{!%e6KqA$Q895^qJjaR^(p0-DMmSGNJaZ_8?m#8Gl1tIgd1v%3K_{#t~1I8nGHuyK#KLe%(lhhQ<08M zmA|csgj8>vefQ)QFp>n`TUNzflsTxSHSN4Y)z4%_hK~yVi$nB~G|4%gsRbk<-&A=A zBzK2NeKq4#!MDn?z42(d<`ux10C~2IxqY7a=yFr#5<_jR^t^{tDO%{aJ`t2se)(9WNit7+cIP^%}dCLVCFUh&^vw6{@W5 zmpH(;$n#crQv;&p<%9j|vP{SU)=Qn(o}=%a&&oeL63JfH;fhbK^dUozLvGm>Y3oD1 z0eCm0=G6RD3#cuIY$ACy6XnF)~8an|bHu}S)qH@(9946d9Dq7Ki!ruB#I z|8S7oIPaCw4Dk@Ze9p8A$xOJODj1Wa`s{K|=sTL8E-d#FwEGgCc4_y|Do=$&1~m%4%; z&lj64MjbT!`*mYorNZOKFaV-H({baq`c+nZzWQR)aA45ZZ3WR+(E5HZXp-Z6@y6x; zOBa!8o)R5gg(ve+{*1}?)z}&j0W&ToX@{fHo5|%%7l5b)1oNj4WLUbbZ-?d3T!l-T zafykoo1$v!(LUEGKsjEhuMBe!33>@ib`qxmEb3aiL_tRMbFX;*!%rFf1mghMGU2_U zW*n9Zuo^+Moju^oiO$#WynMnxa=O?w5JBU=A1`_Pn{2`by+sQP)DPI01RoyX$Ppor zr}%?sw6)<(f*=rRB+^{hBV14@VKW$Oca*B!MyE=uTktccphYHHVuL4MP5skV;fG)^ zr}a+#V)cFpNu)1|z6goNpm;mK&BFs&4>1^!MQ{m=)s|6k)~}5@ZMCsm>wc~?iN==~ zlLfq%nj#AZ$iahAFe4BDyeWP_55JKTQ#b7drkQ9fp2}>x91-buKXFZq*H67?ttYUs ziXf0#rF09ieXlHy@J^=N4h9#;k?2>LvfkQ=$0Yl`)aQshodX>$P0VSZ%UsZS32vSs zcgy|)CGELYC}mVKeqU}F9HC(FGkMHhgsUCczSs{5e%SFmKqw6XI2bs1>ot1S$)3e2 zyY5WMm?~Z}OZq6gs1IOTN=iVzxGbfnP#I)uzU$qt)7snmJ+73N?F%oAb8MVH=mlN( zhW*J<8kGH1MYRS-wLdLSwHy2;d>?&Fo>=4P_%+;BUznR96Ykh zo=G=Rg1Cp#Lk{C}0Teuyh40D`HjyX=JA{GdWT9d?NbFLsJ%k=U{KH_G^p6T zzqKC)sG{SWgntV)H5js~q^nb9_PD6c$@ik~E8HUWnQ^tu>NT?iVNo=8zoM&dWB$sx z-&Snh)HpGjlTD_Mf`)Ctz@jEKx9|!uaV5yXiZ@pUT7GE^M?ZC>nl zXr}ax!4gYzV!65-JrS$?(!P3jp?YBD?Ry%kBs+~}zt-qDn6gD2;=HtI1f# zj}RVVcHdX>@V(0ReGEwF#E$v3CYia>Cgd^xOM5jrJu4U6^D#M8`ZAlW(NL7~%=W5I zA7YJNPe$p5oH~V*yqmdR;Se)O`hND0J1xytGZHeMFfV>Sg028?T16->vWQ3R;F6>+ zfH=u%tWH)hG?tr7HJ1)=HSLi4OJ%wFP31Nv6Gg@I6DM@9O);T^=?2P_c)Dw}XrcsO4nvh9s&^_h2jD~vCfm8ce=oDx238Dx!Av;l%etkN zp=RBkcy??tEff!k(RJ<38)+q_sY=a>oc~~U#ZN@b5Ap%SO=G%BtSjJ3)fX8xOLpa# zRNMP~+IlZhChunQHt3g(VSbAE5$D(ce1Sy>KBTRpCSA(c^`4X_d8(uaWP)$q^p>>f zUOsOwPCBKjHnF4835p6pIc{*QWTa>RH1yZYo)*q)<&Sp^ZTc;8p|!IZzaWtOWdtzOZ{OpNoW^KBeaqTN&so5H-KEt5yIQn?LK*!yd43XL->*ng7m9 zJ}HKEuHA;I5m(n;D*zNfU^OS|en16mWnnN9y;o$n&}YN0+0KEO+9)P8Vfs9;G#gzc zd}2YhJ^J3cy#lXH59U;Ng6LG%k%jt#6r9M}1RFaNIw~dYhv&bOnxQYLbXUfiuoMe*d#Iv@i3dGL1&=B!AB_X?NciKe2d6o$N*9cYT66T zPeKxF1luK4!JSqJA=LZ+p;qKtp zsX;!@4Hhte^q0rVg&gG4)^vhKuvL2>$shB0k(P^r`ZY~9oY{9!=vFg35O$t+IB`Eg z%KY3bqjzZ`p6mY*q@nhWS5iSM5;X~%6)I|2EbRuhpK>+)M*%AUZ}ll$<*-WgTZvf1 z0F31$>tV}L`_N?l2S_Igx`z6+<&CXbWmwxpdkM1EV^;wFG13$@%ndwqX^v#oh{`fr zGXLB-n-qBan5W;$2kJ@HWQj9NVK^&9<)lHOEtNskqyw=}Qs?@H4Qhvhrd;uEad4N~ z4OBae5>nU)f7?+37vG`|J6y-{QvQn|R_+=RHzbSUR7RH}>VJ&34Oik7T^w8>%H$hK zvHx-`&&lrEl`ud(qsXq{d>Rx+0hA83W40p$WscoE{4vD7^>;=9{mDJ-|6kOX^(p~qFzP?o^lKMtwQ`)4Ri1v3e=D35tQ^#Rfm?FsVmlj*+pdZ+vM%C|n$cdT>GDZU<_r{KMpZV2vAStd_E+t_;$d=POt&xv<9?-0J>e z=AUBk**1_d)90^_@F*d<`Mo*t-U=`b6MNLMxvr+8i5A7ZM-XTPj+kSDDMXIqkYdF;Kw@h5sYN>>RKjIC0j&D^1%gS-5EbCT3!P1V4mUcgWb>|eWsb~r zlC?6bxtTK(twitw&!%Ngh>I}ekwb)6%$&%}?7<)ER3r{*Wr1ve>97f3eczx&i_M^n zAD$3ybN*aXvcdS~Nv-(0A>rhD#00*5`Z@J$PrCn^F}E#UacSSnwyDZw-8ey+v60OIfxAB&m9nblm z?qeLfmI$xi_(r=XaXpe@)=0LgOoRDBW9m*y!f~lZ)KWcE^x+=kbW9Z05oE|roPXVJ z{o|lUez(xAig3M2#)(K=%mFYauZ@xGgG|Y7#vKpJ6h+$vxass~Wc?2?rm|1P5@?l3 zw^fvQk(!N&!!uLR*%4d4xoqPemJa<4qBr_B3%DmQaH=w!G1xUu?fXA=w3kYPu}1i> z{K=pc!@+W_zT@sSlx}8EJ`3>Xgz}6ROFEZ0!2$XWh3^O%rpP!Z)h!dvH`bnBUYrjZ zbr@jQXh>hGy7*VmviTmTHFoR!c^p)ottvG|djXiD0$==tS8fQ7iDQA>?nI8*)U|&e zKfQX1(_o4Xsuz*rQBalB?L`c)Bxtfj6CH}PA!3nv^ex!$4)IxBrZ&l#1~z#ica`?I z0Ax6v1@@)|E2J137OunUalzul^+mc|z>VrCum4y{a|~^6W+wT4BuPatx*G5>6d!8k z68is+6qSWDm0Rw_qEAG%s!=uUZzS1FM!`n#V)RsE@zF#Im!BELAKLcpLnqUEojpQ zaH4gs;#G&PZJ4cgPdR^NDDY=zbnXhvK`E-&P%2i=(xvyWVoS&PJW^-Tb0Au!2Y>Dz zv@iR+4j+XQo;awANX!^jrc$`e<-yRe}KgC<1)y|-QM+zv6D@`I8rWdmh{&)2d9Ay=Nx5^|8|GC{kl zDy1dTe_K7i}K#79H&b&-J^$!&ir`hdt@f7X!JAI4> z2sY1i3D&`D6@wYXsrXDkcLp2?!PJXnBoC(bw$Mf$E2jR{-nTlD;4?QHYD>w`T45MUHoj7!aeahg#)C> zLS4+@mYZf9wg-b&;=jWcv94T2Y6VzcOPBeCgH#qSs-MRRDgLaYn#z!GswZmQ{R5oLcJCF znjl=5@Gq78M?l_tQSmOk8^b^bzR1LC^!w(M4XRQnf=#B}=-17MG>d*)@P`$KgiVyU zr~7Y1OST!31P_K zBd9Ra-exGUb!73xMtrnopdIZ|JR&;UA9~a63l{=Hj~nw*_;o#Dk-TG*uleDqge|6c zB7gRe6^;4p{zQBkcn%p+CNoK9Gv>8M=ClEo$mQ4a>fgBnuB z>*Im;K*=zREp0tvNq4cpm}v&~Bh_*&WiiAasGg}D%tH&Q3gV}zB9A31qDwz>(`zY; zbAOR3X)~ZQ*`b1_vt+T4@UfFJS#QXKrG2ESXBx7ny*QW?B$@C!PtGuxq&+u%p%uEC zbQ}vRRm<-hFP9czaNa0l8wMPP@0tDh)pL5!h1`g7vmRQ`Ht3jb&cT1YFF{u?H#0^W z)liIS?u#VW00_5|^N!aIo-U{eOK<=p!`0BqybD-Ki^l-NKK9FI8~ptwI)_X+QT#v- zt6*z+3~bP96u-S6B5mRGK0_|zSNl$tuiNizXQ!gzl!@t%*AewGsE*Sk*Km*WhZVKuipDj$P*-cfeG#rOH zyPY}tF%S@buSbT8G`yf3+ICL1Goh1bSkUqgFu-asQOoKsO?w~HIydj3U4dQ%-1D1* z8iW%{98v0T)x!GN?nlA2Wn=5@bD<>%7=irBt!cKvUD1!J#)YY;mq2SpyilzXe0g@V7`IyUAN~+IZRkM+h@Cgj zRjkBG)I46buaulH1~~B zl^H*MJ8#onLewa(F?N7~Jr<0@b;;#`xs) zpT%P|`@vngcu@fXVUK-EH@beldbf$bD-ZnnO#(!k?Q6XJT@Y1-`^}j`>~(2I0JB7Md4 zs7@+AG+OGe1`1aw)9(WyiS+VDSdBEN_pXsa9W6Ox74bdVQ0>~531AO=j} z-NI35*xpfI?1t|>6N4en#%c>c5MX(*e0)Fk2w3%4^?m9PIr25yr8aD{yudNwJs`#D ztETt&Wa2{EYddI!D=iQ#LaT}J$F0c)O)$#*nzf4kgoWIR4KSl4?kSW0(cRl5?&lf zo~NVxycIRU7vN&OGMFD*>d44Opvc4iJp>ue!#7JKnmn#-av}Sa^N1-E74{`hMn9vF zf!cAod0vHmodLM0fv8{G4zwL|G{QY;W7l(EGIl!v zgwng_sf{(M^~MPCuY8zfMF0f=HGL=h=`f zhrP?4vHYYhz8MTZ-0leL;{qqw(n6YCigLfdMRcxwwbNQakVj=8+M5&A%jA&UjRUO` zaY25wG9w0k3H#D0zff>;AYA)pnhZ^lfmk7Eb`s)-(1xgdukMJy+X+b}wa%U&e$nAw zZmQPh3dZ7pdOf2VrXV{=g`$_e7l*;46^g!@4jHd6N8;kC*J~&PRgb*f(&=CktROk) z)`GZJ?*v}tfa1T&AshB5D3?4s)RLB-Fe#IO?y5n6>Qo#W?Os>P&&mb)TA@HWf{D5w zm*wy$NHuY1z#Ctl$$=hJ;=+2!v_mA*PjMrMTeH0d?zE?Uh>J#bzO-9;Qw=i8jUElOe|l zh9d7W@GztPJOwUL-fc3TCLT(;dz>b6`{bG^2DqZ#_NZoktl<#UXnj|GtmuDw*`UTv zIfdjWDe{N0_$@=yWVRl^VhRS!3ngn=SybddYpKQ|2U*s=M^p5i;*$K*Phg()@g|Wc z@MOT2W}mrVIvPAYmfUQvn^AsPa-H0+b$2II2ieO9$FjZ*BN8(+?^tT7H3@~)`?3AS zPaXq)jREjn`h6$8qtqNv7MM}Q-dFKC4C`i$)QRv`GUWAA z-@p?)ihRni6pu2Tt1XyaXCi)6$!RU9|GUJ1BI1V}q)gkBQ$sU6y^^wx2MT;0!VJ+u zo_TH%Tc8q;^+bcXz#hoBcPwMM#cP8CsP1okRDFkEnJsfdzEM7Wx~E+n90uF4(aaEJlZgnF#Q$Y8qD3E7XUtd?}yktbI8YZ9AO{E|oS zFko*W?isTW(;6$p+ifj-`I!|rW9NQOoy{B#x$T-KgvQW0NCgVl79X9tm-DoM2G8&` zW@5eV&Mzf@PTsa1{kacu@T(;mQe6MMAjT{27F2War%g=GP9d5B0crO~$Et)JJVaTU zt8Y8Y5+}53;zQOqkN^iZwj>xlfle0@uj<6sbf$HNSgSN?wytC5v!RDJLut`sdCw-Y zpA(LT%YL@754M7BBEYr<)Acu_uoK?V4%`XHnc>yj&a+A(+jSV#zOm7fy?28d~e_-9IcjLjqg$)`qDin zMy}uS?BS0Na?W4>?Vz%e4txmwr^?afVMP+FthFOhj4{vjOMt_&u8lBiE76G|O{)BD zYJoFOaupOh&76uWl#>xx5;##GG750~{6&$I2iWi85DKl}+bMk#g-L);@c|xTDUEum zCa?3RcNx1Q zgA&C@?*Jc!I~goc|FEOD+*n@)LyYrG){mto9T!}k<0*O|+?r3TcW+)g(!+X75EE>e zbjSzcF`K_ZZ$I(5GsU;jFKX5Y*&WyO?Y3;(#nAwRpZ2DhIyP+vcRW=J;RT#Chgvt) z1Fbh(hYDs9c}$OJh_5h--7LphioqW{P8~5EMc3Lt8ZlAon}wCw(^l812cE~ zf>aE4$BoN@Lk38NAp}UkEsHE&T0HTG%jvHT4<9pPzG7$5&wljF>E(R`vvTM%m1*G& zOVjj<%xVQ(=am%m0N0|;6>7QN0s9YGzxN6?e}}S_HvmBuJtTvsJubO1h5qp+#a#G% z($Wd6aw!eO8Ww0(_ayOX{-!as!QgJ8U``Akv2Kf|JKPSgfkU`nv?|t$P{ZsWB_v=l z-@mrS%u|bzdygJ&yr=HPpwBj`#h{lo3{ZP_LHcw$#fjdaEybt*~*&q3X z*0+XnUz9(KgJf>Vu(0&QcIsw`)Yk?p(U zsogfztL-$+VRyE7VrzZC5iWYBXx!aFg9Zw%HFOjj*`L;OIt3Blz97n5J(U?K(1qBf z6$sy-Tv3o;@94=|e(GA!e+RcPKmFl%9YEG$3CFJu-O~LrXC*Z`Oy)L#uI3AGXepe< zTKZCRt*6~%K*}AIYtdp39R-$1wx3dHjJr0nB;!8zLUDvz#I?fFe#+7s0$XC&UaWL1 zGq^UfB>e9IqBY0m*FOpbj`(5govLf(OB?)G*F;UdyI&}8*kmy%Yos*fW>}4I@1vHv z<{{c!GcYNuO}wLO%z;qHOCsZB#Hxx3vds+Vin?pq5J5!g3c|CqcSN6o2S`&w#~}}! z)a`H#zvuP^cK*80?=@QG5bl2yb!r!dU}`zq-$$pWZm)j@EH7s#vVJrrrM9du+nyP z=fYRMEx+b(A%<|qVZ)WqrwT%p;wfJcEuT=t8$hzl#Dy+*L5uU9l&yta%!z{DypojX z=rhpzlqu`l z6Aj3ww_HJ0CWn#t)6XgaOIFhQ6f<_K9&D$~>3yUp-<#e)OT1*|YUy8{K&g7{aqymC zl!F`M73(95MOLASstI071yoA)n?HdY!&&&@ajFvt>xy16Uh^Q*tY$%>8IN4Ef z%9$j)K7no@y@Tmm_>RI#hIi$zxFw$2C z>+*3MbQ!`brOO#sA9=R^qs$6aSWA^4nOo$kV0iQH0XRLbJTiS%Qclp1-6M(gd)OBp zW&JOza5uesv`I!^6h$usv80rP-7+odg*J1t$pPtv<5`G#;h*2|rtNV>OaSvKW)$80 zl}#e~T`s$W6#o5!a-9l{Y?bwHH6l z%Rvu1xEsq$i)b$nIhJ^rqGpzHRuLWlS>!74*A5G`))^t(%8gM{qz7;j7yKNsUDRRGi6-pC%}ZFa&@87`alRN0di+E`}lYcJl- z#|7((lZn5AIdpczDO+__HATENBUWX|cMZ(3TJ8+&RGZl4!eTb8f~RzoXhS4f6KR#; z)~4(aj{;{(HgfhjEZ{F?xiL|t^15PP6RW;zP;3RFqBd1K$h>T)r^3+AJ`GzdYzT$% z%vyLD1{6!{$pt{q0R1y|_3wl(mze|}B9KmGKE5_Wd|B#-v>uDva1}ICQdoirsW|3+ zqT#^b#SS8V z7Wf9g)P&LZHR&AR)H!^fS?32&5Mz~S5^Kvl5S3Ylv84rhi}Tv5!t`j^kE@G4LtPoX z>dJ50|NHy|E|0-rmH?h9<-72&G3*^-~C@U#lR%L;UfdA;CuEkIS_t ztIG}XE<~u7ji4DJx_AjMN?b7P>~FRW(GOqyp2@$XZti7I_P`t%!9?XHr&jIg_@KuB zM<^bMhFoL_n|>kWs-bmt=+T7?0>eL(5F+>!So)&oPSi4jgtlGD$o&nwZ(LN-bU3~l zb>!tY3A;&u;J1FfMQ6!lUjn6+*S5SAL?mco3t6J++k!{s7!-1i-mUVDfByOkb< z9GB^t-L1)$4q$VN=nQdJ%MkzqK>fey{*Aj%V)6xRxUloV0u22rUTsmhZ%2*_V;-5j z^O)VGdppr`h`D0cP9CdF5mGODyWu(9|NHaAjVpP%`n#bP=_7{M3hrF!oJ{Uo^+Xu9 z>bEtRbLQjb!xKqz86>4sMx3-)%T9k|?Vb^_3~ZVyf_Yldv* z#`%DK?d0mq*p3~c$6K!1Cbzf>F45ow2~1TTU6<4IL62S}zxyX1weO;T3S1$Dgmhx~ z`ms0bjWC}D@vs+NS+c+S7h4+NPWNh9*l0>qlxur^epCCItiBKU7-h{xo6dm-TD-iM z(Yn}`#LI;ugW@ppbk+m|iyO8Q?pBtcTPx{>`JW@>Z`a{P8+t*b* z#$eC_0BtmWOM5Mn$`E62#YpD+i$!tZXpH0cMCRpaf?86Q{U9XssQGRK@M{*f*+Mqq znf-(3s>RcUUtA@WB4qjcZszmR0mVAQNZ$HodW1A%ZwKUznz-(EpodccKlsdQYWoH+ zq=U)btt15iWp#*(LXM`8wFlAjRvB@Lq2=F~GDa9UJlrzMVPxx(h4UwZ1vz4%@Rd7v zaGMp5Yyyn;@m9(KdW_8(<3LjExUSl*H68&JRPsiKeFyaEoR^6P=ZcS{6S2)f9O2 z$DnOB3J$mxI=MRyC5q1W-K{HvoP)vO%ibyPieL&V=KtAp^)^Q`u4ctzg%{3)(0rzY zimproU>}v!!##zvb}l_HX7kkZuME>*1zul}%NuW_tc?r~e)2|-!ISi9d>Y#>Zj@7P=mU$sl|XbqZx35(K9) zUF|F5Iv1Z!QKh_#d)Oy>`z<86B^N367FYtjuYeW}D7ckI-Y}tNw<#bX*hLJI#~D#@ z_0vz^uuTAVYYujit=f3+r4nsf=!Hc+lkwqhvN+m%cD(NKy4}rcKZ@YT4}-Kjt+k zTPfl@cAi%)V$n2+Bi0Xh4sc|;{yf2EN(SzA6TDRLap0%4GSWrcrJ!+6HSc>f0^g9D zE`j4z{khGg8+}#YJxSD~YNLlOy3BjFHmb76fJ}$p8gR3KpsSqmZzbCe!Qv29p4&%i zu%PZNDt~d*4YU$HaP3JmF5cK zct*KpJX=j*)b+$Pk$NZv&U z&eoyNb+k8Gj6v!Nnr9{OavXV3UAy>4b)?ts5!js)l5BPFM$+RjO12-rX%b9g$kzb{ z@9RYQMT}VmDwZu4^Edy`nHbD}M!zF3+tb6P7u*_w?oq%m8*0uClig~T17j!~9C?|5 z9`>hZKlqE$B34#&GzkMB*w2(t;)y{iLuUm!5~1jHB@Ur7VFtFrBF z$b_KEIp>=|@chDlC$hr2Zp$zc8C|~$ZjqEcC`#&9zvruVG;U3dq+KfxqV9T`1^GUH z=E0UN0GIqv{RKaHx`7%pBSwV8F$h(83NZ*33Wn57->2NBGgU<-@7aBRn$h{|-(MJq zVK7nhWNO&UOMIK0so;@<&5THRq2*R1Z>4H*9@NlCdbg0l5}PcXexed~^k zjQigQk+A;04aXC!hn&`$TFi4r{aB3)^%#$WMb^qN%MYGv#E1}`dA`!oXb=m4US`}3 z@G^uI&>38tsdp2=^|`*f(uYw+|4h5^8w9Dj&HzZaDjqs&|fi_alpQy}PO@ajM0@#xSeDsgD3D`C1IyJm6^ zupp?3TY;*Mxof5Yhm_oCI({3$Z=hs)o^N(<$$B3#8~}0h^u@Fu;5v2%@A>qtS^d2+ zKYpLRm2c48P^gHVmQ~`lEFv9rRlz`YjJXGcC^7`bHReN?>Q&b~P4}y0ZJ2#HoG!Ul zY$wjJbhU!NBgrT}FB{zEBVjf(I`#aGD(u?IIJ$8BO7crbTdzHX&91594d8U@sc~w- zhPB8nPMi>*BeEtG2?E+ntoVQl$tgaa@CNv5kHMFaq-p1VSsDci214qdK(r9& z-SvyT>JB2wcg;HCy|#UxY)I;>GH-I9m3$lw-Y0!&)qN(|WsQ@x!GERqkUzF%x^ByL zhpDO;0x(rf+R25Fq(&og!VgW~E9+GO2gPTuv{}T&(2t+u1->ak z+xGEBrii#VcM=oWj@N5`YLn ziOq-^51OX$9k^!Y%39S_5g(|nEZaj>yk8O5D2Kw&!AiS^Cf2_scr}JIxBp&;+Dvx+ zt`p09a+Y$VkR}5+@E~IS;746Cg9QZUauohrvwO8$AUc%9;sa8KX)~wH0`L0|viqGE z9#8`h?!yy!-SqI{VrU9HI7uNN`1~Oe%Pn1iI&@oj_T)yh63Br* z+`nxrjcihIEE@;i7JJYqa>xI=+Ki$kJsVN(dgI3*1Dr<-Sjxy}e8o;&Sy&u-oJ5WA zr% zUPnio#|DsKxRbiZYcC$tzC^w3t)wU9_8Sxt*5k)KiWB| zNxM-Tpua;fy&Zhb@vkjLh@t}1BW^$YJ(Zg2z`c5MI(sE$J0t+^)!5oh;O(T*=g{g; z8rqu;j3v{3^QdIPizeKT9c|L9U{?gwuYMW!ujJ)c1OVvwk_rZJ?N0?dWDLxdQhGr- zJy(5)S%V**tWL9e%&NTMY0u+)fN=a{?(HWh*~XTU@*|&XQtSUxGp-l#!B5Pnca|JZ z*5L@Xnk5oB;>Rum0Nt6fxT2|J!t3>vE%CCM1wfDK1~G0kp4EezVW}!G@^||{ znDUk{ozx|z_0_6@evWVJX6U3=8@h>9Q~LC}alU<-{U_g`VV&)0=%2+$t;?OQQFE6+ z;g85|J`L^wpD!yihu6-~T);B~R!#TQ>DsbF#XTW=gg+Qbytg><;ogv;4D-e7?O5v& z~t&OTk39{32SDUHbNQI2=hn{K;dmz7)AKXbVzv`ilA1w))y&1s9D%2@(kuKQzHAfY_g4ANk>Jdfw{=rzI&|CpbZo_QSDZ!EntZQEJ8phuT?nIt3O+Sr?xKScna>_{_LxFY3h%k`Ah@4H^>8c%+Ikw9d!< z_GjDEt8FOJu%#S8$u99#{d--?2f>pj(@e68Mf`3MklfVu7pi>4d2; zjgXCSC#(O!wn$ofKSaAO#v*=87aI?)a6wYHk!8O-NYy4-eSR}2)Sb7Q1gspM%+(ED zN;eI}CF;VOij5%Ixl%)3HEBJv>(UUgKQlt96Ui)ljM>P48MX#vVRt2ciD`TMc`c+B z8BqW~C+>-J2}hTCK&@se{cNOLJDc&B>rO{CZ;)ULH3n+q2ywdvBkC+BlrovPB2F;iVOLKt6iefax@m9)&o;*6yi$BHW3lhC(#F4E*{5y&KurK&C|!^RPld2Y zx$zC}KEE(=UgFtu1w7l`S#$WA(A1lZ#ii8{D0I)N(jP3E*wV7 z2dk)Q_U%=#yQ{HUAN!siAn6A`Al>i1LAqS_3L~*y1O1iL^wM@Ibd7AO!yhnezoF zn&lb_cnP1p!wTEeAemAb(c#-(tpq$hWVhQ+hQc}_;$7tQgpA(?cOit%+SYOHedQ1W z%l;fKa0ifc>w%>Ic}kDyE%Z7vB=9ftNHP~i!itTpoMsR7Gn*1P6+@JVZZ#~E#;yXx z-Z6}iCnb832E~vX#JBw3hw$HuYMO-E$d=S_tyLiRq*`Mb%PVAc8gATDlRE)s0;A)4 zn++LmfOV~+K&{pI#*&2c&>P0!58`~MhXJc%MLOwsU(`=vg?OsKGPYC(J!azr4nrwd znO@1eXMt14*ojJZRKQ>aPB{Vvo9LN?btKM`9!qvXHuF0N-8>Q=Et6#T3RADItMqGR zG3d7fGH?oGA4c!T>LjYX`FbF6;dyfd*u6LmegGkrza#`94q&Z1yDaY>@mogV0&=rv zNs*bkf9=EJt%vS&d?=AzhM9^&TZ2N5S{jMuC#~Iq8B^sx{4DA$8=*r+!|-(pi{IbnXSL-(p}A39>B`p=Gb^GnqmUH*h@lsdMjp3$D!;z6DVbcLt3F8yS- zhoM<#agcLvI8B`PIIIG7OX;UL*ULoesh!r^A$IA4C`iDgujUlM{T~6Vy>#B#9Regi z$MhG-Pp_@oe1GAKj2JvIe%FY@OpW6?jC;G+4hM{dK2;dCiB(E^=wrLcpw4tzDer3* zwOfi~Pv4Mp0qurVznLQ=@|f|!&>3Wl@Ad3Hoxg7Wms_(|6J&h&3bQ!dHH?Q&B~X3K z-WDFW4+5xG=wfo|1VilvC3eUPM9s!hVI1|cwV&eOnAtfC&N%y)^Z|ru1soARX|Iju zs%OoPuqDZE?wt~6z&59Pb?eABxg+A$^rC|iZ*k9U$YZrpJBr$Z=x=Xn+aWiK603IY zp;(FzYS6I;Q5PO51VX8K#y1=#|2G7E4->!1DoQQdbH`v&2R7mTpuHA8FV>tewXm@=-a@s7OFD!zKc#b?8)jD^=QkdghPGaV(=6M9L5d3MZT=wQdfa zhIRIAIVXbJU4+EHA!h4y27K&VsxRids5|WN7oe^~R2OFiXp}Xgk>XCT9lnJIf#D;g zSc%?zW8`q;rN@G2Rz+?J3u$0WQfcIadf#SxDXx``#*=yoEoz z(M9hX)0wqDi(_Zur{iNV^&}8e2z&cAuF2;pqz{w$44vOIgJMoEcn~x?(HLtm`&wxB7pN#AV6KIdi_~v4^ikzc z9$IW>E1yk5wGnH$kWZ*bnLBy)*%)n7%@LtB!`?*cHp^ERvH-jOimSoo6Wjecd)hB9 zAk6S?+!|aHHor!+Pzw@VY(cp3rOji<#}|7SiZr|ap83DQ!>dY7% zU@xWIFb??meAO6fH~W+p^{V~~XV5tdN*#gnKB-Ppb~vSp^q+H|%%+tP;UjF+%4g~f zU1mb$4ZTm%XbPG_6KLMMyFQ zqNc9#@Fss0Epo>yMWHHIbB7c@xe6pp{kF=7i}uvXti2haC13%7iht)(6%LZ_g(U#L z16Fr4+%mrku`g3{%CfP7gVaMbR@2Z{M8Yc(;-Ygk3V|}1NuH`VX>J@{R;WF5o?9a5 zq5c_ML#jUV>f0IZPm$4NVQ3DEDmr>5gPKmwT5R0V+q*Y}*e{};3LiPpRL(!Or7+)T zRu`gRsyDsF07;0E;s6Z2PG1G1Uie!xt1Y335ugT$Gv_N}!OL5g@%of`8)YcRoF6-y zMKARuyZSl03o$O2+g0-)^nlU_V3AmzAj4K%xMgY#{&V;UhEIe6A0-YHq!rc0^YqcJ zX*V#et3BSv6h6lRGjYFT6edX!pdG}(P7v5&VRjMbdGtVbZ^oyuH<+LT!Ui_NFzXA* z4Y)Vd%nvvutuDm?rYCg%Jg+Fb&HclBlz-UH*~FEUczsba(y3p;21*Cn{H&r%bIm*6 z?A7}z9nJg6k3z(=wf7NG?o|B2MP`3??Jx^YJzPyIEa_K#Ow;f_0ZCIeKO zqrxt|6UG9cOd?w-sP)S*L+7}CymyjMBiRxI;?W{Xi+1}z5ODXT`?b@TBjwizu>swKx zLs{KnC6i!g8R~`lK7R7nSm9|91>#cAz=NC}+RQOAH`rKDy?ldpGhOm6q{uN`e!*bd z`3A-Jc~XNjvR0-;(G>$i7YVnU-HnQ5Fq;-#`u#0EIhl*ZtS_ZDi4Rp1zi?r=2P{|X z{X*+2X$Z?4*59ssGog=Lh~q^-pIPq+UjAAt5Ae|c&mMMs|4QFCdUTqk{$eaY!e_ui z!T0=df)3sTId6J9^lo!&LvCtX;{d{e$PQ0J!T6nfKY6wut?8%TPt>H-I9*d+SbBZ+ z#fQx?^1Qo7ke4zfO9qyZ^SicFY;zv~2joLZf5h(!Qgz%whm7Jdwcu z=8eh0rjx1SFT@J5z%^I}HzN{r|2%tMX`YNnN12w?aM(vjmrc)eLRSvM{NA0$dRrbpIRLbT+J` z(P`02Zu&f*<&G4@o@xG|eyjNjvV{X}ZZrj%Fb))No)?f4>w*|kxbV+#l_Gd6r|Li* z_>na2H}8oa-n7&0_Y3uL&rL1`we{^|b3`4W!1UNsdHuyP=3kwnpbStd>)b*xj$zbB z%?RSKO;dS_b1}FRE1(cJ%0k{|@guHDoQI?FDZ=_ND$hXrygNf!*0_q z_eno}RQ>_nQOFQ6Qbc+V+0R-bBzzYKF@Gd zUjQrhSeq3R14@SciZ&bR;LLLu2eDNiNobuWLd4ege}2UYR@QYO`qmR<^vRS|ei=v9 zK3KU^phW51)sCeOjI<^5a#7LZW!V3v$=Eyw^tG9NH%)_cYQ=)WIO~Aj{xNLMIsS=N z(Wez53Ymcy9TBCW&jT-+UbUmZ<{&Oe8)-7fbQILrs{%* zxj?kBRo#S~H5cA7Fx@^eOCMRpw|U%oz8B8%6Dxj+@DYR8(O4gomEPO3mv;wu3_cBr zDU}=S4fT*HE%iFG=Y|?cZDerZ4~lwA-+228qGWmDOzDQ!>%gsc+-sAzq{-6AG_YG; zIUnnun8=7MdwnhgwW~BMiwwpv8({N!zQ`P0YJ@d+jUk|*N{v7pakdR#=Y-AGVKSbs zFz9}GJytnD;My1_IT@4GZb5N7C5M%u`uh!KWf`Y6Hu=67XIlfaG@uU0Z!A6Dhe`3{Mc;~5f-@=?k z{ClnN$p0pt=qWxG&0mQyv3W#2Hxy*Z$f!u{ex0yp{F3yz2WFt2Ibv9v%D!< zlhZE&nzuxyJKQF4s>`9tSkOP4sak$3COc!$lQGTB_LP}MB^)-V(J;b?W0bb8qJtD0 zT6VfM6tYLNN7}TLq$`AEyvvVq*9NBbhB0<%wJn+}T0w~kMT|k?GCd8Bn&Ms2+YX8G z%3n59%VHLNyLt6$yR1vPL;pYPRmd|4r7RIfCsKQoocUMVZ{J#XRM(Ps*h-C83aODv`OJRMP>C z0LW(=kP2iI?$iKD142AkFm4>C$ZV-DP4C~FyilE@318(zbgf@iBbb`ImFhwB+F zW*iPyQy|&E3JhC-fk|b~Tm=FIG(j=*_&UITE#blu(ANCu73M7XyQG5=t9vemIhjmN zb{S=VG~qRcY~hTUl>Z0bGH(icWfc&UiURL2X3uQboiWc$EsyW~H?1m&DW>S4RylbP z_@!`5fyePQ{!KAoS`aHM&b=oj8J0{BJ$)|YK1wqIduV!nYw6J3G|HoMIP}J1^@9YY zkBHy7J13S5^BdT5`p6lNfjh4Mz-wP5(`%f|!_jxNzWVLiC9f5P3aw?SB_Ejxk{XZ$ zzlmeR61SPL3Tw>=`#ay=3O9EdM6;{I9x6*U;4Uzq2azYg8HM=A&|5r*ceJ!So|N%= zYx+wmAx3v}m+mJ^M6`qE8IPuQ6xYblMb_|Cpx-n*44SM*7kC@k=`g|T|3dMyai_uB z51!7~5qsfW8r{~%p9D9?K)Ye||MNH~vRORRL23!p*nD-*tgxy@X)UCpJ+~xHLNq_S z$za3ni5U9AzV$1#FN(j2Dxb3%@k<0>sHdNAEgz0`t0E?VWq#$)Z6Wa4BCk4SX33Gn zp?tOZAi$4B4LI1}ZXF!js^}3~MKx@79p!Vi(oWh*&Y-GQ*^PPBThXCSh}t=PczPua1mD*NEaj=TS60uj|L%10qV~ADBkk`pSoA}FRhXLk^nD$-` zJu<0q5-{`{XVt(pzWSjnv}J8@8^>M72`6Fdu_cNAtq)&{xaNYA-pM~Em7$0dIA)BW zv*yrlq?eIv%BmRNjR9T4g%+pdreJsOA>kK5h+FWpCxjn&E@AtDd=kioNj~6eI_T4wWNj&Xv!4wd@?zS|jO7Emf z&v%mq;Y+_Wq6y502xqnjNzQxZNkg&3KYF4-t#(R1kTr|=LBhOw@13WRE!3_B?}+v* z4G=16Bt{&_XGLo9;Uy+!33x7BBC-Vz7f+V%%iu|!UMVyoyelB|#*kqzv^MUWfv>Uc zDO3$VdyvJo`%R zCBQCiFU7I5kpz1!f>C+|%aLVHb2W%k+lD(D7szfGUg9kbgj;~1q2>|d5qYcCAfh(R zxwdsi0{ONGXN$kS3bl@1YD6l5Xkl7cdA8pzpE)UPt--fcgX_;dUuv+H{uGysPV!^J zR^6l9f)|omL`mq_>}BF0-Pf87O+4jQ7WuC)&G*@zPIayA{)WjvM6!C(NLcS^!SZwR z2p_|Yxw34n49mIRYr{g?NY8X_LhDs9BR9O{fH!as31j zYAvr$p}tc(L`3#Tp)Ub4rTGnClb`0PxQd1wTeYVsvRTC_h`S3)vVVf!xh=F#Pv*d$|KHOz0&y*!{1ye|KzbG65jUl}2mNy$2P zmJsJtZ zghC3jG17-+W!V_5vpw1vuWkQM*YnBuWfJ28pKJ6($v0^C?RpP%3ADW4@1?SxSC|;f zXibKBPl*NIT7tzsc#JB#*~_XS-0X5@k}G#f{l_13*2nl-)pbXkx|7IeOW3(my8Yg z2x&QlaAH1%RVF<~{p93Wb?lROZR(fDOAN*sD;HMpt95|AWh=*#EQZY^zZTVMi&uhYuwX^e5H{0VL-K{R(Cj)nfqvNR|{QguU#Oy5z9mW;TWXlbb)uHU1tf~Uh{rs!eODPVL4WS zUNcqE+vFLaljIRmUdHS_%`B8WXcvoum&$yEp|6gVh>t4b}Qx3 zcMEweZ8R)j@x1?aXO@aj}pFkAH5VSF!N zfGFS!f(8m5V!*u1Lev)eD4&Q^@6lo}^t8w!j>c`f3{(+J(1+&vXGEja(?~)dznoIX z;&E`&qDRfp$-~1z|6xTLdadh_YNeLZ7@mbb#^OV2zGjsXbDyVg{;>43XAWW? z;%kZ>XboCh+A%l1tl$kD!@_QWM^Q9PiX(lMGN=4lK1!!T4^L^;a$m|aT_Fs&9hsgk zV_`;J&Ek#~I!FQ0@G9~Z)vE!N#}@MNxP3<~meU`W_{i>>Z*x`=9v}Nfv;ayN3|G2H z8^p6dpp%|SJ)8=X*q0HGkU~VIGWDq_l0eB)sKAV-Mdg%(QHq@pkTm-A04z$jZA-Ek z!l}N!*d*Ms4)PcyGtNOLRU7r$DO>{2S+<;w`y*{_hMf3;#%}x~{a+t_ccZ_*dz*wd z9dbPc&I3ALPX6S#4IkO;A#|Jcsj!_Sn=~eZ-%wv%@#8OF?nwCPNIjV!UcJe#cL86}EU(Ov^DM)c)y72A9 zMB^kz=Pdi_6dk3HIo;=!sEhlN&|Aq6Vk^L8u1I>%g+3JDA#T7yzwgXJ(Wth)l6(aE zRQZ)Y1d@KHJs1_iTCST#k2kZ*H}<)ta#E&$7k&P!$l-`_Sv02WLL#gccF2gNi7C>2 zdpWqYQydJ0f;^8Qq!I2#nsfOsTOGx9FS0c=iHtmGKX6XFo^kW~8d-us_j7H?{yQIq z02M>75~K?7QwBOt>muGx7cF0Boh_f{I8l?AG_rxz10zu<{7kdz0{YrXnosjVa_J-i zAW4s;RTC;`?>6#nD@#kC;LTTrZs~H?N;-x;xO$ap1&PqV-%pSq<2ORL zEhTrh$mOM3ZTwU-E_n`VOhIHrt=9Xw%>u#DeRxEjHE<&IN*=h6J6*esp%C4kd_~d# z006+&6eZs@g86xVQ@4J9LzlAwLw6I)NlN-;_M-J^2C8RbNXXA=B=oqABMa`LNC%}Q zu=n+9F_6K*M^V~Aojb>;KC8JSIjcp<;n!Gtn77AFi`X3FNv=ddLNavx=k9*AaJEdWHitMX0|fv=GP(;`4Xke{8~+1y4V#Qp?S;K!^aiw~(g^=vGVx?P_2Mc9*6dt`#G9FZzd=-&AJTeK5w}d6lVNA5Z zAlJuWu;NvEh8=~tsSAS;bv>Ct=1KA^ubIp|eVME)u@!Cnw1=J#U|}bFsLyCvVjYFRa|}Y1DD=yAxu4pT`MfUkK3B1$YGFI1|tD zz}qTXc_7r!wClJGAieTEOAzF#wx|N=nIW=)w?*;bWoqbtb0l?`t@sx$<-331Ro`=+ z-1B%gd@L$aiOV42x`&`R%qF%jabuqX`tIB@Yhd%zUK0bvznpPv5aQjII~yF?UJ#vb#g+D+>-+nW3%&o7`%0ymHkYaYCH_ciI6irr&EM4%-P+$9#;6ax7GB~*T<^YGOMk(ONKCxC$VJR=H&c;te zUO=Kv(Pv?t=7|RXaWiJ@9`Y?I0dxVWugzdIf;bzMZ)@unVOzkwg2OKC z`&}pS3S!v?!ic;ev~*Pk^9GHbl5zVK#S9bsu52Orf|~5PdTB~S{y2;Zu7y~kV6KV^ zJ--CmzB9yj2+zZpr506n$Tvx@61xdlF}31GuNp%?ox4nb^|dnc6?8Djx=h4SKFOWh z`EW~r?>|?a@IDthI`c{B3bGiySZo`CT#SWyza}-&|KAgX)YM<1dw&U zPog>?fhLoYpFgXS!8FXCH{K=w(1)RBLck7AgcTAJA_+Q-N&G@`E#9fwr1mph%=Q0w z!JBSgygX`%q<>)WcWA8C<2AKz0Ew}Q2Vu}6q#%6{YLlchEd)Fne;%51{KCrQV(yta z2xKq*9m{?h2?^T3y62?jo_Cm|cy!aLrDn`srT3%sN2sC7qS#UGLu2G+QWu!ibR!%B z{B+6c?d0LGz#{z+rJG`XB*Lk z$2X<3Z%8MBc)Q)OBi$F&R*rY-6h+ncdjbhu{mKjeYu6h7@7ThhMp68A`&)F=Mhc*% z4A*_ai#(+w)jXd}_A9cxxSM}iM?zYT+|y;ge>9%)7(4$&l_I)$wRt@9?j1anqCM68 z6`{ry*xOZ#y#R?u!fYUq;P5pWE4EyeSoe{}xdKtLpoKSj#Rb23L&h5TQNB)2B#bWq#^&M<=0ZR;(-VsixqOfW zfJ1XQo;wQ!&=prwWK1}xQHSxlY5Tr?wDO=6+^nR0)zl1Jt75{HbX0VX^Bc$0-?oSu zTDulBqv2J65X&3OKYTyfQUCIQB-c0WLkGXrVVXQ)LAo1H$D9SbF-C>_pCl}iiD*DA zJfuaMv(UDs&$7i7I;POC_NOojPw(2GO#3IiB3kl!D*sFbo}=#lDx zG8&D4W`MSCux$gx7!QDL?%o=b#Hq&K_%B{b&ccsMnizVVIug*uy(G$r?9&=Ajtvcb z0@)JLqt3R`bB2c0c~t@;y0@CxFT`>3|InQp$b&q)`IkH;YW)fxy!?TcIMdNsm|ruN z|AFqf9lu%sBH)l5RG?If1Cvy7(+KXh21+6)m7MrHa1%1|Z0FU4C;=pfkYopxD&?r2 zWe7bG!k0OThN^=jDA97S^h5-9c$rDJ5fy29?yOl501d#$uAY`u5q3`-s_RHdOsYr4 zW@}-T4CUmT*~8ezq+oF0iLj1TZ1xW(4s!qUV*T!kEB}jGGMsp-a>0OUKM|R7BB=y31^5BcW z%O@@YB1W6IN}+2-Ai{!Rayt=9?JMQX*i$j{EU@-I`aEJ&B04$j`6N%HHTFN`@TV_&Gr+c#qF>z;gx86S1kz}GW0-}HkjAWW7D zk#n7~i4&;}SwwYr#X@p;1w73EP1Pem5pwClqJQA#hZ>%(-$|cdgs{$xpnnh_PRsJL zE?=wo+6Yz^Fn$QPuRUWjOz8QFBX$g`a%qo zr&zdloC=kY<)j8oSxX13JiG%hU0Ry1ynS@5>`-q$!y>StGA009^_PCgBb-qc6d)wp z{G<4NBkwY6sZt8Nxwt%UwAzpn^e%^H8DKuX(S0BD1GZkxNw8kf#2XPLAF^s6s6tFi znbGK6U!@&?L=AeeH3lo`KVV}S0bWy;&PF#g&*7nE)!?uJ#YDI>Jn;*sDwE+hNz(E? z{|}7Q0UCO^tLtfh-Q>|{i~Fco6@f7iJPdZR_M@gRh_!)l6FGO0JaQ*F{@R0-r0hQz zU+)tFG_R2WlWE@xNDoF%tm{1HFO_y`_paZ3;=gKrqtxkh*iVA*-{pZ}@jmoLty_+` z>VEJq$#2n^ODWd=A1j)r@CF$5`dH#I0gqsPmP7D93$@q-2`RQ7L#8an;TJ*R@pPle zsM4IP{M}BR<&tGGZ0y5Us^DK!tu!TEb=rSlPU%7n^x2)u(M+-5B%L}XG9B&gc+Usv zou99yi_gk)WqGYSu}>(8D97MNFB#a-<9@TAWj3u;0|b9#w6+f`B=<;Q$jir;0;=uNH9^~ltt?;Pb;#aLRHfQ*+UV>8Z?%NV~l+hN+C}^7djT@FC z6S@1kR>awi6nE8^zhIq_q>@N1nt2f!iIR(Wst5)^_-o`7A5D!neM>%c!yw7~)vMs} zl_GsV>NIaEQFvT4?jf%=Kq8v%havA^L~`8u!e0u2`_he62)BJ@w@kKaSN7E)O`u{c$;{&M?I&x1F{BOagS(#A8p zbklx4kSnG}(%JP0hlXXxXY%CL=0C^BIog}!Z2_|}%$JNJEz=g_(_WNvVtFvpY@yfr z+sG@Y09s|TQ+`D$k5aWw+lj8_yC2}^lKxNj)qAj?8ROpCz0cjVgP+qH2nY)Dv686P=-iF0_bZK4k^4w8C zr6_czqe{^r^LGsWQNcM{dAma$C(m!&LRM6!&G1Izu3HaTo7-K^?JPzdYZAlY4I5M2 zsFF-I!YSwneQ0VEbGsdhrM4wxcC~5|uKH9g?p^T!1my81893#5sXo!Zw%knK zDL!^W%cwj#tsulOASG+Im36 z@pvL0{pa7zr3XU}&w)je%m|Te+_EQ=Qz@eky~y%ZMx1boG3Di~=@HG_Nlh+{Ih@1| z&xOsgSh2kHUKp z%(hUJ-J0!cczj#KSDW;vIj+t9&YWC9 z@U~e`$>yQ?@9d=*%{h|q9~cw(+t`~fiQkqm{I^hc+2MU+a-7hWO(bCSiD(LGk(uV2 zUZtvP(+bUzQ!D@rOAz+=S7Va`l(c+7QWtHINRUa5oCFj8#V!4I@4}VfjZ7T4IueY! zJunM$T=uA+n4s;;4)A4mOe*ZmL>dZ;rWpCsbgJkR-R(&rVdeS!)rz51`^TT^lxDB##j~JOrt=`!+VhnBERug_l{VXJyx(%OV z(1S$yE7PDlFcgl0Ho@|7@O%6i{xzovGh_+QUp;ki)emp^6T$A};i~{`k{{;7?_LgY z0?bv~)yddD_@s}=!;NNR=N{Ua?ko&)NP(h=DCIwKSC3jSQYQfxqnKh#njE^;mRE=u zWj;JFe_dViiYtV=mMHxW*#5RUm5gG@055+hM=aIg>^tffwAV8`4h#XLr*kBOL&v6U zLuTUF+!O%|&<^q2tA-#JPzbJD&OjJ~O}5Df!34q(0xhpAw&;GprT?|Nr4g1pqIs4vkaQ*7~`(h8;eFt4{jnV!5Dfb zmn4X>teB=$b)>MU)TS{Q)*`LAe+K+0mDI+>38`mslWC5{!9T73|2P9|Zqd!jl}aUd zW>=zr6@zd7nLsghjKQcAKcdpu%b1u-2hHn%74nD#&a^3HX`U2iuF|9uG1Sn6bTy;+ zS9lB~Q}UuF_W%X`yA`k%z>7IF3UlO}r&`N`tX8|FMc)x2XFq%nNSC04=cACjoPtK_bm`eP&va1|=d>c`-OC?q~L-ML4;fT|P-V?Q( zJJBpq>dfCvkeE_L%ko7q1z>9m@s^C!f3~w*`p?@uVvrtWLrN=Gfywgq*mRzVID`}) z>2(HztA}{F0f8TOqn1k$rRswj++_Kwx($7P&*Cq(IkR zxTT4f=0E=ZTN~$avHK_i(JxdIhA?5?0OnWDII^&zKX@su#@opU4JOlLF2ahNT*JK0K`aPSlXhnVFNxPEyz&MmRlCs zB$sHH2CA(-$-oQ^2eHJvJa@Ot;hiXSI{v>L-K2mH@&tR~ftKJkSr7cbnmn%I1c8#0 z6%^R&{i7#_;Z;4vCRM9fLyWvYuT8@f$ad45iXszqcuq02oYo}8_!Q3w+A7<6F_OXc z{zx};iYsp|Jj!JG!RT`bVu47t=DndaE`#9<;nITb0j?sG^0D@h-KZW7k^~tsj}A-i zmj`YxbfllOTI6r5iQERa6K}u@xA;;I^fC*YHwFwstkp@r0&!gh=}8lTEGV{N6Y+0` zj!lz_u0}=`owq*Ma0q(FI9*I~;oj}?4*!cI&Qmd9cji-L@c^Us1A((Bf9CaWkQ2rb zb;B`77Eg^~AGCto%WrZ{S>5eF*~n$&cMZ!2pVb}A3=)vkYwVnFC=AXmG~u5m*`^u9 z7}6WCe1<0p<|Q(8N3S=!PbW|qQs7W*`U)QxM)%wDJ#j2uDm^3r(LBkM&YEO$5INfJ zpukU?Jff@SFXh9ilq4sWd%DR0%LD$qbL3D~`D=&o_4e*Wx zBt-OrudCK*6z6jg3ckp#yX=84{p>6J1>qUB+||f=)N@0zS_(EOf9`&7J$D`-0-gON zhJ&eO2%*+{FR&Ze+((&BB?kI6ws_$@j(6mKIReX7l-_l0TM%tF`;0kVud@P{xg_ML zCVuj|elWZ)$wEX!b)u-};`yo_fecJu)Q8+$>_Is#{GlOv%KyIbq2kNDQAc0T7uWh% zExwn-9mv4ld%2(+RaWQ!3c^JcqXL(lU&R5C0|h+S*fbNT%ggia*z4pp-95x$PAx^} zD(=B%;hz0iO)3xSOE#Q8c+H?aF1%~nPwB)5IH-v&7m~Z=Tg}XHqqN4R|A1yPtjcp})mL$hG1E16zVF>9*c%PlNd}t?G z)YWTMKF&G?W=+p1prA3sMDsnVOV5v{({5h$EtTn#&ZBYupc8ZNoTrClK#CRLBy-1KHh(*e1 z9HGT>P5LG<%M2WMNqC$(evWx>StG@k?<_kp{H|X&0y0f%msFQWFN*8T15qw1B(16$ zT4yS^e2E=H)6Ozk!tLyjC>Nyr-gyW|R6q6E31hlnPoWUPdEA&io6_`L8#;@z>uOSl z#yTZTPf|V_55g>)cEG92v~-A-GNiDtmu$F25W~>12GhSPkY# zB~^6&^m9I{h&s?&?yV$pLAz)!E$=9BFhm?4nmnbUX`k@f!^oi{eOg?`(7XCOT1Yn{ z0;sg$0$?d{&kQG|+JDHh<< zf<6FEofY=N6-z;W8m;R1MuL?h944ysTBvRmB{IetV25_At#jBI0=QxmTspW3oR`=# zfhrhZSHWMg@D#)C^+7Uxi6;1;RYJDZVOf=U5d6T>6|)68MjxQFU6(bqN#Qg;gtimq zEB5~W=*d5Iw)!)eA(^ zCxip=-8Y)^b!ePrlpQ9kmFr31MR%$nhdQWrQMRYG*l$_gG31SG_1Cu}ElhT-^tc+K zx3G`gmt7!AQX-P}R$0V4uajm2@WZBfDCAw58EcEWZ1l9*xc#sium1Q71%lS=Rvl+{ z@ADig(L*_Rd{tFjP(%GsjhRjd88d+0seRDNpH@EMk1`St@2WCpg61|toy^&QiN|Mp zBCF&VBy9smLrnHp2L=3nTE!*PEBU=gHx;m&$Co%3m_j?f2hDr#9sh~QOY#Pp7TE9L ztdaVb(w(IlBmSeA*SN3wv75fcnN#yJvkj_w~^ z^rvs;720a}8__9tK3v#hUWyjz2bVAmkz-$@O}&_jY5D+F8T1i18Kpwz4D5qh77;JsZs9Hwt z<$RF`)ArdGo+>Se<7^L-aIplPdQF_8SRLKFNsG}>~;eO0tk67<(lM>NQ z2E^7dfQTh|)@c7~Y@;!T9VjKt)v{c|69wa$Q9CV6Qk!p%x-rwHig|E8D=^K#G1t;- z8tHm8z1!(hMt;LkM|xxO*pbkBUSFyBY-fFA+Nq?TGagd)P4eDm|C?kooh(}ZL2J>wA=i;`cUH#LQv7m03%dLBA1O2I6 z1diPO_0?}p%Sv)ZKNGe#>8K|?f<(uGD{WB7V{5iOhX_DS8)Ix(^iLuK9K%7WuSt7U z)Ji^cJV_VqegB}nc~j@;!k6Pmm$B1`R|j8rL8Blu#ckDmi@Z-z z;%_<4e=Yl!$zNTl%ZCf7}JYkZd^N@=)O|@w`jii;(?=jYFGzpZ6S=mvw9%2(?pWzStglBfc zm_U2(aqR&d#ojPy$=1Wo%dh~%EB9>GZnih8Dt7o@c9lll(k~_NH33;@$y}5A}@YAbRlLe4RiNMUD((#%MiUh%Qe*4Axf2AJ2Kh3>J zYQh(CH8+<>i7h-Rj;%usHGd^qBUCQIKm^nDZoZ{S7&o&AK~yyErM}sC7}dxSb(Mdg za|CXjRfo*mPvyQEOib6w_4F5f4kqBf=b_DxPBTOK@hP)lib%;v6iu4H39S&0*30FE zkIS%Bj2HP`?p(i|bE|fIkb|CAksY-yCVksH%%0bu2Lt)W*MLBw^z z!L;=T*Ysv54ZE4qH3T~*Kl1x~m4Os6y^OgeO@XHnejC5hfJ&$KL3N6g^Qs^=6OR8I zAH0-Gi`Hg|<5c6LhfZ22Jw^Uj@VkxE@8FE9eRy&lrV~sitwpk2!@q;tBQ~b$=zG$^vb}ruT5>LIY8dmO6?Wh zU7GiUCCCZ!ueD|GRjRW+3n)!k_HheZqsZdjNrQ-RO#k74~?Kj)xwL%G-qU7Gn{p%BkT=R%{6qN~?^jVfS9TW2rbxhR7N-1Hu z-z*`t{o+-jtQn%A;;6v=jjXv%`$xLduWiG90i54C?!MrCm4`x3rN+R@@I0@!aB%Ky`jA-fFR%6v1lZ1qyh8WM^-Q>i+X}?hva@oQr&Zeb*(@fi zUnYOzc1P7dqr{sdn;YbScc1lJPV>p>%kj1(TyX}9D9nIJ_j2siNt-U9m>=zW0+;CB zRMsZAKd=_VdY;t1pQ7SjG*iY8e{X8L>}>L_0wymh@+70macTV(*E$$V)a_*cQ3aa; z6K0`#-P(p#jbpP{IU~(sm=*?}g&#KRuIc#GA}kH!AKa=kL8y}C05W}IFF#~Wid$ae zD0@Q{H-JIT(_3l6R9%&pi)Cr%>$S=%{CR|k6UtCQLUs@Z6NMR? z_DIGzHK{>&W`M@pEs-f*GCvshb_HKq;dMiO_N-Jltns2~NwK_DEw`ft z=<5AnXqVNMX--me<5`bO6N!(@vOOx*v4~ldA6lYq!0A`&K?g+^Ln77zdtxe7mI z}@I3&&OxB4t^fTzpr%e>I z%URTUaGwp%W4;Y>9MxA0Dk|S}-fQv%q_xK{2T{xWt~R1TH8E^9LS@8430A%RPaD+^ zIm4!Ap_fUQsFnWikqVcbxc?R)#2~A? z`JaSXq}sbH^?z1r2;z{6#HZusW~3?RDwsfJSdry{BMd@9Oc$GA{tH+)D@H?XU{#Th zO;)ae^A4n2#dQlG!*hCYf!ag3nlo)jWpw==`^uPk zbL=_5R)DmFW)JeWYO~Cx-)Rr5YO>A)Gk9{E_1>X0XC#(82&Ys#K0?s`m_nUVF%`su zYE6JU)hW+EWj|L#oHlQp|Lf)H!RR64gpGIy)aBEI9dL5fpQXemE^Sc_oK7lF1JDhE z^3*srbH1U9I!ihK@j*>EG+H494Y*-E70H~@pTfD{CVn_mq>maMiTI=?KsSR;iy!X? z&oNbnV_0ewDnB;3(mvj&)qQkT0xKv)N_jQRxd0-dp`e>olJMLN{T*6RkbmoHvSzUk ziYj4{p?*grs{jyEw`a4Cb~ul9HLnhDa4Ri$*e1lr4XYG@RU(al1mJ*>3ToHqJ9Ugj z6QvcpTBUZhd(I6jt*FlhuyKc$xqLO;P5G=vYciWc(BF%8Qwm?nBL22KZWdcm-{L4B zQ!RBt_?SglJogy$D8pQXRDtcC>j3gQ1g`bc&lJ0si5Hcu^_?N+*^vOh;Mr+)d$<$H z2MJ(-ty^R9xi&Bm8W$1W({imO)?I|GMy9+xG(vwVz_;_227kQ^vRut9;7Y-4Gy`bS zzP3iF3hVQ$WbWh(gosFqTWj-u!cOg>rymMOm#x6kSUf%Ih)i7u)Fo=teN>6F0mp~l zgjIXpPy7RZeHGsVRp@{zkq=)R1KP?RaGrqlg+%nRMF9uX1>~9u@Nvjx0)ie466GyR zx!Ih7vWAdeW8cc~hF|qZNo{ZXE1T(1>xwb+;cW`qW5_Lj4@Sx3-K_~BeS;wnz*=ZK z-M>G3lWL(?HdM`Pqm=zvWet|29X(t|y!S4BMA#rmK>|LoR-?{77Nk5h4LxoLW4_XFX?oCU)`A9zZUl#$87~W1ng73wz#7$dU#pcyJ6{;A~A%& z6OZ~d&-+S9V-&V+WX{Jrry84_iyBi0#?)MN5d_avCjX z>>YjN3^~4osR&XBScL1jbko#LYr*P!J=^DE{wZL!wkFsZGtgh{7;_A9=A5j#NYl z>~qUPoYX^sCms`vB_~Et%q?xG|A`e4nM${~-%Rf}4sKFpZ}FH;h5k1+#XN1GpLnxom)S*sK;!bDn?z9AEyOL0oB^k|OJD4Luj? zr2{2%r{t1fsv}{6fl+qg4$jhhcB&LXvj6}(*uNXA%h4m)h27T6+Qh69B}0YP zujKQ}jdqVjyM?bu+|xOEc&~SH>vF_hLM$fUfRp)KdTZ;b6@&QA=pzXuB!uIHY=nmyQ;nMW#r_jKc+*O2C}+J11K-k_2&}8g$Bc~7SiY%IF{rC zYGU%BDd{X(*>CPv03t6?@TbP^4!o_ohYMs%&M^ow$q;92gLx}HwVL}MRtqlnw^_4n6R|$5iW%N^2VNU(37BcVX(aNC+h=Tr!%fM40^`ui-eu_V~fFXXB z_L)}>O#9Gqn-{7_%H328xMp5CcHX%epi%9D^Dg-{l*@(4q{AyNW8kxDzkbZ zM(9+<$VQKnKhSN*VJyCd_vH76V@jYr?OG3~V&g<}IA`2p$m_H|Dz{>=WJZs0U`q6# zik?GweA=8sh(~sRLEqzuR{ULl!;9DVPebG;EYJNaECpEnO-gR3vKlGA&X59z zEj$@6oz6gN7wF=}3%g08?hD1Lyk^?GWN<_c2xwfGQFw7ydm*3OAQqEn^2u~TIF4?R z^);H2O4{cyL+E^z0&ZJ%j|e zOB4MAYxsN6Mg5uXr*9B!aHnhr39wd&aPMoz_Y`K@S!}D;96(h zr6yP;%egoVyrZ6(EGEURJ8v7;e;6^v(pgSgJV#U&(}4sjE%|mvs3rouu>7RKr{|bp z)OPP_8xxIZd*~wTl*DPW3|Z1(1Gvxn-4vxCD8vCc9V?$ukJ}d|ddB1rn$PnPo>y`} zUc=nVn{p7WajdUn+A~PSc*EMpng$tH;>G+6P@8AFBRi9?Y5-#N9+Jv!{m|8z9<{pq6IdO+0a}sfUonr zSXa)hNh8g5)Dzy|`5!#cLo?Oeddw>fstK@{<3gl~E*t&JKK=gJ<^{@ARpI4%IlNf@*D)w$D_@Cf+l8C~ZnNJQH$lx8=>i+fU-hwsU!k<-Z zXMEqAJ63^WECzim*Cz4^N?uS8)oJj&Y1DTx-2nA3%C$t1vp)TNEMB?1r>(a{7I((< zF+uD!E-<OZMALhbVj84 zZ$R>c9sKdPVXxv~r3bzgtUiIr3{SG`RyAKK1+4c*vF^XfiEtyV@hyPQ@HeIJTXI{2 z4m9Hnq+=Rup_NxxrOWp|Xi34#I=!jbf-?2$B}Ct8(BZ6CJAx2bUD!x&XCq$(?y|u`Q#F%Y7IW#M%DN@X)v5bQNg{rR!l=nNB{?rTLVSFq42%ua zOpm2<8h48z`w=i#$q&>xaj$I!K>*9g+B;&suN8BMlOlDo-B2hT3p;nPMGt zBBZ>nu^esgr}WXLJFgvEU@b(=LKP7TISaIlC=O^taVWpt-ENeRF!uXU$lSt*udM!1 zK8j&1nz}v)g2{w=g1`D8+aMt`eVbR>s1Q-6#>o4TU~FG+Qofea$O!cTMYX*MG zE8B$uENA)%wz9bqVM3sXr%o{WqP?A{CDNMWLzd|%4Pj7bcss$or{IZXZjh=FA>7)6 zs;fz3>8T~r^Bf4Zkx`NJu)Qx*{aEkR4rrB}OOhs|GfbTy8dchWw<~;zVP%k9RZcjr z0!c$>DRebRn>ec>o(H-jQko71A+M()+U)CWPU6|tN!exLWQ-Atf7HZYhzq?yJ*Ozr<7U>C&`&#?56cQI>1uiVJ7DMZ0V-C>%#wD- z?e42hX^USRjbwbPy;SYzVocMh1Lhtt&{c1d85r6hFdc+I0yklWZv*5F0u2sY8{8QO zqndi{k(7WB+)^ua%wgLPf=0Za|RvxH(Ebkh^Q)cwXiUm63X$ShiG>@Gqd3&VmoG_;nI)n zG1x)wo>UNfW#nXY95P)rDzv=#!3$ELSzW(>)vlgZNZ#?aaD1rlxYlTB=j}fwkqd|V z*^cZ?t&t#YYgZ*OnYUNt+=0*Rm4HkB#^Qe>E2a8@p73V_70$pk9j>%1a8Kk0?Y!Mh z7M2v=z#O{ zp%{||4!1=7f=WEKTPR5|1-k+sHaS*Ye_Yw>AbxC#{1_>orPy|-WEs4sKT_pc;$h}x zA+P?o?&b??+`9DEAhC?Z_m}j)2M!B2meb=_lzK8bPR_lILA^EN{Ct$y+I@Kjpv38G z>JuyAjEyG+dWHj4Amh`@ot`cU-4>4;R^eK==b9}vJ@8qes*%wK6dz(+$lFN*A46RV zSM7%Nk)v%EB-QQ#gQ}&)tY4!WYuU<^pe;mwT(4d`hHw<|hg12x% z>8oPzu|v!N8n47SRFq7~k2Fe^!tQ@Q4O?2sA{NERkBD7~*w0c9jWo=V>h};!nJn1! zAQV4e-W@oio_Uz(N_axEjZ>d`I~yTEx@R~y&NmJ3p+4Kle<77`lDh2|czg6^UuW_@ zncFOC`Cvdoy!-0B3y`uobDq%DzA*UgzPwLdmFv-Qj5(Sc?&F7#*GvOr)de{gfSO2L zippDb2R2@X8lpAz53oQhtK)Oly-$gXs?mY1{j^N>4FM&XFH!lUwI>oGge4 zzu0b>)20mA6HO(p8}9X!4P@l>8|N!zS*J+-n9Lp?)av~ba3Mq5_;v3BMBb`HO<84@2Lx%x0&_|Q%Wx^i%fro3GqBWXwPVHvJrJD{_wmlezsH&b~=imM5^it1)3 z`vbO;4#c8fAAGL5eI2+f4?*1Gj~V1$RK}9UC8%XRxnR1VB)$7&g#^FxiiE$am&K%F z)@%9TXaw!^pl`Vfg2J~s$3)-P|2el_p(MoSq^NT|s$qUn{2P$XLV7Z&#o96(dKrWi zAJqYmc@4N83IMHul+tH2^yGyo-d#yDksrSb|HRu3Q)3Z#B?GxRu6g$K2v@_XRkl%4 zv3n+p!^RDpON{ba*MY!QA!O=9GFOsg~ zCJah4=hsDix}%#V_En@pgx`vJ3szJuQkDO9ps(n7Q(Q8gt>sfkp@3peg7|xo?a6mu zH_#M09 z`0hDd(92!v!<$Iy$U#;!>>)c1^{Kww*evP9GboigIO~z{o5?u*yk;uRlEu|TTTfLU zolU+aK{jysSSAtwp&;z+PHA{XD)rNB9W(8O&>Q>R+=5%7#F`-b0lm{!$+m{f^!!pH zZ%Qk|c*=wE$=nsJe8dA-`J2Wu*5D5*S4JDQtoCAc1tNAkF-9w-H0SIp1* zbtn?3ehN3^jh#Ni$8a3tw#(ppCmgO$%<~omPaH-}XO9Oul>*&4s4SiV%px5)UqGOA zyJdYFe);?bYZs0?u~RnL4djLhiL_UIbF?RA(8=h9aGcGdn7N?SV=UEu-ymr_8F)Y7 z{Uy_jUQA&(<&E7B)?*0Ln=k(DI>5PGhP1&&S&eN!?^ukIJf{#p@8RBZVnaKP3mwfN zACgKi?~Bfl^}2CjEr11&;fG%zVm1!z_f2k7)kqK%&sm1N zdUI6&jS1relSN$JxLWHxmp3X24U>+1K5-$mgn3?YXbT)E93rh*`ZEvcQ<2SEKc;jGIdflq z=ptLQ62rcp%xBhwFeC6`g~;@_`asVSVhmY!(~O)=XYJe4hW|MI%l%YmAX|)Y;Lo_*xtN0zpqaI-6b~yaOnU06WN!%%v+r~;f-Ep1jjJTzqI_+&LWmn& zls7nj;w__Rca}3J(c5I4Qy=MZ#d~tLA}sxLDuc--G@u0ne89;C%u%d6;Jc#+6;}Qc zCQZ{M@TKvF&lv)}uZ$ zs;BmQ(z4`WV2p~=4Za^plt~0X@eM|CJ_95lgSCATGUXGf#VvAg;BF=%yMCVc)FTv1{(N}Qqc15Y6VXutX4kA=V7s6bF-n*qm z;=qr*v?g-|b}3ZlbAFy1{>@fO?i=OM`cT7+9I}o%W&zeRBk z-W5lba`=HgI9h4Cz8&&l!og@Tfdq^Oq(C|?WQw|7j&~;^u(+j-GUc5Lwo^c!Cm&71 zzuoX|xqv}OY=!C#`^^=@%XdipY&dQS@3$wBjkAJcmbF_oUh3gWEQ3?fS&A=9fnbxK2W?sE9EbYp zxH!jZk#OR24_(2GUWNuWe@NgDer-3Z=P+`#AA+R_V;+aPA=hAT1OllW(vplczH*fJ ztRlLMNw?H-q~Fn<@ff!6$_}Q-pP@UCts%C2HMYhO$6ZkIu^6XO3Gz`r=(PE!Edd^zD1IKL(w+X?J^kn zQ^wSZGm1nHr_F}=RuN8;ZH8rV4Pqy>na)R8WYw5pC2gzb)!byuK*H`z1L_)GQIdbT z$}Z~^GMox!zy9j7`0A9%|cHAP1=6POb$*s^yW9 znKwKZ#hLi5Izki@)S8?pds71|F^mW)z3I}+k@Z$x#l?-eRxC~c7I%<_XKhIhgG?5F@;ePHrR(u0pBrA8t1O<~|Cl?+w*0zt89`#F409v{uagMSXzqbADq$*oLSra(}vA~1f z)o!Nng1RwR_GOQpc`Zl8!Icyla^p%p!kL-jc}D5r6yLbMs(U!$XR37J!6fNIKRbdIt;`DMrVsTb4CY0rVk=g&kR(dw!{QJ0sOHGZUA_aZU0b zkrtF1FSCES)4cdeoMt}DJ?9iskQj-^tA@JJWjp&_+o!BIA#8Mq?|g>t7Z-OLx-}s| zA)?nC-`K1Qw7?aQ`0>|?iip862<{cEI7}nE8>3Bht*rDy<#A{XmImBq1R_eX>LE>7v_Z$6>=mxhx$_JR^_FKhH42tvf;hASTD@jz7x!r&gfOX- z;7R4IUjkV+o*E9qeb=)Lvr;n?^VQJP&y<=%T>Gq}K(gWVkYubD)g9I^t5x%<;gxEo z9}ER~Z-yhy5%w)Ns6d7ZYY$PeCl<``c-SV_Iw2I;XOC+c#`_CDJ2r}+{#X}(ZUeev zpnQ)doEL|gT{0iAf}Q7Strk%YZ5^up(h`}iKmu`tQkgkX(SMGktqaLp>4#QBhl&I3 zcPET^cETNN^A2GsAIP;Zyg54!%EqP`B5{)nJL~%6DqXiTf5_ucN`sQD5eFr4^&3X? z0S#nheh&j?V9G+t0LPn7JgGgZSSE}w@X`cgwhgW8r#$i0jos$9vc)B-3}LEbo{^w2dB>`uT4Zx+8;ug*cpRf5& zCJ}l#G%y4_5QaVCz<*dm9{jgS9Vv1sU)TP`TiBHEN<+n&ks|K%tnE|D^ki(aU523z z>kQ%Wr=^&S`b6Pz=|M_|O=`$Ku-rU3HsinqS)%RzQ}20e3Z~Kh!x~~|&Cs|uQ3I+} zJ?(f_?-NN!)l_k<#GW0uUsbQ@D0WzaGhZubyVh^PB4W6c!R>L_ImjGor%aBzNVM6H zJi*qwA5HPa1f`#8AUIY_&5bME$-G8>gGe#l{sAl{W)e!_s>#1O#tW=$testKH8wVo zbz5nZ77u0`P(Tk5Boqv_5$1%RM8mm@)0yHs19Nl2_Cn#Uc|#^(Nm88t$uOhr7Ro^g z!?W+#7Xby^+eieg34bHu#v>{Xl;;Bxwg5)gzik`0pmvbT(`CG-H6^h|-NItDi&N;0 zAQ1s0138s_wf>lHfWt`(JHm*IsF@o_b=VatuRwU@lEd^`d$rWzWV zaXIy+S57x8%wb0-6J>JNNMi2d+J7*Ol!j@K=v&=7BDrlN6xS8tL6HNPjt=rDDxW;y z2=PH-2L+xb&!=JKp}>Fi6-fpWJB&>W_q^-}-&dILQ-#`VL~t4TZZMEsj`~2A*rd?$ zpb1j5?`DDrtprLZrM6$W5xE8+^I6fko2C0_)$LV$;Ri8G_2jP(WoY_$^aMiA6TaU zpzup+edPkT4VO5g{&Lt zja_^Cp2l6QUe(ywQw~vq<|gncG)7UD^>nfwjMpjsqqgz=s?sn!?Gllf&nT0I;Ll1W z*su!=SaPPa5`ab5Fr`HfDw_Utjfd1+;Lajt+jVR~zL>gFTr5*vyKT-^X;7W82@aYu z8yo^K48I7k<#zh2?vz+%2GwxHP&%TWJY?f|4T@%X|Bz=M+SOU>9?&j+UQX(YURriF0< zeWxaq8LmWyC0xUl4pbqIUZiOe){$l`njNON{SpgA<)xwcts5(yC`ftq6H>1Z9pUKr zqiP05%`p-r`RMsWqsKZ=AV~SN6$@mXj*U-6xaOsP36L`dQGpk}^(crfDyXA$YF_clXAk%p4t(5RoH>%J{{#Ss(mr?^PPnxq=n5*wKfg>VKo$6y zBs0eC3dx5xQe&RnPD!w!D&z3e<<{}80Yb-1WJ0%)uI9f&T^?qDRJz=K0MYX=hW|6o&G~DXIS+8A#9hhE86y6e&l9-i)K(L!*t^9WaQ{egli% z>E_+P>zga)fa#REcqpWbS1&EC41~pF!+&z^G?Z(3rZ()j?<|ZXD5qW}s_L=qdR?1` zg65@^!Vg8-3PesqhJv-xAU>bxr@pBj@m?T%G_|%W8ZEgilF-q<{Cy~~Xp@&en0Jmc z3`}J94P>#XC9{1l%`Q)?Ohn?n-<7qy0j~R)nJbcD!%ga?Dh)4QWzu-IotYFJW@r7R zj9gf|CzuJW%8-RrJjo?Db-)jgx%IlRzlkuQ)=A7gCpDnDd|oStt2oG{{zT7oa+$>u z6lUXeHi-J!En;4!%Daf&>>ORcQE!lrXjN8TD$h}p6DCV{>n~6=9fdo)TmS((z4M5l zgwixA126B4!XHDZ2-mnk=4KH8y@bg-*asG0i=@AOsddc6DJ-`*(_vyhCU`@$6GF!m!=r#~ zPFElr9oG0k}$_<{t4>`qVPT?E_w*hb)mY>F7M8^Zno*a*>ZW-M5RScy)sXLI7!xS(cSljK%ZAu>ah+vZl(6kxzW1LvnR) z=`Vr`B2y)h?ccljE>TlXPTeC`wU6G5r zzwBifY6q7%;Geq0E9L@kt;0h*hte*h&H7C1@wf)_WB`rf+j#?JDT5bi|Kf*Uv_F@o zlq?_dy2`{gI1D+An;SA+0;$puH~C+;d1uY8Vbx6a6gkd;P;X0n0+g&bQyMh)a#B`w%WvYxo&n%bp|-GMNg zBve4JZjmedfgR3E{}GhHeeLrolIhrz zgR^b7)^%RFfE?!57|D>Q$G!6UD-V|{FhHTc}JFs=FlxeLiFNJg4u zvUeTl?AelA_MfGV!iXq&?=uxxY|!!BbPs4QwH0Ga2K-YW{Fm^6@OH z%3r~CAFs8QtpBNsKq73<=*KK7wHPz4UvD=Qi|A8)3cdf%pbb;nmctRBCsKBVLS6gh=|v^T#EnPUSC}UH+!VZS-@`CWFMZDFoP>{oxFY~ z(V$NQXOOqK-FTw8Qrp95=$U&XNy{#Qe)8uJdPxm}!6!%FP8GqB+-yz;)pu^ICJWx2 z72C7{MJefu%ajA9pm8Z8k*fVZztmeC1VB|4XBq!`ZaZ@p*{QhSwb5t{=+Z+!&7U*fg zUnJWNRv{%plHp2g@Qhc+>31)g5PUv9VkgZ7 zw;-f)NCveOMVoH9(MXm?BNhx}-2L7g`*x8vwNd`wdoI7-F%)c&A0{Dx&k1u|^L&Jb z&D-}&Ul`r>widg!HAfshBWQN`bRQ-B5iK5l-fMtm^J50#2+{en2Zx##ovR69NLcpx z_I?J5xtv`(7D7HYBwS8$AF2}?3m9+bqukL|$qj%A;JJH&Rt!x!o{xE>*qXfMC}@g- zMQ-9>`j3(@zRc*Gp;f&jWxm`r=vQ{TW`6`Ra&aX*Fd?04jZkWF(yx#}XGPF>r9If8 z00vl#7u>sRX5EgAQ#`@2H0<9B@Qjv`hnXeeNV?~ax*%E#zHjZ+^PS&;U}9Uwj+su5@ZZ4c=pA24N<3*&Jp zY>Lj(6{mFR0@Rf1f0nJgf>5%?I3wl`e)m0+MhH7Vbd1Za#XJSSJhAYpSvmsV6{L6I z?wfxk0PdWL$|++rV92uTo)UZCtgER%)?vh{ywR^QfwhIXyN5fy+#R@9I{(>Wit`cz zQ9Y;l*0b07m(A}}sMSXUZ5@#jae@fxp_c{5sZK}*TPkE>5LRn~eQ-JonlS`$c^-gp zRKdljg>g8;XmW6gkM{~3LSrQtuYTw6c&GJ5=ef+JoRUGam&rF`X@UL<83=0B1+eDz& zCNYoEaJT@kil5eT;c+%y|V@Xm9oxsxa9)ueJZ`%ea8+T<Y=yI!73IL)X z@np67GwK3)S$SivIVTls!zc5Ed^b>yM~0!e5V4AFls7}Fv3#>F1mNk2DVltG8VJAJ z#*fb0ckd*9u?*;P{~#(ObT*&=s@1FW+WR88Aa>hEF`~sS6LQQfuSX7Kkbab<^ocUC z_8e2L!w0upuY7nU+FB_Gn@>@?rou+a9sqP@z&18mncbdBFBAZVVo8Ec)sPsUCPSo3 zSBm8hOd480O5|6mK!an?v&6Wf9U}$!EX)X>R2OXNn}JXhtFk<^e^m7;gP;SzwmBY3K1?A#J}ocfI=i1m zducRU+jt|`%WZ!@3Gg>t<_wBS9VSDU{RgC1b|Ik&;0zh(daR%-6pv`r^Fqx$Fx`TY zPD^4}>Usi$v49%5J6M!kpjhuW^tr{a6xtsi`2=PWZYcnInCkTG_HlkS%tkP{3wJ95@6@r-woZb5ZI zCWuF)xaUkt@&9p?4Za)~ZVRaJUGb=mrFmFzpP0ZFpo<_283cyqKtD8s-%PO-!= z&-9C|y6ae~1x*1G-k{xkGq#nay+Dt@4>gRMX5dgKsrL_X=DOfnfBID#!kaPoMzdm_ z;uxh#$7=OEK5=fgD1i8gs+5BVo$X&?8Ohz4TRat7iWt49?h87vZr#a_VXuY3kd+fz zAy`aeYwUZBkRrBgu>_3h{Qu$y+-)FArQw#ceL?2?)T5Y~D3KlI2u;&72kMSG=F+5$ zU-#q7P%@&^8;}q&D!dul9;?XhPA{Qq$xqmhlSuH8q()X>+H5;>-+YWVem*{%Yi*wJ z#TiccNFl7tQ20t$Eb@ew+(z1-uGgz@ObXt_gV9sO`=a=o7>&!)%~|cDlOZlTZ0})A z_T4uGD~Ly_w~v-MP$o+%MX)cD&?E46nnJ;^&FnI(SQK~k^Hv^y?FxypheLLRopFu4 zj7;heq@H$+uIm5WPgt)j1>BH$k35^y30nAV^ z^>MaO-v2XppF?idCDuhOEr*Io72NRSRf(a4Derjp4?q&`ADO9YJdyGtP3F_M0^N8|6ed^gyC0R^1_~K$l z=JYNykG-J%`bWO-Lrkm^CKOG1;y*|We}itg^n1lgignNd6b<|^X6O7%@iW3~0C5l@ zWSph@%*^^p30epuSVmH6cNM`CvYw)>C%l)0J#bCaBHUeQ{M9xpjGYx|XQMX8!fkoS zJY)GcOYw?gC!`jgqsD`ME6dFzz%AwS6vu;>eufdnIg!=B4Ucrg9i8`56b*3vH zOME7?k;O?l*{8X~lpuut3(c`>uQTuM7IZPxHEZ>O8nV>1VrIT(3-7i4>2S+H-WTyB zZWt4E_7>#|?OQYrqCzI1-?)@J+zW}QiBPCdn7dcfZFfyq4Qy-QbLW_R7GKrf52U;w zIQ`_Nre@LNVO&Rwap`uqy<`EPS+Hb&oRh94AJrR#)m|Ns<0}p}{jW5@LVVXaB zSWkuaz20ZFb-)|yRxOEITOI8Dw5&Mi51F46`c`01M;d3aI~9#4<+M2vNj^LKGng-d zIawd;uW^pd$6%UuI{u0=W5_>m!%)90KcN|8g_Z^FoX5!yDAEPU8)F#S6wJS>xGuf$ zx0~?%Axl?XtB>n0r%jzia7cUaoYS^!A2ZA^CI;4;H!(-WRgVFZ)511t{1p<&<};7MxIV9u}^M&eqYW{As@|o*iMA zojwoumsflU^(RYkS<0V5dIFZHVDx}BzZ)VMyf|>KG12GNaH6;WGc-l*qoWI5FUJ7s z8}dZ1)DG=M0^Vrj_ab;?ZLFuAB6}1s6xhMB5}1bc-VIv&7d5=|#O5(f1-zR(CS9m| zK4Yf$$Z=BPTW3ekF7f>hK`fW}KvUIm^eb8k7WRvCl(kEI%uY=8w%mFFz^G*^)|DF)i4xAR`5$0 zFn_o|!lUNyJaq>r@3r&IY3`+u8LQ31Ybi(Y7JnSOTaxy2Hq3iQu#*i1=iVgb+$fH!PdiwmGEqjg4xm^ST6-iPDSq2fP9g&F6!H!l4OA)5Eo0#9<}L< zt&|?=*6L@iyo>}LoaW}H^cF6@nvpa9~a!_Z1>LnW{w z=IRgzUY;=x6+Ue+lmC5i{?$4Wg&nK4J$rPTe#)qitTj2ZY1^aw7pBJkga0J_gPq{& z30w7oXV~)(?xSjac(7ysE&^?M0~z}47^cV4Mip?vR?S)aY4#+@Cq4gcXS>WetwApE zBgr4ddyz56Io!NeLv={_j`i*4hm!Rh$!AoyY*hc4gS0!Q74o#kqmm{Kab&nsWuy>a z9$7F>KbyyIhulc)C9J?RMD8RH2kS$gQxwERhHU&cx9r8ScBjAXg80zJ3lzTJP+B?P zxS(B7XdT!ifJrNixGy>iQ5TT+Ya#1>|6@ZFSpt`mj)H1^sMca%CdS%iiQO%zC5TVf4H|Ac!DQGr&W!v1lY|W&Zs>tNS@1+ez#1FS zs?!B@;xgCt4pvDZW)FHrK-7k%o$8Oe;MMHGng1jl)$KH=%iY~e9MXT10$2zy(= z+q1k!P2t6<&Oyy^jwr8?`L$cw;q^Hx)bOUBHzF0_FECv6WqLeb`9~Cw(PVKNiW+3Q zYiHcel6~=rJHEPM$*s-P$!TYGK4zfo1zt}38(ck4)jW!pv;_CNee9L3okvzC$++qTYnT@Rt}ZXhel6_gtehMo0;?hP zP3wzl(ODB6lJaYCUp{kc9p8+_v>Dq@U9*>aQvv(@#zDlopZz+h=LkRDtOeMnsRFJ! zh8L)ki3>}eK*Ifg=T_&zguxQv$H-V0lKOV8nY0+qLXvX5*f5XDyrfvM(vGu_2h|q? z1j-U>m{Ymva}){?DvVIB?O0wk2Up#p_?HO5PcxkOI55nemM%T)uQzm(AwA3FNc@4l z-U;PqP0wszAmAhmC4xgn8B4dRpK|74rrHnL^}|-Gpf2{v)_gm=!|52`m9YJ_!ma!O zP4s1y59tSpU);rF;mj%eSd9tDHYPz?0})7cxOtJkU-omyp;yKdt>vg}Hdjv4(`mRx zmbmT6jo^D?m|V4Qi`JLiBQ@8gY`z`s!t(u3 zX|ivEbBwVtIafGH?D<)AKrP;G{L|ss_DCUxTyW~9{gB2_&E#ObJ)@A^=Tm41m*Ejr$S|g{e1-9!sQu=oK+9z_tCsH&*X%y zGVvt3$g0bjmhb%bGBci{*J5J5W{(SN^d=q&L}oAto!nf6xzizescfJR89(3Su#s(|u&c^CwCRJu{xzZXw+t1(?9 zP0c4nfQO{O?58UG?i-6nV~t~H`K=qxR!{0pn&hN9ecMRZqitg6x)@et;F7Jbr9v;= zy#cH$e$;^k_*L8B4wIf{E1gdSYpqv{`6yt9r3he=_A6vTP2UMYVGKYr=2A$Eu#cu0Q-m}J{K-oa42CN7RkIMd)zoN>!FMz6M zW*7rjIS|^zMW=|kC#oGa{p@@8?cRvePH<5i-O+qU)hb}GSt>1@!`Y}Q{=bXftVP}9 zt;r|wjAQnAner*9iaL{wGC%=t7Er^jq*T_F|S;d+*qwwYB@d1 zo}hB$RFi1Tnf3(J$pQcXNN1gSe!F0yh2d?>m!&}3w;SgfW@z4xS&hI0olC3KQo(oY zB$DtOq%KM@|J1qmg4V}cIIOrMft!V9=I|14IvwM(Et+*LTFY`wE=<06I2u*l;-eVQ z$7ig5L%*dSc1s;C!Q`fhWcl8$aMe{9f?H1UBhGLpZc!gj_*pn)L!FP?swz>#(5~T9 zM?)SBNqo9!P?4nw2xBn4sfc#)o5Ajz{?ya;&H~{em6I?~rITB*(V6HRd4C9*CYFX^ z?GU0$Od6uq^_j#4v^^&nWHn#f(acstI$ zIm`>Hj2ghMgvCZuWgtb?r!c9kAG0Mt2YqboSkj=nSuxCJ8%A2jtMq>-*}-;;1EMHa z0kih7SxYx4;$q-)Xt@S-gDwW)Z^NAyTB<_MFN}|_{lcg-5}8jbqySX^ctjxLd&h7D zS`IeNQW!xmHEJ{ckTVK05)bdaT0y^aE!yEA_%4o}RJ(B&QQCnDUc5(NqL?RcwAwa; z=Gv=C%og6TB?O*luP$9e zy*-)GBq(-QaQrTel%f7Wo)t4|sXhUBAz;sg-T{*{|YoqYD|9xE}T=-UV9=-Maq z$~u|l?Y4V~M@Re?79`CXn@E*htGzTwt=3$hl!=c2(6#M+4Co_*;T`Ir=~@oZ{6)XN zL@(-s{ljKE9v|mjA%T)quRlv*JOEh=vevQB<@-IqBT*xfWB;xVh1DZGMd6GbCpQ#B ztR1eC_y-fzD6eJ3#5TN;x2rVeX-o}d4l4b(cp;ASwQ0C6Q$IpKcaZ>`Nm>DiC9C0E zLW2wlLS4NAQ~>)_C=`A3hAq&`si~uj4G$?L*omQrDgiHwHU}Hx=vVac0Z2;<_3qvc z=e*y4dxakvWRkwy2;?HL+A4L%ly;{@3LAthqQ|}!6_QV$xvyaV`T5~e2m2T?!6yX& z4#`<9j4?ix%~WBr-G$|0A?T7C#H0$&}* z$dHU&Vd&7rS_k1(SYs)$?0TD)mSV5H)*d&$_Hw^|gUafr3r{^sXyq}#9)T)=O%J)+ z_Je<88y+TF{yt5_Z3JJPfH29BrdFZJO==-?5Wk6Lm@6Ckr20F{3ccq-f@?7*7E_-x zl_?*-AM&C3Lmm+upX|ljJN5J^}MGQ#~WcJt@~tB z61t0Gq@Qok21yi)5cZHder~tYTfKlyx_bkojf4nwrvEaBI13ik7pIAoblt z|C94Zz&8+!IPkK3*S*q4X=sJe31R2zs7dz(Vna&dkzwWu>2_6{_Y9j|QbmUc-1UN6 zNPMi4LEEt-VzEsL|M#)^Pu-4M0r%rNzS1q6zE<=S8h;fHU4cLt%enqKh{Z>5QV`;c zkOF>=!#sW*Qy^{H^-sop6vIwD|7FV?>aAH|3d3PB-WjQx5^L}VO`mo)c`Z5q^mzP) zK0#jd7`hAIu`N@5)knA!Ts2+!I6xjw7*Dyim}8hHsq8>YTcJEoY()Zfk$Btw z8_$j4>Ri4_U+nEJ=6Ve+i-iz)i~8O1XD2WUH+BZ10*6TZwE`N$UE|)S8^J+3( z2EsEXV++_cwL2vKiNp-|FN#>NDyjLC&MQ zVGx{rupcbd+C4$&j1HuDycb6cDnCrwAlqKzSJa=|PPKmz+1K>C)ZJhd&lRT0s*l8* zx=X52xm%mm3pMi*!W+}opv~?VFd=E7+`mY#M+6GUJug()0uVQmAG7t=?*q6x#`tpA zUsdx&ysnF+^Jz4R%WCx!5YQdM{?K*&)2X1HK3=4BMm&J(D@_qj0-HY%p|Z|P7Oeme z`;Us@yowK;UuHE4yU3?V@Td{0{9}IsUWY(W=vIW9qEf#Kiu#lAkK-8}VMG7PzbZ zcnO-s3ojI1QNS1T6zkG6pBV&to^Dk%JeH_Px{5@Pa7n}*_N{@*`vkkdN!CY8c#7?3 z#^kgI!fFO{KC0kod!66Dmb66B1nxO1WkN{;sL)~@#io6Ln&_G1A$U&1C6UtPr3g^w ze)HaI0FPPlv*pX#myPd{yr!@kPepdCn~{WZN!9q{eZcy zw|bQ?X=%}kmVt$V&kIPFDqkcabX3?{+OzrQqL+E1OC3%E%Iqb)+P^^(Qqgga%ANep zmWA=bKSBFIhGRG;a5bT_kpv;^F^E!D5e*d@tf^FC zG2L4Z3E&aatO7uOgL0F!wq&5?q=5UIAHu&+e1h6u zI#EatcJ*W&skqfP_ZG*z_FcxhCsZMaAYU>v-;0qB|0J-}1(a6St&6yllw5G#F%gzo`O!3y8}h{D}Ac;^zAxz5*+ugbi5Klw1o;sgwocN?mcp z;MkdlMvXEUP$K-)Fs}m!1i-I$?$E7@4nqS*;>j^Zj3YWj*)x#Cveu_Z>6dsSjqt?c z+gghZHNaW~k7W2p0@CD$E7r1Pxo*JXFj^x(+V_nwQFL}w6dyN00wL1!2R(Di1v#y} zAL?;#R{M#P#JyC5vrdLx|B2k$dP_#P`TR6hT-7kLxi_5NH%D$P69kC8cOUnF+dyJB zgL2(1B5BU-sY)Ld&5f&lFtz3OYvI<073g_h9`@!`R&V&AHt6Sjh>w$H*!Z3wrG<)& zF4eQ0`ePg9krC~U&IzsM3as-x?NuD%p&Xf5lglG6N8*qO!u6;)KvdLPGX50j#;*!= z+;{NzDVeW5TTlbKR6eY?6m(@o7;#0A+N5jhx2>}1a4C{kA;JU!23}RnRmSbIUMdNr z86M1;<~niQPEFS@OOTdgO4790U3`_s?sxfo#&nD^ey8%!6 zoA`b(k7n)BPPsO(ObNI=ic#3aQn3FU3%`s8jV#(IN{mJwO&$9e)H{lAp_w}Cy^b!d zagklAXsG>q9}g0@;yJsN26>)gc)9fH)Cg|lC-)%YJ%4zx?-ug6aAM!yX4YzNsoZ__ zX-KM2}n6kt601` z8~Vkxkr`>PB>U?rBN6)lC5YKAOZd?fPG@J*Z;0-YKBJ8`aa~z1&utLLw(6&_YP!ZQ6?BuH!PFLR7g>he7ac}IJ z<#bQg^};M@tal-kHSnEFET$QzMi2Ji_qAjF+21&V={)3$xz&k&+ugV6))(rZqxj5i zWMSP;d)mvYu@R|t*67CD=|*^%Q5i5st^Hq=MG}I#^snt`^-qha3T@2qdeYXW)}3 zq>0(H8bifpj@&+2ecVd1babDlEG_k)Eh@ncO@cWBxzIAo>qC6gT`h0Hy6=h1je|T2 z8{d_&p5t%IMR!WD!qJd*`3%bFDiXVW zt+0w!FBrE;`U2`;sX-T2qcN1a$Zx>tPppcv-5iTL!{5&F5h?!7dJ94x-t`ER6ESo~ zhyP#0d(=7LZP{G7Wa}KJZ5&bij&eaIfS3uTd>zUD@Z*1VK$>D{&ogBM&E9GMAkBQl zX|mCH`GoiR%#9BOxnPuLi+>lo9B!LqOO4vI#u8g(!MJHiIl zbRZ{p_*U8>`VHWsX~@$XQ{KxErZ@`bh{X5=VR@ zaMBcj1(u3V1r%OBST{*)@JRcq)uoO&o4#&kB0K6Na77LgLQcZV>wu*|xnRZ8vnh44 zC^$2d+~1aH6zj$4!g6a$F`cdFdWV^EX0ch%7=$Y}p$RGZ4mjA3fcg+(hOv7V*pX+? z=23z9WF3o(O{E-cH$UsDLnz7oRvyK=S1QEmthbnRe!*IW`RpqH3^ptrjpSmhp18PT zh!8?(^(Cjw59W(#&^y!<65mHF#HnQ3MKxnm*@n=+#|Fgb8#vToQ z-*1mbl0$a!RDF^m(8tXPOz&S-@R8RPTi@POlo$f(B69T{1BR2tyq=Lc1TaMeG>CC# zVhi!dIUP8`?TE4d-tneWquWB1J1>ct!{^LSK$v zRLFp-e+<9#KY(=>g32%cB$<^E8k{Ti*%Loh!+0p~cUhaeVZ_vLj|=RHoxQ&!#I_uJ zDM(b7*9W~eMc=^iVxX!^4b){|j9EcRzkuv{(TO@42GS*>yQ&K)u+}xd;}}ipP9_zQ z(jsyJa>WQ#i4V&}01R!uv%}s49S5xZo1!$BXQ(KpKgJc;$8aX1kO=x7$`PeNU9U`U z1sRrbl$&}##)WnQmYSLQ1?oP4BLxfHTTK);_f*BV6ppVyj12T(;W)^crSm1&{knQ_rI#!d3E=R%Dgu%LE>ZrylII!+C#%he>M+nqZ} zJ6ODY+Hw!JyuKc=c)4cOnnAJ^Y(O8ShfcVo*w;rqm$?kO23H?H6sncmev)xR^W5Xf zh_(5sy1(vs&gQm{Q{7%M-08uUJvGz=S@6<7tf7$p$$@5Go+&_h%xsd)doxhUOA0Z2*SxG5XZ`!|-=o3^Iv*=r7zVQH zq7qPK!R5vRdj?!c8-mR$x4oFixlkpN{utZFAjPIK!B3G&{L8NDFt+FRdf;!oDWYo}urF}b|V?tTR`NVO?@RfmN*5j)he z2=tygO21=ema72w89{WL)LpD$Zf-_~`NOa}A~A=lORF@)KVoQ6;N$7LUkNyCX+ghw7mx`$(rdoXp~v?;WV3nK<9u{bUGXTDit-SedcccW(6SqvTrUyP;9J zk@b{N6D9Yoq@MUK|3-7<$7j5bJ6MWM;Y*L=oqNYk`XYtuYHsVlvhxV(wLr=**5jDx zyhbBE^zRC%b^%sLjGN_;-!Du~DW$iqwt$e*?|l#OVHDc;;!qbm8PE2e+E0j8s(;5!Y3xEKJB4zhfeT;_%6f03keQi^PEJe>g87Vc ztoP4h4nqC*D(U*fd8pQBmFT1^APQ+H!!b{QYluV;<$7YD8A*R2>CVx3jLktmrAKKD zrFgxDbOuxo%~L@pOEVuRcOX_`froazm*;8w0I@so_TH5Ha*M!Z34&pW-yai0{A+^4jStcGSBko`Fx6#O z`@pTbC~r4uSE4wWkkwPm|MP@_eB*at-D+kEdHqS45cCT3`Bnx7775kqGFp)FrKTp> zhMvLywA_ukaay#!H?}PW_#2aoY}EUkSHngddhI)k25$(^HwIC(;D7;VzLcplgyp}~ zmp)4mbgO_7$W0;1SMM=Er^>m4f|4w;d5(Xuhqdwq;ZzUO@84RTN5o7#;I~phitC5r zU!BO!%LaIvv%_*wQRZE`Dwwe4l0-I*jgqfG{Yx)jbHX}!Zb-6&9bR$#yqkfMY>v=q zP}C=61AFwx?SB^x{``!iPk=Z%nHULU{v$#&jMEH6Pir%D9|^zb4?e;D{XW6YCx_Tr zXZKoOD^vt|zL$=oTulDuAWat@L#0UtV{qW`R!r3}4y_2mOh0F&VsgJ&-jpxy%J-Gi zgB{q~3G;tDk>%}dJeZco5u-rWgoW1E%Mm@8?c_HG;eQ2%Yx^*#KhXb@iYqDJM4h7? zOfCH`MEgpfvTjx+nY;^*O^H>RIqDI(dv)}dqODt>u`be?9M~Kx8UnvaB8Znz0KStp zWdfWhH}1;&^}=oyH7s!|+pIq`>DxJFv+*XeeaWO-Nbw<>!8`BG8=gzr+S^u!=i*p{ zJ`3K-Eu+)E^rqw76c&7V344)=k9-mIS9A)S+5|+ycIv6H4MgEw`(`s9)WahVz)Fw71J01kNO{E zkAzFI&B(lr?82bi$Zubc6N>E3f)nx_bW@1ufA~l}4Z?G}vNzexnmXM`j>w-FRONE( zku$_7#q^S8EEzsW_5q}p)CGtE&^r$6Jfi1u*C<4L3$o6c~IC{ZxY{)A3O)PS9$BOV&}Z@o1Qb!pu} z|40f2NQkjBEggZ@L+~)vm*B%9jutO)rkdLntSu{%9H}kUraF|XegsWx#|A1PNLt{x zywQxEesWyt*mRl>dqM>$Ms?5+?vpv-Rya)>Q`CLRYy&nM3_!WM%XPypqH4mS~B29fC(I1itua^=|9bG2jOa2@cv{7Y7bvAlzeAEIu)ZHPVpI);@D^4AD(YhX%P}(8=|%)a|$^ z_RJkHg6I-kn<*Z^QX(QFw$psNi{8DE%woxhu916=z0un(WoL}+v3NGKYSk9|$@<(0 z0NUM$01~M#Ydvu!-3CFYyAIshpJad83nB(->ED!d72G)G=skBci z!F-HjSqlgH#5rsPNeXP`8|o(psQJj;I*MK9-KoZ8*a~ZJ8AaVX$T^jm8kp8Yk^B*B z2D6-uQYZslR}wla!)^~0?^BdFhrpWhrcPMgmudrGO&+R3G3vP7#G-}DJ$n6Uv0udJ ztPpJ`w|sle-z?4Y)KtqwsTF8XT!eUXjP+hb(7GEo{#NIjQYblRRHc8BNaa02?lvtaF3S;4-p1 zJ_*O1PgFG~bMjq6N9KpkrBVkYO+6b;@<+8M|K>1!=?|l!MCWIumEIPNV$r8C)S1

^sBeu&GURXSVsNWTni!y%AMFjdJp^xK38BCZk;{$DaCYt zQ-T)|VsbQ;_W!|4LvGKevglise)5ZIR`QK~W-|XJP$Z!RL%(z)B6dS&&SWS(?jpZN zg7(L(D>6A^5jWB1zjcfjYzqoRnJMND548%+ldO;u>YGnRSiX`n7am|m~w3df#Tl|&#%3e(Vkx|CO28S*^~M)Pe={t$r{ z0xs&d@?60VhOXHJy z4KVP8WDj!i0SSd$3Sl0_rAqjSjoPPMed_oj>fR4PNGEgd8?g`ddw!T+)ltRSXkBbN z(e-R46Bv)ux*}`oN&z?yJiT?-FMkpQ;*xQ)njGKIw2lHuR+5KKKhtCbh->eZLANLG z)+mQ39WO=TrlKoF_3bFO{Flv}C11XRoSJOkL#ZuddMOgZv4hDlRI|pP(`8Zd8DZGA zyul}hISuQ1WDipZQ?Tatn@esuox_Vm2s|)9RQeizkfqc=S-F%uUiBmd(XSml6P*qn z-$IGYn3?5izpiLNFb8pLY_aKccGt_qh@m7>5&~ewuJ|5BHNC;XPt#FRdh-*l?cXjQ zLL~c+q_T_3ZWoqu+Ck-MCVyxpG{WQEbh1UgSmHUM5s~p4){=(8({5BONK#_J{o#XW zA^$Z`YLd@oQO+H+bVS86qKS0~&QUS(cr=zQNVy5m>@e018f73@t;M@l<^2$3_GAKY z;v+|}bf7M5J5xnebob9bz0-RFCOkkSR1!Z z4afBKPxFu}pCV}5r5`iZwjwXa`}&j4rm^q2g^nll#?Iw5sVUVd$Q%@)h{ZWVDdL6h zQbl2k`d4@^4$>5!A~?=h$F6i&0h>`R88|*qNQpd)e4L=xck{~s@~o~Cn~2rnbat7$jwwRzl9QyQeM5F`iq^z z-{rkps{w#J%rq$=|3pHY7+j$W$-HoYf~wAIsu%M7Y0`X%4b|(lhDa~wPQuYJ$o}`m z!-8zwt5uk%O3W_)Sp*7l!i=o0JF-or>{}wB)kmG~X*w{hn4HBsGQ3r7=KA>a3DYK| zgF@ZM3y4T{2MwEDdxwc+QcQ4iyju{smTZ5`@WeeRCr31StGu74;|7=t;8|u;WmAZj}|& z$p8z#qWrR+GqYqxz~Y&`*I0$YaUf$7WU+T(xD>dt;n6U+pxJ^#U1$Y#!Yz;bjXoq0 zHHy8;!*hv{sFsD=VE_}_MX|v9GQ>w*P;yvypXs9=bSIq`e0yM=_G)r&ZTd73qd|Zb zij}_mi!Qn#t0$g(UB^@)^_j>=v`#zjXu#ii2E@!CeC{3f-Xq>lX6%jmh*%&%8K^#r7>29KRCv@byj=;yR2WO?+hm6vw zm#z(;Bc1*`Cbv1?bcjz=QMRUykWM_9L(JWw8w8SIn)Js7;&eulQ;H!i3I~XWB2Ek0Af(-{FHkYnrOP_1tPrUdch8QwgSU_p@SGk z6ikrI#mj&X(91r$zPqa|8W-P;NWrAK)V}Jz#-ak%v^w6?St0vUywy@&;~{5XPGhvSr=}@c&CSFCyr#7*#O@k_W_1yzIf; zQQe8-{OttoxoQS?_4!q7%e2du${9VX6c${NIJ zmUrA0MHCbhk^GNVD&cZB_S`U?&O_dZYOkesq5(@Wiub0#0ty6QhYdPz2fs;)cnTRgwe!`8 z-=gXzv8NoO=&S7MYj@ad1pqKa+kIKF)+XA*3p%<&r~B{(houP8B2@B8sB4<#c~=5s zGbCE*gOPo6qDLm|KHXlvg&^NE2EJLnGjeTVL48$8DdmZrAMxS6A?j!wTt7D3e0c8w z0v-7pl=^b0BhB434nU^}*BprL3}T`JEUI2Y{@A>G z#9|!HDC~Vj5~DsqyS@G`p_}YlUr=_}X`w2`%LkmwvkvWS=k2~Gnen4clP9Fn|4if zG#zg0f!iO?{{uDfmbgkP@K~yRD6+02U=+U2#6D4Ki19}6&S*Pe1?HtT(!EyrO`u|s zYxU7!gFpcf@xnWRDpC$?j_gz_obZfP2z=(ix4Br&x#rN_IK6MN=C~S}Pw9BQMK*iF ze^~Iy-8%6czSRJydK#9ID^6%@T_;z0(EMrAm2WjKGF6x&5pd<~ z9>`Nl<&2ST_rVt|&0?;cdsExTH0@6I)JS znSn^7FdOR&;i(c!2y!8k3C1)`K4X}(2;6J&X8j33tTClBDK}OMpLumI0xp(l>$V>b z_kH}`*Zrnw&zb5K#JH6=KAX03oep#Hr%67TW0_4OcUpF8+7zhMv0Tn(4PHGjHdE*n z={YFhN+Z|E6EEBzK72Np&gbfJzJN#I%`WEz9BoE%M4kwAp0WiVn!q&2Ei-5viZNHsuH^s9YJGoce`@9x z*>Bgn@`FY=FF)T}a*&>Y z$8J3x+2;>SqsWW8C5oUUvuxaONUgmtd5Rc@N|~h}TL||<-VE0_mh1Kj9kLEg6Ze3b zx{y>^=p1z2SKx{6A$Us8kw;hhw-TCDbQ%Bh?)P<5ZsY@Y#7KTvW~#&Lw@h+zq$?Hl zz{7CE5KqmB@$nNg6?ag`$hB={wvW%2wfH1TJcODJm*r@7euE1N&E!Jx4`*K)gfVIs|w*GQ5 z`G#7x9$qL`MyMV8PxLtNo|`y8Yv?xQ=wr4 zKqi*5QXTuMv9y4&&L>osv$$JT)K&bEnJb=4k*3=#F-s9l=r!HqszMG z`Kx{f!IXjVh-?<^<>+`D3HdW6#}^5G}Gpi?35t zj@o5$vx$B3C2Q|;KBSkeNk+8lnj))`%El~2>$W%=mCW#Ody9y~EpF#MYe5x{s047MkWUb8#`2B)5&T0)t-I zX1MN8#Sa7{ZG_5N55@3~+`T#c&)fi>Tl-kt%4z&O*uUta3lcc^pi?h3inBXm}GZ|>8VJ_uWibxGfk)_d!{24u=Hja7gy(zTH@w{AxpUlPD za89zbr*#DN`B32Iq@;v*t=ZAX;TQ8e7}oP6WtvAX_9X21wuKS@5&d`5BwR+Mxp?o1 zJWk##uT0JEPpM8-QTyB-Qu4@I#Q_f5h!=F1K-8d%%I>H3Em#Pq*Dhm_(3@R_I{*ol56brgYc4Cf{mVtl^ zmCcx;DW;FbK$u@)!=^fmXx7Y&#?IvOsR`btF`pLl{E|SYaLNv}Lzg(uV#A+!ek7kKtGk$n%<_X-qCe*7Pr_IcAbo%i{O05uG1a)$FDokL z$7I8mAGfv;63p0P=?n(gPvdV^Fw`2cJ=LEA=g^O_-7D4Nm{A-SEG zkhp;Bv!qTw_%l;xVlEm3b6J}dnYNEKoq~s{pWxv+s;8#2SBPjX9cl--MPu~?g<{Y6 z^XVKcNs+Jc_mCtc7gF1~nW|MOF7PT@frzOc6#g9vfBx}VEVv52NK+y-F982P0KoGa z#&!#j$LZuv1=F>Uq+vOvP~EgaEkKeSdIPcZmcOEZ9qcuKq*gAYU$^k!)w)?^UUBz<4D=+D-0XSQbIcia&w}9wkNYmiN)XxZWTB zU4TDM8_i7}M!CVnBn>SM;wTh_L)^PtSjo)3%2w^dw@<1b`zYD81C#O(*fivw`pnn} zWyqw*TFnYvGjDRPH4BX!dNMzB3l#m-)w?H_vOp0J5RM`TLfmY3i*hR-n7FjD(}g=$ z6Zv-adSbFUD|ybW(aGUq*fcl#9@MPlaqdp`+p~r@ur!I5d{(1NK>>wYn7GIPFT*bV zIw?vIw`{EG*I*%4kjR}ql)?({`GZB&0 zqGx#kV3$)V6^KF2qtHSCl&~JUx&HU!h$fq`b zpW9!;9-m8?eVWn5xc&_bSxCQ`vXLO9!PDKG00aITGRq3ST*5r6UtnUN7Ao{y=RrFp z1C4?=FsQKO6H@ml@`=~ZgZB9e^knth+^}*lQudNQ*3e3B4m9L<6D3Cw{r=MoZwY!H zkj%jQHl`Edknd)5wl|;_^YaaBilfiW2!h37phjWc;+`}9Eh+6-4}>p&MKeuQRTiAC z!Ew=gX79zvSlcvD0r|W5x?zx zR)X8oJLMwyb}J*DV}s%cHM`lfi()Rm@qp&+v?_+5JpT|Xgy>puE_c7@l={OdFU^&c}5wd2sYVJltHLdWTl*$&lenl#@5mqu{ zowkJ{<$vgZC|)-*cS3zHuZb4H2W4!UK(VSk)@Y~v^xSNdzT(Ysz<3HujZOP@$o<4z zS#GXurY1GDwGN{qMqSJ;Lp?2_X0nRgnWYaIs3CtYMI>s9R;tBZD%6Re%UpMm%fZz2 zI2IMU-Q5uYtA3!bwv-|q?QD}({U|QFm;&U;wD{_kiLAeV zZ?@kx4mQpv~c%Xu4NCS08xWIR?{nXa49e1uXz_ipQ^ zJ=a3a4(T%nA`l=XO1uY%%J8y=kria)T*Yd-JeE;Yl5^5sq;q`T`ORdoMso#`QgT<} z3w#H+n~8E!#noUk+IEn#vs*Y@5s}ADBU#>)4<%qL=b$2CF|eNyT9l7}1(g>%XoDc2 zL=?iHY>i|O;V%fL_HvdgWE@5QuzU5G=ULsHml`3@RT`ip*?{a+u=5tj@mk!zKYGau z5?vyZwP+M`t7xdQ`y~qJPdSdy^HIq&OA|bm?waYp2@&4_D>QSu z4!(NMsXhbG&;znbXMAM2E=%zIPms~g;TGYYR3?prWBEl zR9`T150=e-+cp~t=L+pJGxLPH1j@cGMyz_F04Q%^HW`q-Bt^2Tc+u{A(3`T*X3_Y? zs^v@;DXj`DmKK__#s$=1j~c$KJp7C;tFTBiN56(c=0555^jv1A|vLruA#7)usjJETX=IB-tF;50n!r93vB zinxuH<0eVf`?}DM=KD+Pc!!+oos7*_4cJo{PyD|fV_C}H6LeNSV-W{se_z2LGw{H7 zILkPEB%k+1*0i7q`hW%yN+ z_-nC=A5VAf=HfTozXlTaGSjL6T&liFYEP* z_tad|>BIbrNo_*K_0JUlZaLXdM!(*w=M4bU%*;?LoD^gA{SUL*gv>lD6 z(P5sF;A2vaYKTqJitY%OZh7V?Ck{l@wHQ0)8rNWIApBgYMOosoqn)%5ykaaa25pG7 z4>fT%fvEhufRoLm5@v+9FE13K25ppu4y=!lNn%S}CU&Q*C)zIJ-1!$hQghT5*Z$BZ zE9Hrf7X4^i78M{@Ef$3{E1X+*!gWMAV`jfM5>AVN!^A#7Ez)%YSW(9Ywf$asL!aI$ zxRU}B`Y1E?#=F_N8H)*Ji-<P6S^b&2T5J>7}9D z+6q)f)JtD8F+V;aG$A1_ZP|Nrj$Fx4lzN?3;XkI{@BOBl7_o^^E#2te_Kh{09=C(K zJQ8zMWZe(t_GD#7r1_|63&V z=MX=_7l$SvW%w^{8%qtqf8L82pR29(vg#r$6WJ}sMKt0>yxeGkuH1`hlXxo710RS6G$F8|l(C#tZ$-<}k( zebx5Bp}wHHzPF&aJJ}NEx@9`&1z6|wVwe2>?PSE7%kz5jtCGM`JHSlNTmZ-}Q@##p zpFj1S0RJPYnI;6(?di%nSFCn>V1tkGdgGcfv_gJc1!m7fswP!yMl-^&jsv~HfupBR zf*PMCPh;6@ox%QsAjv5=3JFzkAsFt-APBUNYG^Rvk3$sV6U9Ch8w#&aK-oF-ZK@4# z8L`F@xv~;IZp1uG|EhN-{htLA!b~YADk|%)6UxN4T~#Okc&->eUb8YtNg!<~qpD;4 z8g^jnWbtMi#3DWg(p(txd&H>&hz4}gJo;;7i<<*8>F3rr$m_n&CbvUrV5;urh_CLw z8Njlqs8??ye9Wjz99eJzFD#BS3qV?4tBt&M2`OLK5V*GApBy^jz0CuL@HX#)&_=Zx zw4-jnNOq8wlxFr(qn(0TWc`^cH#4|4z14AnxRbu|!!5fG zbK^%CoEp5g6iU$)$s4VvU>`k?GkD16nDBNTh)u-+KIL3wm@Y4=F)$~NZB=*&9iTuW zBKH^xOlk?Yls10#_&gZtWqUE&g62B%k?J*!&dgwasFS&g9L$Q2wj2BJ#kRnQ6@_^Y zG<4tIoOH3F?k#MMV{EwLhKA|B|4$MHwPJ zeG0=%tmKw;cXry>kK>b6<0d`qngl9Q}>PeRGwIKz%P?)BD(^b3^7;b4FI$pwKfGZHTH{SADe4bF1tMVBv@R0w7TA zJoMR%aa!%O!>5?%i}mf)&9`4QcUv(rVk^dc-%7Lq&ywq+ z5NM_n6w4@zxZx=`Zc15kcb}%jko7@rmGMsT>BvJ3z%HPliG;v`SS4aXVe;Uww%31$ zls6!2&>Sp{>cM2eRDKDj%aZf!JF7-4jw!6?qL+ZSmPT$SKkl*fJq??I{S{Cv9`7jg)w_GIE~L!ayk2n>DhZMZCI!we3Q+XukL z4B#}Ek>vNQK7|+wemtxcSiL#qC#q#a695X|v~Eq1lF^BWVno=yr+6Y2SE)W%BlIHE2V%r~4lxr+hphc+-gb4d1h6 ztccew4aIXYZ|F_5;@ZdmGr=lwROGF)QZj`I_!XvATCj#V1dQp^lCBT}6O2onNXum} z2@4p=a2PB3`%fc2eQ1DoO4}*1PPs+8r!|GFN+Yr#?zV4mdPN3(>Evbmj;Cqa8mKOl zM&(=orNnxcck}xoSBQq3>+KSwf5D|ErH0{bROreRTV3E-Nru*D! zx{3_YdE3DuCWq}Z%}v#W!2_>-NCeSpx1<+&3U68;!1mf&mQTU(S7-C)=8n}9B$K%3 zxH~}q(;(gS&_5o5qhPwwpPblT*^b-Q`~M4?WBe%7Y+t<;>75l$Ny*`}VbZyF`+qWY zJXUW4^t4w-LS-niDVs%Qh>+;*Pv#bt_@gL1%E~ekK@ImmBCzzG?Z0Z&Xw2kFg^yFL zxLH`Q{ii-cef6w|0m{n2lZQCk#1fh7Fpi=<3(C{>^*|lP9PhwI?`}0_8MON>|W-_+knFJqyj}uBk{pNvt zBQ&jRQjT$796vZh#I#9TtkP)fe*nb+ zs^~Y1+~r|JQPWZlb{qbM>mae%xY>4f*6QDDf59xFGN9YfRA4 zJ_=r!aPG22h$4`nQ)4p`E`pkv)%@K5jT%N5;?tA{etZ53H!Lk8>-L?!+Ag3Ngnnbi zP*NsWF5yo4_iflRnKapI@U4@r0g;#}Y$|y8pDEnOLzng5wdgMA+UARmuM?Q4tUQ)9 z@vmsMtQ_w||L2b+308nd4D&Cvn_DZP9EM>iTIhh1C`cCa=HISNj8*b+yqM624tr)k z4}={hXtDpex+wQ0Z5cv+XGxj(p`ZWr8zB~9sOx-YuIcyhQ9&$NKA)i_MQqAV#@&Q8 zKw~s%T;tF)v$!z^b+nw=(S2jMT>Sh}JMM=*f7xw}c11NS>{x6qaFg{;okvTJ2(Ex*1+01G=N~JF&wLvb&d!d#-inr6vn?qa(6j^} zZVW!*E;U~rn&D=isK~${$6|^uC%MdNLL~$}?m9HXpkWA&ZAjgR+UlD#wmN3J)5H!a z{8lHClfk~Ou^;Nwf2OQH4j4qHTKFfLi*+^f7~oT6W;}SZ#^;y;HLrk=X7!vF1@5sk zc!1AIg1zp7e9HSh169EXhKs;lrj-wIq0bOy|h@YeTSYr$1r+sP582^z8uoDT0dw3sO{j zT+yn@x$E>MEi>NSuS^Bb{>)6cD{x?iHmBzH0An`gPOXmmN)ztnj-0P^C|RCO5Ga#m zNRw4Zmv!w~`P&&8g~coKnkVKDS?V78lHtQdwjFbr00>TmqMS0rPd>?g6=ELTVQ5eV z@o@A3xi#Oxl$n8hU(?FFJ*F>WZDmUSDz+A?`ghGQ zmXR}R#+oa-*7RlIj`zjItp7!%FhWL_$jAmg+*Mkjo1nM>8my(9!#J+)3Cz^^hyjQT zT>5AEJ;O$LEDUOK3ycFigBGt^)Bnh@iF)_dXNN)#$iL$Ue~2rM*U5#NUbxL@_QO%} zcu*_-7S=_L**Dh#B#6a$>HcuvL~yF%9vRO@QlpjOU+>byH;~vuY*LHE-AITAQmT*j zraVN3`zkmxTS9zxU{S1XJ8Ir_2zWcp<91V`?9ew`_mRa1!MNdbI@Szk98*7@CF8Z{ z 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�cZhMxC6SGwEJRvDhhA!imHf|q<%_eJ*^HiRm{m68tT3CLpoZy{zKfB@qur9yf z9tR3~#0ve{W?r_<521PNe%y$R+sz1uoTj5xcYO6&BVxe0`pTcl1*m3O8b%xg5; zxKLbpV9am2%%&92&O8sab(TLYH^Z}JLzp{`Bn-39F>{eRM)7W1iZkS_(O#7Bk@%z+ z#vUOY70mxiK2Ax9%J1<}aLM(&@-#k0p^V`lQ*t9cVkbSSUeNFxqM3s~Ml=zbDWt}m zK7QT}x%GZV;pvLro+BrylJ%Sw;2#aO|`jc#ReC=~;_ zq`p3xsSL~});D88L)^Em25OanCTk}|(hy)qPT}92P{Qd2L?}u02`5Tyri!|gI9QM8 zB%Um4;eZ%kCi}8hNuk{~=M4Z}Gkggts$3|BbBi!)LViihT0h8mhR|V}}g3n_41n61`A1(^-sGf8dnmle8tEWR>3g4*wpsy!8_W&A6( z4>~Sz6O_jaQyzPA6E`W6!9~w};^T#%^bHHhd{CjRNOrQi^T9!94!=(A_l}$TC#B7z zVl~U^hg}QdTq_E2P}*#GwrmPixbuL!Q5|SZ$z|tvorSJ!3gt~*>F1%CUF5ZVdT8IM zCV@&8fd7q6pn_R{Kj)aT{^YOz1lQvy#fCT&zF4uVnT><+D0S(=0!J= zVfauw#N-TSD?9MBV&sihV)i(-!0NNegK4pZST5byM_vd|>IW+Zn|{o|cjC7Q$=JIJCefz*ZpVR<8s`ZHM(K`fwST;WqIC zr#E1y(fIh^@mO`}M47uHMj|qOt`a#ExWy9Dty z7&my#9{4$#r>NY=GMY_EEMN&Ij{^#bJ#I_@y8;+cob_U;NmfW33A~j;)&sPNOuPqq@$|fd<@$*(>`t>Ct?#Y|cpuitGcfl)O&;k3MTc z+Qr1f4Q%wxfs3^ARL_afaRCCxz%;^<3+YjF?hytd9FhM8-F_bFQWX?kcKv%3VGKgQ z)U*FyYJ?}SZ}dVAddmO|4^HAm0|p`ER_JJ5gRIbFa9Fe7qM1!`p|=g^mb^8GwDi33 z%^*HG)vI<$%N62j9*4fq{*Qdg-B{vnWFZjq;1i5slf7QIweL)C6T?n~n9`21k%bq; zLPP4=r2CZveLg$; zG_xCvMl$#4I~_5w*#(e@Fa|7gdda8!vSUuJ%>MJF6F&Dgx)t`btk6<@lJUrW`0@(- zptMJ$W^=pLkir{NQ$||xH_`r^?!|Zd966%MWyN0n(g(gcljq#eg;-u)N?kEdt8jc7 zM0Ca@+{AH#XD0~midd|ZSMi&a&h7477&!A>YKugU3;#M(6=0MXnFRw zrIm0dO^cRzJ&)H@k1T)mnF+51WbMqyL+gu&A=OrDpI#M>6MHSB#)z%%c5feCozIiv z-Ozb4Q=6gUm0cH)O(?qnkuCH<4Uiv!COHzJO+c!Za6`3kMkPl^P-+-@}< zYk+437Lj<@L{~L@fTX6d=HR0Ft>7C7;lbBdNtVQHN`tjAR~DZH{7W#)*8unH<%Hlr zBzvR2t6G3(oIyTTq=;z_o5KU!h`9}J3G3WhATpF_a;-3_mre|PdD42-x?{@V{)C;d zScM?Tz9IsLbDu3yhOa)V+1;3stI%s*#10Qi9FWR&Eb^^4 zyM*;}6Flbp6Rm3`F)0ja_XawDA{jQKIjCJcb>t&PJ4~_F>@Vp(PuTi`D^IESZiap( zU7AT5ihWQIqFEx!sB4ohFAm%hZE#0K2^d6DZET;2eSH1V7fMaXX7`}vK|KfKk;6Ni zCz^i-)uD!9^QQF}ZeI+RZbsV!+xVc$0PQ)vX~=zENXgavRVPJ2eat|Gx7^p#R<&2* zOlt^ZHGWS3Cku(}<3knQ$XKAuN%eQW^GhJ~R}H*Rm`J1B8KN*`bnIC-~pN3^fx2uh*A-wjuh7;bZCs zMMBWsG}ihu!IXI)hiw+WZ$Hxr15qhPS=M@R&KNUPnAi>#4HE(SoH4{cuNZp>w0CXu z5bHT?`@&YLHxy;+Ml;v8bja$+1aVdC?Ic|=>N>*R2{a%Urx31a5n03I1Yt+;rE@_BMZZN%gcQ!Rf)63u+Qx+_KHRIwIZ zd=R&R^5%@Z1!@KYr?nEN!U>|)#+P}78+p(-isOyDZN95*sj@z6CI9x5Idw$b0ztd4 zG4w3rghbWbn9Fz2HR)X1=oU~VF>YeoZ{JalKR$a}u$%t_+WYEr+sK6O93%Yc`sFTJj-S2UT|PF zM~Y)?)(~~xP+`FTbLNIwuLO5DJ}axBoI3~FP_1OneYIwAicTGler$19C}Mw!79oae zEJvoO`rUy%_Y-gJF>2ZZ*Up8nhz{C(2Sh>@W(z7&?c;&7rY8`t7pI4=8i*CEw1)se zS;>Vs@+r<23>(i>Yf=Y(@EVq)vkLkvV-CR(pnxyRw!3G6df|MEXvt)pH@VMJsIocx}?@65} zuxXps^x>QD7C{!3YRZ78^{~spGeRmnc1EWlF>6^LeyKt+t`^8mnLGbLY-mk#p2EqA zw(7MkE=x@iy1X$h#)Kq|@aYE4D8mM4w3^C=*)6X!K+5QhurDr&+ zq9Y>R#x5**QzF)tZz!|xp=N|g4f_b)Vz}&ShEzttbm8}9dN@}S9Fp)pS8mvN?4XNZ z*WggYd2?{|3V1dbRgQlc;Q?cb#}IS&vNQ`#S^CAAqBi2%)+cL%?TWVqUR6H7h3)^b zXHLb|oAaRseVm}eu}g5)^&dA?V8Mc3?$q<67@Cn|GQeTU)xF@Ze~Pt#lOZx+1^%?I zYM?;PACKAzmogQGJ4Sh`#gie?915H?ij^{xjn!jAYe8zV*>R1U_lu-z+2nbNuG()! zxF@8#>B^LF+Cp_I)9vpj)iYN*60O@EH{?GHSOT>sDc#&P3|Yr-p=?neyDV?PqX^@J(+~Y@JI|%2$pgiUZ)29N_rnl*B&{h>PKD z-i^yj@zCIA2%$pkP{NZ|Vs|TlekDedSR9t9yn%Y=Zk$4ItPF9=k`kLTqMD{(rMq>j z&}*>4b5#!Iw;?|yR?c^SIa^`I{K+=wkAgAsfrCDOHmZ)efMT z9&u!0LlcUX1zqJ(+Y3B(+kS#voyh6_94Fl%$=YY`>1Vlx$y~_rd|huz3*VvZb0bPM z1hC-G*NH8bOmg37MrTmBr2>ZQjvD$;hNyyUgoD!%Wb=!%diaJkG$eF$D+ufFKI)@Z z5CJ0bM;mJ0+U2zX&(;bqDt)C{I~JeVscHcOsgIrw`UM^;n9N#?fmhj(H%0WPX!R`0 zq1-6^P~G7Z8})%RI$?@mofpne?+#|3$@P#h*5(Y`j)#8BlHYqX)jL+06ji#Dbz!B* zS>ygj$L*rLi1P(yXAmLlQMa8#z*r!-G6X1;NMsdF?+267*qw;vM=iQ}thoKa) z?i9*geI76Gm?MK;xWV+PCnPE|+?=KFYZgdwAHZ+Jj70_>1`JFNKBrjJztpt2akvRv z#>jN=h0Ceh%aqVl77|U5o NCi-$2+4h3W=AQDstLgv% literal 0 HcmV?d00001 diff --git a/MikroNUC/20260512/20260512010001-Config.rsc b/MikroNUC/20260512/20260512010001-Config.rsc new file mode 100644 index 0000000..95f6436 --- /dev/null +++ b/MikroNUC/20260512/20260512010001-Config.rsc @@ -0,0 +1,4778 @@ +# 2026-05-12 01:00:02 by RouterOS 7.22.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=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/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 +/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 +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/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 +/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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 :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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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="#\ + \r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \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\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN 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 manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes package-path=/tmpfs/capsman-packages +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/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 builtin-trust-store=fetch crl-download=yes crl-use=yes +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/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=Bridge-LAN \ + 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.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/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 disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +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-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/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 +/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" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" 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" 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." \ + 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-05-07 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 +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260512/20260512010001-Diff-Config.rsc b/MikroNUC/history/20260512/20260512010001-Diff-Config.rsc new file mode 100644 index 0000000..49a4611 --- /dev/null +++ b/MikroNUC/history/20260512/20260512010001-Diff-Config.rsc @@ -0,0 +1,8 @@ +828c828 +< \n:global CommitId \"main/635/33f8040a\";\r\ +--- +> \n:global CommitId \"main/633/2f6d4158\";\r\ +831c831 +< r: root, in 13:30:03 11.05.2026.\";\r\ +--- +> r: root, in 14:35:03 05.05.2026.\";\r\ -- 2.52.0