#!/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=eabbb211fc755290e983029299fb670f # 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 Ba\k{HWLƗi ``e3葥h # ;l9uJl'q>k>TsΥTιuM? iofEl5v{fcxAP #+ ExqTt]^"RVIln&ѽΡ7XW'! hHHcL7r9dRz$WMY˥Y"[7?`*" qxՈP"e߸fVP 3wEls\ѯL,B62ğJl߁P&@V$k]7%lˆkpC2zH&K L.hP_#0T,"ELjAȒCO@VDךقA *#UPF➵(YF@2(A2ܑK@|B=Z)bdZ%XF0 *S it(#2"ǁ\29 b O&;cxNi=r:5>ӳ 9{ AZ~|1 cW3Hfd8&9? &fԈ>/zF '@8D22'dNc!xw/1]GCC#\O7~ p%;m0!YO dPU%9kȌZw:%`@_:HlFǚjhqà:SPe`ycsD\L4r: mNj f CCQzI1"`3/ YOLb4ч*,{ف=ffцHm֡Fޟi>F2uX;QG0$jJi_?] HnhUX6:c PLq\. $ [VN‹Ca óP.=_ ]FA̜ϻ7uecx1j K˾hĐbn @@u&g4cn؂Hf$J5fЬ|r١Sk5QZ._d!1ʘ[ /k Iκ?oBO?gB$qvw(C6T @*ʃXYYsrlNGd6BZ' 2U @p1dk_t!%E(L 0v5 Cf z:b2eʔ^A"3@ZbӀ8!<`"ٖ G2 fҁ6.0欐/X  E9\S5Z]ZU#Vtwl d .*Q%%HyB t5d3LxƏqBLo('.s|+,/pv6(eaZ 0(FaZl)3`5JCMbGX1n>1k5C׹>YQN8q9F;I.il6v7P8wmE+W#P6.}_N8>A TF*qE{2Q:y(^(?4X) 2?P* ZYŲ ղ cUOP0Ӕ@Ijf4E39c/ ;?^8qtۢ}~W3V gpgf7!{_C`\QҁP!;l}b-BC:nQD; KYϨ[^u;՜U.$^A ]J0eftQB0!J_\|0H{9:$o@JFMUsmȿ4?DvBA„zpG 4Lqj*>xC<'Y9 f~fDVO,!oӭ lrLU$d`Ui@(i"pTgdIfUuN@H>,2U٢*dkk(wI!6A}^v֘ssџzzWE>X}\+ײ""IU1 ~-8 Kt%! kR(eMN.tsCz^nMA x k)j .Wtj"~TB;q}HP#lׅΙeޕe })OseHqPYƿS8-G~, z255XSAJ^ PX6tdTsO]BzKQ4>yee RWr_׹O,؞{1'dxJl9Vw;uj >qg+Z$Ze.Kq"h k|$]3L6ˣ`D&djzRʻۀ0G>"A)F)D0wzw f=#TLMuM8`EbwNuABJbv5M\T*0aC߅damz>G~QB,$ZAL7⼋餪&gY|ð0!u2RQ._341F&9.X;ybZw%-|/-%Ί"CpЖN{w= xe\l'NV`x'NG4o5*#p̝;ErxL%ば'R9EʃɁ5 F(i\|3%椎I=[u^ L8 B,F6<~2$Zy}h.Mp֯d8<3["ِhx!Wqͬ񩱟x8UYťFsj&Ϭx)Wqg.<,UML93~eILZe8O^,,  5 tgQ #{x >+rv' q&]Jyy(J"j|*I/?/.Z FB=ZOejfZp"2҇k_`}"tB ]L1 (6 OBA}%𴠖 dWHG3oMQ_"l<+?"ػO ΜB= y ܳ20+dR|]*_A%%>[>^d_mz Y}wio?C>?~|wnIhL]DͳOna_܉m1OGc*\9>胓!-Z \U VFJѬ9A<oaIV$43͞%Ҫ)Þ>'1jYwvki2|F^6~ǧrN뇴!i!;1ckm/x?;ty5 0%X;.~HԎDoh*^Pm< )F8[VU+JaAFIӰ|:WÛ i ow ] c0#A3Pܵ6J08M`%S PoE^<}~/ok~>E'DB ];qnFj@A[{>{ڻ%lIy&ZNU:uߙ??+J: poq:yypҘl>#Ʊ49Xbf`R0GEKѹwQr5qpi_wW<7C4M~~i- Z)o|^`F`d*+:;BӑNBn8e0DczAFI鸾5t>6Oľ鰙-zO -E5*$vх$uVv6)GC])׀r3To zQ_$T _YwJ ?@QL!r#V,f¢b1(iͲ^E4%'΁[8w'B GiYd[>ZݡPdXCBf(d<(O{^#-! "``-b%$(/z$|( ͊2 "5a #ua1G X4!CkȀL^acx'pBp|o?YpX4M@,PMI-aԆxHSThLazlrQ`/5Q .j|Ir O4"X?䦁A|A3nzY"iHcQdb ;3(E588Es +M5!HDgd eqA%&]Jz(CXm"5= &]iZޡGX{rTmĐt|1f.훞 7?@Mx3K8JTl! yY*O~l" 7xd7p#MkZl?`aiT^}6̉,0d9-Qr 4JZ?KA X=..'H^z?*~ B ɊS 9q t( 5a% P AiIb捿K@ u&l'B[.N[4;'~qXpny} =_9vGrB Ki>-1|# e#ю+@%!Q'a]JY,`snc$acf!K/Cm+4Rg'Gࣃcȫ )EӁxӀ2SCz`Cjf/ӰTH(W"t:păb-hy˜:PA',ĉ{ΜI؞m>Sgi9JFh3Qɹ9+>ڇg´ ?DF!chCq>ŽUܢ9Q%CFᢱLb π0b|n2s%-+f}r/ l>ӦFܞA->Y[}(!- Kw[:BBlzrԎK,Cm#*LQu#-qLRx Y&hm!k\.H b~p_iJڵ駕M:(j;J.lX]q%1#tʛH8D?Y>'K$*iԟJEu(WR8xTGKSL"o-:ex$Wu,SFnfU hǽJ0Z[%8W&DZPCSr̷ҵUYZ:ØIS; (Tl ᒈcK[sm&`>F ff޴XXA۸'J<޺KY P":wɄ:}5SeiIdzD_<R_8FfuxgT̚'RvYFS1X#`kr\[+CހrEVK~Όz ;g aІmLoل1Z]k#[VӇuj Db#W.tb?I_ 'U|&dnW Z2Jui ULh:>>!}䘼?FQ[ÙZ i:ZW٫쑠)q$/t!Z,5#5!Kw&|y\_PʸWqfWn]yvѐN7yݮ*Kf{Hc~Gd)MiUAf&9@Ph9` ]ԹA ҦYPu,k+ &H eF}㔥RADiZ1[^A6,N4Afcnuѥ_2(xQ)n6]lϵ1[o=+p gRYL#ir̾ 93!ʛS}Q5)cA#%1PoE,U6x[ F8)Lp H́Ad~,daXںꨖzN l`+㎦w@r a)dɬߏxIS32J R_,9F]/-_cl6lO ƒx(ڝ4ȏ<.oRMT ފX&"1i4HA$^H߉~o^D]tէX\Gqr0`]L^O$&썣's e%)(mnjYMx3CS^* s>- MAۛcbH*5K36nmF:})~xp(ڌmQJgD R;!gb=8=ww:H$ӓ_N68 M۶4Uek, jm}Ƕz߫Mau2.d:ΰTfr !ˮA.|?UJcS͐<(Rђ"RA62/7 (ZFFRs;%5D.lW>Y \\OoIMoHd°TQ;5z;'a3% TF%xr ZCy[52ua4Mz5E&숏RTuQf'ɫI~Y/'=au#`ggGoc:sB1O'gwב >=4My<*x?) M[2؜M 2s(NʎlRU8/GWx%FCo䥧4.qާfAI^g3PdSO_ʎdH4xCYqn#s:$bm7Pywuӫ1V2ԭ WW?0a&sEKW"`oڹ,k!%RVJF Nv_m/Tz^<>h_DŽĚzBH9֛PeRzNYQI@!B/ `0s3h`,q j]c$No\gPh梵G3^L0yL.SFNY_ב.hu6+UJ2үMFzgTY!ɟRxm+mMAn~jrSTӞBq}Jm.֕SS,91_cQM:P@XY|x6-~j 3Ժ8غjui/"|R6Գ/K7FATo&WzXw% RO_ K`#m]Q*/1~^Mk0DZnI>KF (v  MAEƙIanA | 2/iĭcl6`AllGJLe_Ηu8nz܀^StzY-Hj:Ja,( %& @ +ʵE8]27L$Tz-Up~K>8/t@IJp»m̷D|Fv:n(=R\v?|w GU;@_ڕx~Iv-kebLH/RyfJ8=NHH^EkNﴫM.BFwT-j?÷b ؾyU}דd'u1rqlֱ0'O/a3NU߅ ;{F Dk gƇVJж'߬& BpP+lU2F %n! :{9ᰠ[zEyOϘhy*.`7>-`见/1qRh#_UiR|L*(lKCPW k=|J 拞xM 5ȼ>P1?1o,pZA%aB|QrD|`4}ix[s=^2~p4pj%ըT._i[ ,-upʨ0X0-es 䇩x-qq6>2wOh.+HVN/n 7b(r/b~uv>WZyx1817?$jlꅯI㨁%5qn3:G4,Np0S~&?)u(u͜v%bi~=X|=b6mVCѐny.+* .A'cteGټϥml~ y#EİMuB6țh_=!\tP}}Ad]Oa BeMl|9{ T`'ahza2(*F])=$ifi?Y( N$7銇K"# jrlt$ϨK,.`ۂ|l9ܙ3I Drv7KR C~ fP G ݫy< V0^PNA)º@AcA?=Az'GՏ? L(i|a4RFšh}q%+.xw_(#P 6@K3 h+ADb;`@Y >6[cn 1ynDx]0pJ#GLYK&Ki$dTe) 3ƗQ3j.^FIB}zRwF{ (dBZ.͟yK;S֛.kD$yD%e7\19d A"Vey/Ȥ#Tݹ'+H`_k9qkǶKr{\C\'0^eG{=kD6=A`p"_Fb]'8tXB֜׆c;2 !zA$ 1{YxP(tosL}{fnFDy4}D ѽ$35"#f#}Pspp^bgr/.,z (AAv+y82n?b,'fҧ"{Uпh#;}lzFE#]KktT&E$a;wBhrq5xպ*E;UQ\.Zj\I{!n5Wf+C_ӓsSlڍY^nvaaISZ%t"KxSE%Ϗ#CB2pf۸%?XPS11^]&\3.㺹Rk` og2eG욙v4UR?`9!X-py?u5IFb%/rDds\r>d9rv|Wq,)iwtR } .Ju[w0V1l5'geq4[L?i4g3Ljg`'A\'f* ^$g7h{ (m] uWEIgӁJlMzmھ}߿lr`'Z\jZ෾%r9yZ:OG ]z}g4i,.#pg gjC/ek;^vthܽjdː76+~Y ^6/uLK.u&r416!u6[ӓ&pFc;&%0X/&:7bX'⺊PA܉l:<3 DN iRY"sFT%"i$.qjB `tle_V[1kj㴠OtaȤ!a>chXsM!5] r63~SB-d9<:!4OEr|1*֔ ~@d*iWll~H|#|d,1`7rSCQj"ZP"TzT8F}ۅ^p--"Xbw?{5#2 fyV<f +pte%BȄ:2m! !NNl.mJ8L '8Dx𕭊OeGKR1ii磪'O'#Mjm71١x'n<uN>)Σ.-s l6'*J}ܕ0Ed#~T/2Ҝ:TX#EaKde,U4 ѯO~-(^PIV Jv.,]ZA5xʤlluɯ PcXEf57 [’jPעuֶGJcko3&fe}0bfVPW+[xBʵ] SYeI(D*ڢ)~>xx&3¤*cO_:r?_D_ҳOϖ/?u9\^S?z)}ס>Hѯ('yE6\kuWv?QwNkA ý_d*4d&$8%͇$!_QRz 耔$Qɀnn{]t@)0b[>"z,cl& Q Y R17U°s \%*{q,G l뱪LPT-ѐVPX['yb/Ol Қc٪%fO$uJ<ր}1(t#e2'0n_²(׏F]NYIRdڐ &疩=R~x[8ANՊp F젿bFECLE$ʠM }g'M譟l9g~6 󖠏zf†ߕ>Lr#<=ԙOϸaJ:Gz}*\/v&XĝGHg#i0e? o-Ǻbxh=ꟙŹfe-5~=Q9U:RW.gM~qtTFLm)E(A !x< ԲiQ)myHUdtguƢ,!Ymӷ7"?9N <^V8~;o&~S"ƉBy$15բ{:󄾃3JV|֋;l0|ԕ^ĆWLX,\6=e0 '*􀓒i^[ʘ hB 7nƠ RPަK|5ڴU hicƒ1?c5uXy|ŧ/1:@SO'd 2zL "\;@ pyw\3J_2)Ự~)am+nw psaiMiuvA@TZؚ sBfxjᝬJԱ,g9@h0+9Wm,-RuR Q[%SLr*bpī:ytϭӖi Z)gxr06fNz{>3uۨ5Q򐇍R~%s BJ&^/=/IeSmRO2N㥑"?f—5&)d:Euԥ Ly4TH32ބh =$c"[=SR2tR/QM b %~[n JG18XW) vNARy ׇ!\H++ _שD`vacXU:k[L3Xh]pf'GaXP@ ԇ9 p)Đ+ jC~@Y 8i7զ0f 8YOa҈KWQ:et2[16}Hi!2EfэO ׽0upzwE0}m ^ pP0*E6,62+P"~1y2@ӝ笀&]U2xR8sKR;4ŀhŕi]Qd6fq]ƢgFa.xPZ϶l-a~`?8tvbl]`w5ţ=Xgnt%L]q"+*Q>[SLA;n;⷗}W?Cx咧t7X3tvB˭t6DWfU|(g^_ ++v*yz9=J4gi.6DT o.hЄ21v Cy2v]ϦV!?/mg7:> WNX[-ɱӘ'OL핥20&zAY<±C.c|'}G[ݮLP,^ *';3RaAH8,c } ^=5|;9aj'tʻr RXM>:{,Ȝ- i7DdVWx.">Q.g5fo-s(2kjkAUbpuX-K0ïkgr yFK2_|`py"@HM;j)k+-:Ak[oI U%=ڕZ$ F$^!U>t6 ZǨ#A =TK3"*`͗O )lh봢ڹna[^bROںl+Y7MV\ʂ]Aʯľio\a;/ GfL3x6-HxIx Z\yoQB!+)|7GT)-j( o ي'oNgfsg"Spe)Uy{+E:،GY)AsgΊO%5C(Uܝ(6JnfVטHZVIai]bM$>?Kٗv`W0Հ4j&T{n) iOݸ'>Dr4K˾i?W[eVPX$,KH-ϽD&b-/;dڸ)@A&7J$k&1C ?@o6Xn/g E9UPi\j"m՚ɊKmɻzucbm!.H "w"= n3[qsugG74]vV$Ѝo J я aCZ}!ن'M\q1<ɓ {31^6R`G"p)5)_qD~Ů <.O"+1C6bzH S3&co ,j?[*?RR^}9r+,jSƸ,,̦Op n3u5O'3DXPpz Ixxw>1*0x +a?,L2X ψ ؅Y+,B<.Ewb*Qx%%)E+M"6vi?lU8)bhJpOJÌBvT`wNlj5%  =z $3r9JS('Wc6O%dK (T(h5_>\`Cv#Sj0=JPލz~ \WCm+~`]9Dd4(ޑaTWM-cEN4 I8m/n#L BWoeJ5tYh{cexC"vJ_'lۯJATwA8s:#XP=A~hGfW%Sğ8.epzYFl>@Ȇvɡ$_hا˒*gu\?9rqr@~#h(e@2'p/zsM9X֪yDLAn]HB(d=h F"iؒ#XnpGmr\s51#;.0 $Y E>̥ܡ'" ~YFߓqWF-his)3 xk'#0&X~e Tb: 6papmK0Mg$f:<}|-\YV;0Nnh >|w u}B &&SoTHv /^ɯߪh*bEU/ޜOd7HbI|$W 3rFmrU\??fwtW_1+ϖSkϦg=O㿧i4{׎.^>]PA$va4h\f>o {}/~8Con?j0C^⑷NgQrfn>3'~3==uTn}#QivS`Y ok) .-rVqGgv"#:2K |k}?O`G|i"J }#IAc6l$Sp!M`@{fJHu,~I(bivTJڽ!.gFC@WX}9lE@`3@| ptykXќ^ᅧ@t*,#JB+xxQQHk,ҭvI@i|vRP;D?uKX8H)0i> [-x{q['/RHrmm{[}:; "p}Gj 4iրǾ׿)T7Q1Aj$%Q-~l8X~SeTz9Z[3ArM' WX[M0|Lo:7AԽwIt#Ek໊j[O -ݒAm|!qԎobU .: (Ϛ xOH$_Ogʄ=[~x}`j% n?f_Ϳ* L^C}?,NO+1VX yCIRDnF W{/drKs+zw(*1vf:_>jw*np>jţwMrEb~MoAo~WʁEXz ӟ>޼i(n/0^T@ tͫ? ͸ςZ\` xؐ >AD >~ Ux*=,ݱԅ:n@57@ƹj}j#;Pݓ:׫b z;= ~Lv?x6,.=sʔ{pz}O^SߌsV;͂q_azW[nVm=d w%,ԟVrfmr˨t[4WgWmU.{DCDvuQV /7['FVή%39O=cvw~ k[[,5S$,iuuLe(qĩ1g].רư;F0 pJa3`y|ِ=V6X[{ 쾮g$ a/+/vvuIZ/*- ը{-/p9fK3k g{c:W{i=Kf*5K$?gڸyҞhȲJ lQ=UOBJIru1 4 + [SB*}8դ#'ĉ|E!jwZ?i6dk<|c_./kSK/S#0Z%`j Z_V-e <+QQ{a=&$ f$Sw)(L|)}1uǏa?FK䅘a:/(t^DՐ2z^оWv4.T vdx6T0껷p* [턊-W34fNvnRo'&Bڈ{:T~!TJyԣ8KθP ̽wԌCPdPhP: */"(;de9x,XRa]5r{y~ESiŋvnAFQRL9n+92޸w;Rpxh85hB9qzNn~WEK^adڸCe1 ٽ">P9R pPUmAw3"3 zOtwU+vj5zW\qhO[y=\[QYGdX"Ngez#m\=:힄;(Ubf cAE`7  ڻƃ"Π8ra, } U3|BTqKKQK{*![Pb 5M&FV{pxme^`x >@yD`kkkLDlvB!'I&$295ċbRh*Ja5B ,'"KZ[?Y}a|c*GFdhw[q~v|0Rq{̈p1͘[P8eNNI}^EY7 jW"3Mio jö.R&zRDkOWŧKϟE=d}*(UZ<~~=?_9_]Ziޯe6Z/W2NS`~7j8RU4M |0A +K"Q,<&Qu-|"_Px,h Ϸ s#ހ ynhɼ2|R{[/3oK\CZA!)\pRt_rOMzԠ80'F $|fgf)mVH)xDo>T }1SKsܹk%[P'5 MFk0[¹` Nk\?"#1K U"Oި[A#U<v63J0#(}n A%P_WoU1;Ypjܻmmx,u'3!!2;~z@-yFcx'Өqɒ8%}zrكFo2e% 01tsX֪*0K9 !es`+]C1RB<'?fMg6 ʐ zfxp!Ηy> 0LaUyw_6$ĩt rb<(͊&ɲ:ivQHBte8]+ r+սt@vqbq2~C`"lKV1cVo s"ʊF&Bq-Y88o3^3y ƖQQޓ+;^4Ĥ5:%RE+ty ̅h- n?`d6Y\i+1Tw057d m-܍sR:0Dҳ B}dg._q)}añesqC:?0 @Nf;%';){9sݭѮxCӥPhn_ɯ3[ /~ۧ m C{ȉ֊ShwA N˕#tODeJTD%aԄrPWwFDN4 ̣P !AO>uwVp06CWbgͨS* WNm3tv2.+\eLg3Z2{G,EOA*Ot1*Z(b :`n MX¥4m8"ݎG~Ơ& _ ~i8ߋV_kvJ/z݋1mqimՙյ7>}[?:r:Bx3&܄U{e(VG[o~9is2YQ|Sϔ~_MW6_ZY\q3` ~?Z%Vw!`&c(ai~yqyHE@T<<~x: ߑ:|y_0:<9<0p9e  R姅Hw'g[utF}Z3pD½˅f|b[ np-4`v7%HAvx6iުM.n. VfΎpu{Jۇ {Z,GUSb'xp3z 76jP.&2f Z3+awf! xعY12Tv֋>:_|Ԁc'?P&<.!~pA 1c/C?ZF[/V&&Y =?p l]1O'QW;Nr5!7uXA|2-JPL8・|p'Ei.w`B?"˻103FKV3(? bW0!$;5v{}oEZ/=da՗ŋNq*eO쩔=RTʾH1ߕZ |7F7l>g)5/lV;$AǨ@uhTh!FsJ<'-hY tn%, (N:҈u$B5 ]& Y ~MuT3gU6z>1߾k] $RG搎F-IXV6ptP{-PɔĒ; p@<" ԥ0FGgtd]xnG1WG^21o!;SȖ',_ܕRhS̼Q"]YbјtK8%P[LQG8J DkbgV%%\9t5K&ũf3L?0