#!/usr/bin/perl use lib qw(../perl-install); use common; use lang; use Getopt::Long; GetOptions(u => \ (my $un_build)) or die ''; my $prefix = $ARGV[0] || `make get_dest_livetree`; sub create_light_tree { my ($livetree_prefix, $live_name, $list) = @_; my $light_prefix = $prefix . '_' . $live_name; -e $light_prefix and die "you can't make_live_tree_boot since one already exists Maybe you should remove it first with 'make_live_tree_boot -u'\n"; foreach my $f (@$list) { my $dest = "$light_prefix$f"; my $orig = "$livetree_prefix$f"; mkdir_p(dirname($dest)); if (-l $orig) { symlink readlink($orig), $dest; } else { my $link = $orig; $link =~ s|^$livetree_prefix|/image_$live_name|; rename $orig, $dest or die "moving $orig to $dest failed: $!\n"; symlink $link, $orig or die "symlinking from $dest to $orig failed: $!\n"; } } } sub create_totem_links { my ($live_name, $list) = @_; my $light_prefix = $prefix . '_' . $live_name; #- creating all the dirs, even when things are in the "always" tree foreach my $f (@$list) { my $dest = "$light_prefix$f"; my $orig = "$prefix$f"; mkdir_p(dirname($dest)) if ! (-e $dest || -l $dest); if (-l $orig) { symlink readlink($orig), $dest; } } foreach my $dir (chomp_(`cd $light_prefix ; find usr -type d`)) { foreach my $f (all("$prefix/$dir")) { my $link; my $fl = $f; while (my $l = readlink("$prefix/$dir/$fl")) { if ($l =~ /^\w/) { $fl = $l; next; } elsif ($l =~ m!^/!) { $link = $l; } last; } $link ||= "/image/$dir/$fl"; symlink $link, "$light_prefix/$dir/$f"; } } } sub remove_light_tree { my ($live_name, $list) = @_; my $light_prefix = $prefix . '_' . $live_name; -d $light_prefix or return; foreach my $f (@$list) { my $dest = "$prefix$f"; my $orig = "$light_prefix$f"; if (-l $orig) { unlink $orig; } elsif (-e $orig) { if (-e $dest && -s $dest != -s $orig) { warn "ERROR: $dest already exist, skipping\n"; } elsif (!-d $dest || -l $dest) { unlink $dest or die "removing $dest failed: $!\n"; rename $orig, $dest or die "moving $orig to $dest failed: $!\n"; } } } rmdir($_) foreach reverse(chomp_(`find $light_prefix -type d`)); if (-e $light_prefix) { unlink($_) foreach chomp_(`find $light_prefix -type l`); foreach my $orig (chomp_(`find $light_prefix -type f`)) { my $dest = $orig; $dest =~ s|^$light_prefix|$prefix|; if (my $orig2 = readlink($dest)) { $orig2 =~ s!/image_$live_name/!$light_prefix/! or next; $orig2 eq $orig or next; } else { next if -e $dest && -s $dest != -s $orig; } unlink $dest or die "removing $dest failed: $!\n"; rename $orig, $dest or die "moving $orig to $dest failed: $!\n"; } system("rm -rf $light_prefix/usr/bin/stage2/*.pm"); system("rm -rf $light_prefix/usr/lib/libDrakX/*.pm"); system("rm -rf $light_prefix/usr/share/langs/*.png"); rmdir($_) foreach reverse(chomp_(`find $light_prefix -type d`)); } if (-e $light_prefix) { print "still there:\n"; system('find', $light_prefix); } } my @i18n = map { if_(/i18n_(.*)\.list$/, $1) } all('data'); my @clps = ('always', 'boot', 'totem', 'nvidia', map { "i18n_$_" } @i18n); my %lists = map { $_ => [ chomp_(cat_("data/$_.list")) ]; } @clps, 'always_i18n'; my %i18n_to_locales = do { my %useful = map { lang::l2locale($_) => 1 } lang::list_langs(); map_each { if (my ($i18n) = $::a =~ /i18n_(.*)/) { $i18n => [ map { if_(m!^/usr/share/locale/([^/]*)! && $useful{$1}, $1) } @$::b ]; } else { (); } } %lists; }; $lists{always_simpl} = [ uniq(@{$lists{always}}, intersection($lists{boot}, $lists{totem})) ]; $lists{boot_simpl} = [ difference2($lists{boot}, $lists{always_simpl}) ]; $lists{totem_simpl} = [ difference2($lists{totem}, $lists{always_simpl}) ]; foreach (@clps, map { "always_i18n_$_" } @i18n) { remove_light_tree($_, $lists{$_ . '_simpl'} || $lists{$_} || []); } if (!$un_build) { foreach my $i18n (@i18n) { $lists{"always_i18n_$i18n"} = [ map { my $pattern = $_; my @l = map { (my $f = $pattern) =~ s/__LANG__/$_/; if (readlink("$prefix$f") =~ m!^[^/]!) { system('cp', "$prefix$f", "$prefix$f-"); rename "$prefix$f-", "$prefix$f"; $f; } elsif (-e "$prefix$f") { $f; } else { (); } } $i18n, @{$i18n_to_locales{$i18n}}; } @{$lists{always_i18n}} ]; } foreach my $i18n (@i18n) { create_light_tree($prefix, "always_i18n_$i18n", $lists{"always_i18n_$i18n"}); } foreach (@clps) { my $list = $lists{$_ . '_simpl'} || $lists{$_}; next if $_ eq 'nvidia' && ! -e "$prefix$list->[0]"; create_light_tree($prefix, $_, $list); } create_totem_links('totem', $lists{totem}); } ^`:63zͩO>5Pnh='Ժ5wOFlTǜG'.^@y{FlNmSi!D'_\S DBxRlF? gUчW&x-dA<9Y%g*PZPǦ)NyԙF |60c^薶gQ&- BHbM9" ^͂vjLCО,v! Vp޲`e ߜPgv1ĤBAo{Wöт"eX&OJTk>[~:br r鍗g1env{uի}rNZRh:\aK m\vi90[9d0ƴ5(7"$ yt)- $T]䜦)цo4t/9t$#ܿt Z漁w5w7isy:LX׵s(*P "ukp&P)WQpg Yg];$ݾ *#f]Ҹ8g"@s~*:>  NG{zZXΊ򈩵s6H Hk씔bmҫ{+$5/4d?$WP?GFWgq (ӲUofH{Ň+WO[tRG+OX9S ԋ1XI̮+E\(9edCsta5F|iHH0m/zh*qJ^rs':|I\;D5٦~osT16&)'}68f +cPD;؋9q.*B[֥qEؠ00KT' |礝"im:ɲp,7)gDbԉzYS}6` Q0zBf6.uV-}F=:12d~tӭ;OAz@ 0BI $ 6Ztf2ʸOO mB pGGΣYS9{bmQm,Ҡ Bb RaE)JneݑG%iN+v%?r#Uxc敕Jztz\8.WM)lx -7a,^-vҦ?`bgEM|E_:NJ\O2VZlNk1 ^(:|OYdtUM[dۡrtERex6 z+VoKyK[%e>tQ1j>ІL0s#ˁ)FBgu9Z܄dϳJۣD86MަH*x0&ftHw<>SJ[ACvL9fvO v;9(/NIWՔ#Qwp\wKN` CW ֯_&eggr9ZWn$s:і֌E"7 n|x;3(F*r xΩSfj`8a龃EPa~0r[6 D@W5AU>@ cG*  $&Z%| OWvd9y5&=jٹo5q|XLYOI-t>1_lК[*FqXCxΉ\W|_+ESB"gL7MrSY2"Bo8& z@ĜԮA{SwL Io~C%E+|zyG5E O-hK7Pŗ2OQC7ET#dZmZ"<*x_*?i{i[sIa`AoW.ҙ>1uv>d\/!?ÜlNp2 nɧ[Xld2zMNBn@MtyRN8*셫 ?@l_Y%fvGD-hIS+bSRORW{;]#G0Pܜ'&0W3 ^Xy,erY5vlkZ׺2*2;LazMnXJ _ DVv+ ߧ`fFS6-:]<7_G6H̥ {p .87R3GA%B}\ XO) 1'dh頽d`ԝЬ铪v2)OT:q [i [BB*}*?F1m8c0 jo3ey_idºŀC2b#k+Ry&"K2|WQ~M`<"<%6t8*j]?RfÍ=0g GNO;X=Ƽ/ 4"]\*+`^<{tEBo}hijn\Kdtb?X{fN?gMחrƒjnw*UtݷT8RscWY Ό!ڈ&lvEQźRn(L_CGeQeS!P*gz9L2wɞuqAeP;ݍЪQF/`r#7]X!bQ&WCDą&dޯ>GwtCMӆBs3WEsR¦Xwl(uxn8guzSvO p#˲jFU*lˆ J (QB0a2?vU`>LnKLZwڂIX=mC;Ckb.Y,_y }|4 oϸFzZqk6iueDFRSr&J$5lxǎK(vA~d'_t'u7vvG$ZKXf )mI'5WPh*/!͓ST%;y? ,kMO"!8lXpCK/j  O.Ld^\ v*AIVp,e&~/1_ pfVRIzzj"݈ciBihiZR])ա_woǙj\p@ \b`] q{9oD6 .zi$ paI[9('P*l[2!w"b #DGM:0.C|JkaEgyBKp9 @z8UJ SX]pȤSmATaR`$hr.㋀Ms~Yl`(΢P9SIGϺ ;.ad0KMqpt G26z9HU6n?vuf$zyD!}Pa=IΙ"ɕtkh$@8~S*tOLB<};4*564BGk.HHj39?SY7t>AtgkuGʩl 6%;/hcߍq[[H/D@:H\s`mQ24/S+tql耯yÁQ;Pp#6%%y1 Q9U [MJ{8S-UȽ$紣W[ FX+BlGgh-zgӀOs˯s` |A8Eh/g.TaHCE{znG&S"XOSsHQ0R +˧ŸӇІ)ӝ*+3g.^ɭ1AzWDdQKegzұOAx%Ug #1eR"egXaEsOEѦEdGʹzĄ*җar]<: NyWwW`/Iiqꊼ^+$ε$^=QofzXt|j鰢{RƘIC;TGH6140ӁPҍo}o8j\$Eb3FWYI+|#N$aR4w]yَjrxq>%d~]zư IOM~[7'!L%4GK,9 et "N(/N3Z<b 47ak=kF'Nok],Rs-4W֍5qˋg ʖƥ>0G;UhhFA#cA"Ed^- qeA劃Ih;P"")Ѳ+ u>u9ܜq5O| M''l<9"0-2Ӻ'- za|ZI٠Pͬe0?&fņPטiޔ4/e>v k)4GgμFfhXbAv7eln o75c_%, 1RC%5|3A,ʯ(2*+74UcK)C0gGIʸjm͏HanKn+?bA#i GwEƲSNu {6|gdo,j"Uw"Ҽ TȬysAK&a O3v[|7R(K)J7 턊75 ^d)XRIqh!Rz%`30Yg+[`dPV9[%S?D+1=#Tbߋ]`C;F}ZtW_ tc6BtkŧXX3Kvw)mo V~A$<54m=Ɯ!xmC ˿Q+QH'yE󡓡|"ӡuuT-${: &)#;e[ L  ?yFIAm}^C? >ɞhUw\UFh Xצ[}3K{Z~r~C?o A-3Kp2J6{'o@(yXZ 2DujpH}U *Ϭ:xmIqC!.w0} 9FT~}t[nh53A!Hm9L J1)mWXlKr8Mdag ;X6r#OZ}X*Hz# m^7;CY!M>(8e|ɮ dn`IOT"]_o4w6Nގ^vUFE LA"4 + }A;K5.ݗ+áM] RGwol7(С\%tf>|QشTz&0}/m(z qd>&HlzoÎ<705YWXqG>EIv5-[Ws*I/XWٜ^:, 3eWFz5핸@7eȆ*zfdτ0mr^Z%~0zH<6rs2cVkP-pLDrXGuأ;{J&Z̠l@tOTφpH S)ZTnW=OG2߬dnE&#I蒆35J&8 `P4͗|TMdlS6Y;MjCK]f5!蒅Y,L󶑎M+͆PYߓ#D5+'} > %aFC&s)qWsjl%/#UIȴ_U%uض1[󷝯g] o1pg^١ ?]1QL4]F%أIa74XL0e Y7 Č>џsSYp/|エ4eѻk>ŗ&ՏJp8<|ՋTr\Z 'WWR@*!~M˫BX6 Dbձx+]'yiAZOS}69Ë?aotoH13zUJ xznEs,kȲx^ 6y6Tm|, Xl11uۻfr9jkvu=uۡa>3Grw¨UʟW :$Q+ֵ:;2ԴȰ; oP4 !Y VZ}ze°T/:m!rՊM?ޙ'*=%>5BS0nTWe٠Nf4LM*Ek,gj 1k#Zbwcn){#"lDihܤKbm C:j+-sF :SS"z?Jjd5|mqo'nfM aZ7lGs`pڵg uO'%>Ja%浼}$ ; y2F @ӂ^@k~ۯ۱BP | !a F1V/­"!Vm%1<AᅇT%5̽؞}~1D 8OÞeĀPe.4aZh<1{j2&բ}SAZ~#)Ai"R*BFUQ7?/3ЄByoOI[3(<}VM ]ώ:cjoC< aC9#<ڗ=DVaF ˜ ڝP{&A`B;xK #ZRոoh7g|9}-'pWI2( p>6UZj ˂;tMKbN'ˈs_ #R|e;ɛ|GYYa?qakWDž8HիxDEʠDqAK,ftb7DI`~k(Q6mLN M-okRk[ G,iEX_*͵X,-; $ߗ .c>v9AVCir\ v6*疄M@Mqۜ7jbj;'' mct/t"{7UFR_sq.Ie3_ęF@A2I4Kr8ᇚIDX sv䗈 PPu~)T>z@=q~ǣ| \j &}~tPxa_fWhτuLjy^LO$35P"0E*-S7tyzƜ2#(5TҼL#)'GeA*ÊVemFAFfKzeQ$w]'go<ʜg eYUbL6zz(l9T3O֙vU>xPX!pyfjR>S%B6e6-\T(W`,7GJV< $6Y(H$CeŹEyߒ*= ex:RDqk 1;S_,U/PCCZ`.hBQajw>>YǍN-KҠ6$A:{B.ms-?7/}mQ.r]UK\0kw<ͣv&}wgZL]yLWOΊk3'ͥN\ZD8Xf$!)k~h‘^JzF/Լʠ$&i:O-UF!e=^)>ݡ#+~k I){I3A&h[]}Z˗#֓rHLzT!pF S47(L)+dhP~!Q6l~D/cܓtOAs!%/sJ;?Ȱ7ؓ%zOiQd OhZoF3Ba[C nRh~gSVZp}(JTI\5<$LnZ65ϡ~$ڇ LW*# ;71i }4>8X]R~$r~F0EAa[8l$s#H“ x#Z#LA8/u]69+ǢJU %=IZob7 +'{-ֈdu ߜ b9]'컶 "fc m|޻p_NY I0IZ?pp#BX*G0ʹ m̃|0 CVUr)WxZI,V0Ƚ`ê kx<Ϭ!k{07/2(3W!oL2M:18Οvq>-sQ-BE">VC-(TDUP_L>a:84!&XmfW{yǓ=PUlF[s%cEQ `i_ YeU)v&՟S=t2}2A_a/;Y#Zs:&Co]Il)7nۛW|=E~e<<dAlZ-ۀJ K+3hz$¦U^ƙgG}?itbW\QDZ>Σ6׾.c9\ :Q:8 aZz\sQhT9m&42DO ߸,e+5%oj!JE1?V3t'[xx9\AxmB0v~CDLy."-bW%/V3!k Bv+aNvQ{Mn9 zdt٩WƦS27u/EЬa$&M7pMqL OW'q(O8-Z"Va)`{7Dn#q8RP^MN?~NMuaUI)sk, n B1$+>ZӉ{,E/$01sS%5}*۴7nnaĸI世A~HtXTPP" 3h7ء[7Ҷ3̺WgsW"KMDsF}lam0r~[\YVWNU?>8^S_X: Hȑ1Ŝ+x< P\9+g6N$ó2+˵!YXRmiAy&gX1_Xc_!X_ "R6n1#3k- WH6Htto]\+t Fv#p'|;";Ej%ɪP,f'p1/m3EKX /z lɐyCP0"siBT7>PG}dܔ!qiϛ܏ WTYU% agju2 ^A;k{?*ZJhu`te+aepFcݰq`p)wNpV `v$O~1h@ĒdjGY&VΫD}9Z?g ?֍*Q}j*kYfvv\aa!Se dQW/8)F3PM ƹ.He1[NP%z)`sQ*44tbST$-FFI!Z鶚9KP9uOy%gSu(Ϥ<m|ҩ ~N1hWNm'qfhNx7l SfPj{b<.0JRizՅgK NplPL^?R@-S'PyP-beTZ4^AnմuM^U\Jح6M|[ My?ԍpW5fzjZ&Yؾv ,4E/C㒰8[{u?"D KWGG7h RfJ +tp9nYWA6]䏙Mj a$-hΪRG #FTXrSLB}%+Fuf e4fȓVqMb7\;͕ĨDӱ Hl.C ߊFoFsq$>[GJ`xx)8cߵ;~3W $Љ@cX 4S~7,{bݱqկ~jnȅ{ RW[8~f2SaFF?y/dr>`Wꫡ@`u(}Jsx=>sM52+l])ucgK+=\ Qϑ8x]+:{k1$}s إ)dϿBS";2l9+c~wtIggP S5 ).L.o.LhOF|3 ϟ𦵜s!S 6)JMK.n3a|r e>is9oe}@UJy]Mh}aPU;QA A=:QFlr(RLN׏6 ^[`$`%uD-u1mRu??9t<}[]ekf:${[[HWeUS1 =*F|v6a*)S)ٍX Nԡ5",n."`nC# )]vV 2G\um .vc8RciP0}\qmoP{ߏ3 evkśeA&И=?Ob{y#kr6?ek14+͗%ͅRE1Zt]Ss2O7R`~yF19o^yc*Y%YT%xz ]*m ,i QJSN0:`R:\>7X'RV0P{ᜤ ovH1`}^&nYu+4pB蚦ArJe5DxT;~x%?=Sh CvoA\;6슝 -;!_ BI Kx9]M2>"s ?Ow ^v:鰤< r7/UQIM:jJ0pw95DJo٨Jj;˛M{!d9 0i'OLoݷ bRyc$`IglS<ф^,HPZlj1nZMXl)7B.35w!jR2) rbhiL՚a)t5D <{{9߱>&1 (uu])].k W[xb\y S0;;&e#;E$C@yrȢ!x&~<6KX+n81HnO"x #YAQ"3L C_HԸ5#ﴂwpA턜B$)A3( zΎ^#20{8(M3 9 Nb5d'P'lfV7ݣX+Q!5GʆF&jY'6Ac8}HǦ/w&M]%i Ui6y8˃Ra{w0@F$z_lH]Jb[]K~'JY &skM]JyWF89 0!B,+W;/׀;XF3FKnY6phL8]YCiQ呯=f% u|.E{eM XQ(oaPXԯ33)`E$|8r:3ű/W%K4"}N;!S9Qr 77&Q~朚@?QأjVD WM<& 㟽8NM1hβX E.pSUHNШX  a"MZ _EG[/\/⫌H'$f[ %E!|tE_,) 8T)38$O]Z k+*m.z43:Y-V ͏XPSܡ6fd#iXh0]z@m36&xlN U ,a쑰d7?NfO#|r=Z,;"oR4NC^wJiJYo>SE{%j$(NO* oW,,Ŀ EMצp&:oK>7>`T'NjHvYg P7~Aôd/uDMvN3/CG+yBOC[5r?;1w fE"`PPyDJiP/#-QՑQ_CfX ΀"gsUp;9@Wfcs]0a5 ɨߧm_xdV(Th )kz4j۽(<N\UT}GIJW~+e5`E ! OcV=3TuӹkK/[XG }е0;50끻[*| Kd=BV3.NsXŰ.3\ $x~_<$>^-<6N)ē|NAJb> 9 Rqʔ2v20Mzjݻ(kɇ[{Whh}<7\42{ʢ$,C\5v5@lӎx2Q3 M>Yn_̥g]?ّ%tCu*04N340gWp/EV|Rbb *4֥ =k0JC:;z+?~=3OWy( Kƥ(^LE6"DuB۱qs\*^/l̰%¥ɬI!$mԇd:.箐hNo=m}A\2`%_JK3Nh|]n5\sԨ}gޝe0᭶Wsc؎5OSEZ/Ϡ:9-5OItpwJZݒ̆prLv(#.ѨWX4p 7SP plA[_gga1y͖ց  |E`:c~h4D~sS`0̡m:I&X P(pd"f\_Ng~LxFUմe1k WeJ:12gK:3H ]_}/uR#wF]l,5h Gšc9Uh:rx-t9*[DbTԶ_tw%Ѓl9xasal=l=z "_#ʙgVx5^B^4}hE;^FΚ a#oH3p΃@k{QdrKO㛁d'x_ҍ@EË̓C*[Gu*8Xhq!/I39&gGA0kB|yKhN\-#vjہ|"o6a<lw>RfTlVE3K $fdYR \_Q혎QC]ĬyM/G I]G:!@?ª@4cxMȀϛD{Q` udiP!? 77%g'c}78tZr՗Bٛ7 Q+Qw_4.tDE}sn#οzt)NM\v*,Ư"%~Nf(oyJg/f oe~^\aGO-IemOS6{q<+.#u% P}bn uDUR$N=< @"K7R \QQ~La:l9筛V;8}e#W~ŧ8>K:e4 zS=2RY,9xvjaͳ2-k4 t{c =V.WGbDW P.6.A==kk?Emk!K\~Îf$ OF斚yNR i2sDGSG2nrBzcFWZa&1~DtKs70Ɉ%t`m՘ jOZ¼5궂]T mҶ8tk˞qG]m:m*ч'd~bP F{ޠPڐx5GWw>t{ԙ?v8fMtlV#N%8$҇'LIe9u_qDXp}"4撸 Y :<|pT9_RRM;DpcAꊓW#8~y$t7 )Gw@pBSaċŒk!O!)(9̐0:L~e +Yd|8YڎЇP.;*OR<0(l.ЏBf./DP.)+ ESz528KD{80aN6v|6¬}䕚DQ'SQ8eI5c7yn'a.x4d (mv`raP5G8,Gdٙ!Gl''_ˈZk(N3ގ% F!*W(L+CA OV%GPTA}MTD3p* owL~DOpF"SE1J.ʇ9aHTè eN| z.dWpڪ vj5'Q- M! I 3PzdPdʋ$a<#胅fErܭ/ur&q؃)@~f(}L]Qs߁Ycv bo5 *qO }bT n/F#2?[f}1f%.DWG0IC; <bzefK̾娼v"(w^/$V#l952LSL1% cI^,~l:YH8L#%VTbm^vGx:IoI;;A<5`N/^c:3}RZU3qYUJ{CTUkTq(:MF;TFD\zaoC@hM{ R;er;AQ:B*<>RKhaoikIaV;/?vxvKlMۊ[đꛓx aRܨkwͲ}ögQ2 (贒!?@ós- 4%uy<THwu\W8+JId N+A)@W+]d/.ʾj%qxnL9QuBN M9D rަ+q;oQ*;뀓 B%@OI-@M\ %m|E]9itdɷE#_‹Z 2uKqW[^zz$CNp3ꓮάA.C_ʼFzvE! X f9[GAMˆZp4575W%xA^HӤ'@W&#xXpX ]%(8'yA5H0#rTSI D McZ|n,+ՉR8[FwG9ar;cklM蝎K)m_Y"38{@H:gAY ٦]Qv~/-Yw!h 삭OLL}Z.>{ sĐF{VxA4s q /6p x0e{jF 8E=RTsًj>H! _͌Y~N܀(tlE+8yj[cԿ&dm;s;uoq/F'*j5im=8;.Р/.;X"TRү{+X̶,Cic{΄( =imN9|ST+K}7wY((Bw|HiLewܣV5)dn~; #{]忊=aIGZ5AyL#B펠(ZzHÎKxܱSY?gxÌQx>+_7j[ ,^?O}yg Łmk,r!i0TO$}g”P" rad#Z,{οAj@eÅu+e7%.bI[3JSTv;ldl=2z+l١B.z)BbgU"^ޖgX#9.Ql xVOdR8K'ԁ{z3 M4 a F;5mJH֖%T:Q+SO IJڒ0ȆQ'm2ܙ$V.l{7Qc0ʑqߐ 6E$G,龟GUAHH}Qfm, (G.90PX!,3bAS{vE3 8 [Uqͨ1mb+-|e~>~9Cj?kC $²DƲw2 }eq3O}19Tv+7_]q͑<ڪ 7Oal=Vw91Y~p?vgI22ўs JW!0P_yG"BѠk4Y0FR+?%k% ̤9F3V%Ъ$W%܈3Cx@{54(p-8o <愙{D4'I1Lݞs_*qCÕ2:$ó|.H"('h0]ZnDQK^%I%xi\f!#7'܆Y'oܧDV>{vSr9ΪjԚ %knO \&0`K/ѝD*DrٕV"d8f AXp+1@8S?́Cά/ <nAl8#GqZIp5쒒[mDR 0#db-iM/>,kaBLƟ`W-+5t.8.KR$(h̯Qtbqlgx;neu1nf'._'sq+/+گ CƀLD~͹jkRؼXX(Fw,+Z᎙¯ֲw auP z{ 5Fgg]rX@q/͝,ĆRs9oUIC<gšnV}3ϱ}I:6{@k$u~-%L* ~6b6PGn>Lb#VK/:14j/;4 ԯ.b68xIpQݏ =bZ3K %18G/܅ÍJ n3;J-ǽ_ ,;Ÿm(9&Lpd>xW5/y vouyF XGAGVwǒ 778K#Օyݯԣ|WÈ 9db xOK1l".'xaQ62\lw=,wOyR%8cL;t:rݓ_@144?2k4-dؒOz*ũwm*AEuznJ?]vcYa D"unjM9Iާต.jCSx%>p h{/>lî-}B5Wrݨ L\:]LD<9SA4c(ߚL0a\ՒOj09E>SُF<[y: XT]c'N2v M`l_ƘG)@5*>Gvw-ϵ0Sp+vZ4,Qd+MS^dt54VXm@#wяt;L0hHx[U1 C0 <8.mrMl=%);wl7Muaqd؀L6[ ܛ3:J̍\A` ,~.p$ĘZe6mÞ{sIpۖ|~K?)X#zZ3wFe * !<hLv{1/Z]"jIHj+ 'K iO}TS.ރ;B`e`ya3UIʇa^-MFs-ZPc+eYo5bsg3Z_uR/6_[(H?q}?&xtt&V-e(TAc^G).N7FzRn%3jfnjd1fIt!0%RLW&3,Wa ï-}ÅvTL/Ee:lpW\=:e:f[J2#[ q;CJTN.6'5_r_hR{q_)Ƿ/}}㔕ϧsCgl;ܕ@yeJuh eoH[v4=jty >x;+JXOZNNKѬln /Ζlޓ?r4zFy)c%!AC®~qpzO bغ_2^z>+!!,K)dbPdۈC _^] 8psѓrض"&׈C#Ӄ3<dΒVZ-?3 T~`姲#4`.Ⱥl脋ZAn1:,-"`yBP6"|5^1sgutS|bC!AVetYeMyT)'{`ٰ`PJ嘗:;`VHcLGWd5].އk29 [azek[@E_k&*.=Xj /ΔsvΦ(V DI3 l/yh7 KÖ'-/W4Z2 ;hz}mA8sRQqR 5RjFYA9վ]z I*B$2q=0GAl* ŘTCf|Y @d.À[lZbX `]L$lZC5Q{^py 0Ec1J ϷPͪhHtXA=1"\4=MoW 9O"$=߈\`Om~ne#'m6knf6eV"ZM˗c T@ihk"lO 'fMD%u'+0ENTf]9VI3B}*%'YIXJ)7e ◔KZr,b_h;cUb,_Nuֺ׃q#x`LOþd}! ǖ@[{zҰh޴xt]iu+ KΕ$t$a̩ݥoEѮkw vl~fʘj?ex}!9@]*u}oF?fX-46Xٷ+GkzB[7Zb$龀ʪ%Hǁ^tҦஇ89._,I1M_إd) zrxt8汣nfX !\l9:;̔o 3+"dJ3؏cYP?j(tp e!^}{1w*H w{Alt]D8$3hse4d\~ ~@ЕR{Z IAn{lPPn.ikCdJv-D 0@WdLj'`P|tiFblS8RLYS:&ŅXZHŧ4l4ZD+HQ슦vfB2kzEp+Ywpc;0HDge%&`_CE(\9[&ETV<8~,۲2V{t06>;-Mys/p(2[Uƾa^ߗ Ͳ1j1ǐ:i3$ G[;PD452j}[e4֚74865*Eŀ { @tge`l#1((E6f)K!lcPOUI?DŽcP8cn_sVky.pZ)HkVخ@%k^mBOw9 MYd,8LC ~r|Ka]Bi$;2 V[#RG0#ޡbtv,$!6FvXGbk5Kgq ,Ʉ]`wsk V}.COaHh&J od~AV1A1[R`]*]~* @z{o4Q F h*x(RTK%&{6!\{"76{>8nk-4Z}tF$"Ckɝ䄟+?Z^Km~}x옡CKTo1b`.E]W1 O s e_47;JgjsšJ*G)Ƚ> amr>L5M ZԀ:^Â^"VzT@k$:IZ搲$e=~tv}e 7&v^lz#ST)hأs0`J Âe%m&xm$7gM&YE#0)~zdP(4-+ HaL~_Տ*8 #,tyl{EŮ]=X4g:|e:2I5? ̽'Z*rVP{ ̎H6[sx2&_*·{}tt _C}b E%FG'}p2nV6T5[͉-4_jF :QPI+y"QtHMiXx$װ kxK-Wf\=0UO犝QǙh0yHq͌ϰ£ &,0"18]1EWgixEYavj* l" =5?Fqz_Fo+ >q:Y Nq͂GWlh696n`h,Q+bkuE`n%[rMl܁?kvqZ, ^/ao)Xi*;/DWR IJc>D(>W:qM:z!߁p oʂ|>&.]Fn75ߝ|(&?F-d̴hW');֏wy@Z᷁n.#Z_F#W:+Gc n 'ݬ|n껖y(K7ɘ)WXr&bܷܩ.J/SuS^yDI +u:! >d!3\~Ws̖,-WwHOhoN9Yȶm'N:@8ͣ3縝_O'/oI Qb,8 *PoFWPh}duǭ7r;GH>5^+TܜsrQ4}JSIucQ>m9ƿV]EMW_۴hLK _+ٞ*嘷6P:,N_>=@+_}+A:+bn8 )ZU6;fFw>TaFhۼbi$a{RgcIS[FI(g^F︝L:!DDu^X Gj:.uuoE\U0L#")m|*1'Qjʠ< Բə}Hќn\Z&ܶ/ wy*=W2 ;?Hwa`|7&S٢ef(b7BYi.0I>hpq r6LMX ng]/?:JېXL~q <434$ =aN"xKZC>~@v*]~1{XRsk:inZ'K+jWLggڧLsJ&9{8;f.i"Cg4iT@(& o%H"ޣLoh'hOI{/ uy '8Ib8KtIDFq3:^ O[&D % ^s8iAw8('/}^Z,CK̪UX T{/Wo ViC"h~$:&OQ$0hzH^0;,c"{ 1DWkͳ '[G1(6vzhT?#c׀-ꃼp*9Ig3Ohp&R?'wUY :^4h ?hNP!eS>XlKORw :)xc:sY T 6Vf[]ڠ?XD4 {wU Y9g@o:8N Ō.zOݤBE}IrPfn4zakJX퓀Ev2nGZˆ1Ð+yy5l!j|(8oOنӞr`N9FxmyIy!I]/ ?w}G*ݩ7k[+47a'(@HoK Se c] sWsqfU@}( Ən_46| ̪XN2h =~eϛSg0VW {n|kcbzˉf*#c^}Bؼeju/$#D/Z!F&dRF ˧b,sA*wgP!;Qi1yVeizˡ$-lj܉%T9Wȧ6yn`H@Z:g2p:D/Tn@O6;~–^2yq !ӽPs ;l6yH.0ʆE. Bۈz< Xwk145f:o#FK j'f> Mqa5ҕ]2tv,+ʻTԜnr)܌rC礉ļFU`7FRVkrݳvC! E7g%?ӰPJy{tJxA2튁h`L\Ң$F1_'u%?zu1|vi+.ׇl u,=Cй>*ݨ1\4zG=7*.>YpCNK/ZG4L*^Ť8Lk5kqQ ?S&SQ i Ź`kBvէ P'TZ"8T z7/ڦV9´:WiB?h}ڌ8 &Jeb.#2|:F̵> pxbSD8'` l6+D|ў4naD[U0TPֳTqvfu U zbB_-H!xgWǠm%O+Ȫ)pv|kKSGƆ{JNB}k܎`~uC'2sU{;\K`^'ni`Q@xi'E⅐ӿ/<9Oer)( : LǷ y}T甒`3{Л\0)X $y2LcEӤS5&qSyѦX&g!t(ydaAVEB\!+Ǡ!dlVxS\`tkbnCl'2 0W@'{&2r4r4mL"^z̿ LP{vYф>+8!P\8"aHp`a0~؟pw`n|P)Q'gW T _.V%q @샌}󯒸K|G6Y3~5a}ζ0X6?pK0r%$ [QV ~"WTŶO@hwvI@J`ܥ IVӒ**w'*Ӣ*?1AQ%UL3",Byt#k0bޓuXKv9y3{t⠅_/gJ(~|/X$3=ORq:-ĘYqqh>A&Aɻ9AmtH!R(Jt$*ԁS`ekƎ&M(Q T,v\ f@-[bx!yL0AD!V@5rab\wS}k Jχ%FnP~'´M_NK^0 T ٙ 7:ڧJP;H̀/+@qR(udj."1o&Yc. ma%CPeeH ]u~'#I}9>f,7V~pmix8iMY,UՇ)VuNK[Iqެo/vt}l[r{l{n l%7`?UT5>% hpZIK=M0iYJ O?zp~FtY;,?t7 (V'#4pP]c2lI7/7껾-Y_me ULC)8ALI1w1I>ʆG-61'6A il"b<2C^Ɨ&<S|7pIr_ |=NzSHGD0h 6zSK:;O2e"=p] &0M& [6!?5 ^&*PnRpɧ6bڕ̿`e:[IWbcuNxqnt=dӰP;-(?a;{9@9%r{;r:JkJ&R-nmIn!,B g#h瀊\ 32w fHjf̠lH 3SYƧ+k,NO?u--JR}˽W{zp >2G xE q&%u_mi pF# X9op f|2o]X^*lYN)&{P``!  4Kz!?9zJ~K~h/dfo~^k$b$RW 0sf= XbGw/h]0}Υ9f"Bv nn *?ϠZ%'Qtǵ̝+$:|/.<pA`ŨўJ{G͋L~JHWQ 1@O>p,]5[[RUgwOT~;- GEF*Vy 9/I8:|va2<TT} Z~?H L!TƸƊ0{?|d#ZRVž%.`mW>\;Ǣ2Y,d@fDJ2Nsdk|Lc[Y拺!s,@c_2Hw zZf}"e?nӟZYWC < NcCXj "&}{x5S4#9Ym?Z{4.Ѣ*Wq>,Qa]4aj- m41%BG^[=)6Izh+<׀3c$6xG*D19ډ8 щs09H8G. 7.dƷt \ |:1 &eVNj2T,2G'R`b$c(84DaQpyn  Rz{C x`+M]<<~},Ag㫑Rƹhh\{d^]?~oN.Ҹ{y̢a%2pmi##TO+D\ У<_6"MMM "|J`gπ 7SALRX,@SőyO;#;j"hdG'I c2kjFRc2{ $T_ks&Bjz6HN$+'8iFQ] P^_74y@D5 %.=cdk)KgQUWMr{|.֬D+G%rw6‚=o1y:Лẫ/w &A6oK_ݼdr"bP:9_7;Lp>OkDn$WM ^䔮*,93( ur{ f/%-4r;*[w%A֜w=կ 0,$1nJUҚV/hV\\Z=--s>5 i۟r(fO|jaA}{sf~POk?샔3Μ`uqc'IaPC>H4Hi_;a&x]^^ʥ}b ;@RO&DI:Jаb).pu  j4i"=a@f&6 PfrCZmm.j$/,?jEuHjҝn_'Q)ZyAPFOTT/E)Lg 5Y]/ѝ׼Y^>8xaUE~N Iוm߇C$-ic箐J=D\{GrWO&uʀi\cƅEɏb[².{ꎝɔhU,u:/(RHtvmПڡǖJJQ:Paf/ܬ$IlIٍR¸aq7fˏ bT/q"^\nBڋd`|,t)gh;ޝ2"g#D?(Mښasp.VZ1~i݇29fIљYva)r& k rg:D7<@2,uz$5\%2L5x ?nM&N+[Z6c0e!1M.;;Z%v|}{162\ k(-S ,Lg61] A31-{}iOL!EeR;[>ĩZa_KSf[AdC8d c/cB@|+5`#%P4qL蒥<:qϢ ѝy_ڗ2|i*?Zbԡ+iҽr;MpX +PP=ђ:h3_Q<)vMU9~uOe/D*p ESLAвJ}=c[PMx0, Ԟdcl!!T|~0+*9U2CmjIy܆YX3~uLn]Z3v4Sۊ:Ҽo"ӽf.B¬5p4eBؠQD]NzMn Bc5Kל e>S){>3Oz4101}d/umQ!訞2{0|6pCXΪ}s@2p/Zτ`%,Og$KYax0*KIC 1@s `˴K~_W4{+ (z` ʜtz. \ds5֘\1uBbnOdV-0qC H}v >8SyW ,hqzZfFR 60Wn3 xmY]턅W,I"B2-/Qz 4.Azyw8_ʂ癤;`=+H MW`C\=gɥOm&jz >I0>pir/ b8Q[a|6zSp-c`epHBujܒt"ʲ숳`oehIl0Iu?)kBej5~r 6@9uKK̓X>@WڋML+7à>3͉BsT7anP퐫tbNFћcּk .W waV#WȴXf<]5d.,"~xքXdt8~L6w0g }nb68 8qqLi-iEE)͏$(>TV̞,OM6?rG1{#6Ҧ|-͘7-9U ] 򟩟+'/bF<#sP vJlLG8q F|dҋnY˄.cd1g~/NSl#\9RGr{ɖL񮤕nΏK.0 H>) :.pڛ7ʇ'*\4"jP(~fb Tt/RD` 0yX#n9ΔS{oJϘl((cخ!j(#bX|S5B/ ;0:sx1r@܌/E6] V9>hM.:/1QCOCCX+5ȣgyx/jR] 1l|`rB ޣ#wm]TH6TlwWZ;{6QYCӈN#ghc ?{/N,' V.@`AS\r9㱒߈GqX0ϫ ]1ݻ*g4QlFҥ7~uUGuyܫV3i1|ZAv 5B8pl`P& #`>s>]3'vP}5bvAƾ!3A*a_M1 ?L$".˱PK V](Yвjk])özYCĴkP8 Va&2hzE͏]i>V[fR@Qda^H坏GWɜR)5+=,:K9Gvk,#B!"Jjeٚtnof+ޓ֋duH?ƃ|K;rpI+])|4`T8[}~Fk"M|_'\S$¾~!2_T hmI|MFAe7q]lwsu`&W Vli&fqskԮ@J,./$y׌ޜ&+ ^9& C\*A~_z šĊӀ@_#v֧exp i1!v(څs;k/د̛92  1_X^c g+[D"`I֥CMH^rsrg)T0Pyc.}" |mU.IR13 .ژ~%E9T=W@wq^X~ @)qZ}vGf{w$ ̀B;IdǬط$+ODSfٳxvКMr$!'bZ=TJQtЊ{r>2%uqPm,.w|̜Gr(zT rA9<&h5U̍֝=N ?^WK0[T^HpV\& p\O_I+޳QB$}U3{;ad`O: Qi8sx=?B/vGw%&$Ѩ-N{c_kW5n_?Ww^AFI~V骆WWtX:L&-TEPAyl7iD+,1fH ئ8*梬hR6@V/fٌ gx 4vo|e<..Ygu]ݖx|V:c98h!WлJ\S[.ǒhsv[ OnFG[Nr'1ed "M $`u t0XIj c=VTxxELfys~^֬Em RUD~HxfTqnMAE#x~J!-a!s 74#wƋ_^>p͵yKߧ4=#@榡2b@ZK-@$H <)V2Chu 0qf*\Nl-h VĘ;&gzmŴ5o`<6 :/fE@)p)"Xc.RқߘFߗ~:D[ ThU3N% cꯋe7OC/hNw-,%?ʶֆ,4#bB2d?Vq_ s?E-sZNn_B}ݑ ҇]8,ٌ'J4 I((8"Hyg$E>6&Qԥ/[Ƀb8$9Ә,'Y|%J)7)un;nNM!mLm'b1eci6Y@?Xq0Ḧ́%El}6٩oOB[EMS9(i멒 [mX͡sr| 瞻ԙWEnm+iEwc*n1n<'}vOlwA)[4)#-Ǐ )UآLrjtŦ/c+B|\\۷C`oŭWMc`j#߶v] ^6d, Dž<*RkuBйp7ptI^|PSYۗ댴[DZ)h!:>%)]WH xl#,.[9|,=S̏(*̣@07m^=vٲx4h:tgnAJ}cTz.&_C/k$3\Zt)WDs%;j"Ys jyPb缌\^W_Fm=Gʗ\'*]-kQ3N+=r=vb10cd1v.i_ 4WR Wl'YcOϳK.uşp L#e]0䂃,4F[ '`،#7J2 ,v#-U_yO=_FFz&>:6:6WJK|ءez'==tj1n{՚^D!%u ;̚ED0=|:,\8t1"8dˣnZ^n$}τ{,9XiS pAul>KBY;Q`m-ͪd>`HuDD ӊ@uWD)`aT=0Y%R/c[+};}ƀKkvlr¹$!]չa~Y{aDܻЌ=h޺ )\i!q:Z3eKۮsu1@Ҧ`*<`C!k#߾W{>;rCdTļ9-/7/r 1$CROyGMUPV⾢.WD<{ua~(*ToJrA}u#=3_1Ǖ}. OS|I2M}Cvo9fA/*\{.7&i5iG~>F-.qxpY/ A⪏ѢmdإFL$s7yhnxٺ/ $e`]?t0b:k/E`P+ |1vw!Ċ﵄hӹ2le%=_g=!txfg 5xp'(r!w/ݭzAz5J-HzGV.L x>CѐOCp-#/$QIia] I6*K !N`<#U8A-X-H ڱ|hAk& 8K[Z C4z(`('<斯i}'>FMmm%ς$_DK~$şi9 i5 9 } 줘jbsw{dД~SlY$S@&wRg4gN#L>Rqw 0T cZ>(Qo?bZ#UGMV=ը?@zֳ)`x&vz5.,R^}RRC1\5<'yކ:pT%$Eb㭫]^D=nLgl{.W˺?w TNPu1%VRT/hY$xrе9#_ 2&ˣFJX dO7y)>4;7+6%Zӱ\_.jn9vGr8RG{?ύjI#ڂ@:AL{:SYZP(?[U}E9\~eZqܱ Zuu ?[ Ҭ0#`$*m&붒dx<0Z!rlIu-0mї_Kt-lfmuxK%Wl6NXF+Ϻ$H=4`GfyQnWfKc SO@7NI\/nIkLæ32(wsy Of|{j<wUăJ`VD_W"ŞQO ?vqM$JPE&驆 RVX-@Xi0tVISfk֫W|vo_?V&riax>W*uvT ǟD%/B~.^v9С g]3>kR[ W{m;^wGF^;Hk_fd|w,C(pao7r\Ԑn|p-B ;6,EWR%DhY:f6 [6% gqf]@le eЄF7p瞀Oϵa[d;E0!`m_AC&s{t *do1m.ie:XZnb\` ǒm[ Am+iGZގ;h5j-KyL@ ܨs;Evf /J2g/ÏZnh遺`Ŗ84[Łm܇}®8qCtuO/ xЫ~~.Ŝk)^ޯDG.U/a-у %drP }'xkIkK"mYҵl |=&ʂdr,rmXnnem>'dP^,fPO&Ƴ& L_6С-q'@t65 { ?9{/Z?}Ù2<-aX'T)?yyt 8[$aZ_$ e% ڠ*\mXMd i;n3\#8qSh|5+v!,80%|&:^Q!Lt]V #g$4܅FM}iNFD0ͩ;74c$؊?@ ̿4r<Ե5;^w"Ji41e /ZZ+HЊ~4N$w)C<9?!h-3O{빵t+?b.7*@c^hճ5ApFi7H_AVRHE3([Jkg^\s,< J?##-CkJr)nWL]@%FU)P#}{uv%R7߇5)N/ $>Qrp lp<=wO*>hXU+Fƪ_]ppiNj;%I(We?*$aoQxB^I(nw 9QZ9#ז}r$H[i{]BY1Ղtxz !:]lvqW ~[7J024?W(d\exԼk{oytJ UUa}2X /`s+S>|xܛE]^ 4%oU}=}%Tj@+!TйA/Hch_]`Z+bwɎQ䟐M%E\Ln&oK*۫vGlc[!^bj̿0u{Q:N4xw$p. s