From b95a652cb8cecf50f32d1b51ce290eaa331299ce Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 06:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 06:20:18. --- .../20260512/20260512062002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512062002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512062002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512062002-Binary.backup create mode 100644 MikroMaster/20260512/20260512062002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512062002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512062002-Binary.backup b/MikroMaster/20260512/20260512062002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b7722ab2a5f2a95d9751a8e23774d41e88ac5cfc GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*3~{>B+TwryTYcW47#3=Zl5000O80004Z`SAPzLud$?EJo$4 zAyRjFf;{Piqk>IiSWm>-jjhlaS^af6thJWmkF5}Jff%Q?ZZ%O$#{|-gV2V4ersLkO zmlCY1KF9uw2S|he|0^zu`o&zi zMJ1NW1jM&lGw#*Zsx=xycwqZcwGJDxab$p<-sjwti)Pmhi2I`g(d@AINDDY@Nv zZMG8LW1i;kqWPZn$jLr>jzJ3QH$OEztpU{C@zHsrCgPIzZUZlJ)IBuJGoCq)TYh1q zlvn?3xRCryA{d_v*=RIm1WeYxV_;kWr=x|=$YXmAL)s}}+5>D{X4F1}>L2FXY zUW|{PKlyp$9cJ9H=^?BmtT)wO+fXlJ^Bfl2ApYvxw>ze&{@B~AGOYLRFek|3Yds

WkN>BnauuKN4>8dnUj=|_xo_1er)<3e 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

e+ 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

DK)l@6U4>8WlzWz+_xiIS(>n(i%O09op7i@~ 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 z z-Pje5$d2McLsJ}|gHOVMA`!M`&(zn%2yM}5TZJTbpUjjB=fb{S((zk}g@|}7?@@l1 zr(Ooc)86!F>+pUmbu0ORBYpUL@yUC?WYp9TT{j?dzceJbX3MvJCf3yTVUlN#A)34F zRR3<^H#$%H>-I196CX0p^eku=l4321n0Ueq?>{jnO@z3?j+$)I4aI14uyAFMl2IU~ zcAEIx`v_eU6n))ItXuyN`Jy+dX}7-m#0tQ|?Dk94@%xF-sBn`~;Pj^&l=N?-=jEN0 zieYg4pVS&^c)2EqtvM|>4;=9EYGqI$l$1EaI{+mDJcRY0GR+KE)O@GY5f?u&=ZZ(u z7~N#&U(nGP#T~80lD{ICiphT!Xk{f?1J!jTfk|NEtyEk!4*(+KU&I`qV` zbw415W;fusLIUDu0|8VaU!j=*AA$d+%{jkdaa*PnWJFleEown~

{#MFP8$<(ehm zjrsgr)w)XaLu1f`{`p41hE1$OV`BQ#VF<~qOy9tl|UL1mTCroqZLqtW6Yd9Cwy zbSIpD!#>+V5GB5>;&BiGa^lLGNhHqDPSh*aOtI+Y3oeKV)49Etwzh>uFNEc5o`?^6 zb3=y|yfc>afuU_)M{4p=^q9@C3>nI-v4fYJt2vzHKzcN@IF8$>y>_{AxHbIY1>O@XCR?HFl7N(Y4!Inom~r$a8{2Fo4E}?lg(pd;pi*y_w-S{tdYYL?TCCiit@S}s;Dyn&MIhsP1w7U;GRe*8q zq!~be<4XO!FsE{dmn)FNi~~v1X4oiA*sF@&3VC&160{!vR+=@OoBjXdlOQ*L`BKj! zO%6D<5j(A9^^U*tey1M=szN~Z zs@qm>ff|~02WZFECA7MF9-)j=@&9e-ms7>A)jZZnUZawe0KZjh({fTsuKeCd+aj*< zAyFx{QMwmXK*?rAIpE=0J3S5Z22%D0``Y!DCj91XS$Jm#5(S?^m99z;JWl~7}Ci5o`n)=W6YrDXDVW5pRZ{1pe$9GVI zVVZ0rw=iCr(VxuWm>VKTG^76`fs+Is_-7t;~b9B3~^2lrSvKo>Vot$11&+3kF>%!Vdv57uI{ z;+%1Nl82$vGJfOv-|nvJb_znX3UnfTN|J-jbFv$DtA#x?*=QOF+Q8dKkv{e#ZoO85 zlXJ@oyHOunUjua(ylb@wY7BQuDBL|1iy|M4*T-~;kgh}g!#n99Xz(n0T~4P7IazL0 zE?cnFircP#)mJEeh$U#+d=PhBTLl1-^*1e$3RMAE0Fr`J>0mxeY5uK;AkU9O5wj-S z7zmot(F51IsvSq}In__!YY3r?e!DgZ;J;T_HSQ4DB!r;`jmOT~wT|v$x?DkfTgUKS zSY92m)@~z;AmnLB%vHwZbm}JtK%mK;YHf>{oF9tuwzxd3iw&qoC3LX(ja>PogbK_5yLDnvx53KSsi}&W3m{L=El3KSw78x%I|DANDVPs2Kh}K1niFXjTQ2nBap|qN(oVvRnD5bCoMi#J zTMMtN*$9%O$6S2&8 zU^LiCDe{4Nsew2s!COl^Kh_Z^b5nAw(pU!qrUmFzmt9y-O~TrMOQ2w@2Co?5v!8Vx zH;#|Kc2>8w>skj*A%J@`zsZ=r$J--BFdq@W!%6y~i4FQ&4nhpLXXYA;b6_HQgU>ZS zL3P2D^_D5OyfP{dKnGSrVleU8H)j0+EK)^dzIoD?8JFQudQWlP3Cab-rLc!t0tJ-~ zZB+WZ&NCSpPrgPkPpNnI<#20DOxm8JsL49=typCcZ_XMiclm&tvD&6n}<1@G_i|OLSW`%zeyE z#SBj}u&%S%Gj!Hjr8SA9SvF#Yu?+-?nQ%ixfxe2}==-Q(&;LxMl`&t#|DE>9MzEq% z*smg=$6JNl1|i;^?ce?|x=z2=j`;_TpaFk-)H_lMiA=QP-N-g`(nhP!GMP5?DUV>2 zUEN=4hF4PT2@rg0Y-oIAwf4Mi^%Nk~pRn24?zz~?{YbDyT%B(mqQ5B|Mkzxa-Y3Pw zSt{THJ2bZbYYR^TSX8>*0zd<@?ScpyJ!FdHh<;twVLo*81OYKT@@{^5#>r1NFF$Et z-M?UM(bq6esjD{1(fg_P=5?K8c7Y1TWWGl7h{3J4Es+z#4*xyEIP_&(2UblbOO>yU zD7|Q0fS$~gxKiXL#c&m^DmDc`N1@BzOsr1SFu0W?K%x8~Frf5O3IoI%!8RF~kU=uV z36+#bVe)?cc z48sh$7AnZ^LZt~AuzLL{)m&jbGfuJE#|;`cB?M8=vA+z7#tI{twcHLZDPbCYnyNtT zC~Y$sc@>T^HgMmRcck0q*nZoYWJ0#1drIcKTD?~<>B+g4Cv%{GuH!kf80$?HWImmK zDbZG|3RvDL0;&{z?eNc-m66N8zD%CwyTc7{YbL{O2*QeTm6A7GuzvxQJnAKjanm%C z8Z}u8<1wC+--Y(;fByn{amA()2ex*3)aoJQE-Ts!eX^}4VKc|ET8JSYgoh%B2h>n3 zzUWK3_J}pk_~|!0oU?`=BLyXfzpk8k|12wztm2OKMyD_$EjeB3tO|M6j4fKH#5}VR zY;$f?XaI;j;#e)ZA+Uws+`z26wvxVCab$TolNS<|rl(GYS6b~`%v^--acMkpWlUyj z3HakMb2l5rE4#dm9y>Ff-vFhXyaK)=enzyo=$vWk(t_|YTei^Qkr^A4BnN)M+mXbO z3eD$Y7Qb1J?NP5?M_+?=ifrcE@TOrelU-c`7lUgC#=Za+ZOU*#ZNXa*AK2=&6y#i= zR#nU4Sc+_;3V=jFWeckm+Pav{kS%w)FsCB#l&O(im;Gxn)+|8qF5!yD+F~a1<){>S z`@eA~bu^#R()x2h3E^+xz3;|HlX&J?s$2-6OGp z(X>!G`j`+L)uiE{zdJZ>m~=0KK5a|eGB$_QyjV$*#OA4Cy{p$cel~07{%BPTT#7q& z^&y4)<6mRsp4AL^mVAf$036VlWnb4BQ>4(QDD ze%%0xEKYgE<^N+~4<3t=RM^s_5BO$@A+5??OEQQV*+lQ+I2xU!BRT*l9HYsXYkr&0rm`pKn}rbrfP7}8+FR}$9JbT# zzes%y8RFIiakQ^WWFeycPy-MT*3jGE%D%**YYI?Xt{woPS!#BhVL)ZHV8HwFg$mw3 z*5g|j1guW3CuH}E(#*@;(Vd}2r7MUyt)+XGFd3=X@TufH@LJHadgaUb_`xBdrfe`4 ztyX)?7nv5qrlN1Z+z#lz2xZtR)L$HPfkb$9MyuWUSv9cEqn_-JTY}^qLE$bzkZh)j z^8nYfPTD|!*R*q2$pAX$%4FKHWRchKmCxm1}+qQ247vRJDE!HD3xBu5y^q1bwL2(2?wsxmt3gGzX8>c zfCLKwzVC0FzCwKV60TZuuX`Pf%|Y7_bX-FzHGsk8i%(s>BDA<(!L_0`XR#+~?lIp- zDjAu1!b2vyuTUfOZ!SZ*dM6OG4=BsB$ceh>vE9)>vuTl}%ced)5Le+)xE4^ zhgJ}}BT-H2b>KwrYI<~BBL{hL_1Si}7C5W>KrZ%ORTaPhBKhiusS^=Hbi~BRMNbBP zImn6pFrPn)>G35)-TWSRGV8i*o^HANPVaAyrkw}F;FmV@u;&{5y`KXJag#SIX9fW_77LFU01qLJ?;D~Ou` z>h{mry$ci*2?4O4XjeX|=|>~5Ifcn|sI55~T_4nuVMeKKf~aglcd zt0^%sYWptvbS*lKheGBs@KEQIp4aa}bzfi75UUVv;R{{P-oPB&-1(?Ym%+3kD;1)@ zeEIHvUm)SLu10MewQ}`DD(^wnS%mY0Ddscszz}4!TFTTWcEw~Gnf9PE3_-ntQ^s-5 zV3TAkMWIArxV@cEw(C5P#bP6X`y_$M$*w3nB#PK~lnN**bB@-a(rL7B``G)CE26Y7 zN))<9fWXwhd{{9F6iB53`^zr?dbO7Ij;NE}8T!iaxc9F*z63R=XTH!xCAduqZMNEryEof?aKi7;71ms;KZtldY4xb;&SSbu65b}^Au9oHAWs5uMtg;287Bv04N*?iHH0LF#;wW%5{*n5V;{y`LSw$d^kAA=mk|-e`vl6 z@USUSSO~z}M?bl^|G(!0JLk3%ghKO_!v$WdK4?rp=|7iNn(T7a5@x0P2aG)V`Q$%^ z($vL>gmIK9*JoyAdExV&?uLI2(bW{CV*5dxSR+8|aj}ghq}vN~yQ4H7;_DuNJdk3}g>Z$F#O zV^!$9bH5x{YY}OxthZD_b*2i7#B* ze^GL)z=js!hArgCJQ3lEm&S@foq;z_b{s7iNf$^l&fLA{p9je1W%AQ_1ba*)dr3;M zj4})DB=0`>_#1t4Xz~YyJ&z1?65uyReFx-T(8PW6mBbTmPv?%&hR&baF9gV6zTTMub* zw3_+&HCwP9nf3JTlwUr zmH|3UBDzG)C);OJ#8>&{Dv5?&OyfL$0690Qgwgy9SYp!3hi64N>S~T04hC{Y zHNXCt=7tMhe&YDR?@++&MXg{8PD8(k+7a!l-5!WS@sOd~WD1e8B%0)jbT=<;c`epK z*p&2VJ75>m?Tk`~fL>HDU{G?e1HW-7CXqeUUv8`3Ou79$mg?$0J$zo|V}uUGa&lr* zbhHTE?4;9S>?M5`gL0I7D^C3sg-`66y@3i;J|E{d=u)rKyYy?22yWl&6sWALGT7+5>>IDXw&5B#dJs!ta4!-J_-V;S6p;2Mo&jb#v{{)l- zXCkeY{p9}5^v;SUO6!sqHVLZ)?O^sFOnlJE_2s|@!?l7(67B$IQfx3V}Da;tSw> zfDLD#pjBqx8v2aMc;z#l`=w4svE26VnNVr;1~diTrhfx(pg&G58qBC}BOKI=rLisF zO8+9+4I=lb{mUxeu?-7|U;4LwM1RYD93_g4E<`|?E4#b2`L7X4me1<5_-`K88mymN zBOW#VI~5cX-`qy$3Y|^V_d6NNwDF$S4~^Tps?w{NF&+hcbW`Rg>%kjRWwEsZ_?1U{O-Cv_7JFK1q+@)(!8@t2= zd_pEJT@P6S`!e~JK}3<@b1SA-dmtfc7OZS=Euu&Npau4k*uhE7mU!|NY-#|$Dx9Q4 zrMT3@*v)djQBW0F%?6=0q)WaMRJ!x%TuP4dk))0#DX%7%Xd6zI_KFR}aK7D*fFiJ4lg;e}L+XO& zYAUgBd#yQ3C0t9zF#PWL13!9pm)x~Dl$u-aME^5D?!&wKRJ~)80FKhetTt@mx6zfxgLDJC*!ULmQs^yAf%jV+Dl?n z&~hL$p@!;rq+rHY9y@>;@!tg;OcHKN+d>HF*Cw+iXY6112jiHWzT$*xN8^&R=8p9J zSlv!Nzfnv}dy#ROB4N%$CZB|wcYmt}VtHUn%q*vc@T@{;^^xevy3=CswZ+{R0%glHm}I`f7fG1wp8C9&QAUdh)hY9A6Qg?>ytfT`F?+rai-HE2mVeF= zSn0fOAOIe%!5pqY6B#~ze^oTd4B3tfn<{f~L3zMnRoxk**9)YFhuX%TW2`AfwJMWw zetd?N)63~k=4oc0womY@14@_aUSwhfCk$*kmte=x?ZU$RGzzJ*TSTYm!2+mDVIDq1 zVAp=22depkj%b8tj*&-%-Z%!(w?vL{(^KLN{?e)t5Vi1Bn9D5pMMFw>m%mL~+#OHn zuD#u0-noU#nNf3Mz9OfMZR@SZ)B^q07WvWizPeVGjA=8S(k8xq?xs}#uI zdP~}n7_*tn{aftw3h>fZypzHhA~p?f9LicIn1KTVFh*5_0D=9|4_gZt&hlKkZOAb5 z4gzhhs$@DKb-^6tx>mXhC^0{`K4@-x-vMN+hsc!|rQ+lEdMAsruG)hC^@lL7<8gFS zJYb?RA^080Cb(*xeI)9Pv^+zMWhN4k4174CA_hoRG% z2V!j#1eJVQ*Go**HuRcW%~E`sGU#|XK+vj=s^kLiL9@p4*RI+;dtyrz7;L3|o9t_B zub8^ioW;YVDusr!ji}|JjHvOC>=)RER8g9P3?UHVRnMpfKdF-|Gehgy%ai98&8QfMACNzaTO;5bA59Rtz3@>P zq%gPk1jPqPThwR(+(h72!ra=VF@bRyzVU2n__dL-$J_Q=c^nML= zHP*=j0Rt+kufO(`V!tBDeK`@n6YPKDOnh9}uT|uel`>=DYI!w{W=03YP|^^yVPcc0 zv~s?&^SAD^`+rkEp{tk0kv6tG@!flFM-WrL)h7u&x0_lc7OJj(5We5JqmOX7=B2P- z0Qm=&&$6Fv^l(BUNFtP?pcO;yqh5tzqQ4kYC`EZaf(Tx9Jv6P-gg7 z5PbnkDXD{yB%UxbUQ1R2wqC(n4FRocIIGRwr*p>>jrF6Au|;MeemnFv79g?r%_!N! zB)L^CScZ`%2f^nng6O#1q;<%w0b!WqT4mT$h|Al8t|Lhge7&&LrlR#z#^*#Tew{uai7VWZBK~E zT?Ay;?Has;HL!)xI_B;23v=;yPn0;-F>=!ZW*Y$K>h3Ig>K8q zud-TwKhK1tPn;d^ZJI*LjwKnKOwA3QX*tt;OJuBCmpsiXoXKfk#95FB#M4ZoffMl^ z((LQzeNw5^1(k0yJY`2wjk5gOJd<(%r^=`9t-1>XTjKF zI0{yLr)tuy?JQ4u>V9K{eOP4Hi6}ayke_a&nwNon58>$3nAd~c;5?DOrJnmHM|m;> z>fGDcbTn%kRkGGZS%7WtU=Q`p0;Dd&Ym%`a!DCb48+%Zs!)I5+1KGEyD@AHf({~M_qSOL+dc$P8OX944juSZ7pp6HtqjJ5PI23)D3a~_Szw5j0%(-4} zEh(Zs{4sQXczp{f`JzNS^aEptTd>-2vAl(p`9m*Xyhq-Z&4oN`kj$feDl4k>yFRqG zv!q~)Ddm9pb=IYZ7e*(aVz_PgymE zEmz1jec-q+m*WWqK}o>%o#@mqnT0l4X&^kh)T_Abh0gid5sM@98SFdYt2sY(TDqo^sdz53V?tQ7qwAZRdi0(*S)7Fwkr z>bjNX#^Zc}?a26XzPRY*s4eil6rq0o{@8?po*m+&;jw?8$4IQhzW*#iXnW-|JQGfVeY6=F zOEeD-&aUs)6gCi&Fnk%r^`!X-_ItH8XW5ghn9v4caoo$hJ)lr&WnpY7_!D$WNt6g0 z`{4w7!MahIt2D(Do_L8FNoxmm?D+(1l1FHq&}R06<@ zOV7(v4lfMVND5d)C9;&XikE>T9X1x@Bvrk3LJ^PaU*KxsHI8QYsxgJMN+s?Ofz-YJ zf6b6%bNp8go&T~KsOdn6begp3CC(IC!C~4@O=YLH&L<8lq!10G8Q>REU-RJ@!hefIWT(!_9Hvas#kG&e*S3lTcd=z-=#)>F<*wimAHK*A8?^j^-Q#aR>F=2$oGnIm= zQisbOhr)no5-_!Gc#2d+rcKoO6YXol{F=cK>B)y7 zQ^_iZU2pONO$9jG+=fyB#M$b#Ef=S18GuI-jaVhhd6PxZCJqI9kZ{*i0~Vg!7|_sK z`qVhBKLWlvk&Y{L`AE{tFs;Nk~cbDHr+yFpUsdrSOy<8t)w{Z6a&~dA1W6=c1=;qb}XGtWw!U36U zKGTg1E*IbI{TV*5xEkl=gk^puYy=#i7sIh@Xz?$K~RoP{%ao)Z{8T4Dw9|!avsT6klL~++@{p1ff*+t6P25yZhZIEu2eV4Su}3` zFL9{5WMgOciM>4WuL9A@4e-w(7p?a3LeTgWWJJ!-@e7mUK@Zw2iS$ef1N~6J{M@>- z;tnj+Na^h{wwEWxGUrsyglaxb<6ZeD3uI{<uc&e+kl{v2KgW=Ls3z69l8R9TJyEt1BCR8#1R7kbH$Y?L%Za zgBl!l97d$;m?TxV;_luMJ*J1@N2X(=qcmOrpGG~0Al8gt(uUauBdS6Y(_D|lV`wB z0o4k0U7@wz!Jll_bIMYP3nBCSERG*p@VUmyLMf&l{~E5)`+OHNbOs11pP= z0k`DpGP585z<%`3dsr|ek`mYD37t>y=%E1>wcEMtWdR?iw!@zC?zD9Nmf;DeL~4Bt z)CLlkM>T>JSTA7+&V*bgUXKEm_&uU9=EE(E`O@i>0K+b@g18h;rOZWqqjHI;)=S0( z3Cs^f7aUae27!y50ECH@fi7uSjL_QEpw3V*ZLw0j3)=8t=_}7hSx9=c+K+5G3V9;N zK#&qyLfoG0-!FP?j^R(yB8f2zd5Tl9F&P0U+uKS1W52vW)Jv94bN?MTCV+|oH|DJ7 zZdMw~J!jEW7>vT3mm}*HR16W1V5=AO@AdG`HWyvdrxCs8(=g>cqmv!mrRh#!QV9L2=}a zC(^CH>iYey3-SE6$;S(@Mqb3`n*(x@sgPRqrA40=vb*2E%vIG~EAh1q%eEAO5U}4S z?X14%2{?!EP5gk^nMWBEpV~nN;e$tL3!J%&W1#F&7`XE~oTkb$#Y$3=@S@FH$Og;o zi_H^=oi}IH5cvIRAL%pB+>ty0|33i0QiUY5j`X3QC{53<^!Ouc7wRZMJsus+A;qEo zjnY#+Lp(0~9{-T%BX)qCp(}X2DLN&7K;h$!I=YzX0d|5L@G8XuQ9gia=rpLe(iw^G z^+COlOgsY4#V*{TY}KXaUloa1^r>BQL8C?!`bwd)<;l-G^xs_^g!lyh|JH3vOi$Uh zAeFn*9?GHi--esD3vc4mjTZ7M_P9B5PNb5>-|fz()GpV9YeI(>m{1vJ{zT!Li$^fp z|EiUA~TZ5ruBcZ7d$_cISkJ;==szgsqNFHcUkSdZROeVbA+YHUIIZ z=j%q<5m@?HtH^EMIb{>^9CC)Yo`GAgp!h*uIiVPXFF{MO zXCnT?B?;JLfzhGag?iE?9YMju^43XLNKR|~dxZVw&&-`*dPHTvCGr@7_YcaO{+W`- zaSId1lStq16oLHfiOV_;Ywcl>f8YGc#d+7dG@P;^;^xj%s`STvBuddOk?v?(i+O3# z4)nco<@s&caFWIWvzL;DyP2tQiY<^)$aD-f8iHFDvi5*%Lp^(H#=H-R62)uRrh%qa zGN;(+HYIj;9$wZSK4bvCTth z#J7+*TZ{w_2T5kY%xZ`(b#PejlamQJ28ie{U216he7bNd&|9H)LSPN0wCD^sgh<+G zIP|R(V<6ZB1-m_aY_p?#27>>K%`2Lb-tJsx*{(7&lVSWiS%u06TQ;tLE=(3 znD>zPJo7`A9Lc^BU51jHaSDBan3Xd;eq+3r1EJWRpQMf%6dQUQ=#7wkvzgjD)?ekK zCLj@^MTBj23kZBzv>a7MRAd(cVH1kZgRK?A**}Yu1mO4r;Kj+!Vt8xL_E63xaDa~q z_;Zi;zq@EJKt&iLmCRKK_KMi@808nq97sK1g|b| zkxjgwgJ5t==Rqoz%I2kBNWLHeN{K(!z(nDpYx=@4M5c@D^SX8nJT~>Qej;WKLwF>c znNb~>UoAKcl_^*%qS(Ib2qz@>2s$6-z&D?utPfw#irgcQ-C`JvN;_JLuhy-qPWX{pPI|CRRZT<;(;7& z*m4&N2daG-O^Bz>TsLOLewko7TQlAd#x+I%EhDu7X_}I}v-C;a%hIfii7&@)C z`7nQ|7A}r)aLBjC;>jsf_c0<;QAt%V*2<8&GN>&Ov+p?=9vt)>tM?^v!}R zk-3`O=)`zR!KbA!`^M-_Vc&4KLdVg03(rEFXoV`iC`r^#RG0E%DkEeR`>q*uRvGvP z3a_l+$%h9_(@p)#6SyNL=XN@af=JWajuhZ9F?a#?azf+ z4hM;Q3cC6eTI|du9}Ua zCTI+vYARcHT<|(1?Flp<9}NkZETD>2Lcm7`L=W_mf}>s8ZxtJiijW*{tID^{+zf8L zm20w;=q2~IG;9Wf4U@);xRsF`qgIfJ9?nZ;vW_qfQ_!$O_u<%hQt8$+V&ZWWfD;CH zkmf6v{g(7ZX53yPjguytGj=p^n@*4ALBIT^h~SHBFoB^hFQ{u3gY!L)%)-g#+*L=3 zCV*Or!E}Q(xAZp!*wuA08rC4_xUbnyztQ#%jfXsNiqu(7 zykV}tN*t*;+t*vKa&=5o+f)H5`~wQ8VP;Ioog?-IobjYfgLV!|$TU=kl0QXqP7^SoK~DOZephlLGV=O2~W3)Xula+vOJ z6sS|#*s`8u&=nQ<@#d1%hdN0~ja1WNxoyQD*~|8KmOS*(mna4&R*+_5mIOErmWb@& zuH(1ARrU9Bclgc6D4|KHsl8H>AMH4-o7BCp6LIVl5;+i*V~`ULOetIJYTI19%6IGW z@-My3wnN?H85Y`RTz=9Ppu}Dcri9X$rmvyX*4)M=AS9#f;yUfbM80!E&?L=~(&5uROCp;e-e{ zU$X_bOxhQEJN^8iCH1@@7bA5Rl8>u7Esiwq{k5f0fwV}TxRms zOTO%xYMuEn7KCSg(-@?l(7=1&n%9na0yg0gCe}SjgV0uH5tAa!mtvv(Bg&@_)3;Fz zzndMWkjBrG+`=6?GSQi&?90U6k-*-f5#M&T%j9TWi!p>WBGkJlQPg}hAL~bIPffS2 zK%9lmp<$$(V16O(O?`;GKjzsa-p2EGx^R<6;@@@hGo0%if`HVaZ2nccH%k}x=T@hY zd>UX2!FfZ1DkjZm#(QANYLdw)(p%H_vT%jP)-fxzf=z4 z%kFdReEJ}QJ16cOF|xixo~=KWbIa*T*56Su=1tn)@Nvv&sjwHh%;OZZp2E&P1We(w zNeKzDBZ^D(nXS-wp3{4q>?I!HTa~K@yDbAsCcgpKOR+lUkJIg5>0jNzgROk{5y62V zICc)L85x7)35wurh&GMHWs*VJQ|I=SOe?vXNG3$A*^q!SL%=I@HzG#34sK{qs5o{s zBJ&UoR!q+Li*#`G1zMD4eO+xXT`u<2eh@;-}NdXEZCADGG}x zI;)99$V@Jt%S9>s!<~VKo3HK>tar;>=IU$$SLq`1xWrYSqfF7heN-eiEDaIMApyUn zVp+IB7v^^cpLP{*D_}NuU^1oSQckG$f3xp<)J8HtQ%HrPi;0mQ*=RnN7b>cm6D0a- zYR4HpQ5>CFOx|G*+xW{?Ht?)dT5qQTX=^Brh_3S>5-TeT8wGK zs(LE*Tq62_7go#n$Ie~zP#s+Y?^=Z_-jxmUv{8(HWng}mBmq*{?e`3@K{O6f&Sj;t zLq`*|Z`Ic~cyN4!;;up!_wlq@P|bLbcpQSFRk^RINPKOd{oxWYBCBy0yHE^HLkuXb zm0W3~+G581Wh6`WW{v+kCM_D-r@x_i{L$xqfj3D_h(#I6n$9OAHdBIlC?m0LY0cIF zg%y}-_R1hNj5k}E`ZR^%mj51agco&faSq3Au80E2s2Uwxi{ti1HJN}3ZUXZn`bZ4)1x0|*iUOJt58%$_py|AL9j>%Q*@1(SLsks|CySj_{ zvyq6d6H$$)K>`ujY{F+Rm*YPZv@7EgP_b@WT0HBIn?IU`Xf<^U_P}}>`Z2~0cpp%J z#3{a&9M^?|@#Y~v!DRP-rC)}!5TY5t#6g66%E^qbt_6PG3RBFW18(B;-M!e3UYa?s zDhUDgcg*IqhpDs^y*2)AhH$ln-9CYQ&?s(#kkR{S`&;VR``T<|t?Q%GdCqvkD-JG2 z;}7~T^+q6cH}oa&Sp5-4bv1Se4>NcRMUOptsA|&XU>gg34U`_;+Bfo!?Lnj}bv%ei zUMkssv)yA=l8k=tJx6-Za%e?OW=z7UQLb3^M9FfP(=*l8Gk(i9>z7mXm-B-4SdrrFv63d0F4@4urFpW2*)@e$&8_jY_Sv> z3;x3UfD>adZGT&wJnRl-GM3Siu<$`-H*S0f@Ysh?_$8^_Sn@tgi*P|k)73a{jx!>Os$)Z6wxiM^=zXit`M_p;HRrSrl z`3&!0gO{MS&vwU>zKs0p4&OJw-&k*1pv#-5gu*sD_)WIrLeSf*=6;%Lh?Fe3Rp!7l zjk_2s$L69s6{i#;6&@k?3k)d|^FZc4PmctosIWv7Z{rJ8rpG48jegx>fpGNoBjTHt zf|ounc|HR`Ip*76O+yHyfwak|764G3l1(nUKw_2XEs3MkVPSa*HAsYfZwTfxCNwso z=O&5#CNt2gO2c^A(y~TcY^d5V@pPU03^)eDs_e0X(A^l|a#f9?TOFgO-)%Y1~B$18wQ8J=2Jx zc_v}!q0T)*iw}P(?~~#`^}0eQ=B(#kZsz9;L%|dI=19@EnzwaRloPN@vnef)zu(%=X8wF%iqqZ`-gu2$g~x!jMimXP zT$7AdHspd3bFo&P`*mLm882REPpTb0{dfc=xEnfF)$ilrqzJoQk-$&I{7 zxJa9aO;`q1TI)<-A;g_1g-O>sTMgR6D+CDJaxjBxABup{&8- zbg6A({x~WFEHzaITYTv0vzQdINf13gAs#pr%>q9N^MR}ngEdajhOFzYkfjtpgL#3Bvu33xd*YVs*dc_W?^kGyCokAPDtRZFTvAFJ zzREnYq1pB;gM6=j-LKE;CkONoZsgwx@Hm;(o-<;y)J+>nrfwsn5C-%i#SRut-=3~^ z_~vp*j_lWGR!3vA5S+waBzzUhDGat3IdbVpg3j&TTu3I?w!qYVcNCk`I?JfI@KfM8 z#FrcXi7uE*ub~fV0VOUCcx|2{U)(kY{78-Jllm?Lik2UQw>|w@-Hsv~UgRlLTkAt@xv`7QIx>C_2lO}eZkOkjM z6g!dDK<)pgBjmNbI2CD}N<}zVK_y*tr8mQ*bU07aA%1s2RLTSns1I$hD@UtL2cZ#9 z;~^Zr2Ry1`hHQE6(Hw@!6tZj1UMdmi<&dyQ#37p0dIYC~|5I>0oXcHwqk~}_MFs{i z*&&#Q+qo9-5+f~<{f-DhdgFJH?uy|6h>_n6W;kFz(BId#7^lNK4tg_??iaq-AMXgl zdujk)2=j@eT#mXG`)V1DwO9n}>(WPq^_wr&%o|0I7&^q^^Uh}&PVtUr{Pmz`Ma=Cm z>6yMg>b$i5C=FW-Oo~SXeR-r@{J%30G|O+rb@}OoI(Srla{E#>bV`^4sr?)4QndHE zBwXQ?e)Vn#B=}c;S6m5QhEPh>A>(Gh02Pdu{Es^on_7}9?EqSJ*Z>M-&^V5JK5>d} zwG>-ASeqnxMO5Lmp1>U;i+B383~|(0?Ue4v-ET?X&c%!T!#?zl=I{3aDJAu?3j+Pd z)QFY5E)Wg?#4Xp7Yp&{D9KR(@Iyx2JfIww=Y^PAqzGb*T8yPjMWJnQ+?M4l!PgHMHk>@CYWYB)V(^R!d-bER)*yTPfXjL6I z;D`I14RWLs*w}j#6)_xK|K@h8lasO{)R?C0GM7n2FdR1E3m_ibN$(Bxq`A7St4s}0 zzjh^^7-?gbC|n_Z=sG>0ruI$5_t_>hr%P28IdMotph0xiXTQm^y|tnNzkxP~NEa3o zlB#d%hSl9!=WabYOA$AN;}Kgq!GezTR!Hy**DNESPa-x5p*;-VjvOsV!_rY}E{{B; z=uncN+@WEHy9@dSK^J|D@^c@F4r%~`S$^yl6nSv=%h&DOZ&&vI~n_tySLMFmUplV*t zsBP+$Yj*-tjf4_l(sV7Cf;gGs^12@v&>1PKRaa&r?y;Wmv}Q#iu(I_AI_;s2QwtLg zAD?qf0;q5ZG8W?l&58K!@4?Ooh_)RimUIkWNgziTueM4hoOLjlC*+6TI=bkd&noej z!GFqjOj-^hkha0a6+!9aV?C`bGhd@6op;zYHPCbrg_s`O$091uc*n(k@^aVToaIoS zkur_oiz9gav8#IJu?jx^4&#FG9JZo0D zC^b8qQshg#yf{crw%I;VTnN(egceOvpLcvVa>{fU19bQ{XrE|{#Y+&+_Db;}_l8j? zHc>lQ0t-^Z!BU)hg)TgZBtkT$8|{Nb4gMCK@4I(WxkJhiFn#&ZAH^DK1yt*45B==> zD*Km=TW|Ygot4wD0%A=n=ij5e9=0{tb1EnXJ-1mByor&WTlNd(b~%ieTwzQZlyhC4 zcYw&}x=`$z5&-&!6)Ay192dkR{Q_1n@z<-XA4IVTw0(aS?WT(3=TvvS5+IIObHQQQ zm4T`IftI!=U>d06H^#$JWFgXE(dL&f>>uEtcJIpnm{OfJD32nbf1PqalT);+(! zEM+T|QL~*T>edOUPZsh206Qz0&X!fd@Kxx3t76AoFOwx3D#jOK&Qs1uvYmfs#@S3F zW(4k_zviJW@cN^cW$LapJt`VjqCSBaa)Dv5#m3l*^_1X^s=?ELbTi_E(~pX|Aae7@ z52#lMzUB8p1_mc?$7;j-=VI!t;c(J`Dk+{w&ntRd2hGN9{Rvc&!b2cRv($`xM30>x2b!iItlrLq)jy&5QCRi$|;@O!-Apr1E{H4{AISNGb~9)$_f@n=zu z%XGMAz>#$YexUeFqd%7+ETylH5Pro|tt0Nu*N2XH;nTpKjCMW0>(aAT8xq05AS~>n zKz}oiam#`J;92*3nT<1HFX=gfH$**iO4I63Zubo=bj;e=8xse7{}83P>$KKJon3QN zT$X$EmLhU~cFHEy3i!u~ISJ=)v;!<8u@B=RDJXc;Nl~jT3Pe3>;+F66tr@=b;Hpjo z1adQ&*Cx}>i|0pjdjJ02zsiy<4jyGoluqxL>IW2^L}Ev@VESHNGgkF9 z>$uz*p-6}$M(m0U!V(;Kd#iy!o;Bi*gp5u-H%g8PO}Nx*GmpKVnyBZQNTt;^b`Rfu zQ21u=v@on!&*qWA=)->lDbBukE!ND*SO){iF26#d;5oX#r(i5^eqpmf8$A0y@@E#bbxmWQ9Os*mPj+;alKHN`$TCVPMdk}c4 zK8_h0u7OEJHM4JWmG&sT#_yGDPTA)7JmE)KFjmvlyXJUl-nf`@cn*`^_M9G4#VomWB2o2nJ-SwYeAV>bbH;%&U3;!T7Kd>|^e zd`{b;U`68+LL&$xrVcsBo9q-p=C>K+6y~Io$j>`yi7|4BD8Z$MRnQG-S7S%xQcouZ z&!ns6^^Dx#@NcP-+ZIVn{GnhH%}}KT;)Dxmh~Dsa5M);M!-%nVQIUNu9K3%=^)rIE zPXih>w5yn7X@Bv-xf+(io1vfI2q&t!AWVe6{n~?bbCSLg;TLl88e+kXtk%g!K04nY z-NV<7$^N}icZISczLO0eVdbpnUlsjn>K2#Xj6D07;-lr=ykX)`C~tnFYGMO=RuU$V z(neF0z{IALz(t88RzM01a81(bs~n1It~GQ_J()c39!R>4eVAnqyidItE@HXcD``cc zwIhBn1*Js}x3MPqSSdiGs|05!F8P|US>vpS@?$ihQ>5mR?r4PKdg7cl=st+HCg2er zDl2F7oh(60m-s1*Q#4u-U}|bUQnOQU{yr|XJAmqm^#1>Y7~hRv)J=rL9sV_VzatES z&S8J35?+!`cm48w9edyuOXgzz#{X<~sGGcWKTfFbP(#hc2AM0wlW&5(sMbF#k$l~V z;n!GZGIm_Y>&^^lv$m0X*=P?luM_6V<3q6Y8{C3GNCL7eXEx8A#4J=7`U;|?RYI@k zWMd2B!vh+S&yx)KbiHq7W)*)C#iU@~_rEg)#`KF^4RjN?5s<*#;lxJcI04azj(c*p zYOd41mZrU9y%Sq&6gI(p;1vO@_KJ|>A8(_T;2%uI|{a|J13V!n1l`k>0yo)K(=O zkN$JrI>!($WChMcSB@Oqe&}`6A+UXjjMo+3P1(!U5=JsM0=2&*O&xqnW>3Qup$L3- zTI@k+QFUrj@g%52_-0D$IV_{zv~F;5gCip5V@J?`i3BioZ&@M9BGq1RH<@%v5W!B~ zlu1`-J%nzjn-aNCBtt?_g6rN~QL^Wv?dehGqj!FsLR;E)^mf?CHY<0i(sT4^~7Fv0(2FOaISFAz0aG}bHtZxvz5lk3}z4DjF6zbNh-Ao1KsJ zhO23_#XHVsW5r~JocAk=YXVD}bnms#wp4LMHCvkx(O#BG#=w%h$dorO8F~F!rnkb} z{%7`5Q=_JNyonpmZwo@wEl>*&b5X_2e>1vns>}}s@}pU~C0u1R!lVBl$_ITx}nXOpi6n znVHF9Ke#V?RdUpG!29GYZ`E{A@}b~8u@klvt*Y+f3B&mAqE?6IzmU{s5T|4MX`h+t z^jdFIQkQL=NWv{5@<>9!2bQqVyvH9d(Lwdr8$0FBfXon^J$V=#bJCL# z>p&T8HfNK*_y?O6)XJ-?;qx_*ubMUrfTEJ!gZ13X1Cw3t7@l4IX9ldza;+>ip%q;k zqTcfA1e=(huy`bu+!OC%)I~ZPySNUI_d;b@eQ#f9Adg2kry8hGpXZ}53Mz65hu9n5 z`X=|0YsbOBagZqi7*F>ZuB}hI5hM=st)3@mYbn%oz~5nn*0C=Xv48>uS(M%8Or~$} z4$Hmh0BzB}{z6X+YTLkU=2F`I5{q}>oPe_Hha8R63Z2O;w7|REckCQ~h{9iiqlWZs z$V5C#^#_TT8fZKmXBIqRGyQ{bP<@L|>BV2RRtZvP8k1T-hY)EDnhCHf?a+Ar8; zm%Lh>R#iUUN5`GlSlHmdJJ=B33_GckKLjMbb0OQ=FwFqA;J|l$OrVyE7uu%@0uGjI zI;XFTd5CQt`CB~yKnP4JGL5ic^O*9YTnBJC0a0;0oiT@Gl#&1nm2%+ zvS>8kdj31b=mE8dvP+b9(c;IQbMJU+YiP(2la8(^^I~W;7|PFdUQF)K8gJUpX!Z)a zcK;N|@S%Txe_TM%VSBiZ@3`&~cXZAf8AbnnX7{{F`%(29wXBFDhvLPJUndH%Lr>f`|pAEZ4!1ONQTtuJj z4J(%>;*A#zui<1BTUpbSEy!dxJu+<1>QGBk>ly79i^jWpQ*cF7Suw@m&uVO+AXc;; z0rP?>)Qup6eb#A%L#l*))Qwnq&_OV*$&a*kj^AuY$*O)R%b7dKA8{`P{2&4kNPND| zT$2t4C=`RM|P$X2vN+}hmD5{;il7(3l(m)_iMaLX?d=NYQ4vJ32vpEzL3sY-=naCS&FNug_;9x zG};%)i^%4lpfs*zWIAlF?^X=GRWJG-Ch!ZZ9H37HKO8Xo@&u`xxWh03AAzizqF~m+ zr3Aiqv^B=l;Rn2ALe*(SS!cVwc zv`(5pGt-a+Go1=CY)(CWsYrn1;<9}>g0G3TP7u}>>Qtky!IH;A0!rF;&7C(p4Yj<@oJEdQ+(wzsAP*_f4ae>!Snk}>ij;lCqcQw zCS}MT+)<}@DN1U}VkwB8b?4+bk4%-O)<_1L-8tp}?#6iu2auQE3vUdQ`#4>eh_Xg1 zP2CuUkOee@yUSqLRInF;ajG4u9Ko;{>GZznW&AT#g?3)aeT@uf=JIilk$&LOPjjG~ zAO+m!HWsZ_p0VPumIj`c_yHz6Dg37Ty~IxlJ#r~R@bLr`SUlbC0(UNGdjyK ziC`icfIlT$aEdqVR*$Y zT9THKyPN|QA-vll_Y$-N^mXm(J(D|JdvtGj@u$WEj=k?pzE_OVf z5W_Iwy0T_Ld{~Bf9Kk8_JRBCx(2nKYZ9JfS_Z~IWpFppPH*F^G?>y|XQ&z(v%iH~! zGZulL3;V7S<)L5wbTmi*NU2JuZzYF)Wsd*!LsmJ~<)~C>_&E1w^T)o`q_d^p+v&Z7 zhIXr`DF_Wm(*qY(jwrW_Ntt3)r* zxV{OYI=Et23DS_qMdV}b$cAETQ`A*DFfo{ZYh-Zo(_G0oK8rA%w+Uexl-P(RakwD0s4%BA-(QmB8;cWj_ahD3Z8ef@XMMin#eC27y+o zN0k6IIKMDGio_XyAUCwAf@5CGw+UYhuh}8^c|n_@%D##PZ9^yfn?MbN#y+%$2^}3y zckCW_RQiMZRu5kGow%qS=LDT86raS_tr|CD25Gq*_TlYanj2Teq3uf9Sxd%iVVVcT za3+TovekuuC=T$QFCBPPIqtuqi*{b++D4^xNd|!1A>DZjw^fzBH#{e^_>07~c`j-3 z>KT_CuwAXlAYcSII3V!3PL{xGVb?9)Oe;o!)%~J@JVB29${M#72v+g^Kp{2p)Tgh? zrYREBQCfuTHv021ax=T=+?azFGE9TyX#<)3nHebou6bKa16lU;fpa(sE>^zf%7h5o zpWv+Dcfr`$GcG)y93x-$+V%g3&Ah>07s6$qgWM}5Y)`v-CrnsEx_(kv`R~J=(TVrX zc`~rM5ZW8PaHt0f@82b#1Y=`vTN_Eo88u)-;$_V21yUf9824qL3Ci-3g^oUva9|By zR)*zuVQ6r9&CMva%MOt@_^F&JQ@S%%0)Wq1WT~39CE!c|g8k^`QR&YMz;+X-;P)Uk zpd2R*Ls$!N%!la1h!FMKHV9*Jv63TQi7~x}_&;`;1nundzukP?$u&jhQTQj!i4xuS zp_081kehAEJD4-Ja1wTIY=knQ4S(&(+Oj+#=N-G0@{)N^{YHPOB*0F%KQ*p9fzp0D!cP$iQm6CSjAHKblL)TN0~eFIAQWaNo?#n)@1B^fZ^(~ssj%cvehZ3bQ@k!zP`6>#M#Df_cTJ_OP7ENrF=l|5h_P8{vzwlk< zRWgB(1)66Dc-7Axhxpv%6epu>LgNru&89XHS~=xFULNx7OLGWm>s9un&SGThd7y1h zcXP0BI&KxXzIZv-ahI$!L(1Gi_1GyQ({JS%@aToJOD<@8T9kr_t{Q1s;F0;S z39ZT`SQhGE+W95Q%`0Z|y9JYPpC|ZAAtCS*8d`oxJ-eNN4U2Cl-sMxvHIzc2QN$Cr z!~xRCs|xofm@JswRgpjkve?S^9R3=m0(-NmhU5cdVjpU{YDkjKK4O68B)+Q);Zly4 zXna&T_T)>w34ejgKF9n)*nIjHNpki)ZQD+_^!#^YacGv;c~05dMJkIu_IMIs4aL8!yB6RtLeTJwRPS~9AfQD0!M3BH~m!Ofb7ltA||5~JPY)&1*q zsoyWwlgyUj_I6C4C9`+x6~beDm>bPzGJBtZ`bw{d^W$_}*VFGpE$GgoUB>by>LBM@ zAZOq7x}qv(ryU=UW?z=NQ}h@$0UvCk!A91Rv~@S<5;~}**}G}Mx5Q{nFy#b z$o{#@@^OB=jLO#LkLMyFdaFJZ`8dcpT>p+x!h)^(ysLaivWyT@9jRT?oOuddWpat>NHz zRB?=)8yEQ654HQHy=b72@_aV(TCG_??@7>dJXB6l^;uq_h1U*2he1Y4;#IcmKt}~w zysc=(jlo<-=Vor{<`E=4jT6{F1JFbxH1OZHNfr`4!gx2JV1cy)u1vRnee5Agui#@Y zlx)!X^-xb(*56@GW?zTK=JYtTloe5S*v@|qmCFXBUO;J&fTlt!F0*4NAqr`2O*hP1 z^**s1p|gfc;RA0nkN5HWwZ7m>Q(%Xp)bo>ICzjD%9J)CH_n{@hd;_VlW=B=Cjgf8Y z|AUfPsK-BQr0chn!WwpnEy{Fl#tVi}OXhjl9(5BCo*Co%g^1Yp$0#s-Scb{w2cN$q zR{~g)i#-RTI&}McCNGj{hcYh?ZK)V+7H8P(pyRb_H!a@&_t#s-Bq5v)HEmk#)pjLj zy3z@m3KR2ty$*BwDgq02C|>meQQy`XB6aHlO?2@Vj4X#A%93H_AtC=NAk#uEJ4YT! zRFBR)Q3J8LvnxS^G>Dw`r;1)@sT%)5ro{ss{r)iVRL4q4w>W)K&QfotV69=!!y>&r z^=oKPm0H>djANc!{+z1~_0(_S!Ikk0Nda`zNY@G|*eaa@m$^SD{4f>*7{4ln#t)Hp z1j(=X-~rcu9bGN)F|zosmRUM5p8B|yBEgle5vpOh4P37wiS;Vd-4yG71Gn~|D+_TB zlAXa|;4lbFXtdZRN9=r(L(-Q{RP(k;T|ls%9@NdUs@LNmSl<(PqZ!lrp7$!@U;mQ# zJ=u~@!{kc@d@S`2DU5Q~F0IKM4;GGquovieXUOuQB;Y?l8ltfGODviHfEBri4I#AjH}DSS>wQ zUk!-& z&AiMx5}ypf8vec@xh+lB%yWQRuWI&%>rqfTQyJ~v$^Eu0_(o~QouX&(qCOn)wn*w*5Q z53z8G9IVVUuzZ{H-H&v8Stlu5`3Sm6W`C4NWKUbF%6@OCa`}ZeFo;?R&8oAz0`U^H=((uY_9(W*>TfTVmU96S&?&h#?H+#9*Jj@P4By z`a{1~mG$9XMfZ@%{AT{7G8{C*7@Q1{=P&|z*SeY!phCrhN!~(@{EDbDVS;OVk!;&E zfxx5uvF2#ziTdV$>G3XV?K4N2?mL&T!f zK3?8)dF2EGp?DGrLIT5%OLmYbhJX1y5p!NW6T`{d-t-H36VwgswcBh9m>fZqUfUb3 zUqrQ=MP||ms6z5U-$sM2)-@~1gT&hZ6Jmn;kPl?)h)V&=OW#m0fzN%gQgzWeF!mN5 zmAD1=#Q{8Po@9)iOSx!&B{v<_L($OP3h;KM2?uKNtf%8VQsT>F=}&cpvKXq&<0?ET zDbNPfMwrhukxREC;Wt?T!P}SW2X=oM31^%|6iwPk%0ji?rnt4VYqVilIKz0SWe8A6 zi_W1NL)#PbRjK#-4VIpM^@G!NdU4b?8ND4*pD%tDi>`w0dRJmIIR}`G#zx)%QhBD(j*Z5o1q)LlY>=pMIZT+;bbvCHG7sDgZB7qTg-G-K-Zf zw!(3j+o*|@r$^Y@d%0 zLyUywtw1qu54L<|vm))yv5Dx)l)#y2zqqM+^RH@Qs0!%|EMWpiHr zdjOkGF;r=*n+T!Hz}y=|GlviBoRPO(ce$H9Po+=Ak#Jsx*VpQuG9?yX|8+f;feMi0 zhq6ur7IZAJf0gfx-QlY_W}U!n&&D%*k8~Mu;|#`WD@q?X(@AL5Je+Ey`A_F8%9K`< z9b?d;fsmxzaY%6V&z(CoSkzP7M8#lumA%()G4uMq6&!9=Fv>b6lyi@Le2^l;gR-rV z=+XEjpA#)+$;nDLl%uIk3uLg1n1Y2dDzRGQ7lc`C0*a8vm68(*V?58LjARh8u;U{G z+PG7A;$rFN{^OvwSP`)u1Asg_0?n!k%@PSNZIlX$=^$7bg*yvq3SQ0E+5B;mP7YWY z1C#Ub@w=QH+((m~A85!4jL8WXekcCLB-0<`Kr>gzY> z<&peH*3R?z1bT`d4%XsD5sxjJGDetR5{l<5%8Vj-7bqvUK7fUQU5t;URcddc!^VQ# zGYPeMc`*~#TmbW*T1n^&XlL*v(N6C{uw)?QG zJquT1E9X*V$>oTLeaBnE0RB2%B1CsrS1PrBsA)x9RD^6v1P2RK_{@$L*6?ddGlq!n z-dUwV^OA4>;WP}6X`6dixlH$Q1ihytg?VrLjFzVkxAtAS;mC2ZwY2kdLy2o2EQg0r zWltPjdI5Y7jkdLP$0&ca4Cj(ARD-@mU!XEkjmoDCnu>`vx;{3-h|H^m*RE&KBWAHq zX@ua~qxB<*pfe7;*gKx3r>WCYYV8w?p=fuKBP3g*t=JV9P-PsZsi#HA#2F^!3FQ9_ zJc3*5+Tso}iDqTjOv$mhEd-o!IF;16^JlMpXzNbQEo6)!!EiW(YRZF6Q3L6*J0Z>) z`U_rW3W}=;t&i;ooHJfCPL^JFwHSVg!EHv-y$gT;i8>rT45tLkO*rl{$$35C1KDv! z_>Hro;e)&?pFkUqmJc|h5n?D^Keg7IDAj}-!=VQ(Y2v_fuYTcz2(AC>LXl zX#4n(g}z$Xq<2)jGT@b7Yd92rn~#M9=CD1oZ3K%$Q#b+|)z}PBm1FOP)+;H^IuLHt z_|vKWPl;M?@#t361v+~~DqLax?YGc)+dl0HJklGr95~M zM$dwI&~Dn9@ZP9MveQ>!l(11a8&=+@Pc`@?8Ze|`D>OOzy8lsl;qdw~+E*wxUPn?i z645gh;A6_OlCQUWtFU#z>ut*{|IL-I+?>L;vrs?+o;7FHEIAPLiRz&HQpj!l<^loC zYi}uk#EFIn@dfWSm_`3DG*Bp)OPn!PrhHlwN=jXCzB#>+oE(+=*eA6?c8$+G(lU9V z*1)=F=I^7q`B1P8O+LXGIERcDI-!tWp_FVhB+i3AbfM@BZur=IP!Pd7<2X@Wf0vhR zFh6J+^Bdx>ZAv$|=cicWI8ImFA|xKoRa+to5mCduLmRZhaNlgH>wdnE@uM^D=0P&Kbl);Rym9TS871mFjC5}pz^BKt@_-=E|e zROVC74Hvu=y2hxeoM6IDa1<~G&-4&cYO!UT0Dis_7s}1o^0&K;=r(H-F_EBB=0v zp&P4^Vo$K(ib8yJyCD|skPkF+nlXMQhipU@TOwkqD{N*z&26zZyi^(hdspnE8kO}* zDH!C5RIMLUV$xs8l3DxN<65=F#0nDuzD661Fu9)#rzBmNY41VgdS37N`8@K$0v17HgK&EtaftdapU>3p@&1O z?Uz=>)t*{sjUB3CD^-tmQVy^5A#Al&TgPQR_zARP;hif_70%Dd*OB&KaDW`TymyIMYhf+w)&6DenAQBGhUG z*CZkD#gQq=YF=8aWC+?<_~eVgXq)de>*mz_YGmPo*|RI!RYRr955i&Q7g?cf&es9^ z0l$EUQT5t1su~Q9%$Lc#rX*%9WvCnLb~XxS zN}taAGfTbQPTj)Pz)rY+-yerexsjbt7>1~5%jOtn0Rr(+)+{C%1;wUyQh|{n^Z(q> zp|p$qyVGi6r3XYG%9d}lwQoq`gI))(O%BL3{E`bmFV+nAC~?Us@~nE-H{?aOx9#T5 zQ?493Ch(-dTlc2L)7Pn%W7*u&dGZGvW%IH!2ny5heJvC%&vJaWRmz=*#)0z0K5(Uv zz0P4vas+({Z|!ZhJV@|K)R%_-Bty&2hnKLW%oA!>sr;+FJ(U+-n&6g|g!(s`7FdsY zD!I<9?vMDVcP+W_EEU^$fE(bMkooUbhpJJetf*J#KB@7_Hxv#)=~29q$9|wf`JThH z1L8T4^F41FLR0N;Z`()`uk8WH!jnrTor@cYdfWPnnJ$LFd{Zpkm}tHcJL+tz z*4ptB{5&Lmu-S=>426U)(#oD#zG6W6sS_(qLNtmDv!&I0kDLPRH;rQPPQZ5CVYG>4 zv~6&(=;kEavzwyazjaQhriD++S$Qx)j<_f62qBFFgh~VFj6MPq6VovF?S(=ycNrZ$ zMx%OI?>cbTlz%tCkQte@x}<#RQ(Hr)ZXWN1Gc|A?UV$O_j=$E+QI@}lW2^4iYNR_V zB=2;)))$xH>fRPJim=`|m$0hk=q}2_We&JCfWtOpt%luF!;o1U&=bu zEb@Al|2Aaq#oWXO$WI8U*5m^rPMiYku!sZ_7B6Yq-{j4v-qSuZjHsPMSfaP-iYZwM zc7S|b^5hKjziM$#;wBRxp~2Yqu?NR5m@(HRgC&l7@BZ1N<$Y#gWaZ&O*45&-ySFSs zKmBru2?yKS#eB1m7VpK4=ve7W;`U4nkEnFz5%tv)sFVUd)9T>&Nt*qgus0)1C~=aU zLRcU?;Za&y@daZzB3;&hCqCAGI3Dr_l}S`3CF~<^p2abU@j7@|B+gMxe2mA`wf>#X zXPbr2yhn*UJk!eY8;?tCA625e8r@*K3X6QaTuN7ZSmmyFGV66%tlC08R^;hn+N9@X z4}lo=&qyAW&EY&OT%BXC!Eesc$1{#gIiZjTl5(I?v$gs!Cfd3@_%VLqYCKF8ox~&+ zhQtrgMLUT|elx-!7J~Wp)X@;FSO*FI#r*AKGU*h zL3{HQ4A&`9)ZCzi5;P*@!e4Q^;Q6fPakLgwM~}A9{fkD{wliNiJ)0bw`u|X6r_w^) zuaf@O>p$4|pL#tKeW7ijwmF$&sxE`AAeYLwZY&l3UjWGSO;j2NkQQ0%3uiq>wi_{;O^6;HA(Kh zj<(;#7G1ded5CAWx5c}$YN?o$|Mb-Ca+?b{7DnJ=!D-1!QA=r|r zFt`$fC%G=Iz)`$&`I?Q`cr*n3Xllo1fawfZ*nB|dK;K)n0(ow244X)C_=Me!7>p?r z3W0pUNA92|1#f(oToahr%Kag?btEc%S7OGz&QOG%n}36_B~IsBjyxXr(Xl@4N>9%n z*no8UEm%zTFbWNia_Ahux3i&6+wthcm%k*VT9a-%3Azlh28{npnjviZ^-5=H%0NN( z*to&0u=7LP|J%2*32FOCrTZMN3dCcymAfL(R&bJreepz1x=GE8LQ3GbY8UVd&}_RI z@J+5E0HR@gp5v6TDhk7;`otL#fv!K8WegUIGg6!dgDo5mNh$B1VCipjux5<9on3|6 z?BidQ@$MaUSXW=9tUUb0ldy!kKw`Hw;!as^Si5qo{Frmz7Tt;r3T#EeBcP|#w?n=l zs>F`(fK9a6<`2f8skmjf4ky3*r)aBbHpqNVnq7|^nhO2~aeMq;LKk=A$qtTXc@$Sn z{;${qqO8L>17M`#19c3zOE;eLnk<-!HQ!#%Y-N1ZPIvsQ`e=$xE*a~N_( ze(E4^QO#+VN}WZhU7dLkd%nBx?T&RvnAl+Fv8aPmH%P?vGaR%3=7rOl&j8Bn-E5k( z))(f}gNT8w{a0^P)UhSjM)G-Y+7mun%M8l{J!GdNrw&ec3E@>H2YtkPS$-> zEx$-gfKM&5@)#DNrUa@(Be>nA3&#+JFn~4F;MLr274PKaRr%e}b5vczWa z=Pf@oyi+y8koMh83sCB!8E^u3iDmVwO&h%%uOb?VM z;ouCbRAVi~$!W_I$??cbkf|HcX*WMiP++ll;Kwu+nV+K)D?u{<--A6fk@erv`ugn< zur+u>STAk>_0#Jh;*L#;SJpwh?9CspzX=}TxzolLT5EO`Zyu)K6>BaC^n3L_1?>>? z9sxKZy#9tgEEIHa70BPk2BcIp{8{3{BVrA3vuU1EnZxvXNu-OF6M|3nHhL%5`RCjN$S6HwADh(uR%?tpqtLlqiE(WG6F()86Fv zGJl0hW35wfFs9$K(>bcRx=&A`wNnf>w-Z|svXdN;PtgqTFi!Zz+7P!c$6}my>Bv5_ zckcleFF4Aj;lwwSuw}wsKnM4d-5ijr_5wHPvO|KouNwI|E=3c;n~2bE%M5{fG&Vx% z*eOg3rXR{%h)g`o2X_TA^u>$IFfXnyxPYhR-Zf7$3^u)6$T#-Jm?E^Jda`kEroSF3B2N`di)=K{D7U0*y$@$$>40uFVzK}+dp#fRHYu!35t?H0FSOP<)+3jsZ=YxBV zI@izEi>`gAB2}E?16-1OH~EUlH==b>y&kgH(NH(hb%y(>aU%~T9C>mBcHLC&5L#i=WF-AK+3k+M-Z($`U7i; zrR|=zxU+9o&T^oWow*GEK!poghMf@k{N`oaz{eS(rlh%NQ5)7{_eicK7Jj< z2c^sa^Pz+(Fu6SmlJ{qjX6y!rVA>1Vvc#>~@&7}VrTUD#%7lQ+CZ5ETrXxaU9CkFI z&as>(j-_Gm=ymTc(Fx>hk4xJos83L-d`g<-C!`2Eo0;fC7q2p`4c?Mbjv^E9HP-;j zgdQ!k%W=Z>l_k#q~6Zr#Z7|x+d$DPy|Fu^LzpQ^J#8@c;uYY#s2@%6K+yrNPXA- zWAJb{xY_lWO+9!D$HBTjeAG1X60-BWQ!CzI`1of|F^QbVB(UkPCtp{bwGcb-KF znCC9R!49ES8mvsZ7wSK4a)o1jk{Zf>7oR6V&bi*9Sel??#GF2K&78kZU-(`sr|2UWEq^tVMv>>ZPf-2%NeCJ}}H43WyQx)>@%S-vjf=P$fsLolL=MbM zBkmFY*g<$4CnFHRt9>o@WE{4n^W+BWk8O;Mypmqg}W9qc?r%A{t23chPr{E zxx**QYDBPS2^>RWoan(d1krg1f?S~8$?UAL>h8l^PYx=9W2@Mr2&pvVSh*=rr{Ytq zbrrZnigKk|zsjt84Ksbih@rQUy}KiVEV%raAu+VuYI}n3hzKUv74l|?eKSVDB1iCl^oex~ypqvJ18C|9=htxG(^$ zw9tEbNHll3iww8^BJz5H<{Ray`tPX#Xokkk0HLZ;o33MxC_$e7?0qN)CRMyH)S*b%1DW zhb&s!MSCZ#adEz!Aq`N3#Rcx%&t}>Ht1(SSRiMj#afLE`YgrTMK5$-mSt$qn5Mkup z)Nbh3+|zZ6qoJ?tZJ!8$QDCve+FF0J;OJ|U($5l?3+>l4=FMOW z#Kqeo@iRfGG%a|Az^pXdd^(OLfx)A$=i!aq{_U7*m z<=I>#kZry3>ptSz{m(~`2Pk4bQww;J9dq@Au$~%0-P0GL+{!JwMx-3XzY5`2)1f+l zx@fc*fgRbi`m;Nj2O?1NFRC6Jx4FJ~#u3LA6vEKWlX2p^?A`;OP9xJNA_AOqpw9pM@>6C8_EKW|mzDNEt7j*wtp1 z7i&SX4!hFc58q>+y>3OSXCA zy5uT$m~ce?TjD2fA5PH)HdABA7lBWUz)8EIgE-qjvuAZxG01B#ACDHeX(fK!{-v|G zFZICn5BJ-T7CKQtAY5p$1TusSl@1xsyiBXGH!{mo&j^I?>oWijUKbB>VLvoctdVrY zE~dD_`nO!7r3U9pQ#U9fkp0T&00Nk!G>(H)NZ!q2Zx|~}CdAJy4qD48vYURY0MOM0 zMvk#TIvg}9{tTUpKt#{!%ze~KaL$@JUQXgct*{&(BI6QGCV1xj7?>Ab-<5)r9*aDODcwV(|R znWNBDNYmi=`b?{N%as8e$iU$cU07NPPG)Ts8XB~1cus?3khfQ+UG)2*izgUkS85=o zfjSAJ(UZ*IFR$G&Y!V-8dWrPd#`;<6N*bzM=Ieo6Wnw%Apkxh_p%59Yjp+)l2wuG1 zPg;{Rf3+%GRq7cArupGSfjr*B1uyz!5>Gnj~~*yt6Qfkl>5Gy536ElLIhl} zS&Hsapi&|_c>+~I*>7&3_MTle#e%Qf>0L2B5ZeFwf@T6fOjFIt|sIAhx|ZB8>e5(i{ZSu zUZA5D3{JnnMNrx5NPv=(m#^npmkDKie3uA&2&&Zc^R8rp5@Immm=w0?u;X!57syVa zGuFs>pp-cL`GatjMff(dyviQb2sJ+rN?dxZAtO`-K4W-}NZzcp>#9GO6|%Sr>7&YB zFd$u<6YwP6qxtE$VizIl7s9jq+jJXB``ovUkK}1^=zHFnUb-Rw#ltZ2#1xwyWDNh8 z9weM8sT91MTqc3%sw5fjx;q~Sr!&o0giWx7~TfCl|=Ro=APao zOVjgDkj?_Z^#|^%F~QBHuj&m(-H5REB|6JQ;@yZy>=0+YCdE{*wJ->O>V6D`czyJh z8px{k9Y5>{L-`F$Q&;4vSERPVCqj)plb!yZJ68n-C9$(in`(<^)M1ifHb+ejY8T2IH**J6 zIz!YFE9&ZJd2;Va8icctOdKF@L|q?h=TSgQysp`-^>8ofx+bEF%{Ca_`tjmJqSQ54 z;0f6+``1rt<`l<2-|s6$o$_}fM^ccOF!Mofb?Cc zs~xx4dMwZhb8A|eiy3vDST}|Z%#*6Y<>12K!MbuPN)RL^g>yF3C-0U>#Kff>1)_xr zw|P~)h0l}3I1-dNCcZLf$c(5wGn=Zv+!DcXj}3}4*OT=@kglI>G4A7IrV8|oK~9lJ zI1#@MP*B{=${ZAroJ4Ws&n9|0K6ci!H}{GWvua~Ap>qR@nNC7}S#scOlYGt`+(b!K z5w0k+S=pOJ_b{b1u9mx}j7Hj$RucA_$L0uv*qoH1yE|f_@u0e{0Ezah2_w=+BT1VW z`gy}6@<82biz2jK-J$pA1q|O~I;>s0vp`Gu#2Uq0b+s_GrQKxFo!c)`hlD@>V*oF# zWkkZ}rFD#)f#z+c$;6ynB>nROCtEWy2~@v=Qay<{z~$F%P(+arE5Oc@-)rf!Rx<)M zo3f>bw53S2X`RlL;$*rJ#OX=rPCGro9-mUvhEi)XiYGH{e*T-z2qYre*fWC`OB1$F z3Nh@F1Cdv%i1`-sLX;HLOSSiyR|EIM~1bEfbRPnOKl5A zQ8K)ZcrJhrEd?Cn|0IuLcve`KR8c_!eKt+@^y1nT-PI9%_2xLvw?VwAdAfK^g}!6OT|{# zUw{?PYcRd1J+zo8XXx7Npw1+EmNv;^`?>0;+XP>C)Crl{&Iv!g7nL6J=j1LDVV!s< z0N^R+!i;YV9_t)3{j?%3&a>SlnI|Kw%H%WpM3i=?8STETzrWYii@V){;K#M7Qz)(l zqsbfl(Z%AwishQNT<0cf_uE*WU|!(f5N;t>C8k~NzP0OyxG8*iMjZ<7w&8*z>kx9+ zQFJfkCwC@lvK8&#+waGuW`T}-*!|0194jgWib}_;7d`S%(vxQfK`Jrk>4z7cG7yff zcA|@QCO;ZWZfd9uS_>VlKzZ_yxa75-MjQ>J2rZmpIRoa;YI^I_UdYb=R{{5Z&(PD6 zkKKW<5`ax!MFz@Q68wx_CIl8!LNb1&kTjVuV2Vuks=2rq2e0FG!Nm+dR5MV`^Hwz+ zxn@~TQW%=Y7$}A_P|HYqY*-mt_e^KO#1Cg1BEqH|oI+UFK6G5l{_!5i zbCjbdUxusYU?XuOR^;quEo7~#X9aT})Ttid*uEzQsqPD@^*uo*k2fvb&yMcbkd-U- zLHTyIEXz1#J3BxC)xsk$sxd;%{{<3!pb{T{^v4|qsR#Ed?Aak+SykNakq4De@m2UqL zkC|KN@{{x|C_)C~^@sKefC^n27oQ{(i;XXk$&A9jI#qwU)LLKPt~T5<{14qq!k=|q>M6!C?W4bufHgjCDVK5|{T5m!N!iHZ!Dq)^CWHz{5a*Q9@uIi`R z&GHum&*p|%_w`49IFt46?Z8AyAcnHuGD&5A-<@pG?Ac~UA)wD4Ywd%9Jvf1GDz{(C%?R6t9x(Y5=Ur)UYX}KHHe~yFR&cz2xQ^?ak1_ zu+t*P6O*?NX_?n8ZdC||c?=w!px59@qUwbZwFf|t4zm#jT@k6a+SUqr3=;5JPxd+T zk9u88fqsrd`8c~|ZE3aoL!uc5YUbBno!IJrnXL`IhoyvKRl~vW9iY3=7X->{VQ_c1 z?pf`TMZ6S$+_EK_RLLA))%ZH-1mA;tA)`rXoJ`$+HxncD)>R#zR1D4KGqu7#bOBbw zje9)!PI_1pByV?2puHDwugLBfU3H2njoVs5_%mADs0GM(cn_A}QkUkujU|x!csv_i9jO*kN#G}QPkWVT#<^QO4VuL8-54nR|r z17sT_M3-)(f|geD$LW#I%m34^0_Vd@{gfrU2&m0S`Hvi3FMIx9MWjNf|0d|B*izB9 zSn}jiC?qrY5?p7(a%qRD{Vzq`*VRuM-55{hAw>t033y5z!eo1QIu>!^DrpiMaXv>mImkWU-*`BfY%b+OKB)X$0psYi9n?%2@+mtTI(q z268q{LG|LG+}4t|)XY|g|4ffC=K9f`{zj4Xo4m6784&DBZIwj3ZAPj;|NoT0{~m#s(ic*t zJEFLQpO%4ED(uYqKmuNrGqUCm z*uCdqFthATPzLpPPlA$`@Fn({07uwxm3ua;68b~e$rnBCZ%Hb0tkGr5%Nv!bY%=sS z=o+x-=Gw4!pF4%ZzPAA)qUVm^9*&S-vZW@M5vkZ@`Il`VUhd6VLvSj_?msjF56#0? zb6lyKN%(#M8011 zVJC9xFet1f4L0OuABEx@HJhGJDjfAqFin)5GE3|50~l=i+x$#Ws>i;RBRHloZ(YiA zw=cNTr!ezPi7apkAbo^6FoR1dnFIL+;#I5Aao3b~hd_0XxcO#7%7sccErZaw@S(G% ziNYMTte(TmYLvt+-*Xn7W}5w#)x9CN#$Zt;EjM) zo9v7#MHXOQCy(VDOMbO43Gx}@>sBpF35^^#2#l)~PJ1((MBPAfoML9zw_e#ICP~#M z=_Q!hHb2X^R*Yk=q-Yo;TRA96sVc)oQAVGs!*cQx16T>C)l&*6;HoNPRJHtrq7j4~ z5Y&Q%QZN(3UBigg>CvIpl&aX*hQdK+lJq_Y?u{}}YK-@^jSDX+J5yir-kwdHAJT3O zwxiPHN`~3T%^&=4asNBU;-HoK1!Og|E?=Tqcl;5GfT=(E@kmyv!^9irQ>g=jL`VC> z5fU244w!7{YC4zl8kNj#Y7sQ>=v4_4Tri%;Dw`?8qL>1lG|Pxzl<&Ib$+ChhF!Z4PfA`)K_Y3FBs+{VC1@v^pS^5izUFkC{NWB&J?Pt& zI{X#PMXu}@wqg!2i6IAh@clPXjAEE-djh3mx9k}!@Gs29rxbRB{(6fkamSI#mPXN+ z)q2qXCmhLiOK9bDnJjtOEY49Y1JAm!ViYq4XRv!knwSh z198atJVYn?>gwqYI8B<1v)q!l#d!_Mzc_npg*k^u+exx|xqTS2Bl6>XB4Apk7C;)V z0)&^ICN+SeVYRFRa%0H-Em*tPdqoO{13aGli0fm5k?Y4@kOEHB+rMDQIpHDDD$0$y zb;d`ULY_b;42}q_WL9RX1UoF{x$FN2VVw6iv|gMyc#0Grvn%`hiT^w(-XQBWdkv(W z>4OSUo%a$!1NVe>k56gj&yWN>PVgEej87s+pI9>__Jo;mja#MyjE;?}6|qiRIulh* z5|%Xv@#nXPpLAZUZ=w0wll9J3VMw1Yncy|lGor`U!Q6N`xHP24HP_((6;gpJsu@|v zswrL0otC8O<3BRe{I_#|irNl0;&3#A5-TN{`L-LR)Bm8h-ht57sSD$$OmFrkY3!Ra zLCF1~ky1^n0#Gs`N4DKyn3}CzzXb>x!w>Aq_w7*}Q#JUB%7T7j$gxE|d=aYn049Sq#_Ug))7$Z;zK9}%jH ztA_Xh)FI%;P4wfu_+od%*QVBGafe@Ap9M(vToTf26pft`684V+#z;1i^9C&$|2HHV z6xQ?3{UIHti}gI&hPM2;W5>i6la4ZxGFpj3%B)q-h0I5u3vl8%`d&aQ0&P)%AUa`9 zV`7Hmm@^NioF+bZapp;m{m_O1teFN`>zeWNT_a!?Xzz4<^qXHa?%6pZd z4Y7BM)UzdQJpxuNT$7t)fk77-*m>X8EPD(#v%N>3u=OLrp~gsUx@!nW{0GduJ`UYp zUHH<9rrvQ>_XP^iisc@VF#R-jpvg1;P$|*v1zk21wLA)6&C_H>n7+(qe|p8esS<|! zdhyUrJ2PBKSgE&oCp_SzQ1v?@BjWY*PO4RT%d_-M(2EB?A1WGZ0b`uQs+A1|sI@O) z$dYlQPJ&wrt4%M(^RmDIcw_)orb5EN^VY^ZX%88xy71=Zv2Y!7RX)61r9L~SVD3KU%-m%*BZ`cDrlZ0SIKo7R@U#8 z%57S@0VejdBuCw%T~zpuoupONxHT|8q$fxt{b`8|A7CHDA!E)=dkk_M~ft zA^<}XcbJ=koTIY0Hxr=R9}J(5}Eg?dDBR$b1kp!tp{>SiD@o_m7W;|%Ej zMCXVoHr_TC`g$0V)0{RMNztc*v59Sw<*A|{JhMB?nh1ojdx^5UK0&V?%>Tvaw-01~ zaQPejnVu`kI#4vLU={spnv^yI4rHttSO!OaT3;AX7Egn*rm zC}MT{f>gKlYcyfERUu61ZG))A8cMN{U!ao++uBuIVHX?6m0_hnQ9;;zD}HIOui*+0Lx;!8`tMPb*{ zm*wz1hXowzxEgQ!^qu24x@FUw)GU{A;0T9ooGLxhFYDLSyw!MP{IvF$iv+SgD&6_)J5 zAeWy1dKjl`%83~iQf($}L(c{Jzv5H@-O2{j)Aaqr4GsH2)P#QzZJ3BVX!|TQgc0(V zPMjmPwd!*xn@FVU?^r!)MPA;Hm~)`mM~3zX_AyhrKNj($ySR(vd>c+U*2hF(KVd(i zv08-LD8(gCDvuQfB;&W`g&>+~6}4IQkfCdy%&^g1ILGj`y`-fvDi{%eAiau9A3aL! zFnywOH3~+DW_#3PCqWCpzMxT-NKZx*{8s~X&S$aiwuw&~7u}VwES!F`_wmGGgvVby$T5rqip?2`H zyMw-0h2ALJq$!@kh7^A@17d}*I>_%?7MXlW&R4t;eHz4%I?mulOSnJdCJ%VI$PSs! zuMLwyK$wOT4J;XCsDd;CB~kmu!X06aMTMOO>(Vn0OsoO{%Uw!#PMFClU~pIM2ee>M zeb?kR3q>j(^HRu#Jf+yQTbo!Uq%q4kJYH3#O4TBlFKyX!1ab7Pb<2Z@hNv9(6Br5= zvy4cG;Ts75CM5{;PPejR6FILhdc=-3Jn3cnrMFJYA}qKj;UOE_7Lz+i({e(Y^Ma##J@&U=4X z;UvYx2|uYBx)r@nlx6hqrX|k`*sa|0V5JruYxkx ztMGsO3%=$to#1{>PtOtn=@aziAvf&U!(&i^ya;!C0`2aRX7kka8cp4#acO~-p4_xU z#fIMo??g3rv4m}U&gV=$&uDeeSoIWQ+eISDw)0>ap*vlbYRyEIZGNd z2T8s%1gyRVrbL)OZfpeI5;ax=_P=w-ZRsLqz}`^h{G2f;AIB4%d6|1~JUqlPGbSzp zqdaxMOmOk6PDufHh;?y>|F?FD_*YS3{h#34P_c|JT-v?9Vh&f61JFFhB&?8I=q@Y;0X3 zaCv_ihWhTc?b$KCrqX%3&L@|PN^&JDU)BwN!4NO9x^1513&{r9>L}mD@@)87erT&Jt>nR?ZLG7BPzhD~sC3!~8<` z%}uoa49}-?3(rM4fD+YO*-bEKBR$Ud*9mDC*hr(P?!d^ZIxtSKbYd=9bCY^v7Z37@ z-HDtkk1L3MILaAZ!#9M(3PCbvSn0W8*`rn_FNuhXWQg435;j}QDhmkEQE@HdiP72& zm@VTPT$`-NSo{Mjwat2=pu+k zrp?g3(?{OzyUjt4qwG}P0nb!*gmI2eK-QkkCq!$EChoeS!5R|pnw)x)M{ptlp-}Ob z^{eYMvsrJ>hC9feSg&(NgF;8+ny>%leP`FJ$`?yG#NwGM`EJ)%Lb3{l&eJNnN0sku zL)*McOsTg;^?ch>l9Zf)K!;rdEk}6UvT3(vBPV6ovZS(D5I4R^3%N=8cxX)2R}V#>KuW^Z2s3c7dIiVq^d-al5wp5ZfI&SL~96FRN@9`S&mc+#VifT4n z+e;%D_K#6nEk+_xE%0w4~$r0l1p?d??bAgtyVD8UBq(Thrka_tX`*YCU5 zAN&(ntpTfM{ipbzP$#qg(yqSZIk}+Sg%KdM9qiH)UVf*4aGl+-wrI~EoGj(bb4k8{ z)CV;>Lm;+sKo9M%E&?k6F~@5N2#Y^wOC6DV@l@^ZmpUDyjwp zo%xTeOCmnjCt58!+)T)WLsTDmVHC~5y!jE+p8-e5T7$(1H7x~RklJDyC&@PyL558Pq}7%Goe9xeZ}&ieDH5Op z{WoN*s4&8)zNMN67gR6a_*RGS2WwAcVG?f+bj?!6Y2XcFdQ#fe63^D2{I9F+Gn5~p zLn>{^wfmOEKiLG-9FXtywL!{4_;#TYiR?V%tgED0e^Ihh#BYGE96V(DpZ<+)|1OOWQ_!{KX<%++R+nhFl`x?^DbRoj8 z=x;fcr9!|osE_XAV&7Rdjk8T3XtvA~$y55LRRQtb-CU>~c)NiQ8iQul8o!Q`AJ&9l zm}uErA(LdauHCmCwDJ7IsQ)VYbhzh4AY!Dd_dA?Xn%gnNtjPdTnDvj?3V;00i6~;~ zouhw7O(KL7=?_^4!AYnr>}!1{fkR8of0{JHhOow{v4KHUt$nZoLgcX8@L>4fUGIHb{G-2s;&WT;t~Xi=gr4 zDJE<4!NTq_X|D^6Aus&(aJa?BWWkcwV0_LHUwcjd8HR(uxsXV(ai!YxG$RP`@1IJ#dR+~Ox>8WX znnz1cPBnSH3WBezS^mstc2>H{j@IA+JZM~VCPPSqDA9*godM6T1d!jigzLh`+Dl$G z$yz+xHvDu`$3yL#W0T2F zZe%5ZbyXM3y^wTRQeQ6$)d(IT#JF86gM|^;u|jwgFgT-4 z(WYsF-PGb9CVNZH10Priwvr?7{SC2duFQ5^8T<9&+XOe`s^|h5HX7Du&f5;Gh9>b> znk4pdqn|yF5V;6=|5wOxcHp>&M`0IrR&_Fh1(47qX2QaAcBm{oGftZ-g0P3S39qkzxrYI_8t zW|>^IQN49T;t1q^N@j$^|6$SJ7@TgTZW9z3SVIhT7+S0CNV}2fzpK&LABCu$ww@Z~-R~4h18&AUX_XVbCu!cx!x=eA7|Z|H zK}M?waOe|++;!{ofh|b~+!ltyE;>`5Lo($&hQLAw{#gfMPBva1(@qxC6pVw+BmV^_ ze@k*pX6kbk9?1dO(ci@Gs12|Z&L+QUsqeDGR~%BRZW?l3`sgB2-&S3+WvI=?$~_Tu z2VdNu;x$fG4lGs;5>;`-iG<=hkZ*d}Z-(_a_X5@kb2?5!w|V3OlQrc^_~9#4B^X=` ze04=@%9S$Olb8M$<#g1bi9k0A+U`h#0F2M%Pw>fd{YfqGC?Ni`;d76#HGvazRj`l< z%<1HqU6AA*<(W1!c78vEICCoskeN_g($XA^i_&?LAmC$xLepv7Na+p{|{%%>=$h)^aW}B0Q z+Ws8`ecA*}q!a1<%BYOOms?8JQQylOoVW#NH>x=2am6~CPLwol( zme~M5{a*>bYFXP)jLoQ$8hl_p_q>xHTTB;2|}FR>dIJ{r?~ z&IlfrQo{xKXD&k~vC3Fl_~_Mv#iexK$PJ#Fe2bR-v9y+MR1NJml9*2hf0w#bn+xn) ztmaj-o{wWE8v&|JGT!ER5&aLkIwO1k0a_e4MjSw;j0Nv3#Ojt@<#q)imG3|)Bd1^e zl$NKNu(@B4f*64|4C_s83l`wgyHnNs_Rv61!+2OZ9EQZ4g8T-~|Be>&1|MLcrYl1< zGo@1*_UPw2aI))Y95iR&=$lAU2DA-JRse#x2o-!K&M9%;AliXFrVA5zSu-vOju@`Fn3`B z_w66Ed@t?qEcg|u)zjaUta$8%a!mbqO$WO7v{rqs7kY$kQdAiXbvXmDTY!(pWzr^F z!Hmq>z(9UC^NVBP;kXJi%4m00iOM%*$-eX*@NdUlfc+3Nt6uJ$2T?)@q) zED_q>20Se`UOxO^wF}d$aB1@piaC{~!%E9-!X-(^VZ6rO0S_5%`~nv0qlCj;&dE{TA4mTlC7Y1tkLLMf4u0g4OO%a-TMP6q_fb+Y|MBnd@?;Udhar$ zjr#}*EZ+Y#--q%H+EZ#3I=2G{?X#^r#(^b99ybmG3GsBIa^W3`R&q*jMg5|Rt zYx%3@-fk_jL`TUNSHFzdT*ET?R~nR7KmF(Dt^zMH*lRSo(#N~8A|0qpLogDwx7J#{ z0qMGawW)5V*O1I~7&!E8W2F8#1SyEmYRL=&jF|LyKx{@9N&&N(C+B7HqO!{B!@hTb zf*{XU&GF^e)7IcB;pJ{kR9d7RCn&r0H(9Gl`&qmW{kq=ftl7@vsFmTa6<^=0c)(HZ zME42px)nmd0wK1u_lo-1nr9HHBQ?`(dnNaQnMlz@k1VEt-e$01XjMu$sfYb6+zbCn z5`OReNx|qJf)X*-M9-}~KD^vlnB08RfHXwGZ7#C-Yc;!5q>Qo1GX^pkF?hx|L? zJ!VTjT@3kyc{;DXq^vj~~cJB|ze^7Xw!4P0IGsWCc4WUUbh>wO2s~fcFGB?n_ zniQS~c}cJzqnQJ~47Q<=g=OdJ8b~kbM?QwNG91APDC|HwlMU>ntk2e&lszONkhF`fbAUj{y4=`0;$fd@q8@kBCxFyXNY0Dz$UmbEh=@4b;KB+`0{r`8vSGO6X!T;38Ox?Wu9J0W% zUE(t43!IWh0V(at^jPRQ30zfaBSMiRP$P?#L62k91tM=VXSa5W@ziV$iMJ;;Z<()F zoAzYrOw-MIEA^O6{fYDXG>W099*hCQ*NCJ!K~2M2p&MTyJrlG}$q#J|*pmgt;P%Gfm8y!<$c>tAZ-RG}Y*5S|~PhN|!d$0&H;ID62~nm4KIH83_G( z+h2GA{+UG@hTXTeG{Ba=mdfn50e&lA=R^rl3&a^*iq%Ac1(@{t(-HMcLh;5age(ZE-Hfe#V&1H-BX9?MQA2xa#Af2b+a1RoR9u!Zl;vrUtqhNdog&I1+K z;nnD!#zb`-Sh#EfG7niHCrbj3)Z$q{Ji@#S3-rQCW;3dvFwG73@ORsKk@7u})4Op= z=RGdw9lb@QuqHDnG_)QvC@V;ob*gD;OS|XTKT@X_fp87Z#1CzGfz(^stup@H%}`A^ z!x<5dzZoaSGaH&`6=Dqw{DKKY$0Y1!EIr7xl1tN;$utF1p-;;vJ?Kjq5Cm@(haGyr zU-0LpFM4M4BGJx@(qSr$!W1Y+%C}>z<$}^Tf*dostixJC?`mPu+5m__%u?j4KYyBE z>WeAB8&}p9{dm?g{h(Fu)Cm(yNFN$l6~==jFMloi6`U9F?c;q4l!;Ai9>iwwWeSTx zNse{|X@=j#mQnK0H_|UYwA{ZRAX>U?v{)%XLaX?DY%J8rb&^7Z*{*#bG zTm1BmS#gkVxL zAkTZ)YpCu+pB9Thbqf9_{5W6|7MyTQh7d~hk5M?2b`{0|RkPMuPy?;nLIjd4r?!zd zlapeuB28X-VQS{wNLS2Fb~8khq^3LWq1P*5w%TgA@n}|{hi%N7N>k6a9k;NUJ>C?k zuH5KMR+dZu_$}=2I(A;6MN{GKD6A>CR$u6nPy1yqbRr$fv8qG%Gc@=5ND#!)Hr2fy z55cIuGVyV6-H^N-P(gcH2u;6NrrXRw9)}ppf3&U)eA$}{RwU>nwb=10Ynh}kTabKZ zo{c3hn~MyzdIL#iPq?F=n}|!4`xx-5({y%)`#VTJ;== z2d;!{472_y9rpn-Ud7!t;!F@0 z*6f!s%67-+eIGgrlqOHc)M9OjC$l*XjCFvN2_SRnc%Mw~k^h9gb;|rOu86jbn%e7x zq@BZkGrD)u_krKtti7ZK3z^9sI=xUy5?RUki;KV6x7*JK6FmG&BKqP@9~GxjZlpqB zKS>v`*mmwT4xEH-|5XKawEp@BkiF(s^|CqgP|oOvE6$rk08v;yklSp+ z#eC$Bj48b0E|J;hb>dgHs0o;oIVBx&5!*8}v~jKJ!gH=IBm0rS1S;BydH$-u?dT+WoFSWP#H8?3AlMoaex<7ua)q# zlvU$};c@`zb1)&jL|W8yqX2c-h=H4Fk`mdfn&_@FHPx@&Go!vj$RuMG419GZUcH&pCZ~{JN; zahPzR8}2JhG09-FssfiDKHExPJuivJnq1559DVT2>s}>WT5jwNaBrGvCw?&Az0L*B zNjEzZn83Sh%M2hJ>Yb}uW1cc#nm!&^71s1rMrb7C390!cV0E$bn&k(!Ju)d}>(+<7 zc-fI@!o_gd_ALJ^;QlYrZ|hL}phr(Le6CTxp?uGE#wuCTRv-`9-W=5w601-%BqPgS zY0#&Fz;$L-Dm-Q@z%7xmc8*j@vzd|0w;&E|*kfv=g&h1m-J8r-e+m>b217~CVOV&! zTOO`S-UJMN$DVcd+7Hb;V!y!xue4Ee9w~)}^S@-xWI&*MK!wDc7Xt7LF1+;-8r@$A znCM~7knK>IgEek`G1{sx=k;0Mlq3CXBU*SCEVw6IyM-wUMye)wcYSxnZqL=rP5Vks zu3drcx0IVM1*Qupc&ydJ)u(-AD}k*nG3XqTWRXWrbMZ8K%t}p;KNBQ@a~eq=oJK34 z12%IxW1A$q29W)w?*#lfsCytM%ZWPvugLXNR(o<^>%zTiQk!&lOO)u9rL*4tZAASc zVv3J8Z;zk}{n((rkjbJbOyBO%w;UKW`v0BFRg9^^c?PgDpv*85$# z4kz$yS;O?89^Am}J;20aiY^?Vxxay96ay+ecc`Rj9BGXBVKsy5#_4-iRK$#`fArnj zdxU3nD#RqTf=gL@Lj(xxQT^7g&Od_qB9)LboWD-EYM6lU-NU1ucALKmhGC=V8`8$68HGg`tGvC#O1*2Cu;-%7M`7t6e|F~ zXWRP1h;JaU2vwM~8ONM_^7JO7$NC|Pg?F3(xEp{WG>5BZ{n4E52ict_>RqGX2Ms5+ z7DD3bxWc7u*g6(E{L6}o4Dv*pI6kvod#QEYtFmt0#8GPOXRoC{TD2ZW@i(pIP_`!= z?)X7vHvCq4!Jq__B1M6}lz-fJ5y-7?CEZ;?B=$Uz-vknKxo}8EYP22`!k-=sw01yg zS;fNLIUGc_cpqc`B~H4PI;12K>#tw9O|n7 zI-o!ANOlG_eOB`1vb?=F3K<#9x*-223RM?`jKN2<3{;HHw1! z+q`y2Rppy{ksjpT4E}}i@Fh5$nVL*Q_bDFoK$X;tmMqk|f_eY!?6Re*QGd!dk)dNL zSA7#{oGdsotHIbc`11%32T`D?jTPWAO2kzM;Bc@Ns*R)a&z_I5wvi?k0L+fH+3X7PF%NrTEr&22sIgruz zf*bM@lv%+nEqH-1%~2pmn$Xv+RziX0Ul2~_=%(Itavkh8^+9CwOQg&Mfbwh*Ki)eD z|E!QZSrb$LF4M6V;l|_x-?|aAkZ;0e(!&EnR*?k(merqF2yb2gVI{(KpE9dp-Y#x5bk;>~UkTThK$8DYp$swaIqFr@5q%Ed;%gxa#`7lQQvwNN$&s1o%Qp3EK zPk7jC)xY6<)hz656mdL+nmXFpa39Yv)O#BCQCnUax}s=Q(VWC=ZpQJu1hYxWhxS z5d>{sU{D%=ilYHCKoG`t`w5B#Q5OMlg2oXxh8cf*qm~N?tX1@?2+PU51z=$`khAxw zUVH#N;0_8`N4k3W0s5=>DQmbXQT&}!L6HF9WZ($!BZdE7W5S~ z_BlpYgMp>UH&JA9haYqZ7s^pujRntf=Ab+Y-qPJLNQf9`aaf+S@F_A<%DGykGA!bh z-iaow6vqR2VZ@`8{Yw^n@03u@s{dP%^Tp6qtMs)_)j9^`c>c`l3_Qj&Sk2DBRntwc z+A9(5zxiX6MS1-yP`*0U{GDQBU)!xKEBJjbaphf%r*xX*X_ajSlyRLq385mfBrH(} zDR3+HsPPCpo1N@=-ub{0QCv(ISCYWZ^6BA{B`&40w$x&M5U>gXVci5 z*kq8xYR)$aL7spj-TazPt&8Tc%5E)yyN-46YlY+O|GwzaKeElfoAvbT2J5`wFQOjs z%oUG(f&j8X`dkP#PM@19fmi*r&Xd|wmpcKhel>{oXwLPh7ahQC+92yW66MmOG?}aJ z`Q?`x_%_?j@e#$>6@V+%|3(cm&v8u+RJ4?D(nNa`n(1l=J2)m&2XhEy5V>zvhK2KtikA&M4gSTl^xPB3I zGv$#Q4XHdo^Jv*&lQ!Ss2I@|9T-rGrH9S@lj6l_$oWfY4?T-v1SapkXb#zAAG+doJ z#22wL#8wl##Sf1&NIL4WfmMO2vYl5tSG^YSB`(c9PS^~BAF<6!L{Z$TbPn>wMApa| z+?pU@Ux9nAro+~GL&h;JG7t(+?O(-|9K;|+PRHPRdYM{P4O}^x$J&!u;Jc*1PiF_? zQ55t@2Cpz3asGd59XT+EXv~#}OmbJNEC8}j|Fu)p5^ZQ>;PTTx4cfg+JVEz=3g_Fn zg0!0x{7beA>pH_@^Tav!s^$mb5>QTWM1&kA5oAO@$5E%rGTv95VE-NuFT|wFC~Xo| zW8ltL4hpWqZAg8OqcUUOP9NNepW=T3$MoqXQi^%6;Vp@Rd&gPo*2x_WtFyVewlBKF zcBO^QpvGd;XZRmy7khoI_Au&Y!eS*_k$%v)!EH^qeEaKmr{oP94M;VP7i2tyF$w!g zrFKbFW1=ysSZT^(jj*d=G!QTm4X{{I#rOI7l8#P<`(se>7fuNy3FSnD|9GZd#HLXd zgWNG9riA{m_V`y1&? z06Uz=4E)iRmjd|??H~f~wHxH69rkgtor@l-RbgWxBq%+o3MgcQ^}##~ZQ6*hl+KEKl|2c%~b9>uMSgK5;R(0oHPG_dRR% zBG$L}2eH@tP9yX2joMonE`)d;Pk_iF&3U{jj)+J?o;A{wMTvN8x1pEw5~1M1xZ`*x ztV_qippX_I9A(_(?$V1&h{1EU$X^DmZEuwdm6_^NuA_(y6N8d{Shh~$?sh>wK!SzH zB@puRAt{`k^?7T09@25W01~h@wKTE2*W@>D{q2rY3`7=C)(nK?11AA+V5C!1Rig6X z=1Ol3h#-x=Qp+#^)*GGTLKY5VHU4#07Os#diY?7laX;iChkg>+Q z%&yo5s@r+{e&{`HDn3hq3u{k4A|#Og9_*wpvi;dFg@{i6u52Q;M+Y0|;ml$mH;KrK zZw7eBdN{qo_Hsv2W9e@^xc>ow-nyu5K<>vEgQ;&nuU<^Le6R=Ad=0s9dOFfg-@AZ}#SeIwZUqjd|5IU}sC z+D}0`XhX87599Mez_R6-6#B#2s<;wNP%0+@ON@QpWcBA(&IMXyBa{5oKH3)uM?w^K z<2-pP8eC)2fcrN9BzEO8_}#CKpG4och@a|FNV@X(IxhTO$`47W$SV>QP+4|?Ukz>X z5!Fp-!2eoOFT|#vT0~&^=D}|?!#Eq08FD8_Wnxi%=3q;y%26MCiF9gjdysB=ZDdy2 zp31(^@0SeKB>2HB+y?#+z{mK(<>WO12AlKJueR8N;5jP}}7fTxqjASKvNoj@#f}Ek>0bFe(O3O8QAn&)&>Rj7)Sk;M6PE zCq|CMl4Gx8g9&@N`4N)H)9yH@v>Y%VqqH8jc&e1D7el?#PwRv27^D%&K{)zA`nI}- z@;aGqyuGHYK!_#NiS=}a&{#!o4V-r!EMej@H>ZCd_Rqn}gwb5j85?I3EuCx1-1(LJ zT`l$9esb3DZ;tCj|9!S6`Oi3m``&4hv$kBV9kP3SJ&GKmv!XIafdqlrF9t&?G&mJ3 zsC#+ONAtcv{(o*@==ai}B0ENE(t4Os*}lq>b(Y2;(J37QS;*}*OMm72Z^Z$z&G}geeoKk zN_tEux(h5R9<*W~pBSW5)tYge@#2w_q$%t+O1ozS9O9UsIC!Kk^zImK*K?ho@D7yX z?U+py1HT+KKP+#gm$2xkRO(=KQPyX)hsHz#JB~+`oe^?`G;siFmVrC8olyz z@}0z0i|9^Dow|Ca`<8@$V~puH#DP-R^@gWq`njleHu<4UhZ<;89yB@~W#v`i#xYh^#0JaKCvMV_45Z50(?N>X>@QOERI_bO0_(B4dw z9JNu{g{if5gEXp`q7a=V=Zra6Q2K9mT2sdkP!I-{&W5-kjTjHxcGw+`#_}2#DkgTcea_?Nn$#%mPrQ|fd+6bD zwe+4D#;Qt;ucj8%#d$*s?V2CIOx}zJEFN!|E6A;q^O$K93mzusqgC|7xgw|SoaX3z84UuB4_T$!=#-CKr2ciu)nd+xU< z@o~qv0ZK7zrE+omSbHoHRu`YSfs5);PQA8@Lp*j#xf&S4F}bj~VK0GGlBUBDNaMMG z-$_$36lpjgV$3nmHigQ6*14uQP%))&NuC3_hSO67mX0EC(5{=S^^xX*iMtQrN&WCO z!{=_e(Z;03)s_nf;EC24j(?7c0Z%v*4a31`a<0SoY(JUo21ZWt!Lbj_`A+Gf1F^oO zSy?wkRv-nQ6=-hLpe>kX!jrbIw#8?dPW%xrg>iJGh9dsMK?_ zoVg_uW0!)UD9CxeVo89_tjPC{NXmqv0LdXE$#jR(f@={xgJsnh3Hhcs z=g;Xy+$<~15l{!+zEbfX%YG5vDR!Su#=%g%w z1!?wd_5zdy`D#m)E;Nf#NE_ISUVh&;L0=VH`LuuK6BQmuAXG^$gNYBMnEglc0#tV* zubI?MhCEfjAzt1?F0s|raPSZ*%HVnB4?Esel?q-;dSi9uRy*s&u>jBd;x((&OpjDF zz5ep3J`V>-^rNSq98VdQRnNU(>WiF2TI_0m6bShi$qI4zr<^=x0}J-O&M**&rC%wY zh_t)Kcd5aoGvVd`FwE;;4{=MlDFa3~b16cL^ID+4Gd>lP0@_1LY`*3Z;Tevmm0cut z^%or2=C$nqto97N7Ru=2=~Q?Oq%fE)grpG(bh>Kns&Y!dws2c0QwCo{!Npuo;?s^h zSxnYNzmmjpflS*kAG+*Y8)4QkD86*#$$Mc-ma1XM1Bt=3z6t@Wno6A!|7nSsf6m#D zGm(-PbkG~zt`_H-S0xs34E$pkuf|O>Q+SU$AK@?`{a7kf=O*5%ll2UV+P_nkv9+;{ z(^(vKi06QJiH|u{Ix`CnQNOjl8}P1LoiVi7?Fx6oSQZq_zayuS?K2WBg)1Q*@C%s2 zYghvfg`P^fK~nOwm4_elW`Iyj@6iGgfC|EUeIKwL7)k{sL7#&k*&TGrnOIcewAPKj zD6vTB;0fb&+x{F;6@g4&$2BgffU^UH_Eb=WdGlH%?T(3oGJ6YCMWo0m7?v-7;;`t$F}|ysdI1F zEL7&}OY{pW4A}NRoZG`Rt&Fs zK!EH?w+u1~ZCux_xb)p_z0%PZ;h3z{CJ7$ej4SCTYIT5El4-Wn8kn65KvnXQa(nH7 z6>4R1=7P9H0g~IXB|8D)uhJRYk7IcivqT(T2899uMdYySX&_(oMz+$m@_D@(yRpNV zcqgKK1o{2JQky4AXoYskE|i-MKpfSh7`HYbf(u`Jo};PSgStjeYA!k;z3O&{MS1Q!`oWOa&<>hFTZ5SlNzB)Fs}9OyG(rA6gqQ zuFNFW0-POSm5$7M)1Un7+VOeI+;rBGF{cys{>0=!*~~?N$F4b|8dMM8(UaeSQ_CUB z1L~|1)0o)rWd>Ie-i9+%D55*UOT=dObCuM;+^fygztS!r-6tH3M1B4n_WVvT04?e( z*WIM4lW!>H_HFsA9XJf#K&43}dz6AnYSD&hGT~vj)Hw_;7q9yv_=^k5_S&@cO!%ZW zWQVGr79$LC$f9mf;_5sYIk~*CLo(`Tk(=q?uCxHp6*b)5O zRbHJ?TJ|e6tAX2&V$KIuAk-?6k)&=1D5ybcGyEqFtJrWwFO-0;nUa~C2w5+H_1Ir? zT=IG6$77fFwLQA$*07kc`TGQAZoZy$RmWf?3CPq(wqI}Zz`HvgKTu73<(Rf_G4=mr zcX+3&<1J4cxpaZZ26D~FUXufa_`M0&F?Jc%7m}n=PocNXZ4)SG|kd^LKvWtYF zGxD!cYhlE;q?-&f9k2E=V5d5jK~vQpk{`R({7&7d>XRF-UjHqTgKKprN>>h8UfZOE zkVb@=^J7vG_y>@>kJVvsHJoPwVL`rYO25>sH`ZI6FC6}A3ae!wI7u0|WUAPk8LFEo z9bTEh7rLC``2xsFwP_7%16f5bv8mb*h!Q z4T7hS-?ctDY$=K%iX2yP!@z*5eZ-hkm`Am?2ywm^?R9W-2NOy*+uneU@}xi2c|JQv z;1}a+3l?5E;)?^00p`=m{@CG@I(S#ujn(9kDaGOB%8R%oUD6Sd-|xU--rc1{)dmBx zWF!i%>r)DW-Gin-GuRO3EKTryR$YPKk3gVPn|X4YUec`B7>k>F>AMNBwUSq$;W7z%+0teZh)aLA-kl5tI(4G$Tc} zmHf-dD(D~kx7~CDnnwi+z=Qu3X15+%_g=D^P<69A6&r_Y22mqlsP&cNN5#l^As&&I zOIR%cpYFLJH#IEDKzDhMF%I~L;!uFpz3&zNbC=5;r|xWipUtk}%J z*YN-%*Bx;6l~IN(u=$sKrYT&nuy~k6Y&q}owZQeG23NsSbOlch<U2SUF&yXJ1j&ecZ>k`%q918Qh*o5hDdOTtXz#oB z?%=I4`WSKc#(9s1sP{q*=WChrKX|s5kf^f}HrjpIDaMtJgIJZ|VJn5N)^Lz@VXjVY z%AZDScsvy~yzD@EAyX7cuWY|4^gy?H=$L-(pC~W2G2Ig;}G;RflsMk|A3a!h+d= zAl%NU7Z5&BJbg%F2=82re$p0tlQeS4i;m6J(m`fu7NGCvZFT2o4_LR-{%4?I!i%s=gNmE zm1oLMdktG%t>1c}3tOYcwoafFH0ie+9-tiF$^qcvM}kU%PsJ}Y+S0qwJA$V!oK-M2 zm-}GRBi_;5^0%*#E5)}6YqkJ@a82OQq2Y?O3qkLh@k?>xNN@aSzd6FkUJ9~6(^&%& zz%GvfHQOOW&QK~+SjFwEX88{gR1BTl!ze?4C}0Z!WH<%QLtnQA8ves8!Kl!6155Q9 zq`N*|Y4sfU7(S5ve9$8d`d1)%%GwVi3;h&$$Ar*6Y==TZ9=IwuL%*f^dCgHwGB$s0oB!0#AxZg&7UeuFJ5f1*VU zKCf|YY^8Dz`grq{vRULfrx&oKK_^`oJ?eQh=hJ_N?6OAqu*s;Ee(F;IxoQIRm9vRB znGL~BW+pM5musun4aPb_6((NksB$1elH0ju?LF&v4e>FJw3^4W^iEZ#3nRF<3-)?L z`Pu9{7G~Ia|77aN5v?TF0mUW57I1~}-=NO+AawEVIK~$rB4~eRnb@&z^f=*S6Q3Ur z`2Ko?ch9?P+Af^qG&S|vj?T!3FOOQQ-RaA{xp0=JQC+uqZhE;!Mn=vLqkYm z#>P6UvsefGQ%`U#;@savs;iXYFI7RVsLC$Y2vJtH3h*dY_bE;N9-G7oj}*QQrRI+x z@SSf7dPf&qJ3%PUu)2gP@&rBqx_77D$-rvHWJliN8hUW}QO0UcNdG`4(?|bs;jW=~38YFn7al1+g1!VF%AWj;r8bGtLnNIiFCVsU zgYfWvoo~6#;3dq`!9o$6px6AG&#+0}^J4Qf!!l3#MTUFff-SzTg?9%S#n`U=t=vQu zH;z!c)g|~YF`b&Ib9A7Rf{OBu+O(-=h7SLU58pdMN{>)1!(pA zV$hSw=d)UI>-V3Vn)>i6=${JnmDIU&gV@~q4Y;n$cVU<;aDhI8sh*KA39#t61E$G$ z$|*-(zQ$-Uk+H1L%3^$mN+vvYR+VIPMWKMz zp|mQbL5&?HufXT8$-wYL1oe}4v2t3$4dpRD_e z-A?^&M8;fi{`J~0prMS*Xu zp#;naAZ}@Uq?SJkP*@SRB{ey*5*r>(h!3QTjkGSZ7`4Qcgn~78FI${5;a_*_0rLz` z>3+BR$6a{0FDUTmL_F($pRO3-_~II)_|g3a*}onc>T?XRgGe?UOr zP}4Q%?@c#j9j(L`5A;YQxvl?O1{!&1t0de6429Gn zvV1;OTf$=d!Kqw63JUCo7L< zsFZE~T&zSAz#z8kCBKnZ)wAd7InheMjR3thI|xcoIl6PwLi3D~q4*{Vu=`J_W5NXQ z(|W@vsJm)T1yu@&p3O}q@0(|5rad^NhI+M&F>KE+n#<7H=Xzl?+Do_62=~80yEi<+ zN=1oS3INC-lFcZc0a&^#ThFAq3M=DoHKFlE_^xwfRWpTffA+# zJ*iA6lD37b38W9CyANs3qofLW#T6aQ+<74CRwdIwf|nvT%^Zd0SG zCDu&khR|!gqhhTXLm7myFcewXv&>;t&ZG#=L;O<#6p^UA$A$T?6=ovdO_8q8Yzg+N}rBD6k>c z;kr|mhzbYM&2t3y-lcMZh%ezb%oagjw-LDQ8xls1DEM1rK>W-&T|`9|sE4?SS#o10 z3CB}eFcooHqTl}YaC5l|fwD*IMhaX`LjmwnHULvQ7xCIW{*O)Dld0#98f^MkiM{`n*JXTb+6W{7cFrI7=y-brOYgiL$1zunbjVNGV|pJgfXSkN zn63IaW)Zl=g6(J{F`1qpV0ND_wK5`e05MyE9q9p~9?RPZHS8Fvb}8Ni;Y6tUH%4HI zHjB|uTN2s6{vU9G5Yu2Ifq+!r!7|LJxH%Tae=?d zD*$7zMXLG&;$T+ezN=}J>w5_9Sa4L9?=--Z&s+0>mVat$xzY8pd>Q5(+G$k^qeq^5 z_=>Ja{iDW)>#yC7m|HLrT;^Wm%LyQ*0e50SVN#km`O(;SS@!tperfdRu{-K9n}WfG z+~G731=g#*NqvFW+Ub*{)*Ll7AW;~yBkZ>&iH?@LpCr6{bc7}YaI*;^wf(G!`G zTPle7Atlevu6TW;s3Y5_jb~Ijs@-PSvB=DmGPL~y`^u5z_KP|>rPqD4{Y+dvio{KlVG7O>s zF?Rw|C2Ar`!a!upFz}YAMAx;Y1W;EOpbf|s+>OSR<^yw0>jBgJbq)J16Z9(neLfvS zN+tWhvFIk+$T)@{NM?DvAhkOAk0-f#>oHOXxIGc?k0ioTj%Pf>DiQT==4a1evx2OFS-T z+Y*uTy6owlQ&Ha?L0E+0@cG3ZK^d+zzR-VIVB^yORG)+GC60bMIzq1*hF6bCgoyiWNeeTo8~b_s zS8@T(;0;RVjVA|#_>^dG2F>+pEkTf+V5AQJNe9fHkX{4; z3~Zwg+H8tK<$xc8Eg!iY#X(5upoiUQCaFJm0TUc^$=ygaJ^_SVVtq1I*OIrWr-2Kc zRD*2va1Su_Ab!RiUfOJywhd{}&WcDniX~s%&7)tA8ry&SyhUcS-3b+dIF)*ITdnR5oLaYjVz*8cyvq@?xJ=EF|ynDBvZ}HGUpj{E0^$xQ=fS0HJJ5OmeoZYMvr}%uOQk z^Druq)_uzJY*yiE0<8%#Wd#yXblqluDQ-hf$5;dI5IyO73QbPdSc02C&t?tg;nebd zS)YRj=nbU2LFuet+9hR0!i&u+hkrb><4!Jb78pw93y8AYBMW*`hVCg6wj4C8;E?`q z4jOG;U|Ml*KGuWWHgmZlQ@P%^V$;jk5!oF(+gv7NQBlkegsWc;p;7Sn6%U~xeq6CX<&kPEhZnQdebmyj8n9Tcl`*HA$cCS+;mW2Rzu zGbfz2!(PXTkwRt}s3l1wZLLaF0>h-l!#9-fu&H{&ruMSNLIY(9p;s^2sHq8SlU5K0(i7hP``!|TcX z7UvR0r=@5F)IfTDKGI*GxNrb*)x*!k{I5HTCY#KEbDKh2v12d7ieYt%*ee$? z-<0tG>ly^0>!2iNYmp9)*9=hTLyq}IwAn!$l842J_NBY}Y6Ck};iH$Qm^IEiCd*I$ zUZ}{X|8?92nIBp2i}lYcYnBD3%#2vMFi^~-31lOi6|(_y+w`D{w z>qUaKt{}a(xEgU57R`>u=O+6POP)AMyZz+2Mo-Ks2p_Py)1ab9o9jMzGpkKA;bOED z&`QmpzHzcilR8MFw>630&Nr+969b&J4C(o8Ef|+m;bo&c1;$d-Xeu+sRhLNdh~mBH zxXAi+VB~3rV|;umk8+^@?Yja)u^Z|kc!#Hwh21$p0q!bz+k6U;1(1Bic1;RT{I%7U z@F1oAFKFgX9rh+*Qzc-T0w>2w5r|XuLcfagHe-x-upx3@-+H|n0Af4;_&Jd-QTwL! zXfsc(DccJ!HE&P`Hf3F$F7G!mO%rWjLER_AiP5)rKd2_Q08^X@yBJnJP! zZ6T%~?-9-Es^OJu5!|PG=KmfC)EtPR{f>VnLTYLdt1o1g-6FO|;hB@86<#H3se4cg3D7|#JlB0cHTCkR zZe}h_1o@!GLXp0F7sCYhIOWOeE5|-$ZN~L!hCp>-IHsHI|F~GT+Yv(UQ0u&JuPOj3 ze*Z@f4X(9gGw1Si9+v^P21R*6ukS_MkKM%=6-DrW4x-N-h53zxj~4*QbcyR>t_^X;}F{e zz=da19nDnUtzbSHW6AjBvBJpiDF(2f7cC}Kal&`}To&$Y2id*MVH6MC#ZyEMa6XkT zJUeC`RMH*<+%=i_BAyOWwvSUn1i<}g;Z>JcyMT1W+306CuDw7>2`b`MjsCeF^m-G+ zN;HL~l&)r+#)lLFS1i>7{G*vGMz2NBk)dMf0DIlxJ~k{p^lnLZaz7Q@%QUR9yb=r| ziSLCcjmffkxF2Zfo#&58%jb)&6l+s>2_{v4u^3`4jbJ!dTs`j}kG{=#f?_7IO2{wYsQ?yr9)?`W?Y_NZBW$MjE-1Ow)qyYen>6_U&*?KA15#xQ&{eL1U3FYVHH z0cR_OG3%C~c+hj5mcVm{X6Zp;j;?^aFSL3gWtL&V01cuX(v?J1Zs5gV+1LyX7M69z zCxts<8hxg5JwY0zVmM(idkw?%sby9BH5{Evf{_8ay&}7^FIOp$sZlxNNJeVYDy-O? zgtX~;9)uo(#4d(?dO+_5g`Km;q(Qp#4NJblRvXW*OIivJHRJdz`np5+J5~(xpM5w^ zWxi<#8_jG(alW^vQXbD6o8#_K_} z@HOI5Aenyr!T4hcB>pgET$D88IO6qN6a#;$n?ja3cwosMq)E{NvI3FLgbZ~(m0V$U zqU7$-AuA%3!6%0Axz-+z_+kVTG|dSK=Acp3npwq;<)5nD=n{U|WU$ExaSzK}*<_6X z!TP?}XTJe{g3i}_l4YV^-J}>f6PPQSb*V;uel7}>Jl@5WuLH(MxU{B41Oah9FH?zf z(J+I;`Y&+(pRvLbQiiptct#WXa3Q0cwN}Xj@dD`+UmeOoP%A#v{clG4iy0HqZeVkPlWbU0qOc@wWr z#+uV9QhSO*{GDx9%L$`ACUa;icCnP-5p=V@vcJ{`t0&EFe|jF6wdFTR9rOB_bnpei z5IBIMy=f+3@Cf~~6@TaiASl!0DC$0pCo{2?) z!sad(QqMW=J^9DIF_nu{{k+q7u?N!n60)N3%I7BF^#e_YcMP;EC|a?Xo}>E-1kde? z0K_{Hllx*Kt2rj;v=~D*6-_)N66S>=A@mYBv@C-*wp`_^9^-$ya()F9a@2PVcSy}> zk1RNj(Q3<}@FQ)k)MyxA)(HVa5AH9rMxp(q2NV_OBMVh+KiSLcJ)PK!1IL>#lSKtf z4h3dzN;$;h(h-7U#%=#Kp-+Mi9bYnAVg{01U7OAk#t7}aBUu{7xo?dC|33i0XB@aFdr}%9*KVZ^0XDp?iuyr9fg7TKPZn16F z5!&sY^?dg8=d}vuzTrd$a!{s?)-2IXMGTKt#?Xn(SbxrOfSt_f@>{qvL~o7i^5i&5 zeul>Gvs6<&-d8f&-<_tDn}s5ixMs_V&I)%e79)%1{EHN~i;)m&^6{D1?5Svz8Zq*z z1wiJUoGAhs`aE&x|H-PGZcB-CaK{X$rgu0?n-w#YFH8 zen>+(bQklmqqH*y2u3?R;v2n@zdbuRTtEKNvCaG1DClrcX;EzHOucVJSV_V<{}8WY zQ=5>K52*uuAS0T_&`nF0$J5ef`dyq@d`<*E{=ACrt9KSrvN%4sS{O zy4@nxHNwK@aJ|#2?k#so3;pQN zq0Kq}UDLI8j6MmXA%7B+1!N>3p>yEB!tdD~0i|qqMpth{?gqMayE><9ZoDZXibaI@ zZ-6}HaL;sRK{2nf$Xs=Vx`11T;!iXn(kX->U@}-UkpmR@T0X*oApljzxTP-mwP(10 z;~denD&{YC6oPLdjWnIT)4oh5ZWP~*(8Zr!YZTwNf& zN?x3{imq9(PirN7Z~Prck4`sEPJ86lML4q#$3;Na-56*k765O9<9npyJiGk725e(!>lS?SrB$fSPtsG^4b65 z75$8SR#pKiv8Xxwn(Y6ut_B~Xj$nm!YsrM78hSnxYeVb`H}Ocw!TRtsAtC?^+?4e^ zP@9iG352N(55O5Au+;2^ous|@XoFWmcsru&cG-HgcPl55JGY_eir2JY7jt>xT%5}R;;BF=>zt%L4tx^bE3X?nzZXPmE5Ax~v z%SM29&z2u|EF7u29X!``kxP@B8r$n*N#sPOu{(ew_1wNHt(Zvbvd=9*?k3zsJ8Z`N z>}xaEbvFv)`kJR1Y|7vnjTn^jNbKW`y~fI@B0Et@z%!qS15g;<4Q{%6iEGP1g$Rz@ za851+EZe>0zBt~ShbrD8<+0xh?&0uv-H5-nlFUh?5d@B#L+NS?1nY-cQbVzND_Z&b zD?Qjz4Vz;xk;B?U!nleK3b6KC!{(-3)j#PJh1wJT)2o=;QYM^WeWAm||BgG&jGpn- z$krh5>vK*-fIC3HRcVN#D?=KnqfgT8eqDWYS^Ec?0Fnfl_N$TwY((6{m-h+AlH~BP zMo!svb+Zu4#Mz+6gzZTLbh5&sC#aQLs|{BzzDC?;?;*TNxqS?xcI~0LD^I z1vX6lE%|5FUC&0i{KZ}hxc57r7b3EX4pW}k#keQakdgxAqyYo?ZPcWfx6;< zX-T3O2d3;vQZKOFHN%{0fwB$<`)cRKDpiNo3t4DcXYY@=Kb35iyq<^zB~2Z6r;OZ9 z+ICi{Z{cXrwx9G@tglb+T@_P97|;@3v440^u+FJM14-VJH(t-bS_(TLYsnkP^*myb zL#7?ndS$CpT59D(Ree`*h!FV4SuZ#QsaRfsgmk-aj!KAgwc8L((5ZnGyhxaKt%XL* zs*6eiMR!v(@2w1hn-5q7b`o-Q#to4Ygbn9?cStK!_;;dc<@^X+PY-AS#(_z_Q|Ks8v*aRQG+MF;yo)RynVK{>?w{E?CKm0z0SE(Gm4JU(`#ADO@M?3Z&>v%=-5zSR7Tg4T?hi?`UHuVnWW66AU)Od z>}5*YLxvOVY=<7c6*^iUYz$sH2utR{ZYWmF8a$`cgB=zUyKZWoQGbBEdhC z1XyPiMi77G7>i|Xz7Dhv2+CV2kgcH00Khi)-^a1Mb96Wg3p7m_<;UwOQf9#wKdlXa zTRYQ(0J3BU1m6)cN`*r$9TUGO5XOGsYCo~L9J@O%_)pWuf5`REx4l^$LU+T7+^A7- zzz)u2#T@;}s_9bFrvucedrS1WQ&w7x0<3YhYBQcZdnK0@%1#~D`&~)fV!4hnb3g#1 z)FTnGs+Ga!=R3Hqu#R-_vYc-3%Ov~<2L4$?zTP%D^EeIY=E=%jQ1I{sH zI{HYMVzqBl^(`9H6_M^TVA%)M5{uU{TeXuXu9jC#H2!@rOU$RZ&>J?H!VF zPTaNm?J7z~l~E6rgy5a%4yVUI7^B!+qK)n$CQD(-W ziLTy9j#NR3&!{Pw^!3hhEA*kRt)(R;1FD$%X*5sx>f&Wigm$4uLLG``*2p)KUfm@Y zn0v#@gLTCs#d@Nm`tlc(C5?i_A^V@S6J7XPj{Hp6U#L}#!w++6X?70r57QK4e|;kH zpV(z~tM*B>Oca@atDQk#n5>R?U70sl#X7CVv`}-0Pw=YG{yRQVnC)Uv`K?|= z$fTBU6!0(MM04{(lEm0vy$sr_NgvJH9?7bhrf5aYcHE_D0Fk{Rhb921wr+7gRJ%LL zu&vYH}Wy> z=2)1RjXBJCWW7SDc3>kXpBD&jem#8(Bd&BuDF#2rjsUOjovi8c`LN+uut@f{?lisQ z#{~+s7|fJi;%N*(9Nsta?{wrv<7qg6DE!yiY|<)2r#rIPB{rb)2>0@C=piUN z#tWugaM0xGZJw+&*h$oc589SH!EC9P)zrS;<0N}4a089Y+Vn~6fF0M7UyzvU?Gsv#h18D%j$Vg>!PO%`jmUCCWhKsXAb3f&7wdh__WAMqNg9U)UxkiC<7 z6FZPTdhD=cHEYODjN06SbrQ3X4swfsgNnyizJcxVdi5lV3W=blkWC-!(49T$;rZD{ zfe&tKrZ$0Rab3ZcJi4IH;NTV3>AT(Q0uaJ3Qc0q%C(J(4$x9te$HT61x>BW9AZpEy z6hdDf*ys(*mVg+v%gF*CcY*DH;`?0kUuC0*I)(@Ti{xIG9Y+JnPjAJ=>bEkm-T8_w z4Uz`@!;Hu4t{lnXf1hp{tXEYOIxRcjf?n2 z9?v5LNf}l_Vozb6W)Gfg9dGsp`cPTCAp)Y^RL-o1(2uX})T7Z)@YED=ysi8+)Jj)- zN9jwEvFi6)Oj6Bvldw42n@NIq5CAA8!m{t$77Y2fnwD-fGxjt9y4Dh1tXjOe;#Ttd zl2EFh>r`U7sBVxb3Iq4Z5CRTJx;`~8T@tSsw`JuD(bh?_nOS}9XqApC;+S$rgrEy2S#%y1`KN3PKzz^KY*y; z)%;Gzb2Tv~_EzLw1LLgEpwoiD(Ifa&4{{+H57uu`BIAK&UY=zu7O;I6UwCXOXZKJL zp?EgM_^x?(S)!|v*ZchNZ~e8_#nrXfhbZt$iv@3BSrvUcB|aGaw~Ha<%yVXb_(LR^ zqD-K@sqY{^mU+FDs;ei{Dzknuj8w-_d{cPl$Bn&_2x<`_yE+bb$Qx+2+ep{>{b^R9 z+*(FP%A%F@5<9yFBQ@&$-7qtN&{WeQKcR+D|8;sOJYA|wf!IC|7h*y!{HI4tnQ~2% zRw*0#9$9>!M{qDe2hY(-Y;R!7X;D|9r7Rid#*{v}8;%fXWFgQ1qD}67ASk=UhKT02 zC<9U5l>w*ijZ;1f3?x#69;LX}21aL{^TbXBMsG?&7l$DTc=ZD_N2=J!S^1u*fS^pC zKCUz;zPre@rhu+ariNI4U|>0a#h1?b=+_abYsT~YkiQPkL?$TkhJGRO=T-3@j9jop zIvQwWA4U|3b>N+hVCg;xLjH2Jwq8=GP@ccV-V~6(7{g=Q)hqLP0&9L#8E@~|5cuH5 z`!E1$R|a|6Wp|UucYr!dnE^ts75+j=O<+jg?n{NtpRy7SaQ9vU|EOvI3JiL^GWuvW z9mj`9T_wge*AVR&PRgIWanGN7aLT8!Qs9n9i%a7or_3h4_%48^ND;cDn)<;%Cu8f( z?v^$72DNRZ+FD|q=-fzq6VP4u_`F@paX7*548k{Xm#g<~(PJbH)RWDUmiG~pL={%S z*Xq>`)Vcz#fk`^sq;2E%E1-nV%anVq^^Ls!tBUSW}PiM+499x=j^ zH~|+7kokUUdEiq4lH@^Tlh#9aZF{ zS)iZal7|pZvqNw9sx|O)E3Q|_i(nbkcVTvN$QSZzyr=$ zWhE$I^S9vZg@PPp`$Og6_k5Rox7|KMGqy!Uz#90xpPZ_NJx(*ko3E6%GX}wPhgNLE zZ+MXc>qkm4HR_jvbyjdI?}@up(lc-pgTXCe`ss*`^m{Oq3qRI6B6O_ z>j7TN7RF1pr!B=~g&PAB319uHCZksw+A?J1>i(wUjM{7DXs~n;%Ws3id`ZUrEK80J zXH}37x^GT|1hYFMBRV$*sqDL6%7h3fAPO82L`p_vIu;I^y`wFrq1KU5t4g9Bkb4DNzdY*W){8 zM`ja17+XMy{JVY>NqZVwN)GO*EB;U6n6nD^MN3sw>};8il5|ghcA;s=`bx@?bHk7y zhb0A+oTjWvYUzh{)CbSE|85 zU^lH0I8Wklkwas9hZkrZkW%Y%i1&fvI4s-dy{)G-P6cGLl!#x>?5U-jT&x13 z4YnI|D4<8{88q;P&B9)ZDaT*EVh9Pl}FIW@fbR_CYpLPaA0(oB^GE`WJI6qm*p+6y5j zNpsadU%LjSD?X6YCJ39h1@fFV=3PVpyl3)_onDNp=E?Tzkd17<4v!|#kb)mraPPc_ zJx|BB>AHWn#b^~2mw5EY$N)kSgR?vf@bQ@j~{D1_zj z)WF69$fPjWJ+Gb)$4<&(XNd7x<7%>X#NfhHR@DBYEyo4#FMaqsEs{&xK}@|2|kF>7q<3 zDwV$_RoocT^GZb1GaAjtLVv_JW06aZ5|gRropYt+f?Sid0)a4v48X+?`0k9qQ@J4@ zEICo+0%MT}ZZ=>OW)uOw0DxG>Td8->5(Oe8ZFQ4m=Qcd^Y=YHCd=45W3w)CR z?_c8GQpI)A6f(@sxzkqCnS)ZwiqXoce&vU85&!ELt3=wxS8u}unRS{mPs}=sc4Yzu zYV#K>YNXq7MdItj6HYB5n?W7gnLO;>L5$gbN&w}q>5o1Qh%jZ<0#cv!vzt(S3Gsy{ z#cK1xu$1MlX;S$##4Rw*mimi4eQunP!DYCuYAvXmO{344S{|w98+Fh>LxQu4a-fTX zN8n%;?Au%DKSMQ~GUww%j8YZsF!=jtSVZbQqVnVjdjc4(jr0_0IqfhV3~&8e!04CF2ASqjr3CbJAZkyC}2? zOC;MHxJ)M{Yo({f8fffD#vTibszH2OtiIg8l<+ve`nMkyl84go#lNG9@eHRV6BS zQ*NT~0WrIR=HYn(aSd-JGU#Pq7zqHJQeOQR1Ou?a$YCWr*=hFR5 z93w%sho6}*>j2zHU1PD1s=}7Qs#*1)B)dq#NN#^4jtm)=Ns6@|tP~~k;!tNn7Gy{OVGlo*?dz zsbNOIlVxPV$BA3=XcY`xVVnXjLcV-$INO)%4TGPz)J1-UZwXZ~d2ts!V>THgGUYnP zQIrGgBN`11OqdGOrycNsyuJ;>6%Y^T*^Hr=bwDps%n?+<&-&S@=TMb=m|?DjuyP#Z zWuv!F7b>XRL~I+GV5a5H5kfFrDeK-TfL@KUcfb}NY8f^{ww*9rI3%hlq__aO*LkAG zp9|U)Org*t8!cN28Rn8P4Z9+Bb4_(v9}ga^Z@7~QwY3DP<{TIKv2y*MWJO=pcEWfVDsu?xhLCNnt*Mj^cu$Wf4BV*a0mEngg84RA|z(0ZY_@xFO`^n;- zIa%P8*N_nO6UQzvXcm=irdJ4Kx6yS_3 zu%=CtT$}wGyRX@55a5$R4e$K39z*haS()HSJztD%Q;h=+2bz+zo^+8f!lh3~mu0^m zi`3PvnSBlKN5oW-Vv3G*o>)W7Ss={9ar>$#m*6ix;>WnJG-l~{KyK~iF;T-V10JjZ z7D@A<6P7F5(~Su92!7d02*91A7RNmX^IX+wuhvZ1$p|qb1>6_b-H#ycpsAHl2pksW4HN*H zl1-jMGjtnQf~kt~z?sYZE%Fxe;uMrUXsPJNebq>BS6rkT+v}2bs;L2<r8V);qFOvBBPoEFzZzEm02 z|8!|D_Cnh-O0YS}8)2hAkQx~^*QseCwjCJnK$B>>ip_FPv>HaWX^{m3U zjtvKP?_r?cHa`Q#Rk0?MEEC+$rlV$k7OSA#?ZQf9$+4Vh9X{&AsNV~(C^Ewtod-e; z({QvESVtQ)^%>^DgnB=pSAEr%AzE$sB_IyE_$aqdiO18@whO1o!7h_!2&tw_FpNh= z7(xZxq>8j_;O2eQs!CaB{~?cCh8tb4Ya0cn(I2bg)iQj=BMz{#zZS#^>0A}yVXw1g zq3Uph&ZN~phYS`hFV9S-7*JuAjX}B)ki1z9@t|hF`v2o@WdltAEq_PEf6<<=h$U&54PJz5( zlRkaE@{C;A4vGdpXTSXAZ)rm79hRT>ycnbTZQs1op~VCS!*dsIJctg1#=1iH-Ja5F zoU8>CwrANoX5KJb4Vp%Q68bw(3WHD8gB=Fqo z^C+8)P#j5aryOhrItjRB!Gyb20m8F?5)5`*RyVi2!OH|+)k>VXR{7`X)&Y!dmE0_@ z(PQ?w&wg<58M_jATspFoUv&3ijRLc?0Nhb^H0@jD;u`DRlgvJH!mP;DKa6D3Kv_|K z!IRXb4$c=~c~E1$iV{H|KPql%jmp1EX2`)&11XxzcBW2~VO^MlvM-t>;!~v|Fc$nL zAP3@&B51W>OHkX9v#;04%Ec%FT)z>`k;-mo>j2-Y71U>m1W3@Zw|~C%r;}`(mKltW z78)+JLz;p7$0<}=_Q}n9eYE8bjlm`NQ99S>#ONA8yXKn1m=o1V!HxXid+w?VR|W}N zH_mGlC|m{soA{hk3i}ccq9;Fu2Cv?mgbRnimQS??6MwjK7ELdtbNY(jEf1@Ku_dB< zds*YW3?-Wo%smmsMQS-i#z|W!>#t`N3oiQF?v%roJja%f=g01UC#d(@xB?9a83%m4 z>z37pY03Kka+WKNCF2UHC?*Fn+jblgmL5ab0y7j!WOZ<~kCVZx^ME7R1q`2zrtpJKGt&$WqmhyyPQ|ls%t>pep zyml>qe^^p=$PqhwO%#Bw#ukF)vt5;IG*h}5)=@rk#wGVL92LK>=eeekR_ z*@(CoD}8;nax%9j4rjaI%p*B$yzcv|tYFyO!8Z4{SE2hvfZ2=dI!@#Mb9F;88AmP# zRLv%6JIuG+r3TRPX&0CgKOi;}IYl5J@w|<*HG+WY6|JKFN(ja(S*clTcI-fHzx-$=Ap;wP{?LD4~_HWs%)O1mj=20}guK1ieMcbI}oV0TWM1I$wbYYYeK7TPnP* zlMIiUx*%S@sGk~<$1zJkq_7qZ&c}%DE4K;i*1{1NH+x(K`&icZRcPEdvaMK{*hX#y z!;;XkC@^?amt{W8o*z}#!5J4pTj>c&5d9Kb729Db(K4c8T6--sojc?0+twKn>cPmX z_wI2V{`84DbU5A^H_hK>umM(MZ^grg@Z~*x1XfF^VJN3owCW!9?BKZi7rXwdf&m}X z5=`?PGmCDqO<9wq##v9g4&E815*lq#_>-%Bsuj$ZYrC}UEF9%a6;JS1W>VKuhpSq% z)!DJ~mCjx4@+)4C@f0?Mu%0;yl&9|h_4ZM{kwhzQbr%d=;hPu+`Xp}>+3f^{cEj4y zPm4`=Y$#0`<+&c~GPf%P^1iDl;Tmxhy9$6$JWXk7tCj%(w2vaUq-&@NyB!et)m!3A z=v!6hY4;161=D+y-%FKGJ1sRMIhg%5GwD0=a9?`hpS;Z4^U)#2({u~y`m?YZEDge6 z*(2|xQHXj~OCTbjGiKIun7Ci`LYGFGt$8I&#DO>SdT2ZVBUx?tXZ*~@!Q!iT+2#Tn zjaSGU0qGPF%MT==XZ^k^S{N$8-)sJN5@TXrC}Ro}MU;V!?Iu0fMbaDO>!3x5DjJum zs@ww~dOn>YyHkuss=PqdLUTrqDk7*Rh_A7t@L=I^H6_QXWkW>Px=&>hUUrni>IE>)Sg{aeU4+ujHguCv|e|!& z({>z!wV;k2m)Uy`Ez+0Q7~6c=Y1CphoW`e!FGl@=0j$iU6a%45FIy3z-C|P!@^5Y^ z0MmVAbQWAzStCIen|{mZ)kH3(j7^mTO#T^WP2h${HJ^zm*8~Bs4_md6@l%3GuB^$K zas?+yX}vCkT&XM1Ivx$=kaFyoc48U8WcOQkUdcgF_Ia8zAccE@88Y-@x*w%w&|bf- zxhg2%Zm1fEv>RC`)ZlQ=D7J&;xJuvlfH}a`y_pBsl^5f2bV! z-#kQ_y;R-?`ZY@isu!XllBFL_u`@2$!dqjU22u=gxOoajB|MxoN@(P?E1HHBY-z65 z%#5i&lOz9nU`*9s>vJ_Q=MQ&kGtj)ufCiG*Fn5;JKWf!q7Jio88B-?e)y2VR53!u7 zD`SJp-q38p;FAWND)EdT9?zK@pi zvAlr3RoTvvVbzyOzzcMR5d?BWAv>^c5_r$ILG*q?-*2U$Q1XwVlxbtt%6J*XW!SXU z7)^y3qBwr!k*XJArOh(7HSA(60d%#xngBewq~N`$2x$yw;9;p8q_G%6 zmy7-5;##MUEL}$)9tJF4@13qB{;c7~OCOTSz2HKX}|q zq}dPwtvNT^9){!s_|jeT+I`qXbA|;REw5eT`voX;(Pg7)r2|ICEc|ilu7oo&PN}Ur z;y#Ys+~*zBgEzqGfge`6k~PNUS4)XIE`mq0G3V^={}QuoYZI>*8Ls+7Hfr8vCQ>15 z+KKv^hKm9^tc51TTNBBh7Dg`KF4mcTL;P4XS>D5pk;eI1jbRy$MbAfU;)Z6fr`zlk zEbymUPrtJ&*N!V~w(rCQr+3^g@y+8Z3e&4uq%Ti$lO%G_qw9Vo%upP6Nq6d0Job7L;QJEz@<$Iw&4(b*c&t953FP zPHE?&KIFMFomEuG3SDFM#im@&PSSJS5ZpA?$`4m8<#R8RhTbu2hq(vC?Em@djn=$u z8p?Yh91lwZ*aGu?%76v}0fH5)VUu|q40eRlYhLa@?G*hSmVq8+ETaTUk_kmp?UFt7 z#u4nVtvN5g4*E@@QN0+Dxcu1~lXkHLjB?OMLup?`-ht}X< zmY1rs-m(&fkdPo-I%|TXYa5Ri2ZIyQ{@EhEGGzSls%cVE|N_R+ABNfR`Mpk=OWJE&J$(0I)|nDE3n)Zj-s7oxnab*(7ks6O-qu!sh%? z42|=x#R^q546dW#`*#@e{9TVpg5dN^ekR*&W;mfq#--bv?1}d9gf3|lWNW)E@Q2sw zUFalA<0J~0so1wRnLoL#WbdMGHcbHHk^o?KvKQ2Cof%WG?kWocNe8BbWnFudL7*R0 z@=u&W>#2nkmRQ6rKD+{<2NmNySm5H4x9RQKowyloKF9kL3H>Wy9g76@{6CfxljHS|i-Xii z{#;dz0u67%1>?xno{y!o8GFC^H^v$Mwhl=M@UntntK;`D?!LgYLiP)CIArs##s*jv=Nkpyg6#IIXSHW2TwQuQg|TslEAde+p^T+xy2or=JU8?fb#d+ zm?;cSWKu9Ttu?6GHRa!2NQnZ6IoG;b2J5?AJgt^WL{pxu0>GG+{KAJvXl!cm4!N=# zm3~Id_-V4@x8*&z+O-^E+2GK6846F6A|M+>YIXis=He-u@oC$A-lE9Q&J!$4H;zII z8+4OAtUt=?)tYYG8D~cH$hBtiWYysmHRPhc5rR7;Z4fMLOSh%;m5vG3O+h$S3qqZx zOQHvP-;b%3=N62i1><3f#*ir!iR4U^ISkqauh6GKZ8-t{kTCVMG%p{$ zfgK4}1stlt2x?bHmMJ@>9vj6=Dq>cX1ysV=@FSutsWfo9h1~A-PDo2>+JLgM!96)y zQ@ZALlSC9u^}E*Z&0Ar*SN-%6_tn;uAecs~9%+ZuVx~I=hM`M(zDM}8?C>JOMOYZK z8OaDVA(Eq+J=vfN$b)+LV8DWgN4^oi;XGhVy7 zB1Nx81%e$#ufzbfq22s7jnxI$8JEN32gXpjUIC88(b^Pu_nj0r^m7#Gq+;v70r#lYL89;ozwYs1`G0k(z!1}CMOW?q;ULbkV} z0jaWQ+mr<1mZ2$L@!Za$96}T&Qp!Ye>kS>dzNm;gE^9IPZn8c-9K-^E&T1|6cl*Is ziHo6m@j_ggD?2xpX9^rnniKFYk8Zo+rtIU|3j=ujbP7^N_M9lI@+UDf#woMx)H6X- zl*cDDtIlwOdQb18X2TUCmxeLPU5vy;#}H{f>UM2+b9W#26gL8DRcWw=r`Z&9?+g-p zy7GHgDX)5QSx<0RErRCf@Fm%?wgT3ArE(+1V(BM`7|VKLwCh z)=vU1fndy;?wboeJO9u&Q^_n`D^&ZH$6m<-o{9;Gqb=AS9!Z0ryw%J5MQ5nlUHm9H zipnIq9uB8(UhQ#~04xM65Fkx~V&bm=)`n`ziRz79`YtW=9&A>-)G{tgK4@2=_DPNU zRuCt&YU@;0XxBc>d|k>I*Y-%XTgCgmQqwwAWB)Qr)|Y-+OW>XqL!I$83b8P^MrFXu z`>^OZ4A?93{mkds^dt4NG3gxyYZV_vF&G-z;Q2gXs_#VhG#HhX?1FpsDpyKNtcUZ+ zdHea0Y~hOBKF!vcu7Gym_Mv>9q$Hy9xj!bnRr{lVnJZ~QeBuyQbynM8yoBlXV5U>T zG4+IlHHETUCK&TIMB8+!RIySofyOVK6VNq71JrVtitW<3} zI63tnHKFWWQ#dw<#i@{M@h6BRrq1$*>3j6{TVd2u@Aha6kGZ4$3Y|^6LCVq89Y?gR zeEiK-`b67Asz|{4&3PaVQwxyEj<>-R6#+yyfu!OOdI5!aLNSKg3o6Gc+ar&>K%zDq z)6jKvo^)<2nQI6J$%sR81Lm1sggX&vwo7a6Ln`+&Ku}64q{t|c3uRJ8>z+PmR5e~` z_(@#LE>(O0koP!8i+mQF^=JY6lZiF?5>P-Sv*KsV0|HXVV^!yA1nPNgd2tokdf7h* zeZ*<1M^?JN;#-(ru^m`7K1_K3rQxD!X8v||aG_>BpQ1W#1~8EPfyZVX5N14Wg?zBw zWdN+JUx!b(SmH~^)dpO6F-c=uXO)<0LOipw0uU$ep37>(gFUsyE?Bxd;4IOp$eCdG z)TFF~7-7sLyZ3@0uC$1lY}ej4({8_(vXZE}dVyPGLRk>|`3Ol?#j$U)UX%ax>KYW& z3za@PlhE?}&ecENhnJu~Y7FYo8$Z31?>Asy)jjRmaHEMIjZJ@_I-JmcRCuXlf2u%f z>({Z%{~KRD#wgM{|Th7THQr=*_=TjeCC>#Kl6P|>5ZmA3OxoDr2nb$(W zb<;ry91a1%xb#>FL}XEDq=cd4@mXVSgFw-p0zhQkq@~C)O+Zygig(KoVgMAqqPr@# zAF(py{I^w9F}FylramiFk60;|2a-@-HB1MPxCFs{#&PoXt>V2AwFIS)qtcDPhY6M5 zg^?O|@G|&qoUn|;$0?&T5CmArG5^zt%%UzzejSQU4Tvm2zkCw}4uEDKl2GYAbdndY z#`rYc+6)ez`RSgY0#IaoOSr7OsbwCC4a73w1K8Zn{x7pU248c@wFQFoyaaM6a|*5& zMRX}pC7GuuB?cf0gL^y(WW*0U43^@fhIO-GmqqiGO~C2bhSAt>K;VoVkZiS%xXssq zJg>PnKqYtnA6l*!>B17%4Dx9>=+&8c#C1u$R?kxNCj~va9(`SjaNNCxkoK0ckYw@{ zTT|E8O^53Ls1}a{p1}V$b4)M2eWYU4Y?IO&8U~!ltP3c3wkh!_cH3w#H0y{;K;La> z40Cv8#KT+(Ct@5_gp|EjD+r(1X+m;rIN5O9XpH0YA}!Prx6pNv9DB1fsUWTvR~R|+ zS(tuRat;%?-I|LX8ih}Tax~0(nWmx$#--cMCEJjnQV<7~cbb92Xrf#dv{@fnHBSl* z7&}bv>a%PM>=4_@QVun(*k$CgJB$;mC%76?DRhUX72fk>dNlER?wjzLsXFg7?^hoK zUIy(Z4E>PW7NM+mf>PV~m23ItAQB`goRK0I!>R`LgPjn8d>t{<1p9<^jPN)Af!Wsn zea$|>HaL}vV{p=zSBiQwCQLjbL4E?g4R-u|n1?t&GU6yI#F6aL2r!s|ZZUR>e~CsF z)>;}z8=`=qKj_d1grtA3z}IS=RI#a-GTjy|Coildc0ZE!22|QEM^BP?xLCH~ssqI=z$*uz}44;NM7n{$yKC z38W9>SRYtw_yY&GJLmhh$|+a8^(8Zg$*bYt5Oak%$er4lMBnyc&3Zbi#{o10QQ_=c z7m+bubfOczsp7Qr!TPUO`HfKynkZ-?Q#i+#ZGmt_ijs0+-)&}GSFkR>&#<32-akN3 z01DZGtFAs%r-}_CL`2NIm;zY^W%~@#{$ys2fl+1)BRCFe*>7k3*xxu=TDqNBnHCu} z+!xNt6Ny0+Pk-fu`Y>k!s@i`iN`}IIT87J?1nZmFfokOvd(5x{&zv`I=Nmg5SN-Ha z)y1{vHNw&=Z}bzPbdq&d(+$3xx!*IFQ@`X^AVnEP!Z=?srF64jhrs$P_XhV zAkW4~K@Yc5lAle+Z0HY3s zG6}s2Rqv-;inyH|;&*iaTsE$=1Cf0ye=PXOTXa`KGPxn`^TwLlr=)RGU&=xUHOB(* z&zqk1TdsLd0x}*jn&ql8Gh>&bOVS1pv2K+qprD2BYksV*&Q>V-RuKa2>SqkF9zJEL zkHMJC`F-&gA-rUZ^py>uy{WxlG>=3eVK8}GqT^}!G2Kf_EbrS&$=)){N~qzRCcr?L z?e9O7Mlc%Yta*6ho526M?nQWREcjuRr6H2&yfGAfmdkD+!SDu)ORX^uhahV$saN_Q zcCN(?hx%s4*^*#Qe1BP1TZpj-NKK~ei`b1kDgjAti<`c`xF!lW!h~n} z`efBWb_pIe9O&P?ok3U1CeP=QyN!guX+hpL!#OX2)L@QwFLKckaM={xwe|h3QhMLy zgXyXcrv@GjPedpL(nXrHqu)BMF*8OIv~HuC>oREO?Rl zjw4li@o?lgI0JaQzHFK@HOFa7*JLnHmbT!Ni9D|-p4vR{ZunT65vD?U7sC9z2QDQ!-)@NQYtb^0S#lAo~Qi>e-^O9eM1EY9Ip9SJg zwc4a%_~||o6npvulA!3J_syKuwaGDg(AVa%(F0%J;S#O&-UHWfJ=y*fh6-*I#-2T~ zJ$sF*jpL}btTb#S?aFY~j{r4P(t|LMxb+~ATg`e&LVPLkUB%?jBe=tpf1|lj;}%x` z%kO!t_G#!m@uR+kW1W0PfHgcythjD!;@+MC`EL*_ub-CkUdY?A3*c2@ru&RkFHNyo zc*RK>0zqk5oeuvv_Dv8)*K+|&dkx=tE;CcmS^SrlG5mMqwEVIo21k%`{i&6jL^C7E zjJwf@c(N#yy*8spAc!hBTDYb@asy#J3p-A9-Tj6<0Hzg;n}owRZ63|-YjjP8RU|OE zaVDSFMPGnWQ2e-N$T0a5mJKudtE%(2UV2D0Q@O)mgLVWnf=yk!H~q>+72OJY5msq$ z;?=^SE0%!d-Dp^%?qlnZPy#Y6yU2w94V#%pgywFBq0%I2^EV>^kQ-HA4>oBs%A6@e zf$@xu040eJRc_epn&${+o`*Ojh;l9i##ZU6`6-@5n@)Zit zV{cqOR50Q@jVjfSbLigFAy8h)6ub2weg#BYg zEDJtzytvdi+2Av0DQ#QX{ldw>qP9Xe2a~nTKeY~1wyS6;QM?^va|Px&($3%2lThMn zg1bW#+r(;T<~S`Hf-S!%hIo+f9OsAZ=Sg>@pCDOeE@PFKtz5&|C&VX`GTLOr`xM;) zKpwy0BaxAMO9gmR!SP4@L8exh_w9{4-h6-Xq*)!y8TcOOrMbP4^mowedp?{V0y)(2 z*EpLx@01Kq&EEzbOxD+G#GTRo&vCwI$B?p2cu~DLXHz3&LdthS*u$i;6~I7R+N-5! zsf_yLLPvqciRvsfZ^*keSVtnE08D#JJGTJ2jL)9SF@DtrEuC!Y^7sR@vcpapm0Td= z_NowPS}4Ib2pIp{I@u0~qSV4#jZ@-xGoqRB4>8a9CbIyIx>!IiX?5?^!r6`+-mLiH z1OWW5hndgOgScYI=Qs2dDmmr*_E*{*LTEQktFBYJXjwm}FuJ3=+|cXBQ}5|LSZuV! z$Obe^RvEA17kys*dJfWT%M8UarE@{=46e1J9N3G%X{b_{7T#5^h0;*U0W_j~_k zO2I&N-Mhc!H$ca7Q3f@>&a@R|Ir3j2Jy{b@Csj>1sd0vYa;knPcR1Z5t8N20lghlb z6o>@KmRDp%k2|^ZAG7^YjSOQ1!UCj)r21+EU80vLg#@Rb68nsjB2&t0_aOqcyB~B0 zam&~x*f`8Uf@X)I8H@Bxa=Walpv5OB-nB1`o>M^XMLV+;+qun~d# zCvxm&Pf+&MZu8DQcvaFipCB=%H=v!^Dl=eSi*MR>83M>sYw2Id@}7Lm9V(OCza0W7 zD79Q4C$glo?~%R*$*q$sY8vneQu@u9;5=p`{{0P_5%ZTcye+wSeaK}L%fl3}2q-)$ zY=$2s1o;Cn+|&Zwn>)4any>A3n{AoP5RkfdFCF1TocpmZK4+?=vc&87F0)Jc$5xIq z6n)$t?|q}>g53G1_t?Yx(0l^5hCRT&voxQjlUf5nzWv#YJ(nYuB;!!B^J#(-eDJnv z#7EhqK@5o5AAFIe^C@o7ao3evaR;D?{;W+7l? zexz&IGfoF)ziKLYs(@&9lMWYVir8y_pu?_45d$721|onH9n-6C-IGGqR-Q3K)z@_% z;izus<@sRzbLsjy4Pj$kX%aoiwaToFIuF+b@cXrzpPJsVD_ zX9AcB!aKG*fyv%J%YISTDmupA_GeRva+g8jHv;R7I_{PMEcQ*RZJ*u-f8NZP0RDqXc4YBB_h9|eKZ%*0~A3mv$O=JVo_pX*lbc0A(K&#DO!jn*@0tKYMRW4 z@qpBkl|UTgHi=w`mE=rvz}_1VV?=KXfkS<#!O%q9q{b`SW5zFQ zXr7eRYB0Y=dafzL(isdZ%vQ7_66A9xB2sL&R92k59a=E*tY+m4khvc&;3j(l zoa0GlR&qT;2kFN^S~0Q@d(V7^zMuM6kTZjbkgn}gObuoxQB|c@EXxYA3=B+uz`Y|u zsn(@r+cq$_90=a*iqQ|*f7U#ih9{>=%E$kNkyey~DaFD>ocT)E+>t&7uovi^54rS6 zABRwh2b1hdZ&stM6M=qI0p5wCbuWd4F>Ti0SAOJyyGI>Vyc3{7DNa;tfI9 z&zh~mxQxiZJ%`5U6fkK(l~ml=u9qh!V7MNK^AeKWyT!_0YGo#`y7sY<=CUQz7VJzE z3b;w<`8jAx<%zkT2ut=JVW1z{S9wPs-UXx{$-y%Q6W=ma05&MaGBkKA{`nqa+W`I# z5prPU)b?zU4w#z#``JRKeVk@xS5t7VXYxK0$!`EGA|){mA6hW9AeAn@lzsDXmgWjb zA?!NEd@%u`9wZHkfz8En4&)zueP6W3ss&99g&H^+B zCUJU(eO_Smg7_~|H9gKE!vVS{Fl=>74}lN7Z_+U7I07l`qWi6+4z#Z8G+B;c!RDdQ zKUSYRv&D0OP@Y0jrbWaC{=P#=3j;GfY((X5YUPK30p4(Xq9?S^8q!J9jZ}?WdY`EB zEw5}-@{yQ}sXdy^p*>*i6ioQbKbfpl921bdb=7N+7nk>j3 z+2j3 zcQAXJf~aM>3(**sp3D%OClp+O=7hJ=wmQo%s5jdMcv1M5hD_EEwX4^=i&oU#H}jpRyE5-~WG?L!RJ3WD-W&DB)0#hcwa5V&xhP3_=)Lg%C? z7_5K>OD2rtpAcJ(W#Q$j7uOXm$zUim={|NRqIJ=qLj0&3a_PMlB#qORZX=odXb(EO zyN`Uha~`8o9Gci?c@8k~*3gdiNuqTw5Nv=<#@JX4OMSt zGtZ$0`svJ*eSHB1Ml@cWY`RwQTvNS!ITkHqEDYr2HEjpn(rM7A$Lf|`ooNDL z4$_4jq1SJF6=bZ#X-@g~3%b)XQxqmtYfhF}=7If$FPHi_QWkbn^elrWX|fV0Cpx6@ zQrJ;kZW}{TcmpyKqAOw7xDCg!r;#}4BL^tGuF_Ikb?IN_a-{D;9EV!=^NI@a>_q98^97MK-m#P$|k1yiIHgKwBNfh5rBV1wh#1-*Z3xh4#+VG zNI)RD|6Jzq-@nTkM|qoae;pTl7`gArmeF5DFo z@E!v*CcFa&V%`lbv)(^c^Jr(`2 z@UDIjs$=bs5}~kLkut8J!jmTrq|P4*PG4P{K97E_59|N|+3^t2OG#-koN$E-caL=T z?DSpsk!)z+9bz!cUaSKk%~3O6pXb9GqBSr4p&C3O^eQ&D8DpxQVi3GF6Yff75*`2+ zUK>`2DgA>G9Gd9Xhp!?OJeFmwSrXDT;Ecw}y%+QW2NR`OzgGY4+;imq+wIb)0?Qvm zi#@r&aM!YwQih0NNdWbFi&X*HamCylh!kw`Pckg$-)i@<4C5 zRD*~vp<-Vfg>6A2LqFAPxznW1{7P(}ELoupXZSF7%Gu17En0@*8^GS88E~MnldnPd zyfw5KjOt_Ag({4a@2;?iyTCJZguKZ>Ep+BYmyFmAP$=uc*@R6cOT;{vWRS}(soD!O z<3w6|=c373g+C|JVyKW986r&H*{g6ASIaG?Fg|ccW+4ABl%Ppfxr85+xvF8V?cvH; z>nfI%V#SD~l%toI*lkhk=dvd{Hzz-fG}Dwais>|-G|HfkA9h5=vRoa|Nmk-^s3v=v z{B&vto#kd??{8M0U|G);(K~Ypz=ZX}nSDIg zuT^C2i5-YjsJ%U110-Nwb@OtRr?BKn1jwJI3G_Ax(MsS0V#97Wfi#MT!Qh?U+5ul8 zL2mP_S@v(EE47O+sev4fYs`1`^jE0H#`H($h9lYbT5hZ*8~Dye#|>{S8YX(k1$zkdA=`$CMa zs76CC$@~FGgU2eB7CMrBgJrfbQsD8bx%_x-J5NUYc;rc~OZxhAp+7a20>}#*2xIuK zef$65W>o0YS?92q;p_pfSS50d+McF(j5LE)EJrblXX!m^W~K3dyL*r%>V%IQkakpd zo1pm^eMjabWRLllRLXnNDzRHMZyk|?LmMK+2E==`U)W+-_-WjmYIeqnL)p<+v~nF1 zbl-k=d=M4c_Z4mqX#FjV>#@}{ULzxk5hWswL+tic2h>&PqnTbX#azW^_2tlQr*KUj zZaQ#SZZ7e%NTkcnCnWc@WC}rg`~L8`+6$UuCcs-L3veFG-f$sxp}h-Ui3=X9&Mo8L zW>#S#56rF_?ry1L05zm)#KIPL?RBk;^9TrxsBTJ#T77o+&^_M z;ii|s%FYl4OLH^5-uC*aoBO$(4O7!jKl(*oy7Oo%Pt6kBn~1n7&Gxp@<(!3AqYcRX z@c`_RkJ&L&T*^`s9Yy83?sgYVs`+RZ$e4Cq%0z{KR+#edbe^fa6YxoSG zqDO;I%3Q=iCU~)Lr^FU=A_AHvXD(KCR97p^1)eWN-SFbM*OU{o=)GTZr8Fd*oVw&c zXaj&bsNl22=M+M0;bKF|+-7U1l$PYH3!17A&0)YrBY6y;Y=TF%F1w#@)TAGEDSpjgzIs0yp?}>GA@(0S7ZwMc7$| z_JG~6o1kVuiT0UWC-NJS|}FNcT7rcM~c&~H`2gkU-LGIZap4yqh; zk8a~&LusaLz|iH8zp2J9Dcna7D=kCp00-()N9cAu4#Y1Keb=!f6j)ZC4n$3rNN+w~ z9?YC0#Z#KYV;jL7;Es01)ZY)4w0HiZ_&OSpW5e|61T)xj!BAVnjw zYrDK$4p*O6eT8^yXC4TMcuI&ugoC^U25pWkhN<|Nl{w`6R2(rGXLR)_VI4+cO8^I7 zGH1rlRao$$)_iex3#%-gW${*6nuC$5-~ii?tq4HwgVgP~oAF@VGIADDmOu1E2y|u~ za)uejiQRC&IrwTqrk@>J6se7-`B=)GhRpHH`HY8L?J2r->=7Vjkh8~^fyoKNs=)8g z?hqEZD@DI{_Brt*yPN#$9|b|q%h`goop8_0QFtOvt0dI)MLO2Xj1H2>@#&9S{UOv% z0`+)vE9b;@P;f_Gv~IlO!s>v3|D-X~0hULwHD#;u-uoem+Rf_^=ME)pHuv>+(+6PxtK_q=CQV>mTc`5F|fvtAz% zRc~(nUKTK%Uuur*!Gs{bdD}6Y@xpa0z_$%^5&k6esb!oI)>wd~o zQBmOKXIj6$u)${wxhVUewco+fv_qU98JX|V*1|cJ)f8r1$~}ejVzD!cF|wHifUiWH zPc?C@AT4ip%OLj?YgZGB7{Fas9BE-ADh|7twPS_kcJHmkBxe7y*>h78Ch&F|0UHuz zwXE#^#NXYS#&4BfRF5m!nD(5@j6I}*!xw;-6j7o078j{_BPk zv+bi{5oq&UE3D6={#Z}Z-yngjQ3pn2FW!IlfKDc-C9nP1W#wBn4G!ScP`$^r6)&%? zc@(Co7_?1ePwFTmc1*H3kbd?o`+(+nS`6J_$Dm4?df_5YkAeba@$k99To%yXhVT-N zmf@0$g@f!*OLQ!?yhn7Pps0{{0?^lRk44C(&(j6$Rh2l-M8wXVR44l+FmPha)QDde zRvt_3Tu*w^%(vbEQDk;!Jf97@Y4DNG_L6GFD%eK?CSn#FiW*rwfjIuOC4HaW0hafc zT6KN8TcM16qq9vgfU3umNY6|^lD&u=!#=2!U~Mp!bEx~_gep|NBAE)CG$)R{NBGxt zMy8eWaA z<=zo$-)0aU^}10^$RgWe8)=c%vzkR(x0$vih4doL;m8XwbYn7pYI?YYASF<{ zk8Vj0-!QLIxV|XrkF)1-V`9u$w$lX;Z^MdhZTPIV0G}i{3Y*c+}$1Is+H$IuOHXkGvChZ|9lJfr>Rwg8+%T zKMlL)k$fWWPzuRn2Y`Tench|VycR4xf~6;bBeggPe>S^g&SY}98D>uKDzCaP<>XGV zjhCKbW%!=MFx=?d90%0}XkNC}4@_hnE|T^6rIn97#~t5w6S&`F_)Z^+Ob2pbxdVZ zIdXrPOd~C3G$+C=?dWbXV!hyUy36X4ZF#I;xzzC;9GtPbka*p17Xa8 zgCKW~+-mWxN`1am0@E1bZ*zDsrv)h|)vkYZ zQG58M(zG%SH_}K)Fd&BcYP5Pds~-_Ar8X=QsOHtDM^ zS*?Z>BHw7_jI3nMee(lz#2!SKdQF=IHc@7shU8+vtqZqGKd`3gfLmJ*=Kd3)v2%-{ z=(`gmbtB-&*=nV^zHXR&&XPp9B%O$wg9U`L%OsU(1Ijb|y8554<@xb=D<~9}6e}VS z5EK#(YEtnp;v}yU zqMnA?Y=aGy*Vk*gZS$WyOG_;3bU8XF7qv&WymW ztp>7&tc8dqBA0>#6s2f`qCC~{35&Uvm%Kkcakpw|sHi!pw_3})+B*%ED(q8VSuT68RLjiP_e@;i)QL~9yO<3D6xg3&>9s?vBUii(*8hd5`>J|?qi{t*B^05X5L}Bl zCJR?Lcat-^w>=C<_9*3Qv^9ybj|Fc^GH-nU>u9GTaPJoUSD%(o${*~~Rt>tGV|$Xf z=@>`K-j>s*e2{VCr-*MPS=d)!6_1|Cs|JD+yMbSs>5dB;t6S+Rxme=4!TS#ZiyVpe z@OjxE8fSDb2WAuSxXmE@Y3sI(s25vyZ}nM?eWh*0r4X}TDy&>LBjvksUW~cf>|}FD zWUjyfA*#)mo4Um?5Co@>mw_z2KNFe*nN;-O>LXxZQkuphH^d1l8nw+& zk3UC6_!I@W?`-a$_N<=<=0bWJu}*WIN;FDA^#W`HPCoHCko9c70~_)@)oHBxQ-()0 zfTvcF6R@u)DyG`M^TIXd!CeUM!@Jw{B~@S}tIZwMB3p)h*mYLEo=Cb4!#qNtAWEH>9P=LYd(aktt8l!FgFZQNFKAcPp zd)5JCL&RD>w!R!hUI2OXnPy!|+u!~b0RYGpJ8fNaBr)DHR>z7DpoY{9-Vo3@=9Ba` z|8O{{;DEOTlZWM4C@)eI<@zL;ay|$VE@7)9lALcuEThJzZF4$oVyewfQ%~ITYh113 z&g4XH-^A8`+W!!DB;9)t3M+v;mg~nQ$~HDqzt4&N4x2!ctoMh7_O*#?9Fd$1r54~K zZfxk&J*CwsF$#fE*7Gt3$}Xa9f*V32HLPJXYD3giv%Gc}{IXx*1?r5FDa7;RclckT z6Is!fqqX+Td^xp^Tr2orB@haY%Z%x)#KfD6@BW$tN9EgFR|_$j*rCglU04YsuBBmv-A70U7&LCWEE_tvzAt zG#F0(P;wMyh85bIV_~RtnIs%!q3GLEbw@d}FgSIZ^l-8HX;?rlKT)M#(9mUL+@H+d zLs)>Y>99k7V>OBrFY`2A&yF;h*>jlgw)-eq?CCEfmDdlRG7TaWQ@vl%>au{7he$3k zY|tI|%UQi6M?|mhC5M_I&_PZXlLOHL!dUk{A;X-Qu>J3ZorLfrA&M5KPlAN|#j_gj z%Ch&kD54?+7gq2)^=c`~ldDLl(_7}*3w6VejA>lCORay3+oAZ5V@YkcD@5`pw3uXz DI{e+P literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512062002-Config.rsc b/MikroMaster/20260512/20260512062002-Config.rsc new file mode 100644 index 0000000..296d537 --- /dev/null +++ b/MikroMaster/20260512/20260512062002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 06:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] 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 +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/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="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add 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 \"kasparov.ru\"\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 \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\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 :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - 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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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:20: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 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN 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 ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + 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 discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/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 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.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" 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 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.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=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.100-255 list=KIDS +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 +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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 +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +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!!!" disabled=yes 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=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +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-list=WAN 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-list=WAN 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,2222 in-interface-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +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 Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +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=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +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 +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" 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=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +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="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +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=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=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=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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 disabled=no 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 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 interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no 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 note +set show-at-login=no +/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 channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +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" 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 comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple 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="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512062002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512062002-Diff-Config.rsc new file mode 100644 index 0000000..4edc162 --- /dev/null +++ b/MikroMaster/history/20260512/20260512062002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN -- 2.52.0