From 94786c738bb255378a581e591c798aa780341239 Mon Sep 17 00:00:00 2001 From: xenonwellz <59710311+xenonwellz@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:27:00 +0100 Subject: [PATCH 01/23] feat: added env support for dokploy --- .../services/compose/[composeId].tsx | 10 +--- packages/server/src/utils/builders/compose.ts | 48 ++++++++++++++++++- 2 files changed, 49 insertions(+), 9 deletions(-) diff --git a/apps/dokploy/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx b/apps/dokploy/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx index 60ddfeab..bcac11ed 100644 --- a/apps/dokploy/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx +++ b/apps/dokploy/pages/dashboard/project/[projectId]/services/compose/[composeId].tsx @@ -185,18 +185,12 @@ const Service = (
B}Sm>6!r#aXSHxD;Ou-Ci;C|c7 pbf}T%a%Zmv8LnPQoSLDJ;g+e#X zt_m4o1Kou* !*MQ#TN )Q$ za9RH#(SK{W QR^S{udaeRO+MTeC$A`{ zaMG-Q2x8p+BZmtK^!-QW7&m!$Uw1!u|KK1 74VpR1?4 zJkH-!MCd;qsbzrm#RftZL)Iz(!wNGqEwq17u&ckDJNlBY2-IphFE5N1M$^Mh$=yv& zR>=*cBCB%imWQl{in^PuhN`;SEq6B!54T(H|1N(C>lSk2+kcnG{C_NO5$FZYFIV6H zV?8Ic?qpDCnRo?3?uz)=oVe~D@UJIdFQI>o11(p#lku%9;&$R#cZ|rtUVHr?_rO2Z zhTV3Dl>Tqr{ZFwVtVeK|YoPlDPpG&4UkoUD$b9*ex%khP$p4Rx{KvQdGH?Ga4lM>J zkN;VTpkMy8mbv>w3s@kuQZa?f Xno0obDEgJH5J7FlzMMBtJ zDTrLJKeJm`7UXV%SoiQCM`SfNuM+ F3rtNscN~VD>ls1}ZPytUrHt&o5iuKr zsk5Z%;%i}%a9+v7Bd)Yied2@T?8CF~V`oDIM%Qmttb!717W*tofPQM!@{s@3WRRar zsRv+sU7bOLxlT0ATu>Zdq0jxgXKGe-$4+ca_3l1V{hHg@LH9rwo*j@>-(+vq85-=|HVa}4F6Z$L zf2@S_p39*jsQT7diKyO#m#d}g^zu@3Aj44p>hnD-#_?rEEvVtGvZK$yif{H;eNK&J z-$7mxQ)xF7RZpPAk0YsQ>oF%q74Rc)!dPy4ciUNEJ3<7`L^DOv?y$edU)gpsQrkpV zyF;=o$jnc(-8eVQUg){lNQZH{aP5q+`Er_U)WHYLwcab-6z>Kaq=lGM-ypnJ(z7q0 z?jt7VGiDVbC# 5`0W{YZuZCtbNSaxGz1N zFK?X!FPFG+g?t&iaIpRu= @=8#Stv;pI~4FK_7!)Ny+0t@)-0xHP0=!vbrfE8wRosW6wN zg9!=85?dB-N-^<*(s;CwQr50-1zB!joG!~HhUFmc;N9_yrKYe2XI)pI VSDu;Ezha))%xNevFUOY z8Px)FM7{e$4j*AgI*%)`aEbdYZi{9$2@up9(Bn#1JU%fa 2ul^Ao;M8e`4U@7@%JbLe3a1-(j}i8Y zh*W(48gp%d3F(Z)>>ZvDG@PmIe2UNWXb74MK-R1OVhhakr@}_~vLRc>XNfkI`-x^6 z7UCD=i*{3pqYJaJ9MsW8qcxw)9QiAX;OKHR@EGHHP)aJr5=UI|OVtqw9L-Jc`k uWARPwSz3y>;trKvhB#IeJNr`whS{P1ekOL>&)i1 z8N<-m75~@=&{8f2zS~-#*2wY(@Yrn4JkNs(;7sR0S*;w@aShsdzM?FKC{*3EXA8?- zF0QDkO2))E#YaeEWCAs_tX*Q>mmi$rT6SCe?DG${4IDGdWsog)%v8=7E=IpG9Y6p5 ziI{3
~z2pmkyu&Sa2n~DW |BSr4gPwmn>4a$@&;GewwJh2yQ zSB%zp@hmX?w)wp`j5~MI%tGJkrEa`X9}~Cklvx{5X S;|tJB~vf*-}kTrL&N z%%#X06KfV-r(dp|;_l>KqvoOvsDFPu8=oh*k^3jx13jPy8*5!()S$TCbenVAd<=K- zW57@0H-Qp7ja!{*@uOj&8I6q(042b3pj!N?_Zei%hybeTG#7jY)+O%{FSbmK0LD85 zCRjl$a9o49%7AQ1M|B!1%8MFXh!vH^; O(9^P0$(I~+u>(jj;UG%$z_ z3$$Pyrf-}DzxXw!&sVLXC}kWU314l)rS@OhhpkGQCO-X^((8+g3h9#2o<4rMk(!!U zV1LPI&7z~(P XAIK7QJ!m+!vEWRJ;~%PE21Mw5f1@30P^lSlgn zP(>_fFhnucQE|!IU%Rhi=t346zP5J>6o&@&$b1SkH#mYqf7 ;!EgGCtoqfp4F zdBiP=+})qO4^^OkA^U<<;9x#OQeJy3{*YvrCdVIk@>&=W*!d`f{+P#2&cIJG4E1uw znsV1lHqUS-rNkk%j~0pjw+#U2tPY>f#a|XrZ2DoSsAGPk(75cY4X4n>uV{$)RsoGd zoNV DMJs8o){nEU6WkNN;)jZs!Y2+Nf z{rQM#A;CCtCG;a8Pl$8>R>XpA37bvi{pn1l!~M~zPo4fCtLeSpYX4^;oEilMqHaEz z==wVju} 9WQ`X^!0=nV^P6+j53maE7p}|>pzn85$Z(gBx8xgBMBvueaV}GHBA?Mo7T5k zmhAJrpBMrcfHvUsL!TlYWXpa^Vz=>AhN0KqKY&?E17El{ce6Rw0S~ASR2vpAHV1$e z%Ll`2 Mw;fyza3it+3{DXb; z!^Nwb>WQqo3TY`vVidb#&1Pqs^6ZU2KLH<7)zKJvRrXU_g<2$ggy 9XXJww$GJ>%ZU^wG!wAVMiAyu9Q+`qjc(y^NU`I1IncO9Sfq_yZBjc z#+~^Lv(TW4Gdp37+XW7EnTAF)24W=ri=mH8o(26_tNGw#!rA(m`}s#wtgXvjx*sd| z&AZGW?=l>L7Lzhy8ODAPhb=4V)S65nY$vm}D-83;^f4dlZcchlj~$-Ue6n*M9EO76 zd2;Wq7ezyZ$y=SNiRuyU_?*W9N`ALRGdy@Cd1oeQWkfpy$e!P(9E(%TeCy|a8c*N; zB}*7hzBZw=^lIo511VqS7#_uGyoQJCp9!PR#(M^3{I&(;P0pm26It7g7`Gej3{$R> zB~vL~BG|8jmk}=AiWyNBE@sZjt)I8FWolyKt&1GQkZn&m3sCNQee68BPY$WalxglP zr1Q%Lo1v9pN;>`Rte4aVTj1Er*{I|Rwn}vQgYV=Heep;Sd)|%MzOszEqs`ZOvZV_? zqINE=h#h9`Y8T`5zISprQtwQyk;`2qOyw8|g~YiH%eAPQ$L7u5sCdcA4n=!CqB YNlAM y^c*9^yhM4S(G6Fg7;yS3tmArt`i=1j9rcONto zT%b_~Lq^ZVBaXPkFU()8G94s}T5=|Z7D&3f@tBQ&k`3EWHuqX5XcLE!106cxAIv#2 zeyCd~T^3tyxmhYK|M#je@4Q54|K-L7o(egAqru-Um(+emRF&xsCb|#kl0MWA;tGGq zGbM(t6hHbyp4x}va+lEPN!(DdS@63DeC66{U5sW2?~3+jkv%lo=x+^NTK6VDbii58 zIXx(twy!{YCsq~foVo8bULDWZXm1cdxQuSFlasQ09_pQ#`6OIz*y-54rs>7|4~#n* zys#~axp9|!va*XH3UmV=b#AZTv5(ra)(zoL6W){6G^%9{*P1|I3o!taFl@)W?bRD` z@R%SZP>PSCUU919@S8k4%->44Lr)jJddpV-o%?#6`>N#6qpNGm^ WxUv1c09dyMnA?vxUbFNvs5oxC$))NJEIFw zNrAWK3xga$Y3E^k(6^LaKQ3xALXRr*$@M={tIx=8@ZE?gsWfV<%`VYGVVItYvnkI$ z&o8+>S^i6dx3d$PXG=V8b*ynu?~K;orkuH6T@|}jam<#XU0C1Ok}g2g^zzD(dWz_d zY^kXBtyCz|QC~L)`FiVS6Mj?~4OH>%2!dgND}Y4jvRi+<7)XEX?)=3&o%lI*O2z zZuvqT-43JXP_*?=`@Eu;Q4Zs~)AW6helGeA@WFJ5j_h|8?T&odVnDUY)7v*dc9p2F z1s*nu{A= QU&B^`JoCAXuHC8o8J_niPo|OyZT`<)oCg&CzXN0rR<5td*Ff9*-S( z)RmNdAux2tdFZ#R?iLUK9ig(;e;=NMT@eV6uJ+b5FPIs6E_W&Y^|e6B-HgtVs^a*& zX!Z6--+_JV5k13J+B#00L+^{r?oL<81!bafK4f|OxPIN-y#4V iC~JBuXq|L%e3n;_&2Rx#=$9yA!Atew@H$7a!>N;sk{7AixRz! zAlUmb*fhhK(nI5HVzlZPoqN4^0EkH%t+(MQGnD$NR56LsrHEAgv~^!%K2Y|$cJ!;g zI@pjG8LdXS6R1MYTAw+H%e;_P=i=a=X@cDDHu_^=K|w1iFYk}CXEkEWPO^~ zZ3D*&S3c`OZk=;5_ZjEcNaxEb+iZEI76;OF2Go^95&Cgla=f#kywhJ+*QTbKD2?wI zozNv-fT4;X{f=TU01Az49y_rQC7Z=fo(Ki_pe_E2k%ugih3j1*cMRD$-1C>?uGVMb z9eIv}Q`Eqqyv|2?{Ee|=(#HZ( b4{MOs?Y+q8@Omwvx)qzl&zveT(r#>H#gV>+JV#IzPaWjT_X_bkm z%H3^P|FF1rxGAPYbh+A)IDgyVhph1O?F4A|efliXYd3)??PAMTYE)eNt@BHNPf}5& z_QYn-ci)z01)(FSD8|TRsxjyYA{z)nHwWyF`p+AFp6>m#q6}2DS66l43KYJ&yoIe6 z1|M~1wK~&`3UVTj>7%liGQ%!kORv8M%45Wio!7=JWB3@F?sZZ1$T@zK^9lrd;44fz zPpSm1Ru3O;q#R3arKH~ZDRO#EGHL$K=EMXhc}p+vjJKbPCg_>m&D!(&LM_s|Ut?bO z*rtNp#Bx;zd6bdar#8LsCOUubjz$`L*+U7MgHzmwWoI3Yd3~vz=?^UCFXp9i2@4;u z^ggWm)RxCEXG$VsW&78BC)xPuGih})m)_W7yM@EfnJ(mn0I|J>RivoEd#}~XL(KTw zR;hJp>zGv2&5J% 4>uhGTVwBFIdFUwD(^sEuj|GX-p+>iPK$RIjlf6%ny#tD zy+z-OZFj|CtFiu}4XKy3;rMlY3H_jwxEWtt4~m00U-G@ZT4ngMQee2~@UYK1Q_=At zvK8sfa==*LzEWL}q1(CYt)M;j39ru a#y$)v8?yJJbs8Viv56ag`NR-7m8LFk5 z6c-FnqZ$|j)_uymM4Xo6^V+d_>1-6_kD3p*Um(o29Ij^(-+?YJfF>PmRro^rN(Pe- z_l`(fS$SRo)qx+0T5?;?$;9Ap>R7>scCXuc%j!~zAyw!+Q;Cx`Q@ir8{FDD>0CEr8 zXz$k7YC!(avr;Qb^+cx$pUa%RH%-y Q6|!b@JMQ6Im9}z{+OtmIk{3KxBaY 2j+6yW$rt+w%kLdNVIH(?>85=xsJih(QR>Q^lf9WA!HqaOPvZbpnb8DRPX z#1lkqD&9INFw`+ne7*lxd+$*uD$kfhRVL^7G;e+wc94CguLqg^r10h)SHpQkP5z2# zIH{kM`}R2FMR7gd&MCW?R4Xhea<%=4y*bbV p{Lm;T+TrK8 zm$-m^;M)+SR;CUGyZk?zgN2g^G(i@WxzK86zpf~dKuEA$&0#@1@Q8BuX4*C+qO`c` zknBDcHgjIfA58#32k4cZY5d15s;ENWbHoN;?qL;ehHzFK)g~EVT%XhwYh#pUeB0+k zu6^wxcer$HV?Ra^F=1q=9y{=Z?`HJ8h(t*cATP?>)~_3xlvP7a_Y>CqSh^A+=EV}l z$DYPr l$O+@np~lJ;T{;^2tcfQ`B zBdUrI7nIda r@EJ~RZ$ zJ}M+qRA`f&Pv-rj;akf{oJsg>CFJsyQ-Nt}nkEq1xp{7BQdB{jX*&5L{xb30ot$6M z1^$|U1=}>sv;V-^*5W6b>aNdycn=Mj08xrTFS&R0SKihQC|s7y4FLN283_CE?Kg<+ zPeZaGi*UxGz&-dR(-iO`Z}otu>9334$%=um``H22orBfb3%%X`nJP@u#s2VCm (PxGqhCZFz-M?0!@%*x#{-O~{ zHeFUhWHLli*S&%)Qp~6-mDMwIDZEC3y{F>+5d2L;Q=n3E7=qcFQxes8r@{k ?}K4rES=DH^=e!PckE$D}sfIQtq%FhT-5jy}~pHi=Rh` z5S}*df{u!^I;^}sd!1NQ#j#^EH+222t)A6)h4<>3ht&m_;E+(l&wSc(1>U;9o@`uB zu{tMB3aDp#xOn?sF5VN-kt+2{4jv=3D>6LhvG;|f_|oF%mA~?q9Sr5N8)|}uRcmSM zSa3a-)cxXMj#)fE+v>7|+x vFG^lbKOwJm~4KOI rV`XnA-*t&vql=klPE&}Ti3$SIDg{L-l{Xx4*Tn~sw9f1g~n*kU2~ zx}J+SuKN=g^~kY}F4%!Pyesj= T{b|fR(H74ho&W= +i8}oWV~r)X6IpLj7C)SfxZG=c2ZTxN3XcbZmXe zxu`?0xMdcdoQ=ZOjAGP*OmFKpI{=}IMJ0=Pd6>)V9#463)vqsrM|eTEu*UgxBp;*9 z%A91WH^7qQlo6J{r+rxBtw~V^Wyao~_1YVR=~EwF`nliD`>H(hYcUTcSEE$t`Z}p9 zadDOC;jQ;xvL(C!vNh6Kc`lX Z-bPu)<$MS1rSQ5l1E|M=KBE`c4+YSR(lii{$BI zjmz0)_WgH`_cxYNGSK-b?~C2}5SrK!%4sld!;7x^$>iI+cur&w6xYNt{q%s0P&awq zvcRO2p?8<5MB| *aVnTmvE%;{YIlZy@j87G_9 Bba#M(6ldW)f40aLh5pEE)^kWWM)(^hI2_xY13lr7kQRve zvyP_xrBr%w$9tmT=;lfujjS<+q12+;SWUKY#Ct(qGAKoTz_&)8bs^+33|Sgil9mIA z{iY>&c?9;$qFbSlX1!KT;r$Pg6jcHVZCP!ts9p7<_-?YJcD7#OjQHj^Seoj_ji86t zvf%z;dpUt)%Bh>U*MTdqE2eHL@RY^LW$PvO3nDS+T^;_=D}xz7djJ}fr}pTDYIsFn z1COVZ^fx> OZ)0N-(+zZe{ZifSIdaM_YQoLG2|F&s_g zAwff?i17dWV|V}Uc?48_lbBZnN~@K8&i-MIm(4svMN|~{+G}XyU1|qt<0Vs}WAq$t z%fuEe8>#ai>PCC7Q+2%WUH)adEG(N=2MVN!BR<#X5mkPuC}kNLCw!g_kEH3tVj;+} zgU=yegq18*50q|W>?(Ye0g(>S#62IrI*vN{j~^u#w*XUOzl$wg5N?jNf&3QE>`cr% zYCvdE*EOW(d}2MZ@QW$u)$8l{`@jDPjY9onHY9QL?z~8qpZRz7k7kg|`lapzKY{Cn zQD_++{Yl%x?T;M0e`VjqvYZKCi*QCRxj@LqBhej?aG0jWZZP<@z1qb45!~^9xr#BR zTj9!tS&tmFMc8mjh5?Z*Q4gUcjN+5k0`birfPDPqvJ#l##+HL4?zvIjfInj|Gtj;X zsCQ_*hXP=tz3a=dTl24O-9gP895r;7*+r?#77fiJI^YS2S+=tLvM-$(x!Elj0;wkX z&hRelNJ$o@ZXvQ6n@+i43l^nr%IZ$2yF=P0@@oI&lDMtW3lFbl%4R;6hsz`6UUd|n z%6x;3ABKPny*fFGqFNmR^}9o`)UByAn)k5Tap8{UmaFfmY+lH{`7-;xu$ciBweAaq z4H56SF{g=-K>_3llsC%o44FrWsSYLql?2Hba+kCrmqtJlCe@9TWI c9^ z@RhOWiU0c29s;ejszCLRHvfXX21jo|eMrIX=_F0zytvt<0*>M4IcJRO^}F4U$d-C$ zYUm&sGyV7+x-US1QVvX!Dsl?S%dv@k!>U8RAP%g-+ 1G)J=k!hj^fs6 z%*p9zjjHUHFgrI0b(p1Jspwn{|0(kx4V)@P5v+)gz6GTdzmWEZop;C%y=58HOQsjU zI!F~_b#Ziey>ZHIcx;U;cmo0q`OS!-pZ)NXNSdEQt_>*CpSl+L7g{sDzLf;+MAidM zARoeFtdv IkKA zRR36lRHv_me#*?Q29Du^BHQ;iUYv+fjq!$Gh1Q~hFMW7zSM#n mtWlAS2xBBPD?*7iShjF2FSC+)2kL{S^|S4GY^p1$5U4hBv_X{M zg{34C0K!Wa<&bk}vWMnHhyzqj4@~nYums9p7C#>boCtHNP{iyHBUAg!SmWW7dXb1@ z+OdCzr*d{-F&bW_#c634ZTuTIf!YDs@Qz~bN$Bdvn)ar)$Skbu4emHP?0fA{WhZZw z1yY(}NTleUD8Unv0HHqj+2-~2(?oZ+v|``Y4(B@eUhG}&ZPrv)M;y>;u-DaLgi%qA z-PFvIK8EJs(96mu1vA?nU)07c;5%A4CET^ni;O#=kunr>kQ_c#*>4m?=zt&7jWzq8 zi&Nr+CJil=9Y>iI=38Uz(Uy(xmJb^8ZnJkQ3I2FW|E{gE(|kWUP8A76{FpKKe) MojXn!()VPmpLY@eydw23Vt#mG$yJ>pu20-aq1P$ zOGg ~HU*CA*3T96u(o67t-%>=2I#yVko?PjRyjKueCcH?Q%4dKhofXed zbgstfzRg#A`D5M>72LxD(XQsMCfTtT{#G510>1-(CtJAZ3Y`w@hD$?YtY&Igv|I;k zlhp6?AoVn 5GD zM`9~u^+kZx;MypDsHRI8j;%B84$$Oww~>0l^D7s4R0IrfcRJo5+FD|1qFQ~Hntsy) zWZ#Kec`*s|glAmlR7w*K_v?WJt;A~w+iy*#Q0PVsGsI501geH#E*Kq5W_|@BzZeI; zHlIk3EU~~-5r;^NbNH)#cRW-V;<8ZZGYoSWQ%2Gp5XL`$I~C_r1Iwh0 zkdR4w&;gia82Vt=lF?^1c3PtXTHy Lseh*gfqO9 z^kP?#d-`R!OrXrC#;JU79vc58os$JJ=?lIOpTJq>_DD**`qkGv2#Pnj1;rXw26Ba) zWLW*(%3i2xwoHlhMFS_Vo$h0%Tk3qd
to&p3u{l&I`;*zQ8d86p+$0}CJrbk z^uS`I9WGCenWUU8mvbVKHSP@s^D*l@3jVyOfwLP96!UXGgOhll!WX1lbz8N&LR7}@Jw*o4v_8G+FIW|=rvCf8<``@6~5e&Zp ztyO-m$YHjEGzTU}21lA_Y-R438N)-q$(l$zpa%l@Db!$NK0{Ic3}A~Fyq1e{foMhZ zLZJC{u^oD*6xKo))q>*>3Dc#xuNiqk@cjuzNnIBeu8;H4xp&U`vqHVaMdiu|d`x8! z>t$T!yb(n**;G!fXvJJ~xjyC!5A8rKWK0Ir*ds^zeUr?x)XTgg9WyGrK6rg%_mgUk zW4$&ntIe+lq<-+!@XK43OhwNiOmli^>-$batF#<-v_-ek%9#VBlGGJrBT6M{_W9R| z3>noQ5GFWH8k3|T(wzdNaP;%EH?&brca~Q$REp-I>w~`z-u5e~6Tf+?y^zcEAm@Hb z-Q=PyKqzV%W_#Wqe8jb8Nyk7T|5apfTrlhN{eyqx7^X1#rRl{ZGvGe`kVy4_j<18Z zwdnNb!cu!k*Iy8^D^26#_GOR&aSTRoKj#T?mG-5kDEGFN)nvZ0Z5=OPUz7sFrVWiP zS4*i{n04soV@HytNkd+&?^|%P%D-rx#m6``=rrgH8S|s-iH^$$AA28KjfD|XleVg= zJ%Ex2aA-pl1r*&)lkD9y(^Y-W-3;SdQ#~Q2DL~l T0to~Jf_hNz}uFdEQ@r6z5*B@;?+lT_03F7qPE z!X3Y&?dnp>AkEYtvpP=SOdzjjQ8_vl3!zIDjmXWDHyRTCgJg}YgM=tD6{BIRC*fR8 z2!QSE`UyeO!CCO~Vs5eA9Z$F $Q*kV(97<#7c zo9RL}FQFBY`dluL6QbY^w*e)jx6!(3m$hj|{Vu21FQT z90(Ti#Xo|tE-; @g %lnjf-RdiUJ?%%9 z!)Kq%y?GUfdAxdhE#$}5n#>8PPmDhT9|@7kl1tini$v{AaX&BE4cL+~qO=>{%DfW> z4prSOYF7;(7&!I*rOL+$P0F)3111Bim&$G*!P0iUE6o7aDxtA9)~0mV7*MdQiUo z(jAA+dwKNS!uz)I`Qzog(xi+`>xYZKGt^=#2l$WxKcQJmP>?E$Poo@j%{#Lm5C$xj z2AX;5xVU8P`q}uX#^N$J{c{y79FC*`W3QVX4a 7TA^XSkEV49{5e|N*Z`00gS#u=fC*FhYV+u)JIVRJRGiZ`70^hrGE${N_MB%ou$ zo=w!+XYWLP1YTpXUn}u &+{v9~QIfku>@~@nC7yAU;{|e(0lpqti jyd4I?q5PjE?*&1Xb9`ze?d*bDRi;Yd{NV@aI1q65(w9w_rgTM(1y zdtvTFwJmZxePc4qFkR(t`ik$t9X5(Q#vlu9#3X!5C^|ACWh;OKYNiCwP(1-uJXINj z{KY@qFIWs`3er|&2Biu_m$_*rbgr0fJvn&XT`Q5@)*sD*os4)Vs!UamS{cc*^zq}y zX;EBHuarUr+wN?b4r?84xITry!e%>+XQI7gW;Quw;UVyp(2*F6Zk~YE%F@8gB}KdJ zraf29@=`x;rJ%l`myc08X_-NSqSzbMoQZSm^Z5+tpia*)Yr+dKHa+X+UDKmIcyrZk zq4`nLO+kr$Wr@L}u&Tic)BC>8B`)+$55_X Y2mcvJjAs%^y_{Eo{}b>?jw$YS+kec4EGH>dw#_)@Q5`FR^_h~u&|hO zj>h6#6w52m-gqQC{T(LSm;VhvBgT~ik15bHyHe$b#Kaxq)=(=C^LWPvtRl4{6GL5S zm7O?=MY~wo& (zb+1W6G{bZ-kl1_$|NxXa#Q$&dtOUA5Khr;lCwM&Cl2`B;M z_;<2!W@+2>JGUP=9`Bj=-hVaJjPm}7PYqqFLkmtm%#=Tp#c9sRhru&)jCs#hUMnd@ znY>L%KHsW5ucCg%!!91V^06l2U6E#)$i9ajG#!c+!Th2OL&TIGX5&Z?v{IVUrach2 zVfVI1ZG@&ymb+~ncA%V*aNhjw$X-LkYE =Mo&)-l1piQiog2ixhvwr#8%S)ht @bg^HgXbOM%9B%ZppGFWtK< zJIoX#GK>_CgHMW@5ss|tQobsI`4jcL4qMd6qV*-wst)GjEWy!O&E 1tEoDUtf2$svZU9)D;Yc+SEl+PXz)_Z}H z;ydhc^Ud`P&$jC7>S-gAIx%Q<1d3`Ga$LbdUrqZgu1 L?*1?!SBBDpUtHgf@i z8y8o^^zS(iX}gNzWN LBnhp3fr0ZQL9hE-`-cRm>u`FUs7% zapVQzwTY@7yq#=EHK9*djf_-0LrQzI8nwMpRnfdLYDV6zvJ|TdPS>@wcONuG1UxS* zvNv4$O9RP!#q2R$-nzrzH?n(I1DqTVm}}ad_TLX9W>D^^HgHQSGd?1^-7|iFh|ghK zGM%6@QC7U{Q7hMh%TYo)7q Dg}FY59?L`l5g_xKPd7tGhOu z=Tubyp+@O$inxn{`Z;Fq{XU|Y=0i;HC2yzUzy%0{O#l41b+V&jN@4VqpDo`YY{`<{ ziN5JCKH<$LvtA0IINCZ$j^Yn$Ls6D8(wS%_ZkxnW <{~mUwSL22$^^oC`Yk52?V{6CmL96iC(+%P|ij6q;z>HP4=Vanf t&zVq%G%7xz7 G#T8TrzEsRqB}3LN6vP3;nCT;S#_d~< z_aTXIwDVWDUBQeWuglJ!Xz ^sD%98f24B8QTcS99IJ zeXr5D2LW0GcPhw7{tyiXf>XuO*8@cBWo9v8S9|qs`V$>nz9Jd(gNR8 DiO1j zibk@72!cs*!TLgRzE)>WfINpXq#k|Li>g;ps$!#<4(g_=YU^p={i1NjvYHb$n4!cB zP%k$1bALLdz@EvG(UI !0A3WWh7}eQG&Ar`G~E|uy-SKG(tvlae3(0`&wul^&6(mG$*%D&^p4J zPHDWtT!T(tO!G!z=P2A@DuAlkDoarSRfjd^9YeGz0^m^Ar2fN$cRCC|IA30Wqk+C2 z$OI9?yj!0?*#AnTE`qkw#LDti1Sc`8+Jz=sXTAqYJD)e&s-^b-z8iveDS2L{EKQnG zSQY7UuYL)a$1f5rk~ixYe{AiIO%je*qM~fUO~7E!5=uRBi;8ZD1E~b{ l3;bCK=y%z#J}GueFw>TXLn>>QEF%J $n_W zQ3@}}4`2zdU_Q_;H+0r(zl9|#wdv21{uuYk)rI8>#18wg*mfxBsl0=YOP&~Lg`o($ z5K*h}kl({9KaYR-e0CTX742NdVf_+5DIiUdhnFKc;He>hT6IxPFCHBI0US&~c?1Ux z>2%;|$s3pGhJ{Ws$#bLfPi^wPDubiYMAWRP42_ukzC7RLE=IDTalX)gC=3`7ni~%4 z^J?l7`R?wEddWwcfA_Y6z{H@q#Gv MMGb z f6 Z2jub9!$Y<3~4Q0MYQFu+D8paBuI@(^&9B xf06YqC3;@yHHJt6Ro$P>^+%wP024t%PStb{)6B{@m(*I@iHo-A&W#_jU}Oe zY;%;FltRS*4zs+~jeXLceJ=Mf(snNo#H~GE&+UAShp!#$2;R8jER!!~Z#)q$FFE&P z(ohRc7T52ybm5|GDzdJ$=IPH3n>zIEZgK)agyHGWf3g8Opp =JyfrsoL{wQ zGF6m;LuT!f@Z~j&gr3Ce-}1y+RX^J8&J?7+`#SBBQXq070B8a3<4T>~vkd(`9WQyL zK>5v(^dI8-BfF8YjeB45 bBq#>2 5u#;ig_w-)bkWYcy`(3V4tqPXezG 0F;%=ix>r$rrdeC%jBLYj>JQgm83SDN@CJ!tscH=UUOPydnj#WGVr3 zW?a2 puPY#wXh#R~LFDJD n}V3 z+mC5^xuXdtv|f7>4bvC46r)}^{!qMRgkfn5B8_|)02WEUBc~!h-W7NLUYxE7e!C+% z4~8;R9MU7pn)6;{bv&5Cd<_vzi*1&qSYYlyADO?^OLKHlX}^+r$HkYwBwZQYUzHc@ zQcuLUmicOyR`Tuq$cs5*(j*6KaPP{C7*kR *q>~DXOp4tFV71QZ)D|hD8 z_PA<@YCL>WUz*e~!Kr=hTW8xb9kO3y;`9CbaMSD^(X=ly!fFFW$xlgU5A}sJW{f%m zxpoe&GjLIwtK*+>L|?f0Yrl@{9O8zd-wsrJbVN(hR6 MA_H4< km)*tKub*FtkceO!e!2ODtlubY%bC1+z@KK^zWjLFGsZYl o7*^C^9R?+4|jS=tj#0c4TyBRq!E4TJbRp_**afD1#&iUIVAi`L_~M#Re`z-`kCp zRP_=Z|AdP*mv0+^9RLeDH@^H Pp7>Ief~DHzPV1l3z? z03;+om59Z2CfZ~*e$V=*`Nc%C^qLa;u`9^(BhH*?6%+zd|JVV}PItM;WZs7CPhI-~ z$4uecnv>BN=6+TaiFqR>rhtKe*50+bsrAl)Y9xtg_fzm59ni~vpl$ j7u}8nf@PH4s%$hk=wg;W$QW{z1$XpG6;tg3cIt*DpesvD vOD!H~BD9@CSy!f$khTB(|E import("./conduit/index").then((m) => m.generate), }, + { + id: "evolutionapi", + name: "Evolution API", + version: "v2.1.2", + description: + "Evolution API is a robust platform dedicated to empowering small businesses with limited resources, going beyond a simple messaging solution via WhatsApp.", + logo: "evolutionapi.png", + links: { + github: "https://github.com/EvolutionAPI/evolution-api", + docs: "https://doc.evolution-api.com/v2/en/get-started/introduction", + website: "https://evolution-api.com/opensource-whatsapp-api/", + }, + tags: ["api", "whatsapp", "messaging"], + load: () => import("./evolutionapi/index").then((m) => m.generate), + }, ]; From df43f8318a70b17cc7354c878315cd0f385493f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Gabriel?= Date: Fri, 17 Jan 2025 10:37:01 -0300 Subject: [PATCH 12/23] fix: evolution api database provider --- apps/dokploy/templates/evolutionapi/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/templates/evolutionapi/index.ts b/apps/dokploy/templates/evolutionapi/index.ts index 39c4328e..98e37529 100644 --- a/apps/dokploy/templates/evolutionapi/index.ts +++ b/apps/dokploy/templates/evolutionapi/index.ts @@ -33,7 +33,7 @@ export function generate(schema: Schema): Template { "TELEMETRY_URL=", "POSTGRES_DATABASE=evolution", - "POSTGRES_USERNAME=postgres", + "POSTGRES_USERNAME=postgresql", `POSTGRES_PASSWORD=${postgresPassword}`, "DATABASE_ENABLED=true", "DATABASE_PROVIDER=postgres", From e21e0e18654bff0474de4c0807b0c2fc6f76ddf0 Mon Sep 17 00:00:00 2001 From: Jannis Milz <67200746+jannismilz@users.noreply.github.com> Date: Tue, 28 Jan 2025 12:24:54 +0100 Subject: [PATCH 13/23] feat: Upgrade listmonk version and remove automatic admin credentials creation --- apps/dokploy/templates/listmonk/docker-compose.yml | 6 +++--- apps/dokploy/templates/listmonk/index.ts | 7 +------ 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/apps/dokploy/templates/listmonk/docker-compose.yml b/apps/dokploy/templates/listmonk/docker-compose.yml index 725d0a09..17b09f41 100644 --- a/apps/dokploy/templates/listmonk/docker-compose.yml +++ b/apps/dokploy/templates/listmonk/docker-compose.yml @@ -1,6 +1,6 @@ services: db: - image: postgres:13 + image: postgres:17-alpine ports: - 5432 networks: @@ -19,7 +19,7 @@ services: - listmonk-data:/var/lib/postgresql/data setup: - image: listmonk/listmonk:v3.0.0 + image: listmonk/listmonk:v4.1.0 networks: - dokploy-network volumes: @@ -35,7 +35,7 @@ services: app: restart: unless-stopped - image: listmonk/listmonk:v3.0.0 + image: listmonk/listmonk:v4.1.0 environment: - TZ=Etc/UTC depends_on: diff --git a/apps/dokploy/templates/listmonk/index.ts b/apps/dokploy/templates/listmonk/index.ts index 725659ca..113b3862 100644 --- a/apps/dokploy/templates/listmonk/index.ts +++ b/apps/dokploy/templates/listmonk/index.ts @@ -2,13 +2,11 @@ import { type DomainSchema, type Schema, type Template, - generatePassword, generateRandomDomain, } from "../utils"; export function generate(schema: Schema): Template { const randomDomain = generateRandomDomain(schema); - const adminPassword = generatePassword(32); const domains: DomainSchema[] = [ { @@ -19,7 +17,7 @@ export function generate(schema: Schema): Template { ]; const envs = [ - `# login with admin:${adminPassword}`, + `# visit the page to setup your super admin user`, "# check config.toml in Advanced / Volumes for more options", ]; @@ -29,9 +27,6 @@ export function generate(schema: Schema): Template { content: `[app] address = "0.0.0.0:9000" -admin_username = "admin" -admin_password = "${adminPassword}" - [db] host = "db" port = 5432 From b96169fa5523e9fc1a5c70130142c228354a003c Mon Sep 17 00:00:00 2001 From: Muhammet Emin Akalan Date: Tue, 28 Jan 2025 15:31:20 +0300 Subject: [PATCH 14/23] fix: teable template --- apps/dokploy/templates/teable/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dokploy/templates/teable/docker-compose.yml b/apps/dokploy/templates/teable/docker-compose.yml index b96b677c..959de21c 100644 --- a/apps/dokploy/templates/teable/docker-compose.yml +++ b/apps/dokploy/templates/teable/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: teable: - image: ghcr.io/teableio/teable:1.3.1-alpha-build.460 + image: ghcr.io/teableio/teable:latest restart: always volumes: - teable-data:/app/.assets From de4d1c0911e0b0d9cb6ad3d2a1765783eeab783e Mon Sep 17 00:00:00 2001 From: Freilyn Bernabe Date: Wed, 29 Jan 2025 00:39:01 -0400 Subject: [PATCH 15/23] feat(template): add Formbricks template with Docker Compose and environment setup --- apps/dokploy/public/templates/formbricks.png | Bin 0 -> 74620 bytes .../templates/formbricks/docker-compose.yml | 38 +++++++++++++++++ apps/dokploy/templates/formbricks/index.ts | 39 ++++++++++++++++++ apps/dokploy/templates/templates.ts | 15 +++++++ 4 files changed, 92 insertions(+) create mode 100644 apps/dokploy/public/templates/formbricks.png create mode 100644 apps/dokploy/templates/formbricks/docker-compose.yml create mode 100644 apps/dokploy/templates/formbricks/index.ts diff --git a/apps/dokploy/public/templates/formbricks.png b/apps/dokploy/public/templates/formbricks.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf1ca1fbc667c45bf30306342b6646e6c248988 GIT binary patch literal 74620 zcmeGDWm6n&*9MFZIyea=1eXK}!QEky1b24`1cJ*9Zi9zFfZ)zxAwX~o4#9nJcNts< zx0h>IJ@>nR!2Y;vRaaMcudeFVcCJIt2sIU1d>nEd004k5FDIh`0H7fMTd**n_Y6+2 ze1Be{fHh>L0A(YTy8r+!Kwd^t%hTkb#jxJE*Ns}Q_EH>33(}}?)OkCHX+L t++*#g$cJ)y`y#D$AOT|IIyOX&vR4Ai5%ugfqj{3ub|wBaaK zwca-!3X=l>5eF^BKGPZ1w$n!1CAP=ljt=ufF1d`B83VUe?UGin>}jNGA?Sb6ZlQ{D zH#-Vbg=zl3(GCF}r~kj3t9WWKv|BR0F7Z&6!2b(^9X~<{&i_RQ3JwG$ffhMi2xtCZ zptKzSFI^>&2NX!KV{P{G?v*gc{{nU;_P=yyXUz9-lm|T4&)HJ{yFL&Q*$Vt$I>rb9 zLl~AF`0+q<=hgoLx_tHjRS+5M`5c~#Z+ 86=H{v< zi5lvp Ueqp+r#9#XsEFLtHXJ+ta9*dwHfDCSn0lNY{!x+OCBqCa(v zwtLuRa!FeSPGcU^VA`8aUUgmi3aoQq KT3)*4Rv3KD&=Zidcndt%UeoVXyh~vKj zzeIi `r#dpYi+ZHp5fq& D&z@Rv1JzF<)Uyb%;p_xrT5}i*{4LNo*vE_s zp+y`;<+)fvJVCY%B5}L`NJ0g1L?Q|eXeL0K|N#vTiQ&p%2^;UkI=Du-V-Cnfo!g5SQ&Sw?DW!|7K{CV=Rexx>%X@wPW`zD3*_ zG2+nAU|5lp+?ZZn_dJQ0s^g=#=$Qx)H)nvn>66F iW0V}i#lTMm7XngL!wGEd< zhlYWIO&uyX|C0UIpHG1OV$f~vq18$+q?W~nhw=Bn{h5OQ0+}x?1|_>p -a2`pb@>E#XnS{#rE;%jh-C!Lh2Wo z6pez5HllK8_Y|11VY-+cZ3QG?4c) MA0*UnhJSc#u2 za6g?7nC&1O5j$PnS7m+LO@DL9_hRT^*=(d#5<{r5wq89?hFS~e9{6E;H6aWr3ia>s zQW8lhh@+$E*dUrbnC^G82~IAN+h7sV{Rryqt>H;kn^0)-BlvA+wv6*Oo%4l0{1t!+ zU@Q{9B_N`Bh(0U%iK(9wIyEXLx98Osl56YtRvpc3y|+G{r}( -U^FY?d6-E^;D7gTnS$eSi-%^v z{gFgeM+DY}@#aBY)$3*|xt#4_ iB%a-vfy3^~0cvKQ(Rj+8;kV98|qO)GR?9A4ezup=g=myGEDvobBMe&I4O-`BffL zr}U^p&X&jRiD&pBcIQBL`2(WObC?wL!^OqxI7U!{XTM^)t*yui*Xs~X;zXZZloYhf zTwVjfS<)SGXLlH0AUca`z?LCw=llLkhskl|i)mZhejU^j%x+3zZs1Yt0w5Z-J@MR( zo%`)2l^EeRFTH`3HTh5}1`k$0skPQ^J1Za))Y2Ao)#0?=Ay(T~b=>f@tr!^${O=hV zzkW)gObjQt0wSe @7x^MT1jry;HkRD9K~&rbPoHmqFh z$oHH-u2E+&Ie(8+hpUNXL8MH#M#2tsF@rKxkd&J*h7DB?1__5SN!BW5sFHr^M^{Jl zwoRFj=0|!td|bvJP5YUFcz1eMqv-GihGs 6v^%+ZzTMkJP^byLIJ1N z1YyQaq%Z&I;)?Es^A!PGpu%a1REzT>=-}8yRlao+dQ@Qfg>(Bxj?)`UO KLhFKSW^CGvz4ejug+~=Ga~ f>v?$@Zwyzto3obn0+{qJWeeN=8 zl7b#? rR?!0evZ%!furiu z4mZLr+765LH 3n8sL=eHlNYww zA`JtwS>23aRbVMi$jtf^45G|~leNm4u1fW~P)P$FQtEnDGXXWBknR5@W}L@+pu{a< zvtybT^?sZ;Ih9uSv^m6Nk8roQ&b5PAZxXA*g7yg4o+8Ek9$Z74XxJnL1v0O+nFP-n z=Sj5B6Z8mOg EV(#NByT3Hte`w3aKJY>n-%LFO$@~R)`;(d{roGoiKvQ6 zh(e&ZlwauZWP=3RvZe806j2EAXdg&40c&$KO+=U#SKNXY*5W0=3}0bqjjXDu8eeRK zHTn1Amsx%JB~g~wgek&0<-{U~!+&U^(HyRef=SgC#3IkN=ioh)HYG!XW)@x&LA;Dc z?j;L@wb|*P514L=b{N<)#A;N>|G0P1{v32?!i+VCSymaUIxE}RE(BX!DKQlO4aqtP z&GPYgRCYybZ(xo1 q^*`Z>=_H%zo&EHT zKpY@@9 Oe@Q6z+t!#rA%kB1pd%H=!3DSnhTQ8JFEKj?}xG$ePM*>^bDpgv)UCR|zq zG!fFZO}@)6=*0VCvr-}>iY7$-p)+vNDd<=0O~1ZGRIq+oGDpjUxM!!tM8U=Fqxgl# zGwQlfga`w#Hv%9V^UFt}ssUI3j(|rTqd72U(KwW^wC)+kd8idt-xD*(PRv|W4ta_v zCGoQ wq|!c zSk$(R@-WFUwoAV1 D?f0v^M$c02_uVJfFBlFo&qtB(-NIcBMlgt(vhvEBMsXMPhlBHHD_il8$}0@XSA zU}Vau)*GIF8&6sg;okJ;3}pUb2D(0))!es))*FwT<|OZ*)65oml5BZgX6az@QKNUT zNPoTVk+?D^(<~pnzBDuBT?k6wDDlQT4=7E2tt-nFsacabyJti7Pt?{f#RC69kk0!4 z<~2DT0m;Tv{mM$f8ij7aT6N)m*KXci$TPqc$eA|0ULF*1GBGfof9UeyNJCsDU5>MB zMZt34Q+sbUghsH(`R++c$$kh+C}f6#87oLHKLW{%7hB?E^e|aA#!)ttLXdP4S5UH^ zZ(=Fb{#xRE2qgv;ofT_-N+r2j2B%Z>*P7d??@mwS?_cil{W4hvu?bB_+36fYXJ|{6 zQHazSEe7ZB1iUyHV`X0`+Z%jUs5X& HyJ wwhkvEMMo?W*nADM`<>1ddxybZKt;BGXxI+OClQQ3t#F zkrN_uPuFL)#sZ6+( @gs^!60@CbzBD%Qo5{fKotT*n+mC}MU0mi5wiWa0Bs4?2B zRUAdF#5jbKl}Cq2tR!PhdGHy8-_&3T|8yp8B^3#;FXcR6^juavP(3PN6gggbItX}# zOWbenipAdc*-}~*sui|}pe8#m{Y9Rv7pRIEiJpp5FvtQR0gRt_QZG(7rKFg47qjKG z6pc1bVt{{9|G{pzGiJE7nW&`>UKKWHyXBH$fvrJT?*%-yLGO>=GDbw9Ya70k8KR!9 zj=PfC5^wvNaCO(!&mm_>dDcxN%nmwQ%@(<@Uz%cA9j)y(3@#s*&q?L|i()n*?)9in z!pIXcEw7|;oF8QtJ09FsHZ54`qS*6oXJ7>4MGTF*R$LXkYC5Q{X=SeFF%BguG6@p8 z#bed!k&S_#ZJ61(>jp0vbFlqh L$73S$ucpOx_ND8H z*YrBY0t)wRKPYgqiKm0IE*UxG7kz0=RWsJR{xX`|n_CM0io;Jw5% 55Qhv^Yts$=y zaT-~6l?(d}FVfGFQcjhHKDQMd zk~q$%fb8ZRoOYx2C 93OEqgMdn-XzEc0{PBOc*(W5xO^#jDjs zkH=w;au4|yw^ZswKPos4+k>j^vFXG87A`O{y=laE)eP{ qaMB|c^bTnId+R(4vm zQ>G}cwh%yD4cb{a@?9hrMPagLN(_()W2C@QgWhCU00)C7v!xMkcw!Pf#~9ODDOwxp zI% {N}3b&x471n^meVzoM}u~geJGQQ!x-ViI1}Gj_;}9syC>a zeJ8EA3)%eB;)ERMu0Mz{yOIZ$oK8 +pgux867nt)cHsE1o*)De>;12 z*HBekX%&|fr`A`pmh@PejC&Vxn^XiciKL%waTT(TsyGy`UlUpytMH sKr{ExO9T~N`k=mTVEu9$_I>8Y^06OOXb>(6yTe&ap#@#(-i|Qq?h5&e zZzR$HG8udgOe9p;LeHJjo2P|-0Iuk2(b8VRuU7Y=ws~rJVPw<<{gX3m9%iWSJsr*G zkDYH?{V!6f$Lsp{GEZ8bi%eN9ENZ%HzP}kH%|#>2UpvIsNs0Eb7x*5l@)#=A$K+ zjS(MAlTv7|tVls7 9a;t %4;z&Jg>?+`0-p_(sJQ10l>MBQ &%4-GG{Wh2?IQKqwAXOIv6e_KRM ;1+1j~q<%}s0kB rdHf>)42cFw!a4weXbto!a=}$v3yzMVSrQ&>Nu~F|zn&+fr+Y z${n|jBI4hu=joj_s%9 R9 zX9ul5^W@rFTHz}Y370G;;%6Fu0~Fkr&i&&%nYCfRbRNto^!Yo@m@_Kxv@02Ha_m}A ztl?^I=Y)C^#|0nW(&{l6r_DhOy~;(mbM$mkQ4cK}sX~Wae RV#L8DOc)P(rkVB_&J-RsX&hXZLYydv)a!d)dCM}MwH zO _X%tq+@LJR239??UoWV1&W?9BOWdb_vps)_oM6 z(4$Zs?48Z`Oqdk*JKm_mSsCTM6?}x4;15^W-*6JIGX|C<-Y`HMoapPM5TCQl+FAQ> zvBi|wH0O%xAF6fzMdkWgvZuB+vHkobPlRio@-vWZzqoDWN@f|(VSz0@-}Dq4?iga} zi@Z0m6O+#@D4WQ8Wu!RN=us@yf3QtrCxFL4IHaDZlzrKl=hG}mr4+g(m)6NEGKsNN zhTXF-tupW9O`E75?io$^L#&`muAsr!^s%lYCC0e=Ths(^T345!Hb(25s{Il2|Fv-P zYBveU)2pY=dhrW0kJEn-ROrqpX0jC9FSwnnP+#JfKtoi5RbLm7MzW)1`UOi}@ElS_ z)j4M>QUKUc>_60@@{PAht5ggZ0tqE}#s#lIp96)qU9W@`KFilY*fMH&Flb&xarY)3 z?9jEg0OpNCKKUFb|Jz6_DUk0jP3epZg8khW%wR8nnTqeHc-AKk%san^Nt)~@UI@Jd z*-bO6eAT#zK*rL9wu7EA$#{fSRgNPM!aOd85qPF_OvHxcU`OFU_9QtHE-5mjdnUYv z+e2UE&ycsDdb86Rn?`jnzeY@jZ}la4d%g35>G)xD%0%@cA>&v`<>(cDDdE<8=93YQ zr|H60u=y#fXURY70QnJ10!d@E=wdCBH5S0-HZ;1BRsn|BP7Jen&H6FAcVE-65%>zD z58xc3sjcw?tS~0Yh5ltqf;xy!w)yJ^mmM5DHD0=Qx8c7p-U^0mJG{CM>EVMFc#zBw zAEpF1%?@JYWq%>;d3?`NyYI_oZ=HGWI zF$m@-QMKBZ#AouTFaiGXz@_5r>e)evw{!2S5_jomV3C==9g+>8`suR1S%{FQ$_>n; zqf<(N$KQFi8thF&;_gZz<)9oHHkRG8r>viFLugr&9wUK>#8XBCC|zf#-}YBM8E3e| z8`2=5p1jZo_3}r0O_N+)&4@1smkI<(Yf>El(pdc$ < zpWjrn6{_Qh_?6~U0acD{aFd$44d Q zl|<11w_NOpgQ#=4&IdiCZrKcd_ht3MOfX4FQD_&bFhM56#*m6EOj$E9iD=QeP54_8 zeU7Tu6&Z&=Dl#rXe_mW4+j!!mNUDQ{07ud87gPG2nYvrNK4q<=($#p3R0TZ$=xOi} zmQi|q<5qQTTLW8b%vYT$_~h60rn0Gvh|CP?-!{ay8ZCj}_?>gb>b*T@#P6F}JbYdz zJ52A%W$!}$^EXAsezZI(ww>-eNi=vqu2mqJjU*F?$+FE7NX-*j`oE==G6|kf;7YOw;sK)mSwK_;8@S{1z4F+a4aE zd)iStr;fH867TDP%V)N;-NIVGtl(vuxTJzh@KpjSbwf{%Dgb;vI+tjeeo_8s`6-ek zBa8T?R4DFQ*mhnDKoa_IX!?jmzJVFcw-~clt*@AzaCrpJ=~Gnit8KN`ckz}lDDFVg z&{j6^*8k57KwzzPG}hw#A?J<>Xf7S&rS>xa@O{Qbu4V>0osD$(${Vc=46ThnQiYtq z(XZb@SrDz0yW$4~t! Ab zqc~bBl;mqyK_SaHat(WysW}^$nJDsHT@eye!+5d#star2hh$O!#;owqAJJI9Uq_yH z4yMyNZ}J(;lp!v&mObY9F@Xj(iESRF$(JoF{u=|C)@2^R2H9`S&xnHVG$wC ?4DqJ@Q{~H(wn2m)ZY1rLq)m&g7LR63(BW5xhV9`*ot4VZ>QB?{*=G?+c?ld z-#tRzS5Q$KXQ_e}`^AyhIk{EQ8@Esp+ndPj#>sCQ-VCAid>O0Q&Jr++Vp{Yx4rZe* zBE!O8XNVo*WQgdeD~w>i;IqEUo;cZ@A6x^K;n%*&x!-HG-b^mR-CnvnYC{UpTsw2D zx>5ptEYhjq6xbJni dhhM`#^W)Rz$MB$ej%M*Q0__j zZrJ$gjt$y$&spIkJ%*&|Y*)kk^!pzjILCy*++%NU!ar6d8HBS@pJh|sj76hT2*MeNF z-Ct?GjjXRX?t5HZ`_E?Kj1=KhZQGc3^1p9VWp@e_1glk}O)D2Gj>Y=Dl)p~@H=R)2 zKpJj>id?K*i>VTY@i =5ZGe7K^7CG*bb{J;by`ytlh4Du hG(}NQ4aun5)VZZ1Hd%C!91WGZW2KiGBSDq@h z%b%M@N=vRC)}__bH4DTf65}9jsbs_XlOt7l@tDxop!>L gh z=ibHxB*FME%d$H8KcaA{a5P|w^-XeEc<`0DnBMBHs7oWZ%jWKQ^ET4+zeWaPdn_gO^U7i)Xn{o z6%AQlG=C4!o@l+fJg*;WSgUf0B(-jBXSKCq2BPFDybYLyjzDF5mMS>F+Or8ES(JkD z6+9XZJQd^E)EQ09)oE}X&b*hI+vB?Qayxq|xU_Qh2(6 p$`%j#TqHsP}Oj86JDm93ISW$$(;jATfnE%Qwdl=G>n9mluBxdL(+WYK(C2Ejk8U zFly|2KdDIPj&oY3r*OY(7CF6~wC P|`Px-Z;(>&Fu`1z=Ycl2fLiUOGJ z@FVuN&4M_+`!31I>{!{*&Bf!=(%n_rVvBc+u7%y4o2;iQ5c!UNTV8 yXJD-e;K2qH35ZQa=M+l3LsyIC`UZ@0B?{)OBXa@f_QdUX)Tx>~ zaTBK}%Y76zh?ZOxL_Yt U3YB7_xsaK;Ac-pMYKne%Scypr_d>=` zP%xJyL;0J$myK?2M(c>GRy=tB^EvTCL{D|tAN!BR>f4N#1!u*etF9{&o>9_rsZs6DONhw5vB>7s^5kNQ;m(J< z7(ckszhjR@3Bl~K*@bP{fJTwtOiph5Dr^ rG@g-A44NgBR2*PiO=*y|NpW^(V9e3>sqQy2AdO>IQB!9MbE-nBJA5nfNNBpB zr -j&j391Q=7*1Hhtk zYyfGEfb&X(j;o9jorZ-tCv-;#a$xKib+N&r8kL_>$sb!to=P|RfVf$}$_y6z5=Cfq zk8HcCrt)nrE0IjWfP^{edl@C`MwX)H>ODVgbSvp`YbOq_=T@OyZigYUvZ4UU;e@Zl zXI9RM^U>D+%m^D~cL(BP1J}+7#K93G`$A^RVK;p*IpG%0mE05uKQ5rP6m%|$Zta#F zOLs@&*NINPC(>e62kOl!KO7(+C;Ca7hQrK&6N>CcpT~RL9x?NS3f_&gcBlXjs_=a{ zP$m}AiSy>!{DK8%&{Kq}0Ft4cfQ;|pnPP{BOr91lX9IQ09>sjA%?m%g_c?F=O) j{gyz=| zqU(Kr@RiMr#L;heOe%rlnW_;HxokqcM)VVLLqnVTYPCLYO~D~CdB*tf)j+m3a=bhQ z!Ct+=K#$gQ&8MZrB#fOaO8ozXV0 6Hy!N_m~;65ot4 z1b91OdKZ3O5b|3=dQKBH)-5D)|G_wM0zmrTJ4bt98WlCrf>ad?<9duUMv5jGdGT76 zCEvvL5f4 7_F Xo-rg1F6F~Vfy?u}M_Ee$ zc`$wy<+JTT*b07Fka(ypb6>H-sQ3JZc1t4T^D4&3`=)0Ls4D7W=Zs*F>GY~@(<2uE z6;yo!0Y`-D=g+Xx(`UKRya}B1zc)I6_SyxR3<7L5z9?IJ2X``=zg62}AFL1Ej?gON z4TDl&P)dFNh3A>$mlcC<5DQlXJ4Fy@$HNtQ(-mr=R5W6dF; zcSIk2pEM7R6jQ4v-}yS;pQSlU^N^(p!NEDlb2t0`o+`vYV$=4+=6_li^C I>IQyiv=_KTzK|KHTD4yJt}> zjte&N?xQr%yg7MGmYx1QH0HbN;#c9cPOF}~If!Jlk?T0tew2E{w3R>q=8k|9{`GZz zG*4kX*MU#b*(EUU_jDK>O2o;Oy@nu5z%SbD#Jln5#!t{X5?ziP5DWhB*q-5;rJIXa zGs$7Yj2K@Z%c6+KF&r$)TB{_3*^~j7-@0rAlJ7 5fP&ldKAY*z8s I`){AZ4>)HK|C|o;&cFS&ayT_H@H*hc%h3Kl;n3RwxNti75qpfaR zuj1Z;(%!7v)nYx%`bI6}`-fX++Ph$#bSy~5-_|Vf_lZm7;xz`^+S5=G0(@v`qeSF@ zeg9gDo*bVc$0_IEuxpS3QKCAaRO74UTlVH6gKdsBc&SA?nu()v8l~%@RT9gMP5QZ^ z9f7TqY!clBkucgVC&8*Gs)`FHz;DKH^x>hr?eS7%Ci_s{D*82j#i;{-7dBpr2OV?8 z--`m>WUJ 5+@Yk!g%;XOwEn|NiFU ziyCrk%~!N^NuGapx;8u4LE>7ZROSp`q63)X>a5;xYc0>&4Op!h Bd@E^TDS(+((nwqk1qIy6#JNzAULri*RSQ1HdpSf}~DUj{Ej$tt^j_!c3Z^0T8 z21A>EpRq>G0CQ^mz&dMXTgecIqm-!98P!PTquefUZ8?~c97p$JOIJ*l{`+sw)E`Te ze8F8c1a0wb#@2OfT^wD{2d P&5y#-Ht&FN zD6S6fBiaeT`jzm|+)E|YM$v+8VR7#Mmd}H1(SaUjzSM*SND~i!rSJbfqeIdDf-+L= z7i1GPQ&Q`9U%ChyDWfI_P%p%UYlqUkXg|sh>?L-)ik%O!OWlW8a&a>VO*QBZGHY6B zKW(mR4@|ZG6b`W3K&Jt)j>Mr6;NxJZ4WZsrI&YOFw%f#esPIsiuC^9w{V^Ht8f*!5 zdCx@%ZW|Q8XjbqW;eP$cHJPZ 1y9(XlO*z$OS8*sX|Kk8UT`mlWX z41fGY8Z-MeBMk#wEsPE%fVLMemNz7+2m&=RcNR40%Uz *#Gs+vgKe4rq|ascf+Y{(mBqfJ1{(K-llU~4 zj4zTV476ZqX;o`;IQ4V(St9_tsJ<*}gLR5=4vxvmq CTjp~iyz3nqr; zLzY# NA#9zpEUXlDekbXrZQBHM W7jlkd27rq-bjs$wC*p_plhR4FOMbkQ`-&*uK^Vy{{_OO_iwEUXS(!7~jz9w;g zqjCD_eDuUmIeM5cj24Kj<{jsUIDhY)(V2(K)* zxd?B&U3}PDa6Diexf49^XHl%}8VeK0w72;QuN|g5<@UFoVPYCE_fV4uML@GCS$$*S zyIE1xAQ#RT?C-d@A}*_;-8K0Um70{v^21v4ihUm$@8vMmO_yk#bNvXTGt^^b+=}Zk zM@Bvtw$(^mDqYvd4Hy?+xa}E9l)d}zOb42Qf{c|+V(^?_p_F2fqLF#tXvHi5!1CWq z<;xp{W=O+@@IMww)KXcY_&KtRnz*4V;b3f~V127P^-=4|xjTMGpLiParQO~t>H uPrS2@Qk5htflX8i?_De_qZ`$Zo{%IP<67TA_S=4hRv&yZ^Z{nhruS zj@DMp;sebrFTdDN28hk&H;_i^r0!3s-fUu&ds+#?4AK)^QzciO1y4{;zGHNI@**sC zRa|6isSxyFFNaQ}qtvz6C8ai?^muMXye`V?sr+dnjp?jmE P!Q Ou4n7j#s$5ZK6 z4Ucx^All!ei4U9Gv8`6`?kB~IgPjZsc)>$bHY4NFrCI5luH}K1mH-1Pv{dHU -pQXB#Y<23AG;n6D)v`?Vd@$S?_INM){9$KTQJs}Z+?bj?T;9|hf8s2s zbT0(JALLz9jM2e;Vl>~&%&rXpE*ck!Mt>P#))|xcwu(i|czWV|84&u@@r)WM`{AJ= zV@+l_nqgO=#XA1Ll*&38ph7~frJ9=4PK(eFwOx8BRscBi$CU%6EW_#On3J7qbmiK_ z5|Eje5mNOU`jrK=LK3xUGQRQCLE)p);E^MS^e}qGKnwbH>FN@9Ps8ga$UWUf34tLR zh_J}?aHn}-3E@*;Kb&aojWgSGWxKFI(DbtIuwEiL2QWL*=5a(NK+Qg~p{*^?de4~8 z{YrTY$S{xHH==NJ>gAw0(>Xb;qy?ua`}58^ZQVjpS8L&B)OWFJ VR|HtX %-55dmA^o$&qu+%{4{^2OHoGIq}pjBawlo&WR zc8gA^@=N6HPX0V0D +oR7{9g$ENR@d@ z#k+oLR4Q3^->bS!CE~Pd|GfUnW3t$7F3a)-si2|B`g{uS23IdB{oN1JNuqB_lh0n? zHhDuK%$x}7)mOdz&oeQK7lT8NK2>jA(u&m@;&)Pkw>l*j$35GueVz>zD_QQcx0^sm z|Hp>%wnOIQxkqQcw2RN7tN343w`6CY#P^AWM=~9DYd@0+J1)9V3j36*R;2|Blxa2C zwQo7|QucOPi4DJcvmf6X2vl)#z4?1<=-fs80q{iOg$6A%4HA~ySx4fxD?+o-*m4c4 zBpI*z*SSKR<7EUIew5K8U$v7u{vx!6#Ybqn0@CAUZd%7PE}Fq+BEW>wV>cG(k qXR;%Z)=~8F?@~$rLc{ c@eOox@tc&lhEW18VM |NpT^q z5TB9xF=`NIHw(>j(l0~yZo}hBl~v7(?PSwdmqSBUaku@B^`Od)ad1uW+?CEoEsBqD zkIn{@c9lxWPiBfnqi1 *vY!+@+8H}6k=1QRXw(0d4C@)!3S?wW&FWZpyu z5Xot;Z;a1ipOEmy$eWvkVQl}e8z#hDnsB_ NMCpKXNR$l?!WRQ}EoNxFnc?o9(ppkBR9e!~3?G&6#`ENZPtRCGtC%a5N|Gd1 zo|)-^7HPI2P1w>ibEojI7nKaZ`cciI*04aZvtU0noV5#WC2NV^I$Dx=(iON0kE99z z3s%$D=SeGQI40($Ou_9*Sz=AO)BL>Ntpk7@auY|-KybBCTBHIkP?024?^I-x-5AQ< zgw=^pK6S~0tb1!oX;il8J_>2uO4RbO^b2vKPj1Ud>EeOpSUdR^^taynqKI1jRBw1E z%~_%`iXtzi$ee?anzP0J`kufTHS<6-$QlJbvf-KO@i79J#zhH?VcENKa69-PR-Kn0 zUd;<>Sr}a3kXyX%A!|gACUAE%nA yPho4Ado%Gu_|p6Av)^KFZbiGv(Zk%Iw# zyHw@uGYEWuu sbdaalndO-G%; zx8cNLspsn|T`3)f{udMNoIFH7{p85xc5t79*)NIa)#9ql%J}L#K*MjgxR6Z%Xu=#L*rB#@kv)$Kp{yvBzNg!iO)Oci~n3U%AyXcQVLpFl*O3B8z z!5a6FVd~KpwERH`vE7P|re%Q|xBqO 6+~x;__pJnCo467i_8V`YdV3-^=jTiwr&As`w$*p{BXSJw=joX64CI*K8J zKVYXs2OPC`+R+W+OH%P|+Z0c91ve-7WZu@guLWjm9m!X|UWty&(Em6J5Q>o2<##{y zlc>yze{fRT%G(NHUm0*Z{jue z2~6o9A#Y1nJ)OjvH~vqiuO+zrH9a_V2am>rKnhD+I>BXUBqj6ZNY!gVBag1Xd0sy? zTIHy3eC@{L5b>(IsxxA+?P{-M a7QLAbObn8l>TvjEotliD(YIhsjL<7YTATZ;ss zx#p)Lrj+7=%4E=~#tjrtnwGX`u`o`2Moib_{Mu|kM;t{90GSI=?q+{8&m+ubuUz7U z07&x^+xMk^C9V5uzyzB-IdU5K^Zx98Z)0D=H+QCUC(`MkD{*-b2i^(xJ4MM&l_DEB z4m**jZqNVnmXN)l9LDozK%@oZiT(N0Hles9$zb|pZML3=P_j@hDC2~;{LYXB&Ies} ziST?Ak*jr*4)9h%4Zq!TRpvV>UOdWuPaziCtPdyOIV*}D>`+ W2N5=qs2cvth-xJ*zCh(o hP3@mASo3Nq)QgLXJLS7G~6jSQtA@WBd0z;@PW5dSz^xq`mrFF zP#)CF&axlY@OfCX&ZW(!JYu`_|0Tvbe(JF0^6)B!NUNVYeCQRG&aY(5Dcq?4Q08y2 z^aBv7H21+y=V3LnNH2ojJCf L|Ct5`-36+nSlzL4olONJ*Z2Li $-{7qAXw;mn9TW`GgW-NNr z|39s%#(A>Sax=2lL+mC^SI7sOs-@xtt=J8J2g9yt^h!MMeE~m>7_53gj4w|fRLF`5 zv|KkB> PIlC-*4zUS{oCH 6#i)-sR2jlE7! L*BrG#5nRjlh+u#ifWm+#E1 zD`7!B6bf;wq;7MUL&8yVvN}af{F^8xc^$^%gJP^%RSknfPMZwJnV~_|>8QTW;aKCX zz1Ehbys-m#jt73(zxVppRYO|j=MxA{`#YB62K`hFoRnC3svSRq;*S+sV2I`IxH>5` z`w0Kx`Dl#}*v&huIK5wtp~=hev`_h4`7E_uH<^QlQe=FivyyZq$MoUi5-@iGM`zj` zk!shHt 0# PAc;d%iI-g;U~9-&S<|TMiG=^2JpL zxe6wfGhh?XzvCC-k0&3`-_h(|zzNT*_(T^PJ1Elj>T5Js$A>ABmwgdUriN^^N6i)J zPA@?-CT9v# ac?rlWLD)ewxo~g!vVbpQ()&3+@4m7T= mtA5A16j8pQXHdyvjWW2F@)_6-r$Nkqb7Zn^mcA3OjMqzYAgSTxk}Dw|K@ z7T5ImVWIzn^M9?k;H|?IQulERZ1oq?X$@t0O)Sw3&H6n{$eg1KFrM)62Cy*w6-pF& zc3vpFUEP~3Rge s4XzLF6FaxchX1Lg)A Qe^5`jUS-5Mz&9B0ahDpn?U>B<65j7yvN38S@h_ z-ELGsMMe}u-?+9$vMYo}x$tYs_v)oNJijwv+zp#Suxt{*_cv-v2f!WUGYx~#@IQ9E zf9u>#R2ZRu=_hSfxvGLqZH;%kcrQnF!D6>BGk_nGttbYpR~5mYh%}RA4QW}I#TE`` zdIn2ZS5sh$PgYiElMilWD^;zpgw8Mgl t9&OFRh@GSBN*0^$eI_i0Ac5g@}gt6$jPmrL7OLjT0e7BBQSdrDP^O-2_ z>dl>x-Op<;hk5s~0o+!q=X !Yumc zM1Wt^+tyufl`wUF-$3cbmkl2x=eowNOOX;z%Eix%Jy;N|blx)ms+`nXTExWKnOP;r zaZVOGiA1cJY-bhC3B@a3Xi`kHmFBy#3X*S&{s!YEi{2ij^^ZN*WROP@?5=XDnL$@~ z@w@i+pqI~-PcUl(l*Lm)GGqgjzdhH`JXOXst 7tyiKHr}7wKr8vP-y#}Z-oWaysgtjNx{`}REqP8x4tK-flzv8iPrHA zsR`?6%iXtv<#Vj^W%9KNlT%>W@dspog{~i^>w?t)x=m_?-WvXDmMFjpK4#wp3bjLJ zq^GLgc>7HK%{KSXF@1E8DoS)HXix93X*WI0LZq)8T(zGHinA!T7 $GXRB{Gg&-9e6<6M#8H3btCteR{BXNa so9N8hUQ?Sv$&wz&NP!I_R@DeWVBgt>QwQ4P?%2y zLc!xs;@K3s#cnBP&da}&p&R@S!SWGQa&! =9uxj(K-a9_mJxF;oQx= z`ogl%sQa8b2`$9RMGwV=#Ja3~5c~z#(HtEE;iTI<(#9x7>t@{{kR`^+CWVS|?ZNV< zbf;l@Nq_kNjV2RIw01aF`Iqjwh*JZOz=2X>5l-XJ_tj#ZMtQG1-i_5qKD7uQhZb!4 zX>H3Hzao*`tG*`Eeo;)2w&yqZ;0=PL07L=YDIa%wS$}CVysHPmC>V#FD!D6Ch!AqU zaG;iLf{4Cf(KOk;0q#Pq=f*idprVNH? u;ne)|gq z;9s0*gLY;+zsUmjz^PSZyKvBLhYVk1O4~uHLi0-p lV%UV z1+yy!KTds*FBn}-7&q(F@}>V56SrhVDirNR(FDS4(k_!GGCVUaVYa#O0W9|>nZOw} z7gdtXY0Td4VKiASeN7-$2SoMQt=Q%@^z~=q(Euw4n4tR54>d$d>_P+ZAC%dn9h27h z2ZUXEZ^?1RIp6WvW3|TDn36zDX(;rxH$n_`7M;B!J!;WgX;gB=WU#9Kb6NGj;7e2L zI@dD{@aE7l>E(L;$6W?7&plSpY4Jb%o)Y4clek~*S3Zw%m^5seqM+%A5^Z*e8~k-+ zWU!PD$_9|{OLz6Z-~LSjLZVSZ!neur?S8CFW^CS?W!U4dF25B=EAUV)8jrSWdj4dd zAtO7^_X4;O;?BA7_3~6Sb3=n^^hf}zH=!OMNH=y=1;p(!CxRsuLq-$>L3lP*ucOZk z7x|T|@Oju9v$p$oR0)Ee?-eN`iH9!gP@z=7dp7>BD7YD|oo}U;Ocdg0<<`#ODH~3C zF3PpL{1W<^;$>dm_vxP6Ymh$POJXg|AhPN90^Ux&Jgl7hj$s!F;z&6AB64quvp`TI zJ3?rK^w33J1!yGFrd*s-#xa1RiPD6hB_(hHRa+zW*JE%>L{7vf4+p|I =~%L zfqEQls<6(Vx}NcaQ~D}Vp45N%H;;F-bFEI?7O`Dz`a@lB!YI(?SS0BoPq#!egkk#? zZ5=eKa_m01pGzMdY!~~Exn<~lRPhe be{ulAr zIW^Je{V5b!((;yFqTa563iP-W1b!!6q(ghPIixZ2ZV$c#kkpiY_oo0IPl&<@Kc#it zqncLA5|rk8M6s_;FQ6|vrhF@XP{eng7;kcA@N<^We{HP>E!wgz%qjJy_2$o)gs&9k ze}5cP#EgEMeQ;qTKMRh0Lyv`iQ!j0Ts28U(s1R?1kUw6J^lNGGy8CvzpC8qPE~0o= zJj>7E6B06jP1i7M3dI584m6;vYOij7R*Z$mQFrDW+kZs1z7q 1 jO z7wVgt{hHLVw<|KRKDLEu6n=aVv#`J*0rzHkz1bAK9k~rW2sK{mz}6$%%)o&~QmxX* zzd+LhpJ(~uGA|MYq0;3Ih+IjNe3{!C0o3P&+Tl2z)*XZSmVs-rXh<*yg(Fjkxv~(9 zW3p+NVFeT|^xSzV48!T%ui=HF4MN*&%`>MDb9BzA-Bo(K_uA&e!{X2s$N> v|6ArHkd=xmhJR79x!P5 Fh-HnQhhoCiLv z%Yg@~xjwO4BjPS>xL@;7#1&-=4MJoj% PXnIEK6+JoS~rai1>7;fDO %}6kb_-iw38 =`T3^DNNV!S9Rg0>EWyL$t6C&CGN=nYQ1+?|4 zs{;mEbXFhu*9;7=xv7^mrqxGt##ljX+Z1EoHrAa_{%@hrPR76BqGVALi_>=ZS9$S= z5z;r1HQ%uRrrNMx7QSoez}Kyw$>roZR)xK@jKV* kk2OPAUt*z`+}dWpN`2))%|LlmklKp<11*J8%lHR zCB~Sd8U=YV9Qg(N94FV7$qa0{OPCa^gD02-`YPpXg{wx#4_ZH;+>E+p{hIr+x&(Yy z7}B>nnh1QoH{-}V0gI^|8^E lZCw^=?|X`xrPo`-!{Kg+ir z-(<+naft1o$+0bpu*(-UTT{XpKYE}l=UV$}3f^?1!uurzB08#DTBV}%pIUm@Mj-Yj zJ}e1LX)5AGGK< )B33OgIzzS--9&I4PS?}^Giu)BteVl` z Z&T1b`C6GX&Au7+zI z%sQ=H;uq3yI$9#5K@yJMWyp^U`{S*&86$T&qzH?~pwQXn 5r z?dML70vZ?+Z5M_H+|{nb#ft;iG{ zoIdU_w2RSUN|BSmkp@*lZF(N*SNEH)4a=|ic}la)Cq{~}pNobGqxs?}SM}ZIoLxlp zF_Jx`a{WKZ&aA+w_YK%?S!pLapY+Y8s}xH`A|~&ye(@p-pvLiXOnL51K4(Fr+Mh^u zD-8argg%*pv-XA^30%$12zEESbMIdstHodQs$bwj!%u~4ApidkzJDDy>yo(NeQN!U zK~+U_4W|rVA{g^ycv |}{q z(WJwqCAoBAMAY{OjZ|t^oX!c$*nyor*W2to3dN)ILS ^zW&>GJND@HGLh$3Jdo2!*)!m2 z4F}|D938w#C2(b>Rq-L*bxN6KF2V}$N5ChdZJ5k=1QPPj&N?b8m1(*g%INc *K3OB#iJ$jobFb106Om{^69K&wYOf2d{;)wtR_A=fp+)>o;YhEEJDc%FhNag`O03 z;I0Tj)*YI{`mf;1uPj$ )2$PQc)DO9(%lEAImpp1^qVkb~C}pylw~kZv zm&7lrhyO&|#cIUwa^|W#E`9_(4WpA4wSUJzwj=GtKSN_QeLYhCQa|f2L2 zN`Q*(tXw;2=0I`<>oq<#- 0CnKAvl+wIlI;+ z_Wmy|WcYXDx6F$6#BcJ&A#^f~i_rRL(}U7fbz4&Ca62#ZP)7qW%cLvYuDuSVyiNx+ z39+*UR31EjD>mcP%Fa$(qu@y=062Xx+M(x{0MNCoiIve6#-DHG);K-xmYuh ;J5hM9gqm4)dzV?LU5rE}kf2(5;S<&v8yeQvl!GfA(_p#?e2 z$E9xFGHDr$K$=u8n9%4kkH7ZAWE*Ue>wt_jG{G%Mj!C%Qzd(KX5PSAp1PJJ7da20_ z@mg3dDc3vNe}CwMf6}=-c{SsK#@%Sw?a@C6JN>ER?V5I;&JJV7AF1nzMpo>E{S!xB zufJqR-A?>%Dm2DPDp+O^Q>G`Dvh*w18xu4mh1e1~K{|_c?>6DNA4D;VF)U768Y-4~ z+jic6?QGN@*y^$I5HO$?yci+&0)Ml8i8?Ndx}J+|)w!ZA=|5f&0b4{?pVnvzhh6x7 zc+;c8T!o=+(&psrC?e_9&_i>M ##QJ_SM`TM`?MC;F; z$P#m^uGn}&7c7g0#=sV}?9f#=9-2>uJv-WSu^V>5)Wq}0Tuh^hN#8)u2WE6bvqro1 z9dwAAh+Ue7B&F}w!bY?Ns%WLPTh)SJ;cKGB{d9|7y9wCgH }k$TRStAd;ro^#z2`+_ zS0ec%Uagvzu@zQ`V|uDwfagB%8a~q_AWfp!_oh+J0f 9IFJI`F<{HzAi8T!MLo9sfmH@LrH6 z-@w}uH1`Ne*lI^Wsb$v!+F0w1)7kpt@M!t&MrtEIFMEu&P4{<+PF(k4jWxt*eB9C@ z#Vqtrb{2@W4`U>??#Az99YcFz_Ox8RU+?}Hbc-wIc8wG_zS ax)2|ml)wTCLoE4Q+fN&tuV~Dk7>6`gl8C;g{BT}~M1`UUpM#i@^&WTP zxSN@Ev`jTu5Apa_|NE5-Raaos*LgCa5H2Ha`M>c%B-nny2HJ$M@$YY9jCv`@Vo5Gm zswBUFU-#?(H7^s>f&z5F8rBd@V<({olBQkl<>d^7zTRk+aTN~4zFsc6VkvGsLG?BF zaTMbfz$|<&1b%M@g&H;$vH$%;fpg;jdfVakoYj6e%%|>hGyx|vdg6)0|M%20Jy|mD z+4pFDsDOpS`Y@b o%lm1# YEmQjhC zH>Ey!V*qYdqCAW-Y