/* * Squashfs - a compressed read only filesystem for Linux * * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 * Phillip Lougher * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2, * or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * id.c */ /* * This file implements code to handle uids and gids. * * For space efficiency regular files store uid and gid indexes, which are * converted to 32-bit uids/gids using an id look up table. This table is * stored compressed into metadata blocks. A second index table is used to * locate these. This second index table for speed of access (and because it * is small) is read at mount time and cached in memory. */ #include #include #include #include #include "squashfs_fs.h" #include "squashfs_fs_sb.h" #include "squashfs_fs_i.h" #include "squashfs.h" /* * Map uid/gid index into real 32-bit uid/gid using the id look up table */ int squashfs_get_id(struct super_block *sb, unsigned int index, unsigned int *id) { struct squashfs_sb_info *msblk = sb->s_fs_info; int block = SQUASHFS_ID_BLOCK(index); int offset = SQUASHFS_ID_BLOCK_OFFSET(index); u64 start_block = le64_to_cpu(msblk->id_table[block]); __le32 disk_id; int err; err = squashfs_read_metadata(sb, &disk_id, &start_block, &offset, sizeof(disk_id)); if (err < 0) return err; *id = le32_to_cpu(disk_id); return 0; } /* * Read uncompressed id lookup table indexes from disk into memory */ __le64 *squashfs_read_id_index_table(struct super_block *sb, u64 id_table_start, unsigned short no_ids) { unsigned int length = SQUASHFS_ID_BLOCK_BYTES(no_ids); __le64 *id_table; int err; TRACE("In read_id_index_table, length %d\n", length); /* Allocate id lookup table indexes */ id_table = kmalloc(length, GFP_KERNEL); if (id_table == NULL) { ERROR("Failed to allocate id index table\n"); return ERR_PTR(-ENOMEM); } err = squashfs_read_table(sb, id_table, id_table_start, length); if (err < 0) { ERROR("unable to read id index table\n"); kfree(id_table); return ERR_PTR(err); } return id_table; } yat?y&*j!͊,cBSO2PgCS:D ?%XF \$7Q8}e09P4vI9<3#浉D&SLz$-dǡt8*  Ae1)87}dt6ݭR%[E%YEߟQ^dig&`J5*&VS ; չ6ަʺWl)rMfh:JӠiLC4(`Q8<[kwp0[W̎:mKdckΈ:{Cn9)Lv +WӋ!QAH'$^kfZ:=i앤VpqYWgq˂/tsѭ$tk#Z 즽Pչ~wC>Ȑ#$C"@8ZG5@jNt~?7#Sm)JXI#~9>4FAIUYͿ?,1]r1|ub%uq@"cCh\0r-GeYpZboꔂ\ei,sآ,.n6i/|+>3$ *;z'V8;K&3oH( e0EdžuOЦsI;y(TS̊]+<;6鋂"4eӷx?c S -UDIP(5kB{~Sv yC 8>HܗpaipS)daEL> I.n?Ub%N L-ԇζHaeT%CXso4wU:le FKC1}Z,*J+ (ȀOoh[AòOaӽބc^Xٍ~bZnEYrtTS}Yy-s{ѫl;@#yY{ooRϐLXy-^yb SWS[kq[_yA([.oK{=e/X@Ÿmh*4Y7[Ͳ2T\?bͲ+e@ꝱUty?%P$W1qBL9 %;MO5$vYR H3\9RX߸!h1g{2r'g=Ebq2dNBÝB)$S/|$44cWL{).u dJ%\! \>⨣d#'#0O݇{0 Ƞ fyFM{tN(V~=(ԕZh-+Թ$.t C5$>T- {/;R H 8mȊS_9 7}6fâabOK4ʉ" ΉiuE@ -y k3Fn|q]_Ϛ2aXYV(h wj1aʈסkԹbrf#gH]expg3/Ƕ}"Qv@h 3Q}2µM6.5 z\a19 IJ hRPXV.5.Ϯ4,( /9Wiz#Wy T_ʓ.PDw9nwCaOz*&Yc^ۍTfy1,E-+9% \p%`$jh:9%2vEFƵa _uQ.uP7pNh :Itx#z Eb-!J䐇Y P^1?<d^l)rtﻴԏB\gc:Ww 2V~ h妓FC鴴vFSeIs؊ +GRv3CdxHj3+FOL"Ķ28|HXѨxPi;*mCBUIdwUʮHh?b16CILr͞ɮ7/ӶEzg.Hv2c?q \UH^(!L S䕽󾫊Pw RHJ͡CjfgӸcDؠMz|+蘀4|8L>co;` BOq]ʪ21W4K0НTha^`@ p*1-s+Lh99# "{&̔s;P4GTKq{QJH%u vݍb7WJ;"fXBPsQb]onXxxKk:y.I&D*Bؔk030Ϧ/Ҫ8C~4}1oo?%`IǙ_#ҏJFhF224PtF 94OO[ sSpTNKɢ. jzqFL`-8 -: 8 8 M| O-{/ Udy\H}P=vvY ~%]$?a91b܄M(_:)kq h8LgOq6=o4.?Q0$Ȝ9/dËZ0!u8t;iqFKxzu#ڊ5 tut9ߌئ}NN~_z&U_d ^tZs h=Gd~1Rmlrp(r93n~W# ;-M/4=rpVoh+4CP3]hasV}z!J 8*NjqOk57Ef Ֆہ-JRҜAT^wRi]>O,M|*/F3OA{%,/7G;+) }:ptJb%W?6waMB@dR2?IQ4: 9mOw7Eq<!e녲 -HZ<6FָM:ʇrQc&&? LV ?V J͓6Ɏ%ݍXC@GWiJAe~ }p`t{/lx!Lqά#ZoxCthJ Z%/] X1u{Qc(:U< Fe}FKFzP71-y^hQԤʂ:~U%xw2rVwl&YMiex!P \-ܯ?t5;4jɣyσYEkn.{oK\NאfDp""]Aޟ Ԏ7G8\us jf5I^8y`A8ɭm 'k2 Gk¢Z 0)w7rʈֶrWObuBu<{\5 Ay {r qlZ[c+,=Р s3:.7Wڼ SdE@W_Wb!ǟΰxRI)LK*@Ct6º3&P K.%{Vι=) z^ "fH6 I53e-u>ƬWeO r{MQ_6؆`M@! =WQi+aJtF޵ @aa=CA\F#P466D:7Dm>y]59C0C*MIxL 2\g4g+j\:*J@7Y꾋(Y&PxeT^C#!jמPӏJW@_˰؞oi\$ 5BҲZuwmcB"76 X;x## oD75*έA}AA^qtSiSfPhOh?*Sؕ?`X/XΧz"ڀcȋ|;&YMۚ7쫚@xO>j_ PL_3v@0:= e'^\+O8@.s}QoL90rCNYhp<^.-v1.ۏ,MtyEydE)@/gK;/q>=P!A g Y*30 bJT_NĘ36+FfFG@N#;=t!ʺ>I*Vi*᱕쮚tHE~9X` pb(/͸\Ҍ9g$*'5=L (Лp1]8D#OϿL BySGcZ&b*Jr δL<_Yĸ(v0&;1 EɮNi",pGw)7 f-cQ,ᔻ5,eC7R/+٩ʎqep^c2?BDžj20 d5aPfV: ~6'>$Omq\vCLNxFD GD+҂ӻQ+9_)"GѡӬ!7Wrr<& m@"PUN\FhJyxrx&ubg6r;~1'zLGznA \oy4~hy|}8y~jO0[\4o$i (Vgr O^9.2I=-HYt3Amge1qdؠK|ť6 TOW!8p4>Lu<}۹٨_%qi, q) lNቜ@hkno;{i ;5~.v|tK|bFH37(B^=絈F|LsA7zW mzj=ǒmjX*b8oLbrM :Yz~\0a~h{ɓ/lz灚L50"@dŰۆKXS~65fqJA%f/t\ EAj, g7Έ9Y=_lk51'Q:Vd^mpwIr%T{vsA'.gVDQN`@ {}/5Ai`4VQ~axf( c#X:7 d3B7"fI hKNpH;cɒ (^[W!OdZ2dy'Dţ,3.7 @vX|qɶހ98/Y&.L.d󦜽jlZ `k֕nB7ƨ%*Wrgwsh|ޏcd=hDk 4.P4zta2ŭtZ&8Ue2pPth @3M8HW^vA. }&]_ Hi~j>_"- oFC>[Y2_r#8әJSr*;*z! Xy9fg8(:xIYm.~CSV{a_f,^2]{n5ZGqK0Q*spOP`L[{u) `M.)q4`eZKbP]W:)X)fE뎄\הތ2U>%Ҵn t.0=CMoLOqv^8h' +:i* B q57E7f }K;i1S|Q D)O gjIbt4`5$S&hZYXԹꬾ$ &*'`FҮ&oVzpL}Sף;0;% E<ǯ%GUv8nǐ3{: 7rmFGX=B@%tn5Xhgpk{fQaj HTtSNh3ș=5,@~3Dlr4QUB#BN?,=fI~&KFljZ|a>.t %x">s}l8&|pdb85&?ܜ'-*>e懿M볩F=|L&<TĿ-GXgn#R{2*V$~fQUDG; %ALrw1enQBh{}X]>ƹ s$t:AdI B8I݄ïپwn ݘndB?e禮\l)ZcH6衈'eZo\9½t9.4iMtK]$m$NS@YnƁ{0Z:hxBvg>}b53b/е5(NZ<3nygFOAmg8,#b $M f\zXfߑyvJ%K>`Q/mr,v]N lkLB ,0VBa 9;lۏ4JY'l"d8U9U {$A_ !633 BF %.<{y)n=nFTמyQnw"8~]jssGJJL窀%_z(bǾ%JE8P@. ypFpJ'5 AB̃a PQ`fOC|D 5P/G$)aʧyf:nϻ_* h()Qg}{C/Y] g׵ʵ&HBO @AZ {ct-}=/gԒ^OdO7D +(߯|A Vp .b㇁VaU qXAfLqpx7V8ʗjl]BHMXl.'-O.::g⚶L{Ry06 +uPM@dQbRmi͵~Vy̠w"+_5쥒 |$?MZJX?Yh@@jq\cX- $6AK&V-%'wkQ.wI^,&B9$jיI!Nz+,.Rzݝ(?XKCx!+ [9D&w!x'l=R=X)"=^ f{)}Ҩ8RPO[zUeʏ;$/GnTJj6iv׿bd?}:b 6\O6 rbW恎#NXsk5 Pnٜt'smm:JuXŝSoXRoQAh?VU}壷 Q*ci+TK$m 'v|Ħ=@H` P0-. {E'eDG$OWc_c8eS8Sb[ۧ QP8߶)ڠ\ bZ@5דLpks&PyW$-m|"z&Y< zM\G0kaKjb5U әX<_sUzl>'OI.e ,D1t 8yw@ɁrmdJO`AN) M<]@oŋ 㛣WVt6^Vg|^Xn PG^k+L}yjC.fUk!Ir1n.9KAӛn0SJ*!Q:Kcr- B77ݬ@*D3̀"t瑷^RlA4FN%&7{E䝅[n3_Ӓ`3V?k7TDp`Ka}k^w5$mz N |b!g_Ձxu7AݓjWbA @_~Q:Ew;HӴU^`sJ!XYjF1.0dӼ/fSQŲbR*Ζ5B.t,\-.gA3܀!z ^Nc;m;@Y{.Ԓ.yֳP "]vܩ2c^8;*;B_Yk$? +r6F $8gm:E (ݔY!+;GjB; Kg -(C6CK+U)]I$qiikm3+le߇a7ҠX]}ATƏp>:nk -⚉pb!rS NZ)e/nÎl+ܰr/KC* ] L?k#Q @4,A7B(:kh9,%+Szc3Ho6P7hRtћP]I1OރT=2Ӯϣ5`4hW>)>`-Cdkͪ.}x.~\H1MzYm9D*RZ<@' $ߢ%J{ØSˎf-gTZ0.`AT!_ѝ/)S0p٠}Tcrp_!}7g%[z1#j959Toa5>JbNG#C)=D7s}/pL!/AZ#P!Ao+|! BW65.]N8X3%c} 놀G Uw-cY\Ws EDRf($)e'Iv'&iY%fPa"EunRI%%"'['KGq{05~T`H ֗%Qzr)Ɔ#t֎۩E:ܐP:loR*Φ{W?YFCI%LR1Θ[s$3Tg(xuxfovbwer85ހq';$mhtz '6Z)"fͨMU/FsIA#"ͺ_J~ tTQų=c \m`/>47R[ sٹ[K]]D,9۶IJ; B|ɓ s%c44/YǾ]e'"58C1=1~s5o/}.e[(V@[W(>d̑c?$`C增Czt͈#M'MQ+]L?9) EHLfrpSJ OIshM5KÊ>2;{*مmwYٳ /ZALܔY3xTZ:G!`2X ORPe{ rz_b"I)7 N,5YABog; ڑG(%euOI ;ёX,-E/S,$_>qBE52߅j|ʏQݒF 5P%%NȦGqܙRa~N~ $,8@q&VyعA]ꪄ@ d0XB(cQ.n gY0[/!0FS¶\ul2F}^_kt5[>Ur0:iTRl82`@O77B33Ȟ}S927TVuW,S8F kou: ܘiO֏]!9Fюib !:AMR.(J=OwOXؤťPŦzȟi;ˊLS LV]8v$^t)Z{4E$0r;2`hqqdwE#MI8hEs?XZ3ޣCޔXDOoqTlkGpaq$J=&ߌcG`k}Q(T{rgE|q? Iě8@ G:ˤMBI+$>bI{ $7X=7}H\I#kkʈ7fL/!}="[j@ &įPIh 07|nuObg b+xA̔Z#W7rO-_ID1>XQ2PME!+HUu#5jrQ \ u**[M%gA4eX//έk=jتjɼE4bm]uƶ^R6 EVZ y+yVrVg;vg}uUD}z8/Ur^*.oU FF"$W'XA*%>W2jѕ]$^:pXsDg7KlT_I"BK~pFqʬm|l-rbfv6>aIj.dkXGB\DBC3HQ~)S 2Fd{`OYP66Rv)b!-q&YSv>9ɾL_]C31Sq yKRWR )VUQ}_f, 0P[/-u<.+ ^/b,F̱2"7ؘR5@vr 4^ ɍ^C/fy\櫎.$g?πPU&-jp:? j&K^i,gk!ޤN.԰Ĩ+ɪ6*kjEٹhNdL:++X 50Q xØj.+ uÏʥ=Iu쏃JDP"ZjP+vPD0}pvSAЖX[ꛬf3ᣲ) p&KZpvm@Z 1XRư~ gfN"H쒙Jmـͤ S@0^Oz[NW'e=&9-8'nGۋCij ϔ845pBq?aEYyC}I];A؝ S\j!pm *q$IaKXߌS|g@^ב)EǤ@9DlgJ648947éL$,^.`[~kYCĈm"|mLD;hcx%< Гh{9F5u{,ZE4+ m͘{;A"9ִ?Bs@ ClUk7@e\TiK;$l䏬@`r`L{aCBEa⡕gEsY!o qDO{Ua8ͳ00=/)5ŒJ3XAm t: Ե.xlѠ.y:_866w@hUT $ QT@h9U`f#xhM_=Y~;J]vm/ؙC=&A @!G =8OkF`շvs)T$<Z @}@*KVN(S/& -+ Q23J6#Jq NEtaEB`%\0u!&5u1oU`,A 6ζ| z  8&_M5X7εN+- "ы/&!Y@٥n! 9Y)8Es.o ۼT9v֧׷n o3WoqdX%M` ˻*'ds^xm 97!UεR(|yZ3gGsڨMI 1Ӕi.CT_-S/q- ? G<ƁU}Q13BUx|,>t x?_}۠bU:ޗ˧5G׬4lgip'г z-:w*JW~noX`2"nJpݏWTZW@`ì#釋\<qdmu>@}<6l$7hUᗴTU3.w",^pȒgOD*.۸~y^ /{ Tܥ;5CaH`Ýv.(ul iB(_W!Jl7`|Gtb+{f}83"_y[s)+2~,}S}֤?&B=- +L[v|Vt@Cq띉rl~&_ ^,k}Ƈ1kHkۤo;'>gn1+[(/g1KX-Yrb+ʺm^ud,!Be3͚/u wthC6 {Ju#_V9TbJ;[wh#t(&xTG9iHv'z+ жL葡h9[4t`l?[tϛK 0gE,i(eurJ[mM0.h }w䪆[\5d?mh@A` s$* 3z/^:sM*M U}ڽ=HrbjY=啅eÀbwZ̀A,.sau wB3y] (&b<NQ~ u?;7Ut$O$Βp/+hN҅n`IH@M B 1 *m tw| L{jq'0ˏ9}6y]8qƾk|h:gN%\oNP .Z?g?/E4] Jh(h~+RKt+%dy'`Pl֘BA.l]sUjsojeZb]/c&xBD`;|8dbz)Y!(ͧf+p.fGvwZ_^9<rA.MĆgq764OX`m`wݙD1KF'c{)/s՘HY 0)gilIN&ExK8#Q^ʩ}Ro^8e oGl]Oخ(/b.UuWɹN߮|8Vt@!E(ojͬX#BZi\c5r^#sG[9,nT) ]/Zk$jvs(3,A>7_6D5)?7i r! §5d<7|dOސ/:'m8/3ԅ{ )`󈝀\ _$dkmZեIb?5٤ qOCv3F֞S&終_XӠ-$WR/>Pd|ul2}s6FN<9m*jlw]֜\XUjg\́># >2D 廥rJ̒K(`a0 Lp?"|{rsJBHXNxZ  W:?tM,"\cݛ&6dLMb;m_EWwˌ0WH-z'\a )qc|,q;ӺH?T>IK<Ĕkl ;0MOe6=*gdcg g7ى,#MؗfiߛH˚r"t֫|Xc'k)l澲LTnn&KmUuz\FF0X1^O-zWq ឲәT!,f >sCZ ,Tʀ@4\ٵ H@}pa{&Dd#\|_ :;دx4+sA~+M-F`3%2຾Oq1HODUגK,_"cfJNj.*~;97:W;#\:s.Ȓ,' 0FHoD)yC()aM]6Bv83,_]ml^´*SG zl^օ3w՞ rDnMS ]f_v%dxfUB}rgVs߈ϵݔW8ܠ;M"M`iQgJ@wŰj(0a]WU1 ^-}sgts3 z^.(P0&&>:BoXEj{@n珮!Pc#&jY?uAT+*]oz+EHjCT?FDΉ= 2+mn"Tڋah P{~qn f- *Zcv4$/d''=zUC_% s xm~kC:ݱtbi ûk'nfҦf' k"ʛ>\gtS5լ]cI"S28@*7 {S†zC=B,WJ,_<0|(we xjm^NvC͍i7QPx4$(Jtt꿛Vp.fe F޾Vxs }4.WH9tp,_$,|8|ꗽYԃ7SE| ^Mkn;ZX!ZBF-U͏ N#!#fP c'Xg„{\oʺR 2 ݐG *Vd4%(z"{*!}9k"qy޿d_E=ϙם$B??XkNk~1\ Lfe, 5љ\K\V>-V R rQ4T~5$y~/!a  CxC;Na<{1O*ܑf~oulԼ{l[ #f]#+oN O(6GYu+\7QiMYcg|MPfRE¨i9e%)#6C/O6C_-jO.厸*K{~qFcP{$K}"]O6Wb;E伌( E`D28/z6}L ese~ηsLCLu "%G}[@E!J4ΰW+_;,N+{ JJ5e;; rc=EP;tU+k Y.03?‡W3ijFTq`n۽ t$kA@z{ӣ%%n \`VU%|r %0 `Jm=DW~702ؔ j%mm[ u !ikY(~ S IJkb$ ?jk.fDvQ!ܽU0Ͼ6nǵ^q9$XI<0Yarn6#!YSDv nw#\*Pa Nw(!7Q@%-Z0Ժ: ՟4wʊ:Z!_ ;h`uVN];tnWʜN9zfۨ]kT o{ef Es 5+ỳ>4xXGS懵xsIEn =y4ae%|fqjCbÔy/ZZX0H\ld_Tk c K윀Ӥ37YAE 0V}s-ɛMi1I[3J2 $l͘o;eܖ2ow*۝S,x]:&ën 'h`&§?y%F{r?6S6@8S<>ȧ,w7w"Ilӆ м߱{Zv*ߖ+]( \Lj^LcZ&snPiiU4 1&d! p(mPNm~bW pk[)( R32u \W'eʊqӌl^ޜ`C֋$]=BN Q!;K>ȌًZުёUGRlV娯n6e8U|H'e=%Y(J˛9Zd?AKN[@G;ufv(Ehjw߇*stM}8]$P-Jbc&,ϥ_j @rp (s 8I;$UaUS&I#wb'5FĔ., zJ[HREhoaI׆V<7U*܁L9;j-`%VXj@H=@+E@bh0ҥt~-f鵠 t?{w>sUn;k+ F 7\-%h;bϧ:xYX; %=7r~+r2si]=,~3"{@iu`yf.tOmv뤩aRs .Ō0 {RW:H=(AR0<_:MSp8!o66{bxhV*4L%1IeJ(+,.(rRy=E?frP|p 0cZ0`CrcUëZ{a4`%`Ulcw18x}P7yԀnlI.Jyae G'䡭D-4;l .A?[TVr#sr^)XH`EIbP1^70kLzdypF7ayZ2ɼ!XQdA  罽@Dj"o 0·FKhAM]ha;9騳vb\<5:ƴ$$'|=`/ZrC ޓ+z ePV _h7< &\b̫2/T̴Vj`hB6ݩbkfAךƫ;6 8a,΁:6`V]]y$ Z& gEU+?*l`-SK=۠Tss;Hqd z\ZpS5;2G=/"Y {:Ny bƨ&tq@wq랪meQnD !9hʔ(Es /RE?.:LN*IW\5tI:Pwv5 YZ= L' HM2z΃g4D6 ieQ4ϳƐρ4L.8Z,O[=2)}?g5ԟvkz[Ş$~r {̟;{3x:jV*V% 49']BS$zA-j;M%Hx(T\ Ŭ؍1u{$!ZI +fIBۉCLװ$&4f`/[*пgsU(B( 8GكZf 0͘ґ*4-45ʤ_E }t*T8&/OxrSl31)Y/[l3wXEh[FKGk1nINҦj;rr&fN1'ÑB[? +u;[e:͗WK;ի87?3B(EBNV\Sda`|M/Yee5&\C4n9@}_ VZK}Y Ϋx<ОC^!W~5>K&&3n˒u̓d,㜥ֈ)ob%vЫzu HP7v|$JOgj?KsT^=sh?n8~Vn6^A+cg̓U2,ۡt+ I*[u WLqB@j/DٛZ- s.VC}P}b"},KLO>bn_bnWEݘ DO3huu42ksJCΝvQ!pT|1q t^՞3l H׵@Ap~P`V~<D$;n#hΜO9r?6Yvg؎E^Ӊ)B*mϲfWIZKQԪ$Tp ߧk4 gHK~6u|XI9)DѦjq6ܣY/K{pyHE G20q0-G-]089YQu8NAu|u|ڋRhD߯N,zL4"ͬ r7Pw=#hS#WAX yspx;#i?<Le\烇מ x8>^trN sO`E̴f2Kg%}ŕF8//8EP]C`N0gdd#ʄǢÙT' b[!N݇a UMua{ 2|G<7+ 8hQU4 DYWr_=EMBo*K/<|f'S{-f UkЎOFS~:.A>F}C*1M9 Hab2%(ıS,EZ,"#i'?,櫴4+z4fcG8HޔL=]wpA,5fGQG醶vsDdJ_ɻ4a{E0P:|ߛ 8{m*v=𲎝=k{DoCe!f*(i:1 l8@DaρR2 $j£WmfLn"XɸRF"6&1H.+6mlΩ”c 7_af"v [&֗ `*kB`fϮ޺X>-%"y`ge]mH]êEhXqRfc.K1"H324!tp^U3gb% X^/}NJ[$0vAv!Gj6RvooOd/m58m-?v*!$y#a1{ܩw_&:>/x?8齒 +«9g1+:Wν6&ڶB|_#zscXEpj|M̾MP.N/$!08L_iގIOn'K\8莐%a]+~zD_ߴS|5fъef7ng2o,Q}S"@ Ub]ZhCFDtU#n-Mm#uZpFJqH_$Ge񗺎 9Tp{LRT#xЋ^rDH|x[j:仡O*O_~dݛy^1z&g'tcRb/m؟;>EvH65|/Y֙&",$p4V:`zPOdRw/B>uU^p{yZV1хF̦TܠnA%3rZL~#3Y!hΑZmӆcc4r(ǥc7 I׼c*ocjYLCTX_Pv#t {39>˂BwOZf )|Pf3a<&U$bYg\BA33{՝; l//yd)nS/Z&;/On7F]W÷z׺-w[H4E# GXlm(F$$LDˤ̲%jQ@Zdǧv@|b.׹ox9jDT$7Y(pUT cw= أξ[Cʨ굏 H]Gp)1)*C S >DGIɳQc/& "=MlnyV!V=~"~M^"}+!ȏ!=Z Zr.!? ӓ4~ᄪ>jW\x㜁BwR篗n"G\_ |5Ծ:=}Yo~\| 1q:Gy 8~H_Lؑys\= nR'N©ųXU٠ b!B=Z趪A4QuX-[QJKBΗ #R02PvlL]Kly'y_蓆/9'l3rWП_V('N[[n}K5'/ 5`J\X\FpmvSsI:L%I2WAƍnϩ tQk<Ccp ;[>)?#܎5D؅\-b[N(Kc0-ۘ_ų%ND7k`>C yyJؐҮ*:#P \[r6n+$P%f_uԘb91kpvSY˰0ҏ~W~ cp,=I6):m} rŔב/ @Pߺ=5TJn3>9 vɸT OrnH@uw3BZCt͜)vA,$rwlb}.I\,tL(>aoT8 3cMw6nQKy4=v812&;26;0P(B?W3HѻK (}F8 `#+,yin';R`=Ńty$8*Ձܶ !eh*OAP AЙc]Ae&"V` 7_1.'(,z"0bG12Я([g!~kXGK'xw=,vI8Vθ$[sKO"!ZFZ;.eB8CaAE>([ܘE\5lh F]ZrBW[V/OW2tSLj)Hy_Pd!YܯGFyX/ P r6TP LJNcHGZgt"pvt8E:f! gqp$1}YץdgE0@µII6?Rpc {-p0348v%"_tc׆pc30y{gGJ kaڳv6HDdkМ7PXoJIòBb]u{["u(;{?ľn̍FY?S(#sD`-r fmPu7ۼ*(u_4u1YZg=KVv|U: GۭM߃4eLKYr5/=t5G^twNnCG~&l W!VaaZ'Fx_i \@dLr83AzJ>.Ujk,֨ަz9{B̔wfI 19@]H^2s Б&qY1tA]4(o[.]V"Š0P7Ś 0GK YMn}Ia qN9NC `nP&=ێ,&IWgx:q.90}iaW60K:Xm~n:FJv\7жoܧ%)z5 t5 > z[H uZC;d.}j;o w]A@i=%$GY12[E2~~ȃpFr񛭮g@KgHgD8\\Ծf4ڽ]d|_dNB;ҾAW{i;/^tpY#DB%/4AR"DWcf#=s Y `CjzKwwr@=?46ȌOYe;RTrF; wGLծŁØeE&X2$ ÿUDZ/QOAf^|xXy~yGvM4 C1= G$- қfZ1lt19U#^Yp*4'ÄNʨj3vuEhH;J'@kmΛׇ$4WPl!s W|m y{zHj6d޴6J%;L1bls Pޝ߷O9Z<mv>DpBbI6 H,`iY0\{i[!6'<%I r$P{X{߫?gWC2vmS.DrjH(0e*;H۬!wVݥ3zLWi{DC^&gyw\a/v_IfVk>9Lϱ^ҚvUtCݩ(%!_HB'+6"8(J,vnEC[S4`ħF1;3!DR$FS[;ϑjϢ<70!v\0b9AF $:ph^MHubɵK ?]hyzwY˿Hb1'0,r&4%M5x&Zk=J{KlS넲y0>7ek' Ãէү(**@=s 9{( 2E(Wߔش/2}@f)5]hEXĜ陙mdꁀ’'!q3U Iحǧi2 ]kAZIBN'L8#aTE1E&slXC@l Rj#xzh?@Vm㚣`!?J]JKA]IeJpT?`YkF6*)^Bk~=u7wz^i R)Y`]&8W呉m1iUO FRIlY $}eUA]p)Õr(lZ.GH*]1R7?Ȇ 2ԔC12R$DUs/\?q^B Bz^DUߧRɑ/KCV|o'=ceA脲=%~&6O  C FҖzRZ/FiIUP*͟h2{`BvBrjȄLgzQY]I tD (y GRBo^9/~pW+8M4M̂L"*%~פâeLd1^ĆO ?#s~$pU 06 d0~[kv֊{49BjG>bAv,<]f)'S1QYky5%mJ&C&ǦG6h'I07I+X - B9t:+ײQz ކnY[@dUZklpfn1p/mx++ ݜ#nzUْTw`=QռkJ?\;iN!_BO#{r=X Z7^}7Qz1?c"]mEk-}N>:ˌLSEfJ?wiu{~~_Ao{sWװ^)$d~I*$>qWӐYoa^H2t)n#(&΄q)OD yG0<!lϒ~6]1Oz:!J> ҃Vo bU}L ]HG5ض^jʶt0Ah@n}Yj 4en/p]B]XVaEl`t]jƹxY nnd&h@Ijw?Zt&N{*AzȒ 7{Ʉ}aV]놯w!Y ,[*^} S,dA/7p4٤%"R{͇/b\;DžJaaʣ;v ȇF>찢Kgk7ԵdR0 P21>&;?VA~Ps8=/i DgW ,T(NYU>t RGhccXA`Y-ahʧ!n2Smɰ-5s3J|gFv^mϦ劇j+<K`o~})yRZEo?yBɋZB(ĺkf]~XS˂]wKN/0+3k}!/ @b hpN·~RO.ƽveO灭mگ B!ߎTCCAZԴI!ۉݔj~y@8᳿HF|*U8xᶟ﹫b~Ys6)L~mc U, -E/:S%'ziYVhsH.t'i:/MEsY.DRXU"^u{~mdj2u %蟫L@uu,BZ dj1f2"B3] n.prs x6mXX6`[$16^~(uBxz%CkkHLhWx|d?I`!.g`P7Eʙy׳tDsZc1fck3<ȯ)KqtW 3x%KQ] [);?UM,fǛҒ)Fꈣ ]` }R?nߖMGⷴ"Wm[=qIfnB=f{RAieD$;쩃4ޥ]xE BF{WLh~q;Gĺ;mR7z+p>!ᖞobݱR[Q9GK #? q2A p*a3d꼜O!2<̫*ǹzG+>0uiu9o+]BFEj[~V"ɞ9_>C /Y1r,B.݀Y!D2uO6\!-W+!6$ċ0n02<('b\4swz ү\ӱ.ixлBs=>bHbmT8k#s!2_GҐ77TWy& ߊ_vryirl_WҫA}xDBmƁ;(1oAoЩvRpњ'ԶZmg .~x=K qV4Q!h v}iP/Br/sӻcj=UAs3TdSf~)&؜{qZ=:r-&"=`r $e9[|ƣ8k;)GQ !k2N xk!| j SQp֊˰N!ԩtKokWo?Dt(S͢޿Ū#<7dwW֜&gq~sHգ(8mlɂ=ۃ ;(2Ձ ' $Oe@R;CΙd$l`>nu4 @%K|=Eq /NÅ@:NY!QFc6-W5`,J!pXFH:uZB Z]Q[@~P!p/~}y Ve]'ik5H<9|sJ21bvrUZ,eT ⯛?sQ 7 Iux/v”OmWMaH+Rk i5 \MC};aXl&XY# K(^*[qIy', 11q ϜLh(ajg;7+>IڬOTQgqSS7qdԘcdF3."#Ώ̰dv9 R#ZWȈWezt˄A,KBRz~Gy_ bd5*Z}J=V/[LC;z(xƤ%M:o=jk%xhڥkR ԟp;nZZ Mn d_#]5e@GUs@o/0qXCJGñ::擼В_XtlNqlta~Kn+Zw/ώG[;ĺ3֘4b eGh[ ͳ"Jit׹mu5rp+SqSl-H#hCP{4FI2 ^'&G/2"I ʫK$z.N3Z()$;x՜\H ؛1B/- E_`q::q(hF@ηtT?@hxW[==;%&[7>&n<׳Z%W!Ӟ\SCh\Zt@Y$Af] 3 S=W*Q$q.ti3HjufӨN׆Y^D…5%M2 &Ep[4>-> Ϟ!U?Lr) I`+`Q e0,\F$: Iʿ-ЭKf1,'ئ/>2J!>YZ'j+9~I!Plsϱ\1Þm YzDAXS9q՟XOiվ/CTsSK<9JDl{B-+*gki92^ &nJ{*r)GX_з?} _6D{/Ֆ, { ?X&0Ud9k[H!0 'sHy.lψ[GASôVJVSYY;EWAQK򖤄z81K8K1ٔW n`+opF"4B!C6Svh5`!OBx5hZکa27r_FIj0i?!\lAbpC4l v*zKKgՍʭ7Cs"qG'еmK`^[}셹?g͟.3f.dz+yҞ мu)FH#φ$/}!HB!و1F7" dž@S;(5yC2]) ,JX&ʖd'":|)b<sWdo]}N*&[bS(ԇU}W?.:nl$sAK4xqy&wv坑3D5 (.nZˢ/%;wE m,H1\?~Fgq5H=?xH8ͤe}`:sP!g'pyS*[A9 |Yd0ۧ 1mX6ṁYNl/l Y,w+c[_.+e 0 [Y :8KdZyY<-=ސǫ"q!^:e#Yty1b9vƾ1#`2^(FReQ*"d1jq `Xnye3R2|wkކۆTq&N$tZ4m|F~^e8Rf;ɩpc6T곧 JpvNUڂ~hTQGc@t*47ݛH#)/F^?ꖩwt g]lCy` 1UԄb=ЋYQ=%n\l!E =햀0?cZUۄ kq4ZEȞ$ɯL&1B?Dޒ~l}aoj'UTXKR(߫bq]5r *$ck}# @)bC섥}QYwV刮)*&YHʼ/L\ T%eP+O2+)=p6)} I{*(3IX8AYt;i[ie[U.o)[ŷ\0Q90P >HD7 )>/%,-޿ΎՎ b$FLxcث'hiyJNo:IáMg'UZ>/ Z䪺֕L2(3a2 L$AasܭnwZϡ^Yw{ dUYZo&U.oHgnClz:4!\͢uyZF: Dx X :`fVO,]*KD H4 ;LBTmv88tqj1wrkbi@S,4mDn$ePڴ)rT{FwHޞ>۴#\pNx5z hx |Xz70F95&('//?$)Qo?ftEs̮ls57^s\n1 mK MGڌRuUn8ԇh-b/c QDO,<Ȥh|PA0sֺ*oMeoN11r5w O܇,A:8GY[&=%/1ꪵ=%Q0}Ui]p^aeuu~kZ8ƊQtO(hG'RwD^]ШJMj繧-4RFݾ s(z ZiBbq#Ҵ"G"b!-`i_Go _9)y67uQ"&vrk/!UVV8T)"LFڨ.0=ur`^>WNcI"zX@JG;anEPq+s/apЋgM옓I!2˂jHk-r0p1 xkhG1qˋmg`jkk},=>4"]˒ZnWq%rRa6w"vJ_Q֋0*6yo!(&P[6ǿV7Sgtu֦XkgBߴ3Ў -o.1X d# W!ыDIAg2+ RՃABx(tR~:Cq44VT @lx طdimuBB4U: ˇػiWv6 Yu"u.QZE,a.ꁈҗevpYОR8_3bva)H;Ii4yRTREKIĂ㩄 c2;`0o?9xKh*kQNȸ:ZWOSo|;ugΧdAu!+(BWZ^"Pub p,)UiЪK'œ2{a6" lHzV{`XRS+0uPeF3ƁȠB5qv L`ε&{Qx]lۡS.C5E4Iа8Jbkvѧ -Ҷf̫[ٲ9:ˮ<dOF]'"p!,aXb3^\ݺ t/I!9k ' )h{m(9o(gZ{C_ڳ:+"ZǦ'5+6%0Uq)BKBs ^52ed)P 3=W~dͰVڷy} +m~g堀0U[Ǎ6'C:!b&ݾKXOK੽Wx!Gx$aN"4\i*wmB(c;qXz606›53p.,|PmZ& in쎴k8h ̼7Βck ,jZ(Mk;'2WF 7W/fx$_U(~%e'1~zNvY% L;6ΰ+ߩQj]  "uR鈍BsFvL֌$LԢ1K>&J^ד/΢c~~bUQoݚ q0JZۺYsw =7$ >USs=~^a[|f^|$@Z-U`V SCxZ_ݠGP~4L~? -`o,eEޭՑ BJ9=Sjk>uf"T?^#cXsvEBVmJg hvH3pdUMEtPÕCdM\ ,f <[~T5!P*pJTZǢ&ߎԜ} \v9ez0/d^?3%v"LQ~~-vo} Psp]hX >UelX #`"j5 bm#7l6X 23ppLqDn׀xNb\i'H':3<nS:1S8VT%IJN̈Xo ܷל$ ;maTf"^(ej`:j5JW0 j~8QivU @'j` m-pU@Za5XGh 9(+[C1-؊OhioC%<7mgV /zᙾ<.h">)TAy3<2~~a%S DSie;&aW7c=Q|L6 :w -G a14?V4 _:yVB'$<|'-g"]S>U=Z"8h{^*Cmfe @(h w?|{ mOdz TfxY/B+QIhKO) 0c\ͦ[ǿYp#͒~؊W$(PK-|r' VH23QC"7|*UG|~J"_n8$UQg^/a؟oUB_c9^c)Z4b*`3 B^@8^P΁FFL7qQzy7ēG<G9H< SƝEĤ8 @ʜRκ\t0-!FGD(o WB,y)E`(6 ,d@ %҄yRL/Sy 8i wK|FҀh9ggƥu}]mfT5%<<$Uō=ʗ@ԝ!v a=$KC buvQt!hؓ%pU9s*.Tv*0 ɮ{ YI&,Ρ`d]b%sHI=wQǓX!_+TLZ4P49lUA cZV0ro u|Dw_k(zK2GcnK~4gjiAq+ҹq,pJӋz/U4Lnp jz mn\.N;?RD`^}b>($S7ƻn$p*0+(} *H RǼcṷ" NGmJB)pn j9'@IIm졝>bCtqk,T AN0MV(゙)I֩;aAd(~R|>:p  3-7Α&!KqI}R &W*}QiE04.ܵT23ih抙{nc+ɗA`yMIUG`C"@N#`5TFh?I?Z(=KB8OUgA[7!395mTiRhh?p,RlA p45 %TBb,HX5,~^Xz0o%`%vf<ƒیvݨ#&G|, G78Q'Yu" k%׊A1О3&`Xu7Irt]dF|ac$XcDbĒJ (#ed s;D4N'Z0=B0{ZHvt!֗8EJAzbHy%,?$LJE̵)ޕ 8Nou$^U*t,5IW-O+&@)tP*vKL(b73rg"oaI"~hKԌ3FҎ䉵(bK9wj.UǯMOcc ى !uB@i,v"?{& כg,>߸@(+W,K}*&d#RsݩaS5H@/yhb gLq؃lf\9 i˗a5rœRς~J/ ~F6b^|"hOOlΛ[gts^wR:~ǿ90S?Lm_BQĊ>xIM/lTKp E$!nXN8ew?Z*00]Q_Z9woKx GÎ7諲,vJWPηHM(*s,umQqp48$ ?ՂEOC-a2CJmW ZLWCoqNQKoYZ4#;V,?#շoM4{rOst A?cߝKY_0l~K:>n9ʍ`Va)݆ϻ.l>dW 0N~r$c8MJT-hj?N9srXYNz3Z~ S{>UA [7I>No+x2O,,U,b$#0tD+7 6U7gP2_AkhyhFxz7 72\[E 3тѠuβyN6A voEqo^UZHbo-9hl0^G`8*pwT >\m59xg! c1$?vk܌ٍ' Yrg{=z, '|X4Va fH9yS6fW5 h@WXn %zTAect˱HCϢGLu- Ho`zp=DV ɏBK6Z'iA /V0gY(E7dW0Xa kz J9qI)_JIN#:Q Au66od\>ٮf6^޵o*3:9إɘ"IApBQnqt|:nD}qHٳhza#AM_Tab y HWNćBr 4hCֲSsx&擂-]g7l̾݇O'8i'mHO߃?W\bqyccm^3d[IX%Wd,=KV:0 [v{xCpNKBIBa\BJĨ!>'5&h5iu6P~@`~# #^`whJ˂YH;q uQo^.*҉,ICd3<*Vԓ/UCxVB8FXjBi2wg}mK"ۉ%=bZ7oӁP^@~,]~Rm5± :ch>K Ǭd],BM]w`kB!ʆֳInDne>%ҳG b_}ߪƫ>֥H6ii p Ednd*f36W$U&YϞ!1Aʙ&,+îX5U/v $ǶN},c]ewDL%c)^){Xx yX{<&Vޗ478MvpR;݉A^6\|;G *{E/ug3dۏMLfM]R}X4J5[灿Ѳa_p@LsxQvjUQP ;Wk Im{Y ˹ }GTgA]UfQU'/ PCذb`_Jp)e1)^ LSi YS~?[|F̏+I%c[4KFb?@QW51$҂7G" j=-J ؅0i&YH=a!&]c3 HzRp~ E>K eK Tb=Jl^ӷQ;𫠺JLX2vb6}pʔ|JpmP{j!bPE86Ra-<>7Fn=7b>␞ql!DD-4cfF 0z-&Z\~>)6#~ߵBıvc7Sl8aďgf12E9d/wւ<9_" m2!*ΤXY?@k9Qqp3᷈<F2sC䲅uk*x֧9dv=!`\Ipl<' \w4bZGv>97nLY7C6f+|=Һ-rift 07Sjy`i+GCirv^$-M*73^+ġB z怇 *?yQӺ :Mũ_K!l@1'C}MN*z D-zMkvce8ć 9xcpGoN[ JͲy!uI׋n:붞eSCiUSVzZ ]['W_60FDEfbm]ftǑנe;6 vVjcʈoΌjyLǺw+! Ys1Zjc߫>F}n)ߑEgLr nS=! D;5OTY}WӁLozS=,`C>'2ƛ4FSt{z1.gyPa ʂp#[2y/!rY,;LRf:h䏩M0qF$mwv=[صb *A0\y1ڼ*Bv8!BkLP'|EW9̪'S1Plۘ?&ZOګ!<{йj|55$a`AFI<]L5ju^n^x iy ܒu2!) c݉='XZ@(ZyN