#!/usr/bin/env bash # # Copyright (C) 2011-2020 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=05c79c1ffa5359e085342f44e893a452 # 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 ^^)vJ^^֫*mΡ]:[]!0PԣQ|ךIV%M5u֖  hseψئ<@" EGiH :ЊhƮ@& ![-9C4񼌽$Q01׭u+  >0cJ;}8㒅S^,y0 ̄,F#r[_P,cF@ a^HȄ!C mhZ8>%\X`& `B7LhoI 42jh^674RV28W#p4x/w.9 GťJ.4RH߅־:`cYWH#IQ`DaOt]Q&*W &$sr%:p>{x.}|0I8c+36c a[|c+)*HY@8` EWW=QR4X҂2vS+f dlR%$CE?LY1x9+d Bt{.crAmꂴ Ez5{g-HvF#AJ;0ˣ t$Vn%%Pقj^&he*i5娬rnanNg !M+4JC0e XͽJiI T+loݽsY6WP-{u_ayDpoqs˞ca4x /ə!qzلkA`ZqWjU-' ?4˯4g(3Ȁ%*9iP&3,Z'o g+7d r[ͷˁz|{ HdDR3)7W)|} nf3y3_# W0eR(in+6$7Û7i[t PhE IB5hJ4 FC4viw>$њ-*qkK۷ r'>$P== H:>;o+EX4 %S TtiݿD"I k&ZuE(}YՔ:q_ݫW{4 62WW)mB%`yPP!LhVIx44{k2X[=UÌ#!g:BƜ.#7oI#MYFKk}&_*r I"e D|Ҹ!tc IS;`ݩNȍ V3 F8|2W[wP[C ƲȲXHij@Pƻ% CQՌ5~5O\O=:R{O_)d~jƔGV4_%f8bX/4Jv@DlaέS8k:/3C*JRbSaɋEb>"W'U/daÃ|]7ȿXYJ/߆ͯJ)"K;J!4.2Lan.M+%Y2'bDíI'Y^eO-"h?뮽%Z-u-H 2"ch B1b^()l&%]w 9X/tڢ\54.Xrnz(F R S1Do aCgTLGx<>0u_|/9ZQK/\t*i:,7 f+ /dcQ0D0c~ b5G zXa:RQ #+(+1ys LҎjY):a[b> 2?63H /,c"k O6M!Ӧwb 6LD-WIq-"-M*X4Oh$D*\Z1 (-zچ|WYWƗiALkN 5@m/T;7R|Z@b^Ϡ<e݀ebcO8lJ<5[zܝ+~__________̑"aI=~(8VX`QtKQv1)"[۫3W`A8T%<j?Q2vVy'?utGUG:R/ Wj*k}/)`羅Vi)uN, q?Rb}pLԛAQ x4rla?toԱ?O=:h~rxfl 'ޜ3U=;U=1U=jp8B,F^|̛Z+lk mE.Y !s(90V!ݳ8~! +R ?I[*jdΘ8`? !ó~ +L7ͼN=(6Ml`(jI|6DG"!28@ }|Tl yIiZb^*'ةPcEƔ&DZsbRްj5XbND͏@ 5mk>5eFE]ۼXN~K*t/IE~=ad VYʓR ςQ Yhh% !xj<ȣut#Fjr#,pxDq@AoU1<,tL2{c% DyS kVp-f'q83'*I3b&V~('j֫_OD *DntCh標1"MGԴ GR%' e|ݤ"'zt CL%tܑ5rc-!j)by&ot.D)^K-36Z )#ڣQR,7n9iࣶm&XXuԌcgx+umcśAwȧ[Nys2nd\NMP_Q#< 2" -w cۡ {?`Qd!i1lܯ"D*PaV'ρ>GٛR2W}>+șǗfyX Xľ_KR¥KזFh@譋I4&^܄-}L'p5aW\ʄ+]PȁKp"A͟s$݄W# 7JI Խ/}PZhO`9ty!T&!8rK򾉂ZmcDti]UD7mx4%٘f^v_[}GE\e"~D\V`MpЧv3hϧG`3IL9}vcBoWsUW9x'yKddD+<4䌺"1Kg{zI],+ל6y /y늳|}vk1ߺ}o_|o]8M} GuYZ&-VOzԍlP*x|uhd;ngv??{|BԹu9KYðv׊hَ[KUd9Ӂd^-8EWߣLbO?h`mΠ+o;iԗzas6$Wq7#am`7s-`gRj󷿸򬬒{f؝6Te7,F V˥ 29VdYȀba& ?l'Q&Qr& _ͺ0+ڐ3V^@{Az!e&X/F(ͮHڍ`G1gtH_0k$xCJ:=~_w>6Onɾ9(֯Z((K%9BU$vх$d+u.">redd*;CnmY/%8>^XDw(DRn&AQz }HGQEUC 3`aQwf:!!|C ΁7p`O oKHc~%v0a} w3YHBdl:i=-Fm7,}g 5A҄#T4rZ~KXNq4c EH\GL`hƂjlҘuU(N8e(6&V2G+£(HDp1A *oFYr@eEU +? 6D Q'b)T*c0GI JNiҧ>nNn#ЌR2軿`{lu1zw!7T}tUú:"V5 O9?;ڑW8A͘C뻪ov6S q@OM ^$fb `1 #*״^ ~j4Tӈߩ|;xR  0$%-]E|Q- 帮ҲdᴢYG-`;Ghg={^P[4A\' d>J.R",Mjд ~ \ah5VGQ[D#L(l2/A,N5\ A26%S&mc;2,dREk cƒV+ow;R!58ql}}Ћ8e}tZ˙w_jĸkn7DjcN  "Uɻ`= B3k-%gMDg\DFw"ᣊ1,H}D4UK^TGj12<׋s}gkj^:D:V Ak`rUY{zShGA`-(ܠb;*U0;go5pܥꝆ9_EiyTk+`\jn!=;w齶T-r͡{E{hk/w' c7{xՖ't1G8;k`97Ρb0b>z輂y75ɘ=rw&ІSHL;~ݡcs:YujG$F0ULZ 1a/EgSU}7 4YլceDY̹w'SnP /qi2w&! DАPK<΀̀v/h[5{P:n!{qjq$y[;Y\Ǫ)rҐStX-bQBj7!B=d"UogZCuiiCYJh'0[@M>L; Wx"f$p7+B=T.e4 ހb|ÄU%FR I>WE#ȽJ9 JHڍ؆ҫðHπ]3)Cܳn^s\K#"YYEt[ &Rt!Ƈ#ґ~S B+~ *i=|?*ȨdE}dh-syyƩ"bIqs^gO 3tP_ѳ-XG`#'rK;(u D }<3"T/yV:}絧;I. l?+랭x„ qz @@AD 9FnX`j]pNrј2FEs=!N/< v~.#/ Y}̫1%ܗ, uJVd89}yF6)vMߧN`_N~=M#q~e k4;f9he 1;߂30Ek*_OTdRO+wtܾl+N^ӅN7qBuV%e[Al־.pщ;8GC4"f7ՄL\ r: R'O3%)™DIV:lA}KAC%miH$]xڰ0'ߴ'mG BN醾B\`rn*|yS%C¼xU-nH2|pV[gϊQtfK eI aZ0|(ވ oO!o'u @ JTݣGu/L( %5{Vcңt~w=YuV^;-VA;owTi|Ij}^R*$R5 $ uz6t]gՌ̼҃ԿײtEyǨrE C!A 3BOASe/R^[UNP6ER-z#aDu5`8 hwy`n^4L(5j%mtpuw\zwiå\5|]8Wl?frxh Ǜ9z \ii#;%i'#WDzvgB]q2K3}jͩY`9-9ElRBMr 'ur_ :B r^ɲSXFx.4& =}̳vMd_2KS=’@L=4o}[MhXБbgaa 'Z'}lDX2BbX'"my0\]q1kw\V SO#)tƋaWBऽV8G8_29jrIu(|aUJ d Wէ_""Foٻg,< ?#NJ*\GU^ˉ u۠6yA޻yq/.K۽pGkr&)Q^ \\j)l4<%2دK:{h{πu(_; $󳿞8Tt@i:\`*h]TeǠtۙ C[ )ʤp:*:b\zyAпL9u[n9{j&7׮:rPw}5mW3;X[드I2"i?V>&됐i._&*ѤϝKWYdu,sBv˾etitS s KR/s 2=5-w@Ȫo7p r}8b`t,[u/~*9Jhi9>!?:zN-Dt2߂ "%5RhۈE_r0%29._F9AbX]-σЪᖩѮ:^gg[R&v$D):ƙًݻuO*^M×ë)z(S{ooOLۄQ=u,/i:ry9EG&u$Olmv ލ?3ƗP&$ͩ[WͺE-_B0\}(6$S5 2y`rD@ڇ~#W4}hrYX 9x 2Xr<7omynWi3DCA:3?Alݒ"z{7t-w׼v? [yah *S ˆ OTe,rBvE^A'k]>pTVwNb9sSGʥ)<ӡ `~cnhm]7#M ,@…p [Lm/(8V]s޺(\cmYWkkZWL)wUuY؄ehn6qmi̕(y` |\RJTd& C{(]FЂX;^=_ bVj hA (z Dl{3j#XdC݃ aHtreMdaC=ʙ(KYxSycrNO c=5Ɇ7mZ@̧D>Y36H lӅoq/ F#4 |5ZD(60ݷ˳羏opnWGR-G-Dggx6mD>t!\B` T:Sa)O^Gm#S' ^,\0Z/k>Xs;!;u6BIKe`w$>~}tnPqOTⶭ/;نvwb*G/?OL%9HyհX/E;D8?w2F.zelx7<52 La[Ђ_2f>ڭydZXuOGmDtG1|Qk0lX^$G?X@r:CY1ݘ{e;2)f1ly;qwjS(L!v&q|8nZ{4sS!i]# e݂,"[]jQOWUP"Q[*1;{ϋվĕJ(pY}V{&d|-d݉m݆% LU3M j *MԵZL^VFܧnYs ^YO:t |Z63o3g3 ?SouZi}"W;%Ͼ ;m`W\v@n^qRcMy@!ƈ)H0 S/xis _&By!]-ϕASP )r336-~w G"5CA`sAR]8y#5Rי/ ub0zhb3 H\6G2t0ǏxEmzC׫fv\1r<4ˁ}vf>@͚C*ߏ۩ȠdR4p!guOȂeN~kvj̨&Lc13T[Y~a]}'{tJϭv>􆔕_,k܋T/^ϵa@G]:/h? &&:MhHBFl7Nb23N6?Cu,xalv%rikGn$v [tM/ w^Qhap &$e.Ή "x#HD)қZO tlp U׵=3wsU!8GǏ f2-e1tiG`2K T ]? edUM#4K{EsKx+r'OȶYnPj4 'R6qߢ[]R6yubKKCbSHD~6)c"o!L ie(FtUf(PqXsTdOGƧխbtq!?-ޓR1G +nuP1) J9 EUHC3u4嫊B?C\.z@yK8>=wS=<9ߓSZx\g,P`Ð:2sVV<Sx~ 2zgd*ic1ȧ16MbT%zNo,k@3 78qT'^}aj %_mS;Fd%).o@F/exZBLbiPPU si_K*eicJ 5ZnNN䓽$7*_9Mr N*;EX#*ٟ=| ,2jh.6<łődԦƪ~ Wkdh9}E "}F)"gB<|#Pd;VJu k[qB\)d̟&VϿN<VI{MR:Ǚ2FW+6g>W3J^$ ,wh D|rVoy7*[ at9kc6p&!R}Hf]ё?vOyӧ?x?,[f?Y,g3jg`gA:Zu=ҟڐq@E1\,Aizl5QIZy|dYt@pC(O_欄+/D˙ l C,S*@^yR$k FUqN!EV)bE?et.R :Q39 BŐ`yd~BDEtU@EȄaD#B>o%W'Nc~Tj.i6(jP*u6(㑑Sx,FCI=lx[u)'_[QAou ,K2*47JBeشF#(3*W&A`#0o ' T9Q B1o_ Buk~ `.UMH^&q Z YU[zιT)(^>(#kZBq;*%E1N+T"gjz||]cRqj&GM$I6V:ֺӺ.Q˕Ɇ~6?wڇLiرd] GsQW=Z{n53YN49fd)Oy1/\B>qߒb=ЉAIlz:xg kiuVh9ZyJ`Դ,U'@=3Lɶh^Nn9FeMF뵺Of.N͆7!DIMBm#mG´ۄRՈvZ;?Do`nD(Et6i*ߞF7˽tGEX%xotdO=?U IWi W+_y~[+8{K hIb 9i!F )Ϸjl4,!t%@ Q8԰%xjUJM#teWfesڅpœm1ˑ%5c@苔 P6dU:f4I6jq }U0ݥGYMK0LSrW9a4EsLLQOA#n>@V 9M͞=ksvӞ 9Z%hdȼ &LXp)0<8kWU#(:(_%2!LT @!4Z-_`Fc3F۾ȃpD +gI͐|jA*WQ=*Bф&mv;.K  s6SN n?Đ$xYɔQEK,pw$ tj,|ʮn`uTelVJeA;"=]u9˭q HEK*?jQ%6d [Kp5`UJ^\ґM3Ujb5!ܬ&Vs d˂ZXX JZ 7[ۻ'9ʊk779hqP2>x2+`p JTa+-M ~8{<ܨw~xWv2.6y3vN;gۧ9>(0ST\أzme:<;{[1g71ˮ+U_{yR]{op{B[A=yC͙:E0xz@rI{U 6QV5ne}<(SY}lG];_^{ R[MIOOo&u'~:zud7⋤cK: ;0E'Əެ?1on/a++fr^IO[9VXuT::ZX{/a-lu-~2(| Q^^z68aԤz9Q鯺y'{G['G}$[[@y}(o7( j*6灱Ka7{%v^zy/ -"׀[eSD<z>P >T!@tn8eb'K4:h\Fi q WINm >5*ہe(^)oM # /3wnF!E}0fjAHwc֟(s#ErSUw%*\z$DeU_I%;qqqB @]h6b+ft]RY?4nqQdmrV%а`kn:nI1 Мg1J5ש/g뵤fȥ~_,᪀3-qڐ= 1uZp党hp;>?:>6 /ZkHp;҇sc}}i\q~' N"yUhI`'` }&cMv{^"ݨ%O(5(ࡍLgxFM|ry9xD^m;j6 i֜zjzi{? x=qZd_~e$Ř sY;z?׿vhk7c\4<_b?OP)lD>0{Q7I{HE k$$٫z^k&-z,T#2۽ÁoA0OG_A<@:*\}|֛]M$9kUUNƊ%_T* sV5v5dqKQӂkQ#كvVnWg UlttHyb%NyqkIݹ\F:CTj?tFa F˪ . YI'VVVx`V  f,,FsJ0YҞ/0P~[C%N:+L+y" y,sqR3#e&ljM+0۸N+ة2h:ô0Uq$^:%#HU8òv: SZ;/BF"(X9^[ǖ蛺u,A%ӻ}No;~}5]A#,q YxU\0 L[.jy֢Hqx-?=ğ-86Ѝ$*>5F֜ngzwJhws[):-tc)5 4 ȃ|P6.'yKIw.2ҷF۸]$|UUњaV:klwI݄w-WXkUfW'Vn=Y_' Hǧ1Z(<'Kb/ftGe5wl(DD^wuS[]h`AohYA盧S-eҁ턽6jto j*F4vQ^ %"QA@xfĔM~.rrGC|:2iR&t݉jnM]$JYŗ3?pyDѰ'l|ԙcw_7e1JbT2^O= d20V F. ʧE| } xsuѫYtU+GtUtĈФTψTDDDH$;x4c" 3EpERK97h9*rNiixdE<}pyp۶ 8G$gXiU-2ZWr-[LC1DzOALߍqWӢ/O,E.Gz( o[x=n'YU۱ ďkz>~$7g3ߙw;8ww-7{v0\-])]Ñ5ۭ-4V׵E&WdPRIIeQyU%g^K"~v P2'(%$0$9v QouaaY U\ xiwP|xhΚ85Nw[1׻LiS&i~ǐH1:1諸qQR _]t1z,+Կ"Uxm7Ȧ`@|IPvQ*:z)UBu>OF|'N FB4$sxA ϰ4.LF)() d-Lxhuf6ӗϿi#XnѧQeJyu28F34DGpcTa }HT p Niw9)1g%7mp3aUgvՑAfr1OZ.ݥsNfhe/yJN4Jz΄q7  ^VudN}OZfU}D`Y_ڡ.(PV:]xkӃLD/[eϤdl"7PSRj%1 Cr{]WlE2]K~4(GCM]$w N3%%t]%nUɢVyrL)fjڏB'a-(BORX *Cz\ɵFP!-C}!I ܞˢ\" ](+0z1]nuw^k\ fzX}>f=[򕐴"P[yՕ@Phܘ<7TK>{twG.M A]fpu8*xcM#L->ʺv旑 -tjTj/auRQ^#|*ap!Cdt7Џ$!QW?V(nUǩZIkXu2h]`$j)bϣrG&긡w6/-Lւ:%Д90BUJĈѽF"'lF;CC\a;M/G~}z'aFՂre8-،V %ii,ar)3EȒXr&x* DK۩T8Q )t`:$VY:inƵ&lF= gNdfJZ6k]/W<%ۃ=T?s-h:*ͼ1ӑ@6>owThYʾz>`4l9DzN'mTnt+(o(:PsUhU͜'iߒ"XB' 6xGi?oC[tʽ;iD}eFbFvWSL10&[mEZ[ui3MY`sǏDŐL@VPuuK;)%A|9^ֽvs0?xD>fgX3h9!p"XIVmmkLȏY"[o팋`z×-HPS3&+|j?hau@.>Xg[climK=Op '9dN+n9yna6 vO# R-0T 9>k~Ř]hg`N[g/avIfJp2YK [:L7߿x}WάA%c+pUjn]g[g= 8\"1_4@Nwxܯ M9Xl38:!8(3( ) цem"[_C!~M ȀK `֋Kv>̥ڡ!" ~pY9Fߓq;Ve#d,˲`/h;[$hӾ[y9 #AW[:i0%!|J`8tȧ34axM/xRz)i8I^- U콥M)[6\У2&ֵ@%vOT77ԑ Ff /1wJW7GIݨv}m=Y֟Ͽu,w;E΢~gQYlrįN㭳Cin'Dz QŔPX-AgWaxn=qgs GKmEJFaRWsTs*] VpEߏ*ׂU+:=S9'?~{T°ygxo6 ȓ ;c4y‹ih WuwP+ #xY1]L?]@I v  fA<>8x\ }Goh)Fq)DCG~9N<"=pؠ4,7?8[l@ˌm Rxu˟8NFrJ%QQ6VG̗ 90h}a͸冶{|$" M;HcS3ֈ&آ@K!ɈnI]y gӡ~߫%ї_2SY".3Ժ&'S]%adyDqT!"|NQ |bcJGko这/rlO5Da?j/'מdOfZ?3ϙ%`f Yf%`95g_ėt @ (`61C♻@QC[L0'WxY!R1VLo%Q*qݛO_Pk?`3V-K.g~g ᣥ瘗ꮤޔg1UA5i %7bIgVybWGӪ=i7ihR$.*BUwҋj qf8@5/C+TurrK1fk0P?d齱Ɛˋ12O-pAiGPЊVj.øJg=M >%K=ӅgK[x9t71ମ6["YHV1eJIlI>i0 —d(SF%Y2|PP=B)b5ř~ uٛ8v|^:dWEՠ e\:i9=f (fRauKxk>cR @;-? |ñy` 9f.\;4  ً @/sh,| uГ1S{Xe!.oH\$mDf±8ٲt4">2W:(GSZ@P׺W<W lτg\~mˆ VtëBb*&g]iLZ#J œRMh||@ nHQ1)8G|bٝ%(=;;( V&iGl6*Qu+ujZ1ce3#$ی tpQB²>2sPAaNǰd#!/ 5|߳ͺh` [q?@Gy.JnTEH"^A c&4F-4..O}V(q; FP͝:`a=|yB0b. FB@!JG !A(7\R`J%,YKeMˉʡ]Tו,VDO ykRBj4/݆R֛CBD/MKK\D¾A`] {] Fc<)BP"aFF!J vUM;C"|t^+~A0'b!ȹhY\qNGW_Pl%\nX#!h]kDЭh O6 g :-P;O KjكeM%\ 2C[w4 }V^#d"Wzx~PR8%'(_@> ÛCg0.o6 y^'uS- 7NNtGNj>a &|(#o F[5p'm]`+JSǏQ&ڸxFߟOݬKm;瑳7A #jٳ0/Z_vOp}q:/ǝDb@Fe (-?[Z$g^^.0*RW{zj ?mQ^P괺^b!a* Y#G磨Fϣu'Ib44x{ gP+"l0w}$yq6?+]!O=/BM?c4)\IV9N^"vFl0RWB"#\a#ᢡuKu܉H6nwDP%P>oO%ϧWtX+XM;.ïF%"Y|zP äP*9BC椸gZ#7z(sdǮ;vcZsц"9*"X,N%g-7.]&o~߾jS%S[ F%ٟ^Kŧ7y{dT紭Khwq8!1*7JE!=Msk0ދTJVnVU䍓\ҁxtٝV-#9O(mdĖWC_fg0+c.)Ä R/6-^p.4\-tQc @]ۢ 2zcm'|Pth&RԱ}6++O2?FRwNIw|w)He.2]jꏥrYuhQjj߉(xSz\ tph2Zj/@JA ?t|]kDQ0-jNsiSA?.6<'===pG}A_0Kދ{pw…sN=:=Oޓ{rzx/NN8V(h:XJrlt䜮AUmVeaÔ$^uU.❳dM(LI5_,ӳOCzcO껳קۻ.j, I?Û +=_nvq fi柜KV=Jo[\\?`]?/u3}zIޥeKQO+L'DZ-I(͕\(E^.[Kʑ*@tEAkw|/4p?@]rJKp\l|+g*s<}:YjG9Z[+o@M8_bxW]ծ^.g45˽ eOccg?g3~f?g3~f??#20