From 52d95519a7ec013eb4a62f474c18e92735f43c58 Mon Sep 17 00:00:00 2001 From: mike <219478+ilude@users.noreply.github.com> Date: Mon, 25 Mar 2024 11:16:24 -0400 Subject: [PATCH] Dark Mode --- .gitignore | 5 +- Dockerfile | 1 + Makefile | 10 +- app/app.py | 11 +- app/assets/screenshot.png | Bin 44646 -> 0 bytes app/static/css/index.css | 86 ++++++++++++ app/{assets => static/images}/spinner.gif | Bin app/static/screenshots/.keep | 0 app/templates/index.html | 157 +++++++++------------- requirements.txt | 3 +- 10 files changed, 169 insertions(+), 104 deletions(-) delete mode 100644 app/assets/screenshot.png create mode 100644 app/static/css/index.css rename app/{assets => static/images}/spinner.gif (100%) create mode 100644 app/static/screenshots/.keep diff --git a/.gitignore b/.gitignore index 5df64ca..47eff86 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ .env -assests/screenshot.png +__pycache__/ + +app/static/screenshots/* +!app/static/screenshots/.keep \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index c99bf49..78da38a 100755 --- a/Dockerfile +++ b/Dockerfile @@ -133,6 +133,7 @@ FROM build as devcontainer RUN apt-get update && apt-get install -y --no-install-recommends \ ansible \ + dnsutils \ exa \ iproute2 \ jq \ diff --git a/Makefile b/Makefile index bfc1b42..104610a 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,8 @@ -run: - python3 app/app.py \ No newline at end of file +.PHONY: run +SITE_PACKAGES := $(shell pip show pip | grep '^Location' | cut -f2 -d':') +run: $(SITE_PACKAGES) + python3 app/app.py + +$(SITE_PACKAGES): requirements.txt + pip install -r requirements.txt + touch requirements.txt \ No newline at end of file diff --git a/app/app.py b/app/app.py index 773472d..9715655 100644 --- a/app/app.py +++ b/app/app.py @@ -4,9 +4,7 @@ from flask import Flask, render_template, request from selenium import webdriver -app = Flask(__name__, - static_url_path='', - static_folder='assets') +app = Flask(__name__) def expand_url(url): try: @@ -41,4 +39,9 @@ def index(): return render_template('index.html', url=url, current_year=datetime.now().year) if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=os.environ.get("FLASK_DEBUG", "False")) \ No newline at end of file + port = int(os.environ.get("ONGOING_PORT", 9380)) + if os.environ.get("FLASK_DEBUG", "False") == "True": + app.run(port=port, debug=True) + else: + from waitress import serve + serve(app, host='0.0.0.0', port=port) \ No newline at end of file diff --git a/app/assets/screenshot.png b/app/assets/screenshot.png deleted file mode 100644 index 0f927be8ea9d6a5929fe89ab2ea7c8c4dc2ae8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44646 zcmb?@byU^e_a>->NJ%%Ml$0RdAt4RY-QC?Gh?JCcE8X4QNK1EjH7 zSu<;mOA#;kp3gZupZ)B843?7-LqQ@yf`NfS5&taw1qSB%8yJ{ps)+F5l_Y0BTksdG z!xu3jn37?lT^N`*Fyg|3imoXKi!QEMn>cN&%a*bT&%Vj{!jN5*Jo9@)tt%)`hxoSJ zPX+FkcDX-FDK?=WVjfF2^=C}846I%0U5Xg;n8>tZW=I72D>5sLpVGePe6l2e4%nAd z5*H7KXG`BF<(MIoeM1)lU(oO*xMBYDeOL7-4D^3r9{K$2?SI~If-f%cpYPE5-n|U^ z=R@cnCgiZMp&v&Vy8c1_=0D#drboRH{?EFr%s+kqeS)Xx|8`LYGlVz)Syp@C$?l}P zU-7EDLA=5un|N4>ekSK{Sx7KdBm7_9es#-BnxvdQW~zVQ-QSemNQ|7ABsZt08BK{s z(_1VZLiI9=LG_<4tc8GuCdN=#lax}Xwf}vtod}2RoYowfW@X6voaDd9Dnab~xRp79 zwOt+mf4}GdCJ5T!ul|t~OpWz?yR5^ue}=73YYU6bT-N9LfIksc|DGPEC7CZYVTMCr zU;jq$*7Eo&e_8g!gfrQh!WKqk8n4GktGTK%)K5@RttA;SQZGGO%mp}+N>M8OuF;|O z_F#(<4V{E!xN?MV|J=X_vgpE*I*d{1v)&Vi zjK}C3N3ZdvRGW9M)@DS*ra7Q<^(0QM+8jF&jg+Ar4~Q}7r|r=Kr?$r-E0^=ZXG25s z!@279Q87}Z=@PAO?;>1n*RN>&_l&(yA9}fun>xp3`L&QowVFxXSNJ+QXcRICnEWN8SdY8})MrQgwS>Jpk*bH0xIP#S6=cm>c2B&v{!g^ZiFedTw z`>0zpnl~Qdw?WP3wWzXnezuu%1vGek#G8y#zt+mmi!;vhX_SyMM29HYg z2UC`(9c<#0fB=jKU@c0+Q`!c6OuV z{N)RVWE|aUqDk6snN%)1)v`BYiQm4xfJY$^?);9jJ5@|*F;#TR=X|yy{v8=#C=`d@ zbh?CCmhXmqdpPy^%3vb%x4=M$iye8J8?*78(Ml6pB2)x=^{Tc*=kXkALgT>%`Gf5m zr+wvT&z|8i>AzsLn933gKw7ZvMDaZB#&tYe!1qNUarLFws9^-M5dDD%n@BI@vgAe; zM#!E6PTq8P)ac5CKYKJ&Zs7KKvyIPYi3g1C>!9#ntcvz(!+y!Tj~{L4$-)>E~!D(N#H=MYBJ)C={ z#j6og&groAx7tDlyxvo1x4yI7%74B+g0OP2JC01smr|nDIF_$K#dm-5Nl__a@a{XG z*X`e84R$V4{(WXR_ZiyUB4XH>3CW#M6#8CQedKXV%^Dz$Wth@Hy>IW$Sf*U+{t~4yL6# zw2c90YkL>L)3G&_yt~-Q9>IHs_wwaS)1;o2cK`P}Ej&JtH&mgxAGW~xfaD9>*42xZ z!Fv(fz!$fZc7)J}1p*dR0Z&h!@m$&7O?$Umc8jSWKvA%a4qH-wety?y10QZSqGf}^ z!i-khzAm^dds)ucgq613hSWQ3pB>gNKhtGPR%>==CFXL}-5tx0OpH00uZ__0z6l`a zcK+MoWN`~QKKA;A3Bqj1{O#rb?qngZXeLvy0jv3hfc!`6j0(QmB`=7U_v4Mp57Bo( zbzG!A_e?-7RAgjdHwWUMpX?Quj@8*2Ockkh`oX=rzMR&%0T1@H=QFOv5A6KfXSkMZ z)3RDzyR^3GvYaguOXGQWSle_lCh2*9+8gP%d;)x*(PE13@%~&Es`;JKOxU2{V7-f- zQP11m+#=O-KLS?sGTWe_pC{q8uH z!r9x%QmnU@+USqZN);SuFs$ohwy-q#JxOh1a}@Cv+ZX;p;bYnL-RmX%Jry=P9Swdh zrh3J&cH#%Ohj>Hl+hxw4($9LD%aLo`W~66s&pvuwSsu0AS;GKN>O5L(oNaWmsri`7 z?E>}Q7jSS)z^xUPj6gK8Ty9ByxPzPnWn$vteeMpycH7I(Rjs!-s$s&(&UQQBYI?Yu z_XGw}Wxbe0_USvL-CCEY2G!O`x@@!ir7QSBxhkEoh{$NE4u2e-+8X`(@$twnLH|6} z^0zX%(NI$uWFA4s!TCOEZnW_yDuvVGI|w7UJ5mAYLYfvBn3(yB`9C3$OtFZu5-slI zk^RzERNoA0$Ag*I{H;Hd3rE3i{x|IeHM*_1+I0Q0RZQ=1m zii;cAxw`T@kfdLJ`gFaw{_%D{^dSYB-v9oU1AwEcb-G9`S|k)laO=efDw&iMJ{)xP zm50`L-9M)u%ApTA(#Z)dW*Fk);&{mL;Y6H5jn0Rjj-s;$Lj*SVr^jk`bBE4+4;Kn- zR&(Flb=y{LT^mCvC@H^`Xx3Y9t7J=H|2c3*wS9WPg*WlwA+foEEO|tLn9l5eVG5qU zGhh25Q#6bw%C5k@k4_cWl4~tv;Awa)uON7TUu_3ZZ?$|FwrFl&cc$uv&46fJ0U3OF zY9phr=J-mwLW!l(SSo?|)hli;&7@lHc#`s9+&z~%=DqiWk46Eqn2~Cg#=i>+TzFpi z4s7a!)Bp_=s>S#ZGZl}`s@C%ianpm!*{8iAsF^Ld@E*?BZtv!%8~6OcZ#wIzUGO+= zR?L$VR3XMqAL;g4U`s~vrI3vKnpFOSeSOHpTrnWLB{66;)_AywvCtTl}=O51_H8$*az}{V&>91Ifzi5&Fs4m0cZ1&T>-X&W_GJLy| zExD?S1&2ZN4_H{O!Y~+O0wTF9Pnx9{Ujz~7+CwWamxI|##bWhXU_lO72Wo5U>&+3Q zT#ktT?E+y0tWDzm-HYWiX*|1y3WjT4!JbbK5YC!f%UKL1C2?u#p;J`=6lVcKtFa11 zC4S4p!!vE5SfJR)-8j{4h~5ANmMpq$Fi@z%Vu}vTsbkj>gOqdxpqxZtY0^np)^G>c z*RGlj@wEe^U=KHtWgmx!B04KOJG+SzEkYk3pDzjuiF{sM*0qGW3WqP18>+rSlH!)-k8BsuSh(l*%fSpz}z>X~go)rU1V9qA!g?S4>}`luBDzc|!b0 zFd_q9;p(#x>`s@GuCA^wr3VEeTDLx2S^AI0f6y7eI-IxTN|j3Cc%3}d0}_}lcz*DY zABMnR0ph{L#qFg^_Y^ACZbn2ze8a(!aJD&6sn-erM~V+X@~vX_!poJD)y}N!Z0tME z@87;LIv=P)aVjba&u2|dB0@IH6@baeXlO!`SS{SwIqWwOfx#^}O=}VHy2s2`nyfoF z&Q@FCLW4}2$5G!o2S^9o0G@9GpirmD&~kUg?G8DTwzs!0PmczbnxHXlFVJ{!NQnOR z$tnu~1th%gW%}JnJrSfMkz}8clyrbb@p)Vs0d8BZnYT6opz|Km`ef7}^L`0Gt3L$9 z+H#`-91x_3|Nj1j|IrZf_3PIcdy}DDPJ1V7p&vdv?#Q`c?uh{G5fv4+#6(Hzc>)Ux zjT{if9rvfgv>Kg9vn6rqa9+vsoc?3=J%lz{7Skm_-O1h$x3O2dNGpbZ{m%~{+)8a2 zr3;ethz#Ep6a=Fkq4el~t46R7=hdzr5ufKW=3*_=W$GATe1jr#SUMcqLbA$@Jby3l9qCTL$&<7r$ zn@wC0K6~2z5rAK0+i&(e?v4d)r+I_}Xz}a>lv1a_Ivl|B7>)X|l#5i`#YnxnqTY!i zzItT<02nd>3!;d;>v1z=rq+g3AxG+zq|>^V8JGhOz52I-%?$ZW(Wd*efhx<{ikT5H zC?>x-cjcKiMgSf`2w+=5t;KAt;eHMAJ&Ow;H4+4}zi%~3eQ@>j%fn3_M)8wAy?K(` z))tKV)JFxrHUayFo*V-iKFy?#BL)0%il-|}YG(Ev=FQR{A8OJMN!mV5-x+*t+W;{} zVN^It!Qi5ayn&^Pad*{zg4Aoy;|Ek3riyr+v`oFH{#Hm&ElPngk+PXQ~ZY=P)WYHa0K9>t(VkC3X}wDwbsND ze7Dq~JR)OZsjBLvt$IDuDl8=Q3?`OFdBf*83~puDL@X*MrpUuX{M6{#7c4f1o&#ky zV}9+lR#XoB){Fxudb*G`34xL(x5odF1Bm?m{5@fWy&wSYPUK@6^!!+jmgTE|8;xd& zQ#3FJIEClO-$vi{hfKzlpR71J(HAXf+)9eXu#Wvp3%se6ob0Yt*IJk?V4RnfP_u!p zZ!IQ$+Qku=v=^1>@wm1$LgKfoiFa1*7H!ad3G^ZqWFes@D^TJ*1}6#ClMtd^_x}S8 z@-L;(g-!M+XNQ_XLdZ_rXH zk}?7sA#YshiObSW7V4y-1n(7qP+OEw(*755ll3a@{}+ez-}sRKTK|7b3^Bzz!vM*Y zvjp~>x`x#W$DZdC^f}u$uqt9piIyc{`#oR@J;&}4!UBYXZj{SMAjq{4GSYdWpfA|T zdF8v2fvLT`_YPy9Ed7-0kXT|*`YAIC2u-yIKF>FZ3f;&4L{fnYKVE#4r8qME3Ovef znB0PHdDFPtnq6$9pj*8*qk!cV`*?GHaB_y!%wV^AGgJx;(NOX#eb#BAQ z+;=VW=EIm4K_z?L^^FaJOLgto6Fl>yvbZqRLdM8}crvJlXp@edEA>C=1Bx(0k!>112+{Go6zc7e?$-P&7 z*CpGYho$p?I@y-YpIvENNKOVdxzf+LbYxvd^X?O!JLzL~^$a#rBB^rE>GuhO3#@-B zi#%uTCoI#h2oHqMnqigcu^{3quGsz-C@rShMTL7fQ}FtpE*`rEssSWHK+|;@&Dsri z(pHYy=8IU!6@QUgoifIMg`oWMJx8#d@0(;HL)L&l=J4*djKB3Zm!oM0oa?Wx0ts`) zmdja1j4lqn7Z!wz@%x*vQBShB*%JFnb0LkPBes zCsBlzYCl$m2Dl|_-dBxEH!vUL*OA{qHzN_~d4@z5LQbY+a1miPLmaSwyI~^lx*^K! zHJ9*#`}B`=r1a{l434#h*{}l&hB)6p+I^SaA`~Q~z>0TX>CY@4AjwCd#C$Th$VP(@ ze}7B(`zuoEl2!INzbN1Rq<9i{CadsIG^nl}`>24f{~DJ#l&>cYf5k~WvNSNh9>S60 zOYQ=0tCf~_=k zEsym)DaUwzTRqneYK59Y-pv(A+8Xg&*!XXI|!Z$vJlGj7ea`s z-t(Kr3qpZMXD+n^JI+eCHclDjhO&GtHW(QNBn#GPzw}rLnDBli3{oN+t$aF`z;U5W zE0e&M;6^4B#?LY*u#P8Gx?DMRg@KEHzy6>i&rlT-6B~za1~#y>cGfn*e?dh$WP$IN zkxWjiQn(O}hEh8pHhGmTW3xWiL8sY{TH<=o$;H@UO{tp0-0RQ=)P}#F%QnI zbXDJ=g!f;g8wPf};M;z9b!_b;gYGx8y?_VW=#0HNOioYN2}k1rifh4KIgS|E>{zw^ zWv0uvEhQuo9kHDWq!7%4;=QmlruEoIf+O^t;;t^q$f>sB@7Zemu6>4C5;>_5qC9-U zkTHuiz^rS|9u-cp^oOtUpx%d6b(j#izOATbM5x64S1YH!S=2D>M()&=$Fx8~PEO7Y zf#MtbTLn2ebn6Jhh+hAKf~7toiDVGGf}YVYra7>lHX%3m`TbyRxz#d#_>-{NziBTq z5Qr`mBd8n-S34h@=$nT-q^{}?RoBMAsvke<&c65LucWWW)kX#L7N4%B(BcQ^p;0_W z5Z?cF?zmEpy5PpR5MorRRWDDS=4}$oZO!}UZunAa611b|9(G3yA$M(j3sjk-!(AEK zGpBXLc+$!-0)!ITGzsPtJy@gYlIO|^ZwdU$k;z??2wClz)2{hX$Pe0L?GZhMh<-Oa z!+2*Cr-JAh3N-Tb=R%(Ol)4m6l5&F;I#eQOmk_;(5_{uH(Li{km908t2hxQ=ufAtQ zg+5}^Jn0tr&wte)m~J21^1+TgHghO5yu)UE5#Kvk&0Uk`qFXTCwtZ^R$Ng7Ey4}GY z^{8q*FX`v$y7CDJJsy2KUj&GZ!jGWJvW`fq7dQw=|0hDf)oIMUbZXs`8~KqgGRJSf zK35rCm5*s>eRo%}Cm%f={dgXc^>qI(ZtC!q^a5{7R62xyxXCn_@Pvrq`L<8sAgfa! z5kf|R#FlJuAk@QySXd1X0t?KkC3ew-pnZlYs=!yMY4Y-p$ha12V(R=1*_4!#x0Agy zK003xoVaT(yXuYJ)f_b=y6TgEUy0P`hcBsgy=wKv;pXlAl$4_x69Qr{^#F@>v*|+M zTmQcS=tk3{l{6v4-WfyYee-?Yn)7T9)-(PTKRq=ETRfSzNxWdDhl{(_OP#$@j>3u^ zr1^X;nN!VtDf^(BR>Pfo{Nvfnuvu$aZ-6eeu`Arv;?0T^Eir_2=KQm}b^k9JCPJYfnU?W@*F$&aew@beY zR2XA#Yu_7*+{%uNKkitix7HK*ZlLx2gS3AsJa#H;e7BCR{wqkh=(1Ojs# z_{sN|os8W3$-B4F0+`S0wC-=E4!Zk4o5gNGXc+h%kSRnlxLKyRNFx4K}CpaxNEE;^~fN5IQ8rHb-Cw&X}*VD`n9G@s^URF{)2K%2(J+_ z6tjrDg&srpD_5^`7DvgWQQ4wfivHYSJ|33Ww$0&8Vq`6!&`TtmFUa3l(1n&B@CH!W z_h`|whLVzO@GocX@L0S~X=9IiCM;1CBy>kVffc8bp%~PShV<75Sk73vwcjyZpBRqg z_Uf6l=yi%Ld<^_Q`-!%qP5Pqx1($ghx^W1lIV0xBTY9X}Y*l^vA~rv5 z_g6|{xSalCo#lJAnxqQr#=GjrpIB9ySQ6pkEuz+-0E>b0pJTIrx@;D4ReT;O8*dAr zkxy}!xqHBetvlpad8~TbSmO0?d)29$sr*}(lRxLA;l+Y?X-P%+1>-1t#qUsSG8n; zVsW%8#xUg$f>USx-CXgcb-R54g;~WLaz*9znDVUm7sumbSX^A3mxQ*<+q4*ZIPX{4 z=9E&b=?rPUB8he@D}p%m+7b)9PN6MB7f z>nc)iH%>WKy8IcucgB+KEg{>=mbKQ)V!7W{pPsMuayq;O9PqrfmIOBznIp7BilT~! z1yHH-&ai#ak&V>Z!RC(EMljOAPyu6Km=0}%~Tw{ zoz?PB8_wq|w;UeMEDi4R&)QqrXv`e9wkrT}gd+gtq z?A1<#D@4Xw_-+myEZO)UAxkx_WnezwKeGVbELLL)UV!;u+fljE>ydI_8uO>o)8jdv zVf4k2<*NvnC+d}yk=fc8kFH<8nh&9X6_=7&;~)94F_DjVR9DOnfi%VgN+~iasb6QG z{bci7u&@|u>%lsr9sN(JB1)Yve+;VT8U$E&xAprhEG%C2o579xE{?+0K2t6A^*^hs=H9eoP9jQG;u0+it2++N!~ zyMK7E(!!HmYe~lU$aDE_@3nlXc8i^sdsD|$bY$d;G<-&8CMOQDG(bYw{qc~vS)Y|R z2x!C|#?@mPBIlM7o5pKdeJNbnot@7~^mkSSmkwcJVK3_H38!mq#NL>Qw4v)@uCKk*+w1)1X zow-UFQ!&1QkOhkvpwDEq8 z)qRsLS+mDd$gE|KdiBBLfoKaOlJD$zE5ZuUj%f46$KH$&3m)gj)a+LJT=z?JWP${bg?b87_lWG; zl%@T&9_>vF1 zo7w)uW{=a!?R9*}k%sU@A=FFDTz4xpBfK_tm{Me@4(F@89Y^PQ^YinGI9wTfW!2Ty ze}`x1YU-8VW%sl^Ff=+Jug<=fWq!(?^}Jubi}|1uKHb}-w6iS~v_?q}MckK`disyX z#EWIVeHJN>mI;*uU(_(s%(2-P~iJ^ zSwYK+fX%cGqCm;~6c0zIRg>a&?z0*X*LpUnAZtIJ>as!I>M_C(HWt}9>XOp> z$Q=^~ko3mu%gH-YPerw!_)ywvpUJ+sD*Z! z>l?MW(LIhJqCCz-q2(`ely{A?Se~6E$-kI9{6k@h2d-2jThTl?oLW{+NtOJt&6Nh- zFiWoCcDTahtVj4Bte6zWFRBfxA7|HA!=`L=iyl)BOy6K z_j#-iw>bl6DVyf4Jx^nH;d9s;9yz@}#iTl0)Cu|tP3c1M2-b|}XA!sR$SrpR z!e=+EVQ;Pbd27JweFv zFn2a0^Mx=D1&chq8xP5&dTkn)Q%AnqJA-?ov z6Pvai_C%d|wMr#0-SV=^#0)CKI15Eq^~AaE)#iZe_P-=#v)|Z}KW5EWEPq?;*gC6W zEpF_R|L4zl%h?9$>GF#n#hHC?CV#T^W(de-4hFd?%%=fL46Y{)=oI;uOT>s|{V7+k zMF|uqr_(=Q;^8qb3no>rz%FI$0XFSUc30ym(<6GJHFuQzdfv-c=eIsB9i;uCp&!3+ za`38gEtmPd#H@TwnJ|9!ZA5j`{T!hur=EVzp;;n(y>c>ZFQ4>BlL7UUeSMy^S2{v; z>J?bI3Oa9(U-b+oABEZsCkq=53e}pPVklmAEPHA$n6X(c2|WZMTC!=BT%vdxqBF#Y zviCF%fy`mg!?)j?K2zaDsKvGX*)#yDAtJkR!AKKQBtj7#9c{K;QVhvepDZ9JCzq=< z?vn{86Bf*Z6Gr?U`iy63vcGctl{PEUieXcKf}8Ww-gaO?rJBLLy%)Q*bOB+$ z0w-i8jMaR%ptIVGxhB~Iho+~))_Ojxa3TAY<`D&GFjeC#hOm-60Z+e|v3PVzZp4z?7@nY;09t z?Ti)pHw63i{CqtEbjAvV;0hF9u9t8h|8g18P^&V0|1QnrtA@KH6(?r^>Goi|b?y1i z-*&gD>B}631Af=YU1npZlc?VdbD7+$tJR!7d|zAHZH$*&9u$ke1VoMSzzI~FD>)HM z+SCu!AF*0YK*8CKSGNQ-TWB>pZg~nl8*h2~+SNt=_U+p|m0Fo{Z67kEeL;$jEs9XCT>su z5eZBd&OIw<+|2s5vzBz%PEiogPoF;FpWhb3$%x%um;GijpNRxEQ@%1SvUCXAJoE05 zjZ?9}*BG99lw8fdG*a~$+K{J~6C$?cSPIGba{Ebhm;$BZeuVX<*o{vyTq5ID6|-W1 z!=dcXHAjA=N!<`~EZtl9(2(G@i+HL zR}YS=%HKcnWtR+(_$Fi9Bb1w=Xs_r@inODV#<#X+jvi^B9k|K1CUyTcefHgaw)MR; zS1Rb-4nFS4{QUVdPl1YOgsW>alp9l4H5;j0dHLr2Wl9LANB|Oco_e-KixI2z`XK1+ zmM8{;F3bJ>{bxzZ^{M%zERE@8*N52AZk*}OvpkxY+an4so;Q~4fd0)V;`e@5I4N|f zUX8Tq?r=MZ51MEGL&n+4#p`$Vxq?q{uD8kGX!=pK211>$Ya8vwt?lNoyI`N<;sHHLZ`uUR>ft|Bl#~5OTM+$Q=2hPyj-93WP(IfrQ8)ltVILv z;dC;ij@;Ylf5|q_(c~~M=_!p5<2+I%CLeE6w|IixPqI6{QI)(E_5TX8WazhV!X)^& z)DI-CK}#+R-D}wcb>#|T4NjBsL7^Q{`wS(xuG}o>7tX%Z_Vz z?D3R_yIifcRvev{sFWq0prD}UatkrL)9#NiatgnxKh__unNt{mdRrteGUxO{k(&zh zf{ILS&^U}+Lv3ezNy=3B)GIP)h84%s>3p3_<#$g$%&&aUi%9+1&p;?O}4G4yp#1mu?URIxB}^%Z=i*gSR}~7h$sUN^lC9 zr+DT(lm-G4f_4#5zL~p!4i6n#`NvbR2^w@k@>9ea)G_o}@&Nn2wM9ueH^sVU^4^oz z8qG4|s?0nh8T+Zhwmt-BAV{NlVW}Vzr87yi<5edpBr`m4=ZAP-;yu!R*Yyg8eU=xz zEsp;L8_qi5bZlTY8y*Sar+qU!YHL#uhoQV*qLP1$o_6ALO5Og`_c{_sN2Es_xX_oHX+LI*FveK)F<3H23JyY* zW}P~;HnQFgyi29$nIL=mn(cN<#4m9l`S@!~bCyF^Q1Hct7rMp>H{&lXRE99$g z{^*Z3I1&;SM|;?r0cX)BJL;vvl8b@+$5VKU525|DFGceCh>FkrIjYXU4t@V?he}-0 zMWfmHK@;IhkGf;t@o&(Rexvl0E9PZaeBPbt4#Tk{t*atjym6P6m3YPP_m|eU1%K_3 z9{y=e#X=ulsGOv*zNkY~#Jw_~SP~*3uawp_*`sB}@ZrYyM~SNVam#mu&5AX|!-|;( z2&L(SMF5dW#_B9HBE54?$(Y*9ATcG|I%M+fLy*39(xM^d^$?_dDe|tv zhhk{1oSCe&86oHGaG7S&vQE5JG_yi*>o8se!^jI}zo(5qRdj3Yx#6 zP374?c+dqUrN$GQ+q*}6xNY-Vo|Zl-C|aB88{3-D#`<~1BXhDpikt-+$gN)%t7?;D z(_oz4)2hxb${i?KnBcB2opXe6v-KK$gztht>C}w8|LHS)(Fr-_w#mslwVWK$if6&T zlfTBA>jOOI67%uZxlmfv)oIN5r6|3QB1}mh#uspe%M(r-_hIkv&;(B*A8OnkY^i>e zxFJA-KQQK@9vh1bc*;VLFE0*w*1D~H0!!XKy-R-UDdLmJ1Z7W~Pn3%4Q>=CdS&748 zKVGN~h(bQFJ`(Mon;7U^4Qy5iDdq+FjLe@l?t3F|_T!oa-8l4QkUTvb2{xlXQWY1F z`1-$Wn2aIAtc+jTNTn)}mr5x-MV`}p3MHfkC$tPb58M1rMN(AWo@mk(3ziwHQ@XrT z$~^n}LLKV%aB&^#apy|kos}vpO~O8F*H{&H+&-7C*%ASAHixI|`L9%+uy@W(N0mM+ zQgfjL#S+ifp8wMlm4J4|sC_j8D#Zy-p$%)4T#e35zrJ6(te<{K|4wNY>V5;~z$9z9 z>0r$c=-r8NyS&|e-CF;l@9iI8K5a7oP%8LZevq0qzT35ax?(q9PDMhtyCAs7cC0d| zr#1PHqbR9K3WRW|WCA{(C>pjPMj`J@339C=7H;%QgUckm!fCq0&mp2rnb!fCF9yQO zf#rG`5@-V>0nFmJ|Kl}{E+y+joqhb%d&z8K(O{3Y{3y%0rfT7ca;JG`fGQlk29InR zO?NPfxID9j4eG}F-Z+9~*9d;b#0;jm@mD%blYAK;15&lU1aMCy#KdzQj7w4=QgJ~Toc*jW*u*>XY zI1?EdoTq~8? za*1?LeRj_2O!SCctqg~rUMyK9?SRX;36t5GqPJE>Ox?IikU3UxpW$12`Y=6N9_d1y zAu!zyt9x`0cVA)qI+aT^VsTY>XI*yH+2eX|zmJ0ml|Y1T(3!rXA3FZ))(;uHwPOHP zc#e29by4E}J1j@~jLeAh8aC@Lkl{--)J zD^n!wU=UxG<(-aeFbVtew^_?!i28<8$@XwJ^JC~ssXIMNjasW-T}E_F%za)_K_+dw zR(m+!<-Ygtr5>-iDPy$0)Ku0stty}P z>SLo@fKthz#&OF?yMG`jHs-*{D;&Fh`bF4lr_(P5O8FfV$GOb=x%CJ0F1|U^8D;9l z4NuCU8erTGMlZr$S17+;t^?#i(&pap%39)P86F7n-%|GwW2)&u12)14^~ zYk|u4INGuSut~KReG0&joyS>C*RX;q#Z&F{POov5kcLg*aHA0y@B88PfSq|_Q7Nu19^an@m&e>|F`i>M(NHC3%d;jzy(e=E~Hi<7WsT}UR#I?P5;j|x*UjbO{ zXSO^Z;t6G@Ii;Ql#XrP01~nx{VA2R?qkggOr6;k4(!_SHSlW>o+#9SB@s z+WLBTd-m`{?SS95tgV+oj8*@*<@u7k^TFH@6zp@@Vfa2rK$WLzVtagiY$)x{-sak! zH_I#NCoFx841(yWad+WDxGnb(HTjx&~P*n?QoK-nydre=*>xxN>%Oyj)Fiz@Wi`EjC0?+6E2KN&J|6pOJ&c?-TC7t?h@{vOe z4z%5czE-emUk_a19R&p(m_4@2elHa&svIhAZcYH$w3$O^7HQhiITah;o}J zLD7~IotD&F-bUxAbuTITmG14d)wC8bFnUJ?_+NsF2;Jqcuh>oH!wB?P60cp3y|8>3nBwJ zLru$ndV0Fcy?PnG^W39P7Aj?n0;ZFM#rKl%Y3rcgb#eP{#S8Mc$qbW5sVKoDvGJ%W z%v`AuUA~k7vgp80$Y$NKX^-tne}IZ`x;=t9N&ORCOH!}4Yx`?Fo7W@_{TMHS@FzDIboHx22Jg?uhohyne5<#$_{(i0EDT zfXh}E(;3ELdsPVg0%Txye`Tj|`nX6%#wQxYn8~OXIOl30IR?Z+)mfA)@;wPf3ydTDa}_*^k00@Ry(3$|V!aZfEF z+O=1@Pwk%^oAWD6EJl9`3Wqy{@p=(tj()y0S8ATe`gC=i@+w3}w!V12X8X>wx2tFE zcw5ZW6z8|arqqE~0<~CA_4#YfTiL3sJ4u{#fG4rpJ<`6U^ zBie}!5KPPeG+<|ue#g5Q4x-J-NU2o#>(O_GB7Y1&jy5R0Qm-`^1hMP5<>|G<)`QR! z!qK{aM2|z~zj5#LC@34ETYRQi}@s*+(&^@4I45xws0KWpmOLx% zet5VYyXgtHoNw_r8c<<0SsH1&UprSU!b>_faBX}%prWKqFqS49&$7e9Y)zE7IK>3V zc8@N~(0m04=O5l0=%-JYM+C>SOquzzTdv8676=3DgrG5DX^G-<_OojrQDeeoa1DSH+TuH?cSs2dCS!UZJnykA z@!6I!BxA*Xv#HMt3qN>#b0a<=)O4)wwYN7LOo4K7$iN{bB_&SsqP7(y@t3&R#VJ#2SrK*=~ zg|WA`)DBtPFQg+D!#{;Jxi zgm%n9HDMYTuBnG12U7oMDE3B4co$lTkab}LCm9NRf|8GS#rK7P;a%?RfANdrb&X*R&7&SD`7OmvVElUBKS6%aUd zT36iMF2{X#smu*})w+l2`=;{^u`V8yGikW-wc^`q|+GX;3J)w3H>0LTkEUVcbx@X8q4vkJ0`~A9PZmG_A%b zJ%9{D9i?#?)Ftk3&QmztLO9R8x4!Ss8L%ZgX@wqpC$t~aszfIx^?+z0E+v&A5nJ|* z^f}-K8Jru58y97Y)mdRpM~m|tKGJcy{ zMebj@DpwD zcSN&XM=AzB@jIC96#gB%#nPlkPYQ>E3_<0qz0o^?d}7jQOGDls{!KxVK|%E!{Qf1V z%Lwn|!8%fBZH6`LD+YfB@g@Wl z@$|~2H_-v1akg6rYH#0Gf?QFMbEr;N|Jm0h6k&r7jt@Q=kp)H&WlQfX6Y=64rfLK8ckjo(@MJe5 z>IUIGf%A@v&2mO~o~?MtV>%TNSt2T}(=R-p6~$)iI{seUK*WuKfmgH}30t*R@13O2 zT`EH=H<;ja=xVlkg4JJ_83%Eyo@5!fe~zUo#JO7P5LzgkfDuF&-M&XeB2+xr>kK>yx!qV~c} zG5OMxi_=#1*e#19I!^lyYS30vEye-fBbr&RNHrNLxC82`5Y$fNrT}C_xWPRz+0wDQV%~SF?7z?=)OSvqCmT#w08}nCPOn62| zLOIxn2d^m%d)6{;BG78zhQwO9TF$)7CJwJd>a!@a{5O2G?>f5Y&JKm;nBhJ1mmBF? zd)zaaV5My{eencya*iN9aQ*eiR74SM$L#R`oCPq)qA(!(Ebu0ego7l^VgYX<6j#^n z5gR!y=@%u%CVqTD!OY>6CN2$T{rok=*m&?Zm}Ifh7!?aA!}XsB|8r9wX=qxjOi_sf z{Ce7W$ARaxzs%9wjG8O^seX{@eWF64u_Rv;cR{?e<7%t8IJGfz&J#~yxr+{q$>aI; z-ObIex=Ti0Ne^_bWoiqpvaDuR;G&7~)x%=eO?|yO7Pc)H$mA48!vlQ#;WKYZa9}a^) z?S}n$`*yztdRp-ZlKgpzQ-&=q-clPo^zh-1T$WOsnhfh6IMZ%1k^1KBB{>bO+Ui!$ zGC*Pi09O5{MHlpuzBb^b0)d@)d7yDo}DdQ;xL?v)A^C3vHxH&D2E3U}u4N zfSc4`U%+9`snn&&jKI3KQMlI+WRqAKDBpl?q^#W+=+aXty?;Wd;g1m~dA3^SU!d>3 z%KD@ENZ6r%^kCOCJjK5+wqJ<}%?HQee5x*rw4s(4Q)K7&r2`kWr3-B1(`bf-@y$1RLv=|ie9w*+=p-ps>X<6E{DB8mlY!s?$te;}V7IvO56 zj=;kBVyY+9ap$Dv0n1&;w5Bn$O zw#e1!Dzj)!_9e1j!NB)l)YXaE_5y>y`}d=$J%(_lQgic#cd|$`NX`7v!J*G@5ps$H zGb59=$1S&a`Ba4ly)~>uC*c0@Wn1UdShb2)$?Hyt#o?A^{I+p(QH8Wo!%-5gdgJ?< z=cl`fFf;Vve@~z^POC8F)U@AfrKiP;R62@vu?=4<)g&{qms6HWB=Y~>@6kGzSN`0UWcAjrRmK%jmpk5qFOJL(>DtXglRpy{xnA)s46AM?5#4d|u2h+7|3^ zrV2Z-urLR4Nsq5>{sev7q}HM4EP#&@W8>UBkjwc->ph)=iNDVUxhpGOAU*W zskrTJ+?`o`a5;F=B4#wZ@`{j4HQnblyNCD2G_#iq4|y+JMSI#WfWL41d^gfxbZ;X% z+@^}1mI!tKjudC-XXx;FjEPA>U7cz$D<;|JIYs3hwGS-?6a#Ss`=_QGUlDdL6lCMZ zcW3s_w$i3+THtY0eZu*k)@V03xAR>}wHwaPLa}jiRh*hiTh+XM1b#Y>8ma6j2Fp&8 zFt?$;K!<6w&hH~V{Vw_O)h1#|%;t$iR2g|662}H(KbD7G)BOX&0L?l3=$)Q8>TWtI zhoT$aSS_2H`)HebS-weE0L*+6uGilWI6DoVHo^Qc^OhL@5c5n)=B? z-8HqwwJ+i?=oeenylpO=trC;VFHIYGkUo5lu}LiYxpF0YlT4qKNf#1~P)`!03p0>m zRfTfe*ZjD3{b3{}vyX^^cJuOq2$PZGvpd-4xzRW~%0;pYM{i8+`N-ZS|Iwhnl#1+x z7+o8TK7?>!%h`JNz=TOYI+b&3ls;tDU8I4RMK+p@XR4Syr<6N;A_cGvcgv>#(3RQy zgWHresP!zj^({(K=V0~3Bov~{MkAeZ3dL5oe0a86^+2+5I>!M3I=#8Ae=po{?B;vC zoxg&*_K|B1uwiK~`PQG?BO0!*vgpl4WsBHH#e3wO_U>4x_2CIKLRv<7k)!yKBZur~ z6&@(QhJz8U*3%DeDH$0ByNFig!k6JPE?zrFAH@#hjhuiIU-!L|Dhi`|KwJGLN35U( z*~}Df^VSQ8X|X-|Q;o!%ef2$?c`%Vk4^0446m!0BEc!?DKbtJtMc%VJq-cv^($aLy zafflav>_-(+-m~QeGtDk&mdOrKKf@&kKSG zA%QzCLol^N{fA_vTdDJVH00MDc|yI2#)qxljkMEtgcwbcxyeiXR-_o)jpIPQ3p>z-Hk=V$qf8ahEU3u~N*yX!rO>ZLj;F z!HQ=K|7CeU(!)W3On*I4$Yj~M`K9ie=dLL384Oj@h-4=)4vsC<)%c@xH|QY2g52s? zs$c3oe@=f3pHL%Z)uevicu{Gi7jqKZJm-ve7#tYDMB%$q>Bax{N8Vgr>2UVM+6iGj zU`U&65&5Z!Ut! zdE2L>es(*xMeFl+k8Xwb3=Aylz98$he`l}a>)ZNjxu))m5Y%dfrr|_LFlS@l=g{M4 z=!OkQ;b=IiH0gS&s`|O&a9CJlYs-e6r}~YWT5V$DeY^QaPlPYE>)#*m(oS|eRKJYa zS($`TI#l@H-BF^tym1{;Z#9(N(wMcM$e|)rWTqEcYM*16a7(&kz3b1d!Qu<$Os7yw zv{UhAA1!%p(evC@cR>WEw&C|g1~9~Bh^U|`K~>`sW|>x5$mEQIWz3zaPaDRXDk@cV zLhG9?dOUVr`5|C8sAFcp&J@^yIce(Z78MT$PBkqJEmdK2J^F0)+ux?Y>o|fw;}c>P z5>j0P%Oc#;5)~IWzkY1*;A5*$caGjE+_37XxT80#-{Bi0ez7^hJfD&?EiXktGI_LN zGTDkwXJ=yrw>FuC0h#U8A)#HN`SNAH3=wTf^UTbgL02b+T~JWwcHo74_Qb?wmkF(y z5Xy3m{GqLsc4Ntq|I1k_H%7p*27bm|`;>C(_J$RLZ>>03gq)hP`SEtr4ndU!-?9cO zJczY{(nPYQULB`mi4C-_uI^aLQE|6$m!#15{dZ~()$SMStWCDsobueEYt9O^_E9M> zd@2$HBA-3EGeSfqGc{`xJ~8^WYCL{7X33XPk;9E>sxsN-k=BZY%r;ZZwk6wLdw;st z!8Kdg$KPYwtN(HcGDD>s0qX<;vCQ51TU0oEcn(8Iv{|YJyBr^^?#y@U%B=1T@J0Q( zJ)8m?{{0tJ0NH|7Zy-TBjJ9!Lr|-^`#@ZUG$Z8%wsi1Pe-!T@E?f4K%>KFM)UQ+z? zlc_ifY=zg-mE4yN|KhAHLu$99N7TH?8sF-}f3-&dW*e3pq*u|jU?$5Q|jPGt(c}+mPS>1q|-ii@g8r$aS)a)mwc0Vs?88onpn)6!3zPWkR zMdavr!krugGqVITEE^vx{0xI3bYAO-DZ&q)xiF-l!{KpH(E@ z+8SPYBI5A5cs#1FY1v(b^udEKe5zgVv)W&IDA=TPgz6ZDiW%6NqVszt#wCO+1VvqJhfSm5c?CyD(`cYf8p z%}`eDnIG?<-If>)l z!oE*cG@lkbvjf(*e9`Eu2|K6u;?vXT)V$|Usb_ykU&ot?zRwBy>iMPcnxX+)Pt*zX z<~-@u1ZlK{PBM$0xW!?GBymsq2g!uKx1T11WEL2zdkPQUNNb&GKVi~KWomh>(tB!t zgf&@fJ@n8Z4%hIolJa<@?pW@QwpP@kp;43fS)uP+c4lQ}e%DqKgaC~B;kxO_tD9sH z$b8wBIu+}g4xiJ#mus0cGsWJqnI=vyV>e7D&4vg-kpvj0!(Tm4E6a_ z$dr(c6H_a+#P80>kh#r~iEkHc=cYSweeI)gb-!aB`(uZ?e~g%Pv}#=B26(EG*v+|@ z%Ey7asZ6;eO&r8P=u`b`#ST6tYC$-LzRH(*6_Gzape$01NzhNe$}~1c=d1h6*J%cI zJooyfG&s4Det6`wF3RNn=iy3JqS>QcpI@e2QzU&F66GSx)(clFIaE#Y?2@jfa!M_H zTeNxrD`P0QG%9kFm8t)^-NQyfR)_olffuQ%|z zuY>%1bZ_AH!=Gh*eT7Jc^;9C^3#n&nn!j68}S*f?+l)sPq!HpK=NGveb6Bw7B&vq?%U{w zSw2d%3ANO_Cl>HqOr#M-Kd`^SVJ=OX9SB!{%^fZU{*1#7s*sDf6ww-?W-^0M3mfPI zvmT4(j6bmQnQTkaG@d=0A&DDAKtn|E@+#?qfr#-luGUep(g*>g>bn`{zqiaKk1_*YgR@R!-u{EQ}^{-hQeWt$F5#+USy zHQ|NiDM!S{YU}CgJqQ`U6FOA$E25n0JhwVTy7x$V10e zhFh`>w`4v*Z(ve3wCChaHbzr^pJx7G! z;iJl~xIV(XtxQz6$`#f=YvX}%ggg4Jxj|;A{~cOpDEMe#An$Q(U+IPbQMsrlcaQVt z*GYPj=MJCiI1cKe?%9DHXNu{TRH(|Ov9zM9S{r2Aj3UBfeAVsj;SEAfeLeMnv2T4n z;g<5;X&Pf=V=>%>5dK(5T{!eFp{5>%ChNmgibze9vFGEPX~GbDwueLmpI$%YRlXiV zpOTWclgN=T)VFc?6D;-~2|vZFA}D6?gI2M|e%0r>r{l>Ad}VnQnl*Lxv%l3e{#o~I zyFm-7!M{Q07hhL*OY0OL+~ncfA-l*NOI$x!X%Btr1Y7CE%R79*4)=)&V5)|np%p~X z`ufRfEHJTwaOqm&DV>;I{h5?8z&7y=)+6V}qW6jG(%#-LjNx8%4hdxD=Cyb+$*mGs zQqnXqZ0YCEti_Bh0tO>Q5Qq10R7%hC8@jvk$Rj2GVx)yrzc|KLoDWvzzMBF^A!=pt zAvfrD^n6-OLVJs&Vh^BpX(~sK5Nodm$0lHUT?BT0SdKT0E%B4`)I^v*c<|r}m`uSu zVX)X8yrS%ZA&z7-xvgvwS4(5aP6oJ>lF}#9{CMy)B@TwtATj4#o2tsa!zDgt#evBTh zY9wOvP*k@|1(Zk|WJ-hCMi~ug!&*@hoH+{ zsQ&zM6*)H&dXrqGR3jECFANekEMbtE=)W8d**8MJv9oe&pHyvCA|3+dMW+pfG%kw$}So0qs<6)#^Y3yvgoei0I;2L{AaE(@Lx#5_aG550@xNAZo z<1(aU81QYdU<72GASFeMRb;MTx(-}Ey8fnXf&lPJRHRMI`;A_v;(_6xDT8b3Y4s{Z zw&12;xuqaBA?z1;V4-)8JY8K6`A;yR?40aXUO{l~Y>(fU7&dxw$I=tr%_pTHHWuJo z>9h7{L>8ruNh#TdBodiV!h7<&@z2=>nDmxw$}6^G&R0gdlF`Pomw^ZSQPD9rwT<|Y z;6~J;35S4-O3UTUBW;_nK%v(w?u$!dN?P1^HXp@oZ8!iG|BQ&i+Jc=UBr5WFXHrmU zVlvHbV{pqIc~skPb7dwqS!fUj>_ek)8u#G7Pa>~NY>=qEPN!PWf5%UW0Y&fmTRlrVA*(d{;CkNtH@bZ)#Ns1EJa42!O{56XPW8W_vQ0!D zgPUODEw{p6y=dS8bURkg(pa2Ro>{5iuuuU{{Y&oka5fQLs5DbzQT=2xGkhy6N4vw( zB?$${F4i-!;A|&k7B`U-CyZAV!>g>JQtDRPxa_PMLt9%>()PwK?6dB@Ry{n(%!EV1 z_JHTk+2;q6bB`uI{n%P)N#kmfnj+Gl6>d?kN@}RJ)l)bBrm}Mz5WFlJQb(vDzgwnK z{!_nwTPP*j(YD5a=lqU-8@Gm7tL2XkyDq+`;KHwgN8=A|9nX*406R_O*{2g&Gve;6+Hj&Yn}J}NSH z{AT~-e91iZ%z;5t;?R`j&vdyXFtD?WVQeU_QThlaL9O{cL$A@ z<~94-w27@r7uh&%_^08y&zYrh;#cFT*nhw_!!m#e0@d)&@Kc72dkUF^sfnotkay9W zsrm1*=QDMx5XpJ7jFRaJqf$_qvdNnSJ3KH1V#|+gcizb*ep`N;a&7+WT0FtK=E<%v zim@_bxt^%s$xh@XbTt;Vej>z9R1c}wG(sivK5w!b9B(*3=YKaz-?)7nGU~~Bh4vCV z+$M6E(-bK73ol|c@xK7!1&3y!n?Gt}*p%XVZ?b$8JWEN1+E>p?7E7k`&z> zQDrA-*WA$+iALiDFOKniCFhFDSaTgLbs-Rb=0`-fe^$$*;-aU9gp6TSRUPU;M`@G} zRqPaBS&o?_03d7<_enU%hx2#R&S?!ju>rv}@q%pJg8E=*M7{RB^reG9wj(Y+ywW??rsh1aS@kuPoS`Y=6921LIGNYxHlcx5uOmAA z?Z^x{8QIS|PLJ)Gd{2oI3bnwO@68JeNvWtN@~8o>h&WdQI9HiQsivj-7N>kvZ0z*e zMo#g}=S^Q!T3VW2?|{~Uw{lRA`n|^UffPoeY}IP%Zvp%0nVm>sy60%X`Aq>Tt$VS3&9I-+cV_Z3gMm zC8_Vis2uuJF*A$(7V|(!l@Ukov$Jz+^%F2bz)Wll?)Zf9BY?O zCeN)owV%ayroT{4JeoX}2d>)0gSbmYjgsNfZ@EDU{VQruA87)N!m$f21B5=RCr)BY zXUQMNLW51a|KL8O{B1JsNdQM9OHkEg@!j~S2KtA@sIC2^2K%#WoLUWih4Z`I*DT3_ zIgaod!Kd{5voB(~eKWBrR03N7kXntWx@i0+I~nrOS7sil)O@?D3ib(hcJ}e?6Vbc` zLYlnm5|>5J&B*ZevL52G(2d+D^7^%ZRBD=*wqn3Zy%iHYj+z`mypIL#N?%i;sbs?LenX+%}$A9d=Q zD`)v}S`KYwWGVCJrQhx-eCd~ib45Qu<)hn&J@s@<*}FIkV8qd5NPmq(o$C!HdCQ;E z_jXmLlX6o~ks||)^8I&?kXv6KJlrWqGVA4#rjA%z>uJlu+jR?$u9bGSz0kWl(U4>z zKK^Ndz2E+Hsk&{6)1jWrrGod3#J$bacX!i5{l=1|&FpfjiByeU}|T=h%(f ztF7a{ZV;kMaF}c0NAE>Z_%B{W|xSR?D~60q;r}K~+pmKv_wX zfWu0q37nLw)IBThd(5j4Hs-8QG&!jWq6Yy7XXN@de_7CrRO^yH<#?Dolq{LSs9i3)9R={-Y+CQ!91Bz3{ZmoaJEnvs#i3_VP7nWo9Q&Lh; z2a4R9@K4-0S$MOby7E2#`4-Hn)8W8Hfbzw(!m|1axey2Xk+%jYhx?Ad`F91LaugNZQv9-xVUibn;pj&{ zIxJ3uc3GXP0iHpM&Z(BMasFp6TSH*hOaZtTu=g=7uM#HiQAwQmnG%ke=h!$>~30! zQB_41&9na+5&5rN0LM;akb#y^BKkrjvABm=Om`#KO*`bPy0$jAJaWe6aOMWEMT?61 z6w@ar#%-^5J==?Z1ElZAJFz8(kChTP>T)Q8MW~u9AiESu6HSCqfSmw0dir& z-hmAQ;j&pC>9X$orPq40J3m?MHZ^+^;Jd@6MZ&CuCUKH~2CF7{2CDkjmscpoiMm(c ze*jRjtCRgwO;8)D4bd5JtkqOSasInU6?{+zut~Pu5%}8|BE==hs(B}EOUq(VSmAaD zb{9kWJg+N^n5MqhS8GK>yW&&>3#+!%GE^_vjuE~Scq+ugRLuT0%Ws+jxmXF)6uaA5 zRIeF%^XBKjLWCmItk4&WxR2B*CM+om%(Qb0jjIiXYp z0@Qs&9H?*@(BWY3Q!$@mLFkMAPH|Jj=T*M;swQ^k%Ed#A&1mC$-)+z7Rh>$&uf{Y1 zZFTHrx5gsnxT>>MweaNf>Li2L5Omf6Il#tO6DCCTlhL!RiP z1DMl~9oKR%bcO28n_7H|0lXU=0YX=Vz1nFnDs@{FK=3zUe+`afygQ8nlb@f|i@Swf zybq2QHP=jXI6ZDVYef(H3HS}`09~3oq9Y)cT$qrN4FYvI|3#x@Xq4QobG-dbVsi{& z#qRBLZh&}2#Paf#5-w4J*c~rR#~0jJY)FMC#_RJ}@h%SApRB7_>_p zRlc93X=u2xDi}^gQ*MMaeGOCF z3*nos)^F=o5F@4VDuu)m2fxGG?B|w?#E-)AxwAEZHZ-xx&Zy$O4#@+CCktvivufff zokufGLLMw}>pF5UCD9OVG}$!LIp?%_H{cB21SFZ282YrU!F{$mgWocPvD~1k3h+>_ zpksx^-HTvsxE+Y>+DS=iTsB@gV=pnZzJT1edoMs#k>A?12M^`gWYC0gEqo^`1Vr9J zD?kcCoc6OQ&4{P6&ECE@E;nE+y`1l8^MR`3l*Xm8`=xM02d5CiIR+51q?AP|mGRCd zTn7|~NtpDWP3~Wrb`UbDwkjE#Y>w1mlozkovAV=+#)$rf$dCJ2<(8-Ov=;?oPi{)f zN^dn=^lk2VNt7Y_Qv1*Iko^s$sN2ffLX~o=Iq7+k8`>$W4xBNYQ1YmT&YJ!4hJhOQ z<75W0K$&(LVJ4OC8vet!TW2BaR6953EFPs!5l7!Rd6Vy~tEbljpaBJ8vS1_jM??es zV4CFsI0Eqe)EBF`X-Dn0)FhoU6*lTdGi5)$R4pnxAoD@siSyG52H#bLx*?>;?eM@d zqhws9SWu+d|L6Fc@4?p1*2Bh3N@~UNnd8HQ1K?qmH8(di!(m&YplChLa0NQP&tPw~ z`w7XUo>f+((TG8!tJ~p2qR>e;fnv`rxjTb($sN41j!iJZc!y|UbDv=Yfws4K`gsx9 zt9f~OP)=CF`(xWx-KJ#jCINASnW{H@(NlB&8q1Z}B31UamTPN73!GoOJ{m6|)IguV z>Z0)pN}?V@6bp(jK6`Mh!ni|be}DhLR}92i!5`Np%`DA@f`cp&^sOGs@UU$|CZ;|P zW)WyZ<~4}*1`wpazWQHKucfDGd&Uf_!x#fj_e%$UY}P3+7rw(Fp#2v7I9MM;a~`Cy zJEKOP<<$t12Ldj(HrP2haAt?YL||jG{zfZ{!80PM>?T)3%A^HQ3X_6#O+!W|?Hz5` zTCHQW_L|`0N^P-qT>fkmvt2-bx!)rDRLMX@l{lx2{8-qc$-|koo$s+g=JJJ^u@<_q ztgVql+ZU>fio9El+J6Bg!VI0!aBk77VC1^&!_{h(3x}bqI@NJ|zvt?rn(-$Jjr?{v zGG=_V*dR~(QZY@!q-cMG8QDVx`(WTxT->(EIaPq37iuItF1QAx=BWM)D=X6!&()z$ z{L=*MBZXv0-Au)L!tYn4l109L3#yoL>lCi(y#Q6rfbdZN&OcSGxS`D@Wuv&w**#~> z9X`o2#8j$rZegMO-ZNQ@wfj}(g9p^bz`Jx{=g?UXdkmtlIFHl4-YLz$3?EYSrOorz)&FxRrvz4)Cxh!Z);(>Q#wx@Ss|D znAc9YIB>otA+sUh`(AT2o=0tggpri)_z zTztaCGz7u$`2_|3JLV-skjlbZUf}B4-$pus;UF_%5a4+Szw15w+}`K-FS-Ff9jypZ zFQ02N@DpDLs5Wp)QFCLwm57gGD*ye-XFOvuFZlwQBWI3I>NJ9eM(^DGdtwW|yNR!< z`M%E24b584IV}-`U+e$+9B3S~1rH2**du-v3_gL>+`+pB-hv%K=o`H3r9g-t0+8c> z05ApuB6lTmZ~yz;!2EH@x(XkWRJUo(zv|`H(?`i>+s5Q^jKKgCmm4C_Fni9}6Th_Q zw8M-CY5aYHVd^P6uc$hlMP%S&>pP9Y{*MwFT!pg_F!+@SKoYWx%V0y5(xM+^xroYe zK!O>^R3`Z_PDR(}kHNlY=VnXLY5>!udaA6^%ftje0$-rT+YBCndDkG2InsPY;aMsm zkY74oJz~F8f(L;DO`ANpl{~nXX!iWyR13>gBB^JeGHC9W`itjAMMZ0AYfsO`;0KEt z>wz>HhdIXF5ti^Cw(uS`Obb_oBl(Sg$AK;3&y|42R0l>WZi}}Wxjz4dylY@1YA_(?mdw2_%m~(ln>)_zvtzIhdB-ak5f3CUe z1gX40`a3o`LU=h<)BssE81I*Nq?hPnte)Eg?qUZ5A$W-gpd+SF%W7-}>V6U6)1KY> zCwS+JrFR)S%ynSRePCsum3@H4L^IjnxLTAZ&XBt_YZz*vRgGRZu*)X|q?EGteQDeI zopUg8kV&3K__2!50(bBC@2n4RX=zazq%tJPaWqjv=E%bfk@`wuj7{@gr4#gNFm~@| z!%QjJAuCV2lfVev`niNXCYDNFE6a&(f(rGlLC;^gw>*9}6ags6SSaW}io%0%6*4Pn zX5XlTS~0m#5{oQ}?iL2#uyMd~mnZD}{ukS>A7G5cFP_eYX1Y@*{@NbDYitLr0SApf z6I6x4<`(aS_mmMo_UH*$+c<1NgXFe<`47QU1LYA`OpqHQ(z~apJ(LS2rW5Gyq5BB9 zcFvzc&SLcJj*#H=Xr zsm;z`dS6M%q@`Y}5+6fSderd^71=4%Uh1=FP>gXo)hpl4WU)`U>Zl5vVApYOq0Xi{8*1^Pd8S4V5m)mt}o;02W5a2*P2zdS9-tpi!jr73~ z>$IxobIOjxUB61iC$jyOxZ57zW;FEMD9QxA7DcnqPxz=VIx1&C=G~Jxacvm9!e*xg zG9%TZ--ZX7%WbfO<5Kvh3VNfp^jksyh)7C)=e*$;C-xpgn{#tR^USmX7m?zpn@=p? zIlckL_p@iMo2yAGhW( zxkLSre->g zf4#(7J}2TbJWa}>kudHoV~r6ucefL&MYxDOKJZ?MiaKcgaolcPU80gR^ZWAj^ptEi zFy{NmYfQ|H^_zltc^yvxJ=Ij>Xscg_5FkzBL^*q&GRh;`yx@P$diWjAl}JfR;RNv@ zHzOwZxqR2fh?#}RCR|;WMpJwQLkd^=B&*`14#7&3E3bel6agc&5*IQCm*2H z`$^1p$J;y)X=#Da-154*{Qx>FjNzo__0_88{@ZH0bq-18o>Q!u7kC7Y#_A`Mo z;^ETK~6+mHR%GrX-z#z%#%W*FV)UA=6u==IB9>(bbJP;itmr&55iBTTdKp8?o zoy@8}+CDx$l;ZZEcUw@z(z3Emn<#jOeTcs|GCMn)@pOv24$dwjB2${{8Fd*rXLF~K5Ad$oSyw4~nyT97@?^>G&njE% z?{+uzuHPQODJ46OceVCBaP&I*RzXfm6zYEA(mz1^m&07feNb7*5nc=8SCi>hxv&i@ zC0IbtUOOg7{CxF+a<-^^VsZ;TaJ-bp57xTadD+ygay(mAM7BN>%nyw4j5Y`@lzkZy zl>%_iE6g2)YMPuW!q`7d-c52xV1XDM*^ z5hE`o)@x~cEzPI`L*p+8V$?C>aRC29rS&S-d;d)IJ)w2~EeDcUy)qkx&(f_lTgx^1 zO2l9~#u-ex@KR9uN-=T4(F-luIj*59UR4-NS-8Dzk6lR!LVn^K9z|7mR#?P}>jS_s zK1xx6QGVH3*R3nFbYB&eS{qTC1gC@0TUNPys~nAfXCqyg;2h=a7DKI#K9I<#sw#S1 z_D;!9dob+^N=O^{+H1iVX8f7gsMf{B7nSYhWi0{1nkQm^0|Y;*#cfrWgHo ziY;PA^g#!x6vm;lbGJ`rzu>-93@UHkG>DW zWP%=Z6|*M4Y}~OLeX&zzYT;YMZF^I~8zyB}qUUAeXR8{(h@M|}Sak2XbKZ}C!a*-? zT+7Q#DS&(m=uxm37%Tec29V-V)?8JSKx_l8 zNv+_y+NE+`X{A#M;y6EHWJ3cW2Hem042RMWQ(ooAzZ*#hnqjXP+!s97o0DCH$9QBv z3iLXhM>b03#}A9H>?Hy-uN1&OQ*&so>WOwAuo*f#JpR5UWE&bWT_Oizp?ko zJiC6DA&3>O1ZotxCC<-_L|9T_b6GjYm=h4TRZy)qQQ=?z@q|%6sPbG9B)3qbF1(LU z{cl|liD~TW*qotnIo<1tGRbk7nL%x0G}k#`bLl4WCVK*2&mYghHjE7r z>#;uuhPC}csOjp#6B(j3s8x4j5xMbaT=Mm(U3I(WyafdSffIsWNSgdgF9hf6keMw@ zHm5bq4VDRz(fh#a(N~g@nVN~60wF5lmO{pI_@bYk0^0QVUeM{w+`wsnifG2rSIh5G zLyM62xph3)G-9}*owh!r#vsP1C9<|!JAe6>5g5IjdHAwO+`p(no{1ou0Hvf-m8nUP z^?@j{$!Nta64qZ`_6QsfTai*zSMIHkOcch6={bp|4eC|zXfuwR8f2yk?XS+&a^)Tz zKgN&iFN|EFiq(@-mLCHr7(l2`+o|hJW+e{o>;Csgg70QG#w%|~xv94Hq@wWpU^OyT znIepy!(5>4vM=i~2(%gTBK`$1c`cJM^dS z#gfq5LF(&aN;u1K$ajlLjL#B!Jnt02SPrBG0INupGkG=MOG=)dUC%&|E8>m<0Amd& zc&5WD?wp?{sREQryTY&>5a_jR48;?9N?!kF@k}v;S-n|y4j%ZIiBb-BcIcR3w)Z!e z489FTF5SO{AWtK)c+h=K0M37d0-8fSO%#sayAm&{28;q!)xgi6Q$lWCQ?TleDiHl^ zo^oJjV*0t_VmDi7LP{Kt-dSkTZ?!M~2QSDWcy|0=p)3cVTgYPIh7oC6@@5E$#Q5zm z#_CG$_Jt^meq4}cXTGfoR3|A&99IWfRCX61BYjs*u2LDPh0kx0l93_TbWF5>4KC=o zQ0BMWVN%_>=pFa75%(aeTqaeyf#-VNZ{&Eo&Y>5iF>wY^HHwP4AcTR9O*z0$QsVDc z_eR5*6@Gw8FPt6P(ZZWlX+fHRmPSr?$;HJ#fNPXgFZZ_Qc%`AlHaMfVm)xj~3L{G9n%mvKRG)U~|H-0NNw#~h}H*GUCosV*xPk>4K>M|(Kdf~ggujjeD2Wn0^ zPV^`bl=16WBHeA<;0AsGm}^iz@ZE7}y5DZA1}M3cTn4ImNNVI}SAo+`6(2u(Q}f!^ z0~4Vldu{`?_j14V*}#GD@jx(xR-XLkr!_K5Uj#tEsER}G_U6R^mTdPAAi}ASaK?IM zh&Z$^`s@XOoPYw2{@5vCQZZ^>U7f?9#BGkToHBDc<{`zo$7DB6RW&Jy9D4NI(j@8L_#p@; z_;H@&(M-@)B}fNv@|>7^T;1Ps$4<*8dM^bbjX0@bM0jo(QHs2+0nf6n?Ep_*54!4L z7UR?6`IWU;uoBm}f%9hzuHBZ*JOYL~>YF0>1ZWMnMsn?6E1jGi28;p3oH9NokZqLN z-UsD4uLIajxN*P{Zs@%p*?P|j+w_EpX{##uD%%LMg730ZRwWQ(3NIwQ7CcEXVw+h4 zY)}<=R&{6c678t5m>&`et9r8}9-!Z5<8WV$?)VgRM@1jlRdYy4sFs&!yC3UWAweLn z(esO~a;CV{Ucle{Sg~_!z)5RdG?D;`qWkAYFy%$r!k2rJri1`tQ~Ll?asV~~fRF#- zWP`W=6aQR3aiY7wJ7-{drqfRBuW@(m%;E_}@Nu-$JxC&BX;NH>SjynmLKWJl+Emtl z4?`r0=?%SsHwg|dm`!Lhe(V31^L6>@s;h|CrY#)60+l%EAur&+U;*qVZWjO72;l$H zRKZ366Y%gqKm8Ad0R{e#c=CT(;{RQipgte_`d_&K;LiW+!2kb)3-$MEzU{C%>!6q9 zcdnpnL2~jNhIf2ocl2`#>L!!bDdlB$pFY#O&-{*Cg8RWh%C_Mr&K{x`Rs)w(<+`K$ z3FhmuOd$1(o@)+u(qHN3SD&%`Z$eAzZVSKOA@ccaS&yW36AF*1w=d|~ z!#p})ipYqF&7C5U%<|^2FSNSsSgPp>qt&dYTSuI6PclTMGrPiGSsYQGrs6-#{19{F0I|`6Om~X6E&jlotX5 zq@b;>Bl@7PuWxg%0mU(Yl?y5)pSgLtvqaO-B2x~6kVKPTYdW7TU&ZBU|6UDkCm3Xu5Ply%@P00IF)g3m9! zxb5xjO>Jx)&^&kf za}8p;(iel98>n1rYG(G{?_^g%SBQ`A0br%4LPGr!_nuI;t13@n!2#N36zVn$3rllL z%W|4Y;7dtK2za31o0|~;PrZpMDK0hx&8@*><7NlG1hWHlCZM9C($v;ApQ$l>4w@QA zqc00mk*(z`na?b50nCfnX;G9@w#Q_&F_-+^wsL*ysRd?JD|WBZdx zTiALYG*VGkQ6>3pMGU;zdm4aqSC1qDMMXTfXG|ACYw`W|BF zWBqL*A)%Htu!LYo_Y>0k2d}QaeMCWl*AU|t`T7IseNNBFcn#OSo2Tny+!O=obAyDW zA2cw(clT~EIDUJI!SwX?5r8hfJr#OiJ`y-sI4-tFf?89YhRt`ahO=IF1!4g;=zdA~ z95B9;lDhZ!@uz5Vo^MM_w4inMH_)^i4+8rBzLb$60Ijbh!2ef}Q?Qvv2P%l^6jY0q zmGx`n1D3ng)G?spwnc9gDP+`K_{*0syjH`Hy?uO^!AwA*_ukF`jPthciiHoT?^5e? z_>R-4^&yy3NL(BVjDgT9eqX?mM71jKgtwx z>Kn=wGVwKdebnENW1S<^GAkM>t7cnbtI3Ntt}m`%zy4!n#Hnt1 zveH1v+S;0q1Ge^p&BM^hXspd^Put63Y;y8rQT{Jku@OwDBZ_xhTJA!m2 z0wC5vQVece+8o0_KR*Xz=3{y~1;lj!PcM*D)cgVh z`T6;HV5eOiO{hvbe6_900-FohO#AnrKmUNyK;v#gAS`;u3T3IpVxP#y;$$RPFC6PW zrlvMCH~)YO9QTFRxnjAV?G@c5-rpNMeq6fS?X-^M*Wi09DdX7X7%UR|Y$S z#QcuGgYN7Qh>VQP=-61oyp!D&q7v898o)$=vLC)!jr>7)Ed^{j+#92%CCq=IhCdKB zaN0l9>pb)9`t{-~6v2JJeO{3=_U;-3KQsMzE|f%*i%yQ|;9A!~Ya5&8 z{gr<2%ZrwUbI|Sm{ogCuI2toVt4DJnRs;%zsp;uOW@Kb&r|@xb+y?bh;}wcsF+04CPX9ZJ-T_oQw0MOPUtxT2$Zrrg+pUttuA>IkuN&&;RgbZz;T>fB|S1GfT^m)7dM^zbA@;wyso^l$4{>(~fmi zeTA}dz;Fv*?C=v3>8e`RS=ysGUAPaBp%44#KbOn?CHauL_9avacXrRZzMe7&P zC1Bs_O~lh#<%T(S@IPBid&KvS2vqw4?X~EHh?k{@rZCa^P}Gu}zjFEQ9%br1*nz<- zX+>m^aY}OXT_A;lg6$a}zt5tQ^%c}?UF{pWdv6LjN(IaT+;06uc04UMYor1ZDg#n_ zy+KswBkZo3h_J%KCqNcacKp+6(N7He+)HoT9{rhun*?Feq|`qLC&tEJ1_p|QWeK&3 zxzk!z2!lmmU2I6WP9RBU1fD*%zWW`lbTATW3rssnEiJ7ol%lV%2=L6}lafNfD5MXV zmG17k7L}GZwSsD%$M!W#?d|Q%R7C^?1a~eyd%^BoYfTd9{rVMhc6Rpdx9w!Cyqto9 ztqWqh6>yx02l6A>=~8-UT|)aPxU7YxEfh#zb)&246~3oWzXDynf3&4xHV4MZFDr`x z_CXV}*#LFY9yC-=6{2;uYlhvk0%8Xkfo5;tUIRN5C(UJLOSOznA~r|DfoGY4p8Csn z3d<%Dk-HRH|DzUoow$EJub__7Qj2M*Y7d2qCZ-noJ)tTgZEw#BZV+By&(CSx{s?DD zf_`@&`;`<8)!7_JC-?*~Rutoz%eMZFb*MPeN2f zzRu0zidzE%SjxqP7py>h+DTVwc)uFjF zj0QSmp(}`XFpWp{-8<%1_pN_`S_d%^AXxvYt*veLKYNxV5flr?BpclN^XEf*yXeQT zu!8#fhaf%y#9D8aQ5&ULEU!f$9XtCiPz(0kOft}>J-xlfy&`< zu*LN{9v)spX?PD)T6s zO^sD$NT37u8%Uyaolj9H_C7&))dpgHfrz6M5+XNfatsX#!54Ag9EGl2f~bvw!1D{- znvIQ)1_L?u_iF^O!+wNDM?~CE%6fj!Yj087!$aWNvuE*XY4E(;jQ8#Vf4@w?pTLLV zo8J@h%{kf6$ESMNhfVzEwtdT}lUtpZ#DRTmibhU767%JM_v`a}tC1WtAU<3JHUk0z z60);n?mdw)9Y|)weg9@&phN%&`mrjb7c=woLg$mYX=Ak(vK1y>G@zXOBN2C2VD85P zhe2TWdjG=0W5C%0mzO79J;TGq6ciNB?(Pp$L0s^CSC_VIj}o`^-2iw z$D-kJ`}8_Y}8k+%g>2%QK za@fh)8Q+(?*G7y7V-XrE8+08|2gJ%7LqOz zB%aD;a6EVNfSjDr&JIPE1`MWPP4-@pZENh8zNlSUsd&Buv|b4K42^;>xvTwNUVaa3 ztFA5cQL3*?4)iV(@rh=p32$3ojmDeZ*Jm1L?+kx+(RByG`$9MAjt?Nh_jz3yu`&;S2-p7(tnJ+~H3 zw=|DVT7Lmvq2=rAOM{q$Ww~b@El_##$K%H@_3vU|tY5c|YHV!eA1E#@?uPJ+{l!p)OSN>tW`3v7Dxlg3Sns_bevvkrD; z^!f)*&7{mcH7R3n8|XpgM#zOXWg@Nhx*aBArKyQQg%Od;C*Jx&3x+H=H#ZC-i(BDb zd7;PK3yF#1J55ZSA(3%lC^0mlv;MZWH>QVs%7evTr|+#dl?lN?tTf_HpgRbS`8CUW z>S2uO^e>ELtyQY3s=r;jR1HT(0@LBA$NGDh76b0RT)KAtnZt896JkXg8q6?^#`qPu z7Jn4fpP$?#X6YLq9*&D*k5kUh&OVg}Kk3)hBBQguN@3-~Y&J+|++*aba?DlA^4vtcYtAS99eiBxGpl67({gif^_1 zp0#i!|A{vu&I(HFRDrC}+*;S+aT+It+&T0F+TNa}bMx}nLYb{gXe4_=bb|#&)zsET z262WVm>F*V<3qhn=*ox9H`Te8=IZq&Jiek-x({+UCr4#^W+v^ygXK3FQJ@NZ(mK}G z*~MBp5Rv$Zlef1ZZVs%0dqPR#yYeyv2m|!zIC^=-A;}R)lx;_n|CcW{n3Ji-4Jq6y zPg!c}>M$tRQc?t|jI68(hNAJleetxb={4@TDO%G2`VR7-_uw7U88V9Mv zTBfC^bLr~pPLFkoof&8%Is@u9+(hr*Oz1OUz1}{7u_%5?no|u2Wng0?p=fcN8}8HA z)|P{VBQ-0FVGYCo6rwnGvh>F7+p*Ybi8%8(`3yzUxOJ)j`(HpFeH4f4{nm&8`h!Iv13s%)itkQi^38|VaTz- z2=#I}|DA{+$ghjg>OOiV>Yrcj*rchs2Bz>L?lV6>KNX+OXNR_-D69wKY0JxXo0^+d zkG@#xdi*$h!NiG$!rGV|hr%m9eO1dk-@PNb7Mkrj5-_j}HNULoR4AQqou@TMGj6Rm zCrk_E3%TiWt{(%lduu&aRpGT-zF`j@ zC|KOlxzyUakAsWrBbf^@AW$5irNxlcZ-4F#4AfYyZ1)>T>}Yqf=KQ zI@AI`i^CMQV;Ge{QwY=nUigShpMLo$BZDg7f9_qmu$n|_%o{WdAGJ|MB|0TVW^{Bk zJ~0stNzenx@$zNQ36~&T4&O@}hQz!53&`qocyD28={THU3>NKNePKCP+`nwIA85U3 zX?cEI^GqL<5v0mGI6)|hTBu&?CqzQr7nYQa!5bLipqzn^lv+-X{GUX~STUg=-+1HJ ztsK<-`}eC5z&CB$RKq%yZFeHS)F4GKWD;gUN+(bV{;kFrnwL1R(u+S@?A{&DP^`s35EocfS}KQ`!e(c}WKY!!>QeAh``y1d9GAp?i` z*uOsy4sPW5Lkn+5z)Cg&E1zFjP<5=L4dOW-cWIfiiwHYSikfHMql;J0Ap}uL=I`q($W&xY86}MlP7BMQA9f< zTTGAlNFrCE>Q+To@v2qJJv}`GgM(|4ZUIFI48kkssj|AWRvsa&>1y0D2!XzEnDeT+xH28db09Kih|sLy_`o6t&wEE zr(XTSnu7A{Yge?~*1Y)T%W1M%@a}z|)2C4&jG*b$>8pYAiEc;O;tB`|m>zvAnz67R z8CnV>Rr7@mmyeIo`IWjlI;}Yl`at|ngRN=EyaukW_jAjTs9e?7fG^xqIu1@mr2?Gp z+rR(9rAsStbWIHK%(GYjke`LOqrwmd;7us%P>%gBeEOk9GSBwy+xaBvS?wVVCJkYL zPhuN4P`kM1X?X^NF*%f;Qs~}OQ)85ok&z0X2r(WGh3xF&l9tsyN6UIRyirX}1k_8~ z&dx6N{{0BO5SAk}tI=#3eh9W{nY+9DzC(xVF*LbA{i{Eh??&h$WfzJ0%wF#WWH=u` zKPKE~Dtw`-sVO>A*Xij=gSid9FE4Ess)SF}(bYXQGklOT0FlI00zS1l_5z6^y*)>L zf(BAP_x*c+=|qKS_WQI|e&Yy-;30Q$oAGAy#5nQr@O&z?Tq^w+h!|uHK5b}j&WpWK z2j=_gfw`E|cfd2Eq@ZUo;BM0b-0u34e)Tth|D8=+Tbryqz)6F#09^kUH=!$QwO4~A z)`GQOg^s}LGwHm3>z0HfBay=LDh?U#dM1c^2b7_xyvPceWJ^1{Sc_yW!^4NyfKnMl z7=SO>v&uJ2;o-6M7{nc3-SLv_ZEq&Z;W)i|E0pYRmz?=503*+ZU%=7-4fpX=RUmqk zE!q=ROy+XXAcEZqcLsEVNRidkvmX~Q>a7S#((x`kf$?BM;i{sllJDIsjfWi)Rb4m{ zi8tAKAQ;u!#ADH*S#ygb0*{9 z1Wcalu_kdG5Y~?bRl@`v=bWG@{!hDi8d_nslPUysUvzf1G6n&8?b?kS(EtKV4@2mF zi`pTqZLwFbKozKT7ia5pK7D-WW5y||i1$&E(b2VyjVmy~>=Yir?fd$demw{Z;g<-~ zbn&8tI~sTkHpG==j$*HA1dK~TezH*wFJ9CzW5n`8e)t#96y)beEOi{|al2%-ITB?M ztWQT^Vq|Ify}Q^YSCn&5GMaZ-e~tUu$eA-|AX_4l(s;i9m>Jn{yXk#?U!Nn902Coa z$W)9ZIzO1NQufIBcpRi|=i9eVt*M4&?}Fzh*;PCulGq3$?*9Hq-Cr=t>=YwKZ!Pk& zf{3W7YT%?}thg#0HkVRMaDu$Z?u*K18Eb`XHf-6FS>5vx;O=AfMJ|J}-J4P6gIF)} zACtf_xRE5C!33BgLPJ|l>IPlI6q#JbxeFcH{fKB_Gqup#q%6U>qf^Y(%E`#6!mjXH zoIi_HPvUdN+OosxivgQ}Lb1HD9mO8DZ|4~K`%&dNWU-{t_wosi5iufuN3saHxOM9? z%3lP;AT(+CkBYM}xv7i8;~yxu>1ASA)n*Jv9TZUNqem;=*bmJhcO&QLo$OGywzYM6 zlVM5Qw#_3yc6z|GyU22GOl8X!QHkS(T3a3ETd#PF%%8k~agK*26NK!OzQF}*__ zRy(77G981nV}jZH1)-WZ=b)8U#Kio|JEqLGf|G|lx(fL69Z1j5w{q)*peA)$q$(5WH)zVp4S^6rsNES1)^{bAY|&7%+`r!l z=l^1+q9P(VaJHJ!;KR1go&>R%cIiM%hH`mIewD**4`O`O+B-T-v4@=iP$0(W@87t6|8V_G{SuP&>Dz=JkB~3`i={2wl{{8tni4IT~Tk z31qApYjEYNRa1x@+Y;Zu=}BV^TQE@Q1Vv|7E-iQ?rQSolr{RUiSkX8`2$t;as6Vk7 z*hNtBWNCve8lkX?Cpr>VkDP<`AUhCi2SFqns<(Jb&h1mF)sZ7T9%pX_EjeJ7<$AnT z`_~_T^dsAG3kW=ijfn?51p0$QrrTbfxwz*@=r}9euJ{5(yYuUZd&IZ7#ZNBWra7@; zlU>6*PJAE37+&dq{UKv4QRCElYy|!{?}z^66`a{V8$5yXYEh8}6^m_M9CiFaiXZY&tdyn*R0FJYH8@xImj2ety}rDw6yqH{LgkGm7%VU z;=-zj3twKUs2q{bgK%8I|CGgF!n)WCDvrg*cHqE)retj~GHEt8@62Z>#y~MH`oZ`_ zL)P@~wuUU@CJC~B9AcHbF$_j*rRLzYc_Y7}*{!3#xE zL$^6Bx%3)4(|7FMD$_VALm-W`?CdzCnvZx=>vVPI1J=nG@TjC}fbHcZ6bjvlFWicZ z4Uy{db)Xr}H-1F=7ta{%8CrZv-sCG0s0bW5){mfA6!L>UIySb9>d0|0O}9v<1x>r9 zIax1#^~SRGO?iY8mUO?)42&i*grvgHnw?My_^0&o(A%dQh-f(9kpd1dtGlRck9W!( ze9_cYS9bPm#FU>OsX@BBMi7}Z)V3V1#%=P){z~5A%r+E_ipTzb^QK{J_NM?;4a+w~ z;L-@1-q_vK^Us|sCpWj>ATvKA=Hm>!$by3HcxXacOe`92qXYJrRZ-dNWh)>cK(;NB zoG{1Suk{zE51=q93t^7;3n3j;cjmeL!79q+@8H32PuFP-TmQj&Ic6Gq@+1HN6SlFeJU<8HY9Sj;-zOOc-xc*+dnK5U&jW zGc$Xo@K4rdfvR_O&R#%hfny=j5;8XAks8wTIusG`BUpaBAm5SYNhTnR2|BP7 zi6SNFz`>#N?OE@O|I74AQy+T0*W#On7rYPM{>{!U6cYeK7X&P zy|vW<4GZWTAf<&*0|Ou09+<v?zF186MoHzh*i4FebJLLu~u?@ZB58MqF@j za1d2(ZTkn~I?96sbb`O}1&ntaLVpuz2Ct$MG|io{(0%mSF=s^inp){Xub$1mPsh5R zsj$9{#e~j(l=1YRJev&SA%v7{U3^*r`^Xa2K6E<}W}oBwBWGBLwHbk_ADM_4RiCL3 zyMWe7ZG$kto9f3Syx>;jm~b*EREMJqjg>~G$jG*zS!jH~^U`(T8gU{K;c!XI4{|YH zlEq%ISMFTWU#CJ%VEbF~Pm`1VwI)AmhY_h93nV8Y!+WE-u0-U4Z{b)BI(4*d1LCZMC)Rs3_Fo2slZG4B!<4BcU7w0IGz3 zH_uEFI%tZ0kHfM^L&W39N^vs!q{dNj)5{v*a}Eh^YN}qQw!WSV+YC(^t4hk0Q22t< zh=jz$R1sFw-}uYYZ0J%nCJ&3&Krz7ynV--YyU@PB31Y=83yX?gga~tKyT3aZ`Vl=G zP*CtKT6Ih&sm%KO`-8?S!u=*C&(aBq!>fDq9IM&j>qy^4eW7R9rxLHjHZ~uyw~dU; z#`79LR~v0vCW@)qNhe`afQLjlZBT10gHtCEuH zsSi8J@S=^Vv&1jc$Ln0)SgV!oT?O=NB|-N7vVec%P9c(S2icdR^NCokBm-vwe zvh=+vCJ2xsA|gJhwifGOW_Sy}UzSE!fUw6q%xVCv(jc8dgqv<{&ulc!5W%;pNAp?b zB5Mn{P{%-h=)NwZ6Yx4JQig<=s1dN&o-= diff --git a/app/static/css/index.css b/app/static/css/index.css new file mode 100644 index 0000000..211deac --- /dev/null +++ b/app/static/css/index.css @@ -0,0 +1,86 @@ +body { + display: flex; + flex-direction: column; + min-height: 100vh; + background-color: #212529; + color: #f8f9fa; + font-family: Helvetica, Verdana, Arial, sans-serif; + font-size: 1em; + margin: 0; +} + +.container { + flex-grow: 1; +} + +a { + color: #61dafb; + text-decoration: none; +} + +#spinner { + display: none; +} + +#screenshot { + padding-bottom: 5px; +} + +#screenshot img { + max-width: 100%; + border: 1px solid #343a40; + padding: 5px; + background-color: #343a40; +} + +#expandedUrl { + display: none; +} + +.card { + background-color: #343a40; + margin-bottom: 0; + height: 100%; +} + +.card-header { + background-color: #212529; +} + +.card-footer { + background-color: #212529; + position: static; + width: auto; + padding-top: 1.5em; +} + +.form-control { + background-color: #495057; + color: #f8f9fa; + border-color: #6c757d; +} + +.form-control:focus { + background-color: #343a40; + color: #f8f9fa; + border-color: #61dafb; + box-shadow: 0 0 0 0.25rem rgba(97, 218, 251, 0.25); +} + +.btn-primary { + background-color: #212529; + border-color: #495057; + color: #61dafb; +} + +.btn-primary:hover { + background-color: #495057; + border-color: #6c757d; + color: #61dafb; +} + +.input-group-text { + background-color: #495057; + color: #f8f9fa; + border-color: #6c757d; +} \ No newline at end of file diff --git a/app/assets/spinner.gif b/app/static/images/spinner.gif similarity index 100% rename from app/assets/spinner.gif rename to app/static/images/spinner.gif diff --git a/app/static/screenshots/.keep b/app/static/screenshots/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/templates/index.html b/app/templates/index.html index 1df86ae..2a012a7 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -1,109 +1,74 @@ - + OnGoing URL Expander - + + - - - -
+ + +
-
-
-
-

OnGoing URL Expander

-
-
-
-
- - - - - Loading... - -
-
{{ url }}
-
-
-
- -
- +
+ \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 7513659..ab09922 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ flask requests selenium -pillow \ No newline at end of file +pillow +waitress \ No newline at end of file