From 9740a3bf0ff8f878303508ce68031a5a94ef04b4 Mon Sep 17 00:00:00 2001 From: Peter Kecskes Date: Tue, 18 Oct 2022 13:35:34 +0200 Subject: [PATCH 01/39] OE-13759: Add new criteria to direct line number condition --- .../controllers/DefaultController.php | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php index 3b96ed48c3..295b0ca91b 100644 --- a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php +++ b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php @@ -1312,15 +1312,34 @@ protected function initAction($action) */ public function loadFaxAndDirectLineNumbers() { - $sfs = FirmSiteSecretary::model()->findAll('firm_id=?', array(Yii::app()->session['selected_firm_id'])); - $direct_line_numbers[] = null; - $fax_numbers[] = null; + $context_firm_id = Yii::app()->session['selected_firm_id']; // EVENT FIRM ID + $episode_firm_id = $this->event->episode->firm_id; - foreach ($sfs as $sf) { - $direct_line_numbers[$sf->site_id] = $sf->direct_line; - $fax_numbers[$sf->site_id] = $sf->fax; + $direct_line_numbers = []; + $fax_numbers = []; + + $sfs_context = FirmSiteSecretary::model()->findAll('firm_id=?', array($context_firm_id)); + $sfs_episode = FirmSiteSecretary::model()->findAll('firm_id=?', array($episode_firm_id)); + + foreach ($sfs_context as $sfc) { $direct_line_numbers[$sfc->site_id] = trim($sfc->direct_line); } + + foreach ($sfs_episode as $sfe) { + if (!isset($direct_line_numbers[$sfe->site_id]) || $direct_line_numbers[$sfe->site_id] == '') { + $direct_line_numbers[$sfe->site_id] = trim($sfe->direct_line); + } } + foreach ($sfs_context as $sfc) { $fax_numbers[$sfc->site_id] = trim($sfc->fax); } + + foreach ($sfs_episode as $sfe) { + if (!isset($fax_numbers[$sfe->site_id]) || $fax_numbers[$sfe->site_id] == '') { + $fax_numbers[$sfe->site_id] = trim($sfe->fax); + } + } + + $direct_line_numbers = array_filter($direct_line_numbers, fn($value) => !is_null($value) && $value !== ''); + $fax_numbers = array_filter($fax_numbers, fn($value) => !is_null($value) && $value !== ''); + $this->jsVars['correspondence_directlines'] = $direct_line_numbers; $this->jsVars['correspondence_fax_numbers'] = $fax_numbers; } From d1cb7d3eb24c1a039d1d42fd534505ed084b6ba3 Mon Sep 17 00:00:00 2001 From: Peter Kecskes Date: Wed, 19 Oct 2022 09:12:04 +0200 Subject: [PATCH 02/39] OE-13759 remove unnecessary comment --- .../controllers/DefaultController.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php index 295b0ca91b..c234c7146d 100644 --- a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php +++ b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php @@ -1312,7 +1312,7 @@ protected function initAction($action) */ public function loadFaxAndDirectLineNumbers() { - $context_firm_id = Yii::app()->session['selected_firm_id']; // EVENT FIRM ID + $context_firm_id = Yii::app()->session['selected_firm_id']; $episode_firm_id = $this->event->episode->firm_id; $direct_line_numbers = []; @@ -1321,7 +1321,9 @@ public function loadFaxAndDirectLineNumbers() $sfs_context = FirmSiteSecretary::model()->findAll('firm_id=?', array($context_firm_id)); $sfs_episode = FirmSiteSecretary::model()->findAll('firm_id=?', array($episode_firm_id)); - foreach ($sfs_context as $sfc) { $direct_line_numbers[$sfc->site_id] = trim($sfc->direct_line); } + foreach ($sfs_context as $sfc) { + $direct_line_numbers[$sfc->site_id] = trim($sfc->direct_line); + } foreach ($sfs_episode as $sfe) { if (!isset($direct_line_numbers[$sfe->site_id]) || $direct_line_numbers[$sfe->site_id] == '') { @@ -1329,7 +1331,9 @@ public function loadFaxAndDirectLineNumbers() } } - foreach ($sfs_context as $sfc) { $fax_numbers[$sfc->site_id] = trim($sfc->fax); } + foreach ($sfs_context as $sfc) { + $fax_numbers[$sfc->site_id] = trim($sfc->fax); + } foreach ($sfs_episode as $sfe) { if (!isset($fax_numbers[$sfe->site_id]) || $fax_numbers[$sfe->site_id] == '') { From df89bb69a84e81cc741b29b4591457556319ab39 Mon Sep 17 00:00:00 2001 From: Peter Kecskes Date: Wed, 19 Oct 2022 10:34:49 +0200 Subject: [PATCH 03/39] OE-13759: Check if the episode->firm_id exists --- .../OphCoCorrespondence/controllers/DefaultController.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php index c234c7146d..e948aa95c8 100644 --- a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php +++ b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php @@ -1317,9 +1317,14 @@ public function loadFaxAndDirectLineNumbers() $direct_line_numbers = []; $fax_numbers = []; + $sfs_episode = []; $sfs_context = FirmSiteSecretary::model()->findAll('firm_id=?', array($context_firm_id)); - $sfs_episode = FirmSiteSecretary::model()->findAll('firm_id=?', array($episode_firm_id)); + + if( (int) $episode_firm_id > 0 ) { + $sfs_episode = FirmSiteSecretary::model()->findAll('firm_id=?', array($episode_firm_id)); + } + foreach ($sfs_context as $sfc) { $direct_line_numbers[$sfc->site_id] = trim($sfc->direct_line); From 902dc1e6ad27749060995fbfdb59a773a7cb4c26 Mon Sep 17 00:00:00 2001 From: Arpad Horvath Date: Thu, 20 Oct 2022 14:47:42 +0200 Subject: [PATCH 04/39] OE-13783: fix change context when firm_id is null --- protected/controllers/ChangeEventController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/protected/controllers/ChangeEventController.php b/protected/controllers/ChangeEventController.php index 07796e8f02..6f1d03138c 100644 --- a/protected/controllers/ChangeEventController.php +++ b/protected/controllers/ChangeEventController.php @@ -238,7 +238,11 @@ function actionUpdateEpisode(){ $episode->firm_id = $new_firm->id; $action = 'change-firm'; - $data = 'Changed from '.$current_firm->name.' to '.\Firm::model()->findByPk($firm_id)->name; + $current_firm_name = ""; + if ($current_firm) { + $current_firm_name = $current_firm->name; + } + $data = 'Changed from '.$current_firm_name.' to '.\Firm::model()->findByPk($firm_id)->name; } $episode->last_modified_user_id = Yii::app()->user->id; $episode->last_modified_date = date('Y-m-d H:i:s'); From 180d91dcbe5c27eaaaf8f6588e9fd619059726e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81rp=C3=A1d=20Horv=C3=A1th?= Date: Thu, 20 Oct 2022 17:06:42 +0200 Subject: [PATCH 05/39] OE-13742: fix management comments with nText formatter (#8575) --- .../OphCiExamination/components/OphCiExamination_API.php | 1 + .../modules/OphCiExamination/views/default/view_summary.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/protected/modules/OphCiExamination/components/OphCiExamination_API.php b/protected/modules/OphCiExamination/components/OphCiExamination_API.php index 97e24417d8..cac7bc24d4 100755 --- a/protected/modules/OphCiExamination/components/OphCiExamination_API.php +++ b/protected/modules/OphCiExamination/components/OphCiExamination_API.php @@ -860,6 +860,7 @@ public function getManagementSummaries($patient, $use_context = false) $summary[$service] = $summaries->comments; $summary_obj->service = $service; $summary_obj->comments = $summaries->comments ?: $summaries->getSiblingString(); + $summary_obj->comments = \Yii::app()->format->Text($summary_obj->comments); $summary_obj->comments = \OELinebreakReplacer::replace($summary_obj->comments); $date_parts = explode(' ', $created_date); $summary_obj->date = $date_parts; diff --git a/protected/modules/OphCiExamination/views/default/view_summary.php b/protected/modules/OphCiExamination/views/default/view_summary.php index f7c4acf0b9..823e0873b3 100644 --- a/protected/modules/OphCiExamination/views/default/view_summary.php +++ b/protected/modules/OphCiExamination/views/default/view_summary.php @@ -319,7 +319,7 @@ - + getMedicationDisplay(true) ?> @@ -401,7 +401,7 @@
- comments) ?> + format->Ntext($managementElement->comments) ?>
From 14cf22b7a4e3e069fe125ad839ba9c7aa62f2b61 Mon Sep 17 00:00:00 2001 From: Adam Parker <107402328+AdamParkerABEHR@users.noreply.github.com> Date: Thu, 20 Oct 2022 16:43:44 +0100 Subject: [PATCH 06/39] OE-13743 if $visit->pathway is null make new Pathway (#8563) --- protected/views/worklist/comment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/views/worklist/comment.php b/protected/views/worklist/comment.php index 8860dc021e..5e27c25df2 100644 --- a/protected/views/worklist/comment.php +++ b/protected/views/worklist/comment.php @@ -37,7 +37,7 @@ 'step_components/_comment', array( 'partial' => $partial, - 'model' => $visit->pathway, + 'model' => $visit->pathway ?? new Pathway(), 'visit' => $visit, ) ); From 40d7ec649b7360bf9a19fdffa1b944c6037424be Mon Sep 17 00:00:00 2001 From: Arpad Horvath Date: Fri, 21 Oct 2022 08:42:26 +0200 Subject: [PATCH 07/39] OE-13783: fix code based on pr --- protected/controllers/ChangeEventController.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/protected/controllers/ChangeEventController.php b/protected/controllers/ChangeEventController.php index 6f1d03138c..d1760719b1 100644 --- a/protected/controllers/ChangeEventController.php +++ b/protected/controllers/ChangeEventController.php @@ -238,11 +238,7 @@ function actionUpdateEpisode(){ $episode->firm_id = $new_firm->id; $action = 'change-firm'; - $current_firm_name = ""; - if ($current_firm) { - $current_firm_name = $current_firm->name; - } - $data = 'Changed from '.$current_firm_name.' to '.\Firm::model()->findByPk($firm_id)->name; + $data = 'Changed from '.($current_firm ? $current_firm->name : '').' to '.$new_firm->name; } $episode->last_modified_user_id = Yii::app()->user->id; $episode->last_modified_date = date('Y-m-d H:i:s'); From ddcc783799e667184789dfc0fc84a4f10abb9e38 Mon Sep 17 00:00:00 2001 From: Arpad Horvath Date: Fri, 21 Oct 2022 09:48:15 +0200 Subject: [PATCH 08/39] OE-13783: fix code based on pr --- protected/controllers/ChangeEventController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/controllers/ChangeEventController.php b/protected/controllers/ChangeEventController.php index d1760719b1..040575ea6f 100644 --- a/protected/controllers/ChangeEventController.php +++ b/protected/controllers/ChangeEventController.php @@ -238,7 +238,7 @@ function actionUpdateEpisode(){ $episode->firm_id = $new_firm->id; $action = 'change-firm'; - $data = 'Changed from '.($current_firm ? $current_firm->name : '').' to '.$new_firm->name; + $data = 'Changed from ' . ($current_firm ? $current_firm->name : '') . ' to ' . $new_firm->name; } $episode->last_modified_user_id = Yii::app()->user->id; $episode->last_modified_date = date('Y-m-d H:i:s'); From 036f08e102bd56dbb50a86d9582f822d1938b743 Mon Sep 17 00:00:00 2001 From: Peter Kecskes Date: Fri, 21 Oct 2022 10:06:32 +0200 Subject: [PATCH 09/39] OE-13759 Changes based on the requests on CR --- .../controllers/DefaultController.php | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php index e948aa95c8..9dde62ae9e 100644 --- a/protected/modules/OphCoCorrespondence/controllers/DefaultController.php +++ b/protected/modules/OphCoCorrespondence/controllers/DefaultController.php @@ -1317,37 +1317,31 @@ public function loadFaxAndDirectLineNumbers() $direct_line_numbers = []; $fax_numbers = []; - $sfs_episode = []; + $secretaries_from_episode = []; - $sfs_context = FirmSiteSecretary::model()->findAll('firm_id=?', array($context_firm_id)); + $secretaries_from_context = FirmSiteSecretary::model()->findAll('firm_id=?', array($context_firm_id)); - if( (int) $episode_firm_id > 0 ) { - $sfs_episode = FirmSiteSecretary::model()->findAll('firm_id=?', array($episode_firm_id)); + if ((int) $episode_firm_id > 0) { + $secretaries_from_episode = FirmSiteSecretary::model()->findAll('firm_id=?', array($episode_firm_id)); } - - foreach ($sfs_context as $sfc) { + foreach ($secretaries_from_context as $sfc) { $direct_line_numbers[$sfc->site_id] = trim($sfc->direct_line); + $fax_numbers[$sfc->site_id] = trim($sfc->fax); } - foreach ($sfs_episode as $sfe) { - if (!isset($direct_line_numbers[$sfe->site_id]) || $direct_line_numbers[$sfe->site_id] == '') { + foreach ($secretaries_from_episode as $sfe) { + if (empty($direct_line_numbers[$sfe->site_id] ?? null)) { $direct_line_numbers[$sfe->site_id] = trim($sfe->direct_line); } - } - - foreach ($sfs_context as $sfc) { - $fax_numbers[$sfc->site_id] = trim($sfc->fax); - } - foreach ($sfs_episode as $sfe) { - if (!isset($fax_numbers[$sfe->site_id]) || $fax_numbers[$sfe->site_id] == '') { + if (empty($fax_numbers[$sfe->site_id] ?? null)) { $fax_numbers[$sfe->site_id] = trim($sfe->fax); } } - $direct_line_numbers = array_filter($direct_line_numbers, fn($value) => !is_null($value) && $value !== ''); - $fax_numbers = array_filter($fax_numbers, fn($value) => !is_null($value) && $value !== ''); + $direct_line_numbers = array_filter($direct_line_numbers); + $fax_numbers = array_filter($fax_numbers); $this->jsVars['correspondence_directlines'] = $direct_line_numbers; $this->jsVars['correspondence_fax_numbers'] = $fax_numbers; From d0c71a3d8e306075dc8e4945d2aa0599e2bf60e4 Mon Sep 17 00:00:00 2001 From: Toby Bisco Date: Fri, 21 Oct 2022 14:35:00 +0100 Subject: [PATCH 10/39] OE-13804 - Make eye options in op note respect the opbooking_disable_both_eyes setting (#8623) I've given this a good test and am happy that it works. I've merged it myself, if it ends up breaking something then my bad! --- ...ement_OphTrOperationnote_ProcedureList.php | 9 +++++---- ...ement_OphTrOperationnote_ProcedureList.php | 3 ++- .../views/default/select_event.php | 20 ++++++------------- 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/protected/modules/OphTrOperationnote/models/Element_OphTrOperationnote_ProcedureList.php b/protected/modules/OphTrOperationnote/models/Element_OphTrOperationnote_ProcedureList.php index 3f4d37b135..7173d5a0c5 100644 --- a/protected/modules/OphTrOperationnote/models/Element_OphTrOperationnote_ProcedureList.php +++ b/protected/modules/OphTrOperationnote/models/Element_OphTrOperationnote_ProcedureList.php @@ -1,4 +1,5 @@ array(self::HAS_ONE, 'ElementType', 'id', 'on' => "element_type.class_name='".get_class($this)."'"), + 'element_type' => array(self::HAS_ONE, 'ElementType', 'id', 'on' => "element_type.class_name='" . get_class($this) . "'"), 'eventType' => array(self::BELONGS_TO, 'EventType', 'event_type_id'), 'event' => array(self::BELONGS_TO, 'Event', 'event_id'), 'user' => array(self::BELONGS_TO, 'User', 'created_user_id'), @@ -170,7 +171,7 @@ public function updateProcedures($procedure_ids) // delete remaining current procedures foreach ($current_procedures as $pa) { if (!$pa->delete()) { - throw new Exception('Unable to delete procedure assignment: '.print_r($pa->getErrors(), true)); + throw new Exception('Unable to delete procedure assignment: ' . print_r($pa->getErrors(), true)); } } } @@ -188,7 +189,7 @@ protected function afterSave() $this->event->episode->episode_status_id = 4; if (!$this->event->episode->save()) { - throw new Exception('Unable to change episode status for episode '.$this->event->episode->id); + throw new Exception('Unable to change episode status for episode ' . $this->event->episode->id); } if ($this->booking_event_id && $api = Yii::app()->moduleAPI->get('OphTrOperationbooking')) { @@ -216,7 +217,7 @@ public function getEyeOptions() $criteria = new CDbCriteria(); $criteria->order = 't.display_order asc'; - if (!in_array(Firm::model()->findByPk(Yii::app()->session['selected_firm_id'])->serviceSubspecialtyAssignment->subspecialty->name, array('Adnexal', 'Strabismus'))) { + if (SettingMetadata::model()->getSetting('opbooking_disable_both_eyes') == 'on') { $criteria->addCondition('t.id != :three'); $criteria->params[':three'] = 3; } diff --git a/protected/modules/OphTrOperationnote/views/default/form_Element_OphTrOperationnote_ProcedureList.php b/protected/modules/OphTrOperationnote/views/default/form_Element_OphTrOperationnote_ProcedureList.php index d4dc8da587..817279846a 100644 --- a/protected/modules/OphTrOperationnote/views/default/form_Element_OphTrOperationnote_ProcedureList.php +++ b/protected/modules/OphTrOperationnote/views/default/form_Element_OphTrOperationnote_ProcedureList.php @@ -68,12 +68,13 @@ + hiddenInput($element, 'booking_event_id') ?> radioButtons( $element, 'eye_id', $element->eyeOptions, - ($element->eye() ? (intval($element->eye()->id) === Eye::BOTH ? Eye::RIGHT : $element->eye()->id) : null), + ($element->eye() ? $element->eye()->id : null), null, null, null, diff --git a/protected/modules/OphTrOperationnote/views/default/select_event.php b/protected/modules/OphTrOperationnote/views/default/select_event.php index eeacb81552..7028ad1815 100644 --- a/protected/modules/OphTrOperationnote/views/default/select_event.php +++ b/protected/modules/OphTrOperationnote/views/default/select_event.php @@ -1,4 +1,5 @@ beginContent('//patient/event_container', array('no_face'=>true)); +$this->beginContent('//patient/event_container', array('no_face' => true)); $assetAliasPath = 'application.modules.OphTrOperationbooking.assets'; $this->moduleNameCssClass .= ' edit'; ?> @@ -165,20 +167,10 @@ function selectBooking(booking) { $('.booking-select').on('click', function () { let eyeId = $(this).data('eye-id'); let booking = $(this).data('booking'); - if (eyeId === 3) { - // if the procedure is for BOTH eyes, show an alert: - new OpenEyes.UI.Dialog.Alert({ - content: "Bilateral cataract operation notes are not currently supported. Please complete details for the first eye in this event, then create a second operation note event for the second eye.", - closeCallback: function () { - selectBooking(booking); - } - }).open(); - } - else { - selectBooking(booking); - } + + selectBooking(booking); + }); }); endContent(); ?> - From 45e17116d98d3ca598ea2df15c8e719a594286a5 Mon Sep 17 00:00:00 2001 From: biskyt Date: Mon, 24 Oct 2022 13:19:53 +0100 Subject: [PATCH 11/39] delete out dated PDF help document --- pdf/OpenEyesOnlineHelp.pdf | Bin 138445 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pdf/OpenEyesOnlineHelp.pdf diff --git a/pdf/OpenEyesOnlineHelp.pdf b/pdf/OpenEyesOnlineHelp.pdf deleted file mode 100644 index abfd3255bfec7aca706a2a27a3281756e1bcf6c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138445 zcmeEu zH@)urdEWQK`zKsq&YrX9?C$K$?CktzC!taKB+bIk%85nOy?MI1S9q2+*4>N6Mfs5u zXbQj*5~5`LY~f(#YE8+Fs#2q5leV#QwQxq2c3)gAK3SLn%`GTJM6g_3oh`oDV|hLX z>+44?)e-p5R*ZQ=n^O&=wDOAdfAK}ML~hiI;hO}AxSqZwb{NlToVN+M&$=J=-Hby>?k)xY<<*B8;SFgq*f&bK+OW5Bp!^C;iHy@M^@v0aZ|4|@Pt zTD)%ejvnq$jIWzPtLb&aOm}f|>;e13%GbktnVH}PP-fSDbU_LTKVd&sYiE-2(ekHW;c=3$s@>E*~9@GUk|<0YH8-QNJzUo1bW3B zoi&5D*p8CFG4QX?yod(dmP{loOP3!G78IB0VQSIbyI;f7pyes*Ex-AYwnor2 z?l}V&rpDZ+lich>Dt{dxQRSNc-d9cbOO#N;c_aG6r0%iQEUpEt(S3yKOX1^atGNM7 zs06or!~Axo=k(yTR`0WP=C5tVsjm-tcRwjshK|pr$qv^Y@tg9gH{p6n!VPdM5s|Bz zSZ@WQekE>?^vf<)E;>;&R}%0_%Tz2*yil0Qv~^`Iw$Yaj&eBY(8?m{Jw8 z1L>4WT4VY=snh%S#}e(er>UdfV*N-NbNP+=ERoa9km_Z_GGhn*2IpNB+nFirv%4ypGE$OUMr)Mk$?0( zI==b)lTstgAYL=g#AhWohVu(0;)aUYx8XES&=`eUvLqs=FH5!klfrK~Y5Q8`OzFiN ze~Y8BlXQ}Q!B-&rSo(Ew{9wDGy*o(7;7-yrE8NnRiZ7S>1n*Ua4FcP*ZvZ?Y`AQxS z@=;R&XLJB9*op%_G>{fCG3gPXVT{1z;4K>nhch;90l*sSjR4hhrK$Q7Zd2Y(J+~;Z z<_e4MHbXmWk@Scg7@(9G$ypNA>v&ADkB zLEro!R)_rh9K^Y~j%_&^OY{}KhfLkLc;@yV@Rq2i)?C%DxUwSGuOl>P*hIxz;6qt5 znIP+S66TkLXv{ct?nhpIZvD9XrH*}PVPTrX3r!eC^d`qmsz#C@<%#)>E+=HdH;kBD zzFC=iEm?Ns?UFYcU?7j~u)q8n2v`w&C&oFQdoKJAYEmSNDXYsB@#b_jvfZns@8VMi zx-fb4?;kigBt(Occ9jSvSvv(RtC$~M5CrvXz9irAjScJ-*3^3a%)OK&+`4bZ-r6+n zm#KIea1uy2feL+2o|ho=<`<|y4KKDl11@1Y3j~FCK@j>KlHeDZ&>|6 zpgppdg~hhVzoOOZ{@R1Fm`iEOuEjy``hnoOgm@0_?k7y$m;JqDvF8m5QyU`kWj-yZ z*!w|;mq#~p$>P>)GUnj$PX(CkqHpjvsixC!*qaEJSDRWd>X)?NMte6TPZW97D9?G{poZUvFYM}M$N8Ml;Y?MC*z zrux1}O`+D$h+Da7`j`mEppxtxR%3X%e;sZ}Qf>d~$#3K0^>+R3d+vP$_~tI8OZ~JyG0UR`cr)H_KQlf-C$^u>Q$D@sIX*4%tz2M8T+t*FL40h2XWOX!ki|t ztc@ovr$5~Ia=J#*e3k1>=Tt~TTF0JZk)0@QAjsZm*nh*MUw`&FkLaymo@9r3#M^~| z>ZlK0fEUq|Pr?1sV}n>U_?%4lhnPB@tKje0qQ3CB+us8zrdqQ8gz|#0{pFhdod+3y0>)O-&C}uMr zpv5o~cO+c0nq|fXW?Tt2;CSm=)_7+mu>2n59aEzZoR7Az+>;H|=1;5SXwSBZ=S0Br z;!kh0-V(LYK-x1HxZuFCO}1)lTqJtJ!1VduPsxO{>c0~Avp|+R+~osdOaeX>{3rX_&LO}^=Z+Q!=3yY zb~c67rlfVrpz8h)+3;2=*5a!evPjo&m(c}|b792MJCT^jub#9fqLFz9IT*p@-K=+A zZWYG{I@$r}uCNA0HE<$Q8Nf1S;P3f^_KTZA&2gXFI zw>LZwSRrVAwJ6AS?v@<|34)XSda_1#+Wp$uveo?Os+3qEzG!|Z4n}@YLc>QK({DR6 zu!j6>xw!}D>9Cro)o~xVM0v?2(Z6li+fC|gMQ7&UQttarq?V|5dl=f%(GKu^N~irE z{Kw~yFfsembLyrV(*j44b~IA24;(*U`Ta>9q;U$DNDCkG;b=0$92ZBV>y>%AJWZB4 zzjDMp&!cg0BvaEz;3|dd+9#3rxX|-z_J`jC0l&DJcFD7bkO@z3UQxKl$3H~Vh@dD?8fJ*ajdz?o%wHKC$ zv(1ioUyJ4q{^$f*?oVb4k>`CBCfe@KzuIGPr97@^j)?oZw|;|v>#t$ZsYwQpxR;4v z==#oA=6B?L&ro|_9`ejshLYHq@+(B;XS%k5?t;Jvuuxp3_@$~{p8knvgn=_Yk?5GN z9$UvlQU8lfl{_R{myC{6vdH_;Sg-!)mS4569x?hp-(FiwXnfnpxzA0H8=+;6rhrCo zPqE82g8eb_mM*)n{pp>fjwT=UwGo#=_nJ&hbsgFx9zLupl8oNbOM@Gwpe!0`uaB zHF5e$ZB86IEGp{YnB!tIXHLb!>cIEdfv+;>d*AYfFZ2HjNYnB8SuNv{Yr;WbX}}$? zXysJ*CeBPoxMvL79>i|+L&vF_tOwIu3WU@2+I1r+={)i0;C4dZs;I>1{s#1wFkf}w zHh(yIWWyb--!kmIE0qVv3T~c8m_?&ak}82@Bc}8CW_bO?dV{NS7BwNH3*(zqoL}xq zcw}M2na73NmbwJlPtVkf%>(&aHPbJ0qbs=aTe!+)jg7Cs}@ zY7t&korG0HJ*4aH=$%TE^ap>9F{O$#;I- zR=92U8aDP-@NZd)=ztsAsCX$A<)5+nJ&m{{Em8GI&2Dfki3v5{kVK>Z6BW&RP(Wy$ z_kw=g97)f8;^C8KB*5=$9zt!s-k&*=b@k%C0CDcgkRxA@eBTeA?uJjByliYv6K=v@ zco4K4f*^6q-U@O>xNbaMP~KOoAC6ZEp<08^c#qe2GkT(n<$dpJ5{|ceqAwD^esuiW z_2y1~op0i?%fhqoBF5lKnhq;0ol7&np{c8z*3w%B{>~|3>I!KsiW%QGLT4SPt54?n z$NFB`y{=z%B02Uw&;G*n(pyRuH$m%p^mbF;L^I!Q+{+mvJQ6-6*SndbAM^vV>Lfp< zGBbqrYQ%+K@NtWMyMN5{)oBt=BFM8~A@Y^X@fU5##<$0c`I!71@QXwAac6!H>Tj!1 zkMK+#3Q09RD*I=M!IkV!N*i<8T<~Mzh4`UQ15a*9Tf}`qKXd)b8q%M)7=k8bI5v0~ zhB@v*k+1VLISn_y>Eh}-7Y&V!^_{{Gz2~G=1Lfa}yzIUwFm4d}wR-u0QRj>~h-Kkm z{$I?8y88J?>YV-7^&gqXhF%Q^2O?(tFwiJD<$WDAf=jx3((Ek z%)*6|=RXyaKnGXUdl$;TFcgJ36)ntdzDNK)DfK_1D!BQ%SvmM9`MB6w`S=a7P~h{w zqy26DKcH2`8EB?%;Yz8G8uF7gC7XtYrz<6!oIPrIiT{?8|1ISx4Jp|qfp$P=b;mDe z7LSQQf1kE{dLisx>sYSwB*8{G|d#mWBp9>WTe-pEy|ADcS!!1q}_( zzfXMs^CcJSM=bV#dPJdRN;Vy3Q-Fope>#=3=cHu+FDvBi*(rJd(?-sogOZ*7pLiQ4Y|Cu)>o3@QP3dr+t^HQ?OTG&`wyHav- z^P{+c;k?$>;y!2FHI$U{hE8;$ln5@mHd#sY}?nx~NzxP+kVg3WyEk{>z@h1_|C81rtU7debBYRX?3wbZ);Rz>1UOodzSfd zOo8^C^6R62FaPr3Up@GD8T@Ms{B( z3$^Rl1d|1#{+BR(hlaJL`+%DtVGrIH6r%#?wQ&~#(Vlw?9t<= zFX=y20#{mRjeP7c_URm2Hz`2xoMLj0K@X>GB}k9KV!HEb+e<~L$N0L`;_}MHq_QZ1 zJcF^s-=<N=Zxw-w*xhRpGncMcqRX_f*yX`9Yb2V0@X6m$=ZZmILet;E`m~Pdx0O6q|w%hyLBhdZz z!}kTRbCf1UpF*!KEwk4 zvR>!8@7>8rX?YU|ap(8#Q}#ac`~dgc%cI<4U!6ZbxUW(2*1`BUmI?Pcw|(`*_3y~P$ei!bjTTH5N&Zf{u~9}pYS z!;i^`{|ZB_58L;ohe+GN>G~yZLjqZ<5i5_^X`Y`?+kL=xgP@2)oY-HoWU-j_TR*ck zlzk||2}$3vFi+zJ<~0d_s6fZX`b&~d07^=!Uo6obI5l7yA{!^j+l!K>;r`ml;pGo6 zP+t&ppaENuiO;kMp6jq&4OT>5Q{-d?>>P*2OH@WerLmvz3W4M zOLYYN-B8kLvqG~o3;|~J8lOb2ws#g`d;! zu4);wLFyDByHm3`a!`Hxw!wu z<5%(kyg?Knu7vk>J&^1nhii{_a`BkfnGnVZQ4s%q&_=ji34rt60(F$o)%>Ayk%Px= zzWB{6u}1-sujfuWB5NKzwKT^WT|~Xj%VuVCJ#XgXWhB|X7it-d=Gu+2~?vqhMdb zHj>J1DCpFjDx#@*z6T^O6lkE882J1}lhnX#(}DtYSMlWb5_$Y&)WJg|k&gYZ5@=&V z5fi()ks{S4lnJ#IkoruQLyC<s|`TsxNv0ZUxw5lLYnz?uIHEqL(RF8NP>&g+#2L zmg70wiLAN}cJQ3dA;JosD%a_=AuX`p{W>-i;wYF%tBBy{dOHcwA~MaRK*%YXuyN#ijSF|-s z1GCJYZv9RN&q`_&XXiAlOE+0#8I z3&w)%LQC#S7{MRGo+Sd+ouz?gIpCa{!0OJE5DIA9SuUQ(!9wHhq+uqg^)`%6M0@r2 zGRfH5JZTr4+Vbh4HcMO2Hev>J-Lvg;v9E%#U;#;$u@1x(wm?LntSO@vt`&_$#HELh zV0B>i?V`^dvuG-{J=_a&GndNf;CnZNM3F_iB@dbRLJjva_NU+KrY>$0*Eg11jG3~S z;z1YlbXe;Y`*Q_1SKoP!HLv__&gHoaOVuj2JbE0s`&WEcU?in8dF*E-(L821Q_7;( z$&YQ)onA#_{Z$R@r++s;Z;-L(V}S;W;Y9c8Y3*ki30^S^rRq$~C5CzgfMA>Hf@xpy zO~vkb=y-`BlNeKC<5*e4-DFfr=&m8@rg43?@Qx_DM~`c;bB~jvTh8rcO;1hGtYRSJ zD%J`hXcqacsZDclR>eiwVkW#D>?h**Abew3VcUE+?k4U){qvt)Ukd%=XaxlCR|s^f zi?wjW*mEi|snjCS#~C3x%ulrH5uYxe&MtGef%uf}=|XHYeFy|JqqK-MleIL!AEXPr zJYOwguQW-H`2~_J5=c%{l`A=(r|r2*@DemZR90t>Pc2;$$_;y&6#fl{ZXlTWOUUFX zQRaJ;mF&`5Z4W>a8FS>s5+59WI%q-d(p>oiS(e9ebC>{uCZXR+gzAvU zOO3*d_Yky1i9+o(hoQHs4O4!BhlFpMH4ijf^m$*GT(zAn3^hS?s?D>}E+z4l?4&6! z(><07XuaK9vBlBs`F;K0{Ph&F%+TLdaFhSWgCsCp7gYbeTp=YbGaU9_tMPuWu+c(* zL4Y$Y3DyJeP8sDLlF_4N*~8>rGFY*Q3DdA1OKqAp)@zXmZ+ffkC+a(t_zFM-4;vKQ z)^Vr{%VGQ}0r7t~0DGdVi$x$?3u0Zqv$h@|5@Z{Ho@F9zAG*b&I=p~ALz3KbpTG@x zGMmMQPRpC#f4SlVUa_B*mH)~JZAu?g3}%F3E$za!LYe_fSW9PH!t4Mm)+hf_Q z*68Pir^nG%9BZZrdKTL`jb zUN>UYaO!SPv#F&W9MYpfq_wIQq0e$hqUPWEv#mnq6y=#|PFZp-R5p?G>!8>~DJND{ z-MQU}AY@UzeOqSW)1epl1CYw0_^Dvrf@CmXCgsg{1JWyHQFkCx)wSfI#7|6e%JueS zCat2R7u-e0UtN8H6+xBB1sAUdARp0aoThEboqfq)4%Us{oY~z zYn>KZ*NgqPpANG4hfuoQ{_#yRzpXUQ7b!tiWrt&&nj}y zz=9@F}3KD0lH1$rf&cSmd zfkuHayx|JO_;bNq^{OOc$lY$GglZ2EK|!k<-}UJ)Bcj_AS@gMvJg%*C=4Fncdzt>w z89U2VSB;1@Z%f^y3AIhV4h5>u3AT_RJPa>bT+#coTYOkP6gjh(dal7H%y3jD{L5!K z(@3{oZ?eN?yX&b7pE+^lD^%CAL|2z>4}J^q!o(=*!e8EMMQ3_7DR9UX2_b5y8{Ny- z1JG#ssy-*}OxUA`lq_NuHz}wd)n%AYGP8TY_>I&D<1s2`eYj)7zBd)KRuo+ADC1Re zCn1d0Dx#)UXLp4m_vDuk-paAMf}={<LN^t-1Vg_oz#p@^9pQ%bzfOa^X=vHK=o1v3>UK~s6w;Hc>9wzi zF&n|K8349WzkOwoqe0`lbs|4Mv%Mz}k;@8g>_kw+^X0kLLp0AzauJ5VDkXvD0dteN z-pwfB##SOOAF<{BzQ>Z1>aF3|kotac&-tBJ!d`UEJ;JA66E^b#h;m05A9n4hXDBiS zbT1z*6h2$Vd%H%inTes{$J4We;44q3{}DwlEZ{Az^G&R&J^3d2MofA8Zt|U-ci^?F zHMUUO>GkQ!O<>#IJO$aIn^CDhxYx1eP(J$;f!MI%V347|w3?w#mFBw}fS2bD+^dh= z!*xL2u@kcop3M(?VjVh5bzJGL_@!w@FIx$3CRN4;|BYXUh!H zf%X(S`+kQ?m+g^L2(-<>^M0z2;;c9A`r9xU=!fO2@h-(wYAI#<`qh-ZmfMTN{s-e` zCGc)%D0r7)?Au~$9MpHJbteZK@vC|EcC5ui2F1hFH)Y88<9p}i+yIScCE>P3L$sj% zLjhw+KFDro>v0aY{LIlv+bUEAnjzSS!=sN}myf8KXfD^|;qblqrR(>^&+7qF^;TCD zJXeC*b?$r9xt+lZI&$5Jn1xF%8wz|~I@i5y4lwt(vpkQOc^#OFkB(iX+J@5bB@b#|4yv%z-hfZ#{|A zQmDLd2byhd4<#K)W8rRZ4(_-y*>3Px%^g0YO*jZidqm~akbW{Ew9LEg+4851!RnWn z-f{XY3B_TLEhNOYAbwQjHm@hW1V&t)z`OLd_NZ<4gAGYGuhqqiVF~pu5&4=@7UQ}r zlo!=+oI43Q8~N?up)tKjy)W6pRN-xFp2~RDfv5}@Q~4VGZpx&Q1r3F5L=O<^gF(+) z(g#7DNwXkuifj_IQ5Ib!vav#+jID{w+~=*BAM*C{K=Z(J&@9gXdgy`C1%R-tHmb{+ z%_+`>o(V$w!d183(9JrBf}CL=UqTkuUb^)}y{>Lv=fXMowCugdViDMR6nS&thktak z&1*YVVZ}mDR-wPbxHwIve?1(vu+f(!AP5lhx>~!PE%#HMzG(4jn{g22;hY5!ar;!J zu*a9iK+O_lb$rmD&mWv`&(2nW@;^gohA4m(Alr{dd)KxRc(cFP{EYrfnSC$-SsYTJ7cC)R1|4$)hANy*MUw{TO}++GWc^LKB5YxIXZ+|b<(S8 zz*c@_xEg*Oz<4)SNf&C9I>+SiEprQ#s z7Xak5a^rCe0u1T%#W2;Ag|Jm`a-rm09ceMNAiHXDQuM>d%R`O;F<|!T2E?eKxL(ei z?RLzU!9KIw%sR+!6UR-=_Qf@7@EcUXfyK9aia4j^jzsUcBhvoe)kL(B;xmUdZ?4*u z-A;^$^N8usdAnHJyoevKsHb|DON%FNyl-|}EF7LmPkR|PM{KIo-E&bjkmOgC30hs405DwZ5bz1>StQQZJ%)}NqDC(p3PC=SGUl$A)pt5=%e(fgpmuWr-te| z_MT?Qa>Mj#q4MiKiGaD&!nDTPHlC&xF1R&V%T=CG01_he#adL}r(eWZ6uzRvWA^2% z6VXM@Y>)muDrP{MNH zIbH^H;sF&Y(^JMbIt`BEYo1^>BM&6RKd#~Xk5Q0wWX8jE**ihe8x>``1d7D6VrkK< z<8K^&i;2-KuGbT^!vq`CkjwpRyY3%hSeXqd*yX$oohK1S#Yk9o-#@H{Ttty;BehRv z)xZ~Z}EwEsT6vwuuNkae`0e{95$^mhPNvXx43U#S# zl);H!?o_ys(h4(hN~=f6FT_{C_v!Qbu5AO4{+Pq%7JcFI;GsKx2V}@fu&~({SB0GK zq#!Bua6Hy<4hZyJjGA4RSSx}JMkCw5U53Q^okO&_830WEyE8>Iv+7qbcBffTZc6F+ zM(O~xCHJX|qH964;Tl1n>Sp5&ME`i=C3o9i`s#U;ZRq7gqrm;w8#F+wM@whd=u*P7 z3C$;ADhk-~{!#W8 z{(Gq~O|VDmv3genE0&w2)gkBXvy19knu+7^I*<9LYMSfJ43RL}YWA!ar-4F10}K~o zIAxh#@6r zf4(4GI^}5hRd|=_fUfFdyf0qliFT+(__tgGXSZLC`tq|LTGI!*$ISFfA#qjJBzpc72gx02p~vsP?X5#sBue0z~>F z!p~@G=4&mb$(FONgu5E_0{73F9G+D{P5U#WLid!d6V6cqL)hC?1F0yRqe1nGLHub2A^DdA-8P|GD~F^ z#Y}nC$2ImS^zCXhHVZWuN%9Jxrj2H0np8YzN$fYc=1HE?V%^@oES|=~1(!{iU2Eaf z{t>uq4R~KTE!w8%c6xMM;clMi0a)A6=l0@2d;qaY7_^V@JcxxE>(}|}dJBa4l~6W= z9$LfL819pouTJVqg8zVVDh}^mwe`ub2Av2r7Cw+a)vigvIu=jTly4twvaj5y(+O`V zsEN;1K=#89@Lq%(cWewc?@yOu)6w4b_(L=!htr>R!6ZJKCylEI8Wv}8#(T<`w@v?M zQdzsWU@hz%{Yb(_#{G3Js94BjM-bN zMV)o@Hq!bf_3BS*-uq}yn6hO6cp|g*g7b8>%hHilsM7(x-B~WGaom6 z4%1h)s|@3=0lKHNpGjdZa~# z`t8MHSljmA%%X!)lWR;y!KD$A+G*>MaCA|v?_lZLEnY|1Z`vo|r!p#)-&^G-dSmj=o-oDE3vI<@mVh4KIByv^SJNLyw zGkjHjw)8qp0^A!Y_%^+0bvp01SMulnw9eodRo+9fr#-Nk55aWJ`qJQ*?N1xlPbv(HME?%l{!Ctfd&zKqyAQ_bzz2q zFr;;-u!jY0L;Ew5qs!~<%y*zpr=F30xYe%`{x$8khSQcy9vc9}a!LEcyLdg*h->J~ zpKD^5h``BSIhnlkL~6DELl?u|>+(ay0f7gz$9{HvX&@X;E1%)#ygultNVPz`rZ*a_ zio@Qfwngt8*?SZk4R*0V;!{Zwis$8c5aKfz2s2b=aM317$R1`CDU5knQk}V%9o2L* zNiA6H8{v?w?pxlvRbq;M8`E|>OdUslDpAL~`&qN*n~M_}pUP=*xqjaY3F*d!c2m>E zOgP~wZSX$YNs|*Z#G@XX=Io9I%HtC>>#a4l(pqUci#$OEH$73&LY54|Wq+wZO=F?# z3)D$B3#fR2v(zHfd1A}E<$^X|ZT(LzA`AXgA)tI6su^R2w&@dD7Ak$S#nf@;==sf8 zLU2R;YTMihI;9R_&##FVW?SPho10}4-rtH*v#njp-V5h@bdYfnEJp*r)%O5f?UbSL z)9}pld=SfA`B45-J;Tqv^-}g|d4f8Ex3xyKP()aO&M);XB<)r8Q3fi}JxcLxQ`^Ys z^n%t?0%-xU+?(I6xp$PVDgsks?T(|Iqee@uaUXvDi}s|GR=vw!^xY_tNT+PAdZP?@ zaGEhk9t#)PG)-6NhNR?zhx$0548rR2FdIk6Ox3JwpMc~Bg^R15-krlDIaN z-l92-ezz+Nrti6`Meo`>S=jyGD6 zvaOSzFhWAXwwsympO-sdTFxuVu6K+D5tT+ME&$Q@w)3|1y9c7FwfVavGfeEir`U^fCKagOQm+pbqkC*wuCcvIa^xQ~rvS z`%V&MyyC>SGvh}lywcVwxXAwR8~h*fW=ui6xwcga<9&~7;)#16Q1W-52yn(q^Sl*S4C znK2=71a%2bUw^pX3ofy)0BF>5*T`dMjE}GjaP5`g89MabyXG1*OGP(-oGka)Qwnd> zG~s-bf2th4Kq=d;^Fh6 zX;!DU*Mp=^AjU$tT<_e8+2GD##EhQY#vs<9wbw#zUl_qws_{^T>FCr_9^+i5aY3Wp z5T2$QzSF}d(xP+aod+ytdBni0KQV91iYaBkuTYd+KrrF1n6KGxKGxJqH|og_Gn*b_ z$#!qnA9~gmyMf6PlDpUGtZGeaD3bUtai!Ngy`Z4aQ^hIm-HX88Qj}}vVtCr|t{^Jh zElwiY_OTIWv0Ra<&j6%UI+{BHXoNL6Y8eoHa7d%kF1Vm-5) z6AkVr<*e&8M##p^=u}77$$_FfrsXyyzU&Y7Dw-+p|9Bo@=&>Q`e8^JVJlvm<5hu(G zXAS0KGa!+j6DYpU526n^}RQ*XyE~1*iP~M zQrEdd4Xcq$+i+;6rAb0eZJir2;y>+^xA0|Rxzho90H>)b`x^GnDqJ<4TrNWx=jwH z0cGN_2-UyKwVLE=HAOPZkl1bN)L1H3nHn5vW!%kuU^Dm8+)rRivR|$hZ<*UPe$Xf& z(g)Umt}ym-P{f*FXe^LsAgey_p*^=AGVgF1B@~M)8d1p3v5OY&KWl6zTqN1&z!0|dq|R$Sl1B*ua!0F zRoBFiXq3RdNblEW2nXMWT)@}Ez`v(NBF?_LY4{?Y%u%6>`gt%Mm@$ zUGP+cW{y!`^a}SG^&jf)OU_yj2KxOfRI~UsDLrtJfTf(7;~~|fRW%f)653imME>|- zGM0=@Gz8Hq}@M|;dLMO4h-eiz7$;I$0)HOv=2r4e2Q!6@dhx#?&n%-?ewqHmqX>KIa}NRo6~DpQkM_9&ddFdMLokABw>P~|@HT54E`P)FYkY{JJli*t z-z$)ZEp#MU--lt!{I&5>tyk+| zrfib4iVJ@RqO3W%9&9SMG;6`L`(lb`sRd+q!4$e!?~ei%i&s+0FQs!2`vZKBcqU>N zWW4uuaw2*!o?XNrZn-+{J$-|j-9b|ALYORHbNwf^B*l=Znhkm^kt?<}lpfIq%_W#K z8DalE)d_4F|2CZ%>W*lYu=nm&n48Goq^R!AF7|nUCJMZ5i)<*;>A&B8SMNimKWb`g z5?eqw-JU03G8aZjMCMs=@y9?sZ=OoOlXQ9EB~D)=H%U<9p3YrOW@8p?*>mH(N2y7g zbRpkzh~65r7-G?g1}23<=R;G zCegdEb<(l=u}K<|%JQ0yEooj8W7-)A{F!Kb+g4oK-?5Bq^mtF(5^9&+P_YnGJFDlo zfuX{_lL@3AeZ)&?C$4||Wf*X?tgDTSA^sUka8SlY@2X7}fn!yEWk zm`Id`56n?p9em`j4>Twm2Bx0qno7(fgjphO_gn&MDb1OLXIEVPxQY|GE80%H%e$(8 zP_MHB1FBn8vI~Sn(*X*DK05(^Mp<0-*~i=)NGyn;u!KTbNw zS%3~z@luBZiq=!-{v&PC>Vyc%aV=Xj02`cl^z3EI;{05=iZe7bhP`fWinuyr^gX&9 z=6onEgV)4^>|@!3dhw>!>OFn-a4gw2%Lw~7aLy+f>IBVp037QVg_wS@WK6%Ru|U%R zef1-TXa!`vr;CbhYqguL@!wN?3hy0%LnvLkuY_7m`6ZhV+v5}-`@u5ZN$yY`&QNXc z(5rNh<$-XEDpF|e7R|$taBMKckD z6ekY9?;e!XMBHwE+l1VTr_S&=;LR^gcs40GScY@Mc^|U(c<)EcLOJ*9ccEtzsE zRz1E?v!4dvpFP%-Sxt_8rKn@3xE2l0?f($!FjgLY@XXeRUc=>n^FWGQ3z)0=`?9uM zd{Y^8JBQAlmNdXm0OF0+GyC>=*_?i*2~>Ra7}5BqdirB|a_Na#YK+<_06v{k;$VBB zDm<0zjeuP)ao1TPPWmYJdK@6}-cn7McC)+FOrm#=xA(|fMjL7tEh;~|U9V!Pgn&fib`d)uNuloIiccu6xvVN#k4I>X2ced<7AmsfyqSz?U-+9@NyO3T7l?|d1 z!I=6{=F-#qQJdUkR&g!+*7fh#lxzwU7X^$Nor-@*@D9hERf79EyhY9T^TG-yb(*Wl zB(CjEl}q7o@@_Cjr5ts6{S&#gjfQXwvJZwLWS&(Y^~Ed43OF#=hovZ6xKDx25V)1& zSD9e*0i~10qVp_Kf6G%7T-A=!>`$o>yKNZ?dPktAS&Pv@c0h;sbM1FYB|634`8l`c zm>%@*KEi2?qYyRDc*a3c-7WsG;Jc+SYn!I(e*U#*xoB;3gVBE5L4usSQ&0THacC7Y zG*%nJjlHfnA)Ho9po3{QlF+P0PKc+Ehp9jftIp`Jf*4DHlxk@hQSmIaR-V)r%?p+d z4=<(GKVYOO%vY2vVGp#fiBH!!S8Z|dW0CbPCI`jfmfQ5YZ!F+-^IlEu)r%U z(;5b=Y0T*&c$6{hv{?j&HNg*4o`rmz?pk9@JjXEGJW*Lz!p^x{cq-3+lp&~^i`wo?oQ}SZv_WVKX z)SV9UM5aq?i$v2TZ1X_t`@X6D28odI{uuMh#M@c;%+HyF6cSBWOE*1&;%Pb#j}d&V zb-m)q*NPqm%^c~Q2S;u7dmB-$ck3>Yq8(gCE2!6r9=tw&w29udf?;TFd!d&PBUeEg zz%uGgU?p;sn&GSfGMyS$Th@DRJk3*8I2}u4+Lp{(pj>R>^QrgMcvZ^MX}runk)&1O z;K+IhZ&xsfm2X6r-0(*Bo83biM7(alJg9_twyTaYx@8Utr=zensniqaRt#m-1-#MR zpV^`AaX{)ftfrvs+ftR8?RC;uPlowg8+FUCkq#eQcgm>2FXkOS_}*VDaN{c=$TSGbNYfIv_Co>LkDu=mzN*c3@-7RJH!qkGi(y8{Rm_MNr_T^jgg{HNBiUP@kZ$AX~P zMnb6sC2|@s!4a-4p{+iV2_F@s@ndQ*5>B(2uw!w<5DhO#(GRq-zIC?yLt~yaK-_zz z7oFR}xX_p{E+{}M#--Vd-NvoUweazfZcgM=orc=2Excm+Y;ps&7!ym8>aeBVhNUXM z(h@xYiRLy$-gCOGw(keuvjSaB6ft#}R`#awYiOx3?>b)%rYAMxjf7ZXSI4KWCTw-4dGS`?e zMB*AH$6N|M1I;?0?23a|wNF_|w=wa0x|Oi!t40TPbL4g!!o8=e{pdGfHV9R=0W0&P zsb}<}kKYkiZ`jTo0bmDJ_FH!^Qp#q&8YpX(#A|hwht>mh7?;lp=@R~su-qMP)&EVk z0yOMygdT}_rUWyn7k*+IPqD>P?t`sI`<>ZK(JDP0HUpkvc4rW!8)(*YTctM@a%ZP> zB2WoY6)q**0OSl#TB<>bKw}l^-!E+Tjiw+fW${Ya@G+SPI9W|-t|XD+L_ZlYGm(i` zkNEpU+W|q;Y zW?P&aA|!eKsh=l3wd|F+(H49+8Z24);t}>Hg|NXd+@c?rzj)emCEVq^Jd3hayz;+y z>=%5Oyu5%Lj4MlC&Se`bKTJYWN|#Z-y%9lKXYa)O^Rb4Qd^r44)ZVGz|7O0BL;pn% zDYSXhP_#o)&w3e?CB?+YrMBb`4Tx!T?_x-0Q*F>6p^A_XFJ}-mU2?Cd0Dsi0J!c_M zWVvFyK&Ekp7jBoAh(Ltsio)Js-K6acSkC0H(Jd2J>&N3IOe2Hd679MvHZ0gS9{e=A zWw8CQR6URqAyYE!aMu?xo}ADsjTbzBNwHAfL*+A#Jz7YiuwMvt@Z^l&UpupM=U-i^ zzMvCf(u*D9d$ia*!;#6a*!Te%HMpd-X9DIWK6ebuWH7J)6VsHZF5RybTkPHfPS8K| zC;QbSTd{rY0-Okx#wNzM84TGXeY6q9W5x-aur@mRrgS)1xWudqcE+oR zj?*Kn7C>k~0e;vLAT;ZbjGR~BdO=I=uG?c%-mTHhPSvb88sDN@-Lg`kLE4}ELt1~g zEj|<5-<-@tpv35ev^vnH$XEBBGC(-)+a_aJ3xb3R{5_#i)FveHwsdSQorP#zx6#8$Y^f2CS0 zo+T2EJXK8KCkanN>8wt5HBa41y(`ff`!7XBqo8Y zftpYB=^SQHWb5%n@xuVYi3+28hQrX$5*3w*c{8FiwiPZeK+j>Di`FhYR(e`chHAq@ z+O=PGCsdYg&{Xswy4#Aji!YwnHM~p6oHPuV0$ifs5JN4q)fB)bjU}3%f}JwY&=lZ9 zJnX(gUYfU#LZb`qo_XVc5{xDLS%KCo->U2laHin%(kY7Ru#1)H#FWcN%WPXP`*N;N zyfXpxXIA$$OHCo}yWag zieFD|&c{uS(Gr;CBIc4dX0%1^p*5%YDXm$Z+3hORso55b4>0;4hu16#2x&}%N}0v9 zfh7Vz-G`ikNfHTnW`#H{J@4QpND9(Z`*6v$QC~$#i(Tp^O{WQTjLJj zT|!xvk-X$h8FO~-WJ`OH7d5no)KXKW8D4PyRkigLD|Y z`HivIA~`bM6MgEU>8DW!Z=)u*g*>gXGNr|FHL#!I6VovY@-o%-m*XX1mSI%*@f~h!v`&+CW^GUPq9d~%g_j&9o37Go@>9~PQOGSH;MDh#+MQ$39>pG+AurVTMVn(EiJKG=x0qDpO&pgs};%nwIz=rv-~}Jg`D`744u~5*V12-sD)m8Jc&D1 zdBhIg^e}MFA|KXry2>omO)@Lcr6XQBhb)`i916&iW^Qo!Vmnu}U{njU!m}MP zwI`O^+aq0^c$hEH-A9Wqfq2@9?X%T*q5bRlHu_6$PBA4+Zdfixg>${H#cN&DFL4XF zQ!dAVBIJqjK3Cb1SrQZN-Wq7tjjY=dO!N23XzOtCT* zu^3fT@dvx)yHky&H8LE&gjOCLBYU|HR@Az&{Tu}lsVRt$;sF?Xe&fQe$(L@Fc7sgi z0S-mW6Z)6{{LV_p`4Yv^NYC$D;=0!B5J&WU#B-q3@h=I5U9D~OA^kLR>XCMq=S1>! zceM%^x|%hks6%U;pwJ(l0Y=vb*;i-%PH4Oh7z}Im&3;52_Fw-`z#-XSojH0p^(eDE zFwhJ)OF2P&xGD3X&^9u}W+15$PiwI_b7DLW&B9)EXYQ=nwpL&tH%E^SvV9nRLQpUf{ zan%)_pv|?TL;XCKBgtO-t(aVzDZ9eEF`}1w0I`g}pgb0!yY4E0Cj?G_Il-o6qyTef zIwW;+=`f8@K5B{m_e9pRX<`jRRr8gnQA_Lj2fBMwkA`>hR)xWwp!rr!%w7_^ zZrNCb3gLv{#9%H5$1d8;eiS`Dfl;?3L|z}oM)geBSRzlZEf%k|h{9iKQuI{3A#%u^ z=3sNz?E{-*dByF)!&v_sOG*BzH%IM*!5zBrhn8RU>q8*bh>jgxlcnlRA%<6<+VjXRYL48T}mKP&94{WZ5eX@uksBwT5T=y@>E@fci%%2UA6S`9lUeeGFSk z%R}kJ+rXba4q70^-BQ>ogdJ_U?Y&uYs=Qz2zGN+_Sf_4`SHgJ){8RhehfB}(@%r4BBiYfIqBuVB zS{gR*Nw?#1@J8;z-@Hymx5-ksvD}nyW>IW7&YL9ec;IJbzh^AeYG44stUtK-OQTc9 zNSo$5h04Q=Gi-zYsz{B=@1sczQW0JqRhC7G3B{po#*4%z+PCtv?51^sn{c`L%kFX) z8KreO9N3a*4rdS1!d=Du>*%WuXMd#gs$x6t1XuWI)@M88^N!(FcjN|P=B}=!jEi8J zu~GYE6dzJ+Q-pSbvT%ca>9SHx^nX$YIQP5(qtU9+^+BvHjzkgf@5PR-Poj<{#*$rD@!X>he5lkW-ui1$lG%PL zm(sbWRoxWMLI9c3sJ&qEL-6;nXn2j!)(l!^2 zgQJwjNY%cD%yfMs7y>l6$FB;y9*p3ycu7unPj zp88WN%;NI`$XRIy$Q{EgRr2;dRbd`Qz%EhHl_AyzlBBE_1@{faWVH}NZLZp5VtJMS zc3UGUjPCuGf+a5)uOpXN_E4&cb`1K)nz$x9fI`T`w~~HSJ?)Iz);Y3V`P3fsGitoQ z9d~%#xyc)J0+u1&Z5li~;}uG?V|?MK7% zDKm;~^C%8J2FB2mu~j@>SYQ#2!jW7X#4_7kGSgvJM2=@)e4&3OtzYa#-c!zyA7l7Z8LR?f{u@FXwq??bO$sX$hCf4?nDOHpUIA? z>Kp8rp-mo4iX1O(@56#VqG@0pm)aCwyzC=&$ltdCP~yT%$S&v z$L=kwRMtv-KxMnp*mV0rM5S6$tV?bs z*OWH|z8hgy%@i4-Vf=iG?kGg*g9IuQj{39&m zOuo$M;Nhy=Eg)*utN5spN5HsEE-W}U2zHU0$hF#hkx$~&pSx-{G{~&nRqI_Ej&p@VsPpC(Z z)fG|u;Wn18KAQ7$?A@|!;htvl5&Tk)W`ua729>|Nh!&}?eMbhNmo)`ur84Wr2I>@X zK-jUKI@#-#t0>cENj%-$o-&&zmP)TD;cI5~#P9OrXF(%_C`;%*<&5MmNHM6{5 z$*jpPbslvKJj;1xJ3fRa|s*l`i*WE@Mr`)_$74xkzg} zD#p+H348k~3Kpp@YVBr%92O0BrA)ZdCh~(EwC1lF^sy?!hTf9e>qAwf*|*v)Idno3 zw^JaI?k5#ioh<|DfLj_YE51O ztvoyQF-8E>15>gLj~SIH&AJ#c)6%`2EKW6BPFjrEM167+f$qD9a8o3689s(a(+&9R ztJtCYY`4x*eNm0s433GM?gs&b7f!soW2&T3+TWy{e)%vQhNts)b zTbHl(AOSl>+wjuTxC%3w-}b@IcH+A^rT)1-5?m)n+y2l>&KUtwaLHgB$JmGFXVCdS zw`R}+?aq?OVVXWSXw2iu^Y)A6!2PSY@@q#HWdicuhZI*cV6>*(?YhTH-JV|+Lj~#S zTCTDGY!wFi?)j!reLH_op1zb{UB%(hURg4%RJHz{YSzDrbNy2y>;FVFi}Oq1 z>R*~!>`ecAl3D-K=K8-RnYCIwR;Z3XbVGMuS%KCs1Wxn$Eu<1`Ymi)2Km$ygt^%_G ziB?1qHfp&n<}pQ(7>u@G3JEP3{W}D#dbmhb{}juXPh6_GS>0Z`Y^ZwQfn)Yvrq|@v zQ~S{-(1YWv_xba4lK|ZJ_B8I}^{+i}E9X{SIT_0S;|&&K&q|=PSm3Klf5Pu$Z|eB- zJx0H9@G~9l;^!g*Z-=29WrC4wpi~?IzvuhIR?JZ>_OsYaG5^ObEaGJbNsAtG_s7MU z-}9LD*2jt)4r{A1afNf&-%*AFE;(Eq)nY@e3`0r1b8-Mo-wk$&9*1hSGe_o$V-EDP(2FBBohj@X! zL&WVk3T#ay;$w47jJQB@e|v95wB@#9u`n8nFgWX+g?KgGRO(qX2KT3&RPB8)&)~!RnVge;93%yHu7;;n0E7}_GPzm! z6a5n}R`gevR0(SMbTMNFxm~hxWmRt?)Un&<1n*FfM0_Fw1h`f{LB}oUw?7@X7f}H& z`Xl4mg_Ki`6XAY`ko=iIrVVZTa}fKiUs#_0gvZ){SPa!9(-0m6^v4g+R`zqqmJA9( z_Dgrx3h08ip2*IB1atpTA^1TBn9=N6^?R#j8S5)RJq4)iy@v*WH7Cj^TO0U9f4eQL zX{AgvY|035YdgXeAvQP?GI)}702t2Yjn~zV)w_)CiO=MimB_~$>I8)$Fa}wDoG1?$`=wQY}WvDjiVz*f_IHukQtN9NaxvdBz}cvo^(sFucai6ryEi zbPA2eYZTPyiHr*K7uXbjMi^Gr%>+Oh7YAuh;j+mSyYF8~gKImcN~S|egM}hUM$%8w zBz=b^emgzDtTn@BPlbXAa(Wxi4+`fA*h!eb*!_zOo?&Pp3rRsdGuyuw8WQ~i!re-B z6>#TH66$q7QO-mRb$2l{RAiXyqh~NLR_$mQ)5Rq$fGNr`l8K-sQMcz6ZHswb#Vb_R z@LtA3Q7k^;Z^p-nDfG&E24)yxaH;LAbU#C7dn)@mO$2@l_Yj6$A`9_>Ds%cuV?SlC(R)uWXt$%! zfD$EdP^4nBKOfUng@1@hjV9pC{Jy|I4&Lp%DLMZxC49-&|1GYP_{b0Ce8jeTbs zDy<|o%jk@_d6U2X^?akNe+-fPU+|~vQ1Nn^YZfdi)Nj;$_N1b^@fVejyiU|{1H~Y& z32BYN0UwzNp>UEhs}cdFd~B<)$!x@>{R++afZpFC9luQ>wJnu?fVL|j!Omfz44WqA zn41`e@dw#TVy$x4YdP2SAD>$vs>0;Nxr7`H6I(dZNroj7x3Gu(0f9P|`hg-!hREK^ zdP>_dP025b4M^<{9!YrKbcB(PwBf{}#^Aj;}(Lh98b7WB5jKU46n z=bfBayV-$;$HV*b` zHyGD3}*R^2{0lx-Te8CwsJ1*X;;z4w(f)`qFuRQaP#c9>RkE&Xr$p@t=& z5klFUkPM7c*m(}fb}B4fnQRs$FXCmJRU_Sj;*hR!k5O~OiOTq)z943~QW~FeP*%u9 zAS+T{xS^KGO$qfv(bBP@Sn*y_4_BeMlQn3S|$FFmf+)i$e6Iow&0dE)F+!^SOd!vgTPp%a>n%e9Gmxj;SE5r??L*8>UGuNEY!T)8I3pnqV539wUugYtfGyGTvQR_&Ev}P z_fZY)`~wwR37TS*6vUyJ=ZiQhR~gf_x8}GLq-|Iii-^nodYi>j_9e5pPE*VZXW#fU zGLK6gQlX&$G$#S5y0b`U1yg6hmV{GXp_rR`%*>bkKd;aMGG?}1jB5SW5u9iU)y}jg z8yHt-WJ|M8wr8-8Q|KKjY>4YSqaj=nLd>e=CW@5+HHQ+Ta|kwR(Ey}lCv*^XZi+-o ztJpKe9aov@VfDqd_wAG>q@iN!-w|U>1B?lcp8#y6Hm54^I)5+K{E`y6K0|@Tgnn=T! zk#S{WVG0WSM$%NPbSq<@mf-k@$cd5{x}%fgIr`$EMzYY8`##p7n$2{I3;GP|^5XXp zFbUUw_3`uE!Ke*E?ZnK6_k*ET)|00{#&j6Oq$%=JeADE*T&8$ zxJPnd!*>%H=`z?kW3vxiUkGuM8oo7|j0|={h<+e0#2o*R6%6UV!g+z9?u@*1$|fsbA~2{8g-^E@7)*_x1|t) zW!iTAW8x#PVRLK(aKR^2;X>9+Tn>wIh)U;ZfI_%(ga`lv6i$&WjIZ-H5I6(BxL9+x zX_P(s&PiC;e!y1+hMrCiru0yGzbBs5kK@BKKFG_=O@6Y?8O((|ep?Oe0cJz|OxK_9IivPkNBDqYtI`K-g1plhdFyZ%nuWR4se1Ly@&0arpypwG_NBhf`d;c15=)z z#Pb8@k(PJp20ON|Ri)f-yApzTxC-B&s970eP5Vp9nMKd6n)ZYqg%G+JxMggOC&pws zK(btpkJ@W&-Fcv&_mkhtl$#yv{Ln!t83CDN&yKNf4+Yk@@K##_{$uy$px=TyhlSSL zx8DsoW%zvcp33NBm5jG~^aK?#!OgKcx>;ww{94Om1rdK{ESDYau}^iY^G0eY@ceeX zwJ`qq-H{+q{XZs6|Hy^@ksh%yvH$m!>7VMu|1M`@`j-Ike@bbXg_HfiXHA@J|9e@} zzjT!UFJ(=c-BEVhN}=zFZ>VC7_^bre?gETI7@2V3;2}^^u_t8c(?=}~+`&;3k$VLk zL=*&D0(uD@Md3s`p>VLG5xcH6R4VPCmYUnAE-sbBCd4na9`TM(L{WPbu`)p66GwXo) z8Xs$!{vKb=;p+<>rVz2Z$ElykVcm}upPbb>uNU21+3CLzmVEE3Yu*OrKfB=bT3LiZ zANRUHFrPm*^*><|<36wLznIQpk4#cUml=bQFF@Q6;O0jg`Pcu*piYYgd@x?jg?zks ze-y*N@0fp<6@14^$8P5T{F^i2|Gb|CAs(Z9$=NpgkKcvBjng}yLkmv!_ATZyUReH& zo((_r=Bhm|>6x+C`W@%+nqFyxQ=Vr^R*{bW1^RX}3u8M{%#4qnk5lEg>E}Wagp`j`e!VL<)5BZ*9VVxwphfRF! z+?TigCEq_|6L+v%uNX`A-cRk~)z)OOVEcEgv;}d@T@>4^yu%<_1gotd+jH^+tiBZi zJg17Wm9TjFhYkLX&_BFH;ST%eZw}Z&w7l&U@gKUp<;q*1GnsO9jcPr4&{nT!-(l%Z3{?e12%3k_znFES=Vf4qM6~(aYjfg~e=#z5{b*1)# z^qI=^)ugNDxM5q8=*FiuMaKaCsx3VtcldLi6m#?ATFd;cf@|PWi%G zmfcP_WH#x#afR#|+@0y6`?$pq`o8YG{ zJot1iy2f`_teVKZmd=S@s^3m#e|tNe1+Bqtb{wle#5B-BwxZ9 z4oj@wGoNTy>t{X(#u4%6t3F{Y>=`Q9TM->exNodqEN5}$^3k(i-AQE zyd3gh&)41O4a+qX)TE2ZvZ1FGS+-)riLvT*@eu-VIP4HM=t|a^x{wBJvcI&&;!I;a z#^v6c)LF9FWxZ(<`j5QRNQ~H;F#6TRY48t7w8W7qN0w!z`Y1#!t7}1!dZw`!^#qNI zX7Zq*mwyWz1IG=Z5$X2WSc2gvE!meSC3LpdC#PT*R#fY;HS5`*&a|boFPR9sIA?Qn zs?)iOa&vTvAL}!8jV%gJj9*CSgD8mC&uDj-jlNEcv?N8uI7CUrvgnGz%+T*DS_oHk zFf{VWgBP0pR{o%C&O@yFN2ih zGdE&~nw`7jj4Orp3B8!!l=*10z~v@Ex=1Zu7#G33`x*yuB$jWF(*ZisqBZMxTWl%!D%~ zvlxx|^s%f&TWqgIb=*`GL9)QGa;tOlT9e&`c`!HSJbC(`H)R=xX06MN4%Oc#l%&Ur z%hu4xTh#aE>LI|AS!S1Mn;F&LM&(>#R!K3zt02BDx3pOKW`t7=0+CZ1R~9+r51js# zq~olIDlauK7w93_Gm#80Vyp-MqB-0y9qR>@Yo=;oPTJVMUMdM1(L!@?lFZYy(roBc zWx+=dHN04*y9&~z4L*dpUZCHx&EJ?u?*3^FpV3YOR93wjkkew^F7}P zwkft?Ow%5dO|E9_Zgg=Yey+QLG9?a00ZuhJ-3zsR1>u$o(|EZboW6j!k8W-?VT2j9 zrnmQ;&^cT3PS-mkCx|Ki8wJI{7rc-Pxey;WoN&@w<(A7(B_^@xt4Q77;v10YIObN+ zj2`a%(XJlM%_s4XC4M_#8EqY%Etb^6HBO;@y5VW#%6oWs=geIoAAMYX&O@nO_q)d+ zn82&X7x?ZIn<2(oP>)XZQ&pDIKsAG`ws@U_<#uS@drtsTq3ze!Pj>5E8Wpdh3?mx( zDooL%HIw7l=7V9}J5CP{IV4!+P<`?zw2Ucz1dP4F>6dx%f(SzTDI~x#G`&(uyz`rD zr7Z!dwu6!|_Yj%i3z$G(qPI&DRh=q4dr4=4###Tu*pqY14XOUzB_jOsJ?KKJN{1!3 zmD(TDGzv2hyBT!6_OU$bQ5AcIqJ3397SZlPLir;3Xw9*XGd@ig?jHxe&0%RZbWoFI zG<6Fe5oL$25*&*H**O!-V-icgRND;{WnhD`wF->*cs^lOMsP|8hEox<8YdFc*hG&<@V*1jF?T2e+B`SI>No0wAwrXkw(mqIk}L!*mRpj3Mu zeu!i=CHXcVuCZ_3x@-+@${yzvOufXKMd+^YApi^D*BpL(PRtzAWBm?Vx@lVonQpdV z+o*MwFb~DWT7oYuTi87C?(ZUiJSbaO6brHfP^DXvz2$M1 zWpM06xK9u6Fjh_6>Q)I5`&=`C<;)}>({eCR{;^FwF>%qYqww7wwO{g{(R+pCzHtVa z=?osL-wvPW1ldG|CP?Pq5G%BYlHV{heBi`ANhatp3+~=MKpKp3Z)j>T6OK@px$8n! z|1N)Bzkp!Ujf6>?qc+Q!Z=Rdd*t(6=jP8ui=Gb*@5eTB}H>nyZRndFj##xbBZ} z*5<(^#^knJ&ZpY@1$rpsE^&ZGhjYd|5SA%vHc>f}dc|$kIDz;PZ6A{2s|l#NI?Kbg zLbGd>W+y7m8_K&C1TMuzI`d>j1a@Mu?vB$oFX}48(lck?z;+^_jic(*NY6kh@DeAn ziXGMD`k72RC8;lHuAgi{kUj<|1W%9XV&z0E7{z3EQ8x2y9}Ri$-p{I4tlps3Qn+G1 z=tzL7Erh)^t3oHQy4R5WdRm&6=}d>W2}sjG5n>yRZK=s2JYELD*dNzLEFup$KGTFU z=Fp2FflgkAJaEoiLG@nH!3{4?!d?WO`e7yS3hfRjy2bO@hh1+K`&p?5uP5=7z9^)x zM4J*MR$Avm(}&(VQMGD#1+I$cFVSGci225#yQqG%I6V5xKR{2ANFnRt1~w8k0x5phHM7K$rk&vv>4uBVL?5vrYy{EI zjCV`~n7gvTCFHxZ?7wWMbh*97vDC8$EV{wTy_vmyoeAjS-DbM8<%Gd(bQ{ku*A2Sb z9j8mAj%A7L@P>Z3E{)-1rtlR8_VJml^G0(R|4Qw@woMipKe!yJ7`WF4>Oj$Y;#n~l*eKFk>SHy}tZ)8Nh!MoEFY}(xI(G-B z)?aku{<;l$5*L86bZt-l2+G4DL4EXeh5u#d@WxvuXH}EUs?{R^4+lVc@f6*q&uNYh zs*zjlc>dY)duhCosL&py$70A?ka^_WR7f?50eP1Nl&Z2spmMu-i%UvPX17p4Gha_Z z{lNvRZP?li%yIa2c5C&7_%MhrneMS#wR=J4JpKLQ@9XsT>DtcqQg0{NT7P~JP;cv_ zh#>JXM8Ku+Z}&Of@I;81<9A&GM^Kxpr6~~Guq8}OL2rBlF}+V(dZexsdS|9;JS~V# zc+jqS(H38ld$HmU-QyVg^*%IuKasGS!&$HR~Qh$Yb%$DT!NZ1*gB z+^$ie5Fad)*4k30aT}86D$+Z3x0ozz*KXxBFSezOsBsTP`kNY>-{UuU%u7!usmNpG z8ZeDOgDKz;QBs8D-S|9~5>RAa%^i#tc@V6+HR0en0-MT!uz>S4%0I!vancqJNx~c^ zU4xSd%}d0C7|kv?EPIaAP7;SzE!;pR{c_rU{+35S&`Czmr%sO3SAh;6kGTBg6#N*8;u2 zv1;>Nd0B>)%G$*Q5~&M_`r(K!*CFJcs&yq8kak7I=)ny7VI?F}*H}6B)3~amL@c8v zBaOGo?1|08{hiT4$#vh8)+j+W-Y6qNW9YF+adJe+yM&o0EmW&I;5tAdtctEc;QWUo2Vo>ce%P^Pwn33B=RTu^w&nZ4D}yK6S3dtOc~r ztU^a-ZLk85{Tof_UfSM1W!1pKoI_vD$V&d-< zDU_8|mRzoRlvJ*h)H%O0Lb{C~ z`qVtje#bHOcMy|bTHEOOdh@;p=IQY-r0L&Osafr4>}$U@VSP-sKgzySBW>GIN{7KvJJ0YAtDK#CZ%jgZnwlof0 zsmqr}$9kA+;Ap=Hp#KLJ9bOP0n0^(id;gJR{U>+&4?dNRnT`G5>Qb2hQ6BQ|NLJ>5 zd9DAaNY;N>nesoZ+h7<(OkFLFO~oAzJ^mN&mGHlry!|Js)&Ira{bKqXJO~KLpWKg9 zdqhZNN;oV=gC75Hpb-D_n`<`4LXUm6{|LZ81 ztLF0(SWv|RM@SNR{4%Il#!*98(G=pb$ zr|)X)axUr_L#<8?`nJMN_}gj3ZLyz%hH|2;z1-3esThZek*+;0s;-QSdUhum{Aw!Z9Fv!xRRI5=rp1lpuMdtStxURupb#()PB&XEq^ zIApOcWGNa8l~sijO3d*>n1Z{8c2FLt@~U;Roi_+S(N;D;#lPdfieNyN!b7U1Dp*k? zfMJhkooHwT+H`7O?78`Ihr=8^W2%DQFlgn3vSJp#ZCw;71;M&1v>O-yt^wncOkTTN zt#YYmUO21>%wlvJY9X9pKcU=U6HM{>Jz1D2PdR*WKz>v)#(X~ST)m4-<7=Om#;3n6 zwp;KDQU0AikZ=R~t)XtVaM&b}7WK@Hl6jaaLlD4lm&@}P$5hn~h66PfX9A`PDbV@w z%J}cTa;p$fk|#p~VA`}ZXxrwrNOluwGbImD#T2zDt0G=6LUsk$f)iYAbGWylsT+Su z^+|xL8-G|M4Awl1Or1pvJsF7Qjz^sO3#?CXDo=&f_% za!kCKrEf?}ak$icA0J2C`J0#;82rv6JHs1^G@GwbGlZNtYTtV8Ab6~&ZEyEvRkONS zM%tBl^je2GgV(`U)DXtxbj?qvDXknc&1QU57!yCP7kL+&v(3n0wRD>S`gOt2j(M*61drNw)JyCRSLlSj2 zfMnW+98LDz*u^l_{+c*tuX`hdMHRX@D zD|%!G>~afhTz$*!w%7HN?e}hjEJEOu+*iY{;O41*Xm}#hovNV*7tHJ~EKVQ90^#a4 zPe-$Orznl3XP-fz+hEqZfbYxTTcvfcI2HMAkt@aB`& z3$IWw4+1nu=}5!TcwM=jV^u+$L)RQGrl{z1S3jQ8dV;cTTiBOG;SPb{`YK*Po(SlYxlAH*|9KY|%NMhp%AM;Vpn^&7{ zH0U722BnC02q@~08ySSIzL;f3)GjqC9=vwVJhokJNjA&#>LBNDvTX$0hYC2J7 z%%X4Es1jcrIDb!B23O5taZ>=h3+6%K#1l_4>omoDM-T>qHmkWa@q^`&d5ZFA8{rII zOlsykmG@YF;E$dq-1Upi8YeqqbwO7n#l|iB8nV8kx{**PU=CCL%P&iN&2F~U>p%LO z2uWZvRWt)#}@K@F9MtWu53mHw|WVxQ``B?iJF#39h6SsqqpUF&10B8xxdVT8!` z3W<9qqPx~T9=py<1RUG)N=-)=SLw1YF7k6a^=z5Bv5pMZs`IyRvXr|-1?w;+ld<(f0v zD|+1P1IdN^%MY0PgNMk={c86l8125k4yVhmrJGh%o;S${ZeTqj-6NxeC#MO=&5z!j zO7CFC2(+~kQS-m$+kBJCAI!s!pNg?;NuKLsIF`34mB^4sq{E0BaQwo>%yNKTnn%-{ zPMVWFaOLN;IxIm~bG!Xf2|&%h_h}7r#Vi=tUkbsEh|wS6#X&e{I5;vD7uaeVY6blD zZCQW8UCIb^5^)9SHcfu+iU-6wjq3u`XG@&DM(a*zLUKCveoR(5CJS5e)9)>{fpA@L z`@OVo>a2cTIieIw^5T|^8-Y`)m8jDei;r10*GUgS-HKq8a*&zJ)rVQ13FC?aY!IZx zYsLB>w_mkynJP8BB(NrAb!2Ho-KQ#`9AP#NY{dvFp>L#d7~KS$OvchtEvEM@38vtz z2WO2o;m1z@Jf6Rsx4Ik;yxlSaGB`uUGBTqGWmA_f&e54kwRHv~*VH=tw@-h0B+g9;{mkKhN}G-$$KF zq71r)hIIiL?G~Hjo)#Ojt7}+QNH{Db8?tzr_s}-3oirmvqyPml%Nag?FXWMY0QFZ1DIegsE)hnnL z70`wigflhKi#hw4PJ$3czNWg5c4&!z=%H?fR^tu?pECD|mG<}=U8S(+<%P4jRWHqn zZ%{}!^6eUqvA5_sWhj!jG%$D?020_o;h2C~qBRJOW!BA8TPVTYuOLNZ(rl&ARVsBFjUQUXVpM%W%U zV7Lo&O5UMQ`w^O=iX{-+h6{Cf`1~`HemXoC2YLjCpRa;Gja+mEOSflhde`Ek*8=S z1hL(bow}xCkxdvDSLW_#%E=g%!`KYzLJE0#9&MJ}845P))Fn%<| zV~dgU%U3<0pLB%=E6q?j!C6RW#^{H-r95Qxk6TaD7Qy=oM@LzR+ozO(CH>AjVx_Na zm0uj@K2t(?lmO9Tq9ll4<99Bu+xt+s0Yq!?gr(}Fp=_vtlyC?vYz8~VHGlcw<4@YD z?=m^7o0$T(tuB*ITx9yPBp<+q3P&TGL`@G%PSeo{`ID~{iP9IB5caV^J+w!&@7s!A z)4^)l%WPeQ6a?;Tf&ZAo6z^((;dFMFrzutyMetNw?0r3>kYA`DYSySM4I`TCwgu7J!N@|KC?q4) zurljd7;nqj>U1sv>?Ex7mkQvu(qopT5R>Mmo5T|GeMulAURmrKt|x*sW7SOVFXrC@ zH#0`M_MR(x)2!a1(nWbdXi5T#v-Glex%c`%y4pjIsztheAKg^8(j%xWO#h z3$8eew#@UG&EFs?lguWdXY=*f2R3sD<9~X|t93elj3;9O6Rr6e#<*qqQ>pOv+Zm)3 z7b63xq`fW|a8rCG!Khf@EuX}GKf;?j1a>5^_H!uA2pBI_CnD=&))Q~6gm_t|dfPU<`LocRXlYZ3i6!1XV&vV|s zTtnn1BvbeDx%-&7P3R1Gc74h4Eh3$Osx32J44mJJVjQN7Cv>r#^Ws~adX~u~)Mj3K zc!0(ezV$YHPjAQ#w4sPHE#rT1*6%72mqsbPqmeknn-zUBJJr%u=w-jsPezwiIwK?H zSvXAj9N=Do#T?~cTr8iTwEhiiODuSr>e<)IE*NKYRag001BJ=NtrdEC0PRp;Q4H`L zH3AxCj2o{zzK;Ishrs4{=``@*7OqQ;=yuVgekleUBH-sEq3JJ+?z5T}5V}>utI8>= zT>Jx2&8kBu-H>zaQwi-gAr==rY{|fL3vEbK>NoO0SL0goXk#-(4CVDI2z+boo%57K z&7*d#7gj9PJa|q z%aM<$&saD4<)_Pr;vQ{&Ta%fmSQ=K&UKrqB;0XNF8W`A6m-!4)sd7prKwX-VIrTsNzF77MfOagz$fMHMZ089}S%?@ko?-P<0&oaw-J6*n2h`nZ z&%6CP=>x!9kzq&5#A-?WtTb&+ZPRHoE%wb*Gas(kmFG~Zhr?G~;HdHC#6EEIP>j_~ znGV-=1y%ezi}v;b8JjZ7m)-q+qFBE>wDXXBc>;)1D3~u6jinG`(t`!T5G(A^X3Jiij-x~|P zehTRvsni`bVD+D0jKdc0*uVcD+`VIvE!~#>TQ+yuwry+IF59+k+qSjK#xC2oZQHI} z?>Xn~KKI`p(H(K)-VgUvM$R=eS7xqQV~zEU-*_f0&;luA7rfnL{B6hSPcnr8NOk-x z5sQQi+GLzkGo4VDIk1NlZ`Wen4{N3iENZ()%3(2--_OR)KGh$6d?|N+mJU^Nn@9TE zcXE7g^5*trE*Til`*N{P4O;BQUzRi%4|NmLtTi+~mOt({DKDN_%GZuZI|DbtAs@Qr ziO!S=J`sa|r9a2B92>$(o{pYh&g_Dmxf?6fq?I=`?m{pYl0j z?(KN;w2KaY`}f*FNYMQC@m)!IdqU01EB8s0wbk5!q*ax5KfC&`w_fj#q+|(nc#rSwJ6GTqs!UH& zN6T2~ZI1PFSn_Mi8G5hj#UaxdarBODa4f8m{_s`hUuI+k;dY!x`3 z!o3JQN%^?2o-Euk-ophk8}$ zLi*T+X8)dCAC=P%75~w~xk%he#_U^n&#t*mkm^|owD*Om6t524&Cas4n&U7>e zAz&W&SivMzgRA6c;i^ftB!`jdP{%dan8`=ehHM{T~47cf^1(!gX zq4`B*0d*Q&1!L(@HL+4@MxSlhdg7*N(k7;CH*Zk04%}|r7^Sx{hE(~eYPOt*GHv=k zb{7n2874d(au--hsevRMG2oYz!Z2;2+k));i6Vry2i%OvqJvns*N?>SSK78g(Vv*nLp9?Ca#J+WG7c)a*z1UU_OibU#X&hLx*o^Ok#Gz(jbHxb;2e)GwQA zX_PID#y$%UE%Aj)G&%MbH(~WNra{frXx_HIUOmbeeLDA7b~+X^EEH-2s#BXC%eT%~ zUGP4fG!o=G#~zJ~Z-f%_InqBE*~)z7eCu_EV7>1_F^1;oc7ksyqT?mNM(SeDfH36UAz~- zffLWzNbk68oRBaUa>2mE5~`be$_~-uz%ypv5S^bjnQgU59Kl)bP5~oMs@skDh*$UR zmpt2uA{+pGY+!K-C%cFU)TDDNXW(0u^>H-aRon6gxso1{vs}3Hp8S!N7Qfv-gm~N) z+ivH~ATgDSS+uTRgs8*N!pMmOpKW1Ld$rCbcJ_?m*<}g7H1XEe384CE(8P$ch$)~g zK-Tnt8 z)sDqT71K)w{ut+o=S*Wz+TRDU*|)<%mbU&Hz)(a}(_-O9 zd19hHRVNv4dP9zGw?7sSsEvz{s8oHc$Hp8>8M7kVCu`a=KP*2ATkY7zve~M9FMo;A zaZ)8r5oG0@x@QVgWmrwJG4@ufj2+Un^rA9b{%w}v$bIwExAP(*ZNGTY1|zdEsuToW zSDqbYa@2asm{U3?h{GVr*isabH zLCm);$+zR+#_;sphGcHT21k>$r`5`7C0BXlw+*-MU@G6eKe`Lk-7e&p&kJjU{(pn3 z{KcXCg{!c$vatSGJ`;RC8caJJJH$L6ps1V0LpS(0a6F!}Q zrK6F(wVtC9{=dj4c`-qJI#IK~hQGI#->(Q88Q2&a{ojzLAf+vvHAQ6JFdO;bsC@XU zVj3gg^b~lJCgiw}=|MWQShbJJt09D#)bJizQ=+}IB9pl*IIO00eUK8f|E;*!QD1|1M zS7l8RCnXf4CT2^8&(_aN0MD17NYliPP5hwkL3x@y+rbHk7`uqO{FHtq>T-`*p9v$B z>9$6}@xpk9ksF`4Xp}(i0)KlpYXV!p!@izl1pz7tO7Y74;W{%!#v@I@2N^w0d4^I6 z(GJGlzHCg_q^ARnKAfi2lP4Sb=DKe6;JNIG~UZ`^GHlbrxJM+Y!lRD#doAV!2=t;cIJWPEOnTOeaXq>NBwU!-z(+khGm1}xRPN7vu(ZYo?l*NX*%h4%7=j) zWA*B3<3L0)hF!%I`@Z15d<~WDC7=_toNP?_sJ9X-7S>gz0;^T&YI4vYjA>ljF~byA zZAra}cw=y_&UqMPsJ{khPDp(!jonQUSC>KCve8y!b2etr9l_AumigK_=?=lL*RxrVB3yGCkN`4m_z=1;9TXCXL&UukP+_lR% zDWY;p%ig~8dy$9AO|D#FzD~q^2B+6ZP~8*BOfxWRTp;0tBbhp}&GHsoSn!?0agTzv zJx^YAT39%~+ucQNL|6^6)>scV_C7CH*V4RO$pdlex`!v{jb1zVLb?*+@Mr?gk-(nW zY^zPL%CFWI6rR5LO%sv!@D1~h&$jGLmwo1cmRgtSl%UOTahV5Va1{}IQF>8*kb9AN z(S1mUJF2x3eh_OVb;i+xax?E?DHSkSR!ydhDYeB)+%5*KuRj zAh+n?CKT^?T%SWePQZNNbf7yz)tgKG@u0Z@L1%_10m}kg8dMwzEO$gzTgyo(l4l(r zT)rnNcGk>1NDg=9%nm2}8Fm#R(?7J!1k{w>{;d5>T2lo4@R@)_&&j!MMJ-7(%(R=u zX{Ri559OFKJ)z|dwgs0jUhcfeI*OvQQe9R}0qHr~%&4^>7J@Rtj52jV&g#BMb71R1VZZXmSYtp~PEvCN?{QkxGe-O8_l3f%P zR!~ExI@mgucDyM%^V#>ah6b6GzA< zL<|N1C9=TE?M;ey0F*w4{!4;S&mVVVu#T4b^x4iYA=Uxc`nYIbluZ2WptukfPJK$X}hwG-+p zId$Iv6HSliTWymp0!X4}m1g?wqJ({Mp|*Hv`qH(sh3l>G!87dsrgTGkK9wyHnXR^E zd0s)+feP?Qte$~W-V8x zK}&Va_Lk#sGujo*@su`p`KHWOgvRGbB#y#lByvzxTqGepJ`MwyGG+Mjgz&Z3&0#h% z(np<{(~Wi$bgU$IoCp~hX4)3S?WY<`YX}wSv#{fX&PoQ3;hklHZ0e)~;1$Fn+bj+~ zY{LT}LhfwEZC-|%UIiwIci z5N<*Ovh2v;ra@t`2=V+c)1)QnlmTUVLb5#fM2?uP5LyARx!}|I%wQjYUV(_IKy!Mq z%K(kOD>Yo$5MsS!+rq9Wnc!&MYdgQ1QF-B-deL^Ut^ufnbb1pY_=h2YXGB#Yux^9} zV^xU(5eY2f2!8{WiloQF{l;pE`Wa`p4-6KPrZCZ!g5S?`<+8*Zo@V;9@jyBS@R z(VC?SqzQg0vd#Cb4|a$2#Ou!}4fQXRy?AD$o? zpV*RE5djn82;w6Uv6orSuSCX?Fc`tDUsIo=HhNj0T^yTKIssWcm>5l-m?EvgPf^^Q zP>Ym@w1XgFgws&W9$k%JTc(OQ2VaK-KAulDk(?A+<`=ez;EFWIuNHncem9{)dDs%` zdDXJi)+}|I4q>lfUUXs!OeuFMdn1(z<#85CXDJ>eGKotmE-5;+Ib=EnKEFPT-kX8s zdiZ-3{0eH6^F((VdU=AxMbh(=^h5R2^~3Z7c3B4GNZRB5;+uZRl=7d{%#sumU<%F^ zy3IB>NHuV-8m-dfh_U^Cn@czuxW_y0xQ8?%G1537Kfpe~Jg6U)2kWKReP)u!D2z;q zY>SM!V?Jz|+M8Nqtv1vCYNtqgp|qy-Od?D&P6AAdDU(#PSwLRMDzhq+nWr}=HP(O~6dY?8L;tRKiSQ9%R8tw@x2P zKS)1f9%?XEhyDYiexQEzN1Hw=?Q&evn4~^}Bd@aRqL^le_xDCQPo+Ugy{bupbp0ff zRy?f+n?RFhlY)z&j0Bx3oldpfRUWTgPG!#TF0n2RpV97V{8ilufsCG#yzsm(y==XL z9Rs4Wxbhjw0`&r}L3V>iyYL&{Jq^;Duq^R-@u(3gh2{B8Mcvk^hVMH0p(!bIIZNA6 ze$Bd?T7~FhE=M2tuxEi=#tRiRPlRej7U~A74)q1K0?ipUo*IQ3sH#=NY0YcjYJa+g zmVwt$u=$=r{bbR`;h)M$pUB?v}?3^8g%;^yPali`#4%d+DIK& z+q`+DwWK}uv)6H{rKlt4eyjeCWuBFf<~J&M3HUg%h@r&dgd@x;XzkFHYLz&Z>ZbT7 z{VVgUVqQ+(Fy1I$q)z9~axc1Py$_%d=huz9rR$^Dr8gN6c906lW2oOCq9DrPywHr0 zKR}&8`g#C++Whh8W_5@)=TU(K--VomxFK0!v`}6h&}pfeD@f1Xnw4C=U0pzE^hJb) z`rCfS49^aWMMR-Wpt^{Thz*D=h)Icfh@^-}q^MG>)$fZ&sz>4%@u1>ip?DBG+m}Ag zZb*deo$o^JUD7gXCfA>@+W$Ey9h<6()#*{Qqr}C+!`VXk3Pb8GJ&>%r*J*J%09i_C z3wet_8l*aky3u+zdXEE139Jj85l-pX3NsL|5=Rl=1CkN=v+Y!;bL+QXni!i{K*3Zx zQ#xT5*znviCrF|fUPGnD#6#9W*T-ByFVs3}ws5J0l+QmCCrR$0X55w<{VDnIGmRBjyc@P0pi-+ByZgUS!nCMuP5!RM<_~yJ^u3Sy0u4(<%;hdznwQGU#`t64MMvRd;hW30Gla|f#!2g)YMQ>9 z_R4hCwpQiA_-+1eQ=7_pr?Q@goi4mtjA2XzV@X}duWEC#h2qoSr+%0*>4zPs9!(cn zt3zu`U0YT@bAVC61K_;4$k^>Z!%wmnl>$}+dh0tCeN$)or>$KkJ~}?a7e8;}ro@88 z3Ws`QoEEs|m)J_!5?Onr;sFG zaOAjn-wF-}-9&_;g>b4k^0qeY&t_HCRBev=rBrL*wAh!fb-cYRrIedgacFUQWqEa6 z1b;*=;zsR=o&347>Nv5j|481ejP3;WI(pT5quYFJ^*V_D%EAJU0DHZp?ezH4 zUgtUS+WeRSFNN3U8+T{_F#Rw%-^(Y1lA+8lgGiZWf~Z zN_wf5=>wfAouU$L5Iq&E6q|~CiQI6ny&t$9i%gl@3+kfyY}QXmwe{KS^L?1#?mR(LqO}x?L&r2 zwa@DT-`2ZE#|zpaa}?!uPJlkZO8M2o#NE{&_gf-gjcYdr3ax|IlQ-#w?}c7Bjs`)N zeO${I%9~KN^ENwy?g`mYx(-6BGTImU!^lUWa@Nb#7wO*5P|G(rPupeHH$D|E=CwDx zi?cV?VFtHBG&TYn8)@w;`Our|CeB*Pe}UHw-?Yg$RV%8gOKw>BpYY9JzQB7pF`GY) z;SOJIz7NyM<}xjzvXpK>->aBEA%%1dLf3x-V9%5bmp%oZO^n2AA1P7k)$6p%=L<`x zk8^IKCq?5<&;o9wi3gsKlbLK;fC}lX0PDRT^v4ppFc@VUY#ws3f8J0P*YI@X`}mNQ zu%KJ1TidCn@REr>wT-YbklfD4c_qxGA!&G_bsO`;mFA9&G*}d1L|n|tZ-rgzAggqv zPHY~be$ZidO65syk3`-siDdP?gJrWLQlFYyO7$AgIV~C}a#pK*KDa4SkV~k9y%uW* zW08qk3`uuS+oU>mA)>0@VFl!+C}}5Zzv6rZdvQbyPGxO1Hx1YvgYn)5_yuT;zpeTq zjby;ZPo1L6h>U=96TH0V{n>t>?W}s13o9+h>4L*QR86;h>UYj|KIf)A2@ypmZ-ukN zA2bgf>J#UK)x0)n~&DYF7tSUY4E36S^_tCM`sKn^1?a> zkANd-_Pg=s9l{=N=@r@w&)gAf4a3cRR_MO#z&@L9+#Md=mE}?`8)xSxcJ6+fiT_zv zHi?BKyz6xs?|$y9IU1&f;%~Fjr&}4gXSxtEgfZeSdX??3+v8mw=;85pv(6jg6-?^f z4Y|WM{WBy*HygHBFb26h*l7lqCbZ&o5NXW5!X7!S8(d#%ryN2wpc6+ByNk(N2k)u? z6sd|%Ye@;6OIRe$z8wO`JC3Z1WX%f@Uvd=?r{h%#2MfkT7bI}s+&d+R&+D(k5>*b?Ifv9 zf7kEb)MI4Sz$}`ZB2lfdGNmYNrDwKlanU zWN{!7HqfJGL*{l9a`zDOTo~p+a!$XQ$yQ6Qn4r z?-m?S*k7nb<{And@37~Iqg%OHQ;jIR4F_eL98k%z2YtMQ!Rg1rOCWIr<{epEinj9 zg@YT{6FlQy>vs&aaxM+EGBB?hM0HEXR8mErmvkFCH}PM6!2UA)uymm@gf__x#Lfmj zIBv7uk!C=tZ26$optZnKq#(!DOlprOCAP>y z$U5u9twDm;)7$<2HbSml#AbqI zrw#-Q1a6RUMvrmcIuGp0ziK#Q2A?^?WbuHcR+lQOi385{QjMCTA15^PqJ7=g?q!O! z-Ig0FtjuSYs^a45W3-Hvx=SlH)eDX!irtoM`CZ82LQ-&(7g9C$=f@I#hF8`8JuVjD zMqR9>@igLam2|vpY*Dp2i=vq1SH)qfJ(beIi?B zF~efw0kgs2fvkAhbUOLD(M_k5Qt@M{;ESUgp8B6s5j~UVm=5> z+vn%ZfSk$uMkXokf*@o(sri&nha|IWD6a)syUvdFxB|I+`S z5*sPd>M{eo$Ru{zx!{f26(}B%=PD~n@?&cRL^7iVadaspjkpVfSQP$= zl>^**+O8_FOA))itul6oGw3ITbzc>Fa4PtXTLYI2nXn8QWqKyDwjOt&|CTcQBkT@! zC@7g?2XTT@!tDk^X;Q#ktPm&DSzF@M3qyG;7S%$P=Aa_5@S1}Zx8n!X z(YG^jwrX5Q)8OQ-VyVZC>1lz4%HY+ccdH~2+E z3va!grrO|^Y#~$hy+Yn=hzL9|UeG%GnHfGtVZ~UfvYz@+XU@x25G&5*u0cqB{h4QX zS(Z^xr3#eN{S-LajD$&~lVeRLEc>`@H%*&JO3Jq<@7{@QdrVc3=8u{ja~{P#3eeyR zquC@GX2oj-nRqYE77(a|O-UQ7xOet55N52h5(s!yQFXJLo{L49N!l+t9>WrD-2gkk zBi8pP#A{$n*lo228 z({S#kl0|7yap>x-?MBear0Mzru)S*C-V@N4fi*ibq^Q7qBB=Q|^pUkJ6PJdaxa@T^ z62t|xW2p%dkgagCa;uUasu8A){L~hhC?O}j=?pP`)#CONzA;c>M205i?KR?(T{m)6 zx~OQi-Oui_J-Wk?)=swUuvfJQ<<@S>9fa+n!cu<9Sq*b(pQaj*$IlR}+O$*jI2z~7 zcn4)v5l6H`GF3YPHQIhcd5#m+t){T$NFDds-zbkLlR2qwdzr@8`WPXml-Sw!%c=DcKxh>eAk6DF@5}YFF{@H>^0aN<*(+l)sg!sKu|_=vU?WpTD8^j zB3a!unnW=qME3b?x4ENQm_CVCXMssN$cgN11(Jkwv(yTB@DV-Jele=+e>vXx2KsWa zf-tk%S88OWNN+$X>#(alcNskey5+n}YObm5X|jHHZ&+CLi7GosHglK_g2V{{6;v74U4(r<*F&p+L6 zb&Z@d!pmuO1-ky0E4t+N!zE;&ns|KzWgg$E8Qu*pLim(ix4GyI8ad*De&IZmocDPngNpAgLjJi4-FO6b6G( zBR`eqJEg}goiDEh@TfNqtq9G)^|1Z68~9Sqh2*uj39#ih^h0R+CAyJ-`yyIHF{Zp~ zLqS({g8>zCO0;+NFw38N@Th|zBm*6XOWzLs(90V;Ql3(bqg~%+qS(Bddr9<(%*u_F1h^m9yZ%j zb#(9r$mb04`@azj{&p&1rliAuWv--Y*@5=u_wnG2fisNhH)BPuF zf&Z6qA>_b-{||rwikJ5r5cs~Le+(-sve44wGyZiMe?c9J4BvYU|FOqN%Ye`DFL!E1 zMW(;@{#o$*p2KEef|5b{S7_* zyQuQ7bN`Q`O2$d_{$QN%*ByoFgQAO4Q+VGSI$n8_hpu>X2kUfq@7XHeAiss`HN^_p zJHNM#kDVc7dAgxWH4AX;05>7gUi9#J*M8UdSG_gg4^|@3Fz-8o&)W-L+53$QfXcPV)}fMy z;sJ!fLz%|`xU%uJ_#)3Qo%^Pj&neb(D(!K5gsT_x+Yi3U z*Ult@mCvh1)s^z;fl;B)u9rEqvB0v|q7pE46z62BgZeMFgR|OT@(%<+Z6ObcduZ9< zke5$3aKtFjFAe8PKK%H-oUoECrdEofe6v#uT9aq+xEm|YYlAK9I+hW$*j*LCaczWw z#+-0t(>Dni5ob=27eVJbXiWkso(`UU+xGJdtrR63vpW2Dtre7#ElDJko}$R2Rbs=c zAvqdR4U~)SCB+7-=$gpN(6987YrFgg&PSlgm8e&vHbgYn5$o~r%?6Pbkjofjw)+EQ zk;x5f&nwI}IVTYgc6L3KHlNqn7V-O(+A=s_y#=(WW4+EU4v#R-S=C-%?Hr7&I*~r5 zKL&ErBt@Jex(+KJPm6^d@x?j)_B3&1d|M)5-z$Qt=UJH-zUi%kfip4I&wi}~gj7jw z%IHbx zR7v!p%ExSZ`oZ3Ow0-L&m(`Nuk94^(!SpyGXrb?S`cdJ3nQ#1cBSb=%TFvMi3rO40Ryw)k$Gbvr3&-S;Uie;l<^WDVwrcnf_( z*-{pdHI$FGrrHV|Z7UP^r2S~3A%KQM2*!JGvq^U*vs%fnc0w#!4L-KO50Wh-{%ktU z!SIt9nrs~c*NCXZ8ImTR1i5Bl*7X$m0ZOtzySE=AL>e_jPd*+F>%t1XgkKL)Zq(fD z{_fwm93);0JdKXx`y$_2v*)r7vyEwA9Ibeo`D(K2B7SH3gtpsLL~3~kETuJ@ys=B7 z`tud6c+lB8q1ZaAvI)H6Dw`(gVis)drH*xskNT7VT3nO>$`f(~KzEz*rX4Yp2HeV^ zYc`ASm?{cviojK)o0uzFSKrkG&7wj=s{wgq8pR8OFi3DAQA-pKnz+@j$M*12(fX9& zSGc$lDu~!4RfmASB732LW_*Ik=8#NhSD3R_^6x7psZJVG9V0=2=H!>q7b}bLE2?h9 zu`2&^${!v-dYEhl6~|K91~6LAa!Ea-Z}#d_v&3Dw|Oy z_fcz%D2WjOWn6_+lJ=T!iSeO{H)wIcqb$dtix&{8V;-p9XL%)RcXWl-RMCop+&xiM zt_0xD0C8tu;pB6Mm5$O*lnEVo6;4gtjFKY4_AC6SRUr7-km-uKS-S~SFIaY(MD?G3 zGt%YafZE-LE&v+C2R`r0rOuzQNuE#E$i{@Kz{A|EJ?9!$j)yB+WqP&W#%(k@o)Jc4-LCOqyl9T zHswmdOj%rphW_nBMv(D-J(KdmD`g0$hU`>%?R8rA{HX0C_v>c^u^`motjh0=17`xd ztb;~tX#Eg1Yql)u@nmR*jC0YY{R`fZi4pAwjMhZ$25-)_7G+1}0KPEKW2R!FiK)!x z6-J031y(34E;I_8>4MJf z6-7a|C6(aDJu<9(stgoa4M?E!s7Y)Vda8z5wFf>7xKGcs8ZpSBdBZmASovYGpPYmt zD4bV4c_hgK|G;3ukKibn+p)6b(6f4O9_&pfw+@v@0k8C~o`#x~RV9OapKWom@pRYF zz2%3TG6?lcx*fjRpKJE|QSm|;wXv_Othp!Js4cR`Qb|w($q=fth=F-sm44cANwXGxL1DVn$hsbZ1qJ+ zFOH)80S7Re5#!qL_I*&&fbUiY3TX1z4(W6Y|8O(E1rFQDF!b+QxBVfz9u&nU@PUBYuFFb z0F8ms!C>4qi)loHaDm2`swr0TeEfEuDwWAyHiXB(J7A|qja{^j@d9w$I@-03jo{_0 z<~9lejQh*^Tfv`r!1?*3xu%#j{Xb;zf5U|}P9PJ>oXspXx2TDZ%>C&~{!wgIs@RP8a-&!Yu7TqvoXeBpcA!tCsrAr^a0py@R;*3^wGjuA3_{!3I2vm?(aS6wX(0E8A7NGxq4`SV4?&G$xR&7<0dnUb z4HTfBX71}Hz+!gK8%nJsE2?ex01!ieP=Ql6(nJn*{c%9=sR5@d#75tH%+Y&>Y<&}O zv7C#O0_338Va&piEv;5LDx-D}+L%aBq0 z5MnxRyvlTsE~&s+wl+@SzH3IKm*@s2M#Q|zzt#x~&&$ur_(ZB#^Fk0q6}tt(p)rb3 zE9uxsh{I?`yC7OhSJrbP!n$QU^Mi& z`VCWwn)NIvU#BXrU9hM`SpSqZ5)KwY5gJ*nQY#H=jQe%Tg;hc$D|0iQs=AS_E14S`M5?L zpTe&DWP3)3Jll_I0(W6q3}TiRU%i%QxP1QzY6*C#xrRc+SFhD}wX37)q|qNNiqiv^ zhSE4L+d0+PZRPq`qr5jBaWB*WhxLFKK@GvyBT^GkVxlZzT$()CIIbd)88}@we!oIH zD&6C-f}>{VCGP2JtCgu~i0=KbmDCg-p%icvR%kCYdMbKDM)xTNRWSVs_VxtNY=&Sz zS7zS!N?NZ1cqoDd#Yk<^iU?DUB+#bhYfHa=_onOJ{YUeuA1JjL;Bfw58=j_MOJfJ= z#C1Er4p3C0Nq2yM2THG_Ge06ROasZ8_6+Jac>|=~2S%ah=xz|x!uAan@dyk?wlb)!#&&qwDAv;dg_!Ack+xyL7ZF4O>ZssQKcOybHF?K=jSs4R&>i|cK|}~NsO&v%TmU?2GoLZ@IcHP0>7;Fo zU|pNnhUDy`aDZvD8xJx%q|#ov%(3neywSsz*y9yc4T+y;achxNB_$jK5r47+x5Po( zYBz_i7QmJpHtxjfUP)b4Sj{>4Cx8nDFLYocEYy z2x0-^t~eB3Fn$e#R;WfKw3c@4iR)BV>?cdJ@=Da=AJFBcc&DH>EY5?hM%WjVPF+_I z+Uy?{zmm2peup|otWU-%6d@m$x5f=3oIPcoS60F!E`Q1A%0aU925>?O1}DFAhFeU5 zy(qO>IJmSnfNE)@l0>-|*0gQ8hT(kyS_I|kjjsR5n!81}o&?3*SpVgvoB|JL^u{`C ziAi4XY;rTMl=kGIw&Iixj7&n7*d7#@A~-4v`Wg{cK#P5XJ@J>ygK~_h>}P14F52Y!9MsfnD`f)u zKI2c7@YHKrIl_seF~o>UQM$fiM!<}7U?B5oxO`*cF43kJq2PMUqRukx>wFwgzik+9 z5}03DAijvk)yp7VNLbC$jq6@m?p0Uw;m)TgP2+sm6T~dis$|F@B20R;BHUL3(x!~3 zqMYfk{=|}jT&%GBW-$ZI-hG}pt4Fkcu6lUPh zoTaPs{)G9+L`i7W$+NlTrw#Qh+uO|PQ5Tu;?~8(s7}!k>Q_(!PaTTSz!a2~Y`1|{_gth4dDG2T^HkmJ}!Y)}9 zEIyrL96&EpO&ySLW$O*Qn9fL+FF#^*QcjgM6|H&~-0}c@;+;jxJUI1qcEA(qL49Et ze-Pp9g{}y4eM#*S*3UR7XE>6GGgtoLUnbO7RE1ttuQ3?IfOxagi;0rHl?;;Nr7jEK zyoLEAiG@iJe7KAN%i$ouEyi+cmx^J5g@9EV>TVAOy2^feB&v-7oaCgo3rEj}K1ji4 z?S@&`>j~}KWLSDYXId0K{0fsP>M_N15|l^~%-g8eeinNhY!l<_920Xc(TsYj5y7II zWOVxKT`*G8jEnI_Du%F6e=5(3hTwU`VDnR&J7{J=K=eo19=gFaS7}YJkUhLO+}mKjfl|iUU65{QIA!`VAV+#(GNf$7v#x{-~ht zFeNE~jX5iM|x@biRMeVBeD4-#XvF)UW@o&i6Nl^p_a+|1X`7`R}fQ zf7AJx|I$&v)yDr(=hJwzSsz6F%<=)nQJc*&l-s{`lSUef-dGmRU@!4SJ}wk7XAjdj zGUB3n-FnJ+F-~bi7SBSG=*DS@S#g^>Ki{N#NqM1rsiIa-dD2o+wA%bLApLn;L=jBj z^FjDU`Nh!X`MCRVhsM|S@l8>^oTa4BIk|=Tz=Z=EPWcSe<-E%t!21B%g6cR*X|sqd zTsRADK5FqQw)M6Eyv?yGeZEKaQr)pl0d`Pp_PMx~tX7#)^pAmg*XgHEy8wDx;He30=3230b)l2hn>0s4^Yd`aum-iEG+=_hJmcscYD-@?L( zxBBcG4A%*wRkpsXzAG=ji!5txEpdk!RY;~fs^1!SV`HZ;JOl0)a)k%u0UnLj>wGb$ zDvPt}1YURrAjSAhD^aIBZp997b#AM{zImcFFqGV{HEUdnKb)W5bpcA<$PJfjqB`w7 zDMAmwY>?d#yEH`7?7?hmTR)6-UAb9HN`mH2llyG6gihTWMndW-iymAgwsh{x#Vsfe zFB)2_GEK)GWn|9(l%VY!44XM!hD3jbb*bNifL`Bc6BVk~JLXF8-YR3c9b-QYAAKLJ z6nYm0UC86>LyyUdv_gK)sayeFA}}~{fs0*fjpxeSys#in9^%`2LFcP<_o(6K3V%~h6IGLK=$XUd z-cYv;AV}O|-A^&eE2>F2*Fpd>fYkvS1Z|WqKN^vA{Yl1;NvZQr#ij|vOpg?uDu9E0 znzt;O%y>9@5*{Nca(7(24*IfO-^EQoL0EwR0FX`$lQ})Wx7M9xf90QReMBycIlI3i za`jUwIgE(e5^6z@l@XPj*yh-?3t|3H2B1<8g(1GJ2O@BNiHPr$an>~DGPtefy=od- zgE4s0pa<>u8D5kE&E9qDI$*;A%h`D@@B=v^gD$C;(FbGnN*8a^qzl8x))cf8EN+?L zH?idROBjdZBDOKgQV~+Sj|Rj9+|@8@HuP9wHjjZ3b1m&yl1`p7>qOC=?N7iG-;heIaj>??nzD6NcIdTdc z73ns%U}B#gWqH9*0+N|!UT;B`gefj{pJs-dE_Iy-0bT7HQBlEv@dh$c5;u2PbQeY* z?ndt@mYq};hks9skoqk@5}2+o*~kW2xOr=i(Uhbi;v;!bIRV>whLb=6J;EvTcBOi$b+dc$ZmG_XsC=S^9mW2fpKHi2I8JkRF^OPRk~OPMthlWs=5_0BN(oV{%}d^ zTxZ-pK%mjppJMINVxZo*mQS_esxc(l^$j)2YMsSQ`i`mO9Q-;J0Zf(bwIm05wlqBa zB7ZRsQkoS^iK)A9frqugzxOKYLnueL5ro=s!v*^2Y7$YY~u3ho|w zGm^yg)#L{9#=(5Hci1TbRW)Q%ZBC2f5;rNaJqp7m!EQ?v#;n%v*xSeb%z~=293f>> zssan;boQ`~GDCmq3EvY6lO+Fu9D(^T^YjwGAKEp2!ffZ^6LnVJ%AN3j`8_!FeuRc%hZ* zeVB$Jkv+6`L*XQ{EdYsbU?l3PG<)a=#&-e)uPmCRh}AmE)mG6k8Bj;rOxM=-91I>1 zkgY*Gpwbh?&AC8iZ4~q`K%e1^s6(7^HR;xzc(2^f7fR& zQNkDHlDc^j65Fu!R9$9*PbT5|Q)GY}{!;PO2O4SM1Y#lPJYl3lwUOX zN@^0Q^AZC&wE1)P?4`UM6yFwZcg_ySeXL``0zZG=V^P9ak>O6O5NDUXh-1C--bz*- zxKuLtHZUXg7R_WHrrA4TzJ(F;Yzj_hpqqqkT}KRLF)J=j6vCk}D@IV<>hlp5e=J=;KBpH@aDU zA`fRPZp7HO?rLhpIg608qy*5t;~4|mYY@e`P+C)|oQB6%z=gWfm06Qy$J20XN#)R5 z`0GVQsj&;^P<8x5(K6)B31Tkh18N42k6WA%mGvM-jIs)$V{?7vzl~JLzt9YkMkzKt zEcX-9a|Hd4-ldHKX8tnl^CQ$H<^$&xiaLc6=p64;qLEgG^S%86D(4rak&jXSHaNw! zOUad(8OYTS$E-gHBZhbu5g^VoZ~zw8@`QS3;548X)@mGQtpLGweWrq>6?Nm396fy3 z*$quKC&Hr+<^=l?If)zM1;E}GfTDV!)(ex zWglCDJ6O{A>w?kN~%!p*9@4H5@Oo4$cv6kE*CB#A5>s=Lj=e-y{-LPLqY<5V1sOjUMyAfwZkl!l@HH5Q8 zP6GuDDbyAdOk|umS?N|5Vk|Lu%_?lxvV=)_^bz)B-54*E*8|WSPDyUelCqWtS>u*pP10ZEsVIeYVPUyb zNhU4(I7eJN(LI~xSuIqd{4zoTEC(o3Wvzon%@h0b3Qp-J4TgdeaNC|p{lH#T@a?i0 zNwgV{W9Bn5O;IYy6=AW6+tsG&crIwJmf;`n=j0@5A82XQwaT)%A;5(dQyoprT5~Lo zyhyq@k_#jkh)G^5EJ}v<(Ewm`g%A?a?6WRorm6#d_ug6(!Pw1uU$T+8+$H_k=vaji z2M6Vqh%fl#OsmL44Wp)ANnAz^bCR?N#wiQgZN@2Bh-@ePRFk*hX$_9{(I>SI&Qw%( z97p!tI#PqZ@kBysT;Tk%qbGa00ou&1t-|^XJFSWk@-gyNIphHrK1(Jv&e6b9NQ5Nk z)M+d@Unlo`aq`kLX?LQi6R*eY<`TrgBaUYkIQYdLpU?c5W_Tm5nj`>JK`N`(a#Bl8{h|3 z>;;+^u5s2Ua-Wt?XHa?1hc!wO#*!dmlsd)C0D2Dd~LS=vq$ zs({}_3%zEPL|wO|suq(3Hrl$`@)_tB{7WjacT>d-MBMl9wIX-y7uJ=M_Bz9+S~np% zv+{BQoEN>QMM@4*_w?rQ*S|(r{nabi22V2XyF1eE` z@G^4M6l>%K($mrUSpY%Wo#UFN<%UCR2TrdT@^u&>xgGHB`H9reQR^7?u9XSbvbHbGEz=|WqhOE89+(oclhQFH3aev z(cY@hX*FX9?~EiPwFmP~ndQCEj2u{l)*ldHR`}rMm}oG)Xz5Iexwh9u{3C^R87U&p zwyI?TpSli_sdLFdJF)E+MqAjv^qEz_2vP{9v)w; zU$1q4+Biw*4qtH#xA+&5u)-rXmG+wLnpMclkD!gUn~Sc5r}5b_ResKQlR?5&OC>SkzztX8mQYbV%1S3ZL_8TdDEX-E;6L;wszrP7!4JavHR>koqo-HSq@&k z6Vtd0ro+wAVc2L{D5R@;e5+ti$Pq{iDX|Eya^QKUnqpWWv|a~W{9t7*?d)Se;0A7F zRNCs9QT3(TQB{>xlYDD#uJC|2Qv<4-@lHb!`;$MU_SIbm*{|WIFZaK`)|+SUP!ds_ z_Te~W$83!~zQ_i61sf@+?2ze?!%p5XUsYR*%4j>`h@~8Za7;M+$7j4jG$8vSd z_0*sJ#k7QJgJNIGGb9e{3mL1&lp&whv5e`JnSQzKd<1kxakSi)xqo zx5?UCcbCr{^>0cIW(O*1I0u3}8B+r2BdoIU6r-{;B-3DoUeA3l-*cQFi?WnXIE#6C zN8zL5@V0}feJR{}lAo$PlnN5iZ_uu<)P3x?Tm|A|DCremx>zFn6_b4^izf1>8{}l=Rn}&z=Z*1>>MXz*ilhy_u-(n5G_hZ}jKA?p4oC?dEt^mzs zu)fG0D!*;XDUYVtnsq#X8r%2JDSk<}L#zg~qe>{(radU!Y%8`XdU#9in*5!LVm71h zxfw!I@41K_{5qCd#7TG)#_{y=#{On?v%|C5|L6LH|L?Q!uiFUY$F1%C{>akcrVj>( zO*uY9H(xd(nu8cxDNy9lT8%jOY&ZAA7%|oMtAGEp9lqS8ZfExQMmaK5V)OaJkar%* z9zd4(3D?i_OH)u+{SZ<0#(K!NaS^`<&(5)jr*(s$8t&3Pm|2PhFjosrW@x?MkQxtS ztEpy0;Hl7^98c@M`is(5KI5N$nRLGFW%~N5?6+M$5c@q`(QS4M4IAssCSUqRy-{rX z4jI{Bb(aHnur^M79;T!=b?_3;{R~aE@)b?@`F~%&Ui>f<3aO+QMiIlaXp!cBnMtfd z#sbaWAzu+LiwJf>j!YYMzSuAnC0xECR^B0iFpsDD=ZYdL$3&DC=eLd|yV7M%O^V|5 z+NKt0i$k%xFuKpsRBT%FN?wXGRX#QT=#95%Oq#F^u`Jtm%MsZ%8?sOf9W|>pe6?N1 zcIZ-~P=d~6&+tkLZ{a3nHD=AT^lC>E`?1HEDnfeDh0VOf>8MS_1KHQC#P@-Nu*byF z#O1b?YILRE-*9bOBKgx9?_dndWCTH;NVJdrR_ivSGG)f4=ufTa>T9714RK0Vf9JJx z=SN{5-7*1%)qZwgCX>=aq8`cU?u2f^9!UkC`X_P;blBItuI`R|)~ zE}BF&QUJEwjC&Y66l7nQR*Fx*eIKnXktrW^R__zCF@bOooG(@YX=|x;XI@G2Kl_AL zGhA-P#>swgjOVa6hygNYFIimC6Dmjf5jzCHk9ZT@4=%G1^HUo~ufy=H^6j2At3F); z>Tg4%Bt@aN&a0R{`uy_Cfs3d$+zH%p{qdkV17ugjrWs`OA-Qg$Fw$)z2FHc`GEZIW6ctJ(?rh4x2u*~ zmI@F$Wos~%?w!Tw(vf~o-BFcE?&dy7E`R}+0(Sn$_!frzY>i*c~}3$5|(#+irgvI3VN@t zQ2;09$j)nL6#>763~dXUj8uS8>0>oC1=S9gCDG!bL-*-*Nktayh*2X$%VXu)aI;Kc zy44C_P$OG73+JjucM>!|GczwBM^01ayR5o;_aWi^O_K4Rr1dy(A$k_oTpI6-KbZCx z+jSC$peT8%giZKF2iU|7nSZVJ*8|t> zfP2nP;jC|;_R%OsETv4MJ!Yn!dRfPX{Y^=hrL z(53eB1ltv85%>%Fs8NNbZ!JHo&K2KK2Jd>ahI1Z5ZYz7)f7|#S zRU(G#QiI8CSaI6kldciGoBk=9>_MCHe8wV|wDOdJ)J!9j#NOdRJ4{io#zwsPoxIn< zV-;Dlue8UV)XN94|k<8CrBrPP(ZugZ;35oh<&Cyk_|7~ z5v=zpOtgK8agxY1@QB8%7P=0BxxDXD0B&;o@btw@WLkp1wXkSzpev{5$W9U=#`cd0PK zb0<*)Bh>OEh`b7Rz-osl;VA-5(*RMA6sTN+bz+E=`v{P-P82Bc|Suo;1B{fG616 zjhlObd0OEs0^R~4qv$ohv~>7G5^d4zEJh*td}Ua*V%RtPQF=&!EwuDMPb#OaT9;Eb_UHFA3AMDS z(XCV@Uib&jZDOr*{ixB3h-i^PnP{r4NS3k_@-m8FSprXCvYyNkVXq!$Lt5f)u7@lvn@~ zWokk8uTGlf@O{lXLFcosY0DQfnZ$*VqhH;3TKOREBE*yBp2Oso2U(aqp$5(I=DQii zJ6sX0;}uq@ru$WPgtxLG5S+NOsE=t1(Jo%hb4sUu!X24Z)V~4q*LnyLHoN)fXdRi0 z6cX?obB#ZsQ`DbBy>&E@<#%mbSaav+aWfa6)(@~Ifq5~$>D~bpmzGJh@Pr0q<0OmP zs7Y&WvJQSGZU3fxjYOfXzV%FwaQy`rkM)=juSm?#K6%j4y#1AWM&0=&EbXHTH4T=b?@Eh@uP9Ui*5wpm&Dh`;E zxZ~3Z3tWk-7^+w;p1}^XF8Oso>G%Y)dOJWRmeJ zvc|zCPa4M~y|O`mICb`I0KZhU?VxMsm1SK7s%0WZ4Q7Z>qRzl=C#Wb@k#@;0#}U?U zy|>s#XXS);TOHl5npo7*3KRJk-2AnCy2 zk_zg4hEym)GZt?7Mw1Uiiou+80bZiHjy&pOMFItgm6hKG@Mj5@la_3oXFRaPC__U+ z)a|V91mm4FU|d%AQ?JV4&1!t%!g4T(Cd<-1dI=oGK)FSrG`uaj;lT`&yNa4cyC$*D zm5Rd^<|!TZt!{(bg7DDT6*L zBmJAo)dX&ZK@zqoFh43ywUZGeNK7BlA+W`ab2oCSihj=!Q|5b!&~#`p&^o+U-E#{- z*-$cV$STz%<1Y};ZQX|OEzW%O5$?JA;7x_&QhE9vPmu-96iwB)5C^UpC-UcRr5^ZF zoW7E(NE|{c6tm0>CBiu&Gc9mII0*I{>{q`R1gN=q!7Ms9K*8ZuWM>p|O#hH87or5^ zQ+=9Zqg345bQKf6BDiWE)RA8IS8@(aUF6PH-N|FaRVOAtY|c`b3l%mS4d{W@J`K$$ zL#L1S@R(}D+lu@1aFKQDizahhX=H|MN!n0%gx^&}RUwFGQ14~!x;Y?dDl_IFj4Q#v zE?o7U)!ud^yVFh6q`&^b8#3L~OiWLGF?cwT5a`v;B1a@fe zH}_y)L_bQFMX$G`cQ1G}`twPXf- zz{7HsALy@h_J%WZv8o<18&1QeF3iS~XnBr_BQ>per$>#E0_ERqlyxzT2c=CHvs$dw zu;86m6hnP_U)?mJo<1AZ^xm1fceDM1%F>({Mj8sDt#E)Chie)odfgjzBGIFrx#CSh zn{2h&l8MBoL*PnC4fh>CgIA{p&}T2n1{3nsBPvr$-hf538|{4KWKQBid}1)bf1QL} z#c3|lo=uFJ^u%ta9uJwFgz2(Bj=$|f;GCbh@%=a|b@hWFZ4%UaM=R$y9crzaP2ByX z%u>O`3Cp3es>?XQXIxsXoM{G@=`>cLl?a|{l~v8dlml(CAr&%cEw+|kQp1zuulei+Zrzctt zoGQMx(oZ`VheH?(hhZNxG|2;p&KgN(lp`>Mw=k_)``nN1-a@5(nPrVP5%GS17*B8- z{QUCs5ytc3gegji3m~btKa$M+DqsfVD8%i)JK&7CZF)otlHDyM=5Zw=K%sAb4q`D9 zNKN}(8i-u$wyjRkO$S3EcDk}6$=8Q~Q6((Q2_fWw*#303In8<|Iq*q&DIGtS@%q|| zq(D>hgoVc%NR`kl1s@#DIxvQo-Afi})i$^7ThS>@?Xi*{!$2sn!|W3kEQ&?q$H|Haaw1zmB#47ekEv0gB|o)B1J+!EVI96 z4XAMTxZz8ibW>1)${f{tYUYpJcW#%2Ab4MJVu@Vtd2642mH|onPQOGs2pGgKhC?Tc zY2^<9#oQL__u}U}4;M+1w?EzHk-jplCoR1}haog42Z602;1;iu)*E2bc^QAi&HJ4z zwS)$Eq>7bvs`Y>9bb&x)@igN};P4@QK$m$MD@kC^Pi^Mpf_cVlJjXx2!G<3pfeanG zk#yxISaE7x%Dz8gR&q7=46G*UX>18bz3M}Q`e?#qTyXXjM8A0Rd~MyGP`G(I90d0z z?GiN0%lx5AT8SSQZ1oY71hsMwQV1hhj}W|fhU@|rs{}IdI>TvEWAaflPzV_rvJA|l z1T4pfl5@}zmTnMCt|)nK2Vg1g7pM?wXE_Sw8L92fP4VUYIOKjw8n;mBgL+bk(sPco z_4DU^@(_N5A8`aGDgu{ds~NQxWj=CBc>Xj%unr-C$tb=At^gC7xaC6OO||=IdugBH z6)x-?3D3_9?nQew2|D=!3F+-jOw!0+f;c+Zbyz2NUo3y;ubx4O2C#zt@@vM`H_z8OE}stHP#1$Ne=%PiL( zm!8-gi}t2I!^(|}kK^9XZzt#T`>Sy|zkPm&wLBwPv`)@FQqG{~Hv3pi=5#q9>_B#t zwx72Kxi3Ri4`dT-T`$ZLcpTPG;+ElU2iz zr2JX;e?FveeU^P{3A);!hn>s~q;avWF&+J~^icFFS=)r`APvkmUdXt)Z0Pt5q#EsN zKH^*&F0UL{Fuz-O6KSbzs0_ce;Zp*7b~BRdIfS6}Q@gd@HN z2yTRbH5O4%E5e(ifs9)u8Y*&=YaB`4LUFB@>{_Nc3F=^K9j9P&W{d7{#dr$wz86?ysf?o+AqtTai z?lEv)HxKV|jUB*2G%|fem?}V86fNo$(oS+H`*x)%h3%c?G9h7AU=#cvY0(uO7S5Z3 zqXu3!9+`#nA=-2*yA;KOvfouA&`8)2l?orTE>)hghl>Qx%amRQd|pZ^Wf>dY!1+wv zydHuP*%1yuP2RZ!^-FhjN&aX0wKZbf-c{Fm^m%tNkM<}NpAV1Mi?T%Wy}2JNIa(1 z`DIT^en(7X_UW~;?C1TY9p`*@oE z$a#Q;7$wH6teP!hvy0gD6OX#YhDwoFmDcFcc`s8z1#CYE5t84tfh@W?ggR2Cjc7k} zArzcW1&64i#K!KGB&JcdQ6jmNWuHYnwjZazCF%x<7vDr4s<|neX8bw-!rMh+wxkNK zjze?Q%l+XX%cF5=`b)n^SO?w0_gNQ4Rxu`gtHqdNkB6?FKFtHJg z3s;|%c#)#ljh0&n-GW6nKbcD!Aidy|MbztMXI4b|@$aE@|3<LJYr<>TZraBpZaS=4^#Mvbi*z+cU@p+1uvyk~Lx)EcDWiJWPBuJDI5E ziz~$CpB}@Z{(6^d=yXhynO{H9zKu@+*_qFgO5pufQhO{_7|jrHVon~vC}S%Iuw-tC(8tFvrl#2hPyR$2Y?`{J`_@7 zgJKV*(Ja;i_qAku&gpS(S^>=d1RH#FR^=P1aIln+iElI5P7-^ix0p%S#FIfv7BUFO zHdb4oN^m_7S|1bR2TDmYKFHRKnmt~BHB465qBPC``XS9|>*iMT^6A8KI{JkRd_HEw zjwy{AxTo;X7LsQ|ULzBUR>9qqrB{!ZNQB1)X4=qPr_0C1>(nCBnKl>qbKmiLp_nJF z=Oge{1nZ6os#Ejj8~ez0=OdMB6Zc>kt0G2X)S(CtNtHyE_oGR=WmbwM+&yx^2^8C= zT~w>4l?gt`VFeSe@EIcaIyG{ujReL`>jwnb8@z_wInb1sGun=r7TM$Vq{}w>|{kJY;R-w z5Be2RGiMVgD+d>QCwR7hy0Y!n?5zG2ZDISHIY!*d$=OB3(#YvA>KF!DqrXo$nTZ)R ztV~@j|11VGJ25*4J24vz2Rs`i%U?%gR!&Z0Rt{ET7A~%LdKo5SHbxF&W_FH0M|MW` zKd)KdJ=rYpAH>GO`KQmHe((G)%JRWErYa#avh?BO|5+YLKrtgLn&1_&U+ zZyy%S@(Bn{Bn>AAjv@T^o%D6%jvv6%?YK_X)$jPgPZa9s_}%{J65)@XRzJ%_7rZLx zB;Bv_zv3&L7w;!-9PTT*G*lYDJ$kg!9{b?7&R~fhtexd40ELx=X)lt4Mlt7C!v=h@qTDaST{stAF-t(O4 zmad<*g3=`a#vKEw5>;)_Qba?F?;C=kOt4Yf+96VuxmlMbuCMKu(v*Rr$KPsH$K;HN zQyzh!WYVC-3rwo!ZUtn48ps2qU?fGpbxR?l6CYaiYSU~zvZ1fTfm>n#v=jX(5*x6l zDQKNrNd5g+TIpLCE*Gm?CRsS9FFN()^;-QTFa1$|aFzxhqcC=3-~A5?{hz@dY%J{m z{9E})692o5|EH|}Lw4njY~RKGe->>UBMWC@)_=4U{=@M^$M(*XM917AZQ>Rt0#nF!fg*qFU*9R?w1lfNjWxZd^qdqJmvoX|0|bG;Kc897LrSy@=V>pvD| zcm@?0Gh6k)dT9RrF6&>7gxoCt=!18`eAkk4Mjrn-V`6#dmHI>W^e!}J%*1T}P|yF# zF!kq+e}3P8%Guxll>c$c^e*o#e+~M-iQT@Br=jZn-S3XeiNs|K=5)Sv@;dT#Q;PI6 z)Ik=hp{1%O>H5l1oksW+|Rs~SPozm^_gf0r6!caceZSiryD}r02#G(O0 z{-{TsZo0{eIW*zUh4rzz%P1^;=?RJFf640k`Cd)9E2#cut;adl&IeF69jJ}Q7VN!xMUsdLe~`sVD>HewDM9mg^gzH5ES)gW%KQi^I02GYBDiFT{SWrj_g*^zjiG?AynLv<$7qoj| zG;u##=c zqV|e|kN~G>3&3(QO^l{5BBYaIoUlf0z0{yOv`Jyj2nUK@c+fsz3^kR6RtQ%VS5Py$ z8j$zV2-ph&dII=5>X6r$;~0JD#RKpG)&Y8euK*%|Gui?1xVWW6TF7+hbmVl1oD7^xVfNDHB` zyTCYy-ZRc9j3x{e2IPSOKLSyJ;i!UFLv$*6%pZd|?2I7!IPB6Pwt8eaf)IKl;)CO3 zwgjt5mr%-y zd#iR1#D{%o?Cc;sFt(9Ei!~?jdv0L#?Y+2m=oNhLnC3FWb<01t9Vj2bK++yC^$YR) z8&&VmrN{SeH}LR_%&sylm8b_cy9b9ars9oB{T}nZP|jbwZ=10f2pXz63D$Il`0j`J zoj;)ZqtVAsODJG0V{}yv@J!4D^Sd9^wh@RAfCA*j<>)C__!yp91i2RHV6ZlaT;%=0%uDK^q>jb;eMkKQlTB=jC_r4u>Avu6+xEvE9 z-1gl=RT4`fSH3p057m3Fnm5{@&pSoP9(I(e?fBc&AfoGX{pN>t5A~1TDc9v8U>f~( z&*1cN77Y+KaTau7kH{Nsh%)+-V)SVD!ZUHMF_m%k6P50B?`66nf8icc8LO1UV3Z&0@q zxhR5JUEt4b)2o7A5MBsJa=9FWv{jHDFtKAUVJx5D_>oSR%nMD}jo7f@+OcWb{Q2pal?zf%VKj+zC1jQ+SUWgmr-mKZI-C zhXBzhdr>x)LmJWd5`vZi=YTrY6;y3BZPW}ja}rh{D+w#{9*IZwwH*{r5C#wyNYE2# zC{Yd6tjWZNs&gQ4aYsC&$;A*H3haa;dSu9D2zZ0P<(jq-%n4Ez0Dnf9{uuCvar7W~ z3H}TDs7dfL$R!S<18@s5Jr&>wf6F`VEI0-63+f0k%_0bwJ0!RR8*mSK4v7!m8Y7iM zAo9WfFSS(O3@!_7McNygaZe_itrQMEkEPETJCQ!ZkSv6=`q1BC@;7p96HiFr5Pmo&<+uQaA;*t&x0R=Z9uG&PRW+ic7_ z_hi%YCDLi>aPA)*$nhOsF3;t!h|V9fq1?Hkba31*qvo*9@zvW{?oQu{3=xaG_2v1B zNQ6H2KdJ~HD9+Cn*@`S8IchoNkcy}d)$)l@+x{3lxZ@+ZFTYGEXV96F`(?xDYr(f4 zx%i{y6n4Q`(b}|wp(-MU-oU<*<9HFL3TNTxX~yDh`FdTE#bgHCXL|iQ?}?<(1vphL zZb(fym7GQ~!arQ>esb}3afK!Jt#Qsk@(sicdG2S3=%Ro7@X=AqD60|zCJQN=lg7t< zYLw67z8t`Cs?}+sH8p#cnB8+FIJM*8KlP387av03PjBqA^vxeQ7w74)`%?h-hugE` zi(`2ATbGODqjZeybryn~)jnIky8HUO`p`^o?R(aTaoZx6J~_S^pAZCf)E!V)!=&wG z+*kB@!O0auJKISfu8)UTpX&rB59r+#zy30QX>ikrH6Zj`)@}T3+h*%+tNhiY=li0$ z-Pqm&ej{G9aj>Ds$W^S6Frqsi=XyiydTR%_U#wlt1?hUTe65DWgLTf_oAB7w4E;jo z%ndi4%ug>N0(z@iD_wjebJ4y}pwMK3V^;F0hQT{$>u@o`mYjN8`ji%P{3I^f4kn<%q! zJ=A=S!B@RAoujmmNqTssd_Qq+kyX6pHW~NLU508`xDQOcUM9a5@E6mi{+K6dqbaVU zYeb@la$`cqA+uPLJ$Vt1Vn?)Hs%EMOLKz4~u?tQP0v|B~dpUGbdT`oE6v=Km_{*Wz zK(oeqNFq^TxyYXom&@;g&4zI5d-kf=U6~Ur_x|^Jzb)+Fe!mSY3`A+(rpE78N`bG+ z43qD<)rOr>#wC4B%1O`|E>?xB**V{ny5YHzxPjvW?^BhRW6eBJ@VYQ)m({1>3$uJI z4v*FZ;0f@*3ElKuqY!_p_?ldYpo}fGWjg6`@OX6WIifcrdUME(H4`;;(t?xQ76Svtt($itdV#L z!9X8+`h9rbl(HpMSEiD5lXR1^ZTM~v#)-5gVolZ#*p#>$5a%AxGjcJ9DmApv%zFW@2mW1{!SuRU-{0jM?qG+ubmwBTb2;zRly$l(r@(HdoxB#B}DM;y{V zGI{Y~{&>8iAEi*9k%Yu?2~b>sSzb|Ok=x&J@w+O-%f$n{sY&v`&l5G@@SH%eAYPel z(y64JAoF%XeKLuWsS$=@0p~+XjD~7_eUdIRhTuvf(%(Y*cf|PilNs**BC8N=nlAMgD0NGLAwm$K9N!AzFxxEl!e_M!;cU6QqG4ONgj{h zH#sC0xb6lxo)6!p)=YH$P&kJRx=%P$nz}+Pl(^5d2Av0g+_Ic)WX8XNnTMeS{y_Xq zCcUGuhk~)_FS-7a+@IoO!qmWJ+=zi8|5LIL%yF0SqE%&EEWou3MONcYl0OR;mz|s?@xyNP{YDQTS^;Pgw*{ zXw^E`)7*$Rd`-5jb%7S6fp$sCN-5;Q1mQ^m{YhTS?H=E1KM}{;werWi;%t^Eg%yfy z*T4u zrr}(@w71ZIP8F*9QIZ^q*dj~4%_R*_&>;tTp=n4=0q2pK8Kt?x1HcPTVumrc8@A?d zkR6}MCIIOaCu8RBMgEY6*HljXBz1RzudJeaWOv(YB0s{0tPn$cX zcsE~_5@}H0nvMucc8s^#I2hSSe*}fOUB&RY>7ucKjGs0_HQ!Pn%DcPwYlQ7ZOlbE) zLK|G=+XDs*{5lppcAX(&9%B6f71_xwX`=~GcR3htNv@7Ta!lN5ofOmTmcZMoT_f8T zYG6Ehe7NoD(LjABtz&-#D%{;bGq~Gf=`E28N?RSBuf@(aID(>x zx0eap<%(u%(}xx$JjIBv>+(wdYqW9OXtRm%guuemV&epH4{X%}M_3HR&&1!yR%g89 zlViJBbPwF3lM|U|hgQ&7roi%`@ZE3ebR)_yNEM4hr`AWDe7Kt|vLZp~9UkLjqj9j_yz(YDHBrrfrA@-d|{Gipl zW30nhe;R0H$AE#n+wf_#k)Givn3z>@eZfmI=0;VoH`9*Q>4h9+xBpoTTZm{2b4}!N zy0I6@vd_wS>aFcVETX;6BJ#bHeVOo1C>m660<<I@hA zC`Iq5H%buQX=iO4$7J9GkK!iBS+I8p>^cZwOh4qLMM1M;4yUd{NyglN6B`TxTZ+nK@x^Src0 zVvb7wI)i(+kcfL&0iB~)6id}Hc4|Ux&o@?O^5mMvVDjW-?;D*##YhS6JR1wnFs_p8 z)X^{WBFJ+q`@+@5!^FR_e#&)%d;YUKUK7CD#Zd(4;U>Oo5^hP4h9UMgw^^MPT0owK z6!{u6o?7V3h&_uXoRFFZVXatT9e^&k!y-$xomWUqfSUXG$}ZX8csKAYd{)?DQG?yG z{)}sNFArX0@^u!>TdBZaqKIP@lOS?1`HcqmQ?4!4H#Fl|$iyq=GzYD?J!{J+Wrj6v z?kyNN$>CXgMb|8u6j{6YI>I7RDZ>^?X^9gGqxGF%)G^FO0FjWZp-MHQ64bXn-)_tW zPbOEfGO%`?k19e@5J{TpUSQ3TP1>3|TbJ;byfn`y>T(i6E?!e%r3q}>J}HEDL#%J9 zLTRtpo>+Sx-)B)o^zi&r2TnMHTAUV~*{;4mxKj>ZKG>PF2tL27Ewd;{71Y`g(p1{_E`TvP_|3mTZn(S6t+f0jHK&!vpDJn}p6 zEO|u|;R}K%WW2tx+h}6^BESVZou(9a4c-H8%{zPU+MnFoimgT4DLm~-VMJDnpe6j0 zbRxhOoy%&!l8pTgddKkT7NIuMU#>sO^h;utW_E!dtvA}coN7Q^`eLvA5NH1>KyH3) z5b?zy)cll##-bsAvD0o!;?<9=e&pRyle^hfF44Kbd64+ zJ0=hy;iFafDnQ9V&-6Y-zj2$C%8sAlVcHX9gX^W7>#Q%A5k3lWPcr zl8P+7U(m&2P*$p-AfS1>JWbSx(xbEft6#s~sPC}-7gm`@slmcJv-Dch8|kOc=w-a! zND=9_8=lbzwV}B~tGNu=dV&V24pINoH?}_BKDu-SX8+G;OnwQj*`))wv7UKPVq*j9 z9j=*oo~M^Kz*U$R*%#PY8p6fiwgS|drS2~14FQz%5{h$E_G5lo)?4JGLCojg&d|_k zk|&J#z3|LVuwMnY$UUF7S&=2aHtD*tZ5mmYCK*h)CbiZWbp4|BA(|+UB`i#6k}x2e zkK_AX5*z)2fR3sNCQhh;mX7kvnCZqEqs9kB)#Oz1&n-8#0UR1*5uRpPDGfeWb0gP^ z=+4$$sYS0k1{2!^Lq2QfQ*)K*R7g*B^d{mkmrmBNg?4&6ZA~Oo^eLvp9#)~eno5`F z%X1ko&V_7gUoq;b!JTWthq6r;x zGsTM&tckF_8+rS3)v#GnV%Loybdsf`HnYzyT%U%DAS7sahsdWS>jW>rZ|D&U?*n}I z2>ktXq$MmoF?KHzROchGx30m;& zi3ms(SX1A}2Q9Xf$xyCINJ_ybTzWOXleGPKb#-jJUsa<>iX>}Z-3UldK&=zgF8`>g%jvWV!);E=QwHf?voj;?#f8V5aT!!TFFcXWf^9JZ^Go9FCK@ z4sv-CqHX2>VeBq|B5C$T!7~i*KDZ2nySokU3{K-rmYb`P|PDEPr=%nxx%hm;uN^vnMg~ z@@S;4crr0A=P!(Ono3%ASwzCl5Izs@4w*i!rgf?=ZYGERuv7A zAHN*ZXT^_)HHT|sPpvXB-LNQx)=18=E?tF?#he<};IweRgnaSg%`=e*d~t9rCv6Nh zgP2z~meNjuZ532db~O%@0ZB~`*pme8z!nj+r!6M%!?n?Dm*57A0NmeAb>ionltKWa zgLG^!aUtV*czSc6>9gvq&e~G$u=P9OY zYZw}ifA@4rs=Mfsw_W37Zy(-u^}O_?GZ2_ZgrHg4|AT zMuMBPlBr?@%8JD_kHaiuN-t-&bgCuKUvIYbit0`(6`}LTL{W9h?3Q;Nz)hD*BaZNC zVD*lXg&L?m`CIFJDYo}#{P&&?N;60UI2Vru5Ak9j1LLZys{B~P$sgpBZ|VtbvI^cx zwP7w$;6iXRVkahf10l1D7JuVLsMylU8mZMp-)}9_d4U?4=MnV@ccQWkF{Z%$o_6MB z?wO?aKphiR2o^7A`wGpFBGIz0HZ`G)d9!OTGLI{UMC|yPz98cPf*fg@% z+y|HGr2VF_HbPpo;HsG)7L`;&FBHh$xLnjOSGHIZuILLtGlpch7x&uq6{v^qJ;GTR zkr6v!nF|iMZwM@~vp5R(9JWal>4=O;HK85V5#7IPQk1X`3?xa2;4}fwU~QK8b;AIa zK@mg0tMmGbR5g&NzT3I4P1fdf@C{O+X14r0Ut;wryx?OHk)D~nWN$L3nD%U}Ec zMrd1?OdF(3rGIaH( zxj8)_l~BF!6-Xot{s*Xf+=i~N8w#drL&E@UPo4UuTW2V|%=SXoZcuZ=Unw+?(2bUP zP29irWZA=623tSS5=l>QLeBpFZO`_k*lrM*LLTHHjYLL0jFkLJnVL-sv$nh6=LD@L82d_F9)mMUK0cq1`#G3 zZv+0A54LIRb$eNmrUGt0+Bd-u%+l~CnuKCb>~2FV3dtefb;68uxDrSYhC)IJKDD}= zxWQsZ%xpJ#isu-JXXr8n7E`1K?CmX1b@pj>{O_K~MLgce>Vc37%uBD^c=T^mO>?D% zBHD4{(!JVv9M0d!#Us*}Zx*uD7L;PgYy}Sd5!prx(en?FB}8mWwY{$5Le{}m>d0IH z(UiLNPTz((B#PoP7jIAtDOebK_y{PL7=yCblaGE`gipWG85pQ)w7$kk#gZiE<*=Cx z5%EyBGJ^cMTp;GNESkQ*qfdOrE1+6}R?>0z026FlrNVqm9!aZ_u9`P-Q`L5pG=8iD znnyjZ+uEcWQej+MLKi`g{oQ?@aoz#f%~d&1XHqwHXx#ALj^&X%)n$0m z9<#aWDyHw9X76$NA_mdJOqa=osMYl~ptvtir=B7~-09;_kDY!!GNavNb~zbeUkxxF z`DXL1P#pa^z$7AG-aQa2Vo7Ecyho6D4_#{c^L8K)atgoED4(iYgz`{^2CpU9QR;-C zzIhzpGf0$;t5DQ^(9!AdE~(OSy;Q__TYFg>HIG`MQg4Nkf|C45g`(#)XKo+|CKOqF znZbI|{ZVtQXQmGZBjAa$! zhu}4gdK3vWvZilJ3-ClwBn_w?0Khq%b(M1)hNqx`puKG2ge~h*qFnQtqL!Kv3sF|r zn+AWAm`R+_ZQVN>H7(QDI}QvZN&z|n&f=iD(wr+GK)V|@++OB=4e-c1!}5`lOp-6H zs=hhKDqpLmTx0G=5NKw+Cn<=Idie*!5M@C3UjrugRaa<<353YZtg7V7Sy}eNjRMYW zBh;s!n@={H0(}CV2ze?I(uqW7Qb7Njx|Bx7nX`u+BJdWsym>Hyv<|P`yURTSt(v z7MS=KyNW)R=i^#(!Ib{$8s0a?4|@;1TLcsZ0pD8yYMHY+5u!x*R^DX z9u1}eRKPnsL6=V*AMhC7CCSdLn zhBa{V`3r(o%T7W72xOl%=C&cUGjl2#30G!*O>&!vsO#ZiL{XAQe*Lf_h=;OfB=~$4 zq>6}5E|;F@5Qy`rHYzEx6leJjV=QawFtBvs=x;OC+~&$-gySp_5pm32+7&b^oyCX& zqHM%WR^=Rp9+k!ouR9D)&uVF3LP?1epsezh%9J{mO<$5EbrW9ZN{&WQ$zIdQ8><|a z?p$YN;dX_LyxPAKxF&p8QOs&0C&tC~3Rs~O6W)q>6q&>~7^-TiRk`N0CMRQLSEgRp zQKYP^VH8RyrVghKLXk83PU{gg(5NXJy?Wkv(pSBt^&5@Y@i~-V$Z5w049Zj0c zGcZsW$)muJg5hS={3)fBO_P3M<2Z<&j8FzvEQde6ra!E<8wG#FO5CE^%xjJK1+__| z#ru_~5`3wuqa+sYK{Wn;0STz|B?ELMv0MUzF~OtZXfPDKsEmr|n4A#ESAK1>q`ST> z&>bU3(I1B{u|Km%$k&djUUj|L*aKqR`QmS}OhT1!1@_FLX+*e2p1wYH*18fXy%aAn zSW?YX&EoJ>OU%={tYiYUK}5PTVen z=A5E$E%vw-R%A4=-;`E@1#SX53?23N3k-pdm7 z6!BL6{QmS~$TDG+Wf$sWR-t%0E?Ef&2fqFhH=@;^L7dw0n)YuK=(Go8)dl>#LZ|=4||qf3ipYSPUa9jzhR>$jchf z8lVcK9F)}qv~~6W0e?J zGv|sT^I-N>PcVL|zpG-L{_07(Zca?sImb=XeOXmv=avS5Wo11vCQHLdkiHJcnqf7x zvgJ0d%Oswit7x~NO0QSz$?B6kvSKXYEkO1B`0>ar|1;$;#C;-~55G%~Pfw9;&w3}E zrN(kB*CXPC+?h%lx>!>P%h;F1T+L}Zx%}FuHq+yVtn;+6rW;MYHGj%ZImrl9*;0#C zwnlEULSf>4^k~e_5bOdw*@DIF5J~ILM ztR9;IPpie!&eFvKIj{6Jxc3-pinL_i>?kxF!sDR9Jv}k)k4E zE;TGZ9JXG%s4QjKtV!&l|7~B=FKSQ41G(iA-Q>SPjB;g&O+rO}m_GDNf!5eI%yrKF zN0Hz=--Zt6p;A={gR>{}4$;0Vo?SJ~k5Hg53-QiqTBe7W0m4l(@kNQV8ge1vR1y8D zTqK0FtlkU%%AGMdTFBv;>W)erRZ#7f=Uv&vQOzz5yn|UWVz=+T=LKUD>k`$^Ap$Ww zFMGqbN*WH@Rw1#BPpW{49Z|o8bv!jSYiy;{Jp-~cat|B)pYHJAdm8{5T&`7Q$~(w& zP*H5A=VsX{m4Z;e93-WnAjJlqiaE_uDP&ZMqWz}mBl_+drzHa>w6D^3!J7OK_H_qTc9oF7n_VGSH>Ub1PGa} zu6m&zf%9P&d;J@(#H!a@C9UVeI3d%MN~Tw5Ic%=qu!g`+D6)%Awgiu=)> z^sy^p}f1Uo?uc-;S0x8$5LY8Rfm5$85lQMErPKD2tbpA0yQb*3sm$S16SGcSU)?thD z;r9aJvGJ3?d%fPw)$RN88gVx_HSEl#XJSnT<%eDg#v+E|QPr*+({*KeF3Rh>x?K&r zG22D$uxq)-#I}iDi#!99FEc9O%X<*x>l(vg*SCkz+x)jnS1A-NyAR~9vmYy6&Q=*O z1s;2B+Eb8Y114-DxR_-zlS;9ggrIAA%L}vY{b>5uyf(c*3TB{~%XY2ITo~nM%mcBt zXTh_KKU|Gpjx!qVT@*}f)575#+sT1r<_pU=r{gg^Jk1Izx)c>@DmmkQssG8bz#a6LEvGy^pw1$Nu zeSJJ>N6CQkpn9KD%5R)~R@ISWQbT#-d8ge`Em>HFSf-1nFZYRH0$ZoJS$|SFS>s)n zIA@H8m^M|za|K5sG*ROmIDAG0#5@zAvTPnkEFw8cgPB-=<=VcqUW*Ii7PIZ#j z?}rJ|)f<1xye&Sg=Ytm3g7duldoWopec#+LjOhRzfnHq(ZL_}C*PvBNMVVoy5YbBP zY-7Q58~&13AZu*wZel&8?QdL`haagyrNgbygD!ewABcr79@HTZpvNu_Wf48<<`dD@ z`+2jgnONEEM8CRxj>?0qDqKVq`PlQ<>DIWH({HcSWY1O24jpGCl6(rV$vsVq|BQI$ z;RErkow6cx-?1lIGEouc{juS|Lhk$Yw> z7>R?w|JEM4NU}gQIa9N(QSVT;p1$d!ZB~Wii<7{Fx?AKKP5fenMyLKI*O_pu^}`Asj>!J{C0g-4U9X@s(HfIAeo>H!C@wi<;4OcTAL zxa#BP$Y_HpLOMQ$JKK@sb2#nJgkpy&KvJ?&jR6?D<09eIxg2-MD&buc6X5fBlea|e zld^NZ!*>6BgUF@ik#mBtpXuu?kv-*8o3hP;q>h7Ju)%3F1y}mcFMnT>SV|njIg3H{ zK@(1|20)@zPbZPx5+a}hy#=2{jWij#FRYrtE^=cC6DGU{^BpxpDsvMGlHgG(2iYW% z=V!YPX3F!6MwVvc#x6SdL0n zfg`2Hb6mdo3G>&XaXI->V*m_7CpGv^qn6gBcrs#F!73(~wdvRkYekpHQ-zoNOK@oY z;}dAv*7cxFJW~Rm@gjsT_;_u4m2sCOfr1*X8--#fa_M6l4(D}q;lMNZ0adw9Ny9ku zXp0IvLbkNZ#4eBk84H$bNErdn2q}BLmMz<445(;twB1Ju3K`Gc(6dFTjfAxCG_+n8 zA87fi^vv0%){sfi2a!h*Hk2U8&;rwHqUhRiPDzV@>U46XdL9&@d*~M z6r0V;+8={d;m;gbQ$b1Fo;mSW8cc&P(-3nO>QN3+T58#VI|D}V_t=VH*h31yrzt2R zv?);-LO;k}oMRO|IKeL5!8>JD8XcjJap0(kW9V60XP%Z>7v|%K$$c&+oUuPENDMhfTg~!5KDBaw+F2#L6wvO5 zqG z)5B_qkax`p({CvKMl$4M=J)5rwc|@ae6<9RG3eBAC8-$SKPG!Wyuje*RhkWt2*C1j zP1fjBNzeKc&~X60eA3s7!1*;cSEcMLCfxvmW%}x@7N4QZR$TcDT-*q#{aM0ARHJqT zHx&n#BczhGY4?3B>gnv@yv4Jp;^q8#oy!iuuawVWVhX&blZw*OcHB>_Z&=bu3pZY< zptELhrPSZnaJFvdXl{y#8nlR+Dc`1QL2;+2E6%$rMq)I_n5q~8;t6sOL6Av_51~Jh z3@f5RKNJ6H_?$-8D@OktK3x78Iz^v{AoP1(gHt-s)U4K{Oqp<{)ClHu%Qb51D=ySch|K@g{uYa;l42Cu&O9 z2E%&q!TCfK57=BVDV<3R5Q~+^bY~@%*b?~Vcc#C13jGc{a7o0s+xK*jTC8F$5&7XE zV1yfKcWP9gbLp~wa;r=h+#-3n>n?k!++c%H)Ia%a5!yc$_7!(pJ~tn!CoNn2W{WRg zXJGx(`q+?rCHn66fdxLD;6pxDt56SXbh4o2wix`^r6n%s09t%$LwIdC0-gGp-Cc4r zEf*9{a;}O}y|O7{D>$m3ERuW$p;ZN z6#(OZuxtN28VM5%JNtivqA>mUupa-0sQ*8Ns;G>RijpvmvbnXfqnxp;qOG;Qje?S_ z^1tEOf6+I%Pp|neA1i9}X;jT^KH03SzTv-$|JR!T239{M+ke0+6Eo9)7prWHaQ}4m ze@@JwB$}Dy)1)#o{vSX8Z28acpXq<7iJj@6SSJ4@mQObO@7zD%9L%2tj_n`z_dllp z)WrI)*wX)$`FHMrwe+8@{(H~<-3ALM*T4Gwzk2mq(?4bYZ~FNEEye#iHvhGI|Gm5a zEeroY4#~fG;ita+m+Jf9zL1^sA7A)Ma~VHdWnyGx|33ml&QA>d-+!+-h#_ut$h`#<|q z@xNK>f35g`xWi8}{IApNKkks3nd|?DJ1lI6^-`W&67U)Ca6La|ah(Sxfigidg!Q_0JK!s+?tW!0V} zfVHgji=rltkJF1MP(S_zmyDYQ@D`Owc9@ z-urb{(8Ke!=ECSwO+z%wS#|Y=j1W8OvCXn{cI|9L=vW;``@6qYm`jX6h|i1r zd!0T2QlRd6{|>KytDX6gW39pE$<4!#try+)e3|pz=UOvpPqWoVCv~jrko0lnyzyi{ zI+VzNV|lI3fmgtqtbcj8#O)^7{jJY;clbs#3sImeSYh`%zAGMZjhIJLd+P$R#OuUzmbzk{%0)d_O&+@Nws zA}=opEG)_tLbfQRlzmGWb?hU_5T3v>8LltvC*rYTzi*$$tW+1Z^RPM}b1JehMc`9Y zS8;0EZf=nILfXByy=o|?&^edX6m0+Oz(GyuidUy16RL~$4K4VB|LakgC>%o>A!Aop z{5kqbZ3M1yv0T_h6O#Is4@*+52YGwVynS1m9YBf1ZS zqpzpn_z*Dta2zm{kRW5G*Dvp2%Rr*NN;~N%0@&|Q=J@P)vlYn0RuP)IqHJ%rSb{>dN#U8KhKbZPoP<=4;_kFE-y=c0G z=$d_2H-@V5{=!S$xl1H}F$N=CB<&{bndA#V@t1z`d`zFkLg=j)jN&l$1}!J$DyV1X z(}g;;W4T|-&J;VuU%9#Wury$fvz zVz%)kA0bAfR0|X|N4}^gxfZ6m?vZqa4OH>&j*dMKI~#Tc>&n?c+x5e8fR})?f87qqHozkN1K!?}0-=iVP)}RnT^A!Nrj_Znq zT>^EU*id(MEBE+a|L7Z72H;O26iKUM z442by^C1gj3s_Za3?RgbsByZCHr*2V1<@0@lY98Wt!XoJ{UaX|Y$UP3;GVbMswHUC z?2NZTt6anTC)ku$Vd1bkxVedF=8xf+1vRD~fIuqG?{lYa0Tc7dy|s4v?6KFJ_RCoopZEA52lUgIO$r~za!R%#b4?1w@ptB}*InmU}nZiCaCJNi{Crh~URy1b#MtA?-a3 zgZnipa|j$ThftrF(JLBn#OIJ4*DKx$z6lCUM<9*Fs*M$gOS)WHGAFuOw@kLm+K`HC z+wpvGA8oylyH@Xvk_P+850 z{;mF4r?ORY0EgKZjrl`<__aCa36I24e%MRpcOtyrSsGXIF>b0fk;cjcMxX1(0ga;;gb6zYE^xrLnI@fTQ?Qd&y46{%cJ09YL?9e!pb^>0ds@tlAXsVA-%4- zSXXwpUYFU86zW4G0wvC7wwDhZ!XH>9k38Ithk}>ILyLBZkQ)+6Glx@~^1T!R0>2Sv zM1^}|cWaPfDdPL^`OxtDiHl>C^Th+9vtbxu&%?g+Vzkpd z@y#PRuz0k?j98CQ^(-|)2h8O4VT?%8=@elH#P@deVB}FC&7_7RL5!02RZtn1?0iN9 zL|s=$QBAM2>$R^+GdqGJE7h*nF48W@EY7T`oW-&SprSLZQ@-T<*pWJ}H5n@qRsS$O=+ zb5~CXlJhZ5Wz09yS`!r9(pbY30$)O@G$y%aSZFQE1*~n&_{1pb)}D!jgrqJOpY=5H ztmUFd9x%j+0y{u1|szNnaX5AuBOms9)m|9a$%v(bSK8FffXB(3~X>ruW z0`_aILM8Y|#jcM?*jB6>*<;Loly>y^@so~>x#Nw&pV})-0EH%>u%xCHkP>R8MHp7% zEZV}Ggm@cM33?v*D-#5m`&&Vtr;4SQ3YGt>odLGE(%J4O1`bp{`t0u4Y>LpiUBiZ` z8iXNt#EOjPk6b8^l9OhdB#uf14(E_`RdDVZ z9$W1*$p?n`y&lXiV_1hYhC{6;FSeUD)goU!ouw2VRGS3owpoV{8h0+~b2tv9xII~T z0CX}94PIz#LRFESn&C=r@e6KR*KO5Vc1L;cg+P0Gw90(<`dtIy+_$4Vl}uo4eGc@` za@TO(@LaWTSv0+$G%rMux;*a(YxGVsZr1H_cpJK0)LM8>b-bN|f4zDnK#yXjIVhsJ zjFFYb{&lgHs*0h?R8l>Yb|k>;#4YY%e1zn~{`u4`F33#Njam{#ekN^j;(fkSvpK6L z1QE97gri1;SiK?lY3#`SCaIywa;8z%ys*ADs!n5t@!ir)r69i1cGkht^2Ne+4r!LK zV$N!DGQ{j<Uz<_R%}yp^zv{GPfUm;duw z^cxhb$r^V+a>Z98-Q>j>GqcJGicyj?MTz}^{x2|JslVKO!M)zF^F?~(+w=tk2ST6s z`PqI!s>SY1VX(QbFgLQb5{?@B9a_z)tg6jqkL|N?r{Vh^SFz#bJYQW|eM#(HQZ=n$ z8@wqyV&5VF^@@8*(cSe0w=g=O)1@^js-Ht#Km}Sc zMs^xUNk>xH=(QNGA)c70wjDu<1YRj9i6E_m{hrSV(747tGsG` z*1j0VEXXdHfD3t2E@k2SnC6kjg5+2KjKKL-ne{@K*%^`6T(%-+qF(DyF7$^a*`GD$ zFc7=koCG`k3#{WGY+yN7q=0tMma?S2M>7X;x&#c7aiSmN*#FMLc$7b9r8dJ!Y(ch|U++IGbX~jEnBTftbkQ zP(OoKWSPE>=t4kbe9~lDO#D##)kk(oU3)Oq-uOLbBOkuL(nU1q3R4=p^vPS7@}K2;!xj(ZpheT4T@@R5Bw z&|waya)x-NUE5nFx#$dA7=cNvd97jIpjtX&rKx-1FdvcgML#WKtUj-8ZZbP{{x|fa zxm(=U@bkRrY5iw*?{st^O4DC~EAw}@_vW8bV)3a#X{$2v(22C<@-$J$ic_*aX7$exHYwr(zvgpjx?QXt$xQV_L*!KN?3kMyfYiVN9$_m|}ZP*<7 z#yXP${AMVWTfXNX7grE21NNqcY|)B(b}~34eNOBeOR!6mlN>tCKit;0`@=o)HK1LX zzZU@o_hL}hlN%fmx9X4OW|4h)OQjp(*0`Om zJ<;VCAFkUAA6`#=I1fB6019&&94`wi58K4=YIFETmWENMYF*q8EhpgFb(^6Ph@;8r zbgDLa@I6H%VJYZdT#|`ONV+*U(Ni$+<%$*&Y}ju;OyX z_e%KQ^_cv`@gxr+CjnRZv$94)ootn~o#a*dG4ZmLyu^IEV*Yflo%VTv+CJAU@Ug{B z;Z?A`0JD(}MeSm;vvlk*Z&O`Bq$^raPT(Uk+;-9#x40&jC&GDatBq~t@MmPoFx{r@ zc31C*j3Zx1_vr0{6LeQd7t;-$5AFkl51n>@X2Fw}0t;+W2DC&7;pX}dy@M}?meZF9 z5;}}dDc#NaYeal2gw0ZcZ(6;4X~=qrk7TL+*14ps$a=t5ikt7L1xwNs7WWPUWOa6b z9AoO$=T=&V6b>m?acwBfG0Rx946>N7ljCE9<7UY^U}#4SFe zCF#{3Dm?sRw>rui9XU-nE!!oA;Sta&97=*NFe)Hy>PQY!O=FpXWo*jW7rvEU7hG1y zGyigsN4E-TL-N6Qg`kVrc!2PPvn1mVfLaD#M&LGtzvbkC%9%lgRC{0`-X^6|Al z^^7#M^eJ3|<@OAhkF%7(F+b2Djjv&U_bX0Zg~nU6pWJ*ai1f@@jXf%+>3%ry^L2pm zz@sV@vm3>4s6>7VP9KG4IPEU~fPDWjw0kpo{^o#}SX(D1k=w0Eh?3Tw%H8AZx~(C! zjOr1``-5=mH3L-06$Ep=sH5;?JL0_P=o9_$qL=$l&AFoV6Rk3-C)HD7d!!aeq{orS zJ<7odewi2Yq+K-S%lM1gKGdxp;(f`|BDyY_C3AEv6ljet)svY=QhdJ@)HrE(V44N_ z(ZR+dVlm7vi`Og>k5blcs9RWEL-ZDM4zZCXFF%z*%oC&=;5u(i zIQ$B(I{#B$=fQ6R1pd&P`U<(j9!NxzXsG5Gm}>6D;Zjm>q_dwY6N5W^43gb!-ynTy z#J$Y&i7Q@0US6Zpnn=v;u-`5!{N16-BKVuxc?-PI=C4X)JVhb7TuEtFSp_8n4IPyn zdH8m4ZGhR245GL|ci@+LT-bR z23Sb0BzY(BsF~(Czh*i!DCp`Pv?ZPupIVGnC^jC9UlhZQw?aW}@`n zQ|MC{;9h$M?b0&{Rj#BQ|^QD(x=xM!}DS3#cYS=+!?v*cKr3jXisEPRD;x>b!#Om!_85n%h`vTBg|yz~}0V%<&t0Cad`7WpWIgd%Ib<-TlGiW@73jFn1U$ znv9t!#vjcf?Id>}3YfQ})ILCNc4mWu$}}2cOGk3YTzc6{*xt=C8bvzE8Q}ht0@4*x zH5jfpr!F!vRli}&j-oNPMwkeij!8-$HIuZ&_D&nlNJJm`vxm;~`q=m@L8`jjt3vVw zkK6V0G-Jq(V66<3(sv&cfY}$|eV$4-Y#lW0FS$kTMZ-z-5;HTma@Y|`misX+DjF%+ zfSB^D!9E1qS1k4S_5*=)orZ~O@lr0sqm$sCSdK`4^`aSLTLR6(gcxk$yhV1|4>AwngXn z@fo@4&dqSiqKlE5XJ4Z zM(|5{c4mUa$wofAad{-!2Jd2wgSulG#g-&MY{{RnD59*_;X0|xm1@UjJhx7Qz6ujZ z&1p7^Ad8D5*&kw(Yi8~m4ZUX$;ajf($7P>WJS9HI#XUbKt27rV>)(u+jyo#l%-!tb zipsNAL#oXQqT%lwhNtdi;t$;r(+_L)v6gTecSc_9wmo^ja_Q{KPhL1w!}d9yZED=l zPeq)$nOke0vCB#tL^zeT(+cHM+bIod(cMm@Rlj=1?sJKi)H4%ZGMK6E+zR~sgY0}% zqY)vD8x`ShQg53Az-(I=hf4sLqdKHrRI{rRq^zkmlZH+h<1cA>5ma11v`>RZosI97 zXqv$309af+xgnjfpSbmr8?#3Rkv^fC#i1y0{lY_hbbNF7(Q(31&mRPj<`^0cBk5_1 zgb>|eK5hVWO!pHlX^(t%wmXfp#JR%VWTg3R!9@kGm_SM0I{M2vTR}-9cBhGpE7Gn) zFCby3s-h%S!LU3WvmdVa2@sop*ZoYEDZhTz|0bY&f33}tZ6S3xTQNaH6;ZGqk6Ui4 zZ0{+M<5*ov^w_i56FvCH=M0(Q&G9s_r`q|BUtWobx3-GbY3{X_f=T?Fpw)LVkSw86 zMtJc|{eVfY02Tf&yPrVri2rYy88$FlO8 zFrJ1E$)2M{^6;;D&dgm!XsqR$d4@2{vU*kOzv#Vn37Q7uH!l3K&qQB?vY!2xN&R|R zD&Kr32inQ|Mc?ej@~|QvzS~Zm-}mF$4a^&qU!K_3NN7ksgx*s2H^2Lec_{6`WvH=n zId%EMOjJ~dns$nAOk*4Pt9iX?{k`A{FNv?|AZkKWXRbZ%hIC?u%hq#zBpW7sw?&Ip z?b70vzIr7+{$%RdF_O^GCegLk)pML)(7Mcb-2m;sJY1RM*8A;l9bRXgbp41 zwBzSHWdV>HHM!)@%3k5u^+26*&y4E+Za%l)4n^(y&p8I<+ZX%X-1wFR-bg)6GL7NF zLd9Mps=Gd^7YPp|8K-@`w%gl+cSJt%WzS`_1MB;Y1a6jl3C5Q`tDH;c&bj64&v$Har$WB_^&`jd% zo}=OZ0VNMn6!%?9>?cR^MU$U{{17iB zroK7xtA39EHHFOdj>Kj@2$7-UYeQ17l$tw9N0^Bmd+NpWz>SuVq*2LKu~p72e=Zi1 zE;H-sWM~KO0*7mduj16C$3rH>e3hQ^T`Dc8GaO0&z_&_M{_b2JkEy7^6X8(4S`66ZgWO`& z47D<8ET=$Rf2kZ$incwv@G(1`SV>L}Y3E-V%rKj}iw^eg>Caaib%ZuqoqOuH(4W7r zUSo6}A@v-MUeD@0SsGNgQ7kS+kMgulTj6DDuHm1sTkCLCyW<;kYl)omK&ZFu)_IdI zoU|@doi)7rcf%(Q9JnBEo4+x*k?im+mZmJzr zw5upLD4#TX=_B6Fma!;DKtkMlhn+P#mnxQGO_VqRo9C12{1cayR;19t?`c8+m8y0P z>n_XdGt%1nnu}OvMTwV`zNd%pqYRFCHcJ9nx!<~&@0~ro1$-Y0p<9aS`-TNam?vMz z)dz%G<;@?P1kbG9Ew7(hy$y8FzxDJ%>Up%z@iWnR7(8$ktQ=r8tB6Cr-odKxU~v19@Z&{Qk*m7NPM{8B)VLP@(rJnC+$y*U&uWQif;_Db|x$f>|F2i#@@4Wv~(X%V%cJuzaQD zJ*+a~BD2|MX1|e4U$>&ceLSS6gU9xr5RZAJJ}JG$;$^?`~vj(B^BTZ1Xg+84d41;rrVg4LZcXeF&9<- zWgHPyww*xSh2)&VV*4g?r*8){(iIs*+xFzDGx8!F?|s5TmO%gmhfVs%)B5bRt$@$w2D6xt&OYx4 ztr&l3e~DyiJKufNe)5y;P|#d2`54xk$(wai)V}PWmEFu%Py8C(vv9|F=d=_Gj2pAZ z_7cH{v>hj|D}_C~3dj?jo7_X`e9QcpZ!qit`{BGE5U(94MQ942)vEVwxO7aMcGJzh zek+OTqpnYK$ygj^HynXSgtuX zwtH9&kBRUodJ5?0V#azV4Oo^udjIru{)d@Ij%Sw+pSQDWUdI*Ti_YuW2cXo;tgPem zxn=nUC6EPWk9~5uC-I`4vEhb?2g&QXtyb1`t(&0j<+$pB{e0!+W(A9^Cn8*Lh8ICc zS<*6ryU;^rv#A^1c;kv!*Cp>%tI;O5S@U%M{^`g_-QIf02S^8 zLvkDI_$QXM!o`C5QWk*$(=y5sq-YmA@e>zrlX@jE(a1M12t(THW!I-FC~gGez~Ox2 z&KCt{_xLk!0&H$6S{PedLWDQ_F3dMZdm>YI(Gx=z16GUL#cB=C`y^$~t2gKJ(W2RJ zHjlRx#>TK*L*FzM$XhCy)Qm;9q!3-70_{egYkT+n?Y7k4;?)0WaT|{=-b~?3YK%Xu zCaPf*yzE8M(c7^~QTNQV8;Aw&k{Me|Wah^7iV+uJsCo)(H(|21=48X~c?S4+Qf}bg z&M2r8-LCx9Z;R^N!+~kF66xS(&(rb8yxTu%bAD@e)E$$Ya#e)-E z65K7gy9ReXAadu?V0`6X38qMW;i*XrxNcs_Lvh8p|_=x_>GHuE9#9?Wja4Q>Nr zVvj-rT1V-wQm>C1Q~anM8HS8;1@q7 zK)~p0<*h*2nba?P*CcnM4nqdcgVE5h9ylOxMW(hgq!hia46%xHLVpY9LKj2*#%~on z&MiN5+}l#>k3uHPE#Wj6C+IUeTqO3Tgd*dXgM6zjHIzhV==@+~p`wN~qL~&{<+62* z98g(@jF^iJ&|>xX>1p|(h`CX6vwPOXmzT@r>@X48JjCSD;ChPblUQp8keZdt3-6-s z`!{#tP4Av>cSPdW>RuRl$oL`VFi z1O{8)R~KZr)I3AH;S$jcw zRWFxZj4>LkvVyBJla;{K`oB<gut} zISODO{c@$LvQXny2z2S*_F=PkS+I|W>b!r?^$g)zDpo1(^%UYZVfFSw3RQC;i|BQM z%CRyQ6)ee1lz?(FSu2nsya{Ju^E=uxPRedEN}}A|4G-QN67$ayBv8etPL52UtX3OG z=c~i>0r~{9UshE6Hmn6PF=qB9X z_9S;ZZf56qs{HNxJCNyho0kW;ui=xX4th7dUuna*(Cz&nqs?1?o~s2Mn~tH4K97!m zbVw!Z&6rbv9u0Mnp#|vqo}LM9(n88!TP<%SQQL)#*TsIQtx38QdT2zoxZhEiRdp#$!duu{M9Dj= zzMe?StlsKn|13z6ewACYOSk@}y(*Y*JUv>0OQcEAbackGV%xy%w7$I;>_+0IS5lRz zHk;ZTRiU6Hk{%73ahp(`I;HplVpAqA7Cc+Z<( z&{oK|tYo6+9c&|$eA8U1QMNnz$Dud^SJQMQ?7$XXsc9KnPy1Blk-HSFLmX}KV+2*roFpN!e>$`%6>wj_i;BMVe z;?RI+5%HC&?~)o5tPN`v!J`~eshw}FXOL+i#P?y2msYMaV^Fk&TYuso>i<{paee#5Ql<=Mc!Sy zYAHv+nt}xpCI;;b?JMN#C$l>nebOIbe_(kH+Jj;<64MyL)#uYZsgxrK_b(hqkpnrE zRV;_G%biqJZWN2)m$j5{-?rb|k}>5N;xTQ=AQylSgT^!!(H2noG=_G{|8#cxV)`-i zH36r37w^{WuGaiMfA-q$7f<*zzrRmMm!hVI!?Hwzt{`tm;&YQTr0~7PeXB4Aedboj zv5tca`thTr#b?aii4tR|q1~qF>SwX+2kY5oB3CU0@q6gp)qDC04?b9`4VM-O>2V{ON1+xh_h=K1OGGhdff zI<(HM?yv3ct>R^m`_qb@&H>F^^;_%t4Wq5JX@^R-dh5Dzbk45OroN4^E(b2M9-}haA<_7|WWKZWc~Dh{yR( zyc&;Y_Y%OCsX4md#%1r&VtTNRrMy$w9>Hp5Ccg;qiYs5+f6M;R@b0&V57g0a&{H8(Ny?;#xFnFryhNZL3YBerA+?@5>_7ZJ)MrNW@E z@tPMWIpUUVM9+-r`bQQt1cn*2TSeo><*LNCZVl+%M6mlT$ZoS+IdDs?qiGDZXN;fA z(tdb88J7ekJP|NPdHbW4i6@Hw_6DjlWi*UG2phr~B*F8D@12{=DA5<%j<~0wCSRD7 z_Ad{U8-kEW%2jE6-=JCpZ^lrD;0NQ-WjzZCd+H!s^6*EESdh;FI80{Q?)&%U?l{ve zp{t=(p_WLYV#p(rMN#1y_b@vwpzKJsP@)~MxoisfiFGd%Txr#9Rjy;RcyqwXFTXlg zk}~38+FDKI_%IGb837l-d9@^JC~An!6Z2UOSO2ZTM0yQv!_ue zY!e!wtiFSP33W`>Wid3p?MhWi754K_d`1S^7SHYLiD=IC^VQ>4LWrk z8QZ_|^l^xnjAVL;7^tCUdxsP>d!2Y0&IicUs*jwQ%cq#W(KBT=Z1wfP(^qu9l6LUFIxWAHV8@hBTo7<>MW4PFjt3{t z(AvTp6!Lf&&eT8W_u+7nD!P{Yd({Zycg8NeAMbTUmE1azYO&u;>!*C5svAu1Bv5x~ zf(RRNKsOX_W273Itb zY@@17*PZ>dLR%ae_*##QAf-VAd5H%OH1|l-o3%=)&`7S(NFchaq2I#Q;Ek;;CxqS! zZbb?5^-b@<9qht^uAotX(t{DZKg0HGDX{$Woi!l$jU)l$A@HMYq!ty9j$z^qJJBcW zGEV--DamO8MB10)bk83D4@~4crB+*`4qR#j29*o^COQEJMMstXLWS0GeC4Xzs+iEmvT z(Q~G8DcK+Lj_b(C$WDFtP^e!s5)qFkyF*DXu+ev;qt327NkI;nidvwN;?z9@T^+}I$QY)dfYSM!PXcEP1o3$De zxkYZ2uH@^MO&D|exfk=*2){n^HLcn-B=f|{yDKm>!TANHr|@H~9E^-b*_`1oH}D>y zexa;|I@a@EPR(f>a9&<*d6hDIL~1p9L&@cuMpZ6HynJD+a6Ck!-rzs@a*xl;w)#YV%%| zNXpX>gNC=MPnHK+D^dEohtQ9I=9*rX@>G@Zh3R_-B$=*KQ8F(r(BMKd znpRdQi?;)aKqNkgikiCjKt`4i^vKPbElZL24$qGLdQvt8xo#ex8EULhIDDa>{18 zBnQ1uC^H{r2h=I(!$)qmahG_4Q{7e1|`*s)rxTdCl5(2p9SPkIRN z542o1X>Exru_;Wd-?pNr(Un}4kaoq#MU0kaTS#jNdtMfLpYkM}PlJ=2X?8 zw{JqcqdD9$Tiw~)nchMDL6msxnq`-jcz1MbEArc~fG17f;k#W$YnhA^?TiYEA%2s< zj%UtYr>~^o1Qv3VmX!lz9H;Z`7YdeSDX!$kuOUCjO|HEeadt&}9H8f|4|s?<&%;DU zh?#RLRi5isFptoHAL^yw=R$oR<*i0^Q}8Az$Fbux3gd->)I2eVr#iq$rq@-FA>5B> z7ccKq!=&ie~i+wWiZpR2~#brPOxsN{bKQJx|x6|I&qcp&>B8zr!b|8 zkoMY_cCJ^=G=f1*|1c*n=UZvJa*}!a$w!Ffp;!psBZl-&+tXNEpVKpc2Mu{+afNa( zxm$$@K0OuQ2`sR>_sH0lrd)={_h}ss!cEljDs~n^u!HFX zlE1cY#=tbs?aI=5(OgBf$ZdU2g-|o0)Z(hxDeR;(g^+U}y-JZv9sX!-pBe_`9->N? z%r9;(JJnD`BG;$NYe;Ga9*7574N`Rej64iASkztvm1sL5n6h4%Vs zQ(IF%Herp@n{?0k--pw!9!?$m?1lL(BWTlQnpK0ynnj_k6;%-C^G8ok%t1(klse^! z_3}nVBTIw0S`4a}h|Y zFOj^Hfa-@7D}J(dSG#UM7(-fNgzAz&o64g<_jU9%V#GXeVC|}AxAw_=l1gG(G`?Ic zu&0ILZq$m!-MEGaZ#lT0)pvn4Ibh(sg?Z_!TvrBr30)edD z$Q>c4#fncPL1~o8eNrwbwJDeU_`RDchvh&`pTvsF!kk#zSsQ)#5ADejq?Nd5*aNU$ zDPc*P7FdQQrH0ZOneWIrI@)`|SG8ijBq~G8m(eUVUwPFjNKcJktF=+DB1-#nuuy(} z7UwlB>g*R;09ah-%-+k@i*zh%Sa>ON`@^_p_zlYK#}hU1`DWv1&2rOa4)^^T$DGu) z(aSal6vZ+GZBzdI!E8&GDJSvWB|9zypZc)1(iZ(5>jLqme!*5sM?cauyhb8`?dCd8 z#Qc_6MPuEsl6qD(ym}56+=@!2vR&6LwK?)Gf_FMPE-(|P_hu8w-iuuaXXMH!) zj*0clve>5dhz#WeixxU6=U=a-zL-w_Dk40qJgGXV#{Qntqo(mANW9a+f6STQnf`I) zTsNU9=?wWSd_B%Lopb3p@z0PhsEOKRN`Hm9bA9&g`0ft=2i_Syn{HVO$GLYBJ}Y%V z@|%qo-o~nePj~il%u|xjwGWEoAbL1iEdC!v7h`7)X9si1-TwRj9lun|9(V?kjdk?& zt=3DyOUg9KkOpkSdeoWT4_+AI62g5NJ408U2NPGYerlIP=@6+0ei(NazA~Mwq=;ED z!Cb}OnSzg>RaA7;Vxzk8)z-5OSUOj;i+NYUc1A7pf0CCnww^RC<~OoIwOQ{R-~LsZ zHU4N0FUQe+Cd6Ov3B(ao<60h-BK;$^b@+G!Xbg6+De(0gtmj93g&lb67`N>89_C^- z9$*>c9nxW?yirPb(!+)HbSIx267!gK+MpAoKu!`iqHK$LU>2C#_$N4<8$Cfdn0_q^ z>ny5JTTgtz5hZod+XY9u!F-|{X8MYLE9=7IdzN;-V7i6aSOF3zDD&SGE zkxZ6sS(pjiC}KdK%OX{?9ojXJXahdlkmt<(&+VVvGqjVT07gM2yWkH=MwuM-2p=V$ z1u_T6cd!!Z5}PS{Pf-?;%pGM659F2m;Xc5qqJn(i%9w(AL+dxMILjGEKWE z|NOI-OvtyVaw{_QBJpsftHoR~=ciR+LqA@PiVo)b&xPanB& z-SP;_!n5(<#8+Nlbk(HL{rmr$?!4~jp zpE^)+>Ad`I?3cFubvj^B5{P}_P?&3@hM`bc-cIO-_d730ZU|31DI>9(^36X8$Qe$> zbN=v}ro{B>mNwDQ6em>zR{f)`o~9oqzu~$N4fi`sg`^>5`^foj;nq{JRiQP!gUquL zy2Z6EZk%h3%OjnC^zHnUp{th(>Dr%5Pd`EP*qN@l%c{DIxl8lrK#I(A?ZQ>Z?#Wk8 zyfdA{>n?@po@*)^faw(@U`&2{4bou^Ihc0K4mjx#Z$3XX9g8tQFu)gnaDYM_7{koa zZQNz1*yhcJ|HJWPQ`$uRcU401X)n;9B#4uZvGPcyL~WKC1N)TbnZfZqr>0PAgc^>; zU$eZu`F6%LR7+okFW57qaDfM@^0@~tc8WV@T`vKa8#)kqW6iM~+QjWQfRyT|{ zmwCB{s00;P1WgCd>H-}KhFZCf2#aPuy;MHt>(qYl|I_ANs`=18SR7g$5uwWG(4NVy z6Rsw;3OzdBcb<|BzM*+(G#S3hpYixjJa)wurWA%1=HRst_|ZL6J#?M>+TAZ)l~sFw zQe4zUQ+L%U^DhuQ-tVh_y*|_y!5w+rbed~gR5Mg=52CkyCHcCVdos5|u?}9eSx%|W zEvjHw^HO=$>`j=g_FZ~HT^3qye};KNLEk^;y&~>q*~e)6nQBQkzEVPcBV2uQ;XQH< zS7P9J{^X0%ftLQLO#3>eK5qHV28Y!A0;x@kCkWR8AapRhx^?0eyDFUV8(%{ zYb;|_taqZA1rCDH0zz-f@fb0avtLQs1|3{T(Ah&2Y<(xrX6pjcmVevq zUWmM3VDm7Z)c7fa$rRsXZc1sHlWseu8#7gEG?L|h$kJY1tTugIqa(*#-4ZdYa*+WS zLm-2FVP+cL?_6u6#y5=!zAKd%w@2AkOE$F%1!+KxF_-pQZBYrjflD&X?)%(QN)+Su zN@AAvL>VIVsZBgNe8OiBd%5b$W%^-^6NAK7{maoF?VbqKL*-M_z%;%~ca#^Fuj1_) z$i49O!J@$!W+qvNe0i3)_Oe^Hz;R{uEdynjIE#wG!y7_@SNRgfT&G8*YYd-W&G>XF z+mqSX!`s=%*)XoPW51D?iXjih^x$$F5WK$)3 z<1qAOh`SrLwRIiy5KTvl`Z^+86lE3m=GMH|%1xIq#*)IjSQaHkU45?18B z#o{g9NN^y`Vb%TCZ#6%Di5V)8X>yZUhVb~Pg~=^Vt3@a7OFWQyLYuv=D90|;9kd%v?XkGAmBYw{%w6K?Ct26JBC2u%a>a}gPD`Z z&?_QL`fQ_4r^*@!;??&~1 z*UtZ6Ksh93bW~JS|3e%9KTsU+poV`~32OgojDHug|5Nhc0383_82^`~@c%K!v%j0B zIXJkGc-Xke-$4uitbfhyT8~!Ei}U^cUrYS^XV~8fBHZtN{ikkr)_0ryd;i~!^6zr$ zfBL}v*D(K&S^i(PdtSbGipYDr+??$H^y?q0$a|ZA>-+Cqj(@J(zmq69|KnQPxtcq_ zUwk`bSMx9C@6;3XzYGf(S7&o$dn8Xt{p1mcW!4YxrgW%0KuYV6XvDo>TBg zx6s#ln2?Q(gTuc9)?Ef1mMnlUdI?v}pCc;Chk_p6AOc8gE+eJV@r#LqXK4W@x2w{)7R87>uPU%#b2Y@G_bm(co6wpF{N?HT*J zdx(&s-|n6B%Xdw)#YA0ctG6)U6g}xF8XlQCGaz@YdsL#2?BS>sM%pf~;2sVGm=-+Y6&CdGw=)ZRVcbT9dIm>_XfBw&mng0=C z{#{&8uFJ&5%JDC-%)i9-+?@JI|BvGO|KQ5}m$)8@llz@9^Pd12uD^t!{{+bVySSd4 z>z_OFzr^+b6#V;b`K!Z{}b2Gc6j)H>ucc_te?1Di_%!q zw+8D=SFD*2P3w%MnlGlBEhgG8Chj6NYwC3yl?P3tAb!mhf%o{YsiINuAy^nKzW*0&pn88o1K*T6MlMbV*7b|7@%X(*UtP!00vN zVo=I4bT8V@J1*1w+C~2$c9UjDtUyvNNBNq0^SMoBUC}?r$*gDcQQheIL_08Uu$ZYr zWx$%u!Lp0h&ekoZ!@0orZ9$j*^1f5DAnuF`Ta#-Fp*HD_lD_~74{K!#h}@A_3QQ)M zU*U0|ffsRQY?^&bg1L?$-}#+;_Zo3=H81SkGe8!zZse(XhaC*JBKo|+zv{Q$McsSf zJwWDn9k{9QU-Da2LB0@AMwp^p^cE(<^q~QM$kxh(zN^@!nj~Qpffva8yaCLANo>rCCfV4wU@fXX8-Rv%tqRB(pdrOZ z-Is?w0@kAK3&fTMYf<)@03N{yNhS%{$l!w%lOSv%6<66Qnm%8^o-~^#NCB`XHAT^9 z2Ur59)AY#!mWr%W3dBJcfXt$F3UL*X1c0z8omspC+f79-sXzln2q*`aCKjlGkO0Hr zk4Xh;AWQ%V{4udW2?PbeRN0YDpcAjc1_De}cBB%R#MMBI0CsSM6hEoi_iO`iz(J{&tBZOc*RSsio-zK_B_lLl&l zJizz$*k@7~bbz(gEhfP0$3C*6`wr}`q^&Nnrz(i2=>9u)wd@5Ez@MqFy67H^-4(yJ zuhLH2SE2GO2huFMFT)l|*cwo2XY7+zY5&-Vtnw@cB9pm*26VFY-4%HnfX-wtzF}Jy z-Ln8Xsrs70yi9%dD!#HHN12Og?2;l+9Z-@=v@}o*R8qvt+{Xrpm0_dr!vIJWd8&Zu zitfX(<79zapn)P!HIQVHrxqx@=)M)(Flnno#aA2z5BB^7dIC2qf_%Wuk{}jYU=y~7 z^aTx|^J8DO$_hmv1;8O~iyPpOvV{w9NZmqKS)uNWQCT7H69rVIZSe!DQnm;IRjFI_ z05mBe7+X`S)(|uTZk7Z2shp&k#9_CAo7F)2DksS%;n>UI1=>Chzz?ZfZIHZ*U9w3C z_A$8m3n&WQECq5?sZ246!L9&n(e%jx!oXS-eeu{KDvW6+8Q9P&j439O*iqnvv;swt zxC&!(fhGu63gQOnfUOb=9zGs370wG1+8`882ohcf zR$=EeNPM38u*4#khTLk$X(q8FjIqRE6_>Xf%uF(t9;E6XW5F5XjYT1s7c!lF?yOxV8}tb+1LMOTAcVaD({6({vXvxD~#jy`bu za4y7hHXvtm5q^uAloPct{E7BeM>53a6H{;|ELWr{N3WZ-Xv|hCoahYfY!t^aj67D_ zJW@G^8dIr^61Z7AG|w5B#x4pDmgyY>!Qw<7Bf;Vz$RG^kCDVP>RMK1Fr~N3o!lA3A zrj*+3R-6~n%*^5`;xCzXn3ZiJhQRYEf z%J0F9!J}L0((%giqQo=E(}>ftaC_U!T!lf*@jCI8lKK4UyK<)Op8$WDq#z99cHy(TMsC7oOsKX43wr9bckp0H3}=j7D~ui*^5G9Hj% zJkW_cB74hDlJx-sKIE@QO`d%@=z{G49H0VEnt~1R61p(1ZAH5v>+Nlr3F&={R-X{d-=aEIIcCsA!P+oe8uH(FS zlOy<5_S*vq#^aB?ncy6pfliu(EXqp)(GnOTrh}q9HsBs2hPTWlP;>x>gye>sa;mU! zjV6yOSOP`}aDXVf{^7bguP2z4=%!$QXW`{8h&t1$|LH_ z;E9+N6`e zwNx6CQm7-!RT!IrpdQEn_({Dmwl7ZxSShCTP+AC)V7@gvtqd=#HB=g+F4Y$d>fH_9 zB0_?p=^eX--HpuJMFJs%5QhoeSQ*TbK_DNCNFNJOmUyrJuVAsQRus|0;NakC7+8rv z(9Irtot$u zfyFvs=!4aQOUV-jEp;(0(rZw|2kaSoaz6#2_`>)`GzUzv$VSQ)X`JSV_Wbc!`Z11hF zew<4iq3{OXmjrI}x}yxlQaWJsLPbL;W-_CS7%!2$hFLq_17|wVjc3d^2LdI7Bm={P z!UL zS(~?Al9Yc6e&WCVv*_WuUVTfGt+Tzhw%Xx?c6Qp);9+@I)g$1OtD*l{qoPV-?(USg zy+gBOwZm`OeV1(caPv=txd79mg1T9opO0Ca$=X~S*yDJUsl#mKndzx1+D>^s#?H$$ z3S^hxU+Yp5=YSZt)IHRp%Xs@^tb@phhh%M`&G_bVE$Te**kI zTRL1Y*0pD*1ooXI&rUM6JN|@Q-i%jTAKQy>Nw*3KB~~pgLXXN1B*l~4(<9P`IKr%> zmrFZQd-9j^+FNgOs^>6$%G!rL=oPAnPLRoHRc z)MwY1C31grs1N&2e+wKhr~VF}wda;yC@>-0X9V$Bi=z14H+#JXb7ukURBpI4_cGL^ zRZU%Vr`5EkC9nzewH|6iu!VdGj}V(;l%0Rea=AvYIh%O z37v2(HhO;XSw%S1Z!bDS02>~Nh^dbuORSLSM~UAbWjRpF6Od352>DT=n_YWEpM*=X z1JQ!bh%XY0UwiAmFE`O*E~jpqF3#B_zD9jm9T&U*3Hj`>8piqrFP2_I_4Xk7E$k}Q zu@Ai~ruiwLbLTCH>iR9n^4ah;LJ~o*!LgrjR^1GI1mQ&E1Y1MaOx%pJ0Dl5|3(*!N z8>HW@U<6-7vH)iX%MG0s7}E`BB;8Nw@|mrcWG`FryHO zpQt7wBmakbgtWe!@{gRD;<4M4*I}4AJ)qLkR&J0+F0-5ZXD2_XD(ZpdC4q z8Dz#M7zAhva%d^|;7^1fAf5x!&!I@WQJW#?HXu#{QEQ-ZyHV01sEi=41JNd-2tNsJ z6AR;ff>jEPPr(MdLgB*;LkhzQLkYvYqWVHSBj3}Vqi?)Nr@$_#Gw1-wHRy4uGpGQ# zHON<(cGPy*XN-I3bDs^5?f_^O#-vXYXUs(c#-!9GV20l<=H7TxAf7wfl8q}yG zd#j@0Nmw4L-_bOK<%4j;^9mIFLP|rmv%K@P(}-O4_(qW4tX7|so`Us7R`2V#r-PNn z$nZe67&n>GKL{!P`)wz2e)|-2R?2toU_zBIEO0Iy{ zr~&cfn5oC+p!tsT&M3}~OcixhI`j^`Gnexp9cPjjQoh^V&-02oZt*Lh9KHw#1g*%u zCUqVLQ#Hlw4u0R^zVD%MhHpvoMfATgcb+IQ=^ETVqrFRb+T=I^34Cx7(ey}UNwggF z7y@3xcqIz<+4G?+BSlHIRqmy(!4RE@XQIn_nHY~{C(X5@%o!aDr_0H z5iEh5=(0xzXBL@_kb5%?^CN~yvDJy2-}g_n6MlhYPxKFj5B!%~#=nxyFs?pqkApb!lv!~TLMCx141}6FGnPYX28*C z5ibXy7j2{Dk+h$&Xb~47fmc2aAwgkO+hd-iP2{bl#JKb7P$PdoG%gG~2T;6dw(AEC zyBIvxcPe{_@)upBW_gJZ>6)z;JLpc@bOh-4RZ4#~s{vP##O1kM4vGCIrvGI}+C?;e;Sw4Id2W zgZ-$6KQQx`HjoN>{)wPsOT@D$7+QYu5kYCTDI#B*=1+{+`pMr)*A*CR<$N+V_%i@g z(D(YJ&GQJr_PGq-KK3Q|D~Xx(H_jOZlElo7#q+OHh8DCwsYLyWX0T9HPi>E1c*Qhe zB&F+kr$h<}%_QGv&*T`mn{^4Ydp#Ior`pH-Kr8n5sJw|gF~k5cej2}A|Ayg)7Aq-{ zys!bW=qAc_7#9$G`A9VnfJ8?mD_oc>)>1_XSaB*(0c&B(8CEaGjo?j^CuoRffY zNStY{Dv2|sG|`n@8KW|D;&q#q0y0#EMm3O{5%iG8uQDvndL$<2`fN*yQ+qaiQ;YY% zC8k=lFq5ggF zq4a~t>Vq?!9A2+P1XYx%A>!Bya(!vJNX1-UGkWiy2PCm9>*0r^8meqEE(7saupwUq z%i8>2UCPs$RQkKA4z%6JO{_mMDv3%uX^9kw@q1y9hzFQ`9gVvd*A#y$JkQ^G7Ea|G zof8ZY@Gh`3iQji0mc`ZkfH`2>TZ@snSevH^xA1LDN;i0)VMK#8XQ(IXr**ttysL)1K9PDj7o(hK zIv`RvR&lKKuX%*&KQS9 zM-iL2$(9mPKXRoOp&Hdp9d|r{E|VU>R0nb6WNSt4_uQA6a6wlyeJ~rn-g+fP+Fh3D7+F^ zNA4J*x+ICx975p+|81(j+W0ggDlCC#@RR?GKa9lfUEDR@LfY+jQ$_5^1B5R9F`Oq9Fs zS#fA|i*2J_B|Y+O%+SZWWWsx>Qor3&sJ(7^W0@3i zU7D=O=JpgU2#rT*k;t|XxNAD&MrZr*dIKsTcNC39ley4F*`&{@iL(roTjL zIm4j-Fj5`9V5zShoLZK2taF%Jo#*IJ{qMdhSNcmSJIuHxRh#?lLZy$8Rb$lp<#bZC zzrvG!q*E=T)#wGJbDTwnehHd((r1lADHwBKMj@;ZZef$6+XT6cf^a(Utei%@ zD55tK`t0rCB1Tw6=3N2D)_1ERzhQcgvxYhsJp5Jzt?fP*DNB982?q2U18ZT**PI_L{)elcA#H=Vsr%I+5( z9nR$t9aP775-8pmcsrN=EERutB* z93`4BXO7}#W}N>zZRZfBQ7CgKfPCz7A|&g46vgfeQmC-HZe2Mlu8ft{dG}Yjn0dAn zD0Hl4Y~Gmhx^8z(Yl%E&^*;jZ9~0xy0ZXmmn8o3=XzvuA3KHaZ2c=uaA7p#xwxyjq zfp+ig8RKz#ZGQh4y6jb|)oqMB!n3d11^dD(hQ+|1G?SgRBVG_iYg_ZNZs!rE^E>GBo<8WO*)@(mg@(*Ib@ zCQVruvWTaY^4YjsxC;1ibrjXsPHF4v>It%LoX_%;lkDEso5wn939^yzwbT%%Z{OIo z3~kF4o2VCP*J`PA;ke%(7RVHPx8*Fk{MsZ=6YT&#$Ke4aG&zN+1|)7=)$9>_KPNnM zR(PYoFujbsI!=~rxLQDe&${pYX`*CXDO&CQ+iaErv}Vz2?Ta3yC=|;sv#C#!Ttj%- zVWzX-Sd#so#_p$ezR9yq72IF~Z>-GDGnUi~RKy$*B2|SHXbH^L>sDYkqQk36Le9}h zF?Kk(23lbohUNy0ft&b@GkXn$$_gMnUTQ^yR}Gn<=Dw6BMBu z*kuLE@Gchf@6+x!GrfAUmg#cNcXuDG?3VL4*&R(J{CD3I1S2mRGW+T!CpbMcVfXe% z+nbO3;*K6OO)GmDENc?(B!Mp~cJ9EY_D>3+4a2I*eN0>__NL)uqXJ=S|vF-p0< z&+2Dsg`^*7udskVUtAIeS-HrNZ{$;y_~oDK901c0P*;5O`$nJ22ue2yz|c+VfgrAq zt=Xszo@z@Pxoa@I?a31GIeos^<-%ifKtAFE={Qd7j_ldzG@Tcx%%=1-F&?fgsT1wJ?{*GbENzyk7Qh0XY|87f$cY$j%TY^VWaHreYV_~b(B^|V&CjYCA% zw)alcAzN0dXnjhE>sn)C_ny*R@3dXLsIUmwvRZhvpL3@$A2uke3_RgY#8uq=n7;qf zQjjZMgi9p0BsQ*$SUTh<4p993+}czvx8WpiYKHC6IlA9usT+UV^biyhYem=LZ*+xg z24t(2IHA-w7tCdm!<{&g3wM1ijUP5>oGKve$_6Vn>Nrl>a^9y;PAdzQ!!<&BSAmY0 zByQv^C(H24W(7hVEGP4Gn+J^)J@{r$S|e3Ds0L^JPN~cxr%C8!;|}!7TtmEC`ReuL z!C7RMUQw=OO=j^*VQA6!M z4p4J5o0}~PN2>{(0jauiML#YUII3KWOj5^5ubYF>dhW?wakC{t&~LCVSTl)J3uyM& zRL`crOv2yGuu}=G?pcx^{axI$))CNemJ^UfMud>PxD}`_%zRm^dhN@uL%be;wo`|A zN$(8+!S-_M?v>5K8utUG7g`z`_P`#1%@-oaBCo;k&rwMwmU5TBW7!z29c2&wGBbsB2-^QqDD2YOpu#bZ9DG+XCO!2s}Hi z&|zmk0BbL@zT=G)JrtU!O$fC8ue!I-$XcHY6Y?9Z40LcA@T^?+3&;K!V|N`CSGVp7 zI0Q?A1$RhrcW7LLySqcRtLkEa^E}MW%b)bDHHOfi@8K)8@Ggs$YI1iLnD8NkRzXx+J5|p?noo?r_n$3kG47 z_tTbVl`PJvbTfOLCb50FS1fvW#oNX+LOkevq?*2h zoeeSYX-w0sw8Z%nHFKyh#r_&CMe9=HJ;lE;A+nokem!=@cc3gW{KLRjc)SWJDfJg| zNYLPP5jtp3F7rEizWfM|{46)bgP$A!+AIHVcduzEJ1IjyS zGIpqnqJQ-Hpm^tjs6J%3mMgp&NOjls zXsPx|>BbdaDMk#KPDT`sb`0DK-a+gMXfo_-t-k04{6q~bUuG3UFAh(}>iB{*azgV+ zP+YiklK}Bwnq~6sPozu_Xdi7hCOpj=`R;l9G5Lg8z}!Bs@KP^Ta8*m5NPY<(pM$-K zj-0%G)5th_eFC2!18MC`jdu;8KGF5PLP%^l8)#Q(TgpLl&Ke_%3MTRhZEBiQ1Upen2Yov`WyC!B zt>37RTCj>Y*|_t!tC+t@?Bwp0iHzilr%tx?K$&Iw_d_H* z*$Td$CibT8N_7xZJox@dbz;!6^{GnOCL**$FsSnkOoW5d!)a?f`m4IAC=wSu`qOFT znX`H{3Ot;|Jo45?1g+$N18Z^f@SWAP#x%&bqcQ=PQMDtjL6_OOUsp_n1}j3mO>g2& zfXlldHZG$~y`;G@#gb3S=cXqDc~Z=Y0rN^#XxeCx??Tca18Pqr-8p-N3Qbkw;~%M0 zoYgshgE((kS8;HYS%x=D0G4;NW6e&tlzy4kFvKHcERUDnTkEAbL;d`QwcsTnhLs)X(ABEq z?~(gq7epcuRVrLK*~T98E=5pVJ}#b4jXo<^U@=IV-G5J;PZMxXv=aAP_IR?`(BZpZ zpSe28@-%rAV(Yt8Ft>F4GWG4ND*+E-~F_#1CmWU&rF+UKu%DRNf6X%%CWJCYmW}8 z)75q!w#V&`n^%7iBUaJy2!K2llI%!huk&sK0hUF#Z zoyn_1MwI%YoVLDuFa&xqTx~TX?&Llvu}+&)6Xbdfc=K@`S|-e5CCpZ~c0T&zOoy>t z4nJhb*;s^8%wG4uHMR$~;Y?WEyW57tf58+3&#iWxlmtU~Lh>nB&Zkq~`tRXgE(1n~ zU5+S;{?sa4Ujz{@jrRB5WCsMH_?&mH60=O)FSqH2R4l1ztf!eeiK^OJyYB`!@d5bS zTt~owZrS#svi?U-ihD^+i?0n7BDW;sbwrZoK(*3c5B;$+jj>TR&~@gZvGE?S3{sbx zLYf1E84m6!;iu7Me0Ty&wzk2ji!SBV7`EhV*^qUDiQ~(BAcn?IkKf068wHU;hMbF| z1MwuVB5PNCI2>PYABCkXC61ju+Gmwf6`p5av{7av0m;9neAw{Jg+)$2(`FiRx&nuT{XzK{0*e$7$r67Qf%saf<)$am}d<{+w&#e0htDkddNUn{=rfwN~u7$_fip zxuvhDmga;gKEok(AvWW~dkRhx&DS)h-4$oerYVJ+=gY$;m;4S( z1ip#rq>tC;Vq$N{;AdAJYc3D?QlrH=W`0$6U4aKn&|k?$kKEomY(3&&Y|MU*94nP{ z2bdAO)7Q|gISqkU{>HgG$-OAZM5;=fklpgA&fj*W)9p(UT{9V{=UzatP?a5ZiAUT{ z6yviHCgSK`s?!JG;C+2};S(FxD10X2*3=90^~jDd`1VBU8Ww%K!ld8eE2v5d-!PxE zTZgjSQwDXH{XRneHqZEQ0XjphwV3AfXsO_MBl0Nv=+7<7v+0Gc2wyJz?5afJ7&t`5 z$ZA_J00l$d`Z<(j2~iqBe3n!EAy(_ z6q0RFYL=VIJ^W;*jo}k2>#S4VZn(ry;3BH6epQaO= zn*5Z;3(w-{Cs$-0g^6#r%zYS45kqen2E}DfkwEu1Luz`u?4ZS3CaKbvtCn1H3e!Vp z#z!B}AlGvh_1cU;H0K=a?o~_K&*uXZx!Y)u0CxD9+v`>Z&S+az`DfLeXd~H?2otQl z<+!kc+8NY{A7EW>Opwx{8scf1f@i^U)+8_Hm_luZxfqpYVM@|$m!}hQ>E)Juc)l9( ztzn7Al(sB!rlLIS;=<%0@bSLokejr&KV{e0W<_bHA2f_o)f_`cIuu$?y`r*`mxS2< ziB(DzmX;W^%v@zbQ#Hb42_+^8BYgP-JGxrHAe$PEJfH{+e7gq$(w3u~`I)(3Lepim2T5b#qCCwC_3_3LtX)tOt zxwpoD$!IE&Mg+PMkrZvtLU6swQED%{HD>Hdmcf{<=t1Ed<*sPkj;ZRbR4yN15?1}( z>Jqz?mAYY1z4+Y8O~QD2I{%EGlm=i z#qgVBYjrdpYw6qiCpEYmtaVp2HK@+DF zp0iY-7N8|=H~liTHitFfoekfESU!$<0nfBMc#_0U>(+-9;h1@@LMJ1J7gK(b&^CtT zGYj?j=KiSHaT!fta%7DwmNK)<&zxsK^Y{PxrH)=V!N*k7b~7A5o&F$eitctpS3Lc!DXz{8Zlnwnz+A#-^nI~kU$QE!srNy$iM1%Z597G7 zV9A3iB`AT1jccmnn+l$8R(o!x`~J9UJS)fgZ05dY@il%eO<^BaWIJ;{wc*#}bWIsqEEyaLorbsut`xVTbO zC(qI#{*`K{Q(TZ$Yh1fsUFl#uojC3K&AFW`WHOgirYq_mk+CN&ybYoABHZNZSeuLQ z&ROZ{2s|hRn$;&Ws;t_nsuWz!gmyt^Wecg+O^%q}#ki~dn7H5TPKC=8Iz7+Ohn_b} z`b$8n;Suo^>M&}KO)Ll+`qkexrRi)g9+BG5H!c!-=h0~D&7IQX>p!^+KXk4PxZ@=H zi^3KHZ%0Py+W3%k{zWX@>RiuS|W$M;v3h`Q-0;?kGZ z0gsN5A)u{Oq**Djpl>{3G<>vr!U&zhY-C|Uz@Z?`4Qk@8eOd~6i@=I1Z)<-rVL_y& z!r0X*tEC&iY>t|4V7-3n)sM>nE=<&;yBmtYev7AeB2{#XgzLoRld>ak59hhZ#i;^o z)<+nQ#EBB-B*fRt3JY52C^mK1?N|ZuDYW(nW!`9O^%N06)$vl02UhB0km~0k6}goP zol0*Mo=>|*e;!99e}e5PXiZsf>@$*4TO!7jHP=G*V6C9KTD|?(-NOkjXT}0$w5;X0 z&GZy(XcdQDxOZi#BCF;P@?dkSbg&T*hY@B+`-eVpVjURkPhnSY)wDmS<$X*urk$c@ z2m4u^dMt0@mMOlf2+#^Zt|L+wrF~J82h5Zw*Ei{R7u7{)GpXLXyK}~#8-{knQ6tyF z-(sWP%MPLdT^4X+mAsE}dOoad-99RjiZ|6OfOavxpcW`uTjxW%$b(~J$EdZW8(GtU+{1~n)aD2p24C~5#}+k=1y*U&{615zjpOiq_0geJ z+yd7SVNvD{^2lKR03NOR>jQaNoUy#-^5#ix1p7$)FO4Dt%u0>& z-?PDCgskE0pGL)u1S|OzIeA*>nL^Yv%h<(?(^8LTkWAJ3aZ~z5pSCT)U{djko%qxB>^w?! z%H^RG@f3qB^W0aKArK{A?o|$cZg?UlkPOw^_l>PU>|XKcawO|TXuHF>CCWEWN!LCE zPajgp8fm?(%j5P~+d;i*eCw(H-j=?+Hwz9^nT|QEtnyTlvr9Y6Y+SI#+>JaJUOKmc zZv1puK#oHpo25fO4{bhF``oG}xcjWP?G4*RYGGTJc9568|G9OvlUorH|;r)2bkKO zZ!qD@4gMH7*lQHAtPC9}pH)1(q4Bz@D62J?v746Dxv_|tg!MFgH=?3R6xhdc!M19^ zd@+Ro#&b<}$ZGH(;bcDlIAzj8{FH(kxM-K@?nyGRA-NdI(Fr7q*)CPZf3U=yuu;)o z5!YCcEMEu|9TEJsJP>)ykhPabIB&K^!G$xVQNu?Sj$84{U2vEin4kqWAPO z+%>(2aN#xcgAM9#kUuNK&&=+K#)TrWx?Do=)anccJu47Ui#b<|J)T_l`PU!i!cHq? zE5?O_cr7a98|Xh*Z+}WEATLzy21sqPq84lQ#Nw$(Ah(HM)fDmSc)AHmE1t}$%}E%k zitW*xGnA}yXeOGcAMo1+>jL(6Z&O|q(7X)Q2S$%Yd6s%&AF{*ed`r|GtPv?pW$eEO zN_K$V^t3J_S0D-A*d?i4HFKiK3DF{wse?iZpyE&W(@k+DZb6IDR>dnOJ-NTaZruAI z%vSV;6~xninG&jfWh8QV2xfcmHOu)2nmk;Z*py0F7t~gN=Cx6-;Fl$G$tBzf$+kog2Iw5WaN#xQzi!fc>BPLy>t2lePxN@ zz43@}lo1>bn&C7x47vGHNO#N&YM5l!_Usnp27FDe5(tV~0vcnA#N#Q{Fe?tT?nJ?= zsptEeoXN`B4}Z-gAfm36Uw#D9<9D=Ym$)8nX?M-a!{9Td%(qvNvo5$#wQ6G5ecLDI zNNX*~J*Y9(?gV#vEm!I&YF9rGk1wht&#KY2pw%~7ZT`AsT?hsh+<~W@ftbsK16njp zjA?YEv<@Fm8K}C<>-mhnjD^g2k84C03%HT3+GgGni$gL2zh15BPaYl>PIDj zBPDp_o3}9O&8=MNx#Z&@zZpXvRIq7NHXJthEJ`9*(P^)~ACk_@ZWzPVIDkO=1N5vq+xyqh_ zB58gx$%#vOS!F?mnO2Pqi9a!xjSM(oogvW@f|TXqA|J8n{hs)y`cVuo@Fq{7aE~%g zqSR9(pMC$PJrpwFzG{XVZ9KsH|`@Q)MLSJK65bYii7`Hr5;1A(VGDFQ6MZH|pyt0(KSt%po1@ zDe~gXeV@rJ=9i8b!H&CYB(!T(OpZ%{TtmZs&-Tg$yBuZk?R!#es5thaGfVIjdrBr- z>8NN&F~{p7^E&hX!nQ&$WTbMTdBpl`*+>fkh!Me1Opa|`7N3e`U&P7I_f>34t-fLJ zkLQr+jnP95?Op<%CH)27thFThRAUuIM?M{n{P@|4RR2};owM0QO2Xb0^*$kPU2s{+ z?dG#d1|?u|bvZUt+3JXV&`!TIozT^gSeFUSS*+C22(xLU>|0Ow<8b!vd+@X|V7b** zytCp8uC>Bk(zBHX5EHNe^AAN}%&3!}V!66spbV+>&mC0pS|-)cTs;K_8Q2DTU$}Zg z-`YvKL5{%~8KCjusF@02RNTMkiW|&X}%<@fb%NruS**gdL>0O{`hf$ z>0v|phs%Hjrz%X>3e9i7tMJT^b10^igQ0h#FfX5_S%OX+Vksu0qLO!?ud!$|9bK&; z`3yKYLkHzU9`x0`fw~@!%WxF+X}CoC!6M5Zly;9Uw#=9tv>B?9szOY39h_<|q}cT0 z^fsrXd7Td7c=9Ldtv^W(tz3nb>UFyPOiu>sVvEpE7{Aujd)3@(fz}Qrqw0)~-E3sv zLNA4I(Z<~X{yV!^iw=$jmdx;ov1R=qXZKY(%~#}{*x6{YQK!M?u2^FxXguySlihl=6v&cn&iicy z{d18RoZoyQFxm)s5>@QkGq3LT0Wk)3Ikt{oQ`@&<@e@0xu3@gKiz2GwmYcA3U6=h0DFmy1jvu*pB;gPqT2jns-CF)|wLK4S4aQz(S#}G!oau zWTY(%Ao%bnoD53wH3jfw*ooMpBA`xt=!mjf#fO`VP_k!~eeTA}oP8^e1aBm-`U5D) zg6^9!E?b72(=3~O_Vl6oDw~$N#1TRfUx2CLvm^(<0Wk8w?Atecc%CH`qA|{}S+E>_ zME#ig-X60t$I{*+V2QDz^hC1IEupQIuh3_S9=7&7A+14O!Rk(WU4em_e+g!FI~N>q zJCj)&InBb_8!7?gwtrOK@aUV>nuiQ<);;+ntZmb~eh_p^xbTh{2qJ4LTo`c*oF;yaC(>1ux>Vri{-xiy zof4ae5$w=;RaGm_6QKc8RR2~j_VB9w3)45;C%4tsKr~3)quAfWiXR!>RhBQCT~W(4 zr{Dv=UX>1WvXu1YQZ9wKSPMZLcqyRV=JKOP{Q=}3-Rt=MWWDmO}Ak*w`O27Iq`{?GVK(rQ~Oe z@^37qfozNtFV>elyM@eF@v4}BNwzsMdFfn#JbT^m!OPHM>MhkGd_SG5JhZQk7Cb4H zsIeU3(UQY8+)7;y-S9!GG7Njo_bS=*<;wAAkc5PMQ39G1y+GY$cQv~S4ZaD|K_Jg0)A3eeVa?OLf9Igg47;N(I9_p7qRQi z4Y`>*0i0^9y4w#&%o8d1^lg$&(8i3dVGd-=KA-$5>4KrXqVRjd&_E!Jj_-`3JQu^M z>wE&H^c`^^X#PD#TNW6{o@kx>asdF^I1)}RR^}Ers1MivQk=)&))fBPosArg`a_CL zSAc}t*RAdgxz{QI2)>I(KRa%b@ui{a_DmCs(gYr57b%SP)omJ6a1PGS64TJDFewrE zS+=Q5@3cVBil0kMl3n|nb>i+|@8#HO2N(|Dw_H@jKYiXzO0M5~Wi5D`6ngeynZ)st zI*zbhNT}_HxTJTg>1^CV3sN7_jVR)g85VZk`(q*i&GG@QhSLYMo}xJ(boK7x*rPc2 z-gPzkvtg<}=pr^8lR4(mq(QA5;@LSaNOMMYn+n=XD$AHO~{{+XM3 zk!_!O5fGSv&4sow+PK^l{u9A{EccsHzllLUg0oJGk~b8M`y#<;#v9?v+f+}gwuJcpT*%S z(~DkF1EJ&2SR-3z)ufuED_8SSz02|?B!$LC$>;*tv6Od_W`&)Uq39WD8ESLtixQOPi!+Pv zltmM$R~DovE8adyzHj}3jxs3npfEL)PjDaWnkkL>jjW&5u3__4gm*VIz_pZaa3NDbWB^_ z1N2cn2f&snO*ss>ip7A~fHDuyCu)-)f6}*RGnFtq=HX;U5r}C8_vAF3a+QW|2U$DZ zc>Cu?)yGLI7bz7xeqbrMaK2olIghT=?;>Z#z-sTg)q1qJM3p<0T)}B5#k6UW{3}@M z3}9kELxOwZ`bps?*mJz)mcb!yju_5MpKBSMs9si;H0Zrb25^djaBLo{dvk2zFaX2{Q)^J=}@^r@e(R8_0h(Rac%<1d|G zc0(BSJl2CPnh5c=juI(Yr9;lN+BSFn-`DFJ?Dj|9Pq12g(l9RKlMcZL+MZ}>&DMY`TN|xJj2~)XPonpa*LF&F9_Y#a zG21S7AD8U=OtT|do@cV&ZUMYPsZ+4Si)bb^?eA-yQ)PJ{hOs)ex5O~7lSt>N$4ODZ! zWos?oXQC45=qalI;f>s}TIQpsXgmR1FX-(JhLR;JYlEF@hv#4Y9uFt2hbjBRTn`Sv zl05nCmvfoqp=oMKYb*C93#-RQuzdX9Z{lLv#pYX!=Pq6JNZ75U1^Y1=c{VOfOVVg9 zPW>t69X%VxpMyZ)3u(!+H2SEOe@I0E;aY=~ogn}_>-KCT5+^z z(G1uMj9J%rsGFg9tbWa$5C%!xE!UAm@24fi$EW7I1@k6F)p*wAz7FTNXyf0mJZ~qc zBgyfzHp01d+f?Zj&!+X}^d6XSvo0EGm4pmQEqd!wH)vCXwGWa?SS-?((NlTme|kVA z-Jh5s7WOXKvxhBcC{@EP#v4)m(#JJXH^PT;Tl_-jmxj`%uu@$Px3iq$sL6EadVY|H zuxL;&y;<*K{hPP2G0IV0490ls{S4P3fu40PYqmN>`TS1e+w^$7Z7M~BEp}#ko&4#V z*zB0tP|=wvp+EAcb!LBh^x~xqQ|*$P$;+L+U+z|**@NO|rHvrU+dK4yaDq$^lQYwd ziEr`}indk@w+nr&9CxzdgSzlpqoU)*1xRfTIqj5_#U9aiyqr}H9tWV@>Sv*$U9ZhE=U^_;W`F>z5?PY@O-XL$G5AxV~qOQ4d-bu1Rn=NQwfLZlxz|;afR^N`TXKc;vdgo9Z(HLU@L5|x$Ex_p*^YAwne?>MpmFr#7Nuwi6Bnei7^9z!Xu4a@FNyf7Q~d^0$vGEX>@m{?%eUjJzF2tU zakON^^{ij8+r5(Cz;@tYdvr%IaZn`d35 zIDp`Om9V@zPWU5Szld+ns(%L0x=P0$Nx3iJu#Z6-gPo~WUze@oelI(rQf=`p8kiee z#1V4rcz2n2-^3BNT-Fs1)i+3a4C+Ga_NHXRDsW*JPRrO2WSgd2MnY`&X%$q7@LIQT zU)>i)^_L-ab`~tB?kuGiRSx}-=4-*R&4MU=Re47D=U4o>x#VLxGtRM8;Oy_0$*2(` zEj)%|Z6D)_ZpJh7ks}?y^RD_Ac|9d1UOQ9M)$jy@Io&RlK7FPv9gB~z0TZK(5iKoV zXk#LYW!lxItAF65NRILT8~x`m>gF&0hMALzlkK1W4>Q+)jQ&^u=gr=6F>>~>H+@5a z99>NR0RsseI+^~%Arq5ORn`)xRratkva|j_r7^(UoNuU(sO=knWnpXf7t&*_WM^Y& z`>&CInPYGA*_*#(=;SP7Zs_>s@4J7hV{hIM(|?t>{+jupgwOw^75(o;{*4u}vizf5 zVPQM>H?4^IjT571c{9nFnYh@#aIygYuUZj+=?xqDi$yZEb^ga&7)1>2B}^^M%$@&M z#2A&GO>NZPCVDf}H2yLERzKh$ijl+{JofK$5#X(if5}BmZ2wW!n>%Fs=9>M*zbXC2 zhW!(1`gafRA5_s7j=vV}?IHiCTm<<4fs5J_t=uuxaR>hFjgDI@#Z-O%WYZA6`nEwE z=ZnH{IUSp%va*H5J2&cJZ8TwWa&kfcP`UzC4JpPP9A=~9PzmE^*dO$2GDNisP1oP?(8!LjPz06$3 zHccJ)*y(H_0YOgauQN6|JnY~^^2@E-{dRHSyowa9xR%22QeBOPBpOJt1W%T$qA7`9 zn7~jh|M7PF(8dB6C?TGQMO#f+GOqtqhE~l+?X*0XlsI!Kx4idyI4_e^uw7I6M*lEeqO0URy0&cjw-ye0k z%dDNdl^7u1Qqkr6g`o$&={T!0s?il z)$v82!cXpWK-yj5aEW-nSugRq-{@}Gs~BHaCb<}jd=Bbn;l@^WyV4nvCtIb7h~8_WsJT7yc|`1 zfQ5h=Dyj>sHQX`kbY8>{iu;5s+N(7;nd|6#N%tvzKm%wgOObuu>I;P_Y2s=zPD9Bi zTo0y>a1Wmgq-{8ea^4p8>#)$J^fsF#4ObA|mQ=hF!&hQ5%4mHu;x7?HITZrZ`F9S_ z!djOPk?YbPBwYT8=a&7-?I8r>QE%sNbB7cg)l1q^FC`o~lf{uqLyQ`G5wp{zeKSVC zf)&Zuy5iuYp@*RM8Qt>f-O@D~Nwt;YqrrnbQ@YzS?m=#Ygmzu>Ehx&Orz7_hQ!zph zt`MHDzQim2nvL;Ic7`g%H2@E%0HWkdy&4`oavOY1yVF)i=@F&etH7sgZU6M>9Q5@4cLZlOFS^D9cUNBIK zWj!@!8DBQ)eC=|RI4J!=%S$1Uw+(uyBE%&Zzi4{GFzj-0xkyKTCN_pWMJJIN!Vt%| zX{tGOq6XsMV-Rm|CdpOblIILW^(5Oh2+SajCsLrC(Q}b%E0w-T;V$ByVQvW(xT0Tx z$3AgAp4IbcIKf3+@{-<;xkjrn&sYja zk;jjy4`FWuCN0sVGgiM`3h@RhJ;4-|0_hyohIPUwmP%c}PFU99&wM?UjVUkWJ~AxKa*{O+5YsmFX;}05`%wm+@CTcadn_M>K_gorl78(ni_(-vsuVH5=$e4`VQOjx~ z`nZ&+P;z@j;9hoOxmW09+)*-dfKm7v^A^@cQP;sSovv=AJ;xtz_B67Sb9Q697Ne1~5IpmpZ5m3bca~WGylFg-w zac))>&DrBbVWyqW(v)0OS2Nk{HStPD&ecJ35?lE+;JLR77JS*Kffa{%X*L>D@kKzK zUke;zY%dkSNONOCRnUxQJUHP#^Vx}%(Xx*oX`*BAq%(UyFn_9?^?enD`HmykZ6pI{yHOe{qTtY(3 zos&7BmTgBbHY@JfNPp%~9W9L@GWe=(O3-)k=g(>^ZtKl#Q(j<|1KnQyd_k6);F}4 zg^7vjE#NV6{9jWd*BedyZz+-ateG4A&PHUNFdrz=^Py$FeSkRu1~^NQKnal;Dx;<- z!laBD5{TJ%nX0^<%=-KWo?y6$VQf(6ZhgwRntXs0>X0XFn0c~u3H*IOR+{=J&1r(m zjmPD1u6#TvC}No^S(t2anWdvCFp~BOy(%q%JYq(Jk33><#ocD$_@UbKk4KTdfY%ym zzW0+hBvO?8iLnHzIsYGF!f?YmHw^~2k&B=%d_`$ zG&Z%Hdv5n^I)4>gU5Q4~esyma&Hj4>Z2NZ#<^_WxvvAF5AD~*kLw726%D~W+(^S1% zfJ%EeN+Q2NTGFG&{>>!UhGQ<3hUEY;3p#)xi@cM}fT9X_0V)Yepjh)=84U6}GbmOM zQJ~3){U{%6&6>fg(_TE@?5;+gMX=&YJNM@;bbO;$SK(0`nNgdC(4pYSatRQE&!<;kAX08BFDY+p(FrAZ9!o`h@zb1K;HxpR*2m*_ z$nV6zvwly`6y%D!{QBpY(gVE8dzJUBZ{!WsZ$yI);_plMPb|iWG&@q?ukM6wp84pG z_$F0e8S>m7T09y3Sd}=MYX?5_k~?%Me#T~T+7k8@vxw_JeQ>2>83yryB9|!P6k(CD z14&?e2o$3+ad`$%cZl6ei3VO&6EBSOpa@vGf}?*%f0BU<5QH}fzQ)RHpn_R}T0t>? zSA#eMSM>b(9Pb=U7tY;(=zBad$RLSI0L?+2r-bGH=$SDtER=ZHkNw{2*)*_YSfAyd z_V+^-@g}4AC80_@3{N%)X$4O2eM^|YIv?k1wtD^rbZ8cIEld#%1r)3Q*!N`O-+?6M zQO?daKan?ZUC%%G0MEtug=jtYxLZ&0$g*g{yhe9^3Az^XtgIZZH6y7?uB6rr#`O9u z!%4(6+G)W`qTRKU{~~i}7!M)~^Lmtd8>M6yejj%EltIYbtH^P{U7(hKnI8&K`es3$ zQyYiTu7dTb7VXr^qoffUYIElqjKwYNrD-mJAZwTnuUP~NQmdMz!NMC6p0D~95_C)# zHzBNtwKO31731sfs*j>eEg&KYxq4EWZe~c>7K_FpyNfQbhQ%(9hZOyM#{U6vPM4gR z`}DZI^?i#xjT=dh+;%IvS2xro>37?iR(mD*zBKR^Iq{6H25zZ7cY(9eth?`LB$Q1K zg1oKo0r<|JEu2566MSYk8 zeWxPlkjPw(HYsHgQ+5$Z6{wK5axey7v>{q{uU;Hix?0Th=F3b}6occ~y=Jr0ipxKK zpx9Yo&r=XqeZSrdP$shNC3I-#y0pn49X<_jyyGf?s}WFY4=6Lv9UA-8DXv(kNG$1E zI`i`jkKg-NHlvPDV@jl_Bm;VL^7Ttw_j9jdTdZDjBF{7J6BqS(sv5l)0P~E6El!~R zo_ju-We~7~XSnmWB-rYwPuy0qNbnI2PQ5q*E!px`V;}#xL;5OHZ6D&ibIz`;i;RQ3 zTco&O-K{3F9p&T7R#C0~77qRu9`*9EgHABDyOGgX3Z5C;w@sh`?ld(l(~~ul5w(bQ zmZ3{p>Eiss&00=6j|82OcUH}_z!NjsdJ3&_HLz;6BdsRg>~yqvG~zE&QG0 zpIX<{TFHfaV3}7?M?|$OlsS7l$8gaUv1zkP`S>iv>Y1-sW9bmo6r*3`Y5YY{6IYrB zOfyXj5u2ZVeg6?}*r0r`koJgjDt2dRx_(an#_H!DY^@UYzK6f($(`~ng&)dOO#032 zZ51OK!oAlw*e3`;^iWjP=8FQcsXDH2UJc{#kVvS&OiV`Lfp`hKz-|NIuKM@eb9_47 zXEd~;&U0D`38rTZikD_?_$SL2xWGwXX&f^z>f>!>7JWc+wfG^FMWn6_3+pn`^!@1|>Zs7|SN4gMJx< zSeIU`%UCRkCZPfQJIH)?rvuz~D6!_RDJ04yQMHEsi%1!MUWArtn5! zxiJ*bt*0$5=uYC zoJXdwat5Mi404Qg#@KAlodLx+|M=0k<+mHaOj(4QPDH?V>%wZsul+3@Dtl)h;AjmC znnn#SICyR2lpad_X7&!@*o0`#qXN)`EK-mZTy;F|q*40@0vlITjU&y=p?Gjl1a0fM z5#iDW;#6yGcg+Epq!$IF4itygR(_ljzhImfZ~Hi1%jfGlzRFuWPjQC2LX@qM`9$IO zVO_DxT@_JIC_G?F^1aNtRwb>@wNjDCxKjd*0$$}3%Fp@}hoIdJ`2|BZyx7aL+Tyxu zt|!dN%dzZoW-X<%g;YdiEud^n)b}Hb!=h*#lyG&0=9S?Q4t#xL+eQDN^U3gSRzCiW z`^GgB;HdFu<=XAVhej+yV3LD-yq=6#L@yF8V6UzASA7KTr)jgJbwfBgt#B?XwrFIq z-l@=;jdQqZ^-d048*iS~W5jvQG@@nUNo^v?WUFy{CQp6_MH#MNBUrCN@yBh}w*xNE zMDo<}LqEub5(nlKOqm&=ZQN6I{b%VT4JrUVhb>O5r{?>sj9+%{XkW%2g3M5XQtZ5Q ztZyXTBvVT8B7bfDg;$eI!H6&`== z`j~t;Py9d}fNo6VhMg^w<87A;lC)W_2J{n>mD$K5-Yri(h!7~gSlAj4xIDVYono;4 zJV8B6r5rD}qc(j~aI-7_^z6fU`y#&%@GSP_VgEv`W_atD^;A_u#4UW5MNk+!+8d)G zfDzBN$mYsA{HZ>gZ_u@7V8J%hF)rOCb0hv5^C@FXc4UkfJA~K+#_=ME({OF*Y(rcj z>eBDRPP71rjMpd+hxWY@6tGTg#s4z$USdcwii&$v$8yPX$#BWSv->*Wpp0wrQoD6a z|7jze7{Twk>gU@58Jm-c>ytTw9RJ1;cdy^*)^x!2NEYlnFIpB`?6#p8)D{A@L7D~3 z&`}wV#MRD(uQ3hPC&z}yr}E&JP{{Hz;%-{^Nq-vS4ygxw<_||CyDh+Pruv|>UAv33 zAEIPoD$EKP;SNT@=I9ZwxP_xCShRQ4g>lLS z6w{>zeo5$KS7QySxx0+^CB;=T^=ukI4G!&FjVR5)!STRrM7{__UcYK|qxkbMGjnv} z3X?7LU6<`E8B0ubE|&N+6RQV$YXGse7LZ|Y=U9rnv=Q|v@d5djoe>*dlP^`u>7hy^ zWEX09>sLPw{6TFEv6UAgA0sOz81p%jE186o6x5GEZd$_v#ndEy+{9&XF_5D!?eMmwgVQIIom z(`Jyuq`a3prjcEkzWsf$7U7d6CG&#hwcVdeAQ^BP33+htAM8VMwy-MVZ0jQmT?=;VE61X&^cDE`+cpv8tKXHp$ z!0p?sQiy%Uaoq$pYuw?yB2qWm(FwbA(G8`xvuK_Him_ATHU|a>1kKM!7r*$ zw)D9B1vwQJmNBOe=V^l5ZmhPS#?G{F$9QBQl1P=qvG*Kem>934rL#><;5qc!t;=Bk zOX1<*1bA=P#LN_kNH8hDHr0N9E-gkm0(5^A3JEp*< zpY_3#M#TmD$-KmR9&uVUL(g6BiB;ZiblPhzc5$Yft-ev>rb*?*zFZnqbAaSKh;O9} zrOIP7h>rAtEF$NB?409&IAU3;%8sStqqQ3I_LZ)ot<&2agJz|}ZWGogIuoA+!~8KO z;oxxJC>e9~vwMM^3^t|Jr-Y)NMoS;9dIZ@i5Y;(*gJmrKbNiA`A*+H;UUdrAJRN9T za>%$*0mK{$teB$fXF4QEb70e|bj7?027I$&qurOZb*bY3Jg`qi@_TEgz;Df2CIft8 zZj>?8w`A&fg{>++Jk{(LLAVI?axL!w_l)MLM{#^G@Asi?JcM+abV9NLzvX5}z>WRt z@XvVKpsx;9bWCcP+WN;c+Mm-(Ek9ORs(ZQHer}+kESrkMPmfL`u>0v7;OK4HICbV| z8Q)YP=v3Zj^)9GzWg-1U70g(Vf$g#gG4ek-OvJ;EQD(qc`h1-<_6yOCdRCr``0W7t ze#-aQtb+QYq_FiMc2G>74Mvc**aqD1PfWECEeG*k^N;LZRW^|`#$ht7mllDCq%ltM-XY48JJ-P5G19P66q4@ZV-^}mhKji zZctE4KtM`DN>aK*Kn1>o?|tum#ruE0|MQ(Q^UOKFv-aL=uf6vMhVR7@Pp`BllLXAI#|yZ5jmp<34U6Mn zXy_JbHW42r&Rc!-9~to&fZCCT~daec(a+iwt>zEj?n z`s9}9uSyv18;wyCbk)?q-OttP=Rpr^Y@)6*w8p0{6qI9zgLuK4Iu^PJDx0W{98I3F6`Yej%2V700!EiN8jF(0Et`&Y zukleOOEV(dmfDJ6_q`v7JGoCz6@NOvdm1XCJG~Zd*JbH9=3CxYdFJtmsUqjA3TMKI zR08=cQ;nwq+W40<47|!cl^j9sMGf;4_!5+keo@Nu@!d}Kj?d`?SzaE}2sVi{b&v9Y zUut+SgLSrcD|nBP+=+RRs*x(J`9)6rWuMZZWy}cMK@trSDbB+a3MSK3zA}^>?>2@A zU#*?DS?2D_sy$mU{@IBBlCW)ZH;IR!0E`zgvc#Nb|G4mVS86CJTIQ=j$JEsaRzF3T z!p^AvRPFsz09`4CfP75Izh5l^>6QKusy!(w4K;N|P8nk>7h@-LBf~$Hd;dx;^?y+A zL9Vj8{HEQzQWXBV1A0Fo8x`M`{_ofKPYNKL6L9SxIL=?k0?;c}*kAiKihrSS;Jqyz za-~)K?>h_z#{s@TW+@;e)zvTXy{hTo$G=**x(Wr35Lfx8{zY~53;xCTud9ER0kTbj zL4R>|b@ZDy^Gc9^Yx4fLH{SncSpJ(n6A6QWxcLzf5QLu}27*AK(Eq1CQvlGW{zIS1 z2b}#=pZTx1+mAs&)~~;Hm^d&XrPePsrwovV>mNEy?%$P|kgKl#Q;GRk2Ce_R^%nT& z)cjkC`Bze(f4}vH0QtgzrvEoBW{Zc1XPngQz5eD2ozy$#I}cLx&0oAU|3u5p&CQ=k z(OW>ymPEl`Ul8b^+N#n?{!opGErbb;T)5oL7cCsW02h@)^r>>|FRTmH#b%6 z@0>1H#7f8Sz2Rg`ItZ_zxZIvzNz((|^>&qRy&20|Y35y&kO|FcQLM7AlzL4_VoIg< zqr(jC9`-#3pE>Vf?7AhdHEf?%6slSxTj>&1II1vyD?uUwiVK?Uj^X=x*=8Eez0PdE zI>m{U?K@5F7Z0fpTLz~@`MsXuq!}JxgnYbfFXIwSCmQS>l^R3;E@0*q^^vd2{!ZRo zmT%9@1bq@wYtg|fVf((B`E)-x5%f)(cqeX3B;nDMm+={fms~;$cG2gh0{!COEJzI6 z+_V;-icMXF{icNCgg|8+(Qr5 z`cV;g(`34hDoXJm{n_oA`t!A`ljW0qEr!JCnTBarihUP^9yl{tvvlAhp`t2n>*?*h zZ1xY2cjz(fa2Pv1lxV(uTFNvN#g zQx4xkyf5Zn7#0O~YKZu06*zjFc1lixWeSqoZf|_aR-B||Q*hz^lh07wY&Cx)bx2Ix znk|?jw|+`{_CW*ACD>LM`@zS8=a>2BCDHZV+WhaDC)M7$s# z6Nhi!57{3T7_iK7mvA&oDQV)W?NM7njNF+OD0LUHwsB0L7dz}LoS;i#wBp$`$E{Cz zL(^*!4NojDdb6#Wb~CFk_XsmnO%79AENhHyR$xohxwa`*q$KLs2lAQiZurBuo`%lr zUS*(+sDr>bx}4FCp@8BVOYx|nscP^S%miajV%M9+O`q5jEbmjmNhgWJo@3c1ti)0e z4>ldj&}-71>%YXJIKF{F!p<&j3cTGT+>jRD@N?iu4Hq1iYR3BZjczo&eEv2W%4}aQ zI5px+=kS^_KVu8lx%RMTEjqoJT%#%bh{WdOttb%`H=^E1GuyfuD~0Of|< zw`;y@%4QisCfWXLL^GGPTTJ&q2dwoCTgphP8umL6IUog*Q<1f7^a;7_N^b~S{AT;d z%y6MOOxZisM~=0WEnydaj9o3miDueIDo4?vS9hLDjoFp8wVXyP2>dWRN?A)9#ISiSKfO;ta+@$t&*iRZ#1T59ry2@_x1deA12{jaHQ#sCTT9jjTI#5Tiy6F-YTAyOZ{Z8*1r(*)5W7l^Z5 zh1+Wpj`i-@in+u&=hOsKj`@%G9$}0_vN))JR7gUCs6w64nW#9e$`0 z+0uyW?BfJmh-|GeW`k*Uml}7)am56w4-MYaa?OL8k@8_~M?P<*lic;s=kmQZJ^Z|$ zY_d_eQjjo@D<;>Mb4~uR;Mv_BGWF_Ds2p>tW{|Xqn=L$ICCc6Gw{&*d2qP^m z*V!s~`((OV{aOj!r3KaK#PYMzgNHr`!Lkj8HKy`}pV}uR1o!i>Nzg9w*qY%yNYPT& zOI&jr7pH&ppv2eoX+AF=YKB=&^@p)qB%NgBaqTF$@J=WHXpqcZdifzRJi1q~6Y(&RLaD^NtYhFFvFcsG~ zv+5Qaw4+fX-9ucWsO38aHMcQjaf349xTl}u16IPg_~mzkV>S);wF(!c;M<#)y1N@c z`nF;C=&)w(b69SqQx2vvO8~7+!gNuUQ%9+`LOI3jx7H)6XgkmZ!eW&4>Yx$25nt3S zl_fl+MGji?ha*|T+i5C}HqGuh zEB8=K9)+|9KNxLUMa@LisaFousMqb~s6rWbT@p)>pK)C!4(P4v%h7-VpXKp!@ro@m zIp0MX?gMoGRg{mD=0lmZv>2XAE>yYodHzwFx=Rj015Qr2U53snIy$KEE3gP21rTqG zYch0gtIq57=nP1jyck5Li^>ShAW4coCLwh8NbMW$$Qd$%cTy7G%vx=axn0U{)NQ3j8_+lpf6f+j!@1L*7gpv?7O2Bo69pP*c@cN+4FoiPcJj@4u_ zv3fA3-W%Y~nW7g&-vxE7yRMqc`A8CLSR+=hk7VNk!A(}Ubly%#|h z{D_TV;59$dD$Bhzf;HGZvZvxEtz2xxPmr{7xyoEh54@S@Qwgi)!`IMWN0}~q^stSz zFM|gwWvws;GCZOx=7r8C0zGr2-PHR@-aMtyY!PPj7QZOS)umR-^l!~4yY-Evvj;D| zE}?VaU8jPb3W}sNRgOFgSupfanW_o}tGE6B+U*(NA%#m>sz85XP9gQBQ8!e%$+CsC z%MTeBHde`H&8VjAtqcCK@{RPmfk=}Z_&o(L1VSC^hRukjd(vXeqOvBe4%CY))G1C* z)Di@eyrSedetg;P8-T7v_Ycx8?7u#6I2P1HXxKz{KV47wUfOQc-uS)imEP;h zy$I@4BWUQBUlYR5A^w8_Zg4+WI$8pQb7rYeUfe6ojX`A-7QD3iQ6bZLTPBC<@UC;J zMdsVX-5^CUY9YjdAf)5L(ZwBBmH~a|mTK>q+O5*qrf2FWU;ES-z`kDyMXO~N^F+1R+6l_wspgsb33lCma`UBt_~oc9-{LQ`&x-Jdgh zw;&>sLR2X2=jgSsm((3s(d!s>!vBmxsZ1`Go8kdSUfSp@tw)$~)J+zT9OSCg4a;8M zcTP!pzR5=45p~d49iqcxq4Hw8SW}ZGZW$z|Wm@x+B?6OX_)AgQeP%VddfNBItlYz%zR5q;eosG}P@)_{AtxS_DyotdQ8^iT zxRlWoAHODfGk730$&_w)qt@lrt6Oo) zAqWA?an(HkhkID$E-W5*^-|lWR-+YKUy-Z1PV6|ZO(o<-iD0*la{=ENnQ;osoi=k=*gRIKA?{5=iDVE}} zsMPZ!N%;?Mr-|nrhEW8wWD^)LjwEkK;SYRrCQ&tX>dCVl3N9AM|N;d;U8p__Rz5kBueYvuM{>c&N zB=&5&{_eLL(#(C+rke9hH6(0=vWX!yAWSDAZQOIe*Ec#^_Y3R7}@;Sj^G8SN~=;4`3ml1@dMs7$pe%%+DM+TZB` z4tHl=)0cfz#GpheKjrhvNAM~5H5v#7!~rSpDOkLBFv_M5QWt@_l&F`Uzwa!KROIpK zoXI#6E&OsuU^!P;t(J4LdUvGmsHug~TI=|WCE~;pu|xMBl@KRaJw-%A9iuu&tt~zF z)&48ZSLa*4k^|fuGR+SnCDR_r#E_;bw_%W=S!79DR&h2{IKJ@mca&NmTJJz3)YlIG zz!AqB@c<_|jhy7^9fsSAWOu=0r*SU6iD4(L&zSPsicoQ5?iU6gNSisnb9dNHZTZ3Q z*$u_@k!hsJPtOm$J9lZ$c1oi6XZ4%C_XXa)J-SJaWHKkI@)9uVZl+1!pG|V3Sc?f; zQyWKPt$d6qb2T!yJLcIp?|UxPQ7j`|_^G6J|Cz25^=POFZe~8BE4{mdZ}ej%@ghD4hDnSAh(7DzP93Iu?#OTf7LeOVljsxO)wjue{#)|7mp0xx^+cmsR0-|q4=Q7)JRzeXHJc&m0 zZnTbEwkKwzTF!o2g(mI=LP*Ga^yhgW{o|~ldGlg8ExrCrk9fjKUm;{9Nqf}NX-GcA z%ejH*l5lgU*V4N$6{3Z0N@B$h-Ui*vwsf1XzZnoRMgCbG?M{n2&OzNqn!df_ z)-$VTi8~>7rr&DETov9BospznkWP~qlM;%4es4%A^n5>}SpJU4WxJ*G*;05t#!HQ{ zd7}N~`H>LQuZ_XcE(YI8sI7v?;Tf?Wm_HYKv-Kq_sB%M`F;VHI)l%$YxTa3NS|E>Es-F_X=@O4>8yJPjdFV{q ziCs-o^|)Ty9aPol()wo5n@O3Nj9Q{v(fMH}-krd&UhouDn)==T5xxBdWt|+S8{l4gd%TUL%Yq>kp0Uejselq;>TQB0|8|L7b6o#h$ z#3=j7Sv$VfkM$)Udaw2!?Nw+-C3LcdZJ-y4a`aOIQKaAdO zee^yiHM*>}E8TOesYuS5b%BDWhK`wcfmP&Y-j&6P^U6$c($5Cc&nX&wv_H=ATFpNM zQ>K& zsglV6zan_t`pB*vuf8(}~RC^o?d( z?)?GE05!Uhst`gZ=0w`|>Rta-sv7w5x2|?(1K3`cYt2$DW*H#`c5e3KQe>{Oal}cO zo>C6^N=g_8PC*}c!)F~6q+z5@;YYLZC5%p1tyu*>Ve=^21Q!eYuepWM+MazYySv7GLc0pox-XzMCdYiA8oou}*5}HscGkayJ6M37s84fdfgt*)}AG;>+zDND*mj2ZgJu^#9S2lM<2Kz z(}BHjtqgF3XuO>{`qb!yP`uHuQDk-chq4!`YL`$dDVMrDE2Frg;vsjS>O-BPH5O<|+z zdF=vAz5Gm}hyhkOW#`G{;3MyG_WPmDA8)f+YXxe8(~di7ZDr%#k4@yCQ1!KH(^Ljk zp;#&rc8xO99lMcXLo0P?7Tf%Y<#g!cmjw$j4Pm!)QPY{FF+!K=hC2x#Du*RXOTOSU z>lyPSXMVUxcRP43?pQNU@olZ+D(+tUrOC4GyXcwDDbf8h#PhjzXP4a6Tmb`I;@2K|gV)MfYN~GUUABhWBRBMud;8=udsw~g1 z3wnLnH&O2;eD?Z9NlEN7UaoD)En<5L!cDPIFk}D)8(tzD0+Dlk@lxtscVo6|JmRKv z6GGrl)*eaXlsOhEKhMGU=O>MEg}t*e(rB}1ZEv2ta5*$PpKO?GO0|@D|9JQ#ow+d8 zMHFGl==gLqV05u3%P?wiw^@kST>Nskm^;WzAv54^k(levyLw%u0xzfst2vY(Jc33l ztdkd0SuE$WpsHpOrqp2@>JZR!nnV=~5Wc!8oZS1u@qD$2IPVAh%Pf{*+S+cKiI)=J zDJdQAqzNjw?8|=UU_Ce?S|JZ|s#x32|B=i8UBodW<3_yzDJBrwqerkQW2(?OwyTIb+AW1*H-0xKAs-Iz=oO~`EZ;p{Z7^u6(Pn3bmN zj#m&*3{8aw+q0Q7o5hDwaWxk=K5ahM_G_I&dvhM9Aofy)6xCRekJ}}#Z5b9NdyMtv zk$ipcj#{+X7at_&8`B|gbaIlKxj+lH;dKfVaX~vM%6;?~a-sCt3SHEldBJ%og}pnH z(9==u4s##UHe?LxbgfcS5g)ROS!6Oa{lhE7FsJL2Xze?}pHNvn=Wfcr=-S9t``l(~xWU-&d*eet;a!p#uDrd=ENq{7x8_sMVcqeuQRI}z+)~<(+4*efJ01pk z0*6e9;-J1prdHjC)p|Rj=*32}PxKOdO^wON*CoOj!gI^D*o4j(7Moj%!^ou)zon6W z?E3zrgF=RPM+=V2yCC_lHFe3Zk2kl$+e!AQXVl~bOE0q1U}QAZdMpzf_jEhd8AbBd z*O#b;B$Cr^A_~yvY(URwR;G^1y!mZe`J{aFbB+Xqmy6De z0g>@HF5l{{XSRAgrhoL|l8_}^C4>@kgDR|(w!A!!R9B2X4<6CE*w{VNa231%6gzhy z-C(@npd|UE?K9IumiwOR>FBe@Bno%1KA<^dsTfunFtU8h(Ef6dMNRL~Ps1~#=Q^?w zax9MTc2rc%WOQ6Koe}XrEf7V+jrP7Qo3Z){O&)|K6CoJWq9p^ZvsNbF3$?_@x;2*> zMK(ImU7V(l3Ja~77&X=|0wgF_4cOXZo)|a<3jcq%9m)**R(Q-XI}>M=&A>!18rBND&XbZYOv8C!s1X zx+S(HGvf_{?Cvfz>6Y3!kf`#S&nnM+O#7%d@gU(m%X7pwF&(s_A5RrtHxe~LfitgH zR8p>nQ`IkOzOj*=b~-;4FD1e~C_(2qJwM;?z7s!eznEZ>ACP=pogyHVl1Q86D?v3dMchCsC%1)FPCv*H-*&KM-+tr$&6g57 zyx#ulMtYPyVHJJ69At-qQcr3;b8;VOaMyoO=N!kS$3bq(ckz`BozwAgj>X`_vTFx~ zf9~F2;^H-e8_#>9+(%BMc!qEDwm zFt)-FV!3oG4z0APZ+k~L5^!w%rwF|(by}dOUD6C)Y5v$+2pS@{#5{U;u{*uXmDOqf z9Nf5=H|3J+oj6~9nZ0?O>Uakc16LN^g%ww#4!p#)EGlX6JagFlMj~s&^tAx(XUoal z>z`dh?=~ZKgq@EY3Yp%aCVqp)*=8Da%{BH%ygjotU|Tcsdg@0;J1jtDdt-Nf$d-Rw z05Y1zJ@nYjvKBW$t)Ig%yqt79V%`KJUuZITo#R!vt}HBn{XSu=Bo*mU+&gT(rNbY9*AcI7nTGOLx`NS0XS6 z7TZ2yh;enczRrG3$g7Pf4;ZwBb|m98U=OUZTbkVwC(!8`&?2zmrJFj$BM!+YJ2V5O zi#p&jV5b{Wt-22~M-~j$iUR36j9(TzLdRyP)bfuXSan;i`1REH=<7xG?|ywxx#U(T z>&X#VhNkS9d?5E-Ds5r9iSfJG(9O4_WepPW^}c58JqXA7MLEta zyVorQ{@d?qz9zYvMK{OVh02j&v;-F}{J{>7JCF4A_>9IgF2Yt=tUs3FuEJ#Q=9|dW zqxkp+@`8x(>IVxbV0oeJVYD`Ys(@0A0w_sQU?|)uC+JoY1V889%_<{eji@q3@Cucehc0{#5m+nM+j&6?#vOKc zPi!~!@8V?v*L3K<|Lih6Z8miK1lG~Iymgo%TI$sXraN_>KBOS%pd{=_!s{rw#GpD5 zrYXiRxcp*xT5Wh5W_aq=VYjY*d26YHZu|=zPalS-|6uu(azXL%H7z}1;PUc$=WzM*gkbOax%BI zaRKu{c%IrCvH!c0zrz`@0j_T#MOBan;9bTez{3Ypb~bcydInOGl$HRzyo}wP{!`}f zSO9E~%&l#m%-sKTJsAId9( zm#dDl{Rg_Tl(~YmLArl){WsOGh!N&aR>q)T!cYNBJ)E7)Y#l(qjBbEarC&Wa27rGB zgphDBHgvio_*d+LU*~{eBn_R6aena$lzL$M^y(b+_qn{WyDQKiM-X7J^2>ouOiW2Z z@IUBZZf*ZD8*y_mHUSKM5PUd*x8A=t5F7^MgMmyyzc2_N{3{17-0jpJHbr~vX$4DpBjfN=v{MX!}b3P7*Ro*(vK+C>V0ugjSqiQvB`KQORv z0sE@o+W;)7V8D{P+WtLv0Xpz?o?-k*zUytkkZ@pSTq_HM!2ZCHaL9F;!jJ;|*JKX? zW;npb@Abj?kyjq6SKEL11Ln*1egJfT$P^9(qSah03m1UE{=fi3ut|#Z~++Nx~$-cKj#4)0fzk1H^iS~2}dCQs1I1beAjtK@PV&lz5FH@z*rCn74tg= ztgY)~1OYffT%!X#lliXSU#{q`w*g?l>iWG6V66hP?GFqNM8)}y7k~~4_#*#~L7`ye zwRr`sbKo)a2OaGC_yY3*EI8$ALS{H99^x^pCOt23R8g zULPNvkMG*L1nL9!Kk2UDi?5y^*Y7!382>-&b8;{QV);1WTs Date: Tue, 25 Oct 2022 00:59:20 +1100 Subject: [PATCH 12/39] fix/OE-13734: Fixed the error when delete a step with comments (#8622) * fix/OE-13734: Fixed the error when delete a step with comments [protected/controllers/WorklistController.php] * Modified the function actionDeleteStep. Wrap the delete process with try catch, and delete the comment before deleting the step (if it has comment) [PSDObserver.php] * Replaced the beginTransaction with beginInternalTransaction which should avoid collision of transactions --- protected/controllers/WorklistController.php | 22 +++++++++++++++++-- .../OphDrPGDPSD/components/PSDObserver.php | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/protected/controllers/WorklistController.php b/protected/controllers/WorklistController.php index dfcc0aa9fa..6bb8074a70 100644 --- a/protected/controllers/WorklistController.php +++ b/protected/controllers/WorklistController.php @@ -546,8 +546,25 @@ public function actionDeleteStep() } } if ($step) { - Yii::app()->event->dispatch('step_deleted', ['step' => $step]); - $step->delete(); + $transaction = Yii::app()->db->beginTransaction(); + try { + Yii::app()->event->dispatch('step_deleted', ['step' => $step]); + + if ($step->comment && !$step->comment->delete()) { + OELog::log(print_r($step->comment->getErrors(), true)); + throw new RuntimeException('Could not delete step comment'); + } + + if (!$step->delete()) { + OELog::log(print_r($step->getErrors(), true)); + throw new RuntimeException('Could not delete step'); + }; + $transaction->commit(); + } catch(Exception $e) { + $transaction->rollback(); + throw $e; + } + $this->renderJSON( array('step_html' => $this->renderPartial('_clinical_pathway', ['visit' => $step->pathway->worklist_patient], true)) ); @@ -1951,6 +1968,7 @@ public function actionAddComment() $comment->comment = $post['comment']; $comment->doctor_id = $post['user_id']; if ($comment->save()) { + $wl_patient->refresh(); $this->renderJSON( array( 'step_html' => $pathway_instanced ? $this->renderPartial('_clinical_pathway', ['visit' => $wl_patient], true) : null, diff --git a/protected/modules/OphDrPGDPSD/components/PSDObserver.php b/protected/modules/OphDrPGDPSD/components/PSDObserver.php index 3580d93517..4e8976a5b2 100644 --- a/protected/modules/OphDrPGDPSD/components/PSDObserver.php +++ b/protected/modules/OphDrPGDPSD/components/PSDObserver.php @@ -58,7 +58,7 @@ public function removePSD($data) if ($data['step']->getState('action_type') === 'manage_psd') { $assignment = OphDrPGDPSD_Assignment::model()->findByPk($data['step']->getState('assignment_id')); if ($assignment && (int)$assignment->status === $assignment::STATUS_TODO) { - $transaction = \Yii::app()->db->beginTransaction(); + $transaction = \Yii::app()->db->beginInternalTransaction(); $assignment->delete(); if ($assignment->getErrors()) { From c3d049c378b996c2bf0d303c5fbe1bd820e094de Mon Sep 17 00:00:00 2001 From: Peichun Zhou Date: Tue, 25 Oct 2022 02:26:48 +1100 Subject: [PATCH 13/39] fix/OE-13696 (#8627) [protected/assets/js/worklist/worklist.js] * Added codes to disable other step actions when saving comments * After comment is saved, refresh the path step UI and data [protected/models/PathwayType.php] * If there is pathway associated with the worklist patient, return the pathway steps. Co-authored-by: Toby Bisco --- protected/assets/js/worklist/worklist.js | 20 ++++++++++++-------- protected/models/PathwayType.php | 9 ++++++++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/protected/assets/js/worklist/worklist.js b/protected/assets/js/worklist/worklist.js index 4fa50a1dbf..52df869555 100644 --- a/protected/assets/js/worklist/worklist.js +++ b/protected/assets/js/worklist/worklist.js @@ -485,6 +485,10 @@ $(function () { $(context).addClass('spinner'); $(context).addClass('as-icon'); + const step_actions = $(ps?.currentPopup).find('.step-actions button'); + // disable the buttons to avoid racing issue + step_actions?.each((i, action) => $(action).prop('disabled', true)); + $.ajax({ url: '/worklist/addComment', type: 'POST', @@ -514,14 +518,6 @@ $(function () { if (!$commentButton.hasClass('comments-added')) { $commentButton.addClass('comments-added'); } - - ps.resetPopup(); - ps.requestDetails({ - partial: 0, - pathstep_type_id: ps.pathstepTypeId, - pathstep_id: response.step_id, - visit_id: ps.visitID - }); } else { let $eventSelector = $(event.target); let $editSelector = $eventSelector.closest('.js-comments-edit'); @@ -537,6 +533,14 @@ $(function () { $commentButton.addClass('comments-added'); } } + // reset the popup ui and refresh the popup data + ps?.resetPopup(); + ps?.requestDetails({ + partial: 0, + pathstep_type_id: ps.pathstepTypeId, + pathstep_id: response.step_id, + visit_id: ps.visitID + }); } }); }; diff --git a/protected/models/PathwayType.php b/protected/models/PathwayType.php index 96985e1dd8..64887c706b 100644 --- a/protected/models/PathwayType.php +++ b/protected/models/PathwayType.php @@ -144,7 +144,14 @@ public function createNewPathway(int $worklist_patient_id): bool public function instancePathway(WorklistPatient $worklist_patient): array { $new_steps = array(); - + // if the worklist patient has pathway associated with, + // return the relevant steps + if ($worklist_patient->pathway) { + foreach ($worklist_patient->pathway->steps as $step) { + $new_steps[$step->id] = $step; + } + return $new_steps; + } if ($this->createNewPathway($worklist_patient->id)) { $worklist_patient->refresh(); foreach ($this->default_steps as $step) { From 17777ffc5d57ada33cc1cde378732ff4e1fe7af9 Mon Sep 17 00:00:00 2001 From: biskyt Date: Tue, 25 Oct 2022 12:09:36 +0100 Subject: [PATCH 14/39] move features autoload entry to autoload-dev As features / tests are not available in live mode images --- composer.json | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index a8bf741e46..ef77429e20 100644 --- a/composer.json +++ b/composer.json @@ -61,14 +61,12 @@ "psr-4": { "OE\\concerns\\": "protected/concerns", "OE\\factories\\": "protected/factories" - }, - "classmap": [ - "features/bootstrap/Pages/OpenEyesPage.php" - ] + } }, "autoload-dev": { "classmap": [ - "vendor/zhuravljov/yii2-debug/Yii2Debug.php" + "vendor/zhuravljov/yii2-debug/Yii2Debug.php", + "features/bootstrap/Pages/OpenEyesPage.php" ] }, "extra": { From e108634bcd5e7700bbe316828e0675cd36a75e5e Mon Sep 17 00:00:00 2001 From: imas8888 Date: Thu, 27 Oct 2022 12:11:13 +0100 Subject: [PATCH 15/39] [OE-13829] - Removing signature before deleting med-management element --- .../models/MedicationManagement.php | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/protected/modules/OphCiExamination/models/MedicationManagement.php b/protected/modules/OphCiExamination/models/MedicationManagement.php index bbb71a205f..cf81d47839 100644 --- a/protected/modules/OphCiExamination/models/MedicationManagement.php +++ b/protected/modules/OphCiExamination/models/MedicationManagement.php @@ -184,7 +184,7 @@ public function getEntriesStartingInFuture() * gets stopped Medication Management entries * @return MedicationManagementEntry[] */ - public function getStoppedEntries() : array + public function getStoppedEntries(): array { return array_filter($this->visible_entries, function ($e) { return !is_null($e->end_date) && $e->is_discontinued && $e->stopped_in_event_id === $e->event_id; @@ -195,7 +195,7 @@ public function getStoppedEntries() : array * Gets NOT stopped Medication Management entries * @return MedicationManagementEntry[] */ - public function getNotStoppedEntries() : array + public function getNotStoppedEntries(): array { $stopped_ids = $this->getStoppedEntryIds(); $collection = new \ModelCollection($this->visible_entries); @@ -207,7 +207,7 @@ public function getNotStoppedEntries() : array * gets changed Medication Management entries * @return MedicationManagementEntry[] */ - public function getChangedEntries() : array + public function getChangedEntries(): array { $stopped_entry_ids = $this->getStoppedEntryIds(); return array_filter($this->visible_entries, function ($e) use ($stopped_entry_ids) { @@ -236,7 +236,7 @@ public function getChangedEntries() : array $criteria->params['latest_med_use_id'] = $e->prescription_item_id ?? $e->id; $past_medication_history_entries_count = EventMedicationUse::model()->count($criteria); - return !empty($past_entries) || $past_medication_history_entries_count !== "0" && !in_array($e->id, $stopped_entry_ids) ; + return !empty($past_entries) || $past_medication_history_entries_count !== "0" && !in_array($e->id, $stopped_entry_ids); }); } @@ -244,7 +244,7 @@ public function getChangedEntries() : array * gets changed entry ids * @return array */ - private function getChangedEntriesIds() : array + private function getChangedEntriesIds(): array { $changed_entries = $this->getChangedEntries(); $ids = []; @@ -259,7 +259,7 @@ private function getChangedEntriesIds() : array * gets changed entry ids * @return array */ - private function getStoppedEntryIds() : array + private function getStoppedEntryIds(): array { $stopped_entries = $this->getStoppedEntries(); $ids = []; @@ -657,6 +657,15 @@ public function getEntries() return $this->entries; } + public function beforeDelete() + { + foreach ($this->signatures as $signature) { + $signature->deletePrevSignature(); + } + + parent::beforeDelete(); + } + public function afterDelete() { foreach ($this->entries as $entry) { @@ -738,16 +747,14 @@ public function getUnsignedMessage(): string */ public function usesEsignDevice(): bool { - return !empty( - array_filter ($this->signatures, function ($signature) { + return !empty(array_filter($this->signatures, function ($signature) { return $signature->usesEsignDevice(); - }) - ); + })); } /** - * @param array $elements - */ + * @param array $elements + */ public function eventScopeValidation(array $elements) { $elements = array_filter( From 1bfb7d4ee4d17886aef1f2e6acf3f52fa5820915 Mon Sep 17 00:00:00 2001 From: Arpad Horvath Date: Thu, 27 Oct 2022 14:32:53 +0200 Subject: [PATCH 16/39] OE-13833: fix low vision service field in CVI clinicinfo --- .../views/default/view_Element_OphCoCvi_ClinicalInfo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php b/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php index 0b46df6c04..e7c88dab1d 100644 --- a/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php +++ b/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php @@ -98,7 +98,7 @@ $value) :?>
-
+
From f57c3420619531d14d03a415aa2f4d65e88029a0 Mon Sep 17 00:00:00 2001 From: Arpad Horvath Date: Thu, 27 Oct 2022 16:43:11 +0200 Subject: [PATCH 17/39] OE-13833: fix low vision service field in CVI clinicinfo --- .../views/default/view_Element_OphCoCvi_ClinicalInfo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php b/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php index e7c88dab1d..943d580f06 100644 --- a/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php +++ b/protected/modules/OphCoCvi/views/default/view_Element_OphCoCvi_ClinicalInfo.php @@ -97,7 +97,7 @@ ];?> $value) :?> -
+
From f3ce27918ddff1f01377b95f4847133a080d3820 Mon Sep 17 00:00:00 2001 From: Angus-Cameron <51976505+Angus-Cameron@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:19:09 +1100 Subject: [PATCH 18/39] fix/TKLS-894 changed permission check on esign to be configurable per controller (#8656) --- .../components/actions/GetSignatureByPinAction.php | 13 +++++++------ .../controllers/DefaultController.php | 4 ++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/protected/components/actions/GetSignatureByPinAction.php b/protected/components/actions/GetSignatureByPinAction.php index ed34d1404d..e545017602 100644 --- a/protected/components/actions/GetSignatureByPinAction.php +++ b/protected/components/actions/GetSignatureByPinAction.php @@ -86,16 +86,17 @@ public function run() { $this->pin = Yii::app()->request->getPost('pin'); - // \OELog::log(print_r($this->controller, true)); - try { // Check if the user has the Prescribe role, if not throw an exception. - $can_prescribe = Yii::app()->user->checkAccess('Prescribe'); - if (!$can_prescribe) { - throw new Exception("You do not have the necessary user rights to sign this prescription."); + if (isset($this->controller->required_user_sign_permissions)){ + foreach ($this->controller->required_user_sign_permissions as $permission) + { + if (!Yii::app()->user->checkAccess($permission)) { + throw new Exception("Unable to sign, user does not have necessary permissions."); + } + } } $this->user = SignatureHelper::getUserForSigning(); - // $this->getUser(); $this->checkPIN(); $this->getSignatureFile(); } catch (Exception $e) { diff --git a/protected/modules/OphDrPrescription/controllers/DefaultController.php b/protected/modules/OphDrPrescription/controllers/DefaultController.php index c6bed70500..2a136a5780 100644 --- a/protected/modules/OphDrPrescription/controllers/DefaultController.php +++ b/protected/modules/OphDrPrescription/controllers/DefaultController.php @@ -34,6 +34,10 @@ class DefaultController extends BaseEventTypeController 'getSignatureByUsernameAndPin' => self::ACTION_TYPE_FORM ); + public static $required_user_sign_permissions = [ + 'Prescribe' + ]; + private function userIsAdmin() { $user = Yii::app()->session['user']; From c6c3ad4d9d6ab60eab62e065f402fb0c2dfc84d6 Mon Sep 17 00:00:00 2001 From: Angus-Cameron <51976505+Angus-Cameron@users.noreply.github.com> Date: Fri, 28 Oct 2022 16:29:09 +1100 Subject: [PATCH 19/39] feature/OE-13805 fixed autosign functionality on editing a prescription (#8635) * feature/OE-13805 fixed autosign functionality on editing a prescription * [CodeFactor] Apply fixes Co-authored-by: codefactor-io --- ...prescription-PIN-sign-setting-toggle.cy.js | 16 ++++++++++++++ .../Element_OphDrPrescription_Esign.php | 22 ++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/cypress/e2e/modules/prescription/13352-prescription-PIN-sign-setting-toggle.cy.js b/cypress/e2e/modules/prescription/13352-prescription-PIN-sign-setting-toggle.cy.js index 45bad54926..95520c07b5 100644 --- a/cypress/e2e/modules/prescription/13352-prescription-PIN-sign-setting-toggle.cy.js +++ b/cypress/e2e/modules/prescription/13352-prescription-PIN-sign-setting-toggle.cy.js @@ -21,6 +21,22 @@ describe('prescription esign behaviour', () => { it(`verifies that signature appears`, () => { cy.get('div.js-signature-wrapper').scrollIntoView().should('be.visible'); + + cy.get('#add-standard-set-btn').click(); + cy.selectAdderDialogOptionText('Post-op'); + cy.confirmAdderDialog(); + + cy.get('td.route_option_cell > select').each(($el) => { + cy.wrap($el).select(1); + }); + + cy.get('div.js-signature-wrapper').should('be.visible'); + + cy.get('button#et_save').click(); + cy.get('a.button.header-tab').contains('Edit').click(); + cy.get('button#reason_2').click(); + + cy.get('div.js-signature-wrapper').should('be.visible'); }); }); diff --git a/protected/modules/OphDrPrescription/models/Element_OphDrPrescription_Esign.php b/protected/modules/OphDrPrescription/models/Element_OphDrPrescription_Esign.php index 945d3ab922..8c38abebcd 100644 --- a/protected/modules/OphDrPrescription/models/Element_OphDrPrescription_Esign.php +++ b/protected/modules/OphDrPrescription/models/Element_OphDrPrescription_Esign.php @@ -33,6 +33,7 @@ class Element_OphDrPrescription_Esign extends BaseEsignElement use AutoSignTrait; private $signature_class = \OphDrPrescription_Signature::class; private $pin_required_setting_name = 'require_pin_for_prescription'; + private $auto_sign_user_role = 'Prescriber'; protected $widgetClass = PrescriptionEsignElementWidget::class; /** @@ -115,15 +116,24 @@ public function search() */ public function getSignatures(): array { - $prescriber = new OphDrPrescription_Signature(); - $prescriber->signatory_role = !empty($this->user->grade) ? $this->user->grade->grade : "Prescriber"; - $prescriber->type = BaseSignature::TYPE_LOGGEDIN_USER; + if (!empty($this->user->grade)) { + $this->auto_sign_user_role = $this->user->grade->grade; + } + + if (!$this->attemptAutoSign()) { + $prescriber = new OphDrPrescription_Signature(); + $prescriber->signatory_role = $this->auto_sign_user_role; + $prescriber->type = BaseSignature::TYPE_LOGGEDIN_USER; - if (!$this->isNewRecord) { - return [$prescriber]; + + if (!$this->isNewRecord) { + return [$prescriber]; + } + + return !empty($this->signatures) ? $this->signatures : [$prescriber]; } - return !empty($this->signatures) ? $this->signatures : [$prescriber]; + return $this->signatures; } public function getViewSignatures(): array From 84e2cc2bc975ef783392542db55000f18a0f8759 Mon Sep 17 00:00:00 2001 From: Angus-Cameron <51976505+Angus-Cameron@users.noreply.github.com> Date: Fri, 28 Oct 2022 17:16:26 +1100 Subject: [PATCH 20/39] feature/OE-13806 consent will now autosign confirmations when consent autosign is enabled (#8636) Co-authored-by: Andrew Pigram --- .../consent/13352-consent-PIN-sign-setting-toggle.cy.js | 4 ++++ .../OphTrConsent/models/Element_OphTrConsent_Confirm.php | 7 +++++++ .../OphTrConsent/models/Element_OphTrConsent_Esign.php | 1 + 3 files changed, 12 insertions(+) diff --git a/cypress/e2e/modules/consent/13352-consent-PIN-sign-setting-toggle.cy.js b/cypress/e2e/modules/consent/13352-consent-PIN-sign-setting-toggle.cy.js index 169b8c36f2..c5518a4fe0 100644 --- a/cypress/e2e/modules/consent/13352-consent-PIN-sign-setting-toggle.cy.js +++ b/cypress/e2e/modules/consent/13352-consent-PIN-sign-setting-toggle.cy.js @@ -20,6 +20,8 @@ describe('consent esign behaviour', () => { cy.consentCompleteAndSave(this.createUrl) .then(() => { cy.get('div.js-signature-wrapper').first().scrollIntoView().should('be.visible'); + cy.get('button#et_confirm').click() + cy.get('div.alert-box.success').contains('Consent is confirmed').should('be.visible'); }); }); }); @@ -34,6 +36,8 @@ describe('consent esign behaviour', () => { cy.consentCompleteAndSave(this.createUrl) .then(() => { cy.get('button.js-sign-button').first().scrollIntoView().should('be.visible'); + cy.get('button#et_confirm').click() + cy.get('tr#Element_OphTrConsent_Esign_OEModule_OphTrConsent_widgets_EsignUsernamePINField_C button.js-sign-button').scrollIntoView().should('be.visible'); }); }); }); diff --git a/protected/modules/OphTrConsent/models/Element_OphTrConsent_Confirm.php b/protected/modules/OphTrConsent/models/Element_OphTrConsent_Confirm.php index 700ab8c7c6..e587f02a0f 100644 --- a/protected/modules/OphTrConsent/models/Element_OphTrConsent_Confirm.php +++ b/protected/modules/OphTrConsent/models/Element_OphTrConsent_Confirm.php @@ -135,6 +135,7 @@ public function getRequiredSignatures(): array $result[] = OphTrConsent_Signature::model()->findByPk($this->signature_id); } else { $user = User::model()->findByPk(Yii::app()->session['user']->id); + $sig = new OphTrConsent_Signature(); $sig->setAttributes([ "type" => BaseSignature::TYPE_OTHER_USER, @@ -144,6 +145,12 @@ public function getRequiredSignatures(): array ]); $sig->user_id = $user->id; $sig->signed_user_id = $user->id; + + if (SettingMetadata::model()->checkSetting('require_pin_for_consent', 'no')) { + $sig->proof = \SignatureHelper::getSignatureProof($user->signature->id, new \DateTime(), $user->id); + $sig->setDataFromProof(); + } + $result[] = $sig; } return $result; diff --git a/protected/modules/OphTrConsent/models/Element_OphTrConsent_Esign.php b/protected/modules/OphTrConsent/models/Element_OphTrConsent_Esign.php index 4432da9bd0..ded3756d72 100644 --- a/protected/modules/OphTrConsent/models/Element_OphTrConsent_Esign.php +++ b/protected/modules/OphTrConsent/models/Element_OphTrConsent_Esign.php @@ -184,6 +184,7 @@ public function getRequiredSignatures(): array $sig->signatory_name = $user->getFullNameAndTitleAndQualifications(); $sig->initiator_row_id = 0; $sig->user_id = $user->id; + return [$sig]; } } From 3fc4d94e231465b2594e8a201250d49d07092706 Mon Sep 17 00:00:00 2001 From: Gurpreet Singh Date: Sun, 30 Oct 2022 15:37:48 +1100 Subject: [PATCH 21/39] provided the subspecialty id to the method and set the prescribable filter to false. (#8611) Co-authored-by: preet90 --- protected/models/Medication.php | 5 ++--- protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/protected/models/Medication.php b/protected/models/Medication.php index 22620ec1c2..5d13a62736 100644 --- a/protected/models/Medication.php +++ b/protected/models/Medication.php @@ -381,7 +381,6 @@ private function listByUsageCode($usage_code, $subspecialty_id = null, $raw = fa $ids = []; /** @var MedicationSet[] $sets */ - foreach ($sets as $set) { foreach ($set->items as $item) { if (in_array($item->medication->id, $ids)) { @@ -459,9 +458,9 @@ public function listCommonSystemicMedications($raw = false, $subspecialty_id = n return $this->listByUsageCode("COMMON_SYSTEMIC", $subspecialty_id, $raw, $site_id, $prescribable_filter); } - public function listCommonDrops($raw = false, $prescribable_filter = false) + public function listCommonDrops($subspecialty_id, $raw = false, $prescribable_filter = false) { - return $this->listByUsageCode("COMMON_EYE_DROPS", null, $raw, null, $prescribable_filter); + return $this->listByUsageCode("COMMON_EYE_DROPS", $subspecialty_id, $raw, null); } public function listCommonOralMedications($raw = false, $prescribable_filter = false) diff --git a/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php b/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php index d99fcfe87a..8987d85b0b 100644 --- a/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php +++ b/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php @@ -66,7 +66,7 @@ public function getMedicationOptions() } else { $common_ophthalmic = array(); } - $common_drops = \Medication::model()->listCommonDrops(true, true); + $common_drops = \Medication::model()->listCommonDrops($subspecialty_id, true, true); $common_oral = \Medication::model()->listCommonOralMedications(true, true); $common_systemic = array_map(function ($comm_sys) { From 3055f713b227648ec52ad56083482e52df97b19a Mon Sep 17 00:00:00 2001 From: Peichun Zhou Date: Sun, 30 Oct 2022 23:39:57 +1100 Subject: [PATCH 22/39] OE-13524 - Added default values if no address details saved (#8578) --- .../OphTrConsent/controllers/DefaultController.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/protected/modules/OphTrConsent/controllers/DefaultController.php b/protected/modules/OphTrConsent/controllers/DefaultController.php index bde44525f2..ae10f5f5ba 100644 --- a/protected/modules/OphTrConsent/controllers/DefaultController.php +++ b/protected/modules/OphTrConsent/controllers/DefaultController.php @@ -658,11 +658,11 @@ public function actionWithdraw() $withdrawal->email = $this->patient->getEmail(); $withdrawal->phone_number = $this->patient->primary_phone; $withdrawal->mobile_number = $this->patient->contact->mobile_phone; - $withdrawal->address_line1 = $this->patient->contact->address->address1; - $withdrawal->address_line2 = $this->patient->contact->address->address2; - $withdrawal->city = $this->patient->contact->address->city; - $withdrawal->country_id = $this->patient->contact->address->country_id; - $withdrawal->postcode = $this->patient->contact->address->postcode; + $withdrawal->address_line1 = $this->patient->contact->address->address1 ?? ""; + $withdrawal->address_line2 = $this->patient->contact->address->address2 ?? ""; + $withdrawal->city = $this->patient->contact->address->city ?? ""; + $withdrawal->country_id = $this->patient->contact->address->country_id ?? null; + $withdrawal->postcode = $this->patient->contact->address->postcode ?? ""; $withdrawal->consent_patient_relationship_id = $other_relationship->id; $withdrawal->other_relationship = 'Patient'; } From dc7edc5dfbc938423d13dca71f0a681612281792 Mon Sep 17 00:00:00 2001 From: Angus-Cameron <51976505+Angus-Cameron@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:50:08 +1100 Subject: [PATCH 23/39] fix/OE-13840 fixed secretary signing on behalf of another user (#8666) --- .../actions/GetSignatureByPinAction.php | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/protected/components/actions/GetSignatureByPinAction.php b/protected/components/actions/GetSignatureByPinAction.php index e545017602..de27fc63f9 100644 --- a/protected/components/actions/GetSignatureByPinAction.php +++ b/protected/components/actions/GetSignatureByPinAction.php @@ -57,9 +57,7 @@ protected function getSignatureFile() : void protected function checkPIN() : void { - $secretary_can_sign = $this->controller->secretary_can_sign ?? false; - if ($this->pin === Yii::app()->params["secretary_pin"] && $secretary_can_sign) { - $this->is_secretary_signing = true; + if ($this->is_secretary_signing) { $this->checkSecretaryPIN(); } else { if(strlen($this->pin) === 0) { @@ -71,13 +69,17 @@ protected function checkPIN() : void } } - private function checkSecretaryPIN() + private function checkSecretaryPIN() : void { if (!Yii::app()->user->checkAccess('SignEvent')) { throw new Exception("We're sorry, you are not authorized to sign events. Please contact support."); } } + private function checkIsSecretarySigning(): void { + $secretary_can_sign = $this->controller->secretary_can_sign ?? false; + $this->is_secretary_signing = ($this->pin === Yii::app()->params["secretary_pin"] && $secretary_can_sign); + } /** * @inheritDoc @@ -87,7 +89,19 @@ public function run() $this->pin = Yii::app()->request->getPost('pin'); try { - // Check if the user has the Prescribe role, if not throw an exception. + $this->checkIsSecretarySigning(); + + if ($this->is_secretary_signing) { + $user_id = Yii::app()->request->getPost('user_id'); + $this->user = User::model()->findByPk($user_id); + if (!$this->user) { + throw new Exception("An error occurred while trying to fetch your signature. Please contact support."); + } + } else { + $this->user = SignatureHelper::getUserForSigning(); + } + + // Check if the user has the necessary permissions to sign this event, if not throw an exception. if (isset($this->controller->required_user_sign_permissions)){ foreach ($this->controller->required_user_sign_permissions as $permission) { @@ -96,7 +110,6 @@ public function run() } } } - $this->user = SignatureHelper::getUserForSigning(); $this->checkPIN(); $this->getSignatureFile(); } catch (Exception $e) { From ee5646fe4e3b751945997ea10719b42b590ba09f Mon Sep 17 00:00:00 2001 From: Peichun Zhou Date: Mon, 31 Oct 2022 20:02:10 +1100 Subject: [PATCH 24/39] OE-1352 - Disable 'start' button for the prescription step when the current user has no prescribe task (#8664) [protected/controllers/WorklistController.php] * Declared a variable 'has_permission_to_start' and default to true. * When the step is a prescription step, check if the current user has prescribe task, and change the 'has_permission_to_start' accordingly * Pass the 'has_permission_to_start' to the view [protected/views/worklist/steps/generic_step.php] * Disable the 'start' button if the 'has_permission_to_start' variable is false Co-authored-by: Mike Smith --- protected/controllers/WorklistController.php | 9 ++++++++- protected/views/worklist/steps/generic_step.php | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/protected/controllers/WorklistController.php b/protected/controllers/WorklistController.php index 6bb8074a70..139be72566 100644 --- a/protected/controllers/WorklistController.php +++ b/protected/controllers/WorklistController.php @@ -667,6 +667,7 @@ public function actionGetVfPresetData($id) public function actionGetPathStep($partial, $pathstep_id, $visit_id, $pathstep_type_id, $red_flag = false, $interactive = 1) { $wl_patient = WorklistPatient::model()->findByPk($visit_id); + $has_permission_to_start = true; switch ($pathstep_id) { case 'checkin': if ($wl_patient) { @@ -765,6 +766,11 @@ public function actionGetPathStep($partial, $pathstep_id, $visit_id, $pathstep_t Yii::app()->end(); } + // if the step is for prescription, only prescriber has the permission to start it + if (($step instanceof PathwayStep && $step->type->short_name === 'Rx') + || ($step instanceof PathwayTypeStep && $step->step_type->short_name === 'Rx')) { + $has_permission_to_start = Yii::app()->user->checkAccess('TaskPrescribe'); + } if ($step) { $view_file = ($step instanceof PathwayStep ? $step->type->widget_view : $step->step_type->widget_view) ?? 'generic_step'; $dom = $this->renderPartial( @@ -774,7 +780,8 @@ public function actionGetPathStep($partial, $pathstep_id, $visit_id, $pathstep_t 'worklist_patient' => $wl_patient, 'patient' => $wl_patient->patient, 'partial' => $partial, - 'red_flag' => $red_flag + 'red_flag' => $red_flag, + 'has_permission_to_start' => $has_permission_to_start ), true ); diff --git a/protected/views/worklist/steps/generic_step.php b/protected/views/worklist/steps/generic_step.php index 1768f24635..14491728b0 100644 --- a/protected/views/worklist/steps/generic_step.php +++ b/protected/views/worklist/steps/generic_step.php @@ -5,6 +5,7 @@ * @var $patient Patient * @var $red_flag bool * @var $partial bool + * @var $has_permission_to_start bool */ use OEModule\OphCiExamination\models\OphCiExamination_AE_RedFlags_Options; @@ -182,7 +183,12 @@
-
- radioButtons($this, 'is_patient_called', [0=>'No',1=>'Yes'], - $this->is_patient_called, - false, - false, - false, - false, + isPatientCalledFormFields( array( 'text-align' => 'right', 'nowrapper' => true, From 9cb598899eeecbe2a58f38a7a6856ec00708e857 Mon Sep 17 00:00:00 2001 From: imas8888 <35904771+imas8888@users.noreply.github.com> Date: Tue, 1 Nov 2022 00:40:23 +0000 Subject: [PATCH 29/39] [OE-13829] - Removing signature before deleting med-management element (#8653) --- .../models/MedicationManagement.php | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/protected/modules/OphCiExamination/models/MedicationManagement.php b/protected/modules/OphCiExamination/models/MedicationManagement.php index bbb71a205f..cf81d47839 100644 --- a/protected/modules/OphCiExamination/models/MedicationManagement.php +++ b/protected/modules/OphCiExamination/models/MedicationManagement.php @@ -184,7 +184,7 @@ public function getEntriesStartingInFuture() * gets stopped Medication Management entries * @return MedicationManagementEntry[] */ - public function getStoppedEntries() : array + public function getStoppedEntries(): array { return array_filter($this->visible_entries, function ($e) { return !is_null($e->end_date) && $e->is_discontinued && $e->stopped_in_event_id === $e->event_id; @@ -195,7 +195,7 @@ public function getStoppedEntries() : array * Gets NOT stopped Medication Management entries * @return MedicationManagementEntry[] */ - public function getNotStoppedEntries() : array + public function getNotStoppedEntries(): array { $stopped_ids = $this->getStoppedEntryIds(); $collection = new \ModelCollection($this->visible_entries); @@ -207,7 +207,7 @@ public function getNotStoppedEntries() : array * gets changed Medication Management entries * @return MedicationManagementEntry[] */ - public function getChangedEntries() : array + public function getChangedEntries(): array { $stopped_entry_ids = $this->getStoppedEntryIds(); return array_filter($this->visible_entries, function ($e) use ($stopped_entry_ids) { @@ -236,7 +236,7 @@ public function getChangedEntries() : array $criteria->params['latest_med_use_id'] = $e->prescription_item_id ?? $e->id; $past_medication_history_entries_count = EventMedicationUse::model()->count($criteria); - return !empty($past_entries) || $past_medication_history_entries_count !== "0" && !in_array($e->id, $stopped_entry_ids) ; + return !empty($past_entries) || $past_medication_history_entries_count !== "0" && !in_array($e->id, $stopped_entry_ids); }); } @@ -244,7 +244,7 @@ public function getChangedEntries() : array * gets changed entry ids * @return array */ - private function getChangedEntriesIds() : array + private function getChangedEntriesIds(): array { $changed_entries = $this->getChangedEntries(); $ids = []; @@ -259,7 +259,7 @@ private function getChangedEntriesIds() : array * gets changed entry ids * @return array */ - private function getStoppedEntryIds() : array + private function getStoppedEntryIds(): array { $stopped_entries = $this->getStoppedEntries(); $ids = []; @@ -657,6 +657,15 @@ public function getEntries() return $this->entries; } + public function beforeDelete() + { + foreach ($this->signatures as $signature) { + $signature->deletePrevSignature(); + } + + parent::beforeDelete(); + } + public function afterDelete() { foreach ($this->entries as $entry) { @@ -738,16 +747,14 @@ public function getUnsignedMessage(): string */ public function usesEsignDevice(): bool { - return !empty( - array_filter ($this->signatures, function ($signature) { + return !empty(array_filter($this->signatures, function ($signature) { return $signature->usesEsignDevice(); - }) - ); + })); } /** - * @param array $elements - */ + * @param array $elements + */ public function eventScopeValidation(array $elements) { $elements = array_filter( From 1095c0e6fd0872f8a3f80b78048a217da4125914 Mon Sep 17 00:00:00 2001 From: imas8888 <35904771+imas8888@users.noreply.github.com> Date: Tue, 1 Nov 2022 00:41:31 +0000 Subject: [PATCH 30/39] [OE-13834] - Allowing delete with Edit permission (#8654) --- .../OphInGeneticresults/controllers/DefaultController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/modules/OphInGeneticresults/controllers/DefaultController.php b/protected/modules/OphInGeneticresults/controllers/DefaultController.php index f810a4e80a..48af173bc9 100644 --- a/protected/modules/OphInGeneticresults/controllers/DefaultController.php +++ b/protected/modules/OphInGeneticresults/controllers/DefaultController.php @@ -9,7 +9,7 @@ public function accessRules() { return array( array('allow', - 'actions' => array('Create', 'Update', 'View', 'Print'), + 'actions' => array('Create', 'Update', 'View', 'Print', 'Delete'), 'roles' => array('OprnEditGeneticResults'), ), array('allow', From 3737ee9afa882c8bf658a417c69d5b0f5d2793f5 Mon Sep 17 00:00:00 2001 From: splatEric Date: Tue, 1 Nov 2022 21:49:36 +1000 Subject: [PATCH 31/39] tests: support for user factory auth items and password authentication --- cypress/support/yii-commands.js | 24 +++++++ protected/factories/ModelFactory.php | 14 +++-- .../models/UserAuthenticationFactory.php | 6 ++ protected/factories/models/UserFactory.php | 63 ++++++++++++++++--- .../models/InstitutionAuthentication.php | 5 +- protected/models/User.php | 5 +- protected/models/UserAuthentication.php | 5 +- protected/modules/CypressHelper/README.md | 9 +++ .../controllers/DefaultController.php | 21 +++++++ 9 files changed, 138 insertions(+), 14 deletions(-) create mode 100644 protected/modules/CypressHelper/README.md diff --git a/cypress/support/yii-commands.js b/cypress/support/yii-commands.js index 7d908e1766..ddccf074db 100644 --- a/cypress/support/yii-commands.js +++ b/cypress/support/yii-commands.js @@ -1,3 +1,26 @@ +Cypress.Commands.add('createUser', (authitems, attributes, username, password) => { + let data = { + authitems: authitems + } + if (attributes !== undefined) { + data.attributes = attributes + } + if (username !== undefined) { + data.username = username; + } + if (password !== undefined) { + data.password = password; + } + + return cy.request({ + method: 'POST', + form: true, + url: 'CypressHelper/Default/createUser', + body: data + }) + .its('body'); +}); + Cypress.Commands.add('login', (username, password) => { if (password == undefined) { password = 'admin'; @@ -7,6 +30,7 @@ Cypress.Commands.add('login', (username, password) => { } return cy.request({ method: 'POST', + form: true, url: 'CypressHelper/Default/login', body: { username: username, diff --git a/protected/factories/ModelFactory.php b/protected/factories/ModelFactory.php index b4845943df..17fd8a4834 100644 --- a/protected/factories/ModelFactory.php +++ b/protected/factories/ModelFactory.php @@ -334,15 +334,21 @@ protected function persist(array $instances) } foreach ($instances as $instance) { - // as a lower level interaction with the models, we assume that the eventual - // set of data being created will be valid. Therefore we don't perform validation - // during the model saves. - if ($instance->isNewRecord && !$instance->save(false)) { + if ($instance->isNewRecord && !$this->persistInstance($instance)) { throw new CannotSaveModelException($instance->getErrors(), $instance->getAttributes()); } } } + protected function persistInstance($instance): bool + { + // as a lower level interaction with the models, we assume that the eventual + // set of data being created will be valid. Therefore we don't perform validation + // during the model saves. We abstract this though so that specific factories can + // validate. + return $instance->save(false); + } + protected function callAfterMaking(array $instances) { foreach ($instances as $instance) { diff --git a/protected/factories/models/UserAuthenticationFactory.php b/protected/factories/models/UserAuthenticationFactory.php index ea920f00bd..1b56ca97c2 100644 --- a/protected/factories/models/UserAuthenticationFactory.php +++ b/protected/factories/models/UserAuthenticationFactory.php @@ -41,4 +41,10 @@ public function forUser($user) ]; }); } + + public function persistInstance($instance): bool + { + // need to validate to leverage the before and after validate hooks + return $instance->save(true); + } } diff --git a/protected/factories/models/UserFactory.php b/protected/factories/models/UserFactory.php index 1613f48902..d6b990126b 100644 --- a/protected/factories/models/UserFactory.php +++ b/protected/factories/models/UserFactory.php @@ -15,17 +15,12 @@ namespace OE\factories\models; +use InstitutionAuthentication; use OE\factories\ModelFactory; +use UserAuthentication; -/** - * UserFactory - * - * The functionality for this factory will need to be expanded as its use increases. It's initial - * implementation simply provides a basic definition for populating the database - */ class UserFactory extends ModelFactory { - /** * * @return array @@ -41,4 +36,58 @@ public function definition(): array 'has_selected_firms' => 0 ]; } + + /** + * Define the auth items to be assigned to the user. Some notes on this are provided for reference + * in the CypressHelper readme + * + * @param array $authitems + * @return self + */ + public function withAuthItems(array $authitems = []): self + { + return $this->afterCreating(function (\User $user) use ($authitems) { + foreach ($authitems as $authitem) { + $this->app->authManager->assign($authitem, $user->id); + } + }); + } + + /** + * This state allows for creating Users that can actually login through the application + * + * @param \Institution $institution + * @param string $password + * @return self + */ + public function withLocalAuthForInstitution(\Institution $institution, string $password = 'password'): self + { + return $this->afterCreating(function (\User $user) use ($password, $institution) { + // we are leveraging the validation behaviour of the UserAuthentication + // class, which checks the password strength. So we reset the value + // prior to creating the instance, and thereby allow simple passwords + // for testing purposes + $default_settings = $this->app->params['pw_restrictions']; + $this->app->setParams([ + 'pw_restrictions' => [ + 'strength_regex' => '%\w*%' + ] + ]); + + UserAuthentication::factory()->create([ + 'user_id' => $user->id, + 'institution_authentication_id' => InstitutionAuthentication::factory()->useExisting([ + 'institution_id' => $institution->id, + 'user_authentication_method' => 'LOCAL' + ]), + 'password' => $password, + 'password_repeat' => $password + ]); + + // restore the normal password rules for consistency + $this->app->setParams([ + 'pw_restrictions' => $default_settings + ]); + }); + } } diff --git a/protected/models/InstitutionAuthentication.php b/protected/models/InstitutionAuthentication.php index 2d4ea96ec0..c57977c9b9 100644 --- a/protected/models/InstitutionAuthentication.php +++ b/protected/models/InstitutionAuthentication.php @@ -1,5 +1,4 @@ withAuthItems($authitems) + ->withLocalAuthForInstitution(Institution::model()->findByPk($institution_id), $password) + ->create($attributes); + + $this->sendJsonResponse([ + 'user_id' => $user->id, + 'username' => $user->authentications[0]->username, + 'password' => $password + ]); + } + public function actionCreateEvent($moduleName) { /** @var \Event */ From 6acd79c824da4aa154e6e03f7c3768f5dd6a6524 Mon Sep 17 00:00:00 2001 From: Dorina Keresztesi <50053502+kerdorina@users.noreply.github.com> Date: Tue, 1 Nov 2022 01:31:51 +0100 Subject: [PATCH 32/39] OE-13724: Fix TherapyApplication Submit print out (#8535) --- .../controllers/DefaultController.php | 31 ++++++++ .../OphCoTherapyapplication_Processor.php | 76 +++++++++++++------ 2 files changed, 83 insertions(+), 24 deletions(-) diff --git a/protected/modules/OphCoTherapyapplication/controllers/DefaultController.php b/protected/modules/OphCoTherapyapplication/controllers/DefaultController.php index dd4ad8c983..8d9b585b2d 100644 --- a/protected/modules/OphCoTherapyapplication/controllers/DefaultController.php +++ b/protected/modules/OphCoTherapyapplication/controllers/DefaultController.php @@ -23,6 +23,8 @@ class DefaultController extends BaseEventTypeController 'downloadFileCollection' => self::ACTION_TYPE_VIEW, 'getDecisionTree' => self::ACTION_TYPE_FORM, 'getVABaseValues' => self::ACTION_TYPE_FORM, + 'renderPdfForSide' => self::ACTION_TYPE_PRINT, + 'renderPreviewPdf' => self::ACTION_TYPE_PRINT, ); // TODO: check this is in line with Jamie's change circa 3rd April 2013 @@ -103,6 +105,35 @@ public function actionProcessApplication() $this->redirect(array($this->successUri)); } + public function actionRenderPdfForSide($event_id) + { + $request = $this->getApp()->getRequest(); + $event = Event::model()->findByPk($request->getQuery('event_id')); + if (!$side = $request->getQuery('side')) { + throw new CHttpException(400, 'Invalid request.'); + } + if (!Eye::model()->find('name=?', array(ucwords($side)))) { + throw new CHttpException(404, 'Eye not found.'); + } + + + $service = new OphCoTherapyapplication_Processor($event); + $html = $service->renderPdfForSide($this, $side); + + echo $html; + } + + public function actionRenderPreviewPdf($event_id) + { + $request = $this->getApp()->getRequest(); + $event = Event::model()->findByPk($request->getQuery('event_id')); + + $service = new OphCoTherapyapplication_Processor($event); + $html = $service->renderPreviewPdf($this); + + echo $html; + } + public function actionDownloadFileCollection($id) { if ($collection = OphCoTherapyapplication_FileCollection::model()->findByPk((int) $id)) { diff --git a/protected/modules/OphCoTherapyapplication/services/OphCoTherapyapplication_Processor.php b/protected/modules/OphCoTherapyapplication/services/OphCoTherapyapplication_Processor.php index f8d9bd696a..31bc6a848c 100644 --- a/protected/modules/OphCoTherapyapplication/services/OphCoTherapyapplication_Processor.php +++ b/protected/modules/OphCoTherapyapplication/services/OphCoTherapyapplication_Processor.php @@ -173,25 +173,6 @@ public function generatePreviewPdf($controller) Yii::app()->puppeteer->leftMargin = '10mm'; Yii::app()->puppeteer->rightMargin = '10mm'; - $ec = $this->getElement('Element_OphCoTherapyapplication_ExceptionalCircumstances'); - if (!$ec) { - throw new Exception("Exceptional circumstances not found for event ID {$this->event->id}"); - } - - $template_data = $this->getTemplateData(); - - $html = ''; - - if ($ec->hasLeft()) { - $left_template_data = $template_data + $this->getSideSpecificTemplateData('left'); - $html .= $this->getPDFContentForSide($controller, $left_template_data, 'left'); - } - - if ($ec->hasRight()) { - $right_template_data = $template_data + $this->getSideSpecificTemplateData('right'); - $html .= $this->getPDFContentForSide($controller, $right_template_data, 'right'); - } - $this->event->lock(); if (!$this->event->hasPDF('therapy_application') || @$_GET['html']) { @@ -202,7 +183,13 @@ public function generatePreviewPdf($controller) $wk->setPatient($this->event->episode->patient); $wk->setBarcode($this->event->barcodeSVG); - $wk->savePageToPDF($this->event->imageDirectory, 'event', 'therapy_application', $html, false); + $wk->savePageToPDF( + $this->event->imageDirectory, + 'event', + 'therapy_application', + 'http://localhost/OphCoTherapyapplication/default/renderPreviewPdf?event_id=' . $this->event->id, + false + ); } $this->event->unlock(); @@ -305,6 +292,43 @@ private function getViewPath() return Yii::app()->getModule('OphCoTherapyapplication')->getViewPath() . DIRECTORY_SEPARATOR . 'email'; } + public function renderPdfForSide(CController $controller, $side) + { + $template_data = $this->getTemplateData(); + $template_data += $this->getSideSpecificTemplateData($side); + + $html = null; + if ($html = $this->getPDFContentForSide($controller, $template_data, $side)) { + $html = '' . "\n" . $html; + } + + return $html; + } + + public function renderPreviewPdf(CController $controller) + { + $ec = $this->getElement('Element_OphCoTherapyapplication_ExceptionalCircumstances'); + if (!$ec) { + throw new Exception("Exceptional circumstances not found for event ID {$this->event->id}"); + } + + $template_data = $this->getTemplateData(); + + $html = ''; + + if ($ec->hasLeft()) { + $left_template_data = $template_data + $this->getSideSpecificTemplateData('left'); + $html .= $this->getPDFContentForSide($controller, $left_template_data, 'left'); + } + + if ($ec->hasRight()) { + $right_template_data = $template_data + $this->getSideSpecificTemplateData('right'); + $html .= $this->getPDFContentForSide($controller, $right_template_data, 'right'); + } + + return $html; + } + /** * create the PDF file as a ProtectedFile for the given side. * @@ -318,9 +342,7 @@ private function getViewPath() */ protected function createAndSavePdfForSide(CController $controller, array $template_data, $side) { - if ($html = $this->getPDFContentForSide($controller, $template_data, $side)) { - $html = '' . "\n" . $html; - + if (!is_null($this->renderPdfForSide($controller, $side))) { $this->event->lock(); if (!$this->event->hasPDF('therapy_application')) { @@ -331,7 +353,13 @@ protected function createAndSavePdfForSide(CController $controller, array $templ $wk->setPatient($this->event->episode->patient); $wk->setBarcode($this->event->barcodeSVG); - $wk->savePageToPDF($this->event->imageDirectory, 'event', 'therapy_application', $html, false); + $wk->savePageToPDF( + $this->event->imageDirectory, + 'event', + 'therapy_application', + 'http://localhost/OphCoTherapyapplication/default/renderPdfForSide?event_id=' . $this->event->id . '&side='.$side, + false + ); } $this->event->unlock(); From eaac9594d4721af63b57f524651937f144f81478 Mon Sep 17 00:00:00 2001 From: Dorina Keresztesi <50053502+kerdorina@users.noreply.github.com> Date: Tue, 1 Nov 2022 01:27:11 +0100 Subject: [PATCH 33/39] OE-13772: Display options for the Context dropdown in Theatre Diaries (#8643) Co-authored-by: kerdorina --- .../OphTrOperationbooking/views/theatreDiary/side_panel.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protected/modules/OphTrOperationbooking/views/theatreDiary/side_panel.php b/protected/modules/OphTrOperationbooking/views/theatreDiary/side_panel.php index 60a7f98179..67f0f630fa 100644 --- a/protected/modules/OphTrOperationbooking/views/theatreDiary/side_panel.php +++ b/protected/modules/OphTrOperationbooking/views/theatreDiary/side_panel.php @@ -70,8 +70,9 @@ 'All ' . Firm::model()->contextLabel() . 's'], array('disabled' => 'disabled', 'class' => 'cols-full')) ?> + session['selected_institution_id']; ?> request->getPost('firm-id', 'All'), - ['All' => 'All ' . Firm::model()->contextLabel() . 's'] + Firm::model()->getList($subspecialty_id), array( + ['All' => 'All ' . Firm::model()->contextLabel() . 's'] + Firm::model()->getList($institution_id, $subspecialty_id), array( 'disabled' => ($emergency_list == 1 ? 'disabled' : ''), 'class' => 'cols-full' )) ?> From f2b4a3c48856d5bb2f648f4e0e2ee58870320654 Mon Sep 17 00:00:00 2001 From: splatEric Date: Wed, 2 Nov 2022 11:52:08 +1000 Subject: [PATCH 34/39] test: ensure password set for user authentication factory --- protected/factories/models/UserAuthenticationFactory.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/protected/factories/models/UserAuthenticationFactory.php b/protected/factories/models/UserAuthenticationFactory.php index 1b56ca97c2..297c882011 100644 --- a/protected/factories/models/UserAuthenticationFactory.php +++ b/protected/factories/models/UserAuthenticationFactory.php @@ -29,7 +29,10 @@ public function definition(): array return [ 'institution_authentication_id' => ModelFactory::factoryFor(InstitutionAuthentication::class), 'user_id' => ModelFactory::factoryFor(User::class), - 'username' => $this->faker->userName() + 'username' => $this->faker->userName(), + // because we validate when saving with this factory, we must provide password + 'password' => 'password', + 'password_repeat' => 'password' ]; } From 860c41818a2fc9cd7867aa9d0196e439c02ee185 Mon Sep 17 00:00:00 2001 From: Maria Laura Bisogno <47662871+MallyDev@users.noreply.github.com> Date: Wed, 2 Nov 2022 14:49:26 +0100 Subject: [PATCH 35/39] OE-13770 delete entries if element is deleted (#8629) Co-authored-by: Justinas Cepkauskas --- .../OphCiExamination/models/HistoryMedications.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/protected/modules/OphCiExamination/models/HistoryMedications.php b/protected/modules/OphCiExamination/models/HistoryMedications.php index 0ddf986b9b..c43c782668 100644 --- a/protected/modules/OphCiExamination/models/HistoryMedications.php +++ b/protected/modules/OphCiExamination/models/HistoryMedications.php @@ -251,4 +251,13 @@ function ($entry) { return $untracked; } + + public function afterDelete() + { + foreach ($this->entries as $entry) { + $entry->delete(); + } + + parent::afterDelete(); + } } From bdbe12a800c9b9a22447ad11ce6211e9414bd722 Mon Sep 17 00:00:00 2001 From: sabi1981 Date: Wed, 2 Nov 2022 17:07:51 +0100 Subject: [PATCH 36/39] OE-13662 - fix compLog Contact lens replace (#8683) (#8685) --- protected/modules/OphCiExamination/assets/js/CompLog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/modules/OphCiExamination/assets/js/CompLog.js b/protected/modules/OphCiExamination/assets/js/CompLog.js index d2cae86f5b..3268f110cf 100644 --- a/protected/modules/OphCiExamination/assets/js/CompLog.js +++ b/protected/modules/OphCiExamination/assets/js/CompLog.js @@ -142,7 +142,7 @@ CompLogConnection.prototype.convertHl7ToArray = function(hl7Data){ if(measurements[0][i+2].substring(0,8) === today){ measurement = {side: "", method: "", logmar: "", snellen: "", base: ""}; measurement.side = measurements[0][i+4].toLowerCase(); - measurement.method = measurements[0][i+5].replace("Usual ","").replace(/Lenses|Lens/, "lens").replace("Best Corrected", "Glasses"); + measurement.method = measurements[0][i+5].replace("Usual ","").replace(/Lenses/, "Lens").replace("Best Corrected", "Glasses"); measurement.base = measurements[0][i+7]; measurement.logmar = measurements[0][i+8].substring(0, measurements[0][i+8].length - 1).replace("(","").replace(")",""); measurement.snellen = measurements[0][i+11].replace(".0","").replace("(","").replace(")",""); From adc8679e3f88544f563725364e5275bfce3279fd Mon Sep 17 00:00:00 2001 From: Peichun Zhou Date: Thu, 3 Nov 2022 10:53:48 +1100 Subject: [PATCH 37/39] fix/OE-13704: Fixed '+' button not displaying issue (#8648) * fix/OE-13704: Fixed '+' button not displaying issue [protected/models/Medication.php] * Changed listCommonDrops and listCommonOralMedications function signatures to accept subspecialty id and site id as parameters [protected/modules/OphCiExamination/widgets/DrugAdministration.php] * Calling getMedicationOptions from OphDrPGDPSD_API when the current user has the permission to add medications in the drug administration element * Added comments [protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php] * Re-organized the code. Return empty array when there is no firm id * Passing site id and subspecialty id to get the medication lists [protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php] * Using the existing Yii instance from the parent, instead of the static call * Removed unnecessary firm id null check Co-authored-by: Toby Bisco Co-authored-by: Mike Smith --- protected/models/Medication.php | 8 ++--- .../widgets/DrugAdministration.php | 16 ++++++++-- .../components/OphDrPGDPSD_API.php | 31 +++++++++++++------ 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/protected/models/Medication.php b/protected/models/Medication.php index 5d13a62736..476545005d 100644 --- a/protected/models/Medication.php +++ b/protected/models/Medication.php @@ -458,14 +458,14 @@ public function listCommonSystemicMedications($raw = false, $subspecialty_id = n return $this->listByUsageCode("COMMON_SYSTEMIC", $subspecialty_id, $raw, $site_id, $prescribable_filter); } - public function listCommonDrops($subspecialty_id, $raw = false, $prescribable_filter = false) + public function listCommonDrops($subspecialty_id = null, $raw = false, $site_id = null, $prescribable_filter = false) { - return $this->listByUsageCode("COMMON_EYE_DROPS", $subspecialty_id, $raw, null); + return $this->listByUsageCode("COMMON_EYE_DROPS", $subspecialty_id, $raw, $site_id, $prescribable_filter); } - public function listCommonOralMedications($raw = false, $prescribable_filter = false) + public function listCommonOralMedications($subspecialty_id = null, $raw = false, $site_id = null, $prescribable_filter = false) { - return $this->listByUsageCode("COMMON_ORAL_MEDS", null, $raw, null, $prescribable_filter); + return $this->listByUsageCode("COMMON_ORAL_MEDS", $subspecialty_id, $raw, $site_id, $prescribable_filter); } public function listOphthalmicMedicationIds() diff --git a/protected/modules/OphCiExamination/widgets/DrugAdministration.php b/protected/modules/OphCiExamination/widgets/DrugAdministration.php index bddc6ef6f7..bff7dbcbab 100644 --- a/protected/modules/OphCiExamination/widgets/DrugAdministration.php +++ b/protected/modules/OphCiExamination/widgets/DrugAdministration.php @@ -105,10 +105,22 @@ public function getViewData() return strtotime($appt1->when) > strtotime($appt2->when); }); } - if ($can_add_presets) { + /** + * if the current user has the permission to add individual medications + * then get the medication lists + */ + if ($can_add_meds) { $pgdpsd_api = \Yii::app()->moduleAPI->get('OphDrPGDPSD'); $medication_options = $pgdpsd_api->getMedicationOptions(); - + } + /** + * if the current user has the permission to add presets + * then get the presets, and process the list to be compatible with adder popup + * then split the list into PSD and PGD + * PSD will only display for the users with the Prescribe permission + * PGD will display for nominated users and the users with the Prescribe permission + */ + if ($can_add_presets) { $presets = \OphDrPGDPSD_PGDPSD::model()->findAll("active = 1 AND LOWER(type) IN ('psd', 'pgd')"); foreach ($presets as $preset) { $med_names = array_map(static function ($med) { diff --git a/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php b/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php index 8987d85b0b..e01c1d6d29 100644 --- a/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php +++ b/protected/modules/OphDrPGDPSD/components/OphDrPGDPSD_API.php @@ -53,21 +53,32 @@ protected function processMedsData($medication) $medication['preferred_term'] = $medication['label']; return $medication; } + + /** + * Get systemic, ophthalmic, drop and oral medications + * and process them to be compatible with adder popup in the drug administration element + * + * The medications will come from the relevant drug sets based on current site and subspecialty + * + * @return array + */ public function getMedicationOptions() { - $common_systemic = \Medication::model()->listCommonSystemicMedications(true, true); $firm_id = $this->yii->session->get('selected_firm_id'); $site_id = $this->yii->session->get('selected_site_id'); - if ($firm_id) { - /** @var Firm $firm */ - $firm = $firm_id ? \Firm::model()->findByPk($firm_id) : null; - $subspecialty_id = $firm->getSubspecialtyID(); - $common_ophthalmic = \Medication::model()->listBySubspecialtyWithCommonMedications($subspecialty_id, true, $site_id, true); - } else { - $common_ophthalmic = array(); + + // if no firm id, return empty medication list + if (!$firm_id) { + return []; } - $common_drops = \Medication::model()->listCommonDrops($subspecialty_id, true, true); - $common_oral = \Medication::model()->listCommonOralMedications(true, true); + + $firm = \Firm::model()->findByPk($firm_id); + $subspecialty_id = $firm->getSubspecialtyID(); + + $common_systemic = \Medication::model()->listCommonSystemicMedications(true, $subspecialty_id, $site_id); + $common_ophthalmic = \Medication::model()->listBySubspecialtyWithCommonMedications($subspecialty_id, true, $site_id); + $common_drops = \Medication::model()->listCommonDrops($subspecialty_id, true, $site_id); + $common_oral = \Medication::model()->listCommonOralMedications($subspecialty_id, true, $site_id); $common_systemic = array_map(function ($comm_sys) { $comm_sys['category'] = 'systemic'; From 951f0b573b60662c3d6092345302c40f73d83466 Mon Sep 17 00:00:00 2001 From: Peichun Zhou Date: Thu, 3 Nov 2022 21:32:42 +1100 Subject: [PATCH 38/39] fix/OE-13790: Fixed the issue when the user click the 'change' button (#8665) * fix/OE-13790: Fixed the issue when the user click the 'change' button * The issue occurs when the user clicks the 'change' button before starting a pathway. [protected/models/Pathway.php] * Default the wait_time to 0 * Perform the calcualtion only when the start time is valid --- protected/models/Pathway.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protected/models/Pathway.php b/protected/models/Pathway.php index da11972880..1eb2f6a395 100644 --- a/protected/models/Pathway.php +++ b/protected/models/Pathway.php @@ -468,7 +468,7 @@ public function getWaitTimeSinceLastAction(): array } $end_time = new DateTime(); - $wait_time = floor(($end_time->getTimestamp() - $start_time->getTimestamp()) / 60); + $wait_time = $start_time === false ? 0 : floor(($end_time->getTimestamp() - $start_time->getTimestamp()) / 60); return array( 'wait_time' => $wait_time, From 4418c709f27cb42430da145d2d8540b2bb683a79 Mon Sep 17 00:00:00 2001 From: biskyt Date: Thu, 3 Nov 2022 21:54:20 +1100 Subject: [PATCH 39/39] Updated version, cachebuster --- protected/config/core/common.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protected/config/core/common.php b/protected/config/core/common.php index ec3df810ee..fa8a4f7bf7 100644 --- a/protected/config/core/common.php +++ b/protected/config/core/common.php @@ -803,7 +803,7 @@ 'default_patient_import_subspecialty' => 'GL', // Add elements that need to be excluded from the admin sidebar in settings 'exclude_admin_structure_param_list' => getenv('OE_EXCLUDE_ADMIN_STRUCT_LIST') ? explode(",", getenv('OE_EXCLUDE_ADMIN_STRUCT_LIST')) : array(''), - 'oe_version' => 'UNRELEASED', + 'oe_version' => '6.4.1', 'gp_label' => !empty(trim(getenv('OE_GP_LABEL'))) ? getenv('OE_GP_LABEL') : null, 'general_practitioner_label' => !empty(trim(getenv('OE_GENERAL_PRAC_LABEL'))) ? getenv('OE_GENERAL_PRAC_LABEL') : null, // allow duplicate entries on an automatic worklist for a patient (default = false) @@ -1042,7 +1042,7 @@ $caches = array( 'cacheBuster' => array( 'class' => 'CacheBuster', - 'time' => '20221004170650', + 'time' => '20221103215419', ), );