aboutsummaryrefslogtreecommitdiff
path: root/tools/fit_common.h
blob: 1e81d4c68b61eafd6f91635ae3fe205bed57b213 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * (C) Copyright 2014
 */

#ifndef _FIT_COMMON_H_
#define _FIT_COMMON_H_

#include "imagetool.h"
#include "mkimage.h"
#include <image.h>

/**
 * Verify the format of FIT header pointed to by ptr
 *
 * @ptr: image header to be verified
 * @image_size: size of while image
 * @params: mkimage parameters
 * @return 0 if OK, -1 on error
 */
int fit_verify_header(unsigned char *ptr, int image_size,
			struct image_tool_params *params);

int fit_check_image_types(uint8_t type);

/**
 * Map an FDT into memory, optionally increasing its size
 *
 * @cmdname:	Tool name (for displaying with error messages)
 * @fname:	Filename containing FDT
 * @size_inc:	Amount to increase size by (0 = leave it alone)
 * @blobp:	Returns pointer to FDT blob
 * @sbuf:	File status information is stored here
 * @delete_on_error:	true to delete the file if we get an error
 * @read_only:	true to open in read-only mode
 * @return 0 if OK, -1 on error.
 */
int mmap_fdt(const char *cmdname, const char *fname, size_t size_inc,
	     void **blobp, struct stat *sbuf, bool delete_on_error,
	     bool read_only);

#endif /* _FIT_COMMON_H_ */
42y)0aL81x_W{_ts޿LKMB>AC}!` Ғ0E|Gǫa$k=7.!](pTeGB1: Y dlJ֖Q " lRJA9㧪1UB(CHS : c6"OZHRyh+!7xL'>b'!pbC0٬cN\i3'^:JRkぜ3=Di M"2h SEb `fmE&-MX,flYH LSm %:5mtK&('9.O,'fp \Lԕ|~H|n)HT݁c;6b Ƙͪ%qxNd~=Opo~46g7>뭘Z(u%^;b!hC'Ds5BISalNj?<<7saAxnI\;EK8YTp yr!˻;[fu{r32nJa |s E]8h ""y:3:E)C|@h{0Jk}I#ez R"AwnfB% уTJmGF%O V!2 Qԭ"N},|a^IKGNLNw5+-'^zO3v 귷Yu#FN)Dkb&5-awgw;@S@ n % KTmIx dJ qЭ4M2h[,$#!ENW.rq) hD6uk因a?"o?_?.$})' ~OKjqr(iwlSˑ)Z}qc`8FG rr({JV*?)QGq!&P)&@=(JtE9 .OMH(:A5M-"$+V H+WN+1G$D3#BWWwc]imS X@䙍ǛJPB$fW'w DX@u r!d@D#;9S& ¯H@%8 )$MT!TA DH"DPf"qH}CAܖNQsY `PUh1bnq#ը4iclv^g[kp50%-Rqb6$VdÇ,ADPAF183MBDʱR@"M,Ys`'8#d)%T3 `1u S}>rk(X_p74  1.n`{Ags&qj]IN!N6rsJ7#*"T&E$h[EQTS5) u$C( ? ҇%oճ: (G&dL@!-40.P@K7.a=Ձ ' Oy%4e5U3(zv\S__"${P"nRXH< Qݢˣrr-A&sMtxbCǏHd1iDgzί(&R{ at} F& nH.3IIKHw`k= -,-ns .d\ K5'|m#3ȁ؅2 dƸ!c# GAB5)󏿾ϼw<>qtI,t@]`ï"*Y?:|u.|/M>k" 7:[,(K1l'+9; Xa#~v("dݼ(ff2C~"670a`#yJ]}XbP}T~w' "*$bIfIFv"srUUVC==!~cb e5@ɱ\9mctte>}+Ԙs3W]ˤ\iSݚCF! rQFNn1(ݱ3  @<[DjP\(,*#QEDc nJW9_܏u~櫦ZeO±P]ß39^o{Νfdw8jVD95>s'l"lUOrG>7ґ6=LG@U_ 'BHBZ!)th(V i)F")))*d"  h X*VB$RJ(V &B! Y) )h)bh bR&Jhi&bZVR)ª&Yh+3։vBjALd3%"n4- QtfCC2yÐ)hRBeb F!(F!@I(J JZ( Y(( |e> ~L'Q,g b*ˉKHCI@%- !!%P DJ@EIL1DU(QABpn /~qɥ <;l[3E4y$(D w UAuYhNOԄtS)fbA  j*I30zH_*E (ia " Bjf) &*H`hq@I @I4Qp=|!cFWWzte !3$:R]!ԟ6 M NOb'|yWǧQϽI6~aQ $ o[HsT-ø/P?sC7a4/ 6 f0R;m lo_G18.!ϖN.ӱJ@H(+1 II BR0L)HP>g6'PEm% iL6qD(@ ENEx6;{dI}4ups-P1/ #8P+&hH" J` j<< LŰlɂB?_< 9D=x~T`"&H[Dp 81| R eDvxaRκQ'ڀs CW44 RH>o{PfT`C(hwɺKw$LMN (E1KԁwQ a>dSΠA}w9CȞm !!؏3zd#` 4htmmRv3M0FȱC&$d6ˈ( !m~?w<ٜۍ}C2D*p3(&w%.jbb" R'P:xOǣ3(L|C1F!E92O&ECťOpIlUI c!a̾OO S|`̋GHls*#JXm<{ÚMI`yA$[fcB l눝9 ~+" R?Id˘٪CЗ Z906a( fW1:yar Fb3sL}_u~x_x.J ; v3fNnx{p$):8#}ǃzď@ %0314J<}1Nx9A Cz 0pE;'¾nA 8 $P>8|Dcrr"E+׆tHų"Z2˩{#8?eQ}S3J}B{3 GIālpq]p7(lgIk9Pg;%0^ѻF8s2` V\4/l:k?@硯տ >'S$OA3-s!~GTfDh(V[:0ky'Z6 "~um`Z&!:CA]d 0@ĩБ!62NNa4'|e^ yz @ׂU=4 ]K u~~XIa!O@Y8R]ۏ e[oeof&ERC forflLpg I9-tG~ 5l,6 G/F|M`Q oub^ 3᧌M:_n3!!$";$%KT`=ptz"b>SK@7꧟ӳ~v4x;7.k:>=&P)TZ21(-PBQJD4QQh4&PĀL!+B% SBJR&fT(J(h@КT8J Z)J@rh i*"!(mfB$i X""*EHHX(` Y$I@ @+@%("DRR)H L%2 Hx ;\D7/&N :rhA:~/2;dCnbxew {SpBvIz&\I&T7(+1 g 6*hd>xIE{^M=O?9:Sd.ǔ\}ȄLW  y!#~L4Clh h1}2B@&Slՙf&:Z9\av2LwnRoXn (uybZIb[tqU`෤DdI6GP<Ǡ'l:<O 笞jb{{2ɎR\Өl@@A` wnHBr:ssؠ!=!a?zƃHtN`) ;+C*V@M[ f@fC o1/$X62x$PGx˳IћPղBBB9CP{6cCiyDiQT((ZH*BH%e 0!M |t$iaU Yh1 WKBJrX罐+wD@D ̠vqxfsd:yC9a[ztqiY0ѾDAڸHYzpn%Do8ƒXpN1 &Ж?7; P_lEEӲ7.0NHd +(< Ӳ #!4CJ<8(# *,0CxC6lkHi0@hqh$yd8@!IU@I*eWZP?wk{5 xG@zv8Q0pݠK &*DSqdȘxj "'@ݦW0M@y|}\0n6ܻ;EόTfОH0E_g{_ m=I=LӤ%)w d?gG /q蹙-TboJ%`M3ODA"+ ;OrR 'T4|*aG4h s&仹&!ꇖ x7}༆S̓!R5 D`u7#`Hm4qR2Qn$[pI!RhD 'RZjXchO^#X nt.)ig!^ >O>HݼHRxiN(8|p^1bm!=^ǙC"4[tqLĝAPksy@#,B .SČrilnʽc;mAm8dPq50sHtO#0B(6 o'f^]zF{/Cݿ()n x.Nq6).SDDSnj,FKBBc2R7B FvmL\災SZs"q,`L rQ >eIHQ{PB@r(ÈOa}}z(PiHSAƴ @&#(BʼaGu; D㇃B#ԘmQ1 C)n={ x"~&*4BZPgcI[cAcX6x%%LAM.< x as!2"xO^p5 R;[خ4!& %mÀܧGpy.ݙ{b{Xz`AE򑠩jd @)BP&Pfd iQTD)E@ JZIV Ez.X9ޙ:d18Q=^R& &" VbH zvĔr1"a$C&W!޳ qYCj$D9{nC~M C(63=*}yԯ'??LUb2yY|q 7!a 룐_$JjR2Vc$2` GxDû=*M 0&2.# q+ay H"@r)XEQ|DAPA?-hjHey< ,'ciYKLwis'cmj*mDe1 hgG%Ǹ:===^e^ h{d}. >n9vzcE22c'TmtmCiZW),qòx Q|kh}39~,C]`o !ǐ#xaDQhXM T6[0:Bۃ3im|&ޖWZ/8{dI%i8 BfTHI bY$2'm $#u)D|۲|}>qOq}=yDN ֧GoS?.\X< ( WP3fi! 9Y&\i d^\pc0)JSa!DCz(iPe,ukw!؈x(HXa7n%Ɏ1q6QA'9 rB@5*e7JUŠ A) ib|T6F #ʹ,̇1o+Ө@[9@;6y窼=;͹%T5L 7svR*%]wƤ8T"T?g\d˹6["bKTVj9olyYn *sI5b)]h&DZYSlQa#:Hq!XO|5{IԹivm5}7xq.ִY>Ht"f>^'ǼuRI=([8pѰ8s%-_ Z ͓w_+#L?ؠtk?{%riE!UKJɢv{=ʝ`]_.@4@Vv{>NoTqYXATV(0f.@U`q>SAg#/) w`~Vprrj]\p2a-!Eq~(vJs1,IY?Ϲ= =7>%RCF{-)%U<8?фѳS7~bff'<w%N%ÀGvsڝCCh=15& ĥ$"P%5II u tׇ>9${DV(3႑oGpTLя SJ44JZ0A06Oj:;g݈ǣI '8 ["o R-ƦwJ b&-o'ޗ׈] >BDo XSJ@#ryyC۸R}wJX[Y76q; /1 :89MSFd{8_3)@X1)n@G{+cǠH XA{#z. TTE;N .!$1DVj>. ^vd3Ji3q s3 XiqNe d Pų(6XhjJxn{9-x6&*oM6Ӂo*VUO"fLeN0xɉ1`kUL| A:bPd0(4]ĨW !ՓK40T̹R[QQlb󸘑p Ԟ{CûF@٤,Cwpp x(qTkM1:)mfW.JAHcn\3Stĭ\ Cn2Og ́ s(8OoJy7ՏY(o1f6y4QbuFC%D`Ne%iXpc 6έ4a `[NP 76BmB񩕭..;IZnnMS-Ykm={@dmX)>#KMSKTP *EAh&f}O<4 tȿ7_{9 ~j!1 KL0f5{e6JĖc^AMo!7Tmb.ɉB`#Maם(a!=)#H`MćAϚHDYa{f2HWiqdiBভĶ0<hcLOM)u=(PR=ƣGOA+v1*/NI/9 l-j +ʼd> Mr`w4]Y.&Jb6W1%_PBeD8b`bN'mA%f d0BOɦC$WlN(М`~p<#xUUܩq50QSj `==>c& 0AaI"z=54 P) äbX#fl o*,?2I!h$$`y/x= Íj iUn`\8N 0BFOO& 1({*H<$ I?V\&@a^HM8V@cS& L3 !>(*}dT7!JB抃" H؀JfG J KAH""%eA7LJ==ځ>:LJg[ǽ*&j с"Q*km;8E"'g!$C4Yb6ZVvH(?ڃ8O0a$AL3E2g1dNQ~AR(X(ehPRTH `*RnS!>< }37>O0Q˧˽m=羴$ӽWx”x 33$װQFTCf11I$G M||!w !JUcF뼇^J\vW{t(5qB;% l=9x'Fo6t# },DiM*뻹4m[+HTBIџz-a۶74S3u2@jj>Kx"=|ԅO=ɧI݌Op}H ~W 1'>9=@¤SE |ĭà@xtZ) $C@ P0.P($*(T ZYƀeغ*,-o6o.*CAgnG;q4DHKWBC, >0$>ċIT M"j je!*" *I% t:A(6pPD4ԤA@QT(B%0SE-,D$ eLA{UFc!ar BΝScTר4] xpxhi;kp~lVhMƸ3\F0$О0,$ BLS&pB8aǘn2(aoO x!LMLI 4C-P* aU ˨O=h#{'H7cqqBQ#w 7_72qGI#4CR@f -(%)4~r|_dCS@(ZJ'AIt($$au(K @+"HAPRE9ϧG}2)pIA!,^쀊d)T!>D!Y B dERU1 ;0ę M 4C "Hh[ah$E-bPLDU]vcF Ik :t@ H}9) "C5yy܏c"{5%AA^@X'HA. t$ui| 0Z"'{X6;GaN5X2fx̢ң2n8$t 4iO4P t@̾OW8beaMB>Q02>iM~*)$P&F8GR .!7e"^q!Xt99۵Pw( Q(D#D?2BQA֍:MɣHh @4b1P1"C'V.<^P@v*bMJQIFc4wqNn8e"Pdscv2pQ5Cz &#(,R-D#j $D?#)ABa%-%yAُd_0LK(!B*AHB@DIGf UBA)BO!b ThJ*"B|a <2PāćHJKI,Br 8@QӝhCU$#y02"K"tsPtp1Iyħ)@tu]<|_> fh/t9 xyKv'Wӭtua)(v%7jݓT`ׂr$<}ۂLaasf<$u4DJ4KiN$ R7FuC, e/Ûk'F)K49tP\"JG\1"zP_ǺtA{rAR$ j*HwRT{KjJ/"LCK v8,bA1hP'0yC8Dpa!ISJ@A4O($ 6'RhY0PX?DI#7}:͋i9VH +U1D4V! )0ȄQB$$ye&b1鑉$U q.iIPL%Zľ@O?x> P;lfLl)x}#Hl?"bKE\ A+)Jy''hYm,- %w<4 @@]G,o{zz|4Pyu1Ȁ@*fpO98S=|`#rq i?*ꯩ`zҬA!0 3j=^O"}*P(ҀR*j= 4†#ԝrh!l[ & G'Oh;^]&I{_,Bzp(8ɟd^eb"8?rD"@$ 3M Eu,CERaS.ZBJK 4$OA dZ CV %|%5H @DRU"}]@pb.Lg\r)!;y[V3hx|6B>!BlOwVSăB0oSEa^QK@SH% C") E(;׮m%Y]3)ʘ Em0& Y}&øWʠX"yDe@I @) !(eZY NJ !R0H(%$DLLL;?`z9ﰑW[t[$WrjN1RWՖB"g71BD"4ОFHq /$"Y D]jAtC)N|q!K4LȪIU T)Oߘ  4MF4Kfd7&Gp!rD%6B9^34M4PPPSM#JP9ߥ8:D8 C!x `̨5!v@'&=z0HK>L;|IolJ['Dž#;]TAEc+8C@BXJA))f C߹½ 1)L!"T  AbA$UD<cJARPD "H``h WCT.abRls$RI)(A`@HBHZI!aj(R"Z @`bh@~S%M@DP{@ļ9EFj8 ٱ3l_u8$KpB2%(im)<1/BxZ0&LADz0@  I2*&ͣ n@ 'C0Ar=p"@;0Pxnk)W2f Β.#P`Ō=PE[O`{waQrF-K@e.)z}uIL/yqTptGAg:q!l87(p}'gӼx*#dfm{%4&D1ù` -cK9-[SlR{~Q^#uHFE ] cLJC-ǻuMF^#aF 9tZ>@5}|z yCh -Ui(WZ-A=x}PU\~Y60I !D>l*Mk7@[dKI)ad~LzM'vm=M: ٻ7,ʈ!h咊46;$`AfH!gqmE>h;*γ6 :. LRErDz4n](K A Ө% ` }e2Fb?1c,\`H$,' JzLF}#0d֯vת,]~1$\ZK)Ԑ R-թ$́U,H=$R8;%Bh4h)mU{vfn%+kMgK%F ۹4Z_c~qڒNx @L"H)˪)[2xJ_j!Yاtu1S Jr#-R>r`&@BJ$) RJ =RJo5-YSg$TTPA0>0Iw4f2$:*Q%J|\{ sHU%0_m cKbzA "(*;rJ|'/)ܖ 7HM@G~sݝT1 8['BD ?]&GGN=5!BխF 2jj}>WVF(RaL6xa'b?쟬ESAQDEA#$$>\L\T֘%٭[*h9禒$,V(I0 6+`$&@5\TR?Fko Yj:܀`fbP/4,o}hpy2ߙC /Ҹa N͸&3ͨ&8Ss#ՙ aW=ɳ<^OաD`[ feСTm -*!"7 7ntƍIANjI\3qJRY$G\I(In KŒB_sкY(I@xa;5HOW*%YM4rds bo rU0m'f4\YowZVVՅIY-gcŀ8HudNMx/dz 6 {J:Ncϩp WW{Q$~icvAӓ|-6I؊Wat)R{/̧GC_ـ!h}| e?TF Ϥvx^6|9>kNC[JAD5 {%@=0cs]!!L0yO׃.eɘv/§HxHaM4B:᧠i|ø|ECw⯇ ț(B1C %9RJ@D)1 QLI,oܨMDIH0E"R0LJ4{!D&126>:osLiI$샠dB0(@Pg MOGǝϒ ѯ1Pܽ "aU t<|Atz1. e1`4#D"ښv#hn 8\JCǯaRYOIGq.a`T^Wُs"y(md(!" +ЇgrCRI$Gc;LJI%@S#vpHN$yo?p7 Wa2 ,449:MWJ:AMyxH|=BdGsMlb0he4~JI.QOV.2p}v᫚.k'Z遏ir#vr>"m14RH#*P&"`d& =3+ ˥)IHd=IҬA$@0OI!rm\ $XfH`Rc XVh>C؜mZ[?2Og( ڌ'd%׳> V) ^hi_m 3Sa%cɺ8 5!ѠtU^b&9dY% fqڴQ0Pi"P-(̉צ̄3g2n:|iv5JL2 LmDCD*H<{y<8z'CSߟNPSD~9"Ia_pEQ34A9$!akB!1W?5g?9u?5 ?AΩ\GON˚j%ccUdVN;K(%99KaHd`91ߙ#zAbgb^1!hS# Ă4TqhڜD꜆rbʦO fap2};2yLaDolTu.BQE|-ZJhXk1T%g!U#"(I)(m*)1nY!_u̡fH6C[SlZˡ [Yd9SQE ؠ?E0EZjG Ե2D8eťL 7e%q +$΂gd>#k13gBS,pigV46h&gd4JSK@CyARPPAA6G/yjŏ-Hwߏ1^5) .:".*H|EQ{԰LXJ 0LĩyFJ4} tRQIU@?$bкMc,p0Z#)vM񄈩aWTb1&T<1H# *D!ӏD,"x?bԿ͌&ltHDL0IQIS1R3-hg{0,6f͵M*[n FN1˥4)0e07Gy{`u'wJ u*a2sM2$HF94>`c'OÃ!fj@C~|]+W7I?frG}Ў{z7 _*ꃏ Qtcp\!'Χ/€PxZ)Q3ф+l[JX5!ȍ?UdZID *bB$yw<ԇĶNA㓧k8Ci*`ePc[.&y!i\^!8OJqw(]C"Hz~z cl,9O#Ggu;!I A6#aH1RNLOfg~uem6FqA4!7i'R Y:$io t`"&;B1a]/@퓈8A/]mkEG>81*߬g "u2fh:PL  S`4<]p[vv]FygS iGHN1` H9Crs!KQAȌ"ʒnI9y4(&>wj̧N?-i_G~Zan.n7I['|5x,kk OL#?mPUlٛ jY䍰VÇϮwJZkVי"}Vl\gP7|l0⏊dUXkgogAǂ6-Ple%Vg>2W{2"-&sxkR{8kF\?;'.d{k!S,DPV~K+GkYyErM,<_x; 5=- Jq-TjN#{`kwze'zY㺔grO%{ TrWM@/wPD2FqQj[5~C/;#8& T-BI+ZtvdQhB\-V=V 8Б QF.`p痌Ӄ![d@LYs#*W w4]ZkEn4S">_߻ף˷=ygQ,Q )LnLOvύ9k En:*Fg. stWuXBr8ܨv"Oۍ&zg.71HKߞ6W }r ڟ4uTo'Ya:p2lHI,E˞w1ds>PykUb)wwyÛHJN~';s_t3ӈT('^<) TϸزnHBx9$EB9}mnb[#aI|,/0WbvkHH"ݑp}kY|gٛ=+)@S5 ޏN~|t|L)㜼F #HǪե^LGrm1ZwBeO}zĭRW|qE\Z)^`(Wꙵ՟opuܲ\?>^ֹI,hoĬf`6uX$K҆jNp.lt(TIȬ==ٸD)"dLM><4Cݍcf< ҄Y% xS{̡!_BY(UȷZfQ Jו)C73_]-& HFSsQҤpIּrpΞHpP7$;f(|pvtݍɻ/]o0窵u{pCQFw,7wˈ<^/tKi݇OS e]cWJ}i^֋/+vm@?T9TS5(R=nU_G꺞C,i F7 'ׇP|&M ~ɴ+XA k-Q*PN!NKS;Ul `Z k 2˟L'WjNB($msqqrz\s(?Q5fo@mIIs f&ajP:;'#U&fZZ>)(hL24|"7Zp"\O][XpIDh" l#jRtJ'q4I#Mi.394MHiM{u霡2Ĝ`꽉Q<8dmz>(b4w> wsTiV׶A(1?1UOxB2/z=<,u97cPP'*4$cʕihMx=fQSdSnƄ[0ٳ' 滼]{B6?Fzå1ѣ3MZGѭx*q+*h_U M %#R AoR,xk ˄IsRMۦ'etb=fO% ԪV{q}ԚRyO9v)ƣJV>{~Q Mk8T'Y}ݰqLY~Y&4s !+iJI_+!޶a/Nwq/i2xZl" c.$#L /-LMIHbB~2L-&-S(I13,""qkrt:?TU[bAʱƗlt@3'7kd8EGЅr |@YFH:pR^;FKO.Cjm{{Rq/߯ v{"ZBad)<_=Lwن#9}Z{ᗦ'#3ǀǯb(""4Go`m&m"`{U LrBjV(t),ߵ#aaLr06:C=B!2 s'0@j;>\`t 3m!9,D4MS'zSЎSg<(X!0V `K@=`a܋CB0 DA@8 *|>rw1LϬ*dEdfNnЙ *_rOG]wC[NBSp]Qo<=^߸4f M@Sz%LKCkE35tMڀ_7E`ZfW//#2D-DFi V#i7b Z#x;ܗ{0;d0;o&l$%R e03cm!&&dH (`856; [m-V[f"wyOi)C}*Qo@X"AKv|v4䘫$c.݀U v+y!d '7'0bȨaaEz>NަVDf*.`peA#Y 9LN6qvHuJx>^69ӎJ)`{ s-B u&9sirC -2hP$hօT/ONDJbGѴEv _qayg|:ț QUU'1)ǁh 7mA8$2fZ( qw$IKsơ`0c O!dqS3EJҴy@w 1^ϭb-~,3ٔ[ aW-$w-~LBAE (h1 a7'凎DNHkhXp@!IB*7cϨwxsȱ $C̅jqÂnZ"=sv1R*R(UY\Ա5!))SRIvs!DDCH <90PR@Oe BAQ"")O!.C8;>IщJ)RU+ A$qF s3csyXd t`$ll eɔ`" Z0 )U 2貕Mk*gNMM9ʁ06P7D%YUIE2]MD"f4$>+(e QaJħΉ}+f!{(Zo,vu+$ v@t1GA'|&ւ L,vy<|Cg99R$ "z~,͸7pwQѠpF_OS?0}1a_{>?̬A'a=3 C ȒDSX"`*DL@RA""-9 |*-7{13i&bnԑ912ry쎃Ɩl3 /}`CX62ì0Qk(AvFtؕQ]#PF(BX4& &f/!1w[ٗb>j6{kʋ[qB!ufhզᏁӬ1r9'C|^cQea<#:{#݆SD H44(P#3!P:?3' HuaHM/p(BRC 蝄D*R]vuh=W[! 7I|3<(;va4vsۖ; )]KZq&k]gQ!+ 6sa}߂iaΜ$=q5a}nos۸) > HԲ+.޽rDLlT Wr XU]PMXk ' aUDӎsD<8σ6St!BدL>n@6z & Sq˚H/'j_֙>2$ زD- dno:4!& ^nsGb#X&ݎd Z p~"ppqfGeB &H:?h30i<"d,t$P@;~cTRRLMF Y7mw?cRL!5f%ea{JXacPeaN-+|RM0ju[CԼEkM]ȢtEtt3.׌l舜d@}|hP Zs9$eɝC Ua$MsCSkZ֦k3wQ\2Eq1h:[$Uޓ586.wCOv:\a3zޠ&ߩKb";koKum= O7IBMֺ(##4"1o;)/|(ov״zytt-O&lY)tqF H 1LHV8KyW9~<_Ȝ+Zv)"nd& 4%䶦) pKa_i(/ <tD\GJW}yԵ,Eֺ^S']r=&L@j #hTwy᫐o.|DTd0Cn;^ s9Sԗœ-4eL h:޹ Ef. uj4ѥ[ c^%N$Pj]g:R˘&E35n[ $Np(uԫ[xl[Z-Nz{]T6VuHtkFxTL:)fy&sc*כtj ž.&爵$/, aը0aת:ST]1WQB'Ss!㑘p{78^Nw/7AoqjYDG-JvW.R?H{&T[j/}ɦR.ywù|U"Xڞ 㮹֜Wob M}7ޅڌr]k¢PB a.X,c@${w|¸Ɛ)Om',Qf$[t&,pi_jY3'7嘡1 Ë%qUDhA&!gZt3™i˪gw̔s6;ԹIE8tE\SU#jхhF/HT8VTvQ1RUHR΅8棃P>5aLœ).a->(BG11DɫBm m.|3q&2$Tp*j@_^/6\os%E_ec!ϲu:o%DGY:FQn a#ispJjAn|2B=QHP]!Avu 28찘@n99 a\* x dd]j~v/09V@d«\;p: q~ץPTXUDV[;DydSlT+7^TOIqy:ߝ-fo 484y Qyn5K:tlLFnR}lyal y5f[;pd1'd6s2';Aj2^[aX_ָNPIwת,u5q;tP!vA+3 bp$֕|% i:QQ\ (ЉsO A΃pRQ\ h%CrrmJj!B+%d:e'aUdn ZJM+o{u:=S':9;>fDZNix2{@w iW:y ùz}USn`u)(ɹ0CKB2doDž(3 R^CB_)x۹DRIR$18^nS%72yt!pDSAE4C"՗M4}R2 h-`1^+ǧъe2r%  1fXZmD6S0c8 ֈ%C9R nW'> ;LQh~Xo H[slݣx8r#=sڦ(q.]TTAțf͍0c,!s&<o gŞٸɒ,*֖vp\ĹΙ+e-QeX 1cyڽڞJ+񷊔LLDwP+").2(ؒV+A:ktJ 2#mQ"v D#h%;TMT9SJ!ْ"RP4 8ͨP QS4П @=`{ !qwu+F{w@TMEOƍC&:Iif%hm @wm{uWs#/5wMk֪(:5LPB8Hz籏,24D CR&S(qlqs6#Ҡk!$vLYu<&Hn $@$CqY> `C̄Be5C'(#O~>ߌ6hŌ~;0P&Vcb1fߚy0DD(>|w(&59N6'~48WiEk2b)HF FlA(H)M#LHT$1-%L4WJ_NJ@ҁB&$jM $%B"Tˡb~ut'ŠDR秢N ,iyM?B!RZؑԍ  êRX7QAF'ehjfHKPoRLQ6*bL, 46 (̸@L"Ɪ\TbIJ7]h4@IA/H= PI-©ˍ!2IZޮ!$J105pHpfybSZs-q:v h\ pq̪3*xa,[m^(BtIMJ#A, NI70CL`^ ӀC@o\7ZܜΛHB93#Gӯ>ENG^Èw~Q`05~H-I@("P&F@a8nʆй9l~Olۓq#*cA*~( /#(iO$BTu6FTt i{~(L$H1'!ğGwzwwE%#KL[&"i$ (ed`lVh2`(*&54D%DQ PEȣ,M! I"ϾmE,$AHS"!AL@"Lz@(}?#--()"̊Bl`;X HԓɰrrJH4Su=wEqNM4$ɹ= >Ɉ$fAZIͶ)mdU@'qA_b@ɐPG"T( a&H&bbd))H ( h@"XDBh) "?,bXї$3j(^WnprJ!h&6z-ĨhP :(v!)"@ G゙^# ؞Cdm|hʔ(%= %XNs"!( %hIF!d*<|g(~+ !N)k ߃~&wr$(/=y:d4v3f)2l0 %'[>Z`. 2JC0LuD>zbd *Xd I}