From b413913189b162326cb1f2dc5afc47a19d154ef6 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 1 Jul 2026 01:40:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 01 01:40:03. --- MikroMaster/tmp/Config.rsc | 0 .../20260701/20260701014001-Binary.backup | Bin 0 -> 383380 bytes MikroNUC/20260701/20260701014001-Config.rsc | 5360 +++++++++++++++++ .../20260701/20260701014001-Diff-Config.rsc | 3 + 4 files changed, 5363 insertions(+) create mode 100644 MikroMaster/tmp/Config.rsc create mode 100644 MikroNUC/20260701/20260701014001-Binary.backup create mode 100644 MikroNUC/20260701/20260701014001-Config.rsc create mode 100644 MikroNUC/history/20260701/20260701014001-Diff-Config.rsc diff --git a/MikroMaster/tmp/Config.rsc b/MikroMaster/tmp/Config.rsc new file mode 100644 index 0000000..e69de29 diff --git a/MikroNUC/20260701/20260701014001-Binary.backup b/MikroNUC/20260701/20260701014001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..eae654a7fe5c158253c6641adb2b370c1b20abcf GIT binary patch literal 383380 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

A)hx!*rp^Yc&k{q73J8?G{OaWRj|>WZ+pHta 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%0Ajk;V4r&5bHnFkvsQx{_C40(RRn8OhIdVW+4REu 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≪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%0DO@wh*cSqzD zK;m8N1}WYw@vz22g4H19_OxJkj@|(H5V5yEsrwje-w9mxe-+c`P%}h^vvW+$5opzN z*eyKS zC**NILd2riW+yFkNLIIx=9ablA>y?YrN-pWWCH>41BNy^7-hT_#0(^fm6h2}%wB4< z$RR02=Zr(ve(UOzryfSMb?P6*rcWIh=Esh_*lp!N1%Pnx53zRRKIJgG^RyToZlc?J5Fa96did7Vex#Edp5*?C=N3~QgD(~Ro zsVV{*(`)H9?vbIxU=a8k+@MZ(utW3%Dsm6`a4Ms{*K|^W@UvcN86jDyJn8U6n8rZEVKj)nMhyioLDz+%Kg`;L@ayL*?hSXF5!V+v_1cx?PJBq$li9Y)nNZv zO9x1lW)=|AzUn{aK$usz47^&mw?RQAK@q)#$9+1(%bmvgn^O|7E&2JtO-HkUBH^}F z2)VBk7^K&(K~+wUHGzocQHz-;n&exSnu${v|=3dNxJ}#k?IB)_%b* zO7l>$^nqfBOA4>O{j&LnG9jHwz{l8c5~qB_c8 zb_MC*;5zxv8Gr4`CtN>iYBkI{oKM44*x#KPAe%+&h6(?hZ?Xn8(^Q#@e`LTy8gKtp zt_!*b^HBi*KLEfSYiBdD*0~eqa@hoROPP`r^Vjr^uMm8aAdIHMfNRH3^Y;tJiqZD@ z*(v-i{MB~CN=U3KT-z`ZpNK&Tsd|Wr z^E-7c$8IQhp&FxvCZU)9ori{5=6H*Dmi6Vs%HlJQ1>07{L~E?<7UD@q3`X=wE=^N- z;zY0%Be?uc>B(|}eA0NHowc0eM9H`&+l@JEbLJkN1!Df8Gz1TugIW%SnI-PUHZzVZ zoBQc6K&K=sz$MRd=sa35sved)9%TTA34Bt{%1y8}Arnio1HQV<=-OCyiW5TZE=mdE z;?#Y}j3VZz17sXFl&KQ8p(mMNNqb+uL?+4xI_^y-|HH zJgA1D6FR4^i5>>!h)q*j;?=Z8}{#cvytq<(OKEn~4#J#CJ*s&8QlH*9h?Ct4j2*S#b zp3ZN%N&e{}1&Dx3;Ub*6HtjkqA6UMf78<8I|Ip>TJUhm)m~M2pM%9jdGA)udlO40~R46-%48Yj$zy$Ob$ zY;Way`LnY=4@U%z1~yz_T_|autyGIRD(awF0fScmO2~kgP0Zwy#H*SIf&S#aj%DV7 zdNPH@QWOdF=n#A;G(2x^XJ5@d?dCeXvj<%H#U4NHQ#tynK63hG~hTz6(_$TgK;mtjh zAK8X*0ooFgVOv46ZHUT><#;*o-$8OyY0_T{tbw$fa{OC^rub^$$7eB$mYg{*%WtQ* zJI6~w1X5aBe5^BtDUb&JVY%LPGL%8Kqp%N)%S81eV0J<%UV{Wow64+b6LCv?d$wHX;rMhGj1?5 zQI;LR1I66Z8xF(2?nWmj7SgeQ4e}gA35e0T`8Vg*H4fI-3q|1X)gKF`a*4kGP!WpH z{qrPxCu*~rzAQozT(GI}rweo%UuEfL%@5c>gCSGd2SS_AMaCLoyG^==W+7|GmR7r6 z=IRcQE^l2FT6)dQ;sQa(+(JKn%r`86joJ4bM2GVlnf~{@D)eha{H619w4UBxYe-HU z9l&TQYo6}Qv;_Pjxg#_|Fvjr`!ekWu zj6*R3S1w&IvY`;+8#dmCWs{54`+=*nnUGrak{m|AdGy4mYZn;q_pb4bRxTDl~;06zox;z-Quc8 zU=vwI=UUQn(AB7w3!Es%T>SF(k0*nw;Cdsnk3jVwSJ)AsYuQts43u*kJpmUEnpci(O--z{VH{j*J6N88GG2Tc4Mi5NK?i&CUlD~KF6$x&l48T+f{0qPYQ~ReA(IzufjK(Ts#{?ts`e5)E(PIMwllNf+ zQLBrVObU}*iF;mdf7y%5|AHYG>oNC&V?s2{CIgPy?H$l}y0zG~&4b!d`3pTby5rP> ztQwujOS0|@)NK2B3Otovfw{iHhtcH3q?u;X!R76U!zIQ0O#M5B&?fPwK7ymEQsJ+D zPZ(h>rK&!74WeBg+&mckq+}NEbYLQYGZ925n7$;(tk8P?g-y&3O^>zjD9%L~K~*{b zF)@(;_B_6Jx&feFS9aa(d9_HrqewL5&2}cH@5s zz>c?!ade}Vt%TJmSDkop3+;7+`@^ucP!3nrKOxi1`@R)RN>Hv(L<1DNe+3ZVNF@V} zdT3M7rSgYO_+tBi`TpG10juTs=f$H)D*X+EcR;nZ&l`AlM?Y5vBfvQutyEg9C z_(rh|-65!dulk4HZR^3`87VK0Hq__|wLF#}nyD8zgy2|0A3TZ;ZZav}Ht}MS=3^*E zHyK|}DF0rvFCI>mQslx!@x#qPmqy7~9>;?5N-K?hc&L2|0QbxJ5OZ=o>RI|3X7j#P zEi$nOLhDPnwAnvB4~dF8aT)Xv7mg6-Dx2 zL+Vx>0#GFPQrh)8G^{ewuciE+)1jNDN7oq%>3j7=4%aEmrH_GA{WWJ&*_(p zmm#KmqHJ&&qDOHN=c0vbtcy6!S@BI!QIKM0yKmRJN~KnxH)N5(wmGSrC}W6X<;+1o zY*>n2ZU}r74!O5MI2XHtyJ2RtXxr3Rh@K;1=C0D9#}FPODox$+o_(b+5yvihS1Pk# zn@IKx+JfGL=^DzH{P9 zTYIVR;;GR0ky%M|zR_lBE&ZvEx@Q+w#XBA+1=HrM%%3Jz?57@1CfkrKL^>6N!T z+msWLQSdJ~J3zDU9%8~XcyA5n@2CMI+ar9={^R$}r;ub~@2$j}vaV>L-5M)R)4+JR z_~)fUJ#mq_|18D4dhmI^nFE+(mXqGxAKeZg+a*N}*GXx&!RM@l#Jf<}zD!AS( z$^l%-a%yW0p6Iq#T5b0*BN`uyc?4VydFlyvS~u{s=di#a-|TtYEQX=U)m#RnC-krj z{@pr#hp0)hXPg#8JYIz#kvZk4PUiIWa;ohP*a=Rd4D=GO(UUR>UG(@zK6V&@B7iBk z4Qwm7M9dugAs$-r+vr}|9-Upzmz;D$3#GKw$=9SaVCkW+CtZ`^@;9&z4quv=X!rvJ z)tr5&L9RuK6x-vaQ;KzpPl;v3(iNr8zV~BLwrbuA%&V zr{lt#s4Sma_Ih^h7&-aE->wuw5=*CUtQZ+}jaw_&nv_p87!uFwY3|82dneob2ch`U zQentLG-+#l-9%v|^>5M}>16j_Q&~BGw2o~?Laqk|(ps(Bs*gCf)y;Ff_@hr%HCTS& z$O3=vqzcq_pHV#GV0uzyd~jRkD4jE@3&+8s{78OTO1`}1zQ1h>X18?3s@As18F2Tv z(*$p0bmFh+DUgf!Uqu-I4DkV6?eHQ%R5@Ysi~JB!YG@$;^q7U$r+M{=b*_ zwuE1u%w#RnKph(PR~G(TJIS_O`~iU>Glfvz@T`P$Fl`;9&>k ztxd&jG39O^glLf1w`X$8@~!mU8zEV_PVV#WrH%F74_58|lVoRkm!cIMq)=TekTfDkEGI)$qe4(>QG`-Q^Iv@CA! zjb{Hj_*r3`?hklIdFjp*TY@IF$y~AmzP)YpsWNGs5}1Ad%D&R+oG#nC1@d=1 zZY*mie(FK6jax#NDOif~K&|4e1u{l)y0w4?gq!F8#P~eRwwlC+)WzKDS_v1SHn+1| z3su%G{O!&-g+8@ai_p~p>NO1_e-WzOYi-H1x@zzK#iQidZb4PNKJdMs$n-2k-aL8_ ztu`Vv&O~Q$y9LRUr<`~7DA*`C4(Q>vZ|TI$e7^$llL>q{qR zJYs@Ne(%lmvkgg6rrc_h#>%RATz+|qg32uXX22Jr`RWRlJc#e5Rufw{6i(#M%|kvv z3Hb71v$|??-JO;?^wJY4go8<8jaABTur82D;Q3y~2QU)YfnldLjyQ|~m7oCy-F6+! z0mbL&!A6;YjZNQcmPDZ+v(bLU1vj)_1`^j-k+y5%g27sdE+6fBhQ4f|brO__$Wn09-6 zs&tw&9nY~U*AJlbM=N$wBgL&?_%xo%`?D28o=i)gQF}hTh-*%;#_s}wWb?Mm2ZE+> zs!+r_A}tW`-Zb|xZh9g}oe?5A7;FBCN*_Hr0M(9fs>L4~V)U=Ir0VSnv_TP!>BwH9 zYq8>sR6p|4qvkoyr1Xk#91+u2z5$6UZQLpPz((Me9<1X>^ABqPbo+ND|D$xCx<;^V z?va*k627hY8oYUOJ}3Un$M4@g>GtYodM$2V6h!)CvM%=AHjtWKHAwm~FoZH}56jkB zhx_ne33UAOrD1u`^#v_~+xl*r?)r?>P9cnY%#q4PlLl+GH;{oT&iTD|Cc8dbV0x&- zTtFAZD?2z|EdJ?P8lxY_^Di)ete>PLh(=Yh=}UT7=H)gLm<#O-*8h#1u?2-H$Z#KP zTyVc4Wz79EPt&nakEQ$X$3$*cA1W?FGL>3x(2MJ^yE6c@B*5X@?@y_IjQJJw0`Uo> zlD}Z4+t9B_#)j}3TD!G1PkERI7TgLuuUc!^Xi4VfYlx+Q;ziQ=zoL#g)TAQSfz$wXtW~oO<*wo$1QB-^KCK0OH zo4OuI64#RTIS+n)0YQ0r#H?GZ5MV4oUuDXwDis0U4IxVcXnH2zA(BD;d73k1@MvJL z7g&~k$=mWZF{jOdL_YkLM^lI9q%xmE{j*>U6oq9i;ci+^YWk4L4b-w4rS?zt?WbJ6 zZEw^}6kk~~8wS#JM+482JoH{BF~U=QgfLJ{AxfMpu*H!fI%8kRme~J-a#w24QWAdK z?#7DBp|7qUnlc*Pe8P#I5Cq}xc>Mvt%9U4YHf|P+?1!B%_LzJ*|FEOIqqWyt;s{Z; zzok$Lj~=i@Rae>UCm-FDFm&fgsQ~O$K+{C%EP-~AJutjr-yJKMCBm%*2<{%O z`^e?ZA)`#)=PZXgj%}?KGB!4m%YBbNBTBtCZqC zOPoVX390BgJG-w;2fdKB?FG%!N~EQD+F|-!h90F*3kYPvl}pzNnaI@T0s^~ zY&MQ!=zqccio_eNTR9r`3PHn3yy&pNJ(wY_c(1Sm!%Fzb4$kmRD!d%5aigUD(NtKD z3Ee>c%|LbVocPpfRd8Qewr1WkQu$e@v#k93R!_6Ucp(VUjloVN?Z^#2ev(2UzV{96B2Eu4ji)K7WPVy5PPe$koYwJConmU+UJs_r(al|MXm6i$DvKTSUP zsCffl+4xBo)Z|ny?B&e@qbSQ;g_Q>EYxoe+vU;&m`aM$1aIR}nxv1W}(tj|Mg867k zX6#$N(cqJrHboCDuAF|7sMvC{jmvpxAC1X*=%xifvk$zH`o9svkhq7c} zRqfe>9{>3qFG86C+}25M!{J6Y1)A^2_S z+41q~0hwCf6#g z2v#H{;Oj(htzTMxV*6k2@&N^<S|C9n{>u(Wh|jR)c4tFJC!XZwwY6ed zKmMf=&YoI0mzgGJ5J%y04f<`3a%7z=rU(LcXTSJa}XfZk?RF<>k@Xa z9i3wihW(FN3Le-s(^FfJFzMN>Q~@ZJxX56jmG>5Omx!Q}6tu3#oZr>xA)q?zXOU}& zdk9g$+3MxDf=xH~{gbU}sbpCQuBPVGVf23jv!-x`dI3m_Mg;fNJRaJI#E#}nIM$Sp zIo-pYOZk5b6d!T#d0*kq{(SF0{46V7ruI5Tawb`oR0_LYKauBA%U$3X7NHMJW>f|J z;P0uU&Kqy=>TxcsjFR}RzBF0nuZLG=cB`zcr_7)6ShR2WOR)(PB6ZkC(JDB6?WE4gn37QxaG&%mpl4eEgT)8&nC{wy04& zye?0<4LZtG(d0@oPK>o>gP>6$N+D8z=X@=UFAql+1al!xFIW5)6mf|BX^yetpU=Tv zG(HdsBa<(8QJBo5<>s^WKn6+$LlcfW>sbS@dAHiT(jTPZ25dLfZ>~RLZ8{dX@tx^+ z8mFj`*NL(P=TBUd2-g(@luq(ajxix}g#6QK{dGsDgRm=;1WVBZ-t|GY&0os;b94J? zy;j}Sk^n8%<3#LsA?YI@1zY`VW4;8^W--tb4CjkJ33OTa>*5dBD79uqAa`^}%Jt-! zt1CVU`$i4)31^QJi*dC2gC<)$@}=lFwOso9N=Fu1ZX}v_aPL{Ue2eT_ahR+fo!$;c z<1~7PgFA3=21*-RNFPKd4 z-9%FL0nm=>+%Y|ehWhh z!-LV0Ce7z8p!=o2xVNyc+;pm&I!U{Q=Yjik=fSCM%J`vcm(wbWn3MB@-g3otTo{iU z4H(tQm|H;!))X&L1_OMCWZq~G{UqZ&xb_mi9x|7sC!}Z(hOa3R%@NlLJ{SzZ1m4cf z9UCsMi7B@|R~^Y+lfDrRD3dK``l~g3+wZ_GoP*j;ZIaEQgriBVg*FpGg#z_%oSn0` z+uJjJAloC7ou^_TOXpnWN2`>Go%iVIscb3uQw!)KDvdEQFCwu$2=IigYF#z{KCy*H zb&d;AYdZm$p4+9xY!a_At`o|TBME=UL}vjS8GUOHYeu2=x$#yb$y0z%-uqwD1O8|h zy>@BA1Fb~mF*Nqw?IO_d@v>8XXCt(_*hF^!mNwebypxueEl0-3&Qv{yIh!GhfKI5N z4wv7`?c1ODiJtw7^2D-{E z?82eBGg5}Yx>Aodl8@HCM69@`&UlpLF6Ozz8)h;|@MB`nR&l?(Np9<223Bs}H3cX2 z&EMGKq@*jQ^Dql+Vw$eY(F!~Rnrx=NQ)Tj&_Lmkf$`o$2a;b9ZAkC^m&O5?#r`qm% z1Q%9eX0CaMbCBv+D4{6$_DaL514!hVkHIUF+JGu19+C(`pJ5ve+Pt;0M2(O#2)1Pv=zZCWoB5>e?)!rk$WdPZv+0t18S{9B-@Lk}6{vUelQmOQ#S7 z`I6*n3Hyn!`>6@Bomh(*sX3$vAo#tvjQHVwDCetDbcBWcXXIRH{0JD9IkZyQLjzyy z{mPu0T^FkNscNwmO2bST@VfRYF{XDQ@IA>5>=gperYAIbt_QcAeXB9%Od`&zQG~ws z-O)DmRhnD9Bg4`~fkf|4MjS|(&nTIZ3pYCMe0=BYLIHYnC27>0ia_{%r_UDyB@ZZd zabSLCZ{BE`N<6a%aLuWj*hb_k06)Ba#6DBR^~&iVbYoh>S*#$t6%V*hycv_b*@~4) zt&S-+Iira_6aajClSwiPvWDi+&&hUUV)ific#U!AR)Hf&y zF7`!CMkH*uq>tH-DF^0#pym1~5X1N3l7 zK(6>IZ=_i9b`8ud1pR19`ZA--FSV+HPqfO@@ns}gtJv?-dN^g-K8n4QjbLDLCLJNa9LAH0+_vzQklA4nN=)Xu|0y?J^8crl2jZU6&WS%7b^42$1s z5l)MM@}*jk%K8=AohAVkM^X_cB@aMzySm5-IG$#~mvP-b2+;|OiqISLWmgs{!A~Av z@Zt`rB{Xk*55z0bve17bNxZ~iBv^5Vw48zLE;aI_H}p@|8rxA(YoG=Bx6fN>$}tp^jY}(q_&O`yhIvf6}?e-ia#h_ z&tAUS)xnuQBu69z`o+`Oq``0ySiwlz`i+Z#L8S&>%wU)YARxl)+kDZY^M;KxK;BiO zSCfKMHGQjjW;qY5-Qshkex=;AX`^7D$Pqj1+e|_{hEV~$$+0s*NLp^j(6_?4L2ojZ z;_}z5$IS*Ye?b zfx)OU*Zw)3#__wV5+~;H7;O5bb>X{cqXYa?B(2p#v$Dq75KvRA)O18vOq*>F&lnak zh}dD}ycV=KF3H8)3L}(iD5>pAM1lzmihC<(XgI7yDR6ZwT8(aS1;F_IaRxX~^F!dG z%|nu#(YimzbSD7wq0)Ojxe>+k=tEM#Wad83#9$iPa=@7UiF4{O1fTX(GY_;_&&$jX z;M7b*s?5??bw@R&+4QdSj7Etc?s9G7h;WU@_&0Ytww&YWW>_5J>$Ep@iXAtcU+TMC z#`|r}VN{ofO)oQcCtT9QNKyq;T6{f6d_GKPPXFTKMb(S3OGL)!LF!S*JCv@t5;oet z%6Q?58D}t}Km%q=*al;Ak~C&-7FxIoXM1u1S`n`CsFmHaFrEmE*!D1dNlofDY5>rz zxVcVBS2D1U^|>Yz<~f3&aV=r_(VWg_b_OkdT;~>h(%WZ_wzFy+rvQ=ELT5jW{laHMcJ(vh1nOPHWrDU@*m#x-k{ z$*=LvUAAn!L^_CkzgLz19c=O#6BdC@ZX6hk&;q{%Rw;Xp(jsj)?r*9?Z+bT>Lmn3;5~RGqDiU(HY5Xci>~ zG*91CPzX%OK{^fQ*$cN6ZnTyx0${-||30?zNt~D1UDNWqyXuSTkJDKH&2Sgwgzs); z$J3_0Rv^B*n5U*$ylUj%^M{ubi%yvrYBbZtjIbz0>D)AQXeE*K-$z1?heFcfU$^mZ z_F`Sa8`#IDV1)>eJiPER4xjEs|(@nTz*yxsNXzuN!H2JEZ$l?AMxFE3*7K=zyhm~Mr9|e|mT>&|sf{p}T|90po=4_8S;b1RmmV%N|*mDT7 zX|MiD6akwtxngcw*QfKnpI`=csLS*X%bUZWs76RbKxIO?Ntp81zGM{LRxVh#-$Tz+ z?%uU#m|_NH5;D_y*z-4`bx)iLC2f~2lkj}pT1+Tt608QKIQm!yx&9r!8rn6;Pefpg zQ{5`C6x>I>`w!U6%j(-;;^Nb8>xSWIk^|YTZFfAbLZJ9qj^!+wvU`zSdcJrP^SeJ@C zjGm4)PkWNmsoO-0#if_Phc{>`*vTWMsMrWP8WxDNo6gd{4tFC|NuR~pPaICB$&Yr#<0TSj zjcP=kQ&VyA`|4-9ZMb2&ri^5`>dr%nXi1oW3=TM{E!ULtQIlAmI|Fztdl3BJI~Xqo zPJ1(%ge0ebQu))~SHYBq4wb#LY*F27buDxI5iz3f2?S_(JwB>|s+Y5~#OyrbZVVTA zuu*Jl%$B>s+0E6Y`~`}h{$GV?$HfH$>w}-fM~SxV!cXI~_W#?*d5A^y9?yIGa60$_ zjq`|f>z8A}2Uzn6R#+jOz8bqQ^96dFv3V$FbB%7(J{Dar2PmfrlEa$Z)rR&wp*zT& z>E#KncC$w~x{t&-RB;6}wc^n}kBNKBLa829WOG`w>4q(bol?q-q)Y;5Qs(_NGDZ)6 zJ;OprqoHPfxamG*od}pcr)z}_VN*hMNwP^+_I`=r!t?a3Px^?Ot#6##*E2&q5~u zyA&}>K5q|?pm*Boh5ZWGw;BgS~sw__^P{pIw&%-9KqW@P|kjPTW3JFbi6C0 zogZJ;9qgI0X9Z| zpXEzxg?NOk0!LOKMrl*LH@``OPPSQ?f~1z+%i2Q?D-3+LjgL3aN@Dd{F%C47T8Tc3 zvAyg+zo$S--Tq<{;pP{Mg?qr%8_ubA#C2-4ZTH|e3F4>E&-=;??2p1xdpHJo!sdSf zP5D7zJobm@CjnA$$9~`_)nPj{+OHt1x_P^~ze~QA=-(d=*6eAxn8FOB;D_Mvtt$C( zYcNMRex!2!=er#kJmNgpaDLcD5?#EoNZ^`D;g(b10s1DvL;@u4@<}B4!3M$o;r;t4 zZZi(zAF8;RN13}$ao;-EHBVM!4YW}5*B~4A;d-DD`Z!2SMChhXKm))?v1(pWbQRLN zkwRXeKI~)LKC`-+N;`;fhiJ4yTqp~3HUnF@x6TH;A~*(aa(ouINH=w5e(|{w8%|`= zQLZvk^R4P)-ZD$7gCK^ws+Ra8y6@TORfT(G1SDXup8~Z;B76*FO^YrH3IXM=bGmlW z2LFb15JhX9cjGqO)~IQaC*7uF@7neBGZ9%AVbN2_vDj9pAhuP#1$kdp+^pm#J2ukN zs&ZeiigmN!ND{DsUH|D^bvT>{jXpuLOwHr5evG%R(0`xZ8{>|QI~0a_D7@_lQtw#| z%L$?~a;J7BpPIfKTMYum&c-6fx_+h+P0$bigO6*kiYCt#AlSjgTbE9jC{x`xLXRoc zDt)RGpdibEH3=cGOj`8HztV8opeG_AsDTDO&s!WP&}G49fzeM$kLc-oLbO@9wIfak zTA5)CKUwwJ&5{kd2GGU3D>7MODr_0S*)gDBZLPJRZU8;35Dw@x2DNJx+KjZzMJVPC}PS}8#c8%Oa zGdtE0`@fU%{Qs3w1n0XxzR9A^#g|ZSXn(@ZR3x%-k3L1ewU#Mn_;Cd<$=|~!U`QJ+ zoatJ|)5=gc1sSy7qln^gCz41pEDYK=*0%l3C!ex{MjC$I#0@^*QfQAkFu|r4ahyf-)Kp_5?<1NKs|c_XsO=$?TJ8LxXHU5=)Ia7tK*x+Fu@cB7@M-9 z;yJafs6uKdWo!Gn})+BBMDuBAo+bI}y-nSki=LIP9 zg0wCrhp~6b+%WI5AVW`#IH~M+;gK`5F@di2ZAY98qHA7kMzLpLJIvz=qk&0xe69je zjZqVQFND4{;ysS8LJwu_7$`3KlnfWmhCZf-3G(Cp>lI```_0_}Zt`M0-rb_!qk-Ww(W#%giook=}S~)()?!-^E zsSyvW;dqphL;)zO=@frZ`dIL0OMq7@e?H&9@Yq~P%l+^ytZ5}2`oj&S44nmP&u_dd zdhe;8$|=<+CfBldz!GN zH`gsosJ-4cl??dGHi?wUY69g{;BEjyJ0BaXNz2Sck(MiG5gShlTJP2hdunD&$kpI@ zTUPtbOK|M*gs0~|4e-T|ayCZ6;!Il!f}#{npMtRO`LVghCthTVno9NHCi=@5D@*Iu zmzv@@MUeW~Xxw};3-eHf3HU%J<%qmFnumtZ=CpI*7T6HAt}8)IrK&5P?LwoKv86_Jk@Hf?SJEOGNTl*mg^&D?n0t4CEYTyMGlf(?JUtG(r)QScy0p(`Bm3sfeO5{ zf0L9s_X@-nP@^9*anow#_~-Cxzh`1Hz=4L>PcDnV?@dncjUXi^CkPa~5z}#RQ@zpX zgA7W;JZfg6pk>+1m=2r2>RrwK2uS%6xNp`qFz(g*uDK~~gTjqY*I!4dm|FFALz0|A z)kpdi`&mr2or_PYeRqBh1kUJ%n-jhzy^;K7O)+CZrLZ0(B~PSlGT6L+ zVt%tIMR?a2ej{p6qvrfB&eAh$cVWtzRBa(d3{OcZA@J*$<&2_bLY(}J9^!sz-;YTB z8>Cy(r>|X4wOf$BBwC@?{Zy(KKD1%E^H@H98l0N8%GK z&rKNrwi(8l!9LAN%?YNd?6y$_Y?Fze0LxSnxa5E3Fp8tisl?)mSbTlKz3Lijr6J)q zR6rNjF}#2TYT-}rr(MOA(1nwX6o%MqynhS9Cc z1cAsk&G>34saGMq<4=F*qc?u8^#%;b-x(vy2=ziXC2{|`N~9cTmredNP}#cnoXi*& zE~{p6SFoA%3_Nk0JV8aldcbR0QedI{?8PqOMJZwN zbSr+sXxRzb^>aQ0tWm4{SSIL{mMoub#l&!}+Z;B;1*UiQA@p`Tk3aM8+CNUFSSc^o zCQ2%`k5;uN$fHG+)05*vuZU;N;l-UBDOr-b)q3K!K|v%?L(ZiI_ycsufSxDz3Zrt_ z9*eBAw#m03gS_23#WCh@fTAe5*jpBtCq&>q+Iva`>AbcqeS_5!d>z*FQ%w^^WvRq2 zFooflc-f@b=w2tSHUSUfZ=2*HqiDKlA3E3MXZ;-okSnLp(vFGYicjyWNGJ*hO@Jg3 zNE^Fy(X77gmjPdV{4U1+z|n>+CGii@#O`^ag5ECExrrpig1*c|BGAx&G`B#hth8{H z<{IS6e`;j6y`)|;A@k7wg)f3Qi>@lM5i>i}#ke|CaJd&yPS?vV6OLr#0PF@m62JpZ z@JnGD$~>^d`Rky`pSxxtqf6^ip~qPAL<^fPxIk1rxY~9YGcdz9jHHUwPED z5-_I;9#$TyjImGw0>31lh;@>zwu`#}6<^>*B#E>=TIf%H7;VFP$aPGzR#ngn5%0r* zEykMyv6!CU!kPi2ixao~zL|~>u2oj@y|Y3}n~DTvoYkj{5`7#`v%)^)7%H&f!B8No zF4p)4ngbOdDvB$TmQ(bT8!^Wbk+f-Fv`a})giz9&Mx?A5-(pMV>GSd56a9` zV19`lYkA6^uf-p5^en%Iqi={vJ^~|3O;1V6HR9_m3v9?~>X!EDmWDjqc;FdZ+tBnp|D~{$ zXam2KNq`$D_F(G=*Sb$8io@^D0=t}=lEM7(!#EW}N^D}aumUsG>8Xl-da(ocs`f_s z^AMTxth%l23NCc&cSZ|V{H1Cs5U${SRJ*SpyBnOKF@mw8e#T+P%L>3jrd7=)DeKkHe*!_OBvs&Eln_?X0gJz zus%HuA+r1sS^q(j_bmO#OnHiA$R`7z@QW#PB@QyzZ?UKZ> z-pa3;$Q1*8x!Xt)uk^E#cuJ{i&5-GsA+sLi>e}=K|1vURCO_+Z0S$ne#sWKywkMt< zF7>kNIU43eV(UoR1;usZ_~x5C|B73}f^2uvT-T9!{%HSR)QJOn zA1xKF5XemgSd8<4(cXuYs00FOt@tD_m^l%6Hr5fK^TYMwf5ykf+G#0ncIpQY@X4H+ zcQIq9E$D6OO;*DgaJ-*2D}@#je0G%XRqR~SIJ*cb;&^N>9s@ftwD2mY!v5%P5D=QA zYQ_uMw0Nryky%Qxn#yF1Z*?*byXg}`MK>~-SV?QOa~GukxZ!pb@S}#q!!}O*h)t0b z>Bcid%7RXp>kB;jB9%IQkT>)k#w+gS zSpn3zCCZm1>&J=eo;=@dP$!p-D-fD=N(6VFJdSS(mb64SiJfTy-ux3|f!1;0M-s7X z{qaDASu}-~_y|sybt2lTXHc0r*qkaA+@Mpw|CTi? z?Yx)$i_Jbj*~)Yk$Omm_RINY9t<{dRSpcpVFFmoeFO9N2y+h5X!`>licTRr%tZl#PmvaLN%7y3c8ETnS!+L(`tf~hJclB}o>|J9F8nOtD%vry@85OvRlo0E#N|t*YtHyPH`9 zf8%%_>>H}{lgWG;yb=1AHo9J96oD{K#@H%ZzKFfq+xY=>`SkN}OV_yaZJN%LY?Mg7 z&DN5!U(Zg9x=hsO4Ms>Cwuckv>6oiW!SW5Lwi`6?s`P5sXNJn2&nE|kqg8i=i_LkDdgDI-iNtNQy$X~Tp*V1io4Tt{tUB~j^p zUPIOQ$(13KBMW`%p|;4%mbsDgHXyP7RAyXRXGZb;2<#1IfrGAiC<>=$Pn|^46QTc> z?rp-iM-WTf+-<#fo4)ee?od&-(BWss?V>PdnDGyuMj-SladG`R=@jdrN};QLUpjn% zdV8|1WxrgeV^{qSKeWCCu*usxs!k6{uCtrZBk%FG&8C2Ok-{H#(FA!5nVt33xkkX$13^583Ju9X=m*F(-*{UnHGQHk;q~yX3F?y0jU!5qk)d)2P?=Mq>KG5KPxV^A6jtnYgIqwDsZphytkchTNxb@9E|cN1S3238 zxz3p7yvz>>ofCiTwfO8-u#y)@_ZEeX7IFAIb=9is_U)g7z2De^>=bHz+P$QIfmkFZ zgSroPdc`;vdmh*Bq+HwHx+-SEQ1R2l9`r+eqPa~4>$RLBJ+fdo7>favHO?|`?h`~wV4Qqy4W72$I<~IL_p*2_E>I~H zaUG%iTjPV>hhu>*G#;0}>pc29r4NxAxew^oT)+U+S~?GF2ahA`<{gO>+1NrbS7bsW z`BW5R4Ux}CA_%Z3FXjpxvhX$AmL~IFDfwmtVse#98#G8xdvZ)v;eoiL)#!_ zj^Pt(pjyXxXq8#W;50Z)xOeu80chF#4KxRLU)BThKy`}`El}|uaWeHL)Td$$i)3+n zR<15W2M&K(GB0`3Cn&{zy$Wb)qr1I3^Y$<*|Bbx5H%b~(7P-mY>BYpXabI?t$0C$I zFy?{5IT7Sp`P7Bo19~Q+8wuOfDD{NUJcZpN67>#o^Ve1<;JxzQxSsRKW=+)m56^41 zj3}N`p)Wjk0Y_e+o%QHT%@#6lBBU~U={(}|V@J&tF>DF)RxZwoojUS6&ozhch2XRZ zvYY9-CH@UM1p&M0WTx_oyOA4(R5aw9HE5&9eLkW)&e4Q#GyvGNsdEN(eS23G_-QFC zD!0FY<>hIA-V0ty0--V|#L0=8@eK*-vFg>l>=JpoOVRmJE&N!%W|uF`ZKB$s|99xEu^|~*B-BwLZvHy-D3A>6=&|+=^1~(3)$?d|J}+0piZZ!u zwR!i%rfGb~=JO>WQx)BMZ;WmF3F*Ixn`p~E`*`Ve`b@U>>xuP?iuSL&%)5|(#SsR{ zE&WB?8)df$VWn>TT|5PL*n~8N=|Fr0bTBUiXrpv>2Mrk7!wnq zQj8ZR-hv*EQUyT?W4#{au@x|?@gpxvrW*P31{n21B_JRdJ^Oty=AG3TdfRV72cjZ2ez~g_aNEfkQlQ zNQ)F_I^Ba-$T-+48mE;Fn}0c#eM*kG*I%pVs9&MF9N6Hl36+LbDlELm$lt7>%_Prn zx2)|Fokw9_3carrtbpEP1qeev>lFY@mSgHE*w58Yxs2AVcM20VV&`Y$i3F_^0`LLtEi znKNWv-GE{l!P&W<%H9^LfR8|l++`3(ff}Mo9Pa&jW z(MRH;BW5l5a$sNfAnLj+rF;g>|nK^vZ35gNH4fZe=4!Dj3zV=`Mff6-6p}`}}%kFYu70KVMS% zEY?HHl2?e^n9)NXuEC}j9q39yb?<2e-H7UM%ZWTb@PWw8W%IIh$H954k84)>Hz!fFL{CCQDnuB;RJ5Gzj!tN7rJm3#y`} ztsx`myyUVN-L1<&K75y`6FuL;dd3p#ll?K%K!?gw0hh^Ld7pM4F~Xj;o1lWlYm`MY zcReoR_(PTZGwGk1m?#$#O9icc{Le8e-Yz#eY9lWcz(O{J@1j2p5dS(}(!K_9qZ z%vJ7s-y-CxFWE+?njX}^3HYXlUl>x-VFsBZ|3aZN+ZjwbHu!7ZM9O&l!#!2mB?j&i zuBjPqj&_!^^X7KH!hH5c^ftYx52;ku4q~_wOlHLW z`g=q~nE>ep)Ldbu;Wc<+O@9Q(;mc}8ksXj2!({b0DCDGbxYVQCD4kTcn_s^@C|NN` zXAcji#k4HU%{N3!w)>Iii>`9y@*C1)#Fzy42#V0&I9vt*MY4-j-}l8WcSH6Ju3Cy- zLIwY$_>tyQUw081547Mp)|UGrAbpRqwY~}aQEve((~+eL6Ue?Os3q>H&k+gS|5I}< zFnA*q{~4%(x{8+jFBbS7MRRy7&Xe_hii2@}dcm(JRlE@Q+s;JAhc2x;e zf^DiJzOEX-eHoQ^Wwq!r%HtBZ@pyqvC*d% z)Da*bf5FM+b$88h-uQ6*ev8a&90xpAf%0!PpANX-IzN@>^lhX^yr4eqsbjHfF0S;` z?NPm+I@B!Y;Kdqndas0f;_Z|pdw?VbvnO)u1PiV&?&CS4Zy=@f=p7G($3mU&X5lgN ztfI`R$QI3sE>g3|!jn%e5Gl{Um#0;=(PDdrI74i>hdu~ahE1UKs-$jg+A{N*FQ?VQ zw%;<%mgmhdxTu75b#6AcIMM4-I3@8@6SI!dEd`3BUsdS>KFf<;owAZPOG<4O28@{K z-yTZl_0Y1`ejBCf3Gj|t7Ic1N=YIT_>_8~echz!$)shMkW?Vb+_rx?*UeuZdY+)97 z0Z|VX*m#1#r77A7;l%k=-T18z_Jkpi694gzFTxU9H_4Y~;>5AVH422@GYl@-YF_ps zSm4el$g2Z3P>?RsQhPLAM3osIJw-OEqhZb54V)3myC!F4U}XId|ezhgvX8}@@qL%5Ej^JhfGg3SP#G(vDh^KldWXYaos1ntMFIBNI{WaSEUemgWvXb%H8Qu|8o z%cDKxz6NM-ai(w5T`#PRIkxm|Pw^PCy{w>BnOmFzgBaZpk_GYRAb%{`fmh)>Siq!H51Tz8?2F zjI=kP z>WAd3uG1SmQ_WaQa0k-CE`kE?=A1tohJJ_o*OvqYts>PM_!><0*$qMAS&uHWXrd>y z>0#IGB7%y`kkIw@_7^#EZgGi2uBiGbyO~5X^Ffcj`FM=_^|`-U_NWj*ImXy^^C$hJoS>zcAw_I09)mQ- zBaIKXve(!$Pzh9uqC`{z0FNY@=F`4Dul|bv+VKj`?K#*0JoPk%P3vS2S(&8qOa}>r zXO*gbp=7Xn)Icia3kmOJ_Mgb!e{|LAworXfM@gfzghPVxYAU+Voxkfdm|1bnb2ukK z`#J42nM{m18~ea#Y4qh)Mf=O2-DOec*7Z`aJ`0F=ytrJ1WnLn(v+S36eQ;u$sg^ zj$YdM^s6J;NUWH*sbdd_RuXRUU0Om_gpj)vPo{wh`(u$!qW4`H%$r+RCMcqTiTF1b z5aSZbuu>P|-J<<6a_6TESym6{Y>8)ZnefiL##t4@s$2cs-Dui6F`?RgKhX&1RpfLIYVdfgW75?CmqGCk^v2RYpgPD`JkifcBR^Z+En^tbQR}uHazy)bJ z!?s#KFz?7YWsA-C@JVsBbl$Ram4W$piG$+CJN>~&%C1fXqFHw{SZ9f8c$rP;jmxu4 z%$x<49MkRRzR$4f-8N!ee`w zX^XrSSMyPku;^DkWKPEDhw@UB-!@1E>Y2Awq9GEu8={Km9l-JjF{0qicNabZnAae_ zJF|}!mu<&hxZqL>x&Y$%CN$`WN$D6SwJ?6VLS@G^Z*d4{Zp`;V$_=NSdcwpGFS(do zj2daEF_WX5OZiB@8NMt^H1i+YPLr3wfSYlaJY!>63;(nN!Qjs(Ffy|4wqV>aKE)6E zDUOo2P;4mQ{$bAVwJ#lL9N5#N(PoO#MNx@=zM|eZAt?=7q`QwC23oQEQta3JTsU_p z3*{rFllQJKOa@#w987aoBpFJczNG)cK2z9@rc7z|$w_`Ur*V_$5_ROJpwh$nD&hJE zy8i}?bKv#2toy|=!Q5|;^A-z@j@5CbP(m(z-rqbpnL%^{#MgU?G+cNv49zsntI;XZ zubF}ZFyc%VkdBQ~0b5b5^(wvpNly3D#CaSQ#=3<%W=5#{3=d6#l?mSQgI{h5?}UyY z(@=}vJ!r4lhoLEA{t9fdVH=zxO`5&+6xl@9>obM4NK5-kokN9wvnj8{eL&Y*)ViXZ zaM|1n)&7|;s=Qxmi|;Le%cm($c>1%!%HBbC>OylgEarmD(QHC; zD;We>q8#mE7oT}dE7U>^_{*+I511clHb4CA6(^k`JV#{W5l6r_8Lf3RSq0+cVY-xnGeRnZ}D#te(pKD5tOx zHt9_$I)|m5G2ir?h!m2~gcSJ+s*0kA&zli03YxEW6VP7MJ3+&ey|d>8Mt*=f5Ll7_ zTh3z_8R)_h15a#K((Oq*;?T~Gc1tD98L|cz;Fp{feW(@JuE7iz95@uas2T+Qfv$4( zfGnM}owJAkyESZbkEwE+Cep;(1@tN|VaJLMZKg55$F~(e9`9y~)2foDlZQe0^Q3*qmX6N6vPIYK4aGK+~L7=}T z&vOlc0t#}%A<{$fZttvCC94KYyS0x6l!Z!{0612=^shQVfwuN~!7DMLH``X3ybtaIsx#gmuWuV3K?8@lIe-dPl`(bNVI>-U&@E37* z?1w}G{}_l(c2}N5duIgnw%(tT+SG2<^E8$At>zE{pfz#b<2?ohPwJ{SS;3(Y_1J=` z1?2#QSXMHc6zu5;*4=vwDo~po17v49D~6tbsHBfSaiurTctJSF=C~t2Ur>YQ#;7kU zF8tf&r*12uPA4c$aM1B&$AcNeC&1nIDg9(gbZfrMH*4WUgE35&odx)#sMOilPdvCX zWVH;$aOm!2)QuWdCob~6&>@MCO0cBcpG_jRuMBAKvd=Ia>^-p^MEBaG2^NBZSiI$s zIxYKDA=4+ZBElG=7*HiOah`$ZJijSYmR$g%A$0w*2iQK%0;S72qy5U+E+S`mvBZr7 z81Lgg5xaJkwr312Rm+Gc>1=2NbJ}CFh3>LaRuOLb5nFk~ytijNUd>+RgS<%hKc%~h z+&*txy4g~lB1q*bXxajRHD%mer0P$&;o5Owzh1(O{aWVmQ&qENVQWZg9rb01rHQsX=h)uem?;N%1Zy*Baam8f-=*oI*6`#)=dT&PMI#U`A%kXj1H zuR~1bD|zTL`@$?hwZrnD`r!7UKEv?1Y;AYrAYx9hfMOnMgqoTCBy!U<|r0$8Sl zJB=df%3EFe%v{}Cl#XF=EQ*lo8YDJ|cZu$XmPT9{J$Sjw9Z!hDLImK+w_TW_CmQ)O;%|3e`#Uh}&ro>lf&jhCq>;GTR_7~`*{XQlCs|>^uTIxvu9{T zXwJu{*>fIBL>V<;TuTc$(B%v3Fr=Ihz2xBt0Ep{pf`|W9g9_Q7HgF(~0KH^nWIJt% zX(^F8TpfdO!-3)2KclL;>|%o0GyNw#LJCjOyh=K8QHHH6V=q)#2Wt_~p|G{s9|v8p zMf~-7Ec@)p24OXjL}N!?=Oc$OKh#8Ebohzj6MmbUnS0xJ{s!$!L7ShwUlg4uzBVzwAnwN%IDq;M~$~H02 zp8)!H>cx$c>cJA+r8GRd9Crot4!%~6-SwrNj7awCx()%uVOhd`uk_FX|8&o`zrkBH z-D~EG<=XMX;w8(Kz+mjf=2sg+>9$)Hh13tjA9D2r?=^e_o_E~S%dud>i z`9&B#g1x*qb={e?iz-KskLDfuOpx=5bmG~7N70gJSi^naJ(@ZkokrIP;VG2%e45Iy z?1?db%Ex>19x&n6od^;!4g=n!qbCF5Ra9yp9mJor(pD1py7pk@N4`)xT#m$YiS$cM z$-FWOJ-$eZM~{*0-0D^&8peHgHh6o~jz~l09jbrZ%qKF(d53MLT@z{Zm?|T%B00j+ zPg6_&@3JLX1m{Tx+nQAw0xgeMtqw>vobnH5G;lbg|3+c=h>5~lLgRn5!8aws3u5^apNk%y#^LLqbq!FYp=9|J_~QO%EMs4Yk^OilauSYc zgm(K_CzCLb`3xc~grY zJ>I17Kcp^#WWBCZ)Zyj|w-N@^-yc(~9PxtOcC8T`%zWpeK=tggKL07`*=wqq=0Dc| zhl5eHKkLVbAAX<=zpe>dkF*crrN{~L2BVOw=hAA6XtV$;Dny`FN7(Gz!=m*!i8Pmw zX334)QXeP?KlRCUn|7dLa=}h3(EaS!>fe!KyJMp@?R~S4|5*@ZN|t@zzbK2!$WIOj za;0XB@vI~DDc`QGSMRLn79b6^N&IVp7SUfk1UF$#E7{RrsT&hhsv$ABIegrbH}Oa? zo1@k~pIZcn8K?^uq}nzMr1ZM)D2!XUo9ZXRSnB@F(;*-AEKtSI?K6&;P{h%)A{?4F z$QEtJUM|wme&2ifLS$z<6nnfQw;8H`Z@)CJL%{xZ>SV>fMdk9_qii4Tusu67vewID zqa!~SU9z6@sP&JSfk;Z`>6?k zk&mdMD-_oGUNV|o-m4S)fvsq4U2f5OGGqgmK?|h3 zVE@hQ&J9l)B&;J4ND;zEK=kZvX9n|=^-)hjQ}x9M{8WS!<0HkM6L#6`VgxxK$QibdL@ki;gw@R{<`$}D@HJhl6TblaZ-;< z@APL3gPX%Z3 z(7E8p*b52J@qz;D#l=o~W!pzrwXL?47RB!>bDzY!xAl%slPx}=9e^Nri=3f1?|SD; zxtUVv)l3ysloY)dIl`f|{i(4a=KQoe*0blN&R{k;izYOk!2$1um93tiHs%%e-IMO# zqBaKZpuWL7WD*{Nw4l7pZGn-51r7zqgZEo1&vB32GtuiI>Kg2zuG!3KkFhl! zu`ioFgx}$QwF@TfBX;os!pL({I~`t;ZhIe)`?rZEzDB_GuP|nUtMW`U1ONGo%rD5= zFgh|F8m0l^!)uM=fbfNxA^^FcD8Elzen!)Uigx1-FJFev80m*)!C_C~DohgPxQq7} z_G%pI4isU9ykw^EZMx|uLpVr36OPKf`fWs4P1sa6l92g)m~JhXtP)SZzi+C2M89W_ zjv;|OsxNAy{v@YY0PNr*XMbuPo6_1y-r-!H8MZCL+KrsReV{4Q1nrG(NbPAWX*BVE z0GI6fRJ=DZIsmcPpBLJ)pW+>Aov-npJb;n4@NPG{jA%*m5U*iEs5u6h2%5^#cXlZ3 z8+It3OX&mmtJXPf54R05J*-vyYfVJ)A%?2((sj1U?vMY(waQ?`pa(>r+HgHqt907L zvQ!=4$ysEZ3y7Crx(fv4jUJl@K+0DaLa!Z)Xt2Pr&62IUDtCBIzkXOk>h`>O_ zQOI8iK)_pZFYJJ`18yd{>HElv121&{jl93!#xmxe-~@3))Yb2_Aa(kS0UQzc^9ad< z*9Q$rNP5^0rYQ%kck*+SMD{Feq)6r&8+9rAp|c(sCB=-J{d8FIPHgZ4kHS2cgjT<% zfLOGxCO;xmryzNH+p;b88{~(`)#WVF0$C*^D}Po}{gOb%$ou6^6jz-+v>6q4G@fK+ zatO|&yAo3^9jq)zra$-uCVvxW{lHfBQ6X84_jgIO%1YNTsMqu#wjZmo=>|iazZC$%V zxYa8)K}+E%3iUH9tPin=%C%G~K|!^EO}33kenxg@qeq#7eQpm74uUDYUc6h>b6d*q z+MFJ~k=Rj2Xgylx981EEq-!Ks1`zjOCw3mG8zravzIcEHp$M$IiHwB1@NBp8tMcxD zSR$AkBzxeTTb`1ccylhp7B~i3i9iipo^3dASSAXXR%VbC(AdSB>E=EYu5`AM_k7}s zgBgjRNDY*DQ6fq@{FnE2H`^cnS4;{U6GQlObYC3QB&rEhu(gu3-i_mfeNP{vuMB6a z8mC43(U9$}8kndvt6~D2jTm1G&Kc^*9OJ53+HeuELkRD@}Zu? z>qp0;)H!_~^*VIXI*q%jzPaXnu^v`jTm_>NCV@}!qRm%@R}{UHaVPVTJMs7f!{KXj z^?PSqi|T6H;9eLKHy?y^*C6*GtdG=z0ig7n{F(3a{~lr? zTRycSZ3cKY{}%2J2S6~kFcb|YlO3T#-KvZ7j^@6xDbP>300k;Vlq{bcpsk5A9mQQ=e;{h54eseuHC-pqbW?GlhV7O({fewyt8>$SPU-3lpZZR! z1Ch_>9)S})A5w4nCONm28v2#M&*BivmrXhu$9|Ge?DlnO1XhMefOn7tsGBi9gfrSn z#g){v$B>|=2_a?K?y&QN7d6ZRO`9!d7@ZpU`)%KicoFRHd)k3ESNz-mkKc?qU<+IW) zS?kRJ)xfc-(ilVLRO@!HgUmmFgTXj&{|jDAu$;SRb%*7P9Z%llTYC@QR<2gx)?8=j zNQ?!MRJHfIT94_=^KVPRsp38KPm?;9vpo>z=kC0g(etkbkdR8wo)`ch5 z$b6R|o7`#;qQ_zbNEup5u!B6FUxc((PFvC7JXf77Dab{Fv{KBPH{jeXG2ZD@g9H_H zf|%BWI_>E3lBWZ!VDX5~tpWDEq;JzeW{m{B^-@}(w_c7-y(tjM9q-4dQN0eyvKE`H zKOhxtK=nc|XMf&j4!CGca5Ehm8{Z-86f9igd`Q`7IasL>lA2oLPnufb!WnY^M>}f* zUR46@+t>X-oZw-7qkJuA={GAXL3a^jCJ-+$!c3Zv?+~@S`HLW(Ks>-s9EZugmmIc` zDCzj98|pT>hhLOYj|6Geaep(X2OLh6<>*b2rxB}2SiBJtEjtuWh^~whaS2glQ6dVJ zLv=KcffYiV4)`vny%vjf2+l+rO^I{Rn^v+w4K3R*fJURPjWQ|h$_(^3@86kF?<;~X zl|j?5xe`p63!KW=`)bx$L7~p9$xCdMds~{Z0;}<;)FWExA=&a`Hs&lNyC@LrZ@~sG zl(5hrX@U?P*@ea`o0w(-~nO!*y0`sqMG2r#-}yZ+<=%VSmzCrTt*WZU^2RYiTsG`ufUH1&I_11Aj@vSOi1j#mXPxc@Nl=(>C2KiWI!@ZkM1PJv z!7*D(K!~9dd~c*6_AGb zk1eIhF8t1aqegkC+!s4+ec7mluXoL?ecu-dzWeXG+up`pr zKzDn0IJwK3Z}~1CXYVXIHM%@(G`%oAGLNoTp6{%4@d-#ts`90LbolNuSmgsV_=qu> zw39vPYLiph$kTg+DB)}xv5ZIW8H0&}Rv|}m7mgQ$z@w1UuE50$I!F(@L<|Jxnr@yd zAX(KVO$xSHDl?cIVgNLooQxe6$E5VD>>8YE?8$;Q!TAOePsl2V_#IQY@3O3ETn}up zFzbEYQq|S5HSu<=Spgn%B|aDhjlx7J3Ub;PyI$(ua-hY zHFT>ziBEz>=03WAuSWO=Rh&dg*f^H1<32&xON!w(u?rua|5D59%#&jI2*cNb(@?ij zNRrUjY#<}1QxtMn2;_{sphZRj>pAk6Q8~_oa$^E2&Tl(zv47Y?MkwXKR6A0fB>`K! zvO5|^BI;@AK=&tpK82mNdfp_ofvp>^A?;G}`Ljx6A~FY86P zV_;;^rTQU&L#c`NgXUAA( z`}AN1$M4UVSX_Bxl3r!9#=C9CAjd4a*NZA{X7fC%7jLp}WTOCOQK45~M$%JGk7Oga zV91 zWakeJV9BY*F}zqmv`o!4FN_ytck*KgEAGFGg%FK#|bb_e~PCK0Rw;V8B0xbXD@GmlA{d;#|c+ zx|8$>w5c!sE_!H;UGgd9oH%?tn#F&t=3sI&bQOOkZ=@S=Bsr&UMxSLb)Y{2yEKwMr z45;lK;OKhraK#aN*6GgNtq+bM17ZaQ854O9_djsa6iECac{NQw@$?h|C#`a9`3M$$ zW0uCB`%BT(7Pq^`YWsN-5|4it6NjWT{(-K%qrHV4q3JfSb;kxW>&mj za&gk6ZP|?~#ygNe3w6CJ?J8{sjE{vwDV-d{;L0zjzH<*;r7sius%N5ThY^x7z~p;_ z>H*iW;;_^b+BP8H=#h@WOj;@AmV>kdX_R{xiDK6YhD7E{(p8N&mF0+P14>i*R%4DK zYvKQK?O;$WV3k`FhDtynDaZHac2XDQ){4ob-2xTY+NGyMb|Xv3*GAboyV$XWtqI+I zxr6%@7B@ykZlZzX0`jNd>n6V`;-9hzoNa2xwK51;6Bz3)8jSa$_h-DBS#9a7a#QMy zOwskP^^;!5%>~V4W&4^W$cmwT$(h-~sNsNLqz4n`ye+c1I%&_exXjcuPqtwiRRWNH(G@0h(f)c(VGJ2X5nL}yb>?3e zfZ%~S+Pm0~EYDt#17w=YPb`f)1yg@@uMNZ7Fk~~xf{_gw)MvI^195e=lNx54=ONLS z#yw}frYQmg@0-CR|EG^oiw#3KUrX{eGrtGk58(|C--2MmW#mV&EAmdUw9VVjVV2cb zXX65xCKt}y|Mj#!g}j}5H-?kBd%r$}!qj+_wb3HRF+})>DomnvZKd{s^fv3LGD{hm zN!~oB{HssAFfnX`!c>?Hi+loI8B7u&z{*XrjG`t5r@wDdGmb5M0HO0SVC_0$8T6f2 z);cdXcVnM5pFpA3`*?~;_aPeVlGn7K5Ji(M%hZ&pa&eJ=_v12w;d4Ma2Y$aZ-zXKy z__cbAh#!TpZfQe(M$_=%g4pf^C)=*j-_Hk$MhxFcCbCa1Lr>}oC`@Ca zk&}VC!JEc%$`0OFQL=F4GE2nX(YcqL6?*b}mku*&O-vLlQ&_24ZvEs*H~s^erlQ!f zNX?;Ik2iETj0#CUIIpq9ZX=^el+|x$B5?C51GU(hX%F0saxTM6I3sGMDQjd`o2LSn zo(GW-MRgf=R8(d^RrRn-SB%KumiVk41-rRP*SdRlqs1^&Z$SP+)HD6`PJ#zqr=%8e zw(_BNb~9JUtlb0~rpjS{loyse`qkhNe37W45`HAcv+95|%$2}Uc66kHq~q$7ly%}B z363LBeaa{$>kB!!|8Vy-eGp&wV7lh+RzlL2K(kTo!^jcKd zY&k&J=;KZ$Dn$4j$kp9W}${COOu|A;A6c3^RN_^!I)?1fzUN zDHvf8L0l_al70-nS-9_SsZ11#hxJ$nail^V#f^py3{(Jxw9$ZYMZ zTyB4|z@m}^7i86@M7^asBJJ$WA`u%d-iHy)EbRv>3QYaCwTc3D7NS2jn=R8=MlK73 z87d0o1ZWmm;Ov`7Wpi#S$uT$gQHauF()6z?#(>N0rh(X%nDHu(=M9+eT6)|8qneEk z8~6>*HMky9XVX4sHuRX?{DLm4*o}8S6?c_y1b&)=4HkB+;vH~2m?q>`EzZS+6s7v* zRh10(Wm5IbAY|`w6YOkFEbDUU_iUDQjM3YE!PHg!Wc7+}qce-3vh4a8eiqfV#Lu^F z_fyUU`lzIg`jA=_9a9P10RTPtcn|6wWCkG)%)yBR-Fi{)CbwDVer(2uoVeOYTZ-6t zAR16ylEI@Lp(gSFlAh6S_DmA`E?YqJe?`f+w5v?S?udq?wdTsczuOsEb6l@7%YNYz zlJXup|Ak^*%1rTx0TTh~6u2Px9d`gG%xVF(vZdC=XlrD{ zi`q$#xM?520Mv`Fg86K*Y6t+QakLL_7PJhJ=_j#f^Ko?F=IkQcUXlMm)f_Me&z?Y# zjGdu|@?x2qj=)K*vF@qg^a@#7othO!1PMyd(uh7+zOSYu z*?J2qTRjIy3ip_R9n?6GXl$VwTQJD`s11^EA5!7eJ(a~nN*-#TEzyN$sW4ex*X|_1 zz!9LxCzxb?&EW;B*MS0ljz!mA|D}1#aSZ_LHkO>{hys~JJeExsLP@#c49qOWD#g|~ z)l*r%$aAi9%Gphz^bVV^G5{1|%}26&<*Va7$?m^l?dEuTzL(~{t=4*O;fLnIsymso z;``Ht>SHSQholh5v)Gi+Yg~e#E!z&H2DvDf&Fr{|q#oy$=yAOBKx5ioK=!>g?69yK zsa7li5_uild!B^9A35&myF!qO2>D%w?usBey>gQ)FtdV8j?O566T^>nCss<`XARN9 zXQotk?C4sxKPQ!{rAfyabk+)P$BkL*u{vlc)Gi`etd+Qa;H^_*)Su;0>cc9iw}Xd` zO!)*12#Lr9m5Fkt6{ycZI;pLv!&tTU^sjQh&9q*D2KpR0-R5F@I2=&G40zf;kXU>) z^d6{DcL8Cx;I63+x}Y+WJyHA-77xIC-G*Ee4j#YPLt4sn5^O9iY@FFgn^uGzkMs^S z3vnpcA=R4_yHcEYr@qT1^beA8IPaddn(bdttQR8%?@-U>!n4y^X&^=DcUz@U^umF1 z-P;VIN*1me4&Q>|$S3v?%%Hy9)-yc$LMC{4YI+&W9HV*?LW|{#6n(npT1YxEYpnOV z(pWyo0iM_ngCKP#bE%r74CfR^2g7>ISXp>Mx(lWa*8){@As_)cT*-i_Pkgo_8i7Q8 zR-zc;v$Vx)zKgiZFX&&gup2d4^h{TX-0qXR!Itg0}68AyG}sa1|ee3H3nLn`>j#c^t=rMm{(X}xJUp&J~uuPi*sqvy$R zbe@37?>jbt0R86BDy8DyYGa|vUJX3G&Ud|;)e)`AwZ*N@%Gv!6mYIqs=W3TD{?NqU-Y z|Ani%C!2);mpK8316utPt;I|0)sPf_*wrD`%wdm-wrJ1uSbeW<1c`6Qsn2vDx;r>_ z>OLe|J4)Lmh3c{6$6?prb;%@3`2A4X$NCCBUmQV9)6sUbC0NEDH64WV=~m0{R$&ip z8G;^HA9&JT%P3%-2K2(ORECgZ5GM+*y+^K(&Uz+XFZtFJCXV%y?a5uL+E7xs-c|G4 z6xIY;Q1Q3bPzTLL8&N|uHmO|AKab3>0iq_D3A<&9f94PyQi`!d8y=td(C=zzhQY~d zzE!+y#fXNN2~#reGG$Zeo{Q2VJHN{XRxXN)YRw(U^tJ})%H?$q13wQD5?T*TS*i7* zZ_;IX&Vr&{Ef37j*n6{`{q&0N*OAA5Cj9tZ<8NkHVigcQF3=U=6NG8RnA?m-H zgkEYxw{orlYcg->pfq)GO61DfE-Vc~HnxL3S+$8EsRmG%x~)Pxb!rXJhpMHg1w2Hn zgP+c(hObhMp;pI3?9QIaREab^;@wAXemg>Kw!c`rn@T}Wb%wBsGEoL^$u)1-r8v?c z(Ir*v>GdbUyZF_nEqcF{Y~`BXWs#_$id8cWI=1AQcv}*)x%Qcb+S0rB|DZv22LP#E zB666F1vVwjXtb*`Ryu+u6f*S69~a$=hGEm$ZAt9qy^=tQcPWRs0=&M+pyjK1o<>17 zukmnCg`SrjPZV~HXo>``D;2KkFOT4P>oNpmozq*<2{`QH2mq=YxEzdCoF)(g#h#)k zu|?1-xF?-jUOr$Lvv}HKwtOb1yGY+yitGstTN9gdDj8b>_UToQPAH0U*A*&*2IqSG zg7CsMG!Jc|U+wb+yoeLJ#Ol(pWxBtxNUuHel#H^=IiJ7z{NG?h!aj+8#E$t7TbY%ntbdEI7F1Sn$;5~x< z3F1FwQ9rtvtvGypTpDLIp6TVjtJEP&R4&QdITF|BT80HAUihO#CPebM^yoQez}r$% zSHE4v6s)^S%St480m~54;cIWkQq)*k*Gqv?|X*6ZG*v573fkR{94!|zi zrmBIz>7uL(5xyiWG<&ZWB?-7;QD8)61zp`*8uHdiZs04oiMi^!03CVTF?rkd{rAI! zkN#$)IjaiL7QMd#)y>P4LM&s(?r*fg>cR(K_&f*W?7u&{BlWxmD7C(WD?90uV93`D zKD2X`Ds9P*iv8M^ao+8Yiw-)klsg?0y*<@a(NQw0{Y_GULw+v~jJ)84V(T-nOe0hA`ST_$=DUza~qSyCR>k3^Ssj_yS1aNRVV z6T9qQ0V%p`2WkmPqd;1JrDny=q^r?t8UX)40KjZX0vXzq{{_JyB_GZaA_x;F!(40< z5%yP^9pJG@a%#jMzZG_RrI%N_@1^SUp)fiFA9+rh^$f$v+|uGmU$62ml>-+YFKF}) z@P4|G(RsrUF~sqDqo6DQXNqCe#JngT z#hbpM{+Q`lWA6jn;e@{Ln+OidO*2Hub46j&`6AHC>N&dGnjz5xtE5`8rX42g5knM< z$^1Gtn`>(dq8axTP(yV{!w)uiQ3yff4RdWKeNyTD&z*50Xb(qy+i-y4-FA;1n<1ep z$bLLD%L3xn+lJdJKCU#W+V5)erZ+^*qquHXV9N5K!GADlHAD$!=H){6ef0Vm}XYs!o{16I|^WY4n-Y#6zw#c zBv4_7B^3zVQ5w1%PP?FNnBj_dxOnZu^$rC)3R559b_(Ya#d;{jhREAA9W3f7nOPN6 zG7*N{olr9l!lq3yIRzPN?O=V&uJ(Ld*Z}?vQbiwW)5vU{-iugviN>fMF?l%Bpe@Izr0h=qshG z4U|Vm@Y_(Pa@&5~TWC|``x8hA1YPWd7PnMjl^OYvq!F4y9)$rtMc>zgSpV*tY~`(H zZUo(6^${pVj5SQg4>Gc;AVGpbahPu#MfU#;i7`OaDHHCX#_H}-6w`oYRR;V458Y;S zf2EhSbimO@M>y?>al>m*^a37-!Ilg%d3dSgVV+KBuI!=^g`gA+ z-p`FO=<7i^#IIk9n=@&GLt3lYsehryBlpI#;11Tn)*4lNkF5~~vesX)rmK*1Jv!ANyM$tVwPr1H1*GHsSrQJo#@6B1Cu zViFH-rFl)DrvT?bCK0v-*w5jHYa$h@pE^SsQUA($wq1c68_=jV=)F!j8masX_QUyw zrZat~1DRTQ)ntlR>Q+5q2~ky9Aw&x9;v6crgs2-5A<}YX;$USBXy~2EdSQYgu6g9U zRLSq>LmNHHF!1=iEfujACIe3&Z}y6+D(r{U=ph2?y;Htnf*FSx)n@g7(&ry*c1+*g`YL!2jl{=n#;! zdXo)T=Tf5!8D0q3Av;>{T@L2_cf|_U`u(+SX%(qqK5UiauHRs=wNK5Ec+h!a;V@WX zr|JQkQy#`^pZ*ZE=(+PXjkN_Pt7gKGvj7m~8dP(x^s9*wzQLYVk|N6fv7n7uv%2UoevmTPvT8h=T3) zx~Z-bT^K`2KK;}q#{=~lkIu}SQ3mY)VCLF138nv}hxANlrQ8XY|iw`nwxXh#u*!ul>h;0iEpza{}Dva&{(u2enGlDbfmzO_P+1xwS_t2YG1_gp~*7x&uv!Ou6 z&PQ?JG`2@=D5mw>%~NwpFH?_$?YyxXk({A`N3D8!^1{ky{_WQfHFg97W^d^v)E1yY zg0-YKHr)%ar1`n1gNIC(OGV#dPR;~c zJg7d|J40hcU@X_Y=5mfLT-=Sh0U(WJsmuEt^6G!7>1b0fix8;+4r_9|g>HK(NQl8r z{C|taaYM_tPCD=zkPrrRHvWL)#evAT;_6sHAM#2H+o|pq)H$pxNJtDhL{y_4Q(s}- z@j&EsEMOkp1;5_Q!t#NXb3vEQFIKlUh4tfs5r~0S*p6_AVW$`JAAhYskj~Tr7YRTh zN?-^f=9?0K-ioVdO_AkHUTvR0hut!+>*q7OnESno$C7<^DK8xpO`)$kNmcLr=hSmU z6uq{6!W(qh!vyvUHmV8hi5Xnl+98&cu<$Da#xE$J*G_u-D$<;{-*uOS!QSgALy>oe zU#Z>?>@1VkUKu>F22sp-qax2^yOe~L1s3|YrfR~@3_8-rpoYKB2J|ch0>%Um{TF$PPl!!AGItQZ>{q}(B&-;#&}#7(j1AHW287EtS5}qUvRhiCVDm<-y^G=qO^oI-Q2#xfZG?^ zlgSmHgJ~yGZC^5$R8K+)6#LC2>s!I4CW5G_CtN$8WImMV*k+uN{^(-ipo?oc+-46I zceAWOS7d~ifa5%QG3;WK4_Z3>P;OK-uot?9nEj(!u)kF}ZHe9*6;&K~gGuR$neHn9 z7>Qn_O5C8xNn-ZriN9I*Y;h7gNE@cIr%ic68HY5#Z8q+YqVI(ZaCgmK+@sh2jV`^M z$M5#o)E*J{2fHXQbejN-LmhS5I@hBfbuA;P`9rNu_0S@O7b|W?9OIm_-oRxaqIUq@ zIhKZr|F4j%ZkB??p6NMB8QwI9%%GvMK~mWZ+z(MFD(>jWNV{Ig!dg^A{2jkwD*qDi7#w~UF!uR6F$L=?UPBF#c zp7QNW%%8ws(OkU}*>-x(hFVf}eVOolJs(SSVf*z$#QDI`-ek!I!Twu~qE3mG;LyzI zgpsb|Ot}q2x67hDN#v77xta6X<}_qxzE*6j3JtV8IRnmE7&F|CU08C2d zng!DkRy$1NX#ce^Xc@niwQhWxeu1(LsX!ZsVZ4y-`n-D%g0uji6iT4gYQ(HqqAII zS{k{{Y^*9?=&_@fL%5e*jllr3)R>UO^q4JQ@suNThNgx8XJmCo=Zwo22mSKIYA{Zgx68GKWjoZ&t z&T_|WLH^Y!h&M}qW@rSm0m<3#@168H5VA!y6d>hO+nXVdaRh zIu!&iPjpCgx^THB0~STEZgU|+Z1Ny9tdR4UvK9)-a}I0KaKNRbr(i!p%2vkuJfIIM z*gzKUNxDaO3NNo=;%hV|s%#j?dQ9qc2in!{8wria z5(Wj`h;L4?B&A=_Z1BNb?>By2^I^>wLfqFWwFXnlrk++VXen@+AS~f#?&~!+d{zxynobOCZ8+#Pg1K7i`kE`zt zzr=#A#D$=Cn+O}y^<>a#A{_#q@|i{E!1-G>s4{B}RFEOkBwmrh06h?e1aXz)4n?i9 zjU6vR>^_JPjVtT>@RFzW@*lSrO#>D$-Cj7Li>exCU0L?y&^8m!P-L)2DQhQ;!Xm|O zFzLMaS1=8iuZyiCHZP3ZmeHCsb;(qWX{`-`eo|SnKD1mt+|@BS$Kh>41|{CePW`X* zBCMhEoFE=WQ@LJ+rfQqJIYR68W3&6$@URr5h;fMN0G9g&IkVSHEfpqHlS2mGoj#vr zaorV^5#5o<0yTW&l=?^unUWX$eBj%sFS>vUwGGUGaQ99S9Q>StSMp+2{H@_=v=PxL zbu8Nr&{EtFk9XCF-<+12vpg!4)*U1UJdyMffyN4wu ztk$={H3PMM5kS7iqwKx)v}aIk@py5aBzQCQXhR76JRuqQy>9U@syc{_slA*`5lK{5 zY@u{Jg&bU!vO0x@!Z^-XL!ABBsJVPl#~b*w-%2SV#%VrPdcNx3*AJN;{T(N+# z%#dR_pWatO^e#G-z*77tpPeojqVCYV?WQ$cIiAv*6y&2_gw-sX*l@vJR{rX~&CA_w zH--&k3|fxc&OWZZm$tPr;E|2O=?@Yw*)c;FI0ij`h;HERi0FmOwcso9dnw|e>wFj) zR#r^)9d$FUG^;9IR3I39!=&7nR4(UKuJ=BPfc_iN`0|Ni?5hU(gvCw}EAYFjYTPea zr|jJansCk#x!~7Qe`x>*%ow|JK>@tWWYXwZxxE(@OS9KSrLalb z{s?*4MI+@?mxn^=VSciq{jTt+o6HV!3%E;cE*IEUSt-5quupV98KUK`b+SbTC&cBp7 zG*4>A_z8K@JV@AQKcgw(!K<51a$e-!@WkSWfbMx;{;WPN@oz_c>=O|eq6(npy}K@8 z0#dO}v}HsFV`21FYRH$>5BwBZ8mTk5XIFwMM29fRNNST;EWc#37O+q4XK!poM|fPP z`${mzKjNhDvacG4w(3Ie(u34{={4PZz<4<*Ru9H}oo+zNWugR_p#Q>e4jqh42C3g} zTd5!-;XmNZ_Uy^oMBWNFkx}TG)8>O*Cah(T=!b~7OLhK---zy(sy5xs_CHpYMcWhv z*;coAEiDzbJdp#&qMptMRRPVCnjKPNxD6<5VSz*bTdeK6+E8)r$Cazr*l6SXAfjC6 z;rK%&yUUP&NAtD}^Zq{yfJ-*blf-$#5pF-1iwZjb0~|ssvCoO75z|l#v#V4+NFCf= zZaVj_zaX`379*3xiux-2#Qwp!Y+I$a1R#mS$o!Ad0w!Hr6oD0;WnD)9$L^G!4gouB zixL^hH-#uRCn@0l%HQV`n&p6og02cE6QOltf>zUZ=JHt3Zw|p<#5_lPLhT}IzQIMT zMtyu=LiV`BDHSwwC z61#NJ@LW;*ZXJu5&QpU1ZU>dF!pk#UiCD$+=ek#w(S<_w^+m;TvH(%Ka52aL;uByA zzjG{1hsJH>OuL3{2zi$OCPJd}_sL=Y<32_3nAm`U|IpS?`gA2G;-;pZA9#BolTufF z&L$eSM^v7Zrt-yIO{Tpn>+S;BAPc#WX+Z8V_71~ADdflPANWXdWE%Pe~tj#z)( zk+0Hm9~Qz_=FkY1Mj2>M3$)n5Ogwrt^bd;*M;e;P91M243)?fbn48EvsGVpcKtq+8 zxU`>M=pGQZ(@8&17M!x&8Qx~h;r~$uVjfXm0Iif>!P#_Ezl7J9*t5$588FdX-d0NU zp8G)-<&5NetB%Ie)YWbbw^qw4AEyMX@)iN8!;8}On^;`Ygf}3PYNygqMU@5H3u$4q ztV=Vr_q@&=r`1h@!E?S=a;VW&SRH zdGuetI!PWdn{sgsShK8|e=xfk)V&M>bBTR-cDKr$JDHw{N8!>4fz~EnV|G=EpGDeu z#^0*Da_QD8;U7KxJ;@y1zY8H5+tPaQ8jXDsLfOx2Ysh&}LWxXsrN3nG6^gwNEW!_C zNJ7?#h6!cg3f3;lse7ESHmNMpywtvUyjlX-hJ4754gFu=lksH>Phw- zWP{AYi?;?=oh+EL2BhfHHm%1kpHbIGew5+X+mdROGIRm|46=!!J9$L2q=t#K3i`pf zGYT(+|M3T42jGqy>wgNLnkWJIChYVA2`SV7sBk?UinYMbB?DUp@BgDXIr;I&0PYy< zN+UeSl`7mYyY@B{e<}LvS5K)W$7|2|9n5*xpN1ZFZ4e4KPRS67b? zeOhd7DqBr)vuICBWagTN92XNhLsTLe2Cs^)HMR+ZA68J~vgc+Y4PqX><)Ba?xDrHg z39AAn-Xx;B4ne+6#&i6*b_`|o-YyY1di?Ip ze~j`F-hY8&yVV^{JrP_cL{)YC6>#=>2C-*a7V3YAy;H1JLGdXdeZ}w{<^_!?QK6~0 zAcAD>OxR6UJvAbg_iSA3Zv~t|2;TEVukAhLA;?Ba-!+cVG|fQ{w7Clfg#FDb{qN*6AjmW1F{Qb$W@NPi)!H($3vd z0fCb36HzmFFU_fM%m2R&x)?1}rClPVP?p7Tfmc?4KANyu z@Ti?JU^eOke-#S(pHLfr4?-6qQ3fqUr@u6NTawfK^f@eSIuxFJ|9NPLkR~tkI0x zS^oXnXOML!gKzX;Vh!{j!l!}C!_MDlxY&N>g}F=rvKhyzo1JqBZ|K9advqMW2r1G2 z1q$WCO#gNot^;?9eoAWG9a<3dXHJdz?0Wngn5%8sFag(s$4BsU!Oeo2*3k=E9|0K{LVy8yNyF7H78&i zcx}_--R1i&N#Yp#nuA5^5{?Y{EbDLM0dU1_@+b4+0JQ~nD=s_Xg50*m?Cc{L0W9QHkAorQ=? zV+s4@3JGKy0PpPf>KYdBj%KRS3l9KuEV~d$Wv=hPkMBd(-EG4A2MLK+)Hdk;ZcTn9 z9bTvFwQEJ&4PzR>s~KN;h}z*lIHPPwF{w4Mf4AdO+xNuF?VToZ-F9LcUjeAx7|@$L z$OQ^uIrz9qi7au?`d(P$Gc)j4Oq6KSmow!*DDihWl7>}M*P_r5tH`+xr{$#P%ulzc$ZX^@7C8nR zJKR@`vL*R;qP-F|e)gk*;;9`Q`+yIz&S#@B7(^9cg5blAlPUa@MW&aWgtK-uoqy;c zt>Z(`e1`I~&W2XRi6t^nkuLo@a%$_+V6%t7eWe`KMz-7^+-I=( zvNLa%JP6gBaIfu;ZzZHGDAfu+ajfr{!xInRW$n#2(30wm&I8IIZlzRt{!~5L(GFr0 zYM-QeT4h0!XJ5}ttV#A&*Wk@oZ7=sD ze}Z@5s3Rptu-mGY_7k@z>SNuO;^r4#{OiyaBP!f~Ig0dHBY+<=T88U9y%PtyQ*ydQ za5E6s)Om92t2Y#{J5_C7I&SlOB7gyHXKG5@!;4dxKaeh)ZJ43=or4odj0Cgv#Qce$ zq}JY`yJ`fKQ6UK?moMyClB;Oc#Ioz`|urx(;oD34JEswh*&OPZc4Tslk!SA<=BxqhuFtq3z=>NrD zG^Ja+bPAV%N$t;a{Jq4C99d8J!x*&~1^IpSoM|naoc;`z?z(Ujzj+uf{V!A8BFGv1 zS1!D$0LiKo>Wfq|`X_KXe9tQ`_laDtL(de!zMZ}u6dcaQRbmG5_EADrGJUDJetBao zVOO_?mest{*8Lx&`j`btaCYI;a8$}nLHJq(XQ}4R)_olc-!ddQkGX7@;75A3lw}XJ zZl(vE!R7=mUE-%)5s^f{_o0e8f~9hCOBku#aVCjytoXT58JbKFy6i6eY31{R4~o`( zkHq3z0THfs@!+J8e&trs!yA$I8&0`__@O}^V)1Vj8BnflCwhrFQ$eqiK_;KiuZ3=` zH}Ay{RiNpJ|3?oI*=t1|MP8guFi4R0?wc5`@uHG8P5LJyyqJ}9|4}0rP#Xvxexb&E z+H}Oh6yT&j@L*PDWz#&>O)W-q8MB!6XwN&j)#nOv#*z&sK%1Z&yk=CA|7JJ4+=)l3 zYSGQpLWEeQX`^M;R3Z&wWMM*oXW!uc1SPjl6I*fp{;ugb0WlXX?n}fpr)NFO4uFJf ziuipoovxropNOA+v(AH=O5%}1>O0j0FV{)p>BX#0=^GDM7AYjXsM^Yq6{jZ^4M~)& zf{r&>VaJSY#6$wtgSNk|8TBKRKN3*&4|K~UL*6KUsmf}V&ox9!Ch>v^(4M_76VT+)O==E zahILqK@soNFBDk+x8rm-9Yl6LNOmJ2dSPFi^%LNu!k7E!6>x(xHz!1bb?$@RD&kZ& zoOAYY_VIrrDlz|Ag+Z@9B!#lmYOfkg_+Go=eZ)mhsG+ckx!HfJ$9@IckTyvkP8pl= zj;%;8MLSUW98CvT9JrW;D$f?*d)*wNl}3DD0btZSIH z+yKK0OP*}y@hb{qv{~R$Kj*K2E>01)#WRd~#&c}x`tE0z1oV4bInSj;_pR;^h!WZx zEn2}~2ds=~(ZSMbQ8&Gl7H_MKpGLuvb(h-##gzqLeR4M;DX@UX>Csp_N3S}*e;;59 z@`?rB$2MWYrl|6W@PClQ1^$IPOV_!EBEwbtFt;2T(=RQ}Y=ZGd#NKMD^8U1Cku}6O zQz3A#+grbnOs+cg(8(U7q+4Y!7Jeo?N z7+IJ@kYq+umMj|Y+In@6yf`ek3{HjisFLx7cW8He$o83Up}(vLz#Ib6Hr$jXb1`;o z_uo-IxzjBuhyPgel$;9CCFBwZ0S31W__p2TC0$)Snu(QHIppe@+xDIGY#fR-E9CEMHqpTo!GeY7@^xR-&oh z&DWs;*Z_Wd_$rN2X$53L!y_hxi++-M zXk4K)cjkv0>R^e3jtW)Z9KKk;l~Kf%1gA`7w$6xY;<8F6@AZI1qc9(Z5g&XCuy|k5 zKH2hju@3N4?jBy#sxmz=x&EUcqJ2`eAT0tdtSM<2qI92328CBw_%JF%SfjA#9iRmy z=UWMyt*CyAW(*lBGufp$zZH97^XkD}%Uw zrdm0rGgJauYB>%(vj<_bWRXQNZJ9swiBE)$zKI!@n|XcECIpl}PWaDz7T1SYAO06n z{Kh?4o6{i@1#TU-8(&W_y-xqdRdNLEiA>Qx6enZmkVaD>dGx|NWp6Cxi7FzBBC|QK zIWnn184ptCt$`R*ZeL?V%#Y)u*fX(xCIn@q2gE~jd;=0P4!*^MIQRJBJo;~AX%f@v zhp-23hn_$bD4mBKnad2tg-48Fmwa~hXmL5YoU4t zCfvvW0wdCh2mvJCY}yi3QD=h;uPJ6_@BlM#X=ZKH&o@^4Aa(D#4S;Sf9aZ2C*q*l8 z{!Cd@$*AlQs-#>o!J)uFP5lUTGT=fMpy)xP#W5r`7Q+yK&L34az`OB-|2%{*$-;YO ztP5^PGLlj>&q-pUoB)F;=qzv*{r31%Y8UBH1D9EWXrYtOL8_nDl5| zX)^~a2b$y%ttwaCo}3u7N+f^A9EHQbQJO(S>et5kNTb;X={0&np)g?##3yy0`2-qy zI{VJ01|wQ)6tpvqb7Wa&z)edbS?lTq-FI!T7L3AKBfrbe&Hmq~F+Z5MxClg4!ji-e zlpseKwTr*<(z;fu&#L_DF0KDO%Lakn^kUMk z(g*1DtMf@LOP!x$Kz8d=w&OGAvvyHmlN=Aj+oM|(yvR%i4m%l47{@9ZSl_VRTi#iC z3_bYD3BS_#!?deC;WSQ8wpF)sbp6}JNQ2!9h|rC^*0J7|4~jg^3aV94fjLv6x~Pug z(rQ;-a7BA~nfXAxrqBZud*we_AW37Qv)eJVUc(5PSK|JXblRK4^z``K%4DyoQHldsD5cb5t>P=>lS+L=&OiBZQS z=Tluwm}k)ZJbVC9PZW`ZQw^hck0Ib8ezz}T^BZ>jim9m_K%JQNjZs2D3%%H*O6Snh z^Z~yFhj*b)f{Avzb-vE?qHIi-)e7zb+>U9Ch%bfMR^5|_U{rL-v0a|~ccSZrdDQ`h zqi!sMdxp`PrD~lDP}f_*h}J2fAT26nvNpXgni@_E`X;7xdW$lHpGAf}2EwSnx^~g1 z9KdH*l^MZ4*NNEA;N}}L(t_c*U56#WbD+Q;2onxrD($@~1wL}!VV3K*Wsq(4YfOKR zYia6(Y%!4{`Bgr5ck|%_gi={ZL<`j6wf-o7^UN`CEPqyLc1^lixHw1|_-^WTl z91xm<3>=+DqqK#DFO zMeNK}i1u@71_k@g*C#MU1anT15UydrpTIZu|3KSU0>{;Uc77(*xVLgFUC!Z}Mu+Im zJh(FBTs-X=BxdAEm@6JsmImws4IuS}U!Fyu{+BSxcsTsR8KA0kN)ste&4`TjI&<}~ z$&TV-?srdYe=D-2P>$e~%Vv6W;Y_0ZITII*+w-JNn`13d$rB*l+abS!Ed>}7b|R&R zXdUL2`NKble%M!%Cin?XgiDh6vic~(@hEnoxJNlkCrtO-z;_RG@OM@%G=xoFu@dqN zbd4f@KWt}!#mN8>E3^`lKRs(76u}j?m#6GpLe?Jb$P>Rnmi2y^T&ND<1#~d;Y*^aB z!kH7>u=e>7?66*W}DUB`HdyhTs|7INOoH;oyl^uooAGe>o-xE)gjz zYPnc|*4txG^C?n0x{&H4ZGEQKfccFZmsx@F^7N9{eX#F-)Ew#RwPG6kQy^$2AA(3? zdABeg0ccM5@c+D3{CZ=9Ma(*Esu$n|$my+bzeIrzD#U?z2aD9hF`)t7&W>TcY1F%| zs7VT=!`^|ORcsebM8abZZR^e2W#2(6KEyNF>&9)+VPKA%K$)5ldv`wp;|n)|YrFh; z_|X6!qa`t^#^o36!X;Qx2d-wL=02?uUyAZ?CjDhbUFjsxpG@VNJ7OTVEJsddL?+vRiRK1wyrK)g5k#r$ddx>}| z-Z6Wse0BHeY;#hK7*Ds*+T{E?uE}Z;MG3l7sdG8^rtOwpK8}QX&J|P(9SwkQS zUIUaIQ{}9Mi{m*+B$mR+wh!aUNcZraCj%(k;|vjs?46#^YF&&HBjweRv(VKJxO_>5 zBWIRgtTmTVks^MA=5g>yudurO|ni1;s` z^oJu9zWgk`k;$XFKaoMKuY^VSXBFw%$}+Xq*Wytsb&q+{se~}zqNt4uwzvJmtEb@b z?`g8W66Z^=pwN=&Xhd@EC(2R5>xSeXVO|1=SA7fDx2GynpuWXmSd1BtLSXBr+J)UNV(9=K_CjRCjYA5wB_ z38gV;r~tTLj5?iZPYT8<0j~fkv2TwPk|d-{;)|lz98NfmCY=((&Ilcwd!Jsvkm@oz z*ZI6|=jJ1SAR0uj<*&QB@O_s787@(8ZvEUscG4mgbMTxKZ(Ahy;zw&`omvQR?%HO- zpzg{r69zFSQ|amn7|90g%@UgWg9PqzTv`CutMfs(2L@<7nRl)TOdTp&6uMwqgs5CkEE19mP)i%#2P;{>fabS4^_iG9ky3JTm# zO)9D$tHf(V->nHf6&6t!{+nfM`5#Dzt$d9vlsF8gDuK2G;G(t#uaD0Os>p#oM}-Nk zRQ|K!wAuo%2DI;e0PoRMES?A;)s=Vnl_g*ug`A$f(nz>~91!=OIVVyEA}t)3Gxvn7 zN<>YqHWrz=L`UvmV{hgs0TO(%2z1)}>8|83Rar(^3jE_8XbVs%d)x2Ib?16CE$~UY zI3AeG6Klu#G8AyrQ6S#m^HsD&I);^;5@tPI=RA+MPe&`h_PJQ%#)SU_?-MRC1b^QD zT(DJRB0!)^$QSt5BF*6jb7V`h`PjZa4pi#w@TA5$3bNnl-IsoD?X2ftofI91^`rUonMo*jEoq?i(AzAf(y}|R6FFesjt#?0SU$_AC{1rDWgJehI9WOb z|BUFx)yXUrNAHWxmWzG*hBA4agA1e698dI$6W^*2TETLEw)xl8JvAtJmt87MP@U)ENu1AF2E>m zD)E;BFZ8Q&|ei?E0NqRC^14 za|76@)x z;-u)B)31S)hIfvfRkIQ5XhKBE&Jga7_k3Ry1ZsB7ZnGy^U;9E?&j7z?NT0qMJ%5YtQef4dCx(+vogi^p& zQeVe_bwvC5e<+XtvtQc-nQLf0ujb~bzUh02$GhkIYMwEOjfT~K@w1vNDzD^|EC6|E zC!>48^Ryl8BH}|95ucm(10)*PT|>#Rq@APSVWL!TGRViOZDAypW3Ayt=Md(!9hYp7 zIdD6fijOXD03w zQO*@XzLSQzs5Q7ccU&PEC6_4$4qOjPqdh)+@mGoj$o8G<@82bqV7NQP4ys2Pv#?LP zDBx=e-(X?ho;L-9)g8W7Zl&-&Rka>~KA|*DtSlY*N1y=O^&zUB2>Jq}ng}k)lsd}# zFYvCszvE8MV=bJy30Q{;%PaSZ!mCX7z@LA_|Kh;i+>pLe2b`1Fh_B3F5z@Dw$v%w2 zfzo3SSZYgDa`+HSU%_ScGjnV#W7V5x z+#A!I=%f_+tjAXbVt6(CVBy<=zT+0;+O=d*$b+p!M;lZdFmq69br_QNpn>V`k%rvD z6Sv2P!{PMTf+RNY#ygD5Mubx2;Nd1}(|2t#5LGs)$}Hv$Yv$hr<^tTig8&ehM5aFm zqL-WZj-|e@Pz<0bnET~jrh;}90HdiF1Y6_dZfmHAOZf(cl{zO>s$qVfiE=fDc#YwB zql@v>1~sb_L<6nvQ|Lz&N7*m!u;CU9&jXlx7)^+sDv|TVlo~}akUpnEb)W6}N44hz z_Rxyo3o#l+fH6Lv6nyxJEPnJK5hioYf_yDwqY;vSrCJ7EZko38G5!Q@z_R{Gem9R% zPr9t&$Ck)zOH>M$nEfUE^lnK|k%1ytHdQbGdIu8aXukCM{O`>qeq}ZS-*Z$|E|bUZ z`|qXYq2dW<-lNk@wXO&$_Imm~c=jwve|LDCwoWWbc(jANd{o#-kYzRS$*)3))+#{a zi+&0sEQ5LUTg^Yx)85AD(lNeu4!?1u2Rd;p#q5R8JCLn`Ilhcta?Xtb5aRcH5&{pt z5=e(`_j;Q$zejIR$Om^OxD2r}>S#e}9<2agz?HTy@aFBK2%mUl-LEUGYtKHhsF^0; zTN;n`ObFs!03#WFj4l1aLYIw4kW94cGPuVlj{UKhq*sM6NX{-7e4W|zIPa4<#(@Lc zn#L8|R~IRS9`L0SyT1e|qgUIE3j450W6Sq1>wi&2ty@R)XrS3wa=+~J?1v&&jKiZI ziKxEo&%Lu4?7WW<(+6}GHd3^rcMZaWn>)b2_qrE7E_tU0@~(s`a{H+1-Vp6^#l$^piQUe6;|ePcSGIHd(JNdPIff zsnuTxhopVU;X;JIU$`nlCm304*CI%Z3d*U{O6M~~H_C~l!r`>@N`*`eFJaYOcY?y{ zx}~gpBLvFkL;+F-9TZJuO<9n3ysVR z)J42w`D7PQGHI1v8l8Hg19%Wuvxq{%JV`eKWeYgMpL*$x?>4BWyA_TKzj!suy_{nN zM3nKNNQOn_0PETcgPZ~%*25VE{2t{6t|&>J{2rO@EHI+ml{W2MY6|;gJO)9?6B#IK z0ts#L)K~&T1>4B7p8y3MCylijR%`-`C1}Ml)1|@za)oxJtp*wfvBYl9PvH-N&q0xS(ucxHhCiMzr7To1J{?Gq3HC0Df#6LHpsEZlL5Xa?Q_ux7; zQ~#f2gkTa?V&*^VL{NR~qiR8^y+0_tBr8SB5psHe8M_~yO0w(<>nRpIF3swj_>0Mu zUO|cU;jq&fyQd7`Tw0sq>(*fb9+bxd6eeCfhVB?k`nPW19+Gbp?c7|#P+Wl}FPf#q zPSTG^CNMrZM9|y;H>W19JeL0N6y~w3Le_E;4gL%$b2aFMQUSGhuNu-K4uPTKkzaIx zKM2&2!G&cy@OysID|jIkZN=mn7>k?hzKFw?I?l$|dijp@;Kt?}MV7631$P^0PUFuy zGZns|QP7x1R{C(2lVrWHQ(0dIA#nL!Afao-`l^AU02zRnWP|mR?0hmNTcy~dLm$OW z?5UT5{#6NP-fz;ye&|E7d6|egmI`9(f(aB3E351uUi;pd>{LL|vr#AP!&>0~Qxtdm zAVnxgRZyCsO_1t91hkt;oBz}cP=SA}Kz$NVW&7C`1J%v8inWuHF2m0=wK064uqU#e zixU$k_Jd1ul=O&)oVYpZDUsB}O?xbw=wS9h9>9rGyJ9aUO0PwM&e;q9sQsDBxthLM{4*gX)%R2~i^ zJn#=RZ^w9_(2Ifas;awkjOl1fVN=Z@9p*?rQ3O)M@wt!oDMoLgv#iRV{YM`zTA&pi z%oHCQBv!M@2M%k1>_)J43bq2XCOA;1%sG}x|$tWlCl=%tqN$x$F4>Y(h>BxvNrNs zT7`ch&QszJ-7FwW6)`rA0go(Kv75PS_p_vl1>pVY66z$=XGiNgp&$*n^h=qg6H*m% zd=b2fWtznsY@3-X2~lvN9B|EocZL-b3iIaaP^2z7sm_SjzYC9|4Aetz8Ni~>c>{x1 zo+V&mHmION(Kc{}lZbmmRen*uooYr{N*UhvgSprS*_1Uga|4dFDk3}pF!QI!3o#UjPZ(VDk<)CL7>YlM1%AqX2oTJmb_^o8-kj`3#xDxc`m-` zz-oPNET-{hPy}9`CX_w%DnxVk_yWO1eapgs#2MQW#uWx^_zsuC?5W^pdKa zuSEegtxW_FVd>+sy^7v=tJqj&CukL_vRsP%{Ct7G1tv%75ZDM{$WhvmzK%m3w3Kkw?~rq7GaDH9TX~00FAKm;Ae$vGA@d8-@_;g&aNf^EtQd2eA6q~TqeFmI5 zkD~PWGYR1^EgT*bBi~@t8SfC7^9>h#^S|l%^yaFJdg8K>s8lkb=scIAJorQX-85)hqK>(0ylT&=-@H}2L0|aTREcB= z-|hoQHch?TwJ4`cZOz1sYDLVY3t8p}$>syFCnxq_Ox2clPB5VL7^!P8ThhWR3iqkv z#eIo0aIYD=dfX$mptssp>3$8?1n>I0pWn(_>CcP52nEI9pK=g)n`?y4eMnp@=JMa` zn#*F}q@`Poc+Xn!NI;D9u-owU)yFMsHo%!es2iQ=HgjL}M%RtBB=$7Co#jgrQLHE~ z?fqrIutRD#p6VmM!!ATIQ=&cO=?;Q_+W%}k>GWBod~P#S}psU7ojiM?Md#j zuFkQH10gcYswn*>HTO(RV;4h0;Vs8IBngtcVKyOX`2)8!c_g9LP`H@1-Ii)OWudW& zczF4hnuC|hyO94-APFFugePS92dKMaO2T?id>5U*na1D5)~y<#jhS7SMEx^YngBa? z_7vf}m9sdJj-6bCD!%7`gKIw-?uAa|*+*3;n6Np%)dhu?4lE_a;{5*mVB#MR6^U%a zLg0Lc#n6j1ak4`lTp0Hk1B4LifcKDVK_p4fLP@ah-G5(d<#lSrVsE0Aq)6qtN(Zph z?XePB*$p8v0Oka;^JOLsn&0c=3#4NgZ5E>awiC}$nRR~GX?+jM!eX!Rp334vk=Oz ztEoDqdgO1Ij`E51ZWq6%{vjWq5t5J*G|Qqgp+tm*tB7av*eoyUK5; za;Yrzo8c8}#G=RtdZq7`ccR-i%&MuFgP^(sttH_kYhfc@z_aVSqO^!EbQ?g-TbZil z6`qNZ1O64qY|n7`PlDS~fjlsrfqr>e)w}8f{qnbU<;n71)tVH9H$YCBtKRrh+}MH2 z$_zJ-u8Yy0o5OH5*c8-z%0zL|YP>FWD{992q&*Wn#Mw1RPH4 z976kNmnLnd5WmU#1Qc<3Asl_AJ~}P800jUDwb*+ABRc>j5Ru0CSk3fNJ{v(1nK;e1 zTUK*4EBE$Pl-jj#e#j$mCNni49Si;)*lrhOS_XM_c{hrXG2D^{ns>dknGlH0XZdTA z8_#{H=_){O6c1qKj%SEE_q@_lwuRfvMvU;9H$9ch;Oo#w-s2O()T$mTww_5v@C|o% zC;Ag^FR+619Jok5)5i$P%Y%Q)`n6V0kD!VyCnqUYnwd{^%b97NWmzg}K&w@)?mFf# z{@?W3`j+RXUbT&FCgYcFXp71{^3Jmd+?ud4AgCEAYLogXB6Pz`h``n-^6Q-cErdY? zgz8}xTL=sa2`w0_y!6jqsbo{E;y8~*bq;aiwnShY#LI4!7R`Pl>u!>1ouc^q5) zL}FgjeRso{unZAbkQO~e-LkxI+5;$?M$F$-K1@sYX5>mpu3loQqbyNcCiGEPq;n=j z`hz`nDmti1BCT3jw}(=u+u{7DH~hK+eDm#!K`?0{FDVHtg6m_#HU-&-SD<6tf{zE2cyM##E2Z_| zZYTs%Hc?6Q@d!+*b|?O?EG8+t)HRUV3o_t($D^ep7S|(^a=v0sZKeg{i z9zosB0PgY?V7=1Zhw0;9ovyn%5S%p4EK_x-4gyRbAbG)lJl7Zpunfa7Vr*rlxId-2 z_jc+`>9=y*m42Lv?e3wsQ3yW?Eb#94k{s+HVtgVAxRa6?D(o(=OErux!@*CdFo#Rm zuP_Gu5O@)i!h8q}h^QQJqw#aIraet0k4ioEF+Ig-xldVO`lgv+FG1mLqXKq*KHj>d zl5P*o1D1YM`xiK$KLuxjoEdpr6{*lfrHPA3IVdkJMaGQ&(6mPYui{igd7zbopmu!- znaj0N{HeGq!}mfpO0NHad(hO-*yq?@&>bl}J!k=mpAe41W0c7?UmCQj`wtbeA%8r^ znR8B~m|6|bAnjm8x?rLU*>_+nxVXnYxD_ID$Tg*QyJ|~%$haa8Lx54KCvba$k>{eZ z*V5AWo4Fb(4cf0c;dxLQ^?9yN1iOJnk(m261B9n6vVfhr(z7F{QS9TuKBXD-7}MyU zbQv9rQp82=Pw?uRZyknlnYm4Yps^hiSJvx;A%dAJaZDC3+ub9!NG@|ePzfXp-{y4? zt6suR__`vgS0Cc$N8{t$o6nQ5IlESfSMuea^3{yRsG5%;jrG4GB8kyTH{(5u%><1m zgqZ?WlN76US3A42Nlg`q!9g{ja!IiX(5)gw)acK|>kaBx&`{oNo?~>>IRj$W3|u~O zjs=b~pa(J5=-dV9mv2nX5nA%fg61x(ZXWv`ZH!Ri;CnodDDx~cRyn!rm&+dZDrq?! zyFq<}r1Dhv6@jGm@^b#M%W*&0!<#?+WF}kSPwIAFbYYKa?LlqguF-+7vhhNUKB&)_ ze+MFvI?{a$dK-C+RXbfjgbvNpP3d(g6QF3Lsl9;a21b(Gom30~cGgcsqx%12z1L6C6rJ-c%sAU=;$-r z0tnkix-C75CLN{YbacBCso-IG-QNiqEEH)#y(+DniZ&w%th%rzOy0DwkSizz9xO-# z*#AZN>tY6GX+~Vmd>Zzr^hjvDE@0lbK|L*7sGFo-bMsE~XlYSuGfeIZhMXD-C_~vI z1|}s%PJ{J5Tgx!HfyI4`tS#SEQztMwRtZmse<|#uzpWg`s-taNb^C4*Go)zXL05^u z^RQQ)kTj*iL$4a1JMYVCjc7K=zVY2!3m*kFSKn0}gRX!=v$M2TwbUUYkkvaI&X2Li zgaEU^2z(h zW__u-U`%X_VQcz+XTW6vWIV77-{G5Im3;LCT`!$VS%Cn^r4b6x-Av}Nr|t)HQEG}0Z`y~_(rXVAfbV{qQP z^?GF;j~$GFV+TZs(f!5w$sJAdL+?h@|FeSlsw9CL{PIQit0;#~W%o&|C&<84Pnn1g zGa+&KOARzu^8YDGf2B9Cd$92UGKio|3_8lD zA%tsFCaC%rq27Z4MY|^h9+QQHwF|6S>h&#D*Mf{S0Fh}<8bOxx@;S5VkEQ=HGV^D++bNm86 zAv%L1{y2rn_ZqH&vUS{002;~I=R3J99oq(27~6cp>pqyAt%Ro1PTE`0t)zJ+3joXo z>&rq5u7UxzXyDpw?Qt+m3qN+uHSuE0_cnzgV@#0Y;6jFbh%<0Hz$d`^dn250PSmB* zBQ~i)PmOI&a0=u&Nj-rw2_P5e^J|i+(CIdr)i9PhJ#rZ>EMIOkSQkayc)#!5aCG5% zR+pQ?S}=xHg=+yd$7xS$TbXe6INw$Laa9FYtp(iOayN|s-aAK$3MkCn#;^jJ*wWM( zDy>-Ik{3{lMKS_C;HhQ}Kg}N3bd?}FjK0o%X9-a{gl0}%ne-;B0Q`{@u%9zyJbn|c z_0E~uXYiQokf3X$F->b=Bdf*Q`-}JIx%ZD_Uo1UvN;GFklZOI*cY(Vk*Z=I=K>BIX zvSFaJvgdt}Ts}fsOi3*sqIavVtYa+Sh1=uQmfP+5diYKcd9aO;g3LhKTPMP=xS*q^ z!jl^-;YsgJsUZdo-4&2M$oO_JF{MU*L=Xw55p^`Q$(>yMHM8a8grA8=@{j=piMgDf zw)E;V3ARA%?EAyrLef|dF%x+Kp!+KNU`uBtNz43Uu=z3+|JEv%oxIB$l*|f;F?rOd z&Rq6#$Lh=3#FT^2=4(qxB5L?fS+Ys8HkTku6CXVTS?4@gQ>0!7*n& z0{v{qp`8JJWE4!wJ}Po8nh-QL`mYrQvL}+`RdIbT_upaul;`gvteQ!)pPsgSrw)E0fROPaX-b+H-s@$=!V)J&~dISYb1|$M_l9y2H8^$nyl@kg(3(qWbl<~g? ze?&5BY_ulNYIYohI&vFijRaOO8^2p&zL5L(lo#4FI5hje@~0vVm*J)5wWMGscjr*E zyd9e{WV$_#$l4r_YJI*EUn-S!PN#rytR1JD;Jx^{1|SY^*Fo=%Q3Oje%YS9me{%`a z)NK9?`@@3{oC$K_KpQ0F=!3|bu_upj=Q#DH7!#d&$nN%iwPtIDi;Wiinep697r8B{ ztyzscW9^}bpNjY^w(Erk=9Q^D!vV$2O<;XQCzjT5udIBpdLmMhP z)xhRPa+=0>$4b72WB4pST?mlXqzIEUfCzUhjW#`7AdA0}-&O&9ZRV;vCt@;OqJ>LM z{=Z4aB$gq71{-WEt3n=G!{o#2W02qMT;OH|{hYGhA zn($YuC~PTRsifE$ed`URsa*LK*^2Keipck z;1m-R3(8~se~jhYqUG)bmIq*D9PT#^FM~@9T!T)gKARpkSy)yLM@4Z5JZAii;R*3d zg^3tdDLiiffx3Zv=nF#6$_^ zB>x0~e2oXf8bGtmX?tK;2q}N%4(tielo17o7>)8c*!FF@pc@cSB~IvOH`kb_sN(fI zFfRG4c6k$hP03q1S41g*z?XCCezM=Ho+t?kh#I|q!{uyr|Mt=vv6I@>uTF&wa+1qyDk)i%f2Y@_GLp;MGF{e7fTN^AEDpnG=WJZJ-ZDqr+KS{%3S; znU&X(5^x4#8En5C>g&u>6wzzL=B@!3z8*7rb!K*Fb_w9FtHK&!XHA7w6TqDwytI43 ztcuP>0Vzg;NvjXfbRi6h*`HvqDp8*7{w7vny&3p=FNLmwnQ2Q{Rmhy>5y`>d`9 z8d#Rh|C=K`hICF?aN0Zrib4HiVF98o7)orbIdy}+!x3+>c`et^xoyUxgXGm_?P>C5Qh;jT84E|C-&UfnDP>x$3~z{(0|499J`dhdST$`_^ctHDo;FdrAbw}=`VG){*<`F4j`y=MhkP4*(Im1%NeSh z5z(e(1xdBLci?yEZBWT8d#d813|uvCJGaramF?w^&Xz(*c%FqxmP8yg_VTeF060gz z;b1#=Z_!1H35hrbEbPs8iSaOZ)7rcKaTj|<&y&Xfy>iE(wvW9x{lb!3&;RG z5b9a|4M!%~wzCWh~TZ&m#3m2ZxjDN+=QQZ(zmkKr^7artpgN}~ARKj`f`Nif_A@DUx zfACapQf@u_Sq?WGy`zjBdGGSwj*+L5qz%eO0fQLAvpJ9@)AZL+TJKgb{1o{2RR^dm zDH-T?kJ;W{<@IY_trQH#F)Pqdyq??hxSmD4`=NY;{QeKFGOZ3?T5ndJ&!5#vJylkGq&ZCT?(L;{-hwZ7#+qoYT*DdV zY7I+?^VgOHUWT{#<$#s!>KW6q;_OVKF63Guzwqa7*Z;rwi6jR3aoM6ny6DXItpefa z>}Qq$zg%poSvs ze_Iq6cO=MFL0GlR1ge%hjXH>b!k)?fEvj~z!eUC!T_|^oZzmMwRIBS3v#5Y_rmH>* zRQxSB0JKfP>{NPitb}V=m2U?07=k#F1@5EVeL#@A8Z!}9MdN#Gnfxcw_6^Ko3s#}z zAH|I(44zJ4J_V{OvZ;|aa9q143AFVqZUw;fux2Rh=(WdHtkn+Gqmt>OGdYP)UuZXF z4e{ZoBzHH3vQ4i$(t`fb&TPD|PGWq&MQPOG6>fAHS7^Ie z$)gCR7v_ZIvS<+CsWv>TU?U+}McEl;V|7TLKY*fh}i>u3MkSyWstN5JAg;^Z4wUYk#;Bh9_< zEvF8!^@*l#3qoM#?hUQ@nD@t-V$gSf08wYVO23UP*Nf@>z;plN;7f}SKAJ@3E^hvO zP%CQ%1&CT9b#A+rd`&oIic0@DabzpAIy@myCjfn#CaY$2wPwure+TBcxi!q7-hX`m3T)?iAyxu#U=W&|DXg z5H&)O(&)MaJt=QghD?d@vh!~MvwQQ6Oq+)-o9DF@bY85|-%FJ|n}#^qh|E}VWC`a( zQa6N|le@_VVO2lsfkU9~*H)D!04ESus|%`d4b(~`Ko-uP4J9wHtG}ph5r=RRw8`YD zaVoZ-VHm@6KnYbZt!(o5IhyoaY=v^9r?r^i`3{d--7=d;tUVi`kna1hxl0E~CL7D0 z88c`nrrW);twoJg3yVV{oYNXE8fa0#m zP%P(k*A8NTKK*MhY62Bpjmp^HZc!)QvQJ@H`t=0e9kz$Ux!v-!mHq;IuU#>y>C~t! z{~^^kX)TE>K0jy4wxK+)G~SyWRPk{7MakZ?>bCREl%0?rX%|)5<*qhr2ymM#1n=J5 zQdvzNF^J%59IZxqiF~UwOUsYt(_6)0Rl&N_7hyG^{zsD1{t4h8EzU)n!SneC4B9!`Dx4 z@^rsqp&i=g4DfS1Q89tL;XOdU9S2{pS4ta^M%toOo*f)%y9LHQ24wNFO1rbiHvkI1 zMudp}Bx4a>M0~T0JoH7Zm4hDP?;&2EzpDV{8O=Y=8=hu`j;8eAQ9v9j{oC#=W*1AI z&E$?i=e0GH3=|E>R3H!Z8CF^O4 z%@3R1M1dP{b4lGMNq9ZEkk8oyT#HNLW-APtr}B&QspgU^l=b~`0X_xN^Hx=iGlCR1 zu3xJsSSwudC)=4*aa*G8{x46W9oD*I+#>Z)KP_~6y<}PeY}*5FSDq2)4dk@A)*OOl`XqK+c&H2>=vExQ?8PL6d`wjJd!zU?;0aYom$dFy0`=VG$D zDc+w=T-B{%O^0=T^%r1c)d#{Ys3DCd~vk~DKa-x zy6=wgagYs=(O%A9l#4>`D7u-zMVNlJW2ryu2ZaKa6IQA>{qtAA)NIPqGuy^q=cwFX zRj~bR(;78{WxhypIFfdG~;DuTlUa+T?vmbY=YmxzmQBeI_40tzkHDKF{!kpF~i|iKIbUM=-oI0dWliP zAeN%mgQ2|rE7wMzcWYOT;E97jn9v6*`}97{&!pVz9^RytY0x?1>q5K?#@QyYsQxa@ z!{W~H+~`0e-bY!GF2CPyIU)P6voKBIDn7D9WR92Ihb(p8*!JyvK6%NB_Cl<9m}5I5 z)-hw$|Gk9@VeUc_UW@Md`!3g)|Tp~isJNuXVlt36ZX_rF%58Qz*hOd z`BF{jYSB0q7fe6~bVa~!70fKYCsD%7*FG0#$!iZ7L|^E!OJjgIZOxV?CqzU8jPle= zDU;PU9q*Y2_pE1U`Bj#9vy5wM&WZKi) zzyy3#&7Dr!fcl+2E&K9O-^UgyuV=n6!wjJUC`DvOT{#enquz2h-vvg+C*Dz1^+1v4H7g%s}Iv_Ac|~zp*xqurbqi3U#&e3Nbynxh+V`~EnAOtf|<@l<@N|X zqKddwrv&0HgV&iFu0eYl?xc0`%serHAc-V>Uwz5!;iu-Q--ro49m{Uu%+fiVx8|5| zYV#@TDhk+P%$SZXqqzy$f1Y8Ja@C{#+16%zG?(Mj!H=qV>QYdjxmm;>Mj||G8{y6! zjlY*}=X17_lvA!DL@nTLlac%Ip3-rRR6xFx$^5QyisRGBDZca-n{umhrCL1Ak8aY zs3{^QXQN-gn0y4|FQaOS1%}=A7&Xok%SsiXNcW%BZ#lz*uUK0LRrilAS#K;eEkDHc zz`2t8SvC}xSrDk@zJ47DleK>y1zM_iq8d-1 zL3MB-7x!2XL6nREQ%ft1`*e&cq6$EL7CDTxtdjczPJPCtFC%a$=GfKE)`^qH(Y?kN zqya^njMOqbFuD)6&H&XH(ta{6^F1a7okSx~(x?M#1)QsN#CZ6Sj=McFBL|=CJLK{W z#MYsSPwsvNN{(GPae!Q(5NjUcDpPW3szXgAbBvhy?-;?0MY8uV3+SxnEdS?+W0Til zr(@)k4}?tL+TuPfKO*gCR%oIWtkNmm5VTFT58eo7*LUNekM$3MD|n~Xi6mG%!4+j* zHp#7uMb{E*ZN9nAFQ|sJs0r@;kXr-((-?^O6hIPr$ftUVR`HkooY!L{-H{X7f8GZ~ zJup-#v+xdD{s+v$xk#q*ZnnPZ<)s4BqlSO#m_pNYTr_gw^wtA}mf)(z2D*#dmRUc= znHr|m`@tJ2n+~&s>Ew_3ETUmVBts_$m#O9+oAvM*tBGg}8R zsR$4-&}){ogsa-t2}rd`{Lk~lwlpH9E8`UeML0OZA~AY<<;WM|>MkXykcK7iisdl^ zUF}b(nbE4Tqv$1IDb5JTXuW5wqYGs>uQGpX@y!tA`4arWOu_EXc2U8Tb<&;<go%MGrq!Qz}rn*rvm|(dzx}Y9vO@WtGF2M+QS5vMw&X%?G zXG+{xa~0G}v_`4B1i@ASC|X+H4AlFqv4z(x(%K5x*EArHrc!wUXUa1f_PpK%%avbE zl_}~{P)8<4EE6}kHM?(vsioFPrn}4HbmE_t4G4NX>wR6x+PM-EL1xWfwM3;AByKKC z5MON&+UT$?6eL!X`DrB)Ioafi_7IPBH@l@tl~IYo0@wWN&V#?y5Gz@87vk5NR!Yno z4_U=NxsnIRFJZlv#QE7_UBY>#zqmv@s{EvKN4YPM|#N zcXt#%c3ri>K)s3?PKC>NKXB1VdM)bW8>sp?CXix&9w&Gemlmf5NzV#Q8~Wwe&@@Am z2-Lh{nh%~HJRPjfoClcV5M#h8Nz%l8SQ8T|-2u2mgm|Tu003N@9X*%+6tu2u7mFg^ z5j&j*={>$+ST1OU)Rn}$VzLdR5Z(abxbfRT`P)-~lYNGts@rB!BE3p!M&FK^SaOkB zT*OrD{R@h{iFVqo!6ILl_V@}vE1`X%wQC-9a{H#bFjm^v*q)rB63#uN;GQu0mT1L1 zg^QiZZn42S#H|~w0n5lK;y;$v+pwsF!OJj-SdOPpFzxE>Gg!*Ny3 zs6O-RE}5ROCEhL_g-3opX#rB9TwJsHp?xi73yQCu)a$ZcC2?->hdZ+H6BgMKCODam zeaC|kgTt}r;NLO03-7EF;rE`dV5{%gbIpe3E)z7-;j$U>;<6c(*cEdB=`J}}($mUO zBnzdcaB%5WJn@{q&eg3-Eh49jz6nGt?KH6 zFwPGMDWV3(#MCJ(+ik0W#ohFY^;x@K^Qrhk{THWB6UwNi^3S@s7cb&oQ1nBU6*u<^ zZ%zXit~;Clx(z)n{cuf#%`~?FP&cuCoof&Oew*%OgDV$DlQN)N z_c^c{sp&eA<=vyW?Ia=?U-&mkdrl&DiAfjvO;ngIh-EhdOo#6>rv7g*>pT_eV~+8`1(pGW+Tfg(`YOhD3zP*e=tEzPbDHEL-wFp@<*pbd!^{D*2 zNQFEUy_mA3Q!`5`<6d7^6*{=WPeb3YW;zpP1u2Q^U~mYUqaRfyaHN0m+sfusT3ygq z$dR0=>cc&DViN)Efvj4?gejyH?1;E>=axUC9LYZzG)iKD9_)#({*{)9coQ!dibF07XHDw1G9x{lllX_*j|0^x3tbqQgq!xasW?JO_Q2AWdf%V6YB;T3?3|XM!d<*J zQ9wFny`bh*^0l+ow`=f0G=xF#Lf`K5 zP`B?`V2uIt$}b0Ra-;iUor&G}NF~o|18UL;i1cttZobab0XpeT;I8Gw+{O2JEO@Bx zurF1rF39UnHh}{pIppCxo9yH7FxP)$+XhNR7YJ1zCvh4KGHBW~;<#g~IycT-D;6T6GLCAVweyFEUp5pmMPF^H zZgYHe3TwKhGy)j!qC|qtr{Hq+BX{DiT~~uBoZ;fKP=v0!Q?~F~!q?sQ$woVD9_EL; zVG=_XTgIhXZPE(c@nT^K+hM#OaJCe*vn6-(p*cP@$~pV~Yk+!l#}AbCldYSw;eZux3-Rwv2O9+mr4lFKr42}wM2JhV#I5EwX0 zV|R4Z*S`>y3sbufV;==z-5us}*Be+9>du^U+og!6cKAcbzLn9P6LQ7k*Wkp~oaJGh zMOmEF_XXy@i8fEtusV#NE|HnbiimfJ8p?A_uJb-KOGs~umJ0D1rdkhMmST&k{&fES zh;%;&Q2iQD{O&{GJ#$>8hXC~yjbZK+O_%wGA}+sT{X-?ORhkqa zoGF2jUwOn;45R_9{}1-J;L^&qa|o7XE&$AUE%=M=afFUa&wfw46t-H)gmhcaA2I^} zi(frgn;6WG1*=No8Z!c8EHenm<%bUjGl)zSmKrKMO~O#w0&)X)24HwI?vA!y1|w%b z3BI}1$02J$goTCk>NeuB7entZ`?DJ7vJqJxXIucnna~PkFTNCqB6ctBR_Kk_2!XQE zRTu;y)4yo2YFT+Z=$}U}poPALzUEX0ts~5k+kB%JHa5D{;!Uw&GXx3sRZt@-`w!8n z{O;ZzNS=MPR?I$>=Tg!Hp|aXNux>vC$6GjmHL5+_LmO_<-!=WCUiC4DvDarMEAgAX z>|ftM;ujGz+nAkD;J3Yh!lGl8KLO8W1Q~k1UV?cm%Sb)R%+PycqaqD;d58F4?+?8i z0+`spdQ%!g_UjJ~MuXu&DFHQo^x#erZaU#&UOIV53xAt+GLU>^sl72}7Bo9xNS7cS z^S9R2Q~Lvwj@f^SzI!qzl3vbLKUBZS3T-X&0qPz83BpBa3e<`WK}v~{-IQIxMF39oaZT0}YUHlBb8f9grRFIpLCUbzY)sS0azMQ*j6x$=YHDR~hgkb&?U-aG= z{Tsn*-n(ZhgKkcF%9m2l`>NV|Ap$Iz6THFyooxhlw~-isC4`|}UNeMw&g0=wY%Gpu zW1T=Vc5p0-OM{eX5Rg4WCH^ws=)gZ|WoM&l4SJYT!yH}8AHQD%jd*sE4c((p*oHK} zAI7>4p&K7;pXQa0^`D{dYvTWyGbg5WIW6jHtvyeo>Y!h`sg)81@&|S`B)FYR0{C&z zjXpEZKOt+cmyY{?kOb#RkcRfy%Ln&llkD;D=cgxFA?AqxMbFjLUZH~K$Alz|tdtc@ zcs+PS*K6>qz`}3XS~SuWc+#4mr6W9*>Tn3>J*A#ExkrkWOCrl8y_vEq7z=<~a?PSS*a7@wN^-!-MKC+I_I~$wr-eI&05!lawWHXQm9+QR-_@ zTJ?RA5d^@J%Nafbh0@;1- zlZL3H^yIq6l)7b+ZGeONmixfF;?3IzFca^9JK4E$L3cqG!B`jZ2(x0`L#*K8Fu#1( z^%OI?FiY~cyMzCYwJI9dr46@|vh73w=v!#O43Bg!-J?<5&@YcH zm)8b$$xBk)cF*A~@4Pgl&K5k08eA1uU1|(s>irN3m<#dm{Ux2xD1P&2`@)TO#pr-o zo)#YZB1giMawiH_qp!)n;Hw zmHk}yZIs(9P`^yf`U=Mfhnx9{kAa(@es!P!S?85m3}}jMlo~6H;D1z5e#%vCB4!b~ z;1L`C`$$Wh&f@`KS8BN2B1UEo~OcVsvINSfnCdK6*(G9w; zxy&K^rOhNqy}W!NvuX91Xbj@*C^6S4dQjZTIcnp5hR)cV z*VJ+7>LkxcaX#neyQt2| zbpgNz?s_2r4&c#t=qL<4`h}s0?tTdsEOZX1F3+FXO86DSjw$C%~>gSsvH zXha^_&xPvgtIAI;qPYe|j!xu3;HDZ~`!iZ=U$CBpp4vkHVT#ZS^U)`H(#k!5F@cGXr!c0>Q9EYRgcyO|h!fVdni@TC zY>KShpZp#6G{3}$j6XhKS#$#p?r{UTL4uhc#|xiC5$e%!6P@KJcf#lHlJF|?{F?i@ zhOw4?wd2t5hh0~l!NlRdyE(m4*9X3!)OiJLls4QFk`e(XorRh=h2@2jcrVJN>yQfF zfo<~Jh=t_+10{gz(9aXVVe_e2xJX0^NlYKwTyIFCLHP3&%i`1j+< zgZLS~1M|D^uUwYyC7D=u_GHNvlwQaQ3PQNeIuD+y-zmZH%c|1DmVFFkkss58(8-7o zcN3AQ^B0g8Ae81K;YhfoO?%DSNNl??VCgf?fR&phstfE+4#!|_R3VuE#}8R10J!%& zt|v{SJbR%Gytk#jakw3j^;!*h`&`qE4V{KK=U3tx?tosF1Bf+jJVqk$lEIrW_~sLC z*Lz#4QEU@}IptTI)MZ~8`gL0nBVZp2z*zT6FAS~c2HMc61x%u04^16J$sL0DK(MDi zujn%=;pju)|G5Y}wgvmgw&yK3h#@!6v0)33&GNrqa1XsO@2Rk!ixrbl)=hPH?Phtn zC61%30-ZX8INTOiczqTi_5_9l2&e7xb!kP906A)V zlYYYbQa-NyjYoLO;URbN3N9}l%W=Y)%Gh|v$%+QdYA>1M%KgEbT~P+xgzR?yaH4?0 zJx%OmEf1|VfDZ=iU(SAo%8RtWaBO=%#N0bytwSaB>S>+);vB2@(_Y4h#3d^K zpi$n7}zv`57>H9J%itw)Z&7Iu;O=lkmP)b|u|7zkdPAw7bF zlOM(x%|cZ9Rz3Lst?QP*c~W!qyODLynVhTq<46pun<~6${YB55f1B=3G(B@i@AK;B zNRFUK3-4DizT(P#r#->Z1%nq-aHk`{shL0M=?LwZl;DL$o9yW9W`wa*;3XcwgE{Td z^IWr?9&G;6E6!R2CngdY5(G6(NXOirYs{$%)cnjm#E(t51&t&F%jI0LwHWvF4}S9F zhT{jYw1s{TN`)mlV1$#G71bSQa>L$d2nfR1^d)Z7EbqeLLA_jtQeyi-Z>ZOwF2TbL#i5o7b;#_mKS$&u2 zb_hxA+(e6?T6q|{c7)ZMs<;C_R}SP-9dnRvbX9{ zI#Y_QJ?X|eJwzBpe4sON#&_JcU(;^Xc>9pZ0rvZwvO0$%E2XiBNtg2Pn82veMqH7K zZVKx7FB*!~0vtY;+%-zi1xw8yWPfw8qlB{@0WTByN^I$q-6Iz1cqJnSX-kd)N@O#)T_s zmTJ0y=-^e7z+=Wk?7Fj<+4#<1qr!z}R^YbMT)>Fk+P-s4s|tE=KqUrAg#%3&+ilCI zlsezFO^~@bu+e>rCjs4)`C8}AI_0;`diHedd($5;HG3Mik3`^BD`<~}I0q%bC53rw z)Y26YN$4seA08u~n{WyS4Fkn^^*9(TTnZ-klLatnzVGNE1W!D2bhxc>Cz@+&F592G zJqE-x@w1||+TyEiGMXp)uMwOG7%i*vb=lRozyY;!@m*O|TH|WGWpH7{<}YIKhfZ~}-#nQ8$aob*F}*?M_ee1O zu5ds#C+qdlQkGY9l#Iwq;Ra4<-th`` zc{_>VBZ>=LW=&ai3X#n!zTUBbpu`6LIc8S_SnO4rv6&EIYp{0z+W$E@eSui0ULaU0 z{xIJnP{R}E=Dq;JJkDf@^t|ApEt%I9HeXP9C!PaxlyPEm1}()h-=GqVL@q2(R7g_? z(yxgeN;aA>DwkU9`cXzPDTrJ+4P?i%wOx;JJGnk^c3{zITfK!=4L{WKD@Xn{Ri-_Y z368xETDRfwEp*02wItL?2px|EeGNq$OJIdG$Lj`@a`9iCGzL+bTf?7ar%(X?Z z@rZ9RjHo*o05d`xm)*~To(!e@sU%M?DiXaW)-Lbgl9gri=-S)q9v51vvg~3!otHCp z$Im77Du{Qc_h5%dZCJ|&c%h?88-8P;%(UOZFKYIi%kU@COnHtvK%&zm6vrU$wm@X{ z%B4NxZE8{CQ`W^cLiag9f=Rvduy}~5sXwE~%d_XK??M8e`w$Z$VB$hKpWu5UDgwA* z|M{$1WXf1_%cDGtwoqs>a^Cc1HG!P}$x!1?N1QoFT3*dFMGk31F&)@;xiwW3paiH< z=Ie#Sxum%wjsl>jN1}?-dGzs|!nz!}$5_EA=>?Q_nX9;uVg)})Xq}pKpY{Ph(VGp| z<_p6$&uqMh!Alf9M`kgi&?cIO58c1r!&^O44()mNBlB`LL%*YgUCDmj(qS3;Wi~6X z9G9@lzpO|ita8lZYfzYL3;9BcJWT@thX?Vam9K&w2boUg7*M@CSgRZf}pHs;pXEiB-uE#tMxU<}-A&q9F%R z?T~g79+v@u8{ZX~_(`sv>Bs8taBK9yf~7-6$xPH9afaZx`B@gR{61N{ia}2BpSr;1 zBq4{_TH4Lg!)!Is#F>3gT?E<5Y%t* z5_;fpMr|KGLVHdmOsGh}6oRuB@CUCI6N0N}`pPZyfGY*gpxoj6A>-T(xFMe*6V-jD zGObW!VTN()s~Y*;EZhtDnh4UUq|wveW{7!kJ8YEBt+aPMR@x|(dLpFS5H#w;BKf{J zwr9=5qXC%<*KtJjtB@GO|W|)@=`wLcG7Y`FeCM;5B7g z)bE+cr&hE?XP!$RJUN^Dt?NK<0#j6u#Z+I~II2BTkc6YwTeY(KNL(CQGuia^GYFd5@c#96Z~1Moo2$h1o;n%5ZHSY+zOgZ0~9oLeSfqPZz*uZ7G2jqE=~ z2!EjLj~(jF!}D9x0WIk6W3T)ztTnA1Xp%raje~J)U(T$^tb*}m-QrLRJ6mQ~=Y_N6 zb{X8M$|Ba$l>jKcdgf6a|73I=OLR(IrIXz9h$FM1{zM3F;LhF@f>zRdw(H@J^2>M3 z0%kqK^q$B-$dS{ZR2;QlM5@#>DtsmVp|7iG%iPi6N1K9SEarslw-u9#mx^znyV+BT z(j=oD3zc7t@Y~^JuM+MEn|tj5BlfFvge54rsmpMpdnUxjyPx-rl4ed*f$Dp(I^%$? zW@dC}s|@fS7r0v2rHmOJ&-)-oDh(dI(>!V6USmtBTgdRtRa-l8rZL+(gJc3-h{M+< zxiy`~DCy6MXD-sAv%C{7W z!{t?XxRK_g;aYda14fba$Ih*=7sL#7F2&plVtm|b*fP4umQHdkv^-fG0GJ#HRkUff z7Zko+1HtXrda;p4G@&G_e`LQe>@0uLL_bs3gMjotr}abLb+))_q9ZRGB+L2-8rKp6 z5l%O;TZT{4`^#JYwS;Lx=0nuTQ8~RT6YuTeV{zdKk=H1fIHILkyy*88J7$Ccu^z=F zQ>9A+vl#hOny8>}!@3PX*W=Rf4w1G(kaaf!;``O$X5z4*6#Xf=BrnPUABma#LEf}kTqR%+NnQAm2gLI z=qSlKeR&a&MS;MkcY=}yR;O>Hw9;hJY#?e*VaOR?_M#3E5*0;ZR^xekws3cxnRu>m zk-+?un&=X;BWiMh4Nc=WeJUM6>5|0)M!MS*ypfA3+bl5awWA`PYva%1uJ}8#he8ZY45LI#ZsZ<{8N4Ol& zM6A!S+)67t3$M@ux%J{4&V;IgUCjDNsS$t`p0>6=%Wfd4H8Tgid(!=~zpvBLMXEEj zhf9g{-(3nfX3!d^$*uwl%Y|u5Q-`9 zYNrO#-5u8!wERVuUfNSRN8~Oj{y&nV*&O5m4ZZDpcQykTEvn@XmGQOIa+UHI>N*?n zD(PjFofb?BD}3x7D+3BZX~U|W#wyv^oFZg*qU4221P-61;>(}P+! zuDDn7j#mb%Pxu1fM;ODhhAQO_7Fes9>QyYRy|PLfpGP>yHZ-y^-h&ULV>oc9ntzxd z#dBhr8l>-%TRGEWYoBQ&gY=YwOIOdh-D!+|ii|;Y2Q5!O)lBQ&wp3j%S;zuY-lllC zEeLO|nr$;hpsVtPbw>qG1KvKilTF5)G&)zCA9MUaP7>AUk|;bvn5`AGd`EbZY1pN9q z&-VsAew$aFUpo8Vj)rS{@O0nM=^25KQWAZ_9&1kcCU&}`;1g&3y7SEAw(8Gbi?0dI zevK=ZjX$0v>ar)&+&A0^_>67Qe5RqNr>l0R#uq)buF1{}N&Wk<+DFwLP9mqaaq-bM z-+!=AoOa6bbv?_bN!wXu@1j-u%@WRFvm%7c@&*XK@!=$4{gg$`=0ePnSWz0Jk^}4t zp?dKgvSiHrOwS5OCzf83ZRH^G-lMJ?&v8M1NFpW2oTO^&WjL$dM65Qr1MoFr4mVo} zTKUiQ#H8V8vS19Qb4*Bsz(mf*qMw}q#c8Qdr;)6ud)|!5B~psBmqKnAe7m9n63`?P+D7ABXF8MA-VbNG66ZH+qE^E@{R9UKFC> zzJ3~{Sd~zWLro3>HjoyHBQ_x*8kp* zN$M!c2dEuw330ix_3nXz7t7x@N~uH&*YRGw1HJh8CEFbk-E!>IwvSll8_eg79oBlaWRTy15l#--` zT)okG{#KNziA!BZ_d0$@R&_XyHciisM2G0XNYG+f;e}RsvbfGEIx_@NU zcxCu)S?b37H39`WnOf?r`MMEBUPHpWjM|ULp{<~{DobF$31m_p;?F7i1z5(+PvA5# zGol>3PtO8$Z^>KugSuGlfocKjx0V;wTH_(H4-Zs4#Bz7vQ$l!>6sG@d_)Cmm7T_pz ze({YrU*BAXcJWSAT@=BS1|4p`W&+z&VDn*4cBFn za%3NoSDa9nCkC9UGQ6j#%&U!kX-pXe#Y@o9_J${g%a!Qx&5wuU*PKJSKzpGeS1csl z^fnZ2fY%2viDpme6KAMzJ*=X8j)M2IA$=>%_62;56ym%PzaltSQ5mO{4k!hkzm7(J>*r>E1N@1dPd^o z1AcD5zrb0L@gn?eL*Y!jp^Cl1LqNM|&=p#>8oBfiIWy4+AnIm81sljA*IqRQ>CYPN z!1FC}e4~sE_hAObv8?-JN`VIsE-L%os&`^@GiY_z0LAmd-)7fwyC?g?dD=Bhb9ud( z7mCZgm=JoQW)%ll8XHh}Ibeq`4H0c42`)9yv4)^a-n}dxEW@luqoDC?FLTbVed+L1 zF^6ZrOeG4oh2{L1o%^CiK6d2BAMD3x;~mq0WqK3NtdGiB1ddCl zg7RY*M4?Y-FRd}kOfA22PUXLq~jTbyy;cPJvY{g;C(dDN+z6O(zbQ$c2>9}ZpRx! z(^{npbd3i7^G)cKjXewwEtQa3Xrpm)9nb^q0|s#&ViZHm>(=rPK4(jlnA5Fw3RDxb z%+kDBWnpP7Sbzs<)-GrgmG3-_2W$1{kP)(IeQ~1_CYlfI_v8?-TFL|lZXHtt0e#r| zKG)+goH5(+N0bHCzZ~3tl$z+{;YV7p-Mk%JYVgf+0Rt6v&p?AD(Vs^RrJPl`EIE3> zX>vn9S`CpoApKPFCvPq?yj)Gc;-^J4)kNN8K5Y&mN6U49oY7rMm1`%putr<#TS}?O zHF|595eu~2D5i5BMLR1WI9MXs?OpG^2s}hb2B9*~9oI@tK7oEb6JL=dk#ZdaH}z2k3&nt&&`4Lyro5J1%f~3tztabX^9EJX9@@ zUJ(_}0(Jm=@P>NY+OCmlTerq;)uit|3CJf~6HjF5#OM_NPy2DW8b>vQ-x9gCybiE{2$ogm- zBz}5sJ`2{9;Yf*Ab_2YZ} z{c!kFnW@hq=h{kf=y;E84Cp^(;VKNvR1*ZS=%tcOckIwf@N>B&lZU}^A-bEoJ}!XT zs)~A~8$KAM$Vj4?)Tmk-gqal*DjIlM$%A+uz`q}E5LDJn34mzZ)#vHoMa#0Vz0+!s zCS?tfWMUrpOnzzPNtW6iaQT8&Qf{;PYza0;mjN$&1FwTG<|w{HjtezdL?Nx+)iim( z#-5F`7&@wJe}7XXDchu@fz0WleuZqlke^o!9;pL6=sA+3o^s!T=iCci)15>O(jM1S z?8u<=BIhcgG95LB0bt;L6j=pPX-$l9u zz&8#afi>jYRu#dlf#7_?CES~pN}K!tFkJ=*F1Hy6bWA$(kzWW z*u?Y=RTBTI(Fb+QhGu@q(!PJ%g(Z=SSKYLZV)>6gzjwxf96R(97vHa-4$dOV3hr1h%H13ws#>n(>ar>Qd9yXE6x_0X>+x)#Ry zB{ouHfTY=KoYokO+T9Z>q>P0RWVJR6YD?*SQU?(Be-^=sr}9t=r^v^wbOs2f<5eSq7#hw&2d!beT*+bIb^cZ-=9}CIVrjIGW`}BlSghKoODbMU;K7X(I~&-@;n1c zwH(+lx-lZSoaG&K^AIeH#I^;fgRhBr1cq9ji{nlTHu^7W*QY zlrgy<-`V|3+WJ7$0zQiJF!h=XfE=U&KjJuF17qG4L_WzYX+Y*!s+VE_>}RV%)<>%H zlPi!hj9v>h(2#9#aaydc7CznD=z{F=KGCNb(5bDVHkkqbOfoghwA^Nfyq&4u2(L(> z(a;zL)f7(hGU^U5I;;ZBBL()B_R4g>%~F<-+YT4=I2F$vV%wK7&H_WZ@eN@ED2%f# z-ZF5%5r=;T8U#QzLt|LG^jw2#&bq6V6Swe6O~0|d7R(^kV3;fD9p_%>anzz~xy}0% z6Z9kb5Na^xcQwAT6MaLyy$3J6=h0*B@%>e_Pjq2$)hF?kqbvUEC$Zye91uNg6(Yc? z)3Q!c15w}WNVmy1LavNRCDTnu4=O(^UJM5Bu1G9~dhW)Suj|T3OZ?|uGYyUTG@y}L zC#vZx9GGzm134_p%qgH)Q`Vr+8Red|SVk+6L}kO*hDy+5CWU${#VIP7NnmH(&QQEXo_qS(2c3nmKCVzl*vF|-? zJS|UY^7n_RgS-KWBC%7G3BGFhLLrTo&edcm!)6%4&`|z`{fsy$4{?Fq)*BF-#M5GW*QOfUz%n9;u9-oRYwUi-=paPASC-%OS!`69EN z2^YzH{>j2B?mRvdy~>`iMoKltbe?_bNd>l-o;+}GR@2ruNvpxOs zrGG+qPe1CLlXYergRjBga-lgG|9c!V=g?_=9MUPznbYs^dqLFPhB7%0aedm6$j9la|x(uT-w$f4&R02 zK&4%_ctzzi!tlpDyXhzsfrR5Bw76|zJDQ6@--%tWWB6}EZ{3=JYXwJ^3gSdAE&28* zE^NyO7*x~UG4y6-_yTb|6}|G&f@V9$3tx%36&n>0>wPeRKVb^jxqSN~I&|l5maYaR zr$WZOS>@NUNsq>jh5x%0;jc9(^=%85obY=tDFM=68Nzq!?Xo_x#-(yXfbxMoxK7ce zRh%c-nYt(r?e3K-G#eM)`MdOf`gBj889?D?{1^!7#_tKHOIrJn9Uv}F%Ilxeg{&=) zH@{qUJF5_Q>UBk*6r3nImK>#{3ok$g^S{KRbp;hiJA!m}HzUv5PI@Ui?`3xW;~Hd= z$FHBw>3xezXXC>7hJ~9PItYS1*nokWx~;+w=B>r8LLWzXL8q0CpPP(&S0=_2JwS58 znz@)(I{YeUXXODQBG=ha;Ln%;@Q@gMo#M%qH9>+SFilPB*oml#`IBPOnmhnkY7r6L7@@cKEy&Tl_Upf4?Jrgl%pwEh)o#X7gZ3y^H49R~r_N`^ zhH5th)_=P!=er_}Kp&QEiVWOBKW%R9oODPcfAGqoq*9pooU-B+0sB584MqC}s@j7@?W3RSBQU7i=@J>5&Y=efJU7hub z2rP-aE4PbhHT1T#TlZMMj$z3PUF)~_l31r+`y3YQNp z+sxnDAD<)V1wxY;Pdg3qnee}@mKyX2*3Tq1rGJpUgc}r>5Vlwl{X78lj^;|xoR8JY z2-eum{sQ?Mjm$2m#I7lrn5akbjXgG9iBv!&Lts9oi;NT%*kFU<76EJ`+YuQ!T6H{# zFyA2JSe`tN(v8fQ6Jo2RCRcv`+BXRHxT(%qNgdNVYVGO^LW&$aFvfkS z7sTVJdFEUORwkv`WFDox5$w|71l2|%%8DNm(6z18Kz@SY%vrN(@j_Qp^8pd%d=Uhl zS|&4HluDgq^azx=mouC?jLl+51Fb#>?i~z7^5Uo^zQ+n3k!9-0Rb83~#KQg#IXNdV z5kD10=loVsbI5_H3s+qUNr=FqFOP|6K7`rBV@^$`@$84?NzPW!0oiou zKz2H3DX0Cj1#8juSLGW&VE}M|Q>oM)uP{4}stcYA>9s$R(jkt8IX4$htEuLj$ z}xFp9Iur!iEV3PVSdARQBs-^+Nzdh!&& zox?A{Jaw^KzA@k!N(g`YU6@%xd3Lhr=4`Vz90R`Y4jCIg(X#fXo65a9t7UNId8plc z*3(dxIGap9>(pM2z6a9g9TK@4((-}Y5@veFG7TWt=m3qJp-1&Xe-8L~qT(Sr^_7kd zmD1t>Fh&f$uM*j(LH>KBfjO6pDqrgS_SbHp>L%(gru`c=pzyDE4Kwcz%PkBTRKltl z4}wydXAM3_bBSrTXBGFUiDO|?*0+cXg2#yib2FLVD*nzHe z2ITvL1TiAA=SJ>eWj_;b6vRc}$C9S&y0Oz4frnrt!#vqN%ztN!P|F_*Mp9S zb7|LU7O|e1zoSz@zW(1iBI*+J&ujP5L%gq|WpHm|s&>1p`9o< z{WA{$z7iMd5BvvY6CyKRKU--nx62_zTRKud%vs%*fTrLt0qwfnU$C z@Tn@7<>NTn+HAe%6e}T=A{9kOwv!a8M2IaA`zNcvf#R;k#VKh!+GNQt#9YefasK1C z1jrhbb$y|X*qX^C`pjU{%7|C?eFLwHwTw;l(rI<3;|~k&(Sb=fc`HtPon_WJ9Z{^+ zKr19zU4>Y8FVv&ZhMc&sjrGN2cZ)6np-P$FdWFOIDnI(vK^#!sIAlakcxSp^_w1gr zZ0*CVYMQPFG!4aotkolpZTOQ4+WW)qZ{lQbS)WfuXcoGwbT_M#QPH~luhwnkxjBF+ z&p)@f+_Vy)r^9aRoS-;;7CmzUg^86MkSV~!`h&(d~U5T0}M zK>37xJ2n<53C(G@j_y~!0rL*2OTi?uJKJsbiiovczd!B(k@Q;iGej#drXHxD3yMBS zj}rWRz$}2*2L{m#N>F-}`69<+6D@`8Ex6%}GtE=g~ zA5fk>|Wg+%{nKkeqeE4Jx!pY6o5Hk&%j07C;x#wj=k_VLL5A`O= zZixnGM(PT@CB*e0Xv zAkv8xsx4i>%G9+zFT~0y6^SB#K5t*rbbC}Qc^voHdrj`+pUvM0+qz9QCp*hoM&p(^=)VJHDs}! zg6~iZ_x;5IY06BF>Z&lga9?khKoH8UAKIkEuxh?VjgCtm2c{>7faJ%F=W&y|!8uvy z*>3n&jk0mM&7oVHeJvryHugh{D#jmW>;=!t?6-Jl`|3$8?n=F;ov$EOzsYW3EEpz( z`iY-fp5KURB93+b3jT_5%iDNFeh&rD&G%5q$c>2=Lu0vN^wyZXN(SeRST|{Tvs#7O z#ccf^bf_5*3#LnW>n7RF~e4$6;tzkrT1PD`)4uMU9x`$pq+9dNn5YTju@dFViZ`E%=9B7d=;dU}-C&EKU$Vh725S=3^h-Kt?J(Uppz<&I=uEGG0AtT02!=7ex zy2Jmj0hh{zV?1;lNd|loz7Ks{wqsz5*?V{&bt11`M#wtMi)(ZIkb=-JxxPVuhz)ubbTyu2JOII?~^>R)F|oRD1z7AUKyrl^yi^p7o|k;oP^~Cv|tZvhU9J|@EK{y z>?z_>{JOj{CR7}4nt`J+Ww${uV!pKBFkn(}0>}ql0~)Y^@v7J>8(XETEdyC`Rs2LY zO+q34Vh+^YNAAKaMq^DL-f3T53wphm8(3yz!)7H)9ITrdzGvG%aLz$jXpX#_!U1?_RF)RHO{u#_Tf6GbH za#XqDcIBq*NbKX=$JU{%J0IIW-;pMQjLC_4B#v%jPQiMIUkj zg-2|c=W$Wai2@CH<;3Sz_R$A^`6vduY-ASL?nQ3y<3I|c&7k=)l~ zRbslJOAiYP(n( zrulakh`wpiRo+X zQO6HJ=|GG#glpU0&GgE)QEj_~^Ig`I;>Ch;x`#2OkViP#D!GXq$3~86d)z0*=hy{T zk$6h{Qr&89AGLY0TwPVBed4rk&hGhjAMyM=RC-1`@ZL`)UM`$>MEzwVaeR2~Z5OY%kM(2`lr z7Ys4+np$FF6917=H)echiShl>HhCu|T7B(!DTp&&;ZAj_j zGS@a$?Qh*BrPw3VJpV|cV%wu&ex*buN>{|9;EK#gSTeZ;e5~zAxY?~(9 zy7>GKwGH<3RU|t*P!9w_Z|}pOa(_iTI`ZwdPt!Z)TT~*$GDK#yQMg-{>yQ7Su`^Ei zqoq4KBLjJINV5T#6TTpHNR&m`+{f$pQ2nMIPeZXi<*%C&Vn8`c{{k zbL&h%hyGIH{UfZT=&3EkRp&xu7!Pbhw#08CKa#;>Oi6*yZSuN{5 zScf$k4F`XE-3w`NYze~w6fT9QwVLc^&xSjh%{oi(et{0_8{}62t}GhNNE)ZNWOtE; zrlgx)GDVA0Sa(03OM7Ayu z(Xd86X(+p;cOp(UeZtP7@0ICYW_(#*Q=tDpgFTxeVg@E2h()Sq<~* z=ZDFb9=a(~q+h`zfR}Z-@@E4N zP65Z$k_#<3CtGKy@UHyMmW`aj8DxCgZ}w7LTTqQ`toOc~(^&}8xX+Ai{>LBpQmpHN z;QV9V5f|0S!_h+t3BV>ylC+MzI!Sgf22B$HD_XVw5*NV~lf+6N^Pz<$mSp}M*O7vO zZn>e?zCL2tlds^VO*-x*Ods2lTv~+XannF5uI)1%lK(~LggOk6dm>&5y6_UG6V4&x z#+GyfyyjCifjkHc7^!qf=}9i&VA8si8CeT)U?Yz<01bm2#IijLVttQWc>sTgdasN+ z5*ng#viO@``EhDa3{ROUU5b&fNnOalW_{i~&NA0v?B;3+(wxGn7N6w3p-~j)Zh7^e znA8Nk8IrFp`!AX+5Z#t*_`bMY(YSXDEHN; zLjh(fdL%^gn@_@uT;p08PV}R0w{Plk_bj(s=Y#5G;8u&>-)Dx13#vcHe#7KW^{&{E zshY-`6B=sB7FfIeu*5t73Eht4r!L$I^K-^_jTQYcihv0e9Rsh3Qy_$TiN%?{RUq(W z_`@okMT3+p#k3fI^jw~xg&oD~be~q4V3&)QvH1cCfEodjiNH5bbPAXG!6`FDikcOT zl!-Twu(}A&alz-wnw0XcFY=Jgh5HMqo78jq3q|+K9;gm)_vzwA_MRoy*=5e;C0YK- zYOjSPLKmFA_XQ4wbCKJFWO`h|9w=H2O#cibY4f0ORKFSd%fAEf=51s>W z`2weIbFf@jDKAv~spu13HnxN1K*>_F*IU7a5DPj=HqO$lbidEeIb@x1N(q|q)omqc zw0_eC4yC_g#cYNlAa#RhQIP7SdsSfbiKkUNT3sa)B*dFH#Nz=$G!HBDnht%vd!O$i#gDmpkKC|bDJ+^i5!l~+qAVJ$J55>p zAutOoTt2Mo^k0wzUMm0j@fnO3Kn2u-X4E4llfgNmr&Eb-_#Q<$_wnRo))`G4H&9=M znqPN$Y(}c`(UplIUlZp_y?Z)n3qw=v`OJKrG9g+kAuc;t--Qwz)^;S&W~tZe_yU?k z{5$29LXZ^YgbQ1I(S=rwoA1IDSn;%IjDr4MSj#d>Xc2$GAJMX`#;S*G-6R7OGE|oQ zJB58m6Z+!zy~TViFQ^$-`m{OUnc63HDeGYBaY`pylp`6~t>;wP86nueiR_r&%c5Zu zE%0ck8r=BLQF*)n^;xPa)L*pc7jt5=^23<`qnTKp;t)^@&EO&LrQhrRT2WKis2w;d z$z7flZs@bRCD4iu-HjWEfXJH^-MAhaRhxnAAzC;|w+pH_P_2bJV>*!xAhNktpSWO5 z15CojFBcLP*k~M)WxmJrd8hI2qe?9sgE)gT-#(#1oZgdH5|4sN&hZth1Ics^H-o4l zMC?BwFX_D0ypOl|__Z*9OtKMiFPsf_xjb4?x!WbkW@enn&z6t?J?8~3{~QZDL#1qr zJWV9R_T_9gNdQzajA5%d)p(h9AxxBa#^b(n?dZY<=fTP;Ufne=AsMXBxUz?`zgFNG z36Qc~;XPG;Az-JLfb(O;>Qw^^m|_b#f@NXmEI`D}%JO5u6ktmDh7xp{i_Ki=J&$sX zsXl!r$ROi7%H&eF>|yN^!1N#nPk%Jg{LcJ<*pNa%PczUm-txXfsRcW2rU=um3|h2C z8jogE14Nytwd-o@riuv*R{;NckqEEJOy!t(sJvH@Zb?j2vU7o`(L-;z%?f8K=9A?t zBE*2MAHc}mjxk~@(s-k-bR?oUF>M+`Xl6xThoH5)$iF=Bo97RLE}D0`eQ$*`KWhELHr zx7k*HX&`Y&XwHj>SP#v;?o?D8#Ylb6Oi7<3G zhvC$TT5c>1F5=TW!k5eehw!YwQTz5^!VPcqkvxl9fz&@Z@>!V;0dbjm7=>WEMSAj4 ze$u~1mEQD?wSa+#tYWNG1hznQBbsQ1?EFm5yYV;^&4lYE*R!C3dUm&c>wSt9b+9!4 zL*V3S&nkFBL1!yuVqAD}nH?;bz`qpe;%(Yw;eW_M00Ojfq>K|&1AE7NSHtaLyK~(X zO_c5AM7-5@FCHK{pQ*xK?OVh6yw4r0NrXM{q4LLa)z&4;K#L>T=345L!|sqgXPXgU zRFBGdp|Qlc3ABAIW_C>K8Sm`0KyI||sp`d-o0ORwG!cJBK6RQ0A3AboY{mA%O*A50 zDD)uzqbie=N<7g7f9b|PC*XNAGG ztWgQ31#h~+TRdJ_`I>KRL;R>zr`$E!z~i^rEA-{p-8lP;a2q2AE_X&P+GT$EOlyVE z^fvDmZftOmf!VU6-^DPIH|)@&C2u7N*^6j)g?oGZB|y}1c%n&M&^ZN;oO>)p@^Sw} znB5*NPf1J8tpgGGLziVZpX z?gUAa!mEK#;MlQx^5Ny;QERC7sBy0{-IwyA|N2uW?`ICp_+uPuQAx0poHuY^(jKhP z404Y5h{AW23K`^q=9b63!)gHAFAjjtpiecreI$~#;S_jOLO7}RKZ7NwB+jg)_z6Jr zQNX;PO~FS4njPZK#8H+yi}zjcR_svcf7aWp;|j(&yG>`WzzZ9QAEARf>hd}kOeyJ< zdky9V9S+0RODI{1>9w2C)JIrye+;*S@1?JJsAC|0lbV=X7Fm=(9^DWQcHz%+1O+2H2&WU{scKeph|ber*i;~Eumw%B@Mmm7gMAR z_HF%C@JrOPFqZLIci4o$c1m_!%$1Apz6xlkr&f1wM31^cZ#UImG~r&)_VNFWpFV+c zp|Z`mz!64xGODzA(h^^%<3RvJ(^ogf%5b||xm(y);3VAg1=&1)-Dk&Iq34C#NS_Sq z#w;Vp#%f*gd(uJ}nl{!DXJqZFxqMWxdDm~Xp*f|6X53_E<)c=PT>$fFYj%&;f+$|o zBbb602o3tbBbpbSS4V(BZxMoyFN*S)2#YEdl(ObCrS?3!_>^E18ta1Vg+KABRj zES5PetFGgLqPBH(pNc1SV-+8Tc_W(gH37;^?u!@$IN{4w_1KHtA_q^F`=Ek#mA)&> zTXef$Iq$H2#C4=r!$K=V;=UfbeMxFkmQBy{BbsV|($*Zm^hDMoJ3^B8OZXq6)nkAm zaYFBBdiQI~r@{UfN_UgI74n4Sa0InhFa01@UZ;sl$zf~O{jcorLWY5!IwGlOhhX00 zI9ZRiC=TAT#8}^v^7u?9D1fMgI>svS@Gc(RSDTS~hN$Af#y~=4iIX z(5Mc)n6yB;Q>S4}_2n#8!dq?xZy;uaI_d0jBG>{>0ttikwlxH)B*8npFm@iAs0N9| z=rb}=g-=gjNB_u=fVUY;gF?@XhhbbOpBLCfhjDo@ONSSNv__T8h%uW8he<~u$x=&A;u!1iArfvXrv`7XuTMa{jLjY}>iFB@^?b3Slpn z5e`EGQ`%-@-GeDahQW^%hS&>MDTr4mQc2`l&VLSUW_hb;W$y>zR9ZhhVS5xdJalbW zaptdgJ2?SDfgH45$^DHM>!J#_M2v$Iv|Uouc;yv>| z>$8JE#mOo3gVIAeBZr`JAU(a+NTjgVNGz#VJU$-8SpQ&Tg?h{UR+xN-YSe#UWXA{| ze{W%lLcO#`wVz%2B6Q?3oM=Cds+P1{>x)ofPx0e9eC>MUDGF<0woo%9Z@HKgG9tyk z|J?2Ux>k^Djofdq%2+*oHMREX=Z$M>Z`A|}v#q$-m#~1*1=j_{ME@vRRg*%B*B{O- zq1>RseM8gjAz$6K!?i}T_gFkOdz*&-fzSn zR0_y;*JxKfOeKJi=aP&B$Y|j<@Qvyt9%*s_YK+vz#yb9on=BouTI5%JmPnutI1G}j z=E1k5lFWb!!HF&cZ+hf_QigcQlTaU>yZd+U2g*`Z1mR+oSSFIIgEnRxgFDzr!cCyZ znGjWBZB*E8np9UP1mhq5%g??G=+^R$`LMQjp4B4m9$2Mi`i?L|gC z=8-crm(Tyvu>NxprwRo@8~c0&N}!WeL}k&;CpN&rEL68aY9@F|TCE}ZREche4`}gq z-g1nchkh-`w9sAdn)?z}Dq)IOVJ_1@GcrPO;hWmn2vI3w+38$n%3T;&qHG2^o zCu)2lmg5$~tH4C0`FEuRo5p~^(}@!F=5WtlM~|~W7eM-M?|SKEw(sp-S769Cm+~pn z#vpd`L+;?nc2(?~78*AGBD*fg{Jk(4!V;wa7i{t=04B8H!h+qm&e$5Yvjyf)un}W4 zc{GcJkRPtnM>JNB6*1-k?&)OD)NmE5OS{=h_u|ma)g&+;YWb~jx5{h!@=}tj@R&09 z5umbb<&m7-3rl3U#yla{6^pK@f0atScC-P*L}5g`pf(JukRdSxsI`hU{4psL3%COS z47lKjS6JbC$qZ|mW^Z#vJd2%dR8e^MxNb$#IV+!95^i$`)n#*~oqn|Ouv9Hd`T+kw z0Kk4{R`8?t*U@`9;tCy+TVrw8RLt8p??UZqx_mpumX@!)b$@w3@)gi+L>;ILLwGzE zXhpxOc@erS{x17Ctg2w(I6XSN5Ht4KMDvWcHSr7>0MP`oZG*+2R2%&!a1h7>Lof5s z?vS6-!#c}Zt3VRTEMvN+BA8RK1Z|*VC=uE3zQUeKU(Gjq29RCS=_J`hq>sqEVwXPy zyDgR4#w*t2!}UC*-=>E-ImUfB59MvVJ+}C-pR=cAsuS7f^*1?M`^)My?w;7)IW2qc z5?`CK^MEGgqJ~RxTVG{cQ6T99rYdoLqfSUYN#Bbt=nvfZjG9JumIAT5 zdJyoPw`6m z4n17ucndh=7hAvcDgpeXNRrBX6TC1|dhxw}s|lR`%#^u9q1@ zF4ID~Cg)=1Z|yzdM-sBmBW~dABZ6ey_l6pw+DF}q{?&n%Zot)mPZ8SmxbVp_HC6ZD zr;MG?@7m`FAc3xD3VD&)4aMi=Ns)DpQveEtOP5V;=C_ni9p5)YA=RyH)8Wh`K7{vC zg)Yi~gfDbyLwYn}O6%BikReL|BN0~xM0C2%vu!s!xZYwHDX|yU%>r|-1z@zA+J}E~ z? z+FBAhinI2AR_i^An9lP?XpJg>oQka_K$4jd*RB4|&YOJEFNcLNNp!ZYPjs_zFL0pj z)!?%r0*S!s|25CxREWZK)H~>8?RZ|2Lt#r8bDM89*(8b>xFX1RmJQ*X)Awvuds9i{_zf%hNEj8Iv@D7)!OrZ<{mbtn zU;lU?om%5mFyXQ3B%8$sF?|C-hB0W&?23F$g9>{tU-C$bM;wdPCI2xY&Ri^;l{y#L*ydTw? z&uL@X@%JkAIh6PXH~b3@8FDTfmT<-YkUH53Y!Z}|Eecpifi*%H%W5-z5&d!4jj%My zV-4kPPw6wVwQY0!zbgFrwp6j=*&+XOl=w&dVtEP%3QkbNpKbXn^7^Opc|Xfqo-K|8 z6_<<91!qak_osXXWYt;G4d!hSzP9hHjQY6XLovV~8QBe1t8fTS9!Y2H_=-U+$JD&0 zxR}6LdKH;Y5uAiT3&WulQm^g&JKH+k9F9w`xfEk6$;-Oqtfa(nK%*SU;l+4XEf-L4 z?k{(x_`(?*q00Sf>hOz&l+=p6V$ue-g<5e*5YnB>Wi-~#9dHecNNKUCDqbY3oubFs zl9QTf0d8WQofhSR^r=Ngo`+(fd@VK^7=_*fWXXsfRB*V%J&wO1z+Q4Jk|)4bR?VeV zBL6wRkv4l|Kw#@6!gO8UzTyJ1Az%CERR9OXDDyQZ!q?z@FkV0D1FICarjU?Bvtv?7 zDLeW0+TJKEq#3(^O3bDfl@(G;R_;-!`Z>mQ_EfHPnqC^ca2>1IkpuYzI%;LGLV?%j z?;+hgl`j~60{J7s1=5{?KYgiIi`zdG8VgxZN=VAKh?8l)+aDYG-wxP$-syB&hZ;xy z&a}$17xlySZZ1N0l_)YCv2Czn`snbS1yYsPC96=4H9G@$@=e4d3+poR%Pl);dJppj z2;r+vn~wZtfg5PZ0{@*B2H(_uiNJiUiUM$ff)ik)&xm;t45bgBC3pnap5s)AL_ zd^UNEv^R5Ts$NBH8P4M2sm(UgOfi+vqwBPtq*ST{Q?$oXyv~c0l@I|WGv8ah=D@Vx z*rOJx2xvCH&9A~+3+?~BK;TO3$_7kHxDnikb5wd%L(@NvC&EJpn+Q~OF>>Hdxu%MH}$ogG_ z%V^ysaT#lblT#hZh9S&Lwihpa{)AoAdb%?NghxDJ)i-0h*B-JReTbc7v;aGeC66qz z(cbam$N1vLBNwjyK8g{lHc*6O7@iks@u>c!AV7T^L*SZuSJiV` zqDzgHC2mJ4)$XGRpwDJTs5e(uDfI5g@_*iku(|oX*`#l?AQ)i89mjKKgUHi!&X86S zzpn3KfQ$@8byO#JSnA$LlMr}35u{LQA93fs(!ZIUzYfpXnRWc7R3NYWqqOl)PHz>C z=nuy=*D(2Wc8|7aeFCiwLNe#MeP{Yi2-+9Fwe^(Sx2OUukz+a0kuGTf9hF63x5D4- zMkfpsqDuh7y*&A((UbAT}Z@#G5y{AVtgq6Zmi5wh$ zO@|(hcoHU|Z|LkmEH2#X?h2BlfLcu5&$C$(X|oJwp&+(2xXpIY>C6ep6V{NTi9=d~ z6KQo*@l1QT`b&Zo6ny6u9F9bnJtD-6{mK$JEPH_+RJJMzimU~-Bntq(4S>3im-x-q zOv{6ZP8jARKrICq{G@)n-*QplEGpYL!7~slRf{*PBKvo9`mYmF4NG;w;RP_RL_oKD zD?vtYD735&HlJgsOn)a7v)PHmEIY57)H1B^91G}cE>>XrQdSclHEu040FW5e7fKgiu#o)9} zFFL3ls#3OPMw96JX{WyvX$|9+db!4I5qNcLY4SzoA;AY{I)snJNIMjpFK#Bf-)@zx+u(v0IYcE*DoP!1jqGUg^>qs=g3>c__Vw-G^BFb2y{AX@cxsb;BY7A*Hd&&`Us+KteH-K~X~}LU9}Yx^0@3 zn(h(zA4|y)D%jOb@~gLiWC*-oXAs&6OAVfA=h|B{cB^%a>r{H(&_9XK7PW51pRwTr zBbYYfj6jeQ;cr6{I&h7Unhy&v2Vw}6*c5EAF;BfmM-P|khuJsaXP(EIFTyraR0ABx zD>AQw1b=xA?e!`fZT~Qjzn2+f4WK(P$Z_O@0uXS|PR~K2yNB+}l4VQQ>WsUtI10dG zubGTBS@_e?>db53sT0Gj`|RPP6YCnzN7(c!3yQ!rMrlv$T#Tc!26T)^k}5J15oDfa zWJ`Pd8lGJ?N^!eWGbOaV=g*iO`E<7~N-`X$CLxOF711@APRjkNVo8<8Ij|AC{KR*@ z=i729cSp{UidTk%+ex;d5PW_RkQ_w?AjjM7!>?H*$pHv0F$@iNXNM?8#CL!MpSCXG0ahlvna3~Na% z(sIsj&nYux9e-{jKn%&!LE0;azA@HiI?gFt@rG|K*Krg%RpP!GHizD+c-#X{&qs&6LOVJ! z0^aEKCP~c=**72B&4%)mdn_Cl2eR+HY}5p@XL0F0SG>Udmp zOhp>jzt6*{dX{Cn_1c(J}Xjm{=ogI%R?XA{=xF;(wiQ-qp-SWAPlV7N4>%APjSm){L4 z2{06x=1HGYKX&g?OB|$L3~mIydLXsH)BMu{Q9uMZ$S7^_T%nSgFcVtTuDfM|n~cLf zCuF-FgfVc%N|5M_L#L1GE>3Hw^2HDh6AS^sjdSF=6NF~ARd9m0=XCBCw?j76W8>7I zzr9r<+<(tX{x3~{1T3whv^nlzQ8K%#9eH}9S_*;Z$K#w;r_To6Sz{0LA#Luuo&v$W zuNVmhJ@w@aJdWaKak7qRI^u)1>I>NtVV_%nh%N{Y?e!4d_`vvd$|1>TfI}j4K18)A z3!hKf^ay0ZnCTqt(utx~WB|_zumD!WIiNSpGgO;iVNu2z0oW)jxzfuduZx%7Oqkb3 zbHvqIbRJHUL-)s16@NKC$*N+kVrXq%Dwu(**LH_hyFoTaYk~ z_@eds7P+793_TkZ+vY%t#!TYLuMJtu$zB> zNl?c+j#Se>4<^Jo0p(XYPlEyb!;SNIt$ak96gNN5$(-K|ysL^XlXiV7GK5_n$YnQV zAjvPT!w$SxR(*4m?!~0gyJ6FeLk`gft?^X{LG)nm*oxdp z_W3H`TG}O=*&wv0IthWm8*I@;6tod=p|JpBAcJfvu~q=Q>jf-rJ<&_qDO2}y{hEQ( zk}%TMD5BM*`$J;sx=8GBHjIYbm3}y9iT8v`o-7#P=6`KTrYwPq>0lInIWFYB)%IQ! zJ}MJ`2>A9Uw-&ifbulMsp>`x1n?sesp|t}XzEcbL?+i8yBe^Iq*#uKv%V`XH_G14q zyD58XOalNTW>{C!23?6!32NGPzpy=?7-d)zHqR|0P>+^hI_ZKym7by8M_D3}GP|b7 zK>J1*#T}%l+R`#EgR|MlETd`}T)q7m4h5JcWIB?deSO7n9$-4eseh`v9h~a-pmgsm zASQcc3a;HkQ0#p9+@k`-fJE)oK^K#^&Af)>>V4}8RT3~}^WAQy;x1fYHgdp&u`C+t zhe+9kA)@y-g$7%+@S32O2zb(^fHM%bC*-Ei^W**bj!ti>T7{y&JP-R$Gy9aKyT_y* zHjkVzhexj99RNr~e&vJRsauEP!A9r95x`t8BTo)W!$y*Z`2&8f*7z4WJwS@}xFtvt zOK^+QHfRX>sav|_l^OK7&)|4v+UtSx*~f#x=? zpy6dFht0qlV$!v|c;bX0W>g$Cl^J7kcP0v;`;K27jg%H_NqPDU6Zp7Pc2#Q0bd7Q$s;SUbx5A~khNkRpzcQL zx2tZfGx-$EytY@)TaY-Ai*g0dF_>v*DfZNU-)lR`Fil`P1B*039kn_DeP_&YOP{uq z1+7BEo1exbDa+~)N5ZLw-nNuWG*_K#T+W=YBd=dAe1gD{!h>jU<(!Iw2lnVx{uP2| zI#0NFYJ_H*g19mo7et!F9C@e2I~Yho%HT+p26=zi{-3em6@lnNYu8X+oU5`5(_t+? zEEmoX&}Gi>V*vi9)XY$!hw{Nl(%p2eCmJUFN?Xw3o59N_zjU9*{~-1*4zT{^fC8wY6Deb-in4d*b|VSkKjCKzV^ zI;84AD6J(JM4$sN%C--#9zA&V3*Mreq_-lY2L$s*fHmZOC;zNjXUJdT0wT5wap>md6QZO{Pwn3LTq|Qta+98O3G5asV&J#JLs1hN>vf8 zlUTgKRN?T?C(sY*U7RnUADJ-v8X1i1r-v}oQhh^AO)i6H>-A2jYq>(Xo(W^I#@;Ui z^LVRAE9WBbPPTotRM6(p?B;|TA^_oY{MD`FhdATvPxGg1H;Sh)1&|#~NfBB%w9G?c z0_&W#5gtow)}d4R6wHReBPa1#U)H7Jw;kUs9^>!rEiU$fg+02Mbx=T#d(8uNz{gSF ziab1F=E3gsI1bLx1wz@?;9j^@>ACq$+LRo5d!>kNbqdjue5OApkR2%<*~wD60i6ec zgQ9F4qMjfX+@ZoRf zvCe~r41XDjOv0`_=E`k2olB)nx&*CUyFNjc>=elHbX_+u-EydxbKraK96-90U;1Sm z`<(7yMx=B(bS}$Q$yfL797qHg<4+7{WCh7Q^c*273?hWBkS|6S8JaQNz}Z`?2b?FtycuWC-(hvt5?lG?;SE-zJM1U zb<;Oj!781Blyv;6>|jh<9CFwKob8ACQ&qWc@%NkJt8 z%>?)UHpSKHcF}-tLZb-_Ayio6KM+uz)oq$1_@XX8<_XX+d^c)y z@Wrj(8MBiwqFj5wPn+%&@L4|~Vi1OOb7{MZ8A&3VMLFAe#gBRP9w_V0Uo8sbL0SSk z8VAfcNXq@y+65<-AY)J9uYIzHsx4d}L$jgv)=HJ_$yn&s$r){6%ng2W|BypKIOp@> zi_o4@CGt+tx(G7VA`gS_AAO4VJmXB~{7^EL$uZUr*_ti;mpu8gmO5a2wGBK*DI*pW5;C@8_So2f1($o8Qfti%q7UvL5r-B3E~9cBSC zI4-iPVy|Xz(-w7gOVQMV|{HjI!n8;OZQElB7Gwlnq&0$ z)Ogmy|HH{@0$3uiD{ed;En^%Ajo%C}fwR6W{5Av9_44*G9Ui$OcRqA=Q?oSL?|#b3z~%ON=Z-P=3p-`5I+yrZc&w>8!y<%3@veMs$F46$T!VN142 z?V*IxZd(*{Tl-_`H4D206Lce%+_Z~oT*LBUX~c-w!Q4OAcx~DNvgG1c+P~T7$B11K zEixVL$1PD6KhQzS!x0Q}W3P*&yVeUG@f=_NpM`w8qTrh#TsaaFNbC9Sa8+ zDUz0%tqljzjc{GnIE?WnL)BFduG&Rq=}TBBZ1&jK&vzHY7L2(Gaf})|V;Pc*_;y+% zS;=94LjS=nF71+xIti@(E}aPgCPE;>lzE~_DnQl-?YvoXYQ{j=Enf%62`%(VDLWDH zwDi|Zu7I7*F2Ut5$a=(Ajd(K3(jo(`w|&nK`=hl`{#!K<4)3ORn@?R*{-eZ|yc&@c zWBge$NG~bTmuU9pK5?{>V-CJTI?XplZii>V_4JKQtvZGMR^jbYXK8XUpLD-a*g=~K zeBJ85j#X~?1X)`n*yVzHAskLrRyYHRAzRNSOWn6Z_G;{rb|>aT=c8zeV@F9c0))@VVz#N_cxQi_#vlFWmlQyv%&9Zu z-Y+Sv?8{b)nPsXUAP8RFob^{**}L_!?ZphAa58ST{UVL)`7)H(y&o##im}H&89IcC zCZ;ioBW){a;@pBP?s4eH!%#o*1-Y7~J)`w$BOXOmV9TFY_$V{5DV%{>Fv2OLUx=e0MA#oa5rDNIhDmYx|zIP*Ij^BEF}1om1PH-rI4m zL_%OHiOX0fa7V6LISJCh$TuN2ap66>DWHcK6?6h)+o!u1kz{mTO@O1s> z8k*;n57?F3EXYm6hTl@c+#wDcQ-!+h%U|(lVeEmFtNc+3MIb1y3-ohZ_YoOu3$=kx z?S!yJ)$c%H5L?`xG9)IGl2LQH(#tt3)+u7fkOtDsGXcJF!ARGO;=lO;{VO5bbWm;X zK}WYq&R!XZeMMMCizRXfnFvUqo$=BQ=N+W{$GYWO&M~X~mv`lu;R78e7>yunGE~6O zZ7;S=t{rgb*z{+n_=3vyc!6#~COp29B)Om_RrBIQ&i#Wx#u#2Mi8=1qG2Z%%Yb;oBkmi=AgOQ0XSEDf?2Oj+`I8SeZJxnrkChJ@zD8}$3Fdl~J zi=eOGRhAnc(aNW}tI1>IKqVKg0y>jAc$v5W+{MtYM2Jl z_ecs_RHugPY4mjbv|7kd+!1K>>xe&@8hZ3sc;&}0H`M!bNk$mrl<1Ew<#d|OR>vbI zGWRKpJT^T|G3Fg&g%D@=>dj$C81W9n(ro#(8q@g?rYvK0T6Us$2wpRXYcikxX4{|} z3tbdhr-D8+eF`lmr7Sucl}cd<0jdF9!b5!YC(Sr%Q0Hzpx)CdN3&tjzykSf3k{mtga1!Pt3rgzUZSK7AJwe$DhoXDvSt;oJAE_HTKEI5dC{1Zd}F|_ zANI`^l&+sfF`aS*n31-`y)loZY*MY|8GmH>qX(P*2##AVn9_Qii2$9hw2`rn=+tlN z_&CE;aMcY$XKt6<@Wc$AK?g6EClXf<`WJvWIzPZUe(cTtY;G&q9<2fjQ#xt9KOad^ zue*dP(x>bm5qmHhyToKTy9M$MN!Ve@vLpm@oIrKuS81~;f(sX!#=%r!_GM!(P(oqI z5K_tzO!#7Q)`J+uE=#&ugfoQw9pWv7V}&IAnjvCC3`;Z0Bt4zeY_K-xq`h9!?j3&* zXRFFcWfG)$t1qFSGjBK!AYYwSm%6+Ii4^)~lK+(-gxSMEal!MU53PA%Luh=g5)nWl zIx}4B_Rb%$WyPZ-Pa5f>Wf>BNF1wEAO$n_7^l^_(e;~G@MzUd-^}bDPm{(^-(Pb;V zn)iD)-`GYe)JlbBZEiAqx)QhT0#cRywum8mBCwm9|H$vBoueza+q zoOkWQRvs}xIyg*pfN1}yf}|d;@So&N^aQ@5)uQ*7A~`d&)i^1%Y9%;ga|9WROXj@5lfy{R<(mpB5*8QdPEKDOY^&Us zd>i&E5J=Ik)nB&U595Ukm6z^vIvFZC?kvdPkgZR9$B2)<x|5Trl&s!u?VpYljoVEIHSgHbFPbQd{xU=?ZU%ufK6le1u!yME_PU;G=mnPAsZH)mGc$xc_<5Hahs&W9}=4HbJM?xZ(G z_HK}PsFBQL_!%EPfFIL1-;?_;-lh7s)j?PK4+z`Wi2pT{nQHKa-5ke~C^TC&n4o5s z{C#MSO(CBhf0Se6o+u04+YI9H(Lk*X@S2%%$U00Wz0r3-4fb{~kICfy6OJ+>k&p#- z4Y~w4hNd65+^3>)y@aW%tSEwD@m2Q%cd5tdDAs_~(5z)7bzLwB4w=%|e}q zS9y55XVOORZze(2`l9XBuXwt3kZ!Ep8T z@V2Z`=GEC3kp`^Q=j)quVl@D&Y;Qk^;ESAf|HYK;%nld>-9X!KOB<53*Q?9ZinVj7 zmYm)MY8yzdI+Z*o`E!4twyF!7sqG+xd>)>bSUeIcn@d z*UyT)m$1drlEx_BFOrt=Z?o;Hhk-?(R*KtQqZ*1I<#}uDXRfRuuR6xf!tgc++q6*m z3l+BBcv&dhk`6hie?Utn%MVqP5HZ~CKsDi2|9sN{D%dI@Cbx$=}^zc zKqDZG%h4+c%soEOvEQ1wfw=P7CcUpRxx(X0xQJiW@?5|i*{JwE(BFKf5bMqWhJo5> zSbcsC>r^a_5fpKX+AM@?XEj574;B{pt*a!72Z&338~G_Rxf+3iF4Z{lanIwrW$4UX z(sh*V%LWCQY&4hy!~d7Ti=K07(Q_3SeVUa5djz-h-+B^<(OHgl_l#!1V)YG^>3e<} zGHJ~!NK*ae3Oi|v-910Ak{F(E+m%`gqKs4Kr95z@$oe#A>@@&Hhus75|LptImy4Yd zO88%-d$Q9yucJ$YWt`pgS6o$L8r5|zmjunL@{Q7X6r#=$1KRts+t*#C1W73T60H6(*bs!vsiSji38{ntS-R%dZ1Q3AD8nYMBN@~@7d1-FP-;; zz|NeBcAe~llvpHIUv4a67zP|2_q6nwr>Wbm!SOs+IOB=ChAcTHZmqYQ!cvZ1Nx$Aj zSUh{*J$6cQ09w)@A?#I*S&fqL*F1PQ<_|1d*D1zr8bhi|1hv2R;5{nQLZ%~K`onos z7)4#xFUD3kX7tg+HpE3m5opcu)Txu8CdRQwGhbX>XF9b#Fl>w6hYPNAInqE`wm5<68EC(HB6xm=ebp;+Z1@$Y z)e^vRjM7v9uZj0{?ycIa_Y(X-K=-$tIVHA#HV}`B8l;Y9G^5Zf`)0w^eL8Gi-g-GF1v-_Ag(qJuc z1aDjWiYQc0*q0?+U9utgFUHQ0e1tdkxK-^)YuN$jD>@u%+U$_Xy0g^Oy+`Hjb;<_d zoho(AqRL~4%-hVXj^;3|tvIx&+kJ>8`4^FX-cS<7b%R7LZFohH>K0~Qdo$66oJI^? z{}dF$V@a3AP@6EO@RBKO)}3R%zNTgsPm{Y2L(T{>rU+h@2~qu=P{keC07uvREC`(w zmkgRolccWanc45eCAv##n6a?%6j8uKWuFsAOlwviP{jIZX(lT);D;b-0+Rb`%I^lQ zi9FXzod?cRMp!;064TLyT92*2rHI7sEW&+qk%P68d`>LFpGnX5{=n5;9M12Co6q-a}ZVli8PH(SA+SX zw*0`v=K$oolB1|JB|=59fXo^BS9Lo@;!xaagAt&a!HlsGJ#{gp5xd#O6j_)C61|Pd zXpW^%bNzt&_vC%9Z@X?g=d6QPZCeLg_M=xbYP2$P#)Zk&Mg}-M^N6+M@n;^S3ba6L z@EIe#^8b=jc)?JZNFG&+lXPd!BVf(&LGm9)pRqwjT)1-Mq|KoNe^W*!Z9Cd@=xV@T zcpfiW0tsBHQ`F2B-1m)W*<8KZL5&+&UicRGfUf2T+g@keNtAkCPQ0zBZ~%xyr(B?B zj|^gMzGC#<0CN2iInt`HT6z;X>+y)e5lS^AETD#1JyKtYIf$#_VGyC*^IU+Ej|?-2 zsNii=Soq11NDk}w9=Z_5Ix+&uECytekMvPLv`BD!eMJ2Ks)~ak`q^C;fK~Vgg4~W4 zVE*$CKMN$rmp42dlJUBX00=X@N9^UT3_b_by%1Id4Ch#FeW7f`AN*;O-`<%U6^l{> z8a?IH?(auH{<7EEO)VH`Te^8EzI$C+!(}`EXy#tUpeSIZb(m69Mt2jZQnkUHB&p*G z1f^wuRGi|%4M&Ep+B#-s^Y zX#Y5lNE_eEA=zAmp;{JAZ`BbCSn_NYRy6^uNE&+%7-#E5R4{5J|9JLKQG!uE@p&{b zD=S3neB7#oDGdaLC!CNIv2pvH3cH)EtJR>5dfSQOe+6T2*toJWxKNw`0Q~wn3D|(6SUdj?aO?OuZ$!`64c{ zikF+mQ&Fx-`>+fjF=WZ_*u0l=AaZEws-&JBt3aIU zVk%0xX7SHcb!+|{B+`)s72NSHDTM@vV2i_YY86JCUeG5(b%A*b*&`>b zCQkF+^=ly!+xV@0j1G?ev8y*$q-un^-FD^QI=72eS@5nR1^^++P<+44#AYL4?10*I zo6d9rQhpy5-qCZCvHq0q2hRP)4y+Gxof030iKZvj(Oh6d1EPBDn;w5e(|1mfV-S?1)0B4+(>tw=%km&0&74YFR zE#=4XT(+-&hGgOolg*G_=!j3Ly|!#1uzvC`@$zdevt7*~Q~>C;t?aG0e`?E!)@YFMc30W$zA+TiH64M6Ty-JDSadmN>3P5pRWq9WZDPicMc8b_=xRG7AJ0OJ}==ZZXqRCZcDesEYC>1Tx7%t0^4%~XYNM{w@P?}#|UK4sx@GE9NcBV|QO>_=t!ih{C3DBaLKOB|~`0@~O>aC2Y zoG&aW>eo4^+bF3W0fD23)uZEr^1}<9Jgql@>N?ThYvYfVA2=LHN9zCHMe0|vfux-&V%8$DSwpKS?|>`x z4@s?-b-x*F`}tx|>X5GzJwDTC$%=)M#fp$q$R8%lS3k!IXcSGb7X7VZ5p*zKQj~ul zFUo27UXtF)wKIxw2xyw{#sb}ZpZ&hl)Xr}zNsDHr^>+D0W-Vd{aRgVwZKW9rBXFvo0WJ3x)1 z@Ty@{H&CT8Goxn?DHd@&THr2RgB0ZKQXT4Rjh+YpG8}1rC=SIUM zw_m!%PPJm&s~Ly0Doe=*&=ev1C9+Ur3>hioLr{oSE+6wc;mo@JVAa?D8_Gr-fmDcH zwesqDCQ}^jZ3}R?CJXWs0>`_JDx&gNyj!gO!?F=?7#KWC9^Gf%RdlPW^(Yyg})75h_iZrCTw$Ybnqy}QNOQM0P z)2_bXW3*;CFD0WI+C%{D&Cgla6}}F}2RfIq>uLoY$i2f})P_efZ8m`X?u$$Fv;xdh zR~5((yN9`p za0D`nSUY4UqzR&NBM^5aiG`-|4**tq*+1b9_`Z;)#^zUY6?<(*Cq2bT#Wl#-Lk2@+ zOc;)#18%M?Tj8Df24QNyiw1D*TMj%t34G50#Bf4;1;J4lXsnD%MXmYzgpzsxgZlrR zv{Ls$?rE6b>B3S!7P}Emw*c)LRJ?g8!(Z2z!*}b3FRFZ_wbLN+i(hB723M~FSZ|&E zcE7i6`0Fn<&fz;bep&71xfTBa9w(K8SVwK_&M_Mi!@RE@{=TS@=g*x|sSNFZroS`x z=GC zC0Q&1GKBw?Ip7!1s_pSQfh*Of)N+eO5c-I1OdrFD0AtAZC~z|L09N>xus{=fjrZsM z&atMoQYH1^!J4QQ%|XFXxXb+wsHCF#))8w}jn3GMy}}s`53^2U#pS^fxW?*-=o3xv zL&!(UDbj0rWASY}p9sk) zO7W+{vud@&tU7``g3kO!PwEj|-cqDazk|w_I6O2!(FegDi<|A=C^pF;U zARJy{55uTg_Q>%j<##+xW-z1YB83ay9D%BM2Q6^Pa9CG+PpiObi z>7;~BbJV@UU!FgTvY3XOj8K}BSF3F0Q11*pIoUEK**XK)AF<;XKYBU)?n<1W3hyG( zA*-L|+L@N1Ajl0;JtU?uLmxlJbz80VX8TC^Yu+?rke^4L#lN5dUz_&>k0B) zYM-HqD}-`b!5gbkCG&VE|O(h7N0;4;?r+5?w^^h-3tplgyT!=J1U4X-&K&cC}%+ zIjzgS?;W&Vfp{|k1G{dLs&fA-IhK(9)}57+KQ`z%??d_2+lR@`rf3e|h0DU4{pPfY z740Tki2NN~!|w0-HIHW?;VtxpnqWtX&+@$}-tI_Gp^>1;PaDtu!R{D8CajnhfY^P$ zUg{Xj%SIfz?zfmXu?r#R2YIs_1CkdJ>tKFVuM!5Ve(X?%JlSAW@c1>!R48ik|?N0kAODbf)ExbpDy&GWUxqd za&EBbWF+Or3X*&&m>f=W;c)-R2kp|YnXp+fjs&7U>!z({IcepQeOuo#?>L=8g{a+_ zTMW>&7t?At_fJd`hSUqxU?4!OwOsKr0Q6TL2uvQkSdxt?i>+v9aEAzc$@C38D%?Z` zL!tbvZazmDyYEI937`;PW=jbuQ(|1VlpTV#b`Z#|0FN$k=saF%o**b|MWoW|6UB}! zhEMTnrwCJf1NQh}KU3V&sKz{tDy;Z%_Na}E+;{{ArtXKUHd zcEhO&f>SziDzG2u>U}pQkuKhg>b0K33biO>1$9hEk?@zfV&P&_R-KS)CG{TypW42F z#$*2H8zV!%}f>@+}91Y{5dcakCQEoxUVXB(aN3TuFN$D0s`$1FkRn@>{I-{Eu zqm?dum{ACKF$pm#2lJ2TA92wv6sG3}vNU<*8E>nj5M9bk&-o@K@J%b=kGO9xEh4K&)$VUcwOWWT0-;HPOI z-1K}JI=9ZJO*mk;1D+TXPy}@@w5;v0EQ?w5roy74$dq1(#e-4h-CR%R<4zF%eXDFC z=L^3+ zKpm=(abk!eu!Q41=Sc++1%)wUF{oJ+6U~Pn*O>jBmNw(|6=!ORaj#EY#_LgB;46`M z{*E$YZu0P#{8$Q*Wv$^DH;@p;yNHN_9h|KZ=vkKer_Sp26of#G`i7Qt$1W5U$}qr` zHZ)1?{fZuvF#A(nZbJ~czhf3Znope2I!}$UtAag!jri2sIUi&jvclu8^MpRbGbLcChd@H! zNE;v>CUEnf%1T6>H|oD|Cn@2|&1@tV?L=3=mtu;}fpQ+9)SLwm_x12I5%re^zw zda;o?J`@VC%c`{O^s|ABv)+~SZWy1gt)5oPoh5=p$f>8#`U8lC3vcy z{pbX&m4oRCVbYi96O!a+sIvbaF=uWlcA!_A$wlGcCWVS}A1dcj!Z)UE$pKt$;gquJ zlB#uZaRHDSZ{~!9L{n=5>5Jxmd_|$%CA6foLizx%s7$`MGt859jDyqA(mdrt71#=x zoH|J?49noRS1zX1$N8NOvsz$ZI0OUvVpq2;2mQ2or4hI$&Dy4#)iMW#TjqTUM=uzw zmqeBs)bi>zPUkYQ1K?0=rf)d=PrzE?o-l?8q+~^_HQgKg?Dhe$g_43 zcrYHQpjI=T)8_%Gw#dv;cQ_+Kc~Be9C{gaMQ3umMUBlK8fT8XG&g76)WV+H$KImC6 z>~brpLVQnbB9$M2t_Q4c%{JIs^}1)i3L*8)ibw03hAA=FKi<-8!s?kWZgR-+7cPcH z5mcfed_a7Sd~Bh%i=EQXc_malbRT|sp&O0-u~ARQv_NsI5bTfU{0ucRYiooukr-G$ zm{y)5j%A>iUt(HmK_)+;B4Ll0V&D~7p+Un_s3AX=uXi8pVn?H#m)x>zh0N0X@0htI z>a`AlNFOZamn;on{a#O-OTSr&@K5K4j6U+=%)tL1T@dfIQYS>xg&JD>anKc}j#zCz z*k~TO8}c!;mU4oBhCmV}t}JqQd0!99=k^qwu)QBnCWs_P?dOz)3L7eNg2dW#t~{G5rG0`%oDIQ zqM=dI3Jb?WI)c;*ra=1)bpd%>5{J`fE#luXMG>auFfUi4A`+ZDlY*k2B_#3F4B=?? zN?VYxRQd=OfAhSO0#gpgV>N>65@gM#;)iu`HAZDmUlmj4`v4O$6e%?~ij#Y8S@`v| zTLTM(n%49{ zzEb1(609#pjG-BZ|89`|03b`&>uwRR!~-k3aTgNiNbsmWGHwQ}>Wz3-KvpUtyqE+p znE+97P&h`7DJ1_F3q#BeT+n)~=}xE~@X{jbBHD|(CurrvixCO$RmCC0r|Q6GV9;gr zER1FJU;20R%dXiN`d!5tCX!7>h!~vv73qpbD_~L>A0@~(b`y8)!{~5T`Hj>^aU!nL zAT*|;XKiE3*YYEDJ4}U*G=YzmsV-|tI3700r4Z^&UR5ClCDg=CUeF`{T9C_dcN=)P zy6$+`q^n~q0Gl8+ghBgBPoOU+Y(&99A`dnrff!OFQY$$H8SUroMD;Ki{@JbZ9UBis zE4d)AJyBshJm5>VkVUu>qtv3WR^sy@q_c(qaBu9((@9B*Z}}?Wnwe;Dc`1w39T97Z z;BVY*L78@}Ognc+n%nbk1J)1)dI+k3mZ@wtSEd-B?BMe99#~ z4b$~M6XYTtt(bCc0{V9r%>^}!AjckuxwlAP;6XocNfng<<07~H!}&Q(d9in_R0SFz zXSA$IICnUJTOY90RJD(cLvQ_8HF)i5j%rk)Z7_T>%{XL)9xm{~PG}n3VxNDJGJlON zNS_G1)NpI1t!K>5xu3q_;BUW;JyehMwJQ%>;)mztzL_ss+aC zU7*gb5UZClzY6*TDa(K2YI5!_3rXUN*mH`iX|y^jB!+`>lLuzD)j8<}2isdiC!8o1zpk(8UhWo8ZBS=dB}XIdI@jCW&nVOCw!cI& zUVcXEbBUH}WP4xkhQew|K-CmRU&A=)EG8Y445&;{t{{h~W)RbsEU9?rdPS_DA|q-S zT_7^^v2E@zWK#$EJ}FF2Az^eoq2B;gab)&HiF=;TFN`+3lvILwwDG22P$6py&a#&8 zUt+5vyn%Gh>#ry?P?j4yaH>*N>bIO=Bup~DvKR@yKQJxo<8T(MQw(ST3>s7Jaepg( za{vBc1WsCPJ&PuWB%+-f;p~av9ks{{TR^v0kVuOC2WHoPS7801uxDv|o)j;4mC-RD zxUo7lyhG$QdXh$mi@bZj12WcQ{8rs`aMi~WHSANT&Kp?rpEI{MqA`CizU!#w0yQq~ z0m;hn4mw6Y!54~*MI#EDb{Kl zr80Xx&=vEAB5aS4W*+uLwTDKugo2SORN7cXr-P{{dj=W|x2rw;Yu0@ynej;I;5(AP zhTUu^>b0fV_uGB3Hqsgy#}n7mLZ%ZqLA70nsPl&;yNH_Vf6hJv>Z$)00%?%Q#fHF( zvb$VMnNS#)bRJCOxi`pL*oenFoDelBYm11H0mWLf2+4JaBxHD+6<-&@~%y0l7j}1qASTc-3W7 z3VC{;!H~Ke4qdXt(#1JNZVDtc_|}$VhiDz`x7H-tCi-!FzPa0;J+3QcjmpZOv1|EQe|z&En8@YQR1QC z?^gJ!@~9G&D#1#c(?uhUUxRb|)Ym478(nR=4f_5x!Mg;rkqYLUkYU)fXal-adKJ0? zl!CY}io>)=A@0xAPyl6PoRNbzGD6Q)Ip~gKlEPa@ItqJ3{B!s-2$)9NDLa-D+9!F8 zDMSfHtKd*NbmOG6#6J2yP&a$}_cG5WCdcs1@4E}^31+V3H zho0}yAHlfME9U{Pj5sNj3#gs&x)+=w6_D^zj8}tvow+1UDV?|CgIU;wpmBRk#&B~c z`TjF2#Vpr&p|o%HBFF8HfIf=9I7udG%2N?eQlp3r8bsTBKk(vnr9?iKWx57oU{WO0 zyQ(4xVK#F(A80!lsiL-UlX`h)$i`BopcdSQ=u`$U#5dv;^Q)e0a}3)W`M=UWVvQNQ zc<{$5A}Av^Z#DkZY{O$5>}4q;9pHJHpp{9rF(rEYI@h6fcl^?@Cm-|h1 zx0v1)?XuuE7&f%t!#%-VawOz&&2V}1hb#_W1}T$DHcT5TK7jdU>emF}vLd&;PV&e8 zH8q>dd0@pb#><=0c|d1FWn;Z7R6!t%m5)@PNl;fB%s0s+Iy&y>(2!&i5XkGleB7^= z`>VC_{ubzEgGTbfE z-rI90C@V`6<)AkI#Fc7a=2w1)bbnM=q|1oKXB3f2SGkk72sb49q9u;RZ5kdk>CB;@9Ef}_6Kqm6c8BEY*c*YkQ_Uqo zthyjrCHuhJL)~&zJ=;VGucrM=Clak<)=oV^4UuBz>7?v4wrkeN!M{t(q zwSV<>{_x98xZuyiPK5Emq{nzmL&o4t7TN7=MGK902j+)2&McZ@-^pUrlgVpIGlmr= zOS`8;XFNQtncVy3op;Tr6$Q*|+`Sv2L(pSx1*^^AP>U$9Y$O$pp40f>r+e-BTO#P@ z!x5~+9hlBCgWeMjrzQ_HS0AUc)pMrw=h44vA07+D>rlvF0$^S`oSfay-NLdBA2Pgx zH;+H)F(-~tf*iO`fQ3%?6(s1D+Y%ri4lY%AgfFfOnI@Lgu-m6D5of`s@va&ibhr{C zGXg5yUluwuaND_#o2ruj9-7+CVzEsbcL4K)TO4eJ)!OfQyB8T`eNUFi^*AVQpeOq^ zBZlW+T2$6`BSE*RfJ9wW_dv92h%e90~R`6F&B4GcJ z!klnX$Z+dxUJWue?vJ?KOr;I+S_>y7T_{td#p{49&;j9QGto?&=-xBGqP%$lxs0IJ zLk*b-24LWipgsc4OaojKx|AB6lEA6)xwTQ!pmuTmI7hpkqKm94zaR#{f}OG|+smJk z5{r!9RxF5T4d$qnZ%wd_n>^%6&lqDNWjFyK?;`jr4~Uh$HYWk>vfm*Vw2}1`^k>ir zn2*k|j3V~k6!lLR)Xd!cl`*EXYh+120_^?(dDlJeOXLGdj z6U^*~ZbAkq?q16Yd*gC!iPj|{#0k@Rv=+dSkf`qghWCR=9^l->3=@RQ)?=0WDTvxK zpPg(C-#t!VuEBSpt3~E)&&dNDz;oS(iVG2gRKDTvsllI6wf+~KF4mUKgGv8Q8JQ7f z_EmXH*Hz+p_X#PlFjEqXh#)uqCvP*_WIq(ACXeeqp6li_I`698)0_H53u1yx z(whzQ!dH466b}i5uFWevrT!eg@dKQcd1&yAGSl5|GKDYRerEp&C~$_Le4$(~`>g87 zrSy|7i1dh|M<9#=Yj)pB3%6QRe`h;w+D@&2zDJzX7W*hzen-0+$T5ztlJ*MY_Eu0Q zj8EYwjMKGX)Zh<9Vu5V3-AW37 zg!wutswW%ukL1_Hk+jXB7ZD$K{XRVx)!c|1AP~zXS5O~ zHYWMc27J`^ZPCH9bR~TZW?sR7^nYu!>y))`|FjP}+Mw9nXnOpJ$P0IE&K^6}3Geo# z_7OOAR|cP3vPD=iHOt7+Io~~9F^}f>2s>pGp}$<7Uy3*>k8oxU06-nPddBcr@ZL4a zlZZ83H~q=%6_8~C9)J@7;=@dsJ2J6cb?YI7Nb@^Q>z>sQT%6c`JL>PSn`{V0LQ-d| z8cSfySU9Uv0kYdF_ROi+4eSmx zN`51ht5$F(ZaFip|MVBEWFD1HP9u>8OYwoa$d8UimwyKA9oR@L40da8p+=>?sLel; zJPApR`AdhFXS_Sj@c>c{SUAcTXQTXN%oN0c?qIs3NYh)L(F2CkzIZo|=~m7JXNj&1 zSAq9UUwOuSC9_u04MxK4o|K8Ig;f_)f}r#zrc%^Na3` zyUV~ssda?^!P6r1xBY`ux*>&35~2kulmtCV7nsVH+D+A_glV;~mq&#wH&joCkm4$} zLhS1=OYPhVhE@=RsZN8sVH_ueZ<6HGC}Vqcorj+G`*)DGHO}9Fc#n=9?j5d=4?|JYNCC4 zWELixe%qRjM+7OJmy*3va+mX@l|-D?CrBOHXh?c%F=-JT2M9P@whi(I`EI z*Le6zAs*Ayh)ACOrk5%i*p3@tG4`0;f{{uN6qa0k8A~m1mLu#<%8vxZm5`bUBKAZm zTpO?9BT4+sZ6CnRaJw3?aJZLiQyw*^TGN;~mJ@q17}tF>jDX#9k|!8q^0FS~;FFgi zk7p#UFNjKCuL{JkAT@9bm35VD?h{*u6CL-b#wr)+vaolwR2ELsm1gntS^=`&|TJoo-r zi$33=Ryh$)Tt?44deCkY9LVya*IzJ>H^m?lD%eLQ-J0ZoK=P*TLp@d{REJZrhX^XZ znN2ciA59q^{3U3_2W#(g@2}2E_PW2NJN9?HlM7m?Vww?fVejEEFLLA7#WudEy2x3?pDO_&^ix4A~5nZZH}X&dIO1+YmzZs>y#d!Xmqr>e&u=v^I)!fA~wW0 z=PS+zFYp)|J$g#oSdu_PGS9%pnAUoe$mYet%H#B?=lniamZbuuz&y{SV%4n5dgj~V zj0!~}M{8_09|Zbb&jws$*+_;czxV($Z_N@cVnhDV`xk1Vub\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \n" +add comment=awg-VDSina dont-require-permissions=no name=awg-VDSina-uninstall \ + owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=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 crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/container envs +add key=AWG_CLIENT_PUB list=awg-VDSina-env value=\ + "NAonhRSuFIrFpNKTs5X32ItcvFuO1kiJUigQZb95YlE=" +add key=AWG_H1 list=awg-VDSina-env value=472437748-472438637 +add key=AWG_H2 list=awg-VDSina-env value=707808381-707809250 +add key=AWG_H3 list=awg-VDSina-env value=1609078552-1609079495 +add key=AWG_H4 list=awg-VDSina-env value=1012329484-1012329741 +add key=AWG_I1 list=awg-VDSina-env value=\ + "" +add key=AWG_I2 list=awg-VDSina-env value="" +add key=AWG_I3 list=awg-VDSina-env value="" +add key=AWG_I4 list=awg-VDSina-env value="" +add key=AWG_I5 list=awg-VDSina-env value="" +add key=AWG_JC list=awg-VDSina-env value=9 +add key=AWG_JMAX list=awg-VDSina-env value=920 +add key=AWG_JMIN list=awg-VDSina-env value=105 +add key=AWG_LISTEN list=awg-VDSina-env value=:51820 +add key=AWG_PREV_DNS list=awg-VDSina-env value=10.30.30.33,109.107.177.79 +add key=AWG_REMOTE list=awg-VDSina-env value=109.107.177.79:55055 +add key=AWG_S1 list=awg-VDSina-env value=90 +add key=AWG_S2 list=awg-VDSina-env value=136 +add key=AWG_S3 list=awg-VDSina-env value=45 +add key=AWG_S4 list=awg-VDSina-env value=27 +add key=AWG_SERVER_PUB list=awg-VDSina-env value=\ + "o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +add key=AWG_STORAGE list=awg-VDSina-env value=disk1 +/ip smb +set enabled=no +/interface bridge port +add bridge=Bridge-LAN interface=ether1 +add bridge=Bridge-LAN interface=*104 +add bridge=Bridge-LAN interface=*103 +add bridge=Bridge-LAN interface=5G-MikroGig-1 +add bridge=*107 interface=*108 +add bridge=*109 interface=*10A +add bridge=*10C interface=*10D +add bridge=*10E interface=*10F +add bridge=*110 interface=*111 +add bridge=*112 interface=*113 +add bridge=*114 interface=*115 +add bridge=*116 interface=*117 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 endpoint-address=172.20.0.2 endpoint-port=\ + 51820 interface=wg-awg2wg name=awg2wg persistent-keepalive=45s \ + public-key="o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +add allowed-address=0.0.0.0/0 endpoint-address=172.19.75.210 endpoint-port=\ + 51820 interface=wg-awg-VDSina name=peer3 persistent-keepalive=10s \ + public-key="o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +/ip address +add address=10.30.30.10/24 interface=ether1 network=10.30.30.0 +add address=172.20.0.1/30 interface=veth-awg2wg network=172.20.0.0 +add address=10.9.0.3 interface=wg-awg2wg network=10.9.0.3 +add address=172.19.75.209/30 interface=veth-awg-VDSina network=172.19.75.208 +add address=10.9.0.3 interface=wg-awg-VDSina network=10.9.0.3 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=109.107.177.79 verify-doh-cert=yes +/ip firewall nat +add action=masquerade chain=srcnat src-address=172.19.75.208/30 +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +add comment=awg-VDSina-dns distance=1 dst-address=109.107.177.79/32 gateway=\ + wg-awg-VDSina +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-secure=no scep-plain=no webfig-plain=no \ + webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes name=\ + AM-SetGlobalEnv on-event=\ + "/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" disabled=yes interval=1d \ + name=AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" disabled=yes interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/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\";" +add comment=Monitor-AWG2WG down-script=\ + "/ip route disable [find comment=\"Route-AWG2WG\"]" host=9.9.9.9 \ + interval=10s packet-count=5 thr-avg=0ms thr-loss-count=4 timeout=5s type=\ + icmp up-script="/ip route enable [find comment=\"Route-AWG2WG\"]" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260701/20260701014001-Diff-Config.rsc b/MikroNUC/history/20260701/20260701014001-Diff-Config.rsc new file mode 100644 index 0000000..074b271 --- /dev/null +++ b/MikroNUC/history/20260701/20260701014001-Diff-Config.rsc @@ -0,0 +1,3 @@ +5270a5271,5272 +> add comment=Monitor-AWG2WG distance=1 dst-address=9.9.9.9/32 gateway=\ +> wg-awg2wg -- 2.52.0