summaryrefslogtreecommitdiffstats
path: root/include/asm-sh/microdev.h
blob: 018332a9e59074367539a19a1f34cc367445b382 (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*
 * linux/include/asm-sh/microdev.h
 *
 * Copyright (C) 2003 Sean McGoogan (Sean.McGoogan@superh.com)
 *
 * Definitions for the SuperH SH4-202 MicroDev board.
 *
 * May be copied or modified under the terms of the GNU General Public
 * License.  See linux/COPYING for more information.
 */
#ifndef __ASM_SH_MICRODEV_H
#define __ASM_SH_MICRODEV_H

extern void init_microdev_irq(void);
extern void microdev_print_fpga_intc_status(void);

/*
 * The following are useful macros for manipulating the interrupt
 * controller (INTC) on the CPU-board FPGA.  should be noted that there
 * is an INTC on the FPGA, and a seperate INTC on the SH4-202 core -
 * these are two different things, both of which need to be prorammed to
 * correctly route - unfortunately, they have the same name and
 * abbreviations!
 */
#define	MICRODEV_FPGA_INTC_BASE		0xa6110000ul				/* INTC base address on CPU-board FPGA */
#define	MICRODEV_FPGA_INTENB_REG	(MICRODEV_FPGA_INTC_BASE+0ul)		/* Interrupt Enable Register on INTC on CPU-board FPGA */
#define	MICRODEV_FPGA_INTDSB_REG	(MICRODEV_FPGA_INTC_BASE+8ul)		/* Interrupt Disable Register on INTC on CPU-board FPGA */
#define	MICRODEV_FPGA_INTC_MASK(n)	(1ul<<(n))				/* Interupt mask to enable/disable INTC in CPU-board FPGA */
#define	MICRODEV_FPGA_INTPRI_REG(n)	(MICRODEV_FPGA_INTC_BASE+0x10+((n)/8)*8)/* Interrupt Priority Register on INTC on CPU-board FPGA */
#define	MICRODEV_FPGA_INTPRI_LEVEL(n,x)	((x)<<(((n)%8)*4))			/* MICRODEV_FPGA_INTPRI_LEVEL(int_number, int_level) */
#define	MICRODEV_FPGA_INTPRI_MASK(n)	(MICRODEV_FPGA_INTPRI_LEVEL((n),0xful))	/* Interrupt Priority Mask on INTC on CPU-board FPGA */
#define	MICRODEV_FPGA_INTSRC_REG	(MICRODEV_FPGA_INTC_BASE+0x30ul)	/* Interrupt Source Register on INTC on CPU-board FPGA */
#define	MICRODEV_FPGA_INTREQ_REG	(MICRODEV_FPGA_INTC_BASE+0x38ul)	/* Interrupt Request Register on INTC on CPU-board FPGA */


/*
 * The following are the IRQ numbers for the Linux Kernel for external
 * interrupts.  i.e. the numbers seen by 'cat /proc/interrupt'.
 */
#define MICRODEV_LINUX_IRQ_KEYBOARD	 1	/* SuperIO Keyboard */
#define MICRODEV_LINUX_IRQ_SERIAL1	 2	/* SuperIO Serial #1 */
#define MICRODEV_LINUX_IRQ_ETHERNET	 3	/* on-board Ethnernet */
#define MICRODEV_LINUX_IRQ_SERIAL2	 4	/* SuperIO Serial #2 */
#define MICRODEV_LINUX_IRQ_USB_HC	 7	/* on-board USB HC */
#define MICRODEV_LINUX_IRQ_MOUSE	12	/* SuperIO PS/2 Mouse */
#define MICRODEV_LINUX_IRQ_IDE2		13	/* SuperIO IDE #2 */
#define MICRODEV_LINUX_IRQ_IDE1		14	/* SuperIO IDE #1 */

/*
 * The following are the IRQ numbers for the INTC on the FPGA for
 * external interrupts.  i.e. the bits in the INTC registers in the
 * FPGA.
 */
#define MICRODEV_FPGA_IRQ_KEYBOARD	 1	/* SuperIO Keyboard */
#define MICRODEV_FPGA_IRQ_SERIAL1	 3	/* SuperIO Serial #1 */
#define MICRODEV_FPGA_IRQ_SERIAL2	 4	/* SuperIO Serial #2 */
#define MICRODEV_FPGA_IRQ_MOUSE		12	/* SuperIO PS/2 Mouse */
#define MICRODEV_FPGA_IRQ_IDE1		14	/* SuperIO IDE #1 */
#define MICRODEV_FPGA_IRQ_IDE2		15	/* SuperIO IDE #2 */
#define MICRODEV_FPGA_IRQ_USB_HC	16	/* on-board USB HC */
#define MICRODEV_FPGA_IRQ_ETHERNET	18	/* on-board Ethnernet */

#define MICRODEV_IRQ_PCI_INTA		 8
#define MICRODEV_IRQ_PCI_INTB		 9
#define MICRODEV_IRQ_PCI_INTC		10
#define MICRODEV_IRQ_PCI_INTD		11

#define __IO_PREFIX microdev
#include <asm/io_generic.h>

#if defined(CONFIG_PCI)
unsigned char  microdev_pci_inb(unsigned long port);
unsigned short microdev_pci_inw(unsigned long port);
unsigned long  microdev_pci_inl(unsigned long port);
void           microdev_pci_outb(unsigned char  data, unsigned long port);
void           microdev_pci_outw(unsigned short data, unsigned long port);
void           microdev_pci_outl(unsigned long  data, unsigned long port);
#endif

#endif /* __ASM_SH_MICRODEV_H */
o h*Q?~ _裮d%QV~iTǯ=`5 f--yz?Bf$ &RhaRo236Ε>㆔:Hs }XUoYX- \oP} s-a]A,~%4*5٬Yd0'D\r#rp1&_`ֲ6E/wɣ3|N o#[F]޷J^MH矟Y$XY//7heˣwm& s:Ƃ㵒}  Ϩ<VEOOzml5Xa(mq(E8fۦjttSH9MIzxvZfDeSB {Y0ltR8 7:*uJD .#pyu_7n#C(^2dhS-Uin@M^&ljWs#V/!)<"CP#Si} !3i:|.Pbg$`3v'O+ PS<B/3Ndi׫H'jG|UVor#MtYѻs]=.`)+8̴F)Xy,4Rdž |ąU3ЫF|$*M*R|hv3 U6[kփOeoq-HwaJ_ϹS;3#>ɺc'vTŏv8M@53K'n *mxvA&;馼OZMM.tL(]*ZN3(N73fVQ7ÏI_{¢ac='`/'_#Jeܮ]HZ`eQM}'6UٖXc: Zi ᝟&(.Nϝ|bdc [U{JK?0VW4_'ma4`P-%F\X:nt עnu|.-d]Mt1t{";,Fd3ae1~gxaW@@^a1"Pj yI^~~Qd) Lʫf yQSJvmFo2 nʂj{䎌{la>=M^afUX%+)JzÎ81|HJ(%fS C7j-Z0`YW79L7Ƃ1"Ras7grWޜ% ;f' AT&=Kz~:hZ4'P@[ycC[cb٥pFv ^nIztggM|I@Ʈ\HHVcfSn{iRJGPh03R9SPVPpGٛ@Q^?PRŀ|%$Ax0Re8gM^! ,LLWh{¼G2kUUG1-G8ڧ,LDwۄgj9&Ed,TB=~6w/ކ.>( *.:вY yuck¨~>+|dlwAQJ' eh6Q}M=5<_a7@d{\n;er{ 5=6 Z.נ-#"[5m2ьlދzGJFPA aP̆[bu68l3YL?)VLdpt$%"Gn|; ##JtGa!}(|3Ul>L9vkvDQu*\:zK-7T+jeEY6{cK(~?qYfhk59.~~ktеav\+a1by6Y ',"dzfG0+?Y3fN0ˆaoUI D rн\/"̚Kmס_P-dw%I&Q&}$iɓ4UW}WIOa3&G@`i]t əĹH@(=9>}6O2^.۾::%56Kz"mS*nz5EE|(\QO<">44-)3:Hzȕ%Fj~D15?bx8;Ev$#BR/|9D?d&Tnh\2τhr~I!7TPE[iS g WKe krmT{(u]y*[`( . op=."s+ 뫫:,q3q !4Ͳ;JT`rf`D#Z#@tO3VWG+ϔhe5P{ɳj9NƁTIq*ftal_ v"bc@ 8tS% ȴKזA)Yh>MgHպͦ9l+ڮO2goLۇn':tJC+E!6n&?NYZ,*@k{\5Qq&tL$: #XԜQs,iPev e;LyjrO4Ӕ_iK,򭟼Fd"yAPC&]ME[vm}?5L_(">-SYGPsU+[>-+3E_![Z.~ |z%&!uB |G߹Eztj xs F ȾUpM@r}@E %hdž2%W)*mYUћxQ]XY*YGudY*ǽT b 2Oϐd=u S,@P`7~I|-)Qo\.M˞wk2x.ФR=%ulX-dQi ]m9I92$ {5:RU zd 5 }z1|yr]FElۮMߍ8՛%5"Tca[!܆k60Q-KY^pĚց&V'P{2X8$FݻVM:YkԎ|?(TSq2qB!}t@asH@"ߩm^WG1-XBN40sg@mskco5cd6Xo%JV2{$*NA!lY`tTu8 B^F\w㉭25i#RQgƂl3\*ҁ$&)"S;/H"?:WHl_VGV~ᨖT iṋW@ElLmVz3pp?z3LCwԫٸ AbCQOS@ V9F7;=IEqJX[(Tztv!xnzF:~Qz+xG)G뿜,Nڏ|q7 C~궴} :_uzqulh:^ =Fc`nȒ YYQt(Kcd |I2{etnݑ츔5:EȻ\uk~=Ut^שa+$S~y͛TP~+VlȌ0~ E5!'Q7bde]No'`_[1Cjュ)0J4L{Tb꛾p1gwy$ZJZ4ȥ%XuM1Eg>BL-,C EhAU8ֿyIud=U,L)׻h?x( |H $.3dD],iv4DOz!qyN~ʘ! ){b)t_CJl!p- t$ʔw4QaPhaRdl,I NquB!" %0,lґ]V5PZ]޿~:OTdVNSHseF&yX#=SM';9c=EHAHڅQ}F6s? ӦȵE.Ddڬw.RaNW㼤c~$ͱ[z+`5j%wcT6[e\y;U;S@|dCE%PYB[ȇ\MXm\+.`.i317I|nPAó0jK1 $ovR㔯 ) I % 'lt|ޒ(w:7Qקĕ+YoTof 9`f?~ jzRiA5+a\8f{Aj?Xۯx7 %تžu7+cAt৹DG*ۛOa#0P"迪5}3Mlt@0JM{@6Z`F0 G ?Bagp}<բH~ؘJӃ\WD84>2rGPPJLQD(W @ʙӘdRkv "'FVbQUq!1IaGY9 fqubCq+La^6טN\󋙒0G jVq ^U ^̟.M\PaU.|@2GTj]u26bR> İ^fDTwRM: Vx*{f"ʎfGh*=S#dIƾQ@U D%]j c6 d`˳؉!=э4ٟdF(8⾓d`0zݍNaLJѫ+`唔4U :]f_t8:?`;O']WT\&CEP 7J̳Ja_0`5&jdoUTF+f[ +vJ[>^|:2QbAG(Pb_g{D)^xr?&QOMBgx4=Oy!vLG)V b?)f-Mt]r_ 1f3C. jroRYH\``R>ּ}$瀻gB}spQ%\JxuLYM߆U{I6;/zA&tP0Abtl]?ݲ(EdVݠۿ!`([bbB9l?jYNօCqH|܅upDdgBKF, :l^x"㸄>Rgs*:IC'vG =/.r 'zcQ' >~bM9.C@d<2?K3_M|̏4٧$I^t`(U}MZ} [ĺ%ߑ*-(6yԥXz?QOutRjK}B58 nҎ ?J?+wWr ] #''Y?nӚyo$< &bLuָ0í))_UݗkF6GnS*8֩ʛI2Eڂ[[E@2yA~0#S@SujK\V$[bsBBz|ĤMV :o<M}P IϗbUcw!\ud*̗jf`m`,v |T2v+$zp-'Z5xݙ.mykJdS)+㜲8)桅]vB%367:l4 Qii ^2׎JZ1 7"Ƙ.ʎ`!%",Fg3de)?`ZoLvn-ʱipeC+P۶'dv^+ڴ4*e;&fU!6AٺM[t?AĐ>vFQ+cB- *_X˫{?FIF]|ʻOJ⣆yyU"xSpmNwzls-Sz}2dDD'Xbz%"-=oÈ{9枮'r/8 +dpG_ (\R$PKa !, @@2SBlsSAf>b;UZp%K~qReeшp*Rj!.`΀jXۮC7SF"΄q}@P|h̓6g~Bs-#$ki۴-1*Tvޞ'v)C*U WTς]=ʞ9,E@OBhܬe%sFH4D]oJ3Oj(kt}0|^8m(9]-L1:7 萑ŕTv"|\dvKܖ ԀeD'bAwzJRqבcQLkZqՀW^0e0Щm_USE82gG6SYAK- +e$QN/=N[ dV:XG7#;7~Mxucs}$+lE c#&u:5ec @q:Xe&3X$D䂙;8*{`?W/>3 e}iI YF%>:&‰R2F5.jh=M@DeM`IZFIn qZXtnT DҌ !1ۙ( *"KoZ*deM*Y&d ycRYm*:pВzr4+F ፊ4VY^6]-B}/:iu.يyhV|";W& J2MV yv_ly<'okO"XB"5T-@k(ZF&nJ+ܙwY&8nT7NF}=eC3ԣAZex^;|ǘZ|YvLDTPVln$i2weP p&AeQϡԃnd6x?k7bmpA7wILD)["Ltn{;Y@jf12zQDпB9m{UhSm4 a)m}'J"tU͹:Ԇ䏑 !3ڮ=D8!4ln#ؾ`d[Wށ T;xR'KCIsśܰ~¬B?Y=5JOy\pO=7mr:^@Ya '*, /(i+dCSpqLk3cŸԋK*Nj$KӿY!0A zO0ޟ]_?yfLށn>`6z`}#;;QԖׅ4$U\t3v3T\ ]gNmE L%=8s Ab1K \D ]O$;ۡq!{bKEޖ!#8es4ؚC x.9pM$b ;or gd=؎4曣#cwzB+׬;My6qq~\on0r0St:Yf`w[45I) ~qͷGMﴢ^$ 5ncGfS"YeDMfܧ>ǪٷD3uN'#NE P\Um>mzx۷v*N!:l]u?ho'탯(3T"\φ@_Ez^?JgH]^=^@ _|BwˎŸkP։lgcqt\1} P|.~hN_9a#Z:6F~$^ }˄BK%*cr<4`J?g6Kҕb<% 5׾~&BԸgV1_ϱrQzEa2v]H's^2ԲqqK14VԴ~nĕRq/ /5H}T[lWzN4ŜQJ 0zP\*X0ֆMda(j%e*`JTW%/6aZdRv"sVrй_6@1&;؄rCe,ӳOEzK;<+ ^z]@|4WE&c]x3"8nL^6>AuW@ Io2yi_-hf&T\ ̮jC&PB3+\ ^(Fa6rUɠYҁCiXڣ@Zt 't|c kQ.v7f:E3#zHIIkW1NxbmЉ rIIDyO "..Ӧ99Ʋg{dY*vL@8ߡ.ZA 2´<Bt[n6ЯD[7 ݪ&Dod lkVO X%BBхi<G' 1ݦ2̍V|-6咑i/\7>0xDU@xzCpCZnso6:IOvˣLeP[mʪ9'.mL:{,fϧ 2vi<[2) 8r)I740&ed ]RHׇ+Hʴ!9a+c wx|7ީ2C@mi>f'1F/Nv '秃pklʎ3'Sd9bM)PP9׵(lD5q]b.Z]hdXX;cuEw-K*z-Tҥ&Ȿ|L]M×V_1q‰ 6>ΓfD}.fMXJGPW~l? Y;Hx qJAZk*<7N "zz^J"ԶɄUU2@zIZ5d#; {ORT> ~3H^Yؔ i2!PPnufwH1,5 ׯ)<(*w3g ]$ym8 HiF)>U4/RI)[ƈ t$YH 3xk)Ai`d/%1UY Fݦ)e?93\>r9ƚa`0'Yt=&hH×A( =>;R{sZWw* -<՝Tx"l-boYfpuP:.Qp*N$ί PxWSg"#`:sQk|}91l?N um0]q碻¹xF_YQ[1[zu;La<"MY*cbK5G|0Qm*F2w⮴°0XuKFI턟.|&6I>WP+msW `EU2 ]!l1{ 8su#E: QW˸6zR?zL+f7X7.,RީLra b잸і5EU˂ Y 'ݳ;<5*+Yy xvKzʅ4ԕtSS;JCՋii$M:8:ل!GvHEՊN)#wÆǞq!IbH4+E醟Nr5bzeJQF#e#*HΤާ@y#ˊNt7/]o?+*O2w Yb񩧾,d}:ouH dsqdNZˮ_yT@ݐĝΩ503!`٤Bv?k}6;L2",9ıgC8 ^K#ay!š 7hy~3|n[s,enr&`3T\ (v6Qz/VTܻGFIMV~l$kؗRw'Hv!憺?vBvRXѺq.~A5TF3CO4uIܑcR=k}71 aa-oQs䯁2?U1rĸujUh LRtZDwS| O=Cvq%4c#4T&7錆 9׺L2Zvb09Aꯌ䂚7z!rDa.B)N"Ң @'!jY>YV-8\.97YJ-|7Zu|ؔhtPWUn)ֹ?ni/7@'r&;^%3cP50v|%^Rm?  P;Ή2$t0YK[w.0("t4xZ&Q55g6>±T%ڑ2O-Zpugv& I{xo.>L?:nQK~tm/ÍԒIҀ%}> F[5]\QJqE{?P@W(&J  C{ $e|I:a:$cGC9PO";Q|{`:N4<5 ڬN@Y5"е࢞-L{@7JIKo/6{\;'kBZs*nsb?r7՛BSfi_ txeaAvHs:,LI^i3^C6jefa7t::;Ϭ3?t7 (D.]T&RWOϬb\+(; .yd}D6 \E:iX: F??B! et`Lu)"@Kg@ ; |&hq,Q7^gaF:`y7lpHL$rwWC|27bFT:t--I," (駇axx:b #2OʽBB*8"h Id>?Pd쏆G%t\Znd[VU`9ϑ`쬯p"Lȼbkz։)\TzL8AQ EV͖>p(,[~a1!GkYtɨ#x!&g aWw!$P "x|$qD9eɆ'a>Q7L% gNu*9kgˉA<2TS$:xQr$bk4%QK|~FX/C'b\m7ؖu([jFtFzJ(|u[-fspOP.:ZA74?kU;Z̦=rZ_^x^& w[*Rtf?uW rܱo˗MI| Hޏеɴ%k>\7dTû0rg*8-W| zdNSY1/՞~ڸkH91k/j>({iurYHsun3ucߠOM goi'NḲ)OGWś]zm㬓v5t]qRE;!ٌ̑2+|絕~:4iF>ȍnR(}DwϠt}&BN@)cTQT}8iΆtdɪiS`X@Ѡ UwxEYIx` Fj6j>9S*!fsm΃D5sȑl'[b>WBdfCqFcͿttu]<0gSFJ o4vܣBE7YaThz`bۊ$6< ej4 Mr@- Js3^7W?fʈإf;&aoTA Ąu"'WVg$8e&)NÇBX'U(wpX!EǜT4[{M]Jn"XKDp_HTew6+%t@W0lË'MG6g*6Gdr4̒ΥsZ'sR{zqKq1$Go.fckdG0:ۭb09 Pɝk!@QQ'ԃGo LeE%05$1&UG-M$] 5<3?+ #&wU(}Da嘂dž|܄VIEX(f X71e=e ^O=Sp̂PV^f+k|bˌ<+ӆ:&[*ַe?z|Ha!OkQr\#fPOB._馨)K*,[9khiC["#L!.B[5FcTt*a80fX6 '9p'D`bwmsf5}=i2T5 &h]W>7D^1 4 P%-<3hwA`&3 dV'ΎQMBaq"S 20v}ĽW+  ƤRFF`Q?$lHGRV٨"^ ,!FVH57C?`â=2[l-k&:=(U:]h< hMr_(+5b;6S{=CBBYL.]Os30̆շQr1UA(+h12hQKd&[PV6등Gt5Mߤ:Sbh#!>JVSjskɂ(^ _vןӫё [Xf@1R;bp&5눒à|M4{zF*jMHJPm6\9ұ ܵ&I9pRPhDm}Lވ*NI>N6Y5Yix};Z?Qz, tg'PRl^21Q]Çy_(Fx,@ w:@=RnqXMA@fi8r}aTy{a9F,8v%RNm} FXN%6Dʳ@B7՟9&euLQ#w:r K(GjpBG |Ƃ!3o>U˝>}3 kS^ErFZl˼u5yE@-,q@1!QF'a3ϡq2ٰ֒ާr3vrְ˚&?e~jx`aJOϾFO=`xi? C4TO`gx2뼏zȷQ_%GUBQ…6jxn`WR协;) %_"1HK)# ^&2|βgv.L*V9rrpU댿̇ckWi?׵fDQaYFr%+>2y+XK뿈_P& ,͖+`=sr 5j6̩iJûzMH!,u}WX!^3Q؊HmXR5k*V^g}k>})\k'R;ZV էah>FiE,YEqWW8=ȼ+Sg_~neYdmu75!=:(7d黓g[qWkZgqZu￧}aCp e%u?lF)ߍS{{c\}]WŴ5 gF:K97=ύm1[rnU;^j_܏` 1z)2i[=:ƥaK\4%F+PˆcxTšXpH~^XR3m~&{Dp- IKkP@A7L8v#w{HrGڇ 6bdP|T7&"シYLGI7L,%ͷi.Lh,Vߢ$?m{=(g-"YdYde%o+cI_bz\܋ wJ͡3fǨ;l,.zq`&4ɿYΣ$1PZV%5ᄄLE-ƔS6ivއSg!BzWRu+K7 tefHRJH>Ou~()$7s"֧/C?xN&HDeG$I޷Lwxv C9h4~&lBX !-$X5J\T./A Y:#VB{|ɔ~PhqV-(-V_x<\SD3( x]iD=@~YaIJSa=䓤#uKZ}}O?& 0+ˢR񯮩ѺYl μ/+"HϬØ?DSDu$eڸ$ %/͡~ԷIޒ܋53&jILdO[^3^bS`T2:|f^{p Q>;;7OZ7)qjG)4q]B^b OgtZup !ݚz/X4P$dO2:2X `+c՛3oiz354p)b}uix;!);U8|A p¯pB^ ɜ76E2̪KqlwU/qJd+8kKhB:U ;H@:5΂.4.L)or|ALWFnSna1vH>˚R{V;W@N*#nDhP߷$d;^:U労Ɛ&[p `SLw q'3R#`yvmA FO&6=G׭@iL:.o;OTC D4*X2*|/x. g,N-G)zb/!v $/_b>SF܄ _z (C/j=A16R$"yamVb__͈5lr1ʡ 0L4N߿![V|Eά&&s`q|Uԛ70WfJ˵1! 22 7r5ޒ7V^K2n:?n=7~*֪TBMK DB/ ߝߩ;#Nm S,sxТeQÄ[(C@C_vP5=)UFq7<|aVwmR&a&ԩF{b)?c"]@2qGŊ"GPߜg( M>M`?$]kx~eF m MgL3E/'B mkU$ngXzH5j>"/ K}polfs:_?d3 b["_Q'zyp@;iR:bOoƵ>vW!GfD(pUOHJx@%䪓s6XD]d,`Hpb+#WugOw⻶8W*Xp*on% պSgao96{W^|PEH%1ج#HBYj$ohBb2}P qqT/aBLJy}pZ 2x . CsLfk(@~"3 ,kaVq8*@UgB|NJァw7Br@(6PFWvE-dB 9'Z6]0H3is^s/j-H?^.BRt\f"fM7f5,Lc-҆-ոCv %O!) N`URd5Y HV w Tf3N}Xg$Хkt鱭x;{ٗ (Wr|h`s0Ƈb{i6l AN Cp~6'5 CHߙ cd=?PxZflxHΙOTNS\+"͂nC_M x Y ʹ䄜lؚ!-M! upXSp!N1lp;i Qv-ҞOྭ"Wh4-awRyPHxuRm3 o'wwP-Әoݧ*_OH,h|]AoxCguI\MP fdЛ/߿[i{dv [K{m7'<,"l9!,Y0(Z} sTN޸Ay1=awuvn<E cD 2}\@a$sLס8A՞ɘEMb>h3F`ho[?,K"-1lI5ƽHEPMMFQ4? RF G iOfhJ~g5AcT},i!&V b<|$'{Zws 0S) !+SZ^ڃ.O&z;hczq VULV ďn{|v0T\K A~եk@ "ö$qqX|y\B wTTNPZOf)94EtnFN$B/1t?YC~lmA3)+ow 2}ɃZ4 e Z0c7XjOl/~.e[GbA7 VWX9_ү|܃J׍)|_&M=8l_lw/2p8ѫ> xda{KTvɌCd*~sQ*.i?9yI :[~BH;o2?:fts:7bMl g2ޕ7d6V- J8۳.{$7~[dXqk uCpAd@?qAnoXYK;m4ۋVTD`ϲbYʺ@}EE¨-e_A)3 >e'.A[}Eq=`ެٵvN*o .$co2cp~Luw>\V^G$[NCQ_3OfN}Yyyr7[80Q{4`{.Sx3T ]ճ ]kH=.$s4xf؟ dqzz(V~. \,9`Y]:ʫmfaXKF(OX$ϥDniTdgVWX\/1۩)ᶌ\y{q@d"#fd c@56sнVǮ?>Xxrؼ]́J9E*"'- c+ʆ=_pv”rɧĸN|J#kO|$X-q& j2E~)Dا4g~T e|,i`2fS 5|lVT Xumw'[:轭*̩8H +(˃jiy$Ppp5ɶ9uB#lyYi/hSi)_F@u[ڶݭ!?:Qo(6䫰ڶJ`jXv-&sqN~$ Ug6)q􈁴1iDq7e 0.h\qW+Gj*VagYmC:ﱷӋ5F_NP kY?MsbӤ*JWR<"{maU7}zIa8-PIh *&-)@ ":a_pc"˒<.{/#G>Uɦo׵GWx&5CBQ?~\Ue,ϴDMևϋDiA\b? Nbc[AK7D"GQ0N_mM゘:zKx[k$PT?[ iOP'}LvI1i"~VFt.33\א95LVeG9' 끩8K(T=p;J/@ٹrVLA8>5lwXrAesi(.7a`~Qsq2\+}+zy r-,C\Uy ^2p?u[m3K)nl]mS9T֖XXì :CYfO2Y1]?:>F |bOyIlfiM73I5ͮhH5"wΨձAgltNfUy'APrĜR>6سjB/OWydoc I49.5ꚔExU}b؉iӾ]BZ)}:Mk4`lNS @b317 c >+)+?/z.W/.o*-Q ְ ʜέ" kZ{@3 >зp2N(&; K|k%TA VPNH&aaO}VX +eaG)J2YenoD+}Fc>&0lo%?0u}Yj Ѻ H*{v[2+mwz0 e*1s*ƉכyszbNdAN҉zP_W7R јv`WP0od?NIG'"Xւ+ = 4Ì;zJVKUx}eV(tF8e"tb|Pƪf;cCl.tx-6׻}lsKXmpguYʑ4i Γ&զL#zHl9l$>8SHĠ'.k'YS5klt@F&ȷ>/ʞtRT% aJDF@}F_蘍"_3P M-T޷agT!%́y`8" (V)'i̚k~@GEva*6"@}li&ڃ.6% t ySlx^!Uq?/u`" U._ò+8SV<9@Gz3 1 gQ|$x51B$͔I UIG& Z$Ylejj1dmVGh,bu`)j =ùLt"_X=+jcH/2%2աR&6&s9h/'3bY6~j=i=PN\)PگyRǓ :-&(奋)arj6 $KY%/f^;[*Dijv!@)|XF0 Ҕ-Yяg\`]/hR3rkQF&h1)Qt )иG,ϊm)LS} 'i*jHwpLwuEv O 欁2';{f-V .Ht|cp[e8_6qÑ,:>LN |tlNJ_%*hVj Րۃ#,ޜJ>/1'" iYZտUS!Q[ћex3A^EkҼXYg#MkN1dX J 3зrnCBe6!#/c l3?ǣYT2Pte (jڛLLuݗ*]Z'fӆjwS{yfP+o@Wc>|Jp)Mc@1M&"!낾jq7_DDaHБŦKBO̔CcŖPՏ\")lYցJ@ {ؘ֦SnFOZYԱQibZ0uw8r`ez*lA US)^KiMD&3úwf̸a?7V38ՍHS1 omv=üˍq:1ssl+PW<v;17$V⟝T@& bi h51@b G.dqa:Q$:+z)k U WZjuߪj`ECס'6pQ8Q;MnTU%58ÿ5v` myhY֩y!scF8=+^uVWаIf)7wm6dðUn$JP8rQMXc!o<"j/^"Z)e+/뼽|_3i.|ʽ@)ݾGgDKY-p F?-~-;ʪ 8( <$mܶYcttJj=,/MA^UϵT-r3lan.Vr<2mOr}.1 pLV!b q2A(;s>x'Wqp]5);c}txj٭VU/?ܰ C~K8,遹W7k5]WV[|f %f:ی }Uf~RW4b}ŸD8#7cG1W,mu^̌f/pEI֞XAe(fA;:CH|DkMRkj9$d'- hjSBAv<0)aS}FIߖU|1gEݼfh@ៜPS^ξbyW7pV= Ji9A.p7xB;ӌgט -b_Z$ZLW i]k"{8* x:K=&˜I) 6B v8d" {okg'iXOQ;bPe˞VOZƓFhv".+0lu)x+a.DOGAU$J/[*$RG)yKm t׊[E%Nmb,1'KHW DoXd Go"1;zns-uu7`I#sf߬T*!3oF8R?t-"3*_h" (7m2Z72yZY%/s4{ LSMcCeт0]FQ]8@~̊鱇'r-Φ&(.yojpr`_? (0jy)K\EVIU??b<kH^Y͘0i6 "dzx'7,DsLragΨSٺT; G?KYLᅗvKHe5x3E' ȝ9-S:T? 5 o;EWi95t_h 46B7xuOf51d2bŃ7QQX6g3K\1U]çO~TwC0KBg Ӧs‚O|r60 RGGe;5*mVgWkg7Cծo)u}x tQ@F`R} 8?jRIXM|zoZiM|:&7<q#ZJRiK_7ShB3P?Z@vCY Q=KM&;"Mm,;Tj1,ct 4/zE)U`>6R@ :eHe=Uۛo󃤕 yO-y"m\񼇍fs U?@x%kɢGF=VzϜ/`خhAK lTC@ǵ7 M=6l|>g*֋KDT3 w W]HR)SQw *2_qpm|0GZ1c O)pX]ci~u/M9`\IA*=5~[^P!*ͶRCF)7ŵ x?'aMk@}:o${ӊ;`*6?ͦ*n|E%y>H&;|-hMA1zLH[l"̅p"#i:9_~ gEv")v\ΈxPDliOY(`y\;w#6a1|g-CgQ_⻧)J Dw=[|mŬ#{q;aLzB1۰sꟾG}~aؕMQ[^.h<}8z!0GX,Eg H :fAji/ä9Gdt7ex\YK2 yM8ބՀ=x޵83Yo U{6i;XhZ lg#wѳ/ p2@/1 0@cp<^lϲNg)Ď/c^z֠/H<+c4jb^ od`l!Ry"jڂ6㠩f F0Nw:*Z'Y;qCdK9NK^)c'tY46M d-8*ӥ% +6vUg{lS(4S5U53lvuiVK檦}vv2nVavY84OilNBXǵ,SSxeAā." eWMKU+;y>:HI9GCIQ,DAu %`ʹC~yLW3%_:uA0oMlYzÒNsңt5-8T9k WM!mda.1>#@:j'nWa..^5cP_dVMa]aw 78 e&W.)e g𺰄BXy Z6k6ޘ)}gl7 N#c? A A(M`s(Z͑]ݗ@y.\ɸBws'RLGE&7^kF?~ae_lR+_-Z1d,ʏZ+ذ \Ed\j`:Q/' hk]U_6);O:(T}hf:J LA¯s)pSjĈ,wLURW<$?r+JQNז@ :1pA羝6r}Ewm:|z |w dteCQ-q"BLk &aD>J , _CN 5DSDh}ݚOϋ"nd?ϚNR%hXq1 PDwԊ&FJrjآзtڝ6jYZR/Ը>E"ܠǧ% =^TX2.,a]0prEȭ[5ɥPd*( +h&V8f Oɭe0zF(Zo6 Pvp,=mz!pbKEX,/BM_j aօ]?X=4;D So:[ewk8wwtB7uhNk.Rlm_iRa)ܴglgw/;eD\4 yݽ\.Otx\;J$pi x -22o$?]SA1Rk"_Kq > ƩgTf&[5iߑ|:bgXVUN>d]txٜͣXX_e ]F"-SGMYz)'9@*)kaXBbJ]Cj儒JU:vHWOWjGC qW\wH\xBt!Ȍ7z0;Zo E@X󺆥8ogČْ\6q>Ynwyc|xM{}%n.N2pwx3| k+wǹLS'!tS43s+QmDWy4k&i@ה E^jjLƾ8׬ǩ^~.͕8pw]ĭ]\B'a8K$JS++XHr -Ro>u?6j;;O!yB&idnQa>TOc}gJ`>@q^E$_'qRe50{}AGӬԇޠ?5f%~wW1FRhjcH =h)G=DTQ2;)zۂ[c mPmms?JZ:-j@b[)'xRخ%GB6`;b\W{IO3rMG堡yZ!ˆG>9ׯms!EHíxQ`GX^DT RȊ@ihc(a5->pGe6hE>.v"@2ߔ?bff9fWb1:il $+n3de\FACMȶhE"~=I?r-)07<; p2\dAfUQ2)݉_:0[E5Af,[SMI T4Vs%Ih mιwp3OY`C|+4B5;3iSef_8I(ŗO?~>cY܌µXs wp:i/"Mp`}֨1I%aY6I=87sfS?,YR{Q_ Ȓ#/#aH-һXQj~Q,VjB̷<| !> ;{ҽ cގb}&+*SЦGԻM->"]"3VTu0XDuɈ(MtID}r,þe\JbB 9MRAU^u;RsGcA5)߇T%Xq]O'Vq!,ֽVnVxռ=;Q*vãNU+mJU/{|"]ꃰɴG!x"\%ewhݶ)ۙ]57R) QȤ@s "vWS:e遝+s  qm`Ud{]Ea7g.KgHhg%ed #;QBV8[dNNAg݉8pR!t鮓12PFa983 Dt)䰠='^n[(sc3*Dž^^^cv&2&nJH4 }i4¢yb,9Rb)N2F2\e>VV?ٔ eM ,4,XR_{80o| ,IC,ooǰ(jh#9C"m&g}=ھNFr?8#+ eH*\W3+UQAxx>Il7K<O(:IƲ о盞% JKs3j~%q= =k j@{G"%*\`.䌖}A$܅)':-)) l)1۫cy/e=T+al/ "j g-6XC\MDE {{4 Y(,xFBcNxóWجSHP,(lƏRZÄ$;BT:B,Okل_E(m6u."BQ8RЬڿȳF'y:N:A$Ł*0J2d t(sQuov<5,Dvc`|@oZT¤Nҗ>j\ aХˊt6Υ؄a{ԝ[Cym"i@v,È ݴL I$d%P%CKK )kx>-i8N}J!vRn)0u#;*Yݩ ?<˲XAi*6p~I6 ~;!_RGO*,4o}MoYⲥsywT-ʧ7HPM({U~e8C4vܾ~GzLkUgw< t,+N `*g uZ)H9tt/Hj䘽HosIitz%Y?R1R TVe!L.P.1x4hPxYXZ3g-V@.9'(6qw->|* Z3bMYp1ų u/H~4̴ϡXÍfƸ9)EQ\K2%D}]4lp7MAQIH>=;d"=k ajx2zr #3:Αq|ϰq{@9!m/UL5"mW9 kdo:F;!E3Pcilm_%NHܹjbp DHN[ /0[4K!dLVƂ,jb 4!|̣ݤzg cgx6GьNAf[z(hoWlBq6F)UjwĠ&h6+`_5Z.,R,^|hF>Pe '%6|AN2YOO%0dq^#ǯ%Y瀞YB+Ak'k?O ciWXڐ`6$kNri"R|8Q G7dJ `G⹓d )SRy$e#-*Kn t824ԉ(F93`qUzt\$`7ssjG~cWO'yܱD>:r FЁyѩ9-Ϗ1LԽ[؞w3\c `aIOrwaR/IΛZj:5qHE9:rJb&^g49]-eoQV6X9&=[Cq[R[ѥ{^ܰ&9ye]Vъ>j|`cE@OH>KGM1>)d*z"F`=Й I4#-^aI!v`֥(++Yl@M; 4 Eˣ N6A'~c p⿳˨n>8m#oߟaͤ: ٮ#G=NbRDn.6m C=9EvPQ^цHw!n'rBa҃xr*dq岵ƒk5yJ=׺3?jR~(Y9*RщQG:uV}bj F bw';۹"AT.h! jW>!^ޫNcDq!y74tIۈ!<+Fcs 019&yNxp˟c }E׫CbQᇴ}Ls+άg2iѢJQ'>Zr>ߢ'5ݺTrmԩ/VqT8%oUܯq @Ѐ5M R,41+jKlAI"$Ń)ٔrN~YZr t@