summaryrefslogtreecommitdiff
path: root/arch/mips/include/asm/cdmm.h
blob: c06dbf8ba937093d81b33cd14e00d9c74c944de6 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 2014 Imagination Technologies Ltd.
 */
#ifndef __ASM_CDMM_H
#define __ASM_CDMM_H

#include <linux/device.h>
#include <linux/mod_devicetable.h>

/**
 * struct mips_cdmm_device - Represents a single device on a CDMM bus.
 * @dev:	Driver model device object.
 * @cpu:	CPU which can access this device.
 * @res:	MMIO resource.
 * @type:	Device type identifier.
 * @rev:	Device revision number.
 */
struct mips_cdmm_device {
	struct device		dev;
	unsigned int		cpu;
	struct resource		res;
	unsigned int		type;
	unsigned int		rev;
};

/**
 * struct mips_cdmm_driver - Represents a driver for a CDMM device.
 * @drv:	Driver model driver object.
 * @probe	Callback for probing newly discovered devices.
 * @remove:	Callback to remove the device.
 * @shutdown:	Callback on system shutdown.
 * @cpu_down:	Callback when the parent CPU is going down.
 *		Any CPU pinned threads/timers should be disabled.
 * @cpu_up:	Callback when the parent CPU is coming back up again.
 *		CPU pinned threads/timers can be restarted.
 * @id_table:	Table for CDMM IDs to match against.
 */
struct mips_cdmm_driver {
	struct device_driver	drv;
	int			(*probe)(struct mips_cdmm_device *);
	int			(*remove)(struct mips_cdmm_device *);
	void			(*shutdown)(struct mips_cdmm_device *);
	int			(*cpu_down)(struct mips_cdmm_device *);
	int			(*cpu_up)(struct mips_cdmm_device *);
	const struct mips_cdmm_device_id *id_table;
};

/**
 * mips_cdmm_phys_base() - Choose a physical base address for CDMM region.
 *
 * Picking a suitable physical address at which to map the CDMM region is
 * platform specific, so this function can be defined by platform code to
 * pick a suitable value if none is configured by the bootloader.
 *
 * This address must be 32kB aligned, and the region occupies a maximum of 32kB
 * of physical address space which must not be used for anything else.
 *
 * Returns:	Physical base address for CDMM region, or 0 on failure.
 */
phys_addr_t mips_cdmm_phys_base(void);

extern struct bus_type mips_cdmm_bustype;
void __iomem *mips_cdmm_early_probe(unsigned int dev_type);

#define to_mips_cdmm_device(d)	container_of(d, struct mips_cdmm_device, dev)

#define mips_cdmm_get_drvdata(d)	dev_get_drvdata(&d->dev)
#define mips_cdmm_set_drvdata(d, p)	dev_set_drvdata(&d->dev, p)

int mips_cdmm_driver_register(struct mips_cdmm_driver *);
void mips_cdmm_driver_unregister(struct mips_cdmm_driver *);

/*
 * module_mips_cdmm_driver() - Helper macro for drivers that don't do
 * anything special in module init/exit.  This eliminates a lot of
 * boilerplate.  Each module may only use this macro once, and
 * calling it replaces module_init() and module_exit()
 */
#define module_mips_cdmm_driver(__mips_cdmm_driver) \
	module_driver(__mips_cdmm_driver, mips_cdmm_driver_register, \
			mips_cdmm_driver_unregister)

/*
 * builtin_mips_cdmm_driver() - Helper macro for drivers that don't do anything
 * special in init and have no exit. This eliminates some boilerplate. Each
 * driver may only use this macro once, and calling it replaces device_initcall
 * (or in some cases, the legacy __initcall). This is meant to be a direct
 * parallel of module_mips_cdmm_driver() above but without the __exit stuff that
 * is not used for builtin cases.
 */
#define builtin_mips_cdmm_driver(__mips_cdmm_driver) \
	builtin_driver(__mips_cdmm_driver, mips_cdmm_driver_register)

/* drivers/tty/mips_ejtag_fdc.c */

#ifdef CONFIG_MIPS_EJTAG_FDC_EARLYCON
int setup_early_fdc_console(void);
#else
static inline int setup_early_fdc_console(void)
{
	return -ENODEV;
}
#endif

#endif /* __ASM_CDMM_H */
mײa)9DYb. m+|czhu~ULiaZ{^"q:qۿ$^~7[ҍeګ9>%+֨>;o3ۼjbxbpޞyO޳Sm'*vd'S*+\i99{n}}91[XY:~+o<dv}.˵OwF#g/}O5niq5sy>.\nt"H^~OwE @~*ԄFC헜z}1M{rqZ'</L<>$A{t{߲&p>; ڮ~ϊo|S7#!WGFa]P!W& άaq5A,W ܰp޸rO[4_W;| FBC* ^ gGOxEsW@>CVdTo3\v[Ftv"5 (Ř.8,u _Hzffwsm!.am1c%0 Fa*W. ߋa0%4HBl鬒>'FUy )=RFD["GZaY@ҢO;u:X}*:)׭LjEM/ %'k\۶ggOΝ͝JG0 ]9^>}Uh_fOٛ]7;l]Y>njHD^]Fwayp4_o95ۢ'xm]b=l 4]!~9.v,T,d[׻Ϋ=w!..F6w瑯>q^ N:q{i}{t7 XWܷ]V{^ʨuYJ^kh2[9XK81Ͼv{tv5t-|C#Kymzz]>x|W5H>R Œ#܋I`!=-t,D-{L!K {gQC%b˅` NopƏ?e6cb44#]jƱ0{:,50a=.N8S/t*Tp~vO_OzrVe*ܐ 836OD@@ܟ }~4I@N_ׇ_4EzWBԢ&2HFCv>zƲPS 8j_sm1L+OxwsDXPJ2|FWT0H]u$/ O=g54, ћN'9Ho;Rg+1Ǘ+6dQgJ<˅+PJ{mmֹ?F*W`T.D(ZZaōX#`F*cY"1Vx|[jUVmlscm9ղP nFۑ)[qFmf1(kX۲6ܑ5Umj96cv؅~ uU)~~ p1|+!+NJmψ,EKE}VA^l?@AZˊٞXKtjaPLYO?+e ūGss;sA@.$ NT|$ լ}b#vCԎ^BRc'WuY'چZtÅTHY{-B~v~8қ]^{ Jh(ze!Lӓ~hƚ@A76$>y[~ޕ ~dNZcGD6z$Q $lA(:ą#*Z:9~%KIA}ɭ>6OF98iY{9c8HtS'\+ n0$ `]Q'1LDՌOƘGlØN :pC`ah x'ceY OPPY~̼wD칄lQO)n /PUw,慚胵|20u:'KRSjȲQW!eV۶} U? S9W^gt9np$ۇ?qQy/9¯>v3E@?#"Kهbj,6YRmJ}Ma_RjfjUo|p 4OxD=MDea`A#҈>E1$T1}|ӻpˤvu$zG uˇAgxVd {AJ.ۥ}'հ>iˠaj|":":rkksq-H1*+GW;oX4ăsOzR¤j;¤ADF1%i$e* wNj:pIBt6UE{lNj|NUAU`D!t{,=V}#1]MZ?ueNلnY_~uEŷXm<( Jwci,$[lRXQ=EQ*>u y~T~`i{7_d8eg.ZbP'uuK1;es S;;&u~ot,cMTw:<68ɿjxx=ҪR[ QN1曘l_/4{e!{'m8ܠxtOox5D?0hR108hj6XY@AQo=o/B<lLI.&'n蟤TZ ]La|5סл(o`Ԥi.{XL5Y]1GͅiM716ciwt{?Uhː'2|ch_DDe[۫\&Eueap~XZիeFdr#,87\,PY`we"?OQ9{%!z83A]r!ENgH* -_Nwl--$aNagX Y-y>DΪPgoV OHxsT=At)DD:,NP^h{y2˞Nofh7쓓ysJ/׮vktlcRݡ]yitV+uwXנiҌANϡ٣%FіqwDɯӽ~2N{w07!Yݾ}S-'G^]rpw;sE׷m{=EԾذu;h4 X+Wyn[Muzj kӟvis2OV$RѶgf[h t! R&u-ۈϼ\tP<-KǜŹM:H#sBwγ!܁oe #þ k <ܜ!W wn pQ3xce_\'eoZc']9.Vmr?bc:jAڶSXvvR6=#ƂT7t+H"wPA3$&˳ nJV b߽ڭ@_\vY!Emٸ ]~35{il3z2X}ίAoxRM?D| 6Jrjxb?}̋Ǖ1'pAFMڛ\ TvN6?Bo?eQ6=/KNDAuၡ^W:s&:\:0<=FU{]Qa;5fz!fML7eNySy~satu1:5 hoŻ*QîS4l`ڒO / ]I7a)`V3\4Sr0h]؁w{M(E:LƿPDM.ZXzp"+?kM5sȄj}_'D\$<1q6ocTa0D/ZoYWQ[ס8iZϭ|\SK or>]j F qїWDETqN!u=;k\ P@I$z㳎@|,'Q8jFC0\;6U!vܳ)ϒ|Ώ C3PPJv`XU-jLN[uRSlG=p[b@3 v RB]:$P'Vn5|\;L%bϷYwtҒ4_QfhNmޡAoOvpuɸ$Oj`;-RC]v~t&&At4 zq6,jXJM)[bTa':Ւ!ɹUFØs a5vXGڴ^V{DCe@fV:10:KSUGۅ7,sr Q. }쏺Gd:#UA؀TYk`R/WځA[6kHܻ 2NrD53IQ?t>- (f.M+YC:y߰=Ol!8kʹ7ъaK܆p2@n:@%nK'Ubw~yJzeE-3g?7ANVtrb}*@E'eE l-֍B:ǞNzNؽTgTBX60)KkGxxoiL{X %$DbYE8V%_7C ʪ; >o [?J>^GjA2å39z/Dc(y>tSܶ88AZ8Xɶg?fjA;8{屇3_iI u\uk}v4Pg*kRz=B˦C{)vGɄj9w^G%b7FX+~<~}dnx ihQ9*`\9ax\D7sʌ\ULF j!Iz^rdTs*bPP#wT hktZnݡS/nXªa "moo+9[zxx%>{(x 7/xGQdb$_.a7n)~]O &fn˓BChi:O DJdq0fLYCY/nt笓z,7LamwGpsAmynfEtT@p[gCH5DPMQBKM;6_+l_.ŘQOarF̓ $Å@{!PW &X/b3l [̑959]y3 1-4&ThkX>p|cKͳ_K6mdF\qUB ;W4ǁ(@KAE1I9$5ŨVB0 Hq(y\9 Mc6 mt_XhUЀgg(bꎛ%M?n7"p>sƼɇ})ey[ k'ؑ8/ 7J6< _Vr"orѴAwHGV|0T >S࡭ۏK}<Ġz}hֻ'@"-U)IIIqM/6 P+ʁx{`@hyE0NZM՘pY40AYŹ3'ZjK7E[PMs{bwE1iBq}i,/㔽19= EEU^k 8# Sᘥcᫎi Mpm{[Νh,7(srkv葍4]ex/S4XRDibX@V@u.m%b}qXU[ef3khK" )<lQ%O/]xz K˻6zV3BQ{ W7~m^p.]QvO,q%/+dµhs|V+Y=5>;>?Q֦=VHCҹqwՐ5Qvr~$5M ]%Xc0!|9̖zJ>$l$bH zۄ[D&)'d2ʗ;؝w}|9GSjf :N8v#pl÷}@r9[Xg F,_ dv"tzO+6T}u[ދ;jV {8KSEØT`J9Gw/fZl98d)B, dԵ:J5:TOvLg6ef"( I2$h}p'fh ջM:0WY7KY"r. _f+ؽqY ~Dg/x, yhGt2vyw}PLxC//8?[,Ðץ2xb4:S P_VRAF=Y9vS i}-|z ϿUXN)v/:1rSwA-V@ mz, +`ȶk_EE=XV3piCZ *.J١fVJ)B艐]^WkJm@TT_Vnվ.tGG˞<ªWK?-3o/ v@@;=Ԉ M1) B!LF$}Gއ DpҙfMp3DPJR(`Q49+TuPI{vAĜu/fȋD؛hg!!qJ!C%T~JADŷ&cD',8`&n@/ R!BAIM,9_|]){Qأ@ qd3k"xw}Z ]W*cQꇙRt!DMɻhTEsѡ_B]@o ]/Dm^]kܖ$'BLDlDU.=0DeO~jlShG{s˥ _1uƳUsy^ NeYu6^痧jb0}zf7 C%H)Ĺ>bu޻n IG@>Hd7yEv;r@уh>:䣷~$Ǭ܋E}fk>dI˛jq۽cjăU6L!EPe,BKF˦.F9LJ2cqNsȑOȠz-=h#:MFȒGu"ɍ|vw(typ,P68&K-tŐH42F7U#vARԽz q@X;ppAER{/L`(&"urJT4Uc#j4[)è;(5$ӝ -PW6bNaigsW; R hx9jv{G-QV&Q5Ik}.{2W?MofP5x0}[gS;UQ[JJXկ ;T b]UG&yNQJ!*!Z|c|'Wpv h,@ XXIiIp_Z6LvK|NԘT5} ^8JOzt9`nx Ȃo١?^y0<1;KGgG 9ڐFO[xg];l⍸#W7apٛ";׫ԪCLpkDN+g%5|Wn+x_.Ӌl=_χ9+d=<]S=2HzGro,~fBZzǓz̧Cn`|忟s re@zȆ"51~A>DʪN-sT}y}~95mv29>bV˚)Cz˶pAfIT)ryg^pt⹶iDs_e}ԛM%k-;ym;WTb^C؛J29;Kɱ[2\w;wÅ7 DtYg>au;-ZtnŽ"U FaSgڴqQ5Eg&:(9̾c|d$+Ź[ƵP/`)28"9!NTl!\T Ġ 5.;bk HUA$0z B ڿ5Y󅨰tA'D\.4bfO Ni:HٓZ< *K, 9jMbBf?fbPi6ߦе0L,z< Ē2|No"ԥR'1#>A>txw65 aֻ }fo)yp@CykogeΙO9-[xpLc8m Yٗ :$y8QFIfqH~bن,h7)>c~qlrJzW}vӜb9X~sρeEeEΝ6=&έyu=b;kk}6IkvBcwnu|6SHӓ,_X9|3@4ijqľ׽j<ЇmnEi򅯠)> R[*b=D"T>PL+t-ZtѢ,a-OK*\QPdRX\gqtzF2w(N1ul+J!>^=.0KA|QY?F+Au%P+Zo XAFIt%\[vr@DK$T5 tĠ&~e;V`h!?<:nqBM/J )!-a4 ‡+QDy8Cv'58 | l}ZvaC))Uvz˞NW7:TavA`1ղOUk-!{¢\H8 )( ߌl]K1|~ k* 1_Lه* VcWz)u,0m;6[;|fB*\QAF .X^b9`nISJ]* ]L#~d8ܼuh8LΡ.[6b?L Nim($D"kYo;|`Cf0bL82ߩU>´4jD!`'48-H7&}EPw~!\gk}m݇(}6fOu&}@\1>[ GIO胫͸ĐFl*$N5Z*k(썖KxO aQY:!sq|W/J "pe"E35uRQ`hrَ1ʹeGL;~k0.E@ \t鶟WORB?͙b#QO~kfg9O)-/\M? 7GĐhѓ.Ʒysm`|E"e54CA\/k\,f,tw6eTV,b u[EQ%*Fpf `gL6i㎭ѧX!ëP`+;G1b;` I; P Eս$svfp mJB-AymՎᬮΰ,#VJ|u-ЫʍvQ8HV8v`}v^镪ˢ8za9ICoj0û5<@): XN{QnMYJM<6z{CZlV:)p;w$F7cM5!zgh9r{a(p] fVIgKOc 6G<*u%e2A~hzR9L^z\'gΦY]Rt"tJ6Lڨ3{M+ǧHhLxE75%H[[w:Лhѓ+QW8SAnv}vDLA~}+/ZY\|Me:VwaK5)Xg+do V!"x:X=]ꠧ)Pw'#H3:Ç0r Sn-qn J[M.)h>(r0"C5Eatϯnk+B(dJT/J} @lQ?=2-l`^0UeD4>ɮtb. DU{xU56 s3$~1< 2>;`9on`Pw_B;$^]aHOh t(PllfB;5?dPpBK Xx@[뀆MI H>pn|E6h&nDZld)U6vo  r =U%=tGrV|UTq|J]81 CT/B.QnQHMPq?"oH~[0 `Qnj{hL"'lyXׁ`,NJxID2 G;FJz2/רyǃ^ љzQR! ȩ($:gXz'Xuu B]Wq@ވ sg'ķ&j0)#o^fv&Ok6!g7t/X4g?5i|'?h|\?nʯp3nz| lIN3xa.ӹ+XYkcjbsn9"8(t5"]0 0|>kۦz9y{ L{N[WLIP;}3jH=]whlB4b'ΨG,EJqۜ?#hJ=X|~@ZVJZ3èC#:=E"h]dV1p<ꉯh-a&(, A"IfQڼO^%*[!BSn"^Y̋ y{I1dz0r]tLZ65J 2iQY`ҰĿPS f~3Q땺,P#ᲐAK79仁̻,wI^(qQ@\!b$9'S틆jnKh6(;\,,ւ>. 2 m6Ѓ\P[}asݨ=9y3j". pV~ܵz4N*L3 X$OF05֝>к T%KӪ\jg!_mMB^k^5ac'XJ#أXGo ¶צ;sЩ#{CJ4'H٢UϰOfT#U87B|^rx$E-%t9'>tTKAerVwĖF=}[Lo182~ǜ%vݩ7⧠NjPHCm1ocLGh"Z/Z|HX{V{ƵEP\,SSn$&Ȃ^QݿLiQrMhҔ,'WT,]^6/JLRѦ^ c ʼn`~E`wq¨akdؔ{QbL1 pz^ެ B!Dk#Hcl_90 )HP+_dg/%嚿斅.;EK+geoJvEKMUg}=ҹ魐}m56i횴Kk.-M #AmHt#967 Kju/NC`58HF,7d}Yw(`t6uY^'tMR(9^9ȁ7Aw&lyM:={f 3e֪`#j3Yd|Goiِ[lZ|NL"i+&CNT  L͉yB%eSI~Wwg6/< qQW(W=,frp`"$]vgxN="js[}h4z7E ~* ە7D}E00\Z&:gr3tt^1?ɣg뽝c]K\mp˫ X@0Gj *p!?8JKߣAHh}3PS@tɊfgd5O57K=۵A ǻ3_{֨I?Bau^.2# cn`7J߯hc_}A wY>P|)>ƮVzB/c)hv *@F/@WEXk!>MY E:Q_+ݧojԷ''ao5Kna (iG:!TFsQP/r\ӷ⿧7{>%|T-'9{ FوM@ҀsJE|q:zƺV Zkj;vʧ:a%ݎ-sq'z4cϐ&]3YԣT,ȒSŁt4-ŠI@(ءV{_h˔91Z#т" #?n9D}VKV̛a 5N " a f !ȇyje<}T r )`J\_Ny꺐KOl@۩ԅDNjDukQ=W *] _ fe\k ?<ˮG*\;X3I^+쳭0\lǍ,%g&~ߋDFmdU %Kmw2k|filk]5AD|,ytl֜G $6@AzD[lrT[_M#m)E#ܣu w N^#ോ#Z[@FSw 3sK8 ,l37jHq 'A1Q}e%44ICD{N<ȁXtO1Wh8Ƭ+Vr<6k?ґojRV­9*T(58]qiX0C5yXNH(sŘ屧pb^<|aIfs^>:Z2 d8} ~8?f?`X28ͼ`J-TKk edȗ1HvC`@< P }[($q'm{nl!Eo=HeP9%(I寗-뛑}$j;3Ol}z8}&E\e7]iThr6^W3D y]),~o6CۭQ[pxiB5YthQKsJAF=HMulfS".T, $FF\@w2}uXr|t~[g)&:Wj'*h弗"QqR%9K53RBۿ\I8^>_7[%XQE>ώ]xssyiuFnFfO>x~|1Ƙ>PO[N=S3c n۬ed*'F70i~,!Hp BɄC 3ZZGk|kv޹N!uo̓6E~zvG7?.ވԇFlŜٶy34Rj0mH!YK&(GVr?82 0&FvU~)6gdǃǦ%UڝQɧ'm XQT+A+<ȇ}yGs33tpvxŹ:}!ޢ)%5aPLOOU}x3jюe*Mp\ۉ.#iV3εᣔقO=l#g!28f"  Lhж}Ŗu2ueEXH26~ZB5be)[W}IU\-pPEfR|xJ-.ЭQ.鿧~Z! 5PwRLsõh_fBCv|8ƒ|`_UJ)TNNFs3e;寯q3v1HLQV} O* ;?󦋼H^ESE:$qzyO Ĥ8[q:'MǗ rt Բ3B(ـv<CBYF`lh3VQ;ɀj唬d | Y;$% MB?;~Y x.;WV6UiݽJ.n~DZO˱v@ D o=r|'X,S -u(C0qar Mna98rļE \_"!pa.]hrU4~e13(KJ$_mf,x$7RvHaNTgbґ ev⎠q$#74֯bOGR[arLvd%9?rS%m1h*1Gs{]^{cp -ڔ*fmtZwf@EUث1:㖨ûFP^Q1͓a+u@ hSУD( Դ-&.Kb`٨Th@OTd5ȨN`<71]V%-Ч#>b{2u,ۗQh'#1)Ϋ=Oǥ̆KBA}mA]t M$'5A7L>/xW2`SN:ͼ+pRJ&"go~FE}ol; R5wFoW?s Sl6я@_+U0d"0&©)`Kx[x@ S\]s,~KUB2,ebȦo:@':i}v0RPKu n3>eS}?e|'I's8+9*ypK{eGN}N Lven+۳~_F<{/ƁU,:| h'O|mWjhr/ L} <|~dHOX4ܬG- wK~ 2?\6.O:ͅkZQö(ɺL@'J*{ŝ[1[=|-B(y,LEf'5<zj*gyq_(OS3L B"vr;Sg pG<.p0GW  :N{XsU[6*okGB]1(]'yW G;93} @t*Pf@>=t,Q"Od^ WknTYc742;3qO^[H]⁚c4 DМU]]10NGk$ҲsF wDFQ 讒uOJ\xs~~$+]1$+m+3?=DDmJ8b~ G:AIDxc#EZ=r1rC[^˝p}Yr`ʍ7͠(|-[)}}T J%r`c q||=?Wr9? w#^^Sώ _KR6't[׷ruoeI.Q)wWrzpM$˔əH!94R'nD`R([m뢶  ใ"_p{~g rUTxTGDIf[s 9__":qBIo0gO}]ZD%B`sԃ:72](G/ۈ[A~fr0[рtmMܵ荵>iksvXB9X+RqcRKXUv)'逖*c .Du}}mJs Nh!|郟wemr}{\ !RxI({O}lJZz=:EC7%`s\pqf/b==}E|Z*. uB7.ȘAV$8f@ O跅,OFYI:`FlBj7Afb*1sx oSP1I}*/ux;}{$KI㮉b>J|`i\,]Q֠OԜkdfrY dNDUD>b{{&iJ".NʮZ,yŭ`T]Aۑʯj[\6\KY7$0m Ņ,Non]~)%a \B=ʏc Dnx#\['sw~d9{'xNqpW8,9÷>B͜_S3qP1}fGu\d*|Bl}-3ήpÚ0uhtY=UuE/O؅ " ð쐓Eo?'ØƑLK{LU;miqzh`qv346R wH ;,e$3\w.ӎ`z3׶,CSn2m4i&k%늛!| ԧ5~s3߯ST{NH~fqW^RP%Թ$3(q?](86ߘ,̢]a_E爫L#o8<@P^繬"K 1| dxC㻏jB5C>-%u=TH<5Jo?}Pw={•"G08K[X[|m`ǜ?:fɨLFaC񜪝C6dؖdi%jbn#-+jNx4V$$tfNhB9r P$wPO)$ueFv.:/E%[ǭP:GΠul8Gw1{k@q p(S7lGNV( XRNwcQ"x=Zeylh3W]#j[~i(Т:O.Iqe:!yIϵWWuV|vfG>P3|6Ome}h) 7vY5Th~o5crN&Z}u[t]Ƥj׊>u靚IԘ:]^ߵ:1ԛQ 1oqG5oӪrG}-~Ql_~>5/\9L(UAdS}=kTJPrNtQywYYo#ZB15pj2NZ>ܑz(=Zsno: -(xC>69zE--4PQ~Z#3rP#7,ĉתd(p˶K Ѫ+Z) =bCF}fnkr#$rV2R".޲}8{Q E?dkKTB \c(~Q4A^L4F^iX1xZ5벵R(3aO;[/76zy~R×9 dy!~op,d}X ~GGdɺB[ ~Uփ7jj83A]++ck4^X1\%zz!Q M׀^[u]:6@}lҫŕdȠD/;_:#kgnPJ&A<)#l?᭮hK]EBy_$_]c/vu8\S::n0үuNCy ujN0 2&MyI;ʼne1W5sZgI$| /4;{WvPP62-DZɇ0B -4Oh@ڔs6 ŜpIpLA8;`劇%,k؎cj +CxֲzqhZ n߸Rfz6Pd7-&7ˑXŜi5-sW)umVvfoA~=̖cM(3?d:hԬ|$f68)t,1h0P0:z7spllLq}lЍ"ad aI'аO4!P%od^ Pvtǻ }(I,cn^Ł>'&_+EԔRhGZ's"z#R_\R̠tōOR n[?3. ăRfoV\{~Xȧ_8M^ǒYXs@-6ʢ>Tca3 .wr^_Bƒ2B/ <.VĠ xsV9CH{%@Az ̎7-\4JH($"\!1rκ(Fy~ɇ7Gi(Y'ncx뻺C(2Te6n@zC]M(qOGʈQQC/5]&^2`+˘-%V1-Ϯ}B4bPxcQCp۵#J d(Ò/+c MQh -jmt9F)w*<QO[fûa/;wh {qjg*$[:P[=:aa Qt3Sْ=T|ݴ3Y볰] |1 sa"ćvaMT蓸z(D&IoOlN:TI `DȐ>aIVhkf^0Ai5]zp~:>^[Cx.B, UTN=L<NOu::Akq/zɿ賄UۍCBaDR^I=fi|5:гӾ4O˵ByTW}ٖ囜53@H=.N$fvo7%MMnCA*ڢ! @wC`A:H~s9CjC|/ {׷ P&_q%u3S9NH_14 yZK]7.5׷1>%%FAbW4g(楑ك֮EV;ѴBpsGGϽڃmhs2" gk5^jپiRյ96ACg|o?4?8dV著#NNP1]Ԛ&?K^$?>#to~7oyr;>E=%m m( *'m|v -Oԗgw;+'--$ysRN]@z^\e~#;yn⠳MKҤwaٿ뷿kUצ0p%GΘՅ6T |yhI*F6izٽLd5X lpr?mc˕$x66ԓP _:ϑ=9ӖyÁk f\kum(cÔ,Yn޳(I0/(HPŜB ȡv5/z|4`ah,T)G)NB275Zwv0Û= ͦΣ]08<)~oB)1(:'n;PKw+=W :WP}_[ ;tEeώ? o5oEkxhbEPA6a )L{gC@x,s8;'αu D ]xIkz eD~j9b2B_գk X)"By?0Jw0|pKX[*Mb~4&h)&Q!ULٝ. bڦ6O|nk<.9~]q s@3ÜSA@D\C/:YEwZvɟ[ WvtCxr'ˤD* u7,x]Tnx \ xײtK Tg?C(~RD T"Q0<51ȺEg˴qka[i1ou5_4 'g{Me{?Cԋpb4wU|gEW~w-0"ީz?+(K9w˼E6{wd9aF2(V//Gg Dp= /s/qqTT6<q=GW=5!C1up_\hMЌVyx5xF_1@.Lpjc3HQP( (2y}l7ԺޚJdGe`ŝ*"Y.62XQgwtm٭bQ36(Mg9XTYmDae8]462d[%x-ky78S ~y\^["ҡ3:Z w%E'*e;rHY:u |\Sȷ =kWYFWn$1< H~2žs:Qi+@;#z2h8.4_jJAR'״C7)~8uB=evw;O7d̖2nG7lf՘s9x0,5>y;G9Z5qhv{ݼ$<`dC{R{,J}S6:X\%i-^B{{3U53TrSW_A x5c{pk,wDSF*o5hQh~UkTT<1.{r2Di,=YT𰲒Kq1WdmQ$@+1ktץIu#ZPnb\ÃƣS]DUA,ٝΖfN,CD2"W";I9'H'}p1\x\v"EPnR}!͹/+>/B|7TqH_WY6QԪ.1l:!b 滢sw:p͍Ͷ ֜=:pq1qKW-rĬsvg{ZQ7Mx>g[xEd$ٛ;WBY4WMc*~j83σ;Y~F.]ѯdf{tI=K:/Zg1|QpKV[׼ 4C>]R힝X3="J\8ZEi@wv{Od&(Y9߽3a|NeO&8ZFm&te M4hOqMaY}]e.e0Α2BMUwC'nfbx"qR/e:3\Sh,A[|qܮ|1Y婯ٓ4m3EK: neYnؗ9R$=ƤЌfr^Dc ̚xy\/E Rv[E0=4(waRZYmd)jQaͧ*#;[PFW;j3㈵}`ug d[kdA>vT<v@K:[\/C"2aZ[W'YfALu1v20V b 1-8F`?(s4&W̺ھ=\#E'U9Wu9rjK( (֐İtZdlMjjvc=jˇ=$ @&ۘTKoaON6MEUQPvw5(9inqg`gh)B}>}LsF0<z/F;NIkg&xs,:ɫ~Ɖ8yNu/$_XIgNRt!2!\1ynΣa  9_+YQ]Ӗ|$m4)lo`kN>I!Е"\60ԯobEڢ./~[KbfK=_%W#'4,O~fsk 3;~;M{p^ N2]LDk71Gҫ<$㨆vP7j|5gZ9{w& ڶ; `R%J5jKoIm0SGOWzwl+?q6r"js`">ngZ3 D&1{gtX#SoeLܼՐҦJ`LW篦k^Hq"Ӏn̙ O,wx9$7L 0 &LDyg-bbG2]_A=wC sjz]УC-] W<k5.5Z}SXKXx=Kzau1[4&wd+$zyXH&߅jZCr s$qKιDSl5|WIZ[Quwג  y4Tܰ zd "c*rDس~~%(_t~HYƌLgY-OGwIkoZE_Ee>퐤GY3+0N<~DR胤8+kgb#A-+=cɬ@"G5L%ɞ5M. 4Z_MP^EQ':mmE~<<:g"BBhppUүkT?_Hj尥+aj oKՙN[ݒQXPCUXA6@D9ag7>ȬL5CHpV}6x0DS-<קY_iw=UA#,g,ܴ9K(pQ/b<E𘞍|*(lyJ3,{3ڹ=bJrӹjg=Nn! A+ރtˮV~vuƌ#9V3.Em -ymԸdN*<*< sV}BA? v>wyx8`j{ņwn!kG kU`FZ_wXO\xOlMs sB̈й~Fψ&tCLu{鿵d= W.,sA\POwrsztC~ա,ۻs XG K@/ ^@ŪVS^1wtN/+m8j5*6?|ڸ;H@Ϻ]+PzfxQd`MjHxG!.t.rZPI m!Jf@]rH;Pn՞t#G*/?jo6 uNIET3%;|3oꓳUz,xҍ={6]NH2#0l:Q%8^XWIʪ &2P#=L7YJa Ü碐l1gJSFQX!8u3ZcYWg=t*D rq18d,gFqlf`tƍ5y7|K;YZG™~,2 .]qj>v,GyTvɎAX--=BoJ0WӄUV]oVcIN{>-?CoPV`D(ݮ@m)k,+`rR=O{:bA'?ܸ[ nPN %@e{Sd`QDU*20&U_m/C[=N\C!åQL7XM|IZNNN(CBCD"tCuM߻io]bl0vg$-va<ۙ ـÄ-#X  dnq7舋m,2פO莗\;T9==o(`HB|_d&"̮pMi}p栔cyX6HO-^Nx0 "$c+V ϯiI~4kPEh==J uYjLCPoӫ!0Fua<ԍO꿓.i_ె[ǽp@ iu0Heud*x~z> Uf|D|qt *4/ǯ x4פu.p#ԗ"S?;ᷜ}tzW1/NeFN2ĊIEucߟYѸg]ry-P?}4LHe1p 74#jdPGbFI.9 j=ͭ@`ke~(D[(gnG6?R곲QpLZ:*rH挆9Dou{`J#'+4Wvҡ}+Gho{h%}5a#bS.` u8L21{jSEsEZս >Ȯ)d`s \Vn[Nݭb@u%ऩ'sv?WwKގ=uoBQ:NY] tnKS`L2ew^c192a[F/A}$b$. R{#Gw#>:ۿsd}FK(q a7޻.9DP|u6I/ԝ-"^h2iI+Yr`8*qԮJA;9 F$sZP~+Em˛Mֽ|RFoO>SIo{]jwBJ'75멲$:j3t4e g053b]m)Gɶ0uQ?> Zd,QyzXG?_ß`ҫUf!)CYz֚Mҹў#rSfEv:"?m$oCF~̥rGW_uT}Cd;?_@uOL|wJv^[zlmk\{ -kxŋ,G WAHE $V4xd3|E^~&#u3]{ԒП68W}ldûo5WASd)+?y}{ZڬҮ}K{nh$ۅs(d P&=L(Aїu`$^ &v8%62)ly/ی |x7G/F|t!),6}۔qVxĶzYDwNURaRݡ;-Ζ1vrX>mQ֡*"rFJ:#p)(w 﫞aD2Z_w;vTM;'_\Ҫ|{@k}94`P9_x>.V?ǏonI~>jsh*B M|Tok8\CG(Pq!ŎeNib5DrߍA} )YHz޸6gG?E"xE* "H*l>*>TPžz4* Ѐ^P'Y9DXuj>yssl?ynf8=l>Tbxt]8|o"juemGʊ+;@>0wZW{b0O㷍p_697Iz! qBP@%s+KՋ|nmEAR]HrDh(%JA}GPJiS0uSJEHt b/# v?XMY-"- <Ҩ5[UF\smdQ;{C݄Q4A߳F di0jQëC_K]]РNo]͗3w؆h.5z նNK_`ÄkڱY `*락]vJ{|y=m[&ӥEjYF{ߦwgmdM*h)4P(xK)U5RA1  TE!2PL(Ԕ i T4seEتC7_?Jϖݫ9~xG{qZFQk7 oVRpl_9n-׺=X[\|*/X;^:[f8BP~/娎6";ӗcOW7ɢCWE45wQρ6P)9bwen;{{ r_10SmK˧v^FCZd8˷\G=ݢ.HPC;L48і%gebxc4lRY![À[lN3Y;6٧ :EzrvG#}{?U(+UF xo$be8/[j{OL2t|eAON=  y E"|ZjKn9h"DG- OX"tS4cXGcTd ?~釱\@ߌYN?5'z B|]z;[-a·{<]6 `%aXc}ʸ^/XFIfV-kl5'O_\hc5u ʟW^%H a`kgV:h]_>bS* & ) HAy?{~~6KG~#^fի>pm>\OA{٨j,kT1/P}^t:çN=7XߵU „j[NWx-ۻxPYc)8Nԓs2@^HzoE?_eis?-v {.>F;mwOmΩ^4t; ͯGn}jk/SםZc[mmzQ|-”5:o'b97XǎW@x;>3/\;ܑԞ *#35Śnw EgyhëUkf C/GDag,ga}wm,Y}fs @EG(:aP ]vGpTRi/pG=^ϲ|;ӜoF]sHz7/9=02si ZbʤDj! *ynBt}2^e1pgh(QFhnүdչtaolo &%uGd.wK%M܍Is\zso9H(p67 pfr ø$hJ烘pOt}g`UXÊr3rF! u7r[s;_ͪO7 i,n=U0+ݿTFʌ⡞yc\>=@P9Kk.AsnpsŮvϏMЄj'K% eWJPt\Qī_Y[״SOmFvi5n#xPKou=jmFqտFۛ'igrTJXm8~I?uk:5qyNMN`0qf0:2CD;-j4'|WU^_ u+[ sv?ٞհUFkL/j,$9!%!eo1u}л_G8m+sȯZpExeOt9˺Ő]rݘ/u+>{,aUG9ҔJWcm a@*TC=?W,_/%/U$ [#.bLRVZBZ]&Es.~eL"nK`)^)ڲ!.!$dL#I7?j6ؖ ]C ўdW-. *BlwZ16G ;ǘb5-&0h?DסwFؽ>` [O>Ϥn~ɷ>,C4ipBrYe%U鎑{uF8{92m(!LT& uw9lmz%i:U[C9RDV{.D_ 1 ~=?=Jvui|H]NMmT_7; Bkc,juy|пO~oZB`rFjG8 B05Ŧ/C{M4l!` Σ9ףkN*#g ndgNm8ңW`!4|@m$HS 4#td<!Ѹ[/0crys79>?^"0!SLצO+gBO:?w-"WvE,'n[T*{sp q<-Ǟ͹ɭʚ[TYkQRrA.t`-X~ٱo(>.h#fo~n:/@d ],Ă"=95 >7|== ouïq`znXnP718Qw-g3!kݫe3Lwy  vsʹ\׻0!i?;B].]yX>\٦,8n H TDa문J%5[q54! DD/ %NW HJ}jDC&|q'c,K&@|}8RCBIk(MIMD $,h>LfÆ펵omnhʫGD݀ї[\qӊiXE2%BW jڨ# `3ȣrdMa[f˟/ SGA Y(jexu>Vty3-ݷS-5֧@3j{=lf}_3_̋ (7\D?X C a0Cy0l4w]<>c{r C/H4Кi)~z>): I'=:ɟ )Үpr~i):;s~O)~a1:G+KJ7D]ăRZňuj=Hغ'D8%B!UlTꕝ){l,VGFhn-+!WNڞ|)g,lzAI:NMt³e iDUC )SF}]p*FKJ*-^ĭ2o2)զL쯣y(IOSWu¯b=-(6*ubkwmvV*Sb =W-6֬EEw1ffL>hH,Xo2E8 wi 5j ک w >+Kn&<5N?E"N)E|&oγ)d)a ~8)ULtW,A{̔/w4: w9~~=㖠56%/a[7@=Yħ|<5 dR\#JyE9(ozsɟ㗃50U'ӝI9FwZn6Mͅⵟ\>t0PPg OxYu/5X؁h`|G}ߞva4Hs"F:,ǓVBbWI!+|Ӱَ!dc4㨢}m8\=lKbz[Mz0~oLctm 7;]x;To}F?I@E(uoW2@Q!EZUF-~ǵxmtq|ynxcc'Q٣/}L 8(p4\R7mqp]Jl l`/Bt|6Vٌ>%3Oe >GBsK)25vjS &|Fp D'jlhʵzyxN̫! 㕖VZXJۀ-aM*eWbku1"90TMғ-.`r5 ⧻14-:>-DM 6>#jU1X3E15KBxw=uޣU#.8/0mmq%%jmyMqcp_2>;|{:s袎1<edtqɗ7>5]:PJY8 Yv[wm 뮠ߞ`*-8KHA9M65LPl1P$!#35;K>8u8\+wvþ='k<qAxz~K\>u{z]GsqNm%]7/uc4{v١rqhly 2k ΪTܰ1 lfR.鬃P,_):j~q%.w;3~}0J *F\AUR] U~㗨c *?~?j/G E:"+'%;;'wI,רQJlΎ2y<0Ӣ,j29O,j4܎kg~[ 45 MѬ:op`Uz~5!]8"  * +;/2wal~ԊLo`1}lTrîcy? _+2V`n.irRJ_^:(n"5rDJ:*A8ٌ6CD30H|4 ,4fMPlYHA@ n{ŵ_cPθ4YY)`{i!XieG8|*pפz}0t`3 8*"xĥ_>8̿E$ 5rgp9P8MnӇ'S dH!"1hIl[ +L vPd"'d6- t0kqvVNTce8IЀ7(kI^ C8 ^!c[ =n'_NNkNFq $ ;m&T,0EňeS oC-Ƹwo6I.,wDg=eQk:W/vOfi5sta5I2 &HSByq!v;uȑ@4'bBN9e H jtMbyCUȷ1 @4|ܶuepsc!}su`)(X;Z3g-`פ<%Ȃ~;_SbNw[ڃ_v)s| (و_{bWE3x@K!}55D c@IqS`!UI@J;HRK*Hp&/lrYqLE8:l\70TJ,&/vӈ{pP׿~=D(/YߛbE%iqL 9?_̉>p?}6@D ?0xPD3'o* R 雃@}Q(}y>+K7b?ǩ:~Ewx̟0Xϟ_'јh)H_(m!رbŶj˓heiX$P |)t;[ӳn( n TrE[r(k Dӭ˲#F"zǓh;1𲴳Wb @d蟽Q`sByC/ z-PswCs`rwk:":儼ߖ`+ CpTCpo/_/u;HXi>d";  [g֛p3 iC Sǖo& 'f89(!lݳ# H s^X?#< Q;xhi=&<#p.ӟ ǀ DUPֻHt0$'b#`09dfB *Aq)/@7≨,xAaO{YTlAl79aT! 훢;%i  w fo=Wpj=S~}䢕b$y6<ΰ6A;BB!٢qX*ᣡ1"|=P[EQ*Hz-$ TRʆXy }Le<__ >k<Q,\"laG|:N`F_y6AnGRbs˟=HrYxV#_[{44'AϝunCm,p %v|:z{x?o~s"}1HsIѢoǬLwX}ތ1Ö[ٿ0Q7wȍ]egD]=/F༶zsLMqO|.pM\v򱐇Ofp=0+~ du^ xp;&^/`\8-~ö9曽YGK=V82q#w[SmASeӷy{Z2Ǵ7hma]gv־8|D>1REY$PHĔ  Jj$DH""PG,q* hiU(^JA İ CD޴5THįWB p Q+'Œ ,RAj-IaG~i[g\ =A8((㔓* xV2 >i zvclف(=u#9VsӴ/nzvlynY35mg0< $ ˱K<YVs }kcx}Z.rKv_hQ |k[7"sL;OGז.e;7V~V3P3<:{h~8sn㻽D}a'WE'RNUfrnӺ.dǗY{T*=q'\d< '9QB?G (4V0ĉEFM1RcTFB2w`0 $7Ųp$WN-$L}S]9lKK A 81l{a v<\~bۆ!cG;C|Q:BKΔZʒ+d@ VL0tdjCEsyD%˻*ٚ#t bQߧtЭ1Dz;#f9OHۡX ^fJk DG_>Դ́mH42( t`c-md{ v+6ؖ8%ADb?h !ZX^&'8|N>չDAYsULH4~>wٗG#G_ˎ20h˒h*?Hp >GI1y6#IT@e<3ܚad8ڏ Z~f_ZܾQ" x7'YX>sI7  :՜s9Y^8eulVen*Lĵb٠O1csffb v'\ iGAz!GX>G/*T{w7g??k*Moۧnظ79i _gף;t\* ye:XC׋ -8S\\:4sn oQ#>]ǚѳ]8p=< \Q<[^wȃ,1( @ +*2%@_!߯9q o506f#$$T=x;Q "~Q$xV+QLA0?p yy%rQ +@VkLB،thK*>d&뎜ZKp03[q 8{o%ll7G +BRtkDfc|m'/e5N!{܌0]pš0AsZ2e!XDDzaEck)8$2^j]lzQ \.**a JHX_'? G/1M9䪥݀KLvl )'V>? :Xf^f^%hHz"UM|W2gUbqlWG ':Hή"S#@wIB4 @.C vSE}iZwN_?f<|daVGE}?D<30s1}t_CO[tG}~nNCd!yc9bp:`5%2*,{OE%x6r(@QC }{\[vsȨ),1BFn{縴Ӫ_AEu?wUZִr_b?h O:$F ͳ7`p<+VI3K/Ot*Vu ͹X.&IŠxE]oq`L;eUE`=C,T -rԀr8]XΠ" ײ,>>/Y ֩8S  'tu|5kY4};V%LQĄ[🙱437IJGֵ6Re[2ɐ `g)3WDkKH4->b0W?!Әz /Tp(,A#ȡ>]q tf'o0@6l:^EDGW5p[ܷظhL\1.ᡒ>M%d>L(Q-_MG[#Fmd/P7lb!`N<>nLr7(dyVvIЫFr^ %k[D{=6CS4eҴ¿ml E1{ "3j<O![fC̗Xk>er>v{>3iQKQIJYI _b$RWcs-Și>\o B -$bu~4Ad|_?,bɨ/&eabα"59LJt2MD.nmumӽ/t"Ă0&aK,& 9 mݫO3 F( C0ѝW$|c E&a'lITmz1B$e MmuX}!Q59;Ž\|8d2gxʹ0S}"B0ɫnOE GVK :PUBoR((9I◁>|y_5O:; X#%(7兟NV|yM5ُ\6[ٙ?D"1IWFJ.o|1\Zf8c}DknyΗ:ʩ/(:!TLSqSP`!տ< }z >zG^ x ws >(E/g^ɭ(9 g׸Dt`SL*lJni޻R4|G쬉>9rΠjB„2luCk)1B p>UmzA $BqUU C߭Ч"C{ lwrؤG90l6ec~ZѲPɨh[uE"OF{7i=u ŖoX؝{_Euca` ?b_u͔m{DŽNնA>X-I  nJ`AJC iA%6XS5TAguͰ[ A"4V }rѵIK};1'd 7ӟDδ.ԷA֊d}G0멾l־P dH f(G б`Ts A`Jc>y}N<"șjL}-{$!ƄSNawr@5 |׶U!yy+|O_쇶^zjEN$EA*qّ„E *CX*<R0Bq+ >VwcX?@L Zq/% ߤ`ݖ4rW)?(:}<9|6plqH Q6wcXDo (.cU^mobsd8ED?!tKy=邺ݭ{YE^"ILy϶cld+o ^(Z4q$g\2-,Aw#1t(oO+Q:t7ʉ:o=Mm5?. cұݙBiTwťX"cn9 9*EG{w ?r$*LÜeG2<.;0h_z܂i[$P^uc $ `yW?Mm,SZqIkm;|C=`>&N }yX8nϼQ_X-ЇCŏ _ڱA:- N(ں.bUsMǭ9޵d|޲+ݮpfev&bg+1&3E A~T@@c&IFMr:u>ud47-j͙t^7aЮxݢB! F9di8 L1T1PɭzKtg-:p9oM,1ot/vQo*R}!hR)1 VZIh}k; ynVr:1`1~p}K|h=LUR3)|trHoiv0 ;@>'aNlA  GiaT[H.8W:`-`݆S1𶛐.ke-DDҶqjAA|,+ {[?pFφJզ1i/&bqf0A6}|˯+oRԹzfMMgIO1>٩JV0iWn'0#坰kRDhnlY" Mk"`> KpϕӮ{6khխGHL=6t tv?:~e/03 ͏2WqX3w1b#׉ϰ9 }N& ;Ψ:o^ystzCU0D}uF#ߧzlUI:A>xؙ Cnt]: #A`"4+p>*XX* $DԼM!5nS6}Q=@tKXL8|LMPNgx`/ -eWaA ansuVW>)茟_\Ͽ_|S(l TpfNH蟰0@9Ba(.ϡ3\M1hν˷ Jtk КPsެՂ5\X_4Q $[+Y]] ehLe*|k $O%XءUz[?yFVSPo혴{>ݜp߻V ŷ>Vpk=}\}چa S<@4`Г1L/)%$R.KB1?ǬIQ|۞|:/t{)Kh>n,}!d޿?}g'^;̡LJXZqsDa31O&"v7~KW B2ۄ&%.!!x#.j|*]c~bCZ2^\Px"Rk}Vbҡ"#yNHrx8*|>_L+ކK2оlo¥iwH"Dw(tvGfVq~z1`׈*lxگ42T߂tR