From 4da3bd1d3d36dd02adae94e3e234572d3c737a99 Mon Sep 17 00:00:00 2001 From: Schneider Roland Date: Tue, 26 Jul 2022 07:51:23 +0200 Subject: [PATCH] add contract modifications --- frontend/controllers/ContractController.php | 182 +++++++++--------- frontend/views/contract/_contract.php | 74 ++++--- .../images/cutler_contract_pdf_header_2.jpg | Bin 0 -> 29826 bytes 3 files changed, 133 insertions(+), 123 deletions(-) create mode 100644 frontend/web/images/cutler_contract_pdf_header_2.jpg diff --git a/frontend/controllers/ContractController.php b/frontend/controllers/ContractController.php index cf45042..400ddf3 100644 --- a/frontend/controllers/ContractController.php +++ b/frontend/controllers/ContractController.php @@ -25,21 +25,21 @@ use frontend\models\ContractForm; */ class ContractController extends Controller { public function behaviors() { - return [ - 'verbs' => [ + return [ + 'verbs' => [ 'class' => VerbFilter::className (), - 'actions' => [ - 'delete' => [ - 'post' + 'actions' => [ + 'delete' => [ + 'post' ], - 'payout' => [ - 'post' + 'payout' => [ + 'post' ], - 'cancel' => [ - 'post' - ] - ] - ] + 'cancel' => [ + 'post' + ] + ] + ] ]; } @@ -51,18 +51,18 @@ class ContractController extends Controller { */ public function actionIndex($id_card) { $card = Card::findOne ( $id_card ); - + if (! isset ( $card )) throw new NotFoundHttpException ( 'A bérlet nem található' ); - + $searchModel = new ContractSearch (); $searchModel->card = $card; $searchModel->customer = $card->customer; $dataProvider = $searchModel->search ( Yii::$app->request->queryParams ); - - return $this->render ( 'index', [ + + return $this->render ( 'index', [ 'searchModel' => $searchModel, - 'dataProvider' => $dataProvider + 'dataProvider' => $dataProvider ] ); } @@ -77,20 +77,20 @@ class ContractController extends Controller { $model = $this->findModel ( $id ); $customer = $model->customer; $card = $customer->card; - - $installments = TicketInstallmentRequest::find ()->andWhere ( [ - 'id_contract' => $model->id_contract - ] )->orderBy ( [ - 'ticket_installment_request.priority' => SORT_ASC + + $installments = TicketInstallmentRequest::find ()->andWhere ( [ + 'id_contract' => $model->id_contract + ] )->orderBy ( [ + 'ticket_installment_request.priority' => SORT_ASC ] )->all (); - - return $this->render ( 'view', [ + + return $this->render ( 'view', [ 'model' => $model, 'intstallments' => $installments, - 'card' => $card + 'card' => $card ] ); } - + /** * Creates a new Contract model. * If creation is successful, the browser will be redirected to the 'view' page. @@ -99,15 +99,15 @@ class ContractController extends Controller { */ public function actionCreate() { $model = new Contract (); - + if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { - return $this->redirect ( [ + return $this->redirect ( [ 'view', - 'id' => $model->id_contract + 'id' => $model->id_contract ] ); } else { - return $this->render ( 'create', [ - 'model' => $model + return $this->render ( 'create', [ + 'model' => $model ] ); } } @@ -122,15 +122,15 @@ class ContractController extends Controller { */ public function actionUpdate($id) { $model = $this->findModel ( $id ); - + if ($model->load ( Yii::$app->request->post () ) && $model->save ()) { - return $this->redirect ( [ + return $this->redirect ( [ 'view', - 'id' => $model->id_contract + 'id' => $model->id_contract ] ); } else { - return $this->render ( 'update', [ - 'model' => $model + return $this->render ( 'update', [ + 'model' => $model ] ); } } @@ -146,12 +146,12 @@ class ContractController extends Controller { */ public function actionDelete($id) { $this->findModel ( $id )->delete (); - - return $this->redirect ( [ - 'index' + + return $this->redirect ( [ + 'index' ] ); } - + /** * EGY RÉSZLET KIFIZETÉSE */ @@ -160,33 +160,33 @@ class ContractController extends Controller { $contract = $part->contract; $customer = $contract->customer; $card = $customer->card; - + $connection = \Yii::$app->db; $transaction = $connection->beginTransaction (); try { - + $result = Transfer::sellContractTicket ( $contract, $part, Account::readDefaultObject (), Transfer::STATUS_NOT_PAID, Transfer::PAYMENT_METHOD_CASH, true ); $transfer = $result [0]; $ticket = $result [1]; if ($part->status != TicketInstallmentRequest::$STATUS_REJECTED) { $contract->part_required = $contract->part_required + 1; } - + $contract->part_paid = $contract->part_paid + 1; - + if ($contract->part_paid >= $contract->part_required) { $contract->status = Contract::$STATUS_PAID; } else { $contract->status = Contract::$STATUS_NOT_PAID; } - + $contract->save ( false ); - + $part->status = TicketInstallmentRequest::$STATUS_ACCEPTED_MANUAL; $part->id_transfer = $transfer->id_transfer; $part->request_processed_at = Helper::getDateTimeString (); $part->id_ticket = $ticket->id_ticket; - + $part->save ( false ); $transaction->commit (); \Yii::$app->session->setFlash ( 'success', "Részlet a bevásárló kosárba helyezve!" ); @@ -194,10 +194,10 @@ class ContractController extends Controller { $transaction->rollback (); Yii::error ( "Nem sikerült a kifizetés." ); } - - return $this->redirect ( [ + + return $this->redirect ( [ 'view', - 'id' => $contract->id_contract + 'id' => $contract->id_contract ] ); } @@ -211,26 +211,26 @@ class ContractController extends Controller { */ public function actionCancel($id,$flag) { $contract = $this->findModel ( $id ); - + if ( $flag != Contract::$FLAG_CANCELED && $flag != Contract::$FLAG_CANCELED_2){ \Yii::error("A felmondási státusz nem található! ($flag)"); throw new NotFoundHttpException("Az oldal nem található!"); - + } - + $customer = $contract->customer; $card = $customer->card; - + if ($contract->canCancel ()) { $connection = \Yii::$app->db; $transaction = $connection->beginTransaction (); try { - + $contract->flag = $flag; $contract->save (); $requests = $contract->requests; $buntetes = 0; - + foreach ( $requests as $request ) { /** @var \common\models\TicketInstallmentRequest $request*/ if ($request->isStatusAccepted ()) { @@ -240,15 +240,15 @@ class ContractController extends Controller { $request->save ( false ); } } - - $productBuntetes = Product::find ()->andWhere ( [ - 'product_number' => Product::$BUNTETES + + $productBuntetes = Product::find ()->andWhere ( [ + 'product_number' => Product::$BUNTETES ] )->one (); // if there is a fee , generate fee and put it to the shopping cart if (isset ( $productBuntetes )) { if ($buntetes > 0) { - + $sale = new Sale (); $sale->id_account = Account::readDefault (); $sale->id_product = $productBuntetes->id_product; @@ -258,29 +258,29 @@ class ContractController extends Controller { $sale->count = $buntetes; $sale->money = $buntetes * $sale->item_price; $sale->id_user = \Yii::$app->user->id; - + $sale->save ( false ); - + $transfer = Transfer::createProductTransfer ( $sale, Account::readDefaultObject (), null, null, $sale->count, $productBuntetes, Transfer::STATUS_NOT_PAID, $customer ); $transfer->payment_method = Transfer::PAYMENT_METHOD_CASH; - + $transfer->id_user = Yii::$app->user->id; - + $transfer->save ( false ); - + $cart = new ShoppingCart (); $cart->id_customer = $customer->id_customer; $cart->id_transfer = $transfer->id_transfer; $cart->save ( false ); } } - + $transaction->commit (); \Yii::$app->session->setFlash ( 'success', "Szerződés felbontva!" ); - - return $this->redirect ( [ + + return $this->redirect ( [ 'product/sale', - 'number' => $card->number + 'number' => $card->number ] ); } catch ( Exception $e ) { $transaction->rollback (); @@ -289,10 +289,10 @@ class ContractController extends Controller { } else { \Yii::$app->session->setFlash ( 'danger', "Szerződést nem lehet felbontani!" ); } - - return $this->redirect ( [ + + return $this->redirect ( [ 'view', - 'id' => $contract->id_contract + 'id' => $contract->id_contract ] ); } @@ -303,31 +303,31 @@ class ContractController extends Controller { */ public function actionMake($id) { $customer = Customer::findOne ( $id ); - + if (! isset ( $customer )) { throw new Exception ( "Az oldal nem található" ); } - - - $model = new ContractForm ( [ + + + $model = new ContractForm ( [ 'customer' => $customer , 'idUser' => \Yii::$app->user->id, 'idAccount' => Account::readDefault () ] ); - + $model->started_at = date(date('Y.m.d')); - + $model->fillOut (); - + if ($model->load ( Yii::$app->request->post () ) && $model->validate ()) { - + $connection = \Yii::$app->db; $transaction = $connection->beginTransaction (); try { - + $model->make (); $transaction->commit(); - return $this->redirect ( [ + return $this->redirect ( [ 'contract/view', 'id' => $model->contract->id_contract ] ); @@ -336,9 +336,9 @@ class ContractController extends Controller { \Yii::$app->session->setFlash('danger', $e->getMessage()); } } - - return $this->render ( '_make_contract', [ - 'model' => $model + + return $this->render ( '_make_contract', [ + 'model' => $model ] ); } @@ -349,16 +349,16 @@ class ContractController extends Controller { */ public function actionContract($id){ $model = $this->findModel($id); - + //$mpdf=new \mPDF('utf-8', 'A4'); $mpdf=new \mPDF('utf-8','A4','','','15','15','26','18','3'); - - $mpdf->SetHTMLHeader("
"); + + $mpdf->SetHTMLHeader("
"); $mpdf->setFooter('{PAGENO} / {nb}'); $mpdf->WriteHTML($this->renderPartial('_contract', [ 'model' => $model, ])); - + $fileName = "szerzodes"; $fileName .= "." . $model->customer->name; $fileName .= "." .\Yii::$app->formatter->asDate( $model->created_at, "Y"); @@ -367,12 +367,12 @@ class ContractController extends Controller { // $mpdf->Output('szerzodes.pdf', 'I');//open in new tab exit; } - + /** * Finds the Contract model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * - * @param integer $id + * @param integer $id * @return Contract the loaded model * @throws NotFoundHttpException if the model cannot be found */ diff --git a/frontend/views/contract/_contract.php b/frontend/views/contract/_contract.php index 1e1a946..8158d79 100644 --- a/frontend/views/contract/_contract.php +++ b/frontend/views/contract/_contract.php @@ -2,7 +2,7 @@ use common\components\Azaz; ?> -customer; $customerName = $customer->name; @@ -12,26 +12,30 @@ use common\components\Azaz; $customerPhone = $customer->phone; $customerEmail = $customer->email; $customerBankAccount = $customer->bank_account; + // make groups with length 8 and separator '-' + $customerBankAccount = chunk_split($customerBankAccount,8,'-'); + $customerBankAccount = substr($customerBankAccount, 0, -1); + $customerIdCustomer = $customer->id_customer; - + // $dt = \DateTime::createFromFormat("Y-m-d H:i:s", $model->started_at); // $contractStartAtDate = $dt->format("Y.m.d"); $contractStartAtDate = \Yii::$app->formatter->asDate($model->started_at); - - + + $contractDate = date('Y.m.d'); - + $azaz = new Azaz(); $ticketMoneyYear = $model->getPriceTotal(); $ticketMoneyYearText = $azaz->toString($ticketMoneyYear); - + $ticketMoneyMonth = $model->getPriceMonthly(); $ticketMoneyMonthText = $azaz->toString($ticketMoneyMonth); - + $customerBankName = $customer->bank_name; $img = ""; - + ?>

@@ -49,6 +53,9 @@ use common\components\Azaz; székhely: 9222 Hegyeshalom, Pozsonyi u. 11. + + telephely/levelezési cím: 9027 Győr, Nagysándor József utca 31. 2. emelet + adószám: 25006285-2-08 @@ -62,7 +69,7 @@ use common\components\Azaz; képviseli: Freimann Sándor ügyvezető - (a továbbiakban, mint Szolgáltató), + (a továbbiakban, mint Szolgáltató), @@ -99,7 +106,7 @@ másrészről:

(a továbbiakban, mint Tag) között alulírott helyen és időben az alábbi feltételekkel.

- +
  1. @@ -108,10 +115,10 @@ másrészről:
  2. A szerződő felek rögzítik, hogy jelen megállapodást 12 hónap határozott időtartamra kötik, melynek kezdő időpontja a jelen szerződés aláírásának a napja.

    - Felek megállapodnak abban is, hogy a jelen szerződés automatikusan további újabb és újabb 12 hónappal ráutaló magatartással meghosszabbodik mindaddig, ameddig bármelyik fél a szerződés, illetve a meghosszabbodott szerződés lejártát megelőző 30 napon belül a másik fél részére írásban a szerződés megszűntetésére vonatkozó szándékát nem közli. + Felek megállapodnak abban is, hogy jelen szerződés automatikusan lejár a megkötés napját követő év azonos napját megelőző napon. Amennyiben a Tag ezután folytatni szeretné a szolgáltatások igénybevételét, akkor új szerződést kell majd kössön.

    - A Szerződő Felek kijelentik, hogy a Tag a határozott időtartamú szerződés hatálya alatt, a CUTLER FITNESS Győr szolgáltatásait kedvezményesen veheti igénybe. Ezen kedvezményes éves tagsági díj összege Ft, azaz forint, amely havi részletekben fizetendő meg. Így a havonta fizetendő tagsági díj összege havi Ft, azaz forint, melynek első részletét a Tag jelen szerződés aláírásakor köteles megfizetni. Az első részlet megfizetéséig a Tag nem jogosult a szolgáltatások igénybe vételére. + A Szerződő Felek kijelentik, hogy a Tag a határozott időtartamú szerződés hatálya alatt, a CUTLER FITNESS Győr szolgáltatásait kedvezményesen veheti igénybe. Ezen kedvezményes éves tagsági díj összege Ft, azaz forint, amely havi részletekben fizetendő meg. Így a havonta fizetendő tagsági díj összege havi Ft, azaz forint, melynek első részletét a Tag jelen szerződés aláírásakor köteles megfizetni. Az első részlet megfizetéséig a Tag nem jogosult a szolgáltatások igénybe vételére.

    A további részletek előre, a jelen szerződésmegkötését követő 30 naponta esedékesek. Ezen összegeket a Szolgáltató a Tag bankszámlájáról történő leemeléssel, úgy nevezett csoportos beszedési megbízással szedi be a Tag jelen szerződéssel egyidejűleg adott, aláírt felhatalmazása alapján. @@ -124,36 +131,36 @@ másrészről: Amennyiben a Szolgáltató részére az adott hónapban nem teljesül a bankszámláról történő beszedés, úgy azt Szolgáltató nem ismétli meg (aktuális időszakra). Amennyiben a Tag továbbra is igénybe kívánja venni a Szolgáltató szolgáltatását a díjfizetéssel nem rendezett időszakban, úgy köteles a hátralék egyéb úton történő megfizetésére.

  3. - Tag tudomásul veszi, hogy a Szolgáltató a szolgáltatási díjjal nem rendezett időszak alatt az elmaradás rendezéséig, az igénybe vehető szolgáltatások körét részben vagy egészben korlátozhatja, a Szolgáltató a belépést a területére megtilthatja. + Tag tudomásul veszi, hogy a Szolgáltató a szolgáltatási díjjal nem rendezett időszak alatt az elmaradás rendezéséig, az igénybe vehető szolgáltatások körét részben vagy egészben korlátozhatja, a Szolgáltató a belépést a területére megtilthatja.
  4. Amennyiben Szolgáltató legalább 3 egymást követő hónapban sem tudja beszedni a bérlet összegét a bankszámlára indított csoportos beszedéssel, úgy Szolgáltató jogosult jelen Szerződés azonnali hatályú felmondására.
  5. - A Tag kijelenti, hogy a Szolgáltató recepciójánál kifüggesztett Házirendjét és jelen szerződést elolvasta, értelmezte és azt magára nézve kötelezőnek ismerte el. + A Tag kijelenti, hogy a Szolgáltató recepciójánál kifüggesztett Házirendjét és jelen szerződést elolvasta, értelmezte és azt magára nézve kötelezőnek ismerte el.
  6. Felmondási lehetőségek
    1. - A Tag tudomásul veszi, hogy a határozott időtartam alatt nincs lehetőség a tagsági jogviszony felmondására. Indokolt esetben (pl. terhesség, sérülés, távoli helyre költözés, stb.) a Tag írásban kezdeményezheti a Szerződés közös megegyezéssel történő megszűntetését, amely kérelemről a Szolgáltató 15 napon belül saját belátása szerint dönt és döntéséről a kérelmezőt értesíti. + A Tag tudomásul veszi, hogy a határozott időtartam alatt nincs lehetőség a tagsági jogviszony felmondására. Indokolt esetben (pl. terhesség, sérülés, távoli helyre költözés, stb.) a Tag írásban kezdeményezheti a Szerződés közös megegyezéssel történő megszűntetését, amely kérelemről a Szolgáltató 15 napon belül saját belátása szerint dönt és döntéséről a kérelmezőt értesíti. Szolgáltató döntése során előírhat kötbér fizetési kötelezettséget is.
    2. Jelen szerződés azonnali hatályú felmondására jogosult a Szolgáltató, amennyiben a Tag a bankszámlájára vonatkozó csoportos beszedési megbízásra vonatkozó felhatalmazást visszavonja a bankjánál, a bankszámláját megszünteti vagy a Házirendet súlyosan megszegi.

      - Ha Szolgáltató bármelyik fenti ok kapcsán él az azonnali hatályú felmondásra vonatkozó jogával, akkor a Tag köteles a szerződéséből hátralévő határozott időtartam alapulvételével havi 3.000,- Ft, azaz Háromezer forint kötbér megfizetésére, továbbá a felmondást követő 1 éven belül nem lesz jogosult újabb éves szerződés megkötésére. + Ha Szolgáltató bármelyik fenti ok kapcsán él az azonnali hatályú felmondásra vonatkozó jogával, akkor a Tag köteles a szerződéséből már eltelt időtartam alapulvételével havi 3.000,- Ft, azaz Háromezer forint kötbér megfizetésére, továbbá a felmondást követő 1 éven belül nem lesz jogosult újabb éves szerződés megkötésére.

    3. - Szolgáltató bármikor egyoldalúan jogosult arra, hogy a jelen Szerződést 30 napos felmondási idővel írásban felmondja, amennyiben a Tag a Házirendet bizonyíthatóan megsérti. + Szolgáltató bármikor egyoldalúan jogosult arra, hogy a jelen Szerződést 30 napos felmondási idővel írásban felmondja, amennyiben a Tag a Házirendet bizonyíthatóan megsérti.
  7. - Jelen szerződésben nem szabályozott kérdésekben a Ptk. rendelkezései az irányadóak. + Jelen szerződésben nem szabályozott kérdésekben a Ptk. rendelkezései az irányadóak.
- +

Kelt: Győr,

@@ -163,7 +170,7 @@ másrészről: - + @@ -190,7 +197,7 @@ másrészről: - Freimann Sándor ügyvezető + Freimann Sándor ügyvezető @@ -198,10 +205,10 @@ másrészről: - + - +

Felhatalmazás csoportos beszedési megbízás teljesítésére

  1. @@ -222,6 +229,9 @@ másrészről:
    Kedvezményezett neve: CUTLER-FOUR Kereskedelmi és Szolgáltató Kft.
    +
    + Kedvezményezett telephelye/levelezési címe: 9027 Győr, Nagysándor József utca 31. 2. emelet +
    Kedvezményezett azonosítója: A25006285
    @@ -242,13 +252,13 @@ másrészről:
  2. - Teljesítés adatai: + Teljesítés adatai:
    - Érvényesség kezdete: lejárata: + Érvényesség kezdete: lejárata:
    - Teljesítés felső értékhatára: + Teljesítés felső értékhatára:
  3. @@ -263,28 +273,28 @@ másrészről:

- +
Kelt: Győr, - + - Kelt: Győr, + Kelt:
- - + + diff --git a/frontend/web/images/cutler_contract_pdf_header_2.jpg b/frontend/web/images/cutler_contract_pdf_header_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02b1abc0d74ff70fa3b75a6805f72dfe4ac1a8b9 GIT binary patch literal 29826 zcmd3O1z1*F)98L*x*O?kq#H!KrBhP6yE~*o5u{5R0Ric5q!Eykl#rB?mh!&n>Ek*7 zIp6=?``rD^9%j#)HEU|Gz1Bkc`u^(*vX+dPn1PatqNL0N2>=8F0A%S0mUi}FbO5lm zb8%9U5+&1ms7(g<761bX04%@;0EWiS4)Us!Y5?Stkq{$uh6vr#zh0+P07Mf2j5A3q zk&*q%|3?&tv4fKf0DzPr(i|qH&c+Zr7(&~)yExqP4L+EffS5pWL^#DSLx>=gKL+A+zO=aV1YYCyx zAvCtFsi89fKqKGsT}+KFAT%q4Ms`wD5rfe80017@{5Q1GZ)g`&4~U%rAZG92>11hc z;X+1dOi#wf$Hz-1ZR&1g>f*wrWN2({=ww1BW^e0YXy*w4-+jLA1z_IBmJAYPZZOuej zZ}wLnRTcoC1p`3s$Z!0?y{#7u7Z(S978ZARcV4Q9HSwGAm~Y4X zC3a-ure=n&HZEkhK{d9wv3GSMb9OK^HYH>FV-f$y9e-oiZ|u0MVrpjUWNHT)N&`}5 zmUiZlblaI&x>(xVky+aPRfhk=ZojeNmi%7V5CSXj2EaC82GB>a0jS*}02&JkfYQx` zw19re+XDm*;P%baB;EL4_YfM={tf>Qfny+#U}sBnvRk&8iW-@*tCQO;4S6SS5e$F` zpaIwbK0pFc0(1Zqzz*;L0)Q|e0muT1fEw@+&W0+0&4 z0P=t$pbV%4>VRgT1Ly$;fl*)*m;;u8HQ*C)0GtAsAP@)+gaX0>;e$v))F4I>JBSx_ zA0z>K08#-x1U&+ogX}=AARo|UP!uQ*lnTlQ6@e;14WJHCKWGdz16l@cfet|zU??y$ z7#mCsrUA2ndBGxJIj|a74{Q#01bcyl!B4@-;2iKPa4on4JP4iyFM&USPoMxOBq&@c zawsM!UMMjrMJR13Gbkr0Kd4BkM5r97GN?wVUZ`=XC8!;!FVL{iSkPq9Owa<*($MPA z#?X$?e$dg-sn9Q>YoWWL$Dx;@51?;gP+*8)7-9HfWMH&l%wgPNLSYhN3Seqr-oQ-4 ztihbZ!ouRh(!%nji#x=3MDCd0iMUgC=iQw%JVHES zJX5?#ymGurybF9Xd2l~M=wa!3>8&4kP(!sNzO!nDkc%lv>jh`Ek=kA;dw znlTDT_h^>+Bkez|um_3bsf&+y^lEa^)p5rqoBc~~6Cg*!D zEG~JjFs@FnYi=HHC+;%tEgmYKM?C2~)4bTcO1#m$eS9!{qI~{*&3s?@x%plAEBW^Y zm;|f^iUl_B(cUw?mv?VfkV4QArV5|6n`s$DWNWrDzPX@A!#mIB6%RiCFL#EE)63s zCmkz2Eki70EK?+NAj>1`E88uHET<}$D!1~0;epeGMtQKjto(ENc?D_(JB2z$Kv72V zx#EHnt&*cslQOKbl5(2zx(b_$k4mp9ma2hjvFfRss9KELoI0Jlt9qvfnue}Mk;a*( zxMrN@k`{}Wuh!s0f`^t5>$TyuHM9$~Pjn=75_HydxpYHyr}Sv`JoNhY3G{9BTMW<) z3=OIt!93D@RQ%}5P|+~Q@We>QDBbA5Sj;%d_>+mSNxaFHsi0|`>4ur0S)AFXxuE%T z^DPS@i$seZOEJq-%ga0WT+IoG>jLl#p*u5_*;uFG!s-O}97-8I~+JTN@$Jcc|OJR>|e zyd=Hyy`jC0y*qu#eFA-!eMNk;{Xl+3ex3f5{=xoh0a5`k0}%tQ1BZiHgW`gYA8S5t z3?>c^2wn}53MmOi4Rs2g4igA_5e^-08U8kcBO)c@CekEwAc{3AG3qMXIC|g-+mqxc zU!R&ieH+6allctxnccIgSfSXLaTsx4ajVbepV!8d#Ye^;Cm1C3CvqmfNJ30#BK<7GB;#GCaAw&H;uldbF0w4M-e*f?*XGdVB<8~A zy5+9tY2@|h^X3;75EMieTo>9EF1=KF*)Rhim6Ju%FZg@shv0{n#fvEt!M2)okiVJ{logP2HA$rMuEnf zCg!HXX7c8=7MzxtR>aoe)~{_|Z71yx?K>Uj9jl!NopW7UT@&5P-EZH>z3J22#1>}&4l?{6639jF`R9;_YW8mbxQ8m@WE{kC?5XQY0VZ?tjj-dO89p?4kQ;^RFN zG82Q73X@|~>QnEhb*Go!o4ntgv6=Zi>o$8i7cdVqAGv_Okhn;+nDc@DL-`W-Qp>XV z^3aOv%G|2)>Zgy+AFtMe*HP9JH%K>%HrY3uwLyb#=ykpV#DH4dc;mn$%*rfg318{0D&Pf zK|_Iq27^H`AOH*r6Ep_qJ2LXP=bT)u!fYb36=M|aPL)_yE-=c5j@hCrMnRpF9M0qD zfjMHTkFg&a=XP~at>7FgIUI?bbYtEsgn@^JgNOQV9z-PuIXasoCKQ>Hh_YcU1$&^V zQBd5wY!#=R%FY$mN6!u_Iyh8?$FRQ60>}`zz!*>%kgk*d_z`9=r^I89+6CsJT7E%o zIb?ce?_X3jWzi0(6Rf=;-UB_FcGPpQIo>fR{SkutsooF%`9jO^F2G?MR zJ?qk61lj_4F>w9>Y=-^F@huz1>P={>95X?5 zEt|j4t4ooQ0IJhhj7~zYA#IRhK_XCdz3&&=Av^wExchXESm-ki5UZyXd_Z!*YPw37W!2lqOpkAl?AmUyvnQz2?9WO?naid;IU1g&5Qcc z8Lgker{c415rBduIEjku1EoPuA zM@;z7WHI|f%0E^|LPgXf4Ap(=fO-b({{i`vz6VwX{ye{RTxSG8p)c<(f6od~sZ-3o z$^=$nR(f{`d8dBjTBc+si+WtBp+wq))46dpM*W2$E#WIYYO?qbi z5tR7(Lv!3XAS|@s>wdJNE98+#=S}BPbzY zhOH%U*ExJJ3&~d)07%<{2HpF5E_#^PIyN@NjRm;bL6^;sE;}9rD7j6D zge5+cP(@RmQFqQ-b?-o zBoG%^(ErW`kk6>|F7!sBz9eNw%j8f6-)*({?c?1)c+?I|HV%2dj{Xxw`lS$4NSX=2 zx2MG*JmtoS`5llL(*lHQ=?^L%jGPI5>>yMOd|LYl5rRN@upijvJ@CzT&})Sbg@9Y1 zz(v-@->dB%WWf-)pNxMFJ04|Al?9n4dT#5@fRpG_1OOp%vTv82bs8ZpaIOPC$1MJ4 z1-g+;F6Vd1;Nz!vYkcU`V_?1CqA%w{xnI0*q%!GAW^;?prcz6No=W)h?<9#MxCs9S zJ^c*aoy@>)29U+Vnu4JoWdvp1+6lm@OslbvQd6v<HhqJH>w}^au2z`6$nyyd}&EHZ&{xpoyg)&QP!Y-$l zFO;_u+h*TZJ-@gx3LOMU(mfknvhj}VYJ47RwUn&s*`1bgp;@c6YFwL7_F!J>N%($x zdslm>^2zCBb7^Nz9je0XTb%&LAvmWFF-9U8LNjnLE9-lALDO3_Kb)7HU`Xqc8c@q32aKhx5vLiXk90(t0ZpZ z4ckvbG&ahUa0o135bOZL({DXm??ffdbr;i@@yTzl&Qqc{>_wI$e8OxhPc@m&TRs&QbXBhuV!p^Eib<$qGp<_ zHh-4OpBwpD9(en~_TJqhZiPm(yr7XfDqk67S#5orf%JLBqmhM=#i8`Zw`yY7UP2q^8@$ z0McoLz9rDL>s2X-j%|*jR_d#(Yi_N-HsId%J>HS9w??F6yG%xhCoEB$Q5#`*Gq78o zu9qbooi>U~oVI7YwkQ#M&f*NcciYQYkrKkG5;$t!sI#Yg)}g7&bYC241T+r z8Bb_Xn)ATwdv*WNP{{Xv^{6mygH7;CNS;KXt!tB832wv~A`5cKpW}YWr&HpkmCONowq})xnqrAfmPufq-jAe118;*NypUnr6b$(JkR%P>xs z{j|c(+T4#sYlM%b4?8qG+AezIQKM#k3tY6PWE;k~t12>xt*Nj4O}|f$e>L8Bz7YML z803SIxL7~#M`3Ws{>+(a0tBg>mFklvId8``%hIT&GG23z934+TB2t*(Tice)9{s&W zpW^$)|G(Xjzq}E5^NSW)UBBRVUNf)A-7Xv`**H;MQ~rN>LpJG<0|)>F1AGNubUMOX zC3Y%)s5CQpP2!SjE35LPZKqP)%#i|1;`LBC;VwE~Y#(tH73whAP9kc@5e&Zw{87L8 zMaqk3JgMY#@0CtOq;;pT{k{Ty#E;jp9({r7zZ@I7I%i$r!M~=P7r_{O6!@N1q+ysz zhuD>gyq~#L(#$aQU3~pYy2g&d_OtlZ=&U|g^|F|gP3hBvcR~kLGCGJeTK?n567})a zZZc$UEO>mC$V6e$1kqhAMXy&8RNN#|El8>_Or?1e@yz!K_kG_`U~N;BxpZiNOD+7% zjR(YF2cNaE%08iSdckVPq%*loKzNO*)AK1U_&KZcBI|^uwCZSlbqYQnEv_^QcOmX& z1VyO0{oYK{Nu-}*qrQSY7ciBW#rgOeL+WEjc+fkHvqyQ}Q!1$ak9J5|oj$PI^BY#u zn|zY96%HSoeR7(N5!1grM~i7TbD?>+`2|L*#ViE{COP@&Cq_$=!o+vELt<^Ybj|Tn zAMKKgTDFf4{p2ilMCrfWH(i(1mpX>8Jd~M97P#|(XbTpHe07fJqLJ)Hx^I*%4kFoSZIUY5qctP#%@}u1gphkt`N`!@kYs#ZXUC+qrAvBa;6D$kDxJ3 zX1=@jMteei1TS(R)&96)^SBkWhKevs_4(-nKU`a#T^@MCj*-t8F>X9(o0qQ&G zbdG&kOz4M)*P?1po=CP9g2CgVh?MJyEk_8YT2@fff-fxF*eO`1@@_c&dA|aRgx_ii z>ZckSVTWCT_no-uP-&quGef#5LaE!D=b{R13_Odw{{^kpc>k{NWU%1IMR^ew(J|hU zMPTD|QWxJfu&40!wiHahXW?-ym-g zB;1RT{5lSaGqXoXf`fw6Cu~uPM+3!*#0;}aniC_jTj1lp!TvWF(d75dYP_OT9|oC< z?Vwf0o+{zKkg2%}B#pg(1H~b@uKMxC7?Ea?PNwj)tax6@g6Ki>lrPYELsL12Hf{Tj z=k{OdnqxefJmVh9_(l552fveUkw?EQB0n4QT|=v{*j7?J1IJkkMo8s@;69d4M?)0X z8=S$*`jXpX2E|#jCJ@M@Vzx;N6~Xwc?Q>iuid&+51<1S+z5-ik9nD#GuLvf*^=?GU zmtXfqCyqTkWR+Hunr9i)FgS&0=e$lps}vVRd3MteLr)@7zVSMyudC=#<18szPL_4m z%=}ah{ke=^;+7{JM#?v5)+!9fgj++!O>EFFVG)8zO(}P?FjWj**2gI0wf|YT*KSY0b;T9aq~0Yp=-div`6WxR+^0#|YVEOy zFIhsfS_yvQ{u?q(F@GRQVnRob*WK&q?ohUtEMy0KVk2xZ+qa|q8-2gXhD!S>aHZ+$ zNcOw_t;@d;1l|BU%^ib@l9wA&iQ@|n9CwH3?)V_f#2HF=SB947pceZv)%UVF@@E_n z8h!_6+@DQIq)*w36B&onvUvu8Tjy_4X)XLTT>^6V8Qo8HqirLqJA<)tkq{g+jy zQy;90Uqsol4e2Tr`oO;TUz@wq4B0AYaTVC8J>E#UhpIE^cL!!o_cFDakVSxan^9ax zZO;|avcLZx4HWOXv9H>dj^k6K6<2{J?yj!@^M{pY7I{zaq7Q;~h4=cGoECKs>RA{z z<|mi=^>`;qohg)yzXDb&`3xlmQ*m>Oa*tx&8tZ=ug711BlsiUgQ}4OdtTB+P3*pWi zC)Z~voTI${3Jk_|n)K|tI{XlZ*uu{*YDcH)tnFvFmwyN`V^va6zcF&YbgLU7VWF&y z_}>8br0v8M#J4((Uahv29}e^z=8`XS89p^uJhzUQ*)q*n!09UhiSbl+k?Oe{E9Lvn z=fr)LZpS5ClZtQZ@Yb1WRa>EKgbvRI)vnSU$}E;ne$9yYGp`s!)H^OVz5fP!1TEHT z?)whwIL?PkKxb~wJpG>_DlNjD15ySfDs~1}r;Ewd)Dqn_TSNU*zGbh8zX6^f3ndBj zA4;%eyYS;&h_e*jZvy;F6&UpwfBNou@6tWAKV)_3MD@_Nvmy8K56U-#r$kNGckn9! zDQwb!6@`(_rJ+6jdjd%@sB5d8VbtZV-|Xo4Vsh`NQax>x!3gh@a%!jUioLoNwoa9w{M*TcBDLbDn4b0OCPJ11P--fZH zu&caf@_h7PK~&t>gV@Bw#WiNt7&gU{&)NS9Fm){}j`pnP-hBlU<_B3rnPkPySK1m3 zjM-~7SdzM0>>sCh@uu(uZ*@zsJw3ss$TRlCLJHeE)Q40T%{*f&ub{%0eT0ys`@c+O zwa0C1?oJQ1QI2qHIEtzFI6p-3W#y?qON7!Ftu}Qe zXg*{c{+n(;R`!h>YFV_}c*Jyn@o#MWvE@H=k)@0{ROq)&1%CEU;#FyA8CG?CIp5Em zZ=&MbjeU0h2OBK(g!)<81VO=8h!`*FB>yolam~8?_XlfPGD0i zDLoMp<${6#H)Iq$QMd1U>pt;xs$t8oy&tnv{2ML5k&QCfVe^g|iokn%6CV0c-9jH9 zzQ4Fydvf>1<;6b?2ePi3w7b*M`W307=ZhlUraIj9dm9Npv=8oM6)7~nl~A702^Y;} z&8b~AO|PqNtrUU_-U=JG={tIlBUd?CiA0T`@*<$S!A3p}6WY2gU(QvP>8^Q6yWzdD z2G1iuw8G|*i88&pC}$GqfmW;nQUu7iWJWnfe-iO&_Pe(z^>Z(mf2$YylEDelhlG02 z{@yt98a`Fj)*=$Z`jf$tv;$wkb-#S4y?LGFqfGUK4AyhVcja_VZ?{Hvn?H@X1F;k3 z@jc|K#M7iHsU=ABm!i0|Fie}?Lb(HvB&HLFN#znB60Bjuq!&C(7v4kHvTFA~2<3i+SZ1IVa=r5eqiDSH9JmHF!w+xYMO;y)oqO>Z(2#=2~lxtm+q* z$DN+JkcgcwD^oN?d*g|{?G{VkW=0O%5^$5y&+Z>kzpOw?c9`3DuPY3K8Hl0=O|1kQ`CZY5`9Xk>9 zQ=4;aJ9)9UIz8cA{v%_57XQ^PviN+2AtD}j+ZF+155^LJf?C?srkAOWwA z&tcK-Ej6C1_@s66%40F-Cb+RKZ!l(`GJBzXyiA_C!SUv+mNr9RYv>$P(Mq)o=-tZzuQC^T1=Ar zCb5#89sjY}qI|<&n0SAsPpY~y(ltZ0Ew~stv-YHP?sr9b&Hzc@Q@tg~QoX+Bw3h4X zgezyCzRuLF(VW~T$^#FDWS=Q-__bAiv_enDD5dRt)NIer>71!Lp2y7BxN83XWg&$z z7_?&>Y(|BY_&jQ4?H2AeXL@@ArW#K@m6=WmBn0;$FR0~InrF#{`IgNUHojeF^59F) zSL-2eC->0`a1q6KfB(+>#=P3&@>t)|;2K#utot2>vmkvla7i5r41#1NE!gRidW$ zZ>vCqkF%?`jZuD?DsOSmO?NfnA@d9D+I{k;(l5uf>i;>E^=@r1%+X{PXeWdkBMRa~ zJ^5RRLPo-O<6ftGuE1B(Gv|o5ig&asVf6Q~bdat)DDY<6^8MW7!pQ_XeV@g7(u8I> zl?Hb^rXe33f5^U%`G7y;XwFOX3s321L`FmV@se3@ z*EybQ6t3&BD@HT)HSt437)MLpj_Gk!3Sn|ss=^P*$CSwtu$GU_6{Npwmp3Afww!GcWwRM z?39c?sF8g-OYSwfef=umKXSL8RHL`Z&3N;SE|{=KV6zXFHz})3I`bK@?d1sUVKUyu z#gMukN;#FS`b!~6uw<(CL~wi1vv_itW=Rv56wGUH>f`OFYGpG@sNVpwaf)Hd1F2Cf z$)U+qSl}Cwx!fc|FCrYj4H&6agZc(wWbUl4CH>_S_sYwk#pu|)E}&NDjMb)=EvXBC zmi#XNuP`_Y{Z-C$@0gAj<64jN-OT#}<}puaR#*S>Vfk(9D0%&PORg;?R)sQ0xW7uL z<3yUruq@ogHg8tp*c()n8hA#Ac@>}TQKS2gpKa(@rQ|Dmv1}tI$LUeHgARCiBZfjQ zQ+iV@(raJYB*jipWmH%epR7aQNqozpFK3tQv@+J^Bp#;dg%VwlY8tE{aiBHvqQdg> z=_-{kJ5ghe%X||3Lj8$|jNVDZTki<_>v`*-`G?G*Tcx_3#@qv(MjQ{u!}2WYNW#!9 z^!uJ(rx?^==jFw+Q$CfeEe~BeZ0t@wJPn^8%*Stt*M7z4X|q(=kGXd$<#>wGpsckP zop#ARV;}iqZ-vl$nb{@J@FPZqW-KM)OA#Jrtr<_TNCh1YZn?f~Ou0eEzNBPyeVuz< z4a8L;mm)LDT3jF0$mR#E-r1Rc?wcR{i04dSt>tvF(5V-^0Y5Y}<2gkfbsy#vZUUxt z`a)r!Za9H!UD}MZRpjO;?Row8vHD3AE{Sv{Lqj93DE!Mg1;b|PP75M<84+QQ0?_&E zdWOUCnRdoa)&)fPQG*334bOG%&NtRLKmxKzM1v|mGNX|+_K2uyklwtLlAXWlbkS~= zL|0{@r0%)yNBqx)9NfmNx$?=!GlVJ$Ov)+7q-C+>Gc2+A>36lQx9l-O#TVIB0v4!M zCFgmcknAbLpoz|ezbMMb$h$&i(kj>7NxL)-BpRCV(e^&e%6LNLIZTfzT1O!li}Fd% zd?$TAr__oNH&NkzKVCJb5Ko9vjGo_+gqiAHCHaxn-tr8(PmV^iad9$!{q>1XJ04V$ zX5m=rG@G{bG@q>{LO&zG5_aQJmKDb6mRL!jA|zpo^VH*A3pKgjtS&ZHp($h5%gWHx zNJ_GWq2NyMK6kt97oGAhEuz;GSv~A>q^S0<{NTLH(SV8EP-2adm=!IO!)cTd!D)Pg z0AE@ztd{%$E6G(pEk#fkD#e8z)eIG%g|SkZg}m+|PD={&-Sa!IwAEzFoV|)G2Jw01 zq`O|!K4lrL--nO`N2C!buM9d%E>JOO67lY_FPf8K)q zNU`pc!IB_*S5&R0BXojpYJ5Hr#nUt*#KavDsix{->9p>B5Ps}*5ru0B=#>m$pdlk!R0)H~$=var~3Pq7`Sm3t8z~V(}zgJOHh&!H8>$rpW{$t-0 z!tb7|Ks*;kHQoE>xq!djwnj~TX@j!wdmTqOyx(rEU^Tn&*=S~~E=}wf=XCdTaa9c$sV5(Ix-;tk9pr^eV=gzk@ zArLEA5X=pYwpx&kmUT>JJq|WJ zqg>Ha-;^0;F#AQ-BucQpCC#jFyoRP=YkLkl+)>7@rZn!5KRE7iUKBgqc-|%!Zx~fD zVpQ|kz{swC(}OdI`X92a4rk&U+^sg9OzJ%1Kcf=64T@jft*u_>of_1(n4(XSF-AVE zyY+|bSAQJ7`GfIPjVi6U)F#ccAnNo+0{i2X2a#Kb3h`Vl<+x)-t-i~r7E>t4_hXAf zCp8_lc-Ch!vG}@E46OzPTPLc6E#I&O`Q zIMQi9!AWFjl;036@SjJ0O?fQ z_uu`2VTFJzf95dw42;x3kIkr7Y$$u)6kxQ*x1EKbVRje3p@(XiNbD-Pnb(_e$}1pU z{p>41eny`Xlu0S&!R*`dM)vb-dc)_ILC*=8Qe&-cNKA*&Twn5_!#-CHV|GbRn-%Eb zG+Mz8*SFRw5VX@|)@(ak5KbpNc-Dg0vepsYbK_mCDG{jfsT2u4KC&S8J?d_=`r8$4&f)^VhW)Ew#}iJ6AJ_N5i98 zJyO=uf`}ry+0LEqllP?TRjFpfL)HaS!V>yc9yxNndfQ4mE^S7O#VPRWL%uJ;T#u9lXd{Z-)I>(>x1V zywcU(F7zt`xnawyj@;=vs}x5hnst$|vY#$F5hI{e) z;qcU-MKbwRXi>1iX}L{Khm%eX09e#Qmqg=O#k$ponWKb<$?Zlum~IlB+YXHAwlPtW zq5P{x+7yo{amZl88=BFkC*7;dn#GQ}l|4fVISG|4m;6dmPo3EaqS5)IReNe@e0cfrz!4~HREPf_dn(4EHcc@B#n5$Rr`Wr#akl% zTWV?smkW3Zu?oNpqWGJm{%^nk0`>cgNRD2j5^)(M8=+aq9NAfFsZI}6GfWWQ z{iG%OIW$3;F_F876DHe25|eW0RibsYy0vVG#yDmPr@pIbX}DtJ8By!(?leFu)~SDsg6*C@~Fy zplS#}0mb1FI8frEfw9A|L#@F!Svs+-#p*EHuf~ZV5x}rAP#8r<24djH&j~ZUE?DDX zvO=+!2S0NgBZk|dB?}o-3L4FFHm#QKc#vMwE3Zaq8K}Zg!(LsSAjZ3kLx&+Rp;k@* ztdQRrbY}nkx0WEt%yo&7BL48K=kUl{OuFUlY_iRQC}dsNPKk@58ong-j9&{w_B8$- zi{~o#draxKsvc)dJx*!84R##yi-LoW=>?znbfVXIVw~p9>6^V1SNY^u=j-qX>`B(@ ze=Hn1eERs!qO0=6dtahJ)bT{Px#q}Kfv)|yKn=)r+(q;;s?UU8rdnqj?&*iRgPX;X zhkQw<@%^(`W6xAYxispyb9FTSG`2M7@zvmyv?UtYqhN-}y6)f@-<-;w+&#JaDl!IJ zd=OoUJ(G5OZp-4IY!4N0lC)IT#a7dt&sK>)Ua@J9f1u?M9AcrS238|i`&X|0*MvI+ zxR0KrQm%6?P_t*lwCozIgc8K3`RUapU@BR5fmAd}WG98gd|UoBAb4V8b-!kqV8V5r zEuXGUtuIVQ@m~LPg~zg4OAHYdXX0T#Z2vxGe;VfR^7|LUabAX9p5s!Cyvy{Mqo0Bj zqPLilf7O1$KM13iNW-jVEh9_byZOVj{h};Vb2rDA(%_f%OQmN?18o;17B^;b2t`r| zNpsr5Z!FZl0=;7)Qgn8n!3w^46KYeQ<-%>ffv0Zv_`3yV0s^mi2IO&`))Et*A^Wti zQ7N3bd&1<$ydtHpPudQAC*&YRJz_577S^v<{qEg;I4?~j=k{sw#phx$%H-POv5?}M zP}5Qv+@&aRP@TWmmP%g?cfCYpFXI$vlc2dVDH=a18MeAS1>55ME?Tih_Q+H$AXCTM zv*+3{z%xh8c1#Q`FM%oBsl_(aY+jpMzq9xH13jk(|9cnvdA1{{_*j9-g^#$2_h0)Y zt{4=a#1mUQYadsK*LWQ#-h4h9ym{H7 zNY(4Hx%~8Kw86DlSyTxWo7*u$TB})ZQeqpRl)s|}Cm)%kDAlOWM zS5*mJBxb_GoqBn^zRPVz1oXG+W#K?ot3_OJutxi;9aM%`9Zqx2XP>R4gj zH`2YdekR9#NLn-dFMJ6z?N^6cqM1}xM~}C{Pj4^R9gL7TTD~Q+JK9c>#W`wE&*>Rz9w6J1z+CkkiyvfH8+>-2)w8{M zwnw^qCj^1&nR2{Z%Ufc5&r4y_k7FcpDFnm!8K@T&IeW*!AA$w$ZY!*C1J~ zR(}PIuRs5|^i%Jcos-O&t%yC(Shw(C{xnI)KTjYcDA%V-JhJ7ZZ7QGk z-HBCaTi^k|UDmS%dOhpWY7b*3bLiZk?i~9}AJQ8|9*rCZ<>8~$npT@1&u=s#Gp%s7 zGxg6_lO)$eSSF$J{FeOWGT+ASqQx~?=I8mK9+!3By4k|WdV(G0G!TCV|D>@k7__m(cy zqV&{TVt;X>AnIyR-#O&wF5=R-XuzCN5ReoLt@1Mbvz@nGY1=#E?tOE7B?oGcshO^^A#8)PV4cuEQzq}mK|i? z6wqu^dbWLo2bW64J&(=GIiXDTiYl`#f_kP?El$ICY|l?sXs_OQ9gd!pdH6uEcDOr? zsF8=0-tQ$beI{wn`Ml$x4mPUD3wYCS{F*u!3A4+gOg zy7U9CF&+n7Y4-B^_fzB&;@R{i3fGcKXk_RiH1d&D3=1{uM%6tV*AQ|a$jtebq9hd^khe#X+hj}Sc&KjxM=h#QU$mbhK z=9^2_C5v3f%DO%F_cd8VHivC?Gv?)5t-|jpCr*Bg;<3}?VBKrR@mODgEuG-=O!U(9 z(;ij|-*A3hNP(gy4 z>_XqS*~6KvYkU~0RE`}LJT8kK5P@14r~FGq|FP=7$PFtNdl}^rpS%>DvW0fZc_{5Y z6c_n<`4fK|W(D`E(TBSzD#XI>G3$cY^Y+^!gG1c%_hu(qsj`*rMD1iIEtjU{CFC90 z4%@Q{`0;i@@|W0)3|zWKndn|b++TtIZ23`!fQzX1l5$FhpTcliBUbhI^GE&{yuD1HjVC^hj7V`xfPITu3)SS({wBul|v*@=qW4;OR zS|9HpXVj*M*7DtuN!mSg5S^8Y3gq7px(czCNyWm@^DjtYp2rzr5t|bT-DQ@TdZOci z1COk(6sxKf90wMwi6BVVhAG@9<8QV6!qjrZ!-*^KFgq{*dVD+6kfo8CPN3y_mu@1j ze#-Mm7OL;$x6?$f@M1)#r^feDc^cq--q2TPSa|oL|bJu z(kYB1smsDIhA0DrLEM8B0qH ztdOciXl9^pT5Wb;V1ws+-u#SNMekyqIK8CRdH~Tw@{QmfFxX0d%rgu#mhEGlLvRbY ziSJ=g$U2cMJd*9bY?cR)GIrcCPESmP19$!|50_n}@iXo656X{dB}1^NvR@nQ@@&Lxzc}BMHPiDC z<5w%J^lsw(11 z8|+x#?zFL!EWO<@OuZI20yWw@%?i|JX(yiV@gH)BB#H$=4Nx!RdzogR+6V5|+EMYY zjWuM;od|D{zN;j1`bhN0P0>R42hGzi5oIa~99bOP3x>O-7H(uJJpD7|lL}jMzQ~$e z3(oJ}JbZ58%PiN-c}jFd6!TFg^V~w}Au}GsC%i*6kypp@O~H-Dwjh=jyy42^&>czJ z_--B}4x0k|JGwbxK%)7`Ib9 zz+B8tcQ05T2G;PICzdi1Hr16yg@2Xl9Z36M^!|rKF>+8c&(P#N7G^w`lEg_*G&9TR z;#=?D9`7u9i=bYr@h7{H-W{?JH4@z+w1AFFn;XX{&8Dn!ihjTwp^h@u-VcMDT9b~s zxS#uXj{QT^{xtO8g$!oP6W>e^X=RBMEK}OTMlkxI8T?5yp3p2@v}m53Y3o1E!vD%x zvWH1F_!jiVkR=$s?38vEHX0(%RtmlQ0s|xOs<25lwOZbg+Mi-2nx3A^-XkM|B_GaE z=%`*njGW;m`mh&8EqXYyFF{i+Je+6j@66IPrFx&_s8XCJAAmz*`v~JJu;aNK(NU%J)doN zE_#hV#tw4c_P-I9G&MK<;A*L6TPHjaJh>Q%Atk_h{rI zj^o+@Xo*674?aSJj<$dZRvQ)TDJFbAqo$9k@c$J<|1JcKaWQqQ;2O1AHcpAj;=I|! ziz{cG-b|6Q(sv2P#gpZ#Au5%YVAoaLRLK8HnS@pr$dhQn`?11EjYFE^|Mw0!J-2y) zmv4ldj-@6qJHQmHJI;D(le6s{{CH3;>N=O^G5yN%7or&$y3d+XyWualMJ4(XfkJeJ1Ut{FJgeDDV@?q3-P= z6``Zxl6}6l?9fTh=4^!KLw4Kt1Q;wBWh#Bg%M~&3{2|pPz1Q=_#)zX3p07Y7TyG$( z!MYjZA?r0@)zaQJ+;C~03;BL928Z#6)a09aRUSX_Eo7vj=i}vx3^@~S=|$l+6Dn9_ zC2QEKvaKwfuWWv=)T-F@f$uW!qe|VR>v4?vRs5X6>-9onTrFFAN~XNS@D@;zb;X>F z+q=UD{NV~LK04aNJfDs#wB1Z+LZ+lpWUwL`TSzsf`y69(oi?iZ#}~-ABzd16BEr4m z>33SKYHYXdJ_~G3C}rfBipsU3zFj|G=b*G)ML4z$3CTp#6dV+75T2msAvwqQ-LGp| znX=SuzHsn&Aq>1-%*cwrQC3!V?S3u>S@>xppgJPmM#prE;8N&>9Zth^tiW(gXE*3T z2aRjmAIhIY*3G|PzUHy-im+w2DuDvP633F}T)5fnX_W($ zTN6RSTU#K0PZJ^gyzZ%idkA3N7 z`yq^ZhS$Yv6hY78eOMu>_S;q~vz8M*@nfm)=7xIn@n=W9iz71L zoc{+k@@@ZWah2QCRrJy}F7lk`HPdMoJ?CQ6@F*&+uh>$<4W8oi0|Y(^h7NmOh5aU` z&+12yJ>6$Xsmd^kR&b{hQnm-*aiM{&hU(|&+WhYsgk&(zd{t<9;ok&cI0YvX^lxQD=8e zb|0aB{0E37bhWB4*(SntPF)?Ou3nt6*+1J(-1qmWcofN~L^dmjLUp_Q_EhW|23}oR z<$^(9O$&D&f%d(;vZwp87YETjdqFVt{=xd4!xve~nxo#!cb1$l-37A`WtSm;F40!^ z)Da7%=xzx^aTY^y@q71NT5G_a^1p(})e8b^bOv(h(vuU=_)U=>5!X2~WRyxB#3vAy z%c5|}rEbt&wYuf|_kx`&-(8JSQ^*IXs~uaRX#KtC|Eg64S_Hc}JSi4aKsdot&8-YR z+?xkAc-)3>R(E@pB?p7i1x4YJ?&3kiz||t;96^YgPR1-&pj{yLc}>9o9z6@4V+y3n zhRB^*%pg8Et>~;$56qouH2mwm~)@HoR{Ongx!|3VR$~jXRRS4oJoAL_l~p zS{Bava82Fjnv5b%IEErVN{?)&{p}bm{8J+Sp1MnP7AyDw@y>)1{7cG-kkEaoA}>Ec z9rDkaLY$f+Wz!?!C^F35Z$Q}E*7latT)^~7knREZ{#_LBNB16s{jz}Xoooqp*ADJB zvhg~SzL}PR@B@ZMJ*ARw=KKD~^7@n1%SkR}Nk82MmvEd;d#@$oAedhC84WQKDR1iR zTkUPo{=|yAIGabB;{F%bqt~x|>#h8UCeB~zhx^&H?6OySd;S2}t>}){OA=i9q^j=B z6$v|^FZsug`n;$)GunE^Y`~t%mvU|>rprg${xH;m5N8%h{Z;y!9lbvBSAczNgpqwD z9cXlxRAOxhP!Ar3ZG$pX&-8*RN%?ski7|HEBPu&x7B)n$5S)f~WBM7wkEI)&l~cTK z<|7QAmE7&An&tJoz;D1Il{|mQO`XaeuK6z5{U6)1ulTVYL!Cb=uYBM)^h(m(H-Kqb z+#o$C4(8PxC%9p#?_T{Y(IEG zt=3oU^BME!Tf<%^-E;W#5^tJl?6DvF{F8C`a_g`8u(z&%s$>|ar}rwVpz^+TZ?uTB zM}wL|NW=ct-8{1`=l5T9KLKhy>lwEP^8UfyV==>yyFz^?r1r{|9RN8Ye>>%E^bavE#Eue1@brl z`R~AG^QDXLf%pD1(UYf>NVNq;=fw-W=e^wTeAGHE!_<6jmvK9v9!R&@2F)IxZBSki zcIW6k?@ZUNX%wo`^@^}ElWH^R2+;$BIN*jP7y*OwD@r{ysMp#da3lNEHSSWAn-Tvx9l5 zQglg6EC8VYkG}r*WFSmT3eI$Sq?lN;TR2BV+9}T?wVoq;9Mcwe2}MrsPrFr`;vEVC zAP`|IHpZ5Nt8G6Pc`m!{jp^tEamw1=6o1zV5hs{eh>DP{{fiCNG%Zr4G#)FsV zuP`yJrFAV$KHY3I-@BN*Jjp<%ES-KjY+g>bC zY`ODGY1cBfP7k{0rX=Tdb-Tegw^r(wew72MRNJd63KFBGm7{{bB6U@7o(%ovwvq7j zTkFvSAfb49G<1$t&t+tS9+l+9<=5=AiqqXG7{~$wBEe&dn?5DfH~OHhFGEL;sXXXk z3cv^pg#+P)z9RaP?U-0zW;g!O_C5B#jV2Wtj>^yW7QD%&4za#K# zEJ=#$nQaaQvFMiRMuA5cJvx-AemuXLM;`Hd)L6y*S5$kHFGviKN_D9lyM&rN7C~Z9 z6)h|V_CktBzi0IrwLl0DHBMacz~TTjo!$BjbsIXymDuqbz9JRl?;>dsOqIFMqC*)u319tR48sOV&0QE z4Na;kHgtL?Gl#hwp$^0qoLZlz|IFVsD4BXHnRM~6N7_z84s8OQVB-;AF192$5x>6t z%h+TrG>vZK$$`6)t;Q8apOLvKmKeFo*5+bmPmvNd93!G$bnc9%a=%2d&R@p^X;%kH zKGvNLdmD5p-&w_HgbFlNf_nrq4~t*tulxVTy|11z^6+;{!2}o_4B&dDzDldAP1H}g zW$H!?(gE$0OYgmc=4B`J9Lkoj{AF}lNl?{ug44b;CC=U zUU69T`d-Zkffl*P){ieb6*hf+*__<8Bc}h-G^ewd6P=vH=_NL;fS7kcu8&!z=Z-f&rIWd#m3UX}Rt1U)Z--zo~l zB&E2RF3E=S{s@Z~Xy$RNJ7I6u8P?J#Hm~DAvj;x<@d9=%SF*CLI7qeXYX%5&wl$Jb zQ6@^w`YHtU8U1>;8qA#Xej!|mi!6gudTg1}$a>SLx3B__^EEU`*b^x^cb3pD!_eY9 zqk*MNKZJqjPHERd^n@Pxb|>}y{wztsc^-k%u$@;Uo8i^uB7A;I)Ra&Ge6G5pGpdoR zR=#CF#S8RFI&MO@LBws4#sMQ#4!vi( z$|}L*M7=JjE{kkQjV~>h_bUKP1;6nft(-#EfR$1sXci{6QwIX%j-P*BTJ50yxj(ke zLBsI*-*iYe`m8d?BUUVPtVF__YPmqaIpK%+2%P)DlxRtY&eKq($Cw=%G9x2kg$5(5 zb)Ea^d#L4(A+OD8P8i=DOsf!?JJqXJCVh}IfaxW-9Laq>HTD*AcZ)pIKviPItyZb0 z8`jKqLN}evv&4D%zJjFO94tP2*qDu5`)KP(ImpGpO3N!^B$D*`#h7-d3D z&VAYRwW#*9G-?WP)6Ni2Aa$Ov?2^7GFM|ydn`Jm#+(#*E4*JV-IK+;`VY%|3IB@I%=hnl?N~DGo22vj}9P_tBka9RcoZD@QB*iU}WXv zZBTp!rP{9hk$8b0I={G&q z*<=@yeIi_6E>>No8Q_ZC1Tiun%SHqZ+^daE6jA|pS6{6E_ZZJeGfJhz5yi><}!BPZ8X9V+=?Bp_8F^S8z-$%{1L8(XD z(~xbhIn!~9rK4H5sx4>YyWNoVwU_N`U#`BUEQR@M*EH>i-KYAWiOk1;y4!F`z4)Q4 z!ZXGA-5w+*2D(^Aeg!ax-R}as_0sceH1V=uV<*M71c}u^s!EpGmP}|ZJ16e`F)R`h z#ARHxIab5Ie`w_kZ;*IqX^hSf{*L3Q^=XXk5xy42I<59|9N)H$KY$e~Uw4I`*|e%7h=Fhkg`%q?A~&Jmi@SLMi8(;>YgfzISAvXj5&q^}{B1*C6Ia-Q%laoG zmRhd_y(w#f`zx!hJqM{98GrWjoOjxr&;^yOy~*>~v+n|q=h8z=zzX_e5ZL8{mr}}r zuw9o|N0^g6lwaj6Io+dxazks#Gh`jrv5%Cz^3ure&63nt7NpUSF2J3wcbE`- zv}aOf$Sc^O%?wrmEpBrw@Wu$oKk14&I|+W&XmXQwWT>3kXoJ>2j$9Q^^D7+h#?M@= zPLeS|3;MKk62Iyj69#8OVABv?B zG|^;!AEzASYo-^hfxd$HasvN3*j;sF73<7xghKgNH&yAhJai^j2E8b?y>w={t_lQ! zYJDe!Vl^CWR+>ocMi=J=+Mb9NTLCqKFU;j7W3ngn zED&({ap@)a&m!G6@FEjwNiiO-I$zVZOOLT3(y(^&a89J(9s8fw&XbcIdFsOWackoW z42HH7xz#>-4j(-&`zo*}c0ILR%tG1oS+8{MlP)6JmF@H-%$<`9CPP5$uh-*?sbQ*Z z`IyfKJZVlKNVB#U0iX$``4U8j4sCL>+oIlP(7#FXKhAPW+lV$vKpT%eEbvY=BWnG* z&jt9pSI&fUjA@;Pi9b-|KzdBU+_WQv5J>N=L-uA}QK6lUoI;6mh0o_R(7d!K9y4q9=6pMhFOx7 z*1Lyt{cITsX=x+iM5e@Th=66E^7z(Mq>_zQ^3oS=6p!c+>V5|ayIaTC9V_dOR2O{B z!qi6jIbd!XIop+5w;9@S*>MO3CGaG-A_}!FPwFOTWFtbeW`n}cAyYp9`nQTd=3Ql5 z2Yy%@R#&z&Wj?iC2`}f!9PtDWRwOAiV~@{pESF2D7x6@44n6 zWVc*H6RB!Te5Uqa4pdkR>n!e5K!u~o+(V`t4~F9?cMum44529HHj+`vBt)pJCA6Iq zQNR@HX0PSFV7&GKi2f6H@5+;i=DK)ZUX7>{PmSJ}(_q(M4NG)Jy?a;)>}QRO?Fb`m zlK2`H@L9%Q6WRuyiiU4Cy+Ms5?ho}VbQYS%t~!Hz>SIn>(y=)08tI)A$3`^jD^A}W z&*QT|!LK(vLjn? z)s;os#nPj)haGUg9U@~p$1B0g>ci>Ah)^8^GlC%HSHi2%ug44Xyn{rDMK1wwBk)Hv$V$YMRs^41CJZloKGL$2R7MyTYT>p1`wOuFu%P#%<)dnuK1l* zbK?!Fc|r*19~DnWIT0Va5|SL6FiUZ!50HDM_4XHvkEe_;63;;iRIrGzPFZVt^S&ZI zTW=nOYnKJQN8)D|VV*;=)TmY!--x|9#$(`#%dUKgD&e_Q_)c(I2y9w6wNRHWpRVUE zWmic$WMpmpkf4Ay=|QUudhS#0QAoAiov9V;zY*j4fa>P0V90mrKImB}VxV`}_zBAd5Q>+o1u! z9oMh?_q`MH10}}Ymz#e&+ri5Wt$((cJ zFV(4Oz}VzGx*)P!^sX*ei9kS$WQk5vlexuuph$va?s!XkKz2i|65TDB&{@`X%NS~; z(L_m*ANj7J%RqH;88agr{B2!|} z-u8sq6asVf1pl9At>3X}!d!G6S&2$Te9=z0yz?{KQ&>9%7Kmg{0<}EylDvf(AZFw$ zBB6|dp|nw{+Uf8zIp0 yW4*~n_#>r5Yv&F9V4Hz{`<{OJMKo29H8U1g*qqh9G_YY=n4FwE^kkE`J@_vH5cCHC literal 0 HcmV?d00001
- +