From 8331080d8500c83a6a41c2cdb13c081f30cd9918 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Thu, 11 May 2023 23:11:39 -0400 Subject: [PATCH] major rework to move to avalonia --- .gitignore | 468 +++++++++++++++++- Aki.Asset/icon.ico | Bin 429823 -> 0 bytes Aki.Core/Interfaces/ILiveTaskTableEntry.cs | 17 - Aki.Core/Interfaces/IProgressableTask.cs | 7 - Aki.Core/Model/GenericResult.cs | 21 - Aki.Core/Model/LiveTableTask.cs | 159 ------ Aki.Core/Model/LiveTableTaskRunner.cs | 87 ---- Aki.Core/SPTInstaller.cs | 93 ---- Aki.Core/Tasks/DependencyCheckTask.cs | 106 ---- Aki.Helper/FileHelper.cs | 37 -- Aki.Locales/CN.json | 3 - Aki.Locales/DE.json | 3 - Aki.Locales/EN.json | 3 - Aki.Locales/FR.json | 3 - Aki.Locales/KR.json | 3 - Aki.Locales/RU.json | 3 - .../PublishProfiles/FolderProfile.pubxml | 18 - .../PublishProfiles/FolderProfile.pubxml.user | 9 - SPTInstaller.sln | 28 ++ SPTInstaller/.gitignore | 454 +++++++++++++++++ SPTInstaller/App.axaml | 39 ++ SPTInstaller/App.axaml.cs | 29 ++ SPTInstaller/Assets/Styles.axaml | 187 +++++++ SPTInstaller/Assets/icon.ico | Bin 0 -> 112527 bytes SPTInstaller/Behaviors/SpanBehavior.cs | 20 + SPTInstaller/Controllers/InstallController.cs | 62 +++ .../Converters/InvertedProgressConverter.cs | 29 ++ .../CustomControls/DistributedSpacePanel.cs | 77 +++ .../CustomControls/PreCheckItem.axaml | 84 ++++ .../CustomControls/PreCheckItem.axaml.cs | 62 +++ .../CustomControls/ProgressableTaskItem.axaml | 79 +++ .../ProgressableTaskItem.axaml.cs | 77 +++ .../CustomControls/ProgressableTaskList.axaml | 47 ++ .../ProgressableTaskList.axaml.cs | 97 ++++ SPTInstaller/CustomControls/TaskDetails.axaml | 39 ++ .../CustomControls/TaskDetails.axaml.cs | 49 ++ SPTInstaller/CustomControls/TitleBar.axaml | 76 +++ SPTInstaller/CustomControls/TitleBar.axaml.cs | 77 +++ .../Helpers}/DownloadCacheHelper.cs | 34 +- .../Helpers}/FileHashHelper.cs | 2 +- SPTInstaller/Helpers/FileHelper.cs | 72 +++ .../Helpers}/HttpClientProgressExtensions.cs | 0 .../Helpers}/PreCheckHelper.cs | 10 +- .../Helpers}/ProcessHelper.cs | 22 +- SPTInstaller/Helpers/ServiceHelper.cs | 116 +++++ .../Helpers}/ZipHelper.cs | 12 +- .../Installer Tasks}/CopyClientTask.cs | 19 +- .../Installer Tasks}/DownloadTask.cs | 52 +- .../Installer Tasks}/IntializationTask.cs | 21 +- .../PreChecks/NetCore6PreCheck.cs | 58 +++ .../PreChecks/NetFramework472PreCheck.cs | 46 ++ .../Installer Tasks}/ReleaseCheckTask.cs | 35 +- .../Installer Tasks}/SetupClientTask.cs | 48 +- SPTInstaller/Installer Tasks/TestTask.cs | 35 ++ SPTInstaller/Interfaces/IPreCheck.cs | 17 + SPTInstaller/Interfaces/IProgressableTask.cs | 24 + SPTInstaller/Interfaces/IResult.cs | 14 + .../Models}/DownloadMirror.cs | 2 +- SPTInstaller/Models/InstallerTaskBase.cs | 134 +++++ .../Models}/InternalData.cs | 5 +- SPTInstaller/Models/PreCheckBase.cs | 76 +++ SPTInstaller/Models/Result.cs | 20 + SPTInstaller/Program.cs | 64 +++ {shared => SPTInstaller/Resources}/Gitea.dll | Bin SPTInstaller/Roots.xml | 5 + SPTInstaller/SPTInstaller.csproj | 42 ++ SPTInstaller/ViewLocator.cs | 28 ++ SPTInstaller/ViewModels/InstallViewModel.cs | 38 ++ .../ViewModels/MainWindowViewModel.cs | 33 ++ SPTInstaller/ViewModels/MessageViewModel.cs | 29 ++ SPTInstaller/ViewModels/PreChecksViewModel.cs | 53 ++ SPTInstaller/ViewModels/ViewModelBase.cs | 61 +++ SPTInstaller/Views/InstallView.axaml | 24 + SPTInstaller/Views/InstallView.axaml.cs | 14 + SPTInstaller/Views/MainWindow.axaml | 37 ++ SPTInstaller/Views/MainWindow.axaml.cs | 12 + SPTInstaller/Views/MessageView.axaml | 26 + SPTInstaller/Views/MessageView.axaml.cs | 14 + SPTInstaller/Views/PreChecksView.axaml | 47 ++ SPTInstaller/Views/PreChecksView.axaml.cs | 13 + SPTInstaller/app.manifest | 18 + SPT_AKI_Installer.csproj | 41 -- SPT_AKI_Installer.csproj.user | 6 - SPT_AKI_Installer.sln | 25 - 84 files changed, 3360 insertions(+), 796 deletions(-) delete mode 100644 Aki.Asset/icon.ico delete mode 100644 Aki.Core/Interfaces/ILiveTaskTableEntry.cs delete mode 100644 Aki.Core/Interfaces/IProgressableTask.cs delete mode 100644 Aki.Core/Model/GenericResult.cs delete mode 100644 Aki.Core/Model/LiveTableTask.cs delete mode 100644 Aki.Core/Model/LiveTableTaskRunner.cs delete mode 100644 Aki.Core/SPTInstaller.cs delete mode 100644 Aki.Core/Tasks/DependencyCheckTask.cs delete mode 100644 Aki.Helper/FileHelper.cs delete mode 100644 Aki.Locales/CN.json delete mode 100644 Aki.Locales/DE.json delete mode 100644 Aki.Locales/EN.json delete mode 100644 Aki.Locales/FR.json delete mode 100644 Aki.Locales/KR.json delete mode 100644 Aki.Locales/RU.json delete mode 100644 Properties/PublishProfiles/FolderProfile.pubxml delete mode 100644 Properties/PublishProfiles/FolderProfile.pubxml.user create mode 100644 SPTInstaller.sln create mode 100644 SPTInstaller/.gitignore create mode 100644 SPTInstaller/App.axaml create mode 100644 SPTInstaller/App.axaml.cs create mode 100644 SPTInstaller/Assets/Styles.axaml create mode 100644 SPTInstaller/Assets/icon.ico create mode 100644 SPTInstaller/Behaviors/SpanBehavior.cs create mode 100644 SPTInstaller/Controllers/InstallController.cs create mode 100644 SPTInstaller/Converters/InvertedProgressConverter.cs create mode 100644 SPTInstaller/CustomControls/DistributedSpacePanel.cs create mode 100644 SPTInstaller/CustomControls/PreCheckItem.axaml create mode 100644 SPTInstaller/CustomControls/PreCheckItem.axaml.cs create mode 100644 SPTInstaller/CustomControls/ProgressableTaskItem.axaml create mode 100644 SPTInstaller/CustomControls/ProgressableTaskItem.axaml.cs create mode 100644 SPTInstaller/CustomControls/ProgressableTaskList.axaml create mode 100644 SPTInstaller/CustomControls/ProgressableTaskList.axaml.cs create mode 100644 SPTInstaller/CustomControls/TaskDetails.axaml create mode 100644 SPTInstaller/CustomControls/TaskDetails.axaml.cs create mode 100644 SPTInstaller/CustomControls/TitleBar.axaml create mode 100644 SPTInstaller/CustomControls/TitleBar.axaml.cs rename {Aki.Helper => SPTInstaller/Helpers}/DownloadCacheHelper.cs (70%) rename {Aki.Helper => SPTInstaller/Helpers}/FileHashHelper.cs (96%) create mode 100644 SPTInstaller/Helpers/FileHelper.cs rename {Aki.Helper => SPTInstaller/Helpers}/HttpClientProgressExtensions.cs (100%) rename {Aki.Helper => SPTInstaller/Helpers}/PreCheckHelper.cs (78%) rename {Aki.Helper => SPTInstaller/Helpers}/ProcessHelper.cs (54%) create mode 100644 SPTInstaller/Helpers/ServiceHelper.cs rename {Aki.Helper => SPTInstaller/Helpers}/ZipHelper.cs (75%) rename {Aki.Core/Tasks => SPTInstaller/Installer Tasks}/CopyClientTask.cs (52%) rename {Aki.Core/Tasks => SPTInstaller/Installer Tasks}/DownloadTask.cs (65%) rename {Aki.Core/Tasks => SPTInstaller/Installer Tasks}/IntializationTask.cs (50%) create mode 100644 SPTInstaller/Installer Tasks/PreChecks/NetCore6PreCheck.cs create mode 100644 SPTInstaller/Installer Tasks/PreChecks/NetFramework472PreCheck.cs rename {Aki.Core/Tasks => SPTInstaller/Installer Tasks}/ReleaseCheckTask.cs (70%) rename {Aki.Core/Tasks => SPTInstaller/Installer Tasks}/SetupClientTask.cs (62%) create mode 100644 SPTInstaller/Installer Tasks/TestTask.cs create mode 100644 SPTInstaller/Interfaces/IPreCheck.cs create mode 100644 SPTInstaller/Interfaces/IProgressableTask.cs create mode 100644 SPTInstaller/Interfaces/IResult.cs rename {Aki.Core/Model => SPTInstaller/Models}/DownloadMirror.cs (73%) create mode 100644 SPTInstaller/Models/InstallerTaskBase.cs rename {Aki.Core => SPTInstaller/Models}/InternalData.cs (93%) create mode 100644 SPTInstaller/Models/PreCheckBase.cs create mode 100644 SPTInstaller/Models/Result.cs create mode 100644 SPTInstaller/Program.cs rename {shared => SPTInstaller/Resources}/Gitea.dll (100%) create mode 100644 SPTInstaller/Roots.xml create mode 100644 SPTInstaller/SPTInstaller.csproj create mode 100644 SPTInstaller/ViewLocator.cs create mode 100644 SPTInstaller/ViewModels/InstallViewModel.cs create mode 100644 SPTInstaller/ViewModels/MainWindowViewModel.cs create mode 100644 SPTInstaller/ViewModels/MessageViewModel.cs create mode 100644 SPTInstaller/ViewModels/PreChecksViewModel.cs create mode 100644 SPTInstaller/ViewModels/ViewModelBase.cs create mode 100644 SPTInstaller/Views/InstallView.axaml create mode 100644 SPTInstaller/Views/InstallView.axaml.cs create mode 100644 SPTInstaller/Views/MainWindow.axaml create mode 100644 SPTInstaller/Views/MainWindow.axaml.cs create mode 100644 SPTInstaller/Views/MessageView.axaml create mode 100644 SPTInstaller/Views/MessageView.axaml.cs create mode 100644 SPTInstaller/Views/PreChecksView.axaml create mode 100644 SPTInstaller/Views/PreChecksView.axaml.cs create mode 100644 SPTInstaller/app.manifest delete mode 100644 SPT_AKI_Installer.csproj delete mode 100644 SPT_AKI_Installer.csproj.user delete mode 100644 SPT_AKI_Installer.sln diff --git a/.gitignore b/.gitignore index 51ef1cc..ad06a90 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,454 @@ -## SPTinstaller -*.exe -*.zip -bin/ -obj/ -*.editorconfig -## visual studio -.vs -.idea -slnx.sqlite -slnx-journal.sqlite +Skip to content +Pull requests +Issues +Codespaces +Marketplace +Explore +@waffle-lord +github / +gitignore +Public -## nodejs -node_modules -node.exe -package-lock.json +Fork your own copy of github/gitignore + +Code +Pull requests 390 +Actions +Security + + Insights + +gitignore/VisualStudio.gitignore +@n0099 +n0099 [VisualStudio.gitignore] remove a trailing space +Latest commit 491040e Jan 26, 2022 +History +165 contributors +@shiftkey +@arcresu +@aroben +@bbodenmiller +@HassanHashemi +@haacked +@niik +@AArnott +@sayedihashimi +@saschanaz +@bdougie +@OsirisTerje +398 lines (319 sloc) 6.7 KB +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml +Footer +© 2023 GitHub, Inc. +Footer navigation + + Terms + Privacy + Security + Status + Docs + Contact GitHub + Pricing + API + Training + Blog + About -## windows -desktop.ini diff --git a/Aki.Asset/icon.ico b/Aki.Asset/icon.ico deleted file mode 100644 index 50a2369532a35a3298a0ef25350d18a869f1a3b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429823 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𑎠o~>1* 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 z |qMjulI@IfD%y(Og2fO~oyu-fP1Yh3u>rGfu_nF`50aQ0QcPnfi)(Urx^S{O~ z{7ZiAL!bOZeUIyZK^}YbCC=GX7oM}i-j28`?CpBF)?u%}PdBp@eE%x@aX8{F>mK`0 zoS*cQQ61UOrUNC92KU(ro9$o+3b)(yzhg75l_UI-4Y&*^{Ap(@;MbZ1+;XBBKO4+@ zFnhVYQhd?JZp^`MJMnj7 zHe>Yrhu!}_aUJnL--+YCq!%B5{&oJs+h697ZTT#}=H3tTBQJIC>S1s4yVkdh4efA` zEv~KCeT>uT>HG9t-Hns=p7}4YBx zt#YRAG8p@mc|a?#`BY!=?tbIPdbDl(_xU}~e3`Fe>l^f?7t~o(XQ(Bk*1TH|KTgJz zubBU3KUu@M?C{*tm-4yIFXwah49q>qzU+Eg+(%EEU~F^mvgg_6y{=)`$$syv`G{-$ z?e;uPU@oaM+3MxUg+Jz5_Pad$%|=`y@6mC0UOJl2`TPX#n3*e|j(g7f-1U;fg!`9p7hoxk;kSmOWQWz^=ao_nKMX~F$u?q15C z*U|C$^t9Vv8gXy)Z#B33seI53sJfH3$RS?Sd*K|9^WM%kZP|U6L*%k2-My6_%l|I@ zBA>Z#8~+bqfvqhypDgO^r)}Dvf22P3pM8C??T7sSSDkU>{f5jC>x64`9Q<Y}wZQeqt>K$r?QRXCMi4W*{;OYKZvQqv z{W|wEb0vl84cE^Cf z6%t(ZjQ!5%humv5dbPLzsLOk<_IAx?vypbekN(khZ&Ooz_^of`5nrqIt0$`YFZJG0 zx7&f&1=s64y0znXi>*)8k{7`WBJP;RDGW~0w0h9A*;P||;TM`+5wldLE_F8bId6#r zKdy057Q4S0bFrhZCz)nvoHvs!^cc3kVarLYebH?1w}%e+doO#=)@O0nNX&)^p1%5d zrY4-8A$KJ2n7vhshdd*Ce=6!+Rr4e3&d0er0dM~(G-!8ouP0Uq{IQ!l!r0zsAFfTC4xxS$o~V!}&fx7(d|Y_jZpTcD<*aKY#r#-qXWo z0J^qX?G{!Wyp7uX1@FV>1dh8@t#7B^)xP_E*q(U46oyp8_ygya-z=`#qu>H=tLahg zdR=SqgOX`+$8qL}nq86hv+1oL+au10aQ;Z9-zSN)nwEX!cWinCY{2}mbc6pn3@%{) zM&j(ng#Ael4c+j6hnS0U)W>EUIJf2$Jt$_(6js3zm(Z69c8Yyyp#vp-nq^pa!&Ukl zJTKy2MIT8;F4iEQYGfmVyYc!S#zzwwcN z+3P;eCviolJSLruIeo=vwfBqnTpZkC=Od3_{Jxz2vl^c$K4)3fd~u6suKqlq;KL@& zG>H8@bFFg$|M*!x={-jDsqW+f1t&1{JmF80qxFiY|7BzL^62OC3w~gde~dZN3;6=) zHN^~xm^GQMH=`SmzR~=alfsa{@_f&5Wo=(h~$k>Mg@Bf-Q>#kpqe5k&MM>&_xE?(rCowqmV z3~~L5zQej^AHF%CbNDm)oVAga(y{|uJd|dtLC;6EE!b!aDIR7Qqcmi%Sf!jZ6{p0%tuK&V6 ze3U=%($-yXW4E8bVN@=>`@?+HoWW7HdeC{$QAe6Ii!9{2$PCj7c=CMxTJvDv3od-8 zCg%xQ=%k!>f=-N_@oGM>adSR!;!AoF-pR+z(v9!)&v_^BJAO+(=~@?HrI=c9%j znqOG!jXzXRu5*pb{-=KF$9dMzpH$@uO*k;i)tDEX`QglgMm+17*HyuDh*_?wnn+2X zbjf^@$8)0oLABCsNdGVAoIOl-6%9MRHaoI=txO1k5#CyZ$evX{|c0Pu`F>==1`OwMu zyK3l{-XAlfcD;%`zn%~3QQPgt^X%3$(|MGbP5#)iPChC3>^xY`xlY~R_e0NlDgR>Y zo-xgM=fFm8z5l&@P~Oqy+PjbNzXw0%Jzvxt@@_sa>WHps@Z{I?o+Dq-Tl%bdt6OR^ z?LB65-gnING1u&**eXM3lR?Wsqo6TKoQ@>h|AEwS(J;HhIm#A-<@e%Vl3en3M zvs&cB>AKhO)7cO2-*M`D`K#~kzGk1u6UXoVCZFT~5;{^8J56YO^3lg^2JULVdwd1Z8y^Q9lmtK*wI_kGNJOy2MLJ$dWYpYw;F z+%rxd@$796h(i}TQ*G!@vk>mp4|coHzS+4L_w0C|1%J*f!*}GBd3WUH!P{$(n7?0f zhHAy@sw21SAHB2oz3hL>gMZ4)&X6t7yVHAlPcwMS?N`ErZp%x3UOVpmS~dSf?K%2> z(rNZv%_mvM|F2Vba^_^wSqw#7_Vgrc>a6v$xpysmNa+x33)hKUwSbFKhojJp%Uh32 zT3JkN-j_}hGr-j+lj(F%JQx>>yjwvfWp6Lus$<_+iAsJEWP=f`AaGjkQ(6+{z4!BJ1_HEPBN8s;|wMi(btE^-EDTuC4c^GkNf{I7~V2` z?rHhrj9f8#!luLl@t9G^UwqToa3Q~wn+?&86*qjEZ~1VCJqrx*-7mh)FNOur+^BEx zN}Q2P@E^nv(>SE@9*e{!)8dj^&L*y0B)**Vw=vf?1}B(*8GREM#AnB2Qr&RO|IMd= zV|q;{@XaT@cD@*L7#C;S->3W>XO)fn+lbgD5%VPrJk0t}2FZRv9MH2RZxRpoSkpSa zFe%&VT>l);-F9%Lm)@6*qZ5GK%#KJs7)^9S}Q?TmN|PDQh0OGzJqK zqhA~E+KPYnU4HHJ+w#Nj_Ih#He6n2Ny5jE>a`?#Gr^#_K`7e}*?zm>Z_x@8pE3k>F z__u2&iur^1Ujjqju z?_oP<*yV|5^%=gXE{vn3k2E`#jm8-$%jK)<)r)aJvvK~TbcPzl@8JAzI)4SX9Iv%e zT`77EPrc)-{GKh_@=KrnAwT;Ovo-Fq7jAM!$8C5;;_o@^%3O015;0S<>T$IPeq}kl zLEUK%&dO=`eD)8yV1M}(PupzIq8_eNaL!>#1@l`HXW+KrFHDLlgYUT5zF89am|Q1f z{2BSvVln@W^;>8?;}Po;vI_Z6d4!(CzFHveo@eh|@r3yQ$42{a&tJh;UIOQx_WvRG zkafslQqB;%5T6tL+X?F&b%Dsk<1-@PtnqZ^m@{M?vYeK4gziP&A353*uU(;@5YHFW z&A6AD$m9L*jMs*Z3i}ZM8`od6J??Lm+~?D^@z6Ii551VCPgCqhTtoaEwj<;}NypML zdvKA*2wTw3Zcd1iSFi`;kEtWyj7zWy#xI6mCWeQV7kdAszH}~3`8*i0vs@;{NDCj< zoBoPf70&TFmp#@W-*_cH`mfu(JwNmgoHwhodmr$l)Wu zU8e58$U4XKShsjA`r9L9ANwpG3$05$LT-WoP00gy?60l)MxJy9;@&Dp@uQ7P$$^I+yC2lJpRC*R=_*rv0N=_g`SeAC#+Ui zj7L0=9-x)#%qwAowV(YiK6huIKwyJ`XGKjru*2GC*YFJ2;Cl_@@S4CDIT#Iu=5c&`MG))PQl@7OUIcFbdtgSx<#*>k{$2i}xxL?#*^j@XXXh3AarK`+$d}7`YG^jqnF# zA2u?chaF!?H>TK#nXnOj`?$S)<{X1m1k}Q_pV*V}ca*;mCDLnHr zn0WMGk6ej+kJ~qlTiJW)yLxJz2gPuH1O42mUBc;dVK z*^kxuc5&&ETW?hlepIjS>G$wqV(H`W-d3v*|0DTFU)FKgngipEvK03||i~i}hNL|1tdWXKcNFZeNF7C*fk_)~eWr=8uyb0Mso^*~p}JabQhFvY zwBfE#n+@fxp*C|mT8@B?!$;FL81;blZVKvZn-z)NT)}^lP z;T`cj&Qa>Dl8Ro%BD^74XaCRG^CRTG@F~8)L++TgU+DVJRbMV8n&kf$hV)zjLZ?+r`ghQ4N-deNy$w9~F#g@yR z`}T3(E${CZ>viA~c6kh(t=8i#q1H9{M)JWpk2K~4WoB+9;7b!UV{{>-ddz{)xKk|MI(EkWWSy zJsuUWKgjR)p&xU6FK@9XCBDwDnJJ^9gGJ%VK z7#lDpp6ZR*jg6PL1+J5<@EUz1Y48UJ$scbpfpsPLE;0Y9fT!Gep0h3Vd&c>o<#U`X zij!Z)3#cCcc3wa6=RD0$bFCNWb>n86tpCz{19re1Qz$vTOuxl0o0pA(&<`j zJ)mqr2JcVAXo*~HE?=0O@J>Doo4)Z;a~{Nn|LiOJtuKG-EBx5c@;PwBx$^wXoPv6~ zlsa!G&bEv*;1}`RF%Kj5^p4usb}^9{x|Rd@J-fc6?xP1(UNn3TpX@%n*wMBP_EOWM z>J~WBE!Lyo`oKreF+XGv;?KYQ%IwN%vFl#&#o6}I0p$B{)^e|h>|NjIz{uLwK1z6e zZPvVze#}x&KZvYrd!GDbj~__pCBC=%E*U-j{BshL6?dN4M zSvY7C{IlrkJD4q{%PBcGnwQ+J*Q|7wIZ`;Ht$Lygk^kW&|xx>xJnXhti=z#0OkLrk-wXU`DN3|WcAPqhE?U%J0a;mp2&bUAH zrmeMk8{eqk{-dwx+xhb=+w%37$Juo9M%8FiUs^e_h+xcSTH&mnZIy zpBLKu6F3?}>I$95$U)5_D=(G9E+CT@>)ZOOIM&%eIF?oRx^dy_FhV{?KgfAc#e9O@ zuWIWT-WM-xcI@{9$aNob-}@1JmOUt{bq%unQTwWrW$?A;vJnT`+dsGGf8lpOqX+x) z3H#aO2e^i^*t_(R7|VX$-~VNA=pj;XSwUtgTerd)-+vGr<5aX96Mb;b89d&aulbY? z*t7Zr3d`kiUHCf0j_!#7E|sr}j(cyoy59X5tLkHT3T=`gx}3u+wxs zUiy)A?&x>*EAgp^;pym8Dnx!zenL;UnE>$9LYyC&J&v3HSWWMWEA4yuZ*j%vd4nF6 z@}SRBORn$_?P0UdSF^?cD3X5x-WQLGIKS~SImn4*c=V_GU$^1$eQlQNKeq*OZsU#5 zeUl%e2GF8kKh;YYT$C1PF)Y;!9DaO-zMWbfS1dRzmuS&@T6YErCf6b4tCC$2M_tM6hnpY*i$orM2^pye2h&JsY9FDSKU}|8;8Il{fP? zwX7c3S~X9t=FikAo9X?1kMEhsw;ktX-75Bf799N`_J3cG{q602=)zp<)j;NrWL;!q z>eM#da3kvM@sRO>&*epPAM2L9Ykgl8pKs2q`m3^5b^!if(Q{E4$L;HXvUY}O{gn8! z`CdA%E{1d5dc1S(^||-(ucZld+>e(3=_~F&E^v1_!2q9)<6E8-8{s-u)#58-_!<50 znMDMrIUa5@&Q{=srsnM>N3f?$*`al8l6gfbK1bv6e2iHNy*@ANWP{8F$%e>wy%~jv z!FUff<6)iLZU8l*T!D}0>V}o3$vQn?(hR^ekGxgM)N7c**G~t1Dr~wS$aHgJ1PBPQV`?63446^qMtP zclCF*dE|+_Iyw7G_GK%c1D!n;Ubq6zQL#ruM!})27c-Gf<2p9vNIG+jv+DGV4Y zgZzX4wN&hH{$sKZ2E5*T-~u!q!k1fZLv6ouZ@4ZLS`EkYmkMjoS33rq4kQ})E zICE8(exhauch|dIjhGaltWylxs~4|&vHr?q`3QcZ+w74Zzbmg2%R6hdDo%(Q=Or;? zMxSG*ab@||e1o}hFTEZdfPZcaLO$W6KjS+#u^neUiI3wvvUc_A+Sz}2Xr;5@gGXBf zXPT!C zI8YpQAX~7%{eO_Ss>BC3=-tGDNE0@I{mfeQqtx9__UrQGUq;0L>+?eS*1XWOnIBgp zT?8|jcwIcNc4^K=_29Sj4riowI9IAP^I_iPtiFcB%nLd}{bQ9mBFEEJHfzZK>Nv{& zbG|^sQnA}S_X*pt4vMeHza(d@C--nQ_&X<_e6ur%rp3k8T`SziIYf{6Oah`p+ID9qO|7aCg|+ z=-oa^-Brfd1BnjWaBorj-&p}1`+Jy>i`!IZs9zcPD2QQu86bHXOwAKzc% z%L?<~cCHCqs&BE_`Jy@I;*q6fx`7=g`@+HEwSK;&QGD1-=Jo0hd(*u-&nH|@i`N$T zr8uW-RQ$A>uihZXJnnO6bK-eAH{}2C*E^qmZw@N^a}*i2GNP`C@tEvOGQLB(b{KvGaMp`gwht;?B7b$g%AEQGMB6kIS>v z;l^-N);_7HU#39uPV#M!0Yfcj-aE5+xNlaI$SJ(x0$K$rp_@<^otbWPW8Xl>u9eQ$HVT! z8=OHM_9UC~UiNRnnY7i2{b$H(A^WnDUx3LM+SoFFC}t2Bk0sj;_8$FABaUct2FeJT zFQO0K>UQ&jJ0h+awdYe@6z7j8{e0?(mx;i#MRyjACm)P?^z*c<`xU&i$)ZY1aE@6^+gvM)*Ge`k@IUctht zFHFVM{k@xoVAf59Vo95$1M?ePLTg1-|hAK5$lJA$)*r%9Ed)3*x*b`roh`ZeTWez4xm1 zYQ+rL<#ZUHmZ|q=!KqN2&zzN)L@!8>Gt#EykIS~(kNkJ#OZM9yDaxtnL^|bn^rEzi z&P{sW#+H=X_aZye=z$BC#lEih-Z+AF8`&tiMRCgOhG5w1=(XIvNgmsN5`E|m#hV(3T$P@Zb{Kh#FyT5x&iyFwWt&pAs)`F) zK3I%450=vXva|Z+U~sKuo|t+>d^p7yjPeByV!t`RX9o^}1)XUA9(>l>OQjj{Kb$af z?UumP_@*W~UCG|5+B@y=o+do(a+kPb7HqFculI%nMU&7CW>|J>@>Fm7FKp=Xz`QK+Oka3tex=^Uh0r zH$UYzXHI{;=l%J<`q4Re%8Bt28pI$Y_yN=EqLccJhA-GEW)ibTjs@#UhrH)Ok6L>e z+dMX5kpEh~E#G+c_Waqm^d>rU^08O8=QrH;Ret&@W;m|-FmIV)`^@a0TjAG>u5%ua zao_XeH#QkA9{SK~-b?}Bl&t2Qi&U|J1>Er+=zO>)s@dobh& z(;L92Yd52zo^33P)qCVe{noA2!C!Rf46n-D`-=Vo%YIGZ(<6P1_2 z^X7>o#s0~}xAwl+b3NTU%>A9Fm*aSR{a*XKES7VYb%DOcY^yl0w&*N^y5o0n#{2OB z;yjy@n4)+(zwcTTadEQNch{UviXR8?l$XAmx2=akG>D};;f>48w;2#e%YUjz@n5j6 z>@f2Z%&ge8HzUs8+4Q{LQe2LKi`W_W)qI@203RH}6&k}moyI?#zK*R|gJ{vK&;T1N z4dNXyblouPW^q!R`byCp)(-i>z%jT~&Jb<#_qhkYn$J1NKF;7ZQ*!dk4Rn)@>ZY%A z&EELs#d<97x1ZlOyA6lF`vH4pvwcCo*RV4OKMNB$j6FMPM?F#tcpQboEGUEys_XuZ2H|GyA&D&Ff*$>JQ^H=}6~kW?~&F23t)=^8bu)kA2lb z?}CFcsCFE-p!Xd3%SqNBUQn1HzMAc}2eLsuG4kRDGOxb?7ZZk8QESd%e}zLME`tF^ zzPN(?2gt3@p61`nu%D9as@o`6mWPyQ`2OI3#~EfTJ>*nL^jMl7RE9N&ZI9TawBF|) z!B()hnOq@V#`dUh)gNz-H-3V9Y7Z_^j~KRAL!0&MhzHfV68c?%hj(4ckE`>y{!wkm z86j_r?}HQk%7@?P7e0XBbA{dk_2)M6Y?)ncBl`|(G%xDUYQzH`)3}X;Y6r2-brAzB zbDz_$C)P%6(u~huH^qL>wlDWq?`7wp&nEvCzf0}qeQ_b? zZ?5hAIy0Zr>=yh9x~wK2T<6rxl%(-m_VVUDUHzOK=pMN64SCV*%&NZc1~d2S+1)so zvCjT0;^J4~?a=s)ea&@9C3;2l@Om(Tw& zKm7JD@>A~J?raXT`Qgd~Fq<+Tm~`{0@Q9XU*@6or4u+kp7j&otjF|sD3U?g25Qeq_ zes-|GS*JE}Zb=MV2M4J1v)8}blqY+!*}uFOu5*t)?&l7&AE4LzpOcnH`Kho0{6L%6 z^Ru;Dg8E#mKBnSIuZg;=IjM=+xtZr>b|*9AC1wl+&#ExEuR3|yMM4tsbKP%g>d{1$~TjmB^f4F}Oye@5r9kU&Ye(+>~FA*D5#D|S? znr8O8ILxLExwqB01gAJl0IpX$ORm7qq~ou`Dy|os-|8Xe?sIMU@@eOzWX|6%wEvp; z$}X6Wo`K4V-s|kG@D$u5J$-$bnzJRYYs3X8;j1*kjtU)o0z9Xv7F_U%^Q+6^`^pjW zd3B2pwy7X5PtW#%85fqp;s))hhKJas$JH!wQkFRv&b-o?CtOtLE8%XJ)i7JGU=Q`4 zb)55|d8+)OnJT@ftMjWfk6k7Q3OmUDG#zR0t6lbs``cj6%}2@mVbC!LX&(HeJ230j z@|Q86f%h03h6Z*ft&nll2Lju#;dyeneII5E$iHl__wWJH-^O+(1-Z#DFBJzoooDt` zk*{qL-!wRvtmvG{6fYsUkgvsQEU|BO7n1FfWHo$eo*fJmUhzU+o^Zdb*g9OB-iz&T zXB5`XWLx?K8~r3)@OidD9>7kQ0!wNXw~Afr#TQk$Zb7XvZDD8n=w;*~mFM6J=JewB z$1J+4X2HSa5#P0g}V7f8uyF};WtkJAj4{+29r6ff z=Gy{uX$c+hbHqtaV(70u$@kP@S&KZFl_1QaZI6`&oS%sf$KAqh-1_$MQwt#JDjhabU z!m|tzjnXd`(~UQTqxZ3 z#>@3UL=JT{U9v_Ao0XdX*m9Noh_m*F`THg6&ts3|<*_I8X581_^I+^7`*^r^gl#iMzl|0ea2*J|9ek;}#TY7$*y&rUpnX8nj&cB>$6Pu0MZK{32MubVE! z+|g3hUOM=m=vOR||9+2q*xUQR$Oekt(aZ zpOf~=oArw&H~{IC`=8KrvC<5)qhUEPluYhaUgz8zwVu|Kd=ETD-kFK{GC53Y&xOwk znU_ux=bUK$L+<0^CHtwU?>LL|XvWyN`DU_+NvbhpXzVrhc)T+4`}pmznQ| zcid%mTHBE?nF;ki?!NiPSMu$!&yM5eA9S{EiF04&B*hl*TM?V{K{0o;Uc6Mrv#s%E zI^@-I=(N?^73lsfy1)N*?$6pSv4$OdecfGo+T-`(_xJgu*IfeJlE300WoBbm^&QnY zW4gT3o`dPspJT40z1)T8+j2fV6!SH&huJO1wTt=6YhIL>KbfcXcZvbTgTeotdWLOy zCeK!r=eYXeQn<(X6M4~Itf$|t8|B9vta}r?&_Tv#F=aTTg~_P#l1~f%m!7_?!pHQ` z%M~B*kpEBU+OP38#R{G9t~xcOB)gEjFZUj7ewP@h>3TYKvGurGZl?yVPd3AmYBbZM z&N?N1e4ZRNV?T>i_+a`iifne$0_XUZSgqx4SPS2G68rDG$>KtBlzMTOJ>D2`23woa zlLEPyt$z{bQ|mb$mm|-!#)GbR8rCbnujz!^QB}TEucs$w-87x}aXxbWH~E6=arN|m zb(|sp)k9P_{bJs*(pk%V#<+Rk3&a8AIOrX6j0Q6Z0vE~Dc`|jYOx-);kIwVNCVWDM zzm|?h{A5i#?DZylsA!+hx&kh6I?e=r81dNm+&uZ$X*%Hdv#!MRIbZC4GWoC-i|u86 zyCOS~7O#fm-(*fP46~h2sKdWqEzj?|9hX@B?CIY6X^3S|~qS$cEUTe>p=!U~^<0q7l5Bk#tANJ`hT@3)aTU9M*Xny(Qz-@rCKlou`_*R|dQ zm$WD+sS|${kA)9K@7J`??RnaMwAZ6IEM#{OecSg%`THj|4p`|hc_VBh?0xg^?Zw|a z8%93S!0#6M`l9D4EGk{Bul!ILxEf;BzAu_JoOu-0z_OSQDmGpgF~Ryg`F{?~lYd*{UN3T1&wY3j_UID! zwuMbFe<#7UP7b;-Pn&PR_4sX`{`3(4$9Grm);pt5W=cJ0((4ZrSIxQ=?(j%nsCo`N zNE+lBZFkd+du!{P1}}HXllZN!>1=)wzq>O1Xg+sJzbfC{?97EyAHUajJKN!!+rodb zIe21~kbf)LrH|F})f8^lwDvD~uQ+HF=V}rUYsOsET3w>~E;@fTT#x;4zR2TpJz)MX z=6nphCi+)B*L&J$RhV#b8QWK~2f7}FTg$P<*M;aC9^gCG1CxThtuJt2c;8xeU~y{! z7TSE#w!HUpJRtF6`6PM3VPYJ)Wc5^Y+i@+r*@JeuTVOmz7;q8au_|6qXV@G*rmz$* zP0gx|b5KVQ3v5Ewd9&@Xyrwnb7q>VI(VC3tMUqc;oB2E}z8Ii?ZSsIdF>2ch?14Ep zWifs!_%OY4W}Mj)UsGAeZU=`h=3h3jt3N%{oskF~~hrBcWQ$1`zdLx^{ z26TGQe!0Ya&nI9GOE-y$<#<b{`{|b7_3gXjZ@Qk~~ zEbxLxKELIpzy$68_3H3Amj!i*CN`zj9HHvTbV)3cy8haE=fOLKp+}5SK8)^#-@$k6 zIg?M3$JcGNcb9vQ;LX%M%!a#{3Z1Py3hOX?8?Pw15kXbd1M>gHM)iHZBKBCly)K5ReaGj@8a*#s^EUZ_S zWtsQThmiKUr#^l&Vio*`f*$gcygcLglf%598Iw_mEFJAV*{_V9ZrmVW7n4+Ais?+) z8vC$|&FXONt+AeWz??SgL$%+7Bc~>sMqRg0Os*CY+^#YEpj(Z*E_l;JV%sk9Y{ee_ zjhOjgE+NCyYVp^OnXB}>**a7`3RmUnJ||mu{-J}UR+v zthE>P%x3U`4Bx%bYu($~gbmhyFIC{u3Z2&apqKLCEtg=9<#zjf zUq4saX=lc#-SltT9$sb5G5W;M_zc-7Ig(|z zn$HlM6wK-fydfFEQC-Pii#0OxF4+Hd`u-ZuhXr__lK0D8d(vt> zd=;Ot;e0#~IdA#i31y@ITYm62Gy~&o2z~p><>(`PC@@J8sX7iL==4 z#Cdqxu=nj|YjL>JDtkHGV}I+2OPsDy%Nl-4&CCBb+KU6^)k)?>HfdjWb8l;!+EYz* z-W=z`Joe%M{~MnbHml_CMc3ZswUb`6&S$HGl#f*t+(7Q#q7w(h17Hh9xKqKLqx#?RpD^c&x_;K^`e(VH$O{YlT87EHk50ti{~7y%yByeJ z8num|k>$_mL6J>?PbV#|i_MR`tfU5#6keuFn|HkCm;9MWE&m)K{}yuZX4~ce$;$0) z!Kc>nbL-*%@L?1FHi1{gIkvUh_A;2B+F~j%3tN%(@mb~gIrPYNFOa*fB5yHfL41($ z4`umd84gxuzl%{DFsnR`H7xO0nKf^r2kq`vZk*O{hMl=?cBEZxyz^Y=Pr|{!Zqx zKXREwzs-&_7Whs%Vlr+I!nxAbYQMn=*dQjyKQEZY-GUp^dAYd$2ImW@ebqVBuwdR^ z3+$;3r_9>ewFCWs*a1CBS?lw8iBHbD`G}NEq90{n^81Co{c}Gb1fy#9JaEpGE$xNQJ4K7o;RzGsa;aNqW4C)uh?XE;S!FL|pEB~xTSv(0__x!vCGm47*7DxC)tlMg1r z0~=Q(7$)uZl z*NJ{Sx_jFT1h#T52jum0F_q`Xv}w}zFL{mp#klC|)LT)GiCXV~IV`%Ld<#5L&< zeXI9BL-b~Z?BF`34z{WMFdV~dm_L4*FHi&Nz7kG)ksMpSx6n-XrN~L?)vw4uILdRq zZ`gugS*wHW%~`HH_!@j>S_}45l~d;OK){bn)i27hg_3+Z$>@q$CR4MI9{5BbPBO66J{42Y#Kbi06e}7`V z@y)YtI+D8HedtEQM(lL~8*&~UxY6tG&dYj(8%`I~j=HbL>s|Mqe9djJmFwx+sqSTs z_5K46uh_ejUBb`F^nBJGXZD4Dj$-E%>Iv}0F*@G})0kyF_M^KY*Wjtop#vTTHR|Ly zWWM+NzLP(`Ml#2K-JeaEA1GBuY*_vc@AoY5>6MjEiM~lOI=|KvZtFQF`Q-9)5ZswP-g!f;Q7kfP~o@qVlLHTO;#r75DYOwP1 zdiStij)*4}v(8fel?C%{3;MCML2Ia9khVWbPwZtmVzU~0@-u7nQ~JJ_Ynm-*Yq7@r zcaCh>0ptKGb z6+bZP;7@T53b2;a8o446(5F9dn1sRS(HV``Ex%UfhN~+hSxCod0NPeQjHD!EG z_@vqJ(ET3C)7Vo**YGRX_7n2on;y&}?|nmOU6)v-HnS8DuDDv=?*ciWys-lBt3L-{ zL4Fc^=nPjr=GGNY`BpE?cX^^lQNXuJSI}KtnH1g-{j`On#9%P_>KZZYDsnsC-qI(W zw2|d(d;36o5k9E+0G)!@swp&zy~@597Lt2lSTKeZZk~uS(-!vXAim+}u%v_T5u3s= zqW@|!yRZq*C)DXw$N$C=D*Tdg*V_s}~7_R>qO!pIcg8RJI zJ(~9v+_G%Fye)biPseRnOHb+A%Si7kGEtSU|D)xp0X3hRr z??{TXRuFI3&aa32l;E*RJG(NEjB&2B1%AeHO31&UZkgc~XZ%>w(}$~jZp8n%0_LkftPbYfc=qddPkt z`@KV!f6lXXQ(hk&Zs#ero(Q*C_8eKVR|60D9D6BvBMrf65?5Bp`q%e~&o}Gogt6f^ zr4#;6p2>Xn#mw?dj+qTSjKlj(KF_R=R`Zu59xOE9k(cVP&zonS%_}%WZG2CA)Wj~- z>l1aGbuZzM$TOTFP!PKm+Qkd3RvI_P6a;(tm$tD7%U*T_obet^%l*Higs zbs79QbSL7~viZVtx_X?oEchG2JH&^smrJ&)19roVOMFY6+HjqkUs3K@&`X`d8Y1pU z!cOT+$ySR&VMT?B&_{Z`irq4&Bl8}Wi@pD?&WO5=Uyzq4Gwh98W%6@-@)zX)GqP;f zvv(Y<8fKrsd~3K~<5lhrCOq<_Sd+c(7Tb5ZpCNlkpJp=q1vw~LnV+2MZBNGek6y1G z;9If>*eJPskNz(@RD$&u=aWkv{OEv-@|I~iK=mdyvge&e%eGzt=Mq0;u=^Cok`BOC znxBCg@|_LrmUu3ySU>!M;u7meRyCi#zjgiNWRt33;VEY&;7>r zl{^<8)c8?@^lA8MpGQCN3u>~(4-2e4l>wmW%NcrQ1ue|2>y7Aw_4-T_3ry?&xD+>@$ajI0wjfs@{hH_~X2b%@6zH;b8} zwOH=wuJfnvQ#~Qo3!mtljhUilyq+??bAy_3-2}g?-c`_No3dA_nHf!LPMzngIUV;7 zzPrcCABy+POF2dD{TMo+4$z_>q)8l@9!u9wvA0*l7gwm6sACoF!4l4A33ntrLY#`b zQ@WO}Uc)b(%Lb_N*YdKmwcOACj>jBw4_rL(wC+c&iM`)+FU)Hb+hLy_BYs}NA9sok z%u>nl8T=X=I12y$a|GKojE>*jjm~$ugh@6dY)4cpcmcjt+Rltu$y8d zjG@uFc`*IPNm!R0G4i6a86K7M;UdTQjJ5XWA!7Yw-CGm?6E&tO`+C0h>J!f#NS+5; z+dB7DiM>Ww_ND_76Z6ICAUU_Q!M~y(zoAe6(>4B#P8{U-MQgW!-s0>f^ZZ@yE^7A4 zGz?umH~NFZ2c+zCapSjojM>^%_WMa5xMD?I#pe>}~6jz0L9 zkx-b!hJ{X4?0fsSYEPEUl5RX47x>V?Z{HW&s~y51(&*zqacivyc-|lM=3QnU>9Oj+ z>PG(`dw0PlS#|ae|9;+2@~(BqAP^+D&cK{gRqftA?bFlK-Q%u3?(Xi&C^EU*XGqEbZ_d^+#=JRBxFQ^_QjkjYbYxe@@PoJQsRMu7savG`cpze^4raFt^j3@g0__ zcc`6h&Fg+apCxBzyT4A)Sz%52+d_9r27CVSms|(S@*i@;@ltu;vBzBUbGW#|_bx!+ zKaaIBI$&U^W8(5jBmUCoJAAdtOn6?7Pe-lM47&Fya+Lo)HxC9zeZ?ni?eYFHv6%9Z zwV_wmnE$Z5tLYhypOY=leI34YmGfT?S0&C#PL)KwkT17NzG<~S9+3-IBFI=0F2`!Dj z!%RBe^YF!`J#zG>hTX=OqSmKmnK_6&4ZiExFFW?d$_+Db5szQye&^$-d=|-kV>+BP z;0f2P%aZd}dJg`gG3*C9u94qf%nRp-ODdh`2G@?7WWKr*Id;`}SgE?0T<{3TQoi@3 z8r`?hC2zP7KeSG*e<)(5CF;n6w)wt7hY0^)gbVgK*VY2Su-49CMq^FvLx#^rFYjw%(OO7!eVtI2dV>lNGO2W`Ta#-hbp zXbb%%Hjb{XhOs)MgfY zmxg~ka)jtT$&Ao#@8iGV@1RSR$w@ARf4iRkKKKi^@Tc^b(6i~yqn~9X-$7q_jGpyd zdJ&y7biNzZOpj9UGE4lTYA5|>5j}Jwee^(UZp>N7!OF(^VJKSr_vW+?T9rVBvS@N?o_gL=zFm}!)I=kZ|e6RZ!Hk3IU z=X#U)lBPUlj-6-TF9-IqS?;_`*aA^AY@eTGB|UVTdEE7u+9JB5eL;%H7WizM-wZp; z7va3aowNHio5lI-57Av$(c!1F=O-AhfAutLwIRz_9mx9jy`9ba#lP%}C2w}e-_*g| zCsE#U^|a^J2|Ys(mwPJrtlF{K`LF8#^s-p$TWYG`(>qVBuHhg(mYqA|PWJ5y{nMVz z+PA--b?kUAYiEmgY<@56;E!q6>!wlv<3_&D#(7@tIa;qqx_Z1Edc6}0?bb8=BN2}u zLf^geHg>0ZypS$^q4~PRH7;CdE?2t zyHs+Io~JN*YQsAYc@fy$GY{r%;vOaavhQ?KA$?d z(hK>g#@IV(*lD``BJr4s?$bRDwuYB(&XS83yLUO+O|Cck1vZ~&7zO_$*aBnZ{>;&X zS*=mc3is3@&p7JKFPde}7G~*Xlf?Zt$o2ni)_ljuS?_&%7C)dr_$?o2t-JLY-}Tq5 z)o2$l8oJkhCpWQ^cZwmd`n5do$6)V%K14X0dM7Nx{_IEDcz65T@fqfDp?eIh!+(Cf zc*GLxw$xnp-Olg(0GsHy=qG-IX5t)8tF2X==c>aG`uIvc+wdcN7OpW7=BK;njPFN3 z8)v$6&-bjWUXoh@@9WIp##dnejV#&s*MYGIZ`%5r&mDLDWLoej*K32B=2Nce{L#C* z>9BP-0{>S{hnE?!5C4~sVtdZb^36xHp8anZ`{|Frh3{a4T!DqJs-sqWCni@q@+tn1 z$HixVQG8!M;kSHNztxxLFZu_`t==GyxZx0<=KQ&hzIP{n^@2Tx|E&J>ovgz>x7n|- zZR2ZtP1!GOg_SUukUhJE}vUF=S@kd{1!7R<*D z=4mh^)^nJMS^(^_pt8!UiG+^gP;y+jLOR+=K zZfjTPJmSbndek_;=YoF@<)fBEUw)jQ<{+P!dduV*>sW3b8u>IwKFfdf3ZAZ~_!4_q z^EsDAZ&`g)Q?+v?z4(0({5OA6v}p@nf6A(yBd4!i>?as~os#GmP|J@iMo_nuZ!5P; z+-#fspM}@Yu^wnNeB(pzfc>qW)iXzaN6=pz-_byxSwS#f~!U5Y(8AhLW9%YW5|G6@C~c!sI&aX_{UVA1s``jU5{tP z_ow1L^R3-@cq|FrwcsgJJjv@^3Zv96 z+N*0A-rl}hZcfQs^fVLx*Wn4b@(16SrLD)%#WwX2tFwIR8ZqlF#tuC~cERcXtfKi) zRuQtZ?PONdC$D|d<5}#T*SZpYtj60GkPDN@n$dDc`NzxAL#en}q4BvaU-=Z=@M&Ii zA31N%uQAV;sJF@grnnbXWz#?5{zEiio_>H&`~a^m=K~2}di1}qz6(xHz!ttR*j!wT zrY_~ji+(9`e=6h&=hYh~H=6s(=V10;d8xmbgY*i%W!;D0$Itl`|NcAH{C(d+1GR>l zmQ;U)B=T>2`0(-QL{HB|9#zulei}c+|Ivxu;X>VB*IbAvZ6dp@#ZT9}o@+I`-v+W~ z@ZHu79>lzpsOf0;zMHR8E@(=YCM)?1M?J*XX|J#iZ`vnD&)a?cd+jhgcs<|PO9_{|A*OUBP2k`&X_Q!ZY%@qBp<|fzN=^DG>X`g4_2)_&9z8|K7 z*T?HDWAU>CV;*cTa6I_@& zPGM#4Q}7Ps!NcJwS?l`2%NIRAaBR&V@p#y`A9u3Z`?avX@lS^DE_0m~-;aJgq4$h) z?y(j-26Ud`XraRz7tC*Ar+M6shnnMRYuSO&@-Yo7B z*0_MKBljZkUpD4h`5ez=h3J9Zt7pul->EBq&3+v3=p76HwOi>E8}TRC41F$Ys;{1f zH%~IgTj$Ym>irc{(8&zPraOiYTxML+pQTqVD309qE3=aFompAyt#VZFwjbexdi*`6 zZ^Lu+r5D|oeJA<+hpGW+n5JjSxR<=AwRCzP3=+s)^0J%Hfz#JcC^v+ zCd2py-)qBP##mc*tBL*@N!J&6jcf7Ar*i9aGn_|^qZl(8W9`D%FV7@tK?8%}>Vg&Y zoe^}j`DpNF{2vXTca!^gp1gs@$Sn{5cf=XW-a`*>_^o_5eXUF6|E2V<#NLR>m237jF-^scUyl;;yIl>+HI=*ax?=60kKm5&X^nLaOAp;ue_xXL|hKJtHT5hw}r}Q1U ziU0PXd))@}yIglKKD)xTR~if9D){`I$6**&R|KE_4IIMgieEeC_&hvuBfV*(&sM?x z%3r}RnYq|+m!X06zQ5I+P4S%9c3bmy^F9Gij^p3(9D2NZpM+jk#Cq`b)#zc9ds=VU zi!|9~4!3*V4ExJreyMw1^1^_OnCkvU+>S@=CpVX)v3W2BdsoeIz4>qkZx_ro*N$J{ z{dKU~^bj7g-5T^}d41`6w!La^gl~%bM~_7V-D=L7m%S{;_PBm1YSnwyuo;C>UdQ}O zto2p3b#Lmk1phn5s>Ypl51y|brYh0fjY|gbKgjimEOIY_^JxS3bg9?qg>$2Oy&=9g z*JtkS$_3t&PuH#TnR6uD46pf3^ow2Mo`={74`kI7pUxU4Jdrhyf5ILlzauODT$C4e z{d6|{AfooaNl(%IC7;3n2L|8#Mepd5%fBurn$)}3Qgfd_;978Zh53k@i1VyL$c&%K z{n68?g%7=0v#vL5!dIUR#&^||recms?4_{KnnaG2oTFmCt9WKIl02BDwoq@Q+(`a* zeez4x-=%R}ZEiBiTKxpyJI^{?IN9^!6V-5>;*Zxn=6PM`M)whU7^z-w-OjHsUNJr- z&mk`-z95E_487a;=VwFCY09eVR@r}vT_x_@caxm?$R8WL7ER)Pi}Y|{&yGB6&$u&a z;{f@02o3MkQ)Ryzj-Bc)VLshrUW)wxFLL&XniPLPDIc9;QvK?L%dI? z!8c;;H@EiROVm9UX(D98I<&AJO~hF0+Ou410{jlUg+*|`k7ma5x!rDdn z?8U}qv;B=0&YwOo=jVC7+?-dLqw8J&N8_^mrSr1k8(!uUh&{EwE7Cx>duUqn68-;a z_AkuyIh2fiT3qvY#!LEY{yA&auceFq)V@ppS^Hi%hu<6B!ws-~J=(i!l54r%)$ZXM ze_!dds}_59xF53Gnr?yzd@8Vix!+#x{b0v(J7E)T)*gY=JqEfiJA|%|W<#3J8u!o< ztiRW^QSX7CC&bU?mWVZ%*#o&k46ba2+?64p!TyIu{8!=4L+L7oQ4f1|^Hy@yb=>py z2i%MIgRJZM*5Su+tA9(GzC)ezrV4U$a#4#@8kl?&rh>=&Tfe$uZuB_o)%po~_|mK6 zZLk`jMQ)QEwVJT?HeJeiu0i737V0 zWb~Cys$NH@e<5G~<{Geh4Vgujrnxy;p=q;t;MQ!|mgoWSSG_Xza9ha68L8%SzI>S- z^u|4}WFy(Y6YdocKJpIT**SwB zSHjUX%dG1*`i^l~zp()S$Ad5M{ycPX?qqAQ9L+e#b#V1#eu7Kqevf}T;)CB7_a5vy zpjQBXQrrJqy+?nqhWI6Y#0Pvob@G|&;lG*w*}0t_xlz7h>ij=xpu;v=+cB=|I+sl_ z7Q!{G$Nh!QbA|f}{yt=b`!}v#Gcc})hwC?ao-K~=GC%JBMk9gI&{L{mwkziJX>)5$ z7Mru!?|bQ=@dy3*Hp1sdbG8}ZK$nRF-~d^N--r`8v=@P?@L_&C%57QcZ=W3wTL{z=oQ%kbE9Ejo_zGwsFQP8 zAU_g$Hc69f)W{p_^uFe?EX}Ww7re^8Aaehv+%AW7b=FJ=8FBD~EcP3&oXyskM_jg1 zj=&Li&zfImBaXhAO}z?*m+YW0A zA2&|L(_o-jdw$rQ9rt{2J(MjC>xIyZ#@tKyyUFw1msOyTlF`mvxz8HH#`Vkb$t~t} zZg74QF- zy+gjShqFC$>5?5=*q{sXdb!l~;SVZ~KjQuRO{fiPRgXDLzE&%qP`KWCe^>!SrPj9% zt&K*Hu%A2T9*sesJ#?~=0aq_J-20V|UAYd%1MjeZ^;+NaTxv{{t3B5hUax`Cx;x?O zEc@nRb85~P{2spX%dId^|4I(OZ_fkRJAyxkt;B9grdS7g21%*h+>7O*MLrYTJ&Brw zJPfL3PHuFK@coqBOh(>;FUvu?QSO9X&b%DRnw$Sg*XIXX^)>$U5BK3Zd24c=>t6S+ zb#uLLufrVg`wZXzl%Ktc8J93t-y%aP(6?J!4!#%6Wn zPudIQgCY%7&wAdy+{ZSTFLlJTZ+|}PJ@sx8|MiDl>)-g_<$Qbak+sjj?k~^*{<7>o zbL*AOS|BHKJOAvsx!m|F{RH;;VbT?Tv-kzaVSAZesvUpwH~Fy?e+gY@X{?d=VLJpZ zgglsh7k+Oo+gG6jxJ<{H!}0J+7GAvsCa2Q};q%Hh=H{?mrRVj#;zMY<39ng|rD&jZ z7W;FQ`}00&Ic08**3;Gn-rK#_9CFTO1A`rzTn1|w&wzc{yukT`2F`WO^CrU_dI@a( zg#QPf^lkq){=d$~v7yGC(q~CNc^kh%17A?x{8zGuC3>=Csp8Xo{lg-BV0lnmU z-^qE#vJ;LS9I!RJ9;9Pfqgm#2=}QAKkG+4TJHlD$k2k}PeK3=wf1}6Z&6{4cX7pvT zhMe5jsMAX7%w3szirVZrZU}Tu8J?XqyQd!CZF_~T1D8>+b}2hnePr2+ zf3T51BHvweiF_|Ps_9I9Z8qpnrCzaew%!kVC6rIs8%fWwwC85`y8vd!qHAkN1|;JT zWkdSx$;QtZ`+|?YP0x!Jcs3h2opi5xcrGhD^v7&;=>NCNgAD$^+cRv%BR1n9yWQ8i z=inAyu6`V*@t8&4uMJ$|AMu?PK416@{fBNuPtI>gi<|fYcCv@ocqYEi+z#}y-MN-q zpJhhieyKTMW~@OgVM8?IH^aAjX8gMhE{DuAhb!ULGlflf#X|2l@_FBCf5E@lKSoSt z(xX|fa;NWYL<@)U`M}0nxVLWM)8uPU8u8b%9oBT6^_vKLeXu^pI>9^LKDo&21yda} zXXlP&^Y%FIS{It{|M8f8-~;>f|3KGyrP#ZxcJ?2N zI#7++SL3qR$%ps&Ki@+mdXEgA{XOo-W$7hLv(oaTS)LBlviuMBrTr@F*kfInqMvE7 zSP^sz@0YvZ;PuyUbnl+A0XD;~tH&!E&w4g%(eVJ@3YVj;N#K8`d0lMn!vD3)S_aN{ zzBPdVGoNS4Jzr$W9dJY*?VeN`L-4g$cE)7+iTa6E%(o}UT6DIQ?yeT5OI~ZIdY#y(qG2_CXgqzs z_W?Q}yq8RH4(nNNG%hhO2eTm)Ps?+Bvbdl6*faJ;5tGUFn5#KYz%d)bsAuC=^PS}A zs>z1m!}TBN*WUAWraSPH#pWl*!k`0lydLgX2Y&s%;+J?h-FrLC?|Ch&I<6N2dm|0L z9=@Kn@+tSC2{cgT{Xqkv_eabu{6@=sXO{ES!g||kdBuU*rJiFs9&Ya24*6_{zww|d z81K9r-TzLX6Z?Ny+sX;|du}*M@b+ua%$3uv;d=Z9-x_+{dO61+=ei6H#kgQJoOi+f z6zgi9E{bEYfBrbfVgJX&&;a^4cPjorIZJ;&H|tvWQZ_U2f4}}fr$5&ZT|Ybf!`4oJ zKC7Pcyd2_}vs!gUVgFY5|AGE9fd8)Df3ru4zO9ATbpP>18B@p|%{s&ohR*s`*1GtQ z;_csLE%H%Yk9?ku#-rNAG@^bj`qv~W+P&7ZU*UOf#20GNK*R0k1Fvf^TKr9RB$J-{ z-rwkTE}kRSlkjyXtIhcqG$5vvs)0}Vw$oFvZxlin7tBrA%e80W-CULIfmyFrC(W7n z*KC7j>+?gRew&Q;6)>QZ+x*IpaZ|BlX|%2!Sn|AXz}bvR64|2y|jFK*_u=yhz& zmvmg8kNOyY`m3SGP@i7B^qRcAL`$dRW%?)Py6F`9jhEv2(dT)Xp2X45ta-D(g!-?K zIHkAo{oiF>>J-`!u~%oJ^LF@azXLwtzhw;?!z(&H*BH+*#qrtdkY_((uZzFi>+thz z*nTxJ<6(Ce{BL`nJqwRZoMQnTZbr8oUc#r%;dbZV`?^=h!f&%sjRLzMx5M9y&GW*b zhldA_OiTys$d7ELq)bFkiERTS*UTc7c z>W&QPL)EY|$oa#sa@9Q8?jFGX&&in!;PU)2@aZ?_1onM)-Xt>L_b*tMrB|-cI{93u zv3;l6Cw9zn`@yaJQ`WSA-am`(!slOw1{&F#b^1Kii+eTk!MAUDH|vD|qW`~qGYl_) zBYymA590NFqkGjGsmE^HqaNv|FS5?tzse>)_#Iz_8Wj7i7S!ey>qWvI9pwHa7F7GwSZ>HW*6U-( zJ}Jg49&zeX~~_e$JLy&9hd^cTIKO7Qm*F@Z9=ei?cynaDpi zQ6CF6JdF!K$ePyh%j%z3WADK}Jv4ic>+`MWOQ&3n(qZnW6}E=D@0zvv<`(Z^W+dEC zevn?~+4}MN$q&gn{}Vl5U6FmwQ~Q!9&7OJO?fA60i+JrM!#byOU2+jm3g3J9G*_F` zi1990Pq#}xl6_s$)xSam=!YIuv}wtUbQ`+ZgmyN)IB;yE-}-(L|MQ(Y;$(CECgNUm z{T;eb=t1+)#~5o|y~G-i8_@l$VWrKpbXlLEWBOY%6Ric!iuWXA#Wu&G$8p||v;JMa zQ@_Ld?I4rs(WUFHt@W)v?7Ro@Hs=~V4-cCOhf`p^)4GlxkO4mn{Eu~Plrhp;`<#wa z>{IsB*;($|O2_x*WGx968W+Cm+N?y-DmdQH+g_ zvj+8NV8%1F-H8`?Rxz(+oVl3bHDcO)U&#V%G}9}eY_j8ReRW~bIwo7tP{dd&{RTZ;0{=goYkpSXEjPgoo;US**S3b! z^j_5KH!oi;-=cr^5_u8w^8?qVvtXHhnjiDIwPD{*r7Nj-Ormb4(Y-}J|1f_4o_EQN zkMU@Iu4I2!uu=4(DxFInZ02*?qK11?^!a>KUu&O5&QCXNhQF_M zulMf19bXuAFWk@zdOVXj`jCbLVlq$aZ>1(|rMlm#zbE(1YvjF5M>NyX;;k`Ks{XKj)8_hZWI9cbrp*KaI1pO!3YQ*oB znX8p}{z_O6S_*w9^qzQ^J+)s@Q=J|Z(0N?v*KmC6~mb+|GHcWm|#16aI98L3ohxgl;iw;&hO>L$8x5BW; z)W|=@7xc0{`Pc>Q-)8-oy5zsLiOrQv_Pl*C+kCJ1@KagCo)5ETJimIq+8erU)t*nX zVQ0V2I?m`rblQFx2i37GV>`|?e?6Wh^7A5o9kGph<}6|_^Wl1t`CtD>^BuO9`R0>N zcEeP}MBsIgIHg$=|uAvbQJp3Romd7ED0Y}tz&g}nR^(Ic<;65?P_aq$r^Tu z?+rczx9)$Wb)03rqYvb`C&j(txIrz=czxsde`Bv7y;Jn_C}o>g%*Xd9eChr_hei0G z_z!Xc{#)N?2Y+C_+~=sjTUVd=eu{7Z%`r49Unq(FQLlp|b;Z#WymqVF)%E`rM|>|E z()_C;-)Y{CPmgmy6OC5*Z#PHnuu=!pK?B1)PYe2n@ge+w72_YY&$Iq8%f!N`m^V2q zxiRYU#Yb}!A9VejjXUJdJ(lI<%oL8%lMY*hy#q0^z;n7seIEW_H*!R&$>>2g5B&{#5D@tck2VH{&U(diy?}6y`{I{&(mM^o0u+PNVMxcY5t@z_C^ArP_O}h&B655J`!#o%PZ+u$ z&$$$BoHxb%jDvmie z21hVG47NLAzwe*;7+UC6UpnP;y(iSOF8YkjGDi9C@Tg%_+cnKSk9^JdUbnVyk(cbr zMek*`>)0z1BW{7St|#s5`huP{uqf`5j(>`5MYG8oG`rC~ukt+bGm>l+2T!Ivl?|aM zl+F1K-N_zb@~6t=E~dRtl0ou9M?RFLZRn&N#%@@b4T-oq|9ROevLNR5kU2&JMOnH9 zKiXmq)|*fJttIT;^nm;1?@5;Y3dYU%W@{6)5&C}Q#f5FL%HQGl48A|j{D-|8_@8pO zaSs`e2FALF@u$oQel-Qp>oo7BuwO8$x1h~~)&XA%?8hj#PLaRa=y>>h+Jk=XQtKLZ z@sIICKASbli>{OVQ!}1lIKSN5j)C!Ry3Kg&JHi+>!1sSP-*K4#>CAyqlmpAye;c#3 z;&9dmYdr`4mJQ!x?-YLZcKT39=s~OKI^tec{OMJberrFr=hgCiKT|G_dh0gvrl!?z zsKtIe8+w3lu$k|0hyEu=^e8)MPhxvy^xS6L^>x;AMo)acrPh1+gXA4ng&(uHe&%Va zHSRZm%N$#U$FIj5_gEJ>>B*^&vIO>vn7;+)4#EEkv=DS4$26Ib@65r6+K&a+j(*rm6stt9Isp4|ao`kbc=*?5Z{ z5c2TGJYB4nPv@WwHd-oYFcJICvloXS?9KgIvkz<=1cf&cLH zM7~4uZ@=kBk8JVaMae?zIUVk2;45=}X`QTdE<7(oNU|A#JlRo{5M6{gdL zV7_`9dwATl?6nuNX8eEne)|6geFx^q;}-AA+wiHVTRuA?7Ct5moUwIM(&e*^rCNP`&<0^AL9Qp{*DG<|HLPb!4NyI zC<`J-D)P?9nv?pQ=sK`ncLra@UupvT=wJwp-(da*d%YG7ThqXa(?G(J-PFX_#)@%54q@NdxgE6RW9V06B8T(|Lr^M z3AyEMeiODVzeVIkbR8mp#c8_Xybq>(55Ad=y!iv`@TIh+F1zISWV#VHOT_%o zoduu9&!&=R{dB=a)@ZTyTM3hJdHsBUFF^yF;Bz1S2>%NFcOD~iPtfgdhnc(Sb?oHv za@1x&M=zJJOy=aOH{fw|Vcj_+@8{gH{4$f_zK>2k+!*5?$bxI)x^wW!jajXHrf#;= zNIbO%{)X?w+x1^>Tom}{`-J_5d17C5iZk@_82bSK5VCaFFxwr#24+MCAW9M zd)A5$6MLx8MRHwFsb&9_{l=cnM%?^aHueGd=Vu+pUtfj>a`Vkk__yh*$#nA-xqX}H z2d*4E0#|N3a zYxj75b9u=&GWHJl2lwNBkFJr{++&~l-_f7_-SUWI58>r_*!0KkK_;JIu^Mx}%h>-X z_E9gh$5Hu-ud|Ai-|3z64gUP4HTVMl-4|Op>HpMPi;3CSEnOjxfqy6VH>p|hw!Jy% zfJ;3?^gu2{r;R6J+qJ^xiTsz4e`+NXcrC^?=DpxqPSN4^sf&M5t;&blh}-lK-t?9| zfc`4x%jbzNOgi&rHuc_r7IS!q%gJg&J9X@|3cPFl9baUV@tf8)FJ;a1t-;PWvhn6` z0vmV?|5+cu@zCSq47>39J@`rF!-c;mFdcLdI(_((*TZ_m1{Rs)u#H1b1Pv6i@AI$; z76;ZHLyJlOZ_tCaT*2qGk}gN5P1QyvdA#T{JpU)~|08_*+>!K^364!MCc!5i8JU&yu-iAfsUT~=A)8Kn*FD&V6ToupNZmHj?%Mc%5Sn(JgHh-|Dz$COw_sOq%bwCHFXQh6Z((`j@JDGq+7L)0bixRaD zk$*S}A80bC;m_&37naQTh$rz>d?tFf4~GB2H+l9gc+GOpjSlL4FZ$*;q60QUT5>w8 z=NF0nWJ+gStLFQ%=<}XT`h`6y&}WA{{#ozP=fwfm!tO?U^X>g2t0xP}PkbjIMlZ9a z`Wo>8CCk2|LwpGr=D?n1>3TzNh-8+2#AN0e^grSzIhyyz z{l+Hu0@JDZRucZu$YTy&C-j)mkCyveT%Z{94LVusJM)d;^-Ev*-i|^K{o=#;XbInS zdZRUnc>fja;2$P`Jl-pwd`>IlUC?jR*x#ta+LxoZYsizI_qy&V^2X~`#x*182usA<_GCl1 zzLJf-Ig%fIK0wvcl-+ z;ptgDPt=ax`E^#f3r{=%Gj!0rJ@q>Ge`If(FXWp?uime+VLorfd&*bh3GA4n{X70q zJ$l&CbMTJvK}P?;*~a9jiusIb)P~MA|1;1^AMA!)48L#Kg7yGN#Hx$Fn-1?I&nR(;!d>PNoSyZ>uA`5N!!7uqD}6JN-S#g>q(>1O>} zma3QA|6w)}ZimX(&%;ShO-{(Wg9gTs2MsIuFm~JfOwLLpJ9^B`pB9gg(<6I4c^dL! z%H3)r*;OMBso~qspGW4@$RR1*M1~)+cDvp4mRHC-_CYa6^l7~OIXuW3EcPnaQuGUj z3=SXB%D}y`$g?cx6JH_6nqQ03cPwYzfF3Fw zM-LZ{9l(CXaKn#zA*_a9KjcE>N?hU`*TMAFet)s!m!c7RQ?3m!ybdi4+KB(bN8|^! z9rL;!Ei8h0-@VH3uN~(*eb#?8`O+_+=jm+h?VquM-?Mk<+ic%A5o z>wT6V(4G?Lp;8WX%UX8A-oIy^Tjf^vk$t_szvQo3?>*mUHP*QFHoZ96$jLN4G36vT z-emti`urHWPY>Q-Yu3jWI0|XVofFVlc5Lyo;4hz&**hjvcvOjQBP&x zsrEa+<4^etZT?fAIX$jc!4dl&_cv8 zd-w>3%LlDwLsyF71nwu`IlcU5BX9YH43X>pka#DZY22Om#l`!2qxR_*`|O?$djNf^ zk;(A^$b-2|$^b_Z}hP=5P<}V)V_nkiL zhmSRC(w`t7gZInn+$wfU|883+2T6@;?Aup58t(DPQgP83HFDtE*uNv_|6Sr=r8PIB zuhU{>Pi38O-E2NfkKuvQi&4Me!e(;eq`K21A7nje|B?0GV;|#V;-d1((+#hfPje@a zD5VP(d0@!T@WIm)k_lugy(Z=7NoPJoMmXO4ARZ0ZJ$TXxe|LTV8t*&EhgP38-4Fl2 zFb9r>e2SiRdK4Gy>Ib8T1l{zI;p4396#DLTxm{v|^K6Kf|dduzL2VEv#bL*#B@7Zs%&ST%$U(j9~^q<@U7>2#TLn0TXgghu&qyO4` z^L6BtY%Kl|x?rjKC>&uk!%2z0b=71=VYfNkP8a8MPiMI2E;`?MHAXY^#+!jA=kf8Q zy=K0K7BR*Nw|@!y1Nfgw51NSvrqK7h_TuMaVWns#a(biwam-!vE#Q6P{a?X9-N~4) zE_g=J0-A{a5L10`bnvH}_@~!f7rJq>!Tc2Yy!W9O$$=}@o0%A2-53ET128 z0KdK#odjR6*#N_f#1waq~kv}0{XXr_OAiC&S zJgS}DRePLnu*#gymlGVdZD=5wj^EFK=P`J9=*IMrWQ6y8zR7slw%=>f#>KCbG5Gc< zzmFdM9dO=+_t(IDqfv2>XGbUP=%?8^>-;|YHMWr5o#3%+*L9n{P{sOk_HRl0 zVMEST>AJVF_EUVKTltFYJytvSO@35$w|DXn-=$AFn;^j}bD=AVcjO{JL49rsTR*=P z{$`_it2T{w{qi6U~G*!w^ z)QSJhlHWBAwnwRh9EJZBu@3)}A7D#(?N%Q)mOrR?9yHW_S}($o1N+f(;C-8U*?~Vr z?!+!@ix(7Y6zOT{hS&6ZjlJsL$Me-1q35A^W25l*LS0(>d;-! znTXeS7%>0Cyivv{1gAg4^JAQcS4SK_PexR2)B97sL;p!@Jk8p|{)qMX!XcQSi56O{ zFItG)>Ko9)Afu$8eMdHw86`ci4)@n|(Vfu1MO9=6I=i?c%MYG_mxu4{{j66EU?e?o zgxumbKIoxKUe4}aRfx$6Br+_k!m zk?=nS_G1M9A8$-1=f}qW5bWK_k>~YM)**h;xKpfRgFTZ1cl~slk$TJP!H^G`Gt#-H z>1(OaZuw^Y(%0#&t`BE2)p=*WB)^}&eq8SHy=(-&)MPYzmk-@$PoMF8!ELvFf#3T+ z3@5w)iVk4ykoUzL9l3LB(B%TpH2;?a&p(~rY%P*0Ash4rl9yPD$M>H6G@E`ep3WYa z#J@ICj4|>+I}h6|&s0nPl!@cyCOv{L zuFrCOJ2~}$1@*bPpTqu-@avzz;PGQyS2Q<{J%o~ zH21x0@c2pUhxAie=G>!qp$RllizaHu!TcCZ+!Iml3|E^&t?EWb0 zI`L&T>MrxgH_>~Cy%*JuwCwvV>tzRb-pY5r&3ev`OOFz?{lu!-`vC7Z-j zw&K5HJxL!w*%UMeR0>mo%PT` zCed%Y?$q-H|L=nJz<)PgXA=HD2~C9jm<|8`9uw%Q^+&}lqP8gF?QwsRcM|$)`1slI z;oB@-`+8PO#?)`K*EyL}Lk^T~U^g#7tMV3#@!LTwVS66^1ONW7k^3I8zwqZZKcr8*zN>sug&Ajkw!=Ie(DV0!ta6=NwTZjY1RA=b zj*bK8q1y~XPggn?y#A6>uQ{JJpbIp2pM&5 zYs3rEspe}GUO8Hvl0I6wg+40>rCiQpI^Fz4Tx9qen7$9T{T(@QqvQD>!efmdL$9c? zQH%Q>_QttjVFH?%Y)nE6-R7$FUbJu6t16AW$w7PJ-<(EXXV~cW7frfSd8ABBRwcqu>HNF zosjT5B<3d3gChyq$)^>#&#^aiv)%hBa!_4FDo-z0{cCbr4$5YAEwf?|*Y~pK-Sqnt z{A+Sg%9rb>Bo5HZUTk_$^={)nmFOjEz=jCKp@Y&|K zg?*$)v3li(gX*j&`fX`1eqQFcaDSsQWF%QY&V--m3b?<9oQeAT!Q;_D7v4BpZu&ua zZTsmuzs)A{iA}tdZthu!tAB5!(={&EV`PSS{AB!plG=CiuPSaI&EC=qF@59cZEZpZYQ$ZOElaW}1sBPx~8Q`(e8O3Ai#>qs-M< z>pRl>$fXMHk+h(hoH-tHmuEf=%W!|r zlq?MzXvP1-ChkOM?atZf`(5mk9vJMRUyEBLjXo1ANXzcy%dc$(b*j!t6i`~G#o z7ijJs*Jd*;(xXd`NM-CvCV#)m-itN6KFZpU|0C%2|AmHy%NbhcXg(~a;r?5N}9?I^Xa!^7?}Y9FvZ_wrMn(4U)r zGn~Jo?WDClE>^%N6u!}Mj(4-ed*zpppsP0E|0VRFoEp<~1I($9DzJ&F@%v`Fev@aZ z5_c}lGoMvE@!IJyx6!?w&B_;`6M1CCeB4-<^ViXRX7R)I56I|Ncxbcsb=L2OJ-#PC z-!9+GGZc1<5vd(1*(g3C*PxVdDMxN5^y#v_;@ms**b5(e%y|Tqw8np+l%d@m$k$9Q>H?h5`=zS7-Hz8=?Rz8ixf7jbk91;Jom<0d$ zf8}KP&~)!gG|`B^v~IKK#6EL(>(^PU+?Z;(Z{Xi+yW8F(_+p;zmzx8x?7*ZSX2mn} zVpr*Eyd!cSCfvt{w9d2K|0MiPjK4T$!)ECHlYD19y=IKx%8g0X6{K|8gie+$_cuRG zK^kFIPWU5VJUlin)_~M_eboA0w%W0~$pktn`(*eTHu!1&*qgu3y6B?aY>(JGX*e6Z z*V=a7|CN4Naysz&!mVg=H|(%E%J}R`_mIi*BcevQiLbd%Zb41YJy~_%LuwVoF{kr; zjVF3&2c_xYuyF^(O0z${~9LtvI@N&`#j6(#aDp;QtzAYP!k0ExzMSX(Ob8} z!%i{Mke7Nhrs{+84e(tufy_5&^$WtPS?Pub3?J}b#YGBffoN5N4uMdMZc3pu@)l5`X7yRVP|tta6GkIXxE<$OGD2cCJ4 zIkP^?^!<`^)MPZWzuFJ0;Xd(cHk|%56mPB;rx}X3)zkgk;J*~F4?j+xOyT=}v0 z;Ec_UCeoGGCe|W)21GoO-BpU`)QiX0%1f*ir>G3xC{9`z@r%vYLEn``jz*H-W$yc7 zdn&r!ZGQ0+vbkI=u4L+O;SZ0x+;=V}2hKIu*K9Wbo@vN!#+~$dde0L1B4@-=`3O?B zW#MM}99y!P46760OT`!x{WlXfelZ`COoHq?EVoWf7sW0f5L7WWwVFJXI?uH_dqR|T@O>LC9$A7|v1r4jd~ z{}+1;gl^wq-p1m;6JS4locK*K@2eMPBc?UuC9>cJpNl7prIgdROZglM;`}LJR9fxn5kH4m?^N;NC5HHH(H>m!LNR{S0&8V_ z;5j-{1AgCi>*rZDe_%P^PURjxW3@YZIk1IA><_#&N7pT5r^bG!<#fGT`enY;yy#Pu zmhH*X%6-;zuXQ~R_h{kjdHjNoHIZ4Z_uyx21$*}7+VK(6bl;rZp~wd*H@VC`=57&N*F%S$mG8EuSEGvy zHn4$LW~HSk^cZC4=d5|`BUVP>}~$xsPPS z_PtiD|Bd)b(74Y{9QP zA1dNL_EL;|wFKUC^Q{3}ytwanzjd1Sk{odTI4h22Y4nG>h<tSEoeaW7^g?)^6Fx%1nsb{`+mTD)k( zH{_4?*d&)j{HgbZni%_<7uN8NqW7XsCqE+<8!g!>R;34a4yMb{Y11)!EZrfej;BO_ zrvf`SCr(nJOBe9b5*VtASm`!C#P!iv63>=*I_h0ti1U70v_Z<{ z0!0kEjy)3CZ#qU!=_`<1t~cBYbjnXqA=jlsKh{+4OVZ;S5nD`yU#q?E_=Ww4$*jrn zUrrYNd^>E@%R=|L`Y<_#UfH;X5zpF}O^k0Y+9@Y%FY&!|Hf81YXR`V&_{2zl=iy{> zxqfSGvRZzv!WuaO>P8aSPj9h*7u_NiJ51yf|3G#|Eypgu>r8Ar4H!n?&(p2)h7{yHg zy_y>rih=dZ0quW9KU%fxUwZD-3<{J0c#Ez&GZ;!l}f_Y8E z5(;vzD%mReEp&f=vxxDhQOnD>6Si=w*09*$K|j}`|0jC=^x+eF?j~K2XF2&tY1jcH z{f56jA3huRlhDh;t}YR~tzD~L9gi#RKr=sI!oHdU7qBt**Jywa)yd~6E<5a~T1>iR z<)KfroLE)5QI4jOb~yK7zrF6Xd?vLHp0R~I8>1e53_Ym+rf=xVU*nf@Klgld!Dnnw{yw^KDvp;-e~Mk;UYF7J_;7M+rE_Ay--i%*El%gq{xZww{J^vy^c z@K-XkOrO+z-#u#VLnf##5Ho2${BAZ}-boGqU5@4(=|pXEA$rJxTJ~>&AG$cKPpnf; z%)990)LT5=MIWM@mC3sZI_r?%RkNJFHWZ(^3{C!w ze7XpY=6!F7HNEWCEYI$$5wEM0=aFwS&sXgwZ+Fta^d53{CyV)VP{?*6Xa zWd3&PoxGV$-2Zacdh9Rw3>#zSEm>~b9rnxnYcb~Wzwr;(_*E+(a-+P@V(#Z0{%rk> zE9SqK)w6jU>HQ7jnhnQ3%NlOBM;(>2z@vF9{64Hb;9%BNB*F-P)nb*`z-u6F}i)$2WMhfx#j3< z-Md-6m_*d+S9RT)#Tahv9h>ff`2+U0Jw)%@PUqYCkE}c59FeyixfxUO z$f)Is9-7lVhuqI(nd{^4>87{6z9~QU4K~GJ_&UiQHbML@H~cQWP9C#Y!e5HLoSWHn zxf(dR=a*SG8>I@b&+U&~pZDlPk^A<3F()Z;4?|+DcDje<=(11m z*Cu!`z~*r)EK-cP?Q%8U~G=q1<7gD;n- zKaXC|CtEu5L2_Xy8F7GJ!}d}So*vhCoA0pXCOre-CS@<>*`N*ZR0%&R|9lC)Tn7Jn z{5E9^r}%CDu775Q(~)yRMo!ZwZr)?^cwWgy++u%`JrTQqlsv!}_VW{N4gFb9q}A#t zw>(4cKF5dkoOsDc+3ZKf{lo`D2byATMv*HW)~Z<^U*jU!S->Z-Ts*}daqY+cnT_OY z=s3xjaP-rxnZKj*gqjb0pn^VDMb|AOlX7HKa*%F-E}H4XRdmf<Y!8k6GI;{>(Hh`%w0RhV zzx4&pMb3y?pQw>2WiwRl{UEDHlda~r1|3u#{fr%f@5~{W`dzODEe<-E<*qv<=T%)1 zAAd4}&V=ulbm)OSp4^%O%W@l1Io^dmd=p#kIk%hM%-$&v-+0t`@c$)q;eLgCT;y*# zRMCqovA=Dy3LW#8C-j}%c78m*ykalMx_vORl&@!gR^4$p8>gRF74!Co! z!RYG3&AzwOzS6&fH+-S)(13sFyvca!RC>l-evkcP)a2?!@}Ax~!ZUa6*MBMOYCek= ze%a_n(2S>6^U+nneu+4I)u|7%IS+oE?S1aEZ2A3i7s#p#G*~j$I_2*|WBB^dx4H(M zMoc{&YJFmFx7~t8XW(9EE^Y zkjqma%u=;9=@kpIl0i$ds?Gy?gkS@Rkipa;<>iatAe zB@O&|<#W(VN?(tj#kuwLHS&r+-@5Jrb+Ax7t60+{iWHPgfqH*KEVzo!h=VseIbBLvHLC zJu=t4lU1`XQa<}+koxo~zsu^ZMfhw=W4+Y;BbSSxftDFcp%Hk ztI7Lr8QEL|@73^KMxU;Qp*HkTcVF;)I*+=M9Ni)(hbFoC^DGJ8Z`6B^%E{zX)Vu$n z)o5c|cNjzIVUArZ_u|H>+0X?KXLV!ES>!=qGQz!1(_>?A)_3@=@9{rSLot=i8Od+Z z#(y)EpS@AMw_&CIM);U(xACE=V`_uzq4b_ExsN0HN$SNMD~^$2C+OB}m1;4BN`8-W z&rwF^=J3EAA8=|dkDl1L8OQOS#!>X8gS*^2vJT zVY7#Zo}_>9JthjxW^p|{Vzt)omzWL{h z*jDpb9&sW0YB~Hr7d2{Y{U+-2W6<@I$m5S%PQIUUWF1F7&F0+kN%q=@-(>&izxO}= zN4E4f{j~MrC>49n)jp2CVCRyX`HH>2&b^D3=jfni^ZBlfv<0uY_B37LRWSxW1Lx1* zglE%@6BsJUF>E+#zjL$~zOG`-=91l6PK{m}UuH$%Uwv!^A4;t;%=hacAB1#th9VFUO-r_tOPKdH@1u9=XPrVGUmeRf_O z+Uv`5YAt){OZ|^##n^ZFeXa zbcv}>dp)b)N@vo`Kbellic_VLU(-#eMI)taKOhs}N#Eo$dV4urHX+xOewdv03Li}P zT%(>3O@!T0eQQ?HcrvS#s~55_gCH4czy6o>6azdwBLXGEFT{)Pa?;bCOYLd7AyImdXuf z!?YYC6VchJ$3D%z{qA4?C;YSc>+C~(mMwePA$W8ZU999j@#ZsfhR?Xyv-l`^G?d@X zx>nGUQ#xc?5Hr&ot%}S~@W&iX!ap%oq0&fz8^Li74TmN`z>CZyf%8R zHfjvCQOvLQy>pxKjc)$JIpW-}X0zZwbpP=EjAmXFVSz_gjJXwgeccb=SRNt!{)4zTP4Ti-D1A$bn)>Ce3v7F_p{Z8ipexC z!H;3I^@y0RT&`yGUu7N2_(59bTJ@2oo#a6My2v-7|4+t?dtrMldAFEfaF%%)4#Rcu zRQW5z>o9nogh!1fGbg?V`|MSAb;SmJf3@Do{E<2JSH&FXsexCzgLO`3;;(2VvBy!O zzh>Hp=k&wlEIfUjb50Do0yp?%?zH%!{N>u)>;W%cUN%l1r8rK~kB0hvSC6{HHFE6w z$Tv*VQ+TG_Q2aCB_xr3wo@lazO}2!8l$^=$haVV9x?sQT4tf#!&`5_J_Bh^;2IfD{ zkHgMm^G0kt$gA;8Zrq`d*(2+^gzMd6>H1An+K((9z4Ken5wAl25zoQ~o@9@bVA&1kgZ>(HJ}d zPC{=|r&-|~75II+ijQJ5{|}i`J_EkSex9wPKY#hvcmIa`|9E8zWViiR{?IzPc0I?k zvbybAS?e8g#`uHk$bv);LE)6#Q+n%sw%S;AvU*!Kh@0fZtPx`n^$}Ug4pUj%b%)o!>KMiC+gIt7yy3IV?7x+^Wd?Zmr6|t_O{&URVJMg2h!>X*^ zdF1C0N(ROc%V6949~QnJ@jgb*$Pc{!x4-3GSByTBjdcDQWX%+Q;n8?h)Iheb)#EVy z|LUP?m+2|M?yWn7-`}AJ&YADTOTL!hB2GXawDX6S&e6+wHa(^X-kZfvuPqzyFHm4RPS!90Hlb7$2 zQ>p&En0pg6HXe_Y1DuFm<>t}9r?Us6x56T01s!P@-b=ohpxZ_^L;YOw6}oCV*YEnt zmgRplcWgE?CM}#Xhp^24h@7Bwve@f<^nu>fZFrVEr;=@Yk?-VlXbSwE$nyAH*+M#) zoQFK$P8#~PJmgf|Hr1mv<^PF1k7A7=UwT2#Voq&O+RZmpdyAMg-Kp_5w&WUm=nTAd zmib|GG(VQ*MySOfD-L!@Jmrq>vPSvS5p%0kH!zy5HS~7)ns5C}#n{B3%eSz*~a3XQrI7CB;OD3f9QSCz|ZLV7vV3_AMOV?7&m6ge;2Z{^3_?Byrn+= z?J4MO0zbhha(WosvD4__GiVaCsKI}$cYT&s%LS-|iQ1E2t9f#Nt3FqQ_ocjVHtuG9 z&!+P&+Gnc~maCVFSB&6uBXdjo-RlULn@lDzz~9%1nfgvb7N>LBk9veuZsCtyLI;{E zuby4oL8mHX1E+g^PabiO?oqOpO(D)w%meL*;~Dt=6tRR^__(-4VJ-c7iaD`oSGwFa zw$OuC!UbJ9d`eYg_<%b?R-hxYBk2$m=@$o9qntE8$G=KW$=grEU!hjFn9D!Qdo?dL zi{HvRVW_+x&WAq_YxWd7$QQ8h6S^RO6+JY!S3L{amA5ZK^lwP@k||Z=Rw@>lpZtp~ zayfG&)!XaOTp^!5S92Kl=i)DVsGWgVb)v+4=U3i zJzekxTEPpa!4y5I?F2q_gr1>z{wCdndEToJIe9#5L@s${ks9`4slcX#T}V*b(B~Y_?``tda8J z>*+8By8i(F-3y(k5I*vg_z_xYg8xSNui-y0v#zDb`AvMkmFyT1K2N$x2|sA?`t%Ij z$4JmaQ4a87BXP%uTR2`oeU>) z#h}nnsl54|JoX0okNTOKL+E`op0?5N^%5zS51V6GgdUX6<@;Zyk2HNJorUi%Kr0L3 zZYDbGcT7D>I^8vTonPHyVS*SB{Wxv-10VS-umk@+Y{A*`arm6lDUMB~8-_*>m z{F2;0{QYjfr6=^#A10FpRR{P}mRJ`!x_Tkmct@5FeSE-{od@f;d@FZZ9?S-Q@qO&B zwV$C){;mx$zXUeM^MB}1SH45OCmmRBH}E zXG4a4maV(#AK5>@{-1X5{{X)~zW(-K+0I8i!%F_=#m~CtS$5cI^Lom?kHlAd^|QWT zov-~h=gJ5F|5&>ZFS)90P4NHCtm#=Z-978|Yx^wd-Wx76BfU?Vl$7$`O9+q!B!oZ$ z31JFf22bHBD5{_eTX^K~g-3wA2hRLnb8MBW~O{cbjkT{q23^ttZ}n zI8D>IFy6{FhVRe8ZuN}lgYmwIs zxzELcz$FWN%y7;{Cx3&F*z&tz5=> zc6BxXx!N29>sr4|Eq%S5Cz)?r3A@jRX_kI12T4a(>`kNWTR3V7xnchcv%pIi!ydEV zO{3Y9_*XLZ@5%q@ zThrKEzEUfY&z_@SaK3qh0-<4f$8No%j&g}udm&w_AGxtD1X_p5yxjN-#hfO zdj&I!*Sp0E1706|&lYh)AqUj3{qhKzd3M2h$fJfnSM7Mpoov+8zL$0U=Q(t80{g+2 zc5kxY)_2&t_pm*+b?OcM^rAyO<4T_+_FUmU5869HuiBiz{^Wl=%sLvkwJ+w}Mi0@Y z>O1OMVgKu^s_VFoZePWOIFVn1Bb4p;D27`yyiMquOnZp za6H62v*7UY_wfhhvzX()oI`IWz(Cfe5C;@`Mzh+l+zaxO-!Cun5_{qMjEGZa;4n@3 zt+@Lp@=x|Vf8NN!=6(04Qn5MZ|Lr!uLT^LJ{lzfLOgQ*_{g>NdcYN&85BS_4!SZIz zbzix^fj=uSP(Fv9oJ00!StGh#lIJY1Imk}BzNwDs)?g|<#pNEqMBeAaKhOF9rQDzT zdFMyI^OY~Bb64?WV{ZLkrsh2iOWv49{oTw|uWwA}-Sb(RY<5M{{GDl3r}$vzn`wxw zcklxxGF){ui!ocsb$c9YLUp|xopPnk%fx0=UL%XI%0KKB@58F_Q!7j!oU(FYpWpyR z&J!;uj{}b&mqX6iy+j_Y^L+kj+U>6IW_IqU-|MHIfW~b6DSTGHHI2EVZChRUU8z{W zHqBuJ+a5|o_T8TOfE=d$^sxN(AZ~HDoPV3TYRs~!Z4rBJh27xk@)hvdDp>y#90$0k z2`8p%)@^aMb!H>0u)qjj(sfVlO~2i7F#Z0klj*}f-=@#^97_ie9!^J&98E`#$~kyE zeE3K@bm(yUdjHY%(cW*;hx@)wzyIPy`rzXu>GgN_rbl-iNq4+(G_8Hi{F=MX&JvT< zLb-$K+aa=ksw|??E&1!n(Vfy#4WT~0` z>b!>!pbMj}|2_`*ub1HUgnyv-1MYpF^Dp)JKayjfq6|^wu}iIaA3| z{VF-T2gDKNRn2Ks^W|xH{0(W>yL-~B?;T3_J+&vT#%-Fu_%%JXVqrd@qCQn+^9MX1 z6dSZg?k8%I^6Q(Cbi#OyxRl=1-~c%nR~})G`P-kKuvPY z?Kn%NAH%zNZ`mC3zrZ@qVDBfB|A~H{^^p6{uLLh~=HvXq-LSwt?iIaRwu`R$eg7|T zZC$TJ-~+zY{lK!6g(NSA}-C;-ow}C_+A;?pGEFrwco?@rOoPl_p*V}19R2E zwDOU|>Fqto)5&j7pHn-vra%1nUHT3*{nmd+VATD`zDu8ebu|6vwS(#L=MSbEfBvOC zy2Tf<|J*oue*{LIv(Mf^=4;9Qw_WSL(}xBgSql%Zam|ZiAiW{^HaH5-s;{>0>&2(= zSQD9Sfw!8(%7qxdyy#0apXDNOJxb!uVjEkezqeg{(~bk$N%pHSN50YDZj_Jt>9=wd z^4AZ1$7Wcs?pN4t_>R4A7n_WZ7#3H$m?3Yugb(kq_8m{a`(lD@6J7z^^soGMv4I{q z{*fK~XZESZdiRp`b!7V|aD*8vBlxI&^s%&2v%sZWev5 zt|U7%=;mnlijLM-;9;Ntb-M1U6Y0d?c#94m`zEcq>-}`j(&yZBSYxegUkam5zKd); zlzQjhlb(KRdpdqH?wR{_lr8)CKziZb!|C>2C(|mvVT}Iaelk5E7HEcV%6dHu{T{8b z%plqBkVh+qaWW^rW;U8@6!%8{KlnZkey7(obbt>i!B$PU&#ij)D-XD@7ybsW{4p8- z8N1KUPv!?EtJj_XTfBpvYVdR`YLt^7BJX#K^Y}6TIO|a>pZsDPGRJeKywX^llQy%Q zo7dro!H!*#ce~2^+q)$8{mC!nzuA*Q+?!2v56@>?FBgN!i&Wr*l~0~XAMHDPJoUqJ z|HH5NmTtYeOYgb3IU5akO%Zo2i`oOuD!VvLW_#5rO0apE-zte&s%k;`TzD_?sVm98 zoPP5<@1Jjug8E)v&8+E8@vJ;ozT#_md7t~jf6J{`Zjz^S^!~)`Lb>zu6>=yc`*JMV zI(F(>ae-Ng8N5{a`FE-LDsnkpY{eHf%L$BQ8+yIIm`Wcf^GkEA-2|~f|1ZVjY*i0G zPI;Qxhu!c6vQB@B9zSotclu*zI5 zvDgIHJsh=IqF=4kRimQUmd+tpDj<|$tPn?rxQ{FCQ3KYlx%6SHk^{8%3K9eC>J z@Wfhn_O_H)FG%C3-<*E_%Kr4#!4qPNKgz&Kb>*-3A4}UmJe2O9PReX(>8 zSqy!g_bB@x$0OwX0Wmt=ob{l?^EhUDK8gLGBIehqe1y$5kKQA z_8vHy9{J_hX{H#oH2QPv2;Wa(16Q#j{8KA@*3Vw|%Ewf$v~SVPFq(RFoj=QGxo^|x zz%>0h=i>w8!elGO-fQGf&2G%)Jo6PWhZ;n-()U{hCtXNh)F;~2o;vJn5H+dl<>YU* z`!a!SPCqCfrw8nBcGtIZGwkw(@&m4?-P%O{a>ird;ZB|KTJKp33#^K3d6V4V4}Y>( zZP(yf+y}e9C~ot+R(_!E)|7X^wcV~U^!o~Zi*!0_SLGS<0=+(WqF7u0zse4^Z}NTF z|LVd+<_-F67^o~CU6}vu4qL)H^-aFmdQKd#tTuVVt!mMq0R^Q*y~{yPSf^}k6N)m>iwTA z-~aa0@2uOG`@TuPeg8ySrB+v;x+jfl7h}#8*Uoo+v&hp*ylZ)oE;x8tE^r{QoBiwR zx0y#IJ|2B9`B(=3O!dt%lMXs_9)Ab}W$VSC*Yg2zN+!lEE>gFLlZNjycR?MldAfVs&i72y zZ;r=W%zTavyAK2IO&fb3wd9ev=m5DI^gFX)3S5jr4!3+U?t}X61f27pt+1x}H5Y4V z^e>-oeT}QL|6tORHV@CUG{u2McvETLxyRr!8p95dcU{faW2P1Sr9VYe;%+0rNU-&YP zgFTPrcgFJFeXwQ!-7(7&?-akGE?%oz_d*V#B=21C!6n?2CUc&eB!*|XZ)CbM^2^(-ZGo$LD)teF^hhIRqoBmcK*fDWnKQ64xIBys!e}Y59eNa2UuM^ z-9?vcX0Md=+GRK=*;Vf2DmpNq%#VX9r~KS`?qwg@{J=fK^kA}_&|-aJYT5nvQRrIw zP8yGwG>!aE#BU3X8$Mv%?RuncWVhh@hylvy>GRvnzmmVoMdGMyaA^7C8-I5!9X;{a zzV3`)_;32dcjRHxqIT;ZD zRn?|LCTjeDO`SBK>E10k!d7|BEcb36*$Hl2aK`Wm6tF z$I++YP_QjeM+NGj0**-Ao7OxwcW({Qq9B z&UF!=A!i-)Seo3Qu`jUMxJI+>uOsi>gZJ8JR(6lsVqDsX|8pay54Gai5tyYxsT5_>!d|)r1^GS4H!G-=M1U0#vIe`AF1iYOar}D(GN8A zqYu-|@9z7X?ncP}rO&H#-p3v~e@T9?@)Osvk-W`fWB+AsD%x&NUHAeM?^L_r>a!PF zpF#U73_qPVt$!)K`_}#xe*AR*;@2O@ZESl=9`6P*Sx_c@;>oS_u>)v(R&y232~h>>FRlEFROk7 zTfM3O;uSH#v-*ihL+-_D19E@8`kT6cBxYheOB-NloWTxx!B;{-S3XVjW6vwlvd#Rb}rwaMv6B?pV)h-Qw-CiR^7Ume}GjQIsm_AYuQk7aTYU7mWpq1l}d~F z(z(`rm`o4x2Wm!zT5AdB&*sXd!cLXo7R_*PYrm75+2M8M5Er$vr`<%o>~gG4=0%ho zP4YsuRs2Keu2ib%3mNxhYFFE6#~16;7t^Pv-Fx}hY1~cb^WTr#2B%FT^ZnL#EN;at zoZ8rPsk&BdyBZe`zN=gWVX;j2v-BTV^@3gEU;ONg-eCLXht-{HW)U{SK&|+0 zJ@VH>_}{~Nkos>HE16Z>swd!%SN8oC@A-81B=FBA&+z{^tu^x9f_v76i&g{{y5Lp$ z+gsg(2jMQffBs>TxV0C5tE7%tTLRDbyqIR_nRs@`p+HgP`rm5ys zj8Z#_BU`}6RQbfeC)5AoXQ^Gza{4`Hn5sYaMy*Z)Rh^to8fyGa` zFYHbnlOKSCehC}lH_8PSm%T&}=)zoFt0ix!9qvsNoNtQrj^HbeW8=Ey)vLG)#d$Eq z`TOkCEGN1gw|BuSsaHSuEcvHr-aRTmd8TjkKll4@)Y-T1Jd&<9Q*bn!mQ56U1eZmQ zuOa*6$bOsq-su?UK8X8T;h&-lrWs?M;GwMSdEuCb`y(e`S*0e;A56d(i+;^+Ih-bW z%z{5FqBea4*_NXz&X>oXPrfIR{XzDolRYoLuIBRX_lFsXh4`~rNKe$2vT-joel1<*IsMf z$G!}SSNd^a>-4rv*9PQbr{Jyi@gc<}V%|&TPd9s9!48Cf>UVwZ&+#KK%9}o*mT`T` z`+usJ^98Y*xuoWacHJuezl_b^Xip4$u_1lG{ql#+xV_Q;v*lNxrxPcC*moaf|JOW4 z-pPL*{%(P*s`xj#`7SwqD(h=)hQ-@G@1Y-^cj3d_YVFlN>+)$OysSEmJ?DXg>7nfh z(gFFTGyVIPK)w3Gv9$P3SZ<^JVC84B4)Pj(cr9jNllFTU{g)XzW85?4=m?bGjI zi}3pU-J2Hnrn(RYSoNivu+O;AEC@3}d(EM{_K8F3u)Og9AOF7k`dGT}2{S6q5h=m5 z=MIyp9yoA>4$L9{>Xz9+*mrh*fNu0#`&`bZ*>^pM4XS#y=XA(_J|tHr$5J+LGiKJ- zB1g5!JT|jRCOq=3nFnk#pVo@I+Ag11zQAWLQy1oI@>$M5lRxMqAIZe z+&!6&_4&M!$eWUf#o}b~XEx~fWAsL=b5FpDXvJG=!Mmx6nG2lcVhEpY%-i+}#Mi{- zXt_-M2Gf-$vgHH53w^Gd3)-vp&?<&0W~hJSm9&bf%Ok%30Nj0nTsY2tah`Z*8b4os z*tzAdCRwYJdwtH8bm1y`c&8q_r|r{W);60~z1;icvZLnI3^RA$Dc6Ye6|=Tx-S%<% z>cE+?`Kfz*ko{jPUz(GTvV3IaXSk4Zkxj5vx1etOWq<6?nOI27Y|oQcBcB=cN%q@ zX4t246@J34=C;6oO=`FKWnzI9FOYG5DQ4vpE^ck1^i zPMl1y?D#yb+-xRK?1{_9juK->T$v4%|FQ1VSn?S1HU`G%BjZhuQJ$CB>Z<3NqZ)tn zn(=Ig_@E|M$kjQ^>)ZnvDZc=YlNaigtBM+KRsOyeE{ghfNe!=%%MCfs7mi*}2 z&Y1HfkJHVbbcmx{BbJVw(S*Zk)I{=)J5(a4b@jvAV*1_f{6jvghu+t$1>G;!!NqtR z4SwhtHm&)d?|sp<6aMZqs_tpN**VSR+4`=%#?>q6cyV#`-mqhGhlR%$HI5EFs-E0j4uMPQs{#ZJfTo+=1oSm(a{ph=`l9m1kkK)A#*9cCCnk_DD&i)thL^B=i zx?YY-pHcx+kAlT&e8QFR)Sd&uy*@L5*n8-kbjzdmXS#$8Pk&9UWv0a>`*Olov9D&msGB%mbculRB`v#DLzo;5`OEqtgtL-Zk&b8+?!+d~t93CYmGum;cFU?md=n zS5q826%VqTeou(Jqngqp_uReDXNzz2{neI`%cvJkBHu$~zE0K)#~60EgN!th*XeBF zi08v{g{$QX+4ySM>kG*3YPp#C?g?KIoS6a-BA<)XFIMi9+iJg_j>sKm6UbfE6DBx% z$XSIC_&YxGU!H>#eYW>y!(J1y27XgEORi{8zI39R0l&}$2aT5x7!pHu%2Q2NqaBeq z3XVoT|1*8l@ppVq{$!$D^A%5@NL%rLCtn)<1+G*5ZPZ5JeTs93KN*Ve=jSm#cLiAz z$2Mk$)o%2iuNG^=xXaWiuExR8$JN-|BYNNU6t}1kb>Aaqz){Kd1XS4H>W{6*71qYw znz}qbu6b-RZzP9*%5YTlw>POr#h&J4;fIcU#oBt; zTYqLf;hpSeoaVc&F&|LUpOC3VW^{klw%}6jPnSKmCw=ne0iS(snXkMX;Hvwhq2rI*aQudLFysW#WESNyU&K1yHW z>-?|&J1JN6+Rg)M1@2RG*L&&Q4*JY!i=WKt=kL6up?`(RDc|Rln%1+atLXt;U!E@)5^;$9 zSoKoBU#=#x?ojGg_nLw~G*;{pys5f)qhC(81NIt{%Y5?vZ(#3l(+8iQNI!Y;sQoF- zXyDIB$xoG+h}|QnJC^)UCd05&86TjyT)w6MemeSu>v>ZwXZF&A-=#h|y3#!UbI9*; ziGoYe5w>3}-mG7sdNUow70OqL>GaT)ueWZoCzIpeH^T;>{of%jV%-~J8ocC~L0G>Z zF5^QocD)%VcRXy>0pA42rzOA^(_YsR{o2;{S8fA85*}SXO z4}6l|{`^RT>vE>6_(r||H*d@3{!|@PPjx$fa+BD**d`wVi!|fym+W7b$6Q%^7sd0; z%<8N$j{qJDnO|saR?4@*8l~It9O-e38gmVodW^i-6m_(T`U?84asH6akbV8T8Qx}1 z4@|e&3e(NoePQ?6_4Q2Op^?k~`b4_(c71MYu%ntkO`}HPLr-;Irt$3y^zpIJBloNE z$aClT3|YhK3Y$IdhoNNNDGsAlV3*i-IxzF$7Yvew&;8YIC zqpJgsxmTZ(-mD_HNAjq#H*hu$jz3QvfukS$2DJJP({V)S;=2r}kGEVV4vf0OQh&$k zycjR|i^JdBy{LU2WWJquEc-U|PuF)W$R%07V zd}B$^W4;o`Qjcrn0|w<+Z+`S+G4BuK#eZA4KRo&FyKmEucg)k!$Jo;PemeJ`-<%!GhWxL8Bl^! z&f%QsQ_sz=X;x=y;S(zQs0zJ9xyMnsCFkN|&AV@3djE^FW3li9Prb9>9{0P`s6}w| zhMlQ)EBh}m)eOIMv*#V=r1Y3y)#|aNMiKjz<+r+Tw~@7**tczLJ2?*@*8MQ~58c&+ z*#XPdW1aPRXLw=73fH@W?3)AFdEvWhKJLf+pB(&4(f+}oj~r3I{ng$y{d}_3fwvGg z^`9Ii*Vf}c46)NQ-Je;NqG?)N1n5p-WS*>aDUXm za9<+dQ&WqrdY;d6-{-^nQ{@}h(Fy#V@_FP2C!r>fUQBZSR__&G7SmnF1bBZe*$h5U zmqR`#lM`z6N=40#UC$PIoxEfgwrj1|hi5gc zz&rQaugqH9pT2aD&i3yx`QP{^-%9@b^|CavmobB_EZ)syhM4+thx4}HYkhwro`Scs z(0BRV!gtQ>ot%;X$~Lu!&<$~Z2LI&pE7@k4Zwudm*S_vYJJX&o&n{ypzxgKJ`YF4@(XQJSlF)F03{rf00pJ~rk1e6E>f+0E?a4f4`>*d=qC;yQDX?lq3m962D^z8G(P z#;AYM(M;UYu=jJlE_$ZI_Rn$MjUG|CL@R!N%~8Vr$;1d1 zHN!eSTJ*C`W^ek`*o!Oa2;OEzY~I0Ft(73r#@5C@lezs!^XQ?1ZO`RLrronA zef9%6(6IlPvi}A9UXkl;(wEgr4@>N5CWg*%Eehu>-h+HW7O>3soL|)wE3o;>FfBwv;5mnA-6uDcW?bpGtkVC zf_YjV!i~`q(0}0`jQSZPP=@R}}aX6+H+2bh#V9z5Ek$cO$=KJqx(7 zh+bIopI`8C>cEfe5%*ql+wap?`+qo2I(5mxPu{(2U%F5~Xs!9fG%9LRutpwOM-8he z!BthgxUhew$0^g_n#~lyPLUT_=$?)E{Vc~4>j?W~^Vo?I@=m6+Szh1mvCF!xbH9I# zb4jkVIes@iaF5qc@O*-G=R?Z)XocKmBOiJRd~h8(3ELd{Q+1Ah`4M_kmUAypW5?Bx zv%ocrtzGyfacws1%SJCr6}E5WnSzsCc0XG@j`f}N+SlY*hV^cbf8x6|+R;H53N@|h z*DcB2_sL03dera5C^;XLhrgS~|2NUU^5L`$NA1<^ht)?UT2@6uQ7^L@L_n$aIV zn!m2|)fwDfk>hERW9`7%ig_G0{v`6e(VLg8b**Je=l*+tZB?eUgqI3!ixAe;<8m57%4G zCV_D#xt^iuw|5OuqiCZC?Q*h(dT_QyzWN%zosPx~-TX%J!#4Z1iF@mJvbXSQ@l*HW zN7jgs%H=$>n18Ss?!m8^Er$5r+h_Mle|nWC^guj;D>Z#4zc>I_M9#eCoa}6I65O%>z^D?m%m_s5Bp!R zTRALW{yDrYzNq3&1fHnkXg8@n6<1sLm<<;4rry|T#r`yqbd=jpK> zXV2#~@XvOAJ%N4T|El;mW))Uppy)}78Q=Lm^cY5~-mTUq=U?1t&DGm;ad=!;j^oj! zF5C)hS6p{)y|P7bsl)Rfa_!mDx9IFg>D)zcr{2{&)8nt~IV;|Xe9Ei8H=pa5=C8Sy z5l2VV9vtnD@=@%6;Qh>8xr~ly*O0|{v`=O1H(sK1!MBU~i7|UO+|Szu8H#LF^9i$0o|GG zyo*Doy>=qG4BI``<2-*83uLn$8^|O3pX=K#nFW%m12l9jIHWNbA@Ztf0C{lM{^y#5*(oL@)PGcT02id(V z{XqxHWG*mwMIE6-?W-zYF3jUDj_C~6dKYF*`JJ=#Qya0s?!)}8S&4kWpzG`5 z2b$&eOJ*2may{7%4*AlCAHes_%?xVddz$#8JorW7m#%img=Ocvjs<2?nV-yEoly zLuUfx^Evr)?~i!GypL>+*KKtTdbNTVQ>YE(@~WBKP&P#@7d)aIx2MUxss*?_bfkHU ze1h3JW9~Qmj*K;nJDXvhl78MChRBwOYedz<-yPO{cZ_FKf^CHB0`?w8~e!>%{myQW=FdkcA^U4vf#Q_>@ky>+nOzR;IYMCZ=>)HF1+ItJc!fJW;}JRpB>hl z^CCM!_J=}0^@QcO`fh>A%=pgCna^-N8uRBbhlSSjH|idd`^_#U?+yFq(fqbdt-iDZ z$Jf55lk`|V@$%lY`k+(S@P)qhZI9wu>46`$fs9>kt+l<8Fdx~kxdSc5V|BLCx z0=N@4YGA0yAB~W2GF3z@K))Kg1B2D0k5=zatzpN>{}^jAil1yF|Its0KUcr#us&jX za(nRE$Up4eA!krl?|MKf65OJ+16t?G8Es4|l;r zef(7?edxUH+teav85Apym|qe7^xgbYMJ{Vd96K4V*!b(O((fC&kkiZMarO6y-;s|Y zbLY~>%*=%B2KN;n$!{cg=89y|hpg@z`xKPr;`@A`z6bd}u|kGlotZmzj-J=mkL^nb zaNN%HFZge3pNDO%K{M>ttY^2$-UVeGitqSU3;IL9QhWU1<0KwG4AeZu#|R`qcg^DEi~2 z@>|b-WWS0h@b;azg5%nl5u~R#lk187H8Y%@Y`w$vW@d$FF)Q+7N8rIV)(WpNTa3fP z?sw3QA?vv57hnHi93B^O_}H;@?NfN?YCh%5$lrYOw1gZ72Yxo$4u1>dWcZtT;F8hg zRt~d8y{bvRFlI63;@)Bw+YP7Wlf9q(m%OLGH0o8}H-zg07+%5Rj# z&iNw0o8f)p$!y5?ukjxp&b!3ti6L_HphD;J>5iCxa4Fj*W~hm;i@->O)*@Fk@AD`I z$#D*f(fjaP_zE)I1lQNhB*>$#sW-c@J~_MD$m_`|W_t7TYa(|X^?vhE#eoB1E6HZw z$S14IsJjl4zacs>EI%|!?q&)dnJ9K0baaXvD{@3**~VF9V+I?0C9MB(BRBfT+x@4{ zqTl@C-6tEfqyl>c&ZvYe-sn0vh24j5GtZ}rPulUIqW%;*d(P?)(}h3% zB<(wLW*Ixg{$KpE>tp9@@O2sgCvvc{*KLRI8gtrmI#I}nR@vWD%;^kSGoLelSH@?~ z$#|~bTM`Gfv-{n!cZb-d$$aJ5n`21NZ?oA8jeb0FXNJ$2=_44jC(WkG8D4pYZ<66EW-G}_scl`IU#yy+8B%{7P7Q zfmljjryM!dN!}MZp*G*8+r97dIyk7ff^O&&$lgnE3;8d^mj%0@vsF3!mXrV7eJRJITwbnrljGr5txf`>m z8@K@0%;-oiFWyA{`sD1#koUkyGsOy%SxaM>*VUrmD^m;kF6KqH02S!q3nNtwd=Za zZ~E8SyVA0)@1(B}oEc|C|I6B6l56-bV#~;{L@i*n>umQJ^9f@%ZRA#R{PptBT|?wX zV~ybOA}}~#kgbV7dKfSxv15s~$ z(h2iTnlJr2O%lt@z@4}ijt|*B+rQwhJo1V-OijCL213~95}e*D-_dk2`>GDw>}bVz zY2L~=hzH8^$bZ<}kZ<{%I<996tW>&yEKVZF{jQ5HH1H1JQBnV_MGS#olSi#f9FfcO z(VKy4RD#@2-ftehUPt5s|n2VXm-<_lCbK9+G3C=2FuA7))9Q!|;Y)zye zov_iSXHTA$ryO;H$KO?N4o(j4K@oklW^hGsPt7cfUcROU_qgPG`{Yb}97XUG?CW@r zp8GkQcco9hI&`ZrBlhG9Zgj|h9`&d233s?> zQG;c}Gu-Hmyyx=k6*b`^a_VSEhy1HsMh(9% zJ{rNHxbUHU>75^lc>|99dgsYBODx!jXVn77`r?->+PQA8W?&WBHcAWd#j{g<> zusq^Xc%&>gXvW)V^}G~Z|A-B|KOgJwbDRs7FXV!%@K4L7{Dj{2Cb^LUrYbG+}uC-SUaTkQ3K_uOuWgPgj9DSMmcaohBvR4ZHf$P+S4;Qn9EBbJ9>y-u1dcEs){%K@uf*eZ=`LC-d z-S+g?>FDt@+oa>}$z!|Vn}_i1)d!kx!0#jPgW~WhFwX$&6?5DxdJCKRqGqPK&VeP-DT{Im9%m|Z0xL!hOx~qrW@V0#9dSrmj;d8$+-f#OFS|chjjm*4{2Il>iuwUK+iPOrWf zdH6HODQ|x!|Ev~#EwU7fXMUFmlLYv5pIJyG=w3|6N+Dxk+_0-Z9arIKiG_o?Cobm(t zO0qPYTwmyMv15!ir30CqXw=sNb5-Pjs(e9tvEL2Qm4EQv3+qD<3h_kkO1*UA;oeJK zug8dei$QxJu)pnaN-5;}=j=B;)X&xpy6>8dX<b?0z`b5uyQ;}WabM&h=>KzyQ**xZ$QJ9(KnOzY6NFN(sdLMs2LvD8MFAk)4_ng_r zgrA9g=!&04@5DZRVu#E*)d!?T6#355Z25-?Vjet#;O~Zfmm`K%^J;~4>Nq+rV&o>c zKRC`YtELuxT34_cQ7hn(oBra0nJoSoCBs(fn;J!)FczE6Rz3g`YupYh*(_o_M|PDMrit){EkCrxC2WwnW zYpwG4op5~**&if_^?1FUP-AZavLCsas+b`3AXop&T|+xRF~I(Z{CCl}8s9QXd^_gx z*LjDd2ZCR#2VRp=U?NVN1iA0J|X`x3rcPvVxYKJ17eTG;-_D~wNJkD%!|8s z|BHPp>r9cdz@rOy0NetJI>FRHq{y z>PGb?e4V*M?YLsm(^^_<-Ed(_)9H&j4ux~nR>MYKn{N?6nEBMp#?~+9f6W&u#*s5P zsk+Mhrh5$=p7~v)rWW|8*ILWtG;&Id_!F2cA9Ou`XHCwr4q^M-afJDZx>{O}PZag! zR{pAOCOcKrt0V_h(yQJKPqxUFx2maju;qRHLGbNkCPqn2QNZ#A+gB!6Wp&_^z3GZ2 z;FRbev(x?<-VcWilEK)+DEvhxCN160zv1q5z$R5SvrL{echvcfz}3wjJNTRy z@|DA}Rowb1PpXgoUR~%6wSllvF^}VCFMLJ5aeC=o2YGL23p?$x*3FlUCZA*Au_1aj zMr<|V=tb-?E2aBm_v3knOSA8QT}3r+(Va~X_vfA zx0=J&R}Y_c-birCZ+XSNlMBm&)1arK!T(SLY4`(u>?N|_jE7i)E5ldx$=R-Z@<94{ z@0ocZM~|IMw?Fnl8og>~>c8TXG(nAJs(5S6R`QOMU+7uN{{^=Who&MgpGD1zPGtX} zN9tensLdeT3;3H6c5${|OD7uAd_|7T=cnj%Kk# z^9uG~KDBbb`*$Hd%6yN1RUaSWFQ&gL-?|gN+RoR!%{IZyc)hJ;wv7(dV4TQVHb>5J z-do~nuOHb?CtrfYo))7&MK^c(Zt~l(XJ6o z$I!h2w)*MaQExjvwhsB<{N{JAQ|?Oa+YPT*$ZHdP-9$Fa=1f%OTZ_Qlp6BvA74{x#pI;=t9&D8}d&F?%<2U%KEe8s?VRkDx00h9U`9Gq!27vcSoGRf#H>|EN$w}`QuEd1hOI7O z_(F`DM;=LDzr-J8!JEL}i8^vQa{N86q2h>IGJKP*Cs(uS$z1PWV6S^b4>k(eAELz{{f%(mi{ZUpa-z;0X^tsA&a;V_N>sQ$T3CEH20Xn5Sf0d26y<* z_?>IwD_X>sZIK_18QWs(+~3ZVhyU=4Gh^ZK1E0y8UiKoMyF7e;?vrXN?}^dXqG7u5 zH%*?m>z!#QoA^%;GCWB$o2p`-Zy;@pTcOtt=pB1cD`>EQY{Amx4&>#%e!#}mcR;^-+ zRzJ6^ueH;)R&mgcZZ-S}o|U%ESWE`7(mj!)8{`of65`(Zj%HS519k^OU=@1K3A zzn8!I_w451?M~T$^!Q(P$kVHR-z2V$z7@E?V9U$$Kb6h=s(!`JTjWbNxyPXsJ_0sZEY^oO{~tUS?!Dzlj}& ziMrvN=8%2Zrmm4ZA z>QdnO@M+?cviedp*{|qLk98UqJ!<^KXjrF3yjaM~*I@0Mnpm^EP+{(QhKrWtDV1QA zHuaT>^1kE6{$u36>U1sk5i9XKHS5*}ueFOAmOObleZ2qdyqxFsll25Ym2V5ZZQ{40 ze$nVlrklAvcMCB_e!=#%^`Q^XnDhDYtK(^{`e4@*Gs+gdnYz!nC#w2fpZfYlb8N<{ zF_cGe0RCxL%Kj4!@PB#y_iX-uGJE1bl867t+W)&ZQ@K;WQrL8HWy~k3T?x;fJ}>f3-z)>ekp3l!J!ELe-WJNdE{Q-N~2eB9J!tB zKIj=Mb&A93Knq;egImxo2US*^YxoMBq~M2Eu5@4MT$?;<^?M!&4C{F+$h?Nl{G zqmPUX!a41ZG8~k{$T1(J7WvS~FGak_-eqA+=|CZ`5H*IX*W~(1a`rXDIm*PV;mb$e zXdf-QaQ|B;&N{;?;<=}O{ZSfPxFfaPFjE?BP59 zs%PL*zN;!$$b!$t78f|xW%#<8eXp_W6?i@PZ*Arr<@4S)pZl$J^ZlQtSIi2z6K)^5 z1NPQmTT%Wu&>Z)3E= z?5VT#qwGC$(yVFNf&R34e}k*42A*xUh7k*}F{9RqG3@93#s{abeZ+j98-Ee=C-lBw zu+!|hH&fSn_CzwjwQG$&-fO>1{c;?|7`%=DLGIc4?EigTj)m<1cRKK&{jTCU-N^f5 ze-$a zT!YUnU*Gt7(0A%4A5qVpKz8t&i{SC}#@-M(R$_|Y%bX)P6!@1}_yU+e@~|a-r6PtX z#LX2t(Y&1QMGiIUXff~gHaN(9fb3?6xoz1zvOV`Tx!gD9d(|`PTJ|sQpl;-hc=(bKs|s>3g+*W(^mpO}(K952MSP zcZ*}{@(Y*!`eYK~o%Y}ULnqP-`S%=#3BKF+{C%~OpQ%y8{1N|F>37++7SZDMXtKdZ5B>f8$-IhejUbY=_``GE&^x%bXji|Y#8kE7DSmex0F0VR7rY&8cvW)A-4 zzra@yK5r(~MttlGcci`x?QQAkvR_%dp2!aU@MHL{?!bDnCvMwza=8-@AoJaDP{m^b zGf$%%!*9bSeC0TKm5LhRKl%QDk9*#y-a*#e*6DA$)}xrXLms?>^ANMI%9pa`Y;+-q zS>0kiuJIWB2XSr%ufG&A0J&}Sg!PkqJ|TL$8g*eDj8en{_9m)|$!q*h0}sJn4bEq9 zpCd;L!<3vW8|yP$;ll7O>Tkgv&0>Cx-qFll<7_?KE*G6G5fj)?JLWUzQ$6qXU8A>c z8ecl!z3le7%$&SS%vZs0t8avr7RkAb!}{faI^m5bm?!qaE!1S2<>6Z$<)|Ua%Qv{V z`lcFwT7Pb%rz+&1yhkrd@K+lCAbNW*au2s1O-s}{Km72_xr?~Bd%iwyuc`OoG2dY| z`*R&#SF31|A1u~Drt+3egtgeAVJOjeuO z?9IO>n_vHRo-%4jk8H;!k9q*yoXM?~@PMjpLunJa2)>->ReAM(Iit{nu-_eQey_Sh z2cJX?;q6j`&Q~% zxkC@wjx=yFA8^rIa%k_UanXU*@0llTk1jf!Pb2Fg3p2O#|DJb}`8phszrq&!-N~L)9LhZnpDoV*ghQ(5ir z(eD!d#`Gs^cg{cX_Zr;Mko{|6{!M(?3g2fbKekHGM#RE%UvR)UlleSYH^%-TnMLnb30?qd_$qsgZIi6 zwZPuR1adpw{fKzAkL<);6a6!}++~i}8M9R?_NghG7ZJKu-bC-$If9!?hbnZcP#*}s zQSczL*6-!N;UCne^A*0+46*E_hvjk}#-n?aFXGEK*sJpru>jkUU%cDTZ{a1GS#D3e zqWKrNydR{hSyO?pWAEw#_IP&vb41B5l6+ z)3o>KU(3@e{fox~aQUjo_R60fRfAR+RC^xn`$udv8s-_z?zhvUI{j#6`>XV;78ph@ zv|ZfO#UAwd%vQRv;F105ivy>(-={wF!5w^v+*@Pz)|J*!e3`4ex8Q|8^wMAVHAd~^ zCr|H5!yDg9W3PBW4XoOgdX~MJdd`P^mh4EKi+88y`E1C97h(D*s`yJ+HM;6z@JQME`^K41Qzuw!(ht~A}^}_o7V#9v9{2@7(E_LK8zC`XG zHj(=}98@AZS;W7=;SX-s6>PtK_)4%)%n;1YBgonK1|GV>_tUSH;m2f`!_L7Gz8E&s zt37J!&NRu4a$eKIdFKw2OarnEgL}5E1f!{*!#oUDk>2 zR_SmRrq1E;@L$br_WEDyqyOTs<>{0ho_hS|1@`BERGw#&`;Uhg@4)V5%Is`Cx)%ic~MFhbj~er5AE zTVVPs&O=R18hZ(q$y}Xn?y!ek`6^iWA{;J%Zxy?S4`|Flk?YUp?u*Fbz%h+pdUb}p zNn8IgYyu3BDG$sKCwvMQti8Lenae&(njaHqwjE4_!;LD^JYsN zIB*%hMmC=g(Z6go+aL1(4;S$dcZ)k}~<8mSFFQFEf3MncPLDcHijj(zBXRc?)mv?X(e3XaDiD+u(OTKapnK4HtyJfeFrq z<=4Uq$4;F7eP16qoYwpnw-O$S9BuSkw$barKBMUJ%qNbfcfSnmb$b2zqlDSdP%Y{9 z?P4Q!;X?de!dGthy@tqk^cam6-;R^>A0qqX;Kd1YH{JB288+(1L+s@bn{Wk?fOluw#^O`3*ew(?V z=8X-q`@KuvOntCVzx^uvHaPP6ZGLXv%r~jamM@d*-3IH+jW&AMSF<&0 z1rZapu91h6yD#*GwUE=c#b!FKA}`DQ&bfj|(IQsv)VtWdjjqd~w(8Rz&!0|VYbM@q zoni9W%e~XxTWf?|k9~@4Kd7hX8F-HT$DE*PZ0ESw9lw>2 z<@?(2PT7CGQqK44RBr!eY9`M$GT%(rn>}{&15syfQERI61HFFVBhOa}zF1%ze4rd3 zBD>7zUQUpxgT+Hqqoa^so-)(ezh=Py|nyO`yd}ozxd$n zInlsDkG_k;e~<5NT}Fu~S3mMqI&%EN)l2$%;(9Fd@_mc<33b(y{B+b0r{5`Yw zCYl{FUcYdEVE+qung8}KpYVG<@%FZv_j+oEcgE{6n}stv`+;@^>MR;V!w_F0=3-W`VXjS#onJW*Ce<}{c=kE z`k=LKXQvoLEZhfs z%VlN5{?_*_op?;%_iFOL#q(dL%FMUwlm}2GqU!=oFPoGcua^JzU;pwl)R+=vjmFg&V|K)7KA}GMjZ~fbS{k$EQ~Ofy zPjkusJja}$(*yl)(_px%)++WCYhuT9n4+eh8@bJXxVRe@tFp@#*e7a8WifB%Qu%(p ziKPW*oq67>23Efm)+3*>_fNArSXrDp^b<~{cf)4y z)UWcnYP~IToWtUsL33`$su|6NJLWw~2gIHOxMra%-P`D%_@nHz%5<@@hgal4=gaH% ziea)}kS(%5jof#6?2+Ri?{8!IfZC(%KHLA_uSxmPtM;#j0dYEe__|tC9nYW( z-=Nzu7&wSesL_Ece~|G-#ZT#=>n_pf5?yHVJY=luvC%u=Uf21L@Ch}4Z+8ARz9D8g z*Vd6?vx_n{@4#%GYPv(d-;du6JbyMF_%6LkE=KQhu;J(k(p~I(_qdj{Mq;*g2 zF<Z{?4e$R^XkQTu(*Lvx_ctiE(Rq zMcsZs#21W#i|XoX6*Y!FIB5depTrgn;xyH*S06m_v+XBwV$ZCDvB%i@r*Y}5X~_6X zAOE?(`0CK{boGnJ(n59T+4?7@;th_N>orXNht|KH2G+fuMyrK}{U05B=PcTpYGT}B zbGB!hGdkDo-1+9t&3}*{n9DK!j)Q3`ot@6t516%3zQlbZ>m7}G3SxJ-qfKqAwuUW_ zJUu%d^UhJ< zU@Un2WSVbXr;(NDv+a}T8ta(K56xurXFue%j~!17e{tNrYfq%j;z{CJ;zPoFopk!_4RZj;Bd z+)mWg8h!O1%VfX6m8ikbb=a;`>{=D0*Torq^nE}a)US@)iAxlH483f_y5~-$eP_u# zMO=T&8?Zl}+Vb4twD0gA%^mHB+K}*>3fuH_~|ce-8T}w!b0&57B{#4%m=Veh_Tojr0^g>0@u3 z#Jq+0w8o}~yhs0gFUUYo&>PJ}<=aqh#%=;x7!{D%(2Yv(^gKj_hTc69*u zs0Z(KoBN~ImZ@1}%gH=`Q|vX@*yF2phnj=>#?1HWhP;31Kqq{Z-GvAHnw~Yi?sT>L z0XU!RcahuZqv`g%i5|9w4un3C-{3wJY*?+q!(l5zUtDJwTvW4etsdL>h#GnCpuct4 zyT%rF`u?5X+wHom>V`QxQBeo0`rNwQ@kH;N#P@9a-O=>*;nQQ9Q$qRq{u62W;|J67 zNB5-t2Txx^`~4o+_968f-(i6KU;5JF^yLqn_tg2nfBY_efjhtDC9@vbpWsPnzF*-x zj&t5`;G8F9!Qs(-!R>YJkk6|52g>k zJiYEVK3^^P*YAnbA3T;G+I?KD{Eyh@t-bbbe@2`Q7Yw_OJ~pO{-x-AO##{#P*wd_k z#jez^{u%gZ*eszAypG!R*BbVJcHkegw&vfDXZ7&mH2-0HXs9L55ogT8QH)r7M6PT~ z9PV3(9A{%D6)Y3;m}AaoHF$9Fea{B{*)Yv``HnH-h3UTY0=6t{`dsonUq49Tmj#cV zNDImCpB{_NK3&u}PNc=Z{DU4?>-pX{o1IzU93k`bA32&9h7V{Q^g;X~;J{j&D zqN6RF>FFl-V-3Hwo_$r@&3edtpQBaYXC7S;Yi7$FQ}MeikHbKlQ~r9EGV>d<5GoCn3e18SZF zfqlfoqw$4W{>hf&M@p?Yk_s4twmvRw52fz8b_x7cOhfi-q zU*Gdx!#-YsZ@Od8*=LcQI)8-3Umn4CAYUsUF&7WE9(m$>ZrhOW8@N9U+(UNz-S3zQ z)aS7hTo3lI!Sje-NwX{pwdRtzzL4`Q!9Ep#?-dJAB~N47t8RTrcfWe%ta13~`;VvJ zy|-Vk^pr99F1_>#-r1vk3oH@!`G(ovox0c2M%hT z_a+`E{I6Gk);;^#d$>Qa5BZ<%drg2hhTYF;?(Kkhw{5dN54Nd~k8Zz&?2oWpdRFpr zWM56HL!Ps~!u~+;-h6l_Y;)N1hHQrn|C>yE?&pQ^yMH@Q$$Q8*nKzqnk+ohF^6z~O znfKa1lYi%*+pzm;h+^jje8e=m-wUI~eCXO$Y^hkdvG=5XhVu*PzyQu?uRQxiJuu5~ z70F&jp0vo-!m7JcrTvA}vEa=#g!?st&JVlC(Ki{gA2Se39&6;WQ|-Iya(!^@cH2g| zSUlt*n7v!>s?%Dv$nWGHOK?q>T1`*bL3Nt~N4&zWM?ZX%{bTY?WIpn}o7v1QbRl>f zv*py(1*4ZD=3$rA4trt7AHRAi9Y1k)9SELinzO~!(L!S{ z4}rlWX0ojM9e>9Ecj4`gkg=(3e;gBGzq<8~ezxHB#7x8?zO9A*3EY!iqc(wSkw@*r zJ{?uPb#*?mgtJuEvsm``PI@xcIR<~EmMBKN>ba9=&Yrc~G zL)htQ>I^gBy6KJyZ1>2${0i9~ulIiRrMuJUE8a~L)C0y{<>xCtl5>w5u>8M0mS^0# z7uJD)$o_)I?8hL+Zoek-H^;IG}s3M|ot@7%S44~yQ~rEC?RS!o))@9)Fx+eGpF zT-ULX{D*yR$ZN=b$nc*W4V>Sw=OOps>%sSOeljibx;R1y{`5Vko_~*zV4;T0AA^M) z{8i+RhWXK+AG;^pa52@#TE(y#*>C8;bex2kd0xl;?}mT6-qh104*n;<|3B1z|J@FJ zzUS$}Q|ct|HulmCEE&D-WwY6-<3IL5mnZ;{RT<-+F`R;`AyTUy={1 zcwhAA^~>$X9^*}3Q}MnwF-1i_A^-9B=d4^p{`t~_e1 z1G7B&z5F*~)v)1yJ|*k%cuJld{vqU^{r@wai1+`SpZGpri1#$)-e)X`ct9*Mi_T7v zhwrC{f%}`uX7qPOk4_;j$vVZsvBzQu>^I-M`RTh;_Mi1P{&za@pV+AX!Y`cjX6l@? zyHQu2fG^#2iGCTq@6j*Ww1uB%->cT5jU2b|1>J0T-D4X})9R?YkA?hf6a3RD&g)d? zX~oSP)GHJF`8DBAwc{(7uag(`bH^R(%h!k>x6%*&b4_qh^VQDxBXzeed=CFr=yA)` z(F>n_$x|m%)Oh|^{z()4RjoA66Ye5ruf6%@iFD)k<7p{;J;{3Z($fJm?gkwbVYTVx zD{8r8$o^Q5fep*#zre%p;Pc18+@128?UCof`8)sNz3H`&qaTq^`orgZ>%-pRf9C$! zd^5s0Rva;RyR}g<>N=})yl_hr2|EI{etTsScmEp z<%~~)>0|F}V4f$-Irh`r$iEzx-;mWfhVbzZ$@Vwj`_HofXFUj+=j)W#1%LnL`}C!x z6Y*PqldP9whf)mu8UKghZylIr4H(mp*Q3rlX`{7v7L1a)ij{OW`tWn+{AP{fU-MUU zZ97t+468Pp$$*DME{R+z~@g0n2b zc2>e)RamcU^!iki|AM}^$l+AtjmXb^4R65KREblxV%c_lFwdx);6Pv(>+oL$Z&vw9 z=B&`uDdyfanSD`4#_Iju?y(cs%rrBLoA_H*^r99waM4y~3yjUfVqsGI*W&PZKaY4} z2VBiW)Ir+FYmfKa#O6)%Vzq2v z)wy~;==&78k>CPbc=u;%>wD@DpLP9hF}^7FL^%=z(SOCV3RqKr@Th~&4rx( zqWGcsh*$O>ij2@|H=!jaeUD-{pt;;h*Qp^=kkkcK>L3o@^&Rmlsmi zEIs7KEA;uCopRQIvdVW-RnMF3!*2Kwm_9w+)q1(>@nII0y{twSeee&#=RGd&-v)1I ztyo|i_IoSo$U3p~32L{)&+}oPg`;~yY;+$i)9vz3cfp?C4|nvu&stBGiN9yCJ*(eM zwPJ)C_M?K&R823M$WRBl2%eZ4HSkGne$1MQJWvCBR4326;qHTJ-+y5Zh#bxyBKfK~ zI%NLDC&lk~^K-4)W!C$sSAHeo9|sqkL%1COrab-_6#E z-}Xmv`i>kTEElbTFr1SrMl3KWWpNWf8jf+*Nn+-eos&M|EI$P ziGOQGp3x)qxIU|A^}@WGrt5?3QlD$(vrcl(_3T<@DTcJhEs~#rOPeIti#RWMm#0}H z`qjqI(R1O4X;_VXL|tM)@9BVJ_kMZ=;dfxqy-&a3L5gDIN?W;@IOZ(G%%$`1|J(W7!{-zHSZ{vxMLMV+7V*lP zdp=K>JrnZ5PN+e4!d*qpDrRAaKQn;;zxxa`ugU*3v*kPCK|5kD@Z9J1mOPECXKQMK zMVyYCWvUpxP5vZe-bOYl=CB7ZVe}^!hOF6gJWc%H;92Vw%eTp2HPe|Yb2cglUQzop zD{0BwFc0R%;qGeT2X^2Ym_jZa)`_{zVyba}i{oU=eha33es8D73)QUoZx!ko#lgo?%Zabb_sGeqg^k!o)hYtBF--6J z-Pabrc%^kJxTJHfa*AE*PGa@yIcC~a|4t2nJWhQ&m9KjrhyRCgeRy_o-dE}A%P&dFC0LIa7_VxKh2fa+zM$ z$LpZ&9y=rn*g++4aa0Pe!MC3nEK$6C;W(;#Ml zG+e^o%iFezi)&zDikqxWo=1N~@B##eXU*o%kKE7uwIDyUQyfIjifSWue3xoIU>RR9 z=d}~X%?G~)!xvu0KD5C>v~PS(4pdDHKX0u*$QE^;b{OXl817bitI2w5Ch6g*IazMJPhW8Mx*8Ww zdib}zII{L+HUh?As=7twTnFhuyBv3&dQTNjk^1#`fo6&sXPTd29!ISiJstX!0{;-) zeUsMt&8}DBCdl5P`&?vGk0tY!u)ibp112-SbUWJ}zChSl`2B7@Ed1%p6)&ao>16Qe zYg60G?WI^JYG#LGV{#!6Fx&b*=MHi4U2;Nl71;{@|2+42wsm99Q>nb+YI)D=tv|0= zf92^{v9oLGxLL_r|4zE{IzATi*=0Yo$$9uVlga0_&__Bu#y<01vH_2y^kOXLI6D_} zHY@Rj6i?lypFmH8HL%RJEyMpk@f7`ut9Q!t;9A3(kUMc}nz(p#nlSUOG;x-58@3*G zoDZYD2?ps>`uP$bB>lMKj%&VIS3}mIHvPzhui-4%Z8rA7wDAw(fbZ}#z81IA!~ReI znATkJO8Rx5bttasWVR)Gn&KXqWuDEE1E$Ma`}S0|njb07ZLtmno}-O#)5-suCf@C~ zbyy>s`23Ax_f|Hhj~vVr?`?kl$hQ0N@jMI5Tz7_EKA7JEe><;^Qn03!sjJRlhu;#T zeA~b9{jYhBE#>QU(7l^?{4ssX7dreee4k{glsP%SQDW^_jtHhFs0M z128~h0X}`F9?!tG)`tH^_VcUsXt_TXqpsyN{>@2#6PH+xxUUJ%MxXpe%WBy8TK9GV z+h#sd_G{Ptf7y=0JJ-+mkYg#=gHwI(t71Sh)5DK$zEf}h@A=s`TPxVon!B9O4tb)e z8;gh8|G8oR0~=&Lm|a>E)F49s7n9+I?09V9ga7*mdC!a0mCR1#EY2s3{xcEM?*v-~}>r=k=&Xg;= z&9%8zjN;rYo=jzIbD@d;516U4hP_f-dV0s-#`+wVg>ODa-gM3H>EROo*J`@E#xy^X$(Da=PkXt>i!YKd13`+UP*wVC(t&wfwQDe;@zI z=jr|Z-!8Y`JeK=*$n(mZX6$B0{$sXx^hD)g;|F2w-#Eh93gQhbim%$|GHXVMc>I=^ zzv2u1MF(PEpM3U3dgPS@>EyfQfG&8m)B`+4e^=+(Z>K)|(mm$cw2=R5b83oa0F|2~ zmD7(`q#L>5%vq*Z3g28fP2N+#d!rg&`xOUDHICr%ZPZ&ZMJ(G4XH-<D;D10ApvE#mzta^qF4WaSvPwv`^V?#8cWU;jXcj=_;Vi|?_{_f~F6 z^=Iyc6Ms*S+U@N1}?JJ$oQM`tFzM zZL)Fj^F#JAa)A2|e37=ly)WJT)ca}m6)&c#XFs2+Pmm+BMrDok;OFPk)7UPd1N=e! zH2Eq%TdV!BOZf#Kqzi7^ttNcrTJB-F+yB{DxRG6Vaa8W?SLN-+Cnx)@8P02|^V&e4 zBVKR%4d3fJ=k+koareYEDHog8kn=XzD`pu~tMAp4{VINN%xi7rm)-XA!4&!Z@A?m_quF8e_d=` zuhv~PM_e%I{c^VU$A14uZ>qh@N&YLl^AB|3pZU>MPo@Gtxojc3xcI45v*=MhV%L)g z@nstuSTeMdCzO9Z}DsCmAC#j-v6(5 zQ|c8t;UQ~X%(9>Zh0E~$tt0b;*3%jH^7F1_U)H+Tr#NS}M%-0kV+wrq0-RD_E~-pz zy{l?#(2QIwjy8Y>a zSB}(!4D0tA?9gxd9M*tZn4(GWC8Kb7o8S1`{9j+N5zp!g-ssx)$bn9Uc@8~@I&ho% zPO~{^)f0NyV)~nqQ_hsM#GAIAoXf5cHV-$l<)w3D3f|vMV8+2TA z95ak)4qs9>pZtgK-}xlJ>^XRE>p&kF8hA!7?a9=;dTaXKgS*nZyAR^F{BB$LO}U7_ z!*|^)PJRB}&(a+)?Mr9qN1wj%{#49g%Pv2ZY8Gzen>voUucV2+FQ#JOOX;`wn{W6% z?Ct@s$;M~M@$c9v-1oUl$@cm<{=3;0*SXVmp6+p$HFnXRw#V?k%M;;jX(H=Y>Tfyn zUrqk&<$!{BE9xt?Y690hr+L|`P0iJ7f)OoS%Em2th5t`~vet-+=|N5Cr04o87o7BBdTGbr^yObK!r#0Jf5+c}W!rCE z*!IRp>GwBpPiLI@R2uI4U7Fl@bt=!fK4sUX;~MWv3pedF_wLB@61xrgKjnFt9rcym zMdk#a3j=$+yh9IL(@DPuT;rviT^H-*lH0@tc(0c|s}K7fYi0EIsul2k%0uqi|0(|N zkPDi_2i^9;cl%(U$=lq|u8-cy2j)xFs@FEinU=}_R9Ocq=tPk%uazgcdfSn8=}qy$ zfMb|IK8s|tLX9NmHcau|mHN^id+UpDKV)F~~;+eT3 z*<5-s%s=G+jr`=R@l+yU|*7x%|GK`QlmpDEa+d zi{ClM_K$4nFJHxdBDN^{{W7nWd#tlHlCz`8)IWzV*vg(|_x~UVbcfuhoae~hV$>(a zzE{bOgbuL%HTX^wY_I05HtZkFfj8QCna$@K(RM1C{4sF(wg#ZoGY>4h;`l*`&{%CpFyoQ<`zURT$P$$ zEtx97S(aO`%hXj1>{mHGxZ=6!Z~6B1GcZE^@P`u?yU!=t=s?sXrochWf=xZ?!B5i8 z5B@d|{O~dD*^kfkq1|cdoHtYTGWUCgJ;sMws=o}7fmw1dY+?R1GLLIF{H$hvb^V!m zsMg69uaNUzi;J7huY;GFqSnxUxtax0!sa(UMu%;+52xesLw78BK5c*N`{!cf z9{hLzg*|BZDu~Ghko}zIR1O^=gzt%OtR!YF^A=ehM4MzbzLpMsD$?cmDRiLwfglYx7%QrRAH&kLnf; z5o?kC3Xf%hg_6T8^80iAn2enbKIahjGTyE$k~s6ieLK3>r(U)Jh|=TwER*vS+Uf_5pp^tz7xx3QD<80elKV9)X2)& z^%}Emn(#JNtS1*M$?C~)0vmUx8g<#}Y7Oo31;sYssUqvgu%AC<=Yvzcm2W@YYkg!a zWXc+nHM6b%M)rSbo9J^DkMfb=2qv@pOW@7;?YTxWFYlQ(u>D70ma>02%Xj!iKfW4H z^Vu|H*54q!+7$TAI`+Q&cx(GwSmJZU>~aIOdXDqIzBuK64)4(K_cqaw(_lSge$IOG zKhrTRp@(p4nROyt=&{>*4|ojU$GVaAvh)4cq3PtK?E&X@2c7m z->vRve&xg!Z>5Rz-Twvd{R$flKu$h57x!Q8u`u?8-Vymkv0mlr;>c59O$`^nrzQq> z)<-6O&9-EG`Ja*VpONb>dN4rldpsYb3xlC!WUYaG{m^=FEEz1)k1FeN-5N9^~@Ctm}>K4_@anh?zlrNK43%*=f zjpzf&ez4kcTvEb1#O%W8Lyg*0hW9=jqpOksTV$ip*(^1Jz9-b>{H-6XWDD?wmFm3W z+pO8SRXCO^#~EBg6>&|TFP&R{CO%;``P==UNU2@6MP1^2HM29-60G%o@_+O1ho>a}Q3IX9FQ0w=-gL{;AAK)=i{ROK zeEY{~(e>~kW&}=%Jon;|fA=3(O34m(@yln!=D<%^gssOTQO5RHZ+bV?ouFnGHBmls zHqmwand^6y>saHO_0p#vGCvqH6*ku2&3?Z?Kg#Jtk>A;BYoR|)53tp8_B{`#;H#>@FnJgqk3E(cj{tir0gO`CZEGO! zMKO5c7IM!&$T`m{uMb*3%uXmf-tX$^3$F8+127TSUv@GdYN@)_(j95?nysm8<@0Hj z?|rH|)J1o^ogR4R{q%yEa91f`^vCa&$NBH5#1~(EmEP9h^5o7B(sd8No-VlWwKV^- zEot!d2h^4C#ZwFyd!luC@vUjX{5#Twx%Z|CvmZzk=Y`#Of8_SE#qb+5V42_)g&Y8WIXHzS1LN{#Mn_AiWnA_dJ2W>FNvM^7b z8wXo4usA+n#6jJrUby<({kd% z!k9HPVu(Roa7yLwu#u}~x)6SK)Y?02-Q>O5b!_mv1zQ<8EBAVV>{r<;$^SIhda~~w zeI@&ShP>!+$s9TT5jpfAny_BB?Q#p?= zv|Ha>>ChswE~l5RvX-qO`wJY?O#AJ3Z+po0C_mqQ&C&JT0KZ_?HhBR0AGx65KP`7` z(aR`O>8%VyL(rfsJ|lXl|x_77R-H#m=T9_GB6k9RSDaTbP7VA^VC@4J5dBf3*W(Pt zb+YE#chZ|jh=&hfkHe3j^WmPuF}&eon65?J)5O{G%?sp(mblk&G#S~*7K(x4Byz4t zZty9%Ofiv}fB9AJd(_kW*hcuute1}venzL~;Zx{8$*R3S!EgM+^SrIWYjt!%eKX&} z-)i!m{GEIrYw-`+eDQ8}?9GSd-}7AIcG#Gmscz#gSUZ?T`TGWVlBUz)JD0$0%riH1 ziFM3Y=)RAR(VN+N8`W3yD;-Dp`~19243|aS*8R+%DJQ-vWSN{#rN4TEvM$E~^Iwwp zoaZ%;v7OI0iT+f?x~29z8d#29aFuG`eAjYVssb*;?95$aZ1;b*&-VG=sD1JWa`MdC z_zpI72is~h&v8OrGk!qrZ`D?Ah9AFqPg=71VA_PE*KFE!~9WLv`RLx`h<7&Lq-4EpWwj`$$#*;4PJrM z^P>0J^gYh!J7R&qx?uZ0`6AsVhFB=SS-bj8dH|c?v9MA8IA(u@4ecT?Q>>YMh1`gH zJ%bF5yVo;akJ;}3C^;D+ zz0dLc!{-0H$Ddpc4x(2K2ruSo5Mqq7nj7WxR{ri3mhFBK+MVt4y`up`AoekCp>r{UAOgfTu+~;oiGCL z9{7{oYG{)l7ii}Vz1&7zCtQUebaHm=!P(BZl?IOn446gdzxbh4?g z+pv4DHzJ#MwR?R_ns$-dqt`meMP6Iv`ku%>E`18;#m+SGgso}hjF-|oA0DZ${m1mc zb9&n^`cS`|{%d?n_2zjEUAzBKZYxji zWdBFr|CP10&S%>3j<6wRv#l?DpX{e({^z&JAJKth|KM+Hz;Snot8e$6TfKf`N#=8f zE9HV#s3*_oBQ3S9G`DPt$C-3xdCLChG_|#EbL*`EjrX!kVt4Cz0S9VMypWjz8MTgr zo`YQYFfgl8SIr{F8Q8b*`KO3o`W@#ypIsd9^Yuc0)ylH=z__aG&G^vYWO=qVpMP6W zhbwKc7^OKd)`e^}`PbW#shwwQ_u~DGJgwS_nqm&_A_uckeiLk<8vbN_vgNQ;HS{Rv zE;e{QID5+cUhs!j-k`pBS?~br@p$0#bo$eurmMGnlAeBZe|lp-efa-T9iEmuY+m|g znlSAy*NUBQXYYVq1+0e=r4C}cnUpNIisi+CVn z;tdadmR{X+Kr=dggdPF?fM8>;XIq= zNt-vqoSq}6bXMe*%#J$^ZrALp$@*NH$=oD)$C$xXr=DN8>P`JIdShS@E2ccG7tt&T zd7^6A#7cixsIL}#pGn23Po#>vyHj=N!>OkG&Q$rUHK};a@>DoxZK|yQO{(v_A~jCG zEY)>ho~j$qO_jB0n`!$t955pGvHK0~Q=`vKb04Si z+nQ}r10H3&_;ca=ypkS{987Lrj=M;v^A~vS zO#YCZYxId{@_u=JIWaFRctR`X|0?9Y%izk2>Ow7gv0Bxaitx4NFynRBgJ!k8m@ir6 zTjjl%`EI6mI#K;7=I}P&29tBW{JK0qpZfofegEIa41bXcd_ynoNsTMi0DEud|FGlH zx9}4_LY11QIjvRv|C(j;=5u$X+T}a&;lGjE&U-6OGm~dXy=d@vFj{={q3B| z67szMK77z09m)Qu^vd2prQ`LxMEx@`FtLT4$MX`00$gz5V@fMAU_1!xT`ws4(=*u04MUFn?+3*o_?6>ruV~iLj`qjrh zmNuUohufT?Z)Jw_AA)}xfvcXO<~{;vG{Ps2E%dvj<9Z#3&5i26Y-%&l15&z`I;dJo)=3r&AsOv6Zm*5_<=ua4Ouja7*A^YWQeg%6U zu?G&^tcC2idM&=QTAUB-R?g=u;O@`ib_{;Mva94++42J4Cm(rjSg!J~Ww}UZE6H;i zxvkIx6gbM5ml~M&zztW?gW~z0re^j3m`PtRf7j;oQ{Y-E$bKz;v@XwsAGGRn*s8$S z@{#iNt1R>g` z)kFMPfBuf+FY&*53_iodJcp(A%XfoMrPSLJ?}z@}5}b#J^lU)wZOrq-`;GYLkS$;@ z>-bbr)6(x!@?rG5WS!RK$$XmW{M5iaOk(3}=|>~qr!i!o+)uZTH_?so_s6UeBYZSC z=loi)pXjyo*?nT-1$pzB zV^Iz_S#Ld<;`z&azFlTau1I%2kMH&O@2Qb~m{wf7EnRi*8|jXxK1e&>-KXaCWeL9& zwTaT^r$Rj<-aH^4e*L|D>4pbhNlPzyI@K+GSTCFFr2d)lXR<~7Up2A9^p{f)4EVgr zLxw$ckK#VXeT@58l2!L7cxw*z?zxBbV#e?BuicKr&u3RTwry|i{%-ky!0(5w`Mr?0 z(tZE>@tbmAlKpty7ILv(J^Gs*ir+)r|K>+te0zUddG{xWa5y2qu{oaLQ7rLam2~3k z9+g;|V)OpEevpVwO3%F(*Qa!C;`@$qCRvX6;!~TtAw5g|EAS4L|UhF&cc-yH9K*uZR#*TwxgkAqg?VcE-kwh(istpU~MFvNVhqS?Xu zvu)SI%7hO1Y&Bh}^ZDRhYr6}-Cm-tN-A9uDKczc&;^@KkH1V9*(?m7i!U^K9leVY! z-@KM)UAkTW`FrUq7|AOi*!Ab_vOm0$R$aO!OPgjbzW_{+9AI@atpbCAN|uSCl}%O&#|vVauTnTr_i}lKNQ)aU-AAdvUB}&2fugk#NQJBujB!4 zdyd_OB^`kS8FNj?%qJKzcO!ULMz7gh;^qu_501{T=`*cy}`uB&g*~8!2Q<}*!lV3CLy;v_t_>MDRd1KB;_eHx7>0s$x5AClc z|IRxbC7)qC;ogemztRk)Y!aJYOQu`A-XVvvAo_0ParC@pdT_Da$G$7T{1221N)c5XOW#t=GV}#m>ap$7Cp7{nPn%)!G`QFkSoKlTP+V%gxk;4 zx2R9#1|xQ+a~*t!jvc8|uUM^~)|jnYM&=9hKNb3o>iylsuc?ves1zI5$T3xjEsA1* zO13}nGUa;k8mtvPe4%Y09!dUFy7Nu_E3Rv1?pb!GUQbx7vJ2GxH^{x5NRRpGIh^_V zb?m?*@z7fKWBF5Q;+%Wn0^}p++GdHR^fG5^7iD_s%hf`28?2}D%J~J`pbYt+6cT?~Auj8%Qk-ARb;qz~$VYv0-D{*>VW^R4#SFWJ@oVVqo zUoGK1X0su)@ukH26M7$W3^F|p*+w~?& z*V;#sA00DuBQB^X|Mg<*9Dgacm_Jl@l{&Z>;pMlFEH}5m1q00%D>L?B zGu`jzvxTiM^)<2UXvaW4$eun7W?*) z)wyyrC(w^UYxn^B?Y$g~bT;JPn-!2V<1aUp{hr5PSwv@+eW;HN#!t?&6JD!QEE{v~ zVzym&wtJ7qC&ML@$#Z4!vRT9#@g24Pvek0N%gnJHA!n1U9r#VM3GC;@7jSFfKbfJg ztJ`MwQBkgR5}zh~`sksInQ{3m9Y36F?m{_d++~&ewJX(`%it_3#m5mFms>9;<6zqQ z9rFLkyD`_vys*n1BU#AFW9M;l#ys~tpDT|SCELi)3qBS&m;46TENX@;#6`>LDGW!! zy~w$b6LGmzS~n)q(U?J*6X)mF?M@x=STRRy#Ql%;d&vD5yb4zSY&<+_XVdXfO@})k zz|A&@rL)ZYn6~M?)OiM8H@!O3_+y>89iqp* z;}kt~YhTtUzLgx2CCAyW7Tp@Jov>Zs%WG+rZG9d#;_vzQ<(Gd-_dG$THawf!$z|ty zIGhbHS;GP zmX}JsZPV#P=;Aaw*5f|q#h!UFX(k_?^{~4O$mwkII)nY6MFz&{!!X;oRE`ISL$-w9 z4jWp~7oR&3mj%9xhI8e)#k6%~IXEtAp26T{vuz9Q&n)n4 zuAZQkV&M7eCFU+Q(1GGOIqTvpl#?%c!Wy;e$s5@86U4`6&zC!vX8E3&D_t(vS}C`g z4;{FfosW3K{K9Mo-N7kPE-r3VC#XEl+9Ez^hQHgY_v1+a-i80^y$eSzewK`%p2@dm zVY}&W-W>N>12S_%Gri)OJa&$clP%!~t$6y7FXVdXR&Sx-Pq=P(Teo0_;C(XuEcrFD zroNLJ*1wI5GS+B50c=Ouxo)W=yV9nMo=cy7&$@8*Hr?|u+pKO^(RZ)8shd;v_@k*tuXOe3W|$m3db6KM zlblP_(ichn)jr+t6Ol3KauKZJ)Y`jK4z|}zj6FD%zxTzkETg;9!-t&A9D?! zvOR51@sp`>-eaj@?xU$5cAlKQ&o1yd-}n69q-A7(;GR@gbwQdm&+pB7GS!Uw zyx(quQ*2o+Ke2)xpX>gxuUQYfK8s&M)^bbSf4#lIf0E%a%vQ7e^S73IzVm7sIsK72 zy$(4u(^@abPj}asdOYQutpAOq1=r=p~lns>nr&}y=1D14)l_RZt<-? z|NIagVf(AbaAC}+Q@#9*O8YCqd=0)=nkQR(g1k}m*NH<~uEAHthUSj9CY&x-76%mI zDsq=Q=Ggz-ZR&9RwMB60`cew8>DkKHOFWiaUpsOi0%&rY1z(n@H!(Ld6IaBH`U>k< zt(;}yeAi=>b>Uo(&OI|bqU7tZewJSF*VvUT>b5iQvGIjwKkhp6;rd*&;oUfe-b=M> zaZRy99qd@E_@VWLm&wBOrF&LOUaH5e8)T>0w>ee7UzKf8p~7tDXl*bR<`j~=?|pJzK86~Ya~43(r^8Jlh53M!{Y{@`yH&q4Jp@hGoRRbPrfk~>aR*= z&A;`Ve!JE4mf!h}o4oh?(&r2IRhR$L|E2sNdXX*j-WqGbiS*+{@2Sxg&k-lU^<{cIa@Nx9 zB)mIn3(eQySA_A-)5&a6cNA|zwWWAy|g3G7tI~!yB=ZGI#$ZVJA zbNE5M{0x1dxhgSnz3+91N7{F#njyZ?Dm@HpVpV!zCyOh}Poa}hn}!d{i95=1V;1>x z*=ol%A2!ies#VVupB^ulvusD|fTw%)?IZVs1y|ZBYCvV`44K?)%x2A<4Vy_H`t*;~ zi(T{9ky4EuhB-3>I=9ZXJ03>F`kl94XUnVyILWd_)_|Fhil?3|<rn8YE!|$S zRW&&7iro+6Zh=Q>y~jP(+tGYyDsMMmcKZFPn*3J}KA_h50PH-OoPKwz(DPK!KHmLA zzeDG<;<8*!Dz3f&0)n2>iqttiRp44}RO?=Q7SfHz7wy9c@ zb+4P>*ULw_=cWBe#D@mw)`L6Mmc*-VWMT^cstu=8_xbOYe61G#RmbW0O4x?x4ck)F ziE1Dxz-Mmc*PQ;Uxl85_t5LOzqng*gm>T($lWcYROB?x>R~Qk`|8 zYQ{t4*xDZcdoMZS`{a%%_cQrCv&mP)x_qL-Li6nT({+EBX5J>sA@!9+{QQRAyXYTf9I;% z)=3|lGqxvHi$RJ*WP1n}Vm%y}oMut3r#|GL{m(YA_3Ec(>c~a-i6YE!?szh(55Bbj z=#7XTC0s}o_y9}K-){cPk>kd|zg+(^yoFxI3`c*ae>^9qZqaw%e-}QtYxGc@5%^{L zjSDYleqh;2@>XUd)cz(oqFgiUaVa+xnCKa<2R@Fh>$#FW$w&VmtY=y0-E1+t3tL+| z{*?R6@1a9ePJFdAb8A5F#=w<(^^keQyFAr3Zevqg<&|S5>E@Tey?-&ZBJA;HPee?O z=M4{R)H}x`FK(M54>Tgijvj!ht3?hy^5tV*pW(CPYRog>N2b%0ZrkabKT7-lW}i&V zJkyWAWq(=#Kh#5)x-R_ye(C)*P0nmsyge#+)f@Rv`xz1I4~g-+#53LU0x^RiYJH{S z@wupZ_lwW_obz5AAuK48f2%z#rGvjwkhWH{6_RNW9tviz9Yly`4B7U!UA@GCixC*N|ia_ zYxdwGmwT5(EW3g~EDp>{7zwhrivP<7X8Juc{%MH^agbjH!x_E)S>JtXW_RE!HD^cv zUf*@*kKhXFIv3a7e3-a#nCw|3DEF2Jz{PqJF0&KpLhyqvdksDxZ}Pbz|9l>P zOmK?j7d?}LtF@LLsKxKvfbXpHtV1&vyYM9R$j!t(8&#VhgF_3M33&)iTIBqL>v)K) zc8eFMz|v3g-S#uyN_RhVWS=DJubX%5Hv0revU@&4wnoYO2>A;Y> zt3F&ZW8{8Vt~K;*2KgV8?;W@bkGSnH{wQ=~Kn}Lw*5mbf?4?UFW1?TqYe-EXILt>K z`>^vEkT>m@9~J7qx;Bx!w`ErqHR<{vyXG z&z{M*NB%zRw@u|Mck|tQ0k-vS^|4eQ^H@m=cn=8@z+H>95G!^jG3Lv z-#L{HUP?Yr;P1|6duuL-)xLyne=s%T{O!Y+*+&ni>*t$HuA5F!yBfxSG)w(!BfQSp z_~1^)8@7QAUZ8&gw@wW#L=)Yc%>O9zLrPemh$avz_zzmxxlVR0?$>Z^Y-{jyhdmxAYjOWW-bU%xVcQ(` zEo^hh>Nr^$37NI^xW}#d6DG^sOv9~q--}1~;{qG;e7aYkR%7>h?Y9(bx41@52xA&Zp^eJS|KAKyJxY z%-!zyyWIxU+-Us6u8a7Ra=}S4;Y66!<6%|LPgQVUeR^^RaO6y-0}bc#=kXI1 z&GD*PaUk_vv@gwb&i!UUH|v9n*?48=@k8V;%W>t_{Lb&o^Hjls=J;Zz9)hT?t+$1r z6WqH?`1`BLf7GG*&0&YLRs112`!jESU$5VH<9QBz`eoX1%N{i^xlg&_+$K7Gwp^|H zLZw`0nR-LE!rIx5BbD#iipz28mHX0k_opxJn|l~ot*B>3{XOcDW3GGn7~^bUsU{V6 zHtf6m8TP4UcVmtBy_nT7!XF5^?~fd*&kVR%Q}s=@>8TAY*8@9_?8k*3KlcuN!0*^R z@(}tIzDX}XAY^Gk9ifkH4LOKy$QH-fPu>S?5g&vuj?vS8F+o3nY@wRns{1}o3vMTe zzbC)yM+4-ri=FOqoMDekafSF{M&M52nnJfj24_Z%SIs;8p;&W<>?6)GWInd|tyl-b z2O5s=#5HlPhF!~E>&Sq5SzM=B8;4!bK049mTsoaozu)g?@26TDhplTftY^{N)`NFq zG-@dE`*F^WG1ih;D+b~_Y(Um->yeY`W51jE{0-KC20EZ;DSDIh=HQh$FsIxnuky0| zI{!pGTy_==!nx|OXY)_4fH8wxtJB|D#rH336L-(uVlBB*efV5`Zs&-vufyH4BQ>4z zNoqdtGrZSdrgofB)u-_(&Nb_Yjo&P%{kH!2EjSbI$J2Drt6!$epZz4Qcm$UB=H2GD z>4AXDK~K)aQypvct3`iu@TSiecb0hA8A+xr?F}zXY>%4ng@TPsY z{f}Vpj;H0U%u1-R-jv0o98hD_6Vw^9OI)+H`g-&zOo3Y(*H;p@JZe~_TCT^L?p@Sz zh;7Kdd+608 z=W#>+pMMwcnV2;0d)VEu`QZb{S};N`!nO`tm*V*hau@nKE<|97u^}uz8KNd5t zXR8SwI(Nt8n8stKX2`BBz7zWy^_@Zc=#F|>$gpb_F+<4xfHgAwyOFRTfdh4Y$LuHe zA9@&me=pk~Hf7LvL&vfn{_G(6=WmzRfI526$gk-ZfeE%^iFJ^l`RS+d#If>`Ur7YN@uWVJN+#A^?{^4;h1!uwwx!pX3iAzy)? z49r+yf(~!-`g~Zt63!CdVgVVQXPfP_A^WA-M0(}}Cmo-guYdCJ9KCPOFN)VoGVi+! z_1Q1n{HM}m={xs+{e1Hu(<0k~*nGY;+sJP(`1a#=~m1)3SQ?Dwhwl7c3gk&MV~|9W#cn}Eh*h2oTPESGvj;iLFiQ0D`&Zg4(LzG z&9lyTlJ_=`WBl3$ULUazOnsO>+$E29vrV2=JeeD2Tc+>5?@#4g2z&|nnYpz$yBjwXKD~9bYF%e8y>ExS6~u`;kW3!_KXNp?_Un6uF~1Pk{p{bonkEGnVeX4*;wm+~#r&VO@9Up2Q)2$o};UU4Pu>G^YFq{=_SmcB#&t>LaRDN39sxrAI4J! zt|4SU*4>hfx%LrrmEu3I$8`@qIJ`w%5H@c>yca%5X)X&}8*9TTT`0v4e5bIjL)MV+ ziTn7w_isCL9V5v;d`@65%kHT#aQtYJ70<)~xpSEC%bnEvu-M?4>6<7TrT zbLG+I-;EpZPWpKZI|IWtVx1j@*BbYHW~>JxtG3u*>A8K*rh~KOi)P0b`W(kfUqT-b z>r)(8NuTIa=wS&%WgQOv2)!!lROox?vMn3u>&x$CW^x2KK{m<<>XcU;@w|r|wUG0s zyZA!v|H$2?EjQB|5ZEty*R1_o@=x}UBJ;nKMNAeUt|CGQ_z_G1)=*zVE?LVg7c=;oj@ooR2=J@{J z&(b3=>`5nIrN%EuSj5*iLGMlx=fNb{&+3alNf$i2Pwe~s`#K^_Sa03Uty5>OuyR97BN}ON9r_-dkRcRx13O?$7a3Y4WqB7+U}Rq8Tr?dQYsXeIqjAMIZdZqWC)JUu7Py(NGpuXwb@;sPr@#yJ z@K5DjD!a`vf(vex*Y1?t8???g!_?O;*H5i>(av@>%P}>c`)X>w5MDz6#DKhXCyYm% znnK$;^IG+Y_UR!Sf*BgV$m~|%o3;s`J8VGv(k*H79P@kC5~isM3_6EQEi$L3l|@Yp zW*{3A_l~fk{bI)Y&2m8Um(%X$C((hvTlm%w%8lC8C$l!PUwwxB&N_T98&mef)Ab{J ze%u8qKjp@hZ}xsh2gsAAw`J~yZ&)K%AhrFi_@Or67zXO&hxT*VG!~Pp_=i@31 zobyyzx&?X|Z+#8lhxLFfbi{w3;e>eo{ZG^N{G)kdyAJ+Q`RQ`E@Me#H2kz&ufA~Ya z!wcn;C-#Uf^nd0?BiCtS#(b_%5ZM0MF-H=O2IPyW{xn ze7Je+XTRQ~A$Ztsb-Wh+g>`uAtD0eIyVRns{Z+HoAxp6 zU8s*~_>D9%58ISkzkBdDkI8RYXItUdAB z>)4x0xw9PE&EWQm_|$9ow)x=Mm@3yXc&}RUwesj{&sDdkviiGIah_f~J@>T>-~jMK zO#A_P{OLLR;BPkHiETgLK4DEtSjOcr1MB$Akw3(BmCf*e#E_%>pK15-b=dp(dj{LD zZkaXTBu{h^9XJzi)9?OozW)zSO8LT#@wioi9>f>-*TVW& z&qGi49QZ0dA!mKT-MiDp5AWB{_1*Gv_-A(Wt?23?DObv*U!+*+~!*GfQhU`Lw>qHdDWCQYr?-N&1a@R@m^_T z=OczL^(B5CL&iEC>-b##o8e>tLU1AGZjrzzZM~)VjHdiM$D&x2Qhx>Qb zQz`eWC&=|9I76Nw7Z2h=#;X=sTb##bQ{??tnLijDPLsrd)nuaRyA5Kj<`?BT@UQjA z12>wL(#~HfsD3LR*?IIJcbfaR>J_d26TPrFqhNFtyqJH4a8Xxn8@?&&s+?pC00uvz3;ycOG>xA3v-!Q&&vuV>F#9!RzM#&P@e3zjsuzrIwBPn+ zTCw>He*Y)af_CYNoHhzdvof+KfTF=xBtI)-@!CLYV-YUU&wyh zbMRFDo=OfTlI4G=13$Qp-69V^y3XT`)^J#($uG0HWDNI6u6#?%k@c*d98|jR6=W;- z0v+-jNBR3F-uoe$|2Nyec>O3_x!0%2kxYrdZNIbz{G2TPWGg?x^ZW~NL3%z`?MwA% zvvn7$t(uuuyC`q~@{L{a2D3j*we#MC%aenwH8Z+joqY!W@fqswo%Y>qe{FDHJujy! zSb!=%Sz$hot>9@NvA zGpBeCxmWMV#SB*0s{qqcvq?TuEja46k+Yi>HrqDF#)q%d&xeoNW#lizhmX2X*!0L# z%w+2$M=_TVb0}s$q(i0r3ONt^9&z6oEa3nQY7b2J)HB{qlNaHd>U<%UPu&U!yEEPX z;GXYP|ATaYt^Cp<8%%cdTVT!Hw`y|u6ZY?4*~lOAWB=(Ye_vmc{p=^6|C)`jeu3P( z-xK_uv))&bfdU-}zUJdxpNahBpZcADChPx1M*flf{FCk9JTG{?ll(OLyU0!+>+zSq z`|sZWx##pSa0P{7y%Fb|nJs@FGh^%NKs|YhxvEub)LS!sR@tb(=ZR}a`TF{N^XitlZpYW* zm}WYrQRg_!zK^l*ORNdYpHowXjXue`kMA&BVGEurF>+y}KCv~9Vlgx2gZjR?_KJ()Jco;vX3!lp0niWCcb3Np0s^1*h zXHED_?VSAME3Oio6>sqrP0iBA=@+B|d6_2RQB4_smJ!&vt)*|K^+e z@~)if6T!LZ}gr< zZ&viIMr|c>(Bb1p&N6asVaMn5S;B{(Wu2IF_aXV8$EF|3$3+fZ&6&?PtY4vB4ZWt% z{EqG|smRwZG_zM`Jmp$&3Yxi7BWG~ej_>YEIr#aX(h7Xc`LNl)WbgBIAo`1bPM-hm zezBVS{UbW?FSoMW?*B3ThgvdUNuG}*2X*|4Hu@6sdK`ON=KRaVhDVWye3$OSIUM&CQu+A>M4d^H)l5YFW)IY6_N z+r;3t8}T)=mp$a5Q=YtKqq#DChBCPMGI{zu{?0-dnV#%-n(bpc9|wnSZo1=)$H{&> zxTNI$vJ*UR++FGoFY)ZQI1jOTZaV#$VuJEl=Rb?Tw7?nwgO!(~sXTX2nv6@L z@ggyZxT(a+V;)tlKHVmm|Eicx%|B=`*R&B|U-@Kf!7tZ4*K^ny7~TPE*c@xz9I^Mt z1F3ol&c9FIeC5Zf;Y@X`#W4J1z>Q zEq9GA@c2>xI^J=@UJk*}Uw8i=T!r6nzT!9K|Md?)PsiT}hjhN{iiAO?oQh6|IeGNXK#%1rb6Yg#HARqN{JbnD$Sj#6ql=9}JWJ}f8ul_vU zAr|_se+LfA`OJAfP57r<$Sb=(flU9JUowFn{Hy0be(aDB^i%i$7f5vT7n?=5%;O2L zhkBq2GvFiDrE-DUwASRC*@fxb`7QK9z9aHCxs`zpvyuIrI!y+*nCUyr7PH$+;ENXo z-i;j1rJup^tUeVS_Sp&?1#11-QuyN))?N6osrngf0$YjKq}&XK#>>sLl>f_bP=7L? zq2hFW3`;*qO)xf9&G6Ut_v&MLJJrqqP=5msoVDWHv&CS}t9Bs_ef!6-&oMI)2F`ld zcoO`BHKKerJ%@R#hXHDG9h$DRM#v9DFMH@gPA)T(E6%|>XKDr6I`YUi2No%C7fWyc zC_VP(fzm9m?~;wf??(weFjKlzboC z+{!*y*p7S7wRu&3#d+a?&9%Zwm#(YX=WQ>fB5s26O=@xE;|jJbQYHoPxg9Y1f+-u2-n2_Bxr|G@bZKs?;l09AG2jTDZ^U@X2{`Wp2d1 zuZ2$*W9J&Jlll|$tL!^w70odtV?BH#JDrR9qvpou;b`(__$_NrVI*c7gPS4J)i*JTcK~a2G*cjJYI3CnXayXopq^jQs}@w>xuR5mye~YX?l5J z9Lwoqt{!hAZtL;}780X8&x`Q$zmCZ83u~f2DOG)-^f(!a4E*u4Vr8PjHQp(-ZclY4rT`M?X)`;{*-A z{`>wb@%DW3S-R^Pb*KyUS)L)!6MRHxIlnVqLwUFY%tx6yusv5CEY({=)&(<^EUs%iL*HK1S@k*9 zuF_v2#%fU$n68%4##YwoziN=1Z4aElIiIFU@+Fn<_>KIUIz6!EdbSGDuhqooDtBD+ zruoVAsnx!w@bAavP}!;`*xeBZQ}Q2 zG2eF)KA*MpOx|_k68YB+W_7OC5%c@j-Ic z{MiQFDP!_-XTXNRj=jG7$oT)zjgbHOLrLvVbA}Cto@7QnLu9jX&0uD`Cs0hazDSvYY+JT z4l+URe?@Pi@!+SbfVfCF!?OGQ25F^Ih?6*ku9h3mlu$QA^n14<3baAT`vX>?vUVFor=4I zzEnhAH}L%W8nZTQg*7cdHL%Iq|Fh_RMx#qrIz~>PI71!hKb`9#p!sYUx74o4q?0#+F zaQH(_x0o|`=bzFfeF4SjFOPNMRBM5CDHCTm0W2=7_a{nBAO>Td|pE=6&u=BOT19&)|_R4$I#~?su~Ns8JN0 zTjU(uPsJHEm%R6pQSn}x7_R`QQR3-YVLgDO$(GnkxgXbI8J2F{V$^mD}LTKKIq#W2pTY~1>>Q4U?qUoN(pq~EN9 z-&VeOx7ktVQ*IIys3q2)<``Xrx-$YFs^^OxsK=i>jjT8E0cy`V)NfzM|7oEcEsm=? z^hA6foVj^*lT6QWZapqsbKh=w?hDwuzdu(R6^4WA$}he5dAj^5`5SrJI@hm^9!ycI z=&|3aI9clGUzznOXT8WS5Sv(gGwVb)W?Sw#KQTuSa(bLId5>JZYnQpk!SNmOW~E$o z1sQ1;bFYvKTkrhWs{zh73ufg(7<@h<-?hUJF}xjQruR>B)bDuOv1W2jtnc26A47m#Gl(u-r}V*v;}r z7pm7@rFN{x-uo4BGi7+u^1bZfIGO8rPW-xDyLD?&A2+_!z)i-S+T1jAGZ$=64SKT6 z3pY8g8})zl@s{j{Q`Fxo|Iu=q+|PNqz0Z;h)c==j<&U!2ZLkwlt;20<&XrTGA31iu zk$*n+v7Tu;B0g22LC$NUe!OvUmiV(yd|m8!j5GG?eH4Sqy)-T5%a)Vf;3j0-Gu&x` z>5aJ^C2s%Ff#5b+!8Yh+&*5^YTzUYfuX>%?nyrp6dKR;qy*BoIvibx&RmaBHoN8Xr zdRSpSyY=>0f4to13HS>2ebucqm+EZ$zX*@pJn}CVX~MNzhTpy1dKh(&`s1A^zpn!y zZs>a*U6}+IRL%ajc&%HE)Fm!%wjLJALj}LAk$yCr8`pG;xj*<g>(_@53O{C-%zyEgL^rdo$;`2^M0<1+X2XmWq_Gu9iAu|;hA3;ui5 z!+!o~%IDebqWdr3nJeF(isg@`vR~ew@<-j6^2gqsazEaXvj3;4wB>)cQE&Ob3W!9M4qv7oc}aR_c|Ug$$w!~@9!BOq{ek((7>1d$(`=@?@N9XXK6yy8G->rdeZvRk*2&dOz9@eEssT2%%No!luJU(fpM1zv z>k>bwb}@X>LjLw-b)7zb^Qf&`&#iSM`?YI=KOwuweUg_b&HbJ2xMw=nC1hU>C^Ppj zTS%YT`|1T`SAHh+bJ8j9cS-)~O||b9tdF%Ym$uQtKa^UPab(^BgH!U~WMyzm6V$Uq2l8|_6E_q?_D|#Y%%Q7e-!~nwR#YBu{X3T|sE;}_wwy)?v?vIK4t&dW9t$RkBR*@rHYPcpgDRBHz5M561^=T+>?ezMP$mI+$E%jXGEpd)m3lI~%hyW&jWpUQ9Q@+g0kwSU6Lw+)I5 z`^1OiWN^0o&W>fjkU#&WnZmdw8XWuo%h_ExTXr4kg8yS?CfX#6RZ^)`yfz%Z=Q3k4 zgNjw95;J3oC5vn^lV!`c$Rdknkh=}-*K!-$DBDucnO`1tPjtl0o7bL-*l}(h*sxY+ zuFNmL%ryl&8i${Z!epEBaMj?Kjcu#CF0OuPZ#}N@Gf!I{Iu>ZhMkXy@JnS-AU)bN$1?x5;4zmzIZ(AG@akeFWY0! zMKbj0vw!Y<{PF+VhyJg!^#AsE#LK__)8EwWs9*T-Z=K6tk+)U%RFOB%^+T#$LD%_X z_4CY!{SXqJPk~u1=L`23qam@>p!m&PmHqapg74Qi|HN7i7bgR?Yvn*rqu2b({%iGr z7Z=C+^WXjV+u!4i=zp>77%{*XpQZy}H#g$7`Sf5J9SB`mM)t%1ud;QE_&j}bpHsi+ z)Wogj5Ifjn*IVy*^2Sr*g{z(C6d2GZaqz}YI(o13T_QHPolo_MSoZsD-S6}+fWPd8 zk*wnrtrmCki5h3?6Qcg34U->}Yg~<&*n(+R*|Zk9Z@>qt`vVhXyQbv2$ZY?4f5n}F zrCIxCuk-vc#Qy#KiUaJ*dRXR+cx#FuGQyvk6}ih`vV~qEQDfd`-t&I;J`0SI z{BAO?)|MeLcG4Ry9fI$PL!;+^qN`~KJ-}m4_V^C&OOxLcK6rT=z2oCI&QTL}#^2-& z`1|n8^1Q#nimcb{Z4dmix{vJjk-d}LM`8nJe*y1JXnTcpXi985C#Gi#7C-zt|7g9*1o-H=2_P_@4WkQcpH^skL^Sb#x;?>Qv)> z$!C7>)D8H7YKGodhx_0C7i_^tANoTu}(UY9nao^A^tP`O-{bGl}ZQ~%#i;%>x2Iv#~(WW`p)uWuamca zS)U4Xji=GGN$ddYt>V+QaP0f>*T$}c1*`jL9Q?2|e)&(uxnuxN(}s18@e?CIRGHU!5=SdsXXtZC3A`Q9ek;T0ka-__^Wxlq2$paP@KW zI0|Pk`9_KV6S5FBj!ihsD)C}Ez$d&&91(a$$UmDOIBCId1)iA6OIGC4s^`-Y@?X-y zUUqkgKIZ19SZChkaclIfzRR=iw$7{}Z)|mn`w|~VAFH0ztyjjNqTZm4b#cyh_1100 zTF)+2dtVb$}ol0lW(aqKrb|IG|PV8l>y3aPdIph3tE$Jw-f23pS zulbn1v&Zj7z1Ct}tP3lhZ^rL7vBCVtz?E`qNX6Q7`pv)YeDKph|1Y`K|6O_e&+q;8 z*Wy)vP;n+3$6k%&0`^=1vk=!e&VpfyhgQgUZg^16pWilMj>g3c6V{4;zp1H7&Eo#? zg-iHGi~Vozlw*MZ{mZ}peLDM(Kf=ZCdm0W(_K&az9Azz7@CuvH7g5_V4om3zJABX7 z{-J|!7QX)icIvph#RXTf^ZShP7QWCff1gbDH?uA0xySpBI~;fDUAFbRa#sJO=Z^JF zj9jU{pr6k#^p$(h+V)DPHuYwwGX55SM;-0NbNHTLckN%|Hdtpy-?Dbt>k@X9Z-B#^ z=OO&K_8xqHYySxUuQEpdhS=^+*3)y1=jkwr%k`^d8}lal->ROD&pgduM=ymz>u1j< zd(*?~dh}C>y?-Ug{vvy-(eAnzO`h(}2>+6xp$EOX}#U0iK zIf*3hE$yq^dy}}&8dB(6l}}h#;1}gMd$EC!((v7e^Ubo=MaU)WX^ZRf)f#8BiKoXs zkV`p)Vl_S)U#q$1!%i-D5%*a?mEGI#Ue6-?JIS$ir4)Bm*1En}I}MWM9_ME>(`M^J zn|v>%*Q2gC=Xc_gyvKVb9bC-6o}-U)5=pK-oAgYZ#YV7(s+c5tGp>;%{5Id^lmDL_ zqW_fn|N8p#-+m$wz<+~bmAFkq?9c$-UnwtB;$!u?_OKf0Vg7v&-)~Z$Z>p3{%;^$$PK!R{ZugWjy|qbID2RkwY4QBh+C&jmTMT;$O;d)L@eBGx$yL_JSOg_IS*q?j`(v>ve_`k>R6s`z=7GmA%9A9Zn+`HD=4dcwj!Q}xMzBnZ5>r;{U zYT@^kGtRdruvgcyUgZ4U7HqJt4m0KMCGx;iVs&dxoz2X}K`QtvgAt(TrbPjL3cB3NBaQ zF@4ELov*+7TXFHUQFpZnm?ovE+Ez}TnqAS^?^a{zu>+XCa)bAALqGz_1r ziAQp{!XRvGBOGbsvans|`3AAgDUnMtR(1; zm+>W@!MP#da;&ACY?51T?HBXSh%Ju2r_&nyjw8BH%lF}|a%lRJH2DC-{GeHOV;py;O(t4= z<6^J%el-~pkJdN*p)-j;vzq)5!&s_ftA>8IJ@P^Ioxin~@SFKsO>ufnU+0=$R(W8c zauaDiUj-*3{GPykGQH7@>wSJRp9bG7zk+Py^^_a`N2ehksKe&UHGH6Pyd8deWlh8& z)}fu^v4K0M-Vok zhaL~fm-XY7^r`0?ya3jLJ2;M8(dLI{JFL?%wH5eIBbU(`@!F(yVdb54fbZ0A9qifh zapyXi*kAun-0BlGpD*Z9H6A^@^_9;WE?5ta@9+n=2yfjH?ev8BA50^%u4=H{%mLL zO#STe*s@E>iI}kup4E~EY{0y$>cmR<<1sbWYw#fkPJuDX6%=^a=`jA;;ji(ZKI{yM z1#3g<&yF>Jy<%wC#W)OT_U?c0+Kb@K*I}Be-}R^13i4lvm$uoI+P2Sp@v8h;Kg_=u zH=%Cd>wbH;4DxLnxX>9MbK3JWzOmQXlW-6J0FNQ~)43jR`Hh|pH?p`GCKh?ktuRsb zoRw`Kby|_nvgTyNVufM0xYvCo^VyD9IOz^8{(fDAFE<5t*!ep-XXuUWp3u(<+#WFJ!77pu^zvQn_=ALW?Ea`>fG|$pF4l} z>)+>N{HN^y$?xuX?cdmTa}1+syPp|+&1tpxv$yL7XfJ{x@z%ik4!o=aZ!3DuH1H!@ za+3|dP~872y08J~Be1a{ zv6aPyVg5Z7r3 zyEyt%XZh4CFo}QcJoYYM=v0iFwweQsn z;^Dt_Ca-0G&SO7fzo=ev)+ls0*lyG`rG#3L`6TVqyy&3eH8e{Lfm=QLbPw&RewJ2U#=!2CzZ z(_$DZ?6D1tY0$Y|vNytK>E+V~Hl7FP9lkeu)yMbKXvpy>+<2nhv_kwW__Wq{_-m=pHA*_VjDJq{ z(^6asIDM7B+&l;q=HFH2|Fizj@WCAB)r!0TokR&1a1XQgo7Q1?#VCDNyO%}1 zDE@M}7T?yMHbcALXRjWS4`Aeq+AP7z~remiSA(_4KX(*7?SJ zALEezr)B@2zlQAn6Tazn&!~O8T}%eIXr8Gr+E?^!cvL@-N9@1L$DOCE76 z_o|Jq%(&m!>tmI1A0=n%t};2P=34uZi=*KJNVJAOF&M=WRKGr+?eI+8pgT{iDvn*5I7rEe`&uv%F4jmp;nYf16xeYhaSu z*bh7H{V<2!uB*R%dAgds2lQ^hy)4+}q*gGUL8dp84|Uw#TxcI(vGIV|_)sT(p6vf` zgJObBVn^e3J(<|$S?E#3jaYGb&%xzRvl;&!~mW&xFO`(dYW>M}OBU zK2Uij`;9vq`}C$u*kJ={3(1RF-Y1>&KLV$4>{i{XT`o}VdKxI z7ngow-2EMXQO3qh(hIqbwAix@;JwM=RyP@Uyy$!d85isK81f*)qO2u1+2P zSK%jCoz$22#{GY_X44JW#tQlR34QU4UNVoj)83*U>@@2(JgEY+?!}v*G2eq1;5(?} z@4ZYNRoIu1V{2mppU?W z3Ny`&X;PD(Ht?&|iPiL?D$e6GUujK(NtG9ih2>&%m~)EuX>()NzS@yZhyl`;-}DIDQ3QTH7wp;J+oZ zpS!=hx|7No>hP`AvwEYFEzLr5<|X8sB4wmd|H@Gsj6}aNf)6Dey?x?@S+%wCEw9vH!#5f9N&q9$om- z^__IsmHd=fIwkv2KMhX5)B3RFE^D;!hz-(m>(MT2#CCq8J^w1J?uP}fGSA|G$-7}` z50V|R>gZGS>ps4QwKd}Bm3m%_1se7XEmpzySL*R0r_^&stnGXvad73d&}riX6KRme z61T079<0LSn!Hks#5byo6I<-wlv>%qkGeS|bzc>JP#$=zI5v+xhS0o9avfX||MjJ4T<~Fw2yj0|7(k4f6A*Q`|2Kf(c2o98c&YB!v`;eT0 zJa+IxbGhxz`q#~C!ElPL&KcZ_h~uZ&@s-xy)oSqNi-+0L$=k#(Y--<6pacr@r&72Y9+G)GCa?kq7V$SKP%XQct%|E$5JaDuItT*8YSqf}ga@ zdM&Qcr`VKDo)f2~GHL&u-~{0cmSUo;;duiKQHxlqlU=x0YW+YAVI7=iubXd^#do@X zbGJ{!k|)SC|7Qu=?DySRBTpc+3$1@kpS9`(A_Rz7OBf2VQMnOMKr0U+fq2_j>+{ z+N?qiXWh8h&0lefbK^Y(&Qa~IarkWqaT(>MD!bJGu-OA}ji%Is$ZQ@X_=5wyTNBsbKZ}2hd*3kz0TopqVn_+^J;_)^1slzRA!QV4n zoHPh$WdjNvpBy&TzR5bnmQ`?wbKIXM`716Y`*>?r>q+whvTfhTe4OmcRaZ8#`)#tH zMeMrd&dwoJ?(>y#9r9T(QsO zPPvp*tZ|#^!3^1eZD;#EZ|s-td&yi^_`4(Ox@N;id6W%$5YO*^F)aB$^O@gwzW4LL zbbj>fPdneldAs%nz1i-NYgEHAXI<>Wvo3d-+kSpR?HxIAb-lM*v+zTwaSPXrc~`4z zA5u3xcAef=_rx9)I1$(JNiVhLSpO=scpvyv!#Ev%WTFDc$X7XL;6iZS5#!$sJrADd z7y05xlINqz_B{4|@pIPF?{@vC)F%IQA@v)(b=KJiSFLd!HC!wK!0`lQs0#Q6n@4JD$82 zfBI^6cOPG2g56&aBRs%|mLF=0k5}C2v%n?Q@FsYFmA$N-$=|`fs_t{|ay6yehT;M` z0XI$ju-GfCrv9&oACj-|yH#W{cuMps7o!Fy*@qk7ho4=&hJSS~TuVF=z5WB&o>bSf z0uN@+>li)ggAG>XCK|?|9HYn1mFPo)XT@HR!QBk5Pa2}wkmjo4f*?3#%7IL z@aP%S1NSdC!>nNpf#Vi+x_iQl{CP4x&uh1b6`5Z0Ewau3Uiun)K|UiE!d**n!!+zS z75cL9Vc&ni`oOm#D@m#N8QOF`R_jycb`98(T_h3(mnNEU0n`+ zj+*7DTT@GxkLr6Fz7>qIXD@l@mlW{Fycce+{;=l#LAkS)@TmSRv@TFu%7h&dAuS z%1vaEe>)?tT8|sN3fE;A7Tk*q(3a<{<8}tmZQw$=ES&5VIb8gmVvg>~e`Pq|rQBDE zJ5gAxN^4?O9&Z3XIECxqM|Lv)Z^mEDZsdQR>o>dD^lfBdj4wR;F1yG!4(LCvuAzCF z@mcYnvH6)g8-6uRvga1(ma~uEJ{9?nLXVXuo7czpY4YnEYNE&Nl{0$>zdm#ZZnE0* zY|@`=UBo78Bb$5J$E|b}rqDdwS|5F#=;HYG{C@p32l!e&_~W{*#fk=nXy&*=EDL{!HYv z@c1+FY#QW6XsNFq@yv~D`PPoYUT?|X zZQULNvCovg7@3|8Eiqy1D|}G>GV}GWH~0YmmOb7tKG^dEn3Fxq4$2M5q2zO~cX|%k zi}V39a4Y`x9p;xENju2T9&)tlbr|UT;w9??%%%+kYN}N!)h_1Y%k|L(*jU*Ae)-HQ zdsq?E7jn$OQOfu`X@V|{kV}|BHuxd@M6Po)KLLNHln>1Z+2Udndk(*LBfzLMNr2OGSHZMm0b9ClL2^Q!RME7$1#a0_|8nT)fSeYc5)BL@i6=u-z!y%~q@YWd%5 z*t*~_)r`?ne$^D-M({guf9iClPd=y@4%EJstib>pQA5MW8lwY^SO+{y@_stm+}W?7 zW=*Wfv*&?dq;GWcq3_Zkbr|-6>^>>}nJ;`@)@ zf0vZAmi$l*W(_pr3ZcTCq1y<9<@bzU##K$1M5idKG@GG<}!NR zl;n9Cd5>cu`JeCgcy>zf!mf{h0^jEd>p;}69RE%7;1#DMskcvS>A?#APS1BbS@xjs zna`8hHJCwNf3l|7q~BWCzKM*p1BEp*Ge+4hboyShLw0lfeAaHX4yoQvze>tcUN_HgpsV*cp0DK40K4Q}_LIt?7P`^ncK_Y!^SC)uM-uUVU4u@*f` zp1wu)@V({bx;+=kQy$N|{Cn_g{&UoQo=i{0h-rvjTf`5mig$gMdf4SA8Uy(As9)8do{a zb#GpW9KgQ*`he>_Z7yOh^_uL@DPK^(RIGxNnBnWD9o7-~?Ow88IX}ixe^qq_ z12Nh$b5w^^twnw8~yY`+|CpM1_R+#vG$1J;1nscb(Vt>U#w7uweIy84hoan>4jJ)=JBxAsPT zcgfZ#Jrar;`U~66YvgtTS&1Y1E1XDvj(^MF<~n*17LGdmr*1JF!5%LNS?~(qO_T5Q z(|<$$opYLBw&Dlkerw`<>%fupK;PB6n)AMg;4gH%b|X2vj-PWn9ppbIab$Pz^5}=8 zM_{j-{>jJr6XZJ$lG`<|wVy0beoGwq9e&2UdOm+wtk0*p(^{=xTBcWCjn4EL%bK2@ zX~2CAi(59i-<6(eaoo$@{0w`rim?l8bE?zn+_Nr{LvGV4ocMg$dW5@}=J+@jc7CaG z37n+QGq#LLlfLBE!LAP|F3RyF1x} zJ3HC&SE+lu*tniS_Z-;AJ(PZm0_A0S|U z13lR6{3i%AB>F1@&`Q3u?B z7e_C=sHF@JP3##H{Uu8AV!>`U+1+t|^Z+|nxr~hQgQ{K|=kn_hvS;wbz|_;cr#e}i zJy{2b)7NN3kKg*1AMyi#Yb@YyUWf4$rr5#>KGC4u*VJ9V(|bT{DsD)<_KIGkZ}n;B zd+09X@Hm_CA$(1oYwi3`>~juAJ0#{Afgum!(GGg{8Vsu`ZmQ^Cmee_A)9wkEE1T5+ z`VxJf{C?w}*!LJ;B(YWRBIHcYCibl%E+`(#VJ+LeFx@~NNR>SbSw`Lo*7oxJ)48_u5zPKMmX&D0-YsN}r zg;SBox&Z^K#2!^^-P@GkZ{z=L_FVO6JllPpZ1{Pc2=(-v+3q=5Bs`{Dn-)5sdyZji zSToizuX=%Y>y~qNfZvmPd|q)Z@i)G9x2Hg#?@scQg3rBxu9fe>jqDkJMeO^;ZzgNm z#h=JaeM&Yib`O`a=j6S8li%D(FV7)2S9q>Focm7q^FXI@4V$DVVz!TOxAO;ViWt%w zR9g3=mq{icm(7Za_@5P=j%?U{uHp~zXUp~C9{k#Z4>=|NUHjPo+3AxL$gE4j`KiOd zdiB5>;Rmji!wWxQOw8PiLr|)nEJF|QT5I0VV61KNCz9zOOU9q3`p^F8d9 z*eQdBWw3y30)Noa^@r8mWYza!Y;bit&~qW%ewt@c^Em|jSRt-m`H=o44@58O*xTw) zVqAXzj`!>f{T6wKYize4^@^{<4S$FyVNWKw#9F!2S$_S>uh5^!A@IRQ)bvDO@G5__ zu^(;^+elUZYKvU2;%BP?7_?Tk*^5COnI0Hc9@rOKmJQK?8Fo(}n^drCOUU*jGI5eQ zUc|OFztd+2x_{cvjyHF0=ec8u$B+{Au~^Oirb+Z&^P1lJ(ZU z&1_LyOg=#8+j7TMwKsit@%!Laqx53-*?(8lDK8AWnzm16bNy@d{s(d;^mq+>&rhoC zc%NNU|2yIOz2BneKY)o_Z$`*x?2UMu+>1Wig;*fl=Dt?Zoh@&grw=@@`)lG~&3u>N zC((?^jh}pC zf@ddvvC?sL;;5I{_m?_7Gau-=hm*pWs9vL16(%43YSWTS>B#l2^;K~r|G&qYRNlbO z-{Rai@%8S3XTnFsGW9!+lbmCYS5qG3BL?mGs?hv z^wsI^!H3V2I675^dM$#3LKck^W{<*xULFU6)+{!uPpmQ8;k zN1^5t?h`#s)<5#GzTEniKdmq46Muu(!1J&AAKjiE!x#Jnc4gnMtA3$hr|*)DRo0C) z^m>IluVHaqeUDfTzq}Fra{CH)YgEUK$71uLPNFWqIU--y5C5#fO6y{Vax0mdBL9_l z=og>5yH=3zL2}$6Ct>FoKF(gMGvkU!KdzSUD zbb9x`%WkM$T}LK&t1rCPIxO~W!$KRY$m`+<;chRwcQNs>|IfJZS!)uGXhz=4=&Q5N z`+DaW@&x4`cB${FPSu*wr*B%h>L-em<p#TlIwepKlL6ym0nwX&FDqa!Y}UH{fyl& z?=;5ul40KsKd0v**QW=y>)4g+>APGx9HgY5!3WJ@0X_We_9gI>z@;NLVcVjwR;Jdg zWc!M7{GbhLjO1D)kC3L!+41!BIO|vgFG;SW4=&o^-&CTe5;r8*Gqg~{Tn6S1TN&YB zmHL2Xm-74RK(gLs@+0+#Dfm_4^F+Qj<9ns3pU0Kz_B9=1_tn)E(R%>bugX^`<%Ki# zH|ZR4(be)>>e{-!ky~oJ@z2M;%AbGyZ=H>g+wbjBvd#aW6a)8Nh97p0``!F~e$Zz! z&W*9KGQd)tjYd@@@LgFIl}<8Ne(%=>ZocIp#v$hlgV;4<0# zuXdv6ZXM^P+{V_n@SOXfu@5~QA!-69$?yj2&T4DX^z-r-Z*(g0{`?2JzHv7EUC&MS zLyn?v{&u*OK7-jV*I)1a;^1tn_Z(^ZIWg+{oq^c5YW8LLDE!mdHeI&}zDAsDoxfM| z<+odd;GmT)_79LREW^$R2Qzv=;In1cg;a}k({nL!YFQ(exz4;-JmYIPc0cN3aI3y1 zKc?2Qr5-SqY<}ZWYYMwxxzBh%^wG=vO<{OZ1w(g^XQ9#sVJ*Us3)( z_6G_7z6gC&YnH@$S&Z8Oc;e)bg>eE%BV&97oN<&~oETNzx4GedUB@)pN#GK9yI z#;rMc&uN%XxzXO#_}$g*)&jOaaH8^TIaPV$T;Go9S<@rtn+Sgx_A^cohHloYT5i11 z2QT&>8PWr?A!f)1UXz=OxzWGI+O!JCWaCqxcGkl~V?Uv3_ZB$y4BZ{V0jhLsfqv&+ z$hvhbYC)QOy;0at56)30XO}xq1{cVDx75=koBquAi9Angu!F%pHDRXO|hAApM3E%dpt#MSMU?s=J@Cf zJK5qp*iyAv+xRhyF0p1@-pP`P#I&F{XYXa00PG(dT^2tdmRVW%x{Wt(7=(DUtuCwKC+t!4~whEv4~m-etVJC)UeWsdEdC zw>pOuKAift1QSc@VT%1?e7H&lZz6o6Ztuj6uZp1`aqn--d+U|U=PJ))`}pH&_@|%w zYR9|{=fb;!QS{)qb=LrVz`zNcFqF0&T9ZHBhEa}wm92)+1g|;r(gmH$FJ@Qy4GGsV ztrLIntxD@jUA`{%3Tfe^^ot)^k&^l{8@4x`*Pf7O}+ug z<#x8z+LBiL?b_$m3qNl^L$>pDc1v85x5VuEoz`;CJM19;(W9}dA5L&gTI_!{{N6G4 zuFf``==u@&;kFe!f2N1@uh^xC<@l-a^0jR0R`azLex3^Q-terwUuR22Y?vOk@cL_F z%&NNiIxba)f0~~L!@OS2;7u^zu)CLwJ>e;Xe5a~wR^>D+v2OCqTE?N=OK0TR6OL$R zKa?C-u{gzh^0;*zqbA;d^bjsjwXR0a7M?W?BOH*|EZ2*lFZu<46~}T)E^V`X0v~Kx zygrF@IL*Gy;AKp}cA|Ip0H3Y*0yP2dr5*d3=&Ms%kLxHtFW_^9JZ&)|Mrzyl3im%a zUbS89iSIV9q~q3_G)UevWB!H9JL${&-8b2Sza)EUCN<>g*ll!RCA&T4JFEE1Wb*>g z7kMo8g~|RI2`?exx}_QZ&u)L8OpbdVA;WB5d53lRe7dvOdT<{3@&EbvcZ!S-m1Mp7 zqV?N-;x42%`CUlP7d}Zxo_7CuNTV+}kNIwp^%fZ(dEPxdO9si+3V&}V`y0O7DR;xz zFU60zQeO9de#67^Ew|g7_A0h~^qc%6-&^+_d4E97@LOUm7{wO-8y7qv*1gU=xlZ7a zBW(R7ZW5oO#1E|QBn!dav4>uFZ;cxJ%jRWx44Hi!sU0`;y?H$ji)$D_6sw z*VBbAZ!c;>VvUQO@3`lh;}4Co|9!W4-mi9YdRtsbR{42p{0Z^6F@gU!uhqv$KD?@y zxjY4jXp1ky4n{f2wthR6v zDyPw-ga77S_!Mxe8lGrD=DR&!$XT}0wSs%eA56RDuEi1q@Z5$TFwv``dI??!4o6)d zupYht%i*^=x%IzhjV`8*M};rJ@2s92xS>47!=H9m^V=rH0d4+HZM$6LUKp`^ov^0$ zij4yk>gCV1Tt6RyqsejQ!NVTMd9fE_CjKq00o7CZbHRmblhq^cVBgo1@pa^ud{6Sf z!~elQNJk!UAGedi8yr`&qvGKG;ct`kU36qMn>a`=PasDt-o+c?FJ5T;+vaK( zoMXm4t|m*Hp10mwcg7#!*F4!7yFK zq3KoTpYJbpFZ5n z-gD(7E@KleCwFW^mjlMX$Z^Hf8Rk9Wg9+E4@;vfFg}g+apI^b9O_6^m$I%aDHCqvT zfwnH8yJGh)pM8dG2Ckl)`^a7Pe#1RF@F;^tT{FH*I~ZPO-;o(6h0BHeT*&h`e@jZgwL2;#SSy5_9wUi}^US?DF~M zhCKK2!vpsem!@OMJWQxN-Z`7qx|5HElOwO0#OrD1dobWv`RHtP{uGjL9zPlRlj z-`n4=*c!OA`(H*UhM$o?_4fgCvBEP<-lqqv9M`?_uXrel-AXIPz|&+e#-upgP z{l4cCx5)ogW`Ee}akOV~A?ZVXmTnafkjr?!SIm`juQe`W`n1C9nCBgSls+5d(1$74 zoio>TG)?$y)B9cfUfNTv9J6*UpqFZv)ATQl1sQ`~~26X*|uo^W|1nIZxEGH*g&0 z*tKc?jC^45fOB@f#EHno)H$rZgs}vMn&b^)ZWY{(;{!!KR3FrVL_qdX-h3*dHd)0OGVtx5XE*4JAfg9AD38Z~pc$g{;b9Yw~!a6iBNR5Em~ z>(IAdKP7MGDzN{+)0dO8ntSMDXP1%xBTnmNORnlDZ zn9W)X+VK3Tr_ICN=I?g8=$wJ2FW^@VKf(@JKgo6v4)~m$+6X*3uX?6!{FMuS#;@iN zz!Gt(qXdLE~-=jQFa2w(o8sss!h&#k05!=E1Gkud14rI!INEdLSEl0y7i*=^6SJM~F`(@)?pRD+W@9CP{# z+}n8q`-B^&LB5lE*Blq4qV}}O=GOU4nfyW$Unc#>Q^ZT+0A%vT;8sMXV}0+ ztZbuu>LN;OLGM{GRdLEH&oP5HF^MbH-Un;iW&U79xqf1W{8&vaoWnKJF?8*4*O_+{ zS!b8@4o{nnuR6wV&zj&g1a?t-&^(dN((B?|*^fIqS{pw7*Fj^*qxrbn*@4d6--@Jlhg;UGbZS-z=izi^7hR`@nwWXJh}k=;M=)^Sxg0 z&9PT_45{H>7P{A?=~4JZ1MI|%V~D)O>w3Dh2cP6CzsE5Vx6QoRSswmW>^XH7j(~Wj zCjVG@nEkNNWj5xXmRVb-jQc_IyOrLr_ueJu4~Hv>kbU`*A$kTNd|c+-mL_o|ffw=mgJM3mqWiCwWeF6D172Tut`H`B|TP4L(NZzLV!F zj6>8vFTTpySo0#k*h63N{PO{R$_6qwU|yD!%VXl&Y;p0!PGgqr>b2C}FR;$`*8aus zKk{3?n?8Hx7W%%0o!!pvmNUqmqdmF7m7L|m~8bNxdOg@#y`yD7t*wA&-h#1Te(6!0FO_>=~kaq z;HtGRC8w~P$b}AC16p`H75GpQ{Se$ocfMib-FRu#*u*+HKu#;)>tyh_rnn>eMK*83 z=g_-(3g@KnfHe%?D!AaQ;I`BJxwd<1$a6I0Ju0#8)s5ezdw_2=)>ymc*fU(Xg!`Cq z#L^nFKKmNG!S+qURPgP)e#{UK*(&*&_2h7z3^v7*{ogVF?rX6*KHl6NZ|*`5_Tp*6 zF7nA&tO3@n&}Z*=^Ji-RqX$6Ohpl*?d47M`V|*fZJNzc=Y-+QKgL3&W#WMV`Bgl0R zI~eO?_=Vvk$;EYJgy7yrUSKWzbSfY9Lbm=~HvSYGak4&$Q&sl(Tnv%+zyP+u6RyF( z;?E4iJNofY%C3I}XWDF@?K79;h>LT@(6|WYW!CQN+5am7M^a04rb>&pJ#{^w!((%Rg`tuL4&tDfOh?niJl*zZHV~x$Rp6dv& z^Nf4d*o+y2z)1OHsrsaG#$CeQtDg#s>Gf<2T<=Kd{k&@)?srGhw=eqpFk`foKNGwR z`*oxN@;T@?Q|h|T`YYM{t8w~+arFM`--%EEY#z*egH+s4*qZ?KF)^yl&DqGFR37pXy&{8X2!_Uk4BS~(# zA|{Hxs4DcJq8CCPhpqIT!uplrCPbZScMsgsyk}%BdNqX)FhnN0pSi~xta_b3Q1}cH zd$+{pGkAOBH_!nwaMZGn@xf|aV8{Hm27I8k!92-zW>x23&Q8sHwv$E7w}2ci@PD=; z!+p)fa=~FM&xbc$%%&Wq8)|!U_OEptTYla@kzZ>>lN>hKx0B54(PaM!vVRmgPX2#} zb@Fa{c9D4)^qoZh7V>{8bgD)E7e8&x+2hP-N1EefeIB|He$NqiTL+wf(lytyk%`P4 z#U9qpaSs^|UCX{B|NAbSLhheGlva=d9Lt0Ym+&US_eq=hs_?{SaESVx?_@Sq?OEFS z79SMGhF1_cM_XU;p3UAn{$afTcRKwr=+<>=H14!t?jyKU_x_uG$i;>?l8MXNjYE2k zf6Y38my*NQGJJ%*_e0O;K9ch+GjB(+3+=b$f?(dWFj6&3X_0$8oZf!fy`1RT+SZ)~ z?)M+q>^MH>9LIYNzLnfzny^+>jA!Yjq1yw-B-Xb+wj%bJ zTg=z)wSGoFCD>H;8oWK+?@4v6L-Kmj8@{lgTQ-J|B)6L_BV#8%>|V`Hzu(vVKXNj` z<2=sXMPA)nk#@iZ@cN2#JX`GJyo$c*-H~19InFlMfeqIEE|2p$#C=^Geq_k*edf!$ zu-_cq=zQ1kAGW*iBEIW7$2yLVzs>CuauB}3Qs--sZ824<`+FYSx4>)Em}O6i>8|y= z2c5$`pZI{!@1%cl7kGFD_L{9XRx5pXwIgE7z^mjC(<*EEdU3#r=MCP(TDD~DQF`za zzn(1WL6An^>++a=yV-{09>(4NrZxH3ow=vr%a8o2v-w$dLeIk4o)8Pti_)5#MQ&05 ziXJtAh2Q7)sL5hq$}iDvH4}NvPbGB0p>85O7B4tz(uaTR`N*680qIyabKXbv#26jP zzMSA#_6yI~=+WTVc(FYo#jA**^;B>B|ttKLIt#xY99SN_T0UinCA zwSKPrks|8dn?B$4XY%D(RRMD(^s@y`D<|-`>Q{AZf}TUzwhk#{ixkp zC$^ns&z&oa^&+05$zH3SDbzY=JAF6&p`CIQXOeHeP+@O|q088bYuJ6YENLIRei?na zflO`0@5dLa!^H;hdB*h?YpY%9@@yB9jac99>6e!NhwM*~pCR+rFuzmAOWj(^jrV-- zW!?)cZjG@#RbCI@qK|Gh)bZqFbS`|bA!8f7#$~UW4?5MP3+|!IT`tH(A`c7RaXsU< z(YW9eC9y%0OG|p@bo-60paXD{t`DEc?4aKjFPcZPdaVC1B-ab*#C-C_{^xpKX7Wwx z(w`VZ_o)9-SN5&_=^uReu$SpU%&(*F+RJ@svFFLXh7YmiO>*KpM?S<~xXW*!q-XT& zAI@bz&o&O8BkpH4d%NNdxfj<{Uzb)p*O+reoUqEcjkwR{Pj+(td?r_y7T;t%zUue% zh#!;!Yn!qbjL2OkzFzBf{^tk!xP8R#<0jIB$@}Ca`8*@{!3Hlfe<6cQr=y$8pB|Sog5(558kem-}t(<&yh-NiJf{ohOyfgU6YL{3bfG z#Cwa$04`D%eaqyFs^Yse3%Mh}#9+TY0J@6D_E9;O@N%M8jdoe{Mxe4dSD z_Eg{5&8CYFKYRU{pW|F>$@esWWH%pBez&H+ss-b1lb`x#GBmE%WtN|!zB!`@*;Sw5 zNcinmcHp4%?(zF;)ejuf6A2bs!M{tmz|q?@-_H*{RV<;twR)L*iX18aVIKTjK1JmK_)kYj@(!ol-tzF*X;oc$BL8#1xp|A$_~%fhAGNY00h1|Lw<1gw0 z)PEiPD;=UM`XMEK4by~qA2+wL9`yM?z08K#>^*$j=z%wG|4+Tq`vcd3ndV~YQoqow zh06uk>ACGw^-G_?$mkRQD2YES_kP-`UyIAW+w%mDxt=dG!|$`tL0!#P@EsE_SX%8p zvQU*L&9~q~ZWUie50#4XihZ-@k@=A6x-nb!p)n)d$B~11Z*|8r9s4#pdCz!~r-*xw zH*O1jSNv4NRq2t7uj`K%d*F9&ejLdCO=C;a`C`ShKNei3A* zp^sVR5dZ6ZV*z*U;&@B_{&3$vmL8no{$t;lc)l;aOs?twQvSa6t-=S(A~&<#`K$>U z->-|SF208j-RC#Xae`~=f1Vb>kFj`C?vxI@0@2|mhg z#)`}zbeNmPA~G)Tw@2B zfZt{8ep+bW5}iFUWcEG&g7pL^EUVz6s!eIZ(bMtfK6(!x|4VD1*Cq5}v2kDOHFRUK zW4`xK`i1A^)2YA7PGWOT3R!Ue73@>Qvc2YG$?sg#_s2f={N!q(Bl#@$VS#O=%-Uid z>EfK1;Jn@VsWrfN3bG9ADQm9NPX{KQtKxM5JscO0s@1FNYm(3L>-g|h*UXoPTo{)l z$k{x(l6Cs-s`sy5KsNN!D)fHI)D@O$yUVk@>K~E?PrG3r`5e)!J3H0A?Qp+??7!N8 zq>osaYmi>_%;qoZuIyEphGKj?>v5iWscS|obBynw=>LIp9YYqDvpXmK%;A2H^?8kK zj*2JrN*ck(h~Cd_y#^-qqG?(mJ2Dai)TAznGlCxU-Y3w|m*Z>{Zu#+uBaH zCgDjdeLuU8{5p<%&fjz}Fw~xJnzL_o8mk`WBhafI?ropfP4pmp)OEh<^-h@KL*hri z_$)oG(Syb3yO*oI-oY1<+p&jaTJ(A+<7ehDxTx2N8iUZSe24o#l}uhtm#s6!6>Q-} z(d}4~8^I=Eo5A&$qPwp>sOz@2Y zn~EB8HZVVq3?1`2dGMWvarp8N*g|7{nBy4Zu*kSYe1B}%0_!3DO+Bs=Yu&Pteb*GP zxA`&?_y(g_ zBH|gpOJbR{);#IeTAWSqf>*hcOmBQsZz${1+;?Hg{1=!?ey(SlGgspAZjIoH&zm2* zUA*vFEYst=aIAd9+9M}Ykx#F!XGdoO2Nw%PyuF3&?}R1e&gODF-I!q1vq#)>61_X= zVdHYSv3P`id<~xg=DpwfHX6U3ukrVv;ww5&&+{&dXEy(f-XxE{FV~bN%zKZ&@!Pxmt@N9d;tyoZJY~*vs(X z_dK9hrV@LY#rj2u(k}HhGjxR<6_HQVH>9h3r_l?w4tewvg)vnx;(y~qpx%_tcoN0~w_xp76pX`-N#?N!y z_=);+_0iUXy0xO%V@%|U15+xk0fn4(lRYc1cK_$7O}pZs@$lH_>&-nJFo_M*#q5^8 z9jQUim%r>;$o@&s8MALWydL{Rrw}h!*UCZT`;FrW%t7;ALKIzH~WZtjLV&D1z%jP(dZ3oz;RG&2d(#PblOA@*17h2*B0OAcr-bl zM0MTU@Qs)3_w>`wx<~c9gy&bcvp=KXfZsUA@r#zmMV28H0Py z>Nz>_kX{H6^C#6L6$fKY!$aAxHb-uuxJ>Qox!&)8hfKPD^*ip-f!AH^_^>l@E7_`$ z`;gUtF#qN`YR|JNJbOL+%R#acF>mJcqx}9DW2o*pgD+*fKO)b5J81q#LT`-oVq+8b zvgZB5-+FbW)qIUTWJZ6j#79YbyydWrtjBz}$p32kKxV_n$G&8x-jH=ZOvHyp!+8rb z+V5IwpfmVK^v8`p*U>YgrPoj`@DzSV8g}?B^d+M&#cFzNFWA)U83H%j&WEyg1SS-F zbEF9}J>p&my+&?ezWM$Vo$lrfTq}`pu}XIhTI@WH|Iq8h*{DK}M4dwHAywV&eB$^* z&aP?Sit1Le<$CLxegl;=#k%;YtL<4lAn(`Q)T+c?|_Uq0NTyX3e*MW`XPthMT zlH>?eaA*SO3=C_*3v`?uewqA>UyDJ#8+Pm0CLdJUYo987gvLJhw#zYljqmp)-|HDZ zslO-KKzK;#KsF$UwbmLj=Dp}Aw}g(V$FHycNBw-rj{HZq$F;{@d+Zf+?3jDed|O*r z^JVl(%!BhY^{vj(>F;+|-t~KXgZ{45kIz<@AIqyxiEY2d*S@pUD}Oc+?=8MpUeKNz z*L@^68S$PNn62;jal!}BPKICT@ln~1t4e<}aa=z3hPA}K^|1S6;<=JOX79iZ^%qqC zn!yaq5%yK=n@%v#;Y%!aoZ#M1B*!rI&-Su+j)?UZ@wryB1^6}Tbo0?7Um5ukyQRZk z{meHAo7l@%1V3jj-P`;&+e`=6(H;EXas!(;V{Uet-&hmmJR|R)xsPH6jF4|M%=Y!3 zLKjDT9yx(t`ZMYN#$ESh@57Cvw`hK*c_uI2J!K}zPhd?=_rJ_<7J7!I?yc>5L-0z(U7i*0we~x)DyJ*Im}@ck_MsNY7+XjheNm zPu@6sTIQZ77jM-0W$kk!*7motiGDU?xX`0FlXdy4iZ!cOO+)J%pR1E8)WB5q;QOH#Xn&{P&pG zTiL*S*qG-#*|_sWU5WmKsh7V!ASV+0{Mx@Y=||qhi0DD=gIyftFGcUH*biXxO}gWp zj%*YCftx3}y=;z7$)D%?>@-%t*lBLC9>@jO_VB;(HL~`%I?LzX&}r1~>5S^Ho-cpU zcX6XH{#j=T?|A58eFkq)vlczf0$qI}!HhWv&&gLvOUdJ2Xh3@+pvJ;q4;Caz2FZUc#!`&hy*<0ky`_Zc{diE^$ntT2u z-xn_!k3Mo1zW#{cx9I<Ui?4|Jbcx&mxxF&-c;$Aw}*tFr;C>g9l}6$;v5e z1}^0zhzYXbQ1QSRv$JJXl_7Esz%rzHvSzcHviNv-p-<+2NIb6S!25 z^YeeY{p2EMXwZ*7b2R%)-By3*Y*oBCAGo9nC%l_%I%$FQ|WOr3e{?m2MMp-z$A-Wk~Uey7s^ z6rby9{sHV-AEE)c|KO8k_a5VlM_q_@B7dCpuTS>fj(&K#9uXN{N?KywYj_RZY6;n` zShwIe(Py>X%oau7X{j+?XdPHcZo?l4c@DoPu(9MGS9rdS?0xJJxYRi!wmi}Q7m+16 zWmb5F^C;5j})!V#L^ssdaYL0mWWt>XI)dHz$*S+|L@nCu7IE zxreIf3QTf|HDSO#$Sr4lwcMT{QJ+=nSzpStWqhFA-qf*gV0+hZ)#BkwY{c1D>)(nx zOE#clKawh6F#0r9*!eabbs%IOA0=Y5(d%$f)Gv+Vvy73?TplmA9qzI33j9)i5i1wc z$#co_-JbJqYY9$YJ!+b-vA)R@Bu5q;b@*?7ihX;0um4^;FE>%#PM_{JZx8wIy~f8L z8$;^$D_6pp0|$&gkAYJ}4&oR`V3|jM%PaX_;=qARm2Z$SuhZrj4=uGHF<1ApSI_fP z{C1CdKKLWt*r=srSK;>=?sV-Ocs`z4SDu!d(;jj$N*~mrmpkPt)p;Z_XY@G9^o`E% z@r-JQN_E(UI3wbZ?D)sj0Kta!)UQPjvhMnU;b!y#pRT?$@}Fcbe~_*IUT0WuuHFs) zzwCZko*oldtAW4s-#U{|^A(;pe)sVm^khtX$eO-e=?rrnyrl5U++*gvX}}l+4p9BT zy?eGr{>DK|%gDpgp5Z7**uG_anc&O?_a~0!z88LzefW}it;^dFzj_J#anJ*LxbKHA5$olY`-(VZ#QE^^y8R)h{6@|=--^40zEIso(E0FK7OUz5iGI3h{v&thPQYBe>K(_$;LyMAZ8B$pK7? z30l|Fb2wDk?{qO=bTfbAWc9}CNK5;(rM1?XYt#r_&DSwDwVT8O(evUOzq#A%{c7R( zJEfj2HFSTef65&vKIjL#gw-HAH+m27(On?nzJtqW{y zwvFuS`Bl-gsyJ88&*^OWjNiA#q+8!)e~cOKOt(Kn z`{dWVwT{^>cq-T9EAGcn!I#SBJz_jxgTvF+HRd7m6HWIbZ&sDVZf$eT@+q?PkaOeg zt3m3E`g#8^=DsJEGTzrX-yu9*`c=8rI)19T-R&H^o&O?voVfqs$}V_RyzvbGh#UlV zga03OB~d%y^^v<+jeCgwXL7O{u`BL!I)SVn<@<}hAM1W#ErC@;o@&y1G2d7p>9b?K zewpll-e>d8Wx;mM^LgYg`{0Tj-~iFnyc-YGu^oOBYl%9iw8<;~titx!91S(#*=lpU z*BXvDQ(X878F5^s&)Y4Z>P;mMT0)*HV`4yD@!qrSS9iYtZTy`2 zcJrrpt)K&0+d;0cI$XW z<)vZ)f46SIiBM;dc8h1PU?0`r=jZX=w((sDV0jffrslV1kEB}I!dY{|@95^;qb}}d zvgYWy$5`ma(cQ!9WY2;lm$thPjw-)eWnT+*eK~ngb$YV=5p(Yx5yPs<%A#&St#3BM#^aP^o7l4L<~#Oa2%cBq zgd5)z2iS)|Oq=5_XKTfd;*FZ$=gZ`NhrY*Nmf$ZYFg(` zx}U7MukF4Q9JaM|X~c5`UOCS_2i6z+)&w^nhb9e>8L@7fM`qgI3qIKv^EBuC5xa^h z)0ds=B=@k;@4n>toH01u5jnKwzSHab_&$+q%~l$(Ir6^6K{mR*S)-nW{&#!yZTO?l z=nd>9_R-7eSS2va%gO#h$6EgWE;#ZFMCa zZPhRA8ThNtFpRK1n z`-=xQFox`xllhA`>$ltJFiU^7JZ8xk-t%XXl_o!cE#W7`oho6 z_rYH-Ru4+|a_dhz%Q$Qd`8T)Q{C>OdZZe01FL^$)KTD_jUNpDg^||i_r#jB5&OU_= zUS(`>cCvLa#EYzZdNgFcUo*F7v&*;B9qWhuLUtf>Q0_t9O19H|h;=jeB3tXehsgax z*UnrQPcEByPdx?Bh5c0uaZlwm_|8u2%e;GGPxuRa{dSJbMw~psHpLoH_ssgjr6X?Y z*P2V5(~>@gN zy^69}OV+;OeYRE|O}3R>54=K`%zfC$$UlbtU*=GMl^Vw6#MjKhH@#=f*q>q#yB4um z(>NdFdtY|X3+c}Bet($b2(tfWuSYspkNH*4-sQYav0bC?v(Na?xaaTzCw*^~`G=$C z=kQZ@2mVP;aC?f?t|5NS#JL$e-sJ_&{MB6Xb;)(~w=TuDm2G^2GhjaxWLSPJvsYI5 z_j%M*+UKLY|NDS@NOWYLYsGy=ZuU6${v~VQJkL4nS}>?$r92cn-4cT~9RqrkxAifs ztJg2o)m8NOY9G*3Rd1Q1X?|mmIB`~~XJPwByiWb6`}I4C9s?`y(+3FdQ`gJ2f*03A z-p6jD7l&X!7s5xkTjK(MU1=Qc*P8r4%^63Wn>1#u^rq;xb*ASU4;+SqA%Qubh1Tf@Vl~E&pSY$`f=$u(2c6|9(O-E z{C3x8&g2vt7uk>MD}21|v0!*y%}*1=bHZWE%UeXLRnSbN79q!vEQ2 z?)k?B>@7dbbLgi#$+sOjm;b9DND-Jz_&Rt(X`5pQT?njb3q4Rv(q|vdAx9|}oULa^ z1KX@S=i*p{yf%%&x{p1db)uvXt>4q-hzZytx!SDX_hGNKQ}|Et$r_x!lvgOl&pqOa zn%cGKHJssMSNF0#xCz0b&B=d74Mo>>ncLbGa6)l zEAH0s>J&O_{HkJ<`euGlSq&2$dDUEeuTwjK8?()P?-$En zPG9u1NN2gmL9c52yY*GL1Q7$I!!IEFXPM(m$;IvF&UM9bu~%xcpHV*S`~|sakoEA@ z;Uf&ZlQq{r zf!x87x_pE12XS`>ar}G3-@#=_!5!y6*5CzwdQdjiYS-az{rX@w^p#9|$OFux1z)J| z!tY(DF3CDlCd<9k>Tlj8A&;C**=m&yssOR*|a?Y(G=8 z(A_&YBh&NAf8@>P!nUY2*^cjk6I#PF2plzoulL}fHum`3y3wcqTw8uAlfO#gZ$<5wVC$)Be1cy!f`_M{^!Q!+UtD3V zcHqA3!>2o+4y)6PG5xGR`dh|Xz9;(OZCBa%`c)aV_qf1&t%>Y=t%}_c5zYywCaldcRjj<^BKv<>c7j$Ibcve8I7I{q?@Sl;78s z+&d2ci#NXekjn3RQPuN*aftW%=)dn5?_4D1cmGWFT`rVU-~FL?8&Wy`UH`x5*k#`N zkt*-}E{(AF_wml_kbBS7%D?BY<=^?WGXLY)zQ^JJmy7uD-{(IB{zKqD1pY(dKLq|m z;6DWZL*PFI{zKqD1pY(dKLq|m;6DWZL*V~w1ftYc<$$QfsPB^mD#%M~e)s_M{uAZ{ zGUEG}(YFe#49hQ6CF_^ z-ul(5;Bd}$Qt+r#90<`+vW)ZW2ciM&sg8VI~O+r611oMlR7QAfYj>ah#v!|gRI7z9wO6;)JooT4ic(4D6DCaym<9Ay>`7Uy=Kd?VJ zagdI86zDm8>E44d!hm^4MII7gXdu}Jv)7XW4McsZqwL7UOklv(HEjPj{!eA_LM_3@ zlXuw@;ihlX6Q(t!_CuQFSF<0%EpRyFXWoyKT&jUS6U*J*yBL9;7ODL+bwGv!2KzPq z1wx~$5!G+_bu7r}bFc{37(yZ9&-k_C!L1x5eb7E<*o-sFKcapBIdS>@Zo;iQ-to7e zW(`^*_c0NfgZVGxbVr6Gnj`e#FG3r6<>Kni6tFHBzds}s)dOk8i7oQ?e!o4wR|@^@ z$KN8IW>Ej&2$X{R2WYX=>kfkkX(mdWS`fze!jC-F8wQg}@T9L}sQ|9OiM>`@-W6IT z_8$;HTcVH6qN5>9hSObT?Y5B?VR3kKBx<^n&#ctGoE8tduI-%M*=3E(j;+tQ_Q0 z#BjV7_{q4*RGHf3+3yW|?0|oM6t}zlB>v5G%rpC?hlg!-ZHCP>b2NByextgNn9)h( zLE!7{e(aQ+@{2z$|#xnm}Ku^PU5c6Z;GGC@fcGK#ktlKE2F zFRTy8{7E^mg&6Qy_nOh(&YAAHzoolBdLu^M)4Tpg4OrPcR zPpXu>1S1;5#(Hgmh=j3_HK9XysaD(X^ZAK=hn1VRx(Hn;CBvw@yv-DBp!B|DZkcZ-^_|Em2GjbnEtqkDgMO4LR*6!!+G{sqwF=@bo6s|n zL3FD(H;~`ffoSyNs^UO<^xzlC$|Pb5vVK39F2rrv zW>cjR*iigK)U5_;bX49u+PtBb?8jxG%crD=c)gJI=AZ6y*}iTB95~Lx>i8>&MkuN_ zMNPT)X0g-2)h-0ImU5dj*e5%0Mm`viZ`4cV^{{ucVkW{79&okc|M;N4PMoViTyV<~ z(7!*Y%@VLvHB9krt0VI<)a8hdj!;u11B%qM`Ybtxn(R-7PS*uI_+jSVn%zTO$;o>D z!Em38nZkjakcvEqaT5n6&Mcl0Ba_!a?vRsR z2Tz&n+uSmb&;4-pOr(qvt}&-+1WS!p>wUY6D@Bfgv%ZiEMgl@nc>y0%vtLr>s7{nw z%tPY8ry9!F+|+xIVH?dh9&^IyzL?HNu)>gtWCVU{Fbp0AVKM$A8$(EigCpitSbqs(B=lyQ(X{y__mz$qt@UKixgKhat!*>&ewKyNoo@vYxqMwmVHQC2MJ%X4_m`GBR)t)e_Th5mSCDs9K?=Qc3`~)Yb?m>8B&6;qWFW_L78N;4@>I~WRv1VmyL@d@tk={qqT8B=t$j>?Fa=i#Z~Ed0YaU;ZiI(L#lLX z{L1@Pl9QBC2Vo_x-l4GEOax&yVhx2BXWy81#RO~z$Dp>kk0$e`XORNp(n-Bj|4nrX zJ%%ts9I5<^M)D657m}LV!yXmJGVR1nvbjs z@7T5i6-s8QMJP6R{qb8P68G4r;gdU(B_T+N-)Vc08$PnYlCd05oJLX~FVI0hgjc$) z?+jLvWvdB`O0~_mqxcP3dq<-;rNHth=Ffmd^^d*Jo&{a^GI|Q#n!@|W@_{lai{~G1 zEGkaT>^G+bl~sG0A;@kN2C-l-YK#)S;HFC%In-x#H<}!%^fYP-Rt2vYFqYEa>b$LJ z4T0WY-eMl+$veKul}>1H)F^ofc_IB9x{4%7_0V``nFv35PUnjdLyPgbAfOc z>NKM`vK+QJa!El@G;r_^_{Wp35-?z))a2fL6u*Uf%|S1w*6)mg-oV_A|1``})j7J<8*_rryb}k@|BEf1R(w$ZY6adwb{e z_or{!R%$#Ca4G?{2cmr1Bp5L1^Y!dIM5pV$FK4A3fCNaphMVC?f&`tq5udb;+*@03 zEOmP&T^{3M2dEQ&q4sIIsl(YCjjj5umu2uATy&$JHcj)jt$KLXx1RhrjLKgnrhyzf zT#`uF!F~$Di3wZ=(ZNG8=wImkbg~dl0k6RM=a7(PjC`a5Mp-qU!eA>rdEe+)2w)Gu=6-Edn^lr1_j~T}Jzbk?2Ih)}ZDyIbCU&~NO>hQoXZ?z75LMbEj_h@h zHYblP%igE$1w5_zH*NkI&pzqwKM@g-G3-5Tr%8qRYnszmopj>4X33s>4saK8@dhfA)4c7 zk(@IfBGOL3bXVdDzK<%K!=#o8B(%sKW+&^FBGg+-D|UzB)|zFm??n5ls9HAEe_m+y z9FnR&uk9+Qu8y={AaSc*I34Lx`16sU43#jjCUPtNegHcztUk63Yj>jI@dUQXdWuAi z0O=TzOkwQ?FrEuWqE?Dz>$>uy&C#Ol$$Z6Xr?3_m+EP%KC*}LJ z@VovQgLf5u$b`^4K8(hfbgCA1oFDw))T{eVu~d+->LQI=flL-`1MwoV7A1X=PRW&M z4S&^F_1D$vT59SXN;$Ss10WH7;a8bbOs?l-*?fF^j{*|O2W=SVH?+tkv1MDtmh1&@j`_cE@tF;F2 zgM$DgiNk>?zjHH#^euX?De}Ul;A!1{!T-n<%?;d}z+9F<)AdlitzRP0AS}L&Lz-1Vmq~ZHQtk9qy;48AG)*PYTlQ-BeH%ul#krFc~+@(vv+K( z6EmzVOIB)z@MA3Ui5}D%iQ1+VEN;o0Aw$=|oN+u)-T4yk@p~RR@5BZ+C1Qt#bsa)r z$V}|9xnzf)c>j)O!Z71egZ9WyrZFJJgJjg(V0;~8;vlVfMO&lhUIgYiN>my-R7M@q%=3s>T9B4VnylpWXDug6lK%5yrfaqX z8^scX=Oa|*o(xI+!zSeF;S5wKynok(zX^9mtpKN;#okN^G``g%0V2H)aDTpp)OQ?&9p{r&l4c&^86)0?G0c#Kjd^iBPfT<49pq5khq6k54(#}k{izl01i z>=V7R`SlJ9FD;M&Lrr$r!o)54^2ms62O?+1kx4h?QATwWM=Gxte&55&e)k$kd4Q~l zvUO$npI;WwyF@}<#{r&dFHfj5?q0CAvkciPQ%Mp}u&ti^`P70q(k*@nOT9ZOktqd0 zPWK4+{A=XKVRRLxh5n6kfN)a@hRCQsu&dhv2FX2EuZ^K{8ea|{w zeVq*Y4_%vTlK*c|Mt&E}P?J=`I!GwUk9nXvdiSX==m~f~CUx@tOthanMx|G8c(EL% zR>%HSbgh3h205&#?WQCGzvOej0MaK^MG2`_ePxf2@P|GyVIf6WUABII3%@1sbNH@U z_z*V*e!6(giN7I5#GeiTF{!m(;@&}z&_WB&3av#L)GV;^Dq7zp+)Q>&ZHim|mK4y%^ahx29)iiz)_0y{^-W+CsLL(^p9*BNEOxj9k6} z{`_xCZAl!A_MmAjdpLX5EqLyW$89O+Xt);hh95)wrK0)$?-RC;Z06&1lq84u$K(53 z#4%L9R?X64!U)T(S`pAz_FxsF13d9$;{*4alnh`1 z?-5PBm(u!AM1{hy6#zHckAKL!U9Y=-M}?z?FvL-vp_Igl?BF8~Cl*ln!E;LckL24F z4P!l>3Al+A^2+lF zGI>nHu{vX7Hx(3}a*O;Z^8gihWKR$A0u2BP3Jw32nO7GjFC6KK-&EJG_Uyw1zK8t2 z?PNQXJoH+b3yB4{`*{N;78qaTtVy;;dr1<#E6+q6vCajGQn1SAX(~{u>l+5$$?;gU zIYP^%^h3yg@3)7q{)t}zO>6DTCYCys0_*?vP?1@7)#Cs34PXvz$KTS9cFL8|m)bQm zM!_DhK8G_9UK%sQRv+UKn9%pP{$2$N#N3~x9@>t)b>{LECX|NQ>R;8up5fI7dmJtP zmiU5+fs4@{y67s!iFBut!~->QXZDf&}qGsP!n z8A^p6-dH>pgF)h5QXg8|4~Vnqhezq>I?NurAiolIV-NzmXjEZ`?fz%M6*1_u%SSy? z#&$b-F~NJ-c+oK*Nu>Qq*2!~~zRUHMqCeQe@SSM11e~|j!>bNvMD?YRf~i2n!L!gz zo+L`joFF2mOzY?$7S2V4ufK*Lojhlk!&RkzsE206Z|WxI4`;H|GwvRw^R61lFf$)| zvMHcHaK{`N{(E0*N|f#bEj#q|Tud75!$e{04p1G7Ci3<}h`Y4E%xy?yqy6_*&Fb{P zZt84@2Kq!G+ym~ScN}%rPKkw-r=eE2W27qNt_@NN0n|?4cin2l@cXiUuv+8v-r~EVG!a#M zLLGO{8yX}@es-gf#tnGQIP8>sCYN953BM@W-EU&*Pr-kyrM$sxO|-r+7y#Wu6ZO>o zVq{Xy8d}#1SDr`+W-_jPkY(pl_*b!qS*#a$roYA)WdD2x6HCq<-xbd!C8vcds4G|h zE5rpOKd{o;aPV-ME#)dm!4zksqa(-`um4H(%9BK>hA^Kcd#LHbYWP0M?A|ok(>K@d zqJ}{L3~I_M((k>+0E+sH#I7SPRjKZz z=W%TD5k%-O_g$mxBLFn1_77nXF{aVxVGy}3d&Te{$~wXh(Z^s`RzsLfr{U%Z zPYj)hBHK-#$N$diY^(JtP{GAWrXF(DXZ8Jn;rY!Dw|R%~g}O$m zO}LpTs+q+dZ$A#UDg%mdj&3V--{B-$;6Eof7~X*a^ajYOnbWg>Yp zhpC|22eY<}NKQ*kM-FIJ8}1ALrpE+AIyGj;LGBn<)sa@||D=@MiWCAerD~@z=$iu< zG+y5LGHDo_a|t`;Hq`IOLARxtNz5AiE6}d1dnGlFeDlv1Gax=h{P^4A{xsO-;Pftb z{|^rEf8v65%-leN6=#D4iIzq2KaC*;5*4CHPNEH7VgrNwrO4_Cv976aW)cfXZgkdm z-MIR-z8F(lDjvBUBqhoo@rM|8Tgc!=1!X;6xA%CiHS!`^YVEf?7~g|j8WT-C77U1E4z#gV@tib;*Qev zHG7Sb{$%)g&lizf& zG4$Z@DcTq3Dk(?xle-}M-JOxbLu(q_T>TIx*{Yrfevpeq3O5yT>cVLLd@+}SGLwSa z%F1axejY;}<1kny-YoJ`XjVz4*gHR|1t9(euS4SXu$(@npu(pTg+z4X*ne8tM~f1Z zL3gue#!Cx_Ttlzf$G$)XAh#(h4qeobae{TP;?PMNkkmecS;#6xwBLU>R}g=T3*7K= zJSZl;%4@w0VGVJHC~BGLgu*tWRM+mraNtjL1s{uS5X=1t{r6~^Lps*445#cneJ1Bm zHDSc&+`WjJ#qCvs;!eo~=Wlv1ujif<%#6Dl2v{HhKNF6T^dK$C$UW-e{Na%hd@d{L zI%9mTq-PBq1h!dUGg3)32S3WDy!Q0bmM#j<%5ORt=v2%G6Bjv1n%KK!qb{CaPI3lPoXgz6@0d#xA;e_qINCwoHKm#Ii^c370&}3RCUoox1xu` z0+lRd0MuZ!GW#(=>4+>3y^nt=dxMlg>d!$+?4_fcevfsLfKPH_EcUN6MgkU(R^FV1 z{B1Sd83w_OZgx%uN?~4(SVkwZDJhwC-}I~ahjF%IY0Jk~DPWD&TRTp{I5}bhZ1FH^ z$Lq)Xf|&3EVi*0v1c?6;lWyV*C6!M8BX%G5G>(AJhgVI$ABX*pa2f=9U1`k1LI6uz zg2aGOk+A#1kub6FEnV2B?FLF6UgUkul1X;T0M?0*Ccb_|>TwVQSJX}|>vsoi1VW>B zPIhA4BSr#!Zlu(Xzvn(Mv|wKgxtGTgZM8m|>cP$>&6$eU7#TfGO%F*-@629Yt9@%k-`Y;S9>ijfC-MuNJlsvz061V|N;sK9 z!{jnxwq+bpfz9wmG=r~e5+v5V&#%PsPv;x3Ll`{$ldj0&Ez^V+lrnBPGDUb28OP*Z{Kzfb$B%S{ z{~B);yj{T*ygp#%-x94wIV1L)!$w_PnX?1?$uZQg z_MWO%nwg;RLu*SpuEmog-t)+P&TN*2W0Xz^OqqF@SWAe?9~~m*xxCBBLS;ZekcxBy zFTn-@<|MAIl}(-Ki9<+d{ldYAQkJ49OgA%j4xyJ>Ol%cTih6iST^#$+Dud}OtlbDY zPBPh1**TQV!Xg&D)xN?!25S|U;{A_s2NoP~GS(uycQD*KncQ*t=$us0wbT7{GWz5c zT7P7XlKoTIrymt`DRSwpPNGwB^6C%T&DSrhz4Uf6U%sDG38xhO^4_&+gk!xmy(9Pi zcm*S*f&11)vrk!DZxdqYnHeCNTB@A^d@UO~8+@Y3`_i1j`_ye`^VbwTI(B?OJ}uy* zQB-uOHIR6TKUnixUL&w+kPVg(#vT3w4w^JvBh)TBFdV+sRbuRYi{|VghcE0XHu3#0 zZ>N?DSFkPHgitV{M=*|Tx6K!o??!(mvU?pFLaz>|uL@b(?pGi&=$;+Dx2{|M{j`7Y zl_q)S7ow;S4Yk)by3Y1RXH%U-cgZigW%f2+mvsWl!FCu|Yy(P!LTb0BN@t@%*9Vza zhFSy&VHo?QEuMY*t;Bp}14CNm0Q=6S*wpyo>1saN5guw_BA?Gr&F=`eokd zpsQQ=@h)Jfa#P2m%S#Jg44zzqR_feNidZjF(QBj|&rkQ?vFpb#0{?t zCbLKE&u*QHESr36(2860oX)u`tvk_y;()w4blzut%H6pkSGDQ~o}nHOt4}P_X{^cO~X9 zvu-?oBd)|g&2`WPd9pxI@U;@SbybBjFnhZCj^_$^aznmsos5Jpj1t-yR7pk5sH}#g zhSPj#T}#|2n~HbDYGr$VgouZfwZ#*?0l4`gH4kG)^H1*d!CGf{h+W2?-yUAPmpzqb_Et+5x9hHrR)duit%&h)wt;#8yuH`w%(8293$`VX z#J6kr36ZcM-e(@X=q9ayQEz&)__G1u*hMYOt(o{w67_4u)ZR@EppQ&#^91!2?E=2} zt--SX02$@?dMoV<$OqABooP$Q@&`6m7XwPQBb*GvnTgJIyv)psgKhj0@fVQ`=;dQh zdIym7M&yhj|0a)-5aTibwzePFIa|WBZQE*UE957&10SS@5G-WYbGI{Bn#N4>oNYy-7v7-K3S*j;-(Gk?i>ik6^8?op!D2wb>_S&dG;`&FJ zvPB5k9ciuU?FD_E`EWkIHuPLVmE8Y46GN5vwn*+etEgj1BjBik0c*??le9k&AB%!z z$xzO(7NxAT+U(}c(4L3k(3f6(Mm=b${}99Z3V5CGD^CU3xf<|IQWynMz{x>Ak1yEF zp!Ck>j6N}^N0@UYb{n3VrXmweuZ-F?%R+n+LlJ1RhSzxp_C$r&vDA1M2MM`VojqME zP0pg?EiMDON(_1K^S(YEq1O%C8m_Tix`hg=Om!Nzdn>uJAuQ99-7JHIlFT@{lO?K- z+eG#ngP)#2U_kIEJHa-k^^I283tfa*ioQb!(+i!U2qYcW?x&6rYEwG3qPr0e0fbIB zK)l(bo>yAcJa_>iobI>|uJAT?vIpJl>PU3?F5Zeje$~v!c{#~HS+l#A=_4G*6GyHD zpVmSY{j$%Y6I>OqviZUaVtQVMv^zqRtJfQLS2uW%A$+QbbEGtKLFb=gE$>R#>3*%S zBJRHgVIz%(WiJEEnvPB{f@$m_tXQ5{6*=E+!ML!xC4b#5<)~=LqqWz|Ji@~Q&K+qc zXiY0tjWSxoTdEa3laJ%AD!dm5E{UducNAvvjv@L=d~~#&<`4tTzD%P*ZjgAHLQ<>G zibh>Y7q-)=mSbg0|{RFp|~F!h$GWE zHVs2|K50qUp84r{AZ{du$w*)o`f-vBkZm<5x`JZ+U-oIsm+P-ZSB`<(>OVjpd1Q#; z=p=QOl=_15uqVcl*V=yDxO^KQlP?tke_oBHT**p?V+RuwAqtZ|_Ydg8sMlSH+9AY} zZv{bFj7xS2Q9Qi};U+yVz6+gKv53*n--ncWC*a-0F?qq~pXteB6ggj$tlSR>ZC$!g z9C7*i!7X@N8hc?kRz zI}D# zusySbA?|=-0*otG(mwj#M@+Kcd7Kffk*d`j9dWoB1E9G+L`tCBXVP5y;L-1e9j^Og zv0^iT0vly3w z8DOr~#e6Q%bVsh!6sSbuTx+c(qVF51y#^hz7JL|KvK$rFa92=&JFsM)g>J?_Avp!A zaXw^lyX{_hveoJ|pO|U4VoYWA_`hHt>ejy@e@uH7Z;se3l->b~#uVPV1%9&NmhVaj zk|cyRbH(N6-fAyl@o?a$>$($vp+U}GYZ7~ifw96>_$fP|G|5^_Vfn6`Z=orHHB)6n z{)`$?`>TJ1r=CxwR6uA}x>zymI-#V~!_i)4@)NwYiFwyiYTQOE(?jIEA1EZg;m&l( zpSN2)b68!{ntPco)QUP#jhMD3tDFiq?1uMi8_9=>90M`LBJ~VV<|DIgjYsxW%@=;u zSB5cIX8^^ns@M1l@wlIlk-3j?RABiIIJ`siOSC=NjM@B@PD-J7Ce}q7N)IGzPZ}$E zWjLYlCjr8H(1$bg%G-P-TV>ve8|nIt^6YemFoYxV9phP@n$=%l;%M;8k`AP!#|l_n z9$o&n8}zIJuhAbcKP8UUx^jC$^-_@%QslVPR3_?@G}Pbk<-(M+&X`pH$&nFFuHo9v zx8Vbl^yig2*t7Ni*4B5rp}{}(7U9Ke8=5-qC&^zAe_9Hc-Tm&1xB0t6&ekK(HoPD| z+ar+FfO31$2^5yp7qvm-um*I48grWV6BNwtrPL=(+L*x;Oe5ra9vvWkJK0G@9#3G* zdh3cwpCe2Xx}|?ij_aC9n9tYmfr-i_n#qiD_EW zgS#lMfDN|wDO}F_*ocE}lv?*u%(`BAvb3fp*{&+#MP$z%#m49!swAaooOLT+VKt{k zShTc(oq>G(m*)9vX>%?L%D@kY${Mqnejs0K-Tdou0Cx*dV3V{saG-!`wp z55f`*1H@@Q+He6j2d8ArC|*cp(G@5~yXDbC!fq&YjROw6IlgjY!M$y{(2fK$q2^pM zB?YcHzUUnK^rKjU&w&VX2npPU08%Lme}-HT zVApEAGDODHURJh&w}j=hvAN%8+w*wW_^?EpjU27_3Q$Frvqbk;R!l5u)P$x*Je4w1 z4rc-A+FE36BqVDhpg71ghTp1O)ZY1T(~ zQcgj~z_UyXsm{iIoxx*$Q-uq)h6{Y>8(DPZEVrI$W8NF5?*y$d@hp_hyz*!W8^11_ zzsTZ%c{7c!GiTE1kZjD%%>y!dJl>1Mz>?eV?mLl(m`tm6m#ZQi$)xe{+_D{qrTt7DTZ!!>xbHhEV#i13Lz&_s1O^OttRo)sgUi`*9akH> z9rno}Rpe4BAiFPR29s3XL661Czv=c&zk=(7{b?{Dck&X=<@97q} z^`+;OzymeOZyp^XNj5W@ofr2)&}{rKLiJ!TE2wt_5w!<9objfM0;DrzrnNJ@qySUm zS=}N6Q%L3_BkpIp4~%cB>-87q*0rV=WF&$>2h3fqa2m67*E3}vf?-Qhha7DDA3vZs65#l zp#{B^;MekqzwfbIzje*Gi}=Ga95+w`@3>OJV^4VWca@Tm7e z7?u2YG@~Wq@aG4mAf6?D@j`S}-RZz&B8BqjaoNjr)qG~Y3~FH<%R+h`T6qdf8sR|s zcTUSsM)lgz)arTgrKVTd#^6Oda~4i-j}Jw~nGijOYYz5jh~1ZKAWOFN!@*VQ@t@3(D+f>-mG zzYXnSRZ3K6ehfOwI4IXHB%IegBq2yL*?FpA_TWUSzQ65H4VVtM2*C874 zr%PChYA2R1()vCB68#FNv`}P9&}Vg_h2O`6@@RkhR;(dJ>p;wMZJK|$d6IP{!jwN6 zQwm0_v!zlP9MS>u6A1meXtdcn?&y}}BSV1EjJ$+ogy^Q{98|dIxkZLNq3y+8>>6b_ zySwr(x20BIw4sN#Fdb3>xvqUW%X*ZyN7BSkNLo6(@K|J>>aiw_jjx5g*|xvEl>J&f@u;R}W$}GKA;Z@JS#33>;y(gnFu)GL@zcZw?I`y30qC0~Yxm(k2sZs~M2S@= z_)?aj?`$B6GS!&MPu3c}ye_57kYXr*T#?kPpESMzEyMgW2*WhBXw{A{!`$vhHK1EJ zxr#t#rwKPLb4Hc{iJCgiJM~|pS7~)~VGTGzc){nPVI~SU#UCjvTrFYq83mwDwq61zqiB{}HLL-PqyG{Y|;tTmPYnAoA2=@I1o8 zagEQY`>xr2<9RPTCeTIo%rg289p?tbqD@_q)-L6M);EmkNBN+g(iO?clqqed6?O}@ z!l+_fkmr1wh8}|68Zuuhc3(0OGT&CGW=wE-S^1rtGQ8hbB;R0mObm3wtoR8!7ZDEP z4pq6HD*?}X4Oi4EzzFBo&xs24*oV%s?hrp~05xJKmqk#+gT;nF zShS=;TQjeTyP@2?S4?|B4sn&>4Ag|V9u#GEOA|@#?CM=7^8pbSuStu8M(s{QQ}YI- zwHC~uz0-$H@%5dfQsw}=$c<(U=}buwhN-ApH4PBbNs2>iZqn!T|$)T!;L# zp?vot<^yXE^Hx`(VbsY&JnK}kSmN~OQ7mX08~xONesI23$Avwb`b(t4=J((oOb!fO zr3ECLsv^ClRH&1w7pp^50s4v?#IcmL*0q&K=kozndbUN}+NB(jPW%6Dee3^Zy+?3Kz-$mVWt8`-KTEB%)7H zJIssDN{zRlX8gJ4s{rctBZr^{fPsUocL78`P|YOQ)_jv8f=@jEcE&k%1G&F;yIRJLXz|~H z|7cnY*1*n4If?nejMB(d;GVsezXyMYH;X`P36bUDCr7Afu=+@gF4Av>Tb65(u8hBI zrzp`ztE0sANW-^`DR4bZKkosNJgb@)rwQ?nM3K}FAFIKOG%CiuFLG+crd-(FZ->~9 z9ua?@)#d+`;?%5>%Fe}s*#n4Ox{n$0%_pLOq-sHmMwQFF`=0p~^Vr!vFGwyuw-ltv z1`JtvO9mcCs$wC*#e4p1Z!g(%hLhKVxkikRYl^gbffe!*;T1^U_}k69wlmitey%&d3; zFdu?Cu(gtPVSgNF^$9v(;Ts&J&Fp3GD9?OG%+8U@eb7!4)pFA??MP!jLvwB@yxS(a z=%@N;Jy09^;As~w*8sZfBDB2}kp~SH6Q;3TgQhKu8{osN*a5Y`3Zrkh(N&cCM>*)$ zBa=W4;{94O7$T9%Ix@#21#G+r^jt%IFQ*rH?*27jZ?`jFgX0U8XpehHA1 zEq!^o1W}}usJ;oOkG(vu$g|M)b00^h4Whr=8xGaqbauG4J}VqOKj+`;JzK(R?sPea zuOXTJ?+Kzmzxvb2SI2tPzDft%ElbI>PEUK$Ay;`8?W^E*%^JNhpC4u<<7HWWYjh&s z*ACJf%A#TEN|Hz8Iuw%lE(2#{(unYNI9aILkcqN52HB+VrL?@D=NjA`^OWa|L=|$v zr9LTqm{x)Rq^Ydp5cJw`&E9Ks4(3VOS+id$H)v*cB-_?fS22A-mo3jOeizpmtSN=~ zyutm2^H(R2W+k7163bGgunq z_9L7c1phc%5cqjWYs87dW%5~P%cx4|U|bT|iM;hu{a4uW0M|2D>Eei`F<+A6;-?~k zh5W61HKb;FUUs_?+j>K+luv3S{bN0sPeEL~DdoxSc1Tb**ws!+h7Fv!GZ9wUxn)Xk z$M4r!{dL$|3^>|r496r(4uh*sP8IxQPG^SAXtD8wh{vhsu18Zjh- z`K#g=lgcO*3ghA-pGUIoG19M}U~BiFt&K^^+Q@r<$XMs|S0}(Q@KJ#oX$Or#|%|sPhQ8Yz|ciwsPGJM^;z010~qMn>vubh|oKD-AcvX z=7pwK1RXN@l+!Tc#&qi!D<+7h_q8rcwz|fAg5!N&t`aKC2=ZPZ3^D_1-sSU~LI#z}Gk{;_&7Fi!1lq zwT87UVAN*T4;{sk@i0GdVtuWo&ev0}++QM2Fuz$%u0I)=)bkwt%fN_(hW;uZZveAvGmnl z;mIr^jxKD}(3<^j0a|D-*KxbAAp2GzCW*n?VPY~hx0Sm5R_;r@>++>1gX}4=wah(v zzhgPt_!h4Z0pMuL7sQ&r;Q5Po<1f<9h<6se3ObxB#o6XIF)>A^G})eoAZzsiZc!Sk zbP`suqNnrq!udG^(P(vXEgQO=7}n(Q@Lhh6r!!ahC%6n2@I^v*_-B+O5{;HyyM0oC zmi``9&ufhwlUhDnlz$*YiRYUhHFTYQV_VjbepwIN&=4%WZUT0K`)UE9h!in;Mxmt% z^90IG;*^zV2gQo0vEz=92ceNoxLdQxyZYD2ljM?n>%_kCyz%|8QN7rQys z8Mzb21E~)vNW()|4tGXh|Ng*4BkeHQ-}sPF3jjC^u(@HQLng;E*yvYK^)7 z-Xbdo#iO1@0{2#cegL7x_165K9?=LV)*uB8)U?5tmslkL4@ZVR3pK6w^tehq` za;H~KZcQercgEHpgY1eHgI1U6<^zSxAJmKZ@dkes^MYHztAB9o@h9!8doX45R6}m9hSd~mvaQ%SON3)9+_8J~aj7>phoq;6}kMn_p|Xe(EM5o*YF(&tAs6;?KVYhX9rgl#s34N!>oZ6LFWR%Na1BXz zFS{jd4Nhf=fEVKZ{{WsqVZYblRw57AJ0Z?vBT89a!>WS(f#$)Vr)+OLn>$Yw$^8x0 zfhe_Y3%d&XL&#_1erkHM*%upOg|kc`r`00UoIH)Vec!QJN+fiY$^!8RQ%2O+^v+|L z#kk>)>r5oSPmW-AB396a5ee^EB11*a$s6yV$ca_o96~V;QlZ@n`UnlA=N2kz9V>; ze4W!jF&G@$)->~u&F?%mJ>=gTk5U1=jPY*f0>9!|$R3phhCh&4AK!V<(l!~V(ES9{ z8=^CV+ZVKDfsYgNPaWN^qq>sM-R|TL0v#W8@3+nWD>%ExpGPw=XMv8*m!tuN?c8XZ$!N z%?-PG#pLvmYx&**Rnt( z1;>vJ=RY13_cPx9a>ah<$)_+c;r6mmJ5%(fO8&FY9G%*Af@Liyt2ik?miP6+j-U!iW&>aI4 z3!@Xo_(ut*pQ2QT+d7)t9j<5vodk$ZB&fuzjOfWJ<*N<#>m}W$##N5$ddv2Gfijxj z14|PEjXNkDUhaL2#$X2q64BdDPcgrO+YWA&L}up=Oe2}1%SQq?ujg_ipB}vSudiWt z1m`F4;3%M44^5D3+B#S-U^Vyr@r{IZe*I4sFa8V7_(CB3Vh`(D?ugiLC9*Cu2LzFd zBsw$I*Z(4ZxSxm8p_gC^>@<@t9Zw#A#U|R_? zo=jjkl7i=2xe!#R@ad07j316s3WE1&8&R%ns@0zTy(4sxO#)TxdG}uK4?I4CC^M8z zMn162U)AhuNKZ5;pG4fgaa?`_7Z)%%It2Bs9KAeXTTk^{kH1xdR@xxe@9E(dII9>u zO>lKfu?`aQJ5Ilg;$FkhU> zRNE|(0gc|5DZS4VN!B@4jGllFqQzS)qoE$?ohcF&aVM8JMl+2*HJE9{^oxWvYZ*P& zq^Fj6mJ=TjNKR)oHx;2QNj~Z0Dv!x?bQGg>i%A0Mg(W!~Vn5oe(qU79?`{M2%A+h~BZIq@Y8OpnqFKWB+ZFR)7eu)yyYRTS zrP>B2UytcO8FK%sgvgUWj(G6XA^oX=ZAYfy3@YWDUec~6#)N9B5-^_89BYV-KSvROw;;2FupjFg!Pwz-Gc#>fw2n6C$ME~m? zdXD=`k8?8UHpLLJ1wl)%xEqOIlU>qh>kmAFJBq<}np04Ec;c$V_y2dAje;ay2I z$k36cDGO|>=uLCJ{Z-BI80k*5B_Yz;Im^w>uIjHG9%G5 zM3Yoxz<;>Fvomm2N$=1G>BIL0j5FyivRF2HAVbPIP47`edY)nOnCxgkc6!A9_gnVYJI=n&Ir-s?uJWw^P!N`$^Pi@Se?BCB zkP(zd=>%5=0tTHJeA`jp?1>*|IPWmS7<)Qk{f8xszg?0HEXlE9^P!?yG_>;$ZIn1a zV<`j%=s(U$CJ|_vEHpVpM~2P3qb;G|lbdF?d)X+TJb)Kp$l(zZaanIm_-+orU&60$ z;ktsm9X!q8*)teCkZi$dAeX+Je4z-H+{A2^Jn#Dtfnq0Q*oP~*ooIX_!%(l5@Uf7~ zL#QQ?CXHdY?YO_JnI=+v&Og(fer+h`p3Nm}SBGF4_m7vlJp3{fho+a$?;HM?U{)g| zA-GZ!vwE43oy8uaC{V6;Y_GQXt|J{;T+`sar`k89{T}ykD{SgXhDu1%4#wjI-vmaF z#;o4$*HV_N&$6M&9Fiz$E z^yY9YRW{R1Kh<UWJiRjr>yrJ;7AjF6a^!~LdLsy_?G))OM!A;g*rErDWDsNbo^IPwTtm6^ zM12^JBjUsmrJBW?2BHn~zb}c`9mhY+8U6GamBzSTht6}9mB3HkLDO#0aYP*T=z?eW zu^^5W>9(YOSrJ?4KZ>FAnBeG~LJ^1}Pw%-QJxwWIm2^u-x7cB)G0oO9f9V-D4l@k+ z{UI>Mz<2;(v@odPVs^N*&&uq)_TursY2fbQu^#}ZS}s@p^}mOFD6;|M7&adyTCClQ zrFSuhf&0h%{5BgQ>5>eFJ<0eBUh&uO1Me$2*`E&%ysU!W0LG^g+jYmuP?Jphoc^F= zf3st^5xyzUL=n&mdJi%NmmPP%X^6bE6>TXpbWlTZO!IgNj}j;RUlW2ajYmVVPwPw>Nk)d zX$%R2AEeYb4b@dkdl-OAEL{Co*!}Stq@#oSU|{%UKs-ojuJ^Sm?9zqoh^w2^0fufUk;Q2U4SxdLwF+7!-0AC--x#0kwnb1B{M@^eHOHzv|Kd@l-0= z-I8wS&^=8xhq#}RjuTl4#-UY)?hn|%Sx~><3O*bs#A!;DYjolAA&DE%EsP zJL^zsjE^17qQF<0Y89xqHLX{S`%o`7beo3Fr3d919u>s3XZBDt`f4C6QYV;E22SG( zK^WEb65Ef7j|b?bVfTjxk#i&-+V5Jq`Sv2g?>n3i%zo0tb%xa+3Q!$3ci4VQI`Om$ zl4FZ&9j0qJdaUuzv-p*hE3*zg@YNDl9V`x!T9Jj!$y`9FCFnB<|A_{k_TbMaGD7}u ze=ADO|K(3CO{e(&Hx19f43t~3_WFV30oqPvxD@f3e0L3_1^oPH5sx3hv={j08%N#- zoP#G16pKZmYGC{@K@s??|4+y4(T*?w^FH}RGpIfHi-Vm#f~E_+{q5?1u_db@J%3sM z<78&%1l5#{@B=Ttvc$c>;-h1~mco?u6pIg@DA#!JN%M#}%ZPh1;l5@(I|Si6Xg4k0 z*0FiDq+Yh1e39_!z_GaTm=cmg7=7D^#&XC_bnJ_oc3x3jwd@N}1NoVJBnRd4TWEHU zVg<)v3`qtFoBwo+$_?q`zO=GcCo?%^Lufk8|NaLrei396RUB1v$qW5d?7zXwgkI^S zHMrlwEc5uHB^^PWDzrabG2azUKZ)s`rSy(t z;-1Btj(iqKCJ-OT=)r{jt3Aqjb_-8-77>kd;^Pr!&?6`fQBHDnOuO^w)H8UJ&^FL+ z8>;&fx9=D|N{Oc_tILk*Gr2i7*aVeX+^{ zgYh9|>wzd9Cl3{~N0#f4p7|Pv0fq#ULClZ;^(ot%J?}0(-3G=%@$9EDI)(SYu4%WP zy9yQ?&*Du@mIRJ2#A8u5G6o#1n1+UZDCRPRHJBWH2o|#bq0kRua3WCK0#T|c7DE0G zjx^cWa`la8eH-u%R7*$RkLdPr_og79D0%}47>VPEYUSw4ma+)+CoqfxkDtbjPg2@> zLozWGE3o|-(}U%!hV6%%bPz}eMtnAjaC5^mm^>7VeQ_g2xIfj*|7uHnU$T7F5Jff7 zz{p;R43sU+%LV3NJ$mtrz1a0-B(xP@b>0_wZ(EA@-y?oxUFEAd_{@qXJBbS8!x?G?L^j_d1|;e|!lE!N7dzHTm?KaL@P2-BY$ z(({Ps%?5w7Bbr)lPZ5H~S6*(rjU`#qoXQg`etnJFJK|Fb&Gh>~dm|*Bna1FuzO3cS z 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 z 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 LNkvXXu0mjfxql<0 diff --git a/Aki.Core/Interfaces/ILiveTaskTableEntry.cs b/Aki.Core/Interfaces/ILiveTaskTableEntry.cs deleted file mode 100644 index b334661..0000000 --- a/Aki.Core/Interfaces/ILiveTaskTableEntry.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Spectre.Console; -using SPT_AKI_Installer.Aki.Core.Model; -using System.Threading.Tasks; - -namespace SPT_AKI_Installer.Aki.Core.Interfaces -{ - public interface ILiveTaskTableEntry - { - public string TaskName { get; set; } - - public int RowIndex { get; set; } - - public void SetContext(LiveDisplayContext context, Table table); - - public Task RunAsync(); - } -} diff --git a/Aki.Core/Interfaces/IProgressableTask.cs b/Aki.Core/Interfaces/IProgressableTask.cs deleted file mode 100644 index 7237c7a..0000000 --- a/Aki.Core/Interfaces/IProgressableTask.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SPT_AKI_Installer.Aki.Core.Interfaces -{ - internal interface IProgressableTask - { - public int Progress { get; set; } - } -} diff --git a/Aki.Core/Model/GenericResult.cs b/Aki.Core/Model/GenericResult.cs deleted file mode 100644 index c59d7b7..0000000 --- a/Aki.Core/Model/GenericResult.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace SPT_AKI_Installer.Aki.Core.Model -{ - public class GenericResult - { - public string Message { get; private set; } - - public bool Succeeded { get; private set; } - public bool NonCritical { get; private set; } - - protected GenericResult(string message, bool succeeded, bool nonCritical = false) - { - Message = message; - Succeeded = succeeded; - NonCritical = nonCritical; - } - - public static GenericResult FromSuccess(string message = "") => new GenericResult(message, true); - public static GenericResult FromError(string errorMessage) => new GenericResult(errorMessage, false); - public static GenericResult FromWarning(string warningMessage) => new GenericResult(warningMessage, false, true); - } -} diff --git a/Aki.Core/Model/LiveTableTask.cs b/Aki.Core/Model/LiveTableTask.cs deleted file mode 100644 index df90b56..0000000 --- a/Aki.Core/Model/LiveTableTask.cs +++ /dev/null @@ -1,159 +0,0 @@ -using Spectre.Console; -using SPT_AKI_Installer.Aki.Core.Interfaces; -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace SPT_AKI_Installer.Aki.Core.Model -{ - public abstract class LiveTableTask : ILiveTaskTableEntry, IProgressableTask, IDisposable - { - /// - /// The name that will be displayed in th first column of the table - /// - public string TaskName { get; set; } - - /// - /// Wheather the task reports progress or not - /// - public bool IsIndeterminate; - - /// - /// The progress (percent completed) of the task - /// - public int Progress { get; set; } - - /// - /// The row index in the table of the task - /// - public int RowIndex { get; set; } - - private bool _continueRenderingProgress = false; - private bool _continueRenderingIndeterminateProgress = false; - - private int _indeterminateState = 0; - - private string _currentStatus = "running"; - - private Table _table { get; set; } - - private LiveDisplayContext _context { get; set; } - - public LiveTableTask(string name, bool isIndeterminate = true) - { - TaskName = name; - IsIndeterminate = isIndeterminate; - } - - private string GetIndetermminateStatus() - { - string status = $"[blue]{_currentStatus.EscapeMarkup()} "; - - if (_indeterminateState > 3) _indeterminateState = 0; - - status += new string('.', _indeterminateState); - - status += "[/]"; - - _indeterminateState++; - - return status; - } - - /// - /// Start indeterminate progress spinner - /// - /// this doesn't need to be called if you set isIndeterminate in the constructor. You need to set IsIndeterminate to false to stop this background task - public void StartDrawingIndeterminateProgress() - { - _continueRenderingProgress = false; - _continueRenderingIndeterminateProgress = true; - - new Task(new Action(() => { RenderIndeterminateProgress(ref _continueRenderingIndeterminateProgress); })).Start(); - } - - public void StartDrawingProgress() - { - Progress = 0; - _continueRenderingIndeterminateProgress = false; - _continueRenderingProgress = true; - - new Task(new Action(() => { RenderProgress(ref _continueRenderingProgress); })).Start(); - } - - private void ReRenderEntry(string message) - { - _table.RemoveRow(RowIndex); - _table.InsertRow(RowIndex, TaskName, message); - _context.Refresh(); - } - - private void RenderIndeterminateProgress(ref bool continueRendering) - { - while (continueRendering) - { - ReRenderEntry(GetIndetermminateStatus()); - Thread.Sleep(300); - } - } - - private void RenderProgress(ref bool continueRendering) - { - while (continueRendering) - { - string progressBar = new string(' ', 10); - - int progressFill = (int)Math.Floor((double)Progress / 10); - - progressBar = progressBar.Remove(0, progressFill).Insert(0, new string('=', progressFill)); - - progressBar = $"[blue][[{progressBar}]][/] {Progress}% {_currentStatus}"; - - ReRenderEntry(progressBar); - - Thread.Sleep(300); - } - } - - /// - /// Set the context and table for this task - /// - /// - /// - /// This is called by when it is ran. No need to call it yourself - public void SetContext(LiveDisplayContext context, Table table) - { - _context = context; - _table = table; - } - - /// - /// Set the status text for the task - /// - /// The message to show - /// Stop rendering progress updates (progress and indeterminate progress tasks) - /// If you are running an indeterminate task, set render to false. It will render at the next indeterminate update interval - public void SetStatus(string message, bool stopRendering = true) - { - _currentStatus = message; - - if (stopRendering) - { - _continueRenderingProgress = false; - _continueRenderingIndeterminateProgress = false; - ReRenderEntry(message); - } - } - - /// - /// Run the task async - /// - /// Returns the result of the task - public abstract Task RunAsync(); - - public void Dispose() - { - IsIndeterminate = false; - } - } -} diff --git a/Aki.Core/Model/LiveTableTaskRunner.cs b/Aki.Core/Model/LiveTableTaskRunner.cs deleted file mode 100644 index 6d4a5b2..0000000 --- a/Aki.Core/Model/LiveTableTaskRunner.cs +++ /dev/null @@ -1,87 +0,0 @@ -using Spectre.Console; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace SPT_AKI_Installer.Aki.Core.Model -{ - public class LiveTableTaskRunner - { - private static async Task<(bool, LiveTableTask task)> RunAllTasksAsync(List tasks, LiveDisplayContext context, Table table) - { - foreach (var task in tasks) - { - if (task.IsIndeterminate) - { - task.StartDrawingIndeterminateProgress(); - } - else - { - task.StartDrawingProgress(); - } - - var result = await task.RunAsync(); - - // critical: error - stop installer - if (!result.Succeeded && !result.NonCritical) - { - task.SetStatus($"[red]{result.Message.EscapeMarkup()}[/]"); - return (false, task); - } - - // non-critical: warning - continue - if (!result.Succeeded && result.NonCritical) - { - task.SetStatus($"[yellow]{result.Message.EscapeMarkup()}[/]"); - continue; - } - - //suceeded: continue - task.SetStatus($"[green]{(result.Message == "" ? "Complete" : $"{result.Message.EscapeMarkup()}")}[/]"); - } - - return (true, null); - } - public static async Task RunAsync(List tasks) - { - int halfBufferWidth = Console.BufferWidth / 2; - - Table table = new Table().Alignment(Justify.Center).Border(TableBorder.Rounded).BorderColor(Color.Grey).AddColumn("Task", (column) => - { - column.Width(halfBufferWidth); - }) - .AddColumn("Status", (column) => - { - column.Width(halfBufferWidth); - }); - - await AnsiConsole.Live(table).StartAsync(async context => - { - foreach (var task in tasks) - { - table.AddRow(task.TaskName, "[purple]Pending[/]"); - task.RowIndex = table.Rows.Count() - 1; - task.SetContext(context, table); - - await Task.Delay(50); - context.Refresh(); - } - - var result = await RunAllTasksAsync(tasks, context, table); - - // if a task failed and returned early, set any remaining task status to cancelled - if (!result.Item1) - { - var cancelledTasks = tasks.Take(new Range(tasks.IndexOf(result.Item2) + 1, tasks.Count)); - - foreach (var task in cancelledTasks) - { - task.SetStatus("[grey]Cancelled[/]"); - } - - } - }); - } - } -} diff --git a/Aki.Core/SPTInstaller.cs b/Aki.Core/SPTInstaller.cs deleted file mode 100644 index 0a2cfa8..0000000 --- a/Aki.Core/SPTInstaller.cs +++ /dev/null @@ -1,93 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Spectre.Console; -using SPT_AKI_Installer.Aki.Core.Model; -using SPT_AKI_Installer.Aki.Core.Tasks; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; - -namespace SPT_AKI_Installer.Aki.Core -{ - //TODO: - // locales, language selection - - public class SPTinstaller - { - InternalData _data; - static void Main() - { - var host = ConfigureHost(); - - var tasks = host.Services.GetServices(); - - var taskList = new List(tasks); - - AnsiConsole.Write(new FigletText("SPT-AKI INSTALLER").Centered().Color(Color.Yellow)); - - host.Services.GetRequiredService() - .RunTasksAsync(taskList) - .GetAwaiter() - .GetResult(); - } - - public SPTinstaller( - InternalData data - ) - { - _data = data; - } - - public async Task RunTasksAsync(List tasks) - { - _data.TargetInstallPath = Environment.CurrentDirectory; - - var cursorPos = Console.GetCursorPosition(); - -#if DEBUG - var path = AnsiConsole.Ask("[purple]DEBUG[/] [blue]::[/] Enter path to install folder: ").Replace("\"", ""); - - if (!Directory.Exists(path)) - { - CloseApp($"Path invalid: {path}"); - } - - _data.TargetInstallPath = path; -#endif - var continueInstall = AnsiConsole.Confirm($"SPT will install into:\n[blue]{_data.TargetInstallPath}[/]\n\nContinue?", false); - - if (!continueInstall) CloseApp("Please move the installer to the folder you want to install into"); - - - Console.SetCursorPosition(cursorPos.Left, cursorPos.Top); - await LiveTableTaskRunner.RunAsync(tasks); - CloseApp(""); - } - - private static IHost ConfigureHost() - { - return Host.CreateDefaultBuilder().ConfigureServices((_, services) => - { - services.AddSingleton(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - }) - .Build(); - } - - static void CloseApp(string text) - { - AnsiConsole.MarkupLine($"[yellow]{text.EscapeMarkup()}[/]"); - AnsiConsole.WriteLine(); - AnsiConsole.MarkupLine("Press [blue]Enter[/] to close ..."); - Console.ReadKey(); - Environment.Exit(0); - } - } -} \ No newline at end of file diff --git a/Aki.Core/Tasks/DependencyCheckTask.cs b/Aki.Core/Tasks/DependencyCheckTask.cs deleted file mode 100644 index 06df724..0000000 --- a/Aki.Core/Tasks/DependencyCheckTask.cs +++ /dev/null @@ -1,106 +0,0 @@ -using Microsoft.Win32; -using SPT_AKI_Installer.Aki.Core.Model; -using System; -using System.Collections.Generic; -using System.Data.SqlTypes; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SPT_AKI_Installer.Aki.Core.Tasks -{ - public class DependencyCheckTask : LiveTableTask - { - private bool CheckNetCore6Installed() - { - var minRequiredVersion = new Version("6.0.0"); - string[] output; - - try - { - var proc = Process.Start(new ProcessStartInfo() - { - FileName = "dotnet", - Arguments = "--list-runtimes", - RedirectStandardOutput = true - }); - - proc.WaitForExit(); - - output = proc.StandardOutput.ReadToEnd().Split("\r\n"); - } - catch - { - return false; - } - - foreach(var lineVersion in output) - { - if (lineVersion.StartsWith("Microsoft.WindowsDesktop.App") && lineVersion.Split(" ").Length > 1) - { - string stringVerion = lineVersion.Split(" ")[1]; - - var foundVersion = new Version(stringVerion); - - // not fully sure if we should only check for 6.x.x versions or if higher major versions are ok -waffle - if(foundVersion >= minRequiredVersion) - { - return true; - } - } - } - - return false; - } - - private bool CheckNet472Installed() - { - var minRequiredVersion = new Version("4.7.2"); - - var key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full"); - - if (key == null) - { - return false; - } - - var value = key.GetValue("Version"); - - if (value != null && value is string versionString) - { - var installedVersion = new Version(versionString); - - return installedVersion > minRequiredVersion; - } - - return false; - } - - public DependencyCheckTask() : base("Dependency Checks", true) - { - } - - GenericResult getResult(bool net472Check, bool netCoreCheck) => - (net472Check, netCoreCheck) switch - { - (true, true) => GenericResult.FromSuccess("Dependencies already installed"), - (false, true) => GenericResult.FromWarning(".Net Framework 472 not found.\nCheck SPT release page for requirements\nhttps://hub.sp-tarkov.com/files/file/16-spt-aki/"), - (true, false) => GenericResult.FromWarning(".Net Runtime Desktop 6 not found.\nCheck SPT release page for requirements\nhttps://hub.sp-tarkov.com/files/file/16-spt-aki/"), - (false, false) => GenericResult.FromWarning("Required dependencies not found.\nCheck SPT release page for requirements\nhttps://hub.sp-tarkov.com/files/file/16-spt-aki/") - }; - - public override Task RunAsync() - { - SetStatus("Checking for net framework"); - - var net472Check = CheckNet472Installed(); - - SetStatus("Checking for net core"); - - var netCoreCheck = CheckNetCore6Installed(); - - return Task.FromResult(getResult(net472Check, netCoreCheck)); - } - } -} diff --git a/Aki.Helper/FileHelper.cs b/Aki.Helper/FileHelper.cs deleted file mode 100644 index 9bcdb44..0000000 --- a/Aki.Helper/FileHelper.cs +++ /dev/null @@ -1,37 +0,0 @@ -using SPT_AKI_Installer.Aki.Core.Model; -using System; -using System.IO; - -namespace SPT_AKI_Installer.Aki.Helper -{ - public static class FileHelper - { - public static GenericResult CopyDirectoryWithProgress(DirectoryInfo sourceDir, DirectoryInfo targetDir, IProgress progress) - { - try - { - int totalFiles = sourceDir.GetFiles("*.*", SearchOption.AllDirectories).Length; - int processedFiles = 0; - - foreach (var dir in sourceDir.GetDirectories("*", SearchOption.AllDirectories)) - { - Directory.CreateDirectory(dir.FullName.Replace(sourceDir.FullName, targetDir.FullName)); - } - - foreach (var file in sourceDir.GetFiles("*.*", SearchOption.AllDirectories)) - { - File.Copy(file.FullName, file.FullName.Replace(sourceDir.FullName, targetDir.FullName), true); - processedFiles++; - - progress.Report((int)Math.Floor(((double)processedFiles / totalFiles) * 100)); - } - - return GenericResult.FromSuccess(); - } - catch (Exception ex) - { - return GenericResult.FromError(ex.Message); - } - } - } -} diff --git a/Aki.Locales/CN.json b/Aki.Locales/CN.json deleted file mode 100644 index 077404a..0000000 --- a/Aki.Locales/CN.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/Aki.Locales/DE.json b/Aki.Locales/DE.json deleted file mode 100644 index 077404a..0000000 --- a/Aki.Locales/DE.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/Aki.Locales/EN.json b/Aki.Locales/EN.json deleted file mode 100644 index 0e0dcd2..0000000 --- a/Aki.Locales/EN.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/Aki.Locales/FR.json b/Aki.Locales/FR.json deleted file mode 100644 index 077404a..0000000 --- a/Aki.Locales/FR.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/Aki.Locales/KR.json b/Aki.Locales/KR.json deleted file mode 100644 index 077404a..0000000 --- a/Aki.Locales/KR.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/Aki.Locales/RU.json b/Aki.Locales/RU.json deleted file mode 100644 index 077404a..0000000 --- a/Aki.Locales/RU.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/Properties/PublishProfiles/FolderProfile.pubxml b/Properties/PublishProfiles/FolderProfile.pubxml deleted file mode 100644 index 388b15e..0000000 --- a/Properties/PublishProfiles/FolderProfile.pubxml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - Release - Any CPU - bin\Release\net6.0\publish\win-x64\ - FileSystem - net6.0 - win-x64 - true - true - false - true - - \ No newline at end of file diff --git a/Properties/PublishProfiles/FolderProfile.pubxml.user b/Properties/PublishProfiles/FolderProfile.pubxml.user deleted file mode 100644 index e3a2ecb..0000000 --- a/Properties/PublishProfiles/FolderProfile.pubxml.user +++ /dev/null @@ -1,9 +0,0 @@ - - - - - True|2022-07-12T01:15:15.4480498Z;True|2022-07-11T21:11:55.8484217-04:00;True|2022-07-09T13:06:26.5751622-04:00;True|2022-07-09T12:56:17.1018408-04:00;True|2022-07-09T12:38:17.0878078-04:00;True|2022-07-09T12:18:23.6469737-04:00;True|2022-06-21T14:47:38.7532473-04:00;True|2022-06-08T13:26:47.7977621-04:00;True|2022-06-06T10:07:18.8067168-04:00;True|2022-06-05T17:55:20.5192697-04:00;True|2022-05-30T08:11:30.6942032-04:00;True|2022-05-30T08:08:08.4269393-04:00;True|2022-05-16T20:06:33.6758525-04:00;True|2022-05-13T20:56:09.8410037-04:00;True|2022-05-13T19:54:24.0683990-04:00;True|2022-05-13T19:53:04.7105427-04:00;True|2022-05-13T19:51:00.6280767-04:00;True|2022-05-13T19:49:19.4630888-04:00;True|2022-05-13T19:47:59.2166156-04:00; - - \ No newline at end of file diff --git a/SPTInstaller.sln b/SPTInstaller.sln new file mode 100644 index 0000000..036a25e --- /dev/null +++ b/SPTInstaller.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33516.290 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SPTInstaller", "SPTInstaller\SPTInstaller.csproj", "{8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + TEST|Any CPU = TEST|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}.Release|Any CPU.Build.0 = Release|Any CPU + {8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}.TEST|Any CPU.ActiveCfg = TEST|Any CPU + {8637C4B3-FC40-4A76-9ED0-707FA5D8E0CF}.TEST|Any CPU.Build.0 = TEST|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AF73BCF4-41F2-472E-9C5B-B7F3B71FA6B5} + EndGlobalSection +EndGlobal diff --git a/SPTInstaller/.gitignore b/SPTInstaller/.gitignore new file mode 100644 index 0000000..8afdcb6 --- /dev/null +++ b/SPTInstaller/.gitignore @@ -0,0 +1,454 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/SPTInstaller/App.axaml b/SPTInstaller/App.axaml new file mode 100644 index 0000000..796915e --- /dev/null +++ b/SPTInstaller/App.axaml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + #121212 + #FFC107 + #FFFFFF + #282828 + #323947 + + + + + + + + + + + + + + + diff --git a/SPTInstaller/App.axaml.cs b/SPTInstaller/App.axaml.cs new file mode 100644 index 0000000..cc8165c --- /dev/null +++ b/SPTInstaller/App.axaml.cs @@ -0,0 +1,29 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; +using SPTInstaller.ViewModels; +using SPTInstaller.Views; + +namespace SPTInstaller +{ + public partial class App : Application + { + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow + { + DataContext = new MainWindowViewModel(), + }; + } + + base.OnFrameworkInitializationCompleted(); + } + } +} \ No newline at end of file diff --git a/SPTInstaller/Assets/Styles.axaml b/SPTInstaller/Assets/Styles.axaml new file mode 100644 index 0000000..c4d4caf --- /dev/null +++ b/SPTInstaller/Assets/Styles.axaml @@ -0,0 +1,187 @@ + + + + + + + + + + + diff --git a/SPTInstaller/CustomControls/TitleBar.axaml.cs b/SPTInstaller/CustomControls/TitleBar.axaml.cs new file mode 100644 index 0000000..5c0c336 --- /dev/null +++ b/SPTInstaller/CustomControls/TitleBar.axaml.cs @@ -0,0 +1,77 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.Media; +using System.Windows.Input; + +namespace SPTInstaller.CustomControls +{ + public partial class TitleBar : UserControl + { + public TitleBar() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + + public static readonly StyledProperty TitleProperty = + AvaloniaProperty.Register(nameof(Title)); + + public string Title + { + get => GetValue(TitleProperty); + set => SetValue(TitleProperty, value); + } + + public static readonly StyledProperty ButtonForegroundProperty = + AvaloniaProperty.Register(nameof(ButtonForeground)); + + public IBrush ButtonForeground + { + get => GetValue(ButtonForegroundProperty); + set => SetValue(ButtonForegroundProperty, value); + } + + public static new readonly StyledProperty ForegroundProperty = + AvaloniaProperty.Register(nameof(Foreground)); + + public new IBrush Foreground + { + get => GetValue(ForegroundProperty); + set => SetValue(ForegroundProperty, value); + } + + public static new readonly StyledProperty BackgroundProperty = + AvaloniaProperty.Register(nameof(Background)); + + public new IBrush Background + { + get => GetValue(BackgroundProperty); + set => SetValue(BackgroundProperty, value); + } + + //Close Button Command (X Button) Property + public static readonly StyledProperty XButtonCommandProperty = + AvaloniaProperty.Register(nameof(XButtonCommand)); + + public ICommand XButtonCommand + { + get => GetValue(XButtonCommandProperty); + set => SetValue(XButtonCommandProperty, value); + } + + //Minimize Button Command (- Button) Property + public static readonly StyledProperty MinButtonCommandProperty = + AvaloniaProperty.Register(nameof(MinButtonCommand)); + + public ICommand MinButtonCommand + { + get => GetValue(MinButtonCommandProperty); + set => SetValue(MinButtonCommandProperty, value); + } + } +} diff --git a/Aki.Helper/DownloadCacheHelper.cs b/SPTInstaller/Helpers/DownloadCacheHelper.cs similarity index 70% rename from Aki.Helper/DownloadCacheHelper.cs rename to SPTInstaller/Helpers/DownloadCacheHelper.cs index 5fcd2a8..0ab712c 100644 --- a/Aki.Helper/DownloadCacheHelper.cs +++ b/SPTInstaller/Helpers/DownloadCacheHelper.cs @@ -1,11 +1,11 @@ using HttpClientProgress; -using SPT_AKI_Installer.Aki.Core.Model; +using SPTInstaller.Models; using System; using System.IO; using System.Net.Http; using System.Threading.Tasks; -namespace SPT_AKI_Installer.Aki.Helper +namespace SPTInstaller.Aki.Helper { public static class DownloadCacheHelper { @@ -39,7 +39,7 @@ namespace SPT_AKI_Installer.Aki.Helper } } - private static async Task DownloadFile(FileInfo outputFile, string targetLink, IProgress progress, string expectedHash = null) + private static async Task DownloadFile(FileInfo outputFile, string targetLink, IProgress progress, string expectedHash = null) { try { @@ -51,27 +51,27 @@ namespace SPT_AKI_Installer.Aki.Helper if (!outputFile.Exists) { - return GenericResult.FromError($"Failed to download {outputFile.Name}"); + return Result.FromError($"Failed to download {outputFile.Name}"); } if (expectedHash != null && !FileHashHelper.CheckHash(outputFile, expectedHash)) { - return GenericResult.FromError("Hash mismatch"); + return Result.FromError("Hash mismatch"); } - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } catch (Exception ex) { - return GenericResult.FromError(ex.Message); + return Result.FromError(ex.Message); } } - private static async Task ProcessInboundStreamAsync(FileInfo cacheFile, Stream downloadStream, string expectedHash = null) + private static async Task ProcessInboundStreamAsync(FileInfo cacheFile, Stream downloadStream, string expectedHash = null) { try { - if (CheckCache(cacheFile, expectedHash)) return GenericResult.FromSuccess(); + if (CheckCache(cacheFile, expectedHash)) return Result.FromSuccess(); using var patcherFileStream = cacheFile.Open(FileMode.Create); { @@ -82,32 +82,32 @@ namespace SPT_AKI_Installer.Aki.Helper if (expectedHash != null && !FileHashHelper.CheckHash(cacheFile, expectedHash)) { - return GenericResult.FromError("Hash mismatch"); + return Result.FromError("Hash mismatch"); } - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } catch(Exception ex) { - return GenericResult.FromError(ex.Message); + return Result.FromError(ex.Message); } } - private static async Task ProcessInboundFileAsync(FileInfo cacheFile, string targetLink, IProgress progress, string expectedHash = null) + private static async Task ProcessInboundFileAsync(FileInfo cacheFile, string targetLink, IProgress progress, string expectedHash = null) { try { - if (CheckCache(cacheFile, expectedHash)) return GenericResult.FromSuccess(); + if (CheckCache(cacheFile, expectedHash)) return Result.FromSuccess(); return await DownloadFile(cacheFile, targetLink, progress, expectedHash); } catch(Exception ex) { - return GenericResult.FromError(ex.Message); + return Result.FromError(ex.Message); } } - public static async Task GetOrDownloadFileAsync(string fileName, string targetLink, IProgress progress, string expectedHash = null) + public static async Task GetOrDownloadFileAsync(string fileName, string targetLink, IProgress progress, string expectedHash = null) { FileInfo cacheFile = new FileInfo(Path.Join(_cachePath, fileName)); @@ -123,7 +123,7 @@ namespace SPT_AKI_Installer.Aki.Helper } } - public static async Task GetOrDownloadFileAsync(string fileName, Stream fileDownloadStream, string expectedHash = null) + public static async Task GetOrDownloadFileAsync(string fileName, Stream fileDownloadStream, string expectedHash = null) { FileInfo cacheFile = new FileInfo(Path.Join(_cachePath, fileName)); diff --git a/Aki.Helper/FileHashHelper.cs b/SPTInstaller/Helpers/FileHashHelper.cs similarity index 96% rename from Aki.Helper/FileHashHelper.cs rename to SPTInstaller/Helpers/FileHashHelper.cs index 16d5cf8..2b70e55 100644 --- a/Aki.Helper/FileHashHelper.cs +++ b/SPTInstaller/Helpers/FileHashHelper.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Security.Cryptography; using System.Text.RegularExpressions; -namespace SPT_AKI_Installer.Aki.Helper +namespace SPTInstaller.Aki.Helper { public static class FileHashHelper { diff --git a/SPTInstaller/Helpers/FileHelper.cs b/SPTInstaller/Helpers/FileHelper.cs new file mode 100644 index 0000000..e01c81a --- /dev/null +++ b/SPTInstaller/Helpers/FileHelper.cs @@ -0,0 +1,72 @@ +using ReactiveUI; +using SPTInstaller.Models; +using System; +using System.IO; + +namespace SPTInstaller.Aki.Helper +{ + public static class FileHelper + { + private static Result IterateDirectories(DirectoryInfo sourceDir, DirectoryInfo targetDir) + { + try + { + foreach (var dir in sourceDir.GetDirectories("*", SearchOption.AllDirectories)) + { + Directory.CreateDirectory(dir.FullName.Replace(sourceDir.FullName, targetDir.FullName)); + } + return Result.FromSuccess(); + } + catch (Exception ex) + { + return Result.FromError(ex.Message); + } + } + + private static Result IterateFiles(DirectoryInfo sourceDir, DirectoryInfo targetDir, Action updateCallback = null) + { + try + { + int totalFiles = sourceDir.GetFiles("*.*", SearchOption.AllDirectories).Length; + int processedFiles = 0; + + foreach (var file in sourceDir.GetFiles("*.*", SearchOption.AllDirectories)) + { + updateCallback?.Invoke(file.Name, (int)Math.Floor(((double)processedFiles / totalFiles) * 100)); + + File.Copy(file.FullName, file.FullName.Replace(sourceDir.FullName, targetDir.FullName), true); + processedFiles++; + } + + return Result.FromSuccess(); + } + catch (Exception ex) + { + return Result.FromError(ex.Message); + } + } + + public static Result CopyDirectoryWithProgress(DirectoryInfo sourceDir, DirectoryInfo targetDir, IProgress progress = null) => + CopyDirectoryWithProgress(sourceDir, targetDir, (msg, prog) => progress?.Report(prog)); + + public static Result CopyDirectoryWithProgress(DirectoryInfo sourceDir, DirectoryInfo targetDir, Action updateCallback = null) + { + try + { + var iterateDirectoriesResult = IterateDirectories(sourceDir, targetDir); + + if(!iterateDirectoriesResult.Succeeded) return iterateDirectoriesResult; + + var iterateFilesResult = IterateFiles(sourceDir, targetDir, updateCallback); + + if (!iterateFilesResult.Succeeded) return iterateDirectoriesResult; + + return Result.FromSuccess(); + } + catch (Exception ex) + { + return Result.FromError(ex.Message); + } + } + } +} diff --git a/Aki.Helper/HttpClientProgressExtensions.cs b/SPTInstaller/Helpers/HttpClientProgressExtensions.cs similarity index 100% rename from Aki.Helper/HttpClientProgressExtensions.cs rename to SPTInstaller/Helpers/HttpClientProgressExtensions.cs diff --git a/Aki.Helper/PreCheckHelper.cs b/SPTInstaller/Helpers/PreCheckHelper.cs similarity index 78% rename from Aki.Helper/PreCheckHelper.cs rename to SPTInstaller/Helpers/PreCheckHelper.cs index 4ffdd0c..4380020 100644 --- a/Aki.Helper/PreCheckHelper.cs +++ b/SPTInstaller/Helpers/PreCheckHelper.cs @@ -1,11 +1,11 @@ using Microsoft.Win32; -using SPT_AKI_Installer.Aki.Core.Model; +using SPTInstaller.Models; using System; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; -namespace SPT_AKI_Installer.Aki.Helper +namespace SPTInstaller.Aki.Helper { public static class PreCheckHelper { @@ -24,16 +24,16 @@ namespace SPT_AKI_Installer.Aki.Helper return info?.DirectoryName; } - public static GenericResult DetectOriginalGameVersion(string gamePath) + public static Result DetectOriginalGameVersion(string gamePath) { try { string version = FileVersionInfo.GetVersionInfo(Path.Join(gamePath + "/EscapeFromTarkov.exe")).ProductVersion.Replace('-', '.').Split('.')[^2]; - return GenericResult.FromSuccess(version); + return Result.FromSuccess(version); } catch (Exception ex) { - return GenericResult.FromError($"File not found: {ex.Message}"); + return Result.FromError($"File not found: {ex.Message}"); } } } diff --git a/Aki.Helper/ProcessHelper.cs b/SPTInstaller/Helpers/ProcessHelper.cs similarity index 54% rename from Aki.Helper/ProcessHelper.cs rename to SPTInstaller/Helpers/ProcessHelper.cs index 8dd4feb..a2c6e9a 100644 --- a/Aki.Helper/ProcessHelper.cs +++ b/SPTInstaller/Helpers/ProcessHelper.cs @@ -1,8 +1,8 @@ -using SPT_AKI_Installer.Aki.Core.Model; +using SPTInstaller.Models; using System.Diagnostics; using System.IO; -namespace SPT_AKI_Installer.Aki.Helper +namespace SPTInstaller.Aki.Helper { public enum PatcherExitCode { @@ -17,11 +17,11 @@ namespace SPT_AKI_Installer.Aki.Helper public static class ProcessHelper { - public static GenericResult PatchClientFiles(FileInfo executable, DirectoryInfo workingDir) + public static Result PatchClientFiles(FileInfo executable, DirectoryInfo workingDir) { if (!executable.Exists || !workingDir.Exists) { - return GenericResult.FromError($"Could not find executable ({executable.Name}) or working directory ({workingDir.Name})"); + return Result.FromError($"Could not find executable ({executable.Name}) or working directory ({workingDir.Name})"); } var process = new Process(); @@ -36,25 +36,25 @@ namespace SPT_AKI_Installer.Aki.Helper switch ((PatcherExitCode)process.ExitCode) { case PatcherExitCode.Success: - return GenericResult.FromSuccess("Patcher Finished Successfully, extracting Aki"); + return Result.FromSuccess("Patcher Finished Successfully, extracting Aki"); case PatcherExitCode.ProgramClosed: - return GenericResult.FromError("Patcher was closed before completing!"); + return Result.FromError("Patcher was closed before completing!"); case PatcherExitCode.EftExeNotFound: - return GenericResult.FromError("EscapeFromTarkov.exe is missing from the install Path"); + return Result.FromError("EscapeFromTarkov.exe is missing from the install Path"); case PatcherExitCode.NoPatchFolder: - return GenericResult.FromError("Patchers Folder called 'Aki_Patches' is missing"); + return Result.FromError("Patchers Folder called 'Aki_Patches' is missing"); case PatcherExitCode.MissingFile: - return GenericResult.FromError("EFT files was missing a Vital file to continue"); + return Result.FromError("EFT files was missing a Vital file to continue"); case PatcherExitCode.PatchFailed: - return GenericResult.FromError("A patch failed to apply"); + return Result.FromError("A patch failed to apply"); default: - return GenericResult.FromError("an unknown error occurred in the patcher"); + return Result.FromError("an unknown error occurred in the patcher"); } } } diff --git a/SPTInstaller/Helpers/ServiceHelper.cs b/SPTInstaller/Helpers/ServiceHelper.cs new file mode 100644 index 0000000..7a3833f --- /dev/null +++ b/SPTInstaller/Helpers/ServiceHelper.cs @@ -0,0 +1,116 @@ +using Splat; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace SPTInstaller.Helpers +{ + /// + /// A helper class to handle simple service registration to Splat with constructor parameter injection + /// + /// Splat only recognizes the registered types and doesn't account for interfaces :( + internal static class ServiceHelper + { + private static bool TryRegisterInstance(object[] parameters = null) + { + var instance = Activator.CreateInstance(typeof(T2), parameters); + + if (instance != null) + { + Locator.CurrentMutable.RegisterConstant((T)instance); + return true; + } + + return false; + } + + /// + /// Register a class as a service + /// + /// class to register + public static void Register() where T : class => Register(); + + /// + /// Register a class as a service by another type + /// + /// type to register as + /// class to register + public static void Register() where T : class + { + var constructors = typeof(T2).GetConstructors(); + + foreach(var constructor in constructors) + { + var parmesan = constructor.GetParameters(); + + if(parmesan.Length == 0) + { + if (TryRegisterInstance()) return; + + continue; + } + + List parameters = new List(); + + for(int i = 0; i < parmesan.Length; i++) + { + var parm = parmesan[i]; + + var parmValue = Get(parm.ParameterType); + + if (parmValue != null) parameters.Add(parmValue); + } + + if (TryRegisterInstance(parameters.ToArray())) return; + } + } + + /// + /// Get a service from splat + /// + /// + /// + /// Thrown if the service isn't found + public static object Get(Type type) + { + var service = Locator.Current.GetService(type); + + if (service == null) + throw new InvalidOperationException($"Could not locate service of type '{type.Name}'"); + + return service; + } + + /// + /// Get a service from splat + /// + /// + /// + /// Thrown if the service isn't found + public static T Get() + { + var service = Locator.Current.GetService(); + + if (service == null) + throw new InvalidOperationException($"Could not locate service of type '{nameof(T)}'"); + + return service; + } + + /// + /// Get all services of a type + /// + /// + /// + /// thrown if no services are found + public static T[] GetAll() + { + var services = Locator.Current.GetServices().ToArray(); + + if (services == null || services.Count() == 0) + throw new InvalidOperationException($"Could not locate service of type '{nameof(T)}'"); + + return services; + } + } +} diff --git a/Aki.Helper/ZipHelper.cs b/SPTInstaller/Helpers/ZipHelper.cs similarity index 75% rename from Aki.Helper/ZipHelper.cs rename to SPTInstaller/Helpers/ZipHelper.cs index aabcf52..4462ae5 100644 --- a/Aki.Helper/ZipHelper.cs +++ b/SPTInstaller/Helpers/ZipHelper.cs @@ -1,16 +1,16 @@ using SharpCompress.Archives; using SharpCompress.Archives.Zip; using SharpCompress.Common; -using SPT_AKI_Installer.Aki.Core.Model; +using SPTInstaller.Models; using System; using System.IO; using System.Linq; -namespace SPT_AKI_Installer.Aki.Helper +namespace SPTInstaller.Aki.Helper { public static class ZipHelper { - public static GenericResult Decompress(FileInfo ArchivePath, DirectoryInfo OutputFolderPath, IProgress progress = null) + public static Result Decompress(FileInfo ArchivePath, DirectoryInfo OutputFolderPath, IProgress progress = null) { try { @@ -42,14 +42,14 @@ namespace SPT_AKI_Installer.Aki.Helper if (!OutputFolderPath.Exists) { - return GenericResult.FromError($"Failed to extract files: {ArchivePath.Name}"); + return Result.FromError($"Failed to extract files: {ArchivePath.Name}"); } - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } catch (Exception ex) { - return GenericResult.FromError(ex.Message); + return Result.FromError(ex.Message); } } } diff --git a/Aki.Core/Tasks/CopyClientTask.cs b/SPTInstaller/Installer Tasks/CopyClientTask.cs similarity index 52% rename from Aki.Core/Tasks/CopyClientTask.cs rename to SPTInstaller/Installer Tasks/CopyClientTask.cs index 99e5dc4..2940237 100644 --- a/Aki.Core/Tasks/CopyClientTask.cs +++ b/SPTInstaller/Installer Tasks/CopyClientTask.cs @@ -1,30 +1,29 @@ -using SPT_AKI_Installer.Aki.Core.Model; -using SPT_AKI_Installer.Aki.Helper; +using SPTInstaller.Aki.Helper; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; using System; using System.IO; using System.Threading.Tasks; -namespace SPT_AKI_Installer.Aki.Core.Tasks +namespace SPTInstaller.Installer_Tasks { - public class CopyClientTask : LiveTableTask + public class CopyClientTask : InstallerTaskBase { private InternalData _data; - public CopyClientTask(InternalData data) : base("Copy Client Files", false) + public CopyClientTask(InternalData data) : base("Copy Client Files") { _data = data; } - public override async Task RunAsync() + public override async Task TaskOperation() { - SetStatus("Copying", false); + SetStatus("Copying Client Files", 0); var originalGameDirInfo = new DirectoryInfo(_data.OriginalGamePath); var targetInstallDirInfo = new DirectoryInfo(_data.TargetInstallPath); - var progress = new Progress((d) => { Progress = (int)Math.Floor(d); }); - - return FileHelper.CopyDirectoryWithProgress(originalGameDirInfo, targetInstallDirInfo, progress); + return FileHelper.CopyDirectoryWithProgress(originalGameDirInfo, targetInstallDirInfo, (message, progress) => { SetStatus($"Copying Client Files", message, progress); }); } } } diff --git a/Aki.Core/Tasks/DownloadTask.cs b/SPTInstaller/Installer Tasks/DownloadTask.cs similarity index 65% rename from Aki.Core/Tasks/DownloadTask.cs rename to SPTInstaller/Installer Tasks/DownloadTask.cs index 7afa1fd..6603e26 100644 --- a/Aki.Core/Tasks/DownloadTask.cs +++ b/SPTInstaller/Installer Tasks/DownloadTask.cs @@ -1,34 +1,33 @@ using CG.Web.MegaApiClient; using Newtonsoft.Json; -using SPT_AKI_Installer.Aki.Core.Model; -using SPT_AKI_Installer.Aki.Helper; +using SPTInstaller.Aki.Helper; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; -namespace SPT_AKI_Installer.Aki.Core.Tasks +namespace SPTInstaller.Installer_Tasks { - public class DownloadTask : LiveTableTask + public class DownloadTask : InstallerTaskBase { private InternalData _data; - public DownloadTask(InternalData data) : base("Download Files", false) + public DownloadTask(InternalData data) : base("Download Files") { _data = data; } - private async Task BuildMirrorList() + private async Task BuildMirrorList() { - SetStatus("Downloading Mirror List", false); - - var progress = new Progress((d) => { Progress = (int)Math.Floor(d); }); + var progress = new Progress((d) => { SetStatus("Downloading Mirror List", (int)Math.Floor(d));}); var file = await DownloadCacheHelper.GetOrDownloadFileAsync("mirrors.json", _data.PatcherMirrorsLink, progress); if (file == null) { - return GenericResult.FromError("Failed to download mirror list"); + return Result.FromError("Failed to download mirror list"); } var mirrorsList = JsonConvert.DeserializeObject>(File.ReadAllText(file.FullName)); @@ -37,17 +36,17 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks { _data.PatcherReleaseMirrors = mirrors; - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } - return GenericResult.FromError("Failed to deserialize mirrors list"); + return Result.FromError("Failed to deserialize mirrors list"); } - private async Task DownloadPatcherFromMirrors(IProgress progress) + private async Task DownloadPatcherFromMirrors(IProgress progress) { foreach (var mirror in _data.PatcherReleaseMirrors) { - SetStatus($"Downloading Patcher: {mirror.Link}", false); + SetStatus($"Downloading Patcher: {mirror.Link}"); // mega is a little weird since they use encryption, but thankfully there is a great library for their api :) if (mirror.Link.StartsWith("https://mega")) @@ -69,7 +68,7 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks continue; } - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } catch { @@ -82,15 +81,17 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks if (_data.PatcherZipInfo != null) { - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } } - return GenericResult.FromError("Failed to download Patcher"); + return Result.FromError("Failed to download Patcher"); } - public override async Task RunAsync() + public override async Task TaskOperation() { + var progress = new Progress((d) => { SetStatus("", (int)Math.Floor(d)); }); + if (_data.PatchNeeded) { var buildResult = await BuildMirrorList(); @@ -100,9 +101,8 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks return buildResult; } - Progress = 0; + SetStatus("", 0); - var progress = new Progress((d) => { Progress = (int)Math.Floor(d); }); var patcherDownloadRresult = await DownloadPatcherFromMirrors(progress); if (!patcherDownloadRresult.Succeeded) @@ -111,20 +111,16 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks } } - SetStatus("Downloading SPT-AKI", false); + SetStatus("Downloading SPT-AKI", 0); - Progress = 0; - - var akiProgress = new Progress((d) => { Progress = (int)Math.Floor(d); }); - - _data.AkiZipInfo = await DownloadCacheHelper.GetOrDownloadFileAsync("sptaki.zip", _data.AkiReleaseDownloadLink, akiProgress, _data.AkiReleaseHash); + _data.AkiZipInfo = await DownloadCacheHelper.GetOrDownloadFileAsync("sptaki.zip", _data.AkiReleaseDownloadLink, progress, _data.AkiReleaseHash); if (_data.AkiZipInfo == null) { - return GenericResult.FromError("Failed to download spt-aki"); + return Result.FromError("Failed to download spt-aki"); } - return GenericResult.FromSuccess(); + return Result.FromSuccess(); } } } \ No newline at end of file diff --git a/Aki.Core/Tasks/IntializationTask.cs b/SPTInstaller/Installer Tasks/IntializationTask.cs similarity index 50% rename from Aki.Core/Tasks/IntializationTask.cs rename to SPTInstaller/Installer Tasks/IntializationTask.cs index 501be14..b91f68b 100644 --- a/Aki.Core/Tasks/IntializationTask.cs +++ b/SPTInstaller/Installer Tasks/IntializationTask.cs @@ -1,11 +1,12 @@ -using SPT_AKI_Installer.Aki.Core.Model; -using SPT_AKI_Installer.Aki.Helper; +using SPTInstaller.Aki.Helper; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; using System.IO; using System.Threading.Tasks; -namespace SPT_AKI_Installer.Aki.Core.Tasks +namespace SPTInstaller.Installer_Tasks { - public class InitializationTask : LiveTableTask + public class InitializationTask : InstallerTaskBase { private InternalData _data; @@ -14,13 +15,13 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks _data = data; } - public override async Task RunAsync() + public override async Task TaskOperation() { _data.OriginalGamePath = PreCheckHelper.DetectOriginalGamePath(); if (_data.OriginalGamePath == null) { - return GenericResult.FromError("EFT IS NOT INSTALLED!"); + return Result.FromError("EFT IS NOT INSTALLED!"); } var result = PreCheckHelper.DetectOriginalGameVersion(_data.OriginalGamePath); @@ -34,21 +35,21 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks if (_data.OriginalGamePath == null) { - return GenericResult.FromError("Unable to find EFT OG directory, please make sure EFT is installed. Please also run EFT once"); + return Result.FromError("Unable to find EFT OG directory, please make sure EFT is installed. Please also run EFT once"); } if (_data.OriginalGamePath == _data.TargetInstallPath) { - return GenericResult.FromError("Installer is located in EFT's original directory. Please move the installer to a seperate folder as per the guide"); + return Result.FromError("Installer is located in EFT's original directory. Please move the installer to a seperate folder as per the guide"); } if (File.Exists(Path.Join(_data.TargetInstallPath, "EscapeFromTarkov.exe"))) { - return GenericResult.FromError("Installer is located in a Folder that has existing Game Files. Please make sure the installer is in a fresh folder as per the guide"); + return Result.FromError("Installer is located in a Folder that has existing Game Files. Please make sure the installer is in a fresh folder as per the guide"); } - return GenericResult.FromSuccess($"Current Game Version: {_data.OriginalGameVersion}"); + return Result.FromSuccess($"Current Game Version: {_data.OriginalGameVersion}"); } } } diff --git a/SPTInstaller/Installer Tasks/PreChecks/NetCore6PreCheck.cs b/SPTInstaller/Installer Tasks/PreChecks/NetCore6PreCheck.cs new file mode 100644 index 0000000..fa6ffdd --- /dev/null +++ b/SPTInstaller/Installer Tasks/PreChecks/NetCore6PreCheck.cs @@ -0,0 +1,58 @@ +using SPTInstaller.Models; +using System; +using System.Diagnostics; +using System.Threading.Tasks; + +namespace SPTInstaller.Installer_Tasks.PreChecks +{ + public class NetCore6PreCheck : PreCheckBase + { + public NetCore6PreCheck() : base(".Net Core 6 Desktop Runtime", false) + { + } + + public override async Task CheckOperation() + { + var minRequiredVersion = new Version("6.0.0"); + string[] output; + + try + { + var proc = Process.Start(new ProcessStartInfo() + { + FileName = "dotnet", + Arguments = "--list-runtimes", + RedirectStandardOutput = true, + CreateNoWindow = true + }); + + proc.WaitForExit(); + + output = proc.StandardOutput.ReadToEnd().Split("\r\n"); + } + catch (Exception ex) + { + // TODO: logging + return false; + } + + foreach (var lineVersion in output) + { + if (lineVersion.StartsWith("Microsoft.WindowsDesktop.App") && lineVersion.Split(" ").Length > 1) + { + string stringVerion = lineVersion.Split(" ")[1]; + + var foundVersion = new Version(stringVerion); + + // not fully sure if we should only check for 6.x.x versions or if higher major versions are ok -waffle + if (foundVersion >= minRequiredVersion) + { + return true; + } + } + } + + return false; + } + } +} diff --git a/SPTInstaller/Installer Tasks/PreChecks/NetFramework472PreCheck.cs b/SPTInstaller/Installer Tasks/PreChecks/NetFramework472PreCheck.cs new file mode 100644 index 0000000..f190460 --- /dev/null +++ b/SPTInstaller/Installer Tasks/PreChecks/NetFramework472PreCheck.cs @@ -0,0 +1,46 @@ +using Microsoft.Win32; +using SPTInstaller.Models; +using System; +using System.Threading.Tasks; + +namespace SPTInstaller.Installer_Tasks.PreChecks +{ + public class NetFramework472PreCheck : PreCheckBase + { + public NetFramework472PreCheck() : base(".Net Framework 4.7.2", false) + { + } + + public override async Task CheckOperation() + { + try + { + var minRequiredVersion = new Version("4.7.2"); + + var key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full"); + + if (key == null) + { + return false; + } + + var value = key.GetValue("Version"); + + if (value != null && value is string versionString) + { + var installedVersion = new Version(versionString); + + return installedVersion > minRequiredVersion; + } + + return false; + } + catch (Exception ex) + { + // TODO: log exceptions + + return false; + } + } + } +} diff --git a/Aki.Core/Tasks/ReleaseCheckTask.cs b/SPTInstaller/Installer Tasks/ReleaseCheckTask.cs similarity index 70% rename from Aki.Core/Tasks/ReleaseCheckTask.cs rename to SPTInstaller/Installer Tasks/ReleaseCheckTask.cs index 76bfd05..83ff7dd 100644 --- a/Aki.Core/Tasks/ReleaseCheckTask.cs +++ b/SPTInstaller/Installer Tasks/ReleaseCheckTask.cs @@ -1,15 +1,14 @@ using Gitea.Api; using Gitea.Client; -using Gitea.Model; -using SPT_AKI_Installer.Aki.Core.Model; -using SPT_AKI_Installer.Aki.Helper; +using SPTInstaller.Aki.Helper; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; using System; -using System.Text.RegularExpressions; using System.Threading.Tasks; -namespace SPT_AKI_Installer.Aki.Core.Tasks +namespace SPTInstaller.Installer_Tasks { - public class ReleaseCheckTask : LiveTableTask + public class ReleaseCheckTask : InstallerTaskBase { private InternalData _data; @@ -18,19 +17,19 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks _data = data; } - public override async Task RunAsync() + public override async Task TaskOperation() { - Configuration.Default.BasePath = "https://dev.sp-tarkov.com/api/v1"; - - var repo = new RepositoryApi(Configuration.Default); - try { - SetStatus("Checking SPT Releases", false); + Configuration.Default.BasePath = "https://dev.sp-tarkov.com/api/v1"; + + var repo = new RepositoryApi(Configuration.Default); + + SetStatus("Checking SPT Releases"); var akiRepoReleases = await repo.RepoListReleasesAsync("SPT-AKI", "Stable-releases"); - SetStatus("Checking for Patches", false); + SetStatus("Checking for Patches"); var patchRepoReleases = await repo.RepoListReleasesAsync("SPT-AKI", "Downgrade-Patches"); @@ -53,7 +52,7 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks if (IntGameVersion < IntAkiVersion) { - return GenericResult.FromError("Your client is outdated. Please update EFT"); + return Result.FromError("Your client is outdated. Please update EFT"); } @@ -64,7 +63,7 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks if (comparePatchToAki == null && patchNeedCheck) { - return GenericResult.FromError("No patcher available for your version"); + return Result.FromError("No patcher available for your version"); } _data.PatchNeeded = patchNeedCheck; @@ -76,12 +75,12 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks status += " - Patch Available"; } - return GenericResult.FromSuccess(status); + return Result.FromSuccess(status); } - catch (Exception) + catch (Exception ex) { //request failed - return GenericResult.FromError("Request Failed"); + return Result.FromError($"Request Failed:\n{ex.Message}"); } } } diff --git a/Aki.Core/Tasks/SetupClientTask.cs b/SPTInstaller/Installer Tasks/SetupClientTask.cs similarity index 62% rename from Aki.Core/Tasks/SetupClientTask.cs rename to SPTInstaller/Installer Tasks/SetupClientTask.cs index 0657e9d..7d55f97 100644 --- a/Aki.Core/Tasks/SetupClientTask.cs +++ b/SPTInstaller/Installer Tasks/SetupClientTask.cs @@ -1,22 +1,23 @@ -using SPT_AKI_Installer.Aki.Core.Model; -using SPT_AKI_Installer.Aki.Helper; +using SPTInstaller.Aki.Helper; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; using System; using System.IO; using System.Linq; using System.Threading.Tasks; -namespace SPT_AKI_Installer.Aki.Core.Tasks +namespace SPTInstaller.Installer_Tasks { - public class SetupClientTask : LiveTableTask + public class SetupClientTask : InstallerTaskBase { private InternalData _data; - public SetupClientTask(InternalData data) : base("Setup Client", false) + public SetupClientTask(InternalData data) : base("Setup Client") { _data = data; } - public override async Task RunAsync() + public override async Task TaskOperation() { var targetInstallDirInfo = new DirectoryInfo(_data.TargetInstallPath); @@ -24,14 +25,15 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks var patcherEXE = new FileInfo(Path.Join(_data.TargetInstallPath, "patcher.exe")); + var progress = new Progress((d) => { SetStatus("", (int)Math.Floor(d)); }); + + if (_data.PatchNeeded) { // extract patcher files - SetStatus("Extrating Patcher", false); + SetStatus("Extrating Patcher", 0); - var extractPatcherProgress = new Progress((d) => { Progress = (int)Math.Floor(d); }); - - var extractPatcherResult = ZipHelper.Decompress(_data.PatcherZipInfo, patcherOutputDir, extractPatcherProgress); + var extractPatcherResult = ZipHelper.Decompress(_data.PatcherZipInfo, patcherOutputDir, progress); if (!extractPatcherResult.Succeeded) { @@ -39,14 +41,11 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks } // copy patcher files to install directory - SetStatus("Copying Patcher", false); + SetStatus("Copying Patcher", 0); var patcherDirInfo = patcherOutputDir.GetDirectories("Patcher*", SearchOption.TopDirectoryOnly).First(); - - var copyPatcherProgress = new Progress((d) => { Progress = (int)Math.Floor(d); }); - - var copyPatcherResult = FileHelper.CopyDirectoryWithProgress(patcherDirInfo, targetInstallDirInfo, copyPatcherProgress); + var copyPatcherResult = FileHelper.CopyDirectoryWithProgress(patcherDirInfo, targetInstallDirInfo, progress); if (!copyPatcherResult.Succeeded) { @@ -55,7 +54,9 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks // run patcher SetStatus("Running Patcher"); - StartDrawingIndeterminateProgress(); + + // TODO: indeterminate progress indicator + //StartDrawingIndeterminateProgress(); var patchingResult = ProcessHelper.PatchClientFiles(patcherEXE, targetInstallDirInfo); @@ -65,15 +66,10 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks } } - - // extract release files - SetStatus("Extracting Release"); - StartDrawingProgress(); + SetStatus("Extracting Release", 0); - var extractReleaseProgress = new Progress((d) => { Progress = (int)Math.Floor(d); }); - - var extractReleaseResult = ZipHelper.Decompress(_data.AkiZipInfo, targetInstallDirInfo, extractReleaseProgress); + var extractReleaseResult = ZipHelper.Decompress(_data.AkiZipInfo, targetInstallDirInfo, progress); if (!extractReleaseResult.Succeeded) { @@ -82,7 +78,9 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks // cleanup temp files SetStatus("Cleanup"); - StartDrawingIndeterminateProgress(); + + // TODO: indeterminate progress indicator + //StartDrawingIndeterminateProgress(); if(_data.PatchNeeded) { @@ -90,7 +88,7 @@ namespace SPT_AKI_Installer.Aki.Core.Tasks patcherEXE.Delete(); } - return GenericResult.FromSuccess("SPT is Setup. Happy Playing!"); + return Result.FromSuccess("SPT is Setup. Happy Playing!"); } } } diff --git a/SPTInstaller/Installer Tasks/TestTask.cs b/SPTInstaller/Installer Tasks/TestTask.cs new file mode 100644 index 0000000..2ce0d1a --- /dev/null +++ b/SPTInstaller/Installer Tasks/TestTask.cs @@ -0,0 +1,35 @@ +using SPTInstaller.Interfaces; +using SPTInstaller.Models; +using System; +using System.Threading.Tasks; + +namespace SPTInstaller.Installer_Tasks +{ + internal class TestTask : InstallerTaskBase + { + public static TestTask FromRandomName() => new TestTask($"Test Task #{new Random().Next(0, 9999)}"); + + public TestTask(string name) : base(name) + { + } + + public async override Task TaskOperation() + { + int total = 4; + TimeSpan interval = TimeSpan.FromSeconds(1); + + for(int i = 0; i < total; i++) + { + var count = i + 1; + string progressMessage = $"Running Task: {Name}"; + int progress = (int)Math.Floor((double)count / total * 100); + + SetStatus(progressMessage, $"Details: ({count}/{total})", progress); + + await Task.Delay(interval); + } + + return Result.FromSuccess(); + } + } +} diff --git a/SPTInstaller/Interfaces/IPreCheck.cs b/SPTInstaller/Interfaces/IPreCheck.cs new file mode 100644 index 0000000..0618875 --- /dev/null +++ b/SPTInstaller/Interfaces/IPreCheck.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; + +namespace SPTInstaller.Interfaces +{ + public interface IPreCheck + { + public string Id { get; } + public string Name { get; } + public bool IsRequired { get; } + + public bool IsPending { get; set; } + + public bool Passed { get; } + + public Task RunCheck(); + } +} diff --git a/SPTInstaller/Interfaces/IProgressableTask.cs b/SPTInstaller/Interfaces/IProgressableTask.cs new file mode 100644 index 0000000..3eb58b2 --- /dev/null +++ b/SPTInstaller/Interfaces/IProgressableTask.cs @@ -0,0 +1,24 @@ +using System.Threading.Tasks; + +namespace SPTInstaller.Interfaces +{ + public interface IProgressableTask + { + public string Id { get; } + public string Name { get; } + + public bool IsCompleted { get; } + + public bool HasErrors { get; } + + public bool IsRunning { get; } + + public string StatusMessage { get; } + + public int Progress { get; } + + public bool ShowProgress { get; } + + public Task RunAsync(); + } +} diff --git a/SPTInstaller/Interfaces/IResult.cs b/SPTInstaller/Interfaces/IResult.cs new file mode 100644 index 0000000..43d9a75 --- /dev/null +++ b/SPTInstaller/Interfaces/IResult.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SPTInstaller.Interfaces +{ + public interface IResult + { + public bool Succeeded { get; } + public string Message { get; } + } +} diff --git a/Aki.Core/Model/DownloadMirror.cs b/SPTInstaller/Models/DownloadMirror.cs similarity index 73% rename from Aki.Core/Model/DownloadMirror.cs rename to SPTInstaller/Models/DownloadMirror.cs index 9756b1f..c3dbc2c 100644 --- a/Aki.Core/Model/DownloadMirror.cs +++ b/SPTInstaller/Models/DownloadMirror.cs @@ -1,4 +1,4 @@ -namespace SPT_AKI_Installer.Aki.Core.Model +namespace SPTInstaller.Models { public class DownloadMirror { diff --git a/SPTInstaller/Models/InstallerTaskBase.cs b/SPTInstaller/Models/InstallerTaskBase.cs new file mode 100644 index 0000000..22c410f --- /dev/null +++ b/SPTInstaller/Models/InstallerTaskBase.cs @@ -0,0 +1,134 @@ +using Avalonia.Threading; +using ReactiveUI; +using SPTInstaller.Interfaces; +using System; +using System.Threading.Tasks; + +namespace SPTInstaller.Models +{ + public abstract class InstallerTaskBase : ReactiveObject, IProgressableTask + { + private string _id; + public string Id + { + get => _id; + private set => this.RaiseAndSetIfChanged(ref _id, value); + } + + private string _name; + public string Name + { + get => _name; + private set => this.RaiseAndSetIfChanged(ref _name, value); + } + + private bool _isComleted; + public bool IsCompleted + { + get => _isComleted; + private set => this.RaiseAndSetIfChanged(ref _isComleted, value); + } + + private bool _hasErrors; + public bool HasErrors + { + get => _hasErrors; + private set => this.RaiseAndSetIfChanged(ref _hasErrors, value); + } + + private bool _isRunning; + public bool IsRunning + { + get => _isRunning; + private set => this.RaiseAndSetIfChanged(ref _isRunning, value); + } + + private int _progress; + public int Progress + { + get => _progress; + private set => this.RaiseAndSetIfChanged(ref _progress, value); + } + + private bool _showProgress; + public bool ShowProgress + { + get => _showProgress; + private set => this.RaiseAndSetIfChanged(ref _showProgress, value); + } + + private string _statusMessage; + public string StatusMessage + { + get => _statusMessage; + private set => this.RaiseAndSetIfChanged(ref _statusMessage, value); + } + + private string _statusDetails; + public string StatusDetails + { + get => _statusDetails; + private set => this.RaiseAndSetIfChanged(ref _statusDetails, value); + } + + /// + /// Update the status message and optionally a progress bar value + /// + /// + /// + /// If message is empty, it isn't updated. If progress is null, the progress bar will be hidden. Details is not touched with this method + public void SetStatus(string message, int? progress = null) => SetStatus(message, "", progress); + + /// + /// Update the status message, status details, and optionlly a progress bar value + /// + /// + /// + /// If message or details are empty, it isn't updated. If progress is null, the progress bar will be hidden + public void SetStatus(string message, string details, int? progress = null) + { + StatusMessage = String.IsNullOrWhiteSpace(message) ? StatusMessage : message; + StatusDetails = String.IsNullOrWhiteSpace(details) ? StatusDetails : details; + ShowProgress = progress != null; + + if (progress != null) + { + Progress = progress.Value; + } + } + + public InstallerTaskBase(string name) + { + Name = name; + Id = Guid.NewGuid().ToString(); + } + + /// + /// A method for the install controller to call. Do not use this within your task + /// + /// + public async Task RunAsync() + { + IsRunning = true; + + var result = await TaskOperation(); + + IsRunning = false; + + if (!result.Succeeded) + { + // TODO: handle error state + } + + IsCompleted = true; + + return result; + } + + /// + /// The task you want to run + /// + /// + public abstract Task TaskOperation(); + } +} diff --git a/Aki.Core/InternalData.cs b/SPTInstaller/Models/InternalData.cs similarity index 93% rename from Aki.Core/InternalData.cs rename to SPTInstaller/Models/InternalData.cs index 7672384..0ea2914 100644 --- a/Aki.Core/InternalData.cs +++ b/SPTInstaller/Models/InternalData.cs @@ -1,8 +1,7 @@ -using SPT_AKI_Installer.Aki.Core.Model; -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; -namespace SPT_AKI_Installer.Aki.Core +namespace SPTInstaller.Models { public class InternalData { diff --git a/SPTInstaller/Models/PreCheckBase.cs b/SPTInstaller/Models/PreCheckBase.cs new file mode 100644 index 0000000..416986f --- /dev/null +++ b/SPTInstaller/Models/PreCheckBase.cs @@ -0,0 +1,76 @@ +using ReactiveUI; +using SPTInstaller.Interfaces; +using System; +using System.Threading.Tasks; + +namespace SPTInstaller.Models +{ + public abstract class PreCheckBase : ReactiveObject, IPreCheck + { + private string _id; + public string Id + { + get => _id; + set => this.RaiseAndSetIfChanged(ref _id, value); + } + + private string _name; + public string Name + { + get => _name; + set => this.RaiseAndSetIfChanged(ref _name, value); + } + + private bool _required; + public bool IsRequired + { + get => _required; + set => this.RaiseAndSetIfChanged(ref _required, value); + } + + private bool _passed; + public bool Passed + { + get => _passed; + set => this.RaiseAndSetIfChanged(ref _passed, value); + } + + private bool _isPending; + public bool IsPending + { + get => _isPending; + set => this.RaiseAndSetIfChanged(ref _isPending, value); + } + + private bool _isRunning; + public bool IsRunning + { + get => _isRunning; + set => this.RaiseAndSetIfChanged(ref _isRunning, value); + } + + /// + /// Base class for pre-checks to run before installation + /// + /// The display name of the pre-check + /// If installation should stop on failing this pre-check + public PreCheckBase(string name, bool required) + { + Name = name; + IsRequired = required; + Id = Guid.NewGuid().ToString(); + } + + public async Task RunCheck() + { + IsRunning = true; + Passed = await CheckOperation(); + IsRunning = false; + IsPending = false; + + return Passed ? Result.FromSuccess() : Result.FromError($"PreCheck Failed: {Name}"); + } + + public abstract Task CheckOperation(); + } +} diff --git a/SPTInstaller/Models/Result.cs b/SPTInstaller/Models/Result.cs new file mode 100644 index 0000000..bb520d0 --- /dev/null +++ b/SPTInstaller/Models/Result.cs @@ -0,0 +1,20 @@ +using SPTInstaller.Interfaces; + +namespace SPTInstaller.Models +{ + public class Result : IResult + { + public bool Succeeded { get; private set; } + + public string Message { get; private set; } + + protected Result(string message, bool succeeded) + { + Message = message; + Succeeded = succeeded; + } + + public static Result FromSuccess(string message = "") => new Result(message, true); + public static Result FromError(string message) => new Result(message, false); + } +} diff --git a/SPTInstaller/Program.cs b/SPTInstaller/Program.cs new file mode 100644 index 0000000..02ae679 --- /dev/null +++ b/SPTInstaller/Program.cs @@ -0,0 +1,64 @@ +using Avalonia; +using Avalonia.ReactiveUI; +using ReactiveUI; +using Splat; +using SPTInstaller.Controllers; +using SPTInstaller.Helpers; +using SPTInstaller.Installer_Tasks; +using SPTInstaller.Installer_Tasks.PreChecks; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; +using System; +using System.Linq; +using System.Reflection; + +namespace SPTInstaller +{ + internal class Program + { + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + { + Locator.CurrentMutable.RegisterViewsForViewModels(Assembly.GetExecutingAssembly()); + + // Register all the things + // Regestering as base classes so ReactiveUI works correctly. Doesn't seem to like the interfaces :( + ServiceHelper.Register(); + ServiceHelper.Register(); + ServiceHelper.Register(); +#if !TEST + ServiceHelper.Register(); + ServiceHelper.Register(); + ServiceHelper.Register(); + ServiceHelper.Register(); + ServiceHelper.Register(); +#else + for(int i = 0; i < 5; i++) + { + Locator.CurrentMutable.RegisterConstant(TestTask.FromRandomName()); + } +#endif + + // need the interfaces for the controller and splat won't resolve them since we need to base classes in avalonia (what a mess), so doing it manually here + var tasks = Locator.Current.GetServices().ToArray() as IProgressableTask[]; + var preChecks = Locator.Current.GetServices().ToArray() as IPreCheck[]; + + var installer = new InstallController(tasks, preChecks); + + // manually register install controller + Locator.CurrentMutable.RegisterConstant(installer); + + return AppBuilder.Configure() + .UsePlatformDetect() + .LogToTrace() + .UseReactiveUI(); + } + } +} \ No newline at end of file diff --git a/shared/Gitea.dll b/SPTInstaller/Resources/Gitea.dll similarity index 100% rename from shared/Gitea.dll rename to SPTInstaller/Resources/Gitea.dll diff --git a/SPTInstaller/Roots.xml b/SPTInstaller/Roots.xml new file mode 100644 index 0000000..407eac0 --- /dev/null +++ b/SPTInstaller/Roots.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/SPTInstaller/SPTInstaller.csproj b/SPTInstaller/SPTInstaller.csproj new file mode 100644 index 0000000..c856e40 --- /dev/null +++ b/SPTInstaller/SPTInstaller.csproj @@ -0,0 +1,42 @@ + + + WinExe + net6.0 + true + enable + true + app.manifest + icon.ico + Assets\icon.ico + Debug;Release;TEST + + + + + + + + + + + + + + + + + + + + + + + + + + + + Z:\dev_stuff\EftPatchHelper\EftPatchHelper\EftPatchHelper\Resources\Gitea.dll + + + diff --git a/SPTInstaller/ViewLocator.cs b/SPTInstaller/ViewLocator.cs new file mode 100644 index 0000000..bf62b2d --- /dev/null +++ b/SPTInstaller/ViewLocator.cs @@ -0,0 +1,28 @@ +using Avalonia.Controls; +using Avalonia.Controls.Templates; +using SPTInstaller.ViewModels; +using System; + +namespace SPTInstaller +{ + public class ViewLocator : IDataTemplate + { + public IControl Build(object data) + { + var name = data.GetType().FullName!.Replace("ViewModel", "View"); + var type = Type.GetType(name); + + if (type != null) + { + return (Control)Activator.CreateInstance(type)!; + } + + return new TextBlock { Text = "Not Found: " + name }; + } + + public bool Match(object data) + { + return data is ViewModelBase; + } + } +} \ No newline at end of file diff --git a/SPTInstaller/ViewModels/InstallViewModel.cs b/SPTInstaller/ViewModels/InstallViewModel.cs new file mode 100644 index 0000000..d4fc310 --- /dev/null +++ b/SPTInstaller/ViewModels/InstallViewModel.cs @@ -0,0 +1,38 @@ +using ReactiveUI; +using SPTInstaller.Controllers; +using SPTInstaller.Helpers; +using SPTInstaller.Interfaces; +using SPTInstaller.Models; +using System.Collections.ObjectModel; +using System.Linq; +using System.Threading.Tasks; + +namespace SPTInstaller.ViewModels +{ + public class InstallViewModel : ViewModelBase + { + private IProgressableTask _currentTask; + public IProgressableTask CurrentTask + { + get => _currentTask; + set => this.RaiseAndSetIfChanged(ref _currentTask, value); + } + + public ObservableCollection MyTasks { get; set; } + = new ObservableCollection(ServiceHelper.GetAll()); + + public InstallViewModel(IScreen host) : base(host) + { + var installer = ServiceHelper.Get(); + + installer.TaskChanged += (sender, task) => CurrentTask = task; + + Task.Run(async () => + { + var result = await installer.RunTasks(); + + NavigateTo(new MessageViewModel(HostScreen, result.Message)); + }); + } + } +} diff --git a/SPTInstaller/ViewModels/MainWindowViewModel.cs b/SPTInstaller/ViewModels/MainWindowViewModel.cs new file mode 100644 index 0000000..5663d15 --- /dev/null +++ b/SPTInstaller/ViewModels/MainWindowViewModel.cs @@ -0,0 +1,33 @@ +using Avalonia; +using ReactiveUI; + +namespace SPTInstaller.ViewModels +{ + public class MainWindowViewModel : ReactiveObject, IActivatableViewModel, IScreen + { + public RoutingState Router { get; } = new RoutingState(); + public ViewModelActivator Activator { get; } = new ViewModelActivator(); + + public MainWindowViewModel() + { + Router.Navigate.Execute(new PreChecksViewModel(this)); + } + + public void CloseCommand() + { + if (Application.Current.ApplicationLifetime is Avalonia.Controls.ApplicationLifetimes.IClassicDesktopStyleApplicationLifetime desktopApp) + { + desktopApp.MainWindow.Close(); + } + } + + public void MinimizeCommand() + { + if (Application.Current.ApplicationLifetime is Avalonia.Controls.ApplicationLifetimes.IClassicDesktopStyleApplicationLifetime desktopApp) + { + desktopApp.MainWindow.WindowState = Avalonia.Controls.WindowState.Minimized; + } + } + + } +} \ No newline at end of file diff --git a/SPTInstaller/ViewModels/MessageViewModel.cs b/SPTInstaller/ViewModels/MessageViewModel.cs new file mode 100644 index 0000000..7841c84 --- /dev/null +++ b/SPTInstaller/ViewModels/MessageViewModel.cs @@ -0,0 +1,29 @@ +using Avalonia; +using ReactiveUI; +using System.Windows.Input; + +namespace SPTInstaller.ViewModels +{ + public class MessageViewModel : ViewModelBase + { + private string _Message; + public string Message + { + get => _Message; + set => this.RaiseAndSetIfChanged(ref _Message, value); + } + + public ICommand CloseCommand { get; set; } = ReactiveCommand.Create(() => + { + if (Application.Current.ApplicationLifetime is Avalonia.Controls.ApplicationLifetimes.IClassicDesktopStyleApplicationLifetime desktopApp) + { + desktopApp.MainWindow.Close(); + } + }); + + public MessageViewModel(IScreen Host, string message) : base(Host) + { + Message = message; + } + } +} diff --git a/SPTInstaller/ViewModels/PreChecksViewModel.cs b/SPTInstaller/ViewModels/PreChecksViewModel.cs new file mode 100644 index 0000000..014235d --- /dev/null +++ b/SPTInstaller/ViewModels/PreChecksViewModel.cs @@ -0,0 +1,53 @@ +using ReactiveUI; +using SPTInstaller.Controllers; +using SPTInstaller.Helpers; +using SPTInstaller.Models; +using System; +using System.Collections.ObjectModel; +using System.Threading.Tasks; +using System.Windows.Input; + +namespace SPTInstaller.ViewModels +{ + public class PreChecksViewModel : ViewModelBase + { + private string _InstallPath; + public string InstallPath + { + get => _InstallPath; + set => this.RaiseAndSetIfChanged(ref _InstallPath, value); + } + + ObservableCollection PreChecks { get; set; } + = new ObservableCollection(ServiceHelper.GetAll()); + + ICommand StartInstallCommand { get; set; } + + public PreChecksViewModel(IScreen host) : base(host) + { + var data = ServiceHelper.Get(); + var installer = ServiceHelper.Get(); + + if(data == null || installer == null) + { + // TODO: abort to message view + } + + data.TargetInstallPath = Environment.CurrentDirectory; + + InstallPath = data.TargetInstallPath; + + StartInstallCommand = ReactiveCommand.Create(() => + { + NavigateTo(new InstallViewModel(HostScreen)); + }); + + + Task.Run(async () => + { + // TODO: if a required precheck fails, abort to message view + var result = await installer.RunPreChecks(); + }); + } + } +} diff --git a/SPTInstaller/ViewModels/ViewModelBase.cs b/SPTInstaller/ViewModels/ViewModelBase.cs new file mode 100644 index 0000000..8d85c91 --- /dev/null +++ b/SPTInstaller/ViewModels/ViewModelBase.cs @@ -0,0 +1,61 @@ +using Avalonia.Threading; +using ReactiveUI; +using System.Threading.Tasks; +using System; + +namespace SPTInstaller.ViewModels +{ + public class ViewModelBase : ReactiveObject, IActivatableViewModel, IRoutableViewModel + { + public ViewModelActivator Activator { get; } = new ViewModelActivator(); + + public string? UrlPathSegment => Guid.NewGuid().ToString().Substring(0, 7); + + public IScreen HostScreen { get; } + + /// + /// Delay the return of the viewmodel + /// + /// The amount of time in milliseconds to delay + /// The viewmodel after the delay time + /// Useful to delay the navigation to another view. For instance, to allow an animation to complete. + private async Task WithDelay(int Milliseconds) + { + await Task.Delay(Milliseconds); + + return this; + } + + /// + /// Navigate to another viewmodel after a delay + /// + /// + /// + /// + public async Task NavigateToWithDelay(ViewModelBase ViewModel, int Milliseconds) + { + await Dispatcher.UIThread.InvokeAsync(async () => + { + HostScreen.Router.Navigate.Execute(await ViewModel.WithDelay(Milliseconds)); + }); + } + + /// + /// Navigate to another viewmodel + /// + /// + public void NavigateTo(ViewModelBase ViewModel) + { + Dispatcher.UIThread.InvokeAsync(() => + { + HostScreen.Router.Navigate.Execute(ViewModel); + }); + } + + public ViewModelBase(IScreen Host) + { + HostScreen = Host; + } + } + +} \ No newline at end of file diff --git a/SPTInstaller/Views/InstallView.axaml b/SPTInstaller/Views/InstallView.axaml new file mode 100644 index 0000000..2e5395b --- /dev/null +++ b/SPTInstaller/Views/InstallView.axaml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/SPTInstaller/Views/InstallView.axaml.cs b/SPTInstaller/Views/InstallView.axaml.cs new file mode 100644 index 0000000..813f5f0 --- /dev/null +++ b/SPTInstaller/Views/InstallView.axaml.cs @@ -0,0 +1,14 @@ +using Avalonia.Controls; +using Avalonia.ReactiveUI; +using SPTInstaller.ViewModels; + +namespace SPTInstaller.Views +{ + public partial class InstallView : ReactiveUserControl + { + public InstallView() + { + InitializeComponent(); + } + } +} diff --git a/SPTInstaller/Views/MainWindow.axaml b/SPTInstaller/Views/MainWindow.axaml new file mode 100644 index 0000000..7534f05 --- /dev/null +++ b/SPTInstaller/Views/MainWindow.axaml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + diff --git a/SPTInstaller/Views/MainWindow.axaml.cs b/SPTInstaller/Views/MainWindow.axaml.cs new file mode 100644 index 0000000..edc3580 --- /dev/null +++ b/SPTInstaller/Views/MainWindow.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia.Controls; + +namespace SPTInstaller.Views +{ + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/SPTInstaller/Views/MessageView.axaml b/SPTInstaller/Views/MessageView.axaml new file mode 100644 index 0000000..79e7ac7 --- /dev/null +++ b/SPTInstaller/Views/MessageView.axaml @@ -0,0 +1,26 @@ + + + + + +