From 7eca1129b2521ee2d8e65f285831c22f87b84e9e Mon Sep 17 00:00:00 2001 From: Programmist73 Date: Thu, 18 May 2023 23:52:40 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BD=D0=BE=D1=81=D0=B8=D0=BC=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/ReportCashierLogic.cs | 17 +- .../BusinessLogics/ReportClientLogic.cs | 18 +- .../OfficePackage/AbstractSaveToPdf.cs | 191 ++++++++++++++++++ .../Controllers/HomeController.cs | 58 ------ .../Views/Home/CreateReport.cshtml | 20 -- .../IReportCashierLogic.cs | 4 +- .../IReportClientLogic.cs | 5 +- .../ViewModels/PdfLoadViewModel.cs | 17 -- .../ViewModels/ReportCashierViewModel.cs | 1 - .../ReportCashierViewModelForHTML.cs | 17 ++ .../ReportClientViewModelForHTML.cs | 18 ++ .../Controllers/ReportController.cs | 26 +-- .../Отчёт_по_картам.pdf | Bin 0 -> 34878 bytes 13 files changed, 264 insertions(+), 128 deletions(-) create mode 100644 BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToPdf.cs delete mode 100644 BankYouBankrupt/BankYouBankruptContracts/ViewModels/PdfLoadViewModel.cs create mode 100644 BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModelForHTML.cs create mode 100644 BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportClientViewModelForHTML.cs create mode 100644 BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs index c083ea1..498ab2d 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportCashierLogic.cs @@ -95,8 +95,11 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics } //Сохранение заказов в файл-Pdf - public void SaveAccountsToPdfFile(ReportBindingModel model) + public ReportCashierViewModelForHTML SaveAccountsToPdfFile(ReportBindingModel model) { + var listMoneyTransfers = GetMoneyTransfers(model); + var listCashWithdrawals = GetCashWithrawals(model); + _saveToPdf.CreateDoc(new PdfInfo { ForClient = false, @@ -105,9 +108,17 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics Title = "Отчёт по операциям начислений и переводов между счетами", DateFrom = model.DateFrom!.Value, DateTo = model.DateTo!.Value, - ReportMoneyTransfer = GetMoneyTransfers(model), - ReportCashWithdrawal = GetCashWithrawals(model) + ReportMoneyTransfer = listMoneyTransfers, + ReportCashWithdrawal = listCashWithdrawals }); + + //возврат полученных списков для отображения на вебе + return new ReportCashierViewModelForHTML + { + ReportCashWithdrawal = listCashWithdrawals, + + ReportMoneyTransfer = listMoneyTransfers + }; } } } diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs index c2a2eef..bf86b0d 100644 --- a/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/BusinessLogics/ReportClientLogic.cs @@ -10,6 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using BankYouBankruptContracts.ViewModels.Client.Reports; +using BankYouBankruptContracts.ViewModels; namespace BankYouBankruptBusinessLogic.BusinessLogics { @@ -84,17 +85,28 @@ namespace BankYouBankruptBusinessLogic.BusinessLogics } //отчёт в формате PDF для клиента - public void SaveClientReportToPdfFile(ReportBindingModel model) + public ReportClientViewModelForHTML SaveClientReportToPdfFile(ReportBindingModel model) { + var listCreditings = GetCrediting(model); + var listDebitings = GetDebiting(model); + _saveToPdf.CreateDoc(new PdfInfo { FileName = model.FileName, Title = "Отчёт по операциям с картами", DateFrom = model.DateFrom!.Value, DateTo = model.DateTo!.Value, - ReportCrediting = GetCrediting(model), - ReportDebiting = GetDebiting(model) + ReportCrediting = listCreditings, + ReportDebiting = listDebitings }); + + //возврат полученных списков для отображения на вебе + return new ReportClientViewModelForHTML + { + ReportCrediting = listCreditings, + + ReportDebiting = listDebitings + }; } } } diff --git a/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToPdf.cs b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToPdf.cs new file mode 100644 index 0000000..ba95273 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptBusinessLogic/OfficePackage/AbstractSaveToPdf.cs @@ -0,0 +1,191 @@ +using BankYouBankruptBusinessLogic.OfficePackage.HelperEnums; +using BankYouBankruptBusinessLogic.OfficePackage.HelperModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptBusinessLogic.OfficePackage +{ + public abstract class AbstractSaveToPdf + { + //публичный метод создания документа. Описание методов ниже + public void CreateDoc(PdfInfo info) + { + if(info.ForClient) + { + CreateDocClient(info); + } + else + { + CreateDocCashier(info); + } + } + + #region Отчёт для клиента + + public void CreateDocClient(PdfInfo info) + { + CreatePdf(info); + + CreateParagraph(new PdfParagraph + { + Text = info.Title + $"\nот {DateTime.Now.ToShortDateString()}", + + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + CreateParagraph(new PdfParagraph + { + Text = $"Расчётный период: с {info.DateFrom.ToShortDateString()} по {info.DateTo.ToShortDateString()}", + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + //параграф с отчётом на пополнения + CreateParagraph(new PdfParagraph { Text = "Отчёт по пополнениям", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Center }); + + CreateTable(new List { "3cm", "3cm", "5cm", "5cm" }); + + CreateRow(new PdfRowParameters + { + Texts = new List { "Номер операции", "Номер карты", "Сумма", "Дата операции" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + foreach (var report in info.ReportCrediting) + { + CreateRow(new PdfRowParameters + { + Texts = new List { report.OperationId.ToString(), report.CardNumber, report.SumOperation.ToString(), report.DateComplite.ToString() }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + + //подсчёт суммы операций на пополнение + CreateParagraph(new PdfParagraph { Text = $"Итоговая сумма поступлений за период: {info.ReportCrediting.Sum(x => x.SumOperation)}\t", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Right }); + + //отчёт с отчётом на снятие + CreateParagraph(new PdfParagraph { Text = "Отчёт по снятиям", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Center }); + + CreateTable(new List { "3cm", "3cm", "5cm", "5cm" }); + + CreateRow(new PdfRowParameters + { + Texts = new List { "Номер операции", "Номер карты", "Сумма", "Дата операции" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + foreach (var report in info.ReportDebiting) + { + CreateRow(new PdfRowParameters + { + Texts = new List { report.OperationId.ToString(), report.CardNumber, report.SumOperation.ToString(), report.DateComplite.ToString() }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + + //подсчёт суммы операций на пополнение + CreateParagraph(new PdfParagraph { Text = $"Итоговая сумма снятий за период: {info.ReportDebiting.Sum(x => x.SumOperation)}\t", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Right }); + + SavePdf(info); + } + + #endregion + + #region Отчёт для кассира + + //создание отчёта для кассира + public void CreateDocCashier(PdfInfo info) + { + CreatePdf(info); + + CreateParagraph(new PdfParagraph + { + Text = info.Title + $"\nот {DateTime.Now.ToShortDateString()}\nФИО клиента: {info.FullClientName}", + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + CreateParagraph(new PdfParagraph + { + Text = $"Расчётный период: с {info.DateFrom.ToShortDateString()} по {info.DateTo.ToShortDateString()}", + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + //параграф с отчётом по выдаче наличных с карт + CreateParagraph(new PdfParagraph { Text = "Отчёт по выдаче наличных со счёта", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Center }); + + CreateTable(new List { "3.5cm", "3.5cm", "5cm", "5cm" }); + + CreateRow(new PdfRowParameters + { + Texts = new List { "Номер операции", "Номер счёта", "Сумма операции", "Дата операции" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + foreach (var report in info.ReportCashWithdrawal) + { + CreateRow(new PdfRowParameters + { + Texts = new List { report.OperationId.ToString(), report.AccountPayeeNumber, report.SumOperation.ToString(), report.DateComplite.ToShortDateString(), }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + + CreateParagraph(new PdfParagraph { Text = $"Итоговая сумма снятий за период: {info.ReportCashWithdrawal.Sum(x => x.SumOperation)}\t", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Right }); + + //параграф с отчётом по переводу денег со счёта на счёт + CreateParagraph(new PdfParagraph { Text = "Отчёт по денежным переводам между счетами", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Center }); + + CreateTable(new List { "3cm", "3cm", "3cm", "4cm", "4cm" }); + + CreateRow(new PdfRowParameters + { + Texts = new List { "Номер операции", "Номер счёта отправителя", "Номер счёта получателя", "Сумма операции", "Дата операции" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + foreach (var report in info.ReportMoneyTransfer) + { + CreateRow(new PdfRowParameters + { + Texts = new List { report.OperationId.ToString(), report.AccountSenderNumber, report.AccountPayeeNumber, report.SumOperation.ToString(), report.DateComplite.ToShortDateString(), }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + + CreateParagraph(new PdfParagraph { Text = $"Итоговая сумма переводов за период: {info.ReportMoneyTransfer.Sum(x => x.SumOperation)}\t", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Right }); + + SavePdf(info); + } + + #endregion + + /// Создание pdf-файла + protected abstract void CreatePdf(PdfInfo info); + + /// Создание параграфа с текстом + protected abstract void CreateParagraph(PdfParagraph paragraph); + + /// Создание таблицы + protected abstract void CreateTable(List columns); + + /// Создание и заполнение строки + protected abstract void CreateRow(PdfRowParameters rowParameters); + + /// Сохранение файла + protected abstract void SavePdf(PdfInfo info); + } +} diff --git a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs index 504fba4..b4035b6 100644 --- a/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs +++ b/BankYouBankrupt/BankYouBankruptClientApp/Controllers/HomeController.cs @@ -275,67 +275,9 @@ namespace BankYouBankruptClientApp.Controllers DateTo = dateTo }); - PdfLoadViewModel support = APIClient.GetRequest($"api/Report/LoadReport?whoRequested={bool.TrueString}"); - - - - /*PdfDocument doc = new PdfDocument(); - - doc.LoadFromBytes(support.bytes); - - support.document = doc;*/ - - - - //return File(support.bytes, "application/pdf", "support.pdf") - - /*/Create PDF Document - PdfDocument document = new PdfDocument(); - - //You will have to add Page in PDF Document - PdfPage page = document.AddPage(); - - //For drawing in PDF Page you will nedd XGraphics Object - XGraphics gfx = XGraphics.FromPdfPage(page); - - //For Test you will have to define font to be used - XFont font = new XFont("Verdana", 20, XFontStyle.Bold); - - //Finally use XGraphics & font object to draw text in PDF Page - gfx.DrawString("My First PDF Document", font, XBrushes.Black, - - new XRect(0, 0, page.Width, page.Height), XStringFormats.Center); - - //Specify file name of the PDF file - string filename = "FirstPDFDocument.pdf"; - - //Save PDF File - document.Save(filename); - - //Load PDF File for viewing - Process.Start(filename);*/ - - - - /*MemoryStream stream = new MemoryStream(support.bytes); - PdfDocument document = PdfReader.Open(stream, PdfDocumentOpenMode.Import); - support.document = document.Save(stream, false);*/ - - //ViewBag.ReportFile = File(support.bytes, "application/pdf"); - - ViewBag.ReportFile = new FileContentResult(support.bytes, "application/pdf"); - - //ViewBag.ReportFile = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location).ToString(); - return View(); } - /*[HttpPost] - public object LoadReport() - { - return null; - }*/ - #endregion #region Получение отчета по картам diff --git a/BankYouBankrupt/BankYouBankruptClientApp/Views/Home/CreateReport.cshtml b/BankYouBankrupt/BankYouBankruptClientApp/Views/Home/CreateReport.cshtml index 138a83b..cd8ccf4 100644 --- a/BankYouBankrupt/BankYouBankruptClientApp/Views/Home/CreateReport.cshtml +++ b/BankYouBankrupt/BankYouBankruptClientApp/Views/Home/CreateReport.cshtml @@ -25,25 +25,5 @@
-

Просмотр отчёта в формате pdf

- -

Unable to display PDF file. Download instead.

-
- - - \ No newline at end of file diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportCashierLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportCashierLogic.cs index b884af5..b0f36fc 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportCashierLogic.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportCashierLogic.cs @@ -20,7 +20,7 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts //Сохранение отчёта по счетам в файл-Excel void SaveAccountsToExcelFile(ReportBindingModel model); - //Сохранение отчёта по счетам в файл-Pdf - void SaveAccountsToPdfFile(ReportBindingModel model); + //Сохранение отчёта по счетам в файл-Pdf + ReportCashierViewModelForHTML SaveAccountsToPdfFile(ReportBindingModel model); } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs index 3cf9a60..b040377 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/BusinessLogicsContracts/IReportClientLogic.cs @@ -1,5 +1,6 @@ using BankYouBankruptContracts.BindingModels; using BankYouBankruptContracts.SearchModels; +using BankYouBankruptContracts.ViewModels; using BankYouBankruptContracts.ViewModels.Client.Reports; using System; using System.Collections.Generic; @@ -25,7 +26,7 @@ namespace BankYouBankruptContracts.BusinessLogicsContracts void SaveDebitingToExcelFile(ReportBindingModel model); - //Сохранение отчёта по картам в файл-Pdf - void SaveClientReportToPdfFile(ReportBindingModel model); + //Сохранение отчёта по картам в файл-Pdf + ReportClientViewModelForHTML SaveClientReportToPdfFile(ReportBindingModel model); } } diff --git a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/PdfLoadViewModel.cs b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/PdfLoadViewModel.cs deleted file mode 100644 index 2f8ca6b..0000000 --- a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/PdfLoadViewModel.cs +++ /dev/null @@ -1,17 +0,0 @@ -using PdfSharp.Pdf; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BankYouBankruptContracts.ViewModels -{ - //для возврата pdf на страницу - public class PdfLoadViewModel - { - public byte[] bytes { get; set; } - - public PdfDocument document { get; set; } - } -} diff --git a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModel.cs b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModel.cs index 4fd210c..227de7e 100644 --- a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModel.cs +++ b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModel.cs @@ -8,7 +8,6 @@ namespace BankYouBankruptContracts.ViewModels { public class ReportCashierViewModel { - public int OperationId { get; set; } public int DebitingId { get; set; } diff --git a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModelForHTML.cs b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModelForHTML.cs new file mode 100644 index 0000000..c215ab9 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportCashierViewModelForHTML.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptContracts.ViewModels +{ + public class ReportCashierViewModelForHTML + { + //перечень переводов со счёта на счёт + public List ReportMoneyTransfer { get; set; } = new(); + + //перечень зачислений денежных средств на карту (т. е. на её счёт) + public List ReportCashWithdrawal { get; set; } = new(); + } +} diff --git a/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportClientViewModelForHTML.cs b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportClientViewModelForHTML.cs new file mode 100644 index 0000000..60a4d28 --- /dev/null +++ b/BankYouBankrupt/BankYouBankruptContracts/ViewModels/ReportClientViewModelForHTML.cs @@ -0,0 +1,18 @@ +using BankYouBankruptContracts.ViewModels.Client.Reports; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BankYouBankruptContracts.ViewModels +{ + public class ReportClientViewModelForHTML + { + //перечень заказов за указанный период для вывода/сохранения + public List ReportCrediting { get; set; } = new(); + + //перечень заказов за указанный период для вывода/сохранения + public List ReportDebiting { get; set; } = new(); + } +} diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs index 51d4361..cde358e 100644 --- a/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs +++ b/BankYouBankrupt/BankYouBankruptRestAPI/Controllers/ReportController.cs @@ -36,11 +36,11 @@ namespace BankYouBankruptRestAPI.Controllers //метод генерации отчёта за период по картам клиента [HttpPost] - public void CreateClientReport(ReportSupportBindingModel model) + public ReportClientViewModelForHTML CreateClientReport(ReportSupportBindingModel model) { try { - _reportClientLogic.SaveClientReportToPdfFile(new ReportBindingModel + return _reportClientLogic.SaveClientReportToPdfFile(new ReportBindingModel { FileName = "Отчёт_по_картам.pdf", DateFrom = model.DateFrom, @@ -56,11 +56,11 @@ namespace BankYouBankruptRestAPI.Controllers //метод генерации отчёта по всем счетм клиентов [HttpPost] - public void CreateCashierReport(ReportSupportBindingModel model) + public ReportCashierViewModelForHTML CreateCashierReport(ReportSupportBindingModel model) { try { - _reportCashierLogic.SaveAccountsToPdfFile(new ReportBindingModel + return _reportCashierLogic.SaveAccountsToPdfFile(new ReportBindingModel { FileName = "Отчёт_по_счетам.pdf", ClientId = model.ClientId, @@ -74,23 +74,5 @@ namespace BankYouBankruptRestAPI.Controllers throw; } } - - [HttpGet] - public PdfLoadViewModel LoadReport(bool whoRequested) - { - try - { - PdfLoadViewModel model = new PdfLoadViewModel(); - - model.bytes = _reportLoad.LoadFile(whoRequested); - - return model; - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка входа в систему"); - throw; - } - } } } diff --git a/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf b/BankYouBankrupt/BankYouBankruptRestAPI/Отчёт_по_картам.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2ad147401535f6a07d0d234ea2416d7b2b5737bd GIT binary patch literal 34878 zcma&M1yo&2vn~oD!QFzp+d>ykaF^ij?(P=cJwSlq?(XjH?#@DjyXKOe{hxEsyYJoc z#$fQx+1*wBRd-ca^&E@*tFS0N69X$O`RvWuHY^hnBay9v1uPE_EI`P?Sl`Lq)<#(0 z$(Tx*iVOv8YCI+@Y ze;hy}Eh<-6R|e}p9Y(f>42HJWTGa1?Uma|XoDGc~sNN|!n&~^({g(*azan-`%l0A@*k;BXfO0TQ^O{_kK1` zHU?&PAQ1;E69WgQ_8&?P#_vl1IV?cI*wNP6!O+<8pGALP6hlR0 zCn8P2`>FtxjNP0764vh~3H}A4zaa6hRm9CnOws9mZ~l=JQ)DCp{#7WZ$V9~c&*M99 zfav>l|BMi2Bx3rry$XNK`O_ojVC!u6cc&Er!p1J;tDwC0XGwW*HA3yAV>Ak$XIkEM4%=IxpPIhsBYZK-9 z?c;GR3m5=Q`eu|hj9_8O5ErB3!M|0%WR*{@3{YAp`0Z9_{BGj$<#8`p0HXM~B1C+O z_Ie#LN=&bRP}b>0Jl{eyfwm(<09_;$>tI$Ulb8FuKmxccYXwS%G4SqA;4kgRPdo@t ztQIdq@Dc%h03-?;ZHGLGvf{KnuOZSe);xHo9PoIE(Q6Yz&z(LMoX4fE^G#5OKmDoK zueRE+_B}v2dXN4Dsl9E`XNEL;vBso@F6D&fXS8*iq*4`BOq-Ij1vv`}VT0 zwnQY&F9rfSpX$D!9>cS9-;oA16U*3p;$Kl6M6kVc1KluBX|J$Vges%S;=SAycm!lM^he`T5K98d=%Q2J!e^Yw^%7l51)n8xo$ozo)DZULgE$o>#Ts57Lm2S)9W8>5vYf4zxd=Jb|G2 z?Rdbr-Fk)67qW~WC1otppg6BUL=j>qr8%A<_{pfE=;g*OY~1*ce(jZ|gg!K5DI?Ad zF%=RgGh{(AgjA@M9T;2Kfu3Xb^cYmRWMwL*nwDScEIdqKkw=RIx_&Ko$!Zg}L>LBx zM8(&*->0Z8Q-7ZV0UCcq=&-26Jr+9y*YB0Weit$PXhdT-ltBI4RyO0u7}&Is6yg?? zJ3`{{8uA9bX;NAg9#-h?T*&cWX_R__pq0%-c7iY}Y0ZIBbbzYpVJO;|!x`P!&Jmm? zVe_BqRQlG|9m(iM6KCDGz)0Bhi0y?}dHUeTqnfx0oWwS2);RK^WQjb4h~mXQPV|l; zucJKBhu)n7PE(`Jat?^1g=+JX&^)$C4A{p6jzc-Gi5BM%Xw2rl#RS8>^Bk!c5Fx?M&N$H*4(?;blRC4`rU787_wOIN063tvzP$ESv{|# zc;&Rj78jzw(C{f)DoCDTti*s8I_bwhY}oulAYE{-8(0{xctO$@Q(ff{tsO{l1xu7| zI}!izj2waM$q-w(6)lPjZx{;Iv(HJ^5*CwkL(s_g(Php2(8E+MRD=9wryn6av8zyU9l$h9pHk5eZlTwV-yx@ zMKe6Ckn!USwGJBN4UPNP&9UfE-2+4lY%^@17%5baOOf=*wAG#QW=P>6J%pF|V_?z- zQ}_a{gS;m_XVBc`Xij;4bx@)#qv|1^#3e!q7)bN;M)RT-@RQ13L%T?+y509^Ho~ zLY(o}qw(c`4{*m*f<$)0YRGHwCf_|vjurYc4{|&}`Vt;d$8>;pFCmWwY!RbAIbFfn z$sh|XNeIf1!DA&0OUPA!>~N2ZV!Q9ValZpcj28diS9}t&{c*#wt-YrMPi!(rb*G>6 zr0lW$bDb>V{=n8 zCn6w_8TLKR|LtRD`jfM*^iAJOrT6AP8U+8;FZ66c4kCIMMs^}*MphsZ6C*3*d#NGu zUR#+P3fP!h851$S7YI(q)+&D<)c#e?%F6y%hpfJ}F+f^EO|Dj*pZZ(QP$Y? z{l9{(wZ6^YLGPu4F*6azFv>@k#l2L(;AN#Ls^aXpfCrp9Q)y)ki?ZDy6%U#1m z-2-pM`s9nam&4Mj#qsgB-^=NI@w2rjZ^52skO`gUK^cy3pP24y!V5c3V_0CNNLgtb0tp_mqU(*P}V>kCG9=@5mDD5cOt z5L)jgCfPNv!BlCbPAj|`i<*+ShC#jEDZGm#?N%J;9f!)7z@ZZZlZQHpgQinQLQWnl zRY6MrqOjBSnIfxwFE4O2tbv?7>luuCo1L|lyB($-!&)j%!SxMJ&=q-HG4B^?y;L|l zl0uq%o@>rN`qAqe;nHV{pAYe$-$f&!u&MpZ``i_JD*HeX)Z4_)_vqNXOY(UK2U-Cz z0Jg4nM*aNHRg=;jx9)P1{C5YBbwgFY=KbpRn}kGDnGhXtPWdXw z!gntndd~oIocy?m1)`alWHsCs(cAf$JlR1Ql57i?v0|=sLeU48Z~1-(%S?VT+C$p^ zKSPS?Plf$I0_C3q7og~D;PlTuKtlLW!=Gq-_iG^uVMTYxcXySrF|qxp)Rl8EGIlVx zF{P3)dXEuvC-?V@h=Q@H`Fr5HQwhA^EsWnA6rJtttcBZmUlf&?_B@s|4SD5ZtUOpzjT4`R{t~ayVtOznk~>5H-@bar(2*j++1Yp8#4z76Wjkd-F~&XyJ^nPv$x#yC79rk*E*4@#~TkP?W#wkWx`KvA>)aE0P5|) z8?llBk;P&A_=)4l^c8vFz!R_hSzzN@uZ z+74r{Y@GYtzqw`>axHLrp4U#+EoyY$YFZLv>j%bSA`l}EkFsxMeN>5U%-TPJ9@bQ~ zQFA`6=j{lBR!0wX;w^n*FQ4i{m3(c`)Rv*Ewua zBY(TWZ9V&%*L2h?pTa;oNHr_ZB;zWgXk;N7{u$7sEj?Z%e986pwuo6upU6;_)` zZ$}GM2lOox3bU_76Cv?73A%q}rYG_vGEGl?1m*U#es-;!s9H!)P<=nzPlV{V$*a%V zSRT-)q8Nwh8G#)k(OI%LA5()dv!JG}oX}52DC%H3gWb?YSf&-Jf`vk})Q5sT-6-E6 zw!k9f+)u+Og&kz;8qoeMgs|q9{Z8-m@x=WwV~6-KUx;POH@mlq5Fm_AHA!s#)1UU7 zjzEAxN!=^=0XWy;w=sy(kHQKiNk{}InMHpXF%-U#qZ(m)2%T+wDB%V71|1|%xYEsj z(cABA#?1B2CmbYT&bLC=R?hqFX}f5!3XYJP0Pu$C9Wr=`!!e70NYJz^?-V#^#}ddZ zE@034NjoyBX9JMsT7@9DGiQ*)(f*)p=8gKAk~f6J0dqzgbdW=S$ag~(IWRdTaRalk zEBb=)LPz(d#}|1c*fTA}MmS9X&;g!%Pxb`l3Z&eY=o8Um)L{579HGA{d&8mSOUM-r z+9vS&=$q`RRYYI+`BX&gvaz3}L~z|Mq;=YL8>i5o{>G2i4&@AzZ)lTfE@~4|uIYo* zDb^Fp+8{uG?TdhKuX5E(_?l<~Ism|@>_vDc5+GRgN!!1I|72R!3GInO{MPf3{D$&{ zb6RjR_vJolyr*~vg0aD#75}Uq&I1tWcn(G#mBT~#C7`fQ?^8z3C*4Ruf9Zwn3-ZLS z>jk$knLabW&)|O3Vw3KLjQ>}wAQnz}{>9zR zuJm(~XHGOqNBN4lv;q1Zk0#G1sAfWk-@QmzlUL`kjzRf7wKFq4&OwA2AdJQyH9fK( zZ}P7=Y*{8#nTc64CtGj8F6K}hfyP{Yr!R-25N1dom>JI^H?U9C9!TEssQeu8_id0B zKJ;em+7CWz9pRl(oe`Zey4{^UnKMDcdc|ZidFf+BwL>%xpXrd|4fjmfy=T^Ho;eLJx>ulpEpay}Bl&s$0thgL1n8RXia`y;q7}c)s6!Lw-y1 zhrvLt;E}?_6RW$;U>gCCNRoSM!plO8A+X7C1q9{dz4wqGu}yakwAdQI<8F0~ynept zJ(D?O$+$4*>utPDzASy7ab-gS4-1Qh5n)QhoW#LmD>o z!92w&;-)}pt`DqSCm6){ZQ{34U+#lP_r#`jbbxkKGeQrr4NFv-ETYNh%;#*dN75@? z@uJo3hh}d%E#JU6iSO>h?&weiM^8|oiVbc2mD& z*^Ho$4{!q~r*W|E3xm@1+X~}7?J({senWd?M#Oh+DLxSMN3q*c>Izg)sK3w=opB)M zF!6i?ZUIO!zQk7=W4YhoZ0t;CckW?Xq*?A7|f(?)Le8j#V^by7zaB zwCuzBx-)3Ta$rY)IMG-5tpWnhEtU*ymJ3YA$NwZ2mlxj6x8>r4h}E{WKGflIt`?4V zxP?5x9iiUex(!K+y#;qZyEiM~K1<^Y!%4~>x)N+H6X`+XD?z0Qb{SNiQ+K;HxbHR@ zN>>lL-FzqbTPJMM7o^|d>wy?mWu!&%g`Q{o++ZnBV7{(hH6LyTPfrfPFTY)&%>`*g zUrKJHOkL?_m3D((AS=#AtnGYNv&0@**XlnE@qmeWwKGB$SFJ_q^nP52z30LBO*ekF8;Sw$EntDVobk8I|KGRx84e2Cv)}R=({HFcG~+hNuVOdK8l)Q zyGEN8fbxa#;uko>VLgBTs10BU`` zyOONlu2W*K58JF=a%sH1|21s$+uQ5oJ!mu2*Z1Ft-@m6a2+X+Vr}>A9cyeYQ55-jwMIv4Ic;eypCr?}}~cW`>{s^@@D|<>T0){+664 zk*F8^(n_P>{;z-`k{HD7bAGxTZA^9_LXxOtzwY*M9SDXyt|!9KFTRmJAF2mi4?$hy zK4H-itz6(QzaVa}T5Xzq?DTq{PAX1y8(qeam1!&07h2uq7yB)q=cug{G;8U{Wug#n zof9lr*yfLvlxvt#Vw8nR^~urUAG~#9R`=^x%P^O%m~n2n%0*E>WsqX!bLZ4Peb;IO z3=ZZx9w^OvI8n3G@m6L73i)Tt;GXxs^DW3UR~5qYs=f)y)z2yNuA+@f;#!o-(&EdL z-w%ux#Sf}#%^>VQn}~XTU&ErEG~L%OvkG+JfQO>OKbvPs#5+^ua;ODX5S$&R!4%?7 zpO^@nYUP&7=Axt%gnLl!YfU4NF0o04>XF%Rn@+*!lyjnJ55W6;qSivv zxD|gEozh{~RLGUy%aSCPy#Lk7W8$ZQ_7uEJ%1;hb%IZ-n%fs0${1Ne|p^J8RZ2A)^ zY!zWuy7m(8LHg6|#j3om78b{famsa2iJikq)ile5>3fo zE(7LdILO_{Aj^p}L-K|6qyuda7cHjt+(WIeAwO%h{J4*zdsynH=Go}Y+}z=u0_2c_ za~){;2`n8}u)TX7XzNCA9)2Pxo$6rNC00fp?Va87=+Gp02<%nBwjyZyNyCqb-x12cJ{su+C(fwU{t z1-6JkaMlbbfVpYcaTy9>4;(HuQ=6p|87V3)2sc_@(ne36Bmi@MKXo`2ll{F8&V1(> z2E4Z~JXE?oA~6POjvBPoEl1u@1I^A30JQ55u?h*FQa*fU6-OO@`Cd z20sTUA4CX^=7i(n^YuA9uJ__{JyG;!0thy?N5@+lp$H7vY|3TDjxx5lF-Sur=#M9g zJ5a`8$5~u%_F5Epr`KwfSn*CfAQ_lv!r`|?yjik@r*7h?IzaI#7@M^h;b%h3f+M^U zEn+YfEKddZkxE@1XF{-oG?wIbiNKj~L0aU40Qx9Ygp+gbJQCKvyQ?z4`D752fpuya zFfs`wQ7prtO*O%gNAkh*VTQmthaJf}RblmOv8!=&BjnwX)1>}K9f<1m{7GmfOy|-T zlX~U!GFkG|kD`IVD8W(vLvHL`Z$*3VyQnTsfbqCH4=c0!Exv(iOWm3yw8u zF>bM;e(HvPEABPyQ#Ekj!_Pdzq-)A*>eE7=BE>FWVSaDA^njdmng(V0=;ShrwjB^? zF4%u+I_o>%E+5l9eG0)TrN)LnWSJeevndBGZYFT88k^ggr7*)wu1T^rC*t#@`8;=3 znSz3o0Qo>f(M}#%g!HK_C%|=(=T_icCA=bgrx!Kez~H0~wX62AzoP%uu85sEYHmyd zu140)EtR((-9x+$qY^n~mx?+}2Vcu~oFV_2YdWwp|M8jaAUnDb0yhs1s6-1R`HRBE z?w}$)sa)Njf(bm0rF5Z=?d?N5#9sOV69H2WZyw44&_TLA<}eTMSet}sdbdZrbWXj9+Iwff>X9cq_~px1J_L@vuE^_0m``X7fR)nBOK z^Bnr-KX4!Q8io&&I~4>__8s(Glw>LMdDO*|MvRE7bNMjv&ao3$&FD|{NGCKac4c67 zn07x>_$p5T&u3`88LQ^Me?j{tCVl}2Z7(kP+T5zJPWthSTt|Q~S=?u_xGvDJ>z$)G z<#Z2tBoB_f8_FG8-!|FIj`M@Xp6qaDLsX+SU8YUimyO_+Y`RRp`8p;JogyNR!vV9KgKG79i*~At zfiRr&i1V<_&}(}*YaqQ}mLA*+jFB#X#*#i>--Q=7R>;Pq;pfqIh|GyXb`e|40g77^ zEtK+5CFD3gL^S#EM{jW5sll*@CeDJGR$c}ql-@RDY}l|3<0Tva_*t-g*fP3aK7_Ke z8bj=>L%l?Qq=HhKyYiBjb#@Xe_aoQm=TF^-LsEoMceqiEh{Y~kOAU~gj*8ytqvq9U zSh2!w>MoooC#k7vbO>Q?Bm`07Bu8!c!L&~uKBJ3gkHaprJa_{)9;xc+SQ7|TW{ zV*{KBdvQqii}|xIzMWO~yFJ~2&fn{un0$DTS2NwVyT3woTRVU}#`@bQN-l-`DZ*Ha zlsLvUwWVi#_XPJa>@jO4X;y*X!hRGiU*PZ{+?XPTf1{YLfgF+N=-!OQt`v|p6L^>` zfk_(|ma58{$AS()-0c*+Z!VcPVlGV@(749DX1FF`vAt_TOn~*O;dv=;c)VJYNI5p} zOzThWPojG=`UU?+mYAv(;c>}dY5N6}tej!;)uT?=G7Ca^Q5K3u#kQI|ok6V0p2j>c zKxps){S1C}rGh551G7*z+}&{YF`4kyYgJDww$Ff!(VXS6KR{WM@uOU3aG@_|2486B zSjHRTaQS4*+8Z^34TcIq3o}&uMBW_5cw$D9uyS*Jr=Vm03G6-BI6@L`neL)*?~U?k zsmcE(^NE ze;$^1`1yi@6-w!Zwdp&7Dcg`(mhJj>w84Zeonvj)=9*RR?WHH2m+{n`uJMv{SCo{s z;g>Nd5iy@=%v@_yE6m`$>{|-rL;7{jRBxRSq^Zl?&RUF#1TR=8TMm}*HHjVNz$k8H zt+Ttn34rT^2%7dWpj!UMmR4=VLZmkqgo|Qf1y&udPzMv~A01DHLantpH#f%Hx;F*` zjrCouLbIBi;2Q6BW%qpEh3|4%sjckymAVccI$zB8(F3jA=38GBM2OGDL4|T@hkKS? ziAaW$jI%HC*03?rD_2{Psr^+{n_EYY?X6(F$6KMZ3nJ#F$TfSsYV2wt(7$jqV5h3o7Eax zX&@X#JO5vO6FeKn)p9@z+RVYyIDGSATcy_zu~^IfWRMP<$t-$81n2&D z$JrJ&r5+k2+BsIFBg|>41#@@P#8^a}9jg{fbdbAzXv&T~ewSKsrA}~w302T- zn6X-6If`ZSb}SRWy^IYlxMs<*%LAh(zA!}bciYUQQfdEog2NEMEsJZM)i)n3e}0`O zqdHw+Mk0$>F)=$+8^khK%D3JzxG4%sp$^et&r7rKE1dI?=FTTW3xf=qJ`W4o2uSEY zo!;&gzb-XwT>48?`0#Fn6_B*coK7z&Y2+I|DhI@v z`6rZX$aa)VNKyb!q+Y$xJdOFU_`GSmHZmMmDxqY7$SuwUtv=)NmaFJbF0c z&|E~LDT@Oxo#EAkUK+WjK4fz_MgJyEr*MQxEq0Yt)#rOe_$NdxHw30|_b93PTPd#G zxWdLy%;r#GbBl$?bka0SDD}eh+oD=XxMTQS4-XIbLs5&oIz?TD=YSU|9nQXW`vaY; z!v|CgnbEFPAk61%#*E1Un}J3*t5cW?7#oy^P|XkbSNEUtL}##c#^_ZTkSecj(SeVR zar);~znRXcPcsg~im*kh)f?2T5euaZ*-@i&doAR9T!MBJs}?~ZGIjv}$(eUJY6Cu` zlA|LKV}S5CPMmH?FESSXfMOidBp)N$X|{_07jW7z1GbgVip9#F=|JVZfk`w?2(&b+OC$triqZz%bT@sz_!P;y_&z zVJn?=xyEv%qfEv46X+2LPnY=McW$(hGzlyrBYSw-RoVtBUZr06`9#Cvt|O10LVZA{ zm||TaJeX96O7urhaC#)K>!LyZvFc>6?~JtIb6PRlsN?WjFn(g0vmtD< z@q#Nxuxx({_v15z$AR8XoafaEA|iR}=Y>Z_hbDca(a%0B8uTbEhu-YsHXm;`qG;^H zhbxXnPes>d3b^ae`}o4cNJ4D)f!As2uFVfXnS3fcdAWSCz3=2WW#D++MSb=>HUnER zcg=D9)XRLeC;?PTH1hK$_c=86;YG^c%AO^%N|(wR@!$16*9-&uRV)>)Tdh2;;>Qzs z#KtCWCJ4W%o0z~ibYXO7-9#hwWbHbVcIpD2gnJg7O>h?^{2y#MW;{-lau- zmK@OE$%Dxhc2CXk)|gg`5ea!M^XjsX`?P%J)Rc>tSFg$W4=sM^u$Ms$3 z@>F?U8*SWlw0v>UcOF~19Zzlqe2Mcs*f6bFdCx(YKLzg}#;oCv!F= z{dq#Qckt^5XlIhLqw=}qjXqaVkc$o{Of}68M|pIWupRbb>r>M##Z- zbE4EmVp!?%Votpqf;xt7nws|SPhL_6hEGXP=`XVS;y5#F`pvy9vmLXK7;nVm0ZAcc zx{iD(zbE^A7eJ2zsWCU5EM7)WRG0GF3d|O0^V*Ig$&v8Q+Ak z=gdMKQ^8l3hG+AsLQ;`jj8lf^@|n9s`-d&@s;iKLVnt!;dd)rOnUxGb=@M>tKSG&{ zCpf48gs`QYhwVm^gm}Mv;(EZn;RUf}eY8dE*4xY1;H~laSOO}V{ zmvLy3wAb}-=uaIH6_OdEn2}k2-93%D>v+3q^jZ3C#o#&JO1gR4X@!>IRNG>|KaxEl zAp`e$&DHuh{^j!Ca=9nN>eJ5QmPkxlD`+PXf?IdB?&gVB)Mvrhaxpax=)zVuf$qb7 za@n!k`Cj{RF4uqaPW~ps`)OrY5JoFp=cF^%P0WqHc{4fsjHX`NPhtH9h;;4wb`$JLluVJ6IO2JW-ttlG#Ah#i56$Da0b`5ym zw`vU?77T&<4?wZX4Kykfse_APuoUxqU*i=MyoY&*(Ioi7s9l1y(@H$$#hfxm;5gRR z!seoqy%asM(f4PGln&CduubF3uawQ`f}8NJ2XilDncCn#jj@W)^Gi%a5i8Vp(d0y> zBLyktjX6Gw=BepCo%s1kFlVD;lH^iD`<<9|N;HANX-CP(EF8r9S}-JVekckp=8^hf z9J}N@7)D6mS#1nDq3yf~ptSYaO8(+@!=1Om1|Q2-fPn(E?y z$8T0aG7J_ySjNSnyjnF{Jt%+&*ur{fA~aMIET5%o(Fgx>7WAV}4=u;_&8% zWjC=@YmizSO_QZ{+RlK9>yXSEf98Z+ipR&LEl|B#f+ulc_tD#0H1u3nd|-uxFFICs-hr^v5#x-U21#zip) zajyDVN)j<~+niJbx~+oi5x9zgD^|TI5bL5#hoV>gNW{^}=IJhxZiT~ZmGWR6<_{)Y zngQ@t3q6ha9oB1=%CG23^71S}a}UlR>rI*Gm^z4KqP$<2G`HdLmq~5&4)5CM;w0*+ zGr6kt?=qGLO)`IsubO<>QBA|-k5d!k^X5Q>d3@Ox7aCGUi*^e1QtU-Ry*lcV*Bk=D zi5U{>I&-XGUCF?R>7(ahV008K798GkDJW{6-aoUdXa*Lcc=7lrid!2A8OiOb?FkD< z?uF%e>@R!Q#*7_&Uv_g5qnl|0BQc)27%I!}v@1LqErc@9kte_kv@@=X%EvP=QqbsS z5m3Z-Q5ZwDw~aaH=Pr7i140ua-9gP@Pk@Y@Ghx3c4=5RaSxdK}nU1rFl7pz063PGl4o=_j2^rN1betP0I8R6&3y_Y-DEj9hm zQMUzs!f`8)-G-)Ny<$j@vx)&17)e=h$(jkZDBh1MDp9#O&2DP>6OP!$tM&j6_>aLn zkT(8k_*?Ci~Yq4ad+=Ji8i9N4`$UZ(nv+xJ08aISAV{hb7D zHqWn%XP%d}r;C2$6@WH%xAH0+k}V+5?rmK2Y6eZ)*QL&L0#@1D!;Ws(fZs_Y2yD7{QfX_G%6Jto&F7#uS6X2?!HVKYQ^V!H zy^)nvT2xC^T#I0fn=kxJCvs1q$IYvkHA)`kFx_&u!CRYt?yyE$UtQv-d9y49L)b^w zZD_>DJi9r(E6yHy^sh6@ej|5gp953nhvk)zoVY?oXVl_U?-o3i&mk+f(lv!dSnJzS z=Jo0+RE1m?@rpTBdgt@1#laz1zIDL^?fR??iu4VlC?MGi#7Zo$9tym-^NA+r`U~|B zyE~R})Vhg6o!{Wyo;Xxr<6^7_Jk$)73w{v^CGe?RCN1MYuj|G+J+4=exXoZx4r2JI zk@G0uavVe~$aS%Q6m|S;t+200h8He-Kq_F&EY1|jSigxbnK(rFu@m`=A0a-BupbfL zA<{?I=#sXZ!fBt7baH<@;VH8eY)jUBbem%~H9x7lvO^QT87N(5QUHrA@AZBEV4^8g}Usx=OD$w349Y}_Uvja2rQ z$1uZ!Wv=yHp>?FmT6s*SMveh%&|MA}YtX7a;;C|edbfA0n5vow| zlh@_+KW* zaG&Q#LF+Y|U(v+!b*>?X00nLIQgEwb_koZ*Qr>|g{Yo(?~L{s(z|FZ{( zi_n%mo(||Jr?_2axJSMBU{AKU1($Wugl>Z8vA0fJ5#6e0pF%ftCXLk0NXyr7^B#}0 z&|3d2bSoN=oed881~1O9rS+RfCy3^2q|Wqrk?OBjR1LHPrPYc|%;>#LDK6o>awcHo zj_5Iw!8Or5I{A>^DZj`h*o-mE{aDHDYXapYe#AdwE1GJl3Xc1AccVw;C|tRPuc)uO zg}XDV@tuAubn$pGs^kGq@c}tDxMORK%rli}6vMxXaY6)7H40CSu6eoa8u=agn}=dWQ=yOmk88o=!P5xUtq)?SV@Rim1s7s8SP@`ttfn+yYY5Xwsw^;8U(kbA z)d(gjb4OMeog8F=p!&VG$;pN<4p)xhYHyq2)5K;;|a1VYs;v zQRhOoaAqIhsyF6LwrrgguAI%AIunf?NVd#(t3YYeTh*(7Z@HKaDEjTv`k0kX4Dfc# z+SDsT82P%giF74>z&7yuTJO<8UpXCpcm2e?Z78ls9rRWmCamhHsOU(&PRpfrS33+i zZp3%m2|@V+1pysFm6$8S{M->#Vw+$W6IQZm2mb z#L^k)xyp0Y@e42M^yepgLrOidAHqx0dBKBdhXQRR5Y};i4MWKMP6J~a#eggxQmOe^j;j>zHK+!{Z7 zUSsVvE0T!j(9sx_7lr$CkTUNgKN?We6iiE=Z*@KJpAY*9NLnfs-&I$Gn>10D@AG`O z(bsd|dIG!82P>#m)eE7gr*8`S)VkH#rC01uw48qHw?J5D{7HSn0L!Bay()r~)S*Gz z!^7j^+c{^gIxeE424&jFyrdRUvBD7(r zFHa#@=bLxB2{Q=+nBJ^h&i&t|2-Z7(?HoXQ&HMch>fg0BoSk^QlwPZ5LjR?8ci706 zDPJ4*#FUDm1wCDb{~`Pp^jIw!HG9Sn$#O`-TpblgojWXFN}^|2Z$}q@6q6h-_Jd%? z-=bPAEAXb{hlpUjbi!d(8Ua1ic#scjCg3d+A3R7kGdFcqZsue;OL4Q08MW&4)R+st zTjC&!R4GbI0h%LtiU66dka5^CKaEOTUI>t*^7Tg&xyXnFUi=eT>KG^=>cRFZmq!dh z-kmFNip!4E-|yl{1wAPdaZzUy$4hS|ExTgG9OR#W0oJyIqT;c;glkvX4!FJh0HeR0 zu%Tm@#5ZrKy>oVZlg;-$$~I)-^VUu+&jgp4~#@ zU9nl6pCGTGT~qZSA2Sz`C}o0e|F7sB% zG=bn*cR6*P_y2!eyzOPShqQ| z&jwY;xjwqrxEHuxH&MY!p-+aNFa)+fQ@#2rASprkNM$41A|27A6ll57(pTMIy=uSK z&5hTQd4Wad1|OMFxMiE0);Q0(K!?9u>h(iX*h71_?8bOpwr!)izj=0;Q*QNC2uG`Q zIiI*bH9d6~M|PnI#|>3R)=`kuB7=$3tuFl-BUz=qo?^bPtB*LrN8?0 zYVy%^jCLQdt9gQu&@7?bd4{u`=^~4clSN#ah7H<8xP8e3%B>pRTYujP@WVMNIHD;3 z6T;07_WH9(APn}QzD=^vk4o-9vZhqNRJNjdby6?3xm4O(1#{Aws7j^l#Jfbx76lpA z5_5GKHuGA<<%CyB+xrI{@GvDNYv~%_@VKNo zc+w7OKx~p6`uQ9vaJAHvp$`l?)ds5=uF4^Jl|K8Io4=2?d|&juaD60Wc}LSQHzX)J zeR>f_Z5wQVV+@?X5J*+>&aP-r=WNK@XG7R+BR^2Fz{Vb5+jZNrht3IL{|I1alx7_I zzJt@21y+ciod0QF6xV$r$`u?g$*?QUtWV8Bh8)skqN?8M%jvs&J{R4(yK}Qhw+a+c zn8%v;cd~6dL9i7^23WNRHnWPwZ95T+zpO*rH5_O5Yr;G}DD`%f%?~oZseL zK?Lnbw_dcboF2G(DTtR_?xpCTA#M|L=v<<*1%fOn&IU#lm-EY>?idJ4dH6&Z;U4&W zAUY!^FG+qg$zU{;2Cr{LPaKmOdn%18TstJff%Y-A9Qs3vIb6y5Cfjeq&wdxYU|wDz zV8nbwI!c*-{cz>r94h8gaYp(`y6Ha8loG6mX77TAsAgEe5%##-@&l{!$0;nVUZsD! z230dT)pBHwzc*ePo=37j&xbOG(0cPagcn3sZ!pDmReJV#-2U;F@q+P%v~>0s+Z#&{ z&k@BKjZUlKr!6>WI}71SJS^o|6f%~^AhM{4pktiZ=CAD)tlMf6BSLku!-@4j!zmA! ztWSUh>kdxWC7QarOHDRUXWU5}4JN?G`#5XQPCJvsOZ?yNtETKSmcDyQgqS|fAm8+k zMx?kM(;(S1#zTV-#=||=PE4FBBI?d9G%eF%O7l)OX;9Q!GX>eH=89^upU&>jpUt(i zwK824i{i11D`>QgM@G_w&-Kq1heQ-jZDLv}Oe~I3@;?gyEWz}%@mKB5YCq5CM@^}g z7A2sS@n@umBy<*j>z2Bb!Y-IDu8|}Zbna(?D#}?nDw=39moH3PgLNIeSrIKNt?6#} zYRO#4zJQt+TSfomp&VZDv4;R{Eiz*Rp&h&g=Jd+bc8VV?^HzFrq=H(c{tdWpR5Gsa zUg4GBw%)UuK9DebngGhLl&-8VlhLhQHd_9^QR1%kBz~Q;pvK+Y+EJL@>8DD$8yQ?G ztzj+6eAvuwAO*P|MkN{8iYmaGpr)9Jr%TGN??EY?bH8Vwc1#iE)asNc$DX%Zy6e=b z8X6TW%qODGe{}p6OEFb7$3?KI^49ZO?aoUNc`Ee-kX+OHLKtiTQ&okbv#CF25BTsM zwLe94xG0RR58-k}Emx^$=J~z+ zO@c%ABkc?YnkhpX5V9V4)V{%ObS)r`v0bJL+OGipC$bo;hU74Wp9u~YC?|DnBd>Sk z;a9qLuPVY??RLsU!3dYCi;lo0E2R}8CyvvgUBH6VX%B`Xpjq;?VqD2?xjWNZW2N(U zyt>lb{zoYsp|&<*WPg?77xPbzWrYjYD++EV-gWiQJBcAaJa*Nqu+{$Aj1k=9yrIWK zJJ+n674rop98QiOC_ku7pB02lqme_=mziaY^n?duo~TtLhLegLRbJ%r1?Tf#ivkpP z9I5c;3chyP5T~8k;n#$VN7@uDGOnK9LbJ^!XJf)=-{-qb^==qS-*%-O?72sPEqnEM z63bnpUwzOz+`|mF;k#8YhetM-^yZYXLSUP~ka2}|4HGWKD8q>vD3w`mx3>&cd56DGR=2wwsn3o8K+pMn3UPT^Qv0#oK5FOE!?M)LQE3!+<=TL1A8n;R%dZLpcd&GB6Dh5(Rz}Ra#Z3`=x#A-Qv*;!V;h1T;i>T=#73{N z@;S3e8kTj;5DCMOfpm_*(2Q#l>C1uo*jqeUM|oJke*dD-v+5A~sK4Ty6cU>b- zU&{M0DpGW~+v~H{Q_7LcNl~LmJklpjYFEc=g6FpR z@x!4&2EsSaT{85gfM}i#8!joT)+s1Oy`cVg{>FOQYhJ zh;ye?pDGXkQb?nryG zP(DfG2<MkUL@+4&>kVB5!)|l=CG0B6r5{lq?W0q+R8u&wp%Tm zJ)(8)HK;qUl6JRdY^b^IuzztDCh)%9X^D1rO9E{~Jm{G7=k{y-7wfiY3VWUFnhd)hSU6BCeWn7Mn{ z;L7dR(z5JR8*snG8=c2{v=x&tmp2@IlfgQjzr2Q7zM2X0KoL~dsyuc!6XGMrs}Axy zup<*LtS1?c1z<*J@kEz;5E4co3-T#)9B17^X0qcc3wDItDQ!KfmH9uk>C`UgO&^m0 zjT%dVUTeYkOVP`+OB_$(GmyBZxwYB@PBkSXDDs$rc84f-K~Az#3?XFX+ggmhY~4%W z93m4zja}UcH+N4;~*&y}7n>_TQ`_2bx zu9JR+Akaqt(L|f);~upB_}YBF$>GIkB|6!$2vkZ*VhzBgvOs(E{OC2{Yo+P!)foHS zZkf(Ry^uFWPN!~B&^+>kFy#k}2vtVR(~LPk&x=c#ZNj7xcf5Y^FDUOX{5g{Q%A9$j!QlK`?arn>N( zgc$zPb||Qst3Lb(m6YPJ&6QXW_1;Inm>q|F1%2-yg(#A0Iru#o{P!Ei)W%e8otbC) zAE$=IGY}V#We-E6MQSiTA!hIcGz!@J{U@vEgiWyETi8X$J=!W*p;%;f%f}-9qNn~> zYi|J*$F}_oC&8TrcMBHW-QC^Y-DYqnK!D&7+}+(hxVr}#+$BLX4DxZ#x%d39ysuup zdarADRrl&;z1Hs4Jw3hmj|-V!**&F`Q@C3Y?;Br1ySegN)EkK$_3_4#?!={20*UI6 z85%Ba;yNZw#v_)N`}H(mR_P;gEhh5^D)kq#ngFtNX(!Ci$XrWFqsm_X5~-eQ47NOw zsdVv+hexStoFCq-F(*2|BPP+97`W$uoM$+-mE=|L784M+(-96+6J&SXCa*-@{tkZj zq#*{?Zk;lAT5j&+7D<+&5Tqg8^X?U;FCMi@_2q5iS8-8d3ijvj_UB&=g+ zO)8FVHbRLXMIMOztleZrFRK|b6O@uFU5FUC3p(ctmZtv(PPr1mUacSR(=k38?>EfB z8?Ub`j!U=Az%{7gz;mU{Pd1-P4VNCx&0|Y94VJfJxX0LGJy~tVQ?OT$=1m#-GQV#= z$rz7fWy5}~-F`%eFpKb2=O86Qatcpw_z-j@U}dS9XQLC@;3as!1#(Jb?RIlu#f*$U zQ}`WRH0elKl3gO*dT(O?{dy~AZjDTK-yKbb?vll!!Nq?O!+M4Q88vJk4`H|x+khVz z${nNG?s3Odo|jTg5^YKvV4kU%LPv<2FZ?})$-gt_;(njyyBrPX!t7h*gUEnSp}T2Y z61{m_o1`SjUsW@^ALQUTlbN2AkG-Ram14tZ?+LUkyGg&qDhIeBK57)VRDviMi+2UG z%gy{xDnak0+}arieKloZC(x+|a+hHYM3CY-h0#?~sA8kl@Cr-Okrk0lFR`m2a6(kN zee&4Jb7;c!)pL^fOpn@y$WasVZ)r`lk$+o@_3g*W`JeT)jioJa%4iLM+dS;SzuWb& zZOu|PyRPgmqjw~`e20^C;TQY+T`%mAcg_;1He3xnrC7`{%+S3 zmf`^r5iFCEJ#3GdpZ-Q)3!omQ& z+l-ak3+lr2&;HToZViv0-AtbWhFcnaMqw(~iRZB8I?kxur@r~&_|JVRUN|KZl;F}{_=M4;<* znb}+k->(YwJc_iW8GXsrwOZr0>#s8W#PsXLh*TK=)&_SNblx=K@TP(xf4u?pR0zgIT z^9-M?BSg4nCkDOi{IJLVW=v?xxdt`rI@4_o2M~vFJ%60$(Q6<=Hl3!S)yRuic@`Ct z*eh%`5QnVGTQFrlg9y2kS~n1RA)5-x$0(ab-rvHl?C@=#^<;i4Il+vnqVR6OB~LgZ zrB%FB+&U!Ws9{u}bOb({BNu`b0y~UnL953YtY%x>dec!2ocenEU2E4zX5RI2A_|{r za3v;`A(TMc+cB@CWJ-sPKnU%8CDJGh1Y1&+d}i^TZ(p*rWu{eoux_RC?PG7dc=$OC zrlmKT{%1mKSpQfX$&zMR5aoJRK*>Qt`m}9G8;4PqSJ9XGB~ROgS{F}3jTlX-l$P<9 z+=3dj(%mQxt441^JHia2PWqDfzjw#3nRM^pI(e7xaP14Pi;!%k3Yhu z2K8LUQkUwUa{)LrsFd6fHstw4Da%+LUt5?=PlW534_l9`T zyyS*I#Q{vo866=3MgBd~&?U=o2O5nP&*ikeR5*e0NinP}) zo4yC_FJ@2Xt%F^I=aOo_Fy#3(6bJ(}gO)k`@@#@1@P@5M_2<-FEHG+3v5d&G?e~s_ zmS;HurojB7{3Ik(CYNSjD!v~fW$;Z+&8i>l^1NqsdrkO;x0A7>Kjg(&{UTeaU`~}N?=3*yw_?tEioc;d!!ps-G^C493B<>l_msge z5!3BRcHwjgWiWbVn-`~vVzGT2+EZ$8=@^89R+r;PSoiD3gLFW1Nvznj@ocPk%9dmw zcMCA}bk@(s%OUn_ST+4SK}`i*&44N+J^1tKdRoKD2`XjqruaZMvNvx*v-!+A-Yivc zF|?Y@SL5Jsw)b-$*;0Ds!cU6CXR+cFg0UH0pO4;`;7_vpL?UFkje6hN4Sw7W$+dEG zJ1=WTNG4)bT9b~sZan740x-j5%1$Z3G_;^lKFD#EMEX?xJY3Uk$9NySyvW%xqpq5- zg+qmzVma1cF8-9{reLcuhgS_)f~Jslv%a{huJ)QHk|`OX9?#e~EQ{r9cM&>XscmMP zSH{XRXZA2yOVM>Su=@t_k>ExN?=#Al0gV37CsOgYq0%eK$gv zxF|EOB8GhP#74>`o1${-0)wjeKO9=H=$0@vO($*7v# z2AU;@>Uk%9J6N46TE#y`Yare}39?d^51-Byz?<^{PoLE zK1)9AwZTttcRZ%U0|Pfa?7=SDrn# zQeWpO^*VPCOv~)n$*J1A&?_IcB=DXIi zfFy3$j`tsp)`wYH1l`|}L@O%EijvCD^W)n>iiD1Q-b5&(cg?*HURm)QGV70cYiq~evy@*Op5Ye+*NJ0K| zh>?L1E@BvnxkUvZS|P!ZQvOK=i>_hsg#7~Wnc44Bl zb!A@I{{FU0j*eM|rlgfKYH$RvQy0B#?nl>ou7g&zej09mDB5|RbkYt&e7H)6UxRaT z0B5}ojFX!M*T?SYQbCH4O#SNeaKp@&jA=f~;Ac&KY8M#kH@`3;zg8Ddn<$V!P)T-4 zEYQpUh~W@>C((v7YcRX3@;U*W2Rn`c{(gaqe3Uq=sFkWoY8)r#b6+7!XkC3Hiswk} zc@@VyEk* z9Zh&_Tm{Ma3t* z=-F{9o(GR)JHI>S+tb9-sl%B`MT8g5zWF_j9>PK#n_}AWzINjjhU(2W^nvwN5IV!v zjCt1b>EfGxGfki5-|?)gd}>n*Z+pjAxz|F|c*j>=i4>NS4mo9YuIE~ThD@vktG|;G zQgup1ViLx&r+uP3vw5s=#v$^LYUn4Kax%HRQwBN?)@eZSJEifjpUY~%bK~FX%iG{y zI4@N%e=j9XYBFL|R1u6a#8ij6vX29snbWnB&T^&4z`^dE=}+uZwZSA~Keq_G=$8pA zN^7;v!?c&>k?caBW$=8@>8JX%wb; z47_pJ5O5SEa#E!wUM$G51WZ2g@)xcZtrhU)@5U=GIn287^7i`5cqq2k90r&Xy6u-0 zu@Z_NxuGIdB=l-qLDK+XIM4_t5wv+Ja1KhQ(}#fKjgq^Ba#AEmHE|NN5T*~a6Eu4y z%5au>W%B_Rn76kt>q9nYuQ-KYBOSh_cphD^U%G|M8eHalD(Fr2K<;ClEf{&;nDPxT$-(2u50^4^&R61>lf;}G7SdDU(utztXbIKU(b9#$tBlE?;95N zw4%Wwr}-Er9sY&!kXi$ds?X7w(pB|1b39*G@x@5;fIc1OZA;-)xac4jg9-j%O9w@S zu|E9QZ}s2y_XvJ19ux`9d#+l^!Q(S(_6|@EiR&SB*;CRtWKmZmq}NBFib1R;gOH562fM8jMwsug4fBJ()&cfByJ0Jf9UcT+#kQo8os{jqqAb zED>6r&#xtdnzs`b-YQ4yOMN@GOXXpID#)h-f zyaz#Raqv99aQ&SP++Fs-Ex#jZmLK>Shd|1VF#Ecrk1pj<*TzQSTyR7Do<}S|a z@n&LC6+H?R2W#N2Np(y&X0QB=R6+Wi4Ct%#+pM21f<{BEenLDQl9pgirElx3zfCSqrJ=ZuZf&6K+i?$54c|>j%0-&K-7U19 z3l(-!jJ^vyNmU6$j>`QqQ54g>13QDbFB@q2D39HSSaP%mi$(j<1t2 z1^;y4jK7+^CUS;fds?aBW^gA-kv*upY$Ky<*3H_cnM~)7Cr>W6aaBx7k>i_Sx38PW z!(lV4bBDu$FHzlk{nW2Va5%6>6uk_8urxUw;fGvfL!9&g-{1y0&nIk&dM#g-kAafv zkay^`88(+VP*PCPFweN8Z(*_2rEp7?9`Ofv#)^+>&Za+2coNC2EZ4ovvF9i2l zBUcte7H&6LZl))bMk87Uu}`UGUjQ)}i!5En14lWnRhTkcG~d!4&MdIBz(Q{pmN|f8 zYSeoBv}&}JvbF}HMwyjz?9XSx!$yWl;f4)6&;DHqyLc-x&wt*q>yYwo6C1izjjjzi*RV zvvGBZ2V&s4j%+=?a2W`om5V1c=ho6S!&8VTxJ=G`P+NCh>pnJmq$!9C0L8{mubk!H zi_=yugfqA0RYVb~J7TJa0yv_B*TiQC?(CYdz9GCInPk6d(`5Mg781Y37KcO?=xB^x z`mW$RD>JJ9X)hBGDqLN9aa-}c{FB$$d1^IY+z6i>_e^iwrf**$08WaoZt_s?9YG?; z)oRS&ew)5I8{13<4;fL;O|BH{Vc!X%b_`yJ*Ro=N{N9bUvpVJVr4n7~S3`Qvjz8@c z%e#A!2&$N&9GO&a_lNu7AUKmp+dLkEdm?8cT#Na)_o?{Gczszr%s($hh!4LDythnx zA~!%YXN5>)uI{)|>a2?2M=aa4aK?Yw2MQ^jgWJGqSynrb!0f4B<|!i@&F7DqT1`Ao z49fkfbPr=5Zi!Eo_oZRhbt|_1K|VS0(iTytZnA^dS#Lsr5VnsbnfizG$IRR-3#D$5 z%JjKxid76~VFv2O)V;m6L`6}7e9y}PS9uc^;ij<@PDfr9)9-bqpAw&l!agd*Z67L^ z-wC?)`UQ$qy>!r1L;^Y?h$DG4_e$&L{!!dtSi=uleq#1{NIrP!!#-{%jYjir-&3?c z;V$II=tJ}NKONSiUgoB7^Uu*9uvgv-yVRq;tM-f%7R+|=poG;G-do|%ato| zxED9B&mY~1`nQsVpyL*Azgyxd+%k&Ji%O1p*8aVAWc@a;Wm6j5qL(XyG;|y6?5B+E zpLAIO|6KGlP~s5Ocf1Swwd_8sjSd||2*g1-CXCeiUXiNtl;G-raMm(VYEe%4<-v2O$L zFNQ@?g~9g84nNh-wQjQ86V#VQ#s)j~nmbtJHz!*SHLAsZ;Z%}0n#3Aa#^z`4$Q2Ga<@&F@PC>*=R_+pAjSg?v}%kdb0mX=tfIH%_nK;7tQuVNdj6s&xbn^ zXNsfaDU}QNX|1~sDiy+$NiE}e?A##lKv-+IGU-#AH3Oc;mL2AOr=#$|-W4Kjvi<;xo(4f4cFP3O4%RW9rz zF*zj43D2QtYl!ClZA1Wq39+7(P?yI-a22)^(%|`w$1LM2v70$zhmGS2&8A2WUqW*D zlGsC$~kpvUeuZL&N^0t1;J3)}=Y?IN$oCJoazKA1|Vv zMxp9&luCuNdDK8;IUH(tyB=z=DZ$8kVJ{d$ zk+d-Dq#ynbKj1PG-i~LLwy(`la9@C2 zFbXsY@EmM>o};D3)t&4=F|uaeBXuJu5=&eSg@7yJzH*gH@(13xM9vMUM}ekI?FmCz zd_Rtz&}c;Twl6j{8}k*ttr7M zZF$BQK&&^KGXb}gw7n%YPlLUGLp9Q9zRT^#aSpAw$hGCc{-nO@NGwc-hE%}6PcrH4i3x38$v2rYxO~t6f9BfMw!w%yZ_gS`Evm z&VZX@y&Tkr`c^XmCEprwPIVG{^I#V|2^IAl-VB~OSuNj=mhvn8N(s4ss*aMRP)iCc zbQ-8JspL8+08F-z+Zt!psoZ*g_4`q5&?B$3Vp7a=*ozenr2JVUESI3ivKy60#|vfG zo#;XJ4Uj1nBlF626XR@I4pMs`)-I}luzk0E@bmshvW`P;x^kxXj5^8EEV?A!=Kyp^ z_a0#}++Cekfwj5Hr)HF5QK{7dFHxciTN}<#w2>-oam$Q^unwr~X|cIRFlSm{?u|R4 z*WK~l(1uKB_BPS{1mS6ypY^Lv6ZbDVNe;V0dPw$aV%<}}l68n3h$+@is(xu+{mDz@ zcz8ou1xBzV03Uw6?m=kG!s)%zlapmjo z#I88#Y1J|U>-mQ1&E_SZwPneD;Q5wEE~ZJQ=Te_9#~vFqTFVY^G=%LkP)`J=bv&UY z0Cq(H(WZ0iL7MJ*hD1Hv?%5@8F3pO&evohnG9rTWaXQ_O`?81Oc!E+lzMk;xk$?=$ zb4fTHUn-=MC!BIur#R}(ep+8C)bPCW(Q8wa(c&{vEQOgDviU~ZtyWi!zSAC$vf_wu z?F1f|C`5Cg?g#RYa6Q9e|1|A{8*0I2ghb8*NA~4g*aK+dWm26N{?8EYC^w~gk`XcH z5@G-IC>ur4kNj8%GkHkfB*-J`k!xt-T}C?dl*OfU#3VeGFa2|OBZvFTni-g9=xD~} zL5PEIw^M8Z{gbi&+v_(N)hW$0P(PSkiVppafUTRqx+YD$Bg{}sLVY|pfH!H3sZe|& zO&ym=(+rJWlkGi;VL#p17dGwL#!BfiZ=eL2EiHl}y(vd*s>1x*aMvgo^R9J}_uwb8 zA&tbtItgRc4v{-8%>p2wO?D92GIh66Y|bfZGPC&v=-FlQq<<1d!?udH*$Xb=XNDgL z-Y^cjuJ*c!Xas5GknVU@b1pvW@*(%Re&@6hYRBh)2c(~<>!da{4mor~xfv(0mjUDq z>FkObIaPl1m)+kSZ2)vJDXG~cXxcH>F01ZD+h3J3wpktmmyVgSZ+Du=b~&5bYTTA$ z4X)8&9B|+;4TdApKLq4j2LxFm4_Rl;;rx@?}fMMpb%ww-k?MBv)* z$nugP6d+{vjjj4B^=Lh;@+oP&-qvtlzU4k-Y7T)r06t~tlqK(&cUzx;CE3ubYCbe( z|8UM>f#`rP{8Z2?`bPgWOM%t*Nx(PjnW`LpmA%eJA$j=hrS94>#l_Pwvr(B^DN_nZ zw)TFIodNBVe){ptX=+yv#r-zB9g|~j^(>8{6ZBgLG?;!nFmxK3-hp^kia9*GE+(?ZM_Vw&Q^0Ba;7p=m@*A{GmtR=Ja%T%MU zXfq`&oz-6+nRi}i+#lK1cUSNU0$OK#K2!?yy6*tz_OiFQ-dvLW?zM0i=$dfU+XtMZ zPt)bR=f&DQ2JGF_)!{ycY6#BNu;j=_m-N!nBqklb1V}}AlgP45suj7@WrKC&-a&eV zV-2LraywWD9uu#8WMOy7<30!!#@h`VmQ~FMg zv`4QmuC2M@$61*OR~jaehnp`ypq}X@hd@CRG_PD30}jWA+s-<|pdc4Q!h%y+HLq-t zsl=YI&c;T+1g>1F0aNgBcX)@R!>P{3LR9=DM>)@^*#n(77}66(lY9((iHFU&2Kb;u zH+$x3PLhVFjio64`)*8q%TPAEEjXazHS~A=0m5bZU9~MMO0uBUD@hnwiEr$jlpCAlM!xf_-+@TXI!A(D;*aPw z`(MmcgNTK5+EAV^C4D>5fbbVtGt?9)Hj+Iymjua?y+q6{;k`eD*_8s~ zsBAq<=s}_w27@y;9Ja#`cthH0#Idsvx<_CsuzV*%*7^h-Ql%dY#^u7^ZMbe{&+^-x z`|J&SCA0Hpb%bm5wM$m#P`7Ev10{P1nfs%bwmC(QMSj+zhBa?P|GYOxznK@*U5@&k}}%{R}^ga5vMTxLvj zibUHEFv+@I307BVD)Y)%rVO?l8q`KYdp8hh8 zn~4TRLA86a#0xMaW${=|<*Z>o5{sCXIJK_Isi6aA58pCn_#$~tZS#+G-r0XSBsqiv z2AJxDR_S>OO4hRgu498w$bmm!61|u5C^U?JE~SDrILt@Z;S1QGxsff>5%R#PVvVJusyT5?yyp zGYxf_8z%a`D=+6Zc^i(r>-4*(9_Vh>at62YEaU1nBJqBZRr2_hXqF@_R1!76-5HFVl<6zEoD2k5Xbd zgvfZ5)3YPsuFPc$27b9TO_{o@GqhM0-)2}BYbX=AF6jwjKcZmo_>eGIwz^gX4Bj`~bATbE!_x3EbKzrN74y$K>-)jLsixzfkW=@4WbULxZ^ z82{B2#n>>dl(fa;^*rLRO}UU_9fIfB0^0V?jy_GQf_sip!BN918HZq=XlK)n)TZbH zRj*;~{Ow}IJMTlz1RRW?jV>KRFGaHKYD%kscn(?f)+W!{5ZdiS&L6zPv&B62Jw;Vr ztPAt!>9<`Xrq>?up7(qc)VK=;>Nm4JEpAP{C$NpnR%I*FiKp>xODnP636N@@Be=Zl zwO<;x)1%$|X9RH9->w~kQ|XpvRt0tLTsjXjmKzn<8YNGC6G_+R8B$5|Wyd%!u#TX9 zton^xccA?kO{EHlSo^V9l?5!fN#8!c$j=dW8}c@LZiQ8q`24DAh<5Lc8}|@ zV1m?USIVfDF#D|U+i_LY(yPgexF0UAmmb$3oD?imA4eLx9~t_{PEID;(x)VxlKm8H zM$&s4?gSSMorpgTyZ9Ih`6_<*;lZ7j%>?t09rO5P4aaj}116re)0W$b;|^IaiY~4Q zue%-za#f8=zdTZ#S9VPe0k>m&ms_2jHgdoP0%3Fx=}71MMkEgUB|UE-hs;{M3Zp{? zR~hNvw{j;_ATbvBhWPESeDudV9-6(x2W=~~J*T*O@f^BkR#@xD$w@x-{O2U>uO(&T z>*6pwO5e!*C2{(zWPJlYu6PY1ATGLO2GxQV=Q<)ecu=b-Ci^WK%s?+5kmfJEC;MHm zTB37*VsMm0+%YDDVTd3fp^cF6qlTA|3KTGyow|%@7Oh&uPe)W|$6{=*gLDc`naeTc zxsmA7mf6ClY{sD{e|AJI+a0N`=?>FDK9|w?w0uxb2MXn}cMsanlq2 zzj@%+rb7>d1T*(K1Aft>B$#Z6oxbh+IO^-dE4Q5jdQuEA3Wc~HZ%&sfu@bKJ*Z7A0 zYKAEC6D)USTi-vf*UL{TwesJV#DRp!y1S$c@J;fl#~xkQed3z40;(|muy^KiLj0=f zf#7QM)Hge|S2>vJ9y-(9mxLvW9(TduZ!Q#+EI)HfKyP29k-*mkY@}d1|H3lG;;F3? zQexyc=if==iU9$(t3?K-LWKhB=Y5{fC?})Cu1sbFTL#^-bho>Ws^>BOMSL5m0Fh6r zC|4q^(siTF8|`bBTt~BxP$+hw7zpXLFhodZv>l}D^L%&O>{{z=&_65E_avg^CFwO; z8T1Gb*l(NC$s8y2kD++vm(&B>=3#{9l&zW(&yVsKJ1`3^Y_bWtDipkXLizMPRXvwl z*8p+yQnSBtfo4gI~oMAh}d06*-mhbprW<)t?OphDPWBx_ICY!v+PG-23 z3k68NRN~ngTPCb9koG?+;73eb)j zUGiu$@XU-T&!@|W%Yc~Oy_YytdwZgDtaDwoEUnQz4&3Xf=L;bS^LjH>gx&$rvs|02 zGorDGZ1A5E@tL>vI&h*uQOg?^*CJP_NRmk`{UsM#a-6lt zq_sK+?WPVd%9F%_darxZ%XFpfk#l;Z#bv5{vin%&#w%)GX!3PnhtXXTe-2}d`7Yd& zZpeD#s@-{fdVl`~mR(Iuk$%tE8#Vi-(0HqJgfyIB!5BlP!y7UXL0)%>4umf{dWuT~ z7vl+c{*l34XG98ZDfT~#Ph(23$9PwqE8N)F}Q zFl&}Q&~3zx$Ft^|LrsUcQ=#cT=>tTD{Vlv3&+Ej)tb@0DdvK-q=xv%KP8~ei=ed2{ zvhz1>TdLklCo6iBY^HPpr-}s}r!C0-qb6Wt{VCAl+JVl*eCG01LLim zz~=|=&_`6RO@YLn0#K3XwEemf<+?CVI(ECYaIa~A>;3)YRfeHWm@n1Jc@c~$ z*;ry4b|1jjRd;!A0vx`}7h6{R8JFCmtEZrl^OK z@}R{YHOp(te=6P8M#Sq7zwNnw34De%xNt*%l74Q6deM~0dvu6w!>8raOSsquMH_Ej zGz6rWhc*=Vn}8?C9u?m4c`DYlTgO~+@6=n&rw_u-h{Td!`Yt6cOIP_#TDnxl0ub~!$ASr0q$`E0PSSbxWj;c1zL zb9lS(_wl%pu={hWaP}&w@K|_aL$pAn*M3^3ufYFZVqu-lWfw zdk@>^OFuA&+El}e4^PE6nkwEe-4zVy`&Q@GJrWNcW)E-G>6U{p*lpYdMKD)m+I z{SdEe6V4WBO)oax!e>=eiuu5^nq1J%*%uZz`ahJuaem0QzuDpb-JM zF!Qfu>LqkzUL?IFv9mMhEB$6yUy&Q@AW0;PVsI+KgSqX8CG+GFKS*7}Ne>G3q(uzmmz)w0^DOa!=vKrJs~YuaDHgyy2y{NhP*2Pxa0(k( z*L>4m>*jVO-BHyfDo8iKvdHUUb=Btk+#%wEZRIEuFlbe(x#iFJcvIJ%mv|bP64`P@ zbpJv2d%#o=iqM;A>=RG09YSGjP%|qL{=3HHqtSu!ianW+UqgN1_Ikwp);>o0v+e?W5u7)J$e+dpegB?bh*60FV5`#p8KI~$?;(7y+ z8_pRTR8E&xx_6N-PVYAOX*O+W=;+|j!X}OxENZ3Pd(FW_ zWs@15VB}=aGM-bkxljarusRJ088-8kf!Vj_-N|#%$bIRny^P;$L$QB5LtU9Z ztXN^JE_4lf3T;i~6@AvPOu2eH!WehoFNpOD>Z#*cH`(*W{9d8?NivmBWYb~1!#D@I z?X6{UPyM8vL>6+(K(d~M1M?z*Rwm-TBPj{|`bI&FQYpXUc|FRD+g*3T!j-p9XI9(%`#eSRkJ*>w2 zOFK!X*ezoEyWdTn;bwj|a@1Z@6_0~HO~AcfxBJOs@ciIK$o&;!7RM`J_Y(&xpsqGL z)Pdd}LCYNv$ue-Txng#2C&c6>rw(c4vz^aM^ROCm|1DcL6otvv_r0J|C?l!G`4JPs z>W%N(q=g$Sf%jn*yU9)+({H}GzQ{kgtiL1F6d)RzC_697(tLRRaN)#l=et^2mfFtfk zq=zqbcX$yAJJ>)NL+uv`lSRT0`bD5pkRAY)ElAY0P==AWcDWTp7o)beUF7}k{K~tf zbCa<~;wt^Uwa^?8PW2XO z?k)e}t^6-1=V1HSUh8Ku+C31@d9@+V2Q~w6WL{_MJ0MWz~t?Gt&8|z}n=eEmU zcR%KP_i(q~^$OA@Xf~c;E!Zc4u0f)2 zn@*3h*TM74vi8mm_rEbbyGNP3E27{pZn__FakOT9K6>;dv`zc0+_&DZMm>$~<=z`# z_;V3vPi)kD^6BbO8M*yg@d?t|0bsfp+)1oPd)WG_)inqjhuDGCFNfq)gEun(Ia~HK z@A!Ycen@nP`YYz@@&>(Y?i`mE9a$9HmdG z(l;=uQePm+RKRLzU(Cr2q>dowYBIb}`lwP;Bq1a5ONt zs%lT3si;ORD29lZa`6`CYLnf?NJYq3w8cgvwoI!ca!i&)4X2^B+FQO&v#Z^ne~oTA zS(D4Fz}1bVGd>5#$1d0PPV!hb_=Z!~Tg*>^iEbk++tJHg7q2&4IW{{vo3UkQO!z~% z9X*n#ni{RxP*PrTJ(oH%UH!_;$dC9BbQF;eQmpmWXEq*|RGoX4^(h-rtlK6Y2XBr$ z8&+3SY%EIBSuJ?eWSiurRMMYrY9Di1SNzqv9`_#OUJjCd(WYhlC%6tL7&A`kGPdb5 zkSrHoe2-%jPMk6qtJW@foa)6|yl4G}Dp!R}d4P^j8QpC~w?N;b4fpBHjjz}C?%Bt5 z8ww5MRGR16M5%iCnRux>2N^oL8?_GLnXe6V?On80dELY-{ya4&VB{L@Hy=^ ze&Vh|RJ7AG&XBJ#^^H(vX|`?2kSz~WY%mYT$B4FMq2Q@%FH~FKA*+u@mX&KK0|!dt z_Lu_7PuIY*Cjx<4-dOjaEUBO6h@5TFPPNx)kH3i6jKY08Z&o9$lKZPzp|q5Q)6rI=t7p?llO$C|x9TS(aJXFf1>Z=)QXw`S zu1TU>A}!LJ-dnliM#EC`uGCkV?h4BS`>U{Yf%%k3%kOGcd zX~fuvM>@Ks)vDlu7khoxVKmjqb&H8`T|zgrZ{d+A*hwT<;rIkaOdrMv@yR;Ll`tb@ zRVZ9bRYaD*ccTZH41MqR7_g5ni{-%uvP;%*q2fzLn+;ig*_<5VdN-tP_N8v6b+)yC z#a4X7WPMxJYJfhbjYV=`&^2;27GWSNdbW!(^rwAO;CN{@BM{DJvUkCH zks)LENoIRyp2pxYJHbQUJA-Z<$~PoONK|jKvU_i_oC$pq*mZ+Wy?+wSeCNzhInqdW zm7q-#aYMZ?l*!K}>oMx3gpgTHHSC3yCDRj_$ppBFd@!#qb#ir~S9c3V-FhJRgnESX zMRHXkMKs@Y(@F8V4Pl}G{4N6E~@7692gER;rRuvRVU8je}TsN2d4c$aSs1PxK*%lH8D4FHTeTX^DjhB zZ3TJ6e*zq`yn;La3%()0kf*bWncXYgz3D3ir=tM*Wk(M=sg1b+xfX{4vx2jjg|&^e zH^4&8TT$K2+s=%~oLoo{k@R)p_vH0-aCUe#M(XKc?+E1e6d*VG1HF^?b^8x86S*Mi zpPa9}0CP)TRdLCGaK7#dkXyUDI`c9yd3bm*dayA%0j!u~ z2_`l+4u7WM&x1^kKqedW{|M4Q#CV-e0Iq^8{7nD0|NqLj*J%Fj*Z(qi|CKmiF@S}M ztA+UMD#*&r%ErLV!N9_;&dSEi&d$rh$;iRO!OG6XMaRs}%lubV|5f5|zyIjc4$iy^ zuNbA4UjHY`{zc+HmHp|N6F}X`$zIUH!Py32LaJb61u%KdDJcsh#~+QGla%I~FW7-2nD~c71a*CX2sN zhk>uIv;2qa=4QOFaK-i(|8uSVU6DlWUH_f>kD6z1^G8kMwKs9J5+L_vFn=v3ZuYL^ zf`7%_-sazh{-XYeE`Fx}w)_8^vcC?zR@%Q5zjmX47HL7m|0(saaNh#tfIkZP>(;;H zrF#M_ED@PWS=bSo|6WKrIbLrXq?V+A(^xo2|2#_S_&1G(`}Icj$MP>UR`ypw=Kr9v zG53~0>tYyUY_?aa|#U;5!B}FA9C3slbIeA!KnvpKD^N0< z;QyZE4}AAmbZk