#!/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=3b75ba0f4a5e1217cef21f30d583e137 # 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 \ys8O8a;׼d*YbbVdI+ʓK(Cd?v7^d&ꍪb n4݀rbg>/=/ϞS;|?ngO}K'+b~w?y|Ȇ:r k `o ?A=xmJ0豁1 |>F#p:8/t<LF:Ytncw`i?a'|0Yad8>w$dcD_@ŴCodӷD>iƷb΁΀><lv:M p#60+~& f㲬@faQH>Gc '#QG\.Pi c̴ $?v$UC)tl48[wjgx:NqPqzd,Bci?CxSvjhh@tI{d秳>a?v lF?"aC}8֠}% Phn(vA(U.+h;m2| ˦A`S 8Åz[6-+߲G ] nx,O[tKSvn3=o+4fmps7\- ,6 H3` ~I0x>DZ7s(Wloog5_tJ=M)߫fC>òyJ]j>u#V崿{'-6ŘY.A~3Ͽ%Sww _]gOl0|ޜ Nr w{wGxaLGc{we4]z?0OG8v4;ܹNd^P~CjCzz<A}/Ssv?Mo-c?߯/1CFļ;B~ģWn6г k~ 21@a~2Gs|yl͇ oaMV^xn^#k4{Y{M"k^ܯ{kԽ Sɡ4A!N2%>1'pz:Y4ޏ5m&;<5$W,}!+V"rg:cV|j7uyz@] ]T 1dI7Bl&*0 3zv C.tXY>fNF[Y59хnҺ]^U|]10ti?bho([nгg/x#>W&ljܲh{_W2NWk {dq?o}kS %w>Dߡ ,vK,D5-DČz,plu' 'O̷`a,tl)5Rӱt͌`6HVYN]l3tǬ{n&ML+ o]xD-ѡmܦqOgCІr^9ULҨ콜%&gX~2 wH ߇࿞jy F-rnB&"ZB"1JXF\qYP͞Y;Hj(CBu7B 7qkxJ *EzO4#Z r P7J!i׵<$X4pkf[U"d1~AMr7ٲY6N?j%vj)[7ɮ|h7lTtln6r u& 7"\P8 Bp|Fb(+qFxzLo#Wv @*-xJM݆ +d yYռd2*7ق 6 hM ӫ%n4HtdY VV;JN x#l'mZpTN?A$(Ca`e9SEn403\2VRIܨO,{RؾfOĥV3\b!AGbcABliP%ݮ0تZl:ȐEv!2QwRѸy?Q7)ւM5E{3e{6FGбhpg+ QHNN!ό,r)4u2Mn޳N+ns:+5%4fQ _=q#".$G[AHv Hؒ5B0còA-|/_ gY)KkCeYY,F׀a]񞥸K=TAd,a5&&Tـ x% l ԢR%[0"m,d8q-o*E-!+$ǩG!^*QCH9 !H zu4HG%TsL/0Ue I &ah# [&=xLI XDZKW5U uaC۔(d+TeOJ@V\MnnW20TJTO8  ;taҶFf<͈Q<JxT O-CNB;p0hx%8d V03<m~p۴e\$L7y G<0\! ǮH97LF<<5čcѣ-K\.p\L^ y|zCDF# DXL`"YG-/Y"fsٶG;F 9]uv'r,4NSu;i}lrO{x7WvV- k^XJd@p$&vtY5VZtV.ډ>F\yY.[tiG2釉m/<|FL9%O]B/25(;[ĊVzպXeL* Kv>),0]Z QKyũ" gkDfP jrr`5*DLWo3M;cx0B9c4v_K,@NBrx bȯU v0wbX 8 65}%G`#+6QH]ip+%i!zgʕa p" #Ez夙X|cJTT)3[T*Y˘ (9E[ i- V~m 33Bln-*C}B,6 5)| j.]\70PC$0%fm/D>Wʈ.ϬX.-.˪ƒ0d~jixp\Z}9 KJ˺\'ss15`ޭ߷w;)3Tb6r63!n+ѓWE݂z,̽)\%eaeɓ&( EN3"tĨ+*榼ҥ\?!|P RR̳P$a*+,Mr8]{3cL@mY(t%x}H'"YH!ldR/n'u,]܁ :^mS=lxjՁ;RFMx](!W*2jR`2i-o):W|A[ -۫J=.)")1ɎeeUs(74Uy;oe"Y1zwʀoXs/Ȝ ‚Jravf䷷M:Y1A,K~D2٭suɼaГkX;@^4 VtNKJӬ+dnMyj 'tQlh7ovE2w}ȣ1#^ohڛT|;gtxuHUxDl`HPF\++[FG^kBzt؅,TKd(q00ykո2r0"|̘CS'%a -L@'5!ީQwyn ew~oIQ ofh|: Jk3; 4_ʼncƠb_=$*(q%"|A|r'7OÇO 7ݲ;S$z0f8fծ5ۭSu T˵ {o%Bgg>ݏ /S`xXI`yAJQg-"KQ!kڅXЧk*P;;V2w귣k1PqCMd=yGW.+cE}52r>+Ua/_*-TBOa\UaO! 3G}_i۵~u?)oSsLzxފ5LTc>䜁Ӡ ذQ Mϼ^̠RӴ#OF)xq#2X$4Nd"' Y'еTSsRԋ%ePam6H)ǚ/hR^k$:9JV+bCe|]3*Q0 :%B$c2Ji ;`JVQO /FkaQj̩תǺUT3϶ 1õP`UT'q_kv"V)V%\엫<+U(0ޥӣct{YP tt]MXX2=N~O8%;PJ~.a7v #e~"AH}}@(Y&0ݑFG 0[qX?HHS+|/ܓ-$74֫ .NV糎A+DraGFCn (:,=A͊O҆ oƚ&ԞUK#|٭sjGjE](|(~j`N[rof^nV}G=_`vmRyۗlbݿd9>-߽Cq phE `K#wvw>:cziXz> ˶]f>D͇ E1\=.U*Ss>*{NąP0۪=Q]s4`L08  tmF#t$@9 Fbnz#KL S^ 6l7zzu mx{ rOħmHOA.ȿ+i "S%쮛bb>xگlm˫$ $Rd|>rq!@{kS_Xj1Ocȟږ/oZPI@ S&_' "izz9T|]SOKUSdM iOSaBad@iƫ€N, kTT 8= y\h澓ͬb.(l.H(_>1ѵM3sx¹8:ID0Z~WZ+ 'U4 F%n o -X&Ra}F*m< (Rmֻ ;ty0r]ƫr{N 4 Z6vt-DN5$@d5]E!ɝdHJhj=a=4%Б}H5--Q,x !0T v!!e %68M $FS2P#J|ڣ[U-={d>QJiyJFLᆁI(Gވa2UAƭRXSG@禁4@s"dbyG,̧j D|[c 8k-sid}$8$H3Ni%UN#:n8 oJ?Zæ 5$T{Sנd:v,@#uf ) c#ͺ>HEŴ%C(ҙ1 Vq3ؤ",ciϘX}Aݐ?d}So!:  "g퇉):@֋fxd>Fiu][j7>6IE_T[ Fݡ&U[u!Eͧ.(5Ԕ5LQ1N$R1Z;[Rn!ρC)@+pex<#2ϧ3Fz9B|"@xvM[zKal8'J #a &XtE9x()pNA )'8%s*)@@i5YDqbJOIkrpf~3߿Wdz"оJ1)]Q(~6擵i :UT][451Еo)-?|̗QXžcD#Q:T侊@MYc2cc-08&U@^ 4YV-!|aǕ¤44n7x BR9.`b:DvT0pS ~U; ]b>a{?P$d]-L @x6-NX.G ScpUR5J)uD]"VkdE6Rg Dknm %`NЬ[6MjN7+1d8V|AY;y^8È~#6Όb6d^a*oF ۪Ri0܌A#3ΚR]l4(OE?s>q‡KimW]yP}x8TϺrX{ḛcp>+F@tF\:^H˜Q2FMtA͞mxY̊b*݈{ xFOk/||JqO&) } xHO?eR`Gu irh cԑ1/abZFaP=HGC8\L$.?F A$Ɋ ]W&A~SX+A ,[( *jglF2dVV-J7Qq?> EMNo|DYu 6/VŮ*2GGjxma(pˀQw!.oȄTFL)a@[XIAd4BUu,]@dwתiI`Pof0+H>NmEjs"K+8?m6\p~( _VK|ъw⬬A )'01$A7~a +3AFg>7r|{j=+?AR?UsM}QcިoST(5[ rOUzpr9&%;c8\zZT}`N_~MOnSzzF'Ӻ{or5mO񞲿F[[7mM1ʧZck_,v'٘.]]\}Q]+>ѫPg 6 G LQZ: L?&uGXhTtD94i9g˫T+ Kbi3z]~ۡRsToxelL&SI3Q2j llo*G';2,=P D]q/tϼhsDvjX"{Lq[n/e@o[/nu̪5&yc;g0$gg0)]ՑۍYtFłvDFb[Y4TXN 5+hF9Ltl x]GdЫfn{Oh^d ,7"D:}?01]R|3jRZ=.Kвd@>1m 0H" m 0ז,#G׹.nQICDS9/@v2Z2"KU>ɊjD:2mbN scqaO8_a_q'Dtdl_#%nJ\>k+?k?kw绯ߩsV6ՊܻL$8}٬kzo0ui5ߋWj+س4Ѿ"quuTF;g%6Wbܢ;;;/jZиfҰD@7cԂ& ,`NY}`dzֽLķ곬+0m_Y4JG'f9C.FJk 8,Ҽݳ~lq `|)kmRq}uxܩoWUPG! 'Ž]1_7ukG/ߖ= c缆+j'~/g$+{d }IExI{X8C (Ti6vSa7c<,2b1]8枩jj^T[PeaK6>\>Ry+ t>7j#YOua?D?Otvpu*x #VGcJiYlioSͼ+?Xyܪd ,I#| ٫uzLto KeV/e=ݹQ{ U[~ kK3[&?IҀ8A׫Om_sbt!vq>B^$85@,`r)C63e39SMDthKQ,٢oW4'G~H*>Ewv'$eC}S*0 g k g oI<Ԕʍvt>73'9hN͇Ce-D٭h;O䉛2)[/u@f l[LYƫVy^ 4@6e}gM";f&V6;aL!y)NRQ2rG=cay` v LG7ˢQ73mڕ ..IbDEA4F5}~4NL T8! )T 8cxD_L{tZk<Տ@py<9H*lQP9֌ \L>J^?hכh9D{ϑHz$̷IҢ_M3S$C_zT(EEv蒶Hf2mc\y'td \lsw6w\"CEЛMMnp>)~lltXewPBop/f9S%I|F@Nz~)Dz2 }~@\(ǑSC`H`)p)UJ"a+4-)" ևMJc*뤩3؝Vp\R<On8T&;(xb S尗PɷbR] o#1NУXل3.s2 @gV5**)/,탐y쮽w<Ťʼ_=ZOل2 $,^骋֡(:']9,T|)nDKʴLrI;bG&cMS8D~E-)RtOE{$]\) IT=#A`"/|Qhȁ.ük*Lpv4*9. 1p`c{,df p)C#rLmPn2 ޸A#ah hH{i n ;zl{ݱ$q$=rkd,0М(T:h14QCCE']5k /;2ݍ>J*t>bem|I&yچET`V'{.8z$QKHIh?fDbO*(V/$PY^oζ;.a>&g`Ҫ7+8Iư`sDq>$%`غrfg"Hħ/`>1(;${^XQ >ʸq؞]NؓF/h #7G]a[a*€C>u#•pJUDb4KKV/-M̧ /o2L3,ċ^:EɝH# [ւ5bcߝ@2^1?")},Y_%TnzŃ$按%Ӯi=ܽJ{z蜂.1ҝG1Z%;K{IiBc 3Xbz<#;ē=Xc9wiG']t_< 'r1D߸\%B*:8nv^E˛Zwսm96 .(q%.x-IGaIZLJ,Y>jW(y/W/:lUjS.ro㐼%zA &wjvJ9;r!n9cE|^, RKi[s}挻Ntӡ vfw\,e8p,}pEyS&WK,i_`BQ :Eir-ZzYz5=Szgu|J5x@18?Yݞٗd>)>`xS+w,ͱ}a&EYу75Iϻ}N ' Vge,rٳ GXěR*1K)>\lF 0^UDTU]rh"g{g&S)fspLr[XiIg+m6Ac'`y^S^k@Cs$ J664];ulebptŗdd3 %o剱NvlW$5'ݷEұ^`_aGsLALvwڣfFn}n9X;fBu^(Vro}ʀ5df0vri ٭S:uؙ]zcN!] t C^8["{ty8T34>J)uj;6 >@V`NZ{Zs;tק ƀq>̱&Wf7eb lak6)D+檲nY;$Ugl!r65d>DXoó(U&OEV,|U73Nc=7&QNzN: xz7TRrFZs5}1Uj'V"LZMH`R=bVQ -xdf|n^nR0j4}5 ɿ!'>bN8 yr׽`PLr"JQ+XGWLNk#`R~IRrx?;"B21e[ؗ֬-F6_"F.~d%&-:T`21$S#]S2dc+Fj3mÜn/`Ӟ+ "qWB3t/9E4fxPoedH^20@^v#{7 W @<=8Qi~.;0|~]7|j8?~|ckk9$fŲaД\au,9@O+:mp0-\QYjbq%`8λILր !>◨"Y-6u+6n#]J}遼;dRNy\8#[4;v%8iAr 71 uu22e3qےe,"ma(vr۩drΙ |CdL 䪄zX1kGʸ/9AfEfmX5%]ĉNf m0>Q PM Z<ÃGLI1蒞= WZi$)$k}S[`F7CI?xAs8+0k!u)g|I_Yo ؜릌_Aqv2*%?MQn/vΩ{0dSʐ he{$eb35npIgV٦9;ށ T~l a{ލعKh)K19X 2r}+JI󮗊R9'2:Qp>9ڙSB ǤwNLZ + z6бP7kԤ0Vl޷ʜ\Ѥ&'N) L]LqO0d/v]P8U7 bw巻,$-=o|_~ #^FMg(LV^~=ǿniV~uPKZ)bӊ_!18>V'h,izoh<5D눘)[-^bIWjKԏG.wМ!F^UV=$x\'YXH>1뉘^>0;y'S@&xml[LŞt Gઃa«)t3pv:*L2Py܏s,N1:qƀ^R‰ ,>0] ںga[bC) M#>ESb)ͭ?+t|>$JZzM\-^$WA[b/Sfd4$'Eb3OMuX|e@UM>cc#0  ꣱j40ti2:%2Ƒ%* ºЄ}VWZkG$~u>W uQV;iR"܇6spԿqܺ+OQF4dMҶQg-*3TD8lQoH.]Ty޽8j$JbaSyjoQnhӼp@Da]tP&C-is+,GɤUњH踳l n^}:ľ ɭm+bc2(bd2'=pRlj~ DѧYy= .B$ raagd13B_86UUZ!ǫ1?!p e(Frk͂Ppw;h.PڞS;(D|'<jʦګ׏؝ ^=z_qMψm,$(h:jWS:])E00,pD-P|l&8(4QcwPvDౡi0^&Ʊi!6soa3RaL;([nyikR Po@$oNO^W\W(d : ֟w m4g#s`r]kmqDe25KNKbJܗC *b30Sy0l0T/, [F)5?F\ȫ‘dub Uj@9D~~6aUʠel 妶NDRU%f t.9+!Ćc0a}fr Bͭ38T3iVF@`07lϧajlL|~P}` $Smt 19 Z>xI[TeU[:@,^Վv^wڇ?XIȁҰE/O)&*|ӮL쥬0085`~\ :D G.kq"}uqdzT1zW\blc{f9"ĤJba b߁sorna x>`{D>fl}t#X&1vAfƀâ8fד1e6kVgz {8^We90a2MЀCO(uF ]dgwur EؔVKi P|[O}o;i$eRK[)M9qj6ـ3k7Gq#;IL4\ZbGy4v N{o|qܢIF~ei)-ݑt6Y2!;k1&c{= Ga~M|` ?8u "|cz H v鏎e }\yI%k_/Eч&?6wo"8jcncP~]╗fJ^Yy/A`nD篎!꺽 5 8cM|(,5D`Z= B8 kqL7ފ!s+CeIqa3uÏ'PX7zPO4.&+NUϭλCܦ2^;o "n˔HxkPdm+qW>mr`? /ŒׂV+>)«o)Iz`cw=knMYm봛zWJ̧r}jpjw^kj%FMcf:Eao..&CC }WAOh(Yw;yW *:,, 1ޏ9oAś3as пD4#;Y]~Ҽ5of: zhwTێF| 3ŮOut@lt,|;wK?vb4.DS  $RIchNfJQϣU I@]# K0]WradHȿ;T1$^샼j񾼥h-i9\L H/K{Y}bj~?\nMNOFP +?7v}2שe:kLY%׃&KӒ ( B_HEwe GvB+mԸx4]+aiTbd8ltq. 2Bɧq@Uu6k Џ'aT JCG!}3%wt YpJ%D@f4Llff;9k_,_/[XqVVJKfXov:j~ఉA Nx\s`;uP^vtfa6Y fWQGAH [٢# 6)'ɬӛю/̷7?dB<ۗ| i fh\BE W|%qcфӌӔÜ-$W 3 Z$n5 윦 j1]C'Y 2X[gWY:;_hX^ZbD~]&m[N0q=ac[sQ;~rp=\f` SE] S$.;x-∹$6R R,͗ϖ&I(,Y6,v`-ÈSiD?,I ˸SuӮQ#[QaڑWWF4ګtR˖4i;ڋz[-bz]BKcFxcm#][_|ÔPYVa Cv&l\rnx>3 @:Dn=ᢌd(>XEӧ $olx8y # ; 0Cf3RǥJ\=,M/=#T| lmg>) tFe8K(S _ 'g;߾|0/13Q&F'EC> F%XUg6h SqCdq#u2C6I2iy}0prR"ش<>*yT:ϣ-Lg=EaʅRfYc`U2͹<@ Kdg~ݟo2|A}8bBbX$sc&ZgwNuo~ҝM,RmA1Q`#789l ?YH쥛Wy𥉉;) z#us#,'Eԙ 6uMHPR(&/}#oE.'jH*bOƻMyR1~'ZX#9N Hno'd愣RPW=J^2p8\\rV xRPS\XT!MYHjwgSfԃ^0BLB 4v&R@@F U&g%u1&3}KDEVbEwyuqXGS.`< fkD؊D٤v2'bbCMAoN]`la9yS ӈC˫s&K|A7oC)Nr9iD̊{0Zr?9a,_1,\ŌrX pK%+|esg27Xf*%8YZ7*.QD]] k_aL뫫yBŲ_KuV9VjpٰDREpe S >XzmT OT6Vkt7ւJj}zq'O< S V&$15 ' 0Xl0pcT_btk`#-`E(@D$3ffk$ya%&1_Wr6#3~ 0 ;Td9!@]Xt+IJ_?75(Px=XNفy8=_yw{kyw%vg:ȋu.yI-#5Zjnx<9}VYlm=8Yퟞ<OYqvR=YV=U'OֻSxO??{ҭnǕgbm<_&lp;M$EN$HH^B$NQ a9W7T_U/ Sު S0_L5Z8 ZL/j'0JYvSТn( ioS XA: ʓ7zNzӵӓ~TW? g&Z)Edhx)F>Xe,.e.AjK#z&9PDcngJe??k6֞Tcz`[D^l.E |e#M`| <GBY x$=z9ۤBKt8S:iةѫ#_+\Q ^ 5G~(g.Ӹ $^:J#:Z ֍t1aVǕ^p~=ETh׎rp2^g)ڲ7y@tdA^ .tioO,/>.U mqD\jKݙ{1k. $BKqץ{fCq "',v';|[| I\PSܛ`r[w,1KلͲIGU65'$W%vRWY=tP{]-mhtȽ-LM ШIeS:+$?AC C68tՉRpصl)ؠ-$tYf5( ĜLUZB3^ӹ w@Ǔkk z/s rB'wjyK]` $m2B%N^=TxӅ:_ vN2aKwPV &ڊV:z8'k6WqK @ 8 jtiR/ɽ~CIIS'N4dk; t؂dyAIUD\%v$Q#0p,Rt^OnJ5&ᶊ Ýl2r'\V8/:V[gz^;m-gɽʫn :#@aQ~7sҩ"ҚnBystT(%^D⬗D}w"߫yzb)8'uF9H}׹$z;l1?UJnf뚞MJjZ^Q/c=Q?59j7s=q!yt q!=^yYIlk6ݴ4zðPAyRf0FRlg$^%3 Dro;hQE6:o,~jsx\9Ibl骎^r8|O偷ml|rźx^.99jZ` # r+謹+"5E2m~ e8޿v ~7p|fɡlܛ f\.N!Px9QKN"1ܒEKE*%U? 8m"OH*^jA Zx)P*0 Ѻک>.TGi}G[";^/9  /IG+q;gcE|ߦ+F}amr:| }4{ZZ̫ d%,VsO )k'`:"uݼ2aojG(? $bHbָPn* _D #i;josf=9rBSU"3dL PfEb:Z1CpA/5F0%rђcXX26C*D. ң*3+j~MnXeAM`%.1ME"3(9bZnrdu䆘wRD@ZCtzMҭi'Twlsث^1% :$QZq4y :35Y9r]/& '/ؚ$]9xL𞙰}vrH1L9S5,_Xm)[sH:^bm!hf1Dؒ8ӓ1mwF0gdpKU"0;A854)XB;8167/Zu t6pg7K4eC#5pxWڵv=wٍ3U]6CV_w1pgliPq3ea>໊5ϰԍ%jרh5լ}Δ0 U4a|*ɻ8~}Ũ8qw8]'ƑvrؒM?L~\R/р_ͫ,J$}.㩥[9gHy]ӂv`8<C:;NnvfL9rIW1&R^ƙ*s贾]t}5ge R 0BR*h(uJɮP?L\Ղ׈P>=Eq(]QJÎ{I{-aU"̍8d0ۣ2i\AzFM3ܡKl2e}b p}2wBm%ip5s?9 m5_ tNʤ<ˎ$9:%SLScit;iP}:_g JLZeoݲ>eF%OOui̋~x 8O$fԻsߩI(6QX[]||k+ @pP j+b$t. ;8;sb-!½Ǩ[t;i d @ M*<3 j ԈE-ea t6ozc&IbL6$$#7 _%tS͟{wIUz&R7`rafI[JwQW^ӯ"3>qRw N#đ ݌WRDD(Q%v"ZA\ ET'#°CK$ XN@)o;e1VtÈ[M[hl Y@V.l.ς" IxQaI&!Z'Zaf&78wN 8:wbH~nmB3ɔK3΃¸q/=HFN8:ыt{}ėBOXnK{ĂGi^4oKmr;϶Shv^kEGY$*G}-AGA) J*Ty('DAtqR@]hФܳ`ׁDаcxof[zFE )){ i)ߟ >)CļbM` e2>(uϠ̺c_vw)Qc{U6|-HƎ4S/! 賾,z* zȼ|.f!v41NBWu=vzcQh;q7RCs*/}gŶ (x{l\a0+VUY=(j[¡|A  t F~636c &g<`%BߡrtAXAICQk4N$X CgXKQ05֗ƟRKqR_}Kr§JqW،4'|N) JGEl)xޝRٖD54M(.|*]Rǘn6CsGfd MAP2b?{x9r%{3k(80r2nQh@]jspndجd"v;0L60G$QТ\`$DJ\w{idVi:a݀* ㅪU&W;{Ibd'Ӄ͵JMijQ<63}pqGy6 κ\(P#}%Ц9[#L(?  i)%yt̅y?ĻU(#sO~ u>'R㢔86pA#j_D\v(Zr_XMADQ7:xU7JZ\)6c'(]9QXastZaKB0st [f(mlGY 7P)NHJBۈhh/͍'"crLj2[܌KyxxےhAVT*i ƙHxsJeSNf2)ot/)Uc_)Dѥ|Ze{ˊkp*ÒкRjB=h'3 `2ܧZ #k/brRPk'z-6vwTg{׋UUWzٲϦHw$]杝q&mcǒIE@'8Mn|÷g \G0_0c`:臙LzϦ |YƤ8N3cj%`/&ra$@#<3i7ͽOk[b=֚/DH ֍cv*:0 Ӊa?/a0=~÷'W)p-ս%1Rbb^g j+L4%n* Mb00`Y[HX~ɧD)̜g*zdJP?ar#RP&_  =>1㸟.(.gz MEhIw];kzQϓq 6׸f,&xĒ8|Jy8m1ngH+G*IGak:SiͺrxU"eٵ ,2^=o͍o4)^;i7Zw)8"#̔p$E_秓[ E/Rp??j"_nRء05|)\~@/ycׯA{J{xF%彊@xNT`QշX"@Vkv/R-sBUm[`n/v:Zl^g2*VG+jri&wT&Ck1d'XUQж8ա<0 VQhqIV}8<)8ȑCNCt5̼92u4rC{:t/{&^B~>"LHńA3 +B)^kL5QIkP В?>~Qpۆ&Ddt0 >WVaLըU&G/~]kա76LD#0) m0.H^Φ.4تe[W3>՗I> @}ڿ'"^,5[5\(6{-v X{ E` قpe$tr ȼfѨWbkiDlbrA<_2^r[/tS +r#jPs Hׂ ϣp>I7#&ϫ9siS_K>8' F;5z l{;{{5:L3KU6{ޝot|juRwע E,vAsS,G?~W0x(5a!S^j 'o{;WyOೱNA&Vy6z8Z7&1fM~ S@9Sm[-3!iR 'w,h7E-̝ P69 sTU.MWzƫxݝ'~7 l7^x۪̾;)VOJ)兓!?wZyRx#fdxf r ?N)E7ێ#,"ü #RuB6|xT4D/wH/.-AjyPn+3 z]>(q" U<>DZNYg?X8,jaIH@N|E~D0O|K#!SF#Ƃ5[l .B 7BNl|MngΆ?.p?mI$axW>TF<}><5DZWSYԚSʜ zVPΩpt/ ?=]9|QiVϙ"FR0َnwZ0GH"Sh!U(&h>B El!vHqu 4JsգA"ME>1bkg#5,t-46#y)hmr8I,rbe~Y{-_P6픑Abƒ8:mbNxhLu E@fRĒ5J s"6m2>Fe9: ң)@76A!)L糄$" "Gv)o0>P/[^pupY0`4i6T0"W9 4Vu%(W׶AvK!hP3 – Z^ՑvnQR5ʒX$e=L6nG>IP)uI|yB$pO;h@+AfC |ڡl:vNTrO~#ߟE~7|!;R2v[SL=:0Ovw+h6͌DWg f]T(ۢbB>u%xC#1aew[O=$ЍBZtc ljЁё^*ۛ92e\D K| zSBK0O%āNs6y 3*SԒUaTIi2w~@11̦-PGaq|&M%޾o)G;p"EX&fKDI_U3LBEc*PјE2W(2E}/aҊojiaQSk6xa_W=7-`쩵ӑK7GnpgO@%/R] b uŏ@ܻw20")FsFIObt²tV=ty\Yzs,R){TƯ z>H6}v@Щ(b}XLdiL晉zٯE~VjD 93y r0a9)': n"U  ;{sv÷8T)b bkJiބ٘SPR< ',&} NӡA14(ȿ˟%[<`OX 88%iIr5ޯzMu.W"miGag"t[cS Ble"#O9Sd˶T"'(R^+1EUOWnP>kgUbgJ]}' vS{&D|҂.dZV'!?VAقf ]EzLWýOكocu-.JT) q+Eӗ;'1w/^T4o  H%=M+hAz굪`iE Z}tEI{SѨ}&Hr,HJ *D+CwNRX\P I>os!'%G/`S,;Gl PMCl*^np+a׌I `O  McKb4Xγ[5/?$g`!F㘛k!nV)nFZa)?9_U^y¥{ポb&x4},]]dɝ_1*CO4,Yjj>u {d&6ú,t!2N^.V,Uq' iBQfE1Y#[X0Dq,Ύ$02lEC9猈fRRPȌ0@Sh?c&cc+n4YA@g"A 28ֺ?fKC4Ȳ<4{Aw0;Rvvo$RȨ7$\[^Ps0H}sKҎÌqh1M!fi48i8D3 [b7%:N-:|~[k|'z^_fz}[oT`CxRkA͕,WwG d׀Ơfݨ W^W ök7P}XbjگaF= e}}jl7vjMut<:lճ8Fkgد`Ч"_^OVl#J:sSkz>j)zXg8 v:hy~;I'u 4 C}œ:?0N:V@D$xIIUBH=lxPLbw*%D!v$5lY.t6&YYx]^R $po!|T3@&Nj'kC=3?w_وk%fb{RZ]ɶkujmxްmJbN;ݝ/elef壟_oU>_IRs|WGad0. 4L=~N%B"yڍfFF\6]/x5hfpXBJ}QZ=ZI#nq+ ]͍4Ҁ)k`F]Whk6?@_F}p_vd9\f$6Jh'EmnQR@; Ս LRynVR7ܨG}B6Eb i6sAHG|Օ|VP2_|I#V9H(*=M~Z͝:W]1tk_rJ̌vHU48J裥>b[O ,V}{L~钗z`Y~)2/6AQ)*ęM{Uf\0Jreagj*bO2_K%ORɻ"A?fkC7P5?We|AK pixqJ:vlSMQ"]_0y>GԿ7 > F;Mߩ#QU&^.ȇl66`ؿɼ4w>Ap^eZcBciݰ<PqNL1}i89F5KY~I0v ص^E | Zq`{Kfh|Y(2kD@QLGs8w$$|$s5$2rXckV1Fq,8daѴūm:~p 2A;~fu!l,9u~EQ| _x9UJCceVnj;YNֽud;Y_Jth*xlJf aiBY@;~ 1` dpy8׆l;O:iq~7鸲~cC ԎqǚJ$e2,&(eK23,M 17kMlw d!](g_5UvqCZ\Aexy0e/+_+Y9/ˣ~#A|j M I4NN2q:[!%-Ikջ̻s}>ws}>ws}>ws}>ws}>w_ jX