#!/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=bb968b419c77a585d15d2e9285d160c9 # 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 7O` 0PԣE15Y! m. bqgcZS`sUR}j-.[݇?˞ñM y-E~48Ӑ&1,ug]LBlǷ Z#shy{I`Rc[ l &$+ XtՂھ*@KO]K{ 3@ 2اm}A1Ӈ{R`#u\hx  9&Ripa5@,ce \<3IVF%5`y<XKY!\n$ܕ#tJ3~*H!~ZH>X c]G"}$E!=QʒR!rwE '_* 8; ɕ4\mLG6㹬qɰ=Rθx4(A溲+{Dz/U\{$fpݗFȀ*9YO]y$uT)^(C#%Dڣ"tW `d@=HBALQeuJb02+ܑS(LhcEBRm&$ 3볱"3}UCUˠkن]&Af6# F1ʂB/%hd( $QE0\żtѓ/~G⹖ j` 01PQI#0e$>CPl:R(-ۘSzk-}в!fǞZbQGI;gR7-*MԨ}bѤS}5Q {U,WIy 9s 0iZD!ɝ[+&yGG?tITnzYK֪v_;/Bڦbe |oeCVEtb99S޺Amr} q+dh+Ytt % 0b cG<bdAOT VL)< F )#mh`V< hc Y0]$u\P jlgYbw <Hf(1& [gIyIT~ byW@"kY ,kx%tM9*k[뮫ә%FH,sJ0 P(Lr29&_s 4$ʈ9D,~/p [x}[ yI6[&_SӲtE+VHqCFs|$}73$ŀTib]ٞ5Yq UC>-^P TM-6½|aJu@PP!LhHmWIx44{k2XH>U,bqS l̩2x#y4Ҕe8<itE_+7o%(S@dؑ'4>ü4֝Dr@Բ\loۍ7'^@VUnЈd>\QB34m25ÿVq90Ba45 y tIy:0@)3gR[]l|QU"uMR&5!j!fմVSPSwVG O3n9^߃awBB =S۟dwtXpt3f9=iİm$L`,0\|[x7 _.MU(7EF|/ZՖ-nouk1n3Dﲮ>CAr._hNZZ[#(rݽO1Rc)idY,F45 Ax|`lqwԹj5cMfkfywqOzghLァÔj2i5cʣw{3C1鉧;(ƥ([ ˧fiNt^aT!$ e? L^ /CXɄ"7,?=t R g)|Z4*K,/и+0q=P4dɜJ)a&f nSxE=uċۢht[u "5\ȘÊ- XHJyBfDvݥz4d!krи`AђQ'H1Ot18 Q)99,z}dh=l>nF /pѩlDۚE4LEdsGm]Ì5\, 6WbQ y8|JE 2hȣP!12%CH;2qgt m5n8$AY}Oƾ52] )4_ӡVe>Úu,[$WbuͰ))zTC Ԇɜ*3 4nҶeCdiQ' y`$cBsY'`9]_j>d8/OP f-S(.|jr剃eaGy{St#kDcΨ:clND̼C*IK"2t2' X\,,CK"&33g/ c^C7n)wĒ}p!LO~MV@X/6 BaC HD [-]}3XXKK3&E17W28ҷ<-S)3IjGz^@Z AwT ݄aUaj?Ir ^wK= pmkbQJ;;;;;;;;;;wX)ʂSymos񡼜/EikÑ)?BvRt_k>P d$nW5LDɀU[yɟODy(U `zEtVLVy_Sc~I|'}dݵN˩wR_f`33}ԘIA AIxN6uN@P7؟<:=:h~q?o$#Ň"ޜ|Ι*@ G#a_- k-hC,;#zk[lFffHAh>YOPixEBܜƽ+r0yH V=1=d8P'{/BwQ9ZeӞ~i`LkZ,]b߿KR¥KזFh@KI4&{r!n\!{+ veJ.({H8rF9RaBICg̈Xo l$jakm{}6S_k+B ~%J7UHܒĠa0ey8]pW-&Ms6M n6k7y~7xgQQ3Ƽ}<7(d:i`li Q'XLRF6SbNf_ܘA-\U ^R'0kn3&Q3"9vD 8R^/` S6&6 p?@y,o;|a.3oZMg(hِ{f"K9O(,ٞfҧAs 5M~lu޺,_Z̷f[_[tSH}Ql!~`[%H͡xxp~BAYE/a`~Z$. $]s!-'#S׀r3To z/$$C$Gv(@7A}:*L |6FxE +J87t,_ù=1 /Z#i9dq[fKI;Y Jjl=P[? ʞCu솠)4ASF mi@b,EOrg iȖ]w@:N_`7\J7]mP=` ~&-tK`9iҸ)"q 5P` 22& 7TcWBpQ/3xD~ 50?*_EAJ%BXI^P+ʒ*+ RX)*7a'R<KW4-3 8J/ gP0qpMs>FxqC4pr3>#wf @+M޻ eы1z1OLW9<:l.09#AiZQӳPU jZU}Qj0[`<~m" 7td!nTjSFNM[Tjh_w` A5)w;-..Bjhh,Ǜ.-Kfk1u\fV++|K|(ؓ'P{ߣyz8a Qa9liIFTm X蟼O*l =ZJN)a6I/+TS!cSr8n69+ku \Ɛ@yo;I?fx݊ju|}?nG  4NͶ/z1G.vm9rkV-w-M_w '\*y,`dqsw䬱ɷ1({=3]p3W]wbLy D"'7OՒW%Z {jF!:`FUwON~ U62HT wQf| ~CU+h"m#o3'2$sq 7C1D^~x~;{&qcq Osr&w:ք;dmװϿmڝCeOĢ1}1Ay75I[n/Q6:̵dJjfB"-̆B1~湾;:2آmB帝VXnrxfq$_U,?Hh+?s9Pr) &hgC 5H{!27bzo=u#^.YJNj.uPÈDHNjBW0혤,Sn"VfNp`UB,TJtR'lJNw =h*HEݚ$* vn*!Z#i7b{o p"\C}$/PTsMJOJ7}ĄjAgKL.8/[7U0X~[8fbzcۺVJ޺>'?=? ]RUQ84";Aiu~֖ε _#zU֢>|tvy/Cž4`y'|f Gdh3 1T'4'.pFOrZdݾb(-'syl R`upސiߣg ,eQV9gi^.IZ+fxxWt$PG =|&d!hp_;W)ҒQp|sVJ'횾9ȝV#G*zXG4 h}RsP:bPzZg`&U?TϨѤW}yNkȝ nVoY-:T2!W%syF|jhM!>BV2r)ȑDDIam؞Ńxo혢2+}jpV)rjk #4(D Qo@Kܪ~saBhQ+icupÀwT'55|?( БK. ԝ8NsfP1-oh*bd$sާږ 8\ u?;nmN:siA|x$d-jBKb=p/HRJ3ULq7c&7Vd; MdbȿkIk[ AZn9.-䗓 089>;U'QF^.b; wx;}efLZ1,ϢQ/MaR( K1T.+Ӽylծ6aBGuXΈ64l$cE 9Z`%:;s ,4^Er͂x̽C{oᆽ }Ovtk#]as,n%աU*)%\U~ 0(c M *1\02KUe>\$+VM5smg&$$nAfṎK1p8VT_$<#_NdWm(eK}ql]^;b]C3I]Mp:PFRc|Hai)i.IƐe^5ثG[|@Di mr覺$gش5cLu3d}hG$,Ӽe}ITzr5-8c-FYMT7i"SʥK6M욮 %Ϟ=O\'ǖc+tiN> dِp/Aφqey C$\(LO|dڔ/0jN*۶LU:&K˴Z~e߰>j}k:~o)yT["RPҘIѲzL*V/V()]-es7ERQ52O,(4Y#T5L4V`!WU&^Pv}^D$4~۾Q8wqTQ77;KC "g$xrZ#Z52uV't{P*dŽ(E~^8}{~l~Ii{zx9EeqZExo: c~ٵOӑOȋ):r9#9|zdxSvM[TD9lN&EYk ڪ|;#p8L8+^syiGu6\Ffk5ɺhi6*c+._0h(5{pH-~$ ih~@sK ǣkiBWgPc/zU_gFxf/~`LsCKW"``< o(e5Tp*c[":i_ V8"bGLsPvw j1±Zo%7ˋEPӣ06nCv֬}9SmmrYJ1Nl?舄܅r. Fu.ʮoMvq5%.c &w-Sf%Lđi]J탌#b^;ֈV1^{|j}Ks4SPSSޱaD .]6-aKc;91V-YFmDUl;L^hL3YɕcRlq;68lGyYe9Ֆ 52/>{O\ %2rD{<5C*Qg.T+,ѫ3+w⿫ⶕ/{+!11EȊTBQ:,ZFjA^h o! OwoS4=尠vkf2gĴ֦a"R oƃkA "0lX^$G?X@r*x'>b1?Uvk] - ;&ҐA8RuiGBzu3T1jOiA ;強"~}GbO>VסtUlj(6陝QVDk'J%WW@W] Y2a~OLZtv5jlFZ-}+J #S,91ů'Ia $(p#?+_gaaaaaaaa2;vF;W."͵IOjj :ꟑ=i64NCow~zuLz? K`3k_QohYƽw%ke߻&=8zlx4P@Sa@Tr`)Tᨀ!.G O<ĦA[)و @)19!/pzszMEgvSw a(%&˷ @ k*E 8]27m$wX-c#[,ëdõ`- ~|9p^p *wo'&T۴rOGF(s Up)淢WUյqFxͳol. ҫUtθ+tGbs>B+6?~RN[Puw3Mv[#v |:\z:Q{M "`|q]ְ1r"\WT6Z\jIOc'eGټͥmb~ u#Erb?m4.\9m>!2gC!ECl|8{`*Tႇ0sYtUi`q'JeQWA;'FJz.Y%Fj'iv0 PbQf<]aIC"Y9a,#g(OK N~g}]duۖcF1ׅ"dAݔ/I ًɐzP&g8ieFtBSfɠXd)C;eD AS-oNpxG0inCV?,(> r n ) G>2x`jzH k9 5VQFءJml×,OgA.F r" ߹xFUsn~p{-ӿ'`0 tFu+K:@1,PQ]v ̘^&m3Ľ~%N"d (d t\?󌉗vZHϷX#eSJ>bY=8\2Ӡwup*N־ėT*FNp ܜZձ-{I.W E1=T:u~ 3SxaыLOFrk LמdHDxZ]Ahy`=̓ .~J>j_KMt@ˑ>S6=GH{:Íd>{Hhrq-zֺLR뉒@(smd.JCWTX5k.ݤX=[?+UʰA^VFR`l8/7\{)bԔV +DQtojq(ZH& ZlU Y[*&K˴xe4W^`-! V u6YV3I]3ю&J;l rΔ1gFߵ{rJEHF9E0zCn-7Ʒ"lR6[>͆)2dZZڜ"2Twuv̇czQnXf{wڲھQ}S,آNn.o}K6u|5-L!>w.e3y61-\pGr,V4f_@-;Vvlhܽzdmː76h~^ ^5MLK-&9c阘s˭w8O >M L*4΋x@Q <$=G\W U^ ͦ3е_#ڈpé9!M7OaΨ_D)J_2&F&)+#=Fl:mMŬӂy>+3"0'7}а抟BTk|g^& Pr]u" 3C4h-l&cTT -a@d:iWll}HT|#vZ>2fh b qM(UhOn}tgɼF޸&;IQc ;曓z*l  ͽߎWfD|a9y :`^7j 6UoQ߸gOWyQ!ĸ9Nlx#{!!-!;i`۠_P)äC;Qrg,_ժD@}:B^vh^9]\<YRo >O;i3K_nNqti9L`=Wާ]5 ]z%ٴD|6u-w IP4’?bV-Dq(l]٣N> ;>c{:iϐUI捬ޠ~„ ˃OYőZ0Bۻ.=Z"rիmBvs_^F;1ɺm!<D] @5 6Wr/Y-HVȊ< G}P4I[RndœM(-|񔷓a= ^dj3eFR2 `3yz!pzeQ7D]~Y^2Dg-H`l=]u9˭q HmruSkd /}$EGS\{l+l-ՠU)MzqeJG6:TWWpXl"sXK- jawb5(qkт:oԏs(9&*Gs&ve}0beVPW+[xBu]SY";6-qZh_Oই-RLuoaR-Kaxl/ϗQ'?^{X_{4?3?g3'w`” [$i[wDxyQpڎs|C{kzo'#ww7`1mģ}*U_6X}WW=ztqh~gwuS~BIe;jԡ- ";Z Z82 >@e>yom/ڽsQS&j[%g2{|yc7cWm8,6ĝ&~fyss{3L ˱4oeF?^mt#6t|(uL *G 'ͥ6;u >~~x}}wadM%Wv(@zy!ɉyiz[йri7Uwq@$P2[QС CTO^op:?Z"A5JP(pfJBMZQY\zCaQ=Z|oKp vk^˛ #y\U  >{#7Y7'-s4TwVFpr5UG!* ϲÖf v%x(AfCsd%UlWYZ1xv h6 \jK0azt"q0SP),Y˰6-z$9:8>oẍ́.Ԓz`cꖶ}p7֧NΒEN .Pd_v⃽ãl/r-T) yD`N㊵;I I__62{G | \l>Y>Xl3G< #꾓1J-6DQ hV_s CE)ɤC*pmO+1 8~ճ_~>ied}t+'  Yo\?'??<y*ְƣWכ?xvoYCW~zU Yr\JC& lzi7~N_=Tb ̑7\Fsv爓6cR@;ǯvٝ~w>N:yMS*hVT50ρLf1Èe;Ғv^vtj4b:wY?;̻a|f`2wB5c9bpiB/$h0x qWi%0;gp@fZGv* 3q ֑\X0nx 'u;zEaIߨ a n3CV3n/`_)fic2cV8l.˦"J 'R`+t{G!uYvNW |!Jw/#*NZ:ۯ4QWJ]\P{o͊? Ig(MQ7rt\wףݮB Dc z7=5;4Ή*5<ۗQεQݓn+;^4dҥoNquɫTwоW}\k! SRc n?p=|›dq1x"(o`jޑUђq^$ó= ¸=+ 8me7RC$TH&^@*8ZڻWh@Ӟ»&b+nIXPحP9iLE3Eq;<+SZ[]j5VˤKRrEQ]0:YvV> BgW%r7S>N>f/8|!7DvpW؁8OJt5)9ݹU{ienmy74]dĢ k5oE| }404g+XWv N#M:xD$a[iJ* DIX"5Z"$zma`S=ړ-F &հWEGTWef\އK^=/5`ef9ULv&Zx5%V>2$ ^؉^/cܵGG[2//yx 4&Pot0*ȕ){/)/DN؊wb1 )v,_:8DU ȕ8ca@`3ZtgZuQ&X\5`˷|S%j>_ʯNxΉD NcJ hWIw 54`3'W\h@>s"6SW"YsͲ?ǃ.n@?hnYZB%P8ނ&}ɽ̛3 w@ysVWSzguD6')6ag\9t:Amդ&^[qFyC8 :ĻHvi5"Y '^XS #is+}?[t{F=@1-hzZĤsNm 95ЛVDcv7-xEKl1ԅ7H c5+9mŻuÍ$Ÿۈ˼8Q$I $oܸ;*ʓ}6`{gavpiưL@duu˖L)cA9^nz,= wξc?qȅKjKo{+8fYdbqcTQob Djp2#qEU'KG* -('~̷- 5::ֈ!f'\ ]ÓT͜~2ODє Nc6hO⣓'G JE{O+}A>i~Ř]hg֥N[2/avIfJp2YK B[:LIw'2bu]= %EYyfQqLO[/ΈAr%sT66N دZG $Ij)yg$d0QU(l6f1=S܃PPc7Gs]׭!q'J q GbQ-cFN2 :C: tZt[#/ɳ=oӝG̹'fؠ*&=BUsLUp~^zuaA]~JS3Lq/dVJ!`#@xj`Fo T0zWиu!,_hܧˊ'Vs:mrqzD~chhe@*'ަ_'2]36sXS79:! 8( ϊ3 )R 3҆)EnuQ[_C!M Ȏ |p%4K>̥ڡ'" wYFߓqWVe#i,r) x2h[[FV3Xǯ #AZR_[i0%!|J`8tȧ34ApM8/ћCS/U7L[D.{K[TlHe̴kJL2n6đHf5wJW7g~r~oLW6Wkg_?:{= k~ϢgQ߳Y,{'D}/TLxnjIeB10VM*20lu 1pz fAÎ<\ Gwh)q)=CG~9N<"=pؠP2G8[lW@Ҍm bxum?FqǕJ,m1jQ r`3q z>]l@$#S3ֈrآ@ոKɈn I]y g3vӡ~߫%ޟ3SY"63Ժ&'S]%adyDqT!"|¨ Z`RP3>8ё/Y,rL݁b(r7F\ƀ(ձ_ZE~bc=8h uf f3K0,3K uj!/w 亦dubvM%o?C~b NW΅AꉄI+DⰟOFt䳼CmO9rU{Z#eD1ƇGs8}5_ GCr, @& pM$1VX. mX<' 3E6ue"jN6J%{KӋAjMqmƪe72%&[GKO1ɕ],b>ȃj0M͒0"R,EU{|o>s5]>.2qv̒q$VE[ /V}òHCF(F 0h#ر jdآlp0T0zΩfOS!ROt!`(YGMi d5Pd>U*晠8-=Uٟ-ɧ6 =eʨd#밟(B@AAl9so!8;i.`}mbe%Wְh5~WNrnsCF`i΢0iY W'')MZAݓ?w#GlB/;מAKx^ ^ yAXM1xk>#g2K. Z6Ġ0c r ]PBw&j% gLr%^Cw+C`cB퐸0I Πq:eh,JBS@TkQdȦc4l |Ed+h@.PWM rxx}f\>& $"騌p{qP2l;P[p$4=%f&Qxiä喉W|"w" cxCL34 jHcYFj1E%$rUFwox;rV޵G(9\ÒBZ`O[ǽ5Ց?NC\kԂk?[WKa [ZuaWVn3U{OD~zL0',ξAAmWH5=ަU5TXYDaD< ~+XkD dxRʲmo}|4Ej e=N9 Q:+gn }θbI=ѩmTJ<ɚ=hMAjuc3#cG0] ˥ƅe-w5|e!D+ |GXB %dKE (O40FxF(w#tvрh=r64hf'A'Q m>tp+ius/#"F_S%)V B\{QgCJ XaI%kRgErrhieCu_/ŀщe2QC]2z )R+0tQua`X"-|B/A.уg^ecĐ]֢p49ZTįSKh\ى[Ȇ.J}`pKm2V@*(HVM}L{|iTߘ,ICh? . 6Tc$gAsK >a!`(jȂyU$-DjEk̀qޝ4rCt) ǡ#[Y5 u]BհI{TK 㩓&Q +Vr8EVe/ݹ El|Dy Mg)^:Q<xlo_{?}?*?3_{=y}ϼg^3ww2,w:PIộC(E8dгKW#B-B':ӊ\?&du(mH>pz֎NAMYt 5dT҂q"tCֶ!|OϨW+\>оߕTTdNx*Wq&?q0Cr"r-JCsCyi4yZ[@x T dwtLׅtupx" 0|3 q+֔|Q$F}fQ3EtcM:,/O@ ;VaD+Dsuֱ'& aZ8iV IaN,+Ċ@9ĞCka0?~?{YdO/'{fAL0+gk||a?ĶiDAɮ-:Wɀ g!IMLI.F <8Lͫ!Q+f=Ib=N5`˭(UKuZ /[zUӕ=s1LEE$ףATQTY]w,w/5`o J Y㮣4/a'fK%\RæuJ%5>{qkH=0À迯@-WHhhR"Mh4D9r ϛ|dQ>o%{K$2b$.Z!ŧ eY቟9=Lnm1>3IqnuΑ^ ojEs樈'qOֳ8uć%WTtl3ޚvHsrm-YLm%j((9RӶg}'\Fvs8B:^Pv4ٶ̉xј'Ҿ_v_:p '/b;>bRV&ЗyyBi#&DR"[6;y^qnL-&L"z>۲x=: ܺsöCF=-.B/0fF739j^0CEqMQ%(XY]<\]|E7#|Sa萪%Z0"pAIZZOI.Sz(ot*2dO zzpe<}vЅ vf:_0p*1`LԥAu|j7ov#,r(l%p`` |Vr=v{#g{g[oSq;\&cTKR3óhih!$h958 GKo Q6zӧNrYBRۅ:һE^V`7ֈjN?aT[0acꏆ_ dḈN_Ϳ0 ˟Շ+3?-Vw9ΓU~p*;ⶺs165A5\߅}ݺgV>/Ƶ|Wz?+\7p܅;uGn9|?wv߉;q7.n2Ҩ\>9;>k7fk@[|jYX72e>*Ic׽h]˻'{@x,>>i SR87b/_ĘN?TmEW GsxDْfn;n7#:,޲Yn~\6# 4"}5k<[0ZᷛQzE碟^Y+6Y?;۴7'^wkRkP I樮LAr=?Z?syWܹr-zԇٕyjjnˣ?FT(j95"}_Cc{CB%:5j2 isF4kܸ 5(%^w>2̵#w.˯쐨xʄ=LG<Ԥ6ïRq_ &#-'{\IzR