From d58148ecfc76aa388936e5fcd80d68e157f963ad Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 22:20:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 12 22:20:03. --- .../20260512/20260512222001-Binary.backup | Bin 0 -> 381320 bytes MikroNUC/20260512/20260512222001-Config.rsc | 4778 +++++++++++++++++ .../20260512/20260512222001-Diff-Config.rsc | 8 + 3 files changed, 4786 insertions(+) create mode 100644 MikroNUC/20260512/20260512222001-Binary.backup create mode 100644 MikroNUC/20260512/20260512222001-Config.rsc create mode 100644 MikroNUC/history/20260512/20260512222001-Diff-Config.rsc diff --git a/MikroNUC/20260512/20260512222001-Binary.backup b/MikroNUC/20260512/20260512222001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e4c465f8221d18ec18e5402c380e209f65c6a309 GIT binary patch literal 381320 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

OBS80h(eyLv#Caz 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

eaL+Dr5pfIA=ASmKVqDWuL+j zKnEimYM$?oaJB!GBxtDlkY;qHp`2@Wt5Kz5vL{UIh(sFnCX61ym z<-hV^KQLS~`@QY-98A8?Pg^r)JNIi_l<7R119ohww$FIgn(VIUiQUG!K)?!_6Z^%> z4k+dOLk6idfZ6VnMDHgVlD4qm4kv3QR&P^h8g+M{PFw}%svqSQ-&6L!NTpX`YRXdpZ` z&q?r?yXw>|(rPRm;9V?{{z)B%@|EY0MSwu~HEG8$^4VvwaI6@LgGmg+oGmu^O{gXP z=8i7le2Y9{2}Ip<*k}JKGrxZ0Ht9e1iDj}=^?7zexQIH~_;gAu{B%!iOABVt=x=se zi?ISCW`Kc#@Uz*hW4X;&v-6X zSA_N?8NUb#p0q3fH?J(?d9Y3SKLnG+H$y1z>RO^;lqSLSTvrmV4MX4XQ5h$X$&4t& zpu~LlD59%=o<1LQ5WZEXByYzX^_Iaom*_54i>aPR8_(MgOC@~aNw&>k`VN!b1Efhm zDsN!ON;G%iOz+H=kpNJVCUvAJh!g?QWbbM17i7n?VT0_}CQmWmM(orWxj=dajvx<9 z+@_Mj9>fh;t7nVRKHP%W3`?AR3F@o^WEe)Uel?pr0Wi|p58Pga#V zy1S^}2{$43qk-cj^QJk~P{!0BV+Rfs&jDQT$-(+nBnGD@$d8k(Wfk(;c(1hzI8h4m zoiQ?;af2;Ga0zFKOFUz(2co_kwV=?wK6JgvVrl;FA^X}xo^O{8fT^`KBGcKd=h#7) zEY_0Ood7*c-rG$)#pbp{;Z9AGWolwj`>0>m>_`S{lVDuM*CxdycRx@Xs$uJb7!iMb z3BYt0ogT-n3hkV9Dn+<2X@N)U)qlA!;$=j3+REYUv4k!Sa^Mn_7fK7n|Pd4B!SvtEzX@>HLI{&7eCzvsRGs}e97rR9N4|sU^LT{ch4GNTB~a$)ps}C_ioh8X^&r^ z;q=qa;{OzyXn#>jqjmL{#FF?|JAv){RaA@#J@vBg))3sYhvsL%9aDVF7 z96G)~eXP=7rw9+PiDbz{ov->g)BDgn+GARs>%t@J60?Y2$ zGTbqIlZtgr+F11%(X=FWUIwvXAT@a=W}xuODX(mb_rj{zQ^oqWjhoDuFaUOm{1!z_ z_uK8F5mvJz44J5V=+mP*^uJ~nWziCJKpH)s{9jC9zpiY(;Y-w}kND+T`*bvUuN-(p z9;?=@BS}Z(2<4P2Ol)^rE?!@l-SnbHsKdLuNLPM{yznlO-%AYqfK0NNNl)55BqOX; z(@OJea6FIOY(ai-5!eQL;e9JFo=j7osaHs9kj_0{Vx@f(8}+N`^?)I)N{lOTQH^gR z+|PRJzbAYw% zlk-F^gh35~HKqR`xJKl;bW-Otvjm&Q!~n+3*!9 zQc7C@=hJ|3%A+aOJWG#E{{`2e0#ck{Y777bt9dJ(y!K^=cSt|$Jr6K)P*-A9JfG}R z*nKk8MK-{~K&Op~U)F7++J6rutAI(fpl+Us+|Hd?W5-9yy3MQE3PSdL7ai0M3XI>c zS`S)r0Cou6U7SD#Uw*z_oHGSX z)#*L;`{f%ArcMPw?p4`6l?)0vRpUTszdV3861(s&!0k*)bZn(mAk=_DkGvlMKZH_q-NGc8o`6DYoN!vjd` zA0!!)H&|xoSXdh^##nbFyi1GUQ%Q)Aa$Eme0x zUaMAidSx5@daa#U|qK}<(8+~uYWpEd(0{<2*cz|Z=p(?nFXBzl{{x>Quo|@4a zL*CVU-cEp;wkDsXn2y#)z`pc5X^ZG$T zMZfSAd7MMJw;!G>4({#>5riO<2*`}TD1BeE*qsd?2fl~;gqF9*EbVt>w11iwKd~1rOgg}>U@vil2Q^0Wgo1xZ8$-jw1%HmA{ScoIfi(B z^q_eYYQ;n(vAboE7y8%rMGg-O!f;Aq+fSS`079Ge{MCymNyF{%^h9$RMy76cv>e(5YehKGbRdE6@j zP@FMaB*M@v`3wO6aGbv0O+#z(NvK>zx|?o=9f_Njw#G9ivL=}JDfVT!lB2G z3D5-VVCrtP-n~0im;hhIHhkZNaRv4;H1L!rohAIIwT%U;P12)sP)^3RGfc34G>~Na zWi>FMh$Z%)g3WK?aX+*Be$|rp*`g5vLhZHZ4ruw2A(o+0avmX^&hma*tV5ePKU;*b(;q{W@N-XMB0nN#%FnQ{EV)I`s=GK#W#RQh zSSEIeUZ*CYYgY0-p0T5D4nHEz#l=d>=;$@_^4xz0LXaLSkix8@>(-x&d&w9^oKk$5`+fU})1O_K=6TFIc3DJVhfDcY}_`A)4eUDMtwO9VX%fP#{@#c7+Z)+2f{0pbe&iJhw>f zjOD%vY^i!>6tu8`vOfg}a&sj%>@syw9eTcv z^YF(%oZbSDF8}ti6bR z%QJjbLPvR_?)!vWDk~Pr`A1~yRsC8-CJbw2vX}m3GkzEEo=lHi zQpe^v!Ss3`fc03Usq|na3MANq?#IF zEoZsmmNjiQ6U;@i_sZd75mt z?#yolDW}(^xLh)unPm&4S?J+g28h0FkYmAmvQg#WtAfH@+ekQJ6G;2mdwi#nqWS?X zY^fAe7OYPyb%2w+7y81L8o+Ix?i6pNaz}m-w)ST~oA{`-2E0(SH7JVke|SVKu~Hv( zSaHrDZ4x|3xQRR^%-#hXShKV|57%(HG9tW=4g*BU@%+58K1*D&g(V~^tA2fX!owzE zd6TGyyYwHZoB+o>N$s3IrBLFy(YDIl$mut z$q6ERycb0^sLapu4F@7WYevJj&PWC=Oy7HHl28hF&L*A#Vy~ydDi%zpOX}1-ii7-BAI17ip|koip^LvCEff)IHJ3lX!#PJ~;(7K0OFb7}gnU)I3wqrE*dxE|F0QqX zbM5gIqQp>LtG#Yx=8+n0SL17}9+QyCJh+p;AP>Nh->Quwxl7Y{W&n>b#_S`6_z%m= z<52$Js<6)RNWDo5nCOa1*-=a6C$lme-{3?xRkqWLrULHw(2kk=tRK=$``Rf#$A~i( zZPzps{UCv@MQY)L@(xnM6nE$^T{Wab1hiLgq2@R4mNULMvn37`1qCc!0`SMN z<8GP^HfqJJA2e?qTI^&RT>6d!SzN`M`jE<{1MA0gnd*K&QsCQ#2%BQr6yL_un@gRm zVu7*Q3Lw9nGGPb&JL$hWe6x7$mr%v4_~3Xu5a@vF&W*l`hyv<6QYC+uW0bvy}JWZ;yqtP-BnMV5-n9CC&EN4`;R%L36l0z+(Ni|kI|h_d}?<4GCj z9~b9JOyUnV?bM+KE>2fb+AYB!tLou6@c%)i_B|+KCF;EL2{WwyFU5ZPaCNIUy3;VL z7v!SohLn-?He{rKqA-Aj4?G_%>Giz_;LZjJxzAD@RNBpaB<+5e+B2U1lZ&(3gw9IE z{2k1t{sh?@GH7)%K>Y)PuIBMgWL+oM4X^jt?&UAFDi`r3^Xz?xhCq(94|%+c-G8g_{4aJ}^FA+CuYC9Cy;f_+&oG0JoYZTJ`N z*!Q0S3)z0QgaWpiR8OWJJ9WaAX@BrHHsIYXoUt9=aee~yAXCB|Nhx}yG#NJ6fcT8`WaVEQC9e`l* z2#ss4>s1mr+IzipYR=|$qVyFF^ch=q9)sKH`LHq522GvkMOBDG{;zL5XoTEzEBcBg zPi%6y=k(jlXh}TQz^1R8^CB~N5(sQQqL&j|DtV>%-p#QGR-B~l7*DaRh~v!%^cako zRQ=Ts?()fO=L-of{ja~Ih>#~=UET)df^+8X(m+d}EBhvMTco|Bz@|nO|27Qsy7r?V z&Ykt4317T<8wY=2Y}Ql;(r^c40sX7X{RsGuyoS$Ec?88nhfpU6I?LjX>Ow5!9=Qnq zpMui>)kNg@tyERa-EVN*@Jx@tq`OGmuNCMd?jqsEvFa@x6Tb<0Q5rYHCE6;wB(PgO zC#B<>+5nZA4W`tu$QJJme-x>RR~JQ(`7%w7| z^w{TENoI!-JjNzAY)j*$v)7dT>S&t`(h$N_?vMYvSWjVn-MBHgY)RV1r-v?SgykSNah z@7f`(-oc*?ST%-o7%#$!`48IxwaocXF3e11;h%SYn`QqGMC@3hHK#<#RY=79GR-KFtR`qG(+0P+V))8!(;NaEY=Y$Y_WX@FqAU%{ z270j(219m|+Nyx)YIACi|0pyy2KQ-c-Oafv7b!rcY&(yyV z79MLn`uH^S6pA;~LF^5)cU(}>EU>uAk&BN(eUJfYccd0=XofgY(1Me>wkTiRgK#C^sT;XUPbuH<+#pH@ zArNl}whh?w++lFY++vwUcd1)7!+V?>(QIRWIj0WRJ4C(jM^&c*Wo$pCgw`AhK)BjHU7>= zL~?zkr~5amGldlb`&R9b4_&Kl5AKozgrD)xOBbj;UXhG@L~npK ze0Uq7E3cHX461y?B-)ewt)j2aA*NhWl5gQKE5>y#x2=MD=Ev@SnV19q1qtZ&+R4d2 zC(DFw2|r1Yu(t@t7VHUHjVqZq~OW^W&|oyfjS3xzOe&pS%nowuF%VeJ6iXgU^y8fV%0`LjUT{9~#C;Ar!F*Wou+WqUZ_bKVT?uqh;#7W!Db+(sm?-Q>A~{e|)cA9f#rjLf!~ zH!rEZu5jM81iks=_^SohGdp z0x?mwXINRC+`;ARsTw*=)u|Yys#-FRUmF4_=140u=A*Z;H%~mA z%^Rv~8b|5(WjIRGR|il;&K-<+xoQ0>MPbfl990VU@MDYOgamRrH3nqldF1)Sr*S~X zq_FsH+HGGin0q=)^s#BIkGW&#BzD+v-oPf~N92UU@O_P59dSC|+>!btCf79T z-jDU~hp`V~J`uDV2;~RnM`9=$pnGuCFi1R}gri~?H z>zn7G10Bk#1q+b764^U)xpSC&@?yme#N1+W^>aa2U?`?JWI~DTO#J854=ikM-L=1k z0U)^b1DkM|S0}Uo;Z!%xZ~2X7p$1yAqOIVk^QKpnpuey#!Q^0p6&pJvMXVV^^ZWOA zR2LV;-od|JDQ1t85?ZBsl@Sbc6Z6Q%ih^_gm$W#1627`4OR52JZ-(%zk#}LyXw&0cliz8 zVJ2fS+nhoa1@jtd*6|+H|5+kKcVKhp$wJ`wv!L;*APm!P{X}a`;DM|_NZ=m>#`{6l z#`>L<{Y=U!hWFt>D<1PZFR_Vv%@z)^9Y-U*L9AuA9WW{1M(sEu*qleyf}JDu+Y)&c zoQK6T(5;eY3zta2%6rRdL}zLzOdI=qLUjlfR#e;7hQ%zO(!N_4FtfBi>lTmwPD-j8 z7Ol|GR1k)ksfW*h|Et^wjN48Xy?GCgZeTk-&YtraFDmpAZDhr??-ypHji98W?n7~{ zRNeBw#gYgsz*#q%5_7e<0n~jnGi4X%L6}>m^BS?2a?K(cJfcq4@eIVhlU=Ym<4Jgi zC!!SSQ?e0#{ol|*@;posfd`v`0mUp3>ZhINX9n#O&*pn0hkqaAJ{c+kLZ`2Xa2kpe zW3UsMSRHwdhN{^1S@*D{)i?mqU5FU-q>S2+)8EUT1_#We2;tE!On#Izr#xEC|>(aA|vn1xJ z2N*t?Ah9SRXqyJkF=GA)P@ou=66Z>l8WDc zpMBC8^;f$dZ1WW`KW9Y2AcAN*swzQ)OK-bAt=eMgN zi33wbmkx6-B>}oU9vXqbE>`6NDLTYx(-{KfWYS@}(+dhnZIJxJSvM0ei~ACp}eK4OKV@3!sl$ZnRUHWzz2`1IiK2um)X zRn=12%rCD{TxzUB=euOH$4DoFYW?Pb7PXVP$?k@6CHs`|6>lr@$r(5dEn0bzE-|gj zE!5?$QD8E+`t2hB1Fz8=zcpu!@kbN&p_>VI{k&X6JXTsN^?5^#Wj>eOLy!mSx643z zRye~e(UGU#y1DG!gq@3~69aBYu=3;DKsd}RHcM^2R#!LG0&#t`%v+|hFKCN(XfDf* zP~TU*p{Eo*zLbnpQeP^UYMjDp#DNnl*L1W~gvfdB_F)L?Q`OEPCc-u&h6^IfBDA`g_mKpFh_2am30LN+L zSP?-4{jrzRuORrfh-w4&`v>Zu{~L&Fb&pzoUn3E0AaQ10Cs1=<44wowa;)9F?;?p; z9$?jCaq63Q+Bg% z{7> zurZaKLkkE34;o*-k^D4lN#*or9^joS${jp-LU-Vs*0$z9v&rl-g35a(AKuJ1o=(im zGGIP1jyAp*=v46hSJFUP6jHDBWP4`KIlv@P<^ht(+#f}PfH^ULfkO(90+CLc^7jVy zu_y`{scwT{g*t$uRBqY-AB>vDfQip~;Ijl1%>U^|?<~3CwGJeqZ7&Z0=dX?5)b@Wi z#?VQ6jk^e8-P=gAF&)!qZh~;@s9M$K>6mlV44@R^lb*R|P$5s0GP0eMGK7CFZmCqZ z-vHL#g0@_fH&Ov)WY{$$D^BDux7S*dZs(c#bQy_K3BF%+@!@v`*=jKV-F&u1Mee_^ z*qo$tw*3`Kw*t}Zs%+umD5mFLr$>9JJCiz30Tl%gpH-AkJC6r;>0*fXdW6(rUiMAr zxtEb2w^gX8Ti@l0!85&5;NLp^^X7_K5J!jR@M* zH5L_^EHq_d`ZAtYziD)xQsIxK4Td}O0S25*WPz!SBA>YeP?V}!@qbN_PkoPvc}cAD z$~_sXM>IA7riyt!HsQVZDJHfI$4X=m(p*XbPHCIYg_&>JFlRH@75TIn9@^Ac}Vekfzz4kEGTzCtu+sv;M?nV zzXa2al@OZb6IBxEurXeU+~U`oZRXW`Zsa?94Kfm!2LHVB^sczvwbh@s zRxMf8Vg3J49bB)Q4$yF)PJwEXPkomH^GM6VM>q_{KsZq2v@h}Z)dkm)PGXrgZ-t$> zU?rMfcycg;>uZVu#9~5QIp-&rO`?%M9lT;6=QxJ8>0?ii=sA`UUIA}dWw z_ows9T$RmQZ0op(u;Pw&^25U3cff0t<|0TLQ&r0i>1N)Q7>|KuY{z4OAPSQJY4JxT z^MQy*e+3^~gVgWK<~R#*hpR)THSO`yHkAbnbo6r`mu;^+W5rNo_bFD(hv41@Wn|hE zVoa{K>STuN<~f7xVwTtyskVw;yv^rhUzYoIa_J1TS7?JEgjFpCffG!fu&h6d6kgBU zorBf@AVDFQ_)9#Ab%(H>Nv8(MN@S!3bdft%JhT5lCLuaV$aDrOCD|} zD@-i-&WGOQB6Plk;(FSxVl=O#$~;^e7Oc`U!Jiy@q$rCnKY!SRG4ivAqSA)@_@)!X zGAk-I1u`!rIL#=dc+!t8Pf!$zpWvuKF{m7zbp~tzV*GE>FDzYby8Lg!q#Y+o_xpQD z^`Bbjb}%ghnXOL((HhO~m^7_mZGSF!Xyh@IHe=Y(x(>0t&; z0o_`}=Ec#Z@UHaK%C9g&_?zNu^k|FwdwdbD($veYPqd@f4ihQYr-E&W_iKTXj1 zuYma;K#x@{IK>$X=@IC+GSrumnH&;J#Ve=&dS?pkaYxZBO zrsKjGl`a9uT&wO1alVDl4ewUYQ&=I#$izr37Od(oBJ>YUKL%tYC@2$tDqPBkN)wiZ z&`%R9T5p`YHv!7x5CvG>Yfz1~V`)Q)tpw}?uL!-~)USVYBj$SN+if%%Taw}V_FiV0 zZC`AZtr#N%2R=9td<&f!=EDac!XLKH=J1=;E0K-jbIVd(aMb&%O?42x&H^e6S$9y)3j4e|$3SsL`13x^p?o_LnYxjcvVi2n znYdE3EWtzJi$B>I)Wp}D>nmVsfe$YpD%8y>Q?aLEfU5ayx2OYSF;4n-&bbV!f-V$_OD1cFfIQ^AC#mq1Pwm3-;Au797}K~>Z;7Av}1Z?rc4w63?clvOtrD98q%I9aV{RyNPRRa z+mLm6}#8()by@Z+QuXe0apZOVi|9dZ%sTh zTsg`D%!{1?a2!UK>OR>{ym0qD1oN~Bl8Y2F3a#c-{hjxZPhREsYe@`1%?`ENFOX4k z@cQ5xQ^t-jd0VHFvn=T6*V{m?qktqC-UlI3G*9LR`n4||QeMNWVF09$j=r}rQ+Sx@&4wN%t8f7qd`~IZsJ!&l* zDy`oJV7az^@|Sw{DWaHYM0cKX`op_=gzss6qaPgy(m3Q7L>ruF zhQ!cx3m=OYu3VhvfNF`~;s`+7VCORIDi@N56(YW4#|a3*(|x?)2|`Xp!@;oBQA zpz)a2JtOVF;O__@D~|2rFATjwd@zYJB|zh66RGia%>@rA$dYDIgs}JP16ovtn=$YT zHK%hSK|dN_H@@{W?4()D_Pn6m9wJ||mwVCEIE0)6lC>(zRE)3R6WyI2v zD;H1g7i&ikPZEfYueYw>Le2Ys<9(Qb;5!1+RgRpqI2;gP{9l<B{3IzMEb~%xTm~IW9AaiJ*i}q< zF1@bUD9c6-Lf0 zr=H0>#C345!A^G}!XF=r3XY3drat1Zt|Uvr_gJ~WUFxB{!^rQEU95`~Pm6G$s-(uB z#c0jG6>z*K>^+#xI;KyKLgwpg+KfL_)x5{m?=U6unVyd&9CS>LAk^GjN)A6iyEOIj zhD=wiAo0^_8kgyNT#v8(uW$ZIWbc-s>iRMB5(F-;i?eQOnwv@{KA3CF{xn5Qo)a!J zpw9-Fd{O$G$?mTXl!FKB#+HjVK!wTL@O2-tm(o|2X1@FR}-E+VMd%B07Lw1!0D5Mt$idCV1%plvYKfGc&{z@NmcHTqarI$&x9dz^? z!&x^W{4+^N(>V{ZiSv1PqI;d;ul3=f*og)ul`orF926)?KZ zJ+r30;)qLRpQ9GFEAx<(*E8LRBh5S7K|(@wY(_cJty5!YH-SBWejSU+i@Hk|o{e(W zgDCl1(d@iW#}YsOjX18D1B+6{;1%XM+B1XH`MpV@9;-4^;MRnVZxxVM9Fkxrk-pv| zbo0>M<=N7sI;xVkzGe1SR$aP3@WTL+Q@hfV&L7uq7hRhtb`8cmq6oDXpfsHe7)L%H zn=|-HolmuN9mrHP^*JWRdWNWId;d-EoM_j<0UXd{3Zbz6;*b!#}8XinnFFf&Zg#@ewQ4pxm4 zA!8e8)79cHK3^|qur)HU)Gg#@8i%wF`pU7|uo9E8HNjyHm(1B*GQCRz9?(4_r7;a^ z@OI2S<F{i$~4-1e`MvMKxlLpx0pec0AJNp4h9&Y3^#vfiFSnYp7pe0X>oy zXjg^&fq123l-3QAXD}ox?@{P}91TfAc5t8zV(ka z^@Eu{kjn=S|2af;-VQObr)9y#7WTdplgJw4ycdU3Yly2~1t27K%D=CUv}KY~j!;mM z*W45aSoRq105y(UIrRs}^%Rz;hw<!RI=n0sn!YQWx;ZM z;3}jSpTuUEk`Xu8yZsQ<221Un`D_vgISz@M!rs2@uJvOC9!El#z2*!&XYGH8J9fg* zGNI8BRqXUun6?@;l_M?qoEv@G&nkd(Q>U9z$PKEpR{I=O8xccivDyTaBkk;568(s|M6?)VKOMsjh4IV_rA9{=)3)81xTYUE3d>}Lmj+1EVyq2?2Blh zV;h?7L{$`qC9}(pyr|RpWO?~rvYV+mO~FhnP^eal-~Wx$Z_><%jBNi^&#<;+!*Xw` zK3RN_Jt8^-_}rIot8fqW3ZlzJKcDv4ji7t)-)!}mrD`x;C;-=k0`+I>7CM1-0i=cY z>~Lh-FP_NOD~SD*y^l$^c&#mZ*N(cgij(H%(v(baGEmy1dIP9@#9?0Z%xdbX?8^{u zjLSLEuuu4>>1T72jV)u2(Ed9#vinrl#!n5%Y&Bb6Jb`Omw2`D#A!Uk}RXkwYYV#Gdt%vfVPc zhOQFY2TyJy!PSb+L3hSa3@Zqji_4~UfWVoK+UR}DJ44By{!Vcl@(iQLllH6($Wjpx zXU{IZ|FjG&hv+Nu{0=GTV;=Q4#f%Ov`{Xg5>V8#;nq>>Rz)z2K;HzK>$Z3(JWn#HD zU&(cvRY7>iT_+HR8lL3|D_sylbB^G1qlx%x_Q^*k05*ObD8Fs2H zV*w=fW|UofRL4zPaZpbMGz9wydG_>YA$7(W3@-FHIegVfl#?fq$nEPGJ}y&?zj10v zN+YBl7+!l1yVo0U>8fmS|5LSTlA4)jc8T8AfcU!~4C_*;&fx6BfIe%h6*d@00!7m9 z?U-#pWdGnI!=(h7ZI}oi=>*?I++HMma-?Hv0KjgySmegaLKc#fM5nLs!8^b9(s9oTnZK1#ag^`M#4{oDX&p=8@nI9u|I&7(&thyt zAl0>>C76&*bHR)RRJ0}r)cmUrUnljsF36Uh9(r0Qy?e#s#UQuC!r=~<9qcpG^E*}|vn0xRImh4Dpd|RNKxOxLw!- z>=LHN-U~65=Z#=1@d5f$R}j|$4|!LVzogFfytU{J2!vPep^@lv<{h?dG@DU=rc({i zy@0==!6TY67S1>~%J@TKGn^-SDVU%*EpE_wB_Upq*eUhP24G4dkF33?kLs`(296$P z>+Jo%8>6jr1*RXD^x~l zf5^^SK@dI5hM{-RvMXLg0FMWn}6E{XTfGA_0fF5 zO&Jsx*w5m$hFDt`f9R5pE?&%gF{aB87XIjExWlzt82i0fw zL`NA5uKqP?MCOOqHXQo&GY(8fgUFe({{?HM;VY3w zpcxFZxN5i@)D>olT`nu_hjLc@fI8oTEywQMd~EI94$f+s!`6YXEFB^O?P0%mPF3(v zG>dL8f5@ zWd+@m-8?BIbIK5*Bs<#rjCid<+`hjfTM7D#<#elropV#w4wAYf)j~%tZAyDwE;gNo zxPu_6HYl>P)U!Ye?D8Z!As;aJwbz#U`E~3b%0=mGt?-Fx(=r0WX;)}q!z{uETreAY zN}ctjb)kMkkyj&5!r}_@SE=Z9KsF6zz*)4~oFh8ijDNemg4ha;ya?-@Q)srvf{2|m z#Ee4lxP>-zD;iFjn6~Vu&~9x#UL=z?rx9Ynhzj)U=NR8G~!@j+2RtY!4)9 zE^bd2#_Q~pbp>$OI~Ax|Or})(vrxCR8YB)AO5gkLC6W&@ywrU&u!>1D{Oqv(_s>oe zSg+FYSXzQq-4_M8?Rip-9yMU{#q3tMY{+KlLuxIp2e^d@*XNV(119#d%m}@YQHyiJ zmU8n1e8W#OwZv_0md)zu&qK^NH=}9Ra~kayl|eY*yABQWEd=C5tJ0RQQ-O~=IF2X2 z$qR*nAr?@LNK{+|*XOjO>i-;1tE1Ce#D`0n{<3!oFZ>sWBntv4))xeH31;Eo!W-pF zvf|?R&QlK2>a|hT;~HiwDwPxpA1t*U1}R$d0tHc~pGiZ4hJ2IAuJcSx9tqvI5wUs3 zS_js!?&G`dIpK*fJ+=j7`@t-`McTXw70F8gHE6`zM(?u3p(eQyz$SW7F0GSRl`&O^>z3}sAB zBCikW!<$zhn}4`PtHi&4Ntx`JHIxs-Zwx6SlZ3VAy4QSK*5jNLsN2E2W^hOw!FO}U zp{*pyKiu?tzt-ERI}sjS70W^x{NC47wFL zIqX7WRWq#GsTV`E74z1l7sC)=MR|;D7N??q8z6ucW4(3fPG*n;-I&QGsGA65SM(f zie`Rj#t4_n*Z%3M5ZSG(q2<4#uztC2!iWR!p=~qA%*Cd4l;MzY8H4vumu{0jv2zN~ zOR|efk_y_(_Bgevs>_Kc&aFE39^GT`>yMJk+1aYj=M=mkgR#Y=(6jNU0UUudhfk}4 z4t2=Nu1br{y-O803B0C#@WD-l*b*lX+EbXkrD>U9&6%tfpd?4hV*;E_QYvK;!r?Ag z$TdRceS`)M1n_<5D0$9j-iCyl0!$$;>h$S`X22{EKH)rX zLC8H^7F>!1Y?d|?-m|J_#HmQzKWN^{gecf?21ErF>`>*@4?;s0e zs7Oe0uJy)2tb|3TpwQg7Yup_7`kuwg;l%=>4zTXcXZshgzxQYEGSqkLKQo(==+l{I z&auQpW1HT3;!Z3R(%KlJ|oFWHdY@4)*99E=!9#2%&%#?GlH*Xt{{@ocr#%-58YmTGG zYporPKap~wU@OViG$2{@<-ITrZ6v@V!BqVw0B$ki6q+a`IG0CLdSfDsdC-?j5%wlH z9(*uTyENBc^s^i^G`cU=l$w7@C0OYl(8?CTC!e%j%Ca7b>%Wz z!If^Rb2jAU89IH&lz9MIdujCpQ#5J&s?p*A`n&ILzpEkqYjr3}rwNc5#W*D}oUL`~V)%j`!eQSRdBl(4Y9=rV@9isp;jTot zzYA5Kv09A0>{k~Pj!j@cb_1;bg6}%PB!Br72EFDk8wXk}T-=#+ejX98*e@rd+9Iy{ z$Jj-I%Lt`4CyYmC`K;0uOE!hGjt?s>Ks&hC)}gdvoJrl-9UkcXn@`iq@ktWA_;nT& z>7(Z^;xP3JKg)B!j2i7(bUES2=Y$~3Mjj=;~bC8dPrsjlb=MQCvv5{X=8x`jC+ zXx@$%Q~G^g!7)2+5L6#gs85_4@#_F-DWLuQ&dJUc;UYpzLY9KeLx;oQ7U<=6Yi^&4 zn{*=c*}ckA&{i_CTILJhUwsMiw;(?52ln(Q{&$Z8WTqlT9vCthEsbuN+tIVJ&_U*7 z9J6=S#A`WeLWnxb67i~D_%8^T7Wf7b&djZNpx}~ldVsbx#XB|J9`!2bx#|gUL?t7f zEYq>ddP;)yx9Gt&FA_TQZqg2i8janM3g8tBWBhWyOA90VHOtImhp;qa0 zM2-YK#qnhYOAe}d_I*nWva_2D4TgNfZr_L{IQyin;{PfHOA{oReA5ML~MUCxlwiYgK zd-?uVl^gERbp5vH_{L|@zK^&pGFr4!3cHfPayRxNB|$3R#Iy-*r5K(EVTZ>qUQeB? zp{ot3mSdnN^t05$WACRQL`$C$ClXQ|P1*G;>SrS(*c!Q>7E?k*F~5T6#dYH2^Of%6 z9}?%0XqDjGS;MHFsj-844wkwrR&)?fLiZU`*l;rf1Nt5HCoM9ldh8Omt^fi+{lA@1 z?SP7$gE*8!zlC0$@0cWccrL0G<*aZ{3^3WeJRhTUFe^XgSRQ-24O3h?>u2JoyS+n& z5TU_gb^yk51Qh9JYzEv!@`@m%jo_~Fm-6;(UUIletm^vM1H2AXrM!bzy89IF=UK9< z!sb880_4d!WnJU>&%&?&N;#OSN@(!XDJ~aaQUL z8D*jrtn;~DGjdIpk!%Zl0_#>hs^=czuaNsfgNo3C!e*KHB?+c#_whsi55Zyk zaRHtx?V56i^URo{x7tmh6U@f&bXT@cj=6Xz`n~9NS8D`#`8%LY*We@j#wNU z9CS9fZ^xvoaj!`TVSC1k{Q0M2Gr9enObx{M@SlKZ`Fel_k3G9p-Z%$>f|e)i@#N%g zAWodmycY3}ZfEjUk$c>opBYO}S1JR@2Aj$XArcp%o*gv3_6Dd}XzxW11$3nZJ$Ibj zAyRKcgz?&gdwQtoRXW+8nrXQ@W6xkiBXtaT+}{)V6p*rFBhC#};-d(yH#qQpXI^P+ zwq=3j*Wo3e4}(@ixrbUaL?qD?k#1)T>|e^jEn-1#uq1)$AIvpIQid z)ymP88ZO21u$sg>xLO+|5Z|eSyXtRf*nHp zuZ1&dCDl`SisXkML?mnD-OX0yBtdQg`*-)!2MVQ`PDjk@>G~$W;LM&qrl+}!TtSt~ zC89nJX7t=z?PC;DeXtPIvH)BW9#w{l8tP@d%1T}w_HH4H$ z8aOi|xnnL2DwkHknmSr|+n+n8&3hv<<`B zapsS9;3K1*T$YVoWLzT?-@rnsx1a2nBMRTsAQdh=6I+Cc{4MT~z!}9)Babr@y10Tj znr7mG7m7$%ADUXz{t+n`4-arNdm`a&ROE6f*)0ctN{mIL3p;k`%czdED4-X#Y=NXq z_N~)855%lc-@F+%GmmwpT?Z&(GXheYGla+z6=5kA8zrH&m3VS#Bi>inBO$f&#f=?A z;FgYu1}$2_E?936^|_}F1U~>#)uQf{>?Q4Eo{q{l9u65D5@oE8D3ENYouu1@+7Ho_PdMe1SGvGd}gR`gosa222(W* z)udx~3ZI`}E5gLl`Mb4e#Vjn!XcQc9!xHUm6p>TFI)fgO<#zYaY_t^W*{kVr?Vq1} zU50!^JAqyOf8a->%vhf4Iol&Q16DV7t}an{23aoYxEd)l zwt}I$im>PLLz|5$Y+R8i>jdnzi ztGKJ@k(0DH;^a1L(yS53m>Xfl*56}sEW%5+0&8!JWiYoK_MDfzk(R?Jtg`?S4fleA zVK3$0h^dqAfrR_r1Km4#XRm)5MIIz@w+gdxf>ybX5eNUmDg6+9)TVxvk)#CMP0M=T zcZSFc$?;8$;)hM8)GV1ThhQG5IXHO-1&WI1E#}nTrD%CaO0)ewJEoT2I!jhr$L-3S=I9J0s2Rq-}Zs*6EimN*TNN0 zb-0YKqYm8T1M#4rwBcuJoY??u zlD%zV%`d}}h$GJmOQ}2d5LCbYH&*=5J7a_aI7!2XKt=1-P)xAs&K}W-mOF$r3~ZE| zw{U^bM-Vmc$Udx*bWT-$_r*YYeh1VFS%g7Jvmmm8A~4xWcGFT88VsF3lPnN{X=b4P zI8a7-J{+$`Up;igf&EpEhw}u=+kLQ$e9k*n4AH1Q6pZmwEPLR zhdfkRl%Sr2DfM!i=b86;sk;1NHmOK<^UKQ&tT5B49rT&Pm+_ODRAeDYdB(czZYxtd#KH@3Sv$#+=mT3?H$!f z&-d!#2e=e!kds2&GKJlMq1jhF%?(R)NZN|0a_v=aU>d((ObZCUWc1bR%wPGn*cS#L+p37?o`xK*z&yVa}J*)6Bb z-7%I`je9nF*wGwsWCTabLA#?Q+?l;?I}XMUiaSubbUgj_FiZhD*Hz#E4mJ=tAq3B#G59|5s`kgn{>`WQofU1EunVj7LL;~6M_?Qvl&n#5 zq2TyEI=27aQP_ZA`b)Zgeg@V7l$#KBiMch7$MfALx%yA)dJ&P~kH=P%nLt18B!ltl z^Zom-Z-g_wnaRmL{_2VOx>vH2mv&SU2QQx`l~_3YZ#A1o-$a=VG<>DlOfYc;M!RL`R;HhTl4|s2N;4UI(t3IwA0VY0J}qw_>-hk;e{n+#*z0cT>I@2dHqV z&58j@5nLm} z17NXzky9;=4zZBgK+YrVXN_u1RR>4}N)JUumE(w)K9 zD5_F;Hr{rxiD`u%#Bepd6*)Ul53(0kfUkLn9B0;#cscUCcopmcHi_?zA~4vLj9us} zr@pVkgP=vO=wQIJw78tFPBjKXzzh}jjY8T`tHtgnGSabP`F~i-F#CjPb|;J7vdPf| z4!R2Es?WgBckd}MBJ7hwkXS?&OD;Wo&g*AnPRM?=dOX=1l1@c}7)&05^E4R6xh z5ai(C4+s4;YEv?f!%Boxa0{!P&GeTxJYgX2<2xg*eTB-?kE-gbJ6C!n6zejcx__K7 zEz|MFS^MOW(W{F`O~X^Nro8n}NWrS`LUC~Xf!>Q3w%GEhLbR!E zZuSEo96gIWEu&U=&e@s4KJL-0(GvKU!s6Lg-DH++HSls=E~aK+c^(}-?a;bB~5@?I_N>JlL=KBkp`LHTM6`QHu4pZ#HH zp^D5&h*t=S&ide+h{z0LaFe4Z5$ZM`OhztTxa5WiJ z$LXT4A>42SU!TO<;xHLU%IzWeN3n#>ru^ITeL zO{iM{_ygk=2oae)tZsmF$VVJ*@6|^p0e}r&z?rQghf@eO_B-T=-Cr^s8ENIIKsn?q z%OQEpUH?`|)ji}Wr61FleMA_$js{`}jbv`qn@4uI^noowYm31VsZ+I!c)Kh#gC{R_ z&cl|&l=RfSjYV$)AEb>ld zJ|NQ9NWg2Ag#n`sU7{DWZfu$-SS$27ONobK=L9cFgm8d-a527fvX3MBSs z-|_X&@8gi-nZ9=CpLQeN0B+y7THR9|t+yf-rPTNs%wY;#?!Wy;dYj6AY*K>JU2)NC ze5!HE1mGk`i?;4NP;UBaF#tuPPiQ)`2Ed5rdK}TdyLgO-H!eA#@jjgkd`=( zRRmF6uI7-ffWCsHCM+Ls`1Shw*?D^@M6nA7JC^e7+;MP13z9bgk|zZr&A>t||7)g}6`UDE8fKg1IK zCNCIW`};<ZCHraBU1k>ir@Eq4V zN8&xGa>H2`^v{%42+I^(jkpeFKy7eVu3aJ~-*8Ai%X`OIFsXn_?~D@y$IO9&lVtQg ze!;jC%-Xx+@hnim#Nc!%rS7jc_0@BrdI4zw-|vaxdBm)SsR!;osY_7bGGIO*^T(S0 z_{32Ek9QgJXN(oIoCK@#8UsX@GL!WN43p+)N3%LRr2Divbp{?uVa`3kAo0843OoM< z7+{zs2)sYn_^&N5#JSY$$gx{#J2#zh=DhxJ@H#BBs4KAS2r;7~MwD07xgh8F3#3xK z(Gj+|Uqm&r{-UU`H@1BbjSbyn2E2R%5Oq(_MQ_@bxR-@h7sDE5j2lyd1tNnw^&{Ud z_J1V61QNH8TvU0=c0WDW2iqxq_2*#ai!#HQ%Q;@pe$9X2sxfKg4f2QNKcS7iH6BcA zoT%WrrTOKK#da%Wbc0R#;-U(Z2BEi-Mfj-8wnvo=72s1Yr9-2Zp1O6@Zkt%NL?}5 zy|>+0_`tHrXP$f!Q6i0+U=slwmf|kmC@5cxIRS#Ij+oxn7EnywGN<|1T7pu|Fy(Mj z3e$;^6!G)Xk13G^gJ!_&q4a)NeJ1Jp-*NE6_CUB2pczoZR4BsSvhrp2@o2QwQ4DYI z7Z}LbL{KHUc3ggJS@IYq{&m!WEE5Z|eVTwJNq0(^=)E56&{ywml**s8P|L9;#p*42 z?#?yphPFphZQkjWxFJ7AC0J7WoM~X_ zdrNQwym89jYmw)>hjQ)tPW&YLORnkP^Ugq(oCw5lnha*FkAj1$hTe$Et5j``>)%-q zUjmB1lU*hHqe6bo+7)wM_VRL8)NiJ@z5ahxxjDR zvCs5z#T#ho>UYC)XRe}y3Iw~m?}9d9 zm4|u~iH@Xi-D;jAtL)&(B4EI%m|8>ES$Fgyc?_f)i)T?6Kdm>mY-c)hyIKzOgRUnN z+a5g=Apa^!v8bZH3fM*}#3v@gGD%!tFgeuvqFL>jOsxvnJ)Ow(+MGn3!AA1XY|f-Y zrF8t-y#nLELf028CKDWFTpdWr&~P{X-BNC%BFFO7y61?Ao35OkaFDjZ!{XixuBg~6 zoEWV!=C(`fgWrv<$U$MkhSKY{vXDkEgMeq$(g$(geR_|w0_B7SEq3rs2baW|L0`?* zw`2#fJpcYK+}BVMqAsMz#MAh_alZVk2-Tl!XA zfsFvB=|V3i+q>F+u=Cnln`^8;E4N--Nqz7umN_lGSEg8dNXc|jQCNoRk1okOA zT{_hb7}Q(j1zG#nty_R=6z!fpu}?<6h@Wla42#dyxmdbi`NM-jkJrq#$?q1y=-lzz z!@do&_biw#qg=AT&bB?GNTme<2u}vb{9S!jTuJ08$$toa{WuW~dmrHZT>dwEKn=b; zS9DFs2u%V5Doq=-opU;lo1#E$#(UNLaiut`s0NEpEbI;?Vs@tQLs&(oL}V}rq&Gkz zHlQ;8z%B)zu+1ZRH{NebV`1VbFikV-@&+*}9*1LlL@Xde)v-9*fayVd}x#v1e8H$*AUB1A+qKYCkj1uOkOu`=r^m*5r9yMXR+SuEHfjb8!Yr0^h$(p8l zW_~jRGnWaBv;QZWg-k6FKC)IYO%k2B@N|sAJ#yrXY&GQC#h2~O?{+)=+_Bs^=+=o1DQHMF&*4uvlURX-zg>wBA6V%?vWRN6 zMMMKhC#R2&o~RR3nUvzF)2qkC(rIeCSk5>#9~*}Cq&U&&--eXf4DYBmnUq8yM^VgA zb$b6qz}=R-cD&c_U#23~lpow(hoop~-VRYVp$CKwQ~rVyx5tO*VBu5+>v;|zQ$cCl zQdk;~S}(AJ(aP+(1bJsO%>ECeR42}}B}(xlu}dJ2%laXoz!a|CKfT?Sk8IoL3i>_S zwZKU9m{{8XR#P|8{_xlyT?7(~IV796JHUD^K}nUEe0C3s$=c2<_%3^Xw_sMDvHjW# z%>7WhqnbX3y4Lv5>``DwYp^zS)ergqW2jC3k5NPfrG=kZ+r;?jPW)~sFSXQ9y`W8nf7xY zn*vDGp4OyKAQ~J2WCY-_%K#1x+Ucsu6Thd?4e{`cIpSnI_h7v!#b!Nx-{Di1Z zUHJj0Pj@vCkGAme29gQIzh$yLX^dQ&r})h`*Xemw^}}+7-_1C(sYJARrJq5caWK2- z*EXn-X6%XT5ZkCc4*K`qX2C`nX~;9-?grS!<$1&kf^1rkgF4szZNVINyNwybj;3GN zj5$1yaqwMt(%CdiC)T3Wr@NS6QR!o-A(rs8-QYw2VRbkOmmM@e(>2dU`Y1 zjA8c@&mpbRn*B2cz#fuK)2ouLC~gI;c% zn-~Le96>$ur^iNUA>zbqavt96&F1)aeb$?$%cjW3j~u55Z%5%h3vz{r45>De@)Xi- z#G80#v2@=@vBlM2e1kr&ZUXVMTC>ONOzQ>ZAVpi&)FjfP<> z(Dr{UgP^@|y$6<_#O_skQ>qEsk~2N)<<8Sc`B##!u~9PBd(y!{>%DNTyo1ux3!a$k z&Y8B+aSb(Ucr3K~@#Hhfx1T z?pJiOaI+G=(?w-BANqinTJ!i8J~CW4f>1A^Y6g(36!iL9(hRlPq=q?TBY^n~t!3@7 z8@e=qayCV{l|<9nzse*`omNY;PLQ)J-49eujQ>)Hi2bVx9`Vecd0tO4j9V zdO>P?j?42Ib@EsA37}}k1=-~d9~bYqGP-Zp=N1+Z+}GI~bE;=7RRQ@{Ot<~*he~)r zh3Gd;1o9F{2m%;{gYJp(sEyn#du+xWKi|Nebd619usHiQe9Krgpbszhs7&vk(_8Lm{4`jy5c>ZgvPi*O%_X7)8 za&~i)OXQJ?L}wZBDm-kP|72%w`-68ji1cmY-UU|8!J#QE&E?Qhp(STJPZkNXE-815 zpm_E0g33)LGY?81R;J`I*B4-(3dhI#|1kZk*7Xr1qo@XuX})DcJJJMN(*-|KvEqIo z$FB9CEx;|<)Oj+mf~^$TVVv$A7{8u@%2w9{e_xL`kY!{b7?0F0BOSyEdrc*glnhJ| z7%exdXk=FcJEV}%Iue4Y%y7oa3uc_EsN(7kj8;3e{TPolQQym>_;L#7s2$Sv-7$Mc zbJ({U^&9hHEf~T*fSEZJa@y^s(9qlZAu5+K5Zj^oPS?E$|LecIJ{>kb&`8skac^Hy z*>>|8t+1qh(_#`1G}zF|@gjsB+(ou{BK0)_d3ARt`D~iOi+s~Ezdt}*W#Imlk6Je4 zIvo#zjW3xM0|?aIa3_rFRkpVDVq_*5%ZZ)DLZ4MEML&3}Xf*)76IFEMTkhe-SjSWa zoHHRId1D3K*KGCcnSvVgjVa;By7X+eTbFQy6Xw_S(LaZTmPX(Oe#k)0a8w`Y4d|El z^`qi0Q7T2=GN=a@VZKVYU(DQEffw%SYph6GMP5HbluTyn!d;_`O4pqjJA*_w0yzWC zE;@?#E;G0U5&N?=XUc2OCf1f&P0(ZaJ8>OnST{xH8cf2>{c$>mJJ{pZS_eps~~s!Pz3~+^MvtI@}q=x(h#SaUQHc+c;fi=31Y?>p0CFn?efv9 zL;wj2y~PVhOyqDv5Y-n5iay#LZx=jRu0mUyRi^`Aq^Xp`C&|{Gx%(+Th%59FI8nM7WpF8lX#)qeh_-x2CF=lcGY!WJ2Us{0Y`n);ISZTO8p>REYWpW0k&mF=qUe&WZS6XMa}cN=o)6#l_UV&79SQRr_F@eOg4_hbDnZ&t)Cmc ztdM^Fl~0UzUTYf5roy|_{@esBfdXRiM9Swj*!yDI;YiW#ua}GU>ZeO`(9)ckxzK@L3&4s#rcY>xg8+{LuvPWgki3a-x9se5|tzPEL1v1SkTO75KbC z^LJ+iz8cK+nX(DSOUJx)@?iaJMT15>d2qe@2_MgLi$oL6cU?_Fk22 zU&9J+uPL=NW=XF?Hn`k^C#CFXCp_|di|F{ZrEdZr*=kUV zs_gE1gu;cZ*A0e6u7H_V1^x@GzeJ!nRWzQIBFjT3Z#W8k0KE_kWi_R zmLngO>9mtRd%jWndAYP0gPirzOwHD^!BcY64LCt0g`|)`i?zHxp)Ls=-D>rZ~ks|iM`BD{x0 znQU7Vh_NWe#9BIhAXCZu2*Jdf)-gwdl!^eqWiDZOzflXrF7ICWA{Bp(dT(6PNyJ;| z(z#!R-9~NWI~W=D-lDD>>3{#GhGN4KM)D?W>2i%osjJYNdU%8KP~EQ5ckXika1UT3 zIRtA0=8z`Iw_=`qWmM4324Fclj_7t#7GkzzOLMzU1&o5cIWWcY+%Yn(>kN4^ERMjB z%q*|icv*lu%H3asgT&}aF2VZ}?{K_D{yeMP#m$)E>|O40^Z-<+%3;VVwx39% zmpSss7lmq+zhF{N@`T;tGbHPQxiRI}X4JI*?@bP2>W}PEovtL=08oj(W`8hdPY{l5 zNpj7fHPA7s=Q#%3PgYN;s*Db3q*2L>XtI8`u91rKK+}SkDEp5<+JK>D65;?clQL^t z#~<}!9b4)~{J15P5fF<1hXZkS#p+!peDM3Ti6$Ho1jERi0j!_zCB_K5imE9-K+@A# zd5T}jIH7tYzU>$2+tG;MFq9xm+Xmc$$ty}M``CjS-J5lfovrK3Z4 z+VqG){n5HFz|iUh(y~w2lE-W<^WDCOqYO{op<{BTHdz-DQZy6u=Jzv z1ch?2$$A5($iMUUJ?^PO$-~U_$DSEqFnpAwKQzs#@l5Zqcl+a2+GZvYAtwX*DSVF57KqZ3z4P%r~6}Hd(_ZT7A|#n6(_Qp zbb%V>7icvd#oGW)kbv`vYSY~I0wgVDU9?u?F3`yO_=p9=TyrSn+o|TDV6|A_&bqTp zw8n6ju+mjUwNJ|vJn|c&xFj9a@cqP%;ejXq?}- z(Br%f=ZtC`eXC}ZqRP-CxrU>~066=uf1llTfn{h7Ji$0K76n!Q_$D2#CfW{%XsMQB0FU-5shsHm)O7`Th%y)XE8HJBvd=io&ZXe z4a;)2^O~*V$I9D2zn!!??(CAw@@X!bVS^jk=1K(j<73zW*okPao`JBBLV4`I7M zoHuxW_a8_plkRDyfBG!Wk`OV#IJ4ZaU~Gp2M*4W%5D@51HIT<1KGJ5`Uui*3rYRIY ztR%~~dnR}4nAK*W!4on&&3L50sDKvn4=N+J^uNScP9&vb6mQ5;p@6eeCr-S62vVEN zdwU|Iady1Ph$1B;CBL*$4K@yy@mp%zo8HmweIF8&lFvou4JeB` z(vpL2D{wYzB|H9P=*5XY6O$e&6!gz7v%#YNBCs~x;mC{c!2q>*{t-x^NgEfJIKUhd z%Kl49!+`cDwaTBC+E$*cp$J%>+NZQ_eBeF`#FjpOmRHevNhYR&TrJwRowiUe4v=S$ zY3%?}8ozjM{AA^Yqm~qzEj5Jqtazv@cFeoO&`;?KQz8Al<@zJTO0p|Xm00v|5fRnw z@XO_a8b`vCO(Mh)5Fa$&Th?Qi^ME$Y_xz4&o#NHtq>-CsrrND^VSq?@)c~z?A#bc{ zsjrNmkeJf-ieJrlBQ00Vjy{UOdX(S_BeDrCCS^fk<=>0e^T-h{r?SR_B0Q)%yes1j zH@3oQ1H{pO!iTL>}|beCy6a7h#yix>-b7f>T5@S{Fw>cJK3(C z5QIQD$=2~u!F5kq3<0+R<}$M++HOQJ!`hp?{Qwt@0~DAcZkMx^ialPAt=pMyWtlw+ zn3Cv}9_+>Px|9#Sx?{}`eX)N+R}(TrEP`NYA@^JKJ#vzei9@S5{yR5qs9u!vTDjn` zF#eTWIgK@AxI;(X*?cy%p_ewsY=3uT0PsH*``dubn^afm{nc8~;Trdb;9d%&Uzj-> zXuu9iU|w^*vq{U)Hr);K{t(8!vOL<`dwNo(K5pAYxV;sx&H|pn8UCbuX|rB4Czx_h zRbO*Z3^MuCoIk(2rV=6HFh|qbeLs96mc986228CqDvjFN1LQ{zU6}PW#W(4-p0RpX z9Q(;~dF*Gk&K|K>)slw(%PMAZ(GV(UaNr zWcKF`znr+ti%R6EUjOMTYy{Y@;tlr3$3r%6*=X*`fr1?1-}l8sO}Y-q$0Yrw|0cXL zTpr#Lmv(j&rgDoTxnk8{kD(DVjq8ID{a-tY%fwQ$?~T5gk*?sfv~KsA@etp3YHa}+ zL-sk3zk3Rtz5Wb+*w;j2&ukhJR$h&gzhGE+h`n?y;RT-Ya7Ot11LvN)(%}&iOiCOd z>ac$%sVXsZavqp;!#FA7LdAX;s!2z(7wJ(vy&d?GeJ}ed&?;%dtjZA9<%c=dg7m^*wVED*l|n>(FX)lGjrau2mUk{ZV!$(u(wt7?6lI>H+1Furr!QNGrbTod#=R)1DQ z!IWV5Q98hO&Q{dEwDaZocWujTZ8a5qod^=04}if{5?SXXbkr#fY6kaGS_F<_)*FE| zj@~G;j?!*2@?wqJagDK(#%h&?NOdg73R-Mq%3S?`Doql?Z;C8Y3_M-XvfR8Hh;TwY zT#Ta$`7TdEXlbOXxdmc1O7+Eeyl%mmUKQ4Rz97!4iaKpKC&7@TBDZE=Zio4dqGj}u%oFf^WlmxFi*1N(PjW@8DJyvAe!G*}d+81{q;Gv$m zG=j}~cm}}BX|5U+%w*Qb{`%u#+f-bA;s9vgp7(E*!WS$+D&vK{k_~1pmMK>Re;at~ z!8rk5s~V9pY|rfVCDL|ypgaLG7ei;XV3v=sVnv>AbO+s^bQcvfT@!ej2-HE`06E*RQd2z;n$%REv+n^_tB@6I{ zac>NLJH}16y=@u;ogsBUdR^mPpTite5Q=kC)sd%rdtw5BiI1Go!8sh0?f2+omG6p%m(u z@u){c1o!bYipn^eG!x(%eymW(#21b3Q*if{Qi6XeT$9!s&1RflH#A9{8b5`&O_oo}#A*T?WNyTw(iBd(u3BO4Nb zI~nMha;$E<>A1zSH@Eu$oyaBc1536zZ^}5J{`y4^I2v!s+rBKTpSC-f^BGLq&x+#s=NbmWmm=nIR~-7sU{j>2jc6rj@}8#`r8jf0TEO$$Wf+ zCV9V>Sp7f!8{rs_Aj999ddXX~$+b5GDg*HvyG)~u-y+zPtP{R+0Zg)q9q)g}$pWi~ z`r1N?K)f4>Xh9(wLLnFf=@a{$*t2cU)Kg89?>yEe-s!u_d_GTtO3Rbqk;>k=@1oyh zR}J?aL(P@%3eGc!*AV>yaU%Yp2auEKs57sWcvj(}jg(rr1_{w0mh^M{5xMI@mv;s3 z#5kI$<_A~|vBnsKmm7G>>taH`5xC-e&m<(I{9<5dP#t-hM^n$ej! z1dP%MJBF3XP4x-5H|D!5BFou{B^%3izI>nS^sG zvR~*jZ{ktxoroC7u21HjJ^@$XBa9k=e#hi>4bt_s$wGH6H56t^?s+8h#eru0f?}y$ z8%95Z2f1~XHG~3$3S!vfv|h}8EWr9uR_~Z9Y1gw3&&e6gD_U`?vI0gT`;x)QWa<>q zuVhR6}8- z;A`|L$#xXcN&K0N2Iuak^VHNxcJx8~pRREN)uAU6AcmaD`qkw#h9VW5Kq?FAyx6{N z7KxnmiARfgXSM{#o)5ED6sd_+zuMhQ`ygqhdmj6bJ7&K_#*-BE3Jg8~SROc=F@X!i zAafMtxH4{cPOMdO(wr0+)`vF#34r2K=rg-+a@dI*fi~}?DrYs1n3&6wAOZWrHN?es z6VIs@?@D~-15LN7+X%`gcG|RRipIqyhcekm=F9;*KJVhb;Y^9giLP%d`QL`427oYG zz7YL|WFsDJv?Vi{RrcL*LIik~;@vs{+=7fR@BNjZ#o+p6>GYgNU~EFC<<@k1#m(l- zQe2qyk%dH?ft{KXcLz5zOuQ4#bJw1m5MNr52ms82^q>p(`gUU8+LIK%4s!qyV<7`U zw$oOVUh@n+l{)8(gtw|usSt7ZV0?HN0$VGffff!XQC)|jRU_rpfc4111V8U9mkt+k zXb^jn6dy3x7+nfLCJn1T_cbRMAH4W~d><9`#zt|aC2nqsxDY%hMF|A6q)B8eiMgeH z=f-k?F?_ZS4aWD71T=2bUE~L7WlZnrUhM<>SV}nmOh5;&FxTC(uNAHkLtJEDbQsb& zd6QE-XmF(l6d+~eq#J!_Reivj6G4UhymzVL$h|(+9K4HQV1yDs#o_BMc|9f*!lb-s z_3|THgh+nlt^~K(4-vaMA1LHlh<~&F3bDcW19C~(8;Y&ki4-`$$DY4yO8O~vk@kPSWyk<#y)Mfk2D83ZxbS94qF$+ zd4nzD5MQX)Yr#?Dg_bd&`~%E;a@(Ckk&$vV%*W~P7jqWCiBwMpUPOVE0%0vOT@yz= zE%WI9Z2N^J@vXY}@epO%m#6jlBip0(OB($56YGud z7^~u;b|+0?s)r4<_ekMzqo;FAQiyN>XaR083>7x16ved<-~?pi)VbV_8Ru}7`2;`Z zt@5twfe+^&9iN5U&}5azxA+qxK;JtJZ8_(VNJri2c`r&6?dllW(|~oha5S|Xea3l* zKQR&Z&0^>mRvDpYK((pE8T;_+4>Kc;^s+an1JhszH>6MNBK2{hr@Fyi@%&dFpJ#ix z^lguO4)9&l6*1^6yZX5QnXH?)+x^OrdwxutCqPGlq6D5ms;1N6C7=U6|?Q9ldD$1)O_ErKew-~K+@cspdYXk8*R)# zpQW!Y&I)~e6rDh&D-br*TF%;RJv!4x9=+j7GTbOJZ<3sVDrp}ix1JvHE+DoZ6hZl9 zYr7)_CHH4!5grJh2$<-CO~*$DPP24$oll4^3^GFB?hvlv9on_Y?6o z&8x^8sg!p+ZsrM-#V?I`zKRMMSHET&73#Wuny?yC*EsTD` zz|_39YQ2=9AW7R6sHN$+kIdeq*^s{U)=t0zT^wfpxUQ&LC&3)p?aJ6CEmOdM^N+;T zhQB3r(Tw)%<}*HgOVS5ALV#bUf{JekHYnA*p2y1*@oZr);l_g_Ick52nUoD{sBNXx zik3|s=;0Q*mxD^EHpL?;EYudDIF^y8 z0u8y#i#?=wJ_sIWPtP)&EvK_~yf^^SQRU~9F7jA`?uQd*uMt5+h<=VYKaEJlq*0Tb z+v3CUYTy(gIwD>+Lcx%)Kwy9X=W8;^_AzD!$eo&`=SH1a8_!gIAc4egb&7%h2dfvH zfV7z-7f6oWgTv?|N^fCT`CDNXS12=2z6U@Sa@EdnTpmt=T9*PUp66a6a~+A^IyDXl zNavRfeOww>_+i*|z63!{o9e!{g@?@!i@BPrXGakcWREfD^|<$8e%Y@5B}C7b3ns(I z0<=TqovH|6s)F%K7!4kG*!nsIeG37_`9;|F9JEDJB#gzUFIr}WBe{8=LNqO3JCYh-RXjehOC1dNa|M?hK(U zehq58gW7$+u5~JV$+uAnp?5lja&~7xZ^CrX$#P$w_&Ei1vvrh>+xl!?p%4_6cysIu z$S2dAJ~ap(seh|$bsP2rOEVB6wPu?J4TuDNRe{YZMJ1usUkYLWCVn$Y)8}- zlz1fA0RKM#!1aouJb!p>dYts!hczk0N9|&T*@i`!Y^Lg}{Iva1tL0ADx@{AT7^vc# z)L5ON75E36+Mx0uQV<9~#WoHt1Hp~za_#MG6bN^wg?v}Tfz;L7CnX68X0MX1_|0c$ z(Gw;Y+4F~1hdn~Min5sjtV&~%iH4n5GlKqBj&0E)=-f*|p08|K6cf93SH17D##3CY zdvrlcBg}+KrXHt;J%fvA`}9-(jGvQZk!=ndgB4iq?kexh)e~4(IebrPyJi@Ihg;A0 z4=xOZv}>edsB*l*j4=XW=&*J~Tae_28e9{z-{e2h)UdRZLlDSJmD| zNC-NRdQgJH2)7{Rk!|vRB*F))RdwwvpP_J{U} z3hP!Xew7{`GoC+n(OVOhDAvDQGI*{=FE6dn^aR+~#|cUp9{b3rc!g68JP&ix)=fECfjy4oqA zuXQ(u8{ALjjG+^!NA-2-3$rqJ5hCU~)My#KA zNT7NcAW60d{L-wwJZ1&y9@7;1I;^7PEnhBIMn3NQIJk|*C;0>HyE?WwWB*urp!H@omMQtR z=jwN&sV#}0+etd?X~u^Czt)f1Nb+v5Whr#E<+mmJ<(lx4{(XFd5XEmoQV!)p&&9p4 zY3pLH2#x+`)y=ruGE@}q3cO$49Q3jGZ&Eos8<6;CnuSuv5YYtAl<1T~(goVnTBVK) zyCTTkZ08t(L}W;ktv{QJ(T#AUuSk8alI4Xl+rV6p?+%|-)M<9)a~X^#ttu8cHWV7n zgaKhwnc7!C4IkeB+HbA3+x9#=|A%!JH}LQA&E^sO{i8hnxR(z>ec9*tsh+vrN`a*> zW=*`n;K^+U)P0mZy%;wqV29{9J-LsW3LPxD;2#G$5B#>=@1@D`v3&JL$S*Ghm)m0I6^>K*H{XnD`&_%+lF0Hce^Y>xYKAt<{9q03 z2E|E5QH;#*9cE4Px;!UZaOYHmq_DF@DKbn(z8NBmjVm#;J!m%j(V1gdMqg}~(D&xl ziOX$->e-7uCP-x8mR6Wd8}ZG6%I6bScQsO}Xg297Ta2-WX1|PUOGBM4NzdO(g&QbC z{lvdtH77@Y?;kD$^7nvA?idbQZaSp6ogW15jaC01Q<|hx4c&*{{3Ulux`ek8YOgdi zjx;e#fBXeM8Y3T-sG6u}mE(8W1fZEn^&1L)G4-S>kzz$;%g4iI*Y$1ZHWS~!2%LG{ zl)=7d{(cJLDJ)UpOL8e6&RL@+UJuS5^l3ekUHNS;F7AU)7bM|k$~VY9(3~Q3`P>c> zUTJeN=7A$N?Jps}w&KW^V$0vnI=7ir*##$q+{8>}%D#5@Cs#IH{ti^#5R_7dO*jf;t;&ys_6IvuD+lH8;MBaWd70L~}91X!s8Q|^9@g9G||$WzV7s9qTYTwn{- zPH=&&^Wj*~E1Nh8m?kyARX?gKM$t)Fv-+b!bos0Phsnq|aVVpnLSm;*^8XP-WcGP! z4qvm^SI0)f7#2(Dn!J>AM$Rr-ap|^~Buvq_Ky5p{XIGrw-zTP)4j> z)*7cnqrthS(N?yq;Spry2S|)Hbk0h*)q7gYWxS?kJJA<$HKT1X5odPvZi@h>;a{Y& zKOu+mV5r1<;m8`#0O})xwk<5J4ou=9DsM9b86m%{FVJai=AU@mLae5kRAQdhraC*5 zg&Ph&bRt5gmW1306I5E?AiHKmi!Aw3Db}Kspyw!Prl~y?pqDAEIWNr9qB2rJj%56? z$%ZZDHPFE!7t7^S`w)Y1TQp#Q+i8wC?>uy1wd&7(O-3=W2Ky7G$GwH*_<7cIDeBlR zQAU+c$8Mq7vA)t1Vw#4pj3~E_FFoyZ7wx~ENyXbl_M=^cJ}h{iQTuC3Pyvc(s12Y# zoZ?+NPua2@`lhI);(UWb8`7)A0Tv;nP~_%3^Q06u1#I55s43D1bUzk;Ge^Q9ZF@?6 zZ3=}SUhggW6zYSI@1B3m=#LjV6~GlBAF}H#TL6T5&9Ez;2d(9x^JX z_w#Zq3&suUi3fZ5A6a8_j-E-dbsap!rxN#haBWVDYdoY!%MGy2JA0n2RU$JQW}Sd< z2M<_7Agl4R!-Ms((TS;)h_0s3Y6uq95q}V~6EIrkXq#Oh)Wo8hUAQa%oeYPDjoM8! zZp-0Yoa`^dBXH+rTf&#mSR(6Ui3gQyE{dxQH^Wz3h$BbxC_=#0c}%?8>GUhMcjvH% zf8B9ZAJdvm0AE)6$hVYsPeK!Yo_)J&FGr=O?d|J?E#aT8KE)D&%8s7~-M)C|Gq1=V zVeJE;GQQ#NcdZEhF6MCrQCcT5x^QG!4X5LIsv;k)A6gx4sl%frBYGQ)g{5}wB+gU7 z{kl#Vr+`U&1`jlIouUJvJz=hhAClH9wu^HjQ39(AaR>PgVBBu>I&@3yiI&uz z2`R5LSHl+s8WQ|Qf78Q6qf=&un0;|arKq>S#|Y``ZS%Qv%eqdMY5u3T$F*9*U=Oe3 zvn?7*4Foa|vRhh6cPMk|^Z(FOBIM^l9lS-+g`+3)vwisW9bMwNimz`z$kw5;nhP7+ z2`pHS4mh-*K_X7nne@dQ0~#3C@XnA>ixF5Z8)c?i0omA%(W#IylU?dS1VRhTlK}mz zS#euVFI99LxT7RcJ-G1&OmfX z_l6pa)W9&N&~7^9q+(1ZZ;?60^3a<$b>lUw1k(sR3}dGdd@lDssg-Y|2Ju}O1(D?Ww+JABMli&7&HMAdU-DFq&c<;sWR5*Z z;08qq0y&#v{sNKBY- zFks^*a9n0vQ=~HL4W!;IAAl^CDW?`3?>?->aZ*txPNv`FWX+>!shpDDp;eyVze`+^ zY^kZJp9_3dCbOlt=TUr|9&!Uc)PxfAIe@53*Lq6F&&+bmZ&O~wi383KgSQx0E^2%S zMRqxxmDY&>M`kZUotk-*jSAVPEdJxbKSs!u*z6B-veFsVe#)73;89cg=S4omIe^xv zbv1<1PuHoYEHS@+@p$uwOB)wopT)H(y;LTl<#;o_j(?HkdC2(w*_JjnRDgkcIIW9u zG74Ef*$6sPn4x8^8!i?Da#tI`b66(WY6PgHN6Hi{ z{Fs)Q$g76y`D+MStLiNF?YzmQ&6gq9+Ox&SYp3ASSND+9`#*N%iK_9+K|*5l2yZk0AfSova-P7*?y&rXiAuUw zuV^(ybWoKWCeh%Un-fYOii48g%b4o0tdu(7NMB^S$HHRm(o3DLyhbM8`sMyeKTT@d zB1FB_QEn|~+k4eEx!_9rB{8vT<^CFi#)Z&B_a_K>50GzRs)E|sw@I3-(BW9CT>98f z1^KC>)kubJ?bMj6OY2C~s7PDZxHWGfOoD+~W6Q2(Nn13*dI(gJZ3riy`Y6Qs``%%C zXC2(pU58w+7`#*wzJz@mxO@CZ^zvz)sQWt_&mlx9Rzj{dg-*uru|#}_eJ06XsyTqG zK-dB@C-$&CW_@CS0<;SSX^cZDjb`*xFnG9bTmTpjK*^| z-fwsdA}o+25}9KfVIrJKL#$%HXtg)UtH8B&_ES;NCvG8Xf%$jCY+;(s0vNGynS78b=wOCNY7)yuc%ZNxY@KA zOYIlyvFzis98$!xzZ_0j1cIxy5}p&D^=au%aiC=#Mg|G4QJ)V}dhLby$~lzknr;b$ zTf1@vWNEjHE}V2L7i47riUi%2g>tabIYbfxltKn>5= z0LJf=Hor$7cx?H9b$$w}MFWa2rPt&Me4(tA7E>-EPk_rGymnT|#@Zim*Ht^C%RLev z^>7Yea~n#pDfWMIT7%NTmPoLjH}X6VGI^LPot_Dl&-LG9LT*uZ zr}P~cB5fJ0{|fynTQmENf>!d{%L>@$Ev)V+WPT?}^|mKDW#lfF@>G6<&1O8g6`q@+ zu!y2m{TPBf9oUoC10iZ726c0vJ`^-<=I;1fl~4(QKn_xF%}oCs@Y$W=Rh=Y37&*@V zQv3oObWky&9s_4Tp$If{+W)W^m>!E~QIK z+=-1av2t3!*mA@RF(VSOMZ>Ml_yyy$M%;KGk>c(d^z zMHVEUH$3X(@sY0;C;%do_nqy!u}UI^bzAmjGvwvtUg-+f>c%rzssbQ;mNZE{oqo?C z?>b10-tp+~$d5ku&s6@`I1v2MH`8kbW=Q!gL!4RP4w(8^W}I2cKxux>B@rdsC*ty; z`e++8C-30)UamdkkpOr43`BJL81OwQb*&eV`4>Yqpvg&Ao{YmjKuY6a^%sFyO=377 z`QBBHG`8*|PutT^Kx$E7u3MY_Cl;rQFOhLTxy190vpI-<(qGk~a7o&4${)S`$ zuT%7ZQvgO?(T)JwX1lKyrKXjfX;aiy*_^^)+?lbhBWlSUEB%E+RZCXFN`wX$?En$=g;5NJM z-N8^hFou@0Z}IU>N+GZU`eFV5-adT`mYY1}=_cx3`Iqo*43DbNhdoTv(i617_Ug%; zBdE-khjfgT8)*ttj& zv>uh6gX$>cfGs4=ckDxC)JKJRcq#-7LgH?MlxOK;e|4PXK&3VwTP079BMGNgq*b@h zF#x&?OB2YRal=24!^d)J>u;Q~Wnzn|KH(Uc zWK?QI6P!S;E7L^H)^iO0eTv~;r9B@3qMP;9W?&U`kasa~&2v!4E)+;Z?4qkFZl!3& zQ)=?lIdN-n@nizBGuJzY#xih|(MA(vbtdWC_dP|j*o2a*10?T~$$z6B6$2scCWp5H zBhZzEs<$myKC6gqdJT~!zj`Gxp$TmX@@*ul%@)?tmh*R}toRn9n9bTqb4ucSk3cVU zxUEQ|xHl2CSs2GJG(t7yvL$?eXJx+Id=W~&Iz9akllj|a7#20B`hJV|Y_|e`6$9u$ zvia3dSm7geCrzGoKm`X?Us?`6{NqZZhx9$hr!Cd?4e;8yeUUF{!b!Ni&AU2a$cqMn zIFCpuo;KFRW^#}OC9(U*S`0=k{UGUhu=rH-0r7~Jk<=ULNKJm}f+pAq=#k7NS<%Ef+sgM3ehnA0g=r_IR<2}nG=dgNA`|K;IXxB!a4qw#q)P{?EF zPAiN+{1LxFOx9LcHBpq{*o*`q_C>o!VFbR~0=Z{{s=h8=#v>ijr#00_?LYm7jt0N? z-;z-=%^ggAHCUNEe+d$vDK>Cw5fK4ih>g`AF9+mj^&>~H(HRxB5L%xTqPmCz!pFF0 zXUY%PvR08;-q%W$!x7cl@R|NH2H%~y?2*GDy>^j|_pS?u62Zh24V2skMhD&;xIx+V zm_Y1OAo{SMP82btmSJ&an7Gn*&R00#4#JinKV5Xp1ZqU;+@y}R7}a0lqAa#a9hdJd z(C2knv1=#9 zly+xE>BGe#myio4i$Ip#{fStx#c%>K{9NLY>F5PXA5>NRK_!P5N*2c%s>teD zG$g7X9=zl;w>?6g+}b$Wto1QcQS?&=3_0Q|{Nz$q4XaH4SJFaf(}%jWh)DH?{0bTv zoBa+;FL<9*{N~=NWh!=j{ywOP!9&CW2Mlj1^BATMt-1DW&CEa9+_p@jg(;|Z2`y8Z z2?g|iO2UE(wggP472oj2oB!+H~-nuYcf@4bTf^66AV5*3R6 zyqy*~Ag7V-MDv3r5%U+9Rd3aZ6j~{8lzIRblg<#cjtyW;n*a&j?8oc6q|}4gWecMc z%^{@>_fcfi$S5I=h7QBFuWV`Qi_Sl1F`-iU>NfYRn;A4c%$1pF_Z|o4=zZ0fLD}Z# z%D9rmj~^G+GyJtyW~U~PmZFXEONnjU_xGijA4=}WP#D`>#0%-92j~WVix_G)N!=(E z&W#sB(|Bi}o)g_-{HD8f5d;*)d%|9@q2Nme*MGHVqDLfCxqyFVQAxH^>i-f}!A_h+ zev&UqeKUS)r@DI>)ha7cxD1z3LM@%MqV>}jsK9ANx;{>ZUM3)x{y_%1Xr*uqE3Kj29cq1EeNLi$&1!CBV?9A4v-M4YgMhCDJROK3e+;MN;#Bgi5Bf2lL78wzb zDsBfqbFP=n+93^sW_hN5=p|t-(u`{7!a;0Y^-}1*!8kl4aL}p!>rQ_Dm4=duZ9wgw z$;6+780!}E(*HJruc1;7ff$*toUoy|SiQOslY+G*Rkb3kyl*KyIpQoWCrLgkjwVzd z6H9bG8Y=og0hvL+rm!so1oge4GUU#PMg%1jXxfqp`=RcN#HKi&bkHOqYIoxSB$P!z zjHTV={K#8PqOi&%awgM{oVjKb<0FX+(4x>+r?21xDFyD-(HR%p^({tX@=Mvg1THN< z-HU%&jpS7azoe*G)NZ1$J|xm6H62L z$(8BigLI8IZwgJ=HRB8DdWfg67uHa2HLciW2yCV0?uCED}$tns}0jmPV)5SDUBu0AZ~h`s`G$1D&_J z&GanDnVtf9lok2labWrSHC@px=V--(C#jM0pp<30!tKG7oTw@t+kwuyK|+`LZK}V zUK>$CwLf*j0E5gYlu?IxqlC`jfir2#eNJ8rH#WM8bjoL}xfaga4TfTYLNx2Y{;RlYmp z=Hl^W8wUi69& zP}aJI=Lu*o;XqzmFZWFP=v;CJUwwQAU_{#)ptqgXk^o3jZ(pknpl3r&ydbCcvHq(U zXOm2@jcobKl6MG zVLY+leSGKyJ|Q<{bBPjz$2lLjb@ca23OlwPSi3u@Ix2KfDR*OMb6B%BZw{eH_V79L zj9Y}GCM~bf?kR)#8DWEl|-9& z7NZ|=RJ<%vt%_rbp-dc3Qq~aS@+1>iu8wNNX*j|nTBa*BHgeO`!lGr)SQ4kzuV5Y< zYfLl+rsGOfP^|H@5A5rSWc556_naiSAFTygsar7gh$~#1f1B30vr|crJBy>Db|5m4 znz+^&u<$!!v|Hk@!+RdGPJWAKBnw$>j#>etCXzMAyf>Jt-Ky{%;J_mGmB%AhA<-^~ z!tbS25ms?cB~dg-lZ+g1+oV~joD5D?5s4hvq4g%A<%ktb(PLjq&yd_j8tXe(Yl`|D z`N>5`I}drA#V~FfR{r)6eBU(vae3R!R=PIqp4}}&KDHD>;rQ(i7fon(y``bE7TAxM zx+IuZ=6{jjXng|Kn1Lj#AI>R=HohYG(Mp1nFO8F_UB7Mkum3=_P0nldlo~QnLb~rJ zXB&}0yV7`1Gcx2_guGI&q3jPiO&c1G_H_UM{5BR3pd%-i@TGca1e>!?=#j5Gyfy1d z>y5HLnICyJhWxBy){x_Zd2mM}sD!QRxq>0Lqh{NAOth}WC?#}cg-?-lQnLq;GNut+ zYaAaHD#)hX(43%ZGJ-##2&yxJ@8jzAaZ0)}lGgX^3i}lAp-6wgqUa+g}T z>yWmS{XK*dOau;?w6u-e(3A=BGli7Z>w}BRE(>3;m_){Vgth5>c*&K)f`4}9fBJGO z3b`u)IiSVBa&o%X^wS`nLJKyY@=Ck6O(#@H;2oI7$Ub{(K2#D9BhY#2mm5Cww=lnr z$DrIyz-FKc!B*_~{o{ina@s4!nt3(oOu-Gbs*pLtH!XvTE)`cZY9c>mC~cvAG80Wg z411>=0ux?^k6t%;pah%8KlY}^DtF?o;_qMOwi5mIk^H%vheU6;FAUUGqItY0G3;RG z?(X31s>Jg}uKX2{UI8pQ{B+ov9JmkUzSb*)l1-hFSp zVw{D()4eMQb?!R)-2Smt5b z5S;p$Y@yA-dx=lFUpyEgIB3<=v%@qc=8BKxKi2ctTX@2lXYE#DYsD^7_u8F!j*cjn zVG_r$ueCrvI5;hJgagaLW&lpYZ^E_7fH)f!sJ3JDYk#H7II^7Uleq!0KUKB>JLw%R zH)X)ma~#*MRRE|+Z?d6AZ2);a@GE9*A{)kcQBZ#=*}LKP{v;gc`J)UJ7X!8oO`wCQ zI%zy(=PEVKG|6rfei^2gAu?Yu2MgXJI&^nDK+EouG>Dr%N$CxVixhI|xGxbQE#0P%X)nO<;wm(yX{Hy>kaRs8GgcSSQH%KYd?hLE)K(`|9t zDgmzQ0k-IxaOAy2Q9t&(QMrPQ1~|li8LkA#PZT7m*q^`GQ$*%?Z`k+q_(j90iJ-Jq zB;sd&#wbsqF)ToxLVw3Y9HJ5wNoQ5cyT5VR{|Zt50ak%+a3+3UME|1_IbDLosl`0= z7Q(XRj$~~G8Ae@R4_;fyPZ(&Psg+TQ90>K9wT>vZ|EvA==R29ahY#jKWogDXURwy( zgz@(ELVoqpC?r59MLUZSJ_KII2-!stwdxDTAefZtflsY?ClF1Y{QaMKbaA_*IuG$+ z?)dwICi3dQwp`skOeORe#jb^+VY*j~(bc*7?}J8fl>b708{wqC$?)TLxo4M~Oya0x z0vrN(Pd`vf+OxCr&!^O-CbIj7DL4H_6k>=-cPK#BJ3H!U-}8paSRysn>3+i!Py(0R z?>%id!kJHMWN)L~5L2Qx-NDB%v?vOid>39??hiB@TCWy*Hp>y(k$fx`3sC!8=9_OFMC>i{N>iQVLoT=tI;Hp5TlVmZmDXFFW5h)HEXG3E0XT^Ybcbp!{ALzr zcX0M^!pc_l&EM68Q>5A8v8Cv8XLWi z=n8jQjUX+(;^v=S-c!?&F);MZd`-*)RA9>uW?YB%ZT|K2=B6$cy}p)&x^q~|>}G@I zF&E$2j07?B6%rY3)Ns-nTghsLXC$c5H#Y7~1-hJ^x8~(Woys6z9O;pvhR&|1kMJUW z)Jmge<%%?b0o#linUv;(Q}i|ki4~2v(KjtXEkC~m!aJnXW!YJS74q?AsPz6csP?_? zv=m6po~Y;naD}R2lP^_*l7jnE4E-rR8IkeUCxq{^W;}0#@W{xOaT^^Cl^6A6T~;rn zN0*h&WPN9{k1EhZmX z-c=y`3Q7inDscw*_}&I=exq*L1w5g)Np3r-su#^!hdkn*TW9&IN&`avR%M5P%&EZt zj1fvY%EP7Y!mkdBnI+;6G#aK?hBQ4kstuli+;B+6CxjpHw&Ih6mM|okm}R?6AWeOb zPQU{g(MZF3>z9h0q%uZG{(v7ic*_);Mr zbm8>!IxfF#rrq4?#v|XIU2A3bjYOu}a($-~f#%V+CI)>Ql`YmA9S0c%7r7dy9#`NI zXrNApY~%bzESsqv@pWzR76)k@!A;JPqe8K?>Ev;6QBdK}x_+i1sl@Q7TkDir&B5oA0HG|04*&5mIp;cRYT8Bu@fhB{2=h-%*RU6keWlx-r-V_@3 zQioyQ4;#t@z>cXb{AnX2&4gE3i~F@6CTCN7#gxqtrHmpeZxbSUu(AG0De&}1RzG7C zYA{SUpe@miF|Yc@^y*PNk9KvZRmdw7EfbDyH@g^~diBC~|D zf1}GPAHpcE>SQqqJcC|W2!V$!Kztw-4F=|f&oHblUa5N=hgD^$9#|&K2U~oAUw@W* zaCDvtnzNgo%u5@7y0r7^z#g1}nGfV};UOeqE4EZ51#SS}1VheALL+kK)@<)8*ev`{ zjVBI1#&&|K0YwW20J;vY3E?hi#bl!G5c)`k{oTjj#eo%=M>Hl$~LETSV+} zSBP1lB6xSJ1n&b{HJtEKL^5iP)^Fsb*^ zD>%o`=NQx4Z}q{z%WQ#Xch$eCzz0Oryt71U&Lm<88DcAjVY!4fL=8%;1EYCU#JB8^ zoTYadgAtX~5ziUcZbE!`as}8O6pcY1cYSfy4~uBO7D?Z`Y{At3!GL=2>*UUWo9QDx z#o?$eqSoAzDyf$kBKnVFW4w`oYfvi%~E?s6UAuPe(>d;ZWu>_xnjZ@xm@zzS8FU{uq!Mf?pG=pZD zv7$KvI7d4*(_{g9;0$^0X*VMzXM|JBsu_+N_1S# zQ!u2*>WL_VpBk9+SLq_e{x-hpyUqGH4;G_S?e zGY(AVP)i4MvCPZ<7kNXP7d?%${Ir`%$q{C6w~UKCztqg9nO z8z)o35~q2?awPxES+I>H-x!31%SCfeM;>zA8Tb56_Zv>BD)s->6G!vn|JxynkD2Di zDnH8f^nFC?Pq^C8%(m^Gg?+=5RTDMvAQ6THL`lzi2jx(%p_eBDe)ExKk^oA#k%OVR z3_&wjgR9L7dSOmhLrpUt$L4(Wg-b`~(8Jb)MJwtJbJ#AvGftKFIS5lRj1Bg}1rDr2s z3kTo|&w@BvmvAytg~uthRU<#0p8ss3X{Q7KYF1z-O?+}NTxG=S-GtHF3BeRHDiBsX z=)1_ttEog23yZn&H^CHb|ILB;D2JYAT!3zm@y8^d7on9xY_RkbLl`3^22=+OMnEwU zeLEMEX0xuvvFqQ;;~rSFSFvG2*aRb~VA{SHb z9*%gYNP{5iCPit$j-?$)ZNO4*>7M}qX@w-8$(Dzq@wzwb4C1M_c*aj+KI##MG49V$ zJm0^Y9pQy(PMKQ5H zhX$7)m69XF!)Q7V_5|d)r7XC)X|0-lcy|Baaargv7`QIM#i(AmuNq>Qqq630{Pv9b zJ`i@{Xe&Z3ky!bu zYvvszX_Y)j`ezv=QaA{S>Tg~})y?;XD|rP~;M*^2!vx2 zYnK~8+ngzm;rM=;-&24GHXvpJVF_r8lb3t%fd1!U&^gBi5)0T%46)%O-f)Sj^$cv? z<)(yIb}J(ID^qPH9eL_QvRXzXL7;Qfx*#9|Rrm)|p_qUB`$j_1|2p1k?yc3Rk^+BT9Faia#9B=L@m$S3S7p>I zmmu^?YJ2eM-Er#%yed(VXar_sK5zI_^_b##QMRj-h(*h)|Bv#TW5sn3U;C2bJuk(= zxr*;ssQJ_$(lw;e?^!jJCVGCDEZ9q9M`aqG_aUt4I*Rf7oK9pNRs*0T`4@OS>~qWs za*DhhnbiBAu@d|$eo6e&wW-492_2jWz#6U%EHi((L0y-%F!CEV2gEc!hEn#DM9Oi= ztisu6|Kn65p&t%;$Y!LO^bl-ChMAp^Sj{Je;=tT4LqDwqZ?E_uIEq)0N9;;V`WB)< z1GQZtMiTW*e;B~aTP|T(-TtllGdzG(YMT&Y2SZkM+`JWdzg!B(E`zt zwmIt*F>M-}vAztiV{U<*807s9SAIBZCf@WkQy#r-G70!ryKt`>n{AZ=Z9F1S=3{|g zgcUHFsH~=bqzmq4`<#=vN`ixm{}nu9xAOpxUWq)Hc{2mzQ(f|pde~qVz3@>C(ZdXN zNXNiWy;Na0mvk+KtK7_`O5V~8W&`vul~f>!-_OIkerg9c?87>GeuR^Kphs=aJk)OwEACYcOAPf^xUM>A5-L)(|z; zakCEaP(tH?jCm1P!=*`N3dq49-&L)k*{VhBM4hWRv#HhP6GPTFk$sc1UV_1_t^Ra_ zIiB0hxzGF}Rr5)}iz2A1HCO_qbS2|CT8P=x3$}03EsW?J&w`~dm(Cxo3yjJ_Z9KeX zWC?lIg=Pds4}?$~YINPE98BZszRVt^n%^lbfRUJGt;Il52lK|Cg_6=pFImnnf!k?V z9*tlyst*k5j5y@k4u9Q4Adn$To4g8As7 zRJ%d_wqM#bq$MM&?JvD(ujf- zR7P#9>7KE>8LiJ&36V-!|JE+xZv^hvfV;7^Ob>R$`0^d@MvUg;GT{$klhYp_#Q=*f z^Qw_6a^(`}sPpfZFmK6{<%BP6`f<%&?&IE@NF=PC|u&%EDkF-Ij)L)3t zWb1RUWSBSE1y+H$cD91BF z858ABR3wJd-|xn2If^U>U?Toa=$eiywKAi+vh^#{BOfNyB*0f~Yi&4p#?qEl6tZ#O zaD;no|L7-Xlt?!U68iw=LD26+t090j>PT*w8rED-!#6`HcNptft&Gd6R@jz8a}!M` zlNGn@n*y85z`!yVCfO`@@upMLZh`sYVcIJC0?S0Ju}Myw4Z!{muQ94=SJVzgQGk8F zZerdHg+?Vx2CB~1;aVL=5ME&e^OXJ>XxBA)#Af776pgp<&rY9G3n_B=pVQ&LKS&An=AmNNkCg+OReJH0wiH&!wwQ@3z-f z^9}`7y7tqJ&PBtzD^%owOWZ_`k9Bs zE4i9&DyMc+WIo#NcG297^gJ&h$XCSVWm%tXFhM^LOi4|4WXp8o*+%AWb zerJ16s;H7F=>(NS< zSer8Ak~I4fBX(Bhg>9@3p#^teHdoISj4(@3?Fr|u(yhwTOmc-;ab$mt1BiY1JXD72 zQmj-Ww`D8f(5r#Ht>uS4h^f#8vO41p8)ZD5w8UH11r=LgToAiv9Y$LeKP5esMIB zz`H3Oc4@PcyCQ+@{(IO9V(DT=;S=t54eXlNfy`_;?uQj>+HolMU$lb4d&v!c*6cqb zt#U&m@G6{Qp(j?=q0ZJOPHeYU?yO>n#HZ1lXdPK32)`d$@46FSv>_!~KqN8@QggdS z#Qp4I>`$KO9B%UzMRHXH6_Jp2m@np#i+LdJwooEP0m{#Q8Jq=$EK8d1|IHmc2Yrpj zq~8YFPyBb^j`n>UkP({T1NgHs$|VRCk- ztXjBTsVX+SAx}w5>!rMMnsUeo(uos?hUQCY4%Uo1B#&7YWmZ-@RK}0XcL5;5q&nR< z`4nAj_ATd)M)kj3qCYt%8_Lz?+l_x_+f`yelUv=!pVg*pcVEC+U}ZZwWpv2*1N0%7 z_vzHu_juPkMB*550Lr1J z|91w>{l~U6b57Hm&cry~i!+H>mekt;8*+rHeAzook;n{-c$Z^`AacA|kQpjj$jZ?m zn1^V+x|=DIcgSB=c6c_A)klJxQG(g>Igpkx5ON+A<%#@EPmPTXA$*l&Qs^X!md%@? z!kJ8TI<)2hETcXyIf9shFOGrrZz^dS?xCP#2ox4n>~)P#!Q@6%Q?PGsXOo-qTzd2GjSb$ z3?am2_OzX=zD_a%ecQJQc)n-I4<^J zXw2eGz=LLI`|~ddZR;&+b2*~IXnb|v1vt+7Gso|mD&7aTaRLzDMwa6~PLlM<8dV$o zzWi+f6FrFT4C9rGrdHjP`B@CNOu`*bI^9ZL;suRs*<(yD+Us;n>`DoF-|7tNdsY{8 z($ZUh>CYoMPO#-7u|H{KMd^Z3o{ZafAEt?lbMX(m;UNcqQIKkCz9P=_tbfvlh6QI> zXq2ZwOx6 zXunNx-pWJX&o(O092{Jg&YrfT95M0!d-*COCA(Kx6)}K?7ZpPzL2xcJ~o@K)G>MqlUM7gF!Iz6N-1`~1%p_?>O^Ql z!uvrN-UaL(IL}uHL8He@%3^gV8j^azXOB^SKr|f)RiN>~hKOpW`d=yhb-I;2u|M(? zbFjr=KUCL4T2V2Ry*egiHE3l%`G`$^z~KA zKaKy|#!uq>nfQwv6*fH`CjlJCGJ)+n>Fno<-)`3SHf4okx?jhLy-Rs2fAMrd4c=Oy zFjaB8;ILWdV9n<8MFuxfPJY|^BZM% zX&6_97Qv;86|yB~T8>!vm{qyjkX5sB1d>`6LozK>P;Bg7fJ53XA!u|oDkU|AICCVw z8a)bynNAVOpdoh#KbeKGQ$mAUSQ%W$%OXZ`VEAb!4Ni0UWd7ZP;u{S}+q-Xa-&jTI z0}Yg;b(_G9pavEJ=_io8PX!txRrFAU>xAKt)E9_U%-P1C>#W!!wg{8HEt|nvY1E1d ztmEQ(;i8cS?`^_KucD3}R~-+90X!>paI$Il6273V-j_`<4d-JEICgNiR2`DhOS;9z^OiD4)H-2m(96Lt0 zFud`t*J+d!2zNw8^Jze&5vMFq^8+*mP%UKAO+uDSRSeFly9}wC9Jai9{J+A24)zOl z?+(oCOAa6GAK_DGq~7#G zE}Y~b^XRNKcq(@=SW9`J-MQ%O#bf+s9Yst<0tEGaoAy&m={bjlfQH&lOW%mTw5dXHW8oWI|Y zdFLWTPOI!P?ZR#d2d(=zM+#$~UguykDPpOEDbRjgfaHhf*QHI#7F)sj=iT^->%Z|JUkn1Eev_vkaMp+Nb*d{T90Bd27AoXsg8nvDG{mzeVnG|O!; zWWs(8L}gxPFwVM1-lrzx<&GxOvz};Va*qa%H^2EUW`UXBaDmlcv=IZKc*(U^C-er^ zR^*Dvo{00+3+P8K%{|!l3f82@WwMpSSNU$u#JE_?bbaLn!rhg)(b1=#H6yu$%UON< zLoLw~V*@1hLvQI-B#7Lr*3JNT{nVs3~E+4QIyji^!Q!`;^S%TG8b<5k2d|p7NKKwi>fP(@ost|g*hnUrSwIF zp|7=iJ2J!$(vHGnwfC*$H3+ufmR{flG7_|mK+!@xn^~{FVV_sZIMNxm<7|;uPO|?- z@BtwNMQ7ZCy5E{d02WRi3=ZW}_V$1V@x3;N`$21Bh8s zP5lmilt=yy9NH%0>@+$qC9b*yp(|jRM-V~vDQzXBw8^_7>kdG{YNOytF4+@Z;V0=` zG8I%WAHIKp;sJmFuo07+7C|McHcx6YA)nGE`n!BshtSC3(G)>w?cx*g;VG_YDcePo zL;d)l4&tYG2E^oSf<k?2?a&6deTlQQOkeY~Z ztX@w>Bc5xlkTdW5-%rY`Ae~L@IZg?2;1B8^<603J~ zg26JuXnb4N6&F%&L5F_(W`R+&1cJ#?tPp1;bjsZrry{Zv9!3TTpTB?~?<}>50jIb6 zAJch*2F1-9vX)G`T8jIFdsCd>7(|Ccpo1>4vF7Kk5i+N?IdX>*jIPco*CfbiK;;GS zc1Y!J9#(V-(#QIW;Y9~;4>ygFfQ)f*Z?W5*F?Od5etogy?*juMCWbtPVnSNU9Ml@r z`1M3wI;ha#j9Y<7Uq14#bYF(MGRbr)X&>6G(nV07&_)hXT7I(Ix1fe)&g|s30_`T| z^?e>55>0vL%bDJD^E_Ekyfk$7(9DtE^_>Ueh3v+&L}iqXB%|*F5Gj! z?%K!*gvGGF`ZFv-pX69}QfgboP7nOWoIKjCRvvdn-d91zrt3#UW^I(F1h;*0mSY@@ z9bO3Qy?l(olLLj7y1OigLa7-WdyZJm9SAfrUBI%Fz~H%nMj1r~G76}AWkJP@LRnP+ zK9IUKQPz_u*nke$&^zkv?yPV%$G^wRO2Vj9324KaoO9w6D6B?VM*m#t$jvezenjrK zEt=V~6ob+RNw|Wz9#*`GUQ&1vSti-^eR^vn-P0_8F)XXST|Mr*HkKf@GZDIBw8xp1 z^g@R70^v%%W(U)>lb*#mnE63YfoqC3jpm_uUc+iIg9!f{ClvmivR3@$UC$47yea-} zZE#$rBGDk5=B3>*n14E-qKTKA@Ypz0*;oFhXFv7FG2HvdEUUPRDxt$* z(W3`@ORI{X#}g`nM=FCHVU;Kq%xi7;n`2`3*Ye^pBPa5&ZS}dut3=pg!8w6sOqtL3 z0hY*a%gaig8Y8t8`2omyc-5Eu8qLynbKQHN5qGbW^G>t>WX{v!>2+<@>3IwiP(74r zxN7PiI1UMJbMDXpdN>#DVTr==Hczz)AOFVk{3H5g*L`-a;WO3>u~IMcpCEi*7b0xj zX;Bk$TJ{n^OHU6oS`0tVZJa0{_m~q9Ro*p}08t5pQ9!%s7Q`aO!Y?b*1m>XvtFhCu zzJA|&OieX4<5oD*L@iQueL8j%;l{HCVh76Xw-%N2?-Zs*9X=9%mqQGekslrh5Qn?; zMfqid;vQGXiB70&{2m0o0_c7uC@|y)v@r!|7{D{{u?$f!;Q7VCI!FA0W}OPzI+#W| zjjlM#ysbzHr};n71mS5fLN3GXiWz;M7r8T_umLIyK_K|oiM;Wr{I7YoXbV887+7M6 zICrz}OTs~mbkt}Zoy)WT%qPi*F;g69rwSPaahq@FF;fS=r)Oyj)UjYO+!Hi9JkDu@ zl3`5DVi6JnyIU36Mk6nM@kQhbKE5@mkCs)lO#)XSggsncQRG>$#$e*&ChH!O%^>JT zo~E>3Ec9ollg)q2*|MkJKW&0#J2K7Eh+PN94@G$xOfyrifyPiFkrppK1UeU}j+FSc3n^2Bk$7$R_+YUKpAgfeWtZ$|u_oC6 z(*+9qxH$EVKKq{yHVzU399Faab&`;KR7MZwh9bP}X<9T=0^nw00vrJYHsf1_5?b*| z5d;$JGtO1!;y7z21ba3`^Dpe_zT?Y0>bnD(TmyiIp%#WrNC>jbv*FsV8YwPLJ_JBQ zs3l$+Qx=fqN()gGlqEZg_kvV2Y!X8TMM2GkZ*IBCOPWeavwHONb$g(`*Xwbm!#xN2R3nIwpj-nTDfBehUERZh9X=u=k)!^msYv+bha3ueOmPEX#t~PW z1M_BiigU1L>)4aFk<4_6oTnoYJs3S98qAyDlFqBbuAQem)8oVvEno2zDtRO>80~X1 z5kF|Z*gvxSR%A71ags?rEgyK*;=bI%YSF{tUO{$k;3%x3F=wUd_2VPMXS`^pjm~B# zs|7oW?fb3-&>8fDaGXT;T7!~*SBoJ15wp>2fSvn9ck&i%Hx>!26k{p)#xaeA{WWP! zJGbCI#GrgdHRVzABf$qT#Jkvb<)iQQ@3Yy|zEyEsmEdInyfff)|8LYnCDl+wP8A~` z+l6GGl{kZ**sa$7#A;6_gSU@CE^-%e4m)-|NvQuQz;+1Yk<#2T0pToN8Ryx)cGLSU z6|liR8`U63s6{k!I@0K#gnD#-McE8*Nt@v3AkVw*X#&TYKkkTaLI0$uRM+{*FjKP% z^jTkzdh*zT4OnTav&WfyiTwLsO-+^X?WFVyZFS>ykM|C99*iRm60t32ZH}o!QLgXj zF5V-Ophg^KIH`Gwp{+;2uAd!g3hVpo@i8Gq(^GreOR3rJG|_k%Bas(TFYS)<#O`GdZP@ql<_Et`$4i)m0KuhwyXtA z!aA8bm#zC;y9oLa_MHwhWzsTu1aoo7hMo_K@``DoFI!X&xGh`WAbpHpCm#5f?pwuD zht1BbeJo=U(&vN8YE25!jk1aD>0*s@v)8BPVV{C5mmo@8&@}2;rK6;g(uR(rgFKYq zW1&_4M-@C{GETT!2+m-vR`^WCWBs{mfX)r}%8Q|X&Pk2+63UJqT{}aOsI%5Ie2TvF z(^}fYA9>Q8?+xcsZ*{(&b-*)es2g<^e*M45U*#Bf(_$)J{y|-bh~xbPobFpk=$9G) zMJH3vbSUh>7ln(H!Uj$v2G^IBMf-ig0W$PsO#`B__LS75&T}rkj7rl2X_p_z!>$2sriL$8@SrYXvT)F4841^Vg7_xvbfEyeMzOjW z8_nuGr^DG=&Y%-|$+_A5#l36ijEjnLTCDxvJoCIyQ1v{p>o)S^0MOp}!vlfuPTYz| zWXCc6%(okLvj2ne{>TtL4Xw#n>S=V5jNn5w2~ffzOD_G69RBq!Y8)1T39-!cyxN{3 z`uNF>D&TVbIRsO8;UH%?|8Z!j4LaS<=(L&8&mOIM0czTiKc{qC9X_dIN77cHCj$Dm zy1w?c95OYrd^9<~KD>StJ|V{8V^+w@%|SghJa?5CAhK^0xOq<)N1FGoBlhwCZ}DUwTn~ z2sVH(62uw#wzCmd3 zNn%V(vSzt~IctOwd`6?6lVbJoAX{Lgq=0-J!{$>i?h7xtZ|?HxhMe@jp9E{;^ZV=^ zQ-*ubagtSdU;qOx!`^}U0wzM-$^I#?aL;c~$4%1KTMql}4v}OUPfKft)F6u80?&`m z0+}W^-3l0#=dP^ZBOlqdVMkLSChlpWt5-TmPbo=$p!r9ErEth$2C7 z)gv$#_atw+rOul`a|(MZ97z6IUSRfdZr*hJ%Xm3d=Z)&VRC&UYoVe+~9wSx^Dk5OK ziDvHvBS_UNB8@?p4h6~H!>C3EXy9hAnh}sSg{@O9$ zZlot0BP3$*Qec@XY}a#uiyI>(ADz}B)r2!IgtC4p`eyqA z#`;{^oRDVF%bB5Qj%$=aFP>ajK{VCw4+Vr(BMNslTS(`Vjp`w#v6{iWQ#}KiAzkewo z{APf?_#a4KQPc4dlC*fU>}CNxr$i>3|4A7Z6d|65^(pC~)DYWl#HXaS*^aKL93DJd zWa|DX;6&MG^K7dH@C!s)xvhHhEUiKf_7bBgeAL%F${OTYA!(GtjGlhD`Q3#TA$&ym z(=%{8-Xtrmvl>VG?pdaZH~~_elUd{>c<#7Bos+*>d4^wX@2|Ifr^x#jCo)No32MIk zxu@DT#+J>1wG3hh6;hD@Q9l%`B48=NGjKG=NGu zE}I_C)TPWo8%o|*ecq!4BuxSRqe}?fnEL$@Vef&wSi!I38rO?{l1a;>Z_?C`7|6z*{w){w*n9T26wg)G{sfiU~C`2Nqsqb)=g!+fL!^?=|= zKbmYr<0y$bAyVVw^JCz2WdA`QDlvd`rMBXyPI}s4d)7)St?B#xxyknZ?s8KFz7QtZ zRzj8PM1qm>`MJD_sO>cmd@pYR89o5OA@t8>#L9En#c79qBEo56rCtg)YMQ;n>r(TUzVNiPBc-r9+#P|YPz;f*c|v?HLqHIGsnjp}BVZdsexhHOK}p{4;r zr%-pRD{-pyFPn~j>UaWn76kzZ>|Q=OP@LXtEc6tS`pm>N3W_(5H;p!0C ztl9*_n*0LD8cS@&yzee{88}hri>)okS{-TCC`DpKE8dI(F)T{A2@6M162`=vH_>ms zdkOMx{FMBNh#l}~v*|wt1JZ+`+-F;Gr%(Q0J-Zt& zs|MTVAP4Hr6D+rwg?q7- zFAG9Ifx;|D=Vci>j&uTlyn&S4i;6P)-#>?CqHmPY$f$n(gpatd>z3tMicSR)t&0AW z(lM5vO(`wh=SOGnztU(vkaO<~I$XR%W`=~lR1q14otYnsI}aHs)ts|9SKgtk6Rq_+ zIjo^%SKP9SsW8WHQlO)LsTn{Cv~?V)6d!v2Iew2x3@D$GEN*VKoaU}ObV%!!Cb%PT znNya1pK@vz(;>V_&NboK@S#T@??MHJbCoMv-ESA68B;OLQUgd%0}!~`79-h`kwSMC zrMeEH`7Kj#Fb8OO2V6q7*Y(4Ux3`(B|NTZ1Io5K}@E|~C4`t(uG888f`iL-XI!^0| zGUMg?N92fo7~~GPSvX`2z|8)nYPDD!vcVj6eUo84u0SQUT!0K~WR)GZaF(l2b>WA9IUdHAn|_?uJDoAU52^^UG0EHgp-^2oF?P!n+253P8rw0VOyAODQmtBc9V<%pmuAdXown* zkybA#0W?)13{LVl{jL~O;>s-^;&V=4emT?$g0WQj-{H=kdlPEW%{CuP-6WnV7T%v= zu^7=O;A2yAl-aw+ai6aOQT($zq*eXLs}Tp$CrU)fVsW_GXUzW{wO5!Gxb{^QMpyizZyZYxhn`YDI2VGUI} zn8g_n!X+{9gdPiMMT+pZ)LZ`CWAAHHEu+2y;txqB8<@*7HeZ(3L5TB={5u)PKrX~0 zgzJ9H((K`k91=HJRN(=6zU`|9j^xxD!H`E<(A#*V)toy94whk-xuvUvqXVCCv)6v>_-=PFS&J1 z_$B^8O9^+p)?cfG8S+r)%DmmfX2k>I=6HnbrK0({cWzx1_5KQT58W_h2SJsHpgT_a zR56Tc(&JhID9w#pGCw3rKZF?L)Sqg0&dsI!zZTmALEN#Wa0|&mx`Q`P5&Q;{$L-Qo zq!q7eN6`UF3MB(SQ35-tJEY3C*d>kV{Jq>hBxtP$09|&csjYpF2wN0+=6VANPx>NS zH$D4pe_Dw{pe9p;$8ip@%)>IO2<+@6h^N%93;`4hHeOiyQ{ivP+u6@KP7>NqRgUp- z7n#OkHmj8AWSIP?X|Fk>xR5|Nc#;V)sw>~?!!UFKAmUu9{#;~W9v~qzy!9us(dDfZ z<}<$V2bSw;(cl9|#le~*Rkr(R8nYx+ud(6|Nq%gVzPd%tif>ijfJrugb+HrTB+bLz zL+8oAQNQaD-&0R;BLb4sHWb6dB#7Obm%#})xRF$V5-Hh3#McvYs%z6>RT6OyMPwD6 z=*+Q|OZ?mmti9OZ;&aR&Ir#clynSzD-K4)I3G8B2s%ApiU~?3ds_ZC1MP+U(;|UTO z$8Rm4xmTD@lb@3<@TIj|MjFf-q+H3c81VT`A)HELG-QlArs~NxPK+hqo6Z{@sI0o4SERQ~)%21!m;e z=e@6>kN@@~fwU@KaQm=3)}vJ2Onfd}7BZiL}E62()z>?=ue zwElBO*)Q-|Te0aR+R63tMIQt)kV+Ei6Gy)qfIuwyZx9{uXBWe%he z=a@4cMTzFm@j~OFsCYfbcNy?pp5CC!NE$S+lC`>Q*J#%CDm;z5h7f1)V|Sjhe7+bg zYg>sV1sw8=j$Zjj>e2BAS#pe?^hDuakwV3i$TxXPnO%}|CMLxs=x8&MBJxJ-;%&lf7#C)CgzyAP)=m{M^QRSBgIT4MjOZD^3WKIjQleCOyY z?p;3yJlU{|Uym*mFd4%pu$MxYwWB(tur{+oZB$2m+IQXxFD}e>*1s0t7G-_`pt*I( z$mWu{DGt6vV+XS&Y9i1;S6`?IUC8+!q+URK25TKp86Kz<3*$jIYwGq=NCc7V6UPXd z5D5ZNMW(GRx2RyhlREMll>}2C4I{G|tUK4f!?uX_HDI{Y$%8IE?uF;mF4zN-nSbV6 z^5B5)STbkG0Of8fuKgOuVRxFVVz(GpaiTDIBPq|{OHI|HoK4R3Q3Zyk2=V+>Lr3KJ z1-uZ|tbcvi1dIkb*{1*lCK0EVh~|p9r^t^q3?<~VkEIpU%Gf|xkp|p9`FRCqq{FX_ z<9mg17@?RKNSB8xeHWscQ5s zw{&Vi{2Avz%!ar0D?VBBH5`i-o6B<~Ele?AS8wu|0a+29D@;Kz$0|3&PDStHVkc&(xkDM5^W$i$ijnjS0{>tzaqen~-! z-1tdZ34C-?EQhd~Ct)ecs~d#ZE#UXI|A8mikJ>y;*Oqk^W4h;=!+^W$C@4WV9&MRJ zo-{*pVot}#sJViNq(B0n(xHOs7)DY2su`(TC)+n0-gEzDO~V7H>y}UB2aUz|hbnVF z=C1EYp@qWzA!Or|llyzwCx!blOXI~-%G`(l>Esq;k6fcuUA)MF9~|N-#5*uo!MKHh zCoRvh3n86IKNRX7Iq8nOUy#LvL0_M2jd3i?)M*>Dta~kNC}=oH3x@3764Kj?o4eVk8`BJ+895P33_3Jt^Chn$yGh$Z(DcRST+pt;+B3VL$`zc`v z@)FCrZww*Lv`>@w%Cb7~d|J7UZYq^s!35&wvdQ}mZ}!>`b>2ePlS-Nl_%zU{XmlA; zuQ9r@`m<=58C8OM=ev*9Ec$JCcV{g@LzkIX>RU;NxB2|GP+EEqhT+Zd1Dzk+i->K6DaV~e|_+8l!mp@ zp(e$`?USnILC*!#z3P2KY_L(%NdM*&%nK?Df^>KFl2l|ZI|9U3#;?sAr=-4kUanM6;-^k`D!RPkfdT z(x*x4CpNC1vQUTfA8Zwf$kP>&L0Z0PhjeZ?AxqtlYXl*g`mx`R(P~=K1HMW1`zJa$ zx2vLouVWM89Hwc)riye;k0R3GLn4nOzoO}P{Q=u2b|HwAWTm?A)!GyLIq8=4I8vHQ z>AD)f{$>Cx7u^$S}GCi{$sbs25y%z*t-&TUmF~~z` ze2J&D2)ct95)|g$f;U1rdrmvEz#`pM!{98m2H#Odi!*=wEh8-qrSqqTi^1YM;g>^k!&1`TJ$K44qfR~%op7=Cwx!s48F?7 zWi0zKY(D#6UlU^!t9HWLp;}aB*zSYMHR zDjv9Njc**JO# zD}rim$d3$SovIy0(^jgCz%p8iw%|5ZBdJk@M8N3Sb{4p50U#sjTM2S9?M84DBMq$_ z>pxp0tle3UJynU3uJ5IYLrAn3T;>fpAjQW#R5IC-WSRXBOOm5KcDc-8WAaZ$^>J_N zJVq3G5eW?N_{IIICXA+th#Zd6L*p&GzrVfz8WnE{!t7KsnlNgro0OVo4XfwoedOJz z8=rwob0gqyv)QS%G0U~QVzKNr>>Va@YrEnyyUHsa3WJ7eYW6f||79Wk+io*7Whrt? z0Z2$%r^5BWaoII;8Ue@Og1uNRcvOqxt4tMV8B9)6?!qHD=?_8nU<^VYl?@CZb3vap z0dyDW*$*DoW=hndrd8DF>IkeTg_2JZUE59A|2KrV17{Q6ZESL9HO0)Kb|`+=(i_q`#>`k{vISbqR4U_e`5-2b}m3Z`4uD|Tc3u^^;QGvSYw%q}Ou-?G7|oXWaLIAz~#i5|7)3bSZy!GBW)wW7{8Z5+qDn?CGmHNzq; zX?pLpRJPDzvV=alfzqUy<+ANPeTb5PYGa^1lEIzUS0G$4w8&d|5kFG6fW zVq+l-Y75EGg5BSTDn4mF-4lsfybU` z9IHuxQPeuDxiG@+%=lcMJc7BMDC@V{Do49~!hP{dVv5N)uQcJuVCIWv*rwyByEH_F z5Yv&*cwJ>Lz*+=(s_*?Q($89x)lIQb;A>TPF^{ps!OON{?MWVDKUuu7k+rr;$$OMg* zU;XNMcBu(fOd%OXl|uFcxKy}o-OIg&-BftuxH8fRgY>&amM%46i6#W80!(dNH)g!U z7Z)XT_z>@*G4b;GJBP2>DI*VVX%_%I8}rX3Dr%|PMC@HVamx=DeZVT#5t$DV$7!q-;ip%fZ`PEO}mJ z!=oN_kq$Q`HHxiF;qxupWxxT)MB|c30<}fHep(_V6$dhEVMi2(cuEpYR!mV9r}@;Ik83N zUKQaWE335L#4!my!1imMes{C8vQzEjh=s`DEm%wmH!cf8 zWQ9T=g&XQgHrq(4#L(7$)64~^ z0WHvnb!eud7%@ZO1BSRmHYwJ2rshpfD3ycBwzSBZ+*x<}PV z-nqKgG9e~cgmc;VHcU9sqc1&Wp4C_^ZHWpm8@Tpwc`m(`*T1C8Y!VqD>rco#W>F{kM7EjtUDTit430h(L)w@TI8bjRsY>s z_~9T14~Cq906>40yIsd)t#z~W-nbWXVdOrpwO*CF;u{@GT|oG-SE(=GI4YKRJTb

eCzD};9EuM3u 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

w#s*nPvSJ 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

A1{`$=)Qn|koRp7^3s{9fZ|my_!r8s* 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 ZZN&~SOucMUVav2p6qI8D=kV^;_ifN9Qqcea literal 0 HcmV?d00001 diff --git a/MikroNUC/20260512/20260512222001-Config.rsc b/MikroNUC/20260512/20260512222001-Config.rsc new file mode 100644 index 0000000..940c58f --- /dev/null +++ b/MikroNUC/20260512/20260512222001-Config.rsc @@ -0,0 +1,4778 @@ +# 2026-05-12 22:20:01 by RouterOS 7.22.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN registry-mirrors="https:/\ + /reg.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes upgrade-policy=require-same-version +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch crl-store=system +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-05-07 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260512/20260512222001-Diff-Config.rsc b/MikroNUC/history/20260512/20260512222001-Diff-Config.rsc new file mode 100644 index 0000000..304eaee --- /dev/null +++ b/MikroNUC/history/20260512/20260512222001-Diff-Config.rsc @@ -0,0 +1,8 @@ +4620c4620 +< enabled=yes upgrade-policy=require-same-version +--- +> enabled=yes package-path=/tmpfs/capsman-packages +4634c4634 +< set builtin-trust-store=fetch crl-store=system +--- +> set builtin-trust-store=fetch crl-download=yes crl-use=yes -- 2.52.0