From 23c0e825278d0b97cd1096e6e024e15c0ff840ff Mon Sep 17 00:00:00 2001 From: sergio Date: Tue, 4 Aug 2026 13:28:42 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=81=20cosmic:=20cosmic-files=20?= =?UTF-8?q?=E2=80=94=20la=202=C2=AA=20aplicaci=C3=B3n,=20y=20=C2=ABya=20es?= =?UTF-8?q?t=C3=A1=20compilado=C2=BB=20era=20falso=20por=20una=20l=C3=ADne?= =?UTF-8?q?a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sellada b3:48d2b072. Cola 32/32, escritorio-cosmic 70/70. Abre desde la biblioteca y lista el sistema de ficheros real de hammer (bin 72 ítems, dev, ente, etc, lib, lost+found). Entró creyendo que era casi gratis porque cosmic-term ya la compila como crate. No lo era: cosmic-term la declara con default-features = false. Lo que un paquete cuesta depende de con qué features lo pide quien lo usa, así que «ya se compiló» puede ser falso. Dos features apagadas, las dos por medición: · gvfs trae gio/glib y el enlace final pide las glib COMPARTIDAS; el corpus sólo las tiene estáticas. Se pierden montajes remotos, no la navegación local. Por eso tampoco se construye cosmic-files-applet: su Cargo.toml fija gvfs a mano. · wgpu desbordó el filesystem dos veces (No space left on device en /src/target) con wgpu+naga+ash+glow+spirv a codegen-units=1. Sin él el árbol queda en ~2 GB, y no se pierde nada: el resto de la suite pinta con tiny-skia y la imagen no tiene GPU. Y la regla que dejó el intento con glib declarado: el error fue «Package libpcre2-8, required by glib-2.0, not found» — el que falla no es la dep sino lo que su .pc declara en Requires. Declarar una dep trae su artefacto, no su clausura de pkg-config; se lee con grep ^Requires sobre los .pc ANTES de gastar el build. Co-Authored-By: Claude Opus 5 (1M context) --- ...ic-biblioteca-dos-apps-qemu-2026-08-04.png | Bin 0 -> 24956 bytes .../cosmic-files-qemu-2026-08-04.png | Bin 0 -> 45319 bytes docs/runbooks/cosmic-desktop.md | 40 +++++++- docs/state/build-state-cosmic.json | 32 +++--- docs/state/targets.toml | 3 + recipes/incoming-cosmic/cosmic-files.toml | 94 ++++++++++++++++++ scripts/cosmic/hydrate-cosmic.sh | 2 + 7 files changed, 151 insertions(+), 20 deletions(-) create mode 100644 docs/evidencia/cosmic-biblioteca-dos-apps-qemu-2026-08-04.png create mode 100644 docs/evidencia/cosmic-files-qemu-2026-08-04.png create mode 100644 recipes/incoming-cosmic/cosmic-files.toml diff --git a/docs/evidencia/cosmic-biblioteca-dos-apps-qemu-2026-08-04.png b/docs/evidencia/cosmic-biblioteca-dos-apps-qemu-2026-08-04.png new file mode 100644 index 0000000000000000000000000000000000000000..28c3c0c5f88fbe5bef3b9ac8222333033a023fe5 GIT binary patch literal 24956 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 literal 0 HcmV?d00001 diff --git a/docs/evidencia/cosmic-files-qemu-2026-08-04.png b/docs/evidencia/cosmic-files-qemu-2026-08-04.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6fb48814d1a44d0f90b32f17f9bd1ff7841e98 GIT binary patch literal 45319 zcmeFZXH=7Gw>BC@u~8N(h)7wYh=6pEBEC&YWKv_x?QE5t-4xvh~L6Is* z4OIxe7lF_MNxm81Z|`sKbM_u*?DOaRIjk`jG2G8xXSwDz=lz7JtKO$R&2$=pKu|w? zAg6&q9EXn-f1f-GzqatYdGPCR^9LF#2!!`F1R~%c1Og9V1uP&CZUP9zk|_cq`4NG* z;FM7PNDBTyX{K~v4nZRSmr|D%3Eyx$m)Cv%^vQDzNplwq_=OM>5W2}LAkHfwqA4gQ zDI_K-D8eHkASod5wV%rFKRsaY_|(SI>%V`XD5P`{9=QJRBRsdUw{U&_#NO$@e`Y=* z`XtOB@lfuLrsv4Yn1|_k3u4R0dP)4x*P4naj~u;vgzmijd+t!`SIHjUtn676UIEP3 z*H62!Cutlzlal0O)~WaVSxVHsBa6}+$No8X^6b&C?~X;@IK@@7bzpuoUggW8#S0`F z$0yvi)v;1SaqXaOt3#MuO3Dysia=EMUNjs#^5-KH#SupGhY5z04S&9fbLHqWv0QQ(wCItdfXdw)3F;SMR~W%1KiDHS6{8hmXV0SOrWQ z0*+9eJ$EjM`ch`gM0GML#=zmCv^Q?5DU5%YY9&`}bHuLjlk&C5HXMAwtWm+DY6X4% z%q%uV#{}sH9pHDMlMc(0;E&3gFyz9kkdP2sX`H%|@wcZ!yvDWSl9G~wg3h>w9=y^* zYFZj;zso=L0gFkhGdxgPSy^sBy5u;Mla<6Ip9t$2NkJ~V&k|Z^pn<(#Wi| z^4LDvpXk-H`K0kRMzBYsvq3^aqM)8q)Kciv-Me>J{`7*Je04!C{eA?iH^qTMU9C26 zZUQ@k0w(BWXVF`zSv}PI?()5*Jr~Oo2{ADpIas$W0rxnvt@LTzS!rowV_Zhj%5=l> zU?CcZeHDbd1y3Rn1?SJ5yTTrJf#0~+)0v}FA%YbSVA5!# z)0+sS2?D!?v4#M9+AHEKw5!1vP8cOJWX~TrEPq_m3D}G!btH z=h&wvYlJ`YrS=E~J@#Ft) z#Bud%6o3Ev9}hGrB)QUs=YX6r+jW*qr^b zObi7Pdgqt6a*tMehVgY>T^;}IWZx#PZE`0_e(~bo-o|w7N_F?Yl*3^awgJ=8pcHc> z2Rr)w+_`gbE~|S>v3uvuT9QU9f~YQ@HF*XK!K+{DxP;<63+r}9J_?#^JboO(ChL%VcV$UQ(QQ1!y;CzaG4d8>}+jjrZD`%&B?;@HxUUr`WYdGtC_~t(2>t(utN&OjPcuMRE zY2yCb*FXLWm^|y&S|?{oR-XIz-)=l)|K$v>lka%6KlfuT=1211I4IM; z!jmbvrwjCXX|MhTdRnQi^<+>l(w4(8oa)VM7>=UH)>tpHSHJc;^lRJpkUhV-6HQM= z)JD$p-}`EP9Xdaje@#?>o2J0NlH)vdp_#nZua~H%smOil=m7T()D6nW7mvD5He{QW zMbzuNscQWYQ921GIGaW*zDuP%YU%2sHqW*;L*T{J3er~)X{=hZ1Y7!k>u6REIXzhW zYfV&_zJ67JzPo^Kw9>bqW&$v-=P}d%Slge51>AUT8Sa%sjt5QTb>EesPMx*dln~)L z)tFI{9$M$Ze}_^*`fo&m&}f!iVsqT364LgDRdZpd6-XMqev@& zg{5)#IqnA-%-PLWRlM}=2mqvV`-;ov@DB!OQLcE!=-|dI(I89qCW>zv=1wZFU$!-5 zpF1kBlv=%5vC>c&X~tQlgDNVY(kb*h2SY_^QQzI zyr^SG7|R~BEmmBelI*Ngr6`Gv4`w;tS_jWs-U+v$dQx0|a~Qwz&icWpB~whPM=&lstl06{XmY#>%zpc{YadT?BXuFYON?z-u z9}$mc8LYMOCvI94mSVW_pP$uEwV@HL^wcOtUax#A`P}(DLk>5^xv)p(aO6?i7WSf< z(mLmnt2q_QT8o4E&rexjy9-j+e_>YYiDaIg*5;$m@`C8P+Yxm%liJK?MRjG`4wBD5 z8NB3Ct9okMPd?ze!#nb`y@gvZOoGVEieVGsi*@v3JqyPc=qyy4!hAF<+R6R<7kYQVkSNa>u{c-z}!YCglh`z>!I=*SUr^1_S~4@SPCs= z#~)G^cp6#H%aczgdNZV?pU_YqVcUK)LocM!$zk!T;Y~`r)aWXn%4d}BH;=@HbZ1{W zDv+y&a(^)=LXc$H!-&lH=P|UShL%RwK{W4PJTid23hS*PYV#2E!%p}q$zyw~D$;Z3rW>?0 zVNxkaXTPOqM)UE>?ks-{+MdYm3Lc0uo)+)s@vi&I;P?X$Pk!HYbJELpNAT5nMn~dMHamH!Xl2gqPUIs^g^zWiY$JxH;7&(PJFmH*mSDu>R1e6 zDFE>%moDHDi>M-cO8gKt+~Ude0KM}9%P_`XBja+b=K?@JMVKP(p;f1&Y;w^nW1p#f z0g6%AFGFnka+C_lC#OZ0z74NdS~yPeCi{im57~xUv5#OH9c-DVl{ zm8j%E=PpTCy(j;1_05R+F-EQ2{h9eMa6(c$FDR|e$PTdj9OG_L5P%c>;(LMibq)_W)@ZKxRJ<5YD7V*ndj5c9e(mXynB_ZAA zn#+6QnIAqHG96)zzKlqFU3z+_otnhJzkY+mP9|0f&07%ihRHY5?_~)}CqCBC^KftD z%muzmyb9Rgl!DF8O+OOB109vN-#*%3oEE$n6cqPZm@h$^U*j4@*geXDmVYwJ0~?N+ zYQ8=mq+Ye8EX#*g;Q4fc7k{_AoVo?aqqvN3W$~`Tjrq8sNmC0wX>agk$0!&Y8v2%1 zI<5vE27khRD2VuVxqZi`=xMh-t6*f{eHGu=7BYa3>ryGBN~r$o^iQo10rvN$D2h zs{!7j#-L{Op5w!`547QKY{w|M%r)`gE~$I(>BiZw5-Pd#++muQcU3Z7vin`tBQ1Ix!>e>=8aj=Pq6T)tvp z_sovHv_G*Hg#~f|!8EYHH4oolDgsjt!lIIn8}0w?#5H5o&k6?hu{Y7R?6tqVTwiVc z&7OFMM5WHIE|2X|cKkpfGZ6^Ff-(BWSm zYsV4z&G$Z>xsz)g!QW#2BdYm^b(R%HE-WZtg3q8Zn$P1SX+>alc=CF^Je*>sM9aY} zbJo4lurftir=w+e5DF|&N!0mT-FLCqtG?dr%RPuEb2f%KD{N=VdWBE?KxX&1uWZ~o z>qfTrTFw+jefwQ;=9lViptswKv`3X*m82-?OG+?i(;XE^$i=uEjnl5T&%yTCWDLFr zm=kdDMa{?khRe`7)pSVe%+px zU>&D9PiY$TjZ(3p4trQ+bCAs)Z^6kjw(~uW+M|qnu+;ob&yRycep#PA{P+$gj*YbG ze|%op2=hr1=R3O^wXTz3T+@E*x_ITNTh67y>T+-nb4zC^5KhIvN7vS*@DC%dT|*95 z$m@EB6*1J|*S+ULR?^c7)>v$BpHm6>VqrS!;7rLkTqHJdiQdZG%D(*qViruYL9`UD zZu-=vfQ*%we%o1+ixv3JrGn*jtHu*FU)J^c=JKmZJ9E+po_qKzf!0@8caOmklGBZ0 zh6CN5;(tO%;z!CIcY{8ABWT#fTN}I9XEqBjWji9V_^!5SY=VAShw&6k@3V&cCXTFI z?|u})!Zk{7N?*J>zvo(FR>CH_Z%-l9Rx4+r7KTiWR1D!FIM)y@OG!P zeT#VGt@Y(-OeFWbm|K4ZW*0~QzDC=j*m2p{;GbDSOm3`L+&L3|34B{klg{mP@6D6_ zx<9fwar12a{+TnqQZw-Fn&+`VB!=)UZXhkW`NexW!E2ggR1T z!KTzI9qGblSg|Q7EAy2zeR$1Z`FgA5`Xz?73j@`eR@OaM0aNp02u*{mDO`=moJif( zt%mW$$1S@FyM?ffa3Ptw`b9U^ad&y=;yNyD|Px z?;kX+5LZ?#rM<@vi5Dt-t82Ge0&h`Wx;QeO883Ud^jboP$axcyUGuJBOn#`<~>GYnlFpeP#L{HCcdizIwMWEY0s9iwCqt~A;Vy+pW`#D zyM2*5kj}JUnYw->N~KDFQS+DQH^-Wq)jHY)<6X3pyVslUWrt@z>&equY8@)leRD~& zhNP}oFZqIelN=yD7aBz#)sCzUNQ9;?lY3hGMzI>}#H+R>CmvZf{@7 z)qSBWgFyW8qUcBkCvu}W_#^wsr;&1!{Z@oUoIGLHas2D$OKg{N^=|0MO3W^CX0G_} zAE(=J#0nnhzVvt?T$uU7kGC;=Tqfo)?2e9!>m)7*)amtt)6Wp|$qH)4(J~MM_1vI{ zHx5i=UM=Z8$I;1-$QEg7OWq+VTkA&-1;Kk25ut~D_hjn?w#}NWQqNcx1~dd@tNP3f z9A^UXgx;<=q{Y>imh=XDNK|R>*?R=hGCzkcWL__|{Tshfo%BLJ9V}VGxfXX-788^C z3KffTUiaB|D5bGwgZ+z)tO}h1N8fmBY>w7!(p#|Fjb|UxO}<9%fuax1ce%5!p?31imf9Y!Ddi~;)P4s>se;O<6EK6_4 zz&+ZC@_WSRd)PBueoAFCCQ?<0%fF%`Co9JC2k~VmZ&m*0aNRt$ra=*)f4#l#Z}!=& z=ZhslE~?C~ZYM6?n-?rT!O$Tg;J@?YxGNLBER^q~hbl|5>y&Qa&Z8ZiL80t7MWlFt zd*S)%nPK+ZiLhNusLg}7*DOjL9iMz1s}6fG*X46*m7YbOXyZAP{Cas5Z9k^o zb2~XlrG{_%n#s0jUfp+|zl$clwU$^-RnF0&8F-_=zB4+k`l_${ad%WN*08w5;HIId z`xpPGEpS@j9O?-}E$cBh6Qk@M3#)y*`4KA|F@_}`rs{J<>90lw68o#MosKJs)i#MH zww@)db-nHm)YW)>q*T@A8LNcR{r;heg0U-hjz|!mRmF=ROMO=^2&nb1{-Wr zk4}T}K|`YVyL zRydG&GGBQz#~>nBRev`2C`W$;<4wNfpcZ<2RQYe<*VD%83$WBz{j+_{FwM$WMRoJjku}nG`J>Tb>Xcaz8;K`IvA8uaMti;xWLkKs~@&drn;c(Re52E z7WQPZHPtcGD4ocnrNav^W|LpcDDF`G>b}!D997N=?`zHQg7Wps%j5gQrnK44pR zGsN1CDEbgw)xvbq+33caV$H4B3Dx3+>D?aMh%XHE8TO;PGJM7lr0sccP_6tDMRxJE zY$l|qQPM^Xcu==Jl+^zi8Ex_Nrl(g$y*b%{ypk9WccK=iUBQH&uA>NaRZS{7KO+{t z^3e?!Y&?sV;kFOjnr#t9XC%41{tga>-L*rrRgP=F;45tBysUMwGjX~LvDQNR95ya?skT;%5MN%IlPtt^>Gw7jC9R3c z0lM9^2voGj**@z&X>AePKQTKt`T4#yAudXmPi$NHLB(>^S5p(ms>=zZb)C1aiug{X z2rr}gO;GgoiHAF3Kh3WllXDYd443)bdAD$#i#-k#2WLKd*YAemu~;w-ljPn0*;Zm-;rPvVQ^+sEnk1Y1{W#Q8Fxua8Wd$2TYzkj zi&jL!VqRt&NuyIAL@F3Yw*2#EexNn(Q;dac7-HYg#<02j(n9zVE8`pOqRFILQ~kr8*FIHXowPiR>i@F zyN6QXiH@VKGV_e0iG8YcZ9}BTpaXsG!<4;Ut0N3DPU;GQ`2ig4oeq^bjrStF_r-WS zezuDjdF+;)!vz^}_*G_4|8DW-_v~7jk44@PBv!T2Q{PV*Ev~Y_8c_P;+}4JLsrN>o zBPzel5MsPR8Ynbuy?&UW390hyL~5z~6@m)h{5gYTl78va4n4Nw-Jiu^d?1L`0^DO~%`i)&K?Z|r0;xhH@XYu8kHfHoFEs}qah)PLt zCbhnZyzF9ImI8~6Z>2GQY~F-zn5|Mj1T5#$zK~(s?S`5>)8}nc8 z&lW_!OY+VonP|R3ywUID=I?I*wf;kz2}1T47!tFQ$lDJSxeq^S-cU8?eR!elJG(B# zF9^hc%+xXkXy>!TcPSsWEsm&r02#%CO@M!QpWGV?ss2|U?LVYePBvISRW^ipDu9KJ zrYHOVF!~CO-R&fy2$OaATSLyK((SDtI_j7IIq^$QkEA`Z>F|YE>-P3BsNFyw zUh=cwO<7r49dt?in~TD8V;)%h(Q*K=5Jx9mfxOq!r{rX;EO8?OGSA!qToV*?;1hA0 zja2zm_%|f~@Vo2l^YdazJg(ZxG}*G#k?>3&!is(m$NiZa2!jO6!k=%~979ZOk~44p zoIZFJRn;VEA9rM;`_9U6TU%SK3#E+jUJ>E6a)Nj<{=~R|&!iDg#Sp2^bzgz*5k&nz zMkf|At?Q{4XoFi3pSoN5Pa|%pZ8*7|2vFGmd22n2>!Psb8`Q1ih7#@R*k8YX;U!%i z9M)EbOOla0deRhKpMi_eFkGOKO!(z6_R^o81eY zQE;$j6lZBavwL$l_=9P$h2B|s2!O#vXDqp&Ku&#E- z^~->?r`m9)qWt)->Gv^z+$ow)!m9G-rsD@4UV4=+d%6Ly=g$B=Qt}tp_6uhbcUPO< zxQ=CYadoueH$Id4@)#@xsP^^@)*DjxE=KaFUyZf#^(O2N%50fM4%o}h0GyS3x|;03 z-~PjHAWf&g(Oz%F#PxY;0>#Vf=jYxxeB>K{ac6&CSZJp?*74czP414ivvf+trbw)x z*XAfc@2gjt?yH49eg!6|0nS)|x5@st@?9AxOl6jmx6mH(=I){3vhK@GobB*#j9-|n z-NwF4zi&H;r zyqfR>AvV+Jb$apeR<0&f#2|fc&pvCKQE@ATDJ6{u^Y%1E7qaWmCSl}m$?=; z5mb}S^f?nGgZtL1d{q^=RtKN_gCL&3jRk*(WJ6+^5TgTe0#y|6cx$g&s!sc2ID}ub zho6(piTGUzhrXOY|BOX8^}1Na;J4kQsgk0rej|P6;a33eg?t@3pCwjEM z=~~c=rlK1~k_fxzEpHQrEZPSlK_4W0_}Qu}iF#}wHbum4po3$OI-3spb-uK;RKYVJ zNZtj0%?On8pyoc#przPktL@yygDK&iCM!0zy!1~&g@tM*bL_pls}bw^RT-q3o4}R|F zI|WALSCwxh^ww_r+pb5W5OX7DE69)G{h2JakO#mYrT#LcYm;_Wl#_}RamFOmAQ1FV zjxlB*QR&Omwlg*!2YIe=#QJSxbk=`WJ(fF4K@mjD#(M6Y>*Tjro$+FY#&sjMWuXr= zHTwy>ST;Jk_wn&H-rGxV%L5?~NJPR3YNnaxWuK+~94O65kZ@IyOG54p)AMNKmIu{j z+p3{mo?ajPDmHJybe|208+Ali;d2q}?BVVn z4ix!9Mpw3z{4#z?H_!{>_m(c9YYA~>+3MJGhV#L#IT-AxNdHv<-1}};F*o0ZLgOQM z$PM-f)AQ2q!-v$aTMLC#_4W05b&Qsdk*L!|!>cnFl5Tkvz*EyL5hO61dg|(bvqMpd56BMI?_d>t zh-#e3;!v?Ur)q+3t>?x$H7P+5AHpl*P6awq+Gl6A0(+B@ibe8yYiq01wguuDlhv!- z=BmC*7wY$ZD1OrJ);>CUmxijHz$+^47i7FJInT+i;F!FHK4c~xKIT0b^IjF^e{Jj- zpXy?{N+RzBiwin9f#_Ujyii(Pmi?d*khgZ2yj%xoq%xg7@2lfn*uo;THc%C;P-0WL z0!jBwC`Ez_89R@>*jSzCknR%uRb<`6PPf?oIS`E|En!gdGl%TUFMNkzEa2TV%bP5=zoa~U_8d`;aHIZ|ML-X{?)v) zzp;&7h4VaNA}XW1y|{BG{sXBxq@7*a{&ctammO4(a05&q3Lw zH~1geyEWJpDJlNUMCtvpSiY)F$Q+*m-d?=kMZf&Pu8(o`d{T{0f$r?mT7QX6UnVuP zxKr!9%TOr?daGAz-BXV|$n{zQA&BKOVq#`K?D8i*M*q-}i_+lY;(|6@*zxh^pVlJv zB;vsd8s_WR%A%s8cAA7+9&1e(Ojdd`ei(U-xgD%lpm#>>K7IOBP@j66%Rj%J4($dBzIKK@6dK6 zbQZg)6mR%sAm3m&!vD}5Y!OTbqlR{eUnuQ-@4d;OaD}ws1Zkg}H*Vw|ZawJh?PX_Y zZ$F1Z z9-uj}i<--ggJ3{WI)%5^DyRKP2UyS`@Uzk`Gp${+B&l1sYP`1Q#>dCOqzu)1ZH4jI z4?*K(KYUwD3)ytx7W=UNBm#g|Kd6}m@B-wF+se=e=;cmRY5R|k4&25D9CT;S&_DDnOQ2$;fh6HC?n7s%)|`sHXai=((XqTRL9*gUox5U4!kN z50606C8*6mL_}EXw{JTtQerm}oqrHY4sfeAZp+#_yQmn*b^0QaS6~CN?@@g%Hg+Ph zLuSP{^u9d(Rq4F3u`&NM(Ey~2f>uhvyqPMk=i{eO`+&<6#hs@>!5qm(7V`E!iLY6XI^@Ja(!}narK||M0@1=L^{nz zF?l;iDkbA}*11G8&SWOHz2B3Yi2|RLx3~Q$0XaTxea9WoYf|qEi@=DpISmWMce=@* zf>M+W*ZH6JCP*Euv8a2J2IZgVHY4f|vxhwWIyYV5b&m1_+o++n!bhoc-~CEdh6^>m z%KT#9MWo$@-5G^q(w%iIc0lbW^1%1elds8ZXe=f%Hym8?4U_uX4@bs3I+S~%rU2p8 zWPVzNduDQS12$!QvCj$&7F3ZAeR-yUmHi233^R=VSzT=>T5i^KS{fT;Qfk@pQ4rEx z@N7UcWC34^sGNHb5a*ZMpb<*PADh;)Z4e_p=+nBz+xV@o_h(hLN15C&a?SWJhQ}$7 z%HF(rb0=_Zq#o&0S@Fzd7(D?=x<(nV!e^}li zIefCuAr~GYDwY2Vcx1#7HcKL|lWsbWpIy5$8bj){ZCm%=#{BO-G%p-s6n*#UlUEB% zMWI1OK{Sjbvpk=?Yve!X_HS*@KpWSMsU}!8a&@FE-}mW(2kBRx-6hx05P>2Lq2xMS zP^E7T4FjP`G93o)B*$`$Mt7D6zm5mF7#@)ei?@GjWrc->^JwQ;uW{Yd`8oc@>#^zW z00_m%O`<0y8nWvy-+O(-sCtFgzf#N((_z5+kvHyII|g~Q8?mNe)r2vERSki8tFAtC zn_Qb^Nv`Gu{cbcX1_I0mM6MD}G)~m!%LdA-1}nIl%V$Kx_Rz_V?MT0{433;0hB|Sr z$BJHFUbFM_VCM)2)6>%|cA_eIasPO>u4(a)d3K3BQqb9jvJVJqVGP>{8T^8|KQd1Z zE5oj#sfla75^+e5?VJaT^L-+YQ&RF|$bDa!>?v2NF>qYln$Bb?SR;!ILL73$uW(Oq zd2P->LARD%^IMi0G9K8Ui+4=&-E8w4G$H-|eq4b+@;af}MCE%574S06fql1qip#p1A zmVlVhxDU(xnbgI$(U0Z}ZEF;3m{{E1Jh9yP?HjBAp)=hh#e8tuv+dE7*Qz|adEDi0j3AXbXC#I+b=)9Bz|{TVB6UTQ|!_+G|Ob57W@lkb4T6 z^zh-sb8L$jcd@gb@f8o0lw93fK>oV3tKCsm zV~nbYMW}^lAI{`1Va7V;cGL5ZW8gg70Wt1XH ztYba4<6HsMt&i8$K%q3d%i;5Z*L&&v>ky=yUnEyyc)0$a_&PB$A@qvu!q+ZLFdt!5 zy&ibyySn=ms|+gEaSx(JGtq({O3tsW`i{G9#rmQJ$5VZ&jQtchJiyvDtUk3M|3q{3 zi)cS+;t1_Nnw3B^$L+|5&HI(G+OjF!tI?wD*S284iKC_$4Aw{u`JD*C3xa*;VoyWH zYs4F->(_5=3X3A0R+NkNrBphjf?}^J4zs?L!~c<Q%v-C*gIfA%7JsEl8ml8x+3U8Tn91r&Q!&z?a zq(#V(Ev4IA773T9+S&uX8A_`hKu?h)PXLdGgmOeI_)9Ks?%c8B&!0a-kZxmRQzjD_ z{M6Diu5*q%o=kFqn9h>SX-}T4T*^h|?!!$TgyGuB2B#}m?!R5Zpmg@Xef;MMlBY)Kgt` z-rJko+u>nhKRP?}f1n`PTL)^0>hx(vH8t>UUcSDy!Ja-oX#5fi_^4rUPH{KwzyiOZ#UK~za1rBu1#a#&YZ#ArMr_|k`-Cv*9D1; zd?Cb%6DMSMf4RPY{~neEmoE&^es#gm*T<0n7u2M;qk=o&6c>9lD#pF-02}ceRu)0j z9nGUtjXz3(2*ArBnxpx}#5_Q@)@!#^XFGx0)SAut6QZnD|0w=0v*QMFm@kB$fQl}> zhjTyNn~s2Zb{>qMW1Ty|4=9FW{{o_gDyX&{{$g?b`0@SyeE`CCeVO6G0It4bvHsgj z7kGqw9cccq}&VnTFi`Rpp9T00nS&cfWJz zMZFI=cW4~?0Ps5~_Iy{eqwLiyR~j*n7qay|mxH^z=h#zi;xyRfdZRKqbyP$$xE^^& zpUtn-u!#${zjrPJ$DpCXp_p7`Sgy#=C6m00x<PC+#VbN`jDLLh%KAfr4wWdk7iz|RD9QD#)ZAj75(9ZkkwCS9h1u`mM>qv6zz$+ma3UU zl@}{ssFB+8=JlH)>bwrE7TBmjE4GVr5+Cl;NUId&NT)l`=<@ zTF)N9|CkGKo2;J`CZc0zW+t7q3ef-^9UU+{10JKLHm<-$FR}T-|BH$QWM$EkeBX~( z{&Ou=B>x-L4fd%#MSeP~jiH;Z1__ZrtW4|Vo;|6&iF9{Qn071!OB&rWu|$IiUrO{C z&)Kw`7||=S>;wX19M&KB^)D6{xO-c92xeoP|PI2c~D)Ja`lyh?xobCMlooI{CY(&wEWlJ8fcsATyKbEO- zspZHMu(;RY2Fg+kgg}RIV+*VjySVrs$P!$9+J^`U1Hzd27`jYLnGTxSr4WdFaqx?oR zIHpP!wX(86K0_iRWc?03K^uLxmqcN^bxhz=R`<}!hTCpPT+e+AMb#uJ35Q?e2Wvoq zd#wG^%T)36tM{8OUISwV-n?SHK)3i?ePVR<_PEb_72fEms7`{pUFEyzIz_I0Pu5ay z2_uV(x^l^mtGZelYLWlnh?h~3?_vE`v=2LN3K^##yHk~6IU zB84wu9LqCR)ULTv-xi=t#@LW73G#@CmVKh+gWMg zLZ3Q4Xj95t?jH?JPs(uW`P#M#y0Q=3ymjf>mJeS&Xn?hNlV@1%{J~u5rGpB?7nky% zC4@}V(Y7}7A9wyt-^tIv(D-rKtGv?9-Q5_)rY3$pZq}013{arXN(;AE5KdlwA}U;T zDmIFbh2!=&0saqLW;a-1RAcL*7o`E;e;$4|;DPm;Poy|OGh|0`^yq6E zmXTuf`x%;d?|y>^t&4R*K{HhoJ%7~<7euNLNm>m97UMI z!Qrjf?HVg6D11u$5E;3=T}TTVo>1`Z*{F7*B5TD2t>Kr2C7vrELwULyyj2Tq4?Xa> zMfP4`EnC?9eMd@d!d+G3L~K69#LO`Yu^c~kYz4#$OfF^M<(oHm1`HgHN-R|%2O{S1 zi}AvRdEC2L6F&*47`}S-DLf26K07OP?`LLaz~O>rH+1Z)^>S5H>sorwFCpOtrO`WM zU_w^MY6koIgm2wC0LQ_@&CMiY-TiyA5$ick?Qb zLMcl%5jSR3GnnU2Ec>XA3qE#91@cp{r6`t)akg#WvYA> zxKo%Y@Z=>LjYbs;A`qg@C&_ArE7nsH;bN_$SK-Qt9m#z*UBj+;j;nxM%sMZEJ}h@E zVJU72&`!#oK;V~$pAo?ot0jnEW*@6|BVV;`GHYvXEuzhcQ_ggrZif4`085YuJG^>d zW?o$|-kS>Jr(u!2$_{8DLYBA({_jTu)>`CsP*7K#C=*Wiil7%HcqNfjERX!PG-A!F=rPI35_!h zHyA~%)x-IkfTi08+B%l&O-RT?MMdt%aHe8r--96&X6)K28hK5ny|WWJ8?AHn=uuWM zfA8M?MN1n&mU@E7U=4*dXSfLre0jW>BM|3>@-xJPbu_@0 zKYY6vxJPCyX9`5O(;sau3jdy~aZxv2oT!+?T_+dCOLeQ+yhYQ{i;_<)OW(GhQXBFS zz+jp9ZpfDm|N49{2oQpDq9n#t;0?@1>V}L{aLi_vI>0R8BXofj{52kAjqV)$&dCM&EAueudC=Vn6U^Ym{h4Bb+qayj`u7@Y^k$%E96Fqdo8j*lVxQ&Iq%CUgfo=^bpwP+4dCumL6&bU$$3YFXbW83BXS30qvZ?K&XVjsz&f?lAuRkdHEz2$3FE`LcpyQ#> zi{Z_%f9dJz!4LHHN5HFYHv_$WFNkJ)XQy2E1|aflkv8BC!Aqr}(f&YKLaIQ0AKAnZ zW&s`^|5q^~p?YU^RCcrV3UFIxx;Ng=T9)jCH31qp%p8#fAq^x=RFh@uOurs&IbR1@ z6i&wvf&|#WQLqmCG;;FtP0h`rtuQs2{h3IiGBSe2Z!fdl0<)V0P06$d;6N?ohiN@S zAbwzykrgQ^e~XLjqF>)~U-|2OUS3{80yEOg9kN}}J;*EAKcGv(CO18HS`Z*B4PO~7rAx64Knn;RR8eOVFa0lQmU@vvbY zSY(AiiD+xAoY4>Ywv{v5qY^t%%z!Pf3;y2Jbo|5#T1ElWp9vC$wVUn3B~~a>%L&Bo z{Nj@gh!oXa{nlJ(RvJTLfCH;Q;kP|K`yLJ&&xLP z*CL4`DPVl$T5Hoa?+K-e9GEzb6hS3vfe;v{(WrOl(7Xd{>Dxv+&Rh=AI4p3gDg|)M*tJ1(S z0sCg0{J|&$uDMelI~E+=WF`U82pjSD3F!e!N=l~iX4`siOUpUXrAWZrpjG+=!J`Ou z^EZGZY}Y|G1qBnA>@K5n*=P*?f_3{uIPUvNsHZt_Ub|LcSmgqt977lf1Wy2l@F!Q{ zAd-Q`0+;gU4b{P43*^i5-_NOm??}(cSRJo3;8#{tBd72h8ykVZz0M9Ug;m^%%onWk z_k6MV0S5RY6=hh{SvIyp*_`Xwu4O{jv&Mb3dcFSO?!9}f_Xm$0u<5XuuYegT_8U7p<(UfN|IQ)TnZ;4-#zB($asDtGV@*5CeqYh6*i> zv96aqVcK7fb2t;vJKFA?NP>$Lx}wN?B}-Ri<1C9;ZM6>yGWFJtpBe~m&pb|}VUsbe zKZkEs9&=mlZNdzm%N9hsWmMZGl)YL5=luKkKzT^MBE6b3W;aTvMK9#6RzbSER(UMf zxcbsy`u9TO!NXPTZF_1K$x^Ug5X`b~cHg75u(T{NuB+atIf5w2=yK;OJj`cf?*+vy zFRVv77BbyZ;|jc<5%nkvD!Sg*q=tG#2j7YMLh$4w_WaEuOZUCp0FTlvq7`d7DNx|F zO@9@k`4rfW)zONG;NT);tJ9&l#%2J!&vgbLVXe*2a?w%r$)D3xQ`4f(zQ2NImWn>K zn?^4~h6BJ$*GIv7e@cI3nt=l3v-o2Kz}QCnTdvSQgE$lHufdn6A%r!(mieWsZ-uF z%lHlfo4j-prln5d%LsgAEPv+h>2`8F4I(sHr&8wwFS>B7oTQ93`on*b%f)$2tgW*P z3k#EzO&lBw`Y6H0KvW3uAv$3uBi8sd4GrJpN`MIfHij_kfD;k7%l-;*o>hAIFeEh8 z7C;NU?BUO2-X)5vo4;JUxH9C(iJbdyne_lL0maIogO(s~3=|UsQ2`tW-1-71nTlX$ zVc}(mb~!Uw0oUSRXWB4?WfT>uW5F6*kzZZ{m>~nq6FFH5c77dRMgm#apHGD>tgQTj z35I~Lgm@MLZ+{5yZZQ1Vm~H`F%_1#zf|648qrhi?O;C@rx6#4|d9&#y6qyV(EQU(9 zO@MWZa-feqw%rg#(gEVi9@{5v#-btRF$;OK>({UU^&T>N`9?K2A*}{;@Fy&raH_;T zEz>7Kf}T7<2*$Ryx9!KO%a9A66AdrOkQ#VhFpS^;7Rd!7;?CbN7a(jwR0@I3E%5dJ z0Jjq9mLI9Kjk39bD=JFBpYdU`Z{K@bh42rk6H|6o;A;Diwf8%iH-`CdG zrrnPii5LUD01gsLHC$Xa;loIo-Tc3;iCo5`mb}kQNB8IvMV%ts^@8Iqx9tQNDQTEJ zA=L+Udj|R1w6wI+yUk5a;mi_Wz$*cIoQ9Y=&n9l1Sb_B`VT*_4^y=#Bzx4?e;TeEV zz-YL8Un=sWaLNyYTWxH67{Vm2|H4r5G#E>Wq@y)}b0|0VgB<|4Irh9y#h%dWlf#|lB|A z^l7N0!2!-KcNmit66(do9)rjK(6Fy&W}fDlGL#yBOiD85=a2gI>EgL_<^qg|1VRuE zi#}1}A!z9q4ktyvs>cu1GGfC0<5B90lrG-^9Us1X{CNwf9*S;n51Pp07t#PbwYIhG z0|F%+9^y8wlDr^^@ZDO(5~K@o2mUX>^pNFB|MyHF%2bVKypQ>&D8WC~Ce?;rTLs&l z7iSGT(tj|RB3l1m%<9Vt??RET&j1ow!gWrw*L3Q8NL5u8U**v4d+_!UvffUdo?l*G zE|mh1@B0LB!e~9dpuWy_MJj_THA+JP5`Tf>YoXlZTI`SnjM89dSHu;j%7vU?4~`;m z)2}pkk~j4-5L=5LPmGL>Sr^HQT{#8cu9cF-POHd+b-PK)pv-g2ePvJrs)W-X;Ip7}y*Dm9~Njm+0wd z*Vp|47N(}M>!4wWC-}%HePnB6BggF}HT(eYtE7ZdqWsy>k=JB4NM>a~cg5fZJk}Q= zb7pw@Px}&}a%d|3i*d3UPqP%j^u9gWH9&RLI@bnOjGMgm^(_-vD^Tq$DCaY|cvdV-hs`2MRtR zMT4URS&EnSCqiY;2E->dcyC}QBrlV9a%Rb4>|T7Cy5i!ZW=P}fB%^IyuI9sstGUm( zbceqbYA9aK{Na}6CtdBm9~kHl4itLRt}!@T$7QBJiWrJ6oppoFg!d3}iir(k2FY|N#UIL`>!!V4sFlQMIkTn6sMY=0PuGkx6`yHo z7;?nj3n5@aIb}yp@+$*I zLS&vQV}l}+G9*Ju8A3>99?MipWF9glWX?SEeow7uz0X>oXFq#AYpr*${qDW`>%Qx9 zxvuj(&foF-eWxQM)3QOKQ-q#!#+?80A;@6qamL%Cc?R#jq+%< zxI>SB>eEgXu6QVsDJ~Nhm8pJbGKp*9QFL?>b|`3seh>LTB&(a6w9<64Z1jOz6NBKw z{5&+*6{V%ZwjFwDt$26qtaiF>+g^LEdTJS(0uYlSo|W9h-ea27TQ0P0yt!9J>m2#R zJ?355uf=hv(RLFX02O%&F2eK#<{vbM`Uq4aWE6k~M68+xKz9^aVmH&zb!y4D6!wYP z3H5q#%Pg_dlMLuyb9s2Bt$f(GT>kxgo43X|w?)K(uVaVk*l~B0{;(2_ga*<%K?5qT z$U}~1^Am)`q}zwtWjYS~?eraD$>@t06ls;(pVF$7BL8TALAx_)>D?*QWJVh?x(X`P z*vhqQrRvF&{Q8ofg=y08$%dYi>v-PbT}J)+&j1vk-N=X-n*Li*;`D@_5hruXCuw?= zv!|9sfoT{2n9hDQiE73b|yE~8?$hyEG-wrsoIY#KJ=@2c>~`usRAZu z)U6I-Wis!tbJPoRRLk<;zONKky8Y^D`GD@GlR zkY_nV@8AE0AB0{XRRzMGzP`Re>v*Mb<4(`{-Y^e$cOE*$vuD3z?P#VM@UreZaW{J; zv(4DV1bg?0xhG^T5ZjE;7OfUYJhp0mOF#+G@x6$yDJe05+KXUUzFz$N;lma5H$p-} za%}te_u===OiZB8yFnN0;NZY`x)yjNrlf@>?hObISu2uBuPJ#VwwY^Wb`9|`9gZhp z;wQn$dsZKVviE&!-8O^13_4<+9z6g^5ty%(!-dK$tdATi9&OJ!z`=_NcJpx`{9P&afPh=X1iVh!krEJ1S3$cCum za{*sWK!U=a{`VLvcPU*bcEf?Pmr*H`-wtfuSop`-I%*0EajzBk;~7x$qfgvPo7~_E z;tnjz@_jsRm8T;gJV-|at@2o6APby&;s~~X^;|Pl3Q7ttey!%tA}xM z;Oq?G(ywkHhzS7Z?OS2mb4W{5Qo0)*9lcDWT(@88(Nkuj^Y8!g^77I$yh0*zmHeNG zJUXWqW7W$2xW19ePKROp_TZ2ZHr9@g4ouK9GQ&_3f#-ZId9}7fh>y<(XdQO1d6k0e|ztj0p&1bcu7!@5nhqFh>98j?-S6`lieVZ*loxC}I#IJxkuGC?}`(OgOz?TSG|2>Trf;KGVaLqvI^p6_z5^ z#Q^Br(@lH|k2PS{gU1MTvAOUbw5!2EL9DFc6(CV*VDPzh3qV6Xd`8CUe~^;{Ne7rO zJ=b*;ssZ%hV&Cj!duMm*@;uZ?)*O&6opBs&&9YsE2&K2@P8bvK%4Pqj|ELmoIl@9pbgP7h9B!~9)G5}U~qCKu7Aa|FmOoi^{0!qu^(TYeO?H$o*#A5m2u-EN3Id_GC<_Syj{EjA#<=nzI5-$jzuT-$fq;}0KA;yy|0a&1 znbCGPjOhUK-xkT?b`yAp06qExNOV?WpP_$1lQ;&647v~$m5l1gd^|jN0|EeiE@F7$ zrBlS}1<1K=+qR^6f>}9eS$`m5GWt?16u4*4o+SkDK3kg<4X*Zv;!A>l!LyR7nd}VZ z2&j{kpTGX+nC0#-X#fQ_GF>UgTwo-CjwG@2P9s|N8-DqVakkTcMmX(982?-vTr$;nQ`Z-N$;zES{R26oY+H0wgr*4BtEt8qQOlD8)4~`qnE{a~E zn`gTFh@i~+kCma^V31&+Ilp+nd(J-g$GYP)XLx4Jl77hE;o{_$mX$w#{3ItkD{$&7 zT=PxkUQKxXQNEuDn%pkLET-#m7el^YoEB_9dc_lj+6Z0o|ln4EG zw1xZNK70kNwEiH`P?OII0N3F&Bzh|R`JaXw{|yZE-~Zv)vMOP50Y&2D?XCXC{^-$n z5b$l@vPHlB5`h{K7gu5ckHg=V_!0ly`cGm$-rJ7PpFINv1;x36y84enFs$+-*791ByG$>O3WvbfR^z=Iz>38rv3o+1H(vWNMucY(c zR?%1)qa6M`q-XahCg&L^hsLqp;9x^H8iA|Db`McVn`H*khoZ^GE{Tu6y3kZ)fLW1t z-wDV>Sy4)Q0%fG_x{jc7?N^EV+2214@XY^%W3^P+J6=i1Y5_R> z7`z0`*zzv%(SnonoVQvx9^;HlP-CZNaCK>@OIBrP&q#h9XJq=RP=WKoBfh4`3)4Rb zdkr-^KFTZ)oQ9wah2*U^kJn;bCzIQ7I(Qy6IkaxfSGukf<~wYTX!{r;#z7;3vPVG0 zKv5(_MKxuzNaXOyG^0v0TmPWjPC-TTmO7o(naAuq^$FUz|8c7^EL}n%~>?Qj*{F1)GeR>96T})wy^> zjl!dG^=Mpx(I3<@v;Yplu{Ih#v2K06quL?U`q1Z#nbr6B4l3s=g*GR}W-AE$Y+Fp; zdD=6xNXPzWrRuAd7u^Uu9xUQdZqRwH7xn=UA4D&D9_f&9>Jtgie-Am)hGd;sUk^?) z-MM=gf|hshklW&%ymTL|9a_x~A5O&~ctZPc04cxjv!UpmT>G>E@$%t^o#U=JIIxS2 zKUC+8+gW{6lRaTO#DF33ced&7D=2*!`bkq`^b>#4jt2=(Tr07l;P}EE3Q*ILedNvS z*DH&itI`N?$0i3V5tR;_h7MTWM!|w&&I}0&neA|^ZfF8NP)|>k1g+`U_caC<-KOU& z{#v5-NQLQpG;EU^2q)+6 zsTBiGzOT9=Zj?bi`|eGpR5IUH&#dfrF|q%Ky7~f^3f!LFU9Y+F%0o5dD?Qbvq#1#I z{YEx#kI0%^u(1C5s7sLdK`eAaY#wgD40Pw#W*a33=4JL*KB z{TVS82P+5{KOQ4gI+>k2tPUUAO+azT&Vxei%h*`MCCl{tp_(fz9jb}hbL@&`CYtZC znKkruuYsSo5%HYtfFCUswx6xkWKD7k-4-XN$@=V0A%B@h1jKu;Th2b4dO8#f-KMU_ zxvfC{cB1nVpa&N3;*#mRgc^muRKIuZ5^4qpa;#&m5k7y_!IG^q7}*v^50B+Lb``I4 zBcKQ{%IJMxgkZXv!w;ebQd0ViaSl(|w5VFVQo3!?(!?h`U|_CZytqiLLaj8q2dJ3e zT-vNb^rGI+9K>>H@Z#bRK(6_P>c+4jpIWp?e@0k)X~6qx->sx4a-PoL(8!ECk& zyLL7r46#~5O^v>Wh$p|^U-{Qd7ViF6l?s;&zKJ@*dVfYwx)i2w$l(!`@{V43_n zV9f7;a%^_ex2NgSnmkD^j!Bo2AT0puBeW*~*fz0`*?;%;bsB24Zhmzh5&%#r(jk^Y z;qdjE3xxxSfmkK$!pERp23NWPmy0|7yzeV_;)FCvGj!>^j-JoI(laqhqXz)qzy{u^ ztPB7%Gj7FlH2DO?r>vsF-&b`IOxP&m@592H`l=$scy;^U_G8I_WLZqOo3tgz`bhry}Pr&MOh}!@6kr9j{($k zylhvMnIraA;86n3gX;KvKqR3vNr;UFVC@bp0fIIf+BYpr5O^gdByh)Ja3-EOLaBh$ zBfgT^!8Sf^W(q!lXrAQmp6KzV-FJH{^9n?t|h%}^wMQ#UG3rQXy>ze4wEPyyY z0#Ijs9FmqYtJ2dUU~_VUV!i+{9=lsNAx4=Vx(pZtw;(P){^7@T4cvD^9s~np-`g2n z6%48Yfq_k9w+j28xIwdN{`nCLD~j!Is5#&c`jZtDu`6nEs4AlPZy-q@|DB>a6vC;7 zvlG&>mi~priWBTa*xD$5f?MTf?@gQIyS4dgX_fEPmOe4j_$Zz}Qm-@as+~z*<|EFS z+#pE?bk`Y(xhwr)Ksz9OaaHi;u?rH;AUww-ko>szKs$p`#1-r<&qIira7X~|>_%qy z8f-*jVzY2gyjUtU_Ah&lp3B3x*;7RyFh29u9}hqk>+sN3IN;J_sk=b3AxJtMF4T)5 z9&Sm4S4P)O{5mk4p?$(h6Lp@;3oth1xNpSL0Oor90zMjaFn3HspUek>Ee5VRsFwv; z7Bt>lv@Q#&1q>*Q@MEw#KpH`)^=VN1Nyj_x|3K3{;a85`$jxvZuv1%uySiK7Bf2h+&9RMN3^h*7h#5%nFXQ zmx*}TgF5AMtgY!>( z-vVm{76)_y=aF2va^(sjM>#gUorHvrt(8zX0i(wP7=X~iwHpv8+#C%scwv%09t)%x zT{-Lb?rwVk?t^N+&!0b^-Vg^%2}D$PfX0^y)@54Ml^Y58o-#7(Lc?jW%pm}wnJExK z+Q=VF%Mk@B z@jIhe+B{e~3&DQq1VMro;3@(J;s;|WeK{9+x~M21jnUup05D(x7*N%{=xam8sRr}{ z9a`!sh@_xa4Gj%#cn-VW1zeT|sshuOV0?i;;R@&@Y9UD@8M`F{Pk5B;fbDkxq~aPQ z4jRE*<8unrQ-aJ}a4^Is?Dy{m9g<{Tk)E;!yy>cun*Fw&sY53^jYmO#{9$vZ`nXK5 zf~A(JTljaXI8SATrNN@;`W34BMpUIOn>Pb7HjOOA=8q5K4D-pPkVvM#o_Z0|$~GLPA4LMI%o?mgq$= z0e;(VqRDMVacBg+?5p}u6VT2zFPPkRW#(p>ggHG7(|{f@f8*__5muIO;qnOie~n>- z7r@XU@c;wrCH{|}K3xLvY-Sd3@dzV}ZN#mM!P%FZ>_U-0_uY7&qKyM#a zW+Jsy(O!iw`ug;?^jqDPkhjv_2?!vD3-+oIRhkjvgc<2W<$Zpd9% zrLY)agE;YAP+UA4__AvQ+8&7ESy{<%c0(!)IXp8O-;Wmv-82GglKJ`2iI^`vVZam` zvEOvGKJ@#?kD=d6byed+G$ps{ghr_de+^NM*sov}FttrrlTTM82YrF69Bd|>SoVDqHP}7=8xZQux!Vk1o7_3pg(c{wy(`{f0_JG zG7X5)9WFJ|HENU#tt?j6SPupL@4?^8AfDJDVPJSQhVHfivt?=_(gL5x5E;Q|cBzbw zg?`^wa6G5t&qLDRPyLtZDEfCc43%6T(Fm1VgAurhVzO7`;q@UHwN#~b!mf&Ad_5wv zCh6#5t9bZFdj!vgUaQCEi^}gZgM*2ubz}|U=~`MbD2S)qa?S#pGTu->f5X@6l4d)3 z04GT?rH-QXOvL}iq6y8975g&<=!{%V*jXcfE~@IqL5C8TMZ>PJHCH8RD(JOF=(HU? z8R$WgF}S7?_5XlQ{uiuI8Y_k1yNb|IfG}zpeSIKKdg+(!o0gYj1g8f4@KqDk|3!036P8owlUiEofXy$Z{AM zBE!QiWF{x8WeEKk0Z=szTmTxEpd6WL-*aNw8|B+Pgh3=h?6+;i9S-|@?iZ{Up zwI9SMun2n{1{#`IXpzwIF;L!aZf?d9=nO^}zqdWx-b7C?s!rAbst}ZRND_et;2;Lb zp-#%d1hF_Z@Wy@Kp+FgcH^g|!EhX4GAc^dQ%5!F$f0+Z&sO)U<t88eo)WkRD0APbH9Qpmi8*Ftd$|$aqxwULPbDu z)k+%Ju`oOnir*@cCZz~rPE3fQS_YdaD6YVfif98#Ny)}k{p4r@M)|uU2pu^h_=J#J zUlfL}2%dr}dpa?k0O~{R@c%nWAcQVAxC}M&3JW`7^kIEX$R92>`ucvn5P`iEMkS26 zj0}r&b8;t768wg}*~Gub1`M+8V)(qCfTF3EoV*J`CI;~1voc7I8ATRU4{XGa4i0h` zpa}tiFXg$E4G;(5K7cd45LgW4${2L%@ZcG}yAh`trV=Sy1)CcbM5s0xAz{EdVrBKR z!4mVu%;C6oq>C4cg4uqt>`sPzP09hN7FnNho{eaBe95(&BlEEix53s=jZf!jd`vPT z%)3yqMw`=RtM$?3VKTODN`+=X5{6?11wUVCruIs?s@pQs(TO7K$kx^tEefzsp>P+t zhj8d4!4mcL5oZ0+PA#i+ZS3}OTWQ;>6S0Vw_XSD{fiv(g`>t&x8cD=-^6BS_lXt;3 zs+Voo4TKQ_X*;E_X#OLiOaZIX3K1!^RbgXCU`N51^2NB_gVct^rOMcZ1exi2HP%`X z9U!T({1TNqD+Trhpx{zbQr2Ha^Ma;#`ck$@1vTx*%F4=*AHQ;#_4oE-qT&1V&p%-c zkd|I)F^_J4YZ2Uml!@}Sw)2)IquM9$hKWOsfk>2&$R0LUY{QMo$YZMod<5(S2GpNqF`>WyL1hE{ z@Iq8LMJFlnc+&^SH<-ah;jU{saJ*6B6oE~D@kWEoy=6#?FI(}mqPs&`A|t1K1g4!k zE#CpHYs3r<>6(raEf3mz^^E%(J(7&sX5i!7lC}7QKeDkBC^Y7%HRF}!ZYHLVBn@s_ zh-v)p-D_lsREh_&L4@wfBDBUJ+onAiQ51-4su)-@r?r5|330 z!9C|+00_iS z@3_zxfi-*v`E!U>_VBFq*R~sQ)YJ!Wc(} z7g>e~>~Sbds6>7rWVcGeB9Q}lseFu_l>Jb;EiQi|%hUH1#(=+PG^m{EiJLolGh|7Q zrp;#HceWTYfk>RoaWF-pMRc1Lvk;@qy%5Q#ADH~gI+Q})51eH;Ei*rm_~Pe*IJqAm z_&1(rUu~Tmllb$`r%;$9o~7n83Q2O{`1*gIGl0qAPwMFLo^Vua?3g&Y6wG8?n7DKp z1?chD=!8i1pCOjhgM5H=h5?~{7+?SSnB)IcMZiCwZA$!7{K@M2O*e6%KDjtUa1rnW zBL(~vXK;KY>Dr#I5*pw`?l4*qul_qKh`)^f|LTn9|Imm3-5tLMGRcU2sHz-_eDg0+ zuo5~sr(uq3ThrghVkE*do%WRlLlTG@yu#kO6aVZ+{Ig{m5K7SN8T4NQ{QMAvK;&7R zC601~D#LEq8bUBXH&-w54p~63BcWAnU?+o9=dW{xpkw)`TpgXEmHWAYR4he|0U72QI{MN+hoFQ8s?EWXAQ7;2uY@p?|6oA0NF9*` zyQH-CasE-)hZ$)U!X?}_WcP4-h>45O!Kvtf_wMJ9AJ1V+07anhfpf5qkp08hLB`M$ zP`x+U@nP0QwME%pg%ScW0dOH=sZy2wOQVK0U%J`iNny?o+C^a#xBro_AY*71^ibg5 z!)6&e1nLecFu~$9XdxR<_)lUep23riY{56|^+Au4TMpXIbERwC@vXb^Qez*PVq(&( zUpnMnfE20GVnU;XM*HQj{>`o860nmD6YRQjbDfYdW1P_Kzo zQxF+FTZtRKF_XbQL-pKSt9zjej#h~#{*#U$Efhn=(~>-9FZKx5s$OvGUTKh1(0aaf@H)eg ztGmygWW6V!Y0pgknGHFHXZ8}ySzrBE{xeq(@mB>&uYc3yw}_AZyi&-nK$20r^5l@v z?{_B7V}EKB^`klHsc!HsLV9jh#M$iPAcWoJg%t6R{}*@@Dw&9=Fhr`%%*^l|I6$au zk;?F0n}Lq*A-sTS|Hiz|qj0Usq*4(O^NiD8({xKA#4ILUsgguWQqp)QZulCQjrB+5 zoQixAK}wiB<^<4sQH_8A{$-3wMW(4MiNrrDFLzY^-yLaUIa32MEXF$=B`G8{0V0b@ z%qFTQj#0wtCzyzB+qX0HJFFwsh{LD|323eVxkI}BIcJ%u-8XfRG1Ac3VU+N*gtQ6k zl$%vEc^U-`LdyjfM0SNni|*TJ0wM&^VeMsbiVaz|hHloFP>IN)DkdU-gZU}Jbc20` zdB9`@1mN_P8`8kOfe2oMmg={jAmlbNfmN0eKK)F&sK8lJuW8EAx$|tqDSM5aqb43N zwbe)Z)SJ|QXMA4}-cw~ZN#wwMFWp27ja(b_E)bF8EJlw54Htv}k-?%19uSzAEsi$_ zfBJrxp}YOh8Wvi}b=(Q$Lglee-x7d3NlAA=Hi(juKXu9%338u4F$i5a1$kMA>kx0n zLwqg2z`$L!arHoDzr8U(4VxskG=AO8&lc6NwjfD%Y6SQ;&U1j~r(hK#20hGSh*q(5 z;sk|+L(`GC(WO22`Czp>0td)%o(H>*-I6fU0N8-8fEiNUM~~={Jp+?1%(2*HfO?pr zLqgnIa#7JL*fDGtLdcAPvItK6qVaMDX#63nT}AXK)aSsCFQpaqiJxa6U0XX{z5cp2 zn~an@s7{K!0?*d>V3u$@9n0RsIzh*W$&j8vFe zROIC$z?g?k6Z8F_tWYdK#f$k*OQ8z=2!;is`{d2~_H1Jp^wmREm8Voxm}ETjedz;E!wx@ASz0EUyurY5>-KG%&O&`TBDKV%0diN96cH^ov`dpsdUrY?6%oj%@a?z~w(%jNqzZ9@>MHgU&4;kkujym2l7# z(Rc?TcLTwHR1W@vDPX1Cagb1K2>wX?w{A)!#!F=GnP4qpLh=m=$k0gvuHvZ%IT7F5 z$oCJ1lnA(B-uvG*q-1*qm((OP(i`#cHssh~qp<}HRQ*J1THj6VFEAG1ASi&oc78z{ z0j3s*DSZFuM3Rx_^yg1jzN{miQC!tgSF%MZmM2ccjl#h>(N9}8UIk{3`Y7m{kUp+c?AM$dEhd=#|LTxQXBjK6h_8MfeyzJdT%^l=MJF z(vU!N66qyd6fpitjhAjG;CYjHYs4D9GopD=TwDy4zF^_BQ7d%qA0F(R9cj}tW6N;> z{`;!Ia+ydpzxsv)V^9{bz2ivkh9%&wDZbqM?v;>W<0 z_4G`0>?|uSeQVS1imM2r8IkbdG3ta(!^+AE3lVK9GRB~Fh7#%F{rhLCvQTlJz|V8& z@v0t?*8)o#H#c`OBr>iaaapDqTt8_e2osT`P+sI+8UGI740g^7s3j5cu)Y+4rq}4G zyCf7&sDcLuEClF*Yfty$G zrHc_|naSry@*>O%+#Xn$)d!yrkU+7WS5fyeT6g659`koG5J7WD=4VJ7o(l>3&YNzX z_}!~A6d{u{LS+mJIBaaL!AmA_nc+nWs?z^Zw||c1zeu;=*d$B$06^rRNj?Te)wM2L z1K^>mYEZJ<*DL?6-2aEf|Nq6x{hUfO)Fqu9hhFFd8GcGY5{P|J0su5R1|k83tiaD# z5^~QWc19nQaY`mVEI%`9I2Er#>B_Qs&`m{ zK?E6p4xt1PwUJHZr|b9r(>&eK>-Y%!1CAX5Bt5wN89E_^a8CnIOSWo3D+x`WWyHg< zu>RI$xC^*`)Anl#LzI-8sVO(pomJrHUEz8*eB5-4+#Qoky*2Tl&sL7#H4T(-lQ=Xq zOGu{&H+I1W1UmpYsXjD|_!_HFFT!`=O9{9QNzVj{h4W9qju2ia=;=f;ScjWGK{z3R zPejXot^S2sxT3s#uni2EC%6a1Yhab*Ofi&2!fr^=Qm_^SBt>b1h<_T1UUISMOHd5m ze>^zJL+9@~OsM$LonxF$!H5Qt|2IImpiv;>RaLD;6b!7t`&n@f0;OiOQPmKw(3EC4 zHem>&!tUIfPURnw12ha1a$hy%?Sk2bJ68&~6paNq`cGl}$iZqLMoi#ve7wB8P)#=x*Cf9qKUCF((Z=`WgO8Y zX_2pGRPNqlyO(xPtDYR3ZkC_%VUF{DF_gh!PXN7!py1HkM#I1DwcO;TEc2`&H8qvktpRoueYp=)gp8Lb z#d*Y>ApR#8ixCe)1N1Q1zAixvYBJZe;hNZ2*o z{3nvp(Aa`T!Z2Eh#@_`pXmmtf1noQ5iu~k31cp(v;4C);kIe&dBF>5#R5{%D$fOXs zvAN9m;WyPxQ}0319bz4MPkMK?$du#K#*h2BZt?n<*m$R09#-6y1&W{IrxkIb!HSTYi zPXOll1i9O}&dna~od04jJsGY!R@czb@G%r42TNX?lh8=57|SHPX8Be!QpwXT!lV+d z!A!==f+$7ZaHguzj<3$`u|w3iYGckw?+8*-?5(SO9L*iADIHU{W9j`Ce#Xms8AVfo zXbtcf18$GY168!t@3qno`fzmCYjw8n7ofc}2Pj86D{}+I!LK5yv5e-J#8D^qSt9VP zCTnnHgqP00g3(baSNFh<6WNwKNI#-Tl*JSw%>aXa%+W?x3{lAcFf#KS(H z+ja#q3tt0O4)un>VB>uGGNLbsOqds&q2vqWO)sZMEnb}X#GeoV^~Qun!ehE)AIiIk zGb3y!Y0)0${d&LUG$I6##So<3Y~gGH{&EY;)bupc44;5z#%+L(o_V3hr?w@b4FNO+ zJ0>&nAP{o~u3I-5^IS195Tp%cEJ;_$YBub-_CP-9jF_re$YGAG-KDxxJ4{qZH||Zg z-Gx<$HCK8@g43GQw0A*vZz~#T2(A}#o0im~7wT~ZJST#q3Fd~y8~;Y|^Wfk0_4SE# z%)Fw-ys4!&o4k>O(es}-%FMlkGrSiS>NEpklN7}P1!||;AtLfxs_>G8d>J!0KU~@1 z(UiA(4C!_*lyXRqZ}j@L5w|5DS_kg9c2T@rCZtbw5R;nZQr046UZO+BmL%?7Howb2 zY~pfv0J}xHR$|u$33km~>HQWN36EkKi*L3K;cYvjd65T9dX?+N)(EP=+++G^YCaTpM8i;h9Q08${Dk4`wu|t-eMaN zU=7%QuA$mKw0>_=zU7WxKj0ReDV&VSnPgtL8DWsHkI%q^5?>x{fx zO}oyXV-y!YF_c>dor?tEKLH_S2P=`E)TXS-W|NXyQfRY3iP~{W#OA>h+?1Cy~cW_!D+)#v;No8qwhv~btpj$v5 z@S%KL#k=Exmq&(%6ffH%Z3o+Ju7eZdb;t85k5E7pJ!sNXvN|LL1ndxk!H45{u$>JY zLj0hq>Eb2B#a2*m7>l6yT`fT%y+7fy9V$nKQ!MVA*l+#}0+ zthj8Vuh&IMYA@p)*a?1F3If9-&MYAk>#YhoP?rfoI|L6cQ$O)rh|@?Q9M3s(fCua% zmcAQe6#^wEK1475-~g3xy%3b(nH8IBNHz_D!^P}RWW#pV49$e`nwL;Z#;y@s`p zkQ6vKpZ9UTatrmP0uzrTOmx+eVq<>XsoJkEd<0~|eUcwa5MbgBamFO^`hoRS#lIR< z%o?no^b4M2ocoiJOwzP61h`G6L@wStdU@EK#oIVN8*fdRCHN7#qqUfY2!}K;Y&MnAb&c=)&t6qTK^V|Vv(IoeZ!lGEQ1Ko&c%+|!sQWL z<}q6i(p_q7c_&y?s`j&N>K(K`WqjA-(!iO-LWW~X#||)C9@vwR@tww}DZ%wc$N0U= zdUo$Npx9tyMt{(TO^o@NI2-{)v7@A<#Oa;|stO|m137?&++1DZ^dQb2AkLq{ZaqN+ z0|Q#~rs=DWUd2&no*4a|$2uDtz==m)O3g9D@J@)X0Q(OiT!W})U`iMJ#EQbD9C7vw zR4AKSO6jpPT_$o`AbY!l_7C-VOr&4}x~2le0}ssLwh}^y>gZ^LRWzFO0k-ZvH@5K6 zPko9;2r9NT+1xp|LzSW;6Wr)+iY(X$1%oOp!t3(a% zT&n6E9vs|5Pe0dIwA^OpV@;wrL5sidOj2oi1SR9KLo2r7tDq7UPNt209 zB~r^qlMP|W_e7Zcs+QNZ7Opvwj2gY%5{-1{*fR(896que&R1%o*OP=A0N-q;LT1ID zA_m?aJSqbtBLRZMK8ugAmGGrsE?R82AbD0C?s)J-(;STh9`JJ%G0Dk8!C2)du}2oI zE*5zqtB}ZdlNy10D_YQ`98x8wV^{FC2pbN~F+iV?Z{s2(A1%=I^b;7#I1{2A@Kc63 zoh`Jy7Z(EOo&b+9#C8eQn;}lrP$?vXPHK2;ENyrcFfXh&0SUxK!@OXaVW}ZOxA4rL zk2tNTXey5X7LD|5PIW=Q)Y#RZF+RsApexD7X&@$dv4p~~s!|IV2949N02_K@U%ng9 zbam%+>SbPo{A_I=#8#-2A15o$29HV~9vh|2aMLE4GAh%XCWzj68`mLG&7sn`ES1X1 z^PwsSir6MwFZ|p+$7_4_liyD6T7elnMcC7EXwNtnIq{f+VUwi*=7~c#JX|MGcZk0P zYfnu{38`NOoK#o_b2vwADPF9=0u`@lTDPddQ*Rtl5wMWjZT7uVY8+8^@3F7m!J_sw zGWxTvqp4~3IrH+*w{+q5=!c1A1bBXme1VdJGSYg@NA7+mpKn8)XZeu4w^c)B(v3&8X( zgfx1g*9wX>V8%pt8iv2ZxibEhMci+E?-L`d&LjcC{J-x(h>4}Xw)N-qmZ!RYX)SkN z4)$j&=vq>jX;ZbuEXaSnf0D%P(tKXIUra?!&k~^QK)ESa5l|yyaG_#x@8vd>-->W`h*@a&Z15j7pJ(7tqhPJapRjviu-I_W)np zmG3s^(aZitG@!I68P8sRkH@Y~$Egw5NeB}j;<{rC2t#xMoMA_cYz50vUiR%Rhzc#J zA6C*ygp`5Fx&G{!Yg1lo!Axr!k~k5rT}$JoM-s49y0M|yms0dWLo*Mxq_E6lOZ69t zp_h=d)4WHQBm>A1bOez-0>YZ*MP}bt?*UVUg|)QLEh)hjeG+Vi0b+7Nx^rcaFu-9D9Vh zU~K8jm{Z~UI#lx2pMfhE0ZclF{&11WV4EK}?GSM4NMK!+6^KY>LDPD&t*5zU+Z>*>QF_>`Q1h33nFvhiv!rd zV_vy3BNNS3Yf4Dg(C@F-h7}462oO3@2Agb_l$s7`p}ZCnymGx(SI{0}jFmZkn$W!x z&9UL~pcbA6H@Hyi$~!tbh}|8RstBv;7zKv=8MltfCq*kmMXBzkIQ(*%=={rvjvaF_y@DwZhJmf_U1WeYUrasjz%&PTrE?}TOW(e1Col^jr^FW3Brh)tmDp*I znK#kat*bc!MBAGGBS;Z`&T^FL4x|kRhz!=Fs21rXkqh(oD43soq_P4VH$-nE9|UxC zwGCqZrzWmM>B#=>S3-UG<(UIk?YSb4aeP;~Vw6|6^FFU#9oj*3ZX(=|L&SnBZ*Z{4 zA3Lyr;Do9Yw~V~dnO0@L&~`RXgSnL2yNL{|-`}9zTIBnF*|Oybx5>fon&Z3lh0VXD zTX^--m>jUZRjbLfnh;}p#Ycfzt;2UbjG=M4$ZKJ=*~^Wn9>fPn1Okh<%uQqr%KOfkUfCjZZ$t- z)qfI76!cshnnv#oOMj8x5_ zhTv_QC(G4_`L71TOjb1rpC3j{m3~=j7RJlp>@5Ozk;ETuLeE+c&;}2rK!=u~3$!*u zcslT?nP8b&D7xsglDeLYwoO@gjY*Ubddd&)I8 z8qYjz9F7M(|3&yJ&t2K8ql~Qwxk4z4@5cOm@(1Y%Z=mm8mUWNLHsS~~`kk^Zcg zrW5t@p8EFT!1imqZ;OBMoNOu`Otdj2kq(7j{>LvaZuI%}0KnPA)>%;-(y2Vccy`b_*3(T>tzZ0&wg z;&oFfIJU93LxuTJnelA}l9_sGJXQLHZo#8)I&N*>&UI^j8kqjJFOd`qUS`yW*9SPm8OWM6aW=%y`Mh zd^v3m}mY) zB}*~zMre@yr{mXnIo}f(KehY|7nP6fhw|=-a7ve#?IEK|a{+GvVm0Eu??s;u01dan~zY$Z$LqwYbb zu`OL^Xk<_6h?UU?#eU>$a5SbACuU7JtdJcz-`)U*V|B6?m&*W0`tYE9>Kz*Z+`x zx?V}GYIE*LYu!!33kmswENm=li&QMPAI0Vgde1Fw)qFBn*oh~6F;TH+vKqm0$ph}2 zir$!7Y4G zD}aoe4m0Bd=;Yf|K}5J4wjYGvF^*l@*mccc@QK~~O~Eo#Iivd&dON3QrF7a>b3T%~ zZts5ed2`jzpAjw-^F1C^jIS;G-&xvkRT%uj8~uZGEVs2O1RHHaa!*t!Y#ex`TqdF)_r~is-69R{)b)j{uY^We)LkWf=!5Tj z$GWS;Q81bu$baj){BUQ{Df1GEg&SL36RIWWQzOwK6VKE5%HXwo&^KE&-`qtUhKkjN ze+alRR{|6pXCRa>wvmo(Cq5yh=s&i4*p#RVgR@zwt3bB&?C14_gmO5C5f*hA%C zc()CjskWXDy1!x@r0x)lHvoX*V|PYL^yM|mBk8Da+I-g#s_31W?z}oJv|?AdNu7>SR9fk zI>i0R%Az|R#&C6SX}|cG8#i8Xi|(f9mN?I^g1XG2q(={gHqq_-I{al@vYLK_%Kgy# zq8Db2Cx_hub=1TP8MT1r*;~2)vCdv($e@)n4 zq$qB=qrJiC_K6LTM1vZsLa*mc7d$=8wcf{JwZHbOaeMh$j=gTfEeWS(rswXcxz>BH zBT?@}om@>V9J%C`GoQZNJZ>1N*!xX&p~^;BW#wD$62mcn(l@SU@^z0im2Mno7%?mK zYuRuwh(2jjQta{OWZ`KI)yKPX-wt05@}}7$xZ@Lp{HdV5s~M&h3srGXYQt9=!gJz3 z=_<#65VD{n6<@SC6_hUMrRl~Q_RQ)<;;5*6QOq9KWPS^gWetzj{-bp%Q;Le~1@_g` z2PGd8_x|j9O1_VMU_@|J#%}RVfSHU(BFo^nLIwjlgrcVNdgM53m&}L(4uflG%w0F zw_S4i;luSdwevZX6SfJxMjy6avq%e`_S(q3zKOiw;p9(;#*_fY)kJ;iMi9Z%Ph z=r=g;Y*N~r9ih$e%vM=H>-Yk%wNLAWZO=EY7Jmxfne#O31xhq^Gpr93JnSo0s9b)c zc=Ni62RZdE8m^qIi4&nV)%xMj1!H&Tutj=opOqn9BjakUHyz47;A7cH)$p#EiZkn@ z%Y4;qmYlMFvCi8pG}m^k%Vv*cQ|OIQ=v$}Odnfl?zm#R76y)%kSM1irkxqO>p`Tgq zc}m-E8IrE0(+sIyG}(~7$0K<@Q)7Xb`Q^;5FW$r5Azo73g(%iNdT>$a51U5X-2G%) zH>{n{$I=8jjPe%9=jtBzcY3qgE`I88Gs&pr<~owj9qT|5rKWE$*XzlbOn=QX(|H-u zYOB9sjeGL3S3ZX_nxw?hy5strx}z197c^KxHW&Bat8v~f{&D6Obxi%<+#t7LrH3jN zWt$m3UWjj*CtTLa}-Lf;m*SR-k%F~K_&kTr(dY<{bBqlunX2ta> z@481{HS>tXGo+8vS|l{s7VH zV&@Irxjz|_Zgr}XQXdORM0#H0E@0(-u1t!T-Mj00q_elp2h>tyi5SPs%Z{glBIxy! z=Jv;^E>`jFW<2KH*Kc)lc+Yx4Qt=roi7gtU+nac|d=uw%dbzhsSH9@haJcgA6*FnY z`LM67q=Q@$F5Wi5*MslxIF`$&YMsz0OzuNJR9TcR^gb)XM|N3RKt4hrIY#@oNACZk zq-t&OM{48;uDX$&!Z%JAgFJPeJ#W*}TpRfIXWdcrJvwGxG>Y>X5~~_K6)m~x1)(2b zy=L#NJrUm*S?}rYfgX4tt*+SHL^3h|!iJIZoq^=aMI))FMB^RtqzRom`ST%FLrb)5 z&JMl3&5;jp92Cq}olBXrQ!#O#ewk}fL$zxYsrdR?U8;Lk#&*irvn-~lsBU@=)!EKe z_bJCXZ-0yLV@&lRD_1}4y6i=1Ht`F_b{9{*m(NksbM4fwYsiU_{bJ7P&{nY}P>lP-7OZhR}Eu!iMAu58$%U{hJweeX)8 zYL+^Y+zD#=8NP7gy!BZpu;7!XUl%ugEeb7f#2YCWIgd53eEo8hS#}@kAmzwLvZj=q zA^L-2k=JEMUUbFo&wbdqlEToy5d1btZ}Q#wM>jni?yS2e$zbMSb&x?*-zk7fUbNA? zb%C!gMt`AUKK$#Sq=O0(rd{{-893V>4p8r{Rj}hxc5M)NFLrpJ=7@4?Ur+7r7;hah zB@{H_f%Cf}M}>z<7$Z|n>L=K%_N8%%ow!5#{7ZOfSzoObl=A(4^XAR9w*-19WV^#G! zENv3a%I9dnH6-18X8I=B*ke3v;Ok&aU;C4rQ=hKmOK+3?P#lxGgE6A4tA=M&SYV^O zYLJstkE87$B=IB0b(OXkBi&@Jp^>3m4D~#8?GK|9FM=ru@O?c!lif-|k=(63p%vaTcqJy(;#zrf?@J1+A{s zJ?Cv6vKw!8cHIelfDU^nFWp8P{ms-Og4q()j#a{1Ewgu1#xCC(GMU4$Ja}q3X0e7@>Y}Yu}&R0na!}CboaTqb_vCE+xwoodDja(Kak1j z$H1V;vzdkArmX%^aqEjgUOtz{)L6+$KTBUd$&jFbDtb}wq33P}yg0eAt8M0#vRcWW z!f8d4n8lEsP(I=jf7Jepjx;{0{EWXxfz)^8qV8sDWqfm`_aZ5K+gEfp+G0LUtK&$D zQKpmnkmq{WWNK3} zcL(c+T-QZPfAJND;dLp`H;SLW%6MeGz($=mRlAvxn!eJR*`tn_Oz#H7B-F9wADimE zhAYLex3p{cPE1`Lg8>=wqZ4)E6^F`wNuRYXrDrbxs(TaShHal|pI@p2zlk!*Ob@fE zmo1qa+o_$c>sV;nT9+J~*?BbnRwj&8K(xY=72YdA{Qg-of)b z-^Ro19?8BJu!$EsNGd*c>P`N-O~v_Vb4=m27unq70euHafbK6-^uHLX|NDOk;mcoP p4FCN<|9wFStm)sh4!T##xYAEmNA@*N;SnRrA6Jn}J!W*{{{fxn9-{yN literal 0 HcmV?d00001 diff --git a/docs/runbooks/cosmic-desktop.md b/docs/runbooks/cosmic-desktop.md index 33fb8cbe..9404fade 100644 --- a/docs/runbooks/cosmic-desktop.md +++ b/docs/runbooks/cosmic-desktop.md @@ -110,8 +110,9 @@ Más `cosmic-settings-daemon` y `xdg-desktop-portal-cosmic` fuera de esa lista. | `gmp` 6.3.0 · `mpfr` 4.2.2 (cadena de la calculadora) | ✅ sellados a la primera | `b3:d99a0a5d` · `b3:13982d20` | | `libqalculate` 5.12.0 (`qalc`) | ✅ sellado — la calculadora del lanzador ANDA (ver abajo) | `b3:edb8d14d` | | **`cosmic-term`** 1.5.0 — la 1ª APLICACIÓN | ✅ **sellada a la primera** (arrastra `cosmic-files` y `wgpu`) | `b3:d0ea1c1e` | +| `cosmic-files` 1.5.0 — la 2ª aplicación | ✅ sellada, **sin `gvfs` ni `wgpu`** (ver abajo) | `b3:48d2b072` | -**La cola está COMPLETA: 31 recetas, `escritorio-cosmic` 69/69.** +**La cola está COMPLETA: 32 recetas, `escritorio-cosmic` 70/70.** **El mínimo viable de una sesión son cuatro**: `cosmic-comp` + `cosmic-settings-daemon` + `cosmic-notifications` + `cosmic-panel` (los tres `.expect` de la tabla de arriba). @@ -581,6 +582,36 @@ pero trae `--with-fallbacks=…,xterm-256color,…` compilados. A la terminal no necesita terminfo es lo que corre ADENTRO— y el hijo acá es el `sh` de busybox, que no lo usa. El día que entren `vim` o `htop` en la imagen, hará falta un paquete de datos de terminfo. +### 📁 `cosmic-files`: «ya está compilado» era falso por una línea del vecino + +`docs/evidencia/cosmic-files-qemu-2026-08-04.png`: el gestor abre desde la biblioteca y **lista el +sistema de ficheros real de hammer** — `bin` (72 ítems), `dev` (129), `ente`, `etc`, `lib`, +`lost+found`—, con su barra lateral de Recientes/Carpeta personal/Papelera. + +Entró creyendo que era casi gratis, porque `cosmic-term` **ya compila cosmic-files como crate**. No +lo era, y el motivo cabe en una línea del `Cargo.toml` del vecino: `cosmic-term` lo declara con +`default-features = false`. **Lo que un paquete cuesta depende de con qué features lo pide quien lo +usa**, así que «ya se compiló» puede ser falso. + +**Se apagaron dos features por defecto, y las dos por una razón medida:** + +- **`gvfs`** trae los crates `gio`/`glib`, y el enlace final pide las glib **compartidas** + (`unable to find dynamic system library 'gio-2.0'`, y detrás gobject, glib, ffi, pcre2, z). El + corpus las empaqueta **sólo estáticas**: haría falta una cadena `-shared` entera, que es una + campaña aparte y mete una segunda glib en la imagen. Se pierden los **montajes remotos** (SFTP, + MTP), no la navegación local. ⚠ Y por eso tampoco se construye `cosmic-files-applet`: su + `Cargo.toml` fija `gvfs` a mano, así que apagarla en el paquete raíz no lo alcanza. +- **`wgpu`** desbordó el filesystem: `No space left on device` creando un temp dir en `/src/target`, + **dos veces**, con wgpu+naga+ash+glow+spirv a `codegen-units=1`. Sin él el árbol de build queda en + ~2 GB. No se pierde nada: todos los demás clientes de la suite pintan con tiny-skia y la imagen no + tiene GPU. + +**El intento con `glib` declarado dejó una regla que vale para toda la cola:** el error fue +`Package 'libpcre2-8', required by 'glib-2.0', not found` — o sea que **el que falla no es la dep +sino lo que su `.pc` declara en `Requires`**. Declarar una dep trae su artefacto, no su clausura de +pkg-config. Se lee en dos segundos con `grep ^Requires` sobre los `.pc` del artefacto, ANTES de +gastar el build: `glib-2.0.pc → libpcre2-8`, `gobject-2.0.pc → libffi`, `gio-2.0.pc → zlib`. + ### ⏱ El panel tiene un DEADLINE de arranque: con 4 vCPU sale mutilado Medido: con `-smp 4` el panel arranca **sin ala izquierda, sin reloj y sin dock** —sólo la bandeja @@ -597,9 +628,10 @@ El número de procesos no distingue «arrancó» de «dibujó». El framebuffer ## Lo que falta, en orden -1. **Más aplicaciones.** `cosmic-term` ya está y es la única. `cosmic-files` **ya se compila entero** - como dep de la terminal, así que empaquetarlo como aplicación es casi gratis; después - `cosmic-settings` y `cosmic-edit`. +1. **Más aplicaciones**: `cosmic-settings` (el panel de control) y `cosmic-edit`. +2. **La cadena glib COMPARTIDA** (`glib` + `pcre2` + `libffi` + `zlib` con `.so`), que destrabaría + `gvfs` en cosmic-files y su applet del panel. Es una campaña propia y hay que decidir antes si la + imagen puede tener una sola glib. 2. `xdg-desktop-portal-cosmic` — sin él no hay captura de pantalla, ni file-chooser, ni compartir. 3. `cosmic-settings` (el panel de control) y `cosmic-files`: la suite tiene aplicaciones y el catálogo todavía no. diff --git a/docs/state/build-state-cosmic.json b/docs/state/build-state-cosmic.json index c49ceacf..650d856e 100644 --- a/docs/state/build-state-cosmic.json +++ b/docs/state/build-state-cosmic.json @@ -3,8 +3,8 @@ "totals": { "recipes": 802, "nodes": 802, - "sealed": 799, - "never": 3 + "sealed": 800, + "never": 2 }, "by_class": { "c": 160, @@ -14,8 +14,7 @@ "rust": 243 }, "debt_by_class": { - "c": 2, - "rust": 1 + "c": 2 }, "by_queue": { "corpus": { @@ -23,8 +22,7 @@ "never": 2 }, "incoming-cosmic": { - "sealed": 31, - "never": 1 + "sealed": 32 } }, "by_profile": { @@ -39,9 +37,9 @@ "sealed": 74 }, "escritorio-cosmic": { - "raices": 21, - "clausura": 69, - "sealed": 69 + "raices": 22, + "clausura": 70, + "sealed": 70 }, "escritorio-mirada": { "raices": 14, @@ -49,7 +47,7 @@ "sealed": 31 } }, - "sin_perfil": 650, + "sin_perfil": 649, "orphan_deps": [], "topo_ok": true, "nodes": { @@ -2453,10 +2451,12 @@ "cls": "rust", "queue": "incoming-cosmic", "hash": "b3:48d2b072f96cf45f0287b347c208d22d877eb52d388f72916bbded9e4fb69166", - "state": "never", + "state": "sealed", "blocked_by": [], "unblocks": 0, - "perfiles": [], + "perfiles": [ + "escritorio-cosmic" + ], "dependientes_total": 0 }, "cosmic-icons": { @@ -8162,7 +8162,7 @@ "hash": "b3:5ac3a6a211364c8dd3c5d75c840493caf5fc2df169d49727f61fb5c3e8d5d738", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "escritorio-cosmic", "escritorio-gnome", @@ -8388,7 +8388,7 @@ "hash": "b3:6d26d5f414d83c0cf72864467f3fdba6357e9a60bb79cbdf9202e1d6456abdd7", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", @@ -8472,7 +8472,7 @@ "hash": "b3:14d29058553e8b2a93ade023ecf80815749117d66d183ced6605d701675aeda1", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "escritorio-cosmic", "escritorio-gnome", @@ -10658,7 +10658,7 @@ "hash": "b3:f0b5d0b1cb4321b3c61f24a871b9a58da3ebb7eb903af4015e35bd41a6465437", "state": "sealed", "blocked_by": [], - "unblocks": 1, + "unblocks": 0, "perfiles": [ "base", "cli", diff --git a/docs/state/targets.toml b/docs/state/targets.toml index d00d94d6..bb273634 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -110,6 +110,9 @@ paquetes = [ # La primera APLICACIÓN con ventana del catálogo, y la primera entrada de la biblioteca que no es # `NoDisplay`. Hasta acá el perfil listaba escritorio; desde acá lista también lo que se abre. "cosmic-term", + # La segunda: el gestor de ficheros. Sin `gvfs` (no hay glib compartida) ⇒ navegación local sí, + # montajes remotos no. + "cosmic-files", # Datos, no binarios: el tema de iconos (y el hicolor del que hereda), las tablas de xkb y una # tipografía. Ninguno es dep de build de nadie y sin ellos el escritorio arranca roto — sin puntero, # sin teclado o con tofu. diff --git a/recipes/incoming-cosmic/cosmic-files.toml b/recipes/incoming-cosmic/cosmic-files.toml new file mode 100644 index 00000000..1132846a --- /dev/null +++ b/recipes/incoming-cosmic/cosmic-files.toml @@ -0,0 +1,94 @@ +# cosmic-files — el gestor de ficheros. Segunda aplicación con ventana del catálogo, y la más barata +# de todas: **su código ya se compiló entero** cuando entró `cosmic-term`, que lo usa como CRATE (el +# selector de ficheros y el arrastrar-y-soltar). Acá sólo se lo construye como PROGRAMA. +# +# ── PERO NO ES GRATIS DEL TODO, Y LA DIFERENCIA ES UNA LÍNEA DE `cosmic-term` ─────────────────── +# `cosmic-term` lo declara con `default-features = false`. Sus features por defecto incluyen +# **`gvfs`**, que trae los crates `gio`/`glib` — bindings a la **glib de C** por pkg-config. O sea que +# el gestor de ficheros como APLICACIÓN cuesta más que como librería, por una línea del Cargo.toml +# del vecino: *lo que un paquete cuesta depende de con qué features lo pide quien lo usa*, y +# «ya se compiló» puede ser falso. +# +# ── `gvfs` APAGADA, Y POR QUÉ NO SE PUDO DEJAR ────────────────────────────────────────────────── +# Con `gvfs` el enlace final pide las glib **COMPARTIDAS**: +# error: unable to find dynamic system library 'gio-2.0' +# …y detrás: gobject-2.0, glib-2.0, ffi, pcre2-8, z +# El corpus las empaqueta **sólo estáticas**, así que haría falta una cadena `-shared` entera (glib + +# pcre2 + libffi + zlib), que es una campaña aparte y mete una segunda glib en la imagen — justo lo +# que la campaña GNOME midió y evitó. Se apaga `gvfs`: **se pierden los montajes remotos/de red** +# (SFTP, MTP, trash sobre gvfs), no la navegación local, que es lo que esta imagen tiene. +# +# ⚠ Y por eso **NO se construye `cosmic-files-applet`**: su `Cargo.toml` fija `features = [… "gvfs" …]` +# a mano, así que apagarla en el paquete raíz no lo alcanza. Es un applet del panel, no el gestor; +# queda como deuda junto con la cadena glib compartida. +# +# `bzip2` 0.6 NO trae C: resuelve a `libbz2-rs-sys`, que es Rust puro. Se comprobó en el `Cargo.lock` +# (`bzip2-sys` no aparece) antes de agregar una dep que no hacía falta. +name = "cosmic-files" +version = "1.5.0" + +[source] +tarball = "https://github.com/pop-os/cosmic-files/archive/epoch-1.5.0/cosmic-files-epoch-1.5.0.tar.gz" +sha256 = "da8567bcd0a15ca6522a8800ec800701f8e994ef5da52513b3afdf95370e3bf1" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "dynamic" + +[build.phases] +# Fase compile CUSTOM: hay que elegir features a mano (`--no-default-features`), que la fase que +# autogenera el lab no permite. Se construye SÓLO el paquete raíz —no `--workspace`— porque el otro +# miembro es el applet, que exige gvfs. +# +# La lista es la `default` de upstream MENOS `gvfs` (ver arriba) y MENOS **`wgpu`**. Lo de wgpu no es +# una preferencia estética: con él el árbol de build (wgpu + naga + ash + glow + spirv, todo a +# `codegen-units=1`) desbordó el filesystem —`No space left on device` creando un temp dir en +# `/src/target`— dos veces. Y no se pierde nada real: **todo el resto de los clientes que sellamos +# pinta con tiny-skia** porque su libcosmic entra sin esa feature, y la imagen no tiene GPU (mesa es +# llvmpipe por software), así que el backend wgpu se caería a software de todos modos. +# +# `INSTALL_DIR` y `APPID` los exporta el justfile de upstream y los lee el `build.rs` (crate `xdgen`) +# para generar el `.desktop` y el `.metainfo.xml` en `target/xdgen/`. Sin ellos el `.desktop` sale +# con rutas equivocadas — y ese fichero es justamente lo que hace que la aplicación aparezca en la +# biblioteca. +compile = ''' +printf '%s\n' '#!/bin/sh' 'for a do' 'case "$a" in --target=*) a=--target=x86_64-linux-musl ;; esac' 'set -- "$@" "$a"' 'shift' 'done' 'exec zig cc -mcpu=baseline "$@"' > "$PWD/.hammer-zig-cc" +chmod +x "$PWD/.hammer-zig-cc" +RF="-C linker=$PWD/.hammer-zig-cc -C target-feature=-crt-static" +rustc -vV | grep -q 'host: .*-alpine-' || RF="$RF -C link-self-contained=no" +export INSTALL_DIR=/usr/share APPID=com.system76.CosmicFiles +CC="$PWD/.hammer-zig-cc" RUSTFLAGS="$RF" cargo build --release --locked --offline \ + -p cosmic-files --no-default-features \ + --features bzip2,dbus-config,desktop,io-uring,lzma-rust2,notify,wayland +''' +install = ''' +mkdir -p /out/usr/bin /out/usr/share/applications /out/usr/share/metainfo +cp target/release/cosmic-files /out/usr/bin/cosmic-files +chmod 755 /out/usr/bin/cosmic-files +cp target/xdgen/com.system76.CosmicFiles.desktop /out/usr/share/applications/ 2>/dev/null || true +cp target/xdgen/com.system76.CosmicFiles.metainfo.xml /out/usr/share/metainfo/ 2>/dev/null || true +for size in res/icons/hicolor/*; do + [ -d "$size" ] || continue + s=$(basename "$size") + if [ -f "$size/apps/com.system76.CosmicFiles.svg" ]; then + mkdir -p "/out/usr/share/icons/hicolor/$s/apps" + cp "$size/apps/com.system76.CosmicFiles.svg" "/out/usr/share/icons/hicolor/$s/apps/" + fi +done +''' + +[deps] +# El juego fijo de todo cliente, más la cadena de `gvfs` (crates `gio`/`glib` → pkg-config sobre +# `gio-2.0`/`glib-2.0`). `notify-rust` e `io-uring` no suman C: zbus y syscalls directas. +# +# Sin `gvfs` no hay glib: queda el juego fijo de todo cliente de la suite. `notify-rust`, `io-uring`, +# `bzip2` y `lzma-rust2` no suman C (zbus, syscalls directas y backends en Rust). +# +# Queda anotado el intento anterior, que costó dos builds y vale como regla: cuando SÍ se declaró +# `glib`, el error fue «Package 'libpcre2-8', required by 'glib-2.0', not found» — o sea que el que +# falla no es la dep sino **lo que su `.pc` declara en `Requires`**. Declarar una dep trae su +# artefacto, no su clausura de pkg-config. Se lee de una con `grep ^Requires` sobre los `.pc` del +# artefacto, antes de gastar el build: `glib-2.0.pc → libpcre2-8`, `gobject-2.0.pc → libffi`, +# `gio-2.0.pc → zlib`. +build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput"] diff --git a/scripts/cosmic/hydrate-cosmic.sh b/scripts/cosmic/hydrate-cosmic.sh index 73807ed5..00c3dfb7 100755 --- a/scripts/cosmic/hydrate-cosmic.sh +++ b/scripts/cosmic/hydrate-cosmic.sh @@ -59,6 +59,8 @@ else # alcanzable «desde el escritorio»: su `.desktop` no es `NoDisplay`, así que aparece en la # biblioteca. Sigue siendo raíz a mano porque nadie la declara como dep de nada. recipes/incoming-cosmic/cosmic-term.toml + # …y el gestor de ficheros, la segunda. Su `.desktop` tampoco es `NoDisplay`. + recipes/incoming-cosmic/cosmic-files.toml recipes/incoming-cosmic/cosmic-app-library.toml recipes/incoming-cosmic/cosmic-workspaces-epoch.toml # Ni binario ni librería: DATOS. El tema de iconos de COSMIC — sin él el escritorio no se ve