aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/message_parser.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/message_parser.php')
-rw-r--r--phpBB/includes/message_parser.php322
1 files changed, 187 insertions, 135 deletions
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php
index e63f6b822b..059037168d 100644
--- a/phpBB/includes/message_parser.php
+++ b/phpBB/includes/message_parser.php
@@ -83,7 +83,14 @@ class bbcode_firstpass extends bbcode
// it should not demand recompilation
if (preg_match($regexp, $this->message))
{
- $this->message = preg_replace($regexp, $replacement, $this->message);
+ if (is_callable($replacement))
+ {
+ $this->message = preg_replace_callback($regexp, $replacement, $this->message);
+ }
+ else
+ {
+ $this->message = preg_replace($regexp, $replacement, $this->message);
+ }
$bitfield->set($bbcode_data['bbcode_id']);
}
}
@@ -123,6 +130,8 @@ class bbcode_firstpass extends bbcode
static $rowset;
+ $bbcode_class = $this;
+
// This array holds all bbcode data. BBCodes will be processed in this
// order, so it is important to keep [code] in first position and
// [quote] in second position.
@@ -132,19 +141,71 @@ class bbcode_firstpass extends bbcode
// To perform custom validation in extension, use $this->validate_bbcode_by_extension()
// method which accepts variable number of parameters
$this->bbcodes = array(
- 'code' => array('bbcode_id' => 8, 'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uise' => "\$this->bbcode_code('\$1', '\$2')")),
- 'quote' => array('bbcode_id' => 0, 'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uise' => "\$this->bbcode_quote('\$0')")),
- 'attachment' => array('bbcode_id' => 12, 'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uise' => "\$this->bbcode_attachment('\$1', '\$2')")),
- 'b' => array('bbcode_id' => 1, 'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->bbcode_strong('\$1')")),
- 'i' => array('bbcode_id' => 2, 'regexp' => array('#\[i\](.*?)\[/i\]#uise' => "\$this->bbcode_italic('\$1')")),
- 'url' => array('bbcode_id' => 3, 'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiUe' => "\$this->validate_url('\$2', ('\$3') ? '\$3' : '\$4')")),
- 'img' => array('bbcode_id' => 4, 'regexp' => array('#\[img\](.*)\[/img\]#uiUe' => "\$this->bbcode_img('\$1')")),
- 'size' => array('bbcode_id' => 5, 'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uise' => "\$this->bbcode_size('\$1', '\$2')")),
- 'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uise' => "\$this->bbcode_color('\$1', '\$2')")),
- 'u' => array('bbcode_id' => 7, 'regexp' => array('#\[u\](.*?)\[/u\]#uise' => "\$this->bbcode_underline('\$1')")),
- 'list' => array('bbcode_id' => 9, 'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uise' => "\$this->bbcode_parse_list('\$0')")),
- 'email' => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uise' => "\$this->validate_email('\$1', '\$2')")),
- 'flash' => array('bbcode_id' => 11, 'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#uie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
+ 'code' => array('bbcode_id' => 8, 'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_code($match[1], $match[2]);
+ }
+ )),
+ 'quote' => array('bbcode_id' => 0, 'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_quote($match[0]);
+ }
+ )),
+ 'attachment' => array('bbcode_id' => 12, 'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_attachment($match[1], $match[2]);
+ }
+ )),
+ 'b' => array('bbcode_id' => 1, 'regexp' => array('#\[b\](.*?)\[/b\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_strong($match[1]);
+ }
+ )),
+ 'i' => array('bbcode_id' => 2, 'regexp' => array('#\[i\](.*?)\[/i\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_italic($match[1]);
+ }
+ )),
+ 'url' => array('bbcode_id' => 3, 'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiU' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->validate_url($match[2], ($match[3]) ? $match[3] : $match[4]);
+ }
+ )),
+ 'img' => array('bbcode_id' => 4, 'regexp' => array('#\[img\](.*)\[/img\]#uiU' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_img($match[1]);
+ }
+ )),
+ 'size' => array('bbcode_id' => 5, 'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_size($match[1], $match[2]);
+ }
+ )),
+ 'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_color($match[1], $match[2]);
+ }
+ )),
+ 'u' => array('bbcode_id' => 7, 'regexp' => array('#\[u\](.*?)\[/u\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_underline($match[1]);
+ }
+ )),
+ 'list' => array('bbcode_id' => 9, 'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_parse_list($match[0]);
+ }
+ )),
+ 'email' => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uis' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->validate_email($match[1], $match[2]);
+ }
+ )),
+ 'flash' => array('bbcode_id' => 11, 'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ui' => function ($match) use($bbcode_class)
+ {
+ return $bbcode_class->bbcode_flash($match[1], $match[2], $match[3]);
+ }
+ ))
);
// Zero the parsed items array
@@ -342,22 +403,23 @@ class bbcode_firstpass extends bbcode
if ($config['max_' . $this->mode . '_img_height'] || $config['max_' . $this->mode . '_img_width'])
{
- $stats = @getimagesize(htmlspecialchars_decode($in));
+ $imagesize = new \FastImageSize\FastImageSize();
+ $size_info = $imagesize->getImageSize(htmlspecialchars_decode($in));
- if ($stats === false)
+ if ($size_info === false)
{
$error = true;
$this->warn_msg[] = $user->lang['UNABLE_GET_IMAGE_SIZE'];
}
else
{
- if ($config['max_' . $this->mode . '_img_height'] && $config['max_' . $this->mode . '_img_height'] < $stats[1])
+ if ($config['max_' . $this->mode . '_img_height'] && $config['max_' . $this->mode . '_img_height'] < $size_info['height'])
{
$error = true;
$this->warn_msg[] = $user->lang('MAX_IMG_HEIGHT_EXCEEDED', (int) $config['max_' . $this->mode . '_img_height']);
}
- if ($config['max_' . $this->mode . '_img_width'] && $config['max_' . $this->mode . '_img_width'] < $stats[0])
+ if ($config['max_' . $this->mode . '_img_width'] && $config['max_' . $this->mode . '_img_width'] < $size_info['width'])
{
$error = true;
$this->warn_msg[] = $user->lang('MAX_IMG_WIDTH_EXCEEDED', (int) $config['max_' . $this->mode . '_img_width']);
@@ -746,7 +808,9 @@ class bbcode_firstpass extends bbcode
}
// To let the parser not catch tokens within quote_username quotes we encode them before we start this...
- $in = preg_replace('#quote=&quot;(.*?)&quot;\]#ie', "'quote=&quot;' . str_replace(array('[', ']', '\\\"'), array('&#91;', '&#93;', '\"'), '\$1') . '&quot;]'", $in);
+ $in = preg_replace_callback('#quote=&quot;(.*?)&quot;\]#i', function ($match) {
+ return 'quote=&quot;' . str_replace(array('[', ']', '\\\"'), array('&#91;', '&#93;', '\"'), $match[1]) . '&quot;]';
+ }, $in);
$tok = ']';
$out = '[';
@@ -1077,12 +1141,6 @@ class parse_message extends bbcode_firstpass
protected $plupload;
/**
- * The mimetype guesser object used for attachment mimetypes
- * @var \phpbb\mimetype\guesser
- */
- protected $mimetype_guesser;
-
- /**
* Init - give message here or manually
*/
function parse_message($message = '')
@@ -1097,7 +1155,7 @@ class parse_message extends bbcode_firstpass
*/
function parse($allow_bbcode, $allow_magic_url, $allow_smilies, $allow_img_bbcode = true, $allow_flash_bbcode = true, $allow_quote_bbcode = true, $allow_url_bbcode = true, $update_this_message = true, $mode = 'post')
{
- global $config, $db, $user, $phpbb_dispatcher;
+ global $config, $db, $user, $phpbb_dispatcher, $phpbb_container;
$this->mode = $mode;
@@ -1126,12 +1184,6 @@ class parse_message extends bbcode_firstpass
$this->decode_message();
}
- // Do some general 'cleanup' first before processing message,
- // e.g. remove excessive newlines(?), smilies(?)
- $match = array('#(script|about|applet|activex|chrome):#i');
- $replace = array("\\1&#058;");
- $this->message = preg_replace($match, $replace, trim($this->message));
-
// Store message length...
$message_length = ($mode == 'post') ? utf8_strlen($this->message) : utf8_strlen(preg_replace('#\[\/?[a-z\*\+\-]+(=[\S]+)?\]#ius', ' ', $this->message));
@@ -1204,56 +1256,29 @@ class parse_message extends bbcode_firstpass
return (!$update_this_message) ? $return_message : $this->warn_msg;
}
- // Prepare BBcode (just prepares some tags for better parsing)
- if ($allow_bbcode && strpos($this->message, '[') !== false)
- {
- $this->bbcode_init();
- $disallow = array('img', 'flash', 'quote', 'url');
- foreach ($disallow as $bool)
- {
- if (!${'allow_' . $bool . '_bbcode'})
- {
- $this->bbcodes[$bool]['disabled'] = true;
- }
- }
-
- $this->prepare_bbcodes();
- }
-
- // Parse smilies
- if ($allow_smilies)
- {
- $this->smilies($config['max_' . $mode . '_smilies']);
- }
+ // Get the parser
+ $parser = $phpbb_container->get('text_formatter.parser');
- $num_urls = 0;
+ // Set the parser's options
+ ($allow_bbcode) ? $parser->enable_bbcodes() : $parser->disable_bbcodes();
+ ($allow_magic_url) ? $parser->enable_magic_url() : $parser->disable_magic_url();
+ ($allow_smilies) ? $parser->enable_smilies() : $parser->disable_smilies();
+ ($allow_img_bbcode) ? $parser->enable_bbcode('img') : $parser->disable_bbcode('img');
+ ($allow_flash_bbcode) ? $parser->enable_bbcode('flash') : $parser->disable_bbcode('flash');
+ ($allow_quote_bbcode) ? $parser->enable_bbcode('quote') : $parser->disable_bbcode('quote');
+ ($allow_url_bbcode) ? $parser->enable_bbcode('url') : $parser->disable_bbcode('url');
- // Parse BBCode
- if ($allow_bbcode && strpos($this->message, '[') !== false)
- {
- $this->parse_bbcode();
- $num_urls += $this->parsed_items['url'];
- }
+ // Set some config values
+ $parser->set_vars(array(
+ 'max_font_size' => $config['max_' . $this->mode . '_font_size'],
+ 'max_img_height' => $config['max_' . $this->mode . '_img_height'],
+ 'max_img_width' => $config['max_' . $this->mode . '_img_width'],
+ 'max_smilies' => $config['max_' . $this->mode . '_smilies'],
+ 'max_urls' => $config['max_' . $this->mode . '_urls']
+ ));
- // Parse URL's
- if ($allow_magic_url)
- {
- $this->magic_url(generate_board_url());
-
- if ($config['max_' . $mode . '_urls'])
- {
- $num_urls += preg_match_all('#\<!-- ([lmwe]) --\>.*?\<!-- \1 --\>#', $this->message, $matches);
- }
- }
-
- // Check for out-of-bounds characters that are currently
- // not supported by utf8_bin in MySQL
- if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $this->message, $matches))
- {
- $character_list = implode('<br />', $matches[0]);
- $this->warn_msg[] = $user->lang('UNSUPPORTED_CHARACTERS_MESSAGE', $character_list);
- return $update_this_message ? $this->warn_msg : $return_message;
- }
+ // Parse this message
+ $this->message = $parser->parse(htmlspecialchars_decode($this->message, ENT_QUOTES));
// Remove quotes that are nested too deep
if ($config['max_quote_depth'] > 0)
@@ -1269,10 +1294,27 @@ class parse_message extends bbcode_firstpass
return (!$update_this_message) ? $return_message : $this->warn_msg;
}
- // Check number of links
- if ($config['max_' . $mode . '_urls'] && $num_urls > $config['max_' . $mode . '_urls'])
+ // Remove quotes that are nested too deep
+ if ($config['max_quote_depth'] > 0)
+ {
+ $this->message = $phpbb_container->get('text_formatter.utils')->remove_bbcode(
+ $this->message,
+ 'quote',
+ $config['max_quote_depth']
+ );
+ }
+
+ // Check for errors
+ $errors = $parser->get_errors();
+ if ($errors)
{
- $this->warn_msg[] = sprintf($user->lang['TOO_MANY_URLS'], $config['max_' . $mode . '_urls']);
+ foreach ($errors as $i => $args)
+ {
+ // Translate each error with $user->lang()
+ $errors[$i] = call_user_func_array(array($user, 'lang'), $args);
+ }
+ $this->warn_msg = array_merge($this->warn_msg, $errors);
+
return (!$update_this_message) ? $return_message : $this->warn_msg;
}
@@ -1292,7 +1334,7 @@ class parse_message extends bbcode_firstpass
*/
function format_display($allow_bbcode, $allow_magic_url, $allow_smilies, $update_this_message = true)
{
- global $phpbb_dispatcher;
+ global $phpbb_container, $phpbb_dispatcher;
// If false, then the parsed message get returned but internal message not processed.
if (!$update_this_message)
@@ -1324,26 +1366,25 @@ class parse_message extends bbcode_firstpass
$this->bbcode_uid = $uid;
unset($text, $uid);
- if ($this->message_status == 'plain')
+ // NOTE: message_status is unreliable for detecting unparsed text because some callers
+ // change $this->message without resetting $this->message_status to 'plain' so we
+ // inspect the message instead
+ //if ($this->message_status == 'plain')
+ if (!preg_match('/^<[rt][ >]/', $this->message))
{
// Force updating message - of course.
$this->parse($allow_bbcode, $allow_magic_url, $allow_smilies, $this->allow_img_bbcode, $this->allow_flash_bbcode, $this->allow_quote_bbcode, $this->allow_url_bbcode, true);
}
- // Replace naughty words such as farty pants
- $this->message = censor_text($this->message);
-
- // Parse BBcode
- if ($allow_bbcode)
+ // There's a bug when previewing a topic with no poll, because the empty title of the poll
+ // gets parsed but $this->message still ends up empty. This fixes it, until a proper fix is
+ // devised
+ if ($this->message === '')
{
- $this->bbcode_cache_init();
-
- // We are giving those parameters to be able to use the bbcode class on its own
- $this->bbcode_second_pass($this->message, $this->bbcode_uid);
+ $this->message = $phpbb_container->get('text_formatter.parser')->parse($this->message);
}
- $this->message = bbcode_nl2br($this->message);
- $this->message = smiley_text($this->message, !$allow_smilies);
+ $this->message = $phpbb_container->get('text_formatter.renderer')->render($this->message);
$text = $this->message;
$uid = $this->bbcode_uid;
@@ -1494,11 +1535,12 @@ class parse_message extends bbcode_firstpass
function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false)
{
global $config, $auth, $user, $phpbb_root_path, $phpEx, $db, $request;
+ global $phpbb_container;
$error = array();
$num_attachments = sizeof($this->attachment_data);
- $this->filename_data['filecomment'] = utf8_normalize_nfc(request_var('filecomment', '', true));
+ $this->filename_data['filecomment'] = $request->variable('filecomment', '', true);
$upload = $request->file($form_name);
$upload_file = (!empty($upload) && $upload['name'] !== 'none' && trim($upload['name']));
@@ -1506,7 +1548,7 @@ class parse_message extends bbcode_firstpass
$delete_file = (isset($_POST['delete_file'])) ? true : false;
// First of all adjust comments if changed
- $actual_comment_list = utf8_normalize_nfc(request_var('comment_list', array(''), true));
+ $actual_comment_list = $request->variable('comment_list', array(''), true);
foreach ($actual_comment_list as $comment_key => $comment)
{
@@ -1529,7 +1571,9 @@ class parse_message extends bbcode_firstpass
{
if ($num_attachments < $cfg['max_attachments'] || $auth->acl_get('a_') || $auth->acl_get('m_', $forum_id))
{
- $filedata = upload_attachment($form_name, $forum_id, false, '', $is_message);
+ /** @var \phpbb\attachment\manager $attachment_manager */
+ $attachment_manager = $phpbb_container->get('attachment.manager');
+ $filedata = $attachment_manager->upload($form_name, $forum_id, false, '', $is_message);
$error = $filedata['error'];
if ($filedata['post_attach'] && !sizeof($error))
@@ -1559,7 +1603,9 @@ class parse_message extends bbcode_firstpass
);
$this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data);
- $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
+ $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
+ return '[attachment='.($match[1] + 1).']' . $match[2] . '[/attachment]';
+ }, $this->message);
$this->filename_data['filecomment'] = '';
@@ -1592,11 +1638,14 @@ class parse_message extends bbcode_firstpass
{
include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
- $index = array_keys(request_var('delete_file', array(0 => 0)));
+ $index = array_keys($request->variable('delete_file', array(0 => 0)));
$index = (!empty($index)) ? $index[0] : false;
if ($index !== false && !empty($this->attachment_data[$index]))
{
+ /** @var \phpbb\attachment\manager $attachment_manager */
+ $attachment_manager = $phpbb_container->get('attachment.manager');
+
// delete selected attachment
if ($this->attachment_data[$index]['is_orphan'])
{
@@ -1611,11 +1660,11 @@ class parse_message extends bbcode_firstpass
if ($row)
{
- phpbb_unlink($row['physical_filename'], 'file');
+ $attachment_manager->unlink($row['physical_filename'], 'file');
if ($row['thumbnail'])
{
- phpbb_unlink($row['physical_filename'], 'thumbnail');
+ $attachment_manager->unlink($row['physical_filename'], 'thumbnail');
}
$db->sql_query('DELETE FROM ' . ATTACHMENTS_TABLE . ' WHERE attach_id = ' . (int) $this->attachment_data[$index]['attach_id']);
@@ -1623,11 +1672,13 @@ class parse_message extends bbcode_firstpass
}
else
{
- delete_attachments('attach', array(intval($this->attachment_data[$index]['attach_id'])));
+ $attachment_manager->delete('attach', $this->attachment_data[$index]['attach_id']);
}
unset($this->attachment_data[$index]);
- $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "(\\1 == \$index) ? '' : ((\\1 > \$index) ? '[attachment=' . (\\1 - 1) . ']\\2[/attachment]' : '\\0')", $this->message);
+ $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) use($index) {
+ return ($match[1] == $index) ? '' : (($match[1] > $index) ? '[attachment=' . ($match[1] - 1) . ']' . $match[2] . '[/attachment]' : $match[0]);
+ }, $this->message);
// Reindex Array
$this->attachment_data = array_values($this->attachment_data);
@@ -1641,7 +1692,9 @@ class parse_message extends bbcode_firstpass
{
if ($num_attachments < $cfg['max_attachments'] || $auth->acl_gets('m_', 'a_', $forum_id))
{
- $filedata = upload_attachment($form_name, $forum_id, false, '', $is_message, false, $this->mimetype_guesser, $this->plupload);
+ /** @var \phpbb\attachment\manager $attachment_manager */
+ $attachment_manager = $phpbb_container->get('attachment.manager');
+ $filedata = $attachment_manager->upload($form_name, $forum_id, false, '', $is_message);
$error = array_merge($error, $filedata['error']);
if (!sizeof($error))
@@ -1671,7 +1724,9 @@ class parse_message extends bbcode_firstpass
);
$this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data);
- $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
+ $this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
+ return '[attachment=' . ($match[1] + 1) . ']' . $match[2] . '[/attachment]';
+ }, $this->message);
$this->filename_data['filecomment'] = '';
if (isset($this->plupload) && $this->plupload->is_active())
@@ -1718,7 +1773,7 @@ class parse_message extends bbcode_firstpass
global $user, $db, $phpbb_root_path, $phpEx, $config;
global $request;
- $this->filename_data['filecomment'] = utf8_normalize_nfc(request_var('filecomment', '', true));
+ $this->filename_data['filecomment'] = $request->variable('filecomment', '', true);
$attachment_data = $request->variable('attachment_data', array(0 => array('' => '')), true, \phpbb\request\request_interface::POST);
$this->attachment_data = array();
@@ -1807,24 +1862,22 @@ class parse_message extends bbcode_firstpass
$poll_max_options = $poll['poll_max_options'];
- // Parse Poll Option text ;)
+ // Parse Poll Option text
$tmp_message = $this->message;
- $this->message = $poll['poll_option_text'];
- $bbcode_bitfield = $this->bbcode_bitfield;
- $poll['poll_option_text'] = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false, 'poll');
+ $poll['poll_options'] = explode("\n", trim($poll['poll_option_text']));
+ $poll['poll_options_size'] = sizeof($poll['poll_options']);
- $bbcode_bitfield = base64_encode(base64_decode($bbcode_bitfield) | base64_decode($this->bbcode_bitfield));
- $this->message = $tmp_message;
+ foreach ($poll['poll_options'] as &$poll_option)
+ {
+ $this->message = $poll_option;
+ $poll_option = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false, 'poll');
+ }
+ unset($poll_option);
+ $poll['poll_option_text'] = implode("\n", $poll['poll_options']);
// Parse Poll Title
- $tmp_message = $this->message;
$this->message = $poll['poll_title'];
- $this->bbcode_bitfield = $bbcode_bitfield;
-
- $poll['poll_options'] = explode("\n", trim($poll['poll_option_text']));
- $poll['poll_options_size'] = sizeof($poll['poll_options']);
-
if (!$poll['poll_title'] && $poll['poll_options_size'])
{
$this->warn_msg[] = $user->lang['NO_POLL_TITLE'];
@@ -1842,10 +1895,6 @@ class parse_message extends bbcode_firstpass
}
}
- $this->bbcode_bitfield = base64_encode(base64_decode($bbcode_bitfield) | base64_decode($this->bbcode_bitfield));
- $this->message = $tmp_message;
- unset($tmp_message);
-
if (sizeof($poll['poll_options']) == 1)
{
$this->warn_msg[] = $user->lang['TOO_FEW_POLL_OPTIONS'];
@@ -1860,6 +1909,8 @@ class parse_message extends bbcode_firstpass
}
$poll['poll_max_options'] = ($poll['poll_max_options'] < 1) ? 1 : (($poll['poll_max_options'] > $config['max_poll_options']) ? $config['max_poll_options'] : $poll['poll_max_options']);
+
+ $this->message = $tmp_message;
}
/**
@@ -1870,6 +1921,19 @@ class parse_message extends bbcode_firstpass
*/
public function remove_nested_quotes($max_depth)
{
+ global $phpbb_container;
+
+ if (preg_match('#^<[rt][ >]#', $this->message))
+ {
+ $this->message = $phpbb_container->get('text_formatter.utils')->remove_bbcode(
+ $this->message,
+ 'quote',
+ $max_depth
+ );
+
+ return;
+ }
+
// Capture all [quote] and [/quote] tags
preg_match_all('(\\[/?quote(?:=&quot;(.*?)&quot;)?:' . $this->bbcode_uid . '\\])', $this->message, $matches, PREG_OFFSET_CAPTURE);
@@ -1919,18 +1983,6 @@ class parse_message extends bbcode_firstpass
}
/**
- * Setter function for passing the mimetype_guesser object
- *
- * @param \phpbb\mimetype\guesser $mimetype_guesser The mimetype_guesser object
- *
- * @return null
- */
- public function set_mimetype_guesser(\phpbb\mimetype\guesser $mimetype_guesser)
- {
- $this->mimetype_guesser = $mimetype_guesser;
- }
-
- /**
* Function to perform custom bbcode validation by extensions
* can be used in bbcode_init() to assign regexp replacement
* Example: 'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->validate_bbcode_by_extension('\$1')")
+W pYK:K"n+a;T2i7ڧ(τw%,dOeWEnx`oEreZy^BzHcAQ.ѓLeFLĬ>i 7Ovf$Nu-2!s4{0#k4TMXiёZgj=2M> Xbpo@}(#`DH^_ f_ \ubi9(R`u(])]OP~! GƳũqGkd-jMωPkD3p*;9,tJQQץUh`%)*Qyhc2%.u:ٯg}ۼϖy]DYLpfwO7oUkB$*DJ2p* jeOzFPzY1gRqj@ G'wcn&L<<-(8Ub=Wr~/|W<_x tZ\KLIH񗞕j*#|NYZ/PS2]cMr? ŵ-dq?>P'H$gk7哽{4h^0"b G<F qAn_v1\oz|LW@JRsz넬Ud 1ݬTV?' r]GZ#.VO g(x+4lޱM/E1`֒Kߝ*FyM%QZO ;l*Fmc'!ߤȁa8ai7Άp"{ m, H BBǤp_&1O,ǭ)Q8A5~wE.AR%XV!廙(Шm-PK#8%yt @i!Cdiˢ7'nI!NXF5{_u6֝&ϐCpҙ I+բGg6\Z݇ J U2@ħ¬Y\$]JaQpht3a=ɏmȇO\(<7"W2 ]+qV=<*s5oY֎zPaK+/Y%Ty~a:{sh(ZC';iY:[9tPhŸ=rh} ,D)*Q/fϕ(_ .ǴU pF7=rMRz)̓6¶B7LZq 8|]>rC&j>fϑֲe1岷 0;d(VcVFy]e䴑@gիꛥo[?tY-;5VWl𐧵+yo6J1z_Dz}hoG?7e m<¸! av`uq~n wD,B'64츏=-y*ȹ²w6]LLiKx JI@ܰpvM3:,z.C8i 0aK>;~(e4-Z FV'+@ 3B}_.(Iy;n:;~ e wIؤh#21*2YXU$V~t!%zv@G_68-&0,|VaTpsS'$UQ tȊ cλ:E%t}nqȄK[64ݯҤ!}~~~Aw.|\AHC`K;.|4z1pk5g6xhui3ne":XvQKwcANB4ёKWH?Cho/Qw'qr*_ZTJ=_rseYsAٽNx2&YDl"}&iy2UFo7#D†8ח>z. Wm4a %{7nBtB&t6qSïTFc͞=,$rP-?Nwxq+C' cB/1xo7HE~H#",PmP!' L x" Ee?P{ QJj+ߵu30SA0IY3,i-dp-6Vz|N_m ,Q9fЩ}N؝#OFWZ}G󋬨,xOwFQC4/N?gw*)<Ʀ#u҂ƛph@sEnq"3rJD<B^ѵ̣Ǻ5FԃF9xsțx$%Dv2Jj:J]N?t>NZ9JwDƼ[+ wW(o̿ykِ>va5W h5djsW ? ̐&s5Q́ԒgahT%DbptY;0|EwZ}j7"n0@Cz\%,M9BR{F<#L],N 1\ u#;پvyq^ɈN`3*ϟJg  jfJS=«t)`[HyH%!e."(S "PHty8A '+w30{_ϘxMǐY)@e{hNL?+[M4nUķA%QW#-1IcP -Y䎜H$\&L{]Oc!\<_7;6ӌ'-ljЕCJjb67CddS4I\3# LFw* @:XO.ds6`Uxm"eXb),UZD蒏:wq*Оq `AYjq1ݟ/؀>V Lhԅ%o} ɮhqҨW{j_M-/x@lmMu{BSڙ k|DcXcfbgck.W l{@w- 6 xL1Elcl}S wJϐ)%ƛ2n}QHoWuV0ɼ}pxBVbH`"{yGGdcH32%Qi HKE( ogIGxG RMve̓:ОA'xA/;7S%?4A^~o e+q?n;cEٟؾwT{ʂb+PM4OB\݃;{tヹr|ɰHZvlT<r iS k2W!_7oI}n䦫|>:)I.3gB_sr &BzU4@LL2bWBzaP7ݩ" $OձkN6+8^̦j煀192E$T [<(Z+Bp87+Lbۇgod\zě_ FX'm(  ځ @?Yng˟ BN+ ^yBыY?WG+5Y(m}X۸ԆZeNq}e:i {6״6@n V d{QOU8cx*=d&v΁586( e>a M6 {zF F m٧ yJ:4afy{L) $7mWa[Zч`|mfv%AtNd?q8[I{xT7(;6mcpY^!OLB(|8cI BH#)UЗԉCQnr2^[~3^Oq7`ƨqY86r"OzfJt2X ]!vT`, z aPH%I|H1[i73%]2ՙgJ5t.KU;՟dƪT×H<~(D2s6Qve'"%+çlirY7-|Qg7JXu\`.x/甔N?`%֊kOoŗR@"0IT0`߇Di砱&׳Y)oY1'nWeCC(56C.kL 'n+~T[] &( f<ޯb!ZPXީ;,ar/0zU `3y :xe\fBγ; ׌hKF 3Ml.RQJ1͛Á%zAU>_]MZTQHi)Ai@chHZvm1dRi(Y[՟3?_a\$}'rSh z􉓜Z٤P3"]pKeBV JZ[w}}l )|a\v =7 _5 y 2\qzo4VRZhD,^'5 mڡl:x,ŗFIpBfx4&evJ'3kYxߠyܺϳ Oy9>U1e(xD  'X*aZT߻a=E34-S4 0eRx2+"PĭE@AZHCV0[$MePw*:( <"S=ԦL\&N _%˂)mBdmßT"PLQ̶=w5\ft0s ^,~y\N&C~}IL} -Gv͈Ɔڪt݁–Cl JIwk]~o=ek٤e0$? 6e#P#_7jpDL0hEKg0<^?3FėEEC7WFzp:^!Y4ZEbl^ nءmы"l#%%7Q/_ 5*"ΰ;GcƼᇛ"0YnlE$ @*p|fed c=l}8_ϕK䉹/oHVsAPThN\3%W*!"W`0 n.ǖ NM)}ǢL.]IKgzYls`5MG֯ ˴xfGRjPw\ATׅ #eCr kPG2w@$txC>ۣq #ܦΩYzRuZNچxL-, sˡOT?I7|z m1vfC\"/暍ƞV6{?1ޟɁ2#I%%׀^0 #PVSuu $5|%;B,ԉ,a䏖gF oǙ֊ݢuD&PPy .K}Ӗitq(R[+Eۼ ʿ;d@.g3i|toBz׫rNAGo,*"&-[|Oٞ.$ƥYOmN'nsdo3.!me&w }C X$ZEFyhB=Rxl#o&AXpyD8 hey9d _yFza蕵Bpc{ 0p|46jZAVӽܔi }+s (<e{&Y Y8z%aCw٭z,Z)hԨN ;ncop7YpԹbSCV{,Y* <Ba}~G+q6Y̚z1ygP6:է`Eg A9GԈf7Zq% ц~\|Ftߛ`6Ԥ}gJ,W:Ýp/<'@à0M7k-??AHa4en33FI n[:06?nhBS@#"rhȆ{B>Wrcɞp3LQQmx0vKkRS|Zע' !Ci pθDedɧs$t>M;DF$jiLCz'0 A _{*c{ x `7 rB_*14C_%1Xv" @gIɂjg>%D# ΩF,)ٶR6L< »DPԧEۏJ[4U\m"D]2 7 82Lc]+2[H{*IAv&xP2Tn}AWsl`';uq ais7Ts\[0`Noμ)m,9Vg HE&;Y4=\H}F&mҺ 6uR}\06{;/C ZXED=`AInL5&(]A @}HRxR¼ _D`E&e[x&}8Eﳂ'GgΥXY͊=V ݃9G}?֌{c7??s!o0F%B}& V2PK|M9ꕧeڤ %qNu_ MrZ+גaF'!sًܯ~ˣ؊S$4kbSr '<vB5Grmt׎.\y>) İ.I5C  gkk}Ӫ߮ԓʣ9v ~>E7^Z}(|aBi{Qp-=9c`K ]\=W9yLV~"MW8? q"{.pKhO S o"ajv) Lёʪa )L2:w`qX# }X)0,4mHVI)'Rbr"Rc%j(Qeۉbo}M~dg̩]MDBH'=eNq{~7dGH%΃vrC 8&nޫ{/67. ԌMA,;5d -rSZҼ4{Gs&&\6/EF`hm(EhlwyA>=Hq&w~B"P1bg(*7YdKnt/Ɯm82cIW<ÍV]?iҨ3N1:^G7uZb%{&z9 P6a#ЉQÑ < wṷ @!R[ qaľ ", ZGVS~^tٛ+ʮ0äg @ vg+7AB. %ľI.3\pA)܃@JK:3Olx!A4=x iW=wL hAX~G&Δp"x.$!6YΩb56 vKS5CCSz)Ӽ8aJ|.@l ɖccYa&ʢs|ɌEzſ,8؟*mtS( c(ވ@`Aeo&? ;PYig+X6?x7B}Љyx6:Bɂ6Hc(1 a#|9'Zoá}d%P419t\t^1 '|YT矞J(=+;²؅UEj.ӲZ>ȝ*+f'7O>XΎiNJX#Q;GB[hL')l(\)0bn ȎRsiH[mq$yRq *TIO5|&Q 8(mz)]pz#X۸ބOu."֑#]2rBj=,C(`2unE0`@X[?iRҧPfvW1h7"|GtM|8Qj|$r0c3hǼ.85ͫ&X"gqmCײW.WY(W er~H?$^Z0X;oU/s(֧ ,JHsal<!S?%-'ǮQB=^h4C aA .KX*t燩<)V]\RU Rev"ESuٟT<|B b]V`B~h-UGCܨ]Y suBg{{W C6u'!^d/ mH||^^_؏-n<,Svd]@Z0d{j1( >w%KN" <&_^p:Ut2DX4qoP߶7QOh[/HKJnR` {p|xol|2e!7ul>,J5q=U(7%wIdƈgiξRELJ!M6uh^86VTe/S--s.HsƱ5wD{CrX7kq@%1nq܊soy'09[jXTJ^.ϐL[ TG C21pL o tZ[qo[Sѐm^&01'.,H. %<*K(!G ^bp&?HX+Z߀^V'k4Z?ŭjX=|“V[ф<(lQ ʔ)c*+ ;bҭaHb3O \ۯdO3Bs!|j /$I ΂fdTzDbgl`K 8jup隋ĹWl^BH#>~Km~EHqEYyL6.zQ6o%f*t?s3~՛iZlʐURxǻZNA>@&3/kv!vNwA%HmIYbܛ]{\u%Wk+F;K`89yߥ4l IGkgErι:(eԩiĢL'x/ U{={3;˽)z\j̴ 迉;(/tqL[JvtMLȖ1BL% R7㈪>jh灰{-Sz_;Y)S['-]5Yt ebz%/Uo,4KW9l d?}I͇zY-LɉPNL'h\1 ΒƲ0416kX3e=ֿG8]1;Ȼ]!&PC?L6ޮ(i 9E&$b Tȧ|jP4cw@ͅ*$k:ӐFއfGIa|]pr" Ua0ƼU:"쟞x4`Aǃ&% `頸/k6D^Hf7h){\"9v]J] C.yE#s6=,Bn 3v|9Tg JHUdbj^G53WW[pm+.0 >8WӀk9}߫GѷjNKi:GvQ#\!Rg^ʦg`}%t0K*ᾗ^gR O2r!9{>jHʇS9K>L ۶,x4h ]T%"􎏜GZ_\9ʖ󜩐MuM;_#V6"wkz^&3/.hd{Y ~i9w+ս&;az'@3< * i1s3MU^6(ӿKM@Ո|rvSk0AD@MgYĺ-d&S<4p){<(x-9gdФ*5J/&VNۓ<]6EVf&M,[+4`muCxT Fݲyܱ`^4+\bQfwuVڇ s!e|gC56,ўϏ_O\OG)!S#?ns֊AN%2m}˃ "T;iIE`/Xs%ԇQ #~h\hDe㽎@7cb5r>w@d1c]Jrhc|q}2Eŋ:HLnt?Cg-7H(gJ+ RIhnY|M|RߊGqQ7 (MWH3g>a^m 00|U<?J0 S:fdD-BGb X|cWxK($4~'[l7iDRb BR?@ imނȈToY9̘NA!';>!D3 Hlc =L u9Vlu ITJi(_[?etqPb @K˙(zn/NBʐJND;B ?í!䏜x'M6N0B|1W~ kG_L'B'4+.p,n1{Vl~Q ('|߇ "raDQb+OsnUC!fFH{@+BO;K80A;c6S9JBX/rQ1bQH^Z?÷;" /}xNlc>Jn !|YBUfM ȳ02F"Se_v'UHʨꍳr!),Gǐ}/fXT1h f">Ƞ۔R+ .+6_*wj3] VߵcΤ,1Bo6qDNr-[PKbSИJv0w s76|PGi̊EZP x܌ϫ+y2z"⣿ 򏡶* {5XЉិ~)lE6}Ƣp1߉] d褺ID_oa9<'k9ORKgǗ""85$$1MP˱ؖGͧ5M?p Sz6Q5Q c欺{$u![|94h^(eN6es ǢA43X@8@at%'r[w|DXFE`6'=~aq!,.wߓBsjZPwvB#xJ4_`IąC'e[qòzgn&dY%I!9CsPI: ==6TC?=(ylq++9T(?|akZna~1 _gPp#491/BVQ*/4Rs%"^bM4e>-' iZ[aa?:,6ė27MUh_@!k_ٓ1ewXV g*ry1!TlSlhpqlUt+apd-mZy PWퟔe$a.yOi}OqB z} giW13bRBϧ!0'S*̃uJ2Eܶ D놔gWD״ (5ЍO3ĨwEw"qc::Kbٵ$V]A%Sc6^ OSHIu+պ'd/䊂U*sc0A}'8\*땸uk@1'2D2šBoJFJLOڄ xGLKO$,c A2Cyȟac.op2h7q0־ny2<9aׁߕl# d;$[,blL~n8#t "3["uL_N/s`8?RBI>k,4 HӐh^y ]qMyI_c@t B~ $|/f b',{hU#"z? Ӯ|Q/FF |7[rj/[O.F=SUo;.F8nUqTWX`-tfwaSWB||`q5|LH> Ks/7>~}:RA:vcl3U zAO|F!s5BD n/0a|%,8U}>nW7V71d_M-~V @%6Dtm29b@e:_N{Kj[:%g<@8 A !$_76!lt^rQq/֏I50#ݚw>2v=5%ذ+*uZ ޽v>7gxNZEM QSzis\΄4b,Y'l7CMS鈓h_ϧwQ=@0v_u<eX{H<V 8*]pɔusk0{`#y7E>N}sj]7oP 籶z fjzG6[[EtE~r2@^ˍ{ a;kH۷o~P(m.hSLf5>ģUWl{Kp{I?J3èf]ri]h^>o!iw!?B IF@9PU5ӱ22s"B5;L t)h`;[4B9X0)EhvC3% d:/ k-Hql/أbLgD:T$g{,ǿxԇYZ<񕟠JtYN-`y*ʗbӞ J78i>%~j }h>ʢ(C91Kړz ײjnxfNT&#Kn ƀίmúMN8I&)UB^lkaye5rm9_%D7U.OߏL#iǕP +٢Qc>ԃ –Ͽ_"t YKo_6"<8Q2jgܝ%kKj& ԙ 1t VCZ<@{41(9PBQX|qo7#"QTm)"hMlcW&GvH>}>k~@0PC\_ [M5y-?]2tHxQRnX=.>~e۫> ٠&h[43UL@*%9N.(=3}tpUxX\~-@ ]5ٯ mJk*̘JBփ/0v#CF6 ?) 5_~{i$%BAl(q Ѽf(O:,}-\s];uN؈?(qR dRfhAb@K Hz6 ®3u葳 5"S˅!FŜCV^@nqMI#aXKXY-FChVC \R{̀)twd4J\KIꎉx N;R ^&'ܥa .p2ye O͹Go>'3PSF"Y 'ѕ5}$|NK IN:+˺Ɲ{#M>ުr'p8p7R_8K&qȁl!@!! )r#CjN27'Y[>Tz;tU$ {Wje%C9"20 qAx̄'d` ѢJ|;#͉kg(.Vv0*3jnqcHQ"G6%d8$U͡[r HS<֑%YoK)K{浏W˯M1HF-wFUP*EF(Y2{pդ~lNnX6sIC\RRk;bH3}akXedm@8ĸ&OV&r'qV<hWl+tl{J_}&D"DF5a]ir՟ZqAV lr_,#TF6YК6uF!g*l9l~-+(}nq&Wv@hR`ӘTZ`U%]b:gyzWߚ哏̈ /]PN]II~SA `}?? gmnkerВ5pxi֥ؖ2Zuڙ+W7=tBekH RHwX%J35L 3U2""^?]ri)􆗓d:2> v@hd{R6 &}Nž">8׬D'} M&j=\My ,]b1+o{|LCS%8o}:cUՕOKj^ޕ]K8xui_XfӲn՘ q{ FCD}'^~7v(z}]*ecdY CCJ#Ef5In#nq6N0g;L8B`7׍N؋Y0 Jjmd6FbV=h(y C>3ǵЕJ-s z)ih{>#ot]lӿޫ'?!+MM,FvJ !Vͣ!Z? 9AFN{ِ)0Sd840(-Yȫ8Оkh,)=}OЫrۿg DgPzLM'~#Z5 FЗz)T$EX>PQ/#T%Kvs.flk3R@/IPcsIeI\1a 9nW?ob{k\ay:]]n^\ I˪}>Ypb{..FdeIveW;4͆¦ )h:V`>9dv^,AP Q ui "E1̓B,ϑ̦}œ}5z@Q8W/=?7M"{ZyzZ{Obھ\tq*7ݟ"Yk{7R`_(c=ˏx\Lӳx&/@v.bGR N`A_CC|K5}W^X\1 uP4R>^˾QL$14ylX*]G>'yyRISՖg>[[Kԑ2.o#޹=7 axE.Qc=6Σ"C1mYK ZYrSV* N7qRInMPZ9 cW 7Eo v\2 SDE1.Gy썳c;/[z hҢ4Yj{_pt>e1Ԕ$;lϾ-^y /:ڵ~Ik'ͽ_aCjVA(h>MU0 Кlkhj԰݈HB\ O&o%HZ8;`#Õ"em |~&}lNv|GXA p [%o$<%Y߇q-_& uug Y*:qߍ9/.!s,!:2~ H|JؼS"j֢t5k#ey$ecAA*M c]MASD~ ó XV%mOR'^Ʋf!8n CI)F|n) R<ůpr:>iJѥp@O`y1W@ . o _ 3\ڌW 纷(¥qoR^|.v]?9bĽql@iF/Ϝ!;6yrlgC1& )H=VuW6dέb¼)wlA$ӮnQ08Mf?o^TcoxVjg; hѷ3FtXdd)^-T # 15&P׭G?.;I3 dVS&}OC[vO Fst1ҕӗ=P./xCfŴP5ɪ2ՈdU4LN 9b8w "!T=/*4C)q¾PWytPrbAu4-nD.bWGɰBAU38iN%|D3"E jBܶ=zs; hв׌ݝ6Kp61؊VG!m~fii!ݾ @/y,%T676HHAWI13 5MwT$map';jZs>KZX/6J8}y*C"'!"Zz$ 'Iq="cE`:%jUac^^>5\W^tB;p RRw㬃 8)'&q2 DVg:T@#)j Kl-*9Õ,IgjkA%ʎs-.&)}7>zk.d78ıUnWJ rih~s8g{,%=rɥxDKXAVýZgv7ԭ.@CCQ7٣EE0JJow&tS:Gx jDR*wb+&Jx/`l}[e_H~w,8י <]^0Fn_ -; 1'DW-l~p=ڲiܙWaF^Zovƒ+A<4ixN W g_Crz%2WfKIɔ]-xjLhUwԔۇM=N/[}^d~.ۤf2d|mR`gӁzoԄ2Iu׋ JCۘ(4XV!a~z%u9ImG4}lj,؝Jp,/9xh4Ex2 1Â."@FR NgrLoժ> Xya&,lw@͠W]Ko-WD[x+kP? wdw,=31Qka2"bF .p$^Wp, ma _̦\bX7~O6it+'FJh7T}Aaq6֥jM7kc@֏κl;>'1ΟM뵶 ͬ7wJ')SZ1xw#;x*W)5؟FcS97N::;-׶ρ3Hwp6/ˠ#e@;?W]D] (uV")$yQ1(l@e-Z v{/-uuǁ̓:0]Z]4ǥ?"}a${TBb5'xb8 4r\{PPj(PdDW'ظQJwW]dڮ.%wN%%F?(lZG\_Y6m =g[I" "HTDM\t>MUR@p i2} px8)>Ӏl'P~u0yu#*ϣ 3;Q"/"=pa#@b¼<$a RTqd~ߥ)ږGGƠ8#jgWǩ6*m+. bޣǟ5/8KPQUo2~62n:b  /aK=szv\S h39BLQDԱKV2TOtD27`8OUHgAOEE4bE6, ܲnS@ԱNb;bx f uWp"$qw!Yvt'9AE$=RvnץjqX!Wġ@2:~jv1XZ2uQ\Mp#R:IA[ %mk^g2 -3^gEeS`B % " "h'd%a!(&!/±p.-+7~Ic&lorEzL#+D. n:WM#7"ɒqʛ{tc΢1D@4r` ?Kˇ= qxn$tڢ/N6}%щ9{s;o^hϗFmj? PhEi@ݵqNp$?ߦp4W| 1"NJJMwPݎbWs9G'Lh pM D޷Pv%kCtc.4qȅx~}gL xƻ)iW`K$Ϟ14­y kQ$ZZG;5SW %w`]Nӊ[QhAw$?ZiT$fY> OBA}<4|l:T`F)xa#xf0nHT&4Q|dg4A{V_tںFm s")ߦҥ~]: ي\ɻWݒ'($⺰ (d*o2GQGj7IPJv>{/U A8f$A=*R>Pӏ9<\0F0xjp'_gG6#YPj?kߌZ :`23[ 7s2:qeZ'4@׏Mƭ9c1sz/O.XFDlEYPeT]w)ۍs9y; (`vPe['yoSe]JR+c諽&nh!:K'le@/ E%,EXm(. ox<YxvMCL>!6n6?ovS~F-VuՏ:D^ &sE⩖H0'R+X?3_C(;/Wwqn{Ϻ4 ]-Dr|=sW3! GԷ,Qm,Zs9(q$ ̖y~~=OL D~P/_jI6. X,Fhk*_m)0GaSC\DG.Ca$ W:mnU* r[[qZ8H~ R9gI :?’My6>s5qq5izW&utz`B: ҳ4LH) 2i2%ܾ v__͈:ڡ\eX {S,hkgO :o7\{rUɎ4Ry~ƢN 䟄L05^@J ʣM# + vYI] LEf)ǂ[_ @݂),yY%?Y]Sk3ΡgF[Qg5<д 8eªj&n0E  yH5ݛtf.{d3E6Vi&vOk[kןˆ\ '(PVXU֍Y''IMN0d3e*3gxNOB(Dg䙗Ks .QXJmr`9]if0WnB2>e$h~ jg;^_ez)tU;FU]yҘ{AvƆ^agL]5 9#kO4 (Ѕ\[#،g{-qv G{sչ`-L$1`=׏fj\3jcnv:[L\S7d+Cȹcg~Aiehg:4As|r#^@S 鯫;8pVC%A&uy؛AL<Ka54 f3Y~4gU)JB2G7=j0q>q 'zSLOηFλ]8Wa}w5ҩzNƈ>B=8]ni;(>$}C=*N(,d2 *uܕ]ّ?3eM"$RB "v[6o]bLZ}~9o-`gn-1"ΓOjBL%\Xt;Sx#? ` l(^g<ևp8@4G]S{tuZ0*9UcV|EcvW]  X=̂FjQqV^i: Q59EKwRC3׽Tŀn zpT%7惏fY5<81 [U%s@8xdxюbn2GpI@6.yƹpc\jPmɪnW|4< Xɦ7?ȍ5z Pힳ l,´K8m#j2坢!-{e/]b7Z!0:^Gd-OKÓŸF2ze b;ᨍ~c*Zi<IzLu-0[Y2H;k~;é}[H v1(0Z> F?7 ToJ-O N)VhqQ nmhnOh*WGL>OgO'-;O u8R]*>\K6r§?0E1+l!9riLכw7OD&rUgsf[r2UOY3X+49Q ~2I;i)-^ILLLf{~̨X``a7Bwn;H `vmH&V.#ߚ0`RjiTCO؎1uR)LԸ*(˓1#ePۦ#zR{7UnR2#}[)bqKj pVZ_D+LV7?"Emw'#| IMDF1FȳW#? \~=of3'wNֲMG `NRL6 Xk{GEL <)l3ہsUBL:`5 'X'P,cqo&kGeSs mk]MV7=ފ+%;-P$yM(&-x N|| P,}$$B ia*LbYf) =ƀg4~GR᪲::h@n1@iCHzGz 8to%bkY_ $%Yi _W蟬]3-fߙ`kǾ M B#sn yri9 jNH[ۜsrƩjHcybpSC:sl(UPdj)Wp/Tnn''[ՔS?,X$DR^l[HnW&&G7)UC4FnMAYmaQc*$:hJs''$Q){D=p~)4¹C1>~fl,`En[=10x--7έb&qQhxr}uOVZM˰4iS4e-y pP—[fnňE%X`EgJ'&f%dVSjgDz9lQdG:odA$7Tv s40dyWSP K&ъQ1}cD;a `hS"XmWF@7,Zl9t"m& .DD WOpiVޓ9D>b8`TIgT-ֵawH.vfzL19/C/>w&Ucb'_G r0GL,(/tR p2IWIN "8͖wمwG>08_ߘ25T:fVb*Wdmhr!vd- lRufG\͍=Υ 'M_XDGbnҶiɅ*w>Ӻs0˱py P+-؁x/ɿrYA2u3NϗPݡd&-2I,D[N ֲVЍDΡ'tUSd0t ɘga1ZՏL(t>A*"WxHg9=}LR͎Ü\me+Z-h1e H T*˃п2 9 AD#) NMKi>E޵pu.EٷF7ˎq*gKfۖL -V9"Tw-@?{F!_8*/! 8j1fg8\5V%|VZE7!EQO+mUV(v zPRB0q NW|S0pB2ۢ j |?TڤF<sQ>ZVs|*loyJ=vH+o[כOĘ.INvSYp ϻTU{V; J+:SU)'`g|>|;Ljs.l5biBdrѹT n(È͖| C8BR^<˭ PZЭ@ bәs%!WGKȖ@ku ;XgHQ>oVaNR59+ŖQMbL{p TSԃ]OPDv)W}~=EgĚmأ}|c#M4PҍdD=fFW9pT@xo6M{PHoCNTEjmC`yݶđfH8~@o&ܓjz~㐶\oȋ72 ܌fk+e_co;6(lA/f@k}dzU1 0v_ -f 9cJ.hȡA%ԟ4H;dߧU?M4ݛ`lPȁq$j.bR!5NwZ'#Lm[l˨Yd `{! 1Y(53^'Tu'09 ґ3pmaB-+u)o_Kt1\)1'q $eh>Ϡ?x|fq(ʰBa% l2z#ptO݄8]cM* b_ㄉ$8UVS;v mKs^ѦCpG#@%*h(co6/Ч]0=sJU}`Uk_%[ת=q 7yVi`䒧 =7Y-ISxEU0f'U^ sBk0<5sK3ްrO~x7CPB0h$T_,X 2==4Xw&2|ET;Ёghm(Co!NFvXG_ BpfJSQ ]H^-59۠N*3UWۃƱ LJf?Ӛҭ1~efu_+v8ƑAK!JY-P.v^p* l|Ĵ qx;݆KPk=9 'OyVf[8cܔ&Pk.G[.h3yZX._R= EE OP 8dfQ-Ov~ly Ic|[INU_n9n9Q3i9Bg ur] cwN`4Ŏ A\O &'/U@^[ʭ{F3]=݂xr3۩gxQ]=ѕC| Xڠxgwpqؾiq:ƧQj~ FDX?=BȪzFdWDY.C-Fm:uLA Cgլk") N~힎| Iw,nm۳S,dg(%xlseoRV+c?3Iŧݯi1ɡan åNqݟLV>P[}_{ML))K=ʲO`:qyP+,L< Q+4]Aj>߭@1 @\֫HB86;mPwTzz8 )P%0X;8vTSʷgx"o ҷrsm_g_ J@֮iZadqRXle|z*[zߒElѸSP}'_fF~">n^vP:yMW/K}(MiMl&fUƕo1*ᠥ"z*ebIL}* /kGh9@}{)Ǿ̵e%)sU&:nUCwHZvj__vs[N[/V3㍔&6%mGp'q\b?cn*!۵ϊaP݉nla]*-7HL}*L9M,$,tn(1]t_ ֤1l "Q4Rql *aWKOӜ*p79.%5bM7ΐt$|7R0M4yVAD@`9yE2xڱ#j=~޷/uɈ|OCxB2>HiѽyȘ|{ ZC0|LGc h -ر@w-af !4^8αE.6'!ʉ#K]dxaËfWE|Rߏ6u faf@q~e#prI3lJ{ qjo8 =v?$%(?WNDUw ۛ>'S͋0mqcdEEpTȜJX%'BA&KӨF@lt&_ YO  2!W!~X2ƞ"5k[J";z (=uȿ"{{7 91?u cBjne.ǫ? :!ԁcQzOPvi  c ϋXy&v/wo@#n+;CEǫS>e zsZKh- K?s4YYϟ Vs]D.XK4o Q*⋂_vŹQYgR,>!R엮Q:@g!zB-gkUi+ n\[*z^Rf`A&l,K@~]$p>B( qqW 囘DZlu<䅒jf#7 I)` *jj!Fc֐hv$yoO$b!ՅeJngPVjPꨙi)coouczvo ?yK|⫈Eϗg )l 2 X"4251 k~lz)"]65lN9^os `G#}pDvmaƄ~C+#FxtApF56dq.?XbDV Y!Zp9x8e,-o'դEzh0(7GK% ঞd[.0wSfPWD">uGTLM>Gt:BW"Q^~`q"1#`.$mv9eZdg_6;2 dFfvP0%=d .\jG4l`Ƌk~KQh)-~Se`GbX fxފ J03!'ڥ'irtH_ r]TaJUFGk_bW(sλӅ˰@)mԳniҊHsWFWdY)FI(n7i h0/xǝf YEtMLc9RtfPY:BpcHjĤ;ʞR3qh+ OBr:KS-݂T%RVXnn  Fl nLXTUg;'7#hanag\gDڹ= n{L<.[t \ZU\ݑ! 1Ik}+"?K Z;zN?{/]ip|$]~U"(eC  +˱5(iALeYqp䦯"voJ N֝5( ":xOy?M1$ r๮ r=oo?E xR IA+!~z%!S| jR"%/c-s$~c@?)2S6?FIYeX` pH1$y$ڗ%t4IG[tI mHH-xb8p)cV}t+1%*(L>rq~B]@'uJWo5I!{JɆn//avB8 bԖ[ʾ8qϜɮH13l]Ydsk$DPFO&!CNovNZy)}X)*L>%(ݡaDgEH"N!:A-IU;TCzrEX^p5~zi #Jc=P?PkLyb|T0bz%Z)PpslpDp>by;[ <^T4.U.X&nvɩΘx(~"cA)׆ bL:V_;W|H4PN젪Tc: ԃ;c52#=ZW&,b]\5aCR[gʶA6{ɰޔH r/ơUFJUݽo 7TBIϿZw= GU[ =J@-V3?c 1Gz+WD[fdtܖ#"# C gkPdP =ɛ ?QeUG/svjJ8kP:' Lq 5 '_@3!"%ssy#RmxDƚ=| ﺞ-IwYuG+K*@eh.-~!V^ZUm7PsZ z RF8Y1ӾDTcfayhA4@d$j9}+D|K |<4_fLœoBdGCF8_Os}_,@ni+ X#_2P_6M1mA#jWX#r+* YX4@|dnQ60W^KdmzېKBkb6I/+B}n >jZeYYѽ"wRT%Updr,RltI~8PU:nXX <.lms}>SLdf7cˬ>@_H? ( S(y9XWCMZ^lbyM25`cR׽F mJ

zYz;͒@kVf`w؞TC9y3f ``jizSZTB&7, 23*\nL INfXET߰!87yvYFw@ i^OςF ,~KrۑRr03iC#Ț׍p7".僄A_n9t#z&%e*鐤#uo2&%痉ժrQ/g#Tmu jU2頭PWr\LH ;E˓#8:#˵DIy趡G"h? 3>rLv<ŞmXkج!N ~ 0V5H:J {p{#'0lq*KfXi:TJ}KKA"s !k JF}q-$B[ߗ'qs6&:/;¢5.o/qhmnR es825rrhY.lDgԹlز^b .C"OM"B?$9!Cr D_9t¶ 6o!YO^c'`62}EAEx~FOߴ~iM{F9,oOT\hmXԌZ!kym<MpQ0|); nZE@8mCnj']^U;*rUb~E8Z6*1ܥu~N? Gl6PX ̉ ּ:ῇsU%d Se~3m>xq"E( Mܴ23!}qW1;nͽZV-T&2We|кq,zZ-&9V_]1^sYM8w91+V`u*ihrOR:l*ǯٟ0lBcS81}Wݖ;yr̔G//LP+rFI U*sJC7PxYL(𹔷zY)S!i taj#~K4-z$$Wřqh[ua ōl 1MT/O7ZBm3 LKѐ EFp6+v<-o#OdaB݉qqsZ7~0?jwG\ѹV)-˘IIi•.9Phޯ e1fda׀_q<^Vsl452 Khf4)9 }3S@U/az^$vb{?SgVnNPz)ffd ( ?zZYaۀsF4x@ y@է_L_U5nO2楊367O;.N~A XAffک\L$ 6Y"ӏ%vfv9N%r_qrt8 bk7mo@ґ&$.|Kcǰxf?@IW DC{?G?^3i]K}K`.5! qטoR@(N8V~_q“#QN-[d—VvЭ%yQ_h6.֊r eޟߢiv2 ‡"GT ^N)'.S̷<\ Qyu\{޲/Y$}ω0%`wT;>plfìܮYR[@ɬ|OerށLDHYEޗvs&TPBA&-uj'!{Jk;R'%Fa[`LJ0`MN6Q],^-) teBP i/4}ϽwSeI%_+io- g$\Lkd^@V"ܹ-)r%OaW>6[2'x؍vLP PuA@M15:bF`v|Cg7r@Mk52e o4ͭtzy5ؒl"38!- ^ C,BI<@jnR_`Y ai:(tb/Wa6홝sƠWW80xFZ6JvswƩ;/d9et<t:doUK: ~h0؝ycH8b۔]_sb#:6V2'^u!6 %eFYE_ۮȪuU{fEb(cj)Ɣ^VRJ؊+P0úDU-T'!Za|ܥ۷94eqAݫ`5-8|և{#ގӊbMK3b 3 %k;eʠ $kɖFsYg1!=`Lc{-fnA٧,m;x02>̛t!7[hU~y #rx/݊ށ$5AU%0a`\ccYTpf\sPK- ` Mp``6Iҭ`)2]epX8g! S5ڽz2>#| gdĒo+\i/x4yGMBx \޲elȔMxrłpgV۞)MI0FQBE gP<yUY1U)+uSKHsd8Y=a+ rjXN q0؍xr܈ >s1{Tz5oj{PKilhU= d6'7r%6p.y &CMK^85=``X\ݨ=8dwu37#}[hMQeICJ#ouzVDHt b!iPMb$%W ,goM形6;R*̚z[ )k^?3 }<&n9yQ݆L?t]AZfVZ 2N9cd-Q1jlӛU?`崡B鑆DWкbNLoza:.N?S, cK41(FH쏡p:DɠeX푘i,4VϽ hKyoUW@_uX>}Ud.0pJp&ia]vt*d;Bl oY}5C`?7@[}&ˇU/f ғhrgmp 9Cj_ж w;zH! +7qh/ؿd({|NT y*o-cB [V%mts󊆄*\m3㬳 y[5)jAW}oQEkkEbTNy87xtnP>M'ƫU{?QKC,c} QݐTVEBaѷ5`i\ʁXEU2zݍ{Mi Hm99i2|A;3fd@3NMr1;bg_?N= 54mZSfyNYrD$^n 'TQ u4)ODmRUj*# GhϦ$1T0ٛq9gƋ U XcRzLŃ_i^68%V@C XbS}{p-?*DU{bmHD38]YryY4WMj`h'i֙ 3F)hKQz9 :{?Q:fm3W-9Hb+5lgEƋac$ՙLN=+)BF逝,6]ut27]ˍpuyng(f 4{XsōĪ8pw>.lG8'P"\:$|r"Msg_J^S/xG x6m3u!ėf0O %$Z,s"ډf q:RTן Hʟ-GKԷYYQx50 N86N+ALjAJ0NvF rC<ß|&G.OU?8Sht25M@0?J:tC V(WCsZVXƑ/kƊd (hz_0Wm vu]]}9!T*C55>M??ut@k$O^WuZ-pн(öPKů:8m&C(:}Xo&PfäN/С_GZtޥXRw5vO>;x̨q3_:O tnSi0`pǵEz; a9ZB3";fϏ:Jz:;s*h49a{I&`nnź|5g\H<;ybΫZ5졉\icժ#@1AP݄9|Cwtm_fH u:* Zfq;mq/D`;tyk_a78p_4 > &-Y66 9Au>с41{}xP?"!Sa@jOvYtFYYZ?úogt.;Lݹ5 Г? E\ zсǘ MP֬ q#kGzLpZ 5::È_}׊>o™ )o{80!)zJe`߯U6}u ǁ>ȕ|9PnvI­vJ7 6CV;* `;.6!7ܫ(̐Xhznj.8#NPۛe-ȑ\. &%iÎg ZԨˠQ2B'VaXou9EUR4D;]m#ZpU4@I~op=(zt .$j Q4eXnWw4'j?tH#Cv``izSDG%WmXhN:≲'K-Uߥ&q5:F]TTWGqygO!v>;?L-PoC^憓,]eژ$6w?÷\ޣyW0cԁPzasmGp 65plzɊTӁi!^d;HSVZkւŧE*݊ZC{j-'鄺dR]y}EQHz913U@+#r@_5K5h8g)AkbU[|E@ܣ?qHqѭbTSa^9uUIt~5Z{+z!S1;)޴ά9 Z_A~M ]dLP^vu DGV뛱"HZK+ol9 HmGW@IwN ulf~' aЋ G(Ӱ0nQX|t) Rs;#ݻhS۝nbj+yh'%: -Oa ^T6bsAa@6n5!.} l,lq6_߈TyHƿ( :xN:l/ I¹9y!Ѻw!g {m=p=VG~cf|k j9v?Ϛ~j8%W Fʱ+2|@0>/@H1CL_ ETG_@ jK;E7)KT>i.j RЯ  :/iP29 u(CUv븛Dwg|MO?leD;/Un^4Sߧ7X\0n|#004 &)i>WL|^HD lz{*bQ r@cd#@;UUzn _5cZ'uC3sM/I~蟼ӆRNVu Ēa*BP-nt|k"H ҍ]o._NKTQI@{h̡3WlG%<QȖ&|SҷrX(cA$V˅ި empB=0qS'řu&>J ]<ԘxP-em0/HO\h/ҀpI^Lt^ڂa(]׫r99ߙ敡>Ke]36Zj9 < 0F\yt GJw_1 k[~5ʪH=VwX utR8Kc1bz5VXR"cr'X1KpKIӑuk i AZ PݟD?g=6 nR>/]|,:PH4l gBlEMd4"`I6a;֎Z"@I.,篶j)83슟F7%4otZ&%1ޟI7weJ강,~ܤ[p^o3N?O`4 Qa2XDoF6ϟ@@MB75m.>` 4e~?L8P;b@%o/%ֆvλ51 h:<$Հ.854Lk>7Uk%VM ?Z3eU聢͆#_q+69jބR̜U5lywZXqW)y^YvvO 9w]疱jz)3$faX|]>uĸ0I;jAg /u)1X9+ Hr>eZ^R=&Zpxlz9ʻ uv D:*ZSȡl>l󄫞ﬧGC%eRWAl\'Űj7h_Ќ]e{uX 'yͲ bL&& KIa U|~<#z_ij!ub@􊖆qqCGm#[ZuL&dŚ%'vU/08eyUnP -}x:++ ӝvLZ0h?hԾ_ MH)(0Ȋus&V+eFٌoXK[EAV!ۦm+f [KPxɍ1uO#,H& G F :XD!(c_VO*~Ɨ(Ee)PxlK{FpkqvRA`as }ˣ+M=n uFS<=8xhD~l5M"TD˸1 @R|]wԋDEbHy:]0+RUxbw͈g'[]R /\KA{J+Q^MF\إ33P R 2<*3O$&3&&`5%RA b#\3kkE]yھGQEQ଼vG "rZZ6Q~hEfMj#}A)tr[V,࢑%ϥnY1 9P.}D3d_+׋@w|S|XPPX6jLG{4?q?üx a|rL-)m,J-e) I)tJƃv(Nmo\_Sy8QE[i& Q o8ZVn^˜0(#zS ~8gttЊi|3EZeq/͝ZEw} )-FaUh7" 1 'g=z#ș;1ŨŪɆ2KnYXV7e]a9ƺP6/`{HJۆGL@q*B*j~AlDl1=@1v,`P MfSО;K>asBf^z_|>ʋoglnPzgc6>;nZk\ư,V~5%r7%:[WYP߀SЇ脽l9W0GF K0 )}B9=ұkMu&Uyr Tnv {#!*$ky^nqN r8bPdC4Z-;4vШ>-EN5>rZ~!=!GĽTaUXWxя!VB?^U6 0Fyڈ"ehԎ Gr4Ie}-%$NLݐxS\rzguDoǤF34l|&~Н/;0fT߻q6`ͽEU>冴QgphzLX-⏩&zasZ=. e,/ۧx|j oв![}nSSDw趗u$At-k2h wٱ ni޲Qu0,@TY'ɗ 2/FNW0%>/ §׎i͔P'[(kP}!WK`z%x\6bNX(rPEGLtv^[2TsjaE5/4s"ֆ" N Ǿk}Uʑԇdqt EKؘP~:W(#UW*b ktY#;iBKf5b}٤]󤏸iǮnA.l߀i&$96txcdbt:S٤aoҸYȨLoƆJ'!Q8ڽ-{0M ťn'~mZ7XB3WT\="-o1DӱӱNњgc#{#7/<գvqG 'D}p0QFN9Hx,Gr\NaWNZgT@1"JX;vi <<\ !GOnna\L)gL/9MDh󱡽txXg4OfS_oߊޛTCrlG`tGPʯ=ϓ]~SnخoX﬩" PnT _zފRHDq& -=/4}(vvO&IE,EJ&hiW0nQAX=^Mf\p0O>`lq~> q7\!nBeop}~`M=y?,@Qڋ}JIrb4٩^-{h(S9_o9mȠsYj`+)K b p,Gh#v\=,Ni=j+p4?j 9Q۵g6T-k\$ϛ"` WfyY|N'PXenf ̌мp ֒˶t҉.qw:yZN%!)%X~$Ԫ֑Epe}aTE i4}"9l5K+!ܻe.őբ*"c¾wҙe?ozGIkaڗ }%+ h7 m'Ô (4ه!+.xx:Z?S}cRaҨEv Jr-2G_ ";ɁmlN*?aX(Z~ d3+^JLj #9k^5qwF0ʚ'Twl){. ba!8%vgiOujM ;)愝S;7lU4] ܨ豲,]gtaHc4o)q:BRk2n![̩QN/Q^[?3OgăZT%ͥF8 )!fSqI۪,=ų;RZXH\bIukZ饿E;#l9$X9HQ˔s_@Z5;ӓcɂ&+7F9SMi%W-BR5?E.YL _gS;,\w.bQŶ'%b(cr,xB"۠~W:;JP !ոXH\=ZT~8 f8DPVU5wN]PS7<͖2ɾёDH);oLX*FWQ_mPFnT~ff0$4WTE 65t 6nY ^C"G&HH08HH-iM,u!ї7RMRFNcZ Rij\7mbdZi )5 yC)Gோih)-}d^4 R? dVې^*N;Y/c6rmE8%?tZ^wcUǪuv~$'tWU3c2@lQ wj)c<2isE> ZS??jB J/|z gf]8wWnKݩyB,},s}UŘ/5zb>B@ ?i᭰Sľ9רQ,neT0M(3.̪S؎^M7o0ZY0͹o;Ѭ{:Q|XxEk$8u !l>j|zzgK=8pA3dqi.),8ׅKۦԡ`-tC \J@*XwzeS]CڻKt #Et]f?Xhk8ou֦Fި>i/e7U@p:O+,E:3Xt.zDU |۽ ҰGwmђ6 ZHtM `>v굋ǤIZq5*c'@ Qn*jF'@c&-t${#f6*''sgꖷ5<}0]U6S(w(WΌ}@Ň62X`EbFe#O4St&?3_J! EhuFGL7t]dϮT*H 7n5b@_Xg9by?x8~DVK}*(kt*4v1mqa7xljp_Iʪ'd(Av |gY5ѕ콓;XJQ$ gg2ZW%ylvGCzß'QVtT8:@6m}wH|988P%Ĉ6.m2F )߉E4p(x[&,3>O >1OY!&@Kت6 Ka;N1T :d1cJG~JvXG֖cĸ 8"r_JƲ9v;Lљ['Wqr:ڂќln18 7wI7R Ґhl<:+J5L#f:5R;|lZ  v^IZqghְa:Fw /c%a6!vznFIϤx"(_jڳ=ުx/DAP?^^I,s$Y012b9_v>lɠQA]q)/hqI\=ޡI7Fdw=3V!L}Κmũ-)Ghm#AX)g?y\љ/z mB8#ڨg~iC.gZWXJXI-{mcnk}1!J^WG;_Fw _ȷ?FŷOi5Kp8Xɉؓ&nRcto\`zV,o35v$?$qi&aK瘹# ?Co22%uޢڞI0D[{:Ek~L"KU'p0ݱyh<<Ab 5`f6n?E1A2;!%pu|3iSB}A#2aN|Y3zDyښLIؠ z wΠ~ȔZX؁;H_iS3U3ȴs]IpM1:M􈜏wGß|IGY21 ?_Qf>B:"'F6DB[ x"URq/>M{uMAFɕ% .Gk?;ļ`i{W-9ogIHJ%A^"*70rpYrqQ^ <>w6"V8h!Ve-`ﰽ6y%GUmI|zj:tiJV;O,m!eۍ*^a['zQr9w'w]fc ޒ4<N&)V)W>߉Ω4 O5f)z!aV*uja2MRBȠMa.@ym`\!={艦lKKM;rSS0bEH 77ZUYЉQF4b3`&NI/ A=>ؕ<.9WQ ,;|QaUPX} %L{drߵ_RC&YZ'DX)#}>2AyDT7f=F%38}S0[reLjTT[n_& Y>r7ծw$$ ; —k] g5BjS8bC)щV$ +73>u<> *и!{dpR-EVS<>a=q`)S bvi%C!x4oT3v;on&zӂ1~.y9,O=rOmTy5b8mtVUVF㶘;9:҈ĎP%W@qj,ߜ/ʤ#µ2E3>5g¯; SM>^?^~սko߭YWQ(uʐ( 6m]w Ό,Tm[6\aEuAШ"ᦂ;Χ??ޑgisZ?wbR:stEsҾoլ&T\nP_GSX#S7i^A^tlVklFk,>Y'-R@HO r a08 R~v x`[[Q7nS 3D|Z,P) [w5.m&ɦꘔMHr³cSٮ󑹡rDF{0ZrOT+r~ĶT]یTw /8Nݯ&\-*'Vv-Wln\(w|v!b&FTJ_ߠG' _/pAߥq 2у:m:Țri"uS4"=>`嵋[ qث^L3B(SgXg1lKv՘^ߦ9 N]%} -ݛ ![)_46uaz:MZ45.6Ǚ{Eb6{D |tdOܛ~S/ZПuub*:C)$N{AI+Hr3 N&!E :27$fe+pM?DB=CS<]/?f~؎+ce_=m#I5߯XA{k2TX4$C$oE77.qIƂ>Y%'U$zKA>?:㒰Q@K ,2.F7U[X|,H!(n+[It`#Sn:HŬSmMwhnj .8it-̈́592H؟zG$= 7V\*~ Fi'p޵).^hc>Qw0G׏vD@S)Yj?&>KNshk&.K|0|0S &]0dπ@ RE-f0&v6J ed\溛0LQz⼥^W~x>]=avZ?)_Ryc<5uq%:+J$ C pT9q-=I^Nrs6ianI!A4]o^vgO(FPMCHmdgþ[!_WR䌆{]&?Szf7D:i&ur}{bH.pjL `9jhKRڭ)")sR=HA)z'ɱk2gl}DT G+ |Ǜ@DwO-FN8Bv&s*g0B` E0:0.QЃbo:޼0dL[՝_u(T߆@KSGЄ|Rw$))T$QծBR8M^ɾo㮄ad曻,SAaje ti:X ̪ 4й$}uDUY>X]L@ űv{@Bumn`ާBQ2#s0MUT/ƀ'O3§o(!`f\HȌt$r4{r0l; u_Pc xvؾwo=qTFU W|5z K1VX*=e})aN2SôC ̚z)Z 5l/4t-tnL@nǽtsh%m02bW 19 -"_WoӾIc2nxTU OVMafi6~vBjZ꓾',ܹ"fSUYY`"iv'T&9_vpܕo+6 VLT:Nz@K#+P#=Vn߅00lZƜ^}%&AŶ]V{LCbUW!s-'6g@3Z#wY=s(llYu7DshZ*IgpR&2^HJ* 1^o+ʤH@"4CEFqF1T:bMKKgXj!ID#:A~ =I UJ!THZ@ mxy0zpG5wY8q!:?Px,!%0/*BǓ4sVR/q|*$-t0Ӟq6qA; lHƟ&s|A|{H잆 mHeѨ'1F'O}{ j5PFr&p)f9\ b|TAyy7m`8wc:=xa]lː݂A6 +n&6g3 +ix!Q9˩zxlkC~[jMv'O3h4ak zBzS ^[ ȇP_WsɅR2 =wO_k!ΡzYZt)+ !]MeYT 3hMߪX;ǂäzٌu&$|rЂFͳB ]^I>PϨ!W9]7o&g~ZԣJ}w ,} \t27楴\zT{ߵPl}:w>my/l[@vhfri؆ֳ 79ro٥:a8 N~&fڬ!Bzv^đՎj++ yKZ "qPcqM=e4MqF*Lr5Ѹ%?Ne+tkG^\ړDS;]R 2҆3넳(m6d E.H;v\s1́`^ AZ(15/᪼Kן'}&L0cTldCKq;$0yʉz)/JqAG7&Bq~bJ@}_uq-:Mt(EiB8Ge ߺ j~׺cC|]&SCt RS$=P}JnD**g"HrG#晱⻡d`[W 6&-M?/> \qZ/ 8FˑGq`}hС2PP! W8ڇ<D 0\O*mH}KuY{aSv;Mdo'$Dk +R BV9kkSq}ɍ: X&EA=,'ɿw76^6ߛI> GS6 ̑Y Spٽ*U j3-uC.amx(A mۂmHe@n=sg` 6o5Og:ZV!\ %WlmF7|9Kٰ ө\X[iۆ@3Baڋ/,F"\:~z}7woa8Ojnc+ߧ{%vdLZ'7Ӫ}%t !Zȉ-<3$!*lƿP_y&Ddr9(O MλA>1hD+sTy e GclPqcA$T>m aiXPdN+׵*l1öko>ǿlp_"&/<XgX/lHLQG`1ë{vn^ kRD^ZPE* qQC  2]q{cy;_5[B<A7OgvIsShY tu~xhc5EBF=QW17ֱC1i,{=A!8D!Bfꔔ<`?ɋDSۇ!h԰,djR kA~?(f+ސj{*%rvbNJM`Sc|]y0-e[l%\K=el ! M'2 j~w|pSx=peMog`Qnܹbx!?$qgm3ewaX?~مZ*1g"|d=2GQ-oUNiau_|`+u= M#3hQ|AkcR*|:M9}IAa3Z&>XF`ޛ ?)|C [7>$ ]ШQa)H,6 iN uHEɶxٜJ b-NCw:';Uӱ6f AD .pۻuZr$D;ugHh |y ;ޚ<~vNe[]:0vd*|[ÆЖGq]*n'{HG@ b1#j6Lzda~y8̓Ikcp;HXWt i{Hg?G Y p[n'wڒPZ=gӽonyg> oZҶZpTVCqы#@`~4t{MhfHQ{n_"siquۢ_bHG/-0`+*SҵŦ=13v˷MC¢YmB|XTp.kǐtDa|_bq3_QRVƋf0]5G+i䟄[b*$c `_/C%dnmneC t,>`%pƴrخ~DD]A1R< =jT1OsWm>,٥^:}[r@){'}h)&MN?B1~VAQU¼+OzCTu ۡwb:Tl\l';+e8X/m죛a(,e&YdZEA| =0v_^0Ѫ&){ `"lY3&;ϒ9FXOp1m_̙BK# +Ǯܕޅve"9pe zc*x1Cq\=HFTlgVa,rr b#<@6/ ex1YpB#\W+%}WNH*־ z}Z[vAZ @W)/:Ct^{4 )tgz :*d Cm2S , 7J#5ILCyaL-CV1 ɻ_+."䵗 G,|F:[=0;\5BF!$4BWZ ]d_pkd܁H&NSQx0ë/pJKv"¼vC5] HXIo[ ޽<3_Uq(VǦ5*$3& UVΉ;"#Im?Pz8Y#C?PYfMOݹ -\Qܧ#o)wn,$nF(Wi&8:3GnaY!%S}BKQ;2‰c_HdK>-g58U/F!ȄHY>73 q$m$R}0>wcmL>NB ruMI*O|&hT8Ԝ>,a uWYԑ? u$znюjHzggi@̱<6Zs$Gxӭq2cA3+R;Lav_)|JzQUh,!j0R ˇh5ʷK@!Qy,X@q8 Ϋ2vJT`ZNJs|ЉZO&|ˡ"Π_{Ϣ;"sm?Q[L?5qaRkߙ LQyH,lѡFrU]SF+j;̅IܥVfww'x&ݴȉKTO.>:4OZ*|C"9W _HVUt";U"+M{XH` +gӗGЍ#uJuj*Et!39ZXJH^%<ҴJЏ֕Qŋ5_ZN]x,Qpw?? !/af.< EרGzsڶ>RY/AۑORi~46DLbO o-6a Y8 b=_$զ#/ٛ}0BMdd0i!fzڻlJ?'}freA.xZ{tz P /o`64 .xc$.ɖzhYX%:m/o,hQklQ5E+ZKwW ?S‘^FJ{O;(KER3Ւ-_F(q:U7kkLA/hI#6Ot. ā6nY۔((]g4E*],D<Jv.KF@U7(`7 ]^m+*@+W]Oo61ڗE2`4r헭 1ߋKۮ BQUhZ8hU󼝸 7oQqd[GDT ؋:a\f<&qT%2jn"ak0/y<#*e18L0e&Pwƃ8+oW"Uӂm\"G^8 x%S+N|C)L! _~sZ8Nfmk}ԭ"–}wz-1_. \sXPxzirn?Y={Sދ1+n(;m0ũTcLaf}J򜰏 sKOb{tXy7)&hpm.<5sRu{b"qRahPܳc#Kh?YI5B=`A=s,]i(׃͚EF͔Zj Fۚÿ쿈/ 4nRuzřP*|_O2l>6ΗV2ͱw.Z`9:Jﴴm5T_Z$MwEP,U3"<|T<+]x8=`IC`Oe^lF?#Sݟ4-SwpjT9hy"g`Xf)n4!!DcLr0*aK Wu_fd-BS#L9ŐR+xi>-%g"نAeڐ >uvExl毰*M5d0kz}4r_ɯ;'綠l \Ff"f"f*G֕mm{Ne4O)!d`;3Ap*;\;Bw P${ihl| q2VѤTN|@ON<8jCNi!ϣyzugYin?g ť]$J ۽[~EUлҸVR'IWincmFmuZ~61! 0o/h9VХgiD1t 9XI[Fv ^ 5{ժ6 c:.&@<}N3|v8:3AfY/z.N%DW*2._Nl"@&9 4V}u)g0O,o=A2*7jPQs0y|o~0^?L۵DPJH`$#ZO >?Prjo:Hbͱro]T=>j4$a%Ȧr)ۺ]3h Q H1*(,YKS ,BV%~\E`G֒eD?;+fBAdFTykcnqer329u̐?~ *dEJq /GavK\JO9#aY'!5DɃH3iR39-$淚}=p5 凊ϡ?KIܖeή\_f2 7k/oU[U">\vn#er]Tر{}D_JK^ܖ{`VsmrF7OZgPȏtz #s t[[8nx}#\ߞĶB<2X>ETxf`)6tC'h7 rΗ#_Ѳݯc:>d-s~#&Rܨ^RYFUJ2dto`wTsL_HdwYp@ cCc~Nc>:HD &) sؐhm*ؔ:kjBwzIEH~lCQPG@&"A `WÐ esr\q ,,FQ}ЦC GGAS[Lwe1t,<_@kK]Z>3emWb>[ HFx+i:geI'x:ST?S]Zy)֟HH]p31ǭZv(ݠns!Skd&F?K;ˮ[D*,{얳#:1v\J.l},d'Slh.1`uK]Moрt?K:K8cOub{dvlAEL7K,vC[K鎃!})ɊM䝣dK8= XgP:Ԇ||rDjh*S'-LWb%ϸx=Y-SKZ9A?~;ōВz8GlsP';tH/w]5~oiWOeOڔתy2PHyF󳄤abL0ftfqDROgb h&i[<KQ{|= 3`-Ru_IuI8XOނ"Єq3ȷN6JםBB :R%pfÙK:Nj1¤aB GTxI|A_h+qRxWs4Zx:*2w䲑@Ne\<܎ y Kf8(Ww.I`!YtzA#>牰[ZGRj&g۱ h(9XQtؔo\jBz׏ iAJh ]o7 |8Uù4vD9%x%ڻxFp8:Y;<7jG ֐}'!'Mကe]̕ګku%z$Z_Y1#VP]_Q1S*8R0ggb2ڍU mBUh,8FusrvF h +#?F?^@B=_~@q`V$-HUz%9?\GjХn$QVWG߁ɊE1@Fm>@F5=I-ڶeޭ8㖙>1zw= 2_ހ# O=)`W?Hl޿eF[w&삅@$JPe~&LV` -7v2I~pz28RP4eKчܦl>, H>">fڄكꭍD2w'>+aU mS㺼9O .0 BJg`39JIzPߨ̀:,vBrUH@a;4 BC DɚuTX8m9>W?(g)\UܼA]~Im۩b&<Oba2%:/S6?5<lfb?g%jdJ1>[Ni *nocFBJW#ž ζD~xqtE*אIM5t ω >@63u:mPtu&ӈ9/HjwUٓU.><*r_F p KDDNR~׺;UTtNGő?}$]3E1֐co 3.d%EA|֘{/@㚀vnqoYG?0# (eVvk2nq_ݎdd"U|ɕc0^`^P$((wAR<i0X[6zP6˦n ##>oڲ4P'tc}QKN[G:jœ>N^[8I1;i+cOmH듢[\hkiR8z}뽕gZtjV]OkPNF'9c19Y7}$9%o74 be0erbr]gH}BaXf,ir?`DԝVQ\@o =~1ATC?/AORzS{,@rt?(Zch@tz`5-RtC ~@e$עUU\17q|}6sdzRV1;.3wR'\ bgzKzRxSk Bȩ '*`OvUנ}{P1; \qժ GŻs0'|<tWGe 2!̻*Z?fF.ˮ W=ݐgɧU5Xȉhcx SI ;kApB¢>u(if\-zB uzݔŴ [*7p3\.eja!lHP՞wL]&sIEow5۹".:;U{>=)+-ߛ);t4΍.%=:v4t0zwȿJ>CFrJ ;JMB,k?]*߷]Y^ۥW sPx^C]rMn$鰝+Ek: M} ^lPߺ# H9xrk,<Q!~C$+iT  9U \6zj]c ^/_ƴq4oj#zL[cڔpJ O%4;8ƣ~6K1 ~v1-{*)>7ǫ?V._@,1*":fyeN(lM8'󈟙QfͺDTPnw;KMr&#b>4$F K!o!ja*M Y9?UyFڱ_ة8mefTnˑJ/ʉg^o E4Ys8~DQ!ku.. W5Rf6nِ1%&06=%~HHݐJ^N2G5agvgxb9fc^P7남nc\u+uU۶#3X L"4ԪasEU>>-Cx@ 8jȎnF5kfb#2\nB!;?Irb^[yګs8zītGwYu{N^3 P~4)SK[ ^k'R'#L4m~K 5vAd-FڃKiQJg尸#b IGL=%-q)ݼ mM"T>J4XEgY60ҙl"=~t`sc-u:}[=wﰖ[B *ƼCp&+H["&+߲$__rmZMA*DyFf'RVaYG'AX韄hT[!Y芪`"Dh|m 0;棵C>+D 11F 6!98]O%S9vK+ۢL[R.MDW_,කx# GK6!t" fcE #<(\"aE>%>0 a ~BZmǨ\JQЉ%߱hG SUU$H>]3;*"r[!ȭ`GugkVML#ݡgݩ4ZnY)]1e:;]$Ve_WTՎTZSn1ҩ܈%FJmݦj_m 4CLM붥 bd`s@$=!VB^y~+7} q(F\Y[ʓv j 2Qgdbqt&%R uɉX$OH< ANEN }i=뚃z-C~hsxɣE]BË<^LQIbj:/,ay7Y3Qe>ȏdpO2I*V "Ɵe)f.TS'iL T+80,1k "xN1Ln#o륟{bt*}QyV ;&I"\ H@D{ RQ9i1G^J5zo |8E} Rq`*,k+潭68}D&cш ;ԒF~ |ekxᢠ&|~FV{?iF푧ŧIN|M-b}.v~}oWT#2p4 5z,|FF⦱grD{|&b,`$gUoo@7DHЩlN ھ/Qh5ttr$k *u8QK %94X<26T6l  d:]7R<.|,}CZ2:eTvLnJgWє`LL ^R"6>?)3,~0Cw8'c6pB@N,񨝪cy&s'u̴laX]!u^6|Edۅp؎ӥ.IS2d9 Zy:==So3{crYz~m:\ 5Te魠$Y+UHQg0#I BmljUWij0#WLgPWpq{KZ!$]LO &^̵&wihKh d]qb14Ï-+Fk(@ jjh"2K(K]I@Z\*歍q;7>41 ,vxy| M \ u+⠟3h"& T?DOYh|+NH|Ȧ8EܸE^4BùcktرAvE `"v+DO6.AUIJ@QU`/$ I{ `iW،Su n-C-wwo@`&Lqq'y0@-7t88c㑬c6k٪"n ~z}<[5 O4hU<9Mh׉L]$D {B,Ksa)g7֋W}?lL`|hաCZHIt?N@ ={doL4Ic&c0mq SiɐJ | uwt =y@t^x)4އ[#va%?'GZ.Nr\d0uр /]24ʶ+,jfMJGE ۺ,pbeuE2sI1: ]Ŋ"нTbyyQ7 = > ]G&|'O {/ݴv y09?iJV{,D"W/ܱ0粄*SGRzl`g(F%[U2Te!E 3+zi7]奔Vllʜѕ Xҳ]M "0ΥxIs'Ja"}{)DY",W 1w@g*bHS20^w|+ICĕˆcƧ};M~@>r '0*`WmcW& S+88R wVN2!r'(FPV/9xY}QU+i=;D"Ϳk!헋NעX6 , YHG >$ϼdzpH2eK?)V` Oz?/uj r)nHm:1aB`+M8%¶ım+]jus#3j0üWUΝ!4C+V:` }:FˡgrJ],t DP$75lJ0xq'A:C?ebb>Pn޵0gH .JvnƄgft!ЋY:4!bJ=0󚁠Xi@ \4_"~tͽ"l#NwW((D+ZwM+\p?lkǩ83`{*ӌvtIhc[۫6֌-YIzI^ߒY<4ǫ+ |ݍ zX +ƥqªgmn xBD ՟bN%nƫZMir~-bJ;8BA}϶a脉f6ײʰ$2LK$qYG;lRV)TV #"R; v~g4orPs "iɝqEw$7Kb-o:~?V/}oAƹ nd8RQdtJ+%2=I+wU?/MKl2u䋧p5ӢXzmbV:+XdWմaBoLs,Ӯf#/3!O:1ط^[7B.Wڅ&%=h RAbou.2u૾XwahE'FQYE:<;Qƭ0W.j5MO.$[0(ϛ}~w!A7?UXýͤSʡ6YxdIa<}jT2X{tgCr _vBvRmIix❼[_:]# !(nRNvqlϕݷ9us*Tѥr#i.KDq,Ƨd=:z϶2sq1[O0XgE9DSOͰ${ר7๪ڙ"l!^$<=|1WZRU%jG `BLO, C1$N >u/8O'twιf񵏼d L#.m{f^:ka^i/Q"&ݦFp Guk< ducdܣ=jwP֌2 `,uFjX+~;> ܘSE %זuA?p6}#7 p0M6E~r0VBp_\\/^VPVH7;B]71mb:`\\dmboQ$N*5 s{6rC9(DwE0O}H(v\Ɛ鵍$AzyWFc%=]dq M y[M|CqO;~@^g;kVᐡ],arZ+'ZȄ&#+{Vb^D^ĶAa(DToRGZG;) RAL*k'%#/GX&A D7_H)WU(0$ޠ=GrђXzx1Y:}Z%c(1gv%_2or1#A Qh殓ޑ_{m]WŁߍ6'0iFW%>TՔf]k]4&CT(KXzv+&&T훩#ҼyKåJHI0}fMX]S%} &M$ȟMP HW6Vh}uX8VlB1cJgALFrM܎3sEyG&y>*gs8|_4ϧ_NC)rcZ2/-;k8{0N I<+Ν*,5 LoT;0IBYU 7?Vn%T|SkQ>P\ȑ !e__ghIWQ- 'JtRoK_FSML,폵+ܚqtD6`%TC/|?(֙h qwp5oMjдodnjUm}D͕/k (նTo?2g3XU6V/YQ.iIUuI[;cYG _tqI31o˰t3w*:C4\Q< ri οq @Kl~&Ӻi)@nϊ>gVlҞk]v:t 7@n/=2߾+W Ż& +e dʖ{7҇s"X4i<=;?Roۏ7֜0k0ݑ uFB' (*9_e$]vo)=4YP=0jim*TT\vġoFڋK!lr bMdwhtSwOI—gXKjc hH`kǶF)[…OPS e{5f3p'[=oޤ&k j1i 1g1޸D|E&<ER~$8VWg Y,IGoo#b.dES)|ㅆOYFZVشQn<|lUhSQ65rQȾ'XS!̑UD5B)`}p< ٱ1q:y^K.ywV^,H :sEGC]jf='ƽysEًQal1'g7-XGrL2'+}nr1 {. KdHM]H>jJtX]7saCjRw5m 8xntwV=+Ἀ.R<oP6WQ jJx&'dȠ/.I'ڞVG_FQfua6-AХ_( ʊB E`J\)x%\W$Y\h\X'%bЧWӪ숎/+V_O SY åGhz:5 UM˱[ k!(9瑻Iph:asV H9~T)$G/̃j*lZh` e,t5,V_3XZ / \A9K5\O\O^"C%B4VUV{T>m#")M |",7aԺlKP=e? $;dg{HM`_ѿ, EoUTѰ#1B|*S !Y"'_!M\xCGLbOșpo .3SK8[lO C8\XӶc=s4[[!U2[E'r{u6W0z%铄̩O,F͎9-3uVKo^]ڞ+o:fؕ+t6E)nm,&I3+zi:Ob>NWR7Mh4"KE!+PP _$I+|smBbS)K$ۺ&[λwA㪳Ck'D y򂩹? g嫟to^[\`I{%J>:d!T?MO} (O9a}Vڥ!^5tlNT|s,+X=FrӒ|ݡ{)ܙASt J D^\|{ckyIjXn{4{okvQb8]UbN`Ld'v'g4tRb ie<l^sfj# Ž: iH4A ^>TQ`׋|oL8X~5+&%ju8lu+-a :ޥqӢZwjgE-pp=z MeE6Zj~\2I(0I/H R{K.|l*jjW`nvo.7}+}*oS8SH+ }&DMT%xO7w Pa%]T+jp mϒ'WG.ӧ2̛}I[Ԥv6խ(`:uP(>ZZ'm6QsI/FD B@ 9HpDWojgY{IxMX z- 6c; `#P\/)gs+l)hs?|uZXw;E v"NݹC+I\xl$+_.×z ըdm;k ׎JvܯPPWHbA Wx+F@ owo >0/)9B=joݼ Sզr3Lk)ɱ6é@g>6`%3'Qql#&eLlvp笤`*hOBosQ:kR-thH$8@1;Zap?y|{ӵ'l$կe~wm%N/A0' 5糩l!.="_urPjML6V{yuH]v쌍 ԓ0JP ?$XGTiHnk p٢Yq .ir-~"z O"lUz.M%IZCjb҄k+&w"ei< RR倂G3]1C eOP tB w^\>۱6O٦4m} 5.QS;;>4n.iz.гvQBf5kv"_Bpf7=ȃ(s6Wlҿ{4l IOz㯝<ƺ=BKpSxµ0-gMYd[,xV,Q?'IJzNEtPrA z`xE*E)qKpMJfɼRB0,ԗ#@?&]߽K\/ =CΤU44Wk*M(<)T[jyI& r7y0wU3y U9N1 wuj;iWx6MUx&瀡9Fiҁp8s2(E~݅ߤ0FJv 7)#n 'e_ul!%MݴcXlFdtiک#A7ե״auXOCAea{@Z:x7OV(~KOG68d$8ۄx Uqv~-=3!0a;*ugYs&N0rFX{P1th=_L$' 3Y垱9ʼ rbJ2c]!] ߖv+5߁opc3$/teIpjWu-#6 M"W^I EEd:96D0V_R0x@X(7*Ag QquaFU#^3j S}+V`qutXGcX=v<l9UBHk W.0}+2nI uaϠ'deLçv ÎZK5;}7si{fCDrN4Ëg"fFK} ,cVց;xX?Gj$РBwiS~ E8n&Ծu~t~>TܨʎHq8YhA&K-d|F8_V \[gcAH{/^ܰN0RZ=+{RC{H@Vkb5=3qTdF~7 {I^򛒋T Z0wć݇X&nArJ.8j(ڞ~Us%Nʼp(+|^P҄н14/L7}p:1v=i LnkhM!Uۛw/ɓx@(wy:;[&W уGSKIqq 7[o8Q\B#+m40[&~[xI Uڤ+G4ۘn\qD&?OԱjM  _0o.*4on(@6%!,s#:f;lDº|tgHΒ &dSB0߇6K3lxyT;k>/EJDR/kTV/ԊY Dkؼp:΅v/h4u*dk/|25ҳyکNp TupU < ;ŻO?FE I'C{19EO. R=$gW&xIƙ&ktkOZP8v{#$IFKٰ1o @2!>&TN$q1fv˗aړPNd~ҊO$5h'Ѧ?[2^ rN>wå VJơV\: 8=hN. eRGe^ A@B(4B!էu,# *0v)R't$QzX6<`glG:zV}1:;V\`7y$.!&<þrNYaDΠY{9kw)zlw(g@ ~(u-- G|wXLx%%y-oΘPFTؘ햏ԥ?~K{.u.Ke²OSVBݼ>w8%g1mxj< ֯5&zB h\I'@[=T+'oΫ:U"J5+ d4 QֱIgzz** qd\A ( G$2.דFsS6:D4u@--40tŦ}zR>duk@kxNQmTΟN<$svvf N0~BIi;1J++7+W r^8[Vme,Hj ◕c}k$s,7u bU^o/SJ|Nt9k\puu!撮LYgى@ީ*6^|?«]h #ӳ%*2d&LR!USando($f-nУj&J$7EFIS=e霊s Fm ޲7=\'*TQl*_MQWP|6PYs Ð L*hT&B[.{0KNR&mVkfs+?Fo1Q-fPVQ++ jz(e3{?ϳLi:ST(T t} zDV٥tU,-h28Rj>ԡg#xUf*FtC&OH5pm~Ekoҙrx]BB'd)Hִ: uk7 t|Az%{ =%$::Q!xvЊrtD3xd޽FUf(~7}|s.ڈ)^ MK߸Î -؍%lR1]Uu Z#$&S~|ց"Gv9& 28<{- m߾Vu$K7lF$t,F&JɳzCAgȧ8LBD^[T]nU~vbk 7N[隊AEYnHW2\]@],om.H !:pZ_sB\CiI8i_o 3J7E\ՒɵG~lqb4?Y+*e)%m"UMԑNe)_٨Kp2Т9 k:&_yt0vS>wd$!K9cn53=2w^o+1KȱFčaw̦kLvagQo/%i.ѶLd&TJ7ar=&:$%Rklq@JZf8in|sG/;Y?ָَZZ C+UW{6\(NJ2Z4m JSeyqiĕ,WǔA4:8zLq~g{{04'Ɖ}\d0ˈ DEUzrMMzE|Rx-]kky7RzL)^|}ujgc\pzZV|ʋwKr󼋡PlPE܁o G}yO!=鶫 E9.C6}zXZ^gp3u+m p2✓Ia@9 )LXv4i6461W~ Ła"|q2󲌕+y$<o1AU h<+gL^[# &\NcJ !6J܌p[ӼeOƋ$}#}j?E)gC?ސ +Sz׊خ㰣5%+R-ؘej,o) G$CFM;s]͡E//ғml=5rjh94Q;~ꐰByaO:ҘyKTd>g gFbXH佫TKC60!HmTqޔG=@e\.'dH9KPW֚d?Y GT: JZ4{WSۂ,⊭>ǫ nP?S0R ]?9ġ"EHCU<}T EɄ+ꩤ*{d'Z- KiT0n 3ϗcP]:ԻJ d{<ѧYzm;H(x}tZmfNF5o[Р:Em]u|f^]x0vᐙ.a﯎QI!EZ7V=⛺Вg2sP8Z/[K37]}2rHUpÎ$CоePNخTp RhuCD|ƧQz5z޻;뭮/:ʭP[d5.两um_\f(;ȭyej_4w,A[]-U/B_jBQOJ<쟀h??ZaD]Vg6-:*A U{G4s!@΅V L?95)E8X~n5 NRIkuϨ'%ffTxN X4X Y<-2h#qh9Δ7NFmTLP"-lW{/r;;cU_>qbwl/!b?\u=2еE-4NDqӊ:ǧ*|-mRe6)/VIcܔfi.JxN5`.)HPXF^%wJoAЎ0h[nvCx/'|m/{yj,5KKȼ3,gkW4(\VABL4RM=PrFxX<4z^ʘ~=s1/5ɟ/^sIIee ߍcs~Ah Y>lGF B IC76˲hp ޼}֑0To CvSR@7 ",64;@s뼃B,?,M( x?Qw;a9Ky?6UR&&F< փ]p$Z~ ɶE Q-/z+Yb$٬P`rޭ Qo-ؙE.{gp1EZ\9vK$3xS#!W&Ax;ɃQBߦThzAs7<2|}y_0x<66 (ab|`m4.D(1=0O-X[; n}r)zQ/LcMAfVax ;āοZ@8#1@"ԇ`X~+;Z5 f2ܥP@Zk0L֮X\ȻFIזjl{˘eiX j 4C]U|Av`GV/ ة꣰l`;^ǖ 4/O#.h, Qv7o ti `(Os;ЭǍa%ף7ܛVtB:)5 JeMV|f$j-X_M&,FT;ʷ7/爸 6Qq!_[VDwQ-d:/};S夦s:U<(3+%;ke.Q$~m t'q&ӓ;9$75! 8&"@yy\k}2 ȉUQ|v[.`} 'ՐW1x*jLjcD{fSN/Ze@㋬^:$F( S[&ɳ?hLc4cjBV&Ix.F|H?9'U7$RI$v|0&32F (OZsRN|? Ո(u@(j~GUBZғ@yPQ4l\`de@ / (JMѡL+R G[U]ت(ݥU p`"Cku.+o|Q6˪.lfߌn>Y$@'{l)ì aѭڱg %<^˗0U8K8b&!P7uIJci{y~(CS̾RPؙ8Dzi)T"bBCHl'VWlO7XF ^#;kvgm{Nc-XSw(heu^otyx[MyԾ/ל1s w|(2. IQ0Cp>(,Ⴉu}e7hIf#z@2HN⑩V2o-lx)@ddם*{N\ oit2C+d\W8 Im{t@ 'g:ͧ 8(GXMH堧xxEg9B[y>qk9 zG=iu&~*xQ_X1F=bùw=5c/]*JˈFP\ZgN Z6j<64IiH)DHR!iĠd>N?)^A϶brGb&ٍ|k@e\ Pb2gH]j4FL?QKA&70p]7i@Vb IQ!T^%si*)ZgAA] [؏j~l=6~D{T7K_?Z3"M }5 wN[@6"%SzsM|&g,6xԳ4tCqԧkd}q,j߂[?Lylռ3҃4G=9=8wу?_ڏ5/a_ތ 7&\!e*<.ǙGL[%?~S`yd5m>ZS0{3I%296TW sq"awvOR9Obn vغ.Sh|Դp{\g=9\,FN"L.e[CKwǗUl.<T}RCϭ|[m%NUfE{Mvlu;@H2k-|({&7cЗb-=Ʀ_|& YX k(+ҟO z\i;ǡ)2 hNy#:=bHPQ0=g=ehtpubɜitz:!/2/3X,%j Aauxz5=L:̯ͯŌg^2 ⠪T^'-DbP_dI;H| 8o^%OdIEvɯS5ձ'`rs5OT җ#_t_/b:Nl8'˽篌N  >fw[iL1'uuY Z /AQU;_|BW({"eay42I\ w̖޶ʴ4OCUsqR*T!# kMZI"Ls,P_z#mVaH޻~߅4R/$IQ(/'z[f*7_$bI ǾKgWCTh`6ӯ1υ4}j_J`|6F1AQ@U 㟚Cr3wTw3sNd`z||5 D%U(XF!^j7s_뗸\:"qӕ\Dž_5PI蕞hXeY2GT8!ك9E ?&Xcd^Z$oi"Q)[8`j>uwK3bkGa=-/I!cQ\xC+}ΉVl!=G3y!\WU zOJqһNE8|Y+\{ ߦTK/:L^nTuMIȯ8 XÕiHV8ŀNuYX)!Tmԍ3^W.\|8J([w?z*|gLJ6ҡĆ5钠ɹ3 TChKԂw`h(a Vr:z+[I?LA*#4}b9 =Uѳ 0K2^|.ksEiݗٳU9%s?3i#w][Aj,%uc躐MT((rGW|(Ȟ[*6":_ndS*&fEkLwTy,{ÓβSwKzìhۺRI;sr{iyR P=yXhrTd|*q/K>^:vVt =Fm]TBp-'90~Uo@`? ;TqŤ$.-6(^j==wݒ=b8K@ʀVs\õ]٢XoP(X (]ﴥw`~j' Ԃ{B1<NDڬc d<%;@ؖ1#M[=H"i 7Kw~@omKP2MPHg^|Z徶0iKb0"4;-X>_^nH$U~wOM4`J4[?'3 C-)޳}qyCB(MʥQp}G-']ÔR %tދ"<|sa)E /B[ :]Wos3$2vg\ҧMwM6 K~D ^y”wh(x"DbPkg?aI#/M([OA(1c{ms^kZ!&ohvJxz̠{-7'8Y $/?d~O-oqbT@OI9Ȳ"[UGueU{pMYkNOɀ-VFo3F;Ny ܕ ZRuӂ\9S>h@n`FF_ 0gNF?#6\-Tw_CȺDJ; p'Ǜ?4uK_fwoסڿiz3}rfnZW@Ug3\hZY_5W73-AI12284K۫Gf a(TE&wUo-&gG4bWbt WnBJO-$.,xcS˰֡ O)9+ѬmfL*<9R{Hpǘ*+2塲4LiMUo ! QݑO9m]ꕷK '|:j}_/" vD0'xfK5s  喇AC04E q +YEy=}0"cuyy>\}E5e=x^ =&wmP]BT@g)K2j: x\IBRɫXFdt1LQǎXF#* RWڙt (h'f 1B5wA'}t+sԾ8|F ~  6r7 FR{hizL2SPdݴ~CRx̍-{*nԃue1 ~s]-=ffۍ]F+/+睔hcߓ*ZiY xeۃRU;`FD%|i1E9^X0?~ӥMR#ŭ:ܜ;A5.ߝ څIVx~g J^(<=Lj2`oǓvAg"VmȀaT-9c W \CƟXa$d5^136 Տ&u2WtOx;QBtOheZzOk+#Ly[ǝy`Rxtȗ1i5fd%~\dH6=NuЉ\M6+h/6Wwp\=!2Kp5UL UD$ۤr/fvn8;V ТtU u%W >0@s MZPܳr@cհeM Ʒ na#]9x8uP۠)bw{- ?kLSqmn 3? R;@B0Bqd<,/+\}5;sf%@9k0҈僋 AV>z :_z ڑXI,+i͆EuZ2x<6%8Ӗ,(O7ux;>%ͨƴ+tJp,-4]rYm'}؆@O 6bZYE, "îʚ7ʙ0|!qky{Q2OVsV+=$S xUp~q/Hei}ܵxDZ~[=3f0jj8 kTMsr q76{t"P>Aӄ -gݟLJo @brc|țݰ_VTL,1hhd ^]"6!XrXcP|jnSӨL}s9 ;d FppA /`?SD$<~H k^b |8 \Ü,EZћq` 3}_컰QIYfpXⰛ$sB᷶qdqk].:$gjI82,1d_[a aG~cdC40li6@r}@AKxg[Ӌ뫾ǃc fx,Tf-zuPĩx;; y78XN= e[^{mB>9NFR|0`K>ف ۛ-Lh) ey1m}x Fz@rC> /RRv;\J %ݿv¨0X(QfDGOwp^n\@Osff-1'$Oֆ 7YZ`G+w7+}_YL# iC\+(Ytr=k&x',c$;`]d5 HM3xоk @C[ใ@&{(5z@ϡ#EvQ dž Q\`pCZEb3 ^ʌ#mp orȢ'_NjC[[ 산I;& yc{t lv}Z1#OmܪpR NFUF_.e9{uMhm *Z LJE5@tRjc*r$ܖ!q:M/uWe?RihX8sj:wBݪE;O=f8E)Ѳvl9w.Qj#SW@g &x87,9kt ynuiH[γ GMNm6VzcTVE榃<+:7ExoYe}dzRgFk\6)bQV?@{anzPOz{cok[p 1̿HȕU&cι>$$D9,(?x㎈ @'_ LJ]=?K o ؄}~C֒|"Fw|^%X(7t%|C|ӟ u,MOrjzD x9^l`l(!yq&'آY6315TECmCNЁdPkA$t`y aײ`QNn?ۜ_|@ qk>g:Ρ2?i PwlBWuƃV.jOR4 Z0[Rsh]n몣3d"t("D˯щt3dĪ9X%^TX!KR|x P*Be6W~~(qMWKw= 6i}QD 3Fe3M`x7,bR{ -c-0B80ΑskCEW:{@u:o u'md9AQ pfRS)o}tZem" lw[xWڅW8`x;<ܣUWӽl tk[\XA[`JCү(~~dFڬOr.іGF*YEʅ7Uຑ\2z ȇ1b)ehl#ː^!U. y = >m%ڙ[X@| }_r)qBF%+"h᧘Y+MJ%! b1'IPCQĭ6 gՙ @\="¯fIUkM FRU$fj!6\I$üh]X 8 Eo(V*+Cfb,1*s h&|"R20Q|4{Sg_ Cu"TDm;c7pNP<`3'w?šyXlRxt*vU١Z"'(DŽ y=3[n_fE®%^ "-pٹ.l=ZDŽ$-l /gh߀%51rlOJSeM-)~tLpvDX.hv%iSXH$%;'VѪS 6f懸T*.cy\Ai/ɰ#oT3aaрsG{XX8='Q Cu.m?~g=l+9 ۞6_J/#^_y`&['I%þPk(.G4glz\':q#t,]n:(܃ kE˭-Ԓ8=rZ_OV^h2YP SUɥ琨+$1ػA$&$N]a ϰdEI!(c6q\AIsc?[15Ҩsxm!"ԤF:Cb:G(Z^d1ƅ/;.x.eQ[;yv)kɏV r <-xׁ8AKOP 'c*L7yXGD~(1W1E]3.{79u5YbQefKP EZirƝoӛS2[%d[_D>OJe# oKdvjri1%fͥjh4I;x_o6AB'ђ>$SX3U:^#x @7Rq*΅.] $;+I8 %U<.(鉼?Y8!۫EΓT/h36P(t4V]S$ YIdP%x󾳥|Fe̟1 ccJGw 6Q9KA6 ghc<".%z[Z 81 1 33#M2JaTR}<ʅ 3({Fwl2'ۂkIeC(tꔢP*/Rk5x?J2jY-|S? K?Sj*ԧc\jT>m 1lʚ.b9D =>ƽ eF?wFo9A&QQ{L˼T@N;t}4iޢ ^ ktQ(ڂa)EY0KmAcރ:`zP*cEǺ,LDq&IQ7Tiv)Za獋= p`u",l)XR^{kX+<Qk,{+y /0쥭Wv9CC@#GoP8==`?rұAo!!:$Y\Grkz$х بjQ7Mg_ʷxgHb;YݺwǒNq$KoIĽ0~ʿiGIm wgJ)}6x'V;Z&^PD|.ޣ3|wTF㐹yc!!Kڟ=KB93#7ƃ'8.OVp b0l tZ`Xh;Fhy_ҏPN+LU{DYi}/pj7 Bj7hbZrh: h=PB:56-((̼n p`͊@U)G%Q1!kUftN8T $ F5ge>wףw|j/ym Zш Ovg JQ9A3p4 2"(|K&DN< Zk;X?a0*Q4Q{%V jAmr TARB~=aMTBwӴBM%::yh&x[ܻB)*O@IQX ^ 6,ŒQĕxXANzY~/d5[d2uݔ[VScI1A IܽJs2$mBOF[|ɫxFم»Q;_{\Vz֢jbYAF!e `=N(t^8T+b2-r蔉^>8U󄇩0| duMEALp{0s mD!a/xY^lox_=~Iat޶þ8N m;Zogi8ܶ[0;{O:X<,\[PҀ~@nI\S]$\I]F 7R6+lkݎO+P@ ~#]|q/LjH vaLTh [~[dV=JI]_(/},-Jx:zF*Py6`QQ+[rA:h(ǾF$@h71^ُ =,05EnT"mWoYbqy"sF60G }ZD1/Ro~ectLx3(#wkuSI4m2R)r&PM:kt<\k&ac}(70CX_>kBtoGfmֻ{{?ˊ CwDcGrޔ5?y,GIDR;HM:hpJYLq)źO^e @>bGAC)|DYsgXpE{Ьs1"[TK`{no߈{LBצfMVӻ؛5*Q;8ڞLtu l ֆʜYpmAZZ<ǔd*ږ.?(D54lxE!"fY'aGdm$-ɷIhz5g=xՎN8rWw!-B"$2[]~Th$PT XTTHnhsX_%EhpBHwoyl+:gԽ:&d/'˃ $ɩۓGm?dE4U5 q!Np@/z7~6%xuڊ _XqG(lg@Kk)u /zŃ"_J/u=T=h90\"UQ0aU!%Sh kZ ? ʐRP&aRsP3;!: mϥ>s/Q4^7C#+ݚ xä mers-,И:Ldw=}cG֓q=9ù^o5keRy-hba fRmGޜ'pl{^E,m2 ݱvcjcION.pY%ĪPrǙO_z3F:[s@l7(3ϟ[BFs$ RJÚ$~E#%Eá#d "j+aJwy|%ȞM -b >4DWG@~v _$'QG]L\I1ʊjbPhZZ*D\'Gْc` x1A#Th)*6_;dHl#%|a?{l ˎS$p")j}x兮Gď 5_=s)SSLuAʠvY87KoV+mhUO5b-S51> }7Lj gĚa/dXed(JwEy=_X15am;z3NOƐZ݈ }BP?gw0=99 ДYSBf}}p7DU@m^us&T-ުG]\-U(<9t E1:NX JA@"u?KPIaIA0>G)5˰pIӯ5]!fdJm1jpzO7]Yת v5MFdžQz:m<Ejx4_(&(#Ch"LlƎ *X]-d6jzŴr-B"sDXH䌋z0:%Ѧ%Y$sɮY{o&2avFCZ:C{@󃲛!^LBZ[-$iMPqsZrwJv`s|E쁠, f{h#֎[;&ՠe3uMg"sO mK1Yww!zC#RsYIs)N2UKw72LJЫ؀0* O3ޏ^ ΋:mF%|ւvnspf>2~=^!inh1u A$4sf; 2QX#ȦoG#ˣA@8x(p,[ 5wZ9Ո 1R */>: X:p]p.M+!Wy?-(/Y*c6վ="2[ҤAzyI iWX. AOovx#t&70݃;qS-aA'ߦA31_.]EI cݳ4?mt\ͪ\e6눞ǐ`)\6,rQ^aDX24Yw_>h+"в6^(bRʺw#VYܗK 6P_Yt纚0Q݈W8Uri|9K'EG)@"K&`BVȬ&#+oKڪ6kڿm,aJm^U ؠGROrE*ή2$ީփ>`OcID%gw Gl s)awjۯS{_=I*cG6/%QB>d۱o\3[xw>s`rJhf.m7gR[(W;Pi\|*([ ,QrXX;kyZΗRf {o'o)I/Y+/(%s(Y"R)iF#Ps iԋ@m"qO~s\nTWjV^]??rl`wWv4&c@oiM7d;!u5zⰟ>V 6-ŕl4ƁGB๔Ć@-ˬ1Wª:FNcP:Rjj0&6M ZF(@ n~kM0FK/wzj&v qfK<^keb::Tod5vͤ0S$KTz(X%*n]biXU>q쫑J)wGؘ"N>lY!hB!S>Z&r_.`FLAu ?O)#}[}&,%Bm6BYP+s:b7oIY5Yf${~4-~ _I:b9dctZ &X|8OtZ#ڸ5!0 _4܁r̶z"j61Ni&Tl"4NIXOh愉~z/f i1]8g&xuUeƛcp :}cUa .!{OAnLy!^`l"ݙ,?v1R.R=o{.?>T61;#ƾ~]|j1=+;&n#؛/Olo?{DFs^|5ڈűX=FS`Y ЦmS/Cs%>Ÿ.ZC"4%| սSp୽Mjًsn`ۡcoib\0Z^ o]čꃰ?(LBi/0m)T/ߪfݙȫڱEwKd yA~^K'KŋǠmLnD:YJI&uKy|oyIQt N8Nv oSQcvoAY%t{C"v x&xo>̽InhI:M4wvӘH5]ҮEf<^L . 1u|3\-MxL4FD\Vvib7.C:sRxKu}講>mQߊ2m9ϜF@Yj QCKw`]xcn,baב2jQʃ` FV˨%ZiK8U#`k¿v=[u I]:Xh#r?R&jJ)},_lX۹oK2ϊ=dv"3huȭCϱܕ^vѣZϨ 2kldST;x_At~,oy?*Yf _c=$~9]3~Xȳ+e:1Q؂o0i̩E) csb΋k$`qA.!l.\gRCf#"Ay("xv;ĐM+}Dvd|%{-lǎSk-:1/ɑH#o=qs 3׽| P5%A(t?]XzۃaT `Tm[BLG3kS\sm蘀 NSM.E ΋;5uwڛn x+&>6; P]y2mPQȎ#g;c&S5y!gƛ9ង]6+k M!fM'ڌkh*6ad `i}% -ʻ؄3򧾚a3tlJqG_)N};+m#eV#&á(G$CҤrE S ٫aUMs2f f0QOeUUxsEurWY[-#yLyn.g1"C#4^׃"G*>T C|xL.d~n rCDܣ;~LZW 95~r:/:(y ^|jf-=uTsӠ=|"GpyM%c#c .1ƧmqIk2̪B2 +d`>R}t.f7ۥ1 ȆO!3P[iqP WT߅鉧kavw%-:љ?f^9&h\m删h*`(EgJs°9$V`O1}u5{Lk/ >ޤp;E;=0x +xopS &' ϤBԃ^v=[RS؜O0W(띋cC$O< n2EF .X@% EW`C"KشLNCp`!;% vW`,&]׫ԀO^? ʹ"ĄcϊtqJHm`m&DcXvQB҂-_,GӺNXN;qUġ/s3S)cȥ)QJ j'V#N7Թ51Pe,)02Ñ(+Y?p=BMH{@֋>;ł6>nⰎUx >G5ڏ+B̉N7'1zfO ex3˗vZ_+xX6lU3v\zF APsuH9%8e~5| W;(`)E)xNmȣvѪ**(6%X;gZ0>?&$7۩[ -eo $Zd)[,#ְ<1o=+ pKȎo4E6@ׇj=\]@~ϲݝLL m56wPSS)Wg@ l׈dX#h t8 5y31i6 3$ R@`xE^(˫OʎxE1;Ao㑘7VI>ZY|y\o&ʲ_'D}'/EcQ~^S.Y]5{  u^DI0Gne:X)fތ ^U!ImO3_2lq<|UwڱT\y ݅JmوEiuH4SHJ-e iɇǀı3[Y4*9w4ă _ ND/cy3# ?p}# 7aNرiƿ* t UCg<%ޛt NAkAylrS!M5kD*x qH[a4}jP#E*Y-dbwy18ă/jH8B7CߊmZMMv%cw&s[oqHFor^aqS5n:^UDjX P|f#gժ[})zּ!7uhj̾a9\(*Z u}$!oкKnmZV|w`{h#Ȕp a+e-K #.-)o<* /W3= \3BqT5l?+liCy-+V].9/0ݛ c`58(,'61S}@I,99u ڇxjB֔Yq%)C&6Ԃ9oVMĎhde\/+w4fλq~9b=ńv՚ 6/ s0"}R4dj"KcXii:(ĽOii.A3(RU;^ z3Trc*ߎ3r`!1mvΊ5le^`B6 Vbj 71Pԭ(C΀õ,Wk=W{C7H%HP9hE]V׎м\xĞ\{N! ?m1Z2&oC&C *Rԧu2p8_9_.AWXw|$זxfq5h!kKBԬFz(<َš ज(=|O;l(8&V҈ Ea0UE|Ql`5D (CP% 0偘I3i8!_O5תX`omgVZ~t_^cc}%S`jl tM%Kjm%ds&#S?cS7tRQhcvETW$VJSiy9VWݷDk'bk =ڢs0 1E,-It#L_#vLKօOqpx2PGL\ځjۓ5dT<Ag^|"23Ew;ȕ$f)S/Yp;tvN-!s#JkV8 (u؁y\QUoV^kNUhqt>䟴olĢ2#d 7UZ$NܫQeލE^;%?D 4r;^H5}[F͈ bzk7ZmN xrp6EH;4'㿠\QxI °8Dj9+ls[p;Y.0Y5E :NInRqOǛܫqj]w=gdZu=󬳇[vc$CmKĄ~Io߲GZ)g(R ;_&nВF-Hfmlvϝr o;-^t}S*⿷ WW?K[ iZ$R\d`.Z6 akV:*33{X=xXJ-1ذ: Sׁ AVƺ{)va8\`ޫf科f}/2l(}eCÞknaw߇Uhq;IL`,dߓ? t:'ZcF*e~>>K!p]^SBկއ]er4޷f^&8ЅVy*:W]SxМs957?ȓNU2&s1^iJNi$^14lczRn ?˥ MEOWՊEDI,yRBDMӢǩT+(g^{t ЇU6 ɺ*ܿ}S\nknGG`6(bQ2 _E0 dʨ;1Y1Qv^~rV8IJ?4 4[nZs="LTUrX+!0EЩ ]nD.=Ҽ6 l?S-et_EC,M,̆. ~زјg@YYu9KEҍ֑-59S E ϙFB>#$i(ix}I gI>Vyv4ay~e֛/LumNBooO]{4 ~&FVCD|@hTwOa*W%T ' Bv3fL(|IvO~4S b]:ӦKM=pn ڋ5E'e"nYIdaonNgwĈ) r}%CA;6A[71bUwɪuFk_Yv#0[SFw(akwKnM~OʭcA;g*Z)1HtTsK)`_O?ߤ"Fpֻ1pqNhY&fr*{hHŞ_Ǽ@d-&V9 Z(6!4; T+4o Zz4-WR-'z RaA:¬|VѢҷz!%.B*j91 黎5T8ΖLn~QhnMS p_,usſ-b}Ӄ̉;2LCm(p)io`{H&Cprq"7?@!4,Z̲ϗ' = ).}/Xb8X*v5#yJj N2 VP& ?V.cY_@E|dxǘG(žB*El7aט|X~bJQ1W S"H5O%11ui Ѩ m[f?U.q/RO5B܆pNu=.1y6 D4#wѽ{gI2J{D*-:WW|׬)3L~k!߬є:K-/Eu|>K224}a(7 }I u1?CFisaOܠ[V^>2oER9E u4Ӡ Dcd$>p|Mx{G/"#iOՈ!Z˟.tk[R:SetkɊv ~}F;񯸎F)U36kth*/uOGAG9WLM]v.{4&*"8/t el(#u}/{?!^LDѯ; 8Xtu-SiEdȪr5iŠQk"^_!/3z'U&fH6Gx:kӶaA%h7v 0X״ԥ|ȦU#xX0|mp`:j[)'*ڰ@:,!PAlVǨTT'0 B'^`#nH3߹[zJ|ѹ%znotPRZkB\ /ܖ.qHSr9~ p9ÊTЏSeqzms [Cf~aJ|wƛX h=wwy1Ԡo$K #*m1#ŏK04~0bT/X1ݢؽx8p1=qMte>ʊTfͰuPg5t# Mh RqywEyN,^q Ai?"u+Eq7xq v1ikx'ž"VÔ;xϳ|A Ld<%  S'&up"@*oP#,>?Y4[|>+q/]p دm%Noozi]*A[%x O{/˻ a ?&[v'R+Xk"DfK>ӊ%όBS:K`)1VH_mc" >9СarOM5mзGᾠkn iG嵌#4tiey"z{H'z13k~X4qDoȰ֍>r+Og喱N+-`>kV} ~E0z/ ԡD|f8O.p`yhHL+x-4΃;k0UA`1gۢ,8+S9q㱄S-^j=A&?Ƣ|YҳKN=3Bg\jH"P^w( a⹪DEh!FM]Уt>gvs԰,SSƒoKݞ߯"0  ,3>D"|ֿhS>8jr+c qa-~gjP5ҿT!dDǐ.aG3z-Zm \*hp"Uv@dյf} YK w!ؕG?"8;Ug! v%P㲯vb6;AW;~@z3~{,/rPZFŭOWin3s屍GޟeNn7W=Ʋrq lϖ*q;$H/??.Ί\8CWP 8܎Q w͂s~3i2 r.OQBpyLW^\uc!hF:?5FdOx2K C5@۝T@6PeQ0 >e#j$Os3 jW) =@o:QzUm昗c6>"..l_,7#ٛv%8FKߠ5aLtV rVQ#j$3X3Bd6ymMx=&6.aM\qM,qM0 h.xbja=9wRS%t: Su>oAYu727ȣz2:tinX)^M;SX) 4 BG|(Ϩ:s[0\]ʜ\˘u9@`UhsO>\+ zMՅA_#! 4?BB<,u^)y^Dk'-4N 6^sߠޢJoE{6CK*u.ǖ۪pؙ<9ymQU%܁~7g؂(<3^pbE#b>1wVyg.^ڬ³)!^~8l=TS;$oN-{x0i3A>""Մ ;QMΣ]dv-Ea{νx3<)6K9({T&C2h}' MJ&!y>4kB [ ٬9c u|gxntg|z#RX( q @d0DzSϠjn(v{c?<4v)g`km^$Q:y1]cj__𧰜CW]h3"0YAãGW u뼤:x&pqz E!̶sڸXu?;٧aY`5<Βfȵp( tb yBt3_˝P՛c@wk#// $}sN?I¿u=M2iI3|iSD.u~mc@݄p2A]\enO(VrO5Sp{1IȘ(/^"A)yк dȢtXj&L' |Xc&giWH:֭vE-@ CrVz)V,4]'HA}t_|1 I[jarњH-LIJ"ƼC"Z{e{BW:zf2hc^.C)1'~UGTqꐫ^2AɘWl -jf{Wf7o x[}jkЕiBg~)j?!01#g;dm ,8f hFċo `, I \^ȧ+9bP{`UssmP+_k7cݯݙ[< 4x8)OmD?R`gB6P6fnm&T{P6@Y~G(b+0u5iWJئIp/rRbS> eMIP(^G\x`xTyx^,hQoF!I/nx89-s.n?$t=(T:=wX;SX}P[C'aWln"-"CPZ< *2+()kV97Q`6YJ,mTݔ""1-Mّh>U{}"8eN)ͪR, xrZ*p1sa\8EXtԬ}Be ߥ#B%VRyzcPY1 6,TT*-D *'p4ŗn)D: >&}bٛf@.ӷRVo#rj۫0n!OՂ;p|xm3vF#G}ֶ=c[shC6.Z}Vu m+Qt:=Ll|2coh1\ZxG/diEWc7;= (-}3ئ^n1/77\Lq£d}Ӥ*.2fssn|>zN&P%ᷝv 6Ý())$av4Uk1Pvp#Syɵ; 18w}wru嗍9>|}Ԑ+\o9q9GJQB%.V9ܮ&"H~$c|Ae 1!.ǜؿ l+azwXKAnZ. akM*n_:p0|1 }Uօ%gO||0.uUm0?2-Ϻ9RwO43a~hxl2ugL>KDL7r qv T3E*&5sd憕ˏs5EǕE?a1MhD~ƒas-u:8hcAhI{D (b5Bˀ72LZ 2uUI|fƆW!N5r(D)2|4^NGRI9 #?\t 6RThhÄ͗3 #t` ø'9 㥥^ʿ5V &Ӈdiz2ԛ}C66,oaqQb{&/Ȝzdkg9#+AsVo:J݂Hu~טO}2Xhyze$LjKZ`+ =F5>G^ !S7@%cՏ-v_Ubl`BfYcKBnj?*I,`y <R2j֍RkHqUC{%5RG$Ve,kre`@C檰՟:&g  KAIǝ}F+?I WM J\QwQ4&{?W}ʟ* pԾ=r6&>]z&$K_*^Os^(%D{V>N@UWi/#7]eP%َs1@ݙk(G-1"SzWO")q寈;Vp7enRs@ >Wq2d'Θ$╨z1Rw33ъ"4^\嗸X!(JɆb\.OVĶS>zX~8uuqX.e63ih4uˊ ʽQBPz# >kJqSBO'$`aV~˩:TFlF>e[BqHU0!Եxehi_B_'# _H?-&6 WF!d^e>pp8nAjƻo HTbyb`L/dlæy|ˮ)SaE嶙NPDZ|4Xyr!nx#\*ipIS@a[5Gt+b($zC_0FkLca::1nrDF? Ya3^wFw$gA-(f]%xvS\ +uPra`I&2\+C{jP@_HI;2.SKX7#;J"> ]E k*1s['y!IVO\g JZKy㋍L-L]Y_38cc&딸*8(^ ߐ>LaZbd ̑SƧ6=anGiHKU]>{ [GTBiBb+MS$:%ԟ~ScDcq+~>X뵢"|㋶rL@# _?:tRSGdP#&*A-n'ĸ/+|xM;MEyx/|'ay{75BƦ.8_Ȑ|n6+G~dCa ]v4ǭp2[wmaɲinÙN۷_sʼ>㊓2"gO{;! +uK k,~Cm1 "xNx$_7%9!p Tv~~!R-8=OPND܎veAddo`ejP{D\.V}Ə&?y |Plg5̀%'"J}Q8-9*ɮ,H>cVT8rW).4|@tSd?} FϿL87djډEJٝJ*i>!X#Ķ!isC1Uv2=tv]]oM{Z#0;KޤӢi:!w:tZI>5ڔP]+pijL |ެ]20;;r̂~ql)wy-9;Awjݴ(_c$74rYE(B5YP 6!O?ǥ רu؋XW]IQ!$ބ X!`SS j6k%O90޶a) ELIvȢuVK3͒ӌsϴTJHCoeN[,6=3Wgߺ2J>NWt܎v Y4-)fY"91{p(< =:2vFk:D >1}?8$:8O:_zpQ`/Е=0 3rdvؾsR+c)rN{1I /ܛPolQJ;SbO l`&&@"irnv;iGYA H h&qognCBF*jr$ wHPvڸQHaɁ4j@5Zsp-ͲGSp52|p$`[rM<$ ~Fu$tP.6J$~;:I>^^ց`:`uD(W\$v[c=^>A͊Eg *Wgʷ;Pl6+ȳ]?2ϴcgylO2K2N_V$'t%Gx'?V#(?p™1@{UA9Fwp.L2^=(*\:} >°(FYWa={ʽE6pE kcqNL1~ɦxB[utK0RFNJi ӅZtd,=Yh^5 &{a~{eqؽKŽ@x=n,~l/_\|PUl2dQE