From 267ef1478948de3df32c10b2f11f27cb92c28752 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 20:12:09 +0000 Subject: [PATCH 001/414] chore(deps): update oven/bun docker tag to v1.1.28 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d963c53..4f77e10 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM oven/bun:1.1.27-alpine AS base +FROM oven/bun:1.1.28-alpine AS base LABEL org.opencontainers.image.source="https://github.com/C4illin/ConvertX" WORKDIR /app From b97b12b449f8f5bb61e9a730eb1aeaa78dca331a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 14:43:48 +0000 Subject: [PATCH 002/414] chore(deps): update dependency @biomejs/biome to v1.9.2 --- bun.lockb | Bin 165180 -> 165180 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 3fa76f9ac57a8475f2f4e8273822691f786f37f0..977bbcd8fa226eb9b17f5971fa6ac9d043e4dec9 100755 GIT binary patch delta 1139 zcmdnf#kHr4Yl5Caf9=m3#UD@cRzJ^~6Cm-q@6p3KOWU3a9GkwvZN|CR0c$q;S=CN% zQP!AjAjL6xN38&y{R75!c`lQ{7^A&E(s!!<5+&H1;@xjS_@7BNjpZ@)e z?98T=RkMx0RPQytkjTWqz{tSDAi%)D(9Z}YpnxTX<$bQ}LUZv29!yu}C{0`WIyi0B zsrOmm+zvWlzufiA^l<;b7uRG?NM2cU*d*_dUXg>lkmb@-j^8z{v=Ddl>&htNVa;Huni}?gjo{wp7SKN7OQLXfDrj>k) zPNC@Ce;Kt6f~h`p>TXK@J$u1E(p`Bq;BTaDzPqKLVl7F#Ao}cck40N8qJOAW@ z?P_~hhDGZ+h8$ewyUNbw*~eotKK7aaIVXNOK6TZLt=xZtLqB&My!)(ExLM@X$;=QN z!#iGJuO&Lv_10%h{|j;+Tlf{76^l(5D>d@F z$zOk^8eMm1%3({5nU%>Cw&Z{Hj+XkctK{(_cj+2I)!_A2F6Z@c?dP}{cIB$uhq;{Q zkG@(!o!0<#-c)4g-Ijacb!Yd}%^nrD+f#+FpX#Yf|5{?a*Dv=`?p}t(?(hfeKHuHu zs3&=N|Ca-f4_@x><$CtnBD(i$8t3eVUJD)Xw@qKG!YJXWqI-SsHJQHbtzrpstudnE zF7tAB#hF^3yE(0=Bw>=}mEHA+_lm8p@K65QXt>omKj4FPskiULb|=}eNs_0WyFW2* z7gS~BXPhL(yzSD(O+gBt0ToCB73^K(VJ{PIF(0Y`DDxjEBLM zKn1&IrAoL@$vO;EV93HG33P-v3)9USAg$WSB*QqJDTPU4dO$N1@ASMTCJj_B+w={M zOsvz-H8F{!N^nk>Ze|jNiy6XMBGb1vGfBd^ywiOenYgF3wV)W_)xsplXf!>uh3PT? D`fazI delta 1114 zcmdnf#kHr4Yl5D_??CrYk()L$y7!p|9~WVg*~J+tsjySZm`D1X;Qi+tWH$O))lTkE zH<-MmRsc-@fYKIq5Pk)e-T|e5KxvD5s63d~m?Xurc}soZqI$ctg3Ue;?#LD|m*4DA zZ2WYu`h^d^9Bk9KT|B~Tnyq3N5i2*PzvN%$mcxxtwjVmZ!(D_2cSWUmZ5tdd8nCnM*I}6qGl8UAD-5 z@3g*x1XcYC$(d_ZzlbiAki8WlZnAon5O3x|?|oa}IP=VyK39oRqQ0?zp2#MK=)U~B z8FL&e=Ik?xXZCz+IPv2<`SQ10Kd>D16>D0?zUoZ(`uUoC``c7@^}Wau7mH2l`F1I{ za&y1u3!sx=&YOtrJSU!ly25?y)8?(8;wve)TUfu;@88GRe3q~6DsnP$ zx+JN#BUJj|x_nR3y(YaAo7egO``>f8mF=mt%XD95p!39?cu#Q`D<^%MpHixIja_Q* zjR@=7pt;3sJ@XE}oNfG~^Xk>J_trf1+;_JkRL5iH4$(#Y>$KLqEZh0&rL1G#luD@c zSb(868QFP#XQkIv8?642QL#ea!<94P#TBby?pO16ny!4iO}~Fri`BLFb%}u;lIeTD zJ=wIo)5}@@&{S3X#^al|<^P-T|La!!>3>1ayKP$3>tVU(uFA)%Pusj_J0{&;p7ozm zufR_9&7&WpeZOYw)x5Z$$QFO9>Kf1M1+jDGFB}R`e>3scqXxxQrWd7`L7mqCbly~C z=e?P>@aU@V7V@)vJ}-#V=21)LGCFZb`>9%4;P!y#3H`?PDSF zP{H0c9`-Wf7W1JBfHMDqGGaiPr$3FepC~gk!Lw?#H4}BWt+aCk%@Ksxh5uYR0+=M s(#=ewa4|zTOJw@iW+q8Emv_2PBNO*@wiXlvyjqy#7!9XqwlG}=0GMj3_y7O^ diff --git a/package.json b/package.json index 23bce09..4d4217e 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "start": "bun run src/index.tsx" }, "devDependencies": { - "@biomejs/biome": "1.9.1", + "@biomejs/biome": "1.9.2", "@eslint/compat": "^1.1.1", "@eslint/js": "^9.9.1", "@ianvs/prettier-plugin-sort-imports": "^4.3.1", From aee19626071ee756d03c845b3585752f8f7e763c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:09:55 +0000 Subject: [PATCH 003/414] chore(deps): update oven/bun docker tag to v1.1.29 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4f77e10..b227c8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM oven/bun:1.1.28-alpine AS base +FROM oven/bun:1.1.29-alpine AS base LABEL org.opencontainers.image.source="https://github.com/C4illin/ConvertX" WORKDIR /app From 22227130dd6bdbcbe622a451a9f5734c08d2aab7 Mon Sep 17 00:00:00 2001 From: C4illin Date: Fri, 20 Sep 2024 12:42:58 +0200 Subject: [PATCH 004/414] chore: add screenshot, fixes #110 --- README.md | 4 ++++ images/preview.png | Bin 0 -> 53619 bytes 2 files changed, 4 insertions(+) create mode 100644 images/preview.png diff --git a/README.md b/README.md index f6288fd..e7435f1 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,10 @@ If you get unable to open database file run `chown -R $USER:$USER path` on the p Tutorial in french: https://belginux.com/installer-convertx-avec-docker/ +## Screenshots + +![ConvertX Preview](images/preview.png) + ## Development 0. Install [Bun](https://bun.sh/) and Git diff --git a/images/preview.png b/images/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..e2754f87e914b3d358815002b7ca597cc994bc07 GIT binary patch literal 53619 zcmeFZ2~?BGx-JYNq9P!opeUfyPRzDU1|cc}%Gfk>kU?pM5CbS-9@SP<8X_v7Op!6n zAP~YF6afVRNhFa3h=>dULV$!RA;}G)argF|-RJIm?!W%E{{OI+%cN3YRlW6Ay~9&a zeGh-JG!fe_yInv)K6aUJ>Sf-{yDG$zMP~yk+g5V7qVrZvq0nTQ6NWXB+G~%@(b>d@W*@t-S0F zMcMB>jEp|;?6BRLw>I0i-#fl3>FE~X+gEkBUC}r6+CWTb+T-b$p6{LnV!s zio*L3Eu|20rtd~EkzkhUb)-|}b)YZil zWfKy$F8aq14jRO*>jjNTq(1-o)>m0^>)$^@YF)NDu775T35xPRMK>LG7vz8X=&)I3 z{YU1b=(TAT5IE~5$Ge+$M$PNPds()1qp>~z)7bwbb9R>2FgZ$jm#S?k zpv1a1mll2G4xl!XiLbzJ7>vRqTi0*1>x{ z1KH1=yOU)u2EC0IsPz=}l8e%-hLtK5} zsC%5ZIYRY=-zI6*=_f<4Ci1E{dacJ#VGB=XvAQo;lKuPuV`)X$0EkXbn0>k%aglh+ zN7<-pLD^E}2Kk8G%|3PuVz3dNYvg~Q#$RH%uHS|1MXJv%U!%M&a(f&SdcTDXD=(<#u&aUiM>}%@85!RUMG@*F13?qKhCme>XhU@g#*`m zd47F!@q0!0+tICC>vKjN_FV1cwQ1-1$AVYpAU4wTa-#j9b%U$@XcYOTbKOLaknv?2 zxHqNEV9)6-)QW@Y_19ZIM$l?U@~Zr3E|V;EOTwUD16SW+k5vyEniA0lZGkU*k)ss1 zC0LOZ9>=?dI@dJ@lj~hL8Gm{nzJhVQbqmngaPMSY%WcOqT|8D#%vjgHIIDSG#DrHo&=g#-j!* zRoyI>4pr3D=T23dv(zK3K^50Wn2Y1cBMul%s-ExStU&;3?;?xx810)H2w>)dZ!Uzm zJrQ?KqB++$t{9|t6OU4(u3f`usayDx0K_4=k!_Bo)s^d%&qYz{>4atT`SHNHF)+bp zgsnr4um{Xf%6wXMslN%J)g{{+AQpRS=_gZjY)X9xkYC5hR>v|Ljfe%5Q^zCoT1nYZ z)cAhz9K{)4qki{NbJqJORo=&|&!o&ap@J_2Z-+)X0)n6?!{e$r_glf1!v>?#0d}BJ z&*3GpAo8>L&rQ`)_1Vu&N%%Ckur8AN1BFT-HYyee*$?mC-CPO@ZFnV8{HQiLSIdwj zZweuZDWC#+CXclAY+F+`&e1{0Uh$VfMi%S?B^B8iKU6GRd4Dma&z=G`=`m%gvl}Nz z(nDv8I}G}hP|bF)Mk7=4@*_zyc{bgH#dQ(fN^ZG)p6f3mVxteVcH71e{*?ZL=3o~B zjA^Qpz5C|z&z_Yq?`xzNp1xYQoMqxv-McL7)7c^@Lc~ZcZdjB)Zp|H-hw3=YkaxeT zE(ljJo3D1h72Scb_TU09#+Joq_@`D8Dh`x-XHGpHQSQ09+KD~sfNzQsEsJy_qISM& zlPY(;c{Z{!)fU(z>Kl5Ah+#%_oBERcf4lLU#x}=iTK7`4JmaWdnb?8_qND%NKql+i zCVMl9+$qaKV9zBtr33u|4s~9%HagHYA&~cDI^*}py2Gk$u5m^%Td@;0dmKyi6V!4iNc1#`=-s zXzqA^KqpRba!FaFI0jo-IS<|vbcv=rRee4`RC6$L<;pO<7?3SbcvN;8QK7Ez3KcXA zaE&8P_OOVeGkZh-Sm>1bpWk9mF<7#8_qO;-gU%wdCFLZwhP2@1KK*GhU@RgPh>VBjY{2_d(02*ZpnEO0TjcW(cq@15E zb_MFO?j=IIUR^8F1jdvr>zL{7Sxn!NEmGVME}JY6@3dAUHd#f4v3k6wVDBC%mQT`_ z+AMHBxe=+=23?@nU`Kk*SqmuVnmY@%+)nkWep0IL^8ukdIlkcS!kS%e6?OyVZLOhDN82)gZIzX(I~Ug0AmyP!9+Ep z4pCuk`{W@&zlB@@jD7{0wpY!s9JtfwxBa#L6mn<7=o0P~5_5*yU~`jurDPL6RXsRz zbWsM$c5`Toct`SvM-2(LyejPTuJT?Xx`}~flMlVWcA(q;JfN?Rc6{8*Cv6j z4I01DaS0-XNVnMEqaKTglio#CO7^VObzx6fAe<`EE@_JWv*T*+y%w9KueB;BE49JI zihpgE6}QcXs=Eml?Y(R8JgIuCW2(GAZnoEHzmKWOhm_QA7t&|6U)}5YP4=_$lWn`o zuSb1hzF`eM#+O1?X^&9JiKRm8YU`Uw$h}%jXfFI5zT`xCH+Abl2b>j^+iIp`=IaIM zb19n8WI_snQ>;y==I*V1A#Z)u2|w(y8+}Pax4F{KQ-Zq+X-QwGY@Xhs&E5b?s4~sQrM<>p6!)&WcC`m*H8EX%{NKoy-sJo?3W{{EyWeSO9w*w;UW@g@a?6KUV z`zqSbAnpqh6|_Sx0TtQ$u!W_SzWpY9(hR%WHbuVHQ$;?}iA&jIc7F+RvAJ$39)=$p zt#RN?%OVdCRQf%0Y$ETyBfBOpqxSuFN3r@y6%lwG?j%j2sU#58kRVtj4Kc3YVjsft z5`^F!x=fGRXH0#lM4P6{uVP`YhqhQ$_X0^w$*UeUTkJhpA5RFUstMYl0@%-f&mAu& zYZJA~x0Cjh4d?VApGUB(p_^6OESnF1gzdK8kAnP$svEPZ41a_f{&K1}+U`u;7yTve ztM>GOB5_NZJywG@wa&~7*+(-3Q-87g5 z`_{tnm+*j7?ofJN0_2mkd}=msRx7P=5+3yRl||;HU1Ix(SEFMcQ(yq~OJ2QCLi~r! zBWF^IESkM9yxgy2Au^^I2fCj&v%k}`{@Q4zZrQw(N-bj)oSFwE9bjT7wHlIk!!uGU zod8-bquq z2D&EU^ce75O8B=Pg&f00l{1#D6M{uwKZbwnqvJv#8BZ-;KGz2@h@Q?N3Nl=4Kwf{l zt1A%tWxA@pb*1hys%K{QUZoN(q*61gU%|G;p7cuqF4mi+z^#CNNK9<60Y8O(!>*=T zkjL@Pxk6!fifxq2Wt;7gIS^bIhuup=D@wzF&%}NMkjkP#daj_t! z{$P3-)dd_ew?Gby0@Ztm0GfiCm{(hhAITX6JAnc`M^+R}(Qfs+RLn$mX7-zkFdxS= z^IMDZaI#~#6W!pUH8(Dh_mHOshXYNQ0HaJ9+oh7al_lJX@orN+Uxx;_E=v$D*d+TT4IQ|=A7U<8bW^r5kU&V;jOwYrmxrTL z!_DcQOIfh#H>x;oi#hLLZgQTDZ?|<}g)f^P(oza->M22A@^xK)0-LlrtvMQ@Z8<*b z9{2$drjJEbx}eQtRKl*PX4x&VTVU@5E1jc;7T6FtdlmL|E>u|S&qVctEa5&#TN%0! zia0q*_ynS38DoBWjEp~1+uN$}_k>|$4P|S^z6rZZ?8B9<`TG0+HG;?C>}<#~%|JF9v3&h_;8rO&vO&LujWtRfc~5D!ql z*xnG8cOg9)sYpk)CULA&Fn;#LsR<`Aw~~%3nO}ITZE22VoBt04At3Po z5^QsrQIU)}3~d?}r;Iw&Hm}(Wfu~2yjK;MnUL`57kGP+FbKUudg7{(nFB(qsL|E1J zE_YrO`aV%lR+nGuUU7O?>=wb;T}Uy01MY?2v?jf%DX$gXt#^s>;}?OC%DqIbyC%(9 zKgq76Q!gE|P>?O~XroJ->+sXrvI`Kx4tc@YCtmBjG1~PZzI5N2P0~kt|Ae+0ca^xD z3f`<@n)P}ey9zx5s=q$F)$!SdyX#07!?Y@}>x*Rh@rPU1aj}U+3(qe3S3eZ)5sWqe z>rghU{QTE`CClIawG*B{yik1Z*qSiw;MqqWiuU5KBfkMq))5tieB|Y4-$(K&+UV$C zA3;UuI`07dO*cl(ho$~H@ZsoDfaBeNW1K%U@LvddLPSLp^2_>&cb+zIshfGlz`3!* zmJ`;ciVrz1Y1O7t?mM2#o(6}2Ke4>uhfPv zkKzVKO3mH4=VEPM#U(^*ogG?{0r!rg^U8p;zlBc9SXm7wSjO{F&*)2v8{Pc2@?~@h ziHzJM96cvle!aRD>G}d+8l|hh(9@OauVmQU0K+pqQ(UdOD&eJpV*JHB5xt??r^9y% zz@!W@Y3{M}%_;q$dsziQEM*x+scXmDVDd2;Zu(C%Lfr!Z{aXEN^1W2tSUE7#fIrC% znE%ZIW8TAQxP-HI-h}^v$E-uJ&v$&U*Ei#kCn9T7T*c^QyuIH?SydE&pr8o3EK2G1 z#M%UHbv*TA-51{7(0}aAi)6LNvK4@_MI?-u;}0}^Y1*N*-td;#jiI~Ho1Ae{S03bt zF`X&Jm+B)wHo(60JLCoImp8Lw)8FBCa+oq0b0B-Tg)&tHOtp;kgmIe};E4*^UlOKb zmPk_`MK}U?k;1@zP4L7N>XV7F(s{M5?ZwWsqewHjgC_HY6fm`kO(Onn>Ka&b zd2U}C75vTfnbqiW_Awlq;POH`j=5573Ez#VoapUah#1Qi?!+TaB5k*(052n??a(gI zn>esxgOQURtf>s`vYThhhSQNqGlwW;{n@+7B4qoG$l`F44e(u*n!1H(+dMZe5bmHa zH;$t`6q~|TR04N$YK3?+A02t{Pn8>?(;7+xo~?$joYlHiwpy@oB3%;p8k-7a{n*jzT;jm}8Bhuf>ZN;~V z;)n`uEDqBRVXlKItMPT3%0_2cPFe1&72jCh0%q$tw5*LXe~)aOBz9qsqc3!gnWO{xjh@%)KCuQisI_DGbj2L z4ASr=O- zlvy<*7Bz7PmeMoS8W&zwo3x#|#TGF(=a_)8fG!{+y7b!d10m0xr`|1fGTs%AK@?FnK6Z;}f)15*)E$L8yjm4LbRZz9 zp|Gw;n$&RXE&C`TSP0)xHGO;0WHX1+>ublkEbqpp|5{0q6veF|c!qL$_$k=MrrA5p zqPD}6{;mXJaST%?nJa#guI`xL#BR|p%j`<<;K?WO(X21pjw-zge~|BRVtu^i4&70N z17Pl{*<~O%H24{=-pJ%3O3bk*rwp z8Z?B_T`6&SAHuTq+TL)L5|sOaQOBWy zb_2f8q7#LzP6VTLq&C^tPrcAz7{!^f;@=}@ta`S<6ZPwdvC9Tx(5uACr3mdNiM0VR z9&fD5!H;V00YSa19eAWfI4mGG-}d7e$OV2GSLMsw67LG}1S!B&YKcMYL3fm>YZvms zjeWT(@Wo5;_7nt$+eo2-9xC@kO#<`u6m$bqQ5w*1j0nY1R2 zpJ#w~*P8!m_+2KWRK@HHNrG2O{)@fkx6(q-5HWtt)pmwN`JQPzo6n`*Omgjx#f=GknGKNh{9;!b@getGb#=A8xilS>`TM3<6M^`q_q zg?fUJEac7`A={fz^1yAJ03ZK*dTAq6@i`r3$eL2qXH85pUVn)k@sF5toNZ2g&AI09 zY+T@pCG9vL1@LBsB?Jx$u*h-C^NmspE`F3$mZ?lQyQ{oIGQX=Sv4^#aZSts` zh_^>vqV^cV5LckCR--I%lj}N~#Y3(CoKXJ`W;IgsLq-Gx51W4ue+xLM3S#?({^l|_ zfmmAsBkl5RkTV_o2qQM*u;2*l4=1~BDb_|xhW}<4d$9Lte3f{B6*2(%c4=Sz%$8zd zw@5%_F<7dcc;KYn+`Gb&wM9MtRdJ?b&6$vqnO$6oW1*&oYm+~5bR$rz^W=qaXIa_h zg^?Us=ofrX-cz!Udhj3V*gp;0FvFIInRUg^94mwDIitjiq`yfrdHz8ky+9F)VxtN0 z1~)4q`zhR34x@?Hl3kfG=m%cbwNr&pOtvNX4T?EZ4aQ4d^h$in;Dagh%e}LRUe73o zBPb|j_wzQHa*#;NG%w^66+cb|77mtKNvtY`7C&;c;~bEa8$eDjYa`*)#tmz!M0EFe zOKeB0H_)Gt^_pwA=eGK@K8t?Gy*Ki$wIcMZ`Qo%hQ({s&^LFMzJJG9fRJ_BAZMe)H zc}!-zV9_Y61JU__WTFQsSdet-=LK?aQHp4d?q8o79-351)v-1d=$ieu+R2D?3+K?mb}g z>1Fxl%p(+RAK6r5b@qK#DTQ?-%(R;q{K-2;fK#~LZ5)xD6`5j7GUrMv>r5mBP(Hi7 zrW6gk?`E#L+5}*67DlYB1i31Dt!6}g=~&J$aTO`H&a!zA$0MJ%v>(?EW9O4wDuGb| z{kg$*tfCk&{HVV3j>lIXPu^+<_zdPFGY;%(%|7WJl!8gP>6ymE%$gzcqUT2(h0on; zI9XGI#DPrQ*38StW4vP@*;ii|Zd}*q=OoW}gt^R?Fl>u#UdGvk4`zfHR-H^M_0v3U zTvg{|-@{k8_WlLHMLRmNA?f6#5zhp;R9=@7cZA-t)&6?3U7;MnY8X+RtdqJM<+MTv z+@A7V>!|ssjcn>_#RvTvCZic>B04!D#XG_ql*vmZrw6|cU5uH+tr#NRMa|DOhpx;( zzkYm-#1TjCuuK?f%~3ExE_iC6T)NeT&Sq&@*gD5UW69Gn}NMp5EY{26t$Fiac-j;>q?fvg@M`WjIv)ajidT)7FPfR?$qV4cl@q0ts4wx5i1bryntradVfz?u zyg<7EVWCqNRTG$=ix4rfWKSk1k`R}y^qGE4W{E={9j<#YIL%)C;xV^K2$Lyfm5033 zUaCLC1`m#_nTu2duDMs9*ygC0TMNz53A-9l|B_(I>X{&5^20gYRaoe^+rGIdC=mI6 ztD}}byk4_pP-A|37TUuWO|0zYX?Pgr#K;Pl&p%)!ZCJK75qU}ehK&5L zXL-z$^*D;3BMLNbOW@4|JK7D528^a4H;b@{wc}+p$Xg6d(m36f6e7La-@^Ss7C(1{=9{W@Cc?_liBXIUdG;SVvCMA7$_p_GpSaNNVQU z#=`mED*ogsWG~%#^g0h@;-Nzmwv03UA(=<@ruZQ@r2TId^N!ssCIU{f`5=c8GHaZ_ zWZjvu_}}$5u#f*%vDQ#@qET5K#e%OWz#e^mlqrC7t2#PxV#724cZv%hZZ1{{jWBmx z&s+*7Lh8WX+Z=MWf`HFv!e)D6WVudULO>zTTp ztMjM-~rW~YJJ)8z+MJ4x-b zk4?w&D)II+VYFoIT$c$5iqUmRRwTMOv?32@RQ^;_c*8BK&jM@#7sBUNc3Ty-(bELX z6-qYQYmcW@RrP5L>_z@yDKacu2{(f^OWYP;6AjiFQauF3=U?>VtOBi?Eb-gI#P!=C zJwd6h!kCHz6Q0?^#ggN4h zRaZi27h{cA^#MAnmt9s^)v`@(E2~$UiKpcJ?WhmR7IaiB{U_1r9gZe_rN@Xf6B+_} z1%ZM^ebo*;=2{QvMN(NY;`%I6i&8AyMd&2z$t_Sis;v-D0|&>VVY5zddx=q$+E}a) z>05*=Vkq=m#V~GTh4JGIOfDKX7q~=aRX`~g3$X<^Yb073=b=1ktg~*#O4b0_MG47aQYdd|4Vt89F;28DS&rvzL z?$jq^QS+ssv-LrSAk=ilq-S97BNCQ~>J+6-eSzVLpqjezZc<^7ON3R>Cl7o+VU`E? zX;nvSF(j_GjeIOBJe1!T;VhhU+H=5urG6!|%G;W=FAo>36<+ryObOomz@h)$I9au8 z<;xMU9q06zcobUb!$s;Qd_yicdB{DHqI;eeXa_A{f03EbbDq1j)T;pa?l4avG9yaGRo^w~3l`;EX3-t?(^QMY*Cy~;j?2soFfBErH#J5(; zoz=Bm|-Yn1$zMD{r1sU`Fb{@QrXpsXZ>d##V8rdy#+QzuTo z?6E_q2Yf_)@+F<5Cb=1oR_DsNrHye{?!ad6yt~muHbJIa0R?9E3w9h96ern$fb%l8|g%ySetjG=6UPgymS5WF&p7g zBjl<3@M&*tRt|ANBSq#(#c5=C0W;;kp%dQm^8OG+Ti9_L@Ymht_hqf?gN*B36S zx?vPaN2utkYAE}Wlqg!L8FtdNnHUxVO68WS)Qp$%mO-qgIc=}%>?dv$hCSc%hKjcv2>8*{e7@D4_BWkaGNCPPezFgllS9z{7%%@gGj&Xm!N#Mgy9sx;PBqv*q zWm-4ikqhpD?nn1n(A7%^7Ac~WCckJ+KM&MXGbuiRkVW?i*+))~EUHekn2ZcM1npKk z?@!U!)AlJ_#)%dpRT}0!Ok@_x+SKq1sz19lyj<4pj|Yz{mX!+UOG)GpR<{mQz7;9M z=L(F#!0{*Ywmb#?n15Hyo!rHpoTCUx2*fAsFk2 zNLe<$bXezd>20lB)?O1=r*d&)7YOBBH`%k@K;%mAo2fR;K7}bB$JeRPMzVUyRnP7U zZ(@~)@P1c83F-z>gavRUWwCR$5=lV>h|HlY&|Kp^{m+am_0dvEJXw+&&Pp*xX8^|Bu2L>DT z4ULyt(ql~yHKL@STMhzse+G{mQASSxB-UDJ+|0Zj+VhJ*QU7EkN-@*G|5theSi(}F z!vr{r6Bi#0Jj?vJCy`WI6)_F%<>dyH1RO7d`9eOSXV`!yB~ESOy#`cX-r zP(EnY34f*1SPuhT5CBO22d~Q8qT;N`pHwf0Mt~A!5ZY%n!@H1JYukl`wmbq)T4y0r zLPg=4=Fjepi+6}xRrX@(N*cdnyjXRk7KG=r)#T9?TVQKcf{WW_QN_OFqP_u&GVdp8 z^zI^Tqy;PK6L)lF*4kT9^>R9bTMFy_h-ngvrd+)d1y8yWb#`<-jtGVk(sbsZ85vHV z1a}F~8N@|beSN;lYAfKRwDi8+gijfb3l6XWTz`wwf_V1;=Xc+)Tq-@|$#KeMNCXKy zmz)$V3cXZV0PVV*&lRFUQdbvR8kI_8j4H zutsd7Ai)0BGTbrga#?&Dj`^&O%Hc$sEHGYMAaypoGa&}|zG(a7W{%;{+pVP7lk!|- zzTq~PUW%n_6>%Ew>C5&We_$=P5FIedu|S(FfrH{o>xffIZFx*Qf?E)Xe0j zT)Jgf!sJt#c3Sr2Y?U*v*F(Vk@_z_>F7S2`sChwII!A6h+C;K&GJmQ_)Dnf;D*spw zLL{BzHStRcysA(}Xwv z=t!N{(OOC6w!GaIf4M%#2>mG|X!s*!@7><>_9F_f(@-x10dGWTR)q9jCdJiUfopGp zd4lf7TZMWNIr>&T$dC0}>2=(x7$5S=1n4th!6lAOr2N_(+STrj)V<-q*`5lE8nxNe zefp-wXf+eOdCKJG9{9V$Eydv}Z#xa}uo4x4qh|k^oTHm8M&3*-zWF8M&W8W!4s{msroUcZj$#h ziEp}G!2OTHHEnl?WM!i#PmaG91NVyrDNj2u5}DvTGfw`T2MQhIY4f?0=j~i~rs~63 zzilq=n9?l^>?&Oa4E2u5%EYmTnr@sM*1A@o!%iCOIR+S&6fhT&+Um#)Si9?vaCh{E zhYlx<*})4-SM_Tdq~ zFE1V5P*+DCG124-;cCGgq!K(}PMBhN+BTgvObk2zxi-?GY|Q4!^~#}e%M@T)_p4~#x8t8XDVaLEPSitR8MSF!3;Vtp$QAg4RzuH*`5&j}Y3 z)C%Rc1@;skp`aE>SFNJdPx>X)fb}BZ?WT+`~G3e@wLf{7rQHN2CjY8pSgqx#nXH<;6)##EJ z2s2g)n>n4#3l`hxOP-#B%BlY6*(r!6`=OD6VbXqX^Z26kc9U?eNa>LBg#r=5=WRq+ zkI4lT#AMWFTho+PAsSlG#WG%mPc|k(u);{hQ*jPm7|eNyFq3g}t}WS}Q72QbJ$RK2 z3y!x=WT{|oI03vlcNjA(<2g3!-NP9X{=UtV!~AsZ7bS;Pyr`q#WdD%ME^ZSdp(FWH6i=+Xh!%wTbQ z2iLSfa#kRzc+eotlJhC0>I^w!qzA>DP)}9UdQ8RMhjn|)D|ne`An=w`-ItE=#v&qJ z4fAyp_U2p|(y5E3ePhkf4=qjd!Zs#E;Sg}*ALV`oK>mU|0mK}g7@!xfe0Xs! z%H#j0!8ZCK`1}7|@uYEcM;4)zafnZUN+-@Fmhq84_bre95{UfY0D=Eo2=f0t{C|qq z56%}7K3GI8W(ZT7B_dVi!awz!ORcav$j%&27H!Ykf`7@o3$f0ro48NFKryf{l5hH8 zNf^wkzA;&St;Sh2OwrwFifpd_Ck_$*Ek0Q5)Hhmh0-q4r{M$b=s1=64^^Pl{9b`|2 z{u-G_0LBBS*Ma}^TU|vjjzl4Pmv*fE@KNj^2=$|b=Dz<)@%H~O6sK<~_M)az)(Mq> zJ;FQl&=X<&^X&;9NWM-Q{MW^gIZJ*_r0vRrFVM6|7Ofhg!CnR`quI>&!zANZj3S_E z4+pV&7R7RLsD<_|aZBb?$$1Lo%3EF-JF9OZmJ~#j{`^U%HA5fXYDqhzn(jCBsOnqR z9?Ay^xt%k(f|5mmY6RoW9?I{AJXo34IZ)N}wPXBdHyGS4-W#~4r@cI0=Q@QFrnLQF zx^vRZ>Lt`ljzW~bQ+cC%7aZ$5AJ1j=!d$ELKZP`dmUEeO4#F+BT|V@%{>mpQA-VGF z82Sg;n2|D;5^Hsd)j-dOeZI0OX`KqE`2EL*mq@J>d5t z$lTMF+0?b+3-IXa{}}$@9D&l#efldCfymV>I;k`t$N0_1(2&L8@t@e{k?9N zyp~c@hZbJ(T569s(~BYT-J19JePX-&Y~5&C1{12aTE)v=lcSz+>g!tE+DXp4%83t~ z#uwKq?d~`J>4`ka{EQIYGjZ;!er#?1+R{kU3v^BZnQO#Mo=l&_%xe`kF_SHp;x^$w zXW1(nYjK%fQb9@8G9GrF(R&(($g4Dk+yIBfyDn4?_l3N3rAkQ+&6A?D@~(;z3-i2! z@OjiUZa;KuU`@XX;$&n~kMdYvtqCI865tz5;?2F8zZ)+24;S3PQ#uuKku^=MDRE!C zO_>!{CRv?UfhI;_dcID2q`^MFgSbOcq)f_78}&=baW>uGCD;f+sWHSUo3hw9i4+%P zjt4N%Xd%TV1aqpV{wKMRWkE1<45xrcC}WcQ{o$rDh{)EDBWh<>Y8WXF+En0q{b`pf z-NxJy()1v9O5*gX^w~M4#~5L5&MJpJG*Cq@TC`xL%|2xGih8rYjdQ$4>7=Q+`oyI* z8xjr9dK$f_BqAldngfPCv9H?YlNa*`n%b{;=G{B35fOefrP7dnb24+{cf+B}q0={t zg3@gU1HaV=s!~Y@$^#818epN~XJjrv5eH7sPC`D9&z{1)I;LQ!t28YJo_UWbXwAa) zn9~3+=Rp#>YI2LcM5vi1P>p)|568IZ1~+AqfHle#M%)&@F$Y(*+=5C6q-&p&BuY8qV9dR#EZh#uGwxbd zfO}sYh47DP9Ouy_uDMkyG_=u;Y0b14s+|qpFF2*cT_iE44TJLNAXlkky)0U7BObXk z&3_^WH|1v61YP8yjt5Mi^UWXBW<@iG!hgqq9Xn_X1WYyHuxZAQk2c|*4br5?UVb|8 zGNs|`OM2mw{&2az@eLB?F|qny3{5LMj9r^_Irvg2VgDl*Eoo6V_ZG{@3>TIHf3C!X zM@E{mH|O`W@|GeSD#-21OHc#sRAM63bDR)hnL>IHy=F2rEH;i=d)KT|U&k>V=G#j; zM!{lykB{5ZNcadQ*Ti0WQLL}!(6WCaY- zIFoo4ZAA7D8)?{rpNcm-re&0WTA>4pg#hBdh{xn9s$Wj%Ui~Q8f)*Am3Y2Y;Mjkv+ z;Sg#SZ{QiF+gLZa=x>nbimNH%TvpJ}+KHO1E;OlWAv-lSs%&*!SaJ=ux-Dsvf%?pm zVYTzE)JwO2GN=S7C1H}nj7*$y24SclL~w9=!D1x)H&AaCH!E>JHl579#6(6h?U>2j zRVb4-xsauVF^;p--{I(>ZykFJ8YKn{WITU*f|)^rD3n)+4mN?|EtZ#J(*0Zkl(e3l zQ~L?|fSKlD_R#z=qqhUvirb1mY>l(FRNRDjrRc9P?jaSP26|6Rt&C)2UnR2AS7cai zB;~OKscwW2a2c?aY#&vs@vHD5XbulIm247MPE*pDXJX!+E1LzSG>$!oy*W}um?BC^5lCW%J`eK78o8EES?_vvm|+j7&IBYD~LPpfMXYl5q+6|l2XtSOddEjtIxC4_XoJ&w<(+W+!I?PR z!h(i7yR;(rw0oj2Yijbu&Zs2>@KTf=8JSLzEeFXPF&1&y7czF$S_=BM63(YVjlA8e zw50kr=f33dgc!KYMj0M3d>ZUSZ#u%;ju{U9zEu$SJ!q@*&E5@5_hQfzR;VQ)Q>z>V zUDH4Bn5dWM1VTa|=dDmoDh$2c{x)p3J8tJR@v z@DbTU*Im_YDsq)H3FUI$rh~6UVA`s$E$P3IUwtzREy`GiGwR9gc1&?pMgqo9q>zxddM#(&C~ne@4F-7s+e!_hSW*HkI8VE_OuV!ss61 zt5po9Hcf^npuj&Z@OL@7mGaN$%eX5}b@UH;RLCT9l!f4$a~W@?C`~bu&mvc+$a##; zsQm;YrP!kBRv)PZJjeTG*ZjRm~KWx3IzqmEiGLU{WyRZFCs zZ7n;^D(9~FY0WPEZ!MH}9g#>xs4M8XuS6;NlkU9N`+E*KOHJ7gB}zL?>T}Ttoa^!U z7oLb@alPqTO&%{GFG3u6N-k{Px~1$yd*y+5^StL@3PpS9znXiIEYH?IzZqBQ+0}P^Qi0*chZO7Bt{j0pftsCyb%S z`%9@VA@OkgCFhiQeP%v03~($RcCLx~gi)%qTV85yuJX41C3JrL{*}t$%G1l~N|?x1 z!t2FK9JY*eT%Q#+$y)94#bH*z4OeAJHu22b;C9E;+H5s;)$VfRA^QLhmC}S*g)qy= z`1AIv*Y#87Yw1Z?YbTtR`!&5rdKK)v!IO!sN1{o2iV~^G*U>znyiYtP7xRwPt*6@c zFka0&{&%pO<2KxsNCw*krwHT_7;Y=F zwp^MN*r=TR@;`4|4bN_ga)8${2YtDE?8#$10<~uwODyHz$b9~iC*7apm3Aq5dlgY@61E4Mi`U%oWQd>|FGG>u%0^_zia4^ z(oQim_?bc7x$g{;#z`Jnc-usGJLKp)vIoZ?dqX{KvgKJ?KG((9c~NVbHc%3h(n)sX z$Y-zb|Ci3+RhSh1&C-CK2DxgXzLu<~Dwgr}=enW4Klx$TE;OecaTPoKH+;7rS#-TT z-Bx#f;NSQA7gyvqB;|`H(1=yz<^IGE=KS3M&$9o59>`;uRONMjIP%v^bsJgOnjiwa z8-#+&pdUzhiNErsaTini8)`wsk#{vP2(p8VaM{;SKW z@5h{HcCNpILqMZ{UN+#*>!l(6ooqTQD@iKz;AoHcrTv-2R>c(^t>~Vs23jv*8kCpU#oD|xwlR>!K<3#Mx7aa+_|!!YsS>n? z*L}Qe_5!IoYvJnN`ZMC&9L;Zgo!x);YjnS{=10Cg(a;`d-Z&28-s4gE&3#kRX#RyW zf$UT*mCLdBq=eO*)I@x}Yr>}TyQ6Cu7R0_NH#S9=e- zTYs&(&2PXwvB6kwTB%f4tEB?^&Kt zo01-AP5d35+ro47`k{Ye9k15)d)Le1ipFmw4>j~?Q>Y?7iHni6Brt9L4)X^M+F(W9 zmK4HydWx6p{y4ljG8NQ}RsGX+GU{tt(DZoSk!zIVM0L|nT1X_bQ{ha|uLG+~yw{H5 zCXan3-R{0X-y#rQkVLph2Z3ErbwQB5Dc%^VjVMc@acWi-OL1t@9h`mFmisznVWh`` z0BpF~S4i`{yuvolrBW|Q@!p&n{qWJ49Pbz^iEx$<^73%eEK86^k86EuNJ=5tW~1a((op&iGk} z5+c59>oEFU62X!#>+Nb*lK#qj`CW0t7_sb-*+z6z0AoC{h}rUKwM^Jvzs?#kBbEBd zp1*!a9usWoL~mCQRo9dwWv`7Pl{VimZxzfg3ZYFAPTV__0?d0DQa&Jm%+QTKT;BVI zziFE%=4BzSkS<7R2vw`>^%&}N!_oaEeU`!-A%18{@FzQi;)R@Cbql?QP^4cu-v+s_ z&Zj_J!@3~laSNX#Ps@HErfYv7QV#2+>}D%>oPJL@nM_};Y7e^}b61%^*7QzDd5EfZ z+50h6e}i!?m$v1J z=Y$({BD5+`uYV)fdv0F)Rp)EpWV?iVJjieHZNglb&p% zF4SFq=XiwslwUL7!n_Qc2SF9Dj`DNZ*S4V#hc%wJzX^R4 zK&@2YCSuGNE^i3z(D2isBXE~;8PyolH257sKu0jUWo(7;dxC&KD9Yu`@pb7I=4EH* z!!q2&9M_hGUl*FRF&z_m;m^VG4my#(BYd3+9p?AIRxBIUE{*Anwb{0P1@p8at+Q6J}6OYBk^d zPv`}jXvn1g0S>%A!T;*8YI^&M=+$I;&l6~*0nJ_BO;?8?>v$`i;I<%YHIAEWCw#dq z9r5$XfyNw^>EZBjOHAedj-$q?r}A&7YXp89d0!EThC?)>HZZ?F1sQNTV4QB5LilDwY_j zy=TQv9^hGSLbzYss&Qm9(*~8&EB5t z1K4+r{s`429V{a{$RCauPAm@n9!LmJ=n2m*A2MA@X*%wg76)HYgDX}KH4g38*mDE!=E&Nbq1fa+E#C&SKZ>$1sY+ma5$tI_;Z# zBDGaSvFhS0OgqCG&XxL+WddB5Y1x#)>fY7WFo3|C5}}N>EWxKFyPi zdK{2GYDQ{dY!-6KCWs;#piGHJW_T%cTIdSXT^@mLbmm<|&&w9X%MOW|Q!BM(l?y=E z2F^Dmm-hG%?e6h7knSHwOSb8#upZm>{nq^bRA`MsI`#azpTA%~QE`V}0wOfr^@T`_d1tsGICm8|#|IMkrtXfe+lU zw%W56KG{-651V`KQS`NI?O1k&e{fg&kUx(#;RW+8Hh2{_ljNSa_SzDYQHnS68W>5N zeCmR<#pf)LVaT}*0z12T60BA`#R9d#p4-`K!}nMAt1o2@hJCRHvexA+nd1Rt6kh*> zoa<3RDwoI_WG=8@QHrjWzJ4>^(~_mkJCj;xR1$phd3Iw_uXu zBsx%`D{_g&vR<Db`~(L?6(Kfy^*~}r%fGnB+{{`rlS%nF zQtcH`rn2`C-+W`hf5yc+C*ZxdWd&Sz=I*G&*?;ZGg$mV`>RJdQSZHCd^UFC-Xywkxl(2Y>c%~8*xg_%Mjv`eQR zXXMUgvh!F%1#V>6i@2A_Ms;yw`p5zbcZ=}HN~^fHecMQ1`?xBhwEiX!?Yv6I1hm7_B!za_ibJbup>%M7+q?8)IT|`eV~XDX%ri;8;Oz9- z(tuBD{nA=tL)DYN$E8Yorre7QW5^V4og7k5-+oOGEuABMrj?#gvfd0eD~9!!Q9rnG zCF|`6DuxPAe=6+fazeP&T*M|hs=XhxN9ql%4LV`7 zN9x$Oa!1X#CXqS|y7>}0gY=j2uP7Tqvvg;c$ZN_rwY}$KDsWq|y0Ae^m4_xgW_$kf z=68~te;_5L3(2N?k)IYWkX`h+2E861qzT;Zz^u)3I!1ggoaS(xA-jfuGdA`fl_S8| z&~FvJKI!@58?Bh0%kv_Nb~gf(0~*$L%HS7@+){S=n`lqZHchEvX5Cgv&d75E@OR=i z$++wVb6uWtE@$=wc#P?V_k2?M#34Z z$Cy9@2+v||1|C4m!)c}SX_A{nDv(+J!VL%TPd^~~)r-SvC1qnJEo|fx#W!$7!cNGG z^}Z6t65%(}96lN{`=Xs#YDwwAbI0^Li%s&@zsI*%iX$DD3a;dY)+qkn5&Y>gKh#Vc z5VEm}{ojXy2}>9lEOQAW_tA~LLi%(k#W4LIZx%dHqe0LAOgzc-iOhw5buZVx>wgsP zuxaSk+C^_{zUvum?@iLtP3Oor7cKQKkMw)LuJ0Om%9ldZu*&YnbNakGc}BbnR?mio zv8e=hu`MHFiszuNyo*sTmJanJwuna{UZ<^;DYLd2rp~-@Z>Sl&H6C%tK`)Sg(l94l zZ!V&YjdBwAltDGgt=8zbVNm1a@@nftjBCbfFwbkHIn8!pha54P-I$%%v=bYZIrWZ; z)Gn&_^sAX^C7Ev4vt_U~>M5ePc|PFq>-U2fdwdx$#3rq3>s9&(|ENTcMJb?IhJCe@ zAi1&uGQLsMPICJ9pWBE0fF<0I9iU-~=?i6De?~r#)`YsYC;=7e41{q!gT6J>va@*R zaL5aNu30UE=~V|>Sm`CcZ8~vz2PEUzNWFCR5O232Jm?(e0TF))LmT{lhQhS@*R@(^ zrXr~xU>niTTJuwz>T3aoLEVDb>is&YtB4x9yrYlcZ{qxNY-O|0`riY%xL3^X8u7?G z1Luw=2q3uRdV8I{WNi(p?Vii;c6au{fd8MGSAa;=0!PyB7)) z`(kaMsxOfkmJyqukKTQ=Jjcs-FJ`8g8Ah4E6-d$eYftRJ^|m|h#u_>c{l5JXDUo*u z&mEZ*AkUFZ%{c54x7U$gxoSN{racbygn0r>+RSXsVlC&ZOjl&P^1bC9+mD$ex+QLQ z>_wlha^zecF9KfiUlWl+<6h?4!erJDzxyRcPF4q=R&^wl=EeI~c2Qx6yo?_$ZgPlK zpO}dB@&QTd zf;8R37{+PD%Yna)m%8!UI5PHC?+`&dV%2UQDb>fNQrfN;YK-#27F(*+5YYN?&UlU z`L(>?iiAl!b{I2r8i619Sr}MOlJ@;fl6Lbye|RNHim~~(B&niOrpihUKJXnE)8&>C zdRB8KuQIJ2-apyI?63*+(6F1M08g`A!Isq@vAo@*Q|1je=WK@>G)r-yIF|HFNBcMg za%#4h(sDOAV5;F~t|!}S+k?yZ*FhVqn^JXev|bNSwat15c0vyOWo3XqgSQLX?yZ?* zr?m1}gCPm(<(2ID(u-@gU7IE?$YII@OK*I-OpuiqddJ!JcUO(hi<$f(014-au^l!; z4&NLD32Yg2CZ=%4eUgH=acqqt-aPO#Pm7-f{>Rv+pS_fMPYoCMCQ7ye%%_+aWA}r1 zOGo!%Bxc+}FpMc4I*q9Pb4<*;h2HAEO$O+YV=oypPfdHkd)45*_uJZls$5MBX+t%+ zt@5b@32sO7^yQ!Y62H;tm1_FE7eAnxR`YE?sJRTE^mRAbW($G9zn_{D0yF;QFpcT{ zjmDiVcM&u48S2;NW9!_1S~;89K+E>J1p~L`8qo`H<~NOu41Ybizviv9~d}!lR6mp>*_=|HZ#T6&*sc$BztqQe64`aISDu=rDUVM`F>ZRWe zgLsRiB*m+%AZ*vxFI11DDpw}~$j1!-n>5o&P!ib%MojpFB>uHppVJCTm*l_AjN9k5 z;umhazo`LPTMkIsFC1H%Z|khUq<%Ylac=eF0#U^y0+20zM-~I43Pjs9z^1B`le5n7 zgSO5>Lk%O?Vr@*}(9}^f>GIC_R3=e8`xL{Zr=* z-m_WN1w-kq+kDMYN9W5UNmwdB%UmVkdB|a8suv&VWOx0gY^Y?h#7{eCNL^~!?lvK-df1fm!LRQDDCLSeyzr!a)%e{OoNyS%BIv~A<@^1%4JrPv<~Xv!gNvBP#*qJ zS|BC5(*@61>O7^GyxTOm<13g9vF7Z&&#bCVYV*0s!{=gbw%pFG9Uhj3ycgvaNO>7- z=T?`xLu~_I(<8~VKWEzK>IG9({U<<>dHw}G zc%*Nw^}LU2{3Tw6HZ*6JKG(OoUmh2j;Zc|;^d6Djkvs`{h?fUbHqJjmbQ*t8u;b`8U;vKwc&+Rk;Vjy&X;al0^g{?;Tb)#m?be1#PyP2$Qqc z@8@kn8q6hZ&0?4yOjZU@9bb8B-cI{Dn%bLx4x6=p=RgH;kMq?NeN zQ(7A*k`Ea8MVz%zeL3Zz8VER?q?8qC>Jl}F-IG&orN) zE0?VMpcd5NE7le)TdXM~X`Wna;G+#((9f_L(H8%#=GCuq$>&TQR6EEeioikblw&gR z<5__p--wQ1(Kqs`bd6mL`6#o(`Fm<+VN=5K*{;7>Z8PZx%sZ$-eM$kG5zY$KA2$*x z+LOGEHy2TC+(rNN`;jb$G^C-s@K0n64kay$${KWhEl}ALE$dn0I=s%gObF7TD#~_v z4Uun;iF|E+xLv})JKb8WZS<9v40!#gcYW^q%Hl%C7K8X)yShT^HeFdDTKg==EwqWh z5m(2(b$?HYJT+H6Q7r(;y|*G`S2|ARW$A8>k~J1F-M$q*qi`AxcH6=x zR6)8K)X);;a}p9hxKhH&l1={jCO-3`i9oB{D!_*(#r7PDxx%4vLe9RD+ku1F;nXdV zX8|j?<=>Y*I&;bu3K|KvsQ_?J_axbjg7E?pFYgSKryGoUuJ3oDgwOZ6Q2CZ2UgRAPo5$x>F0fIzBOXy%}2l7JsnbF#w;R zHv9@$_M_J_5)bbfbY0GI%j&Z8IFexI)o~N;`U_C_h6#YST|;k}CfrZql3F{vSN;RI z;h+Yy9XqUcjXy;w@YxQn3-@J@mGqu6Y5+mzgoCq_nwtPHU*Sb!ix-I%dAt*@b526L%c`HD!{L_`7{8@jsp*l%-`ZoVj8`bbzJMdtY#6R7`dO93;7lU zD(L{mN_qJH`Sh~s2cI3fe^#~H&5XZzVpE;_oTAf(G?!6^b!h`@Cf=LYL%>8@T*CDatA>cTrmQST7c@96)YXQ`CiI?VeEm_sQpYB1yAlFuM%a7N-UQtFGgg(nZcVa63iK}^+UFfS{ z`6#q~yluJ%Ual*wkc^6Hd$Y<~z3%&J$l(itF~^pNSU+yU&RDg;tw{GG zpI0@xDj4uj_|roe6GH@XgRDUG$5y9$$19i0LNznpFn@V$>TE;Hs}pM5M-2`_!b{%j z^=QsUT?H3_y)XV;XFJ+%WWYIUQR*jRZ-w(MEs9)|`6q|P zRGhu+YHE`T{O+CHl1<02mdal8cP!Hdr)v}mYvZ;GpmH^n5?))~2?vJrqawJ$=Flc9 z3U9DX>EZL`zeE;vyf2O>=3Inw<_^NQ9$bsMn)2Y|abS5LI>+j%4fv2=Pu8!MF(Fgy z^>991dL&EjTfi4qm(6t5fdN(ny=zLj$k;2nHlT`huA*%LWBSBlfl)T39rwJJ8hSAF z@=Wt;@yY$e)Ves1ZuwX ziPe~$?Uj19PIW+%3x2viTiWP=7YFTDNnbqmKqAg{qeO43Uc4|=wP3S+$8Ia}jW@28 zuQy9Su^#%mNz!6=p|3uOenRF}f@9sh4{!K1{F&G);`uicTQM&l-f}-Qd{3;620kcj z$K7Qfb$&#wNayvZ(TuY~hmtMVJaNU!-&<4jqW8@KvuCT(7cUu68Se!kN$ZZ_O?2@32o_ElNX)+O3ENyIBHZSyMYa?#uh_V*6i=Hoqgfuq+3)o4bqKZ znyQbMWk0QGZP%3yoNOpNeQhDWU0~nc2X$UPA2peuA|{EL5L{4leMnouz}UBkx?w|C zCXt~Odwteub6ei5_R!;_M(rt>=Es#T8IIoi%&(&gh3x}X?P?k!DmcHmfK3$AQvZPr z|Amh}E)1=~fW_O1Eb)<6^*;PDMa`M)Nn=>O&qU~W^IO(v-<&SP2h@qc7$b{BF1_=L zjZLKn3?`4KiuDwml9m=g12{KkBQicQm0K`hqk+?L3~MacuN>z(-S|9?!eq__%_3M! zY8pA1&=JgCC$lh$2AYFX^}_4lT|nIAK5X8cCauDna-`>&DdUww@Qv+SREv<*CB|6a zEQjGetIJ@_vBKIUIc1|RHwO(eqo zN|^<+h1>GpZH8){SAAuqpauWRmSAbzJ{_y2wOehWRRC3mv)#0>5ph`TbxS3c>*Pj? zTw07l*oev0ZuLy2<41~Fg+m2_+)E+vh7PW+nc&!l$soff)}mD8dedP6VX0%`gmq>H zjEV{GWW8vqhskuex8Cm5(9P1l^!IVFUvzCcpn}$6ag35^I^r!=0gsvP^Ur5zhFd*#zLEpCdWuYFn|>=>njGV>BnU2sx~{l`nH1i5CSiT6>+tmi z!iW{|PIy9GVvFH!wX8-H*b=d~e!XjI zs?B|u(z$@?Eeg79zOQO&vGdlJB?%{-|$om~wMQNRXfXV4iodZjHR2X=2>l7Q;*mE1f}TNX(!% zrQna3QL8hm>S|z{Y-1)KlgQ)6oZo0i-*za;JS2QVmW3z4f>m_GW-#@Mn}SFe2p$Z4 zApRhHbRq#yYGMN@Gwka@XgH6`1XO8A{uZ79yxd`DQ13asaUJx5XN8iTqspdomb;lM&<5NGIN8+itoL)916JHE$Ae4e>TEMgKyqMO$3S^$sn4LsU_% zkA80`h8;Qmm=Ala2GM+AsrnhEHcouY9Y5dFlDQ*-y7jBA_aTgUO>i1)^oWvF_Hf)&{tZ(4tF5>WSe5sfV*2CJOlLdrMrU*%3eT0&pPaV6NTY7P|xYh z>Ds8SduPJO&6UPDg~=Hh5fzg;nvts_<4351=|(uuo34f=Bzh4>$Qq_*Hp7e^!P08i9}!2&|Yrk)*w5BM~Chvh1B5c6xSw& z;Bv?M>?0DcWZ=Ulyl0dYxkSP1%Khi0Lsu&h$K)ou{n;UOh3@t~gDl(17d zh$)!PT4y^_Zjf=Yo(()}s4FSOs~X3AsxA!uR)`az*a+;`gO%3N5PT0cuhO8 zi1?>_aKOXdOP%f5PssKLdY38J935|_T`O_u#Q(;&X^ta0;R4 z(da(hjrWLtWqkWm6)y&$S;iLWzLvsA(cMzVz-<7`j_$SSYhMK=ARo17f|Ph=7L#FD zD^b&{k@LFna`WT6;66)}iT)QOW?J*q-sfq&&u~$R6#!)pkSf6sHzKMI?^u0E_-c=( z>;cN}fEes;*xB-D65et$1MzW9_ZP^&hZA%dXUfUe14rfqmGJIXRe;GGvg9^HpWYLK z=xoIdyyD#-ljLaeG^uQx>1E!!quKt&RkKZH?X{Z=I2<*v#jg4L#+V(){G2#c!|lkB zH*CHgMuJ{3Jn7KtZzl;~FrWsLons z9aQvvalyHBcIywQ><2t+L>y6TospNhZ&kO+N@G2ATf81>m~QzPW1N7A5E}pq_L>9` zZ67tPQx{PMV`ljf){Um6ya_@opZ;$TuZJp*02o3#oj*7T1@Ce6^}K z{XCATb~7)w0?Oaz=!UFdgh!!{oH2l5h3aDYW`vn?k-Z?<&-5A8IE=`BXO5 z6@Trx*r)|AaEuc>t{aB3uVUOkJ5OhiDkC8fReRdR>B%KE{FA{NDms_u&TFqcsR-W{ zGAx_$&P>ZeO;uK-@txUgOQAy`O@HbMg4J&Ch8Ck4`IJ}T2@x{|lDF@v60#z+A-lN` zUR*df|J5WJbi#tXQK+=beozhNSJx8%l=(F`a5kQwX2xf$VC*;fMdXF zHwz$Aw<-wR7+egQirl@|B*(R66J$rC*?}Dx*il!WGguv1_uNb6h5$` zd|qAMH*EEKBs==HRq0_}Km9EabIr@nuZ3)g20iwwg4_L^!5L9-1cA4xwX>67qs9R_ z_-M703>ZJV;e49#-cHNt?PN%J^39DYC&7sjjU(`cVJr1P5LTWls#;FcEkUhfX<8Ew zy3s78urHbo#f1Q*;eV1e|Nf7~_&GOTVkcJp7i^Qly)zbycGy*r^ghss|LhlRKDg)A zyvlutVM9y&0bX~;Gi_N=)`+=BkSdBgeF}9ot`dCt%#LTr#8y8q*v?~iy9da&&##Ae z^RZ_as$jsrin^yH_J{x~V)t&^9oLRckTs5Vk!{bmV)My|;G^%(?}Lx7kLNQ}Cnk_E z8{8{%i=YIW5=tcIaAU4ks(Ybo!F9NU)&{R2gpDUpB)fNH?SgEmSs{QF_SH>ZEC{;B zFC7OH-y~iZ2tz-Q6d9BhCLBKDC%=w|RoSZWlj1+vQ?m^#u}zkbPjJ&Ntgzw57!CL+ z115@jv9&~g_9o&&zWaV2tp&~X?rooj!2f7OeBudH4QPAV_Gs%+;YnUCB#n)aQsVt+jD>3Lg61CD8LE(h~ShKQ3~_ou(g47oIz$`+E4iY z`d+SaLvP8YySaS;C1yKXvC>SL^x_Eevpnkk6^X*R&~!u+tq>f#D3s) zHP1vN<7Pu)dh%~P_;z%P3!pA#0f%(Gp+#CoF3OVfyFj7E$>URNJB9%P3x5#s0Ka|$ zZW1re3b%@Z&V-%@|4YWm!NuZUxu>^^(VRiqV;!Mj_imGN*BQV)s~_CU2NhDDPy}DS z1fGBrT1Kv1cqU=8EDm8?6u$^G?2hUw;Yqbvnh^TNz9~eHu>C z?hup)9^&RMzBupU1CtVNHFMKeH2?IrHTj=c*5Io zCMH}>K^SV^NZ)C~)3G(EtGrpcL*WTJx`%`y_)8`2Hx(6fLsCWfNXBv3|V7R72DRZ70bV~Q1&G_h^jDMEQD6z+BHl;x5P0| zmVw=!JF*VVSHG--uJY1!0V%Qf>pbY)M!g=fJf*Ije|M1$19Xls1fOvk;D8}%oq4)|U<9<&WkPKo2A8J_( zZ~{#Cod7v`tq?kP^;S1|1Cc<;;WNW(9%}%Dv9e&o;WkOWwBg3UHMqj47wzESZ<@ne zg(&k8F&>Y%0v<<$cMkq|=MQ19%feGrQQRhIOxL;vkmO_?RFejF&~nQkxprkqfRB5f zdU)o3RlybvuLCOl>{cQ4&^@cqE{}MDc#OqAJ=nAr8?^#U!8&NnJ+;pQsQ7zg27nCv zED!Lh*9fR5I#a`^-kAts&S`I^*Ir9gS{$a@=(fhZ5(qppI{v;r4W>Wen`|ZT)4Pd29hRt3D>C61xG zu|^njO5AP^@fNc`C}tyj)=pdP3{`DzATbcr)pafi?;NNM*$`0Dk@be7M@sJ+T$;-&0M<%20v8&%Z(R@kHy3=qtjnYthH=OUwf?-!HbY!9ot7 zJNXm5Ak5L10J@?<5y+ivFxU`uJ&rs86%@Yx;KdH?5KtZ6>(s|*P~Mi})#$T5m>$=s zN|*-vc{mUp08#` zd+fwOzCIP7H2mf&C|4XX6SU?kRhj1X^cI{9!hGJ1gHhE619$||2m&OJ?GOZ&Na5+e zmdjw@q)q_w+g9>SGG7lekBR;MyxQ}f)vg>!s+OElRfA>EI5$b2CJ;5>bwDngzSus3H z>o>R$@qw_}k$G(EzX6fG1)aPe8ZRpm!g}c&RFo$1oSwX~lSOkH33a*sbUrK_$mN%$ zSP*Ed9Jtn56i#?zcu{DNTj41^d%hS|@x|!iYSdMVptX(@2(!0stY^cI;fSUtpM%@B zeURHyPlDs0HvA1JkTrqJQoyxSM?e@81C0kU%VEp%*+uLRVqIXcYGJ?6ZGi09G9#hE zvq(E4!2Ki*$*LV+`ZfnK?dIMfgd?bGpS*H+{3}~Kq`)mgh}#0>^cW%ZZD5hJX6XU= zb>lXW!@GyoJbBjTu<*;mr{QXDSuZPPe3$IzF1tTU4W9Gq@=2ddEu{Ddn$~=ao$>J6 zUf%=97hHdPww$h#NWU?h)1F48RxaYMFxaA%LSb5`jCt#EwRQzJ<&^!GcMF%Q!5UstuLBMW2+D9kA#}ex6A$D3>Sk74o$qO)B0NJ ztFmau-rEb&WtG>?U)Eo5|HqBpk-Pi$G_78@X~*F`5t+NI4wtBGjlEMMpnq?pdaQte z>7Gr3Z{#)^irmw>cjx_{*wzyXg|k%jybdCWl9%Dvmf4eRi^yfshis_YIyyS+_wR|p zuuwN*kd=JS*uDMT&KtO4u&AU)2z>vnnkVt}t#V-#+k}JI53=ky>i&DPS%2qimyF z@`6pQ=10$ztAn1@5UqqX^S1sd$WlKasyf(WtX z7xJI2;A*1@g5-;xp!=*^SU2rv@kM-|wRmJ-^vlqP-V;1{dnJ30BpxfWqq~GnB4l%# zm3m$bR;)WS<)>-s>%g=l@?%ra(=a=@82zj4ys<*(rJB z+=@1{Qw6co&D){Mubcxui$bYfXK@>N0@QlHOp;M!w^Yf!pa(;w@5Wo^c0tgm>OZvg z9>iK_%AtM{B7T0(ol&Go5DnUAep~q3e8GcW;3Y=j)^ZUfzglWl``F$9A9Rh*pbZN@ zlGZ0u_}b@rbiw{~#3wJyaoc9Jk6Q*}sj2a%Kt0S1c8Cx`nrVJR$nY!nJ6RQ5O5V%4 z`Cgx1*=Og|W7mu+CuC5nE5wVs$QLU6qCbr=V(G}wdM)E5Dv1QEM6mQYlarPH{!dE> zg9f@>(4nMGaz{Nqo8#laq~rZ2INk#kL~lwdafY@_Pnl9J-J7S^9-1-2ftJS}vt}J1 zndzz@sTfQxPn@q$8}T__?A4Ea(wmp=74l(0>yZ{Yv=Fcw)gTC05+ZH_bjbm9`F)u# zAIEed(3Ft0l=2JkqTej6_Y0#-&vHlXr_`jB%RH49q++0K4 zu~P4dSKSV6r}MjHN~@n8lfvNc^+t_LEJzaOV#R&?JVu1REbOIU)p^ZkR|AR!*C9jR z-+bWfUDZ9;Jttj*A0Q^z5|82Sn#a_nK6v*Ni*t}VQ~mC{%5k1?2r>+_K$|3#ux=MR z`qbzFlFZZ{$jJ0mWRo8ft&vn1CJ21YNyi4ZI6sv{@%hzh5hGSwOgvdb~*sG~+RJ`2*_7;Qlbh5tkdsD>*nSEMq}sgh}=<2z3t*uDd|dPB)|k zyB1yf5Y#*u7S%peMP#xTrA81X#&#kQvUjW?SsUqiixACM&`8*A6+OWQiP1mh{Q^AA zgegNZ#|#ZLc3lm2TsPpbj*A;o>rcEuY3%A%cUqK=>llPhD{bElB*K2i;dNMcP;6V^ zM(Si$5$rI%FWIodm6ak@#dm@B)o2b`KED??eql|sbtF12RLMH&p@gk2AcI^k04*iI34|H$0b06EDRy9L2rpJw;{X*E}x?Tz;IALLDWenARphqT~ zs2djBMRANP=qY!Kv%r);r+YZGF4jNqsji3_@2yuKVNcTX)gDx`#`Bv!Ikf}nh8`Fe z0$+n`O{Ecix&vd|wcIllaMI--b@&RIIW6f*LUQvB6i)dpLIAGw!3rMQ?!_%hp{Cix zJ&e&RU6kyGnhhS-tHaCR^;FwR3K8X1uUOs45=7m8D2R|}$9Wa>T(5gu``LQv@^zaD zRUvD~%e$yvl{u`|n-~0TGA)LyBiW}%BEBpnd7LDOAE&U(6$fCkirA^!GnuSDkD_Ws z5$%CErH?Wa@r@bG{*0F%sbEqw*{mJ9WNLX)EGe?H2JR$IB&$#sY8=}?PX`nWqV)1+ zj#`fQ*Gp5_BNe{LoiL1lpKDLDv5wL%<)=J-q-KVN*4}P#kXpMzVwr7(Pr)6Mwj)e_O_gFWLbEfGgbj8V}cYs(DWJd3}oL_KA z@l0xOPxe6Kv@(U9kba;D|AZ*m5ai%@%PP6EkRWc8y=>NgsPA_#rq6`WuMqUvKh4@B zOSoDiA%CN)-$`svLklp#)}Jq6E;>SsM6#U)%&&?;Uz1aW(`qoW1BnVao?Y&^*-@=C z1~nqg<=ieDAWrwKd0{C%&*~l_3og^Gj95m>k3~-W=FherHy>9WBzYQ-KmNd#B>8ad z_vCQ;3Ve3pM>{0j_wjT!aO!w3#V^>wn2lQ~2<>Avdr;~rD!n}lJ4vjWsu6N275A;p zmV9%GliE9XhE>+rgr{R{f*@N6*Tc1skZ0(e zxB-j-v%hi-T}fON%@`>&)2SdH3s8ihn^OhJpMD`f5<&kWf*M?#Yc8i|cqmhP-%<)k z>QegZ@PxO^@-(bwKu`kaZD(t$6E4zkPnpt#iau0-KE)4t2pies+n;EZZC@E4G#Imq-GT0Uh& zmr~(dQpc$eq(-u){OyAtu)bNaGMJK3wpNV0;z)1;u@ewZt=@?eOd$7=@RiL;r9{VZ zOTL*&>62<@XqkJKXw|)p}8O*lzBW( zKMF|g?9^43=-;Q3G2%N-g9>ejunuDV7aKwgl8#xgpx+6yAZT<*5zo3SI$2m!Iz^#+ z->I-*Nu%Up_wF^xHQ_zx@GH(wyHGt?rQbd4Be3i>R`#YjeQx%S=ZpG)MeZq?O7iqVF zQRMOTJi;|24?o}~*+ZI(j-XO`v_jKmia z?a9-?0nC}RLO*NZn2R$iBW#+3PfJ}#YI$tCZAON-2Q8#Lc1CBiUBLqt+NHwm$+yCo zu$bK>G61v2vANJWcKqRcTSS4gPUCnLDGzB9JgF70MK+vS1$YJY;4D}Y(AFD1aTuCudIP*ZuCa*)GpY>|krAm)t#f_RnW96_dHy@UFm((vf zRyL!@&+N&6?qkA=X^Q^fS5NVY5%(as*XTG+43rlsEyc!>(9Tr@;^J&wN@#OGDFryn zuwC?B)PDBy5wc3Lo(GCe_8w8GUtoDsF(W-}=dB;faoSVLZ>dLIa3fkoyFQ;??IjN| zhP9lqzD1|FI809#QKO#DW{>EO%rsqkhC_Cz8+(1QYxX(AZKJWIdacJ*b?cq(*5EMV zsGcmv(@h@WD(ZT_L@fjmTHon*@7}!7q98sEcV%$yN}tN**U4e0 zC5>~Pm=A;FI@YAlWFcyco_tWFXdGL}nse|IU`RE4v^gSbK86bW)yZpZ5<4HK=7RGx zEhjGg#+B=4*;2^`aecg~D7E*1%R6?j3f~`0m#JGA z+os2EG^r=@BEan!xk7(8Vf3sGe%4Qaq8fII2h+E5QK+qaN{hY-TGZ8!mQ7RF8=h*O zWoP>qyWu;ugwZoub6Ua?#QySh@+)LQ)VPvXODZjv`m#WIsV6unwg;=>QbenXov)$I?SwZv@MIq}%qx=_`2BXX?Pk?jDMjIvAj8O0P9!NvX!Iy>Q=+kn#e%xdWlYAwTT2!rG7oD?e?CZKyhnhom8%hU2-~ip zA~kC5YGXUEAF&l8zBF>fLd~9lft?jrYif^W!HaJADc=*B!p_=opx18&i#^+G)Ao-tCVQj13& zWDq6@#X)-n@AZHl0KsMuE8eaaP6>YEP}0&inO~IMb@RL=KFFmZJj__I zQUJwGuOh$oiDiS1yiiLNTKgO{Swk$;@bcL03PKU!9%H#wsXP&bl-WXbZ9@>t1$Sdk zA9-DiB$4k^;8PR1jLOPKLU|vtwudJ?)}j9Ehj#w_P%3kH0MKGo1Z=K}dv}z7$o#NB zZDhjy1FeKuMjXbay&#gyp3|gDf#n#=7esub{wicWdIb0_h=} z^R7AnydgQCD;~zyd^x_jONo|Bb4JIqWlvCSSTHg*#kSQhn(nWGz)2h1QTxjw*bpBP zw6hVoG#UayT;P4{q4}9lnd^T5Ck)Dp@KGKWHh^0BG8N<^e&6-yVxUH8ZF;NRxCNAN z4_p0*4=im$JDNv=Q!NF_FfnNKpBYv4@cxPkL4)$=9R+JdfsnPbB z#}`+GdT-7j*w^X~&*3-fltkqK4&ezY7Vwf{ zd>I(+xp>#3>decpH&<{9z&1!MTma~uu;!7)+x)~QXGtaV!&*+_QKA6Xh87*;TM4tD zPt}rMpED{9HRtr7(E`Zkx`$c86-|ZL1z&q@AS~NV{_UY4AU;%!w_x+if{kYdF2?=K zg4b>(NY_S#hr`SBd34m2+x@L%qqtm>6h_2gnUzg~l}l?9fDEB++ShL?LI9tEyI(^#kN%f$1J3Ne@-fMIMX30gY>_uV_!Jn5Wx6kjLEX5{2Z4Y=qxm|( zBddP?nas=SD{>btL{tz)r~dO-Tokc`zf=HKaoGMpFXj&xBRTV=`9CgJYXkSF4+T-z zpAu&zymsw|%)gR#y0Mimf-WOT{mG=P=hv?{{2et>=$*$WofCfw%%fK?1^$j%iYQb+ z_5wV{{J%X!7C~EF-ub5;x?rxU3125B_xSx!BM<;6q1!roZzH zXnLA_^Iu5)?*R3QLQ}k8a@gGe3Q_P(i^na$mJL3>x704xP3#I|75<$bVRC=G?}^AN-3~Rl&ogE(x}MnZ%-Wws{jrkH*;_ep zfYK{nNU#}yr|>sH__55yHzDf_mw;$Kc|QA&(ehVK1tP`DIdKFg9+m#QK_bS0xMRC9 z`^DF|5JGE=h9~YKUi{7zU~;Vrk6&;9W8d_K&%=$aUiE=0m*YA-Hfg~EK^O{5w*k+H z7@Qq~<3-Pmk$>xm-wwr9yzLztZITQKR=GKOd2j1z1>Jx9N(UXJeYAZmL3 zhu6~u$s4_x78+iQBQkz-O?opOVB>Lh!c%!|TAE z6TRPV<<#+Z>oAHX{{->{dF;}s69CiC^2U6%OyS!AAecWGaUPztoA>>Td;;h4+|Ix7 z@%oYf*Zp+qIs7{GPf5FeWHT_9ftXfzcG%`E#)YBDOMwcb;6&@PQ{N%CLn=}5UC0mj znEHV4rwVv}>i^R}1%Vh`1iz@@88+n-#u(E;j_dW;ap~NNF&7REGZ69$IrBuFj+<eQd|@h4*@?u($6xh7ex5*4=Cj9e&AVrJ68DchT0b6W@dC!$n*|b`U9$N$- zH1{-v9T70z@x+z%9UsPOqt}yl0`N~zoTYIRt@vG>`k{=)aXrcyEQ}jBu+-wU#JP%R z>NxtPTD~C65f~5fttja^3W*V_!5s_5S5_CLf=<3sUPSwE6t#iE*+eSm<>^|pg4_8m znPDt5_IqWLn0e@}gjkEPFNPdKn<0BLj&yts&#uFV%?-i=k^LB>LJX_P3uo^lX5qZE zf*0CB63LH*(Z56&I{t%ty?P7OD+ttmkB=Fys}QnIIL-Z@!kKK#2q9eCxN>J>Kh z1nE;RnW)3w{gE}Pp4%*s9%_~7v?1kn+ipMRhxFYB7 z1;=)Rr%ZI-jFu5Adjr`}l1S|>^m2;n^Dh{wWL1nq7mC0nQRpUq&|<+0@>R?aYaWVt z$f!AAHYGo!YeU7^Q%r$L(aAoz6)))jhP zB2eEM#Q^~*&iE%OHitK|rKgPRmr$NzoF`!;(~>r$Hen-ludwfiTuh4cVita@3_$VF z-G6%9&Xy-y*G>OPQ2&EH=E?B?{}U*X@#CTY6>1#hi7w=LET3ci+@2pZ@vYV|`&+cc zm&i^Jz|*SZ%7cqzDVvcaf54oS^b>b_+%O4yzlYCEelg=;U__@1B2e!#D$Ub>rf&~# zzq}~-0AvS0Dlb-W+!-Na?wgi4ty6zS$9y0ELnnAe6AQS98e`77rF5k%@TVpGSu`Mg zZMT~6JymF5JEHv@sk!AS@*%o{h)GiF&Km;Ln22pB9?O%Z8R1@C{`fkWK_y{b#C8!*9{Te=+_i zx`Rqop$vX2Z?a{T)c?4e9Jb=WqtpZ1K;*Cz|CvA4^$p2kB8X3hJo}){ugU&D76K(P zC?*m5nqTz!RKPDP|6OPPyF3!#^y!fkQoK0tHdix-^nxgDaa^Q~?}e$3lT5@x%xS;k+WG-sxBpYwmB&M!|Nm*)u{CP9twEtfg~r)|MY`Bz+)ZSZ ztAmXD4n-(xQxP+!#$7YXQHGXs#GtS=ltRu_j!=@3PW5|zKF-?e+s|J;n)mfO->>)U z`Fg)Uj!g%zg1ekepzJpIR7fA1ObblsjY?ld8+)iLs$R{ydY4Z;%wiD|02#0>F4KJP zv^32$(`zV~{8W>!)fbm(D_>9pBq;>{kR)vx%c~{IS0vHFvABlsn^MMUlN%OC9e3%e zn}O#1avYygFke=~M`SAVGG)46SFw(>{P7w5f=d9Yf{V~g;x;=B^<1GHm`FEFcPKe$ z@eD^d14mL1q|6zcgLA%b@s2Bm6dF624N*Tuo5d7uA^Y$d27e1JDX5ktP_kIfDc|s3 zNN!^}u0dO7dOuL#7z*MDAErzx-dLLCr`C<69-x}yXV(4A`S%HCh&;|Jn3jh@#XZ$l z`_ZTHrC$6$TmyJKM=Q^M&(95x0|Ot59(_oPjTr50Y(4yo8=iW*yj*v7K(s=Pg=Ft0q za!m+uE~MyQJovffSLX+h(uY$&=#2&x76;q`6mMK|ZLr;6Gn`K%U|I1G^bda;cCX*QJGADza4)t!8Es(xOt@ zisb|PUcw=vrG1l&-W!Ie5QX9OQv;F9>r(Jc_uac2;?fABZ=56CQ*jMM#91hmphXa0 zJK3owMgB$p?J27`34Dtgn2!0YzUf-WGab&XQuc7D0bQ*Z z4rFX2|2suwd%2+U`Kb?Hwe&RE*6dPv^;3h`DhVsGPsXl|QQk)!K69}BliGk8yY}r{ zEw*vnlJMkLue?8w_(2g|jGhK+*8fXFYULDsj^th9Dam`uPixGpB@+;@^c}~6<^=GF z;}Cyp!8Q(vP5mro^7AtEIJJYOIU3O^>s^qWGP-+GJ(CnUR`Qw1Zs?{nb%>bK&L8=Q z$<*0@?EHWtN2TRZ+gJ)Je-887q)UcO?PUHGRLf)TRjPdN1oywwGCm!_dtMWMqA8K1 z68JX4N=%QTx3lN4yknF1gko9>@XROUfT^S*n98G%(M#ut|35moe$Fs+X&*h_$d}Jh zZ&dGbq*ND8IOe{!_BGiP@fW1eA1dOa;3Uf8=JRpZqwmvKW%Y^oTih4bW@N|gL;P++ z%XVA?2RTGw2GWs4+$y5@bH=#l8a((j6!tC4zL#gyJlBu3=-1}OA+-aaQd_e8rXC2e>4EN@Vms0BUJT2%84UUZ*`Jd^+YT> zm0TW+Me}lDvoJ$83su%Pan8Lu^(zz2yOfdBvnztEkpAR5D9I85y>8|Pff(LjEiZ0ZQ0ZFbY;C%*a%v~3&_n+{5R4I7OJQ_4os z{rJi_i@$D>#`Skk;_61UAWWJBdhR;Z)eH*GnXhJY^1Qq)dM*R{MYcaE7 zk47XeFFuL#X9m|$l@AI zez>HYzFoOob=$CMzCapxY(wtj<KZg2pOSyhgCF2SK(#kNmFlaF=Nw6Dw<5yZ);p3aR}p zH;*_40w9mdqTv~9Jlg|_F zkK!XYGUON--e9}^Q=vX=b z{!rh?+x19JY}{?J2=jgHHMQ~56}_7Gu8B~t%(QKo2cJFurQSK|McIG`Q3HXBn5?n9^eD%A*}X z{=`A)%aXrIBDd=8NxmO?nqd4}zvlMPwA0=M%0+^IM8mHy50NSGQl^j}Tlr4q0b2Jc zoaiU<>|J=l_=y@l858G>bgm5XW5Uj*t#H^ks5^Cd7qzCCfNXDLg;5vSoV&eKwS?vG z@flH?gT3t4@EnC6-R{YKJ^rX<-diy8nnPrt$pm9esb-3x_!u+sregha99?`_3L^x* zEh9%_9yLUc|FPrivK@!;z`5+wiL@sG9dw{<@OK6=k~}_9s4@iQy{idA{^x zseK|(%cM-skurO0%RDwWpRPIdjx`7iYh2E|(G%VMMi0Rr#tVv2y4^sl;-m=9S~RHk z!FBUVBEavC`E0+D!n(r1xl*_W%Yl5J&2hmD+SBg-b)A1z#l2xYM{5Jipf*qu7p5(u z3eq-Qa4J_qH`v=6U)#e_m=CEwPrYmX@7QXiyTvb?8_<4)(B&E3h|K>uD%pi9Gqsg`KPEY57Q4EAQ^xhz)Tki!n0+o;t} z@>{2y2WNvz4ribW%?dx~w1OAP8F7R&{k}w}O^IGJAjlped3Nzh>)yK22DQ)X{NsADRIz653%V=$YUixbV5S&aQqy85wx+)va!5dV@oRg}6i_Ub^j zy4&C+Vib8{3<=%?y$5iS0}goPhE`(NP9#cE+X)x_h)Pc0B~Y09ROzw3*aZS5f>HXe zizMaQ0{WQm~?fA{L#H-q4T5M+yw{lo_IrX>*g7KOAzp$K7kZt14@UN?*6-r?u zS)NgKwB6&J{7S5B*PWYWJJeomg(&G~L&}l_m!iznL73?;O6<%u%ZHaP+`uTWZKMvM zSe5?+Ibh;xg1CU?TU13hqfET7_c(C}N#qxjTtG&_>(?)>|7+_({jM3t5$&0ai)!@M@_DC zph4t3V~0xu&rT~Px?3t-;_BuN*%MPHSv-5jh1tu;$s1&GpCs4eL@=0aC8I3;sg=lh zf7L3FB?zxsGh}${BA?51n)OxA4z-kN6oD+@>yiWM=3pqgmM82(CYG_8$e~>Dx;Gm` zDN+*Q?l_dgP1}^1%I)KK$`KP`Edi*arwabDZ(dVa)Nw>~&;`V1IDQ;MM0Q2$uTxw0 zi|H=81loW>A_k0Vd_Oo71yJ7%gkuiMTlUUb-eNqo8iXpa3W=+@y)3Nb9qZ_^CF*;0 zIuRLIsFFo&F(-fZ_B|{?X};17s#p>tO-u?u4%Z;HZbZ!^hNd?IvkWE0!Qk9Ofhd9r zD%>Cxm5Hly4t||hFw{rHXQ*tdi5Y^=;5|nNt!HlD9?TM4#dn?=g(N#VI;W|LBX%n; zN+Ida^|?9-cY~s1;m~ELh%8iZ2ePEsxxp8(BoX8876F#?#8i-Yj4f0pvbuHDfW0H= zn*3Xgv*twd_z8aYfviLcKUYB7!~t$LL^ zgM_y9n3S#XQ3(?#EfQX~qD5dO%CLVoY=a?gf4Kc%4f)eAn4mHTP}wyLLvE|kSX_@n z=gngbh#P|kLDaWx#1xp3L#tbYQ1neTF9oV-&8+COO^~tVAPaDs`}o3ancuHXP<^QF z`01{CWdenG5QOiJOpvAg%PFbL8h2Edjmh05FqrPq@(Lw_!8{;DDNI90fZ!kD+o39K z|J6d7tfXe?P6P1G$=&8S;ml?M`tg>qaWck@80qRDX0pUZEDDvdG=NVByXtEoQpkO( zUzI)|ipMnDfzCw^mw-;?W6=bgGxv{4qP!qM)wGZxG^l|F=g|f^bLD=&K38vS8S0?& z<}XyEhth6EIV47|121%m=_o|;@;IT^uCjWJl)idwzlvvkexXc+EQeeUBfWFTHMP0- zuSBlps!@1!)ONMwy+;x`0_?j(j*oS>I z5c(Jwx?z@*c^ktxQCOb4%TXFShF8Kr+Z201^W!ZBTiLK(f@&Lk?fE@)b3UkUS z;Od@tN;ob=A?ktRfS-Q2Z`O*I!KhN+p6kJV>_3atjw`~jXGZG8+6#%Cnpb1B+#OL5 z;?j}1Bb{dI<5fSjg{7$*;;o^j_{&X!y+(0YxMcX~gd5cXuDfPc%+qBqiw>y?yk64x z+VySaLM}8^eO|Wl7|OkX=U0z z=fJq6M@Y4++r!BCz6yaej|!`bKcunbpd;V;R%x0@_6oQrW6aCP%l)>nl(fK(+|lGJ zmKGN2EtbFJSy@%}wuNs3v}1ENCVqye>93kFT@y{1FPF-9#caQ3UA5()%R0I%+?Iip zZ@&x&l5ndGl1RZl94U*O63580CZgAt;ncbP?Y^U)vwL8_5|QWS7l9HG(l&d{&bX(y(Jc^=77=|Q<50^Nrly3y{Jy&g-2CO$pZK`(7u^84?{NB1S( z<@kUj3}NMsmXJTGuI!0FL=J1#@pDWd)fAZRd`;d7Ho?Dq-Yod`*)VS1u~{RJY5UKqc z&+CVu%ne=)H4HlZ4%>oF2UFBOoeFDw;U4C>5uR5~j~XA~77QSY)fe*>AkN!hfp-yE z9$M#lA`{HO&6t^4E727ijdxssmXv_9PYPjQdLAYC_RKk3E(vZVF5F;+_o$T%ZS*{e z_L1h@>!Ep+UJUh)FIid9CY$b06a@RZe_72O`Z&!r5D6l0R*xqPHLScT1!qhyqw|wS?di{bstj$$Zi4JWrq-J zkl>})rqxi*n-BXGU)CkpKq+OV5`3H==F4_rF5cT0{@ zr7Z|5nLyFVB$TQXD()WLnsyQ2qAKAV6@KZ20x!g9EM*lVrd62971A? z-+<}Wm$*+fosOE~?IUQVU^`s4j#_sDNkVyB6?kX2cLa(>q||;kcSMJXd;&^?LEAk* z^{jIu9t2XnjcwfbF8N_BF_Z+PdXn;1cE|s!mj|b+tI^nSL58MzWJt$ZG6(5P zCkc@Jx>u4DpiHBm&3%Grx%q5fIzJ*Z1k8o2<(#cuB`eMFfanY<%`;nx%Q;^@FK-(@ z0a*1x-(zdl@&ji*765OKV#8&lHCz7nN?sRA279>q{*Ieb)uIE@L$HZLkzBYekaM18 zqplMS`}2(@)S4rav=uc{U9ekFmcY<*p?T|cx4aHv2Z29h$nkPSE;3bF{I$z zbf9-OYtUb^E)@9Xt4lS!DN0ZJevc^5dtmH3nCb zKS74FYlltNGUD?M$pjA(DNBejY~t$*Z>UlSj*y9Optbrc4kd~3F@b_FmW@{M05&$& zSzK4A79H^*_Q3D?@cU%~HgOC7mN-q}68s*gWbJ-TsdiI1%@sxirpsC2kJYXW-LIgX z|8^#3kU||mw}mDal9L3^?v*5OKCF#qD0>*)`~&nM@Oeqxy<5qYLJZLa8l^;c4~9p2 zz<(PPC>h51Ga@T-E}&?TO)FYOOaX?=4<hqaiB%%YtSQ{JJzE9{q1jho;HF z*UamMzLM<_Mj?MjSMt*v58snMQpY=9)VUi%edJFgvoE7)c*m#e*v7*(yC3=UQ`+BF z&?kP3?Mq9$_Wol;Knu@tW6!>Je}0o|KtJ!u=Mkg)cPB(#^ZlsC#p1wN Date: Fri, 20 Sep 2024 12:49:19 +0200 Subject: [PATCH 005/414] fix: improve file name replacement logic --- src/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.tsx b/src/index.tsx index a69d85d..24c3619 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -828,7 +828,7 @@ const app = new Elysia({ const fileTypeOrig = fileName.split(".").pop() ?? ""; const fileType = normalizeFiletype(fileTypeOrig); const newFileExt = normalizeOutputFiletype(convertTo); - const newFileName = fileName.replace(fileTypeOrig, newFileExt); + const newFileName = fileName.replace(new RegExp(`${fileTypeOrig}(?!.*${fileTypeOrig})`), newFileExt); const targetPath = `${userOutputDir}${newFileName}`; const result = await mainConverter( From 5b1703db680d164afca3b752380615aad5570b62 Mon Sep 17 00:00:00 2001 From: C4illin Date: Fri, 20 Sep 2024 12:55:00 +0200 Subject: [PATCH 006/414] chore: add safe attribute to input element --- src/index.tsx | 24 +++++++++++++++++------- src/public/style.css | 2 +- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index 24c3619..094c487 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -543,9 +543,11 @@ const app = new Elysia({ style={{ borderColor: "gray", padding: "2px", - }}> + }} + >
+ style={{ fontSize: "20px", fontWeight: "bold" }} + safe> {converter}
@@ -567,7 +569,9 @@ const app = new Elysia({ data-target={target} data-converter={converter} style={{ fontSize: "15px", padding: "5px" }} - type="button"> + type="button" + safe + > {target} ))} @@ -638,8 +642,9 @@ const app = new Elysia({ style={{ borderColor: "gray", padding: "2px", - }}> -
+ }} + > +
{converter}
@@ -661,7 +666,9 @@ const app = new Elysia({ data-target={target} data-converter={converter} style={{ fontSize: "15px", padding: "5px" }} - type="button"> + type="button" + safe + > {target} ))} @@ -828,7 +835,10 @@ const app = new Elysia({ const fileTypeOrig = fileName.split(".").pop() ?? ""; const fileType = normalizeFiletype(fileTypeOrig); const newFileExt = normalizeOutputFiletype(convertTo); - const newFileName = fileName.replace(new RegExp(`${fileTypeOrig}(?!.*${fileTypeOrig})`), newFileExt); + const newFileName = fileName.replace( + new RegExp(`${fileTypeOrig}(?!.*${fileTypeOrig})`), + newFileExt, + ); const targetPath = `${userOutputDir}${newFileName}`; const result = await mainConverter( diff --git a/src/public/style.css b/src/public/style.css index cff90bd..2ed0bed 100644 --- a/src/public/style.css +++ b/src/public/style.css @@ -4,7 +4,7 @@ div.icon { } button[type="submit"] { - width: 50% + width: 50%; } div.center { From 317c932c2a26280bf37ed3d3bf9b879413590f5a Mon Sep 17 00:00:00 2001 From: C4illin Date: Fri, 20 Sep 2024 13:24:18 +0200 Subject: [PATCH 007/414] feat: add option to customize how often files are automatically deleted --- README.md | 1 + src/index.tsx | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e7435f1..32fd94a 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ services: - JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken1234 # will use randomUUID() by default - HTTP_ALLOWED=false # setting this to true is unsafe, only set this to true locally - ALLOW_UNAUTHENTICATED=false # allows anyone to use the service without logging in, only set this to true locally + - AUTO_DELETE_EVERY_N_HOURS=24 # checks every n hours for files older then n hours and deletes them, set to 0 to disable volumes: - convertx:/app/data ``` diff --git a/src/index.tsx b/src/index.tsx index 094c487..3538941 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -33,6 +33,7 @@ const HTTP_ALLOWED = process.env.HTTP_ALLOWED?.toLowerCase() === "true" || false; const ALLOW_UNAUTHENTICATED = process.env.ALLOW_UNAUTHENTICATED?.toLowerCase() === "true" || false; +const AUTO_DELETE_EVERY_N_HOURS = process.env.AUTO_DELETE_EVERY_N_HOURS ? Number(process.env.AUTO_DELETE_EVERY_N_HOURS) : 24; // fileNames: fileNames, // filesToConvert: fileNames.length, @@ -1263,12 +1264,10 @@ console.log( ); const clearJobs = () => { - // clear all jobs older than 24 hours - // get all files older than 24 hours const jobs = db .query("SELECT * FROM jobs WHERE date_created < ?") .as(Jobs) - .all(new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString()); + .all(new Date(Date.now() - AUTO_DELETE_EVERY_N_HOURS * 60 * 60 * 1000).toISOString()); for (const job of jobs) { // delete the directories @@ -1279,7 +1278,9 @@ const clearJobs = () => { db.query("DELETE FROM jobs WHERE id = ?").run(job.id); } - // run every 24 hours - setTimeout(clearJobs, 24 * 60 * 60 * 1000); + setTimeout(clearJobs, AUTO_DELETE_EVERY_N_HOURS * 60 * 60 * 1000); }; -clearJobs(); + +if (AUTO_DELETE_EVERY_N_HOURS > 0) { + clearJobs(); +} From ea9250543e81b2a2da99504cc243eb708ceeefe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emrik=20=C3=96stling?= Date: Fri, 20 Sep 2024 13:24:55 +0200 Subject: [PATCH 008/414] chore(main): release 0.5.0 --- CHANGELOG.md | 12 ++++++++++++ package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d56f73f..0c56001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.5.0](https://github.com/C4illin/ConvertX/compare/v0.4.1...v0.5.0) (2024-09-20) + + +### Features + +* add option to customize how often files are automatically deleted ([317c932](https://github.com/C4illin/ConvertX/commit/317c932c2a26280bf37ed3d3bf9b879413590f5a)) + + +### Bug Fixes + +* improve file name replacement logic ([60ba7c9](https://github.com/C4illin/ConvertX/commit/60ba7c93fbdc961f3569882fade7cc13dee7a7a5)) + ## [0.4.1](https://github.com/C4illin/ConvertX/compare/v0.4.0...v0.4.1) (2024-09-15) diff --git a/package.json b/package.json index 4d4217e..4292374 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "convertx-frontend", - "version": "0.4.1", + "version": "0.5.0", "scripts": { "dev": "bun run --watch src/index.tsx", "hot": "bun run --hot src/index.tsx", From a17eca0a099378d885af97702031e721da39d0c9 Mon Sep 17 00:00:00 2001 From: C4illin Date: Fri, 20 Sep 2024 13:27:54 +0200 Subject: [PATCH 009/414] chore: format --- biome.json | 2 +- src/index.tsx | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/biome.json b/biome.json index 684e3d3..c751d74 100644 --- a/biome.json +++ b/biome.json @@ -10,7 +10,7 @@ "attributePosition": "auto" }, "files": { - "ignore": ["**/node_modules/**"] + "ignore": ["**/node_modules/**", "**/pico.lime.min.css"] }, "organizeImports": { "enabled": true }, "linter": { diff --git a/src/index.tsx b/src/index.tsx index 3538941..19bfdff 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -33,7 +33,9 @@ const HTTP_ALLOWED = process.env.HTTP_ALLOWED?.toLowerCase() === "true" || false; const ALLOW_UNAUTHENTICATED = process.env.ALLOW_UNAUTHENTICATED?.toLowerCase() === "true" || false; -const AUTO_DELETE_EVERY_N_HOURS = process.env.AUTO_DELETE_EVERY_N_HOURS ? Number(process.env.AUTO_DELETE_EVERY_N_HOURS) : 24; +const AUTO_DELETE_EVERY_N_HOURS = process.env.AUTO_DELETE_EVERY_N_HOURS + ? Number(process.env.AUTO_DELETE_EVERY_N_HOURS) + : 24; // fileNames: fileNames, // filesToConvert: fileNames.length, @@ -1267,7 +1269,11 @@ const clearJobs = () => { const jobs = db .query("SELECT * FROM jobs WHERE date_created < ?") .as(Jobs) - .all(new Date(Date.now() - AUTO_DELETE_EVERY_N_HOURS * 60 * 60 * 1000).toISOString()); + .all( + new Date( + Date.now() - AUTO_DELETE_EVERY_N_HOURS * 60 * 60 * 1000, + ).toISOString(), + ); for (const job of jobs) { // delete the directories From a47bb682a5db7e678417abee70512d929e82bb22 Mon Sep 17 00:00:00 2001 From: "deepsource-io[bot]" <42547082+deepsource-io[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:28:59 +0000 Subject: [PATCH 010/414] ci: add .deepsource.toml --- .deepsource.toml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .deepsource.toml diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 0000000..e5ec308 --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,7 @@ +version = 1 + +[[analyzers]] +name = "javascript" + + [analyzers.meta] + environment = ["nodejs"] \ No newline at end of file From ed59cd7aa4c8725bd1062d5c1a56013756b4e073 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emrik=20=C3=96stling?= Date: Sun, 22 Sep 2024 23:53:37 +0200 Subject: [PATCH 011/414] chore: clarify that batch processing is possible --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 32fd94a..b93cac2 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ A self-hosted online file converter. Supports 831 different formats. Written wit ## Features - Convert files to different formats +- Process multiple files at once - Password protection - Multiple accounts From 22f823c535b20382981f86a13616b830a1f3392f Mon Sep 17 00:00:00 2001 From: C4illin Date: Mon, 9 Sep 2024 17:38:03 +0200 Subject: [PATCH 012/414] feat: ui remake with tailwind --- .gitignore | 3 +- Debian.Dockerfile | 63 ------- Dockerfile | 11 +- biome.json | 20 +- bun.lockb | Bin 165180 -> 217660 bytes package.json | 10 +- postcss.config.cjs | 9 + src/components/base.tsx | 3 +- src/components/header.tsx | 45 +++-- src/helpers/tailwind.ts | 17 ++ src/index.tsx | 344 +++++++++++++++++------------------ src/main.css | 12 ++ src/public/pico.lime.min.css | 4 - src/public/script.js | 31 +++- src/public/style.css | 59 ------ tailwind.config.js | 9 + 16 files changed, 296 insertions(+), 344 deletions(-) delete mode 100644 Debian.Dockerfile create mode 100644 postcss.config.cjs create mode 100644 src/helpers/tailwind.ts create mode 100644 src/main.css delete mode 100644 src/public/pico.lime.min.css delete mode 100644 src/public/style.css create mode 100644 tailwind.config.js diff --git a/.gitignore b/.gitignore index ab13b2a..b9eeb2c 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,5 @@ package-lock.json /db /data /Bruno -/tsconfig.tsbuildinfo \ No newline at end of file +/tsconfig.tsbuildinfo +/src/public/style.css \ No newline at end of file diff --git a/Debian.Dockerfile b/Debian.Dockerfile deleted file mode 100644 index 60e8d88..0000000 --- a/Debian.Dockerfile +++ /dev/null @@ -1,63 +0,0 @@ -FROM oven/bun:1-debian as base -WORKDIR /app - -# install dependencies into temp directory -# this will cache them and speed up future builds -FROM base AS install -RUN mkdir -p /temp/dev -COPY package.json bun.lockb /temp/dev/ -RUN cd /temp/dev && bun install --frozen-lockfile - -# install with --production (exclude devDependencies) -RUN mkdir -p /temp/prod -COPY package.json bun.lockb /temp/prod/ -RUN cd /temp/prod && bun install --frozen-lockfile --production - -# FROM base AS install-libjxl-tools -# download - - - -# copy node_modules from temp directory -# then copy all (non-ignored) project files into the image -# FROM base AS prerelease -# COPY --from=install /temp/dev/node_modules node_modules -# COPY . . - -# # [optional] tests & build -# ENV NODE_ENV=production -# RUN bun test -# RUN bun run build - -# copy production dependencies and source code into final image -FROM base AS release -LABEL maintainer="Emrik Östling (C4illin)" -LABEL description="ConvertX: self-hosted online file converter supporting 700+ file formats." -LABEL repo="https://github.com/C4illin/ConvertX" - -# install additional dependencies -RUN rm -rf /var/lib/apt/lists/partial && apt-get update -o Acquire::CompressionTypes::Order::=gz \ - && apt-get install -y \ - pandoc \ - texlive-latex-recommended \ - texlive-fonts-recommended \ - texlive-latex-extra \ - ffmpeg \ - graphicsmagick \ - ghostscript \ - libvips-tools - -# # libjxl is not available in the official debian repositories -# RUN wget https://github.com/libjxl/libjxl/releases/download/v0.10.2/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz -O /tmp/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz \ -# && mkdir -p /tmp/libjxl \ -# && tar -xvf /tmp/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz -C /tmp/libjxl \ -# && dpkg -i /tmp/libjxl/libjxl_0.10.2_amd64.deb /tmp/libjxl/jxl_0.10.2_amd64.deb \ -# && rm -rf /tmp/jxl-debs-amd64-debian-bullseye-v0.10.2.tar.gz /tmp/libjxl - -COPY --from=install /temp/prod/node_modules node_modules -# COPY --from=prerelease /app/src/index.tsx /app/src/ -# COPY --from=prerelease /app/package.json . -COPY . . - -EXPOSE 3000/tcp -ENTRYPOINT [ "bun", "run", "./src/index.tsx" ] \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index b227c8b..803d382 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,14 +22,14 @@ RUN cargo install resvg # copy node_modules from temp directory # then copy all (non-ignored) project files into the image -# FROM base AS prerelease -# COPY --from=install /temp/dev/node_modules node_modules -# COPY . . +FROM base AS prerelease +COPY --from=install /temp/dev/node_modules node_modules +COPY . . # # [optional] tests & build -# ENV NODE_ENV=production +ENV NODE_ENV=production # RUN bun test -# RUN bun run build +RUN bun run build # copy production dependencies and source code into final image FROM base AS release @@ -56,6 +56,7 @@ RUN apk --no-cache add \ COPY --from=install /temp/prod/node_modules node_modules COPY --from=builder /root/.cargo/bin/resvg /usr/local/bin/resvg +COPY --from=prerelease /app/src/public/style.css /app/src/public/ # COPY --from=prerelease /app/src/index.tsx /app/src/ # COPY --from=prerelease /app/package.json . COPY . . diff --git a/biome.json b/biome.json index c751d74..e14b242 100644 --- a/biome.json +++ b/biome.json @@ -10,9 +10,14 @@ "attributePosition": "auto" }, "files": { - "ignore": ["**/node_modules/**", "**/pico.lime.min.css"] + "ignore": [ + "**/node_modules/**", + "**/pico.lime.min.css" + ] + }, + "organizeImports": { + "enabled": true }, - "organizeImports": { "enabled": true }, "linter": { "enabled": true, "rules": { @@ -25,7 +30,11 @@ "useLiteralKeys": "error", "useOptionalChain": "error" }, - "correctness": { "noPrecisionLoss": "error", "noUnusedVariables": "off" }, + "correctness": { + "noPrecisionLoss": "error", + "noUnusedVariables": "off", + "useJsxKeyInIterable": "off" + }, "style": { "noInferrableTypes": "error", "noNamespace": "error", @@ -45,6 +54,9 @@ "noUnsafeDeclarationMerging": "error", "useAwait": "error", "useNamespaceKeyword": "error" + }, + "nursery": { + "useSortedClasses": "error" } } }, @@ -60,4 +72,4 @@ "attributePosition": "auto" } } -} +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 977bbcd8fa226eb9b17f5971fa6ac9d043e4dec9..336c19ee2fa007ae5aeb31f7e3f485d54fe8aa71 100755 GIT binary patch delta 65964 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 delta 32768 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 {title} - - {children} + {children} ); diff --git a/src/components/header.tsx b/src/components/header.tsx index 1c255db..6850027 100644 --- a/src/components/header.tsx +++ b/src/components/header.tsx @@ -5,44 +5,53 @@ export const Header = ({ let rightNav: JSX.Element; if (loggedIn) { rightNav = ( -
    + ); } else { rightNav = ( -
      + ); } return ( -
      -