From 808fab6b190d885dcd880080fa4f794841ed2790 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 29 Jun 2026 12:43:13 +0300 Subject: [PATCH] Backup for MikroGig created successfully at Jun 29 12:43:13. --- .../20260629/20260629124309-Binary.backup | Bin 0 -> 177026 bytes MikroGig/20260629/20260629124309-Config.rsc | 2776 +++++++++++++++++ .../20260629/20260629124309-Diff-Config.rsc | 8 + 3 files changed, 2784 insertions(+) create mode 100644 MikroGig/20260629/20260629124309-Binary.backup create mode 100644 MikroGig/20260629/20260629124309-Config.rsc create mode 100644 MikroGig/history/20260629/20260629124309-Diff-Config.rsc diff --git a/MikroGig/20260629/20260629124309-Binary.backup b/MikroGig/20260629/20260629124309-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..947607bceaa4b5e5a2ec180d98b50b49c01cb0f9 GIT binary patch literal 177026 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 z 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

!vpq;5L! za_K6KD#oHf;&&sptjy*8CNZVFFD4uxdKMVYyrL&?FNycyF!8)i-NrySR1Mj~k|t7BavzQ?3bhlo(&}M*E|o@JT3zo-FeBu+S2f zVs{h3*STqngBqb}r^Lw5GC5T(EzC9@Cva8SLz$wzswvkaVJyrr5ii< z`apBW)*|}<5mPwi--JM|8=JDpQ`;m{P_Ft}N3+;<7A%=)@uvGDGJ;_ddx-eO5ufuG zTC^NM=y!5GfMl*HB}0#TM3sMW#{qPO9vn)35HR<`elU9myLN zn+qhS9*Lbd{uY5BW@cW|CriqCxs#r{Slh=o_NkD~^DEvS>W7F!7NyXZ#p-FS)LxR~ z5W&O_T_z3MV;I|nbdyKMeZ&_2P*$!nrrb^v?U@dPPxlpCVb7tCLsziTt?7I z460DeLT%pvwrz~<^Aglngk?2#6qUwQQa>_G+t-tZ&lZowTf^GBe_iEZERsJ5G*wM+ z*v77HIiv+hi2eTETV_aC)CpP9HgwZjTAC6_E^<{1+I9u`?iBa{JvNO+)k%^XB>`sa z%*CKeNX=L`nVZVxISKhR=<%g8>dFA$D1o6os%P|` zeW=pqu1xO$k5o%J4@j*Pz#K>wecn^?Q!psB)CbBJvqqBT$bb(H6CMnl+|Zvs;^(E%R;$Ttgl`0?-&lPmQZ7p?5xy z)@!J+R&`WqbN1H`*&%B0UF$5qa6HLe>fAiW$44c)_;)wrhr!*? zyFOWshoCy0E1v^||4x+44h``d@FJHf_>R+)P*@rzpa9bOjLn4hGkOh4Wv?)jWGG7Q zS)82^)&B%ZhQZyDWwqi1$q3ZjG7`LZKr`(h=GF@l|4^amtxGQ-QXtnrA1j0WsfMtQ z2(9qf*@=lp1FO;#!xTllZk1!mVhO_1@-UljHJ6XIxi`d_SYkpfdtP zT(z1lD+RY?lr^M~vyrVRLr&WBC(N|5HZbH8XTeDlKJ!D4ogw)l z>wp*E+Tp=;XII)Y?Li*D>7z8P-(Vw`r{UW3sC*I=UY6s1c?;#H9A$J3WxwXXcHO2L zSUJ<-85K2fFk|u?cdN1(Grb5VsZA2$fB0`ZfhVcB$Mc}t-R#5&}PQvW!@)TQ%+FvAd^VGuj>6Me8VW^uHJSfTgK!c9_`(_1}H`}xo*G|FL8irj9EwJo~;KZ;A> z9$9`eD|Ou^@P;D}OYc*cHOf@5tMyHmtLs_vPFUA1SjPwH(16Oq17}GYV4w(J;=DYC zr?zR2(Y+ez9H9=lNFk9%Vj)S>G2LETijl5pA&iMhlAb1nAbMe_9(kRuS_4#n9 z-65pggPlUm0U4Vv5lEy=%|cs(jC`&wd7E*}ZT~L=hGQo^fa~#fzY>}q6>vq8^EySa-{T)molxoafgLQ z9Ke5~9|fK@Veoc2<)Gqjm|pTw|T{Le_jNI51pA4tfM4Xq}4I6j`sy@2c_eL zk)n_?C*@_=8cvD|S2TRphk9QbMvAN|F=Y;1&SjJb+@e3uycv&Cw)-d_r!g0^IYHSv z-bVjiFaLIhk`pR8yzGHB=gc8gDb&}>TGPH?!eZvY$@EIx7qG@qmO1w-k#m#h5iM}2 zxvP|Xvo=U*!5RR1?}c4C>I!~|d==IPS4F?{NX^l|6~O&RsA3tHs}@|wW=j3uo{^7M zn&*92xcNQAd8X93AT8TA&F;^wo30`JvMa_OHy^DsRGcWS-NFSQw)cA`*U%g#O`D9V zA*3gtk9M%@2Y>e(2K9sTh52n|EB9cxtO1nh=&pq`DpN7HIo1q_KXA{{nOe3BEBdrl-72YvM zo8p4M!-nYZ6Fr2R1!li-jmR_nU{V`SG=jYZ5{OFJtPslN1V6OSYQEvkl*jgFq9B zpy%QHp}~bB=mfK*{<_NN2aE`(EZ1%C#LLfQONkndp!Q`kY6>WGcAg-Ue2|?KDQg+K z7~+)qeUrRSM{oEcF$-M}I(q-v#%?3+mOZ|PzQqS6Zw$k0x;98w%v!6{eKPjt6^BXK zASfz~PI>XM{MIfZ%OEXiCG7+b}yW*v-d$vR!^e%htk1HWos5DGA*!BMIOn`vwpTl%OD z%?7j9cj9ZO&brocb3Oxvm%S&-4Wshn!4P`V2^${L6l@Doam*Zm`O}hcOBRFUNa4m) z9RbEgUi!p1di87)thMGtB`5rsD5IXI7`<|)PfPldCW&QtJTSHp4Jf_(&#A3rs_SapO;2k|zx6VwZUw zJ6DCso35*k4jQJ|0zEV7sGDV^sz`qVIfjm2y-~5P@9BLI%(B-{KOz=1vD?8M{2D0= zs3Qv}XB-&tL0m@!Z3U#rVvMvhYeGSOCnaT@8QXP=8Q-$LJJ0}Wzx2SIO(L0@kiyOV-_6*hapN#)fahpg=%0>4u z5HVN{X_o3JK<35Auk8%RFY)D=R|;KOz@lJdHI;#IoA~QEt;rHDj`!*8`P^6Q`fRBf zGAf!WXx;DcxS=TwJ*oVPzHQ0Cie6(v(y~d_m*bvwhjKpMduNuS-6?+hdT-vd~>b4bL5b$VaD?8ASuYZgTn|nLnQ~N1q>IP0?H6w^sgh z6>8MX#^N=BAYo;J+GnpksVfj!Xt4*vX&=03*vLk++N0LCx@Q&PB{1be1#WN9!SF`9 zM58A<+I{=Pg5he|gP@&)a8mydQ52bK!>yz3T`IPx!o@?aF2RKRT+J&p5H4X@GpnGv zX~i8_*FXYoC>5HMZB4)$AiAzboc&)$F6%-NcaCD$0B#0mAC5ZNcs}J!QiwR>+Iq!= zLDiVzZVB)XF!J^gp_LF4qC0ajE2WFa!xOx2k*ri@SXXy1ZQ-_)UL~rRik%_Nx`9FF zkuyP&z#zY#zN(zOBO1DEOR14zdz+ObAxJ?m@nhYs!`nV1TEpwYAvg$HLvrjfxH|pC)7n6bMRGXbgAI@ZwJk)iLqzPc0D)Im}m)Ptgy zUX+%Fj5z8eDZ|D2Zf}3?Fo{O}@tYvqJgTN1cf0b3&eGEUHmK8g1qvhnPyOzb(RZ#6 zh@|a^hl^SbQC89Htf5m+Gxi+OB?ux#yE#2u-hW4(!R|E%c z1=790PR8nVe94Gp?&^Mr-gEeZ-?_1;m^_SfFKE+M5qcOm43u$>>b7@XPry; zAl}*POpziJw#cq2e=owtoQ^ZYTVtBzoo`h9PA^o1rDBt@2~nVdS~)t^ufCW@VJImu znUe9@kHJ`sN6$31ynF_;;a}k+gc66Q>z2_puD#8_F+LEu7jg(#!V?;Q= z$l-JaH51Y12+|;qySS9%YUjC#;)VDv-@|U;>xUy9A08uafeQM11=Z%=Xfv`K-FMuqa4y?RR#F@w{y3N7x?H$uwZZloZ1qQjog&-fI9SVertHEZcyBwR56c%ksIUjY< z!c?_8U-i}td~Uj|x{b)1kv{3Ef%QQwZ|6XpLV-<7&>+jTDGMArn3~~8xJo=EGXz;< z(~S`vfUwZMfQ}T^Xg7S*-C0clQ(WvpkiynD^GXCm}GGV2tTFQH3!HHCy zhQ>X?&!EAZly^t8%%7=LEcE-PZ&8`kwepFa_6hKq?P_~bd6IBarT;T{z@1S|ML|I2 z-`qW^o+zd+g&OK^$c8r{cpR?l(0`-8br_&@0_U=@ooBX%q2d|EawakidFc;sI=063 zR7|MdS9iTd`rJTQr(yr-Y3Sv+`db3}B+$*WBhxu3A9ZYQd&0IuWdwNb(kM#0l_(WL z>fU>jtn9}N4+Qt87y}?5fg-CJl;n-(IR(kJX7>T8Sc}r)0EIu`^9JuNq#_^ZxW1Sk z@5kp-kOV}OHp&qy2GouBON%}XZ~~8ec?q4GGVRm3!YgTnM}Jl8>gFiQ=68)vl=evz zmP)r&uiLr4i4@5FXQk_Z0Mxq=*WoI-_$%jk!myNOpTr*y1 z5Ll~~HKGmNU=TLX1>fy^5Dbk4cnI*#RZW9gmI8Fq${lwTz!RhnoE7OA8s>NERmYPa{@9>CT@1b%rlEG+sW2F0B7D3N=W}0H; zx^y*@0Y80!yMsHX)_>FnTe4_kGWoma{{)@uV=JOp$BA+y&wPcp!T|F9okc5->}ue< ztFW?=1{EO|%M&CbF)`0}$oguYi)Z=kw4EUQ_hhbVsRS*K8raMLA){F8Tly8}K43zc zf@7_%!o$*a2aJ>6M6_+p+pL0d01jI|<0UvjI{dak_Q?)q&C=B%)?l=p0qHJWAT%F_(LjlUV!HMc-Rf0gY&&a=ghHCN{VDp@@jZSD~7z<9p8xH^yeH>3BG*tof2NT93fs-@4V@ zO{M=Q9TG2fvPGi?zpBzg+yx`DkujoqjCz(79^F(b5jhA<36qQF!E+r2tdpMvAZ zZ}3RGJfXR*Q_;CcQ4k$NYvO=`)OCo9pL}pzR26Pvdm~W2{mr7+KtYCzYZhumP3SYM z)j8+S5L#IBf~gN*({Z%;St(&c2VAP^jWK9u$e?zwCU5w}cL6(fTKs^T4A1ba-dt=) zbjuR0<4B}517WUlL58ksWkF07TQE9}vSSVn0GBSriGxLjgdI83P7jGQHn8 z6nT!-)PsqGlT^hFvk{RQ_B+yC$WPM~6}nQ4R_iedKhnp5I-Rvip{5mGb!*&Cl4T>{ zJAWwsQ@Ys!%MIoWyv-E$=G2Tk;jQ>fXyi z(6sWKXt{Q7hoyw;IY;|{j-$63lt<7&ub%4WvOOp;0=od+R8#RC#e_dRY<=- zhEM`Bv79pZX;U>6(5?~r8LJ5mkLM3->P_43Bx{>5ZJdaq4$P+$8H0$=pz(**S>Z@m zO(@!PmdhKH*2oxuF|bHoU+&wG`rF>f;&PYyUgb4p zOz-;OLFiz0-jEOY{6mr{jDR`Eqk__vT>h7*`i>;RV48cxzn^9;K~;n$DiIQMvk8=t zX${lUnH46<$Y5{1{`tkGP*&*gtP!rz$cw2_M_h2*|UH= z72M``T6#v%yqGDFKAw>UqS;oX=mhLCZwSmVj}pZDS$Nz}O@%#k$mt-d#2{Cu2m6gJ z^kU(wUEi{{f_}(O*)@oiGlfYE#wY>)BQYU+JIG8k;tyHv4{Eo&LB!@vnT6p5B_oYB z7h@hVIG44i#n@~?d**U+Eu_beE%U}T`SZzs;TQ~_Mc%o{K?xP@{x~VdA6G!I&k!M; zb|p=1gHaC^ozT(au6cTn)$Z$jnsB{K2klQFU`v!c{ZCL;TioL&Nhr2I7(?&_ylSCh%t}SWRS>B556UR2Ecb5g-e1WEiqZ`1+FX z4+`pLSd~pTm{KA6k;kQLb?-rCgc`x5jAoBJwG_`wz8M&-vCLjP05EKI1Yh-lAy&Pb zBV45)_N97ZyWPgSq+F&H+u)X|`L6Bra`slhy9TZP_V)u+)Na2`eGf-)4%ee0CgCFemYe{8S zfWTDsM=szloDIM<*ANm{C7R*5=MDvUlOKL-4Nw#>>wxu>!1LRG zL!H?dCIg(2zA~p6g<}?NDA4btN!wWuwdK-hs2R78I-01}hQ7FzOZpDB<|9G3ZQHd! zsh<@h7@MJZhZB^nJQ~)zNAEB}^Se{;9@cR=tM@HV^&m$<9NaxlyysTcy)jUxfp$4l zV19V)EPDj4wWhHrWlVKYvItDN$3bc}$|FqPiI`cG{a^oFbq97$cmaki=#^ys576=$ zsr?d8S+}Ndjl9-H5S~T}9d$!DANB4_VH3{9*Y~uRw<|^pwCsUL;K1EOOKKx8J`>&G zCfXx^Q_%Dyref35=ISip-!(%Q%HXAm{biNDxCE~CGp?9%Wgw~BV1}Cy_%_DIPJo28DJ!i=8I^@JD@#G%EkO;omW~bMqxN_1*#xq%}b9wd# zo=>e7Z2OwAQqVT%?RZMctolsy;Rl_w1pITy_+ItBXRUMXetMDxVH^*MbZQ;VFX`4G z5O4}c=?meoK?KloZ1j{-O5&y>wuT6$hHBNR4jtKVmgYcb`xsiq*zP{dG65f~!)q$D zkYrvQeA0t7g*2dTHz}#ET^T@bK7O#J7x@e`oY-G#h< zp$70!@H*9~wnj36e#V2ja@tW|8HYz-Od4!7xb=jj6H28SpTxkRnR^M#aV@}?0SQO= z3#z%UA@guj3j2EsFKrZwOEN{^oJM2H>9`3HRk!Wfb#doiZ)M-l2@|-WMPqlVKu0pi z8Zb28y-oJ;c5~fN;dNo0I?Cn?POUU8sX|K&ps0zui3`$QC^;pINN`+>5roSpvI1@m zwcE%CeSbb~mCVM;pRQ$3)nu>k3u7KG*w{YZo66If0*l$N2tWnQRcL3L0_(O#Yjxj( z$snCMQ&oJU#Pe#FQ=21h<-#wPcf)~YXVsUIg<)EVj~$N@rCzAbL^ayRJ&#>>kKrhOrL;zb%6rG%U2aVb0?NrivJ=*liECcAYPokfk*l?zqzTM(pzxhdIzvN5=UpdfzDcJK&Ark~-+$ z7PJbi1^UMzI8xs?kjN3l%Fa=5_m5qr7lHzmz|%Id zdzpWt;_Xc~V2i?)51G7)haL6h<0&C5FgYoyw=WYVJkF~E%e6n8IUrkb)s-jd3v`T)O1Dac*^ zcdtbTTNZ=KaY(hx$?O2$JUM56{OnE23RnVASOE#6s+ZCWIn*9OQ1t&DKjWy{ZCz_Ztv(pI_4 zQTv67CvH$Nx#hY16iz!>qlwIl`G~V`#jgXUt%6#Zfjm8ph;{_jFE6+*LKCib*Eid= z^LkV6WAn4#OAJ(VqumocI-$Ps6OC}JUe|&E`%vCKHfC9hrHo5Pp*3ZoWn3GLs|H3i zHhKse8Su!dSHmZb-#icMTB$q+d(f)gQ>#6G`h0YBC>h5ZZ>l0asDpTD5Trs!710dS zB3$u-KU7!I=N6I~x`aIzfU&pM$1TgG(NHAPtJUf5%_)3+`lGE-((39+6xr-*dU zWbSWfo|1dym7U;BL6#K)t8OB_F#v!0?<$ZhpF?f@?Mqk}+y^w)VkC3){&ciU;SAK4 zNjaV3F~+-zEz{6cw+hoNn`AfoRTD(&$%8ZxYNxY*jTq54vasadOvDO$GO`#ALa0_5 z%8=~__L41n#B4k3kG=h_VvqA~M3ihP!w9}1@ZADGj?+_ZVf}S}ioSmd za*rM|{o;zA+DN8VcHyC=jp$!bkF|BPZ77#ZzN+_RC`Nufdm^dg36>Po>Xucc6nydy z2!fhT1N7=f^T|02aL$cL0=u<6f-~&%@*H}k3^$?|*rDt5Km@L0leL3)nIsoMGmaF4Y8-vokI{Tm2VR$D>5_Y>? z!MFj=58)#Tmaf`8ZT@!7p2LGp{}|4HqE`lI;anJ{cFE*xyy}(;T+upD@Hp z$eS=dHV9@XDms3}=w)2Fal%XTymM08urzYs-_;=Q!U{Ed!*_T;s0X6Ki$01SZ;H%T z_-RRFUe;UG0SpXUbmDl)I=2Rh>NiIFi}e#1`tAgRJG79nmnJmDjCZc2Ca%n@E&KlW zlNfjeU52@gqRb{7K2Y^S(Ag#dU8JnfUoFy&m>VT=(R>rPMv?M?q~@$=Ie30Kjp4a= zZEK2+d*;DOT|*%H$qq~Xgr#>`^-pnU0431;4NfeL+0a~!O`$K4O4F*-jHBD`n4ZVC zZpcCC-Pk;ANezqWKF{>nm#L=7O(no~@)5N1Rt=E9i?I9X)%{ecAv)|+=8JV^`Y@}Y zD@PiC@#1qk_TU0?oOM40qiN#N$QH6(ZD)AG=>Wg{5~JDZJgM%_QOnj4Ld}{6d2^fP zfzV2%MUQ(X@~P@t?)7DkG0BmP{Ym*;jXzCQOkxX$v$tN?Bb|lnfbU)Z@G+f{6>n(< zS8fc}o4PJ4n?v%-wbTo1AWX0>025A}7zIVZ5|6|C6SMtL>r35OUnRrWTOIm*Z6%P~ zgU$N%)SwB;xQX1?3cl-QL|O29znJU6#)9C zqb1yetlaFkYXdj8v=(ibQ)Cn-Sn4InnSjY> zGGvZ^ZgqLvJ``4n5n=CG3D&ZO!NrRH(*Q_@6L8I&I*?>#Hl<`f168bJ-h6k<#b=biu&lWZ#MUSRo=oKG z+yCo^Lgx0*k@q~V)*i8)0igZ`%VCw!B+jF4gCou$hvPTZX_!a!+*2Bkn%x}LcX7hn z5b`4JXjy(c9#|xta3@Z-<HFUQwfBpJ4UqI)0lZIgl!UKAo)E!SH^A!?Q}^nUG%<$G{fCfYEwDk5COOM+bX;`8d} z9;&dGv6(99aMUQyMU~&)kp0TtUu^@>himx3B*$fr9j9nJ9!A$AuY|FLe%#W7Yy#%Z zaG9Es_P&oG0EK}?oWzi5z6frdgmGi;0>AC5y9)nd!$ab$Z0guNyyuEv z_JNCGd4$)K1J~`#i%U*T=y*a+YpDif@To3)ePTqC_Dqn5n_S>{EmPv)D-WAWU~|^a zJb98(J<$ATP0_fhK(V4i$E~7!BMD zn;4P@h2xX@oL%go!}k|IQ<2q>MabQ#NL;7`hX(T;6jmpejJNHpqEHLYc_hG^aDTjN zuDT0iV4V4`Mh4C-Sy?d?vNjeEJ(%WaUulJQV?GS#SZ-0K(?wM7bVD?+B;GEwAFa_>M#sb`E=`STt+(KJ6^?80p)z(+qJsAB| z_UZzrtaf|m7*mm0JtJNhS8--^=1PhAq9jG@6h|7^V zK7ASMRfJ9jf2yjzF*>m{YS&25-MFqEGyawI^^}*cn4v6jM>1L5R{N8 z8243bDVqUdeTM3A8X-rQd?kpfzx&2blNqhYr(n$LP#yh9lOq&oR$>9 z3JAK*o5uy`DwLDZlZmiI)))u=X#oS&74465bL6nFmCM*|WZfXT?t}AfZLtCMRI`sZ z?#y(p`kmgGJGSNAE3zS~mhUQeUO0tN17G%6EWk|0U1@tnNG6Vsie@U6p2U@Sr|ek2 zL+pd2X*qhZ_X>Ar+I->G-8uI8A3fm&F-9mf*Lh4wMjgVq3H`@IKl{gHC~kQ=XeijW z=TwuR-+PhJ&z5$@m*m0pjjj9jE5+*ma+w)A`VL|R=k|GK1s%IRcpdVMRvNRAQ+-;Hr-oErIq~{~5gQTu9qdd=%>y#KQ7&^m|^}2{C!(v+#C&g}>j^H?Hjd`&|^W>W44t*^?Ny}&! zD`-)J=@4lTcT?A-fn3;T0G}T1fc{ zKA`(OlEs}pS&O{oTBF}5*)P2TfSs7K^kD|K=_9ACV5X0zxkW-|Ro_mbmj1THb|*gj zNe;a7+kD4wpF{M0>fFC9vEjCn=?RxbCK<#&=B+`Td-Me8jC0rZCKYEvb+GQ5`JGsU z)3nOsCg7O7yFkrO$?-$0`?+giS#g{%`=6o0do;;?oZ0Lvz_yzUPq%K$^)@+qc?mRo zmyEV)lx%-3#nLg-7@kc(zKJk%s8-8-eQT(MFDed(As98bB$lVBlZczReh7Y}tZMa4 zyJ<>9k^8DW24ywgp?_^;q!)fhh%#j`(iNhPpx)(>p&Fsx?d}-rYrCvin~oJhP9=!Z zU#GNRF&q46-^VKZn`8+UH&a0%#2H;ld}YXowFigZEL>0z51^3KG$1Gy!hOCI*6A-0 zr%V>Fow2XNo;O%;;)h_vjTA>1B18q9zgO;Nz`3O$wlxXU`@3fqn7Hif@oYi41(^qh z(6;P^@T3yI%7ve*C;6LRcw~6p~ngAS2gTC22QXH}T365qDvvS)Fkgx!D+U8_lb#VRCIJ6;H6&cDdWDSFd^f|niajVa9 z=W~Rf??^O-v)Z)Q)Fa~TyE)@!uq|bt9#hEKXK$1eb0!w6DX@|L@~|IEK0RbQe*gSA z#XpKaXHK+O)JU!j86ac}CVU`Qt92(G5v_$=2URj-4(jwWqf84BD(D%6?A24pZs~Gj zrQkJ4DBC>1iF=8#z|0gH-me7rNftKO?Y>sjWBUILFEhm%7zYfJACodXRldrEeX ziB;1iAi|p6`P~eA zbtI16;?eFrg89*U;_CU5;r9MWR;{ZufH=A#7tO3ejd9FB?dl%USoQ91Cp5>R{Ly{9d}I2Y>yoLY!GdJYqLV%R<002@Ek`svqvUwO@{DzcG!sCd?`&cC z(5QK*#QtxVTt?TF6tE-dNrz96;D7sPa=n3$WmiopV9!BDubnGL!tM15%2PsxDfWWN z`EJ8sI7(;+n2CRbUeO+r2mR|R!<7wsnSX89;g2*~pJK9(LP2vKrsZ-c#p&?Q5u6S) zVmG|D3Pm@B;adf>P77$_A4Iw`;$~!NQgcHQ8i0&t8rPdPSjuBvdlNkgx%n#<|!BQ;OHWzngj-HY%hukb76W4u@P#1 z1`_;)8n1Q+eT7Nz#)@V3OS_YC zUMuOSYW<3A-W$bP7G0RhqxMHC`-=xl8mta%Tbuq3Q1}0b4#ktK{2#*W$sh4McOPJf zNqkwDrP^l0z%Z4M8wIKkn=xQ-MZyG@iJ*hI0#Ei?od5i?g(CF*a?*8ni^^%1gjJi2 zTO_DhStKxW5|f}=MI`X5#qmttm1SFs$Y!D|=Np_jdet6%p-~Rk-h{0>)}abt7>(T` zWm(9-cGI9zR+G_(q-+6UmkTu2g~q8kdoIU0x3YN*i5RsagVbZ8xe1P}Br;}TJK|Hn z3iLrG&F9{8Q>w-j47qy{`^ElEO^?L5;kY+( z+)!e!`JB4*ms?lUt!|L}=;n&Q|9|ZKO<8ylJYyxHy|7ka$(`CoMokz)&$n9k_NL?nqyWVp|_c<9K z@%b56qy7M~`Drk_okw26h-3}T`F6neE0i-SZ1?VUh>4e)ND0UZDL7*Rmb?Wecj6q@ zvU6%=_NX_h$%*p^$%GLYE)_N!K#!o-eDw5@u8uY4(a7GkwQLr2v6#!l?qImaR!kh7 zsV(p(IrcH>l7ydz;MXx)!-X@7K!wUG6C1Pa;BEtfAL=6qT>;GxG54vDn95x|A}qU8 zly=yf`(mb?$b&kA@LKmnE{(2yRZ3^Q7E`_+9@xV|bMo2+7-ZYYf`h+XkRBQQZ`P)O z1VXGsw*5SaI4ZT4K?t-0$;J>g*OkXCqY? zj=O*K4=)e5w)cF1Qd7$E(&kMNuX&uApYeO9!*R&VUDTOZx}SVnj-Ve5dH65Gq?g>s z$Z8`bz1Eg4^N&-`cZg8btKR_wA;P`n>3cWM*`)Gbg&B~HOG{$!VXn4X=0a-M5eKJR zmG_SqC`rGm@*#C`2y+c75%8Rha}5~t8x^c&uSq8u$`DUL$r&b+-4;MciL^8<45%(! z46b{ypoTW?C_^&U*hxdI78@eH+2G>egSik$Ft8cF&0w5HyV+$+kh-v(q7Cf4)yg=Qr>k)12S1O$ly+Hw`9?AJ+ zGMP(s@*qG)3ALt-R%7!#CF>z3inp(^(Qf;4*k>p4035s&KKrF$4t>whfliy9 z+<1D+>{rHi(%H4XlF4hf>o16t?!M3+*F(v@y?y$!cK^k2AXw~i?@fn|b}!&RzNpU- z#^d`?y0gSzR3Yxxc&|Mq3kKK|^Mu;V<6?*(bZ^k+|A)4TkF*&qSCFpS9G8W2_5(eY z3=jZ5K%QUvofN7GzepYB5PGWMVi#&B5DpdONkU$GH}T+ma=j2Pe9yh+11rAYp&djr zV*rB$jcDtg}7p-V9*m)Tn9E8U9P zm=I$sJJw&BCjZnPb*OVKy7`SQDR7xzvsb^z+MLV62^+kD&`^GV+&&qU?dLfiO&SlR zjWYV#$FfueK7Y)~uPuj_Mg?%RrBaRz+HV+MKaZS(e~p3JpOOZT^cL6S%&1oq{L8iR zvQeoFx!~PhY~*PD(x6Pxb1b3gc>UV41!!8TGpu${qJv#eBR$CnwB2)j@Z*ou|5I?d za)qG+bS4#1Jl9KwX&BICrFP3rgC_cioV)gA+rB~%tD1hX%FoTJH-mzb+u{uN8)o&> zD26hi_iTH2o>tidQi zg4B<5uSUl?j16VKvK4XX3JzqRI{WWcF4L?`dT;91CyL>*qY-USA6~%J>SiwrR>8@w zxJ<51^@nPdC)DwJ;4by=(hpL{1j4YTMyjG3#`H(6^W~o{_#xyl zVBzM+s(&RK2_G;11cY=hJ~+GubvrX7p=ecPFDK~$k9&hMVc{#TH^2{w^YlUu7cG6X zn_DCG3$+t1p&l<-1(}9w)HqR$xrZf?SwpI&2g*tq0)gu6LhaS{+KL8iEsDerexi|M z@Z)~}sO#_xz1quZb zJ8X^@0RYRanfkBSwAe5Kj@gc%d5WsK=S=i3Vyz;oU`0a=hcmp-lk0Mh4^r;QpoTUK z_dT1~mG$jc?_kcR$1go2^Z8TOc+lS@ol>|7?r6gD{VAs&Dvj>}$Mb5k^WL=fLV@UOmaS?eGEoSl-m^AmD0+~jfSPTL$+xARW*3^x%3rz z&S}e2nG&JU>z+wchYVtOc4;O!m>j6uZR^CpCbNOBg{+wihkytC=I~B*J6;1nc|WkL zR?i}_avuJhL@mA0;C!R>aKEnRqQ{ZWucY#g?=P{tN z(6&2;1C{jNpU(7)dTFBhjHUvO(>SZ{$MBu1GG?x4Tueltg~F>_bPw145E}-U2wvfb zyAbs{7gLxR*q;y6sJrLdHvzp%hpjY6A?)8S0n{h_@;}VIVfhP&}lM z5n+Q8*#q37PRN{PZE2ysiON1H0t%2b*uI>5$E7_^QFoJpY@ZG;=z%APaC1KTG93=B z6U_Ppw&3xEuzbaM-IBZHbLfUq(TWmLDOIS23n=K2`KV|Y_Lu7&U_f;)rMpo$;mylp zbd%!jATG2bI1iKc@jHMZ6;vCWE-6k5P-xhu%3~xFG|V3$Jg>d&33Q_3ASwlsj$_>O zYei}6)5ts~ItK(sQ=b#R2Pw(k3h1?A20kV*y#iv><0BK(s$P6k%Jn*M%GC`;rtVlCXuD+?>D&5-mI7okFya6o<#hjn4RNw{%SK*N-Gwf~FaF_$KATbIfMYgDue zp9FB1G!dFtf{cD^l!es-NEnB`;=2bO9F9yd0`wRQ3DXT#Ulw6TDpky=N$WO_Y2fNo zP#~JD*?eFo)i8ot?V>e4hy;1Ia^sXwkXjJnfySTigg3Haz0$8d>actNSMroHeEUTWu$_Lp&3*-4(Lbt0xJ0+&;$(#R{BxeApInSEDk288RBP8^mo5&CFZytlGg9?$C!I|^t5CfwG_gy$OrA7yhe zjpA4SZ(6q<$5zkHf5~6=%S(`#Cy|O1xQ-Dl6(}{P?`e65&CMK~LyU`;hmD z158C_na;S`4Z9AA(W&<8KcWXJovEv}GK()#3pv(UOTE3H3u+y2E15QK*x4?2KvmR8 z$3LnTXvFOQYb6iB&^B?Tc#khoHOLgxWVcQqdeGG6v?c?eXF{u>aSm`XRx7Q_b0Bj* zT5ZZtLsjbi+iF~N zr&5q|PTzr6QJ*x~QQBFhqxewRWN4}wSfdsPz(79Xif?1#5Y~}Iul~jREpYtmoz%k` z=|k?A%-LXu2=bM9l?(;Zn5p$Jdwf+k{dJ1q=w@1{Mb~j z^=#y^;^b}kkQ*-3A9}tRTo!j4rA@g?+}J!iO;B^jyr|mG)a%c8cz>Ke)H$%Mg4X5J zGhAQWFH3^El-B$O$$&O<7P`9 zqmU%0T~8JHmZb4V?bRcFASc043=;wL&+8fCA?w+$s9X;^!+OB*+3QvoMO~4BgVk~P z#pml1ATSnwi$r8Wg#yqWy6u7y%@%GV-q%+AjHMqchO+C@JvIQBMboN z{+`QDf5!jo#PkN8X?3E|0Z35~;EK(LjBZLN{|hggi<5y*)lVaUxMfP_5rb0y?+X8} z9!gxwDUMEM2ZOT_wyyVvf+(}|b%PV9MBbRn5A z&n!sH@`AT}Iw=9NQSEEXby0hfM?Y5MK*M26hDt9o#BOzR6#JGrjPi)klEs&CZn_mP zt~p9vcIZGt_NpotTVkw98Uv^((J0Q3I*o0~9yBGm+cw==1i!s%9@Crp8TokHhaDn| z*_&%cBwFLlf+_Eo$0Rg+i<+Jt9trNH`=#SjS~wbh+Z4nvUbn*kT#vAqKg_dAZ?se} z)z5B^^4&nH52zQpNasXygGHc|EoWqi`J)=`5*$+i+j}3ZX(3K8LDdoHq*;kA9=OzX zA!U@)a8iHn<=n(2sz`rcmLn7hF|th(ET}WHLyzKz2Vy1S8tErQzPrnbRhzD7jc8PuC)`K>qZ#~+7yRbZy zTFAsPdqnGq2RNYt7SPl3ZQ+lryGEsQyXX=&f%f+z!(#Z-ktOr&Bm>6ZL4mwqbu4;p zxz~zXj@|sF-TtP20YQf%rPluH9~_}|E*?6gERIG6gbNL<4+~|_40Qlll1h<`-KPV? z`ehy%N$#)@0{J)t5fNbc62X;7qt$j+HjW29GGUPB-`z-^<3N$rcNS{p;Yd&Xhq4Ud z9b_}bq^`OybYt8gwP1m#)O@RT+_G@n2f;AK#M)owcPEXA?7;A5=I`trcEp(Zc~1+> zykC=9nnCX4N3cAK4*^e=h`tJ>85$miBwx5V`PY%4{4y9^Nv*F6CY;vG@)4^mowIq< z4Ae+I9&LKF1}c;cJB6?e60N=L`UAI&VKvXlJkY-dmS-KrP82E&=O~JS7~>x6C9rd1 zU$l(-GA%u$bjHjVBgbU>AH00wKJ9^~gD&`22@l0zWA4w!9qxV0`Z)(Q#SS*G3!Qys zDPX!T0Q&3r?PfSPH)a3JGm=1Y->SBnC7N+u)hq@+P0lC+q>L@lO0upRIq^#w9UDkH zf~Vukc<1~A!}!<2jOc0Kz_{&Qb*nY%^L$W9hnZL^OsG|F2#%pU8Fenj=6^ddw73ua zOvm`eLn8QK#b+ppCc(?`Z|FR3Mg5aBK#B@WelHRc={6;_n+{&w?BHKV^5Oe8AHj1< z1f@f?+~MPqKOAA-@FH16f~jKd8YO5H&Pg;Yu06-5+lnSP=jZ7zW*P?$Kv7IR)pC5# zgdG5EVxEkEjRdJUKEnj&Qul#cL5a7S3_UacgPMS}A0)~uJL zwz*wY>jt-alt6o1tS{)xLkQQy*aJ1K_f zOvshdc0{qMp8}ClfkTr&0R`Xb+By=>^vye5uk{O0teo*fy}1FsBn>^_Pg-aD0w=Ut z!(Ydlr;Hv3fd*D96^I^Sq1|;M!Ue6gPm?I3aJM-G_i*5I75}q*XkxjJL&6awwC4te zlsXwBX^yH*ca_UA21|;me*Dg7_`x4r6E(=*`Pc?ubNnCXR&%2Nd zFMntYB7D`LOOKQg)>GBSTCVGW*gh*(qmWkivJ$`xf5hdA|DSe+rjfeyX+cHHx921K@O#t&*;w z89X;l1ZiTGb|p-80r9#w*sYn}LwiS@o-jgjmZU}`pcn;+Qltz@%Hjc8ANyP*{H<`+ zAlTm6=C$qf7uQolZlt&OHgr%k%?79ZZ;jW?vo|A?b31n?>_y)`QgEli7w=|&pp&rQ zwGBe{>t2jvL}$tESf!~7die~{ot@&OISep>bMoTiGN@qwUNPk==p9!NdWNFmkXY z|CuQIPfRM|2UTDSPxz8@4A5VFV}t$&UUK`g%<1EeeMgO4aBoXw_RI2ci$*(cRrRXy zlR_9l01q>?e-{BU%|5omERA~!Ay0v7L5IF7Mk8{AU=T2@ABHqKqWZ4h8UtSQImcqpjLOEMOs)McET;R7m^!M5#p4=4G4vxybN}RBEbvjR z?YUTPxr@lYsOu>8X-Mf8w2+Q7J#jBl-ZuFa9qgwC4rF4#tWS-%@PDi+C8j3!yxQks zn$}j9?>3D9-fopiWz8|up#*Qi+qFGG1eEO&DAyN2l@s$>bY2{vl z&G%Y1_&S2f_!lzOZEO}7kJtI&@ccrmtw42-{N!qdvZw2;qtgFJ_!0fq>^fGbW)I~d zeZ(@@ZoQwA-sf)4p@i4$&WIh3bPU1?V=#}QvnzFBebdF?j}VDGJQ};a zwZ3ju+AhVg!VZM>hCyc$N~(%!Mm#(4zW|%mNLo}w`!}Z!(^=m{5s=s~bSZCffo}kV z?B&=@6_#i8R!enG28*)$NAt>HHIbI~-M(J)R1ZPJe9P=Trsgr2D%pb5B3;Q{-d*t) z?RLcM-y2!69OiFd3TY^LLOkAkCONkzpZ;HLzIZZO!qoz5kKuJ;SnGG#oAgR9pWGLM zw525CmGFtp5*ehPT6iF$8VU%?cd$3QbXRf>``g8M7{+6VswUy06lgkQ*u*bv7l22b zh;IJ|%4dN>0;Ib-g^{{zEj{kJ@!IZtVs*>2$5sccG5!$rM3zZ5{9PMc;9Z3kNqn0tfnc%ICIibvNZps8| zYxHn$_*O20R`d2z{*^Z*LR$juyel1td~TaqjiJj9S{llZDaxoqT^FntJf=XcxXLZ=vT$BJ z#H`RkKaTzC*zT(f4|cvk{NYsE7`Nt{;6wam-Exd`WD3R{0bOm7*$NV^-Ns&60lKHT zB#2`Y_u6M=c8hhNWltK z?D@j(XZPf3mcfPzo?gTjW+J*mCl~+@q`mS};*i0z%mGabcb`$R_dxE;t;|tM5NPfd z45bhbAhx8W&Y2;S_skXxE;#nb67Jws#lp_m7GBOQB!R*uali&{n!<_@VY!}@%ujJo z6_Xuw0?8V2B!eNv&%9t3ve9mJAIG>Y+(Z2AcLzCL0+h8jaLhq&6u}{cj5bosvDEP%cZpkm&WFe7;#7c$>m6_NaY%D#@V zHI7V4Yx(W`ER{XdYj!{AByrWIvmi&gObi)^<1;n=0dwkKp`>|o?z$@JWBiHEX_K)RIM*(2i>&99a7J6!J%Y$uoagVkZd1EqSb&Et(50 zk?wsHP6(P7zo7o-^6uW0aR6U^!%^oA-kBG{88jybA4X$a-C1aYK3nl$!~25B^Ssil z`GbZRyYM>3l%u!DRbknhDR_Ci1YF)1DA`eD*&IP9 zMbn}p>SK3>T)agaDbDt48{%4=^9KLQlLIS_M&%8<9275d#H=tA`9cGMK#`ov!v<=? zUPyLJo!9=m>Ds@micfXeCUIPOEzDQFmd;3kL(`kEQR|~QYI;XoNT5(RoFqkujXgB7 za);djV!k2t1Lp=Sv|a4(iAw5422(cK)F0UK!rG!G`EyKb{=HbOmI&2$vA<#b)jW)f zRk)V8jRb*`k`tm5GGrOjeKTG_nW>aX2>@buUjqu@HC0d9MYr?%tq7>uyn!|eUzLin z_mJs(!qPOphd!RIwzBw`37QJ?Z4aQ6#fbItyA?q zGAZ47H9RGv25MS%x3nZ3=?94;kLuEped>BWHOeGE5a&AkZWH+N=2%(WZ(xvmPYWIL zi1qB3*iZhNVxRp`&1rc8u5In&7^Xa_wGIk_1ac~~IUJ3+F&VJNTbChNdLmX`t(ZwK zL6D`F(A;5dTVbt=#Qx0K#5SzLK24(flr} z1K!4%f$??caZ74OA=s?aWRwTTiv6u8DlqxT$(il|JwO<7wW+$?mk!t@&lU2FlTSK| zaBlp5D0Qd}`+70=u(4GxCZnpgUbKI^^wEryYVmBZMKe-)wEIVklNeSK89TUBM=lsz zLu9bqoCVzm>C$1eRDXAptV6CMoCOuPDm_~OYEhwS5+Ok7J$xDBwb@tW+iH#5e=Kxw zHXrV;V}_h_b=-uJU3p?RHb(mwHZb2@%`WSq?or@ifTva}56FFp8K2(Ao{b$95liUpTi-Qck`*;+|~ z|E=VRHHiSa5WS`&W7;Kz_Aao(V&L;!sC#!PTq!5Nh zWSc-_;jIL34Fc;iI?vD`8}#32hMX9lQivZNz6(jj{bdDXIqs&YLox=>K8u;CnxIOR zY3A$XTg?5y1oA~bReP(2O;*i9=cpwJ#K>9iboIkScj$rqOOT&*In-PiRP8`2VmhR1=ChjIr%6 zSfV+%RqzsJZRF#M7fh|D&76SPtc~JI-YF@x+xezCYn_SRw=6lcLugtCWcQbX9!j9z z16DdD15U#{8vT~JOIM)roS1!q#XtrQxMMSLboeYOeP-d;;(z|VY9m^XBN#P#1wv2b zB?iRtWWnd#b_Sr4$BnR$zQJ>h`OQFI!bpM-HQvl1I~Q)(qKlJXpd-Jb zufsIK^+lOngZ3#!OO!ah--K3-`5+TaOsO`PsfZb7+fqs@a@BW1jS8Q5Qz?_LI}Cxn<%Gnq*7#ipX6#lXopDeI4Ff&sH!`B?B( zWV}xzT-p3~FftK}ga^>FF)c?~=KWJ5`@*lg*BRS-5BR6#du^1%fJDaO9qkv@=UFCI zPBSl3A6HSp(&1x(A0S1Kw+sFwwqrgX8~=r%Rq3`f$&~qHC5^&v(y7`lCIzNZDI@42bzy+m8!0FaD!i=o!=AJFpVO2k;>jgP=-8lVx zpHnzmAh4NHrfI3GYkg*<-HLl}9h9&+HKhxdWB;KatPsZEJgYhW8Zo^v!LcpkK@_6^}< z>KMY?2FtUnPcak|Siy5=+JV&ElWM2TxooQHp0->iY>>e|!KUEL=tz1(F-N8_jlZY3M{IHz-f-x|wr38z-;FXKVWZv!e;Y6PK#bZl$+I6)tA_ z^Rejt3D{nBpR;Ik+Lyy8jlNf7Q1LmJ?tuIrG6876*e7s5y^}isG&atcVbIPPu3yD^ zIJ(7FTtuZQ-Dbh)_PlVC6!Rc?$iTgOIsXgC`%P()MUC_6FnI_ZAykJ0-G?5!;x1<> z#WtMa{<^^win&S#Gx72vx;d3X_7bixQOVzX+=suXO#g`?F3kPRe7i~<*-f+(Csdy| zg#00E=&_ykOSux1A^kACL-=gC3G~;GRGW9t{0=5pf$fZ@Yn3TsZxC~Ypoy*Wb*y92 z{sl`CA;i239ZmtZ!Cn0Tia7Bl(@KEH>esq)T#AZPDa%mqt(|Q0p;n+;5A&@4?jBM( z{oL}et>5yqI-^g_=<_y49@_09e(^~q2wv*(0$`B5s1G%K=clBShVqoB__#p4ggrFG zB|h{yVv~P3`i^jn4rVdG>Cmzi@Dm;PpnN+`74t?^U3){8sFa~%vfX4_I^Bt`HR(m6 z^Ssc4uG0W%Ih8D-=U{(5(t)XlT<<%#DcarRzcJEjK+3r~JA}q1m`+KKuz1s|Owy~r zor)}r(~z7(*xkbBk)DIEWXo$p=R;T!%M-N>%@R2pZpdr?-!HCIak~ksVgTIH@d63F zKB%JecfTf08nfhr|Jni;(UX*z`E1j{HyUwn>x%{(<)Kw4pK%@m~`s z=K|O^K2<4GKz9_)*JXTSsz~)xe=pMXZxm8?&rT3?!QsX79#$c>MwQjfQ-SGWK?ZuN z@tcE(*!LD0;Gy)>ZH=+#wGtc@|BbogfK&iG7J)M$8STJ&h{~>GU|!`mGqju2(ShIQ zN1-7}a@pt8nF$Y`A1O@{=)UJE#U5ldS)dR*jP# zwfO11@#oHjF`E8w!OtWO3EW$zLt;$wqC|Z+&5)xyE`QP3-aP!K62b3+dmq^i3uN>i zhH@2;(N-;F?>2mJ6?_VawH!VIS3>joI{2I}&CA!V}ZCo9tf5;UR8KrEk-NXwZTit(EvfQ=jyp0gEJ>eD|8 zuBRo5zaE|+5RIH>*6Shkq5g}9n$ z!F~>xqCX^5RWRXUnt8ZM;^lAD9A|A^@6Q%4(0}~-UyDZ?o>8-_lx=UJsHJHDBB&5D zslTaAP!q_R1)KU-&2ha8bWEj8cb~ki^Mf-I&UsX+B@xE*DPJdh!20 zIKY?2gV7YBv%$7Tds?g9{EnT+f|D=h+af2JzgT*Gls(>Jw2GA62n4&8`4w{+2wlHh z^wMt(4tF~0R8gaY!F)uv}68q#r4`O z92lG7w2^AL}K5&|BLpfciX(P zX-w==D%@n%;Er|XFWJeAUjDu+_)bkZ)~h-np6`AO{jp8NS;+zN`i76$r7h#UJoL~pU+4RS%G*WPM2rg?@3}LnSy>0Yk+F&9N*XDI})rVT)b*_ zRRDA-Nq6ujtMi8(L?5#`+Y^d~6)F0$9N!cZgc~D3!mhc@fx%;q&}r)t>XR2s%tTvr zQ9h5#MVbyK-*MyDlbh>Zmd_L1Yif;Pk>m-Osdg~k&s-vbqAhdy?m>tLh+qFta;_G3 z0!^roA>$L?r5rz2<2(R!f{82JCNxp0^uK_K^Ed&Z2HibpH_`chCa^6tq?+R3y5Cqx zS6x8l9s%$Bkmo<|D5!pU=W=~N<P>2rsj_horj=Ev39B@k`cKw5i!tpvO*p=kUG+ z#=uQe)b75~V98)m&?@PA?sh<0C`23+$x-}Q071R+T!*B6I280*Z8NMy(;>8um93}X zhtShg**erq(mLgoa@WZpf*JdPiPj4x6h4=mciRPZg?rh>LQ7wFEvo3VSi_m-3-F2V4!~0 zX>ILb|E%SgS^(m(P^2cdctD$1^3nvPqV`LjtR(7yMUjjBjio_kEy>mYD^~4LhOntJ zwBed*bE?m$g|V<2M8j3Mz4(9HE~6-FU}KrkDd125v>YK$7_%ODY8l+}@j_?3#ZHHFJBB@zSw`WW^uE7Kw=T}X?m8MCPfSSM28x42 ztUv4T-y8a)?_>I0YOOVd=o}#x z5TiIFSD_vGS`&t+pECc0V2lr?5Z0fSFmZFxus`IC&Idp9e4RcI{f86rn>aJhae~Tz zsNk6V=92R+*qABhpYb}XBNUHy1rhR(-&;ETVMIP?Tm4!tqKL_E>?b);gk%K259vV2 zJ9s$n<@)~AY?CLNG>p6>-UL|Q_P%BPh^q|aFF-nEty3O6^+0aPI|sa>ECHtqB@qT< zpNa3WeHQNIlOsxvjvpB4^&1~s5=e<$EUFNHeqqLkcSx!nMwy>05wos%3B!hZs$?Vg z&R%HV;`x6M?pe*x`D5VPk@yiJ$3z?6iODw`B1DP_uc4>J7BNh25rV8a@olSF*@U}(b2O#o1*iG zmi2o82UWCQ;VGc&Wa4|R-IrKe_y_?PUw`m@q&ECP32!T&8c)5i0wfG5?fTiBz-Jh; zBWf>2fGwfv>t5+!v@-7P3%kETwCIx0^*-zO`*o>JCxtF$+^MOWxd<;;JgF}!@!f0$ z`NjP9ow5~U{V}&SqxXTP2Mg(US1;Ow^^<+$|H+W>Y9VewCB~DAg{2hq9Ct{!?B_aj zlkUOhQ*u+2@hhKICBu)E*ecSGLrRMrRizLq5PQU5PSC%skQ)PA{N1cfc{JyW`Tnd3 z0!XFNuPdJIXtFmXDEIUH#y$9vG;8!fl&4$l&<`*Vl011L7}0vK%VtvR;a~#XNt#fL z{J%<=-Rtxyn~&jy>c){u1Q1~plA{yKa4Jw(i(A9gZJ zs8CaaODGp!sk`3+D2oz}Ud^WGhPpaQ-k#OxG9mcr)m7HJ1jt%vu&}HCEu(@G-Qw!1 z;OEZ|0YN5q{WJz8YI76hJgB){VS&6WG)GS6EC>P@M65Y=jp;=}&jVHPfE7XQqCV>&lZP zy;+=1eW0Ts=s`g5nz~%%`I#J@{vS;u{AU z{gwo;#wkr+h?f8cD-vKDY0fSJ=*ewN=R#G)@eiapnNz#9;O=?utFh%Q*ajAeNtqNV zID4OH#8Lp8bG`bW%VdseUS`U4VBAiJt8}Ha>Q*MVVJxW)4xhoFvjZ2+-Kj>&|)`BEa1>s2I7a}rlzZuea=EX>V^(5S9#L3 z9wOReDGscLn$?+U*;Wm}zM)?X6}jHZK?CD6SQy&jAPoJ6ub1R`mi2n#ceX(PAKtK) zg~=q8Tc^#KN0Oq#j+;Ku+I9)-C&7(T!3%pInk2^KocE{ICZR+CUjG2tH6#Fy=)jQd zg9??W3aHj3wwy&E(iTaV-z|+H9{A^)Pn)uH2Nb-0fub$kN~;!p z%6*#imQ~U4JIszYV$L8s7~xNyYl#Gjo7}gUVAO2G{otHK5u^8+N)McVj6prWk!P=H z7=4F$t&{-aF=Cn^oATtMkOJgu*-ogKA?^^%^gnje=e~?sX1WuL2GBRkX7)Kux~O-u z4WZd;+$t&oT{Zv^^_f=3UlI)`)J?-ya3}xeY8ca4S+w=;bV$6}43kM((M+n1_g{zC z3Er#?FW}{#VPLF1Ic#vKEOU=}hExqq45?@!{ncvA4EWj%eATE1pmdF3i%_V7+tPm@tPR;9E`y_^A78)^XRwnwjeR9Ec6kR8JBs-H1ygwsqW4O41J zwJ$+2eTKXf4a&Bz3qp(nK^!EqR9q%aH!<}{KiTIWWn@KGOFs5mF%`egZ-eao0?NA( z-S?Twy{Zaq!FNf0U6a9N0k$7c0Nn!Gh&aQ?N}(P0Hq|+tJCF?ya7Ll?kSi4vk~Op4 zR>=76OG7M)@u0Zr(d&lBh^RRLkPhWAsCGY)4{5~tZ`Z#~;(Q{t7$pPDL$yujJVT?W z=Irfo4aX1^5DVbLHgj*-ocS?iVKRusI5IPL##kKSqb0D4S6DqbKWG1mbM&;gF=|T` zZ?X@FAXnA49IfZ>dmha7x`&>MHwMImOgyKyK(_RQi(>Z1Mv(6dG8KeuxysR9K)A#e zJ;`538$k9#jCjR|xp_n-qVmd)P*s3UMK;f_3)Fiw9O2DH8x!_cNGAK{qZm27F3{}w zzn_qeR>_No#vm7e+340Zpo~M~sIUz=rDwzuwfW4`VQnZ5D986bloy|IDnz@!bx)bw zI8ihqlZ*^}+=2GH`@(V}xskii>n>ainLf#K&j(}E34vv4oouG5tM|jJOP^_LIM$lu zV&V_s4Dl@8EMBIkC4!c@u<6{;WQKw2@#a?_4korSeEwTP+iJsC#7|f$ zlq^Cc!RbqZdr7eWLyE_1S@=2RaO$xWP^>s~Lo_40xut?j&mO&&27n`=>4+lUUsHBu zVQ?v8VMURduE6#c&<7e7X0rNlamD}#$8$zFB<9x{vE)^T2Br4r94L-+0Ve$-j&s7P zWTpd%LsuFC?g+V}XfP2t&1?-%#i3E~Lv^$$H3aJDM@WM+ht?|h3T6@hvm{5&pN_DC z9?cq)^LB&Y&bX&7Z7V-}`nnp* zAfpgi?;mvmjOpod@wg6MCp2kYz$3!{6zD7j8n^vfMix}pz5A$^do z2V<7AtL<)1uQXlcd9f%ehU3d@0mr5PKUFyLAb{$6&8~yh(CZK}hzU`Hwc^ zQiYtX|7KCFK5f?Rs-~i*vDcX5I{@s3u?(Ux9OH}3_+0w}yDW)4#M5IR($s&?{>~jp zLg7~r8c4E_8Mo|*x#hxPewo|W&6n*FuW4e0W4OO3gvCZ9geUR$>O39H`#{M9F#sS) z8f26k3mKe4-S~3ZJ5la%IQ?m!qyNj7vnE+~yH_n~1U+|mFOrxkj>IIikou`H01MNy z1m2dIBWGlc!_)rlFA6fmH^xCaGbcStdOB1UURA*+&7$@4Wyp|~lw*^Lrzrv)gD`g2 zkO=f}a%q!SY-8n3PkN07QAe8~#FTEIZ-x>WX#8ml!IIqIMy0;{|M|CqEG+#D(G6X- z8ux8~E*dn+m^53=P=7=Px(C;}<6YJXXS={FFUw$Iam>;p{bLYE#Ne610tP$2nw3do zQBM}qaM~VGY}80BOo#c8)JbQi3!-V@>?4J(9$uhhoS7AMob5va-nz!pOwkq3kI1e; zPoBj;D~a)@4>?r|YsEC(=er$1X9>{2Ib1wvqj^G06a;RYk2#vhKMM^1h!iK#8T-FU zA2R}z%YMuMLhal%K@1o)H!(+i()w;rt+)aHF$C{wz5m-W*xJm}Yf@(uaec+1Mf@i0 z?Ed&Qb3!bn9?~B(iWJXCT)=~};V{&^)7DO53_Ok$tq)4TvPB&7Dt@FMpS;C(cia-Y zGw+(AGg;cGTb6p!!RG4P(g&}Pnga?DiaRnuM-CR@b(h;WTmoLVd_)ELS0My_B<)h;DGBk5kgPh!%-17Y@+07+7 zbMAluWXxWW+9!~e)b8&)V;HypcoPab!?>i6$8THuO2*aT4ciNMk)|vAI#p0Jafp@n z`4>m)$NW4Y2J>FZfPpWYYQmfu7ATsX9LA0U-=<}y$Z+TlUsMNHc}HPoBT)+V56{2? zU~G<)Ca^1@W@(n!e;Az&E*d0g$6}Iy?Jm-2f%jSuiwTQhd26FpXAbM;rxFs=C%51g ze`$DLMD>rRtI<4zaji^9QNv1Pzed~&e`l*L(6uU$^N_S)HhQiuU(%1Q>uP6bjd$jK zm?IjaQ4pu5#m^H^t(;27)ApWEM!NZXx;XZ2&Z&lj4T`{)fv@qNu3+N(T0~U#bQSs1 z{1^-Ck2kl|gJaTW*Bq#oIdZ- zOiFy2kW)P5I7QF@su}Z29Ec(wBH$KHrW^0tl)^FpMD|F*YbYdwdENvQxg;dzs4*|f zE~o285D8MYlHx$MNQDh7*YIr3;2!Ifh+>*JCl#Hx*Y*+~*ZK<2_LbO@GQOCRA*%)2 z7nbT^W=FR&6-bc#bwKVE%unwmQ{Ptg$8I{f=07Y@#q(nSg(Xp7W5O%uV3mHo)j18M z!zoR$^TtKT;-oh?=Xe6D-|Y$3Iks7o3cL@dk+oRb+i#!awA8#J@&QROT52FB26m;y zYb^jSM&{NWD)T$MPF8$e4k!c|Zj8Z&l{jq_yMwDs^hHNx`AoI=eegA3iIN zXi@OBr7=5RI~tSfdehpT*G+-z0{j?NU#vVpL1@KW8hml7z}LqMD*V~#OEXO**lP{@ zt;sqGk})00_z@_6Q->Hdbq|DgbbKm=9w!889>Vh? zxaZK7A3_l4r{OrJIhf_jWv-}f_hYP+t%V3PdCI`r>DRu0iq#-eQABknN5`BftJk5K z@WkEXh#Fd~`tVn-g;TVxleSh4J5HtE-{*Iy4VCq~Gl#ahoi{s8$)E#l>;#N{7Z6S; zAN5FnEsV`vhSho-3~-Dj8G>zoL1m^x-$z&8fli^~7S`^1arYHWta#ZHf9qd8F|{T`P9c;wFV{3x8Io%uMzC6uTQFuC+kE%|{TPg26B)>Q5} zP=&w7K}KP7t{$l;_?Z-QThLiVrtbnhJ+3C&K8PAtw#)d!X~%bWVwL#*Zb#9&AW|r!@(J4C z4=7_JerF25M0#;8?R8AaA)3!9tJX$)iWnw@XpQrRs5Dmp1ZsX z$pydOiSncN?<2RFL+R^|za_URr>T{MBgYV0k?@_>N1MV9^1B+StxT}4#RL|Qo(w&Y z_sguLU)*aF5p5ydN-Jq#VaREG(VdAp?=<^bb)i8O#Sj6U^D5j1|B^BWoY#yfj%aJ1 z%7q7=W49{lwP;7!+#WB#Zavi?xYBpW>=fVO0wDYqnbuy?yGZtjf&XWvhr5!7BF^#x zfLAZN>$@<{aoV9G>=GL7(dRU;pLzrg;hpRK(F4I0=n?>;CZ7XN!{Gzbi$BSW$&{zFU30$WnbpmO;bm6)zVp{MKVd&C zOHW)iS7+q59C7maf&mYGiRq;uBExmvPKXF( zd0!iUG=Wf(o)%XCeIh!NvW6B^#POacFjiD(iD?K8unU{UA7`wpI1ntuTw&zz0@+L8 zM>;&!`C$(zB}P6aI8!H5Z~bgZxr>!M_|K<vg!F2m8Ug*w(Tix0RDHZ|SV$ft( zN3n-tTtv(<-lv2;lzW=wu1y1G>i3ys>VsiHS)vWu@ znrmz;msG3RMR6^ta9uPSD;_7VCGDJv0aO^*~g- zEDJLgc0L8&%WOP;<@%;tCam|%AagRUpzX!ZWB>MuZh5{4tr#K|Q)JP){VMmJb56G6 ze)9ymn-qmG!x*f6J z1!LM(h}9|%H$lkD8PoYtO60Z|^^PgnuG?8tiCjMS+yJcRYcN5P8-CYO3V14(_doa^ zchT-+R9^k=UzLGgL1VzfOO** zcoFC4b@PZ#|CSP8!72kTBTS`K?V+MUfizgL|HZvtaBdZ&4C z?It(AHJLvw5~^wcV0l}1ic+$s$drm6!Dx6>~=>4C${t+!BvrTuH{6&9C>5&m>0*kK&|Ngn-Rs3gpLW zQ0agn&Rl7~y34sesl0Pz=l8u*I*V6@A2J`;+{S&OeWzEJlsc^b<+yUe1pHyD;_{*L zInZa6)-OEn$qsUC-@JoI6N1a~&yi__NRPpuXd+v7G}c2>j4&?l4?j(}!Gy`djz{ou zK*-?*k{Zj=fin|dF1l7cNLK&)F~8urQQ#_^LxNl?S)hLhmGIGA{+cQ;Ng++q))^} zkp*;3(qCFHd98&nW%QskdU(!8S8QUwdb8gww)n~qdxjF{6lj5GM((-J>eTc$#`N;z z&RIp)KuZKaRHk%dY9c_0`l9>zzT(9+aHoCJK}=$WZO-8NkqGke-*5&+gHlFBD7Wfn zT@TXT6s=E_BMt{xU+Y7I8f=|cW~m`+{+`q=Nj&4@WP_3IZY%8kKS-!48u0&fIz z|H&Wbc0e8v2Je?#1q1zPIntm>rX#^{%$+aYxtY!$fc{~>y7uzn>CQQUB91{1Ox+?_ zjL;cBybrv#A)dlbH^d_}jRqlSJG&%UsUw5wn3w^oG{ZdFHg@B7uEBTw^r6H$Z=aEI zpoOfdcoh7if*b8U?}Fjgy)tSDV^tjTe;5LXYa@j$=MH~TCIaZi;EG%X1ye(E_d&=F zXwr>0P#!sDw|-wh=pOh2IF@utGP_(IUN1~n*=+0&#W!4iu8IOQ zvYmxQrlwTe!x_uamSm;Y-_{s@Ft)s}WiVA^E)Z6eX%j}Iz@FiV<3hN4V(_|yUkMwC zi>m1T$@wl_!(_G|pgGk>JOdT;ZU-Mc0WZ006N|vW=U|k}qcnolNy2{Fy7v<^K`^ZB zi(m&%`@v${e2bOj#c1XwM>|@PDpkr<`;3fCfzA=0WhrIX5crR}&iezN`hktvL%TLo z1>xkEnlz&)*y5Y1iHbTj^m7TAu7~j|OUly}q|-d-?y=F}Eu5IO9x_;B_$zNmCXas` zpLdoGe#$~U`2*ONWM4RJ5*8f+PLFKiSVFe$SDs&QCEmFop+#ni=UU4Fr@?b{PuWCM zcZvP;X5%o1L{fu_UGz>#{$!LtRpUwJXme+ri<3?02Q=F;X!DZi@p!l?jMLOm;c&4x zzCM6Ub+IxvPm?QxtkRFSUkxVP!z-EllXIAx# zODq){h(^rKPJ)M6&>j7@UWZ&0Ihzi@bJNyTVMl$$D;3TI=Zq`#`m zbm6PPdd0AC1dE!s@Cc@_>x*Z2j6n|%{^BedL1 zoRn^ji0M7-Jfo5}$Sfu(#Z%d*Z8GVifAK;uFQtM=*A%~}BqguuR5@$c=C0XKu5#;}tc^N`@L-_G@7naN` zCv6#(dpdq#?`*aNSvdm21@a5y57ab_HTip+^#aurAoliL^1OyWPHCGoBXfGf)aT=f zU6)`WA!MfMSr?@)=GD6Ok_AiD7D&5+S(qI`fEH{@hku(O>3)hOYyb*GDa z;s2!0!LOFIXnJ%QO147Rih)qJ%K&y16?&Kds*l9nu-#l~1x>T~D?o_@>jBo%Ej1H8 zSO7lb<;u+?*HNio4wmA!eW}A5h=$CH#EZN0#t;RNUFPqxEYZV{vDUwIJ$2XN_>`|q z33YK}CbbY|&Yh4%9sG@n-r@EZv2$R(l&hN|5JZY+_xYQtK0*lbq|F!k8@i^g0Y4#w z*yXV@YuZRWIo3pG`TL$79NPWs$(5Zw4g;CId#(oj3APRPps(M0a1#rAzKvVTF-Vp| zPcMCt>H9)rFQr!8LWY5kga1rc=NKzi$?SN;2Sf$k?<~9c(l`!E%SmBfLhUv|pR|xh z<~}kFHtBfPMoYEU)aK4g>@%;*1%Py;f!3nLX^E^#{Pa}GC4B@p_= zPojiQ{(td8Y$DVL*P6?;o@c8P*QBw;d^B1gUThd{h?J6)^oui2+<#JDt-xgcEqQXO zK%My`&DLs@&=7kkc!uFWA(Bm0k#Zu+{4fxVbXT1D|JYR!4H?6 z%Z%Mbs%Vl{OB_(0dMHbz37eMqWHy6|j@!pIwfgK~sM-2NN<%v95szfZ+C5xC-itXK zJ0it>t%RCgD9rEA#dJ zY@Ytp7vvC>%ptJ7{p^ml{neWzKAoXN=ir?wqr2=Ag_ikExL5w(v0 z_E2CgtB(%6%tZv2V1wkCnv^OQn?m*Y={IoDG1A_s!R+?#5rzs+%s_RlkzJYqm54IC zaRmvRl5T>P1pU(L<3QWKFTya9V<7o-7cA8WuFMN{BI`L68;QmfzEu^KNkF@(tTQ5# z(8JUbgHF9n*>_#9Zroj#ve?4st$eiK(%BUbpqpk&R{3fXABD69cl$};Tten^WCT9P zoRpvqh~JG3?}OLXb=$cHX4_{{d+GQJ(oB;7e@tTYP7^|NCXCLB6{fGtZv{F~d+?H5 z;q4j2AX}ZHl5bk}ifY1!MW0Itv%=>-u{xV5YxIk_XzYnS`O(_|iZ>O5tI%#<<-y!7 z(&Wj;vy*c+zpvJI7kABlP*<)_0*A^!77IXDM2>w_THAXF9WRntWCmP`T-PEEr(wDv zgJd|^z5xu;eG*;qj_ekAhY=^;#Rpm;X?yTw9^$<1%My#0DhPAK9&-`Gb-z_od?+9j z7BrM(QRj@00AVf{E6od#pLVd!BN4g5?vbI-6`pySjF-giUfZF+ST$8@1rDf+)3*RM zX^ZlKizj0&7_?S>A%Za788{oGgH5jtVDT;!V$} zLMj_bco5YJ&^Wel!~3oX3hNX7sTM9k#IpR8$d>SD38jPAh^Ymf>$qQ~6S&r}iJ^8p zBt-nl~@+~Be2T#>m=pl?;oAO-rN%!lwut6fi)Wj zvPKg`4VD`R*)ZE_6?^f7mGkgQjdzv>NO*d!-VIFD^_~t9dZk|3Lq({{;^PF5>V- z_V7jpjL%!EYbngaFe~uzSm1ip(VkiH)~G`Z`{JBN5ehO|r$0G3m9a-%1zQ&LkJNDo zjBv=m_QTaO)>_Pa>u8RSsAS1+Rlf-p0ImW&?f}XMm$<+mmE_R+J*+$}q#uum$ffl6RRL!EnXPG&Y*E|}0Mfij{B8UR7nht+rI;vO7K zs-VQp-j5Z;QLA3lI@Uv1Os#fg0`YwMLqvpTiC0{??Qbxqy5{!9jc~&V()G{At(7HO zk3RFu$Y(DoER5WhjVHsX8_rd~&|IH>zy8%dWs9m!zY9Jb;{?ytaLrEvpjaAgh6=m& z|AzX!`y$_&GMA337yK;%3TbnIAAU$NzRwCBhasZ2S8Tz;l`8Qkcp15S5TR6G%8s!? zn%}$}JWg);`!3Z5(~j8e*B`C01}gf??U_$;?D*#Jw`>`MT+yjr^CjHydS6MT?3S!j zObd`!n_E9Of{Jlg0?2<^UspEy_!C#EA+|%NwyVO%{N|!ij?;?dz?1bY52YQMJodpId-%U_ z{JnxkH)I_72a0{b1@O+ur={&#e@rK?N23$%T-Kp42t;waN?o zMnwJfHdogHF#l%Ye>RCl8TY?t(5Po38jfLd0WG6jzl;D7hxqQ(XEqV4)ec?^?gAB5 zzHYuY+aPVoLx*K=q)iX1J?H+eoTAz2zP;M=VKDUp!IKf=`^4I1c=l7Cl>ya;!B*yu z_8M9FC(J3|R@cITc3!&+SX73vii#ZZ6wtSL1;^%V?>T*b*xc$sNCyzCb-u}C8Wav! z{5tDqDTp|V6f2ZNpby*@^av-Bou-sB#)#biVJ$Nse@;Q`y^F|*^Urxc4r|0j*ZZf( z1|bI6$fYcjg(?JM#HS1 zTnJ?%Z8b-lbM>u_*+E{ny#Hx$$5Km7QD60|i*lNbbhGxpCmO)7b$08N6(N#2#yf8D zOjNBQkmpE_?PQqi9=dk2A%qmZzj=XhP{ZsM?Ig zt_-VAy^>zl=z;CN%W`{p-W+)AevX-aTM9TyyYIlWN=T%d1om4}8RQ(+SpQW4p7qcg zRu~E|@^X_S7q=yZdn*SHZII9Ys&NhQ8(rg!Q#)*9U%|Q4L#Y0}J~dFTIzgw|?v;H(|mC`Rh5zof3Ul z)(~KT9J1Q6+wZ{R=!N(Cl=*9RMQ}7k=ke@4H@yBdq-8ss=Dz0Sb=1DW_Ec`Suo7?y zkN#3yBovnPEpEi$3SmAlxV-qTNFDc_b8#W_?J32V3lewSv_-oC)zoMlNomF^S0(dZD1$E`Hetf0NI&j(`A94os=k z-72t9U7Pcxyho3pODav1`fE(vrDdvNac)BfN4sZ4vvuLkIyzezs(|^jqmzcel<2wO zNshLd_W=#tFnSTh2OsteJD4t3+rCcDa#C7Mv<2~qWejDO;ziA75Wys`*^E;*8JA3* ztNo)s=M@~QiYqit+5?Az8v}9iUq(fSC39jg@s?=g`5%N zk0Q&{WpCh>)_>;F8T9e9TBC5b-WB-tdtiLxzBfzwg7;FTa0r@#v4pfSSZ4;1WcM}r5NK6 z^WuS@kmN_@TLT)Me77NEc&TSx+zh63_yA@Cs$7S*A8UZqG~7tktSf3`IiRLq$SrDy zU#QFoc5%)%28h!=b?@wMlYgr9hpYfXyeBY-gr~rl8bJ>$Mu(Twou2eqh1W4-)?Lt^ z2_as#F=qy?0Wt8T>=9u~u|!+|4T%bF*o}jbTD$a55KymQBHSn>j)1OSgO8M+`<OAU-w%!AT5w-NxYe^ZnCw>;}@=Uqofg zXtk10l4(DY!cDH0Ez5YksIQ$Z&S$ZT-?jo^@wCLx3926aZ@i4%`i8r@XnvoR)p3ET zuf6ialMT>fc38RfcEgwZ-w0F-k!S`DDT49xIN!()q%&O0!5u@+a;#0-yCqZ=zN>38 zBj%RQ*qWJVoDE{YnRlt6UM2;>!*ze_@g_X+JBXno@eaE^7iMjC~VR@ZnHhqAxGU( zbW11)BU=JaL+;WtRL2kMWIf7PemlyvB{KCMQI~$|RSD!EEh-3rVW?R(bh+MnkZIWh z54P!}#PH%6G#}|@t65*wnQg+x3w8LLmCtbA>N?jpjK`Ya)n*`XF!i{wHrg3%1Y;R( zgeNb5d3->k5*eq2C70FCp-iH{{2}Oe56y?}f4biM8ql@P&^UyNui@G6zW|QuiC)C4 zo$F>s%hDYK+p%r(D4e)97@`$Q3~BCGE8p?0cN2$Pd6r)#?ZaCOQ0bHgOYrAjLepHa zkc!G22ilE9wBt|%pC!jjm^t>U0SfGLh{}KDgE7U&Z!#;<0hj?_* zS`ClwW8f~`@kbgx@pqkS&YbqUB5i71XRgt8tVWMQ@%)L-o4~>b+St?I08i1A63wWt z-PXKy4t<-x@|m>JJ<9yXEYcF0R=MN&9gXyVmbh%%R{F`W(La=YkJA75tlZ7&A6)lp zv=|sLSHXGJhy+A#!aO^msNw2nT_p5Uvim!#AL}ofNGY6k45J?Gt?moA*@BrW61Ms& zd~my~*SlJcN-r>x4BgBoYKF&|WRRyUQ9<%EMS62lA)sjt(Bdwi=zB+z6Fk3N{a{0M zkae%%R=Yj-i(Lrhj&Js)ap6x2f|H#L)n(&)*!xO=;0c-JkE@m$!71RwftM9d1`{}PzPUK*TBQw4R)(cqPeAT-I zh)~&}lix%H@K)$_m^n zB<7HilH;ZqlM)(7gDs}pBwK>hT5KG)9EC$Nk~)(j#K$THcsf&z`)ZGGOakHff6#a9 z?Y*64jWx1-v?*!mws%_%bAWKv6{ZGrIx?mZuRi9WovzLOg(FCV0O}aA+6RUjtRsii zmMKfNU=1{zVp$C~rB0FQWYLL1u$U}qaQvxePvTzNu}H}(d`rLBrdC&aUS$6k2XpgI z)3L~gG0X{sBGI1#Vc&lc1^4fwN(Sk8!*E&N;W#-CP@hM(jpV7WoOG-hBdT)PO%e zH7D9gKuafCc40be%^8v)ud3L+@Bx=jGWaR#55^c;BR5Wgl2WgI>>l2yL{mS6>F=4L{@u>cyE_}YOKGn zd9BK0@Y{mO7avHc?gaK=k83I=O$@){nJzILcHT$ zy9C*oB@6~`nZM83{iV~fihPh(e<{^8Nq9qhp%GY6=&Nk6j`eK?_H<03CXXxa>5U4t z6TVC+Goq9@EM$@Go6ERz*ZolzU9zu;h!ZQPZYGVy#05t2p{6TvHO! zve5e~oE7@S@ZQQSj-|8!cX*~-b4Y;Uu6q{b7<>G@Hz%G2G@Qd z%58pU8?eRN=5}sGNjVLW_tS+wkJSn=pFKY}s)*Zw7=|nMP074}X93A4p0Q4FF`f(; z)AdPkVs%y-j6d7srtwfO;$CI{=XxNb(*OiRh_6Gw<3(jXadXA-+|B1aqOcT7-}PvjdR>nKB_zQjF-5kh{)5Ep0jR_5oAJC;o_!1p!T6zY2e!~UCY@> z{nFI-_Eh$#OX!{RYlVJ=yb5NK1!>($Px5&|U&2qzn@7cud+=;gv}>(nBS#ukAs-p} z0GO}h#u+SmJn=%LhT*l$(=3RP9;&o$5Cs5}QSxl);1(2U#bJ= zPJ~70wWgQXfOb(e$_b8F)zH)8%D}5bXN3hHcD~DWYwAfFyGAv}!y7poU zb|`|2FW%rpftJLxsd=%9D-~&u@h>fgHU}d^l=EU~L?V%D!8~(y)}9K{=Fnrdjb0K_ zgKWopJ@)uJc+`wdPTWS`rnl7EGFy+DqH0$$8!_V(_XB-Lnm$1Sl1~D_8sIgn={e4l z8v|4K1;=@@Tk|*=)}>Q@)dxaiY#Ny&LJ^bYA^kdXrY-cz?2D|vEE1b* zJ{RX6^xihuFIY;B5RV$F^YAkc-Xnl}%`D{Ly_lj}64vHD{~rok;6fx_6IdOXX<^KL z*G83(r}Y(!oSFTW9atC_@?@A-{uaX+=LC zW0);;`Me|OUT0d!$8sK+Bkxb3hNaHCgzQj_NwU|H$^%#Pi-oR>II@az+)lFV zTx&H;X`^qjrI39u#+O9%4-*o6K~My=7&f&Np>sQ>3V-=l2vQq`%l zJzIquVY&54OKh9^FIZ~1#nVp6V&Q|nKba)si5Y%~5{$bcGnNoN)&F#g1}I?@2TR6_ zmv8s=h8F#Pz~Y9G2dz&K;6z!x6IHBe+93-d;F{se?c9{dGsk(;_&mr}8Xz&~gD2C=qcmB%lwnC}YkYPjPyRTf=u0UN(RL z61R$!prLPCQp5&(9UtK6uaUqq%7SMO%6*6spmA()(f-EueLxq88dgewt*FX9sja&dP3Pai z<66zTH)y)MSWenl-;f?WoeKW*Xfv}l0#key$MZE%?H8Tsxx~N)vL_2v*Jr@gRW$%& z$dEC`B=KcY0INefs%7Z)IW?OB)Qnlasob)}Zb=T`5NTr~b*-U?yfKqmlZy?NvXK5v zZ@}5JyNP*`WTa(gOH%T|`Z@YG@+UqCCr;URijru;FnS5(MgpWIuZx2Mc;mV!9x5Sb z#94^PW6emEjSc7=QFTeHF1kfU+*7UT71c6HEc+2_-lV~lUh1{aeUH}T7$D9voF&fXYn;clvu+XBFjQ(>?JYV z1dfXZ^pl7?j1^NZTylnjkWeo9Z`L)cwkfO6)v#i_R{lSAaZVz6r$B1#&G-#Gbl5$b zOn(J{_%7*5ZAy}V91emZBPl6Q?YD6U5}+B=F0ij z-!$^S<2_|S-*TU{=c}Y!f9U|>&Mis)CHsmvdgsLD%9df@VcH@jMf4QM=?pC}6+NYH z4foDyCs)t*%gmk=0F3!WvP+4$T6_GgX}q41A_ee9uj%W<%0Wp8Zy#b|gU8Fh(Rv>- zu^_TBFeCAX(hMP_px5vumi)63<5(!mQft{b$e3Uj zIDI&ckprxNBL0O}l`%r^i1N%48$Z-}DqkByq!Cci$F8O55Fr02m3}h@nDB;AlnL1c zQn;J6OaOAxa-V%;1H4)oIsV&(4r67@x`PM|Rdroz^o|;IN5T8eE4^31ZMaGKj4h5zRmaA5KN$4SBd5hMg7=%P@a#^Z66jgbN|2)1!X!H7o!tF&_yfcolFV`X^h(PKTf3}$$tB`pKu;U zvIR3$pC?$cw_G6y8^jji^R8M(+6?Jx2S;C~_zQQ)ko}(63GaxhiBkqy9$O-VWzgdM#91+O!Q&4jU1RUQL;J?C?CnrCORe)l z^Kpr=UnSi5&M%Rf(S0QOcGeFy626L&b|pYhyNu`hn;K#WSpgTxNZtGM6hFsko#<=J zs_qgRdQ#VAyLTN;y7nlb!2Pe8CEBq?E-l9gr+-DDW!()PD#Z0=j(TmVV<2+CYou>= z)d?zfqVmWjPwRiWw1u*&+cQ(HE=(>0qOstG!*@k#4KrMIM%t;fuckQ-=}|RGW78}C zS8$r#Q=@IT+XnSOL*rBknrajQrPxB^s5Q=;ChG-`6VRyW<7s~dR@9F&E4!IML~S3D z%EScjCgd@FyFiV_(EXdxh^#~N@YD_&di3hUGoc-)2}20LEZHN5jWedxe|Q1mKSA0S zPxKG)wJd#;lv*~a*d3`mLv7MDf%T|GIz|a5ZaVKXLRN7z=x#y#f)LG&bhI)_h&~Ax z8R@J7hO3t3TYPAU%VI=TIFdCE1jSI{XLKc5%su0FY6pgIs)9d>T-eL$3h!g-lg}Et z$-u$#{n=T$J0`)ndd~^W5nmAANx$eF`3X5W?GR@>VYQ$rzF);c4&x*krsPu8c{bbc zI1s7ylo!!S4BM$Fc z4V!4}V)uX8b8Px39^MUj9;Sl^8E}C^9CCQOY&Oa~SHpQ1Ito&TP(tr5#Af%cG$y(c7RsXrTgdMt>lUl_YN&4_h11y1p$CKM0%^36dI0+ zgq3v$*PI;kb?zcqgY)&n%#@uaAMA>dK1s#sHJXLDdPv5KZ=OfB*2@m91V_G?@+OcE zF$u`^vqXJMKHPzoQlL_X{eWa~4s3pYd;{E-)R`yzNL$|pOdsipjc235E+{?|$STCC zpq#y;7q1s?DXChGKJ@B_HrLhTgUr|aWFOTDt}!~PfM?~gYtauq(5mT(7n;ZTL37f~ zjcepb#4xE8i5hCz@D)L7=%7l#+K=!q68)^*MMhuWC7QKPn0ypt9FGi;;13RdajmfP<{5dt#`0!Uq55K)n#*v!Eic9|A zU#m4i@1D);qF5y6eA}GPZh|Q%=jtA2IHATFu;v=6O1Rka9q z57+FKKze?hzmLOqG6f@?)t*j9Zy#|1R}_W)*TW~oGFVhYVB!570B7;q*ikO;HF%*` zufW^jyT6~!9r1kxld>E^LSIz<^q>Z8WJ8ir+RmA*23`V9K z|8$z=YA+Knwp8i)?wh!l-q^_JTW*s%u(4NML%VQ&R{+RZjBsu4T=j(!ol4y4s0Z)p z4~R9&S_wBF$-j$ga~RPdlJq<|o@49PqO8{lqpqQuTq+KGzRZleumjE)YD@*(^T3n5 zPNc-18G#O%c&w?-SU1zFs%=1#1)0_3;GEOSW&v~f;d)CQ_Cbr)f#Gu293d5%3&6Jf z4D}DHLyc3+0X#KmM8qpA(^ABocWaAF>drUN6pjkMlP53d^tNC)3P{JKo$&kGc6;A)ne@v@#ED=>_;uLXK;c}BtxhAG2A8$X$RRWyk9O?=TU&-Ddhv+xv*AI z6>NTS4R$8Lcc?L6toR40T4Pxv7tf7(gpV~KY#)LvY#6z+VORtIvjlV8pKOEDnK$*! z#Oj$cQ3ZRWo$7T1W0kVFZ*Rmf4DijpP26e*W^(Nb*CBD34A~b;oe3n8vo6M}NP;WO zstwGL=@IW%euzewJnFD@8ZNWP+yFd0-Y%cVkBqea-m+iy{!i;^zd^J+6Fz`j8PM%T zCtiQf;FKSm$rOT>mihWoPtH|v?L8~~`Zj1?42qJ{Ay}OwJai#ApMu#QXcKKxDDH1= zetUErY)3lO0qOK(z!ory!=HZBYQWlOz)l!hshqWX844G$Rw5;CSB*@*!IRi&k4L+T zlLLq4MYgP63WGuyfuJc~U%1^Oi|~72(i!@FPz)^rERmp`V=D>&Q2r!CXcw6HKRWvN zNJU12K6m=5h@NHigPx7a-01Cde0UwOw|uoe2}VcODlmsIxtPQ+7E7({(TlM$F`c9} zd8y$3PI55=ZX9Naqw;FR83r~n7hg)|BNQ^iga**Kw7S+9^&ggpO+_FHh378nJdsul zn762J_>)g9k85x!`cW`e^-XiE&o|*0!obK_0s`RDl1VYPx++Z_Pt^msTi&@P)nfU4 zPs|wL_w@!Wj4fA+;-wB^e@B^Jzr*owJIgLs<-d%~R{x|y8yi-Nnu`JGLgP-;FJ~Ho zrj*-Hd#1hv@4_#mi-9%79>UPT#goy~hjE2N z*V>-6k}!`$tGaa^abUGDB15EQ%YRA$j56!K@@bC>Tce2{J)g0UPP@r}vZ;M057Z$* zNKh?~UydVQ23#8ieby2dB9v4JXIa5cCZ=K-*^v`u91eu6hs5baYh z5}EtwovtpKGU0YbH8?We!k08g3ymMg4@lug|5Qh)56{`bG}!!Rd873R%8|6Gv8_@~ z;zg^#@j>3->c|;~An;+S$>auev36U7AGsx+EcCdg|*D>FS6@RQs|yqo)r~ zW12L_OARG8O^MUUoppbR6B5B(G6XhN*QJph}>rd3TWDq5L}W#_aiFF6xyul^T1}yj?Mci|Ij-Z(Xd*zDMww0ro|f?8&Ew zAKdjc5(O4?MEQOzipqnYIH*vs0oXg*h#Ye@Nqe81(yvBWw-PzY>46Q^f6;sZGrqGL zrh-5+gi+FNMZnRfs_Kh~y*7x1P*CzAY3f~R$y(~mpc2j?;<=fMPA$eOL8Dbc(;XI^ zOjQ;AaK~*8;Gkj;ng^Et*La~uXsef{+SVFP)!J&OohOw7XbsG{6Ha9+?zmKR67R~T zE|Q2P5V4utYp&JooS4ao{OCK82ZS=yA-EG%XiH?0^uIiRa+vQu=k7|X9TzBU@?t5&f~>H0EjKCc z4sFl@Obeh5rJ{30;~4&RJI)sr|7|qdzF*Tj=43sKj7(Fl=|_~ zxrI5A(SFGRU+n;Dl6$(NWgRYTmQBs3Sg58U=IP&ix(2gS3!>3^1Zq`3*KhAS+!A9) z3w4qMBy~C{LY}&6CS9?heGihtHU+)zrEAa2MnYt_&R$I(eqC`kRTd65LRND4mn99V zeovywenvPIm)SO*inGRM8+$?oFE%fZ2)eys;T~3z>{ao7$1fowu`!KglFG??tZm#C zgcG!s5}NFh%&?F1Cj_Pim%J2nnWfPl&#Wt`RtWcWzo!TZsQ{jnXoR3i(;8sgjY6^* zPzT48P3yK~Ct%-VLF$ty0k@H)SL9p_3?44gYF>V_f<&bgRf|1 zhNMVMmobZ?9RC=Qwd@4w3w4}cbLOps3-I(^=m$vj?^S?lq5d#@Y z+t_Sg{%~c|5#so#67uSy+=1)JM^xg$MlY+zU?x7@l#F13%^HknV zNM_!MzL1yVgt?uX4jZS7K_Nyt8QbJ`1WokW`5G5PbxOxzG ze}i7u6X6>&Klf$35DgZ~?9PiHuv2+8cORIG)3TPfT&_m>tk%UyaY0PcZ8J$Ct&4+EQ_HhyN_{Jie*yx6;qS=jL7d+vKBNyn= z&PB#Ml4b?XGOM^R{5u&AEc!-BP}M2vXL>tUoMy1pP!dRWdeq3ZAeU|I-0nHwU#TK( zspRutv(2tuEHk81;#*y3+j7tj7<-94hkX)k_bRhf7QOmX+;Kxpyeze?Z1E zSx6FQrIJ;XxOXuNpxkT~_QA5}e#oYwJ1PbDy1~kU|3F+HCqV&`h~WnhcxHeBN*iP; zJZG6fkD3%0!W=N2LM_h!&i0VzOfL9C5KOhAy+M~FiN@>kTxyO6?iCve4=|w8lU-+N za;aM{QH${!E!rxHFBk3AYyL!vjm>V-ZuCm|AXzln-d#Z9$vn};)%(6vwGH|?}Zk}gD8Epz7b2$HaO?npjhU#_aUbAd9fPatLA-OMcxCA`(zxHOllPidM34 zT`QE&@)H&50^GVjK$Gw%M$777y4qPEWh7%grRZ8cNoAH*+BRoVMP!eWUBbg*Jt-kS z%tKlJ&+}|KF!SnX2(V5b_0vgN6KpfWz$EWJ#s~Ckb`z;<$C(T(3k8w-#3uy&bRwe% zw6fRhYeY^F#971O_dqlO=-j(E<%lZwtk>}&b{I=3>8xF(pbyBQ!q2D2f48M8YSMCq zl-D4erw8?N@^eEU%`(kDQhT6&f9xJS6O4Qt=#^Vg8IaQYYG?UOr?gj8&|3iZLtb@q zOkz*>=~K1~dhqs8LP-!lGHc;XjDHuzi3fYGVg5|q^8e?&KA^v!or4kFRUJ)1JKu@9(a zm>{IJhozhmDWr8vrVyE}@H^E8(F!!nn9N`5g={{TpHrJW^?Nm&MI04l+F0JK&*}(u zo3E|pU>V}Ey<%LmwsG@1Q{x+EU%x>;&N}+5L%1s88`K_@?#whLUZl#r3(C^D8j;GX zXZx=fv!#^63M8+K5~Kq$)op93Fhe2OKV--3+B5(P`rQO5kPO}1WjS%vFVs-Tr{PPA zm5u#yrq^!DKN0$H#g`?43n@E4w!zbt@@BA$8c{T`;w42G97&k|ZF(|z=1Lqi;+i&x zXGSi%*zsmV>ajcDZH|LnNe;ztkrsLxTkBW(f4KaVeA)QNKz5rgyN-3SLYce^mUDqi z_O{06-leotyk8?LV8+am2rwwx6i>}sWkKvVZb2H9(vudFq3jN2wQ{1#} z)NMH=`9djWt;~)j;O^U?IEb2mr4?N2wD$DpM;=tsjk%e2U2`LewjDgOkB~KXJ+1;^ z(vU9jO~b`f)0B{fGSqUU4uaoK{GK5bnDJ{~C`|%z!cGJ_?`I>9@B-lk;hZ{##AZNe zE0&SgL0cWQ4I{fM9%J|x*CD`%87-HC32PDlR-&;t%j?bKj5XS9G()H-?GTmEKez&q zCR1;|TfBB#Qp6JH`po+brjF#cO|{hQF`IG#co(ywL!fcAdm)!LZE1CqFnY3#k=?`i z^iCgFYP*C_|G-$aldSC-|HJA)w@u1To(d6f<+7;ab7rw)5FtlK?_CC~DHQvtzi=i) zDcnEvS_d#dW8Ycw-|K*2Ei(C{LsfzE?-K$aYi+0p6~`?OS48u>>4#(%)sKvvX)kMd zPaOc;QG7C`_?-UGM!0S2)OpWw379#;Bu5E_2djzL<)=j+ZUjVvT|VD5m!2v zM6sS^eU72VPWXqY4iffCxL5B;vVn{hfO>Z0sQ&Ndos_|Hz<(2?z!L1lE&9U<##qgg z+3pdBXHX3jo}I4vdY&j=?`u|i-L-S)Gt1m&-|A{akC0IHoadSy zzA^XmB2o&jw?k`kz z765H9cY-tJ7wtYXNllkXJB$Z0ZvQv1X4z38l6XDqj(ZKI+oT7&u4EvLN{gmaNBYj< z=sr{0l>N}1ziROXxml!K${;2x|29^K z-@DbvP=0Y^8`uZZ9(Kw!d5^4hc|$+s=z+iUcSAPf77$Qfuickw(r(YxNW(_^np2m0 zdgS%qo8j4pjjUnh!30^I7=0I-llrFU_U!_GozNJF+A-o9Ay<#>Hw=>bV-Vq^w1;!; ziCgE9^Msbd+Ve62_A*Og3m0#X2!A`Rm+a;vNA1$oRkNxr>HrtoQs}a?4ny?{A?pN^ zVFnUM@v%oj=7oDePC;ArOzypn_bg|$!%z%f{m>mO`xFVu9&S33Lc^ct4KQGmoDsQ4 zMm?+%Y>j?i#yYsPzTixMe*-`z1HP=*OUji1o)AxB={k-IVz)1~@{g9DG=&l-I0gWH z6g~g3WcwH0^^pl)|Iub`8&f%Xy}6pSxM0q~$KCCU^K2s6@*aCeDguOha>C4(j>>F_ zWVz!?t7}t^D2{buuX~PQHQjZCnw^t>P~BRLVDqT!rGF>%$ML{ZUftz(VT`^jTM`GX zHh0|XGU(m-!5KK7KC5hy5_z1btf<0E2*Ia3*9GB1ttLIiaiRfzsoE1xn2m|I${a!H zOo>;pE&_mp%outD_tRY`)aXIBA2l)`1=xhQbtf;~JaT`Jb!Q4#r9bZ#F%|rcj7176 zn`!DjIS`rTAakc1J^C1DoM}jwy^vD_)uKy$1uqS86vOykN-EBBRL@qUbs~*D1~g$f z&IJ)rKb}(;WMPyhqhm-~EmyMy5lE5+_4^$^SMHj4jH6+-Ru(A-f)GOy>V&K)I-ep+ zKwRPoe)rmCAM*y|4@{9%Dh^S}H2(35iTAdmsOcj+IDtL}WSeFQD#tijM!q40=WsoO zV(oS&st!?M4zwgzjE*uhoq~py2A-Un?-FL6fJDgU6p}7@qE+>mhEta7d{(#;y)erN z>AMcpbmV->Ni7k&=hcGsrPG!x5x-ok);>BAB4Ccl_GA&#)|Q^MPN5EqiEwe6ABomuJ2=-!IAeHjlSKOEsSPcCMDKN85ACjIwllQy`aVcG`4B zegO~)($e}}iq}wOQV+;Bg?Z|v4C0y8o|pyRL6yQP)5W1rv++is3}DHXfllGS@S1)A zV?hD{j(>i)no+H-JhQ?ub}3sWF^76~y{2h9a$ssHn9FPs=^%!OB~7}jgF(A3k{^koG8K`0)>)er7Y8rMofpPcL6B?q5VII!IFXEWZ1xjEKvv3#PZO z8+i{_d!DqTc!hhWpTZg4Gpvjy=GLpzdoKY?42rPh?bR zNpJ0!%cCn0IHjxC-=Cp4^H!z|AYk)GzRa;hnNz3XhZn+0GpxI_--QI&JLIIB4>28S zL%Z5)8~GDpHJXv9jG$@>NB>9`_NbHRFXL{w4_BKz(0A{a`mfs@7ru?1H3GnthVG<-YToSes3vRmH8>;H=p%`d!ka9_v zC}Uz4Te+91Ne1{d_o?U%8_XJznL>Zzw{AjGt*?VAZCxSn+LB<>)`d=5!X8E!7Qxg) zP`z&?oDGw*F{M(60%%M&f8Y0-OvNkendsElPTw`e7DB3jPaJ&k0Hwm@~G# z7^WkZxoT-YYQBzk&iylFE8#m| z2uEuMy_p3M(ZEm`4F}S=>`T}+yJ}hteH}6r`pft8>|j;~9`GH6A~s;b^QfJaeFhc& zEhl}$1JU@N1R+?(LvvPp8Hky)TjmuBUVH#ONd=RVkiBxqK+^Bc$DG%@gaHBEy>Nue zZ14;Wd@v|;Qi8?mByUQIZS~LOc5w`h?R*AnHF*2=gy-&7zEH{ikB13D>tR8~B3?Z| zCe=)K?E?_^7}ucJN>d&}?iQWeZ-mfr#QP9;Ne7XJKJ9I6B{Jmy57vOn`*G-u7~hY`0CZjWRVh1Y{>;vKBZJfGCT-B)5tBmJ)U6xWQa%OEotgwsXR(RMQU4 z1TzROB%0?(B7u+3?qHE7ih$V&Ao!jPs(M?`~zpK^(o6ScFGJ7kc*N0rH{G)noZ`5V9LM_t{9wB!&Mz&^%+W~A1wW6jBla;-`CE=U0-C%e zXzpU=oyMdgt-5xn`(T62yeJ>fFRvl3V8yZ~j0%JY>E^4EfC^;OmxN7t=f5o~G^PNQ zqEVz$rv!9T4BZycKC|I1Ztwf1@@qOtvn_v5m~LC~0{$uMckYrZmT8>j1nO2K&-2Z$ zV@&>YPGKt;z$5qaJh~ha6GWd!wA<|ZN+O#s9hEYTQN&C zPVQ0$Xb%Tr$=*C4!(ro!7FpcOtk$aW!G!`2G}9cARk}@RrcVFV@&f$bct+x@ZF6aQ zvjm`@;YO`0iI?S>9joMpoU|=hZhiA(@^( zRfYP)l8wcTC6Y(+iO3K~hOX#)(O`KJ;(^dc*r?{JH}WpkVyikMRuZra@ZdU+B21ZC zz_RJ{)GmR6A9}p|^vKpfZxLdFvVnC*Bkxo=%bDCrK@8)W@9P!Fe6D&uWdooayjbjU z9Ze-A#@HZ*dGi3s*91?*BXQ^|Ipj8iSSihIJdmUJ^o!^{j&k8!C_mw1I@+OAyw+5q zzIsQqNO&nw?|+#+)1y7#tV)$>nz=rN|M{aNRC4KH4v5OAoAsAJAsbkBDnrJ)ehjMe zmfHek5%((k%58S49E0JN5DRjgq}NZ2HK*cR1nb0KE+4{rrw1ik`Nu1~^;wV~=f)SU zOhmxbbTAOoD`?B<;IL`oN7K3cB4|}bAmPjKc0nhQni|=P=~?jEgoF<0K^)jS`I=k( z*<9|0h43P35Ss)oR%)~3Uas+n!(q6Er`x^AIOLoE ztO0=)l$W$3f~WToNnwJ8NwtKUSoU+kW~?`#M~+#SIpmD=@*}sBQy;}08I{jZ5c6wHOj@y0Rh)Zx%Uq!vGT9G z5G1X1NZ2_wCMrOqGIcFl9EUwIMy*j{2|lrt)jwXCGaQp#5d{Fylml0%h)+v;XN|Oz zf=e)t4eWFt_e_M54%t*f1&$Pwi3}Dk_+IJ+?aADUz^Yer1n~zOy{HDHzm)RX+$;ma z*~)$68y?14UMK6j`FK90l`GH|$>Mmz8+djNn-yMC#nI0+wDncCpMsCeC8NIfHqSOs z``<+q>7E}sE6SPpfKw(z^(>;2{7_js^)t(>O&EcCs#E6y#G&<`H3M>6C=3D?mfKF+ z1V6(F#F4ewcTOQMWVj#*=e50RMHKFO!KRr(`{=SpI|tk`Hz<3^>Skvx>#|ydya`NYD$;HbgFy;)|wSr0& zmexj68|!ss#-pZbY*xh)(kmC^U>IKGf8MA>;l=n=dbxX#(2-%! zDgRFtV9wX1mL;%5jhm^GflqjL{F+q5h&vf88du}R6Zqg!y%XL}h!W7E?x36hFl(|Wx45J#FZxuIt&UGliVGo{YyOt&flA0_5a zzkUX(V8VMuAgL#13caO}=#L`9RI|>p>NvX%uQR}HV3m8TiXhIPL*@}I`r>RbFu?$S z?EHPcV2{S~Cy~Fc5^i~T01a!eNQeb)Be#|Xb@ONwq`m1u=n=0rwG3iv1F~}e=u8oj zAyb(XlU@8yb!(!M@vMJy$HeG65R1EhSRq+6i)zn%(=dvajyyuZQEfV?>-hxI+HE>U zX{z`eF_aQa8t0E%sQ7KLQ}|4nPFv$1j&62_M9s}Z4>}5uGG*;n#+&g@ucu#-Pid8| z@?@qDy$o}ODSyaC@C(qjT?u|o`-q21u(zZ1g}|1YcN|yC>rL@;r(vCn=k;cu>=z=(X`_?zC88x`s)T%+eIZ5gZIJ2g4 zog&&)Gk}11Fx|Bqz21{nCyP5+=-*6UbS+UlR%J&Er@1Q~ezDA#)cx^S6_!7D|CGIQ zJ2TOg_wqUbe&`^Es98_7UIyd3uT#Uv%OM!v$<@iFoVFwd>@h0K`h^`5a!^2XyQw5J z*S85`YD^H!@<*teV!3#!qlb1`dHGo#dTi&P69a|(1O~ftwbJvF`#GWq+oAV-PApc{ z!n=)p)2{Kf@^GLss9HT?-#8vj-VRw(8*kEDYGL&2H?vHJ&6^^)YeywwVkYZaA}{t7 zo4`ceFmshD2kt-x=}M+)AQbngY@wGPRe*;-Gln}X(PRfrVI_9-Jqn}v-wPKv+s)-B z$sjqE{+XKd?h}Vg8(n&p@CPM|)h518ip)4VN`TTH;7|Q6ESuORtQ%|uuBE*@IN;Yq z+)2X{Ps4WhxTKCuZ^4rahGh4Y+mN**o!OEyVg|I@o7Un;&ZGDyyK?sI@5xQwr&2Q# z-#sawP|*CQU)W0LkD~VYwXMRV*r|oB*GcAYaDR0d?&}sU#Qg&$9*XZFQa35gyf9Ei z-6ENead}J3Pzc#vo!o+30(M(+76BMCE2HC< z`G(NCc^Et;o4aJJ?o|EB`-dY zpUVXL@lY0>PE}ESFVyT@+5$#s@tt=Xx%u#JEzok)_m0R$Hm6~1-{eB)_zJ+fdCx*S zI{&p;35SeqJ%7f#(s+qtEUVbsHU!JN7_V&@?8Oda@zE zh27wpmB^%Si?RMQSVjwR99VXK?zQ@g<>BinUi=pgG!@*(ld&i=E9qjjcROo2~G4tM?@7u;Bc!I_qJzKz_q%0qy?+^t?Cqolgs2xe0gK zuG33qg9GaITN!q~9LDPBKQ#8YS$a6ND`A#KSp!f-XfXtf${c6=VdBW}l=s=o{|-z- zd7Hk{1DcS8$-Dr6pQCDsE4pM4IF(9_Ao5~8O9POgV{aX)`u9YUrOW|;P585Vdb1J# z3n#tBx8nh=LR&2fh=aY_H|AcMYuq$VcuLDVvw@X&EYMbj2JjSX_NY?(3pQv7J6Z*? z`>3owhC+HrZXQ$bSP{;_mVjne%2G+D{t>#(@edZoujAmEjrD8{`$@ZgYfwY3VYH`_ z<_sP)y^hibclil;smquD5A8P{+hQ{f@=)C9?-g_J!spr#8CC14plyJ4)NuTm%u$;1 ze8y-u$C9`zaVB02J|j{4?kr=FoX@X))d80HR|R>|<Kw9Y7oK7HDIFf%1Yk(udO8xR$#{%h=;Zi2{FdNuyHOw`Ws^&*dz7N7W0p%oK!3K zn?a39k5i{g4MWGZAQ&D)x1JP=jR7V1eE%N^V7o%Px`W9k%+P(|R81V$F>{x9)zDfVXfMTj7h8;_hJDS~ z47C_Zq15|%vBf=D(&c1N>fXJ)HrRB?t=tzkXMxCG=u}$H$8lJ_ixzJF0g$nPNoo(2 zSyZa8vIrBbmE_v-PGpHZ+t}%&yn??iyIw_^OrWNNE%dk)@vMZEBs$J#O9|T^zCZBVJ12;7gY~V<3U=+EuXDjC*LxqB;aji{Sv#l=*DBhDFCJZVJTiM%4n)w!A zt@Ou;gAz;(BLs(yYCRRi?gvjEdk{qvRDq4Ucjsj6ikAK~@P8MQmWMhR(a)mH0g#Ta zJmh`ssJ}Koa8d&Zu=b5ge94+!8ogdFv_drcuDv2KSuQ&Qf^=tW*BCX)llqva5PJ+5 zX`jV=e-82njMGHQ`nn0E7?%MzgOsqJ!Z$?f*HpWPrOso2VLuY7Xin>cGP7XxPlgg7 zdpS*Yq>%0~($N!}gxSRn1SUqjvHkc{e}*f?Bw5U_s>*B9(D?X!qgZRfbBqe0H%F^qg6)zxYLu{bXg05HDO~Lce$HdapM`I-=S; z^bYhepM+SP|9WS>q4=3&8~C3dS5D>3gGCm3iSrG)WlD^ff!I-c-iCQH#`jFeG8^*( zJ;ihKXEt}#*~4*ZI3w?DHUBtnb*}iJ)ctjGF(Q&I>^FY8cVPqm|1R9l1F;s28#?h*0(z88ID`7alUc==reds z(On&cieG)X?CbNl{-)g59QCXuL3uv!H)bz$tB2J=d{cDS;i1?OrY2d@Av zK3qFpI_0A+b;~NVms2U9o4Qpd>y_5maOBe66*J06xG#%L-p6py=r|_(mT&}II6!mJ zFBGkX-iYvorD8=KN^^$Baki04g_)3(@Xk`kkK#kpi-b;v^Tj?^vpcTLW zBoYYzJWVgdWYLM}Pkak7Zn!_}X4&rKF6RUzYn$u@_sHPLD*>Q`h@6j^{YsnO7>9W= zQ?xgvm#lvBXzU&46ce{3vO1xVg}W6q29AuMVF#D14>MWH`d9_z>{&jf^I)w|Sy4U0 zEfd_|)#6*H zqyeLWRHD{bY=m%wu6XUF{+9cCaFqOr5Oue<;n}G$@!Uet5yP(s52f8@YEe^3S3e>g z-@4=q7FIwLz}IkcbW%ebQkj~u zy8Nf==r0#m6TRlf`d!JTt@rE(O-{Y*^QlV|?~o+HyPY|tkAi817CWJxakc5V0regn zlXRBChl_z8_f#upG1v+g0A}xIkI(=!YUs(CWU=&{4m%fZ3>O7i>%iyQCS$cL>^x_` zwgLQ<@*Q|Y2ee14Lb@A@!2D_d=Io?cj|%t@L4!ZIz+VgCPWTT|R(7`nTdy?5t=L2D zFNn@Ci%Q5<3b_ZKH+JdiVTyQ0iTJr;$ru?GbIUYl=a2{!9A{_%^{^4y8CZoLy=6MQ z9ZFGzAZzkqG$QkCGJiPi_1kOUPu{3$?_BUWJBlUn`{h#CyN=%o}1H zjy`jzdpLHM5h{0Z=U=!+PkE@=bksDDY-n9jHwmrW*V293UycOm34A!Fg6~drAC+RY zii*=&H^2)AcK2&+ky~ahH|`x?Q#K;ch7vEsn?TP7>_jV4?Ln&tO*&HuCBj}c6T=v1T6 zW?x*tL0JlXEyDAj7=iG?l7+Voc-IcM6#1wq?0{tuE~s25ENVK^^Wd5s_ju>dYPmKC zi8xdbhgqPH{-?(2iq&LUw$3#Jfz!F@sqK4ZOaB3q%~%HZGs?H2-?BVbKt}yX0Lgtw zlX*YcB3Y$TR^>^h`_e;>G|%ot#J?hhx-sAK!MAaaYj9C;M3G;XwvC`meo0Ku*ex&% zP3nqf(Do_gFMUyC(r3W3PGK|7Q!APs5WlJ@CacJ_x!|T%Wcd$0RVX7*;5l`Ip9;V| zIQ^p~MdusMMa}Q{Y+3>*p5nPf4Tbj{R49#pe$yQwL**jZqkgs%T`v6k<7OPpD$2oI zw?h%e2%}-Y&14=+^mfV4beu=_1Zhf+8iCh^hXz#=>N5+f2D&v8+Co%+$t3Dn9j^w> z@zGQ3@|d#I1KhvS0f~H&9T+!MW3@0SxjpA@5^-B4RF9~e!$TpWSdQRD{FASkPW!f~ zZZ=G+Q`MJpPSRXAq>O9`E>3Ee{b^e!Ql4|UOdup4i$y|V-1c=?oF(w8-opAb5Pu~$ z&l5U*@=QtvoNE9}$|fxmW_{PVSW87rxr=IzeL;%aL;+$&sxa1@`v24m0h5S9r)AG+ zZSB478g*sqpD~TJb2kI^>m6*n1c~cC4!!&k_?Fh64XZCaT!aVgNd7=cHNVMJLRb31 z3I>$R$c|J1(e!TT92ub|2G#>rx5PON{oM4DK%M+43qZnWeOA3GGSrfOk!T`BINp0O zO5gMc5$u%3W12TpeHSN45hRc2Iga>Kf0@^bwycH5&@fvX{t4*T87ulEp)kC!5Hn4` zvyq>j^rHk0eReODlml>}3k^^Bh!2*yB0F_HGh2(&#}V-%T}V~LuDt$U+^mE}% zf`$Lf!WJB=j{ z?(r*xRjPvCs57Rs-=aLyH)tdN8&S%I`t3}T0lbZmHaRVgN>WMNS_eO;V@-QFpATD* za1|m1`KS4gipi}~{R*eGG~sUaxME@PP3Y%n-c2j96@r$Lioz?XGKcNFz^877O&Qbc zWcoJKUIaef88Oj9?KS|yONsVqZbQK=ukzEfe*vxV{h}ZM>uO7S3$dUoFTI$gR+s`N zW=`6pCs(pWSuh9TpN2D0<)CF--7ZUaFM8+hSLpA6E8K|9t92UIz@vkZ8tNkrtu_a9_ai~WeAyL{8d}(Gl&iyS^b2WjWLM>SAdrLRG+f%w41c! zwy}~Vi3yYt^3-pJi%!lY{Xf_x(?0Py#8EWrt5+tk;#Y1!ins#&PZipzoR%}Mq= z(h1bd*qzgIcB%P>BneVYUpfy;liFd;KJ!kyC70ovC_3Fs2mQVYmA9=Sc0=*Ms6DMX zc(p@U*c45pIe?yjO8`HL`s{Gt^8+@3|LGJHVl=1@=)FU%3Wt{%lp;^|f2cRF@~3Fd z7_8yG;2T8#6#%jc@B?}p^9h#}AqOD385t^lXW>a{zobruHc~3n{IWPe!WB!*cAzo< zlOC4%|Ea5j0<2roGQ0G^X}?F1LN53JCV38Pqx}t?B2HBh35cIpLqMil+WN)(fz0 z?NhvtX4~ta0N$VitH1CjXMx9Iw8R~rctYhg2N@P_s8iE?}H_AApls<(JvCvk)Io`*ITx*c?O;{0-2LvrHaMSfe# z#RaNF>N{hSAu0}+Y=lwS!TqY|K;qj{zWnwrY%>G0A_BrlGbAe^k)KoMOK z-ik(&&1^18Wbw%4N`gof=;KOCuzI8Z13t8uN!~3p>U~N(R27BOq=XGQHAbsJj5#;q z=mhuKCdY7W7DlRP*?aou68P>~a47gfVqRW(qhw~1Y4c*ox<+eRoSgU%!^Yy5H2tHB zb?O=;+XLe6qKR(=+|F4OKN4=Ocm)Sw}3emZJUNbl`Ew z*+53AT!y8T_Hyyq*AxyVuOvU$40V6=7&M@>!Y--9RxZK}!Z`E}!iRx+nk{8a5%GX) zaN)vB9SyPp%XWaY+xXJxdpn!P}W zzTCD2l$Q9>^bX~> zkF_<9-SG8hJE4doo^H(I@riO5Rs0YxH>J^CZ<7hHj;<)Riuov?4rjhb;b|yk*$I=H zN>@)l?j8X*ReK{S&gos7BFWt~qcqM#Kp&J7fA)r}5=el9XOjz620QYd3j+T!TnXCH zf9?q{0KxLjBpy;yR4*h1oz4)$PCsRBiQR=OqQnLAYs(xM$Gd-%M9tP3)N<)tT*FyQz%-iz>-&knS zFgR~oeU+qRX~UiBJbS}O!r&IiZ9LQyZ%l>ihUZ)|u z|2679KUfzAIER0PAHx-w&hML4^s1rC@==D{nhWpoexko(yLKz^0t$uwiUQtgrUZwv z=3_+ZVb60*9uKKQd?wNqH)>2zmo|54zZ%P)RrKVo|&G0i+Y5WxnH2L6HLQ-Tk#odSweewDA|Ea=U zFG|xfs1k8+AF9;fDE?T#uhbad^4|S8$qOF-2%-{#jdgI`OENVGFpQtNK}qMe9o?dX z&J17jajZg1-ga=L@!pPx0(Ob*AAfa58X%4!N4L>#>JB*brffd@&eL(ELGyS%*eUdT zRr*w))mF^%^7wBr5q{0>#h^W%Qjh~m!Ys4 zN2iY2`Z3i69wr*404(j)pgl!c$~@=usy5q}VUxQeiz7*Z0*|wkxVj^w%217(9qAjq zVFvzAqtd%xtrrzZB zPE1*PrZAl2-MYH(OYKsDhLcp?OBU?P*wm@m$SSKyzH;FfqD*ROd6Z6g3`!d5-$fu2 zfACvlVlijjR;>M8XsKu!+^^`tImhoyobmiWS~a6zi*8=`5pFEO-+ zwi#ofK1F1k54uaBL_!@>8I-ZCU@~4*CA9sSMT-MRD$(kFx`R_>8m&CqC)gu+vM_{+jPh(!QCtKfOs(lOFex6 zJ`wsM`%-{yD1P+SGnIArfv;2Zw>WYoy+;sNn7Tfgv06F(g2gCI zO`3v3iTEW*h#$ChhNA^-67E=ROE40q58EQzX@bf>2(bK?8^ z@Qr@h@s_sz>w{RIE-8Mds=S$k<#F1X3N1Q~0387&oYqpKN6@B8Dbu(t6@xLsG1xzA zx{n4lCrVmePL3Kz;qgavl}dZ0!KZ6e|iDQ zvK5b4cd7_qG96EdIvmwU24BiIhbbaK;HqKg!)zaW&dtGYF|Cb|Nq5WmWH~x_SUg-W zJ2>snbx!st&C1^;C&3|@#C!f&`NqI>rcN@?4x%8_^jAE@Rc-1|0rS;n++zM<%^yM? z<`KC`3uluydb}KoZe7sl_>uDzYRu1zwU<{^Q$vh{wRJT;bTMvDo~%N&4bAh5tV|g!vEzBcI?nJ$ZZAVwQ|yO8z0Sdd$Q zYZE*Cs3||Qun+*&P+Cm6lDI>$bb!JHssQ<%Bc5>@hGas;Fzipt1T6t@;H6L6Kd?#= z1%~gFBT~RN$2oUnO66%xG9QD=b~)pa(XDkFsF^5Srf%0o_u0YNkGr4iwWIG9m9w9Y znqfHqn37FAqX-~ZmXoTs8Mq7Y6NQMG>OJ3xiYGX0KW8_?m=^PkXX?@Fk$YInV}ojs zX0^Z9YkbMcVJ9F-F9&B`IwV|lMsm~h41Q>bd;r3pjOatWWHznrJ3$5Kw-n1_Gg|e$ zj8k&UpFNo$X9dyXE9navS1x}NS$k^}-PglmJ(u@gaP#rrzC8j09$yX>WNRaD$`SmS zm2hDisrEKTRq6rw?)%56Gx(cyT9=NV9>C$g*#c8OhlEGKiZAWk=%f2Rn~=qLRV ze&Z0wszx)x$I>G$MQ;67kr)U(!wNuvW9>ovo!n9FNA}3S9Z=5$C1X^9f!ipScp z4+Lq-iB{rFI(v0XOUD9nkF{C+$0-HxR6#)=ANFmXZ%c^%@XH)j1;^K5eNd@tyy~7Q zjrG~eJUbSoVk@cp5-l7ZE{9t-1bZ3RgGcO|#@+X8lB;1e8Vv z76vFtdtyd{O-u#zDJb^%h07>ZdFF5J&2ig~H=<_*lD0AQO_~|kLVc%FWQzSjTWt8m zf5C(&8%~=|{=!!5Of^!t8xR(!Zb)rp3Nfs2g2zuD|wswk=rNpE_-8g`K@wsx8vMp|Uro^Q zKXhpKR$*Kc{U`C=jq_}mJ3^yiambYngtHv;tdQO#xFg1Zr+ogtaTFElc-|Bjm$}%T zt5qj=6HS^G_?4GD`0Um{RxLny*rrkeeWQ4D0Lf|!JOvt<{e>UZ$vjKECx-Xy?X)Ed zv+cd^wZ@G{R-d+7NV4@0>{5Y)5X=SALaIjV=sS$yu4aSMWyYh+T!F zuh%;sC$z+((Jq^5u|IOJP1~nSpT&F{%73*hBCGOKbhM#XLW~z4W1&;1Wcc&`+mN(^ zhl%86Bi}1V`~JVO$d_6tHIVP|JRp5zVa2{UVc9|F?rTT_gg-b=N;-gx?+GyJN8`w6 zxA7jp&CfUb^D5mapO;Z`vz9oR`-Q=oYYf{5NIMgeCIVxedoSxeY>9=|2uk-e{nAFJ zI\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/723/6e812143\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 10:45:05 29.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n#:local ScriptName [ :jobname ];\r\ + \n#\r\ + \n# 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:global tmpAddCerts true; \r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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=(\$CertUrl . \$CertName);\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:global tmpAddCerts (a);\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=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n:global GlobalScriptsUrl;\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n" +add dont-require-permissions=no name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + :put \"Download image, and save him to usb1/tmp\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-arm.tar\" dst-\ + path=usb1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 \\\ + \n action=dst-nat to-addresses=10.9.9.2 to-ports=55055 in-interface=eth\ + er1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 \\\ + \n action=dst-nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether\ + 1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=usb1/tmp/awg2-webui.tar interface=veth-awg hostname=\ + awg2-webui \\\ + \nroot-dir=usb1/awg2-webui envlist=awgui-env start-on-boot=yes logging=yes\ + \_shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/container +# killed due to out of memory +add cpu-list=cpu1,cpu3 domain-name=vados.ru envlists=awgui-env file=\ + usb1/tmp/awg2-webui.tar hostname=mikronuc interface=veth-awg layer-dir=\ + /usb1/docker logging=yes memory-high=12.0MiB memory-max=16.0MiB name=\ + awg2-webui root-dir=/usb1/awg-webui shm-size=8.0MiB start-on-boot=yes \ + tmpfs=/tmpfs:512.0MiB:01000 +/container config +set layer-dir=/usb1/docker memory-high=2048.0KiB memory-max=2048.0KiB \ + registry-url=https://registry-1.docker.io tmpdir=/tmp username=amsternl +/container envs +add key=AWG_ENDPOINT list=awgui-env value=10.30.30.10:443 +add key=SECRET_KEY list=awgui-env value=RanDomSecret32SymboLs2325272931q +add key=WEB_PASS list=awgui-env value=zoomzoomrulezz +add key=WEB_USER list=awgui-env value=vados +/disk settings +set auto-media-interface=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether1 +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 +add bridge=*D interface=*C +add bridge=*F interface=*E +add bridge=*11 interface=*10 +add bridge=*13 interface=*12 +add bridge=*15 interface=*14 +add bridge=br-awg interface=veth-awg +/ip neighbor discovery-settings +set discover-interface-list=Internet +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no +/interface detect-internet +set detect-interface-list=static internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan2 list=LAN +add interface=wlan1 list=LAN +add interface=ether1 list=Internet +add interface=Bridge-LAN list=LAN +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.86/24 interface=ether1 network=10.30.30.0 +add address=10.9.9.1/24 interface=br-awg network=10.9.9.0 +/ip dns +set allow-remote-requests=yes servers=10.30.30.33,109.107.177.79 +/ip firewall nat +add action=masquerade chain=srcnat src-address=10.9.9.0/24 +# in/out-interface matcher not possible when interface (ether1) is slave - use master instead (Bridge-LAN) +add action=dst-nat chain=dstnat dst-port=443 in-interface=ether1 protocol=udp \ + to-addresses=10.9.9.2 to-ports=55055 +# in/out-interface matcher not possible when interface (ether1) is slave - use master instead (Bridge-LAN) +add action=dst-nat chain=dstnat dst-port=9443 in-interface=ether1 protocol=\ + tcp to-addresses=10.9.9.2 to-ports=443 +/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 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=2 dst-address=0.0.0.0/0 gateway=\ + ether1 routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=109.107.177.79 interface=*A type=external +add interface=lo type=internal +add interface=wlan2 type=internal +add interface=wlan1 type=internal +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/system clock +set time-zone-name=Europe/Amsterdam +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroGig +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=10.30.30.81 +add address=10.30.30.10 +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="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 +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com diff --git a/MikroGig/history/20260629/20260629124309-Diff-Config.rsc b/MikroGig/history/20260629/20260629124309-Diff-Config.rsc new file mode 100644 index 0000000..83522db --- /dev/null +++ b/MikroGig/history/20260629/20260629124309-Diff-Config.rsc @@ -0,0 +1,8 @@ +485c485 +< \n:global CommitId \"main/723/6e812143\";\r\ +--- +> \n:global CommitId \"main/702/b3f31455\";\r\ +488c488 +< r: root, in 10:45:05 29.06.2026.\";\r\ +--- +> r: root, in 07:15:04 28.06.2026.\";\r\ -- 2.52.0