From 60a871003529a43f1cf89d36671d25e4534ac497 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 03:40:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 03:40:39. --- .../20260509/20260509034002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509034002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509034002-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509034002-Binary.backup create mode 100644 MikroMaster/20260509/20260509034002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509034002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509034002-Binary.backup b/MikroMaster/20260509/20260509034002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ff5d8efb3050dd70a463fde0ae0d0869bbca6777 GIT binary patch literal 298264 zcmV(cK>fe(sF8CRjRXK!!g(Pgq_0~tJgO>LZ-cr3000O80004Z`T(2&Lur`T)0K!m zyJ#e{*-oL>4h{!Ry@ym&Z;6oy@qt0}0m=3^Xo`=`AWiDLnX6VTwk1~Nhu+ic^v`OD z%+Cpm@l99DN2~gNNXC(O>k%6V*Q~>TQt@TIhXnQp)BA9A1t~ z=7B@5x?pshxWPTb1x=YdSYnpD{K;K?LY}hA$9I}>XWH?R;0$n%0=2sBn&NRfttX}f zEIS43I*zPHVzf7#vmzui0$(ew{`%D$384j0ejjIsz%YfnR^*3F(_=y>r}-%s-qfsT z<9vG!C2QWgxhTt_h3oJUXS?8^A6%xr^#gr8&(WwxPqUj ziO?aUl6z1>L*(NRf$3YUaJokH0~kHmo`$DT%LPLiyKn~9^QHeV-JLWC+Ml!6kGiHP z0cG1xAD67J@J|qo3~#wpAz~(ub36armH}e2!P@gCP&-ZoGM{VB_Bg@ZL{R?im$xy%C>an8=lB&(5()1%}%s zNA2fY&+g)6YeSFe`qqt5LzhctZx(u^la7oo`ALvt&?PorU@Yk?vcop>+jrXa6AV^p<6x*8m z#F3!mNiEXTDFKCmeZ4m(xU8=^>Q#SdvLTSu_G0DMyI|z2#z69Xq0xe6jzi(c(rX-X z$dDl1kJ@}@K$DCUWJ(Z>5T&Yz|8)hQTy50rU)csne#wD{CzDEnW&jQHVvC0Z-5C+L zZBpZN$z;D%p%G0o{>h>cH@u(WP+azQ zF+Mp}{2<%M^d;3VcK-1mou2o+8i;G=OyGluA^8}eQa;M@S`c{{rfR_KZ9-ihsEtE&P^YMntRB7hMV zNnTUV@`WJ*;OHRab3JV(e)5{jTR3^@r>G1`)L6akR=1&G;e;fu!di9}VeX3{(&M|C z8erJ8yG|#spb}#F*i9;KN9zCQc@JDy26jE4G=mWQB&uFlDUh}Y!GbA(+fb2Dsli4l z88C0{3jsa3zrpFp1xueP&DAmjX-cTUXEtf-Jf`f7`%s+F-K`-G#xkukExYy!RA!x0 zC39|9KRRmA$ssc~R)4;$3RtU#u&I@Gkj6Cs5UB1--YTL&@jmtX>Tw1UsCOR~&O%`< z{Fd8*ATRA3z(jr{EFe?77l=Qle4q!W{omek))ZR})_il<6EFoXRNZ9$+@QAZmWz^^ z=ITwEY2_rqpC|n9l+IqEkC@tI3(LYS45;bNmcV2{7 zbgN#t!X)e!2}d~0laweZSlxvVW*UNZ?U9JRti@*02lo_H{Ju7_i(;o&Ad3OhP&?fb zL6Tu2{{Igzw7PkC^cF#2C2Z#szS8xI&7xNSgUUT^ZcpUP)t1Pqe8ykCC*>#Sdk$28 z%V&wW#57;6pgYjetZ7T9c_;t=(7Udu3<6~D>wnld(P;2sDz>C`Xthv9Q`)a0=5tC} zE6@jA0VT)Zyi%uuRHR=CN-vmU-FE9|sFOD5X79h>Ww_(Sk_BT!RK^-OBQov_0*iQc zGUI9mv|=7YTe9f3QHTlJzfd2ZjxDE@{-cH*+uJxP4fRIVFgmgIPfDiW=~{b?K)3xI z>!*spE_{5}q4Lfhm0J!ZB%a&OXp5}V`H@nnNX97&L8cvO6$Wl5CY!knXB$ zPz#R#qGAf0a!N^B9^8=}8bv26@j*3GiBxasMIu`5RiBuc z%qkxEb_^I`zd*#8Pi?QMe@gi8EWfs=Ah%L1*v7u&*GNzd2nv7QBcyV@I&&EtBbKKo zQ$8+{c!kil67ycZDKW3Fd|_UY&%A#(HOsu?Sb1LA2kr?6GThdBHi-Z&T={{DEtloo z>G5pxTb`$|FE+KbS1Lg9F7>h@SN2EWEnmQ6{zU1!xMZ1KfrO0cod zv&ge*d~C?nnAZzb*-T8rtIFPc=ypbE+}3g5lwS<0<2*Gu(QE5JINc65RkWIqWI9^Q z$IDG-Y$)lC8fdQv@dC5}{VJ{7`jw$rX%ZO(Vk!aUq+!<<#`P zKpeX5Nl9YhB5t^>x~7EqU~A35_T)}Bl$O2oRfZ%g@{ees^}G3RdlvN2S{fTGbpV*! z`&?Ac<*=#_$2_J0SG`|{jA0Ov;SUW}%(DcdYhiX_ogYWq5hGw4HW! z3AK;g?o_xD-lxi(@ z*75m=6}yu;a`wMlMS>3fSwqVg9)4o0E*YGt5~uuztnQ6GCXj^nY)1Xu&78n=71h#^ zYPL`&xoMP9xo^HRnm)34?el~++`<5s5dHH0tXy+SRLx`A0wg859}x*L=w|%`kh%vC zT$^$#?&C^djyMymz%1ISd|*vT73*UPYumIgH$)6%uhdR$ZBuoTnNN>JB^SgbOYaj!;ci%Rf17;k9acOZWTA-h=#gr|K^?XsR?j*<#u zt=Qw=!U@|-$p)WY%C+lI-pK-=kZE_{-|pRoU@}kLr&JKD&>n;chEmms^7}>4q(-e;<>q8(2c);n zKdt|e?Pl&N!M}z{9?W-`&_)4ri|+gYhQ}hD>Y-;AoR2qVCRUD5IvObj%Hsr1L3~Xr zgX`di?Q$0mp~a@xn_*J*d0N&8*Jp1@=g~)o8O`{$=!mAIb^_u}CU4*i%80Bqn%ds( z|IyC{H`2gWhb~@0V%JGC!w{j@cjE7~v_|%7ff-<8fnR$WTE1hb6PcBS+|YflD&9Vk zw0HEmu#7S+NYpgNDe-bf7Gbzzl^;z4EEE?AiJ{~Tw)p6$hnVI^ao6V9EIis6Q&W?F z)j826JZ(Dr|1MP&Sz=FE;c@RO{^THsuBH|VP=aAV#CW&A@ozTh43HPPXExTkEe^_^ zg?=6g`$XNFs`#mmT0X_1Ftea|8o@1`>bWpoJ*O{DlB6VHEl| zOi^-G_Je=(q_t{!Qw=+TH5XCy&Y3=@qe*`#Vhwt`07NujMllyuTQ?7@5YB9BX|rz_TT;vb1I?W~K`JJQ;KO4wG1+diHPzj`B^;kEafHjFdLQl|uaGfh@0WDiYfK zu=*VA@b9L<^11U;h|e#oyr6=yF~#eMf&IWz7vm_FWLX-@En2k7ZD_t!PB#|u;n_3S z1U&lmLXvN)dUV5ORuQ_h4^Q1&{&q05;r>m5ul312F)x@OI+ZH8(j$^9l{}Sd2r#$E zKbi@N2n4EsHiURa9YB?mJCF!(luv}wM`Cr=CUcqmkY&$|WEMCWB(k}cPNuyl-|ADx z-^-Y&{WrW0GO$T-YBV{Jan~tem0g2RqyJi%vWZkTNq~|(fWOQWJ?nH}^`(Fx-u546 z7g=xJnNuP0p?-*r3K_RWdKW5Ujbz#84DeSm62jKRatR73tABvQ(9YJ0&mY?d8|isu z$o@amzDX04e0ih;3rQ0=CEiNT@j1)8DRi>)bGE3{7hj`rXNlxa*Fr$2-#)J&>)w3l zSO{o7pR+Wt6k&=2w0rOf+P(Y_qBdrIauAT|RFV zO|1k+y3j>(r`l6Xch&5U=JYA73-~M*4L4@W^EUUQb(TrC#j<-oFTfy?$}tiudm<%MGVx|RM-~4)%HucXKP2{<1#;Twc>Xv z`nHRkj*04$-=~P3MsPbgxj-d7HaES3_O#Q62N=Y(hxdl1gVCR^i@M%bp7DO7uP^mg zx+&|2Nv!*;m3fd)%J4lfcx(ig?SvLSoxcri^6(gfH0t2Y>-bBP{dw#6(y}mikYb9o zbhWAPhnb_ej}RV@d#o3kIOJ3;BAUvh=pS$L{+h|Nz&}*vY+L!HQ~($CTv_@uceMVC z32C!9DY^8zGmbUC8))k{VchN(@iR?LHZ)ysJkp~VumNN159MxN&@{i23;+iR8@Iys zL&6V=4Y!0*NjdM2m^lu_s<*E9s*g1~>CmqEV^9n~v+OAm{Opu@c-2jRu%pbfJ;jE_ zw02uctyqt4iIFx1o%rSHZFDDBpbuabbCR>Cgy2S&_Q0A}zrt+xOB+B=cGJB@ORN=_ z=t>NTNqqk95O7;HJ$zOl%ehOO-fIpTuXo&@C)JYm)L~5v?iFf8)QxLnF z;!vmU9+dZOptM_PA0Lv0nX+c1@UO?Y6JF zt6^r|w4UvQC`{@w)dY*Wefwjtw)Ez3Byk#gI7a%=lwr*b;beiIu(Uqb^oh)aixL5- z#sE(H#vcL{zmxu_b>a^ctJH6BOw6&2x8?Rmr4JqGrP?1N4 zvcp#0*Sv3?oAf$e8dqVwxeMJKsjuyxtFg(?tl=A4VZlPy%SjTYHeKON`tY`#qdfWJ zoA%?reAy0QZ6s6L2ebguES;sOVol72fJ0zI)UW%h$0IZ4j`KHNAtY-KkOb=WLuXMi z8y(@HMFoSMNZX1HOd(3lUq-QINVld!rq5Mngv?=j zlONB9)yTvhGz?qjp7qJoRDS(7H0oSGT)RNJLa}Hn zKK(Fh0o7Kg2<@G0mRLO_rWLiM=R%v`^LqX7t16D>yeJ7o zXMLP2TAl5)Staq+xL`7|eysSeVt0B@rYu?_UF>pD29`rA5>j30*#6#lGiuyI{ zT;gPt*-UV8`pp;+OAC>s6Wax1`GxjOH*w{TjSiRV$a;uw5X;2$2hVsp8VtZ)mbF)4zgpZ02=FCjg+{oh3nRW4o zl*4fd{If>H)~2ghZJFH-q~o`+wG?>GCsNKH{sZT1SguZ)Z1B_tV%n$4|B@<8i;$sq z|0E-JSuJqVsyalp@KOB+UK=AI&97}G?nLVp6=xMz|*VL-@Jb}z2yyi zqvsJ>RAZ!-{h1cu+#_Sl6c9D>FNp5sT5n3KI|GStr*@7ey_0Bj9|ED7nCBns>3_8s z=MCMR_PIRcHihKdTwdp}Jvx9_89wHKktKIXGXT;tiBR=X_v6e?^9M)?w_D@OeXxp}iu=E!$2<_PS7kt)l|QX_C5h z3b_iLnjsnOIK&ga?)w#E&_Zg36>_m;!FvR5?TIp)#q@ z(f|qtaajI92RBK1dQUb?G1yaL_Zgy|ry({PRXt=5DWW>MmG-@zaytqAo{R#YRd+C_p96-&iS%j&kZ2 zUNHT;V^`$&Q2u9ReIC9hlMUxZ^ zER>FG8jiTy6cWwZQQweu3;^L(aRdY=GS1m|hx4*}vDb z(=Ww(4o7v8>8Fa|CAE{q5ES-@{^|qfOtc9u2>Cd`dBF}v1(t+sefw4Ymu9)anI-h= z2Vm2Fs}`RO99E4vl(M_bIR_~ zIl`d!I4TjTzYCn{m1mSMGyJtt=l1HRxUBZEn<|DnNQKnSQ;@LN7Ol}gnQMvk!V;Q5 zUo;PO5c33;vnrnhG9pcvo8>Es0$Wrs=jWHr;9V99lalk(HNO2~JvtZ9Rs(w4P&0P@ zxVq0_*WC<*d>6wp=_S|#X)G=pSL3TI#b%w>TeLbLG_}pPrj|qw8hBK`<)&fC)3O~& zamNJ5d7hkO?G_ee&5evNnTMMsrt2&<$PT|eB@>^n>G1rop&UhmMtC9CU_jvUaUDiP zfd8C(2Lh^Sn?mVFJ5vK!P8ljUtC2_?d(LLJu<07+oTaSO=xIr0*Z#AI>rL(^c0MJ0 zwm30jj^SWs*~GK;n>o~*CKnr}iXu>Z#hqj7&@*_5Eb_jy+M1rq_Vo1!(?puCnqs!_~cDs}aJw zlJshh*nn|FE^1Msi~DIuNbU>=*)U%-#`l~m;Tsyx-Q{kq&g>Lerpj4V< zaivg&jIl~M^>iTio!#$uX_eP_D86nBR>$#sHCqjvqor2$vHI5$LYCLRh|B6S4d>D2 zLFFI&=_X~>J6tdXRR0GO#^YfQS(F9oC z4Rtxc{ww>T0C{31wV?>tg)E}pH%y{O;z|;1N@&t{55?3I0XbPI4 z4+`c9ofuP4ZBX;P{|~@?3?7mL_UA=76a~^Y6nLN?gtj36q(@J^TQ5YnvpEMwPM-=z zFsp5yGiB8cAl#F?U8z}spE0)|gKmnM0+d+erM9<|+^AqF&p5bV1n$qXGRryF9FdzxrV|YnYD)x7QJgF8VG$wk8(--2C zCZ%x<*~&{z4EA1V1Z|Ea^A=Vs0O9wb8M2SGlC;GIV=()IwMq&0*EcH2zH|qn*p!C$ zsuc#OxOk_G{X)Q%cWM7hh#oiGbZup0P+gXU+!}I++GQ`za#aMu;{YK#SmGEHk(NyXyOqMO16eGp66TVRk;7 zLCBwOK=gb1ub<|gcGKR-kvj4BVbvzN8OtMDOE}J~Dm&qMEWkM=RiEuDuZl#08i4w{ z9*brfH%D-YZb&FTff-uwY4|a>s(FKjCWA$WX<$Q1KK6^s8z|CR1R~+@}Vhw+g*(+!qYbX-( zjf{S~FyZpUvtweYZ3MhrZqk6Uv*_ATK+2P-VrYGaEJ7~FN!?*;fe7%>$B95oQ{WTd)R7MkXk|NVEsx!*t}4n zI2<(?BT$Ah41~MnJ*57$lg$XAjB9wH!%i2ssHjvm=_mHWjxWM;@XPsMO!5lN7aJcs zRs(|cEG?xiTI*F3E*PP~^FR?$>aQS;rVxooJE?F#`f{NJE0Tk=*V>Lda=k=N3J$zn z%7T=eg@RL(n+Wgd5qAYC?f#uOm%%#;s|V|f`hhAVRdQa8UACb5BroUaBr@8XHL(;C z#^8`SihO@z0ajzpJ4ruC5&_KLqQCFIjdX89I^%(jBM`Y0rs)O>JB`)#vgGv!Vu%Ar z$#t|`XFaN|SRW}YwtHAA`sXe@5)HsPY9gcWSPqlq3DrNztLN1qfZ0uFo)&b z^RfIa6M*s5nA<|R)PQ*0etJ?NTO4~3z2pw8Ln&it2i-{37a-peOps$JFn@IDWCpY_ zqcILzfA_D}G|ov&!hh2APz(=q7#P=J)V3|7L~gOtB@&O*Kr(5r3AXZ>jgIu#>Rh=s z#>nFJ>Gu5my)LM0DjT5t2KdfF_5YkmI6S(NW;&EL+*m^4!8+6j!&#w%Cb>hARv+t1c-4LSA|LY5D{#Z?7?H^r z_=B{PbMEs*j21|Q4=>pn8saQ~Zac??>=;1>^rOktm6@dMtBmB?<^42s3c_uej)c-y z++C z>=zVVSK^Uh$!*M*Rd}!qH5^bc0C#^)Z)Zu#8IA-z`~QOki3vhDT>-V{aGuTrhTsR` z41Hh%!B!ATOI}5CbRjJUBAS4fvr#wVDw{La>q12ZZeh!+X;r(haO8Z75T_aoi0)c* z3M+T~NrfxnS7uA->iAYgf^j=p+S!%wd9B0pceh}8Dik`}Zj4OXlT}h-)W_*C|L?El zihBC4K_Opqn@|=qwWu`)0p9E`QbMIEf6WcZe-^zYy8^@tF8f+akNen*hIkz(`P&a= zLP+8nRvG{~I|Q&0YwjX31^wy| zHDpVi)$!N&;!7<8mO)Nup51=7UD;AO?@G@wFP48_$_mVG@Oe#0=0nyfOheEjY-)XX3k%2cNl1}@J|t~p38x3_4Eo-9I+9vz1Kv!fl6zYUkgj|}@BrcA z*3n33)#Fnh)|X3%Ffl_ux)K7d<(<}8b1MuQp`h&qTt!te$551?#^;&bY5Ec&@glh- z8{N8KmaQ2Ht?u}H^4ALZO>>ALqNIG*y+zIlrhq!jd^He0FU}XSOtDMZojv8g?AOqf zb1jm=&kXg}Hkx_Q*f@s(ogEj>AK&B!{)e@KPKEI&O^Hqdd5CLbEqsj2?FA-iSV?z3 zy&9NN@bvP*slA{zOI-JMGrz8s#{6D_ac}b|dzJ2qH|j@aazAY(NLTEYT_ENKDfA1M z>^l+Hb^@;rtRYD@ttn};m1mo&F&`j3XbLnCEp4@mN@M>ip1_#j*INL`Czsfa%SGrm z$RmT55hV1SbhT1`)YioYSKtJ05i;6rv9k^AX|PX8KVS19TF>A=Rlck1*(KyEm-69B z>M#(}<<|jlhYH2E;1O(A{IHFLR?K1CpmF*I<`AHU4L;};qJOHv1jG3XRa+v>;Lxp(lz+DY$w+FZ3TC zL%5EwDB(B($;kTF>^^XP-Jx}Q(pipIj|D3$$S-q$z}l;dPoAjBo#@Sy%-yV-Yiyh- z(lG)8E6z<5awHSZ{Pl@HJ*TZ|yRKzB?1!~;^f%`CGtW0%CkNMj*HP-w2R=twI>F}v zmF_YlK3na~*nt0Nd@X~)SPS51m&b4;nLxs}!!S(;h%|26yy-PggC`n?1p0bs`+|Et z6Kq}~TuuVV{F9k`*|spT*(ER!-uZLIZ>*&mA<6vC^S>20_DUGxuukt)4q2`0g&i%~ zB2}FOUPe#N+v6NFqftXY+ppFda43FY1|HO=A$bfYx;-sswIz`5(-Bz;CwapJfwh`? zn2rS#dpfzew*oC^-2LYFrDyo`e4+kv`txPmHD6aTZZpSmR4r2WlO+x+APclt zJQ8g$U6aHpln%+D9kQUEUD$v>3s&KZ43kVZw%BhDmzGPOY#8Jq*?r!xSz(dwH=*!| zvh%qH{Q0JF7uoQ)yVGb>o)`EOy}W zQ`eT{xYh83AhM+0xD~4MYZ1WS1&gojBspzl5VR3G?k}5GAaH zkJMud>L#Xi#G}xMdU)|ky*)DJ9=T)j$|&!uJY=C*D&Gj^wCCWl|&G%nL;4f{D`hTSwp;1P@ptVym#g&lb}kN#Z92+*spf~fY;3C znEe3v1@T-?EX(9%wO|Ygj2Ke>QM{gE$)_k}b2oK~n@9Te)sBi^&6{Rj@eRmMZ zs?ZKG2uV#H-NC*pUuY6VA=U2v{N{2+fC;#43CuZ z)4n|%Scg2amYEzTJ?x_i1}XUID;kUEy_+4|rAE1>Df5?Gba^3o-R{0wt#m~|`oS}M z(E0KY=bIYd4We0N7;)P>8JT}TXl1Nk1zPwH9tu+Lm*D188tmD3n(vsm%KG*VV!d+R zna8ch$}@ofRGkB~$65`F358DcylppEkErKbk<)2xzQG(-PYs^K)n|IiuAv&{*|6o< z{DadDNrs3=?@PpM$n&48XYKZ96?#Ny{`K;2FxZDeC;<3ggcR4ovKG~nfF6{1?lV4W7!s)~bfZcwPFDMM<-UKu#3Tp;{*p8S=IWR?;1-cV0(Y12IoqQPqUiVWde2re4;4FQ#*J;)OoZB=P-TU2g5V&#Kiw zd$oLOAkKm^v$n~g0Vt*v!nVtZX?*F$E}QR;@<+#&6A{Lo>zkZ!dxEtIqCf&E^AN1= z6H0@~bI+kqBL$okvrMh{O5|+Vzjuid-N-V+L2aTA%(&d2C=kza!?uoXIpkQ`tk)Pne{({_-Fm0!N?`>Q|}bB(@5C20Dqu%{18(!E`?%EY^^l%WnNj3XEp>h^VaujnF`~nWg8DOAUY)`la6oq^sl`t-5&#e z5FzsqM6+3o4Q40M*l~xvTD$7H3YncW<^+8Uewk7-w2CPgIr{Ax)bY?>d}NKF#|2(I zOQI>js!=jao7wC|q+z&v5mW`uR^cv@4@La?+lupGN_uPyZwEY(5t(~%AbfM^7OE1I zCR?P_(_a{gmFDLEBv;t-GVQF$Fm{RKc|VgjbU z(hKWw{<$Q{7zQaNYqonC=FVTC*IC3p;};`;U=3pSF`P)!iCchVJoA59DY)yeB;X+^ zQFtu~y_@CKuKB@36OO5vN4q60F%1~DMViEq(oz1exnG=FzU>N+Ync9_nYxxyISE}6 zIpl8Nv(p^BXSE7nHtN!&A9IRkuc!obEqwH)FX!GeFka(o7HM2`7;~+_6;57YUz)(H4Thc0N^s)d=@= zeXolaZE9><{!bb`BSU1~6cYWplnK1Yw!Kqsw`_`Z8&>gOo_!U~GScstnxS^ID*WQ$ zLiA9AyoP_djMl&o@g~AaxBU7=p$1I)y#Rn8!be;=N2dZD-g`jTOl5<`Z5X$n7G^4%a$Y zq5-ubPKc#xx@YP5e7XkHU3NpO;N!Pgc52a+MO84ue>4eK>>buA(&3qz^CK&d zoK!@6WpEcglF|Ul36?I3s!>w$=^$>4{>4k0>6n)6gNyvF8 zZH039EA%}!-GCTZkd~chYINr|tGyOhRD|6(vy>H)2vp&);J}G!3nyeP5pTbHo!P5dTF*M53xjAL#GpT*hsfd5L z*_DYxXvGdEf{u!NS6SHZrA0)|8^6AWAh2FP_Z3URm@1Q&VISNoiw1WQ>bVh$zEdn$ z=Wx#+LeAGeA!Syv@S^EE?H$P64gI*jPR+t)a|(XClo*QXZ5l!(wz5dhj$1Y0McAfX zBY5OlG+wy3x)Q&Zc3Vnz_vW+fW4C>ckHr<9%R`LdrzT^|Sfp#q2_*uOzo|a-qRZac zX|+c$pDe1cWXk9|$6-H{sRMmw8trR}@xjooN5U#QnxkRqW#{?bg)cceJv^w#^2w)p z`8nk67f=Eb>Q5H#%xE6x|tP?NUg20#rv?!ohRNiQySJ28%?`vK1fmEF)ntPhV^ut6*n9TnRww-Z?tz=UhSj z3vH_UyRh~bX^v^#PlhP_I(Ytbl|=4barW^6*;W4#1TY?vH3F8w`)hNU4!d=c;m7#z z3)nksj>jN&`-pj)LhQ~%HLFhA!UAAYoFKR%x`GwcceT_YWVkjJzlHaf>5`ItT9t{_cOg+qd2w7gceIKUWpfi_pJXN4=zeg;>g17;uO0KE) zd&m;xYxii6kC>Eg?k)#F&iB5@3HzE&wZ5I{Ib@8!=_Vn;wuH%YKwM(TNp`^6pyJ7A z+zka&9*FmnWWi5AZtDNMMSJq4A+wFboQlMHi9JO)t}$CO$hpoMxp)xYUr(Rzstwp- z`j`7ltIDj`RqFlso5ni{)@WHD(al1X6z7@dSCFqQt>GHTMs+aPQQ6(9udvjR_pOEw zE>0wdR_X;-3LkN6Z9mQ3PZh;`bTlr)5Ad?Sh@HP`lwr11P!HFIm%p39vG#FOXuCS~ z($*9jbGCjjXa2-Yt@a@b+d#4Py4xkK+K4WUMc=W}0|C-O5V8UK;kS4|IaH1~ESN{r zP1WsM-OaeuK%JyQK8Ev)$|3(YQAi5+skGsYeO1n2I^czJ#7Z@0f37HhNCN+H!~1^1 zfI!2U$YLA41oA%i1U#$;SZ?z|8db7ZWXpN8<|bPU04G_{LOt8r`#v=3u^7}Ts@NV9xYTRtRQr=ka-J>xu1h~~dzDtEZshB|7mg|sIH zq`Jj=H@m9F9GDTx^4$LcLCm>AALNPv|OhwH32E(W(CcR zeLJZK5NK=fcN_R7I)5=|DfX|vy%+CuGn1ilR{Nlr=ma%(-y1zad?0wz7<}5_9xx&7$=`=3yA;)Svh$w-sQ+{d*`>0`1J?@od)fOv z%s)79&L=4`?a@Sz_bN9!qG@Sy_F#$0rlUtR-m1j%abL>YdK$nCEK)$ZhS5Pbm0C2; zA<@#`H?|bG2CB2*XvJsuLE{n2V=Xr<{VzwEPx;JH>Myy9Xs^(`lr) zqLKYpGY?BMdc4ud*85Z-bhI@YK^M+Ys~cOMpJlj@Cj7;pDp|{OcHocj#6}^M(g+`$ zdu??py#re^$&C7<%*klhR12)R+>7s=x~%v1SRSZDhjzR~2@UZfOzPBdHW%>Z0) z#1uB7!s5T7@dHFlmc$*lGJ(1)ralQ~=0=H{)zkz5h#>LU;vP%KxLyY1lv1NW%o`9p zESZme3jd)C56m3dsyVpAY>AunpGx6%&wWrU;y*tKR0szuEY#)ww$5l6^Obgu#Ia27Dyh#}thd@2mf)&Sx&6sqEjL1x}_2TY+ZanR&wDE%I+wJC`3>J}qo1rI8i z7B2sb_ZBhAG_PAqt8^AAabf*x|7bhY-NA2(K~!rQMidqX606%`zFWbQ^QTUl>vmes zaR_G>NI6&Fwv-=eK5d-`Qt;dKktD?+6^QGCx+3V)D>$DPb+v`E4ot?$BztxR)MzIX zS*e?LV$_!~M)OFpi;3bW)S<=(E+@ZlSM*s>KB|Hku6(~)9=C14RANtUktK%7B?t;S zP3S%N>hBZGJrX>hKV3yj@FRJoz^|14%qQirFdsK8utk&FPKxT~**@&iWK1B02EFDJ z>8U8POWTwZtcZi(5$&(iRf0?`-FR~S!brM7bTaz91U!dY~%Ju}# z&G7bn93v2A`pWzID|wlS?0zGi85!3Eh=6hnYH0?J6im49G{_?m&@e*91HbbZyK9M> zm3N9e#X$OXb^MHNt1d>m;2Tw7SpUwYH&~GT5FliV(5PNs(P$0{@{ga@d5>4e{${X) zv1O@7znY5_jnG@5`mi+iaU?taRqJb3(eCYG7Jjzq`|WuXy;e)mokBJe$)y#PU)W_k z8#8f}Z_h)^P1Oi1lFMltq_o)9QJ5}4>?MDh@PId5{7t-hKmo`EuvC!tBWK%3dr#Mo75uOlxrz0fzPoUc~^a~sX-z%#6z_5V>KA0&bU;I5lIghko(&z=5i^NC`G#75 zWUN3}Xf5)fThW>)DhlRX|blo?H$epFYOB()QULj%-SuTSt!<%HP4t|zfmK06dHWRZ;jhXNOc zxD4^$bki2JaA3|kuw=f|KO_Ogb`!3FO@O%cTK3*9BLUc-%*Dqb|Js^8M<|-Z1B|Pv zszPyLyRX#g^TU55ff5D8q56~;Bpv2hQFT8kOtOl9E%6eUvTtQ zSTdf*t7VqSyJ5-)4kWhTfFdfefG2i2~5)9MRy5OwE5aE z7~QlBEw=R+C6v+V{1$rxm5_@T9t$mzFNAGyG)PQBj?e4&T4RRk5>|Wz}Ag%TGINW;#mi3C6 zR7lYfGc2L%A>>_o!5*rSqtXaCL7@Ceug=n*PzjDJ@+ki++zN`8W^l7DVli!R(d+xF zxPT#BRnXMhj(}L3))JHUj|bDxEf*0d=<^wqz@A>gbAFmj(-pmz2}sJ(LbEf8DN+1a zBdr(4w9bbT^DP<1#DNf};n>^bh=&TU!y_YfcRE4V{tc*rRss~Lv!H|sy&MSh0L@wH zAOYmx!z~aQGRPG1pLDXihoCr*dF5h^cN^Zr*Ylbf5sJ-Y{OjEWF0379K6~;(@R8wm z3UQZgSxsK;jsZixL5M7QUuTsX%A{#-V@#`fV@!>#-oAOOLT-l_>A81v-rzg`qA<|@ zlq16)+i zbXqOM3R)pRR<%Uml~9;uyA=!E(uMc$1?$N6y^uIol4UD#k=_~-_vN#C(Ckiri)~}i z=!Y-<%T$k_PN}AkqbmQ4sxwY%JC)Ih*s?c7s85#9WPTz2(>7-zQfd>)`4OR3idKH1 z_%OVdsh0wW%lmNr(w(=k=^CM|4oXRseYzFY{f(EoCBjMQhS;VtZfOMW_oW;v)oh7# zeoA!nOhNH!0woH zy`TE3$f+It2KRaWsaO*D=MLOAJ6UtTx6W?PNZiV1$k3m+`31khv#t zJ(XPqc@SB>sF6-PPr*#k0FOpYAUana~e!yM1VyN0J$RnPA_Z}uWq z$JjaoC@tVtJQSGnssI8&{l8;|X_|8HXti0;9%xwgp#$Y~RB>PN40oSXr$QXE7RN$N zifv0D^$dIh!FGtpQj7VP(h=Wg9L;5UfN_Y?b86D1z-T_VwG;6b@EHir1v|e6+Hr~U zZ>N(-1^3GGly~A{lSMd7MQPFr5C?0Y=pPa2fI^|Z)knOYpoGX!Hkz?Epb8`LvhVhy z1XOdZm%=wUs-+CJ?E7FGWazBopS&R}(TlIBxEJiEj??WUWQZm9M6=6a%ucT7!y_PS zHpb0E7Sp0NV!THZ2v;zT9BfZ^+o2^SwM0>u-Q56ZrpW_2^uQ5OkOA}5rWVYLlSV1J zVev%9Z_yM{XU{;vP6kK*MJJk=gY=dUIYa|NKR%_E(HbfQFw+eN6j8QP(htTA~3%nk5O84Ct>K>$4MiVDs-&bN=v6{U?gUUOR$H(Kx1m7LT%ml z@8cL=lrbU?xE%c2YGyR55TWv4hwq(;;E6@AuJDFZPKAc8T?COTPhTPP^o&V1w1>EG zS97a!x>;`%Aaib{#^5lqNKH_b0jJd6742X>)MLuc%87yCAi5u93-yhfhg$%6?3$F7 zgCDR?H5*7lu4bmax?uI~rShFqWvTIvJ}Q>%g4+vg=a4`_w%3-SZav&=UZ~nE8!Ch& zvwy4?+<<%#6S>%l)WPvmZ2Sw4{X~M3Xee@}zzkUnry!*507Dfd65mSM9ArNpdP8Y_ z4k9>2zS|b-UeDqhis284URXwpIIBc1b%766O&5!JRr`r9>LU_CUD!e%_>)PAa_Di9 zX=+mwKwSyM6eYl`{6eEVpdDBoTFoNLaTtCL257fO7e%(otsg7H=_;`y_rM14N4DvU zVceO$<6elW94_(F0(Q0{dV+PWnb%7+b>d87DHQT{`iym?pI=I>c>kymk!NNlw{~c4 zc35B>9Jz(foB*$XVy6?$Tm?Er%T*1P==Hk)n|KYC9sX@pYfBz0fv-&mi z1M(*BBKAwT$(Ph}PE!E=0b2S&SV(GIvoTHR?B=RU`ZokO8ydAKGi)Pelv2vK=RuT$ zjPnrxScXoe)+t6n8F=jwg*WCe8WUc(T`t-d>)W=)TbBw4L9nuO(B#z>qp@%*-ip=Fk~D|-*XxN ztvvk2k&b(CW?6sG6Zu=wM%3OI)8#Bt93E^1*TZy`FUlXZdT?)h%X9;LiXOV+)F+;% z`KeN%ymgW(#@BFZDdY9g06!4nOK+v|$d%AN#pq(4?m^C~Q2uE{KLZu`i2(@Bh?sqs z4~+;S`atl%vOW1%*fO-`Zeb(g?GCk><}n?^C4;SmY_QPErZ2mds)H`iu5^V=E9sp9 zdc^Of1A1G!#dk_RxRYY5RMLgpAZ|@}=1zg`%r@UhK{t2We^lyP$Z~I$cdjL?_oMSD zybCPP%@glyJHiUBI-AE(-^EwVsZNaAobIJ0sZ+hrD;b#T7#svNLetmiV1VMp#`T3| zX1+)qKcp_t(4wRxbt=pTRg>r5L7n$|5@Tb)1cZ~EGP+n)V zyWpATht1~qBe@Sm8xn>dHRCr~AT@q9pYIil?;b7!wbH!nXH(V+fj!VqZ(jEzmh_YX z^XGz*j02^i^m7Fuw=!-&bt(q=IK7u*qS-;0E3U)S!XjuqUW8g1Rv}V|wh;c`(HkRr zxkRrd_Q6C3RrjM*RsiSZWz|jxOG1UBv?RM`D#c;WECt1e0P0T(Cv;#}5~I3}$IE5V zmn`1sRO`@x1j#0?(oK-NG=_qs$8He0D14u)I|cQcno?8mlK&`V&rqP*LiP*KZne#^ z*TQ?oDC3*{xTN|cuvop;j0?b%5yT@UHrbmwxBElFEb@h}0B%{!+onTc#+q;4dMRMl z7r#<9m-s+x{2!F>Ku%njivJ>Nyew2$Tjkhh8TQcR1QS^29ZAKUl-f`6pk@8ZH%T#~ zQ0(Csg|(Uk0eXY~L9s_UyuIdka{@; zU#U8H0P13<6V+%(^v}(q0<;1#+BwUPQzn=g4_macT~N@x2!jOdjhlzYyPCVhRWjl;|4?81&jDA$d#3M3^}=|mTfsZ^Oo;Pq;8=o>d{P03gya>F2iJ^`P1JRB zvw=&!4ffNxb9V;PR_$)DR@@cAb7oBkCX7;XI|$$CqY6?Jz7W5%H$M$K%tngRT(j-* zqXmaPAFH25x@D0$TH?mWp>e4-CIIeh2f0#hu|IR2U7D29yS0vFgV#%&8Exgv`Jxn$ zktf2}v+2}YdYJgp51i!5EFcU>`^Vdv^jH-*QSIjLcUeC;7C?9VfJq6AH-TGLl@GHC z0z(pWm{Ayp1e6A82{T}fP8PkHS2ZG(b#NJ`&^9OoTNSu0o2K1|gQutgXRSAh$V?hz zIL`^T-J-u2WvZOTaBbx<9^Ku8e0hph{=8@)VU3;iTRt5XG9)yUA}a-JuzVP zE91ehoPJhsDj!++>7UKSTR+mpVM;M-QlP z5TXFcnJq(6wGFo8%B@>UGWB0#h7bP(hC#>BrDi|#{va#rn^rl#$ET!bQ#yl+yAA;( z*vD9eNO_GDR${ae1CnZ{51v?L>Kb1F_BWbm3B_*Aj%&RB!sMfd`(vN1 zME<#A&joU^C)e2zcVxJX3J#>uknL`Np%iz{8omFHGZO2>-*k$X{vU)kbrhNQTe--I zT&QMO&X%8x$IKwY+;u`*W|JTnH{fiRkEQa7Q=`*3V zC@IQ++?C>9Hw;IjeaSdAQPv{-V*FA&-xz_?Py#p_(y} zgXj)qL{c8+XmUv?6BzQ@xUMNP8L}H zOt;R~cm)-sd(r9Y9|q8 zn!w&F)`W3>IWg3B@hr3}S5F0AsNasD*V9n;$T03-2h<5o|E;;c|4i%$ie#)YinK7H z#o2ZOp~^8J^qZ)^N^qK#_0AL$)nK7!8z5#6S0w1S1UuxN0I7q?%>yYxaoYNP%0}Zd z>a?^1m|PcM@27|G#UKWW;>`S*mnqB9U#;UB3n~&V0Vu4m|Dzhx86Ju@-8!W@RKKBT z8}G=vc4Gr483`E+gQXfVZZ{fsO(v2%A1mLq2(IsvLr`k&&!yZUUvY?;%|_A6Sws#k z5jCU){)C;nHX|fAkDN;7@ZayA@HdXKzv2208?g7=VMUhgclof+F!(dH^a_mZh9??Q znANv;t9a^=asg-n4H8bmr>3b6AVv^X5T5E zpS9nAPH|_LPKOY4`w&&FxJ#c2qkiG@oxv^ZwYT_9m!@m` zo|iDW&DlpDuIWqwHgW+K1Za9!=va$-&Xw5^h2WS^jcR?15S^8FTVl=< z#49HU-aPggdF*_GW1_Ok{y7SnKkJ&rE#uk>$81#tck`m;@LutyMoR|n-3 zc_%ArCg?}KEYqWSQzWsYxmpSX-qgL^HzPVDO*wv_k!maKSb_Oaht2hs4apypCy8Gx zs0X4(HHxYxgrL4h#M?r>JYUd=5^R0v{xO-S@78)mD?{h8=;O$2hmiP**Jr1O#)kpf zy;gq>1=nENddH;|a`A*53P94RSdEt!iS=%7h#}(T#?sItu?}vuk!Y z0ozZfZ?LQkexefJATKCaUnJXSxl%3@LDOV*t7#(ySv#JAu^j6xo~OEGSiUYa$883F z(JJjAqUU<|sdTPxeChSRKywdO7{kJ5o+gOXP+rfFPC|qyArg`&S*-|LD|ov0Q)2l0 zkmRZx%ZY-B>Gj1sVRJ=Hjpk^_L9^@xo!2wh3*bt+9t@@@P=qyjF>*o`K6wzzzc|;P z6NMc&WJZ5r^|V25Vo|uN!|xrOMjjtA+8Ox0u+iEgPYhLcqc$Zrs+A(opRQBNdP_P8AGRV;r?0Po&`0W8{J?cw z_><3Wl8s@R%m`E4dM<~+eZW5(H%+niB^gA2LFk&6bOahj2PS{jo}69JYb|_#p5^DpgGC4KWges;3X2e zLiuP#7&W-yApmwl9Fx(P8_P2RS-jbVB^xpd^3N>2{$T>}Fc17fOm1Jsagl$fF-5Pz zE`%9GA%fe#dC%<_ms!%`I>;hf-(~lCJ2SgY7UB-Rh@YRgB=1big z4H&@urkb}XUvtjiOU02)vVtMJ>O-UO;DQ#n15aG8O*zHiC%miH2X|c0PfQOd$Ii3@ zl-ZF0$$|GHU^`9as4QPWYe+xkDrDRZZcxyw+Vg4J^c_7fo$IS3 zhSVJ3wIqD&C1ibv7|iwP;#-@M5qXMe-_}VY(@U+p60G5~6JzJ>o5%7pML8>J%au~b zdwdj#^k_A8#W6rds*oiYCsLvV>9xPCK(bb*YNx|^{Yh@&#*FYzJ$kf5GRaxhi1cI6 zhtTw?VNt=pXa(N-`fPInM6CeAG*wxA%XqkjEZDFsF$WisEKzwH6;ZzT27z&Sw!C4& zxA#@#e8eoJ<8)~V5KmzwpX+%zFBKGDn4NFvf31^!2vxF0eu$~y4c$dV#vmHRpd;+C zgQQq7pzZ3~wurwI8hyuo&mXd)UkPsO+Zwg&e-kyr(q|yQ-!+rXh=^c3=W9cYOb_P0z}w{>yl+-)M+CM0x|D z7cuGEjInZD8B14JyX$zg|NkhF`|#Xz|8W>jQ3em#6N{ ze}_p0Z{SgAP5L-g)+s3R9^kpsKet1NOfp|Ix!(OlB5qiJsXw^O6YwsSa}>oqU-(sV zu|f)?Z5j>hBZfGk-M&c7x#km{3=vN*OK4+hnDBmh~C0X^^nQH^-rc8 zY|RSFYr(8*%K$V1peTQhjU0Guq!ujTnZ&O#gDsD391LnT^1#wK%4(n*3ds+n4Vr;c zB9QV802ez2${gBH(EL$Gw*`2=HbB}~SYT=>)fI1SjBkRbvIJR?e4fX0gC1tGR7r%1{; zn|C`bOP!6DO8EA4nBOa2bhb_^7|nDp?M?B-y%O%=Xr6rlFl=e2n=ac!s4)u;q)&=Y ziAbT=P1w7dk0yKvZ(0u9qSB^nq5Y8S7-2(t$t}4n!=LP{ToDY}MCWF};p@XWy5;)F z&yUqg9{4+Kx|sO5*|{(>s>g_5TB9TB7ZS^_>q0Jk+7$q1DJE-5Vx&EFL&X{e;dg!U zr5YD@?C7g-TC7Jf?CRPoghI<+lNzG`hM=gZz4HXd10VypsQS#FT6O_77oqXE2!Moy zDnejHjMii*79tKK&=Z#4)>I*#AI3vzK52JU+#Rnh#y)@Tn_YsJ`dMgULE>J|x zxOqP}>z*dl;-+v^?A1NBK?1B_b;0E+p2BV*4_u{OuoG;kN<}1oZx%$RcWyOqqx@VM zJvT%43AJ5PjIVq7Mkag!2-|x_lX2yu$3al*$R5?FKZuvw!a1bH?k*t;6JryYnPFt&4oT>dZB3z* z|J`>K%cEs-1>-x;=j6a+pN*+6`{JOOca-7?nuYuYfQN#c0wKB_~Cn&HAn^r-EU8VgX%gj ztCr7Ht~ldLYCv!-_5ORLL@Us{oJZ`K;DQR8rYU@0XvFH>tZ=P3tI9bG*6L~$#clFk zz;G_+nK<;IODzKkAU+k7!U+2VI(0>AmE29HHrp!tvF3O%;#)xr35_%|JNlI zZxK(8bBOFYucWh-vDhpv`*R41n4H0(x2;Pr?&*CgtoaN8_N@$2Rk#YDHf@zKWr+Vv zI2)SLX+biDbQ&(yq#*cuSrzdOHyR8`Us{OoFIz0^l%lUEU9XH@Bj+mBjDuoVDC%vf z28bkZ#wH?UPVPj4+1NR4(3SP6wFe2gwPhY*b6Lnk|F^3P&?v^1C8>xO7b8&MVV&Lu zysz{USGqd`rc5(YhOwEg>9);BVP!5HXq%I%)WkpQ+R!uH$NDTEKaPv_QliTpn%O|z z54Ja3-mSpwD&>ggivw}`=A*Hpr**9O(6LyOr0|^pi0Mr{*C*D?Xs4|rycQ9e-roWI zK%oWQQvk1ooYn3-am%Cg5AE;Ql1FhgXO0{Tx$+K3fjwu@k30{0imG+ZNwCBk|0gru z#f5(woRCDWW%|$5tKM4OuPd*Gp|O&a2PZ*tFso&J{M|N&226(5UT3h-ulfVNB4L= ziw4VTpmqQ4afM+{KJA{3jn0&kHLBftz9cR5QXi9ZzqonS#puMpq zQ1iu+l{5@V(;F$#gBF6=Y8Kc4!fQ1@ksvxs?Hg~K!<3vk>$|*Y@GsrhkO}X&fynwn zE`P>KML^+xcaspBm*_i*AVYaz1?0#~%wsOh*0wE9cM5WNvY8|rWGTr4m)dtKy1PQ( zDFvWvk4D>`=R&;Sw1&0LMzFWydsIQ&94n?jAK1~}5)Z($3HQ2JdNFZ-X6wq04t(Pc zl;O3zj$q02*AN;RO+ZLvR>6U*mawFJt|zDw0`e*!97#k9o2*_j<6g3)`2$dYmRG(5 z72Lf})tP{az{9XyP~E8{4uWgt6Yb@V$rqG1CR@%LwNk4s~7%hk{?i-QmWwdkCs<*{Et>E>gSs0%bgs@~yQDJyIM zZ`O3x4@xF7%UrYO+6sK#(wI%l3vxD+v4PH46@8=!Ie}w5@K(>$6e~vvMJa8#OyoPx zMha`^G6%~LY<)DXr~q@z6DrQ_6r%cgz%xL{^-W0A8&s+;UpMxCp^zZpsCcHtF8Uw9 zl(Ps|?xFNQLq10iez>76lvstyfy%ee(1&isWc_}N2&b$iv<*$QI+)(oy?!Q8f`rFY ziiFwCn>)~99k}WG8h^J98ceX9_ooS^F36H}gd!@U{{Pu>j`#Y3U%!S!&*1kwd>~AK zNf&di+@~e@W>K_wIi0dx1_u)+Q{08v@s#wlpLWI&aKU23CMEJ;;-(unf#Hc;da{cV z@eOfVF${P3P*Ls8lOX9wPs0K>JfXS1MS6?oG`(L?uiRnDf8zqD!jKG0$gO=xd}Zqd zV#NC{?^U#Xi|j-S+Bp=)yl&^R^mFYYj?o}js?^;@0RHa%{Ry3UBU-LPRS~XMndOlb zXU;PvYCh1p2F~h}&iJLK21~5#huocGG;keTxXnTnY!KG^{InwM+#pz#VHht!os$1o z`7qhB{1(^RpVsmHFhoR{gk5NY5c-}9d>cr)!k4l&In_(t{1i6aL+8c-#KjpJG033y zwS{$QNWgJl?f^YMCkiv|QC5t!X<(9&QcGbe0IU8~jCh+&&NB?jga z#O?f=uYH{#b!+^T(+|w6U{`I5**LFHdpJ8tNB*zN;7CmuHYFY__vH0QQD;~bIosPd#uVwUiJKif#nWqGmeV=@;20zdI z*nuubPO#rQ1@7*7(F1SmKsE^T$5)sqQXonJ-XGG!pc<^~)*%Qui~s4M{`io5il~wn zthy1l+0)n#*B%T$JCf%QI&CFWfgVx#oWOA6xHH|w{KoJSl*VpI#A!EHlKnsA;OWC_ zOZ*y!%8Qt5V>)9)u;ow6O70lZws7zD_N` z3Tlr)a<;i>J~hfm|5WdW$|<$4zNTBcWC7P|t}}R#q(N(Bfyn+g zO+yYF@%i}F@01rzGzmz6IYh(%e2j#|fWL`Sp-Mu&kvijwsIlxHVdjsjIe(gk-p@{E zgR%&QP%{#}gq2{mVvkX%ytQ@LsK5M~dFCRkw zNCeHbcm>y&`6+y;v_hKo?VbLM-6pJHY8lDHqrZ(P98sZ_)ri~{ODHZ~GC*v}&6F|W zPLm`OEXiOYbQd-CF=$6pNQ!#}ZnbY}?EreD;b|d$Yh2h1_A=}|59`U_C5<5gfX}u) z$w_iE%g-`bB#-+xYZ~=LLIADM4-y<>U=40#32BfgGUP0>zY)1!?^>=7>O5`9uP+mqLCufjV8)m%_yn;*S zml`(rcRvTfh|Pt{Ubkvi%Ug#U-7lkq=En6n77tx{qHkjV<>ebqltW>hElLG4aw!O1 z@Y0glYT){LBcgOwKOG@?XD+URYlDkI>Xquf^W%n@qTEyfQVA~Z1*@6bDJ$UY_?Lm# zDvzfBKEg+HXBIZLMnrn+DEO~((H1XtuCh+oCzq+*kd?VSvHEW=?fwfjXb$l*EidAu zrDgV}@7X=So@cbzfdA??NVb-$02N)3LdY@H?rfJVy%j8=F<+zrAybCRNkW9jynQ%t zcUvbAP6@NwIdJ19&BOp2yIn2UQ%y%m3TTY;8B^(bsq@gE$4}Sw7)1r1nh7i~mhkG`!RegYym-#-$8G|V0I zW!irxxXw1Z{7n6dW??+53$t#9JpATEy}$>;bsYk3*SDS){5jl@fvYh`S}A8`nw~jT zmJGQ`GT=(U_GQcm$qSOLL(+37gn6!=fQn|lj#+Y{c|!mNTIoxWLr)Cp*r{Q@Rv^(G z?QyLEo7`|fAst5FYDBYhURMLM--}|0Hx& z9E*@z4jCcrd)`xF%ajLTNyEeeZWxw%iZ*juyDB_xp7jQ4hWQWl19$2)Ep5bPx+@ir zAt5W*e$(E^LJDTDi_0RHp)LSbXd@HkL7A7Yy_^IL84Tc01@4*&7gP)`gf1m`2F&)_ z$05Os>4cV2@a_cw7Fd@p)i0jqDFU6b8eq3sA@Otd3==bHT=gG~NZ*SufFK>@HgY4e zR|M0Baw=RHyq};WPetF znW!MMH7?hkE#4&3x;F{6#3QFqjbtDhqgx*p4ipjii)fOnB6Tg6Jekk69)wfevHY>> zw;c`L&Cr0GX}L^#q)2wQ{m2Ao)lk10rJs2ts91@&j5S;3PdPRH3+{SU z*P_l9p~Yc?&XIktVlQ@-L{}rfa#AZKEscg=I+pr5sCFSK^v1)QHDUBq-wD{Kbj<-{ ztQ>Q`3?&cj0o77DhAek!Wp-hU%^X_sPH*Z}qV5VL&^OzWo()R>Zt3XFEcbEnajgct zlI;=Rpg?jEK{fq=#?UtEuJi!0b`mNUX77g@P|&cRK<)`4Y8oXXCy64A=z<&0tIEGg zoeW)5DpzK&cXd_oOFY2LmEV`gE|0j4N#VEX)P36kFC~<#o2otGrK~Y~*QQ{6Z?MLa zEN~jJAoGiEJGSdI1iaBJJV?$V>2m8q`_-dNO<=RrQ$R3-PJoJ6S)Ohn#rwnO{Kfl7svx=ksC1s5iO=A7#i}g4>yjXs%>`cl%&>&!TNaZq zUb}^4A6K+f0F^ZO^KeffKj^$cyIe$@ws6#O|L*>9xl5njq|K+$_YMmuqonneyE_>7 zF)Oxe?2YLXc|ymMtnI?OAR`L@1%(|0&Y-Q6w88QI3#HC^|1emqX250rokw6;wOnbH zJFnjr5BSD2mlQ@BGBMm92E#+=aMZ5i4%4UTg}dI~z=9jy>@l|W1jDapwPRHPy56$J+|_i1 zyP%(&G4}QL`Vg2(o8?J;=PF46P50&>N(ZZ-FcMxPt`0FtZmX2;G_80-Qv}sqfkW@$ zM4T6`ZD4;DiXO$w44(amQd9O`HHsYZ63of$ZKy$LS?Uq{kVgOHEgnKAGgho*RLRK1 zhk#cc7#s!?;|1sC7>}+?<(e9K5yh9SmQYT1ap^Yt^^klvEmsM_wdG4J* ztA=}bZ8jMl&-?UjxY3;s+}My;k2`q7GSf&;H6&RY$$)z_st8-#&rDwSt{?N$kv;*2 z>8vzL90bZmlgDq<>lT^^&l&5jfp&{A_coad9 zCM6f$%_1E7x^Tr2qc{)(mkvud2*JA{mRW{{{3L&F>+p;Ec}GxULJ*i#@Rl~m)Qn5&?+zd$44Q9YZ3rQ|^Z=Z{np zClM0-tV)e{VThzx!y9#FWerC7U9HlT*iXi&{e5ufX#*^iN^Z3|Psj}tlxOl9eguOx3VUdYEwAxVXxKojcUE# zdH1-^_sGmY7WA$v?ntUOZq6mQypByI)|cSNH5!6@{u#}9R;ZU*4=&mvwz?PTC#1i0 zL1EoRr&h>m2_CkK;_Q=%iiel^Ty6F|%iGt9Wb8GffdPik+stNxoFvWko=@vIZKXs+ zGDgd61yNi8wN9w$C)DI4Xl8f%|I(nN)En{8;@1eo+%e&2j#$3hysqa+`0}slKlJcY zU6)(Fk}teH*v(#DO{7f9USs`~kz*jS43b|&kSl|6#VXg~pT$EtCbu9_wKCIHn9Z+! z(MUa`?Auoym^<*ymSD@yW>j71tE)bXEY@`wu~Y!xk$d?fL`fYTeYH24Yv1K|jhHF^ zd$;eGFB6Ib^_(@o=ynAAHcpT^?9#U~VXF~1_G8vydSoLVbpfbL2PY1P_6I=r|6UQ3 zJIJKdDx)cqF?w_L)tB^J%3}`ux1cE!8O#5`4Q-xtXMG$)pGW|(XsC%PS~W{P(`%}^ zu5~z)!^TnZp3Hd^gor~4JW`-a*?btQZ!J_S*xd`mu{7pu`Z#N(?doJWpGglr- zVllk-#z{vJw4Bc@wNP!J##kT^fjlx|kr*=i~n|-dvkSl^q$7GvmE+Fr!OXJZG|!-6?IWop6PyV?~6L(h@G;?QRPET#Mk;tKL#J0vh zVTkjG;yv2IK!n7#7CqB^7Bmxd(UQI7685OxuXxVkO!HL#W2Ft*!N_oviuVogV zge&h&|6zCyfl6bmxl@xoY3c023;zG>be1-4u$a&wo6!i6jG306(~=P( z(?8~Qd5mlvty@E*5Yq8G>qs}1$hw_lw>r|X4u?dpIRp!oMN+r7H1DROWrR0kb|}Ve zsb?e0lMFnTl^eOZ71xt6#5ckVewrD?Mfye=TKn@M8VAAGo5&SPdSoJ_g2;aSr%wzB z%+G0y?cVi4a7Cb?K+t(5EPHBZKo=BRbEI*7@kdH!QbLim(Bn45$O{6`*q!d%*Hw9ljo&HyFX+%8t-nl1=N4ktaltxm;dz12~R`ZB9WwHV;aYh z$@%8D5Z@d~~9rZ!kBs6ngtxhcIAd+0!e-_3w5JaC8vm|;UE-PI&ShJCZ=+RnAyQZ`V zt5c9-Q@+}Mm8x9pY%4)ghVb|g`E~iz%}DUYSX6>ZSV)aN zOGC>AQliAD1ea-fw4TW|DOC6#6ibWB~?#KPat&=emSgFl5_;qDmXufZ<;(vSkx$+n9prN+@|vUb1A z8w-CPG#P-MsB6}IGsIR_X{NcZRjor8v(A+pZE#i|iCa4cke(k9hJeHXs+hWe9EjMW z@M8od<=6y13tOW5<@e!4vy%+b4~?Mo)&RCyk}F zUr7nlDX~)6!C@{$j>x4zbeh*}3`MZ7+C9dg_XVF2Det-#K!OkBrMTu}Ok$Dl5od*6!-|Yo}A*BZ*EeJ7Tqx;*~X#+dK&pfRSS$PGFuVL#zT0vo-r$~30RmG96 zh5k}O9SwGj-hpEiHgh-qtmG%#cab#jI@ZYVc)K8v_d#s(`Piq;`b#dcuD>)<`##Y2z z#D#REn|6+;xQ+}hE2I3W#*hX970(zPKW7LOwr`Q6TNr}=s(0%5Swsn$5ZQZ(m_BW; zo!9g;GbNtK@122r?2FP9wwP(#O<~dKOJgtOCLd_W!4vl-T2vnLuAkY6d@2M_1BJSQH|xBhZ{j2K8!)lT>f9nri6lX}QAH?SNTDMc#Z|;P z0NfNwMd3P*`-PQQ1T8-V*bQ^+1a^$LTet`RQes-fAr^6gD<@!14rVNI9iUef&k|Kqj5i;4fKc9Wwv^8m#E)vJd zne{1}AHlrI_4YYp)3Bn7rtTe~Bf!puENecgnGYnOgKvVE@GcnF;(Z&30mmy&(VbKv z@bs^RIs%G58V|Jp1YGmpPGyhMhNgzO(AjMDW9FxEJD9pi@o@c*Oa*LHevxei z5RUpbOJ8dgtC0j(Ta+OJ?|20WkziH|hf0ETYH`f);GyHRzD~|Q3DE#Yn%3X@yDMaz zFgg5)ux+>;2Za*#TNiElpe*pr(Jkd0-zQSIS4>4dsz(1?cpF^`!Me^u3eRn?HHSJn zXilVv3z1z0P$CSD<)E-hsR^F>1OXguWcg)GV%>WyK^9%GGGl?!i}ow z@;+pNfb&ZpwMwobEjahJ)hpj@&Oviv)M?Ba#5Gj7^Hli(P=6iU3BLQPE=TrUWSixrcO+PfQIKl(zRDDOjgF^A{&Ebua%^B4&`=E+q;}u>_>2;~m`otyQo4++Ny+B;n0Gf0 z*Iu)#5W36a0DKx|M$NV`(xajeKyQJ}b^wJJX62Icy2}|o$6d6$A`hHn&-T!!mCvsY zfnw{2fXza#8X*BNf9T#ap#0x{d@vqtj12ipoFcTND&bg_&zWTQA6tbtzkaw0eVufnnqTVtteE5^b&}k(x01BDo z5?2N}SCZ;6B3-$~NZ;(+WU>FRP58qF3c7bS983e>{S}2958?dzXqN)e6f2Mb03@KqrQYfXH+j_PF;Gmv! zKI$gCM^Yi@hY_nBb1>#Jy~PEBRMb4kvDI%t&g$_!JNbn?PQz0(rpjH~d+NicxVI>H zFPJ+_gYfAHJuPLuj|M9%wfUSCqf%V64Ved(&;RSgvyh?n@RH53BdHTpyJ0bK}8oWgpvHO@ns*Oy^GLp!TPkBRW6hV4C6)ef~;aDQ``Qj z4NAvxR!G5&gejF~6QI-MLVpo&t3EvkPRqs)k^ZJN`m#1wrOxh1c}WKyp$`d`f2NVk zbR5LB;A=(p(cT6;-kt=z3V;t_a~@REx}W*}!s<>NX3cC)_C%#Hxac(3e&um{T%Uh( zz2q+rzY-eYc8f+`X_QXBQW53+r}gklR@z&PBY7pZ|(Dm+a^?=^PPF=Si+PP=Qh%whlV?^6c02*j+JvJL>rI$n6Bo8Tg#CKEUYOo zFXYdDHOF{ky3I>v*+!Ppg^PFg)BW?T?9x9Ol<1tXRdwKXiRUFG&eeV3eX|LN^c4g} zU@V3gB*InO{3=M^wvSo6RROXDJzQdj;+HjJ+5A>Nd zAm#n^sSFsCSV_0U%Yzpx_U5+MHa{2$WgAa8S43(kf*_{e?SX}dw|pP1m46554&>)K zWr&@OPnFz9xoUYPiKviM*8FV}F+UnZF$7C&xN1bKUTW&@3{u;9q~T^9-|k!{S?hi+ z2m1Z-4AJJ5%G<*vAAB&AK<+g>=&pzPT1ZKkBe%cg~l_)|36N3*Wsn*g=-3l%D{2)2}LSjL>a{7KHkFk7!*n-uIe_o%VeEt%pS4>q%xAigY3H^=BxaIe~h$)>(PqAvu#%9=$AwU#3RH zY4!(VktY+RQ!w(JF@MCOY7M2!cq&qnQbJg8Q#77(-Ykv2T`b|+o#TB`pug7dw$Owb z+-&EEeGVyq=LYsg1cI`^ugMFKc8PHr6uxR_bE3a<-}^ox3yD%B4b96%MD=O&Q49h2 zKCKG}?WC|1_^Ur#skyZ2;i`(+fmhbp3!Gg_utU+4ju5K8ZlezOF$iO^iKn&1f3$~2 ze%_B^f1*tpDH6Hy4I?__8)F~yB^31Tp$mA3yWl@40oU%&B~p(*E|Kp06{a&GKq5vm z{f^5IhvwKvsAu(FuHeu=9`^0(^l)YH6`Tp1*P=$G_6N{{0|L8qHG-Qz@~g`4EaUfh zlk+*+m8CYC+l@`xvyp?hhFfJ&6ryb+K<<4+<>DULYXj|TNHGour7A`DI+h9H3zKh( z6S9oooc@LiFwg| zjZuEDmPIC{C#t1*OUWe*2Fw;v5|ZmBlRmZ&%iza8SFZQoYhZ@yVC|o&zks&!88HTr(-U>=$hSY1TGBq0DRhFMrSag;ORaF zO$&W4^Kxc=YmG+2#lz48B^K!4ggb$~#s^j1iQP!7PwidNUi(!Gl18dLrKP** zzzEC*4kBg&{YRWL^o1k@3)u{llG5WofO%j2#v#=g?{(uzJ?+z6T_FG)*CVNrR-!KF ztGFRf4ENr^L;@f0h^c(ltY(V)m7en%Ry7Zbvln?4W|zh`GzDeR_zW{?v&?w8RYSJl zFSCyXJ3BJ~4twPvey#2tNUiWcottv{0RKM#z*ry#v!DwLzcJ-qS-ms%BGo=gMGzjl z)TBSYyr`${($^&M^v^a|@{PJkD`Qch3ly^g$S6z*s=48JT+-qn&K;l>a?I^DsrkuQ z^8SuwZmWbHV}YKr%tUjmxxEd_w=NGwBh9WO<#=-yR;(=~EI6$m`(yCUhUS^$!Qnxs zKsGiJevwI)su5It?YU+{S8Nvw9~{o~(wM8+$A+)r7DEhaxZ8P#bG+$GKkA!5WsbJA zpO+zg@UHCUMad89Xr6@0v8+Vcn3dYm>HT6Gp*pPyhNY;9CA-A9M4>g0Lu35Ma70Hg zOg+SeTYDU4jm9*Mr|t6^R8tF}seG!$Xr>}rm!q3{&$qBz6!)pybR4Gmt{R-K%KzDk zOPGBq*w;cccjryWmT0GEKW-AO=WEB5NK&v$S}eKWxole6j4v7X_U0S2iTl?JDh0bR zBSDbw^067Lff0tyF;bUe0mLpPu-tC%@;^?5__u(c(gW8U69H7o>rNj6z(ZmB@LkA-Ot$T%>B&+RuKi%Y2zWl&9hv5%ak(>cCzqT;r-PjhRkj22u7II) zteM)twD8ukjJd$pzJqMlFyEJ&iCR_u21g`6m^EmnS-zum!FELfe&nezVxutP@(TUX z*dS|{K9Y+>A=R}gfzQan?=MX93PqMe@-q0z1AJ!if$@Lp0X2(#e=hcB_SarhWEPa6 zqP4FP$jj~?sqm9!5AfAykSVFi9)IZI4d{=Cu#XewtGe(K&DPFLnJMGu;{rK<)9%@L zLjYJrZL|H5t3TClQNYjubwh2NzOnIjKeQCF%U973%+Nw@LQYqY^hwjO-{PoWdCS%s z?b*!s;IzR{j=(PYW91WrG8I+7>J2*~XIA1-!C9)g$u}3`J<5eb@=}k+uAV(g5*RsCG%i)4 zbfOq`kk*YWaqk;DIZj@=a%WB$;Sf}`zeGzY&SA6kp~xy$Jm0Msn;tj$xy(>7&!@b+ z6$kXq=f0!qE~4YWsNbt=!QXl@5!Fr zg_&b!C*jaY>UTF~Q$pE{t%YjMptSe_3cDF)Di)L(4F9NAJaPk0!gU*~)AW>FIv9d+ z@0#2Z6w73f(^+jQqED^Y>ke~(-s_J$#8~CtYj#x(M*(8kb^#IeF>^b@qt4w2+XmmK z9x?I=v1METN*M$sRAfT{%alR&%`SHWxcD#C{4p~m;abp6Cw5BqZB;J1tv07s3`a|U zeb(O&AW+ub0S0s=-ym>`UN*#rUfT2HciW|x$7g_)pl;Q`=5K_#=<0_}vCy+A*rM@Q zV2WZ=SE=f|>hVDR!HUU3-^otdi;>=OrY>T<;LAV#h;env%fj=px+Kfe!{ms~j=vDj zb`2DBAljpUQ6(Guu$h(}@;=w$_Q(;L3?h7G3#iEd9WRSv3!+XCMq3nV&>{W<2qliV zu~vm%KJTE8rt*fldA)Z3-60ZjAyoSf4|8Dy3PX`xyVmz*y0xmGW<6QxK{5pWm$tPn zC?9BPV`n@-_lhzfu6O5(WrB@U$E24v%sG${*X|=dk=!l9QuR%uR@%eg5jH zNUUhSVXr~(&Om~*D9IyHUHa{@O<+M}{Zev#?2 z%Z6bvz(r%rA<@~E(H!dhzu#6LRuz~%N<2!+xe4`%rUw|a6x>2Q4g%N(QjI79P(87W zaIW#$O0KG+WM&+jydCf{eI-BhBS%c5YrGd9&ZI==zoUVQeNr;X4nRq^i)#Qfv=}G& zH*d~D)~1Jdf4e~7iB{eU19ane|EE4f-B!sJTpn8Ukx;8?Oj^SPPQ5}X84sg2gbKWu(kxW&HHk1?Z>B9A z%M1F}{kf497O+DksTtZ%ZSef3Z83W*M9ap3%Kq1%$bmLlvT4W!XpvxkaMdiYj>Y0_ zcX~Tfjs5``*^|EY)1N?ZYd{Y*d>#kEKA-=v@e5JtI|h{wyNht^DVmk2*ID8oFwO%s z6|C^j_GJRva8QknDbsv-O(3doe+DnzSW&_S>!<*}4I6I`r1&@B#c?!9S3$=Tn8Np>`u?EN zg08Jx2Ww8Na8{2{kczfefJqC7C4mKdM<3-a7UNK^_=V)P2LVbxhK7_6T~N!$jj7uI zO^NE6xYLG49zf*%;zT&rs9T<0EQEk<+00V_5wp&*2HXZ0PJ$r|E!afy)dZoCd}>8F zNDAIYGN+B-aUu*J*?oN#v*z?9mz%yCg-u?19>%}Di7QjA7;{sS4w|p(=!d4!>o8htIjBM3vTa!(zmF{vgu?cIoWDB!~SoNSKoi_XPf38piXYmB7CU2Z=j=DYyK zabF?)k6W74LPUfaSR<5-&KPgS0ClO$q&G}DQkC;z74ki#(2L+OYr7rZilMktNr*>@ z@KNm6<_U?-WfZpBQczo=E(#>?HohljAX@aq`Ik2k(cwgBtuM>I4DQCt<}bhSD*iLr zr!FI0$c}LT1=vxF?`|ZG{t5>q*l+Rc(XfHC2yx>C-X|bQaR>h`RyYsu{Kf_iBRS5r zbAVPN#2+=MiX!)%t>XE6S+MCT@6J_clXm(QcVAxO5PaXl5?H}|9&X8ZQKl}oFL9?r z2@$OL1>xV1l5*4;TS&ZJq@<0Y11KX{%5rbi5Xdgx#wN0!19^vPTky?yduvnQ(|mSP z8NgJsI#^U|XW*f07@i{%b?Xyye?)ks#5Y&X5Ew~)5S@(B=|trzj`uxG)pFZ1!UpuPA#(nZobM6Z-2mnX-$5mJvW#@7j|t8=;hPmFG7;`vh_O zeC?4LwC($hj*lu7NJbOpw?b@fife!_kij|`8$*EZBa}!JZ3jX`*`OKIB6YOw9HRDb z|IS3y3v#+tlVS{&q){km!i3&(t>01=4I0FwA@pSw6jY~L0_CWsP-K8u)r43W9JklI z$l=n5HG(*0Yr9@ULTop@VRKZtQKeW@0)%2l9&io1tJg=)UOg$(9E2_G3$j$wm3!3P z$JZ|Pynq(9iTf*f<0zfI1mo?a>!2>{0jz{6yK^NQr4P^y!rt(iPxXJjd}tdaSx8$j z&f`SaokZ;WtE+t=@#p~0@bO334kXjQzST~^v{J}nq-SuH15p|1PEufmDo~ElU%sp- zsCQt7C?dhmBUU$xAd{Wgj@q*Ru7=FY`>&je$8#<;gqaSh6L9#2n-2OU6mf+x^NoJR z635(oO`X?A59XdFdXu?Jm5bLkh>+D`#D>Ti=Hl^LJh4tL@Nl-`SFu&I+Si=qez3m! z4@lAVIvL%aPf=Nmjj%t_(etEusBrky6xMUuIZQ5KpR?O-9v{|S7s62_ zt1x&D&F0E7%nY-*GDNM|m<&OM*O*@bKE53>W_lH*08;pdi~6mVu08YTdvO4T25b>~ z0H*5jqS9mz@zF+qm*RK6hrdt88;uFkvDr6bFeiL0XGQ+eppx`x++=Q4Hzn-2(|h*(+nmFkZV(cnPZ`G;>bv^#FG&G)e(!k694l68+uH66ST9pvcA6r>rZ* z>KtN|$R-#sw(1SsAW7ZBAyEHoNqQ=xh1ErO`E}jO?U9 zNR+;X*aMO@0cT%`nMMXDU=w{$@2DLsA$bb*m~e#GoQl){?w3Hw^W&qYKeNtj70#Bl+m+jdUjvbLVDzX=8?Wa`6+x54pMh%Ec5pQsg_T?QNp~z zePqxNHH=X@v2GwgUavZ!)m0)SqX6nD8Y3&ZE5?cCU?7zyl}q-rD!iv@pWJt; zW*Q#o$ua6g5rD!O)I-7BUhA%P3wT2lW{&{vZ$G}7j4b|D1WQRaSgc(4 zx{j#pK9|B!W;WuHv(xZ^n;E|-@hh)v@h3$gb*gu*`;gzpL7`@Y;cbB=M4oLm-8WZd z&Wp`|^1IA&sa>NTFLER@BJ9#dKCZNHK1}a@y7<(&Tx#&V!8V2sK|H}yP=H#!@`38V ztm?87H%3PhqT1*l^bp$!pE*m^Va%~oEwYY`w1n#)a5+gt?dW_W_@9FZEj#83m`JN zqtpuJ{=Jy3l(0#r{Q&bJkX&NY9LS8S6 zegV7}X|Z3V922e^0S|V|Qc>IF1um91Ixxo+*e$p77HZrAi2m-tuPD9P$;gQcW#{yU zAl}0RxiP_)56H(ux2mIjq&rwmu?2V=2ufRv(U7z0#HkV1)7Ah{w7(sxW-_el?q#tO zl0Yf^KV5B{p3kv?r^(!C4ukEiEYXEe8No1wEHlpTDBMpHUCFOVbR^G->2v*ny2K*{F^bwP8Zh`A> z37er`IIz9%)>NB$9#aVFi7n_lEmY%kUy*KC18h?%b0N!Ervvey{S$rn_OA zL<7Dtq5`kLv%T?NtOfz&sL2rbK07EnKG~>{9I#G!EQ<{0GCx%A0#Ri zLTw8L-~3tfK`M3}2&I8byZ#qWHQ?lj!D0>(@J3jX#c1yJk3f@x9(^T+{?}EY<2)hD zf^SncT0kC#_x=rYN8|z_^bk&%n03n8hC|H3AVF!TA-;*tc0Xv?yIx9&HI^Ka;!uwjj=TdZPR=4kl(&>fo4INi|G&814P0M$9TvyYRiF~HTDro zx6*8Yj^to?5%)o!U$SV|H|=Ks5UI7EOQn{4c)K3bN|}**GPRj)0n1oMyQzqtVfL1o zeV^b*&vXCOCX}wJBdAP;6x;qa#aY^B#J}22W{QL6a7!Kz5jC;--21P^iS3F6l{v3u z65<+9y7AXf@&_W*;-0CDSPJTioR8|BStF-nu_&jnUROT@L!ff(XuPBWtMl!r^*y** zuQyt+Y?i*6*7eoy9g~oO3RXIKjWY2~tTi3YB2E=w-(!|gw|@ICaSSbBvyjYsz7eLA z2Ep4y9~^s|#Tu3B{esD1lQR1ZDdhdm(6rk`(cD%KC&`>!ar=l!4}KiV9)%uiF(Al! zPlV-4#7`_U;6<;Q>mt2SG$6UFfK4z5Z5gAbvXDp5mkQ&`UAFH%2HoJK0Xl}Ha7|K= zY%IzWV}Y(QC#sS~WvJ+7CyD2pDB6Br@I(TxNfjz&qj2i&raO$i*X9iH7dp7F3>CR3 z+$Wul?b70M#o#FLL9^A$AJmEK$uFYY3g$Lj9S^Cr86)?IsW^t=xOoC)FlmQulu93W znyP4JSPi`IgG`)}e7HE+Jttop)p^!znbclbRaEDa11qZzRvi%M95XdH5$0||H?ncW z^zPM>D$*YnR);Ugn9{UG&(?z{kGWsVIbbDck-S=9jUycNyynW&eZL-zHMxbBINMr8GKOwwzGpk277iW8A z|GHWi-RfI84|yWrslDpl^2u@~-n*xPZx?|}`86tT(egO1yji;y8uwM}m6A$J73f=T zf2~!l@9bLa8X2v3d^p$DVPw&4Vnt6h;SjIjFHtwPZ*F69<2t<@9i+-|B*EiUwp3u~ zIg62n>BX^!tP*pC+#hLC-V1a-g7yGskW+~j&#;#_5?rML zBltWAOrxqcRcuT8ZDYH9O)H+?S0ED$yXx`#QKu?M9um5?j>EzOfj=`1G~dcclGf}S zE#z;zWpM})9n&CamlyJUX^0pNdMI{F>XF-8tfftR>%I*Bz-8k3!`>XGA~3~?_V?Gv z!?JWMwc~Jwi{)Ufn)5HEd6@8ld=8~1Hy5=Iv+|QqnDt894 zbIaV4FhS8|hdz-dy0boMcKbMB?ejw=rF2lR^wu%j)2nWA6!{k;m}vBYtsK+38P=5~ zcO~^)D)K=n&xHaIOMv8ImKRzkr(9i7I=oqRbwK?E+QGC4a*ZbXC~$tZJ9Cd;Xo`)R zdVJCUM>`@>FIXX@2h77jr7e!fpZ#6Z+Q$+rUcQx6w($hr_swsQ_Km%&6x%E3(b+j> zps7ME#Vosu1px&%-;62`OJhf2A4Wv#^#hdud2j)9fGHcn5a~R)i$sie09p%HGr) z7--VVbais;M@e9zQ=w{D?+^quU@Lp2f~F@9&N?o2bWA0m+b70r3&NuPQa|s-7sMwd zz@Sg_5V?UVVGUQ1`#m|UPCQx8X1}>~kXY|_3TdpyWM1;$K0@BP77=DZ?7Bp(r&XHR zw$-#MG=Mu0DyLOLP49@4y&-Slj41=Wmqq4 zpn2GJf`GTKKbv9oiaidHgk@_!rA)q{$e`vAJCnQT zj+{uOy?{osDLrb-ybmy)h-V!u-OQ@kgy~4ZtUYwS*0|8jQ~Z(#%S{3Vua*m8^N3dDIHR`94M3f< zSD+AS`kG6W>u`AHi6nDT0~gXh0auH2wcP2W+e}eo71% zTPXL{(wDZ)E8%3}YGBPX#Dc=A_^orpD?e+U(tLxsZzFE9RmC8zBVLFaccVv(&2bFQ zG%_672oVbdf;?Uo2x>ASY^?Xp5oSO-T0alXjB6SNAnt~d*7gB^Z)60**9o^nr>8zA zJk4K(0N87h=QHUC7FZmwePAV}C-L}dhZC(SSBIT4x`^3qWm{w$$%>8=Pt{*RW>_4= z+hh>1-1SJEX|mLb1SHpI+{ps+;W2|tQsJ!sczev=Qg(!XS=CODo?^sVM?OHIE=S!i z`XIjwxdu`tlfcqGHp+`u=w86-=Zgrq%Xg|9b|p0CoRqutldC#skuAB&F@#gvh(POL zm9-wdr`}?d>(UZnEXt6Vh&h#Kkza4Y%f30U_Gkl7cA!|cY!r&3qDe|*HTjYRFt7bO z)j~(7+kL)oVv^eYCzp2MlUGo+7KCr6q=NZsW&t$(;~2P_|NXWoLiPKB%eikrVN{3f z(pk$;O6_!VL0f$9IdX3wR={AFQkrf5#@SEod6Y6#s3^*7mX2S@>+ar}c zJbc0EVB=@op!c2Zofm*oA1(4^NyCFWIFFge3(yV;&Wq%jV=&OjfxISisNP zq%=0Fm@TXW9SL66Pqh{2tHMVRcnnuc$t1fnRKz<={8&V^SlsFweHqu+0Y#Ry-aR1w#5 zU3)z(*NJ70puWVxCKG!?DGwz$Uwv9mi3VfOeMsJTu=Ihl?-H4q)t4Q!a2xP|lUTBC zA8@x2^BeN?@$oZHxCHnLpjQdLh^u2BM*IbA1JzysB3;wBujy`0hn00`N8A{Rg;CiI zaM<>?@g%-y^(R>5l1s_$LuYbucx2*x?E*lOEExWrv$9UGL__@gc4Kuk^Mpjr;+-y#KpVwK0?PLwDXw7mDv||m0>swRm)fLtG`M+s(6&>(R z3@nY#F0q~-B0yB0l`d^?+e=M%j)CWsA%WPPl(`IY!QgNP6RgyxB~g-r_A~3;#k*dl zc(Re4A5|0V)%bmNH7Ix#k^-2>I*h>+{rBa$Xl94GZsc~oLf(&__9zT9p-=vyrzS$h z?p2bf(~nxsV3by}qJz$jd|4kO3ue=j*mA5R?@PUoM^VjQ=mVB{(-tyk4E!7k5SOQ6vPT zK|5#d6kkdwlvPRj(kKv1k-XqvSxwDJk`D_?|L2rsRObI@?O>Cd@CP2qfzqS0^fY2f zVI*f^%e`}$IKjLC?xzK?j7v1nO?wrg=)9WXgK6}ZSODAL4Y&OXlIut}54?9=IU|*S zQF7nKoeB?8T= zKC+8$q`WDR13obi0=ip8xZumeNr(>+~;k256i@?Geq)J z4$i!{Cu+Blr{=k#Dy{}l2%x#stamZ!4-33dxxny_I5^Gb>6F!j=d!3$MKwJ0jNKl; zZk=@#glIq~M<5-vB&dSy`IagzAn#12X1i?-sCm4buOY+E^F`{VoXl+DXG=dg$@XRGv zk^$mdec8O-7BH>qN0I==1efeu@46za&G$I$V9JhoaGFy{0+I+9$JWIuAiouy-g<#~ z3F(E&h~lVik)&=}fLHq^)OED3)`T_LJF#4FF|MxBx_Uv=h$}?2)*_<}xzCu4Q_{;( zY)T&`n0#Of~wShBVipPD}O0)uDq1OpIKaWtu93o@6 zy5KZL4Mo@RVU4qi$w{-RwHTPUfXjH=C0GWJ9W?kNX3V>Bvw#lKDnqlWA!{g{Yq*SGkz=Ut|kDT3|vB5zKuUv zNn#z`+v+QecJfx?doFwun*=8ubMbQ->3{pa{dYV3)B*&F`YYyM_wFn;3oY!)lj+6I zh=nN4tY;4l`Hszk@x+~QIKmw zl#mth`Rx|353CWKZs>?)=Z$H-*mQxW*9_Q{i*>#GAtKY~`*mq<-cyNiaxP1Pml(T< zoUlC{IqNM(^>T)hu81bGt*mDU?(yi|ER!5@@>>r0=O`P$Qx|?M!@#;K zWfogT1^z$3Js4-pJ;0p%Uw_q~xQw>B>|i0aZ)QGAL+RRC==GYEl&1TM0glf|q-;@m zcGjHKpZ0bwN!YPVznzp&jxu%Qa25eSfTB3tLI2pvW3iF%|ETmCh@=uIIh(N6%NaG2=nb1y+_h?1S`JogFZQkI>vhc z#dPYENY#vd)T%;qAG&Z zY)@3GAl7h3pspLNqw57O-SrDg+_w3oGUr!Yt0*45smiX2UIM5V<6Xuy-x0*Y*fyD} z7h$xqy;z+q8S^gEW<-D3BNQltJl#s}15E@VcJMH~lU5Up0 zW+=*dpYbr!x0lI{6T4tjokw3b%>Mi1@&qQ-6WC5Z(ul8Ip**tyad$6FQRs7Dg`ZXt z+mF3`vz`_qn_3d^H!mBBMYCHcVo8ny8OS1))FTi5!6##aF{1{wD^Az&%NG4Pc zysRvGDmCSEF;$3ZwQ+oEN@vG?k zm%EZ-M(O?81Mi4Z#X(3kn2&13G zH#lAK86JbZbsZAJUUPJRqgIuo(j;2W99T5*R67@&D0K=}fNdINkoW>~;trkBt0$e- zGaMBBl=gUMx6YLU-zlEsw{84IL0{JVmL*DBBy0k;%i{-+F#-gHyQ(WGn*8~I9&fTF zq*qi9SCCi<=dY|Ziitd6Hv(cbLPP%~l6i#W2t6Uz)R-e?lmOfvH^TerMXs=W>c zs>X;=`)9M6yj>+s`?TzRD0Z(h4PB4hruZ7hW#W=HRz6i7$$J+{Q{D$U_T-(pJq4lj zv;W6fTMA~eS0p15OtI(7pxco{I@S~W+n{=Y^Gn%@iBLc|o(wb+qY4FvWHe7L41^ac zx|dKidL^wy)HaQ#k&#u~QV>Sn#IUahKG!&OThMzvX0=+guL=2Vk7W-1yw)d$#n;zH zlNC!wk%JEVwXn}w)m_V$lH$PL5xZ>cp&LR@P#3aL&Cea(fxryYT~ff3#@!JTVV{M) zP+Vx>x-6sQX1fVC)(E<+eCrxGOEoyj_V}Mn;H5qlEQKh&+Z$BUM_Y7=`Q?Pq z{o>DrDYYyDrLw{-r2i)=?*%yc^0us2nkF=$g2eU&qQW^0!QU(8^dMD&(8Dp{pdFKa zubI_I~FLxFS$0#*PTNKJ&BW4}-37sPU03sus$Kka-V{Zu=-UZMuEhwHb zMXGH1{MPNbW0eOvYWYThBZ|yRH^7BZSxh&pboUt~)Ns0_@PLIa=By!@lGewC1=Frg zcqjhl#GxRi@roizI%t=sET?bZNwpak!(;D_g4Ai03L_|v9P#enm^Ixrc+4qw1eJ#~ z(B)Y-Xe)XCRXq4fl(UxG47}vU(N7FF6D9sp?J&(Se)h|yHqfXrg7h%P z1wjRlrFLqG$4I>ARcCm?O%0JIY)1J6ToGe{e@5R4;^lsnajX25DQ%jjc6hv0_$u4? zVyQunMG!<-16T3iRlOyl9aI1;b#f7rnnkHyBW0pQjGkGbDezCr-!mwA1JNidG9qv= z7S7yD^O$j6sO$R8?9=_%1Lz5Y$QUbT!Q-# zzNN$i6@Y23EZ|C5p$Ijc`vXMDNBW;;RQH$oor{T=3sqFI%PpT?qH-dAoP{|S4IlsF z-g)1VgPB%PYWwe|q1JzGlG-jW+*DB2KKaqcd&qwdN@MtBO}7NB)t_B*)x3PLE z&Pi6&Q~DN%@R$^;KvsOr=-?y&s@<^=xg+9%*GBd}JT67`yVl;$C{$q3xx`bSLb&Xb z0+I3cb6t~Y=uz;8hVgi$k)wyM&sGB<537QD;88J?caDYeH5 zflKr0*l5GU@0b;S$^5k8y?KC(X*a-LIAXwRCKj4Bu}Ft}6Qx?+dzb^smml}}l44{g zf#CLz$)(`=irX(UDGs$)IlUuqj}1nt<;I;-FH$ac7NiAPZ_u7D_;)Li@^ zh-Y-37n5#+L;*7@`W_9=%&sM+gj8i646NN1ixwB+z82$sL6Bx;qaA()%hR^m9vZ!G~T+|9MvQ}O4kEDR+JgG~A=Xd&G`4PK!kyLk2QIo7$ zT>R&C+HVi~2=;FhuRnhG^YTYNh58k-|C}ZhVG6Bl2{LZiJN2p{237L_&-@DUk)mC+ zt;EBiqb%;l(?HG!9vAmwC~{G~6r|B5g6?A$Wq4%WYW_P2o5$Tqyk@(udD)g(`1lMt zil+?QPj~DC@1}$0L!fXYraYb;hM0Dn@qu8Y~h#tT8V2ieoF&e063iiT`f zKVo_*=B{3My&HlF@yXKcYikUFL62#w|A9bzd*2iZC@yRfpiYPgZ9URVmuUOcbfD21 z->#|Xeg{Ot+_YnzMJI!M<|%?hsKOZaYJX`?Der2St8O$+5c~$WqVu>8a_DM<70{tvzozhy5IY}2-bO(5o?l#rL?TEX|XBFgx*v5KvXRsT3&YWnYhg8PZ~O(5_u-;;1jC1bCbw&q7L`v>3d0UP@cF*)2r zgvYrpd!#-Hc4U9H^_GM$b)fC^l>>S-fCPL+<6E=uxa8TY(O;Qjt0*yBzW(z!7W>P5 zrD7CKIsY9JewDA~41WFRyM?^ex~pg9%ZF5+J=3G+Vv?kEu%g}QL5GbTA5HTeUDUr+ z#ZD~atj;ZKwp63dS5{wj2sTx4j?5|iaje8eQLOSZWX1mkr>$KtX*n4uCi4Y5aHVVy z67~{C2`J_Ot$WcxMVdScU^yYixW!5Li`_iqUR-zxcKFU6LJoZhp*)m52SIdl2eu{c z{Q0a5Uet%qEwb4qxkTd|keWU>t0Gzu*Mdmq@$b$7I#T1fCC!^XAc@IHFWfq*;7g51eo5go1IwhPk2! z6P~~M11(UK|K2cw41g{r&%ZlI+$o(wBUZg2WY4}V>6#P`&C|yll+lOePzbE+qf&49PkmY_{i1q zVo3m<`<=nTbxxVU^A3EHs){L6+$=XiWqv=B=mVL+PKlqi&MJumf9i?I`9*6`M_q?k zY^?t10--OkUqxG$U@o_No%s9%+Jdt=L88xpHQKhzq0}3CjdlFhur~E1!rnl7QLvH9 zkNtj!Z>zf2C>%UU*?b+=TFHemi4Rw=Z<={K(=5s7_+9#4e+%`PP!COAmKxTgA|7R7@x7o^qI{+_jSTCL$VJmdf`*=@x%yyg5&iG~j{S#pH+EE;ndEE- z;&13anM0lU?fkpOaEY<&EaOC~N8}rY0P(B48e8YZYtaG$tAok!vo1U4{6a^`Mn=9S=b|zz+piiW8!lASc;YKqjS05xJ}tIm!ZMqv*r3Z#C(z>(zZ{3rns! zQnATs*Yz8^C4THWFfNuB3)9h`$&8h=*qkS+)B7VR2(GuGR7e)i4?KD!2=S@Ux-9aD zGEY6HG-6pBEV%!{ZlkqGYo^76cMu4FCJBG#>Li;LvZJvtbBST+b%)d6`V|eS$%Vc5q+mgqzD=wUEYV5laEF?m zVlhssSCp=RXYMrKCkl+;LBj&U#U^5^)O@vj+zM4eZq9ClMDa^4qAxDQwmikAtc@pu zJI{aj)}Lzo7aMe>%PMsMJif-{2DLHt`<0cee&VSG5^g72K|n!bc`Pr*Q~#J1VGlCR zfZ5$Ms{A5aZ^vaome0V(A`|k`7AGvx=>bH7`iO8Uh6ej?slHP$z;L>xC1hQW*kCmFf zb)y%J`cKD;;20P#jjsW?u{XxnVCnQfSVLt6OqkTf10mwrPJiB0q-8nWi~u&ATMSZE z6^6}6rVFkD`?U_>8uz9=_N!@0_u`-IfBq{HzIM2^ud$Vg2yK4jhGMso2P|6XMvUwV zBKAq((`~3UxMelJ#HfG|oXY3iR<6I&w=5QE#kOMDe(?;^Uv^}UDw5c4Bxrr$o|JSh z%=N)QZNQb0?mLBFp03_ff{Ln7z=FOm=E@3R!e$gHddTGCy(y^Zx>5r~QZiA_inUc! zHrrMiS|gBl;km&xO>6Z6MTn*gJZ}>&C=BhqShca-tHUN zwH-liHhn2+((Z83x=-=Xn)@b1aL)~JBJ77q^55Xq>tp0WRALI&iup;9hOm1N->#R< zW|aPup}hmHx{eDo^1*(AdX4alqv#6uNnk?Rdkg7~S)V<64c~&f$WgMJ1ji2<0mgfC zDoFF)5r6J9T&cn5pT^1g(7SQQ9?ft%G>MW5OjD2Z8rVj*UotSWaYNmcJSG}cXeU^d zePvDgl*=%I8y^m&ldos$3h(40ZiRzEhIqZ*^mf#FijAv&maP#^{VHG z`U^su2iMZZ!5-7wq5r1lI|h;XYqS=BX*9J`NmR+w1{%JC;Y)jq&X&qUY2-`H%aj>+ z5vUK%oxFn+NArv~GK^3S&s@*!ZpZWyh~V7VL!TAF`3l2la>IAgGU?Q;C; zSIg%UcYyW>Tk!$f(cF=Ft;-D2VaEJ+%I$tqhtJV1P8~i#D<{y+*#!JIl0#& zu_v|MeDy_(J3|FETRIW1rIY6ZGNq%vqPR)`1*F5-jktG(=ywpI%||E}8Qs`u^>B#p zig}f815#Lg?0m~m330xjG$?euPCs%QjgIT>aZns_>$70nj!95}oFMrob%Y6chJbak z!dc;FH^nslX0_=1fsDs{=$nLDW&=7@n>iL;Y%_C)*wfZ_6cdCC%m*@wKUEiR3ME0l zEU!u(7h5`Vd|K#kHwScuV&vM~n}Bu0EZ^T63Kv|ki^=)a0!7l;_RFjel&%d)AC&&J zAzjV0ch6}FYt!WIKdmvU?w(G5(O^i8$u+xL0(4PZ1?irM@2YiW3`5}hA{bsg)!0Qf zJr;x8JwlQLPUe&61z<0s=Qo~3a)fBpMadve#0${NLWTwQv=pfc7@E* z*D(gVeVr-tEVZoNCwXd6w3V@uKc#iqHp7M&UNV6WY5UIL{c^+lH||<7c39WxOW9X# zKJXZ010umD%;v@S-~=8BHo4R^ScK~|b(2E(`jQE9mxMF~_J=)2SWXU3YdmjWKry_y z97e5m8>huC#lyJiw7>p4PVJx|@i}nwMsVDVRi@CkZv3+1!ITK4E~LGf8k{sH(GTvN z#db-$>dgLsNAo&b=lUYc;AlMxGJr$d8AFO2-fPeq-L@@PvK|S@M*UX=R1+%{A$wjh z91Y|tFn}=6Y5PSKjvE#$HRb`7J>L_!quZ}ui6&A^V5~X26V(9Q(IJc11ewt(QCK%{ zbyDtZOyv^g>J7QGtdq4Z6H|1Ld6f*lc?3?gdjjJggJ6g(+wv-!e^nOTBoE+_Zi{gbM5%I*WMO#36aqT8$X z9EVQ?b#_{ig0qAlufgtJSp56|R_O}8-db>if%F#XJpcZC2{1>gqy`{ zp^z0ATYa47*&0(6Q4y%KsT1k|vLlKV9x-lXO*1L%?`-?;j%r zMDK%BWQuZ4QtlO0M=WI~Nj#@Co>v^Bv-*0Tv%7p_HM~A$z!U&>)?6_RfGrpHU5U#a zm1l6JquRFu)c8%WG2dT{i%^2|z@MR)Hbxdc$oLVnU0cpcFzk6+Rig}+Z0(KM<7q4H znIrBYEJH`Ybt;@~?ZhT)7lYPvD0Fw7gg?!7pdhUHJAqgBbLOjY;??PQrxDDTHaBOj zz@K>B!ORh^iY?Z!PRmb{X}%A>T40k^urYsW0qv$9PjY8;u09N6*j3%jvx(=p^ofy(sW`!Q`(`2@$$xTAEeZ2)={iwjVt3@yQai`XNOB01OpOT)= zw3Dr@Mhtl?91rKi3upE~q&FUCzAnx_rdQ`fpqJie0RKM#z*2x5&S5=Nk>gH#|5h40 zab6GU^)Er2xGWa$Cm~?TJ0tRN$bJ|^eJ`Ax%&iu6gI_E~&W zyv_y&8b8G*UglcXa>_`Idh}NRFmO6P_t4r|bdo6FJU@qAM@q^=0%WZ^#-3CMTCu?F zG!YNKgV_i~5A&=Y@F?=@*t#}RH0F{Wz=tL#f>VgLRi=0$^%cw8?kx&%Q3JzwSeMYG zu;;01BP$7#IzzsharM`RQxel|E3<8wGMq34Cd^tN;%E+$|8gHatr&xdD(~7-8H+%8 zLY7P5?rHdoSNWVxb;(rUvGOek*ZHp_1ET}Y-smoYKrw}d3(IsA5_BHJ$W%mbX-YVi zJKwoZ7Qx!rj$hGz8G&j~uFygl(SGk8?JrcxF z_a6QitpM1ptb~Jgv)2_)spezms=l5fq045$<4DGF^(;^Poz=dK_LX@kBI<*E>T81CV2~DBi#e8$gf=T}iX{|`Lf|k8#SIXkyR<}Ua-Bqe-IVs-gz^~+FJy@pM(5gYEHRoByw;X}^%rvk$d07Ai!x$K%Sk9-pT~Ijcd+R(+0%m<0a_k;Ibvi*7ST zLGw7^NOw9PnfJs*polR3i;6a#|KB0;b0DcUo^Sm-f0O)BcUZVPQSqb8OaV%VNKv_? z_S|hKJ`VI_(8g9tT#bs3h8;$hJwZ{NHpFJpf%=u%rKH)?I69$Ggt-07Prk;P$`W5S z0T1Fqc9UlA{GYiuO+{i(f&1g1&4ddQ1ELjkj_~Mv1yz`JRj~mXmV2hMa$j z{`)BNG{NWgO-KG4>=Vn%15co&tzwR%&6M?=l*%XaUS$ddcG?*cv9mgQUAI$pIfz|^ zzG{=t!m_~_eL{jy3L@ERVTp&zld}JLIRD@4wjre5;X{IvdmElZC|yE#H_{DA6h7&f zxqvW(1zykXoa#f|)57!6=At}xCaM8NB!E&Alu&r)#T@)}@_U8B^=B?wlu)mjZDZqX zAWKu2nF1i)7o>;q&!RnY1%7yf{Zbv#Z|(XsSFA&5(f zGeMvobhf~E+y3_mp-zg=2lZ&v86RnLu2kbVwb3IPBG-a&Nk>q)wnrP3^a#ERyua~a z%~-9fAt?Gr7dT11R>k_M6ogwqp0YXn(+6H-$#Jwx!AFE~yx%ecNB3jAAp}Jj?tmTI z_U88BROUD&O0{jfz!);ovfT9Y68%o-4x)HeZe8}36p5UH* zo9xR5R$CNp0$ne&1$9nQN*Knx5dfaFNN62Buoc5Z$cf1+6KHTLIR)aAnBQGpkYyRh zOLm%*_6aDOKg2xBV`*Up6=ob1ab1HfhpG|#-U`69Y}YWpP$*y~xI&s;5Mg_7A>AZ~ zu&X6Q!INFR*sHeESH{z9>3b$Pj7N(g9-+E^NIa7Z?gufzDMx+f-o_BQV(d1 zPG0Ymvc8=}#*|j?R;ROojuIj6>}OINK)JOx4mwtgb*&$&^0D}nsbT+Ie7P+<_>R#W zXk=*S6CzVfC-_#sNPOFF(3Qri(}``_2ZqmHT$zPlDpLcBPVsAFA2YIJg}tnssu&S9 ztIE=)r`%AQXW8XZ(IRu<1EOs%1kE4;%Am9=Poj=(gk?5v`_eUBHV8$_r1!nuZk??l z@x*CG8uA!UJcDA0_~6(rs+Q183|8amV2L8hdJ{6b!NY`tTBtCa5{mp6f|S3#K%lNj z-P#vhjC1`8$JIvx&_!nVkD)8haGLH8TzC|Go(aNKDLuT8_fG#h`k2IR?WyQOE*4hZ ziF40aj-!X1y8j=yMjpDLflmJd@(;Xe*N`d}(O2$SOJdE?>tu>0?(B7oJZdcyOrw83 z4~ccEdR}!Kj}7aR_28D5F@IzShje2brz`#kCM#H{Mi+{M-hXL~DAR=6aM9as%IH}S z)%19}E^wA7#H)W&5z$OGCD;ckVZqm(=2u(5u{)xltZ;J^Jv8r~l!Bqz_OUcbNSSUyPRJWLdi%9FC`%H> zB3tlp)`in|eYtj={NoqU8f=?urN=Nt6Nw^`K~RC(1$H+s>t02|YYi~n$f!5b5A9QD zPpzp05O+A>fNM^8v%G>L>r>d<-6>1p0{8C_h1#;^@XzBD9>y?Br0Kaet?c7L$c@%WKz8>c3f%l?0BM>pbMJGZ%`fB>E)Ao1tIwq^LH=DxlnAU5@LeR8OTM%TjJ4TL!Ye>v!X6GHW2da&~2i@Ja?I5~=Cm7o5 z*{s8?9tM|i6#cRzM4Mh_I~zx*H4STa@O*rL9C)kXQi`Aj^6z4~kH^T7W7)B7`5%xl z=2nzWAIHp_Zj|cGb{f+WM{RVT-9`Bb&T7}@){9>?m0cL0@9;XTN~2aoJCu?DPAYUV zFr(MGA&!K}tQ6+#S|V&uuj;Cff(+xf#VyH9x|ChLt^X=a!hs}B4#UxBrFpXQ{wB#; z<|sl1#xugFGvCB1b!{{P+HtKn^?9%o$GPQkthBZQ7ToQOIUut60U#LF2rJW_a1ULP zOda##VN-8AUY9xyhrbYc@%v`#0`eDa>h4iy*OK#>1k-yUg?u~NQtV1DFhjF8^&ZaY zDUHbW)!ohv+g^a?)IQqnq>r)qk0>}09XS;0b6{~J2W~ZGdxz~FJ4xXIa%)P(s`9k& z(5=cBVd~pwvKwKO6DuFEM^ts`FRcg@Y@+y7|$X><-W{I1Wz^lYl9uH$lgD%Mxu82Z3 z;HO(@+jkIxp3Nr7-7cnATB zM@u#p_fZAL1JRokeb7D)=6x~Jn8yq&id#lPL}^`=$ryp7AsWII5I#n+_ATz~Z(LEf z;fb~*a(G&wk161CrKe zFo!uTM`)~xMv}R*_1xYp(7YC8VaUy)Qr+VW4I0byb@Ph&2BB&&tE{|ikmX76SS}Ml z8S(&o4kDHeu(}Z(?*fG;{oxeK2_`AqV)g~x!&8`8LmQqov^kKEmBaq?66XW$r9eya zS$#Qzj6iQiN>i#)RQ-!VQAKtZO+GFKP+3oGG z$Hr{%@=pR6mvR`=50;C%SoYSG;j}zxY}e;UZi)NV1W|<|T8}p&SVzwk?!|D9mXP22 z+v7DdGil=iQEWX(9w`Q#3hAC;5Wqlq1K#KMSFL>gsx;9n>&Z706~ziPC^)n+7&uyZ zSotmfn`VJkA+bG(X%WW5h2d(OLsNr>w2bcoj(fF74s2gu#8KlmVT|LUz_T~na)GJf z2oEp3h0@=!gPY-nd{yAMG=0h{@9?fvI3xs28+HLBuI$x3pA0Hr+UtCA>ZAWkXGB?= z3(soj*9P!wD^t|LR3HHF%MK2rffmW4iFC*Tq7vl-h1RiNE}s{|87GWFPhr2e@2Y8j zH1SU0u+t*$8fY`sHJiQMn;J*{v2q03!;zpF?|I#(_VzPDBu3MvD@TZFA?OF-sM~KT znJU1KA}kAiHrA&L^j!KD4Z46bP>M&|2B6Q^hn|WTL7x+%wU;kL6zC`OBk4jQ<5-hp zxk|3*nkSsU^Uw;{j4=g7Q6D&%2ts22a689CRw+y9>SvmLzyKAu@7%6dw!c)lNB>e& zU4my0j1?s2&hJK(@QP+5KM)5C21>&AY*iqZ%Vk=uCzs|^WPHj1WPQ~L|LF(IzuOC~ zgiJ?xsz3IR?*4y(AYsIfTpde->!+hf! zY8)mb>EVKTNxMEQiQ7B-t%G`qNvapss$s_wACrgXJo2WSHbAN)_Ql?uvbll?b~*^v z$wWqv+Uz&26)m1~_3j`Lb4^FPKd~<4>Q&2}>Qt3h*=!@Rq9>iS+Q&6+@eL4gLj>Sy ztW(s@bCOxFIMx1}v0&x;aWAwMy;Tw*cGwv?;1d@M`r4AM!ff(h(uJzM6h~zonH7FU z=c_MgX<$_%*6l@LgD>i5cYo{iCfX*AM$2(fsd}B^v=!qi8+D8d?U?G~!*Cr&8*$y_ z%&O6%<8eoWZ+=!;$+Jcj6E6aqB7`onShx)HF@9o`cKk1wrQO?!Afv=&zY!N)SYbf{ z!lff;5E=L(e1f&95Y&1ng+D2JzO_)Jac~y{q_;LS2zU#;JY=?!ps+G2dU?@Xl^TtS z{*2>VLGPri!12Cb4z|S_bW>&2Ttm#!c){PgLPFARM>*T)|tIAba-j=cH{o0-!sJL zinMI^TeXs6TD<0bdBg7Eizy=_fa&oCf2zsBy-uVhSA8pyg-AD822&LmR83b8%ViAd zkNHC^$-<`{{_v)KhtQ$JBH50mYB%3yLq~kIPJA*k>~}~EQyjp-umohmooxG8O>iyE zzE?$-HP2~S+25xz4Y>)MclR%Ov#i_;8To*$QY#@^a*meRUi7DIdksXaucc5-DuZwG zGx89fL8U)Dqun*Wx|UKzeY=c=-RL`9?K78FZd>1g0qnqZJGSA3c1x6@SR;sslhM`! zkx%Bzzo`4w08V!~ClYKc5b@2P5aiG18@2l-GjzDAEUMdGG+`DOV=XCKu85vHa zmd02=I0SCB?!4c6f&=ocD#`Z9!0KgSMWaZDo#vHJ1tK zRG2l0W9W_dm`QAWmg@xQa*8r+-K~lU5V{2dd=g0b*o8SEG~i95L$e^k`LKa1yTC{f z8xr=^U9evw{M|JuTHOYX+oDb1T>S}+zV|beSQc96+;V&515e!RX?N0p_VT?I7Ta1~ z-HU0D=W@RjCDmIHseoz`z%^;OJHnJ}Bj8E{uD%xg6TDCcl?JWBm6EgcSr^TGUuylD zOl6||YLXH!+(bvz_5no%m)zm`-h{kP=nNwy$uv^a13a5RAXd%Gqk=2=r9;KHXPf+1 zsx%WH3B0MY13vu+iYN+Z$(ZX1b$vZe;TZO{4t4^^{ z!NtGm{rWo4xZYC+gjctLVKOjO;*;o+e%DUwQ?N5+6~SI6ScHkE?nf7jS$-9%@($?FSQnTG`3%3!};??#qi zDko6fE1;4iosk=)qhk;_>_wHw4uyS1-z z8&O3o(IBt_It*Md7ShwJE{a|t^_T!>jJ(=o1_4DcU<9pBhs?ov*cRX8sG=y-)05BcthD@Gx7y@YSqrPpJI^XtE z#SwgZm?$j7?f+SOcAw|Nh8Z6!2+SXNXj(A!CelvmSmaPBE2`OlAnZ5k{YZ9K?cD&k zr1%1v`4>#;MMx#-XqM+z%zrXQl*SKua)r>d2)HH(qYnB~>o z_tZAZ@?d%bx$y^&r4h-~I^Z2jeL`WsADft%JBSNm;{-z%R0Fm;sU(Tt*i((r`bf}l3ERLa7`K=|QUK`I9 z?;R552AkpzI^oVP1=a=QB{S06D)(o|61!!KkL)R@yV}ffvHhvYWh(5GHFi+~B*XX6 z`DiVWCc8V`g1XPiYbA~NPA-W%D55mXYyBF0$RucJzC=gCeJn4~JoE8_G95TtL&P$$ z#Lw<8y*1p$PT(TOFP?Y>Itqv~$${bwo@~GTcI8$99|@k-swQ%ae_#Ld)207VXtHomk%^vN_m=-;TZv3-Z|M*% zMJydXL%Q-9^IJ=iWVs~Vgv&x$$SwteG#ivLj6Q5MLH?>&2Q~9f{lEkANu`zV2nS^93!k{+?(CU&83zL zn=#P?0-H>B$#Md#An`#f*C|+B?am<*zF3DYCA{?%rKtN@AONL#J3#iD-1#Y}%C0$Y zr4Rh?3wqeR@RNeo_J*l88OADRSjK4qDqj(IFD)KM$qq6mnk#10wk9&$wRf_l312G4 zEAJzal#h)WJ+ZCOW1%;I#rP^mDak@$43hAqWMT=be^?sC#9|{J>Uxojn6jDy#5HEX zJAf0EuiudVwA3uHvioG>6+Sp+gxcaYFl*h9eswM{+J~Swz*R_Wd~0n5(rvJ-bu>D`)eJw8>LzyvRdYQ-KWIto zc@j1nv9lc4`XURRnej3YnmEfuXAkm{L=q*YYHW#x``m`EawC>T^MWMOv5yzM+A1g1 z=JST%wXS!FbYIGwt)o&WC~Kq~1eya}tVD!g7bH3n!b~O7+#1eViZf!=``WT_ z^*9X_cKNInsKvS`Z2ULAo}vW(*Uk$F!MMJw?64623J~5z=HONl;_cf@FD?7t=_llI zaC&-$FjzOxwQRuT-88T%Ze>$7Pa}&cdyw^M~p|T+`>f`Q+%#3vw_%}bakq3<~ z3m^jXHzg~Nsu@!Wj!2D80t)?tNq(gEsiY=aY2VV4;`b;BOOnE}fASG_n0g!ZxdBcn zT*ULn>@RoTwXNtI6|~%Q8?8?(jFGHT%|Xe-@B)SIk>YnKWVBKzXq+(HKzc9pCkZZM zhtKENEWjrQT=}knJ&J{p2)jnvpf}@g086kp#N>?KXj%D z@vl*eUOy`n?Rp`_Y@C%6k>Sp1Oe9P^eCR(r6HraGB@k0CBBnt)&b$do$!Ij=r<_IA ze$9D+UO&F=DXsq-$ zui_JnyIS!-x0$4OLoyO#RmN!g%SgfJmOAr1^n|mMu^}fR@=vA4coYzte z;<1|MJuSsI0%iY%-)MaYz|Ny+%SelBj4b|if8`(awD4HAVNgQZF9pd5J*O3{Da+=Ovitr&!m>R}R_SPP+t$$~D~o_%i-Bx?7#*cFHR2!k(gS zlNmYQAa@r5)WH`uF>b6y_%XNVgJuw&|E!M-CH|Y&%=TDGTL~nkjtmX>S)i2NxMr-Z z7D?dJ4yF)V{4NyjS*oohr~Y}k>fSl=L)7y#9hriPUDeySY_SnSQ!I-`A2Z} z&J;ZGiV2Y`b0g<@hLRYzwEij=<;-v-^HC4+;w7Lb6Mf_YS3CTtz}zsCLSaBcTvVwE zARuL0Ys%Wdu$dR4HmGLyw<* zr;sO2Ic(&wCrWeeR_ueByYei~V)c*Rv{Eex5QS;S=sb6kj zzR*sv!0^28*ucZXaG;}RgL?otB6Oww_URg>z|)+uEZ$I95w^1~w`lnNQavB0IA^(s z_}}JCA#zD)sV>!DRNv~Ez8y9{Yh zH3+CV0n!h4x}4V+e9W2zz13J&m=)I+A{R5YE6}FY*IX-Yae}JEq*+(fd`5##ZR?p} zaT4k6`Z;I}fCvrJD4bg_c2gn@?14*Alpa8HGUZUO-P(BhZPOhpixYnzOhs86^d7*v)x)lTy6tf|m>!lkOh5R}$QE2!+l}%&29K2Bm5F22TpoFK_nrsHn?N{x` z%B5Ha0}%L?HT_#$S+f}g$N$jGJNfD`ep8V!5U<4rl_dlf<_bnzD#HedqZ7ilj?wMy zMRdDue>W$-IUT4HLt>BpaBwvQd+TXb4I+>R?k%9;y=l}|POucnp}IVv^gmVN2nI0g zI5z29FBg`OOeKGJjYZszL5+}%-Gn!_H8Vyv(7KGt%c&F`=XQdQa35S1Y8Q-!0?9^tnv!K`V<3XQ&&KYD z_!ULJGe_lIz%>CZ%K@7r`K9L;ZmK%U;fK%KwV%NO89v!&>vbZ6Pk&CC%8(Ov zO2QKUn}GusCcB1M@-svp1T#V}XCCX!3TVv>x!)Z-3YjC!mC;z57qQ$W6QfFkehjOXr? zl_KM?Ku~eqn*d`ygFl)D>zNRV21bjzLpB^|Mm0Q3r1~HDQRs2E$~!~KGPkXz$7**L zLPr##DR;0-`WmcHcl*%r@fB}#JCja$L+(|rO-N;#S}zDOg3|W*C-befGY#QAPaFHi z1CPoevZ>gf+XZAr#F^mXiEFBON~$YsUdH;DPi~pO&dUI)f?fCwkd;Sdw-t;>JA1HP z8@lHsi3W$2HekZp2&}>E~BhB}nR~3e7>XW*O7kFX9w7Z($^Vy#& zQT#+=bF6&;1AVuag2J+_?71t}x32`vBG+se=$k{8t8=bJm)@CKRHH7$?Yi=Ab`qoG zp~G@0(O#}~%@!>GKQ}!bT%q`$Vk%5|;-P4ww1)KKuvS98&cGvgP>yN(4ogf^qboY8 zaBM|nb%3nB*1Q?l+&CuRbs*~K|BmkXN78KL2|_zQ1gECuCV8(A&hFUL-+l#oSPpGI z(#}eA8vJ%EH1GSMe;TqP>$fdjWc3?R(H#&q0Dv#pP&O0~^Q+aYPtl4Xk(3@c!Pe%L zvR%xJeS_547~my`p<$Xa^t=Wv=NSW?xj8zJdw`LGE%Uzq#O+ndWw|sIUR^s2X3i6e z@%gbUP=eFRvZ#z-MVJG=gcoRmY-#v5!sqV{lV3xjzJX)0Kz~&=T=I=O&7HB;Qqk<> zpJaNFkx%9|*ZAFtVtOUp3w?|VW5xND5f~H=essu10-=hY)>qe7VGK{TlCxu_)HxT) zFM(hN4#|R&oi?pz9T%cMYRZ&*2(s7NUzLih%O|H$IvFWEJPJaYNH{)MT*D{-_7A_D za`nM-uT7zn)c-&LL@tGFD^K@u15BRWSM;X9*vWC<_>)&j!MU_U4yba9!~?; zj~=+hlqcU=%weO>J2lr)H_`q2@L?+H{rX{+{Fm*AmKR)&6PTl$a?~ab(@~G7X|CC^U!#@(7Q#P zzqlZGGd8DRj|PseOQE%uPBaE?9YDGc#pxlyBtmr7IUYE)9X50eJ$Joz8;QeyR&-_o z1`Tl0=j7p)PNW{Y5@Csg!lOj#0Yh&XDb9DEL5q8UUZKbhrlMdgjL=ejo7|UD#VIe> z;ZwG^<%W9*gl%tNJ_%c~6`K3I?Xn4}Tl7i~0`Z;a3^35I#KvV`;TMthALR+N%fCO& zWbSryT^*N4^%X~N89ng1w*3}c$@Te*yn{TFTxlm+fbZFR?aP<=vIPzWni>!I6Z$k)v_#2=RZk076I%Dj}4OmXa zo;D~)FvxaU*^Rp>8cB0!cAtz=TB|WxR2=FL#^s_XF!qikv(tLAt2)NK`s(mrXex53 z{3)6OT=nfGbmSCcIWt4eMw?;9KXqj(ph(rwgCrxZ%~x;`7uQ7e>&sgCFqj1Bp#F#r=iDN_I0)I{A@2b z_^9K}j#U>@qYlQK!ko35_v$a#W+%pj72p~a%mJ}y>jSGLp#snL` z9+c^5*;rq)$Fj`JCz}xstN>>e`srj?3o7#7h+o9)hN`TC8P!181<1YdO`9U9AUAv1 z-!f@R>xumZ{>alT`Edq?@Tl+ z`ZW&`2AW8Y>Atw#HMG>OaD&KZS#+QkMN1^A27x`og1!PhVn73j*fdPeV%!0wQ-U

D@jKbb41nJR02R9qJGm$uTLCnIfz{F4JPTF7mw*)>HV5rXEH^aJiceE;8c7rUD z>oa#U6d0)ck!yh=nMRH|Mw3|fRf?>_EXQ)-2S&3B#(t`tHhw*{J$7Fno>kFCqlPw= z;WE!e+D-QhBtndY0xa9-p{tJ36b7tRBP9aK>Y7ktqm{>EMwr8fsdD;Gj zemTI5DD~t*Q}b@RhzRB+x{&-sfAfxJ8kSdPsTV0An2zfgC;(IZ&lnRk?{``~#|o1> z-=@G-$j!eq(V_my*L4+KcTbog@cyP3|Lq&u%%S_Tvl$XZq=>e!@f?F5Oe95fod&c1|NgfSg!0T$uP9NLci zj^^6QJ6;YZ(b+Y!ZplCj8yZ(v)R!Q8O-y4)=~qPwE7B|zoH zy!9+_h%~6?C9t+95JbJ5vrLX@{-YC?6MF5Dz_!XI6HW#v1I$pMCwTxGF1AmlN0~18 zT5Z*|0cq6ZIU<^4VqdP5;@`*L$0k44)F@LG8p#ldthL?07?+=gR<7EN(B60=|Aml3 zm0CpKBdS5H172l(4vvWYduY%yiBHG8)b8iF?ngdsB9qZWTLy^_oe{xX8{KHm? z)gX6a({Ns)SCy$B@oS1J1J>R@ez3y5dIE(T5C-7YV^WUlAH06Q_(jOvDXgVgus>jc zcFJS;`y(QaMPtD=XUISJaMJ!Q1dUVm=6moOe#UwRvH}cyc^E|M0l8C;-Ncwrcq>%J z37W9*)r_zd`l#?akD~VUar>e^5O##KM~LmTpnHN1r+HtkeQK{~UI=6v#{mBkREXQo zF9%>^;iDBvaSM2mY0Z8$6^|wBjpwlOG@nZM1`tLV!VmFp00yzdfp07P-r#*%hz$h& zA4d&MA|dBDkXTBl{^RFS=;sot>45>RLK@~8b&$yh-L3h39rh`&+8e13pN1Gw5~$B4j|t54+Ob_H z8K2sVC6KD+iCpg+{&L$*e|xW#stLvHEzaUBS#kmZg~bk3Dl;#i4I#9 zVPB|Ncdi)&d8zx-DiitDE!7;`uEzho4E5s$X@=M^00TUNO8p}>l7cR}-@mL79J}(N zH~3klH@88Am(8{``|IPQA#Rkd;W8k(p&rV(>lhk{Nj32~_1Y5h2U_##tL-ow=Lr6s z>wX;8+j)kE&jbs0dTCvR;IEHmOkx*S(X}vI8xF5J=x=!AdqXJ{-BgoaVP)zcD5;xY zUU`J*voa9gI%l}8R~RAiUPgcbH|}~=Nhi)}q6qC4elfIlp$F3r!dl%n5G7STDV5Ad z?Tq*S*PhtPZ%>1~v1E`}xOKScy(fcfq;erlbYNKTz<{um37&@B9*Hs;&2flpKvtG< z61%Q4%qN2jf(kPFHM;GRDpaH;O4;{>&Fh1AjqHYJ0*Q2oKU>s1){1`PfS$@1xpQkf@ z2PM6YVS%0SGVPI6LE)kwH(OjHz=a0-a&A5$w5#h~c~(LdplSUadNz(X3!u5?*cmC4 z<{6#98f%?ISRa1Y=2Q>-%T&;hiop%z$lm$-v~vP9?1R$(z#6Q(&RW6C0g}Wfg7%;p zlPaG7(UgVmP2NFCSqNF5GG`$G79}>0#G>j=jtdF-HxkK^z|yl-%tMFagdc8_b_*sy4#~1PGA|<#O}7gnzGc+cO5{}kvc=3J{x|98W>LblNaTx z`V)(@tk*Bw@2Z%#sA#&G9grE``0Ny~Ns?gUJ#@OkbfsG(@-_qOvh-rxn)FZAX z+f2u>wbUN)C#niY%!}Y#6GT{C#SiOLvGqSH*!|gMF3J4UbZ9Q><|n+W93@iO-h0`! zX&cgb3*0P$Ue*$=%b_YFPaxRc}kJ6kxKrc6iubkqt2Ei~2e*V?qJ)V#ey z1iZ+!YZw5Ja#+7^bZ4Oa265}VY}K(Og%zNy#7j;#&0(S$D|6`@_di>4=U|lfbBydE zX?it2NM1aE-RosEkKp~AP)Ef`qi#@4M`BL=Ex2A8a#sKFwAKl&-}COHR9L{YLRMq! z>tNCp1+t=GY5I|jA+kbjk!VeJ)pXHUp+)aFc`g)4v01Hjk~W|JJS$G|?JDk*lcP=B z4L3#Ja;~|8SJ(T-> z{6f9FD@lddkp>N3Nq~yCsqUO*?j+dIqYmh#K@8_iuxDfzw2KII7Jm+)Sf5-;!GFl^bC!uOX}ZZxgY)tga{R_3j(r z+GNkdWFi|YRE$Tp&G|ePQdXS%D<^l}Nw8wYj9xH;N!0Qy);TZDj*4cmPPJTty3Tu? zFNC_@Se>P~CKNOjf70_g6S@WEdl;EOrCBL3y4*Wth-*V(kJwzHF z0K~pbA_;{{2EULUbk!)W;`}Y)ZF_NJ7r2HvBqTaBVldEbn3Ox(<`1}d6{)9~_|P%qEr9*O89)7&6!eNu6u5T?G+mkPYp0^;>zANRR;@ug4KmKmZ<#j zAh-|*FL^Pt@Oc%Kbuw{}&cvoX^>rV3&fhJ@I5z?CFZvb*jGa>p?$L5{_3{k)5p4|p zfKR!Vq$x3(jEL%9N{BWH6!N9^v1H+jmJUZKVrzl|M*PPBv}4fQonXvJ+beO?PL$ha z@HzBlyW*E@DGW^4x*$|itg2nHEs;=QxgR;WBsTBXLDRe0W{`;m0vSo-x7dq73akA|KVVumT}7$zFR9HQ^RX7SiUt$ny5=IH%#c zQHW3Pa2W}K7f@h;0$+Dn&Z4t@Gdi{W+!z4a`74r^Q5Xq^)zJ1)w#f*rvs0tmSvX)C zKC+X)|4WcCj)8;dY#kSafg0PMS1Q>H9V~R!Q9!^I08Gp|=wWDq@j)zY>9b>mAsaQy z@4^6Nm8CeTw(v*_j;N{fG`OoeZP!T^$_Cpp^n(?%0A)Ad<8|d77n1ZqhTP?Y<`n6$ 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%0AT?Q`#HkBl;$xeFmzcF(EwpLz$T_na`APrNx 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�`NSH_`_J6`Yul2gYcQC!wGep(cK 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\"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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260509/20260509034002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509034002-Diff-Config.rsc new file mode 100644 index 0000000..0bda9da --- /dev/null +++ b/MikroMaster/history/20260509/20260509034002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0