From 3db3802cb2cd724b5597cbe4c6f7d44074a41691 Mon Sep 17 00:00:00 2001 From: stuzer05 Date: Tue, 4 Feb 2025 14:42:48 +0200 Subject: [PATCH] Initial --- .gitea/workflows/build-docker-image.yaml | 34 ++++++++++++++++++ .gitignore | 5 +++ Dockerfile | 24 +++++++++++++ app/admin-conf.json | 7 ++++ app/conf.json | 4 +++ app/runners/.gitkeep | 0 app/scripts/.gitkeep | 0 app/themes/dark/darkBackground_header.jpg | Bin 0 -> 37203 bytes app/themes/dark/darkBackground_login.jpg | Bin 0 -> 11315 bytes app/themes/dark/theme.css | 42 ++++++++++++++++++++++ app/themes/orange/theme.css | 14 ++++++++ docker-compose.yml | 13 +++++++ 12 files changed, 143 insertions(+) create mode 100644 .gitea/workflows/build-docker-image.yaml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 app/admin-conf.json create mode 100644 app/conf.json create mode 100644 app/runners/.gitkeep create mode 100644 app/scripts/.gitkeep create mode 100644 app/themes/dark/darkBackground_header.jpg create mode 100644 app/themes/dark/darkBackground_login.jpg create mode 100644 app/themes/dark/theme.css create mode 100644 app/themes/orange/theme.css create mode 100644 docker-compose.yml diff --git a/.gitea/workflows/build-docker-image.yaml b/.gitea/workflows/build-docker-image.yaml new file mode 100644 index 0000000..46e9b86 --- /dev/null +++ b/.gitea/workflows/build-docker-image.yaml @@ -0,0 +1,34 @@ +name: build docker image + +on: + - push + +jobs: + docker-build: + runs-on: ubuntu-latest + container: + image: catthehacker/ubuntu:act-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: gitea.stuzer.link + username: ${{ gitea.repository_owner }} + password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64 + push: true + tags: gitea.stuzer.link/stuzer05/docker-script-server:latest + cache-from: type=registry,ref=gitea.stuzer.link/stuzer05/docker-script-server:latest + cache-to: type=inline \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37ef624 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.idea +app/runners/* +!app/runners/.gitkeep +app/scripts/* +!app/scripts/.gitkeep \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f779d6b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM alpine:latest + +ENV TZ=Europe/Kyiv +ARG VERSION=1.18.0 + +RUN apk add --update --no-cache \ + tzdata \ + python3 \ + py3-pip \ + curl \ + bash \ + && rm -rf /var/cache/apk/* && mkdir -p /app mkdir -p /app/conf \ + && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ + && wget https://github.com/bugy/script-server/releases/download/$VERSION/script-server.zip -O /tmp/script-server.zip +COPY app/conf.json /app/conf/conf.json + +WORKDIR /app + +RUN unzip /tmp/script-server.zip -d /app && rm -rfv /tmp/script-server.zip && \ + pip install --break-system-packages -r requirements.txt + +EXPOSE 5000 + +CMD [ "python3", "launcher.py" ] diff --git a/app/admin-conf.json b/app/admin-conf.json new file mode 100644 index 0000000..08e64e7 --- /dev/null +++ b/app/admin-conf.json @@ -0,0 +1,7 @@ +{ + "title": "Script server", + "port": "5000", + "access": { + "admin_users": [ "*" ] + } +} diff --git a/app/conf.json b/app/conf.json new file mode 100644 index 0000000..e55aac3 --- /dev/null +++ b/app/conf.json @@ -0,0 +1,4 @@ +{ + "title": "Script server", + "port": "5000" +} diff --git a/app/runners/.gitkeep b/app/runners/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/scripts/.gitkeep b/app/scripts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/themes/dark/darkBackground_header.jpg b/app/themes/dark/darkBackground_header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..857980cc3888aa957be063b5001e5019740a7f49 GIT binary patch literal 37203 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 z z&wVHFM)lKPe!MTX`2NV)Vl+-oH|Yu;o36=e^V1Q=X7Q}=zaK!xYx<2|ej45@qwlFV zH=TWH5i^VzX=%H;}_npaDm`H{8SYd`~xr0^Qj#%YR%m8@!I-);7 zOQ9-|F`#tNdly}0W941WTT(q1`}#DhtEmq0x17Q@_RXibZK89Z>KUI-vySXl&hemQ zJ^JA8R9pzvRhdtwBLkzH*E>FVYUEaam+&>Ci9b`}BQ3%HtIhA%kB02`uO+mXa>^p2 zwFG}~am0*yBZ$}Je^n>o~7@e{awSQ8({qWvr{t=(5mh1+UTyyI^gZZ5y<%q+kyp_uE5_Dc=PR!>uwe z`R$+94CG(gVP&>|?;7x7;j3#;J*An>He3Bn54uB^xDo5dRCPzf*Eq0rd33t|m`yRC zTylHm%oigbw2V`m2W?z6IQWd=LCc!EtYoqj#BaR^XUKTN7uQEFljjERxSX5plrQ?J z69$d~5g^{KL-Mh&XVVX=0(E$hMrJfidFaMO$A*Y#oq9DnFBGcA1(|M6y$QDt< zO{XuCbqvb=w1=Hjc--KNIYknSwLWE)L5hb#c4&SByUOoJU5qS0z93({I(!(>Y~@%5 z#H9^4GiDnIO9ra+^H;U+E;-uTw7bXi$&uz)RSkk=XS&fW@2#eMQ?^T}?tcgit(MLj zJVEn}n%aY{Hm~WrYllSihzVe++I&7k@uDro(qLiXYrQI%J-fbP)}@*xzywO`WH?6+ zP^49U%@;6DDq1bz(~SEuVY1RHvv(}vSCUehu8U)k0K;g>3+>}Oli*NVly&H$HcKX2 z?qQBc>@ZI#gsH!z&IHJ7LBTYi859U>-*{ya7>f++1nYR zb?bS+H_fN)sh7Dhpwm>36HE#M2OFrz3rtv)UrJ@ z+o8)asC9OSeO23?N|o`v>YGROMOod49-b@x+rdpb6MD#n@eExCY8No#*KXd~m^(sa z@{wXBpHfMoxByj1$66CG@?G+oH+SzZF^E)g+22rV>wbgd*)1pA@}gmHEKK4bedW18 zJw81iN-4Z8+{Rk_*xOi3zT2}|(CalZW$f~fVrC}_o|VPeq~Aljsa6PfT7-Xgm^+d} zg~&~@2|%(ewaZm_sL1U}_2l%~ZF{ajaD@AtA#4qJ%o4xgy{cBTV+}a^?b?H}FC4EN ztx|jZu0(&~kW^xgI4W-|n=Yndyf>OMRG*PDc!+h0O2Orc6r`S|6W~=o;g>@hrftBS zf1~1Zxiiz-ImUX=Rc0eZda{gAMl7u!GZW8h>R=6TjH!aB2#lvY+pf?~N0jO`TZ2M$ z-?-~vORwLXoR6G7Fo}Yu?g(pe%y6^*q5hmxvgv7o&2cZ;++~=izJZ1Y+URS)xqzrtz+#~ntn00c%jNlH$=UI;s ztqOTMk3Bz3XfyN5o{cXhzU@tdOZv%Demxu2L1XjaFb`F0etmo5?!&@s`r`b7dtWED^*^3`5+FRDan#)IL+X_FjaN^543(L} z4;8E^ICocn{GmbFp4ol5a~v9`jsBv?9&lrC)p_IPYyAh`JDDlwEayRi7FJE}dYyT5 zj#~$`4cIK>DzA!tl22z2*e;{Upg-g1XY|NN0y@8g@9|f@D?pWh(MQx!LV{rlYG!5k zsk}R>sB_Q1J%5Tu*#fS6sf6b*v!Y5}66OP+zSH4WM9|1_IBfTD4CUKJ$GU%VqD@Ta zuHe-8p3bgWzl3%>ww4=cyEjg>K}!tpE?zsf^5w{`{pL6SI<7d)ea^5*&OA}fGb|3A z(LiObtn0h&C6+$tPl~FZku1^w#QkfZny46zDFQ8*R@W|I^_5vtM4#6&(QCMPPA{a+ zN9feiJ5mVR^5kF>zu~kV{utvFwOBn7F&=XXR;ss!QfbNgk)vUpX(x1qWYsRnhWs3} zvk#4UN9-}Szz-lVm(lVN1ecHJ@U4|)FGNDSu zDI9X9kK(w0t0bd_N8>?TA4GqK;3d|R(jQdr+_AcP~y*@s+s8Y$iXO+JWl%EJ!&@dl9 zE7{XNM&V+adH>OOj)(d)IvVB==lKL47X60DdLDhANuB-W-c$#_s#xo!7fKW@TkPUo zDKOi;auW#QI+k01 zI{ntK;*{}$Gw1w-#rhBT>h0oMz5eU_wDq7Vx>)4BDyN znW!JtMrY2Y$SKU$$<7P+JG;KqZ}<1u9hL=MpoSp%ipSazd%S$;M$Ai}$V@BQ?HCsi z)z!9SX{9acsL+?6 z%E|yK%5$(6a8y&XZh`gC|zv)WFiulA|rSZJqh+Z&gqD1daM)WT}-t*V5(t_DI$|lI8+z6G>_-Ci(D)01|h697j zxAQp~TVlDgpa66KUZo*3*iH)5Lz$ul`}c=_Eyuq0))Hi$X)VWh(M=ec5;upci@SRIZ$BbEM=mfW>op^L;r}NbB6kaI6YV8`+ zO?ls^vdTqwX|A_gen$ky9QANW3%V%O=AE$(>o13P$G=~N8%rKjR#fkiF<>jf45vTr@haQexbsVJ=`suBLfNu(p&*XmYy{|Q9$>5-Go26wpYcAJWG%Uk!q z$-hnkN!u;GAm`!!NI$RowmY*JRrSytciQ3`$|COflT{N~V9RH%x0$LP<_fb6so|lF zFJ^_!8K8TjJ~Y;uMQ3aHq)Vm;?9e!`y#^F&WO~Y&wnfmyP!8@=NVK?f()TSLTA4*& z;gX@Ub-bzLuErNH4c?tJ?zY|`@$r}Su-4fY0pEL{&s55zJsh{>K<)Y!bjc8Wv_hj>Q)}u&y!hQ7vhf=Wq;M1 zVlXz=lm7Yd(GcOIuoF*R(MyveJ*U{1jI2D6$C!p)El@YaGK|d~t=bp)wIm$w)ctx~ zE8^D@K_L^`IZIiSqG>wtzHK2SkTyP&6{X|BLCLt1QWuj7EKs^#+xex zeIe=&r%M0dPPaU?ch*zq^v=nlIt?^gn0Lx(RKtS=cFnY-P8sia9*=CTofwfw>h*A3 z`1rNaf4`K}a|gSuv6yy_$|Mf1K&F`Eoe+IiU}pzGt(iO=-@euoWI= z{>;X|Y!~|ctZlBNwq{mWGM{MMa$|_$Q7$7zg!b6c9OJ$_lb&u4XH~vmI+K|&$JVf& zbLRQ}9j{KJ4P~S99C}UXye0uJBkGI>^!R5=#2fhl8x0vTQ?Yl(_Nmtl_*yk^jG`f$#k`}S96JG$k??&6f+x&G0kuOs&g{v_K!xXgOl?+f2J*@&C9B#(SBx4@?;(CGzX`yJx5BM$1%;4 zQ<9x!HO4i$IvNvGyFwn0WjvaoQ`n|+{Ybwl9f#Sgt8Qp`Q`~+Ml);{G34a z-3WbK4tz#Yv@bV&L8c#JD{Nq>*v2|D6j2?w?}eHq{l4-Kk53<_loiYE&w8%iZ7;R* z#^-|Cs}L%rHKSYRlmuME!1|iuU*$2M&e`7+k5W(fwDyapVCuK5Gu<0^yJ2dd+y^Sg zYr@FH4A&2fQnQ^Z0n2=Q%`JI<+U)gtsf|u+R~> z(k-p8zRq^fGNGz%x1v>=)ohbS^t{HaxlFsvz;_?Zm__Gj>KU&}J3G+0+CaLEhrj(znsSL5R zvi6B)QujI3%67b2qg4jZrovoa0Ke3vjc%Cy(m!@W!B_t8Zvs=C!{Av)Rnyg-%9_r2 z^jHg`_E!U(MgLG<`<&k4S}=shg>WJW{-5`E^l z_f%tL(TU+yDKRI7bnDyDR37Ho{ZDh5-c&WP3<{*Dr^lEVxIUEkG>L4Mk<>cDcxw$9 z5K0~`l310v_RiBo(cbyK6Evivf1jJZ%sBy8{s2q4sWJ6)8O#$jdo24|sr04c$<&gD z*)l>Vu1gB)YIUK(0shhy1(Jh}(>2|Y`byR?q1KRt`sSkAe1Q#)l`Z-0R+&i4My1Im zSLeJb!$>f^126jDsENET5DA?Q7ZaL+(lw9K9H(w8)#`Vyb6b*WlJV=D_yG}m5Ojxg z%)WnlB?NrC#{Ro~*dLBFqt@?Y!7nQyNU4pO{L}w+Dac2zQ+Nac{~=D%JOB>W|3kDj z1G-TJM{VTbXaw`-{H?i!I|r-=Vskx01EI*x<*WdJ+FSzuZgMNZrhNEDE}`g+d;ozW zVf_)Gb=l@31(27%Rd7fxHphf&Y!NF=Teft*RaG}H>ECnVq$Q&Mz1_dl z+!%126%x!4IJn6Zxe4!Iv$h-$tkk0GPKX_WWBte2Vie#g@Ubx=hzt}Ft%EHqgHeHO z-Ph|Lw$|Cu1iT5RH%U8`#1j@GH!?P%H;o3-a8s$tCT>Vr{}>0n9)d*wUqEb$B%|w} z%u$>8`xjN(tWj83@XZ`zHWw6t0RCe_5;YJ+v^Bui6MQq?QUgIEA;kpt=HrAQ#pWbo zB=BjlVAH+^B_Mw*5y8P0^93W`q&Sd^#Oxp>0mL>OqfSVhbqDECM-db^(v^j}Ptbyr)VKjMJE zYm(Ox$AlvPaTmZ_l4WH6H}Q!(Cm=9wfgo^}WF|P)|AQyqInfgoNrZm_IPOUKpT-!d zMogr5vnXNP4mu?9i69yi0g8w=iPhF4VKZfdC$fqWm>cu|BIcxJK@b}q;c4QHcOZl}RFr6`K&0NNY&ofjQPz6h*@MXSmTnx%Rr0P}~3X8iF8qfT8fs zfgmshSwfIfC{p4d76ed@SQ!X{+=!ea3lV8&kz%X~!66DabO|K6I}EknHON1O1kOK* zFe(VlgP6813sk|pNg=VS#D2$8|MVbrh_fZp#&;-22NQ(#{w2}D!aqW^QQ=?EWbr4_ zC#@l#jR5mJEGBz-#7j5NNGp%ppz=r2n2v)Wz{kc!)ZC<2L|suL`tJa8Q*{KE`(H#D zwW%8{lT?HqoQSP-iQyuGbxmRrh=3?V5)lTVNT~nZQ%I~f4T8kzpW(XZM&~A^hFG;f ztBO~Fqws*3A&7_wHVFbzh5-l?iWL7b60p@k;k37`(m&krkU9sw5J~LtK!O}>LgI6> zj5uP60{h?P2)r5+pKmM$%O;Krywbmn z#zr*+-W->0l#&Ta2^4`Ks|N1vo*?@7Inmp{G1(Xm@=y~!K#@ea3D|OyZnQ$+jmaVd zN8!1I3@;TW&>M4nl!#8YsPjg%E$BRQK8lQlW6AaLyg`|uyRLxeAPExEoTQ#)VW-(@ zNN;pYj5C=zX%QeMDFrJbI3b1$r@w*3S*_a=tTs6RS0t$|9;0xECR^BVsLcAiKVl05 z40~e`2u_Gm!rLP8IW8lcVjydaS+-FPdx*t&Kw=)aw6P!pAI!HHCx6r#Nw6UTkU?k& zLAEg`G#s%}KuZ7NgkVLg1Y*PndNYzt2Zhxjcq8rWO-zYu|L}Vh%r91$|Kl%Ka2nFg z;5VKz|Jynk_)AOdm!Gj;d4B;_OAsv4OG7TOjkh+lkWo>MQSm(?5>9vl6Q zvhlAd6j{=tV7qsOvom*Y9>JWQV(xGi_!;L2)zV;moUi+9UWfnwTba-G)(f9MTm42g zK(8`ibjjeCHsiB@pm=I2@%2--gN#w)WwTmF5B@$f|K+#d{FfKoG9|XPFaB0y?8v`) zyTdgSVG<Jt!UtD8MgW%}eT?fhsmU3OCkenL$Xes89c3Y&rQ#u&}&UDC0DHSjO=u z^CrsWkY87S9coIwvCX|(Sy$%=Kd`5ZDUYd7pJE$LmeTPS#B$~F$^*d8#Ablmke20} zh2Hu2iox%$k#z|d7eCJD)H=AaC-7apW&NpM#rM(b(+ve8AWv{)pb{`zwJo?O90WT>|lb!ulMG(wT9V zZ5(@ok}oo@rbjD9M5gW6ItHsrhC;eNU8qTIV|G#U&lRcGw9w3!qSBl>jF!qPisd_# zopc3l3P-&<@S*WzN#nxAPn{y^x13*dr*+;fwI~F>yR!eCV8~OCqf<12G#p>_cqhJv zUWhTLRT~`-yB6n1|K9ni!h*`ePrGxL?2j@A(>y|Q-`+C~4p*e&6+V!1>F2>ty)%dF z3){YhuKx7`{A!^_%jz1?*{0JHpLnmY;B;44*y7X3Koj{M#Ig+U*pbK0v6lTcEQ*(P zwYq3acA8LcJKRLSNb?7WMzR#(qmiIS&FmbUlv06R0YXdX~jY^d2*V8tM^THgMCfC0wiE88_! z+}qnU|2-kfxMz~-q2PxWsJh1eJ8qipC#Y&1*aMgyE^VuLo~SmY^4a%Z%nNj-Gm_Hv zY+Mw~0T_`yi1=Wd8(N5Tly;%dRo3HQ^vu~UGmu}L^l7N=X5nhWx6HU3r1&zKn} z)oVYeU!MJa|Ga`hp`VKpQa9{rOJ)^B;cQx2S}&VFE4}F{xOG*k&FW+5)2T+0PuYo5 znIC_x0V|aU?rVxtpdl$M9}DY}p-Ek8{V#V93#ncTeQa>jdjCySH;+i}J%dPKyjeUv z-!6{vR$XZCud(c3*9QuHuJGu-ebf`hu+LV&QTtB3T)u|?8sJ$yDnS2Tqr|F%LoDe9 zOn!JCI6)^4h}IAMthkcS{dDoEl!18Xw>fmat14VuP zCH=?AxpxNt2D1E7!Y6N^<`p>BLZ1}DP~qj-Pc!QwK|8 z;tS)QCSU*Elng*GhEg@ODoaY~dpkUIxf1gB zy3xJ><>St^na^2I)#&_6@N8sP?*2u+2J9PWMSr$W?6QW*Enz5 zzWeM7z9z?wEHhaa$}4n_eA1oXQ!kS(R{iOzI-}~gmgJf2g5;wb6p78oW^CTJ7X{`A z6u;m5(h8Wl0jx8@dTx@muAT@{VXp%pei?J2@A^B@z}En#9zSjqW+Sgh6S~VnS%ZfB zyh%%C6YQOWw?p7{oR7bb-^;moMSJyCqWT&TsjFQ+CURMq4&qEDnc&;xQ(NfQ;h=mb z@#pt?`r8ZN10T+sUACvTOA1@P_ip@PFs-!k>x}M-afZqr!gbmuvkC)7exsK(eC;i@ zFQ>H^#Qys6tIKfMZ}IWS_rvo)^gcJLoOnBJ`CH%<-EZ)>!OvJ&B<)Oq3ZZ4j*t_?? zpSs=mwi?X~YoA!EcsBNs+e}a@*!bjNk9akjqBKw>JVAa$H+DtmuLsg9FCS~7%nbjY zt;~n}<>U)o7KB}F1Ap_qa?i(k`t<>Uu@H?)_89v5*u!hUo6$;oZ8pyWrlo=Xsm2!K zkso&JK;6m^FvN`&sJo|jd~$-;YTLFP;{iLqK)ri5Cl@XUMe|js=#JI-gu*=nUF7av z`Jt1}6@CtV;BaoZ+;V$yg>$A#E-D?HUr$u(0*6+(POlUd$%32y#zW~%P_c>*{Xmj$w29K;5zU}(>RO{Jz z1AAWh(T;fi9hH|JLzj!xZwE;$A8-9=xSi@GKTYNVS=JA|v+R4P<)YuFEWZ~|;CaA( zL#DLvdqihx(YEX(`DRV3e2-%n7Jh4mHGFQI;@x)mx}kPWo9(pCN4ZDw68W!7UZv{u zi0M2*vop#3S_!qJjv_CqVFEr2F(l=9R53zX>L5<&TUL$y57Enas+jy`xD7L)80kj1iFaH=ZF zcAwk5r&miBO3K~OF4Ov;-(9;vD=0fvUJ)`am<=up;kk{U{N_@B{;0eR2zvTQ7whuA z6e?o=i@!|NzIC4O4zjr9dh+)Vkwxh1vbiOP&qK#JPC^`#)3vG`FCHI+niZ$(b!~qH z>r0a1TowlxeaT~!H+DXf+n=~sNQ1`+S~S(SsG6qG<-`_iJTX1Z|1`q$ z!ZG8oecx6?;g6!ZzTYy6quu43^Htf}S${A6ce`^n4i2u~4v|!P?|Skqa__AHaR#@p z2X#L!8ToN!^`YU8r;#OIg{ia8+OTGnS{xp2;R7ZfG4IOL6S(-h zL-2a1gHKv6+tm)e!kj(}1qB~N$(16yr0LE+9qHpVOMhR^*K(+@f9}{6@S=D%bRhi} zayz{=6YKAEx3kEOy_)^>rCy?jE20`C?*@(M(>h zi1lP)bMl`XWUYn&@HdO3a=R-wEZUi?E5>LAh8^(TQTwmUiX8Rp-Q`xMonT|7(;1HMe_Y3iBn}2?lQj>Km zTiNxXUR5QXlIu zy$0OXiA@>TQJm8gXn{94D?r2?b4P!?+}WY_^J+@7!p@XxR?d^Td%KL8!zXDZ79{S* zDYyY%`WDxZb0`S!UE`{rm6@(UOAr$V(oYj&EO6{&gXZi+&vK#jo2WQ?F~TBrU7(=75Uv zc4qLGAjs3oe~*S`TGr}5IS`x={#xN;ap%3W;s<;?sm|@>Kl7%ti5{i4SD~}~?x*v= z|9*APT#Uixk;8Yv&Vd^@_vTtBv-S6>U!;^naR*l)y5Ny&^f_UtI4A8s9N$f+Lv0~wS2$Fv$Lv2zqNZ&uXImNz2#j4dX~%jJv}CoD4Vi_ zU$`mn(WmQiz8}tWzFwBUO^}~9V|G^BLjJn)Y)i|j^HCL$!(;b?&abYnhM#$Pw_osW zbCRO1SU&`y>NWiERLo+Md&N#?z);B`)+TWk?54+G+dk(U6AnJe3p@6l>S#<~h=cKi z7U|n^PVsR&S^T7dz~?I$ACpGZ(#G7`P;(d^7Ug`MN#b zO^4?rFFP+Nf9o{0vgF%QoN%C)Aq^%WCeG{sThIBJLW?Jm`1%9fq2cgbO}@xTO3C2I zf;6*%!OSae5{;{0zvi`w*S%R5rpeD#Og|!VS>f)HqEDzxJ7BKNU0;{w*dL=Gy3LnQ z&pRm(U$|fX7x&8RGZL&!wz+Ui%j6vWOOxVLA5S7~xMqGlrx5=mP_^2o@S#{_>#!`s zy7DT--Ep^$m}s3f^s+n9{ren8)!AWs(~?6KA==MU`9zk_pJEpC;=Pd@;ib>)HgdxD zzGpO3?BKhD-|qcdt*g^nnV=rOl9(Xm>E-UKZRYgkFCLmD$px81exCv;oZ`Pc_|7zA zRlK+U``+J&FItC9J{RUXPq}hn2wkSTWUPK+hHqcsQPpwxsEGayVPWdhU8XUKJZ<|Z z4v%gBcs9Xr>JxKNW_8OI(}~ryc{1)ww_>`j0(GDDgD01K?O)41F*Z3C)7CG_C(VN7 z8-5$UIA&y{a=gH(Kw}09L%wlVX7ykByu+FT$y@>ncntW~R9P`3H7e*HIATFx6G54A z5XST~GNbx|-u%5o8QV14(H5+yz+HsG02MNlM(2*}tM_#rHAf{+K;c z{j99&THS+*PT{YodUML9c>mUW`(EQfxaRNdPdRiQM{=&+FQTwzmh_IOKB7;XZLnWh zLBL(NI#1sPX~d`ZVIMrKBo(1%o!)ZOBYlr3xT=@a{M>om3etG{cG{dmT6TU~=%SRT z)|`+^|9MA0N|&c~X7%;G^$Yyyy{M(-+s@w(^HTM@f&X9d0i=jhxo)~cngBCz{hk3u zaS4O{;i1FN9#-r$)Tn$g{^FNT7Z5tR6doT580`}Oyavp!0p*th9{xK0SBZ$PxWh|I zdrer4ZS6%zN*6a|)=ZBV#Aqc%K;X?omTeY>Vv9Rym@}u6M)M7Qjn#^*8!F%2c-A+4 zLvE4oH9G#1z^b|??|DYZE(?LPEaI#}`r7V_aj}Z0_*p(5)%d=nobPT=QN6Hm;x>B| zhwO9ltgq{ZV8ZE>#u+oa)N_s@A6j>%waGEwm^h;M>Q;~YodYk~D3Og(?=z*2l(*ln zuXAvioQZw&BBxE;+*n?CKhKV|*P?ffTuS%U1nha;Z{3~u`c~iHXJe9Y13sECg&$f) z{MpR4mAhtI#i#=<6YqUK`$0ARiko`M+z*Q6X4=)}gflc@IrO3YPwKD3^e8no|v*Q;!RI^GeBrLL-@wT^PiGW3TPx`o-JIz?Ub3Rr?CdSDl4sdFgbCmXii+= z#>FC=4p#SxS?gvQjzEgCiZi>elk8*lja_A^E85b&i=&HUZgrA$rGuRV&N5sKD43VW zkKyQf-Pn5))0fI<=Cqh6554*3dsS<6~3xLy;7R625(4NK6^c_D*EoR@%Q4;Z3bHu3M-e3j1`> zbyei~HH`9Pt7R%~1Uv#E0-jJtT}u4uHM9~AVJzh#nq zcE+Lm?d#{q%4iRq)I0o!BTv$L531p!M0r7Rcl|iKGzz#nps!yK3lLh!y;>nZ{W9TT zJq5k&{|Sx_aq=F6A}8PBj(`9lL;*rk1CKwmRznvU#%<#u{{VfFg;i3jtI5#w#jhT? z)43Q*rv*-xRa&K2YSrzS3ZMm7KoMuBV1Oj0j4CHm?>}<1MsJQ_k#F#|`9EgY_A_$0xiXv=jJZ9T z_3xaOW`Ek_riztemU6Q*3g|f{YkUz%S!G{5Z2g&V@rH3+teElk?2v_xk%e&aDPubI z$!1zni5&T(wpy*=9R2Xlw#*pdGB4xOQJY`|$11?UKA1(weo*>^fm6Y#Ilm)x8eC6m zh+vq=@$K~x7XT{zOZ{}aa>tC|_lI`IDOYR`#TrjOq~Ul^=MU?-0zig*Kc=Nk%q(`*!DMf-1EnYCV!5B2pgSS$+KP;IO)aQKfebG zb|*xaicuT#L63i3Jqv)7T%Ta=?hD3$j9xZ04~lr`FdKbwXff@xGJ;Do(ols+-CaKjWC_; z%xE(9pj7~0zsHs8<`+DZkk_VQR#+-w9z+!SX2YM2H2I13KkxO{GAiL5NaW;k?bbZQ zn~C)4mnc1(bGZrL4I_}lgwdSj=hRb{vGTuvdNKB0k-QKtyR+dT>&&HKsyb(HRvU^x)N&^?hc(8^X6n0GoH z=5kX%vSFcB1k5~)&t|w#-nb2pdGqtsbM3$D)q;7WC|82GD~^>_RaUpl+HQ_g4iaH; zl=0Ij2l)bG)ZbV@7Z%d z5!_8V=5#d3(Ykc8z+~~B8SCLZ%I-ms{3+wG0T!R(20vx#61Vq1uzPMhtQ92zb6S}C zjDohI#9{o|=)%O{)C|H*pSk(y#xWMBmIG+kkF!JeKe5zFs#e0)dp!cy`OwXb(|-Q0 zKtiiub8{)$09C?=Ebw&8$ZHSDG<$l669AaYq6R`C?&Inr5fIoQWKEtr_|L{~$D8$2 z5p^GJ`8~DJvVa4hHgzP^+vtKO0aw6f{GBtqPbpfNFN&YT@-MA_qL-X#J=PC?qs@o`A9I%5bG_Z)1mL{fn0}9w}HDr!U*I zNT?a&i&5cU#p*fs-}UOK&0u0?uQ|)v%p8uq4|8{6<0XPiuhbhVFg%u{w zRLl4KirgC9!4Qh(nPLg*;)z2$sC){}-L}zF+!pUk*|x+7ILL`g2z|Ocf;n_r(4f)e z_Yn1zD-@cQltwvUp2hzFbN>K{^zDeEKMhTB{XMQPHEozoNy_tt_xi47P(y^tg3>!cb?Ngw>7H*-#^HnrwQ1x z<#agZddk|Ws;a8{ub#`YY7QHu!{dDQO0eKHnY~|C5YDko$U1K8^@)|(R-!*2*UHMF zgB%v%W8C|6L_q}=N5p;q0A2`?1|4MJJ3HDTHaGo`v(NyUxVaN&9+p1beE$HWxUF~$ za;WaG6UplrBnKvJ_F+!i#w^1uD-q5i+1r(c4q7XRojf_|BBJ~NMY7rU&XW40!Q)iQ zFnzZ4jH)W~*1yZx$*>lp=y+a|DdC-`$2Z1$Tl5gg0zv?l&&SqX1TY>4Abby{DD)Cd zfJl+(y^a_YDx4LwPaSyvb&ux1u>2Ufgu#OxVC^$1Oe|qVI7R;ey&1EQ_dmZ;AuURn zn+uzj{B}eI05-iVfd8G8K|Qa~ zP%BoPMvgzx`ib2l`wKC5I!0Sc^HsMwz4G*Z&t%j80CDL}A7}Vq{PfuK(#^uHjR$dN zkv>mT{{Vh<)2YO;NKipagIL*^n zqbx8E5%~mnhBTYUszqgF?hdLLxIMcqVdLdaFtZ(|m@x7i-w`2x{e9g{{kOe+W~fEO zjSU0t9+}AUMENzH!=X4df&nrZ*E+`K(&G60{qW@dgTRQ5^S*Hb?NE|q{(6Kg#_B(U zTjf1P8KfFb8}pl<$AceXtTC=)UY)A=I6exB@(Dj@R3+By{7? z_j*|ejm|K zfCtY1044rA@Tg6VI*^}!W4N9_^R+0sRHDFRs~HpTJxhb#D)1{4HBZN`-Vjd?zWpz> zFsDKfd|V-{vD-{5d6=-4_1-3uEQsXlZSZp>IDD_od8vRgQwuSymaW;y__ZF zaLeN|sw zgsKbhd}BQ!R=!-b!N7XuQEP!N@}sK{K*}O8rb?&F(Ie6R5oioB$>XCqT{~GUaA7p_ z{tejz%PcR3UXqoyRr0NWzW)G@cEUV-Zcj!i`5(`yuM^E&l(UP6DQAb&L~RB|&Q%>` zv)7X^B0GsVrp}QRNk8x7wSNMH0{;L9YQ`ZayZ->pb%7BQ&|sK0{+mJn0JnZUEGL;= z$TA;=Ja&tl{=d}gEb{nE=kM8~dvM0!(1V=4lh7h71P{AN{7+NO=No)#c*jNoK&rLj zV2!HBiCPCjmJ?r^#Nor7ciW*VoZ0V*{Px=ek6eokIsX9D&tH+x38|d?`dc0p;vr%= zS8rZ1RmK@sFno1@ap1A}^VlE+gNW6ZyTtS$c?KC^WT;?#dLYGChu?5{Sv~qX0~9x9 zkA&&~a?848ar*?K+=hDw$>g7ZL_`W8o7kFaIz&;zVLT_Q zz!`6G5v~OBgfqegJB`E&o>B4NDg#0oX?DH_v$rvEE6x?!3TD=xlQx5b`6A0NPsiH@ z{{YMDR0^PZSbko(Xx3Y&A)@rFwO=k?z_EB2^Mi%Tohquf?(X@%g|`6=@Gqk-ZZIxK z-hNJcBxnGcHB^|~Kd?nYD2*re@bm;e-rjTQO_;gYpKnond~-siA@Wr^eUb2uAB4V} z1m`Fo1@r8Ou)|0vhe_iT9a0Y_v%F_nCu&NIRz3hf2WvnG5K%)!Oo;VDM<`)S0_8F6 z?~CZDRw*?rD2#HyJ+6Ei9AQ+>Fg=o(F!CGU5g~s4eC6|+__cNDMx`VSs2cYZ>g7a3 zFpbW^Tty!yI>h=0GbzfC@bTV>iGgCvs2FWtl~pR`UfrMtZfU$0fWBuPen&hergQV? z;aisNhyqSk{Cd|D><{+mq!oM|CZVi$EaI5Y$}ov+eG;tL1Hhk^=+nuE`RcgDqhxG5 zUP+#efi0tUwlB%lU@bW{WEUmyy%{N!$&>Tn{&~N@_B{}YwkdqZUrYZ0+3Ek;OOVx1 literal 0 HcmV?d00001 diff --git a/app/themes/dark/darkBackground_login.jpg b/app/themes/dark/darkBackground_login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..91820a7bde9e08e0f54aaabc0a44e805e5d1d81a GIT binary patch literal 11315 zcmeG?dmxnC_IqY9d z8TJ4L!2o3d!1RD{$?>KZ6HBTz7^C4RJCG z4Wwbuhm8VpMcBu~7Pw19D4PTEGT02DLPY0m@4#?&!BY&$Btr@XN|Gof8ks^P8RH>B zHKmb_Avdb%hb>SPu@Lo5E20WDgD-|NXlM}z_EM0JnXyg`j>Z0f&z->$J{004RSk7D z)ddUi+J=kp1Ou%F3v|u&3`k@um8!AG+;R!U!qAvXL6o4x#l@v0rIe+ml_{DFG%5dU zn7#z$a9}YCI!gd(ITS_?HQfp{pq-+~-90B+A;T}SNTe`m5sav) z2y_?q6PyPka-#B@W52W=qUzHnw*54vvf!?jD|AYu0+NV{^DX|A4@tNI}%*=$P2J#H5|cyHZlqva)k> z_valrm|t8{dbF&(qO$5#UHvZ&ryI{SU2bW;a`oEvw)Q*ScklK5dcXI*D`h+o6F+gmQd2B4(N;{t_eN+?;K0`KY8}uu^)at08$tfym=ToU<5F?F#NIsYgVLf2^CDc33yJJna_wAvf94yvE|i_33u;9<_CZz}*q;_ucy|Qo zEys@q>K2K6`M!||zIkpzTIxgmhpJas(w%{0_jZ8?celE;jv{bVudjaqbc@qKIA3p& z9yjjlN>|dYKxrK*PqnlI43|Rb6*x<2^0gau>Ebk902?|;9B>YMGQx5ql-u5!tYQ?} zOp=$~Ma8YZyGr4i)lv7XK}K8ywy2__2&>tAOiv4y%UWFZuKZXC6%`S>APU^w9lqLS`d(ubpt+$yg=eqQ-26}7n(OQMdIfMo(D|kb=`&5tkZ+cimrA5Q?u;g zqo3(AUJrh%T9;6oG1`TB4r8RJ{95H`#nabxIrZ2gW0|CktNRbpW#k*bn*RRca;(F6 zetH@>u%UfvMtk0CzD$va;@++<(cC7Z=hAvSOGXu|COsiuLKoi1nI`+TtUDiSaKEYd zZthCDsG=)fW4agay)yd(1cGpykx^)*A(Iov;u^BULX2XV;YMUbk`b`5iV0`3H*p1c z7S}&8)ROS#>_q}TkYh<$W8zG54!7Y31Ukm?x$beRJlJuY*ybF9)iS(A3@s)kJcKJ? z;$uRBLnCQ1mIR@48pIK@5dkk`5p1#~tc6>!O&Fhxry5cXNksT6*i0cn9efUt=4NX@ zqXCXA2{WcfM@Jh*8ykl4{f)@x=H^BuiV=lEgdD`k*iZp8h8P;DHLJmv8_DJeh6@72 zLh*=3CMzsTU`c@M3k`!aY`Yjpm{E<4g^D8u93uuCP@yA`!H7a4Eg_O9M2b0L`!}aT z!kwMJOa5v6LPEZCM+)pV|5)cwxg$Md!?{Lo+{myfKAUT|nHwt5nq4eBI4bgwYehwJ z5t7i>U=Gg+nkl?vv;4@L?K?jbF#o`ia3MFsIm^Xif9DC0;s*=oIcy_tFgFA)9tky) zzw<)5@63N{KB5#xgk~GYjzYv4ww45BRT?LZ9mt^xQFBu^iN#_Y6HQF0JR+51ZbDqb z%oK7@?5@W+||m}X=ml}u$4&B>-@ zq6x{2%j1#Fxm0uBto&+zAWT_i@E`3#^l+darZLNmYYZ1AEioq%sa!6J$fTI?h{hDI zF_*H0YHCI`BjAxB(w4h0ED01t(#+5$m?_|e@k1;LPJy9OF*8(;z!0vxfQf{NY)UdC zQK)8SCS+4HV^fnE4lgc05+)&{N_gBL;5lrXJygVmSrHh*^yeA{g>(Id#?x&0T&5t5 z?-3RjY)SZjNI`OXCShq#VQeOn)Iv@!XXbgaX8IdJ)ab9d{&~hdAS^ocKSN8{A4F1^igXUzz<64BwK<5lV#dV`tWK=SIw6!GU<; zlSN~)k#JZNBAJ`H9KsBd9l#9r=fd3zX7M++z&}YU6Jv8Ok7{g8B*P9S6^l(Y=djI) zCcGtPEFOu==5b+Cev^+3;|ZdfeC~38nBnl=!2A{-Ao04wbkLjSiw@vIWAsU68i_;@ z-V21hDL_{sd0apGeSK5!@dj65|ZF%j-cP)4a@LsH*x2~GxUIHlIN8Da8mx^K1+zmUMMwaI zgbMg>4%T>B>cL}&fD|mZDF7nSW3nT|m%F$)%@&;gwSV7()Xo6tCL+52b^hN{q&e_c zBrH_nAs3w;&KE%358|fLf^Y;s0C7cl*5p9E8sY|gXduMzBXrg`{1t-x3vr}k2^9Gr zZZ^<2q*RIb{{znY1I`ZMhd>@G%Wj!70SCnDHfCp1Z*f_3&KDMU<%~{ zat|O6gdeeu02H2|WIrl%)$U_Cb*fG_)|r#~N=p8iq{YoiYVxD@(BKCB3U zCGQ}8-w&Gh&j8Fx0-&Mw2aS~n!0BB8DEEdl`Ap$DNEsE)gSF#{asZ^g0Z`}yKw|y3 zxWPGO9+dnFfCr3~(+vO)<^!&fP6V_vA>w^D9kNyFe?;xzl zeiKHcP>=(*@00&6GJP4T$8ykXF(_DyoUO;shlwvNTq2?P2Cy27Mu~~TqNXD9eElO# z&y)mZF|zPJ{$6Ahj~d9g1%~q=n|MbN03ug2x4tc9VOlIY@IY1_pn3&Oo8cr+4qnhN zf&r@SK)B3acX%g&&mwpcNj~T|)lKcx0+=kQQ+=WLGHW+6XG%)LqLpp76B2|NdQu&B8OJkmQ}{& z+@U%X{Gh;;E>KtIB8=g-$QAPGHLKk2y$!9o59VfMFLODL>gC)f#!Durmip2FriA_+ zlP!XLWI)MXLIg0E(X|_@t?52Apr)o)pb;vu=(+~U9$=523{nC>O;s$lbUiq54%dl> zCcy6%WAGxI+y0bwrXP$|coX9R_*D1gR)Gan8T|Hb4}6lqBC4~NZP(IeTj8StKX+II z(0|-ZKQ|o?a4B<~6^a0uf)NFhi~L^oEQJVAYIi7YZEYQDZH))G>$fDH@@qE;g;8t! zl~(!z)I>kzQpk#55mW#Xz*EH00p=8o#p1JUPC-);K(%>bx^15W)MOGJ4s#BJRYB_U z(A)z>DgBUuNjP{e0FEJ`f-2;$X(2MA64?E!_CX zMh5bKnlrB9^1h+VP~OL}WPJNGuLl^4xF9PrzdHQe15V%~LL zYYjr2c)XzqVyj(Lu+pBWX;2t^{?gtiud`Cy@Jsh>4wA5DT;db=)P}gXU45Cl{U&zf z^J8b)Yih5A+)wwr!sS{UYIFYH#F^h ztZ&fJvD$M||EG^N?@N6GcUK)P!cSlWWPTS1>jSs$>N4%oylX&9PQGR-{w3qFTIZYC z_ZFY4Uv4hW*Lke_TIJwPk!_=Xxx1^*uwHr*-&u)-G}VbJtqopwMj-oW--wjyecsSy z^}tzgJNapl)pVV)r1^n4cv-PILW1TlNnE@Sz_n$H|%`_}Gqm42`6oxX6y zYTJSFF7-P&=Dwhs3bVF{*CyO2^sv|6tqzqZdX|%X7zORIg=G&~X*+khjNKnLpS)A| z;zW8?U#Z%}hR1dB#yG?J?YgVYpY4C4Y;C4F8 zvP2eskU@(`qeaAo?**9GaGTU5MeL}>$jTGQ6#8;kX6BLG_+~A)ge+qh7Jp!@cyN3s z>BOwiCUH}7{3ciHH2WJJOHE%z$vt_zpeHn{o!4BPZs#v)ow--8WLcvwd#AS9?d#Pq zA|Dorx4)>!7Ck^*rWBFhZ2qYJegLYDldL;_Hjv0XnAvZUE6+X^QL}1IT*f-G=NuCm z)y;?ZuX{7!HtnX;PA#>3?Mo4hm95f7-TeD5w5~jbkLFz8QvH5i?|YJ4Ohx;rwSpsU zyuHJFH#D@}d{@?zc0N&WRC)m;AsKbX|C!)W_uBWqazkGWq%|D(TV(t1@jgx{c~w_5 zdaZtcIB|5TGp}*Jf4B2ItBot8!oHeLHQKz>G=I0QFJou5QeE86(x~Eexq*_xPsv$F z;=_8T0k67Rt0Tkmo;2njrfeEG6$Tlf_dlr~lE(+WN z&Dmj@6R*}&+w{sauDQRuh(yhxqFLca54cK65 zhEpnL>l@b{N&M*i)a=V|)vm@C&I>%>dY>Tl3cBjzquB$ih{xHdZiJi66;+r99?pr$ zZ4`93YR;j%HJ6V(Tg*AMT`R>^v9^OURUWtdL5r8mhs7~QlheS{Vt!NNK)_{5Y~B7d z8Y|E5@J;)TW#o3b|LglHw{X)mVrcdmM}^uF8IKXg!3-Dfl}N72ku^y$LuK(1@Z)H0^X-8#`fPHdtTdH+ zW3AR-*FI#g7F6;webjhYT@=|wHQ-Ahw`Wrvp;N)%HxsSh>eS(!9M~D6s6bb)PN}o) z?S6LEJDf%yZmNqu=31tvr)-s|tIlnHRTHDxh+VsZg?VuI8Y6!Y274J(kmMe=AcBm%G><_tL^+ zE-0?f9W|TOKNQIsyQuKB)}EEl&19;?MY*O?GfVj-?;N|FTZD`#vk; zV_)UhRq+xx-TmcDn+rr%+OMNe16|*=jjZUAHww=m{%q#GJ+P)rVWWswcgN_qN3NMY z`8QCS{h=?EuTXg|-TxC8h+K=1cl2bg zUw$P0SWCm25v2;%E6c4^ihL$)eiMJc@_a#Yc{}ID!Zv%~5yb>{lbU2gs^XV**FH~9 zHtx%A#uOi1Sf4sx*=r{0@^i_(J_qT+as|KkJEbey%9=*PYRn?-?xqd!4}zB_Ug~?U z#auP?5Au9?Fnf)^Wo6;=$Mh?E8n@rO`SwBI?N!-_x(;E+80u1f!wLgZF8pYvmVgyE z*4%u_w9JjY6>a>&im=(Msd(X?x`!>E{c226MPBi-{Dzvg09vrEq`b^#9hINVJUXsV zERt{-9$nO{eCzhZg4asBB08n;xM)SjoxD|T{xAKCbsXsm8c&Y?((*;Bgr>Z+U{6?xe>^Fa3b|pBg1Fvw0cBfqE#bUCq2}w_{;OBXzsNLzp*R0@E!EurKCJB zin@X|DR1Rct4b(qoWz|}0*x#lg$)b}VD=hJOV&>2J)yD*H zdobY62siDpuj~2^n-|1Aa@u&9sZ*lOTe6RDaMJJNG*IapKI=JdnWr@WgxKWsq#MhQ zXI>XM)AQx_&T97k3$drt^)yeLeLNPrCzJGe_FymkQ6w8bv#sD^FN*`n*-RY4<6%Pp zFT4t0k>7}P_}ljzO$6yscz8j>Mu$yAR>+SiL54scxy*t%9--q9{Rjg0GvSsN|81Tw z>`>YOhyO;1haLSJ3KGO2qKy~>#f4Hc6L3WwkjEj`!nI@_e~18a5D&EhkOiAiL{{h* z)QSGK1RYL5zzeV12@L2CUY0H#Aw>8eMgzH`=}-fH9}ogODj;;k5yU%jC?#|X>HgU^ zG#!#)OoTv(QpgGS-<@G(|MMAUh6Q;qz&|n(`@=a|PLm9lyGGzi%pIAvvPYW7=mX=o zXHUvjve`vTcRfi-xnynXWIFJN`D&fb5d#>>YsLgBGV zbcR7exVU4ch>4sn%rBRyDRr+?_&ygh^-1Ya!JXYjGL77v4)WVX(#S@YU0#P2mo@G$ zuy;G{cFu3@&WC2}7jb`+EAn4_DD$DYt3}SXH>VAaMvlY`OPwHiFUX!_X5B0PdG+D$ zxnZL2Y_S|5vuildE#R?r_L-jz8#Wo8TDfIV-_Uc7S2bt1L8|uRY*$xxuOBLuKc(BN*(z&_dT5dKu2pyC5yPa~`{&ZG6(8Du z`)Q}ugCS`>iQ#R_Z=pK17nR;!otltX`mk~0L^?Z9e9=&p0@^e=HnDT=K#{Db?8(UN zC{myL$hu}CX61ri&h{I7K6EDGng*#VW8{=r-|)9OOOxSWucgVE$Y)54@@1yp^ZV5t zB8*OF$zLK49>4Q3LJ#fqJpLNL4B&7QD8KIfY)Y$!&2cn-PYS_XHDjCS7muUelEcRq zdRA_k*l;0deEaFc^&^zrrram!R{eR-J#D?4TLV4aQM19kD97FL=*^kvucGk_A6vVuA&lzy4M|t+R4HH<57gM{Jee0?x|4TN zGS+C$huynNJ})~LIM$V63_ce!TV-jl(oL0bc3^{UEs)hOZI^Bx#cI1|CROCAg}V+d zuiW=|**SaVb|88$Ky0pcu!q*K<_7+SyYy_MY$iT^#cSi&-M)*dQ!Y3t5|`?Vk((?TLD1ckYP(V^i-j|0;5y@L8(Z-!m*%?o?NXc^dnAd1KLLB? z290CR>}Ne6n7=Q2!L^DpRerm!s>-o_o|nxrc9ORDx@s>{m_>QfpN12G4_)m(nWoEK zL~~TmS2Cy%-s7`pb^J>(x<`e}e}|Q*uBz!d_E=)4*CN6BtON6P#k<`j`V}i$Dl>|- zUNi@2v9Bo0^u4(hE*33#e}Vf_{%cmhc|31$TTZ;@&D!%%i&@WGYCOd~6s)f)?7F?| zR+2RVmt$LTK!vUvB57Arm=S9ALA5_!)0%8sLQ82nmO|}$vs>af9D#qQoPMx=@cmRp z?xudzP2EF`sSf?pZuw+i#*ti_=HRuBtjv3#I$q|*v^c!oQ@d2G<8_WYX(UR~ECqWu zwO1xt=Gq125!TkD1J?TJkC&@z?)f|zET;NLFXCT_B^xg(y-L@JC>>NPUXh%Yvd}C3 z*=6IbU7ie^Lv23vWsHxjJRA$N$(^mPj(fez&Mc@{t8?IkQ#4sjq;cNMq?Vmsi#uO9 zKJ>e8*_GTfBt_qEeVTmeM43FjF?PkAhO6_c#TDNs_3`>19KNSt8e2Y`Uh~--w_#O_ zQ^BC`O_^dEZsOHK)PjVq*I9h?j(PjDw-KD8rREu~<%ADU&%8(- zSe=(}RPL0IAe^b&W!5>Ov9(nMLm<#naRZlB<>ngfsSsJHSRYcUh{`Oi316FA^%Yy2 z?BM$;b+s(7>A+~-o}b2J%6IP8`}uA6V0uG*EGFX-@$M7BUGD3!?U;9t*jy>!`HWko z@uLS0DBU|&DgTK~5zjKBG@IZ<7l%D3RaLd$TYvn-(sJF+7xSKp&MUZc_30LiB*&-k zIUk-@+V8$R=Yr&&K%!V#;v(@@Jq>oT*)tnUmejziq6-@jl<+(rulo24+=p#^ZB)#M z2$Mky^VVp*IB_M_=|X$?;h*Tfull!NP_2!AgjTQvx=SK+1;J0t z$DXIZagdVGz4?O8KYvEV<>rOhjUS$*o}yTX?w5@UJfT~)$wse+R=u?-rB_Q@@pf#W u$`zSX?2d?SEg#+}HE6uFBZ@prYMln+22