#!/usr/bin/env bash # # Copyright (C) 2011-2019 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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try to install dkms first." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=54acc001f974da6ea72061ffb2e96b38 # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 }^}-u S7_v^;?ww W{?oITv-D% > ׳3$NYUv݀?(SMqa562,'5) A8 }μ9Ofa͓6 &Rt+Q Hp،o,ƶH,d4q`LֻoKɄ0i:@MYKS/!0aA"!h -0‚A/fߔW8k5LW;ĵ г~FJoٟr/m&+my ,U wf:Bgso.&\,73A^:_q4*=wQre 5AmWʇc(BTx])c)3mIw,e^*c*\Thԏ3HId jdM"d2W{?xe_7}%WG 3 ae>=)?0y{:sVtčw]r&x)U~F km¶Z/K+[߆Rk |~zyF,~oG{g^X" Gb^`Vxs\QkRh Rhʃ'ສkAs2(l\Y~'54jxiRIGԍmT+݅7E5@k~.vTn^3OwdlN@Pm*C01*dc/^T#>-[+V.V:`[wm-LPvد#'Uȕ56aտQOT$b c0}DuFaZ}@ُQ c؞9/#>%2a!v &Vɺ^xvJt\Kc hpƃf uA& aτ4кY"J4lkd0r (م+JEeؔ k TY7URD߰zLnz{aT rO?mW0& l&IkmKl RہN%qW".`}qdZ*_Hc$wA0~o}.%C]{)40&V0(yBj➧M\'I(U Yzq.r.~w!{p-P \eH=fAdyznfJ`<0\7뽄h&䷎p16YgݗJ'b,XX[k=Fwi]9E` KKӡs*]&ܻ!l}86Zk달E+'uVh˅ʖ2 {^XʼG lv}-陖]$0pb..&SJךڜ8$Ds^ .#B}w~p# P|7]D"4P+9I%=rV<TgeCazX& !dpfCbinbM훃Vɔ*)S}~5uG[-R*^I&2TIXr+8 hA?> Obyŏ*WJ\+/8u½D_]3 Y*k'@$V(Z\NA7mKP~s]NyרRLg* \aRhlv xV\1 'IBDCSop'MLQըPRHnpy/> (!d_]٧Os$w`j *X?lP*n%.I8&('5?mPύ@\Iĕ.6gJYz)6 L:xˑ@ ~M@'Pu4OҐϯbE>EMO( G: ,srGKG%s< Sd}mإ#sͷ+O{^gA*ulPw˝&u*b![na:^Lia-#I)g$P=ҷϜ9m'}f5&3y+nt3^BwT"x-8~MP}y&lVQf^rÓqT(wۄm``qkYp&GCi}Fұ1n3{C"KGx4aVa N@3ggLc 1 ?5oJQN3^fPۏ'NH- &pYZsr6l-G$ O72!aYd5Q Idsv:h=c4><5.N4d9 JPm1~q?7ȇcOtѠf45Qne&ԽWik+O<@O~i)1Pbl( m6`;w7M㷀nKv:&MfLIJcPaIeI.F^ssp4|S8%FGxeFM9 aU= _͎94N 8At0}xH;ω8gd1OYDv/CK)ψ6s\Z<4vM*rE5qW݃ݮ%Y*A݅%T{oStNG ݦXB}i$rS16 PAB-7J #j]p|I/T5V!Z m~JϽ$?@K{[oU߀uSIg.}~W7HCWZ{be<<ɼEz'|' "-n7QҪⳮJWWY-NHOA\g3zd9n*ZܩA=J}][FuK ӝl`S*[gv G #сӇbȈZwh@8_Nf4hb'XgX%r1YoZ* fܓ')ν3t"'F~۰~Վ,zMVVj\hlx+Sdk(:v:s06v P*zޣ+B XzZw;w溸MÃ<'z[`xD vޅc8rLD ``|;HzZI6zUU6؀F˶.,a'5 ;96%Qb*6RUs__s%gM1 9Tעb;XS 2alhYDW_&)k>$7淀%# XI1[;annkXF)s $Bnmlی[f"-PB,K 紌Kdp#8p2 j5x(bW\4 }Fךr`h6$A8rjAɓScH}a;rrr4XRkߋmⓝGbN6$Ԓ ,B-Qh@2Q m%'{%:Ҫl;-3CUwI/94  肺GNh,%51VF\ nn31a'ƅ2hmP-]EZK4jo4>RX]ua;!Ⱖ΋/YyQ)x<{W; ʊG [{fjuF8i QXL{3GfC__ H"7.h.$LxnAYMbz˘hD2&3I槍O8)c!y| g˷ 瑱0uׯ&g QȞn7/;gv\"ӕp,P=$2LIw &`kLt)11 tPV aH |].tȸ2?{.r)#{\O V1mZ _V'9=2ҪCaEGёJgfQw'wXScpWK>gF 4g{f6Y^!3^)fW}Ox8^W{\쟪8`ajnlPFX`:h\#Sz$kjWQ-;T>ݛYQ9ǘ&%؃Wxm(4 _#L 6Xl71FFS:NXܦmPn˭o A/ʔE %Ih4`:ROY% L׮iT9yv:mǂu',2*rLGA?nzRZ,e//ة32q7n4{- &h b ق˓hףL;!07)qvm2.ҦKR|WIy(9t?J|eqR[RA:h@;eHFpvHPY"δ"@pݼ"H: G7jʟ(Y9SOSnޠ<Ӿ1Je7B'scn6B?yӣmfa;dnI?&7࿬og_65|7jvugٓge|Ƣ lXki_1>$"q/$_E.x#D %D8Tw͓:r)F~?NZVftnsH̆"0CEx@@|~ecv6cc50qN~6nۛϲ_ArpL q4$gn,C BOw'snw> JmrWE.&]PuCsб vwca=Bc#ԼzR\&]Ud4O NwZ+{K^RTÍKBoJT'ӘS v&3rxk Ff7,8ve7$"⠠hB٭m뿲(5*y.@K=;4cxuCn/ѸFbEyYb6Dя b-nϠe1ӷU"'!)Z]~ooc}ݍwYwA{W=x$0 J*b,SXz_-UDjnOZ> 1o񳰉(pcJC܄4/C:e\-բM˫`fh߻Xm̓k)b?n&H@I!gI)DqYJmmOlPڲڟIrG'9^\e/ BѪG۝ԱDL%0NB$zLEi  Ѩ 6`P?+ˠ=$)GFa$4%)N 0R^Pi^)4HNu T=0ugv.-\hA5 ԋۍi MZ-XK"Xy'ejGgW} qK!)h4@ۼ0 h~g]*G *oMϞnɓ^hUSo Pn;bG# \긙yOAM w{|!]dTtHq q4TZJ>x<~F{N$#J=~ߜ`l~H919kAC8ٜ.wA_& ~?a[S) P+Ɛ}$つe/$ !j6`@Pl >KyɉC@oD{cu(Hȟ ꩏S) m+VnQoI-~*\fdguum2sވ66-f5q eU̴}2xx.V-*FJʞUT/a4v{[W?_xyh\e;+{w0>wf"7ߨwYj^6h'(iK6 „:nn/ZNٞ]7x uRLo綦k(8Mv5W!^C i\ձ-mAKW|Pokyeٔ"xvakڟLۺ@rX;+6o@' 8>zB! ـ9*:`,GHE|-b AC4A64vuϪ 8*ҕS9Qqj O2|-"H=/ sWT=`yD z]= @f~ngOc19`)1qp>~3ړ{Qy }m)NpAlJ/] ᣷Gv5!kM,Ȣah;.'Aϸ;"|ΧDO~ZxS)xsqgekY3hWppyuQ0mrP(!-O ۀY;W$QdvtBFt?* ?#8H5}ʊyUO̠ D/qu$l)K2,:nXKZeuHP93 \}Sou2ic }6JSqK͚BݸX E/ ӭ|4?Vە-uj8'j{: d0hֺUY&޺Op y%5z adO4} {[{@4/r[e` z6ި3&Wq+YV >!h@fAUO(k.+M,rb 2q]RA+wzw!86@o\Lk@i<RC~>O+5G S a H;k'}dl۳7F>_ŒVf2BEzwn7dۚ;$?ed5+?ƄM; ohSfZpHcN(_/I8afq7<6ѦsSm5Ph>um]Bru7F-Ogk"48$;a@pb5A˩CjDri)oTvA7 ɂ7&=U>!'$$cݣY^k?kEڲ$~Tn}l|y #ހ \4j$E,%оu_WTg\P;l43JԽFCɌkaĠ\sn m,ӡIЀE|5BMf=66Ncl*aХxZTT w4+dt:Կgzq 1QLSMg R2iTcDz֨Ws%z3(4g2Ajx3ƽ;fl w~Fj|ҳ+3 4u#7]Nja{2USK1wV \K7.{,:"3 K(Po>[(R Ǹh[oGR Ű3s%>i‡KiBX[tT}|U?b;zǶr=Y7ӗ{N Efn^[*E/I1=PVNF2v܀S~$ɈL] qhO["LDb\!"| $Vkʤ5S/!t<|$񇃄2%wƲM0 W^=Klb6S')Ȓ0|5AM]ifK ,-CLqd=F|FӃh0Cs 4a\WUsF)j;ng ˱+r|+`Ͽ|d !k 3] ?gZKGhp%!׉Bi:?7m1tm'h4UϋzT9(Rn*NܪOvO/֫#jS3;8H>l6-`C rȏF+w(pKJc?ce//a2R2a@ǷpYt> ju"E-4p1B&_tHLCB\DL6R"}_բ%RH;gHO"{uMHex'ܳ ^;$ā$}߉g1'5R?kF7yYny^*g *an%nT_T/}WjiguZUCttAni+n}t|!%.:}8^ZXEc-kZǴ-]KO6u[N~U[;r/a V6䣕'ϵ^o1]tcms3}{|VW")oqOqQ0x7M}M MA8yH79]$O?IpAM' dEŀh!Ƀ!m>pjzMX$ɜ8nC/ B_@_dŠjT!6!!7Oǿ174li! Hp|&–TJå^yr.pTV`gh-}8y}?~TH^;}1(SCuQ7KNĒzYgBdeٗ9*x+ZFv4Bǔ+W54Mb_Q=_M8`hv#s&ҝ)^^3 TJ׋& nA9;[@ӐI_9a.l}qJjI CzzВ\O3xJkUWUMB F=7Hb7.m/٠Qtt\RIU0ס@NL~h7WFfh=ی:گm[g{ݵBw'FA>^`BqxQx:f& ^ʗ7,hv Rgx jg*7oӿ`Z . {<7YW]tgWpB*9*RZN]4U`0_'^%0Ƭ"xxj*oEK)SZ 14Jq»Lգ?$jHJIB FM( 8rq|JpRocv{$ Ě(g aC|hiLɃg9ِ>٣Dmhпt<'|D}Q,:ؗą0KvVE(M EN@Pʍh#r"`G~Q?zﱭ;?"_o,fHl顶lζ\.998ocLahA}41B`(&#pdbw y^:]6 ǰ5 ~)yb2n{$2n)(Uw{Tp%bkFFqj܊ccAfv$HiQL‡4V7 0 Ev 3I0mꄴSLz*:.)Hb3Lnx+rҼ^߂ZQ`.ŠcG}zC/ᚓ2|u1#wV*_(-9_mJq}74NîC-=Frp+ tw2Eg1β}&GK|X :"`Um,gSal]Bdl^ ֠G%{{&;}',e>ׂp]#JpnZ*J3h.c@k/2 X%vu=} WYĨ ?K_ip+0gZ1k yxsYFK>ҖT9BHm aRY?շ/UO쨘ocvd*T?z&_\Q}L8yJPydOa HgnEGgKe.JWjA\Rzqg~F0# Jt -s[I=Ft{iVs%k 9"ӯЍد2=|ֳnA!c\Wu / e~nm.p oE?z@&jJ05YK^* lK"*x+s7 w~bg^JT  !|w}~bE6׽??,e)Ԏr}azOro}״pfD%)o#lvۘ3I񕑟@ '>04op,РT_}1qX[M\>JB ة* M/[O+}_ڄ2،i&c972τe?Gcs 9_z Hƣ%y9BΆga (oD*QN髧CzE13IaEt5;BR*Xw^zǠ'|oR/"`-ڒ׷'E\vϾjDe$zf2!24&uH{,LjJ= kb_ uBH&p/r?jwc ?   ߉ Hy-.f7|RN\ hB)>݃ O}{#{8mxJh\ı6ضK-s>PC LzXor2kEeT,kSI<^ R%ѕl$v| p^sD{щVgwVAddBQ5Ngoh5Fy]޴UobIy}5G|}t|X;tdyBBw瑓9wRD9b߅E1ivG73¬4! i_{JB 'S(j'xciS>ZH.rܮI%尛L苂[T/j(=Rt;Y\GL[Rym3vQiCGY$&6gy=_rmyM/Žſ9>*w28.N&xG74(- {'l<~6~']3*"uȀԄ",><2T*;Y_ym2O5D L=1^qҍSy;30EIqÐcjq!lOmWM[CރP# J.|zB`} NC^:|e2a<6"ļmj[Hp7 (]"oPTD)#3Y j[|ri|r Wx}ijĴR:.>cxkJ?Escfݞ7- 7 T΋)}FW@??;>xM `:ҥS+lD"' Sª"zXLۧOp~Z0'$Z%jJRc۫餪)8L+1\_.ױP.jB=`D*|a_ q|hܭT/實iȅ7k'Gꭼ$xc*+,-[XKE{<?)2IHU̓G-s{C|( \kcNOͥ:Uur1`~?n;83iAyZ&%Bpp|,JA L?qsQhЏ0q|׻ErB>FwM>W/_f tI?G kev5Xts+{cP|Ua`|7B@OFOLFLJB%` %v){`OG&\ "7'ӆ.͔A\x d0)fG:7m*N11z/}1p3^:|3f:7XnNDI$I=<+#1UR}2d!@-n{l;m̍l'#wt'`ty7ma2Ms*; V13H#R ;&xD%YQGq_lbʫ N15BUBⱺ4휝1~sCL s4N,z4pUz;I.Α~7 jn_SI]}^}P5w|QMU=ڇGTJ}PNf!9jy_AQ^kTht~utRz Kyl4:~k~Po}X4FwzPmqaכW !}]oqbQ_ՠW5n ƹ_oZ8 Im~p<٬ jzy4wڨkyf*oiƻ:Ī&iVZUd5wNuQ ӓYi>V}#*qVs@_ʿ[ P*NAflöa[QAM tM1ެUQob:7 mt@F+ٳBG:~Iǣ݌O)YNoh4$lĹn\|DFavvɈb¹ϟ?WGsJ:'2G]>, $:oĹ8U82m,ןnongiO IB75HjD-%H\.L+(bR-/I-_&7&I(fS|W6(-9K^}\+^lsVgIwY>,:O{0>_WϷ1o[fϵ N;K1O '%$  (ғ23'^aaML:hzQrx]fbޡtݓv0BWIY'!msM>\MOНh]TU*3\tF'q䌯mFU,&y`U7@lY"gqiġwI(;pZrT}G!C)U=2waB__! `yAJ`.gRgɟ vӏF252HvTg'mGcxT~}'?f\>{LI28 &{B(L%\( u$S~;0K%82 ڜz}DVWAykC96 {ƹ B;)m υObR2o\!̪)L47W&,⫙70%qRоN3:NHצtnrlip۫ɘE+gjPW[pFM=f:M pz &>˰W*=Mgv#m䉘]3Nla$O2yiSFcL<0 qRJ(J]Ip4" }PN0isRZ]OiY ,&Sb%f&b(]*8, H%*^1#k`RH$:39Cə-on&%p=Yԑ))fB)sdв]R;=6vV IE;53BhX:_R!' SUpZqGϙ<P+UFdW)A&gַ׶z/v:fkvntΞy&%,3M'=X<)׮s#$[Clh-ЬD:_\ZbjG´va&)ݟW 1#3DXHGz,jGu%0jAJP!˜<^cԌp8̟8!o6ȬΖ:Y8ic↣b/yIKM#:og/uŽg[^lnŝY7xʛFV|FٳyvzQlv6gvx :y'Y% Nf$`(bjðH,Q0ceʛ?)OF7,&xURRؐZN@l?@ z2slk}|OOv;ͳN/~Y׷֊4 gPR}W4Z<=ـp!cp掏[um ~?:8^uGk۰ @ڎ6_lmugkQИfPO^*=k duMIfdjp}^lu/拵ͧn[n4dGS)89 卛Ka'4ahʬHΒo|>O& ]x?by$/$GJ+!T)3AE>b:HX,G)F:_i2E:Zƒ)9LNMR]J' mJȦѐtU [0QVᄋX/Dݦpز&mq&4Aiq?պtv9Wn(I{')I[l~̋,!O2 vŀ8t] :@9*俻{^5ָ x$&ڞiid uA>] fx-v''::P.8c#|h@c6k{M2Sa 5&T`00B}daB2hGǍ^Rax :i g گ;0mְd5" ƾ뷃}3?f:g]ܞ k½\L#OTf|ݖƳHR=EұV`]aE LI& m(0+>*K^Nnog/a\n2D!^Vm՜Aъ w!m$J!`(_k4nj2{t%s/NQT[ QTභ^[M=ob:ak}/|y9D֡قؗ-^|94;ۃ燏jNFOSL-v¶Y SC;A@`hC g~ַG׉jǫ+e{'Ɽ8u pT{遞7 q@XayANvZ>Ev=V(U"^պ q?"zp¨_E5(Kd K߃Ys0CryYёyGeܾTzͳXil7F zY!=ֲ$Ayd1 -N[qXoћ3~7͸&7tA$ y Scs;. p8#gax>M۰Y`\@stEmw1mhb^@?L̺amMb#hwmApvӜl-$ aOC(p ȫO QS!`PaDCI^#f6HjYPD妵0*]X14o3jbr~'Wɖ\v@tÌtRzզ 14ekK@;K74aanxR\FvmW}X'LeگgQ1vѽgIeW/,[5hf ~b_ƚm4qEW ~np'7,5E sEtԗ7xxӨ3f,Q1W;MUV׽Kأݻe3 C/Yz#=eY2x!=&jYƣ_E W% 瓃 QzXΨBI/n;l(k'G$LJaz@e0Æ81iΧQ`@>#JMII$H<[F>Q }0i 婘V/i';s8E6KЭSnn yD3J%mp$Q Ӹ~7epNԻ{>tФ\\%K,97r,E[4ИL5hiE~4z̼pE%cfGe%UxgNt Ml XtQ[W1kոD=n{IY©lM:sM{$yF(%?gKqIˑpǸg MUDL s0PiTYOkY`Wv?Ö+ k/Sݘɑ)X2uf :]^mІ[۵y= o{`ea(ߐ"^t)(9{Q$k+*qGvm5a.@1qԮkGxfQ psϧMv0j Rs;b|FNx܎ >Xm`uڪ2FlrtGPt%l®t FX+ϋҍ><n|2սHez@M僑 aY.(\=.RuYJQ":="('e'(Xi4"L~OsPgc;s8Rnq{C6m-|c !7 d67l ZUm|ev'ǢE?\[M\Q+i( dTdyOMTGmTu8uW~rR~}ߗQp+u\f_wq^_E7z M9mW@7՜9gzeq+K^pe~gՓtUe%#\G\ }WClo$(^]UߦƋϞtcz17HE"&HaR'^I6`"ŔDJu^>0+y'vS#E[٘=;;6akGe|`M(xΆ%IvWqo>'?D˚oͷZsay/Pe/φ4|żgCn^L[&x)n8xȰ 04tMONR-TxBw_{'c Bo懣]g#`Փ0hILeD\Qx\_V?y#,R:?#0C~If_R-KL8}I4b^b3 7Ҷh/)&8GWڧs,ЌCϠWg*Ts c7zufpZO =D3rP 9]E!MHƜE,S aoQ4+®pYzlLͼ w>RWg!#!3] j:u%FkCqqe"lN'Š`5oj!Ktb ٥}+Rc0g0l=2i~ekvqzxv,SmP!} p|B7k(eچ&'gF%X)BuKT J=]||wa}yXjǘ\C@V*ۧG.Pos3:%|'ܗtjNyPH*%*W.WIH.7xHk mB^yL_r"9tLf]nngW> _n?ٛafcx$%,իxvJ74#GL٬`rs>{M^q^L̓qp":(8p]z٪ X<$l#oiڥ vo?_fƵw7Yr5P 69g؈60lО. ߈WF)N#}|ޢ G͉XgMB@34jt^6QYnhD4+EڳXJJJrZӽ@{-eA0%;gI7fBnx#[? 7'}-6z$F?]h>0Lä$N·EÑv) cRp^:h O i=!VFF Zczz:vFEL/zz*)UX_&*:<^j CcAH@񠇴D8 ^T: Li9^;Cdྙyz;7h T:>=g)Rd/%+g=C@O4<&}6$o`\&մ N?;Qf#>~z>L`;wTv]:ՔL ;7I " 1}V`=k,㚯N4/L"M%9IwTïֈpuV pkP$BGguGGZVT.Ԗ+H6k< |>'ۘl:u.>hf ZvxFN#c M۹f%(u*zŒC].a=A-3LJ GcT̘ȦLz`:ħ'C]fR½K p3yUW4ib&Pb} ֪=mI=H[]bѽKT(NNi *R1o8Ј]O"˼Xv@] G&:@L;;+Vn?&ro}ls^=>7u{^.0&TBu`s7A}1r/+׭ű%8U[ց3ONQq|`t6*.}SeJcKu.lle{(u@A 㹫8MvSp](4H"$gɥ)}jvZkU \sԟ*$t3#d (RÎ䮥OAc0e p g?7[7c/Qk~T#W\B;Fn=#*XAwDJ!+iX");fГ'l ޸Dci#1`1nP9%LjDjhQ !ip]x@*\7^z%E\] ag'}9@$M*`a*Ur7H1Ӽq3u4ih6]UkI+qvN]hoЋܶw֮J6+D&%Nm|.2d.sll2 8]EC ~cI2 # Oix/F Nm m44]f?qƳ6F)(V ݣmU«p2.`S --\sC#m48јHƒݩؽJ%YAD.Y4HbGsȯRW,jSpX:~r"xJɁ-i>Jap83m3{92=3'=@'Ŋ]wm(/!Xri<NfxΧ`7kFJoJ͹oFi#netpz0ҋwVM&fG=mk<:gqa"o 4H!8KS,PfAsnUwpQ0aIH}֖dnKk ԖK9oʟh-nz$Q@D+({jtqI/@8,kSNNH$@i5=@f.Ƞ\pX6$q Yd>&W..q4#"'kWF܀#K㐾}o UtA/k7`g=Aw֔ Nu3'$Fp( ϻh歐:&AMXρ6X;y[{U1Eڂ$jP^/HdLWѰ.&"™ԉM]{+0+ ]*} 9" 3:GX )cC*~4WIq !1H^^5v"5n ]049xlZjDH*;#|1wnǻ9%Q?ufK4wNl XJeeX-y߆ &Ess>e0%%$ W| wsȚ-4飸{S2Cwrs,,e*ˇGHޝ q9Ol>נE{krc]sh4v@(:v\ڐ/@"Ya7_!D>2q>CH*yٟXB-!Ks}@v@9@vM@CN\yb$oS꫾u8Uh1p^@s9D6+ii"q4Dϐ==af8QcT+LYdP S#i`p,orUpƪIY]>"fX!=` Lggn I 0̀` |c4HУqg"ZL?$&].McX 5?p|=|*eYQ\ϐ{YZҏOOa*]^8t+ȇՁcks\r[|wG31{Bv bCwA ;8ɤwO18t-pPvsksrC@2/A&v' Pt"ŧɂ =CBa K-\AvXҧI"Y7J9p| 5H(xZka u.mvo8K {ImÒ`{U-rZNoBy5 i!>w!9`j'$&(*87O.>^%*xYd/_#I11ײt%}N-=˥\HqV :|y-LU:nK;汎砤r<10ZGHAz̹"!A^Gv(3q*n`6RfA _ܨ Oћz]3+BOMQЭ7 Cck jŕqnqޥ)x"zr6 r+"wy"] 25@A[xA! kf;M0Ʃ@.<ͤ*DFu8e5P&B`T}MWbx$X #mwgYc*V*b{,:a*4H-vf"}'0 ӺiL>܌.BLL#+m \o+¬OKM8JeK.bd|VWAF}݋ի۫ا;Rk c! dNI_ePpل`וiǽn%("G ݩRNU!qa.qNІFg]xOB`N@! c#e}KoЌ -) 0ҵAK{N3R6td2~<+L6Dz m/ Oc_i<ܣ:g% K}n{i\_O뾪n[! DL&@lu Wѕ 7L-ut:̮6Z朆erd,$y:B$#r;_' @BAՋB tTe[\78cre.o59 Gx^:D82U Rl;֣![5)p̹I3ɬ*&cjv`mQjYձIn!꡶g,3>[n6˸(TASL&:Si1qfWqO:!XinMcELQ{CJo/=1ꑤ('.wsXxܼ!r0Ll)͑kQ=٤gXOd$͌mYnBNNeQ,7S3w X!I*+a| tȟ;@wc":sJGdq^YЎ>>|" *yhQk l 'o}_/aQbjOЧ肍E |r'o]<-dzyhGP\Ѓ0ᙪ,^x -`)` 5 l'PEry㣽8T\_iZ( (dqUaWEsgDwkAG\.g a{Rl |NSМ¯解5w:L_R$2muk7f bK"C8uZ߿+ [E|(4ӏM(f[(A8ЕL_%> h҃2LN4 6}ZX*Ԝ*dUI4Xï%XMg͚&>Gg*4V̰6ǒUjϦxBXQLLkwt}zAJj2P U~Q~;p̩m[D La*x(GV^)JLyu/֠طBR(ڝ]L77T]T".ΚDLAFBҜb4rt K ~䴾_(:FbRRþrt% ˼^L ~ʑǔ./ (Zrͱ v+QM~ GV׃/v/)++33kq:\?/\QevULM ^yTX9#B$/:(9 ję P䈡[Hnvսn4Ds$9G Q۝pgNĩw4M ф"Bis^D2tM~p'wit=L'/aO`~ŠSt)CJZ,:XI:m:fϰmCV1]"h&}H$woHo(O@>I0+u?I f'3 ,p_K#xGy,GjE}ZQP wڵ䝺03[asYr;ws[uv=i-Pܾ3%H^1GbqoJ).ӯhF`K=v>ƒ~#[)Ǎ{sY ^?wŀiJBhx4g̤}6xg(qn͜HM ptoIZ_NBz~d\\y@gMlЕ]koCU+LpR)8 ,ֆJmô+Z! N;=L̍!3@Ip)3x[MuK:vM쭢SЄW28+%`!A'llmyn4@c VMFwi}u֣/aʑp@%X~,}$| ZP͉neA];>Twm}!E~Hka&uw֪?މvr0#PH\d E H!ݶ3[g:q+"1 8t6!k 1׳ٹ{KΧJƜRX-Iav@JRSg)̏eB `JzrVb 8q"6vWC5~\~\2X`s@a>aJ ݺR-RÉƨ- >mWm-k,wJjbGVh㛗>z_ Tu+C:ȴ{UtV]. BKjܐ;jہz;8۵FUKWmhtNt:Cs  ׀VԆBӑTc֒2+&Si)N8)fuMIMR6bI|iLRn8߆΁U=RmЁm3x k%vYQ)LSfPqa}wӵ6RծŐ 4\X3@tu#X'yX.qN~:7uNO}JdCMmmRCĘφş?.X,ڹtQL;9Ta1\_,9fNj[jcuYDl\MJKY)ģN#i.Zd`үһG͝h(rϝ\\Evr6oYډ٥ ho_y |no՛E]tv4[ӽMsi\t885D欷!F=^^+⢑.xrQ rmǴkXCsy`o {2#,%LGZ!XAHSxw}6r>oL~3l暂f@f$h\unT;QjX7 ,эߩJrr&(( :q[9!ȿ# F W7SC׸ѧ%^jvԪ5bcO%^M4/^b~I̲gtOs S$ca8 b*-rBq芖4!ZǴs`RiA΀9.~ 7;}tCԻt>)~ɳ)z.xILNrw/SU!ѓ^h @%^G]&xx mH{})>2FYwM#|{P!m<;I(ii$0HL ;Avm(e"2|"CL"$`Pb̹g|+5F&rd*HBVJuA UX']5?/'p%N=9V-|^ʲ)L ɘ"$Ss(d†a@c➮ɣ5 hpm$W':3DjKX勥4%lY,:QGbٳK&is %IKߧ?`9~vQ6j2O.}Ȏ稀/ؔa)*iW=7*d6b^<2MG|?a|3?2D].|=^at>D| f)"eD8]'Uj2`RQ#o5gcgg<[3 OCi!C[WeA9J %kWTјvruGҚUa.#!eX:L(3^9ECAI׬K$k?Y$NY}?֞mld *o|a=K<ں=>aE7Oo ᑀDESVF#zgn$/%10a훢XJHw#;Q⍧ yxtg6(H x#IT T uKtF8'I6 5='TBߍ?]#NARYhЙho.`Bw%H/*ZqS ٙ7j$WFH 4]Lo##t ZR2`cӉcaƸgOCɚT7'H`.ʎfqKhDO}|S^#hICZZoM<~z_mM}XS{'7o[~Tգ}EN[Ǎ&ԲRm»+S胪pS/'u=fIQtۯ))~~XoAqξ_Zc-|@- NV}P'fMMsV@=|[=8 ?AUA?O]<(A=͓^9%Y)~n 7 ,ivhjVM9>ާo{:8nҤ6kؕjJC%0gP Nu:JZ{{fYipgjǍX1CI[ Y*NEfna"qTv~7kEXz ԩi )  z %ZVUy)YmCSV&g|1ڰ/PtWR I?l/Z#߳|~Qk7[jK(LN{*ӳ/;MzXk6j)k*M+TI9U>Re/aRA?9I{/Ul! xG￘*՞M L0u(wS+ogSE g )ⶖ]Ƴo=sL3[]_+# } F7" %p"T+$VFKc_$գmaȫH=kGh/R|:Oz1+[˪e5(\msE==Ar|Zo)J J凗pDUy;Q8]z5O 3\m׆?"w/ƸW~&P:{ħ*rZMW5߁&WU2 ^f*_cJuq瑧z@p_XEàU]O4wJ__MsDNGs5BV\4]\A~#|FqF90 w:Ytݠ꽮{?J_1P 1/(F]8#VȦ\} \9ñ"iIB]/UcArVQ 'ڰMvǏ@ONSߛF, "e]"P}kQAMVͧexG1l3ɓ8F~ƟGy7Wi̒r;˓޸;ƞW =/ee/t$HNMmlj[dwo%+Ikkl۸!{m};q{| i;zem%ߪ6^æR' U W`*3ڗɌS>e?4s?s?s?s?s?ϿX