#!/usr/bin/env bash # # Copyright (C) 2011-2021 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=2ac56054c571e036e47e1f07d154a4c8 # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 o^¿o_^s|W_n޷$J~qbF_] i_sg w{=MXd{;{L ǃhFfAu<h"'vnnDl; X."ˡ'Wn`FwlF~bn2eaDEHv'Ek9lD$Qx%  oYa`8)$8wwDc%bN$MVh,X0@+52!$aZN ܘyd{E`Q3]߉+s6 Bء 1vA!D7'rM/$O A όdq4 eKf d7R`# hcW02'ᩃ64a0.,FcX&0MBX玅FS]4+ǜ2>SuOƗMa} ?=>~Au/zz6fg~Ot`/CM,?ut u_y)ΆSG}~3bۿ詃l0zp}uVкqBnp47yƺ|,@ /@<)vaљ#4%FafYL̅F]^؎u k`ʴnoDD(SΟv:0{?ͫ?ߒ(I{Z׶| WoJooݮC6T @EY30=Q힎7qZN;m.9-b0D &m݅ JR2Y @l]؋!3#iҰLyeۊ2EWud$r4!<$,3 '2 b3N0欐";8r:`ND b}3c3LJ${uG3N ]f'!Nje^.NhxvG ּ}ftb(l7ɂm1(1% _4'(Ȁ%-9iOP&+Hyx`,8a:lA`FwSMJ_>nj}PQq{auة3Y"-̫JnxWլȨ1qfX];\cર x!lhmG-~CĐ۶#f-c?Ln|63C<_A"b@2" ؎>uu*T37 Bk4}$ cHp'aL-!-y@ $T#a,9^x&e@n""9xu O?~a{C qhQ3 IukZm9Tic+ O,pѲ[K[7G v)y dcM!K ,dYv%FWS:cУjP%w5́ ݘނrft61D8J֞%'sAwNJWgf"*ȸMH-ln^:1sp JY|+{ d,'injE<P@4@cjiqiCE2&X ZO R޾,<k &tmflFl;,UxvapX1L滑F6[ n٩P> aXQ XYOė:  vW"R=^~?cmNg`d]G& _b<-@Qc, h ե│ND}6fTabU,_??cIZpTmzt"7Vid$>MU͞srp"ʤ3o,'Dl1|*|[V9^HI bq)<E\<[7F瘱s MY(prZaR-/R<9`AK . MF4*i:φRp9n֏(JuW˔7w iʒFPN[a~ dSU{PIw-)G߄!p~6Ř So·D{GBR6*Ցѽ*b#' KH™,OG;b=ڐp_^:_n2)cB㠤kQpE.;X)˻Djr`Y.'ǚC`isƳb6y6*lz];y(G2f(\Ty> GJqIC{?l"kX/Ķ6@5zmw^ýcgt7`эzЭcE K L\u5P*ϕ'#cX 8lkN x6 @[D֬]IIh$Vh:x0q6!!AƷnd!z_f:1bOÅgmޝ)嘰,;WxCvm3s{,g-7_*d_Oжl{ݮJy$*h dS)j<A_9t>vŜR,0o4+C9yEL! -OegW茭5|!"Xy΅e1ӝcmHa:ݿm;="6<# A!HMBot솑wAa+<(HE'(kH?-x^㞬5DhXNu)}əKČC$|rhb|Sv`(!^ 2Olgy겚P9[3 x ԋ'3L M?H'aIFt{~Q$J2s-Տ . 1O!յᘨBql8@:~%# av.wf%1hCI.ɮx%(K^ ݞVyR$KȡW=7[g';]ck7a(Qi)~aòb+ZGnH3ĻfM͈ΏH.LOd࢏ڡr5$ d`eoKp*y<#ۈf֣j#|iՈj# \g`Q%M6 *ZN96b}Ii}Z\#K 0pҊsWL+,!ru8v!HPENT:-) x 59Tzb,gJ-(5wd\_Aky1_w)?'OcP/?K_EC?dACXOw t16KCuTC7zg/pegd[ysmM]U}l)=nyC h5 }oE0jǓ"ڵ +*Q ">|HK}8z[b 3]:*keNqZIAN6RX[9Z+H$KkČg3o͹m$,54Ÿc%AߚnT!WN C5 0,1#=ڰQoßykx#%taZC^^43Ӕ ^`2{Ī6~mы!~5NlUk+cJ.492뗥oyRjG~8Hj/G@г3Z$>7J;f]ʐk ūӒԻ>ݿɻqEM5]@}4d3o-SǚMeN*ނ+F@Zʝ" W2f:A~xD{wۈcᡎhn-_Uo6ZUBחp/;S-;('~~ /GG`Z-2q2&Xdj~a+i麒v#̠|[(_+۪ܸhtyrWM5G%޲FYǻ\/ {wgƧjj@kEQcZsINzܫ Jq pBαEx{5 o8NĹlvGx?]Zvy+M%%0!W.Qz#IA€i(7D(biO 0z(O먺_jKdi$ BޖHRx&#{`%1Rĉ6 ӿq{!A{/6*h:~ފ?Vy'V[+7ج[DCv&A*_SVۃ}/.UYiKZr+4QF Pf_iOeC Y%59R!!qLJOċڪyLvsj`6QO ?,iCР 8\(w 3@*d8ZR,2Q^[b9$ dbdR_+;5AŇASsK)bxG'N(Mq`!TsCU_&MtNG.E8+ÈD C+ or)B /!i F ) v ^x ΑL[L" ȏ2!:ė/ kպ~մ#,=U|sKVGGKʕF?a-a+5TONt6Л86g8VE-!c æY/ /QOS è޼QBY #*Il1eȷdS_ B"J>G(_J.txK.j<@;u#/ftUo?y+E:Xʧ+4.R4D/9"T,XMq#xQ؄vPݲll]|9Ƞ4ނ*PWNkuyu Ϫv&YlԎE¾d7jWszxF<kn1 iOZǒ %`OK8/EA%kƒ*#[ޟ;9^@oɚ^[O)77 4iQ&٧/Dz0Ɲ Ba|f jz S爩Wq5̖]2<ƊNPn˽{0 -8Z^DP^Lz04X" Ѡz[l~(܉\L[wh $N}2vk0A}8µh!a[άe&,d,8IctY~1$z_=0A8|¥Ԑl hCoZ+<~lI&cSLc1o C$ G*L>b %~1W0`bp:f /yZv ce }, iiybNzzOZ"<ɂ:ަ2`wO$<> o^>*8u4O[^},Jn雞닦76}zu]u+(>OIH)N^65sgҧqֆ4(4YmSM`Y[ ~FF1=f@8#.FP2Gc# e*d\1$G:5կ @db#-&!RU3;6d% ?5%w҃ >Bp Q;,zW ݍB2@ݻ C '4 և&1SaBh' 遯ȗGG m5e6(`o*CH,U\D$C.9 LO}A~ dW:L&S2?rL )ʖ#pzYFl>SA! 'ܢ<1uQ%i{5qu{p3ʟ ]7*$O!(d9A\DASh4, L7\Ma|\muĸik zv\! KJP/V0r[hZm7zlްm2hfEOdI3^8fD`N8C`ٕa:TpkC\=+cW$3qLtF>l_ ^pV QsH-ddM T2!wX2זfk,"R],+$ 8c>7k&VX9oj7'c.o'nӧss{=S+vl_{hѩp]hg_н=y~nݷow_Ώ^mnRJ(yc•dC8$k!KJzHϰ&5G"\٘flDqlm3&%]pɒĊ;nܨ"\vr!a+5 f+NߐD8=X4`ֆ6zQ#Ѳ9WD3\IMjd*hIWE$gRy0B ^dM~Hnj'i*fOΰ`.ukwTk 52v3;o4`yXn`,Ƶ,mZ֭* C04LeNsppjo8/: ,˗'$7W07?"_5jwǔD S)VUGة;OzvD LGxy:e玽膚ɉx0>r)z}qvJ3\m/BÙ79G:V'7.40 1|C4~^[ydO?8IomzwMK%oe4F5}t3z( W{,L"niA':ԧ]']F4 ie^0ݕsDxy N ?Cht5Q/¦NN< /v<ĨjAxJk17cU1VnC9 A' bS?0ZFؑ>0cyU\&'#A샕iQ9A|(Gƀn΂LIwirj0涰A6+K<@0Fij*s \ 6$v0(2~)zbwF{Lq㛥S/O9 ([٧zhQf<ī@YisxH 7 bC ~Zs*ָg$g3.K@sz~|alZ_u*mRfΧm DPƶ=h%;A77. -*~-'yƱf_d~#ډ\E >z1Ϥ;tj]_&\8;.*0Ϧ)*n]}D |1jѧX ^׀rj+2/\Qwsj;,.u߅bcg!&:(x4nդJ츱AF0J e4E~\?=Er `ϥN_s/o%2,KzsAT-[v/`Ɣ-?VfVY{S!us6}0ZA68-cx~TJ-`bVww^rOr !9`9#Rt3Dgf$7Vc)I}Uk#q9+ѷR>>NnwQr$1rRcvKEz [ZRU4`7irї~P O3+a/qjTVsvWV8Փ󗯪RRHz\ _mBI3 eBuV ɧohf`Y՜*FI0zggKGh E %VNr$4Zw>S($k,^&wD|X60E u ^KaXLJa%[Mx{r[{cvg\ρiZX$^^#PFh.t UnmSXzeж: Ʒp[xŇpN^;LNJwە1LfY3i?qP buÖj`?tdnW?&Z<?!G֞=$ QbINU-uE~^G0>e s%ɣä)oi0mmn֏h[=Pj8B-!oh݌#<4Ո%U3TE VCm*Z% kp<%Z,'H2eL);X6z3_Ky[>i)V+QhnF $ a V]G‘r)P(t#$À22dF`Jץl@_~!g4; ȍ} *0owՐAT@Oo[Qcri),0g+WTlZubIݴR!笅PJŬi* mn;J|Vdk ꆩș'#4eAΘ敛ft0AqSqABʯq,C ;Q*Lh cMc= ~s3 )SILwW"+q*L7M1Y =fD&7ZN%m;Nqd!X/[1䙲B%=A1pdڗ)-0h"%,vglK)YDzJ8[a5Ɛ ^xpݥab e&5SmeZdvw³ds_y?ܛwޜ<%8 YVO;ϕ<|^T!3fh++ZQ(1߼7 VMeG;cy#߶&Rv/_( jZy׹/z CwOJ_g3mmE۽B_oؔ_ } 79# l}.x@^|vO1+vc6I']Ezh?<̯4&N+{f'2}Wn k;mȂ%írZ>e# C$xOT;/BF+$BڴCQ|6ӊ,Xd3`,4`%7e??a4wo>Qy/^X;^za7Xh0b]hqw ((<0`9ς?y4>gn=s{n==2ؾ15Y>^~/4w QuWݺ׸uA'}1yo턨lm)(א|R4fd+ٛ9 e}tE^v$@x1L4rm{~tSQ!b&uO7/tgFHJE\ nP1I~GkFFM:t?y}XȨR&Ç 4ީ L1i_$'P>R Ei/I"Y~Bi84@[T&~1B )wq?G_ޣ6Vn 17ꝲ` "7uT(HzI+\%rD,i(#>+y[HMh6$D`<7FznY)$.lg ( 7h` K`)02uNx/enaP2 !f lߨM{YF4Fdua .2 |)}S"dtwaGb =⇘sȨlGFrSuZ4ʿ& ā=ڼ;Ml8|7)!fvjgL pcnFPusJt2KE|qqWwD36e䉈bj.ڵ$] K?"LJq .E*t c./ʘJ~#veǧliz1.`W 1-[ei1~ǁ˓W47EV?uA8f9pl- Bs̑ą R3۩Eʾ_o)V1;oGu3R>@83đɇL @2LW3\kߴk_*dX[ t,od+n@r7Yc N||hc܃IhH+V;-F[3]],iY)C+o"VӗSz9>P_Kp33"md% *t6t3غJf Mhs*|M[ԺLSrZ[y̕ z<P(Vď*izR~m;x뒍tK,ZBu], m?s*q`KB"_|,_R%+|ڀ7F$W6;kE!9;A{^FPV9;;UaJ5߰ƙ$ ;rLDx|nJUrC?Ґz+g? 7CG1&2`cs%We~+*d9TJ5 .r@|B?IV"x*϶Ud؉C_b$, 6Ʊgˣ^lsv픬z`V#7w5MZ㤔xƢĞX_LT"Hw.g;wf(ͪgFa'/( e'Vtmd,SЇ^Gǂ3EEl39+HےELrm MRv:XI[{W.]׶BtY-K$| rVv NUO'D-}?i4$vwsroIHZ òdgKQ=3R(*V3S89?Jl̠@+ ^Lmjz{f LMÕ2?^ǵZeCS*Pd†(E~].FxжJz¿p Zx9C l5Y 6a5$ye>KC.!{34rZC鱩Nۣw۟q C}NGgWI3I6xMh]q_LKod$p0*{%/$(Fba8Vq$ct#8c 0)(fq.=!ᆉ`"Ѽ !;9ʙZϚBSSzɻzYv44ē:bHMe)vҸB5=9fIc2AU66J7<~]Cb;aO6Fӡhyl*GFf/==#\$heORfxm+mMAnE~{j%r0SX՞Lr9}J.֕SS;/1]cV :n 3C}-\}:?Vמk?300000000.\8$ 6f3}lg$nx?R@}rطe#ws0idmnWNxag!B'=.,J*YIՓe@W--|,W#*/X3ǯ9*{yʙ7]^;xyp~?O*߼/;ζMm;ߣ;x焫]IF_oɱq YD29xu)6OnL]6dUoQuG\'ɇ @G%7nz 񮷠 ^@:( `Bg KkK %Dip,  v22ҢQ:Wj,H $hG ֠oM֤o-THWQ1{(^()сR7pcdzK yⳃdkqtd I ٹq7-Ϥb>o+_ l (u"TdJfN[R~V#)Db(A٦ kTRӖBS$衊JiٝL6[ῧ>yU?sC3̵>s\3̵>g{zvӺ]uL*`yny{҇'/Mz݄aKU?sU!(BBc4/0ԁthZ~s ?Rɐn!Ap+DcZDr|ixf-ο@$CuYPKӲ'ODž1JKi$טpIgl~#p .h`.`X+w 4zPԪàhyXE+5ljKoU a3q+Ɛ|붡7Jp3KnKAZc?쁛i-I)HA_r.(-2q8#uO!k\^iǓ:/'FȹI!H a$Ec5^7[ ;G1:!^+v%1T !Չz#7΂bߦyUFRăC!{](\&c$~aZJ2Z,*&hB\v/G]Bb[*vC,q!TgI|d5y8dJNԦ \b8%ʝ:%] 1)tPJܤׂ S*L )p;/NBXrBICʸL}މFSI@x >oN'g+hٗdg>-/&7#qXO>5YhӉP&B">=ԙO/y`S!\!'B! -n!$T]6j--cTy}1!XwW.+O7GϕMHN0 31aA coU[bZ2%c>і}&`dW+c;0I(?y?|Ͽwn72-A sK%dn 2%TbvVP*; c [r ppfᇐ4D}`yJзr&{a6Б;Hyuұ++ %<bV*ȩz 묿]_ڦMzS5ڈO!"֙(~is#G8 =py1:E< Vt-! h2V(kj_ײ6x-hVs%j;? ('㍆ӄ%\6CRF) Offy_nHxdm]bJ/!&/UZ͊( [J㤘@#qsFV)Xqw 2ԣdGxQd@ȄF)۸.um@ܴ9#qHXlQ^qM3qs0BOT€BӨgf Ϭvږī& +4.RPZFT~xf"ͯISeȲ$H)O7%dU`r'A;l6U33{ƮU.2%nFc&F-lj* ҬqGU9!NćI lsLtRLHӈfl]t|-<ͯ=sƌ5{Rk F nC:lbVhӐ?-BOFq:AǬ*}Zb7/5聚v1bF..e7 )xڤX]ĐS@cA͡oHy ۯXbae` =ƑĪѸ1 n*n\j/NBAdA2& ʴ| غi 1T1vrh,@HSʰA,|=XPLa<BtElwD48Ajcz O$͌e .xf3M5b׋&5HFWtZZQPMa£y{|; 9/T7gU(9),v;[ nZT ɧa91@)K6/:ThHcS #fsaa7<0uI:#hOD+qGkXyN4ۦY˘ɜS",6D:v9a`[>fo~=% _^e|]ayI1'4Y w~˵G `:liXMP$1poXDx;o;ܘj1Giߦ<}Vݮ!!|TS#.6XFX}}&; 4{i.mҬ9pڿ;[f4*I]x.jRҡ$Wۅf3qWu)*NJ$র~DFd?2tHX^i Of {qm^0d/XXG'6c]**]D1gA4RZQai.- tPTgG()Qw Q=H[7 pT^h<;ɲYhÓ]E!ґgaiaǏ7] dɜaKYw+u'V|R9!.e9b/T-Xy3Pփw+(פ) mo6'Ñ0:!pHh3 C4,Sۣò. 6H%Xܡ `!vki;!W>"tphz00|˜\,@g+mhbp(*^rLRS+YGVikEaTcɠj0;ZKFNu}T\3h_BCW8SLgǯ*\ww`(ةYVYVgYYY)1'01lɆ1}TsQԉcY8Vڮۄ7R;2\ VEC!}콧rU(C,c5^j 8u/ڗҺ|^ZG5tt3ًx d eh:6"{ǰɅKFĝgFm)ј=cw_dj"s~6г$X.FG#w^|ti=%>) B %6'=dP8ĦLX~ʀe Ba២VnGQlcz +y f` ؟TkŢ5kd=3o6SKV]'urig2K:SV#ZNb|%z[!q׌}碫8σgy';>,!7$fJeSY2i\S&Obsɚꕣ@6Zs}V4nt99?89e*6?*-[5]'-gO{O{|>[Gq~V6]&~jw;T|fӫe9j<dDa"Rdq';dw&)C7R'f_("J.ʠ~KF0gZtd<&:P5aSORp$+;ۗ:'WQ6zM\:Kމ^=sªZzwmS5}HN-0̭0c9FOg I^E/>Yɦ6߮=2>ND$xMѠi7oIOTbǘPv_Lu9\O?VƲo1zWWK1oiuw߹w߹oo2XH`I`}OB0IH27׺s +% :1pnXw}ZPp- vc*rT*RvW6[gZK6B<>0Qmث;HyHY5sߔ*Ԟt̠"N_6^9 AgX!qP˾(L{c$^ɕ?/=SmoO5!~8&*!Vp>nښ ~,6!(7z`\zCq3;Y_Ӯ&~׭߄夔5RPgoV!,MB)яoFbFEp䌎(Ck %S𡤷>c/jDM^'GO8<CI""Y #hB҇QZ pऩS$`KJd~ cÕF|QhPPz“ו#cu@އͫ6SG4ybo0$,VʋS| 0W80 \Cċ v=fN8("y{;7Iׄ9 A'wVvvNQoh+3SWZ |Te?tE| bW1m\x4=CJp^fHP@!ƌaZE`L#:c^OhA:ib vBRS@8c!I #\М!pfd"blٛ(aWmXBIdQp;: mximU2b < "lVrktC'MHz#/ۭ9 $|=xe['!^],K*^h2ls`BhΫ@Tg+2TϽq84>Dx] $ ơ2Նe]rTO_K ׋OVRiX:(3K{޼hDgZiu"XDsz/ʍէOX*Zx,> h ;ȣNGyԅN&ik(@uxrȃ5clȝ0CT }P}ÄZ71`80lKM/:١Z$̸a1m Ep`:%i&0R0 m,k]98dkԷE"7pƊS4mw2@ũ:>@+M7=Qe`<)V"Z3F/9 ?'O%&ҵ?DcYw=D󅜋 %q?iavM8Σ7V<\_ {*5x73ziB[G|cpx5r'[J[aK)h#DP>L ì h b`$%0ΝeȸL(>. Ϗ^m~V!q^Q N6DU46T8`>3XW!r!T>1EnUT/D ݜe Iy1@Qv2TYD˚+CHZodak;8[p!ˉbn$l#B 4dHp,cCFu9ܳ]Ya` 0ptW)]4.y&RR^MB5'(BmiЖxz$ĩч6Nq=іS3m;F0Xh} C']+򝒳 u{O9sݬɾ#xCեPHnԯ,acb z>>ojm3\9,u)Li'fn#Ab=XF ?$Q )BL]aХNjI1p0,H8Ps?ęiκ'$, - 8- .6$mQ|Adedx 1s{n=[}ϭVs{ERn'- [N c%({xTdSy] O\x&^[b7Xè@nIB%oR\,J,{īorqU垜&UyC#K.K[7]{ӸK9V'Ikޥ@bck9#%H6ų2u30Jft2Ln =L͡ 42YgVoV+5g26PdXi'{Xn% Hxԙ#2Bd9x-O!]%)|Ɋ EmoH嘖)ٔz] kx{d޶)׈%\jdJkNoՓ_Bմ'kd Zݳa!i5oB|D?i`iwd~5%]!@hd}-3`SP;,벧~Zݽj2]L@FtM62ldFlAhؼ B2E@֥4`j1Bߥ kF O(pJICmdFDTWAe.zRJ@˅b@08AxlX1y(Mސ(9gD&M!vY.3~Fa{0|:zɓ?}<9/;m:X85gWמ<gt50k*/+!r[q Bؾ, fK^_~Z+$ȊO^9dgFHVWˮ|+pDk}>> M*rX.y\A:qʸ|=Ԋ/l=ރߐ+-z*ïUx=}{PwĹe{u='Ut='Eïs='5{r=%{q=,,Σqi#C_ϊ-?tM#+ĝs*?M~ՎO&K">`O]AJ+^M:̀DbO+XiDmT?ݎ8L]w 2EZ \2X]~9?)Y3Y6۾=n'*uO\*4nf-+IZ)pÁ@~!xqXGͫ~>DLƘUt1@'N0hE hg誥GnCEECO0ʩ!s"K" 7j!04, ͿڳA@{3m@F$d^ǚ(GQhH~_?ߋ?2ۊj>zԡvTw?o\2bqQ,<ۼo㛙2g`S Cer _K8)Rd!T~+N_셕HĀFC'ѢDh,w\~oAQȭP'zLmw߄\i lJsZaC3+GS{~B;A`-Kg\51xza~;g cH!6{6Bw>t O.XWNtI\'Fh/#eCD\$L:$[Z; hA1xa{[#9܈܈u$"`k+X(scyT/ZٝwNqزڛ@Qp4.t 41ػX0!1%#ApC*T g;M*.a