From 5cd4a743649fc24d936309f9c24315750fe959a3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 07:00:38 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 07:00:38. --- .../20260608/20260608070002-Binary.backup | Bin 0 -> 257801 bytes .../20260608/20260608070002-Config.rsc | 3430 +++++++++++++++++ .../20260608/20260608070002-Diff-Config.rsc | 18 + 3 files changed, 3448 insertions(+) create mode 100644 MikroMaster/20260608/20260608070002-Binary.backup create mode 100644 MikroMaster/20260608/20260608070002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608070002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608070002-Binary.backup b/MikroMaster/20260608/20260608070002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..31b57bf01bc75d92af2138397b24fba3a5d55404 GIT binary patch literal 257801 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

Es@J+xh_Y-Wb&1 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

O6}=()PT6WV zj$H{oDr|vCyodrfQ64S^ANr=DurX)d2cYefuZ=ru+pPdc>45;#>jSYjf2fDGUju5S z{eD|T5iE2>i;3XzBPO99FoePiz^W|CQ-B#`C~EZDdIJ4pf|#!agW(MQ*GEl%YrEI$ z7`^g{+3M-Y4)X|ivCPN?3;^5)TyZ;9!jk}}`0nW`Y{_>^<`P6!38qJ88M`x`2UPz# z{OSz>1lrT(b6vU?Un>OV_l>KwvX&jO+}EoIO=ggNFQko}7LXhgFVK_gzrI|~5-U$` zufL_>zSkNEZ$lFK>Z3Vl9e<; z7M6uUBb#tLZnifqWglwz*>iCpGmm8q4I)PC0{Z{o{utPAydruvEc2Z6cm6RaJQL5W z{j`e$VyFh=e2jJ+=eA80TZL>RI9xx5pN$CguI(e~AgiyPHTt6b!E)C-R6HNqvMJ6m#+rbkK#gbxihV4+}6Q!CH`n05}xsU@Eg zQp;&llY(_;x{AF)gyFq|#I4be<~Y+~c#$%pDt8_OaFRM3sWxI?+O!ylE-;NnumP1= zO|mv70#+T@uoQsag2!%iaLF|DVT-56jsfJlk6Vvpf4x3UCsyW)(C(KvQ7H~J$zOrn zFszwaLm6X89`atuEwC7Gkbd&_9MPEK{yMVHd+T?v(z)N*V|D78MFrm#Y7laejX{u7 z_z_>^e#95hT8IXrQ@A1GSaP_|DbR+aywT zt0%}VW5YfI3FDT9K1=k>!V&T+Majk`+cm55u()cx>QONr9n zl-yd54oEh&)utfy;sXzR4li*QNbsx-YQYm}rsAtC)U7!b5+cp|$Q;j(@%1Za#%qy_ zvkc+&lJ?R6qZmU#j}IG~j$hJ7cQ}Z4-}gOOU1zJYR+vL%(BU4JGEpg^@bREvuzDCn z2|b32Y%o1L3RLu2dyd%=V!^_tI`ocaPAA6J^+GMR?)}Oepz>pA|6=!wE(PuVfHaBI zNVNI2u_EEn*KXn>q|9`3lfpn>=U2xB){>J)!J+RK^`6#+6?gdDH(4M3qGLxk; zaX_Zuvxt}XX~b;O(`A>$KC?f;D{g&3dV`Vq%^r6=3lk5y-#_laS`f|7H*hq_St#iG zi--jw-k@h7`|($P+*{n6sM0*`i{eJuszStpkD*2mL-}`guJ%E()iP)UA-?(_9sK99 zbNVwEipkK1h&NrX;$MQ?;8G+@Pq(2B4v3r@ui?)v+nCoGYuTu&BT&B@qUF91Q2d}q zv=CTWm@pwo3>ab&49{4RAv;RXGfh z3{$4_kq0RO{nO&PocB;T?xgnb1J9Xq6Agoz%uqofTzUVz`Y@AX?sO^zho>00aQY0V z83h$R3;XTi4C78X!3^bSXFlg^smZ=m(64J5+srnCG&Ats$DQu23`-PxRBh{hMX}!& z!(6@;Rm-`?-h3~6OfNvXBf@)h{)l7i^F6?wxIBUs8%v!*i3exEDeCZuxMw6?SC)dX zC2Gre>TdKGq|nSgzb#_q8Ukt46{rTdaafu0_4nJV6o-z=6E~syO&E)NwuMwTiXQbR zG4NgEEz9&qn+<&Sn~lUXzVRPrgQQz4@k%yCbd89(#_os`@ohfTn40(79(}rQXSOfY zwP3?yiHInN;7X04w26jD+1<Q0vxI`6Q_;%&_$-EDK|x@F?2tuQnH!fp z;{3$bhM+XsOvP*Ck&YeRF``7^gKJX4_d_w##&V!?kDef*rXl#NjYlvnXL0Xx*r%W}1E7Is&;Eg08S;ovK)V^;tqtBex_&Gb*tw z#|IPvUuLYSZqYCShb&V-jzo1#j5XHub$GiWd*c{TVSg7NY;Z&hK!pWg=-!}Z_FwCc ztH2>i%`KDv<0pM&8aH6&q9HGM2~^z(^{pJ-m`wsGFr#OIK?!^6McUeQKa^$Tyqcdh zRd{7s{|QDbhJhvO9re)e?w)6#Kzu4k=F$TiD&rlK#dr>VfsCs^IrZi)a7eVUvH~g7YQgx@IA+^qg_zUgV&VCExk| zY$UMW2nBpJvS^2Ba<^Y?n3?FL2+iXPk9VgenQlM$=EF!@*UGj{SzRy`SSzb5V9GI+ z{;ff`7I3xG9}3Mb%MZ<_0{hJ^W zOZbN1Z|svSS(cTqm{e~R`L(P_&LZFfeikB1Atq_i36_4d9^>A@h?v>ymw-aMxcDw3 z2ltBn9^M0#pUT~A2#4mR!_t_($GxOcf8X4jrOPHlKG?-rMR#2HC0s0{5YmiYCnED! zyvR`PW#C6d5;|jjOUJxjLdD!cIp*Fpg4VJaHur#wyf`0 zvh~(teEOsRP8EW_xYjlQ-`Q#9UjH0$#k~u-+E5(CSAc>D%c=OqP)X|YBb)fDom?(O zkC_3Ga>%*IggBrf(u32)*eRoz$ItTyex1@d&0R z7%LgNWH9Sr7?kY`4WFjPcPrKxJx3HBm=}t?0{z*E(yedxj~p#9p7C;8Fe=_Zb}uJ1 z$mBBEOByRvP_UDkL5E=9$c>;jW~TEN#Ap$ECm}Y2Ir4>NucQ8#H*ubzzbHx-16IV) zk70%9u*cL&ib&z3n4XX?3fIAH%57zwWh{DmX(z8{4C4fp(mMCNL($$Tl2{smN8ELN zcVpUqW){Z5j^Q18pNKH*9dd`LD2z-FFxqsKDsPTWOAx&v^fLdt!SOJ-;JQq=O+CBZ z#QukWw|eeVXkzBhT_0?;Cx6?TuOSh?dHt{BlZ-#{Vg9E3X#@PL&!z*g=fx+6n9g>c z-m0ApJ~*ty`8qLGB=hEoPCd_t8|Km0IfkedE&p#YhNUtq-x-aL_I>qOE$>DX!w2rw zAni=Ty0^u1pdu=el+c)edVrw$pU`7BEjZHze^}^8+2|QQRnChnU8QW&z&>BHhYF z44c&?g)+Qw!U{BE5Nd|;@k;QFZCZYy_n&o$uQLd0cL1yKeivEk<@oqVc^vKUyKrMy zqNmB4p|Ji{fqr$9H~+6hu1P~9mk{pb+Y|uQRIR>NH?g&6Ewo=qKO?tyeX~aiS%zY`A&Rbb`70u0Fzf*`?}SfLyvJ-Dc*Y$De? zuT>P0qPZnUhBPODogd8CKP$E=7q#)G<;U3+8*$DC&@RQ(;uQw3H8)_JTSmRr)o2R; zfu#7t5MMMBnJDK=n6!j=+I{PBB37v=uD?US*jI{h04+; zM7EJ!P-|OGMP!Gfm3Y@S6bSS}*LR14Q{UiGQzy>ve!wN-(d*;PhpFWAOfKBtT9Ao` z@{^&I8Y)Ra>|Rf1b*78^j~hB7mR;kn`PD;SRlXFL8+dS*1ka`2>%9k!jUM>4tqEc} zPR6moh&li(n+@*4AKrrnW_UY)Rb@kA==GpjfcNNelBegdCbcvktbf7l@)KLZqMLjj z&ig1#PIrB5Z)*z7MkyeYTEPbSjXG_2|DRK(%Fk-rTWoPH&{?J^8oOtQ2{XCG?Te1w zOmodmJLH#HeqY`~oUsg_X*-mJGcec(CiMwb;veM9Rs)d3QEnDaIOR9rkb=0Dad{&) z*NhnH7|V$%nL?l=kQOKvyCU!^>TxDcQ}IebL4oc5I?ZH20NccJaJ~(d{(#LYM7(|V zTK13y-7MwIp*z=VjrWX+hPbwMQt^oDJu1~hCM_z;WlRXKBJ3yTC=sv zuku~jHB}t|Ccj;bc5ekZBTYY)qkNyeAtzB`YEmW_A({tj43%ndmia4AYNwT{#nTl2RH~mwHqN6Uca`{`6GkpLDc(X8wJqN!tL zN$q?p5Z2mlQ}MK|CgAnWv4k4|e( zO=-)GRGH%2@ZO+ABQKNZ{rl~wn3WdIRPtmJ1CpT>3~Et= z2i&ICFZtUU0pUKz>S3zaixY%pZ;dILj#WmnV0?rMckwsiHKwn5X~EP4x0GNaZftD% zs6_+@zG8(RP>^a9vg?0>a9WD7SFaCADq^S{KB~P;tB|Gjq3>|dnyi={S-o*N@m_#f z;S!FK51$0+#3XjVgeb0`*Ji_$+kmaGI;*_G7|~DAH*>vr31ksMIUzd&=H^&p#Q4Xo zrbCUNg!L3O{24$K(oTs{Pa`L>&gsNO9&|SbYPk|1g=I2cduBnxz|28l57NVbH{i6c z=-Ru7U;HNq{A;IfiiN1dEX8DIIJ=a={)}Eu&-a$7#Uu2ds38$8vKV50Eqf9k^|i66I(Qr2soF?u-s*W{6-AcV zIN!801hAH^DEC-J57d$kc>>_88q|{+BF~4%jQy;ou_aB#Z)dD|rhg`KHb+lXKKH!o zj61SdqI^4!TN_U|KBdShhb&%6daWiQeRapU@>k5=wv8JQ)~xEKUCNF(HFLVwD!Z&&)OEsZ*VPFgJ4 z1yzc8pKWO_4GxQYhTXjRBy%OEo%^GSMSownRwxelECH^En9|OKZ;^1oH@M;Jo42Uv{T<>_4B=ob^YU zH`QGwM48qXN<=QdwOW$J3jpdQZiGy7A(O%1A(hnXMZ}W0VH6<75~^=tU^DT9OI^^y?tMe>3{ zbWct}(Yw7CqR&Vw8#h!GtDx|%i8E{H?=xz)a#?@#mSkabS>x@#G&cb+bK1+RYKIJf zgv;AWNUJ~2GF-+`hHu!JXl*^W$$6J(|Aoi&-X^kjp?%c7fua3slQqQ*pvbX;>p9UY zUo4!i4b-K9FMH_>vTWv;@AGxhrIQg@+6OXEixzny`svidCwH7MDqil=@QiBW4Ur!- zp0p+3JXz+kvgCiTisXp-s2$4yUulC^pZbOlyltl!cYe#i8*CuTXTBV8&G3IA<{)A% zk>Y1&2#(iFUS;LZ&YKSygn$L^sVk>ivAcW|mrL?s?SDTrQpF#O0rnidp3`;6ncpbo zAQ0wosgb}+h&(~%);Hsc8|F+Baz z_o7Q13qHk-bzXDw28Btb(6aw3K>!#0<`BljcoJz zwG;R4NMWZDLr1;evuM_1JDSXUaT@ERK^kQ{xPbOrCr4Mc=p=}PJ^5HU*eo!7OAus! zn1`MGm^Jdfw*Kdi40doikQpC)5O{5Ya(wu)0yBkUc^5I;++K+%9EjFn@UeIoXDR^y zKLEf_R6i#%1)S7D>0C`ufKGn##M-Z4t4Y9SVAm>EHg4?;&2*t4BbymQql$2`g^od#Awo65jSI&r zS|ph7+7U$!7!*dIn(#-8l3JM4o+EhrJ7#Fr`@uuYMpc0tEz1oD5GOs#)+egQ%c1@P0-(6n0^Z~lLEpEX7x&$ z2caw)QM#|C$Ob6JZ^!=k%n6S3ojYfo6?VGM+hx>3e&pr})%0)$m5<3)6WL8bsSpi1 zAopAU<9K!t2XUp# zI1@kIe*fU;r}z?uq(N6+&%}RZ{HtkINTN!)$?N>+x}Ez7gF;h1S_SIx(uxB?0FX+^ zftBCXJ$gWZ;dO(=^T}7Yr)X88uR#{=XKoAx%}Kwcnfd&k7G~!1RI6CFAG;0ssiSsz z)k6c5P0Hc9db#bQVM?Ky79YS$DO~^4%Q(~Zcw;fQ46!yQhe9G7^xKUOGe!2@!MpoE zm2yUjVt+wZm#mfS1x1I}8;p`JTFYcg1Tt+3tIiM-;rAL)2<(K?GIL*<@$CtgXqIwT z;-q8=Q11U{N=7gYjzq@pF1L~Q(Dj4_;`oq04^7CQXKiLMuH1FFn#+)l6-eKe8pFp3 zVwvL#8=?=!X&!h$V&XJ0yL$p|?x%Q+2#kxZ&O#u18YKm7F^V4HDd+ztn=M;j)|#i( zA8~2lvWLnGD^yO|+v4Y^9Mm+Svz9K;x#e`p)T&`o+Ush&hMswN z`r+4j#`bO>Qa6$L^;uTZ@H@A<7J92vBG5-2EG*%ga>G)XS=m-Uu=WwrdGv`ady-h5 zk)nUx#ysp*I8CAduY5?db5S<4Hu9&tee-PSsliV$3X{_LUpr~R+Czc7u0hap8PTb zQlX4M@Rx9e;K?82QpNv`;VhV?g2qRag2#V-t)Hz4s)>BgpWz^^Mgx0uvR7J^rxMfC zxr;?F$Q&trIx1$Xj(Uq%=P$Dq5mMDPd9Mm^%V8-7u1l|bwx{$PpzLv-I<`8Wc{=a@ zb1AblU{wm?;=rrstb~{>nK62>=JDA@=zGKP8ct447kGzwi zd7f8+bNeXT91d;@gY$wbIFo2~_9voNP2d~+#6Gw);$-SGQnoLIzuRN5rtMf1 zr~#|jChhwZUnb<*02`@e-{>JyQ()y`1$_JIeYv$n%g3g>^?}eEm}Zd5u+1nNFIQ+n%B? zJP#cdp9GEFY7k~Tff&o38BR>=H-w|wT6}5CqchacKqCxcF4%co?WUEDBi!m9zI6cR zxGNE34sqY?X+EmxaQI^|_Qi7UOpCj?znVP8Z|%_Eir(Oz_1q)oh|TnZ)dcRNI}?-v zyEF(KJoFTH zWj)$cm~Bg6OGv=m#j#a?HN#&q3dmeg8 zYguJxL}|mT@*x9Mb>%^(HAc$b+2dCPq@g~~j!UOr$W9Ddg8Ub^}<~F|(6g9BdCzlNGMN z2Em_7`27!h(ZzGIiUN&BKg&Ye2}*SLTvOta_DA4sa3DYmmpP~2i0r%x(o{A5ee#I7 zOlEX80L!$O1@=(YtTp9k%*!iBcs@nT+1ZARsGufCjg}@=$A%wNOiYwUvmY`;EQG%? zfg>^@v)#4jUGv27u2adlISnKeob&XCfFY}}73@+KD$Mi-E+C$y&y#qv8fHqT8XWl=1aLHjX^7Q&e-+RnGMg|Y{KfK-%U`#F}6I?dVlO84N6?@%XOdMWxu zrojrz(BWB!ySJ*;H->>qL@Dd7&<(aaBbBM$%brs)>r@gL2XV6=yWhUfoNBMRB0ppC z&DlOg<8=XoqSmM>khG3fh1S>#mUOif>lTT+<$Q@)Np3rTt9E9h5O@jgn7uc-Ajes(K_>*ObZ9UsM`qVDMG~`%-VMaysro+n`>I zi3U#CD+^uU#os*mW;>)qWllT}F4_VjHe7n#QJaV$EXTp5!-(jLdb^G*crC(UOdN|s zYY%SL?UA~p{XJmYnx90MT|WV=rCJ8ti}kDhan~^kDR`^AyX37ie|oQYmi0GEK$8+d z$|g}J?PSD6TBky1SD7GPr!pG_Un=m#llpOyGp9%+W} zu%9Vr#dooURWk{%$b}6ho3sPM@RT$YocD#XBN7PjIM3wTzo)yA8ry%-A+kDkRM*~& ziuE1zU4)h?y*C6mG+C#D_bdW9kxb-TywP+XUpJE5FpX)ZwrIqCvftCI8QhS^IpU_x z=+sMHvxB8AbL4Pi&T$@X5B1vgd3j1g5>W!5ZJwxel9Jkyv9X-r>4B(Hy`@FR*_ zaR8K|*Aht0GEWVv{iH1FXJ$xnqS=8Pf|WBt7)%~rusH9~tmBi0{pY)DVl}Pfva|Hv zYx`R5Uj;TxP~Uz3|G2C8lCqUJH^*`?rh$QuDQsBO1!qzNP79l+9eI@qktdZu;?o77 zuaFLKxbD(YX#5c1vK&VG-F%0VoXH|cpIKYKE$pw~r*^VAaHoF`i_gM=^APR2%bc?Y zA<*kwqu7i2N@!fZMnw^O4fM52@=OyRW_3l#`P0Zo>I&RH2@hwcz@;zUeJ&c|J z&bR!BL2j${>z`c%^Krv4`EeEVIsPdt9X`J8NF}?-i9nRq&LhQe8n6G$z9+9etyFCf z6Kgs^`ZIW^f%@DP(%5o5vCtuF_%w1nUbe4$q%3C z02IR{daNZy88xku_DtG}%3IkLvDmX2PKJmhe2+C$e8u3F)`@GNWBMm-0okZ?KP3t3 z3ppIK6Z$}pBb*T{CIIHC0v~qV7mZ!CG0@~D4oK$W1mVJ2m} zS91lXMKo;~AzYjiM2`ycqfR*Y1)7Cq%Kc8o{>2Zo1e-9uBZj3DDoWIN@JMZjEkjc`{b9X>Z)cWF(i!~{4;9|{H9L&*- zzZwj^=TT9yJTp52f<&4{BiTjCB_;t$XZAw7>rR+zox08;{*;bI>(-J5UzYGR3Kn+t z4mUn{FY0x}qTOMsrKM@Y+wiwpZQF)TwM6s8_=;jCc%)c|bU{D1Yc=$g@)$=kE5O=U z3k0cgd^b7id1FK0JMH}j^PWofqisDTL4CBwOYf2jSvP;|B%5YE6*yO2 z?h=+h#CEmUX1D+2dFkgb81oS}Ubyh>fXQhtiBl%c8NfPpY=MO1Lm9WmfGap3C2(F> zm3o=lmzOYBFv6Ih-;V25bj2EqDksC9vfP;wN62g=ig=N8@Y*iutk!w;YT+mMl>OdH zNs?51QP?`tA8Rd^mjhd%2C%$mTS?d=VD8j@(L!J!XvPY>b}z566u!d>@cBkY0$sU$ zJPtD+WQxnX`P=hfgQ8Pm2y?`rB3P^*E#%k`daKkl1O{W${bw_5$D^Rui@wraJRHl( zP9S!p%zD@Lelfi2ok6^)Fo<8ZGjd}pQ=t4id@}zdeiI+4@k@H1=N4`cWu48H(WxC^ zjFwWz%qU!ndc=hcV`3XG2)<3Wf{eao8fRiCOpUG2htX^yX23|Jar!*@_qN>|W1E_U zUQ@7de-O#&MT-=JzB$;ud2^Q_XB3^rTQ%b%_fB>i=RtO12z%Km=85@}vIcuSjP1s9 z?b(psd8p49H6Epwf6(OE5#N%%^{#DY{z}ff7zOM372?LWj^u ziHLQ&)m+K+{r>7C3e8gG@ZG?Ab>Q{e#b7epyja_BT2A=ERlyy}`U5$5oUPTn7qbdp z6kT-REJjLG#WB5z9xC_?fFB?nU-Ii64IHHbYiMngL*2-S{%t=&nQ;3pYu>9MJ=;@& zYQBO=1T&eB7E+|>TLRBe6)O(4L2p;35 zgHMMmFgkhQjjN=I?)FxAdJ^1jit*A9`5VjXQcvsuRhD4Zw*m=*q*#$RUA&fii!v=3&I0)ByLA0#DFuWi{6Tl6C99zp=I{@MHy%T-FgL z?7R}SYAQcx8(ZqlJ;n9uc+LTiJh!hPwYThy-7Qp8=6$Mtr8w9q5qBkUOHRDO2XNrpUwi~``D)S zRSvj@=iflO(5%Ui%OHdHd46sC%Dj5NZ--Jo0H2Ku*jh8n*KxL8WSNXXqM~k9a`q`Y zYDjYbu68Gc=&&5{jcXjjsUnYlrT6n@{#(C)htMwZdqGwS-~jLPqXy8*w>T&) zRF1m|g%Na_m@ZQLZw?{J(OGdSi&x<<@b5og#%rso1H)K)6gN_1jU`hP=k|zh<&pey z@HGK=g)fd2V5Nq863d|(LHU0W*PaSX!m!%IgZMfbd~g`PjXg zVGT^=H6Glqgq~}yRjGlBIUQ-s7Ys%R4E^+9tx@P*&*?jEFaNp+m;g7VgO01H;PFLC z1T!~v8@uusB4JR8*nK1pHeQ3Jo&C7RQBvBdf*?(bjiOovzTR156=?e)O-S3o)!)dY zSMJVW3dZ^0r8h~fh)thx7xV9C1mZNRlj23OxE?@ zbRs)=c@mdg%>(ZNi`tVi?yy90L}gCt)mpu#43LUP1(FK*$S?&khC=VcvLoI z#Db41Y81|EU$UO95}l&qc;F7Zy88>1 z$cHAx3b!IJ(k6iPRYuZ^*h+iKT{Um&P_{lsl51@z{atpq6?}T~GmBil$`-Tmso$|K z=LH05fH^i`MW_fNh`CXC(=XW9#%iqwgV@2C6R6Dqv@WjB_Vu|g4l>X1boWu=v3i5g z@{Ud4(ZUDlroer}C%a=DrH;l?w0$IwmxUPJjLLZ8$~G~5$_d~QYYy`Fr59pl!I)DY z3+~qlM-n44o#R>K3R*;<^EIMKIIGhKzt*WqKG0stU#Tvh{9{+|ge@L<0nf$HxyM?$ zyBXseDPcT_6m00Ld$CdDp8IS?lEly`?7KY)+{py|j{}Lv%-WH~>;rosw!JRa4`zHAQanp{U841p)w}ZaJ&J6XnHL|2jHc)M@}L zr}7lZp)bwJTpS|nMU7LJ$zF#o>cc`k$%a~;&3(9F#dAg+|0{AUN)ruIxV04zqYUFBwpX&MrQO_t{dM`)s9~;T?VtCh|3Io{ zn}rM?1w(RKqb#M+a!B#*ofVOan^`PHf&i(9VR(KPdvsPV{!vr8I%Koz*yBVl*|+6U zn`tK`vzv~88ge}L>>TY;Ty5#rVpMN_od>etHO-GwT}(K+m9V3Py5;d=vr~kNJCh3~ zh79_vt!AWmLC*XqC_vrIB28L+^vqIy;&MtLul-hP_M4D430xkXNx0lTEBR34qdTu* z{tzsm2TLDB<;Ws}&oK72Qc*r8y>AUz41fYF`(PfT^9dJk9f|2x)QCpp&LNEUsca19 zz3et@fUcc!z5hc%Ax4MlwTAsW2CflHM<^LrpSQEFt6p$Zu@W zZ^}mdN<}w#T;G$H@_xBZ46qs95=jnd4KCY6?FIii$e0W{!O6|-kU^vh-BnDz2(hzxKJqBh}~8*@Y|N!t@oF~xE7=Bgs+dq)4Sil6pB&w)_-pbkrR=-bZr zWyH;M6@Fmj7KU90Q~3N>N*G}aDx}&N8UGl!e@_}Pu`G#pHpOhxM6Aop(XE}$GYMt0 zBC@O@p8p)xmop{^X15x9l6~>2h9oQ^oL}0#3CYGTuBYT;qPyR%X&ToTRqKl>6i)sI zUb@rs&YO=*N=soks@7a*b#K&KgH+uH)Zf(o7o`R19QkdB#&bgjE$kfKOb>3h z4a9|$iRLZAsuPrXt!@Y@fT$$JdWeb(qMd^op8(j#9IGnE_1EZ768$cBfx6%Pc><_N zT=SX^T8R$YQ>fUY4DLgyTHvtRuJsmmlWTQ2@=q^B+pEAZ&zpm--rNbbF|_)J>lcX$=zk+fIK z24r@w#Rip9ADDkR4H%J~xOB#^lXi5gO@+`}+F-%4-m|QSX8=VUZf09G9*ms|NWOb$ zPf3co;h+m?x!(2FJ-;b`-E;u9IU6P=I&Qf!Z^h*EnP)_4lymQ4jW>+N zsr;YMSx9Y7BxR$l(%n>vh~ZI)9$YQGQ%+IEYL4V3o*~_W{P5Kj55@c7pMHw53tE8O zXLDz{87hCZ*2b>f+v}VG=w+8wq=#y3(yFyfU`Su)z3;p+wwT5HA*2@U_@p){aNfq`Wzp>7J=;pY73G{Z@- zDG4Vm9-^#J-J(bT1ieKrpIqWt+n<)E;mO1_TI7BcUE<$55oUHRILS9g@QyGnIv5j{#y#$4@p>5O4|pBsWxSG(YR4oMd7kAZrPAZD(vhP$&RsLfcjSm{mLR`7N<;ky2mTu_~{g@pYoND zh3+{vfh@)vf=~&yRpvfFwjQdCh7!RIZ;r(!O9*EA5ucL-k6!3!+>jzdl}wfoYnnBD zKh??^7=X*(DKef3P6h7=T-h9?^4c6 zynfSwgUxZ%ufOAqbUX9$(0qD#pAwV8qk#|@r&}a@1V^h6UzGThf|jpts#RL@Ohl>E z`1~hSNzG~`o-VVAQTq+cx6r#wQFN)o4BB&omN!}MvBBNuC{gdj_|gjj2UJj_-5qWp zWVn??XcjB(bvi-C6JUes*@~FdF_lf<*b*MVNc9U*0b~379iiJbQYAHWZWsa@AcsdupI#uFx=m((rSY$*qy zQ%(X?6N$gzrTS@3(eC-0YAelk+eXc?cPlL5SmAXEloW^aUP^q64^_5QEZ)+a$kmGR zz$+_RXDRh25UhA4C95i?RVwcIXvL9MLY$>Q4mk=SIOIgH;_q3)?a14E#Tes{LOK7 zx+rfoO)mw2chbUbfx81H!5wgCoVCxT5sKAX0D;JLvn4`$P?It19Hm<7LF^uostHkO z7~Jla8^995zEz#-dI2j|v>2iri63`-h^W5z?A=q$se+g2ZQW~-CXRLYsu1aaKR0AY z=S8-Jo{VNHWy&d*uk4WY_MZ>ot8z{GsXIcjxYC?@wh3x7 zx~XH5u?03CkA_ClyQnGSK5;j*jVHy-tculFi>1eXF2f(La4FOf(x)G?fYE`zh@jTc>ncoS^DTdfp!*Q}UbASOZ9V#D zw4CT?m|vsm0-B`}rCZ1w=IPT36}r)C)kI5mu%9{_`tVNWSl40_?)~<~Ar`#kU3PQ6 z&0}V>n~pmUq<~Fz8|H14Ahw0Yn6aM#edfOJ~Q0WA%p#@K*w4Zr=X<#X2Sa8i*QtO-wgnyJrkiA ztkJfm*OB|N_hB$L#~_A!MIRP7Mr_LW&I(L@X~t3Zlw~e}vq-dkoen|Ro;g_(gNkCX zNw`wPZ7&wsJ;6Z2-U$$J$9&MiJYSr|L<@vcSjaLT?>Iwfwo(nNsKBvY*>P`+sL`~8 zT4s2ceVS+BROk(Qo(HbG0d~y|g#(}S;hlEJj*HlrPP!?XTM4v%~6P5p5ZXV*qXtzcV>7&8KK^cjM zrbeXbR&F9fA+ZQbirjoX1vg4_0}>^L39N`Gwxw@55lR_DA`_R3d;lAFM`PcV{u6uY z<9rEuj~_Vqa8v^8z4P=)X|)$P2lc7br|-(KZhHLH~E@7{I`7AxT#c- zcI-oH$$I&&^SAic!M=D5v%a4u3NVx(jk+hLvjYsskBpJYPLBlWEc1-C)uCNGPKX_6 zOW(%rYiN0SX=h&S=RLemm_l|9 z6ugA(H;V3N)}h@GY@;GA9Ri^(!<`sdPMQg?9KA`lCd5d4yFlkv*f2#k?Qw(6n>=s* zETdDo+ujEQRIe6YWJsdMFIir<492FZ6Yh!CC_>`gxV3Xp-YHw&U$DawNa3}|(e$4cmpF4!LaFL|h1!qCbLQ1WUhE2TU7l^tL|VW)j4N}tLHy`vFHQSsBx-6! zN4MV7(7)sR8BX9f;1aUfe{mT8hmgL`|g^G!EbBI=kO*=!F3Tp_#H2G98GCl$7P zmA&SitkI6E+nkzC+Jg9SE(L)ufJw53s1BsL-N0xdO@jMbJ|$^?#WtAwrEye6?~?cV zof|Y+cGW=5Ou{hsA1p&Kp>cRZ@ix0^xcMhbjxwFoe>Kl!J{PVuG(Jxv?(cmO_5DQL ze-c^s337YjB*(dHSV}M$joF2=O)Y41vy>3YsYik}^kN1%&A4HSkSCn0&~TXrg`O0%HCY3gSo!7dLIxBzYo$pvs8l>7kz%m0 zldZWF8SmCOXCIoTn*pT87tdx$%Xa8?|hE?z=vj(X&6fZl=m2xilt4QgQMAc{LPdS z&}n!kRaKN$*265;7tZ+)v!MvP)jx}5X$0*86Ct4HbSVEktD1*@r!*};nD0f7R@`_wT|78^bM%s@kr?n-Km{4B*vWsZTGMNX`utf3LG{A*<%< z$zgzq(5Ff%NYkcnf6shndXI0L0!DItW?M(LV%o-baD~|d<)4wW;R}L1rDLe)`csa> z1$*;$4q~(cmH(ADy)cemTx(XyW?rDjCq)JW%kb3FLiA8v01otY_=di( zv161qe#^0+Oaf1bd>)0Yzp^RBOPhLQzW9Q`4pt7k3q;_#^G+w$jBC=bl@G_%;~Y`) zjyM7jO&6LJ&vQ+J17i+wx-wO`Sl4PrumM5U38I~)p3DFM6ScSkwmI%;W}LvKnQDB0 z&!IkcJM1*Cd8EXlA(onIkcGlkH^nD0 z-2;9?zayEgce7ssxFVIuO+Z=Mcd9pjGpE*@@8*0ULrLF#o_oEq`1nHV>yYksA~6cO z(p*DP7M#RTk-^8l)9oS|A;jE=-CJq>Y5>?q#=>!YByCf9H*eC=VWWUarjjmxs4BWw zGv4r%@%%7)54laI*va-h<^e_%g7W!)x!z&o@WsfO(4zMR^^= z^nZm!;0*6}P9be`PcFL|7_(-&In6sDID_+PABHtkJTLzdcEP>!1IJrjPV5aMY0gfW zsqEFh?;TqwGZWH|I7ax9Xj@g*4$C(d+!!Yjx{KcX0l~=Iok7uXhV_@h!$BDAo;TSG zamF$$qr_HlU&E8hvP@+9Q4VL-{nh(T!|kb)XARaNOu44lDUpsaTt(qG|E4mRQ_~~Y z8ADg^j@?3aByg8cq#*GL7M!eS`4mm^LqrHy=Gz%;w=`Gu!4uh+f?(xw}(+%%zD;Z>CAC z>@2+6>78#2nx?0?cs0(qYELv4Ry;3jXr{*IRCF-pyV$5SdaZ4vHlWc!&f}%ki z#=7_V3p3OP2d`lf@XKqQCh|@g?i|WO?Owjg5NHgA_8hcLhV$mGq&wMbONx)3r12Cu zTvgtwrRA1A2UV^u&V-nHd(4#YaVYmE^Bw?wQZNhP#4N-Ng#l<;()(q4MN+V-dIHGF zHenDVo`^)a-G%dc!uaX3@C@BT7<)w$n>ruijfhroz~Y7&dXn0vbS_g=s9Zd$arOR% zQo(RhmdbdyuLxgulM|2iW0p!-Usn3*1e8uIV(807EFw&!X8X_9*-7<0ww+=V?y|pwo&BwoihVO5HEHh{)Di9pKmZ*9g5hde%4%pM`$$6M8qdI56`=KxX_t^ zd_7RV-1%s`qjRYzl@lNww@J#k8VzoUH67lWuFqAdgmJ4x8^WW@pwbG|zMeFJt?eKux6>W_wi0L!5XIRcBH zMHVyiX(w((=JL)YhSlUI1_Vz`&ABq7lu;mUqx+ ztGlEgiU>=kZ<=4~z9a%$80B~~{1f(#pF!l<`;&)%hk6bD3VfnlC2wVllhfcL1;!p zw~6y%ZFFRJBKJjUDQVK*#;pYf7Xmy-7WM1|7-?J(e0kH02&`dngKeckQ&`EueG}uN z;ha#50yY7*1Wuki&P`J;#BNm_!5iw%ZNy#%*rO7$tXhdrS45;qP8EEwwkxvqmlt#? z%Cuz&ob| zf|TR+83?#}j!`p%VnP15(aV$xwX`jD+~kfZm$7`?)eEwRM(277KC)NdF%b%?&%AR` z-F)wXb%Y(@+*m@c=LjaG>lOy1l^PH6mHPj>HyiYZQI3@nS*j2+k89dHPE(>3z|Z8)$GA} z8hCWflz*_mi@{RV&Bv7i%idSVUO5k@vBL9XaNl;)l2bd;`E;oBQsZQjTkFDsIl7I) zT0a!iHkjR4B8}k(dWEv4ZhxC1|@!~!DeKg#c zz?KMAHgRM4K$eASKRx%bAMO=Sp^uIo>r4!Q)s8c_}AsK-~_tA zr*wRw=mMIrs|gJOH<F0<9cM@So~5#+KN+O92$|y26%)NDb&Be5vsv6ea(BQ zP><3GD6iBUoKZuuRtqf{wSvkRTYO8t z^4zw$U0>gws@hTg2YFH%8&^7IVGw;g!6D5*U|g;LG~aH6{=&EL-!0Vs(&Xhj6PjJR zYB)ZON8%hfzO0r3%4sIJodkkPhM648nFeG)Sn2IJS<`MYI64nEB^K-fc3;lDqq4Tj zxFTAW$WQXETFsHkUG;vA+R#AAvcrY{B%qvOjsB)GiX_q4*ypt`XDESCHHVB?h2qS!*dJRVZj`49elbH!n zQ>ts+#oT&K)9^Zt<%>HmDMcmP0D;b_M$a|8d4_;gP$cce>t4eSc~tS4==h0haG|t% z81-TUfuwp;VZYdAayFm5>IYnKcNpCO({1^HSH(C&Kgy>~gnm!$MF6~@Z!*giyTKc5 zr1tqbN4yX#H^YiVQ6U863!iI^^v4+X5l^UPD62LzS9<1aN(dY8ACMgP=WcahFG$Y8 zY^Db3U@#t%yMW`s(*yVioY@WH37!5r99&&%u`IjNp0RQ@!!(NxQRm+GS< zLp*mSu$_l?-5~E%LAly=5!J{06WthN8PA&`!n`@?|P%^AbNH$i*H}Ah{xfp*7RwwP0_5C}miVvvZ@k3PZ-;FKt>|F^R# zQvvtB%BG0Jg*IyS=+I)$(PKE^wYvr$n%%z0w5bKjkfb7(zJX%dcQ9)US8R-wcCr0B z7IEZ%@-M)-yyw?_Z`Rl6`|fOT9!i{&t=A9!MwkxRpDJRKg*FSx@tzOuq;g6|y0G+^ zAVmWt3a9Yl^1!!$IdtKNGQl_yz^d$*Wok3DAd2!JP^1(;t@y{5rwKCdXk+AO^9y7) zpY+~PnubUZdEy;Z5W+l9LU_2E32Z*mK=}J~>sTsDI(cIjD~uXi{WinU9ny({e={rU z1D9Ka{Pf>Cxgx$2d}j4x!hmbqXE#~In!ocq28_v=PK{i8s}xVL5Q8ueL4KO#Q`LaBmTJMX+v;!K^v? z)av2{$cmzsfoOrY>l-{NqppJNx2OO*W3@~Rh65ss+!Gs7A;xTq) zGCi*(3Yu)?QoGZ@1QZ(DTM4B5UCqdSwm$bzJ?0lCfiKuYtlild`dqnHGm3}v8X~*% zl7<4R30A*LMapgM2`q#}!pRk|1<$h&anprR84=r%Wf>V9Vt%7t*BLvAc-XCbm3~LKAHhstPM#pL)Y+O{D^Bi#ke?L zeyGT2*IttPsaMSoX?l?IZ_Cp-<2MeSb7_?!z?gxNCLSz)cTQX-{S}~d6O+xdCt(9< zjV#)wQqnFG^_xCGeK5KeQ&}^FT!nj?SZcX7wh0O<l02KN)oGAIdI*mV(g9gA*m0}em;t-8DeAqLm0 zlpB{RlHC@Z1ie-P9wNFB<1n|6f%Nf{8Zt64QWLrwqCMl!yxKsl)Vk(4NzOxHch4c! zpJIp(%*svB4sU6fE!T^E2}$u5aliTVFfls(_I}4Qef8q0d+gxbJs(E02__+ua3`5p zcwEZE%+YhqLCzAtq8HYi^Krc6yMu96kdna__Z=xO19IQ}LnK~}ki1WFZf_vx41mEB zMUd|2-g2a2q=Rpgkb+8?1-TF3Z%CVD)@{R4@V$AROMO((!Q{?e;`#zuiHBN-;@hTv z73EUhb?oa~1ObX4sqg(){m12E-h7lz(CMUcQdFG97V6(A zj3q{NLK(>s>rXo?HT`j(FL~8Hy}x~D+D7^&C9{I;n&l-ywii= z(&B(8Z`;II=L(K!5E|hRZ0}4?bx26UfoB|8x0X480-BB5EP&Vp0PEAvz}Hw~@iYd|t$eS;ZxFkVfHa<5g`hj_ zXB*a>`aSh4+RQ}R0ivfF)mfKp{x9ELN-_pu^8Kk4{DCvgWYwuH@l&MTag~gRM=hO>2ykX$%HGc&tER|#W3)zNBVVklTpUJ}%^5)^Z2zJvk|vsDBdTYivA_kj z0w8Ve3{TvB2j86M0b4~HZq3yM2*#nV)%1>vvHdm|IzVzrG zo^~uQMF!z4BHUdJUfS{qtZu!}USJSaM?Z#Ga6VqT*W1hXtApjDY#?_l#ytS!hYHaa z2!)PK9Nf-c`CWv(;KxgOa)54~WLzd8XU4^JTIS~wjMC&OWVK=B5G@Gq1$Z@Ypz2xC zB}CraHhiM!hHOnLc{vXVT9OH7as&bg6^o&x(khc{^}_9EBywynr7T2hf`#LxkPgO5 z@@;JxH%L-S@s^tyZlQQVGy&ofdp9~a8&D3Lt;8zHs4E# zRorEiN) z-jzl^35+`<0o|%4)ZOMhZ>c_EZnTvx$x#e!arPZ3tH69%&nRYZRjKZ(N)nXPy!>qKs^B_SzWl(oa%3YV}gGytiC@H4xsg` z2g(0D0}h6F1FOQ%d9rbl#Arwb^k(}i>MFPT9h?YY3{^bMD4i)JI%=ww5pjl2~WaPog))(CIg) zl?hAm=m4>U<3m3e%fB3?)N(OQ6UJDJ5gJ+AaD=aG)ea*mgXk5O6qaQewPdjXi~U3` z7qC0MuL7rlFnU0;cQkC=1+%cPNS9Sct>uzQI=Nwe@W%LeNvcqg8V}z|HK@gOO-W|E z6BU<*f;cQF&}I+{B52|`EezDei7i2Ymr1~YbdE86j(kKD+rydhpF^F5eMG?q(@9z} zWqq2UT$UfBz<{bv$mL`X53Glt`0BA{nC(Q<8DIs8r15u5Gf($2Sh8yBl}?=HL1fic z9+>=!4>-l6lk2VyIGD#js-SedCQWweZl%FD%={xkmEsHNOk zFB*qVLhZlO7*_MFG!B5T(ov_U-go0C)o}02DE<+Lrt0zaSX>z_R#P8f zAkkeFDrANT3J16LP2xkxWC)${>^h24Dn$wai{J9sIFO)$A%9u%Q3ExKM*QX=A~n>H@1m7Cva&i9bE)!8F&E zBVxn!wg^G0U^Fcf7_CWdgT(wr(1+p!E0yoziMt8#%J#j){L2*lBz%U48e^gGSH+pO z=%tQt5ARI&M->VOdB+GDdDfKG7VtzS0wS2SF@-a!Guzcf`MmK`!&PtY*`ZNOBpKNM zD(*#S8TcIRp3D$e8g{06Tr>7iMO$Sa#1Zl!zbJ?>d_5Zh%&GePfKCSskfG>bS0sNEC5dh2Y~JPF_1ft=Vd z3QhhumEk`|KYdrmY~EyLsgzE34&p3%`ZtVSyAbM`u-%}+;C?Qm~~` zj^eyJ#&(y>)b2%S;xoR}MATy@v5H`JxH|((lkk*epw{;Ts3Bb<)IxUsbJi=<@6*Zh zJopW=EJzn3>^r2Q@3>c@ot4EaqA}8C!n%0ZrOk*>34*y>@6fgfDvx2#bbV=D4S_%t zQ#nguLI_~>E0Qiy)Zwy=QSd_ogG0SGh)zK_*1{{FSnE3>ZH5P#3Y=Rs?Z7|Rz*GEK zPGEwq-!#UvIwxJC48g+P%8 zx>|B0PkO{>B&>FKDk_nUNiy(c!PM1)5qYl@86227p2wh{QM;oY$C}Kir{VC0DUT0) z{{MUNooC$S-ey5h>L+NfU@w;1(0xt^W!Ke&1Str3dtDGp3x}*3lbTIHc-(IaUO}M= z#XfhbA<1@^(P?l}6WW?f8$vc!e_;G=HTwim^16V_!3oPA7vP5%4*>+Gp87NtFv5ln zpiNw9Yx``bYtXyXy>I#C+bV!Hm6dr}Z4posint|+BWOs|`xn#}jBl!6zwyC( zz;XMDRtE9eZ%6YCt-=9_ytCAW6xPtEEdyU}!m@4B!;gQ}njWy*d4&_<1=K$??7)Z2 z0&foIV(V8iA3%^!3pMu+QGZaO5nU5$D>~W1PQU}2nOU$z4)#;eG6+)Zn6bCd3cB#I zfiHGvrR|NcB%C+dS1LXP@?Uuv49Vs!>@7LIuK9~L@3iI`4ZuO)bKXht1l>O_CVf3L zpYDX0-MXm4ozv1&I~gTW4ryJ_%I7suChW_Dn``#2N_+juDOWov95hF)nBL!fY!5Z- zGru@cH;Xd%7Z;4%I{8I7ucHD%6&ZOxMYhrnXlg5L*yGGyXLNAq`JGLEH=&s&w~?QtmtPq-w6U!_3L|O zVbojQSlJ%uE<7#dtkFv@{U+Yz z#kGar<3=%>hSZ5kX!JJ%&eyig@}_ht+l$5JX=tEHig5nM)BQh}^kz;M z2x5bfD=CU#TlDAW-Y=?gXh|35%1NqxBt`iV>OPAC?=?~;=Y*n#Gje-FV}Vi*h@52{ zf_|k3)W(;}X4XupiH`N%?8A}4GXe3zrl{uKD;H+B(PDt}Vb^NY?`xL5FGIC3n(msZ zSx4Hcf|>9={ATe3pK#N3*2ajmNA9Q<1Cb@qMMGyY%=c7WUfK;9(m$~{&bpmg>snV5mZZwZs2qa&IWF2#+6+teLxSn-MPzlb;XVPS{^ zVn781h0oHTNLDVA6NySJWTVDW8P2!xnBEoU&}2TPPQ7fN_JIWb*t(29M~bUh4beOr zShPX<&lRk9Xzy1y$`-TT{Yzw4#}!i!m$uRR#u;v{Y#AW=Y#j0sfaUT7z;JT zcVy?Ea5uU6(aAr7e}|qmN&-W9(KiRCUhvsM+VTc-)GPbo6*#(qVks=m>-Gn2H*acMl= z<-xL%WaMg~5{lb)j$0K+1c&!SH`yHpk5DbUd)9e`?mzuSgJW^Frt1ZeWkVG3C*UQ% zk)wNXHO0(-2{5^Xuo3KAzbffW)TiV-WfFJqB?1C(nmD$NxpXxydS(KsCFy#gHNk@kU=I$T9F zz$UDJ=?zs-SAh}(wa-iN+Ca#meLdtjU;F^xR2m*h(`>{t<~-_&rI4-PVva}@*PM8U z5lMY}Txy(G2$~Nh_Z8;ca50$3m%=C%A6L-!R$RmbQ)OAs!IOqnVT4idzcC4@##Jf` zHa_mv_6)2;@wo#_IggaYN+BWhH6Xn$IZZ_F32|1{%vl7N_xomlvzvu1di1fTR}pd` zz>wERr(cadxZif)m1>h315($l*OZ6P?H{0a!wQ9vzwr)>SugWIb15%pKUyjKc8qAO z`B#lo_YvD@JxnhL#=QlR-^05LcVq<*OtB;kvR!DMrqvnWTE0p$c>T#EP*)03?sjy# zr-OS-85Y3id)0G*rbZ4ah#FeUX2~;dcXNG@aKeHrr5(Egh@=FxT+F|G@X)lr6S*b5 zIVRew6kD6l%f!y_?085Tn*3U+zKSj$B=at7ze|p4iR5UrAYP)k42HR%{i#dDUsG5MuJ!?sYqx&_rc!=|3D-JdQTY;5r1wQ7G5<(Una3MKoo-GMUIiv)H9*&3O99TXn#?#tKP6j%2kPZD_;jt8 zXsE2Bx_kSV6!Y%Fo)Ui|Zb~c<*yD!E(7kQ#{>q;KLs&(#t;Ex7soz#lB9mEaCR2L1 zlueh5pwE;tkPwYxLp4Q^I+T9W`1TQ9M@klprTLWuN2!wKh}%3TDi)C1(H`ztW0kQ> zzOacnnBG!ZhHX~v9S7JH3REh{qH-BrjA(#ss<9kWQp%{^%KhO0I|5a;$4g^@54u~T z9^TDdP_HI)*cc>U%DwWW!sj_lq5LM5$>7OzM?UURioq4@@Sly$?+E|g&ilv51kQ&J zSLgixY9WRtXnBI>Fij3DZ)G28nXoJci;FSLSkoIJP38Bo?i}CEoF`5p1R3J4hQpHT z9blF$zn0Ty_#jxzXuaN>W2;IxJ!GCH#azygfO6$ z+w(za*^uj?5#l=w6;Ke#Zl~j$|Au~8?~(>eq5i6JyTmktkjr@uVpdEtD)}$w&$Bd( zd5Oi6KOZN~eFfQE;%;c{9EAbVgLcaX6=87g6u38s;}uk83LqI05hJSx;H^2%HwLNR zV8NMNYTsPqbxgB;5DW9Xq9*3iW3J{+`eZ-A4#)<9)j^#lCyVCeBcvm2<%v;z>vWTz zaM8QB3Hqz#)_o(%NfxJSKMjcYSA4pLpLK}3+HcpPjwD5!eh3vuWX8fN?WVk*IBb$k z2>eL}kNEk!A?e529szLP6YLJ$JFTojVw$eRIF@LCGOrr(rFagK904ep#817& zHJueJT_r`%yT1T>+6bbB5bTq`fxp7Y*~4IJCwOacRGCp;@G6CL8+OpojXIc-_gl!P zbGu^3KC_zCyG)#V!JFea3ly$As(be)xt<$nA(-Au@H>$@gaGn293K;TILEU*rb}w3J6IuGTXcUaP0?KG zkkhtFTk*(Lg!eG#o`f{;C|1H3PEFmvqYss8z$4kjK!m(A20o=zT0Ewber`)&D)HlX zxY`;5@nP61Fho(Z=MxuLHM$-RTlv9EfOOU;NcOcRYKGioq3vg zF7~w>_~*vxAZJ;^MKr^F^LfA+6E%0QrV&Yjum@-~Yxf`4xc-!E&hlPSv5u1woQnC) zb4#a|gG+N)Tt-9o^$|=rnlNX{QK!!m*6Zz)Z0H5BR1bDf`sS9Qi6(Spr&ZefF)W$) z>LIn*ZNkG3Zky?3BZMF<@&;E*!-(H5A;C+J4Sh7XIXT=w4R@VO`4J4GUct+O1@i zhq-&gUo}R(;*%}#4(C_4JRXuFh5?()qz|qliY#=~G}<$nvjk=%J;Qul_dQeKm&7Fa z2|>4Z9J{4pX!&Vw**fgf)}3?-Ek_{nWRBr(#Xv%-%_TJ{*-QsJq9ho_oCTDRGXVe$ z$2;3(25VD}991Jeu-(*TE;((Du~@(C!sG*oXI^fJsYQysYQVE!7G)L_5ZBG5@0o3; zpt40DA?4Cam}cUDfiil%A8R0Zm_2vpa(~RXLalk=k=-DewE=DjDHCy^2%Ut&mZ}#5$^B)?5Ipjm zbg-IlMQExg+2+Bj2KiMpN$$p~BNKMKNG7C(^}kBac=zecI&_TP$f{9him5R=k5AZF zCrg~C_h3W!UrsenOMZT=m%o0nlY327Sw81={ygjyI(j@z$63P`xIBAG~MuG5x z7s#jRl8zqSnUN`VBVo8!PMvV3SM>Od1xsbU+;sd?ubSvg21TyF=BtLeUk`S>u~e_0 zN5cUcS7ZpULYY_BNu?j%KRA_DD`@$pOdV9VM#(f9fJ%UF3Nw%AB7{Gk49SHf1*;#v z=r5^gv+eSo1)FJN<#R+>b6+xt@!UKwedU|-^NZJtnWWvvGhd*bW&zt1S!(IDh1ulk ztksjrs)AF(He$Y34+_m9UJvgj-#Y!Y)#yk>o;_kc!vy^y(;l$OR7;j2Q?e#Yb)kwC z{^?Ds0r)mwcckfrqbFzT^yo=uugz2*Zl*q(cGvf37G_A@mNg5lXOUAtH?H;56H zKBijh$^+DmB%TWi0{UV%E-C}P+sYv3cUK4tUL^x9GYbzF(0T$pF&^U>)-aj4z>uyV z_SN>R*DSS+v8D3VNW@0lKo&oAl#nQ#FFJDKZ*VHdWd+7xUE_s}bvSFO$1~wbFq22@ zG^C}AN{b?T-{nPIHG7wRqGAh7dS)CkT)|po}^5PVFqn+ylP)OnBRcW9dOC`>43<@2dVCo)%=hQy2VQx31| zibsEH_8W~m1r*_Ud9vVB@ohQ5^l(ClaYLI@pa&zN2y3ypJQm}9n7}3lG{`ZWuI|Cl zVtBL6Tr-sN$3DfwRizAkwAuIQSr)FO8fK7rT}tp-DC9oH;5We@(>xj=rLWna%m@5Z zP+UH32Z=W&r=g9pw1$ITdge13 z(wjKV0-bieM2InF`-uJiit$7HKHj+z7%ewsACV}~US5w4Bkh|iLteB-c%W^(+(Id| z^LX2THT=gpX!jM?O~!ryg|QT3Y4$OkL}ppL2m}P-g1jJ#Y&Vj)c9pwwvo6{Li^1-V zz`DFBSn3X8^q00!($kg3gFaEJ1-FWsTF_|W*lc|Zi__C&!Ce*)>%K6GM0viiZU zlfFh%`Xjr0f3J11I98kM_%*Tyb<2cWil9q*XKoT9R5M#h_s$>9aRqB#Xg+^!6a`!uW zH(grPn-7K79hcY>6cL@*W7f1=5MPOyFDwo&VmRd#A69FTFCKk9i{9&^6#B@Ms<0z| z+cpJ&nGxJ3c$;qJjP2%kPZ`8)KTdW{^s{@bBC3@nqBvgMNeu(CkM~cQr3}gjLmg zTGX;A8ti9FxhGq-r~za%r<^WbOi0OmHftO*(jC3I^`~_B+-cbrQ&O|o>dVBY>DA)R zc#6b?FEIHj;b9Wub7$l_Y>rZgXTkTqaTm-`xmAClnL)UW8^)P+lB$1?Bk*W~fn>%Q zQxuKd*{jSGpZySXZRJ9I>Xniq`;cxCYc2V9*RcJ32n^zc1A(-|Y{e8xm=+y7=OYoI zsR@p@CS!Ohw0X7*{ByOLouy?~YrZ+3OodZ(K)am1RX9j5T>1!dmeR!;9CC2nHcY2h zC)CQPnGDj~#Brj4I<Yx*rwf!dEs6b~PSxB*u63ljt6#oDw=AsUO) zd|8(oC%&55K5a7PE}V}SDlev&{9)1u>(Zvyj_4(~o#^6&k_XKYImbFIJ1teaXxO(s zL?sMVXTb`jJR5y30zfQ($sdELyJC>`Y}K+GPaN>N7&kBGvS(=5#q;3u4tgdOa7tO)lRimcU}HqfNU-^ zqidrhoQvX>C6y6d10RNh8WHbj?4u0B9*~;L$bFe*aQ&>f`~#>{iJ*AXM$eZ4~VnWJqYf%7~^YE(4P7ys{XU8*PuS7 zRMF=K)gl~{a$X`}P3zD3q`>MuyFlRGqpzc(c7rB{YZEHpC9MG>>u|T=!=mX zh>X(Y_&NoHb?PB`Sga1J)zbeJ{CSo~3=gi^Bn<hX%(Wjdhmx4-iX9i(KDBzxd^?i9{{4r;4n2S9sy`!bQ zTY6Fs?pq%-3UfE$WRYd!ENn}|Q(RGurDuLi&q%kshw%Y`*x?5aP?;?J8;l%^JT^1b ziEeZOW6@APr9=ee7npp2Olzc6QE(x0`5DKD(2*d0ZQjmyt%)+K0U#{vZ{fpgrV&oC zSi443?_vn_x%Y40iE$v8Uvk+0NMW7{#5tCJX;+sk-Ko|;y(*F=y}&}6yTmgHFC#d| zUMqNcGUdy0KicpTRMzL6p1u;bh@l~`Zv}wF=0c#83DpxP73~1n+Aoqzc@|)0*~=vg z*Z-9~VX{V5NI?UT$K2B0nFX5hBuPCgk5)7QSh^uszU7x|Vfz*LJRIY|0UoAcQ&(Jf z`%eFMG09`kAJ+BG%cKIp(Vt;$6GE(c2D*O6sC_gxz=w6f?)J1vlB33lmK>+e{vGX= zf88uzeq%^-K+hp7PBGdk^WdjAd)Agoawta@(by+&x_r zr&~WOm_@dz1)pgOoT*LjuB+)^yA|WqcbYogR556c30jZx4zzLD{CX0@_(7-jz|eFo z43&tiW$bdF^vkLJOt(%ifT7py5CU4#VKeI4d|^ZxxS`PGk51Bnmo1=?W8zx1V>GHsGfVTfkJQCgRT1ezhjR zz<8)(=?4;8WIba%xN9?y)nxlx#_{vT?Ze8g75)~gf?F3*l)?8(!?D=a^a7bbJ^c9lAnnFW-;T`)+S6_sNZ?$M#0!L3JZ3&u#ZWb=za()&!qRzQI68}^ z*ks9(Vh(+W0y36!If;Mv1E zy~E0R_|Ik;RzS}vS&5dTgk&l9Va^wz=b3^m$fsMu^x^eit|&qnSwOUo*pTd$-+gn< z6WKci;vqLw(Pu%j9s8Ee!o4CmK5+{7^&v~a-Tz+At)|iF!~EiS{EEm8$OFVfkH+?& zG(~Irl~!*L3W#dCG_hfYFks9&bq(_@$w z4Eg}{FF;(v&m_R0d7^ey*dIuKrpH)^I<=t4PIjo;S95$9RBI_V)i=Ca-To+F8t*&` zf%^Y@;%A*v>QktY5KPm!11mQ?M@HrIldaKBL(qd({oez~CNDE}ZJesl6vc(25aE6o zFmV$=cig(SS{cBHL*eO_UR?!tFGKx6gBffWijK9$>pm4D`3@cH|1b@e6`S?rUH$J( zfF0!Z|L(P0hfxVNOEJ~)*L*a>+UrnVpstKTM<;DtxT6ZQ*pVpc*gT4fb9O*-<{F#A zzzB4Fk1vf0N5{o?r#prF%Wwe5=F`&_m2?{Q4vShFiBMbbQeCB2_uchS{#v-uMCFv& zVpB<0%)cC5G_n|BQP&T?S*?6T+?qR@#PcRt%yL$EBsz=6e-a9qy{^ieGshX2_M|M-rI2DmS=Rf2j)%)zPUJ?~El5<`h(FKAz@xn?>zXcHmc?;p16n>*HDWE%KWRnrX5>=zp5{&hF~dcXK3gLCryc(G zH$yh@WcQ-eldh(Iz)sBgPaFTC=zbXW*oz}$KZIi*MXMK@CGQA&8F-_>9p}Cv8$Lh^ zaYodQxxWj~d$17O1$W2;sdKXw`@d5(lOU8$=xduAf|e)hqqXvo?+7!c%k$MAztk9- za}0Z8pLZQ$II>8aZzd|!$I{dG%k`YEX$uG@@CZP!MQ zD)WV`=I?CKZ?1K=w3{+lbEWjS-WZ+k9uNzwT4CIO4egiOj+xc_4~Lf58ESfzKtc;o zo%N|JJk#pBdvJ!V_DUd1jdqxH+|#sz<%RMj=@?0*BH{v-eLo0DGC}tk=EUpT%<3I{ zbEsNywJtI-_q5`@BSilW>T3c7WRYeTBV>#}xNcdrPXi zshp4MfCzngQf0p^T2wet_s-XbtanY4cRsxok0peZ2!2$}jbG(MrFzzXz%V)eP>t_; zmZe*sm`9U!2P2xY*t*L~s4aS;R`n-P*M~N-)_)A1A2Uj_GbsOxO=?cmsMn4sSF@Qh z3mjiZw2e(1zGY~O84H{HN#gSN@0qz*X?tg-=GTCOkMgRa{$6`#@}FGKT2a z05{WMD1YV&xhOj;@tf2m^Z@9N3HXa~iFIKn`1t6TH(fS5BP>wGwa(^Nm*= z^rdH-GMMVjIu*q}3F|&zQZh%w9ZP*uZ}W`RM-JeFMXVWFJWDf3vb)5wxW9Y67? zF(tEXwbj$g?U;aSm{@oh3_j{ehk?XQ%5B`{PkKa*jCN(nuHm$l3thzQ(56it?O5P&u~n2gqiQv}39=Wo7PCqli2 zStCibetSP;>%PZMUQ;ZmXBl~oc=BJ~n8IyJ7 z5Bd%__dyP^E33%Rc$iaJ zmhocqyGb;l?3Nh;To0KWlvh95Hb$^Li4`@BrVyU$y|-(yN7b`x!M>Fnr3<%k18-4n z0J4lNCCa(^F9?rDr;DA#aE4r9gKh78n1dd3?q!BAmcD z4W#F^w&8hi(+Cq({sUu@844+Ri$YHTSV)ynLH^ox+EInN57I&JiJKOwu0o^q_upHD zbMTdg+>;0dKr%N6kP>e4c3v`iLov!R2W{&*yi{fFGNRGd#%PuGP4F8mkb-pREdRkM zW-(Da-;pK9}JpNRT`e%aij-7;K!|<$kIRLX8R}U7Ppz2!!@`R2NOUV>d@FK< z@U7V;*bp(%YpIHN+&rwAaov+3l)Uv3%-`I!QlaRQ0c-meyfj!|n`gd$9QYe{c@!e1 ze7c)LfLXNF8R$G4^s>Vm{9MnwUZKcQ+8{o@f(3&O-KS=WCKU}T^CFAdPmzmYk4>N|&1ME=Q{cr+lA%x*d#e#}w2hz|b`UDw}|jXL?B_~P(~)NaIh zD&YbbdS_X?02PExanDU(ZT*C59{Ib<)GY-n-7pv!4qK{ZPK30nlvYzHdnlq#M@}rH z%zh#=a7{@>^73fjnLxHfqp9+qiri-P{;d=<+d}Yr9kaxd<(89lu4W#724qd5qJ_wo zfgQUV)SE5J1j){MU+nKc!l|RDW01Hg)ysJ65FzFGg3R>_VqV3iIKbV&VNex1<9sO= z3qxO4H>lZ1l+yPvI8Ib1>?R>12+ZmkJKiJB)KD$kNcroZ0p57`?)j#+O?4JFH>nv{ zjF)2c6L2i?elnM;GbP8uCb6L<^&=?Gg!F4!nNP-QJ7HLcI85iAB6|Bt+-SXaQbViU zg;S>{>{@yN1UO^k-Aa$;XvczG3ojh49}lFuC_7DroR=M9D^!yyj-SPgi%s`Uc9$onv{8r;ob@TJhHGgM-v>^QF6Y#^1{}IDn#yI9 z%rPK7cv3V_yoeP_aXE>$LLi^)Q3GDQ-9>8UWe4%T1aWYX_DXk5tjXa=mg}Pr>lo-u z#o&Ivco+TDPJXAN)*N>8L8Uk8F)K9XPyP?%FX31UKoPWHtFsno-lA3_U!u3!15v%u zUr$rCCL44?o`2rvlO}P4hEa`~&GAbuG+)S?C{8rTPX0%#s8-j^aWvwQ0w$7qa?#(9EV`$)$@|2U zCq0-$ZlR8a*my1C8elYN2^rf=nfYTKPD!96iFFev+eP z8Gu20OoJK$>T*cO;lD*PqK+l0v#K0)A}fSgja`97YP+G@i?gQz4yLoJQ+9FA?jX z)42!6SznBkY-FGB){%8%cR!qdnY&B%tb|)bvP@Mm?hC$Ibf`+Vd}+f`yg|nP^v}?k z>58ztuPdB)F$U1#nv!>Me=ohv%M;ejP4t_+g3yLy+J6*?3Z#gzFcp*@)I_h81i#rs z(GhsVA$Ka!j@ZdguZJ{qV@4YDRXV#rpuin7JEnIu>$Zw4EcB7OH|5Y$(lPAv(*K#a z{TMW;m~jK}i`d$mp*oiQLa$~J0N%YzQyT&tgR`jWTSkyOzwm6Ne~M40#eOzJ+9MP7 zRZXdqz>yHXI$(<9=FPNk^=k|_b|bRc0!%D@6hMZ$p$5*3m$pvFfwX*IQWQk}?6CdW z1NRi25lcKjG-dx}tjUf*6#_cvh5Kwn$bph{5-g&FM(19{hZTs{#}no|mldc>Yw40(iz*6!>c!-$mAakRObZteY+S z+yz=WHoi7vWt}c`2j0=|HFiv`B7rkivrF7A@X5?)_&A|Ni!Q#`US2geUNQgNa`KT-!6?{dQ^)F|}PI%BQ! z7=DljvMP60Ka$uSJI2}6F+oGk1|PIT?DCKagd)L-yLcHq9D{Ib0{_X}>kIwqm) zCQFI+8_*n@9E z5)#Y2KrJ4x_2wuP`R|>{kr!_hOdLdwL&(pvk%^>aGhSlVKe!o(V}{u;DsgMeqXUD4 z*;hYp++-|RM}C0CE{*&3U$2~F1J}QGPh=&_y*fHNaHQ92A%p|*7G1sfRz-W51Rbns zqoJGwqN?S6e~Cg~jwbenzmv29sC+9nT}ui9y_4{$jClLL*xEa_`ay0WipQ||vU?Du zb;^ncCzSzs2guJ(&iB3(9TjcX34No((yz1+m{ICtWJpbd ze-U&TPyxXWLbBu9X#-B^@v5A`h^hFA<|LzL9)Ml#2vBVmaf#g)wsmUVY5w!5CJ3e1 ziMwF|)wMOtaAGOhe`mH6mhkB==$Rs5iYa+Z`U{NP%w%R%(6Ik+8_-aktX{mYx&nyF zdfWn6Ay5wkVA`dE-IX_Z@=m0_9Y@>N?IY{;NclQ4eQK!9`Z2(<4xf2UX=`qnPGJ8| zcFkmsd29A2`4;Q(1KVD%3?o%hjgl%DLq=bis9p?_Pz#Ctef+b_I|!w3{tLpWm{<3a z0m981&|HxSBxrGm3vV7{0CoFA(^8sLS{V#;Pm$pTp7B^J22bC z&l-l-6n)J@gJSR@YV2|g(!}41Poy~m<5i($_@Edc0r(dxE+)iR6{ciFRrIfZXDL=0 zR-ELl=n5F%6R0iOvu&zmm8g-%c+#AsPkME9CSktzyNROLdvQpF*REW_UyF$o_Tk;W zS@1Rp@Y`*sD>EW;Yuy9h$Xn7J!Pct?@y15L9AvLaMUL*ioG-dITs;y21JhJ?da=H(xDwZkX7+!E z?D*pA>^9?uudDQIc3TY)nf9gC7W#;C9PMd{Xy7@RZp4m*`iaoRx?C&ryqS;bEo}(I z=R4V*d+tjH#|`tRunPeHKLEf%7~8i|-FfkE_p(Jt z*r`Q#r-d87Let%bCEo!ZFFN*SHq;{{swqb;RUC(xc-e`>$Kv3T*K5Qm6DrFJd%f2} z{4DS&-~=vDo^nx~ay;$&h?Dj;a}|{;nW_0h27m4zsF@J8SCK%wQ*^)wkb69*1*8=R zb$9w6DibntOKH~u_>%WnBBV>cQZ$R=wC|y2f{y`xjw!Ud!6?}(fNL=9^(aGNg=tap z>IOvF9KCW&054;FM=b8lPsfcT*18`2*V*|T@`>n3nwI2Xt7Ae%CqW8XmNpb2Sge!z zqd2eHFzRqgbx4|b?^=$K20qClLFKXn`y^b&IA)^p*~h|T)#Bv>#f8JCEoS4<{^!}U zs+rc5L|)wZ7|QO$3AP8RCcd!8-F|_%4Z1d*Y;^->fYq*2-N8_^ArGTUX5PfH_C5!- z`L{_G+tnFEjMsZTtl`P|EbLF^4C*IOF?sZc(s7{5Vn}Pko}9GPc@a(-LD@3{X6rNh zzpmGDDEx@q;~^;GSBk_a7-zw79c6z*h6KB4KZ{%I+SziOZt71ClPSRxb|tsc$UUMTF3R zOkVB&`Jq(5$vEsoODGGPTtj`4DQagp=b@m8tppfp(hSen-?qbXBW}5a27~k^sW`fh zdICjWVeR)91HzArnN(QwPoT!E%0vKVph#61;YYO+XV}i9Dhz$zOJCvOm}EvPW#uCL zJQVJ~@^(g}XeEp1H2Ez3L^cso!u{!evw-SCv75ovEbIXZ6^=fZ|9TwcNM7*iw+pRK+)X zr7jF&`_I^fEBQ8+MZxs9VSHBT(0fHUhepLGDE5ESg9=sRC$xmpLmG(?%S7Cw%Y9d% z-J&Rol=~JZ+XDblu?z9H8%{Xh!V^ua|2=}9ef*w!c1rr}Fbfup&r%_uGsz&=x6Mj0 zFBPUV^cD0FASghtugUle|By-XT>Ii(X0tUMcjgY!EkOsks)Rrmeac%qEPfgKJAW(z zg#j8tq`ln=4^UKKaI&fCIR)I3SP?F-4{*r?P5&Ggzt)izM}RVDVLMG7F>Q!cLFCAd zZtC~}xKQ%sI;!AC=o53(tSJ?pkA=;)K6q45>*l zJZjcUgQ`J*(`$a3YP?6@HR5V2xEEYHf07Z0-GD(jw2wmZIS!ha!PyJn(TX~3)&6D? z^@wUHAgp~2gNoz+BxZ|fPN`U4TIOOTD}J2$ZJ<~_KT}-xo>ki0=aO)SlH9mH?ld^y zqY1}?!4KprZiaLgT*Qpaj{>&lLO^%^y$-lD<@_ZZ-5Rj*OYCezzVYBnUA&g%A1#+C ziy9G~fKu*SSq~F;7r9hZbI<A3c2rPtr<66*qtkB#&)p?6DkaTrDT= zJz3V)O9<}Ec7vI9s|7mj*rO6c8teC$_cz$A+U}S781u)%4e#G~jHz+~#4H%}ScDJL zmc?WcxKP2NlZOg7jtVjp2wIh>HCreV{Q{OIXMO$0{Omo!>s6(zf_Fn%e_R$am2y}l z@YLw6b!ujT)BNcUVSY|@NPi)O7h=-9nw=x+0e=?TTZnUTxn zNZK084PnRMbhyrFImE0DTEZB|wMtS^BzueKGL7fOH5pffm>2YPo!Jxlh0X9m8o@JX z47c|^Cvo-MbdcA4MOsMCZGvcQI{)Xt|Ee%o4NZp&MaY5uTs1n7rE@W3{6@5ieCrF1 zJt3TO8-awDR?k`@vRuo$G}LGala~h;Q@8R1YKY!)`aly~49eP^+^eV0 zW;W{#B$aB<0DSIL_h$SKDONtThtJ)7Z3Y&;DZiWQ*E*LIPzMTZJ_p$Tr@q}P+bg`i ztdMT90(fL^YEvEy+WSV-YC2P1;m^wk z5In{l+lFl@RzIxvHs|S1w9aTtTeMMI#=ev0`Y_3G$1JA*tcaaG*UX&)fHEx}JH~M2 zmx3~){*IGk(C<>hczBd^d2EnXJpxu~pi@9UQCN-fY2sM=+;MhbpeLuEy-KOQ+HexV=&8ST zEt2|Oc}2kH%(`y^0r0G*D8r-VDd3t^On1FzqCKg^FUpFw%p}5VWC^b!Z1-h5p)})z zmMGz3neMD2kV;x?b(xfZ>+Q;M9+K!?_eXrOCK!sBUmuVJoeG%f-m-n&QR4=_syI<{ zJPoPJpiT>itUE`@j8ij1LN4TD)N526{=2=aoMuHvTJH+0lIZwywa^LpVaW>Ckj&@9 zVTZar0UB(R)LEfD+T+)r)an-Ktul&KlJOB5#X*9W^IRmSTfc8oN2%U56T6rQu;f&d zZN_Qt+5XNyq}gJ{N9R6N0=;w@?0;>*=iwx3yzq?kw z=zgyJ-4^>>VdWN<5^6u*oI9)xcxkXDaZp@r*c1b5>@beJC>T;SI_^toolYo6k;AyJ zWK6$3^Dw|}C@fj*wvy=FaA?_PVav#;OK#5&zDhX+fjD}NN3(|wS*$SrU4MA7J(3;P zhFMNKz^SVal@qu!%vs!Fx#p;cZ>Mg^^K+s7U^R?%T1BNlv?ZfYkKJ=ppf3(8oxktD zS2L1|m%E+D!+=QQ`c+P}kGVqyGS?KfLR#q~(kL-$D~Tf}?y=0mOdu5}1m?46YgMqt zlUvSEuWx*x?+c5tBx1V(TzQ%fnh4J?&753g5mM~errj0!T^*|B^00TBC2`W(27oM} z7n=UMLgY|Wx5dcI=DqA9f>!JyO}o)Z+z-C9_6tU(c`2viX|FxjI-ci;@9PzB2V?2a1rgAa+oQ>MVix_pVy)JXO67mu4uGN z=L;s-*e(f%b{N93Wcc0Z7!8k7t+PUU&TP6>iYd|o;Co*HP5iuF)nylfb+2fW#UX1% zxQ=;Fvci*tHGj(i)|+3Owpmr?=_w|)cSTAS6BwwK$TVTv-o z@-nJ0Y_0?el$We+#xga*+>mH*!h=8G_Wg(d;Y&!eYJ5mD6Uf{JQkqAz2cpiwqZn2N z^lMFGRM8NZ?DMm;S%Lj!?yjr{AMI$37jhAW;+jwOK@m;!{7n zBAUlvxpotQKGgf|QRZNlrLOwVVgefs*H*-#MPEN4AHsZ_3e71{94@El5dn3TyoaY` zdw-Jx#S7nbO^01dW0o$iGZ8R&YH^VUYFiiyhC%P$6wtt0UojF&sgB1|Tvt)SU5^-{Sqlh==YWdz0FF6xC;E zBLk4v!_$M0UKDp~HBQfrTz*zaMR!y`wj9Mfj_1)S6^#@55L%O3z7c2&cy)X{-}#n!6epV9ZnM=xH#QD!Zc0!QK7 zqEM)H^U*12?LciZRG=3~_5KA}fyO?!#tAJrJC|7QY;o9DcTdwb&_;`a@jcHxb09Bc zMPOaM$RjhN`1`pr-PwFp0z%ZRtiNF76`_wGHu+?SM9!)c?w%^@zA7JhbVP5~UP{tL zdF(6L!fq4}f=MKf*7{)Ph4e{8tY5O67XF%mA|+*O9+FzSyFqu$plE}Sjo$uXG$cs> z6uU_H5cU{=yNYg2dCY;4SoxH}S;%JHbE%WiglBAJsYRokvl(}^85~vGBl>)<69xJ$ zy(f9walReP?juje-Yt@`lg%g80`_)nd`WY!;QnXEy#vQ6SPH3jR+x38yP3ae^o2=W*u;-DM*1iTQ2ys7*E zPZ0y(b-|EbO3>E%4!A!+40?)Tht}=Fq|pt)U3Jn;{8K{rACv^E`CsTF+$OoVj>Fx#JWAhc#dj%iTE~|4HV=4;JrydSKc3n>WX&gXmunYr zAeg}mBfVw?^-qRq;Iw1Oul zNg4hObA<8j2{O=FxFov8^Synums+}%fPvvDS?hI0F!6HGN*{VCj|dBJcRA%JrKC3Z z1=}#J3o>s@XVAoK!!+`t=E@*Rn55kE?7``uD`HVv&@|MP zL7h70cqyt`c_2T@>HCKIkJdMZUORSv#YMZioa;59Ob61$EU&e!3`2JPZctJtthqva z-pCJ<0yU%wkCm3LqFu-ien9i+k)7nS9xUs{uZd`0K`Ci#|3;(u!0J@HUo+nhz($J7 z9L?bqZOQp)#_`CV;tv3!o=m7MIyHj zQdi9)ts;Mk_v7e*fNBFq#NPG^itb`>gP6#G-`0}$Pouf5Rcx;U^OH%UXI&NZ%-tG`?N(xJh1DV| zMM&?qKP|YtZ4bg6S9rL}3^LB)WE;3pUN;aM-Gq2vXeamCmUWh>$jhs&4DF@0!VN`A z>~mOTDnOKtCQjWJ{Hsp*w}`8HZpSDaYemM1o|wIPf^QVuCo_4D8%%+AtLb@f?z+9j zPujM8^XyY&5v<(TItchLF(*T0$ts;!CrE z2c<-qf2@SWiTxU*1aU&>&AogFI#q!wn^;%SHW?d}a;Bh(B2y-(I&5rE-W|rT6|_u@ z4NC;oWGE=XDQ)Of!bv9f1J67Lq56tYU)p9cTwl2pqf*S9Zpb7O2!ps zN--%fzbJe7Z1@xLJq#)NN9U;x=}zapSl&m8Qpqy{AmWb79`cjNZb;Q&zTkIiCM=LFXvb zV}0E`x^HC+MYW9lbyfz8Y9D13nRFq5EtGM{vJLMt){NB_b3OftT`ThdJJnNMQpxw6 z*AVR{`sag--;f17bqkX1&f{Pu)K)WK8q)EmF+0hJHaPjvUq(tzm6xn{;qU&3u6!ns zZR~vHS{XnrJEi$Rau1!pFF>NQ&#Brp9}1I-!N z57pyqM^Sa=L!}uGnIEJ-_F=%=vcMys&CsCXCft>4x)*#u_63?UP7ieF@W@sFQnGJa z2!P0h{MdVj@fyXRm*u^3$sQI&X(sM@k8`4~4mq-HRt-U2_XeB4S+CcLIV#RFSH)fO zMA^A`2wwU9!TckthC-KjzuMYPKRo~PfQo%z&FM3}=-kpMZB~R3CVFB}K)&or0SMXB zDTJ3)lBU35$|ICp`~04ki|`eSphWiCAb3>huXk0aW;i|hwrYEk}))FXP7;T-7Z>q7fb19iS6zt?Sb#=4Y zIE8!{vx01xvm{pesC&9K@7UqnFB}TqKDpy~Q->cPCCv&w2^9%~x5Pl_AHKS|i)Z=P za@ap*BW1RXtzqP7y9aE+=IWMEmgek*NqrCmQ}c>;9H+qW-`bsCxy7|#p?pJMdwtA? z0ft@7{3w5J3nsoUu#7c13=#I^r@<%r4hDfBHh3Iod{Kgh-(qLu73@^1@i64PJf>um zFf`>%d6SY|A3Ha8=)ofxL()A{vuF(-#HM=!hvFM`XsPg(HaPHSW~XD4<4eLF>I4;J zTO0&A28l4aY)-9q6j_WOm_0!rI|m_8N?1Tcoo$XIdl>!XFfT2IvE(ZWR(=bRwA2v* zN7I?Zm{7i0P;Y<`<5ztkm>jK8**Jx@&^n{E43LQUm|Lq?P+K4ag`5PNk9HYkYlW;SwB3=Y%W>$kobfuw`_oa z%GM*>gEe33W5BsV_Tg@^!h%z;+x*OX7tQZmA5ykGNEHAoW{LF(1SEcrfd=m<1=UMW znOM+=U%i({$#Bw(oK&1GI?$pJfcA*7RH9-!8Nob6K11tuAS(@)uZ-aihuaaO#-ji< zy&)%8st%uLwm!B#UT>&Hw6O zOWjp_W?}!MZ&H)MYEZswjsl@|T0hzbA1Px)7 zx_1A;VW?WaUiG57|q6yTWm(2cWlgS^0{+ho|R%PZv(l)y(MjC!7;sH&#G zaH3@S6uP=PB!3m|V|wdo+FPKvYd^b;kxw`ZVPbKPBhjO0m`@gx zK|Q;`mtGAH;0r2ir%dq{BocJ{=2m~`xJtC8E=xlT9Es*7?3lM#Qd$rpt8on=u)mGg z-@46S(o#!Y2NUG+R)YPdck29#g4Y~@qp2Pmv39jx4-*X0Tw8u{n%|SjzL92mmn5Nf z>5&8VRY04}ME$Jx>eY0l42(Th@t?CMeXc;P>G5SXvuNqsS5yS^sqOh^3xPiKf&AIj z)5WPqidrhon#r;Mp(>D^+aICuZUELB=9E;RD|uyNM9H_q=v2sdk2tf^E$w>a8C+eL zP;}r|3GQf>O~Mitbfl9`{1htdPFC0n2T8q@fohLpHp})>eLU&yB`R#c+lqX5Q_eA9 z(yfa}#R&7`K{CV;CZ5p>2k1^MYJhsjQS}Zsm3^e^I^-1y-_sq0QqXC3T3OQ=t6Y!p5_OLo5eB@&ArHO*DSNi>asz#=@eVuUic%9ds`efjaO2*+OnmSm zs6R6h1qu3i-zGmvgxSeR4O})4l5QSo|0=A2@nc(q5%e>o6}bbG+kiH7Z1e0EH3^O| zvLQERf60lHy9On1TUv*P$@^_B)M!PiJ@>4ONW`-Q>XB%NGIK0GieU177x# z8-`y5soV<8Z(tD42|eI>(XJH}21-an)z2ZlP&H45(V`p;Qjx(ik<_GoBv1pc=y zD2^Q_$qX|r*X!Caum9Zu&NIj(Lz;&V)FwY`_?|iigCpBUCQ9ToL?sHumHsE3>|1=O zz;3Lg9ZYpQE5~8qT#H`>w$J)ve|n>uoi15+FRD>Fp3*?UQYpA#ZOjm+@ru57*1r}* z;Ng*%@$D6*TpmeWR+g5Jl7{8OFVwc>#Q-EppMYM$5^UC7AM{Ym2A5T5X7^~_^8Q;w z{ERQy==B|5L|c+s%&`EEBj{{J`>>uchbcJLbi%&9m#}wDt+RFO!4=|>f5~z_)hZY> zL;HVe<1R83VTtGci4$I?kcLLXCEY_x;Q}10LPP_u?LAJ(qiJ_>wKOn31rkUO7D6Fe z3s>w1cY>l3C;C1aRcAG_(fjztMlmQI`Z*w?lJwmwHeuUFmD+=zjmS@LWq5g>i>%EM zQ|pBaIjZFT%8L;itl5*Vs+{+gR`rw}4aEx1n_y(=;cJ zKlV$}o`tWbE?R8z#HkJGXPgM{q9^p7Wlx@IQk~w)NGL$-6zi`|jLH!r92zajr&$8U zB`~$giqLybXnHfNk?vzXe(qxbKe=C<_ zWqKn9X}~k7EK=7qJ!^T;j26JZ_cV?ZFwuo znc`6xylm$+ixr&4N=vCpx63b-5e5YG{SG@;{#N||5by&coF4w*P|s#es%5kQuqRw= zGiKUf;p~z`{2{HAZ7U>60G>dRHP~R>m1T>TN)XR(N&qxI!@pD2+*}({TQ4^o#Y6zV zwYati>^5K)5KTV4xr#25SP;R}`SOD#DNhX#4dS`IxZAAlpP&(DR*MBB7X^wd3GDaw zFEgwA0KP?p|8q%&%?^V?xfWH94FT-cR#*-Bax5WA%7~F3QgqN+`pC6o!}}8DsgV*s zl*hietkq}7j8weM9#Y)q&h;-PY0SHB=y;O2-$$-ktNP{_&m)UAn)c7F(iSsoKgL$J5{~K+EGBtqsS{3ACiKMSBpAJ;84aD4VNI)T`Or*p{R2d=*Rw z^Pn#C%BCwI4u+-wbV&OV53IebC1SH2Owr~56<#x)VGz5eqzX}af|GhOo^`)dc(ds9 z(!;dG-~78~G+s4N5DrF!kI^W5dM2zv%&T5Rm>ji$B9>=LqKqqLBh+*s3B;o*rp`CW z$U5e*_S#7ZHNPc8^VrQuiw2NKKWdWp;I6Q<(tuqHgZ@z>Tso=$XDF)t(J~0a8erlKTmhn;VnBfqGQ-wYUCun zq>zARL24U78NdlS-G*bueH%!+r6@h%-(>WBBhOvFwc@Cy4UV~Ar!&vjY~@HRaI&oNoQZdvU4g;|HCS#WJ^~7MU3Fb*-T|rRIFB=p|APq z#Nh#Xk|uR4?@HQVw=0tsgYEoI-Z`tIO9S1B1GL*4vVC0HZp#Oir{4=u1w){DHGBij zo8qXd4ua7tcUs@-)Pq6D4XWn7pB^(}2G^GfJhO9nOcA&z_dleooJ7Ix-+XN+G1 zgHFB->M3d)CRTMRsRzgPMWCSFU&$%FA3z{{fGJ2~|}hSo(Nwq>XRR4(vR<1~?CG*~H(A9O8qyc=^=< zYtAB|mMKxdHzJ(n!|R#>hH7Wpt1Sn>AvSfNl8FU1VV8VWN^B+IzTXNqb61QuC^-%j zMKm3l-ow*}B_rVjaW>!TeYrjL$i(oQk-rOXsa6Z+BL?382NlB!t6$^aYV-?- z5{N1!4$?q)<}+GhREc=x8Gr1wcl$wH15(Y=qNbA)hMcR-0KN@Sb0t93ex>+|sECfP zhlShizLrRo`h>~I(~q_+y2i@8rs{~c9ag*`$0FHtA1k|9K*MUfx$9k>xo!jrF#J2Ajr$Ko|8XIt`w}(>q~=A9@9# zJc{JMl68`qdY%>hvc4Mv(2@dS=`ZDR9$K;9>E+`jdiIV0|4Np*7PBhinX51u3d)K>57XvL zl4x_G=e!OlE@IR+IPQ}R8$dFrZ~c>Ka8q*Itf(VEBM&v&~=8(wVQMGUwgnjSQIbb4JYDmNQ zz8N*$hCWi{0%|`yKyItg9nlP!ptWem*x$oVna*?+na}Mtd4yLNf=}F{8r)%bYx=a+ z(jEK|gCxCDqWaG3n}*T=Wt+#1?fg+@HMB`*oSO5DeZ)PI^YlWXuRT@?jlpg&>T=DD z0b1P~Zr$TgC>BEh%?3&3ouu`qY#O2LlhJ(R8|Q%bkU@4V!~p>v)mlK;@i&t5TK+wV zof+?{1)Tv;E-E&YYdN{ zRf)&YgK(h#%aiBL)N4oc+w1O!jodQVn-sbS2{i+}MAMBJ1TC{6zFtLWn z(}W9--^l8G*zIO)EYR{JP>I5WiV~J#MwC%*GMGV!wqKX`VBvbzK@|6GEyQfjJ1eCr z@vI9nq;nj0iPu2tL(QgP!m@Fe}*W%yzLf{Sby zQZX^5fP~OYt%j^2L4AN2oNLAsj~8`)v`Qw_7b31+B{1_R}s# zH1MU`5l&#|EGy-mXuyVWJx4P05n|XRnhW&FsWm}sl;8CwXzyzbVLe~al$JH+^h6m! zhk^yq+=7_SjP!#@G7Rle?g(9sUNrggZ{$OsI)QYyZ*H}eSbljX!e z!DK&ni|IT9I((jBWAEBaQ3Z~RVr!HNxa#a~!~9SOX`+8t3f8|+^Jy4N{TSD!d+I@; zG)T{yuQc@o#%f>%Ir5f4IB;7CJ|&(22MnX6&WCw?N9q$^EWEr3>NllMk_37H(-p%_ z^pk8=vY@q4W_XaWw`APLRXBH8zpvLG&eT=#G_T#I)1I?*{CGC`HegGmHqMM~Ihv8d z*$ThZGkrJ`_KTLkmhLS{2tXI}ZIX+4qqF1D<<(WjiT1w zcxB((GIme?TNxCKkG(h)+)~@p_2Pp|kwpHXY}=4yo^(h!-@JYJB)F`xF!1RNNu)PA z3l*|{c>VVj^F|IuQ(ML&bOm8^?M1KE_z{ETdd|AgC!|Kbym zVPGMtoFBKgIsmFLn@=3W-<$ag(-)X&JiBFJ+b>Jv zIdm81ogm)0vJ#FP8TT*SCN~S!EA6CN)I?o~gH!fqXYwb=Gb#YGY46gi{48hq$RZpB zt|#DXf>|Nq0v5ko6G%AVfStz!mN_MO*zoY)=!$0Rxf$Gp>vRAwkP;OX8r{fpMH+KFX4YF78 zPp0ZxoISmOK$x5lo?OOMxZjgmJW&Ex1BJ7*i~8%5Rt*dvpmLq`<>3_N1tE@X(`xMKnZ#WaC5`#1Zs>a+P_`Exp4Nhb4s}R(#ASc z$z--@GWv!7@%^6HAcin<1o-cAC@Ml!_Z;nt@Z|J+1r1WC1}my)d`u9&6!}G??UNE> z^zpH@B5GVh(Fw5PGO=a?9P#cv#~~$G9~Y@vepC>QR42bb@`Kxz*dzfTF1p7$Q0WU5 z8kDEFgrdcbB_a<60Ay4C1WoVR4M@6{$!FwRp{2-ckt?KfZxp@tS$~~~IGyAvK%I43 zwzlcD<`-2V5E+63KRW?#B#{D8bznHb@aH+zgF{KUGseg!*$xLjx4L4OdBSdkAeWuD zW0obf&$F5;1IyBKYsHtZ$!WMYEj{4RGRPQ~Aw~$5vyC!_yuJzKVw&F-lX7l(y_r=Y z4e`>dhjy3qP^Aq*=CI{to3GTjAYyD~v(Dd#_x4XV$+d1Hg=S&X0l6+?4f*v4_qt2O z`cN9#ZDeB5p`NE0!`||oaO7j}A5VnJJX|I8Z{lpOS{q>f|EH_yZ$@BJ_&xXW@Pg&8 ztdxZ(1TSCLoZZy!m~a^KIkljE>k9Q_4e!PYD6F;z$fVmx@^If{x&4WETmZv`!xN~Q zW1}zEeM94UQTgZ-{4PBf;zEoXd{2toH-Geg^#BOuN&q$s$6B99Jz%w$Kqe|j-Lx_t?X(wqX<-@CKD za48*j0;2tJ1@9W+Ay*TPqT&(iwS|Y9E7Ij(8D|V?+8ol(0u-U}z#uZE9iH#9yw#!| zxrve;dws}esMW`m7Z%|S=zT!qR8UL@fcw9w`_JiNIaluUGXB~=WkTRx@|7zqp$~=u z2RSL%V$3Xe*oW!9?sgnsBk*)lX~iy%H}n1DFCq_n-{{xk6yFGcV>R<*ON)qq(1m-N z9b&PMj1;|tM8$WpZ66PvB9|IC0-PH~e^*AKUOFR&H5(?=qSqU4}*rL=JsuTaHe zmL-|7Ndl#QNf&c#a+q{I5iE)xtW7IV2ly-6N?>;(sp*NGgUfeLJu2&V#b6Tb88e}B zTcOtN_>Kt(V!jbZgn(t+it}2-mbRMZZEoN+6XPD4q<71sh_irn`R$OwR{qW_i3jbq z*4MZKof$u2)g|82nLb9(zb2wfYOlx3Am(+Ayk8t#WSARYH|pZz$fs@%0xi!Ud(RoD zw=FiQHGsF0$i2S6Q3`R@eZV|2qBWk%FI|iA?Nc?}S;0+GvW%OW+>23WUNQy#!Jj)> z&@5=MLvfS$squ58179uBzIAJC<)OKsuTUkg)ESdVvI7-K0vA#eqIx(=JxY5CV>8EB z${X8jxNdqK6K&1BWO^upc*^(Vivm5orNZoqvg$0JOb~kSmY#kERxNE9T*EGdR6~ak zk+7EGI6N5iW#vXBdcV7t+{-Ni3Bkh#RI=*7P%dul@&Y5iwFsV_qB<7E@3_H+UuPCaL_KYfnXn5{u26f9_3DoY=vtTt3Q)M!P zF$3(t$oHE3@~jXv)Z-J!zTgf+zgDW|&_FP5g^jOrE;GZjW4(lL2 zR#Ce)GG~(1nUnmq`rH`%L`?iP5Eoh60)_2TRW6}$6LaH4k|@Iy9uyp-UlqRD2zc|$ zz}DIV`#0X+xVmTYWx*5eyW?5Gq@#05ryg!unZO|v#1PW?np=v8jg@&6ds&B*iXm?e z7d=o0_jm6PF3ft3lQiLlGqh#hWd~SF*k!!h(c`y@<$1yrSnKM{L#y$j*#9iKf<##m zp86yT=hYR%2XE@(47AIF9>DLA4!7R$>;dus_UY}9o+UWRi|^5VT_-3{L^zplm8941 zeP=sTn-nK;WFm%!;Fx{TG)GLhUNDRc7`w3)*$HG-yqTze_oX<$T9~Q}b+l>(YeHQ+ zVvTuXa^uP=)F2xo@vm?Hp9JIF&jb-+xZZqFF z9`c7S@HT%PMG#m6D%iKN-sFjip*WT{iy^Jo+XcM>^t#-*9bc-s%gP$Hk#n1Cp)kj# z6n)V`Pv-o=J5SYe!o{R7O1R#CU_77jsqNDCyL%-_qq+E6j(T8@NQbR}`4Z^6S?&j0^Y*4; zZ_GFT&~l~L?s*13iOwQ#Gr7bt*4N=-CYd=CDLo&Ry&d4TrH)(@IuyPd5HF9_Spkc* zqjSKW=ff7clk+s$+0|K7=7jR6$EVJFNvV>OwZsDDOb2ZN~KVHjb%-Ql_^d+MXt zjSx}LtNbMGA9YPHB)86g+_}GONjfoSytZ6H88C1VY(l936)R%I6m@XBKjfTqSVvwY zJ;gk)uYjcnUCkF#vnzT1J8R2ZD21Q(-Z4)^vS!BYdFOm*kQ5GlTZ`A-P4 z2Zu@ZA8@2Bi~*jolOpr~8Zi2kB=IHMuZRTY26kiT%F`zgKm-qywx$tVCo*h9%ewfF zQH#bigJ_sb2X@lX@Wn%1NQy`kwi8haI(erA7-9+pn13q5VmR=%zyHM8RlcQ?$2mz`{Vl zj-n*VvU@14N4%xl#Hy|6oWjE9dy!x0Ff>?@KE>nH&I*q&jiD`TEa(^L?x(yEZN^qW z8xb^KYe6-KXzHM=VrWT6YS<%iT(-QHYUMoB9feSKBGw)X=wdIiK~8s+@BVe_>i&?cE5jf z>o4?!6Pv49GrXc)}@2eXAX+k_!a;*`3?-ikLF#|uGSke=cL|wmMs<- zIgQGBNNlp7RS@$`!|RM5n{MP6xI=wHnVZ3MUE$4s$cEADFVCXVlX`t3Vhbli>>y2y zXvr%Eq7m1?P8eQYJnSr`6cr@KA=AKbw004Jg>}fn;#KcMZG4}&RM6Yi@LcQd!&Wo` zJuDRI%AADQ$SsT3WeJ2{zbx46L-UoZFclA$G?ufOPGF#VzKmNB=LEbHWU9XwBJ<&iP41fNw{}f zu&AK?t1%<5uT74e&CUO+7y*&TSDxfk??q7z+H3+pFSSankW1q_9rE89#cYS@r{#Y! zM30qOTA~rATVcP;az|VR#SnB5E;imG*N`mREBsi!8b_RwWK5eHo_wOzVsr^LU2*8j z6w#2zQ^}^C&{c#f24Y3&%7{SgZOiGO$S9ZDE4CkRZ)=T8o&?!l$$KKw;q=~kI$|jU zs|tj&UV^8W6SU^YMmaXzX}cj$P3h7(i|GIhX4J&O&H{XmNNZ8fRY4c=x9(?v^S#`z zCt+|=?o}EvUlWzoIwPGZ!*eI7$r zM2Vv4TQR7CiRMGyv1at@&6FH?mLjqHl{aFk+H&A0=QOd}Xojl|EZF9vE7X0CUj7Lb6W6#ZjVC}qi%ve$ z8I1d{9BN0S)suTxZj%1Np7$~qlqYhvKGr~Bjz-%@`JzAl0eZ~Qyx!4+zbnyD-5vkD zQ{%#5W$oQ0{k3}Vm60MdH^zIyux~x$+T0rk&|-|pN@REHttgQz>$@IFS{={S(Y)!h zt^=$c{mUwPSC=W<|JY{*@71{a?TN*~@yqiMfN(uyoV#PCyR9nP?W-mWkHt!x5tTMe ziD|q5!~3J*o&R--)KW-@%l-%ECo@)qLD ziGX5mjM6h2f(^)nv2(EAvw`XST{wos%Y4p&a{;vA%jM8<@g+u@Mu ziMXXhP4Ynm6nGo!tB80k>BJuhU&rgNREWqWzRgp3} z!;5I{F@cPULgd<(Tn3_VZ55L>8mkwkOfD0b$_q$^CV}ip263d?9Ox9UDprib+;wA* zm>uJo#P*{f3!j#=xUm`~78R*u$~ZzUn-zr+5CbyYvjv89At|w%jt1{}hXoZq?W2wWo_RdpBAA%cY@;$I1OBEW;@<|Vm15mNL zfRYb%nLm%O8Jqi6Q8K!z_1qlr^wB{0U<^?@91iVV-o(P1av;SvyvW!3`gRF)5DGdX zczhrJ?G5tnmUs}=>ej#@f7v;g2NYH@1>#rS+F8IhfJV}-)M41*!nro(^foTv@*;vx zy3zN0<%UJ0S)7^MHHSO%41Q4gq65|{u>4MM5e3C|l4cbR1|bx9p>h%jn6t0wChd?v zs8~i1pGqIhey?!UhbwnLC2=Pj`&7(=&6GpihIY{YJg#iE8mh1FsltydDUABdzLM-N zznPHNx5w2C8({ZCvuY#0-J^|DSnZF&^8W9*g)wz^qXC(hl)yC@MD<(9yTSZg_xbegw2Q^-QlbfkmdO8EHMQnR4H~vLUiQEfZw^;)&<*6 zkmqMtgd1!c8E(jwt+hS0Kk z!E8~mi}#qCgBxWP$vU!>r`c`6s4dI1&P<5%Gdc190XF}7JyM@4OvM%>2x;;Ya~Rci zgbuWa3Rh3Sq8igeltS4t8FPa$O*sJnKLEh2WsTIsfS?VvkxAK&-4r*Kifb-+!W~?2JPk0wTHZKQ_PTcf-rtUkM8uA~AsDL|`m42C5$+Gx?ua0xiBFt84n zEFqx4gdMpc;ARJL)j&U(V2z1XPg5|fCgJ7Lj8YR``4?4v^(iU$G4uFQwuXDQ%wG*4 zZ|RjNpLHAdc!z0sfvx%_tJ?IKe+?a4L??RzQ-tIlD)GwTKTnf;3C~NYodk!+XQSg@!abm>PioVuSJz7`s^^Rk5PRM1{-Gw>+`ujdl2r z0y$lp8$()8zfd^3`C(Ppd!qX|Q3<(_9ca%iCGWbd4|qtFZD-bH3G?i4R2a?3bquM||HJ?16;PI}rsI{tgq&i3QJnO%WFUrW{+5phg9lLUv1!qS$jsMWs3jG^>cwQ;1K z0J*jv*c|mpHqhD$nxGgne)i*xmBwXS)7^6T5VQ@+fDktFnXRJZaJ2z}tyir+ydlbo zJkVRnJ=9eVor*&*%}GJcA(uy00pJgWuU(WK+MSprElkrbLAsVV2pz8bdM z)>`h#YZNnfQJG$L5IXVxn={(2?w?@|w{f646vf)vFhVm>7aZD5V5b`_!@;aUmCnF} z(~i*gPo6^8JS%?O?54y{zah-nS*uFrKo)<(Y_Md31hmTwF1QB&E8#}t()q_&4SO^E z{iom0i&BxJN0=vyfk`|tg7ZDj?OYN73i7@q^9{-Mutm|0Ttr6e4tS5eOeBLRt^y}5 z`UoqBf-cI`eC5>A)s(Wc{HV#>4c_&=nZ?mQjK?ivGvcRJO!v+WzD%O%euPl}(M1JY z#Yj|hi;#QQ;NX;b7;7pCjZ|BYxeKVIGX^bCMZHS)Q=6j-okX(nb0G;~INY4_0Jmg2 zzvOML+v^d=saV%iJe|c3N}UFH&&>=ZxKiZN=BFeCIdhaCS-!9nZV6 zh*VNPoQ7MB>wz+&KuD(`27O3EPov9lr$rFYB-D*Rn5W6P`~ooRRG$^hRb4{N3rnu0 z+D}ECdw<8vj~G%KNEog~(~BL+CqFs4edKIHj@Be!yT!L|X)ueGPISDT>s1raGj|tg zvq}P#FAUBoqHkyo5&CqHIssf>gAr|`$Zqw&QEY#1D#=@n6`P#a`dv|zN~TqG?zu?0 zeHs#Z*O|uVhf(t#)R#V8U!T9N9o!rsJsB6=uq^@FmCc)vdhU@G3GqTDX*2Tx7{sSn z@=@}a+)Ms!78HD;s5?L%dw`8sBNTCnR2 zHCDAws0dk#Vl@`?z;z=Cnadr{McV$EW*2IYqzWGJ|0ygn9-x#c8ytJHHKYU zE9`N9!z`_v-fmrKCF&Zs4%x2x_lM|d0`k)B6$HTa^tui+5pc9QO>F)ry>KYFAJU#x z#BlL>s@l6AdH|yBCm;n}U4tuHVxp)eT158Q-3f@;7@4zE%VrW~h{8&QcWkQOVbI}^c%kXEKXox1H7r)2(cCZBVB5(m5+ zkSn)Fj}KYV>4)i!J8{9mHX|AhlHbS9*+k5;E+^H`wJNlJ-i-T95g5stTj%fHhm}-u z#v09wcY@A~3`#-N-Vm&NpP*x7Kw0}xmWC*zhqo~CXsbmb2fn8Jtr&@hL65BgvzI^B zVK-E}rc*b9+@{+|$sk#CDK;}^=WXuxNgtH3zh##%cEqXLdP7<#y6a*R)l#o# ziHMNDcWw3*J2wC@<$^W6-LqQ4VDex-IWt`2TAbQ^XiLR0CHp8Ni>BvAnh&;!g98iU z`eH`2271kc6FDn>F(KM{imLYQFMD!QO&u*EReV9$#ZJyb9U9=*!Mg$WAEelRq;ULE z;i**!C~QgaGufJacq$DqvIZ2HTpbmvMmdNaViP`7So;39HGH;tmBxN(MA6f=E$F2F zFc`7$yaI$75Y%PpqBhC-iG&m6=(=W4CQ^np4u#2HV!`fIk}g#X=^V` zZ9bpg7i^p}2K6P;nMpr$!>2~~<2FJZAu1su>G-?vzc0H#hLHDKk2{p?5l{DHAZ!Re zEw|)MuQ6SA)tG(ilrC~Y%e&D~s50u#7J(;T)SOKd@UXEdLe)p>iH&s&aX>{gxtgg0 zG%W6OM1vBgC=>756}bD_v3ov_ES?%>Dw5m%ew8Wv{F`ilbtXSKfy%z3Uy96rD#ZTs z&Ul%Yd0yJ$Ezq(R(*5`5j$LVSFWAGK6F%MeH*;H-G}Q7>QjFa|mn+tu{&0zVNZ;d9 zy;1}(=H+y{4|x)u)S{HKDpUC~-_9w>?K}{d>FM0YgX-_qc8B8t9FVPZla5AM!6KF& zUz4GX?!uqw9MrFrxksO^nUg`wzmwir6$k*UN*7ELOCaOpAvufI$ z6DtOCxDFg|rGsz)Z754^a@U$nYAvj0c^b_#`o0s4FhdN%6BvM%f|Y7j%N}kTA62>h zqqSP6{l{>WHr`;SZU$=a(zm876hZ@)r=&)Fp zwmgzanDxC0ZDqc5Wt!Ta64EGv&G))J-$t3X+no6W8Df((Sx*Oi94Z8$ix?*U`_tOy z0KD}u9`I1=@Xx2p-v18f*r3oP769nQX<${-M&koYI2u_kY3rKj%#c1p{F=TiCP`Mh3NOTY1jv-ItR7*)+ z8DFr~q9<`d23V-?*ZVF$iuSSch5XjO%<;;&Yuc#9xH3IB&1a>h3l_^|=o3y{M8X;n z)TF{sJPhg5JqjKspuL?j<0YLJonGTv4OuOcDE1?jC;qXkaO@&>V(#CF51_>@XXEI# z0~gNW1e%%|B{_9%#f$Om7-<0SfSMOV!CP zD=C3BLfR+J1U%QX#+Oh`H8rz-RZGog=0z9P|v@sU93h2)cmRBQAV zl2?!Fp)2{C#f~!gDmx6b5kTwE<#IO;D(uQRL^h_GCTT-pf~tVkGvU`TmwKT*Relo3 zu;@k^feRsrX6^(H)l(Ae36L3*7SLKzX-8OjNf?{okvlhdMboiJxXpTHf!6H12MRoF;f= zX$h4UuFB11(?+6|$#GE`s)XAsgTmOByv;X8!f+%=$ zI9bm2u`;3K{0s1&R~8ia6DE$7=CHp%aGzUpM}BJoO;*DV%&?p48+o}E2eNViU_J_# ze{fZ9MyGW!VD-^IrDL2M&zOy1ayB0{QP;IV+vaDKWUgXFwMw+;iS&46?b)?D{SNQo z3Tu|qTpKoIE~xHC`R%c}4My9VZ)4R|5qiWh-C)n3iyKyvyjqNrC0B9adPz#lG!b#v z3B~41UYqSbjOI7722QYXB%SM37e0h3)_gN0=(;4jM*aCMYy=-as*Qr224>{}m%=#w zwO0#2o@*7F+C{yrgQ3Z1ECxAm+M%b+eQemUF_ zv(3ag`n(Sw7zzx{=||5=0Gu^^B`dIzBS*1Nehcb!=%#M7Q>W3{J%SY#V~?0o5TcBiS!*sQHFJIWe4jeBjpa z`{Ni&$DqMo*S3C3=mQ?X%+*7c49Z&aq*zv+z8c>%={Qaa1#g4Thz_7|dC0)xn!mnZ zoR1I~k%gQnI5)Ku{Z`sPPjG5fEYpnOy~H392Z&Cm+pG<*7*7G_y!|(w918m(jdmuELo~wj|SzEbmRSG`iZ z0c~sM$s-Z!-N-%&p>uoEt~GU#0G36skXb<`@EHn|@-zVSNi*h3i<{iae>-TX zo%M=Y)ro?Ft z%&Y<)_fe)3Q?M{hHZXfj^6&nlT`UiE{Nf{5b4Y10Qz|S`bej6#nD0tX3T2YL4tC1) z(4oXGHS`AWP?+qJwwTR}jKc-PdPnM;Xy@GgEa8>B93L2?NDK@3@tgw{xGU+asM**W!Y6SjeSB~*a-hucY)TF$jlgaqI zGWTXqZFPu4u4TqH2Z90$NHAVhC}}zc2q@5uK7+ZpT{SoE(^wFWDt(Vs675NhVY_R!n?~E9j!45Hqsi5km z(Y5jLN|nvv`bX<3vNP-ikW_S(!IJ{koJs14zmr{z6W!l%pEXPEg&R5gGvwG9Vt}Mr zEfX}nsxgEDYcAL~HbH=I1{?g;Z$9Rv#XgDf0(3AA!3Hdt;r@=IKDv{{g}2I-ZfI;q z1S%;bGzR`yY38j=EMCMnbZKc?^EYjNaz!^NLvV)`%?xpr-jDBE#yQjEiC%4a3<$I; za&B|qp$3Iczxjgdq}Zl`Lr4?w*KnnNWwV*4$o8sumDEwH2E2GT`w0`O#Rt=4GANEk zt#Q5VLosg|O&kJ90rtTa4PI``ce{Y_aw5c0FIw2NAdu!>@1qn^%6SMG;bzoTM zP!RYVG>9ZkeOAw$eS=9DoKuLylRI;WBL!1(ktH|+@8wPEZpi#7KGkN&NCgMUgB`bA z5bPDdAy_{}Us|VrDKS}j3q5Wj5x#yCI(dBiZ7wpT+A26U&zqHYdj1l)nXiovKv$q~?D6j&uv8`D^*Qn=r zR*Yj2cRshotBlR>KMqzd@`SC@W;&gdZ3sb8 z;HU?UY3uI%Htb~WsY^$%FBO}h4^5ogSG7giPSs9bC&{*tenGSSD%lAA_A~!$jF-)a z4-zbJ(~7B|;h*Gh*XdTtsDqa4O)R?No@UfqU*Atl8a0f2&I@E!6hU8{R(r1ZRiUQd z%fa`-1(PD@;sdOBkK*2PLE6A8@bcT}`^WO}(YjHWk*Z>G$g z3Dt|X+k=zF=E&L~r~%h<&T&h3YJ|=CbaGGV1jFfm*~gj2Y?-_xV+S?E?^!0Y&vFasPG$LMoQ9)1T zI$f3wpf_8{6}CuHMQVtN7-sgnXR5EvV_*RV9)(KauaZ{-)lAJ+9+#}*FZXNb*neB} z7)QzzhxIL3Et&c!HljaViyas#BzEK+>jwHMmx!F=;z}^MIPgLM6fhTa31TuZI`-%9 zv2xz&y`%CNEx1<7{m!y@3+-aTYsiUb+8F=QLbcIpL(Vo^tRzHeNe?Lt<8%gW5SS!g ztT4#`IxwYN#q(rOH7s0MqDUe)HBkh-;MpqvTzdsZBpjDdB=RK=o%thBB66_AaPp*! z&`yI1x=!4qKzA4JE2?}dDC6p+yu8k`U`+Bl@g&gE(yXL7(VSOP4TZ77NPHhP(1QQ+ z3OH80v>}OAV>>Oq-tYa+Ym71?1+?`LLiGSAT*=OBp5(4jrD(gq$ezDA>GKv_Yq{S` zHic)=dKEMfhb6~{obAq6YV|Cyd-oQk;#ahSXboa>&e}WJU=PbVavC4M!Ro2ZpILnq zw^qq!Uy3jz0M`OZ*%Z3b2=+KKO+bp{gITTt#74$5yW2A%SGj#A^Uxib@pI5QVU9sg z?MfgLg;8|?NqChy8a~^Hh3fk|pN@*} zDrz2gL^6=7kyzP!%RuRs2w}){S8!KwT3+bgkSCc&0|Vn_qv8uF%X`ItZ7UN9j!hM% z?)qk}JdzS3S7Q$GTJ}K|FSYz75FjJqYS;1VTs1}$WoppeDJE^wGh5EVv@98lGlEhv zP9El3m!gfCnVYeIpww0!ah*3!WTbp^upIvj~fSm_9J-j+m&9@CSa1 z5{6zI8E=ucf6ldQ^IJ|P;=W!0v$wblp~?KRRC$a3f4yiO;X*cySUpn+=oxN7RtVDE zK+Y024l)}Q10y?~1{iwFTN`^1$PgS`EhB1h3^)*~6$M zgOk1@bE_IUO6~Uj=OKcETi*XhegL2`cIE6Mh?8k4A5R!?i6;fC~Qk_qN?Ol2wJ(4p(w~yuI905y@ zQPGHlFGnRK*phN7+3CCweT)w$p0s4R?RB#`BDbeFt6Za3DlqHV-=qF^%PA{Dkmgbz zWSms|S=d=`eyt$GGu$oSQmI*3KtLK~^i{q*(<}?zd@Dgb$5t7YN?+OOkUkkNSR*Ng z@D3-16J&6m$?TZwht7DC`@XE|dr@}%K%Ogo!f9TnNr|Iz5^${H)FHUkDx8`FaU=AI zTeWlype)}~qKsc%zQt=fm#^;={gEVB?KJFy|W+)VhJ3=f$3kKfMT zL`g7>i*WJ~5AM>vM%lz=;RSf#r*U6$kjY|NjK${b2hQU zYCuy_c7L^jvs)uTUtxIgTf33qbwvqUV=VWh>ZB{*0x1P)cm@y?NI#(B$oW2I-_NBF zOaW3HK;mz9`do~ipYk*YDZsbJt_T+2qjQZVb*+s(I(wlefEM#Pk)=x5r@hNdX~8vC zSU^dfmA$+Va0G)*VlXIS_ebsJO3&Ns#YSF!)fwp)Uo<>~S+md8C0H&Wmm`As8+06j zcHq5QY;XNv-H1pOR=A8phhf!hUlwx5Z=lgtpWPi}?~wFmJMlRP6SD00$-@h{kK=N| z_Q{G+Q-FKPNU^c_S^z@@!YT+={(u*5`3S+Qwikbak>38 zfwmZt(bX#W{$j($`|Lyf^;d<7B`yA~8s1aQ-k(f)CDchcIRbzOdbaz@de&v2TX?{( z_H4)6oarV)%Gx!>Lw14_#}E5l*^F4<`Yv2O408rd-Hsr2Z)Aixr(-F}P>0&fcAhtZ z_33d@wmZFc31Q9PL&Kau|8>nF@Vmf!Adsa#AWxCZEd)4fL z>$-^^v8BOZ72vXbe?I=*TK}>ylLm!}z!0sHL1;iQ$5Y8UO$Qm;x;{NYSC*v9W{gV! zX2LLSef~uXm0B#CAwz7NY`5_}jdg&Hi&ODZWrwCykp(}Yb%ssgV4!RuFRcOk^meHZ zlE_~lZmiiC^baCAUtNLPD{_`{w)j~QiL!vAF^Vc9s71X}nyswxEfca#TVQPuwl<97 zp2Tg;(i%>|D<@fn;=(DrG|J8q&T&5r8xaSXW^OETl4DgZO`$Sn9mgPg|2^xoV{c!L zGk!IYgnPQuT1e=dCD#9hE?@uT%V1-w?EhG1#rIXfO?0wt{NJStr>eby!(2gn#@+(( z5OK#YW0Q)3!;#-B>eC)THECD;vr%hzhkDd&rvjldC)mE!Tnf1!m|}L_)G+>)UclG`IYOdzW#v4gXd zv%SHfGZ`;5UY{+75GdsVIVdDuFt!$+yG+(+VRCyEDpK{Kq^lg-qj<`7Ln$mP7WFe< zyZbSHzpeH&9+a$saM%jbl&kypKxhO&J|E>UaTx!?BO1R+MPi?N7}B1dtrJgLvD_`T zPZ?SE%F^<6?8PCk6$JPTn&_p8uU=-Qo8PIAWt6$>-IH#3b|T7J)qjf(2r0D5xv_!( z{=)ESr5LXIfVL(0-y{V?cLkh?d`7 z6+dA7Fxt5pNof34ZM%h6~;Y+x>~2YnNR-nhv@1i zW2;0Js7>hzGS~J4;b#g;-*)6wtV&jRTUo7iF4uPCZaHZc{v0{UJh{qEe4lOou$Q1)mV&5siyL(tIq-$y)Ozl#-F72OMdj?2?`DxZL z{6g%_r}#3k{$N-%W@Ata+3IX7fKv%Mz}RoAiwIc=R@!l&`| zBz6nNn4X=-L~w#Csxw1@k#aC{_oy}}6mQUHELB%<13tZNDZq!>d{6*`(obQ?0i;F) z49A6pg3LbWG_nk^UN~55rOD#F)@G*g%nhbxumJgCdB2UeCqhF}e!~?@@y<6Yd`PPW zI#)<}kh;Gen$1Sc1ObuJ>dVbjB*0-pOi7R7ourV?i9WpAZ0kjppL|O_Sr`1zpbWxR zM@cglj1|at{!oIydw^F<+?1%CL$pF{rs+R1mVmD2h1c{5UrC-#SKT=WBetA*#IC*5 z-4LaNLV8phor?(|r7S(y+Ra0ZAw9?FGsVJK7gtfJDU`E$*Xad1%lZl7Uq=L5FS|PZ zt0|oP(5(GI1Fj_IJ&vuAcQd312}ijV1+rj5Fq&^#2@freYhWPa(D>F83Z~;;?WKXa zkh-}K-C#>D?Dfz*k-U9{)zP!Rv=b{by6MjE7me|9Mp=DnAPzul;1+gzNgn6O6}g(f zvP&^rwxtUNrc>|TnEUX8RX%K<bMd!p>-2+-5-Gn5Q)6qou+WFYl6nC z1(isHRwm!eY^rGVNzhHh7OhM;Ah1zfH2`$N$y3@xhJy+Zp*J>&r_U3WI7+@MgCm0W z&=D^pruaQlKKHU)OvZ|B*47Z;AC2LmSuS0}Ap^FBI<8ZC3e>2w4GjqTbV$vXzRc*& zDJdZ#kuCe1-QX1{o&c8^<_-Z`8(!e`5&5ysjdAGh-Kc$Q5#Nvl5kjRUHJ?Y*l`H`6 zz)zho&S8!}8_NerheMhFV5!?iPbQo!uI@Ky$(PivvEQO6=!i z`iVV@Xnt?yxfF0sc^TF{CetqUi%i5P} z&MGh;@qwv!YVEp_xD-JvP93n8LWhj%s6X=9&{{3+nWY1_7({iIqeduM2`ZMwX9X;X zHLoo4g?Ixp@#e%%0tR=l;8g82R$i?^a~(&VL1{@2ztUG_?Ip`*z}0E$C!z?))?kem z@{$==VI`NbLON;f^^sw<-3~2oS~i@}st4}M$ge3*iNh90rvtqyNyEC^fu%1$(Z-0H zBeMS^Y`qnGXzIOO@+apTw=BkME~C0}KuyU(v`$Q@cJ4J^Q+(LH!HtCiuW=)ifxwvinoNmxUqEcpz|X2!vx;A0wE+zo56 z(1U5q=E)%V1~`S@WcWt&`p~clGN8r831xeq_ztzC>uL2rG&kE5O?<{Q@^aI*2ZW@q z{f_no8dK(bVsQGIuCc7bOytO^A*3HVlFX8|^9LJ|4V5Nm1^o?ST~6%Hn{%{@@=!lL zzSp2eG=AQq43P5Rlg-phl=&gU|I!WW%pho}#ll_ceI(i-C{P`9+H>mO$P`stnZQi5 zmhKj~?eZHb<9FZ?`yjD24YM#*YD_ng+z$vC8%_>5_1jZ%DT)uD#`_DRBth9q34_q* z)aR$M38wuE8jIW*0vZuSA!c+u&pt3=e%n( zn%O5pPsB~vF`H}4wVhfoS9Cc224A>aQSCEotOTfMWG&&vVMZ(0EBctwa%A^b9|+i{ zeErXJ66C-s2O+z1uPL9a1^7-j>nUHXlSM(Y-Xub!F=)i3WevEQNpMLlk43EWry4Cl z`=oIxoGZY=bHRV-#%-xPa&X1;(y$8w^qZEVF8}|gCSPx8q;5;boVBDu!;a=~4w9(v z-hDxTVZCqZ_-5(mI6)I%Q1Vcp>NcnwfT*4E9q z5a)5}(IL4Co{3}lHQsF)^{%1{0uj^%9J^tnTlV@adXlw^Sl#*^V_95-cPjkA7#{T(o5hTg!E0Z zTcO-i!G1C<3Rf%14l`_n0TOX#O|^!0t@_vXoXhwbiBzh5(j$46e?Upb{fdmWt$S0o zA{)o;pZu0Q1Sl`r`$hh4ax=`KBpzzf7DrUE^X7i5n%`2TFyv0jJ26SFjwbF^ee_+L zb?_k%9E4Rkr$(EILz)iEj*6K04F_FOG7^H*2mMYheb8m4_T-CWw4@cDHOm_gAPTdm zz&HCJN!~7It9CQ-u3#eK@yQqdraAe7`r7P98Jc5mTco2x1ELnstKahu-&xf8+3qOs zrn|!}Mu1cqRY23@8T3VrV`Vf6cq0vbp13KK)A+=2CBnP>N!SIgsR4B|K}C0H>zdn& z4PtsvhM>~YByZa+O}qx2Z|as_MKHpgA>F;aM7Uui7%*&tn5SBBdPn8!+%0ld#=NcU zRROojIcQ%54!r7@_c)zE6~x~A7RiI-+a{px68F>sFv)uDSxlY~uMOgnqhh_%8{V8R z`tz#_JARIXc$|QLHKABh&5LrY?O;{c?&P2CG)RaL-4`3>L!nb&B_&M>n>!}7f<=U54 zY~=;Unz|4aUSr%FeHee8MD1M)>p|%3q}>!MxihRkenymyVM&01WxC0p9im;}iM=d4 zE;Q`9245SQk3gqu{@POfxQLM|O$!me$j;tnhPUdPs9!19G*4&%O-vwJk3dgN-n&5} zUZZGRXU}gtdn!go1`ja30BA+me{PKhT)&I0|Eul$i$Va5V(=|(Cw8rit7BS6j`rx| zjg<>arRge3zo`~_Ms=nnNqo9MEiE3%*2sppW zz_&a<)Bg>?E8%f~a-Ds_Txg75d0Mo&6VJ%sn(OJKlW0>)#5XV20vHl+LrH1PlZma< ztS3KMv6)SeFzXM%u_*XrVR{_U6n`e*e@5|0@7QY?A?QSNe?A(9??l#?7XTp%&F~TT zw>(ALm=ZHee_JttN6LJu8`hEX^gQwxq{BNT+}?yvP&Ta#B$&cpwXg@MF^UyFH=rWh zM&y7Gj%;^W)$%w!Ms~7q0%i+dQWa;l2STVG1m7bsdXhKKVOU5n!5>6|swBB@Qnd@S>O_o80%^+jc zkcht<>3=(>_;IqZdcq;)@o-y09Mg#iio5Bsnv`=kc6{aT?!%=RvmjbQg^7tv4 zGjgDARhfM*YAtX3e|T3MesYYez$HhB9(h(Rz5*@EW_G2AdgAwr=FMVnw}HL2xT)e+ zZSAXQ5Pvlzp;`lCZSjMVjSe5Nmz}=qvP~v=7%F-4WFp6`*ank@!rz5O3JWj)YYq(&6 zK#nhUbK1CxUSUA5{y4P!vR(cP+R4!jPcxC|HsX-<>oD*Xod3#WBYQv=&QH?`t(!Bc z3`Z2WHC1UjH&nN)gJ6+iUmL6NUr*9F4P}Iup>9=m*Y3}#t8oy zZKvNb2*5+t;I=@7otd@U{e=D_dkdXn*qjHacb~k5C>k$kHz`D0BW@gp!`S1|_^5Do z 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⩔s?z6imv8FP)AzVWkT>sPJ17hI;8BIy( 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 SF3aV06_7;Y3jZCW8a?5bw{mg- literal 0 HcmV?d00001 diff --git a/MikroMaster/20260608/20260608070002-Config.rsc b/MikroMaster/20260608/20260608070002-Config.rsc new file mode 100644 index 0000000..af01948 --- /dev/null +++ b/MikroMaster/20260608/20260608070002-Config.rsc @@ -0,0 +1,3430 @@ +# 2026-06-08 07:00:03 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add name=Bridge-LAN port-cost-mode=short ra-guard=yes +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 pool +add name=pool10-net-local prefix=fd10:30:30::/64 prefix-length=64 +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +set accept-router-advertisements-on=LAN allow-fast-path=no disable-ipv6=yes \ + disable-link-local-address=yes forward=no max-neighbor-entries=8192 \ + multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add check-gateway=arp default-route-tables=main dhcp-options=\ + hostname,clientid,clientid_duid interface="ether1 - Unet" name=client1 \ + use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4,10.30.30.81 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=amster disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +/ip firewall filter +add action=accept chain=input comment="udp Accept input DNS queries" \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ + 10.30.30.0/24 +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ + 10.30.30.0/24 +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=22,8291 \ + in-interface="ether1 - Unet" protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" dst-port=\ + 53 protocol=udp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" dst-port=\ + 53 protocol=tcp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add allow-reconfigure=yes interface=Bridge-LAN pool-name=pool10-net-local \ + pool-prefix-length=64 request=address,prefix use-interface-duid=yes +/ipv6 dhcp-server +add address-pool=pool10-net-local dhcp-option=domain-search-set interface=\ + Bridge-LAN name=DHCP-v6 +/ipv6 nd +set [ find default=yes ] disabled=yes +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260608/20260608070002-Diff-Config.rsc b/MikroMaster/history/20260608/20260608070002-Diff-Config.rsc new file mode 100644 index 0000000..3586990 --- /dev/null +++ b/MikroMaster/history/20260608/20260608070002-Diff-Config.rsc @@ -0,0 +1,18 @@ +70,77d69 +< /ipv6 dhcp-server option +< add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +< add code=12 name=HostName +< /ipv6 dhcp-server option sets +< add name=domain-search-set options=domain-search-list +< add name="=\"Client ID\"" options=HostName +< /ipv6 pool +< add name=pool10-net-local prefix=fd10:30:30::/64 prefix-length=64 +3343,3345d3334 +< /ipv6 dhcp-client +< add allow-reconfigure=yes interface=Bridge-LAN pool-name=pool10-net-local \ +< pool-prefix-length=64 request=address,prefix use-interface-duid=yes +3347,3348c3336 +< add address-pool=pool10-net-local dhcp-option=domain-search-set interface=\ +< Bridge-LAN name=DHCP-v6 +--- +> add interface=Bridge-LAN name=masterDHCPipv6 -- 2.52.0