From 375ae7fb99a9ebe30b9f3695793838e757185c88 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 15 Oct 2024 15:19:49 +0200 Subject: [PATCH] First working version --- .gitignore | 168 +++++++++++++++++++++++++++++++++++++++++++ assets/canonical.png | Bin 0 -> 28087 bytes main.py | 39 ++++++++++ requirements.txt | 19 +++++ 4 files changed, 226 insertions(+) create mode 100644 .gitignore create mode 100644 assets/canonical.png create mode 100644 main.py create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e2aa30 --- /dev/null +++ b/.gitignore @@ -0,0 +1,168 @@ +*.snap +.~lock.* +*.bak +*.back +venv/ +qrcode.png +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + diff --git a/assets/canonical.png b/assets/canonical.png new file mode 100644 index 0000000000000000000000000000000000000000..ff692034e645d0e152a07c6983cc16e2a6725d06 GIT binary patch literal 28087 zcmeFZc{Eq;+c&%oAwx=pP*RBuUsI+`5fM^`kj%b@jPW&(CCaQ!7i9<$B{P{xW|_*E zDG@Sc$oMt9$5!`!|L*sB)_T{y*7L0QpWk(@uGstB=RVKlJciHlIgWh=-Mn#)iu@!w zf*@2%idWSUgs2VuLq-BuESH&b;jd;7O&y%Nu`8>CqrJJ64VD$>?to>*x>=bch})3u z&97ATtdu(z!Qtcdx%XMmsEf>OUK+@H_WHtoVJXqj`pwFSr3BV!R{l6m4Z;A;tS>^G zMwTJR%$7g&J*e_{^Eg@NPD1=b%DE7?zTFRu`Bo<|3RtI?V*wXWWJ!eXoJnGN%3i^w zC1N5#Fp@G@%G&!Z*Kmetk)z~8x@nrYb^i19VdcKrg_Q%S{o8RiB< zy;thlEc2`rkuSw{N$Kvt)#8v1xXD%Y)5vj_UdT#O{VwyN{)hgjL$pZgE%aIL9=ftb z^l`9GsayW~j-k5cvF~;FrAJ3RhpUKoK3&xKlti3zFZQX@`GC7VT4dF1kH|j!Q|tFp z#rp>B=Ot#tjiu!^-j2e`&RwzXn1?M$vdjyka^qw6M>}oqh);V@aBwM;FN-a|ze0b` zXR>^Lg=zX(y-yP3rGj|(36A`mKTXO)bO&z+Wd@lBXWy!po-X*{9#VKGr*K_zi=zIJ zEjE5m=vw3lwpdnKzfkduuRqAXxE)4&oN-9aWAiafjUsRST{=ET?i3QbXWvQp{l`WU z8nTo`IA0KZ7~0@XX~`A|a{_IBPk(ipBPNp|(!SGVXiZp{oGv1MXP)ed4H11mi|Qy5 zudCn73;F`*u90{BrVpvbGkR;BVyHYMYi(!0;Qc}h(fxVRn~0g2(DZz(!G@cwp{xCV zlGVlrQKXb(L2(cp26WHO3Uo|IRYly?-j>(c%-#gc>t^c!%7-8l(rymMrq);-s|nV^ z%1)B)S49mQtCg7~oAxDDK2--ftfiHrha*>aVJLcBt}d_3}QRxSc;Qsk@>j%McK z>Q@#1P65A3vRUGA4&oS$tE(%ot01qvqXmXvOiT>JCx8(U;DHf5PVRO%V>cc(e0t+i!hl8g;*#B)L&dU71g!SLnhTb{Y&c7}M9{u_ zJfg!DUYa_i6D=V zF~2#FF;?snkBFeK=p}O@V?lmn;e*wfnTjjeJK7qmr(k3}3d1A;Y1^%N#Jm=^XTF6W3f#@Rb++S}VmvY}J3qEG(kZB;NQ zGh>|bRbw0$Cgl?l66fa==f9-MFC;D`A}%1p#U~)n_b=n^&8*Db|G!3~#=|P{=g1YU zoZ$WL2bca>lm_u&`ezGH#x7X1gLT4Oe{Pvt8rxZ5!F&8w z*Z;U~^}kUCVSW=n0e%ra9&|ISk%`2? zfPZl^@Z6tk;Jm;WV*b+^{*@W(cK$E^^Y<+NFTMe${`X7%NAmr*xc)7!|B(d#M}z;Z zUH=x>|40J=qrv~yuK#1=BLA;+3Tp=_$Q6>MA9}U~kZ6&ZC||pZ?4$ptRAolNmBS8- zx=skfdlvme;Py(|1ul}}lvL$OXUM53F-*lyg8B%;iYQ&ZqUkm?KXTdTu0;uEQ=ZPy zL}@Bk?Q;;LrYRe}ztiznmC&{$?X@v?Yon2G=V*?bCe$_`?}|qV3EBCM&k>6I9aoA+ zlsW>B%+ywzQp!B98)nL5rZjK&J2EsCJ9M7DK|4q!@AcV1k2k0A%Xk8+(#ewNch&~* zHT@eoxxao1PWi*ikW=ER#PAm@HxYvPBAG!E{c)EXC;=h;tuZQ&Z z->3NB_4fY{#goxn<03$0Jm?gfQkVL4nBAB9pFF8+t)SlDds^C<$|t@qyZ^3gt@rW% z?%wUQ>mt<=PoC_azIQ*b_eoXQ9cCe>;3Jc=V`CPrq^$@NX|p?Zofc-=$HXwatz`0U zQ2!mrCAp=$-lv_WH5Ph%w`oAnkS>+Lm=W>g9ZsQB=GTe$VhAN|yl{M9u=MBi{F+-K zRcrR9uHKi{MeZ3W%IJ_F<7<@RYK`L`@%*AvgN5PuFS7_SFpWIi3%f=(#T;AbujCbnm^2Yu<`olTYAnZ^1ijr}vle@S=!) zkF<=!4Z<^JZa=*)cF3McAb>|_5GYejxgNNDD?#t~==HM1;wj6!N&Q&#SOnajdhoef z8+i$kaQ(VN{uPT3e(vKfTH7`{Y14%zF?gJohA3)^o_ed&Si4z4y}|sM>C^K#N4jWy z@GFi_JmN<#`sdCuC3_{!EfCjQdp(}vCSqk?eO<|Nyw~vEN4Rk+pqn4#(>T^&D2(br>wAPCvp9*0$wQGWmsH3=MDSYMC7?Z;Da! zymH*mdiFZ+Lr24W+NMr}C*QIdF&^Q}yls1HLk$CW%2QdHxG;pd=$x!b~%1NnvYsWm${gm^o-NI+S;2ABAS_*wkF|7z^|ShRTm`pBm`{>$qZ zoGjt|w%cOf7dkX9tD_U+CCV#@h`;^*s;d`1vew&9I(3|)U$Xrh^{=4DsjXp_C=!We z0z;${Cvz%kyNjleQp{3#V%_V~XN`xCGtJRcZTOLu{NOT$1+n=!zjzx$)+|=KHl=kX z{_f@BCSE?G2yYP(+fq7HQ<{b#q2rMvP#e$cgh9#Y4+SuCj~U&fI|LAFu<4ID%0#cR zQE`n06xw-2}ChCl+$mp#w;RJq*ZhsCqbo-qa| z7o6EiL0*~nBg{s%R?25x7CfZLjvsNuZp6Mb|GDZgKYs{wQF6KQLUPl>R`vr! zRB@F3zenAYa30mPHc*c3&|2h*od{Et+DPpYL|x-2o|Bu0K*y{2z}uYdby_#=Iibh+ z^J3hO6APa+rvuqDOkrVq%G$I1(Tv7QqCtDp>)md=NoUP}SL9UHpd9+lj2z{MC_ysewrT zYtcvwUS!v|dPkL3Es;KY_B}V{dcjVD5bWt9A^5z?V9=G#INyEt@Wd+CbD!z(OvNg= z^6O3^QiA73zd72l$|YN$M`pYfh2Mu5G|OtcTbc|peot>~CY?6H&*^n%+g~Ix^Xm|h zd5i|S=OM}+k6vAXDDvereJ{B0d?)(Kf806=C0`a&c0Gu^E8%P)5}MTd!6^6X&$pzi z=^dy6z=Mn1*(RuAe)KW{GQFG`Fh@fDR554U zJiGJuDduD$=7{#Z6*3snKF1ZC>bCv;Kx%OIbdNp`ZSjtH#zfqvT4U4e4^Jzhg{?$t z$sPZ^{A1!7fkFC*(e2W#-9b3)QwmSTP9ax37?%z$g)(jQ45yxdnXWLD2|Mv*l^4!E z&u%IwKFducv7E8{-OcH~(oJ@)9_DD(TK2E~wA2q-!@%@U0hVBFnm$4Gi!H`QqmtNj zGxwpupcVs5NZoP^sF)Vz(O80>S73(UEif}SPw!bRaz}U>8D1E40VCBRF=k}dhjpic z7jvUlxAjds0rq~;cO86ivb5v<9L~^i`8U;B43RYJ+(c#0ZssfC^A{BozbHF3{hayo z*g(dy&ddhhL1PbEYR}6nmJvArXsS3@eai`A9%av2k-!_}KV%Yg0;wj0zo#_Y=-jZf z(9I01)c1$?YDgL)D_1QTo5Sku3Q|=1=3luTF1f+vE{I$4mIte5WklVH$u|#h3w5Jr z1&pyG_p)}%@NINWMNco23_SqZl7Vc?Tg;@nGk<$c9aGM0SuQ>d3-USZ7k0TQ8U@%czz8l7wC9y6sP&A0KA^A=O{<3mS;DfxTSRaiQ{!ZahCw-nw*p zJNSJ4A~+T|=UDyvs8{#-Zu)MqV3;M=MS*h)*3#FnU>7eKfvr?ZY6rfEyU zvffh2E=29HN$+pO=AQd(Agkf3a1Tu>(?#iew zG)wwdrbzY(k6Yi=W=y(n0q$AmW;nos#A0&W$VR|Qtg7?6B;|0J=j>^U``|}wH*dhYVBy|-1fVLX_#sZbDw7ZJyY^vmH%DRK-fREM(aPr&H!0yv z{Zc4>$to*~?N8&K=Q2N8zFPVx)5R&ATjFc&W;!Vr1nYh?K~HEop?z@dH5eizM7(P- z@V((!XjNE(u^xstRuz8;j*}RBC0-NHbF|;Y_d9-I|K<8pKguaA^=uyiITQq$M4qe( zm>{ilOEYIYhY}16RIMF1*=JFlpOe$L*SL{iT78j$2-d~Q5hb0o{lov}j_rI-?#ZG< zKuY+fggS6Dqj$S@F_DhvZ*bp@s5VjJp9!kR_Ff+IK7Vizo-}+c_ui$yx?q|C0Rdcz z-x&gAg(gGO71$9|80p+HAV!aeJSwiIC+89i1il4(kYNX5W z*iKI9R)Uv03tI-~*q?3RSoI1`dtxK6Uez%n|9e9$BZTr`o0Q96SB5;fO6TQ&#INH% zjc4IvuIP}^yvx<0iFP-JC?I5iSD-tAenOH^>h!^!@g=3z+e-r%+~9nQXE55dgg*OK z*@cuJ1S02C=GkK{1|eDc%4PTw4Q)%;ah>Cw$zeGa!G9#(7&%;dzs1MQ;H%xjR|bY; zO|s2IN$NB3&S#lIr5qe*Ar$8%SH{&^0Hk0&e+9zsoilDTDT7aPFu9F=J#@K~{k-HYWNqV4kkv%0fjvAFhzKxi%b7Lj%UdJb ztG8RwLmjQ+^_#o^1Bhh>st%LPz4;&@VX{w}h&>wnVAOZKjqXZ3q`P4-*PZQa_7CeC zH-eD}Z+0(waAv6yb}}8-Zk?OAdS;8b!Ocxj7Y% zKsIxK15iDhZ=PdghP1mnf>lD|Vfy7%;>g_;FL3pccGI4H3>jQQr_-;)t>;=hh6>nZ zuFk(>S_I(LB?u`3pUQ>Dkcodk?dyq25Rr1Cr6nXhw^?ygk+&`HOg*5N@h7ieqtMD61%zixH75W_|nee+n3#c+Y~ zLcWzNcO_fYo^foX|q~g@(s_B^pC0Ok5NwqiBmYg44kzJunz_7M7kwjGKa zj+za@>1~L?)-JFtYOr5E^4M*`{tK-?GpTu-MoS6UEFF*lDNz72!*yGpTzl+xWmH$| zN-U(-H!gu*&ZIy6X+x>1!gZBo-u?@uUA;#!ZsVZ(3v_s~mW&@^%BT@_ajtV(Kqip$ zUed7Gm5P|$F-2?aH!C2t6peX}jzE9&vnS)G)9$+)@XNery)dr@zJ7)kA6GWe%gA>h`lzHhoLM zYWDiDuIP93!v+r*1$4Wz?G*rrlLHR#I{d1v0gZ%g0Y^42Ts}c=z+*PU8|89p8(cE3 z`5;xjd+SLw2^JsqZEd*9r8}5X-P$+p$4PWEhXJ1Ot0!tbi5_L$mDotyZCOe<;9`1c zjeAy)Z&FTtM6*wHzkPxa5DiUR5_BHu+6YZ~=sPWE=JAxd||FoBa| zhKJ_@XMg~z*Gsu}XH8XEU+Kl$$_szfBO))rDU94THw&s>pi3DmX$EPWNlrSV+|=F+*KH}agiJ)D$F-WtjJxT$38ZV#94R~iT0y&w6W&+5+)g241e0BVB+C4c%b#m4vC zxzBqFJYeXrkK#taL{R!8<5VB8WBB@C0MvMz6m)JA&b+HO;SAUF;o%^%-Fh)pqf&~s zWvX5Jq5@7XX>$YhREMtVkd#}bi{rn9&^#1aas)+9tWoI))~#ijC}CnY6H~f~s@%3I zMgm0ZzB?5xDf3XE%Y6UtPIE0r+z!}3pHBll`xeeI)M$Dn=L4s|8m`xI4qj?8PM=s( zbE|D~?VGOtl-!M95Pik%fC3?*Y&{zNAUuHaT4ncPh-vI&dYB$9DIq>7M!?gflwh&= zH9F<;*26U|C!*^t7=17yQMuH=lnv6~?7TLeW_Aw(1@IG$iSl;xw)hq*E2A*~mWQIf zh=*fLS2U_+cPUrErU-ZmNJQ-^VMX3AvR>?@*bK6ph1k-OwH^?9kT@F5Ci5hT+Yivg z-lQ_%xcq8EQ(mOwpY`i5m>*m{5$JJ#LxCg2vkQ5^cx6j>C_j2A5Az5+Ud;G2W}fNg zZEp>J8Kb~q;;AR=&H)jLPQKvxDgz;>d}(0!$dCAt`5UF?)iq!e%5C3_0D8S8v70Xf zx#3bU{V~s&9P$0Z*Q=$p;4++TjMW`4b2Q{Xk_qI`_AkT zb39B{C`(BTM@%T` zFBww%%YFr=SVm@tB15d@e9LGc!E&A-^YyI0*LwoMg-rnI84qCh$kXhv8RJwe#M%C` zEGr}gdnrPt34GV|Y8!TKgcXR=sGv>=+jL))yu#@AZqKnn z>IZXk+uo!ca3qkbW^wgz0({$BF5ReX0e@vP%5elT`>v1p_!)`IY~*gUOsOWE;Pio` z%VA*rQt8eKalEZJx$JXWu5Tx+D!h?iB-B5qg+Y94&wsabcCP5X5mD|vNHQBVrUlC; z*du^cdGF~i<#PJP&8L|g_e)FZb-DxcC?{`#oa!}BHv+$?Nj&|RPc;x7FRtEz7iM5H zhrtV2j#frjEcMOK_IEyOIwA$x)y0Q}E&Vc=>C}9gfo%DVy%AsO5=C8A_WnyDsU!pe zRpaWF%tKhj;Nz}upXo-;zTtiQ*?aT7)w>JIW;pI`lE)r59O-;j5I2WZhJFQclyx{is6(&m>kd5U@8ys{2t zVeZCxb?yd~4olq5v#775{7oos`-gZ=X?t-KW$gh)-8CeI9Qr%3Q)(YOS0ZYv=pnL; zuzwJ!eF-cExT26W4MF{?mqJ|>Gp(u`Kz}0)Ee>5aA4ja|oqVZge(>MIn1J5{&eYSN z4Ty%>K*v9Po2!?7;R6F1%tNK+-&;VZ+zLGvIQbWC;!V>^@zKc&uJI~fV_yp?i$+Fo zpk_1L(>pM>DMjvka-rF$<}p5+pq%kb$;te}buExm7^I}T?fNBEj$C_NzAwT?_V>ox zvz|QZ88)HZ%iMqQK6y?tAINe;_xfk|AUo4WnV{~UWef?Ho#Rg-Gz0rCSxiE+yn9>1 zx!S^sX@&OLa}nOHQC~BQ_RsHUyQI@dj@ zz<5qkcs@&ZAu{A{NXGa^1#iSH3V@WkJO-yi0PzFr&=O^(dteU2Q^=mC5%J>8`kR2f zW%lU6|AaSvsm#R19g8IxI+_rXShdt1Qsdn!a|dX9{uLuTf4kN1M=F}X8jh{(?h%5P zX6gORtq29CfCMb~{?2^Bg;5o8HOA(LP#6M>@OkII3NZ&t3sCGp3rwT5n3;h=3P262 zBb_-1Prk!sm~aMXc1XL(hlBNbox71&!T0H&jXRJ`ULNBC&_qwT!lk%9 zIXB&{ub@L>nFgwZ@{i4Wrod9)Yo>^_f?61Q8mRS(2L1%_H8ON>KF5~{o~O7jcBJ)K zpc7~hj$5drg>c2(0d*2F3=F;^@YhGzBt0NMq2L0vSAIoxw&yTAOjlX4zIklKHPzW-EH^|dCm9dY)4Sn-@p2C(Z7a`qlSD0 zi;kDM=|f0cbp6zS^a5Pai)06S6hVlm?4bDdOCAJ){&Ee78xyyCjUi!Zb)Kv>LR@_9 zB|S6L;Epadpf8pL2JIF(F>FwaHNl>-k zO#v-iM>_v;(k-mHaSmS~Mxv9w1I+@*-Lf|sN7Y8+eFn;XGQvQ!oB;<>Wp8k}3Mh@zD^jJ1be;cG-OHsIBKT{h zkPs+lgVZ3FrPb_o`1?u3&LnT-30CRhg&{OTwYE2e46)64KFk7@vWT4bM8=FBUdv44 zVk|^ZNP@U`TrGH`PdmT@u}tf>-j@?8qksi|%pM`hSI_9dHeWx%meP^S9l$8)WK$s+8P~GQe*?cdY;ooh>LvE(9v=i(45UJ# z;Pk$aw(^Xa!xu203Kt#wzjW@s@ucy{<}=*-{7@kB6~#dF?;818-~HVCxb3mj{e^w` zTLxWEO*l#RKl_GH_-+}dK~WtwM2LQLB*>}a(&OI#_57A>E=|QgJNv2)8Kr}=7V+(m zCV$!hzV3(`bs438o2#(;LG=U(+dR~7q z+;?Z83eJu0VUlPnar!N=0;p>=)$HI!9y-!P@v1TT#JeUa^~EL<$n3bB$lEPS6v6e( z14HMQ6}dCrHs+S_^?R31fhgkc0!juM8(nIBV5XENu}2)_&g_zgv4XdN_*YbpT!_(w z=qaz(N6#C4==uNLymJe@Ne>v%%44lG>`1I&J^#zJjzntgoXvO@{S}d zjTQJrD5udxYoyoQ-CDSGc{kq#iDUw*9R-a~j*OWO1U}AFSp>k1mWDQ?2-LH*B%Gz- znczJ~d48lh0L^r}j5AEmaz|N%1AU?M{uChVhUQx9tTsv+10b@Y@bmU4i`hjGaoHvH z#NM#>6yOSgJTK>biI|O6oo`ZfR`)HN@F6sg_nQ4v)rv5+z;GxiP@(e0_?oJ7An_#? z;PkPNsZ@1>!}3&aF!T1VHN<%XiL+z%tsFaum<`1)I$G4Pv~1837{|{uL9OL@pxe}q z&#(Y9;2Quy*{B6-{K&x@eFEhX@xt5$a1ar)sH+^J|JQcKV9C$DRd zQ9}vuBdow{V4R`;Vbw2j_o00X6QWzVTPzrNxkcRuZXVPb542@Gf8&wl9AXv(H8$qh z5fN7IsD_*AAvO!i(YWsf-!v)1)~Lk?NeUo68KY}`?YK~y_iDVCuENFZXxW_!pu9_J7)kVx4+s)wY^$|sk^ z^6pMvn~AA2$6;SiZ&EV z?+@dt{Ah=^I*zF)c4>3#jy%az5%5>Gvb%L=CL79qXq+KNvU-5K+fz_IBVJn#0g?u- z7op{-{NEpetGLTRpvVG3s6V(jwK+%;TiK;y-+sB1$q$!LTOoL`9)75}QvObz2EKXo z^UgG|>i2YlN6I`2Rhb`QJ>Eg-t(GPT{I=D;0Fq_G>0&XE6p*LVIhd)^!(4bC@uU5Z znKCkAXZ+(?EQif5UPi2p(V?ZGFcfm;7nv$1XsZKcaI#1wd8|pPA$SUCK>$CRfyXT> zmV?UkK10$!0Mp8b^P`I-Yr`c@^`{3s7Dv+SAY%tUA;7Y5Z{>2ZU!KawZ#rctxf+~N z3;IGgvrKZvI1Tth}zpE#2DVS->%Kf<)!>ljf(|C^z=`n)L z`$z&+fTbXcD#|C`&-SN(QFQLh!yq*FrRH7Q74e1sc`8j*sw((`Gri%7t9hh;W`(pB zyOdk9ItpEW)4=DI&{Fta6`Xu?+;|WbuQ;?PG}7D_s2jy1&)#Z{;T~x|2M|KJeN`vJ zpWu6u-xXnShCg|UA}u}V)_F>Iw^5v^a$)9T)TQz^hIGQ=AA0mnc z`uNzdtyjSShxT5X_>$_HhY%o2Q)=>!P4Oeex~w_9|RUa z$r_+;BpbQ4v32X06GGEmJ+;nNd7k?$_h%A9;xhMKy(yA3GX*jCEWd z-Qh06`qX7X&yK6#6JEI@Z*rZ_-NaW4QA#fyHuw?E%Dp;t;LaVfKz|=Y6wP#`EQM)P z!&E*h==>-i$WP zocDxg1wZ1U{VNt_iRcsxMt*T-oWe*DWm~Lq>8=O$2LVhD)a(w)zSGqukm&&j8|YQM zFe$}7$4wL|Q{J{P^+XfBc58c5-!OkN2v%U)to^*c;EW+z8`GlZ`htXN#h~n&4t48x?@O-NvETyJ70KS zdz-fv8QJ(MB4Yx*8)%sx_k6c?Npu9%qfy>UQKA?$x{D%?~bcg;wW~A?I3mlOIi$1WY~s4yM$;TFoJ$ z<$vKZmWvlrjFnW*|Jvxn^$45vW*<|{F&>mmMSlyS`C&Bojt%UtROcSKnmOh;qEuK~ zolRyt@lq7TeKeNmQb1;Y=4qs$MeaU4yDwXF9&J0Td)HA=3tGMb6~fQDsfUn3Y%}mh zwOlJ7q3>f*N<~L)o(dBdhj; zK=H25-mPN*z5w(a$MZ7fL7y0_);ja)Uf~iw6#ODPQcDANz$d@}6jqz{yu+fLIfCG> z`wn*BLV+|AG0Qbn2x%IE#G^$^w21<#ODQzDBA? zC66GA@%Y7WL-es@G_jBr8YB>0M9y_X1rBAiWia(y~TzZd3Z?SSuf3AKtu=G1`-k1iK>Ug8xFO76OOG1SZifSFU3=Y2$i6B$x z^1AqS2Am|*gIeUQTPj|P2{{)Xqqgwb@Er%?2LZLi#N`%CSHo`;`OQO511+>9K0pi_ z0qgu(h&Jh`z^eEq;@I~D=qq2q&)06Fz0};(!)OV~?;2<_dl(^lVPub5+;VBaLRK4+ z599cep=`F=v+I31B?xO7N#g~&m#RWxM`PXD<*LVB>2D-L_h6IvQmm~uY_e&zd{KaT zXw4mRG@T!%4n~8VSKS>52;}J?G*1bD^zZvUc?iLJXzklP*`&d&EpKta03J+ zURgHSFe3A#Wy~`yv!yJS*ZC1sBT;h5+;K??uA^d%GwGt&oqjEZ^kmq76o8hC*)n*` z{9v0>;3fOJ>coipt9=Z(uC^q}HnO(LBO_P=&j)u6FRig4j`OJ9f!KaRmT-t%Aj@4t zo6+z0ET$%n3?S4$H;uC{GJ+-ke9wXOxJTJ_I)42}?_plM^;amWfJHV0-#E$L_2~lfb;e%`pI?Y;mC~*o_YnH4E;reByD1K zRk$w1#Bo_TJCPf`Yzrld#0r({OA<>2tPR_g8vsZr%RLuT*&?r(&>)d6yT0AJcJ%sa zI9zEcD8|X3QH=37ulGNNsOR!+m#`Hrk3yMu=$-rOGYmte1wqQ3@!+|6m$I6vY7o?s zu2*MO-v%PAf+8~=I(FZ8>o(9>ZvjwSU_L~X?+byfbIui!itZ8-OGw{t*ZWTUsjzZooie<1!r zKp*)j^1gqJE8WYm7x}OwHP{jVQb>p4Jn*_x8bIGQ3%BKcZ7bnH;oE)p zQK&VXjQ+*_A_yhik>3O7moDEWrpeA;-0USPKZ8jDacccI^!9#~dKtdW=c zu_4P&2jCot%?r$dri7BnEi%Nh-e+pvde@AP0|L1qW6yhuU)(U>;-+@luJIt}NeH^_ zW}F;)9#k@?)((!KfSAcRUh|Oocl@zvg7KDlZ95FATg2w-zktg!l-gCiNy1u+76uqt zG@g_MPMtg+dOv!F|KjE zpi>O0V_x0vljPZ1{frrH@=K<$NOk`%*zo7Y_ND7NV82m`N1ZLcsle0fp`k-ikWZc- z4bi8TN5=Wrxk|^t?Skc-sQ@jutcKSq+$ab2a6Qoh-9Lz0O5yN>JR3$pKe|N~)hB`8 z0P0YlU%=sIIn+$&Pa;Xs)RJ#l_6ZPe7=WCD-SZouD&_5*eU*c-`Jq`C2S0*J(z-)`$djjzx!fWk`Ad4W0gjPK4+18JNiMlhBrRvT(Z4{>Fq zVZ&(O8q(w|w+^FaL3Fp|D3Nyjeka+&mt5lX2B_dd2{If?zCa=HLZ_1a>{IA=g?{GJ zTxP`JJU0sEhEP~+_%KhU8f}fPT-LSm_2z;eQM6Go6(@F1#NNQsTmY#gxu#H@{0?|p z3A8c`1sZ7Eph*ZYLliqdm7Yx#$K{&52NWS8C`7HQqL;*Tj!4FYO3nK<8B0o`%7x#% z-Wgsglx9Du^tl@j`bnjJe_6i-P6S%C-|$KxUFJ}Xk@qc2J!-rDIje?)&^EJBC4+g< z%5HR%8*-ru=#E=IRFwi{kP_|cC&2t?gcHe-LJ~tfb!4EB@Q5*^K?k~FXbk~A4)~f- zyH&xTMXMv)XeQ5qbX}3Vz{1#jxZ)B%=2+~v81Ny~6`vrX4b|+N^08m-7+R_KdkZ}) zBcMYTGu)p!*SVwg;6A0AH-p@TOu@1HfRIf}OD?h!$wa_=Ck*#?nF3}Ie9Wwl!A-)I zd(iDyWALT{*eeBN9CzT28%@vy4j(eKU+s5?dlhqU@+;P3too2H(^wy3t#=>ci-6y8V?ofxu8B(mYRnWG(B}7VhCtL`I@0sNA?kk+pZX@fhXtipBK z?3AQ$9ah7To@Q2ccDt$tq+*kJH|AtEwcJuYW}h^QMNirmpo)2s&rm1;1ISZ21$X)x zPOGx~ z+g*MpZ^U_;3yLd<%sqGqzr>Wy)D5&Sf+mg!(m~6-@-uw?RR`OY2NHl`tJWy@M&aMR znE^@c-SA8n*R`kci3Z##Y=}aCYOzb}Kyl-JI0ecZDLaa~y#p5A2Ws5EC?4 z6+?3*@U~0T`jeTAXmfH5#>CZIYZ+0DIp9L${YI#ubmw^p%ANs+3{$Q41Y47Ds1`25 zw<&~VGCxHxW_vF3=%f4+>uG|mTSU+xA}YnnM-*8wHy$dBYw2)3klbOk%^Fzhz#G-4 zVT`Tx`t0Vg$g+BhuODDX~ zHo@tT9A;c%GWev856Xz{9<<7iySa@&OC^?U}4%v zvI4rLUEE2d*W$wyD~?taYt>gHijB@Kw{Ge8X4_|&w=r!wT|GR0UoXkdrT5z{b)?H0 ziWu#=Kd&dC1Tg5hRsMov+B+^#j32~)SMNs5BmpwM%?*W(=Q$YXxQd1MSbOBR4uo0K zANn{of3WDDrsYE;BEY`V(SflAi={aM zv2kL|dbh|bT;U<~2fC%;pZ&Dh*V19v+KxezP;>}2Z?uoQVdeo8s-ZuqOo><>{n{n~ zJ}HDIVCe4o(|a*r%9Kx9vypuyLbS4`_sMS9uhV;@yXNqn;l1FoE05)}iGR@N#-*qX z0fiCbqqAq>=}OJi@4k3==bK2*(`%=X^!{_mA0bc?R=N@|!}^G`eS#)Sh4E;~(_RKX z3ips(7mSc^qii;BD^iYKqIq*Pa;Cw6RpkoZw|992=TEfoC=xN9GrmGP5X#eXma5^K z!$%&=ds8}NY+_CwTf5~94?ekDbhK|JPrE0J#6=`!?H3)TQrEll@C@hh0SZv9zXk+afUSlYeX;);=$#N_^ z+SJtjj4;5Vp&nTqFTKPcy>CAmgs)e-4xg5&-`)vLQDMvCu2&w#Rjv(EQFP0cQl#CX zc+fa3G_}$_C{3&1G=?wn7=E76e_Q`W$WYIx*P{u??-|_k@sc(2A=d&>zhv4h^*ZkM zcNgO?)fbEm=QXhv;Wcsbg=2HCdSP(L+E%CJ3ooT>!Jnz@tL%j{9-rlwYqWcz8MnJc z$XPAcI+bSaaBh^rM|!pHnuE_)XUEeCoJPr{NN_f2xmoB>$L}#0C?eRO63z#{t9v>l zzL)fC!-9C4v{1X~UX6^A%kZQyb?LF#Gya-!O!gofknly8T5HnhAiY%2&0WofE2GxE z4P|b8o(&FpnU=riBF;9G-H+^S%{)P5N?QA_ohrf#5iO}DzfUHEBJ9)sGDpUe!w!!3n@do1Br5q2zr_em{%A$(_xs zlTw@KhQh5%M{Ri$^}EGD1xE3h?w-LaeXG8;U;6iSe173&?6fyY)@)0P3_zmWtSUC77}4SHyZ}CGrKI>))Sg6P7aES z^FQC3ozRPMjJ`k-?{1kVC4H77D(RO%4AyOziLiI-M_yS0Gib~SLV>+RFQeZolQ)uz z8C2JIy?lSlW@K8x7la>QI>o8)8;!qNKE9q4b#k4%elA-p?N#fPtPz5+Tt)xC0EL&u zwRlgyTXRq=Vwns3IpG{az=1X@_f)D;_tcF6h|XaF4Z5`ux})+o$0v^TO?H zW@dSZS?@2;4Qzhi|NY>C)XD1$?n}kLxtV8nv88vPwO1!TVJ1a zB=1Pv^4%En-4V|YagutSj`wV)sU3ZNclXOJbyW^&sh9GnXpTll&}Jqkwy(=YfnJU= zMi@+%R^a%p3R>;j?J zG3n>TiR7#prm+cPSN^KHR(s~OuS~Y9hk(6C--vFQX$&vM+KUm={fmNVlVk8 z`e^+q3FVC?oophfsXMFMHY`t}pL0IJ!>X6@kzL1wX=2uXHp12QN3-Tf(yR;POr5ZU zkB=HN4vd_pudjv=U1#f>Evw8*mZN!K;@$ZCuTGW-M>I4_3ITw5Gi zyTg`X^{W6+Uyz;C<@?@}(FmMQ%-K74Qk{&NO@y*gfv-g+H*KHxVY>C^&e4GdrU@lWy744R z&h(-@ylQ?~NW}etn6%UxzIu&!RF>?ppzcee&o=w>rKAflT(FvPgf5zdgwxq(tr2P; z>u6Q)2K2|kRKkZ6*74$03j=eWH}%(Rfo-?+xRdg178Li(@T0o98D@s-pMD$nT;S2C z1`QnX1oS(onZ!M>6hi0u#?!4`x7{p>mm)#Ge_V0mYkuj)DV^lx!5Clds-o;SQ~-$k zBE}`9?*@Gt?LQ5kuQ=tIQW>?>^5BJIM||9*mZ^nZ-_YTc)~x|LT7fTfsrnSW+uiq> z3EWW@!#N_%YMJyB=JXx1XRGe2n=TK+UIp|o%IZC@VrKI6qNRg#PkJxy3}7af=PF_G zc7Fu1?}QdBvU2J zs~C zbzJnBXW_t4_rt3v*%fW#{czJ0BiwJva28th)?d`!|@BDb_KWSNq4Gtp0P1FGUGVfW4yJ zYi`?VUwWMrlqpNQY;0hL!q3G2WOI1)fd7ZNl|9U-A*&Ov%CLo&>c0FK0tkATldeg4B@v?yIaB}+}K#c zpLn1-cam9YUf4hJ=gN=Pg4JmFXshHRcA7my6T%rOG&!AZu)@n(kt<0XkQ!*JziBIe z^*mpT^O}3Xcs0~8SWWPUQRjGq?Ugu5ATz(b#>`$oii*MqN7>WlTJ+Ns&x0c7H3Id& z+&(~tkvp}+&)TjvMfl$1SAYGgkW1WmWfkmX=pFOhEQY*&KnmSIp9l)9BZYi9@lo6*NjhWYxg-s+MFOlSwv(!NF!6uuo=Ts7G?20r_=80 zbZumVQRl+~awgsMG(s?`fWB#qRL6zXfaWJC>bd(OTyC0oP`h>UF&3=k^?J3>SQeC1 zt>6f(-gb8CJmC&VsQZ7~xzczj+qOS$%dJL9ii|8Fim}|8Mp>d#cCvLV*|P5?jeV;m zl_Vh~$&ztf!VKBB%Dxt33wa1NvX5mj&vCim-|v0jZ_kJOYAFKTM81N3+q1Y94PqvPAR+NIat&z*$;9A_yu}j~T z7Bf!5pR-Iyf-LJ^{$O*w<$Pk~pBL}7l!N)qg z2MTgHxD>G<$%(ocBXzeq#|{W?=BZ!1ESrppS#|ik$Qj!c^)W`uf=Qey6$c=yNJ<1o zcd{rGRHjKFVblFZyCW_-Xr4O{`UQV0kw0y&CQ=`4zqY-ap^t{V)An9zAx8cMSCZeN z5!Hz7yT<8ANDUrapF_3uqLnUCl@LB1iXh ziBJjYFFdbpGgdjHQUM{;#4HVUf^NYMQ~TtWk43jt-f%)dXj9O9B)=fl1mPiwe5cBaP8`O&vjS?nDj6a>Z?b|}`_7uUx09nkp5Y717AQ{N}I{wLlx3jML zk@3uf)NhfL`_d3|m04B`c)Z=|Gp$P^Yhc!0gFGN;j;glGtX z*hg&!{YOgJ=fC`HxU1ImjG%*3mX^~{hqq(d3NoNH1FwGr$@xbfQb8U4k!gw+3O6W46p1v!IRl;?PjeCBT-1X5C@U zoIZP;lWd)TJSP{ham1Wbc@$+SCa2-l?BD|k^8z3OfaHcyZ2rjm34e;^kVCcXZC%e= z(H-qx#@2(f%CStoI}>5=;QQhtds0K=WCs(@;jcN2V3(^tgVE=5*#RUmE-p}e7{*4c#?uDDC?;W zOAwh#+{fb9Qy>wKWtu=((Z6{Tmg}o#*YYGUamo9u8)R3D%wlnc>iyCb4QpN`HB}=s~%nw=b zfytr_$fn0tU7C4bXeFmeE~`dNH{SKGB4Ji~5)2uQKhlW{YKwly;P6&$KFjx^@b0E) z17%DuOX9Ac(d{`%ByZ{$zmKvo`HpzGWHs5K%h#h6m-G%H>V5VbUw8pZc z;ku~nP7Q3dkNUUQ+doeUNMCSR%Vk#cBJMmfcfep^>4Jlpd#%Nm&|f1s-}_OM$vlw6 zL#qmJk)B7s>AGiACWd7OgTO7{-_&0)`4Z2A1tK&}9#Uv%P}#Tl#>)0acwz!6sI~k| z?FyX0RpXXBo=p0w*t1+`_I>tPEdzN(8=!3H@adtjXQ(*B5L(^68@ zwq~QSf_`>glFj=xTkizOqU4a6Q9!+9>p3RnL_BiQLsAc> zC76;%I~I%vi?kkQq>w8G_Odwie`DGYqDB^-QMJ8_kL(&?cr4b}6=`GC-Be$%D8Y$h zwec76dLqGYrf^*WKHdV_~Cczcu0GAH22NLKA^v7QV=Mf$|yC|P%AR7 zkXEZ=-`AA+>)0o{E%8GmMNJZ(x%t*ta!1p+vu3{xCQfGLT#PsMv?zr=70elwL8`rm zZubqX!;1%PYQzV?qK8UhQ<>U^J9rl8)+FD8bO@*G7_vx{F6a#T6(t(WVvppEOs^GV zQwL0z?bz23TkYT$`MhxN1sP8By6p2iC0wdD9y56pA0_0l0K?KYk5i0KK0yLa?%P%n2g_$-;)6^gDE^HP(5SAeyEePbyq%C zLw&eL#O|pZP;WFzu-n?;LB8K;D~%G=*$LuRuXW%|b(W`w&mVaPUQ0NDfpKsrbV1A$ zr<31mdr1*K5YT^BZHRRb&gCEKfRv4jLQsO!_W&Ee8)6V^x#_E(rY-k_Vot5}L}XEyJ=5y^%b zXFF{srEz<~KesbP5MG45RmU+QTx*LSEW41xI#}r3;;KVGIltQk!h^CekbMiiYrAIe z^4%D-I`bF`n1zCL0G2cTxH!;%UCNWO zDk4r7G=R)mJJj_`DHPraiavwtfuGE1;Nj!?blsx4 zmRQzVO08=lT%&aX38MrXoCohk+n`|a5=rqIaYJw}Z{StN$yBNp?TTGZ4Vo2B!G=VW zZJ0AU5x!T(GWvH)2=|IC1LNN4pT2Sr%8E9f zp3xe561x50Ya|o6wLjZY1$saJ>?Y(=YGqmMU(Z0+-N(hXQ;co~dkY9fmb|h=_lWhF zSv+|FY^0Q2vFk4$gOA{P;V42}%Lx=$p~^kye;F{O1luelL42nf>O=SqJ()ijRwR!c zU`SsQGF~a~W6TdtZ!~w_#?245#D-_fbX;M#roijwbpdlm(-cZ47I`w5N+c(dH1Xq! zl^2_Q1=n){E>`NnID6D9;`VBdI%2R}(N>K>0&I8Ydei-T=-|j(W|3dk(kOQHc>gI)>2dLF~e{rec3GW6I$E zy{h|t*UqFgR0|qgR0?+Y><4CH;iHuWi0Cp47L`HcmVoYkjBNrfJ-K>yH+Mo;o@dC`j;+3Y? zE#ybwp2To~mZ-InXcHNsl&$mKf6RM$FRy4slnm?MkKAD-ChzTpZtc#4RudG$SR^3UT1Mmm)OMQnQ(BQ8zA`j4qx{{wo3IC>Y?rmW zN)?#p>JV+VRLC^#^QFu-BNzxeI3hq4NZz`W`1f;ds`p1ryh?-lvyfNzF|Vt$&iFf@ z1ecZPRfPB~3dvyY&-!d}2>z%HwW-pxZW2#t@6GhtR_UFzb_2HtYt*gQ03(Fuy=1Q+ z3Z1m~3b)UmxB8gRowE;e)1p)-8b2M4yt6kr7ZD;XqY=NevdirxCdeWFr(|X z&UM!z&!cu|y6z3LgQQ8dGlL;(6UTu_pR1m)S^akP^iqJ@5U>{jbjc11k%)ilSu|14 z9|ql_oFu^l7QU~kfA1Xku+y}pe~mLsuF9RnfFP(OJt%`F&YY6M&835c+1IKLLBjcn ztR*V#iYCu9WJ8K@TH1Q;bVT6lJ7jFla##Xi+vSF7%;CaA1+M}2 zL!ce6+kC9j3^@z+6p!e8>rvsfV6fFA8XElb?9^`4S8}1u1yZWvP zSyB{=8g*F*{`~z9*e9|98n%QZGW|0j{=>uluZaH@`Ts3aJhF<2(;#;+bZ