From b968ac63802354c6bc7232708c8f9d48cddd3d64 Mon Sep 17 00:00:00 2001 From: jlw4049 Date: Tue, 2 Jan 2024 21:39:21 -0500 Subject: [PATCH] feat: initial commit --- .gitignore | 2 + ico.ico | Bin 0 -> 121213 bytes icon.png | Bin 0 -> 11965 bytes poetry.lock | 223 ++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 18 ++++ send_discord_msg.py | 50 ++++++++++ 6 files changed, 293 insertions(+) create mode 100644 .gitignore create mode 100644 ico.ico create mode 100644 icon.png create mode 100644 poetry.lock create mode 100644 pyproject.toml create mode 100644 send_discord_msg.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b86df59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.venv/ +custom-pyinstaller/ diff --git a/ico.ico b/ico.ico new file mode 100644 index 0000000000000000000000000000000000000000..7381a4822f6ba4a274fde0c74dc6cbbccb9d9f82 GIT binary patch literal 121213 zcmeEv2Y3`!_x_~NrB?v~LAvx0#R5bGlp<0^MFdprND&0mE9nJ72!Rlq(gj4R0tuji zh2Eqlf%HOpFY|xj*`3YoW;fYD^z-}ucb@0$ot?S&^mFc=J9lOT!Az(rG-@QE>>zw< zDF`16g3zIZ>i;$zKaXR5`>OwU7KCq_3xbuE>VLOkg3#_IL2z_b|F3N(jI;v+Y{b`a zvLJlrW+rsQf1tt<)o~Pp0K84>sX+SwFZj9QG+&7Ju@R!Yt!v%)v3d4^ukE-PKigI) zHQaGO#?Ow&#<33Tvdv|*z2Uxy?Vr2vYr7riV^Hr*oWK3s2>}kn08`a4jK_G6by$~e zuDdN1fbS(7yA$hYSAseh69XK=la@Q&Pg?Gnm$bsML;~*P7|*c|>#_~o0_W6NfBOQ^ zDMFiE)EARhdy2`cmWio>&Ju8+$E0(p!@6jb&$jXY_Ji^NA6-!G?#G=$BF*D3h0`8ZVlt|}T zhjr2BCfg=1cdV5X=(O+QN*6IB$W_c(=PTy?aZ1cNwolAm;~@d}d5q^+hjrP8ZPSBX z1pHr^j^kOuZeq^rWnwNMKg3-uSnDYP_j!!xSci30ZCnKG16+D%u5yd#`8?2MyFx%w zsFwuX=P{mR9oA(Vw#``ODx|G+u>{`0+|}-}`D;94QNOSlZA;d9OTc{|<2lx0U9_=a zTW-K9WUpS;79dQ4|EisZ+=)X8O6}aTy{k1R>g8)rReuXF33^0L(wq zhQ#x4%QGs*OuzqD4gBS4CtP=3EL?S4B0*(*US0Mz>U}L-Lk_?0`Aucj%biCb!am0m z{Xj?L@yX~DoRHH)051U0-<0(~x{Y~`b<}l3*p@hes}pfX`B>{V(fmgpA==x9bO!_0 zp=}iK6rnE=3Fuok$NJmV1_+m|KNZe>^RW=MY>64++~V2NF`kp^psw7GIEafli5ooB zK&hb{MY<|zh0+K7rlO5ZvlRW&b@XkE0WYC%848#Ua07$@HmQO8JjQcFS(k0l_6GPa zB`?HD+@t{@Eg{ltsZ6^g{vQCJr5f7)_IbduBR;_XbKqPFxQu=!8&C=m(WhzwkEzZ% zWV0^Yuq|+G2OoJF9zcV%0Hi6z1vrogKhTzC7SSdTedrWH{`Mm3itzysX=s-!)0JsT;{f#2^7uiw zMBgio1LXQLAH+qR#0{Df51_f6^uZIyP&VL0qK&!|?`%svDU!SxS1flD<3qf}gq5z+ zG4}OJU_G9b>Y#2}TPKY^h?_i+7UiPgN?WgTx+P1Y~ z7G%a)O$&I8=U9hz*@k0U;*fbDZqO(Jt(gEJX@!%NhjB~*^n{(_(#SJ(Cey~4QpDI& z8YkxhUmpHryr}~9_*eeVbF9NLHQTVQh6maKxJiSwNK@W$jPz?mNBd}V^2>H?pMz@+ z>X`CMbksC4Zk5L3a>;SH1Zuso4cp2*sB|Ft!amX>O?gWT)QtCML-rENo*k^ZE}$Gr z+A_T&(37tNxGx`9^1!zAPvTPBp#-*_&Fh0S1%2|tV}SPH^M))t+hgpmqOYJK)8+L8 zLH@7gfjqOV(hkH88tq6+cf&cMAk<3$pN^nk3cl0Owm_C$#!Xr>-C|tFNTA?Du18z3 zEpZSRaT0gI8ZYVENS8kUqmGan?A8(bx{NjtV8boI@hfziL%gz_q%U7X$)&Cy*oJL^ zV=HkHCvlU8p)D&|r33iPAo$Kfw7m-){=oGq==+2IDbR@p%^W}xuE9zO+~+Z#V;$CI z8@445;v&vM=(i&J&F97E};C2E$1<!Ycq!MB8yyvuYzm-Af@03nzc?auiw z@xo03b4?bQ8?1-+o#5~A6oLEdWA#`^47I_0D(1-i?b&uU-~n;U_+>qjHh4%< z^U~v{&lf_J&r-c|pbq)233wlH3%(-CysLH1xiQX>B?7zwJrV-!8)B}eH{d;hJ77ED zB;XR@79dg$+~+Z#V;$CI8??1=NL&CPK$4^zg+0gvc_B~a4fDh`b?2*boV?cqI03Si ze9OE8cQN1)U^wVL2e1Q>pJdFXmSE0DJvVA>=}^qJY8=G%JaMaO6zkeUZHp{5kK|Rd z1LwKn@AP#yK%tU%wZ5tIY``k`#x&5`0!RVR8h$y4r~%INRs@Q=WimT(?k|P7NrSWi zIRMG#)FFLJEkhxBm1BZ(0G@=6m`^nEDf140%>t0;Z2-(!m(Al!JgesxImf39oV!)c z^Oiryy7HVh@u*~x+me`sh-p2d?o>NNm?Ku=Uk!$I`Yc0DCD?L+OS8dBm;Po`2(*PAVX6C^Dm(;&Yh5T z&iZIeo0bA3-TRuO0cf1n)cLI%?iwQ-!anb*`itPrqF5EItVK6d$Z`785{&ymL-fAMhOO zu&&ewZHYsPQ|VUK=+}o}BwU z#&h~M;v!BNze)zgiGCT1!0QAh|KOYVTKa=`)x9+Xywj(7e<>Dga|%+E^|2xr;&=k? zhspE&m{*kcd5q`uZNx>K#4XX##JOG>Qo(CK@+@y^{#(LMR~i4bn<}Qt^e)9Cd>HfF zVq7KsC$90vy%Seyj$WFl$3Bl$#6NKoH{-;h4B!nsUctJk766%j-e(dL{T*t6_uUoo zj`?xv9*D{puIW>ybiXYL_Zu;{tOe3B#l1LXW7+3;e}yzEk>Pvjy9Rldw*)^2A!UU# z@7vf({HyZ}{ZZDt#5?rJ`whJRm9%SvbYDuz2k%oQf4@;oho50ySPOWJ=U7L%@jr19 zr}|!o0U1>B4E}5Z!b6|3`z(}$#{jP*f91(}Mj!9=X9DVq$v=E2=H0(17NtLw%9J0r zp#M_w&b3!s0C{+hb(C$A_kJhglJQm|LoRtFueuxf=DoV7kcV%p`cU|xl*3gyka%Sp z^l9GvNkhCPp-c+(6_bPArTc=oFCg6?!5n$HlIM8ukagK63HOqTgSezPQR_xm2I>Bu zDyFgSjy&q&AO3@Tj+W5<7TIsg?l;13)VN89zOCgS_%HJ<-}5t6QZCk&?*+0 z#I0Wj$p+EjtuuKvw1IB{eTXG=ze$sC^!SZF-u3Y+-Agqfk0gg)8MOUK_j7e*GAM(Rf6!FK!71?7#3=sZL*N_W`U&ztF>xR- z6lwh4fbL~o>+-GpU#=(1plbtF982p1iX{HQ19`z(4k2B={LMjohBNWW1n}0a~XJ$A6JFcsLDyT97AW zH}Edq6Gq#2fFm2Yih%O~aL)ssP4Jy~&@7edYw@q(8TY_Nf-HwDgIr&3Ph7-F+@LX^ zv`CY*RXjkSM)t)bf1p3DSiQuPL*1gQD%)4C5 z$K`r#!?wf$T;BlaVB*HT`KzQwnxrl9P=)*JN*Qt}!wOrh_jd0NoPo#@NuW^(T8BV$ z5}-Zk_XIC*fv;tN9pLjM;1c-0jWqy~5@4Ulcn)>81KilAFx0ar+P9Z*0Vi>j25FII zCdQaK!P@J_mHZjI4}6rt61WF|hA;TP4Vu}YeF5MOUPb^K6tDBL0FU(m%>Zr0FrTLg z*l(>m=2fpa)Z3yc)UyHGur1&`aS4cq30 zc$(#hRNk&q#HI=+4VW}w(tt?=RnmZJE{4xHajQa^E{Y9VpHEYvEEXI}g`t9wFU+hd zv=@XZa#2eVB3R-XDo2)Pm6s8$hx*2rQLGO-hDxlJ!fGk3gViaqehMq7$girzS}Lrj zq8zHSl%<0p$ff8A_C?4W0rps?x6ha4FKwUi!2ea%pSnKRX;}dr0h)DMIAD673<@!A zCJmT0VA6m|111faG+@$zNdr~Vz#ZR3!Zp8nSRb~OYeZXOjc6aN!Fmla9{Vj&RtcXm zmDTH^h)r(Gv#bC%kbMt$xe7?Z zx|=*eF(CMXpKTpLwXwrBt$;cbZeLrzGbIl+xrXy9c_1%J114#DGRA>B+Q}a&wKF1pfB9SogFs z&fl&cKt}h-C2R8H@JEx=E}lM*C)f zrGRLFM$bx_$%9&EuAxf-Yy!Lnej7yl+6zhRtmU=CT#wrx&<9`z7z>yT;QNIL+~+Z# zW1aR`htx3M-_9atwS#b9^~`&H;2x=_k;1iQq%G@#rA7y^5qSpO2P}pBki}ZK>$6x_ zT&@4K`2(yuL!179Lx5t~T(6%ijd}|up1Bwpp2TelB%_G z@_JZfOKGhr*K6jhaS}IaJVTnGKNWBpAgwi2`h!vrlm)=GwPW$zfthYR(BC87Z7KT{ zK%73CE9_0V3jv$4Hj!)0hXU3Dq5&mXbE#hQTPCBt_Oz;{uFi;CqJee4Dw_5~q5ods zByc5x!tiga~ycs3gA0CwCt=U zC)Nzg>%OJ6QCuHY3CQ*3wZ}5PGJREt%robSO%$GYbr&|D2*oNC!x=97FIl2KZJ2>Dg(5X;tF%f}71Q|h8j57Js@ z`UH6iA#dc7yb_eTL6(a$Le>eCS>Dj6ajp3<)X8Bzy|M>56e1^|2AyjF>76n%AClZ^ zJ1hCuk`ZhFus%u+s7fVU$_k zAT!r`4*)#Wl^yz&*G?A#f1bRKm$J)p8takq16$EBU=Gx_%E-~8QL6S?g{!#lG0{M9Yp2PbgrMig+z87=Qmd_yM0aq&C zk3-y~p?s!*dQkF29yK~p^_RMSa1657QOb`#l-DZekez+H#^>c&m;7Ci&6Tl@v8ot_ z=RNq`gzi>aTqHgO|M&gyek15fUQdm6XVRKvmORFDti!r&qq`9|X^@tZcE!F>E*3UD z@U<~l%Aeq8gXa_+IaYUJ%&1~r74PL_SJ<39Fpfz-+Sg7@!+WF*Z6yWy(sL!`oogTU z0nhPSlahi0Lue!#q(z#fE$czjfx;K$yrA+0Egd*PKIu6{O#onr#~}MGlKBenGAf=?krhFmq_1(~JI+=xZYaO1Z#Qgr z(kI`1ZytR&KQXQ%*2N6IXAf~myJIb&7VsF)u}(!>enOl?i!@2QQXQzr2>|s4*@-J+>r9~K7%=cejUFlNP3nF zYaq3s(@_8Cb6%`tChij0{vIMmI*nA;WI&uLHaw^`|1UrllmOgWgF#2 zoM{+Wk%pW zc$a13&JAM5AHRrMSI>)Sr+yX_HUvs?@i`i-g{=@+hdN*zwj~bYB2MBa4bqbP4?{Z8 z^o?ctknd}3RI&VyLdlvyzTa>K^`?;>ey1r zP}}b-mt9|6W8Jfs+*qSr_DqwWeOU)A*;XG;V|1V#8$gx|Y2H#3KxUZ2L&qQEdwP8@#)oo8*5VuT6R|l$R)8uz& zmgPfr9NdOX?I~Mj+ryQV-@yX%Z!F7sWw~DVdo9@&&wlB(w~oA6pRIXDM7dv1FFJbE z(t-R;m?9P=+o-QC7zbrO;Ibh#(9r_@OJ(9q=OH(rcY7P{3u$}yHHWvysmOAk8!pwxkC459KtWj>U00eB|wltGfEg6HFOl|uOeZPE4`^{A3v z@vNm@zt{G8Nq)86E0VRMa~eJ9`hogAq13znI8gDd_JOMpgCtpW#WeUoJ;+(O8qka1 zQ}8X5zwCNN6Y~n&E912y+3`$+(a+&gH->ef&IO7%(DecG4jFvJw?rYWiq9#bEuS}h z3ARsF`o31&8}fTScCSos-SbMn(5D0KIMD7B8K+VVfOp97B4w%Sma!7w#8~N48+g8# z@`{}E)p3vaooeD&k}boV1={l>h72t5gSaf1u+7ioReM>|YztW>-~wAp`Fi z#`v1=zI_w&=SVqEC+_v;Je}OGlu4GevQpWmoDLMZpb{U*0q^4|LwXgSF;prFd7sbs z)rb5)s^u?5>_;N+#v=EWQvQl;kLQszv92Yv;@LwyKc@P&3QA=ijSdw0)EfsXAK?3s zi@e9|`$OsRP;fmG+Wl zP|79CYp7J#mD?+EN;)X>0oou6yaa=-pSWbaYWevMo=X5b@GyeB0J0#z z{H}tv@cUYPHn=)A=#@W5xM*MhJ9fZBi#;PWl;y&Mn$8KMALkf~UfPm(*#N5nI*WuVXx z>q>3VmN<^luq^-_@d=8q=R*#45wW{OUSbe(74p}DTt^ureZw`8& zf%YHZfzSPNoRSDw4?bTjSnJVHJg^?mlX}*M98UuVL#B5j{{p}=$R7mR*W(%5%>?fA z7|*c|>q>3V7QSCwJhDOnjfN`Ro*O_Xi8M(YJp4&s0OSeZpK{m7dbJ+o`@s`JT=A}P z_ZHyceekj$Jf#8{r}=<$u$dR&4L~!17JX6h!G9m2Bv=L9R~;*>#x~F&+Y*O2aQ+F% zBMpfbXp%OdWn73`wY;;ujJk1q*%((8uJaZUi*>;hzsvPCc-#%R1)ehjX@DsJ;}9xp zv5mSdabyxFaf8MJ(n8L`x4>ZURsYO$$qLr=?&jhB^WqL4zJtCdpmot&uYutEb@*=+ zfZjG09YlLP&+OGi!V&5<5VE%}4DqZf9$YKr23AjAuZX_soJj*F4VW}w(tt?=CJmT0 zVA8<;v&(&BN;C>5Ssm6g(a8&u!CVGDlyMyr(hGgKC<>JODm>3t4(vx9DlS2%FvD=<{0 zBMV6vsxpHAp`$34&|SVcUfj?gYl(;pdK4WUN>LpObtr{8t9#>nA{ z_e4-Brp=@QlLky0FloS~0h0zy8Zc?Vqydu#Od2q0z@!0_222_-X~3iblLky0FloS~ z0h0zy8Zc?Vqydu#Od2q0z@!0_222_-X~3iblLky0FloS~0h0zy8Zc>~sv5ZKu~fLd zY>9yPcGtuE_}khphPgA4-TX~=OxDGOx-P)5jV!*6{206ln9 z7g0Voeei9ICXvt);D1Hb3i*V8Bff1cAy+HNI11nnhyWx)_5$cZ^Zg0#D|MyVFU2=k zRzL8!trt^`-(IPZ@y9s%0N=*|)O+A-7Xled6>@0g(~=wSgQhO16F@k=S>Op6i}yl5 z8R=tfK^^`tZP7kUk@xUT9lxaw@NJG^08hwu9*_w+O995%TPh5Pz^L60BsyB_@J4|RAL@KLmvP1|VCf0rNJ^TasLeX$wx zReRWe0r)%zU_PTSt3cuBy0Yu)M*dIzX#w6ti}>0X>u*~hpr!kN!yoodfChNi{*Uta zIh6d%a_N@3`Y_-J^abh^y0xBIqbgQq#*?IM8R zAR(`hWOt>$q_lI?nu&^UT>KksPafj^tc3(W>st8cz{lY8Bp?%@ z`9_CQHeDa!|H}M8)~i~_7ci!pgTA3vqT4sZ?SQgxKKv8j^ z*j=qN=&lqH2MB{sM?-(j&VTizkhx*zKOy2H(MVfnE!+;lHwgUfn}F|8;2XT##{x>F zoIu$Wd951!;DpKs)^$)m63#BZyl;vJ%()ddg?NC!NU-IaQfbpt&y-f8!H059bG z=VHC>YvTKB6|%`OVLZNv7aw3(AKyx9i*HzUL-`!O2QU`EZ$HcjI3)Pn`{MX2?1v`! zJ8VGtodl}=Q0W}%pq>McvkltXk0mZO&bD}$d;Qqu4(72d%D-z}$z(jfx0e{Ov__o2 z?Lf%l4TuC#HdRij#22cN4>FJkf}?zvc1halEkswtw+WSU$ou?;9-s#7JsH4U&#_54 z+w1bJ>*E#JowjGJ_~SkBz2kiCEdVlkO$mEojBQsFc4z^cJPSKcgq>_~oZo6Y0Js2% z1!MvEeK~&LsRST>{{yA;9h6E+)@2*EB@W^uPU7AV+N1@V4imBeEWWSOBHquTCV0{C zDepjD0sd&3j26nIg~O|Zs=f`|t_X1?y0+7CGC+k7-g$nuxr5|W~ zfa7XyKS+iT*yEdzP3|FH??2{z3G6HYAK_{2e+SUp&ntQ3zCqh-+nn|<0sIb~ybIgc z$G0CPeIc&#ZB&OEh^KbY>l8o$;CDbOpa`ICYyPjYoh$PL-ScIBVZa~A6L}+#^at`h zg)+ni*w=thNV3JjCWr-m^VDt{WdB3015GR_{Xkcbx_Z|5fwm76!d~CPRvp-1Kk8g! zr0)_T#>*Lfz4f!e#p};X^Sv&=nwV!_SKjs|1Kfrfxt$W4zF2i@8t9I|?mgi!OU2xAu_3hB#P)hwgOPQXM z2i=&L`IbtBTnZVlVSieJpM5=i?+A9cv4nnlK~L6zGXVCtS~jnWy`^uh;QJcYU6%C` z75SJ!f1n>TFD&J_1!Gox@0Yp2whsLMJ?P`QLO+r(D02aIsq_O~{mXVy+6w#pZuY?2 z9!rEcBd-xJ+Bo8yn#;2UORnk`S#C?tJ_1m5K{s3aVZ%iP@>;d+*(Ps{Z zP8jP^0Ih!97@JpWV|?>T`bN^DmX-KX#Xh0e7bs&SLC(2)|Vtb|C_2hbfvor^= z67sZ6@I~JqU~dK31YINn^u)UU7&B;Z1NOytfi&Mddz5{HzGJ{I4Euw&jB1&aRXVV@ zieGM919_k&bi{A{=F;v;kbHo?pr=nT!Us-EHZ|g25`2f_J-mj4vI<2&;9 z_K=g`IM>8`MLAx}?$u~-=^J?RcK{XT-{lX6{D876bip}?Xn-T^{tWc?Daxd(_yBFA zw3XB!$YVEeo3&VTP?`Dpy=;#8y(+VPrFLiBW6lKd3F7^2$i;7r7Xwr>8;Ex;n=_^q zb~na8TDHaa@l@Zre9W?nKBDAVSDx~|P%a;Ed_Y}Im3$z;K9)XE6+bZG10KfMpK}JV z{Sx?&*4hPS+*fLQ*cf(C1piKm`5?%Wrm;KDsbXF`&+F<**5QB6=7xOdQGG$Df6(g( za%`wd_L-|NcffBqLziXWeP=%)gOU9~32eU@HZ>~#(Fc4CA1adl=n-t6jcc4AVRK%~ zX~y)G+TF-l*TlFX8%f9I@8zmWd?Qfv-A`loRo~iG;;0~psC}X$UzPn?Diyv^i62mR zf57%X0kR*%2Z~_(kC@vl+gJy6C!;K&{f)7`l%Me3UWq^YX@J8+@J&$U`U>LR2)kEo z^GCC>F@B)0PML4$@rg=&!B{`g86&1qr)Byr-yc+x2l8RdiL`BH8|wgu0dgP3_8Ob3 zZC_!`S7LX=Hh%tB@}Y`a=c2pwAB~$pum@J)#ff!k$BE+sd{W+-t=; zmVU5(x@>>BznA+QmhzaSj32GBY~_8t+V=W#reybWx!uV84g0FT?_2$){OxIdIYD_$ zw{lUMRWoh$7ved`$Zf7DWmi#Ap9VyEV%j1Tfe-pC_)<+r`7>IaqQ z0__|t`5)s!f(pk3XAsk^nAcP|o(uGira+vb{8yV_<|o98 zh3OB)f|MjN`_5lta>OAqYOTL`8+M689I_o_N%~H>F}ALx4sj7DV;uL=BwD0N+T?+} zkSFp+9wom7&&&rhFR~A?G{z5fbAh%GpzqP1JJi@k9+xR?2m6Obty*9f6Hxj5-_=>J zxL0T|;J&=4j6=q$&-S|Gd)<7`xX}e|+n2?=tRvQ!^o`tp3;KSrZJn4CeNQYcF4F&* zjM7rE@L`IWbnGYbj-P|nFEDoz55JZEI6xf4br1awag#=2S}MNdQL2|0@|Y8S7d(eb zyyN*DNfzRf<&#S-Kfrm`(FMs55DT(iwf#Ul7s&RJ?Iqg}aqo_Oe66IS$S*s`y0}OC z70O~6myBB(_XcfmWX#KY&@IU~`*qr$@l=$Rp;ymWS}f6UdsCbX=u$+8}b3_RP6^<^noJS|4Yy>GjJt) ztPA^(L&P8m2>Q1Rj*$*Au-va(!IaerVq55R`m z$mL_JVt?2i&okKdL77thabMo{@^u^IfMaKlpYE;l6!YR^s-kX9-IDw~G4A`#5+2Ac z&HGenb3Ohb$3A(9+x@LboR6~Q#XS)31$jukP_|UXbt-8n;cxPRWayw*mF@43b@Txa z*J=O9ihIbb%5U1TN^)z>)wm$PIjLiRiI{xih`~PA7(3)d-WKm+OwPDt-c;Hj-%uCz zfwB(UuBkFSv?0Zo`;1c7x3^ z26SkI^03nO9CIrB9=ShaZqntm!ZDtf-OH}mai3TkW8V#2Cgx#0{Wx1mLB1HbYoi#6 z_@xXS17xmpGYVLjZP=DLi0g4S=CQkhZqk^9c+2J#R6fA`r|Snsn)=7X}tY+r{tiY3xGkg`fLQ*H_L=YmJ}0fo&F!y&kz zZ(+=}zw96ny&Uk2je`KY+f-(I-Pkui?#pb?>vZ-Jyym;(u~@pEH*|ef6=USwyCp^j zsIK1_Us9Bws|E=#|UFLg1*5E&cpiNjA){mf4@O!w1T8L3R3ol((~Ce?A{)l+Bfu zRQ9*;js7IDT;A7neQz-C)qXAeH}jn=vphe?Yb}+|Rrb%sJX&>ZMHy*gbdbBs{5LX z?GN8+4ty76oXXf&j`xhSy&~V!2h{RY4;*jtdVsNU2YqD5dUI z%S2;KJsOZ0cF!)Ljwx+VEJ3303W47;PFA=@(tFmJ0saec3q z^A&M#!1kP*qx=|eNb@8K`?g`8wfM31o_YBXF$&{&RK%E2bBX+w3H1@3O4t)pE z5cp0h@t4_N=YEz>-j~KST5(_2-z#;Xnu~Q4(^snI-FOc__PY?H@B8Wc3GdUSV$L-R z^S23zW9nD0z4iHk`WV}=Z8UH^1g@&y`;mF#eZbgnS8L|}D5Gi~Qu{tsnGYBm4;Z>O zRQJE-ec%LgScAkBk7s|pQ^yka57e^15q*ADZ7<64#>s4&wX6G z@qUXY_A9WpKHrdY0C5mk?!B9`NsTVq?^6c6167iVvdMB*mk&@rc?_nsQSu7MfW#Gc z7D<)7r>LTw5WCz(NaYw{xzmThT|)daEz*_yBHg?%U(2vBlgGERf9s2TNf+w5Ii6?V z`v7qlg?lfV7k;Z!?B(NrTkM8F={dM0@JrmZZ(bFFZP=DLcpr#3iQCwX`62_nQwGXH znJ62_A<`VQ=3aymc|hMBkwX7^e4sdaxzjB0E~GuewZGCQl3{QSRH%B!TF#vtu+s|I%SO^Seb2D%J>U~cDDNX|OB}Qvanc7! zqq6Z}F?dZo9gb^H7nSWH3u8i-?{D=1RX-4mG1~x+-ye5NS?&b;J2iy;f0bk3n7A*C zebxA;vbdLZBhSxBJ^;OQ9xe*wu=pKeV%GIb(se;;5$_F^N_HsD&Jy#m-YVtrUhzKe zv9UhnmaefR+pmF*bs!)A^?`0Z{wEIdLY%~XAM?p6NA`+&_wS0Nt?~u%0-iX|&$@n5 zjNcw6@yz=49k!R{lI5(553s!imF5A>Sm0FB3g-q%fzFR>e#X9#=x1+^*!NS}UlIG2 zj`!5I$5=|XzdY7c=6qQvvX10A8pa;;FXx5u&PiO4JBTss0>lK|lTE_)bmE?G#kkGE z;(f#!;}iF|rExH?uV^=YHhz?2QXT+K_J5>7TBJ$ZOtuP%6VetePc~Ou)@jbp`Vj^D)Rs1Zb^X-0`LmSflgCl|3YJ8pZvh%}uv7Q_Ua$Lwdl69skRoCiSn7e0OQ?KNKzRr^Wd7N!I#;eGN z)p3q~Kw1^?LSA#gOAh7}l(NY3$@0qb>*fJDS4yQO52$pjuOHCK0e4{kZh&gBJ&`2% zyI~&CwHEZfSGK=$o~Qh^p1wZ6>b95WYoJHwUjpqb?Q@<+K30WTFF;*mz*s+##|KKD zG(0MJeOw=qb7_VBfaZF@X-{&HQ?10{$M5@P2cj>fB9~z8;yhK%$@6^rVqc%_lgl!_s>bpa z*+Z{A*LsQtj{x(0or5wH{i=MRTn;#z8syvvV}NS0 zwLTB3UzzQVvE}2`(d!3~ z>;q+EAA>%i=X#)A4uCBX`-?IHU4;j0|33TEC)fw11-kTw?PIlKALG-CV&72SS6<_5 z`g`7&fll@1RgL|1;{I`L`Y3J7`GML8^zp390eZ%S`o;nV`++k3>KO;bz%G6M&fG8O zgY+P0A$^r|9oT<|%KqB1PaiNiw_h&yA2IJghV6^cwj!vCFI3$J9pzfu6 z1KS@4xzqv3X8K!8&=k^EI=_!HpSegm&#TG(iZQ?b*#Bp2ud#KgmsnI4Q2R+`{_wZ> zK-F?UK4Nh?ZSqfT=@Z}Nf4azL5=-8AED=shMa$aMgG;2*U;iDkh48G$af zVgC(U_E*^c?}&XvdAPE;SK8W`{R;iTSRXKOP4KumK-M?Pu#ACD7H7o))mz;=m&p;50uLR6^{ecp!?TogNzlGzt>f^TXmL* zedGa`2C)A=V{^aW>wP`rJ}LJ@$I5o7#s2`BlA8U_=mAaCAKzAIdx(gCK7UTg-#gz|nM0&w&JoZEet4kV zxG#8F31movOa&^r%4DrH_Zt)Yy5n>8f7xc`%5~miF`&c%@SFrXV?!B_As^7^n~$0U z6n#Jeb%z)#VI0YErOpBSk@p)h_y4!Ij1U(gGtiCKALGGWhRmlN`;g%-U?c4R2XcS0 z9RG&w|G2R)+p1h?z~=gVp~^mBU@V~J1A20Rfj*!Zy1D?JeG9k)knWqvdZmt$XUC@p zEfcbW|G8`aiu_Ev76@{E0=(^%`Bd1SYaTA<1TXs#Ya+jf{r?0MNcPv$FB)xsJ+WWT z=8WSi*j?8b4Ece+JWy#4&|`nzE0BEvIw=BN0DKL7%~tzBsUG`d-re{foSBmk8(pip3YnC{t4{=3uMpHy6Q09wxtsN*UbIvx()a?GV`hX3mS?A5UU zYL{AB!LC6{`%?}TNPT}MSZk?-GsPjD#idRA5i!Inbd92vRc`Qw}0aX+oMl%?U5bq zc1g-x8r#zcG-JPF`1=vS3z=W`2mrv(V9E=Pj6q$y3GeVL2# zKyI*0t(?_vV<5{h$W$o%fNX!rFR$^5!@gHRhURz9t9{=>R!t(#>9S@k65Y?6h5NQ2Xu3Qk_R|Y3-9mO@%=-gnpnz{e-m^b8%d4bD>^l!Zc^k>as`+0yH zfKom7ryfd?4{rf%3qn0R6>oMmE83{K#-aYijV|y9&nF5)J-b8K6N*ATT~Yo3+g}1C z0g5F*sLcKfyNlQ-X!(NL2P(0D5ojfX{w4CD=4C=*s8@ILDDeuOxfN|#CKPX61|RV3 z1hA!ylvTDpONISQp`Yv26>Q%;BhXLC`!CP$8M19vju-j+2qixLW*Fmkg>0^{|2@jA z)B*RQ8_xHa0Ima;0s7~MEUSs*TI7mCorIE5KcQruM-ABFsp3%2fv~}N?0;Rn&T9p1 zw-<04a2aq1c|H!13dn-33joEidx>m+?(>**j&)RZgShq-hkCCd4cL5q@mjBe z#cMs=mV~<3C|T_cOqvklPUMCkLWf_2^&1)-|A($zt6 zZ+zYcgU`ZH53`~*9+stRy`Csp=hYhi&<(a52pCcl>NOJOxRP}~6UB8tlVJC^CBQz9 zsm^(`&Je&r*cxrUS`$}Mh^J*?sJEH85qVtD&qLnYWdgvwaE(VB@J^mLqKt(MvP_bX z%krWu0owptGR06v*nApg&H~>#{~+K0lzys82lHP- z(Y93re4s9_{d!}ZG#9$s4Ty$5^A+~jUBg=fogalAngOax_L1w87HN_;fIMjUQu2!Z zJjf6Q_#QA9cJH0P+P!Y!T07)F?J>Q{*Lc2zc<&0k*DJz1bPC|- zrmbokD8e&m0L}?D#CWO`bUXyQo(XWoz87>&AE_GBYN$<`g=@XKk_U+w@&w+%n%?ar`F*G}quGA)pl;A_T#rRCOW>&3H^`?re#ft`kp8r}7fcUEL zzXQWwvFZ7*WgrooqPmnZ9Lo+!@vi$nqU=1>sijcqe^l9dO`cF6lKv|cB;}oa#xXZ@ zRURo88ma!*R^_cyp{DBpOjTYJ9ho_pMI`pffIa`)Gn;Tr7aD>FKtfNAspS|douaF4pXYoWy*{0H@|iWC z{^#?t_r`?v^BeUak4+moY_8pZ(1TV@16u~R3T(BxAl7rf)p*NhW+5MabtG|lyN9VS zt(&y}Mwazd2o#>D! zLXyp24$N5Irr8vq-)gyxOc^%Q$?J)FN35nS6J}g19XsW<5yLMyd@+Bw_scyG<&L@1 zp~sGW7k9kS{H$k!Wsjm7Pfh*Hzu)FpUGBN2ZH_M$5(j0$n~KEBPeL#G#y zjUV2^tlo$*on|%|_EE2n?&dpdyk)V|F*d^0<2_5;SBH0rKhogG8avH@7tZ!{{KN6- znO#r5HRa~Az0GG|$v-51`@!PrIlm^BZ1QQn)5iPFmS?_fH#pwz$?nNzO5VAZ`|C~lXk&y&$DSwJ)oWX;ZRdH-&h`ih9e(hqJv)XrUE;DeH^b_QG@CKA zcJI6~)i&F^^UM1!Ke*nrIM5?>^emAcRvb<hz-qbce;%HX!}Xeh<74F zyxR5YxOD!S$+45%hj*GdZuyO;ZQW;Bn2$fR%-iWkoi!W8Iva9Ydev_8ieKX;E<08^ z**H$KEO>g}L63*Wlj=>HG<(b_OPlE1HRF!l%4+eX*`EnGN3^klc#z3)cseIk0{ zgr$djeDd_J#=i(*9;R~rqmfFX?x^q#a``-4ggiNb72X?La-eXC`_S#)7 z(yVSiv7qTDF}BXZdMQT>v#!K$nwoAgA~I{$pJTVZcD?n}yG!pp_nKSu9O}j9UAq`{3Z*cr#M#DzmHz>Z<<=V2M<{$Lhxo^r8hff0>2AuwR z;NI^_oGl&g#M?FFk93c#VLzu%)crl(djzb{>^^qouN_Z!>-u(dkjK&Y0!}&3nrZdS zR|`KMBY0i0wwQ9a%gH$r{!`^tX(r}Xci^L(u~b~z0W#rdzl=^t}6eCqMT z4NCJ~eXH(UwO;Y=_~M4&XLWq}wV(k`pLm}gJ>@ma4Rcy|UejUn4-w7!?oQaesc??d z+#bafeQ!N|E;%4>Z^Z3;xqp6@H>lY9dh0_8Gnx+^-!{)1Z$_=xE3;qy`N;Lf ztZuhFZyZT%)@$Pee-GQKPaG7&hb?Nhy0-aCW-I%g{c@5pB(tEq89Y^{mIc ze&%5ft)EMnfA0LXkWagq%{dz5;%9byLWyVVlC87OmCW3DE_heO+WzMGIT1B(bo=nb zvtG?hPudR2pW}3+Q(OPF>)U@b=kj0Aj;dody{oNNluhl(DM7V{$9~o?#bQfjUR?2e zQ$@#!DKoll9(}1*3(utf%?D46uCeWCqwJNRMvj?gzRh()=#Ptbp0wCj`pLKj;*f;c zu-?5^y_H7s>dg0uU$Rcp`Y2+%};!3RuZ%+ z(ya9E+hOCM9wg3r_3P<5@0=JACJZUvek^o;+A&)(Ca~e8<&m}C@6z#%<1WuV4o%Ew zwvPR{o;b(#rRMD{p0oHaEAn#tjpEss&1*b35zzHWx4tKu{IIXltRJ>LJFJy?%?Zn{ ze!sg-qmA88b{M_!{L-&Z?j6{zspFzyo3{0>KX!Zn`eVKNd-gROyJ_sUgdsnq><{y^ zzJ9yuwv>7^hef=9aqEQaq&{!BbV`2p>OQk2EjotRu-;-dX>->Ojz`)Y88M~(_*l_1 zDSTbYPMdbe3if_DD1M!H(Zt{a=TDwBE53B@;QU-M^!)WH584cmZSE0Tf5DE3HS^57 z&;RjiV@LC!9n+r9e0A5o#GUurY&QeiYL2 zkMYyHoNN*>Yi6TiPVP?!yb?MuX8y_X1z}C+J8Vw6?z1Bxf5-W?@8^Xy5La1sefk;K z^gWv%bo;r+O}B*JlNWd2H)i-^kHXu{Z#vvt`*WVndpX~Yn%X$1#!SC6y-vPZZ%O05 zyC(kD%rffXVexsF(ze+zd6j%~v-c9)Yw0(Z++JV&%8l4C|0N@vM7%cSd9%H*M31Qb zNxjfI`wqMtooyNQU}S!KVdyJ4xg|Tl&U>SG&a)BwKiTrd>8#SXLi*1On45L#dbJddk#}yDV4L+xNuV=Fhg6)$i;FGhMrU-TC;PMX__+Y+1G@VB3L)O`V$bt$Ac> z(6Na3XEsde?e>)Oms78$I)6E7;UBJ_97y>sWWlAA1Luyt;Wwl7P|q`y&#$@kLBXI` z##w~9PusTtl|^wc1`oF!UvO+xbc>a3Y8-F)vi*tM>z96fVt|*hySR8z-9LOXZ3Cuu zIQqmV51yYqWkplR8ts}!7j1}qHKxVPD@BuT<=n9Q!F5}l#q!zLd(D~dd-jC+7moWk zzOb+E+uIX9c%}7=UlnCO7qm7mKlRkPW&sWAY-ru38TOAbEHb1bTu-V?` zf9=}zQjPB6;uqn7493`!gYGf zqjrO)9F7|h*4Q$A`I{@Py7wPHr1MX8W;9&zpMKuotf;f{Wv2x@Pda!<{~Qtb?SYbk zU%k8YQ{QJ_{iy!Dz1_ZO{DS$QVY4jeZ9DXi`+?bsgUyD!y>WlIcf&T#N8YY^<@fLh z5nblLd%e?!h8Am^g$-Ne{lk%ZtB3T7{weXb@V>qgPq#S#R(`Lj!yDYU^i2En*Aaz6 zj~SD$iM?Yp7n^@KCd{nO!3Lk2AIkjkL6mFpJh%8Z(f*B>HfXeQXXh@Cz3MJD6FaA` zkJyqGdF%Lt=>=}196N_C+1co=&21aB^`6&u-mXIvhSV(S?D%f$-!8qo#Ab}pFE4E3 zp_Z}lM-6d(ZTx|bC!U*mp(ygsy~rlJ`wVKfr1Qx?eocMgv9v+2Ivbqp?6=-|GScFp z;4kF5qz#%k(Ai>zu=~&~^JXXZj(43jJm<~H+52lg>6w-|pw5Qvg_}3zS%@EhUz}B^ zYueKLMbGcPU+BH&%1dd3e}8Sy;Pnk1k`@HExjK8(uF0KhZMNRjVQbHqZ*R{V7c{qz z?Wo!t><)c1YsCtyKCa<*FQ#7EF|BS&&o3Jvs(u7sAF163E zUJfVLwtj8(&aTZ1ZZ}yH9o2Wu<}dxuWCnLU zY8mgJF|ny*Q47I;M^a8l>rUsVMma>Kc53_jpqaI!POX2cbKm1JF8BA=?YjN1@Zn2+ zJ+`<0U}C{R-*eM$hjuDzX5YQXdh_G;eb$QyPM`n!TKt#|_h+RvI@!eO)QF|q>-HJB zw8iDGJa_!@^Zuxu6~blLG2X)`zR{<4hjICx%vUwC@BMpTv*SC{S8uYJ@>idz8R@G= zW~Gjf@7A_O{!$cSmHsQu96MQ9(%$_d729*lNwZQOn=U-#9hN z;r`2~u8nzjVoZE(@w-)Ru4Q^;q%5%)vwu3b)cW4fBM)WPyE3+5_DC;_b~}37CWnu> z_`Gx5O{4F=oBFBw#VyHoXEqOO6gzt5+=Aa5bo#5FXj>W>akQ)BA48u%oqpV`%g8PM zjq=AdwyW3CV)EeP0d*W(9bWjwtB&(m-u9ih-RsWBb`D+(-sxBKsk0VKMt(QbcKWWc zrN=wYZ4_Oj^wa{i@}7v6HZ?hs~6NcdPKmtx6ic8T-nVI!B$H`;6TC;H$2i_MaI2a@ydC_QKAN2Rj_>;`sa28PS0o z)?5Ac%POdFj0TG*NajaIpj`NHPv5UhRdhdlJ%@aQAX?A7H`my;% z{vHcr=3TL`XZ4n6`g_xQh&9sNn~NR84&H2&z3bhlMid-alDX~V3+8*~&u=m%{Bqr> zRrAEstDElkaawCpYGq7!Fp+o!i%nKk0ugu2f*?i_r2?!ZxZEp12j zby&MT^T1yp%p7sHMncV=h3`g9ael}BrOiX{KfC+<`5GQ0n+)jij`g~=<|V_@CX4UB z_|#3YU#!R2p29ahaz_QUx%T_ecY8K${pt%-`@Y}E@{7H>z7cEZUvX>P#VW9H#-b)W zlKwMqO4yzKEq)fAmnJm|4R39=p;5vZEBiNHfALP69y!7C@EfidT5pb=*d`@2t8~MZ zue~~k_u2G`*Y6u^?@V~tYlZ*mW0yO|c|X_x$FV=IA2&6`I-*@B6`XPoAoOJ@eZhY2&lA|KsWXdgIujAtx?4&CT7i$l8DDb>FtTkIriEynFBc z>2;3=y*O>xx|)JxW__m%Pse@S$!kiOMRD(rpP0WUjCt`+^S@>f$Q@U2ThJ%F+s|r! zEnM8}(98GRg6C4q?^wM2MB#voV#7cD8%-LP8d7)eh$RE-+dD0(-@$c6LFlch4~Bm; zJ-=nvg(nB~87Mrzz2_$`#~V$2>eygEbdArqYWn5D-^cV?@Z8D7h)WTh3Sa){^g)aI z1095~$GiXMbJ5oAdP%)Ow@VgA4GI|0_s)*b#d`JaeU`MJIQ!??bDvqTXVf!KZ0d9J zY_Eu^@kb6!SiN|#==Elr#oN7>`FG3=U$gkfGoK4DO&HQ=lelr-UXP=eF>ZrS^f_NU z`FQ7j-^Cwn5pcBKvEf}$4t?`Aam%3kL$^5Ant<_6m*xj%<;?Dw`SHv}=Jkc~-bvz! z)FP_`4(WYbZ2jz~;~$oOCX5u`cbYeH<)IOOTE2a!#pSsc{ymPi$nUk%xAx$__Pj8) z^{}qT-EMaK!of9s{p?h8i-=Jj&Nzql`dxfAzw?e6uf@!cSbpgF*W3<|i0xW4dg)C2 zTKUN@eD3k~pFQhGd0j|*)y?JC;5WU~Z8GfhcC?u3v~I&<=a)UEZLxWI{Fgs=*p}Pt z=1pP$-05Ekv+6gg^=6(&;nw;KcVu?;4zPbX)U)Qr-p4|=3cvoceW^Gm!lm0m$LZc@ zKZ{s!wV=j-o*P;tw#{3A&Tt&E=+evYKK0kRo!?t~^;z%md{K*D!)@(+BYu4Sy33SH zb)sqqEOrd7oBHt+|G7VH!NSF_kL>z-@K+CRFSMSp<=q!cnv}l3e^l2}j{_$oJuR+oKm*0D{ahs#o^Q_I{?PFIB*+0hm&o<^ulA`uMd+Yco1AFYTyuSR);pvt) zg$0%qK8elw^QF7Vexcu78f)DoA*^=m8sY0tMs5yr=$`fF>KP07nxAdFJ1u(u8xi0A zFfJ-6@YlgRSB?ELW&ZS+&K&LF*#7-3wqIWxvMc`B>8EZ^_di<_HUHqpzg#|k_M1IF zIojX8)cnNvb>7Z=^TRt=U&z~D|NfPS+d@4HmmO$u{c`F0`ESIunviy_URwS9AD8yG z>))q#RM#N0-HpQo{!Dx}qE=*d>wRr~p8V}*WYd1H^?UR6?N8mG`rx~a zU%K9W=IR@TKi=z+I4tkijOX`6JGJfHSzKJNowzrv!G7V7H`o3g|H4+w@h{)`VZ*xv zp4sG3`^f0+w---KO5DdgJ+O15q^EXTmUOzX zM9gg%-l~1ts}|p$4D~zEfBeXrzrXNXQJ)&mnR`ZtJ(*f7;oy^fJGq6OtG#ev;O?pK zmwvVUc-wV#9QKS9+wBm0rHXGiYxKfbzvs<36h1jOH~9C@dS0CL=aXjdl_pLYUDWdF zWk*|;HX78e|IA>!qwarPom4Zlev@r616mHh_|EZT%}V`Fw0o%wd}sEl7rFDwqD^u6MUA(<;WfBL>G|6oe@lqm9D2KJ z-)9nbzIu!Z{Nqtft&YB+h;kepXJ{`iIY_>eIS#(s~f@k8dEj%AFyv{ex_7)vX z9Da3I@(Trr_We|t-M4G1fBJ=jg!PvTT8+u;?m zZ`-U^**R7}Gz>ekdUfjHpA&y_EDf|OS{UE8b#TYUZ>3#N+%jtD_V~!@X}b?kT7F4L zuNCulz}me>XE$he_7{+mbW@XPyaZ;zc|6L8-4ost`U=4{CO^nL3) zqwH+n-4yd%myFnjLF1af9588YhpvCsIDE3O%}AT~@^V+(HMMH~!;x08*Cx*qKmFwW z&j)OnbLh~~)_c0P>Hfja;BCzk`-%IV9*!)@%{X%N`HRVy!i$D%je6_r`qN^kTuwjyXenWvC$*C?J~CywA}2FwPE*Xoqnp*wCT6?e*8B4nZDvrP7hxz$(_?=dZg>H zL0@bR-||+Ad3}y7eWBydhVLGDefPpX;p+zexx3~Dv%?v7^_=3nTX)Mze&^>U5p(+c z<_BH>Y~{SWpOyq2UvAa;;hmZ?>Ct_c+-X3$86F( z_P^3FbFAMxogBj_jxevcsi&o#ug7Y?tNU8@vbr*HuJgEStFPI1avELy)xn2b{+wXb zJwNsKhH24nK6ABu(U_FNz%9L3|8?g-+w6jN^geifQ^RxZc3x<0_H4<0`_VmHJlXjA z|EumS+u~@JFuW{_yK8{pZb5@PBxtbU7J|Dwi@UqKySoMn?(XhvaOd#;jPrf2sjjJh zdZzEHu7RGUFz5chd6FrKbTk4zhNx+Z0zn3IBQCFe?+m5yI0y!L-zNe#RR>Ko2;me=FPYr}Z zW|KfuuMlaL(d8ZMp}y=HjWUEaHyO$I1Iz*oR0D9H$$2Kej&758TZ@jq+J74fd}wT? zg`5t?uG9u)f>ZtKv)oVv+Uyokk90wZ4s+B&y{N{ZCP#oQJJZ&2Kps<%kbT`z}={#25Zl!c}JU zF4R0;t+_#NYj|}%6`0B7Y(@=s6t^Xd6S=CBYLk*a2eGc%Vh+XVnQPng>`gHdc<@cI0Gz8DDXqG=9@lwUFe&T z>ADPG5GM97Yia$a2Jl->bH3nM7=(LGhWVwoUv*}>+bM?l$PSK_qfT&LD}N@po7&fw z|LEWGSx(FE^H{IU8KOBh1jjSHl0Rm0pzBcNmE=<8*}S_7cbb>VIvJtwF_fMrUb;|G zc(J?BX0SJb0KuEmPc7qb?h$1q%VuByW^|;nY7Y@ON&-=m+cA6>ih8xtMXx+P6m6^? zRSc1q%p(-iWS>p{yNCxf)(DxG`E9J};zyW>9(<2JL?Stlm~L3Hcw_2d)Qc77Nfx-C z3PPc4L@S)mmY;TWU+2LhQhi&-eDf}O`%5ioDCy&3AU>5p!rqx8I1YP5r7FTYEJGfr zf3uikA)q+)l^U$}w~zvCo>0{Yerh@1aq%V*eji;R&c>zp@g!2GPg6U0(VPAHI+Mgy zr4z@4wlAH(fsh9W59Rr?G9)5Ah2`5%bh;As3Cj%XU+nIz?02BmAiC8&TOO(NWdk_% z(UHROn(DnE-#Z+2M(u&~z~bxnrRJ>-Q6rn)2dmf<@7)#ixmUcRmJ7+k>Pb-F`oq+W zL{9|vkLUd1A#%2a9Wu&KFG+}L%J+57WhpJEq%HdN7`Ns|(l_xfR#a$4P2HtY-j(5e zCP6CwMbz)I6*8nNSN>FN_aZ^<18=)_!?)?jJ^zH_o=LX+o%e_S%3iC-eCbf=k%3b9 zyEe+~1Ltnvke+(MKY315$BZC+6cKs_3U`cr6=^cVtU)JJt$U?8a|yn(B05QQHvHYs zJD$W>>=VoDPd;>Btq8zu6f7oL_N*--aYpT~?ImL#l}3Q8Q7#weAMm7~0{ zA1(Vn%Fdyy(g+e+cAEIw+iadWrL`&!A8Do{3#H5n6Om$0Fn}NNciYX){iWpzo(g{C z=V>rS7ZziAll*P-d`+a!X_lY#60kv>)}whS1?hN+Ko!!1&(&Q;KwyLDboN_t zLF{Zgl`N0YN+(Lh8^ZY{<qW%?{$h$cNJ{-@zLRU$DIgS_!?*N|`|H|z%e8LYI0wT1f&P9{e z2{UH_o!@Pi{~`tmwdO-2{$+Ga;P4N)wl0z1sXS0r6=S>=SP>|l;HcgFI`{$=AXpx+ zs76^gYV^tPJYQ1RI#&2nS{MOHN|aE}<%Rx`3xNZH>s$?@P%PknHvjhBhuha^Asd3k zNY&E179}NLGGHku{rl(JX(XuSlHhjpSB6VS)v#@Ew^T%+(%H3K@PvU{y{DX~pFA@$ zR)J=JR@SsUs27M*<4x!2y#PNA3nijYhl^~nh-$l(>tCUnW%5rtYTF<>7fOs-ok2@K z@z~7RlU(1idvc<9l)uX@Y=}#t)@E+#+ETUrszY0Dx97EJ=Xl@^^}H`6gn6#-y8pJ%$!Hr(`UtsqPuK7tGwcHkW82NThFJm8#8xP*gRX z+v=4|ZSry~xB(OkDE2o7VikM^!!r_(K@;n!%CkvUeBb%+_Bif^IC?)a;6EAgCsRRL zcAh$RsA&XIHMnwf0y{pgN)5>Mx(x1%4kEE8wO|@e zI^ex1F_7PA`7dDqI&Ls|6get{e)-NbAXezc9^&0cUJql%M=0=^r0roFUCGbp1W4ER z(!{ic&g2C`+A&(FUlx*Ty;I3*kkJUDescf$JA_hia1IFcd|Hmsmj78>(IfKxinz|* z*ZBMO+Vd1oyK}M#4hAbV=~sf$n0RW#hziBzzU+?JogZ=)Pm95N7$v;&TQsFa>{VVK ziHbkZlwmY9nQFd;$)_xkvW`;bfR#D>V>egqABYwz=ajz~HiIkL^hCT6bGSRPucTc@uQRfNZ-6XdB4DAL;!n%{I2n zLh=I@cWHn?s{Y%M!rI6{2jUtqr?7IhsIi&r>4&B>N_7+K)DEf0bwVc5eg@uZ;Si!pjWN2R=o|5e(^`9ttS<^W!=*G4HMSyAJ(|F7mFuG5uHc5ea<*(oc)WX% zv3Z{!c}-Fvl6{8r4!lWLQw>d@UUV;1e|;3`cEus%?~h4C3+hU@SK)B%Tga#%Z;Y~z zZs;R5gEw78Z)jf%5=zR;pdU(TX^D9YmB^(LxWibuGU)318I$kZtHya`X>L4N?HwyD zd#XjG58eGF06!Aa^Wpr2`-CAE37h!mO;WU%oj_iBAv37SuijAp63Pzlffh)Xie=0t z$KnyQ{rmabhE(?gbD%kPMGpSc0GN+~0&yd6jN%Xw-3)eP#a;#-aBCgyP%+B7@N=w3 zYP-h9^(=%;lpi=#AyUPxjJ6S-E~WwH_jd(M9-;ta`ybRU#C?2<^;qX8O}5CLnNHyf`R$fSd4^!?M@JocrJ!NNAyP8Zx63Z!zUu%T#Nbl z@L}3pe2xGcMdR;i4BaX`Fbp3C>_!nD+{8=b6LX+U{yuOB_h=Hp^46rBJ|5ty7yBtY zu_--qDN}r!I6=#gfV!FnmU1`y3Nu!N+Qe#p__A__8#f>^MgY94`1-3o##1o(*2jw%U>;ERq@c1>T zA}KcpE6e2so&lA9%sd_YDyTlIJ*6=GIwas1e$|-D=^_&^>Zn3<-{y%VjsM3#e%AtW zr9c8oM<`H^g~d9aoqWZzsshME2<&TRN1?^AM*LT1MR57AkCi5HzmtlZe(Th3<1WDT z^F|4|r{KWtr=E|yKX%kuj{~Hv@%Ord2gOX1S3jFnMi=wO2zDzlYp<)Dky?0x_K*65 zd2Y6#uDq@S|A_qI{T?k~pHlnJ_a6djIaF4dhxZ_`N^Yg>GBlt&xvS)+7#A7|TOOO? z;L0K!6~OF%De|dVk0ppzzK+s~^fiH`kt0DuErtRfdW8w%=R#7(3!1 zd~qgEUtHj}AULP#`UgXLG$B2<@*=#F0>w)$%2MUJUS}mBtE7SrtRaD>=I$s3fMs=s zrvc3Gew#UKUJ&2jY2jOjmXQKpbTvY8HI%Psc=Sx=3>jF!Jzs2@!%SkSF^<+>#6U%~ zsJbLZa#oFLDj2D#+)kjvR1{zrRTIhw`e_~pvjR^Sarty#<``6x^w3b;K_ZG;DcDbT znu3s~FN$BPD6bwYv_;S3LJ?Nc^@j;P47XsYA;2~fbr5>if}!}BOpkuubWy9p%IdF5 z=0N;ESkWw(pc-x5(mOpe*q!jY!!ABqmzuK5uGYNN-@V)mt zYo~2|+-a2jEUV;_>mS?6Md5-#cw(m|RwTT=zQf<22-H?-fH>ntg^G}F*nUAv&FR&yF8n#esb z*j{Upd0cD)XhwEieC;#=v?9Q2^2Pi%OLKI~*I@suujA;5yheZ6Xul3PDBX{pGcg5p z4;;DMK&;S=z))jhsnZ`$cc_FXW~=(Crmx?_ku{BO4r&}xc{gjB`?4KvGmui1`t1P< zR#5n_)63wJbLLTw&r*AOg*hUi#>_@p$Mq})jWD9>SPke~jXq^z@F zEDCUd#INwPzU&AWcK*}erDW&Rth4(zOuz|37c-V(GvshfHITRQ)x>bWj=x_F)}m1| z;Fjg9w8e+pvScqZ0&g;b-H%Zr!y<#pP8+5h*LN-#@h6@&aae|_r9^avvf%^I$DufTqT^!K}XcOg2t(?g^{f7uXrFTSJ)C7z42AX-sG z)m$V};{`YM6onNhT1)0|@|ul6QS(b_;!|J6+}T{a;H+jWLhl+|SXT@_o!d zJfgm&7gR!q)=ob#M$@y2?yx@z^oi4T58ui3`{}HZN$e-`o&%+*!CED4kwZ3w276Sl zsG=+yY^3X8fOyFSP~}%0*YG^n&uGC!wba~S*of>b#J)J#*W0xgP9R;qP*Z^|Uo3B1 z{|h#-v~|ng^-Q&kB=FPi(e3{J*{^1dMmTU)m^@8YD<*aW93?tYwO9W_i*!j@%uKRD zBcE%QqSl=3tn2&pprSdcNHUHeM{*$#gi;tFfkH!(KQmT`x zx89D?WZhQ1gXs87z(FuwxjHmaF!s~(3{%!&WZ5_0d`P) z8*19m?~aobR-Uc>%Orkl5Usfx#8ucz?e=A|6Thx42Mi43o6;fGI9Za|{QY0qLU z<*(!b3<>dTa(Cpdfi$Lng*H{L$~g&w;FEpp7a&G%f6%R$v3*&)(_&{p8M`3C9748= zZrZHg9GfqFgu;!s@eVv?4C<=@PAeP9W-;)&Jlq?<2)yNWHG*HN4eD-NTRRD47bSPtt|{ z`85dp8~kr!anxc_fI%;2D$wc#kDx}168-ev=0QWrNvu&_-~6loSczsy2Apo)N80RX05SUT>mf{w#FlSa<8GX%eC?9q!IRAA>ufBV;L?JQ7Cp> zYsg`}Z95CjJ>k;K?(feYi|$qiCyzoJ-#(Bmu0xK6uR)spxwHcC{FB-=WsZ^=R}-#d z4vO^plAhb~pNC&PQN?^$^*1mgIhLz}k&R^AU1x)J7STdKJp9>Ud-a(t*9GO!$4G%o zkB*_CGTl#W#3!S=(V%?qk9sDT&kfe`*t1@Z<>M3`@O8u2=OdM3RF@^e#Xp+W-GQvQ z{93|i?o%lb^4L6MSJD27UNbNWX3LHJ!PL9J$m!YS>i@Z-2Tw`Yz8`X9~M zlZlyGqul{!>ep=6ov#O#vyl_SyaDu<>uduL;#;VerKXJA3`?h?Gnx;l#9mebKEE4U zuqlj+Fy35!QrS|RpnvDYB;Ullmm-i^#{2a>Ej#ejuiQ5lxWa!_Cdv^m+HLSb;n{X zH+jc5l(NaD2tygjisXqxIDr=Gt7^um0YZWr{ztG8xJO%-zH^|h1UfqSIui2RvY@9i zK?KwE5*b-wWmyb4X4w+!*OTjVsi9dejY&36tJcfhSJ1YMFgYw0B~xrrZ@U&p0nU>+ z2PO2tBl(4oYewmD>pe&ia>Vm2x$YL|XXYAoF7*mAAC+`48>@mee_Ig13B29T$sjzI z11!SAH0VNyP=K9{9QY9$vOi6=95qmZ@#Aye!Z1pmU5${l{^1kdyB*ac6crs>a|z?z zT`*iv8DW*s54z5yS`$jPelxM+A!gh+Ily5ZRQxP`A7;I;9xYenGL}7i3y4>SLKEWZ zeX}E-bT#1ZPYzm;iyMl5k_ix!ch;J<67!K~dZ{h**$)>n7N8H5M@78o0Vy(SDmp@= zwEeb`$%#{MpAnb1oTDs>W*O{PIg_-r$wR5AGg1%r@Zl6R$@KCh-^zl!S6>9+PnIvY zsj`QZtF9)pWkAEYlCe{)8BNjmc zZoeQkdY+i6s76q9a(M54*r$CSf{rlhJ5*z^=-6_}y_!VZmcsEr`P@?@|E&Fz`l)n< zMKziZRkq&7(N1@2zDL-R^B@GINj;s)eGi^_b64gAdRlRW^K)m>O@;;h-{ln}O#~ zD@n?;P(tk{q}}e0o(l&(Lo~n(H+`WGq!9&=??PTbYd^r_V9XVkw{yi6=@#DOg?4^; z0XMiL#Ku=7j82Otz|}i>NnqTDtsjAqo$L@InJzxby6u9ls)Lu{M0TE&5C-U@qW15} z9a}Qx-jpG$)zc4>A=?SOOv5vQb#+q-6nGwafh?@^<4g?PW6e^HzM@4tJnKBuCaxh2 zWF=Qez3ILlZEhqeM5Q#8QFOOl4mvz4Br`U@8w}{;Vd4HY0VR0kM+RRONyyi|NRj@6$nT5F{1< z7TbAL68FT&f2_Kw7Kt=jX?sQ47r#%Vj=PwGE8*W2yt|S!+rQ&exXxek%x_|-c&-2T zZ1ZH3#zw;5H4s(q!AF}MHHfIOP)ODC>1wW~ME_}gdS_<+bZkws$q#M}`)99D|Awwi zRmkDDxv`P$u^k<9^cGTq72DhJTfeMO%m605XJsYKp|Fma?5WXX`?Y9PGqc{>BdI4M z``;mg_@8KLSi=n&{M3LT3hO8`&w+%0_Ve6uo7X+~JGV77aH(H}{+CkqznZFPICkFFS8+gM(gK z?`MUUJilUk!50&M(SXK|K0P}3(e|q>ceNHSsoE2A5^35Si8{#C$#85k=F`e^ZJE8U zFhHi`CN2n;Rt9m>wwlWIOcn5Ln@5Iv_* zhgYXl8_O+ti@{AZ1+sJ_O@D*z&K~7L)N9h7TpTFH4b8hA`lP0}i9c$A-?U@E2a1@t z#gE>z#%503U#sSPo9Lp` z#w#b$G|T^c%|1JbYM1)ptq^{@GH+%*owPGIw+Qb0p#=3}l71|I1}pMBSy@<1ck{3h zY2zY$U?ag!N|)i4Yo3nf=(K--Im=SA?r_87b52CpPFD#e%^=v>$1)E--)j`g_cp@K zTzQfE2WlodE0-K^64QJ4SbH7smYM7N%jpY+)?OCUY-|oy6S4$D!+x!B{aR#77-VyM z-*NNW+?xXGA`*$PG@B5DhuvQjv8aE#)Ba$iF;%~LkOebcMMh*Sh zX*uDjtZm-b@1y@M#m5tS?6H1uw!X4`347i}>a0?}A+(wkVo#ARK@Taf56YSGv5Fdh z$V-#xLpcm8<)@yQe*?N3N9j{piutx}jMEBmy%(vMsOZ0T=(|IW7A4b^K^Kq#K0$^B zcr{dv)E4Frb>jfmj^}q#oybNlAlzq5t{{#1pec{=Ps?17j`iKXAXYn6pz9KivSxUZaW+nQ?4O1gZJol#4 z1@eG=?a`-ksE!(0F4}gSFlsb>OT|I+o;SPf)l0(ts^`I<-ilz9U{rg^2o$PjhKcEv zQI08Xa53}wy87?cD$Hn`tY4!|bkx*-Cy&9L=f!y)-xA5R_(a zj3Rh5Czs3r4T?gy*A<)#Dlq=sj^l|}_Qj*yoo1j^V|+v!X}el}@EB3=95Cepgk;np z(^llkM_PRcZZH0!M5nG`dIe(SI~K19H>9ys1RuNeb8t<>IIG~h$ff1Q< z|0-Jo@4CVCyA6LL+4=lQNA;cmxn;!Djm`rUNW(ZmM8CqSP?VAzYVCOoR#;7(+w}t~-Xe>L zzmQl!-^#RUeF@E}+xnApf(3#y_n#_qa;{BhSUfS^RJ1P5;6|^~hBiIfbIR9MmP%m> zPU21)eU!ZVd1_Een)c0?CsKGAyiz0Az#Q3Dk6%7iJI=G;VhAh2>}8#Mz>VXSBi61Me zYP?k`N*sU04l2o%*n~Wx>T1|)6Fg!jv{JQEh03cUsiP?%8!|3Dm7thYVNNz0$$4d( znT|`3o)45TT~>B)YV}6X$$m}Uv1mul<=b97s9_L4!h+)I#RsXei)}rB2P(S#lRCWx zPJJV?O>SF+CyckALlX!6(>8I+Pp^D7u*Axo%=yRJn9p4> zkMes{3g3oL9f8HJ5i{xz1?smHB>iG676J`l(PwrX8f*Gx3MShBKP&Cj&5$URSzoOYd8z#%#t4G7T0V>;a;7%-7YD^K_UK(dZNBf1qn^VQ zz4*iiJ@}yfcLO747*yli*hD)_o*di6?`gKZkXu(;|&gJ|MUz?K4W>-shcubuZbnaHntK_epL%oh!F@;6`t#|^8UA)6 zDn_l*8$-_0%J4VhZ}D$ZAdJugGH5)?lkJJ*K*4qLMDQZDVmGMUX$3*@l}^7t&lub| z##6{0S+5_qMiY{#d4SQx%e*^1C1!yLKy^#TZEE!^=Saa0&D zwqc)~Cte9sql3X<0;Y`(nI%7X!(p;dGw~uSV+%VR=^%`3m$mQGGh9l=w`O!VbTHYe zE_ub}o+{aj4}4SA&?X4>rvI7i`o<;GCpDTuUISm4(r}Dv4)AN)4Z;uNTwI&0^Q`VSeXc zY3|feuh1k7gJ&-)bNPAGS+arbj@pMY50KMnxcE4MSb+Bixg^J6`o_ZPYdb3`GX0g* zcQDXmy5iP=DD5k?r%rPfMoowGy59j)~<>hy+uuV;XqUv+KoAea=~MbIMqhnR8rmP`tu zyIYc7q2O|M77kAet3j(Mdm<>$g>v+xJPi=}-8GTc#_94meA;g5a~f7`Bw{wsw)WQV zn0D3MXbi73qQJL6gJI4&S~RmgJfcBn^10gb{g~J z(XiMen+uf^cBss6qFk9tyf>GxenF`#Z6o0Ui2gkV_%hCzde#Zf%aX9%mEsK~jo6rMBdH!b3bf%&mxw zWKlFZz1b^s{yDR722iF%-}Q}QnzsW4N{#Zz8Y7iOZ+%quY$~^LQ5-#V@o}fQX)~gS zG0K$6M>G$!JOuz&=dXh|^!};L~_Fxp~BmR)pvzxVoz{c2oL`t7Qp=qN_eWMpE`w%}-#95^7B2fA)Brb{~ zEW8{9aoAe^LdbxDFsIIXL0f!K52IN;Ppporej^Z~6SmD@S|gL-0j5!XBa zGd@nN+$5%%05d}z0#`t z(O$0Bp?_~5Jv?1ShexkIS8SsO;L*R}+SdJf6lqAZsiPW{i(MTu&Hp^-H{cS{N*z4s z9Vy6%r(E_}qIKv@1KI3B1Gc z&X!c(6PAKgHI9-WV3OrlMXqZE*Ki`u{kXj2*J*4qxxySnVzP0l>suzK3C zSYyn^U_w23In3>V-{#n&)TcV%$mGditN#WsAfHEZ^UE)n2wbggnl9<9Md#k!_o>8t z64_m-mlehKua-K%cKTKeiYo+SF0n~(>$rmHbh&R6H7ohxlIMx~0IGTJKcpghWRPBW z+HfC0TW)#aUJ`sf!c?%w1K1Q?Qce-GWO4xzSH<@&5Z@P(u3W%L%)HhAKADp~Ephqo z`X+}$Jh$+-6i=L82JkBJeod`nAKxZ;lG*Z}O0Tu2u)QoitTKmp{L868 z{;hX%UjgcMGo(vC#qG}cH178IoK4i?$A|zv7WNye&)F-jF5{^**Bk1Er`(@z>qZ41 z;h`UWU*iJ@z=>!8A3()t`#%YPC;`U}Pszo^7^z_-FM}!)jsnOq#A>q}Vh$G*S zP3Y~pY~$dAw`8*x94avOk27gWX$z*(8{r6V%e`id^^@rp{N9MS`4%8XN=X9~$ z-4G)Mu*ICQ;VrlL9&x~|3`aBx%|j(p>c%W7!3I!E<(5=nvfFmx$x zYRfLkZ5zu=hS#H6)M|4F&)(q#)Z>>eRzqpPZ!sci?LwUrPpIkY2T783b#xyx#j5Ag zLDZ`(hPzs)QBmHPl250RM>hE#$lLh(bT#;<@7@<(rf`2(3Vn_yck)oB+-ya=;g<48 zC~}0vZ?!g59!1jc{k~7~6?}$JkuHP(3A})R=nAw$#coR7>X6r!d8uW3Ja{xn4Z@K? zcd;|szX}>rJM@@rdckMrl#^VqZra0W*BjYb?_W#{LBC-Zb4kgv6j6Xr)_<~_7NSso z^B{c4!s#ST^ziNU?c7<1lY;Gf*j??(6m{f3TBcutq9FpJ-XI4^0ea@uSa6QSST_mEQ} zR&Qk`qmH8nBcfvX4%viwUm{??5X04;#G*ArsZ!_8+Psn-wOzP`H>|w?{Sf)n4+%Z` z;b|VdUf~qy257q?P4(uj5|T-dA5$&me-lFiQY*?l3UAP5PeOjJN?YFI-y43a_-s3^ zvVx^G8p!f2YM)@Igz#c<8XWJM2>&{*5)|&F2!>il4xNU7Z zJ&-lTJ?!95n%G?ZgE(Vv>8Ud+kh zlX8RWr=*;SW8YOC9O+{8kO{uM^^~NYOW7S4{(IE*Tz3ZK^QI5QAx()uOCeoZV(@;t z`IR8nuMV5urVz}$8jvK37Hi%vXY$3P>1rBM!UWbMTQg9#sUP;|jg?W{#8ZYn3x22H zP5_-g^>KaHU_Q$-tGQ;DXA^BsC7^C6ZU{-yV+C3gp z>6FXq4c?q3+71>(rpD8K2a%g6tQiu4Y|sz!mX@mEUl(A_|E&b20=b~y{SvE>u*yj| zf^9G>ij%2r8(yYW(IE3kQQQ8DHh(=*^2lH!Q0Xfq_kV3^_+^ERD8Ya4^OM#Aw|P)! zR>qq`N4~5W8*0ANdSH7g#X3Z@v`Nl;9Kt>t+J0MvPs#HW_~P7WNY^%3WBnB z-tta(SJ}@7(=hu?_B#4sS9=3h2k_$=_K?JK`stBFM`CdJ0!F@JXfW8qAAJrZCa)o! zHx6O^94TbrY@oF6Kg=9h>1PeQjLctp^jo5th!czcD-=8P2|b;0j^#ai(C@#t4Zz0?o9$iY&SrsK&+*J{Z!!`3 zFT%^L;Fo(kJ0xiV}Fa_AxCuDc^G@Em!^bRxDZWepz9=GCFi%iw$*UI9{r29>BGeljsv zg_oMMr_{T7(E?OG(9uh3o|!U^j=D;Axt=rM9AED4s{GQ zOQVy#3EqYa#3Q5~cXqxa36VXcA{!w!;HBw`O>y*WNhEfN-6+c?bf>Cn7xWrp0*g>H zUnLm^w&2re<3*8ZnGICb1O6`ojnMECF+fui+LCV@Udg~1F%Ja$(CxfCalPof)ujdNu(Y1DF0=?L_H{uUg^W%G1xF)Td#$&c@qa*77gkNITrIeuAQ@Lb~v` zoj%f_S{8cE8O{@-IiE9N?x600&3-S@HV^-z7Zaouma}$^eAtkFK`cVPS1(QUOh65y z5$Kgw7k{@k1V0fIGjoCadX=Rh-kt+2OTfT40E4`-X2|18hQ8NpN-X~NjZ}C#qY^91graIfNgnV2}KUO zz~&)c@!%xk3+P8nbXPsB=}z?yn(d1jWPs<^Q)NjVrHN~2jt!gu*NxenK~tchU?o@6 z8)&3IM@Z?x+06Y(QvYNH35$e#O3JYjFGs!Qpc)k}<)uf8^tnj2^Dq9TL|7Nl)%n3M z`YWl3ajzsXM#F~I){Z%T^Cyfy#j2a?pL*5e8N6h zF1TWo0UL$$NWIa>^?36%;B3E_^1yVMb)WfX4m)YHuKDt=KFqfTAf<>=NU$lSL4u;&f`*k4})Qwn( zRFcSqkZCl|Vu*;Ph4C3aVQw{zPGgV)opM2E1lfj?vC#Z3tNzqRaIW(*Y#YWG zub-WVmVdQb_M*i)o=+XzdE(dVa6vWTsq0zPMPQJ z1$Lg1-NxutH zCcKu54ok!uBJG#s^9N<+kYON(8}#r{2yX#rtGiw#hF7CoLvu^vjPXa8q!+~i8yHt^ zg2rdog=~C|UI!b}eH1;xuFNOiYTK;@N7#wZ-$VcsFgER>DlK{nm8*MOOR`r+U^)x) z)&gNl(0ETLjlb}=dw>G08W&!N@Av19sOLo(Jl$plH2*vcoHxW+2l&OudzmAKLo85B zJpvcq6$M6@O+_as`ZAqpX~CntZ!usoJ9&$z*DVA(3GjR8Rh>UjGj`3kly<}y#9kp8 zt>&5qKM5lbr8cjsWomIkV@*Pi2+UE^?5s%eFkR_AF_1D*wxQV+TpU`~u-X#zN+$ttGSi5F? zByW9L16VB+BBNLDO$6MK2ltcCjsuE@pQWh z#IH)c1k3bbHKhC~I>|59qN%3o0;E)0^#VL#I>i#D<}24z0E6JGM7oV82eNGfUJ)kv z7v8O+-EYZykAF76b^MJs!-9r^q~BYd)CQRQMhxJk^6fb;#CQ8)fi%T&_F+_YVLF&uREyLJgmp(uOds=OP1yhHKVqjMrj{48NL)GtLW_nk+7 zQ`LcDgwmkBpoQ@FVIk_N?IRgy>tqG%I_dttzsLG7tQa_|8bMdifz9N^jNfF|kqo3H zmZ0mz5-WSu0<7{ZkpkB9B61_hofCSZcDN3X5-+nmKe=8bbT@&}gBh5Y{Sa86@nHSw z8PR`|<@L8fbHNHD{@}gSa?D2T7GHu{LhJT;n|v0;g7ltpf$QIs^WDk&LP{PGXSY*f zlo5AJBFgLZ4Bm%JxXlF40+WB8vj4yKr~K%tsYm+q?z^xQj$qYC_R;7QAR{3!UL~sU F_di%(VxIs2 literal 0 HcmV?d00001 diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a544bc9ea9736293ff4883d1b7ffac3a8d72c438 GIT binary patch literal 11965 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 literal 0 HcmV?d00001 diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..f536aa5 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,223 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "altgraph" +version = "0.17.4" +description = "Python graph (network) package" +optional = false +python-versions = "*" +files = [ + {file = "altgraph-0.17.4-py2.py3-none-any.whl", hash = "sha256:642743b4750de17e655e6711601b077bc6598dbfa3ba5fa2b2a35ce12b508dff"}, + {file = "altgraph-0.17.4.tar.gz", hash = "sha256:1b5afbb98f6c4dcadb2e2ae6ab9fa994bbb8c1d75f4fa96d340f9437ae454406"}, +] + +[[package]] +name = "black" +version = "23.12.1" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.8" +files = [ + {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, + {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, + {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, + {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, + {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, + {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, + {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, + {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, + {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, + {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, + {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, + {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, + {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, + {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, + {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, + {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, + {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, + {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, + {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, + {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, + {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, + {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "macholib" +version = "1.16.3" +description = "Mach-O header analysis and editing" +optional = false +python-versions = "*" +files = [ + {file = "macholib-1.16.3-py2.py3-none-any.whl", hash = "sha256:0e315d7583d38b8c77e815b1ecbdbf504a8258d8b3e17b61165c6feb60d18f2c"}, + {file = "macholib-1.16.3.tar.gz", hash = "sha256:07ae9e15e8e4cd9a788013d81f5908b3609aa76f9b1421bae9c4d7606ec86a30"}, +] + +[package.dependencies] +altgraph = ">=0.17" + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "pefile" +version = "2023.2.7" +description = "Python PE parsing module" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"}, + {file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"}, +] + +[[package]] +name = "platformdirs" +version = "4.1.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, +] + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] + +[[package]] +name = "pyinstaller" +version = "6.3.0" +description = "PyInstaller bundles a Python application and all its dependencies into a single package." +optional = false +python-versions = "<3.13,>=3.8" +files = [] +develop = true + +[package.dependencies] +altgraph = "*" +macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} +packaging = ">=22.0" +pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} +pyinstaller-hooks-contrib = ">=2021.4" +pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} +setuptools = ">=42.0.0" + +[package.extras] +completion = ["argcomplete"] +hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] + +[package.source] +type = "directory" +url = "custom-pyinstaller" + +[[package]] +name = "pyinstaller-hooks-contrib" +version = "2023.11" +description = "Community maintained hooks for PyInstaller" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyinstaller-hooks-contrib-2023.11.tar.gz", hash = "sha256:5dd7a8a054a65c19cdaa381cabcfbe76f44d5f88d18214b0c570a0cd139be77f"}, + {file = "pyinstaller_hooks_contrib-2023.11-py2.py3-none-any.whl", hash = "sha256:f2a75dac2968ec81f92dcd3768906f654fa4204bc496126ae8483e87a5d89602"}, +] + +[[package]] +name = "pywin32-ctypes" +version = "0.2.2" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, + {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, +] + +[[package]] +name = "setuptools" +version = "69.0.3" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[metadata] +lock-version = "2.0" +python-versions = "3.11.5" +content-hash = "93a08b7ba11430ec8f22544997a3715b227d38ded84452fa6ecf120db1c20c79" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..2ebb2a8 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,18 @@ +[tool.poetry] +name = "discord messenger" +version = "0.1.0" +description = "Simple CLI to send Discord messages via a webhook" +authors = ["jlw4049 "] +license = "MIT" +readme = "README.md" + +[tool.poetry.dependencies] +python = "3.11.5" + +[tool.poetry.group.dev.dependencies] +black = "^23.9.1" +pyinstaller = {path = "custom-pyinstaller", develop = true} + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/send_discord_msg.py b/send_discord_msg.py new file mode 100644 index 0000000..b45c3dc --- /dev/null +++ b/send_discord_msg.py @@ -0,0 +1,50 @@ +import sys +import argparse +import time +from discord_webhook import DiscordWebhook +from requests.exceptions import Timeout + + +def send_discord_webhook( + webhook_url, message, max_retries=3, retry_delay=5, ignore_errors=False +): + for attempt in range(max_retries): + try: + webhook = DiscordWebhook(url=webhook_url, content=message) + webhook.execute() + print("Webhook message sent successfully.") + sys.exit(0) + except Timeout as e: + print(f"Error sending webhook message: {e}") + if attempt < max_retries - 1: + print(f"Retrying in {retry_delay} seconds...") + time.sleep(retry_delay) + elif ignore_errors: + print("Ignoring errors. Exiting with success.") + sys.exit(0) + else: + print("Max retries reached. Exiting with failure.") + sys.exit(1) + + +def main(): + parser = argparse.ArgumentParser(description="Send messages to Discord webhooks.") + + parser.add_argument("webhook_url", help="Discord webhook URL") + parser.add_argument("message", help="Message to send") + parser.add_argument( + "-i", + "--ignore-errors", + action="store_true", + help="Ignore errors and exit with success", + ) + + args = parser.parse_args() + + send_discord_webhook( + args.webhook_url, args.message, ignore_errors=args.ignore_errors + ) + + +if __name__ == "__main__": + main()