aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_database_helper.php
blob: 8f363d56f3d137d1a88e539e3dd73084860458d4 (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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}

/**
* Updates rows in given table from a set of values to a new value.
* If this results in rows violating uniqueness constraints, the duplicate
* rows are eliminated.
*
* The only supported table is bookmarks.
*
* @param \phpbb\db\driver\driver_interface $db Database object
* @param string $table Table on which to perform the update
* @param string $column Column whose values to change
* @param array $from_values An array of values that should be changed
* @param int $to_value The new value
* @return null
*/
function phpbb_update_rows_avoiding_duplicates(\phpbb\db\driver\driver_interface $db, $table, $column, $from_values, $to_value)
{
	$sql = "SELECT $column, user_id
		FROM $table
		WHERE " . $db->sql_in_set($column, $from_values);
	$result = $db->sql_query($sql);

	$old_user_ids = array();
	while ($row = $db->sql_fetchrow($result))
	{
		$old_user_ids[$row[$column]][] = (int) $row['user_id'];
	}
	$db->sql_freeresult($result);

	$sql = "SELECT $column, user_id
		FROM $table
		WHERE $column = " . (int) $to_value;
	$result = $db->sql_query($sql);

	$new_user_ids = array();
	while ($row = $db->sql_fetchrow($result))
	{
		$new_user_ids[$row[$column]][] = (int) $row['user_id'];
	}
	$db->sql_freeresult($result);

	$queries = array();
	foreach ($from_values as $from_value)
	{
		if (!isset($old_user_ids[$from_value]))
		{
			continue;
		}
		if (empty($new_user_ids))
		{
			$sql = "UPDATE $table
				SET $column = " . (int) $to_value . "
				WHERE $column = '" . $db->sql_escape($from_value) . "'";
			$queries[] = $sql;
		}
		else
		{
			$different_user_ids = array_diff($old_user_ids[$from_value], $new_user_ids[$to_value]);
			if (!empty($different_user_ids))
			{
				$sql = "UPDATE $table
					SET $column = " . (int) $to_value . "
					WHERE $column = '" . $db->sql_escape($from_value) . "'
					AND " . $db->sql_in_set('user_id', $different_user_ids);
				$queries[] = $sql;
			}
		}
	}

	if (!empty($queries))
	{
		$db->sql_transaction('begin');

		foreach ($queries as $sql)
		{
			$db->sql_query($sql);
		}

		$sql = "DELETE FROM $table
			WHERE " . $db->sql_in_set($column, $from_values);
		$db->sql_query($sql);

		$db->sql_transaction('commit');
	}
}

/**
* Updates rows in given table from a set of values to a new value.
* If this results in rows violating uniqueness constraints, the duplicate
* rows are merged respecting notify_status (0 takes precedence over 1).
*
* The only supported table is topics_watch.
*
* @param \phpbb\db\driver\driver_interface $db Database object
* @param string $table Table on which to perform the update
* @param string $column Column whose values to change
* @param array $from_values An array of values that should be changed
* @param int $to_value The new value
* @return null
*/
function phpbb_update_rows_avoiding_duplicates_notify_status(\phpbb\db\driver\driver_interface $db, $table, $column, $from_values, $to_value)
{
	$sql = "SELECT $column, user_id, notify_status
		FROM $table
		WHERE " . $db->sql_in_set($column, $from_values);
	$result = $db->sql_query($sql);

	$old_user_ids = array();
	while ($row = $db->sql_fetchrow($result))
	{
		$old_user_ids[(int) $row['notify_status']][$row[$column]][] = (int) $row['user_id'];
	}
	$db->sql_freeresult($result);

	$sql = "SELECT $column, user_id
		FROM $table
		WHERE $column = " . (int) $to_value;
	$result = $db->sql_query($sql);

	$new_user_ids = array();
	while ($row = $db->sql_fetchrow($result))
	{
		$new_user_ids[$row[$column]][] = (int) $row['user_id'];
	}
	$db->sql_freeresult($result);

	$queries = array();
	$extra_updates = array(
		0 => 'notify_status = 0',
		1 => '',
	);
	foreach ($from_values as $from_value)
	{
		foreach ($extra_updates as $notify_status => $extra_update)
		{
			if (!isset($old_user_ids[$notify_status][$from_value]))
			{
				continue;
			}
			if (empty($new_user_ids))
			{
				$sql = "UPDATE $table
					SET $column = " . (int) $to_value . "
					WHERE $column = '" . $db->sql_escape($from_value) . "'";
				$queries[] = $sql;
			}
			else
			{
				$different_user_ids = array_diff($old_user_ids[$notify_status][$from_value], $new_user_ids[$to_value]);
				if (!empty($different_user_ids))
				{
					$sql = "UPDATE $table
						SET $column = " . (int) $to_value . "
						WHERE $column = '" . $db->sql_escape($from_value) . "'
						AND " . $db->sql_in_set('user_id', $different_user_ids);
					$queries[] = $sql;
				}

				if ($extra_update)
				{
					$same_user_ids = array_diff($old_user_ids[$notify_status][$from_value], $different_user_ids);
					if (!empty($same_user_ids))
					{
						$sql = "UPDATE $table
							SET $extra_update
							WHERE $column = '" . (int) $to_value . "'
							AND " . $db->sql_in_set('user_id', $same_user_ids);
						$queries[] = $sql;
					}
				}
			}
		}
	}

	if (!empty($queries))
	{
		$db->sql_transaction('begin');

		foreach ($queries as $sql)
		{
			$db->sql_query($sql);
		}

		$sql = "DELETE FROM $table
			WHERE " . $db->sql_in_set($column, $from_values);
		$db->sql_query($sql);

		$db->sql_transaction('commit');
	}
}
")7VlhHrΠ>[.S(=mlP41"9Z1\AZ@afv\DC^ -,_z8MIC:)*n&:YA3!iI/R㟇JZnA{]n81F7cwB-lzlXC@623솚诣>&N[rk<-}z'jW0 :'߅(zaPwTD5niBgpqK{]!`Ht ֋ύN>_Rn{U1kYj6lSvʽM8RaWkV @^8̦GzoNpR;%k獴 f_ET'aB8}6!=y5ĹZoYb94*Jv亷 c鱚hOτ`.bG$t}p@뵶;U֫s~O,˼6ق5`Hc9UaQ% U˥V;AkSyXGEZyBǁe5-?K+:Ϙu DUEUv?s 9/ ]~t۞`Q,sWV>PL3@&]*͜'F~cz^ޢ(H>ғkN;8睉?xRvbUK>d_Sl8ЛԵg1T2(W\l/r۔r3+$;9rVf$*&z]Cl.g/Sr,Ϡ[GjULVQd_zԃZk֏bٗ+PPxiw bB9k ;ŷzȮhNNЍtTP՝CFIˬ,Y42Eq &8w@u4y.934Y$2!HbI!#Ô@]0rNXh,~ yۮ* X9YJ+0ijgnBə!zo#}ڜIYճ{$bs#=j_~W]{E3.<.Md3 4eTb:#I]Fj{NI <#ɮr( ٷtGXH9+#?Rf(3٨Md0 zàu_Tiz$Wmx&?LJZ7ŚH~a߻7u>TWT5]HUX!m(2`N{p3ҹaŅ > 5`+E"܉%0酧N,57MՌ<žC:(N# LgUB1@;vݒJ`JUe7:~2H1lD*Q8WNLrQt}C ; K<͠K(t;𨚮;XkV%5=¦LEsѾ ፛xn (iWk)K_Yꏔ|}rwjhHFH*sO ߿~wi(^nrV[o P(kKArQDI!SPW'uJj-Tߌ~cV`q~$ռ$\6E$.`0h(*WgR\Ae$fp 82yQ"[Fvȶo]~(O?fƃ"5g0ge(^0b1 1S. bl7̾nLWjəti!/H&Y#1eZ Be_91 #SPԵS!,;x(7 BxoEU^. 1͚Ii4kRQ{}Q=֔{"a1M&\Z ݃?}o N㈯G/P=92>?񝜘0fs`ЭSaَi7HG1g:H{yq=QMi6C3RQzH((J`).80-q @HFMEq/0Lb,p7g+s=AʸOBQcRW#Ih~}`mŦ{龛c)V|#/j?7sh78k"N"yz/Pۖ?a#,4/}@TܚR,6w|BCjybj9>_yql^nhf ~B:c~c x`9q[u(@Ɏ`ٞ;I:7D6 G B: -n`QU -/df+ 7&=sM@v \LC(遒ldNIviv2}?wg]oBiwApjaGx8fC-Ճ/yZٮ7uҮfU^ /¿x1?~Y;ޝ1I0ћMD\-n§M(*KCNM4bȳchr9; m0ΙO@/D v2ZX@^Xj ;j ȓLʸn#-?liOVLPщ8 [2 /4S`0|D ,=8YkO3lMߡQEc@`Oz s,gX8H!1鼹$ap[vtwR"] }]6r}>yrM.fڵFy+J[]㢘T#|?guLv%5%[ ܃awdWy\ Y!BVO;L8#ڴiyYrD:Uـ$!ͤxL+GX .˄F1k&)^.,Sn ~bdPdMETr. ͈8;*{T9Jyn"P$9/gpXr`t*NH U7W28Ҡ3LU[k8Ez>%[5eFƷhI:+?$3q&_S?K? Un LCRmj*8gg{)v9R27?g{.U=dE~6)?qrJmMQͦn|Oշ,F?`v!zcj8 ¸1L ASY6f;r&9GBSSqU Dyw)&5 񧇪lMޒ N251ȉ 'QrABn /iJ{^KH:fVhΡ5J9i&7U`ɹ`1cИQjJTBn=ЊۘO%SZ7vK(4XR{n >7P 4S3yI;u5o;*scV4;鑸A0:m;وfPjdA=*$ ?S};^Z:+)$ͫ%vAٽT[0J8N+AGGPYD{^>Td(.raI(#/]|^-WvM*e@m!市0 MO4"7IZ775UF/}~\m62b3n!gd]#@\k뫠lW{2Q=\5<{a_@\v& [E`!#sKM̃3k>vi|-} B K|GaC5 _κ&OfRjDR>Jvu.k=Gu]eֻdHc3gcǻVڒ[^U=0uFHXC:V*,aiDų_jBD<2Ο*KS&8TEP;]7E=sNIdC7/E <(U_Ru؞dSSS){%dgsef7*Zm'#[H4,Frlwtj?nX'v`oZDwCeϒUT}I3 ;г9V:GiaI=;к@/PՋ5[>>R"ߪ` ܏)!ugyчλʓ",{SqUbVM%0^!T{051Kkru[kfᨩO}hs}כ̇Ɯ(˗R(1qS_yn^,4hnǮ #K柅4q-JOp͔r,|_4nɧ]M,/ZH 2C\ث!n:(I4XgzƎb;ր!UqRaf3vU'~obF|N?Prl@˳Jo~`A%JB.}nROjo:JZ.rxDF6ثadg/> 9v..*97&ኮ 5-QqݿeҚ*6$L=kq%Jޠh2^S59R+z}5M+#vME!t';r ?CrEv.dަFwl='$U޳ج~I\E[lk'zъ -ؠc1|U:´ .V U}?#IwC/TFP.kVLUL㦲6{@0%{QcAiU`n43unjI4‡@PK`?_N" y{kl9$o1'EC vclR-4tͦzmC؊o@NQ79K-G`N͸ջ1,dbɣsYd=A*pFTuT8aFe2rLh1=^@F~[Ex͌ۇIN)eDz%A؁Ll2.Y Odw Dx@XYh* nY=z.N"? BnʲhCeJ"z]B!>,ӫXލʋ(c2FjU .xYc6Ce poSxEv؏NӠ:ʭU#3 ɇQ(ϡ3,g/=MLҨT8$Bg孕phj(yhN.,e<` ӧE&TS܍;R@Mmv+# .iKh^3SCs'2\aN/=65=` I܉wK#qa G߿/ #}v}& l8HĸYĩ &/uN8wPT%۪/544gkb-HNICo"e2۹rNrS9# R7ZR ]7&4.UF4NhܩbdOeuCKR49!ܻ ᩙpHDv4dQAJ#MX Jcԏb47y+5` 8MmjH/(ӭE\7k@޶ n n{no@QN>WWo[v5S{#G]p Ff/5\pqS3'LK37`P)[f)yg^\yu&K7ak j{#.Cb[jbx& E7{c6|A:`FMO2툟 k٫,}w?_h;,9T TgS !~1>d:l('ma4MtWCڔ҃\!u"h ͗mY.bsGs?VP*5ByjAn2T#U:7:K2osL?j)tj?֩¦3сSjc ^^)î=P)<k3],)xyX[UǀLIbrrʪ̙;GW|)x5[~iWa,Wnsx>޲p3K著&>V菉߁5Qnz&Ԏ56ܘ']:VJ1E}e$@~J9aIA7P +'ybL"1V+PlAh?c+<@kuQ>!f2q 6ʕK֑IƘlabn!#[J5Gyh4MGđ`8xɮ MTk%b'āyQ/*'R~ sbm$ |݆Wq ѥde+F?(#t`bd)Q:"/xLQՙXxiλTBzCAK[2kIsqPW6nJ;5{z/>rrKw-{dְvmc*, f-xywVw"roM%I&cH\aᵟ Q8ϯk3|EBKo-uwPJM)0I Yne#v6"gWqDhjq7 SRfL]}9g;+zCQ%=!q({Ue LYVOj; Չ kiC)I(EBލW]O? ՇYAOG\R!2he> &3ldoіC ?N:ڢd m.^n`</ fJ&q|&faG*k3t}|r/`#WS#ťqͿV#{D('hU ϫtS V#+sQCLX@kS1SKԍ7)] ٞ_ٕzZVcVe0(aߑHx^{2c6OȧwmBޝ| ˫twR ֣r NGǷݼ= B ZiT<tvl襅tbx+Qϥ)?ˀ)/C9c 8 B'Dt5ci#Ĩ<>#EBHlQYQ[ET9&_(Q!3Fj_c!˷T@Sta\*8k&ʰ V`(erUY{|Ul P?Xd*k ޶juzUAgJ֏ơsƖK4*?˨Dgn4cK X5)"*p\q'K'jH/9xb؝d> "{+s'.-m uPE97t+oBTeLt6X^3d:V*m^#x{AצX>4"vW*sN g1Ú*hƥ+ɝ(glduE}-[60(cJf29M$;_vB䉃S@(Me`d/}#Dsģ%7QTQ߫'F`H fF\z7sħ>ZgoahWD.AN.Lc;ԍ%*2ѿ4yufqwI9&A]f(vg˜QH37̯\:߷e~&2Ae=Xm^4d. V a U\tPZc$a{R]л9. w~x:w]Trd^g >`إ[Ly&|˒mk|wƳgX85 c:tr ST%(^Vmg(/Bh]'$GbBtӆ\4, Pkއp<4#1_Y ]Vx}@ИB> -&M̋ϓmZp!0ajޔcö́p/%BOM3и:sG+a*.eO/RIgNRE"Ës)1qަJpcc^*"ڽ&!M*{-H;;l;-YO* 釳.Q~'22lSo -2jo/®\Rp/9p|l:;:|YUB|i /A@dx%k4ZZvw\qRW[\ ]j)Q \f?bڟ vHϊ \:J=zܔAiZE.@`bx4I7JT29}_YޛOVGc8ƽBSSs[Ўp1:ēg sh~*쌼iR>Y*sQJ곁ք(#yy7MSWyJ|xMGzIբȝ(8K#LpLQ E=[c- ( Wn:zT2J q ?us_wY(np]zM&1~`_s[ n|SFKTIoiN͉@)#MmŸ]v_ $/i IqI;ܴzl&wDl`O";t}Œ? b4 +G^$k'ѦY,CVUܭU^x5&sj̍o?W+Z *Q q|/8-Ps0F$gl=CX]''Z56nY`) uM-al聙OUǡiarIܱlc_Jy?Λp(;5FXnHDڄ΍j<,8]ocO} ǖKUfi6m J0H1aD,щp) ITbHW֜ 7R],Q^B!V{PQ^g.e5d xPmߎAe]LsMÌMNvPGjsjԓr||dP 6U3Z)O^y䭫"HalgX3]>P׵}$n|Ƴ<.i3+ն Q$ớ]sij&Z60v y8}o*!QuSoL{b"Mf>%jYԮ}.ylpYoE$KNu ET^ (n>TބOgL]x! a0!KM;>cMx?9nDLnL9zn m KX.-|y,?!BEWU(M90a,F'߃fw9}vu6ᴵ zAПPV ,֧7Ȼ~ t\YI9✉vEk1BhiQǍ!KWc_ܧo )w|Qo'&XllшV3et75Ool).vvs ԉZGoHI,eLQ tֈ 4PڭS-uIBR/`5hM5ܲ cK@`x 'Xu! ^JjW:S$6C/Q)J3+\VKgOe[d5F JQDSL+}>C q1eL;=ɹ8>K1w>)ۥ6DN+(_ՊL+`6!^ ^6#at:Nw|Yqlqnɺm@H\C N(EX-.YRg=/X@j' ț@/i 6OC>t 2}[m:k6fSc׫=63F"iXq!ωz"h&Æ6Rʟcn *b'IH_ =Ui0 Ӵ.DBL}dA^JZKpBp1Fc:8Sɟ8 2w̹{ @Lא`-|^B;BPS<,Ub@D"pUL/P_q/I!id=-Qhs.G\(7o-cSzk d1 a]|i֕0_s 2x['gk{t^Tfw-bzSJ BgK,q\΁z ŵ5I2D=^ipȞ#?z:Trt{ r2"dҿXI*j-0ō$t5WF sǫ8B]ɵX 7yUL4=Aj;(*Z/o1#4ē|هdQ ODR? )TJ?GmmG04v}>Mu?c!M34bb/A>&$P5&(]Cؘ|$0TpF ܃oQWkJxtc#r-3BlզNQCYD?.˔"uπZ̐ PJB '$+Fk gwIkCP%a@GN v +;cIL##v$} v`aê-]3#Bˉp@]]fɧ-y mS1QfB3%ch&hD+iw<] c&XFņc%{Po@N6ӟm%%|;sizK0븓2b>Z(9ݭ 0a + (kP\xԒ=*9ӒםyhD6OlIP]_7:D*Tr}&h[kuvjM*0 &X[\0?Ȝϸ[p_o3?! >-D;d:_шBWyT2DQb %G"ůT@^.|!JJy4BDv[ѽ__Vk 8-UY6oY&ކ#mFy~rzj,-Mc:w"n1{FoD&*-BW8@) UdSVb.[][C͓3&#7gLr#.q.2G,dX1CJ@r&!fv i]+7̭X;Yӛ/6 b0!oy/Rf*3cqKMtvѓD((kg%l:佳1;˶cF3tNKvKf/ ƀV:PUfJ c pDr:^mn'IYQgZq*!jO*l\Bb#սaxA;?$LXrb5Fr=ؕ[L)B'j)6$~L*6gװ,uTf3p$@ќ/<+e"/ |d#Q̬$ o2_I%A0en(/ U5Ӣ{ֈ>g3RB&A45Mk,>A[ޅLL\+fNjVk6)^H0T| ݥ:koBh*)֓_Gej]4јSɪ6/N%k~70xf 4 /㻦v2M#҄PsNS1Ze(7@"! :-HS|<W[pŻ?i9\ixS}W{yy|t2rj,xṕ{ &F0ɇiC}8mK>A@{A/ޕ*`/(ǮA\h|ۃhVL0( ˼ C J!|61$&J{ ɛ͝pA̩fJϳTXO#0e߻UVd&^]Wp9{t4o4ߠ%[Gb"݉;BK:%eYR2W8,,^-JhoS7>ݛ֧;iH+^$Li^%L ԷO=*UmpbAie4V0?TZzA($v%n?,hy"Qy-0'F(G$d/.n6آ+@ e4B>lOY[;(6k[d;fDoT3i.gt(1sHꦚ`pm!6R_&UH~!;6wj@Ǝ<>o}5BiBdZ.˕V@}}i,8emk*!冗OiF}\Yx|i\M+A{+*z-uQ֡F6p.a7=4mk#48 Er+1>*A XR[ŽMt,8Ƅ OF`g=Xxf!w4|'cټ~i74wd\*E8yw F׆2؝"Pn$[u7@w"] ՀwRS4w^kv򅝡sm^SFA|39K8#Eqd9JJ *:?~S>mlN}~KSM:ٖ})W'Hf):;G, 5`˥'I.=+YTO +ŭ*RHR{з}K/{h!2&S:h yb&bi"T=~o|#gZ3e/e~f+H; `. 9,X_ُuyUc֯mZ\e*%,dPo?Ӽծ3؅P+h!/.P{th T;xK2r?T=J;N]g3ew Ue!"N)C眎Q`2=#^Bޅ`>Vn(]Yu9(*E]>:Ԭ+d|!tզB X F*<ۙ' DIZn$C;Vi l;^dx7H]wHq^2Ѐ X}d8y*A #++shă[WM?%mq<]]O">K)pU Aw8aRd?s–JN M yNueUXbdPnSfY;Nۥ Jv9},!h/cS/dd\q;Yqi=D4#,.Tvlk\?Ku5'< JQt .ۆ-pctn}z5>o)Yb=/ii&瀼@ՠQTi¸tI炝9T$Ev壟[ cK8b^ g@?sї8V*z\BKU^ׇͩuB.8DLD8sFyOt7< jRj֧OfeGLw*w8_/,<֌yХf1uBzQ[4stI"iv{Q$T#߻/~0S~YMm>9{ڭGlՃ*YP5M3v؀=^w$SX"\d͖01]r4D@q, %l#j;8 c/Sau΁Ox.*ro;VEв^]Sl9uHzLHkwL8Lq8^lo-x·kD9oe@gm/7ι\9iT#xƮ/\)X{Lp]t7RIثZ^L͊|W7M=n  .P+-E4Ը+Q6{f2MG; {Cε $8w"%IНh, /PO|zL.ASyq @R:1b \j-XrY8RX9qoby˓)0y,34UkK{dvkT@쿚y~_:8_HpkPTOuM} = ב Ƒn@QiMR[j040p> Dvi7A)ġ[wV(es)4z==X]":-!rʗf5;LzOɇZhƷ`$ϙԌKe8-uWz(TMA)&|{[@L.vrƨTC[lYɈOhrGxoNt]n)|sC7`<Z{ե/!8aB2nxK h;2N:ͨ+z9NgZ>:8v‚]MkPz'˨~")OۆdWY7ocprg蓠]Ā&}&YQS[&Eq/=DHEF{58}Pnܟ] 3:M5G1sqm;kMX֕B:tcW6@ ڞ <( t(VOl9S$P)^"s1]fؠJ$jQ!ݏBGTbmf1,Dh'ڮ@uo lD*)fSF*VSDǽ<ױCĻ@P+a% v9C443 #Pr6e(g_cPc*^O>4s=a05vv"JJYz[>ʔ(HȀY$FZ+F; !lK!{Hӕ?HaX;A2bصQR W#d$щ)GF[Ju^|/}좭"wnMtοۘ=igB97~6s)t`.ۺa PYv(udUz@5q;Pm{,Uyň'3%Q޳b;״czvO$׼0wRfuо7>:n"+W>^ni b#話?<: :ؕLTQQIMiJ禞Z+nGK 8H)Z5yPp4Wʳk :ل{p؜ 42/* 3=ýHzQHf⪤F@s_v+3'g & HgI |"]6\'0WuiOw`]Ux#:j8f67h l͋w54~55ZoE;HىfCє){e`X4O7t@>9b`h^ K~l9VcD+C-{R<lWuGI 3kQ'V81E5ŽI!{}'DG0׽x9ȯΆ/ľđ( %f;tA01%Ӗ{X\i>njZ GRtЫ71fp0W~g*Jg]h GEբދUrsdYJpF Y},8MS8"#hTG |JlP`Oݥ,Bo_KH6Lu }D p#:C)D%Lg]#(8!iME[}*=h !B,YZsbl۶&]+K[ȿёjh*N-M%tɊ8k$BEՀaAeV QH_ W7˞ c[+ޜi:!2AT4vԥ^wr8oὺTU}2s֞J ĵUq'JG$ޒquHX־AzpG=С@SטvHY H4܀ ؕx٣LLwUweW^O>0wG1uR-6_-Rgp] 1@/R>kٓs\:JNVBísǻ-yͼ=$s"L̓p湛=@g,e=cCzsVTVj2eOzK N]ZK;/Kގh8eW$Z|craG@=bŒZjadF<tiXЦDN: b ájm ʕ)m&HG2;`@QTf_YD+qH7!V7.ݝ7[ra?[48ˣ?)5 ײ FK#&5Id*"yRh9DG1sφ㽭CLyiʖ.ݓ線uj-2s"hŃ mN`PNxO!’qh6Ս)QRG+0 ԧ9GOE =3AD DXu0U#$T-l۸Y9m'!DO!7X(r @@DW,tHvB5@Bų4Lpl'Fl"&:͍nL?{FEB;ǿ`tGi Zi82aĘPx Js\A_ 1;O6ɀKkWi_+9=08'ILhd/`U+FU0EM,){m6ۿ SuIfDPu\7b,Pq)rl ~iOWb-2@V&)$_Nr~nE6ϩbSɟ`a3Tr jdV8+84p<*4{4@kp؋\|c,z>:g8 د_6Hp P\HSJaPK [[IW 0N8` ꗛC^0d UB!k]$, hn׃Eo<&A܁@;_c r7uNveTcO&=]>b=5ef&7NP> ^ kCzu$ OLqe ԅ]RU]vgwaums4d?+U% sM'rn’Pp\~[d~kb ^ xAfLqL6 fpA96~lDt wBV.t ة*ԄINbVO_~,?8ixgF_$G]EFݑ-ٮ۴iuQ,1J+G$ϩ.ʭ5P[=8N h=e4Sv$|OǺ 2sF9 pèBx Gb >6&@ !!l7b WT&|ml &YHCo|&b~yl/xIJ\$M^/D('@IJ!c?t 0>Je0®O8e̝O}m`3-%!dfP/VX'#:] 4!8(q'wJ7tˠ?͋!)ȶ"Pd G7M&G?RLR mN95ٕ"yu.^4]:`r~}]́cQw_psސ땡FF_t67_ Œ^\/|}l:t_'r a[a +E%AI*O[; .7CfJ7:.#+xx)#bbUNe6W]NR]nE"lDdZXU " Й]jht&Ϝ,q:52Į~iD@YR3o(d'y>$pCO | |2|: L}Ў'zSqr xk=]C&_i }Jl2MDJ`[ 4":AYkVJetFWM7?[K(zk;z!<ڧeoeșDrBc$ @'s,KI-dyZxP,F&?2>r; s1kRZa@.>KM=19F͈+V }{ᷮO= +]eW Nnqw2"R &櫱^' pؐ3}eB0{I:3ƯﭓZ>EWW,6iTT GfXJ΍,b06ž8w~ j `\d n'NI_!̯ڀbC\H*,0*qj%zwa9ڔ(LYpkF>l4AI:kIB|, Ķv&MN,L z#Yx> 'sY犦3cgt΀b(8I*ɬ\9qHm&zqHGq0,Qa 0i,1\Cw]El4Lj6" 2PҧC'0ߏ 8ՙ8v16B}ef؛;{UBO 3ߋQ 2( ZR1.T~ (ٙmԋёhS 9^t7O~KQr GƯ) />ULj<_ QbLC!x}j tv,LZ|?B(p,{fEO5⬍e$ƕ-\э0V=zDA׾ٛ?T0.rB)b.d=D^JlzQMUvE~*sV٥X5S뽥sCBʳ(sJ#i+ղ08vFptpQnUy4fE4KxTzXJ/xVH`DKb$?ZM$P2m}HWHyIG(:c92ybUB tCZ"&xZjHzQ~~s1K2LK0r è5uPԯ~'3{C*Lh}Rfs2z[͸+w0nkĝŌ<\V7\؂\ޅv&?3,T|\߃(KGKOYJK7v+ <5}#6JPV}:ks<ь@f 򀬦-*FDM_>WLF[|#΀kB}M&OXTH)fAϾ$[.#TtB!Sz隳C5$0>X.CzU¬JXѩ[2PBRe}EiN=w7+eKWt좺 z+ S|$( ұk,($v|ʢ&&+(DN݁LR8naX=` s iQT,]`.6c>&̰o-Υ8 -tLr%'@o$xXkB<>Μ=nfyf Xr:0C1y2j6lz4ˇR)MoH+L@*ܐ:YV.6+D^yWf^ka.wPgIN= Kn zX+, Y(\aJ.?`pٴv 'ݨCَwyIvĆHEo>=4ԳBX|+N2?n)Gk,ٺDHϟU=.`zk6}T_F?:>P+gyHjUD_Ý))]/d!V~lT`Fc5DU| w-%~f0#{S432}"%~%%@-:YR}/5_(k]IfPL tw@:hUr 2it&|WWHb͓BuMm<yO9X34=KXGAɎ}p; lּ &3dNf_dy4ɷi`A?6>UcZ'h:wXxIGQ`ǾK<¾| À@O nrQ+)'J2ȓCEcn+f$H dϰA{gͭSD0YcdBg/v4{̇Xx;b`TyBhFe('l NA;Ug|T R֤e_Ro3lLD CdmߣVH&knY2OݭQ1٣#ܣ_Dwa*68N{X[t)'E0b\gd1X_>4&4.Kx |fJ=э67rt-&g"n׎2Q 2j F Ż_yΨݾg*3COe6}{QGfr>4WV kKe.O0@s3BP\{] 2v}-{ ϼrV~  GPnR;3TiG XBGB>|d{T5*(( b4v俣g%z\ Ywk @kpipQ Tc>ƅ=de#ofmii% 9T|@ VoXWV*5tN!}I=6-/ j6if+SlDt851jHf5./#y.5Y"A3G:9]w1UY zU' fl6.ASEB]|`&{\.]#e[ KjظԔsg5n=$0*LЙS @}_8m>O18Tz]D^erU~n gh@[m=|t~K^X5ԭF932o6g# z?ٻ|IW,Rg"e T,鳫 5ȅΰk__诸->:mx #g*3Pw@\ PkN1,MXy$R4p/ _)NOs#4m-= zI.3 ꠙ~s*GJebV~Voe~f'ZG>fKr'򗇇/QUYR" _vH <AΡXw'{#jg/klW^VX0'2">vAqP'.v>4nU|"ߣ}ԩ% #$Mn6ywT./؝⹋]%JdBlqena!pb2z )\%S$=Tk,ٗ7}T!Ǩ}/`?z2pĸotTڽ046JQH}JP܇{^<(ꈛƔ')A$- m]Xދirja;h'm0!r|99fc QY'"7lJ  n~;p>zp5lMK bg,#ǹb)KA<} \+kF]T$a1EtXe[~PntL[ wW9Vuע`,siz{j?ů]](ЬU_P-N[|P3--Gi4kUѬlX/>P=ֱ>0u|^hL|'/af|33ggk9cnVEYfDՖuggk "a;%I6z؝٣ M vz{0@JΗLȉaGgMw:fŋWŎErhjU`9Sw̴jM UY*K^ 5CJc؂0xygf1*"'lb&Ǔ5~R4˺|I/g};:8&HH4oj(v'`w;new-ؐĺOJ1{/z)A4@%G9 46Gqsꇘ-*Re)eaWlu5DEj[jZY!9P <ٗgH8V֓ę&YA'`oG胓1]uOȾ;Q0'qWCL4gv x*TTEOx.Ƽjkk{ă)`R&|Ď6:uA35c D ܙ Ċ oJ?rڡbˉg"[x]?h6V?${$zDrBZX =EVLs-84016JIzhKI=v|DlE0tL^! +-$H QVb?á'XOy}vk?I6f oаRI5>_: x;$ Px7b.x0W#oʢfTu9c`i;jy5PJo5[wVds,W7в=}?sSULdBdɧ\1ZK60ɤeSί7uW=)B)+zH|cʎ AnjwYAؿzuTĬ`ϓ}t?3%] f>DR˱]U-TC#+52<1D>&RO~ڷOw!9o!/d9pd}I(/V0N8;ݍ27Vs6Lcp J>aa];yGX>bOq.&z}2&?/Ʒ&nn=T D%C[;!LG0ƯZP2jf[b儼1G3h~B&:ҝRqwmHѲHA?5ZvؗnyhPr^8p$1$Y ,혚s:%Y[Utz>I߶i |y\ )xa`(ӊ^$4QƘѓf!Szސy\.w hk.gЎitKimxa ā5ty0&I?17),QKiGcrRW!DNEHCXA&_GMt pHOg9-TF\2tc &n U1Uv2GRt:NtMֻ@{xtXm}5!P~L)QA> u<}bɞƷs,׭!UZw(* ݯf޹5B7W=1ScǶRry~x,Q)hi61e|W$##M G> k}4={02ї_|Q̥GRkD6^y`W{z$10 x Ǐ@U8U-ZEWOL;֝U dw9e)Sm/L-Z5o ^]6q~O[7哊G7NA_SgB2}߅֧eogZ(lZM n\P I.&<RH$sIGO M0.}+]Td|ykKڧh;+UEϖMEuW hT$@xܩ]"^}g;c __уCJWRŖԑ4FZZɭ.rX`qa1qj=]tx!k zZ]§ #N48lg4TW:K6ÞV)R,*`yw`b;}jl$yM͞هqbeA=?IY4'/qZ@M_BU!z HC/D D"k_LTo*0II'~> q6ܥuzaW/:,l;G2 KIKPD=CԘ, tEva)V!'T 6i,@zu#(S&\0;9KH8뻺:;#U0"MGܼ!9Dl~DuN./ @2aiG@w0ZA:R-t[f˨a-1ǧ`ݲ (@utAmoLt̆k,B2g;3+׸4J"}EiHҢΨ Rۖ67A]Ҩ5Q0:c\ƳH6%%v2R@IoaFC1v{O$ή u,a^: K)]HE^)ZO)UMsQm>6M'Gh sI`fbaCdUӤ>qH>6C$b;s)>Β <~nlEƟ%7_ޜtg"B`nVasY"< t2Լuԏ6G{lYdH "~ΊSBipыeIüJ]nI>[k{DgƲLc9;ɡU YܯۻsfE}mЀԦBoG$# t vY΋22 0 Aq Tn0@$ )u 1,?%}-% w%{ϧZH/(5Y;W2f/ _(nz]h3%nh9CjqVƅ@z2@W@ ٔO4YLzݙD>I;;lG!rfIӃ\OG{xOQudl9?M_#]CTju~`_yj+ZV7yPopC!ꣁINUd $JC Bvs;}W 99>q\YC{qC_]ʂ=(c9PE9&P3ëi"-NaS_K0otpi'Sd*^ϺP L<A_ߴ%:m&Lvnrq۬lK lo03wTg0pj6X pT^D[cF8: ݁늕cʃ9T Ռ쩰5;Te eD\lsi =F˽:P@s24S[vEƱyU:sw9n@'l/4derpoB'aU|9R8N $fMrºW0z#eGǗ̘VWFIukZ? T#nf 4Wud/f^& ]!Z~1.WIDu @~B:9>MĐ6Vl><+YkbF[ WEٗ]VSxŷGo K+PS|0{nUn3%b 8_j5dx-is#yZf޾7 ;㨡,6bZC=z(> u\@m;!hi82Hr <3w 6<ҡ|Ywk'h/AlE<}X'%EΗmd=\*Βi}H a;c}[^%@냰1˵@KɘrQˑ.㝓b^؉9D[yra2ME(9ue~_:IEޒvzmpcUAeI')ׂAL[rT|ӊq* Br_H0@H[f<OchP+ߪˑ{c™䆷Ҿ@4nh("0h){%p!xW5k2D٩\=l4mCd(fwY_Zi}#r$WT?u-8p";&4~y2ܲzs|3$L3=`F\Rx YDU@WW (Ugʗv.p~2f t3/Jn$#Qs9?tLk2s:F9 ;dFC6A]GZ%D4՗6u_])eh34c mg;wE¦ClCD É+ ]t?!䥝w6ҙOQb,IÞF]?D' ť|18BɄ|pzG8M Uۀw)82'MH:Y2+)^l7YWw`ID/l:F“h3n4}] 2+=ĩ+82p ӆNd~fSc5Z|@<ﴜ.fIS1G.Qn0JzM 6s7>̱e}r5|^CH} kՠM8g`vt']2>I|΍c]+X֠XHz2|s]rT/#v,\rW־;'N]X۽ &D$R[j5_:(Yd_ֽ̦ٟt̒@Z7***)4hUf}5B0;ĔG5y% H+Pg!hI#35[ ̺ @#x{Im[0CtG\6RP2++ɭb솶V/`ЬxgV dKT| g hE4ܫ.Bc84q6{9vRvXq)N.O=)[ m8&U߅81V*H뺍f9"BΉ 7;#c4ʾO:LmoD"~P̈́~n02_(#] ЖJ9cL;ݮ$#oˈF?:n=;(_ Xbؓ37lve q9):v7dhHECoy^&C6Ͷe֖>Jz]`?U/MRn(Gﶞ4Yơ%:qֵ}Z6^:7 ~ĞL 9v4>54 "HOd{5 nsH& Fqi)lH hbuخJSX˽_È;>&x>T)}8)\i68o1˳-TzuC2M,I%\i}No Vf:RN*-~/,,7#t )|y/GxUVdUMc}߼^%_ABCa)q1ݐG5*(#h+hs_}( qk(܅DwENg2)njIɒ\3) kͷaSM? e7o(͂V-ٶBB[e9P&Zg36nGuI*- ]Ώ@#Hsw|/e)l'$Q/k}CՏw`5ȴKqP]>QUUiNv5ȑ^ڡrlUB1$y.6T~B+&mmܛ죋טs/xo8N>OЛSU(Q^qٻ[r[cV\gJUP *ՠ2d]f cc)'u+6K VQ#p3o؞K\/ V2 4VQk_Az*PrȽTݩ=Od=[.5KڋO#E=UO7D$E`Yan;<+t$ib 7օ-ة: JrLIf~ e~0U@Ϻ^5FGKeʽBw+j>IAŝ(,z'6"9~f¡ܻ &9:'n=&;sg5M jzPH9F-z[*EN4 "'^qEcULL'ea֢ 4G6|&_i_$ġ͖MƝzqxE,jqb-Lx`,-UzBGG1K[Ut/T1aL.r@NOڌJ|\QAJ^ޫ"~#՗2ҵU tu8 w3wxbu>ںvĕazP& dD9Kڗ܁OEaӭgaѪj_b7MӃu {=@3D ?t&h,\){! 2if5GfaMm{Gاgz沫\ܢSIi \ǑXw~L#-PURо{k!~/!aYe,=/PXR.V/n.pnI@TTN4o8D'= H4*!5'o׍t9Y5rHUU]WO6+Hm4uΙ!@f垙3[RQE,_LSVlC#v N/i"I'F+A?&t#:&tїt3$Dcea*ǎwP:ĵXrюZ弮7 gLS%/:.ut shKz3XHz8`c'ܴ83ir (-C2uzKt!,zw׶(#kg YcD^T _qޝT2#* RH>u&>NwGcY;PrQ'CuRm ":{dkBKùӡ7S)h2m)bŌyUm5GILGtmu9FюK oJZz+/ 24> gI*SI>U\`\96Z p͔4p'v;n9BfBIC}L_JvܹwPpko+a( K/5)rΛЄ)Pv'ׅ(0:Fu!"$I(x {ѫVJt ?G!ŕQ:#<'.{=q?n/<bWԍ\pp&B#:izO㊷á sRXյ3ѤcFLƴBOͳ/Z*]۟5hir r}X*X n/G?\bَ&o[ i19mAL&1t#Xxi|> G TJPiFs jj{a~wV4|L>y(ٱQE\7F&F03.RgV&qB|%cҹX4Aך[Ng?.H0>R|]!h%:K\Yᱯ4,UekwێLxL"cR`"it(OL[,Jrh9603 2w4.o-7'ݦK˵35_9RW5 ::oʈ䌯k5̊f{!Qo mN>(DyZ2a#c`1>; lY|QzOg1n& aleȊҌt.K8Gʵ٧w#~C}wnޣߖXޗ%f _b."!&Vml'gн'LuA֤J+NXܮ4Pat+vJ6Җ2Pm#|O=yə탛6伲`łԜ;"%a?j]r*_\ZDQJ:mNC?y؋~0G%WD  y'ό_^W׬]28zXmz,gcUl"[D5LDz }*z;[1XVK/&tHh?M`O* &%ȢI0BC*>e(zyCN_lWdKT5$˅(m[<[mK;;0ԧ<8oOT^h.j9D;N5Ʋtח%NyN$1*F]dTv!8EiړgRCLSx2̫9 VC]*UCOQq,P3X+p/dMx d,#)ҹ|Qk~ fѲa%z .d*Nnd1,MctgDo-AB0Q;N|,n&K$JrT39S40ftb%$ƥ _w4>nl)m._Ccūk^ىz<+{Y2Nhyu炒Pag^uu u]` t *ma_M"W!X{eƲ=C$\lԉ H(1+?Z#+laՠ*ebz6Cf|J^r&dw(?R26<݆ަvSk UA2Vsi>?6DM?6qI /֞aSgU;֤ W<2˄>4wD=*oygTUr5nȡZg"ڕEA if<[Fg7/PwU2"%-LWRP[5̴ E8I\KS, Ǥ u".qиg:S16zf`}KiLuEʽPDphutCbU" BaQ"(KAB(6N{^:(pDHp[PZJH<,?9I 09b"b3I(,Mq'Vi8Y^a 3j76gc+~՟^MPyk"Ʋiu7Ǖcl.@q|I!rXȯm]x.ЉwC'鮤?XvtV2*T,ƿT3ahP>uzQ^I_ft_wX#4H=MjhR*<>H8Ӛt1"GhAP}ONKxOwFV aEWlp?b9. }9:&qp+ ڵPe˂Ch-a_?-Z{3z)y;T2(C2`ŨÚl-?hdFdn5q qᅱyV;:PSդ&O~fN"dfZj,ILG/N*)ճoV,nqXaP@|k;mÁLrS:QE1uiB gO=5*:~`V{f fTAu{U{` >h[ ~ɣ|lH=~:&V>xw\jZ$([ϭ`_yXYŊe иҒn+P?,X]Z\#kFg*ߖ/5.J䝦)5FW4%{:Yя  1VBk4dE\@" ~_ـ#ʇ|gNŮ7 |46IJ 㚠{w:>JIá݅m}?D p)BTHAJ-cIk\ͧ~-?>8ʪ2:WJEbPlDF#2rP؛H3qW:? %igInDMTz(@;u獲@}2baUӔ_i_$%b؆PR hYvU_7M"Q@RIY-gntoh}V%>v!@Թfk=5 [C&V3 @h`w+dņ6#t (9fk cvjO}l7kVD5#<1>fN'6jv]F7uo330 w5 i#ڿYitQJ -jF88yG' ouW> 6ǃE.C)AE/S"”?iNm:u'ѽ]$g Rѩ͠fw,+4>@r= lQolR"q|R_X |}\ўQtb"aQ#Ÿba$n3O\ Ӛξ x3(bt0ْ҆58ߚ?nQj&1Gߙ&GNuOj${J_KZ+{݆;kU]!@x7tpO{у1vSƎou:Shօr@tniyoMOܜ _9b` -d rDGzΙw JuVjc!g:{7\:xO^_52^FlT@\_熓F& /8ߛe=@r7 ?SM\2=>hM![:rI%=)xΡ @8;C0[U;4jy{ǯV$RضMtL`(Q88*f a'ˊw^GpǢ~T #"[`g>!Hf)R$[kv;xt9@X̮u;8W2 bX wuUԬOxIxmu}?JWT}e|ww6dPk ,):IOnW&7.ϣ aכN7"sl'@2U0* mc 6 )C fyaL('[aFPyv;K@:~|PlOVOݝ))Gq3#dPD8/?a y`Q<ţTxoO<k$21`7 '2x~7Cy= M'Ʀ;;r/hɪa 4VeoYx_jK&ع3Ǝ3 JhɋѲWʤԱLRr'C¸9ANF-h$TɍL +#I!AXS9޻[XB։OꋭD(ޏ>n]p>fȴ qc=U f3:-/'RvO: {);ʋ3PEr4弥VO}GZэh5EYIKGSR_* Z/@h||,%3$kK,y$i2X#H>J"Vѷb;p έj#')cl#qa%G gRvs)`~\<_js_ v6FMh#m4Z٨YkV#q#D@ q{xH /ccH2]([ q)WpZARFm+;V)w_U˒{,ɊZ{(Q) z}g~%iy -YXQ_}~ӕ3"iSsUۑH]4ARw'(fW?瘣qpA r^Yܰ_x59 U8_< x5{n1i~,ζHoȭ\΢(V9U `*(^p׹AĀ,DNs{M`N2/?lߍzqI]NKN=x"X7Q,!gЭg; _PcP<)9 ٦'"hڱɭr[lgF@$mC! ttmFˉGꙪ 1JWbtEr΋_[[=bFfk;2 jЅb$Aې"WxeڋpLdN4va+uJIELe^oQv $5n, {rφBR%!%o7!ͽk/kp501!raPYY6Q>d,NDVm|GsPzX=5CH;!`cA2#Ō˅@pr̺9»42@OtKIL 0:*욚"JQoUj]e.I&: SH!T:g|v7R9jy־=1cNOy6n3sC/Az ܆'^~\իB^`rHzz7?S`K~#Z_e~҃෤I ԗskvyG t! ?Q%WP ?Q,X?*{$bE-4h=̙uٕtë:Z"=Rƃ{ʯX=] Z o^`o W #sǁ5ދ4Bθ)Gj2􍷕5;^ΐ+{pH$fͫcB[X޽&z\dC_{b?+ndr&QS}\TǶwNI/l>!y]k xJC '7d|LȅؙPDZ5x7އsvc m-8{jIE-Q|P,P=6muyvBudtѷ&_iݿ*|n$r6<-IGQ?RP5_Th@VK_L >`>get~`Y>DNQ3,8" O] ;YW_2x"A•[T}v8_MD(W]wW!ש)O+f a|(gjnMY/a|jEaFvejE\ q#,^C*'UXᩎ؜BTVz<Ѳm q VA+A^V*{o{F4IE| 99Ѭ~6ADT[pٺ/{iD9MP`Gmp0N;}kh@ػps)qĎ9Ѝn%ήګmѭ@*/}eZIL= B8/'d;ua׌E5uYd,јkLXI~d [_40fy̛,:[p'Xh;6V-6`* d*iY0O'Vߥ>yۍ/QJ=;^%aV{Sq+bàxbk|okA7c*yrBLK%0 wYTJ"%c:Oջ"(߰;%Gܨ m;F<#7a} dl8$oMav3e%Je1 lӯx1<ͶPTV~ Hi Ӑw>AX; pX'2dN`>- zߩYF> q|" Voj+!$~2#Å pY.7 pU?(U<ڛ!SN]P$9z΅ qm꯳IgאT闟RSݎH0Qޓ2Gͳ$6?Ԥz<(OQSPA֞W(1f-Rb:"61p]%zR;ZzXc^I'2J hN]p6 `C#Gl6قP\!}پw&|v7@&kdDh л Fp[ڹM~n<I/]6JS1cytz3Vӧ7.D@C_gkb5!ߌh!)BBy4͜Y.P2c [E2Ӕe-Ӏ">2faZ[!ZێEJ KO>eJZ2`J+O@8Q@=yy8"1ƈ7bZ̏~), Sݼ Q$=T:-oj.>YW z! 8eQr2כ+1fS]Z9~vGfiϹM: 'kˇY_ t\{RѠh؏vBܜ$LW+2Y*-.@#C]Fq^Y4bu bLgCu%ӯuzqlwˍ q y *Au>ڰ]@nǓBRTT48eef;Rha"+}xS(z8qx:GfNKmE!GN6`h\%Hb\JecCSsKM:*fy.Kp^;3mX)ŰT64{D 3 W_p*8h)_wE(w?S{W/dODy/i]@\{Jl f9MEd8Crjf2Ƃ44jҔJ&jFTdm " +S{XI%& ..IK9y4fjFr_l}  p7`ocwSUBI743{^=uU}#ؘ"U)I|u]:r Y%J)4sp==,t_'7fuڹW^\ɦs8ͭE1S^MoQL Xl4aoRAK)L T'TxSՂǭXOw<4-cSp0 ,^>>6M(Z2k(vYuy\Y hz]c^YoE o(U= ?n`qj7"ϏkkI\T؄ˉ`f&aϒZNnhKӸDi);8^ lԶZDBf{&?K;XnۋPs0+f0Ψ,Wy} ./dFۤ`p֣쎡ճ>/&(qEjd̹~oJoIL2%r{m0P&V*Vj悈9+`7[6CkljIM/#dޣݬjBc+q4\=hhBbk-j)ٌFwYCGO&7T7!Z.jswY5vzP_?UՠUNԍxeBE7!Os|+i34Vs=VA5/`fHF W3 ͛iKרهa3aPU} fNon>h+fyD7AkoԠJEwBpta rG!?-̷&y;i~m>ߍ&':ЯCVyaTnivb%f -:{LT(ZI-|[$t,>31KTUXfTpIvD#F}mD+8Z˭H\ Bߟd0nz&ﵽ&̈Wxc[sz [lS mY > f*5 39YvVZ ;gu53Nnn1aJ\WN0NDw`XDRO>9:RɪAF&y-Bo׏lFs!t)P;H!/kf#XWYjybbiKXg'ZGqÜ6%6^bTwSgp1gsq}Qʉn4`:M$hW9Ww4 }>ʘYԶe|)i?\`{ߪU;É֋2TIv 6TC:# y4s):ۍ-(Ukӭ?Yds]c^K:"jCyW $9x%u?YuQ^jhx l>AM~x$âo ;n?%i di#_ƤFږqS]Bwi:x~l]ip.[R ]PZi"OQ+ ƪi9}FC1_؄l[蚑muzkiMnpɫ[)(k8=vڿ\sնezgwv|;ӳsJ]E8șD.~1}'xOP8Pvw~ŵ~V@f0,Ԟ_=#ܩ)*1;b{Zs.xdӍ?Xˍiv~@Mov{Qj_x_QEmb [i\7p3T65́-G :^zLfHA#7fvϙV7AmeX΃>"f\T ෺S£ʗHxͰ*;!+}M6.dQ12ɼSSf e $LALH ^Xiu8ŗjBǠj3ֳq')'stL4[AgYa{Äu0"Or/5ښZZhHD aH"2wuɸJ2oNˊ:/-l$"뚑px)>%!JN4=4w%qs۰sc84TveJOxNӱ7AYޠzʟqܪ?cʄQb05Y;'_<' {;_S;a#2gnDPŔ4*Qzňɡ~j6/ `hsd ʮVJ[g:rU#8\qAeտiLzٲ{8^kFe wxG?.dhG基#b$IeAm}La51AZۊ̒`榣Yv>l():g >3oҏ| K]`k}åp ؐA}82eDxX̐3t㓠Re.nʶȢ@OCaS܉:I&QQ}3\tH6;{CQq}vchu0|ZS\zBV.,]\$ϓ+-蘵s6s/s`2s;mo?ZBuXJa*R܀NbH=/.9pZ㇔˦1+ /ON-@'Agg}{)x^)EQ,D#7nkz:nL ¥u!3o%H.8w!lQhxNh!C3 m"FMaSb8WQ h$P^דVoə)eY3#7xE>E Iq|.:S/X` C4XZ\J -Un"JaI|P?I߂&Hh D; ,lp.TcK95oGծ6VᜪZ Ek.ͣƷWXd2bُYO@R;2T;cۧS|)zm{].cϊ8oD~]֖b-=Cw 0hA}O?:4nzy?nڱ˿}{˝9Rskbqpq5:P9OA/DLٕ"xի* "y <>Q+rRTi6#N4=j?0!ř4v̫)j6oբ#2h1qhiK!0&.]eƷr2RH5A(Fp$~ P%LR^TpaE.q肂η &{WGє"p4юp/8f&됶Л5;PSDXIlrMJDBGcgƋNyjM #`[XFqoo4){D,NSTK,CW!G\y} 'NfxCNi5+de݁Ȅ-7U1’1z.[0Rw9ki=yID.vY콽NGvcr [Ȩ'趓suJq5]D74Ytui>Zq6WGyHtmMLZx9>OU2y\ģcBL6d1.vƷEa!EV34ff?P(")b?T%" Mzo1}O|Iuk T63iᎎÁ0JAd36Y<.6o)"LZ|NJx? rAR_pmи&Q(W{P.f):GKC&70ryy8~}m_fO]4\u)6k(_z@Ju։Iޗn\tɶ# ME(@: Аiu]2.U̗K= Fj?kã{nIzd5Tksq<$}̡uǺ׊'Mc!Z[B] E#tESpJ0~=?xEZxcT<%d5޻~V4K4RFUZUcLUP&bS2Ł pq) PU&YF_.q,\EFQ 83Ʋ* 9/Lb\<4']Om8=#Z*Z(,tYZO=]WdR|l+pl|rGPffP1Gdh6A,oF :$F]?OֆBiQfޫNUu諊zov{Sz{Z) [-/i4JM,5nF=jhWl]te\r`AhG7Ax@'F"iLR|#fe.XXu4[ ?\ FI)qaDA>0,/UTG©{ Pop{X,kkU,]2\f!ҽŒûӌolˤ1eSXø)GdAE nٵ.dOɴ2SM gZ:OBU fN22b Yo*洌`eNZUa2% (y_[IIԀ[tjod,R&9d@s5P6 %J3X mȷTʺ>쨙d}_xɚ}cijX}"̀ 㴘Whtl)ܤnzkA?Lk NGH4:IR9Zټn&GkLEV耝kkSh5H~ѺȺfSbŒz7gL~ʥ֞?5 ={ ד :HD%؎'Iz2aI>I$8͊ӯugXYőxMG/QT 0b:L`)8t `7Uuͣ~eȘ>}7F^~P2ʁv}E.Ed6ǭVn%q[%a,~2[0mp/!$̽K]v5CTCQn]\,B; RS%⻅]Ե5Ѯ5т) E@*Yp>jt-}֚r[5J05+$d'*.#8[V&v3< :p}aZbNo,y.jl/#Ev~VESWP._*0oVo,iƳLPkXIF, gҌL=X,ЃB|ɍT6NY{2=hgr u}uB/}_ ɄH.Eb¼oIT|y+5Hu&4O25 gYYV`Ȉ݃ܥ>vh#w̟_fr`AB1zO׬{jF6ύ9|wv񦙻,;>"&`|0 {ö g@.NaԽgZ/ABܚcv]>O[mkid09k$Em߳Ȋ›e<3 x7{P.yYΆ]BmrNoh=K/:}A83ok*䭙&yb%1|lQa~6c0lbn'"W+8Ϝ1`d{Kæ]>]Oȫ@yWbl%z+cѝBm& L~6F;hĝ܁E<q?ΐr}N랒uNDq2jH q߱@3;a Lc9hΡE2^G~9s^V?_ D&jX}50btV ‹4gs(yy\ǣaNmܴo}jBuDHqQ$pq_=!N`PZo(xP?Ʉjl ^W7X~. $`4BPFlAXJ˥LԤB/52$rV vE(r()Qfingu.?F0wE)HO⼇Ѵ΄n3o7|K)&jva΁P&i4*rc- !F*,N/ dԺS;knqL9팞S C҂ C{XsN7DJ&̻̈́ܧ!׋ęTY{1߼mWPU@FXT%|9}b֐ݘPS%]VI,sHRry){ev 5E֋XGq:ӖXHz!)_'h뤣*;\6nz4񬵥3Lw1@P_?Z 2V+j6ooAm]esW|!ELE x#+f@]|DvdJX)b5RS]q3Pn98>2˱|&'<,–zwvXխW _cc?=e=%NFۖ(GtGz+Ɵe,~@EB[xȍѵhkwu&PyS'A_#{@\'tC4.=ֱE 0L{ؠ?l8c(˨n]+uE^˔ s׮ K9K =۠%>P^X)E0Vn.G_`CտX`Ү[Ξ$XɤHniY(/A.Gޠ@0%SJRUj/٩_p=.epe =@3Fmgr׷L+=FrЉa7Xbg rcGE*+FHZ֛K/D::nH#kMA|lV.l,׆ W Wy1{-l*l3 9.|+P/#3q3w%9}z~8'U) ̺m.nLz1vX4(x¥'YI;/B>hBۍdbqߺQiqbgc9;SdzMNYYm NK۪0yW)Ւ>  -50q͛#`U'ŃIÜ/,YEFfkUz$QFMؽᕡh*;QnyL9>dVSQuTrhl?tHiJN[A\SKtjEeuH燕!bI gyV(ovī_ʍ/Q v]TA3{?Hw偣OjطcGtI{GwP&Z-d`(ƾTrø~GGru>.\H-9f}q{!*Ӄ] ',U0)lB?9hj'V^A=(UvSU+_w딶BJB=)~wz[bdb@ns.CFnDU &=ID_a+"x^' xhb N1wb3oSY 4]?B) h)%g28Jz^^ #u&e\*ۡЍmمt웣pR)mu=Ek۲D+cSk%m2hu `T,;d Ͽ4WA5͞n:j1Df pV>)ew`@,)tlaj^j?Qe2oKс\Y΍O頯4#qwɑpRFuՈVE5bp,:L?tK4+NБ>=Y[aIT*ʣ4*cd(|~.UttӰ)+yve]AeO@qnӼE SAMKOjugᑥ:%|oNUtCt5d "<;ahFp/[%u NXS&mJr揅=`|IҰنgd\Rh{DPyea{FW*&8Do:uig&!Gv_% ޶( Ms+>:@z# Vd˟9kbRPe-h0E?Eq@(D~k30ف7euY l֒b皾e)&j:i`HKdZ x"hƞWɈ#HdUɯ^aL?Y*[db}9(tgJ34&fMbI8SIZ]w ek\B|ݻg g7oVEI7"^ u~fqxP?'l8ݽt^{/ G}]I8Žk/6%+I_¿[)|֍*w@<#c܅(N} 0X)J=Is|G 3u"4ÌsXEU޾jW {ZbAQJq޳GP!:60!H#qXƪ?:vg5̛田fHE6ƚ( "ָ wSX2Nl) 1535O~u9V+HL66)Iqb)!h= n69vzY ~奄q4v eYF&m&dnDY$&ͷ"η9k%¨ {,\@/. CЇt^)F\7) (Ǝ?Lnn_yG)vU$Z/5B1k d.`. &G&#n)P[X_ea \"4ֿ;# `.3j)9k*]w-!gVn=Z c9YK6ҙm%UXk>Behy8bdG(*Dz*vt4[yFo6ԸW TY"?pu@ bx 1 |zkk'Dp/vZ!fL@ YZlT ˚~X}I,W>3a0m97ycR$53s7`rA ]*VИ[@-#/Ji]D)2 Nۥ=9cz9>(xBոIG}lR99aB^Jaf\lj2fߢNZ@ii@rO@ b!0JS_ M {* }M`27\=_Аj n0ٽ}}XS8$'i(oT!P/Yeڰd,0S@=<ΞnΦd $ /Ūk_o*)qo fr1hj>j~>s+>s 9*J>퍧O<3kwtt/"NZ~]DuN^: w\ Apv&yO:̯%v7O_n5}dY&% j㬺+DkdK!}14D e%2ƅ[$!^vX9 y?v'Fys 4Ob*H~Q€7 #x-|,mJy$lȋK"/\ }:AoZ@ec"ϑV|T#~R@!6lÃ/>RY4βHy;q/#@Z=AíLE1ROORt]_Oe6T$$)u-90g B5BD\Y4?8ǗM7^18,YrP#Cl2Qť82dti30YXc>hPh^XBKMpKL%2'iI3'>b?W =H͸Rp]2gș6L1CB0mL%,5@x yE˂:}Gd$TQ^gA8n8<<>Z?TJǔ1DuC{dřTeS `f T+g$[onOn'5AIU0+ЉS5KSF{Y!2Rxˠ]I9}aTLiuawg!0KXOwGƱj9zCSϚTęa|OBěh[P' QOaT31te'YZ-װ#IO`&^&Ѱ=XS.;b,OL^ߢ"3aSמ G76Y' U>E'Ӫ kP;dH*D6/(u¡lx41}c]}s^aB:B`2U%n6}dxh-DTgxޔ0]! }~uϷ5+ifNL{?KnU/^ =ݍiϺg>֣Am+U|z2Di=Ҝm07"Rl(7QP_ "z­U, sgz* }Ej}e$̔W'_IL : `"ُ`c T~q36ݿ)}pfQ}jwD1E ǴHŃL// }iSҗSR!֮ ci!^~/w0sJeC5F퀣W:aNy&€'!]oQs bqr2z:*h\}quມ3K+8o csM 5E`%P)8K&?%y40<KWq 7@ů'7hS|w ;i8Z}"OPc"X_,̅ڑ?,c& ݫ2uyW=b?9x FD0{"iG:؁ij:A6AO@=5 jrP&sř '4HUPGdrH x~k%L>S~aց$VY?zl/m{_B/g5^d~Un={LsL)vtc c.7IP4`Lu|`)ȭG y`PQ~(ƂnyY.szKL:Lϑ%}B?ia@n/w/G ;M)Eʛ?S[**QnB,!wm໎54aG=MF-ɓ)2 ox׼&0G>DEpe+؁!k^6.bl48蘰 Ee[{|XU"{BXa^{cY%UmrekN;|;C<|<&z%zЄ GK>_!949k4dO"`>Ffxхet6Jͮ3W,p8$>2c2h8g^Ӟb]XgT-+E\1ɉGSG <<حu=YU^6IV:ѥr;zp')0~:,;.T5)r[,%Xӭ8QW}!⹂-#rMgWeм]:k;k\^Uq&`v]zhMG\,SԇDC Uja6^&ٲ6S =1.߯@@>jV!pcʯK򘔹'V뮩:WD({@ݙo^ۅga{iJ0MHZ;"B[lS7@jߠ(KѲYc谂qg= 7?L˚'kI (NU&JS$+%Ԁp0OvfX¨_{C0[X4:vF'EXݎCƥK\^jxQE\(?q_(mz{K533br;3ԧi ݺVl f8Wڊ E0yFq)k&i[~"ț!dvwۮ)J|swmw ğ#CG;%[U VWޅ"Xd_K/."5VG 7蘻r$ق q|ybqL : I[\apB&W(3w6r9`mM_ܚC$tv-gI˼bZ_e ۦO:ev"&FeVG/)d+|a/ 'Wx?4*}/>vb&8_نhO>dVMJ|6{f.߲b '⦪Qš##M72nw)WjA;̏-6fH`iS6k<=r0M;H=)cPsHV'ﲰS3x\q5we%_U('eqZV0&QCF_ETr庪<`"i^%l-M?} 号$0`ݾYr V9Շ=nFq7&+'`sxY!"Y }Hb_P=}aK؋,b;+/ B7 `O jZE0)hqs fLu.KeUM9 X]]DW+冪[fY0K]Jl'8:^G( \*X`$*R.&O#(N?iOZ5.y F*iB2 )`(]iZE1r Vzr3 ~$ #N5Vq9a5:t*74/ʾl8?/{*ni_Bz44zAWvC -JNbSdJTdnbg4K1a5Hث/T1jh<@?4c"V[>\c|o~g`ɸ"L)ȫBԁ-[(4ʬ\5fڳH+U #c24C!Xr:Hރ54! # +5 W^9 TКiT Q?#}xH^!rdž,3s(ח)s(] RXnn,g 4 iWr1LX6/9Z;&sQ<4]X}([sx:J9ɦoW$G$Sb۩hfC IզGj s9V:fV4St?5uhĥ?#<`&'\qw<ӚegB@IVHAՓ쐥9chH0)@WYzdvEz{YKQݣPu&qҚH폵uc~5d SKRKhԶmf`uQp=g&(2v򳜷LSCXmX kvrK|< FdAcDZH(XHXQ;~4?ƛV >^YcG &.oe^e XX?QHT' U,M@Dͫhw(zwXxcϴd$ P^vv /5g$4hs\Ixɸ7Ek#BD\%ltgW]-Le.沺mC>۱B:Dam=^7G׿b9e חrE q=VٰuܘH*}шMLœslf*vc! IRL6;R4k t>KC0._:םARhၓ} F77H){=Vh,^G*ugƶ N|6VMQ Pb%U5b RR15 }c.h1l9s5<?4.TQW"7/P6|k뇜q-?.RTv|woɬQvx.YhNPq$YU)@f-Sq"vf{wF͖Pb~c9|.1g2Z+wR\Zġ/QɰL|Gޔ b܏d8\ &y.gt>\Ѳ<⼑& n P!rH<1%xSMf )&fr %XWnř=]q oU#R=$F*^bl9iQ;6 F>9yq|ױ LkE@X 7W~qvş:7Lca @*m8T%=,n[3PTIgߴj+u;CyloڲX(J5(;Ft?)\T:Inw?^ "WNFH|UȹK~Ѥ4՜֓pլfg#g=RrsuDr"yO$P;ssd23 qO<(ad2,}vtG/Nbۭi\碥uQU-< UjI}錅j/h;a+Y$Vt;"Al/0}xqC #&@Wy 1coԯk*pAָsm'}K,ִTFՊCpwk?H$+Ya\.f"HCu[X9W~D}hBPV 2X10E`jMhyo-m3RpV^KX4ibן7 n`f_#~m8v/*:蓊6.)*dz b:$&i?3{)69} zE/;hz2xfcR9 dϙoK%8~FyBKQYI \*(?}Ra)㜸V(VX 523a1?o(PNNW=&uHSL9h)&`=r(lTPݘz@'m|Ԗ2m#lxه f߸ǨxI<ʛ %ib4N٦iAo?) P:[z!(Qb=TY!NKں^Zk;8atWpq:[EZ$'> ?~`^$xDWj[3~e>XLa.? jzO_ Cyx%(Bmp/>^}JsCؠ#). )|M!|i?8:}`W(]!'pD!4 IF X>Vi S.b!ny&W/8(|Ny L{'3w$Ex$F =@.3ZGpb c!Il\cRf8 %^BED.TPqK' 8a$7jҚW5Rmb4^j( w\ c#675ϊq@r5P4e\1~6zYBna!Nf}sX&jt1v(JOQFՄf+MaK"r"@ [>@^ʱ4]q 8v?x9X̺N(Ա( {ZhQ<<"U%yj"t; ֤|i&cg`k/:E Q3Ңlwͯ5N:pg"0@a-Q8ʻ}pd'ߤxrlI9uGAMtN\^L3z>q循tm0FM(#BW9Ǧnd^D_!h 212)j̱aʼPF#1A+`YrAG<.BmJ@" `X RϞutf{9x$ 2fTE3q  Dϖ!5RrԿ܈}7[\IiH (УT(ZXSaIZ` xP{)RCM/Qƭ сU:چccr[R{IƓwk[KЌP_bZ%V;˸.#_2etb3 5w c3.8P7H-݅gi4OskszhR3[Iƿ2= X%>esz\.3®6U!^Yr'%C0שOX]llZ8uFpst~ѵx=N zOSTCc7%]bEfb䟪%+ MG= X Lj/ 8UM![+44|ϯi#);Yc8>o@^( L*5qa(m?28p5՜ jZh,()px95{K;OpNoJɰV"ms9CH1J4QXW&jP+NIwXCyͽkSM Vj( 26gM /K$g }~DVf/!8<vT]Fsxx)>JC1IRtW\ÙvrqYҶRxF" or; K;^?/qU)^WdZknhZV(<@O[KV<`Crr8.޿ܞh?tN_csZ[>tU% ֦zslk: 6MIvh^+v C5VҷpJjɢ R${> Aʣ3-E06(_ Kb U,· reT= Z_B~f9B^vt2Eek .1ݕU#pWZ-rJ@Vg(ǺiL`*TՋ$x\Cߑ@J)8E)IaQ[a⎷˔'VڳxzɬJ65#A9ӌv*ڗJqi:<Kz?͐7+OQ nTi0U5B Tw[Ǽ{(*gDkւ#(2aojNRN%g,Z[I"'Vکk˶[Fq< K|x3%;tfn:8IltGg$y =O9*XTAa#?s#8b90jZ"a_V;, q,Ga"uhMT08XY7V%,,A?'΁taVT?]kar$ FF@0>c#wf¤~V.g؜6:Q'ETHTn+ [Ĉ^- ӌ%/wI\xa/LvTz]nONV2 Ş?ZԶd P {|z #ŸUqE'lhY4TXKx(aߤP`\:z[:h896\j[ @,E"эq2*)4'$Wt}-`RᦵTٖs8Ȼ{gR|b \JG{G7Q r[uԕ.wV]dgW M7"|J䆹ɞPW˄Fqe3|qAu|r֤ $c3 S~FSʯp{,r춅O7J+S1TdVzԥW Y865w20Sq:zyn+8ud%#K c) y} 9ՙO," 1q}b'؄TT$ [znk_.wBYr(7\Zaz/f더I1h"BY7/:S jެ|oZ` ߚ5p[էgE4[PLv 4# D,>Ys)_"/m{kV "g/jcU/rJ2SkЂ,:(cBg%QRFy[ 79ۧ \u9HJ6z'.,$qt+lH凼cbKl (!x 7.x~Kz-afsaEi28pHd(bF-e4@:rXi7;*V9+dcf"7"qi ]LQ(|.[KZGF-F*;Dy^ͨiSKGIxY$Kt'*ţV~8*BL?î%\x'fdݦ=kE=:Hp͇hbSdLyJs{|%n6O Eq` I@h3H/n&;X&La|U}Mݿѕ dë0*vE⏎t~P?ҡ%ƉJX?FI{@Cs!~bAHz}EFARsf{@_ds;Y|=0/KP yH·E6:22\j5ӝU* }mx"p?`fEuNbcz 16jC瀖PZݻlkHʍXJf Y+ה8j );zYwWٸIK(l]L3&S>FRqN8\@ F#nZZ@:ړ""v-C^6cKXb]MssD4%ĬzQ˅Qg, 6c~R}ͳ>Z<*o ,kHNy,PZԚkF 1:꿷 Z6`Ptfv񐿚~`kM+U;qubnM CFF*d[`+Y.n?f8Xg_ CޫF./c>|E#M bcķ0Z;byH{| a봀L~wSK恉1{ndxM+R d;F%zM%ؽkT@%v\U:uv3u&ƬV|l@=/ՙ nd[زY~ֳ/dŕC|G6gxn1ԧi&_AgNM`EQ4Mْ "z5igaУ'aU"b#nal I3 a8sZ$}F3"\CE+d 2<ԡ2 ,yqoN?0.gA(j`&^^exsHTfW25)fq ҥdoZϳ<5Z3~Ν̫2tZKk.fXU5&~n=¸iV'rU: izΪ d TU S>JG·na(lhhͪEN/-y&Ob޺|ϯJo#ա6U^{#sUm[XW~ɤ0z<5"հo 6e/3M1!{Q*Wz]KIodtd24ڴ­I #ɵh#dJ D=|k;=GS7+AE}~vKBvoRd `fs>ړSO`D;@@0 Iū_td8J1nD-ep/pYO+z rA'_ʡ-*5.vN|EC#