#!/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=8157a281f1117bad292d7d0470f2561c # 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 =f\{sHϿ)z88Ύ p* $FvMgI'wn ӧ9}-mN9W }>?wXT?8V_ITG2(p'ܗC_OOX#݆8fFni~x gAhnWyF,t"'vjpۍ \E<>2t}3e Fvc3@2 lwZ| 3C͜pƱcY\6c3ƛ4ܸviQ$l/9YmHX0Jh0КL8 v-7b徜,QLw `ÔDB=q -Tb!;SǏvpfB65c'tM/ZJ&%43  oNlEG)H0 l"9Qt4MaBXFB%x`ߐJH-c̱Hɰ% I|hQ$X3{:T*^VkMv*kt{w[M3hgN.ݾ,k)z}UYϴv@S :ESUPNw- 8Vƫ Y~? OAv;Ga=?-z^WW1FKj +SߪϕV++t/;jHNTЩTڌjc@<-5 @تSB&*8R+0ɚJ[9/JӸm"/N6mrjP#\hJ47 ~rk\zZgqؗT\gn=!&Yss},B! !Hj+g-L4TKMW86M'o Uq:.PFuU ?V2V#%8Aפp5Υ)oysx Y>b5^zPSn3ӚWNQo@ObQЀSǿ>wY ;6s`-I,Z_^lUŢ̹Q,7m>Dy5{`l} b}'y"$MG_IT% /t#{{x#~-QW[S!ocb9r5XAq ˴Nj K_H1rXRs ){v̈ 8^ L1;;A0~<;pslnb8i_V n7Bˬ ee&q/6 ,>8%Vcw7$bvfcJٶb;Nl%|O >' 98?^@?.*b.ۂz BnD3aubx:3hխjMm1]n(n_ݯO#^;[E*)ß,O.d؉9뵮wZ9U.Ǩums^JrY |@@8 :HP,T%t$(g\xqj,O PcVjWN8 .;s|'z!8b-3#3A" oS"HOv%6q0sD7 T޸rW2{HBs Ω2U"o?ZBkGr3ϥ߂/Zo*@4ڎBwD(5h R=Z}{M=@h'iуtJaZ@t^iN:,rݹh_J SavFإCd":F| N/Kej bIv +t_Q*ͦу7 Ej6oZlFukQoF^¿e#*:%x4yY1}YB2s* T#C7MJ]Mq$w (iQI+!R`/ KGI Mv\,Q(jq0 x"#5\cCB>B:2V#B?7+ apkRa"_>z=={{??K_Pǟ7?o~ y&/ @ Q )Hn=U~oGs@uXD1Ƃ|Vp_je\Lk0ʽeɣ+1ԙ1uSp"&+;CFL< +^G/<ECUɯ@GWR \twiFS=U.ZkNTz\mm52Q(#R q*s$UBv 0MCijf /&TgWmXцx"-3ea?fʠKR- 4hq̬%p,g` %;J}،&5xtcl#5qhB^Bߘnghq12TYAtYa K؁1lWyU^a{B)cYI4r?| 8/OzEbb1[Z*6˛UW L W|r$ZUulzs⿊qx?Y2(M*C* 2hN^B"'6h܌K%VBʴ}Eďig79% T*`'􇝢z0-ˉ(LdLi)k ܐF9k226ȨC=~,GM+d>ZXOt}$9S 6c)~dkP m~(]c%}n'$(ȸ HM  e:gB<]ap GVx)mgqF!}I,CN?8 @jYRW|璗³ 6!FMB*u)Q#ӿ /p{i MʟUo~ZVZUBae\璎ٙtjh ޠ #l!u5kdOP$ y$*UVNKa:ZW@rxRT_V@HH>Em&)EaӺOYcD0 3U(|fT#m\"rT2 KfYq7?.uy19) Mk8?<9 hQY b:sR(?H)v:BzίVKd6KFpUS# &Qi3EI䪜!%!pOaL7ش7 i͘Rdj;suC}$k0@gXӦeǦh4&9yK+0Ve4jmhz`|ye!64G/z:k-eV ̫ i«fį|^a/唲5@V}%̧SU#RX-…+ H|vxtP;puV,uFjSƸ,'\'-WdΜJS_s*>հ$>:w>1A rx +a?^"guoF$4-o m ۺ ݉u#g9K20SWLD\jMa⹪IRЌ>ŒBuT#C]A$o{8'ڭHgՠ~ՕQ(8`=rP IK7pL@Fq([Z U3Q:އ lc{JOEV4[I{z7Gsa?>ǝvh`jGbH.1x[nutP;-ʡl{|ChՏ _$ykd 9o]@ ~*0cO6lP *&jDsLUp~^.91,=E~et 5a,ʽ%bXkMnX’Z.xjQRfX>i_JC-&fɘB>Ř\ ʙuN϶ON= 8\ 1_42 GN7wx/= '2S36sXM;UՅ󈂙P90"Qz2\¼!(r }x-9;w.{`~ bd%gt1bV&~+\D`O.ku{y^^0J_ŠUfo<2i ȠG22H1+HPV!B]=`$SILtF>l]"˽W0bv0Nna{PU72dEW=Dy{Xt5|m Q@}Q TbmDw!dlGz0#A-k]i:a[N]]q][Y,{=g߳YvD;qií`n@֨b&`Q HvOW#0ί.0@c4e".s+m:c1Η @j/Mw &RDEOk:Փ̕ ZgwSmQH?3cP~=om@ .vؖ +L:*zꮼkML3&DUbO}evG "Oɏk)ߕյ{?33?33?(_4-%d*j&mPʓw +ѤA5Ppj5^%[ąYX^'z[BmVqu=9aS^y7x)Ի<;Bњ]%i+y< TK7FBq'oվ9GpwGpYaUK+s-T@b]RtWչq1KkuT(K 'ѽ)n&A`mc5d@1PV,{Q(k%1!9X tKK֨rGxд-,JU Da )̩h"J{O-!pzH@՘"9MȽ`B6$ Hj(V)q4-ބKnZQ2a)Fx`*LYꊄ́B84?h kL!8bgSA=^;%$iV&cՆgc*LpPzY㠐]f~mGn ɀ 5-b^] SO#~Ci Be ꍎMcatL#"`d2CZT bgϠJ~?Ѥ8/ g aYxxXAX%q}H 47/A,N5\5lJnRs2g(5pJow;R@7ql}s08>1bBz&Za_8P]4T) W.S566F,KZ73% \ Vp^ǵOXȫ pRނLԸtS}^v{Po(Pf/ӨT tbNd0iADJtNLbIZ7~GP^Di[5{ȅ/>2EU,܈zIaVY(BD<J; RI ֡l!0k۵aT :f.iJa$N}1gjM$SJ AH?Q_KL()$q6  6qiz;7 ۍx8_gR7ְ1:3y^:!a7+}?u.+|+]_RP<(pEGN *) D~/ZbN\eYW2;PXA[?KcKhoN%UzqXJ G]r틚y@b> yKK%8gQ a$s2- PFV&.` >Y} >ى&M™gdp4k/p# >5 gI-i_3sfB w.ELTs @\9z]%)ٲz>,VgXLtR1= IK ]:{ɪ o4$:BU(=*Ud/E~*=*^^oszBJz{\N]ETU*{!6%y.t%օzTsu&D*p LQʤWI~Ek*_ˮQ~3R!N7qy|-:Te{)ː+JgAhRg;GC;-)22)ȑDDIIJRfLVemcuX7@"Uo#DMRJ!Zf1Zd0AݯEEU7X#T 1{A{#]τ !5O5V;^nZubetVH7cr̾W˙%Luj&|OS7@Ijq|l+Ud9|NSܫ2s\m=WiջYHk]]UZYuN+ lnWMaGkHfA4gedݾVKYw^ZD $Q/~PlЮ<OY"? &Z~NKuFTmxAy6 GA]eN^HC:FhXx֨Uocup'ÀwT'5"2lw47;RBk>8s@x( M[d4A[H$gbH*5Ks F6[gB GHmFڶhevp_r:"^I&<:2=jE&7VIS ,L&b'mEHt]+)*r\]Z/'C.&08%>;te'Op"\D: ).y;}ujLJ㟶bϢQ_¤?ʴo}&Cёf1x0ӆFD9VTCn>.8;9qI{`,4^yrMx}ai]n>Qхtd’Gא29`a;a|U%/?3jnV=SBz}_R- ~h/,5R8sX59S׆@{vBa{#ru_5.t*V8"p,28HKQY9|uv4t`ӌ#M}Kw tġV%͐+fA)G$,+yaSΐHuNjZTKN@j@I-<tK/tWp#m<+MZ(!\ ?cr0{S{ W2Vr=ْp/AY:(g]RNp̕w4ƗMG#դd4eh3ٛRe9eZg(ovFCq6q")^{1y+_)((l\JfB|5Lڎ$n$F}f{e!G +_h(DO_[~ԛ[Bz0U]JsK ǣkiBWgPc/zu_WFxf/~ a&(sCKW"``< o2/٤SWi$FSI;pDXIFLsPvw j#Zin7ˋ"w{!;wk6澜6,~'c6C\ LDB@[N|:emjmgꚒ[՗唱\ ͦΜYz G:' g&lL\}qzl&F5ՄmvźWG߸w? ԸwlQymv[Wڀ%1491V["vkڈI{L^hL3YɔcR268lG{YFҧ>4?ᚽO^W{h9=^yI!ph/ .J. qst~x&ˆ??{?tqi!+j{{= =?[_m7&8FH%U9#[y2;vc0[lfdsioyk}S`:ьAs J?ifn.YFL6=ǗvH5:R+ rnR&V/ 9+$8W*bmɒIY+f6*0UN5(dUZk* DrTteɉ-fҩ?ʓj*Ju{??????????|a8Xl0fHFuO9 0 q|NqFyw[Wv}\li2?wk;'{9>(P|0URTYNOՕem,97ߥ޸OMĴm6pU"l]S<1UuG59Β7nB Ԟl'[Pi;@bEw_D`DQU/OYomڽ n{M@UX%\nmC;קӢgPw?8 ߥmM[p[!7k "Ux0(؃[_^eؔhS95;荡U6; s<<>wadMv(%\@oe$~Ҥft|wm=;N^vnH3/jTOl2\ fLBm# H"q(cse9. >t@ep$YZ9^_땋SV^-sQKwl ^<'upZDG4Dj+Q/-a$5#"]Zn2n8Xb3 kD,x$9:8>oẍ́PiKP Tcc)!\+7+-Zb 5{; Mx9ׂ RPlga9;kJNLHe2͊% e ^Ff,׬vU_NNe&[U7 ϽQ_|H>v=.pڏa[/ck}sezjRyR]rcqLihˋEZuy*VOO?]\Ub͵˧ʓ*?]t=*̗p9Η9IҞ~7A|t|J~ ogt9aA;"zdw@Yȗ)=Osz$[N#@':P k?}`6"ssI1n)Bd~w>N:G4G4G4G %TzTi lw#oҕS _P']mfz|"mDӲ á\~x9tGKptO$.F(HZ=)\R"L5v<5QC;ݫVgf)T5N' ~C?=J' 9 JRKM3 KFg0 ¹,{@:YI'* W*fnTPdm'x-H~6i+]%1;bqmT; 184ybzizp'h$|p@v?=B ַz$:6Ȼ.rpR=eDd;/4"(f"^BprbY9sxGt?^j! $dK`/+E>rs -ĻbթTT L~M(Tz]]ӕ ._4_qFakTU]FEObVo l(iGI}P%UV 62'pDyJ@RV}v*$"_fDsл0nG}OxPoWJM)ԯZ6 ()@Nf:%;+{9s<ۭ=OK5ܘ~c s*H @yZ.a ^e]t+G)7Qb9x𕪈*PJ !nߡǏI:H0d"H8?ԙeζ'ZŤ, -M8m 6 ϚQ~S~[s"LއW\eB@̕ >ѢpL- 놈+' 䂎q?[y-MLZʥ4+L nG~xj;w{2?3{=g3pqVTnZ嵅ZU˩1r[c߹/8$(-e!`(U_;kV*<6Ln:a Ti-E, kۧ/sTyL4KY.UH U{Z?71AćG~Y􏖐?cwחsQEtT欆R2 La&`Nȅ_4cݲuQXP}Cc;>Z|JN]b>*ta$d)"1*Yq,02õA%c]RCuw z . !*0Z 'Bafk0s̀iyod7Y#@j%PbN?ӄSCbEITsBrHe–m栙lEn`g2 ӏx(l~v(/d3NsްIiN0>Q 2)p7#5}[RJx4.Dhft xf2䐭Q0Ke4HLҚby I*Lbƅ2 <84w+E1NѠ6T;pg3NK%ՅhU+'Za5rJ=M̚ɹ c*i~N]Y|)yk]4F Z-^]y%J֯ЃS8h h{sLclZS;3x=+XTjS,|)=XQ:C~ß꒾|G9\qa.\GY{e}]gjNxg]{ a(5 DaH\$mN>$+KG]&NcܴʇI)2Tf?+8h%Y W: lvgy>ڻYd}sMiFhb؋1QZIk(,x/JFfrn[{ԵIZN1) :3jHchvc5ʃF7aO2i5fhu}e:G0jR:L[ǃiki\`8ZiS/mrz߷t4]+RG/iA_q|q~kx:l:%E[OKf6pbecN%<K&KrRR=iGU'4 B=B^h"'NAj:bt;>b|rXtI sgg܌^<)qIQ1V\T( ̈́C_AR07=G䄁\ĺȎ¤B#'cCbgg>p |GKp3DDR'3ɠ$G0BgIM-"tTXg}_cJ Цk_7np\$U)h;}10z*AGf̷лrJ8uDǏ7q |cRgErbhiU*1h[8#R/ŀщ̿TC]Rz0J1)5nxFc<ed^݀D zgB_F-wj):::X*q9[KܙSɇ_l2 h*:+ 3#N! lqG_ Ztmֹ5.t,;H2j. dۇK$$QnEx)}Qϑ϶I҂tT&eH_GiR`ty( PBwg?.wY e*rǡO)n(k\ P{IN&F#jI]Lb+{Vk33g3{=7o@n&m`'MYK. (\h@~qg qoܧR= [(cTP 9?O q(*"@k1;\bxlu_y(.?5y-D(+5^bnS%e 4"gwACEvowwVwocZw\fZ᷾%zy辜{vmďI/%pʌg ] i.#갔4);#`z:\HP&4nrPڍ61` ҙ `U@3pb8)ukI<9g2-`hhj] Gsb2ieV? rkv]gB~2`C݈n% :/㥈G4G'KE¶Em6=9t N]-90N iRY"sF=J QERSyJ-lI}TV%mX#!hv,ۚYSÚ[y>+"bNx'5fq[ce9Zy)a=ղ~WR œnѾܤs5>Cs86N`i$A]̅)l}at#4{@ h݌mBrD ]ߍ2Eju# E7%HT)[ c=>.]* *_A᪸w(>Qy o jFCM&:9ړS2 Wm3Ի0 m!ҕC+;0hTj|#UB~lPA3!7n7ZO$:RIDV i$g:':BYIY[Aӄ .'2r5#O ]-90R>bϰ[_O@Dt1V4c%WnۋU7CQxLw1 .ZcO.Q)҇w11FM0ɢM3"ǖVRO,yzG_)*oG|Xecj UթG.M9.&MhQi,E@N7{ۅЅ)k'Prޓ UNzoiԿU,X'=c׽8o8zepUGpR:!}Y)͛C|5X$?jOW]rk\?zd7K4j?jQ"űRu%y*IϯL&V 5I"{Xk-sjawb5(qk1:^oԎ3(9&֪0z*Nު2>˰2+l`wFz*Jr{R;kzYR;6/Fe aGgeII*c@_:rg?Gco#dm_Y_?g3__+piP.*JGH4㟋Y|g^Mt;~u|rJBt%~! Iwa+fr%1\RDntvʝE EW7YڋWhb߭wė/uWz]`svfޯTXi#3o]ddY\dMyS-s km} srjo7a߫+~XdsaN>G.cɦ|i㝆JoVM8MJH2p(:VuSuju jzO7](=X=EhvB_3dū#`z!:HS޸O|&Zٍb3by@]z~"zw\^UCD_C G'UE,0h&VPpC՜}gs3&٩?Geyq\*ۤ",Q'b,Ęk'X)'Kq?az\ }eY1wwO%f3jmZ}w_USNj\o_7N̑l'5?2#-0N6c|z =8tHtix)׍ yYkCM3Ơ pwkyEIw-|*]F\,~* a|ӫ+szU<dZDq*~s\?˘v<|/ g~$t)Pt'p~=c_u({5Gz%:ssZLאA-݁!wvWw_ي܈}k2sHcU1kMD^$3oB,캤iza3֒1!G4:T FzzXH< O)vV!ׇ߾*ɳ6kӓ}mZy$? } "cPnv)t.yĂr*33\I> \[5b<); Կjw?{өߓ?>y~wf~ߙwfY}gVߙwf Qw-5\C+,vL9p_,J%3gyn:LB!؉<ԐH:Йv0%RHBQ6 iDL5ƇO8?&@kĕ+\>0@* !%J!in MYs .Ddf u2.< :/-}V",w=#\uٝP!M~?랛YO GBB)hMI1%ߺoi9qvSO2ӕLz;f⦄:S;AE@hQ!Z@94<h"P57kNJE#sЈ9" MEgQ|X'|2efAZ^:&䰌?{ӥm5YNo⏽A33݇Ϯ|mCʇY[^qgUX Q73HVM14%`fO~2PT-ѐeV'4vY!AYE YףqT͔ᐩ{x;pWT5`od J '2w :͋+X&3p(\vݦ)zqSG! nu:W'nQAJo?Q&W-WHhhRw"h4Dr ۓl$-WrV8o HlYn*lf};r02yz3Þp92cW/h M9{TD6tߐZj&"&s-~kŦtnpg5GJMDLm-Q !x<ފ̲xyJb wu:`S: R6}&: r5{8B>^xLkĉ=$+ “1O;H~JM~5lfYsv9'2t ȗ-H ^ $Q2[׊Wat9;36++O:YR+;/؏e5X@[/i=b"C?p,^NTa[XsPIO?SxCR'8w"sp6IBrONǏJunbPJj`DJصyi,>S#XPM-R`PN8dR 채]vx=iƍc;Qzus?*#U^I;-?өFUB3Jޅ Rw`Baţ $ Jc|r15<)M; wwyh= K}1-I6PbSr;J OL"v<J}lS.Ї-p]܈"Q~{ak<:U鉆~b&;A?^kGۤz6G3:GTVQ<"voXq2aOٮjorm[Ȥr-HFO ɗD !"&L wb {9B%1(eh"-ZrÇ>-ɜ&YL? sun^xJNԅbW?׶wKzzH k9{6)#$b;Gvl×,O'<->q<{vB"=}PcZI?T&8:#NtDk>.s~) Zt8ו%F ˜?gY ȌU) f0{$n20ԡcS_`Fԝ]?_)~~<1ԫ)ÁqDxJOXr >=Cp~x&]Fqÿndr۫eg).K@svߌ)ⷆCͩ[>^R:E1=LJrXZj8٫\Xa9G=| ٻ,2j?oZ{ury" Ԗ~ a Q51M XY`oraǍzPe~+n\ȳ@D6 ܈aJop#OkEFFTq +_\LSRIz1-dj?bn{5 ѪTV04=!5Z?y$!vXYбeZ}ƿ+Ɩ5jZTox#2Djt7ʖdb=QSD1آkh]]Qa.tb+LY+WV+BY 2~gZr}N -?͢rxS$)"R9W)Mmfqd(ZH&w o̬jcV/.b]—q\)}j9XC";"F9I=I|kf0M5J{l6Ea MXV )kOy}k-IJa-V"OJPq]X Q6P7*aWjc]Ø_{qNgQrقC*4l.fu0h\;TԉžVXjǪgR:| IuŬӓxo{uzv|uןO08#4tgݩ>XԦ`~89lţFVM6$#i&߭p|/l{ViU<G58Nj1t}\"Bzك%b X!],;X,VSAdЋ/Zirzg?B$* Yy4`Žr.kT6!v!K1vIA==KUP SV)/A"Nhfa.nr/Vw!U%*%]I%űz+SLܨ[4G: X7пD&sWࠪҸWq\vd"hWW9MU-LW-ZR7V(9mAk4eX4Zwa BGIk& <;(YU/.Q'< ;]i@m#g1 4/ #xZ!wtT~`h!6C5aߡoR!) Jg? PL{4#55oN>FԵzy>:ڭ'@zb9`}pB>% D0 j`EP^#z5:wȐ3K&B)qFcRnr$1 3r26FIe{<1> \rn>V c µk*Ɛ ^؈z6 |yqNz VvʲpGN;!ߕ̲#B %OgGiyIm 3|Zg#`Ĩ˄qy|4uc_qVݑ!lL, ScS|ݴʗ~yn"Ip̘saVŁ+a䔯q߼7VKG:SucHN+"rf:Yg?!Sl)?>yG?_ǵ=?G@8 4+)'3x8Xhu js[T!Jen툊M qouwn݃{u wn_t{n~nx='7\8<ޓo{xOm޻=9='߶<ޏclb IT,0[+5[s̕[泖4vzU{wO0\>w^,ӳC;~*>>}ߝ9SLyYŷpGsS/Qd|,wfD"Vir2j,Ñ4n'͈*gOH]oBEճE4.5~%Q:|~K,_{g{g"E]n aqm}zzbq[օ38(/_[w 6 u/{[t؈tnO"5xN!Q90PdC2&f8-/[""5Y\?$EI0O&ilNk;lʾZ&[N-s( фPsXb:&+pmF? } 2 'Z=uY6AqJgDwjNqJ~~@!Y⸫W3R@?DnC&4Qj>%Gb< :\:~w`?"N-Z}  @ Q2e;5nߊXkѳgavfavN{GVj=.``Z-t*a# %A :R1$E>dȜS(S SخDx/ɰXΑ; \c+zܴ(cÞ#94Ci`%@kЛqoII,"OXP ~ Y`>%LȂws"=V(`I/Udp3bJ"c+IOq ,F ZS̼Q"]3PVbQL#r¾U\Q8F LkboV%%<ǔr~J/Ueft~<ke|#wum:|!l\u2W<>y5m[0pn%?Ŕnkil=8~f?Kг0