From a57cda2c3750c160020e38d984087e19c58ea741 Mon Sep 17 00:00:00 2001 From: Die4Ever Date: Wed, 30 Oct 2024 20:53:50 -0500 Subject: [PATCH 01/87] fix zombies on NG+ in halloween modes --- DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc index 1b8eaa4e0..b3435d331 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc @@ -92,10 +92,10 @@ simulated function RandomizeSettings(bool forceMenuOptions) settings.enemiesshuffled = 100; MaxRandoVal(settings.enemies_nonhumans); - if(DXRFlags(self).IsHalloweenMode()) { + if(DXRFlags(self).IsHalloweenMode()) { // this cast is pretty nasty settings.enemyrespawn = rng(10) + 15; } - if(chance_single(33)) { // this cast is pretty nasty + else if(chance_single(33)) { settings.enemyrespawn = rng(120) + 120; } else { settings.enemyrespawn = 0; From 43ab58c174966611e3c3d50cfc995508c518c917 Mon Sep 17 00:00:00 2001 From: Jeffrey Thomas Piercy Date: Thu, 31 Oct 2024 07:11:00 -0700 Subject: [PATCH 02/87] make paris chill discription more clear (#1025) --- DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc index 8a454b4e2..431f999f5 100644 --- a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc +++ b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc @@ -264,7 +264,7 @@ function BindControls(optional string action) EnumOption("Unchanged Non-human Stats", 0, f.settings.bot_stats); EnumOption("Random Non-human Stats", 100, f.settings.bot_stats); - NewMenuItem("Paris Chill %", "Removes MJ12 from the Champs-Elysees."); + NewMenuItem("Paris Chill %", "Chance to remove all MJ12 from the Champs-Elysees."); Slider(f.remove_paris_mj12, 0, 100); From 20544677bd96be7379a6c122b817518162026573 Mon Sep 17 00:00:00 2001 From: Jeffrey Thomas Piercy Date: Thu, 31 Oct 2024 15:41:05 -0700 Subject: [PATCH 03/87] immediately mark OverhearLebedev_Played as failed when you talk to lebedev (#1021) --- DXRModules/DeusEx/Classes/DXREvents.uc | 142 +++++++++++++------------ 1 file changed, 72 insertions(+), 70 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXREvents.uc b/DXRModules/DeusEx/Classes/DXREvents.uc index 245d2a758..ecdb7bba3 100644 --- a/DXRModules/DeusEx/Classes/DXREvents.uc +++ b/DXRModules/DeusEx/Classes/DXREvents.uc @@ -513,6 +513,7 @@ function SetWatchFlags() { break; case "03_NYC_747": RewatchFlag('747Ambrosia'); + WatchFlag('MeetLebedev_Played'); WatchFlag('PlayerKilledLebedev'); WatchFlag('AnnaKilledLebedev'); @@ -2069,24 +2070,59 @@ static function int GetBingoFailedEvents(string eventname, out string failed[5]) // keep in mind that a goal can only be marked as failed if it isn't already marked as completed switch (eventname) { - case "JuanLebedev_Dead": - failed[num_failed++] = "LebedevLived"; - return num_failed; - case "Aimee_Dead": - case "LeMerchant_Dead": - failed[num_failed++] = "AimeeLeMerchantLived"; + + case "SubHostageFemale_Dead": + case "SubHostageMale_Unconscious": + case "SubHostageFemale_Dead": + case "SubHostageMale_Unconscious": + failed[num_failed++] = "SubwayHostagesSaved"; return num_failed; - case "MaggieChow_Dead": - failed[num_failed++] = "MaggieLived"; + case "AlleyBum_Dead": + case "AlleyBum_Unconscious": + failed[num_failed++] = "AlleyBumRescued"; return num_failed; case "FordSchick_Dead": failed[num_failed++] = "FordSchickRescued"; return num_failed; - case "AlleyBum_Dead": - failed[num_failed++] = "AlleyBumRescued"; + case "GeneratorBlown": + failed[num_failed++] = "JockSecondStory"; return num_failed; - case "Camille_Dead": - failed[num_failed++] = "CamilleConvosDone"; + case "SandraRenton_Dead": + failed[num_failed++] = "FamilySquabbleWrapUpGilbertDead_Played"; + return num_failed; + case "GilbertRenton_Dead": + if (class'DXRando'.default.dxr.localURL != "04_NYC_HOTEL") { + failed[num_failed++] = "FamilySquabbleWrapUpGilbertDead_Played"; + } + failed[num_failed++] = "GaveRentonGun"; + // fallthrough + case "FemaleHostage_Dead": + case "MaleHostage_Dead": + failed[num_failed++] = "HotelHostagesSaved"; + return num_failed; + case "Josh_Dead": + failed[num_failed++] = "JoshFed"; + return num_failed; + case "Billy_Dead": + failed[num_failed++] = "M02BillyDone"; + return num_failed; + case "Don_Dead": + case "Don_Unconscious": + case "Lenny_Dead": + case "Lenny_Unconscious": + failed[num_failed++] = "GiveZyme"; + return num_failed; + case "MeetLebedev_Played": + failed[num_failed++] = "OverhearLebedev_Played"; + return num_failed; + case "JuanLebedev_Dead": + failed[num_failed++] = "LebedevLived"; + return num_failed; + case "JoJoFine_Dead": + failed[num_failed++] = "GaveRentonGun"; + return num_failed; + case "NSFSignalSent": + failed[num_failed++] = "M04PlayerLikesUNATCO_Played"; return num_failed; case "Miguel_Dead": failed[num_failed++] = "Terrorist_peeptime"; @@ -2095,11 +2131,17 @@ static function int GetBingoFailedEvents(string eventname, out string failed[5]) failed[num_failed++] = "nsfwander"; failed[num_failed++] = "MiguelLeaving"; return num_failed; - case "Josh_Dead": - failed[num_failed++] = "JoshFed"; + case "JaimeLeftBehind": + failed[num_failed++] = "M07MeetJaime_Played"; + // fallthrough + case "JaimeRecruited": + failed[num_failed++] = "KnowsGuntherKillphrase"; return num_failed; - case "Billy_Dead": - failed[num_failed++] = "M02BillyDone"; + case "M06Junkie_Dead": + failed[num_failed++] = "M06PaidJunkie"; + return num_failed; + case "MarketBum1_Dead": // the guy who sells you the Versalife map and camo, isn't in the market, and looks nothing like a bum + failed[num_failed++] = "M06BoughtVersaLife"; return num_failed; case "Canal_Bartender_Dead": failed[num_failed++] = "Canal_Bartender_Question4"; @@ -2107,14 +2149,13 @@ static function int GetBingoFailedEvents(string eventname, out string failed[5]) case "ClubBartender_Dead": failed[num_failed++] = "M06BartenderQuestion3"; return num_failed; - case "Joshua_Dead": - failed[num_failed++] = "JoshuaInterrupted_Played"; + case "MaggieChow_Dead": + failed[num_failed++] = "MaggieLived"; return num_failed; case "Mamasan_Dead": case "Date1_Dead": failed[num_failed++] = "M06JCHasDate"; return num_failed; - case "KnowsAboutNanoSword": failed[num_failed++] = "M06JCHasDate"; // fallthrough @@ -2122,71 +2163,32 @@ static function int GetBingoFailedEvents(string eventname, out string failed[5]) case "ClubTessa_Dead": failed[num_failed++] = "ClubEntryPaid"; return num_failed; - - // omg these hostage names - case "SubHostageFemale_Dead": - case "SubHostageMale_Dead": - failed[num_failed++] = "SubwayHostagesSaved"; - return num_failed; - case "JoJoFine_Dead": - failed[num_failed++] = "GaveRentonGun"; - return num_failed; - - case "SandraRenton_Dead": - failed[num_failed++] = "FamilySquabbleWrapUpGilbertDead_Played"; + case "Supervisor01_Dead": + failed[num_failed++] = "Supervisor_Paid"; return num_failed; - case "GilbertRenton_Dead": - if (class'DXRando'.default.dxr.localURL != "04_NYC_HOTEL") { - failed[num_failed++] = "FamilySquabbleWrapUpGilbertDead_Played"; - } - failed[num_failed++] = "GaveRentonGun"; - // fallthrough - case "FemaleHostage_Dead": - case "MaleHostage_Dead": - failed[num_failed++] = "HotelHostagesSaved"; + case "Aimee_Dead": + case "LeMerchant_Dead": + failed[num_failed++] = "AimeeLeMerchantLived"; return num_failed; - case "hostage_female_Dead": case "hostage_Dead": failed[num_failed++] = "SilhouetteHostagesAllRescued"; return num_failed; - case "M06Junkie_Dead": - failed[num_failed++] = "M06PaidJunkie"; - return num_failed; - case "MarketBum1_Dead": // the guy who sells you the Versalife map and camo, isn't in the market, and looks nothing like a bum - failed[num_failed++] = "M06BoughtVersaLife"; - return num_failed; - case "Supervisor01_Dead": - failed[num_failed++] = "Supervisor_Paid"; - return num_failed; - case "Joshua_Dead": - failed[num_failed++] = "JoshuaInterrupted_Played"; - return num_failed; - case "Don_Dead": - case "Lenny_Dead": - failed[num_failed++] = "GiveZyme"; - return num_failed; case "Renault_Dead": failed[num_failed++] = "SoldRenaultZyme"; failed[num_failed++] = "MeetRenault_Played"; return num_failed; - case "TimBaker_Dead": - failed[num_failed++] = "MeetTimBaker_Played"; + case "Joshua_Dead": + failed[num_failed++] = "JoshuaInterrupted_Played"; + return num_failed; + case "Camille_Dead": + failed[num_failed++] = "CamilleConvosDone"; return num_failed; case "drbernard_Dead": failed[num_failed++] = "MeetDrBernard_Played"; return num_failed; - case "JaimeLeftBehind": - failed[num_failed++] = "M07MeetJaime_Played"; - // fallthrough - case "JaimeRecruited": - failed[num_failed++] = "KnowsGuntherKillphrase"; - return num_failed; - case "NSFSignalSent": - failed[num_failed++] = "M04PlayerLikesUNATCO_Played"; - return num_failed; - case "GeneratorBlown": - failed[num_failed++] = "JockSecondStory"; + case "TimBaker_Dead": + failed[num_failed++] = "MeetTimBaker_Played"; return num_failed; } From c14c16ff4cd96b6eba05be3c085d0f1d3bcb44df Mon Sep 17 00:00:00 2001 From: Jeffrey Thomas Piercy Date: Thu, 31 Oct 2024 15:44:22 -0700 Subject: [PATCH 04/87] make it impossible to get around the airfield elevator teleporter (#1022) --- DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 13 +++++++++++++ DXRModules/DeusEx/Classes/DXREntranceRando.uc | 2 +- DXRando/DeusEx/Classes/DynamicTeleporter.uc | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc index 39c051890..62be54a9e 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc @@ -69,6 +69,7 @@ function PreFirstEntryMapFixes() local Actor a; local Trigger t; local Teleporter tele; + local DynamicTeleporter dt; local #var(prefix)NanoKey k; local #var(prefix)InformationDevices i; local #var(prefix)UNATCOTroop unatco; @@ -250,6 +251,18 @@ function PreFirstEntryMapFixes() tele.SetCollisionSize(tele.CollisionRadius, tele.CollisionHeight + 10); } } + + foreach AllActors(class'Teleporter', tele) { + if (tele.event != 'BHElevatorEnt') continue; + + tele.event = ''; + tele.SetCollision(false, false, false); + break; + } + dt = Spawn(class'DynamicTeleporter',,, vectm(2048.0, -2827.0, 56.1)); + dt.SetCollisionSize(50.0, 40.0); + dt.SetDestination("03_NYC_AirfieldHeliBase",, "BHElevatorEnt"); + //Add teleporter hint text to Jock foreach AllActors(class'#var(prefix)MapExit',exit){break;} foreach AllActors(class'#var(prefix)BlackHelicopter',jock){break;} diff --git a/DXRModules/DeusEx/Classes/DXREntranceRando.uc b/DXRModules/DeusEx/Classes/DXREntranceRando.uc index 350f26731..d087f4179 100644 --- a/DXRModules/DeusEx/Classes/DXREntranceRando.uc +++ b/DXRModules/DeusEx/Classes/DXREntranceRando.uc @@ -1162,7 +1162,7 @@ function NavigationPoint AdjustTeleporter(NavigationPoint p) } else { if( dt != None ) - dt.SetDestination(newMap, '', newTag); + dt.SetDestination(newMap,, newTag); #ifdef injections else if( m != None ) m.SetDestination(newMap, '', newTag); diff --git a/DXRando/DeusEx/Classes/DynamicTeleporter.uc b/DXRando/DeusEx/Classes/DynamicTeleporter.uc index 596667b9e..e5d88cef5 100644 --- a/DXRando/DeusEx/Classes/DynamicTeleporter.uc +++ b/DXRando/DeusEx/Classes/DynamicTeleporter.uc @@ -3,7 +3,7 @@ class DynamicTeleporter extends Teleporter; var name destName; var int yaw; -function SetDestination(string destURL, name dest_actor_name, optional string tag, optional int dest_yaw) +function SetDestination(string destURL, optional name dest_actor_name, optional string tag, optional int dest_yaw) {// TODO: make dest_yaw a required argument, have to add rotations to DXRBacktracking URL = destURL $ "#" $ tag; destName = dest_actor_name; From a8b8ea10f4ed8efd229f3382db5a6b7989ed9fc0 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Fri, 1 Nov 2024 17:25:05 -0400 Subject: [PATCH 05/87] Fix Sign up for the Knicks bingo goal and Rescue the bum on the Basketball court. Rearranged switch in SetWatchFlags for bingo goals to avoid future confusion. --- DXRModules/DeusEx/Classes/DXREvents.uc | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXREvents.uc b/DXRModules/DeusEx/Classes/DXREvents.uc index ecdb7bba3..4040ebcec 100644 --- a/DXRModules/DeusEx/Classes/DXREvents.uc +++ b/DXRModules/DeusEx/Classes/DXREvents.uc @@ -388,8 +388,11 @@ function SetWatchFlags() { break; case "02_NYC_STREET": + WatchFlag('AlleyBumRescued'); WatchFlag('M02SallyDone'); WatchFlag('MeetSandraRenton_Played'); + bt = class'BingoTrigger'.static.Create(self,GetKnicksTag(),vectm(0,0,0)); + bt.bingoEvent="MadeBasket"; break; case "02_NYC_HOTEL": WatchFlag('M02HostagesRescued');// for the hotel, set by Mission02.uc @@ -555,18 +558,6 @@ function SetWatchFlags() { case "04_NYC_UNDERGROUND": class'BingoTrigger'.static.ProxCreate(self,'SewerSurfin',vectm(-50,-125,-1000),750,40,class'#var(prefix)JoeGreeneCarcass'); break; - case "05_NYC_UNATCOISLAND": - bt = class'BingoTrigger'.static.Create(self,'nsfwander',vectm(0,0,0)); - bt.Tag='SavedMiguel'; - - bt = class'BingoTrigger'.static.Create(self,'CommsPit',vectm(-6385.640625,1441.881470,-247.901276),40,40); - - break; - case "02_NYC_STREET": - WatchFlag('AlleyBumRescued'); - bt = class'BingoTrigger'.static.Create(self,GetKnicksTag(),vectm(0,0,0)); - bt.bingoEvent="MadeBasket"; - break; case "04_NYC_STREET": bt = class'BingoTrigger'.static.Create(self,GetKnicksTag(),vectm(0,0,0)); bt.bingoEvent="MadeBasket"; @@ -683,6 +674,13 @@ function SetWatchFlags() { bt = class'BingoTrigger'.static.Create(self,'ManderleyMail',vectm(0,0,0)); bt.Tag = 'holoswitch'; + break; + case "05_NYC_UNATCOISLAND": + bt = class'BingoTrigger'.static.Create(self,'nsfwander',vectm(0,0,0)); + bt.Tag='SavedMiguel'; + + bt = class'BingoTrigger'.static.Create(self,'CommsPit',vectm(-6385.640625,1441.881470,-247.901276),40,40); + break; case "06_HONGKONG_WANCHAI_CANAL": WatchFlag('FoundScientistBody'); @@ -2070,7 +2068,7 @@ static function int GetBingoFailedEvents(string eventname, out string failed[5]) // keep in mind that a goal can only be marked as failed if it isn't already marked as completed switch (eventname) { - + case "SubHostageFemale_Dead": case "SubHostageMale_Unconscious": case "SubHostageFemale_Dead": From a80131d4de862f6fde2b163df5b5974a53479ecc Mon Sep 17 00:00:00 2001 From: Die4Ever Date: Fri, 1 Nov 2024 20:16:39 -0500 Subject: [PATCH 06/87] bump version to v3.2.5.0 Alpha for dev purposes --- DXRCore/DeusEx/Classes/DXRVersion.uc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DXRCore/DeusEx/Classes/DXRVersion.uc b/DXRCore/DeusEx/Classes/DXRVersion.uc index 1786ef1c3..82f04f298 100644 --- a/DXRCore/DeusEx/Classes/DXRVersion.uc +++ b/DXRCore/DeusEx/Classes/DXRVersion.uc @@ -4,13 +4,13 @@ simulated static function CurrentVersion(optional out int major, optional out in { major=3; minor=2; - patch=4; - build=2;//build can't be higher than 99 + patch=5; + build=0;//build can't be higher than 99 } simulated static function bool VersionIsStable() { - return true; + return false; } simulated static function string VersionString(optional bool full) @@ -18,7 +18,7 @@ simulated static function string VersionString(optional bool full) local int major,minor,patch,build; local string status; - status = ""; + status = "Alpha"; if(status!="") { status = " " $ status; From 95b47be187339213f339fa0b300071e7d618cf3f Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 4 Nov 2024 21:16:07 -0500 Subject: [PATCH 07/87] The inventory description for Aug Canisters now show the aug location for the augs in the can, as well as the full description for both augs. --- .../DeusEx/Classes/PersonaScreenInventory.uc | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/DXRVanilla/DeusEx/Classes/PersonaScreenInventory.uc b/DXRVanilla/DeusEx/Classes/PersonaScreenInventory.uc index 7cc77363d..70f999983 100644 --- a/DXRVanilla/DeusEx/Classes/PersonaScreenInventory.uc +++ b/DXRVanilla/DeusEx/Classes/PersonaScreenInventory.uc @@ -40,6 +40,8 @@ function UpdateWinInfo(Inventory inv) winInfo.AppendText(" / " $ anItem.maxCopies); }else if (ChargedPickup(anItem)!=None){ winInfo.AppendText("|n|nDuration: " $ CalcChargedPickupDurations(ChargedPickup(anItem))); + }else if (AugmentationCannister(anItem)!=None){ + UpdateAugCanDescription(AugmentationCannister(anItem)); } if (BioElectricCell(anItem)!=None){ @@ -47,6 +49,40 @@ function UpdateWinInfo(Inventory inv) } } +function UpdateAugCanDescription(AugmentationCannister ac) +{ + local string desc,augName,augLoc, augDesc; + local Int canIndex; + local Augmentation aug; + + //The title doesn't need to show the aug names + winInfo.winTitle.SetText(ac.default.itemName); + + //Add the aug location to the short description and include the info about the augs below that + desc = winInfo.winText.GetText(); + + for(canIndex=0; canIndex Date: Wed, 6 Nov 2024 20:06:23 -0500 Subject: [PATCH 08/87] New option to randomize the slot augs occupy. --- .../DeusEx/Classes/AugmentationManager.uc | 15 -- DXRBalance/DeusEx/Classes/BuffTechGoggles.uc | 4 +- DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc | 4 + DXRModules/DeusEx/Classes/DXRAugmentations.uc | 134 ++++++++++++++++-- DXRModules/DeusEx/Classes/DXRFlags.uc | 5 + DXRModules/DeusEx/Classes/DXRFlagsBase.uc | 6 + .../DeusEx/Classes/DXRFlagsNGPMaxRando.uc | 22 ++- DXRModules/DeusEx/Classes/DXRLoadouts.uc | 13 +- DXRVanilla/DeusEx/Classes/Player.uc | 18 +-- 9 files changed, 170 insertions(+), 51 deletions(-) diff --git a/DXRBalance/DeusEx/Classes/AugmentationManager.uc b/DXRBalance/DeusEx/Classes/AugmentationManager.uc index 8d7636b2d..454577745 100644 --- a/DXRBalance/DeusEx/Classes/AugmentationManager.uc +++ b/DXRBalance/DeusEx/Classes/AugmentationManager.uc @@ -69,21 +69,6 @@ function Augmentation GetAugByKey(int keyNum) return None; } -simulated function Augmentation GetAug(class AugClass) -{ - local Augmentation anAug; - - anAug = FirstAug; - while(anAug != None) - { - if (anAug.Class == augClass) - return anAug; - anAug = anAug.next; - } - - return None; -} - // ---------------------------------------------------------------------- // GetAugLevelValue() // diff --git a/DXRBalance/DeusEx/Classes/BuffTechGoggles.uc b/DXRBalance/DeusEx/Classes/BuffTechGoggles.uc index f27caff9a..15e47a80f 100644 --- a/DXRBalance/DeusEx/Classes/BuffTechGoggles.uc +++ b/DXRBalance/DeusEx/Classes/BuffTechGoggles.uc @@ -35,7 +35,7 @@ function UpdateHUDDisplay(DeusExPlayer Player) local AugmentationDisplayWindow augDisplay; local float dist; - aug = AugVision(Player.AugmentationSystem.GetAug(class'AugVision')); + aug = AugVision(Player.AugmentationSystem.FindAugmentation(class'AugVision')); dist = CalcDistance(aug); augDisplay = DeusExRootWindow(Player.rootWindow).hud.augDisplay; @@ -69,7 +69,7 @@ function ChargedPickupEnd(DeusExPlayer Player) augDisplay.visionBlinder = None; } else { augDisplay.visionLevel -= 1; - aug = AugVision(Player.AugmentationSystem.GetAug(class'AugVision')); + aug = AugVision(Player.AugmentationSystem.FindAugmentation(class'AugVision')); augDisplay.visionLevelValue -= CalcDistance(aug); } diff --git a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc index 431f999f5..ea790cd13 100644 --- a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc +++ b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc @@ -362,6 +362,10 @@ function BindControls(optional string action) NewMenuItem("Aug Strength Rando %", "How much to randomize the strength of augmentations."); Slider(f.settings.aug_value_rando, 0, 100);// this is a wet/dry scale, 0 to 100% + NewMenuItem("", "Randomize which locations augs can be installed into."); + EnumOption("Randomize Aug Slots", 100, f.moresettings.aug_loc_rando); + EnumOption("Unchanged Aug Slots", 0, f.moresettings.aug_loc_rando); + NewGroup("New Game+"); NewMenuItem("Scaling %", "Scales the curve of New Game+ changes over successive loops. Set to -1 to disable. 100% is default."); diff --git a/DXRModules/DeusEx/Classes/DXRAugmentations.uc b/DXRModules/DeusEx/Classes/DXRAugmentations.uc index 224d14558..5799fa07a 100644 --- a/DXRModules/DeusEx/Classes/DXRAugmentations.uc +++ b/DXRModules/DeusEx/Classes/DXRAugmentations.uc @@ -17,21 +17,27 @@ function FirstEntry() function AnyEntry() { - local Augmentation a; Super.AnyEntry(); - foreach AllActors(class'Augmentation', a) { - RandoAug(a); - } + RandoAllAugs(); } simulated function PlayerAnyEntry(#var(PlayerPawn) p) { - local Augmentation a; Super.PlayerAnyEntry(p); + + RandoAllAugs(); +} + +simulated function RandoAllAugs() +{ + local Augmentation a; + foreach AllActors(class'Augmentation', a) { RandoAug(a); } + + CleanUpAugCounts(player()); //Recount the number of augs in each slot } function PostFirstEntry() @@ -43,7 +49,7 @@ function PostFirstEntry() Super.PostFirstEntry(); #ifdef injections - aug = AugVision(player().AugmentationSystem.GetAug(class'AugVision')); + aug = AugVision(player().AugmentationSystem.FindAugmentation(class'AugVision')); foreach AllActors(class'TechGoggles', goggles) { goggles.Description = class'TechGoggles'.static.CalcDescription(aug); } @@ -161,6 +167,7 @@ function static _DefaultAugsMask(DXRando dxr, out int banned[50], out int numAug { local DXRLoadouts loadouts; local class a; + local Augmentation anAug; local int i; loadouts = DXRLoadouts(dxr.FindModule(class'DXRLoadouts')); @@ -176,7 +183,8 @@ function static _DefaultAugsMask(DXRando dxr, out int banned[50], out int numAug continue; } if( loadouts != None ) { - if( loadouts.StartedWithAug(a) ) { + anAug = loadouts.player().AugmentationSystem.FindAugmentation(a); + if( anAug!=None && loadouts.StartedWithAug(anAug) ) { banned[i] = 1; continue; } @@ -316,12 +324,45 @@ function static class PickRandomAug(DXRando dxr, out int banned[50 return aug; } +//Weighted to match the number of slots per location +simulated function PickRandomAugLocation(Augmentation a) +{ + switch (rng(9)){ + case 0: + a.AugmentationLocation = LOC_Cranial; + break; + case 1: + a.AugmentationLocation = LOC_Eye; + break; + case 2: + case 3: + case 4: + a.AugmentationLocation = LOC_Torso; + break; + case 5: + a.AugmentationLocation = LOC_Arm; + break; + case 6: + a.AugmentationLocation = LOC_Leg; + break; + case 7: + case 8: + a.AugmentationLocation = LOC_Subdermal; + break; + } +} + simulated function RandoAug(Augmentation a) { local float aug_value_wet_dry; local string add_desc; if( dxr == None ) return; + if (a.AugmentationLocation!=LOC_Default && dxr.flags.moresettings.aug_loc_rando!=0){ + SetGlobalSeed("RandoAugLoc " $ a.class.name); + PickRandomAugLocation(a); + } + #ifdef injections if( #var(prefix)AugSpeed(a) != None ) { add_desc = "DXRando: Activating this aug instantly burns 1 energy in order to prevent abuse. "; @@ -524,7 +565,79 @@ static simulated function string DescriptionLevelExtended(Actor act, int i, out } } -simulated function RemoveRandomAug(#var(PlayerPawn) p) +simulated function CleanUpAugCounts(#var(PlayerPawn) p) +{ + local int i; + local Augmentation a; + local AugmentationManager am; + + am = p.AugmentationSystem; + + //Clear out the existing augCounts in each slot, since the slots were randomized... + for (i=0;i0 && augs!=None) { + oldseed = SetGlobalSeed("CleanupAugSlotRando"); //This seed doesn't really matter, just want to get the current seed + + augs.RandoAllAugs(); //Apply the new aug randomization (so we know what slot the augs will end up in) + randoSlotAugsRemoved = augs.CleanUpRandomSlotAugs(p); //Remove augs that no longer fit due to the newly assigned slots + l("CleanUpRandomSlotAugs removed "$randoSlotAugsRemoved$" augs due to new aug slot assignments"); + augsToRemove = augsToRemove - randoSlotAugsRemoved; //Count those removed augs towards the augs to remove for the new loop + + augs.FixAugHotkeys(p,false); //Hotkeys will have totally changed after randomizing the slots, make sure they're corrected + + ReapplySeed(oldseed); + } + + for (i = 0; i < augsToRemove; i++) if( augs != None ) augs.RemoveRandomAug(p); diff --git a/DXRModules/DeusEx/Classes/DXRLoadouts.uc b/DXRModules/DeusEx/Classes/DXRLoadouts.uc index 4cacf453f..623b8eff9 100644 --- a/DXRModules/DeusEx/Classes/DXRLoadouts.uc +++ b/DXRModules/DeusEx/Classes/DXRLoadouts.uc @@ -498,22 +498,25 @@ simulated function PlayerRespawn(#var(PlayerPawn) p) RandoStartingEquipment(p, true); } -function bool StartedWithAug(class a) +function bool StartedWithAug(Augmentation a) { local class aclass; + local Augmentation otherAug; local int i; - if( a.default.AugmentationLocation == LOC_Default ) + if( a.AugmentationLocation == LOC_Default ) return true; for(i=0; i < ArrayCount(__item_sets[loadout].starting_augs); i++) { aclass = __item_sets[loadout].starting_augs[i]; if( aclass == None ) continue; - if( aclass == a ) return true; + if( aclass == a.class ) return true; + + otherAug = player().AugmentationSystem.FindAugmentation(aclass); //speed, stealth, ninja, muscle... - if( aclass.default.AugmentationLocation == a.default.AugmentationLocation ) { - if( class'#var(prefix)AugmentationManager'.default.AugLocs[a.default.AugmentationLocation].NumSlots == 1 ) + if( otherAug!=None && otherAug.AugmentationLocation == a.AugmentationLocation ) { + if( class'#var(prefix)AugmentationManager'.default.AugLocs[a.AugmentationLocation].NumSlots == 1 ) return true; } } diff --git a/DXRVanilla/DeusEx/Classes/Player.uc b/DXRVanilla/DeusEx/Classes/Player.uc index 16f77a910..fd699ebb5 100644 --- a/DXRVanilla/DeusEx/Classes/Player.uc +++ b/DXRVanilla/DeusEx/Classes/Player.uc @@ -1173,23 +1173,7 @@ exec function crate(optional string name) exec function FixAugHotkeys() { - local AugmentationManager am; - local int hotkeynums[7], loc; - local Augmentation a; - - am = AugmentationSystem; - for(loc=0; loc Date: Wed, 6 Nov 2024 22:17:01 -0600 Subject: [PATCH 09/87] horde mode always have merchant --- DXRModules/DeusEx/Classes/DXRFlags.uc | 1 + 1 file changed, 1 insertion(+) diff --git a/DXRModules/DeusEx/Classes/DXRFlags.uc b/DXRModules/DeusEx/Classes/DXRFlags.uc index 05639c8b4..e670aba0f 100644 --- a/DXRModules/DeusEx/Classes/DXRFlags.uc +++ b/DXRModules/DeusEx/Classes/DXRFlags.uc @@ -687,6 +687,7 @@ function FlagsSettings SetDifficulty(int new_difficulty) settings.CombatDifficulty *= 0.75; #endif autosave = 5; // Ironman, autosaves and manual saves disabled + settings.merchants = 100; // horde mode handles the greenbots itself settings.medbots = 0; settings.repairbots = 0; From 06c9f649f362b1cba52eb474ef9d091b5933e481 Mon Sep 17 00:00:00 2001 From: Die4Ever Date: Wed, 6 Nov 2024 22:17:48 -0600 Subject: [PATCH 10/87] fix mishandled end credits values --- DXRModules/DeusEx/Classes/DXRFlags.uc | 6 +++--- DXRModules/DeusEx/Classes/DXRFlagsBase.uc | 19 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXRFlags.uc b/DXRModules/DeusEx/Classes/DXRFlags.uc index e670aba0f..a67d947d2 100644 --- a/DXRModules/DeusEx/Classes/DXRFlags.uc +++ b/DXRModules/DeusEx/Classes/DXRFlags.uc @@ -363,7 +363,7 @@ function CheckConfig() difficulty_settings[i].enemyrespawn = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 5; - difficulty_settings[i].skills_independent_levels = 100; + difficulty_settings[i].skills_independent_levels = 1; difficulty_settings[i].banned_skills = 9; difficulty_settings[i].banned_skill_levels = 7; difficulty_settings[i].minskill = 50; @@ -438,7 +438,7 @@ function CheckConfig() difficulty_settings[i].enemyrespawn = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 5; - difficulty_settings[i].skills_independent_levels = 100; + difficulty_settings[i].skills_independent_levels = 1; difficulty_settings[i].banned_skills = 9; difficulty_settings[i].banned_skill_levels = 9; difficulty_settings[i].minskill = 50; @@ -979,7 +979,7 @@ function int ScoreFlags() score += 1500 - settings.enemyrespawn; //settings.skills_disable_downgrades = 5; //settings.skills_reroll_missions = 5; - //settings.skills_independent_levels = 100; + //settings.skills_independent_levels = 1; score += ClampFlagValue(settings.banned_skills,0,100) * 30; score += ClampFlagValue(settings.banned_skill_levels,0,100) * 30; score += sqrt(settings.minskill) * 60; //Square root so the bonus tapers off as you get more extreme diff --git a/DXRModules/DeusEx/Classes/DXRFlagsBase.uc b/DXRModules/DeusEx/Classes/DXRFlagsBase.uc index af6e9309e..3d5719c7f 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsBase.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsBase.uc @@ -757,14 +757,17 @@ simulated function string flagValToHumanVal(name flagname, int val){ } case 'Rando_autosave': - if (val==0) { - return "Off"; - } else if (val==1) { - return "First Entry"; - } else if (val==2) { - return "Every Entry"; - } else if (val==3) { - return "Autosaves Only (Hardcore)"; + switch(val) { + case 0: return "Off"; + case 1: return "First Entry"; + case 2: return "Every Entry"; + case 3: return "Autosaves Only (Hardcore)"; + case 4: return "Extra Safe"; + case 5: return "Ironman"; + case 6: return "Limited Saves"; + case 7: return "Limited Fixed Saves"; + case 8: return "Unlimited Fixed Saves"; + case 9: return "Extreme Limited Fixed Saves"; } break; From 0c22932d171a43e5ccb53126fadf6b18b6b99ecd Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Thu, 7 Nov 2024 00:00:37 -0500 Subject: [PATCH 11/87] Aug Slot Rando now accepts a percentage from 0 to 100, chance for each aug to get a random slot. If unrandomized, the aug is forced back to its default location. --- DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc | 5 ++--- DXRModules/DeusEx/Classes/DXRAugmentations.uc | 12 ++++++++---- DXRModules/DeusEx/Classes/DXRFlagsBase.uc | 3 +-- DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc | 6 +++--- DXRModules/DeusEx/Classes/DXRLoadouts.uc | 6 ++++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc index ea790cd13..7fdaedaaa 100644 --- a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc +++ b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc @@ -362,9 +362,8 @@ function BindControls(optional string action) NewMenuItem("Aug Strength Rando %", "How much to randomize the strength of augmentations."); Slider(f.settings.aug_value_rando, 0, 100);// this is a wet/dry scale, 0 to 100% - NewMenuItem("", "Randomize which locations augs can be installed into."); - EnumOption("Randomize Aug Slots", 100, f.moresettings.aug_loc_rando); - EnumOption("Unchanged Aug Slots", 0, f.moresettings.aug_loc_rando); + NewMenuItem("Aug Slot Rando %", "The chance for each aug to randomize the body part it can be installed into"); + Slider(f.moresettings.aug_loc_rando, 0, 100); NewGroup("New Game+"); diff --git a/DXRModules/DeusEx/Classes/DXRAugmentations.uc b/DXRModules/DeusEx/Classes/DXRAugmentations.uc index 5799fa07a..2b47c0ace 100644 --- a/DXRModules/DeusEx/Classes/DXRAugmentations.uc +++ b/DXRModules/DeusEx/Classes/DXRAugmentations.uc @@ -358,9 +358,13 @@ simulated function RandoAug(Augmentation a) local string add_desc; if( dxr == None ) return; - if (a.AugmentationLocation!=LOC_Default && dxr.flags.moresettings.aug_loc_rando!=0){ - SetGlobalSeed("RandoAugLoc " $ a.class.name); + SetGlobalSeed("RandoAugLoc " $ a.class.name); + if (a.AugmentationLocation!=LOC_Default && chance_single(dxr.flags.moresettings.aug_loc_rando)){ PickRandomAugLocation(a); + } else { + //Make sure it's set to the default location if not randomizing + //(This allows it to revert in a later loop) + a.AugmentationLocation = a.Default.AugmentationLocation; } #ifdef injections @@ -585,7 +589,7 @@ simulated function CleanUpAugCounts(#var(PlayerPawn) p) } } -simulated function int CleanUpRandomSlotAugs(#var(PlayerPawn) p) +simulated function int CleanUpAugSlots(#var(PlayerPawn) p) { local int numAugs[7]; //Count of the number of augs in each slot local int augsRemoved, i, j; @@ -655,7 +659,7 @@ simulated function RemoveRandomAug(#var(PlayerPawn) p, optional bool singleSlot, if( #var(prefix)AugLight(a) != None || #var(prefix)AugIFF(a) != None || #var(prefix)AugDatalink(a) != None ) continue; - if( loadouts != None && loadouts.StartedWithAug(a) ) + if( loadouts != None && loadouts.StartedWithAug(a,true) ) continue; augs[numAugs++] = a; diff --git a/DXRModules/DeusEx/Classes/DXRFlagsBase.uc b/DXRModules/DeusEx/Classes/DXRFlagsBase.uc index 3d5719c7f..be884562b 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsBase.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsBase.uc @@ -690,6 +690,7 @@ simulated function string flagValToHumanVal(name flagname, int val){ case 'Rando_newgameplus_curve_scalar': case 'Rando_bot_weapons': case 'Rando_enemies_weapons': + case 'Rando_aug_loc_rando': return val$"%"; case 'Rando_enemyrespawn': @@ -775,14 +776,12 @@ simulated function string flagValToHumanVal(name flagname, int val){ case 'Rando_startinglocations': case 'Rando_goals': case 'Rando_infodevices': - case 'Rando_aug_loc_rando': if (val==0){ return "Unchanged"; } else if (val==100){ return "Randomized"; } break; - case 'Rando_skills_disable_downgrades': if (val==0){ return "Allowed"; diff --git a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc index 4e3124bc1..2a4403907 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc @@ -269,12 +269,12 @@ function NewGamePlus() augs = DXRAugmentations(dxr.FindModule(class'DXRAugmentations')); augsToRemove = newgameplus_num_removed_augs; - if (aug_loc_rando>0 && augs!=None) { + if (augs!=None) { oldseed = SetGlobalSeed("CleanupAugSlotRando"); //This seed doesn't really matter, just want to get the current seed augs.RandoAllAugs(); //Apply the new aug randomization (so we know what slot the augs will end up in) - randoSlotAugsRemoved = augs.CleanUpRandomSlotAugs(p); //Remove augs that no longer fit due to the newly assigned slots - l("CleanUpRandomSlotAugs removed "$randoSlotAugsRemoved$" augs due to new aug slot assignments"); + randoSlotAugsRemoved = augs.CleanUpAugSlots(p); //Remove augs that no longer fit due to the newly assigned slots + l("CleanUpAugSlots removed "$randoSlotAugsRemoved$" augs due to new aug slot assignments"); augsToRemove = augsToRemove - randoSlotAugsRemoved; //Count those removed augs towards the augs to remove for the new loop augs.FixAugHotkeys(p,false); //Hotkeys will have totally changed after randomizing the slots, make sure they're corrected diff --git a/DXRModules/DeusEx/Classes/DXRLoadouts.uc b/DXRModules/DeusEx/Classes/DXRLoadouts.uc index 623b8eff9..f91611f60 100644 --- a/DXRModules/DeusEx/Classes/DXRLoadouts.uc +++ b/DXRModules/DeusEx/Classes/DXRLoadouts.uc @@ -498,7 +498,9 @@ simulated function PlayerRespawn(#var(PlayerPawn) p) RandoStartingEquipment(p, true); } -function bool StartedWithAug(Augmentation a) +//Single Slot check is useful when trying to determine what augs are viable as aug choices, but not +//useful when just trying to legitimately see if you started with an aug due to loadout +function bool StartedWithAug(Augmentation a, optional bool ignoreSingleSlotCheck) { local class aclass; local Augmentation otherAug; @@ -515,7 +517,7 @@ function bool StartedWithAug(Augmentation a) otherAug = player().AugmentationSystem.FindAugmentation(aclass); //speed, stealth, ninja, muscle... - if( otherAug!=None && otherAug.AugmentationLocation == a.AugmentationLocation ) { + if(!ignoreSingleSlotCheck && otherAug!=None && otherAug.AugmentationLocation == a.AugmentationLocation ) { if( class'#var(prefix)AugmentationManager'.default.AugLocs[a.AugmentationLocation].NumSlots == 1 ) return true; } From 3d5142ce327f77867d5ef6a23d9d3c93f67b98ff Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Thu, 7 Nov 2024 20:11:16 -0500 Subject: [PATCH 12/87] Hacking window on computers now has a Use Biocell button --- DXRBalance/DeusEx/Classes/BalanceHacking.uc | 119 +++++++++++++++++++- 1 file changed, 117 insertions(+), 2 deletions(-) diff --git a/DXRBalance/DeusEx/Classes/BalanceHacking.uc b/DXRBalance/DeusEx/Classes/BalanceHacking.uc index 22d6991f3..3f2d43695 100644 --- a/DXRBalance/DeusEx/Classes/BalanceHacking.uc +++ b/DXRBalance/DeusEx/Classes/BalanceHacking.uc @@ -6,6 +6,11 @@ var TextWindow energyMeter; var Color colWhite; var int energyMeterTimer; +var PersonaActionButtonWindow btnBiocell; +var String BiocellButtonLabel; +var int biocellCount; + + function Tick(float deltaTime) { local Human p; @@ -63,9 +68,115 @@ function CreateHackMessageWindow() energyMeterTimer = AddTimer(0.1, true, 0, 'UpdateEnergyMeterTimer'); } +function CreateHackButton() +{ + local #var(PlayerPawn) p; + + //Make the hacking button + Super.CreateHackButton(); + + p = #var(PlayerPawn)(player); + if (p==None || p.bZeroRando) return; + + //Make the Biocell button as well + btnBiocell = PersonaActionButtonWindow(NewChild(Class'DXRPersonaActionButtonWindow')); + btnBioCell.minimumButtonWidth=111; + btnBioCell.SetPos(83,86); + btnBioCell.CenterText(true); + UpdateBiocellButtonCount(); +} + +function UpdateBiocellButtonCount() +{ + local #var(prefix)BioElectricCell bc; + local #var(PlayerPawn) p; + + p = #var(PlayerPawn)(player); + + if (p==None || btnBiocell==None || p.bZeroRando) return; + + if (p!=None){ + bc = #var(prefix)BioElectricCell(p.FindInventoryType(class'#var(prefix)BioElectricCell')); + if (bc!=None){ + biocellCount = bc.NumCopies; + } + } + + btnBiocell.SetButtonText(BiocellButtonLabel$" ("$biocellCount$")"); + + UpdateBiocellButtonClickability(); + +} + +function UpdateBiocellButtonClickability() +{ + local bool enable; + local #var(PlayerPawn) p; + + p = #var(PlayerPawn)(player); + enable=False; + + if (p==None || btnBiocell==None || p.bZeroRando) return; + + if (p!=None && biocellCount!=0){ + if (p.Energy Date: Fri, 8 Nov 2024 17:10:28 -0500 Subject: [PATCH 13/87] Hacking screen biocell count actually goes to 0 --- DXRBalance/DeusEx/Classes/BalanceHacking.uc | 1 + 1 file changed, 1 insertion(+) diff --git a/DXRBalance/DeusEx/Classes/BalanceHacking.uc b/DXRBalance/DeusEx/Classes/BalanceHacking.uc index 3f2d43695..24f132cbb 100644 --- a/DXRBalance/DeusEx/Classes/BalanceHacking.uc +++ b/DXRBalance/DeusEx/Classes/BalanceHacking.uc @@ -95,6 +95,7 @@ function UpdateBiocellButtonCount() if (p==None || btnBiocell==None || p.bZeroRando) return; + biocellCount = 0; if (p!=None){ bc = #var(prefix)BioElectricCell(p.FindInventoryType(class'#var(prefix)BioElectricCell')); if (bc!=None){ From a7b9b111374982e8473f2223e93360069dca68a5 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 9 Nov 2024 11:15:02 -0500 Subject: [PATCH 14/87] Improve Swirl and Health colour schemes so that some text is more visible and distinct. --- GUI/DeusEx/Classes/ColorThemeHUD_Health.uc | 12 +++++++++++- GUI/DeusEx/Classes/ColorThemeHUD_Swirl.uc | 14 ++++++++++++++ GUI/DeusEx/Classes/ColorThemeMenu_Health.uc | 12 +++++++++++- GUI/DeusEx/Classes/ColorThemeMenu_Swirl.uc | 14 ++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc b/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc index 7a2b831a3..6c7b7c10c 100644 --- a/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc +++ b/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc @@ -33,7 +33,17 @@ function UpdateColours() healthColour = class'ColorThemeMenu_Health'.static.GetHealthColor(player); for (i=0;i<=13;i++){ - Colors[i]=healthColour; + switch(i){ + case 6: //HUDColor_ButtonTextDisabled + case 11: //HUDColor_ListHighlight + //Dark Gray for disabled buttons and list highlights, so they stand out + Colors[i].R=20; + Colors[i].G=20; + Colors[i].B=20; + break; + default: + Colors[i]=healthColour; + } } if (DeusExRootWindow(player.rootWindow)!=None){ DeusExRootWindow(player.rootWindow).ChangeStyle(); diff --git a/GUI/DeusEx/Classes/ColorThemeHUD_Swirl.uc b/GUI/DeusEx/Classes/ColorThemeHUD_Swirl.uc index 3d5681358..cc76485f9 100644 --- a/GUI/DeusEx/Classes/ColorThemeHUD_Swirl.uc +++ b/GUI/DeusEx/Classes/ColorThemeHUD_Swirl.uc @@ -34,6 +34,20 @@ function RandomAllAngles() rgbAngle[i]=Rand(360); } } + +function BeginPlay() +{ + Super.BeginPlay(); + + //Offset some starting angles to improve visibility + rgbAngle[4]=(rgbAngle[6]+180)%360; //HUDColor_ButtonTextNormal + rgbAngle[5]=(rgbAngle[6]+120)%360; //HUDColor_ButtonTextFocus + //HUDColor_ButtonTextDisabled (6) stays as the default as it looks more inactive + rgbAngle[11]=(rgbAngle[8]+240)%360; //HUDColor_ListHighlight + rgbAngle[12]=(rgbAngle[8]+120)%360; //HUDColor_ListFocus + UpdateColours(); +} + function int getPositiveAngleDiff(int a, int b) { if (a Date: Sat, 9 Nov 2024 11:17:08 -0500 Subject: [PATCH 15/87] Add missing breaks --- GUI/DeusEx/Classes/ColorThemeHUD_Health.uc | 1 + GUI/DeusEx/Classes/ColorThemeMenu_Health.uc | 1 + 2 files changed, 2 insertions(+) diff --git a/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc b/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc index 6c7b7c10c..20c85a5bf 100644 --- a/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc +++ b/GUI/DeusEx/Classes/ColorThemeHUD_Health.uc @@ -43,6 +43,7 @@ function UpdateColours() break; default: Colors[i]=healthColour; + break; } } if (DeusExRootWindow(player.rootWindow)!=None){ diff --git a/GUI/DeusEx/Classes/ColorThemeMenu_Health.uc b/GUI/DeusEx/Classes/ColorThemeMenu_Health.uc index 74cf38fcd..350233ac8 100644 --- a/GUI/DeusEx/Classes/ColorThemeMenu_Health.uc +++ b/GUI/DeusEx/Classes/ColorThemeMenu_Health.uc @@ -66,6 +66,7 @@ function UpdateColours() break; default: Colors[i]=healthColour; + break; } } if (DeusExRootWindow(player.rootWindow)!=None){ From 4fbd3b4303b97bf659cd8e44a37a8a6647c795da Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 9 Nov 2024 15:38:25 -0500 Subject: [PATCH 16/87] Fix Walton Simons not having proper collision when he spawns at sub base if you started in OceanLab or later. --- .../DeusEx/Classes/DXRMissionsVandenberg.uc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc b/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc index eb5d38adf..fd512aead 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc @@ -317,7 +317,23 @@ function CreateGoal(out Goal g, GoalLocation Loc) GiveItem(sp,class'WeaponNanoSword'); sp.ConBindEvents(); - sp.bInWorld=False; + + //We directly set bInWorld here rather than using EnterWorld/LeaveWorld, + //because this is running before InitializePawn. InitializePawn will + //set up all the stuff necessary to handle his worldlyness. The call + //in MissionTimer can also hit EnterWorld in between this spawn and + //InitializePawn, so it can screw things up too. + if (dxr.flagbase.GetBool('schematic_downloaded')) + { + //Leave him in-world because he's being spawned and should already exist + //(Probably a WaltonWare mission start Oceanlab or later) + sp.bInWorld=True; //Not explicitly necessary, but here for clarity + WaltonAppeared=True; //Prevent the mission timer from triggering to bring him in + } else { + //Normal playthrough order, he would get spawned in out-of-world, then + //EnterWorld later, after you go to Oceanlab and come back + sp.bInWorld=False; + } ot.Event='WaltonSimons'; ot.Orders='Attacking'; From d16d617c0e6ceadae7f13fdd37520f05c7bd157d Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 9 Nov 2024 16:06:18 -0500 Subject: [PATCH 17/87] Add option to Legend Show Class to show collision values --- DXRFixes/DeusEx/Classes/ActorDisplayWindow.uc | 21 +++++++++++++++++++ .../DeusEx/Classes/DXRShowClassWindow.uc | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/DXRFixes/DeusEx/Classes/ActorDisplayWindow.uc b/DXRFixes/DeusEx/Classes/ActorDisplayWindow.uc index 5406f4688..3259a92c2 100644 --- a/DXRFixes/DeusEx/Classes/ActorDisplayWindow.uc +++ b/DXRFixes/DeusEx/Classes/ActorDisplayWindow.uc @@ -16,6 +16,7 @@ var int actorRadius; var bool bShowTagEvent; var bool bShowTagConnections; var bool bShowEventConnections; +var bool bShowCollision; function SetActorRadius(string newRadius) { @@ -136,6 +137,16 @@ function ShowEventConns(bool bShow) bShowEventConnections = bShow; } +function bool IsCollisionVisible() +{ + return bShowCollision; +} + +function ShowCollision(bool bShow) +{ + bShowCollision = bShow; +} + function string GetActorName(Actor a) { local string str; @@ -663,6 +674,16 @@ function DrawWindow(GC gc) barOffset += 5; } } + if (bShowCollision || bShowData) + { + str = str $ "|c8080ff"; + str = str $ "CollisionRadius=" $ trackActor.CollisionRadius $ CR() $ + "CollisionHeight=" $ trackActor.CollisionHeight $ CR() $ + "bCollideActors=" $ trackActor.bCollideActors $ CR() $ + "bCollideWorld=" $ trackActor.bCollideWorld $ CR() $ + "bBlockActors=" $ trackActor.bBlockActors $ CR() $ + "bBlockPlayers=" $ trackActor.bBlockPlayers $ CR(); + } if(bShowCustom && customAttrib != "") { str = str $ customAttrib $ ": " $ trackActor.GetPropertyText(customAttrib) $ CR(); diff --git a/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc b/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc index 337d19808..a95b34eb4 100644 --- a/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc +++ b/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc @@ -11,6 +11,7 @@ var ToolCheckboxWindow chkLimitRadius; var ToolCheckboxWindow chkTagEvent; var ToolCheckboxWindow chkTagConns; var ToolCheckboxWindow chkEventConns; +var ToolCheckboxWindow chkCollision; event InitWindow() { @@ -85,6 +86,9 @@ function CreateDXRandoControls() chkEventConns = CreateToolCheckbox(215, y, "Show Connections to Event (Red)", actorDisplay.IsEventConnsVisible()); y += 25; + chkCollision = CreateToolCheckbox(215, y, "Show Collision Values", actorDisplay.IsCollisionVisible()); + y += 25; + } function SaveSettings() @@ -101,6 +105,7 @@ function SaveSettings() actorDisplay.ShowTagEvent(chkTagEvent.GetToggle()); actorDisplay.ShowTagConns(chkTagConns.GetToggle()); actorDisplay.ShowEventConns(chkEventConns.GetToggle()); + actorDisplay.ShowCollision(chkCollision.GetToggle()); actorDisplay.LimitRadius(chkLimitRadius.GetToggle()); actorDisplay.SetActorRadius(radiusFilter.GetText()); From 1f75d2ddd21c505db3702c41ed902a0eba019a86 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 9 Nov 2024 20:46:52 -0500 Subject: [PATCH 18/87] Coolant Alarm moves with Generator Computer in mission 2. Alarm also plays at the generator location. #996 --- DXRMissions/DeusEx/Classes/DXRMissionsM02.uc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc index 5d4f529c1..a96ce2955 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc @@ -64,7 +64,8 @@ function int InitGoals(int mission, string map) AddMutualExclusion(generator_sewer, jock_sewer);// can't put Jock and the generator both in the sewers - AddGoal("02_NYC_WAREHOUSE", "Generator Computer", GOAL_TYPE2, 'ComputerPersonal5', PHYS_Falling); + goal = AddGoal("02_NYC_WAREHOUSE", "Generator Computer", GOAL_TYPE2, 'ComputerPersonal5', PHYS_Falling); + AddGoalActor(goal, 1, 'AmbientSoundTriggered3', PHYS_None); AddGoal("02_NYC_WAREHOUSE", "Email Computer", GOAL_TYPE2, 'ComputerPersonal0', PHYS_Falling); AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse Computer Room", GOAL_TYPE2 | VANILLA_GOAL, vect(1277.341797, -864.810913, 311.500397), rot(0, 16712, 0)); AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE2 | VANILLA_GOAL, vect(1002.848999, -897.071167, -136.499573), rot(0, -17064, 0)); @@ -300,6 +301,13 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) AmbientSoundTriggered(g.actors[i].a).SoundRadius = 1600; } } + + //Spawn an alarm sound at the generator as well (the original one goes with the computer) + a = Spawn(class'AmbientSoundTriggered',,'WarningSound', g.actors[0].a.Location); + AmbientSoundTriggered(a).savedSound=Sound'Ambient.Ambient.Klaxon4'; + AmbientSoundTriggered(a).bTriggerOnceOnly=True; + AmbientSoundTriggered(a).bActive=False; + } if(g.name == "Generator" && Loc.name != "Warehouse") { From 17ee7f217e9419814f1a9a4a792f56357a5e8fc3 Mon Sep 17 00:00:00 2001 From: Die4Ever Date: Sun, 10 Nov 2024 00:11:12 -0600 Subject: [PATCH 19/87] fix some things dependant on injection order seems like Linux gets a different file order, so DXRVanilla/DeusEx/Classes/Player.uc was no longer the tail-end class of the injection chain --- DXRVanilla/DeusEx/Classes/Player.uc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DXRVanilla/DeusEx/Classes/Player.uc b/DXRVanilla/DeusEx/Classes/Player.uc index fd699ebb5..03768639f 100644 --- a/DXRVanilla/DeusEx/Classes/Player.uc +++ b/DXRVanilla/DeusEx/Classes/Player.uc @@ -868,7 +868,7 @@ event WalkTexture( Texture Texture, vector StepLocation, vector StepNormal ) function Died(pawn Killer, name damageType, vector HitLocation) { - class'DXREvents'.static.AddPlayerDeath(GetDXR(), self, Killer, damageType, HitLocation); + class'DXREvents'.static.AddPlayerDeath(GetDXR(), #var(PlayerPawn)(self), Killer, damageType, HitLocation); Super.Died(Killer,damageType,HitLocation); } @@ -1024,7 +1024,7 @@ function HighlightCenterObjectLaser() local Vector loc; //Activate the aim laser any time you aren't seeing through your eyes - if (class'DXRAimLaserEmitter'.static.AimLaserShouldBeOn(self)){ + if (class'DXRAimLaserEmitter'.static.AimLaserShouldBeOn(#var(PlayerPawn)(self))){ if (aimLaser==None){ aimLaser = Spawn(class'DXRAimLaserEmitter', Self, , Location, Pawn(Owner).ViewRotation); if (aimLaser == None) { @@ -1173,7 +1173,7 @@ exec function crate(optional string name) exec function FixAugHotkeys() { - class'DXRAugmentations'.static.FixAugHotkeys(self,true); + class'DXRAugmentations'.static.FixAugHotkeys(#var(PlayerPawn)(self),true); } exec function ShuffleGoals() From 8b22a362d31e0289e253265e0f24075eb04f82dd Mon Sep 17 00:00:00 2001 From: Die4Ever Date: Sun, 10 Nov 2024 01:17:10 -0600 Subject: [PATCH 20/87] actually fix some things dependant on injection order seems like Linux gets a different file order, so DXRVanilla/DeusEx/Classes/Player.uc was no longer the tail-end class of the injection chain --- DXRModules/DeusEx/Classes/DXRAugmentations.uc | 5 ++++- DXRModules/DeusEx/Classes/DXREventsBase.uc | 5 ++++- DXRVanilla/DeusEx/Classes/Player.uc | 6 +++--- DXRando/DeusEx/Classes/DXRAimLaserEmitter.uc | 5 ++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXRAugmentations.uc b/DXRModules/DeusEx/Classes/DXRAugmentations.uc index 2b47c0ace..f1a6909b6 100644 --- a/DXRModules/DeusEx/Classes/DXRAugmentations.uc +++ b/DXRModules/DeusEx/Classes/DXRAugmentations.uc @@ -618,11 +618,14 @@ simulated function int CleanUpAugSlots(#var(PlayerPawn) p) } -static simulated function FixAugHotkeys(#var(PlayerPawn) p, bool verbose) +static simulated function FixAugHotkeys(PlayerPawn player, bool verbose) { local AugmentationManager am; local int hotkeynums[7], loc; local Augmentation a; + local #var(PlayerPawn) p; + + p = #var(PlayerPawn)(player); am = p.AugmentationSystem; for(loc=0; loc Date: Sun, 10 Nov 2024 11:25:31 -0500 Subject: [PATCH 21/87] Bring Revision mission goals in line with Vanilla for Mission 1 and 2 --- DXRMissions/DeusEx/Classes/DXRMissionsM01.uc | 57 +++++++++----- DXRMissions/DeusEx/Classes/DXRMissionsM02.uc | 80 ++++++++++---------- 2 files changed, 77 insertions(+), 60 deletions(-) diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM01.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM01.uc index dfb9fcc38..9ec2f64f0 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM01.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM01.uc @@ -64,33 +64,50 @@ function int InitGoals(int mission, string map) function int InitGoalsRev(int mission, string map) { - local int goal, loc, loc2; + local int leo, unatco, pauldock, harleydock, electric, hut, jail, top, topofbase; + local int boat_pauldock, boat_harleydock, boat_top, boat_hut; + + leo = AddGoal("01_NYC_UNATCOISLAND", "Terrorist Commander", NORMAL_GOAL, 'TerroristCommander0', PHYS_Falling); + AddGoalActor(leo, 1, 'DataLinkTrigger12', PHYS_None); + AddGoalActor(leo, 2, 'SkillAwardTrigger6', PHYS_None); - goal = AddGoal("01_NYC_UNATCOISLAND", "Terrorist Commander", NORMAL_GOAL, 'TerroristCommander0', PHYS_Falling); - AddGoalActor(goal, 1, 'DataLinkTrigger12', PHYS_None); AddGoal("01_NYC_UNATCOISLAND", "Police Boat", GOAL_TYPE1, 'NYPoliceBoat0', PHYS_None); - loc = AddGoalLocation("01_NYC_UNATCOISLAND", "UNATCO HQ", START_LOCATION, vect(-6146.002930, 1748.501709, -87.000000), rot(0, 0, 0)); - loc2 = AddGoalLocation("01_NYC_UNATCOISLAND", "South Dock", NORMAL_GOAL | VANILLA_START, vect(-4728.569824, 9358.811523, -280.674988), rot(0, -7040, 0)); - AddMutualExclusion(loc, loc2);// unatco start vs south dock (paul dock) - loc2 = AddGoalLocation("01_NYC_UNATCOISLAND", "Hut", NORMAL_GOAL, vect(-2404,177,-83), rot(0, 30472, 0)); - AddMutualExclusion(loc, loc2);// unatco start vs hut leo + unatco = AddGoalLocation("01_NYC_UNATCOISLAND", "UNATCO HQ", START_LOCATION, vect(-6146.002930, 1748.501709, -87.000000), rot(0, 0, 0)); + pauldock = AddGoalLocation("01_NYC_UNATCOISLAND", "South Dock", NORMAL_GOAL | VANILLA_START, vect(-4728.569824, 9358.811523, -280.674988), rot(0, -7040, 0)); + hut = AddGoalLocation("01_NYC_UNATCOISLAND", "Hut", NORMAL_GOAL, vect(-2404,177,-83), rot(0, 30472, 0)); + electric = AddGoalLocation("01_NYC_UNATCOISLAND", "Electric Bunker", NORMAL_GOAL | START_LOCATION, vect(6552.227539, -3246.095703, -447.438049), rot(0, 0, 0)); + jail=AddGoalLocation("01_NYC_UNATCOISLAND", "Jail", NORMAL_GOAL | START_LOCATION, vect(2127.692139, -1774.869141, -149.140366), rot(0, 0, 0)); + topofbase = AddGoalLocation("01_NYC_UNATCOISLAND", "Top of the Base", NORMAL_GOAL, vect(2980.058105, -669.242554, 1056.577271), rot(0, 0, 0)); + top = AddGoalLocation("01_NYC_UNATCOISLAND", "Top of the Statue", NORMAL_GOAL | VANILLA_GOAL | START_LOCATION, vect(2931.230957, 27.495235, 2527.800049), rot(0, 14832, 0)); + harleydock = AddGoalLocation("01_NYC_UNATCOISLAND", "North Dock", NORMAL_GOAL | START_LOCATION, vect(4205,-9811,-279), rot(0, 0, 0)); + AddActorLocation(harleydock, PLAYER_LOCATION, vect(1297.173096, -10257.972656, -287.428131), rot(0, 0, 0)); - loc = AddGoalLocation("01_NYC_UNATCOISLAND", "North Dock", START_LOCATION, vect(1297.173096, -10257.972656, -287.428131), rot(0, 0, 0)); - loc2 = AddGoalLocation("01_NYC_UNATCOISLAND", "Electric Bunker", NORMAL_GOAL | START_LOCATION, vect(6552.227539, -3246.095703, -447.438049), rot(0, 0, 0)); - AddMutualExclusion(loc, loc2);// north dock start vs electric bunker leo + //Boat locations + boat_pauldock = AddGoalLocation("01_nyc_unatcoisland", "South Dock", GOAL_TYPE1 | VANILLA_GOAL, vect(-5023.598145,9131.867188,-269.806213), rot(0, 16192, 0)); + boat_harleydock = AddGoalLocation("01_nyc_unatcoisland", "North Dock", GOAL_TYPE1, vect(4471, -10046.186523, -269.806213), rot(0, 16192, 0)); + boat_top = AddGoalLocation("01_nyc_unatcoisland", "Top of the Statue", GOAL_TYPE1, vect(3682.585449, 231.813477, 2108.193848), rot(0, 16192, 0)); + boat_hut = AddGoalLocation("01_nyc_unatcoisland", "Behind UNATCO", GOAL_TYPE1, vect(-4571,135,24), rot(0, 16192, 0)); - AddGoalLocation("01_NYC_UNATCOISLAND", "Jail", NORMAL_GOAL | START_LOCATION, vect(2127.692139, -1774.869141, -149.140366), rot(0, 0, 0)); - loc = AddGoalLocation("01_NYC_UNATCOISLAND", "Top of the Base", NORMAL_GOAL, vect(2980.058105, -669.242554, 1056.577271), rot(0, 0, 0)); - loc2 = AddGoalLocation("01_NYC_UNATCOISLAND", "Top of the Statue", NORMAL_GOAL | VANILLA_GOAL | START_LOCATION, vect(2931.230957, 27.495235, 2527.800049), rot(0, 14832, 0)); - AddMutualExclusion(loc, loc2);// top of the base leo vs top of the statue start + // Leo vs start location mutual exclusions + AddMutualExclusion(unatco, pauldock); + AddMutualExclusion(unatco, hut); + AddMutualExclusion(harleydock, electric); + AddMutualExclusion(jail, topofbase); + AddMutualExclusion(jail, hut); + AddMutualExclusion(topofbase, top); - //Boat locations - AddGoalLocation("01_nyc_unatcoisland", "South Dock", GOAL_TYPE1 | VANILLA_GOAL, vect(-5023.598145,9131.867188,-269.806213), rot(0, 16192, 0)); - AddGoalLocation("01_nyc_unatcoisland", "North Dock", GOAL_TYPE1, vect(4471, -10046.186523, -269.806213), rot(0, 16192, 0)); - AddGoalLocation("01_nyc_unatcoisland", "Top of the Statue", GOAL_TYPE1, vect(3682.585449, 231.813477, 2108.193848), rot(0, 16192, 0)); - AddGoalLocation("01_nyc_unatcoisland", "Behind UNATCO", GOAL_TYPE1, vect(-4571,135,24), rot(0, 16192, 0)); + // Leo vs boat mutual exclusions + AddMutualExclusion(boat_pauldock, pauldock); + AddMutualExclusion(boat_pauldock, unatco); + AddMutualExclusion(boat_hut, hut); + AddMutualExclusion(boat_hut, unatco); + AddMutualExclusion(boat_hut, jail); + AddMutualExclusion(boat_harleydock, harleydock); + AddMutualExclusion(boat_harleydock, electric); + AddMutualExclusion(boat_top, top); + AddMutualExclusion(boat_top, topofbase); return mission; } diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc index a96ce2955..1cbb5dec8 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM02.uc @@ -61,9 +61,6 @@ function int InitGoals(int mission, string map) //AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor", GOAL_TYPE1, vect(1340, -700, 575), rot(32768, 0, 32768)); //Near the ramp //AddGoalLocation("02_NYC_WAREHOUSE", "4th Floor", GOAL_TYPE1, vect(390,-660,832), rot(32768,0,0)); //Among the boxes - AddMutualExclusion(generator_sewer, jock_sewer);// can't put Jock and the generator both in the sewers - - goal = AddGoal("02_NYC_WAREHOUSE", "Generator Computer", GOAL_TYPE2, 'ComputerPersonal5', PHYS_Falling); AddGoalActor(goal, 1, 'AmbientSoundTriggered3', PHYS_None); AddGoal("02_NYC_WAREHOUSE", "Email Computer", GOAL_TYPE2, 'ComputerPersonal0', PHYS_Falling); @@ -80,7 +77,7 @@ function int InitGoals(int mission, string map) function int InitGoalsRev(int mission, string map) { - local int goal, loc, loc2, vents_start, jock_sewer, generator_sewer, generator_alley;; + local int goal, loc, loc2, shanty_start, jock_sewer, generator_sewer, generator_alley;; switch(map) { case "02_NYC_BATTERYPARK": @@ -91,7 +88,7 @@ function int InitGoalsRev(int mission, string map) AddGoalActor(goal, 4, 'DataLinkTrigger15', PHYS_None); AddGoalLocation("02_NYC_BATTERYPARK", "Dock", START_LOCATION | VANILLA_START, vect(-619.571289, -3679.116455, 255.099762), rot(0, 29856, 0)); - vents_start = AddGoalLocation("02_NYC_BATTERYPARK", "Ventilation system", NORMAL_GOAL | START_LOCATION, vect(-4310.507813, 2237.952637, 189.843536), rot(0, 0, 0)); + shanty_start = AddGoalLocation("02_NYC_BATTERYPARK", "Shanty Town", NORMAL_GOAL | START_LOCATION, vect(-2970,1840,348), rot(0, 0, 0)); loc = AddGoalLocation("02_NYC_BATTERYPARK", "Ambrosia Vanilla", NORMAL_GOAL | VANILLA_GOAL | START_LOCATION, vect(507.282898, -1066.344604, -403.132751), rot(0, 16536, 0)); AddActorLocation(loc, PLAYER_LOCATION, vect(81.434570, -1123.060547, -384.397644), rot(0, 8000, 0)); @@ -101,9 +98,9 @@ function int InitGoalsRev(int mission, string map) AddGoalLocation("02_NYC_BATTERYPARK", "By the desk", NORMAL_GOAL, vect(-615.152161, -665.281738, -397.581146), rot(0, 0, 0)); AddGoalLocation("02_NYC_BATTERYPARK", "Walkway by the water", NORMAL_GOAL, vect(-420.000000, -2222.000000, -400), rot(0, 0, 0)); loc = AddGoalLocation("02_NYC_BATTERYPARK", "Subway stairs", NORMAL_GOAL, vect(-5106.205078, 1813.453003, -82.239639), rot(0, 0, 0)); - AddMutualExclusion(loc, vents_start);// don't put ambrosia in the subway if you start right there in the vents, too easy + AddMutualExclusion(loc, shanty_start);// don't put ambrosia in the subway if you start right there in the shanty town, too easy loc = AddGoalLocation("02_NYC_BATTERYPARK", "Subway", NORMAL_GOAL, vect(-4727.703613, 3116.336670, -321.900604), rot(0, 0, 0)); - AddMutualExclusion(loc, vents_start);// don't put ambrosia in the subway if you start right there in the vents, too easy + AddMutualExclusion(loc, shanty_start);// don't put ambrosia in the subway if you start right there in the shanty town, too easy if (dxr.flags.settings.starting_map > 20) { @@ -124,17 +121,22 @@ function int InitGoalsRev(int mission, string map) goal = AddGoal("02_NYC_WAREHOUSE", "Generator", GOAL_TYPE1, 'BreakableWall2', PHYS_MovingBrush); AddGoalActor(goal, 1, 'CrateExplosiveSmall0', PHYS_None); AddGoalActor(goal, 2, 'CrateExplosiveSmall6', PHYS_None); - AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse", GOAL_TYPE1 | VANILLA_GOAL, vect(448,-560,224), rot(32768, -16384, 0)); - generator_alley = AddGoalLocation("02_NYC_WAREHOUSE", "Alley", GOAL_TYPE1, vect(-544,1664,16), rot(0,32768,-16384)); + AddGoalActor(goal, 3, 'AmbientSoundTriggered0', PHYS_None); + AddGoalActor(goal, 4, 'AmbientSoundTriggered1', PHYS_None); + + AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse", GOAL_TYPE1 | VANILLA_GOAL, vect(575,-608,122), rot(32768, -16384, 0)); + generator_alley = AddGoalLocation("02_NYC_WAREHOUSE", "Alley", GOAL_TYPE1, vect(-550, 1700, 110), rot(0,32768,-16384)); AddMutualExclusion(generator_alley, jock_sewer);// too easy - AddGoalLocation("02_NYC_WAREHOUSE", "Apartment", GOAL_TYPE1, vect(304,1184,880), rot(0,32768,-16384)); - AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE1, vect(414.272583,-519.35,-272), rot(0,-16384,-16384)); - generator_sewer = AddGoalLocation("02_NYC_WAREHOUSE", "Sewer", GOAL_TYPE1, vect(-1712,912,-112), rot(32768,-32768,0)); + AddGoalLocation("02_NYC_WAREHOUSE", "Apartment", GOAL_TYPE1, vect(396,1130,1000), rot(0,32768,-16384)); + AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE1, vect(300,-480,-125), rot(0,-16384,-16384)); + generator_sewer = AddGoalLocation("02_NYC_WAREHOUSE", "Sewer", GOAL_TYPE1, vect(-1695,784,-210), rot(32768,-32768,0)); AddMutualExclusion(generator_sewer, jock_sewer);// can't put Jock and the generator both in the sewers // pawns run into these and break them //AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor", GOAL_TYPE1, vect(1360.000000, -512.000000, 528.000000), rot(32768, -16384, 0)); //AddGoalLocation("02_NYC_WAREHOUSE", "3rd Floor Corner", GOAL_TYPE1, vect(1600, -1136.000000, 540), rot(32768, 16384, 0)); - AddGoal("02_NYC_WAREHOUSE", "Generator Computer", GOAL_TYPE2, 'ComputerPersonal5', PHYS_Falling); + + goal=AddGoal("02_NYC_WAREHOUSE", "Generator Computer", GOAL_TYPE2, 'ComputerPersonal5', PHYS_Falling); + AddGoalActor(goal, 1, 'AmbientSoundTriggered3', PHYS_None); AddGoal("02_NYC_WAREHOUSE", "Email Computer", GOAL_TYPE2, 'ComputerPersonal0', PHYS_Falling); AddGoalLocation("02_NYC_WAREHOUSE", "Warehouse Computer Room", GOAL_TYPE2 | VANILLA_GOAL, vect(1277.341797, -864.810913, 311.500397), rot(0, 16712, 0)); AddGoalLocation("02_NYC_WAREHOUSE", "Basement", GOAL_TYPE2 | VANILLA_GOAL, vect(1002.848999, -897.071167, -136.499573), rot(0, -17064, 0)); @@ -241,15 +243,13 @@ function PreFirstEntryMapFixes() if(dxr.localURL=="02_NYC_WAREHOUSE") { ConsoleCommand("set #var(prefix)AmbientSoundTriggered bstatic false");// HACK? maybe better than creating a new subclass for DynamicSoundTriggered and then doing replacements - if (!RevisionMaps){ - foreach AllActors(class'#var(DeusExPrefix)Mover',dxm,'Generator'){ - dxm.SetCollision(false,false,false); - RemoveMoverPrePivot(dxm); - dxm.PrePivot=vect(-80,0,-50); //This is intentionally not a vectm - dxm.BasePos=dxm.BasePos+dxm.PrePivot; - dxm.SetLocation(dxm.BasePos); - dxm.SetCollision(true,true,true); - } + foreach AllActors(class'#var(DeusExPrefix)Mover',dxm,'Generator'){ + dxm.SetCollision(false,false,false); + RemoveMoverPrePivot(dxm); + dxm.PrePivot=vect(-80,0,-50); //This is intentionally not a vectm + dxm.BasePos=dxm.BasePos+dxm.PrePivot; + dxm.SetLocation(dxm.BasePos); + dxm.SetCollision(true,true,true); } } } @@ -275,26 +275,23 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) local #var(prefix)ComputerPersonal cp; local DXRPasswords passwords; local int i,rad,height; + local AmbientSoundTriggered ast1,ast2; local bool RevisionMaps; RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player()); if (g.name=="Generator"){ - if (!RevisionMaps){ - if (Loc.Name=="Warehouse" || Loc.Name=="Sewer" || Loc.Name=="3rd Floor" || Loc.Name=="4th Floor"){ //These ones lie horizontal - rad=175; - height=100; - } else { //The rest stand upright - rad=120; - height=131; - } - class'DXRHoverHint'.static.Create(self, "NSF Generator", g.actors[0].a.Location, rad, height, g.actors[0].a); - a = Spawn(class'DynamicBlockMonsters',,, g.actors[0].a.Location); - a.SetBase(g.actors[0].a); - a.SetCollisionSize(rad, height); - } else { - class'DXRHoverHint'.static.Create(self, "NSF Generator", g.actors[0].a.Location, 175, 140, g.actors[0].a); + if (Loc.Name=="Warehouse" || Loc.Name=="Sewer" || Loc.Name=="3rd Floor" || Loc.Name=="4th Floor"){ //These ones lie horizontal + rad=175; + height=100; + } else { //The rest stand upright + rad=120; + height=131; } + class'DXRHoverHint'.static.Create(self, "NSF Generator", g.actors[0].a.Location, rad, height, g.actors[0].a); + a = Spawn(class'DynamicBlockMonsters',,, g.actors[0].a.Location); + a.SetBase(g.actors[0].a); + a.SetCollisionSize(rad, height); for(i=0; i Date: Sun, 10 Nov 2024 15:52:46 -0500 Subject: [PATCH 22/87] Align Revision mission 4/6/8 goals with Vanilla --- DXRMissions/DeusEx/Classes/DXRMissionsM04.uc | 19 +- DXRMissions/DeusEx/Classes/DXRMissionsM06.uc | 2 + DXRMissions/DeusEx/Classes/DXRMissionsM08.uc | 226 +++++++++++++++---- 3 files changed, 197 insertions(+), 50 deletions(-) diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM04.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM04.uc index d1038dd2e..8d0334673 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM04.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM04.uc @@ -32,16 +32,19 @@ function int InitGoalsRev(int mission, string map) { local int goal, loc, loc2; - // GOAL_TYPE1 for the computer, 3 for Anna - AddGoal("04_NYC_NSFHQ", "Computer", GOAL_TYPE1, 'ComputerPersonal3', PHYS_Falling); - AddGoalLocation("04_NYC_NSFHQ", "Third Floor", GOAL_TYPE1, vect(-460.091187, 1011.083496, 551.367859), rot(0, 16672, 0)); - AddGoalLocation("04_NYC_NSFHQ", "Second Floor", GOAL_TYPE1, vect(206.654617, 1340.000000, 311.652832), rot(0, 0, 0)); - AddGoalLocation("04_NYC_NSFHQ", "Garage", GOAL_TYPE1, vect(381.117371, -696.875671, 63.615902), rot(0, 32768, 0)); - AddGoalLocation("04_NYC_NSFHQ", "Break Room", GOAL_TYPE1, vect(42.340145, 1104.667480, 73.610352), rot(0, 0, 0)); - AddGoalLocation("04_NYC_NSFHQ", "Basement Exit", GOAL_TYPE1, vect(1290.299927, 1385.000000, -185.000000), rot(0, 16384, 0)); - AddGoalLocation("04_NYC_NSFHQ", "Basement Entrance", GOAL_TYPE1, vect(-617.888855, 141.699875, -208.000000), rot(0, 16384, 0)); + // GOAL_TYPE1 for the dish computer, 2 for transmitter, 3 for Anna + AddGoal("04_NYC_NSFHQ", "Dish Alignment Computer", GOAL_TYPE1, 'ComputerPersonal3', PHYS_Falling); + AddGoalLocation("04_NYC_NSFHQ", "Third Floor", GOAL_TYPE1 | GOAL_TYPE2, vect(-460.091187, 1011.083496, 551.367859), rot(0, 16672, 0)); + AddGoalLocation("04_NYC_NSFHQ", "Second Floor", GOAL_TYPE1 | GOAL_TYPE2, vect(206.654617, 1340.000000, 311.652832), rot(0, 0, 0)); + AddGoalLocation("04_NYC_NSFHQ", "Garage", GOAL_TYPE1 | GOAL_TYPE2, vect(381.117371, -696.875671, 63.615902), rot(0, 32768, 0)); + AddGoalLocation("04_NYC_NSFHQ", "Break Room", GOAL_TYPE1 | GOAL_TYPE2, vect(42.340145, 1104.667480, 73.610352), rot(0, 0, 0)); + AddGoalLocation("04_NYC_NSFHQ", "Basement Exit", GOAL_TYPE1 | GOAL_TYPE2, vect(1290.299927, 1385.000000, -185.000000), rot(0, 16384, 0)); + AddGoalLocation("04_NYC_NSFHQ", "Basement Entrance", GOAL_TYPE1 | GOAL_TYPE2, vect(-617.888855, 141.699875, -208.000000), rot(0, 16384, 0)); AddGoalLocation("04_NYC_NSFHQ", "Rooftop", GOAL_TYPE1 | VANILLA_GOAL, vect(187.265259,315.583862,1032.054199), rot(0,16672,0)); + AddGoal("04_NYC_NSFHQ", "Transmitter Computer", GOAL_TYPE2, 'ComputerPersonal4', PHYS_Falling); + AddGoalLocation("04_NYC_NSFHQ", "Rooftop Secure Room", GOAL_TYPE2 | VANILLA_GOAL, vect(116.650787, 400.400024, 1032.054199), rot(0,49384,0)); + goal = AddGoal("04_NYC_BatteryPark", "Anna Navarre", GOAL_TYPE3, 'AnnaNavarre0', PHYS_Falling); AddGoalActor(goal, 1, 'AllianceTrigger11', PHYS_None); //AnnaAttacksJC AddGoalLocation("04_NYC_BatteryPark", "Battery Park Subway", GOAL_TYPE3 | VANILLA_GOAL, vect(-4980.514648,1696.581787,-60.599060), rot(0,-49328,0)); diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM06.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM06.uc index b217fef3f..6bdc06321 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM06.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM06.uc @@ -134,6 +134,8 @@ function int InitGoalsRev(int mission, string map) AddGoalLocation("06_HONGKONG_MJ12LAB", "Lab", NORMAL_GOAL, vect(-1712.699951, -809.700012, -744.500610), rot(0, 16384, 0)); AddGoalLocation("06_HONGKONG_MJ12LAB", "ROM Encoding Room", NORMAL_GOAL | VANILLA_GOAL, vect(-0.995101,-260.668579,-311.088989), rot(0,32824,0)); AddGoalLocation("06_HONGKONG_MJ12LAB", "Radioactive Lab", NORMAL_GOAL | VANILLA_GOAL, vect(-592.426758,329.524597,-743.972717), rot(0,49160,0)); + loc = AddGoalLocation("06_HONGKONG_MJ12LAB", "Overlook Office", NORMAL_GOAL, vect(-190, 886, 820), rot(0, 32768, 0)); //One window over compared to vanilla to avoid patrol point + AddActorLocation(loc, 1, vect(-190, 886, 789.101990), rot(0,0,0));// MAHOGANY desk return 62; case "06_HONGKONG_WANCHAI_STREET": diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc index a370e94af..6abf0f83d 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc @@ -1,6 +1,6 @@ class DXRMissionsM08 extends DXRMissions; - var vector assaultLocations[10]; + var vector assaultLocations[20]; var int numAssaultLocations; @@ -65,6 +65,22 @@ function int InitGoalsRev(int mission, string map) AddGoalLocation("08_NYC_Hotel", "Hotel", NORMAL_GOAL | SITTING_GOAL, vect(316,-3439,111), rot(0,0,0)); AddGoalLocation("08_NYC_Street", "Basketball Court", NORMAL_GOAL | START_LOCATION, vect(2683.1,-1977.77,-448), rot(0,-16390,0)); + + AddGoal("08_NYC_Street", "Jock", GOAL_TYPE2, 'JockHelicopter0', PHYS_None); + AddGoalLocation("08_NYC_Street", "Hotel Roof", GOAL_TYPE2 | VANILLA_GOAL, vect(75,965,755), rot(0, 22824, 0)); + AddGoalLocation("08_NYC_Street", "Bar Entrance", GOAL_TYPE2, vect(-400,-1675,-325), rot(0, 0, 0)); + AddGoalLocation("08_NYC_Street", "Smuggler Back Entrance", GOAL_TYPE2, vect(4775,580,-330), rot(0, 0, 0)); + AddGoalLocation("08_NYC_Street", "Garage Back Lot", GOAL_TYPE2, vect(1940,-3020,-350), rot(0, 8000, 0)); + + //The MJ12 assault squads now get randomized as a squad of 8 and a squad of 7 + AddGoal("08_NYC_Street", "MJ12 Assault Squad 1", GOAL_TYPE3 | ALWAYS_CREATE, 'Van90', PHYS_None); + AddGoal("08_NYC_Street", "MJ12 Assault Squad 2", GOAL_TYPE3 | ALWAYS_CREATE, 'Van91', PHYS_None); + AddGoalLocation("08_NYC_Street", "Alley", GOAL_TYPE3 | VANILLA_GOAL, vect(-910,-1230,-445), rot(0, 0, 0)); + AddGoalLocation("08_NYC_Street", "Road to NSF HQ", GOAL_TYPE3 | VANILLA_GOAL, vect(-744,-3530,-445), rot(0, -8016, 0)); + AddGoalLocation("08_NYC_Street", "Basketball Court", GOAL_TYPE3, vect(2855,-1965,-430), rot(0, 16325, 0)); + AddGoalLocation("08_NYC_Street", "Smuggler Front Door", GOAL_TYPE3, vect(4200,-3450,-437), rot(0, 32768, 0)); + AddGoalLocation("08_NYC_Street", "Hotel", GOAL_TYPE3, vect(1200,420,-445), rot(0, 0, 0)); + if (dxr.flags.settings.starting_map >= 81) //Mission 8 Smuggler { skip_rando_start = True; @@ -157,8 +173,12 @@ function AnyEntry() function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) { + local bool RevisionMaps; + + RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player()); + if (g.name=="Jock") { - if(Loc.name=="Smuggler Back Entrance" || Loc.name=="Alley") { + if((!RevisionMaps && Loc.name=="Smuggler Back Entrance") || Loc.name=="Alley") { g.actors[0].a.DrawScale = 0.5; g.actors[0].a.SetCollisionSize(200, 50); } else { @@ -182,61 +202,150 @@ function AfterMovePlayerToStartLocation(GoalLocation Loc) function AfterShuffleGoals(int goalsToLocations[32]) { - local int g; + local int g, numGuys,perSquad; local bool RevisionMaps; RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player()); - if (dxr.localURL == "08_NYC_STREET" && !RevisionMaps){ + if (dxr.localURL == "08_NYC_STREET"){ + numGuys=GetTotalNumAssaultSquadTroops(); + perSquad = Ceil(float(numGuys)/2.0); + + l("Need to get locations for "$numGuys$" guys, "$perSquad$" in each squad"); + numAssaultLocations=0; for(g=0; g=totalNum) return; + + if (numAssaultLocations>=ArrayCount(assaultLocations)){ + l("Trying to add more assault squad locations than available in the array!"); + return; + } + + assaultLocations[numAssaultLocations++]=loc; + numAdded++; + + l("Added Assault Squad Location "$loc); -function AddAssaultSquadLocations(string locName) + return; +} + +function AddAssaultSquadLocations(string locName, int numLocs) { - switch(locName){ - case "Alley": //Non-GOTY Squad 1 vanilla location - assaultLocations[numAssaultLocations++]=vectm(-2086,-706,-426); - assaultLocations[numAssaultLocations++]=vectm(-2041,-761,-426); - assaultLocations[numAssaultLocations++]=vectm(-1886,-719,-426); - assaultLocations[numAssaultLocations++]=vectm(-1849,-779,-426); - assaultLocations[numAssaultLocations++]=vectm(-1692,-695,-426); - break; - case "Road to NSF HQ": //Non-GOTY Squad 2 vanilla location - assaultLocations[numAssaultLocations++]=vectm(-1907,-1534,-434); - assaultLocations[numAssaultLocations++]=vectm(-1856,-1584,-434); - assaultLocations[numAssaultLocations++]=vectm(-1817,-1497,-441); - assaultLocations[numAssaultLocations++]=vectm(-1693,-1494,-452); - assaultLocations[numAssaultLocations++]=vectm(-1577,-1585,-438); - break; - case "Basketball Court": - assaultLocations[numAssaultLocations++]=vectm(3008,-2807,-448); - assaultLocations[numAssaultLocations++]=vectm(2945,-2773,-448); - assaultLocations[numAssaultLocations++]=vectm(3008,-2709,-448); - assaultLocations[numAssaultLocations++]=vectm(2958,-2628,-448); - assaultLocations[numAssaultLocations++]=vectm(3035,-2560,-448); - break; - case "Smuggler Front Door": - assaultLocations[numAssaultLocations++]=vectm(2552,-1108,-464); - assaultLocations[numAssaultLocations++]=vectm(2536,-1038,-464); - assaultLocations[numAssaultLocations++]=vectm(2483,-1129,-464); - assaultLocations[numAssaultLocations++]=vectm(2491,-1043,-464); - assaultLocations[numAssaultLocations++]=vectm(2444,-1094,-464); - break; - case "Hotel": - assaultLocations[numAssaultLocations++]=vectm(1246,453,-464); - assaultLocations[numAssaultLocations++]=vectm(1170,398,-464); - assaultLocations[numAssaultLocations++]=vectm(1238,340,-464); - assaultLocations[numAssaultLocations++]=vectm(1177,289,-464); - assaultLocations[numAssaultLocations++]=vectm(1234,229,-464); - break; + local bool RevisionMaps; + local int numAdded; + + RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player()); + + numAdded=0; + + if (!RevisionMaps){ + switch(locName){ + case "Alley": //Non-GOTY Squad 1 vanilla location + AddSingleLocation(vectm(-2086,-706,-426),numAdded,numLocs); + AddSingleLocation(vectm(-2041,-761,-426),numAdded,numLocs); + AddSingleLocation(vectm(-1886,-719,-426),numAdded,numLocs); + AddSingleLocation(vectm(-1849,-779,-426),numAdded,numLocs); + AddSingleLocation(vectm(-1692,-695,-426),numAdded,numLocs); + break; + case "Road to NSF HQ": //Non-GOTY Squad 2 vanilla location + AddSingleLocation(vectm(-1907,-1534,-434),numAdded,numLocs); + AddSingleLocation(vectm(-1856,-1584,-434),numAdded,numLocs); + AddSingleLocation(vectm(-1817,-1497,-441),numAdded,numLocs); + AddSingleLocation(vectm(-1693,-1494,-452),numAdded,numLocs); + AddSingleLocation(vectm(-1577,-1585,-438),numAdded,numLocs); + break; + case "Basketball Court": + AddSingleLocation(vectm(3008,-2807,-448),numAdded,numLocs); + AddSingleLocation(vectm(2945,-2773,-448),numAdded,numLocs); + AddSingleLocation(vectm(3008,-2709,-448),numAdded,numLocs); + AddSingleLocation(vectm(2958,-2628,-448),numAdded,numLocs); + AddSingleLocation(vectm(3035,-2560,-448),numAdded,numLocs); + break; + case "Smuggler Front Door": + AddSingleLocation(vectm(2552,-1108,-464),numAdded,numLocs); + AddSingleLocation(vectm(2536,-1038,-464),numAdded,numLocs); + AddSingleLocation(vectm(2483,-1129,-464),numAdded,numLocs); + AddSingleLocation(vectm(2491,-1043,-464),numAdded,numLocs); + AddSingleLocation(vectm(2444,-1094,-464),numAdded,numLocs); + break; + case "Hotel": + AddSingleLocation(vectm(1246,453,-464),numAdded,numLocs); + AddSingleLocation(vectm(1170,398,-464),numAdded,numLocs); + AddSingleLocation(vectm(1238,340,-464),numAdded,numLocs); + AddSingleLocation(vectm(1177,289,-464),numAdded,numLocs); + AddSingleLocation(vectm(1234,229,-464),numAdded,numLocs); + break; + } + } else { //Revision Maps + //Revision has 15 guys total, but the number depends on the difficulty + //Currently still splitting them into two groups + //Difficulty 0: 4 guys + //Difficulty 1: 6 guys + //Difficulty 2: 11 guys + //Difficulty 3: 15 guys + switch(locName){ + case "Alley": + AddSingleLocation(vectm(-1650,-650,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1650,-700,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1650,-750,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1650,-800,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1600,-750,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1600,-800,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1550,-750,-450),numAdded,numLocs); + AddSingleLocation(vectm(-1550,-800,-450),numAdded,numLocs); + break; + case "Road to NSF HQ": + AddSingleLocation(vectm(-1250,-2750,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-2800,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-2850,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-2900,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-2950,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-3000,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-3050,-460),numAdded,numLocs); + AddSingleLocation(vectm(-1250,-3100,-460),numAdded,numLocs); + break; + case "Basketball Court": + AddSingleLocation(vectm(2900,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2850,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2800,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2750,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2700,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2650,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2600,-2350,-460),numAdded,numLocs); + AddSingleLocation(vectm(2550,-2350,-460),numAdded,numLocs); + break; + case "Smuggler Front Door": + AddSingleLocation(vectm(4300,-3000,-460),numAdded,numLocs); + AddSingleLocation(vectm(4300,-2950,-460),numAdded,numLocs); + AddSingleLocation(vectm(4300,-2900,-460),numAdded,numLocs); + AddSingleLocation(vectm(4300,-2850,-460),numAdded,numLocs); + AddSingleLocation(vectm(4300,-2800,-460),numAdded,numLocs); + AddSingleLocation(vectm(4200,-2800,-460),numAdded,numLocs); + AddSingleLocation(vectm(4200,-2850,-460),numAdded,numLocs); + AddSingleLocation(vectm(4200,-2900,-460),numAdded,numLocs); + break; + case "Hotel": + AddSingleLocation(vectm(1400,500,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,450,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,400,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,350,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,300,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,250,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,200,-460),numAdded,numLocs); + AddSingleLocation(vectm(1400,150,-460),numAdded,numLocs); + break; + } } } @@ -251,3 +360,36 @@ function MoveAssaultSquads() t.SetLocation(assaultLocations[i++]+vectm(0,0,20000)); } } + +function int GetTotalNumAssaultSquadTroops() +{ + local int i; + local MJ12Troop t; + + i=0; + foreach AllActors(class'MJ12Troop',t,'MJ12AttackForce'){ i++; } + + return i; +} + + +function PreFirstEntryMapFixes() +{ + local #var(prefix)InterpolateTrigger it; + local #var(prefix)Van v; + local bool RevisionMaps; + + RevisionMaps = class'DXRMapVariants'.static.IsRevisionMaps(player()); + + if (RevisionMaps && dxr.localURL=="08_NYC_STREET"){ + foreach AllActors(class'#var(prefix)InterpolateTrigger',it,'FlyInTrigger'){ + it.Destroy(); + } + + //Get rid of the existing vans, + //we'll spawn new ones to mark the assault squad spawn points + foreach AllActors(class'#var(prefix)Van', v){ + v.Destroy(); + } + } +} From 9fadaa397419976ba8a09e4cee1df4c6365fd76e Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 10 Nov 2024 18:00:24 -0500 Subject: [PATCH 23/87] Align Revision mission goals with Vanilla from mission 9 onwards --- DXRMissions/DeusEx/Classes/DXRMissionsM09.uc | 13 +- DXRMissions/DeusEx/Classes/DXRMissionsM15.uc | 149 +++++++++++++----- .../DeusEx/Classes/DXRMissionsParis.uc | 16 +- .../DeusEx/Classes/DXRMissionsVandenberg.uc | 54 +++++-- 4 files changed, 167 insertions(+), 65 deletions(-) diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc index 703c4bef5..522db245b 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc @@ -189,8 +189,8 @@ function int InitGoalsRev(int mission, string map) AddGoalActor(goal, 1, 'ParticleGenerator6', PHYS_None); AddGoalActor(goal, 2, 'DataLinkTrigger2', PHYS_None); - //There's a door in Revision where this was in Vanilla - //loc = AddGoalLocation("09_NYC_SHIPBELOW", "North Engine Room", NORMAL_GOAL, vect(-384.000000, 1024.000000, -272.000000), rot(0, 49152, 0)); + //There's a door in Revision where this was in Vanilla, moved it to the left of the door + loc = AddGoalLocation("09_NYC_SHIPBELOW", "North Engine Room", NORMAL_GOAL, vect(-200.000000, 1024.000000, -272.000000), rot(0, 49152, 0)); loc = AddGoalLocation("09_NYC_SHIPBELOW", "Bilge Pumps Balcony", NORMAL_GOAL, vect(-3296.000000, -1664.000000, -112.000000), rot(0, 81920, 0)); @@ -218,6 +218,15 @@ function int InitGoalsRev(int mission, string map) loc = AddGoalLocation("09_NYC_SHIPBELOW", "SW Engine Room", NORMAL_GOAL | VANILLA_GOAL, vect(816.000000,-1024.000000,-416.000000), rot(0,16384,0)); + + goal = AddGoal("09_NYC_SHIPBELOW", "Bilge Pump Computer", GOAL_TYPE1, 'ComputerPersonal0', PHYS_Falling); + AddGoalActor(goal, 1, 'DataLinkTrigger4', PHYS_None); + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Bilge Pump Room", GOAL_TYPE1 | VANILLA_GOAL, vect(-2447.407959, -689.854431, -456.500488), rot(0, -15815, 0)); + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Helibay Barracks", GOAL_TYPE1, vect(-5505, 175, -432), rot(0, 0, 0)); + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Engine Room Tower", GOAL_TYPE1, vect(-131.815552,-492.488342,9), rot(0, -15815, 0)); + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Helipad Air Control", GOAL_TYPE1, vect(-4799, 1210, -200), rot(0, 32768, 0)); + AddActorLocation(loc, 1, vect(-4799, 1210, -230), rot(0,0,0));// MAHOGANY desk + return 92; case "09_NYC_DOCKYARD": diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM15.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM15.uc index 7d30cc452..c6ca70d28 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM15.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM15.uc @@ -38,6 +38,14 @@ function int InitGoals(int mission, string map) AddGoalLocation("15_AREA51_BUNKER", "Command 24", GOAL_TYPE1, vect(1125.200562,2887.646484,-432.319794), rot(0, 0, 0)); AddGoalLocation("15_AREA51_BUNKER", "the hangar", GOAL_TYPE1, vect(1062.942261,-2496.865723,-443.252533), rot(0, 16384, 0)); AddGoalLocation("15_AREA51_BUNKER", "the supply shed", GOAL_TYPE1, vect(-1527.608521,3280.824219,-158.588562), rot(0, -16384, 0)); + + if (dxr.flags.settings.starting_map > 150) + { + skip_rando_start = True; + } + + return 151; + break; case "15_AREA51_PAGE": @@ -92,61 +100,116 @@ function int InitGoals(int mission, string map) } } + return 152; + break; } - if (dxr.flags.settings.starting_map > 150) - { - skip_rando_start = True; - } - return 151; + return mission+1000; } function int InitGoalsRev(int mission, string map) { local int goal, loc; - AddGoalLocation("15_AREA51_BUNKER", "Jock", START_LOCATION | VANILLA_START, vect(-6066,618.8,-46.73), rot(0, 199216, 0)); - AddGoalLocation("15_AREA51_BUNKER", "Bunker", START_LOCATION, vect(1528,-2703,-288), rot(0, 24000, 0)); - AddGoalLocation("15_AREA51_BUNKER", "Behind the Van", START_LOCATION, vect(-979.896423,3249.618408,-472.401825), rot(0, 0, 0)); - - - goal = AddGoal("15_AREA51_BUNKER", "Walton Simons", NORMAL_GOAL, 'WaltonSimons1', PHYS_Falling); - AddGoalActor(goal, 1, 'Trigger4', PHYS_None); //Triggers WaltonTalks - AddGoalActor(goal, 2, 'OrdersTrigger3', PHYS_None); //WaltonTalks -> Conversation triggers WaltonAttacks - AddGoalActor(goal, 3, 'AllianceTrigger1', PHYS_None); //WaltonAttacks - - loc = AddGoalLocation("15_AREA51_BUNKER", "Command 24", NORMAL_GOAL | VANILLA_GOAL, vect(1390,2640,-264), rot(0, -33064, 0)); - AddActorLocation(loc, 1, vect(353,2344,-494), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_BUNKER", "Behind Supply Shed", NORMAL_GOAL, vect(-782,208,-192), rot(0, 0, 0)); - AddActorLocation(loc, 1, vect(-1772,210,-178), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_BUNKER", "Behind Tower", NORMAL_GOAL, vect(-914,2050,-192), rot(0, 0, 0)); - AddActorLocation(loc, 1, vect(-1598,2045,-178), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_BUNKER", "Hangar", NORMAL_GOAL, vect(1717,-1750,-480), rot(0, -33064, 0)); - AddActorLocation(loc, 1, vect(1147,-1129,-494), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_BUNKER", "Bunker Entrance", NORMAL_GOAL, vect(3802,2388,-848), rot(0, -18224, 0)); - AddActorLocation(loc, 1, vect(3079,1214,-826), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_ENTRANCE", "Sector 3 Elevator", NORMAL_GOAL, vect(-3969.244385,703.847961,-2168.792725), rot(0, -16568, 0)); - //AddActorLocation(loc, 1, vect(-20,80,-180), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_FINAL", "Heliowalton", NORMAL_GOAL, vect(-4400,750,-1475), rot(0, 0, 0)); - AddActorLocation(loc, 1, vect(-3720,730,-1105), rot(0,0,0)); - loc = AddGoalLocation("15_AREA51_FINAL", "Reactor Lab", NORMAL_GOAL, vect(-4358,-3393,-1527), rot(0, 0, 0)); - AddActorLocation(loc, 1, vect(-3455,-3261,-1560), rot(0,0,0)); - - - AddGoal("15_AREA51_BUNKER", "Area 51 Blast Door Computer", GOAL_TYPE1, 'ComputerSecurity4', PHYS_None); - AddGoalLocation("15_AREA51_BUNKER", "the tower", GOAL_TYPE1 | VANILLA_GOAL, vect(-1108.649414,2037.512451,302.793121), rot(0, 65536, 0)); - AddGoalLocation("15_AREA51_BUNKER", "Command 24", GOAL_TYPE1, vect(1363.689941,2460.441895,-235.503601), rot(0, 0, 0)); - AddGoalLocation("15_AREA51_BUNKER", "the hangar", GOAL_TYPE1, vect(1397.388672,-2498.310059,-441.741699), rot(0, 16384, 0)); - AddGoalLocation("15_AREA51_BUNKER", "the supply shed", GOAL_TYPE1, vect(-1860.243530,2902.310059,-151.812180), rot(0, -16384, 0)); - - if (dxr.flags.settings.starting_map > 150) - { - skip_rando_start = True; + switch(map) { + case "15_AREA51_BUNKER": + AddGoalLocation("15_AREA51_BUNKER", "Jock", START_LOCATION | VANILLA_START, vect(-6066,618.8,-46.73), rot(0, 199216, 0)); + AddGoalLocation("15_AREA51_BUNKER", "Bunker", START_LOCATION, vect(1528,-2703,-288), rot(0, 24000, 0)); + AddGoalLocation("15_AREA51_BUNKER", "Behind the Van", START_LOCATION, vect(-979.896423,3249.618408,-472.401825), rot(0, 0, 0)); + + + goal = AddGoal("15_AREA51_BUNKER", "Walton Simons", NORMAL_GOAL, 'WaltonSimons1', PHYS_Falling); + AddGoalActor(goal, 1, 'Trigger4', PHYS_None); //Triggers WaltonTalks + AddGoalActor(goal, 2, 'OrdersTrigger3', PHYS_None); //WaltonTalks -> Conversation triggers WaltonAttacks + AddGoalActor(goal, 3, 'AllianceTrigger1', PHYS_None); //WaltonAttacks + + loc = AddGoalLocation("15_AREA51_BUNKER", "Command 24", NORMAL_GOAL | VANILLA_GOAL, vect(1390,2640,-264), rot(0, -33064, 0)); + AddActorLocation(loc, 1, vect(353,2344,-494), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_BUNKER", "Behind Supply Shed", NORMAL_GOAL, vect(-782,208,-192), rot(0, 0, 0)); + AddActorLocation(loc, 1, vect(-1772,210,-178), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_BUNKER", "Behind Tower", NORMAL_GOAL, vect(-914,2050,-192), rot(0, 0, 0)); + AddActorLocation(loc, 1, vect(-1598,2045,-178), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_BUNKER", "Hangar", NORMAL_GOAL, vect(1717,-1750,-480), rot(0, -33064, 0)); + AddActorLocation(loc, 1, vect(1147,-1129,-494), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_BUNKER", "Bunker Entrance", NORMAL_GOAL, vect(3802,2388,-848), rot(0, -18224, 0)); + AddActorLocation(loc, 1, vect(3079,1214,-826), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_ENTRANCE", "Sector 3 Elevator", NORMAL_GOAL, vect(-3969.244385,703.847961,-2168.792725), rot(0, -16568, 0)); + //AddActorLocation(loc, 1, vect(-20,80,-180), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_FINAL", "Heliowalton", NORMAL_GOAL, vect(-4400,750,-1475), rot(0, 0, 0)); + AddActorLocation(loc, 1, vect(-3720,730,-1105), rot(0,0,0)); + loc = AddGoalLocation("15_AREA51_FINAL", "Reactor Lab", NORMAL_GOAL, vect(-4358,-3393,-1527), rot(0, 0, 0)); + AddActorLocation(loc, 1, vect(-3455,-3261,-1560), rot(0,0,0)); + + + AddGoal("15_AREA51_BUNKER", "Area 51 Blast Door Computer", GOAL_TYPE1, 'ComputerSecurity4', PHYS_None); + AddGoalLocation("15_AREA51_BUNKER", "the tower", GOAL_TYPE1 | VANILLA_GOAL, vect(-1108.649414,2037.512451,302.793121), rot(0, 65536, 0)); + AddGoalLocation("15_AREA51_BUNKER", "Command 24", GOAL_TYPE1, vect(1363.689941,2460.441895,-235.503601), rot(0, 0, 0)); + AddGoalLocation("15_AREA51_BUNKER", "the hangar", GOAL_TYPE1, vect(1397.388672,-2498.310059,-441.741699), rot(0, 16384, 0)); + AddGoalLocation("15_AREA51_BUNKER", "the supply shed", GOAL_TYPE1, vect(-1860.243530,2902.310059,-151.812180), rot(0, -16384, 0)); + + if (dxr.flags.settings.starting_map > 150) + { + skip_rando_start = True; + } + + return 151; + + break; + + case "15_AREA51_PAGE": + // GOAL_TYPE1 is for the goals that can be in easy locations, aka everything except Aquinas Substation Computer + goal = AddGoal("15_AREA51_PAGE", "Aquinas Substation Computer", NORMAL_GOAL, 'ComputerSecurity0', PHYS_None); + loc = AddGoalLocation("15_AREA51_PAGE", "Aquinas Substation", NORMAL_GOAL | VANILLA_GOAL, vect(1510.912109,4078.936279,-577.371094), rot(0, -32824, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Coolant Deactivation Button", GOAL_TYPE1 | NORMAL_GOAL, 'Switch0', PHYS_None); + AddGoalActor(goal, 1, 'DataLinkTrigger2', PHYS_None); // shutting down the coolant, DL_tong3: Good. Now go to the reactor lab. + AddGoalActor(goal, 2, 'DataLinkTrigger12', PHYS_None); // same + AddGoalActor(goal, 3, 'DataLinkTrigger37', PHYS_None); // DL_ButtonWarning: You will stay away from the coolant controls. I will be destroyed if the reactors become unstable, and without me there will be chaos. + loc = AddGoalLocation("15_AREA51_PAGE", "Coolant B13", NORMAL_GOAL | VANILLA_GOAL, vect(1362.221191,-1212.041992,-596.846680), rot(11200, -16088, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Blue Fusion Reactor 3 Control", GOAL_TYPE1 | NORMAL_GOAL, 'Keypad5', PHYS_None); + AddGoalActor(goal, 1, 'DataLinkTrigger17', PHYS_None); // DL_Blue_Fusion: That's one of the blue-fusion reactors. You need to shut down all four. + loc = AddGoalLocation("15_AREA51_PAGE", "Ground Floor", NORMAL_GOAL | VANILLA_GOAL, vect(192.212402,2712.242676,-616.736328), rot(0, -45056, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Blue Fusion Reactor 4 Control", GOAL_TYPE1 | NORMAL_GOAL, 'Keypad6', PHYS_None); + AddGoalActor(goal, 1, 'DataLinkTrigger19', PHYS_None); // DL_Blue_Fusion + loc = AddGoalLocation("15_AREA51_PAGE", "Radioactive Room", NORMAL_GOAL | VANILLA_GOAL, vect(-1403.303711,3341.983887,-224.736328), rot(0, -61760, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Blue Fusion Reactor 2 Control", GOAL_TYPE1 | NORMAL_GOAL, 'Keypad1', PHYS_None); + AddGoalActor(goal, 1, 'DataLinkTrigger18', PHYS_None); // DL_Blue_Fusion + loc = AddGoalLocation("15_AREA51_PAGE", "Under Page", NORMAL_GOAL | VANILLA_GOAL, vect(-14.347168,2478.800781,-224.736328), rot(0, -61568, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Blue Fusion Reactor 1 Control", GOAL_TYPE1 | NORMAL_GOAL, 'Keypad0', PHYS_None); + AddGoalActor(goal, 1, 'DataLinkTrigger21', PHYS_None); // DL_Blue_Fusion + loc = AddGoalLocation("15_AREA51_PAGE", "Observation Deck", NORMAL_GOAL | VANILLA_GOAL, vect(-138.971191,1310.160156,223.263672), rot(0, -36944, 0)); + + if (FeatureFlag(3,3,0, "Area51EndingBalancePass2")){ + if (#bool(shuffleucswitches)){ + //Shuffle the UC switches themselves + goal = AddGoal("15_AREA51_PAGE", "Upper UC Shutdown", GOAL_TYPE1 | NORMAL_GOAL, 'DeusExMover72', PHYS_MovingBrush); + loc = AddGoalLocation("15_AREA51_PAGE", "Upper UC Control Room", GOAL_TYPE1 | VANILLA_GOAL, vect(1705,2064,276), rot(0, 16384, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Middle UC Shutdown", GOAL_TYPE1| NORMAL_GOAL, 'DeusExMover51', PHYS_MovingBrush); + loc = AddGoalLocation("15_AREA51_PAGE", "Middle UC Control Room", NORMAL_GOAL | VANILLA_GOAL, vect(-650,968,-168), rot(0, 16384, 0)); + + goal = AddGoal("15_AREA51_PAGE", "Bottom UC Shutdown", GOAL_TYPE1 | NORMAL_GOAL, 'DeusExMover49', PHYS_MovingBrush); + loc = AddGoalLocation("15_AREA51_PAGE", "Bottom UC Control Room", NORMAL_GOAL | VANILLA_GOAL, vect(1788,2117,-559), rot(0, 32768, 0)); + } else { + //Only use the rooms as extra locations + loc = AddGoalLocation("15_AREA51_PAGE", "Upper UC Control Room", GOAL_TYPE1, vect(1820,2210,290), rot(0, 32768, 0)); + loc = AddGoalLocation("15_AREA51_PAGE", "Middle UC Control Room", NORMAL_GOAL, vect(-784,1056,-165), rot(0, 0, 0)); + loc = AddGoalLocation("15_AREA51_PAGE", "Bottom UC Control Room", NORMAL_GOAL, vect(1700,1983,-555), rot(0, 16384, 0)); + } + } + + return 152; + + break; } - return 151; + return mission+1000; } function PreFirstEntryMapFixes() diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsParis.uc b/DXRMissions/DeusEx/Classes/DXRMissionsParis.uc index d47db155c..21cc53a98 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsParis.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsParis.uc @@ -118,11 +118,13 @@ function int InitGoalsRev(int mission, string map) case "11_PARIS_CATHEDRAL": goal = AddGoal("11_PARIS_CATHEDRAL", "Templar Computer", NORMAL_GOAL, 'ComputerPersonal0', PHYS_Falling); AddGoalActor(goal, 1, 'GuntherHermann0', PHYS_Falling); - AddGoalActor(goal, 2, 'OrdersTrigger0', PHYS_None); - AddGoalActor(goal, 3, 'GoalCompleteTrigger0', PHYS_None); - AddGoalActor(goal, 4, 'SkillAwardTrigger3', PHYS_None); - AddGoalActor(goal, 5, 'FlagTrigger2', PHYS_None); - AddGoalActor(goal, 6, 'DataLinkTrigger8', PHYS_None); + //AddGoalActor(goal, 2, 'OrdersTrigger0', PHYS_None); + //AddGoalActor(goal, 3, 'GoalCompleteTrigger0', PHYS_None); + AddGoalActor(goal, 2, 'SkillAwardTrigger3', PHYS_None); + //AddGoalActor(goal, 5, 'FlagTrigger2', PHYS_None); + AddGoalActor(goal, 3, 'DataLinkTrigger8', PHYS_None); // DL_morgan_uplink "I'm getting what I need. Good work." + AddGoalActor(goal, 4, 'DataLinkTrigger14', PHYS_None); // DL_gunthernearcomp + AddGoalActor(goal, 5, 'DataLinkTrigger7', PHYS_None); // DL_gunthernearcomp loc = AddGoalLocation("11_PARIS_CATHEDRAL", "Barracks", NORMAL_GOAL, vect(4738.159668,-882.423401,247.500351), rot(0, 32768, 0)); AddActorLocation(loc, 1, vect(4789.892578,-801.263672,241.979095), rot(0,-16392,0)); @@ -334,7 +336,7 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) if (Loc.name=="Media Store"){ if ((g.name=="Nicolette") || (g.name=="Jaime" && dxr.flagbase.GetBool('JaimeLeftBehind'))){ //Spawn a small spotlight just to make it a bit easier to spot them through the window - dl = DynamicLight(Spawnm(class'DynamicLight',,,vect(990,1768,300),rot(-16385,0,0))); + dl = Spawn(class'DynamicLight',,,g.actors[0].a.Location+vectm(-16,0,113),rot(-16385,0,0)); dl.LightRadius=6; dl.LightCone=1; dl.LightBrightness=255; @@ -342,7 +344,7 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) } } - if (g.name=="Templar Computer" && VanillaMaps) { // TODO: make this work in Revision too + if (g.name=="Templar Computer") { g.actors[2].a.SetCollisionSize(160,64);// skillawardtrigger g.actors[4].a.SetCollisionSize(1400,180);// DL_gunthernearcomp } diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc b/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc index fd512aead..a1ea368ed 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc @@ -134,8 +134,12 @@ function int InitGoals(int mission, string map) function int InitGoalsRev(int mission, string map) { - local int goal, loc, howard1, howard2, jock1, jock2; + local int goal, loc; local int front_gate_start; + local int howard_cherry, howard_meeting, howard_radio, howard_computer, howard_machine_shop; + local int jock_vanilla, jock_cherry, jock_tower, jock_computer; + local int computer_vanilla, computer_radio, computer_meeting, computer_machine_shop; + switch(map) { case "12_VANDENBERG_CMD": @@ -213,22 +217,46 @@ function int InitGoalsRev(int mission, string map) case "14_OCEANLAB_SILO": + //HOWARD AddGoal("14_OCEANLAB_SILO", "Howard Strong", NORMAL_GOAL, 'HowardStrong0', PHYS_Falling); - - AddGoalLocation("14_OCEANLAB_SILO", "Third Floor", NORMAL_GOAL, vect(-220.000000, -6829.463379, 55.600639), rot(0, 0, 0)); + howard_computer = AddGoalLocation("14_OCEANLAB_SILO", "Launch Command", NORMAL_GOAL, vect(170,-950,860), rot(0, 38836, 0)); + howard_meeting = AddGoalLocation("14_OCEANLAB_SILO", "Surface Meeting Room", NORMAL_GOAL, vect(-640,-3589,1472), rot(0, 34388, 0)); + howard_radio = AddGoalLocation("14_OCEANLAB_SILO", "Radio", NORMAL_GOAL, vect(-1794,-6147,1662), rot(0, 18000, 0)); + howard_machine_shop = AddGoalLocation("14_OCEANLAB_SILO", "Machine Shop", NORMAL_GOAL, vect(566,-4395,1474), rot(0, 21120, 0)); + //AddGoalLocation("14_OCEANLAB_SILO", "Third Floor", NORMAL_GOAL, vect(-220.000000, -6829.463379, 55.600639), rot(0, 0, 0)); AddGoalLocation("14_OCEANLAB_SILO", "Fourth Floor", NORMAL_GOAL, vect(-259.846710, -6848.406250, 326.598969), rot(0, 0, 0)); - AddGoalLocation("14_OCEANLAB_SILO", "Fifth Floor", NORMAL_GOAL, vect(-271.341187, -6832.150391, 535.596741), rot(0, 0, 0)); - howard1 = AddGoalLocation("14_OCEANLAB_SILO", "Sixth Floor", NORMAL_GOAL, vect(-266.569397, -6868.054199, 775.592590), rot(0, 0, 0)); - howard2 = AddGoalLocation("14_OCEANLAB_SILO", "Cherry Picker", NORMAL_GOAL | VANILLA_GOAL, vect(-52.397560,-6767.679199,-320.225006), rot(0,-7512,0)); + //AddGoalLocation("14_OCEANLAB_SILO", "Fifth Floor", NORMAL_GOAL, vect(-271.341187, -6832.150391, 535.596741), rot(0, 0, 0)); + //howard1 = AddGoalLocation("14_OCEANLAB_SILO", "Sixth Floor", NORMAL_GOAL, vect(-266.569397, -6868.054199, 775.592590), rot(0, 0, 0)); + howard_cherry = AddGoalLocation("14_OCEANLAB_SILO", "Cherry Picker", NORMAL_GOAL | VANILLA_GOAL, vect(-52.397560,-6767.679199,-320.225006), rot(0,-7512,0)); + //JOCK AddGoal("14_OCEANLAB_SILO", "Jock Escape", GOAL_TYPE1, 'BlackHelicopter0', PHYS_None); - jock1 = AddGoalLocation("14_OCEANLAB_SILO", "Vanilla Escape", GOAL_TYPE1 | VANILLA_GOAL, vect(-194.602554,-5680.769043,1513.223389), rot(0, 0, 0)); - AddGoalLocation("14_OCEANLAB_SILO", "Sniper Tower", GOAL_TYPE1, vect(-842.344604, -3827.978027, 2039.993286), rot(0, 0, 0)); - jock2 = AddGoalLocation("14_OCEANLAB_SILO", "Cherry Picker", GOAL_TYPE1, vect(-13.000000, -6790.000000, -542.000000), rot(0, 32768, 0)); - AddGoalLocation("14_OCEANLAB_SILO", "Launch Command", GOAL_TYPE1, vect(-100.721497, -1331.947754, 904.364380), rot(0, 32768, 0)); + jock_vanilla = AddGoalLocation("14_OCEANLAB_SILO", "Vanilla Escape", GOAL_TYPE1 | VANILLA_GOAL, vect(-194.602554,-5680.769043,1513.223389), rot(0, 0, 0)); + jock_tower = AddGoalLocation("14_OCEANLAB_SILO", "Sniper Tower", GOAL_TYPE1, vect(-842.344604, -3827.978027, 2039.993286), rot(0, 0, 0)); + jock_cherry = AddGoalLocation("14_OCEANLAB_SILO", "Cherry Picker", GOAL_TYPE1, vect(-13.000000, -6790.000000, -542.000000), rot(0, 32768, 0)); + jock_computer = AddGoalLocation("14_OCEANLAB_SILO", "Launch Command", GOAL_TYPE1, vect(-100.721497, -1331.947754, 904.364380), rot(0, 32768, 0)); + + //COMPUTER + goal = AddGoal("14_OCEANLAB_SILO", "Launch Command Computer", GOAL_TYPE2, 'ComputerSecurity0', PHYS_None); + AddGoalActor(goal, 1, 'DataLinkTrigger4', PHYS_None); // Launch sequence initiated. It's gonna be a sunny day at Area 51... + computer_vanilla = AddGoalLocation("14_OCEANLAB_SILO", "Launch Command", GOAL_TYPE2 | VANILLA_GOAL, vect(175.973724, -1612.441650, 853.105103), rot(0,16344,0)); + computer_radio = AddGoalLocation("14_OCEANLAB_SILO", "Radio", GOAL_TYPE2, vect(-1721.988770, -6533.606445, 1665), rot(16384,32768,0)); + computer_meeting = AddGoalLocation("14_OCEANLAB_SILO", "Surface Meeting Room", GOAL_TYPE2, vect(-691.854248, -3575.400391, 1475), rot(16384,0,0)); + computer_machine_shop = AddGoalLocation("14_OCEANLAB_SILO", "Machine Shop", GOAL_TYPE2, vect(203,-4326,1513), rot(0,0,0)); + + // MUTEXES + AddMutualExclusion(howard_radio, computer_radio); + AddMutualExclusion(howard_computer, computer_vanilla); + AddMutualExclusion(howard_meeting, computer_meeting); + AddMutualExclusion(howard_machine_shop, computer_machine_shop); + + AddMutualExclusion(howard_cherry, jock_cherry); //Cherry Picker and bottom of silo Jock + AddMutualExclusion(howard_meeting, jock_tower); //Surface meeting room and sniper tower + AddMutualExclusion(howard_radio, jock_vanilla); //Radio/Poker building and vanilla Jock + AddMutualExclusion(howard_computer, jock_computer); // both in the same room + + AddMutualExclusion(computer_vanilla, jock_computer); - AddMutualExclusion(howard1, jock1); - AddMutualExclusion(howard2, jock2); return 142; @@ -406,7 +434,7 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) } } foreach AllActors(class'#var(prefix)Switch1', button) { - if(button.name=='Switch4') { + if(button.Event=='abort') { button.Destroy(); break; } From f2c963f15a0ea083e0185441dcb8b90176da1a09 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 10 Nov 2024 19:23:46 -0500 Subject: [PATCH 24/87] Add ShuffleGoals, CheatsOn, CheatsOff cheats to DXRandoGameInfo for non-vanilla --- .../DeusEx/Classes/DXRandoGameInfo.uc | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/DXRNonVanilla/DeusEx/Classes/DXRandoGameInfo.uc b/DXRNonVanilla/DeusEx/Classes/DXRandoGameInfo.uc index d41609cf6..73e02c3af 100644 --- a/DXRNonVanilla/DeusEx/Classes/DXRandoGameInfo.uc +++ b/DXRNonVanilla/DeusEx/Classes/DXRandoGameInfo.uc @@ -194,3 +194,39 @@ function DeusExLevelInfo SpawnDXLevelInfo() return DeusExLevelInfo; } + +exec function ShuffleGoals() +{ + local DXRMissions missions; + + foreach AllActors(class'DXRMissions',missions) + { + missions.SetGlobalSeed(FRand()); + missions.ShuffleGoals(); + } +} + +exec function CheatsOn() +{ + SetCheatsState(true); +} + +exec function CheatsOff() +{ + SetCheatsState(false); +} + +function SetCheatsState(bool enabled) +{ + local #var(PlayerPawn) p; + + foreach AllActors(class'#var(PlayerPawn)',p){ + p.bCheatsEnabled=enabled; + if (enabled){ + p.ClientMessage("Cheats Enabled"); + } else { + p.ClientMessage("Cheats Disabled"); + } + } +} + From 0cc2b1098f737f43e7aa025615d66f9159dd8369 Mon Sep 17 00:00:00 2001 From: Jeffrey Thomas Piercy Date: Sun, 10 Nov 2024 19:44:38 -0800 Subject: [PATCH 25/87] More endgame quotes (#1029) * more endgame quotes * shorten a quote * add a quote, remove a quote * increase endgame quotes array size --------- Co-authored-by: Die4Ever <30947252+Die4Ever@users.noreply.github.com> --- DXRando/DeusEx/Classes/EndgameQuoteManager.uc | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/DXRando/DeusEx/Classes/EndgameQuoteManager.uc b/DXRando/DeusEx/Classes/EndgameQuoteManager.uc index c1f9a3240..7ff65c421 100644 --- a/DXRando/DeusEx/Classes/EndgameQuoteManager.uc +++ b/DXRando/DeusEx/Classes/EndgameQuoteManager.uc @@ -6,7 +6,7 @@ struct EndQuote var string attribution; }; -var EndQuote quotes[140]; +var EndQuote quotes[148]; var int numQuotes; //For now, this is limited to the default UnrealScript limit of 256 characters in a string @@ -38,8 +38,9 @@ function LoadQuotes() AddQuote("WE ARE THE INVISIBLE HAND. WE ARE THE ILLUMINATI. WE COME BEFORE AND AFTER. WE ARE FOREVER. AND EVENTUALLY... EVENTUALLY WE WILL LEAD THEM INTO THE DAY.","MORGAN EVERETT"); AddQuote("THE NEED TO BE OBSERVED AND UNDERSTOOD WAS ONCE SATISFIED BY GOD. NOW WE CAN IMPLEMENT THE SAME FUNCTIONALITY WITH DATA-MINING ALGORITHMS.","MORPHEUS"); AddQuote("I ORDER YOU TO STAND IN THE SPOTLIGHT AND GROWL AT THE WOMEN LIKE A DOG WHO NEEDS A MASTER.","DOOR GIRL"); - AddQuote("I WANTED ORANGE. IT GAVE ME LEMON-LIME.","GUNTHER HERMANN"); + AddQuote("I WANTED ORANGE. IT GAVE ME LEMON-LIME.","GUNTHER HERMANN"); AddQuote("THE SUB-BAY DOORS ARE CLOSED. YOU NEED TO OPEN THEM.","GARY SAVAGE"); + AddQuote("PROLONGED EXPOSURE? IT'S LIKE GIVING 'EM CIGARETTES OR SOMETHING.", "UNATCO TROOP"); //Why not some Zero Wing? AddQuote("SOMEBODY SET UP US THE BOMB.","MECHANIC"); @@ -59,11 +60,16 @@ function LoadQuotes() AddQuote("TINGLE, TINGLE! KOOLOO-LIMPAH! ...THESE ARE THE MAGIC WORDS THAT TINGLE CREATED HIMSELF. DON'T STEAL THEM!","TINGLE"); AddQuote("PAY NO ATTENTION TO THE AVERAGE MIDDLE-AGED MAN STANDING BY THIS SIGN. LEAVE HIM ALONE!","SIGN"); AddQuote("I'M KIKI THE MONKEY KI KI! I LOVE RUPEES MORE THAN ANYTHING. CAN YOU SPARE ME 10 RUPEES?","KIKI THE MONKEY"); + AddQuote("HO HO HO... NOW, I MUST GO!", "AGAHNIM"); + AddQuote("THIS IS MY TOP SECRET ROOM. KEEP IT BETWEEN US, OK?", "CHRIS HOULIHAN"); //https://zelda.fandom.com/wiki/Chris_Houlihan + AddQuote("DODONGO DISLIKES SMOKE", "OLD MAN"); + AddQuote("10TH ENEMY HAS THE BOMB", "OLD MAN"); + AddQuote("I AM ERROR", "ERROR"); //Some Plumber Talk AddQuote("THANK YOU MARIO! BUT OUR PRINCESS IS IN ANOTHER CASTLE!","TOAD"); AddQuote("THANK YOU SO MUCH FOR PLAYING MY GAME!","MARIO"); - AddQuote("DEAR PESKY PLUMBERS, THE KOOPALINGS AND I HAVE TAKEN OVER THE MUSHROOM KINGDOM! THE PRINCESS IS NOW A PERMANENT GUEST AT ONE OF MY SEVEN KOOPA HOTELS. I DARE YOU TO FIND HER IF YOU CAN!","BOWSER"); + AddQuote("DEAR PESKY PLUMBERS, THE KOOPALINGS AND I HAVE TAKEN OVER THE MUSHROOM KINGDOM! THE PRINCESS IS NOW A PERMANENT GUEST AT ONE OF MY SEVEN KOOPA HOTELS. I DARE YOU TO FIND HER IF YOU CAN!","BOWSER"); //A bit of this and that AddQuote("UNFORTUNATELY, KLLING IS ONE OF THOSE THINGS THAT GETS EASIER THE MORE YOU DO IT.","SOLID SNAKE"); @@ -76,11 +82,13 @@ function LoadQuotes() AddQuote("WAR. WAR NEVER CHANGES.","RON PERLMAN"); AddQuote("PRAISE THE SUN!","SOLAIRE OF ASTORA"); AddQuote("STUPID BANJO AND DUMB KAZOOIE. I'LL BE BACK IN BANJO-TOOIE!","GRUNTILDA"); - AddQuote("DO NOT HATE HUMANS. IF YOU CANNOT LIVE WITH THEM, THEN AT LEAST DO THEM NO HARM, FOR THEIRS IS ALREADY A HARD LOT","LISA"); + AddQuote("DO NOT HATE HUMANS. IF YOU CANNOT LIVE WITH THEM, THEN AT LEAST DO THEM NO HARM, FOR THEIRS IS ALREADY A HARD LOT","LISA"); AddQuote("UH, BOYS? HOW ABOUT THAT EVAC? COMMANDER? JIM? WHAT THE HELL IS GOING ON UP THERE??","SARAH KERRIGAN"); AddQuote("LOOK AT YOU, HACKER: A PATHETIC CREATURE OF MEAT AND BONE, PANTING AND SWEATING AS YOU RUN THROUGH MY CORRIDORS. HOW CAN YOU CHALLENGE A PERFECT, IMMORTAL MACHINE?","SHODAN"); AddQuote("NANOMACHINES, SON.","SENATOR ARMSTRONG"); AddQuote("THIS WAS A TRIUMPH. I'M MAKING A NOTE HERE: HUGE SUCCESS","GLADOS"); + AddQuote("YOU WILL BE BAKED AND THEN THERE WILL BE CAKE", "GLADOS"); + AddQuote("THE CAKE IS A LIE", "DOUG RATTMANN"); AddQuote("NEVER GONNA GIVE YOU UP, NEVER GONNA LET YOU DOWN. NEVER GONNA RUN AROUND AND DESERT YOU. NEVER GONNA MAKE YOU CRY. NEVER GONNA SAY GOODBYE. NEVER GONNA TELL A LIE AND HURT YOU","RICK ASTLEY"); AddQuote("IF THE ZOO BANS ME FOR HOLLERING AT THE ANIMALS I WILL FACE GOD AND WALK BACKWARDS INTO HELL","DRIL"); AddQuote("NANITES! COURTESY OF RAY PALMER!", "OLIVER QUEEN"); @@ -100,6 +108,9 @@ function LoadQuotes() AddQuote("ENOUGH! OPEN UP YOUR EYES AND LOOK AT THE BIG PICTURE; YOU'RE ALL PUPPETS OF CORRUPT POLITICIANS AND CAPITALISTS. DON'T YOU UNDERSTAND, IT'S UTTERLY POINTLESS TO FIGHT EACH OTHER.","COLONEL SHIKISHIMA"); //Akira AddQuote("THE LAST METROID IS IN CAPTIVITY. THE GALAXY IS AT PEACE...","SUPER METROID"); AddQuote("YOU ARE FACED WITH OVERWHELMING POWER. ACCEPT YOUR HELPLESSNESS.","RAVEN BEAK"); + AddQuote("HERE'S A LOCKPICK. IT MIGHT BE HANDY IF YOU, THE MASTER OF UNLOCKING, TAKE IT WITH YOU.", "BARRY BURTON"); + AddQuote("FROM THIS TIME FORWARD, EVERY 1 BILLION YEARS, YOU WILL HAVE CHILDREN CALLED \"LIFE\"", "THE SUN"); //E.V.O.: Search for Eden + AddQuote("I WOULD LIKE TO GIVE YOU SOMETHING CALLED \"INTELLIGENCE\". YOU CAN CREATE A \"CIVILIZATION\", AND HELP THE WORLD PROSPER BY USING YOUR \"INTELLIGENCE\".", "THE SUN"); //T7G / T11H Quotes... trying to avoid spoilers... AddQuote("OLD MAN STAUF BUILT A HOUSE AND FILLED IT WITH HIS TOYS", "HENRY STAUF"); @@ -146,8 +157,8 @@ function LoadQuotes() //Chrono Trigger AddQuote("IF HISTORY IS TO CHANGE, LET IT CHANGE. IF THE WORLD IS TO BE DESTROYED, SO BE IT. IF MY FATE IS TO DIE, I MUST SIMPLY LAUGH","MAGUS"); AddQuote("AYLA FIGHT. AYLA NO RUN. RUNNING WORSE THAN LOSING.","AYLA"); - AddQuote("MACHINES AREN'T CAPABLE OF EVIL. HUMANS MAKE THEM THAT WAY.","LUCA"); - AddQuote("THEY CALL ME GATO. I HAVE METAL JOINTS. BEAT ME UP AND EARN FIFTEEN SILVER POINTS!","GATO"); + AddQuote("MACHINES AREN'T CAPABLE OF EVIL. HUMANS MAKE THEM THAT WAY.","LUCA"); + AddQuote("THEY CALL ME GATO. I HAVE METAL JOINTS. BEAT ME UP AND EARN FIFTEEN SILVER POINTS!","GATO"); //Vampire: The Masquerade - Bloodlines AddQuote("DON'T OPEN IT","A FRIEND"); @@ -159,13 +170,13 @@ function LoadQuotes() AddQuote("INDIVIDUALISM IS A PATH FRAUGHT WITH OBSTACLES, AND SOMETIMES ANGRY MOBS, BUT FOR ALL ITS HARDSHIPS IT IS THE ONLY ONE WORTH TAKING","BECKETT"); AddQuote("EACH MINOR PROBLEM LIKE A GRAIN OF SAND, EACH NIGHT I INHERIT THE DESERT","SEBASTIAN LACROIX"); AddQuote("A TRUE MASTER HAS PLAYED THE ENTIRE GAME BEFORE THE FIRST MOVE","A FRIEND"); - AddQuote("WHETHER OR NOT YOU WIN THE GAME, MATTERS NOT. IT'S IF YOU BOUGHT IT.","ROSA"); + AddQuote("WHETHER OR NOT YOU WIN THE GAME, MATTERS NOT. IT'S IF YOU BOUGHT IT.","ROSA"); AddQuote("BEWARE THE PROTECTION OF WOLVES","SMILING JACK"); //Max Payne - AddQuote("THEY WERE ALL DEAD. THE FINAL GUNSHOT WAS AN EXCLAMATION MARK TO EVERYTHING THAT HAD LED TO THIS POINT. I RELEASED MY FINGER FROM THE TRIGGER. AND THEN IT WAS OVER.","MAX PAYNE"); + AddQuote("THEY WERE ALL DEAD. THE FINAL GUNSHOT WAS AN EXCLAMATION MARK TO EVERYTHING THAT HAD LED TO THIS POINT. I RELEASED MY FINGER FROM THE TRIGGER. AND THEN IT WAS OVER.","MAX PAYNE"); AddQuote("I DON'T KNOW ABOUT ANGELS, BUT IT'S FEAR THAT GIVES MEN WINGS.","MAX PAYNE"); - AddQuote("I WAS IN A GRAPHIC NOVEL. FUNNY AS HELL, IT WAS THE MOST HORRIBLE THING I COULD THINK OF.","MAX PAYNE"); + AddQuote("I WAS IN A GRAPHIC NOVEL. FUNNY AS HELL, IT WAS THE MOST HORRIBLE THING I COULD THINK OF.","MAX PAYNE"); AddQuote("THROW THE RULES OUT THE WINDOW, ODDS ARE YOU'LL GO THAT WAY TOO.","MAX PAYNE"); //Resident Evil 4 @@ -176,14 +187,14 @@ function LoadQuotes() //Barkley Shut Up and Jam: Gaiden AddQuote("IF YOU CAN'T SLAM WITH THE BEST, THEN JAM WITH THE REST.","CHARLES BARKLEY"); AddQuote("I BELIEVE GHOSTS ARE LIKE DOGS AND THEY JUST SORT OF DO THINGS ARBITRARILY.","CHARLES BARKLEY"); - AddQuote("THE YEAR IS 2053. BASKETBALL IS DEAD.","CHARLES BARKLEY"); + AddQuote("THE YEAR IS 2053. BASKETBALL IS DEAD.","CHARLES BARKLEY"); //AddQuote("JORDAN, YOU MOTHERFUCKING BAKA, YOU SICK MOTHERFUCKING GODDAMN BAKA!","CHARLES BARKLEY"); //Swearing? AddQuote("CHAOS DUUUUUUUUUUUUNNK!","CHARLES BARKLEY"); AddQuote("THERE ARE TWO THINGS A DUERGAR CAN'T RESIST, BARKLEY. ONE IS RUBIES. THE OTHER IS A DUNKAROO.","CYBERDWARF"); AddQuote("THE PORTAL IS CLOSING. THIS IS THE LAST WE'LL SEE OF THE B-BALL DIMENSION FOR A LONG TIME...","CYBERDWARF"); AddQuote("I CONTROL THE POWERS OF SHIMMERGLOBE, B-BALL OF THE ANCIENT PROTO-DWARFS AND THE HELL B-BALL, FORGED ON THE ANVIL OF JAMICITE. I NOW HAVE THE POWER TO SHOOT A THREE POINTER FROM 30 YARDS AWAY.","CHARLES BARKLEY"); AddQuote("THIS MEETING BETWEEN YOU AND I IS THE CULMINATION OF THOUSANDS OF YEARS OF B-BALL. THIS IS B-BALL IN ALL ITS GLORY, THIS IS THE FINAL GAME! IT'S JUST YOU AND ME, BARKLEY. NO REFS. NO WHISTLES. NO RULES. JUST YOU, ME, AND SWEET GEORGIA BROWN.","MICHAEL JORDAN"); - AddQuote("I AM THE BEGINNING AND THE END. THE ALPHA AND THE OMEGA. THE FIRST AND THE LAST.","CHARLES BARKLEY"); + AddQuote("I AM THE BEGINNING AND THE END. THE ALPHA AND THE OMEGA. THE FIRST AND THE LAST.","CHARLES BARKLEY"); //Fallout: New Vegas AddQuote("SUCCESS DEPENDS ON FORETHOUGHT, DISPASSIONATE CALCULATION OF PROBABILITIES, ACCOUNTING FOR EVERY STRAY VARIABLE.", "ROBERT EDWIN HOUSE"); From a9cbd89904ed4116c3b6a8b0e4c8456f88fbb066 Mon Sep 17 00:00:00 2001 From: Jeffrey Thomas Piercy Date: Sun, 10 Nov 2024 19:58:51 -0800 Subject: [PATCH 26/87] Add Advanced New Game setting for zombies. Add zombie chance to NG+ (#1026) * add advanced new game setting for zombies. add them to NG+ * change reanimation description * Update DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc Co-authored-by: Die4Ever <30947252+Die4Ever@users.noreply.github.com> * decrease max enemyrespawn and reanimation values * move zombie logic from DXREnemyRespawn to DXRZombies * scale random factor in zombie reanimate time by reanimation setting * check if reanimation exists in BindFlags() * shorten reanimation setting description to make it fit * Update DXRModules/DeusEx/Classes/DXRHalloween.uc --------- Co-authored-by: Die4Ever <30947252+Die4Ever@users.noreply.github.com> --- DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc | 11 +- DXRCore/DeusEx/Classes/DXRando.uc | 6 +- DXRFixes/DeusEx/Classes/POVCorpse.uc | 4 +- DXRModules/DeusEx/Classes/DXREnemyRespawn.uc | 8 - DXRModules/DeusEx/Classes/DXRFlags.uc | 13 +- DXRModules/DeusEx/Classes/DXRFlagsBase.uc | 9 + .../DeusEx/Classes/DXRFlagsNGPMaxRando.uc | 15 +- DXRModules/DeusEx/Classes/DXRHalloween.uc | 306 +---------------- DXRModules/DeusEx/Classes/DXRHints.uc | 6 +- DXRModules/DeusEx/Classes/DXRZombies.uc | 308 ++++++++++++++++++ DXRando.cs | 2 +- .../Classes/DXRandoCrowdControlEffects.uc | 4 +- 12 files changed, 359 insertions(+), 333 deletions(-) create mode 100644 DXRModules/DeusEx/Classes/DXRZombies.uc diff --git a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc index 7fdaedaaa..8e53b6034 100644 --- a/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc +++ b/DXRCore/DeusEx/Classes/DXRMenuSetupRando.uc @@ -245,11 +245,17 @@ function BindControls(optional string action) NewMenuItem("Enemy Weapons Variety %", "Should enemies be using weapons that normally exist in the map?"); Slider(f.moresettings.enemies_weapons, 0, 100); + NewMenuItem("Robot Weapons Rando %", "Allow robots to get randomized weapons."); + Slider(f.settings.bot_weapons, 0, 100); + NewMenuItem("Non-Human Chance %", "Reduce the chance of new enemies being non-humans."); Slider(f.settings.enemies_nonhumans, 0, 100); NewMenuItem("Enemy Respawn Seconds", "How many seconds for enemies to respawn. Leave blank or 0 to disable."); - Slider(f.settings.enemyrespawn, 0, 10000); + Slider(f.settings.enemyrespawn, 0, 3600); + + NewMenuItem("Reanimation Seconds", "Approximately how many seconds for corpses to come back as zombies. Leave blank or 0 to disable."); + Slider(f.moresettings.reanimation, 0, 3600); NewMenuItem("Move Turrets", "Randomizes locations of turrets, cameras, and security computers for them."); Slider(f.settings.turrets_move, 0, 100); @@ -257,9 +263,6 @@ function BindControls(optional string action) NewMenuItem("Add Turrets", "Randomly adds turrets, cameras, and security computers for them."); Slider(f.settings.turrets_add, 0, 10000); - NewMenuItem("Robot Weapons Rando %", "Allow robots to get randomized weapons."); - Slider(f.settings.bot_weapons, 0, 100); - NewMenuItem("", "Allow non-humans to get randomized stats."); EnumOption("Unchanged Non-human Stats", 0, f.settings.bot_stats); EnumOption("Random Non-human Stats", 100, f.settings.bot_stats); diff --git a/DXRCore/DeusEx/Classes/DXRando.uc b/DXRCore/DeusEx/Classes/DXRando.uc index f3b409bd0..1ef86caf9 100644 --- a/DXRCore/DeusEx/Classes/DXRando.uc +++ b/DXRCore/DeusEx/Classes/DXRando.uc @@ -168,7 +168,7 @@ function CheckConfig() player.bAskedToTrain = false; player.SaveConfig(); } - if( VersionOlderThan(config_version, 3,2,3,3) ) { + if( VersionOlderThan(config_version, 3,2,5,1) ) { for(i=0; i < ArrayCount(modules_to_load); i++) { modules_to_load[i] = ""; } @@ -215,6 +215,7 @@ function vanilla_modules() modules_to_load[i++] = "DXRHordeMode"; //modules_to_load[i++] = "DXRKillBobPage"; modules_to_load[i++] = "DXREnemyRespawn"; + modules_to_load[i++] = "DXRZombies"; modules_to_load[i++] = "DXRLoadouts"; modules_to_load[i++] = "DXRWeapons"; modules_to_load[i++] = "DXRCrowdControl"; @@ -255,6 +256,7 @@ function hx_modules() modules_to_load[i++] = "DXREnemies"; modules_to_load[i++] = "DXRHordeMode"; modules_to_load[i++] = "DXREnemyRespawn"; + modules_to_load[i++] = "DXRZombies"; modules_to_load[i++] = "DXRLoadouts"; modules_to_load[i++] = "DXRWeapons"; modules_to_load[i++] = "DXRCrowdControl"; @@ -290,6 +292,7 @@ function gmdx_modules() modules_to_load[i++] = "DXREnemies"; modules_to_load[i++] = "DXRHordeMode"; modules_to_load[i++] = "DXREnemyRespawn"; + modules_to_load[i++] = "DXRZombies"; modules_to_load[i++] = "DXRLoadouts"; modules_to_load[i++] = "DXRWeapons"; modules_to_load[i++] = "DXRCrowdControl"; @@ -335,6 +338,7 @@ function vmd_modules() modules_to_load[i++] = "DXREnemies"; modules_to_load[i++] = "DXRHordeMode"; modules_to_load[i++] = "DXREnemyRespawn"; + modules_to_load[i++] = "DXRZombies"; modules_to_load[i++] = "DXRLoadouts"; modules_to_load[i++] = "DXRWeapons"; modules_to_load[i++] = "DXRCrowdControl"; diff --git a/DXRFixes/DeusEx/Classes/POVCorpse.uc b/DXRFixes/DeusEx/Classes/POVCorpse.uc index 50174dda6..0f8c07b13 100644 --- a/DXRFixes/DeusEx/Classes/POVCorpse.uc +++ b/DXRFixes/DeusEx/Classes/POVCorpse.uc @@ -15,7 +15,7 @@ function InitFor(DeusExCarcass carc) CorpseItemName = carc.itemName; CarcassName = carc.CarcassName; if(!bNotDead) - ZombieTime = class'DXRHalloween'.static.GetZombieTime(carc); + ZombieTime = class'DXRZombies'.static.GetZombieTime(carc); } static function POVCorpse Create(DeusExPlayer player, DeusExCarcass carc) @@ -67,7 +67,7 @@ function DeusExCarcass Drop(vector dropVect) if (carc.SetLocation(dropVect)) { if(!bNotDead) - class'DXRHalloween'.static.SetZombieTime(carc, ZombieTime); + class'DXRZombies'.static.SetZombieTime(carc, ZombieTime); Destroy(); return carc; } diff --git a/DXRModules/DeusEx/Classes/DXREnemyRespawn.uc b/DXRModules/DeusEx/Classes/DXREnemyRespawn.uc index 8913ee37b..25f503e16 100644 --- a/DXRModules/DeusEx/Classes/DXREnemyRespawn.uc +++ b/DXRModules/DeusEx/Classes/DXREnemyRespawn.uc @@ -39,7 +39,6 @@ function PostFirstEntry() if( dxr.flags.settings.enemyrespawn <= 0 ) return; if( dxr.flags.IsHordeMode() ) return; - if( dxr.flags.IsHalloweenMode() ) return; time=0; foreach AllActors(class'ScriptedPawn', p) { @@ -120,15 +119,8 @@ function AnyEntry() Super.AnyEntry(); if( dxr.flags.IsHordeMode() ) return; - if( dxr.flags.IsHalloweenMode() ) return; - if( dxr.flags.settings.enemyrespawn <= 0 ) return; - /*for(i=0; i < ArrayCount(enemies); i++) { - if( enemies[i].sp == None || enemies[i].sp.health <= 0 ) { - Respawn(enemies[i]); - } - }*/ SetTimer(1.0, true); } diff --git a/DXRModules/DeusEx/Classes/DXRFlags.uc b/DXRModules/DeusEx/Classes/DXRFlags.uc index a67d947d2..b95241470 100644 --- a/DXRModules/DeusEx/Classes/DXRFlags.uc +++ b/DXRModules/DeusEx/Classes/DXRFlags.uc @@ -135,6 +135,7 @@ function CheckConfig() difficulty_settings[i].bot_weapons = 50; difficulty_settings[i].bot_stats = 100; difficulty_settings[i].enemyrespawn = 0; + more_difficulty_settings[i].reanimation = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 1; difficulty_settings[i].skills_independent_levels = 0; @@ -211,6 +212,7 @@ function CheckConfig() difficulty_settings[i].bot_weapons = 10; difficulty_settings[i].bot_stats = 100; difficulty_settings[i].enemyrespawn = 0; + more_difficulty_settings[i].reanimation = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 5; difficulty_settings[i].skills_independent_levels = 0; @@ -286,6 +288,7 @@ function CheckConfig() difficulty_settings[i].bot_weapons = 20; difficulty_settings[i].bot_stats = 100; difficulty_settings[i].enemyrespawn = 0; + more_difficulty_settings[i].reanimation = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 5; difficulty_settings[i].skills_independent_levels = 0; @@ -361,6 +364,7 @@ function CheckConfig() difficulty_settings[i].bot_weapons = 40; difficulty_settings[i].bot_stats = 100; difficulty_settings[i].enemyrespawn = 0; + more_difficulty_settings[i].reanimation = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 5; difficulty_settings[i].skills_independent_levels = 1; @@ -436,6 +440,7 @@ function CheckConfig() difficulty_settings[i].bot_weapons = 50; difficulty_settings[i].bot_stats = 100; difficulty_settings[i].enemyrespawn = 0; + more_difficulty_settings[i].reanimation = 0; difficulty_settings[i].skills_disable_downgrades = 0; difficulty_settings[i].skills_reroll_missions = 5; difficulty_settings[i].skills_independent_levels = 1; @@ -539,6 +544,7 @@ function FlagsSettings SetDifficulty(int new_difficulty) settings.enemies_nonhumans = 0; settings.bot_weapons = 0; settings.enemyrespawn = 0; + moresettings.reanimation = 0; settings.skills_disable_downgrades = 0; settings.skills_reroll_missions = 0; settings.skills_independent_levels = 0; @@ -701,11 +707,11 @@ function FlagsSettings SetDifficulty(int new_difficulty) if (IsHalloweenMode()){ clothes_looting = 1; settings.speedlevel = 0;// in DXRLoadouts we override level 0 speed to mean lvl 1 run silent - settings.enemyrespawn = 20; + moresettings.reanimation = 20; } else { clothes_looting = 0; } - + if(class'MenuChoice_NewGamePlus'.default.value == 0 && !IsWaltonWare()) moresettings.newgameplus_curve_scalar = -1; @@ -906,6 +912,7 @@ simulated function TutorialDisableRandomization(bool enableSomeRando) settings.bot_weapons = 0; settings.bot_stats = 0; settings.enemyrespawn = 0; + moresettings.reanimation = 0; settings.turrets_move = 0; settings.turrets_add = 0; @@ -977,6 +984,8 @@ function int ScoreFlags() score += ClampFlagValue(settings.bot_stats,0,100); if(settings.enemyrespawn > 0 && settings.enemyrespawn < 1000) score += 1500 - settings.enemyrespawn; + if(moresettings.reanimation > 0 && moresettings.reanimation < 100) + score += 5 * (150 - moresettings.reanimation); //settings.skills_disable_downgrades = 5; //settings.skills_reroll_missions = 5; //settings.skills_independent_levels = 1; diff --git a/DXRModules/DeusEx/Classes/DXRFlagsBase.uc b/DXRModules/DeusEx/Classes/DXRFlagsBase.uc index be884562b..164a154ce 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsBase.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsBase.uc @@ -84,6 +84,7 @@ struct MoreFlagsSettings{ var int camera_mode; var int enemies_weapons; var int aug_loc_rando; + var int reanimation; var int splits_overlay;// keep this at the end for automated tests }; @@ -363,6 +364,10 @@ simulated function string BindFlags(int mode, optional string str) FlagInt('Rando_dancingpercent', settings.dancingpercent, mode, str); FlagInt('Rando_doorsmode', settings.doorsmode, mode, str); FlagInt('Rando_enemyrespawn', settings.enemyrespawn, mode, str); + if(!FlagInt('Rando_reanimation', moresettings.reanimation, mode, str) && mode==Reading && dxr.flags.IsHalloweenMode()) { + moresettings.reanimation = settings.enemyrespawn; + settings.enemyrespawn = 0; + } FlagInt('Rando_removeparismj12', remove_paris_mj12, mode, str); FlagInt('Rando_skills_disable_downgrades', settings.skills_disable_downgrades, mode, str); @@ -503,6 +508,8 @@ simulated function string flagNameToHumanName(name flagname){ return "Doors Mode"; ///////////////Might need adjustment?////////////////// case 'Rando_enemyrespawn': return "Enemy Respawn Time"; + case 'Rando_reanimation': + return "Reanimation Time"; case 'Rando_skills_disable_downgrades': return "Disallow downgrades on New Game screen"; case 'Rando_skills_reroll_missions': @@ -695,6 +702,8 @@ simulated function string flagValToHumanVal(name flagname, int val){ case 'Rando_enemyrespawn': return val$" seconds"; + case 'Rando_reanimation': + return "~"$val$" seconds"; //Medbot/Repairbot cooldown and amount options case 'Rando_medbotcooldowns': diff --git a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc index 2a4403907..98fb527ab 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc @@ -46,6 +46,7 @@ simulated function InitMaxRandoSettings() settings.min_weapon_shottime=difficulty_settings.min_weapon_shottime; settings.max_weapon_shottime=difficulty_settings.max_weapon_shottime; settings.enemyrespawn = difficulty_settings.enemyrespawn; + moresettings.reanimation = more_difficulty_settings.reanimation; settings.health = difficulty_settings.health; settings.energy = difficulty_settings.energy; } @@ -92,13 +93,17 @@ simulated function RandomizeSettings(bool forceMenuOptions) settings.enemiesshuffled = 100; MaxRandoVal(settings.enemies_nonhumans); - if(DXRFlags(self).IsHalloweenMode()) { // this cast is pretty nasty - settings.enemyrespawn = rng(10) + 15; - } - else if(chance_single(33)) { - settings.enemyrespawn = rng(120) + 120; + if(DXRFlags(self).IsHalloweenMode()) { // this cast is pretty nasty + moresettings.reanimation = rng(10) + 15; + } else if (chance_single(33)) { + if (chance_single(50)) { + settings.enemyrespawn = rng(120) + 120; + } else { + moresettings.reanimation = rng(20) + 30; + } } else { settings.enemyrespawn = 0; + moresettings.reanimation = 0; } if(rngb()) { diff --git a/DXRModules/DeusEx/Classes/DXRHalloween.uc b/DXRModules/DeusEx/Classes/DXRHalloween.uc index 2ca83045a..efec1e513 100644 --- a/DXRModules/DeusEx/Classes/DXRHalloween.uc +++ b/DXRModules/DeusEx/Classes/DXRHalloween.uc @@ -1,8 +1,4 @@ -class DXRHalloween extends DXRActorsBase; - -var #var(DeusExPrefix)Carcass carcs[256]; -var float times[256], curtime; -var int num_carcs; +class DXRHalloween extends DXRActorsBase transient; function PostFirstEntry() { @@ -28,312 +24,12 @@ function PostFirstEntry() function ReEntry(bool IsTravel) { - if(curtime~=0) { - curtime = Level.TimeSeconds;// when updating the game - } if(IsTravel && dxr.flags.IsHalloweenMode()) { // recreate him if you leave the map and come back, but not if you load a save class'MrH'.static.Create(self); } } -function AnyEntry() -{ - Super.AnyEntry(); - if(dxr.flags.IsHalloweenMode()) { - SetTimer(1.0, true); - } -} - -function Timer() -{ - Super.Timer(); - if( dxr == None ) return; - if(dxr.flags.IsHalloweenMode()) { - CheckCarcasses(); - } -} - -function CheckCarcasses() -{ - local int i; - local #var(DeusExPrefix)Carcass carc; - local float zombie_time, dog_zombie_time; - - if( dxr.flags.settings.enemyrespawn <= 0 ) return; - curtime += 1; - zombie_time = dxr.flags.settings.enemyrespawn - 5; - zombie_time = FClamp(zombie_time, 1, 10000); - dog_zombie_time = zombie_time / 5; - - for(i=0; i < num_carcs; i++) { - if(CheckResurrectCorpse(carcs[i], times[i])) { - // compress the array - num_carcs--; - carcs[i] = carcs[num_carcs]; - times[i] = times[num_carcs]; - i--;// repeat this iteration - continue; - } - } - - foreach AllActors(class'#var(DeusExPrefix)Carcass', carc) { - if(carc.Tag != 'ForceZombie') { - if(#var(prefix)PigeonCarcass(carc) != None || #var(prefix)SeagullCarcass(carc) != None - || #var(prefix)RatCarcass(carc) != None || #var(prefix)CatCarcass(carc) != None) - { - // skip critter carcasses, TODO: maybe find the PawnGenerator and increase its PawnCount so we can have zombie rats and birds without there being infinity of them? or track a maximum number of zombie critters here? cats have an override on the Attacking state - continue; - } - if(carc.bNotDead || carc.bInvincible || carc.bHidden) { - continue; - } - } - if(carc.bDeleteMe) continue; - for(i=0; i < num_carcs; i++) { - if(carcs[i] == carc) { - break; - } - } - if(carcs[i] != carc) { - carcs[num_carcs] = carc; - if(#var(prefix)DobermanCarcass(carc) != None || #var(prefix)MuttCarcass(carc) != None) { // special sauce for dogs - times[num_carcs] = curtime + dog_zombie_time + FRand()*2; - } else { - times[num_carcs] = curtime + zombie_time + FRand()*10; - } - carc.MaxDamage = 0.1 * carc.Mass;// easier to destroy carcasses - num_carcs++; - } - } -} - -#ifdef injections -function float _GetZombieTime(#var(DeusExPrefix)Carcass carc) -{ - local int i; - local float zombie_time, dog_zombie_time; - - for(i=0; i < num_carcs; i++) { - if(carcs[i] == carc) { - return times[i]; - } - } - - zombie_time = dxr.flags.settings.enemyrespawn - 5; - zombie_time = FClamp(zombie_time, 1, 10000); - dog_zombie_time = zombie_time / 5; - - if(#var(prefix)DobermanCarcass(carc) != None || #var(prefix)MuttCarcass(carc) != None) { // special sauce for dogs - return curtime + dog_zombie_time + FRand()*2; - } else { - return curtime + zombie_time + FRand()*10; - } -} - -static function float GetZombieTime(#var(DeusExPrefix)Carcass carc) -{ - local DXRHalloween h; - - h = DXRHalloween(Find()); - if(h == None) return carc.Level.TimeSeconds + 20; - return h._GetZombieTime(carc); -} - -function _SetZombieTime(#var(DeusExPrefix)Carcass carc, float time) -{ - local int i; - - if(!dxr.flags.IsHalloweenMode()) return; - - for(i=0; i < num_carcs; i++) { - if(carcs[i] == carc) { - times[i] = FMin(times[i], time); - return; - } - } - - carcs[num_carcs] = carc; - times[num_carcs] = time; - carc.MaxDamage = 0.1 * carc.Mass;// easier to destroy carcasses - num_carcs++; -} - -static function SetZombieTime(#var(DeusExPrefix)Carcass carc, float time) -{ - local DXRHalloween h; - - h = DXRHalloween(class'DXRando'.default.dxr.FindModule(class'DXRHalloween')); - if(h == None) return; - h._SetZombieTime(carc, time); -} -#endif - -function bool CheckResurrectCorpse(#var(DeusExPrefix)Carcass carc, float time) -{ - // return true to compress the array - if(carc == None) return true; - if(carc.bDeleteMe) return true; - - // wait for Zombie Time! - if(time > curtime) return false; - - return ResurrectCorpse(self, carc); -} - -static function string GetPawnClassNameFromCarcass(DXRActorsBase module, class<#var(DeusExPrefix)Carcass> carcClass) -{ - local string livingClassName; - - //For handling special cases that we're too lazy to make unique living classes for - switch(carcClass){ -#ifdef hx - case class'HXJCDentonCarcass': -#else - case class'#var(prefix)JCDentonMaleCarcass': -#endif - return "#var(prefix)JCDouble"; - default: - //Standard carcass with a matching living class - //(We should probably strive for this to be the norm) - //At least in vanilla, all carcasses are the original class name + Carcass - livingClassName = string(carcClass); - livingClassName = module.ReplaceText(livingClassName,"NametagCarcass","");// for our Aug guys - livingClassName = module.ReplaceText(livingClassName,"Carcass",""); - return livingClassName; - } -} - -static function bool ResurrectCorpse(DXRActorsBase module, #var(DeusExPrefix)Carcass carc, optional String pawnname) -{ - local string livingClassName; - local class livingClass; - local vector respawnLoc; - local ScriptedPawn sp,otherSP; - local int i; - local Inventory item, nextItem; - #ifndef vmd - local DXRFashionManager fashion; - #endif - local bool removeItem; - local string s; - - if(carc==None || carc.bDeleteMe) return False; - - livingClassName = GetPawnClassNameFromCarcass(module, carc.class); - livingClass = module.GetClassFromString(livingClassName,class'ScriptedPawn'); - - if (livingClass==None){ - module.warning("ResurrectCorpse " $ carc $ " failed livingClass==None"); - return False; - } - - respawnLoc = carc.Location; - respawnLoc.Z += livingClass.Default.CollisionHeight; - - sp = ScriptedPawn(carc.Spawn(livingClass,,,respawnLoc,carc.Rotation)); - - if (sp==None){ - module.warning("ResurrectCorpse " $ carc $ " failed sp==None"); - return False; - } - - if(pawnname != "") { - sp.FamiliarName = pawnname; - sp.UnfamiliarName = sp.FamiliarName; - } else { - if(#defined(injections)) { - s = ReplaceText(carc.itemName, " (Dead)", ""); - s = ReplaceText(s, " (Dead?)", ""); - sp.FamiliarName = s $ "'s Zombie"; - } - else { - sp.FamiliarName = sp.FamiliarName $ " Zombie"; - } - sp.UnfamiliarName = sp.FamiliarName; - } - sp.bInvincible = false; // If they died, they can't have been invincible - sp.bImportant = false; // already marked as dead, don't overwrite or destroy on travel - sp.BindName = "";// Zombies don't talk - sp.BarkBindName = ""; - - sp.DrawScale = carc.DrawScale; - sp.SetCollisionSize(sp.CollisionRadius*sp.DrawScale, sp.CollisionHeight*sp.DrawScale); - sp.Fatness = carc.Fatness; - - //Clear out initial inventory (since that should all be in the carcass) - for (i=0;i 0.2) - carc.spawn(class'FleshFragment',,,carc.Location); - } - - carc.Destroy(); - - return True; -} - function MapFixes() { local PathNode p; diff --git a/DXRModules/DeusEx/Classes/DXRHints.uc b/DXRModules/DeusEx/Classes/DXRHints.uc index d8508cd73..ce421b85d 100644 --- a/DXRModules/DeusEx/Classes/DXRHints.uc +++ b/DXRModules/DeusEx/Classes/DXRHints.uc @@ -63,9 +63,9 @@ simulated function InitHints() if(dxr.flags.IsHalloweenMode()) { AddHint("Mr. H cannot die, run away!"); - if(dxr.flags.settings.enemyrespawn > 0) - AddHint("Dead bodies will come back as zombies!", "You might want to destroy the bodies."); } + if(dxr.flags.moresettings.reanimation > 0) + AddHint("Dead bodies will come back as zombies!", "You might want to destroy the bodies."); if(dxr.flags.autosave == 3 && !dxr.flags.IsHordeMode()) { AddHint("You're not allowed to manually save,", "you only get an autosave when first entering a map."); } @@ -106,11 +106,11 @@ simulated function InitHints() AddHint("Use everything at your disposal, like TNT crates.", "Randomizer makes this even more of a strategy/puzzle game."); AddHint("A vending machine can provide you with 20 health worth of food.", "Eat up!"); AddHint("Pepper spray and fire extinguishers can incapacitate an enemy", "letting you sneak past them."); - AddHint("The medium and large metal crates are now destructible.", "They have 500 hp."); AddHint("Datacubes and nanokeys give off a glow.", "Keep your eyes open for it!"); if(!dxr.flags.IsZeroRando()) AddHint("Make sure to read the descriptions for skills, augs, and items.", "Randomizer adds some extra info."); + AddHint("The medium and large metal crates are now destructible.", "They have 500 hp."); if(dxr.flags.settings.min_weapon_dmg != dxr.flags.settings.max_weapon_dmg || dxr.flags.settings.min_weapon_shottime != dxr.flags.settings.max_weapon_shottime) AddHint("Each type of weapon gets randomized stats!", "Make sure to check one of each type."); diff --git a/DXRModules/DeusEx/Classes/DXRZombies.uc b/DXRModules/DeusEx/Classes/DXRZombies.uc new file mode 100644 index 000000000..381f3e432 --- /dev/null +++ b/DXRModules/DeusEx/Classes/DXRZombies.uc @@ -0,0 +1,308 @@ +class DXRZombies extends DXRActorsBase; + +var #var(DeusExPrefix)Carcass carcs[256]; +var int num_carcs; +var float times[256], curtime; + +function ReEntry(bool IsTravel) +{ + if(curtime~=0) { + curtime = Level.TimeSeconds;// when updating the game + } +} + +function AnyEntry() +{ + Super.AnyEntry(); + if(dxr.flags.moresettings.reanimation > 0) { + SetTimer(1.0, true); + } +} + +function Timer() +{ + Super.Timer(); + if(dxr != None && dxr.flags.moresettings.reanimation > 0) { + CheckCarcasses(); + } +} + +function CheckCarcasses() +{ + local int i; + local #var(DeusExPrefix)Carcass carc; + local float zombie_time, dog_zombie_time; + + if( dxr.flags.moresettings.reanimation <= 0 ) return; + curtime += 1; + zombie_time = dxr.flags.moresettings.reanimation - 5; + zombie_time = FClamp(zombie_time, 1, 10000); + dog_zombie_time = zombie_time / 5; + + for(i=0; i < num_carcs; i++) { + if(CheckReanimateCorpse(carcs[i], times[i])) { + // compress the array + num_carcs--; + carcs[i] = carcs[num_carcs]; + times[i] = times[num_carcs]; + i--;// repeat this iteration + continue; + } + } + + foreach AllActors(class'#var(DeusExPrefix)Carcass', carc) { + if(carc.Tag != 'ForceZombie') { + if(#var(prefix)PigeonCarcass(carc) != None || #var(prefix)SeagullCarcass(carc) != None + || #var(prefix)RatCarcass(carc) != None || #var(prefix)CatCarcass(carc) != None) + { + // skip critter carcasses, TODO: maybe find the PawnGenerator and increase its PawnCount so we can have zombie rats and birds without there being infinity of them? or track a maximum number of zombie critters here? cats have an override on the Attacking state + continue; + } + if(carc.bNotDead || carc.bInvincible || carc.bHidden) { + continue; + } + } + if(carc.bDeleteMe) continue; + for(i=0; i < num_carcs; i++) { + if(carcs[i] == carc) { + break; + } + } + if(carcs[i] != carc) { + carcs[num_carcs] = carc; + if(#var(prefix)DobermanCarcass(carc) != None || #var(prefix)MuttCarcass(carc) != None) { // special sauce for dogs + times[num_carcs] = curtime + dog_zombie_time + (FRand() * dxr.flags.moresettings.reanimation * 0.1); + } else { + times[num_carcs] = curtime + zombie_time + (FRand() * dxr.flags.moresettings.reanimation * 0.5); + } + carc.MaxDamage = 0.1 * carc.Mass;// easier to destroy carcasses + num_carcs++; + } + } +} + +#ifdef injections +function float _GetZombieTime(#var(DeusExPrefix)Carcass carc) +{ + local int i; + local float zombie_time, dog_zombie_time; + + for(i=0; i < num_carcs; i++) { + if(carcs[i] == carc) { + return times[i]; + } + } + + zombie_time = dxr.flags.moresettings.reanimation - 5; + zombie_time = FClamp(zombie_time, 1, 10000); + dog_zombie_time = zombie_time / 5; + + if(#var(prefix)DobermanCarcass(carc) != None || #var(prefix)MuttCarcass(carc) != None) { // special sauce for dogs + return curtime + dog_zombie_time + FRand()*2; + } else { + return curtime + zombie_time + FRand()*10; + } +} + +static function float GetZombieTime(#var(DeusExPrefix)Carcass carc) +{ + local DXRZombies zombies; + + zombies = DXRZombies(Find()); + if(zombies == None) return carc.Level.TimeSeconds + 20; + return zombies._GetZombieTime(carc); +} + +function _SetZombieTime(#var(DeusExPrefix)Carcass carc, float time) +{ + local int i; + + if(dxr.flags.moresettings.reanimation <= 0) return; + + for(i=0; i < num_carcs; i++) { + if(carcs[i] == carc) { + times[i] = FMin(times[i], time); + return; + } + } + + carcs[num_carcs] = carc; + times[num_carcs] = time; + carc.MaxDamage = 0.1 * carc.Mass;// easier to destroy carcasses + num_carcs++; +} + +static function SetZombieTime(#var(DeusExPrefix)Carcass carc, float time) +{ + local DXRZombies zombies; + + zombies = DXRZombies(class'DXRando'.default.dxr.FindModule(class'DXRZombies')); + if(zombies == None) return; + zombies._SetZombieTime(carc, time); +} +#endif + +function bool CheckReanimateCorpse(#var(DeusExPrefix)Carcass carc, float time) +{ + // return true to compress the array + if(carc == None) return true; + if(carc.bDeleteMe) return true; + + // wait for Zombie Time! + if(time > curtime) return false; + + return ReanimateCorpse(self, carc); +} + +static function string GetPawnClassNameFromCarcass(DXRActorsBase module, class<#var(DeusExPrefix)Carcass> carcClass) +{ + local string livingClassName; + + //For handling special cases that we're too lazy to make unique living classes for + switch(carcClass){ +#ifdef hx + case class'HXJCDentonCarcass': +#else + case class'#var(prefix)JCDentonMaleCarcass': +#endif + return "#var(prefix)JCDouble"; + default: + //Standard carcass with a matching living class + //(We should probably strive for this to be the norm) + //At least in vanilla, all carcasses are the original class name + Carcass + livingClassName = string(carcClass); + livingClassName = module.ReplaceText(livingClassName,"NametagCarcass","");// for our Aug guys + livingClassName = module.ReplaceText(livingClassName,"Carcass",""); + return livingClassName; + } +} + +static function bool ReanimateCorpse(DXRActorsBase module, #var(DeusExPrefix)Carcass carc, optional String pawnname) +{ + local string livingClassName; + local class livingClass; + local vector respawnLoc; + local ScriptedPawn sp,otherSP; + local int i; + local Inventory item, nextItem; + #ifndef vmd + local DXRFashionManager fashion; + #endif + local bool removeItem; + local string s; + + if(carc==None || carc.bDeleteMe) return False; + + livingClassName = GetPawnClassNameFromCarcass(module, carc.class); + livingClass = module.GetClassFromString(livingClassName,class'ScriptedPawn'); + + if (livingClass==None){ + module.warning("ReanimateCorpse " $ carc $ " failed livingClass==None"); + return False; + } + + respawnLoc = carc.Location; + respawnLoc.Z += livingClass.Default.CollisionHeight; + + sp = ScriptedPawn(carc.Spawn(livingClass,,,respawnLoc,carc.Rotation)); + + if (sp==None){ + module.warning("ReanimateCorpse " $ carc $ " failed sp==None"); + return False; + } + + if(pawnname != "") { + sp.FamiliarName = pawnname; + sp.UnfamiliarName = sp.FamiliarName; + } else { + if(#defined(injections)) { + s = ReplaceText(carc.itemName, " (Dead)", ""); + s = ReplaceText(s, " (Dead?)", ""); + sp.FamiliarName = s $ "'s Zombie"; + } + else { + sp.FamiliarName = sp.FamiliarName $ " Zombie"; + } + sp.UnfamiliarName = sp.FamiliarName; + } + sp.bInvincible = false; // If they died, they can't have been invincible + sp.bImportant = false; // already marked as dead, don't overwrite or destroy on travel + sp.BindName = "";// Zombies don't talk + sp.BarkBindName = ""; + + sp.DrawScale = carc.DrawScale; + sp.SetCollisionSize(sp.CollisionRadius*sp.DrawScale, sp.CollisionHeight*sp.DrawScale); + sp.Fatness = carc.Fatness; + + //Clear out initial inventory (since that should all be in the carcass) + for (i=0;i 0.2) + carc.spawn(class'FleshFragment',,,carc.Location); + } + + carc.Destroy(); + + return True; +} diff --git a/DXRando.cs b/DXRando.cs index 93dee5a7c..1db2ff642 100644 --- a/DXRando.cs +++ b/DXRando.cs @@ -85,7 +85,7 @@ public DeusEx(UserRecord player, Func responseHandler, new Effect ("Spawn hostile Doberman", "spawnenemy_doberman") { Category = "Spawn Enemies/Allies",Price = 5,Description = "Spawn a doberman to tear you to shreds" }, //New for fourth Crowd Control batch new Effect ("Spawn hostile Greasel", "spawnenemy_greasel") { Category = "Spawn Enemies/Allies",Price = 10,Description = "Spawn a hostile greasel to poison you to death" }, //New for fourth Crowd Control batch new Effect ("Spawn a nasty rat", "nasty_rat") { Category = "Spawn Enemies/Allies",Price = 15,Description = "Spawn a huge rat that throws LAMs" }, //New for fifth Crowd Control batch - new Effect ("Raise the Dead", "raise_dead") { Category = "Spawn Enemies/Allies",Price = 10,Description = "Resurrect up to 5 nearby enemies. They're out for blood now!" }, //New for fifth Crowd Control batch + new Effect ("Raise the Dead", "raise_dead") { Category = "Spawn Enemies/Allies",Price = 10,Description = "Raise up to 5 nearby enemies from the dead. They're out for blood now!" }, //New for fifth Crowd Control batch //Items //new Effect("Give Items","giveitems",ItemKind.Folder), //New folder for third batch diff --git a/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc b/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc index f05baa157..c7c4f130d 100644 --- a/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc +++ b/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc @@ -1965,7 +1965,7 @@ function bool RaiseDead(string viewer) if (carc==None){ break; } - if (class'DXRHalloween'.static.ResurrectCorpse(ccLink.ccModule, carc, viewer $ "'s Zombie")){ + if (class'DXRZombies'.static.ReanimateCorpse(ccLink.ccModule, carc, viewer $ "'s Zombie")){ num++; } } @@ -1974,7 +1974,7 @@ function bool RaiseDead(string viewer) return False; } - PlayerMessage(viewer@"resurrected "$num$" from the dead!"); + PlayerMessage(viewer@"rose "$num$" from the dead!"); return True; } From c332297f223656273db03785af4964a41ae267d9 Mon Sep 17 00:00:00 2001 From: Jeffrey Thomas Piercy Date: Sun, 10 Nov 2024 20:00:06 -0800 Subject: [PATCH 27/87] Make Halloween modes less prominent in game mode selection screen (#1027) * make halloween modes less prominent in game mode screen * make halloween mode somewhat more prominent again --------- Co-authored-by: Die4Ever <30947252+Die4Ever@users.noreply.github.com> --- DXRModules/DeusEx/Classes/DXRFlags.uc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXRFlags.uc b/DXRModules/DeusEx/Classes/DXRFlags.uc index b95241470..d6e60c8d9 100644 --- a/DXRModules/DeusEx/Classes/DXRFlags.uc +++ b/DXRModules/DeusEx/Classes/DXRFlags.uc @@ -732,14 +732,16 @@ function int GameModeIdForSlot(int slot) if(slot--==0) return HalloweenMode; if(slot--==0) return EntranceRando; if(slot--==0) return HalloweenEntranceRando; - if(slot--==0) return WaltonWareHalloween; - if(slot--==0) return WaltonWareHalloweenEntranceRando; + if(slot--==0) return WaltonWare; + if(slot--==0) return WaltonWareHalloween; if(slot--==0) return WaltonWareEntranceRando; + if(slot--==0) return WaltonWareHalloweenEntranceRando; if(!VersionIsStable()) { if(slot--==0) return WaltonWareHardcore; if(slot--==0) return WaltonWarex3; } + if(slot--==0) return ZeroRando; if(slot--==0) return ZeroRandoPlus; if(slot--==0) return RandoLite; From 4b20c7a5931e7628be65d8c13d52f93d093aefec Mon Sep 17 00:00:00 2001 From: Die4Ever Date: Sun, 10 Nov 2024 22:06:20 -0600 Subject: [PATCH 28/87] zombie time based on difficulty --- DXRModules/DeusEx/Classes/DXRFlags.uc | 9 ++++++++- DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXRFlags.uc b/DXRModules/DeusEx/Classes/DXRFlags.uc index d6e60c8d9..013c9d9ef 100644 --- a/DXRModules/DeusEx/Classes/DXRFlags.uc +++ b/DXRModules/DeusEx/Classes/DXRFlags.uc @@ -708,10 +708,17 @@ function FlagsSettings SetDifficulty(int new_difficulty) clothes_looting = 1; settings.speedlevel = 0;// in DXRLoadouts we override level 0 speed to mean lvl 1 run silent moresettings.reanimation = 20; + switch(difficulty) { + case 0: moresettings.reanimation = 25; break; + case 1: moresettings.reanimation = 25; break; + case 2: moresettings.reanimation = 20; break;// Hard + case 3: moresettings.reanimation = 17; break; + case 4: moresettings.reanimation = 15; break; + } } else { clothes_looting = 0; } - + if(class'MenuChoice_NewGamePlus'.default.value == 0 && !IsWaltonWare()) moresettings.newgameplus_curve_scalar = -1; diff --git a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc index 98fb527ab..9ee9f948c 100644 --- a/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc +++ b/DXRModules/DeusEx/Classes/DXRFlagsNGPMaxRando.uc @@ -99,7 +99,7 @@ simulated function RandomizeSettings(bool forceMenuOptions) if (chance_single(50)) { settings.enemyrespawn = rng(120) + 120; } else { - moresettings.reanimation = rng(20) + 30; + moresettings.reanimation = rng(15) + 15; } } else { settings.enemyrespawn = 0; From 63c5df2fd6f29fbcf828e216e91f6954fe56d8f8 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 11 Nov 2024 21:02:18 -0500 Subject: [PATCH 29/87] New Revision-Only goal locations and other minor Revision adjustments. M02: - Switch for chainlink gate in Castle Clinton near vanilla ambrosia M08: - New goal locations for the various people: - Apartment building overlooking basketball court (mutually exclusive with BBall Court) - Garage Roof - Desk at Smuggler's Front Entrance M09: - New Weld Point locations: - Lower engine room hallway - Lower engine area fan room - Security Room - New Bilge Pump Computer locations: - Engine Server Room - Upper Break Room - Lower Engine Room M12: - Watchtower now has a key - Better key rules for: Haz Lab Storage (Tim's Closet), Underground Tunnels, Comm 01 Gate, Watch Tower (newly added) - New Keypad goal locations: - Top of watch tower - Inside Ammunition Storage building - Inside Barracks - New Exit Jock locations: - Top of Watch Tower - Roof of Ammunition Storage building --- DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc | 6 + .../DeusEx/Classes/DXRFixupVandenberg.uc | 25 +++ DXRMissions/DeusEx/Classes/DXRMissionsM08.uc | 7 +- DXRMissions/DeusEx/Classes/DXRMissionsM09.uc | 15 +- .../DeusEx/Classes/DXRMissionsVandenberg.uc | 11 ++ DXRModules/DeusEx/Classes/DXRKeys.uc | 169 ++++++++++++++++++ 6 files changed, 230 insertions(+), 3 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc index bff7c77fd..4e45933c5 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc @@ -29,6 +29,7 @@ function PreFirstEntryMapFixes() local Teleporter tel; local DynamicTeleporter dtel; local DynamicLight light; + local DeusExDecoration s; #ifdef injections local #var(prefix)Newspaper np; @@ -79,6 +80,11 @@ function PreFirstEntryMapFixes() fg=Spawn(class'#var(prefix)FishGenerator',,, vectm(-1274,-3892,177));//Near Boat dock fg.ActiveArea=2000; + } else { + //Revision maps + s = AddSwitch( vect(480,-809,-350), rot(0, -16384, 0), 'AmbrosiaGate'); //Switch to open the gate near the vanilla ambrosia location from inside + d = DeusExMover(findNearestToActor(class'DeusExMover',s)); + d.Tag='AmbrosiaGate'; } break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc index 13c8f26e5..a494a9154 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc @@ -126,6 +126,8 @@ function PreFirstEntryMapFixes() FixCmdElevator(); UnleashingBotsOpenCommsDoor(); + } else { + VandenbergCmdRevisionFixWatchtowerDoor(); } foreach AllActors(class'#var(prefix)Robot',bot,'enemy_bot') { @@ -496,6 +498,29 @@ function VandenbergCmdFixTimsDoor() } } +function VandenbergCmdRevisionFixWatchtowerDoor() +{ + local #var(DeusExPrefix)Mover door; + local #var(prefix)NanoKey key; + + if(!dxr.flags.IsZeroRando()) { + //Add a key to the watch tower + foreach AllActors(class'#var(DeusExPrefix)Mover',door){ + if (door.Name=='DeusExMover42'){ + door.KeyIDNeeded='watchtowerkey'; + door.Tag = 'WatchTowerDoor'; + } + } + + key = Spawn(class'#var(prefix)NanoKey',,,vectm(-2100,5325,-2150)); //Barracks bed + key.KeyID='watchtowerkey'; + key.Description="Watch Tower Key"; + key.SkinColor=SC_Level3; + key.MultiSkins[0] = Texture'NanoKeyTex3'; + } + +} + function UnleashingBotsOpenCommsDoor() { local DXRSimpleTrigger t; diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc index 6abf0f83d..39833bb77 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM08.uc @@ -63,8 +63,11 @@ function int InitGoalsRev(int mission, string map) AddGoalLocation("08_NYC_FreeClinic", "Clinic", NORMAL_GOAL | VANILLA_GOAL, vect(1293.991211,-1226.047852,-239.399506), rot(0,31640,0)); AddGoalLocation("08_NYC_Underground", "Sewers", NORMAL_GOAL, vect(591.048462, -152.517639, -560.397888), rot(0,32768,0)); AddGoalLocation("08_NYC_Hotel", "Hotel", NORMAL_GOAL | SITTING_GOAL, vect(316,-3439,111), rot(0,0,0)); - AddGoalLocation("08_NYC_Street", "Basketball Court", NORMAL_GOAL | START_LOCATION, vect(2683.1,-1977.77,-448), rot(0,-16390,0)); - + loc = AddGoalLocation("08_NYC_Street", "Basketball Court", NORMAL_GOAL | START_LOCATION, vect(2683.1,-1977.77,-448), rot(0,-16390,0)); + loc2 = AddGoalLocation("08_NYC_Street", "Apartment Over Basketball Court", NORMAL_GOAL , vect(2690,-1750,50), rot(0,-16390,0)); //Revision Only + AddGoalLocation("08_NYC_Street", "Garage Roof", NORMAL_GOAL , vect(750,-2875,-250), rot(0,32768,0)); //Revision Only + AddGoalLocation("08_NYC_Street", "Smuggler's Front Entrance", NORMAL_GOAL , vect(4780,-3475,-380), rot(0,16384,0)); //Revision Only + AddMutualExclusion(loc, loc2); //Can't use both the basketball court and apartment over the court AddGoal("08_NYC_Street", "Jock", GOAL_TYPE2, 'JockHelicopter0', PHYS_None); AddGoalLocation("08_NYC_Street", "Hotel Roof", GOAL_TYPE2 | VANILLA_GOAL, vect(75,965,755), rot(0, 22824, 0)); diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc b/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc index 522db245b..f60c63a3a 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsM09.uc @@ -166,6 +166,9 @@ function int InitGoalsRev(int mission, string map) loc=AddGoalLocation("09_NYC_GRAVEYARD", "Behind Bookshelf", NORMAL_GOAL | VANILLA_GOAL, vect(1104.000000,736.000000,48.000000), rot(0,0,-32768)); AddActorLocation(loc, 7, vect(1127.001465,763.400208,69.272461), rot(0,-32760,0)); + + loc=AddGoalLocation("09_NYC_GRAVEYARD", "Chapel", NORMAL_GOAL, vect(-565,995,70), rot(0,16384,-32768)); + AddActorLocation(loc, 7, vect(-607,930,100), rot(0,0,0)); return 91; case "09_NYC_SHIPBELOW": @@ -218,6 +221,12 @@ function int InitGoalsRev(int mission, string map) loc = AddGoalLocation("09_NYC_SHIPBELOW", "SW Engine Room", NORMAL_GOAL | VANILLA_GOAL, vect(816.000000,-1024.000000,-416.000000), rot(0,16384,0)); + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Lower Hallways", NORMAL_GOAL, vect(-2480,384,-571), rot(0,49152,0)); //Revision Only + + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Lower Fan Room", NORMAL_GOAL, vect(-2290,-217,-430), rot(0,16384,0)); //Revision Only + + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Security Room", NORMAL_GOAL, vect(-1560,-1073,-400), rot(0,49152,0)); //Revision Only + goal = AddGoal("09_NYC_SHIPBELOW", "Bilge Pump Computer", GOAL_TYPE1, 'ComputerPersonal0', PHYS_Falling); AddGoalActor(goal, 1, 'DataLinkTrigger4', PHYS_None); @@ -226,6 +235,10 @@ function int InitGoalsRev(int mission, string map) loc = AddGoalLocation("09_NYC_SHIPBELOW", "Engine Room Tower", GOAL_TYPE1, vect(-131.815552,-492.488342,9), rot(0, -15815, 0)); loc = AddGoalLocation("09_NYC_SHIPBELOW", "Helipad Air Control", GOAL_TYPE1, vect(-4799, 1210, -200), rot(0, 32768, 0)); AddActorLocation(loc, 1, vect(-4799, 1210, -230), rot(0,0,0));// MAHOGANY desk + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Engine Server Room", GOAL_TYPE1, vect(-685,1065,-320), rot(0, 32768, 0)); //Revision Only + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Upper Break Room", GOAL_TYPE1, vect(630,1390,-75), rot(0, 0, 0)); //Revision Only + loc = AddGoalLocation("09_NYC_SHIPBELOW", "Lower Engine Room", GOAL_TYPE1, vect(-1150,690,-610), rot(0, 16384, 0)); //Revision Only + AddActorLocation(loc, 1, vect(-1150,690,-650), rot(0,-16384,0));// MAHOGANY desk return 92; @@ -341,7 +354,7 @@ function AfterMoveGoalToLocation(Goal g, GoalLocation Loc) se.GoToState('DisplayMessage'); } - if (g.name=="Bilge Pump Computer" && Loc.name=="Helipad Air Control") { + if (g.name=="Bilge Pump Computer" && (Loc.name=="Helipad Air Control" || Loc.name=="Lower Engine Room")) { // spawn the MAHOGANY desk (CreateGoal only gets called for different maps) g.actors[1].a = Spawnm(class'MahoganyDesk',,,Loc.positions[1].pos, Loc.positions[1].rot); } diff --git a/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc b/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc index a1ea368ed..1e094cb91 100644 --- a/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc +++ b/DXRMissions/DeusEx/Classes/DXRMissionsVandenberg.uc @@ -161,6 +161,11 @@ function int InitGoalsRev(int mission, string map) AddGoalLocation("12_VANDENBERG_CMD", "Outdoor Power Generator", NORMAL_GOAL | VANILLA_GOAL, vect(-2371.028564,-96.179214,-2070.390625), rot(0,-32768,0)); AddGoalLocation("12_VANDENBERG_CMD", "Command Center Power Generator", NORMAL_GOAL | VANILLA_GOAL, vect(1628.947754,1319.745483,-2014.406982), rot(0,-65536,0)); + AddGoalLocation("12_VANDENBERG_CMD", "Watch Tower", NORMAL_GOAL, vect(-444,7588,-1516), rot(0, 32768, 0)); //Revision Only + AddGoalLocation("12_VANDENBERG_CMD", "Ammunition Storage", NORMAL_GOAL, vect(2130,6446,-2122), rot(0, -16384, 0)); //Revision Only + AddGoalLocation("12_VANDENBERG_CMD", "Barracks", NORMAL_GOAL, vect(-2460,5221,-2120), rot(0, 0, 0)); //Revision Only + + // Will need handling if backtracking is implemented for Revision, since this uses a JockHelicopter goal = AddGoal("12_VANDENBERG_CMD", "Jock and Tong", GOAL_TYPE1, 'JockHelicopter2', PHYS_None); AddGoalActor(goal, 1, 'TracerTong0', PHYS_None); @@ -184,6 +189,12 @@ function int InitGoalsRev(int mission, string map) loc = AddGoalLocation("12_VANDENBERG_CMD", "Sniper Tower", GOAL_TYPE1, vect(-946.215820, 80.315643, -1359.704102), rot(0,32768,0)); AddActorLocation(loc, 1, vect(-1033.543579, 265.367859, -1569.458740), rot(0,-30000,0)); + loc = AddGoalLocation("12_VANDENBERG_CMD", "Watch Tower", GOAL_TYPE1, vect(-415,6950,-1475), rot(0,0,0)); + AddActorLocation(loc, 1, vect(-570,7430,-1525), rot(0,0,0)); + + loc = AddGoalLocation("12_VANDENBERG_CMD", "Ammunition Storage Roof", GOAL_TYPE1, vect(1100,6175,-1475), rot(0,-16384,0)); + AddActorLocation(loc, 1, vect(1575,6000,-1550), rot(0,0,0)); + if (dxr.flags.settings.starting_map > 120) { skip_rando_start = True; diff --git a/DXRModules/DeusEx/Classes/DXRKeys.uc b/DXRModules/DeusEx/Classes/DXRKeys.uc index c3218a6da..6288f201d 100644 --- a/DXRModules/DeusEx/Classes/DXRKeys.uc +++ b/DXRModules/DeusEx/Classes/DXRKeys.uc @@ -725,6 +725,27 @@ function revision_keys_rules() i++; break; + case "09_NYC_GRAVEYARD": + //Make sure the Chapel Key is above ground somewhere, but not in the safe + keys_rules[i].item_name = 'ChappelDoor'; + keys_rules[i].min_pos = vect(-1391,-2032,-292); + keys_rules[i].max_pos = vect(-1357,-1995,-255); + keys_rules[i].allow = false; + i++; + + keys_rules[i].item_name = 'ChappelDoor'; + keys_rules[i].min_pos = vect(-99999,-99999,-513); + keys_rules[i].max_pos = vect(99999,99999,99999); + keys_rules[i].allow = true; + i++; + + keys_rules[i].item_name = 'ChappelDoor'; + keys_rules[i].min_pos = vect(-99999,-99999,-99999); + keys_rules[i].max_pos = vect(99999,99999,-513); + keys_rules[i].allow = false; + i++; + break; + case "10_Paris_Catacombs": keys_rules[i].item_name = 'cata_officedoor'; keys_rules[i].min_pos = vect(-99999, -99999, -99999); @@ -776,6 +797,154 @@ function revision_keys_rules() keys_rules[i].max_pos = vect(99999, 99999, 99999); keys_rules[i].allow = false; i++; + break; + + case "12_VANDENBERG_CMD": + //This key is added in DXRFixupVandenberg + //Stairwell Cupboard + keys_rules[i].item_name = 'watchtowerkey'; + keys_rules[i].min_pos = vect(2118, 1431, -99999); + keys_rules[i].max_pos = vect(2209, 1483, 99999); + keys_rules[i].allow = false; + i++; + + //Hazard Lab Cupboard + keys_rules[i].item_name = 'watchtowerkey'; + keys_rules[i].min_pos = vect(-2538, 2588, -99999); + keys_rules[i].max_pos = vect(-2495, 2685, 99999); + keys_rules[i].allow = false; + i++; + + //Storage/Medical Rooms + keys_rules[i].item_name = 'watchtowerkey'; + keys_rules[i].min_pos = vect(-2030, 861, -99999); + keys_rules[i].max_pos = vect(-1053, 1154, 99999); + keys_rules[i].allow = false; + i++; + + //Main building + keys_rules[i].item_name = 'watchtowerkey'; + keys_rules[i].min_pos = vect(-2783, 299, -99999); + keys_rules[i].max_pos = vect(2756, 3695, 99999); + keys_rules[i].allow = true; + i++; + + keys_rules[i].item_name = 'watchtowerkey'; + keys_rules[i].min_pos = vect(-99999, -99999, -99999); + keys_rules[i].max_pos = vect(99999, 99999, 99999); + keys_rules[i].allow = false; + i++; + + //Hazard Lab Storage Key (Tim's Closet) + //Stairwell Cupboard + keys_rules[i].item_name = 'monte_key'; + keys_rules[i].min_pos = vect(2118, 1431, -99999); + keys_rules[i].max_pos = vect(2209, 1483, 99999); + keys_rules[i].allow = false; + i++; + + //Hazard Lab Cupboard + keys_rules[i].item_name = 'monte_key'; + keys_rules[i].min_pos = vect(-2538, 2588, -99999); + keys_rules[i].max_pos = vect(-2495, 2685, 99999); + keys_rules[i].allow = false; + i++; + + //Storage/Medical Rooms + keys_rules[i].item_name = 'monte_key'; + keys_rules[i].min_pos = vect(-2030, 861, -99999); + keys_rules[i].max_pos = vect(-1053, 1154, 99999); + keys_rules[i].allow = false; + i++; + + //Main building + keys_rules[i].item_name = 'monte_key'; + keys_rules[i].min_pos = vect(-2783, 299, -99999); + keys_rules[i].max_pos = vect(2756, 3695, 99999); + keys_rules[i].allow = true; + i++; + + keys_rules[i].item_name = 'monte_key'; + keys_rules[i].min_pos = vect(-99999, -99999, -99999); + keys_rules[i].max_pos = vect(99999, 99999, 99999); + keys_rules[i].allow = false; + i++; + + + + //Underground Tunnel Key + //Stairwell Cupboard + keys_rules[i].item_name = 'undergroundtunnels'; + keys_rules[i].min_pos = vect(2118, 1431, -99999); + keys_rules[i].max_pos = vect(2209, 1483, 99999); + keys_rules[i].allow = false; + i++; + + //Hazard Lab Cupboard + keys_rules[i].item_name = 'undergroundtunnels'; + keys_rules[i].min_pos = vect(-2538, 2588, -99999); + keys_rules[i].max_pos = vect(-2495, 2685, 99999); + keys_rules[i].allow = false; + i++; + + //Storage/Medical Rooms + keys_rules[i].item_name = 'undergroundtunnels'; + keys_rules[i].min_pos = vect(-2030, 861, -99999); + keys_rules[i].max_pos = vect(-1053, 1154, 99999); + keys_rules[i].allow = false; + i++; + + //Main building + keys_rules[i].item_name = 'undergroundtunnels'; + keys_rules[i].min_pos = vect(-2783, 299, -99999); + keys_rules[i].max_pos = vect(2756, 3695, 99999); + keys_rules[i].allow = true; + i++; + + keys_rules[i].item_name = 'undergroundtunnels'; + keys_rules[i].min_pos = vect(-99999, -99999, -99999); + keys_rules[i].max_pos = vect(99999, 99999, 99999); + keys_rules[i].allow = false; + i++; + + + //Comm 01 Gate Key + //Stairwell Cupboard + keys_rules[i].item_name = 'gate'; + keys_rules[i].min_pos = vect(2118, 1431, -99999); + keys_rules[i].max_pos = vect(2209, 1483, 99999); + keys_rules[i].allow = false; + i++; + + //Hazard Lab Cupboard + keys_rules[i].item_name = 'gate'; + keys_rules[i].min_pos = vect(-2538, 2588, -99999); + keys_rules[i].max_pos = vect(-2495, 2685, 99999); + keys_rules[i].allow = false; + i++; + + //Storage/Medical Rooms + keys_rules[i].item_name = 'gate'; + keys_rules[i].min_pos = vect(-2030, 861, -99999); + keys_rules[i].max_pos = vect(-1053, 1154, 99999); + keys_rules[i].allow = false; + i++; + + //Main building + keys_rules[i].item_name = 'gate'; + keys_rules[i].min_pos = vect(-2783, 299, -99999); + keys_rules[i].max_pos = vect(2756, 3695, 99999); + keys_rules[i].allow = true; + i++; + + keys_rules[i].item_name = 'gate'; + keys_rules[i].min_pos = vect(-99999, -99999, -99999); + keys_rules[i].max_pos = vect(99999, 99999, 99999); + keys_rules[i].allow = false; + i++; + + + break; case "12_Vandenberg_Tunnels": From 93601fb592c60cb8fb7d2c9749acce4ecc92eebd Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 11 Nov 2024 21:37:35 -0500 Subject: [PATCH 30/87] DXRReplaceActors now also replaces actors cached in DXRMissions --- DXRModules/DeusEx/Classes/DXRMissions.uc | 17 +++++++++++++++++ DXRModules/DeusEx/Classes/DXRReplaceActors.uc | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/DXRModules/DeusEx/Classes/DXRMissions.uc b/DXRModules/DeusEx/Classes/DXRMissions.uc index 52094fadc..073a66b73 100644 --- a/DXRModules/DeusEx/Classes/DXRMissions.uc +++ b/DXRModules/DeusEx/Classes/DXRMissions.uc @@ -136,6 +136,23 @@ function int AddGoal(string mapName, string goalName, int bitMask, name actorNam return num_goals++; } +function ReplaceGoalActor(Actor a, Actor n) +{ + local int i,j; + if (num_goals==0) return; + + for (i=0;i Date: Tue, 12 Nov 2024 08:23:30 -0500 Subject: [PATCH 31/87] Increase actor_watch array size. DXRReplaceActors updates references in actor_watch array after replacing actors. --- DXRModules/DeusEx/Classes/DXREventsBase.uc | 14 +++++++++++++- DXRModules/DeusEx/Classes/DXRReplaceActors.uc | 14 ++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXREventsBase.uc b/DXRModules/DeusEx/Classes/DXREventsBase.uc index 6bfb627e1..73b51ac6f 100644 --- a/DXRModules/DeusEx/Classes/DXREventsBase.uc +++ b/DXRModules/DeusEx/Classes/DXREventsBase.uc @@ -27,7 +27,7 @@ struct ActorWatchItem { var Actor a; var String BingoEvent; }; -var ActorWatchItem actor_watch[100]; +var ActorWatchItem actor_watch[150]; var int num_watched_actors; simulated function string tweakBingoDescription(string event, string desc); @@ -66,6 +66,18 @@ function CheckWatchedActors() { } } +function ReplaceWatchedActor(Actor a, Actor n) +{ + local int i; + + for (i=0;i Date: Tue, 12 Nov 2024 09:13:26 -0500 Subject: [PATCH 32/87] Fix PlaceholderItems that were OutOfWorld in Revision --- DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc | 10 ++++- DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 10 ++++- DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 10 ++++- DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc | 40 +++++++++++--------- DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc | 15 ++++++-- DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc | 31 ++++++++++----- 6 files changed, 80 insertions(+), 36 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc index d7ca8733d..73e9f88f2 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc @@ -171,8 +171,14 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf - Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table - Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + if (VanillaMaps){ + Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + } else { + //Revision Kitchen/Breakroom is in a different location + Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc index 62be54a9e..181e1dafc 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc @@ -430,8 +430,14 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf - Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table - Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + if (VanillaMaps){ + Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + } else { + //Revision Kitchen/Breakroom is in a different location + Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc index 74dd640b9..c6424548a 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc @@ -307,8 +307,14 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf - Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table - Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + if (VanillaMaps){ + Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + } else { + //Revision Kitchen/Breakroom is in a different location + Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc index 585456704..60b19d294 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc @@ -179,23 +179,6 @@ function PreFirstEntryMapFixes() break; } - //Spawn some placeholders for new item locations - Spawn(class'PlaceholderItem',,, vectm(363.284149, 344.847, 50.32)); //Womens bathroom counter - Spawn(class'PlaceholderItem',,, vectm(211.227, 348.46, 50.32)); //Mens bathroom counter - Spawn(class'PlaceholderItem',,, vectm(982.255,1096.76,-7)); //Jaime's desk - Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk - Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf - Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table - Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter - Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk - Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet - Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk - Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door - Spawn(class'PlaceholderContainer',,, vectm(-383.6,1376,273)); //JC's Office - class'PlaceholderEnemy'.static.Create(self,vectm(144,176,40),,'Shitting'); class'PlaceholderEnemy'.static.Create(self,vectm(229,1828,288),,'Sitting'); class'PlaceholderEnemy'.static.Create(self,vectm(-1451,654,608),,'Sitting'); @@ -208,6 +191,29 @@ function PreFirstEntryMapFixes() } + //Spawn some placeholders for new item locations + Spawn(class'PlaceholderItem',,, vectm(363.284149, 344.847, 50.32)); //Womens bathroom counter + Spawn(class'PlaceholderItem',,, vectm(211.227, 348.46, 50.32)); //Mens bathroom counter + Spawn(class'PlaceholderItem',,, vectm(982.255,1096.76,-7)); //Jaime's desk + Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk + Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf + if (VanillaMaps){ + Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + } else { + //Revision Kitchen/Breakroom is in a different location + Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table + Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + } + Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk + Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet + Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk + Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door + Spawn(class'PlaceholderContainer',,, vectm(-383.6,1376,273)); //JC's Office + break; case "05_NYC_UNATCOISLAND": diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc index e62ab9328..417b185e0 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc @@ -287,11 +287,18 @@ function PreFirstEntryMapFixes() break; case "09_NYC_GRAVEYARD": - Spawn(class'PlaceholderItem',,, vectm(-509.5,-742.88,-213)); //Tunnels - Spawn(class'PlaceholderItem',,, vectm(-1524.8,-943.9,-285.69)); //Empty Sarcophogus - Spawn(class'PlaceholderItem',,, vectm(-1433.77,1161.87,-149)); //Escape tunnel + if (VanillaMaps){ + Spawn(class'PlaceholderItem',,, vectm(-509.5,-742.88,-213)); //Tunnels + Spawn(class'PlaceholderItem',,, vectm(-1524.8,-943.9,-285.69)); //Empty Sarcophogus + Spawn(class'PlaceholderItem',,, vectm(-1433.77,1161.87,-149)); //Escape tunnel + Spawn(class'PlaceholderItem',,, vectm(-1499.35,-454.93,-293)); //Tomb stairs + } else { + Spawn(class'PlaceholderItem',,, vectm(-2310,-1165,-155)); //Tunnels + Spawn(class'PlaceholderItem',,, vectm(-365,-2125,-290)); //Empty Sarcophogus + Spawn(class'PlaceholderItem',,, vectm(-630,-1140,-215)); //Escape tunnel + Spawn(class'PlaceholderItem',,, vectm(-835,-2095,-280)); //Tomb stairs + } Spawn(class'PlaceholderItem',,, vectm(-828.5,-266.1,27)); //Front of tomb - Spawn(class'PlaceholderItem',,, vectm(-1499.35,-454.93,-293)); //Tomb stairs Spawn(class'PlaceholderItem',,, vectm(1108.85,808.15,71.309769)); //Secret room shelf 1 Spawn(class'PlaceholderItem',,, vectm(1110,829.5,35.310154)); //Secret room shelf 2 diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc index a21393f0e..ee8ddda99 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc @@ -184,13 +184,19 @@ function PreFirstEntryMapFixes() SetAllLampsState(true, true, false, vect(-1821.85, -351.37, -207.11), 200.0); // the two Lamp3s on the desks near the back exit, but not the one where the accountant is Spawn(class'PlaceholderItem',,, vectm(-607.8,-1003.2,59)); //Table near Nicolette Vanilla - Spawn(class'PlaceholderItem',,, vectm(-239.927216,499.098633,43)); //Ledge near club owner - Spawn(class'PlaceholderItem',,, vectm(-1164.5,1207.85,-133)); //Table near biocell guy + if (VanillaMaps) { + Spawn(class'PlaceholderItem',,, vectm(-239.927216,499.098633,43)); //Ledge near club owner + Spawn(class'PlaceholderItem',,, vectm(-1164.5,1207.85,-133)); //Table near biocell guy + Spawn(class'PlaceholderItem',,, vectm(-2093.7,-293,-161)); //Club back room + } else { + Spawn(class'PlaceholderItem',,, vectm(-500,570,0)); //Ledge near club owner + Spawn(class'PlaceholderItem',,, vectm(-895,1475,-135)); //Table near biocell guy + Spawn(class'PlaceholderItem',,, vectm(-1745,-570,-160)); //Club back room + } Spawn(class'PlaceholderItem',,, vectm(-1046,-1393,-145)); //Bathroom counter 1 Spawn(class'PlaceholderItem',,, vectm(-1545.5,-1016.7,-145)); //Bathroom counter 2 Spawn(class'PlaceholderItem',,, vectm(-1464,-1649.6,-197)); //Bathroom stall 1 Spawn(class'PlaceholderItem',,, vectm(-1096.7,-847,-197)); //Bathroom stall 2 - Spawn(class'PlaceholderItem',,, vectm(-2093.7,-293,-161)); //Club back room break; case "11_PARIS_UNDERGROUND": @@ -199,12 +205,19 @@ function PreFirstEntryMapFixes() hoverHint = class'DXRTeleporterHoverHint'.static.Create(self, class'DXRMapInfo'.static.GetTeleporterName(mapvariants.VaryMap("11_PARIS_EVERETT"),"Entrance"), toby.Location, toby.CollisionRadius+5, toby.CollisionHeight+5); hoverHint.SetBaseActor(toby); } - - Spawn(class'PlaceholderItem',,, vectm(2268.5,-563.7,-101)); //Near ATM - Spawn(class'PlaceholderItem',,, vectm(408.3,768.7,-37)); //Near Mechanic - Spawn(class'PlaceholderItem',,, vectm(-729,809.5,-1061)); //Bench at subway - Spawn(class'PlaceholderItem',,, vectm(-733,-251,-1061)); //Bench at subway - Spawn(class'PlaceholderItem',,, vectm(300.7,491,-1061)); //Opposite side of tracks + if (VanillaMaps){ + Spawn(class'PlaceholderItem',,, vectm(2268.5,-563.7,-101)); //Near ATM + Spawn(class'PlaceholderItem',,, vectm(408.3,768.7,-37)); //Near Mechanic + Spawn(class'PlaceholderItem',,, vectm(-729,809.5,-1061)); //Bench at subway + Spawn(class'PlaceholderItem',,, vectm(-733,-251,-1061)); //Bench at subway + Spawn(class'PlaceholderItem',,, vectm(300.7,491,-1061)); //Opposite side of tracks + } else { + Spawn(class'PlaceholderItem',,, vectm(-1135,3000,-125)); //Near ATM + Spawn(class'PlaceholderItem',,, vectm(-855,2260,-150)); //Benches near ATM + Spawn(class'PlaceholderItem',,, vectm(1155,1150,-320)); //Bench at subway + Spawn(class'PlaceholderItem',,, vectm(1150,430,-320)); //Bench at subway + Spawn(class'PlaceholderItem',,, vectm(1145,1370,-365)); //Plants near subway + } break; case "11_PARIS_CATHEDRAL": foreach AllActors(class'GuntherHermann', g) { From a41e97a6a030d80128c791242a2711c34bf76d6a Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Wed, 13 Nov 2024 00:45:37 -0500 Subject: [PATCH 33/87] Datacube shuffling works in Revision again, and port Datacube Rules. --- DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc | 2 + DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 2 + DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc | 2 + DXRModules/DeusEx/Classes/DXRDatacubes.uc | 753 ++++++++++++++++++++- 4 files changed, 745 insertions(+), 14 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc index 4e45933c5..8abc9687e 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc @@ -218,6 +218,8 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(-853,-3148,75)); //Crack next to Paul's bed SetAllLampsState(false, true, true); // the lamp in Paul's apartment + } else { + //TODO: Add equivalent Placeholders for Revision } break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc index c6424548a..6c8032010 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc @@ -130,6 +130,8 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(-129,-3038,127)); //Bathroom counter Spawn(class'PlaceholderItem',,, vectm(15,-2972,123)); //Kitchen counter Spawn(class'PlaceholderItem',,, vectm(-853,-3148,75)); //Crack next to Paul's bed + } else { + //TODO: Add equivalent Placeholders for Revision } break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc index fddb7f732..460885f43 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc @@ -266,6 +266,8 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(-129,-3038,127)); //Bathroom counter Spawn(class'PlaceholderItem',,, vectm(15,-2972,123)); //Kitchen counter Spawn(class'PlaceholderItem',,, vectm(-853,-3148,75)); //Crack next to Paul's bed + } else { + //TODO: Add equivalent Placeholders for Revision } break; case "08_NYC_BAR": diff --git a/DXRModules/DeusEx/Classes/DXRDatacubes.uc b/DXRModules/DeusEx/Classes/DXRDatacubes.uc index 26fcef4aa..661cc3153 100644 --- a/DXRModules/DeusEx/Classes/DXRDatacubes.uc +++ b/DXRModules/DeusEx/Classes/DXRDatacubes.uc @@ -587,7 +587,718 @@ function revision_datacubes_rules() { local int i; - // TODO: datacubes_rules for Revision + switch(dxr.localURL) { + case "01_NYC_UNATCOISLAND": + // satcom password + datacubes_rules[i].item_name = '01_Datacube06'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + // armory 0451 code + datacubes_rules[i].item_name = '01_Datacube03'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + // nsf001 smashthestate + datacubes_rules[i].item_name = '01_Datacube04'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "01_NYC_UNATCOHQ": + // Manderley's password + datacubes_rules[i].item_name = '01_Datacube01'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "02_NYC_BATTERYPARK": + // Castle Clinton underground access code - needs to be above ground + datacubes_rules[i].item_name = '02_Datacube15'; + datacubes_rules[i].min_pos = vect(-99999, -99999, 320); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + break; + + case "02_NYC_UNDERGROUND": + + // East Hatch Code - This actually doesn't exist in Revision, but we'll leave it here too + datacubes_rules[i].item_name = '02_Datacube03'; + datacubes_rules[i].min_pos = vect(1960, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + //Other door code (Both the east hatch and the door inside it) + datacubes_rules[i].item_name = '02_Datacube06'; + datacubes_rules[i].min_pos = vect(1960, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + //Security Code that lets you rotate the bridge + datacubes_rules[i].item_name = '02_Datacube11'; + datacubes_rules[i].min_pos = vect(-1350, -99999, -670); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + //Computer login + datacubes_rules[i].item_name = '02_Datacube02'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(-1350, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + break; + + case "02_NYC_HOTEL": + + // The code to Paul's bookshelf stash (Anywhere in Paul's Apartment except the stash) + datacubes_rules[i].item_name = '02_Datacube07'; + datacubes_rules[i].min_pos = vect(-310, -4000, -99999); + datacubes_rules[i].max_pos = vect(580, -3284, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '02_Datacube07'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + //Paul's computer password (Anywhere in Paul's Apartment) + datacubes_rules[i].item_name = '02_Datacube05'; + datacubes_rules[i].min_pos = vect(-310, -4000, -99999); + datacubes_rules[i].max_pos = vect(580, -2870, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '02_Datacube05'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + case "02_NYC_WAREHOUSE": + // ramp code + datacubes_rules[i].item_name = '02_Datacube09'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + // NSF righteous + datacubes_rules[i].item_name = '02_Datacube14'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + // TFRASE ValleyForge + datacubes_rules[i].item_name = '02_Datacube18'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "03_NYC_BatteryPark": + // Curly's Journal + datacubes_rules[i].item_name = '03_Book06'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "03_NYC_BrooklynBridgeStation": + datacubes_rules[i].item_name = '03_Datacube14'; + datacubes_rules[i].min_pos = vect(-999999, -999999, -999999); + datacubes_rules[i].max_pos = vect(999999, 999999, 999999); + datacubes_rules[i].allow = true; + i++; + break; + + case "03_NYC_Airfield": + // datacube for hanger keypad + // disallow in security tower + datacubes_rules[i].item_name = '03_Datacube10'; + datacubes_rules[i].min_pos = vect(5100, 3600, -999999); + datacubes_rules[i].max_pos = vect(999999, 999999, 999999); + datacubes_rules[i].allow = false; + i++; + + // disallow below ground level, like the sewers or water area + datacubes_rules[i].item_name = '03_Datacube10'; + datacubes_rules[i].min_pos = vect(-999999, -999999, -999999); + datacubes_rules[i].max_pos = vect(999999, 999999, -55); + datacubes_rules[i].allow = false; + i++; + + // allow anywhere else past the gate + datacubes_rules[i].item_name = '03_Datacube10'; + datacubes_rules[i].min_pos = vect(1700, 2400, -999999); + datacubes_rules[i].max_pos = vect(5000, 3600, 999999); + datacubes_rules[i].allow = true; + i++; + + break; + + case "03_NYC_AIRFIELDHELIBASE": + //etodd computer password + datacubes_rules[i].item_name = '03_Datacube12'; + datacubes_rules[i].min_pos = vect(-999999, -999999, -999999); + datacubes_rules[i].max_pos = vect(999999, 999999, 999999); + datacubes_rules[i].allow = true; + i++; + break; + + case "03_NYC_747": + //Suspension crate code + datacubes_rules[i].item_name = '03_Datacube13'; + datacubes_rules[i].min_pos = vect(-999999, -999999, -999999); + datacubes_rules[i].max_pos = vect(999999, 999999, 999999); + datacubes_rules[i].allow = true; + i++; + break; + + case "04_NYC_HOTEL": + // The code to Paul's bookshelf stash (Anywhere in Paul's Apartment except the stash) + datacubes_rules[i].item_name = '02_Datacube07'; + datacubes_rules[i].min_pos = vect(-310, -4000, -99999); + datacubes_rules[i].max_pos = vect(580, -3284, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '02_Datacube07'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + //Paul's computer password (Anywhere in Paul's Apartment) + datacubes_rules[i].item_name = '02_Datacube05'; + datacubes_rules[i].min_pos = vect(-310, -4000, -99999); + datacubes_rules[i].max_pos = vect(580, -2870, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '02_Datacube05'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + case "04_NYC_NSFHQ": + // don't allow either datacube in the room with the vanilla transmitter computer + // datacube with the password for sending the signal, allowed almost anywhere (in the HQ) + datacubes_rules[i].item_name = '04_Datacube01'; + datacubes_rules[i].min_pos = vect(100, 329, 1010); + datacubes_rules[i].max_pos = vect(116, 345, 1050); + datacubes_rules[i].allow = false; + i++; + + //Exclude the small apartment near the HQ + datacubes_rules[i].item_name = '04_Datacube01'; + datacubes_rules[i].min_pos = vect(-632,1406,216); + datacubes_rules[i].max_pos = vect(-264,1709,394); + datacubes_rules[i].allow = false; + i++; + + //Just the NSF HQ area itself + datacubes_rules[i].item_name = '04_Datacube01'; + datacubes_rules[i].min_pos = vect(-515, -2600, -99999); + datacubes_rules[i].max_pos = vect(1451, 1722, 99999); + datacubes_rules[i].allow = true; + i++; + + //exclude the rest of the map + datacubes_rules[i].item_name = '04_Datacube01'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + // datacube with the security password, don't allow it to go in the basement, you might need it to open the weird door things + // Otherwise, anywhere in the HQ region + datacubes_rules[i].item_name = '04_Datacube02'; + datacubes_rules[i].min_pos = vect(100, 329, 1010); + datacubes_rules[i].max_pos = vect(116, 345, 1050); + datacubes_rules[i].allow = false; + i++; + + //Exclude the small apartment near the HQ + datacubes_rules[i].item_name = '04_Datacube02'; + datacubes_rules[i].min_pos = vect(-632,1406,216); + datacubes_rules[i].max_pos = vect(-264,1709,394); + datacubes_rules[i].allow = false; + i++; + + //Just the NSF HQ area itself + datacubes_rules[i].item_name = '04_Datacube02'; + datacubes_rules[i].min_pos = vect(-515,-2600, 0); + datacubes_rules[i].max_pos = vect(1451, 1722, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '04_Datacube02'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + case "05_NYC_UNATCOMJ12LAB": + // jail cell codes + datacubes_rules[i].item_name = '05_Datacube01';// don't allow this in the locked cabinet + datacubes_rules[i].min_pos = vect(-2355,1414,-158)-vect(8,8,8); + datacubes_rules[i].max_pos = vect(-2355,1414,-158)+vect(8,8,8); + datacubes_rules[i].allow = false; + i++; + + datacubes_rules[i].item_name = '05_Datacube01';// A spot up to the offices over mech bays + datacubes_rules[i].min_pos = vect(-4093,652,-111)-vect(8,8,8); + datacubes_rules[i].max_pos = vect(-4093,652,-111)+vect(8,8,8); + datacubes_rules[i].allow = false; + i++; + + datacubes_rules[i].item_name = '05_Datacube01';// Exclude the area in the main command centre too + datacubes_rules[i].min_pos = vect(-1578,37,-171); + datacubes_rules[i].max_pos = vect(-1507,210,-79); + datacubes_rules[i].allow = false; + i++; + + // As requested, the patient has been moved to the Surgery Ward for immediate salvage of his datavault. If you wish to observe the progress of the operation in person, the door code for surgery is 0199; or, if you wish to view the operation remotely, you may use the temporary account we've created for you: login "psherman" and password "Raven". Please let me know if myself or my staff can provide you with any further assistance. + /*datacubes_rules[i].map = "05_NYC_UNATCOMJ12LAB"; + datacubes_rules[i].item_name = '05_Datacube03'; + datacubes_rules[i].min_pos = vect(1214.396851, -1006.870361, -99999); + datacubes_rules[i].max_pos = vect(2404.169922, -254.634888, 99999); + datacubes_rules[i].allow = false; + i++;*/ + + datacubes_rules[i].item_name = '05_Datacube03'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false;// actually just don't randomize this one since we mention it in the wiki + i++; + + + // Wednesday, 4/15: IS promises that LabNet accounts will be restored by Friday; new login is "dmoreau" with password "raptor". + datacubes_rules[i].item_name = '05_Book01'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + // We are in the process of ghosting all network security resources to provide additional protection against possible intrusion or denial of service attacks. Until this process is complete, all security computers will be utilizing a temporary system. + // Login: MJ12 Password: INVADER + datacubes_rules[i].item_name = '05_Datacube02'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "06_HONGKONG_HELIBASE": + //Security login + datacubes_rules[i].item_name = '06_Datacube18'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "06_HONGKONG_WANCHAI_MARKET": + datacubes_rules[i].item_name = '06_Datacube22'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + break; + + case "06_HONGKONG_WANCHAI_STREET": + //"Insurgent" + datacubes_rules[i].item_name = '06_Book16'; + datacubes_rules[i].min_pos = vect(-1336,-1910,1950); + datacubes_rules[i].max_pos = vect(-116,-447,2311); + datacubes_rules[i].allow = true; + i++; + + //Tai-Fun and Insurgent + datacubes_rules[i].item_name = '06_Datacube21'; + datacubes_rules[i].min_pos = vect(-1336,-1910,1950); + datacubes_rules[i].max_pos = vect(-116,-447,2311); + datacubes_rules[i].allow = true; + i++; + break; + + case "06_HONGKONG_WANCHAI_UNDERWORLD": + //Added datacube with security computer login/password (LUCKYMONEY/REDARROW) + + //Don't allow in the Quickstop + datacubes_rules[i].item_name = '06_HONGKONG_WANCHAI_UNDERWORLD_1551934037'; + datacubes_rules[i].min_pos = vect(-169,254,-305); + datacubes_rules[i].max_pos = vect(443,650,-170); + datacubes_rules[i].allow = false; + i++; + + //Don't allow in the Freezer + datacubes_rules[i].item_name = '06_HONGKONG_WANCHAI_UNDERWORLD_1551934037'; + datacubes_rules[i].min_pos = vect(-1841,-3203,-360); + datacubes_rules[i].max_pos = vect(-1393,-2420,-163); + datacubes_rules[i].allow = false; + i++; + + //Don't allow in the safe + datacubes_rules[i].item_name = '06_HONGKONG_WANCHAI_UNDERWORLD_1551934037'; + datacubes_rules[i].min_pos = vect(-1235, 125, -325); + datacubes_rules[i].max_pos = vect(-1200, 155, -290); + datacubes_rules[i].allow = false; + i++; + + //Don't allow in the locked police room + datacubes_rules[i].item_name = '06_HONGKONG_WANCHAI_UNDERWORLD_1551934037'; + datacubes_rules[i].min_pos = vect(526,-393,-295); + datacubes_rules[i].max_pos = vect(968,-189,-196); + datacubes_rules[i].allow = false; + i++; + + //Don't allow in the locked restaurant + datacubes_rules[i].item_name = '06_HONGKONG_WANCHAI_UNDERWORLD_1551934037'; + datacubes_rules[i].min_pos = vect(1332,-1334,-99999); + datacubes_rules[i].max_pos = vect(2870,-315,99999); + datacubes_rules[i].allow = false; + i++; + + datacubes_rules[i].item_name = '06_HONGKONG_WANCHAI_UNDERWORLD_1551934037'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + break; + + case "08_NYC_HOTEL": + // The code to Paul's bookshelf stash (Anywhere in Paul's Apartment except the stash) + datacubes_rules[i].item_name = '02_Datacube07'; + datacubes_rules[i].min_pos = vect(-310, -4000, -99999); + datacubes_rules[i].max_pos = vect(580, -3284, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '02_Datacube07'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + //Paul's computer password (Anywhere in Paul's Apartment) + datacubes_rules[i].item_name = '02_Datacube05'; + datacubes_rules[i].min_pos = vect(-310, -4000, -99999); + datacubes_rules[i].max_pos = vect(580, -2870, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '02_Datacube05'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + case "09_NYC_DOCKYARD": + //Walton Simons login + datacubes_rules[i].item_name = '09_Datacube11'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + //USFEMA login + datacubes_rules[i].item_name = '09_Datacube12'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "09_NYC_SHIP": + //Ramp Code + datacubes_rules[i].item_name = '09_Datacube14'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "10_PARIS_ENTRANCE": //The level where you start on the roof + // make sure you can get to the book without needing to jump down + datacubes_rules[i].item_name = '10_Book09'; + datacubes_rules[i].min_pos = vect(-99999, -99999, 1956.809082); //top floor + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '10_Book09'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); //top floor + datacubes_rules[i].max_pos = vect(99999, 99999, 1956.809082); + datacubes_rules[i].allow = false; + i++; + break; + + case "10_PARIS_CATACOMBS": + //Login for the security system in the bunker warehouse + datacubes_rules[i].item_name = '10_Datacube12'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "10_PARIS_CLUB": + + // Storage room code - main area of the club + datacubes_rules[i].item_name = '10_Datacube07'; + datacubes_rules[i].min_pos = vect(-1584, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + //back office + datacubes_rules[i].item_name = '10_Datacube07'; + datacubes_rules[i].min_pos = vect(-2366,-303,-99999); + datacubes_rules[i].max_pos = vect(-1832,383,99999); + datacubes_rules[i].allow = true; + i++; + + break; + + case "11_PARIS_EVERETT": + // Lucius DeBeers login + datacubes_rules[i].item_name = '11_Datacube01'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + break; + + case "11_PARIS_CATHEDRAL": + // DataCube0 and 2 (The one with the 3 codes, 2 copies in the level) + datacubes_rules[i].item_name = '11_Datacube03'; + datacubes_rules[i].min_pos = vect(-99999, -99999, 1956.809082); //top floor + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '11_Datacube03';// DataCube0 and 2 have the same textTag + datacubes_rules[i].min_pos = vect(5442,-2553,-231); //gunther room + datacubes_rules[i].max_pos = vect(7179,-1534,-4); + datacubes_rules[i].allow = false; + i++; + + datacubes_rules[i].item_name = '11_Datacube03';// 0 and 2 + datacubes_rules[i].min_pos = vect(5048,-2605,289); //before gunther room + datacubes_rules[i].max_pos = vect(6075,-1800,766); + datacubes_rules[i].allow = false; + i++; + + datacubes_rules[i].item_name = '11_Datacube03';// 0 and 2 + datacubes_rules[i].min_pos = vect(5044,-5242,-139); //in the vault + datacubes_rules[i].max_pos = vect(6059,-3717,92); + datacubes_rules[i].allow = false; + i++; + + //Anywhere on the cathedral grounds otherwise + datacubes_rules[i].item_name = '11_Datacube03'; + datacubes_rules[i].min_pos = vect(2597,-4860, -99999); + datacubes_rules[i].max_pos = vect(7902,1079, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '11_Datacube03'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + case "14_VANDENBERG_SUB": + //Code for URV Bay doors + + // Roof of offshore module + datacubes_rules[i].item_name = '14_Datacube01'; + datacubes_rules[i].min_pos = vect(1280,52,-170)-vect(32,32,32); + datacubes_rules[i].max_pos = vect(1280,52,-170)+vect(32,32,32); + datacubes_rules[i].allow = false; + i++; + + //anywhere offshore + datacubes_rules[i].item_name = '14_Datacube01'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(6200, 2000, 99999); + datacubes_rules[i].allow = true; + i++; + + //Upper area onshore + datacubes_rules[i].item_name = '14_Datacube01'; + datacubes_rules[i].min_pos = vect(800, -99999, -150); + datacubes_rules[i].max_pos = vect(6200, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '14_Datacube01'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + case "14_OCEANLAB_SILO": + //Code for missile launch controls - anywhere above ground + datacubes_rules[i].item_name = '14_Datacube05'; + datacubes_rules[i].min_pos = vect(-99999, -99999, 1415); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + //underground, outside of the actual silo + datacubes_rules[i].item_name = '14_Datacube05'; + datacubes_rules[i].min_pos = vect(-99999, -3610, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 1415); + datacubes_rules[i].allow = true; + i++; + + break; + + case "14_OCEANLAB_LAB": + //OCEANGUARD code to open sub bay doors. This is SUPER IMPORTANT. This needs to not fuck up. + //Intent is for it to be able to spawn anywhere from the sub bay up to and including the storage room, but not the locked one + + //Exclude Locked storage room + datacubes_rules[i].item_name = '14_Datacube06'; + datacubes_rules[i].min_pos = vect(595,-170,-1627); + datacubes_rules[i].max_pos = vect(970,333,-1467); + datacubes_rules[i].allow = false; + i++; + + //Between Sub Bay and door to Greasel Lab, top floor + datacubes_rules[i].item_name = '14_Datacube06'; + datacubes_rules[i].min_pos = vect(491,-170,-1627); + datacubes_rules[i].max_pos = vect(1786,814,-1468); + datacubes_rules[i].allow = true; + i++; + + //All floors of that main central building with the sub bay + datacubes_rules[i].item_name = '14_Datacube06'; + datacubes_rules[i].min_pos = vect(-204,-218,-99999); + datacubes_rules[i].max_pos = vect(491,814,99999); + datacubes_rules[i].allow = true; + i++; + + //Explicitly exclude EVERYTHING else for safety + datacubes_rules[i].item_name = '14_Datacube06'; + datacubes_rules[i].min_pos = vect(-99999,-99999,-99999); + datacubes_rules[i].max_pos = vect(99999,99999,99999); + datacubes_rules[i].allow = false; + i++; + break; + + case "14_OCEANLAB_UC": + //Code for walkway security computer - could go anywhere except for across the bridge (which has no loose items) + + // Stupid spot under the walkway + datacubes_rules[i].item_name = '14_Datacube03'; + datacubes_rules[i].min_pos = vect(876,8206,-3179)-vect(8,8,8); + datacubes_rules[i].max_pos = vect(876,8206,-3179)+vect(8,8,8); + datacubes_rules[i].allow = false; + i++; + + //Anywhere else + datacubes_rules[i].item_name = '14_Datacube03'; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = true; + i++; + + break; + + case "15_AREA51_FINAL": + //Code for stairwell blastdoor + //Not in the reactor lab + datacubes_rules[i].item_name = '15_Datacube08'; + datacubes_rules[i].min_pos = vect(-3781,-6090,-99999); + datacubes_rules[i].max_pos = vect(-2965,-4909,99999); + datacubes_rules[i].allow = false; + i++; + + //anywhere before the stairwell blastdoor + datacubes_rules[i].item_name = '15_Datacube08'; + datacubes_rules[i].min_pos = vect(-5655, -5190, -1700); + datacubes_rules[i].max_pos = vect(-2376, -2527, -534); + datacubes_rules[i].allow = true; + i++; + + //Code for Reactor lab + //Not in the reactor lab + datacubes_rules[i].item_name = '15_Datacube19'; + datacubes_rules[i].min_pos = vect(-3781,-6090,-99999); + datacubes_rules[i].max_pos = vect(-2965,-4909,99999); + datacubes_rules[i].allow = false; + i++; + + //anywhere before the stairwell blastdoor + datacubes_rules[i].item_name = '15_Datacube19'; + datacubes_rules[i].min_pos = vect(-5655, -5190, -1700); + datacubes_rules[i].max_pos = vect(-2376, -2527, -534); + datacubes_rules[i].allow = true; + i++; + + break; + + case "15_AREA51_PAGE": + // LAB12/graytest datacube (note that the text tag is different from vanilla) + //Main clone area + datacubes_rules[i].item_name = '15_Datacube02';// LAB 12 / graytest + datacubes_rules[i].min_pos = vect(-1066,-1579, -99999); + datacubes_rules[i].max_pos = vect(590,291, 99999); + datacubes_rules[i].allow = true; + i++; + + //Side Medical Area + datacubes_rules[i].item_name = '15_Datacube02';// LAB 12 / graytest + datacubes_rules[i].min_pos = vect(-2403,-648, -99999); + datacubes_rules[i].max_pos = vect(-1564,102, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '15_Datacube02';// LAB 12 / graytest + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].allow = false; + i++; + + break; + + } } function FirstEntry() @@ -630,9 +1341,9 @@ static function RandoHackable(DXRando dxr, #var(prefix)HackableDevices h) function RandoInfoDevs(int percent) { - local #var(injectsprefix)InformationDevices id; + local #var(prefix)InformationDevices id; - foreach AllActors(class'#var(injectsprefix)InformationDevices', id) + foreach AllActors(class'#var(prefix)InformationDevices', id) { if(!id.bHidden && id.Mesh == class'#var(prefix)DataCube'.default.Mesh) GlowUp(id); @@ -646,7 +1357,7 @@ function RandoInfoDevs(int percent) } } -function _RandoInfoDev(#var(injectsprefix)InformationDevices id, bool containers) +function _RandoInfoDev(#var(prefix)InformationDevices id, bool containers) { local Inventory inv; local Containers c; @@ -733,10 +1444,11 @@ function MakeAllHackable(int deviceshackable) } } -simulated function bool InfoDevsHasPass(#var(injectsprefix)InformationDevices id, optional out int hasPass[64], optional out int numHasPass) +simulated function bool InfoDevsHasPass(#var(prefix)InformationDevices id, optional out int hasPass[64], optional out int numHasPass) { local DeusExTextParser parser; local int i; + local #var(injectsprefix)InformationDevices injectID; numHasPass=0; for(i=0; i 0 ) id.bAddToVault = true; @@ -799,7 +1515,7 @@ simulated function ProcessStringHasPass(string text, out int hasPass[64], out in } } -function bool CheckComputerPosition(#var(injectsprefix)InformationDevices id, #var(prefix)Computers c, vector newpos, int hasPass[64]) +function bool CheckComputerPosition(#var(prefix)InformationDevices id, #var(prefix)Computers c, vector newpos, int hasPass[64]) { local int a, i; @@ -819,7 +1535,7 @@ function bool CheckComputerPosition(#var(injectsprefix)InformationDevices id, #v return True; } -function bool CheckKeypadPosition(#var(injectsprefix)InformationDevices id, #var(prefix)Keypad k, vector newpos, int hasPass[64]) +function bool CheckKeypadPosition(#var(prefix)InformationDevices id, #var(prefix)Keypad k, vector newpos, int hasPass[64]) { local int i; @@ -834,10 +1550,11 @@ function bool CheckKeypadPosition(#var(injectsprefix)InformationDevices id, #var return True; } -function bool InfoPositionGood(#var(injectsprefix)InformationDevices id, vector newpos, int hasPass[64], int numHasPass) +function bool InfoPositionGood(#var(prefix)InformationDevices id, vector newpos, int hasPass[64], int numHasPass) { local #var(prefix)Computers c; local #var(prefix)Keypad k; + local #var(injectsprefix)InformationDevices injectID; local name TextTag; local String mapname; local int i; @@ -845,9 +1562,17 @@ function bool InfoPositionGood(#var(injectsprefix)InformationDevices id, vector if (id.textTag!=''){ TextTag = id.textTag; } else { + #ifdef injections + injectID=id; + #else + injectID=#var(injectsprefix)InformationDevices(id); + #endif + //Generate a text tag for cubes with plaintext isntead of TextTag - mapname = id.GetMapNameStripped(); - TextTag = StringToName(mapname$"_"$ id.Crc()); + if (injectID!=None){ + mapname = injectID.GetMapNameStripped(); + TextTag = StringToName(mapname$"_"$ injectID.Crc()); + } } i = GetSafeRule( datacubes_rules, TextTag, newpos); From bae19deeabd37c68094307c3ede7c1d2d3814785 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Wed, 13 Nov 2024 16:49:12 -0500 Subject: [PATCH 34/87] Fix Revision placeholders in UNATCO HQ and Hotel. --- DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc | 16 +++++++++++---- DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc | 6 +++++- DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 17 ++++++++++++---- DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 23 +++++++++++++++++----- DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc | 17 ++++++++++++---- DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc | 6 +++++- DXRModules/DeusEx/Classes/DXREvents.uc | 2 ++ 7 files changed, 68 insertions(+), 19 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc index 73e9f88f2..ff37a5bec 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc @@ -166,22 +166,30 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(363.284149, 344.847, 50.32)); //Womens bathroom counter Spawn(class'PlaceholderItem',,, vectm(211.227, 348.46, 50.32)); //Mens bathroom counter Spawn(class'PlaceholderItem',,, vectm(982.255,1096.76,-7)); //Jaime's desk - Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf if (VanillaMaps){ Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + + Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door + Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door } else { //Revision Kitchen/Breakroom is in a different location Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + + //Level 4/MJ12 Lab area is blocked off in Revision, these are alternate locations for those placeholders + Spawn(class'PlaceholderItem',,, vectm(110,-1050,-20)); //Desk at entrance to jail area + Spawn(class'PlaceholderItem',,, vectm(1280,-180,-55)); //Next to couch/plant outside medical + Spawn(class'PlaceholderItem',,, vectm(1335,300,-35)); //Under desk near medical beds + Spawn(class'PlaceholderContainer',,, vectm(1490,975,-20)); //Near blocked door down to level 4 + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk - Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door Spawn(class'PlaceholderContainer',,, vectm(-383.6,1376,273)); //JC's Office break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc index 8abc9687e..07e3345d7 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc @@ -219,7 +219,11 @@ function PreFirstEntryMapFixes() SetAllLampsState(false, true, true); // the lamp in Paul's apartment } else { - //TODO: Add equivalent Placeholders for Revision + Spawn(class'PlaceholderItem',,, vectm(-180,-3365,70)); //Actual closet + Spawn(class'PlaceholderItem',,, vectm(-180,-3450,70)); //Actual closet + Spawn(class'PlaceholderItem',,, vectm(480,-3775,125)); //Bathroom counter + Spawn(class'PlaceholderItem',,, vectm(550,-3700,120)); //Kitchen counter + Spawn(class'PlaceholderItem',,, vectm(-310,-3900,75)); //Crack next to Paul's bed } break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc index 181e1dafc..61707c3ef 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc @@ -425,23 +425,32 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(363.284149, 344.847, 50.32)); //Womens bathroom counter Spawn(class'PlaceholderItem',,, vectm(211.227, 348.46, 50.32)); //Mens bathroom counter Spawn(class'PlaceholderItem',,, vectm(982.255,1096.76,-7)); //Jaime's desk - Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf if (VanillaMaps){ Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + + Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door + Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door + } else { //Revision Kitchen/Breakroom is in a different location Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + + //Level 4/MJ12 Lab area is blocked off in Revision, these are alternate locations for those placeholders + Spawn(class'PlaceholderItem',,, vectm(110,-1050,-20)); //Desk at entrance to jail area + Spawn(class'PlaceholderItem',,, vectm(1280,-180,-55)); //Next to couch/plant outside medical + Spawn(class'PlaceholderItem',,, vectm(1335,300,-35)); //Under desk near medical beds + Spawn(class'PlaceholderContainer',,, vectm(1490,975,-20)); //Near blocked door down to level 4 + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk - Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door Spawn(class'PlaceholderContainer',,, vectm(-383.6,1376,273)); //JC's Office break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc index 6c8032010..a3d9a6c33 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc @@ -131,7 +131,11 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(15,-2972,123)); //Kitchen counter Spawn(class'PlaceholderItem',,, vectm(-853,-3148,75)); //Crack next to Paul's bed } else { - //TODO: Add equivalent Placeholders for Revision + Spawn(class'PlaceholderItem',,, vectm(-180,-3365,70)); //Actual closet + Spawn(class'PlaceholderItem',,, vectm(-180,-3450,70)); //Actual closet + Spawn(class'PlaceholderItem',,, vectm(480,-3775,125)); //Bathroom counter + Spawn(class'PlaceholderItem',,, vectm(550,-3700,120)); //Kitchen counter + Spawn(class'PlaceholderItem',,, vectm(-310,-3900,75)); //Crack next to Paul's bed } break; @@ -304,23 +308,32 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(363.284149, 344.847, 50.32)); //Womens bathroom counter Spawn(class'PlaceholderItem',,, vectm(211.227, 348.46, 50.32)); //Mens bathroom counter Spawn(class'PlaceholderItem',,, vectm(982.255,1096.76,-7)); //Jaime's desk - Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf if (VanillaMaps){ Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + + Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door + Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door + } else { //Revision Kitchen/Breakroom is in a different location Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + + //Level 4/MJ12 Lab area is blocked off in Revision, these are alternate locations for those placeholders + Spawn(class'PlaceholderItem',,, vectm(110,-1050,-20)); //Desk at entrance to jail area + Spawn(class'PlaceholderItem',,, vectm(1280,-180,-55)); //Next to couch/plant outside medical + Spawn(class'PlaceholderItem',,, vectm(1335,300,-35)); //Under desk near medical beds + Spawn(class'PlaceholderContainer',,, vectm(1490,975,-20)); //Near blocked door down to level 4 + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk - Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door Spawn(class'PlaceholderContainer',,, vectm(-383.6,1376,273)); //JC's Office if(IsAprilFools()) { diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc index 60b19d294..b2e8f2162 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc @@ -195,23 +195,32 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(363.284149, 344.847, 50.32)); //Womens bathroom counter Spawn(class'PlaceholderItem',,, vectm(211.227, 348.46, 50.32)); //Mens bathroom counter Spawn(class'PlaceholderItem',,, vectm(982.255,1096.76,-7)); //Jaime's desk - Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door - Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door Spawn(class'PlaceholderItem',,, vectm(-307.8,-1122,-7)); //Anna's Desk Spawn(class'PlaceholderItem',,, vectm(-138.5,-790.1,-1.65)); //Anna's bookshelf if (VanillaMaps){ Spawn(class'PlaceholderItem',,, vectm(-27,1651.5,291)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(602,1215.7,295)); //Kitchen Counter + + Spawn(class'PlaceholderItem',,, vectm(2033.8,1979.9,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2148,2249,-85)); //Near MJ12 Door + Spawn(class'PlaceholderItem',,, vectm(2433,1384,-85)); //Near MJ12 Door + Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door + } else { //Revision Kitchen/Breakroom is in a different location Spawn(class'PlaceholderItem',,, vectm(295,1385,485)); //Breakroom table Spawn(class'PlaceholderItem',,, vectm(765,1500,440)); //Kitchen Counter + + //Level 4/MJ12 Lab area is blocked off in Revision, these are alternate locations for those placeholders + Spawn(class'PlaceholderItem',,, vectm(110,-1050,-20)); //Desk at entrance to jail area + Spawn(class'PlaceholderItem',,, vectm(1280,-180,-55)); //Next to couch/plant outside medical + Spawn(class'PlaceholderItem',,, vectm(1335,300,-35)); //Under desk near medical beds + Spawn(class'PlaceholderContainer',,, vectm(1490,975,-20)); //Near blocked door down to level 4 + } Spawn(class'PlaceholderItem',,, vectm(-672.8,1261,473)); //Upper Left Office desk Spawn(class'PlaceholderItem',,, vectm(-433.128601,736.819763,314.310211)); //Weird electrical thing in closet Spawn(class'PlaceholderContainer',,, vectm(-1187,-1154,-31)); //Behind Jail Desk - Spawn(class'PlaceholderContainer',,, vectm(2384,1669,-95)); //MJ12 Door Spawn(class'PlaceholderContainer',,, vectm(-383.6,1376,273)); //JC's Office break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc index 460885f43..4d61bbd7b 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM08.uc @@ -267,7 +267,11 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(15,-2972,123)); //Kitchen counter Spawn(class'PlaceholderItem',,, vectm(-853,-3148,75)); //Crack next to Paul's bed } else { - //TODO: Add equivalent Placeholders for Revision + Spawn(class'PlaceholderItem',,, vectm(-180,-3365,70)); //Actual closet + Spawn(class'PlaceholderItem',,, vectm(-180,-3450,70)); //Actual closet + Spawn(class'PlaceholderItem',,, vectm(480,-3775,125)); //Bathroom counter + Spawn(class'PlaceholderItem',,, vectm(550,-3700,120)); //Kitchen counter + Spawn(class'PlaceholderItem',,, vectm(-310,-3900,75)); //Crack next to Paul's bed } break; case "08_NYC_BAR": diff --git a/DXRModules/DeusEx/Classes/DXREvents.uc b/DXRModules/DeusEx/Classes/DXREvents.uc index 4040ebcec..8a8f1fd13 100644 --- a/DXRModules/DeusEx/Classes/DXREvents.uc +++ b/DXRModules/DeusEx/Classes/DXREvents.uc @@ -3468,7 +3468,9 @@ defaultproperties bingo_options(275)=(event="02_Book06",desc="Learn basic firearm safety",max=1,missions=276) bingo_options(276)=(event="15_Email02",desc="The truth is out there",max=1,missions=32768) bingo_options(277)=(event="ManderleyMail",desc="Check Manderley's holomail %s times",desc_singular="Check Manderley's holomail 1 time",max=2,missions=58) +#ifndef revision bingo_options(278)=(event="LetMeIn",desc="Let me in!",max=1,missions=26) +#endif bingo_options(279)=(event="08_Bulletin02",desc="Most Wanted",max=1,missions=256) bingo_options(280)=(event="SnitchDowd",desc="Snitches get stitches",max=1,missions=256) bingo_options(281)=(event="SewerSurfin",desc="Sewer Surfin'",max=1,missions=276) From b67a881a3978a827aa6833f06a55f9f5d8b1140b Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Wed, 13 Nov 2024 18:59:44 -0500 Subject: [PATCH 35/87] Update Area 51 Blast Doors bingo description --- DXRModules/DeusEx/Classes/DXREvents.uc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DXRModules/DeusEx/Classes/DXREvents.uc b/DXRModules/DeusEx/Classes/DXREvents.uc index 8a8f1fd13..c7472f626 100644 --- a/DXRModules/DeusEx/Classes/DXREvents.uc +++ b/DXRModules/DeusEx/Classes/DXREvents.uc @@ -2517,7 +2517,7 @@ static simulated function string GetBingoGoalHelpText(string event,int mission, case "CloneCubes": return "Read enough datacubes regarding the cloning projects at Area 51. There are 8 datacubes scattered through Sector 4 of Area 51."; case "blast_door_open": - return "Open the main blast doors of the Area 51 bunker by finding the security computer somewhere on the surface."; + return "Open the main blast doors of the Area 51 bunker by finding the security computer somewhere on the surface or by opening them from inside."; case "SpinningRoom": return "Pass through the center of the spinning room in the ventilation system of the Brooklyn Naval Yards."; case "MolePeopleSlaughtered": From d15f940fba6a7432e9e8e3e124add7664d2a9528 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Wed, 13 Nov 2024 23:49:15 -0500 Subject: [PATCH 36/87] All spawned datacubes now have defined spawn coordinates #994 --- DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc | 2 ++ DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc | 4 ++++ DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc | 2 ++ DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc | 6 ++++++ 6 files changed, 16 insertions(+) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc index 61707c3ef..4d166be77 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc @@ -6,6 +6,7 @@ function CheckConfig() add_datacubes[i].map = "03_NYC_UNATCOHQ"; add_datacubes[i].text = "Note to self:|nUsername: JCD|nPassword: bionicman "; + add_datacubes[i].Location = vect(-210,1290,290); //JC's Desk i++; Super.CheckConfig(); diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc index a3d9a6c33..e52af57ae 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc @@ -8,6 +8,7 @@ function CheckConfig() add_datacubes[i].map = "04_NYC_UNATCOHQ"; add_datacubes[i].text = "Note to self:|nUsername: JCD|nPassword: bionicman "; + add_datacubes[i].Location = vect(-210,1290,290); //JC's Desk i++; Super.CheckConfig(); diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc index b2e8f2162..10bafc919 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc @@ -6,10 +6,12 @@ function CheckConfig() add_datacubes[i].map = "05_NYC_UNATCOMJ12lab"; add_datacubes[i].text = "Agent Sherman, I've updated the demiurge password for Agent Navarre's killphrase to archon. Make sure you don't leave this datacube lying around."; + add_datacubes[i].Location = vect(-50,3540,-140); //Agent Sherman's desk in the back of the greasel lab i++; add_datacubes[i].map = "05_NYC_UNATCOHQ"; add_datacubes[i].text = "Note to self:|nUsername: JCD|nPassword: bionicman "; + add_datacubes[i].Location = vect(-210,1290,290); //JC's Desk i++; Super.CheckConfig(); diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc index bd5d595d7..058f27d4a 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc @@ -9,18 +9,22 @@ function CheckConfig() add_datacubes[i].map = "06_HONGKONG_VERSALIFE"; add_datacubes[i].text = "Versalife employee ID: 06288. Use this to access the VersaLife elevator north of the market."; + add_datacubes[i].Location = vect(350,1950,200); //Middle cube on middle floor i++; add_datacubes[i].map = "06_HONGKONG_STORAGE"; add_datacubes[i].text = "Access code to the Versalife nanotech research wing: 55655."; + add_datacubes[i].Location = vect(-480,-550,570); //Room with cabinet i++; add_datacubes[i].map = "06_HONGKONG_WANCHAI_MARKET"; add_datacubes[i].text = "This new ATM in the market is in such a convenient location for all my banking needs!|nAccount: 8326942 |nPIN: 7797 "; + add_datacubes[i].Location = vect(360,-1120,40); //Pottery shop counter i++; add_datacubes[i].map = "06_HONGKONG_WANCHAI_STREET"; add_datacubes[i].text = "It's so handy being able to quickly grab some cash from the Quick Stop before getting to the club!|nAccount: 2332316 |nPIN: 1608 "; + add_datacubes[i].Location = vect(-330,-700,1700); //Under Construction floor i++; add_datacubes[i].map = "06_HONGKONG_WANCHAI_STREET"; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc index 417b185e0..5f179ce05 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc @@ -8,8 +8,10 @@ function CheckConfig() add_datacubes[i].map = "09_NYC_Dockyard"; add_datacubes[i].text = "Jenny I've got your number|nI need to make you mine|nJenny don't change your number|n 8675309";// DXRPasswords doesn't recognize |n as a wordstop + add_datacubes[i].Location = vect(3860,3270,300); //Ammo storage control room i++; add_datacubes[i] = add_datacubes[i-1];// dupe + add_datacubes[i].Location = vect(-145,4775,70); //On boxes in other warehouse i++; Super.CheckConfig(); diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc index 6e8493a53..845b9f2e5 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc @@ -9,10 +9,12 @@ function CheckConfig() if (class'DXRMapVariants'.static.IsVanillaMaps(player())){ add_datacubes[i].map = "15_AREA51_BUNKER"; add_datacubes[i].text = "Security Personnel:|nDue to the the threat of a mass civilian raid of Area 51, we have updated the ventilation security system.|n|nUser: SECURITY |nPassword: NarutoRun |n|nBe on the lookout for civilians running with their arms swept behind their backs..."; + add_datacubes[i].Location = vect(1115,-1840,-460); //Boxes in Hangar i++; add_datacubes[i].map = "15_AREA51_BUNKER"; add_datacubes[i].text = "Security Personnel:|nFor increased ventilation system security, we have replaced the elevator button with a keypad. The code is 17092019. Do not share the code with anyone and destroy this datacube after reading."; + add_datacubes[i].Location = vect(1260,-2875,-260); //Pipes next to Xander in Hangar i++; } @@ -22,6 +24,7 @@ function CheckConfig() $ " I would leave, but not without you. You mean too much to me. After the duty shift changes, come to my chamber -- it's the only place we can talk in private." $ " The code is 6786. I love you." $ "|n|nJustin"; + add_datacubes[i].Location = vect(3200,-1400,-150); //First set of boxes down hall with doors i++; add_datacubes[i].map = "15_AREA51_ENTRANCE"; @@ -30,6 +33,7 @@ function CheckConfig() $ " I would leave, but not without you. You mean too much to me. After the duty shift changes, come to my chamber -- it's the only place we can talk in private." $ " The code is 3901. I love you." $ "|n|nJohn"; + add_datacubes[i].Location = vect(4030,-610,-150); //Second set of boxes down the hall with doors i++; add_datacubes[i].map = "15_AREA51_ENTRANCE"; @@ -38,11 +42,13 @@ function CheckConfig() $ " I would leave, but not without you. You mean too much to me. After the duty shift changes, come to my chamber -- it's the only place we can talk in private." $ " The code is 4322. I love you." $ "|n|nJim"; + add_datacubes[i].Location = vect(4008,662,-150); //Fourth set of boxes down the hall with doors i++; add_datacubes[i].map = "15_AREA51_PAGE"; add_datacubes[i].text = "The security guys found my last datacube so they changed the UC Control Rooms code to 1234. I don't know what they're so worried about, no one could make it this far into Area 51. What's the worst that could happen?"; + add_datacubes[i].Location = vect(6330,-7225,-5550); //Boxes directly under Page i++; Super.CheckConfig(); From 16a6705a74e4d8e2aa0781737e2b0f9eac54f02e Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Fri, 15 Nov 2024 18:52:06 -0500 Subject: [PATCH 37/87] Crowd Control will now spawn DXRPiano's in Revision etc, instead of vanilla --- DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc b/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc index c7c4f130d..663b78736 100644 --- a/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc +++ b/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc @@ -1623,7 +1623,11 @@ function int SpawnNastyRat(string viewer) function int DropPiano(string viewer) { + #ifdef injections local #var(prefix)WHPiano piano; + #else + local DXRPiano piano; + #endif local DXRActorsBase tracer; local vector loc; local float height, leading; @@ -1652,7 +1656,11 @@ function int DropPiano(string viewer) return TempFail; } + #ifdef injections piano = Spawn(class'#var(prefix)WHPiano',,, loc); + #else + piano = Spawn(class'DXRPiano',,, loc); + #endif //Did it spawn successfully? if(piano == None) { return TempFail; From a6ba0b2f118d6846a8bc5eeb6e2f3e0cf8327719 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 16 Nov 2024 17:02:40 -0500 Subject: [PATCH 38/87] Spawned datacubes can now be assigned a string texttag for better identification. InformationDevices now have a standardized way of fetching their text tag (or equivalent). DXREvents now acts based on the fetched text tag from InformationDevices instead of JUST the actual texttag. All spawned datacubes now have plaintext tags assigned. --- DXRCore/DeusEx/Classes/DXRActorsBase.uc | 7 +- DXRFixes/DeusEx/Classes/ActorDisplayWindow.uc | 21 +- DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc | 2 + DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc | 6 + DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc | 8 +- DXRMissions/DeusEx/Classes/DXRMissionsM01.uc | 2 +- DXRMissions/DeusEx/Classes/DXRMissionsM05.uc | 4 +- DXRMissions/DeusEx/Classes/DXRMissionsM06.uc | 2 +- DXRMissions/DeusEx/Classes/DXRMissionsM09.uc | 2 +- DXRMissions/DeusEx/Classes/DXRMissionsM15.uc | 2 +- DXRModules/DeusEx/Classes/DXRDatacubes.uc | 273 ++++++++++++++++-- DXRModules/DeusEx/Classes/DXREvents.uc | 32 +- DXRModules/DeusEx/Classes/DXRFixup.uc | 10 +- DXRModules/DeusEx/Classes/DXRMachines.uc | 2 +- .../DeusEx/Classes/DXRShowClassWindow.uc | 7 +- .../Classes/DXRandoCrowdControlEffects.uc | 2 +- DXRando/DeusEx/Classes/InformationDevices.uc | 71 ++++- 20 files changed, 388 insertions(+), 68 deletions(-) diff --git a/DXRCore/DeusEx/Classes/DXRActorsBase.uc b/DXRCore/DeusEx/Classes/DXRActorsBase.uc index dc950d0f7..6282386f6 100644 --- a/DXRCore/DeusEx/Classes/DXRActorsBase.uc +++ b/DXRCore/DeusEx/Classes/DXRActorsBase.uc @@ -1137,7 +1137,7 @@ function #var(injectsprefix)InformationDevices SpawnDatacube(vector loc, rotator } -function #var(injectsprefix)InformationDevices SpawnDatacubePlaintext(vector loc, rotator rot, string text, optional bool dont_move) +function #var(injectsprefix)InformationDevices SpawnDatacubePlaintext(vector loc, rotator rot, string text, string plaintextTag, optional bool dont_move) { local #var(injectsprefix)InformationDevices dc; @@ -1145,6 +1145,7 @@ function #var(injectsprefix)InformationDevices SpawnDatacubePlaintext(vector loc if(dc != None) { dc.plaintext = text; + dc.plaintextTag=plaintextTag; } return dc; } @@ -1691,12 +1692,12 @@ function safe_rule FixSafeRule(safe_rule r) return r; } -function int GetSafeRule(safe_rule rules[16], name item_name, vector newpos) +function int GetSafeRule(safe_rule rules[16], coerce string item_name, vector newpos) { local int i; for(i=0; i 5000 ) return False; - if ( TextTag == '' ) { + if ( TextTag == "" ) { //l("InfoPositionGood("$ActorToString(id)$", "$newpos$") returning True, no textTag"); return True; } diff --git a/DXRModules/DeusEx/Classes/DXREvents.uc b/DXRModules/DeusEx/Classes/DXREvents.uc index c7472f626..d5848b1c0 100644 --- a/DXRModules/DeusEx/Classes/DXREvents.uc +++ b/DXRModules/DeusEx/Classes/DXREvents.uc @@ -1638,6 +1638,7 @@ simulated function string tweakBingoDescription(string event, string desc) function ReadText(name textTag) { local string eventname; + local string flagEvent; local PlayerDataItem data; local DXRPasswords pws; @@ -1693,6 +1694,10 @@ function ReadText(name textTag) case '15_Datacube03': case '15_Datacube04': case '15_Datacube05': + case 'CloneCube1': + case 'CloneCube2': + case 'CloneCube3': + case 'CloneCube4': eventname="CloneCubes"; break; @@ -1707,13 +1712,24 @@ function ReadText(name textTag) eventname="UNATCOHandbook"; break; + case 'JennysNumber': + eventname = "8675309"; + flagEvent="09_NYC_DOCKYARD--796967769"; //So the web side doesn't need adjustment (yet) + break; + + case '06_Datacube05':// Maggie Chow's bday - eventname = "July 18th"; // don't break, fallthrough + eventname = "July 18th"; + flagEvent="06_Datacube05"; + break; + default: // HACK: because names normally can't have hyphens? convert to string and use that instead switch(string(textTag)){ case "09_NYC_DOCKYARD--796967769": + case "JennysNumber": eventname = "8675309"; + flagEvent="09_NYC_DOCKYARD--796967769"; break; case "15_AREA51_PAGE--32904306": case "15_AREA51_PAGE--1066683761": @@ -1722,18 +1738,20 @@ function ReadText(name textTag) eventname="CloneCubes"; break; } - if(eventname != "") { - pws = DXRPasswords(dxr.FindModule(class'DXRPasswords')); - if(pws != None) - pws.ProcessString(eventname); - SendFlagEvent(textTag, false, eventname); - } else { + if(eventname == "") { // it's simple for a bingo event that requires reading just 1 thing _MarkBingo(textTag); return; } } + if(flagEvent!="" && eventname != "") { + pws = DXRPasswords(dxr.FindModule(class'DXRPasswords')); + if(pws != None) + pws.ProcessString(eventname); + SendFlagEvent(flagEvent, false, eventname); + } + data = class'PlayerDataItem'.static.GiveItem(player()); if(data.MarkRead(textTag)) { diff --git a/DXRModules/DeusEx/Classes/DXRFixup.uc b/DXRModules/DeusEx/Classes/DXRFixup.uc index 251b88444..a9f95282e 100644 --- a/DXRModules/DeusEx/Classes/DXRFixup.uc +++ b/DXRModules/DeusEx/Classes/DXRFixup.uc @@ -22,6 +22,7 @@ struct AddDatacube { var vector location;// 0,0,0 for random var class imageClass; var rotator rotation; + var string plaintextTag; // spawned in PreFirstEntry, so if you set a location then it will be moved according to the logic of DXRPasswords }; var AddDatacube add_datacubes[32]; @@ -958,8 +959,12 @@ function SpawnDatacubes() if( dxr.localURL != add_datacubes[i].map ) continue; loc = add_datacubes[i].location * coords_mult; - if( loc.X == 0 && loc.Y == 0 && loc.Z == 0 ) + if( loc.X == 0 && loc.Y == 0 && loc.Z == 0 ) { + if (add_datacubes[i].plaintextTag!=""){ + warning("Spawning datacube with plaintextTag "$add_datacubes[i].plaintextTag$" but random location. Safe Rules may not be predictable!"); + } loc = GetRandomPosition(); + } rot = add_datacubes[i].rotation; rot = rotm(rot.Pitch, rot.Yaw, rot.Roll, 0.0); @@ -975,7 +980,8 @@ function SpawnDatacubes() GlowUp(dc); dc.plaintext = add_datacubes[i].text; dc.imageClass = add_datacubes[i].imageClass; - l("add_datacubes spawned "$dc$", text: \""$dc.plaintext$"\", image: "$dc.imageClass$", location: "$loc); + dc.plaintextTag = add_datacubes[i].plaintextTag; + l("add_datacubes spawned "$dc$", text: \""$dc.plaintext$"\", image: "$dc.imageClass$", plaintextTag: "$dc.plaintextTag$", location: "$loc); } else warning("failed to spawn datacube at "$loc$", text: \""$add_datacubes[i].text$"\", image: "$dc.imageClass); } diff --git a/DXRModules/DeusEx/Classes/DXRMachines.uc b/DXRModules/DeusEx/Classes/DXRMachines.uc index 4c3e277cb..9e946c2b7 100644 --- a/DXRModules/DeusEx/Classes/DXRMachines.uc +++ b/DXRModules/DeusEx/Classes/DXRMachines.uc @@ -390,7 +390,7 @@ function #var(injectsprefix)InformationDevices SpawnDatacubeForComputer(vector l NearestFloor(locnorm, distrange); d = SpawnDatacubePlaintext(locnorm.loc, Rotator(locnorm.norm), - c.UserList[0].userName $ " password is " $ c.UserList[0].Password); + c.UserList[0].userName $ " password is " $ c.UserList[0].Password, ""); d.SetCollision(true,false,false); d.new_passwords[0] = c.UserList[0].Password; diff --git a/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc b/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc index a95b34eb4..0c63116dc 100644 --- a/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc +++ b/DXRVanilla/DeusEx/Classes/DXRShowClassWindow.uc @@ -12,12 +12,13 @@ var ToolCheckboxWindow chkTagEvent; var ToolCheckboxWindow chkTagConns; var ToolCheckboxWindow chkEventConns; var ToolCheckboxWindow chkCollision; +var ToolCheckboxWindow chkTextTags; event InitWindow() { Super.InitWindow(); - SetSize(420,420); //215,420 normally + SetSize(420,445); //215,420 normally CreateDXRandoControls(); } @@ -89,6 +90,9 @@ function CreateDXRandoControls() chkCollision = CreateToolCheckbox(215, y, "Show Collision Values", actorDisplay.IsCollisionVisible()); y += 25; + chkTextTags = CreateToolCheckbox(215, y, "Show Text Tags", actorDisplay.AreTextTagsVisible()); + y += 25; + } function SaveSettings() @@ -106,6 +110,7 @@ function SaveSettings() actorDisplay.ShowTagConns(chkTagConns.GetToggle()); actorDisplay.ShowEventConns(chkEventConns.GetToggle()); actorDisplay.ShowCollision(chkCollision.GetToggle()); + actorDisplay.ShowTextTags(chkTextTags.GetToggle()); actorDisplay.LimitRadius(chkLimitRadius.GetToggle()); actorDisplay.SetActorRadius(radiusFilter.GetText()); diff --git a/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc b/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc index 663b78736..7c258bd78 100644 --- a/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc +++ b/DXRando/DeusEx/Classes/DXRandoCrowdControlEffects.uc @@ -2169,7 +2169,7 @@ function bool SpamDatacubes(String viewer) local #var(injectsprefix)InformationDevices dc; for (i=0;i<5;i++){ - dc = ccLink.ccModule.SpawnDatacubePlaintext(ccLink.ccModule.GetRandomPositionFine(),rot(0,0,0),RandomSpamDatacubeText(viewer)); + dc = ccLink.ccModule.SpawnDatacubePlaintext(ccLink.ccModule.GetRandomPositionFine(),rot(0,0,0),RandomSpamDatacubeText(viewer),""); if (dc!=None){ ccLink.ccModule.GlowUp(dc); num++; diff --git a/DXRando/DeusEx/Classes/InformationDevices.uc b/DXRando/DeusEx/Classes/InformationDevices.uc index cb45739ef..fbdc95136 100644 --- a/DXRando/DeusEx/Classes/InformationDevices.uc +++ b/DXRando/DeusEx/Classes/InformationDevices.uc @@ -9,6 +9,7 @@ class DXRInformationDevices extends #var(prefix)InformationDevices; var DXRPasswords passwords; var string plaintext; var string new_passwords[16]; +var string plaintextTag; function string _GetMapName() { @@ -155,19 +156,18 @@ function SetTextTag(DeusExNote note, Name textTag) #ifdef hx function AddToVault() { - local Name plaintextTag; - local string vaultString, mapname; + local Name plainTag; + local string vaultString;; foreach AllActors(class'DXRPasswords', passwords) { break; } if( plaintext != "" ) { vaultString = plaintext; if(passwords != None) passwords.ProcessString(vaultString, new_passwords); - mapname = GetMapNameStripped(); - plaintextTag = StringToName(mapname$"-"$ Crc()); - log(Self$": plaintextTag: "$plaintextTag); - MarkTextRead(plaintextTag); - HXGameInfo(Level.Game).AddNote(vaultString, , True, plaintextTag); + plainTag = StringToName(GetTextTag(self)); + log(Self$": plainTag: "$plainTag); + MarkTextRead(plainTag); + HXGameInfo(Level.Game).AddNote(vaultString, , True, plainTag); return; } @@ -182,8 +182,7 @@ function CreateInfoWindow() local DeusExNote note; local DeusExRootWindow rootWindow; local int i; - local Name plaintextTag; - local string mapname; + local Name plainTag; foreach AllActors(class'DXRPasswords', passwords) { break; } @@ -200,15 +199,14 @@ function CreateInfoWindow() winText.SetText(vaultString); if (bAddToVault) { - mapname = class'DXRMapVariants'.static.CleanupMapName(GetMapNameStripped()); - plaintextTag = rootWindow.StringToName(mapname$"-"$ Crc()); - log(Self$": plaintextTag: "$plaintextTag); - MarkTextRead(plaintextTag); - note = GetNote(plaintextTag); + plainTag = rootWindow.StringToName(GetTextTag(self)); + log(Self$": plainTag: "$plainTag); + MarkTextRead(plainTag); + note = GetNote(plainTag); if (note == None) { note = aReader.AddNote(vaultString,, True); - SetTextTag(note, plaintextTag); + SetTextTag(note, plainTag); WritePasswordsToNote(note); } } @@ -350,6 +348,49 @@ function BaseChange() } } +static function string GetTextTag(#var(prefix)InformationDevices id) +{ + local #var(injectsprefix)InformationDevices injectID; + local String TextTag; + local String mapname; + + if (id==None) return ""; + + //TextTag name priority: + // 1) Actual textTag + // 2) imageClass + // 3) plaintextTag (definable when spawning datacubes) + // 4) Autogenerated MapName_CRC id + if (id.textTag!=''){ + TextTag = string(id.textTag); + } else if (id.imageClass!=None){ + TextTag = id.imageClass.default.imageDescription; + TextTag = class'DXRInfo'.static.ReplaceText(TextTag," ",""); + TextTag = class'DXRInfo'.static.ReplaceText(TextTag,"-",""); + TextTag = class'DXRInfo'.static.ReplaceText(TextTag,":",""); + TextTag = class'DXRInfo'.static.ReplaceText(TextTag,",",""); + } else { + #ifdef injections + injectID=id; + #else + injectID=#var(injectsprefix)InformationDevices(id); + #endif + + //Datacubes using plaintext can define a plaintextTag to simplify identification. + //Otherwise, generate a text tag for cubes with plaintext instead of TextTag + if (injectID!=None){ + if (injectID.plaintextTag!=""){ + TextTag=injectID.plaintextTag; + } else { + mapname = injectID.GetMapNameStripped(); + TextTag = mapname$"_"$ injectID.Crc(); + } + } + } + + return TextTag; +} + defaultproperties { bInvincible=True From a3c000c77640d70c2a02bd1787fb2abafa9eb4d5 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 16 Nov 2024 18:45:11 -0500 Subject: [PATCH 39/87] Update fixed add_datacube locations to make sure they all work for Revision. Update datacubes_rules for versalife nanotech code to ensure it is in the main area of the map. --- DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc | 8 +++++++- DXRModules/DeusEx/Classes/DXRDatacubes.uc | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc index d5b00b7e9..0afc7f3d3 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc @@ -53,7 +53,13 @@ function CheckConfig() add_datacubes[i].map = "15_AREA51_PAGE"; add_datacubes[i].text = "The security guys found my last datacube so they changed the UC Control Rooms code to 1234. I don't know what they're so worried about, no one could make it this far into Area 51. What's the worst that could happen?"; - add_datacubes[i].Location = vect(6330,-7225,-5550); //Boxes directly under Page + + //Boxes directly under Page + if (class'DXRMapVariants'.static.IsVanillaMaps(player())){ + add_datacubes[i].Location = vect(6330,-7225,-5550); + } else { + add_datacubes[i].Location = vect(160,2350,-180); + } add_datacubes[i].plaintextTag = "UCControlRoomPassword"; i++; diff --git a/DXRModules/DeusEx/Classes/DXRDatacubes.uc b/DXRModules/DeusEx/Classes/DXRDatacubes.uc index fa004bf50..dcad5466e 100644 --- a/DXRModules/DeusEx/Classes/DXRDatacubes.uc +++ b/DXRModules/DeusEx/Classes/DXRDatacubes.uc @@ -413,10 +413,10 @@ function vanilla_datacubes_rules() break; case "06_HONGKONG_STORAGE": - //This code should probably not be allowed in the area after the exit pipe + //Anywhere below the exit pipe datacubes_rules[i].item_name = 'VersalifeNanotechCode'; datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); - datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 1345); //1345 is the top of the pipe datacubes_rules[i].allow = true; i++; break; @@ -1175,10 +1175,10 @@ function revision_datacubes_rules() break; case "06_HONGKONG_STORAGE": - //This code should probably not be allowed in the area after the exit pipe + //Anywhere below the exit pipe datacubes_rules[i].item_name = 'VersalifeNanotechCode'; datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); - datacubes_rules[i].max_pos = vect(99999, 99999, 99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 1345); //1345 is the top of the pipe datacubes_rules[i].allow = true; i++; break; From b5b50800c73234cb7fdc7020992679442cafcc8f Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 17 Nov 2024 13:40:42 -0500 Subject: [PATCH 40/87] Define spawn locations for extra items in 02_NYC_WAREHOUSE ( #994 ) Enabled many placeholders and fixups for 02_NYC_WAREHOUSE in Revision to match vanilla. Added option to enable debug markers for placeholders for easier placement/testing --- DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc | 104 +++++++++--------- .../DeusEx/Classes/PlaceholderContainer.uc | 9 ++ DXRando/DeusEx/Classes/PlaceholderItem.uc | 4 + Pawns/DeusEx/Classes/PlaceholderEnemy.uc | 5 + 4 files changed, 72 insertions(+), 50 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc index 07e3345d7..f278de687 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM02.uc @@ -89,6 +89,7 @@ function PreFirstEntryMapFixes() break; case "02_NYC_WAREHOUSE": + //Warehouse is basically the same between Vanilla and Revision (Just some extra hallways and paths) if (VanillaMaps){ // crates for climbing out of the sewer water foreach RadiusActors(class'#var(prefix)CrateUnbreakableSmall', crateSmall, 8.0, vectm(-1658.93, 664.61, -358.68)) { @@ -103,22 +104,6 @@ function PreFirstEntryMapFixes() crateMedium.SetLocation(loc); } - npClass.static.SpawnInfoDevice(self,class'#var(prefix)NewspaperOpen',vectm(1700.929810,-519.988037,57.729870),rotm(0,0,0,0),'02_Newspaper06'); //Joe Greene article, table in room next to break room (near bathrooms) - npClass.static.SpawnInfoDevice(self,class'#var(prefix)NewspaperOpen',vectm(-1727.644775,2479.614990,1745.724976),rotm(0,0,0,0),'02_Newspaper06'); //Next to apartment(?) door on rooftops, near elevator - - //Remove the small boxes in the sewers near the ladder so that bigger boxes don't shuffle into those spots - foreach AllActors(class'DeusExMover',d,'DrainGrate'){break;} - foreach d.RadiusActors(class'#var(prefix)BoxSmall',bs,800){bs.Destroy();} - - //A switch in the sewer swimming path to allow backtracking - AddSwitch( vect(-1518.989136,278.541260,-439.973816), rot(0, 2768, 0), 'DrainGrate'); - - //A keypad in the sewer walking path to allow backtracking - kp = #var(prefix)Keypad2(Spawnm(class'#var(prefix)Keypad2',,,vect(-622.685,497.4295,-60.437), rot(0,-49192,0))); - kp.validCode="2577"; - kp.bToggleLock=False; - kp.Event='DoorToWarehouse'; - //Detach the trigger that opens the basement door when you get near it from inside //Add a button instead foreach AllActors(class'#var(prefix)Trigger',trig){ @@ -168,32 +153,61 @@ function PreFirstEntryMapFixes() if(d.Event == 'BlewFence') break; } class'FillCollisionHole'.static.CreateLine(self, vectm(-2184, 1266.793335, 79.291428), vectm(-2050, 1266.793335, 79.291428), 10, 80, d); + } + + //Both vanilla and Revision: + + //Remove the small boxes in the sewers near the ladder so that bigger boxes don't shuffle into those spots + foreach AllActors(class'DeusExMover',d,'DrainGrate'){break;} + foreach d.RadiusActors(class'#var(prefix)BoxSmall',bs,800){bs.Destroy();} + + //A switch in the sewer swimming path to allow backtracking + AddSwitch( vect(-1518.989136,278.541260,-439.973816), rot(0, 2768, 0), 'DrainGrate'); + + //A keypad in the sewer walking path to allow backtracking + kp = #var(prefix)Keypad2(Spawnm(class'#var(prefix)Keypad2',,,vect(-622.685,497.4295,-60.437), rot(0,-49192,0))); + kp.validCode="2577"; + kp.bToggleLock=False; + kp.Event='DoorToWarehouse'; + + npClass.static.SpawnInfoDevice(self,class'#var(prefix)NewspaperOpen',vectm(1700.929810,-519.988037,57.729870),rotm(0,0,0,0),'02_Newspaper06'); //Joe Greene article, table in room next to break room (near bathrooms) + npClass.static.SpawnInfoDevice(self,class'#var(prefix)NewspaperOpen',vectm(-1727.644775,2479.614990,1745.724976),rotm(0,0,0,0),'02_Newspaper06'); //Next to apartment(?) door on rooftops, near elevator + + class'PlaceholderEnemy'.static.Create(self,vectm(782,-1452,48)); + class'PlaceholderEnemy'.static.Create(self,vectm(1508,-1373,256)); + class'PlaceholderEnemy'.static.Create(self,vectm(1814,-1842,48)); + class'PlaceholderEnemy'.static.Create(self,vectm(-31,-1485,48)); + class'PlaceholderEnemy'.static.Create(self,vectm(1121,-1095,-144)); + class'PlaceholderEnemy'.static.Create(self,vectm(467,-214,-144)); + class'PlaceholderEnemy'.static.Create(self,vectm(-1570,493,1183)); //rooftop + class'PlaceholderEnemy'.static.Create(self,vectm(681,1359,1424)); //rooftop window + class'PlaceholderEnemy'.static.Create(self,vectm(-1820,1248,1616)); //rooftop tower + class'PlaceholderEnemy'.static.Create(self,vectm(-635,1983,1768)); //rooftop chimneys + class'PlaceholderEnemy'.static.Create(self,vectm(-1847,1940,1800)); //rooftop building near elevator + class'PlaceholderEnemy'.static.Create(self,vectm(-972,765,1184)); //rooftop + class'PlaceholderEnemy'.static.Create(self,vectm(110,530,784)); //lower rooftop + class'PlaceholderEnemy'.static.Create(self,vectm(423,565,624)); //even lower rooftop + class'PlaceholderEnemy'.static.Create(self,vectm(875,712,464)); //lowest rooftop + class'PlaceholderEnemy'.static.Create(self,vectm(-5,1415,1192)); //apartment + class'PlaceholderEnemy'.static.Create(self,vectm(-2080,812,48)); //alley + class'PlaceholderEnemy'.static.Create(self,vectm(13,-718,-96)); //Warehouse sewer entrance + class'PlaceholderEnemy'.static.Create(self,vectm(-1555,2756,1584)); //Rooftops near elevator + class'PlaceholderEnemy'.static.Create(self,vectm(-1717,2177,2008)); //roof of rooftop building near elevator + class'PlaceholderEnemy'.static.Create(self,vectm(843,75,480)); //Warehouse garage roof + class'PlaceholderEnemy'.static.Create(self,vectm(1649,-1393,64),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1676,-1535,64),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1334,-1404,64),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(782,-1452,48)); - class'PlaceholderEnemy'.static.Create(self,vectm(1508,-1373,256)); - class'PlaceholderEnemy'.static.Create(self,vectm(1814,-1842,48)); - class'PlaceholderEnemy'.static.Create(self,vectm(-31,-1485,48)); - class'PlaceholderEnemy'.static.Create(self,vectm(1121,-1095,-144)); - class'PlaceholderEnemy'.static.Create(self,vectm(467,-214,-144)); - class'PlaceholderEnemy'.static.Create(self,vectm(-1570,493,1183)); //rooftop - class'PlaceholderEnemy'.static.Create(self,vectm(681,1359,1424)); //rooftop window - class'PlaceholderEnemy'.static.Create(self,vectm(-1820,1248,1616)); //rooftop tower - class'PlaceholderEnemy'.static.Create(self,vectm(-635,1983,1768)); //rooftop chimneys - class'PlaceholderEnemy'.static.Create(self,vectm(-1847,1940,1800)); //rooftop building near elevator - class'PlaceholderEnemy'.static.Create(self,vectm(-972,765,1184)); //rooftop - class'PlaceholderEnemy'.static.Create(self,vectm(110,530,784)); //lower rooftop - class'PlaceholderEnemy'.static.Create(self,vectm(423,565,624)); //even lower rooftop - class'PlaceholderEnemy'.static.Create(self,vectm(875,712,464)); //lowest rooftop - class'PlaceholderEnemy'.static.Create(self,vectm(-5,1415,1192)); //apartment - class'PlaceholderEnemy'.static.Create(self,vectm(-2080,812,48)); //alley - class'PlaceholderEnemy'.static.Create(self,vectm(13,-718,-96)); //Warehouse sewer entrance - class'PlaceholderEnemy'.static.Create(self,vectm(-1555,2756,1584)); //Rooftops near elevator - class'PlaceholderEnemy'.static.Create(self,vectm(-1717,2177,2008)); //roof of rooftop building near elevator - class'PlaceholderEnemy'.static.Create(self,vectm(843,75,480)); //Warehouse garage roof - class'PlaceholderEnemy'.static.Create(self,vectm(1649,-1393,64),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1676,-1535,64),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1334,-1404,64),,'Shitting'); + if(!dxr.flags.IsZeroRando()) { + // this map is too hard + Spawn(class'#var(prefix)AdaptiveArmor',,, vectm(-1890,1840,1775)); //Rooftop apartment hall + Spawn(class'#var(prefix)AdaptiveArmor',,, vectm(700,850,1175)); //Apartment top floor + Spawn(class'#var(prefix)BallisticArmor',,, vectm(-1220,1770,15)); //Next to electrical box + Spawn(class'#var(prefix)BallisticArmor',,, vectm(-2150,595,-240)); //Pipe next to sewer ladder + Spawn(class'#var(prefix)FireExtinguisher',,, vectm(-2190,2230,315)); //Fire Escape near ground entrance + Spawn(class'#var(prefix)FireExtinguisher',,, vectm(-650,1030,15)); //Final ground hall to warehouse (without grenades) } + break; case "02_NYC_HOTEL": if (VanillaMaps){ @@ -383,16 +397,6 @@ function PostFirstEntryMapFixes() AddBox(class'#var(prefix)CrateUnbreakableSmall', vectm(-328.287048, 767.875000, 1072.113770)); } - if(!dxr.flags.IsZeroRando()) { - // this map is too hard - Spawn(class'#var(prefix)AdaptiveArmor',,, GetRandomPositionFine()); - Spawn(class'#var(prefix)AdaptiveArmor',,, GetRandomPositionFine()); - Spawn(class'#var(prefix)BallisticArmor',,, GetRandomPositionFine()); - Spawn(class'#var(prefix)BallisticArmor',,, GetRandomPositionFine()); - Spawn(class'#var(prefix)FireExtinguisher',,, GetRandomPositionFine()); - Spawn(class'#var(prefix)FireExtinguisher',,, GetRandomPositionFine()); - } - break; case "02_NYC_BAR": foreach AllActors(class'Female2', female, 'Female2') { diff --git a/DXRando/DeusEx/Classes/PlaceholderContainer.uc b/DXRando/DeusEx/Classes/PlaceholderContainer.uc index a0de99279..2228c5608 100644 --- a/DXRando/DeusEx/Classes/PlaceholderContainer.uc +++ b/DXRando/DeusEx/Classes/PlaceholderContainer.uc @@ -11,6 +11,15 @@ function PostPostBeginPlay() } } +simulated function PreBeginPlay() +{ + Super.PreBeginPlay(); + +#ifdef locdebug + if("#var(locdebug)"~="PlaceholderContainer") DXRActorsBase(class'DXRActorsBase'.static.Find()).DebugMarkKeyPosition(Location, Name); +#endif +} + defaultproperties { ItemName="Randomizer Placeholder: REPORT BUG!" diff --git a/DXRando/DeusEx/Classes/PlaceholderItem.uc b/DXRando/DeusEx/Classes/PlaceholderItem.uc index e6ed32b8e..8dfe184e1 100644 --- a/DXRando/DeusEx/Classes/PlaceholderItem.uc +++ b/DXRando/DeusEx/Classes/PlaceholderItem.uc @@ -20,6 +20,10 @@ simulated function PreBeginPlay() Super.PreBeginPlay(); +#ifdef locdebug + if("#var(locdebug)"~="PlaceholderItem") DXRActorsBase(class'DXRActorsBase'.static.Find()).DebugMarkKeyPosition(Location, Name); +#endif + if(!class'DXRVersion'.static.VersionIsStable()) { //Make sure placeholders are high enough off the ground so that any swaps can //adjust height based on collision size and still stay out of the ground. diff --git a/Pawns/DeusEx/Classes/PlaceholderEnemy.uc b/Pawns/DeusEx/Classes/PlaceholderEnemy.uc index ab300b83d..2da9b266f 100644 --- a/Pawns/DeusEx/Classes/PlaceholderEnemy.uc +++ b/Pawns/DeusEx/Classes/PlaceholderEnemy.uc @@ -24,6 +24,11 @@ static function PlaceholderEnemy Create(DXRBase a, vector loc, optional int yaw, e.FollowOrders(); } log("Created "$ class'DXRInfo'.static.ActorToString(e) @ Alliance, 'PlaceholderEnemy'); + +#ifdef locdebug + if("#var(locdebug)"~="PlaceholderEnemy") DXRActorsBase(class'DXRActorsBase'.static.Find()).DebugMarkKeyPosition(e.Location, e.Name); +#endif + return e; } From 220058d1fb9a79302c82d675db0f2bb66ad99547 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 17 Nov 2024 19:17:00 -0500 Subject: [PATCH 41/87] Port ALL placeholders to Revision (Containers, Enemies, Items) --- DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 44 +- DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 18 +- DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc | 39 +- DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc | 14 +- DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc | 62 +- DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc | 817 ++++++++++-------- DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc | 8 +- .../DeusEx/Classes/DXRFixupVandenberg.uc | 77 +- 8 files changed, 599 insertions(+), 480 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc index 22d18c8cd..1d53dd81a 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc @@ -186,19 +186,19 @@ function PreFirstEntryMapFixes() //Button to extend sewer platform from the other side AddSwitch( vect(-5233.946289,3601.383545,161.851822), rot(0, 16384, 0), 'MoveableBridge'); + } - class'PlaceholderEnemy'.static.Create(self,vectm(1273,809,48),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1384,805,48),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1273,809,48),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1384,805,48),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-326,1494,48),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-422,1393,48),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(352,1510,48),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(451,1397,48),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1154,170,224),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1044,94,224),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(928,546,224),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(-326,1494,48),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(-422,1393,48),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(352,1510,48),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(451,1397,48),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1154,170,224),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1044,94,224),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(928,546,224),,'Sitting'); - } break; case "03_NYC_AIRFIELD": @@ -328,20 +328,22 @@ function PreFirstEntryMapFixes() } } - Spawn(class'PlaceholderItem',,, vectm(-73,-497.98,42.3)); //Water supply - Spawn(class'PlaceholderItem',,, vectm(-486,206,26)); //Under ramps - Spawn(class'PlaceholderItem',,, vectm(461,206,26)); //Under Ramp 2 - Spawn(class'PlaceholderItem',,, vectm(395,830,74)); //Around Pillars - Spawn(class'PlaceholderItem',,, vectm(-2,633,74));//More pillars - Spawn(class'PlaceholderItem',,, vectm(-465,562,74));//Even more pillars - Spawn(class'PlaceholderItem',,, vectm(-659,990,107)); //Pillar stairs - Spawn(class'PlaceholderItem',,, vectm(661,1000,107)); //other side pillar stairs - Spawn(class'PlaceholderItem',,, vectm(-919,-94,11)); //Other side ramp - Spawn(class'PlaceholderItem',,, vectm(1222,88,11)); //Near start, but bad side - class'PlaceholderEnemy'.static.Create(self,vectm(4030,-2958,112),,'Shitting'); } + + Spawn(class'PlaceholderItem',,, vectm(-73,-497.98,42.3)); //Water supply + Spawn(class'PlaceholderItem',,, vectm(-486,206,26)); //Under ramps + Spawn(class'PlaceholderItem',,, vectm(461,206,26)); //Under Ramp 2 + Spawn(class'PlaceholderItem',,, vectm(395,830,74)); //Around Pillars + Spawn(class'PlaceholderItem',,, vectm(-2,633,74));//More pillars + Spawn(class'PlaceholderItem',,, vectm(-465,562,74));//Even more pillars + Spawn(class'PlaceholderItem',,, vectm(-659,990,107)); //Pillar stairs + Spawn(class'PlaceholderItem',,, vectm(661,1000,107)); //other side pillar stairs + Spawn(class'PlaceholderItem',,, vectm(-919,-94,11)); //Other side ramp + Spawn(class'PlaceholderItem',,, vectm(1222,88,11)); //Near start, but bad side + + break; case "03_NYC_747": diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc index 117003c8a..d4c4caeb9 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc @@ -216,16 +216,6 @@ function PreFirstEntryMapFixes() } } - Spawn(class'PlaceholderItem',,, vectm(110.869766, 337.987732, 1034.306885)); // next to vanilla transmitter computer - class'PlaceholderEnemy'.static.Create(self,vectm(485,1286,64),,'Shitting',,'UNATCO',1); - class'PlaceholderEnemy'.static.Create(self,vectm(672,1268,64),,'Shitting',,'UNATCO',1); - class'PlaceholderEnemy'.static.Create(self,vectm(-435,9,-208),,,,'UNATCO',1); - class'PlaceholderEnemy'.static.Create(self,vectm(1486,1375,-208),,,,'UNATCO',1); - class'PlaceholderEnemy'.static.Create(self,vectm(-438,1120,544),,,,'UNATCO',1); - class'PlaceholderEnemy'.static.Create(self,vectm(-89,1261,304),,,,'UNATCO',1); - } - - if(VanillaMaps) { // allow Paul dialog to repeat, especially if you try to send the signal without aligning the dishes foreach AllActors(class'#var(prefix)DatalinkTrigger', dt, 'SendingSignal') { if(dt.datalinkTag == 'DL_PaulGoodJob') { @@ -260,6 +250,14 @@ function PreFirstEntryMapFixes() } } + Spawn(class'PlaceholderItem',,, vectm(110.869766, 337.987732, 1034.306885)); // next to vanilla transmitter computer + class'PlaceholderEnemy'.static.Create(self,vectm(485,1286,64),,'Shitting',,'UNATCO',1); + class'PlaceholderEnemy'.static.Create(self,vectm(672,1268,64),,'Shitting',,'UNATCO',1); + class'PlaceholderEnemy'.static.Create(self,vectm(-435,9,-208),,,,'UNATCO',1); + class'PlaceholderEnemy'.static.Create(self,vectm(1486,1375,-208),,,,'UNATCO',1); + class'PlaceholderEnemy'.static.Create(self,vectm(-438,1120,544),,,,'UNATCO',1); + class'PlaceholderEnemy'.static.Create(self,vectm(-89,1261,304),,,,'UNATCO',1); + dxr.flagbase.SetBool('DXRando_NSFHQVisited', true,, 5); break; diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc index 00b35082a..8814404bd 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc @@ -118,14 +118,14 @@ function PreFirstEntryMapFixes() cigs.Destroy(); } } - - class'PlaceholderEnemy'.static.Create(self,vectm(-5066,1368,208),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-4981,1521,208),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-3417,1369,208),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(479,3502,-144),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1439,1162,-144),,'Sitting'); } + class'PlaceholderEnemy'.static.Create(self,vectm(-5066,1368,208),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(-4981,1521,208),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(-3417,1369,208),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(479,3502,-144),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1439,1162,-144),,'Sitting'); + break; case "05_NYC_UNATCOHQ": @@ -182,17 +182,24 @@ function PreFirstEntryMapFixes() compublic.SetRotation(rotm(0, -16384, 0, GetRotationOffset(class'#var(prefix)ComputerPublic'))); break; } + } - class'PlaceholderEnemy'.static.Create(self,vectm(144,176,40),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(229,1828,288),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-1451,654,608),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-1662,786,608),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(164,-424,48),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-16,-609,48),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(-182,-859,-16),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1153,1024,-16),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1885,-279,-16),,'Sitting'); - + class'PlaceholderEnemy'.static.Create(self,vectm(164,-424,48),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(-16,-609,48),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(-182,-859,-16),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1153,1024,-16),,'Sitting'); + if (VanillaMaps){ + class'PlaceholderEnemy'.static.Create(self,vectm(144,176,40),,'Shitting'); //Bathroom + class'PlaceholderEnemy'.static.Create(self,vectm(229,1828,288),,'Sitting'); //Breakroom + class'PlaceholderEnemy'.static.Create(self,vectm(-1451,654,608),,'Sitting'); //Lobby Chair + class'PlaceholderEnemy'.static.Create(self,vectm(-1662,786,608),,'Sitting'); //Lobby Chair + class'PlaceholderEnemy'.static.Create(self,vectm(1885,-279,-16),,'Sitting'); //Alex office seats + } else { + class'PlaceholderEnemy'.static.Create(self,vectm(220,190,45),,'Shitting'); //Bathroom + class'PlaceholderEnemy'.static.Create(self,vectm(256,1429,490),,'Sitting'); //Breakroom + class'PlaceholderEnemy'.static.Create(self,vectm(-1980,1086,610),,'Sitting'); //Lobby Chair + class'PlaceholderEnemy'.static.Create(self,vectm(-1739,915,610),,'Sitting'); //Lobby Chair + class'PlaceholderEnemy'.static.Create(self,vectm(1332,-849,-10),,'Sitting'); //Alex office seats } //Spawn some placeholders for new item locations diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc index bc7ca80ed..e86386b85 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM06.uc @@ -148,14 +148,14 @@ function PreFirstEntryMapFixes() foreach AllActors(class'#var(DeusExPrefix)Mover',m,'robobay_01'){ m.bIsDoor=False; } - - class'PlaceholderEnemy'.static.Create(self,vectm(769,-520,144)); - class'PlaceholderEnemy'.static.Create(self,vectm(1620,-87,144)); - class'PlaceholderEnemy'.static.Create(self,vectm(-844,-359,816)); - class'PlaceholderEnemy'.static.Create(self,vectm(2036,122,816)); - class'PlaceholderEnemy'.static.Create(self,vectm(755,-364,144),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(877,-360,144),,'Shitting'); } + class'PlaceholderEnemy'.static.Create(self,vectm(769,-520,144)); + class'PlaceholderEnemy'.static.Create(self,vectm(1620,-87,144)); + class'PlaceholderEnemy'.static.Create(self,vectm(-844,-359,816)); + class'PlaceholderEnemy'.static.Create(self,vectm(2036,122,816)); + class'PlaceholderEnemy'.static.Create(self,vectm(755,-364,144),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(877,-360,144),,'Shitting'); + break; case "06_HONGKONG_TONGBASE": diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc index 3f7fe87aa..1ebd6557c 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM09.uc @@ -94,37 +94,39 @@ function PreFirstEntryMapFixes() SetAllLampsState(false, true, false); // the lamps in zhao's empty room - //Add some new locations for containers and items - Spawn(class'PlaceholderContainer',,, vectm(-3143,274,305)); //Front of ship - Spawn(class'PlaceholderContainer',,, vectm(-3109,-73,305)); //Front of ship - Spawn(class'PlaceholderContainer',,, vectm(-2764,186,305)); //Front of ship - Spawn(class'PlaceholderItem',,, vectm(-3544.129150,112.244072,330.309601)); //Actual Front of ship - Spawn(class'PlaceholderItem',,, vectm(-2538.4,38.5,283)); //Near stuff at front of ship - Spawn(class'PlaceholderItem',,, vectm(-2554.4,-247,283)); //Near stuff at front of ship - Spawn(class'PlaceholderItem',,, vectm(-254,557.8,302)); //Guard Post in shipping container - Spawn(class'PlaceholderItem',,, vectm(3004.5,-453,523)); //Ship kitchen - Spawn(class'PlaceholderItem',,, vectm(1788,107,509)); //Ship bathroom table - Spawn(class'PlaceholderItem',,, vectm(2152,701,519)); //Ship bunkbed - Spawn(class'PlaceholderItem',,, vectm(3000.4,511.28,526.4)); //Ship fume extractor - Spawn(class'PlaceholderItem',,, vectm(1243,-2106,-432)); //Shipyard break room table - Spawn(class'PlaceholderItem',,, vectm(2517.303467,-1384.390381,-250.690430)); //Shipyard showers locker 1 - Spawn(class'PlaceholderItem',,, vectm(2474.926270,-1385.917603,-250.689545)); //Shipyard showers locker 2 - Spawn(class'PlaceholderItem',,, vectm(2431.561279,-1385.172363,-250.690308)); //Shipyard showers locker 3 - Spawn(class'PlaceholderItem',,, vectm(2354.278809,-1383.854980,-250.689301)); //Shipyard showers locker 5 - Spawn(class'PlaceholderItem',,, vectm(2354,-1676,-223)); //Shipyard change room bench - Spawn(class'PlaceholderItem',,, vectm(2605,-1839,-257)); //Shipyard bathroom stall 1 - Spawn(class'PlaceholderItem',,, vectm(2816,-1816,-257)); //Shipyard bathroom stall 2 - Spawn(class'PlaceholderItem',,, vectm(2808,-1511.5,-207)); //Shipyard bathroom sink - Spawn(class'PlaceholderItem',,, vectm(1565.7,-994,-433.7)); //Shipyard ramp control panel - Spawn(class'PlaceholderItem',,, vectm(3361,-1255.9,1187)); //Shipyard crane control room - Spawn(class'PlaceholderContainer',,, vectm(-1248,-1248,-460)); //Shipyard dock near sewer entrance - Spawn(class'PlaceholderContainer',,, vectm(-1185,-1175,-460)); //Shipyard dock near sewer entrance - Spawn(class'PlaceholderContainer',,, vectm(3172,-1248,-460)); //Shipyard dock near maintenance ladder - - class'PlaceholderEnemy'.static.Create(self,vectm(2639,-1817,-220),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(2805,-1824,-220),,'Shitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(2005,-68,512),,'Shitting'); } + + //Add some new locations for containers and items + Spawn(class'PlaceholderContainer',,, vectm(-3143,274,305)); //Front of ship + Spawn(class'PlaceholderContainer',,, vectm(-3109,-73,305)); //Front of ship + Spawn(class'PlaceholderContainer',,, vectm(-2764,186,305)); //Front of ship + Spawn(class'PlaceholderItem',,, vectm(-3544.129150,112.244072,330.309601)); //Actual Front of ship + Spawn(class'PlaceholderItem',,, vectm(-2538.4,38.5,283)); //Near stuff at front of ship + Spawn(class'PlaceholderItem',,, vectm(-2554.4,-247,283)); //Near stuff at front of ship + Spawn(class'PlaceholderItem',,, vectm(-254,557.8,302)); //Guard Post in shipping container + Spawn(class'PlaceholderItem',,, vectm(3004.5,-453,523)); //Ship kitchen + Spawn(class'PlaceholderItem',,, vectm(1788,107,509)); //Ship bathroom table + Spawn(class'PlaceholderItem',,, vectm(2152,701,519)); //Ship bunkbed + Spawn(class'PlaceholderItem',,, vectm(3000.4,511.28,526.4)); //Ship fume extractor + Spawn(class'PlaceholderItem',,, vectm(1243,-2106,-432)); //Shipyard break room table + Spawn(class'PlaceholderItem',,, vectm(2517.303467,-1384.390381,-250.690430)); //Shipyard showers locker 1 + Spawn(class'PlaceholderItem',,, vectm(2474.926270,-1385.917603,-250.689545)); //Shipyard showers locker 2 + Spawn(class'PlaceholderItem',,, vectm(2431.561279,-1385.172363,-250.690308)); //Shipyard showers locker 3 + Spawn(class'PlaceholderItem',,, vectm(2354.278809,-1383.854980,-250.689301)); //Shipyard showers locker 5 + Spawn(class'PlaceholderItem',,, vectm(2354,-1676,-223)); //Shipyard change room bench + Spawn(class'PlaceholderItem',,, vectm(2605,-1839,-257)); //Shipyard bathroom stall 1 + Spawn(class'PlaceholderItem',,, vectm(2816,-1816,-257)); //Shipyard bathroom stall 2 + Spawn(class'PlaceholderItem',,, vectm(2808,-1511.5,-207)); //Shipyard bathroom sink + Spawn(class'PlaceholderItem',,, vectm(1565.7,-994,-433.7)); //Shipyard ramp control panel + Spawn(class'PlaceholderItem',,, vectm(3361,-1255.9,1187)); //Shipyard crane control room + Spawn(class'PlaceholderContainer',,, vectm(-1248,-1248,-460)); //Shipyard dock near sewer entrance + Spawn(class'PlaceholderContainer',,, vectm(-1185,-1175,-460)); //Shipyard dock near sewer entrance + Spawn(class'PlaceholderContainer',,, vectm(3172,-1248,-460)); //Shipyard dock near maintenance ladder + + class'PlaceholderEnemy'.static.Create(self,vectm(2639,-1817,-220),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(2805,-1824,-220),,'Shitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(2005,-68,512),,'Shitting'); + break; case "09_NYC_SHIPBELOW": diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc index 0afc7f3d3..620554c6a 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM15.uc @@ -77,7 +77,7 @@ function FixJockExplosion() #endif } -function PreFirstEntryMapFixes_Bunker() +function PreFirstEntryMapFixes_Bunker(bool isVanilla) { local DeusExMover d; local ComputerSecurity c; @@ -94,146 +94,165 @@ function PreFirstEntryMapFixes_Bunker() local #var(prefix)Fan1 fan; local #var(prefix)WaltonSimons ws; - // doors_lower is for backtracking - AddSwitch( vect(4309.076660, -1230.640503, -7522.298340), rot(0, 16384, 0), 'doors_lower'); + if (isVanilla) { + // doors_lower is for backtracking + AddSwitch( vect(4309.076660, -1230.640503, -7522.298340), rot(0, 16384, 0), 'doors_lower'); - //Change vent entry security computer password so it isn't pre-known - foreach AllActors(class'ComputerSecurity',c){ - if (c.UserList[0].UserName=="SECURITY" && c.UserList[0].Password=="SECURITY"){ - c.UserList[0].Password="NarutoRun"; //They can't stop all of us + //Change vent entry security computer password so it isn't pre-known + foreach AllActors(class'ComputerSecurity',c){ + if (c.UserList[0].UserName=="SECURITY" && c.UserList[0].Password=="SECURITY"){ + c.UserList[0].Password="NarutoRun"; //They can't stop all of us + } } - } - //Move the vent entrance elevator to the bottom to make it slightly less convenient - foreach AllActors(class'SequenceTrigger',st){ - if (st.Tag=='elevator_mtunnel_down'){ - st.Trigger(Self,player()); + //Move the vent entrance elevator to the bottom to make it slightly less convenient + foreach AllActors(class'SequenceTrigger',st){ + if (st.Tag=='elevator_mtunnel_down'){ + st.Trigger(Self,player()); + } } - } - //This door can get stuck if a spiderbot gets jammed into the little bot-bay - foreach AllActors(class'DeusExMover',d){ - if (d.Tag=='bot_door'){ - d.MoverEncroachType=ME_IgnoreWhenEncroach; + //This door can get stuck if a spiderbot gets jammed into the little bot-bay + foreach AllActors(class'DeusExMover',d){ + if (d.Tag=='bot_door'){ + d.MoverEncroachType=ME_IgnoreWhenEncroach; + } } - } - //Swap the button at the top of the elevator to a keypad to make this path a bit more annoying - foreach AllActors(class'Switch2',s2){ - if (s2.Event=='elevator_mtunnel_up'){ - k = Spawn(class'Keypad2',,,s2.Location,s2.Rotation); - k.validCode="17092019"; //September 17th, 2019 - First day of "Storm Area 51" - k.bToggleLock=False; - k.Event='elevator_mtunnel_up'; - s2.event=''; - s2.Destroy(); - break; + //Swap the button at the top of the elevator to a keypad to make this path a bit more annoying + foreach AllActors(class'Switch2',s2){ + if (s2.Event=='elevator_mtunnel_up'){ + k = Spawn(class'Keypad2',,,s2.Location,s2.Rotation); + k.validCode="17092019"; //September 17th, 2019 - First day of "Storm Area 51" + k.bToggleLock=False; + k.Event='elevator_mtunnel_up'; + s2.event=''; + s2.Destroy(); + break; + } } - } - // find the DataLinkTrigger where Page tells you to jump, we use this for finding the door and adjusting its position - foreach AllActors(class'DataLinkTrigger',dlt){ - if (dlt.datalinkTag=='DL_Bunker_Fan') { - //Lock the fan entrance top door - d = DeusExMover(findNearestToActor(class'DeusExMover',dlt)); - if(d == None) break; - d.bLocked=True; - d.bBreakable=True; - d.FragmentClass=Class'DeusEx.MetalFragment'; - d.ExplodeSound1=Sound'DeusExSounds.Generic.MediumExplosion1'; - d.ExplodeSound2=Sound'DeusExSounds.Generic.MediumExplosion2'; - d.minDamageThreshold=25; - d.doorStrength = 0.20; //It's just grating on top of the vent, so it's not that strong - - //Make Page tell you to jump even if you enter the fan entrance through the hatch - loc = dlt.Location; - loc.z -= 100.0; - dlt.SetLocation(loc); - dlt.SetCollisionSize(dlt.CollisionRadius, dlt.CollisionHeight + 100.0); + // find the DataLinkTrigger where Page tells you to jump, we use this for finding the door and adjusting its position + foreach AllActors(class'DataLinkTrigger',dlt){ + if (dlt.datalinkTag=='DL_Bunker_Fan') { + //Lock the fan entrance top door + d = DeusExMover(findNearestToActor(class'DeusExMover',dlt)); + if(d == None) break; + d.bLocked=True; + d.bBreakable=True; + d.FragmentClass=Class'DeusEx.MetalFragment'; + d.ExplodeSound1=Sound'DeusExSounds.Generic.MediumExplosion1'; + d.ExplodeSound2=Sound'DeusExSounds.Generic.MediumExplosion2'; + d.minDamageThreshold=25; + d.doorStrength = 0.20; //It's just grating on top of the vent, so it's not that strong + + //Make Page tell you to jump even if you enter the fan entrance through the hatch + loc = dlt.Location; + loc.z -= 100.0; + dlt.SetLocation(loc); + dlt.SetCollisionSize(dlt.CollisionRadius, dlt.CollisionHeight + 100.0); + break; + } + } + + //Make it only possible to turn the power on, make it impossible to turn the power off again + foreach AllActors(class'Dispatcher',disp,'power_dispatcher'){ + disp.Tag = 'power_dispatcher_real'; break; } - } - //Make it only possible to turn the power on, make it impossible to turn the power off again - foreach AllActors(class'Dispatcher',disp,'power_dispatcher'){ - disp.Tag = 'power_dispatcher_real'; - break; - } + oot = Spawn(class'OnceOnlyTrigger'); + oot.Event='power_dispatcher_real'; + oot.Tag='power_dispatcher'; - oot = Spawn(class'OnceOnlyTrigger'); - oot.Event='power_dispatcher_real'; - oot.Tag='power_dispatcher'; - - //Make sure the power turns on if you get to the bottom - trig = Spawn(class'Trigger',,,vectm(4414,-1035,-7543)); - trig.SetCollisionSize(180,40); - trig.event = 'power_dispatcher'; - - //Make the movers way faster - foreach AllActors(class'DeusExMover',d){ - switch(d.Tag){ - case 'upper_elevator_sw': - case 'upper_elevator_sw_works': - case 'lower_elevator_sw': - case 'lower_elevator_sw_works': - d.MoveTime=0.01; //So fast it just looks like the buttons and stuff swapped instantly, even if you're looking - break; + //Make sure the power turns on if you get to the bottom + trig = Spawn(class'Trigger',,,vectm(4414,-1035,-7543)); + trig.SetCollisionSize(180,40); + trig.event = 'power_dispatcher'; + + //Make the movers way faster + foreach AllActors(class'DeusExMover',d){ + switch(d.Tag){ + case 'upper_elevator_sw': + case 'upper_elevator_sw_works': + case 'lower_elevator_sw': + case 'lower_elevator_sw_works': + d.MoveTime=0.01; //So fast it just looks like the buttons and stuff swapped instantly, even if you're looking + break; + } } - } - //The buttons on the big elevator down to the bunker entrance could be used if you reached around - //the invisible panel that is supposed to block them. Make them actually unusable until the power - //is turned on. - foreach AllActors(class'#var(prefix)Button1',b){ - if (b.Event=='level1'){ - b.Tag='level1_switch'; - class'DXRTriggerEnable'.static.Create(b,'power','level1_switch'); - } else if (b.Event=='level2'){ - b.Tag='level2_switch'; - class'DXRTriggerEnable'.static.Create(b,'power','level2_switch'); + //The buttons on the big elevator down to the bunker entrance could be used if you reached around + //the invisible panel that is supposed to block them. Make them actually unusable until the power + //is turned on. + foreach AllActors(class'#var(prefix)Button1',b){ + if (b.Event=='level1'){ + b.Tag='level1_switch'; + class'DXRTriggerEnable'.static.Create(b,'power','level1_switch'); + } else if (b.Event=='level2'){ + b.Tag='level2_switch'; + class'DXRTriggerEnable'.static.Create(b,'power','level2_switch'); + } } - } - //Button to open blast doors from inside - AddSwitch( vect(2015.894653,1390.463867,-839.793091), rot(0, -16328, 0), 'blast_door'); + //Button to open blast doors from inside + AddSwitch( vect(2015.894653,1390.463867,-839.793091), rot(0, -16328, 0), 'blast_door'); - FixJockExplosion(); + FixJockExplosion(); - Spawn(class'#var(prefix)LiquorBottle',,, vectm(1005.13,2961.26,-480)); //Liquor in a locker, so every mission has alcohol + Spawn(class'#var(prefix)LiquorBottle',,, vectm(1005.13,2961.26,-480)); //Liquor in a locker, so every mission has alcohol - foreach AllActors(class'#var(prefix)Fan1',fan,'Fan_vertical_shaft_1'){ //The "jump, you can make it!" fan - fan.bHighlight=True; - } + foreach AllActors(class'#var(prefix)Fan1',fan,'Fan_vertical_shaft_1'){ //The "jump, you can make it!" fan + fan.bHighlight=True; + } + + foreach AllActors(class'#var(prefix)WaltonSimons',ws){ + ws.MaxProvocations = 0; + ws.AgitationSustainTime = 3600; + ws.AgitationDecayRate = 0; + } + + Spawn(class'PlaceholderItem',,, vectm(-1469.9,3238.7,-213)); //Storage building + Spawn(class'PlaceholderItem',,, vectm(-1565.4,3384.8,-213)); //Back of Storage building + Spawn(class'PlaceholderItem',,, vectm(-1160.9,256.3,-501)); //Tower basement + Spawn(class'PlaceholderItem',,, vectm(1481,3192.7,-468)); //Command building bed + Spawn(class'PlaceholderItem',,, vectm(923.008606,2962.796387,-482.689789)); //Command building locker + Spawn(class'PlaceholderItem',,, vectm(1106.5,-2860.4,-165)); //Hangar building roof + Spawn(class'PlaceholderItem',,, vectm(1104.7,-2925.7,-325)); //Hangar building next to guy who gives up + Spawn(class'PlaceholderItem',,, vectm(520.26,-1482.3,-453)); //Boxes in Hangar + Spawn(class'PlaceholderItem',,, vectm(1017.5,-1842.1,-453)); //Boxes in Hangar near enemies - foreach AllActors(class'#var(prefix)WaltonSimons',ws){ - ws.MaxProvocations = 0; - ws.AgitationSustainTime = 3600; - ws.AgitationDecayRate = 0; + class'PlaceholderEnemy'.static.Create(self,vectm(-2237,3225,-192)); + class'PlaceholderEnemy'.static.Create(self,vectm(4234,3569,-736)); + class'PlaceholderEnemy'.static.Create(self,vectm(3744,-1030,-7481)); + class'PlaceholderEnemy'.static.Create(self,vectm(1341,3154,-464),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(1191,3035,-464),,'Sitting'); + + rg=Spawn(class'#var(prefix)RatGenerator',,, vectm(1658,2544,-522));//Behind Command 24 + rg.MaxCount=1; + rg=Spawn(class'#var(prefix)RatGenerator',,, vectm(4512,3747,-954));//Near generators inside bunker + rg.MaxCount=1; + } else { + Spawn(class'PlaceholderItem',,, vectm(-1738,2863,-210)); //Storage building + Spawn(class'PlaceholderItem',,, vectm(-1816,3048,-210)); //Back of Storage building + Spawn(class'PlaceholderItem',,, vectm(-1154,178,-560)); //Other storage building basement + Spawn(class'PlaceholderItem',,, vectm(1709,2748,-265)); //Command building bed + Spawn(class'PlaceholderItem',,, vectm(1285,2542,-280)); //Command building locker + Spawn(class'PlaceholderItem',,, vectm(1663,-2874,-165)); //Hangar building roof + Spawn(class'PlaceholderItem',,, vectm(1561,-2808,-320)); //Hangar building next to guy who gives up + Spawn(class'PlaceholderItem',,, vectm(1706,-995,-450)); //Boxes in Hangar + Spawn(class'PlaceholderItem',,, vectm(1590,-2074,-450)); //Boxes in Hangar near enemies + + class'PlaceholderEnemy'.static.Create(self,vectm(-2237,3225,-192)); //Behind Comm Building + class'PlaceholderEnemy'.static.Create(self,vectm(4234,3569,-736)); //Roof of power building inside blast doors + class'PlaceholderEnemy'.static.Create(self,vectm(3744,-1030,-7481)); //Bottom of elevator + class'PlaceholderEnemy'.static.Create(self,vectm(1425,2600,-260),,'Sitting'); //Comm building couch 1 + class'PlaceholderEnemy'.static.Create(self,vectm(1540,2750,-260),,'Sitting'); //Comm building couch 2 } - Spawn(class'PlaceholderItem',,, vectm(-1469.9,3238.7,-213)); //Storage building - Spawn(class'PlaceholderItem',,, vectm(-1565.4,3384.8,-213)); //Back of Storage building - Spawn(class'PlaceholderItem',,, vectm(-1160.9,256.3,-501)); //Tower basement - Spawn(class'PlaceholderItem',,, vectm(1481,3192.7,-468)); //Command building bed - Spawn(class'PlaceholderItem',,, vectm(923.008606,2962.796387,-482.689789)); //Command building locker - Spawn(class'PlaceholderItem',,, vectm(1106.5,-2860.4,-165)); //Hangar building roof - Spawn(class'PlaceholderItem',,, vectm(1104.7,-2925.7,-325)); //Hangar building next to guy who gives up - Spawn(class'PlaceholderItem',,, vectm(520.26,-1482.3,-453)); //Boxes in Hangar - Spawn(class'PlaceholderItem',,, vectm(1017.5,-1842.1,-453)); //Boxes in Hangar near enemies - - class'PlaceholderEnemy'.static.Create(self,vectm(-2237,3225,-192)); - class'PlaceholderEnemy'.static.Create(self,vectm(4234,3569,-736)); - class'PlaceholderEnemy'.static.Create(self,vectm(3744,-1030,-7481)); - class'PlaceholderEnemy'.static.Create(self,vectm(1341,3154,-464),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(1191,3035,-464),,'Sitting'); - - rg=Spawn(class'#var(prefix)RatGenerator',,, vectm(1658,2544,-522));//Behind Command 24 - rg.MaxCount=1; - rg=Spawn(class'#var(prefix)RatGenerator',,, vectm(4512,3747,-954));//Near generators inside bunker - rg.MaxCount=1; } -function PreFirstEntryMapFixes_Final() +function PreFirstEntryMapFixes_Final(bool isVanilla) { local DeusExMover d; local Switch1 s; @@ -246,211 +265,259 @@ function PreFirstEntryMapFixes_Final() local OnceOnlyTrigger oot; local int i; - AddSwitch( vect(-5112.805176, -2495.639893, -1364), rot(0, 16384, 0), 'blastdoor_final');// just in case the dialog fails - AddSwitch( vect(-5112.805176, -2530.276123, -1364), rot(0, -16384, 0), 'blastdoor_final');// for backtracking - AddSwitch( vect(-3745, -1114, -1950), rot(0,0,0), 'Page_Blastdoors' ); - - foreach AllActors(class'DeusExMover', d, 'doors_lower') { - d.bLocked = false; - d.bHighlight = true; - d.bFrobbable = true; - } + if (isVanilla) { + AddSwitch( vect(-5112.805176, -2495.639893, -1364), rot(0, 16384, 0), 'blastdoor_final');// just in case the dialog fails + AddSwitch( vect(-5112.805176, -2530.276123, -1364), rot(0, -16384, 0), 'blastdoor_final');// for backtracking + AddSwitch( vect(-3745, -1114, -1950), rot(0,0,0), 'Page_Blastdoors' ); - //Fix the Tong Ending skip for real for real - foreach AllActors(class'Switch1',s){ - if (s.Event=='destroy_generator'){ - s.Tag='destroy_generator_switch'; - class'DXRTriggerEnable'.static.Create(s,'Generator_overload','destroy_generator_switch'); + foreach AllActors(class'DeusExMover', d, 'doors_lower') { + d.bLocked = false; + d.bHighlight = true; + d.bFrobbable = true; } - } - //but like... for REAL - foreach AllActors(class'Switch2',s2){ - if (s2.Event=='button_1'){ - s2.Event = 'button_1_once'; - oot = Spawn(class'OnceOnlyTrigger',, 'button_1_once'); - oot.Event = 'button_1'; - s2.Tag='button_1_switch'; - class'DXRTriggerEnable'.static.Create(s2,'Generator_panel','button_1_switch'); - } else if (s2.Event=='button_2'){ - s2.Event = 'button_2_once'; - oot = Spawn(class'OnceOnlyTrigger',, 'button_2_once'); - oot.Event = 'button_2'; - s2.Tag='button_2_switch'; - class'DXRTriggerEnable'.static.Create(s2,'injector2','button_2_switch'); - } else if (s2.Event=='button_3'){ - s2.Event = 'button_3_once'; - oot = Spawn(class'OnceOnlyTrigger',, 'button_3_once'); - oot.Event = 'button_3'; - s2.Tag='button_3_switch'; - class'DXRTriggerEnable'.static.Create(s2,'injector3','button_3_switch'); + //Fix the Tong Ending skip for real for real + foreach AllActors(class'Switch1',s){ + if (s.Event=='destroy_generator'){ + s.Tag='destroy_generator_switch'; + class'DXRTriggerEnable'.static.Create(s,'Generator_overload','destroy_generator_switch'); + } } - } - // make the Tong ending flag trigger not based on collision - foreach AllActors(class'FlagTrigger', ft, 'FlagTrigger') { - if(ft.event != 'Generator_overload') continue; - ft.Tag = 'Check_Generator_overload'; - ft.SetCollision(false,false,false); - } + //but like... for REAL + foreach AllActors(class'Switch2',s2){ + if (s2.Event=='button_1'){ + s2.Event = 'button_1_once'; + oot = Spawn(class'OnceOnlyTrigger',, 'button_1_once'); + oot.Event = 'button_1'; + s2.Tag='button_1_switch'; + class'DXRTriggerEnable'.static.Create(s2,'Generator_panel','button_1_switch'); + } else if (s2.Event=='button_2'){ + s2.Event = 'button_2_once'; + oot = Spawn(class'OnceOnlyTrigger',, 'button_2_once'); + oot.Event = 'button_2'; + s2.Tag='button_2_switch'; + class'DXRTriggerEnable'.static.Create(s2,'injector2','button_2_switch'); + } else if (s2.Event=='button_3'){ + s2.Event = 'button_3_once'; + oot = Spawn(class'OnceOnlyTrigger',, 'button_3_once'); + oot.Event = 'button_3'; + s2.Tag='button_3_switch'; + class'DXRTriggerEnable'.static.Create(s2,'injector3','button_3_switch'); + } + } - foreach AllActors(class'Dispatcher', disp) { - switch(disp.Tag) { - case 'button_3': - disp.OutEvents[6] = 'Check_Generator_overload'; - // fallthrough - case 'button_1': - case 'button_2': - if(dxr.flags.moresettings.splits_overlay > 0) {// also make Tong ending a little faster - for(i=0; i 0) {// also make Tong ending a little faster + for(i=0; i 0) { - foreach AllActors(class'DeusExMover', d) { - switch(d.Tag) { - case 'Generator_panel': - case 'injector2': - case 'injector3': - case 'Generator_overload': - d.MoveTime /= 2; - break; + // also make Tong ending a little faster + if(dxr.flags.moresettings.splits_overlay > 0) { + foreach AllActors(class'DeusExMover', d) { + switch(d.Tag) { + case 'Generator_panel': + case 'injector2': + case 'injector3': + case 'Generator_overload': + d.MoveTime /= 2; + break; + } } } - } - //Generator Failsafe buttons should spit out some sort of message if the coolant isn't cut - //start_buzz1 and start_buzz2 are the tags that get hit when the coolant isn't cut - se = Spawn(class'SpecialEvent',,'start_buzz1'); - se.Message = "Coolant levels normal - Failsafe cannot be disabled"; - se = Spawn(class'SpecialEvent',,'start_buzz2'); - se.Message = "Coolant levels normal - Failsafe cannot be disabled"; + //Generator Failsafe buttons should spit out some sort of message if the coolant isn't cut + //start_buzz1 and start_buzz2 are the tags that get hit when the coolant isn't cut + se = Spawn(class'SpecialEvent',,'start_buzz1'); + se.Message = "Coolant levels normal - Failsafe cannot be disabled"; + se = Spawn(class'SpecialEvent',,'start_buzz2'); + se.Message = "Coolant levels normal - Failsafe cannot be disabled"; - //Increase the radius of the datalink that opens the sector 4 blast doors - foreach AllActors(class'DataLinkTrigger',dlt){ - if (dlt.datalinkTag=='DL_Helios_Door2'){ - dlt.SetCollisionSize(900,dlt.CollisionHeight); + //Increase the radius of the datalink that opens the sector 4 blast doors + foreach AllActors(class'DataLinkTrigger',dlt){ + if (dlt.datalinkTag=='DL_Helios_Door2'){ + dlt.SetCollisionSize(900,dlt.CollisionHeight); + } } - } - //There's a trigger for this at the top of the elevator, but it has collide actors false. - //Easier to just spawn a new one near the elevator so you can actually hear it before - //the game is over. - dlt = Spawn(class'DataLinkTrigger',,,vectm(-3988,1215,-1542)); - dlt.SetCollisionSize(200,40); - dlt.datalinkTag='DL_Final_Helios07'; + //There's a trigger for this at the top of the elevator, but it has collide actors false. + //Easier to just spawn a new one near the elevator so you can actually hear it before + //the game is over. + dlt = Spawn(class'DataLinkTrigger',,,vectm(-3988,1215,-1542)); + dlt.SetCollisionSize(200,40); + dlt.datalinkTag='DL_Final_Helios07'; - foreach AllActors(class'SkillAwardTrigger',sat){ - if (sat.awardMessage=="Critical Loctaion Bonus"){ - sat.awardMessage="Critical Location Bonus"; - break; + foreach AllActors(class'SkillAwardTrigger',sat){ + if (sat.awardMessage=="Critical Loctaion Bonus"){ + sat.awardMessage="Critical Location Bonus"; + break; + } } - } - Spawn(class'PlaceholderItem',,, vectm(-4185.2,-207.35,-1386)); //Helios storage room - Spawn(class'PlaceholderItem',,, vectm(-4346.5,-1404.5,-2020)); //Storage room near sector 4 door - Spawn(class'PlaceholderItem',,, vectm(-5828.7,-412.6,-1514)); //Storage room on stairs to sector 4 - Spawn(class'PlaceholderItem',,, vectm(-4984.8,-3713.8,-1354)); //On top of control panels near cooling pool near entrance - Spawn(class'PlaceholderItem',,, vectm(-5242.45,-2675.55,-1364)); //Boxes right near Tong at entrance - Spawn(class'PlaceholderItem',,, vectm(-3110.8,-4931.9,-1555)); //Reactor control room - - Spawn(class'PlaceholderContainer',,, vectm(-4100,2345,-384)); //Arms under Helios - Spawn(class'PlaceholderContainer',,, vectm(-3892,2397,1147)); //Arms under Helios - Spawn(class'PlaceholderContainer',,, vectm(-4253.9,771.4,-1564)); //Under staircase near Helios - Spawn(class'PlaceholderContainer',,, vectm(-3040,-4960,-1607)); //Reactor control room - - class'PlaceholderEnemy'.static.Create(self,vectm(-5113,-989,-1995)); - class'PlaceholderEnemy'.static.Create(self,vectm(-5899,-1112,-1323)); - class'PlaceholderEnemy'.static.Create(self,vectm(-4795,-1596,-1357)); + Spawn(class'PlaceholderItem',,, vectm(-4185.2,-207.35,-1386)); //Helios storage room + Spawn(class'PlaceholderItem',,, vectm(-4346.5,-1404.5,-2020)); //Storage room near sector 4 door + Spawn(class'PlaceholderItem',,, vectm(-5828.7,-412.6,-1514)); //Storage room on stairs to sector 4 + Spawn(class'PlaceholderItem',,, vectm(-4984.8,-3713.8,-1354)); //On top of control panels near cooling pool near entrance + Spawn(class'PlaceholderItem',,, vectm(-5242.45,-2675.55,-1364)); //Boxes right near Tong at entrance + Spawn(class'PlaceholderItem',,, vectm(-3110.8,-4931.9,-1555)); //Reactor control room + + Spawn(class'PlaceholderContainer',,, vectm(-4100,2345,-384)); //Arms under Helios + Spawn(class'PlaceholderContainer',,, vectm(-3892,2397,1147)); //Arms under Helios + Spawn(class'PlaceholderContainer',,, vectm(-4253.9,771.4,-1564)); //Under staircase near Helios + Spawn(class'PlaceholderContainer',,, vectm(-3040,-4960,-1607)); //Reactor control room + + class'PlaceholderEnemy'.static.Create(self,vectm(-5113,-989,-1995)); + class'PlaceholderEnemy'.static.Create(self,vectm(-5899,-1112,-1323)); + class'PlaceholderEnemy'.static.Create(self,vectm(-4795,-1596,-1357)); + + } else { + Spawn(class'PlaceholderItem',,, vectm(-4151,-173,-1350)); //Helios storage room + Spawn(class'PlaceholderItem',,, vectm(-4140,-632,-2000)); //Storage room near sector 4 door + Spawn(class'PlaceholderItem',,, vectm(-5796,-393,-1480)); //Storage room on stairs to sector 4 + Spawn(class'PlaceholderItem',,, vectm(-5132.3,-3933.3,-1235)); //On top of control panels near cooling pool near entrance + Spawn(class'PlaceholderItem',,, vectm(-5211,-2640,-1330)); //Boxes right near Tong at entrance + Spawn(class'PlaceholderItem',,, vectm(-3223,-5792,-1520)); //Reactor control room + + + Spawn(class'PlaceholderContainer',,, vectm(-4055,2350,145)); //Arms under Helios + Spawn(class'PlaceholderContainer',,, vectm(-4055,2350,-360)); //Arms under Helios + Spawn(class'PlaceholderContainer',,, vectm(-4253.9,771.4,-1564)); //Under staircase near Helios + Spawn(class'PlaceholderContainer',,, vectm(-3040,-4960,-1730)); //Reactor control room + + class'PlaceholderEnemy'.static.Create(self,vectm(-5113,-989,-1995)); + class'PlaceholderEnemy'.static.Create(self,vectm(-5899,-1112,-1323)); + class'PlaceholderEnemy'.static.Create(self,vectm(-4795,-1596,-1357)); + } } -function PreFirstEntryMapFixes_Entrance() +function PreFirstEntryMapFixes_Entrance(bool isVanilla) { local DeusExMover d; local ComputerSecurity c; local #var(prefix)FlagTrigger ft; - foreach AllActors(class'DeusExMover', d, 'DeusExMover') { - if( d.Name == 'DeusExMover20' ) d.Tag = 'final_door'; - } - AddSwitch( vect(-867.193420, 244.553101, 17.622702), rot(0, 32768, 0), 'final_door'); + if (isVanilla) { + foreach AllActors(class'DeusExMover', d, 'DeusExMover') { + if( d.Name == 'DeusExMover20' ) d.Tag = 'final_door'; + } + AddSwitch( vect(-867.193420, 244.553101, 17.622702), rot(0, 32768, 0), 'final_door'); - //Button to call elevator to bottom of shaft - AddSwitch( vect(-1715.487427,493.516571,-1980.708008), rot(0, 32768, 0), 'elevator_floor2'); + //Button to call elevator to bottom of shaft + AddSwitch( vect(-1715.487427,493.516571,-1980.708008), rot(0, 32768, 0), 'elevator_floor2'); - foreach AllActors(class'DeusExMover', d, 'doors_lower') { - d.bLocked = false; - d.bHighlight = true; - d.bFrobbable = true; - } + foreach AllActors(class'DeusExMover', d, 'doors_lower') { + d.bLocked = false; + d.bHighlight = true; + d.bFrobbable = true; + } - //Change break room security computer password so it isn't pre-known - //This code isn't written anywhere, so you shouldn't have knowledge of it - foreach AllActors(class'ComputerSecurity',c){ - if (c.UserList[0].UserName=="SECURITY" && c.UserList[0].Password=="SECURITY"){ - c.UserList[0].Password="TinFoilHat"; + //Change break room security computer password so it isn't pre-known + //This code isn't written anywhere, so you shouldn't have knowledge of it + foreach AllActors(class'ComputerSecurity',c){ + if (c.UserList[0].UserName=="SECURITY" && c.UserList[0].Password=="SECURITY"){ + c.UserList[0].Password="TinFoilHat"; + } } - } - //Make the floor hatch near Morgan easier to get into - //If you make this breakable, the explosion right next - //to it will destroy it every time. Maybe it could - //only become breakable after the explosion happens? - foreach AllActors(class'DeusExMover', d) { - if (d.name=='DeusExMover13'){ - d.lockStrength=0.25; + //Make the floor hatch near Morgan easier to get into + //If you make this breakable, the explosion right next + //to it will destroy it every time. Maybe it could + //only become breakable after the explosion happens? + foreach AllActors(class'DeusExMover', d) { + if (d.name=='DeusExMover13'){ + d.lockStrength=0.25; + } } - } - //After Bob says "I'm sending up the man who did the job", the elevator call button will also open the doors - ft=Spawn(class'#var(prefix)FlagTrigger'); - ft.SetCollision(False,False,False); - ft.bSetFlag=False; - ft.bTrigger=True; - ft.FlagName='DL_elevator_Played'; - ft.flagValue=True; - ft.Tag='elevator_floor1'; - ft.Event='elevator_doors'; - - Spawn(class'#var(prefix)Liquor40oz',,, vectm(4585,72,-174)); //Beers on the table in the sleeping quarters - Spawn(class'#var(prefix)Liquor40oz',,, vectm(4611,27,-174)); - - Spawn(class'PlaceholderItem',,, vectm(1542.28,-2080,-349)); //Near karkians under Everett - Spawn(class'PlaceholderItem',,, vectm(3310.14,-2512.35,10.3)); //Boxes right at entrance - Spawn(class'PlaceholderItem',,, vectm(4022.8,-710.4,-149)); //Boxes near barracks - Spawn(class'PlaceholderItem',,, vectm(4811,63.7,-173)); //Barracks table - Spawn(class'PlaceholderItem',,, vectm(3262.9,1492.9,-149)); //Boxes out front of rec room - Spawn(class'PlaceholderItem',,, vectm(3163.7,2306.2,-169)); //Rec Room ping pong table - Spawn(class'PlaceholderItem',,, vectm(-404.7,1624.6,-349)); //Near corpse under cherry picker - Spawn(class'PlaceholderItem',,, vectm(18.6,1220.4,-149)); //Boxes near cherry picker - Spawn(class'PlaceholderItem',,, vectm(-1712.9,191.25,26)); //In front of ambush elevator - - class'PlaceholderEnemy'.static.Create(self,vectm(4623,210,-176)); - class'PlaceholderEnemy'.static.Create(self,vectm(3314,2276,-176)); - class'PlaceholderEnemy'.static.Create(self,vectm(-190,-694,-180)); - class'PlaceholderEnemy'.static.Create(self,vectm(-444,-171,-16)); - class'PlaceholderEnemy'.static.Create(self,vectm(-394,516,-16)); - class'PlaceholderEnemy'.static.Create(self,vectm(-105,769,-176)); - class'PlaceholderEnemy'.static.Create(self,vectm(-116,432,-176)); - class'PlaceholderEnemy'.static.Create(self,vectm(-63,-147,-176)); - class'PlaceholderEnemy'.static.Create(self,vectm(-578,313,-16)); - - class'PlaceholderEnemy'.static.Create(self,vectm(3286,2750,-176),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(3316,2527,-176),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(3297,2079,-176),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(2930,2106,-176),,'Sitting'); - class'PlaceholderEnemy'.static.Create(self,vectm(2977,2306,-176),,'Sitting'); + //After Bob says "I'm sending up the man who did the job", the elevator call button will also open the doors + ft=Spawn(class'#var(prefix)FlagTrigger'); + ft.SetCollision(False,False,False); + ft.bSetFlag=False; + ft.bTrigger=True; + ft.FlagName='DL_elevator_Played'; + ft.flagValue=True; + ft.Tag='elevator_floor1'; + ft.Event='elevator_doors'; + + Spawn(class'#var(prefix)Liquor40oz',,, vectm(4585,72,-174)); //Beers on the table in the sleeping quarters + Spawn(class'#var(prefix)Liquor40oz',,, vectm(4611,27,-174)); + + Spawn(class'PlaceholderItem',,, vectm(1542.28,-2080,-349)); //Near karkians under Everett + Spawn(class'PlaceholderItem',,, vectm(3310.14,-2512.35,10.3)); //Boxes right at entrance + Spawn(class'PlaceholderItem',,, vectm(4022.8,-710.4,-149)); //Boxes near barracks + Spawn(class'PlaceholderItem',,, vectm(4811,63.7,-173)); //Barracks table + Spawn(class'PlaceholderItem',,, vectm(3262.9,1492.9,-149)); //Boxes out front of rec room + Spawn(class'PlaceholderItem',,, vectm(3163.7,2306.2,-169)); //Rec Room ping pong table + Spawn(class'PlaceholderItem',,, vectm(-404.7,1624.6,-349)); //Near corpse under cherry picker + Spawn(class'PlaceholderItem',,, vectm(18.6,1220.4,-149)); //Boxes near cherry picker + Spawn(class'PlaceholderItem',,, vectm(-1712.9,191.25,26)); //In front of ambush elevator + + class'PlaceholderEnemy'.static.Create(self,vectm(4623,210,-176)); + class'PlaceholderEnemy'.static.Create(self,vectm(3314,2276,-176)); + class'PlaceholderEnemy'.static.Create(self,vectm(-190,-694,-180)); + class'PlaceholderEnemy'.static.Create(self,vectm(-444,-171,-16)); + class'PlaceholderEnemy'.static.Create(self,vectm(-394,516,-16)); + class'PlaceholderEnemy'.static.Create(self,vectm(-105,769,-176)); + class'PlaceholderEnemy'.static.Create(self,vectm(-116,432,-176)); + class'PlaceholderEnemy'.static.Create(self,vectm(-63,-147,-176)); + class'PlaceholderEnemy'.static.Create(self,vectm(-578,313,-16)); + + class'PlaceholderEnemy'.static.Create(self,vectm(3286,2750,-176),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(3316,2527,-176),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(3297,2079,-176),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(2930,2106,-176),,'Sitting'); + class'PlaceholderEnemy'.static.Create(self,vectm(2977,2306,-176),,'Sitting'); + + } else { + Spawn(class'PlaceholderItem',,, vectm(1584,-628,-350)); //Near karkians under Everett + Spawn(class'PlaceholderItem',,, vectm(4078,-2469,10)); //Boxes right at entrance + Spawn(class'PlaceholderItem',,, vectm(4022.8,-710.4,-149)); //Boxes near barracks + Spawn(class'PlaceholderItem',,, vectm(3035,-400,-170)); //Barracks table + Spawn(class'PlaceholderItem',,, vectm(3262.9,1492.9,-149)); //Boxes out front of rec room + Spawn(class'PlaceholderItem',,, vectm(2685,1960,45)); //Rec Room ping pong table + Spawn(class'PlaceholderItem',,, vectm(-1517,124,-350)); //Near corpse under cherry picker + Spawn(class'PlaceholderItem',,, vectm(-844,26,-150)); //Boxes near cherry picker + Spawn(class'PlaceholderItem',,, vectm(-4240,165,-145)); //In front of ambush elevator + + class'PlaceholderEnemy'.static.Create(self,vectm(2600,650,-175)); //Near sleeping pods + class'PlaceholderEnemy'.static.Create(self,vectm(3500,3290,45)); //BBall Viewing Room + class'PlaceholderEnemy'.static.Create(self,vectm(3000,3700,-175)); //Basketball court + class'PlaceholderEnemy'.static.Create(self,vectm(-1250,-450,-175)); //Area in front of locked door + class'PlaceholderEnemy'.static.Create(self,vectm(-2050,575,-175)); //Area in front of locked door + class'PlaceholderEnemy'.static.Create(self,vectm(-2000,-400,-175)); //Area in front of locked door + class'PlaceholderEnemy'.static.Create(self,vectm(4030,2630,-175)); //Near van door + class'PlaceholderEnemy'.static.Create(self,vectm(900,600,-175)); //Hallway to locked door room + class'PlaceholderEnemy'.static.Create(self,vectm(-2500,200,-175)); //Right in front of locked door + class'PlaceholderEnemy'.static.Create(self,vectm(1780,3200,-135)); //Diving Board + class'PlaceholderEnemy'.static.Create(self,vectm(4300,65,-175)); //Side tunnel opposite sleeping area + class'PlaceholderEnemy'.static.Create(self,vectm(2600,-750,-180)); //Showers + class'PlaceholderEnemy'.static.Create(self,vectm(3400,-800,-180)); //Locker Rooms + class'PlaceholderEnemy'.static.Create(self,vectm(2900,2100,45)); //Near pingpong table + } } -function PreFirstEntryMapFixes_Page() +function PreFirstEntryMapFixes_Page(bool isVanilla) { local ComputerSecurity c; local Keypad k; @@ -464,94 +531,91 @@ function PreFirstEntryMapFixes_Page() local string cloneCubeText[4]; local AmbientSound as; local DXRAmbientSoundTrigger ast; - local bool VanillaMaps; - - VanillaMaps = class'DXRMapVariants'.static.IsVanillaMaps(player()); - // fix in-fighting - foreach AllActors(class'#var(prefix)ScriptedPawn', sp) { - if(#var(prefix)MJ12Commando(sp) != None && sp.Alliance=='') { - sp.SetAlliance('MJ12'); - } - if(sp.Alliance=='') { - continue;// probably the security bots you can release + if (isVanilla) { + // fix in-fighting + foreach AllActors(class'#var(prefix)ScriptedPawn', sp) { + if(#var(prefix)MJ12Commando(sp) != None && sp.Alliance=='') { + sp.SetAlliance('MJ12'); + } + if(sp.Alliance=='') { + continue;// probably the security bots you can release + } + sp.ChangeAlly('MJ12', 1, true); + sp.ChangeAlly('Karkian', 1, true); + sp.ChangeAlly('Gray', 1, true); + sp.ChangeAlly('Greasel', 1, true); + sp.ChangeAlly('Subject1', 1, true); + sp.ChangeAlly('bots', 1, true); + } + + foreach AllActors(class'ComputerSecurity', c) { + if( c.UserList[0].userName != "graytest" || c.UserList[0].Password != "Lab12" ) continue; + c.UserList[0].userName = "Lab 12"; + c.UserList[0].Password = "graytest"; + } + foreach AllActors(class'Keypad', k) { + if( k.validCode == "9248" ) + k.validCode = "2242"; + else if (k.validCode == "6188") + k.validCode = "6765"; + } + foreach AllActors(class'Switch1',s){ + if (s.Name == 'Switch21'){ + s.Event = 'door_page_overlook'; + } else if (s.Event=='kill_page'){ + //Fix the Illuminati ending skip + s.Tag='kill_page_switch'; + class'DXRTriggerEnable'.static.Create(s,'Page_button','kill_page_switch'); + } } - sp.ChangeAlly('MJ12', 1, true); - sp.ChangeAlly('Karkian', 1, true); - sp.ChangeAlly('Gray', 1, true); - sp.ChangeAlly('Greasel', 1, true); - sp.ChangeAlly('Subject1', 1, true); - sp.ChangeAlly('bots', 1, true); - } - foreach AllActors(class'ComputerSecurity', c) { - if( c.UserList[0].userName != "graytest" || c.UserList[0].Password != "Lab12" ) continue; - c.UserList[0].userName = "Lab 12"; - c.UserList[0].Password = "graytest"; - } - foreach AllActors(class'Keypad', k) { - if( k.validCode == "9248" ) - k.validCode = "2242"; - else if (k.validCode == "6188") - k.validCode = "6765"; - } - foreach AllActors(class'Switch1',s){ - if (s.Name == 'Switch21'){ - s.Event = 'door_page_overlook'; - } else if (s.Event=='kill_page'){ - //Fix the Illuminati ending skip - s.Tag='kill_page_switch'; - class'DXRTriggerEnable'.static.Create(s,'Page_button','kill_page_switch'); + // fix the Helios ending skip + foreach AllActors(class'ComputerPersonal', comp_per) { + if(comp_per.Name == 'ComputerPersonal0') { + comp_per.Tag = 'router_computer'; + class'DXRTriggerEnable'.static.Create(comp_per, 'router_door', 'router_computer'); + break; + } } - } - // fix the Helios ending skip - foreach AllActors(class'ComputerPersonal', comp_per) { - if(comp_per.Name == 'ComputerPersonal0') { - comp_per.Tag = 'router_computer'; - class'DXRTriggerEnable'.static.Create(comp_per, 'router_door', 'router_computer'); - break; + if(!dxr.flags.IsZeroRando()) { + //Rather than duplicating the existing cubes, add new clone text so there are more possibilities + cloneCubeLoc[0]=vectm(6197.620117,-8455.201172,-5117.649902); //Weird little window near broken door (on Page side) + cloneCubeLoc[1]=vectm(5663.339355,-7955.502441,-5557.624512); //On boxes outside middle level UC door + cloneCubeLoc[2]=vectm(6333.112305,-7241.149414,-5557.636719); //On boxes right near middle level blue fusion reactor + cloneCubeLoc[3]=vectm(7687.463867,-8845.201172,-5940.627441); //On control panel that has flame button in coolant area + cloneCubeText[0]="SUBJECT MJID-5493OP2702|nINCEPT DATE: 3/19/65|nASSIGNED BIRTH DATE: 7/20/41|nASSIGNED BIRTH NAME: Stan Carnegie|nBASE GENETIC SAMPLE: SIMONSWALTON32A|nPROFILE: AABCAAB|nVITALS: 45/80/0.89/33/1.2|n|n [[[[[PENDING]]]]]"; + cloneCubeText[1]="SUBJECT MJID-2938BU3209|nINCEPT DATE: 7/30/66|nASSIGNED BIRTH DATE: 9/07/40|nASSIGNED BIRTH NAME: Greg Pequod|nBASE GENETIC SAMPLE: |nPAGEBOB86G|nPROFILE: BAABACA|nVITALS: 51/72/1.02/20/2.1|n|n [[[[[PENDING]]]]]"; + cloneCubeText[2]="SUBJECT MJID-3209FG2938|nINCEPT DATE: 7/30/66|nASSIGNED BIRTH DATE: 9/07/40|nASSIGNED BIRTH NAME: Jacob Queequeg|nBASE GENETIC SAMPLE: STRONGHOWARD52L|nPROFILE: CAAGATA|nVITALS: 52/73/1.01/20/2.2|n|n [[[[[PENDING]]]]]"; + cloneCubeText[3]="SUBJECT MJID-3209FG2938|nINCEPT DATE: 6/17/54|nASSIGNED BIRTH DATE: 11/30/35|nASSIGNED BIRTH NAME: Jason Frudnick|nBASE GENETIC SAMPLE: GARDNERKANE88J|nPROFILE: BABTAGA|nVITALS: 51/81/1.13/20/2.0|n|n [[[[[PENDING]]]]]"; + for(i=0;i<4;i++){ + SpawnDatacubePlaintext(cloneCubeLoc[i],rotm(0,0,0,0),cloneCubeText[i],"CloneCube"$string(i+1)); + } } - } - if(!dxr.flags.IsZeroRando()) { - //Rather than duplicating the existing cubes, add new clone text so there are more possibilities - cloneCubeLoc[0]=vectm(6197.620117,-8455.201172,-5117.649902); //Weird little window near broken door (on Page side) - cloneCubeLoc[1]=vectm(5663.339355,-7955.502441,-5557.624512); //On boxes outside middle level UC door - cloneCubeLoc[2]=vectm(6333.112305,-7241.149414,-5557.636719); //On boxes right near middle level blue fusion reactor - cloneCubeLoc[3]=vectm(7687.463867,-8845.201172,-5940.627441); //On control panel that has flame button in coolant area - cloneCubeText[0]="SUBJECT MJID-5493OP2702|nINCEPT DATE: 3/19/65|nASSIGNED BIRTH DATE: 7/20/41|nASSIGNED BIRTH NAME: Stan Carnegie|nBASE GENETIC SAMPLE: SIMONSWALTON32A|nPROFILE: AABCAAB|nVITALS: 45/80/0.89/33/1.2|n|n [[[[[PENDING]]]]]"; - cloneCubeText[1]="SUBJECT MJID-2938BU3209|nINCEPT DATE: 7/30/66|nASSIGNED BIRTH DATE: 9/07/40|nASSIGNED BIRTH NAME: Greg Pequod|nBASE GENETIC SAMPLE: |nPAGEBOB86G|nPROFILE: BAABACA|nVITALS: 51/72/1.02/20/2.1|n|n [[[[[PENDING]]]]]"; - cloneCubeText[2]="SUBJECT MJID-3209FG2938|nINCEPT DATE: 7/30/66|nASSIGNED BIRTH DATE: 9/07/40|nASSIGNED BIRTH NAME: Jacob Queequeg|nBASE GENETIC SAMPLE: STRONGHOWARD52L|nPROFILE: CAAGATA|nVITALS: 52/73/1.01/20/2.2|n|n [[[[[PENDING]]]]]"; - cloneCubeText[3]="SUBJECT MJID-3209FG2938|nINCEPT DATE: 6/17/54|nASSIGNED BIRTH DATE: 11/30/35|nASSIGNED BIRTH NAME: Jason Frudnick|nBASE GENETIC SAMPLE: GARDNERKANE88J|nPROFILE: BABTAGA|nVITALS: 51/81/1.13/20/2.0|n|n [[[[[PENDING]]]]]"; - for(i=0;i<4;i++){ - SpawnDatacubePlaintext(cloneCubeLoc[i],rotm(0,0,0,0),cloneCubeText[i],"CloneCube"$string(i+1)); + if(!dxr.flags.IsZeroRando()) { + //Add a switch to manually trigger the infolink that gives you the Helios computer password + AddSwitch( vect(5635.609375,-5352.036133,-5240.890625), rot(0, 0, 0), 'PasswordCallReset', "Forgot your Password?"); } - } - if(!dxr.flags.IsZeroRando()) { - //Add a switch to manually trigger the infolink that gives you the Helios computer password - AddSwitch( vect(5635.609375,-5352.036133,-5240.890625), rot(0, 0, 0), 'PasswordCallReset', "Forgot your Password?"); - } + ft=Spawn(class'#var(prefix)FlagTrigger'); + ft.bSetFlag=True; //Setting both of these means it will set the flag + ft.bTrigger=True; //and then trigger the event after the flag is set + ft.flagName='DL_Final_Helios06_Played'; + ft.flagValue=False; + ft.Event='PasswordCall'; + ft.Tag='PasswordCallReset'; + ft.SetCollision(false,false,false); - ft=Spawn(class'#var(prefix)FlagTrigger'); - ft.bSetFlag=True; //Setting both of these means it will set the flag - ft.bTrigger=True; //and then trigger the event after the flag is set - ft.flagName='DL_Final_Helios06_Played'; - ft.flagValue=False; - ft.Event='PasswordCall'; - ft.Tag='PasswordCallReset'; - ft.SetCollision(false,false,false); - - //Make sure the datalink trigger has a unique tag to get hit - foreach AllActors(class'#var(prefix)DataLinkTrigger',dlt){ - if (dlt.datalinkTag=='DL_Final_Helios06'){ - dlt.Tag='PasswordCall'; - break; + //Make sure the datalink trigger has a unique tag to get hit + foreach AllActors(class'#var(prefix)DataLinkTrigger',dlt){ + if (dlt.datalinkTag=='DL_Final_Helios06'){ + dlt.Tag='PasswordCall'; + break; + } } - } - if (VanillaMaps) { foreach AllActors(class'AmbientSound', as) { if (as.AmbientSound == Sound'Ambient.Ambient.GeigerLoop') { ast = class'DXRAmbientSoundTrigger'.static.ReplaceAmbientSound(as, 'Gray_rad'); @@ -565,26 +629,29 @@ function PreFirstEntryMapFixes_Page() function PreFirstEntryMapFixes() { - if (class'DXRMapVariants'.static.IsVanillaMaps(player())){ - switch(dxr.localURL) - { - case "15_AREA51_BUNKER": - PreFirstEntryMapFixes_Bunker(); - break; + local bool isVanilla; - case "15_AREA51_FINAL": - PreFirstEntryMapFixes_Final(); - break; + isVanilla = class'DXRMapVariants'.static.IsVanillaMaps(player()); - case "15_AREA51_ENTRANCE": - PreFirstEntryMapFixes_Entrance(); - break; + switch(dxr.localURL) + { + case "15_AREA51_BUNKER": + PreFirstEntryMapFixes_Bunker(isVanilla); + break; - case "15_AREA51_PAGE": - PreFirstEntryMapFixes_Page(); - break; - } + case "15_AREA51_FINAL": + PreFirstEntryMapFixes_Final(isVanilla); + break; + + case "15_AREA51_ENTRANCE": + PreFirstEntryMapFixes_Entrance(isVanilla); + break; + + case "15_AREA51_PAGE": + PreFirstEntryMapFixes_Page(isVanilla); + break; } + } function AnyEntryMapFixes() diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc index ee8ddda99..b92e70d11 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc @@ -67,9 +67,13 @@ function PreFirstEntryMapFixes() class'PlaceholderEnemy'.static.Create(self,vectm(-362,-3444,-32)); class'PlaceholderEnemy'.static.Create(self,vectm(-743,677,-256)); - class'PlaceholderEnemy'.static.Create(self,vectm(-1573,-113,-64)); - class'PlaceholderEnemy'.static.Create(self,vectm(781,1156,-32)); + } else { + class'PlaceholderEnemy'.static.Create(self,vectm(-76,-3450,-280)); + class'PlaceholderEnemy'.static.Create(self,vectm(-748,601,-256)); } + class'PlaceholderEnemy'.static.Create(self,vectm(-1573,-113,-64)); + class'PlaceholderEnemy'.static.Create(self,vectm(781,1156,-32)); + break; case "10_PARIS_CHATEAU": diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc index a494a9154..deb7fcfe5 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc @@ -180,21 +180,25 @@ function PreFirstEntryMapFixes() } } - Spawn(class'PlaceholderItem',,, vectm(-2227,4220,-2519)); //on top of generator - Spawn(class'PlaceholderItem',,, vectm(-1421,5119,-2534)); //on top of boxes near start - Spawn(class'PlaceholderItem',,, vectm(-1205,5271,-2534)); //on top of boxes near start - Spawn(class'PlaceholderItem',,, vectm(-2676,3649,-2599)); //stairwell down to flooded area Spawn(class'PlaceholderItem',,, vectm(-3227,3679,-2599)); //floor near stairwell down to flooded area Spawn(class'PlaceholderItem',,, vectm(-1590,2796,-2599)); //airlock after spiderbot trap + } else { + Spawn(class'PlaceholderItem',,, vectm(-3227,3679,-2520)); //boxes near stairwell down to flooded area + Spawn(class'PlaceholderItem',,, vectm(-1640,2796,-2599)); //airlock after spiderbot trap + } - Spawn(class'PlaceholderContainer',,, vectm(-2250,4586,-2577)); //across from generator - Spawn(class'PlaceholderContainer',,, vectm(-2414,4329,-2577)); //near generator - Spawn(class'PlaceholderContainer',,, vectm(-3175,3194,-2577)); //near stairwell to flooded area - Spawn(class'PlaceholderContainer',,, vectm(-1399,4950,-2565)); //near boxes near start - Spawn(class'PlaceholderContainer',,, vectm(-3083,2798,-2577)); //near corner near spiderbot trap - Spawn(class'PlaceholderContainer',,, vectm(-325,1386,-2577)); //after the pit + Spawn(class'PlaceholderItem',,, vectm(-2227,4220,-2519)); //on top of generator + Spawn(class'PlaceholderItem',,, vectm(-1421,5119,-2534)); //on top of boxes near start + Spawn(class'PlaceholderItem',,, vectm(-1205,5271,-2534)); //on top of boxes near start + Spawn(class'PlaceholderItem',,, vectm(-2676,3649,-2599)); //stairwell down to flooded area + + Spawn(class'PlaceholderContainer',,, vectm(-2250,4586,-2577)); //across from generator + Spawn(class'PlaceholderContainer',,, vectm(-2414,4329,-2577)); //near generator + Spawn(class'PlaceholderContainer',,, vectm(-3175,3194,-2577)); //near stairwell to flooded area + Spawn(class'PlaceholderContainer',,, vectm(-1399,4950,-2565)); //near boxes near start + Spawn(class'PlaceholderContainer',,, vectm(-3083,2798,-2577)); //near corner near spiderbot trap + Spawn(class'PlaceholderContainer',,, vectm(-325,1386,-2577)); //after the pit - } break; case "14_VANDENBERG_SUB": @@ -248,6 +252,12 @@ function PreFirstEntryMapFixes() foreach AllActors(class'#var(prefix)BlackHelicopter',jock,'BlackHelicopter'){break;} hoverHint = class'DXRTeleporterHoverHint'.static.Create(self, "", jock.Location, jock.CollisionRadius+5, jock.CollisionHeight+5, exit); hoverHint.SetBaseActor(jock); + } else { + Spawn(class'PlaceholderItem',,, vectm(718,3913,-355)); //Shed + Spawn(class'PlaceholderItem',,, vectm(723,3972,-355)); //Shed + Spawn(class'PlaceholderItem',,, vectm(726,4050,-365)); //Shed + Spawn(class'PlaceholderItem',,, vectm(740,4203,-420)); //Shed + Spawn(class'PlaceholderItem',,, vectm(555,4207,-420)); //Shed } break; @@ -309,6 +319,19 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderContainer',,, vectm(2999,482,-1503)); //Greasel lab Spawn(class'PlaceholderContainer',,, vectm(1780,3725,-2483)); //Crew module bed Spawn(class'PlaceholderContainer',,, vectm(1733,3848,-4223)); //Corner in hall to UC + } else { + Spawn(class'PlaceholderItem',,, vectm(217,750,-1570)); //Secretary desk + Spawn(class'PlaceholderItem',,, vectm(2722,226.5,-1481)); //Greasel Lab desk + Spawn(class'PlaceholderItem',,, vectm(4097.8,395.4,-1533)); //Desk with zappy electricity near construction zone + Spawn(class'PlaceholderItem',,, vectm(4202,2552,-1740)); //Electrical box in construction zone + Spawn(class'PlaceholderItem',,, vectm(5359.5,3122.3,-1761)); //Construction vehicle tread + Spawn(class'PlaceholderItem',,, vectm(3114,3687,-2530)); //Storage room in crew capsule + + Spawn(class'PlaceholderContainer',,, vectm(-165,509,-1590)); //Secretary desk corner + Spawn(class'PlaceholderContainer',,, vectm(1740,156,-1599)); //Open storage room + Spawn(class'PlaceholderContainer',,, vectm(3000,-108,-1500)); //Greasel lab + Spawn(class'PlaceholderContainer',,, vectm(1780,3725,-2483)); //Crew module bed + Spawn(class'PlaceholderContainer',,, vectm(1733,3848,-4223)); //Corner in hall to UC } break; case "14_OCEANLAB_UC": @@ -343,6 +366,11 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(348.9,8484.63,-2913)); //Turret room Spawn(class'PlaceholderItem',,, vectm(1280.84,8534.17,-2913)); //Turret room Spawn(class'PlaceholderItem',,, vectm(1892,8754.5,-2901)); //Turret room, opposite from bait computer + } else { + Spawn(class'PlaceholderItem',,, vectm(1084,8200,-2860)); //Over security computer + Spawn(class'PlaceholderItem',,, vectm(1780,8587,-2790)); //Turret room + Spawn(class'PlaceholderItem',,, vectm(423,8547,-2900)); //Turret room + Spawn(class'PlaceholderItem',,, vectm(73,9110,-2910)); //Turret room, opposite from bait computer } foreach AllActors(class'#var(prefix)Fan1',fan){ @@ -397,13 +425,15 @@ function PreFirstEntryMapFixes() class'FrictionTrigger'.static.CreateIce(self, vectm(28.63,-5129.48,-231.285), 1190, 650); - class'PlaceholderEnemy'.static.Create(self,vectm(-264,-6991,-553)); - class'PlaceholderEnemy'.static.Create(self,vectm(-312,-6886,327)); - class'PlaceholderEnemy'.static.Create(self,vectm(270,-6601,1500)); - class'PlaceholderEnemy'.static.Create(self,vectm(-1257,-3472,1468)); - class'PlaceholderEnemy'.static.Create(self,vectm(1021,-3323,1476)); + class'PlaceholderEnemy'.static.Create(self,vectm(270,-6601,1500)); //This one is locked inside a fence in Revision, so only use it in Vanilla } + class'PlaceholderEnemy'.static.Create(self,vectm(-264,-6991,-553)); + class'PlaceholderEnemy'.static.Create(self,vectm(-312,-6886,327)); + class'PlaceholderEnemy'.static.Create(self,vectm(-1257,-3472,1468)); + class'PlaceholderEnemy'.static.Create(self,vectm(1021,-3323,1476)); + + dxr.flagbase.SetBool('MS_UnhideHelicopter', True,, 15); foreach AllActors(class'DataLinkTrigger', dlt, 'klax') { dlt.Destroy(); @@ -430,10 +460,12 @@ function PreFirstEntryMapFixes() } - Spawn(class'PlaceholderItem',,, vectm(579,2884,-1629)); //Table near entrance - Spawn(class'PlaceholderItem',,, vectm(1057,2685.25,-1637)); //Table overlooking computer room - Spawn(class'PlaceholderItem',,, vectm(1970,2883.43,-1941)); //In first floor computer room } + + Spawn(class'PlaceholderItem',,, vectm(579,2884,-1629)); //Table near entrance + Spawn(class'PlaceholderItem',,, vectm(1057,2685.25,-1637)); //Table overlooking computer room + Spawn(class'PlaceholderItem',,, vectm(1970,2883.43,-1941)); //In first floor computer room + break; case "12_VANDENBERG_GAS": @@ -469,7 +501,14 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(-88,-2087,-1553)); //Collapsed bridge road surface Spawn(class'PlaceholderItem',,, vectm(909,-2474,-1551)); //Wrecked car Spawn(class'PlaceholderItem',,, vectm(-3152,-2780,-1364)); //Ledge near original key + } else { + class'PlaceholderEnemy'.static.Create(self,vectm(886,1044,-930)); + Spawn(class'PlaceholderItem',,, vectm(-366,-2276,-1553)); //Under collapsed bridge + Spawn(class'PlaceholderItem',,, vectm(-394,-1645,-1565)); //Near bridge pillar + Spawn(class'PlaceholderItem',,, vectm(-88,-2087,-1553)); //Collapsed bridge road surface + Spawn(class'PlaceholderItem',,, vectm(909,-2474,-1551)); //Wrecked car + Spawn(class'PlaceholderItem',,, vectm(-2864,-2618,-1490)); //Ledge near original key } break; } From 72fd1316c7774019421c512aa92c4960a0d082ec Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 17 Nov 2024 23:14:04 -0500 Subject: [PATCH 42/87] Fix Vandenberg Tunnels getting skipped on first entry in non-Vanilla --- .../DeusEx/Classes/DXRFixupVandenberg.uc | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc index deb7fcfe5..a1c39b3b7 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc @@ -55,6 +55,7 @@ function PreFirstEntryMapFixes() local #var(prefix)Teleporter t; local #var(prefix)Fan1 fan; local #var(prefix)Fan2 fan2; + local DynamicTeleporter dynt; local bool VanillaMaps; @@ -199,6 +200,26 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderContainer',,, vectm(-3083,2798,-2577)); //near corner near spiderbot trap Spawn(class'PlaceholderContainer',,, vectm(-325,1386,-2577)); //after the pit + if (!#defined(vanilla)){ + //Disable collision on the MapExit's before shuffling so that the moving items don't trigger them + //For Vanilla, this is fixed in DXRBacktracking, but nothing else uses that module (yet) + foreach AllActors(class'#var(prefix)MapExit',exit){ + exit.Tag=''; + exit.SetCollision(False,False,False); + } + + dynt = Spawn(class'DynamicTeleporter',,,vectm(-1625,5743,-2364)); //Start + dynt.SetCollisionSize(30,15); + dynt.SetDestination("12_vandenberg_cmd",,"commstat"); + + if (VanillaMaps){ + dynt = Spawn(class'DynamicTeleporter',,,vectm(398,1164,-2356)); //End + } else { + dynt = Spawn(class'DynamicTeleporter',,,vectm(3366,1164,-2356)); //End + } + dynt.SetCollisionSize(30,15); + dynt.SetDestination("12_vandenberg_cmd",,"storage"); + } break; case "14_VANDENBERG_SUB": From fe1ba2dd288cbf8b398cb5c5523584aa1fa31fb5 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 17 Nov 2024 23:22:44 -0500 Subject: [PATCH 43/87] Quick Aug and Quick Skill menus start every load closed (even if it was open last time you were in a map) --- DXRVanilla/DeusEx/Classes/Player.uc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/DXRVanilla/DeusEx/Classes/Player.uc b/DXRVanilla/DeusEx/Classes/Player.uc index fd699ebb5..de4f08b14 100644 --- a/DXRVanilla/DeusEx/Classes/Player.uc +++ b/DXRVanilla/DeusEx/Classes/Player.uc @@ -10,7 +10,7 @@ var bool bDoomMode; var bool bAutorun; var float autorunTime; var bool bBlockAnimations; -var bool bUpgradeAugs; +var transient bool bUpgradeAugs; var Rotator ShakeRotator; @@ -1094,7 +1094,6 @@ exec function CheatsOff() { bCheatsEnabled = false; ClientMessage("Cheats Disabled"); - } //Just a copy of PlayersOnly, but doesn't need cheats and faster to type (In case of lockups after a save) @@ -1342,6 +1341,16 @@ simulated function PreBeginPlay() { Super.PreBeginPlay(); } + +simulated function PostPostBeginPlay() +{ + Super.PostPostBeginPlay(); + + //Make sure the aug and skill quick menus are closed when you re-enter a map. + //bUpgradeAugs is added by Rando so is transient, but bBuySkills is vanilla + bUpgradeAugs=False; + bBuySkills=False; +} function PlayTakeHitSound(int Damage, name damageType, int Mult) { Super.PlayTakeHitSound(Damage, damageType, Mult); From b5d79dff74146691b59ec54e8fc8ee5f5cbb2080 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 18 Nov 2024 17:40:26 -0500 Subject: [PATCH 44/87] Revision UNATCO HQ turrets are now non-hostile (prevents them from being shuffled or added) #1033 --- DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc | 1 + DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc | 1 + DXRModules/DeusEx/Classes/DXRFixup.uc | 10 ++++++++++ 5 files changed, 14 insertions(+) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc index ff37a5bec..4bb9a6444 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM01.uc @@ -135,6 +135,7 @@ function PreFirstEntryMapFixes() case "01_NYC_UNATCOHQ": FixUNATCOCarterCloset(); + MakeTurretsNonHostile(); //Revision has hostile turrets near jail #ifdef injections foreach AllActors(class'#var(prefix)Newspaper',np) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc index 1d53dd81a..fe36d84c6 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM03.uc @@ -389,6 +389,7 @@ function PreFirstEntryMapFixes() case "03_NYC_UNATCOHQ": FixUNATCOCarterCloset(); FixAlexsEmail(); + MakeTurretsNonHostile(); //Revision has hostile turrets near jail //Move weapon mod out of Manderley's secret (inaccessible) safe foreach AllActors(class'#var(prefix)WeaponModRecoil',wmr){ diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc index d4c4caeb9..8c24d1561 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM04.uc @@ -284,6 +284,7 @@ function PreFirstEntryMapFixes() case "04_NYC_UNATCOHQ": FixUNATCOCarterCloset(); FixAlexsEmail(); + MakeTurretsNonHostile(); //Revision has hostile turrets near jail if(!dxr.flags.IsZeroRando()) { key = Spawn(class'#var(prefix)NanoKey',,, vectm(965,900,-28)); diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc index 8814404bd..717e37a3f 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupM05.uc @@ -131,6 +131,7 @@ function PreFirstEntryMapFixes() case "05_NYC_UNATCOHQ": if (VanillaMaps){ FixAlexsEmail(); + //MakeTurretsNonHostile(); //Revision has hostile turrets near jail, but they should stay hostile this time // Anna's dialog depends on this flag dxr.flagbase.SetBool('DL_Choice_Played', true,, 6); diff --git a/DXRModules/DeusEx/Classes/DXRFixup.uc b/DXRModules/DeusEx/Classes/DXRFixup.uc index a9f95282e..bc81dd60d 100644 --- a/DXRModules/DeusEx/Classes/DXRFixup.uc +++ b/DXRModules/DeusEx/Classes/DXRFixup.uc @@ -687,6 +687,16 @@ function FixUNATCORetinalScanner() } } +function MakeTurretsNonHostile() +{ + local #var(prefix)AutoTurret at; + + foreach AllActors(class'#var(prefix)AutoTurret',at){ + at.bTrackPlayersOnly=False; + at.bTrackPawnsOnly=True; + } +} + function FixUNATCOCarterCloset() { local Inventory i; From b2a7df4a775da898fd0ca21a0fb8f9b9f74b430d Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 18 Nov 2024 18:52:11 -0500 Subject: [PATCH 45/87] DXRFashionManager forcibly disables HDTP JC and Paul in Revision #1030 --- DXRando/DeusEx/Classes/DXRFashionManager.uc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/DXRando/DeusEx/Classes/DXRFashionManager.uc b/DXRando/DeusEx/Classes/DXRFashionManager.uc index a3af743fd..1620f9604 100644 --- a/DXRando/DeusEx/Classes/DXRFashionManager.uc +++ b/DXRando/DeusEx/Classes/DXRFashionManager.uc @@ -783,6 +783,19 @@ simulated function ApplyClothing(Actor a, int person) local int i; local Texture overrides[8]; + #ifdef revision + //Force appearance back to vanilla + if (#var(DeusExPrefix)Carcass(a)!=None){ + #var(DeusExPrefix)Carcass(a).Facelift(False); + } else if (#var(prefix)ScriptedPawn(a)!=None){ + #var(prefix)ScriptedPawn(a).Facelift(False); + } else if (#var(PlayerPawn)(a)!=None){ + #var(PlayerPawn)(a).Facelift(False); + #var(PlayerPawn)(a).bHDTP_JC=False; + #var(PlayerPawn)(a).bHDTP_Paul=False; + } + #endif + ForceCarcassType(a); a.Mesh=GetCurModelByPerson(person); From c05af16505ab0e3e50cdf0d6d51500bbb4e7074c Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 18 Nov 2024 20:57:02 -0500 Subject: [PATCH 46/87] Improve key rules for neo-carcharod lab and Oceanguard datacube in Revision Oceanlab. Add placeholderitems too. --- .../DeusEx/Classes/DXRFixupVandenberg.uc | 7 +++++++ DXRModules/DeusEx/Classes/DXRDatacubes.uc | 21 ++++--------------- DXRModules/DeusEx/Classes/DXRKeys.uc | 13 ++++++++++-- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc index a1c39b3b7..c027f536f 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupVandenberg.uc @@ -348,6 +348,13 @@ function PreFirstEntryMapFixes() Spawn(class'PlaceholderItem',,, vectm(5359.5,3122.3,-1761)); //Construction vehicle tread Spawn(class'PlaceholderItem',,, vectm(3114,3687,-2530)); //Storage room in crew capsule + Spawn(class'PlaceholderItem',,, vectm(-163,732,-2190)); + Spawn(class'PlaceholderItem',,, vectm(470,678,-1955)); + Spawn(class'PlaceholderItem',,, vectm(5,815,-1760)); + Spawn(class'PlaceholderItem',,, vectm(-72,-523,-1570)); + Spawn(class'PlaceholderItem',,, vectm(258,-539,-1580)); + Spawn(class'PlaceholderItem',,, vectm(432,-359,-1570)); + Spawn(class'PlaceholderContainer',,, vectm(-165,509,-1590)); //Secretary desk corner Spawn(class'PlaceholderContainer',,, vectm(1740,156,-1599)); //Open storage room Spawn(class'PlaceholderContainer',,, vectm(3000,-108,-1500)); //Greasel lab diff --git a/DXRModules/DeusEx/Classes/DXRDatacubes.uc b/DXRModules/DeusEx/Classes/DXRDatacubes.uc index dcad5466e..69b49072b 100644 --- a/DXRModules/DeusEx/Classes/DXRDatacubes.uc +++ b/DXRModules/DeusEx/Classes/DXRDatacubes.uc @@ -1388,26 +1388,13 @@ function revision_datacubes_rules() case "14_OCEANLAB_LAB": //OCEANGUARD code to open sub bay doors. This is SUPER IMPORTANT. This needs to not fuck up. - //Intent is for it to be able to spawn anywhere from the sub bay up to and including the storage room, but not the locked one - - //Exclude Locked storage room - datacubes_rules[i].item_name = '14_Datacube06'; - datacubes_rules[i].min_pos = vect(595,-170,-1627); - datacubes_rules[i].max_pos = vect(970,333,-1467); - datacubes_rules[i].allow = false; - i++; - - //Between Sub Bay and door to Greasel Lab, top floor - datacubes_rules[i].item_name = '14_Datacube06'; - datacubes_rules[i].min_pos = vect(491,-170,-1627); - datacubes_rules[i].max_pos = vect(1786,814,-1468); - datacubes_rules[i].allow = true; - i++; + //Intent is for it to be able to spawn anywhere from the sub bay up to and including the command centre. + //Revision has a locked door into the storage room hall which uses that login to access it //All floors of that main central building with the sub bay datacubes_rules[i].item_name = '14_Datacube06'; - datacubes_rules[i].min_pos = vect(-204,-218,-99999); - datacubes_rules[i].max_pos = vect(491,814,99999); + datacubes_rules[i].min_pos = vect(-204,-550,-99999); + datacubes_rules[i].max_pos = vect(491,817,99999); datacubes_rules[i].allow = true; i++; diff --git a/DXRModules/DeusEx/Classes/DXRKeys.uc b/DXRModules/DeusEx/Classes/DXRKeys.uc index 6288f201d..271edaf21 100644 --- a/DXRModules/DeusEx/Classes/DXRKeys.uc +++ b/DXRModules/DeusEx/Classes/DXRKeys.uc @@ -1061,12 +1061,21 @@ function revision_keys_rules() keys_rules[i].allow = true; i++; + //Exclude the Neo-Carcharod lab (since you need the key to get in, duh) keys_rules[i].item_name = 'NeoCarcharod'; - keys_rules[i].min_pos = vect(-99999, -99999, -2400); - keys_rules[i].max_pos = vect(512, 0, 99999); + keys_rules[i].min_pos = vect(-235,-4,-1812); + keys_rules[i].max_pos = vect(490,904,-1652); + keys_rules[i].allow = false; + i++; + + //All floors of that main central building with the sub bay + keys_rules[i].item_name = 'NeoCarcharod'; + keys_rules[i].min_pos = vect(-204,-550,-99999); + keys_rules[i].max_pos = vect(491,817,99999); keys_rules[i].allow = true; i++; + //Explicitly exclude EVERYTHING else for safety keys_rules[i].item_name = 'NeoCarcharod'; keys_rules[i].min_pos = vect(-99999, -99999, -99999); keys_rules[i].max_pos = vect(99999, 99999, 99999); From b01df4cdfcf917cf19cf07bee362562be216f0c7 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sat, 23 Nov 2024 19:37:21 -0500 Subject: [PATCH 47/87] Only UNATCO troops get shuffled in NSF HQ (to prevent civilians from being shuffled as well in Revision) --- DXRModules/DeusEx/Classes/DXREnemiesShuffle.uc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DXRModules/DeusEx/Classes/DXREnemiesShuffle.uc b/DXRModules/DeusEx/Classes/DXREnemiesShuffle.uc index 210a5810c..b22c81529 100644 --- a/DXRModules/DeusEx/Classes/DXREnemiesShuffle.uc +++ b/DXRModules/DeusEx/Classes/DXREnemiesShuffle.uc @@ -75,7 +75,7 @@ function SwapScriptedPawns(int percent, bool enemies) { local ScriptedPawn temp[512]; local ScriptedPawn a; - local name exceptTag, exceptAlliance, keepTagName; + local name exceptTag, exceptAlliance, onlyAlliance, keepTagName; local bool keepTags; local int num, i, slot; local Inventory item, nextItem; @@ -86,6 +86,8 @@ function SwapScriptedPawns(int percent, bool enemies) case "04_NYC_NSFHQ": if(enemies) SwapScriptedPawns(percent, false); + else + onlyAlliance='UNATCO'; //To prevent civilians being shuffled in Revision break; case "06_HONGKONG_MJ12LAB": @@ -119,6 +121,7 @@ function SwapScriptedPawns(int percent, bool enemies) if( a.Region.Zone.bWaterZone || a.Region.Zone.bPainZone ) continue; if( exceptTag != '' && a.Tag == exceptTag ) continue; if( exceptAlliance != '' && a.Alliance == exceptAlliance ) continue; + if( onlyAlliance != '' && a.Alliance != onlyAlliance ) continue; if( #var(prefix)Robot(a) != None && a.Orders == 'Idle' ) continue; if( class'DXRMissions'.static.IsCloseToRandomStart(dxr, a.Location) ) continue; #ifdef gmdx From cade25bc8aaf2c41d3a97bc19b3924bb353742c6 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 24 Nov 2024 10:23:22 -0500 Subject: [PATCH 48/87] Datacube Rules can now use a text package, and added rules for M05 MJ12 Lab armoury and medlab codes --- DXRCore/DeusEx/Classes/DXRActorsBase.uc | 4 +- DXRModules/DeusEx/Classes/DXRDatacubes.uc | 54 +++++++++++++++++++++-- DXRModules/DeusEx/Classes/DXRKeys.uc | 4 +- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/DXRCore/DeusEx/Classes/DXRActorsBase.uc b/DXRCore/DeusEx/Classes/DXRActorsBase.uc index 6282386f6..58a521a30 100644 --- a/DXRCore/DeusEx/Classes/DXRActorsBase.uc +++ b/DXRCore/DeusEx/Classes/DXRActorsBase.uc @@ -14,6 +14,7 @@ struct FMinMax { struct safe_rule { var name item_name; + var string package_name; var vector min_pos; var vector max_pos; var bool allow; @@ -1692,12 +1693,13 @@ function safe_rule FixSafeRule(safe_rule r) return r; } -function int GetSafeRule(safe_rule rules[16], coerce string item_name, vector newpos) +function int GetSafeRule(safe_rule rules[16], coerce string item_name, string package_name, vector newpos) { local int i; for(i=0; i 5000 ) return False; diff --git a/DXRModules/DeusEx/Classes/DXRKeys.uc b/DXRModules/DeusEx/Classes/DXRKeys.uc index 271edaf21..10c941aef 100644 --- a/DXRModules/DeusEx/Classes/DXRKeys.uc +++ b/DXRModules/DeusEx/Classes/DXRKeys.uc @@ -1261,7 +1261,7 @@ function bool KeyPositionGood(#var(prefix)NanoKey k, vector newpos) local float dist; local int i; - i = GetSafeRule( keys_rules, k.KeyID, newpos); + i = GetSafeRule( keys_rules, k.KeyID, "", newpos); if( i != -1 ) return keys_rules[i].allow; dist = VSize( k.Location - newpos ); @@ -1365,7 +1365,7 @@ function TestKeyRules(Name KeyID, bool allowed, vector loc, string description) { local int i; description = "key: " $ KeyID $ ", expected allowed: "$allowed$", " $ description $ " ("$loc$")"; - i = GetSafeRule( keys_rules, KeyID, loc ); + i = GetSafeRule( keys_rules, KeyID, "", loc ); if( allowed && i == -1 ) { test( true, "without key rule - " $ description ); return; From 0aedd851f3bf81cadd4d757187ab5a079532343d Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Sun, 24 Nov 2024 10:31:20 -0500 Subject: [PATCH 49/87] Fix key rule for lebedev 747 private quarters door key to exclude annoying spot behind boxes --- DXRModules/DeusEx/Classes/DXRKeys.uc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DXRModules/DeusEx/Classes/DXRKeys.uc b/DXRModules/DeusEx/Classes/DXRKeys.uc index 10c941aef..21665ebe0 100644 --- a/DXRModules/DeusEx/Classes/DXRKeys.uc +++ b/DXRModules/DeusEx/Classes/DXRKeys.uc @@ -636,8 +636,8 @@ function revision_keys_rules() case "03_NYC_747": keys_rules[i].item_name = 'lebedevdoor'; - keys_rules[i].min_pos = vect(340, -312, 140);//ban the annoying spot behind the crates - keys_rules[i].max_pos = vect(380, -280, 185); + keys_rules[i].min_pos = vect(340, -312, 100); //ban the annoying spot behind the crates + keys_rules[i].max_pos = vect(380, -280, 185); //In Revision it's 353,-296, 133 keys_rules[i].allow = false; i++; From 47f08fedadf75e7e428dad12e76187c41d0db404 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 25 Nov 2024 23:18:40 -0500 Subject: [PATCH 50/87] Improve datacube rules for Revision armoury door code and key rules for crew module key in Oceanlab --- DXRModules/DeusEx/Classes/DXRDatacubes.uc | 26 ++++++++++++++++++++++- DXRModules/DeusEx/Classes/DXRKeys.uc | 14 ++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/DXRModules/DeusEx/Classes/DXRDatacubes.uc b/DXRModules/DeusEx/Classes/DXRDatacubes.uc index 38e3b0462..8adcf7b30 100644 --- a/DXRModules/DeusEx/Classes/DXRDatacubes.uc +++ b/DXRModules/DeusEx/Classes/DXRDatacubes.uc @@ -1053,20 +1053,44 @@ function revision_datacubes_rules() // Datacube with code to get into armoury area (keypad locked door at exit of robotics bay) + + //RATS datacube with password to armoury can be in armoury or robotics bay (original location is armoury desk) datacubes_rules[i].item_name = '05_Datacube03'; datacubes_rules[i].package_name = "RevisionText"; + datacubes_rules[i].min_pos = vect(-9453, 180, -99999); //Allow in the armoury + datacubes_rules[i].max_pos = vect(-7367,2273, 99999); + datacubes_rules[i].allow = true; + i++; + + datacubes_rules[i].item_name = '05_Datacube03'; + datacubes_rules[i].package_name = "RevisionText"; + datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); + datacubes_rules[i].max_pos = vect(-933, 99999, 99999); //Allow anywhere on the robotics bay side of the map + datacubes_rules[i].allow = true; + i++; + + //Datacube with armoury door code - allow only in the robotics bay + datacubes_rules[i].item_name = '05_Datacube04'; + datacubes_rules[i].package_name = "RevisionText"; datacubes_rules[i].min_pos = vect(-9453, 180, -99999); //Keep out of the armoury datacubes_rules[i].max_pos = vect(-7367,2273, 99999); datacubes_rules[i].allow = false; i++; - datacubes_rules[i].item_name = '05_Datacube03'; + datacubes_rules[i].item_name = '05_Datacube04'; datacubes_rules[i].package_name = "RevisionText"; datacubes_rules[i].min_pos = vect(-99999, -99999, -99999); datacubes_rules[i].max_pos = vect(-933, 99999, 99999); //Allow anywhere on the robotics bay side of the map datacubes_rules[i].allow = true; i++; + datacubes_rules[i].item_name = '05_Datacube04'; + datacubes_rules[i].package_name = "RevisionText"; + datacubes_rules[i].min_pos = vect(-933, -99999, -99999); + datacubes_rules[i].max_pos = vect(99999, 99999, 99999); //Disallow anywhere on the medlab side of the map + datacubes_rules[i].allow = false; + i++; + // Datacube with code to get into medical wing (Locked door at the command centre) datacubes_rules[i].item_name = '05_Datacube01'; datacubes_rules[i].package_name = "RevisionText"; diff --git a/DXRModules/DeusEx/Classes/DXRKeys.uc b/DXRModules/DeusEx/Classes/DXRKeys.uc index 21665ebe0..20ac1b96a 100644 --- a/DXRModules/DeusEx/Classes/DXRKeys.uc +++ b/DXRModules/DeusEx/Classes/DXRKeys.uc @@ -1000,6 +1000,20 @@ function revision_keys_rules() keys_rules[i].allow = false; i++; + //disallow storage closet + keys_rules[i].item_name = 'crewkey'; + keys_rules[i].min_pos = vect(528.007446, -99999, -1653.906006); + keys_rules[i].max_pos = vect(1047.852173, 436.867401, 99999); + keys_rules[i].allow = false; + i++; + + //disallow lower storage closet near crew module + keys_rules[i].item_name = 'crewkey'; + keys_rules[i].min_pos = vect(4297,3924,-1900); + keys_rules[i].max_pos = vect(3776,4300,-2050); + keys_rules[i].allow = false; + i++; + //allow anything to the west (smaller X) of the crew quarters, except for the flooded area keys_rules[i].item_name = 'crewkey'; keys_rules[i].min_pos = vect(-414.152771, -99999, -99999); From dcea4a4b4ed6aa2fdd3d4ce6c50cf01ebdb23426 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 25 Nov 2024 23:29:20 -0500 Subject: [PATCH 51/87] Prevent items in sealed windows in Revision Cathedral from being shuffled (to prevent important stuff from being permanently locked away) --- DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc index b92e70d11..81358bf93 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc @@ -26,6 +26,7 @@ function PreFirstEntryMapFixes() local #var(prefix)NicoletteDuclare nico; local #var(prefix)NanoKey k; local DXRMoverSequenceTrigger elevatortrig; + local Actor a; VanillaMaps = class'DXRMapVariants'.static.IsVanillaMaps(player()); @@ -246,6 +247,18 @@ function PreFirstEntryMapFixes() } } + } else { + //Items in an unopenable shop window (Nutella store) + foreach RadiusActors(class'Actor',a,100,vect(-4635,-4110,280)){ + if (Inventory(a)!=None || #var(DeusExPrefix)Decoration(a)!=None){ + a.bIsSecretGoal=true; + } + } + foreach RadiusActors(class'Actor',a,100,vect(-5625,-3610,350)){ + if (Inventory(a)!=None || #var(DeusExPrefix)Decoration(a)!=None){ + a.bIsSecretGoal=true; + } + } } break; case "11_PARIS_EVERETT": From 34d0a16e0207b42d41c90257cede7aee866f82e6 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Mon, 25 Nov 2024 23:38:44 -0500 Subject: [PATCH 52/87] Make sure turret in Revision Everett is non-hostile --- DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc index 81358bf93..d1d9129de 100644 --- a/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc +++ b/DXRMapFixups/DeusEx/Classes/DXRFixupParis.uc @@ -274,6 +274,8 @@ function PreFirstEntryMapFixes() } } + MakeTurretsNonHostile(); //Revision has a turret that is in "attack everything" mode + foreach AllActors(class'#var(prefix)MorganEverett', everett) { // Everett's vanilla BarkBindName is "Man" everett.BarkBindName = "MorganEverett"; From fdca3ba6562da2b7747e0bf7f78a4c40cbc86bf7 Mon Sep 17 00:00:00 2001 From: "theastropath@gmail.com" Date: Tue, 26 Nov 2024 23:29:09 -0500 Subject: [PATCH 53/87] Add music randomization for Revision (and PS2) OGG soundtrack --- DXRCore/DeusEx/Classes/DXRVersion.uc | 2 +- DXRModules/DeusEx/Classes/DXRMusic.uc | 330 +++++++++++++++++- DXRModules/DeusEx/Classes/DXRMusicPlayer.uc | 110 +++++- GUI/DeusEx/Classes/MenuChoice_DisableSong.uc | 21 +- GUI/DeusEx/Classes/MenuChoice_RevMusic.uc | 120 +++++++ GUI/DeusEx/Classes/MenuChoice_RevPS2Music.uc | 22 ++ GUI/DeusEx/Classes/MenuChoice_ThrowMelee.uc | 2 +- .../Classes/MenuScreenRandoOptionsAudio.uc | 24 +- RevRandomizer.u | Bin 11274230 -> 11508525 bytes 9 files changed, 612 insertions(+), 19 deletions(-) create mode 100644 GUI/DeusEx/Classes/MenuChoice_RevMusic.uc create mode 100644 GUI/DeusEx/Classes/MenuChoice_RevPS2Music.uc diff --git a/DXRCore/DeusEx/Classes/DXRVersion.uc b/DXRCore/DeusEx/Classes/DXRVersion.uc index 82f04f298..302394cd6 100644 --- a/DXRCore/DeusEx/Classes/DXRVersion.uc +++ b/DXRCore/DeusEx/Classes/DXRVersion.uc @@ -5,7 +5,7 @@ simulated static function CurrentVersion(optional out int major, optional out in major=3; minor=2; patch=5; - build=0;//build can't be higher than 99 + build=1;//build can't be higher than 99 } simulated static function bool VersionIsStable() diff --git a/DXRModules/DeusEx/Classes/DXRMusic.uc b/DXRModules/DeusEx/Classes/DXRMusic.uc index 09fea315f..29ba90a3d 100644 --- a/DXRModules/DeusEx/Classes/DXRMusic.uc +++ b/DXRModules/DeusEx/Classes/DXRMusic.uc @@ -11,9 +11,19 @@ struct SongChoice { var bool enabled; }; +struct OggSongChoice { + var string group; //Eg. Revision vs PS2 + var string song; + var string ambientintro,ambient,dying,combatintro,combat,convintro,conv,outro; + var bool cutscene_only; + var bool enabled; +}; + var config bool allowCombat; var config SongChoice choices[300];// keep size in sync with _GetLevelSong tchoices[] +var config OggSongChoice oggChoices[300]; //For Revision + var string skipped_songs[20];// copied back to defaults, so they get remembered across loading screens but not when you close the program, otherwise use the disable button instead of the change song button var int last_skipped_song; @@ -22,7 +32,7 @@ function CheckConfig() local int i, g; local string gamesongs[100]; - if( ConfigOlderThan(2,6,3,8) ) { + if( ConfigOlderThan(3,2,5,1) ) { allowCombat = default.allowCombat; for(i=0; i total/3; } +function bool AreOggGameSongsEnabled(string songs[100], optional out int num_enabled, optional out int total) +{ + local int c, s; + // just return an overall status + num_enabled = 0; + total = 0; + for(s=0; s total/3; +} + function SetEnabledSong(string song, bool enable) { local int c; @@ -304,6 +548,12 @@ function SetEnabledSong(string song, bool enable) } } } + + for(c=0; cRcI(_;r=};6WJ)R}$<$<$X_=WMfXL*|y(cr5+_`shOOgR3paO~_ zWdTP-DJnL)BG_mT^y%{nL`6lUsbE8z?Qa49-&*_J65sD_z~ zU$45i`mP5au0G?j53IVmcfo=M8vb3dXu*PQ`0xGe7A*Mhz?}FM!Idb(#OlZ>m2>beq%?U`6g?%;zR$#h;0EI8O*$e4}Q<@H=1KhdxjqzzgFuI;+Npx2vnV zQps3uI5w-RM^x$Ato+~}pWLO-_a<|5so4BLUZ17o3xo97LO=a>;rduLzpPy6jL*c< zaeXqEOi!m&=bg#iL~>TocE$6_!|IfM6s`1T^;~X`dRGfKFqO%uVfA1n$EAV6OgzS2 zrsNV3lPWjdF+N@wMY~u_I~v!AVVB&Yo0KPv?j5kl3_5 zw#uOkT6&o^}KqP!?F<4XR8;}^VKbGx4i0@jtPnDvv^ao)ojxO#(iJt_Maxb zcHmLnv7BDf)b_-CFCXmusWZdVadBNs%bIq!u%AWX~MkTN|W9b-voV{#ZV(=V(`5IP4tA z?Tw|AsZ^{qRF?4>%st&(cN$$<=W22tn9Z}i6#FDiTJV^?u~b2)SL>E^c>0s+#6bEm zrYDn~pO~Lh!&2R!%}mMVb-27FDpk{Zp0-<-(FZNwa4lYJWa>P*%8^Lsc#1?i=}(q5 zVas?vmQEDK(AJ;K=JI{%e0H9mw?yfymim=wH<>q=V0~QH0zasLRi`@2i-sqPPPaDD zyfsP(tX^+5=3Mp6GFE^PV|CDt*5xc$f8FUnMeelnFlICJN@A+2x2Iy}%a{+~tEzm) zZH_VTPPxN29*1gWy`-LP7qQr($BK)}%IokzDic$4UC;Uf8Y4X~?<8$RjF&%nMtGh4 z?ck1KzQ+nF^KGEcl5%gAW29?B$>nH9JuPZ%`%H7>RJpST?{`3nqsv@7qp@7>NG7Yq zzkaZ{cXVgZK(1e(jhUktG~BPQ571isl4JJq*kK)0R#E`9O5aJ__U%wbJfiuS(hhY~ zL$TaJb74UN=k@HqOg5#SR0GX4(-xHv3*EjmC`>;m!vT>P&G`0TFG4hQ!q zc~nn8k(t(+^@jAsK9G)Mt>?MFa-x19H$Df`ku9W$@KSQF7E39WpP`+u#`Wbf8ZOLE znNtY6X6k~fddywspuT5dJf78c^|-LnnrIFC@p22?O6@>F&8kI6R!@|UyL=W4+S`-U z@e0p-TD6dI@f_^LeowW_h3*dn_wYSS~&`jHrBqSSXgmQEKGK0^fQ zxOH4lC;C`DQj5p$hBizm1~ckKtNPLjO1r}$E3d18*`jn)cvzfviT@Z}Y*h+7Q z9UZ`fr5!a!YCO8KvtuRu;TYCq(0v%lOeRbF-wF8INL!3*$apw&#LAr}ar#5)9^Y zxx^`J7&e?&m>PuoF?}|37;}=Dn`3!y4u(e|_h~&FONkJ1r{(6_y}ANoRkc-K%tRT! zlr@7xVJs-vSX?2H>fB6*&J8ZISh@?Dc?kPF-5qRduwXa^8mNAuIT;3Ni5?CF>4$#* zF^7V!6~M>JHm7VmU6bkxNWf4bmyAneZXB@^OU6|NM7`?lY!sTiL>Tpp>Vr#n#*)*W=tiRDNkd>!;d@e)h1e#aa6yhvWpP)3PL0?{Iy=Me}zRvcF!Qne z@@x%KZPay)g^DFO!}`i}Dq)s0ad>;mL6G6I^ODVoI4Dh3H?<>~05mH7+84`r>#?+Y ze|AvB%NUOrv7ckl@MH-S$z9fDZgR_1EDe#BW7{O)z(f{n)O23=CbRiMECqOqA96YK zGW$So2d^-;*>rO>aLfr2)7e0mSFvLVsAkVVg@4MbeP_WW1RM+#S>8)}7#&Uvk|~=$ z8?W*nsK11IC-#rJ3i(VAo~zE-3Jm8$;!MaJ0L>-yJgwca6wu4N!G`TTz5>VR%X*Fn z6D&yigcIxka11g%nZWa;se04M_UP~f)6?{WXhhJ~DEi6A4@a6JMGsVNV4%e>sFdKz zEe&g(B81%kk_xFCfrZ#JHmDwR8KhC+=wot+c9l7@C-n28AL3 zrc?NGfgS!;Jey>$hAwYzqF12V9DCApY;u+J+qKcJwb5-WL-Y(@=k{jr8pmYCYL-Tw zP!%vqd0u$Mu0oo6L3hm%H_$rlq5if0xKD)giH^FffD=6bT3 zBMjhpLRB})3S%FTfJs?ddt!4+H`1qCf(}PlVY=k#(d&(2db6QvKZ`q??2;y`MXzVg zMd%bbn$H~3vjB4FHhd)!a^msUF*dx5r?8_U4Kr5BbqxE1E<=%(#cuqSy+E1M0I;(*?HhPc}iWSWvibOUaD6=5CaOy(U#>a zTWt#Sm5{!No!m^$lsb3{6k8sl&n^zpWvz{*FZCX?VP#B$=qL)dZ4?@Y=_*suMbnO@ zr{P_y@hqxC^>jJs;)!6nnuDmoILXOcmhK4!^&R7rtn`%}%ddiSEm zxVf+#CkWBnCBd~d-8!&5Kds6pf3m5U39hQn0kEi^_GSc@Pt4FAtqoD8vKU;+Z_e@p z$`tZ+Y)Poo#V&aXoVT^hb+u4Q#rN`b9RTGpK2tbwAf<~tPq#c1()`9X>*GGBTyEI` zJ3BcxGDLT*h|q1z{q*LFV7)9u=CgZ2ZpL-iZsARGy)Xs}U&$=Y0cYN~yrHgcbY>pd zIY;kXy!>=a4*m&Xl2TSqcsi-nym?MqVTWrdcC-WqZHf@#RYS35Q5c80ukZEK$;(>E zy{wtuT^{H;K?|x^^=5Sl0?^KXAV81FLrp+_<}%qL>*6zZ-@naUFCDP%NalNE>;Y5P zVn21R^g0~!(k93wZDoY^EcV%KQvi(%FlwT;T2Ofai_#~1Pb|%leXeMf;7Ftn2v1pvD|N@qhgH|p$^D{MV8diAd^vyNRWI3g&wsyJ@%O*N#?vxd$SoByfKW*xT1?rWA1CU2K z)sXeV{l!qwO((ZDJ1VTE(n${3jpTuOQ??yzo5I#T=?V4X+)9d+r?0MVOz#tx zd*tK>>Oa{@-Rl6YusqSz30iY-8+yM0mysBHg<>K*u}1 zVY^bdJaDQTVoCro>BY|06;?=CUY{%i1TW|cJv%M5MIQ62n=E6{*!s-&!0Ga?w$Vav zrh-PT>76fHi2#RhCU|7?xnV3cIHO6ER}LBP`{2f)SB=&v0!eDbprGltHO;~5($G4v zLfQ08X5q`wg>5Z8%nHTD@Q%SENeeEh`@9}245WK>1TB;#Dp-pUj9lW#nOIMN+;eLq zAuA9xEJTS~8)TER1Hp^qJ;Afx-7vO!wz#I6kw$9S&X|V79s{MB=ipPjQl5783Zu-w z%GGt_GG@wEg7!`+5cSW_RX!hvB$otvEV`K7cTk zrd6X8pz;`tWjb3d7RKs>kVJZGWvCNkEb4XMRPg04n_gmd$wbwmVLiL2ht63W!ZTxA zc6+Pka=K`3!(zJ(MMYE!L~Jr|0vNe0U_5ot1b|Ivwc9<%ka7}HnmOh>v1nIywtz6f za#bX%++bz>C$54V`i-~l+Tx>;)z$Rtl^)vAQQvFf*({M>AV<+^34_-3F!!KZ68>!r z(jbQp?pg`$yw(v3f#GI|0N+>10sE0>9zeeitqJXNut>7JG4zrK>O~#(7UsbF7uU0! zuPSQLWcf;oBw?7vZKZSCfjF_O;hDmWGnAoBdw?ET>!v@Q;%~MO#ipl|(2tpnQq;~0 zInN~M;`Ro;4mXyl#CmkpTm~?Qs(1GBIPhFbNAyiKQaz9`J8tcd0ZmSqLe0|O%zVXC ztX0^F?C))D0w)5kD;|)ke&kUwZ0JIcMz=+GS-?D&Rcu9Xiy)<%U0XHkeMj{;U_n_f zojYRLls?~|Oik(OHfrgLUc1pxu~YpH=LG0_9$FSoN_Rz;*NkPrxk*E{18E*O`P)@& z5L$RNhLFj&j%K?ZNEFXUh(DL3Lz^Q+8~lNQ0wLn;AdsO$bpv41`KQ6^Kk0^dH@h{m z1n_UJ>=?@v+$P+R)&#;l+7%@K>CN=luCSZMRgJ&NiqU(!qn=7kCXIxQHJdgC1FAv1 z*9=QQiWL^rCapa^Kz~{9Zm-#0&)tbHcK&`wXE;jgb|%q~Av_kzKui_i7%wC4aiS@@ZE>Ucse>cq@(`D@yCaysEaX0ghehk;3Ybg|k<=>e=r`_r zuG^;+vP0R{F&C?D{FwUgEJkuPH1nYsqT%UOs zu06Xe7$~`jo0RmBBFDB1ad^yZF+l1V8lUVPoD`W-&6<-eS zm|9?Ax;s~6vnkJSDw9o&ZUCV`9HQ|r&k*g)4}?Ed9Rr?W;)WgGr`Io~$G1e5F}y3%9ZC;Lq~%O`D3iDXyy>p4 z(CMz;3`e_Iu;Qg?okgHOK&;&0Ra_E&hwZ4C7QgZGGwnXiNHz6u4bc88{K!4w#aE2T z&?Q^Li#*(A0TM;VM;bLf90BI<*%CeGg0K}~)b@-?2b%~FptzKs#8B*PEKO;|%4Ug| zwR%Yp7=K_rr3lKDlbw42_n&!Zxy`jR20n@dY~4C&J03P+ncl2X|GDk)@%%VnwU!5%5K?0zY{q&HwKXXrRzoTX&FzZG8_S*pRa3L4Li+rMjVl%xq=cN zCmx7lhOf`l!cA7yPVGsjaK~+@h3PAsf^^+!9%?_WvE4VC0Xoq4GNn@VBBc-3ZUi(Y zOK}DZXD;M`0IA{Bre^1mgur1HhcIq(J?PDngGc9X4p}Ta5z@&)!sy)7TFJl3yU9M) zi^x(uUjisK2N2g#5EB71n8AT`d7WAZGX(@dlW=F!n}RDGQ-w4*A|a*KEdjA;lX2#O z_1q+agRH#i;!UmFtpf8(i8=MqqeVX)LnHn5b|agoAECAkTuc!tbM~YM;w|MUy)oc$ zCfP&hH3P1chI>LTm$Y6cYUq^nLt9-;&@mB{luQQIn6rI-nKf11g-P=iyJPy6L8ImQ z9RYG}s$OgDDxz=cr}O^;WeH6(JZB(C_q-5V>};=KXU(wGo?&={m|DJwXJP9fgD1gy z(p^VGRI?%IQLqVG6PYdYB)@Un(NCN9z}nt6*`3K8Y*TEmv#sJiI_aD1BX)aFsxZ|J z0}u!PgkS1fCyiLAq0o39a`ZCDlbU@k^yFS}fBSY`JL&JXA;xjAV)3}t6zYcx$vJ)@ zX~KrZn}(Pa-4SGAu-S)EVIS&S=Qh)i_IYUc-T-;`hNJcTeglxq3gC;x3HEqs)tOPU zel6m3vT81lV~*Z)<|emt{U<>o1Fsbj4Wz5jjS`*NVpB1%$sFhL4NV5=D`!S(0{J5d zl+*t0ej4B7N2*QxL&E`T-V-A0o(NsK$whyduxkiJBD`Jo;oFrAU-u%RILM1#{QxLJOHN~9;xI+rfn zzl!c1kJ9?_Fx|Vqg__2LwD;^&>6x)Geg5p#^w^k>5_h_cH;xU|(LH0;r+A@2l{3K1 zPC5SXQ!sWPxN4bhiMrIkXR|*5i@QC>$Z&gMUKSp^@c*-ak=0t(c)!`*>O{auu`tZ- z=IHX>Ep+HTz78t_ga`#gpp~ouFR-4OY*SM2FkJ=Vnam*>_4kMAYwv0H@Zc(+y=WEb zmeBywsM~K2@Ep`-eg>q#^vq;3L083^=&_iWzWQD-{W#`3rYK1uZ9w=U%s0g)Han}R zUk>N;+d_!T;X7rbVe8UjqIOREp$O-z_NMwzTK}|8~0qH={-v@OltL-x|6iQXeB|L#Zrz3qq zt=V|P^p++L3|2&g>nCx{L#NKsFZ4yN_K~!tKbHb9lBd8lKcLNA66)&jdNWN7 zdFhOy;3;-9aMe{5LQ|Y)V@D^UxDaWZOw6kH3>!n6H-+fULBwqsB@~k}Y4w36bo+F( z&u6L{358GQ4g#X*=&`{7eQ*%e8)H8ehUPFX?H^oHUCjWRY%}0_5kA_Gbkf~3_2i%Q z(GO?*OY8G6ixP9rmI9W-pg`{+(8GgSU&x>?(d}DK^GlPZmEibB{bgr z>4spxnxb(`Pj1FEuyRURqLTJAtqE2p0z5^0T2t~OtLXV%A^Pqv*57Y@p)Wum+tq}~ zu1YVEdAnkAi_Zt2g`<7~YneA;{dDfGh8852B5@dLNl2N@&Y5e#&O$EMN~gDyt@Ogq z0C~;}wg71($vUAI`32m}xk)m%vp7i??F>@W&PMvcc|o%7Us~I&hTVAU`o54y-pwHa z*qI4-pYrtFc?}3i9Q$3LpHAPua~Hr-tb%m%sD>G{t1MQvDqy2QsSTueKxIms=Hx;c z0hi*Fn36<>ECPO_T;CZGA8{E6d%)F0O$b?{ttZ zi~=L63lYuK6}6dwftGVFcnuu>0$P=bzMOcuCs=G5?9-Fw&sLvy* zeYPd)=l4*!ll#swF;lHAGah?${n9mZ7yB6#nS4yrUsXFZ2!`u2sB+B7>3gy%x-8yD z2WJ;iVSA8Xjc-_i%s10zho29wZ4huwhXn)>k^3xWt}^|xzad<&rV6@8#7i}tn}azW zO~3}ouPXdcrzIN3ZOFsP<;%GyY7t{qp2rZ-^q`QG1|KIgKfw{1Dbq``ju)Ws(qm?J zIe684;;48`Urj9c+GdVU&I$vh*1}0+{bWyv9ggYQMCli5NiPYzN^40mM$+Rd_BLx$ z>$RwH-|shgjYm4-we)%diPy8y);U7z{z-@-jfwbMqo>NOVXqq62XcEspz^Ilz?9 zGFe~plzfnYek@WrRQci9VZm<}D{Xj9*)S6^Qhxwa?Ue52UN4PI`5dA@}e#T7P zM^<-k2d5!`zJ5<|F-Ww0jJ=hKa@cA?9c%+rMbgKBanGw$e)>mm6aBE)L-+T(8ra+J z#Y>vOa)C@@GFa)%_6F%MGamX?(nt3vBgY)fe(8zsc{V+26l8Hh^A%IyAY?h{HYo98 zzL^JRGl6`YgRE}K__BIb*AiRv1b?h|xkb@Y0|>*v*xRzSp53jH0<>nnBsxgNIKTs1gyw!@bj7fbuIj6H z*RTobl)lKH9XN}S^1&eO#=n2|ZKaF*BXoUw>3hs%PEOS0O+2dmCKXmD3agQ)uM{iK zEjpeqr+zvyN66DQ<-h#Qc3QE0Xw)vLV{nXfrf#)>{y}P&sV?mj2aQSQlibSOpCSj# zOcwJyNE(n_Bzn(|RSm4&F~snE&7=)mG6x$EyOx@#T>}kt-GHBt4@9CCB*x@RSAo&s zeO9KgdMFd6KMX9fSZ0u}28(nSZP>Y*?nwojoXVY;o#VV*rErnRG&MObZWNunb18jh zr_bZzl&3*F0BBONx%9@)m9=%~>PR|Ho?VN{JL|RC*xHThIfid-yE^GFyWAj$b)7T4 zNE-|bfMf{O!WJnt`*bwJNgMuRqXFA)id ztyiphok}60dqyMlW_oGJDy(oxSS@N&Cp+o6(GH!r?O;}Vder-y}isj?5E-o<=U2e~rv(Z>9=dn`oTG8-s=uA43y3()Ih zZR;VMh&GNFvIopJEOt=6jR~3gaXB7PY1wadJv!o}E6<6z-4ip(Y+@ADCXzIGRZ@O@ zIo+EH)Az@hQPqS88NsWy{vf@KQ{S2JFLfd&cwiE5AStBMoQcuE?-X*Ab1{%Dv}kS} zU9~63TYtpKN3tm=hCnMPX!l$*eQr-X{pf7}Hc!|3_Hnq|3b$durHYK&EBHKlgag;@ z>FEZhEhdrIh(@60dsp^ziXO+=Ij~w9Wakt+nPbvXlXt3Q3D1ft-NSphlIiVuKH26P z*4SmBfSoa>@?g#$n;FKyZR%7VDY_H9t%%+N1NQ!X{@Pl_4%4;!){_2?+o!HQfwb$S zdnSTCLfTBiTC2ub^bj980NAF^xTd;NM`H5`JMjRU{XT)5TSwc@Y@wIVJRKQ>*<>uy zg9su((mY)=7j8Nsd)@3X`<`kiBdxj*{!liPpB48h8K2ZuozTK& zy77m*wFcv!$c88d51mTm4>!=;$GxkOx06LqlsL8OO%xXplVFRSv9@(8f^h?B4@c;+ zhkUgA&>FhoA?&4XtK45g&;RIToa!v`sO{_M{6p>g96JE6VF9!A#lS>88@z!WG9^Ge zn4l0_PN3;4$oV2cR3>6hcw9TRJ`|+azST%KJmaK?zZJlvE2z&7y7^lzMBj27?(hab zJ$9&xGT#bWt!*3RWsumk-)KnHTjdP)s5 zY)R2MKMT?Of40o&#O6fa-(sHr<2NJXiUPF65AI0={^jDyOd&^K|7Hta_w!{94gm{{ ztKfX7Ar%F|kdkJ;*+}cY8KLHH`pJs_{^J`idhQz$`pP!~KA%!%;5%ZelJ|f4{Nf#) zwAXEBu*zm-CT^ra-M)!-eXhBc^Ar@ymn%HO$@FR=_=$)lSej?&w=N9mc{k^ve%hQ=#I_ zY}I?e9$sW0KRC}ZuTog4w&HaJxErxK%}4pK2ZJ>wWL3oi$7w-vm})xn>kZWV^)PjO z-D6s=Vu&S2?|iK_Qnwv;C1>t1z=SeG(ls$OIxtK>_}b!?^=2*rcsd5c(&6$sj*Y2v zp&NcT9;}g{!^ZL7j)#uP-yy*|W&#O=%u&GGVos29AsO(hHrP32{W_XFY(^jzamBBX z{7ZFFRo~F4H0@L@tofsyLW+Y>irgf%ea%8|JQ$^)JQ!{QJea?V6{?!FD}RO%FWaU*hEJz(B%ZhkVI1+-g>p>mo6}Pd*SO z?GayhtxAAbS7CI3=>Ee31Mxz^O8&PR0$in{{Y#*~3 zblL+As~Kh%?<{5magvwt7SgutLRNVIbkniO&?ILYt7G-M0?FdA$qCtk#LHB@CkLR% z%ln~+ko#8QbDo)96BPouLR0d_utEw&4iI#4J%R-4Y;&lV$+6`C?LmTvPA@#VithVLgs%KbXanbXrjS5X6j?X^ z+<^!0!ap=@I+QM)MQs9Xq{ig*%qFPyD+qCY#e1?9KIPmf=m8aBU@w9_H}e%`v`zM> zlV1K{7+G(Z)Zgwkx4Vj#9tOpN1R&*Rs)cRdv5vZ)Y@nZixkcMVPd^i+ce6Eg|Ciw= zu-BtBC;dAcS!(K?Zft=l`KxZzH^wM*ArW%`(l`oCOHYrY(!4?eacVneVY8Ry8Vl42`ZC6oW| zcB$aZ_m3r1X31LU1a~jEPN=RLyCUZS*ijm%%4v z4|=k^uUzCrcFvVqRC@SBK__DN=2oq71iESJ!z<|Rd;Rpxy^Zv_dmCu$heP!i_RRVL zW~Gsk@${dDgY>_T?ML1cCs9wtQU`N%@ZKgkU{`;3tBDV`pHZO)<>T@P9?ER+&|PK3#ZsGu@xNe3cgvP_UJf6sAtp`+zx0jK^odWx#63 z3$WNvek4ej{8uN91GgLJ46410mwdS;+( z_oB4Xbh?x~5Hij*v^SbmGmO^LZxG1UEw?_0Sy{gkM9WBq=A}) z*q+=$tzT*Ys%dT69$F=*my5+nn-_YiFZ$@K zUuq7%p2A2}7mY22-r1xRRP_atW0w<`*kpm~3vWmaLr{oS~ zg(vvHcz&zaxR@Ed5x~VAK#cP92}x|M%5umoj%uBpEvc=SzuP%ZMzu#G&FBmSD!QB@{DJn5-P-qR31YmP_Ud(iKb)^`4SWQ3j3M^#w(Xks09XM zj(^+dBh7&8s#OLg@(K=9l7tkde|@fzo_rk6Ue+uO#Ty^MC39sRdhu~T?fqo1*(|tK z=6s#QXQ^~B&i!hG#%pW>*Itos;hKUUo5RbR)n&-}i74$q64}Q27QEcizuY?2AGy&~ zEON%i7pW6+Y!`u0CusP_1}OxiJTNF`^Zd3?2I$X^!#rXIGGx&u*@d>>-qIlLsp~7+ zGhH~_?Je~7XPZhZRcU5kfpq+{tz>%w2`-;qMoXUX(u1G$(Z(n0*C|wv%|u15tf0F} z_b8o1bqB}?98a-CwCc0XbmWQv`9B+>@h3Xz@1JR)zAK{i;%6fCozH~h>{Mf)tQr8e zN)s8VQDwnxI%q$Md?|F}90N1TTr|fCm0;SKaH`;&uv2upoMlrZ>zj^!CPd#mvY8(E zgrCx%2?P|WCw>zm0cPD56mD9%&1>d%n}~+jwR(+z9f{C2SNf}%Kc=NePoZyrI!Kp2 zQE!EhBi0jHz`Kq{spB@Uv1mJL-hJ`Y4KP3t{d!ZFVn^GZPM%w3o3R$D_0ypsP)A(n z@QR)-%e8;fce8V1#v?$lsLQRb8hvaY9>vWAl)JW_tX#Wp?{e+a_e}>7YTUY2UY3(EM$U4kV9`0c>PY zxeQ=q&uvTU>v5)HM=EW-t%0uncIf0foG&o}P3W1B*r0H`P=^jwI#Ls`!GQNenU7SKH;pilq$mUqPxjqOQ5u47BmhRL*cctm-+jz6*OW)q?QJf#QZWdijYJ=R0fd>z~vEa zQNsr+Ng{t!Fv#*8&mM|@+HbSv;;1tPMG^0y_uUfNj3vsu)=QSaJT4^zfk@C3%%Dgk zNWS4z1pbxo{?gLLuI;?fBg@Bd5X}KVPVpQsU$vsC_LjxS_nZYghZdEw0o$k3=wi3xX({caQ%|WiAGs{3?9i?w>rGcBFE$5rUWzE5ET zg<3BR(~7wAhEKK7WuNj>=2I{#W?z*~rmg2M0$roJuTFJP)2Eu~-=7R^DqgBKILLFV zxqgNGRqPmNqN`AaIt_M~TBF|DT6Gs0pKPJn`C+=~lTCn5FTb!cK-)f9V;gE;hm^>9 z+5BSrWRuI?my2W9>3AW|g-;F?=#87WGMD3*8-w)bP1X4G*4y#tW#^xaWL0ybCWh!v zw0zY~4RrXXFiqYRq}UhzVp0VOL8t)8BuSxt z)3Xim#0t>iq^`@cL;jG-`7Kd-o9F7HOs|D>UpB+aQyE-X*5(>`g9hp31Hn}}u zv_x zX7*~jbQKOOr*PeeInA!BkOcKp0)gz06&7v;>WVnTPxpRbYqniRUAWd&P86p{dE zhBOw_-S!SC_+B4tI=6_qHDAEdKyXsqMirJSQe zTW<(Z{z6whb4h%ndtUaIk#<8P{qg!Reegn0jT@T+(dE0ZU)k#7?K1zFB4%fq<1{hG zU;jMRN;g~>q;swhbt`0La>_2GUc)n-jGIw2B{1DktFvYM=0fBXy@(alyXc_{qqO9D zaHZF~>7Uny=_l8@=<(}3Yq{x?kLZB|Au+E>_SG`EHWkoR;{;LCvvl!ws26*kufaNn zODckwQ!s;EgG16~-hCou2YQ(Y=_v_Ybo_~C3wFoM&13oH=#D3v==vw3E4aeT1QNDP z*<&y}k%2x{Z!}(DLYM>6wD!6X{rkdZyRuZ{QjwUNt_vOGM7!cH5xEN+YErVjP#v)y zpGOkCIY!6}0^&w_Rdvivc}nLy$U0D_U4 zB+N*d0Vq2|J=2uPJ#h35T zToY0CZcvd4TT~i4#A9Sn#oVc7MN*kc4OMsZByrKC(zG=iL%$wx*dxEz@b=^m`LhnP zRN5KEARU_wS%s<9$;tyK*x4(elzrx~Qk+>QZ3GN$!?3?a{;pLyvGTV|%^X&47Ak0( zp1m4?0G>ZiqHz5F4lZ`@?Rx*gn(HO3=%8brb#hss?)OswmxlRYM51X>!PIEpoM( zcF}vTYNf8Lnvo67yud6||6CH>lxvQrps!<)>xb?QAx2V|5}B+>xI!)>yoP-!xvbOI zKGt#yZw6+>Z&r@s(JUeh84rdUW~?Gd7k#X;+RdPzc6@9po&K>#YW-N0-o0`$y>w-h z+l{KX@Z|E?hr&)aLJMEIvW2d?FG5e<*9iBvX)&O1EKyoCe&{oXIYqlI5mkEnp~aNA z(%Wp~cjn!^rmY9`$B>k{>He>@(y}XqKASZLluMUPAe8jG~oMGFh^aL~xiaMQji!3Opj@tU(G#vINmqX)+5m4=6^v2S=-|V_7|LBiVbOa& z(y&$@DV|BWdW^HQiM50PxZLk77vpLENQA8T_opj@>-b)D363&|+G0dt@8INir0Iiv zSDuW#n5#H{BXsu_4fL5SI7BFW`?(HF7Fd|xd0&LID+02WhrRE@w3%q1qo+TN)y~BW zb4g@Le7J!={b5i_O09x`$WEK}18B|Tq3t&8DXWa472OfFzHL(+?#pM3l~9Ync1kyG zsFt4;&N4^!A8v7A?{p58FmpLTuy%UqLqV%mDLx*(7e9n--VZtH%OCQrPoySK-09{t zx$VR_wGbS2bx@}2s9i;Y}zX2d^3V!{6Xhl z9@+~|6lqc=|It@Wdr|wFOX(2{ta44sadHd-q-Rffv_K2<3|)9pv&A9ZhgKo?Wo^^i%Nprt7cC*rG0A-UeJ5&kURF&@j(LKJc_9N4 zk}h|tBP>vQ>QX;Fda19v761+vijOT`T8#wW19BCoD#BI4RzLNqUiP@9+*g9GzBEFY zT_oJ5Bd~{FJQiLVC^f=dG`1SgaE^&w?;OVlYUI@-Un8Nn(=A^QQ1!*p))P*v z*E-=;Cq*xAJ}0mTRklhwgeSa_3)90piPu#UKLCHi&YP4=y-85OfN+pe`U6XpoEyVO zLFoJ6X{Lw1;~jMK1h9>rKcOisF}2ZGy~c#pDl)l#)e`6{&LmZmQInSUd*wSPw_3~} zl-8=|_}mFMtfMvmjg5llRqJWn#a&iwiN~cYFK(s3e!x$6U))$DL9!0|&c$o!*B|iE z|9l`4wQ-C

`uZ6uHd^fIjwth7Qz-NuV+$3gzb&+gov>U;5!12RS^3@G|(*v*)ob zpz8xsTKWN$AjBh1`hdHO>86nbOop4~Mrvd~le&3|-F$!xUIlQ_)yZP^C8u^EZJb%uz2#S>O<-9EE>5aLhIk}re<9Ew@Xl< zY_5O|9C^CmIR4GuCOL|P6_pl(lv8Z(x#*Inwbo+HP0b@R@!)fK@!-=@LnCALN6?*kNzX>_hacyLj)!du&ObIo}T_Ic)8*zbaU-m`ublR+-?M} zRXG}LlFf2I-}%Q8y5_Gzy5gV1E%lt()irR!BIE?0BuHEcQI1x>xQYrdo}FK|Jp?T{~9#fo?958oBwqRRsGdZFZ?TKwWf0ijtFN# zzx_)C;-+mh`m4os{X5YW9tH}K0esN|2~3x?@X+*96;EeM?kKz z4rk0dd2*=qHAnbW*brr;o*nU7(f01b z2tB%@%DAZdq!6|Jd!9b_mnh}`67ksMa6_{(Aa+yYg2vk07op1kU#k4rFJgYiWIKFs zg%Gh)9>Pj_>EE9=+V^Qb#Ce|j)@bQw>aSw)y8buX$;Lh(j?&6PzpiISxK0gY=~%6n^6#dW zD*fJW{9e-*>G)<#@e2$iaj=Y-ERF!08HkSJIi}Fn1H^EqbbMb%j$LqY%<(7T9Y*^-3&S>^uG$>R$ju_Z`ME%I z?KuCfMg(nk{73MD&VMdOHNWuJ1G<}bj3aevy73pMdA&%rF9oOJIU%)z+|M`K$^zU; zSN|!ZfrCCT6p~IjwJ2jz+WsgoCv|sq$kH`lkl;+Gl_W`c{xm7FMHcONH@q#<)C<= z-U?7>rtvjxo+%T|X{jU`8hoaa);!-dDrU4OG7{G>`TO;KX5~6K)J6R$mn(^rKTTl- zzyfbF(vOe0yzr~#R;y$yA(ED&JASn!V1@V8Pf{DxM$!$)nuKrK67li=Ps zeACWGp5A!7fogsZH2rLdUU}9_-+R`n+6S6xFKXi_e!7Uh_)~|m|0E6Mhyg?S}Oh(2J=#JXuXvcfVOzQcacx!MJH?9uu;fM;+Jx+CNhKNe!7BRZ_af`XE@7 z-Ft?2^^Hk$J{<3b&=g&X5|p#Y@x>aHlPi5$%1sx)6CmU52wnEJ%lOX2n%8*opQlyR z)&Ik>lCIaW)q308KI5kon#b68rskrFxBW%|e{6CyW}Z~=S;{cVlWV7XN*g@tnBhQd zOn#8)JE&RRxc4M1-YZ_&YP@oi=5e{EfZO8vQo$PI?US@|2#!NL)-*vGV#JYWEtsTCL5v$gMRYEh{#$Eo5x-Xp6KKtzdamQXNZP5~M&*zWj#8hCM{v-Uu7l zW6v*VOQ+%-GB8sBPktj}{PGMf*y)B+l@P9MTg>h3k!BRn2HwwPpjBmIN#5*OM{m6z zG&Y2h$MNgey~gf3t(SiIdLw=Rb&tP8tw|@okRYawS4an4@_K{{ue<5M>-98_Tk0)Z zU^(P)3XoaNjRl@BV!-XnH zTR|gf)7BVI+ccEozO1ZBdzcZ~O>>143hyK`Fj||Cl zMUi7F{Bb2^{%E7#KSt=3KZcwrh%k?YUDOPeGAD1ow!+xz(6aRF*F47K4tyl?2d@R! znq`tkC4Wgx@^A)~{h^ObUvOGrm2u$#qEEfnXmm_KpbEnps^gA;Tf`<+W3^NJn{mw^ zXqDJ&KDz3)8vHlXP|M z0NJinHiwO`d9`K6j8EHOkxv|PS!bhmL~Amh!a1XJL<`aNe+anUtcrx@Rxg<{9)--( z`~TowA~}DUFBG%OU=OeIyy}aeV^b+zwDk{g`TkIE{M4_Va&n!}-XjYAAY23v9Hh8( z6q6>V8HNrFVj^R-!tggi$s}hLZ?4pm0~7>cqN-^}_CKtIZ9DYr2r^Yiwdw}>G8AuI zQ18zCC3rqX@)_qfX_0=eQ!8KKG1sfgeVR7$<^-k=9<$udoFQkEl)@lRQ-IM!&rmZ38yJ6$b)3jYt zPVr)NUP5YClpt0cZ;hjSA+|NAYskfr<&vP2f8T)Qa8I*RcP0nlU;K1OapzYXz4f~g z{pxpK~at^6#!N9;;h^J@sSbfoM0waTJlZ#P` zJTBPpgd=76+0+9)U^Ae6P(`k&o5*xc0Vb*gE*@B1ki5a33u7z&tC|zK9Jo}D{MAU8 zS1p@+?^uwG3!%_#oPESY$ke#@JJgf?t=p_a#>^fw+;sPETh>V&kI$4Kg;k+#ARl># zmj{Qp3ri$ReG?=0+b|vYt&{fuwq_AhO#sL;T>ms-A}N3fWS6tI#^aDPVrM|Xj-7!m ze1YHkx7p|L9n|@Xg84QGq^`F9%M+`L8K4$!qEuX_PGy(p=%nv%r>ft2jBjp%S%3RC z9yj7tAeoaO9Hnvx@J-)$-{WEATmGDI6{?dP(XCoj8wz~z*JXf*)caxc6c;(?>JKP( zfy6@f-WEjEm}+P@MzPO6Xi=L@I!uVo`%yS%N4Nc^(Q0ML1bNbADKkIXumyxYBctfifi4(hGx)*jS`}kajoP5?#w~laMcrNj%Y&GAj4J39ROFH2LVahPDP|+u z#F;A}+Y$H9<|n5L=bztB+g=S&+pB)m*8PusfQ`llBQQwsz7nmsz#x@vOW0^0JTlj#ZdINVeKpR-PsQ!~6Jt?MvIdC-(b>nIjz?iG~Od!>oC;lGPt zX#h8dzZ)9}`gdtAZ!HE&PpOGje|H$S4nd236tKk@9R_-;+6fb|7l(e? z*w_Q69rh!uw%3HljcpI0W;Z?|rX!&NYl-(0D&fLD1BPa(PlI@J0bZ=Bd3j(f6NMa8 z_(V{)a=$Fs+knDRrE1jBGh*Ve6dC)uPqrRyRV!>Zmu}V*vv_@V6^sum0h%fwjOUNH z<4YL3w54wMFcRmH5zXB}Re3n?=lr^%1wrjt0{56D!WNuZ24Bw_|K6z~WBFC@>8gyS z1gzAfYI`#!t-%w6@|Fl4a1{jUiCw{G2{Rc#*vXt)kG6#TzYYM)!Hb&6OwD&8PvQt& z_^ZXn?LAt(@ko#64~b*e1vf>hL}c)Hai~T&jt^+Ql|IfZD;jV(QE?<*%i~a}Yg(}y za)_N-pWp6Nvae!H~+H9iV?!>K}&QRZ|>5NLo_J7 zim_}LIEVNCGPuMnRHzg>7gn^Q%hwPb`lFe0dtm5$;%btB4)q-95=ajIL3)Yrosjn4>I z$yUOc>%$Vev|bCXtGu^E0h40dC*)M6kShViSEX`Dwt>_c_Y7h=-!`b>+pru@6qRIT z2DMhY?FFB)Xi)P|;xDcPU;sg|<3qkOubuM7cC`UwatchHoUj5#WhbYKS&f!7LR|48 z_rgI^i5s&2AeUDa(_yVBSR(Bj|F2J5vBa`Rl`d4P0iS)~98>jxK@P@pu+!K!pfy?e z>m^b=&zK#+lLlNxXf=qvwh8?(xu5elqMX>2@?qr~ zr(&Z`Bxl^^1Ij(g2O+|Wo|;0kt{L2O@DeU2ksHs#&7hj+Tt;8N=5Ch~PcTLp*JAcm ziO4p04>?tk209hb&KaZpO}ef4KYHTlE~9opTW$pS)S3aflKnrgr(-{_F&y0-< z+6K8~>$5d-YU6|3!`foaQHeS?8S@csYi&fOR9t&+NOnu0Vg#}}co1^N#jWV-_afSc z6Ykq=xTD%B#$^NG<;J7hjmFbEv{01~{s+Bulm9_)gLckBWE8WF20a0?_Q7LK+E+Bo z6blKymXJ11YtinkisA<2_@DVJ_Wx63{I*3Km->6kMUu3XoYC8=^*#8BR_(i*k=?HO z9=v$5_Lqh9>z{caylk0vs%BiaU2_>fUJiQZhuh)sp0q+kiV0^4!Ukgs*jhj6TcLeI zbK7uM?SD{<1I6+;p6)XqU#b0*zWp=TgHNy0YBeJdS$*(NCu{pps`oK!QNxdFoQI9o zYqgLCTQNH1iy99OuhoK8kYbo2O!R}Zo!W|%uxE~IbjxxvKEFXbic#QT9mo#Az6T>4 zwbV%-MAGqD56PlZ_23f5J>2&jwu5r=8;@Q5X`j*7r!|Ky!)NtK`y#&BBFEo@=1v)F z`f>eaALiy?+qF$b{|+tKVP)?aN~0K}j-#6M@+pR~8vBtIf@FvKBf73P%2B>E!SQ5@i#{YP*IkJG>-UK!Nr&K5Exm zn^eMQZ_!IaF`7b(;~wUohns$a%F>)NgK8sO9Q%TwEcMr$#2uJLIR46W_Zh8^ZS@+z zw`=Q#s^I{1H#YDhQ7T~!_iBMvC(9{iGQy5tftJ z7Ux-0(@&!H@*Q?&(bVP{u@HS0LqbuJn+=wU=i@@N=uoZC~|8! z@xPo3X6Na{ppO-S2b*X9W@s@?&8DQ{Q{U{kVeXX#p$1f*%h*iJG=Zx`IXo2Fm&fB9 z(g^lUvNe?iBBQBWYdE*ISD!+KOt}KvrqhXHYKWY%AYTkMHcg&|_k#10Nwie+$GqjT z8pLb|)Spf@j{LF8saV!n*`+N1cj_T#3L!r}lU7|ZY+EpN>rdBw&EPzb@>&{?V@#z} z@^O@Yq$wlFI%mu+(*iX$TQ|c6uE?6w(yGQyiiG07+Ud{_!)>0pTkAS;ddufW<<~p3yu;p-TW1xENn#L20!3*wO0e_qn@U$_gTj8JzCURX>fqO zll2gvrNf%Lu?~j0#Ok@!;IPV(;sQqdFhKSzE}#p|38(PV<36q3*l)+2UV1#zh>v$< zq-=}40q173vO$p$(uFfpALGM1@Cg%qMjkPg&tLPdptkuCLR; zl^0hhmR9#XmgTiS^cl7~ZS5)^ahznUF7-du18_N#z}eR-dB8p+_Kjh$@)gB}DrJpU zao`y_>{9;6xVcsfc)&w&&IDXh^8?*gwC(97C}Z9HRLHo$7GhBUl>eAbJ|9vJL!uI( zs>U{oy!2$eQ~Dx~eL4JQ5ih7{GI-yHe3eZNoC-8n5+XK16-dyGsr6*RmtF)!;09x1 zjphk)3Be;ucBBzVK#CWcv8_t;Bd-bWfy$pUOGDt(P*$b(tJ#U(_9UX$PuA4bjQ@Z3 z-a9_7;`#&C-0fAp*>W$~#!arcTejuiCEM7>h*h&>m6f%U3lP>0kN_bxgD1cb2>3@x z2sQZy0-+fK2^~TxNeC@KXh|?7p(OCW=gi!>E3XhTf%pD-`vH0GncmKvIc;L#O38~| zq9ikO#cJYzp$nuk(jjNML~(x~Np%*j;yQfrAqFjZ4ttTWy<^|Yj~4BF>d{<~jIqbd z@{Z@IKs`t?GVuFw#h?3;Lj-ycm+X2n=j~o|~!9eWm}-+vk3?aNpk^DFj-GLuV3Xmr4n= z1*~5KGb7rr`|f$9c;B^;Kzr)bf_?iR$=mnsNAl$N*9yGZMuoEm1jw;#){1_Eu@a%O zN`h>>hQozrt%qm?T8ZFafNBKZzk98i0f)k%!wydxT?K&^nGT?5ExY%Pex(0qC8tgG z7fMGNUZ3xT#4}Y}K7>00=qRG2bsy@gA;0XxoFiH>PWVn8bYpRB?YsHCg0W_-Xw7hL zcw}ib&xN>^A6D8ebV%>J@!{eEID4YKM${Pb4BB|jxc6Q0aQ@&hkzw#VLGoTM%;D)l zaGoH8l`RjKOu_)P#M`&VT48tB4A07(lx2Ca4M^dAzCS!PMBY{b#9vS;N~Y#ge;e_P-(fEzf{DZ8n=))V?awu=-N(^L z?EB$Ea6|l1_B7qscBo^Ut}>p0T~D)`WwHTkvsYSxc{BBmyY|g~sQ=O|V)#)_m{}qk zxT9G_c_}kWcxSOWt|a5AVx@YuEi#$Gjm-`5Q4OvyhaN26_m>BAYc+NLWe~)Jy~_z4ZheAeoeYa|S4pe@>9N8VY;iH-t3#8PL3>B}t_~cYb$rAtxR=?*T#T1bA`aq` zf%eJw>eZYq@S|IxP!1DW-fV7p)3G4i+{@OlmSyX334IOBjeQ-j z9R788V7N*+=H#le($N3?9#i7r5%N>N=jvrsrWPIu) zQj=6uff5{b&J_2XgX;7{IHnA>uFU5|IqO(ad^}!b#Po4lDY@&$tAnQtNS~5+n^XgG zlmo~XI=wL?_G`>OnAKp7%KoUs3nGHXXY5ijD&l7iU|N&#*17M|-wZA`Em8_Q=5xwE z`Ph)@K|E;1L!hdQq@EVs>R{;vl|c8;{w$ThSOWIy^}oS$Zy+FycB|?tb)pm664;sJ zC(FmyiRok+i;;k{QjGq-C!WjOVxGRTM{ZhbMOeADkh|I*D&hDQwjzl(dL&x=YmNd& zgMh=-nGEG0cKpPB=RRI^EcrV%&CnyB3R2wVE^m#iNyth`MVuWq665tyO_t}a2dgt^ zf2%y1aGjgd#C@xOU%c<&Q~7hqrLJj&>S`B|T6@M#uRTlJYwsla@AY6A%C-p9L*{M} z%isf7PsrqbbN3qP-!BlG2#(lwU&>v&NGH!VUx8Zg?puu|l49QlS%0R!Z z>cu>UW-2HU2*0Aou#iq^GYfo>u-Qyje|@tjwiWK^<;y=1!$xL8B|SzmkraDe*l^h} zF3tnPhqXXh$RXLt{P*>eRJDGn&Q%v}Y9x?Kf817;PKNL|p<%c5II)`R$| zfy9KKAyOIYv1l+D{jL#(^%!BeONM!)?oL>j0AreJPHh9|*$M_^L4&N71)?$LbTBXi ziUu4>b@Ne>YGzb`mjOPtJoCq5-in3-wFt zpt99*J+8)ebz;bpylUHRSQ*VHwLpzO5eCdAFjp z6Ss;HBcW7DTp8Lvs!jMd7g)FjXr(1i0J-5dF$!Lj;;qUwM83aOOuz+K^z-@vtk^AQ zo(opUvIa4vs2(&5y|=<8LXyS8@CoCm${h`uy+7YhYBM$LorpRt58W=76^9kT!KHqT z3=Nz7-uFe{B0osygssUNqD`-MC}kduhR{C)6o&U>9~t};CI%DL0v?`hYZN17{T+~) zoNxzZ2mS95UU_Sy7)3Df957%s6i}qO1G<&EuoLM`DeS_7cY&9+<8Dw!P{%GrjR2JB z8olg=j(Zzjylw%ULbTP9*m8nw*(T=81@~ZJ?%XE8r=wk~?oxC*%WLitvt>>b@Z0Ev zqF<@2R;xDY{i7D2mJu*_Q7^|O2}RG#vzs6>fZjn}J7b6_m4TI*@BI^cp!Ge4V3EJ^wD7Lp_hQRX9EjmQj0cqRQ3M*(|f}6N8|B*AR#L zW;@m^HxFmQId&$uK zVpuQ)4m++n;6cbI?nk>Xx=Q2}2N^(*_;R(T&HcEX9WCz z&BF+g=Y@8Vkt*XNI$TU^yw&Dlu=ii-w5c+_S@dyxYIn6uaR5wgCrS}Ro1 z##p}exWH>02~hMk4f5DFu_12-&?z{;`XwYUW~{1OKGr6V_HsBT!`nqAxwFNCL$O4g zY}qb4BX}OO8P3%kTS*)%-`_4~$`2n07MRx#Aui6p8o8}qOs&pZ(Fn7B@F1WX2n3}V z8eSm4TE%$_;bPQUV{-$28K&b?)OdS2zH9fi{elmxANOC`_JqhUb=4?D=c-Z50fH8# zE`oX|(N(r<5tFCM(oLfH7*pM3Rh>UoFUg5ii`n^}C~r@Q#s1d1tzcf@j0|>&8F)lN z9ZRK?OXZpl(Uc39W?;ap2~^<;@{v<8M(>_1=*%k(f-VL*;cFm5)3$DR%2Krj@R9^D=#m98`zfHf#7U$gPq(3} zRmp zf?D`qx;&_+J5g#veQiKunu5#5QPi@#3P(goBe-jXZDi{SAYOLu60^z4mMxdy-CbKJ zAJ`?P53dJ4$5GD>3&41~7UQD6^mE=s%OvEm-C{wFQ@dI*xn%B2NE;@u@Ly8_^SZ7b z)RrVpzQa0Ldf3h`ohncGgMh!sdR)=vzjuo{^Kq#G4pF`Lt_FHhjq^hHM=@10yr4BT ztIJeWsz%n^659qb(*K?)j>>b}41Fh2sr>7SV!DIP^i$U+f#!uc--m6K@v0U-9gH?p z%B9sEolL6FenNiWhp6Riz7)tlw=)RV=Sh5iO| zfnw`iP{NfqjU0xOC4JCqV`>86C>jouTS0{7*_syQST}A(viTG-d`Pf?c(X?TnT|(&WwfiAC|^dxVjLSx z$xc&4V1FJnP4-EOYds$5L3GH+lVWW!NJ?$Yhm#}rh(&pU7+Ese7PnroRe>eub^z7y zPkb;_Eh{tG(1z~HLU`{?~Hwh=okN1jxef=D*XDnJ>Mm9i-q)f<1+eN<< zc7U#}YbTG=YLIK8(x8^JDM}3w`3&OCrkY8+8Lt)aM+EwxBvN3-`7X_vI!#{tZLxSD z(MlviuygR5TvDqz7OtiVvhS&4NU5tyZ@^u6c0mbVyOyS~iruiOljZ5iW(H^KM0wMx zVqh`^nyf0G@`7GH-0DI>RV_YWM`siMr{GGWuEmM8byTwz1mROsEs;tw&Lw*eGdAOaCx0(uIDW*Te7@-LDh;S z6%|WXt*lxhKRsQHA!2~UQgYmP#7X^3i&Xog#OkObTO7E)YL`u~iKE82w9Tzc`zwRL zuhtGa6j{BjYC#1zk&0aieWoGb6|?(AyCmUwyP^r$v40i)=9+Jf|Lq**yE@uqO!#)q zrbf)Yv}mmR@ic{yg~>lq!avA&S-nl$>>)5?2T7 zcY^Pa3~D$SY<3^B9N2W2K)dAOA!Dg`GB zM3z#VDT>B}tUwizTywM^tjV4B>~f9p0HC!;y)km$CpVvoi|F1~Q4(lufwoE`ZbtHs z7E!#~>!6ze2PbM19z`LfXoCkJMJ3g4wPZpd7UOuNB(D8w`pXxW(c=a(t64yn?O0T* z7M8E)SpER(fm};3YlZ(D2EeQlq^>$iGE*Y$ri98_X{BSgR$9qPNt4pRa5)b=1R79@ z;DW&$YEH=0&k}=|M5;*xN~tiY9(eFlgW3@ORDO^**11))Lj4r9caR^PPCB{ve@~1o z@a=F^Xo67VfoCLiKrZ_p{PlZi4!QaOan{M*1Am2_2TJ7W-xE{e|4TJT-v2#uXg;3V zX|KcTq`iTM!}ZJu>HMNiuRDazcr2F|q-}<@`jqt`VxxTjY%yYU06|CF%?Gwe$3m6I zTMrLdDZ!1ZT_~xF=r)_yMSgZH$g%F4>YXak5kFR5`F*islDi|Waz<=qYL54iL%MM$ zHp+q5mkv4j95F02v#lK#t(B;HmCJJd!B!5WD(jN$g$4cH_2?V_$mc8vYtO6+V+& zJ`;T|5>^4YGb~?}cU^$nmiVzK7!jmJ=)C6RuZAWB2zxGxRhcSU>88~I45CBiaY3j2Y@e8d2bJ)_tTT+=%nQW?k7rwaTU`GA$3V^Fej*Bv$;RS0 zN@=7sz_q|Zna^mi9xGJp6J;7scx(K#v$te6xXJhdX-)z!Mypb4Nl zOWMdg^4}MU!K0!)dC+TaAu|R-2Kr$>F2D`Oj6Cx?=&{Ye0X)+o zQcMiHp$5v4uDUw8`39ILw@9!r3*<}9mHARi@mG%rcZ3dk{S9IumcsUfl~BUFSquVa zBfhn9o9_}MLM$NzUW9J99PmR?I4p<>O`#}=y9-?xE`y>p zDRSol@gW`{=ztzXD|T=~-toU;wY>Q*f%odc3ENr+L;lOQV&%-bT9ovU;)KD2R!|Kg zwPDp*IvN#N?zmd4*i0tEAj0O^o{HI#BMT8YeE=jKxIG$GdWp-Yh8-Fi`i8&u&H4KTZE(yQ3B4ff*l;EzPv@DL1k zP^;lV`77eJF>G>`3nyq>^=?uezD7)&;-OED@NHw8T@|i#Uc81%7g|}T&>hFRJLGNG zh{cQjv}oX&lYtRjs-PEDM}DoyD4$8Q#s%nfhQ4bD$19a&#x?- zx4c}sekEWL^he4A#+Cz?Bj11iHX5rO^sH*lLxL7_dwRt+^AnWl85rF+`b;1b80OIC`8^`xJcKc`EqQb zRfLygNf%rlUL2DRqyhIJWmvBINPF{o(RWo4q$wCj_VoHlq`72)YF;I1$CMHRH8nUk zIyJElO)0Xzpu>?<)>aUCTiq1Y(d#$lu~v zsf(qWgYLz`;JL+es$GO02bw>sVt2G&;HfgXNLSaRi#%>hDN&6W$ zFrb`wUlaueJ}h**Pw)&AYi3Pb`NoZ6N1eyGd-8zapm`)DwKCn(PxE11R5Q1#vo-=1 zJtAwFNaC0fhN@1HYPyZ^Fo8=V?)-1xB>FB3F%xWcXMMe@CWs0ZS-{C*P+?yhvx#%I zq#jC*cx}w^*I;T@uO08oHb|dcu7!)_c{hu{c)cvokl+8An4Iasajwdz&;)ts&%}gq znEhZ=Q*mCy=B>!%Sq(HMhyPrxUJ51L_Bz9fB0d4Uy=(FV0vUdCh+By3k*0fz>yW}? zXYMJwBKKB{{E;N-H54qf9pYM`kjb)3_WO?Mn<{5lgG{>@Z6Gc<*`k#KTv~eT(Ek&A zAz4B>N3u4{2_5|&O%c=t)bq44=+VT8& zq#*-B@vU2x@H!#OZV|JS(DcDFP~(7wy483e_d-cRzi{DOLR(uM$KEBa>((kx0xsZo zZP4_8^n@oIlM2?Lz9~@10A*-Kp)Q3dHM+hf9k^oSV8n?qv~=c6Bf?Wg{TpV z=xSuc&`U)tS^MjvQmcO-FL5%|ap57avRs5`C$1AR=XSBm>*Z%77|^`fXcY z*Sb|dO6{6gp(s~CtDs~>acOxnyXi=thNUIW zS#T`s<57pL0(1t|&dPMa_GC0%?8MRtvsq=;%sM}WCtdPHw~>aFWjCU=}W!nt7# zW)>hc8g|qW$;7I%{j-If z-6D4#6jOph@I#etp1kd#SUUpts?8m#u9fKS1xj_7eYL6XQ1`B~d&RorgZNs^Ik@#X z3G%f?YZ=2&=u?d;@mwKR)YM$95}DA+SBV>>N)l9@aZDo@QI-5SmKiHG=)M)iJyBuS+3TJ#^-YfK^Z$VoeEPG<~D+FY8+}d zodd2-Gj8Gk3hrS#Vyl%*LH_g-Q6}#STBGFLUyD9{d`sGhEZ}BE z+f}o)=YxSEtFXTh3_JUU3m@*17z9pB{O?sw@&_SnH0~pGYrZ>VO_v2>D@TsM9}Jlh zVQcV=FvWDSvnGv7TAH=MK3tF=JFXh?Nd5@HoeysQn8yTc6s>}OArb;9y(dl(Nk9Xt zGOmi0>+Tn8{C+ADuSLr1?iZu{{>qv*Vob=F?-w7+@`#mv>pvb4-*&m7N!=kk9}=4e zMA0bn#Ybv=TB{|DiRZ`Ia7M_79ujXyBEUDWvw~Sa6?V_VqIhxu3Mxxr-Jou^u9#x2 zDnCZ*e6Y52BQ3=i@nCxETNcj*@A(wy|~<2CE)~f?OH3;8MH-y2V7?uwk$K!MbF&|Xg_%X8)G zN5zmp!1hxvPk9u?)TvQx(u%NJrO2-7$q3DpJ*?b^d`?38W@U#>pǛ@u$c%+)wS z?yaj|w9(i!T z*(e{3T78F5Pz{vLG@q5@@|@$XBDvv7u@qj4>k^<>YRzorXIkUskE*PkKBVqz z>)`6fK#Ipmd2XhaFDLy@(C_jl9}ytvWBvLu@ewPC;X*0V)IV)I52L%T!m(=84+0ys6om zDHlME$;XSQv02tWB_>58IKS!A-b9#6?t4mncWgG+#g0@kHyAdrsKX&%VLQERJpgj_ z@5RYU*f^ya1qYi+UD<3?I@=sC4X&0(E-+ZR6Ys~H^El8#)B&gnHM{IbOQmZ@S@1Qi zv1@=H#o3DHsYvd8B(ku@8Y%C3 zTFjXl!r{tKrs<-{B>}hyoF}jXmZGg4TG5v<_xu>VJJ~J+^5x#4Q}g7CXGD1rK0@|9eK{4h|rPLssR12?kev*j$};Rj{e3s%_sbFDbN2r1h*g3O*C52wH~i za^|y;qTEtwWfw7178(bdlnZboQV2fhSx68HMp&8hwr9nBAU?{Clbyxl`=1j>%PU)~ z8M5s;u^JDPLVDP^OAZ`iL9uZqI0X|%Sd)rFq=1)toP$lp*CcuO2y4Q8w@oL|n<8qQ z{UA}y8R}|M{LoNSo4TP)P`liGmmVv(kFs)clqa@sl=F_Z=HQ`7w6K}6Ea*EP$!nKARQy+qLq;?)tB zxXhyEs+Sj4^mg_jq>AH z#KQS05Vdk>zrd-B)-ei@zL*&~_P0?7S2MKFx#=FrJY;U0HL`)oZ{-(6O#^TBX0^O% z-z%I8)WFd!LIk-4#a~RO0s+|^hLfmF@PzGddT1ZZ?c=RJgFueNz=Kj%0dvt=r#~>N zFwl@!w^>6=yigj8DYA#qlT!3nElJ4p-+?2HD46CTZ4}mRm)DJl`0mi#UJ!z?CI!XrO zmE>lGki7h0yftP{h`$}xWw`4A-3bpZ%!=VoWoZyra*Ej&1KVXusWnk#g5r6LH1KwgTGS3LcSq8nj5n7(|-+zH|!jJwU ziilL(av)dkDaCrcved%cMbLffsM;OdDc>x$W{&e?gF}HwjR0G{Y-lu0axhl)B@ax) zjw&42a?nI8H`m)@-UIa0NyWszfc4?Wq{I zdJ#Rxq6rV*c1QaJ&)Tr^0I`8oz7>tFGzaqguZh~>z7{+Uro~60Dj+T8bdXa9u{fc9 z1FBpetg>tOhvUj+i`tk>bln^a1Pf;DK))<8ArIP>L0+67u%6aa|`+E`0cyqLLF%Tyz)$xxp1$mYL_8G!&@ zS*RiMXMYu&3ad#i-;@Xe8B|@VLr1+KN+S`RCy=J8S(m3Q#5y_k4J@0JCRu$3QCRu~B-GFgqprQ&iEeQSB-xA|< zap=+$G^#P)1r@Muk)>~o!P5iijN=_1S67ytOynZMxQ(D}CYcz3E11$=y_E$nKoovmKv)&OSWjxO+UX(?ZxG>?o&pwC4Uq1ad+3|3G+cn%dLMC zgP|7;fgm?ZUide$Iya%vdsrLAGPe5TWNU;h{=3*Ittl4XVl1DJYZ$EQXnV+hQ>=2i zXA17x|JWi5a=nPqr<=bVwp%13{(zEP^baT#Pn&8jnBu|O)>0aT^w5Dh3a1y^bjSy^ zY!hAN{*>f@a_GC_pB|{jq2>FgS`)|nx014}rj4S+PX()FL!HqFB^MzpaWjXOGYwT@ z|M6I*4@|YP`=M{T2Rum8YHZ;)Jw*+2&{``$+f}29P@pOh1h|F&_K>JGyLqyl^d9WL zo|$T8`TbFZ&FxGsd_hZ#!3)29m-bXweVK^fndruT)d&snaTi}O?mn{1F z9Agb|!*N2Z9Q?kRk{z%;p>rblf|zVNhOUj^cVk1z;+0lE`JH2|qHVa^?JCu)n}$>c zJ&QpjaaPc=yHb3^Wf4n<(PpY>6etel6Q_rgPJ0a+$7xgx6TosryRP^^EQi@syk>$t z@PQZ=U@Duj!)qVFqqt(F=GOJ(-IMB(yqwK`fHvZsA(bs2GZRIfE^;*Y346qq}& zii)IyJR&iYJc@ApqKb`YqEUd zQ?aHvf{jQ5WgdUk+}d5lL6^H0Sp5ooz-@SPh9iRWaJ0cWLT9_&^>5KM#tjoPRVL7= zt$LK8k#!mwG6;HtHVz@>ROy#sF4pxVn(^m_B z4;|2=vz&1!C7lJ8A;8jk ze9279%1?R-XK)rz2i$ve2&0j39wr6pp0HUyZj3c2@#AO%HKP`SZ-s+#!d#hJKB`zU zJK+$>&Yjw#fWJu{0g~j_4o67g0oApOBYnj2)|VC*U8Jzh>gmu?g@fItLTQiOaN0p4vWUjBKOwN}oU4Svdnb8%m8a$9Ai=)_!WPb-*p z${ibdYUX~07Q#V;DqlYBwuUUg6Yv1oTq8H^!8si)lu2`*!`4dvC#pcHw_%@RCCb)0 zxbSZCSSN=<%R%9*gz}#rYs46Dj5Y-q;DxMJQ)s@JGuI&^goyD5Vqvw{+AM!Q2ju5Ke){7ATCaDFch>S)Y|P$Xp6=mU5mf5aQVQtx%BX$1&u;eby7pg6K;M zTRu#qv7!^&C$<0!j&0g(U!_ppN{|Ak+Wc9y?Y6=$O-H-T30Q-DzV)Qe*&^oztN}%y zjrM_n8|6-ixh%gGuo6cBG#`r37)aGAd}}@>e-lfN57w5sR*}oKqg0L!T4O@Q^J$8A z!gi)bCg*}c|5nf{426KKNZ<&`tGqmD4a{`yP=_7~jux(3FF!7``np^dmC_pmmdu-H zu z%3SJO+qQ@O@KgWFBcDW&Jwe{EZ1wmCBGy$hK zoiudadU&4IFF#NVJ#=E4aSEJcAlkReK*X9Ei8QhERRExeCf7u)f%5gaR#tJ4)cu^B zNl>Z65<=J?v8Ima^RL1%XnpkDr^Yj0zHxI+!3L12Fd)Z5dwYR3L3Wl~1HtQf@+akm z>M2aDmt7q;r!Z1Ugng=HJJ7P5e9r2E-L_dus0B0xxfn;e@0D8%aASn0==e6easpJc zz&c948pX-R4p@kE*|@+O>hZKeQYx=lV2#esX7)F>1!!Wm5mskfpeRWWtwc+$nbt=* zPO;;`E`X?W5pJPpWm#_z%B;quz#Va_#Y}`;TtHWI1(Z1JWZoj{sA+z3MsT8@6IxGT zuV|5pH$heEslcpj%{*U>osh_nv#r75Fgc~e0wo$*4$rY>1h&=KpWAY*qh;M@h#e2) zSeH(Qoi#KxXg70_wpayPjfn!BT zz~hG<%#PGx%*3O1T zZ9yEWpk5GW(j%Lw+m1s~)z_GUhsm{@lZ@nbkYL!Nt%T;XtI5IED683?F^Rkzxnug~ z=&$CruFwYLOtp1YDGQz`U&Z5JQ(z4Rilb8>FHOPp_2dF;_~1Y_*=5=2!nIR1Fw8@_ z5(@B0_k+b&e=qqTz;*5B#a16*b7N~AQH?Jywu*DTWFe{v8?+rFlZ3qTACNvTEVOc< z0Nb)v?kTj2WwOv3Sm#9{wzg?`S1yw6uBeJuj>4jT!esMo*Gdq?LMzGPSVgevp$Nwp zd5v{3BoLU~T2f?vk~x%hK1fyHEN+GnJJ&$qycvkReuPyLhOz;QTNopLg8cpnYbxuq zlROZ}TRy+U8dezC0bNqVwhPq412BugtdZ8tWUzd9s;UCa4D^MQr!E-h_mwbe{0TpK zwkO2^`J)5buTY_TtF{E81#ieLpK@TpS?NJUEG>QR2Y{jZOTIZ0(w9!`ADrXlZCyc^ zjl$NveW_LAg~A1{L-I+48@)hs`aK`2$Iu#z!q8ZmaD+opcslIMlov#TCPF+UnO92_ ziS0u!MEqjj)CpO-%<30F7k9BCr#$~&GP0$sxuK6p$i_RVRGxo8iO|ZHf%CR(l`ibbc72(RG(UIL>il6ksh>LIry+1UvG*eeg&Rg&AD@=aV(K$`1w; zC@A%ThelFgB7)_>RtRG{H7yC27^KQDpfo;^$ta7v%SDCprg2SE3LPC~05}}bx6y3$ zQ83)yQD(LR5z8sd7`o-!Q@#riKDd`#vnIK*@>Jgpa^+8#<__Q$F-2d)yCwU8BWh*M zaw~VXJE5;A#v`yeG0LIO7{{`}Rabtn%EGJe zw$_*|T5Zje=fc)_HrPgM2^*>z!QzJgDjeMKXQpZ(h<2CaNUp<0%n<$SMz+g^1jM_SsLrOpGu70O>!Sh<6IAVC`2Rl$B`+NN>4E=3-?gj5|G z!MP!x^09Kz#UgiU6#naAiO}2(sj%JYYJSm!0QTv^tY@Pf<|jrpzPNUZqJtNlRwLr0W33S$4+eIt zJbR-xXE?aS?1_w<8*;c$YOMgl#+vDg!_QZvyxKKZwj8htOo2U{@Y%TreEECVfR~iH z7B}iCYpqFgJNVo3{!Lcq{>@fFPL5(`tc_R4JCxy;EZ=Mm42M}htfXbKeX}*Upa6=U zSQb#v*ck7Goej|r7>w&TgJ}3m1$t0iY4tDh!-N-CR5ihwP<`K`@fY| zVNMPcc@QW=SxnQ>f8A^?^y};!<)-7TF{`pG8#=d=pQwpC5qH@@C!|8Npk)C()4=G( zJ|X<1WoO@*`^cAzR~ARO48KyWpCD&%0TX@i7He8Gnjk+d@Sv8c$KfXjuEQ`rzr{+* z2adO5eS#IS7E}k+rKVwVC;T9@OHDby%9XH@L!a{rhK@@dIe9%;BrY+s-mgouWG@8 zc&pa>2$uI4H7MK4Ki6S~NC!&0$i-WQ|1+^j7Sy9Jv+FG=*#R%GWrRGg-fEW5*ISQ< zBZU98YLYy#6&)*WK*{GcSYwKo#+Swyf{;~xqxS1v_+*214%Q-M<#Ki-mTG4suAo;p zS||B@eEm$wzT438+HKbB`T1xablpI%@G+zrL*-4Rk;&Jz<|Zgg9M}zV`1~g87jk?n zG|Fyl#k%~k)f$tTxfrxxU3;m$9=;m~wf02ZS|Vq*L5q2B8~9rnZpSXW{y57g@7xYv zGKU_oSD`%ld+6Z}&C)0%-kN$48K5G)#;wOf+6Oq6Wp zC&N)HR%4`~hUFAg-*B~<8oekktFkOq0!3a(SQA=k`jD{tFNB-Rw$%0O#y98H6_Ol5 zrDrI)xlH-=drVccS_}x4~YJ-qS8QsCd%n|K?5N3E|9qE@5Hfp!d1|Qc=}5G zx%yIQL*$G(=fovQ#>{BW{rKJeXb(H<;SBVvT2o6^t_C5$6t!jjZBi5y?ug13NfI~fbO*Pb$L*N6~;t_~Oc~6b#6OFPHOSAYz z9THd6iJa`5#mj8ZglYlF^Y@6nev!p-@(m1n$7ZL5_}P=Sb-SUNwtTDTzr|8+Z9V4c zkKodH9o&LIgGhBtzYZ`jrllxQ>1f9T798m<$Ffj%6rSZEG8l-*A;}aFdSE-{@z-O9 z1~-C_x2j1L^oxSO7i+fLm-z)&U0!Q>}RSk{%z@C#IR@_N5q)hrt1-OVsIuWl7s z5o;Ua-P2$xxg##72Fe?2;|ZRSKg2~PG#`n`BTNgzwod+}O^nLTWtgHXAgQXPyU(Au z!!_z@qHlI~B^;^1Z8O;3`rQ8?`0yGMuupo`A%{BPZ%-wLM@~9TERtmjthMF@HufDI z@H0$o53NtwzZ1agPZLLt10sUbtxYA8jwx>}t^AU$T1KOwS6sXk&Rc)lDQ3t+onln6 zhcF-4o2iq=u_9o6A2)dFzuxhG0cp3+FRt6r_2TFCH&1p`S`Lf(0n=wB09 z+Xxx9%~gp&5x8Ss9Z|j-p?HjQ*eLWgw&K#pq=>o;XF_O%)e3u3++Z{#C#>#)%zNPG z0C8NuHdhY9^EI;mJnX%^^FN&l83I#mnY(*48$}0RnK*gS+_;MJ-YExMsK9?+19B+z3cY$`f znJ}l^3L-Do&Xf&Bf2v@|hR$9Is@2SAGi9;cBsH8aI{2f`mOb^ZK zMwK=S96~lku<3w~6DJBRURK%Jg#YAC`$gdb7&o`HsS79v)r5!eW>M;?6=lDg_To{M zJI}VrHu#{I)h}Yf=3WKgayd{^1b040XS=#gaE|b5I8r5_8&H)|?Oi&50cbhUQ9zRl zqEuP=`lJZ_DAQH7bxiQ7#zi~Z63}FhwKyepNi|Y+C&+zxaYrd=JUpIX=V=g{z6om4ClN6ixSF^(fScJEmJehqfN~IS>J*o^U%{@e%Z9U_ObDy!y#(4=d3arxI&a2>I}R=T1=+ zi9m(72|`#UkQ@FFF}T1FUysJLl8N-swY?Sqo z`eC2ywMuplb?pifa(z+WmMa?jEAPP!^Mb{vQCP47PTzp^Fkm-4g1VZxS} zGWc$iPu>f9&ij1u$V&!*SmGcuRYN^Q#c^@u_@ADF zuo=U6FAp2KS__18$;fBj5~b{(g15-sJ9C9_iJot}4|K0sqV`+RE<4}y%*XJx1mPaTFu=FGrWUEoxNc(go#b7z%g_EJ3h?N2U1y?v7vX8y_m5&+KYv9V$ng$+(=wDd)Q{-O_x$;| zDFiPN1M{LJd4n1viRiR2AXjF-A_~XRpkho{^myd~@Q)g;f&nha7f+ z7!C~u99K~OfllJW3&e;d7%{j_>RGbMDYRZABOXzMaoGbZeWj;Y1LKY1{Lz9HJXalK z_w9T?RbxdLN;C8Ue952`!9ofVTvcj+!D=4>q zIp34z_MeM_{Xd82iyc1~V~2rZrT7V|JAShl=+b^-X4xxla`VSRCRdQ}0g7x+~e1bOoBM9K01h8{-4 zdKrb`YqJ*a+$o;h=c^}4lxld?Tv!pUmUS0UseJxWN$e(F2Gx}UxyhDV@hqj=s_gxvd{DC`27AcL@LDNRkKW+D^l5bmakqi!k>#c&fM zJuL7ZF8dH{mA`tdDBf>;*#j?DuY0V_B9#}8p%OeiYFoMI$7E;38a^`1e!w&Jw&7g} zKd*WPFIu>wY5}H(X!J`{ zEbq|;i&D~bRHb$|t83IkdBb#TaMoea3i;!iq!)y=N_e0J+xSqGRZ4p3YQaF5L)wq{c$_kjn|?1q-TCo zi}gCUMZZ2*GqRFkmHNBrPA-qrvs?O-=UfJYMl_|+3rVvL} zwOvvnYU5?CguhgJ10=O}IQQK$B|oYv15MsWPI%>80qf}c(BXzv%59LsR335`u5v-1 zPO9<@cYB?CfOj6AxK+cK+89OH!HimQq~txVRzV*>U5Y@8afuPUhHR(~`J1Dyl>zqx zrHbp8lSW%d=jIZRg~?jhlcBq_Jbkn^Wvy4=bMPpoZ?*OtgRoz}bjPn%hFjXI=-oov zI9#8b8COUKS5wdx;Y4ucqylo>8Y{oAAM_$=BvE>Il%^a?Yalq|Fzi0B5jH%US^_qN zf(>cd%f$`Wu=Q$gITt(mn+K<07v!@(4Q4R$bLb9v`(9}2@A`sXJ z%70f_{f_d1)4=a^0^(7N9icFwbOi*fp2=pne4-Lws-iqFT_Pfsrwb%gHK_|Mgois> zkTYI+SnKlEr9$CdKx*|Bj-RY@(M75%woTq}tQF1;+0aru)kJyau@;^~!`qdrl4)}N z7VGG|Jo}+Z&fkF}655nk9&f?@8J^7Kq@|PO4>wsw8zWHTYVOkHFm_rOKx7`Adv<}i zVUf>szgc9!1;q(xi^bChWn^SL?8?Xp;onQ9i$n6Rc56y9F)V!cW+4Fk#jU?MZwmg+ zSp4IUUpIks39=^M_qRPjdWcHT?x6w;?t5wh;-5}9%LJ|=$d6xq z^W)w?Ok&eAlj|@@1a%nD6#03=>XS2us+#+sk)ush<-ulG-(-5JPEN|wW!x?$$ff^Wr0 z+Tx}%+^;=7)__hvDuV|5{yVRH-&9~Cn=DFysw?+;148=4lbd{I01d<}qjZQ#eC|pr zk+z)yT~3fo9(gZE4fCQYgQ+3QrVRcZzt~v*q9iFp`m>BRPl%c;L^2?!?X;#QeN^Lv zS$(Gei~`X;v!C)&4uYfyPNS$F`VaO^k1`N50;4JM&3FIo2?H^mGl9!_QBe;}eo5H^ zKYREs?o)94#HTXK3Z5ch+ja8E!TtjI#CJW>XjKyxGH@V8WO(G2dp$*=&!QR24~nvV zqH&-Uuezorqftuq+0L~^pK<7nwTE_@)+_|x%gFe@J*`8`qE8P*DGe3Sn}8`A7#6=@ z%mVgwyF%Cj!9-!fyhu&{rUswyWJK<{JEL0gHl|Hr|8hOn|TGKe1MD;Njp^OzUBr)IPRqTplCt$w1wSF0i8V&ey% zi@1WC3~x3Ag7MVR~+qJ6hyd|MS!6v)^+1}%^uooJPeJ1O5yr<{x1H^4MGBV#p# z1`eEy*o-qXcKljwzELzuQSKfh_nZXFyMC1TcRSiYJ(B_-|NY(%%^>!pJQVfSAO^{r za?%4<(uMVdYEHxs-TgChviQ3{Bg22R$mk28ySP|XdT8)M-VAq1pMsQ5ZU|4H<`F7A z?ld$#M9m*K5PvckanqY!lwN3q5KP!JDf;jc-FmHJ&V5D*@#<=+)g`!cpXEROq` z=$s}Gy$(dOJur$=|FVA1DNi%TT(|k^KXQKRkl9@60n__dHx)mB(Th3hiM|w)Ohx)% zn)>TcoJ=`$dQ*LZJ3GDa?Zv%G{pD$nwEiASyn&`+katysSx-GAw$mi1+94;q@G2HP~!;FTvV>h5i$8#Z+VN-ruMq6$xTnMzZQNp2t} z&`qN{xa&=w!`hj6%NX#&>=v_y%w9GdW;V6_g};6986cX>H6T-QdTJAO8s#Ti#mu;Y zn7}KUlxX}}b0-^+DRDOs-H_RjUb@@j`c;rJQ0OcQ4Bffqpb40oyX$CgVWtohSXjdS zUom6g^ArTG`qGfeYuaW4*HQ`M(c^YK#st^;X%Bs1Kwlh4?)u`mZla#&vhRH6q-T4R z?NLrWdFnksb3%vZOQOMtfl?u+zekiNJ(rn#*umrXgFoDVy_&Zqt=h8))@8=Ko7D7F zUjroBwcf9x#3L&(*`?d*)ps`#-NE+L5YA`~?=@rp7-N7b&2RqdB8s#A{@!!xfsSN1 zsH3~`%a5i)eqNLnPj6#7q`MMKsxFbV{|Q~0Sc6k~fS5k^5J(@8^u+&kG5)*qyw_%% zNWk#>3ZSbg-?I_RHyP)_#aX1ka{Fj46Nlg1fX zCuB-m>ZihIkDa;6q^H0)wEj)k(*x#UI))mQ9Q*T63(^zqV$AjJyWVp~(*ZfXbB;SF z_Q*m>s-wFs-BseioKQCdeDXxWX8;CiZdEL!%S8LP(SfKy33H7Or2lfD!(oBgm{u6*_+W`9Sp4x1OIPbm8>4lSf2Qo#O_ND}A z|8-%!nz(K{)lGe-@NVL|0h#1>Ao*NR722t~p`6mAdR5TjiIS=G+2N6?ai%_#$OL-o z=NF(ojrCdujXx7$UzX5LXHeg}ZUXgNS$yEgL#FBHa{XNvfI&Pak%2g<$i$gIH;Mkj z%=zbjyXHC5=(Ip`uK}5&OyGS+eZ!8~HP#9B7}-rSGdV+PxQGE~0u;sl&oCep_>yc? z*4L6NNiF(nm9_Gn`J#Rsc9=17Ku*YS)HEmR~od0xr3@cy?nd0CIr)kgnz~M^G?o!>Ek84~xy` zih0xJoohT(k{d%TU?36T24=%e}hFCLU9?6>+Roz$jJrkAEk24Vsx>Kdw+6eA48wBIZQ z6ZnsZQcrwg(A{=r$qXawHwC=F^i*zWa-zGCA^V(2yD;dO;Yaf1p5nTsPIB@tp#N7P zNp3CA*u>G#|LKKpLg|e&-RvRiIg*@ZjC^F@bKQkr4N~m1Ma9XZOz^0Ocn17GJ?|Ii zQ*7lO4NFZRy{2?X56wzXtRXmVddOy?Ogqv8Us!ZX$)=pN#7Rf>AT7>`a>mFBr6>O? zkYu0fUnN_2xw>0B4lKPE9u!`GUl2!2Gd(ID^2MX;jNljLN_JaEZ%Q;PA-(8lqO^XO zJ$ma}CzPIwAy|JY>m)r<4=qVgoDMPBzo@m{_dmU$uM6TV2o*|p#X9NLm>wKal)>fZ zFi6kNkgntZMWcj8(nHj%T-!-SzyI5jhmuZ~^cMCMm!A47L6XxCpOJ57LN23q{@fM0 z(+)csyN>^1kzMx2`+Rxy9-MH;-}w~pvvA4jPRN|f>7(#YgvxpMrN`q==tJJ2xyM<_ zN)xP1&-&FM?=bza>DfUSn^rj>vyT46ciH5sQ@_`iUX6;RxR1H@`vb3*IHC0P>5!g= zG9`}3zsoqA4QB%Bg_|f7_^N5B{w@l5U$vma%Xxtp$-ms29!f7UB`&@H>B)No`5BEN zsT8IsHc@6Zn7|pD-H>twq{LB?_?a;_f%H1kAttd|aOr6P(fv26(-WB}6ZpE)P|K44 z1(|0WWCFcuS=Yqee*@|vkY4mxgP1B*cB{JJOgOllLbvpKmQ;+w>;S}t4VgpMFp*ZEJ+_$-SFf4cg#7oE^O zTxG-5?6aIudd}WKxc+X}fEkx(`2=`;_wVw$3-y}PpKa>A!%Vqcf z8z@>eIi=CJ5oF14Hawfsda9ompNUHkq?{IMMLKb2L{kdaWt&m!CJpz$%K>P%kqM-i z*h5r$;&jO80qV$EkDb=<^P~x;Co}EtA<7|C(i8Ot^0lo$(^wO5=B9^GvReY7H!bf? znkW4<(7PMP>@=-948-?e2j+xQ=BS4$>P;ik)0oC|Lw}^iQQPq|5EJOJM3t#mxloSY z|2-6)UfI_Lp8bxcWb2`kJs=z48YfnjPW|tp zu--JmWH*8ITqeo{bQ;ueKwmBX;}{q`f5?J^lYcmlIq^_%S0Kf>rHOj zwFeG)-p!_bjko{koyT)1^yj+!FC)3rtw-Nz`Ig+e{v&Ht=J;8gW|U+(o=mF9mu&|8 z0pryR_VGUJk23~{5P8{{*Ic)AUE99%{+Z_jQ2xf}8sbG@f~%iA|B=-tGVFKd6JWBt zpSslNX5vk`;)%eVcmB2MZJxJCsL zGdhq{*4i4AEdke29(<1t%Bn};I^m>%tC+rrhUD7;*I>`Y41CCY0u>F(|3ZLTKcY`AdHs-2hFn89X+_vIh6AUDb)M_Os$;|Y%NxQNLc7%c5!X1X zZPY-yD(Zr(f{06vcP!!>%SBue(G5GOla3y$l7^6;vJM@lzGp^VQO>a<>Keg;T~XIj zH16X^0B>o=}G^0ma7j(6=&ck#CQq?$Z*(fsB38Nbdl#7$ge2s#L)-tHUURsLPaUp;jYMH3jt$Fts{nnBAmiLZFMuyQ#zkOtxMX$y0I4ge@a0GQKtRDVTMx zV0Y+s?c`m8y-~N0Wb5HL{S*EC^QB(c-v)TpH_AhKuA-?8RvwKV&057AEYu~&x)@e; z&{SCbn26_;Poq_GE&jKS1?8blz+B@mbLS;D3$w%>J3-SS6Sx|=Syw$h;OJPHI0y9R zP|CRX&f00|MKwT{i&5Q{^TdCi@Kdr0SLKf-pn^Tk{O5CCzNONE^&I+`sn-4{zoz$h`=f#lvE3c8ruvHvHdYfZq;=4eBv*I^)L^vyo|$W0{{KJe*{cA{io z2j+zA*dx=oKB8Rr^E`%^@oi`6XXxAo;bI*y{p$ zAikjgW|02ore1$qFyYDWLdpPq+&F8YVLcupDA`?3r;KzfDg)_a9-y$Ui8BGyk1q-& zkJPB(iwZ(H=hIMiQBQJKwuyU|6`+24bIEK5CA*|Isd@z0DD^%}K9-&Rg zSE-|?Dw5wIit9~Vlk*u5K7GNAnY|5}1JInex6{IF_pT{60ds7cHl#y1>dW?j5BbfZ z)I-1=LFuQQDtUd+`!BuKrbH9?oaxUG{I7iP5e{|a{^|``d9>@8cN$n=}Su0wyZGKr&jof}|E7*3 zDyTP!O`5LN&!|n^e(BX41aK}baAL-#?}l`UX0J`j*z$mgpCxw7*tp44lUv-=XaV1} zqw}>X6d6u*aYlc$+L|>!o-2^^;hWUpplE%@y6N zlIf)TW_s4E>S?F{e_1`%|BcM6>Al%2r8LqciZW}6Ajz%{na#@ol+V0j7mRec;Ra`! z0!$?)n+fzL4JA(U_U&!zFH8I)7es!7O^GHjoBB`g=$u6Nx_SPO+5hQZw#}mGRby}K z=R`XpQ%L$4{FjjAH&?Wo3$p}_q`~Q#Q@_DOPNWkutu#~a#Pu99t#DS9li^$*e?s66 z?7s<_o+^85a(@0L#WBv$pcP{rx0=3Aqa{HHgMpad%k$50El!#&rrsVP>4l`{II}~$38??26W@FxuPruKEl1{MO zkSTa5Wli&mLBMXDTcjucBC0J37i#I--;CxFMVZ}~p8X5EkxcQjYbyJ~)PtrPA|^de zdadb@w1G)ZHJjU!ff`|O4*`?SaRFiE%e@Kc{2TlJwz7>TvESJv{`Zu@6uPDU`14H5 zO(1=64MY)z+n^(n0iD&>N5z&)MQbh|kMT@hKAj49cFOVR-DgpV6kD}3aH@($!WnZZ zIQI-KuceQSGUwx%jExV7XqZl0VoI`1%;(ij0-rZ{R}fF?ZYpQPh^m?%0%k58R*eBUr}dYB=)|K#y_;kX zAFbz58?%veM?7-&A9=wqT0Q24f3X6T=i{AEIWWgz$tOHizpMGy(od2mXwC$)G#&LN zr#L6nU2!I>Da-_3PM33cD&;x%2TbAjwPg_gv5n8FjxE>whlhxum!c4&ZD4AMV}+ysGNz zAKoYTW*`h<$_=Aj0w^Fe$Rxte90(amNPs}dKt?hTkT9NWr7g96ovNOywJ4Uhum3uB zu-aC|fx!{Pp{-S_ZMA(J>QHN2wSK>~&dJ&*+-nS|^?APYK)1J6q1~>;FF+)c%2TsUMo}>F6X1`$8s7D%7JJE`x&_(ADF9RRmZjcUg^5p-zrj3y zzQ6RRX9}5T7FfCvDd;l#@FOr>p9!pTYW8xH)*&q9Z1Sf#h zBmu-r0Pzw)yac$PE8_e;?RST6z2Iz}LWvg!8L?Cx)~J#gK}r3y@{&B$xw?u@8A^0o z7-`cIO5_%dL~mnE_q3unX@!B*)LsA~J|#AHWIBEkvM+$J*24BBnDoe-&!G~@ecgXO zbK?B}R4E~MXx<7-neB^gp~Ro$MftyxO+epke$e>uLL^fzzyEZUYxQ^3$+e+!%4W%` z5$s9XmkG@+!z<1!lo~@0zh7D7jF_>pzf^?}8%0+cYnNDMY1o{e!z04xDStG6Npw9n z;Y;^@WmRJj2kt$VDp#YsT~NGi!O7ub;o^U7giN=UFkRT{kebT_haaAl%u0;j40`kS9iDh?T4#r zv;C?;M)xyJU`o$0VV0QG9#cSZxZkbG7%-eLBz5ye2ET%3El%?c8n6fF3QCU}8*edo z`K=3Y_axf;eM_)GpM)nZINd`Ky?@2YA?-r|sSZ*L1oK&dtgss)Bvz?J603NH0yKfz z)FgQ6?Ii5(@kpN9AHB&|yD5Fw5r!V%6X5j1TjQ7G48s%6k^P40C*p(!Npw-q&E>Z3 zFKT|$dJ#*=1rV?GjQWHbicrZMUoh@)tSKRty;D&>;Oi5S<}MNoARW|ovB8| z4zw(4UHtmrN{)*I+Hvpvg%#WqsuW!G;Q`(m0yr)-XfcJ(&=Vzh(@D!&fs(f*y`h8IKu-*BM*=_9S>xJyS+6y60zy zIe}NccFht=p!?Yw;zV!FNNpA6AU(*0UW8!bslf;) zOmz<@Y413`m(=8YR3%P{N*b`fy;NeCiJtcB9df$X+(F#8H&#e#U{bawF+e$mqEuVF z3svQ##_I1F9oE}bV;7j`G;!I`TOTsZ3wI%_NH&o;^{@?xTQTT`To@3I-FO8hKsXVm zQq1%qS+Aawy?qg3BF9gukzi6PpBF|;t5vXX8Y*q^mU%y*^LF`jl}bcpaVj-&QuGFO zHGYk*NMCfm>KsLIvUe&u$|FWPPI~7~dN6RlN=x+pO+~*+0RRhe z^nLU=;Hn1S=z%RQE#uPbnkuuKGb*<(07*BCAUsKUmcdM|KjeBwr-F&kJJt0dU#YD)P{CnVRcz0m$hA-{KWfxm zYph>%4qV^&_B=H=b6lCx#`TgOe2{vnOVnDn-s3Cn(OzZOgHW9oMrxh}pU9E$=oaeP z3va16Rg);Ce>&LoRSl&^5bk@w`r7>(5?-NzUhfmX+lT?}Q93O^Z#5F}LMwXcbSIJ< z=xHywOJ65ahXSEAlJoAzW$g}vDhxh4wI!T-Nr)s(Sn9_SLf1<~k|&sD&!?FbOz;OJfC% z1{18AaX746;OSrrdVl3<_UkJYCTKUx{Gc1sK<{jYUXz7E zY0usvQ+xN8(l9Z6b`(Wu*ZAIe^+~Kg5$U9ANZ-XIGW5pl^!$W6R1xpSnE#Om8A>f) zy;OM#CGwvZpm!;V!tq}Pxco`Y`LD)G-K!lb#s4KnPxb%Hj2`iSsnIL*%Z>gQ=9gFX zxaOH(TFtjBzWHS}Jg42Q>ZRR#J^2&padnVZ{0|S(fRw@-MuT=Kl@rC?Bm1d!@mA}5 zp7_!921rYucsyWKG^?7!M#Ggx8SU(yVB5x+q&)^_xw)gD68Dy=L9^+qJr0@&6zilzrN0bE0n z4vy0nyJ~?oVV!6CgwmA6W0+^vczNz#dQcbTH7fUEqv3jEy>;U)n5@SnMNoPNod3|^ zYY3pb0z`}?&T{h8P_Lej$)GmogvuRMpf-%6+fhoQBG;5RG^oP(0#z~3z6r%K!=@!h zR3cKx@Vn_;l7Rl3{qPFu>PL;zON|}YjlVBgWTvv1G|Ne2Dtez(M&;WOgeNee7~;kY z8KDZi6p6Mrgi@FKiNP<-pPYNW0|L?k!a<=zgknB1q8{8uLVbyjBt!d=fK>BCy@W=9 z(0IkGSAa(F@N2hc%F$ui$KZ&+NA!IRc1oyTlXz+hdqiRKK7?Mv_n`iS{p7s_|1_^p zdptNayj-UsUZEKA`c%MlKhpiF)M1GwhXjxcE12)05Y)Agy%Tc8&UC#IF40RcVZ>+c z{?nOnuSfQ16rseuU_#6m=jc^l8AS9NQbvR-dE8ighf#U;kBb&ANaw!l2fzM4rSk3No0QRSs~@H&76D?vOOw>Ao_}T;*Tq)om^h*)nP1DyAB&$ z4jTpM+n4@WwKLC~wZdD>G`{C{)`}I8IrLCIIQPmHCXMIuH(4);8}CP`ZO4tYgT_v) zH6v<*^@jzX;pUVL%=CeI_2&Bw4ZZa3UtCLa&}}iVGyexZ`ue%=BO6f!mrPz54hj=s zH7E6|egC*eLuFJDDtSrrMct5@d{KaR8XQPVAFrWsafHKdlZf6RzGT_Uv0FzE|Nk?Tw~?lH+HJYT&P%%a&$Re+!PgM<%=bTNy)lltY z8t4BUIW+@&OI`u@IF&qem&#i2i#|(T3wV;x3z|4pnDZK8<5cI2F=_o?1I`B=2&Sv$ zAbw0;2cNN2vq6(Gv!%tv-yq0<_W4x)PN3VznD~DMFbL=KMgKru`+Zfg(>KW%^%x=! z%Q-3sKH!J{6sH%zw)K8IWk?lIBZ6Ggs>;iK0^yNw^Gse#Czsj_cLwWu>_je_^%N#Z z&hKG%u=XgX7)DmCy&5>EhVzc*1}8Z0XbvH&cev?-^oxyL@1LG=>#xO{dVnIKbwL5% z;)@{CR_ref3#Ey-Q(hU+a`EkQ&zY+9N(B;EXy*e_-MCPd9x@6Zwn}H7H_4tcZH}nt z1YP7Ac1vg{Bcq*Iu0jFM;7=Lr-abG@|RK=G7wu+@7cU^^&I&T`2G}3r9D}hf1j*q7C&6#q<)tD8e1w zSt)2+_;w9uCIl*#eW|T^5vr+azN$NB?EdL6W6dJ!bsO;?+L^j`vGF!tY&z3y@H8_k zdU2dj1yYxCluNwP9Fy>QL#L(<*Y`fb!uMRSgNUE-bh>^6SC#;Ur{)w65_&g)ib2bQ zf)ZYW2?aEBq1LES@?J1c*hU6Qdl*)lsfI$C_2w5!eJaLurTtXDGxd_5Q>wNA(m1&{HV>GBWb875$FRKoN$!kLu$nyH5R#!NCo+Ds@$dKS^P zb>3bTTK~dPg;Y{WVPAkS90lciAzdU71tc@HQfBr$rojI7YqvQZ^lQ?}OhYo;XI)aqb-J#($4ZnAqUfwuP)7kf{1M#fcC&%O$_N)DXFkGlN83|8@j$IjQPc}?h|M8 z3rks_qVLjMU%v3H4l5A%sZ_{cPV_w4`4Xe=j=z`Gi`T^@C#^C`{~QX)Y`d?3`3Wa3 zL&HmC;uYE^`{LD;hRa`)7|JmeBgDM`5^5slS&yyTg0X2RenIsGkZh1RxEJi9l!saz zB-E*!=S}MO#8;;Cp%@)d{OtZ)Kl4#CY-sA*{Pgnn+PdbZ?DD4a8oW_c7gOlTdfccz zw?MgH{rLFfx@cI5Q!ZGUyE-$CPD#lVAX#zJuj70KuT%sn8*jwb-})d0@+$3Kek{bg z-|)ubc)aOeE6=sQXL?4>+jbuD;^2F*-2ZcDx*Y&gRqm!U^>jibC#HHg_A+!lY*gKD z)L3u5;#pAW)kl}~RtCv)eMH301TZS>WU;{xU-1C7!q}O{u>5HqXkGrB$Pp8?r4wrv zdJwBO{%)wQqel88#yXb4+!m3|gXNM}?}+<5i@xN_uMXDs+QS^(&c#4Km%XE;zBY2u1+$5?fi63Ovk3O*avI7N}dqUf&*&>eV@)B>cE}YKNeTQV2Ei-*-MG zD7_LE1|?}1KTbzI4a?#ufU{&;IIASKUv^!SKee%Dv06O~8^PLZn>$niEu|9FuJUJ< z3>=VI*Wu4=u50ROr>z2Ni@mf!;NGiWAEfe*8O=8v^|V~RV0J<-j~J~xfBW^<2ayaX zpE&RCTwY=(oQNl<-Kem>Zncc_jGpZA&_XW4wDzZve*EWe8?$sAMK>GPeRoGD^joMl zKVq!8%E+Xb<(6!VTFq2Hy*zlKEXmzOVQ@|V;C%$p8qWQkEj`~0IBDJe4bSK)CuPMa zERp!0v_AZXXX5M^xTBii|J%=ogCw2O*S%n^x)_%sy*z+Kd3WzUW1eMEKIu(@-hCxK zlEU8U#n%k`077?l?bAyclC@K9>WWqnXeq7^`hUg1pwOU`}Z+PC= z6y~bnYL(})n7OF6)Kia%n&5=J9vTmFU^)L&Tx9%%Jp$da~i|hB; zoRK#PRT$J?Sg?nakNs1q{u0gU?}0nYSvI)yGM%wuP=BR0arMT(Ufd_l!k|ttujabn z#|YIaD31Rn?zt|>EqO=C!k|9n693UFjcbG|4C+;;dSX%0Frf;AdNPK@4|c9K{~%<7 z)2J7?lz#e$2XrBYK^@{knsw-Jql8x&)JYa>_R$-!5GtT3{XKC1C>iLX@x_cYfwf5bpZ{dDbd~}OyI7pvg2?q%i(UwFEy;9{uas8uh8xrt`6nT#q zn8hoUrwlv7@-#6VKO#KMU?d~H&mPK&|FbhXLxJr0zqIIW%lnrXJ;(ngMo;m7nb9Nu zFEx6l=RarKg6)cbddZL;<%eAVskgBgaKS7|-$jH4)vmAG#&U`UI(O=IQGqcU&L4nmC4S>n?TST{;zk{SkIyI` z;6KsN<+vp}RZVueKk|-gjP>z0Y3`s^$8?DurznP52lsj6`#;-X6+LW}US+IVVjVvj z>8$ViO4%-P+ki16o@KK}!9Q+&3o?Gv%uS41Lem$F5DVahDt_l{f)YRqeEk>_Wb%8r z$Am^A)Z(Sr%MoaEv~|aO9$)l7W6Q@Wm2NG)-ZLU1uZ2&7M5JU}FOBmi_P_W}m3Po+ zyTK?}YL&kfJ>T@ya&A2K!Lc=WQWg#hE?uj??)#)geVo1g*^s{#4t7P{>$`~1x6o3+5N z4?)FR$rr>}y2f&?O8^JhwMolSNNg-+UO@tzjO@Xx{)n;VS4NWc z($8ZiSj~@lhOdgqV&P{0{gDr|c^B%k2U5#zTV$cp(JzshrF;2@ER(5q?d25>Rh4Si z3;m3kv?kl3z`E&((fBLFTx?(ZN4)bRRxH@~qmly@G^yQbr)Z7*DL3Moqx18paL z3Z*(>-1ecIA}Y7S^HFx$LiBztP}cqXJR>$|G!d2wk?A!Pga*^T-R>+d`v#XHQ-Ww~ zzJ&V-&?+}+j&1$|U$y6bLscC%HvO+rZs+E)8_?aX=L8ST|N83pt+#IQOdf07PFKVV z&r7qss^&qX?AOMc3-tYni##P9();IUX6OPD1+Tk2W@X1^S2b3(`*kr`7v_6M51;iy zT*M&TtGi4#SjGE27iZ)eup6@vNxhC^AqZbOuc-zZR@J=Wg&oMC4t`vUeM*W@MJHHB zYvhP!&F&VmJc$y;AG)PY%sEI-9I2{yxeiCDx+6y3FN|c$s0F2wwd}ch=&_FubEF&p z_pL#w_x53k-|!_o-{0`Vd;Y|;9it_ypJN&aMdbpC6N?e&ilfQ6M%5iR0@oWU*6nx$ z!SvU2B=jtR9MP5@b|OVa3-G8Ir`+zWug?E0&>rs7=q&qZ;nI89(9{TKy}c{>6V}FD zWR!fOaxX&Ay#`tHu4DsS2T?EyokCStOG9%d zI)#q8+)>oVSmO?O;@8vRb>~)5qdLLx)JDYrZS+i#^& ztatb5+0jzWKT|1B7;AoIY+OW5XTCYJiAy;pPr$W>hM!Ys=3OfNLtZ)+>Rg;$@r<7_)!i55wC>+FG`ACg~ zblTXa^QI06BBH8ur@~nBu_~H2bpVdLsY>ACRMo)ahrWU|DHpWGmP&F3ZPYGq*G#3< z3fwE}d<)h3$BnFOjA}Z|XVt9n&Ncn*T!f29-!oE{h$PVh?BpTyy=gOkC#X=MPei8# zGjT@g6jWG@=FN#A!(=2S>a_1wUypBP!UQ<(!+E^{*3 z`AHq=XDEO($cVJjC#8T9Ga6W&{0%6w6*caGSL0f>V`rn~zsWPPddE&&La1&evnO~H#yXWFKw--5Iz%Ad5wS9o zl^mKArQOeCv~ygh(9LO`+fn_PLkAXDW87*K(J(}1xG9s|jx4vMBhpV2*k1{W zgBdN@b`j)YoKFBtI>U_bGpT?4Q2YJ>Umm0SK`gP#== z&L=2y)Hl}!3VMg0LCKp+-S?33xF!@X0)+9?0t=N!^%dfvypuwQ_zdhs5z?ww^;uF8 zu2*XPMpd}Dd?w|M{?5u^eK<%Mw6FR)3c;@1(4m}djo%qL;(|>)KOqu)t68~b5K(5F zFHu0{_4!3?Z>^}G z8h>c0nH+!r(6)K@SlgUDb-?4xp-?Kpd@9ieq}SSJ0mme;!P&eRpu%gm_frx`C$Xy7>=Sfc z?M|0Ys%<`Qec#oXKK!l-rQXhiY5|%!wftN@UmvH;^Cv}bL?>>ZzYAnOoUC7d?)4Ah z&$JldsO#S_frQ`LKHql<_p#4s)YtnC0OgAss=UB)4`=s?opYq3Jq2isse4<@I%@nR zoeI#OHg^Y}r;i<=dN-UcO!g_o4!@tm;9I#lNI!o3FaH|Ia$*Q{ylG%4*7tJ5JGpo` z{@UNefNC9i0)$$jJ6(*_-*d(gcvXzRr55$aj84laT4Wvke`6Qa2e@(3PPW&Xj_$h< zB~q`_iaIHN0vwK7TN<9MlF)Jf{ z(K+fX-gCf-Y0;AE`bxJd=DQ{OUXNTa8oEKGWO3e8gGkkCvU|i*8kWt~0WT zx}UnvSQ|5ml$$ujGdg=ncgQT9Bk>w97|dT8V|=6Yjh1oPyqsOv-j2=7?WzC)e7@1E zhp5%t-Im8LE(J;$zN*Lo|C;>MHBbr~m8QU5yS8EsTkk>LP&?2XkXpBGDu1kmL)BZ8 zO0FPPQPSmd^z;Zz@)f$Hz6ssvG$-H$Tp;s!gi1MTthvP4vY3|p-o$@W>FDsVckx88 z54S-?O*Ny|vi!blPnJB++TO8Co@QmG=ZS0P+e7hnsz(cMEn74Egz6e(80H}3hMlp- zy4C%SsI&xwEO@25urW_)WqYz8c>YqpWu&Q&y~g4;WWbtC+;ays48e^?YyUX>CqFNo zuEyNXRyz*8CooJ^KVYo8!DzQ$_^D^1S;8rKXY&8<4GbfB2i4zqmsIudQ5ZVJE*Qvz zF$tTM1t{UQUt$mrLhZKg1=`c@2-P1WRq>;Sck{As_SDoLv5`fgXK4P&t^2}Xt$M)Y z>2Di^GS0IOelyZH9i_L-DKDj-2DHMh!d198g|CXc`fHI1vte3{r^@0l3y?6oFMv@e zx{^Tp@>1W0`>{A#gJ4pSPbcBR!Q8ToMwL#+E05&dDEsUm<@eKe0F(T zy`Qgz@#mGdw|6$TRko{H){I|x61=ls7~!!FJ`y>?*kD!s!n4H4wf6nOGifH>Z&d0` zdLS^m4K@n|3B&}Uuw0S`y+36D*}>!IVPd4(=8=!Iozng^mGt93zLf!F8Jie`-!S<`X>~+NWP`a@sthAV?1~y=@BwizM%GN(g;vrTD{=vQuq$bZ@wB#NxbGGF}AH z4s$4xc3<_k+Vv!mN9*R6q6+V-r=>=<%bmkp8wF$5yh7#*O$$?h3Ui%n*eVtX* z;^)R+BidLfpeHU}c8oMQ&sP~ojokf4D~8~OW)X9wTN`BnmeHfvvqeG$?F|Y4Xv(xu z45yO%SOH{QJwTzJJ2dz1VgK|Jm~iNW+k{FcYR4kT@9t@}#ZuavGp*MBkv{8&?J)yT zfeHg0ipZeDo-2+=0M)SaYkR4Udg_V!c)=1<%vf1L_S+Xikvo&n#3YFSq`6es_DOR6 ziDZ!VHfDP*;tS*zV#48%df-qhaD z%6{IHFajE}w&7llrNpdb#?HHpI{O~T!P_I_%?6ewwdCIW^>QMtmH5aSsV_s+S0HMf zhQi%qsBwB#(lL-#MkYoe0V^UC$LvN-B@u<5ZFdjl-Dpp!wpu|dw6zzbG zl{TzWW=Zy8F0p*3xG*Cyo#|_UL+PysXg%&mP`bcs`G?2X|JA{&>H(wq3Zn+spa01- zKVf1LH;C7tIB(diJb!uq`b+!o9Bdst?D3goN|QFfhhiX1C~zxzjgQK$6(E$R7mP&l zJ5JfmnGxv>nTo*BfMk^5SALRW2qM`96$(fZi&vOn8l|DVJPuO~8GQcYg@k8gwXcSp zLM)lbg|}heM08(CwG$@BJ~v@Wb0l0xlG|tVRU_p_e0g2LjEO4n-SiFpC(fPwlclAL z3sh0R6RL5>3DulbpxW`fDZaQiI(jE9lLzlJ0^Z_0PgL<%%A2i$_}@*~5&%!k4*OF? z%bLbbtgfzJmU~VCo^1mrKP7J#`*)p#pIOPgSSHwFUHpZp3M2l__#Fn~`oXfO`1P$(R~Z}dCnA4Y)Kwn(<9)`6x+?N5 zPt;XWFGNLM75zdKuc05Y*U(#%>qxlmsj0}2z>d^fZ%L##yDby@erN+o+YEoE+M+=u zuYSBSijqm+9q65P|BK!~kH_VdgUFMWi={d2QEKf~x*z(bQrq0Ued`pVym-Faao8yO zu2D#j8Z0o+UcrP*XDlg};g*R%rRzbAcAE$#M%%=wgmth!0A?4`^hvw>K6fwa&gAhz zbB4&@2Wfjt(IMUyb6;1*2n~sfkiu&ylv4FHs$_8|#~MHx0<&uZyA+)3#-rpS{XqKZ z4{AA@ZjByjVOP?lKbCSF9g0ae*e3kgKN%|hF=PGJIAn?)Hw(?xT)=c|@}Ibd&S@zV0|zTkc@`)Jh^o#8wW&5kRliH4a1THQEccp_+|p4&e^o!Nd;hk$s*4IeRe_ zY}Uv}F@;&3YbP62mqTmPcGZKx7wL{4LafUWQVUHWh6ib5taUs#X4DXKt$3zm`#8yOQhxfD6SSq~wIbk%q}XaLsiero$MW7j=K_9A;f>a6R% z!_zX2CeFQ!?%&q+2#+`Szi{p$=~qL6OlCOi*g0JqvOavqGtnCKEN)Eg`Da!W_u|A{ zYUUpyBn-lye!M%1r!G7A5XXOhS#~AAHXHkAj)R_%rT1m0o5&KS`rY~H|AhiB(oZIm zV11%~nER$dg|~j&31>d~e>&jj1BH=DOv92>-Rg#UjPrx~t2Tz{-Z9u3?aQHLgcTy4 z>0wYZvlk!?QIw}LDrtE48vj^Dr5L0L(Oa+A+p^IpRvA`nvUf!CAbUO-!1eE61;b{p zRJ=X6Fdr&DJBb0lMxJa1sW&Lh$9!koVWaL_cnY_BXK1|H$>blTPP#%r-TXF-`Os^D zb9#p)8#S4r#H=9Q)&}kh{PsKmJrlQpZrvc?nc6^5tZr1306_xLkET1SSrWNdO=Z~# ze37CM7Z%ajN)b_1){=lG(}Q+wW-u1azy`$i1JmdN}#``&O|?wubOyc-zWyYzh;kbF+1jf9=MuC~ykVBk&(O0PNfB?6ZGcWHIHVIH1kX#`3MNc%Y z25uLa;QsN6h8;sUmBT&^_u+<{`%E``653vZ8PC~a=R}fHcd8Y~jPmaprr+L69+Sak za?{tRr(+%Ol)dB`Ja&;^I4E=&<_Z!EE-5_cC!>Vf4{K&+mm6wMfsqcM5z$IrF@Umu z&ZOwn$T1goujciSQr^*}2C{U1bJQp`$2f1Cb@_Ff@unI+eSYa+#!QZzUuZ*P{|;f} z<}bHhlj86K!?0^ccNpDa{nz*qEMR*Ng)g{IkN7w$Zhn%+VfirP*=W#ZXdKi126QVN z+%g0v!k4{q^NTbcp$g*hixds5$OLwDwyu?8{Ds`56^*NUv+F3Y!wh9;Q{8 zPLulln#Jj*!i+ezS)|m}l($uNbW~-RZ>p_p`h>)MO10{9tulLWz)7n!hIWIgCY4c4(&%x?TjGmDX(<{*sBGy zH3L|!z=R54i+l3}4ASWXccih0{8{%4*4Dap!{xJWMFjqsj;eG$Z^W!C&(RJ!aE_i7 z;uHxjJ=j_#^t!+ZaqWYWJV#h=fK)48Pc^|l+hk9RO;VeoSF+w3B=7`6wX&8%E_`N( za7BbYnI`K=Xc^)tb>`Xu3fG)u$Ip)1p5YpXII^+lMy<|2NqEN(DlOEkty;+?%YI|I z_+rXZh;WGWXF`_b;EDz{lR!(DD&F_mEDS4qSXc3MZ{53mai zuig_gbQZ+fMasDSy$2{`7deB3*!we>$lUc}XFryFVw*djUArZ~)hGL_Z0w7<)M#A7 z_FUhX-5mZwZ?*p?GT%PT9(x0U-Vwrs0wI%k`?*!|aVp|Jnn zJ(wu#R)X6+JC7QwnC{VBcvc3tI%`x(jK0cKCLBdp`D`pp9{YOapoN=m@;#7YC-dnNBg-q>^eUwA4%Sqk%u%GghivPX=R{@(J3*nAGzBbQkT;Fwv>(MM=K2iqiYi>!F| z0&vYHyCAn#+Seh(Qbh$LKxilj)BENi3EvCr&qibFd%lEGDA1SaLqmmPLbJgXBJmR- z)La^h=}RdHLm}1}Zhzr-=ZIu|Nxg6sAWURb&rXSp;y(rTIb$Rlvap~l{9ZMhWWpy@ zVyDfuZygx<22!+JYiUQlYRw@d<1)O?nTL^e-8$~QxBdCa*rVL*znJ&0{?5<D3?o%Y^#o37fPP}mODxa;Y^t506;T?F;6# z7S8FXetY+wGK#|dO}kH4jr`&PbL8`E?)}^S+agaNdU+5@YR%|)I~>%D^haVS;9DOg znTvX%`r^D~gN7+_2ud*0q8jwH0~Ib?uWn$jxl!MBa2!3y8g40mN*#Uq-E%>5n7Y|u z%4$~=%UtS>D%fP#S|UR8>U6igQf@~)?ZR#^eX|8Rg>7!SDlG?C?6muUewV)DQ6&!> zYPEet@Af}>;>`f7-j^KT_>EV1CLee7>2zDAruSTGaM=gG4HE+NV}I%Hi1Kxtg$&7u zbk{H+D?eHa9N=;X%bmgfstWjs=O&)pGxyifCbQ}WTZ2zV`!*Ha#q8{8)eb!e#H@EY zp9!$%^lGKv69*MwG_`mB0BrP&3-buIRxf8yR4QOE7snp-smjB~j+>1N*Fo9-I1d9Z zlU|&%>mbj}Uwd)1KB#qoB5>U+Fyu+WG+=!Lr-QM%Z6lvdq4OlYqxlZ3iLu8q;GW!jF+WC=w3o(k59^WR8Zaj7^VU_UzC zlHl9I?L0`Vu-j(mVWZ-DWA*vglOILnmaBU(0PHk&aIK>yeHj5{$QKnxOb#4J4?R|h zLjhUv);m>&qm43Y_p0FZhJ#RE60rcH)%8MLOvR|^P4O_10L6NoQaWNGtK-3?b6NTi z1XVPGnEh?}xPOTZ0*Ej|9fpBMb%%4^B`K*0!=an}TcOc}5lT2o{{L|pNq$?x_5Tn~ zHb93QbRK=g$XCyPHSWI!A^$&XbduULk(tZ?(osj9eC8#h}LqxOu|8aKOhRQDt!tm76NWPyIz(ak*c}e4G zoL_`1WLP4~(su#Xy2tFS+YFU)o3SeO4fsAj8v6wB>mA+H-}tf5dgBUjLi&nLcIW^+ zl)?%>z5xB%Ved8%5{$A-ch3eo#!?_wX~>eiBZ+&;xa4Tw7Zac$YBk>sm{5>^wupxz z&N+I(6kFWAIqofDWPtv5vSp6lH$e;08pVs~i;_0*jdADaOcchX(`misuhe0QAI6>P zMdGSK3bUfDOAcXtg0k~NLk#hlY}6DA9XPNaKr+yTNpUC0E~t#@D})e!rFww46BOdL znJPNDg7}Xe9I9Pwp+H!_e$Ufy6>SmR5y=#GzHi`V5(=T7L8O(ee@a$w=E7!jB-)89 zKu0r6jvAY(rmrk->ZodKQrJcN+C=Q4RqFl#ZkhsZz_vmrx6y7{Q~B-fvV)Uw zS~+^#G$R5hmMd{$d3;5JaT~O>NSs=p&Rc2!5TLEJYH$*mH0q4)A^}Kr{%9__e5p8T zt)=x!r(OhzVx8VY1f6BL*4pn>%kdcE4My!S>$M+`op1JQ;+!e0PVwAH{CeEN*u)Kh z{K7#p!O)(9vh{E9%gPifuZOLgBO?Lv<;EMzN=)(&i$vKaS6bVC6FJ73mE?_##h8-x zs8M)3t_-9HuuT6}4)@ZOReS%zscigO`-n8YuyXI8zIrFk*>QyXpP6Ti0=u6ubY+Y7 z>m8B+p}+}~`P1brbp48b`^rBU_t1Abu$Rh-N~84kEBZu8I7riJ#u_J(`6-vehy)VC zC8(pAXU<8a-YCQVNuQG#3s-qWaalxsL`1)xXQ$9P=>`>@l9ZE@wvuj=#3AaG+UDl= zD!-ZA(t(=@6i%PehBcf%ai$<^R!ZU0CDmzuaiZYAWvI5j#?+ngC|nLr8}ZT6`YW!u z?6R>Ref;q~c8ang+9lcl3_PhsYV@BMv^VNh&!{?bHgMSgHUJ zXk#T3-y?uZW{Q(Wvn;LJW5THNHi$0{vUIr{ON}#RFxRc9mGV^$BgZ7io##$p+Ge4n z?Z0&^tfh66eCK27=K%9|7H)K#MLTp|`G`q*=Vam#B<6e28raShKb%%T+olU|EG?}Z zXyx_uju_DPHDI?H-$vR>tugO=#-N+XJ4YzNCXRT~_jj+VI%wqGY~(HFE9>H;SMwxb z-I!m$_jew;uKV#FH_&}>(@m#>WSwna1GD1n;?{^5#KC>M8C{&*FRFArqEcq`?*JRN zBj8IUTxC4}0LmMPEcaLlc=0;dDJxy*3QZ=WhM??c^K&yq12x&gOIp=6d2-VdmK zBsu*KrP|2hg0{2eEb?OqfZBo99nIeOh#Z4AQJd@iGJ3sAvmc`64+Ymeid}woSB(nt zFaGRD;&{%?2lvs zw?|a4L2O(h@?!MYvwuvk$MblNQ1sbU0RmUriBjxP)~@$F{e2aBxP7j_GVeEXt~5#= z%N^NKvO8I%sTn)2e~u?`|L=}5OPv9*d>Wl*DNx&|B@+8pgNz8eSuwYNp=ax321dXC zBw*Nk{ISO_D95cF^jU$&`j0TnxL6ng=>kI~A-_arDHj*?z16xcQ$M=SJ^5d`oV#6O zL&cZJ(lJwLGZ{044GL3FsdvK+INcoR3i(KcNzD}Y~S$|C% zkFvBsI@MT+KBB>M9dNgW_7U}*0EfD{XJ5Y2t!}4^MP{j@=fn#1KI=Wu9TJ~U`sA!54Ba<$&&R#vx_!;$tZpzli*^LzR-$?J z<`M44?n`>NQR40OEjS&rcj);c6vNdQ|24s(t3qTth>lj{dWW1r1x$+@otjNC;Cz70 zFrczp$A2B;n}1OW#(acZX^_@9~ zbTjB3*X?W0In)i#Iizcxu8$(h7t;)?Kc~#a%tz1RF=1xSk1~ahyf+T!%X)Iq4!T;X zu>|Q)1vN=_;g`r(UheL^w&@mwy=7@ahzphS9x{^CchUmM!u&ceKC(IL`@QY9S!k@7 zo%lX(_p3=|oqATupn*BfZH?s({_HL7b(?T!(okbaN^?_3UDKB4E$t3=gVk(!r{Q{} z?;73_=hktZ2$F>NVSdc!UX1hPu6W2TZe6Oi^e2%%lT>B5qO!rQ7&h;cWI*|H-GGmb zsV6VLAAjge;&r1Sfj45V!pSEGzD`atga1aDvNj6X?Hr=oE_I8Q8PE4F4Vef6p@V)C z!Kdq@=&_vI0 zNX@lo439||)`G}(yY;rUk=FOV?)62y8NpiYjKXOm;`PWMttmeO{CfMwJ`zUJ@^zIp zzR~M5F@31x4wwbOSQ*D{k*Mef&$e4wW^&>y?CF`N^(?5Rj$|PF36w6qT7{a~lp%sW z38>uZz5|d1|7zJ24)p+_HM(y{7P_lKDldAm7EM+(cX`-1ci8o+CYSm7K>==Br`?b7 zBtTw4@_+@W9Qp*}XXl^c(Vi~8O@PulI-(t!=2zTMV`H7Ngv=8U8Oq zt3)|DH%M@Re0@R_wNIA{a;b!)WUAjHNvn$_7TBCxwd{~aXW^efROW6L#rE2#iJY!Z z77nl;UTvtnuNv!8(;(5d3vj&!JmXZ-_}2)HZPZ)my{6Vx1K2iimkp$h$2lxezzay+ zP`=oLZf}8*T*mMIXTN zveoH!(5T-a;*Hh2iS?RvU-WO_x3T)$U=0!<4l#lAIZ-dG17PHfDp%3(stXB+V`(Yl zNn{iMuORYm^XNF*sd7f8DDPDdct_R2$lzE;k*m=Dw{jcg945PDiq3F2^ke{YG+T!! z%J+~>^|;sbR-@Ka5BIlXL&~&uDVuQ3B)1tY!|lktLAQ1kMH`!XsfKQD153M<;DWqt z9Oh230@IBR+(!n<2bL5!$26`2LBdnN6M!GgCeBynrrf@R>;NtBio`_bllhR!`+x7~OZwn7TmocGQKVAZ1kXlWSAo=XW z@SrOoIP|mxwQ|oMQ~{!0ulohG_!ZPw+22By{Ai@n`As9hm-*!wZJfjhZ|(QMLL!>+ zlMj4MOcT}53lIgXhz!t*E-tcJhri71heSj#Ipr|b<|%(P!a+1*;g0VAciGQi2tfUq zcGGx}|;$Bg~2p}mdUQ9$U-2Jz&zl3g2sqgGx_iXP_fQ%%Hw%7E4 zkpH2`5S;8i3I#-@P(U^+IUOn3K8AL;dz$hBq;HS19yuP}|D3g$5O3gS5F|8M70qCN zMdJj!HLl62n#%qQuI%ce}jAm;+& z3=j)XC~$z{qrEgQvwk)DmBZ&?I6CECozP&R7>AJ=mQx{Y7&wAnQ9^TtQ<(RHacnbb z(-NthPMUo}rQm;CQX3M*CEeq|`ER4Lj| zR5x{TL0aIuXny$be48dp&Z0be*kh91{odwyR;Wu7hJpM{9EY<6ef zH^Xf1xB`Sg*IqF!Z!Y`EpA458I}y6-R^didfR^*bi55~-VLv@ifzcPFYJKz#FRDzk z&|(l;D6%JgKA8BYizLqi(8}1Yw;d_Z)Hs@t-!wcIhcG%DEEi zzkKC7FKMl`iS0ywc#pJ6gcOHm)*mqUf%O`Cf z-S}*+i}w!9y&w4OpX%bqbaJOX9FqiKnIr+}{+ZSWssa4{4j$=i#24E(Rl#`cj?9=u zwA~iX5!H8 z4K5gcH&{1hJ{#K&J{v1^0%$*pN28oBm=32=hfCLQ@ikh|u8oN#F}-Qf9#ep>SDvHV z$jK#7MGL!`(;Q~QEBnF@1s~%chpFE7~52NWk0rr6Pfqim4E(-2a12ZTebI9q*ke6Z~pHO zH6#PH^Fv2$5Lqvew%Dx|# zLG<5K=?eJ~=K4ZTy@M@u7fc3E(Sqc45=4!3kCKYpCA{SGASY=lT$ehR3gN1w+9>o`sG|snuualktA(E0@UJY8gp`#H+^}MgZ zY;$^a4p6pVX9xA+cHJXZce@>sM(b$M%vl0|H*sa5$d2({wYs~L5}m=Y-{C5&al|}; zfn{%x=oYHXqekk@Mhj1Nvm**QKGJ9h>=M*2tLX~aoo$5`NAO-_zTjj)RW81p{EaFff^sJH=hcb;gCIXl5$e&`6Sn= zOo$#&bKs+wHcksNIY?*};h4~r3Zq1E z99cLVog=|xLPHjLHKa2#6ldUcG|$t){8w(y4`X$q_LzfVmC|p2d3MUlf%Thwo>v9QbrZ(U zL6jzT&4vM%2X1yzAI!;B0fd=?S?Va;3H(E7-ffe;g>zTWEts2+$w57vcomUCTdH6} zX9rb^-uy(XWewwPF8I4;GKRqw!W47EEj-Exi483$rD$Ch%RSE27ZL2ke+dQ^QIpZr zFWp|&^RY35SG02XbQ#d3FqZS=lN|U~l(?AGxrfGzc=7p9j4FKG*z{ea#(ph0x`heH z{_^{e{U?T~ia-9*t5SES5nsCR`Zu&&NnKL%tAB)poS8-E+{Ax_YU|uYN^vf(K){#f zjQ+r&bXJNWNGEI!t58;iB4b0tY=VOLuds(Vg^Pz>m{zln=VV3W|6mb_!UZs_(*|4@ zPhTXxtvQ?wXY2Lc_{=(=B&qoG5UL_WC>O)^qlZ% zdqdy!&CcZ*?60zQp+OxhTI7;Rtyp89#2dTZsd51dlcA?Ta5as#-mdeGZ$iooxU{&4 zVXO(bIPG$aw1LTj#0oVbd8cZ))kyU=!TAGB5s(`90^xSHhXsLDH$LxC`G<_Q>kRXJ zdk5FRLKbDjB};}p@1f{&FZyPSC?=smX!STPO#5gOWBBq{4%qc(Z0v?nFa;VD6}G6u zCsXUtN{zPuGc_im210C)lAJ&$WseXSQomgn4|MGr;)TpC5C^HLyL1JF;cb&H0y6n6 zui_c2wYbUKpEq`^bXyr9c|S0o7^t=$F^X?9c38(wMozHk{#x^bN;~hq`|i_Eu-wld zYnzn7`1&9o6iz;I-rYhc z@$>>ngi>w0&ZC$gf7a*I@o1RuNrFVF~na5=uh@JG->r&4V5u**!vL%X&?OP#cbW_+k{;oOQJ;X&`1=&>GsdceQ~aMn ze9h<#`5^u;GkUc6FEx5)e!0>6On24)?^ZpoF{Z2KeF@ROW9o+gWkkP5Kj8JHM6Vz4 z`fo<>*ss%ki34dQE4Sk3c_)r*n<|3~9q`O=5GSc*qga`mvmd)gr;$ex|M}qN2G{N& zn&#K(vF2rRTE;8UK0jDgI#Z+og)G-p@aoF9_i}=JaiT;^dv5X_Cj!y)Kmlj!<2W;x z3-M0a2V3=^hc#m!%z}tZ&BlKr#2l<;t=hJ;#hV5646I^J!0+gRxYx#dHrX5J+qTm; zZi=FJb%BrIa8*Attn7zkM$E0@HGJTCnpYDLuFz8_h-2@?SQX#;u(9S+W4V3V;@YT{ zEcy0dzjD@_%yaZLk#n9vi`WT0Jlv0=v&ppe;UXa|-@ymJk&Ysv_TCq#Q@eN5#>Stf|Y^16?WRzWJv^$fS z=#89TTMm!j_AD=gY+RUH9XfXrjA#uq$JLp(e7?w!9cDar;#e_dDBVgr6o2ctVglJc z-?xtJ^9-^|e;gSXvAKx1jh$6I+wV}SV&vV{dPxm-=q;dfaIR(Q^1Grd;#%lrWU70@ zm(2_umYG8&47AK@ClGs(ui>uv(MpUd_Jzn{Hv^+bE2u(}&dORFC? zwtUN2XJ4%|GtN7FZRBn)*y3x>{$>NgoeLz;Z-$`?>Na{}q-r>3too6$-EW`K;hRRrr*k%ybsl~01h0+O z1}>NsdYZd0m_r=%OV3?f+ZSpS7}jpguy1DBe!Y81L+FM0(`n3bPj*Q#Nk_Vmq@_%< z8`*aMmN^sACEQnGL@GYB9$ZG7fAH<{N&)a;W^tkG&;@l9mX(H~17~fVf)(r9dd!QR zJ&p|^Kz^IpsNpoJl{v&QNO)QiXwmH`6IHkE3i$5uejh%0#V#uf-1v5tOIXab8}Kfj zwflqU1hdi>%+ExtbOgLKVJ9F!epwgl-VWBMHN1+1l#t)ed7oc&R9>U9%B zeND4j!W;c_>-qK$St7;;l!8UHf}Suw;|gYX8KL)LLKo2XsSnXpXHK#%U+Epj`({-A zSawieJ`2{B+<#CUwAS3HH&9?vzc5MSMr1WQ)3GvFtA*T$z(Uw#+<>DdR=oDBj^jqv zqlUQN={P_fJkj%M^LdNMVn1)k-NL>j)J{ZjW#7wg-EwgR8SOI7|L|24xnCH ztH#6((|7RBK*g^r6KT+UI0cMwbdOolJeObnL>4rYa=dwp?ZFZ>^MZa5VW>Q791X?x zVg^pnu0=swxA9v{2`jU?d^j+g$VMKb*@f}Pz6A?x>06#aQ3eS_YteoC<^M2L!(k)y zXLy7h58^B+>zB=xd*A!>QGM@0DJ!4np4a@Um^kJWBYMkQ0DaqlCfAUoQkGkJ3%!$# za%YRrsp@QZo%6rU&YS%6>|csT;kFd~^#=&1PrUY^^|Bc|NNC*eRA|3y zJ|1hk9EQ;984_Q@Jb@8?OA&9jAG_^QgU0tD{_|bmTQ>>WhY@T$VWagjV-?P?;RQr9s*E%5u6qZ}`G7m2Kiu(~Kb*c2*Rh?X2;x7! z4Kqa~G_#Fs#D%mMjI~_>A~cse{Uy696S%$&yAL`HXJwFRZUosX%kakda?yuw7G7vQ zj)Mc&aWd@2gD#uw(YL|S>V zO@t8<4F0YxBGMo&8fbze6#6N;ETeyHa(R1|Kf9`F3$>rWg9P_vTvm?XR9~VqJ8QEG z44uMnb1oME;pqa16&wY*@HIK(DZocSm90ljZ0;In-Trzsj?t*J0ld>M68+$= zkydLp4u64dhOk9vJj_Mge2bBl}5V>3v6`fpqQn@2hQqR_F zabZ@iTj>#?OL$tkAxOf*_`6Y0uJ1%u%9enb@tAta1PVaTY}+qDA@imSA*umK9wa<< zk>yrWbd0Zmj=yw-TcN%yT%t9vrvz7nmhdI zbzN1JH~|`MMA;yYeWrOQP0lq+MkHi3)OBpCt!nqDH@EoDe^o{l)d=bSz*Xl|(+r&uOk37z#S)72s@)`E5dZPzaOY$G6i+D^L@m?oD;rK(j>yXfE=w>T2fbyo3d5t;9tQF5gd1zr#~)n<`+S z3rL}bDy##dB5KEzXb>y4M#1ar?g%SQ&OMIdUu41*p0p=7zgV0oA?=_}Ra2twWC|U6 z)MV~`d1DBwb`fAdR#ya%we(Z+M<$l|4t{R>Us1H zB1(Kk4k19&!gNMZ^Q?7rf8c2Z$=zY66;5nI)qZM*D%M^Qwq4IBDBKRM=|RxCnS9B- z`Gk%xKnz!ChNz6ydK5r6;Y?;hh4z%I2~j{*Ixci>ZBv58O9kjpjV1)$K$q}HruF1L zPqcN;@~DB<=DQ;Yj(>%W%|b%Y_hva_Gq1{Wt9(j~ZwRzln~JfjZ4?(k<)09;-JR#= zbm4_=uhda-5EwGL9m(-R2NQ0pIG{mQYZublILtaZHfChP`Z+@Lr17Fhwcl@a-fL{K z&e}-F`&fj!P8_3K}4TuO1i_{QJ=^Th#?p3MvLC-jRP_6@RUIJp=g&>UsG zeNjxph%Ib0CXD(+B(8C*J!mA|Y~(oCxb;h7lf<&We&egBUgL(8!)Es8JHHXY)~#aO z=hzp!wec^yPW;~gahYl%cUhS_(+l6ybr1QHNBPxqT?*(i)9WbrgH*rhSXgx)6@S9U zI?inp6<^LSn+D(>^!^-zJz!IDkDHB7Oab!Ts-s0sa{FwbOS9~Rh>R$^t)n^>={^zJ zva3pJ1mbIV#tHBQWmSs!(bmF7J=~mX3C+=C78?F$35LE>4_Qz|d~7NVlFau(HEwy( z$p5vG=TeO~L~Y>G{QEEe`0p^PG4*Aiu-@+0nv?OkVKe5P?d|0?(8)9FDl4m+lxWS@ z=X*y&YrZSrdm*&uMFrl`%X4ca+c6+_ateYJ*^Suww}sQ=him63OkMMY^er^|7G1>9 zG)D8aHP+@SF>w*O_1tw2qa%Y^T0O(;CfPdvT;zx$m0E!#WoOGIrbo@lS;(tm*2&nI z0lvBk96brM=MMu_?jfV#JGcb&##_cNFr(W!w`lL$AGnLE|HXfv!+tt^v}dkxI6<_J zE*x~~zPH$hc9-7yh9bn7w~zlq<+S0r7&RyhXcUVls~yTYqA7+S`%x47~|STbH=OD7qRo93)ffe{j*=c-fzq zzJm&ZCE9xz-mCY09bsR(Fl{RtVHDl{dVm1hwCA8q;Iyv}tD*fA;&iTo)j>6+MbQv5 zHi`3NI7y?_tna9naF7U~O;5c;r$o`iNGHr3;|R3tbk3%q2Ad{?%j>@4bfg;6>DQ3v z$DI>z$B{x2pwe!M*p;avDRr({J=P2b1FakN8OP8B(+fZX*xQkWNSpG)LE5~hH_2&S z?~r7?08DS5vgghja8u^QzcMhH{**14N|pEHBn-8&v9TWq<``acw&BHI4#HQTok(3! z&Dn|H!cXnli8tV9$85f+cf0+wZ8l%j+ci7>WJ2fc#D8F^X6x)kT%Y@KdBo!EvIrFs zz4Pp3+(wO%Y>^ydL_`9WQ`Oa>B6HH#u4e1x&>^X7{rTlhmCb(pF5h-lHLgGvFDQV1 z8m&?>rE0hQWl)UL*{YR&zW?{Dc?eGX?VG=KEEl*1n{vGtr&Mth_FEItTgF7=`Pqtw zDtjGKEra*A1nH|V;n~jp8qnxwBQP3Vz@USCCu~fcv-ujP}{MM=ik?|3mrtl)PHNl7(IS~!% zTRdF|65a1WwpI6fdCe;4QKQQ`xFuq-xpY1Aoc!MHF?r3z?)jH5zm5VZHFIV}Ivw7` z?NbBBjL=Xx-!sLT#QIDFe-2@3LfkA-b4)=bp;w2KE?sTacW375|>_~qtS8e7>4Y01Kvze(9hC@N98WL;A z4O_?%Ovvp^1_q3MDoX9bB`W)km5Z$1dEN!(P0Zq|v1_(I6-7~2{NRqpi#0|1&0Vp5KPz)@CD~F14(9iZe{yh1H2$n6sCIb#dx>>1 z@eliVoI6nM7!d!#xDEXhXMlQrzr^YINs6{QS9xcfb%Sq1uj>y`)FpZ>bH#FDBqq zT7#2YAk11%(m3naO#>fdwS_pS9gf%mc41q^d!ATxquV5~dPpVvF-1pSPBCG4k4jZHpB?GmwOoJ=Eh1)7 zGp#oldK0W$E{yEQTOn#Hd7O0eV6`n}kRriu6}OOE+=WpzRJ?9RwdEppSd%E&eZ!h#^KJ|EiBEIzGt=DMXUh1t=6N{rJq82V|_n@Jr zZfh!U#7(31n0h%okh;dWYFdMxdBhYm^sO`bHAUU1Tt!Q0M> zjJ$W%?iV#UFacZFd5ynSFE*Mnug7s@W{bp7*I=fYERMfylTdCv>s9byn;Y z+6U3ArE*%Ba6NJ|C02Z~;Owz(2*&tkqaf0Hk}bC{Yzk611junR1g>Lfp5@l%qny1x zGg6M}mbP{x7hqEdVjAg6@7WGxc6HpFY?Txx=SP6Tv@p>XA~7p zVTwk7+GVGDZi`SXmF5qqrlqBpG%HvOJw%}k!G&lE$#SCa06JE)!G#YcHY9zdQF&Q{ z&W%_ws1QCH7BxuN-vhQzdJo=(mPePef}Tj((CT%)K}f?UmJ+lvK0Dq@BpoP&^gK;k zGed9yi>fP4kiq^Q33&>^T~Rdi8|hA$!I*7)$m9tLW9(pEof@!8J;&5r0MT`ejRt=n zLPGZ-wFfe(l+(g*BiX(?I0X+wDv1?L$YU~1KOBSUzahD#a0KB^lFZfbsY=l)wePE# zDZ4w%vDNLG;1oB9om~4KQ(sfs7WX|$A;y{0GL}fL+y4COrRG2!wBsr0?xt%BMG$D> zBShH=yJs4FX%tl=73d^_M~zBA0CS*yro9Fq-JP_5FYl3BIcQa4O%@H!UKUtn_K+Tv zWSghoH0qi`B~~kwf&d3DrbNtdLW%)0>fd9DDrbRt2oUXWeuXjLhueLEbLn#WE-RS= zDcm@8Q&RU%!&f648*I~3nl7e>h`+JRkzVc{Dr?TnA*w9K2jeDlBX8p`t&pN1MK(Y* z*dATT3U?8V@+kUwnJir!o_PmgbDZ@Ee*-BJTYOBwfT~~2Q_?%)*34vljsB)d4qzC` z%0C856*9kcV`BA2eM6UhF1ArC^tM6YYQZ}JmsHT@D&bBNRKskRTnwsy3qyG*DeR(G zYGw7N^%9;5UDYS^i`FQNmRro$s7J;CycG-_cf{z=T<)0BgyHm_#5sFU!&R9|Uh_+nc}81*rS2JYg;xv!plgo>sxZsqNw(Y<2EP3) zQKOuaNxD(Sz(^=HuHo_Mwe!&Qzw-^p4EMmiXfGS?VKn#qiIRtc4&H|hHVDF`VtLWz zjiy-oCXB~K4Ue)n*e9}tVa>QW7LIO>%HnA+ zA&;OmutLQBCKxU5JWw}2S|+Xw_VHFk`*_EgVL*o}%J2PADmBN{il3+>yDTqMtgq&5 z{OJ3uzj2z|s24u}-HU~}b<9p_ZM*KH*FPJVAiRa>Vy|h=o1&##Nz?ZBp{U2YnFOQZX65i_4_grCL?sv@2zpJK#mSI*GQ+LY{ksVaRb5>c< zTGL+VnpMcniTFC>r=EVoA8z2E#3uUbiECRG`vBAwmkkwXxgV{?W9+rBguQoLLdfNhpVx5JxR@ccb%|d#Gty!k{+dzzTdQPg1H>iWr z#$5yc?Hs*2AZPSZ2hrI5i{Eb*v#ygJq7>H<+jJF$?8(Z$Bso5b*094Sn8MnEY!57p z_j8Gg((kVr?Jawvd9uy{3o$#5o8yL}JV6LuRk2*MLqmm4|G@GP<^hsm*SB^zU*{v{{sKj-_LBFWg->@;du&=wj2d`J|3bJ^STynB;*ZOD}%FX!b!#lW4$bB`egL1xneAmGP3&JM$ zN2`t))e#jNjmX9PHMyB>3C`Bi%K z=Yzj<_=iLGpZVDyzSgd9xV(HNg>BaVG-AKYG50#VqUrbCJ7b>yqfz@tzfITaZ;jd) z?My~E3e_-FNEWJEj35>Nq+yfGMd?8Z?YC?{u2w#%7FrgSgTreX!g=M5_hs1ihYsUq zPg-sfb(yp5vj8(qlxQ6%!%Pkll+TGuw_ZmsD2f)i&_HOc+o0!qHt(+CT|Fgxd+1#ml2M?eJfyp zvHExnur^$7N@stnq}r0{kiNx00sVg>Pwo|bM^1QX`D_u6wyTYg2ZYgjag&wk@Ilq3 zt6S~STgkrPn{UC%GYlLLF;0^sTF#dtk4|juuf@_1wgK}F+_~$Y@(VSilDdqT3VrsK_HoGl$}8>jHnW~G3mEoE zixak86*2BHxo0#IaZD(j;F`dQFoR_Rh^I#d z17aIvtn}zWmk;&Y6Dq5=8@zYOsz8^ycV1=C1_qrK>a-G1i5Hnhv+l!$B=4KpQJ>Kt zlIxYpxz+S@_!^Wlrj^{$<(Bl)t%>iKG4z1k;8m)AquUm-<5uuBDkO(K(=9x(S|pR0 zu;Q(w9t6_OS{Z@dnv|f*<`{*dXcScw>B3)+%AQd}vx(wU#&jH9#@D!Aa0*Li+!ru! zwm$26dsw6|((T9ml+lOP?uXUulI%l_oAp!oW93sn;u|%@}iX(d2L$D<9C!+~`;Sj)|DntOAj!%2biQue{ zT~+I^iWDTL2ojtpbz4*zkgZSI`JMm+tNw9nW)(%CxN z*rycl(Gw5YW8EdTr_|8Q*1E>NfsyF6{tj#}!Ib~YL4JWLja`j>wFBLKP;%yoQ3f`nu|S)UO~3vIc*q$utnoRFxgwRGxgBZ{t+Q@ zOIYV96cdE{tmkn3`H@JML%%7~71)FZKY<689*PEJzS&J^=b@Bu1}BmzdY>jjV@uZe={35* zK5oQ_1O!c7mE9`)?E~2EQ*B8xs`4@!c@ve3{6ZeNyCJAf zS=t!fO6l*zOhNuhDK_|!iupZ@g{3|Ti!Q&O$21&`d86880u*c6qcRCVmKBP)-O$)U zNd~^$IUn?xn2aem$tJxWEAVSIp*3eRc{vKS}{Vv3N@Sjh7_poZ1tL1T=H;zM-U09^gI^c** zsgqV0gzA<c+W_Q7ZTbq*lOC?U1F3>AxYLECN{YgsCzqX~@0LDm8Z@uS1}gby$N( zIVBGz3Wck*Ms+S_D|j{!pDc-tPjI*f%^sGm6>8Lw#6C#+DmkOQ!%YE#22G}B%qFdz zp``OCcuU&#o)2u{F_4Oc zYewIYD|-=;99zN?OaBd;n*vDz-H2>Up@bFIs0OQNKsI?)gng0vp-LBTteLUmV=7(x z&)+sB7vk#OJb)9 zIWdEPmVK>ZU@{Pvg7DEwkBGaALVozlZ?+~<#c(U%eBiPplOxY3glW_GiyBWpdNMgg zGB7!gLfp!~Aut(Dl9aB=P$EPEQ5%i*vAh0uv&h{mZV@J9rAxw13nmfH*CpzaoAzZu zA;0?jjpvK|KJ#)-&i=m&_GHjhuIa$sf1L{Be8WUGWG<#h6|8s_+kFY`G*kMVdGr2% zakxLLR7K9v-Tm9=zP!1=D?7VpTq5vA+@oC1bjO%_*7V8nnDQKsQ*5bNS})0G)>?6(2?aYIGXJEFI99hK}!ggKdGN3 z=wF81ju=IKs$!o27MdhN&c|V;gY+r+|1yi`BkHMP{)7HU5E9xXLO#7VbbSU2Z=3-z zcf=Mrh#LFoLn!s+vW&^$VdV9DX;k>6PeD?LQMNLzP z;Zka8V{B~T3wEXR5jE@UY8IP~8NvN*yv(@cqoXg_33BZ(Hh&_tLJXwEct$vAXO{A{ zC;u{AG?#iznr(r8s@o9|Ch+9&r*F1?s>c!8(D;aT=$q>lxj15nA-r68VU;sy=5kxZ zqgJ%R+oX?fD~+?_C5`a<@`4G*R}_sn9cr~uPNaF8$fCM-5%x>C3gU$q12U%QF+!Rq z=$HOyyRZ&rjjEFNCRwwUtvocsh_1j2)ilckWRsP2PCd9@VxDp6Rk%fdfkrSb#taFi z_MED;Jf^09Q?1@X=%YHgCqZ^70} zF|B5e=x0b18jVINFI0Fa0z)Bl>P92aUO9htKlW|KQO@{-fnF<@Hy|60^A@b&V$ zixE-9a%8>~sxLEtGv;!Bs6QL)3f}>GTcL8scMpCHel-dh<1CR2UlOy+PI?2fKc4G= z-*7F@Srq8s9Y&SMjPeG4Fh^^e3%Tfw=cpXp3(RQgnNwYG;A%m{w=KZ=n1-H zmR<$h9YGfS;$q<$4u-x+31K{3OK~1fS1Ff(2MN;5GaNKiG9hKj2Wth9UZ5pw5?) z#DePlCum-*|MLD0hf;TL^3%v!a_voCgrMD|orGN*DnmoC?hrlFJs90T*w?s6>D-`y z)av+wU&jXho;F9gqkTi=_d4`XS{ahxo^0zN(; zJkQV15j4I$u3@OQs~(#>0^$;j|KtqXv~wevyN~~J(|Z_+47*p)6dMc zg$H5xO2Wfx+=FV8W%o*{y^T}Ic`N!Ga`%d;bE(W0y~bvUoG!APGdriRwYjy6c3I#s zG{oMI3++PGU|ex3Ln`$9CLDXVU{6M9NJ_UA7R<+4_SifXh{>o9k^KY6$b#!SCNMT>2=&8Jjep( z+4{TnrG56urRa>0OB)FL5vl|m5a{@ERY{fN3|lnLZa zqt9z@N4Fbd!u^1dUkdiDtOjdJb~B~pQ8n^d`PcY4G7hDU6LGvPiaCaY^n8nXH8Oxn zx&&rcW9Z6!(lfJbD&p<<9`YZ>p`_uL9KkyhRu}*X1F60^k2iZ57MXXV5m()fwSEcZO4xh&5LSXcs zLY*Y3|M-1dBm_9Pnc49>6{OcRxaR7AZ*|Q=a9;<{w`SAL4MQ?*dO4|C+5*rvV~^Y+ zgS*}s!R7OCb;{((R!b=1wNf_8(6SG%u7anqmG{~WUvc?sphr3+!n4PsS z&6rt6r3(uiHgof>XaH8q7I05*c$(Vu*COqaD?$W86zVMDp%Jg}z~pTsiz`MyeT!p; z{@`1VV143#+YFE!VYMRa%0Zf>*}p=son?<<7+0}FNkUz1)Q?``*yhe#Nd(8feQ0kn z%YLA2?ypQ+JkAz&+<(F^?5ICZD8HcMg!1p4*4?;a&jgt}a{XSM$=hBlZ{Y^^O|CY*1~IP@PfaTeQx4JJMbor($l zsz}#@o#|59pg>{7ng{>MT+Wi(g;ne(gKI>A(J?UE%ED?YV?Gyzm;dH``D|*sjJ7WS zkJAv=bArz^a7`(!)ENEQ>m1>AXb<-K3qH^aCJWEkz?kp=Y`(=)o+dnZqgrUf2i@Zc-vqm%;4FJhSq1pawr@(?^@FL-R4Rs=iCFLPl3Kww@nbKu~Y7|>4 z57wYdE)jr={=|*8Aisl)_$=9+=MYgh!$TOxS8VLqU)XJKZRgO@Xu>y#1%oT~tA64N z^GgoLYA}|}=!uS5@%18wgV?n_zLFcF@^;j_JZ8&8c5{Jxh$`(DtT<#ge(<9wO>>EK z=zg&=qYEKmaM>zS_&i2##u6zMvv)NbKLafA!cBN#y?#EApnGlC{!wH=Vmksyn{1W|x@AIY=S&p?6V~O~0!7!UjI!N-hys zfvpXSLf4ydk~EfqMx&T<$B)39mLz};+UGh%8W@%uJMIp0`sAA~*{Sdd2OkELm|_{~ z`$)h{6C(0q0Y=~Ei!a6@0%$tcghYg}xF@2~(=;I>$~a-{GhP&Nf{5d&L%=(u9WPBkJ;Sl){ z)p_!AhoCb#>YNZa);%6WUxZ2XQ;WZH7ddEIUO42EoIsq+z~qoq9JHn54?jU~dCnD| zJ|S+t{!{Sl6X$y~sE884qOe5zpFYZ0|E9qgI{IJ2h&2a;4z<6N^D&K%Pm{dBnhf(V zLy-P7()*Wa(=silIHp1Ob~ElzMDm}?F%4-U&dD$$2~l_4lYvCl|E!`!s#6pYl|OgD z(*RAb`ja^mFq5MMWszwMjJN+6KvVEIiA6z3D6>EpQI<5$&7pvK-RS?9pRImmG6B)v zoDZdsne9!l#5^<^dYbZ-_Lo;5r8-U~^r=G5lOUJBr8a%4G=!!L>50-4Awt-bDHDv* z|BG@IK+~`km=Z7|!(Db_Dk0_c zY{7wW@S+UMS>#y6i4Z|awk#qQ;rNKoGAPTgURm-M3!&`AnCqu<;p$#|bVV<@Ab+p( zU%MuABtk^;!Xcsr`_qMR`O_94Q6|%t#F;>1e*Ooo3qK=xHy`$#Hq9wg5;+q6tSBO3 z2nxq!V9`X`Y;K$qvX#fj(oLSo*~knf_X@T5q5~+xFQ@Y%XC+ka4Z8a3Lx&dO2IoC+ zhp%yjFZ$^0S$FuMtKfxijSX*EKTK|y@uszn)0ESQdDdu*p^vX$L+6X22N4L{05r2UV9f<)VKlfu!RwAB2c!l&rEqlzfXd32- z&`S*IF<-$pH>|@%>vw*|vE%~ZV|zF*v3Ca2j#dBN7#mJV^2l2W@)oDx^U$Jg?qQBNRq&S!&ns_ygNu==BMZEldN%xD zXhF7|U&rdfrf4wEUl(qGHL}1>!BKF!cavZjGuzC&IlW&$C}Mh0Lq?=dV8thBCK1%= zk207;fF5#wA5E`!*ADrW97+C89Lo|b3w(E%t9+r7^@Lh}NPnks(K7u@*^asHLN#eM zk^6q+%x-y;H*-QAB$V?UGyHr)aLiNTivb1j}iiqQNoBmi93SN}sJ`>hwR` zG^Wg=nS{IYs2Gd>f0wGfFWh}zH;4bf%DzL#6??X*TMk zKtA2Nl`kWaD}YAnDtQg;Atx=nxvlkb)WutV7QonOatW}HRJ>Evd{j-kUClAyDRN|S zEvvm`*5j6UifVUmU!05$Q5nmP7m3{dW$^*d>X=nX%kBS5xK+cWg~w7@Lm2K zUD7vtl=tzi{u}W?|2_DRFVo~*BhSRJ;80Qa(9N*x=)&4c=FHo;2;?(x#ocWzF}fJP zwVrQnL{rwb(L$+DdWe#d%SJ(ifEAmMo)u98yn(tkJhZq+e=UZ0}Y zBi#J@jP`+i2j2t4=wdM7{ZeE{39jTOg{m+>5IO!*Xm^M-|lLi?8GcAi&4&M;2ob$@Rn$I)#Xdj{A7@FoJ&gazV3t`&6H<5CEu zy!l>f?h+L0Ch3L)8O{s*HQvH%<^9to9 zN&kxIleFKY2{Py~WRS>!FSX2eo|g>RAo6aZU~#Yo$ud93f|TM&_GKo+;-&G^_&gy1 zG?j&A!gm6$5w-*QL-!hXl=0c(%>W=1O(yvYN+TgnpwfkeX@(l8nqj#X7?;mx7n>#v zf>Hf9n4EC_@K_85(uXE}(0UQ8!ZRd_MsZoZL(@af@6jXaVS3N9D2M*)AxB{Rg0TMX zXw^SP^^b}rh{gOjmj5o|zqrV*Ftbp(VAYJj|Ksf0kl6iSZRo&#cAumB>|7UYcN|u4 zw1;SZThk7|zS$8n(=R3K@Ow#)5W8PV_F-GPBSiJPEnA#x`Z_DK-0RYK?xT zanTYTPZ!U1M>TRuetywQSBM=B!qoay4zaG%$n$zcaT!svh7z6;NB#d4s)7}`Q`PsAU6RXiG^&{d$3eyQcW zi?0f`q?>h$0Pz)-dnK)W;nVBJD@jAcLO0$!PFXw5+f7*mz2uv!*k?Lte>FTac$<w zUh@ig3cm%tu$0a9*fb>fPab>*bh38|$zfX{Z+r@KW5_YKh6>B1-pmaP?-QEXg|wyU z>Ec<9yLn0tUzW57pb9Cp=g9a_)ivqE5LdE=214Ge`jLuV>H|>%4_kz#=UeE9B`EsW zuX2BFCXpwb8M-bZKSB^WXAfh11zAl^7+A@+488qBvhxReg5;K`v;?t+B``Ck2x$9w zT%(A^43#W5h#*zppqqE+p0C3oAl?6j9Mt8|^$U)Vl!R<1qzSH`&bn$OLYE{Cnb$vgM4(Jbj%Rms?{ z=e=p$>MmpahwmA`>q7Qo@}|npU8cZYxmsZzxc5Lh%2B0;PF{YEO4Q zuN1B*P31loosC>{$tYxa}yRyKA7YyCb)DxQmO- z%v3CSYORWxXLW+;hd^S3g-_h*}<%vb){D_g<9Ke zasf~j@xEu-ye~#Xsj1W&5oy|OkYi8o9wQ$Vp=9@ngiw>EzVOR}B8tq;rXHS0@ynUe z^LE(hZeUsi>jezXV@c0RpGyT_gDl&c8GT`1rGdfdDM=Pj&iC|7mPCcGflgN#H3c;q zEGkv9Nx_9K7g|!>tH=3cwhzi2#ng-InFSAFL5i6S%f2qc5}0t*yHG*!Y4oQwT|`mE z9w&oJ@lXspg7IvoJuA`jh|VtoP)P5MgqPn62&oFRr80q=C@wB~LZ?WYTQB&5q)4i8 zxz&f(QL;;R*+EVRn5 zVG$i<4dTLQydTnG>L^L$G zhvw{z??yD78NvtU-p%4o?UTqapgxr>5-`Asm-uK$IZcldU+r6yix=s4pLT@nF9*6p z)=n4#RW;Leuj}i!2%GFVjN;@c1(1XHBXon|8KFEE|!MqxQnRFqAU`!o3Us z5UC72i5sK08Est(L0N3Ck{37WZ?AF%yU`A`Tq-4q z5|*t(GK#2rn5cX3pD(J*k?nXNMbLlqOO#Qlxy+P@qLQkiZ?c_3t}WcBDsGEU(X2F5 zxz;lc4D|vft4!xAQWs~{jC?EYdfBBw(+^1L1G_9(3bDCnlJY}t97fjwQq8D(qR_tHYt=SJR^ zuivoH6{_ELi6hXBS*jM96dF=%lanMxh7}a0r&i<(#UispCoZ~Kf?Uu58nr_9NcxoN zJl?s_kXI@;rK6D#McZKAaEH6(3E&sb6e*n~m++A#olGzpKZgi7_xB^ z7mFz5fDcPC2dMrTL98|UCtq{~`z40()dqZyNUV)1WgB3}%53xa)-7`mxu%#EPa~@N zmNu7G8!Sl=SaZ^_M#RwMSQC3aL_web%%Z@2jhtCl&f{1r9ty`~--y%#7)ReQbjPJp zZ1EAPNqHNUk|XNGm1_TPUHz?XOR#;6^YZqh=JLFadiIYUQ88F!fRWOe=nSi0|FleV4~{emT;Up2_+%`rw;U zrhSJeL6D){kYM5(JPEQ7$aoTje()p+{oqLu`oWVR^n)is=m$@N(2sRe*w|9wvzve) z2l-B1Uzv*6K~nHKNM%THQFdHmLXLPJ!9Oj(X$!W+_)FLu+FF5Q1hs`F370lt|tDlaTibJz}hF1^T!DdqeuiyKwbet!H zWs(J`qMw(a4Rr9bP*(4UU@S;Tddi|lHYi}BaHFB=&-o0jNYlHx7%0Q|MkNwD!v9gp z80Q|L4h1GF0pWE^JTz;A(udk=ZJr9v=1&6wrLM|4$(DH3Xf{-i>tu-%6uxe&$1Q6O z@+D(veJ@|i;4KKJd^LCDE8+6@%1ZegY}rbKjcCw5?e|Qel73XpxlJwItxw$L+S)Y2 zM1NKA*458&#ou9JKi#uQzw(G9imt|>Hl`KT>j`W)@*AfX zy05!SKmB+ANHos)S>W!KG!MYymp-V$DuZhyadLa`pEik@+0n?mchJINi75__$&<2y z%$S(RP?avR_r}eS!j)Oka%UUK5^<$`6LiG*%GP4O(>$)JQBZk(H2u(@I5dqdf+zwK ztomFj87U1^_QD3$cGD&@eEQxuZR_2*oE$i|s73LmtUe=eJRLZxu^wLK(-^3eQEPdf{B8o;wc)ie=AuY;v`w{%4pbhZv$+=7{+tkCSnzM*bBIxyVb*N$ly@>4Q1U=<3N7Qno zLuqPthINqH&zm#asZ$}ZgZE{S?LX^p{`1hi;Af#|MHTkfNiIdXs?xxCTq%jCGA2QFbEDe=)XMfST-B$ ztrQoUZk{}0Y#8bi3nMP8r*)-B`x6*~?Fr;%1*4%- zjU<9@tH|Pox&#VLEW*dd7(R_s)JzYYZ-a`=9>!D&G7i=cr|tm=Ej&~i6QXnA>@}W! zpAcRCvg8Y~gGWS>?ABAtFI~MB>4hwpqkI4%hx;s_^&0 z)g%esucRy0a=`gK!3o%9>$-P? zg~tG_tg|5X>Q}9CMfmm4GUn`Po-b*X;u-h=S_z{LYRJYc<>%q)^RS5I)bqaWh|u4?)a8$%w?do9 zs^@x`EdJb!n)9$hL($Nb*_FJ9aVADrlkD3rZreh1(_3G7Y$`1a4KXwtTP~Vf`#Nz$ zAYN?rdMfmQQ;ryD+3Hh{Mfzqxdj!7=Rd9h|9**uUv;xn}W0=#kg=_H4G&x8-NznT4 z?_)W)@?qPINC-BoMNl~6uM|J5_We}dN9=Abv=1@Aw5#igKSBNKgG=8%h+qEXZZ&U3 zN!buf^|)AzCH+l_UkY9llF9hHNvn&CeFAY6`Uj^R4U17xXU~eqoro<1U5)+y(ed5g z{R1qmT1ab%rIj?ysh{m$H87R5LW1)fn+H2;`=YbD8|XU4IqGb3MaK;ebgzx;>FH?2 zm68?uh0i#2i0#p5983M0j5}A|;%JVCasnZwaMQ^?bk?%=p|A>sc(4VeoVAjWlsoaC zq|G0sow&6DPF6g03Go8!{ZJ(xtxfmE#vq!GW9fI?x#+@%tpxI?Tfdd|K6lPxNt?<{ z`ySy*9DB&1GGZu{>C2uWXwyZul3Cj2!afgv>E`XhSpC_T7KP;?gM-olK))d=909Es zStV(#ED2(5&zh-XlPCS?<&H)9h3w;`&?;SHsywBvjNWJUWg53?o7_V}_>6X=KTzZZ zeH-=#;GXbwi2MtTPH_0rnOP6Jm9Eco)FETKyOo=2jv-T_(%_H$$Z^4~Jo&2c`5NxK z>u7KVFMSF%wM!N!O-lDlFD;Qbx3l39k7lcqOVC5ah)KaHOthj~&FpCutBp{chn&B& zp?;O1l`Fnj-+z~FOPpT^vs4@A`SMA|q4TC@A@6q-5RRmbVSbVv*wBJHUS_6wemBhB zac0y*2!ku|NAU9p%)?0^_+BESkRLCnfH`=(6%Yf9+;tYn36s7CAZ28kktM?u79!w) zRWXZ2M2AO)jOjSANl4jJ<;Q@KZxo`3qV7VopPb}&Z-ra(+uylTjf0~%$HpMVy$`hd2}NR)47hoDL$A}KdmpsCx8;n5bbBDDg| zd7Ghg9!d-}`sF?{^x-nG*XLka(aZy6&#ef*o^-HOv z3bbFwSN}!$buXo>{c&a9!?wUhFdG^;D_$eeDpNKW^sLSHV87nE`fJ~C%y&0=875|w z8s9#+^4pvnlT@{gL@iq?n1=rJTbahLMJC378huFA%GyXbOgHqKpc=vMd(?OVc+TBu z9=vREOy(@Ud)p zs9N-6wUas6>ejYXvfo%Yxce_Qay_%`*ivyK`XD7pAIpdA>WMJ&mR-O6Ly^v{6hg<` zUxsd>ji^1jK)M7X$B{uUDG=1Aa}gw}mH%Bm@?f7~!sxnYQmA+-m{QIzS*0*ep7Vh7o zjLwI1OOA6sVAWi^l3EiUx~0+K_4X~Bx1}P`^nvjOowx_NW?A^HzzTQz8wX~nQ9|2^ zD6>+c8V=v4()Q4KnMG!Irx8ri65~#PH~~{(X`_%A+2~OvsE{JsrnEk$<~*rZ>9y-N zZ*}MSm2=$C-H~5s#isYcPJuZ^*){NBtaQ=y@rv^7Pd9x>x_-{O68y(?ZBw~~BHc!q zbQ_Gs`~?Jzim}%HzMt3m?_5H&saxb%T_on@xbqA#3ZE7~4U#e+lL^SUqnx$BCxo4r zVN<#OJqsXw{fra)!xw{gO4nq<=M(ZY7wet+k|^PFN4?DDx+UlMs7@$<`Ly{{*HJLF1 zEMUx#yuXwPe3`|mTrY$YTW1&DwndbQl#|7!KlQR>ty`AEXXBEki4hcLV`ffNiX%;f zH*&W@;mSWq0dWuf{kvRqqEPTPvXzDTYV{=O(LZ#|Q@7Kzkde`u5iA)Z@gYRh9x1%E zZdn}9R;Yf{sB1 z1iq^muEjI-)0g7XW11(O*%d321mFAH^$iWKh=t>_13UpnkTvlo@W@Pm^^LVI{nhIo zbKG^30>8|VC+Bw285Qza(_^4_%D(J+%%WWG!+);CgGp8>=Q5sz;uf=)$vgsPYKjF% z^sZBUrtrcH{~~XW3wj|?X+EJ=|5!~ltfje$I|!;mdt=)RJl5P1w&7y^XoqcqTbM(_ zNE41JthMRl1f|IiIiAmBE15HMkn9`%XMuRq^9UXWazbJ$mt#}v?`(6!5ktMe7;oW) z6#~Cf;p9oacu1(#3`giex*$Hy5GO(5%je9p^XG`{)P#gSf~)O2D(}a49)qV*)$h5= z5eYkhwpi0$*ueqYl;X$Lq;IJm*B!_Cq77wC?dAL5xm;KVOpn^5$qt$gQSR&hwJsbO zr=dt6Xh|0i5p^C8w=Q~Rny2J99M1zyCJz-c7Fq?C2$}4d3`6JX&dHEK6H!78|FY4W z>bm6fLg&_+%tu6z7r*;PJK}5ZVTy-Tjqq|A%0o_&Xkc|R4eG3$7?7gKdM)+h zaX^a+$)0wrr^D*W;C9r*P-w06pLW|_iz#2$EcZMv6T(!duDyU@xlr%03_S~!}vau?{$bY}A-}DAVMVz3C+RSVlG?d{=-Z9)rLzxL{ zM2S(<2H2nzO}7$l;wby9Q`GT0iMEI0&;_*f#H`m>(l6pL|69oo2faKN;?86&Lc&)r z*`vWup%rU?7m+Z(GAmP!<~cKtt7eaf+|*-cOQy(MVid4h-1$4zJ%D3iOm8&%-kx6~ z$({@Wm`I*xWm5RVbY$sdmn$PWJEeQBfABz?kn1$u6fC^81Xx$hu@dEOPSKe50SLT5c(4IYZP8Ecdh|13J&%vD63Bf*l4>wrYZSM0M<1N*TqXIW6YfW&ED$v6 zjf>d;P&D+*T{ICE#^((E8uxN1>j1&Q)w<_NM|csM!-XPg^lyWftrhPfqHV8;#q6Dx z%U)SKNj_3^Im=iah5IBx$84w<3j}~zbA+Ca8MY01_g{`QI;6b#0hq!yB4M=IL*q)` z9cp=?{_cgYh;6wX=OJ87Fs{+~7k^0mdL+s5V9G~p* zbEF+!xz34OE5fo4Z{Op@trg3%52qzKaR3{qQcDw^*?!k#>)%auE}C~+wi8zn%(-D0 zil@+jRXvO#wL!nRHz=~ZvzMhp45NXZ@G${L_9`9YJ$@00y9rP+_zhM45VjzBcKCt< zH5}&&n{zJUF#=IW11n2~x`H050IvkXUO&ZiPZ3M0QEOW$68;30tJo|M5TV72uJ7@B zi<54DOrOIl?0C)1}VR|NeWmUr*?FE0OVT*89gKrH(_vtn}#=9Q-snE9uO`F*Ce z2tg^6;(>Kz^(Y>S*EIUO&x~MCyi^6~%6==(gw>@c?b&jH{FBFha!5)hzakucGJ4*KPrAl8api-n4 ziYr-!B+3MlLg-%IqAKC1$p&j1I%E)uHbM)HZ4~hEvx!YJ2+u=48g`m^8u^DA&qL1B zPTA|NEs#tRkDb1p#hFek)exE(`Ca2hF0;3=(BIynX5K#|d!Kmhj+i)v6 zSSOqnpT}_@D3TLASu5xcPf}`7O>x?jL*)2E~?*&3z;c7Kr*V zf>dq+z4CwzThwYpHB9bNoL91h*iWKNmQwgNYHK2|NO>q4xhwt`xm$r~al=~5g}CV$i)WYZ@q9t%ZXSZvLCTpocg?2psv%6-t9gT!Q~qGQkQjIJ&14ks zy_t;Mg74_?XyW_qOJwtH|I;?Xx6O6=vcn<&aE31z)!p64Ip^1E%_;dL?oA%1>a z*Xw(h_-UeprU>g0cr%< zd*Qe^ZQ$QuoOVG}II;KEJAVRuy|>I86=MCc$NzA~@tP3L7I=yO;R;)A@J!qM&-owj zm{SYEuDZt^=RH)fr768zR%clV=RJ7I}VV8 zo*tO&5Qf4Ug1P6Rd!G?7BFY=$ULb;|fu0;C_?V17ImDZoOiP5g<@B%6Lo(TGrO`(X zSH(FES)*)RsP*07O``Kqb`M_nsdOQXmEj8iFLVoK_}>#=W%$WUUS)XV*Is4#)yrOG zSpABr4C!!?GR&)dWs)*))-^**sDSR^Z1crZ6;MRL2ih5~|CiMwbM*9GL^FJ2R9UqDCLCw%BKpH%58prxUC zvM|x7?c@>ZO4yD`-a-eZEz0QQYW^MS-W~1mZ9seQC_r^K$5?f8oDGk50F3p+5^Gl33jkWTp#YG8jsjNlQ?U zST;q()S&a#rHoM3n675ZzMvRd_MUb%`b-u}p)2sd}FxnMN35;iD#oQt(i=F~7zW?H+dHPf}p(RvwP!=5U?jh}Q{T z;E=DqOL(8f=%H#cdHI7Q*&JtS*h}T7v^}nl|F2rRLs#!8-r}BLz+^xCX7S%%^dqD< zm0$fInnuKStuOy9L97$rN+GlpYcGvkl<=>et`tGPWAHhD{_bs+n8w2dz>C+sAxTKr zGr<(QaOUf`2qNxE;jH|Sd48^bf4W4Gt|^eG#FbQ}OQs=RzYig1+%-Qsy#sw8%{joE z@T6&F!(C6UwIN0gE~P|@7<=u!QE<= zhS}<&_=9($$7N{t@5%z++_&butj@)(cH6n=uvc&12CgPQi8kfnJfi1&MLCKE~k z^~oYeFbXH$z~DTd!F%41sfpiI^LOgCufar&k0Zpt)pT0d5;zTyUmB@ z(gq1ddFbWNAJPs0^ozd;ctyIVGOsX@^U2GEPqwSK3pUXjLS{`wmA@2b#PpF-hUG0vP8fiD~aM)V*eWE#gQ76m;sdM?nE@0z{K&1cTg53iWY^)e}> zQgFpbE*U$0nBac0BYG+tvaO5X&c)XG1~O2%QWPkZO_uyA6n2^PLUTH)jo^=(qlpd! zPot15E0Np*L2*odGeGHlR4x3v+NVeNZ{Ai~%Ot=4LBtDh@^r*E=2mZ*T;@~N84yii zRbmz}SH}u(dN4soTSUTWQ&y|l=OKy~xhH1vNuo4#sLNQ!ibhE7R{n>ryMEi5#X|%{ z{YWQ!J>;desj3}p9s9juG_X84KyYmbF%aRGeYtU-Lh(1IF*h^RQC;Pwtn-Si?&`6l*4$R zXd??h;Brj5mkrB$gK1oKy~8R zH;f%jbCBPwxd<2*W1-G=UU2dIi=Y0hU9NfdThPt$93p`yYA7Mfh3E{un9wmXbp6&1v0%2Fa z@sC@Cf%gGw3APR#dSf?V{;S;h(``Q`eZb>*u*l96Od_n1&gosW{F5rTxQT>>LpHFI zkjO|mb9mq3`wmSJBn(uu(Q959_F|M4A9f~cG%oC~FjkZ@Q&IE_#vQZglrLjyl;?!4 zO7Fv}g0=BG7j0|kWLer*mH#1u%ZN_GnPunW%Ji3fZU`$f6jY3?y;e>G%v^V|NB0XT1)f|8GyWW%!3m}=5RC-0nm zjx-mSo+sn-^Yu87>OD`INyk!gJuuFchN>Y+J*^#$J^dqV3u>Dhm5S@$@oz_B9q;(h zyP(ICCCI$f;@tv9lF)QKpe9OI=3ZdSWM1fH1<8xh8*c_H^x${>4~FBAZ19Za?&j#E zrl!XFfqs%hUIJZ?8y1u`QyD(4mi|=D+NGa))3(JOn8TDKlOmj1Y_ab-mRL(Sm111^ z;&{vXx@hAqj@y4#=@DE>R4;$)agPgb&#A4$)j7r~>$uwefSN}S4f2QH z_=|VjBI#j{u=rx8zx2a~ zP+Z~%b4Crz7_1K~Yw`CVM+Q9)sh|2{Vqm%YE)(;M#OmKy|TVU&QWdjRs z@0N`ZXk>G)85e?ygJ7Br!PGIO2<3s7CJ9DfJXNp~LdXR+E*zpCTsTBOxNwMmaN!XB z;KCvL!G%NggZyvW)Nj0ic&&PtF4X!Yl(YX;zIw=W5iWGx6%@+ZFYN2??!gU1yMpw^ zfAgQeKG$LB7U*D?yi`tPD^>dbX+u`VkMa9Ye?{-#%vp)r@#iZhWkp_7Sw>mG4Qv1L zHI>g%R?f^nwY$T@itG3Cid(HT^0TZ%Kjai`tm!dn0eUUzUWa zm{7&|HfI=JO=R3pR7>|0mF)4km1t?gW+AKR;Ob*~9;B$`$0%LL)P$?lPEIPRlcV_Li&Jy=0+p%lsMXn@Pv(Cd@7JAM_VjpYK= z8`+(}hraJC(&EH;x!bTR&4c09mX;VMwmVQ{0pr>JtxS}NAUmxh3T8TIz=%*fT6xo| z=^K#Q#(J+6Zp7*tv~C+p;1@w#Xa=Inn#_b1W3M$vOSEtkXZ3V%nn|2!8vU)7sZ?)L zijS%7htzoEuFmyIjCI9VU)v!s>XU_#B`!D|BFXRbz2GoR_SbEjlVApRxxoDpL;9Cxte%C+zUHXx?9D%y4$Q~SxR{Mz2 zY#Y5y%|@mPECsg?6eseV4RoHpg(rB~0zCH~+{SB|!XZLJBcU1kMLv9uhVB_2rOk5i z9SN0NOL4E&Q)cz}RVV77Tm#_wE3noZq`iMpHI^9r9%caP(e3C*r zC5q9sV_~*+xL<9K4>ZEa!Zjkjj_|7qcWyu|%~cIK zV;k_3?$1Bmd7!t$&4p=m!=9g$N`F%5Pkunyb4#mNF72Lu>5fYOu#Y3MBiLOS5ca~- z9K(%WNgqdm*qE`!f!W1YH!Jre(sN{vG6;s__UKQ4?7wy87{}c9=T|R1!lJ8PcJNM< z}jwL=I@5XsA9Fq0~qD+n*ikfcU& zsSg=Pn`hRW?>MhWdU|d0fTR&X-$HmM1 z^?3oVAWSq^E);3J2iMp-zLY6^W7p?oNAx@* zDy+mRrRM;80mG+f-|2{6(_+E<8al8TK^_fE^E%QGh@bv6evVJKVVyc@n1DPKi1Dwy zeg<8VQ5YNrlZN344BrSWv2J_V`j0RfQDI4xrkM856{({8Yci;7gw>YB(^5DrGr$G_ zH+^8p=l-w`nLTu+R!_$YqH@TjE)s#GpHrbEs3jdr(%8v=hOHF#v1f@HJH|eb;j6R} zL6f7AB)xjQD-4;-)Hgg4Ge>_lILfKdyw?$!N_|U_55qZD!6YUNz90!UXU){o{6q|R ztksX)XbX4104ZI`mhi$tE15Jane=3aSQ#&^CQ^#(m4YBFSeaDO99GvQ^omjI17>{! z6Lj)3&q{aVB0cX0T=932K}RD-_p&5ChLQ}JF%+R>bBw7zeQf=BC>%OnYNeXebe4k6 zFW1CkZr%i*&;*hljnNzAu5I6x>!E439Yo1p=OhsMz9SW z<8kRvA95^6^}UGYe#8q=!C2eZD14Z7P1r|15B^hDdaW#W@kTXUp3K0O;$1tXY{&F4*!oES=`Jqoo9;@2pk!@Ts(1Q%GC ziQ86~Vgc+mivu{6gL0Yr81}hzL<`KHhj3-sO)r*INvI=%s6W#C7VN+_iS#~}oZ~s~ z#1w90(>Gk;n&;-HJq6`dxHO9ppjQnP=^>N@&`2iFzPBjcGI!RyNlT#g;%S@qv>EILzX*L&wBzo{^KRyuU4+ruvj~lSmoKTUq=Y3Y@ zeYQ(MMfRJ?Xy`!fATQ8P!BzWXo~?{V-A$rGFh1196zPM$;3_y6sd%uM}k{F;fqpi4& zR+joDSuiWHz|Z|&jaQUg&?6bQqFzXI!W~wmS|(@q*uz!|C396h_v<+ONL^l&6{nbS zICCgOZ$cXKqSRX9+*WcUKDK6>$P%P+J+n&a3ItoWhT=TrBSWZ>t|TXGeC13EqVM4K z2HQAs)5~77rOdaok$RE-F?Hm**1$rmC&SutCR%fvYmKR} zdKxx}oMJIPNh((scCz%Z6p`qh>e!=iIqp~(gFTG{hMzKwMLwzLKtqfk6K9_b@#OPe zr4b8jWe1G*MxvsH{yyKP8QdfTQ&p}iZo0#)^=m9V(;#f){F>*)+YJwKuoQIUTmUwo zw9EbnY-esE-aP~ficywa)k?U72T-_@2~1|kOW{DzOXgUJG|Buxed9+t%IHH!BwILo z%N|Y_wQx-OstH3df(}A@=+ac_BOzqY6Oa%*6Y&5>@jayQF66DKwD!f{KY#tsA4_}N% z#OD&a)<6qxR}Ehm;~p|V81rrn6QzVu1!@SvLvdiFjeX?7H)Q5OBTt9raZ_+5GY5%` zvCl(b@C_UDTw7-hRX3C)XQFrmSvlv;VvGAuC(OAUMm zOWCe3Tumcka6AShX@CzUCA7+Xn@9^^1rZULiR zSMfExS1zhZqSOAIy)w736_>FhJD|vWjdwhwI@Vco(`vCSzl9czVZx%pVG~&i3iAO& zq|x+g#8+Jg9dwIWQziKUf+F&n09Uu^=Vcy%n^iLc+2b5ov-KX~j`p zsOIL1l2?8cid7!zg=D%jRK0px6qNIjBT#))zvl|qT)k^ql)rn-r|~F~SX2nc_?l_b zv)X13Gz!Qx+Eax+`4WxqHWfL=s7mGrO|A5h3_uU|KYs@kR6TC9eVzl%mf~F#OloYT ztBTUAy%4zE8*P}(GfXZEdq+S{%cQx(*u@}GZF0x72da#;G^G>USrk3%9&7{cFlssj zUBD!FD9d-5~&GZC)XXs}$# zsT0KiCGS1J<0`H;;Cpvh(yBLWWm%TAaxZc>#x~eqb;-7RvzjGY-KtizEKAyTAhZNy zNX!KiLJK8?Vjy7?Na!tqX{ID3)Bu5m9^eb1{qH&V?#x}JIPfL^^Zn2B-^X6fnRDix zGiT29xpVQ!cQg zhHnp%QeU*e&L$>QW?gQ{hu}S|v%zV=3>3=xhHCqBt`>%zVVO~6yG2?K@}^P7;NHe` z2@FvUUMw<1@4=QN^R1zD^-Y;n5fkMi*-De`W%lT9_p(`n$(?50JBZFG5V*H6VJwzh zY1We^vGY)Ce0(rltw0SJaB`J!qY28B>AnoZ{7R;yvFcU{zJ^(AjVwT9gmpD8=IE3) z=?nB><7^C{Ew)Q8s8(`_wF1-I-fN}lpFuuG>qNGw0L?N6v;*yS2kKmwQ_#GNb%Fjm zUWVPugL{F2AKz$h?5d;^?|`UV%0a#)4k|SU@R76_G#wnz*|-I5XPxfi9nuQu-pnm^ zR|<*uWqa_)x_s4zNTprMpy5}C1fN8yltu}~KSQX%WR=%2&8U;wKDP|TI}#(vsXW82&7<-fW!tzp7wXIxnJe))+WIzuqWoDp1iC7tA zK9uiZ%q+lF;Ice{&{)|*9* zUe6A4h!7}|E2XKzJyJSx7nlIb(=|mLD}yA%6)&038!qAHSt_Dh>Y_PfB2jk zDASpE2!X<_XPn|9Q0X#jxf2+y?Ryxbl$esC_L>R%%s`c&EFI8I;F@JBhX!d>YPR~g zj93!AgtH7vBu>hXI2H z(p-(%a<%qYe}IDyUFH;t3_XEq+-|!7VcTjGuuT$@Z}c(FLrS1wVt1oA$K6f?z#opS z4ir521qlJ6LC|`B9S~O0XqHkTrJ!r7ln@!QX{kv48bW0fi@~nc2R&vSuM2J*OAra3 zr+JNlP+X>=1qL9k6E#C2L8G?L5mu*JJOIUSC;Xk=*RpxjvX+10>tOhXxSkKX<>YLeHm>=$Ry~y zb_k7VGtR8i2rs+F#eRtjF(B2!R?Zr^*}Z=M62Sn?Kz^DT>eufk^?6Y^+{F9pm@wX_h0H{82OR>ZtE(a@ z7=D~(OJ4ag!X=49Gi2xMik)Oa=IfVZxm_3mRO)L)B#K_4DJm9p{tF~fdbczLeaj<5 z8WvqW+tou{Kq%J(ufQ0?C^9`id!-_)-$&&(mq)%ncr@DPan2w!%w3@r995Op_5A7L zP4%qgQ;)v%v)mP=uGaFS*X22fDjaDDcrXG-8Xn>G9FZaFA}6bOTA76GWa!d7EJ10P z8NZz`_1f4aON@H(W=Vh{h}4ZH0ll(*qHnlVQ@19^Z=q(lTP8x~?2!<)j3Xw~KMoh{ zlB;m=B-;O+IXfeo)Hie-HqyID26~#haVthf)pbhxq>?cSWL{NS*3S`>jC+YP9JYQ$q|8TU$1qT_q>_Z8 z36jmvJqT@+d4~0Nr83gR=zY3kI)D<@l3of5a@S*=+h!)K`kCx5(5zPq_NZ4A%)-O$ zl=KpTqR)fvlazl4qCQk$QHnaLE;^e5gNeJ?Pu!qnLdBW$GcYN%CP1JQeu01HOMLSt zbrJZb*9rDsV^%!hET!oh!Dp^NAMNc^?4f*>UrdERyRri+f7@Yc=|Wu$gkuG{MrsHH zPizo4)O)Aaa8ZCG@KwaMCTInPw)hyND3K{pbt|a_ovFPPVh^+IU(6$HZho>+c4oq6 zLw^^ z$i0?pVjTMJe3N;B$-sA{gO9%&o=5m_2*`k4ktC>J_#T%dn5!d zu2N3s(n*_ioJ(n8xIvP_I&*~pI0j?5Sp>@}536Q~>%QC!Wtr4QNu3~=ylBy0Sz=Gv zLL((s!lS3(%_Iy!znv_|K$XRd)EJ}a811HCT4UWsdNyDqFj7R(K%5 z*8!t)IS(ui)NQ4rkB^L{nYCYE4Cyi9fzn%yRH^1@dmLxn0r#;5f>= z5KIgA9Oq;n0yWG(dYP2LofrVLxQQu)aD884B8o4&o|GbKlYFmajDpx*F7!bQ-gBk8 z8p#ZeOTz>Xj+IsBgE0S5_L$~pC?A&=HSHkQ%T?38JGn1DVkzgybs<6?wHj$7A>@pvGjrzra{wK&GYA+qpofNYkWF ziG{ur_jim~U z$?wnrl!*o)AZ%E&c~5&K0EbynjdH_DD-WsS|NXC*k+pp?#i_80gzf^eI8x;2@90f9 zcgzRr%XEP9OzDs_g*!}I6U}7T_mFr%S$WmFa+~xmY_eH`%e}_vmaS*+WQB=EreB8W48xF8wFSF=T?( zVY1Fr-kH^IJP;64^av_?hOW1VXfP&@Ao(5&BH+>oD+E!!9pO>7hd>(24M{nSb<2@* z3@W6q(;+=Sqi+5R)a+eX7=s*QqSQ)zq94%iPPaRXp^-i=^AH6xP^GU~A0iM^3#3kD zh%$YZ%|qBT-k@$z;t{pyDqf$BeU4^hx+(~u5Js-z-ECT8i`ZCs0-;y}#G94MG>rpk z(`ieNLm!6 z1hhxe?O|@%re7}BfmxfM*j`DG%x;Sna}OHgyUjDfq7#InsMV5YqYFwq{JQyesiB*F zVoVP2Uj>%|iD&ePL}MgqB{@{HXrds+py_Dx8+Y!Nsw0!TOv85Ma>78)0SgqKZ<^yG zXi_GGan|zbSGut+nAf`0Zf(ydd;Dhd@;EBO9he3eR5k`Lg)4sttN5=#uSjLc zvAn~Uu>8t|*|Qu0icNh_#hsXmjUkSpZe=g9ORx@+xiBFCK|()kM;_F_Bt$AM8Tni= zYI|FhBdAP0^&%hT%c1ifGh-ATjz!X!Ll-z40XFCm@_S`|;sPxq7d^%MIrgCV%!Q5= z=Q5|_09S`2uviU=Q5WbGvu9347N}_!BmL^4Z5y5FQl~KZ>Z`!ts6oF`P5Pu+9El71 z`*pdO=GtxUf=XT6Fx9n=^7TlfBL(anU*k8Og|=Ibbr>$)eR9r=BG@T?Y#kb9Sv+V| z%z&k;l20O1=`=`3AlEZZg#p$Y3|;U6rQRM;n^u=rpSClt0lQdroY12%uE~$f9(`Gl z65+|*C>#+iU6*om$ru`x?C{gM(k!sWETP%}kWf=TwbCi~9V+bt{TBaS_&@tot7Ape zO6L#NoEeVgxMsbeBmqHko__=cE>~8qOf0lInr5mMlM4+Kf(M=&qYrQq&{oOArPO<% za~Uh{p=i{5Uo~W?>r$<0W^#N0444zoFJ@@(cG)7TKeblH_!Psc-q#eXiebg_pjcJR zRK@ayVk~1~jj-EY0s6^3(u!LZ`rCoNVuY>YgJgq)378z-evDc&Dhmj$w{O`MTu=n# zyuPLvq_R~n9}n@QWy*Bfwkt`BtBT?c(sVP>w}@VZk8jR0M`oLWF|(LPCo^JZ=*UKO z9D(GM#_Ak3q<91+Wq%;tu0_2RG=nxSdJj-rgtHjG3J7qQuq+QH0IFD*Ob~`#J5mLY zi3xb5kw=4ehecq~XG=El2D!}HhIHwt>Rr7-PJcYagCs;40$mi5caru&r!AGQ(%gOVN4I#VzCyi{PlhxYCUX(jP6j*_L|;=TIl!8| z#k}X+-XU#F!yK2KhrpM7`nZTizsWyn>!Mk%?$eTXw~V+b#Uss5Gt?xt#~4g1k51+1+}mJIy;ll_yO@D}W?)bPG>oj*qCc|6o(zH11@1tM z@7Zn`mf-=J3hoCw=9 zFI#7nS6rt1lwQKyBtMJ`%|MP>-$v8^1T5WT0?{yEMkjyu6H53-1MiIC#vO*IPPsbMA_4l6Drkqh9Hq3)%q z%v$6Id*YlYLygv-IuE5&rlGbxP8l0-)PAOnYgu|CK#Dr#mmAq`;Iw`K0qx2#96Q(6SpwRiSbYaP zyIS7?U!d=R8=!5W_Re{>_zktDX&ky-v$e)nvv%}Dnctyj5fGm4INjdZ>@HxI`1=^FF>@(N3$T%cxk`VekGtg`XN-3>_#)bJZQ~qxxq9k*T6FmftG#kJ*~0&Ze)0;`5YSs9VdErG+_ry-||H z94Te_6X}RyAH>6|`}FfNu0Q)N9^`?p++UkPS-hl-eul~eCRCpWs(FtxZLcgkj9W5m zNCAEzX(CC7ToloDg?`$^2DhuxmsX=@+5=<8KM8TPq!BX8Mq!HpKQ_sjD_ z@Ii?~En%_j4PcRNto^8(bHFy6z84o>1&!;B4A@y6X(23l=*e|N+XdXdkje@*DcPHa z5_G=QoUY+|?Z9P=SF+_aV}1IKI<}ZxZoi9KTn&i1=V) zx)A*|RZeRvD+%F>heOJ^t{lbSG5&CGP{cX*AXZCwA}InXn{?|M=Y|VTF}h8nK)JZ- zRA>CgoLUq2Tn0d(DD-VZ$)ARN#U=)*n&bL0Yr1E;RBwyFUawYR$ZO_aWCn`OK#3VB zW#C^Zv0WmuNpOl9A+$%HN(=eOz&1?9r0O|Py+1&=l#98FBvjhlO|_jih<2C-6!N$y z-o5Px-FA8o^QEux)}pSwj@xBU-eLwC%s{IFutGToKL$#ZbyZo@W}R#c14<`D9s*F! zc1sA2vENaac7r6Pmq?c7;d>{|CwK%~1%qCN+zPlBIdB_ZGN7!m^d!pkf_MYQK61!sY<;F8~fF0gJ>f@+~LX0bI=gpypZs!C$1no^j%)H&2Th`aI} ziIGZg?Ur?W1J!&rQvZ|I5(%zZi7stb54yLV-FCaWPdn0WPYNCGSHN6Hp3`l2>hbdf z^qA*CVvSYyX(c_F{)hM2Qw#+72*g4oZo(ILagW_OpBY$ivgy*hk}taO!Yv57T===` zF8n-{vB;4~d|&Ocr@5*(%@4ZWa=uc%DXqmJGj|^64zW-$yYL$PFN<+@S;DYF*eq1B&8`hh`r!gtGZLS)gB8x{wL2~NxZO>?_8c3> zd?sU-XrKN%du9TNb>n5hoM5Z70b6ZV=lq$LHva0Lu_Q7iix}G-40yPBm5Nn*O>hyo z&%iK{EgMMePVHkq@DLUJZqm%c&4AH?ZSWUxO!`a?uZ$q+AWuW1>QGe4$uwn&*M6O9 z56$44Q)IsWiZy`U68swqy-R|}0M^)qW$%N^gLT@ zwPer6h!CHYryHs(o!lq5Y0xk%h0>Uz$MovQS#V2N|+Z;%H+YlVb)Z>h$*jmzB&CDaiu)k`djI zAPs^8DcSXU){&q{lKli34^c{vsJWKaNH7L(O2S`SHCL5w^^Td!N*n&JT4`INPt{po z)e$**xEw_;^L7R7x>D#wrx{8O6o6NK|GG`EG1{#qJ9+};2CLh@@RDBDfHUsA(Y1>#KU9K`H2{CG| z=L2Pdd02yN`mq+Zz@Cs)x0pD2h#WbShJO$4tY}~S5N8m2%slp()#x;1>U;w$7g8!) z%~}k^3U#r3U>6c$m2%%I1=1is*KExqE&=WSORUk&Se+jK;640~1 zcX2>y=$^5bn^dLgCbd6CyWVAwcjs&mx>?z~{B||RPP>F-jsyKV=-XaglBc7XjPxJ@ZrSsWvoqW7?`H zdpzBZ6~ucO){zig>^5MJk0_VM!&w&XHv{&Bx^I#jCY}3X)!wloZq^e}>-K?DPz*LRddIe?Lpy10aah@_)&(wc1mz>= zXZeC3CUBTnF#iyaQ_{*I~>3@adDfGM62(@HYzN$ydI8^1~29Zn79lDVdH)w+@P zawa^KA7t6=wk0>?(AUm^n0Y{?TX_n@ZPuwEb8Jz9HY;ByAV{Tq6$l-XC={El%`*>&vH zE}NC?a38_Bh9rvj;6GJ_Ude)n4n4A{s8!7Ny{}EwN{^&{5OeYZKV-j5Nv~?jwgnZ6 z+W?XpOYcOt@U|r}#Itp~c2l%Hc0B`C<4WDaZN|)jWAM}KU(K@31|HwZ9k_dJxt>>$ z(;Y)uvYJv2&P+hgkYg8q6}RDk3}iKkbRc8ELqyQo43vFWdL!l^r{J>Y6{XoaA^mQp zpV~2DSGXiE+!`XAO@_K$sSPM-Q1Y#177xtyV{~~}z|ga612BG1+!m^RQf6OdcFQjF;UnPuBjDv=L(VNLXqekJyBkUIZ>~XsJOyDM<)7Q zB>GTK^nhQYCyhjxRoEB0rJ|(cA6XOUS@S`aln=Z3C^j(#FbfEi?T=Xn^SNVZrCA79n?_r8>M?)nybM9@Hk0QY zX_xS|Qzf^u8b-%rU0TAMrj zowy3c6^(N$Cp%Xz4?Tf8ucvJ{Axe9^3QOgT+U!IDK#-5^Lu4@z*v`VM$FArtX$k+D z>1t+K7(gtyBpu>fGQ9$uooiRZfsDKs*b=MeI%XyAnCnQanG4~&;}Ubj(og}{pljV7 zm!dVr=giVB*kRAK?2gl3*kRA0zp2%BS7ElASZ#%4u2j%x=CzJ4S_wNPa%@_pBPB;f zkLE}OHq};{FslSgyRq7yY@^iLlhyXrMWhHk?Zm`#tK&PmF6rI<9ZkNjer6nX{?KJs zjeX;W-Ej`kE?kt-(z83SV330;(t=>jqWHU)XFZMI&?%uGYB*e`gnI z2a4>ogJa=|kytF)qg_>GPi7En4FHc8*%KLD#oz};u7QngH6 zvcREN%2kUgdniJ<3cW8 z`>647Hubi^4OjWRV4)*0RF(DQTz#7)f1$zaNBkEewC9TLDNE3FDUXzM!BBIG3bZJt zxq~kKZy3ba9lBd}FE}xAt>!GTCt4}6xx_x31N9|X*r6D;)IJOAu2j5hwU*+-we7`~BVN#1fo#Fhncy5;MXl$`FqrlIn_vY`Qp#&vk?eHj)luhc#_fXTJ~ zQhTZ$!EPH8YZsQ<=STP;uBQvMOQA~`iTA~8A0oL-lT>D(C!zc@`^v=?=I*VGdq-oS zF|-X;508s}_UrfBMD5l4JcDF>0S~v`7&;onAUzs|A4+O;lN@%s5J6A59BlZnu+Z!( z{}%3$Jw$jpMk4-TI;%=JTKj2|JvnaN>XPz->%rWpM5{Z;J~MfjLFS@lc~Uru>)u8u z3zOPBgu_5sj-W76so$VypHW>>7-o)sfO)RdZ5Ed0FHF&r+pIHJ?=dCr328h6A!X{D z5V8g{UyK-(**zh~7C%cKY@jiD9L;gZmf=EU~Aa?1n@c5e7_5ew>Rpg;Ue^qzsO#nwu~IvN0c7?$1}_T2l)d_IupP( z%amlL$Y9F&UGqgcxZcn$e0G^WH=E_BNSQf}%kO%w9n685VQQD&7;KukD|k8e@k^{hE0AQrf0ls~&#=#`h(TfRY~+;|ZPP+~I3}3Nh>kYM2Tk{P zVadU)2y1WXTepukMQ29#nDyysGHq13Dz6dnpWBADziF2 z$$QO`M_A?frKA2i>Dy|uOqP7{3{IveNFMV~(8URioNk-X`?@qm$PK~iH#^SYDiyMb z=w=)JHexhi<jfM93osBa0 zaG3sZ6Vqy4o`(}O{E~BEG~v3AIwr%g0+ZEo8jr$H=gs_HgtmLJJyLt(1MKj=cMH}C zikH}eERBJDKxD>~n4wkwfO#9Kb_Mfmgt;HU@@89<%Z40djjdEfMmN*JU-2-2PBXB( zDL`8_*EVC>AF%)1B^UXS)r?yWp)TT+W`EedRPud2F(wW`NN~$rL zy95`sH)f#EJgLqyj(ZYs)bvT3DfylPb1K(X&3SXc%;E`y!o^fX?ctD;>1#3>EHcu% z2r4!MrDm=ryLh1p{Zv(mkbD*j-MHwPQeRHr$DOy#)Y!Txx+z&CxCPy?vHV0Br6rl} z33pVXLD^}R)?fw-%_-VV^3c~yE6^d5ZU#NXncE`m+`|E}K`w$j^0{SQ9KYKuHEm5pV!=6+LIR=^FET{9fKUo0n|=${oYqi%cGT1D8Zs3*YyL%eC*&g4 zwU!22u2e-?4T?ylj}Kaj*FOrIm*6b_YA2YKG&@!(3HW1GY)$bF>`n0L2$H5`Q}w6z zdq$d{mf)GLyQ!1us&%z=pr%<{)nbpg)Uk=;^s_UK3HE@Pt3gb8^WZ;K_+8CfQ#4L- z<79s%U!9=AatO^*vCrZ|TU(tvWN=jf-mSsN4mFJMpls>j==pLfJ041f-Uy%Z zA&{T95E?RDubJ5x*cP*i_L(uIW{XV7X$w5^mu|@(b17YzQIfs-Sjt2Eq2zAK@*-3e z2_1u4qqmv)?Dat|O53216ex(NR<^`%BcXekv&$%YTQJK?+4V52^h?~|Q7rvYI?jc1 zvY{I4QkeFP*MS<;EuaFAE=*IEuH3=Mw-J5|!>Y&dH&Q7`Oh7DLR(;eKG)Eaz+y#kr zt~fMOsaP^Us2>Y46|^=J)COEZ;w(UFXAq8*h*TUk7;Fo@5;#ZTVkO9sA7NsC35h3%Ocu3ELUYSPBKw*%{G_FbcZxB}T}`75>$#-8pKXxhYd7Dn~D0B*8{hoSe0S<--USN-PFNQBLi$ ztCMC_qA%rm4~fQ6u&t7cjve~dVCl#h7Wt*xCZSWYn$gN*mvWbn0qL;~BhCuR96&C0 zTOM7<93GQ+5J5_q^IB_8vo%*g-%ag8e1B(@QD#;+ND^yt8AsSNASeNCOhJkt+|e%bU4b^T=-DnsY+sa|25b2W1F)K zSO=kz1j~7@U0C<(bGG+2br13ht&LdNO>B->0$4T676eit5$HIedgi@_5qKM z8jU5?#OXM|(5zFqc!)_rolg^uDE z=qn7&5q)jDo=ZD($!`-z#023ts#5eDbzHT=);Cn3q>;vkcD;jNA*2^c@CvOyD#Ce^ z^KG+Y&^0Cs4)EsA^ZBfD9(@U{()U#(meeg5m(cJzMIx*pm@Qp5%Y@n9Ms*{8cD*@r zYn#bfS>NZkww7Yu$Kb-k%FNj+Hv<(q%MJDB_M}5D=%Kco$=lD@t*jSK`iiggK_ET{ zj>eo*d0-RE^z=65YYD z!L>xF#h;(n4d^1|ju>gpTB}W|N-Ps^vi=zONOfCI^3g{h-5jar=U}P%t}Q_)DlyJw zbi%M*MPWM<#}gcZn{cuy0Zl+v;{2c=qD81mOp9_v&ca{SmbfEI4WOfbq1YEP$?Fs(cI3jTpJ4%_e)(r%H4WXYK zqFgFHhILjT3=c2WtDuo}VSxt`+F_Kmi;^|*N?-tufpAj7c#$nIQg>Tpy=-?B&w&Ck z;Mw|HrVlK~Of3IQ_PYXj`ELym0mCz{MIp+Pp`%li5_}GI!d%?@4XqK2-Spx!ReqCm z4wi$%l+3-mY#3%KH$pcD{wAp7VVI31)<*+H=PzTmh7HRDq9#XLfHhiy$x?l3qoP}@$XNalA5Be!Oov}<3DWTFgMJ8R(y-pLR>l)N@H{@VA@xnU-WxvuoFJE9CApC+;!>-6N!;htgw) z+ijp+1oxVOJ~Ob(NW^3vk^_IEu-{C%ZyB-2Dgrx3`_`tFqOhrz(Ozv>N4Yq-a# zA5SwdrZX`FO!)KYO(S{OEyjO3Dwz?<^7VnHTcA(=uu*z zTtr%_pR1dvFqE@U@Izx#E_q9A*KL88&2d5S(d4$HYl=XnUNp=Puku zs(*9UUCpR9-~Ud;_BbLK`|TUa@-EV?Bg3|Nn9^qcho9P}&qZ6G2*u~dpHXqU>HAjS zN4IyY^A!H-c6~&6MPYh*W|7nP-R-Z(K)E_S>mC=vN(GlHg+yL)oPfXz&IyH-SJl1Y z$^`P;xLI3OY@MSW`Li`HV<+=T9k_dPFE5EN$=!dkk!hsq)u)xZo7OTZ8}+<*W0Z`$ z)yk{Y`pw$pjrJ4WO^j?>KWE3g++F_W+QQ!%e0GJ+xu%I#*eR#occCR~(eps4`)D{q zMmL^J=@4k8Bps$`tdc?2sH-*MM;AwhNqQPD%|SjtUz-uy%n`ZK(}H2#Ov zWk|9patpL6a+)}JzoL8)6aBbgEM(HFuyFF9y&v%mCp`Gdt>pqK6slz-{?hx)L(kJ( zNV&%zvlJRpyXUW*RP)=1gqE}fr(E;WTc1iELK9luP}cmh@hqZtbEZ%;73HEwKa3GL z5s=#c59eTG-+Ld+(DAYGvzY;Bh7_%?kBmqkXm#%E8+Hy3543Jk3Rl+`6{v{Q4($$b zXqRdBwb3ODHic&JY%0IEtxqXk;C(~0pR5KJtgg>+soJ>%TUTgR7vf5;mVi0eLYJ)p zb2R*EO`p>V?c3AmMB`7rCGPo@ddp$;CHl3zOuyFGQd;eCkK^aC`Y8Qc?xkPr-Slg_ zi+%$>O>Rn`Lj_r<|EbjfG^EerGDUO8RRjbu8A`WHx;}jYt6PEv@t|Q-5i!=8^{PO@ zQ_&4DnaM#wC#c57-Uf5Z?gm{1C%=EQg=++)VTWuMqk82O~0XZ=2Cq7R$y|s9k!KI4_ zo$?6ix+QVX5~biCwfnG|!$O<#nescqpJ_cT^qhZocNh&Og!(=Lf7m(($$@+KfMKpb z@0#H#662yDrGz^?4+ZxwQ7T}VOcqmEz=_&cMVIYmF^`pfxLk_iycwUeN7CFxaVHn- ze3l$%R);9H;5n(?^ij}ycQNz4amTZ7Rfmu<_Pzdih{3ZjU>@nvq{fvGqoX_-;RYN3 zY1IGJ=zj|JKh^r5a{bSKbzWOr+m>{TItmj!HVY>IGV*I3<)L(3E(aM)Gr&4COE-ZF zVP!jO<)I)(+2zt$aAH|VnArHyRY(XGrBXteTbWtZNC5S}Rzj$#nY=-U=mv9iV<)dk z1zoGOz;wgf-3J2JyPKHeym_hkm`*CcL ztF{Ej)zbK?4nLMseBj+mKQ?3d0PlDqFz|5D3xPb4SeY?ER{X>T?)^@7RfLo?vEX^8 zs^a`I>KvZ4V6S^;i_Y03u_ir@rR6nG=i~o zQH3B7BN(Xg43T!2vp<$8grl`Pjpr}XH=-9}B4cRQqn+)wFIYcfrtOEGVCKPpQq#qr zO#q%jvxK2eE%jEsyJ3z?-))lGC)uJY-6!e%M;qvs_DUSJt78(RR=3Bb5!g@aSQl%w zW34nYR=DK?Xvt!w=N`4=u-eOZEp)MFSH^$$P|0G_asO3^b_lz6Qu$`}!>%1<*E*DM zKn;EZYiPodDKk~JSlNfN>SCT-G8mC`Wm!cT^9+1F?2zDDh4gw^H4)D$;*=#h(R6*! zg*FH6PKCuBf%DEanXV#H+k6Xp%ojrJ5xfOP6g%geC<=G;HI9Kzr>RQyeC_?@u7vSu@o!G0VW-*@SbF+DC6#*ScGnaz@(W)1S2xw>7Vv^#j3;iY;?!7@C(phnDP0>@|&cJJnpbnmY{ed4TFFz-pckv|yc4 zQC&XJO7DiKSq2zndjOyX^IB^`BDW?#yIbTrruIv-SwziZ+XV5 zwmhm46bb*X&qSJ+}ESHLsVOxR&j-Wu3Dt+yTYD| zZMZ5~qqogb+U`}|zg2hWl1r_fEcuo9`$x9TA<0D}feCbxF&2NG8>hY%X-z-H%%+QRpSp%N74YuSmV2_AHWTHG z?|k&-e?1_E);@hBR@R3EXZemeuhiyWX`d6b@`Z3qSbBH2GrPBGS9fcRQm0j4Y0oP~ z=AxsDdb>M&Tb((rO+y$250a`oe0@0qN`tf_ddeP|cR=m>=#c49ku&+~fUqMd=h1uB zk~`Jyy0ur?1~{3PHSxkXDd+4}+WS}8GXnHNJ@IOLIu+{G_9aP^`neyYLl~CIpvOw( zy_Z>N@RTt|c&IKzmyG+=?RTm^&yfiW*s}(Im_Na8z(m25$MU~a1D@f9mmUS)o_1UN3J~i`Bb&}3F-uS~~7`rIStV<&%MNR!P&qv<1245)2WMz_ZG9)}# z1dKY4G7q%XsrC7}TF}q!^VMbA(x2Ps;NwlGh=yZ3%ldlTNr!B6o^s4Ut{KQsdQ*+;RIrT%3ek3cVVVFZd- z+tWK~z3gRI7EcLCiDC>}F0sbp%^IcnJRT4RQq`{2qcJ1GT?R*qtY|hdWa0 z@sg*b%7~`7VGtSUz=rxr^!%WQ@J_`@bebJ+^eA7>LQow|)m)SI`AbLe4v#M>N8?4F zJ5=BHi8Dg6wN&~N9GbMJx~C>cq1QJCTZiZkR$bFOAP(vkhB|^KRiCN`7f0YP)T;=E zJt5A*EC9$!r13XZxr$WR^)FGeT!JX>wmF1y8k zV%UjIob16@o}1mR%|Bva=YE=L-}+wYNiu{PHlBZE#=Z2Pgf1Z_pGHmAACF1AS%%c$ zY3+j}_QYwGGZ6{Zr38unFT}ZFf&VH)KYqvOOxSvyUqQiOCmo~7zQl))6R=vTA*q?+ z7^eoJMb^gW!6*BEl}zQqf93LH0ZPvOs?vNif5^+-!Vd9b_4wei03w=EckUmIW@&sa z@yeW_KbN|Ag}~*)3c<)wUFf`@_HWwkvegt@19$L}@AgnoIbFRe{D+s^U&*XoL`gHS zpb!a8m=#}iVZs(PHXnU)MmidsqmN!!p|>{u8Qj|BWpvmuYRVmG+LzI^YoF4q)`x~r z$VpMkus;ZvjWVNoRycd!{c6?OY9l%O`p`Dc+WQweI{v@m>#1g6pUyr1|KRo0<=a2b zt$V$!9>;O}sVGqq+SbB9c1iz0w`rb9)<_I$M8W-P)(_PBlj#ORt>O*q8uxB?o*#U; z`G2O=3siyOp`y?@_a69XU_kCb=ODSJ5rWiO3k@=yP6X-c8WOb+feO8?CIr>Z9a0ZW z4F`D-27~4KgfC^Bhk~ewrt$XM3Cd2?;WB-YMEgOD2Uy?Bmt7V7Hopb%@gsFhbz4jX zl+hl0hBiRUnerr{D-J1BHTVjzL|_E>Azj_soJ|m zlrWJ9yg&;HO4~D!trJAwDsU|&r&7e2O;Jwj4LcxWZlsu7UwrjMx&cYY39(aU?Bj{} z+|5USG?hrOoEi|sA|Pm}GAM)d!@lpPL9gPt_rod?C1M2iHwjElJ~d`49~BLau85F2 zHQA4d=10jNp2l^F=2nFds6^($e?0s2*9nXn&Atl{Z0*ojK|!sVk_8B}x>+kuiot*% zl;a2G`ayYqP+v$Ib8w+uT8!M`6Bw7{yTA0x=6Jf!8z{^K{M4E>P=ry^XB#@;u+Re( z6d;{%9D2|&tP4x{smR~=7&c7nHZ$5S7Bu-IKoy3fNQhaS8JHX-5gwH>hByunPlEs@ z+HQ05Ix|pUPh)+Np48jQEhhUAZTOYNA|4NZ>5STbzvGIX-AY6ENsJdid(0V{l*c15 zdef!ql&uU1=jfNI;2hQ6ZdOSr&E-`Pj}Ek(nKY*>b-~=C=t%l4Grb4{V@tlkb(j

){rPg7m5691}D4$2!@=z?Tsg%ne8!OolsRBs>J5kZo9EBf>;b$4@f!R{cgM4;Q zYq%~TM7v}&?u9RwOVrr@{2g=Uf~EI+x^>v2Gjn(AuMpjZn~33JHT-UhhwO|;7s=tQ z9uqL`Ynd38ZmLe0KJ;)TQe)1oY}b={IIh6p0TeM~hE4=fBe|LtdngL)Rug)K^biUI zuS)4MK<aDwbLhqGVc zaaQ_+pM5NxYA=`TXIb;ln9l2B$ zyR~wDj_%|k+RdBkt~GfXUhHf!r|vdVyNGYb3_Y6+G#IJ$s2xj`n%VtpFNAGw!Qo6A z97ifyOXmlj4ehd)CQ;d9L8E3i04$@p((FM4IA$>7n(s&ts!@LQW1w({1(RHS9|K9w zQ-1Z1Bd`OEYG&(ES0Mqt{eb0;tfgvK7Z6t>q+NO@KG{brJv}Gs>OefzxJI@L0Nn43 zliMyrdI*C3vLBIki)z7u%r>wiW~*)G=_#ed(?1}%TmjHSar9Kdk@{GI4lDiUA{qDN zo^8}PUD+Mq*EO-bDCL;`YM6(@VCmAr9u1wDIwsSjGwT&9pdHcm(V{N0&nPT0Rplpa zXn)KKRrpDz644(XgY0tk(yYbwG|%QMqfY8E848ZZuU#?Oxqw&`;?#jQzS<-mHZ1Ao zw_Dv=IE9}jJBX)2Ug?*v-y}h_Y(Az^&j}3Z>O{g~E0x-=jYQ`meJ+Cn@jB!pxZbdm z-cK?c!WLsB)ncHCOzGAEzm6KwxifJlLDHeD%h{M7N^=SRn?yA*9U&AKF3Mb9pDXWKw$hl=!=+ zNy#CpBpSw66R-8k;P2F;OVzrKGzq1L_-WzyT9>#R)j>{|U|*wuB9~@k)MlEeQ{QYB z^S?=Do~ZqA(*LKLeanfOQ1J$`P-}Hx2+lh-@|(m_ z!Shr{%rHdXQWiqEcmH;Z+`7rdh@lWB z0>YkK*<_oSpIkFFyMid4iQazf1pRC>z*f1Dpm(1<(=;(3&{hEq~c6akS9K`a6Sr5C>&YY-wz1O#ho zV}TO^zFk3?f8OFMQC+6NiKyuVZY~_59pA~Uzew3Vqu{t*lB;A)={HVH%+^_LEjF*Zq|mU zJ7q{P73)f(0#6Nyx;ojbeLu=J)1Adti@4%(%dQxsxjwd@j>(h@#pt9n&8Qu62?OIP zGbY;%(Z>1o*`<{KblJ*&}Mpx$4A*1VD?e3U(q;whwKMEXQ{`FL}zwG;y_FoV9ntAtu|49A+bliEj zT%rHJ(Srv*rX7?2I78nu8zle#P&~c;GQIezHFj#uwd9`DZ-Myy>wsvTrUuAVZWcck zH&vLZf`a&4#fWkdT~;Zzy!>_)k1xw)yG|F3m-q4N`$;$~*@qcMSQeCx!Wfl$Owqz) z#m-oXaUojSY3{ljz~EzRTnKvB+DFu}%hgfs?g0!$9W^ZIz4wx@yW2w9r0!Q_MdW*G zK=i%>C1R%Oy=9bt2$}Kk?cpXVJQD6;+5T>z4AB)N zxZLNGPi|{uY{tnMr|=aZ%9YtUsY0v>9ACa569E%F3G!E0P>H~Fr6A*E*-{Akr(%|o z$0=ullFZ)XqQCp#lG`}oH|UTylcgtg^aWBL5=}(2Y!e#$l)6XMZHLtn?Ss~&xf*+F zp}LDHl2=@IhxA!dkMzUD&zyJC$#;^GsundgPYuX?%8;NE`I{Pe-bR*Ea*LO}h~Siv zU?GtrYHC0dNu6a#&_Bo~ePGj--5hc&6clFu8kUj&@5RB&Zpt>M53B*1S@b%$QT#w4 zK2J^o@_|z+K*uMh21ND*O2ml3v?$1@G8N@bABV;bV_V!YBAo~bMYtjL+mheUxaebl zfAm{g%k3+Oe`)IDNS&&OAQl-~M)`4lu{cfCh*nu6VE=5nN{$s^GpfrBbTHr{X4tGa zDmNssA}mqQ(@PYjg9rbWKLYAAGwCq{y$sN|VPf0+&4@i_U_=6maf5wMH7HdLN}faf zQ}}ld|0eP8>?L94+sl=OOTzx~=~rJx%z6F(n#PFB)$eY~Pgm>*mj`>*OKcG?%TG3Y zpPUgK5oNg{!~4p-;0T-Lj!f?di-IFmOGK8YE(tEQEX&eLmINowb!7$PDD3JT+$xi6 zsA@5y)Jn=E8(Z;Sw7?tMS9%wJk91vsmA2vg(6#C+?ac27C$;Uq3c4;_5D`v# z>bj00N}VNjO{}nXegnPoHY_K-9(sU`c-3u5okFii-|&W=O?v(56K~Q{((CPidY8RG zdVT(xchf7R*Y?k~f>)te*XP>BuLdW%CqIW?O$q0YNWBgsN^O#QVUd3eK_2|aGcGNO z5t(WEAD-N=Tb=3hcmdHvVdQLV`kXB$yzr0s_;||Nv17-OHP77F2SnE9Z1Pt9nX}N4nYGst zrN+vvL9uaCERg-y1zmi8OJSi`V{9Yo_0@x9^3#tT9u#`58w^og9MnS>1M-! z)v^iEmc=VbIf_)&0z{~3QdunVnC+Wk2C~gSzkF8%87zFv-`7`8S2M%I!YPMWUwt)l zXnneCLget+9p3Ez5Lo`tk9jMPkmdjWl(+3Jvb^<;@cPW35k*X|01 z(|N-OLPK4atDo@Bx;YfZ;(gk?kBCgtTn zi%&qt#DtkDL^Yz+C|yssrP6e^(S5iGE|sORUTJ+y-TGs-FIH3UwXR#$W-DOi6=z(b zh*`umn>fpe5A|_c$)5re-S@F`A0D51$^S{n{ci>5vVwp3a^N)4P0OfvxCn2(yx|wq zg(Mwa9fd1*?kryMwUC=5r%O!d4sbN*=ZAhdT}bHi5R=_j^!lySL`meo3Sme^X(jr9 z#pUZveod<9KUnpg2wXuiKY#sf_AS!}BJERf4rt6M*5E~q7&J|1p?}2_EKenI(~my= zQI6?}wA8+kM7Pjh1Z3&`fmIv1w_u+PO;=DdPSSnDklVysXfQP(%pi)6ZZyMs!nvLU zQw=F%gt4b`G-BLU&k1T#5YhtEh5kEr_+nE3_m^mk`a)Ky&uE7_L*m2z=9SuVyi21! z-Wd|(mU$I+kS71{gr>`=FRs8`qo-O+#0YE4nkI14w%YZ(L*m`#zvs0E zg00A%;6`7JSCp$fvjT*7Obtk)ud!$DQn(EH=$wC6eZlEN)MH(!HTH!Bw~NICW76v) z&2miV|8QDukJ294zk(3*$>N!i0hh^<9$ZfXN8^>jC)A3ct0m`OS2M9*`!P1;y6(4be}Y4=*46I&_934Hx3YmG92psY zT{01^<z+KV!;rtP9aK3!nGTkP*`#Cl#YWqZrmS<5WnfL2lrWJJS8V0gGoyIQ)gamy$(L{|8eM4M4&TkZ{@L9=ImlNg2i#FIDSS=@t|b1n^e zZAeWZUI2Y`)1bB99+Zb$J%&0+RQnTBaU3N!=eISUkAl1Dh`+GOE^N{C85VQFcmVqi zkk~1E{OwZcTXJFK=w{+$JPik>KOm3W80Qq_D=0~Rp`oQ7IcgN2i#WM-HU`sNKf*fW z>^387`~}o45fZR7HIo1j{g7)8_@@cOVy!+wrMKzpSUZRtkikccD_#7vdTO|7?)PmU9m@CMfrzp;hPJ7&QDOs6u&!psM z)&~U^cJ}UWqB{)2!}6W!1wNBKAkjTjO4H%a;8SKSkE>qQ4gS75%kd zbm1SiOlGLIy%~JL0xZ+vk%bJ9t!#H8q-5$Xg$^|P+6G27=+Ge|L*HODDJ}wP80ALY zWw7E&H3YH7Mv+Rd9c58C~)J>yKDcEMX6;aJ16S*=!^)jNAUEWl%_UFV(qc^H=7 zx;A^)&JM@Y+kTffYhE~(-a^y0@&(}sEgRFd*A|2?bC;xtD|S`2TA_?e%`z*l?n1Oh zRXGQQQ3ep9a&^&j0ku26!O~kqIIo5taJ!-Qr59awhEHw#eFsQw@1cd^SbBT^8#aHQ&HjQd4=q*rzS*_hrE0& zJVo`M=81TF(t3D9r1oxE#Nl6tMD9zmT$%3uZc1c?-TKSSNG)y!pPsLmh3F; z%EgffEkjw_2}>fEWqdCyQn9a}l7k;3+Ajy!A;O%4M}n1t$JF8r)q3p+TA%IVyV#HJ z{?5-Ie1zMz`9Im;>KjTc{nXeiPyON7H;dN}Po)@ICKElOh|yB>t%+^{3Id}w>#&z8 zJD01@!FB4j{f@ZTXYf5dm+CiT{2~Kvx5=HPGhQU8E+%9Do9&l5j#PH)-_!O>#`YNJ zq|e&+_gcx?_?X4g$k|%|(#Qbs_|nL?QY>Hfc-yzZ$d<@{@7}UVILIaa+UXTA?_>R1 zd}ZV^_v;u{*<&3uwuG$>nL++QPNG^qL9``_$1W79sDXQ6UT)kC2Z?Ln^KaX|sHiB? zcw}S*8h`Y}__$Bu;K~n3VVmN;w=y!=V{MO)@;?4-WQ5bYHzCUV@+XnucFXCB-uJ#F zmE&h0{wnIAC15fXIY?Vl(4zJt+7cc~0BMM;QW2p>=wU?Q zDKc68V^!O8Yipu6(h~KiH6!s`=jO%7FWfJ3^U9@B-a9HIV`H_bfyh8_X+qS;-PRB9 z;yiuN=6&X@s8bTHmfvyC0#$F*)loq~mY7F0!Qb@a3fAu7^s|i`U&!=5*&*k2if}+t1PTu2v z|MY0If(IY=s@Fur$$#>wH~L64JZAY(E%oN;gO>WE+D$h{FS86C)n2|iIC|YjACCMo|Kxf`Q+u&p}#`3W$t3BY~;QeMdcTH zb!E{tnj9KuQW{Jk8mDgAao&a|CgWdZEEU|u*5ImD^OT4=`9IAa5m`FzQ}17P#zcCo zT0*S%(-&hRoR+Ioy}@5mp1gCt2|=;QQ|>%%ad7NG%g8+K*TJ#N+-J{=RqPF$iq@P^ zRgf+7^bj{aq zc`PCKdrvzn7KJeDs8_o-778zU+wa(@Yhl_yByHAQPrsM=;y zI2zHGER({ii1?bqqes<$+Y-*1Gl%^7FMs(9{Q0_D{=P@(Jy<*gdV8O~H8#{^Ikn&W z%DNemPU{axXK4E@arNHfsu@RutUn!_p`95Lm*vfEn1RM(?S3t$X~w~z=KV7i=ZcNm zvhcV?ma+ZXlT9lZ4&^O^UFTVofg-pS?} zf0?v=ndohQ6-rwo=6OdgajFgm`TlRBE>6@g&Um)6Y(q^e}_|s6Bk2(ui?fM1^=eX8W?fUGWG%~7gcuAZE3T`Nmr`q-A zZ4T6~{vq$j8{?s{XWScD8xMsKO?n;8@le?5))utJAG8$Va6@bSGIyIhUa{{yxozjX z^5(Oo!g~>I$?KO2pNN$F zisDx5hWk>r?p9lQpXa%E&N(+Tgh2c4@1J)*pG=mLQ53js&DVm?iMqrxCtthzoT%yQiu@=RI3sTAtcXz)5=D56 zfNY7ICBoYP1ZAQryk)2BcKncS)!gkrzU*-u^5NO<(BTqW-#z=H?u)U!@iV#|tn@X# z8D$Hwe#WA;9~VU>_dWc6)FH*%t3+$tKaBcSz@17oi;o_s{q~%wN$P$;0w;S_P z**(hM_w%k%-<+^~@a;v{9cY37G@2$#rD}hh=JL3lwWM$gim5%Hf`{W z)#iU1lcDbPi)CTI+O@O%{PWv8a#vONRIY|!UVwU0%q-Ue+xE-$)f6#`nsO(QlxD0t z{=tb$3vCCk!YZ6%d|fbN0gbOO)Xdo!FygbetgvaMkUQZrhiypuJz~&O}aLX#2@c8=3Snyaa?7L_IdVFbd-*1+p z$Ii9d?Fry<=2~rWB6wWA7CcT&S=Mz<)6|9NobGWKkS!}+=%McM1wc@i36CK~wj6=@ zo?^RoUriu+`@v-JcFP-nMILYcUnvJ?!?ba~D2~@cr7ezDvP`;A zOnAPpsV_F%2Hs_y+Pj!B(A~%UFn+S|?pG0x-E)gaYDbU7`aSeU(I?@3e|$DJWQOIs z@qLGWiiNF!yC(PjHN*j10gp}T`#97A?K*U-_Rla!re)exZAG}lp)Q4&6xkLoT$m#K z%m$KWA)N(4$KiD=_#z`ZGl@8ykB+EaO2Hgxbb4dXhm?BHVMiJE-R9+UeE5X|?co>J3{ux`fB#3+b@Y`FK-cka zpGf4o{y1&)g;7WIwWy;7VV1Nb`mcj#w?gH$_!k`!A)olM-e;7=14`2(`o)NB|3V5% zP~pfcKk>t+=(}pp(`CajTp7>YdRRQqbr5efu*ZjQKOwl#o$%K;*ykhI#%GjBM-lLO+}B7)Y_BTM3$ zmmkT{3+sAU3flWb^Pitk%;!@<5(PX}gweuywGx(lGMqI&qoh8qw0bJMmMR?ex5plO zG8`prJNG~OzpJqNe^KFf+ET(+r=R*Np&D|uRG=q@!mA|9WE`G~aA6eOD85hm%*q;` zQF@`KF*u1QrTBpc&hyxVXN~BATz!gQ zRbNZD?V%E;-`3*;GGU4i7!0|MU98WU47`;sz^UL z@LG3RY1^f&!1wITv~D5IV;;F^ULIwS>DaGv6b#DL99DXFDJ$vSJR!YQru^Z5@A6TG z&LWu}n0t*#sbR045D<61g%(iwY8D?PeiW@%s!zxs@Tc;ylCxV$Lx1cwib@Wxec+dW z6%OI^0pqkXm&0#~>G1DO7-&374y~fUj{gbFWwvMMgfSlzgb$-iH0>&fBVIL)vEHXM zPm989Ivow;!wh5>O*~5n!^VbRxP}WQAyZ}ez@(XGCW)s7-U&dpix#~&%@@RVRIEoa z{N;le$ow;v>ZX%I)0mlUoUtCU$X5wGOgLQ|>U0FDH2VD9ofE~){!b|?R`LIxc{*En z=H{v8sg(uv6!n)c$|l@47)V7yo?PB%897B985I!keZ{nuh@r%{o>u97kxtjZLu4JO z-itZd$`q|?Z<(wa)VzpOp6LG)zqKkvFy z?P!mF^(ctIPl+r zd=5OkYJ6?x34rQr@Z#gyr{rzs@2|c834$iS(fV&+G{NPalULoF!XtJph|>C__@f`) zhhZ7!UUF;zV8AhGu!9!QQyoy@F@{4_w>Pu@8Nxl|Q_o%Km+3`3-ZEbYqEO(K3-02| zzo3D0=8MyEeL-(gfthC=nDUk?Kn@KMf*oiHKcc$gISyZtO76a{T)lWdb@yNY!#bKP zfh#{8*6^&j;QE5ZadFydXCo#Zx%fYUc${|7u!ku6V z*}CqBVZI<v|G?{+;Zq%hdCR09G{)_tX-ol<(0ewKUPd|S1_S1(9cSrh~NcD$y zKc;c^_M5)+6Od^YF3*Bx5LTEbO6_0wJf zdE4h>AqTu=eC-aL31-{s@M7{Dx7?8~Yz+C@-n{pF4bo$4i%+%mW0?G$Hmz*|Omf;@c& z;JUdu4*_pQV^Y|KrQ@Auz`q}@Ee#$5R-><#oTb$-AlL9lPmRb|v^XFY& z3=!O?C-k4+GH*ljl01kn+S# z*J)E*f|vi#Hf6ad-W|k`R+<>+fukn4Je>zUmyvngKjD5zX^-|#u{p#oo@BBD4LDal zN9v#UpR`x(n)0H;Sx(YlbfDr(82DHwURmJ_600IHp80~f2_F}w;%ZvY25n+XaD?h3 zy!`s|%&(5cI~4`QyPCM9tmq-GHzw zU{23GtTbPxWYO=*Xny;xbJS)_7KuE1-tRsVGdtJIlZFq!9JmLS;%nTwa4JFgIuu{f z%d~-T*UW4FD4<8ECz!gscjx97y;oo!SijSai zvpgYBy>?Q+Dmb;!R|Nx4LT45wDn;YZX$AK`FotQ<&(?pT{lzrq3-WFhPQd{W?3)Kf zUpl^}j`z!&;elczf+ps1K38QN)}PmQV_;x*N#$p@KK)0E4^ut?%ck*)NTmwnjkQ3Gao^j}(?sjj6W(2vSd5 z4Nv{W7^+w1mtMxb6nC0A&l@lcsieVM>dYwIHx6*$`b|0DI#JX!KbGUIns+=7@B!y! z^-&>y-aMW;eBgMN_Ei4fvGbo?w>QA8ahBNf;3R#ZgmIGmr>Xz+XD{wD4}!T_PtvO1 zLh2c353dIY#NawGbetB`mt>WEwHT*Q|KHdDYG^ zSyaFORD)2!H4O$Z_H|U)*b!Si0^+sjy_BaS2Y8iFGX4x^`1!AnQD@+gddBBA#X(;I z@npUm6CHnrmQ#2@c{&km3cjwE3vu8OiBAY$WD^i>v2Ild?*6CG6-_=UX!%L<<@+I6 z<730vUA`cmG8~}&;yI`9E|zN?$>SvXtkq{Y=BTEh4(oR*-0w=5_Y$5q-b1*L`OAlp zP@vN463?x1?cRV74cogVbhx8|&nkGt|pppHC=!lDaK|Ezn29(Ghk>}}Y0pc>+xB`Yt-j(p` zyKCT8u=tC=bxICh^7>!yW-=hn~$AIUQWIX zfa>*|0JI(jOhiQVhJhjOhj(W1(C~>`?8x-vWylxeT%4yL2Y4|)Rf#*Y0>TUMaZYh% zDj;#e{IPaxuA^k;-vcoSRq0W)1vEgFwCn`y$Q~`e7gAGHf+sB+lKs3 zK%B|D;wdTkdm%!BfCjM4E6Ra?Q3K^SEIceAeg*Cg$X$U(Ib6AV9|jQfBX{PsE*-dg z0|8{;w5sku5BQn}2D=iKYl_WfUZNux?3-%;5iLueN<8|5fSwA(vXA|6^~D22|Ds_c z_U4gn@DSDCTtuvqd_le^D|8S(r@wt7W_j-f@NNlls6aq2y8U*^^QAilO+bG@w@e3R zIE5B2D#JtdXO>`RR?3_cGkhh5PWzfVFCN)c%71q%i43=Y=tzL4td1d zCni%qYKxIsK-@w6>6CHWJ!>6)cHciqqFuMv5lO#o!bfVZc`y`ii37aU;3;@;l}q!X z_!yDQTTZ;u_)5*2!Zq=VaDcOpk(H5aFaIk-(5F3Me~6dh)q0W!oSyN!4h;+q;26Jx zFo1!76TZK+uU{-T_mPu#5nnMqrXL$L2U^Ta14F!)>nWnO!RL4T+7|F3#v|*;q9N~1 z&wKM6!0x-$$IoDiWe?Zf5suwwUhD^d^92nwrC~YKjMgujqx(%m-nz)m|JlhnUS%J% zJ55i6*%|yll0p0bN2&*<8SMYB&70CeHD{8q&cmBebeWH6ZCW(?x=REk)(wJo>Y}v_ zwVYYm(AEUlQo%oN@2i6Nn>etX>*sTRmK;BZOFj5r1q~+PdmwtV-fK2-;s`;R+ ziAOAP2wp%uhCX@^ID9(kL!Hg*NDAoSs{4&3{RWaRX`HLy`(c)Vyu%=xzdxj6Tl*f; zu_id8_b-Aac$~a#ofc(KhYz_i(e@%c1>}9vNA~u&1jOYzzzcFp@gfXy*WRdW6}AK* ze71nEh{TaoP8tB9vqo@oB_{g~+8m!Ba^=ha9Y{Mq4VKxL);fl(ZwI2kx4e=+lCL^% zLdq%M7b9)!k#{FMLo@IxnK?p@FF~&2b+{__4}}^5iK_7&<%z`GD=`6U z`+d&-8t*Rcqvd&nW4oR5@gZ*a%+mf;rK-?%F2n~QF>;+g#FcOWXU?tqVZKv5`Nd<( zuRS=0ht2zv-&=+c!Q2P&`i0ZK_#L2wy-g?7E9{e61jL(6SOStUbBdpBV|l+`#a=d}10)399h`zK!&!!jR##J+%lo}nGc(08hG_~;}?geMg3M5DuQ zK9R}Q@dWcu%hRH8g(thCqW%W%sBkH6mIK_Hw+v^UmN3_&19-NdM`sT<7@iFD*7zS% zPTHYhTfn<}4~D{>ex8!w{qd2YfgxUTQ&q|tHh_s_rtne7TSnOP=5cFUTMKOH^RCY& z#jd(9i1$z)IPn0tFNlwN9N+~JIN7Abz2UVq6+6iTuBR_!K2ve}z9PCi9Hs8SM=WW}NV@h_@b2(G{vKuWJLS#<`6? z-kqBFdM@MRy&Qb;#fAD&aN*F8^uM9}o9>#_srDg#1_+S2Y7-D2p2T`XKy(X*?x66v za)4J^tdzve=z-MtAM$|jKO|N|ysRLJ8QvEpldW)kl14Ca2V>JtYbmR%>Tm9BLKFY(}?Y{+x7XtCt z^v(oR`}@j-!Fa>lZ?KD3@g#1N0Qr*H8}PM_B53;FAs;F^z+D$06N-{1NyZOa_J0y-9fw5yNL+;t-Yzjlo%;U&eJnnf&yPu$<{ z^}eyV<%@5>r-Vf4HQGP?bKvl)`{~m4^Wav^7bHpuuAqrGg}cPdwc#=U5^8TZdVIwv zN)W3)q$E75R2k_ou8i19Nz)~t&|9(d5=Xyqn9||wuiSxV_=+hp)^z2<)8*Y5B^)-G0#8L2fqv;q75fc;C+^jq=~s0 z`+Nx7bWkbnQ+kYU5K&FS3(g*6|9l9FjUT;o<^k#krN95ju%m%MVsmbcm~jgNI4pVt zUsDwyxMuzV0qvs>ecnyIw+NaKNIf6~%Sg@Cc`Y9bNN|NGJZLFo;{kW`Siv-Mu5@=|`%@aH0b1S;4N3&IduayUeE3=^z0SBUkauf2GElCUBrRaw7y-w=i7gC(rE#H)+&Gc#gP)rYHR5|N{I!2ioSfh z4p=Jn|JEw~zpY09?^kz^!crAheo)zbzmlR=%$&DCjjg4SJ^!bt-cP0R6<>kEucLSs zc%Ks6n4ISgP=?^`XWrwvOg|Prd3`e8z${;DBEDeq2ERzHwy!7$xnViIH zbb60)@?sqD^_pZs`wyQOMP0c*4shrA)P7ok^nf3!#21kfO=TQB zLx}s~?IK@&tUf4yWacRa2EOcrO8Udf%Ck>s>t@cIr%rFAAWR&a{)LYqh(7z@hD6tI zn26bx_4oMec*uPWDBeRor|@Dt4165)9#;C*L*B#UUEx=-PPefa-g4UYvtdS z;p+J`%xffGF~wVUooHCb(#Kwxi$4-AJitKDz2Gw3 z`2m2QxoG?2V>@g53E?w)T&1rEIyuuD;MM1>)2E!|7VBZUpvarvFoXx&2g%zmm*#*N zOjjOMDjrkP&xZ5p^udT&w3eCkCacq0sS)y;cfgD1P%Ey#`sIS03Szo?B@opd_U{Pm z_i_~TyHR+i`&0@u46aaxRsng-^L8H$z$3&5BVPcnaQ@S~X!2b!5tM-;k9X5A9@O-Z zdQhoA-nn;rTsH%CWzA#(%JoIO6FG z>Tg1Y7jq8Ae_oDfAP>>k1eu=};Y_}IItief&WoQ!=>Jd#f4=6lto9rC}laa6&Vm-}M! zx0I+H8Xy&Xoxm2f0SfZ)^7@GM){Ciu`(ni1F0P6v5uXlx4LbkPn4@2Js^%Y56BnZ= zUDcg*DaY@3bAZ>{yXSahVtxE*6R*5}lZT@`n*S|;YaVFq470+o8Cr4Ck$g~D{%0ji zA3W2PPRiTSq4^gMl()sPn1_?T-5bbT@Ghj7Uj54{19-$Ufn;dX_pyrPQaqIg`&&!A z00#zWzPoU~J4qb|sEl{R4g6BclXK}O#Kyf;>rIwNDkp0LOw7T(eA8UanVBBbx`T}vy!dnbfVHl zIUQBG>%4(-n%9y?NsJo;;(0Ux@ENIk=*F@K0K%L?kjryBBGG+av|!@q#IQJ&^JK7#_NPo4H6k_Tyk+!c-D3-V}CFZMtK{gwom;Q%)*re@Cb z?joGRGjby(otp(h`$H1}N*cL-Z7wHuk+-^uf5jXt7XN|~i;OJty zhCG?0%AABwQlN_^>Igjfg6hh}9ljgk@mrzdJ3m%_KuNs|e(37>LxBrcZ&gyL;HVG( z_SAQNsA}nv(&}4Khwqyh1F-mAIL&>HBeLMj;o;B0>;oUXq~gq@qmXn>@xSlmB=18M z-V`pp`&xJf=e6*(0Uzdz$;g9!4_+p2$h<^D(-|n7qcr|&Kuym{!F!5xcjGfj||0nbu51W zGXaTa6LN0`qg-cc6)YPNQcw1-c2QVBR05|SU;4OH+~5AOHrG#zzqm6l?sNNs{tx6T zAO?6#-j_K+dx{Q69Le9dh&OD*d<@^p`j-xz!mHhT;PG?}8jqeImc;uyrzlAU@Z^AZ zNpH%4x>iZY5KgnGRMNQHSU;y^$+_C)?JH+$_Uj$P!dFc=HzcdIx;eg}etrE?mNP+{ zcfF%9yk<^GNN{dzOMPQ?d&g2%JxAMfz2lb1+zBRf-h`6htg$4wX!l(27^C&x;OLC3 zG#9LxQEbXaa(OLx4-16DF8BXoI7 zMPqz=%esor`j+Mnc$mS;N)9N!cPZ60j;h(pavDcpKD_0|=d2j1(Kmdwo40vU3%1-B zU&P(Hk8XD~FM6?FKwM0WWT#0|eUzMrChvXxzN5m>_tfj#E}67&VCW6X+Sr!w_Vd13 zOht$0T$m>y(ZBV}L(|$)Fok_V^UfuqRzQ3}IMu)oOAs8{xx9}G3}jpIgs(zH9_>hu ze{*uLFNow+W(tyxO)%wWU&z z+wkvthAhs2kypbN3VyshE2>R ziAU}zAOB;x1#u!kvG8mC7rcD6gJAomLQkmz;^TnAMolQCiT9f-aKy#59(l8 z+_V11?mOy5nK_X87i{SE?9GX5cty0!cUb2y<)<)!T~4cM6l8B%7|W+{y7jhb)7!$0 z%;Q5?>(k1XOO)2LwSABIEi5L%gQ+h(bDWas)3g3|fsryUTT!;v|FhxP94^~y04r~X z%>krRiTKNeR(r%-W80K*jJ=*vXDb;tG`D))hW7f-p2U{Uv(QrG)7p7=I-{Y{{nK8J>pizdhl&2N-DkaHqxQZkr&pJH)_)v8Cr>XaRHh`a; z#ognX$|R0eNv4fqT28m9Kf8aA=EQ`#Gqep_`^rD>tt4OB4p2S& zMCLS0$Sl@Em=UQa13_D?O(5IvW2>H0*6&e@v`_AIEX?m9*8afdGw(wy_;Z{Z774oV znNN7n;aBumBMTp7pzB#|&2_?W<>O&2?J1>lmr{x?vT)J{(tXpc1Mhr143)p};IU?- z;j=;_)HZfIQ=e2=6-lRck#zp6<9@y!h4I%F4B-T8#K+-VE%4Qoa11-r$Kji?53!}x zl`czYN6h77Z$z?gP}rdDx!bXDW;ZF!{qPqP-iSnv`QPo_VrX1GFXH1d+4CYk8N=WZ zUptg(jMr9uU|mqKkqWK8d~yC(>Q4J@HStEF3MHZ`v3|xe)&PI&;m<$f;3)rH0bk(7 z>Dni0=yn4LpF#;sx3Qcjwb0hNXOG`Z%4fE_eoD8YM|*DnEFF|b`R!b-WJ6a-vE{P0 z+N<|CX2Q;E;9iGgeCyVpE(ryG>BiY*hN}qigX{8`Ox48Ft-aX!>3+B(QL09YAgSTkI?seE_LkTQpd@{#W0YsZ{uuVY&CJnJ* ztZ=`Q)Tfk^u?2<6WUH;G?lED@qu5#!F*2v3xvHh9ep7XO{PK#X>ej}J9x@@>S}tsX z`uzP$a-UMBtB+ky>Pz>05#g;~dpvk8^-*T)eU7N0 zG#ks@uds@9we$AsM{FY|t)No>3Le{)M(sTNo5TO|#DCTs0gC_f_Uh_pHcR{YK1YnQ zRvUG{BL(-`?{_%hG`Nd~TQ^oM-;XT^{jdF-=W?M0*} z#$NmmSJODn<9Y+CLDcUbR#5Yjf~`;pYE-=y@<`1y%MX1s_*SUFR@mqt@fHMI`3nph zme;Wreh!6JcuDb?`j)ps?pz8Q3~BILO$Kp%!;h1<&vwWU!RnsEvcSn??cT>73lj^8 z@sy=6se1|*_)G3rGdy+Or92bjf4&9U%DNFRF>~h964V7CYnsAbe^#1z!C6YwqZX5% zA0PbneNCk2(jOafB*Bz}nsm27O*Ue@Ho=#FcN=KP_B1i+TTA8LK!=Y?DyZ+nEN{3@ zoRy|R<-8E?U6gImLf;CAR4e5IRWed7BQ-M8Q^%vlSgp*dmyre;SuZ20^?E}@8tZhm}2xze9|EiW@xTmmdzOEc5JVb zP>)aK(yC-c-S7vWPT59bFlz@JX-jBoQ@e@xLrhdpVK5fydH=a!!w5`m-$kqq8TWlh z(UR_@ag05@PhZGB7l@L^LiRu~9(~mj%ez6y*Y6_;ba&luEPKxdoCX*YsU zod&2*hEbg@#2M1D>wvH7yoB+eJNN!2;4cJuDMdCX35N4G{K5Cn!S|!!qVfWKS>A~P z-|@@#BB1&}^@cx;;S}PKU<`3aMPv0`DbA`CXmE~K;0DHuJvBhDS&;{GAqK_Z+l?UP zJM||5?`15Z3t1jaXk;u=a8AHhaoN;(#vC3cxgudd3uQ_Bl)77C4*cPdFx)Jsa>2WA zUho+uc|+F7knL!|^nww-{#b~t8TbEW_m<&H)@xAanz*kn-~eCWa=_>X1yg2>gByiO zx#R6s0VxRpzwM$GCUemW6GpD?p={F=FxxNDAE?>;t~Fv>Dmi`eh>Baf>AGXe^3B&7 z8nZ%HTQ?q2u-FDDRw)&mx`K*D&Q<>Ivse!lgNdgFiq+5{(Xf&Vq>T#ydax7E+_@db z#Di14KK=g$bB+~P12!@7d=E67{x?o#Wniy`?B%7Az29&7G-cydZ0L>Svzt7FQbfYJ zpzuY|YH7iNDdAiYsCdHY2pDo!F-=b#7h~O1*_tPm_FYOlX+9^DG=Et#H=>&~FFq^m zdak(x^eJ0$W@$ssRXCTcEi8E&%LCs!NrRe28Z1}8aziqid9`l1Ki9Ah=W_CG18P7N zr*X(^kAvV7%zLE6jUePtu7SA_Z#GhtkZd6bPGo}<8_0<@tBG;{`H4FRbfVMjM1fET zK5dw-M+uB>{~?OGK>HT0Y@cJ{qBSIU=<8eje~3bvy!-y}7o&>VL1S>`-Q`cK-IW3K zk9`xxwmz<~UMhZ8Ar((Jc-f+FsQ4}KJaoQM9Ll9YaVUrXSa&k(d0bg@gR)hdxgR=V z5taPvotp!?DGUeSK5!@RJl;LcP+B<(hS?)az_pROYuj`a_;1BXKb8uA%i)hcO|vWL zhK7#e_vXhvgDBnVTPuR}LJ;eITq(IhaV^zm?RP9#SW3LAv|mknf##sO(-(?ICcTFQ z9y4vven+GwAwYY0zoSB}4=4!?$XT73xGV?lmy=RsZBi^FUA4T0cEk0q;g|~x)evG_ zofU?2Ie5y<5JM?_tTm*n4F(1YmUeMcnc6Px(we}?=?Tju;(FO0Lk3I^_|>GlrBy@+ zjR4<~3>tD5YDQ9Tpgwy#6uSitKBmC;(CRh@mfRxy(xK)}DVAZg^En zB9LMQ5{j1bk3M+lc9p~g*-SHGCWK$0*N4--|FDz;hMjimr8)`*E-pU_D2=EOXEfrptD|PHpnU)3@t8{ ztawyJ4VTF|HE6>4l~x3)j(&k#77jid~UDHK#hNDH%ppYK)a2C;o8Vb)~Wp@8_jvrr3V@8<7e4MH0wr? zc78a9fR4EI{3?nML@7O19S_UBE}MLJBexyOtoJYh-vJMp*Y(4z5eNHJ00o-p0)e?* zP=IBSM+TB9Bc&caB$r0l-)=0@3`YiQL=vw9v?YaAAY-saIs zSb+y~A)5Oz4TwsCcJx(8RCuw_3G+_vB&#<1MTb3bYo8v9zJO;OK{iL#3O#D1ugTyM z!m^`jpjlRCqE?u&au4RhGOH_fWrWlU`w(ODN!>!$jAY^-4H!9Dv}A-9Ado!{= zUcuN_!)+H5wnjlI)zf!dOvTnq*r(yp1JH-koKEtP?OGg3S{fQ7@R%Y(a6Hpzq)^iZ~1+8)r{8v^Z6)e=1*CusKt(Zps81wxJf3gv&UL9yLxuj zY|w9F)CnapX_r&O=p$HzQ5o`My^QqUFZ3^58CHS9&mjyN1AQDdBL9a=*eh^<>zuf`RY+ zWyU%UD7a2531&S#cH2C$P%HJ6CC!cgQcLFOEW<&yM?0|@QeithUFInR_8}QkHc73T zYm8dJf>ofw(dD|vNOFZC5|SHsDnosSuNkrm z*I0>@C3CW6<(V=kle8JCSv+VqKFuol0I*xfn{>>$gP%1a9$CnT$wk)J;3?%o*2(}~ z1tF=1DP*u5KS_C!sZfco&zQRNJv=H_Au0mRvre|$Og+_2Vys5ULA$Lm>8KJs7<*-; zp;S2aVxY4Z7ylbWw4j$9V=eWY^y8=HeD z4lFa^#wH6`%%&^pivwn}?irUWDS=b$wrB$UnQglAeYpQ(W^32!lklqJT&B4NzRa~HTQ}^Qmu&89d|)Nwm}YLmmHFA8QCZhQdlBc zfYm8+FGIDE!7`G#8Holbi-yJ^H%dXrDa8w%2z4)GE|PL1721quQlm(kZpX;^Bty=H zlJ%2#{2>!Za|D3yy>esJ1S8M*q>>5)SpkTVYz(*H8qy`np1punhQN_Dwq&?|%|{{D z%cgH;oqLs5r4!H|Z*~ruG2E`wU+=0H%-9Tjf zg@qF^o^AvoRW{>PAEBb_>*XSKGLmO9nj$7YSZ;e*E>xH0!4P3-I_61HYHK%fSgTOK z43_X}hrn@FB`+Cs@1c~Xa&V-eaS_Y8N7)*N>9rfCKkWKa_GRhPZW8|>CiNcJkDS^x z`f>#CbNe>jEsMVyxZnJUbq?Omfb#+dxzrkCJqE zwF~ZagyW@h?nst=kCGPN0)D;&LtDSvr9gF7ugyvR7qCBrxGjhOp{(Vc@c~QOZus8| zTswH%l+g-*v1_*g4rIIi7X0=PU^XC=dFyB>$~K4%q#L2XSKlp<4!xpHAZ)HJQrhI2 z1WQd=Lli5yTiGzO3G~-{S0O>xlO!W*vVpnKwPi9ZMMjp(V)-W9sj}Qk8A;UTpdP3^ zomd8vVIca|^V(vpr@>mKs|a)l;M`szCzS$7OLObAsF;6%Gx{GC< zuzE~QKN|({lE(Pt%7bmu7M8U*W2uLy|F7_4tF4*+h@FyIxb!VzRZE(azW|Guz~lH= zLcvhxa(t!&nXOwg!EO&Ymud6M#$Xb$r28UkX6&p8tVk~5;l4ln`O1x!bs?uhM$%2OYCV@U;1|qUcTzK7rnnI6 zAPlcI=~E{+UcHPo=!h=XsOvBa)k_%WgE6}4z~*ywvo1hc6Dcvg?^?q-kQ!?Yw@?gr zYy=NRbXosSSaBJyxKOe~mTZ@ibcn8NI40jdn>^Bx)iznOJJ92o7Hx@}sxCJS>dBvM z!qhwDULvXr7b^w_y@GB)28Ki+hN+19{&hQ1y29Xn;n zPa!|CiBpE0c>KhPVPnS5-tg0~8$o*EV5I|iVNCn{61!8ozBSBWbH5c4!l587>s{ObPa9MWg0*3PcZ6x5f9i$@F0cEiMF(qC?1ingyVaD=)}E}CmN z=|UStvd4uc9mQkNEu-(1$a486xz+hrkaIH^e6w;{F3*sIFyW_4R=D+6BRVc*70AUl zd04>M0YgFxT`wsv7t4eVg-RicOt{4n)inqIi%;`-9#D{2e=FTesLYhqUIY!7!-YUb zD1}{u-^s3}i2V|{pb`iiK56j?lIhm1H0fx+4~`3g8h6MlI}OBzk{e{CWg&M1n=y5@ zj*?)puHV>i=%Hc;vdKV5ZnKP3qKn##uR2DCy6}PqT82I=e@9Oy3`rNnE3_{{;zrqE z5%N1vI;Rj_7lmWW-=ryK_0HB zbZ?>6O7-$?vBf~_!2^t_*idMd0?SVcnmEQsQ8iVUXg~s}Z;9kl~H&VgQ zTA>8?Y6R<9*v%>#DQ>!egR*4JNGa0IH_Q1`A46uWkD*cg2- zn$P`$P%GYc5nuNQS_V=!cESw1h?=FLX&3nNMM$Z0Q+ktcOX^;5(;T*E?Zy70|LXC#Djv% zJ*W%Krkb!!lhTzQ9xlAmBY`telrEv5$W(MKIe-S>lO+j)nrsOLHLE0)_E8f}n$#OH zDib~P!D>kwItnqF8?As;`;FSASJ3RZj0RaG!>2P$ibkDO1e__>^@*qJwB%S?)@OuT9nw&F%DEDV;KOYP%>w6{mc4J&q` z!NfMHKJ|JDH!`Nc>>_4doTXCf`59x5thqrRA8I`qmSkOS9Hs49P_B^0XHU@E#s zV!~d7gh9z735AwEPg7QpkHle0Qh^4{Xs@UOFe}f4Q-^*fE>AV||A|9cm8G;Fah0ye zi1a#>@hXn#0j}maDXcM}D@=;&OuY3btkHy}E|yxN-o#=}9@J>y6y1hVEp?BaBrUqE z!E=#TLLeUP5)aTVrh=7OTxg5d_d8@8?C~MP4W?@?vrh8D9 zW%56@PzyimfV&T@bQ@le*q30dRGRHqODMFjomUx>@VBCQA@9~}RVJgDz!Yol+UF+GC)Bq_DA&CaJhh^dnVnECMp=9?wW->o)Dnk=7_R;TIwp;8~(c zC`n?1hOO5LSO_< z(xkIU?l3B#(T7mX!R}J76ijpmv(-Td9Wo4{5Xw@=~6VUn#g>|K6^rJSH$=Z_3 zIR?v8UNPL)-fY+6@AI?I>WBeEl4^8t1l*~(Mg$S}4VoQTD(b9Wq4;wrD6sU*-8dH( zkHh7{LhU^;Bws@l&(!Q0Tm-ITB=r!9-w0!1i)q7x0`2Jlq;3}sxHFs~&Z5G&D;0tx ziIudS4P_w1;Ha2z0TiZf_pDknB!&3&efQPE04&2cN+=AlVu$<|m>^8N97z!*S+0aa zhU7^o4#TSnAI{w99^eI@ifE-Vak1JT!{PAq-ouU|>ZVkdZK+E}G4bj4NYfFK5=l3h zDwR+e9m^yXM)6dPIeozDI)jH>)sV#=jM#d-;Ql#89}e7lcrGN=ZdbISM?xYk`62oa z6u27f2XSrSaosqFtqfh)&+qIi-s1EFBOHUGEs~$$+8SL{_iU{gI$(qmN}yPWxmaB& z>dZDKoxHiSg)Xz`2IEWv$b+6X&D8Go!U&|gCJqeIk#cR;i;jTUv>2`(GEqh{V=ycc zDrBfC6akhmS%I3Lk3-{OKNN| zmv(%;EkgT;9ro4Vw8xE8 z;VQDmB-+76ppcZs$SjhS!o<+# zVFC-ZX6-T}hN7%RVnP5+Mp{k0R8zTj6K~CYUJYoWYH9gp*IVC6&+4h6mAasG$Doo7|m=e`t{brWGy@_F2WB)6ED!mO8}EE5MjW6 zT8Ap}FA35uMQ3`@6_PBhOH5dsR9Ti~VrA%<;aaA^MuV9wy+Q^v+f*=b2=%))kUOHL z;AEajYPAV#kUQ=g6RYV;QB}x}3lz$T&!hmbi9h!_>ApqmB;(kK-J*V`l% zwQRV8!e$7!NL*M&$QEX_T>&Nv!Y+k*cOJak3;yYcM-YH~5y1m19T(7QQ{7_`UJ^!My*_UA=?X~l4eP02sGq}ghnp{#>)LHH zn0TQ`A266Cp z7g2LfItx8^iI=8hMiM5dJ4E_IZ7jMeQgasD5L?-AaLQ`szCbLNNreGTkx&Q?gI)w5 z7k(x0fajM3D*9<#m8xiS!UFBnnoVlE#NMg{8uk*o;fgNN2Z&tB7DU=qeuZAbjfP~;?tsV?GkVK_o;RY4!mY8s9X2PmHm8`WUW z)R`1_>dZhFva2r^3GgM_(Cr|LwKhpelfD|%OI6aM)@a-gk9NIu=EaJ94_pgqyHr6SmBRrI@gKVGzb` zuvhp?r7Kih1@=^ms^RELQ>io)mTtoGbuZm|!R0$4I^Ch;0Q)WUew;p~^U zfNah$m5rejfiTOa9dpKor)PRZTqspW@pU5zq0b`a!{A&R+Xel$pYqj`Tic;G|5DMm zjD%g~-if^V04Ov|rHOa|vwi{>1q~DrqoKFfat;FcXK>0Sg|LNFr^~rOKo_Gcw6Gk5 zPUO~$6m8XFTjXdkvWb>6Zlbf=i{xRTW~ZVZol5r->m(yksMI3|#b6L~iOC-C{jM^& zdN1e*kvvM53WA>XV(;jEkZPxeFx3l2$_`re00z@Lpl!Mf#D${m2C5rrrDdq6WQt_v zBIv#Kx(DDaG-8)j71(SvVZ9Ot1zVq|aHtd=&{1 z?HPisQ1}|JYdAm}R8(;@+x8n^fVe#>Ojc*N8L9&wlgW~mdS-JPtI2rqktKrX-8+?p z#A_jgE3+8GtqogDY8X;SZ&Bi4NM0(vkHE^(CTN#ujF#mo3ejG?eI59r)7Ld35tMGgRJR(rq* zc-q_okA;Qk^=YWL&!YM?)K7#8>CabC1y+EDtoqH?3!voDP zvhGMc*knlWOWw%vj=&0>#oGKnA* zg7-U>^QN=)_4b&d@Mugvxa*AXo{?JLnOvbZRn%6;Phxg>h(@pS>o&V{a{M{*bD%vW z)6*;gQ!VW?4h^Bo#%vk^|2;*14Dwj}F$f%l8o3}9r&@Nye|V-x7aj$OE;dAYCdz}U zer$;4nJ6rE3kcZ#-+)zE62>aiD^?h)WMrlKWUXw7X&MJ!39mmGf`MGw01Ba?Js`*` zg+Y(Qxt>5^9M0_*hH3HeD)`R4`X=P8_SE)+A$EIAw~e*c+qLkaaF1Puu|f^#j=dfF z#mm`nI^M?E$my(j!Fe%TqkzLo7C;+pf*;c@UJ$cMfoGG{0O-fc>x#21xw@hX0*z!Z zdIq{6IbvGr zpGMnN`|$Wh@Wfe6#kkl}5Rx@kEGVqWQ8iP2$JA`r;w(#OY^<+nURNzCl3PtptZ%N$ zgg2KOe8Zb^@+M%7b=$V{V!C1>ZV=B17E^5TROulgB(Uw9sa2U0>zs8~S!Q8US!QlZ z>MCZBieq1SS{&Z=VXMj?-8#fR$xaF4M5n4d(&`%{z#PyZQ(5y)1@w0}8@15~b{yAP8Vu~M^&PPnLO)yr z*Lzh!3uUbfW=xCevf4kyk*{@ub4Ef{RkrF;Fby6C1adu8tCDpCABK4NhApI+?pUC+ zR_NTY+QTKDF&)RFtqic0tJDTg1Goj&_8Z{jMkvcrVAz8hI75L|Qs^l74?<3M3jp}Y z9|?qx0@PozBS*XZ!=)q6VMNj?vu0C1tj1#eK1xxS5>#ywzp`1dB_=<2X(|c&C=a0 zsA#XQgYl@^RBkR+VZm7od{7hW+iU8p8>?iN*7k-gQk(gp)6ZX5uO(a)H!@iGs6BDM z(^-fiHLU9vQY)HkO>uJ0(is^ojn&!JEv=2d{PK>vcJx8#DAl7|@2lnp@buusiq6jJ z_MYsD_VscFjQ;H%ak<}%>Ugx7T4EkXRhReC6gtC)>%V=-Im(Y**B*Pw8C~wF#k`Ye zn9N$y(Fkv8Hq}LDXRMq(r?H|^;%mptCfO&;b(vq5+R|K`27hHf#E;$<7cu1|;(1Ue zvBH!*+GV%JManJTnjIIREzQjF)4u2v`9ajshn*ot)twJJM|*Myc(Eo8>CSjl-&yFR zhdF2I)RXimo$1}aI^EQc*o+2Q^eDs4ut%KH1~}spr@h(JSc}M`pNgx-yk=? zlQS}^JK^=VqGh!`2Pa01mo&^aG%V|?Zm;f?M;2}N;W&E`FRJbNgEK0?h=q3aJ(pc} z@=cjJ`h8bKv1HUa`>e98b=4Kk=@pe_@aKyK`CFD--zfWPDz-XFl+v0Wbw-UbT$w$u zETO%+V&3es#0|~st4#xPMct&4<9H1er;tslZ?2GrUG1$$ow3@aea<0jCd?*V>RV&W zVCD)hJ{$uP6Z}qyyQp=0E#^znN1oVpAZnHQ?}G2(Z3DEJCgK?E}#u2 zvJSXb85s@#Xp&x+FfkxmX@@P2DR}YT4YPGHF6q9GoC0(0dUb>#1RN3U&!dUWxt~V| zd?UDD_v3yY9T2N<)!+8xej5!QaPEPb)_{6Vx2KI zMZtXr+{Ze|m=!K%wG)4G!tZSj!^^mgvEyO?0;ch?Fpa|{^`=i@Dj%y9EU&Ex6eLkg?aG8rGMAth%6STn@0FhIRH@_#cqQ zwqg5$YMb(75Llkhws(($YdRziQ9cR>QUvQBH4Rt0oCKHOw1op+QBlhWLxfjsy|l*# z+iF^KRGh!6?{Q><4>jXAjes-KtP|dK`2no50*117mWvnLlR{Z{z@4nI0j`{D#)C_6 zO$n)}~q_DH0qsKun&&N4{ zB@c~vz>pp?93UM0OJUrDD-c8>17a2d%h^@GuCu<0#gqlGmKZzn;BJ86)z!nVoaoo7 zaDCPiqwhJ899*^tx%wvldmMC8%VJW(NMk^V(hcKHOAO2<)7i3yXhLYH`6d`$8K!)n%~5a);8*G8axE8?!t%*29%ub^AKp2B59A%!SZFJX>p~8tIZ$qs)bRjku>e z&xfamq&hU(W3Z~JwzH?T8tz0w$YQqIAifYUa_St9Or!B@eryeFaFi#ZMBdclJvF2AW0g^)B5{$a z4#56n?1FdE5g~LEK5N0x72^v0Pk=z;V)!{Y_z&}COuR#T?ugUAc*QsjNoxbV`UeA2 z!M1?7Gh^1A)RvA;*!%0qsqR>}0e4Yi>SDp9|7|SbHWJdD&pJmbv07W6bEImIX+|z= zT0n6-?2zC;STRHl2U{>xLPvF`G*;9y$hNK+I4uUL1sr5}w)m8Ns zoz+Zt4Vkd9t}{h~Von;{fNBnGEK_O*T%c@*s=zV>OX2#03{`LJY_EXh9!Z$@ux*kN zL3|^L5sP1f1IS8X8ai`GO3!3HmaKZ=<`Mn?-wS`xjaWb~wpH}}S5<2?FwuoKtTYb1 zYqLjN)Z9es@goazU zuuFLl8tg|nM}zk{V8$7T<6mZya!2f^e!yof5bdF@DvZ$1y!QIq+G=Zh z5gPbTxT#|gNL0>?sg5;@K+|-`3-V#_6pGe8>-00M6KlmjGFBJ|MSr*1^&rhhK2Rh8c4Vdd0x@WBLotSPnMoqKX;jSpI)jntD3q;EhD)$kSZC!Y!`#_CwJ>bKZIH;}0Kq~XGgsR3L~1la9DA<8 zhO1;hD|d{p9fns^bXUz#ojqAs&FD_*VFi-l|D)|o;NvK+ysJl}X<4!k>u6b?(R8=0 z(;gce5AtoDqr=u^NtQ3!vMh}bTbFfO683-t#N1%OjloN7z(4{akZiI!zJNKx6|Q7S zNCF{&1rioQAPLEmh4B4f^)WrNVFUYp`q|S}uU=KXdiCml^-A4XAhlttb8ru>j=@W$ z#-J@g2a$R9^Gp^*R;<(WL;SvWE>3MIqmYZ?$WvU$u<)$ILCf4cHoSNM_AXClVBtng z_@jV6&%G;FT7Vf{oVb-~LX8Io^FxW!9dJpm7nt}0yNLtElkBEdeElZ~Z-}e1VT8_F z4HCchr}KuWufOQ5HzVB&R}sE7&g`DG_-~+B*a3=*%g#?J2C2`{H9>q6*>q_JpuBtd zUg4vH<#!6tP;;N;!Mwvzo`^wzF^QzK%hyI{0+9b1r4lRHg&^Ld-6$JgkXVbdh2g}%_mn(3oNLP_&*SN8TZZL( zRHaUU8UESAC(3;Cn}4ah7O}n+`Qk&2ss=NPz7=_{_nG)U4y*JkGE%iwk&Y!!3WQC$ ziePKEm=8%DaCV_0hvQ8aI~K^=!vCyWp#8@^n8>0gWo0CY^QuldPNS1ns#7{*b<+7f z1QsU}=t{yp`0l8^;9B>r3W4-Q3NSBz0rMr8H@t|Sj?YbI!>06d*>N{|P(9tVa>S!J zCGDOi)Wu2SX7-PHaEF94mx^PWqYm*ZoZ%CQAe-Z*x$f|BiawXD#0it@3I~eXm6jh3 z0{B-d(3?5~;HSYQGF8L2l>p>p!uouneH9u7 ziiKkkPSiYjP>w|7tFk))=QKPes1@lJVSi2Hz)wP-h;tk_A2idKH@D+xXhU#vq>V|L z^p2fQue-w&GI5|DAh}lP+^~9!1Ug1Di3A_SD;!i#JLzYoGZabaDNgMYCO+g?By^O} z7991=8$`i@b^%%d%ol&^IHq?Aois~?^m6q~R-@}AVF8A}PDo01{N${9xCeoA3nT@l zpIU(l`qT=D3VO%*7#1>TQ&8BU0F2G0z9?4_T0I<46R4RJ(L{LrubFc%#isW445`jw zbu9e`m^zRqj^c3#W^0szb9XjEXwV-(r5=YI4wNEkNj&1fW z&G`mq0eTic5sJ_#?tTOl026@8-**dN{O8cnU)fW8CNec_3Zf4q@+z?bSskzUVlT}? zF9xbXHwxUc(jurZF`in1oBo+BmB{1+r ziT0G~@52#r6GHje-&&4D zI2v`^Smlz>7^g!{WSoKjR1T~W5aiw<$hLfJ^O%;fM&H%2w*sO&FBLjGOVJsAglYC> zP%S2~VYC$5yAyNJ9U5cmbJ$6w-MpH;?hua!3)4I-glwOi1$`;^78#-T<}`rxr&nxu z(S0IOH7sfhHThn)##51qo(G03*XQSuM$$VDU_v)RY-9KF>Ye7Rm*c>OR#r{E9VQ;6 z!43G)493Dj&Q;lo(n+M2i}^#M&{yJ1`W|8w<=ROJ=^BfA%N_<@{g(;5JbyxYi=jj8 z1%Zidw3M5!#U`Z2QzMA)DCT!LoWy4A>#vZ0$Ha|%Z(ZLUQJSGVu+#rUXvOLw-OkQKvu;R!j* zaNc!7&NrMtJ0UMHoX(T-62rOjq!n%FNjWQ?Czg5Q5|{~=mujz`lvA`5C*@fN_PrYNP%GHFsxR+-7c3bR%lvYr|t;k@M$@pl!hnOb?Qzl zz|MltBAhadnOV|xlmTlrS0$yG zQvgG~NLzlVT(DwCxw}5fHygvs_Hy^QgS+aDT1gqpE?n4s&GXxsvw&t#XET<+eg-7y?)O=uSD;g$h7)?V4LilKl7FBf1B} z_DC``Gi_lXX0q$gL$74wV$9y`L}I(=q82Lh7Oy0~p%}XopuXs2Bu`5?tb0qLv_x-2 z)0RzZjK0O&7cB<|I(rAYF_P`#yW*`ei-EopQOo!URW>*_Fv_4kXJkstRj2TAJWr&^ zK$T0zMh8bQZjJyGgy87RT^WTKT2j7@T~Nw!rHR`~%2NiS$3&FNw=_15wvUdq8Nsx1 z)Ecwej8rq&-f5D84BThN>jMTYGAJ6>TD%ByfBXL7_7I-Pwv_-nR!*T_iA3Dp6dY{| zV$(8QQjXWCfQ^mVpjeuUEQ>L#(RttK;PDrl89_g2w70#l4d?J9y-?Ny8yb5kqsk^} zEs=!%IGv=9!T#OtqivnNU0uB$V|}BOY|{+p{z2qvW7$qIw2$9|%AuYsC#l56gO^(g z_JEzq>5BCN;t4D+VtYt=GA>pA}RGRNd zt~pL|4ki|1MiBhNXxg(pN1ZI03zna6RP@A0)I>}v=1Qv7G zq{nnkg)C>S8BDZeLZmZwq+@V6NKCKDqm6~(6kQICxfqf)=VDGI877^wvCX|&_pQwLKV7+v5T1;s4K55sSPaUVY#j=SZsv_JeLD~4ubBqpv!b<6hSqu4(rGRZl9BU zpL~K}@kw?wWrHpd6F@%R{@szUyIH#{KR;hzT?5D7BkcpZJ1-SlqPC;oSckojSU$7r zFSPdHFj2{)NpX7?4k+_z>lU3yVE<@uXrOzncciDH7pz7#H|1eI4)(Wa$=EALA3}lH z#--$Wuzo^>;D}wY{z4KM>x8Hpt%PsG(+*mHAyVUUjhZ8$x$VnB2(IoS44OU@MRtO0 z^*D+$jwc;-_MwPt`>+p#bs;AC2}))%e)Trnnj|;$wND0zN%@qvo^jTX-C>%blk5y6 z=!FAXfBO(50fE@h6g)i4N&;a66d!V}$EFby`U1%uO+Rs?Bzi}TUcrvXwU8+*y~hP! z^YB=(4p%I&u!u;}Df~{Al4F6YcO$LZ1(KQ;(z7%aK*tQa%Xy_BG3x7U2Rm)VVe1hp zw4#+X?@pSHct*-eGLB=r5p}3%cn2C~VD7)5warJXLyym(FnXamQ_-0MBrJTfLBVjH%De;uOlX-Rh3%IL zlb%Z;BX44^UCf(7X(IJ(2+$>geqYcBJeRl*rvs&lQ2S|RH)g;Ed2k9ZinN!5XapdC zv}-l=?x(tkFeY{{qAtk@z@nN>0?ZF?b(nD{0y?^dCfYku;&YI;(nQ{%|Byvt*Wo|i zAKKqdr|R-_7KvQesw~LkWVa+|`Lgo97D}3L|qcjx+83**NY8qpJtT!T(c0q^*ykZqmOG zask%)jvk>~hcMxE6qL6NAF4bdk@Z@>pTW1iFh_hHJEV_0d3FTISRCR$qUx0x+OAuL zGk)Ad0y&ASD!`q9wPWX`DnM9&pQXI%Kp5hhpr3N(u@6MNcfzZSt4&Z9^D}t!~qO8 zSn~^qD;s?!Ve7aZ!#G$S9pTB(sD;pP%!3~VLc*p|cdeyqbljt0%1HtwuEY_*BDM_z za>kA;aCy_*3*9Qh1*DMNqM_w$h3FzedxYn~k1&22`K8?7@s-ZW-xiMFhWe)<`cU zh9iYAxq23xFcHxxFZ3j)&YGS*Hn@iRBv+gO@@C*uHZ$;FO4RZ7VGV_2jjjV!)a_CG z;Q1>CNT_l#PpHu)xwn~nq=d%~0&QULWMVJe67X;ahbrAt3W9iFW?m9Oe|ZzYzTL!q z#K0tXHlO5TK7p0Rz+S|4SL6c4)#rg=zBz&85^7IBkL zzc+Sc91dXyvLPVXjrH#i4%c@ts8OR_Tn1e0^1H`s=vn^N;b+bll8XE$7n>2qZGhfzj%4QMuw{iV>lFVHLdD^Ra zYHDaJH7#FOC$u1_0ZT}Y1BQkNyN81#dQ(FB)KalN(Hk!EqHY@-mwA%we0B=7NG{y) zL=`ZHf*%$Fk6JDjYLk8g9*yHP_F>MWag}&5ZOMaHm5%M8g-C71MLX8<6(Sbe?ttIwPJq{7u-NpPPw6I1J!J-ESe?uFL5bTjA!u zc@(oLC4|Ew(1ybz?wtn@pm)Fr>B0{^m=z|a7^E~`DolI+2B|uI0M~IiEhU9?$(BOG z*KEZ_5U7$u2o%?hEh$W;?jbeZm(^;!0AL-qW zbSv@oybci;8nwT@FXwd9Y#xfa&pchT&Yb_@$d~EQNPBChZgzJL`X1 zB#a~wDtgC7!v4MPA>P|qs>OI<>Oyy8EMF!#<8WBDf3J4IpPr7?9q9qm#0-4L zoTAkXX?{=hGg|perYb6?d}+R3uC(Fj!oW#D8Ve zfMMP*-p>wcGduqrX|9LeJQM2cz@T4;LtjeS?4Vs40>3)UdsSNc?67YAI)%*&Vss<` zy>LP>lfyI)_knFbr?5TVkPDJKR*kZ12P-1%kLIKji+N}GnkS#!=*O@fDmnxMHwxI%w0s&{nIm3`vW~6v zokL|CTPeV91MW(Xt(06rCLU$^?tRduatPvWa28{rf%85%%XH@tS)O}DM|cX*QSNjX z$y!PJZ3{x!8Ag;D%22hJ(|!P+lqtq9t49IH9s9C>1ovYpn5&{4(*2fkhXhg}7tO)G zU_b8sOh$rh_3eX^NNCeU`w(r`>EI<+A{D*+$Mkzl7N`_@em$cDn0$nj(DwZeTeB7l z=>voViJ0=i!QmO8CQ==q0c(IV^2FdU_Ff~3g4HhuUF_&$H*`i&W3Y3qBgjeDivA%- zhl!xQm>I~mV8{$mU?A9!>${Qp1qPt5iF?LetvNEt+?sI3i!?1_ZikcB#<4Owuj;aHGx!?8fNhGW4Z z8_rJIEWnv9hey$t{6kLNY{d>Y6$=z@Di+AzR4iav@-4>cf^T8i1>XWj2)+fi3qA*O z!Ed#~BLv@qhK0)lg(cboHDVL8y(3uC0exa!RCtiK>mxKR-eKB=+ln<)e64_);%f!W z5MK)(A-)z=7t-n(Qo0jzSr@%0`!6&fZN%0(_Rg&NiO4>34+(UJZGmX+v&SK2x>B_J zM{vCU$*`Ox$Hj0&r~;h@^O6FNxu}Y6uacf1pIMkuqRtj2`dl7mA@<6L(T|=P3rf5* zNYd^Zk@K3T9BedNUaHihzenGrGz?OIqwgTRJ6m99}E*g=Ys;!>D zom4yROU5k0i=e%e3m$$=!8iJ)h@0)LR zVE;qEwu(BoFG&AGYb^14Z}1DSKbA{aI+w67%Kp$7Cck80GDlgeV22Ne187`1vunEP z*fB0bxzy=q{)Lv5BtaNCj0ThC$k^Km@0+;(+do?gU%U=VLR5-#c_}c0G^s&;S~YxO`fcRXB>oFF1zn63 zz6YgD^kTjBPY9F`0|BH7zZ;?J1Z_})tUL!k)=hR0%*dX^#+_8wI_u) zGFcO*+6NtFsp)9U+Z0?-HI{$}&%TX9V12a^u?DoTZEHYCj|C1d0WHvsC7=bjmVg!{ zyad!i0b1;bH%~0Q$Tgq^K644kgY+e!g%w@`TA=U}&;r?)fEF-v3CO|v641i1F99uJ z#1hbg+LwTOQhe{j3XfOpx?_C+jQ+se^` zg||gGNaNcgR_M%ir4=x9U1$r{0*4!o1)9-l zEV$KZEJ(P~SfHl8#nz6a1&nMo7Wm9Y!-MojV_}6GjRguf8Vh7^G!`(j(QvTdXekcj5tv%t3YVZp-fgM;+; zVTI0YA6CH3_F)CgXdf0lqJ3DkP&fWsy-hR0dNF}4~n{mh}({w|KTO94~ zpRGjWI8TVv?*G7>7Q$})HXs*!`e%;4M21zhdUVgql_ zzShy)jFUMShUkjW8=<4R@h%+Ig{*Y`r?a}wD+E>o3r$fkV(;v99b(MRbWaS1Z+Iw!EqfmO8U{P| zW>VKMn6dYr%d7N|#(D!dw2a3!p2;q__1vzx&KFM}KAF?gx(4BVC1HB2k;qXaA6U5O z8D0}&FmI2WaeA)*&0yX>2lk6I>4h~^%-?fCv(Z5-MDrkNF6sR_R56XyvtqbdD|Owg z#04Kn7?`&^U z4lG+8#W$0l`3p&~ls;A1I%^&v!bB7hCD#U=x9!EX)HDVy%9~77y2y3_-aSdAOt~ki za5t10cqH*^fQL{mP+;c_mFA|f zn-3yT&cVe1{iZ9TPUYWIWRp$YvdDm-JW41FFMo}AsXEgzP*Nz4mzRRl4Tbg)DMRi;}HZXVt0bXZ7CfIyC6i5Tn5`1 zxZnl~-O0*cvghtD6PjGp+(ljBJ7(+7%qStVdx|EFqo0UQZ3e(h?U2AX6}7i0D+!RZwwZ$ zJEC&LM{v1!M-&%uNlXxQ`Q8x)`6h;b5BpTTUB|g-av;b?^sNQQ?XdC+Y@nYfiLs7D zHv=7g&Me6F)&iJ+#_i>LUQh+x7|-IZ2MHyi`Sc_ZE#lj_gg+h7<`$}Ih}ssPw`bH#9Almcpjgi=vWFUe(aS8GalV{JGLho=;$tmwKEAMdDw;{>t02xby ztt1SK+II`pWPg|lTlT~Wd)B9rz2tg>YXw7-PP=xcnx>tzq2A?$QdX~)xm=Zn9&PP% z)t$A)P3jQ1mDJX+AA7Hb$#A1ko1j31!cQ$%Gv}Rwr|WP4Q@ek;n&$+UWo@vgUW%dU z;J2*(OHKXUBJ!bD^yTSYLsXdgAOf7zYn{0(lgTH^`Gg9g;+eyeJ9&GxjVsj5jU);` zagrzydm$Qgs3yQ>ebKAnkLi^+2cm&xGX54J0p3mR;4ri};z_>~OJ5}W;0kqRD$yBp!;MDr`eX2?^NQN7DCnG$dGcAMhA3 zs&%9&J{^r_pyo(-a9ZcVjSwiU#oz-Xw98hi*+Q@Ojg{)TA&^vR?fV|B*qoGYyW|1kneB_}fyld0x3br}mRoYGy*Q=)=_=6Re$B zrRK(1zGvZ!GkrO}C>~|b&qWwj+?JBV6M`OygM+p8tJOGO(z4iylCFf;Dyg9p%1g>x z&triUHgy<-Ln6kt7!BVX$#o94Kf&<@oUvR8IB#*M@4RsBCn9RN-f>yEf*N25=nxIw zIRHcgilHfy4}CmDd}bELu_^4l=)+hbC2|;REBMr5tgV2Cv9^MUVXUoy4`b*jw-#U+ z3mN0sRH8nPO+gW?fNEnZ(HO@lYwVM8E=hOs~j znhmL$22$Lk#0xmi5WWyeU$}B~iPCX%5F0EpBZ z35Ln`XA`241y^b6L)^};1D-!&`1+6AV3~w6VHIi)6hV*T%MSP@SiRwc!aVZt?m`u# zks_Als>0l-LZvYlFNz!s8Td{*C+GHp{ti|pB;tzZH7AP6m#clNwc6T=g}6-Qq=Pr&|mtL&S2kY zJKd?JUCT{GIX4Y5n41q8+#L=nk^t?3SxQT>%-GQ5QA-t9Fvv6;dLFu}dd8Vg%QpwX>BJ z5Jp@c!If8HFx8@jYNX6|&qv+q+`Y@JUd%5hR{<<`J7Ay}S4!{0D1+IkiS4+o0G{Zy3^*dC3+2L5lTENG zp^wi_s9>b=+?i?UJ0vxOxCDpSJ|tb86e1**MnTP(9OgSe5H|cp!NvprNc4=q{SdkF z%Y_EdmoeLZ{Tt}(&=n;Ltx-9N!nWuf_gIv+@xEQD+BHvk=Q#||4L8b)P{83gJOc{= zx>Ji24b}~v%kB^{FyEzJG6<#6YxP+CzcdP|{f4)K*r~TvDce@R4_wBN(SG{n(qmBNzumK4g7gH?l8}1SfEL850{W z{kn)50!|)7jLe3i%b3wHc)gKGJE#OCwOZSsymPfB*EYtlhnbeMr)bsor?s?*6wy$$ z`#;9p;j91Qjg8;#I^v_JZ_@Ax+CFXL2j0|BMIv^!sNG8gx&!DQHa4VgeLJ zAnyU!DR{u;T1?ra(Ipb<2_3aHN~bi8ZIoXJ906{wgoeyhI0+y0)LdmonH?zf8~^ai zn?6m_Drj%k{2N8J)%Q2XE=P4;Rf3)lVQ!y!$7)C}>j`%3ng1L z!o);W^;~V<<&Ag&;fwY=d~iHl$-?D6%h0LUPngNtu0MIxwM8Fz)6ddd&FW0V`k%|@ zzz5!QLS4yd4o2fJyL?+OkA{ezL%&S2J-Qg@1%cH~j%U%Zj^Bg>9fWZ+Syec-smK2Y z{4YuLrD5h7Se+|wK{F4mrtzvI5wl`*I18+n&=2C*mABhI*Plki-CQu_T#vr#&NAGT z!dJY2>`&rmH;f8m=B-~e56-1&HSe?xTM|}}wHYH_0q?2I{zv;>vXZ$x9FcBimaE~L zSBPPxg>ln1QKbHFvof?+}GT!a!m&o+T?ZkhDq4Ene zkcWv3(zP%KHXE_8a5N0SHDK_oKP^YR4KwxrG-HAcM=8|=O;AB2E~bXkB-fCD8>Cj! zd3wBe&l<1aVZ=kU9|$m%P_9y!x}nKE8f9C**GHG4TJZ+yBh+0UgK;FPReFPT*)gHK z2-1Q(r~_>uC)Xb?5Ir=Tv$g~`FU zPf_oSnk3t_`M83u6;8Wwp?yyQQKR1{!we=4Tsy|3MK0P;Q*mLn?9*=iF z&JxfVnBRgxeVw9TPgVxIbp0X{iYDZOJ;{x2_0aE>n$D6TMswIojV7bGGmP#Az^d`X z!U6G{VAkfNxbZ~O9=su)Bksajj<=*S#*1sPRSYbmKnC9iMz$l5h;Nrhc+LRD> zCt2Yp2Q_?(?3b`5Div0UHh|JS7#vYX2QlapCi-0)W|bHQ*b_F>jl@Q}VF0BYvLzfz z0ur_WlB>nx-V$~8!Vp|v0*EajVR?YC;g$ zvBScy*?Ul*->YP74H^MVX0Of>SD_Qbi{Y57U3{o04y`%b3nwFKs&cI)Mb`t7d_sq_u9XLs{}-qr%wqPXpQ-ps>fiv z1c%%Obbq}(-91LX61JYE@WnKo$OMPOr>5l&`Z4Ew3_0fG7d#%VD3Ce9Afr9(uq4(RmcQnM>t$xuQf@)Y*%rt!q%T zLc~+%9!}#tHTrSXHm=(8dA>eYvyG_pt)8;P8VKUshZ(yAb)U#~r7ivez<3OM_2Q=p z0h*yni|fcG9)T9cbP~*AuwfV_nTAOwCVb$;-2D^X=M>uAFdBms!QnXAC>f5Ei|{yR zJAYVqa~MT(y~S`rc>-COX?3lpv|fp)khc)B3zq(2;2-j_D~*qlznw)&6+GWvF!|5( z{Tsv)c|aTyvaKIawZ>83m^hp5Sp7C0YK=PrsP?Tly;-5H*#0U|I>v^}p+8B|h)|Ly zTyq<3Ztv!h9jm!~jrEsNe@vhz>Z&F2>$n|U=>@6yUAzcV1c{|XSiJ7>Q(;06LV6i+ z5#L8#lsH;oLXLO~PJ}im2qEh7_c#tsnH@P`elCu*F$e1bQy|&w(hFPXHF1U zbxJXNKk~c&=n&sAQlvib(^BMNp@<}@*S05V`jMpT`e-pV$}H2?1hY)_F(8M^wE7_E zkc*n@>tHYqhkxRYQ5v8*uoGZ*@+F;n#=uovmmPw+tRN1|T0)Q>&fMSx6plEzksP(= z;DpKkeJLCOX~Awa=RVQ}_cu7v*C7LF#g>GS`2kz*uy5tW6Tc*rIH%Rc28fjll9f8L zj^M7F1p$&WUw6y8-*Mt}3Uv)~QQ03Flc6s(?UZ>bk`#j@XcKgG^5? z4kYo=TM$ZOi&>N@p=bkJ6Szncl2{N8W6ldm2}#@amN$Dd@dVn;qdi;<@oXO5#|_J7 zM-MD)VXKyp>%@Lai4xNJ*2(3#g-Ry5u8j^)P_>==8`DFWntsvrQJm;gkPylBOTmfs zZIk`&uGz}cCCisB_b**>E^UCWze1R;oV(P&+`nR3p??`5mFQLu2JsGa1)AwjY+E$| z2rKY@+XJ=TetB^%-Vo)zDwX(P5H($g8tnFyvFmO>HKZv@$mqTlB*JQtbZ^B$5AKGs zH?hI`G*7wHA2AS#Pq9N8OzlJx7>RHOTtSn-GrLRe^hPx+9ib6pR41AqI&AI3jj9|^ zY4Cm&Sd#YYRXKADYeB-`VPPt&9W-e7Gj=Ygp})d-m2e5l&|g7i=&zv22R($YE!{JJ zZm1b?_Z=3>6W5@}RlbZ{bv$mUc=2#j289^?$}sGg@Yh1HN<#MZ@Sa*e^|D7{=V8KXQA$ z1sT_;mV1(s?`4NzP6=}qu>rH3`c&!(>Qm2{60PBZd`eWGiYbwf?4wQ#e%wTA3Z+HJ ziSe)$X@K$$pU?VJ>2J$$v(23gKSu{>j2<~2bwr5j-InW@?Pl=Hr*}`*aD4~Ae7G9o~Z$|ey%)#hW z!lTTg=~Kd;=1^q|NB-dqqA3F!n=AwP)0mJlN)bOba zDL`TlhI6J4TwKSA7uDlHF{&Ztrmxs+Y=FB%xLgN-tv9P)Xib9Ao+@mfoyfT#O~(BM zvi{pNgK%N90Y)$n3$bYoJ9k01r@M=o&*dJ_-L=dY<)ci?28 z^$MZV@er0If6=amDoav*^mfobncCra9KfPR?IA!zlc_o4yJ+;2sm3Y=4u06{*>S!k zo`wX^qp(sZNq#35Do{--hGmmR2dTYw(*nXb1Z|u^V`F_I24_4q!O_t~A|hfy8^x4r zMCoep?F)921wq&A%&qNGl;~U@Lso`hl!Ase!Xt!JNJ?^LF)>ZJ3At*QD@vw2BI9tr zQ1U6(8nTpJsSTxM2i*^#exxZF4MP3!6Sh}wPto3d+M9vB*^T5*dB(dK?$T$xMfeD^``9p7q$y`7`Qdy}6wOhh8T;Q71p*b;3d6I_dr& z>V%{7I3J~E(e^A`RlRwlZQuK!2IrFEfKu^bmjwrGk-U6aLRofIQYgehJ1sA z?N8vX>cA6THwq4S4L!J+yxsM`)_#wvbhR;2w&3V|n5NK;3_Lk#w=wZGC|JcKv-yc2fT@IlC z5zh93N4%IUvcAK@@GNZYGpw^&IsTu6T_pgCqfZN1+F=-qW>o`H5yOakQ(*_50jV0` zI?*{&ggIdaky+Q3m_J@245xet1x~~8`Z2!Hkxa!B4a=nbT(K6%Z`1j(<93p53!Miu z>hO^k<3T?RrgQfx`gNr+g0XF+STq2oLeqk^z5xmwL(n#;fSJDvzMLlIgWVXmbJ5xF z_Cpy9t21~#@OF`x5Dk^6-F|@B{vaDVjA?Et$f~;}F78$-X$Te^ zcnjQ08a-VY{_lnc%WiycM7c%+FcdC0EMq9JILpm=V;L3zAGf3u8=nJzo$h^P#AnoR zLCL;#ykX$_Bm&%(+P-3WUdN^ibKtgaHL|_{U5Mx0FcbZQ$bf0&@NqmS;ahMzcl7;0 z@P}=+a6XCwO~{Al*6$YMQPP8csfpOT$xH=?yPJ?Gjp;h!Fq7VdgpJ)jd(wcnlENmK zVqt$21Hdrp8zK|AKwqEq1+ZlS`omo^qz9tPE^uQChQA&X<3aafi1BnEWB9g1j&Q?+-eUNE{-Ad)KB=d@ z?V%1Nzj@&f{@O9#0n;Ba-i8_LEPx>un-_wN;8oC@B6kejS1NDDOX4=V+(3cU3NXhE zd#JZBEuu%7LA^tvGVGx;47j0c$}a9^tO{TBmhzIqHZA&cIaynGmv<=$YL{9h?UK8A z1Lf`~?&7^?Qc`xBCVrI{=-QN)xmx{Ky*}VSbV-XxyV2%;^{c#-;PAy?_=ek1^8l=-tCFaWXhv+&}uwN>#%D- zi(ST)cT>238~0Z;U0tKRBO)own)OUm6ZpWs~L?yQqxch5=hGH`>#@6+M0o#fRHkP(um z?YY%ks$->T58vutsy+RT66Zer9P;d^>gjQ}f{dorei`Z7! z|HPNZ%Q>z2soE;dy8!70H7=ufYh0xNtZ`Xhaw9JYK9Y9vjox#d1@e+}wLhHjdbOY5 z=*>p7|Gv>%tV1un)mxzT9P=);yy@D#$Gr1_^wVSB)%Yab=umyN$62 zP~WiJEW;e@*W=>cg7>3Ee=PT&I9M6*4&0OQBkZDNAQX*2cr8jU8xBq=uxv!vd`dbx zxWO$w7*E7I)L~S=o|0C4)H_!+;%RM1y`Bd0aI9{Jt+5Y*oZ5j7cMiy@-V6~0Ikd95 z7EpD+Pg+1Pz13no!J~RnYJCA7*kR3Uh*+&}+=~U_8iTYZ7}06(4l126>!s`s!o(Qt zJ0g&0SziG4&*H_~@XnsO^R#W1BtC)_VjEu}wqb?H+?_I_*k`xnpsriq?RJ8?j3(To zKrIq=uf_r_?Snd;k2dbQdC~4r$9;H3XCLfacgq+tbtCmSNFtwekwE6_;nvLhaqWfAs?YSJt$~#93HaTwg&xArw9E{`vRoF zJq37@fF9E9^iV13i7h8Rq^W!9jVvcN1X3_3L29(N>GW`-^73$*tFcmtM{zg|Ube@* zh)h5e_|NYb(a#0g;=!w627GR5IFP2CV+$qM^^l#`HSTt&@`?7!m^VGty2dOk3T}9Q z?8*;&-iR??7od#TrZsHOVIesY&KmHx7+>fJ7ta%dvY>}07Va{=Lzsp`&wP=B)=H-W zK(bd>6Dljzixr1w3^LL6E%SJxKe)JmEjnlf5u+X#ag8N-Naq84G(wb0{D_+@mnfz6wNP-C*Ow{ffjVpm!pL5-teyUzU(%8$lvzTuHg7_4I{F94}9N$j`s3|k_?1DPAJ*e`FDIO zCzX2$apMpDmuaCXB_6OVr<6S@$#S)_xumW+P_EQBmef@S7AxAUX=NcHKlp(EJZ!feNdgKdmgFjD{Zc%dt#`B2yEG|72QOPVhOW z{fo5a=PT);w*Gu2mteF_VB?SoQ98k6q?AH(ZJ=&cIlmzn3 zec0ck#UE4>fZ#c(yo}F>2bCTQdjAps9_<-y^#k_HkkXFN>I;;CP_kTAuke417cW+n zy86vNrCO=o)YPn0)}y{kDod*Bs%v>|p=3=8{?%?(n(G^sra&1=uAqFih`AvUXaI|p z(m?a(K%h?9)Z|m@Hx!|qRZ!bP7Mp6St4j20FRw2Lck7k%>P=0=&?cp+wtho^$@Mkm zO09vkbV+lS5~vFxx2lpRrMW7=WhfGX0&%df)Ji_kLp4S<-hkCzoPYiS(yXa^p|zi?HvoQbn-ypYzYtes)+%L)^CyE5-QuE>*JdslQZNhtE})DmM^f z*H8SbwOyAfZotmJOwT0Yr~Y@eYcA(f{gum=A0ue*71*&)*1ms*(m)c7vZ86CAoXP% z8mh}SKpY{7wbhkXB#&TqUHMj}x>E&N-652y1q`?8YpQ* z3$UuFs-y)hud1#oZ$$N!mDJRry0U7jD*{=NQ&dOOCcSN-gF;g&*E^c#dg^NeJQ=HR zv0_)FBdZD3R96P-$^uy^H04%Sg5(3tElR>|IF{zMy^y+xDb%% zjw_W^)Y1>GBzt>gjYxvLcqKJQ$uG~!cqjq(+Ieshg-2}Qg4SN;Rq>(?sDy%b} z7GBR$`mR^@Q0%8(K|5V|gI?H@-}v`w_rn9cAKjp=#OIS6ltcI&I;w2I=h>r58$OFQ zJvb8Rtcf8*{D|E?!`g64XxA3mxvRjlKP;uWa$~dL9{cZmWZP!q97j!&U^5gq?uH^`%QSKa4JU6w}c;}(%#?e zm1A~en|GYWwrJNrvIuF0z?waaZ7i15FyZwXS;%ci``&Ln;$s4a3H5A z;LLGCU(wtR*d0U>%*!?hK|$AHVJzxbDABETxbc9nMC0fI+Re~tewz@W?5H0%n6Ul< zfOHim6SSK^y7H0<>NaC`hlF`1kmKoR2PO!qor2po2WHb`pIZN0fvabrGgNUf>TYl< z>3gv6j1X}?_)=Vn(tm>%3q|)7T?d?837#RW9AFAd%Ecq%NAYE$5Zx4R@e}h7N)n=B zOK)ee--&bVUIQ{a*DUT!MhKRWoqP#7 z9Sa=t(ENV~49~!6+sLTEre^11p@5$9zQ2|+A5wM);|Ruv2iVYn9)cfSVm%{fpTm7nd!s`wh$B~&FB*8!+S?uKd?ybo?o=1( zu7OTaKlo;f2!u+E;?AngfS3_xfDi@v0r;5sQN@g^*M62cY^A?+4=#B5xlNTRTFq{lwRZ<%u)B(r-k}P zuzzb?tKp(sba5tD+N=-%e~;Rr75_0nr8fk;g>#YdH?jDaxCnvjV%kX~+AeJ%z_rJ(9aR8VgydEf)Z9$`xLjaOA&*@MH7qvGn1onGTzbMl93s` zs@dEVti?yq=~}!3^@)ySplt4$#Od#7d+$KCf%604yb1-%S>TRAPW>J=E&lx&8#&s( zJ*qqOLCgUX_z@>=UbFAPwHRN|2e{S^10uq7tobOxbgY!aTse4@fVV%sw@P)yO40VJ zikHrZ^8qwJI$g)vJhsTE`P)F#3MGWcsOg)V_2M=@@&*_Am;kb8MdN#<%~`wp6HVuF1Ew6mKeI09P< z_8brGQ&a46^_6{L!TX`j{nEZL7eML;UpX0}unQNoJ|022)<6!}L5Pp*9-KrNS&a;< z=jG2V*S*UMP-|=<#d@MF%q#8r;V=#F+T628!teznXG!tZ^`DaBm(PZM)5cH1etkqO zjgZ3YzYLT7ozA<%fgw)4w zo()Deqz4f5E?Z2!TK~Et`!hnXzV-KycyGG)c8YuP8F6{&BWbst5t_-nC${VAN4*!X zzJ!7=vPIT@JEks6G`O<(Ezw;fC~s-%xLRf}$G~`)Q&)_u{v9(by|u_)?tNs_jb%vw zd_E(MkfGvv<=$7Pes6~22{$M@xpQc^e@lckNi8s5mH`JkcHw0$b3#=YZBKw7SeUWm z$F(V5SHya64r{2C?$_}vIld5kou*8vbC=y0PmjY<#L95Q`;3UsC9{o{((DAvXrmeN zT^><;c0zT95O1R`UR*-N9qP(r44L{`;x-(hU^Hq!ECl18!bo_u1_p@`NK1lwQ1-!< zwYMphuOuwMZVsprEkFkVsf!AylXXZ)$UlY1_6brMa_L#KBb782zXs(p8gg;>e2sgl zz-Q0RzB%y4#VP;pq%#;_G!ul^9ocvjihG>Gn~B2RmgiL=1K2dmzUKhYbOM#n$wDXz z{?6CWguz(+)q{XNYj(N6j<5h!2)2O-n8@R%=MF43_NNfN;u6LSLEd7))x_{mY+^Uf zJ8}(c@Zqu)0wiJ7lZ%Snvj#u#l6fe6xy1_cajZc0tPxhwtx;s}UT__fB~*C#r??Ny zLo$F%;=f@LWJHo&k25Dcl%$qae2}8IZE2&JkYU5R2 z+4pvIB}%&CN?}|mLb2~c=`p>4b~GNHAD(TmlA0?uVN*_eNW-eeXGsLcu`31cBd$S< z6sgr+DYUsS0^_a^Fh=THF!cq-Ed%5BaK`C%Po82_J-#|yw)k-Gwn@ehq0^g6z~Gl} z$$`ta_&pGU^^PW)IEq+ROk9qmEYQPQIIzY&1r-mjG1nwhjDa=C!pM%h^I)XQ2ln=_ zaqn`&2@Fa68`#^wMz?O}%s0^cDXM|aRp9g#LmbX&aKThFRQf=Ud25xkpb;!+68gMIULfR5>7ftED$bqm%0%Zksxv5y!9x# zXGF<81!_V>jszESA_qmr`*}Kj5s%K4gAcXA?Fs(?S8iN@r6#^uo>wL-kWi=FnXZn& zfJbdmzjT4qyOv6Ru2<&BM?_nzm?tkA8lbO#4;Q*4A5 zhK7DT(t$3xacMtj3m8Q<^tvIwxc@AZO+UAfr=0-`==LL5&r{mFxPCsgT8ykhUnncC zlWF74cJO9m%{KRW;LW$Oy7)1#pc*jbNwmEhxv)z@I2lwMEW&l~(KR{ZUIdJ;VWDxf zns%~-2hZLj*u#m2XsbnhkR5`t6GWHhs?5E`%`rC?0Ta;}Qla-j#v{|f zV_wu*)_@-o?<`Ihu}xPB)7emdSU*+i-gG{x>^9oIC!eN#w^#6BGF zVT@(sMGjnhz{8f}73>f$SZt8_?OJFJb)``2cokYhq*V_CJz)?ZDnkx3(**I~AOqLc z?-2VPz~b>}B;|H|*zTgmFJS911%XI&cM+xeXcXwkvhjuIiL3+Wc08Zh*qg^kdze2&F z#s{XGEOjlx_N`OjpfOlJ3ySkW7?~x(8)n^>tH*NnTCPFMwPO)t{LawT)wZ5iz8u;h z12UvDuD+|QtY@&dgRD2TAbCAxlpb~Mu?2MN0Ykkbql0}mc#jU>JJ8z|w1IndaL4fA z$jI)&30ugZN7C9JQqs2VSVX;&m=R57M7;;O?#FLn)d4#6@ON8&1JE-Q&^r?_r~|ZT zA5y*&YIn_n1Y_>@0x90NyNtP;=^?SjTb*3pinTJ8^a5*UQ~2Mok!OZlKory#37BFdqK#23of9)+ zS?saL3VOujh&4&EboN-WU^NXEVGQVu%z8ZHn}{|}(R4Oj(ezjr@9mj&d&DK;BB7UJ z>71Ss%V57=u#mwHpaOr#B3;%a7-8}Rq2WG??GNuFv)W6Ajp(t;gA<7h(0N{Z4rBA7 zyM&>lGsb$slN4Ua1T^-NH@6#a*pIBzPEV;7^E$EP>n_fOJ%LP$gPWJ;Jv&XARwXe_ zEnOtJRBi3FIxja(g}ps@n!4M^?L9#|yMDGbA&BF+X+D(!4|O;%Xa}ZMcN=+}!V@&p zp{_5Z@E1`!#%$r&QCwL518-aDAj}`sZ3V6gfi%A6hUX>Q3d|_S(brMHLVd!ry+Hfh zv?{NR070SY-@c7)q<@dQ^I`9E7YYG7oKQ%SNg;!{Hr$>B?SjKLw5@JyS(~oIQnitx)aNg!vSZeY-#xP>u{er27Li7o)^M4s#9~2$s|`ZB zT7L9^>P>wf7d3u|Z7W-5Wtw_*1furaFR9)nU>b!SnU${gCTIy4sp^JToUDA7ROl4X zbArp|vxv(t3vv@Kyba(nMG5V%oYaaJ39mZx!k#yx@=boKI@|UnXxDyAmFCW+s<~UO z#9KE+lMz~#&O;N8&_J9EtSEPB`v<4g7AwtR^gX+M2oG_ z7lFbGzd_;p!I2(@?3f)`3M=?zQxAkzK*vg_T3=be9?SM9((!2V=4iy&qnHKl?Fj9y zZP!b>hptTXl3LfI%7bcmg7kPaq^X?GM()^2l1ofJm!K{CYOz-=EgvvnIxl*b7LdtOkkNIYp{HW zxwRV?5jk5+!B!?z&5~rv>7P5ie<#y23j83M5a1j+jdON zTttx$Tah-^l?NIt8|(3@no*>;Y zPqE!au38SQ@$oowVodTXP};JZ>bmMOin@U#t>?ehI_k3)YE$i|N&@h5`a!sQ-B}Yz@)SwDYHa* zmQ}-dsC~H2_RmzXcH_6y_yjwzYtyyy3sq(ATrO+05SkHs?`MX-iO@tVF428etTyyi zR%$yHP?z${V#P~iXGr;3g`A>$;^ZaExX{(s*8~~@^$j%vVsNP`Y(^8_RX_|)jVMd0 zPrK)k>WxM+=fhsuzt2xgLrhpEizt)cC3?$%^}~2GGkfn>!mAqn9wHZWcW5EjX|q2^ zANU%s71{*)3-p0YlB$v^seOg?Teggk64XZ3_5x{RlC4#ao89g#a~K-elI~PfU6lAAle9TMUgIUw z#`)ko1)|c_N&dSZ;`dGxi61~l??sVn=a>|k)TXHu3poWpPhi_BrRq6i)f@=XHe(A` z#w(jUGc-rr0kF@GIzc}AZZ(OXh}|4Aqu!|K4d@bO@rlL^h~h-x*u z@jQyUHrb47@5ayU!1Ij`{1yw}7<=@TXN)v!K4ql&y%oC@T8_}xgFV3wSXtRRY6I_N!H}KT&y-pX6E)jNbi02 zq2f;%GhA~*SmvU^`oxPkywJ8?hC@JW4CGTVV`62Fi@OW7yDn2R=RAgSaSGR*tyDg1 zR%VO5_;NKf36YJMXU^50OcS3-`+wR`4K9qRC}Xac9MMm`L`>6`9#&KNAZyH(jmhpJ z@fX%}D25f^ehBCWL9Pkz4t55|YoKL;MnF|xFjsr^uEvxs=zY1%ur^3j`?xGuu88dN zI+xqJJfj=jtBa6!`aac}&zt<7h0;yww%QN!iybzp3l?yx<5BW>l!kQa1A7#!mx$~n zLPYE}Zh6Uhy#3il1&e2py_5gyV$;ow(8?j5dVlabZY?KE-_8*KH3QRz{$!dK-=TJp zm=Dg$5#OA9=qMbxTY&}4bm2du=fS7rofbY6WR^#}lY?_4*S&Ma`!fvO#4{1Kwm0h2 zl5slofh!^jZS7U6xBqQyz1h>vODudCJF|9>+EtKP_!2gy>_A*4C}*y3XPEO=V>7o4 zizX_{Y~i>hZkb0Nq+P<#vOt+b3zQG%*|9$N>ZHmoR=WS6NW8iJs7&Xg=+PD*R@3dX z#&$l?TC12XxbI_|RTvW)n(q8OldjF-Vtbmpi&uUd|J|uq{=cw&%hVkUrRzN~Cb29Y zN@37IWq+p=LZuAm6|A{v>q6;XkLz9!@wtBX;#VBFJ*Hsoiy0@RT3_ehu67$_7`4zH zUb=?(*z@Nkwy#s&wop_-*08 zn{>Ce6hM>bOZ_GeuhCidPCVOLDP8Xsuk)g+cbem8S>M?1+Td^pdJ#NMgHd#+Z4@Oo zevrW0Dy5%!#TO`E8^v2hD_Dw%7aB*}d8{^DtcWVzn6AYgfqfBMEd#V1pp*y@U$6aE zTYJPw8z*g!Y5q{0oi zc%gRcI#rIdM!(Pk?YZmJ%vlfP);da2pRJdIE{5(zDGur?SG>iW9+*>uB~JKajBW?Ry#oUFTDORkbEH@T}f%d(`i zn!BuWmSn4(nq|42?HFvDZAv`!Ktc`0hJ=z30)+Acp*fIHLrg*m2@oLg(gOZ}pV{5J zJ;~(d_xYO-x}E2F=9&J?GtbOCvn-x3_$wFjHh(ir*b^>am5yfK!%g29&x14USEU=$ z!q~1ur4s@56}|0O+Y^<#M7H&~;+n*@84W-+Q1JevtpB)@6lsF9-yT=eA`_I=@K24* zq)cVv1+GMG*{ILsL#9c&;%=d*Tz)%4`dh{TCKq%;?BGYa-@y{#?F`=ka6ge7yas1# zcw`NAy_rrc6%=qnBy(aaU3*So`&!2h^H5Dc{(Zx`F1MXADf;y3y?mzqyo*MX|9|_ zTvzyS3iLX(+E`N!c&vuk)dU4zS4e4E)zZld?wV*&RY@%=7Z8nbHe0 z17iFKn2*LQzYSXEbM%Bp=`L(Q>;=BtW=#tz$e382A=&$(u{!>bSo&nRCXsz|Rp?v_ z(B!MffmU3tq}8A+teI^zVqL|G+R)`<%S;o+venlpQ|3br+m|i*v;Y6K+|YDWYZ|)@Guek@5?wcw zC10zgrK4i1bIcV}hD)0vjk?n$KNoRf_sVSP<=M!kCgEOBROm>J5rn|oId)yNRtc_) z)^bgwGDljGb5-sW@M}e4AxiujPZgMC#9GB(nWI@Qz6r@*QE6386Il$`(5|sbYigRw zQhtJ659onhm^O^T*YhUceEZ{&!7f_ zY!|kc%hTsc)8-+at)%>t?pxvQ*3{mu0rd_#XM!>S*^T+7kcwG_v-kt#*Ko)*(UdQ6 z&B(w>XtmJY#LBTm7{PpmLtmS`eW>&~#t=lz&YZwnZgpK9$>3OKVje%s* ze>NJqq8D@rpi)Xx=j#hcL)MS7C$Cr1CVh?5PnXX(%>kqAOThhrn}M` zHNet=O$|E1vA}S-qgzREn*gXvUY(lpZw0=!I;HM9c_G?^#s5s1&|zo*5Jp0prR0 zxhA3TJ;oEh8th#{UZmnPkXRj0xSwZeCw#SzE($drjLcw*Z%|wd1GE1q-yqBBr3R}Y z`LOSI)X3M7(&sCrMmF~dcJu}%Ep{yMH)jLB4>CEs`BS(3jRKuRg3Hx8IJddFv9XYY94CD_`Bc zWK)KWrpwi2(l8WbLPB#js7~Q{g+~9Zi1jA*rBh2?bLQw{n=VwtuLAYU-CB>~OYxlx zO>2c`mc%xi77M-^_GgxiQJH$Y;Ts%cL30;Bi#f`QLYFqct!oHiyyWz-2}$bOT8d3?#bZ51n->bvZm}OT1^Y zPi|IZvwdi#W`UHY50{Nw6!yR!+AT`j#A(YzWT^8LKF5$6bO(L@Nr`>{65TV+T6La15J$ zD-K$iDXOTtVKIOt-;{@DGHeE0$7%>$x!@FJnwWK0E_9g8G{3Kz#ZKO8wg`02V6WY( zC_xhe0QR3N%0g45^|K(4mo)yeBrWNypJIG%ew`1kH@NsNG_N^ZXR%E`*T;okpe|nh zvR~@~r0WJ0!uA+ zrYUP6%wB;xPdj@{gs>GEXzxv$lqf28&6(d^Q(RhDT~%1rT(_c%>j0~@Q#o3HJys+g zEi(7l_JLOKKrg=wc-9W97j<1G`_=8Cf^KsrduI%&J(EqmLrGhN@p4;fNM?{Bl2}`? zLyReMGhDYPC>>)?GOUhd9d~^1LIBvG{8#MDz`6qRMLJP3Zj^(Ce5c}e28irmmxPQ8 z5O_fFJsYZBne4nfL+fB`Cc9@0Xdsilb*GZH5Oq*d7E%Wd{Dg$2D->oM6%mqw+DMjr zLQ!hIvkQIga!DE8oa}3NH550(IcrxpcWo``lR{BBac_hVkJ9QQ9QJ6gBW*>i-4LdO zne3($G}fst$pF-n$X*x=_!rTzaTHu-Lgx8NiSWtaTE?mFlsg ztU9<}vio6~9|g+_MCs>x-EGP$L70X5FWCD!&n0Im2GQ!Vp!4kjY}dze^KBf2v}qcc=41 zSG2K>rltypMaQTB`9P)g1!vC>Gu@`(-F8!Tl+Up5uau@%Qu;c<-VlN^PS9W`C_tSV zA^?p(q*KfaO~K1SYaO`AM_T12lS7mi=(j(jQJ*^215Xvbd3HzCP)? zw6?6nq23<6Vzu2Xga~4DFR0LBk{Ozt2>)wL8a_icrr}ezqPh?kU#&r@F<*`mI?Ls` ztE4%r&{&M>*JwCm!G_VJLskoy|^HBqP50FJ>2)BQq9DN*sL zhM93!h^0=Gs(S1(l-*h1+c(Bg_WfW=-}h5`L(QRUl~rffV5rQXjlO|83M zan}YW(vbN^(}7;Fm!%0we?vDr_UjNGXnanCT%QJ4T|i$sqz0_kjD2n3LD`tOHV>o1XUUjjL$ z#|?+nOYn_LWaNH)ODX}Sx5*EMvon(4rvu@9{sH8CIcb^@f*=?19ARJxz@vN*#&70^ z(+tHv{MnK!+tY;`5s_d00nl{(yd5POPN;Q$jRM5y;$1nE1@Bd4W=L(waz`fJRvJ!_ zrL}Y|2|?UP8cq<(eX`U9U&?Fp(PB9800gcd4JY^kp{rNW5$RT4iWWN%DFEQapuJIN zZ^}?bmZ_figj0b3JB6z|YmwRYhsBLy_ds5=PXwVEC_Khgjx+IiXW`(0Kl@u;KJatF z`xQC($PjilQk3Kn1WEhXCgP|(UdUL-JCvy-2|@>w*>G5_c7A}=U!M=xMLd~`tPH6D zl~R!3rb;u1#5J)ljn-g-Iso7=$64kKd2Pv%zglR4r=#W{CJC*s>5;O+FLgBYLy1aD)s8|=BQY>m>F1lDb1 zp}hnh9SdzCXsLG$hs^}74nX}n<8=fsEFVL>mY{nBKC*RM4?)`kEOclsLA%C6YY4i1 zEQbn$7I@*#n@voHGcN4od$nh&Y~r`ku|fk-EPA>t#kQWlW=(e`FUpF7(%m7_T?<^% zE6c31UkEo*_^5~#dcC*7Z_)O$e1tXin%CnbRP#2r8+`Em3pK-^#mqL2nM@c9Zfvym z4bZ(KXMxo@fXktHYz6g?%h*m2u49&Uw{#44whVR>#agRTIowsa&u&l?FQTr)-LFA6 zp0(%Cq}QSGG;S{7w-P~Up{$KbvR$5glU z_PJMjM>#gxsH=dpbBzrrX8swj)Hr(L%O=80I4=;)^-d4FbA~H)1>lY3)pxIgK>?!0jt6(h7cclW2lhHwW|R>gJwFK;p{YU>>EaUEOTP z)lDNT6(JYRbaitAzf9ST(;fWkCf@#N8SWl(cMP+X7u=Cacps@b+&;@9RfN*9PkxJA zmxYsc?7k2z>wW?EHOmd;eWA#!UqH-a1Nm7f^7k*e(-KQ(>uhK7`YPU5DCsXav?M?l*X8Bk^u?Aq@`~jCUx6$Ry<;LaA zZRX3F6woeb4)7TKa;EVqY@^GW8VOy_Tn;UKoB47kp~hX#6dERH1frpPO8(cvvcxJM zU|KooBBREXUz!XQ&J+ohH-e8W&BD#eI*O{5a7@%dvCUD-Cu>o6BkF33>es4kOx!>n zn&TGgai2xpMvAM|oDJtbYGLrr8|}> zpo|rY(=zaW&2ju@;_0+^F(>TCdE??VvB^r}eTpb0i#riH2u7r}zFdEVP6ZM_mI`UI z{b9jb3ugkQ`6w8rgmSEfRy)m91-&TsfUnYd4@&zCJicMcAUNCbD2h+$_X&9Oug@n3 z!+iuY-N+XjqfIr~4_+g2WzGYlUl59+3gki&hA)fg49SNAffi>fa5bPl4yE@+Wk`dV z!+cRf1+Hs$p`7}=z@Xb>=bAWhBXL@cY4$-{^59GxB-L*PxJv*RI5FW0JCTLN_Qzr& z0!^L}8BpM(LXveNGkUTUMV>4zzrH6~r>G_StRQU>&z@``b|6*1ku2WJjpj=yUJKb4 zUJLNTVy=ZZgV}kBXNTvdKpbBMZ|ZsZu_&cm&YBlJ>iF_&85zM7h!s($=I_g+_S65B z%{DdWAR5zmk=SLa0`O~95E6M~?)G8PizQmBv&<=!&8BB`nbYGW53Oj_4S1PrCmPki zA)eO8&Pt*IF<%k`HlMqQp%1KMH{hYHIp`mIW8urDKM&4V@G11=QMoe^51vS4(Y1-^ z`KY1|@xpE&!adm;k_X|QY%r#Z9LPh;4SCwAX~?5kei|dZ{yC7u~Iswas!SEaWLN-lE0Tdo`@Hsg}C@Aj7xAX}VC+g!s^S_fd(+G4)0O&6! zPs3OO2&51}^aoJkw%N9Np`V`Y2071qul~d-kIO-Q!^W$#JoW^VZqh{YfO9i^QRT@= zQ38Dx^mF(!-ot~Lk(R-~j-N8F3B~nE8PXSM-StVN+IE3@IJGAQL9sWQ#NQX9^r3h# zP@>^f9mn6D)e4xqE6V`NNqK@!I~j}&FuhT$SBZ%h*}f48u}_wzrRKosV5;y@RQMXa zXOR*IpdV{CQeJIWq!1APiSTSZ_m{F@^?70&NH@(JiTNES@)tjauPCUv5b6~n&ou_` z@jHqHy272n`X5kchiwdVKN`+%d_bA0@K48tO9*UzFBY-Phe^E^zT6>h9$eF^O2 z2NXGe<2-Cmi|kTi<2+#Hsbm8oOacuZjeMF$UN~cVY68e)>A+ZeLa_^eqvYrrc=$KU ztfaGKzzNu=%=)0RNGB|KP?@&mEQHeCmi^8q8nU_n$C z0Z}Kcf~<4nH&`o!)$XH5jwUE;qi2nPq{Dd#RUb_1Seb5?-(6D<3tqI;mZcluIK zISB(_&U-L{mf^u?0E1D5HOOS+VX;514N2X(3`Qz&kfzaH{7voXUCvsIs~e^B4z%`R zTR1C6kZDy2CpUY`vlqkhQ{aKs#j@muukXD$)&za9oZMSGJJZ2MFDI1)X$O1rhHX2L z?G^G`(SjWB`$iCc0c7fiZ6@~;jw#~Ub8NAQ;+&&&(sprEbTUHl+v+Ts2*(xO-K)Jm z?w1xQf3(v-0ay^h?;L4uO>o9XYc6s;m;IuRhspPxf|F&PNg(AcsDEpG>49_bg=^vA z7TsA3A$QJ9rqvp8qg9&Z7DoWX;hU{+VK5Vi?C72Ioiihn@rSE`Z1f>T*~D}04dyyh z<6Z$>hNt+0bGv4S{Vp+J38(rL3XiZ);;nJ);iT}eb-Pik#Ye=_h; zZp)C0;X-#^o_4fR#Ftzkn6$>B^fHqs7$F965XL5Lb9=(L;$zu=Qlat{0tqdHBV6!hL-T!G~HOM_kKl)~n{RIaiXWNd z{pgJWX}~!h=+uVMQJ0@MESY0d8fMsi=zWNV?xqYZ3|8oi6KYY2)rZA4>pe*DIrun) zM>-T@#3z0x#p3_O)E6fZ0fgaa62L}W2p#0c)EcY72rIZb$iL5mr<{S8D#zw$w_TRX zh5ci4S(JzwV@IlJk?maq3bB7WTvtyJExN57?@1b|f@vM4(-!Z45Z_y4wMK^xYA|~m z&J>6bx?7$z3G5H#Mv&JY7AwU^LH``+sj*T&kO?SblyWa=gV}PD1CJMX=RxGs=PrnS z`ox8^JbaQk#|Fyf;;S)ePw{PQxGB?wQIGm~ZM5n*@k&`KST6gWQ^W4+oD zjC@ez{FF*ZIG-$J{Zp4D_zUH^z+0#T7if6lV>(eusSs_w zB;W8Q9e{j;q$2sYgB<;lM^^&CtEZflqB%kZ6LLDaCzbqJW?=00Lk#!k33cd}Hh}T! zjTFM~(K?Xk--=6-4w1sL7A%)lOPeLJ4-lV;Gt z>-u)OLYXQncvLjxQCMOoZ09PFg0F?>c5eJ?D$w?EDv+Pv0TF~hCT>8w!@jzLEQG*Y z7zLwP!JD1>$3(!P0BxsLTYEO2ZC0RI-fWsx%A#Dwoh<_$-gZ1oC|g~Oe0L@bL! zPckr=YrL?YXn5RS#V9%si1=BQ+@z8Eh>?4GPs~~Yrg&15$btzFRULxJ>6j#N zX2*x=#aS$ZMArkoW)oBkYOm(7xW4#BRNn*Gqv*zOY#ACCy=R!Z5Wb{#6dTP=U1%L_ zAG`-4Og)HP>4K1$pr z2jLxg+?oZeJi6}?(ncgod#iwRo;+~?;E6RUPGER3I~6WYg&kPHVMon}AU6E-bTFR7 zrsXpcN=O;B&aoM z0R^@r+pR~$jm38%;E?fvBYt5hp)Q0!cp3-R60P?vF?tWe)O+v8cd3tI69y(tAW4jiN4NaRf+AD%59*Js|QO5$mIA zzw06}ft=+k)MsZ=p}tA%1Ni`{P`83ihW4SUQ2ynq-{>loe>qp7{L6I}%D-IeRJ>CB z%e6{DWC3z674={TMrAx_Go$(2bQYVSQobWK|x27c2Dz#tlJ>LwnxjLk);9b(`nSSj^oqccAA;@ zacCxn51;5btTJUP;>7aVOb29IIK*Ff4vdus%*tUjmvIPmgvyjmJnkC{TUTyFfO2ID ze18)^nx8pkN~WCyX#VGbf2L$g6c2u7VX=hM8Vnsx#0z^-0fWBH#Ww-c;m6{1Dn6tn zAxo$}EZS0lgTWR@Qnb(c!Iwq^$KpprEjRI&&ks$}hf#6`|34~s*wl@K`2Fj06C zIfG+u7;0#@-?APDGl;;k1^1oc38A!iXkfIqrHjQpsf16fKMs3$R1>x776%2cqj@l zZy#ZE`lluOUrrxI0faRoMv1ToUlb$tE3 zNe78iL5HtktF5=L!10$YVx3rtSa_pV=tdPuU)!8prKy?r3_g2r5n+XeT-hSRP8Z8< zYgBQB{gYkG(q@o1|l`FM{4lc^LPL9 zOq>pvEVQXXP(0DCyY<7}WK3}28X6^a%MT(2AI%$-cEfy1eV^vrC?qAbzo;=uS(*EO zmy=!hiN_vk${y>hO>@PBWXePtWumk)UzN)}VH{grj*n;2p0tRFKsmmL5|{Mj6Q;Db z40?NT8vO^be&H58-~F3V)+mK6SI(JR)zUhyHox|yO`8$OMbHey@8ONjI3DHu+~W+X z3*YKAXKZL);N{T&^`wMQJ+wM41ubuG#&=hzx&5Yuaf_nO+tQ0XHsjE~ma;G~5wjZg zzH`F#-X~>;k(HQt6wOGyD@^N=0~66B{~5#~F|zmSVEW|U6f$pMBK{yZc7Hf#hd>&y z2GaOt7|zRqT03L$d>D0ML_+wVI$URPsX2bTo#zqzc+qxkA5ZJd&^_1LwGNETG+F-{ z=>AZ%w7#gr1Jz;9&+uw*mx8t++sV@=?LZqoMut*ivwU2-IK9@5<3ZBboylz z>zm|~Gg~IkKwvQtu0bzu_}3ZhZ`h!0;yOF*dMy*NcpwsX*CbbhKX7J=Fwpb0$gS{L zTQ{D;YBy&bJ_sQa!}z>b8l##R*3Z$ zPFG>@H0U_jK=$b@)p{uqq|zW_NO6wDx#W0W&O)u6q@1s^p`iE2xl;Wb@BrH+cODGJ z&PtnTNkko)1S2K~64Lv^3h?)}giSu7{IIyS5DFKbiPPT8k|qk@2{k^Y77zGMx23*@ zqm_`QW%$1o|JRtstgwS-pjmq(dmvpe3KxZD8>}eg33xT^zV+T6LvFlX)JQ=5R}nU$38(BD0Lhbl&z(XV}i1!)N#3>cuO7E3Cf02zvCeRr`tK3%9ggi z)eK;3dgN}C*~k*QM0-$kXY z)bX*Xl$Scb6qTw{hhR|}N*&=ArLoj8!J;&kI_6lEHCjd*_)FRqcm}SuuWuXAagRmW z1!W(_S(LkQ!MvQs7>%oEv7SsdbqST|T8q-9MXns~9(B)IG}Or{TsgVTB`rfOZOBp1 z0?z8pnK0fB98X$!eAN+cbya$Mdq)TH2qA8bA>!H6Nw;5Pb_XvmB~C-5>}xBscZnG1Ft?}niSAuc_hM}$0MjH7{1LdT>(9OU1J6y6_bDmg?OcWm$cf?MI!ZZb&hqq$cgj@jTz(eKi z^q18M=>o>At8TcpqHl1hrNg_brQ6%wz#qbB>*^aG6ddbx%9(=Wr~j3b=ASj9EDTzh zCw;nHi-6;ocn`h1+dEn`+@tM`IX*Q(%;^MU2V$)D4z>+rHn0(=Eb;iil!Vn<0+WrSm8-aT$Yq=*_AxWq=t*BhT5jN$-%NKkPzoE-<&kF8cO|HF+Ff)!Z9(1#J2fg(Is_~;>gOAJ{SuC{ z$5E}ynadF+5Gz`#!mTa@^h8s&fVn9gv#eMq1fY?OMQ2{+ZP|{KfLaX|hq)@rEeY*Z6?t(&Fr<1`KpeX_c^(h!@b+O##ab1SRS@(SS{(#$PXOtRbxcX8CPON zDC!%g7eu`SgDq8ffkKP5%7$nC=A&>fe}-GeFk{Lm%483kdTNBLxTOcu zXM7jb;W$pTy>Bomg4!Znf&1lSxLVj})HeTDL){Asge^o@U-icDW$$c2~`iw=u5g&7D&!I<$BHvtr9C1<}MA-)OK!zTXI zjs3+moNLLV(8qp@bRLc~jHKbX^#I<|eHdp7@g19-tbG#E(>6@3;&Zl?o8kRctT-&% z&x003Oh(cO|CVUa0$^2EcA+%MT?kXM&AA=+>zO#my$bKi;As8w3`xdmyz1qd?Feqi zz5i8NL{_~#4≪Sj9Mu5^BdPY9P}L*^w$mS?Eort3W1h^2td>xII-F=VE`!ELp^= z&&vt7RK~I9sqSJrvnSS)3Az4Lr%Bh5UgHj7Wgab~a{j;$-B;VC5Ris<^Mm>uzmn+jbUS?C0m_Oq(3aAS09k`{?|f#0g__ zz#cldzzJaAMO`FID5MRHpwV#+?^ODxMJf7GS^JupTcKO6TMymp zajsjHwcoer3*}X84ZGL{f2y6z_I{<<9n0|ScC3)>6O!4HuW)y989GTYEVBzq^Nar*t6WQi-JvNs2wc?CimKmjETx`WFwKF3~^GkNz2|bxq6!!D4mHi;17YQl4 zi{0^RtrJaazuzVe*)A7?Y2s!Nd+1V6GOKyFb`o3oTCJR*k=@V9!U7zQzE(TqzW2US zrb%Kli?yn$$R3_Z(6V>Ts?KH|Z`UTV-By({PRF}=#(`Oyl`_FUv&3fqNKIz>Un>)^lPcR!MoT9--lz;0`|YKk6v{BH##HY6?z5>)lBMAA zeG{V8w#3 z9FymXY;dW!L=*3RmnVs(WvPi^7HG<2S*nw*%ThA|G^(8exCr4u`*Nb6qxVvp*kY40bH4)?U@)&>5Yxlo$nj7nSL^bJV27 zWXI_8v5RxGJNs~sy2{iCis!2N;2$WaXP%nCR;7EU5dXpDQv7n_A1L7~bJaeO8$FMK zd__XC<1cxxkmWrkbYh-bJ%;lFwrsu{31EPqXTG`^;XsRnUn)B}U!5%`-*@#N?cg$bbEUPM;wuDoS@C}%s}%W zEDmY@)WzzuNwZ3%StaKBaIrI4o(m;S*j&WEU97IRzEOg;`7@Sy*0)4mWKA!1v5!SD ziKWg^!`ahI)C}=z_VE&RMEsU@E>$;+^Vw5N)m-t`+0Hgb~;aOv^>3n6~2l` z)A!}66WOMGb)l%RvUpTA_N8*v{@L zRCkIuu$&?_A8GoE)F$zA_GFQI6|&l1thS4d?5SdPP1GCJuCkWidYs2YU0%D)v%@Ml z=CfN$K)>U7sah|(|T-9~re zb&Yr-d$v+NU(8}_R;t&DkFl>-s>dy{P3+<-b%p3z@eq4^mD(#V zV0G2%9pX7mtWj&kcbTUKtx(GDu2DCMKVcJV)wP!R^{l%Vnf(nrU8~-ViaP93ueE-< z!NoG)uq3mh)#@&>hW&OmI@o^ZtW)P$AKK_*o?3{(jyiRU_z!kLojTKcWRr`1SL>14 zb9L$k)@Kl^jj`h7aJ@R!Dm1%T?33m zh1Q5RRxdbyJW3;Zv69|uG+5N)|T$>rmmgj(};#| z<~lVq=AZ58?Z$lJVn;WkFfXiEW7!4k)YM5&bxP%4^C;mIDXepoC!Hou;J@Q|W4H%7 z%w~75_tfh|S8X9ChO7({byEu8a-?b6)$@?W=Ry!%-a)Yq3BqIV(HVcnQHHP@pSu;E z6xEQmxGlcPvrv!v6h|3ym7~&FN3*9~AMA@*$tJZ^{4u*@6M8`_b2O{ZSf*@an`cZ< zU>`QCKNtVWF5j&F4+g{L7WGlW5n8BvDqqm*I zu58Dse~EqFu2x$YLJPd+UG%ngFFL{1>~=3kU_YC2x0hG&VHuijn+HOsD)U(`9^+%StA@)G0`k*+-M!S&OGwjtajHA2Q z+^y={$VuWh!`PU{3cJ;nmZTl*NVobg^!U9!DES}Qdp+ogGufhE zj9D)`){74O8T);&dPF>rt?N@S6Q5)M>QhTBlXkJ%Igm=v#aQjE)~8OhcI<-GI@Khz zV?K46_$YhUr>=*nn$fRr6o=TMesy)yjB{Ki-oc@PzR}_qUl%SFcMbONe)&nidMxIF zJ*EOez>a#b%`MwMKPVOMr6x6|GZ(vSr>B#qGN9u9gfjXf`^ljCtBC+NaIn$)Sl5s` zjlkD)u+i_>^+W31NdRBApO^%D+q69%96T{Jkjca9VjI`3)(xvg+Shf%>Um)VbFqi_ zdWMR$%skEc1iEG=Om;1}E#B#Eara`6X3#y<=kDkubq|TIJV=Qe+JcLn@_R_bMU!*3 zN&7tYrr>$|Jh`Ue8~Z$?!5q%tp?*i@xSq3w8zr5`i31+&_3+d_=O|-Tuw$cYo}T}U ze&liK{r?8`)hMQmRcvUddP~Ahhh1e|u#D7g^LBe-$m89S&Do`v$9{M&<=v=W7rXe7 zCxIP(qgG;P&hg;Bo@~GFuypuPXsvRhnhQMP?2TP&+eA=&z$uI>V70r|%1Hn(JxmdU z#X!V4R1Bc5kg|0(CpqitnLw~v*z>EV`2yU_&hbwlEhff z`Iv1kVW-bmN3BVh!=iBwR<^?zs9P;jSFpD(P(Q^q_0omvo8kuci;GmBc#5STQHSJ5 zuZDeZ5W4nY7g_{623mgaJfd!iz2+)&Yq*&Er=HnVTMu3>#a~URVATVa%6@cIEtmvk zKSu_;JxBhb3F|o9F*S}T9^@28^SIapKl9Ad7xMAfU)r|PmO6RICd2} z(Ysfui*$L;!%MGJXY1kGlO7j4a-~{EImx<(cm)QvxfBODD$qB9S~>|aVsE7w!4^j9 z3j5|NwE^14Ay#*_+AqGx9={q|M<>g;26g=;yXhLW*_wNsi#6Yi6}szMXdTDc(6wlQ zDeSpx)l0-*v6i2xKekN1gMIlEwN>25)?bI8Z`g0IQ+HbT-sxi3d0=FzyI$?Igr8s! zUauauZaaZN_kbs!ZTP8LB|gk<{VBN4XW#u4n$4YT;Aa>LQFlT1dH>!Rp+B0ubtHqOS^d@!4lK4yZubWh_^~f(>KmLt1nfY#3*IO+2 zuxD>p2gF~pf?L$P!n*E-p_jeYj2<0vt9p$%i`{&y`UpzU^>g&oW$cTes|QfJowuoV z*7xs+Vd~+Uc=q;f$Uq^Rb~}`)JDC4=tZmd^vpYUkQd#&NfbC|R??7#QzuJ5FLv z_YM2-q`K02({J_5cg`7VH1po2?zM;yv3Kr5Dvz=JyVc)`EzI%@^=ixHN7!}0P=75x z&({AE%cpJ@eUExImQO#wM|~0%Ie4$SL;Q$+aIczgUGW&!ypPwUu!{SzRC$sex=-C} z^*oN{u?I_E_xGd8zqIX*Msi^$R412vY$idq*(Y--QR`6^Q>6mb*rawS~$Z zoBOeeEk|!Kp*5z9>4|ZzaF5$^ck#k;fFI`e4;{IC2?A#pUAR(+_kW*^$jUA33juv2 zW#tx!g1!Y+Nhs*E@T}a@P|&9Um4||!1!$E9f@^s#$=`ulbtu^*Fgu+3t_Ptd^M zYV}|^4o8=X2QVD#z_tiOH?jL!V;poY7S;)C7?WR*`{}FM$(z!NSPXGt`hH=7LVW$dga-mRVS&e$AJu0rn zbyh(*iZjxy@tazOnw%22Fvm~edF-eYT$sDu%%A_{Q^9j{=|3VT`P zCvm^C0oP$Sa-noD?s!JR%iqC+1mVNp9Nn{nD6wZq$8gZsYlj4r z&gJB|E6@U`3SPUo_YiH`+$iH)wr>)oSA;8sR*Tk5@P%@1TUv&{6=(2n1eDl8q^96g zT!|j0XN%;g4g)9_ayEnlF8O0~hsMHw55n!CK%01)1TL~W9UFT*yEtUu3)fg)I|QuG zR1?8=Ep-yXvAJBxnn}1AHjzN`Hj+d%(de?+L5vb*xGZq7$wi; z;#iML@-{Y?3tTe^7s)0Pjr(lmcGuWaKW>YK_zkHu63IA4ssS-VjJm!JB`NGPk?O)4 z;No%MZzOE|Qy#cV_=z#-rLDgg;EEhuB$j6xV8?O$paPHfLENy8bYM zOAg;Gx;R>dJ4p1guekLoWiTdPjJyqieE2q!Tf*JHi%S8aB#eTQzRZtqTmomM6wr=0uePtW2o=8d)~Ntp2t|1pep6TD!uHJ2`G@;0 zfcGDom;#d?`lpl6R=D@EJcBN-pATkHa-ZPb0k=#(!GDNN=uAsoyUtsQF4R4@&eDS0 zVY@feyRArPotJbAINu$_v|pbvc@u!-4Q5yF23!cKPY_4Q7gj7HI@iPmVHvn7KJUuC z0J~WBD;|{{eLzhLH=?ka52!Oz#zvX;U!$COK%KR+9*%bL0&U=I!YEZoTMv%53c~03 zpJy4sU2WuHXt>R&hT!!e=?E@M4YxU`vJ;P}OVi)r@4?!~o z%5Ac9Dvb4yTvhG#nu_HOlo|t7c*lB9UJYEDFeDGk4HUohPw=Y zPRdQCb{wP&X;h4S!a_}`aMoA}8Y{F`IGgoPzstGZqCxxTI^jte1lJ22D=roME<}+L z*ieCQ{H_DAe=Z^uu)YG{_yrYyV}+vjON}U?Sb}EV?V5&WZ49TJAREpV77)R+f`zz2 zK|@0JOsIFeU1glkm4$yej{L}l(^A-s7?Kf{V`zQA*Z!bLq1z@jJenA<_Ck92=2Go z_1$Ulw&#+u^Zd!>b@7Ve7#7@rO0nU1Z-=|ihm!#Czcb`s*Wwc#mkRE$64*!GY0mhj zWs|@gdbZ_ZtMra=)n1`#8JpabmR8iXtWiVREce3G&9b1>_{zGnmoDt#s;n>t*`yn& zbYTy!M2_DK!3;Ym99OLDWj*_Il4ktFz8OVoJt}rfi6C5ndDV?yrxz|;WVkZ<%wbFY zhaIl@n6fV?p1qKt7G{4B7LS&rEYF`K`yX`o_s7x+v+C`^EW8@k2Bv~H3_U^U!T=`L zsjtHQUIJLI>~-!k`_}lMw02Ohn^h2w%Rs`nAio8_(qgP24(`tq-*eDNzDs;}BCh0; zYtYN}#T9v4@qZ$bEL=AWr+x%HJFspR2oUKR2@TqlkZyJVJuc1h@|0z=6AtoF?q?(- zvfm^~H_;_?d}}US5P{0<+?Eie3Kpnu(pF?~uWN&iybjbY5riXX6x`zUFUxLr0|Bmv z(Bn&}W?HU5;7+&%*BGViFuU|mfPE8PrGJ8B6A7WVR96j7gA54vX9Pz-7d-$$uyDX3 zE^q+QE`4y=RYE2lg#)$<7wS0VF2PU22cX)%?yfd32c9`Y5cq{|X&ZtS+zpY?KY^UB z_fHUpTtI1`jS1wOX9zxnjw5$Nw#3ww;t&>O4gO%pIiqrPuA9PwY^Mgf(p~H^9H|&IrS*xB zNgHqn%c9X6f`EW{_< z0-30#O!V5c8s?dxst#nLHtc&cQ9CXZUm_EMTIOwpv#0IOu&Z*t=4*8@Xk?(0h>|7u z!}>tIwH;R_(OXeJXM$O)hSOyGIt+!%Ugt=PQ7zRlg=$@Z=awe~igC469X_^}Uc+r5 zt#NlzWl?uQi>4Z_8x#zJ7jmKVsMr+2PVUZ0a5u@01VI@}a7-4IddV>px7}iF)9iBv zx`jR6K9~I@GcDQwQd9?`wHK6$>mcdglr(<@kYnuy&ZYKznztXK}0az!j?l-v!rWOKpB)e)J;26p=IODu)4*!OiDhgH2 z=OJ*%0tl`xE0$fHyW2GQ<_x4I_{&Rz(REf@>{1P(1v<0{Bo}5hSt+VLqfh$f( zQ*=t`W9r(bg#Sne?EvpTir@{S4MiQ7EZ_qnasLr5w}*0DZ}u_;MIT*2|M!)3^bkVY zw6EYx0b=~L529(Iv#-#7lqoxM5Xgz`h&`kXDnw=R?sL)ClH2%;+tp*!HYH$$MF-$cW zhlrm4qXwf$xf()@k)t@;`0-FqhF|z=+;#wpdi!On(QA+!aQ!pRfK;_Wo%AGU~( zM8S!curH5>bGC3f$Z4@03wVHrdvg;CdzGRvtxoXShYE$0b@N@{pgsFgF z;=7Xo^YhPtOvIX^;Pcz^g`GX(YjHCFpt>x8qP3B1EQpYfWpzPhq_Yq$BYlNeNC1QA zAw}&U6J*$B{0Zr(3$s9LKUds^!ZliZ>`|!OpF?BBxlBQd#>Q8pm5lSuI+7;)8?EFO zmR#HJz&e%tww7>Q!MPqr$3|_LD<`=HmfJxtd$eV%ZZe?Jt&uz*@7yNd84U66rr9{i z(2*ac{4?%7;9*uR+MjJ{Gq!Bmk`M9=^W|R|;D1H^@9noacUa_nvxH!ejHEe{U1}Ck z1c|A#xGTj1SvnyeIB?|>4JV54MJ!2&Ym!OuP=^$`&Fw?1n3K{4$O$uVP5KzQq=@OF z^p1F7e@HdJ&8{C7`Lz>`wD08$8Y$TVi+rOMPhz&rRyGxqPp|{~;TmibG#LY2uu!AD z-4eo5YPSUQ_7)s2*M}pD`w7wbdJ|u3CBUYWY&_zJghP2NicC;va|H01M;on}@SM%^ zblJY$Ds8tOaIQ0DRWJ2eMSyx~S+BDNj;F0gq9Ms+p$jWkCA24RfiSWSNgkfRbAFB zYL#KKDoQV-x4;!7UKzs1EBXND?SbsyTm1mxH3R3)Xne@hXZl`HCD%pJ^XAwQH%9!_ z*^~qV>N3+gjIO8+7RbVm9)Rhkw;f9}qzln}JC+h0svP#P@x7x*+Jlj(r~94*gIVK! zYRaYb>8B=n#>$Ux)W)Nz(v3m#=U~tQaHzn!1nv%~Xgys!y>+$lcwn%BVNCi$Ja`4@ zusFt4L349$JS`vXU{9YExwzBYwhgbf_rU#5NMygWn(``3jg|v}Y+}Pp7S0$++@=i8 z#meb`RoVt=rI+L#D*;YoOy<5~)hMIHKWn4^Z?>c~;Vkg?9mFMA7HTK|XlQ<Og`j z+hHAX!pBo(SR%2Ri7__ZBi}?g3^Y8mwv<`+q|LGn7O>fS(h~E5g!snI%QoECbuVAe zB{_O7>qO164_=fcrlZNJ3@O+_*E#3>E+7%(A*}5XA#c^s}mX31o zqy|9QgqP5?N8fc4r2@7vXXY)9h!hgj8GQ@?=kpQD<;KA{zF6ko)9Wb>-pgN@A_oJ% z^GBFM-$&J{=#bdxC_|ZNLo7Dq7v3BTQa_6z zgfNKz2k?JC{`Zf<_hBz)KiXXVP8cl+%;Wf^dHh~Pq*(?p)!{3c4lJ#t%;}zjUbW@9D{}H zkT#$atE}7L@#sl4$SVtn!QbQ7K-j|Vr1kLLHP1fxJZ2r+7;vy+(huXz1Qyk98ZFcA$2G3D-j+p z9Z&mi0!w>J&8r_n|L`whjLZdj?IR(q-%J?Cy5PDJIMFT!X<-QI?-SUaPpJzWLC)-h zr&J{}kj-b}Sklw#l7wwkP4WghJ`})x$~vA_UDJbcd4aDReO%agcd@YV`QnhI{>kom zTAe0qjJ^nA^q9>4@w7T~#u!cy7e6NKn+tBo9}VI3c>-JZdo?|047vL}RL6GIc4;X2 zUnbeh?2bfOPsLv>i;oUzB6i~U=F+~Dz+V47Zr%ksv+qI(UP)jxp9v*c^^B@a4AjXt z@s!xSFm~7HH^fJo+kssR!eGUI8PA>`!|B5iPTz4(e+y%$9?6QEW#&ZH+~4rpW2>J$ zR(jU6WNu@WDJ>X! zrg6S8$hABN^LKwwfOvaKZka!5mf+e-?q)}5bgV&Aa(73J1-7M_CzyKFO5Y)|-1-|- z$1bci=5oO|02z@^n_~4ALd&+wWMQBUQrbBJuaX3an~{Y%AN+DdV7I4H@4O60E!lQS#Wnv=p#OF7sV`)k}v zK)3ev%ckVaVFA{w!<1;zCn{thd&nY-Pvb0T8E=_2T?Po~C-n=;a_ z^kerqR@{(*#P-27W^sQJiPJ&!@jM-Lq>m>Y(D3Qw569?` z$76KJ$57EZ>hF^N@l+H}>J#z%k=P-jk4K|3{Tk>$(K^w4(U=Sg_vZ+m<6olnk1r#! zmM2C`MV1OU*Z-LOC5_v2g_o5pi)Fmj_hRh4K$3&}p0XmU~KCt&JtfmhfNar5kfp_`R4u{^*Cn5B3MaiBl_px=Plpt{Z9@8f+efC-ZK&^AUs| zK0$%T;>I7L5%Iea-*GqMZ$fn1dUcLi38)k%3R^?Tn?T-iNNi8P1LUWX6dkZ4asZW@ zB)=}L-GB;fLF+vvwx!}wVss)#+aa+f{bz^~XNm!!f(Lp{ zF{%qe0^2M8z{?@xRTU0I)_D+k5|i&%7)5cu%bfxL)k~F)Sl)3PpCG0>)Z-z`=DHPCHQ=?PP^m8_G|px$ zVWY>ecXh^s*Ti6e^V)Qkh@XMgLw^g0O#~FXOceT|S)Bp~K~8Zwp0T2{wqCfVfhmgY zD~NZu_-|)R1b}dIQdy|M{s)vWWmFY%8oxz~Hf#+P_iVO?5IAfNob?jRfiqMdsEB-R zttEULKziC8M1aZ*B{+>!T?WNvpy;4R;3P1MXgoktZjk)Wa$p3;Bw%1KHl_2pP1z2? z$#e2g%OrONbVHl7aUxu?a4tBt%aLSF>T%0L8+-NQv~)i{v5@SxW=Q$car_c4R@fNk zoJn8OVe6F$04|doOuXmm9vo@mw-?=la}aK?5u=UHEZG-G((Ts$&YlzdT$s!M^Op20w2|>3-<|7Gc_u!f;uE=MrLIgvCi) zhyx4*6K)MH*)_@!9f}~mE(Hc7VirZq&h{jVC2b1F&aplm*YOS77{FoX#Y=l`gT*Tr z(2W3q!=^%OPcpu!{{UPYK9YS0M>uOI;#b>ep}3&4PYmbfvX@C%VW-K{zp}3FF?KFf zFbkahz|z_teqbr>ANGxy9h#5n2bL5I%?y~caCiqNmDt6n-HEgdDQp6junSiN;OQJR zw0o)V((TZeUh7RuuUDh~Ki=L1Jg(wO^sn1$^|dA0vSs_)R%>ZlmL(Xk5X;yQv|H9< zTb3+&!$_@twPZ=&munns7>1dEA#@;_47>?RW*{tCN%CgK4oe_0>kuF;VF?5hvJjF0 z2_*b~r|#|U+p@{<{@?o^A9CM1bxzf({Z!RCr`iO)OWp%lGugu>C@gImO1v_CC?^c| zzH>?^{T=A?@ZMMWjVmnKNPr)yvE(Q$?K{U+SlV~a$52?>cTOOtu(a=-k5X9LcaAGZ zh&H7fgvGLRM>5O!{-V@}u$aNM|A!`UF4l_7`GkIz=7b8(VnQ^z8@GngGpW(gRzlBB zb3+O5y0()|*EQ%rRFM9QEZ&O9X-ppDVUXv#WLKXN(wB+WD&KVlhij#%s`rtN^)(Q905fE#Hc zuQkBhb10@*0~{*i!)pz2sA!@!fD1`i+se>t_gVvNE7KbE+sdT8|BtKznuH0jH9(WY zM3ZJhtO2A*OgUl=P;(*3AI}<~hW26JuhEU8tpV1abA~lQ&4uh}9BY8qGS?cQwd{5! zr~wYnKaMp(YgyD9VC^~Zs;vRmo^uv!fF>>MN38+IY0j3R!A#kB-2xY@`4yQ0pw#~T zT)b{_zqGvI!hf9-h5tImbEu?tNmriUmnl>EXPKMrH|ZgBRl{_yl!9xKA2&>QI=Zwi+AqBlcZ*gIQ}QMi-ihKV^wqhmQn0r4E85N`i^Qmw#s z9@_;fzwE-EOcowneTTs3X$0P4H0J`A>PJe5s67C1zj;I*9bNnYyK4gaR{5vSw`C5g zQJz;fb$hX#T}aK8T_{Jj&B=h#@#2l;Axmu-BIKm*AV1>^%yhFWx1;$j#=u7BH{1BA z{QQPDzjDd1d_sOrdx63qrI=Hu0{O0!l+*^Gv7APx(6_Ct9RW~`xpwF z?bPnfr%2!*<|>t@rKN#M%pI*ss5M@}aM;X^nQWuXC8*pCph$^%I+Z?2D*ZP>)L`^D ziT-nvD=<|*wZNQ70qUn>UWGbv{Zxmb)c6Y`tb`;{2@z?>V;?}3I3D{zFoE>JgvbXI zBOgkLd?7encVx0ak=wyo1)?f^HT7b@t;ORK@*%<1xao|fa;7dU+E(Rv)UHU5; z>VC$-KZ}EZ=E44H9Q@Nb*fw5>!(RyUwCE&PPNPv&DXqD?XnXpDd>cHTaW%hab6!3Q zl+iGmHrcxh!5dYsxqzfm{u}?ZdsoTVZ86xBIe=L61{G}RBk)EiiNY7_Xq~|-P z&C0hc(Qp1M8Rx}BdcI>KJ>O@F^xX*}{YLoSc7;)Aq8_0lR6kR=K1kknMdTcRZcgNr z{rRb3&xNHQypO)H?02fODWN*olE-?fPEl>G`X8!OtG2F#V#BrEaXw%!ElA~hvjM>1 z;7+{E2A0mT&!WgWIQS8lnZ1LtQ*}O_%gpK`k0R^fpuWtkE^-uEIR`G%cbTL5F0*IQ z)nn}$l$z0ZnY{aoB5QRKmzkr9mzmWv8&6PV9Zl%_Tdy#vKy`#a{%fXKTdpvg1OEW9 z%+vV+=7qhTU$ua`=?Y`r@+%Bxj@RbJ2MW-<9SOLXg4=wBv3~idNcM6MD!{zq1k^C7 zJ=41~tKjAz7{t}g2KXw^VntUQ8E!57ZRR#W>q3p>R`c9LL*&uBawgk7)2+>Op>^bf zW@xNt)j!BCV1^+kQxGi)7l*E8xDyx0%s{rOp87H?kW0%H#@X?S$rQNjhnsx-p)j+IgkPQn21ENKs@D5bP2|6 z8&ghPLL4S?OF-I~B7FZ=kSLz!yTE@>w3c*HbXz*rZ@c}Iv-l-`rzRdn^H2(SOOkom zFWoG%_U@e7kq^F}lWA8^b&5%=I&9ToNaU3DcE6{rC0G&ll&Qn$JnR@889{AOdJ_iJ zxvglQ>wIXr!_$M^h`O4mppCmH868&gC=qfRdU!f%1WJ<4C4l-e02T5B7+7$-n}ORJ zSNqM~E>>_#Zse1HZscG`j_1Cpq3Uqt-iBP)| z5om;8GuMt^j(e2#qPoYc!(+XeEjqf#OjWzrSVPJjl#Sr-HPR3}0{S>38VFWqCn!~_ zEtGBBwMJ$3P2{E!so&%$*&jR?Z4A7R7x?YaJL#w;Ebxb3nU!)5mY4p}&t|230*gz3 z=ohn6O4LHXKXl*hlv*si{h@njr!=dD0e|QNE2T{>H2tAxGExTA!b$$nZ)c?JRtqQl zLvN?2T&5PL_(Si_NV!@qO!bG}oxxq>!Zd&A=QDX=Y2g%q=))N)UsVgI`a}1hKQrYX zwJ_Zu`u@z6d)2~e{?J1+Qyx(Zr~5;HOi%fVTA1Mvy*g72%V+pQFIi$acCNgIJ8R9A z|E`8Jwo<-L=Uu|U;09)me4eXjWhV(T;E@hAt-|L?zedxlzXLwP=kXe+KZs9= z{*I;-U_cw$`5v7%e4a4Tk>=UA(A&t*y)@ppxt_jSi@cc@0{8@ynn>O#+oN3VcnyeZ zXr$!R3qprRv9Y5Q*rPmiC!Ju;SW1QN1hr!+>vSimALDviI>GueJEc?if(>IS!@BVs z$I#uE#%~@=v1$C2t8~L}9ZUH%4WDw8ZtHDhDYxpT-ZGYQms;5F4;>tp_Ec-GaCi8^ zt7@nI>KKmcs2r$2_|Yum7sm!1#8sjfJ61;W7BXkBD-*oP8;t0=V;r`biEp;@W<`2O zW+dlZIZJ%2@YDBtV-U?gM~8oFx^<`GjcqP`wx-K4axQ$91%Q4|-Kh4>cAP0mv@{62 zk&z_U%R9L>;c@NRma5JoD)OCg<>byLNb~g-E}UzgG$O?EExLuj{T3J9RcQt09u5bp z(gaG+EaTP{igd^`1zIf@$oe;vNGGU&LAaF&D=?E4O_Q77bP|G`Nng{%nR9TDf~y%| z0zo~ZDl+r+#<_)}jx3Cfu^d8{n7!HOyDZou{6v2AZ7e9L8{{3S7A+_wR)Letue=8` z`)RJ~jy*}k^uARgrP_3Bb>WW#u+;4j#K@*|vs!}|^?8hfni?4eH8l%77@1(K1LK6U zyE=%oQuVvFp6RXT^|8Y;wT;p)$>3ec=F9atrhmM($`wE(f+(VYmN(_&o+n>zpCg>?faL@-qWZ8Fe z7O$-3E`I{~HyrXw3FK^m9P%ro zME-McRd!jH75Jozfk?+ww&sL7-&dyE=K1Az?Jtyb1Aj}<6P`DPJE*0hvPo)JDi)7( z`H3n6JF$L-`r6UOp*1qfccoI&HRT27gX-uF@*!3{a%@I~bhg#yLbOPw1-Hpk&^C|L zysXSf_Pa~w*tf zjQNZm%m$k{Uri~uafFC=e;X8Ij!*~4Bb-F&GaZQ)) zuRDgtP1C(2y8HwKzI;pi`xL`2Wr>GZhG)4mJlp3Ln7bLC?eoN|!3FN{Y@f#@%Fb=K z2*1(cseusEulKIhBTz$dp*GJ7%wW)+F9WgMGVgY#hbo#!&kr?vewePuZcRDFGDDcZ zlGEjtk>~EqnLkBlEj@1_#IMwf8SE2wO7jo2q;MIfPS72svM~hztJ*Wb?Vj~7MCP1- z{`pA$q6B$xKvg1xRq$8N-<|;;+kyel@E@2b4XOX*j;Ap&Ncw79(i=dYTEH0$zvBBV z*gTDHYUDDxL#2nmF8;dt8{lt{zg3a$CE;;HRG)DX8iPEnAxsn7m*EC1EK0|v zV$fAu$__`wxL->tEsi=y4Vx>h2PNoUnf)qDe>*23|8CsPEr5QUja;&OsVY*1)J^pp z713z?#$k`KAL(+QFH*cZHLA?a#1=AY48)d<&_n2dDc@rjUZQt|hIjCeaC=uM68!7D z<)#}Inex|p%OY3)b>5WaL%M}^yRfKkq~jlMADqz!2X9c4&(c2Z1ePtp)#qpV)ek_G zc0`WcnKNr`c$tM)k{!ER#c$K7mf$+rz_!bMA6x9w4w=n6n8OdZOZ{n+l+CKDL%dP7 z6T{R^5+W26j)WtNt(5oj#_1V{u0@U+esjqz`*)LNIN%@X2@C_Bulu;&#$^6tL|&|w z?ekPAT{cjug8dcVo(oiWI10djdr39FCA$F7w->PmW2a?KQW#T<)1N^jBlKxF^xc~; zf!puopOS@jR>^ht!oB=bj6vfa{`AztKSwyxSG$cn^(Syb`QqR2<}%uzznf1IYrW_I zM*zqlKrp3!{(`A(nvWL`$xhQ7GCpI-%`P65R&cmEHnM+X&FUE0&={=*duO zMG2la!y_dQ5H8#d-!vy=D9xZqoAl$I^vHiXK)CSI**;H(A)0xF49PT3_!ub(Fci!1 zXA?^p`o1#&$kamz%?PxiScVRrC%=)4R0B`OGQ59c8^WS)!<)SsMu88; zGIZ!X8G^4{t2CCM&7dxgL*1%*OVqKw<2RaiC?P}W0C-C1(0MX^i|B?^6ABmwN&#(W z!gyn18%8sP<9L-uf$LvR7mE#O1ZVQ5EZsGEtG!W{8tSQ-Z= z5PC8^35_&i!l;M>PsTF*g~;V+sZm>|)W20ihtQKDg+Fstcz`aW{~ax1w15x7q=L51 zo8NQFH1UZHy!0mGI@jgc5!Qnj_FY70NxcV;ky$v z3=!Q1+FjlPN>vH)9y?Y-hj2oMn%J8m4C+og63g&`lnG6Ek__@| zAgM2LR@1_{fli^N9M2^X#+g@#;jDH#dq*D^QT1F}P!x3byV@_y2!-=F3zL1N1&W(G-clqVQkKdLL@RG4}e>(3E>xt&?LFx`BNS{+*{r~9?;Y0dzrIe*V-&VWA6sdGmk=+*r=-x=j^)nkum8$$9fJtORWR7KJ@;E+ok)hWC~kAnZE>UmQnq`7Y_z1-5w?{8Z%|BS8RV`P?Pt8%=WTc63kimI5H~GYgkX`djzC=L6Q<;)Z^r0vy>M z!Uv9v$ha7d(#S=YB$W9@Ntur?5r#$nN$})utICX6-Cd;~o?8mH6$_eXeHt$Bn5xuQ zh1-Y4V@_9j&RhB8HLli6#R9tHgO%3x%Djk^@QMYRw_gUA1%PZ&qrqKe0P(*hfOOSa z{xWX^2wrqPxQ+>Qp{InCt{|;iibKe`JBd7a_MBl2O?;}$gxNCmDImHl2d5+4RAIjS{e>3 zx8=5W3=Z$W`VJ0T%WuQkpA+%8kwGSMD#IHNGQ>rXxp(09+e+{@QF6lTby#~CVc`+9 z2g~uQ)LMS(4sZ!_QX>ghW)zr1D6CXw*eDh7+!lUCIBVCQ6*$X51IQbGfdFX$XRHiM zsz=Jqi!osRTQ#=DceWb)S1vB&6~?Volc9cg$h$6v4}KX_n@)GKDLm(Nve=iNCK_FdiS`cLo1COualYP?ynJen@u?O9> z!2BGLI_6r|h#+@vUnN^x)?Pa(b@zM5L|wk~p?8*-68bg&&9#KRulvOEY1qA z6~(~6kAr!wC{_ znYuGdXH&tZSqOHim;GI=_(&Y_Ots4_2eA&N$SYEBM8b$%@l?*zCL|3G5`W#K*%SC<=1XR(4U-oQs*M5*YBq zu175BLK}~C7>fK?dm?@xa^+P@)h*I~vFw*;twDO|DX%qd1?w0d_vPiEte0m2V@vY; zDKT%vcsYM(O3^(AN&rNebB(+C6bCZt{OVbU_Z6&#GtGZgH{jsYsG38}tCLEu_2KQ) zCr;A;Fr|opADCX4ZrnF@z6$(Enf8y=-6ewkD!$+O$M-4^fPq-35sL)Tci&WzC1#ZA{AzZks%*t(i2s^I zggS0)OaG8SIHc5Ce$$IRC~wdy2|Ily%F__WSGMAWDf$L z%)K3x+33x-a1*_UZy?6lOg_wYm>uznD2)Du#yc;QJU8I(7HV zbUT)OAj#)&=ovQ6v{6ezYv#)|#sc&;e@RpE{@6gUoh`TQ9DCiJ9 z>`h~iX(?zC3OF0j54PdNxqx6K@7bIzn>ui}qMHVA?Cm&*Z2^z2^fa|Rj=Uhgc*pY< z2;yy*sNfzyX>*h@p6{vZFjZZD!f2hpfjU0LaHyfqkvjiXV2)Y|Ozs~XKQfqe-7 zInX$P)03QlBjt)Fo`T<-=D3zl zbLd~|2GBD>*K6GX8YZ5SHsG7x{qM@l)w|gnNT95uec8Ey-={K1iDVl6g;j(qs(2@k zyDJWEnUq(NgS&`|)Sx{V-vogXo)cHWiXgtWCgqjp8295nqC&tDwu{`bC--)8Yc#fG zc92UMGwDj!NI4g}Q#H)DW*I!NvuE*Zs9!bAm->5&J;bsA;6d?0aFrL#VrS3wg7lV# zM@I!8)qkVFJV`Ay@-mlYe#C4|>sD0z(R`89hOrCyrxBHaG1^s##qbqk zRCQ7eN0ScX{RzajP}@R18m0b$TDH_2Hh7Ti0vYp?(6EybTy(_~YDmUi;Dr1G!z`x4 zLXlxUND`y5Bp!_M@}Kb}_9xr8M|9JOauImYP2)1^U_;bAuW(WQ~6oDVNW&G@wr9v+j>lJBM+x$dQ0<+(WXL&nk z%23NoWKyN?KpU$LN#sJYR?*G7%pXfbG_hg@-k#KlzLT+vO$F zN&ZHGA(~j=h9sxJSI2lgn!u}V#R|MX`F3Zuix;_^eR)EWmx(2eE^=XVtjKa)87uO- zN!}u_n>4Y=>o~NJHZg5uPmR{M*2I;1{sNgw^&XAowKp-Z7{}`-ox$-1to1_tl0(eu zct^6cI@15-p{l@B$@gSx#byn#)!G5QBI=Oa(tqzJvVz?(r9DCi-!Rof1kJbNL}&2u zx@W5VY3>$gE7ft{D*io~t5j!vYAj}Iw9hg(;u@8i(F(LHvoUdE6j*Fl^ay*;TH7R- zO}ulV)Nevc{f=DH5n3zXDdFFeYY~YNgiCxcBR(R-3iyW_Y&-BD3jE1{z@H4n(Vq+e zeoTWO^MD@{@UL|$zxE{lYf0oS4Svf5eoMb1_gYd>*0byy78$Q4A%&k#lDtkQ+40Oy zd$sl+pMD7?I(XbzW1Z_Wzkmx3+pVDYk_EUd0QfP@Pj~`9 z(Xh+UxlG2p;l~00InT`Y?ExVCY=WQNnx9AJ$yc;~b}u3-@GAU-WBmASnR=-S| z)!nrA(YS3VjK<}w0Zv7vSwS4`EYL?>f_zvn`iQrvj&^wuvwoQ@5&Wwa3Om|8qRJr2 zR92K5bx;p-uJkj0&DGd>lvl{w-aOSl!6!zIV!YF=eGiulg{mDONUHq94VLH%HseX- zWe1B{?P*u$Z=R}WwRA1R>j2d0dUDbsnT$y+ItvpSpMF6LF3BWel7I^yP1o72B|F%p zH)CR)y`2(to-j6+T}nk{6h!`M+R_~R>5LA*9aB3dcK}^ez=gFGjAz95EdCyFI*~jZ z_CvuzGG)^`zv+ijYM9h z6O%Z*V=9*&_gq=6;}{u>t21;YWB+OSa;HYQBi((l6;@SgMkfXOaWn5l07PpzL4mvr zlm@;IlyNt5I=o?Ddo|ka#Nx7;k@PH9q<5Rnj8|TKK zTGq;NC2AL9z8IdTlLn~iBoRB)h}W@dX(wAcUMc^oJ+RVy0*~q!1Ki6dkTrvj*U}yw zoMG@5rhXl@rQI|6t8Pg4)-+GUdPZH-qSTX6$iSba_SINb3O(^f#LLUC-NURUN3Y9#`glA3-Q|U_f^u zMi;M$Us^qs%|OV0qS^Tpfwm=R1Rq<(7dxho`xoOdArK z)y6;aZxY>y4VP?|WPyA#&0QelmGZQ;1N8CZMn%bIAov{w4K@_)a-LPS6=+Gt|Fga$ z_eQl9x09ua(CFGfZ3(R!1G`NNa87I(QlIT z90I_xJ4_mJxIRYE{wjFVFXh%0hYq8L4?B%i7H52J_&rprjtk4p**8P87!M(mQanku zXDJy+C)@^09bVKh_20qy7f`#2kv{ygAF$OSiz)VqhxN4n#q;v2QduiH~IP@VWklIR}{8Yirb-_OW(H@m;dl!&?tzsw8^$bAui=2B#e@CA95KFchShqdY| zNHRE-B!?KNpkIKaOx|bhmxv6EgDx&mgU5}6Y*i{pMyi4LLhCAc1)Ez69y?bs3w*fbo*8}8OZs`K^YSy$pOSO*u+IFpDZ|_-Z<;L~v*R!bFVOPI?Z9C;| zY)8M|4oeYT{rdIoEQ!_a#ISHdu9w4VcRAD?jKe^6?QqJsXyvbNb6n0yEB{=;*7?$& z)wQ}ke}BRBqIl@F>4gbu7JEr&cX;ho@eXwLC6tVU$n0c|>Hw2R0ZL((p{sQqDihI?qK z$Qt~sD|dg`!~8y&-_1z%RiIMld3f*=)^DdMaid= zFA2*ak&Kk_UgYtX{7`?xENZ}+5tul5!Bq7fH#!2W$m&1*(bl-cZH-G3TH})WT5ZN@ z4IL0#r!{o2MD;tZaf!4>*%lu-EHjr-uR=p(Zrq{Jw_*%!s_l>%{Q#XJ&yD z6|#N*K@FUV?*a|u*pj3G3%Cp{%-&7fWQC{0o27OQQYw>g)6)CXtcM zkQvF}H7SFtRQ=vg-9V?Vxz1=_E?!hW%VDU~sr%hd-S2ejk+8ft->*A0|LRUX;_1|{ z=QLEPuH#0n!E~iK=~O)EuI@2TWeC(Vt9b4ER0h+%EtWCPC+$$B?$T%S^`FE^Pw2II z^Hpl}y^(6)T}DGiOboNkQS}V~dd0AUqv&W5x+4~EbW1j0CY#~@7*N_%_2p~rn{+g5 z&Rr6=mxeyA8Vam>168%^ew?JV=8M)sLxH|$5WhBN9dBj}wpbP3MLbDp=xBJB8tPX& zWF3g27xLzs><~tS{7PovJC~36 zNi~saNj95DS>#$Po;E)3ku`2E1Gu_hT*!@bA)jX0p9jYZV-|&}bI_WdN)QBHqnnnLbwt^C0%ugWvfPnBSLqFy<$q^bw*MMTW+U;pgwGp*THjFS*VWN)u+L`h($;we);tt9Vi2tJxWEv-k=(W6fxaC* zBKPiy{9AkeMfQ%&TrsV4iIEedU)sLTQ{ZM;I5eZQ@^=)Yp;W2cVZm%wm%okBJ3|lo zzb0|5GDF1y_xZVap$gsjQ+`=O-N3#6LJ8PW(n9m!J(RCO8OMFiU&w58Xoi&T?c{|Q z#R8|D7fBp0LolRT;Bq*%FZHKz`Q#^Y2*|I?<*;Mq9OqI1HabI5HeCdVO*i1M86zz; ziww%=hFvaWA>ncuy=vjI(s4g|Nx9KlX>6^OrNxOlo&1hO$<3V+uC$G|N;xRjKF(y$ zh@;(JQh8fEB>KeQaiAPSA(I4z)!r_&jf&Vit*r7EyMYqqD0Zi2Y&xM9x^L-uTn+efoR zh6e1s9=i?CFnF?=#2i-f<%RymRR_sglH0jKe z5s+flrJk98iL~Q&Mp^0sA|_4Y0TzD!`l8|D+j1U`eD8aUr$;WDmY25esX49S4py|J z90BDtsE8EGT!C9&HCi!SR<^&YzCN+|W`P*2sN^NE!3wz@|D>!j73cc1o|*%MPt}Te zcd3YYeT&p3#|_6-dmqVbF+ zwIYFcgsofTQ&y8Ool*{DHq?5DMJLoPwY}L%tesDhu`DdIcw7aPO^*0^kq4b?la*n- z#)Hm0`O%atam$w4@kUi`AGP9*kp8y(&eRCp86^HP=`*UfA2;wwwE*qk;3sY`IidDe zsPPJYm4g>xW~c~EgP#U;|%3UNWeF*FVa zga$y2?1v6;+yOe7XcYo*B(o1ceDs{YWO>$N1C*9SM{qZ1P>EzoecT|@AwhNa%w9WEDvW5?{M zWYHE5wkAo0(-+zjB#Uln`ZKppOQ$brMB=DQ7!zBxllzLB})RCH6HYUxwWeX6lf)%PW!6$Wlm<`+;jdVr_f z=kjly#P-sF#!HZ%&eMpG*iFZc_8EVMl_%f}LRh*~?<9zDTH(@!Rv4!gEys-wnR4d# zbxsv8g+_+twQ6XEwN06&dZ8X#p}T<{7g=10UK*AKP*dpSfMO7U@u#TSRFCTkRy7Elc~e z3rXhF9ECC0h`r2)rG@D0)Gi)1@b1D{OxCaw8WlCwo!k*@St`9BUD{>7Jpkk;q&dv~ znx3Y?C%AWlnB7MvGiF<@sLGd5gA5cI9yxk(LF#3z+AmdSD zodLLIsb&65mU}^GcK#h6x$=ED3*od@KIR&i-yo5~!jn^ZSv*6UmxIug-f3p@{gzTPCX|+aoiuH@#jK;!3*Hf&)!<3GU+Yc(Hi?r( zasJem4n$rCk>%5+dCkwE>gRMH?+;4mY9oKm6Z-hm89V5mjhxF&E`X);kThg+kRdGH zxnr`#xxHD=57a2=eVGH<8|cih4>-$}vmEx7WLiH}<_qd`hw(V6XRzmuTw1_!e9B}M z1!jfmlhFVeoE}Lya(sXOLLa~1*q^`3j>cQLICV=Lm%HF$!*Qdufa7y@5SHbbha(+Q z1uWh3B_HbWc?ZSQ#*zO@xE$II?Sboz!R%fN@X`+F3@<(*{kmWe2>Y)y>{>&P4VN>i z?&24pU+756>?U>0hi<5s0+yc6Fs)f3Ks}=Fkz@Pz6?Yn!^f{uEWsY&W-@byu77i2@ z6nT8<9i@Yv|Rtri#HE|dc2^V=*sJjvMMg+RhJh*80K8+`UpzOv!`6HUdpNf zxB7acr808!mlw}oy2dI05sjy65<*(uy+&eAs3+4_3lFO!)4#NMcFG^ET0-^L8>NxM zw=OOSoSqNTP-Oe9i)Y(E%;I}9{eyE^{^C_8mxw>eUMtD8O_jiSLNs8!D7(jDr4rEj z>kn?WAgeoWtj`<)?@5juJ|Myw+8fiXKPhaam$fP+Y0@_xOUi85V-2QiMP(}Q8NLHu8@ zCBIlcxr^}%EM@hBzB)cCcAAaL6lbHJK zwDK6>H~s~9FvPQUGOKJ&3R>5=|HS=qO^UIm21Tm(4eoi__wF}mOLlnO)G?CQmr(eX z_~)H?-HEw{5g0vczo`LlO>dXo|E%C@&tS*;j zn}A-lcUrm@^`cGe_3oVEf@4$0PO)T6m@-_9_>|!SWXiC`jjIgpofh11g3n*=#G%~| ztM#e%nbk1*Cl=Jl_;nbqPqldKOdXh9V4h}(9GEPfrbc~OJcJVQfyu_=xey9Jw^@Pj z8*CpI6>sBJOo@>#YJI9LdxU!Dfaa7x9&7#=?;jn&hE`DJ5;dC8tNs``29rY)C!1IO z=KJKa7L_iY2U}BEjA!v0SwthvCgbj6yFB&GJUI6&j>65q2WvH^$P*bkog4$3-#6Y~ zR9xX^st;D(A~D^@Ge>5-m1L~IY`T*>$YtxLHd4R6nIqZP$S6mY_%~ouzyAyrLvHg{ zv3u{$)Xo34pRRV31f^P^Pj@6Ish=3+b&}yM`YT^)0k$a`@othBVY;b26~OGVqc^-G zQhhjo(UeUxA??h*6~b%w;QulyXp7IiE#4LN&E(oXRdw9hZE)_Veh$GU{F;_Jy2z+L zZs-RPHuoZ|WWAXzc&bw7LgT$8qqZ;I`0q(ZDL?N9jQzdo#_OrZ-d07~GatiEd6b)K zhnqvN0XJ(aH8-Qe%_a{wNV@yUVWh1!=_DDv&c*x~zvdKHjFGklmY=JWoo&v=`AFMD z=X878#4Fv-Hr9f}ZPEGNy)@s`#(HqL%~S5}WYj%nZ}xvuiih@bm&-4z6;V1F9KjBe zu)Piin?}NWc2tJP!yS=FF3X>8WJO-OEdM+^Jf#3v`ZuWX6uG(nF4m@o4{658D&B)( zW_XHmjurSer#qcixTtvC1sVGSmibjIKfWR6%AFSDZBDxShS)0WfD=MwbwcJX#)0Dg zfRh}8x$LlVH9vhe2OFKj)UNg}=Ox>b!7wJbU3LPMn?B*-!&c@4e#h29tsT( zcZA3B?7lb@Y6^FEg&KDac8!IG!uvw<053_6jCOVQb&QAG2fNtMP_3P)YWn#d$S$ty za5#~G9lThKb%0{!!@oc0EwF64?dqPwDN}`kx<;o3$THU^?E%P11pgx5B55Oao9lg% z;++$WTi8M#mIjhB)-Bh+#(|l|gKpKiFu(DONyYUYnc2FEV~Ax7V+Gbm#WO#ZpVvo9 z>_4SSR)yxtwkDdWm5X19zM*hW*DBeRIuVkx;Ct&)qN8MG3neyMffBQsBC^r`c2eZX zr}7JJ0^aOmoPTs~?0CadEPQWx`sk(f(Y6I;1cN1i5T`+y{#>AbqPA4# z1C9Mht#7HEI}C>2^RWL!&7f_;3}go@G&UWJ5QgQJN=nkdKsJ))1;oZe6$OB$%7xs| zG;*#VfWuKp^5}%4?F;HM7cxy07qOE7#sIl4{OuVwcMjJQ>9{S&Vf%vMx=fKYw=XDh zV5(__+Q?buLn>t#2cyCD9~u354nurNCMH?FYX-V1i5#yoFKoNv}%5`p77n^d|zOn zGWW$%Y>mV4h?C6s#g-g$Q{AwzCQz&0IGjtX{eViO@*4GU?AzZ}IXuh*^4h=7wIEve z8F-K3Qh$v;+2M*%GY}0GIG$P7IA=nq{5F@Aco}t~U-iq~D6B+-+=;{k@r#jYw0kiU z4JKTS#FLRFKZ;`Bs}ppkBXY8xnA6FgtWGC$87OywF-}e=CuDUx`6IG&t{O|C`MsU& zUO191GN6;y+sRr)aRau#H;ghNo128n?_UsG=fgVK@?A)$ACib-Q8y2~)4V_)VD&%IyYqSv6Zyc^k!ahyLy4 zndo>|&DO1P$}eE|Glu-Ch6>rM{uodi)JfqFsfbK&0NZSW z*6vtQUcfbp`V13$Bflbr;KXNzGm(fe;)D#oL<)$8-VKN_5DmSa8lV5RB`sD(O$OUq zHIpqEk6@^{^P_w1tLPttK6Is|n z6H(U_A+n@I+^UKqZ8^Ecb~N=4^CMEfxip^oO*hV!)IEt}kxy6sKdQ;|jKdUN1Zq&IB@Z#-V;LS$a2iWXSL;&@J_izQZSDCo~! zx?I;#^SZK)73fR`DrM=U)`9wuV6N(v`Z} zn%2}bc&cpN)2C<~*;7f|to&PpA)yWRC~^CTF7oeSzcpG-%`@XgPGIzsgrTNBs)u+} zm!YN`X~)OQeow0= zRLK9&8SWzoX73_t6ld7lXO7#$e|uD)6DK~Cw&HKc>WroIt*N=ombZpSyCVNNKi8U~ z_hNfdLcjythRDnFbLYp#QtdhMZgTc98|z~4M-vS%U)DN;yzdz@hZg=%$vCBsc27I+ zpip?mi0;K7ewdDErM(oSqj|#ebFw5I3CM-CMIo(~IXB&SR?3%nVaKh2XOw>+d8P4WLMLGqX6B}G5{ z#zh9zM;XV9D+^Y`&jv2WoVu%~vc}!IOE(TtJrZ)NZf#{WBvm&Wi}P09w&Wqw-BsM= zlRA4Wp97>HBQIhwG{fED=3jQpsr%k+|60{WUkKfAWo<)LS8IEXy=Y{u>oqP(rBNmo zr1QaPZ$ob;A*0Xair@Jho1E@~uW1fhl{5{ z>7&GyUaEz9l8T|8JnguH`d-spqaVtChJl2$IjVb*wp!CGrvaxiUmi>?khib~Q!Q1N zmRlR%u`4{fPd|_4f>w96j|$B80@sE|J9@o6oFH8S2c)Xtj;4wkO`4T4%`BN|O!H3j7;q#y~YL z;o!KBqzUQGnOms@1?ely-2;^igr6p%1vj^rVuzMpFy4zc+6>S2=&sHY+G@CROh1|Z z`D_jb86)QT>L@POhAXA9I#2s^S1h}LJr57Is)}AKh{uoNN)q8+hpb(ld~2|${lh_3 z)_Vx;My15b<^SS0-T0%QGL`k_=5rTr_i)Y$RwL+kMY zw$>{=^iaqi<`U_Vxhu}IKXE?OrUUXDPo?EGEM{NTQ>=Gm4PA-K)=g3}{wtM#_L0>< zT6N|LzQ4^?{|w#Xo8}dm`#Jq=nkP@Su4DnIWo3qNuRnUmC_X&sA8EmHv-t2r-oVtc z(qzSUG($D-$+@36|GZ@!D$>p!STAz?7w#Acb&qmPh#t>C zS|oF6?z|2Mb>+&X%NTgn zpzx(*QT?%kYce%wyzj?Rm%dl#BG7Z*{l`he)H?U=sG_MOR5<1^D(jDvLk=kTJ1@n=v`%H&BB90(si7S+Q5q9iD-dPKf2=a|V=pLIgJNabKpRY8#8 zC9J}za#Kl%ju{wv9qf^{-F>MpZvbtq3Bav+olzC75Of3GhpsnTavW`*WL|BJM%4LQdGb+vK65+4f$_xu<7!K^|#N_oGfAX_s-h z4%8`S3a{<8pbza&W$7%w2Efc8-R7hIfQ|yTYA%76uG7^77RyXXbkVV_hA)M*GH5 z80zls>u~0IL5=)$SuT(BX(Hl6QM?#wB>lWx>mmoCta;;_^^G-Kt13fHRTa&RH5<3Y z@QmCjDAdI6zn)RSQlhg6pU0-&Ng;-_e)Z~_3Qh=I91nF_b=A7F!7J8Ro)y2Las9^i z73=HIM$^(<@21tKOBl<(y0IqCpeOVCnzHhG#L+PTxnovH`IQX$jFE1 z=Vk_+1R`%;yV9B*ql;YpiQG9ZZyn*mL4>Qbq&?mn9*@C8d%`#%iZl-(QHm(mj@t&yi;r392-p$2$TwA;Byii4Ce=&zHP8l_1e0bOq^E@yS zcqx)6J&n4fYa9`Hzyp?YOOyw+Hr$Ww(AN=4fRc6Z@Gj2rb)DIIc&$pn_{5TgU_~zt z)-^gYl>$#rixUXk%2;;ZBJV6yUsj%&gm7GA4-W1c>f6CRpC`FdG8`UV)Y045G0?Tc z+eet_YR*Qnv9G&3yaTCMov+R}f5H2d=VLa3Byzq?s!BRX;C{9<%)nYeIUo5XciDNZ zEs>rJa%W{8Mh?-SSUOrX0Td}CKJ|RewMDKGK==Y$?V}0&xzYW}s!%jF$v&0{YqhHl**l zl;*KiM=;fmtgOIq@PXh?(x@p%huJx2L{9 zENC!;Q}t3iB+=_iTU`HkHjtg#cg%2~HJ%W=4vACkiN$&{vfYeGv4SjHJo2+zN4^bh z>ytiDWO_QMM*M0SGNr*4B3oQ_jRw>;;(iV`YgLUFQPtSi7L`?9RgKLeNN)40YLt`9 zu4Bg9PplyMmndEzzuy+EiOt3G@A@k1+oCo>h<|nHJ{{s;LX>oueN3w#{~$?fVgte@ z$Y;FotPay?)orcQ@@TM>k;Ufr9jr8nWFVkfFq)w(ymq zd$qJ?Pk&M=F()~9tmT*D^E%^8ll5R~u3CIO7`$qYm#iwhfYulA%cfbj*jcA%6X$kO z$wM`g-e_S@`UNJ&7WH!tH61XAhm{$k6vDP)EhAN4BtKXg#61$PL~^_{S}2?8`zER8 zV$1AQpCi)IwnB+)My7Oozj>w7zUl>4eAR<#m1JLuIi2M%Vr|+_LTJeN3mNeEcRa?c znYO=B_U$)OeCugtK7~is%1rVi47u9agDT}xKlW*Y_1|pzd#p6WOf}vPR%x`J321Ch z^iY&ys=bAtDy^l^+kNY(4AH6eYhFv9-Km{WIVApt8 zd^V_;jpX|1Msl@`|9bEE-?=zezYH_V6bqut0XKH*!R%s&>=)Sx|G?p96ri&J>}ELF ztx_9r**^1rdhTvLW;bOoegTJ4i_KbAi%r>R+TNkeJM^K|CJvXC@j3^LGCVEuHX$IC zf;g9O2WJ!qO}|4r^)Inh#IO#va?nl2yFKGDl|i6fbJsWeL!UA!`EuHU@RLlI7I(kzk0k!j( zu|OUL_fQC&lVt2r{9I$~>#$l?tKz(kN_DNwF?@U_7t%xl7b#>me z5e9U9U2q*PEWW{Dt*=7|t4?bvPHW8YE_;JZG&D;?Cys-_942*_Zl+))KE3PG`WiFz z>5ILwPP84j)KT+m>n1Fr8|zr~LPq<1UIZS63&qFo!pT zOGsvO_MiC!4Uws?Za(^tb(|0{X*vOPfpyI_+0!^4TR6wc-a(JB(fiNv9lepNLvJyK zj@X!i8nR^?K3xMikIlfNGo*nGA95$5%@XoVn`^1~>PhP+4^r{Z!U%lGTh@CPuM;?Z z&G|5wiRoMQBrTZ9Lc}_}aSpz9swXYbT5ao4FqDuUHPMeB;by9WzPWLZwwsKR7YPER zZg*b47zeuF9P7z9qJ?7!gq*ig+m#uQ_?!sL?jDf`KQ_*hT7Ay9M!?P|$Zqny5#XXI zPL~}F=WF8}*B^yLB>pIzuZJUdycWu`t5G*RhePQWGGOxOUr!I+C?oPS##Y}5L-M{) zPgKhVIW~N$I&}%?J;#j7%xRSKxtWH#-!r=q;mj^=RjOCdE?6HF+32s*gf&Itv26=} zgdR@9Vt~48W75(7ixBFufK_XY3e0bV$&4Yh&R6xUv$ja}>shDpER>mo%jBcyp0(We zw<*;7`Nf_%wup+jy6rRi;Pe_k`R~$%&_0UPQPrFNAuXh4;A@m0e7{${$sav;EU$of zOm5&;bG1_4bSP5-eWq1l1%{M4q&}CmTL_|Hck+>->N;j@S#YcBrZ(^{oo5B`GNz{o zsa4e%P@Tt&^#v?E>XSffBx}Qgn$>jLJ~09{!c}wm(p8IRhrE~*o5)C2!A!f)TblP$ zwo@FnS|252+@NO3jI&(q*d#3;ApfhRC3d1&R$dP`68gOe{pgEeFemL(M?du7Y?~xh zUdRZ?-*G+`8z+5G{R;+iI^FiiJ(0u(X86oEjk|bCKo=u&%^RUP%TM|!2R5|n*bVmu zSm>R1sZtBA*U@tSO3UmPz&sAbzq;7gCO#uCyb&s20h56@4D$`+?x-)vXksb<6Y>1W zr76qPT!4ry{Fshuf5T)AN|ysvAtY{$N;9pe}gW1-lJ&ivSb z-8VQmwj{i(XAHYE2%?vS)Q7IwaI|Jc$u!zD0MA~t$Ux9J6P>h6Ta@|}9%_JbYFwDb zTek0_-84*B>$a2&Nv4dxvz*_ozKeKTvDM<@6_YqVg5k8ROiT0$n#RN9W37Y3;ZC%R z<5Qbt-5Sk$i6?7-@vL>uBDs=>YG4`|`;4(q-^*SOppw7%g(8kIa%|&f;k%XJp1-cL_kZBP{HG*T_QW1Sn2S97kNKaO6btS7r~IqqJZ(RHtZK^Imdch} zF8;WMy7<%iU$`j7)8`NUb5(lTBNfX&b^=_pmDU|hsM>Sx`C-)ur{-2ReC$LbPh69~ zD9*(bPrp+2_NPwW_sL0rJoWLaHaGHkdEKtaUDxKD8PU2KiPzaf*XCapuced8k5+y8 z#)J3YKl$S(ANi*f`CphHtEHn?-&_@0blLsqoS8tR;kx`;@#Y!2F8|kYy5Ov#dw2cw zcS?_y|Hs5Gqv=v&tn2bDiJZPZ|LaAuY#U0iF8^QOfA`+yx8yjjYj&m4GosygLe}?v zCjXjv)(;>4V`bxs|Ek;)rJX=GIhu8D~V`3q-MaRS}9Z@Dpls$s_}_xgW)xa#3YM(@9De{#9bFsnum z!kB0DY^b`cR8Q4dvY6({(da^cxqoL<#1+4@De9?0qPF~O&3meh?kYBv?okS;s@`{i zi9DRS#lRRuy+@kg;ir z=rDyyY>_fW z8?`X<{nGq7_AXc(uIf$BfTedRToJ$Qg(=){v~a_^a4<8h%jT(=vKvrlscOymEkZ*F zr+%_jm`7Q(2dWTjd%p-r)jdwg=>3X?Z{W|Z0)nuPs+Q`@UB`&jdoaj+X^*F|2sDSysPtqR*J z3McVZH`6$% zzC4j)>#MePX?YZFixsG^xZqN?w$%v4UFue~ixqs`S{G=o+Pd-kp8G8G%p^gu@BjDt z|NI!{x!bwtZs*>6&bjAA1)(3;Yn74knLU{BctY^|rD(lM6@@1)S~$_uOsQ6#z1o{&y>af10m!P!M34?)|@O9=NF5sHTuUMVpgy321-@z$Eu>qd zr6=);nl{eN1+iM>6bs=20wK(4?jLm{nN-0mOB{wJtShMMXb~DDaj~FK`Dk>_d=IgxzYn9agD&gZX!K(=km%eHizwwp zwl~$%HBToXU~%MnR?m$fj@Tbd(XL*`Hy=JEEx^kp!hn(5F|{v4$V2i~@_u1e_{ zCO(a8IzDOnK+mr!mma)#RdO&#?a1tGQgUAMC0p?O-c7!|3u@tGVq)0L?K97(a?GcN zmkGsbhcKaj2UChaM5Ex?Y@pOF`5p&rHA=cl5U0Z38+e&fydv0RCu4wQO>W_3%CAb@ z6Xiahku)3ojk(bdH+*CbfSm4Pwiud>7sNSXXMsV^*@D2qDpIp|V6MFCi(Yo}#_p z(}Tla@5yS)2e5{w=Mk?YiG&*3=UvJ>%BYp>$?F+;l}6YMBILDM5&Efgw@?~YjDasg zUtPc_SR0ny3?^g8oT)DJY=&*OZKk^IW?_@W+7m-B;z&hVRTx$qS4;!YvRNQ8BgAp+ zR&4AJwxtr%DsXr=f#sVM3$AFf1tc9?tlo{$PSKq|ReQjsRBrXgG>{bO*#y?uBCVs@ z)!4#EiyPZb1i*Yi*&dnf`5+c^lSRH6aIvzoAr~8X=!gWv_xMlpu8)&KvntR3#5YzB zrcxbG5yH~HARO0hWxOG>hCFG3kmxD36rmPdvK!>20ql236z){NxbZ%`B{hODq>CUy zvM&&(<|lgER#Q7|)J&@76&vfTl>S?A7Qkp-U!~_S3FGPguY@oKACI20o3x8n;n@oU zYe|;wwupx;B0f z-5Uga>LS40b%4^Xdd1&1r8mTuzyj(kg-9RJ%l9C?Q?0mj*8NoU_9HGfX!jGVEq)@O zEYzshB)}dN38@DUOXFdKl6eyw(|`FAqG9K4ud z{*7P`0w2^DOk=l`b8Oz$VQHtP1J8V!kTs_%OKuK@|7s!(80AZp5BP+_f8rFPTfZQL ze_9ll_S`X~4L(e1dy9i<%CRu`o|lnj(|toD!7sRrn$=2;fVY&;x_e>(zhDDpxZISc zeEa7xi*M?KO#_5SCH?_RB@71Zpkca~U}$L*jIlaC1w{saO5@-PNSQQF_5;z;x4=@8 zPLQ-0mCovT$=Myv*E6>N&6QH^CQ;ldVu^0%dl=3kAURk=MzApz>p}NaEKZ6f5=i7= z$igbdOIeXvIu+wNVf)MiQ9*^`y2a=8Rg8CnaeW@h*myR0`gEqV#exzzWdU>rX9E69 zx%>CNu}KtwjzWyLJ7CX>RF~e53o}xLamr1%_~>WM%f^iFeESCULcvuS20R;5m(q_< zWsJ)Z|0{~{3a(rB>Z2~!a}3=za1Dl(ugSl^!{HqRSbb?0*wJ%W$5M~qh8aWIcJD*3 z7Uj@BjE%iGItX&$I&`q-4g&cP4WzpM3uaT?ukjE2b4UXFGp0kqca9=q@1rVojbiMj z%rnpy)~r>lCLBLN3Awci?nZJUNrbcsE-*Q`*bmg~M4Z z()Uz5LRUd;Vz~nVQW3>zvIc3Av|nbM13VY$Jr+-v*t{{w1RtAOLJnJSnLtnhkJ(s5_E?o1vtq;36TDA$&E3HcTUro<-Fr*#K1$zt!1=*YUhoLfKwpg~9;TN*;lt8|aV9 z_Sha^J4R%C?9e#_I}EnRj)1UT4&!@Z%cf%&|L+MLzFwu7t#mvy#- z4A=q9Itd510EOpYCKRMC#FStE73|6*ntP3Sge^~&hRD++S^QhBDq9`1ND#|HyJI;& zq#U;NR5Wn7D{(OWbbObI7+05vrLjB$ITw_r0=&jghL3g37v}<-bE{-7wutZ6PeUO5ZG4g&Cd?B)OR@*_?o+T+TDC*0~sz!jf?2NMXr)h(&wK zCacVmvdQYLiI^iuB<4sN<`9@8Wq7rX&ykoT#Z|^a#_5OTlKe7NtxAfvFWD@dhp0Qj z1dw3G0}ZKC?@~=mw7b-Dfi4-iU2V%7?RIsEa_KeakCVmYP%PP&N88AYQEdAX>F-$C zvpn~(EoA0npb&akOH=}SlEE_0As9g9%2(tft{qp0ExD6%E^!_-$6F*LNOvHdQpm6g zRe_7u`eg6&cqvA($I#72MkFp*jpLV~-M`eJcK=!r%E2qY22L!c-wEO|x;L-kS|$f%?+P$)^x#RWcV)7g z`AHk=UE(deK>CdE>O~)rd70`Q?7aIdm+H$}=Nn?cSLNYsaR)zjJn-02ziVz=*Ads1 zH~u#cFaWTMPoj@3fUkv^@P^f0toRT5(!4!Z1E5CCh)k{`?V&E%0{48R$OnC?au>(q zFXS=kGr#>JSUxLW;;bbu_o-r5P;r#8yN*o2!~hjLeVTr}oy3`16PbIBv)KxB;l)dW zZ9RxYds0&LN3p{VsfZ=em!(ND3w$2t&qsx<(5bw5(3hC@TAPMLYr4TCOa;XS2VD7zbO9g=C&-U6}LgOrtN;OjCownT9=W33ha6 zCjkuBT9W%K}#xANb-=>XLYlq)GUXU_sX+FZao4YR!|;O5q(okGvL> zi)(>Sn|c2E#9LacaxOoNBTgEn(g?NYCW6+6u$dnH$xD9M#ixa%u4V6a78z`&q7<;1 z!m|GSpRXKsz4Gt0fNT2sfAoiBoo&9k4-{i~27Y-IZ7V1WyR{Dd25EZ_QrZA0i+e@zgU|YqkKY5?k4*VEj{FulU?Uj*@U(#!fqy|9 zrKOwFlqGkE_0Qfx;BkoZ{n(UGg>M-`bS0$?>wi{Th_RV|6lo!xlVgBy<~-~r&PGBc z-Ge_5hd)?Hpm!5zP z<_zMg*x?%%Xu@+zDorSOpK`yAa>r>*OerjnfHhFcwQ33%hk=d^T#qsZuOWr?6!J1p z$F5Mpwc62rgGoFI(+l9Z+zf?|M!x?ug{I0H8*-n>hyqrQL1YGO+hITOc zxsQ8cTc68!c&Og0TNaUSZ%3}w-~e%4!?lKG_%lK(s41OM21x*lel8$(;ov^%(vL9w zL_PVj<%@_ZR>DR-0=7(&_BrhP9OnJ-d58F%!?YhFkNtV%7;QV0zsY{+R0mD$N|==B zS!^eMsccX7E)l(pBQuybQSj`YQ2jMqTqVVh5o5+|!Fv!~NJ#0}=;yV{ZEsX0;!Xnh zEmesgs7nJ@O%#<$MGOYVx!o{QSHE`sa^~$$j!_-&CVF}kAc}UvV6O#vC41}`XmMd2 zuQSH6sIU$`ImQ4<8^ov1734LAcA*%F_N~&qm>3^xeekHF{L+^kdG#2ITwJSM{Y#%q z2ApzOC{fMh&8zVT>PqY8;1?(Rd|VXRvMTA*G2$m<(AUe*Dw_Z%WpN6yURFgOjA$6| zDEQLv>b%f#)b&Q`ml#I-r$8_`%?mOy$OGePke^c5xHkV+WCdJ>ofB`PrFbkPWsnoC z4~c{kkfJ@H2u(as=MEuPNQ(r=)L;td8NGD`23$6A$?~oW;DM%$hZ$QMbY$} zUxl7o0aFQhs>1to9} zn@jlvwO6FcBta8i&1L*cIu`i-#ypb!(-3rDRQZ#oyTk%xm+qhyEl#mKcK?xm0 zSHsyd7#ix$*@JSZM8LlqV`?!#Hz%)l1Z04&`a*kZdJ7o|Z&uk!FWOZLtj+wUe$1*_ zVAX@%EUF#|3Rd+PO|Ys5hY42I1PDcC)JJRKnALR2pHJ8gmx(rTndolTU>1os%p|rM z9ue(F{4kLyQiF|N-O0K-ccfm7Cg1$I>SxL6(Ja=M!9oo5NolDQuam z?s0Mf^o^l-(@G;Ub9-tQK%{*JnGt}a>vx`>m4tYD@&*a(toj55Nb$g-efm4r_XRdJ zz+5x4A<5LzHUNy?mio8_nz!&0bI&w03oN=Dgp5l*l+=26Jj~}MrLkzi=B-b0%o@W# zeFJljJg)yaX2IhC(kZf3|AS#SJTycsIw%?#X&{=<9fTYXV}9y4MZl_KYNk<+(ixvX3(leNq>eoP34+q5{9y?1&kL+}(${M8NASA{<_J5OJFaIVW zXfK5Ji@bGA~UabkyV!7*tmOGhjfo#x%FrM4Sa0t<%qhh6%)g zeAY{hqd`5i6gm{c&E#tHsN!pSUvC}#QVZn~mT%QL!WaQW&DnxL`@=?yn)nu)I6d6X zt=7VYQN{qE5$8gm2=eMk9dZ#FnCVsK+~~5G8{_@%2cUHbOG3_Cevw-p-XBYhav7C$Q^8qYqf?&jR3`1PHnYS+@Cf zu=Hzy4xPv*7*tmO8-^W;U%ws%8+gf&+ZabF2s}}!9 z{RK;?T7R7n>jy?xE%{oY@|i~A4M3go|H(`|5T`+wTmG+5I$A8oz?jK^Jj&>r$kgZr z_v|U%sB4u-fKHA$DKRKr8g5Q%=hxJia9h{f%Bl*|07x#2*ucJGHn7caG>@@&5qUc} z=-=^=(z+lB8O(OqQ8suNCh&sb-VK{{N7&xqBXX$tYhn1t~zUpK7V~5z_A&jW&2*#YzZHxcmpsA4Ls9GdA_y=A1fF-if8vl@Kkt2#~Cbx-ypKC7)o25 zP^(*d=oFdj(7WLr4)viRRt5>FJ}mTWprH>79cf0J?W@lg#^@lZCH3lPk*(g9eXtP6 zFF!^DWp>}#$Dlb>9D*LZ;O!xn5Fa2kjgAgI{C+)Xf~fx)4QB-_>7Z=Tu#t{b+mgQy z>$68XbXbN%mcu(l$C!Rc#d?H8+;Gt0khP}sJ~1HEk$RLx8nSB6Jc{46KQ>02%7*}&^ZSWiM=loi{5?jVLS z8am^RwtZ7HOdv*_TjmKc-)Kr`7cc!LU2OF5gD&Onlt!;{lwM`NEKfcHTe~{6fMSoU)h z47MAQPHbJ*7%g{9-Z;Y$rv-O`AU&mZS?E?Sb!4RKi+tICG}uqTS9n53vcA4oo+U8mxixqg zHfGLMUU&Wl{DO0?w-EUoFJNW2m(Ad2* zVFWvwpw|4{yg5jL&M+@Vnij@hxaAvykWCA1D~_<|OrVW9(CO1#sQJgy_M)w4#0+eP z5j)NRJ3qrcHNT~{u&%tm1x9M&ouN1oJek)HKa#$A!#{)Me{|Sd&lTCcBfy|h7&gBM zaOnJ^fqgAQX?wy&o@2E37W_v%=ch7*%`L8)XS#$`1)Iv)W1RMw&^%*58n~HZ9LGIo zKp}D!Y${`K;R5;y9eRT_%ovKAiSDUW^`U4C)CC$~GgxbOp||iqYWJy0uw=f^)Q$bY z&4*B=zjGT|o7V(_CEONZSG%##EH_d81;+yn;z!7w2DO33#vV%b%`gUk5@63wK(Ae0 zY)lUJ>Td&#oj|Y64x1c$&xD|{mq6SCG-AwX07UHyL_SzF8XLuoM(u1cT3q5cJvLqZo+K&eQ`Y5TqSO#ldYf z4aDH1GQZk|^Z=j!#$cLYjEDvm)&D|ULd4?n^QaT&6bA}xU_ZL0zPxIVv4XtiSm1IP z{UueT&=Jz$8?ZysBN!$SY;RlWJke1jxS=2jz5A!gA@~8uAbKUD0U82XoS&jN4KlD} z10RD`R&}NUFo77Q^W-!2-r<}O?B*2*k=ux?vD$8$e~bKhqguial?)*;GKXfAJPQj) zn}5L?MxK9q&(iPkp7rD@$Dxz2pSD(=RF{U#v71a)2C1ctF4ypvB}!wTyH zg>djyQeIOC*9ZD0SQMOxtai;1t9_WyL+p||AFuYpA-3WMiVb#G=!!SPc<|5=%l|n@ z?@LF6AO@0#*s1Y|j5r$F;|3Z9VQ9!29zhsikA@k>xuHQz>W*oqPO6pRR3g|(WhU$j zE<4Ivhr(CXSX@=E8DTdz8fXTQj|VqwLO6&c*xsHg(z;n5NziVBfo#JmE0xv%jD8Ls zs-Cl)NQD|6CN!v%LY~pB>SVE7Q^{1vZ5AksW`*h-sD=i3`(uN82KXGlDz(Tk+!2cz z4E<-CssuvQGdLFz>h<3QL(?-j7Z@5E_9wDN)iWUMG(Ce*$hw|^7CTA{0ou?rAW)i~ zfflV+YkCHV=4jB!>W|ML^@Q0Pmnd~J3$^M!H*S2l;9&TNVjPbnP8j|yPyRBOdy6!@HukBB>0FmS{P-L z;3M9vN${!Q88M=M3!SaBB)?~9JQxyu0;);y&j56o1Rr?~9HU2(;1lRkCZ93B`pO!< zx(MG-bjTqRe1bay0RV`zS^vg7J{K~iT|LdMo(NU@VWM+FO_O`$6B|I7=v<8q7o8(E zbl#ajP^$*!$n;NG^Qg<{FLaoV=4pc7{{)R72>Hw>2%JaAzc)@U!%;>^3JVwamo6P3zc{^u`@njRidtNJ0o?7O5_!8H=X5%p`wXs5pSUK^_?0zFq(+= zYe8@cozWwFr5FRFiDT7{9Lq3J924=rX9zi}uV83>Q zBt4Xo59%}(l2Ubzr_@?69+JpBYAhb%+(*9Ax!yzyrs?>Zzv4u=zx|ElnRm zc2lO$RZVuIVRB}o8ruB?dkXXh4A~7}=n@YzxN{v%OhAEX@{a7!4auGmO3d0Be029dz4agUqvh*z9CCAo35IawZ^$5>*ojnh5%z0fIVP z{~O@|J>ET<&;&JkHCX~RM+Z#5A;3dL8ps;DDVsrnRB;3inT7_~KydiT#d$(F>Opw~ zp{L0b%;*{7h><`;l#b|7{K8;_$Ro@!g7OF*1Wl}$ydmfr;t1sNYO(|Z!Uo3q8Ji{_ zVXe=o>|q{@=X-cYRm?p1YwTgfhK{Zo2HSZAPnMyqYX))rZvX*r=VlP04K#s(3FA({ zSPWew*N`!Y&>}8o$L|50Uk1?_6~?IZK%ZpB81j}-CpAvcItik25-RCp5$YsOXhGd^ z_K-Pp1i8eg+`T0uNk7{*=5iT}85k?@20L6wk$w#{Lt8rUn}7(OZTDpuQWR>PCPgtL zM6EQs{wxsEq$uYGB8;u2Nm0%XhSAAiLEvvlQECnO0JX19m8cWogsDFcJeZsDSj77M zLpT#ah(fVfJpXv$*OwLGKSUT-)8ffb8DgG(Yeq+6-50B0xr!dQOmXL{af;%etbQF;+~?T>LVBC>k>V~;zs|qjeTn+D>3Vm~log$6 znec53KR)DbxVW&kp|HHh(^OUnVKwlAhgy>>%oE>+~bX4 zp8EBp8{E^?ucvQtU#NaX?r~p~7!aKOBCiFGLtx~#UsM|QxM#|9VBouxDngaP_oz>$ z6~f9(Ydl^Mvp?VukL6kVQ)!Ue3iV!-t$((R`f#_f4OR(MgZg*koh?0{oi~=%mcTp~ z>}$bh(*$@Uti`Kj8!X_~JB7kTu@Q#OVAWs7H$D433IAPiS{uu)9=sC|(^=a+$lCxD zfA!qC<4rs&6;M*~9Dkh~N&bVgg_8+*KwbcwyW(N^sN3$r4{X=flPk%k8OXz}Z~>H9 zBEWylb`RcU_sw|40Q!=Aq5l1}W%kwMPn|w}dP+2z^<>4JZR6PX4pt2-{CzX@TsLJ& z;duB2(a zLmfg1EWP4C8{rrn2DH}nYb|f3?sfdf_{gTOYgyBFfPvDin&yZ0K0JuHt`#O5N;H{l%ne~D-4RENW zT2MzG{>a;T26D|7k^%l7Ho{cnk2Mp}?+dJGru4Xm)??`gUY816W_=#57A}JM&f~(T z%846cCLP(`p4##n4n8c0C~4s9UZ|Z2afqWI|Z{xd`@HmS9JNP+kw0H9b6w!rw z@9(UOm;&1I{)IRIAZ%1k|`GB_5YF*r103Qk%IZPA5oIsi4wJ) zPPm`qW!6mYsdr{0gM=sJ&W$#tN#YG`_jc4QsQ{40ollrZ_Vvt$U(-}sp-mNz-qI=o zXKwXBSe#&uK(~K!RpESm%Y}^PSP9+M$T7n0FwcJr2Bwu8WcwuA+nlR~nDFd4w^I0F zMRE)?qW-Y^Ay{5%Roxaooy2WWtAT$2s>54gf}O+t5^2XLy-LG zz@RB^3=)9CAenhnaX4i`G(t^rs)51`s+|Hh0X{HWBONf*uLfUrpix>P6aL_E2Xnq` zN)m*Zl1xCJvT1ex6?N*6HA{!e2M_rM#;VXM$|igoHzfeyBg(+9eNMC+Q7gnL@MMeO zY|PgHJsJZf8uK-D6Ag4>w6HN>OVW{Ni}Te^f6s=L#V7>xhcpy<%l_&aw6P`mQnpo` zY~6^p!V^zMgVLxuWt(t(Y%m_NdKLh(XT#o`X+HE~$ZIYW`eEP|6dA_kcVId=SP@OQ z_b7#$upBdVHD>7Y5^fiE#f)p6*;6v4DfyCE%@np`#*_=Co9T!A8LyB_df1AR_YtP$ zvm8@64SqIlfC+nwD@si3s2!D8T_)6KR-n?~z(@kt5Bv*aQ$egFRU`Vx;**`*lFU9t zy2fIHYU}ScS2v(6nNcCkL);EH@{q~!Y5FM_A|)|}^#Tm}ZgtMh6F`>Q zlBEYhS1HLM9Cl|rgpcAV9d^o=zKE!yF`VQ+D4ZO_i{HrZ#wT|cgH(K>GUlA?LlH^* zHQSjZV?V_dSk1}z zS22KL8i4-Y-0dW+Qcx?{`rXRuG;gZ>MaDWHw|K@}-**sOitQa6h3W@)@eJxqzQMz) zU~|VqC$O0T}%W7{md4CYDd4G<3s zviK0&wK4ZbWPml$csNBJ68N`de^3w~5PGR(J;sY|nauZ6qpV}r+YyL_50Zs5?s#bS zb+aC`2v1w^FCxiJHb@Iu0-CQT{?ST_f3%tt#b)7d8Kq~BKaDG-^eg_!i;0_syHV0e zpied7cHz>UhaN&sX}0i>1SutfAv9kLp+{&l-!fS}6rlw;=sXWl%^h?uQO`<-FHjl< zL3#LNSG2qhL$KM??RXwt|JOY5Txba5VHsw_WKe$i`o4(FuWa`4v(T#^_`tkd_kQ$& zNak0NWiEL_-s~Zg`c;ft>Qe3vG#Jaacr-(-&T5eYD0YDDNk4xBW{qAHb!wSxleBC& zLJ=xziT#3qy5>btk^3%8#SwYKWF_}W_XHUbY5wVu(%axuRu8Dc!IAFx$C$ zG03vBQrYydFH_bstw;{Hn7l1MD@HZ?YyWm=BUrft8_F}bq#g$Dzskj%9*m<{1j5vS z#qD5=JK&cC>lZFAQ=Q#7B+pKf}Tw1ZF&%tkilk?*_4#jVt$SOFC~@qJfv zMAulha;)-$AGlmI0fCnV{oUBnf5|0Nr*LRpV-3J7#|{Tv`vcdw$svGIXKMkkn6`=8 z6Q|fD!Zlcv99~m??##2PD+F-C>`VZLGca?T!g5g6HluC{HsgC>W^TTs0O!?VNaW|9 zKQa=*-HTjLmgfdtPyQ0kQyu7)=aTEmVWvLFn;s=8m;T!~<3iQ#B!#i#*Bt@-9Mj?& zDDtnuS%E{SC?*%-wYa#@*`L8{a;^jibjs8OZ*t6s<2PVs6e_|ZxAHrecS6SB#~0AF zP=pP_ATW6wjxaGTw0VOMOglvp=4B>NRM=l!MaWyC2n(W*BEf?jY*^k>HLt8N7C_dT z88w+tB4-jdQzLjtu};H|Zfn5dBBVni*>6!P6Sl z@d33UyT`E~b9nN3jIF{iC+)IE+B1o6&n?I%!u@u%O1Lk?YAnd+)czwEi1ZQ=X`<13 zE+&W4=(#xkYypjyCo_E7CeiWqgS*@pWau99XwiMbPp@yqVT*Ux#d$vS=~O&@EvMqL zO2wA~0ue2}E>6YufLcQs6)!^*8#?A@zJTUdjb-fT)N%3bKDyCnqUY{MDs@p?%qzl8 zzehk3Jl=8gQ9-zA7XIR}=JJB(|p zS*d3qc*IvUV|^7?VSkmgN$`9m`1aiV`lEN&Hx2!9`HUiTUhYR!HJ$!X+B4uEy}ybm z>jEWb(3h2il2q!X===U_V;|d^f<24%z)&sXUXS#>^2*r92CkfgI9QT|ORY->eV)8K zSbM(ofFRy4kgK6~ehYx<>eYEtN+Q|yS7VODZ69v$?fJ@cgT9ohiz4P>V9IjqEgRAD z&v8q97&Fqr7Fa#i*7QZ-YAqh?dgyz$i(PMDH}4YgxRl+OxxC*h%XLM+;=5S<4m*Ux z#F9WheBFsZo+3#Ps-L%9EZJ+Bb8I3&(qXh%`Nw6hOQKET3%?s09taCR9u|)OUTFS# zVd0w)jt|1Ox-R~cl5@FhM*Ic19|z-=$(Oq>HsjHKx$Ba+V7k>6txUPxHPbN_`*X0| zT;i#;PL4 zK+T|NEFdQLilq`?y0C$ z1ju`ryxr6KjL;!$u*aO7IIT_^#XEp9_pr}dcn6!4B3;YGYuGN( zfjKGEGSC4S7nI0JpAoSxnFzt06x{%~_$UTtb&|7Ix#O@eJ*J-Q*w-$GjZDpseeGg` zq}j0-^Mv8niHSPB8SA?5|B;*}L+;D2RO3F5@ol{? zDzI*?DGvGEGuIz|@Vj+G54wJ+<~tJYJ8@g~(dqZfs}cEq1K@*A;?Ul`i-$T7{J;QM zc853=-Cc-$`;C0;nUbM>w=W)we&8x2?vn?7L(e|r8e$$TA62rudT8s>j-#EO_Zj)3 zPv;I@cChnk(uas!O|1jg`|`{Dcb>ixV#i=5Wl{g_ztfQtxa29VFaR=7z(2WvY+zq) z5a8sbKw#ZsShn-rVj$gI95J-@&u;-9;_S~jqdlTqS@&8&vdqLi5i}xnjToYtAg!~C zUs*7Q+ahQv4tnQdjP%exZ)2Xl$13JnO&J!1WPtZZWazQ(+?aa}U~vDfU#0SIf(Jhe zEirss=kUo=YD)|*r|(#Y4>jR*535d*-nNQwS!tqG^NDuATMZ|Se4^R0dD5t3MNse0$A8JWs;oOR-2Msot+0}Ye1Ag4Ee@S3g#Xt0LUSL%sw(wZr5YJ z@%6#nSIAOKnx ze(0TQ#`4PRO3DLOekS&aqjb6Q)#JWovC#4@(E2JR{R!W6BhY9LTx||KWe(V$G?n?b zIk3qbxW^oL-yE3ulnFqqIk3kZc*z`yf7(>0%pBNh4*bR(_{1E@f5taMck1@U&jK(} z-Ui2wH#}LO8A#vpjLAZCInu8##Xkf8g$YS!qLo8P@6aqXC!CL@y?OYD-5+Afd~h1# zdTJ@*v5!DS&~Hb3hq<$u!AiDmma=s^w{SGxbjppkarD8Wzb;A&2tet+KNf*uvLNRUBb} z{wSkq?J44MV9}8&agCP8xQogHYdSWx^>_CMy82a9!DLlEUy60uV>OfN@MzMIAbA~j zFSnq+1@1M>4ow;oIA4`~mEz0f&_oUD-bC_I|CW5Z!oi^l;3azOsxty5@0f2~jLAEJ zG6xZ{h#-$IIF^-HD?P{HlCvNIMyRWCT&d<2I&i;2*!8`>y+stMdW)&3mh1%y;8S6B z?oLp~JbkfC7O&$Y#{JuPogqmvz*|hNp|?d$A~Wic@@`Xp`a9ovSxtQ+hV%CI4bR)= zl0FzCzE8#VEe#MUFoue&K*9XxQTn{#jt=+wF%|8b6UEJmrn-yB*-ujv=2u^T46hxV zJIXs{)%^h`6s*~S7Cs7QI^<4CI?NtE*9v(Y?rd$@XhHBeprNhKeYiy`s+OKj6rV{1 zAE5|?$^yL(sm^;dPYwRiNARJW)atP*Fn;N2#WqXNd@DdE{fa`R$xXK{Qh z7QpcfhLGX7wnx#D)mF!~hh6Kw{MQksIysVeM2I-pTS2lP(B^{!U%m+#| zks-X)CM8`&bO%o!Tq58IZh2l-4ESc^y5F zpr{*Y9;&HeXcu?)_H_5Qt?{VoM$$>;ju(B&D^((RrDVTSqtq%9+zSp5A|TWG-ywpk z2l5mdt$fm{kMTU+bU612TNU&Q``0*DSS|f1S-dV8Yqbz7#wHx_uB82@uv&Mw@Y(7Y zie0~cEw9-1)5AN_gE%YCP6_R}7Id5gmn^Ig)yvoruA%Q&J#F<$aQrU&6~dP|gDP62uo zQ}u~E1aY}b%1p(PyUC?qamjCOlS^-0^!y9`E@jFszBpf#YjiKRO)kP#^uFp;{w0y zmsy(Yofaj;%Pl6eSwh4Xf@4rTqgq@K7R0uR@GJ)kPP1gWg|(JS7cucdFo26^KxYCB z6Y`uzPVZYw`S@>?G^a5Qk*uggYQ;&YsDlm>6;UXnt<6>oEAEiKi?rg780_aEi3N5x zr$f3OiE}~-Q z5!{}QkX~ll%o=3KF3dsM0sOHaG1daWo2nMh#EFMFaP&HWXb0=ecQ%hjyd=(pDp_ZK zHfLwUs_5G84IOoDUG3d#>sPN_vt|;MoHkV{cW-y4rcZ<@WYiod23*Mro%wv(c5)W$ zOA(pMn7B+y{%2Y}a45P=m@^AK&x&k}5wk1(pJ^1C!{l}eB3k+t&x7C8f^oP6?nvTs zLdj);ft$Yva@L7NlV;>8vA=cC z$}Lp+OI$53jF(=A*JWH?hEBJmw^V_^voca>(jLPgvwt~J&_p#ihz!+Q(H9=qtK=0u5e+J`aPl>@K%E|E7i zgM2pHA;9!sKoqUfPV@E;G4864r5$iHT)U#XtAjkhHPV#H5l%WtX^3*!gujoS@&rx( zzlx|?5(UvtE+m^djXL1noJ;U1#Lq$@@a!VQuW-=ml66?8EaLZ}zqix{N2nVF?g$kn zgN{(=R&z(FE`XfNX)u(GnuDR2c?iYfx>Ti+f;}Bt4$Urf13YAkPRlOitbx-tywjGs z;j*?icmh#lSKydJZF)~&8=9q00b)Zl4u8%C(b?JB5`7z&ie@PdV)garBzvzly4$Lr z(p5LKg?W;9(Ih&4@(wP_BVwTS<5!#+qXqsQ1)WND5YCiGg<2X4wQ__KvN~2lu(cy( z3eQt_raaWR5JK35>9(|VM-mtS>?sU!9e$y30U9TcWAddrLTv|Dn?@R!mP&J&SVP>= zrJRxca;)%jEcM1x6KM?2X0{a2YqI+-xtPpd`!_~}GbTf)pS1-v} zi0*n40sz{b9Bdn>(bd%w{HymOlr34%56^6OIW5)IoFoeqm8ZA6(ib2P+?e~jH+C)W zZR7sX`iOW#6yJz)l5_wyYc$!+mtTTv+Z3T-9PJn7VE?D#*9OHb_$Z2l1oD`2bEelV zuWx6ar5jVDfZQ#}agrlfXymwA^rubc`!p+I1!QIA_ z(h$N-fE63kA2pZdDSc74nEl8i*=H~~&4#9CjZ>N;TL2F-i5yk{T{pI6y0b2V66_D7 zkG4$5=WuY8tKWhod}u8O)-a=2%2t;4MSw7{Tktmpf8r#z^9ICbN-5DmcV#J*b0yoJ zG<*rmOW^=XHt(*B&}9o!c8t%mF!oU^ZqVoyalAo{bO*ZX3i`r=ywX%=p9zn1oov^o@Kvp{ zgkOh)?nKhe*1}(n!6Dm@TyL?RxNlYB{$Uf2bFazVNi$KNSqOO}rUDvC3T`%uCM;c0Fzydzn~ICOAaYP4D&KUN)SA$rn|qx)8Fk;uK2g_JUl$?*AjfgwIO)^ zVcHNaIiw9?o&%j|$@X1BM-+*+-$hd(bZ5>L5l*OTARdFyC0B@Kz26mCS!Z#RkOav`2mu~$v$-~=kJkB~(N~RK=Pxd-Ph%qA1>6Yi-<0 zWL{joStvx_O&}#cpo%kr9LO0(z!iPW8j44vr*k#Q_iQwRG?89RVU<&*o0zizIzv-E z?I_Hvgc1Ek?}$atI~4b8 zzLar0Vrlw8wAMz7ycD8qTT4xbE3;1+?b@~j4_c9zL-`?~$Oe>vBM8OnF6@DN{@RYN ze$VQT%}o6COaPtT3FO0()e%==7O`b+3;MLJvk~)a7U=UD7gEB#ZU(s9%}$&a*0^xa zG`rpGw5VIdKNDF|vviFG=oK|nBj1g1S9Di&m#oCm>wnKP=Q!E^v=#lL^O629`s75v zK#@Y0>|QDQhq}p^7S$t(_&}IkN9Tp$oYh$^<&ZvhCqME*wnd-1Je8*7^O0uNV@P!u7=Ziud&))A`&lqn zga1K}fb#-cqbBke*Cm)+4DWX>&C+!d52WIk035TTcMA%%V+I&Va}&HPvZVV_?c9)( z*L(|8(7R2NP7oJl4L>GBBv}ehxOkO4l&wNz0Cm8e+!K-HLi0qVvgf$ZQ__&5o#rug z)hoNY``gy{(s`sIho47IShDEb;BeA%c!YSj4LNkrT_SiFK#`?(_X%J6w@dOlJ>mFD z#iCdw?%G8La=7?t_Kv^_btCABxQ0C#vhI#e?lStsXZda z#0<}-jQJm5^7$sP!NTlMRG6HQvq=BQgSQ5 z3WkfBSP|y%S|_wvg9~z`@>ucTFWj7aAp&|aQ$q!F<){@@6Kf)mK24H2 zHKpL&{@s`@G`zYNCZI z>(@a6&id^mXW!$#0lW7ATwn8pn0^5G-(mN*CIrtE|BthK#n>^57IoAPN}bnsalR*qZCxaNXN>(j@GDLG$SXF67Xp(L^%b#> z)0#w2BQD91KHF1~KOJ9lB9#-j)+NihG=n*8EEf7Qtraz>t`+k_K^1CsxM@~QmHOzZ zT*Xu>ic6;P{T?}$ZwnaV4=D^cz4>&i`;2!+M$N+F7Ve_^xx`UjbStjE`CO5oCThO9 zDI^2JUm>m5_D9uMJKEfgsik{R_q>DCH~S%|wC+K@mY;ug59+ipNmq^)uNaFRQQepJ zc~|3sTrh;=V{3%@Fr}ZC+NBrpfNyR>$jN2)B*`hKAQsnY)I5MN_R}v$@>OkkNRQw< zE8qS1B#Ad9nRkEXcz%UbCPk`k)h5U2I4FRvQjHq8V|1+x&fpk*8`J{!B&h@TF7EZ! z(pyR5n@MQ3%xMJNmUjiH*%V~L(MWRgrSjreZjm8|w!ekaG-y{s7OT}~a_H@XXKu+i z4gl0MqVCUoLp4T2_2<2TSETv#Rs$w~-orh}3%W1w2$3%xm!!;o-tiZ@+i`ccn>#aVyNNG2KY$@#GuJ`7TKW9K8tO6kMc?HIa}R`#R1%gpZ)Y{7nzOg zw+FBCOjfiPe1HboAhO{fJdIR!FZxjFhSK$^q=jESPG@peI%m;4>OL^JHgG1_y8>r& zRq9Nxg&LDqM)ibX~6 z!g5u+bQyE@Iq<R~W3H0G4TP^Z@VmiclIg8~B1z%D#p7 zy@1m?JyV~15 z&0|Xubc3h+JI2;x^eWQOX-H6ejsE>8O56cG_=+@i?`(EGHcQSZg``rlFK0KizUE+* zWhyP)57h7860rU{#i;cD7X!77AA){eyVM@IOnh!o3?ND(Eqndso*|#%syPiU?3XxI_QSfG#=$SH++3~tj=y5A2o}Vu{S{PF4CN_okze=TW zhBsv_lThCt)RIXFV2>c7W~w(ePRk0`CqO8tx+jcN{%fi?RxY?cNR$5pO5egs3tGk) zm^Z8x13PbeUurkP%kaA4*ZAeHzqVmo)AQSONEPNySHCadue=as+p>)(xOiZ;1z}cJ zhU`u*z*dcF^!203O4^g|M9a2p{{D6i@}SN0rsK($3I(OY-fGpP7$XST^E()iei{!F zCy-T_JMjm3V7u^UVmcC$#`%v~p>qs2bnuQuZ?Cqn=#55_@%FW_hTcCD8R@lq1F%idk3~@k z*%~(G8d|?#IC>VXvC=#1O?YJcDMk#GeEA}cDXqQ;L(DQgrr1Ku zS`~k8hWN8_9O%aP4QYw?O13AKAHHyg?Or5Zg|lAwB2GgrSmwNqFpk26^ynvymZ;2^ zBznFJ&Ivz?|2=M!{bNhCAMcFSlab1gSL>Ehcaa;%!t!_&DafZ#mbWmUQ!(Q{t_qTS zvNVK?kj;-Q_K%f`|L{qT%NB_@8vGay^{Vk4^-sp4W28Me2K59{7yl5Rd!*;U%C-OS zP0rN7HICz29q3XH7Ro8B7kNuAkS+uldi5gZ_&AAW?zK43#kWd0aynsab}9su*a4-rz8;R+LDG( zwxAuW+CGi#ml2{(7UnWwK4&q^)U0rjK=BqBkYMX~2`M!U{KquJLa^wr4;0UjL$G!n)!zL`!zO&#f1neW`??28;jnMO_Fz6yXLHJLhbA z4eYM%?OxVFc7i}cmU|#H<#pr1GvriE(#lD0WliOU8MropsGyCso1i6Vn3iEbib?hh z^(WitlNY3U?W{*9D0GCPbA$M8wi6rlsdNdFJbcV+CmT%o$pVeVNfi{;UAwYtY1^7L z^H*-+9M|+0B!a`bcL}g0Vo0-C2}Yo4QAJ@sMpA^T$yx&Mg%~kau+Z>pQ)`=@q*449 zYejx(6%$u71uAfhDAP0GLK+1eT>EpIU77MvNNm;uepSlij8qKl<(W_|rFyPrI~BG# z0pisR=A1Em*5)X^w93;2eTYM^&c`II;vCfbsg?t7&zcQuE<%6SUyITcVf2H<`%Bxp zx;ns9#^#JzwFFcW;>Q2%y8@H3-_0R$P)ukInHYiQsm`vb*|QpLp-Ho6?XZT%2<5dZ zLT7^#R1Z3Omq8Xqh|ZHyi{#D(cJ?Nm;hU$jUOLPBb8bI4+k~#=zREUl)9rPX?bsR`(D%BtF_ zGSHKSQHO3>cOUPg`cNRc)D!cCy-y<6HREuS1hI$a1b)OU%uV4hF?93CK0=>36|}*} z092r1B|u7lKgl$|m5Wzq#>sOq3A=U)y{WJw#U8@WaS_>xCc93*?IKnaBe%) zK+mJOb~4Gq+CW^cLjSc9af!g1ZX~{HHI9Zm|1N z1Vm2;r9xeE+wHLO#A-aOwq5iJJ2&DJr(0UX^oiRl%)bDG8V_OcWvYt7Sdcf40U3Cx z@q|^P*6?Q)Y<;_ZKP&)knuZFTn`l2*dqP&9T+YKWf4VIiU2q%z=Hd@Ctt=IhB&~o- zy)ypniPB;r9z4LPb8tPp8*}O%P_yaokm+^Byk+S`) zu110#7wA%ysk#+!Ss_GugQR0d#3bjkIE2Pu4V-aEDoYFHH_?5B$mJDm^%PlJB!~&Z zrOtVHW4n3^b;13ln}OJgI3KK@!cQy5EIg)2fb>Sqbld`=1~)mAIBB9pcL;n43#!!`J-o)Adc?Us9bFx3H+yao_!FQC)sW((;3oBqRD-F&76_ytF%w_tYL@;C-ahH~!eHK~ z6Y7w6!?Y3sGl=a&=4Slj0J>q?Mp%J-A_LdFYPNIdM--DIRJW^JC;~VNU?F0XXUjxa z=9S?H@2s)l+KsKX8cc-^)6{C{ss&R3sHVtMZ@C;*{5gQhi&&Wc@?atL3oulIr`1@} zJ?_4qwvE`I$TDD&2luRbSnQMn{QwVLk(XI;MaH+v%H%cFVxmLgH*r3ysAzAtZ9x^6 ztM3R+*tx?vHnE?17pf0+zhP~vUN22S)%`kqgTmZwA`B)=bRc^`5{E%8IUde3fo z&+gn2l_R_!qL|Z-E+}tbm)ZlgRu-e*N9uy|_V6yC9&w?IDlOC_I4+d8PgH*XA}kg* z0^pim!Vb)TfbI4&mQ6Y%iVydke8hUWbmS zDHBC~8ac_iY8-k6h0LZ?=Ayp7sYR}CjOoown9R_ROmv4Y*zLGg8b=gurEZ55P+h6o zxvOugbP!jezNs{V^Pw`w%H7voO%X&=p0Q$^QpphxSbLC0hn#ZvM9M(K2_pNxDbu}c z@`yHxf5#-DEJP+~k`xPcjBQ)L#jfK|aO|q*Flp5tw_! zzO)KA?GYx`LX>H$DRn6rlUd7Dx0=+&KS8YYZ6;nq%B@WtyM11nx1z~}mdK$eUi$OGFVFsV97V(UgP*3ey(c9M7VX|Db8BEAo8+BMAbwTJGtcIIL(v$(U zO2SPe@k)j%1EPX3Wx!T+>Gr10_7wDFIVc1jZ6MHX`W$~y+-(A19{-wV;j?L_?X*2b z5>w=-_$$R9y7E|xJ7^UNia zOz@sgSPB#Z?Ii-8e;-75)8wWZ8i82D;O}|R01mWg(=Mn%@W(jk5sMGG`ShxdYXhL- zn9Tys$P$o^`yG5UT;?84Y4A-O2_MJG@ZKceN@gpxdmy*@QD#&5A&WShxi|*v(YYC1 z*kYb~0$NJ^%W?vyaDwqq8Szhr#D8GKe-ILX3h}ZE=u}9;OL|q7m+a;Wo-^W~vxDLk zL*tgyM>JrUGOIDe)CR6FL$72Q{2hfiPJOqyC<)3JvYoS1Ua_*eDUwLqe089Hg78jM zh6RVQI`zo*&p6U5(gKf-fx=YX6i7JeNoc*52ocL7IU|kSKkTflNy?_eT}}MFcO+GN zLi9Og$Zl_QzVs5MHo7Twt^oZj@oviqf>+?u=mv2SP9n7;lJp~XLOz-GOE-9BTfiYwJ<%of~${dx{&8cH0!UCqHJQM4dDAVeA?&%cYlpaS;OAm*8Y_AI}iHt zPc1jEAPZo(njYugdLuG;9u8&*OTT&^rJDeRr4O8h2>WPFk!#X5j`_5lx%{Oi8CXq-<^0@sn1tU8)#!bCZswa-xS!~Dbk-K#JLf;CCud; z@&WILWLy&d9D(b(J5&5q#BThOHR&rNwsM=$OWkVL$9rd@8*~%vA-x1CZD}AVu|B7QBO<;IX zBtFzgysGZ4k>oNvW?nBC%FvW}HWD+BzO|W0Q%;?q*WzG^IZ5+JRa#KLgGvi(*ic#! zpBllog@bKP#sO7*NeWIHMvD20@$bL^JU>MRTa&2*s3cdAGBJgql5BM=U5Cr12Al%K z(Ug9+(z)9Ve7G`^0h=omX|U;)s%w-Ns(?xD$4k@dY0`{H^iuUS-bfTX?m(8Bn5M8hYa9)$+q_mDo20tLEZ z3#;`Hl-_QnXN8+?890Enf(GPbo<~&xm<-=U)#{5F>LMzvz1jcYQMJ0C^d&Wr|8J{W z*@>dv?NDB$c>pb(Du;A^ytp$C`iE7x2XYPIaQ(yU*fkDKr(NM+ht<7K%Q?kLiyQ~&g-ue5!=4hf zWKuRo%5m6pxFwT@rci~+GSGQdVUoTK9k2=DI`OckFbSB@&TgUuK_@t8Q%GSl=OwUH zFg&{0j?N@(84iVPUMA3Et8q>wp|UeDPICIkna+-&%*dtwM~`X?al{Rb^CRL?Q0(8} z7gnkhJsXOM6|q7{mLkYDBg}1P*rGF7Mnv@aECXlXw=5pH=^4S^!J;o_8DjJt1~c&# z+pI<|Wf_q?yhIJ3K5c)9si67^)Mh}5z6$VorZ+N>8hs65MDGJM9`|kv#XX?IIl;4- z+bjPmZ8^1gT`}GDKLZ1l?q%tJO2cjaq#dVl=K`G@LQ>nI2`i9$)%7rk+JoQ#`g0$Zfj>`2Q$qXDiDPC)`A@Ygd+vYo?z76k$W$q zaqI2HceeD7^1}tLTzPX1*vD=dcR`l&G>B@%@39+qq#_GQm*ts6cP3;@s$o<$19GGa zyYQlpa)6WTIp&m7&SQIakkCVmql5!){#t&1M_Ug>1QOV&4pxxn_P4Et?Riw@PrLJ= z3k)GP$cpfq4|8TVax})&`wt=wVTgikJ%|8WlKl&-cxgzjpQqBX+JwfZsag$z&d!y~ zR(5nP+l*RNcts<@8?>ObLvO`NFt320^3+0?FVT-@_-PR~wyq}neIXNyE=kJig)T|1 zNOEuM^5DOQUa)jK$gPOI(h{9*nPQ<#T4G`QhPJL{Mk*GL)s$M@*4N+BtCc)`T0`-! z*%P&97l65_ww?+>42XZx3~+wZIm5SF63MmaKARX(es($};v!mMkM| ziq&QHZWUX$x+U3aRj2k7obB zXXftRyRslW-k%TF-Z^t-=1f0x=FB;`@mq##H4yCx-t3XVc(tAKpO+9YiCMpshLF zk%1Qo^oRQPC#b?$!Odt!d>kQpDKPAX7DVCwD0QpDInmc6ih0&t%n__hG*BA14-OC0 zZF1vSAMQ6PeGQF`x%$$YylxN1Hb_BAV6Xv5zJwgWMU!9)X2e87S!w|mpB=f7T451{ zic+2ot+b8Hag3KELav_Uq>MMZ+cR&4m9OPAqCbKa#6)wDSoZ_mg7Il* z3tcxuwQy->ndIA*C1)Aw4z+})$&2aUYZA9@7`(XP3{6~v5M>Ut!it?O%nlSOy*TOsh7(!L+!Nm^U$ z2UzGC;f~;Yz-Gc)A;c<2728{uusmGa%t8v0XCn<;T<}_AWE~OeNeXW<0kQ$;ZS@0q zS?5zWY`>{2%pPAJQ1u|X!6twRXawIN`=j`KM;Yu$ehl%$l}EWAo2b>Tp`L^`{>jU@ z_9U{O$(@a6imRA2uJf)r(`gP^Nit=BB7~?2nKO$M&rufnbH+LEnKMqiG%)*4vIjYn zO<6RWD#@wmarxzQ#vOTw(*5q}taRGx!0gA!mfZ~5j65^@6G2}PcZ{+hrlNP5$kIl` z0~%-McXOhNwtwRDbd(V%nflP}Y!_EfD5$k}2kA5yh7!#r2<1h27OHG3HmdIZ(numHg1wtBw8algEl`8OAK3rE-#p2VP{1`P-S~MQAUwn9XitJa`(@Fd3)Tc=|L##X z6MBrz%qtf6D}mY9bm6scU(djtSzp%!FNl{#dqVyBUl;A!20H2fMkoIlMR?tK49s_- zDgWxO@hyFm1x?ka>zhEbdER5IaSRj}H@q%Y^F0@p2IPMDC~iAI{i9~;>!+Zh*f=>l z_P;K`8smAV-5@?E=PG1>=dlN>{)Oz}+-SHhCHLRhNpmZEMEw9U)v9iEXt1ZR85g7Q z8)Z1u2&~u77Bss;`HdH^QCqC%M88oWoB4GSdpG%R=*Q@{UA#A{rh2waSHmFFbYQl# zE~9o}La^b)S`4uZaXPKRaVAQF>L4G`c34dP^a+Qfkj66t;IqYG#2T%v^0Ry)U4aSh zPdQpwe1(J#tvsW-ssyueuEdSQP=<7tjgC*??B#EkrooYEXHnN=An^|EmdxhlYExEU zzF|vt^uQ~lbGR=rFi-8eryVI@sX^X*+Ogm(B|QHb$2niEB@g8^J916c|KIfAr_VUD zzY@8f&pML7Qo>u2P@SvO&zu4QL(Ne(HIVl?wQL#annav`q~ztz>QG1dCg=3%6qKAc zk4`(aisu~OuSETio^w=urG$%~cPy*)Rr~V?Xwv|cWbr@QelxECXHMB`pLZ;nvmFOV zCMK~ZIfq9l2k_?5)GDMpKGfAaO?uAbeG{|iQ85(Dk#c;(*+1%>8gq`0J9}Y~%G~H? z!q<+mOjG7$yy}Zdc4(jFH7Bk5oIb4S+ZIUenN|MH3y!p})cDaS9A#f^Ze3f{yx^KnvZ$#b{er92ITR60=R~^gF z^<`&n#NttGvF5B=2KxGjW-$j2?Y_q5g*B!cnJFsl8yFnvb+(O8ne+KiBssLzYnyAo z>cqPAHAnMTni>mUckG>WXckUQLdUgdj_yPb~z`8N3q5Z zf_a#mjhS32LQvRndo zc^y=paNok@`Ro+i-s9?^OM+ye0E2bl-$wk~fPdS2OcywHkz>fSFKk-cfV3~;;_HK@ zTxF^v;qz3ceh6bgxgBM-HCkxACtCd#Y@}6i!$BWg*|u=k!;dCA*K8vxq(HwR>@DUR%ckIBDCsY?uTHt?<!ip&E5g2pTL7Y zxnlcoDJ)%5U0Vatcf1btvH5eO_eic1NJjjbfAa*e*~e_o%&(DL6=!01z8Qdx7auw; zq`gVh zkHkLL6M}64M4LFHhh&yQ_o>uUh$Fu>0m`(5BW_6ZRKk83&MblzSeW5y_50EFGVVt= zafK<|kLGdFFO}05B*zBrC$~Ht8=ivjCWCwB(Zj8z8}0{O?`i`8*uEagUkN3_$$Zfa zs-6vRh29{!mn%c@oUW%sl1dp;#d<)Y^_ma5nmb>sL8fq{;JfXDF z2OJ!1u>kAWunFa#+ zW`+g0J~$u8y{7o2SpEK%GWebBFv%Y<&ik|%l00seiUDPq5kSI~`5Ur%Dzz_HtRXfl zG=gY)!5UN3QYA6OmIy!;Q(FU-3z{G_6jO)3OjAb$&2vX>)pZM0WGKH0)giIYL7xE= zcrrw}F2r`7UMfwj2Sels$fTJ*_<>-1kkjym6F7hfp43bOpT8<8IEV=>%EsEz5Nd1C zt(sBUDxUR+`pc%pLq+s|SUkQ&*;KSD%D$Lw3sy41WN#Qu!)(LA=Bh423|0wK6?9uo zVDdgz=McRCGb7`{$~9r~55oA8Gp@&XXXs0e572KcIzC7*AjlCxsI*`~q%3Kc{aSN< zty$4XuBO^6Q~4-9X=9CT%9~+WG#cCZ2SqJ>y1H-=yrP5yg| z2Yf1)5TT||y80nUc`S`VJT(Kk8$&p`&xWSk&W?~HB1}2$OfVrFvvP#9%?Lw%%L6e4 zT~yWEBjle)nAeYLyj?P{AA7KCeaZDh`*y0w6M;_#%X|NErI20Of5Nu1~3BVOSK5A_Y> zPO=_oV2&(T8s^4SGo(ONEK@s8sOS`t&-YOi*XVNPFnNO#MBnTxTO=ayU`@5kOY`Ix z$@^53xJ-4G;JJz~dU~O=vpdtdTqr~axstAV>e|` zCwDF7P5Gcjui8iOzn-XMMI&mb&}@bVHHzE`HB!t=?HZ>iF`fc68@DAAHNL0^oE~?) zU!%+y0lRpbV^O&hNvbpg7xwTtNX3Y^k1fDh9%#PuSnAY>!Rgr$w`xGWxNj2UwU;?zXWSztc+>%ZE3m*GAg@azFbcZ zne?)0Wo$t7moA%%R;d}!SeE^(GL_R9BR9nC^Yc}ovt@s!IjH&>B-m%`2vu&5k$)UR z+(Abuk#@bSoog7F0FCK<^%U_pV{+npE)^zp0-m|!H7<1#E$l8NNQsq`V*}Q9Ja4J$ z>h921E%eNb-xf^!A)Zx@1u3?aSlzmB`$EqG-6u)=r7GMFS#LU)x@pl#a9dDqiq|gj z$LHMs2>cXX4P$7xq(A42KZ1C}t=tvIQV(9}qD%A8VZ7Tf?y;AoJ}@-j z9Pz;Y_ky*1_bo7MGjALKBwDP90V{jM$6tCkw3@kXyz)KgqbXLnAJy?9RXwXxhUddGVaI0q|LR+&naCle1Q;*(a7SE9Upe=tJ5zTFe-&4MI3A?Y^KX%s9@1XLR- z(X%0WxR1w9;p2PuCIIn3?wIUbW5T(;Uhg^+i}H%fO%aPE?+1JFtW-~be=ta8d7|LI z!sbz}GL$55N!m%zHqsIiCI<_zOOC3wMU`#UwKXL$a1xdKehlvTL~NOKx6QRTLHPT- z#(MPF!PiRe-hbr#N8QAKEy$<8P(K6;U-M{7S579$CzAHPZ(>x^buP)^W2&R*?At5p zoAb#e+B$kAtOwuM_2Xx#srTZ~%*~jtU%>Ss8cpxo?I$r`c2Tc!I0Z(991p^$iuI6*1avu+)p+KNc z=>aPS%*>xK1VYU~*t?9&$bBUMaWU<2|BhhWmn-U_6!~DvKJ0PZq2kBSFGWLB-G!r5 zT%zqa+DOqjCg!DVK21g&K^H-&y&9uzhf>5i<@@Gzg7QcT+IgEWwhiaR;#+^^(9U4?O|=?2 zi||xY{lF@0L(fv(e4`x!KF3_!zHH`e0!F)kB3ut@1MIoj#A+SMfw@+ znD5vic&u+aYHZtl4M)3^J%;(HNM2SeOY47wTi_Jt4vGNWXTQ7Q%gy?>fbKD+#-Y*mA(bHpsK2) zv8=qbsgV|3dMFnVU0l#q&{0yOHZ`;{n0HzV>l!Xmig6f7cH5HO0!EB-xmzxC`x$Z) zlawR+f5ni~R1Dz9)j&C?aTs{OZF|5}_Q!7dBU9OQ82I@ATs9SL646i{PcD>CEHod# zD^~^{zj4z1vd3={jmmW%F(GrEk6GD3Ev^fm(v!ayzFGIuQnM6uO+kYhsH`^HX<0b;tIb)r#HL{V!1NZp z^rd%|6u{dwsnoJ6o!1u2P1!S>%@g9x(P6R%Ze8(ch`*A%60y5&xCi(2Jl zw)gtuFMTlq8T|0RVld;c`r>axJRGn7H5&q1n0n2I;MKp*Z!y|wf)~g@CCl;GvDC5)F0pe@2?l9ZvEQV za85nYP|S~*9on5M_(AU({1^wlnbe}xqaW@*mKr9*y8<0WJG7{?J&DQ2aV``5!HMN} zgFk^+rkd!7-Yf-&!2H5v z{6Yr&7OQVV?1w>O9jL27Y&7|#XP+S*CTD#cEhc0?oi<@y3B0$|e^JWX4#1gQ?RwAm z!Sct&v3T|bK4jRv&AiKv2vUU}ZPPY1rEXT&tb;kYbz#O*$PXLRk_2iNE-OapSd-lekc=&Z!J?2f?V(x1p4aXwwV0qcGvg zuTR%h*4C`it~tjOGg6&{%8HlU-+Sk>;?$@2LCSXjrYF#uxGDK5vZLDK>Gm)Lkb0Ou z-X`Ud^a*E|&mk0(kFd{s#*Kk)TS8Z+#IPhJ5`TfEerv6=P?Fse2EkTdy=S%Bl^#Xi zTFZG<2o=HSAes4v;rgI_G%#zF$neK&Fz1qnUs!V9DeWwS&B`eH85-^B8XADjJC?jY z$aLXM?8@_r*0VgB>|0w{|gI$P!7vP_q#<~(+du+Iu^peRU*s&~} z8Xv)HGj(Es0Xi0j`r3EJCd?}PRODWavaODa`D6!Y7@aXq*$t6Ty{!(&0^`{2=uig@ zo6m4kU&sw+9-X%s&pM@dur!OPe`4vTFPwB9!ya3;+84Y}wJNTii)DwHd=#G%|6Z1eb{a-qdfrXBPEtqSW?OgZWOL(Q=V|7JCZI;%bY zQ*#u6su8_81_PR7#AuF@&u_qb>#b zC5zRtt^K8%q}|*kB^R_qKchZ=%%YHKo%fM*C>|^)ms|iKnT{VR!^#&=+}c*FVjqUo zCh%Q={9P>O0Qsz=_03cGd~Auh5z5bB^lHHNBj{PTL>Pv}R5GrHz|O2P`j5z-0aJ7xquK8WJCmZkHucs9SC0}HOK{aEQVCKqBjj=|qpd;%6LB7tZn z92nY#i&2NR`0oyP{Hc^JJ*@PA)Rs#|@E*ZGbcc3i0^Yaw<9Rr`zHRxMNGQ#)81&Vr z_?17VDcDBuMB>PxV%u_JyO+84&cl71`~$MsyB-#MQ`qgd`fb*4>7j?5;5xylw=H*q zG`t}VUNZaTbtmqWq%A!>ol3^;qofltMlLAXoac!c%5x^~i?du8j4Vx=_?KI@9Sh7v zZDr~zY-0=xMpdXG?HMrNGg0eWG8V4n&_&S%-!#CC;kJIF7Ptdsdl`4`p}C|mk>DEB zo?7Wy8fFU5TNM~CLU`U3-P8Ni>|W*Zs#C4h%Qw4vvQ2cAq1Ct5c1G8stnXYd{Ad$h zr@{bMpc@Mw1T(RBPxD=691AR|fQOI|J_I1p%r|>IpAful!`H3g1%gMYPv98Gq?5^)W1&C`nk}N>- z&)UVr+UzMyv#n$DIsqFA!=h;0%j{nGo|-IzR_J(FH6Fn@N3>H)M~IgHjzd0cPg&R% z&{67#Eu$w`*fngCeNcS=iL08dh53mFR9f?m4%zZm-?o+6>eLtxE(PnKfuh{m_8EiTc_zkJ+bo%m{bYiwNhfsw!1-aT5rJIAr=>b6%u~<}gE%9-Vx>`+t z92YO|2d&B~NXnu7)27+a^Vq}MLTHPJt*qTz{&^l(>JsFac`@*4Yup13qWzLTT&bz& zc@j%nb7p6s0ZkNX-}_WDWYu8|U#&T~>+>h2tWE`F_1t-$g!a~)eY5gvjhn-iY8w`A z`9jNoEa6Ivzr;$d?tD)|$He1pAx-J_=?tdQ^_PqA6(~+V* zbg$d0Ue0#bx}bxxCK%_Poq`<}r#?M!ijM5aU9oqpYM3E|<+H^_|MI9Oq-w8s}<(i_2e;y>71 zIy&xu6W268h1V(q-70;8m4avSI8;deK&t8cGQT?V19_)@AfsLa2FBnM-UF}3dSxTW zlTfsz#zRw)R;uq4iN)08+b9$u=Pi*NVKucdo~))8#)}1v_S+?}Y`fn`^HWuiR0)F7k;CpZAsj~3`~ZuDPL?a3b9u} zE7+81lY_M$kebuzY!FrJ$jvT)TU- z>w@@>9wgCC)Us}rpTD%(qxDs#y46YvtC1a!9CS69N`4*t9Q<-&x!7jd$Mk`t*!I@T zKS9Kzl-I#^D7hPrH6F_jY-=j^2I;0T2X|1%t=~+LCE@L@3facVUrICLSM=uw%73a> z{a-j>0BX{}#2P^yA z5@DNM{-Z<%!IuQ8&q+3XN!b1-**ACqLlotA7{7|`JCc1p0rmc(re-Z@@e7+MarWjkMXq4DdES|{mrbg1j&?X*S2WfAYTC>oLtxxapI58sBe9*-@L2cW9sWrSDfy=;r z5o1b&(rW>GdN6m&EDUr?<=krzFJ;I2kXh?~sX06!f$w6x7vYyE zT?E&EUqmPpok{4%1MoM{vR^8VCt<}U$PRX}ksVp^CJMc*r3cRDV3Qi;!N_VjArpNF z3H!QiGYG27Ss$ytRFT?yPF;}V@H%0$hsIaq8IDDGWY-Q6Y4S0m?X65r4L40C?Z(Pf zmpa>J33!A<63p4oa#wPOw-Q`Rnlk6p@{C0CU*N~BE(cy2nmzc%WUR{p6T_vdaAkG~ zYo!(&nHH~hp@Q4uTGFVY3o$hA!f%&71~5!x%fpiI>jB(2Ad6>BkU%w}-xCo>!=NRNtwj(!{F>#olsyF}^7|z#LSkGvk&j6NPP?HoA3lm? z)7A-;yg_Xpwsa!u56E%}e#!COhE~PCo}Bt^;K%&aVE4&Aoq1vLXLTuzIvtRVoKei0 zYe zgzYpKmTf_wv^mHjQy$v|x0Md5*8yQ#qO{3@eaT)e>oDpvJ@POoU{l*@OIGbHuX1Y8XsfnVZhO zbk(v4(-hS=PD6!i8 z(wMcBO2VinQCxCqJONGPs7|Rx=4Exetd$rU{l5WcMhu=w6mSjGV64NbeYXgY3dY*z zI2V^=Yob;1V&vn3&d>L_ca%EL%yG-UW%$-FzQEXwwWWh03%E6TGj1AGG<&xe{tktI zCk9qgFc>J$T@nVBVdq?(l6GNdAi*swDu+8tG$2ile@Ic%J<*siMdcLymzCJqk^+p# zd!ni6O}Mp|o(gp^`BM0@_%qHiQTQujt@e$nJQf+te+1jM2}6m7GPP})4aqRN0r+!x z2z2B&%>zJ@w@4Y%TQG{#hLKiO9!3MrUL6TB4H&NG1jo6~u_3&YZ|dr&CB6k{5a6Kg z@r$#UmpUAu$YmTME*6<^jfH+O#?-9h;nPOMaw z@T`(OiccD&@+o^c(W{|?AmDfvU+@_;Fqoj zgqGE6)IJ~sO7lw6Zm?0TxO~UiAxLo(rohVpqd9xvdKAX_rGcB^jBW1j#i%zD&?kvr=2fVUUy zg)e4N6g-QmzL=oHz~_GXa7Bze`~$0_a8Zo&=u94*#njQkG(UNmq`UZ{r4{DTFiKg` zybY*Z)NdI)31NJl;Tr`K9e9#D0H-~M`CnbO*pmUJA@vOJN7Eqyr{K21H#~9W02ffZ zvvB2Lz=V{kGKw6ppjbiAwxl3u7DDxAu5&F~x5K+LY8Vl(0{2<`MzQL+H2G{h5N_wL&rSkd>W{~6wZKJ|TRVh_c7F_ZBY(h%M+2AZNd-)j{wE?TccOb1@Hl{_ zjM1_j{OR%MXc8-wYCRESd*dkt1h)|+GB8SR=1cMaqz^4-`>d%;D58R`Y^$fP3? z@RaHgXz?X@DAm+z-<<;K;^rJUK|hut@e5zF;{d{W8TO6U3>Mzj@LN(iVyFElKLYY=AH+5!$?xEPR|mWiLW_ES z1O$Zw;|<82nB}n;4s@=kg^wJ`=Bp77C*#{0kWKIioZRLFpF20$OJEQIwM9o}5!FQ= z0$*PW>gBT~nBOi1=}ao{>Y4fgYJr!hs=y*z3U?FCu0nGil#{L19!CcbFCxNfFNO5m ziWo6RoESx{Lbq^?tl2uOTcv`d3(lv=S~O`{YfUOSEO7&aymi6(T`Ri3kB%AbXq+;Y z^SAH9WNdxi68TLGqIQT_CbH*QuOC!z8%8aRrE-G9pVH%ghO&bo0rKsWS+Di zLz+9~+YIMlG`M~FCL&7U0_gihtZ4;VhXyF$FLftkaI$~mN~Q_FFhPeyO%+y)ZZ8%K zRW7930F5%cfv*SMUMw5rAew)`%K|nUSk|W2Hs#)*gZ32v9l_VIe|tr!2}QTm)upxo zAsdq(Z~jqoOC8#Nh%D4@#u=uC+DermjlLSqz8RNvxOSt4+Kfd&G&>FRfh8n(-mKUz zWb%cx;>k|pT4&}P7Q~B8DJ^e6m`0A0_Mrs_&~Us3*OFU9yt5on1WaJDwFOSzsy+ao zD>y|ITGjUnbc8s$pcY_LE3_QcQr>adRkofc@P4T$WF4v;gT|(9bQz}KerSp_Fp_;< zR^6jyf^DwmXZSrBi`Wi*XLu*jSvxW*>e(Gtgzpg3+U9>E zF8Jh%bFomfp==~j(p2whG(dUJPx25X-5dk;I8cjk$vYPdI3bq<8MyM5Xi1SC-Qmj? zxZcxph_Mv%JBof-`|}~7+>g;gJ|bY(K#x)-35h>4;*Lka0hp2OjcDX+YP1cgWO2uCmAaQ){fsVQDlP+hV@*MXZ2ZYXJn1{~PD-BHL$`iY_vt9}a` z$W{(8xQiag7ogcTguaP&_oEO1mhiAhLYUcE^GJG%-m!0%9Hmuj8{ur%Pi2*5Bgh1g zcowL;EeQJ+eu+o4?}@T^K?&E7+Ap_s0=K1nOAsMljAVBba=)zDcSeB_L0wC^QUKp7 zf}WOgqNjiX0SQ5j{3jBCR~6Bz#Zncb%p;op4xv%*$>E{3^fON_q~tc~-7#0GZp zFIqRdQLSyMYvQ$;JKV~uZK===34^?ETPlW_@k#2^Iuy-<`*cD`ImI7mh>&(1$>FNG z71`}-*=5~^tnHxaf6!83114Gm*Z|Yn?*o{mU&(!X>E6NRACsEKM9Z0eCc$#>W`d1@ zT`jKR4CULHYP(u!OTn!x?(|e23nqLkZCnIbHaJPWE6u)p-H2M^(u4+w?t~m`JgvTL zV;upBVTs1N5BJ>v4Jp`G|9s&RE_&jzv2GIO)><5;WIl*A0i9jixyQ?vYdb1DxuF~D zN<_4_?0DG)+CM8iF;@<|BGn$W&qQilnupp4LynkGw9lq;NNESUrS0A*{KI>aiPSWC z8cX;@s<%avN1+uFk8cI`sJfeuTq#mr}I*&wAA{(%cXN^3U6G1mc> z+Yy$8kW^q*4&zs`#W8!%)ri1~Fb2y=|0r0jLc-OSZJt4F3rZ=?*j4-zN~zok`3pt{ z*r##UfO!j}ui0=k2}zi}3C31vtFo+z9#<1PXx|9-AOrENGnO@HE37^n)Z>)B69CR@ zbjFfM-T?_JVbbD$18lcn0LFrF0atA2N%CQ}j&d0cD!byL5cnuA#JR&!j z?*)Rd1G~F<2lCEPdbK$hhRpIK@9LP&R`oe6k830{6-`q zL|Q6KeX==p9XlPj87)_`U&=43LhwBxkSb{M={S}Os3M=oehz1>(tXyvl$EsHM@edQ zSBSH9tM>LW_kvY*k-bPis7y;YBH09_Y9}D700-LQEW%SjHc%O+S63@0q5|t$G zopU6Sdi{hYY%7BoV)$WkHMznrWUjJ^ux~NAw+mAwSNkI9hbGd{gceVeiy!q#Dae48 zMVtw%4>}XZz2(i|+Iq7oar+`2(UwR@Kk-E24pdEfPLiJ`N27zB@q~I!4bB#(V09eg zsj39?y&06~CCkoY8Uv(ge}|S=8GDu}7g%f;0DuhzyY3o`-)>b8m||$^z@`FynXK=K zp#G!_S%QCVp#=ffXON$~C1^2R1KN^V4*USy5?mW)*M<-e^9bWA*kXy8-?1%q%H|+> zFlZ;-rhxNj(uc5Bwo-GwwJ@b`2m_%;qRqA@ln}8Vkc`H@$G`m#PxUj`XhL`j%V(s0 zJswTtx;RR*09UbX4uUHD^C4k>w)q%_vf3t$TKOy+H9p$t1?~B2k9)aK??$nYMsxcw z^iqE&_ihyTV>~MmHZxoeR&oH-Po48q&GFpA1@Zm7f1&2zMH&?pf|9@1QR8vLfYLUFy8RonuiFa?8dwZgm@EvYJs}Cs zzek{#^VBPjr4D>=XHja-Th0Dn-o8MQ*UNMGwM2#1EYk|=Jn>OtKtKUd25>_i2dX|G zNGI&Sd^?qn6`06$UnaZ$nbhya!d+>BKA zb(Y1@W)w5ZJfS2HSFd51P&TS^Wr+6B0asl3I!ih{dlKXsEw$d0So#S>giDmCL*%DI z_T7f%8KOBcv-48!`V5Qof@JoyK=7Re#-!_5;>2ZR_!IP{?WuMKB#X?Nm zO77r!5VqeN$(~~)5aC;8sB0R|Ww4dqKnyLx$l)>s{`B^u&WG(ovpvlq^gIYOant}R zWXSxP#`q`v-Q7@T2X?wVEbTi)xXOYEoTR1qtmk^Hm^Gn*@m(-2iU>oyo{mBb z-GZ??ljmv^kV+D*q0K zjzsF#+w$;O>(M)JjqcIU_=0T^?3i(QV;w9kq_TwV`P8zP~fXh)i584u&2H_q&R>XQ$NGMoU zBpm#f(}}JPQbz?xx)$6i0SrDWg4y9kqAC)4FB-U(nn-$bm#+|nheqa6s3tOlO_oEC z6GE&SB(q%y?y4nLvBi+Y3&ouS?heHTmevC6clmhKEB}42;xf>T|Dm`HREZaNjwFh^ zNiXhC=Hl$@A%*Tmn^T2szm()DNw1Ubm+F5m z_){q`gI$t+^D4xlS9Tnf)+egymPhLu`!9RB1KuXwU46Hg({trUPNV$8<8jUvb-0qT%^^$;ttj>d&q4goCyQxS{)~1|H=ze zcookM^5Q-jNZSk~QM&bE_t{kXb^|U-uYA~@NARgx@c;L)`#geA8gO2i_Qu2R0)p?D z1wa20_i7?;+JK+XiJST6N~dYudle)UQC4nU%-pG{0Vm!;a3`PQOw_-aGy`` zs#$Q?lkQT2SI>e^Kj~gZ@EQXy%Khz=VkXuaaGpQN-E#HHOwrnT5hPPX;yMFKByM_2 zOz(OFKEvDW@~7NOs0|tnILAk(V+U8dMW&8OSWu!&8x5pudE$9byU(Y@O@VMEe&Ntc zhqmWwG2GW0(V{^PKJBid3O3JzfBdw2C1uxQz@5~v$S(B*^N_q{ruMK~8WP<|!q#$Xt5zQ&qDo(o3rIy-a zz@9s#DEL@pS&p6@SO&nQ>~qTQ4Eh=23+8m zza*yRZUZiAfALFVnC&s(*YfUu2;xB(Z%480;Y;0XgR$i3|qu^LSpaFNfcSKJlUOjEPq>t1!A zOJr>`;JkVu3yWlq_ROoIbGIAOe0(DM^}2g?Ls3P59KTR8_&%_Gd%$#!W{u42Cc$eBV;d1EM?z*= zkNXts5*cb8HF*A1&t)sWqIb$;jt=eQV+D%pWX*s>#tAnZ-CZMa@Cu~|oKfrf6V3!m zeI4F8@984Yd^)x!qA304BS0kguCV|_lIKDt^H#v*W_}}Fh{E|}c)&@}^^y&eQd|sg zPc#5d^-W<6U0^&Cmid`2uyazZ7510CSwvaE`L5SWVzHVmSxE{=~ ztKBdzXU&k_gP%P4QEA_J=JU8sK(=V!3n^P8*7gI7{F<~q^Aj77r=V=vHx5E|;rBfv zp+Yg~0Wo@(Jmy@>_ROX&zAWs)M6MuKHHaPW8y?-}BbHPtK`o>kRC$tCt_`Lj5vRWk z!WSCB=9KKMgp0JZ7O0U|prsXiJ4Jz79t#EX3dME|*IHXFB++b-ku3A6 zsZ2wqFH3u9XmNtN6Vs{SkhCjj7skvT&=x18YT*l1RlC&y!z{NPZWWR!TaITp&m20{8}i6x(kg zGoaF@nEVO)5oJIpwgAeZ&0RMVt~Ci?NMKbVywX+1n!EfBu`Q?xHD_&>E<_JN`(yyW z@+P)_AB`&-sudVlB>D?<_Bj#`9S+i{o?~%Q=&sv_AvqDJ4@QmYrwYR_s-Ohglx zm58faTn57^*&S$+Hifi8SRLB3P08(C=DQ2K0IPmo<`TtrE0agqzVX<}?qg2ohHG<#y;Z!>EZ*K#O^roc4!TFqTJ z@~Dcw5jX}cPv6!D&t+OoXIUL2C)@)jMK5IeTT56coDH(8;23kWEeXXSL!N4)W@@+_ zo_{c&W9Tge#Uy@1%hqMVk1ZNX z{qup9#@7MAwrkA#Ch#}=@adg{z_0BRnx4#pc(yI50qB^hPvP%I+@?Y?mL+e)YsC$T z+Q~y%5IFGVxEWaWhorTM+KJ)Cih4Y4H;nzHlu8)!+?L5+{Lr2c^)OjrW}NDKRTvP0$x)`u0{R{Bzy+{5;$x?8XvJ$asDb z!mH}jQr!ru*0!vZaktN0SY=4t39D<%NBGAI&@=v3{L|1zAoo|)SX@Ag1atFqtQRDY z?yq2bFM>RJArS^TIl)LN--ZqOQbdE30E~a)$~`8=Ij!=6kS_s@hr+ng*cwA?8ie^a zMg9kk0O=<*0A7*L_23y$Vj{gp*d0k@=pS6M@n8G_(}_5$Q^`4Bgh5NnKrRYcgu8;> zkxLOQlC;zByO&sYM`}wyaG#~3&C9ctO_FUBzkw}^nlKQZ|c4euvkKx@eMAh_=Ee0M=e;4_KhaY(iFz z$hBw<)v}MY9LtIKiAKMbXHgD4q=*&E-lr-coFU=iFkj~{1aGR7KzKW#Z-DH|vuF@B zn+E}UP1ph;td$cYtMng2f8_!<*p6o zD}IX<1_k1p!I8~fPCS0HuZ5T$oo>qte0Nh9S%rM^=S@r5NWLB7;vdCwm8VhX=copR zh2VyFRY!hJTM?N)tz+^YO9mTt(qyN?wF;69@a2 z@apqWlP5WN9WFEKwD<72VuvsZ@o5mtuUBFuc|P6h=hstjUGIX24&2iDLIo>qG3a`v zELiJFwiK?=I@WreDvG&Dl5dpA_Wzz7k+5imZd=p`C|&`kz#m_-Lfp;6tae?v@}eZ4 zlxRJx!%eazeG);#8Q8v{Crn`fj_rz6R$Jr?EIXm&hH*}}>DsBa9#8Tvm^`v}*&)Tg z7FOBu2dZyTY`Piujvs2Pn>~qf)6GQMr@@Q(RpVlA=}+5&7{jPxT_IhrUIAO^GglYs zMh&k4g6;}n{=N-&r~Z5QiNe(D(hrMxas9jLhEz(Jgo0sD@Tn)w5iGg^wp2g; ze@M~!U!p2L1B{G-;?JuhNr!eztI2j_ekls`Bfw_>_lU)9+P~{Tobx5hq5UW~_>Wsy zQ+ypap8xXa#$Wq!F_L~0g8>hPM0(qev0=a&8Z-= zJgEncT6IS)e0ENRE4SNdDv4)vL9U5#KWacaIMwmT@JygBlZXx$wiq9|@`k%p|FGhR zMcOlMp0M~qt|A2Wj0sZDpb)8NeB9>22$h!@|B%*S>Ndtvli=U zr_*Pv#*fySul($D(d=E(V0h&J3GuB)VoGmvg~)y6d5Y#RbPrukQFwN9DwqtT6X=Na zk#^yzC)s(IYywHH?cq_mAKFYH?bN8pK5Ux*-wTnipp0q$lO?Xw6^iY9+^5w>XXfj& zy*;SwNx~Qmna5DoOq2vOkujR_)n>L2E`#M?xq(zZC9k zs!wgKOHp#e$2p)St+-QcQO0gAiMMTm{=!$OEGx`c%eURIalL0ND^n3i(WpH80^ zE(k^1U-4b7ORI0kiP1=tZp+ozPZ-YKm7{z!O#TLyw@Y8E>1gH)-Rzns`#ZjccZK5buB8$8J=^)6k{3LXApxO_6) zv@H>=d0LGW1z=#cClS^ZS*9>=L=Iu$86kJl8&HN zZ}cQLmXa!4KD=%~0VN*~VW5o0HMIO5y2^@p$CkEG&)WqSwG?#LD1op$-lt&8qq2X? zdbQtg^rXi2I{66YZpVBPfB(FQ)DBN-oH+%wFlqNZqSbYH5;slgyQen@t0?zt$XD4T z)mUYZTuIAtKD3nr;-W7D_@Rd>?lvs!0dbd=QQUk}I=*si$2(^EGWL&wxsf=b(gNsn{wm5hr^NE}%P9F5S*|nEbrgn28HuEdsKV(HLyF4(0oUP1ULMd8! zgxw&p4#0OUl;k^l5-qFCATa09#l@)yLo4v-2bTospB+I2>#QwKJ#axJBJArV=V$X5 z{^6qEA8UAZ^RYD_fNE$a)MtJmQPc<0!p^8~ANx+icZxqd_Id%WFa=mHB^KZTx#74+<7+IsipMT&Ci znJIj0VdDzrM=`b^#fT*aYN%oTS-%#79VwI6of9x#M6w86Aq-T|QLh?jHWBqJdO89JfgfOULSZ#p z7l`?z<)5)#xg%`50%Rx_j%Hu(j}&(4+8@@0AsfXk+rajW>WKeHH=hE$zEIIoUytvPVY@GqwuX>M!iu;){02*~ zJRi0O+PqNY$7M%nl=O6*CUoEMS(8thOE&Rz;88@$mfhc*>I! zLU3k&ecpoxZnw6@o{vJ_M4PKw5D!GLim+VV2LyW%>9<$|{Y9j>(EvKw`9~JwGJ7qOK zA435;STf_N2$_-mk{s4cU3ExmO#C_q#S=K^LlVHONojuRt{?d=h=is)Yb+$@Jc)nT z;U8Ygq(GW8-3gWd9i98OBd7~2Mo1!sD<4@&PDje=PPX$RNQSN36f1mpzv<{-z!!02{JI4LGO+Lf?;ZDb3`?N6)>>H)R=tMTRlzbLu3UY98J zOAs%DspNwUj}5h(`#eeEwe_4|`OM1twTJpV8L_bE>TvcBPE69Z&)SnuLSuT4l38^vS63m<(ivZ$$j{jrKymmO8)Z%A`xKpO{8 zLyqse`>dybezfk@(W3@+i8o`~%@k;lZSo{X^z%L9dKXrNe(keO;MS+DW3+T74qLov z`UfF*y8^%VwphRvGFf*uRu`V?-e732#xNs%5@AK&iCMnuB8Z{}60?x5%#sqFjtmAM zH=<m{vbM2r3^nDsYTl4|s$H4#^ z5(9`7i|MTh4WPl1EevoI4Xlt%M(g)vmGin$gVyGuAleIFD8>^?tW=<+rTKFPRM-#T zMnK5(g@o!5oBhNvv(`m&p#T{dX8|rpNiK+@4w4C*)@D9Ej#{-F`aO%)?cwt45=7uF z%^dYr_-js7E|BE&$w5FLI*0qrsvVoiE}j}5p5`380K@xG)#z03#8@Ak*^kqsQ33x4 zb}1i*?E)^%Y^=u{?cH2p*2s@F@5QEEhKj=|TSX!||O zilfIs!mlwPZ{owDFeXiIz-3cmj5kb?%OLem!gp@hGT>rq!S;w(A)S60HsHmFfgvu4 zDE0M5>Vv-2-HYZ(-c2ytzeVyk+!YYJ5U)OGVMky!W~!nmlw|T6=-Y~4ytYK8DuiM2 zqLm6>Lw)QfAs!p-eDO)?|4}5LMUVpG-PGfc0)Em5ge7|=^_Ddk=7C4&&#ExfF;|S% zsIrWrIR+0&ZPLQ^DDeDD;ogB>B}d^!nrYv(O0@~v)~L(`bu*G|r)^z9UO&drjYdjb zNg-Vz=h=+nGw3d0TJY=O%AM*zDP%wq2 znAgTbHVS=>c~v~aN2W3buVh}BUqdK_LWl8`frmmV^h@Rq;OKzWS{~Dl1K)Q zpwwcz48(m9+ie?zT_`Mq_!mu=Apq_MBY?FTKhRR)ypQjhvXA*GB<81(@B6!L#A|~2 zDJ14cguwimLSTMOAuvCt5SSlR2+WTubbkIKtN=Bk>jXCB?VunOVTMz{RB^+*|^M7%`nO z@g)FX!asql$gc#JiW>|QT|NpQBN?Me{z6!qPq$({?!W;xt@NM7c6P!t4ZoG8r3Dji z6HERCrWT}a7vbJ!!Vbe1u#|5~@?z3f42E`WQP@DB6@^t7|B_!!0*p;z_laV=6zo>* zo$}pSS`g5gon1n91!f0=7lrs3yGk(Hh47M`o{@Y!p9KE;OBU=+Jwtt6BhJau!J)oM z3|pLr@5Y|tO%glTroo}ffoXHJd>Yq&R3JWZd(+uTw>O=gbbCYW5^irwho&Y5nnZ?* zRa+muFiiXVC20}r2r4ysk<=9p@f9nq#6=8hhlkfI=rWcr+s17$wWG*4qJ)MOOHj)m zumlY&XxDiaL#MrdFCdP^un4*ZdJgUNbhF+AOT0aaY2QN-myHyLjt!wXf!9dofyaW5 zP1m400xcUn!=)^--r?yy&`hn)wu8RX%97}6ke7%Vi2unx6J}s(r9J~oEBOpe!JCuQ zP?#vKl-B6RVt|YHmdK%YMXd*n3OkN}q#{A5?u!9c)HQf2NZyued5!SCjzPY;hPFyS zgucO04UiWFN_hvXX;%8M;MX+!gvI{FnoXm;`pWvmJW%|trLeP)@?g?uCoAkk=43%| zT}qm)VIx|X;#IMaeV2{nt~`aF7b78_7gH-2ciLeKsIb$ypDystv4|27JUABkY~ms; zIk?qMA-xqpDfcCeXR_@bHKbs~MnKLw`~wFw(vcy(2u1UuN@>wwVv_H}nYM$Cqf-#q z!{g*u37k|<2kvRXc#L#t?<`oDpbk}9{t`n^y!Zv~L8$>fK>OKvrtvE0Fo2ZJXeF*E zua^E2gFXtyxELZ-td~Cnavpu!*=;6o8{?Tuo)`8cWS6v9Pfgi_qco*iF;^nEf(5Zu zAZBeE4WY7lREH)LF?yBS&k`3dP11YLmsVl_fNc`YK8Cp}v8b&YK z9E*~Nc*(`f0vm?yMadgGY7#$1RnLbZ4Wr6k9S&9WahYCnnZM++Wx3rbd84o7ZeDVi zUa~nBC3o|Z%Vw3lK4|Mjcq#J? zBQD$ry4=y6w zw3B~qjMa`@T@V~DXco|SuP%sN2>|HkfRYg~Dt(zPeO+UtBY>j{94-KLZu9r-H1lLW@X~d$pRdtdMyTV^PP3rmjOnD>R_TS0uWHA zL;iHI09wtQE*GW{$9L**2(CWWm@ZVuNSwPjoPo;ZhqK5*jPo>*svh7CCef;)lvc|=EXEv-%RmUF5)hR``bw)0ZroNtmHKYCgLwz)Y{FtFUKPcQTHrEqpzrw+h(Vi*LH^FRb zN|ZU)6lKop%;qW_9PJzG>zN!M>?!ISqQT%VIIuOSF$%kehA=k4Zy4wn6xVj%v+5tVI{_t<;4OK^FT*@(?Epku?g{Rfk>OE z$T54qAW~KA^`gO|Y8~-Hei*TV{Mj}3 z;)Z2lht_pO@rT(w>~DJ-A5fProIi(X%6~TbOV|!DZ15pNqL{P5G?922OnZztuNLhXq`+xp? zK4k7W&pFT8&w0*so`p#2q!VFQ;&u%AIufege@6Dya`=P6FH|2AxDdtxR=gf!No$lf zi^DGV9+uF7dQwh-+(Wvu>mw0gtI#mz!d992s_9YlCps`;LVg0^)&VeNp!mMDO(M?aqg955>Sb)-mypdtSD(Y~ zb>&1^5IhlIxs2^-6L&O-cA)e49c`iwMjI0FCR8S!oSpPUJkqeiD_s1JwvEH&O1h(M zYZG_0i8gUZD=D*`oNc+IO&E8y%4L>2+62F&m6!25+R53*9j&CyyrWevJI@`ha#_$F zjdEWvP5AF`qm`G@w|9xGmUl^aM!&N6bbL*;{C}NYX zsDaTDObj@&{UC^8PIA>2=H0gjz3~@rs)m4-^L_?XQC1#2$wt7IShc5TApy^xr6GQ5 z&|7dJ#3VK*DE}+T|0H?Ojr?WgCZvRXvb58Xl%QCW)5;n0x)(Hsr#der>s3wRi{rHN>5P4T)x&Tuq}ih3c0Ldb z5guYBZ-;g6E9Er zIE01?;QZXMIrVckzDnt}%RP1=A2;f`WhFe%*hM|bJ`Kf3NM}R9eLIos?6ed2o5$uE z(UV(_I(uQ^iR$}>omGb^%?|l3LRlRq>N^OOrvyqf@)LXdNh#@lebZKN^4gQQQoIiD zc1DIz>`RoqhR8i3 zmdcNy^0gu7uYAsyj{fe!v2^oyoo}$rH`3cJn$sC#ZI1JW5cvfw;+;VJJAv4ePW0@% zBi;q&)Fm$j;V@0wVk2k8p;|rbu?xMI|3bu7P#cing}R%??zhl`>9I=}=y&Y&#)b~q z5|IZ=Ecy@MgzeFaHwxcehf{sbh=xPVZ{iv5??>_fVWINEQ|GMCSdVtXk^J!ZSocUC zT?KvuL^!S{jI8Iu|6DNY$wT?<_LaxLH#iUKf`RUBzOkY6qdvXctIRU1e)pHVz5gYx zwN{!dOWlS_D^|?41Kr)jRYP4=+l+Indk)TCNl%=_e6}J!y{mvt&ig9FEB-CSk6rF{ zH(C)-?gZk6=<0u2+EV2k9i?lIsL%}krFA$? zSe?6qJWsq24I7*)7WODB1i1eSX}#Nr`2PXZ=B`jo(o^zMiiLn>`F}u+bdUrZm#a80 z)~!~4#>mvw&dfj9NkVts>JUg7ye=iz7Ub2}6xTJvZ1DoNGxM>31;vb<0juzhjE@b~ z;8H7gx%WfZM78oJliwgkhKXwaEHdTUv>F`piE6O0UE8F1l4B6b53ue~WuXKcZ%EzE zHE^dqn^)7*2!&vsIm&D7pRYR@9-m*5VBrdBD?PM-9`TH)fY2*m4N<$_g~5p|kH=fT z`Ek;w5w2o1lu3^|k~6ZFU$kO*#zpi>UA&ra{qMkrmPjG+Az&g0hrH4wIONWk@X9QB z=X>ImM7x|oyZD|sss+p%4x-Aaaryz0UOs?$*wD9)Achq06749hTj&8pAUqKG8}!c1 zWAW)(`3))I>=#h! z_f}91YJ!@?NMU92vU361*8sp)&@_)Ys#!F8*x_gMA%cA&mAO9%*WtqeoOTl~Q_@$| z^7In`9A0@0fQ3OhRIa15i~xs&0NK0@DDN=#3IL6PmP{WfToPp=NKilj`(xnG$A>_( zsOhM`0RBl*Is#<^HJoCJ(gxIgCZ_>EO|AFC1D9-;ixY03ttgIOCf;zs7zcjg^>SJI zcM%Oc%A`U#PNFk&NQ8BK8I9E=c8!Eu$)$}yM)*bW)dHUt^l9nP3Y0vY zzJ1nOya#8FK+urnNMOGtSwFD4Ggc$(CBx8Umsg-=!%%y7(Cukh2o!{)1zeo^c&xlRrDU03(4V&i^u} zr^QQ}Aw>tE<0wA+@u}?)8{`4jn&1IF^B^7Ht&l8-45sj&Z3KiOmJxs=me~8D8ris7 znJ>vnL^(9_1%1TR!uN3zf^wxdu=h8v_O!(##-LGNcWA6DTzSMM-%a_uaCaw4p%jj3 z1ECFG@S8kXR(q+mxp&7mRgD9yqE<2(V9@N6mtTkm6HuqVet+OTv)QhQ|=90 z>_At96*w?u?xsmeljB4Gj|Bu2K9jbOAcb z0?XviLGEQO2}*8=oI{t}7LFeDW-rmx0AN=km04fD34=})k!CHVaComcEwXoDb3d(P zo1LDJ=1K@L%j4Fxa^ZJE%9dkcc_V~k4u)5y>=$|8F zq5*&U$AGU{jNI5E4DHzTgWh?5O<#4AFwZGK+o#1r*RJ~xdK08}eHVT%@oS)7hIH%( z{5gFBh=NYH6F)$7_5^CT@ly*-f8rp7=`1Qzr@n`DlaCtxaV@hzZ4Cb zzS*d#==6;o;6^5PCJ3PZim)9;4tB2<(9>}kZGL7P(2dsz69}h%M1?HGpX{5gSzr^N z0ECb|AOL2&hxZ^7H%~xj=kX3a59Cgx=is6h^x?{P_aB39Z+1Sa_ppBTL9g>Xy_kIp z<^0>d=oG!EzjY9t=U3v3aV~&ij_WW}p|}4P4D(m4f@`b_`8wP3!!N*@6*dHcB%q-= zdep{R=dy`qn9?v7B=!;!*V(4H@eV(_?AfWc-%bm|x}1wW#37vtQ*d2+^iqZO;b{Fc z5)g=Ans9V(ZmWW{yb%TrQO${%v`2CDPAo$NQV@5sIgy_{??+K$<1-L_Cea^#CJ`&T znVXwBlh11*D&dcPk)xo<7o+_3Z^mQDG9@3JL@J0YS>ZylXc$hxzay2%R*v4d&27ZW>VdnlUDtsK_6| z5uhZ2K>^|9+ti8T8c$*Z}asLRB8!8!lcot}(BVbG- zR-7-zv&r^DDT7mUZ1KgjX*%5GDdNY02u*o9yxeRex8sYSl2(e4w9Nh zzA=L-gh#E}$_Ez^g;TdY{S6<>@|A{^HMWo3o;sK z+{*h33fwDGVyO5FO!(CS_+yWLH^=?hRo7DKCSra1I&XZF@u7`lS`@6t1S8SjO)FM6+b&h=M?w)G5O#O{Ok`ft&mN}#d+|*PG%QQ z&8(OHL*Ta_t&=gR!sPcUoq<1aG2BR+$>L&&`k#Ao%%=9e2QwMG{Bz+k6$FPe{|vZB za?v>Nn3@IHVf#4=OnA)20I7U{%nCRkoaHBC7^9mrBRySqn=yc5PMzM1j8%!p08n!* zWRI9Di_bS%ZoibOae{h#i8&c)vKYJ-_T*xMe@q3g3R3Dld_R@{3C*(LO0Zf2Jeh+( zN>J@4am<67pgx~%8GGI({GL9!fQo^V7v__7u%??(hr=`~ybeK=Z4%~8;PirEBBN!J zW^*ebuTb00fvM~mNT=vPftGwAoZOnxDd%Lw+W`nA?|BOZIgGND^CHboLV=9az31SZ z{1as%#daneJp-YBW43JkPm1419er*_VsA`dauhJ@auQuyNBN4*3(H;&ST>)5G^&?=Z-hODr;V_}|0(bkCGJ;`?#N{YsIbL*|%TftcXk#VIVd)Wu0^uvN zWI1h%>tO1wj0BpS%N9G=Be{GJNklgjtDt0gdLbUPtiE(AkO>^*pF=d9XV;#R)w}KeaTIE)7 zF}AmYHfSZ8{{l`M6mZ%A8b2iSUpox(`r5w!;n9Y^?(PASfi+8EjR9+l|G>%Gi2mB1 zIu2=ESSN!X@Rx{-X1?lVUw8k|I0W6;#_Hsb&aR%`zD=74whRuBjE-%a*pB!;^?Q&G zy|EV`8|hDYaVw_m$Moc zvLAaqV|?m94j$#c0{05;DeP!WfFx0#=qZ0m}1*! z592=qic@Q$7kiF97{T5Ef{kB+Kpum&K-7z4eG6D|_Z=pCD-3c2`}g0FR1nHzlh@@G zLRV_B!j%w|d2S{^8geApF66{3-R zQ8cwr+k|CZUlh&5Vh0>*De~wHc!o0ugtRXTk7MLu%kL!164y?vo*ZXc;#!P2vRUTO zye;9}gk!7Dja$FMh!Z3|$gIIsWlDl$;r+Xem$$)GgUsq3@$DGv9v#EWTQbz?#p{|M zTBi9rGFE`b%5Y9W{zAOk1)#nT6;Sg{&L8i`DawBu_Igv5B%AyX(zo1#lKE5EMJraV z;rDod%!(DORxqc_CcDTy7mwEH(JV7#&5V?pS(&R1+78UMtsdp4Ho1jMba0;6O`dI- z(O_vB9I)-HoHyCzn*s^&@?uFaZ=kf$yA(nIfP!^N-}Ba zZ}O~%M7kN8@(fw>mt=Z&twIdE4dIna{+SHZal-zv--T9m;zG7A6*RyE=c=&d?vS6{ zO9>XTyi|Sfjovryd8rV)SX=bxS&U~xboLLui}f9cy~k`K@J8b<&qCDfAlv0hb11HE zX#MQ+P|?Cc6A$I34kzag3=MYYjdygj+HWHTwjiwET^_}`L6+^a&TSZ2r-MI&Ww!yZ ze$|h>iCVKDra=}roAfh1KN^8IIr-ddlFxZWJ{zFtob)IvKu0`1UVmW9GXNGIr82B~ z&{DmZZKzS6m?b|>W}P;GRm9&!cX&B-QiP{~#Q6lQJW+ax!nD>XxuJ4SC=RMtp5YU_ z`WkIhm6_0knN4<8a~1;RDIiW)WhO20{Dt^X{*!|AG+ds4DR_C#T$p6C91P8L;qvSa z>B3f{X;5+H>PwZR(N41#)znsj{b{GF6cqP_-S4cSt+2^rf*M@T-IPUfKET38t?+fl6**au?7R@~+LbH-z8_(^?dD?ZZG)1lv|z+TB&Ai*8-Ee#zeKO< z*6Jb4L8S!->|{(U`Wr4pU?n1aE)kl7jpZrpdqY7-i{iSq~}B}L(y~aZkUA%$*F#Cm+QC(zE&eZ z1|3*uAOt%Ol7;CYC`OH<>$v>cpy8(58 zY5p|Q%56kt$V~qQ>L~fg?e4;wUJvXvJ4@#UI^y%tjc9r^413sW(IFM!nXbbx8Tdsc zYr+B`0cSa%E+wO_8gVQ~TZv;i2b%_NB^5(sIl2A45Jt3KNJ^ucfOdTGfc-l3=$E*+ zM&TDd+Cb{qe0vx6TM)IkE@;EY*|N*D>2l6~kCq8VX6S_~o(-^~$JLs7sCkvu8qC=# z?}GJv>u67SIs`RQ;2k=I7;fW>X>_JM-JIm25VyBc(+yY6LnDPCKr@*0VoAQ(nz+}R zSf9AXn<@{4!NSH4uYS`l-bI=!oRK#~!WnrC--zI2adfd~6m_!64%>C$xAAfxo`;?J za3Dl4V|SUsf2LqXz!@E0&P3`*X^9{L(y0+MENY-5X$JFu2a?zcVs`h~u#>Uv_zxvf zlD_9RM?E7qWo~Ma(Ea}@wHB0`^dBGh{ib{<7tQ@R@>wkd0=#K*2{@}^iX~{0G?g52*%Dl>}J&rK2A{< z4qDf4hbJ5U?Jt$irEjBIcDZYB7-h~5#ouHGB*_`8+SmIAySfKqGQPLHcD#dmDwpX; z`&3oSE~nX!?Z_L`TR!N;Q!VP{_icSgclP&0z#(BjFq``c$8mu7fTj%W) znkf5`R5{KxxsmRpjeLKEhZAZ{f@mxJOfY_)=32w{WKp6#*9Jw6Gg3`X*0ONQb(wE9Z5` z%$uXu+2e8I6h|S_lP53slq?G(adx(d?J%1=w;06i?2IT%cn*=vazI5kO~C97V>c6|y#R zsqNe)Ys{6-2v6@yB}9^8Bn46q5n@V|bE9r%2ot0;!ki$q4FGKH280DqyDjrPrJ>5R zG^<+pn&OXolWQ)MH%q!1cP0#^G3wUBjSEWeM=h4&{lx;cVMLzAtZkX6%Ue|U5`hZY zY?vi2^T;U^pC#8m1naz@O!4%F4XZTNvrDhsqQ*sI13~~BP-!S_Kzdb5a;)96Zkc}N z7Bxj{pGWKMcAI<~@jKcDX+*Oel@_5XsCAm(e5-E<4dn3QHT8Bw`{WQ((thwyoBXjA zi`WDLIGz7AGJvGZZKWj_quHG?;Cs;A%nwB*pPE>#7=Vco2=bz1IwSZb!$k#ScGA8d z7wU2$AU702MyP_e`Fh-u`B>O-L&!C<&u&GYfu)$;jpUZR4Y&uE(#XRO*SG_=o#&AZn+Cr^ZM>Uak>nc3e(;_s z$fP$yk_(4$!bZVl<iR5cw~Tk@SHqggM>4i%(7r61E=nl(F?VZ6tXsV0_Sa`KKya#u0cH z!W9en=t!HMn^NFjQjVvR2Txo?=N)cYyY%Bjs<+2PP>vnJf*qqmA^)9ABs-;e@|Fb_ z5Gs3$DskTR0x2V^1a73LgkCkQDof0CR2Gf7(UJfy%!X*!a2F=%*9@!i8t0E0$9gwO z9MVv!uI;nXg-vk7Aii4g1zBt&X}iiiC9&eD7l$_06*N+(+tU-F9HLp?$qAz)Sjw1_ zpa(jrgOc{++3w6C*D?2h=H3Q@5?WpzQ8p~4)UB$T;OEoPQQyIj`VM~7>%OgOoJ~vD zw{KNFmtj&5wa^|hA))(*S}c<~g6zXB6?3{{5ud-P5W2`sR~Ss;o(TQJu=|<@5>d z?+iSFUh7!Id(G+Xn?|C^Hdrivk)S_C78dAN}_l#|u=hH~6LU3+6Fsb$vXq_e_|_Jw4Aj#OylK}bP) zqC9!RH>xsuCELFfaNM&7yRrDgV0r~15QdKA&HV!dP^b;T=1`b%_Y=h_zm%kI{fg3* z?fCh;H01`ZFvF5g6sgj#v;)1nv85oP1LeI5b9|Zqs&}JVuiKpY=vlXz<-5``UJ+=K z8L@L_#12{q5%gSOCYe||BhNUUu@UBeys<^O8#~O#7R!Oh7Xpr!R^m+y!q`F=V=+u% zx|@_M+dVnnd(8HeCKCMgR`IDiY;RXbk}><-mmSB7iFr50<64v(VcF zy^?1jpko-}WVM4^QP?utJpeNYxF-+$qv6@CCQ*OzF?Ft%jbc9!9Ybvz={gRYn%#m& zpwCfNka^{h@kTt>zz6~)iHw;T^PM@W7jw-u7%ttSNckCxJi=~Y3&7Ocw6CGhrq_a= zV^#B@^4t`Ytd4ef4h?pVs=i(vB+ea@JZ+|)AL9nU(VAn9+AP6{rz_WX3nA3As#8=i zA)Y@8o#wAfxvM(GZAsbF|&UADxl|G83R~{qqxQ+PHJ&;CJuqaxD_`0O!ZoCp?y=M#z8>IuhIwAC|`X=!MgEe8{Jq`Xo31T*2y z6zmXaG1(2JF8&rEN;F%%_^;p_bJsIpA_~C-c5q`TD(Uk=$>2DL|Z|Ee(5c$ z%eF2-Z^G}zg$auDXHra>GKdyQS z`fY@-BtbuUi<%&pilpE3dFFlXWXv`UIhg9h=!X>STrT|bg}>P6T$~E>8VeumK5)#w zxNr}0Xy2Dg^dk)^UTrTzW91vM+!%W(8g2!^$AExqGd5H*{5}Zf$uV?>1N$l{=#1|G z#OlBe#Unz7t9>ECXwx!5mk|hvhd&nbO*m9usN{PqfW|vvVTYN2l`CFGhd!P zt0=DxLwzMAS*_@vfO*Dom`Lsg;qXI3l15GIX<=KN>2+in;_49C2%*+QV;(DLO?Wu9 zgQL*j-++DD(hjU35#mkohj{J%p`9)0A%BQB!w4Dm_lI~r{3)Nq@rZxPMcpIa>Oep2 z0)b#DSG43bro0V7SDKL_L}AiVK-)jn-?CTcVu@_HLTX$4I)-*VZef?=Hw5ak8Da5c zj}{+kVa_EiY%$rKrBDQgU`&FtK_0cM3z5dEL)n;Sz}Tuq<|Vv{z)i`FAxzYKYb1?q z64=-CQJqm(T;)*?NjNBYLZ;o`Nc5Kf3sY#=Jx5(H(>&XS%ZQOedF|$#Z%!`j-qt-( zJP1ofGq7a=T_9~Oa44Q3JRjX4?Sq?AH{NiP$zQ2ED4RoiS&zD1O<2Ru|%7a@8u6<;_jA$PO$O>C}P z7wcb7cPFd$kzH7|eKn=_<5;b4{0D^mfIaX+tlxN>SB>QNCD@Y%VdkpVU-2d{=%w8e zavyy)%1uoE39)hd_$&JnPss(u8|kaz2gTFQROd}#A3ATHVK=y5Fxw|l8vYfbX$6O* zs+gw{cn_3NDSo-q*k!KH`30DC*e5Xb2H|Y_d1k;8*pI4|e40hO9B^X94t!l$NVhcQ zdw0MUoht5Z_3%DN`g_I|R79?a2ReULD8INgtinV1Ar^N1xsTeo(-9=-LAwMM$gapu zcmUOp#p~p|_yzwV&BR)oBhj$G4Ap_`r8HrQ(%c14Kow-H`+B5AJl07x+txe`3R6o< zh80^raS)F&-`1?J{-wHFtBMh6DW~%vR15hZ5Fjwx!;joLTUr-X-7E?AOR487op&K}J2rmozaUc$ccV=D$Z7+=##wgAfz-|VpMI$-j-;?nOuysfBe5Ya zpF@3DpM9qq=fKw&`jR_U@7H!X%7MDHVvFs^z}XH`WIcY9cHqsdf}f`N!Mo_?bJPln zWHQPZ0wC>xrBhd$e&wC&qGeUc-;q%rL&wVR@I-$*MwezEE*%{i$}yU(_(0!Ce~Ju) zsQr__QWgEc&!j{)WbG`Gg%A2U?+@&sZ8bxin z>#K@7beFndW>I*@m?ZZ=*>k_TsE_YbmuZjBL$__ftOMnb|9E0#NsrG{Tw7=T6k?Ya zLWotMpVv2Qi^&S`Z}5L9{zGJ-8I~jOmoH=^^oyWBs}nk2{@34LP*y`}o9!fFaStYk zgm6-?th8Es`8gOKTE(6D=H}GZ71T81URlbA@;>BM{=npF@ZlhUF_Z?Th!f#{5XT7d zo#b?=h`SbVnTVtD{#d{6ZdFaKlxgzNN~#DYM8piMl+Chg$6x?)jCsb>^;hmz=U2e* zR&KI*!oa4Ln@m&WCJ(I0V$;e^=0$NATsX#LnhR36r;TpQ@n;`_cKR>AeawAj=X%_} zL@D|!y~#;yJX_PT@mI>Gww#(rA;Ju8Il1IKOzUVimIhg>!}q93U2Vj=Y-mnj2T|E| zwp_Hs5uc1XJBCIIQCa%3_&pOrLsAx{f)CP6d=N;=j-_$B6>B3qnXW1aY*f$eWL>>i z&DH!Z8cs)x`i?~&b8q)vR^ZI!iE@(g`N>u4p4F74#%l}3k# zU1s+TriZPwdj`_O+U=gcbad}5vw!tB?p3|BMJ2&wdeClE(*0}I8(JNsIL|u6-m&Z1 zQ=WNdu)?8NrzFpfGgdxY2fkd1!^rsEU#mI(){(ARo*kATZe0Zi;EmTUekjnk)$Onj z=z|TGj`2Zq_~7aNindWTK6hGP%!LG0U}jKB+28raG56k!|MzI5`{CzEeNS|w?z>No z%kKFK?4+m6mXAS4`I|@C^hZKZS)IfJ!avV;y5GaB;%^{9)WEIVPazJS*x=-I^mTp% zGXh|=3xL6Z1&t)~Kxbtm>9ZK=gmQ}!fC5VZA|&-hCdf`w*-p&y$#nyd$a##X7$olvJR(m-m}OJR8Y@KEn?gI?Z{Yl?`UYcn;5V9e z#h5e%x-1h2kOm)eE*5ZCjG!wD(m^C`!i#gOC32k^x!n?3Xhwd=5?Mr%>B#Tub_?u^ zd<9JOZ3>mNdR)t3M`}}Oh~o_YE>yxIByOeex4-bNg_XXuzwl;6Br1?na&aqtoAj^! z(!26vvu0btYFFk(f&;>9jXTl%(!T2v0CQ(vEbYE#%3?5lNi;@iE+hag8I+*J zOz>wUsN58~Xa>C0fGc#$589IR%i41X#=BR7YjztwW$n9`*FP93uOF3Ke5ZH5R*exD z&ZvxAg7N6Yg?k%*IRQMJ0RlKx&SU#V(%*t4;4nY<9|?stW;`27e+inAfhbBj0M11E zZGl)UDHkN%SPjTbN2*IBhhl-ljpfH;sxfVnPEj~2XKYVhqm8)Bf5iV|fRUeac?nT5 zet*`2vJ9sq)^#y?eyH$mAxt`!JhCX*GsQ6YX_5_m84lGTrRW@z>#tEBqQd%dZ-BD8gO>$mjRz%{5P2tTCNQ~td_>PrbI;bJI#a^KkIkvYT-b0( zstDJ;o!~wE9TaO-MUgEN1JVe5HTab?*uKkMm2s@DndK7;faZBsh4hYt_E!FpgnU&M zl%Nu#Srzz?gqDG?K`BEu-R=~OdBOq4h-U~*k4zyW#a%ztty1J-4KETKGwH2ysOAj* zlbrEpu);P%j#zks7^~TfnB-=7f!G0c&@m&4hDdmU7^{KgHD$pqosy|YR|`DodhP^* zd_c4!>l?TuOw?iRQQ9P*jna}aVSV6N-n1w{=nd6?=r{e!o6)e53pQ6$N}AI_GB{B* ztHq?Q0@c?B$zj~Y*@bBA-(t9ISy4ieAX$Kz)1_Z~=LvzWj!a$swRhpHCfnlF#bjHf z{MX(j?{0|fvgSIRA-Or>9tuIIyN<}1Bc8^1=U-#OQtX^~(&VdPn6W5<*2OQ__8Mii z1pg@@&9)o&$?i-LINNKm++3UN0mEL;J6TVi(m^w*2Y9)}UrsMLY-&;WfDczrI$ujF zH|GEH&i5a3j3z(008R7%^OQuPs!~e%JKC&c?L7zc`_?`?9h{;!Q<2xsAl*7~3l$5v zKi2PNyg!zT$8zf!--0!OL$yDapV6<_NV-*kAq$j0lCGALJ!CTuQbYM83F&HicVAaO z2RSdpbGxbcrcd7&tjst~PD8UV;F=>)A9Fqjg3+qZb}e)w4>ugcU4^Xq1j9&oESqbr zP0oZJJ_;E73n^4if>a91m%Tm@#Z6vAWikM1;0i$!nT$%4MwIiN<{-j2S*&MUsZujAA6xKTqlIR<3p9OOLA5jEqGx@~neD|&2i7#;Hu01Mh^KT*6@J?_}b|6twjoJGDdl(B^3)4^k9@n{<0JuIh!cc)z+r z)-%uVE?vvyh2G2d)+o2h^3P?A^j^MoL9A^IdPTR%G`xFaP1Aiy=buyW+EJdXEhZ&* z&8zv3eeK@-PaQEr%7taqoCYr%Q2o8%dXqI=m$qiooo>x6=Nd!L1rh?qbMRuT)XZ|$ zAP$eq3xf46i|3e^Ncyr|B1O=+L~f-$ws(PXi7bXYIE+(7cwn6J$~3$!__w~Lp>kR% zQ7QhtuPi^mDyOrL-p@g%BoZ0ohvoUUi1^^WQLLoXF|4Fk848sLLy@PX*4WA?hTyb- z6BI_2$Cli{xp`C2m;cn0coAF^)hQQ+J1;Vnt1!GZ6ka5msAP!^( zF%IxV*jWcok*iYgdC2R@DF+`}upa2kGHXOo%o^*I0dg#}Z$_A%tUvgW--1EUqDS-G zkEL-%{#cwLfj-F2L@PFy>e~k7th4B5t3~t1BA~!|NH;>!<*xpQKeUw}uh2^uC?^_=`^o-xTo7%}IpXi^>7&vwQl>O^h|J9Q1r%uXHy36ZDV9wpxvwSOZ0Ai%gv zk(AtZ{FB!4PC?`NUB_E+oVe{6JM06F+wzoUa{&$ej^gSJ;|KKsNk_e5~iC9I7 zky#8kHIB1>0%!d+OpR|k>h)^EPPh@p9qv3Nlf79p2FH4)FdA;gkY^m^3Lr9bSz?S_ zmY8IsBZtEH4*%$E)>Wrm97D%LR~>CruZJX;4~_Kt1`D>~VQp-TIWLY8yOY?f$1|0> z7-yXk=ijRbW1NGCGnZn3;rDOv)mrdo4T6J6Z|XoR%K~&U5%~NcT%xj#xXkpWY4cWs zH~Y6!_zwu&sKqXn`*1PJk4>AU$Zb$N$UGI2h#)8oupKu_f3>lqX1aL>0GbIQ{b*+& z`w5bh2T^$&?k5}(RMgIgCOY$P&S2dCWK~ztbe#Mx{aFi9lgxMEdBR%!QdW&;9^*c) zqSB9q&TT+j+7C&4^#AEjS*T4bcviseZ!Lg70;50Z_Ltktvd!Dydh_O;A`b!8#V zHdym1(xWbLr(Duor_`{m^k*CW*2P!gyb~FF=Ov>(-+Ycsbu)PbOLgqqcL&xEZ_*cJ*Y$9=GA{y8eX%TudTuep z`h8hO3hV-L%+(CBLy`I}P+`tJ%(2f%dk$3eCI(Go$79=2ekr(jX~pQsK0FIA#&6Q` zSc+sNS4dN=n9l`>SY5-4u8>GuRv_T>xbsjzKj%tlrih@pzp`QKvqMszw+@~5k3t47 z>zp|R9jj)T2}oT7A>K9gM$kDA9c3Bi(x_%+t*RZclL}wLYPdi|_gHSacRT`GdUvQv zY~pS0a|zz+z(J@@Z@vg5D6o>*%;t*}`6LFos+RZwWiimIt1U)>^&Y%Hphr%rea#kD^>Q&0Y#H(kx}ZBNq{VGxg|#5@;k3fWU0#3zx6wBmR1~vG}W1kr#5pjE<@P49+Sgvg6-_!TLHw> zB9L%HCOTpQf)o`IRKfRbkhxxj2)Pad-V-6<7+vbvcm2hfl8_29JuTy%8&M(-j$!fs zB_MOK;Br|X+Fub79^SUW`o!md@^xx*>>(7+{C=QY@L_CR|jrKphcD zO`u3XMVrkCrwmbZ-W{!AOZ*ruuYfE$#=SxabqmX>MnG6jt&j!iUA_FIcfk@+fa|i9 zmmE+5$pV9iyXrJhwgF{b$OuPC%+~8pdh09B*W-Dz(c=#}XLdMdd=|O3#<={}dBa|G zeOVT@<@XNi&&Tyk9>wE(ZG_S9Z&1J2Vmx`jn*rYMW!+(1Is56NuUp8PkSbL+%Qw}rSPE)?n@vJ2{q~ObKx)9jHA96m3)P`NaiQ7I6boL zk%OBE?I>2BmHsx|3(-6oSVSfNi{V>BgNG!>Of`pct;pgW4Uw;sv50FignSW~XJHWo zX*usQLMmFq>t%kja{b!Jzy%ird0fWeugl^s{hJ+n7PN+}r~enOZtQDpQ(OfWIPx&; z1ne9cu9J9>XPeQ%j6qYL;T&a2CleG1(u_#Q?MoEsj97Ny&A_N>O=aA{??GUvEfd;) zX{T6o8mml37uBXc^UPoHS7BO)g3SecIeMY#c_erS(OjB~4!x2Uube^-MB{Sy9@}>Z zVs1em(%vNbt=s)62AXilAV*y?2(PAS7)-(?Ajbw_DijDg%w*2xKvuT1iHFfv-x9X1 z3D)XR0ICvPnzIR2Hjo8yp&nm}%YTsRmuyOj(nin|J2I+c6L3}xJ`0{RI?l0wKLpEn zWF*&)jSoUU828{<$d)6b6n?)pcXw5e!wQQ6;a476HPk;!(tuoAjZ%q-f}S3@_d>M4 zL=Yb2mR9`x1Ug<@4`~u>sLS=P#aZ`K0S18GXbmkAgL`LodShB{CO(fIGh z;QL}+jS=`OZHiX#xPJY`0AK8dK5|)z)H(}*OViGJLloy;78C=fvXqy?PYO{fhU0^= z37TJ8%4$^N?tDFai95cMilnlnXsI-o$|{YOCgzyjmC!~ogN@=W_c^DVa2&ZlE1*E=OB{s zwDdt~r|lwbAk5RQkS5X#!;Hj6(w8J)#ZvVN!CA=4y7p526wS54E~N7EyF1_)(>JoY zw0lPmX-pGoh!orx^ajexFXJR_h6S3pf)+zAYWfp;g`h3vT^w%^HNbmA?h2AG-x(n? zIi$NVsdHDLYhCLiaWos>#gTa5(vN0C0&zb?pV42{p?js%=&$=9hiDn~*EpK}x()F} z%T$Mgk_f$!FP34741b;?c&$>X%f-LxY*3+y$K>!W5eZ;JiQAW;#FF%O7$%_rVBfc6 zmf#{IK(B{eK<_xchvnbU^z5o2LaVF7dxJmU?_o)$0z1YH7qj6eKurv9hav0_z2)>e z9l&i_L`{K3bUVZ!Y4YyXQkG)&&d$e9hBlZ>D1QeR>*NcFX0yXs4ZBll{@N{*?Q~oL zy%}8r=VsV-gb6kL!Vvj>vN(o`$#2cyVjG&U!zZ1NqqGQ^DEO;(&W)(bo|FZs$+Nja z*&MnO=d~A&w?t!^!@&zKouj@n2p1Y_ovLb!mJ0d8D~y#|~gT1u1KOmRZCOfHb-$Vi%#5F<7*V7l#z zfGB_uj}J{vR9UK^*|`{q|8;N2IPX3rt;>WwDXT>n+h}@!$p&Qp$#T{gs9RwgF;9yf(xXHu>`qt+ z;~VfDoj{lB57^nv58$GAcY^eo1Eo@G%r~%$E(*kFK8I^BPq8%fZ{{bAG3|zo_Elg* zm=|C)1IkHh`hkjt@%rt*TN)A z^x*{a2Y07fL)iK)Fw93wXa`a{ST1h%Kxx^&EBP`tZgoYpGhgCy(?jTrhe~Wic7=uJd9r)QGUea8f+^fMs_oPPwtp+T8|8+Ot^VL9M;b16iMU@M0lQG_9De$dWwD z_F-C9%nqKW2!mXbrjVQFDbl^o;C1o1?AZpli%}4bIB7>FL41nLzYkf61t`8BwS%Qr zF*^;NRAgI(F985!IA~#dazQdUL9|xPrfX%JgaV{v;lvSkEY>VtQ(@RGMjIjFOGBGK zD-=T;mW}%eqT~gbRoKNY_JZ*bYJ^xCbZ$HzA?KSA948qu{~1wO09nPQX_4l_RICdw5J; zxoY+Dj6nQZ-TAcFqpd>+?cRrFOw0EaZ%7RMq10xr(M{9{JUyPBx4z>fR^4uv*#r{{k@A%oSR5)1%@w%>R>>SC$k5q^&}b`k2R z+ynBGe&xs6QYp6vSTiM!uwsMqC6MNjoD8mq@!VG`q0TOL&>S068XSuBocOdO|4Qiw zQ3*S=OyOhcBT4o_i`2w8u>!14Gl>l%dm_nImL%F>m?D3}OamKwdqtX$q+g=eSkquu z!hb7$Vdg$1x$@xJ!X%UB$IXnOQZ+N9Q6x4Uagw#hp!dDyxQdX{f z?xB^nzWnQ7*mM*gXtR`HS8#s}-E$$^xlbzLlnf{&=D~kCnN3K0F2sh3zbMnSeK{pE zDoZp^Rb&MwT6gUZ=`w^MtIJZp11S=a3jMSHh44t&+aX-uI!%bta8pCOJ$z~XKAa8K zDx-{^_3%N$5IMF>P;Qz2`E%Zt3oPOe%gO%n~?xWnpQ3Nx#?*A!RG^RpI)(iOQ!MIFhoi8$?~K8<=3~P{)aid7MUy)58ui{R)Ct?g zPR=UgzNAD-{nk^Ep72MDC!FoI$hI>NyAONs>&J|@u_x~WiWm}bs5RAqji)AGtx{o^ z%gN-W51s9h@YK}KpPEE)%F}fLJyPtbMct-DgyHEJvUVMlP94)&gnbQ_+rcw`9+GC4 ze*l-A{j*&?rm}m#LwU+BKS@ROV$WV)BSKT2ogNa?(f|7ea9DR569Bx}Xi_|n zaX4cj7(ung%So5h15NQI4(AdsEKwaD{L0-030d)8Nne)tN)a?(xvQe-eiBX77^2c$ zu>G;ct+@K2$MF+~=IRyI#)-Hi&Qlhv+#4dl@0dvcWH!Qd3)+)4oLpX#u|low?t}+| zu^kY~8&g^BkJ&aX2*tT3L{1HX9f`=9>C5{E`p0}Df%M}>dcrAC<_>9)3qsvs5L+Uq zu_GQZbS{Jd(XJ`+#b54r#a_Ku@khX=9*;muYugY)H&=7JIAd+|uf3Q&wNY2T1p{QY z%In0zYT^Sojj2dq5f0mQEVxJqlEa<})2D0P@tV8mO8{jwBBJlYn=^5N+C?$QN!-^L1Ry+Y_ zYM$_a@Ps1}{VFcvM)a#uf#@edG8)mxjrFcK46qrEKT-UP^JK2Ir+IeeFb3)&T;q-SK4f}*b@L5#;pU?{{4uLI<8p%tQEjjTOp*4wj@ z;54;yW>)z2!<+l9`36LODh$jZ8aO%CxMq-DYzYd_E|5Y7E!2t60;u=az@wKS)X!y#-QGB1R($BmM zZyj9`By{QelmGK;_|!VHc%OY3#(Ha&+r#DC!gu1)7;BYFDvtREH*W^Vso#*X@dN4r zDD5*K)Sp2|Q}!B+$}E~n>{*CIU?BWwP+-1Ie+`NB=l|r5G#pVd9+NsrUGoQIqon$m ze+tYq_8PiX-4O&|{%5aC!vRteDc>LAKS18Kdxqy)PmnQ>{PzGDXBNzfi1USecD2dn zBuinQH@#W(WYSN>D*1JzW7r4?|0PBM{!2JyE>HI$1j1qQ9d+S{)yscI?~Zw}TkNEh z@xxhS`JI40XLkDUSW)UN;$Ym#H^x8B!DRmaI{*A70j}eb&f}5RqYVOFrz4%G5hu<7 ztHJ#99c>ynnE%yhoAcGEz?e*~#F$(&Mm>CoF#@96)2jf;-hM7%ay082hjX|J(lKgkP^E599*XN&z6@(6OXq_fAF+7sb;g7tp})= zuZ@;BNBaj2BR&HDb6^Zd?6MvN?&bU?{}4lfmQEpk*(=_pNMz+>i1P+f8xW--ISmFR zOxhMHSH{TSi1E9oX~SNBT7tLY(hCZ6<}CQKOfYz zn(l{jtj(q$V{lg+YL!zl^7AohYy+PxFE~8wxH?y@Y0rTb?V}+$N&61@R&$;*q)F~$ zxoeb_v*i`Dv95F1(7OIuulS4C)qr@~^+c>8?4#si@=~*phA@y|duF3U+xTOXA)Um( z1Mj^8=9f<5D|Y%X-g(`|VWTdgT6NH}4fZh>g;l=tm&X7&{99DlKW!d6eNBP;`u<~> zA%|bE0@&`K!i$YJ5BSuV41j*=U%dfOZ0u@CCQs)e=jlg8f_8oQua;A2m|TOf_fh8Q z`-}v}e$D-DJlO~Ea+i64J@8j=y!JN|L^co3M(W&4fIs_aP|f~dHxi;O)Gf*M=PMhj z1xi1hi`2tC_@jzL*k3KWwy-Q}HeCY(IoMlNUy=gf_)$=OA+~{zDg}UbP-G^1xAOZh871W^_9fK z`R<=@2tksV%s>)c>L%aD$o_s709C62aK^>^@v_OU1Evz*=@r45$m2|!6M&8B!GNbR zf>%*7*@VrfX#P3z?OZq85CzC-f>86nbh6?)B`Y5NU0laERPHpIcKApaA2-?*2Yemv zqx}OzOkR=5xA>>#`Ng)m1%XaOd*Z1OHX5cp31fYuVZNJqmsyO4+p>e=^0Sk)p=k4MSZ66CyueVC_Je4fHuYZg5=_#@!oz{5!{6Heud z?bDhtHCH3MuRa_EB~>=3;gf8m>NMj=|wK z12=PaJC3zsQUvhB#Sxp`i5@*n9LduU8X1kVw*Ya|OYw(0nst6N*&IAR!6#dhZ*m{~ z!GKv$`JkGFaESi@u`1-x{csBYWd9mv(e7;(82Z#xc_ZG0E7rjd2i&)T=Ujzfxx!!o zgIQHUOkhn|<&q1@K>3~uV$S25%|9!lO+4-?krZbI+eW{Zx1W08E@)aG^#HcNuHQ4* zRH+o=eH;AkqDpSEjt&rB(WLihBQqty9?{H<;7FsT z1g13x*zc_UMu^^wH+DC3QsuSAQ#@ivBjOb0867BC3n@PH<5&> zai%pvKy)p{Lc1UziW97s1T)J#t_IlH1xJ3Q*79}(sc(vLZHRyX<`8prKoB!9U}t7k zRI<&Do9tu-e*ud0;5X^aET(O4#A^(5bwvWKxT=FZsrYKC#{A!{?5&UusPn`=2uDCF zh20Mj86!!03(sf!AX$x3pOJlM;2|3VzE#Mbzoy5%2&0$Z3&j81y zfb7~rY!A2c#a!|1eMjB;H{SO~X#)$X08$qtloaCXVs-sn7LTfMsx;a?rb3*D&S(Nk z(t|OO%^)Tx1yxunI2|A8Y}SOPw%sUI$B~pmBig$bzhcj;uEgVYCLyY>q*7iFkt!-l zZl)4Xf?SHzH5_UgH~{=(fR9bU+`FPa>ImlR{Nu202gI;Z5Wi490{MhZ@$jtxgQ%D9 zX505k4Vkfth(dbo4%gFrIpTNhlQL^#g5pP+hB=!#+lXWXjXe2x`Ai;Y%=D)Q64)q= z{|Ww+dVqubezP>Y6_sPdp%ka`P~cq^bHNbYh*_Tizr|3V=%ID~1q1<4(V z5!F(Gl(nF!!Zp3_OED0udvLWxocwM;2Ql19UK`sDYW4uq;w4z#LKCmhn0Qru;)xI@ zo{xlsMQF-X3xWa_56mlgXvC)6cT)kVbSFq|s;)V|cuorO`PJYX>+DnOhO~+95p#YK z&@#U$c+ULlK#K-b`rPZ$qFMcnT~14BhP#D=xtK*X=k8@SwMr|KTc|-b{OE)#|@LCEw{wX=!lf&N}hEr%^oKZbvQAjRApQ)a4GbBl$tNh(SfQ|qW zD5K#NeyjLG#bekYA>8f?2L>u}kRyC9LLd~OBN|Gxq#O@U$qO@5@`ROiMLUFt242NV z-X!SZHb8N!lAiB{WmC(<>_vao)^&vCqMyFIh_R&U9{2b6*A zd!SNF;VE(=%Qca*6wSgJv~CTg0ALb11@b%aHdPC`HaJemSM=od?giSqHPA5WPQjnX zTKvgZP_JGDr7iLJ(@%fk3tBw3GudN@QN|G@09LxO+z?z7GNPx?Y|?xfQ#^}`N3uJ_ zJ2)QG6^OQtjX?BHpI+}y()!~eXB3UnP?Hb|1%`FnFmXu8jXAHfg^k)s%9LbHDRlO% zfJCE?$b%?^WAGJCkN&hk9*+QsWJe^engm6p>>AzyTjJ$2Hf!%yPN0Lj*QZc&wB74) zy6v)J7lI7ba30GLYkRxI zIT#3$LX!SI%Ny=b4qJc=2!Ivl+CU`Ui234Ig3TmxAx^Oo{(uL)`=K~~I*PFM$yTtY87#zFTDobpHr-<(&Q(-n6>K+zmBQ%R_0u90V`-9zi0nN=I z0kLk3-A1`9=58BU9w%YIh)nUJ?2R&IdM(sT)`d3;P5;Nk=q17kyc|Zhl8nFyR>)IU z$X~6HKUxEygj%q@7`9jopgR$2!Tp(RN%w^n^3g0yvJbc%gHfNytbvC@$?yd=h!l!2 zXp{)X?yXXKY@A5x!F|$(h(+jt+f!gEoX%M&?<09BVovcC{o5vRq_6$M%dOhJsWn9~_m7?+#1RDmLWz4lZ zlR^Pe9wH?`SfFu2c&8AuJ)_AYn9W$nJdFPqOa?7vL(DhPKX^1}R|D+3Aagb%$p|7o zVZV`oVpS%8lzB?xF#06`t*PXX&y6)>kOz90A}vx19M2m#p4Wnq_@m9(Oe2OP!8aA? zM{?9af?rET&WX)5VmJ;XEpRx1$`OwCGi+S=*B-cIeH)s6=#&n*H|8+_bGG>xNQb#V z$Qwh4b%7WGu|SN#2YgK!0kJ@gz+X)WsJNw)SRn>TtPmscqM448i3MUnK9gw~7y+?B zjDT1mMnEhOBOn%t5qKz+OlE7;B4dRRVCD)b`vLq??vom0_5-#QvttRm3O9&-63Ew% zXV7b`3s=?Wo;SWocgAu^v;?LeBp?USsdZ~g?Qfz}7w&)sUOP)BDXmSWuQ=g7&LR}~ zoPOZ_I%&8@Ds8=IWn0hoHQXx5b**c2#lT)j2_}sfRWE7_3YxOHX z_b$+CB8b(qUvhQDu$l;i)pI32J>c~G+Kfgg)Rl{rN0=8@~qXOTO?%Y876>eZ(_P zXM+e#c}lXVBMvaF2JE8~xdH&zsq#ace3*RcXk1nQUAR%;mjDq2k2cQvLp)B(@7TDr zX{wLE`Y+lzD~ei^EFSNuS(?N46mBcLg*I4{MCQxvCMjjwQnct< z_^m2ikn;9Bv-7}u${+o7*HOipZx7=3ycJRu$~Mv6oVYzVVcRk9=7?ndbT=Q;W?80F zY19yA(5QF7o(f_(;tI$mI(J z1-G^l#F9DDMi&tJv$POXeOdFC1mJP5t=uIawAP zC`U~5K181*rniA&?~C|AzWoy~TEhMbI3VhXzC+~fpUj^pXEL?9c5R|>1$!KOR$`PN zyH<15wySkzGYupgPHkfad#E90nt&bs#0g21nJl-j%*-fnn)VJlQq61{`eM>?9c`$Y zpAA!KHPWH&5`T zqZ#() zx;e)7E5hCW4qa~ck+7%oQ1T5FweUu+0Wk{1`(vypIcM^styM#-*P~~qdw{oe{FMJ8 zu^Ie#BXzss?6Wjtt)E*^ja3(DAxG!X9){L8j{?yi8jU{pYTM67+e+N?6QGp)INY^i z6kO&tB8NkJ1Hz!jDoG~xCF@eMbF6$x5^OXEhisXu10eOd5xeP`ZR4yyj)3C5lL3g+ zDhYd;VT{5{m|s(_3YeH%j~n}^y$h#vX^zEk5PiuUfua)Ov@{EQ#xySKRUO42*~*c! z^(>8-S7{v>t)$1a_yOR6cqR3K%568Tfw=m_eWwan8r7VZS{_90i*|}|AJwm7Bc2GmBhhG6=e9PCbyy;>B$PoG z3OpTP{~LmE<}4cn8Jh_#AB4nakTU*|W9Iu=Zsz-$V&+?ZrknXLTZAiSzMm1Y@}R|O znfcEtyXn4VXy}>v)osA8=PMfeG8FVn)$!w8H+U|zWIER{hRajK+peI?Vbuf0Ju#Tx zy}>}_aJ2_)2R8I%JwQ|5`*E&}(4RvEJlo^W+4k(-I`u;R7ST`ZnSMFgr2fHt3|0&V z9?jQ}45PEP4Z*J7D#k|{J?>E9Ui%a_8;J)th+(rc%#R1yH?>FnGxUCsAbZ4bovOEg zg8_p^5bGY16S4MD6jeEXCZ(E1X_z5ZD2)+t+n^Ef`Rx6~JorgtRbU=*enec6u;m$V zv^fs%(jlPvxPGzPcsqe@M3oToQUl^fA_84!Wp;1Y_dr!}8xLOtOal~dA0~D&_T}rj z_N~}&Qgb51+XYM@d%L%;3}3H}optKz*}Qf*`{EZ?H=ujw_~-M!F2m^qkr17P;~`!*#Dv}hmJFt0%Z{7YLb03 z>1U%P>$`c9oceLO;9maWo+a~1{F&={S38#GE0wv0o8mmHU0-C|g5SMht6tL6;Ql2( z%C=7*vXS;>M%i|zbQxvaIqlB-DA~#~(U}^Dr*W^H8@2}57-QKJuj913Wuh15Vtpln z{Ne6nrCh1kl*h!gr-D5nA=_P3`gSYigf&UsL;}6wIW{D|3U*0qvNnRjeqG?OXm@sk+(T z)w1*ur4G^Vny2?=y-db4?y#?tatvpBjx-Q1T38$8qQ%uJbQLOMd{V#9kIpeq5=T}$ z`gF9F$rZ`zmWEx zxUICD)`w2BfoN|MP4?f?==#%>DdMwiM;Om?fR}&123tguMs9fKYy)m_xqiHx2&MB| zBPGm#>#>mNn~ocMv;F`VzV=C_J}1#t*VQs<$x5X!m|bz!!DFn1aUH|3pJ%} zIk*wa!Cjf!a&SAAgB!Kw;4YL$U71)8ZnP~2cV#m1Ni^GXutkPUaDLmtf>Js;rhvOL z2b%&e7A|bh*$HK@QXp9pQvPjMI8Q(M3crGwTaO#fIcS|#XNtRNS6eU8G=>bdg-tr_ z6}hUN7K9s7fEDmpttIuUPZ_l%AHnkyyTZc4P-eoG2{StS_sSZ*L(zV9?L-{99pGAw4Jp6$*9vTVD82IFiU;jt-*l2>cU zS|OhGZ|co<15c$gtGlb)m!h$BYdQ9BiWkzjp@6<+;bWuR$xIUT#$b-NgZ6k zBB7qfI8eZpvLGk)Q#Nor7x0P)k8WN;GEw2@uc5JBamrHLjvM!#;t9ac1tc=12^Yv; z*=I3BKT_e%>5{041;W7vAn3*%i=9@rz!Zsc{C=S1ZDx*DU&NWeVwA)sa?b+1ENm8l z;v_kk!Ko_rCnC9onpX16p9s3X1<&QLOqQ7Kf)zt7^?3Y;97+SVl)1UG-Z%-32gdTg zFJEM3dygxP-5a_IR?TpD^MH03#`9ww$A6E(Dgy&cr8|UM+9H=6hPXivL$K(gIX6@@ zliSY{)fEjo?x5EDlx1`f`0if6TpJIeYpfrusy=1(XN@Mp5n_FfFK1V#WAdlAGQ3U5 zD9FiK#WmSmaA3iVRvSJT$lo`85`Kf^wb*|pL4J=5IZ1$tS-fy_Qn7@FzQnu(Mr{G* z$#;t*jOK0%!H`U#ug$E1f7Qp0-NXMEq+CzOlUbe~R2EJaxZ1$4l3xYCGHQYQTV*t_ zFuH0wPFcL!g4Qec2Y<;3UIFIH>g}o4R4{H}^pYGf^fWyu^iLG8bh;Gpkm}P#DV+{! zj9zgMY14GMb*K$Gdc% zyT&w`0$0WSR`6TJZzYw%*^554iyQcyli+&&t}!HOO3JREN;T~o!xX^N@=V`on|Ik4 z&3>9Cs%OXZ6H_*79M9j!$fk=Vl5-9vjDL81?W7*k%8whnM(lv3Z!#>VP@~en=6*!r zydyDV`^p z-N#&y;->yq8FoWrc6eX@g%71 zxmsx5TA3TF4qRj}KF&jLFTSBt_TqK&nW26xw|kf9ZJ0(mGxYrc%Jv?_fsQsYiT6EMg^@V;SEh=CykcEPTE-2XX8&cekz6|I9%`$Yfbql zX8_`1j#$|>LGIzR^30Tr|D6+-xYRv`LfDo(+ayZ5>$57BP@SHypmGVD^>~?ljHYUY z1Ibgk5YI}OK_|Pq4Zk8ig6=9~kP2_hQOoht&wQikwxmtM!4*acSpJP3EHlMqCWgd~ z!KTP&iB=X|MsO|B()j8_lks@;QQn8B+aeKn1g<8+d4@odHob_G+v}XFB(i!Yb8`*T zQtATSF`{}nCqE-C184wL914pY;$WQLmsCRz{nP3L+X;I#6%$Y}#(vVoLS@_Oy}LJJ z7)Og%8%!MXris>5t?X;*YHDtgw?9<y#VrIAmfE;LO^+DJZLIaur_zb76 z5&-867o{i3xd40fKdlIQ!uzwr{aGdikR^G56+C9>X&(LPpT;yjswYy_)6|d2w`fz8 zHy@*|HdCUCNv?ldY*;}~zD4nZpZ8A{yArxx7gcbut~O;Il<>})icnFA5(`E0TeUDv zt#l>7Lr8u1=2D4nEtq)v#!@++Mkc-V<&QM4Vvn*#O>>XJ3gf~HPDLoSjHjUF~#@6`xHW|>ZxwP%8LEM)y;e-R|ZYaHM@Ebz5Un9 zt3xGXe;!AmUOVX3fb z?~eYa1JQDB0(YZa3m?WJ!jUY8QX!{pX)6pqe9UOzg)IaJXqAyDl&_dr0JBydOp~7q zyT~$-VTeDW#p@E=CQeXVs`|0JlAuZ((Elu7(PY+-HBkhye;dQe_%U8h)J}a^@V6|d z8nD>JBkqJv)L-Fw4R=0yv4P!|xgT3x|^_DoiO=2$y{2=eJ5pJJLXW< zEZlP#N#(GuZ)@bP?K#V56^}9Rk+V9*wq*8Py2xL}BDC>r6OZ$Fp4iCdoM{vHRG7~z z)>YVpuFwVeMUq@%+EWo*)toaqup|;IJ5xLZb(JVb80goIF;^soI*b$dv#w*c31W7c zm+@RLEPo&o#soP(NbK8;2kzy(hZh^SaUk|`bIt@y(#w(P0)0r2y;K)a$ST_2Om!h8 zLm=yiK&pZ0EawIEb4_<*P96$|C5LBoge1o8BM11VWqC2eW1U1TSnE+GIfxl3N@5H4tAF5aS-q!z@l>TRyJzw zLe){%v5>h|z0I#v&|Ha)wLZW!bh%K`R>u~z?cAuH$+IzjT3*gjSjSB@PUsb6j35>x zOgXQ-s&M^ywXseeAg^Q~c4ko!tD1!}xY%7y?WY7s$~L8A!b1J(D@wgg5Yn}tXbzWQ zm7{E$s0k#U{9~D4mJ|9aBV%7#Uch2BuUSa?5UP4q2)Or`sl#P}`^#(%Ld`;1_#Y`_ zHn{^UuKi`;Cb+AP$dV5bClf($XLJ(eCND;ZzQ=Upk^&o9^_Gz`&N&%HkUu4%j1>$i zl%}uZa8@twCzwX=VR(}M^G=G|bd6aegWaZUf_W8aS z1eqCAp@V8-{*Tyf?yHba_hSZPjsX2EdH$qej0b~GsugsY+H2hKI~X^Y#O8G|H|;Wd zBC+*P7H7xWyK+X1aSv%A`Hv2}VUuEab>(DOzOYb(5#BZyE>%vu3EX*XIUZ#n5#NoD z-&qs=CE3iA*FvkO<%CWfx9}wr{*Bj!XA4o`qgj*iKpRt0HFl@|$q;V*E=l!Nm}3Ii zowCc-Q-OUif5C!dxSbF$7vVD4NVy{GxC>v^)7IS5SKG1;IWJTcNFbJt_#Jd-k65lw z+WLAwv7ZeLCf0)5f=D8@odI7LDVO&h?RqXig%+P6?_pI;wf7%0>c>mK>%=SIn>KNR z3~_WVf)lsm7MFh#ndOwQ7s#IBJ6frE-Fbql57gAJ7jrp1i{lFLXHKMK_?L;Lw;k4;dO0{F* z=5$^SRrfx~1{cgiU$`*eLa{`4ia|Cm9qcmIi~$mwAE{V>{?MZd>eST6l~ z$HE_zVwt^#@e_d0;RT%}K-S-}&{q3R6tE}^*OfC4`~`bUsahS#QLl313CIfX&(ylX zi6q@o2b7V#&K^VhCfa!k)=dimpM(lCxKLqR?~6jbrd%j+fr)%%*X8phG;a!e<%ueEj|i}2-j<_M#w z%#`~|pi_HgV2zL9{p7NI+R?241o`dkTKyLpeTDfJ;HmKLfL68^ndVnGML7g?29QOx z{W=;`Cu%cc?lr_r6Sf_lp>HpzNkNa!I3-P`a2Xc-(^SdW&+BBj-8ylZ8M=>VP@OCZ zkIo=SFO3t^tR+o*CNV z{c{;uYbx}*KP~^;0aaJQ-*TzPb{6y1Bbk+2F|2PRAQbt{=mRdBXb-_)eOT|s0JK`d zZ{7>SRK+Pb;2AFYjTPfocDyIGmjYDOAXNl$)K=t#zQa&bTLBEFK|xu~&EeToqU+g& zoRXf)UzRA-erOZ$TvLWk8nMh}c?Hs*TpHP;;JF*2a4YhGP#F9=!&m};6DhuIf=@!9 z8T_g5X?k^#*3vnqAo3=yr&)nDzn_KOgYln&%uCPni|?o5(JrmYHGNV z*@<4VELYD5^yOi^&Uv35siwv>v3x4a^@f@s67RWd$bZ?CbNX(_mD_(6J;6<5)l1*$ z=GVx%J3f8<8c?=bW6X9V)N0&*2O)XK%pAcLY&Y2UJ3x~uSRzd(E&rDsbz^daWri}f zbeUwPo-&XwD|4e;b_QQDQon9sXdmCIed2rC5aAN+*}02%3N+XkUxlJ z_eaW>Y|thvD?;-)n|YSiCz(rtC}U^i^Y{Cz__W00?3f{wl>YZorIz2xwV`Nr^6wB% zZuuhP0s$zT^~hNj{VFoMc<9rGb>{ZacErXVse0R`D*9Z)_$y-oaZI9vP>YnvB*(&s z^^gg~l`%;uExanK_6(6R8_Q$IzKXGvf;!bwYXzCo6lU+(L-SMZOHCt+JQFC)}get9tDTm5Apc-z;QB}37i>mD8*T!$B7CR65#m-{5Q6FuzfqfxV?KB{k=;DH_OwWh-j-Er$Lzzw39s<9k|ac&&Z+yLTogM`A3`l#xObHj4f ze7pP=R}F3JYui#^g0%16j|xI+N(PNx<*K5VY9SN{UNf0Ku)fv~lTJlUhI$mG!%9K2 zt)?pQ8otkY!!^iEd90}?mS^K5;tASL$vJ6Ur*h(`6qa|Od=OaGiTHW57e2L3f^mohDp-6!BHJdXqn*J zk~&l3Tw~ZMLYx6997Xb~nKJlkDtpHK@HwdqNT`}=YG;{w-?ACv)9Q6_XsR@(4;xJ6 zTT;c&chyWif-ajPwa2tfUu;j6R1R8vHU(bl3kT>qInEWCUz>)jo-v`n8hU=k6A!hg z*Pbz!FiYeWxr_nzJ!2e4)9^I8W?_SDhk)o4aU`-oyU!$-(9KCFG*jVPW-3+_e<6uHrpN&T>w=NL` z`^;c9nugXTKmG3?+6ZkZl0rZlEzBZt5Fw$vF>-n-PW?CGLpWvmSoJ%NAdyu?!$Rr9 zB;8#J90Xi6?0Jt|)8pGdGm&rcQ3={)Msk+Nhnz7FVMA?Z1+cQ#7g)&f)q2cm$%zvB zGQDCsU(q4}RNEOq_0q{Om_K$L_l9mB1UAyqR`B}0e(ueZkLK!JEyLT-IhQRFDF$yZ`0 zJPC3q0+N#cVmRB3wkO$mCz&@l7cN6#RBtN-9-lJPcB60{g<#@FJeQQZSw-K`v(SqpdHooV_H-)wEe-Vq|~QW^w$~su45uR%ZR=TTrN1q11<+) zmtjSJEGY+PjfNuulT(T~Df^7*`QfSGHlk-|{397ZWkesFk(w2VT2Dy&!PyNaX9y>1 z0@0V*8=5hQ%wc}NaO@+2=#S;<=S4HHg!dBjyMgHMyjpRYKA1BSF*7Op`}d4U!XY%5 zCq>^SVIs}eq`VpP>;W3kY2#IW+Gk+`pIoOHM?g+8ZVh6{P5nwGDRo!W{=FB07 z^R)LsoLoblx81dFMf z==d4>c_D#ug3-YYegbv33$qwW1PJDXHCRAm96VU#>!^EtYRZPBCI+Di_Q8**QNT}O zG~rFI@UBo^(u^F@NEk&Gd4*|4-;%s9aWbGLFO|RLXp)VB+Pt^YjKW&<#>S3pWRO>i z*#)kdVx3`+G|lLqnKzNdwFI17mSz--1LMI)Nv$j#I2`f_%FYRSQKq0HJcK!c)4}q1 z=uXE?Y;H;@j)@$nh9>0rVl8j$Zt39hroOiAMJ*j2iHS}Zq)94Y^w={S3Noz3SgLSP zq~%S0eJvfl4v;{=;8?XSO+DRRE1PyZ`&x<7&lLQV#&Jl%fcJG zF?r^MDVNMU_U^}W##=sKo*qnFVP|Le{CS<7mqZhYNVKc+7hG1ns-20oA*#0_MHPe# z=gq^?ik~CuLgZD-YhKvv_D398Hi*Z9uehmikMqozKk``QkU_CyO&ivZAJi7^9GrJ$ zOHWfGU*$Yz0pmCdy~(-+2?NZxp(^9%dc?|lXivA zz0&8d_PMv>wlpOqXuZ})$eP;hot%%}mi;Vk|i%>f+{{jcP-{5spMD@*4e5AIo*7%VvAp}Q^_ zTHbc4v|BHn)^g}7DfTD!6^dclS6byXR<}5%30N;X*-9@rYY-1Fo!xH&ek$Fj?h;eK z^HQOk7F;OQaue5GFxU;PxMXOvSDg1%nnUwpZM-pDHuqZpvF!dn+RuOiyCyBKW&UK+ z1%kcMpVJI|qz-BZ?}idXy)MCo?rS~KLCOA-lxF#`s)BerDmvcB2DiHUB7b)NWWMa4 zd}8FF>?(OrC0+(QnWeiWqQfP!yHL9Suae2qW)PXX5=wX3t)g_1zjT+I%!+pYW7$19 z#-Ck*uj-O7#mgTC{mE2;6|eG3rh8*#V!C*;gz;%`3;RAwk9d{)nS!=N8kl8|;&%?J zgFhvd&YzB!9&eZfgOa_HK;`8mvt$~HzRV19VKOh7-8;T+_v90$*Tjy&{*efaV z+^kEc3w<-=#L%<29ATNPhJr`P0V@A=^?ju3!)sceTHFI-M*S9(So6 zpYSmxo}*6bty}8Q1hb|(RI?-XNtCJ!?sF~Et*mVtulAR#wY92|walTKnI=a(o|lux z`_U@T3^lUWLLqZ610#y7BLYqn4HT}mwaK}$JM*$8RnnbrQb|r~ck=aA$(^FX zxj4UPGgNxjQ7vP6y<*?U4=QG#@W%>Q@@!uaat3RwjMK%WS%8L z@8`MlL!@LmZ6shyslFL|<%XP0tG^}`oi}$LZ9$X(H)IRqU)iT?VC~7hbnmXaJ`Pb46xGe-QfsXW2I@zV=4Z zwQ{4v=wC9oI)k%wj_J(m49@;^2Ur(}_oi^?B>F?@Wze(lY=E@R;@&A{qKR=4-`3$0 zhT&;J^2Tu2b$$eSwq&quy|T%g7kyZ5sWl%LQ#M;_^#<#?;f}@N6Y$AA!dkR(R8HtH zyPb`r#7g7nz%gEpnjrfzS55+kM9rP?zCfr(ESx+h++{aM9`)7*oBkh1~;i~lg!l|&Js#quqoj^%csT4 z$+k(N7r0wfvZhvUC~TXg%kgOPOdHF`og%DCa*J@iJOw2QEjMM~C|}B7pmp%jU_d$U z!L+iC^A#+pct#MyJJWql>`Y_}O{}ZtXtA7AyxG?@yS%1}OPXf?EPvZnyGgg@m~lAs zG#z1<+Y#i5o!SzcKPEfFY9z+yW5&kuIiOxZ%attB_B<$ji=rLU zl(t1VIfbH^)@DYnF81`*My(Q7ZBZ%kz8cjadSJ)fUt=FEl0Z3EWb;HqZA+W=jDU4| zi?A(fb16zT(u(CH|87wSlD9%ib8TnfB+x&ikKF;BGu!3X+&S@nI>+Sc!hWD=^109@ zXXlNdV`QMMoY4jj$Y2p{7Co*T2EF#`->A z_Q1y-QC8ixW@r)zifYDj#*4k@Rilm)HL{HJK-KE_?fC5zF&x~x1rPD0LTbk0_99Os z@{N}pnd^UNRLyULRFWRHqeLkU>>;Hx>SK?jM8+@0BAF8?Ic-bYA%QE5`}q6XJf&^~ z7}}>kAs1Vv0q}mP9-FyU5^jxs_{!XHX!$5cP44M`{>t1b79L&+U;5m#j~bgtsFE<7H^WS> zY)&MYI+WK)50;~gkhao2PN@3bDCc~dbvnQZ(>+d)T7MYDX~P}tc-xWAjtRY@9sqy_ zk(%6Iey{6xWBfSz)Tyzq=OGXWew<7^Q+~X(>Sg!ipnEP+WiQ8~<(=`8-R#-Jzwk=o*GZC_;WZJ# z9f}5y-zw<(mYA6t!W=xy(2)vbbdAh~Gd$@^J=t}|S-)vip7$@CmjIhmqK{9PzrSLd zX$XXmjJnzAOJ5@S^i<*0u1Ku=FGZQLAJ5NCxsD7Emz&|$3DwsvO{63uXY?vLHy$O6 zyO{;iXh+1D&L?nVGj9b?y+0W>8D}`Z#hLS(eTLj;Ng~w-zL>PO-)okNKcVVtFo}FU zQ(AqERPjDeAk?TGa_~*gYT53@Ti$!2qO)dy=EETW!RKr<56Q>%2;W(wB^|l%aK9x( zz71eMGCpSPOF968ZRPcWe-mmDyS~g9Nuw71ynFgxEDgAnp@bs(`=y$YI(?@nf1oHx%1mbgW}UWO#_HN6E&Tg)T)LV-b4f{PYYM zAY!iFHr6bHj6%p*vxqUSDVQrR-NT<9={e5?UGB*^$c?Ex4dLQ|xFH4{u8+&eYhi8K zF|1mA2w>|dq}|0hFxQ8%c8-4MCLas8>KL>bXS*dzgm*FzQKo{sj9p2b4pdek_Amc2 zH*A3(b2qAaV)A65|HEL$p-h_6(OJw_6KCt`wtd)aReFq5{LQ>DP1kfC_DkwVXX*M= zAGyOPkl4sYxs$UV3#g83&5skO zBOy))aXRcc7H?nm)@HBau^poI*4m<{EppzYHqJJeA$M$=%{;q#HV=8smh%265Sqe$ ztIZG_3Ubn-coc3~FK&_zeTlc(i5L7i_9Tqk1OcS&L&$6XeK>d~IO z1-d)x4BKF~8&l4+kygt4ZRE*o%}0#Ttwulg6Rs6P4rNHm@)m z=9hKVY7(zIW^7A8MTdXvl)ZP)k%bDRHJ;RzF#Ao-4fJ+-Q&X)+S`+*804yMH1XX#0 zzN!sh~}jyCW6#pwyF0 zJ!_7!u1BO&-{eQlh!M}ynmNWJ8KE2&e;?B=l$P{J#>~mYCptT>_#~Fy$1SO8PBwZK z&WuZS*P7eYZ>8#Y{RfusbafwP*_X)?@S~&Trhl*cd;Yf&gO6f1y%quQv_Yd-D-CT3 zn4O>ezq4WLj~Y>-kMW!yU~3TE430KJA>($ys=k7D%inkwiC8W-FYc38FghG%HOqZC zEznA#pGRO=$;HAgvsetPH~3w_Z!+MO$GDl#ujH8VoLYX&kc(ET5I_MXv=L~wt%p;q zjv1{SUs38|CZJFA<$g=8XC*200XD-|%i5`F_L$itMns<2qU zYKx3A6cus*+2aPqR%)Yjz^FhxwGdEOUX#&?dmr+feW!C{dAKq|6_YNsNZrP| ziN)^5a>oi13(~rB@h0>2m8BF^HRWp}4V2|$%(BC|K!4tB`A+8COXT)_}32NTil2=mVzmo&3x= z0ji_?j_^A?fPL6at>cX>`o87FSRL4Zsf_p9~g_TzBKAM4A*HCBY&SZw`)QG9(l zDS0#$X`zgT+!uUfhgwl5BYt;^I;&S^!TPjpvEztrDGNu@{?i!v#!c6=7#Co9N7_et=NGdHaH;BajA&%6Kdk z|44=2=7fK5YV3*b+^|)!lrGY=hwf4*aa`&V3{&M8-m7Bm!}fTu{DoI16UvO;o62|| zU*mH;eZW9M4|fI$;=W9{KH^4{;dTvoS$#K%~3r` ziSObYx|MPNL6JOGN0;$HMVfk04qIvuJ_|3aUfYYf5beQOX}BY~+D;)21y~P%#E7X5 z(5WvJpz%2prC8X1-I+pF>`kW*|5%f}WPVl&x4(y-%YKjJGn9T0|T#$g7 zyZQC;>*d!2V+qH|_Djh&wVJs#uyF5yQ6KpV{rRCXw}RJ}&;7k2k4X|1J*QupUdysP z+4x&1PwtZ1o|jWNM&=u?w}7l=C8Z@t72TwEKWCA{b~YG%A%fwXHU=M*RbonM*$)X zAkQ9*s2x|70uJ4#o^`xPFvLAc81@RrsnB_l==|i8fGS_gL0=Nd^#JkA&~7>y?i}1) z@m`udO{&%X`FdO<<*P{982LS{e!d!=24f2o}G9E|^?=kfGM-7agFoW&TT9M*SI7DNuM?}>;*8B)zoe`EQ%qn2t#>y!M;3he2 z$yxf$Y;}MB%4;VPNDhwr^|S#Rek7#HvF+Te80eL zW_~|FL!_>p$-5b27gUf^%BqxL?2yX)EDej;wH&L^ zuQV(YPJL%MPfLY(>e1NGhV4ZD+6t94@x!Z+U>Q(C#6LE=f@+a{jD|(A>o-hCvrs4b zxiZ?$y9_<115u0u4O*`!9%Mk(ODEa5XkX?H3;?0eDrM7nXx7bnDYTMYSx-uALOxp-v213ZOZ$RRa2W zH;k=D8T(jf6PEuLjj)B_;C3v|`Mk4@&};)+UB68h+tCagW1S9rCOu@$MhAD478uGf zj-x@;9pcLD!^LLi1ZG{)Jz$6B=vXq!FvKLw(XnB4Hq&jV7BhJ$!}d*}-K<{7^InTI z9YU6!8;PVLJenT-pd)?jN?iA87ABno#-3>md#Z$@f17U_H7=qT0b*et?U9V0b?LUG z^CcNQwMXQhFNvUI`;sFn_%TsP#1l9>coOZRiDI?Ik#tLE5Xs|_6FVlGvEtUqoqiC7 zG)m^RJ{H8(Tcuer`Vh_SyC>1w=z3cAJ*bvXZ7n$W7zsL|1|NLy1K zBB%JlmWIoj^d|?!Ma6OxDwe@0kUfJbM#wh77Lgj>Hqu%6g;3p2h{!Y+RU07NBP%AH%0kpnhDSz zgie84GJNW^2n;yl1DEQLlg4myG^%zD7&~)h6#Fk~OG=Yw*ier4R;V^Qx3Q{5E$`*J zL5`N?&J7DQKIF}C<=|aLo0Wb&ZTEhb?w=Hd>Hu~YZeTh-P{t6?;x&&| znXM^Yoi}K4!!#`J!}mFh(``|tec`&Q$Ir`yTWyj<1)#*Dbll_PL~HX=NQk71+>Bi*$_6* zyjU{J{E_`NFOCDiZ_f#F?v@QZ0DFtZZx58i+yz^qo*J86Ce|B!!>~s(gaLqo8IYtxzmSuMg1-&1A9jTTru%rf7odyUTrZF>v_c zo_46Ed+n^~%iKus8grMeqX}K7PJBr<&(b^+Ls0Z3BJs}hB5qta&k`0i&$3|x!dIaV zE)qRIMymQ3neV{af@~dub(-7tIF5qx01rS4=7c|qrN{?}tya|7ni!mt1p3}H9!z-_vAZqZx zj`MX%F|gK{SEaX_|Cz{b{6b=(c@9UsxUwh*xXkbtx7|M1G7*(UB{gE1=!jv+GmM&br=;nk1zLTDmdojJ5pzCV55qrWsFX7KeEr zRBzuuoyqon`z&9Rdwt4UPEuUez`rg(l}n(qOQ`IL@)axYPd@R) zb^b@FMLDqY(?-u?c9hjv2>Y(&uWH9@wfZCMn%9m;723gcSvx+U4AFh!qV79bNvkbO zb3*r1TU(ae(BuxxVqn;_PP~+~V-!IE3d%)-*i~m@7!GS|Oz#Edq8;bn`u#G)YoA#obiFwaRz#X=Otd@T>k@@KZF;(fZEA51KT1-%tVikl($Thys$!4JgLP48e9^g0#Q z>#-ni$UchYxnWJ6SlSdd=$W7Pq zh9r1qoJ)#6gDuscXYq+Q?KdZsL)*dXBdOy_nF4{&2!=N&n4#|t!k|hP8+W9Mj8wAt zKKpa8G4DyXS@d1&1JxXsJy@-_G0&GQmgN2FK(+n$&qq{$wfPiXxxYI0`43DlTzIgW z?FnyR40a$6LdV!m5gBNo2G9`oo9j!BsaWBm?C~5G=Yi|7MlicKnkLUz>Y6rL)p#Gus$k0#}u4Bz$eKhr-jmW(D`gw`!^@SUX%2rh%i#eG4I468D%#D{u z?crFHc5xh+L=l^Riepu787BLAt<J& zExIaR6I-~o;FfJ*GkaK=DOLTNy{;k|kq~hvJf? z#eVnsT+?j?ml_@3yIp-M#VzEZo=`HBKp`|vphYiGr?buuWuDi#-m^DdvNPQgix|2M{MjQ#Wdxf9(=XyOLZpmBqT6XGr6g4LPW zSbZo|!D2dd&KWiUmwP2r=U%40w-l>^&&AvOpq}W*aqeT_NF#|ECqv!&4FIc(Rl(eg zHB280sc-k^k&#%Ev4iKaUyX>}wLLOE)^q*z5VSj^btkv{2C+vFUj(TSXKd6La|;Ds%qeF>_0?{9*2KAD&jl?_5Zv6 z(lRWI`;K1#%JB#@#*o3SN`|em4_dHbn0V=AN6YB z7op>4&kUdP=(P54$7hSgX6{4bwypPW3ikZp@TIsUQXg*%mygDqbH1JtnLlr9c~f88 z?yc)u_VjhfIaLrZqKjCmXFUpOJ8C+Nx# z$Gh@HQMhEtmr>7|V_Y(XIFF3P0d7Ucke2Q*%H@>Ahr%w2_5O?E!;w&w_fZltj%4>) z&3`>Az2Bn5aZLM1D+LtST~;p|S}7vqe{NjN_-^hvcOa@7+Jw0b_bsn8xiu``i_~!C zKZ0U}*9|^3KK7~a#wCf0q1dFt-VZ^Wd{SH8t!GuiD*rjtQa!-8e z89I7ocJUd6g($oDeH7>q)zj@}=R3%3pRM)84y-wJ(kGNf(9O1}{o*j8TV z5`a6Cap66&b@))QcX8p7%Po(`4_kD6;~Tk?+BZI`%1*Hdy-{&}A~T}N30js6Xh|KDUhaXJcdJ=`kU)q^E! zfCY7n-DCx|6kL9y@vu?bz?F&G4nO990&{HYw{kO9I+QlP2Rhaz#TQ4HJ}j0!FEYt; z%e~cJFYxiDJ=WqSBP9dx~uB5dCVKwc2Od|3Rr0i zV2L>1dL)kHq9|mXo1Pjo{w0#>mebKrB_eb5Yz}ZJ(-Iqm55*8Yo1n1uY`6IIY(PcN z=4(`b9E0_28pjYl8_{hRP<~dEOU@1LgB%u%sd9-o>KA8c$ak7T`5$Lg<2wK?M~on9BImcpQMd%D0%gztf*0VBHdJPF-edFya0o7s z3>SwW_ByX7LmKrbN5!7`YDC-VblB~vvz+X8N4p?C!Rz7k8bf4sT%A?avDaB&fGoQ_ z-ucw&O(B<+tzg`n`F&v3pz8D!^YxqN^Z#gWb zY6^KhMl~jvsB>S?vVWYU^wbj7_*I|4O{&B;?niNF)>(BrTb6I}_Nm?qpH)xi3eas& zNGKP_ar$p(R6*?^GVc5Uz#A`@jJM_>QGdKBk&J>oHYj&!GAxg~iOlsC#bs;)4k?2B z^H3y~WS6Z&k~+RPL#<15)Q{sbIXal3eiTC)YC+t4bJUOHy*TP|Baxv#6n=)XGC{TM z^n>@}sJ!an%0K^L6ZNAIhFX`=MhA1$k7FoDFN>ib3gQ1h$Waf+`<&RAvk69|Q7xD|>j!aF|bXu;e6MU|w(?y-2=@j5lO()RA8gR6fE((`IuT>0I52E3{6pkVK zK|vhX4|+4>CCE^#{<%aI>@86P=i>q-rvRCs39zEdQRH8Wj3G)jA!De*6=-5ZI27;h zE+^#cF_@uxNVy!2`p6ifEp=$qGg4exI;12%GCUL< zQHisI^1T-hKN*9yrG7F5l{dL2Hc>wr=d3|W+xL&-!fj)S!WG1cZDX}wBRBPkV5&`PgN7caaGYRcW4S=G+J`U$`BY}*LBu4}6@bNn?O0UVg=+wX`F1Gsfp-=sY|HOSO0@TYO&Tti4uV@4f{-J{;hnCvC2;Vv4~P%dHAg-S z=J4H0{U2bVlb4OvL5cySy6}>oNF_6J_u7^NQL(3XNMAtaf@iorT^;JKi{)<{ok%Fw zRKoqqr1hPWSM^Y|b--u|lyR>9o1fy8JtUFABCh{PfNJE|G+@k8+vQKQ{ArP^U=pP{ zmA_o>IlM>=qK)71QI3X#Z*N6&s=VxWyZlqv5o&aJ?HwsXDRKb+xBTQfz~s}M@1CTvQ?)L8wrz~{djF~YXUA-W zmd&3w%4f#D{;$)gTW`v-?9LRf6{#@0FB-?2JOT?2om?qiVH0F=D%2)WsQT0yq~VcI zHH|MlK-9pOJ#VZWC++9a?AF`5!v89XW zeuTt4iMejb5xA`|Qfbc&+&ZS0 zktJ_x?&kV*Pl|n)YlmF0?@5^*ddxW9FAh78o)qdp4*Rdm2AF14&%*S8Q8$YxSB-wD z9=QV1usD~$jf-an7Y9N)0cdg3zY9l5BI&DV;r7tf6@g)D;9ZT+Mj?+2H7?Etg~n)m zXNLZY@#TiaW21SqXeeuqo?5Pc^`yv+v4>()Zsa9P$%^1?J2+C_)ZbOL2ct6Du3=A# zTnd{^;fXTU7p1VPt<#AixZX|SCek}R^cm8mPt@Na@hiCib|5Kq1#i|h3KiTR(o{fr zWNS}LOV6T~<~=R@#f;B^q?0hl3>`?il`s6)d?F3jqy|&YbHY=s!xhpvoqs!Mq21{_ zg1?|)w=^LE0S_%yw;xr#d68us%GMXIE5XdKeIb<_BYCg!yZH!zOm2x%cirh@qYcJb zx>8dBPh@WMe#IqEH-M|#PC(QFTj{S8j|h9pxZNbCoc2t!0fI^ccxXz;IJ`96D`Apb z=xwY4?6ai3HB^UPx^RE%wKoNhM=^GF*3^4Qh- zG2)sZ#F!F8?*6lJ5bKR)WyG>JL_Pud%Nrt};j^havYpTA>PU=FT}|YR#_lhV ztd0C2AZf}|V&%7HWybzqAL%BzYh$FD&-XV*mhwq&h}_NR%MFnS__S@pQo`=oUp7T{ z^XcBK(SCn(;Gj?@jq?!mfG)8{M=Xg`34$@w1inJSeS8k6S;d6F-WI3Od=E#eDe%>tEeR)bt za-2`BGqR1(pF4GFySgGpBPc`tlt^`v&|fgWFe~;# zS0qZDzjQ@T^Z8nLs)sj4~VyBv5kTEl@3>!sv1dN$Rfi1m5iKY-nPL+$Bbq_02uACCDE%qxaqzi~PVdufg*a5_oXpBwhm zBt5KzOM^t_RnWVaQ8$$nv@K4o5ayW=t56>|j*sRM4xxBYsBn2mg0%1dDC_O;fl-8F zoFLD>?>$oo$-_>S6BxPD37|yt5vS?~47tYopK9eCbDj};RinZ^KZq~Y@Gz~M6URiz zWFuTMM$$+;AKsO7z#BXQt12hN_Pv-p(}G9@L@75GFcC_VM=;;5u6HSv0J)Klp+N3{ zAID67QyHc-nJgt1PnC}d&;BULuptx54BUpFyOuM=z+G4Op6KrWrkm+`Z|9PzC6@0fwAk;so784-A=XR;t3Wj-v0cZ%$WR>7R`Sqj94uhn-O;^giP*Ih zWMYAS`=0JT0n|(a0&lT0LU*jAS%}w4x63C}1=c>2`sa>!;>q>>#xf_G9ZSEC-B@;C z9GGl8iO^z~>PZ9pKu%&Fpl%Ag0nhlOxG|*XjZlqNnHk!j6z)oK5=x_i6(?acrg!`% zINE5jE!Q0w^><% zZ58~j!j9X!adZs~9+B+3+^i0LI-A!`2aH3ba_M)E z-Kvya(u6O-%w+rNf>`#0!_3Uzr);JC+yiB%R>P1U{wl>cej1DY$Mkn=|4gA(om^E` z-{3b#!Y0iyzCQPX$-fOmO7`#RYuY_`T@$Y!?%!HCZ=Q-i;9KUrG#W!Ia=TcB|Id(# zyfKn8V#LUf*!g>=XIrl#WT|H4QljxgAo3a9dtr1BbgioFOaY6&pt_Rp_&@5e3AwXdoiPqn8+OP)5S%j+d~7Kq`)KNp!{Z2S3E7WHw-L}5YVIuQ&8;E+-; zjjlnA-{+D$0%{V;4cg?!{`GSRqc4o!3w5iZj+#{;0L^uLZR%D#)Gda()tb81l_GT& z83tJlrfBCJn}!0?Kh1h;=i(j7sknCmjtNeHJGm75ab^(jTCT;tT&(%o3nDS8!s4bu zXJPl~^)3BThKZJFE~|;1tap_0*jO`?8*OTCZfO>Sd%V0`Wd|i2|1EYZqddCnL4KH# zz_k_s&f5S3MsF(ZNZmaKk?si`;nozja}L#UWK2$|kgL{5#^eo{p{vxPNjM2YbYv#U z22_>PAG>s!n?dBm3GkPn-g>|nM+U-!d( zxwIihIISoOjcPyDbadvf9257$)al>(Vs-;Ve^_i!4m1QrMr*N zfLcrsdk{VUwq(kJ(+V9z_t0y^1GN!KF-yv8z)U|H$3ueX?$mcwcEen4ep$fj#<$X< z8~XGkv7WyQzdY^h0V)N+-0uO(`htH|p7z9wQVeyNvb8PVm5#+6^)hV*)rM*ct18-Y zH4UvPn46oc?H){I*=GDXAd9#9Y6gL}#c?|&f1St*jKG*if%TL%jPc|MIt}R>bVtwA=0K_Frv(o8w@Lke~wS^Uo{#1wC z>EsqNjeb2G(*Yk|W{Tjjwvs^eeR9DZDCHDlb;!ChZ?M7m=6C1`OInyDsAtNfYG3;rGeQJ63gmpS%Q*h?YnPMqM ze3*jy;}~b^iV92Gd9vFXluuv)VHZ_^0R$*g{SPYjDj8`52v>z$VjaKCU7RG2mwuTW zi9PzuT+{XWzzbh>z@@J`vA_0e?&R3KS92%o*!b+&8l3(s2b}jS2i)vB?rr{Vn_hFk&%6e0_rI2#rNQ`? zxQ@xO*{?g`wXf%1tHC%X$4nfsJ3 zoZ}3=o^))Er79W3C4wXK+9+gLuw9779|rUJ@r+A6^uQL&S1v{ zUGn4xu`0EpUcd69jLB)PC(h^Q z*sw>==gzlXe>k5z%XUrsP3}zFRrZ_Q8NU1B%UGSJI_GG)(^*WiD6A!tbjFtbJ-mr7B4tQR-1_(p{&J(Yy^s_}|C zRYwBWiWsfF&R%(eg4GA$&==KlNrN){HbP^mf5^?YNC}bQg|`C9F?%9Ay7zW9>*a9Y z-i{X3LF_sZC47}$qIFzn(E01i1m-K+8cI`Le<(s>^MK9sk$JLq zy;7aHMKzB{%btov-aI~UI5}HLt@UL$idPJ`NfL`RGgz)W$$Br8Eaxs#5u3JGU*?;b z*Fng7>{n%el##gYf5T@@$>GJ}J)tP~8>jpa!P-+>c4OXmwW|u( zTJ37ApQ559wTz~Ey{yF;9;usk;P(1Fwhk)GrZm3w?z{5twU3@M=}bmz%6u~ZI~{57 zaA`QDMh*t6ZsCiV$)Hjyks?@GDmBDvosJ+{7Q7M=x4aX({ncf|m$DeWK$v5d#}{Oq zkXhcu7O)46joCDl9c$0;8k!Lix2U77t8Ke4vKzRHMHM@>LlRYW?rpsgcn`>UV|_^c zYEJd^wf1$#o_Z*fvcWB#O=c~d);qiR?q=WCm(I3Uqb;utffly)?PzQ1X!a+F_5QeE zLhQ;1Bg29=`dH!ZS>saUC}XGpDH5q4f@@V%S8D>F+{-TOx;t9RTe^EXE<{)SCX9

zH(UX z%`eB>hlZwoB{IS(dgLpSY`5(YHaP)9DF(#+6kM(CSq!dV8+wr*Wd{zeUmKoKk5Y{e zI9`nondx7ROmv)czZx;S+{&^oY^?0#IgkTQeTmg!hgI!t>q)4kICyyr)73@7Ry1|R zLt;;VH8L(W(eH5$BLW#qy;>f8^#1|@j)@B|M9$EU&+)vG`STrH7$y5!*z)m@EV22I zWtqdhDv5pSKO>nThZnJ@e_mkviG0}~DEIgq;w3OdkSUW((4|e=w(`4B5bbwsRa*z< zIDEwUlChoRg~U1^j$}@CNQs|JS?-+4@estCcFr6(-Ae`?-YJ$9_5m3;YV0QuN5a;= zq}9wRoETv~Qd^i(Onh=;B-|g#-!Uxl7)Jhz5k5fFSZ(BQ_g?R_pAa#_2O{|gQhm`l z`H|m07;w}9@QkgUF8}bLC}y}Vl3zM<5Td;)i2(oPxR!zx4;XEcxfJE+h*sFWmK{=k z)?~xpKI(dRw3F>pdzbW=D6G>v%umXe)QPvz2dC?W!|%rA%9D?Az%Rz|R@OUhyI$pn4z{NN|qC)$+~ZeiKbVyobnAqDVMBvJndBbciY6q3VRh8qE*v0D&(^T%^0 z7`tLu|76aTkR)dVL15#p8W14E?dgtowKVl1)741|M54`;!<`Wc46R|Ewt2E_qCxQ< z;{=AoCu@Sw2lR0Vhy3#aJI25Awpw3=I2w`8Y?mMsFPkj)vd7X@FRC_S&^9@Z<8lb? zrU;O0%5M6oYOBw?#pD%`G_{ufm0T7sYs&~RL&F2Y3DofQ;)NT*DXeZZGt5wT-~wgO z{>dEEE_-&;jGjpBBdZEAeBmqS?ugJ9`eMK?r$*S49&Q(Kc$>CySXvg|BVH-T=E-Jg z3KrE%vC*q@=Frcslx0R$*)pTH%na|<5lhRcy0vUpyzJks*g#8JJz#WO>Hn9sGmo#U zsuuq~H#he*Lz^Z|PLtfWIcai}0%43CJlcsap3^#4kAqP*lL-$skV!LE(YmEWhvC=bU?QLh<*<%cs3(@3q%n zd+oL7wb$PJ-OLnMy(gF{I(nu^h}tYO#jU|i(eX50j-Dv~IIOnFMA1o|DDF(^Tk3h| zGHnMbv@K{f3aN@mX;Cu6pVxyO)*LQh4{5b1T4guqYbB;LJ`1hsKJ-UL)wc!DN4zYG zRpXIa^7|mAp0M(fJMG&R#He34@)cF_N7d;Ui*XyHS6VLy3n@#?L=JRRMt-f#U#n|g z)gE6FtWi-bqoguEldk6R_Hr6J^JqsFx3vb8BEMt)*tWpE`)eh0OSgtv$dBsK6W>3Q z71ro#-qw)M*4j#U*+6Wrb2M}GO4WR;(Q3$U#8v#4jSq9Ky3rUe#>4|%w=g;HXl81& z-3sXq+ec>a1NUL9r2d(&e$SmdnKx|DsX3jd)^Gnb8xdF4t>wWtKS&I?Hc$}{s;i^> zBMRL0db3FU@v!z&FGaCB-myd8gx|j46E#0c!#7{m(#vtX?sj=Je*1zcO4m-9smG=) ze2R+k`nx&kF5IY{i)0BwfLbpVW201z?JOa7qVi_py%UwRGWyTtt41!g4*YdhYJ*gi zoxbuAO1#=xlx8pG8^6^^vt=58nms08Q&*2`KMag^jFgeIx*loh4JBTj3P}p{GULi! z_Jgtl_cITbWaQ9uhK-G3UYPFNTH3bWz3-utGUq{wZ~X&H_R$W}C!V82SQ@!5srH62 zc7Y_*Sx~F5rIi=!GD(`3&c*;zIeGNRnNxj=eyy`WZb{x2vQKfL{}%{%*vFSp2@+MQ zB_TxsWOJr#hFaKJAWBKcQ%W`$p$P3P5I(;pyZL?XrN=|=$f{U@<)>Y!}km%lq>}PnCYINEI_iQj@XLGvLef(r;nL{-AJDvJ^wlgPD;HTJ2*;146 zepyi+6F&7)aR*sZjSb!8;3!Q>b^zzSR4ls@_s+w3@cwyv1J%pBG&!}82({e)UT_#s zeTM2)(yG!mFtc2hD{dTKthU6%_OIqd%2n9@O-5#&DmPdUd*GkViPQo9ZDHnCRUQi4 zuguBZsmjyB_6u`l-z3$(u$#1wbqtrepL?vN;F5Wnn^dsAOWqbBd$m-^V;$CdD&#S* zLb|UI!5)*m4V4{*zf)}0bqb$T>bcxEtLu4mNL8tI^;8glZLC$IEp^_78a|zQ}&4z>4lP5N^bN9Lq}c zM_gq*=@9U0M1tSQk>8(#RAfJ=e_znQ_hCO!WPelt{sk3Fk^Q4Q`Ms}Pe*Yq*9s4<3 zJU`dJ&+F8lm?x0mYRK!F&^Pq&AMyqMy8gYlOx(g35S{#gY52D^98+FSPqrP4s2npf0kX(&S#z(Vo%pziG_ZH4{(h(8u-f zw>A6;P5LSQ`zKQI&W&qPdf7@_!%vnhjj2yb@IQ|zdzJOf2)apUnlk* z4S!OTc-+f}#(7D@U)O^Dv8MBehW}B+|KR=VB!91ezoSE6TGRH&g9yzZ>HKF^on@3>?tzRL(N7u>ky2J8YtA7s+he>Yk$k|;GhQR zC|=*HpKuz#l3`zF16(1VaNj5HJG~UOflJ_gO8SYADD>63?cMocCE2o`2F9@DvB?7} z$w*$V){(1J7%zsxd8*6~BC~VO@r=31s=q=h>BboeOVMH0<;Tn{-XN*VH%`p4cqZhU zn^)KLaNmFc^n;RE8b`Yd*p4{k)C`vT0hUG2e9p;yw{*+(?E$L04`5U|M)M8U8nVaP!X+z9WUH8A*gU-@FZ0c|=w*mil8Axxy;(f5 zPVJ(FEfeWtczXyw~GrMhFI1C9t|c>y}G++$JcY*&iLG$rN`%2%N8X)EX$G} z7Hx@`FXUer#C;*3gA88`e7`DTkDJFC^XxNh|ETEU9D^B7ucOm@Dl1{mRl?r<#E`cf zvN=J~i=~#`H$2pzm<+&cVlpt<#dsVFSCm`mmuXhs*V{a+1*m31@X#^%B1HvypcjcO4*eV7enQ7WK-9AmHG#$vWSmIyF$Pz@Y+RDLqE*0NI%H1NL~=A<J~-UNUvSDNP1*` z>4xhT5!YgRPh@q{QKuY`fu<(eI7QCGFt9$}Rj`BH#TO$}7@&JQ;bhK|nPg>VF})a5 zqxJF3Mf7)Jrt<6K7L!UR?5~fcoVJFxij7-`A;45X!lSL<+toI|w*6Nt~k5uH=YF;xmui+W*H)a*%!@RzUVa~Xpjnqcogkh6j zTj0M)VRY8~Dtjsp)nzGT1H7(OH${Dp&5I$GclwCxe6r4tbCuFDLWR+by73prHJRC5` zn{7VD-;^&**Oc53{-)f{iI8GZs60Ip{!)42jZ2!cX9To_cMX}X1b0`coXf^NTBVh- zIqowrmuDAFVeTuTa;^|b$-ud#O_@{av8!8Nke-6FeOVJd=oB*TY2_R-o{BT4c==SM zThq!j-hxy(O%QLs8K5LMhCxpV0VLO1pZaF%$tJ1&x|gEvsFT!yt(_-kJ_PVL=#b8_ z-qDJWE)zJkW~yy@`mqclOF#q~EMx z!)`6Y8lJxjcaCZRqqo}JpTubJF?y?45z1psYoY_4nVtZi^gcf%x~R8A>Kh229@<;I zwhBEomUp3RJ_mudygbSwzR!UyPNZw@OOpTq?md54Te7MR{+d5$( zGJv)gm$19F)8im@l%nJC>SHZK74yD2I_3I!r-3-tC08l+e(ELJ(4$Mej4mfCz0u`F zrHn58-si}NkcmofbeX7>(S=_|mx)T^T46oEsgHvvkmHV;a8k#Y(=>v0@rJa2g_V!5 zQtDPO(SWzB6b=aerw{pN0_Rm9@)s-%JQimd9@Eb!VtvGiJd|twin9$UblgjSb?dw^ zv*F$D*S}kO$T{0KrGjiL^1Kw$d8V+P;`9H`rp|WuWe z`)cHvT+O-}YP?08#(O}l;mtuX=s$goBc;j-P&8Bw=82Rt2W*o$ulM&5uJIP}>h86_ z6fGNNIqGy~W>c2$oA92&q?bI{lBYWL3_J9vP=1OVE%G*2hojCs(RhNRoH0j@J8G;= zooTboE|xRfu*JpLkGJ=*x5XY4V_o0f18Da^kv!sJ+rBC-m3N(8as}_72_`N?j{?!zYc7keq{QL81PB8p+$P7-VC+#n@S7c*hE;&u5$R>~>QW z#-o`=NE_*|8}6~?$_M*s_XzFpY!k!owd%}^;!4?JBp)}bdzMs`}OEo(%tmr%C)L6B&t!jN9&x?4qVP(y?e|()=;PX|IgBakz`ON=Rqp~-`;qmSwRM)PTGa*7 zgAlz;PE1eR$vaEu-amh|Bn(Mzc2L*w)w9;a*}(OzwP!xFR_9@^C1wWMGvA-Tslg_T z9Z;ETfeH?Nbsd7*v<83V3(7n#GgkI@lYuD{*2CG!39F6~OjtLqnKEHbB9Y%-&DRu%QeF_9}{-ml$PpbI6Pp}};>(8lr^_+@d=2X3v z-o|D)dX$%>dny5_A%}Tx>Xd57LW)Fn>Vc4BNQbkA`9OXd2C&i!q~1)8shW+I)qK#_Q6%1`B8m5=A@M%1&iDW> zv|z#)1mg?Kbrpikbrte+drBE}>6)vn>cb&UwCp7#6Z3jQHpS35q|~cqL?3Cn^h1Wx z=8jr+i8C=TX1>DwXkwnxmW!PC%|BNxo<8=KF6B|v`BjaUROi9|p@YW`*{T%~s@~xP z_Mw3xeM~n%PlzwUCA3>TzxjQ0fCQ z8XR9CBf53_McLT);+UVHG&g3sbs5zq z4ydx5&&EceRQDXBRNv?+)gN3ax@6z;SjnOU^7HeI{T&J4w-&B7dXwH)XJfjY2z+@q z_RHwmJ>uUlp|#bDo_+Qiu^7>ccEYp;R7SPs;GCvV*IDv+*U7iuT@Mq*s{p$4?nhev z&KA?6z#X)L+ktXwY)y3?CmZ@5ISn~%*mb65Zll7suhE7X?Q5hS9jI0ZsFUq$#2(^g z<_f<@w1w_Y$o902#g;?%b#$__&1=q9H?L-6V0Af*rYv@5&Yx}v$^F}mSXIdTmbu$A zVi`_%oBd{abS!fb z#WhGX5~GW*g`8S$6N`(n2q@f+LSWZIvAFPpiV2d)MMR;!Ig5>-u!4P`GT)~#@j2w6 zpVgRM3q@PJo$Zam8fki8&(;A+arUGQ!yRg9lYFlk^rrw8#z_ZIK&Mz6nXA-9o;^g& zaCE;#sKut@$xJK4y0#E&0{#|RvO+F!9Z6z4R_a!qHE-hrogsp&{M zIpZ$-@&av7I^#)aThiH@bhe~8y`6m)IFf|Jw!NlC8iA8E0w-w%PSOaRq!BntBXE*N z!Z}MjQCKrYR3Y-iJ#u8S?~}%{Se$G=+N#uN0Gdt#i_}C`t#Bo4vopyI3t%mPM79OM z@-dlt0So|0h(G|701|=_zzqNr;t;?c07NJutQIn6#!8%C*gG-fc&rcZE^X)Fx)g#s z=`R*f`isSrHR@yD{6q1?qeZKjV1ob zB9!?W0M<6a;+~@!a&$(7tkDDz=>$y!Kyw7m^ob!;jV1obKZ2zJ!2xsKqK+cW{m$vx z_s~_gGnz}k5{?cQ0*o$G-HxStrp#j-Dw#w3Ggs+$28h46?PSK)xDV~a8i-K3+J(`* z1!DIDtG*SGzYp;_O1c-1pzaoZN0H^yaJXOuP3eY%*Uja={_E%VuA1YW`G=)l( zbTtJi<{0fQMMa4N_xjv)u;Ue-h{17cogG0QU2TJfpGBU#>D^^#iz7nk&yT77ZThmZ zzY)%b8FB#vy3|%S8D#)!s4N0O#>`hj=ADeA4V5zZoUW-x$_cZs6q;Zx0>5=5mN{@aC-(w?tlMwVRZ4=DVbw%*VA+|^L5IIQ8={}3L_$p3194XyVY|y43g;hCyj~N$7u?m>{03tik?}0 zMV?)5k~=4js|WX}(@f?oFnfzm7&}YHO^aS%APd0Q5(47>c}}dTvb}BdG(7Rf0wlBb zdez=mVcq!f;<>s#5=c?1tN5?3W!K;~)U2O0n&!L!^gV~LG6f#~l*lQif1QNmrq;uS zA4E(U)P_ev(x#|Qt;~uj_XGJwAc#Dk4x0}nzXSQm?_bq5RKNrI0)N$1&R)kVEEKc- z1NnL-@)}F8eGawqeN>07kfHCR|qSD2l|v^%7d`ms8&f~uMlCkwN4dwI2LJAVWc}HAVn%Cy+!X; zk`AJ5Yt@3KI`FrLbZeI!<4Q6P`d{Roa|m;mpyYX)wGUuO)%@W4R?d79wm*fWksW_WBZ#Etr(en2O}>^Q{xDjjE-6c4l-J zTlW4?R+h(rHosms-!hkSgrU=YDq4MUpXN;Z9J9-qP{%rDG-11(uD3HI*ib*_ZK!iX zeL{_E3^v`TV2pbhIW^x;3j&@oo;SF#b`Ol%sT?JY)K7btXR1z>ci}&Cu7VOhDyf! zdykI|96P1x)9m@xcKcL@r!R*no4~#ZlRD9^OboC<9qAq)pBNs~=YLa@kQ5LlEXZX< zbDa}ZkKN9}f-lnpEIojk3)KV@g56H$r3$-WI)jDw^Hl89d@x=+yU>0y7RfU*yAUjl>IX=?!yH-^d&Fu%R26t6gI;;?ynq_7exLh`?!$4*ObW5 zDJ+R~@Izk0&w7!c(~)xw%!_sCb6)7vUg$GAG_ci>20$JY?O;FI+qOhQC4^NW`Hr{l za>7^Blhhte=}F>#PqLSuB(B@~_vh%IWN)%3*&FmEok2&kH`$Tw2|AKiuOkVFFjLUc zf{vsW;!fC*o+Jp6o}{%EFNb+ZJ^)YcNgC-XH?*~ekHL8fMMgI${nEx2QmKAz5+>6| z)$XP4fuF^QtzBp4SvhkMII(eD5#bnZ5s@VJD;Qa>@H!S-q;v);bvS2Y&mz7>tfTiz zQtI5o>VE}{B5Mq{^t;i61w}Z8#53GIFx~aT;sEx8;*{R}RJg$*Fa2wdhMu5k){vJ7 z-+3IT=tuu2OY#0S(ZMpy3>#;I=2NnCX;<4=H>ZV%4$8@lGw5x;!L;N|pto65EbhMf z=KoeMDjeL5^D!{@F`V;La&|~@a>avJpbl6g133o(_N`g;VZb*qX3ViI?&a0yyR*bwR4sz z^_oPL-nwfI0eZOTX!3`Pt|l2Sx=?$|NYIh6x$uSyB6NsGeE*tgf7qj-`};0R#_w|X zVIrk_!9)jU4~#Qmq6>4R+YZ9LNyvWD(s1h%m)q#;p7!f`TVILa;RVQHQuJyytfQ4h z6pd}p?4vZG_aKXf|LCxH zLz|gLQC|yKPeO{cQwr!O3+#txrVP}5-js(yMp1z_Kxw4aiKWBG10!CUm<7y>M`T_c zJsPtjmCCHtfC?@^hz1dN*{Gm882{Y zik|rfUN61`Ks4Y*)QbVxi+f(ijePqmWI9@)Pf%P@8w?cEc;ze+2yu|>0Pl%T6%(5asQqkkF zVhG3r?~tr?oLMpROc383WdRJxA&e48A>dI1?9sVQx^9o9pPFoOn!hkGXJKjSk(T`g z^XJBS3|@;WWUY3!Ue3y9JAHD%9&N~XM(mJjhmsVWlPoN_E{DZ<0!Nyhk8ZBvPR!aO zjw~H2pjHF6A{`;KLqk~`1AR3j(3JYVKe;tiPmNtq;nwe-D7g{$<;(mHg-cn&)$itT zlJn-9R7`l7fcXkGxed6YTRvgfz+5l3Xbq@>+f4P ze2m2yrkHXJw|=)39i6Rf%q<$w%z=%u*;athRklv|z?dKB5sk8*I47x~TA3&9O|_7L zR_9P*6SZ?=4@Z)KvG+~OYSq0n3*kX&N$ii9o26~k>CKE6(p4MD9h!+>4YyhmF0|l_ z&xOSFIYC`x znIS`#^ShX#ddHP_HR;NJIvX=Fy{d05tYH2g&2@8P_DMs3YTU2J?AmO-8L(?6<(^yO zK3&zY(p^_!&jY2a!fq>&8~HqwTJSi%?V&xjxS`a2p~Bu!uy5L_a4HI9K2lBiflB*| zxzocXJ}YLyD4L~OYf{49rz`Etvsw!+&TI>-CGN9J8s6dVUSux{;b~vmQ11TAB6|U> zJ-Enz2cPtd>^?q+FS6sSPEI>}j#02qsbl!~7<>08?fxO|2RWrjo7S2XZ1)cr**l=J z>0)~)pIa_wwL)?emo{AFR$XGx70<($HeBM4Tw<>R;a@MYxA1x65_>%P3$F0=NhzQiC0={+HT zeMLisyRF);DbqzXl!X~)VU%mUg8~sU%~)V+Sshu4cpj>@8@&PrJ6#f(x5Vy9KsbYz z>t4OY-UE|-R=5RA?WRO1=dU#QGI!Q8JJ^Mdz`glWJ0EU8cd6aQXZB_GsFcdPY8%$hR3+;&)%?Mn^EcPDCkszEgPQHr09N4@>gJlJ zY0#RD(*Rys9jtG-*uAI5UL`#KrM{uoUAe-ph3``fPVJ!(Nu)Y3NFOW~S^FMr8{x z*L~NO_V)bgH$zDEb)Ub|j$b&Wd5wKh!St&lyehx6sUdpf8oS1QW{qv;UkJzj^BVio z{GMqyKS;0R-nG^)cK58c%NM^jxUf{+STh}5wLlm5XV=;#St()ezt`I3g@2m=;hG&6 zO6EPa_Coh^P!_*6SSK?b>?iZ?TDvkUB}|f8lpoxE5nO$tbJAUBm$`H6?8^(L2V=EN zP6>|}Our+;>v_N1-mt*UsY8S%>ul4Sj-=z4xB=D-_k5jQ?OwOe4(Ct5rz7Ab>Mm|? z$Z{WD2RqYo672X$YwGQ#1=H{MNHA9IzFJ2+f2tnFrXwX8TkI}surD=f=(>glt$U99 z-Ud56OV_<*J018t757W)?P>`Q8rT&%k?Uh-S?og$uT`@|j-!osXMS!;+t?|&+t=

5cZzPHU~6PxX& z>D_6W)fel_u8Pe|F1|3y68B?04a^ZPDZyTLpw>z@UE_ho)rS6xv+3g@h^wfp1KH6j- zNRwiG>`+5~lwz!3a^cLmHQVjIka{M!eWCls?e<0D-fnM)how90!V6R1v%@|lRp{m; z^zV^oE#}qD_EE%Hvh;GddvL`Z_iN2|cDAn4y?W>=aZ8RiTE}uFg zmsTA;?A>w2J3q_chD&m~z+F1TJU}YOjF!vHA1$Yzy2Cpb%#T{;<8KqM#GN_J@Vcgz zA*kDRTI~fF&Jcxn421uFXkjVUv*oh4;R4GC=WV8qkB&C14r*L)+-?@}+%wj&)T_uv z?RK`V$g8@BPW5&jOx!bNnH@E6lbEhChuSIVZue{LcF~17*VX;=#}JHP-F39#opy(C z@ZIALm%DH7w4>`pO+kE%RU>;^;-zIlitd)*q&n~-@+VQ1b zdS*JWgE5yTEl*y1WA1nVfkR#&>#$2fx|h&pZ*Ah7AUdzRmt{-4M!Lra#=DO89~&Fy zC8N1YinFfM&KJH{o$(~MJYv4Fnug+jt<&CAcmaClI-0%PE+^6TyX_{4z2Y1*{YQ4& zHRAc|IVNFJX=WZ@pE-VIRhC(Lr6e`9$BtfDr2o9fJ_0o|xOrBDNGsMp8tGzHqumAksyBcD;m$}m1QFq>#H`i^|udi#`TDPu? z{|G!PlGFUQ*EKb)Z(6s$WkXkMoFLg>lFaVgZx_BzZGYz74OLpG8OUdBeN_%c^xA%V z16B2kZoBC3#oE7JcNgF8whtoYWj##Ls6}#{mtHm8-DB^vgs*AWc}WE%Y>vCUS1(lt zd+nEaUO_YZ>{F2DlkZ;JXYX;gvh+RL8lSn1rSH#AD)k{&rFs!QQw_FS9HJSF z;D}+pEYO!{s_|Cq3Jo1kK(AHDTdfWaJe~leAwAk^O=#%R)(W2hs)Qr0)<0?J5ui@+ zz>rpawZY8hvaQBCnECyFo&(V9@Xci-KufxI40fOD?_-nFUkKT}RM59IivDtQnZ<=5 zT7h6*jk#nCM+1me(%64=b3KZ|vbT-n=4Y49cH&9>-K`iOz{UO*%a*~!!Y(em*GzP- zC{<>YN~G;Kez~>0a|P&VKUcs?kmgRjmbIk!1^ZSNudq;Pos+%txYqB!ktv~^0*zOg z9|z2Rrvbc^U4C_#mq9AHpzBNOO^CC8!Rom+&=A562CtbSFKr2V9`!v84-_0MRB+tW zf!I*4ak?8ri~+9Q!91Kjhk*jE8F&=yaMizJ&Us#)P={C8?~xt*d1HXsE3aaOj>2TH zySKki-XvLsb?^#zPhMGZQ6l;xw(DM1c|;I;q37Id^UAF7;T7z9AO7a8OA19<2z#86 z>0g1;b+pwo-^rHWIro*kvS`*ofqz{sbgemM6^_p!H~*xtC~5qMaW|U_nW8{>44tLt z()T(Hkgp&h@?Er;Nx&oc4zzN+yO7oQ#t)#D3($WWBG9}9gSc}X4GniMDLvt25L}H( zhEC`&^8_KDf^c*$j8)%6xR&1YIh^M?mzhiCOpj`|@u11B`9OiE%?cBmqE~9BV0PVR z)K>ITGS8f$WKgM^SEut>ojTFFx;!#R9-Q+%%mfJCFw_009a|UTdy5^baSKah>&5fI zg|S8MwI`cqxZks5rh8*)tRVq@WYZ_I+?<6|5wqR*E{xUtILlq5%=18Wk-M}k7IACO zHiactx_hoHw$@K@iMyjDlrt}ndiR$Y*UVV)k-6k$n)h1 zt~Elj+Y|FRB1sLI69=p{1@RZIqv*c6Z#SExvujbRBk; zQ7gDRk?Nk-oyPSDb@jWHx)W?|EO1t~_)w!cv37N~)m)0o?wqJz)g*v(t7WY` zu=~B=Esj=jjDS?t=IKf`-Rvzzd-GH29w7F1XLS8DaB)){qZJ){Y(@188ASw$Se`02ucSVW z(NBiyLdRAV@m~U-wuU&r?5Vzn9?$n7JOqD^#_|ofS4W2yp>7 z?iDsy2PNEG9h7i$y^y}zqCAvRmWQFcE4Q!kF}Un%Q|b%QrE}ZGqnBahM-{RM^Lq_}PcLSWj^_$E^ zba%UWR#QdWX6d`M9BI4#@TS&Pe3dN!;C)_}<=UZ8dC2}-IYWzfr`dl@xYO-7iuvb< zm>g-a-zZAmV>krGrclv?Q2Z~B8h=rGPLWzuh!Ws1W@}n3J)DPEiYN3;T4t59zg>~} zqOxCOxNS`%$!J{#;Z}JF(?`Kfmn~Upw;v35X;@TVI3&H8U0gp3HjxQ;YHSlT$UN?} z@d&fOl7bcabb9731~wK!VhH1H*x+7;{|OsTxyQ%bvhgp5{ZM{pamfB~f=g20Ky-5v0i3D9?PG3>xJbDRL%?h%GnGez+jXsgWw!DO3?# ziu_Z8xC|ndmDH?yN!*ZTzmiCT%QK2&7vfv$N3s@7rytY_hi!i0!xxj6z|Cp)tFg>m z)9l~HGAqOO-x89S#8Rr$6r$wkg7VYZNv4o04^ndw*@wgSuh=!!wVqq(NaAg(_1k2K zi|bPJ09R5Fp9tIEsmP3_+mBSF(w-&~$4m9^HKzYh1-&EPelF1{HTQ2Lh6{4C^UZ5$3dV(#a20lNc2w$Ewyedc8KY3Re?9Ng z(RrJ>bfvXn)x&ZBN*<-s_N2HrpI%zH6<5kw6r0-u%0;U7jK%Ae*NOjj-+2+yb;vIi#OY(7(8m&OtD+- zljf?WvM1HH*2nMiKuq%E3{!$C^L;K7XP;k-K7TsD_u2(zi;d&%JqyZ;j2`#N1!bkRQ{sB3oqR_3#x$eeIZKvg zJ>$oFV!LKBZU*56l%2;nx@1} zN&&vMwR%$U3U9hhx-TFTpJS0pkCutED^UpY&~_FYiYFHl%|&skFkWcBp#E^$+9%HQyvm8ZDVQ0p|Sw!-f~iAcFQCh zHux_Ld~@dCJ z$GEZ!-@NhNSQxg2V$nG@hfUd2FLAHB)3)+*Ja5(V=!opI`!e*Cj`Rd`O#(QNmY z&)S7K<0Heoay5o+38B4g2Lp6-?zCrt(-d(_@3a@W`1Bg)3CqAF?uLM4Q zzhdZzJV>03_`Ou0F@>lxg{U!wsF5J5%_FAJG&D`&Q`RRt&BS;t%ifdZX)@B99wkp7 z;o6yvPt8uZ;%&%Lu!D7>DX;(0FB^IA4J5MtAFFq)zo*w!WX$GmkI zrDyo{M|mn&%75OruGB1#gR*V+sgnD_yyJ43oMd^eI)Ag;zMB`SGI*SL8;-zit!1~h zhKtloRLgGQ;GodvU?%800`#T;9Rs%J-PSo3oh-qjnszH^hv26O{0ynbt#c($lKTD? zsNJP9-c6d@n_`w(i*4xkCi;`r+_Ru9-s*>k2m6L6hSW})FnU7om_d&+do-$Sqqi8- zab=P3Av=Gb)xcAqYkhy{&$F~)uQYxA)TD>?*ZFI&4PyLxmSx^(+^m{~pO;Cbc?v&u zM|mae*i>$E3^Rx8N}8LdaHBDuV`9@iGXFDc=}H3~x@R&34-c->fv*d~o&0!g@yk(? zWF8*Po05e`^?i40E%?@_7kv1po3zU>VWi2OEy%dZnk?an*;e&DEgp+!IWKv$+ANu> zCsUjKOriDmtOQf#+?0^>A!Q!Y*g9wK)iu?Hju-k`md}*-hF;5>DpwEb!384MAcAFn z0=aG#7XARytNBKs$;yD>&ZD;JKQj#%b<)HQC+nTVJiqL#dgQ0=p< zPeA6nnhC>5lPmI^$UmzT$jKml#3Y=zCB3jo-)BCj+?tUzAu8PHm)Sg&Xk(~mOj3hG zgsX$E6JUMz1%RU&0g%HWLP;<{X4%MwZXB`$~%53?+m|4pVo9iaat6vkixtn#s2DG$GFwriT+2?Zm7qis* za;sCB9qRl<^|L(1LO7>jCaRr3g|)|ubaIO=cZyC_*9#Rf=+_P!^}KkmWquR$Rp7GL z%2Mm(AQiWN3q(2r4!PLROLu@4S3jK5m8UhlqlGL)U}>{)4J(n+LK4*njzZ;3OGotcupZ(MW|i)f=TgO&Z9LAcS)S`7=KBrkN@k%k;bo+V zkE{~G+EDJTas=cp<2ICA=KnQP_;xP9xc>q(lBOec)MR23N7Az$*KB?RpLcy(-+vyF_klsDym6-gdjuGG~c$#b$9bpHGV zi!dq~Er2~Y{eV|Xxn}>l8B@HEhJ5pWKlslx>26c;xne2R`wWLQDn0Q!iWxnBt;w?f zEXNLDs?Ir5CMTsXeit`{fW%;ZbyUpJ^zzwk!HlBL$>I4oy3xKI-gxuA`x(c?zmd+Z zsxR^Yo0Yml%c&WYZj6s~pxjR(gFsG=BjYh&8Ho7^HEpNi5%irxlR!N_a{^8J#~j_M z^N}81J|1w4Pt|fZJ!SOBso75=+6@yPL=UqZQuEOJxr9RS^njY<4Wz`1mrey@u!*5QFj848&MlRnu2BPnj@rNF|=4g(LGG48a zCZ^6YE$yEio|%u(KUb^Na-bZO&5xd$4SbPhme2>Ba@#1mF>4!KIg8in^22BKg(NhoD4Ds-KD=sFLSGm+(jpuZL4G-_KxW!$6X1pq96I5u{m z-0=dX>pVc$$#J)o+wxVM?44@a9+uTjY-w;W^GIR!z34nowRmHTI?GK`@1pQW7)Du% z6-toqO(g_Tk1#rNM^suKeq5o)^AfO29Ny2nU)fq_JIB*_5A0C6wNssL^VHVn?V>L|o<>i;Rl4^g+#=v5 zrS-M4l3@aLT*mFi#($$c(bK1=ge-e)+S7K#^H4g+(J3EK6E1%g;<`BV|BwYilqthd zi-c+OrXO)H>?k+&1<21}8C_PM1#2bpTp3{ZW82E2rbp@-_ug$Z<)IcPU)OS*!YDGq zA(1^ccdldB_I;FcY0}JEXMzDQeJf+;_pyEHTgeQV*-wCldvD`S{$2P8X7W5XkQh+Qo&tZC`W1qegK z6TzD+9wpH{OMpCfe01cPT;XE1O463OJnb6!3wT^oI#?vuvlB(t4~VEmqTkOHf#-Y0 zAsO#lQrgDKb_#4sY3o}-$GE|78rCVn!hkG6{oWZ#Pw3tmVT#MW`}GBL=XFqp+HW^D z&gr5PdgPr-(Ues9!}5y7O!wIj#0uNGz}R)WaWG9z{r>tIhHSw&&!1q;H<>?*d5HG> z1r&JkeI%3Oi=_D6m!IYe#O`Es#6FN@&SmV#-9ufrVoH6PFSm@+6`#|$S3F~gol7;> z?=VNj+J~?7An|mLIYF%@le3BI0rg+)KTLlq&q#IKaiKhiGWW1s_3`Ouu z-SbloKl$VjVbi@YPU8(=>f9v#_PLD2xR=tQ4JA7?`mi>nc5-s0;0$H*Zi?=x?!!9h z$oJ8aca&EZS={4xR=PBN^kiU@yNz+_o;*lcIxy|LBJDQ5-mB~z zWKzB-{XL}j7%Rn3NVbTHiW zo+&+G_gawg4WtL=q4Dy_57aG1UW!86i)z+Vb?@?-7+qO?*9Cb1iCm(PZ^`Ah%RJoI zSLlROQy5)oHiUHHdRaP~L!n-f9BArn4x_+d47$v-IeKtrj`t2ZB=4JwT$}l5=$iA33PXy=nq>hmEXWq>9xh44Bm4&sj&9&e&_}u9eM(S< zk~dQ~m`u5|c|=&Elc*Q*XERAKg(HE>^zKNN6a56cW-T2UqU>-#zHWHyVIyqYKLEQH-d8SqJco&U&bW)~(Ba@b~ zKQE<0WAp2l%#3BsJ4M8!w;Su{)WO8AtCBp1s=~TMY#aomxn+HY3(564Bt=(%eNA4B zG2uqO(myX(S9=|FeV%mC&5R(Cc7w^)%^xWSg|ywTHpVK#1eCbX#Fw#I0>*yhHr;XS zNb(SdXbNuVzSeSV)-|B&=|>8Re-WJS_`OI)MRRp0B0slVqN@piI2j=Y@iy3a%k;i8 zIeODg38UnZuHXGo6Sv=wknx@I(`o+#@WEW~x+7-GxiRx02By=wQ!;)!S2Dhn$8#fJ zSLQ~YabWxND!538mB+BUN%N)gG+){!%D7@^f%sAXTfs#zGMt44!8NwTiX0)U^TsOW zbnaWSaT-R4CtGq~gwZd~Wf{oVEatT{wZ$8QKBU^>j6swfPYv50dFCWj^)EAD~0EAxY)w2@){ED1I0Vg6z*w#IT_Y>_d=lkgvA6=8X+h@nYd zmXT2Zwmu!AqNmgJhACeWffulKxG#G|yDPjwHbGq8zB3 zhH?}@N{4h3DIJ|0D|nF9UdNQGg)eKXSd3ejZ{$0r&TWWEojW>7ovT-2nFoLY=r%sO zlBC=L>K4yLV@5CpuS&1w*EE0e%06_>q>t@kqV*=y5i{SH@85OZ)1x(G6}G*o@&Ah`zC@RkkTFXBkZ%c8_kgw z6wv!9p!uZl7ZCcl)Ty~QOIuHbO|e~tPl9&@IUUsalumRf55UFj?_+qMif8kTtFOvW(UwZT^V341S(H3vsk+Sx`L?%in)XC_8M) zU}tJ>9V*1ePZ_5p&k-`eP$}lhB-Q8DLH;h{023qC7udb`$c*jAt@7qhbNez^~8PU4?#?- zbZ2A3kQzK<*Zmcngzh|6?Y#XuAT@_Pmvs{T|nuf1SM#u6y9x zowYMo80z(SbgozbS;Ca2xlup)^KA%xng8bh;xt>4ff=Y_{6ardoudw6r5xCWo~M}{ z(v@;F{-YwCdhvw{&OC}$s2Yu1#&@Gu^q@r$ZHcHFN1JqBqBzX9qyncQA4m^_bFpz)^Y~fZ=lM!0v^NXz4ZpSpQS8x`~f#r-xZoKE68AY zBqq0LLh$fpcgB0l@#LVUkop~#TbB<{<|^aR>OA{e8d?bJNS=D|2JSxM9E}~+#^jUm zaVt@ZfGlIhw=vXUyp(SIj=R*3(owSz6@rOB<97v?d5g-kSBeHa6gjGl@@ifh}v)~xA|!q!+ko^dt4 zt68Qk%;}y_s(qWq7nR z7kE%V+E&?*U=NbweQ2upv8lC3orCNS^KjYEk??;UqY%l9nWH{@J5X6Q#>|D<<7l5& zQ=7|@!4+mh(lcM$DtgjHWL`HqnDosTMK*K!Wbh30y-A;L+vXRLcN_20nztoGsxr+l zI4RyN^ZpcH*nB+2mu>zc#g}Hjp5n{k3~w^=h*^;0OE(uKee*>DZ>~%Ns!-6k@-nUF ztThEbGdzFox*Vl90US=~pNxl5x~pPxx{@!?-16+e$+))(+GydVu8%iU(V`X%LLQ%`5`tCggf5%@O8X_2H`7Y;eYE)^QTL zK5VQ{lUc>rc%N_zgbR5IwIVU3MO6BpvvK$C1F>S~M4YL~!9qGXIk8(?EB_;3OUwLd zTFKbJ!9&OFL!4e>exp%zFlbkOJ*VbSp`T#s&SF#>7a;J}3J+w0G0Yg(@Tpl zOV$WYe9b5uB)?z>;b^m@DWg2bMb}`vtplD;k=@OxS$xh){syZj_$J+wF8VQj|s zS*d?uY5a5u;@P~U(pVu~#XL3UXhSGHhcIi^7mSn5YrRWdc+k?z@y{~>^3q?Kl&l)e zM)ecAk*|p8c3%vG*@y@+n73-$o-{Ntpz`L7$n7dJ5#svyH?^$%P$wzYqwKAB%#NA6 zSlxEa7V=rf=Yse@XIa-VTX#}ArWM)6#UlrsHB@>M4drHX4WGqs*?owOYRY`#mn z*tMz?*bgD99lTObFU?DY4n<*cX>!l^ET%`%dgG2ecqKIuN<47>Jd@q|9c8F{#|z{e z&f-n&Y%9{D%L;wezwo0Q; zC=4OdPn8GU-wb$9g?rC9Q|PD3_wXtyNMDh=0jaN>J6`Y@pu9qE*e8sw=A3GmT4N3x z91@NHf*Y0Dg3LC4oT)n7Rad*}Zl@ZbTGgHZ_-7U{BC$Oq2;tCoViwexHU;?B)1W=> z2OBRqF@~w&PYwkm>(vXc{l@XN=6B@U6HUeVmNrMIUyZ6O07!TD>H>P==EsQ<(EqPO zuMRXffBH`N_~n{UV~v-M#r0~-qEe)w2^&P_4N~}f5{m}7l1jC1E;+KS$E8N$?$U0m z6K?WoMLx^BQ4fSvTRXo2xgTc=k?wpNEk?f{hd&KjAX(j6PkOD5wJ4#fy{>9)=OUFm zj3%R%&eoxp--jR&^{RPX<%b>#7v1?Hj=@266)UjlM26PE4lS&{O+X@pmkl1C7`s>v zEfmzlBD0}|g1bLc)QXEZ2IWH*8*gOb|2ir(o!Y2gLV&Qi7Q%ueb@*W`#1f$1geEr^vV-%_<_mbMi=I$M8y!&l!@)wfX9WPM9jKGV%pbwqu>!!t{D43IW>hO~drAoYSa zvYy51+t}DP>cbAxjb61NQY?5qb6GipAm*-e0HLbS{6bokn^$wZ6EO)(Ti>Qu&V&fA zoCDDZL~`_54*`iWtbD~jR=#2~D_^mqmG6Gf{&w8Uu0Az_&a@qyUJ2dqf1CX8#^9^% zYHKF(BCE6B=al!E@ILy~MviwrBgZ$uWxp~)3G4YpxnXAy{ewLrG`0y&q%Wz)d%Yk{1Ty83duuIK627i-$6l2WC4XGK?U-xyg8rG2Ml z>5mPc_D=IK8~FNKOMC*>svqefweL>}BspAXY1oCt@Ua@Hc%CRl5>o{7FR4M+= zCNFY;tpa;@ef}(AT<&M2ycoCIaldM{9zGmuj&74-QB4n_{mY$C% z)f_`^eve!}!@PWkj>HX5nh9Q&)?7e*_e?y-cu`epki?eg%sWO(x<^I^Z>dnO0U492E=o0Vemh7k)OW1oLlm!4|u18rY>OQ9S#pYaZ* zo&xI4(b`qKy~Hj3NKc`I{&ZhEmamJMrl~y){p?*XtUeSjV(evr_Qu{kB!4v1J``TG zSnU^k#lD529oiF;xPk9LhQt>iYMSV=3blJu?e&la5VuHF?ehRER-=2$Dy^`aH#3&M zlo40$h1-tF`Z<54CGJUPs$()RW|utun0dQu%5wLfj$Q7&gvD-^y|w>D|6qIf;PHO3 zf{7O!FQplOKsWitBIChyVgG000G0s#K0N?&=ft$F2f2l!`dZ?O>8X5KCPvSc1QA#U zdSrjQZkFDGTKj1~D8R7HGUM|JEP3($s;^zP>Tj2}mLlXunNo;?#= z==_-Lk_Xi_)3_3I2`G5W+TFzzQ$X-%6qT?k-N7#wME-$068xkH@!>xUCxE|C4}iZ< zH{}+=Df=$wFXjAPYVM_+&&WgC7s!NOT7QEQdGk#*($z&Ka#{^J*>IFtN3k8rQ8_Ub zB{?YhN?MPP^pDx=yT?!2&2=nr+IU+g$I$wIG1+7}i|_jR`mm7K6Kja{y^|Q}5Gc-( zG|x$U>hTEBIFHWOKwM*5wV*NUSp)l#Mp^v&&PLjaIP+x=;W-!4G`-XX>a-{0o%Z8_ z(eJasSa^_ChEHvamz?e&1h_ARbA!&Yg==5B#-zI#$fyBQS<2R~PXM&C(FV?MVq8;<3D7@@X zk{C}yJG~?Xq1|^vc>Dij?oHt0IIjHh>X~6$AP^FQ<``fGAr46hjSkB)I=C+h#0U@| z0g?t70TM810HFiavRB!79Xod7MD57g-Pjw&v1MEG#`hQgoK;t|LDySNCHv;eBDT3l8 zizh`c=Znq3(4ZfW_UH_uDp=5cr`W;~VbMh72L=9r$Pg+DAITA)&k*Rxe=|cApyN&F z2mrwmDzARbpE^sB^l7jJ8ufq35}2qzpCugpx}m7(Y=bAzkm&pdO8{)J1PX7k1e|{> zOQ2*1OJtfXp%#DGVoVV0!V?6bGq3{)jQIimE;M8Y`+!?q*<&&o|Lx5k58NxL)HvnvK0~pxg1~~tl z+`z|wWYL%*{;#<~#fpXZ_Z(WYa2Kk{Iz#-ws4;^f z;QT8Y0%MV22+{sCNK9ZZgCVePH6$iLXJ81lpTQ6y_?s9)jQ{9A`UHW>H$)~2L&!7E z4gmH>B57nw2&u&@ks1yVK^5^x$^ z0Twm5Vg-x^7;FKGFkAe!T!Hy-CawTj=L%$AX9~Dx;0ersLRbfS`YM8QEtU>?$^O^b zg3mul=6}495Nv^dVF*p=0e^+ir2dVo2&}N>K-zH@kJC1!DCEiJ%I#@rRlU(Llj+sO zXBKBtTKaH=8M+><+ygB~D#`Mm+JG}bbi2XO6m_?_J>{W*e>6}J`>+1qKw0nr>52lT z)~JVTjoLp~YqXv8KJA9q2w@E$v_=ST_>NqNtJs26*BN!Uur>iObw*Gwh&|c5!(F5} z>6%SjuwTUapyw#xTW2dc{dF;(ZI-q>b6n-IWZz(1g2{H*4rnALyf^BaOn{@olS3-Q z99ZLoo)4-nG6;slLsGi-t+`q23b-}Rz1cH94_?(jghd0MLNFLe_*q69If!2Yy79xXJJm4pH7l zR9txpV@6510*PXe!(4`l`W<@C0b93u*myG_q*B}+cQe94w*=#RiqlD3jt)?*FE}5+ z`ayCn#Mt$+aL}(PD3y-&quQE}sFkEG+_@V1O~4$0a1!iuT z-4NFd!-BY_&_c>biH_c+<2I{qZO*v8P|(fan+eB^yJHoF)JP8`XYE8q5r(;Xke%mQ zUaC~%i04;Dw-;;uNm;onDaDO#Rw~%0E#1V$Nt^B9UsjH=58#W-?JchTNm5lJ>OYV~ zr+Kcyw;&Ejf$@#;vI1w!K30I$>rb)p2_#8R$qO-9KWO#59QHUbr6a;nU8tNCu>*oP z<&zX=3d4!VacGT^7!`vWos`I?7p)R_#&R5o4I{&iM@p)2-_&eR7GT`852`b=}t`WyHb4u(K<9IF@IC+sD+gt z7s6rvEOW7v;Mq6}x5r#1PRYhW3Lc{gaTGTZ?%vr%hO0IQ#`&X7WV#CR!djId=8SvD zb_Q9~pj4bkC08!Lz$${M)-XFW5eCHE_6Dfki|8OdlCd<}VKj^HNL9+KsHPvR6sNl7 zud`#9oS}0KO+_>e#f!r?+@qu{V3+X2IR@?w9eNNr1usYJ!1b3Fu*Z(nt6Ybp@PR&$ zG5zM`^%k@h8^8J&cDA_)IpOCd;MxJn|FtNBZ8_q=M`Sq*orb}V$+n{ETo0UYpxds% z7bm;Wk-Y4<3P%Cg25u{on&NKA=tH^Cm$vb~WGQ!BxU-&Ny)FAt4XjPdLtM4!oR{I7 z-iu=3oe4x!aZB-6@t6W!1-C23B2J*9B2fo`Qh9p7#hAER6zp9~u-TC)3dTcCnaW0x zrHxy*#nCaudJI5dX(s35_~6DZtagjyxcaMbiIC)Xu4Im@nW`iCq>ccL?f0x=7wR-C$72NoBcSDe3K@^SXB9CEvrtl&JM z9@b-c*NQ?6r;7{TMHp_bQjf-x1cb4wWTgWm1|P#Ziq@y)AZ0#+ktdgXFn*Dz07j%z z$!X~ks$Mx>R6<9%chFEaiTbHOvO&B1EX?gZCrJmLVYUz+lPydfv4xJqUDVyUZbw|P zTX4nhDO?do6IU2m&J}G%NSbp6T)R`_NQsIb3{1U3w$$K`XFTx@pS+ zRK-~8W_ugRPU8^I)%e1g(^x9mO}PeNOokZ7$5M?>E}XeWCl@#j@!R8cDsbmmDj(^; z^0$rjWqQ86xVXzIZj>CJ>OvYa?8!0Jt_C zarpD8#Hb=m6;$*1h-oa0^5>WkiK9{?p#OyUX)eRuqFypC)tJI*jW|?0gK%2U;{@|n zV?(wzd9ytW;ors(_Bg(%!b;6I0>ZU#3NFVi5hR^MmtRr!|)bZIjNPV0M`*dCSyEtA;!f!kqZK=RW)gyJoUW)6Gtr&n}&?&^K$?9k<+lR?33#6YS zM(SX=#wsQ+e8t?guSgn=HRrBi8HFK!KEg1WNXG+_Bq(nB)dXKUAkN&t|VPDp<>SCwplsRaZQrK*k)WTqaY9hHpl6m6&78 zfZbxwv85?ujx9~$bLMlq($LVEFk(6OSG&sjiy)uv`(=E;Zv;2 zbh_{yOE@vdhNIwfZ1=P|Rwuw5TZ(JW`V>3Dr`XaoKE;wJ7unz|O!8ogEybOv5uImg zj7I0UQL=k5j{uBHooO+N@G~3*p%BW93JB=Us;&b!Z1Z?BKDJBN!^v55}?z zW6a3{Eh}pkF_*wyy`>GcUX`}lzKzoVkv?BRv`G`wRaKf83#!tLP6ZU4*69iWeY)Z( zOjlKD*6GR^A3lG$z>2zu%Cq|HiT;z1MyVghqFhC)4Ly@h;;$cn@vHBSXSJ=zSD4no91s#vQ??%ZZIkO~Z=7JIsx%uw`{+q#n(-+5nu;2qWXTj=o zdp@3Xy>x7SZ7Gv)>{@*GOW)0jn`^&o_u{kH-kB5Uus_th`0S}4=EO<%)V{^q4}O$W zZ(jq)>>uZ(E1UWjGl#=&XIPx^KS^ruTYPr?k8|caHtAW}Ls^-XCC$oQKvS=q|1RLa z8T=PnxqsgMEN^k_`JbFWKWD)g-|hIs$Wip|14~%RQEkg=`-TOI1 zga~T?zwoX%`QZ|69^TE-eqzsy(+1?cIh5sv z+NXB7ZZ^FeqVnRkw`7oTY}otq(=o|s5jHB`{_Ar~&OVTkhlc&r-Am3stK^|!EALsN zy`G#`e?iYZOW0hy16QE&$MB#2FahvCn{6EEDb4*w1VwYFoV_?D?<4!B0qTt;we2Iv z3g${WGU<_`vZScY1s;Ii{C5HW&EUUieYe|;1vE)4}Qb7+6Ao#v$yBx zB{)=-ESj>Tlui5-@6GMZjO>=^ECK!QIsd3bIaf=5?lOa>V5>DK4q8t-v@VfGVx zne{H!4YH-|;3PXR$;Kzy{z(OPoW_B|4FUX~1TBq&XpFfZVo zB%#(!6|Wo7C1yj?Ja8k`j`&BSVFRBMxF6p3s4?W}P<@jP2QJy7T83-=AWCnKQe2hd z6${GQxyH<7?bgc*7f7wz6PFcwN?K#Gzq!_5vHrxjD^l)CxIZ6*t*1O=*SqJ>XPn;& zfyM=b=XYLupR%=}a(Tdge?EU_<}C-3QY6XMrY-+cVXg`fQQ|?PdTweUFVa}TL1b;b zzBOhDS-Y?fCp3|3m{o@T&U#n|X1CHv#)nlF+OG^xj4j5HJ^*!!m1CxUb$nMoG=*lao`LSh? z1t{M|Xv>1N7O4UE#@e!|-G7tmI*_DKTNIv^-2{u2^(D41p@n`4q2LL?P!Z$px3PWV z=qEbszBxCaI&J!k#bIlGMS@pe@F3JA#Par2r(7c{F4*jwqtN3r8= zg)T)-QT~Y{?6~rhV#WDw64B@UkpMNX9Ky+HWa$+CZUTe_CsFh7!^egv*}h3@<|ojY z>_Ac;@~nYe{aE*Q#dj#>+E>dk} zh=44c-hgi^AcjyN2lO}z$i)W40a2lL5tbJLNAc>3Ny*n*y!!B@w8Ym+LPDAOBV-0N z0jC#%pHAT(?OUCB3)K=sy5eHQA!Mbpqs*hCe|~2(9yvl}u9bL84p3Irp(w1TLlGAB zTAKO~1@iOJ*(y8ew%SsmhXj#((IU?}58Yz}F}<*c^ZDkQ|2S z*hkrGge2;Qp+*}!l&Q$IST2=fXv;)1R&>A#dt>Bn!=&6IYu#Zv$Gp z;p)O1wPZcjGu3Ob9-7|`o|P*KJfYyIpB_J>}zdV_@Ds zhi!2;#mIo%kG}`-hg}YCQ)P>r`2P+C{$rR2pcNMo{+2au1x3PY@v6a8pi1{r5k3_` z>14N@Ra;7a*Q#P10W@}u#1mE6OQ94{6ZE#oXriT3SPcrTRARojaCZ*d> zFPb&Nfe~8a;?R-B%m2Y{B(GSS%8ekjIP!&!}B;t!pus$oh?rL2TA3czi9& z0jQ$HJj-%it5u}od5s&sVT6qN1Iu--CgA-klotVkwUB6TvlYY(nm6Z#V}Hz6FqfdJ!}CsD82pBd~B&v+~;Lx(ZAEjUgUk3(hz`X1N&DEe4^KwJvygcHAVgO`fLg=Omp~0A!1CvrS z=H(vxPywe+%Of<68)5mh+^~q2|L8Q@4V`%zD#VkYPt9kF;O-F z*HgbcdnZWf$taT9@j#Iq_l>~I+(_L33cc4&*7RCCu&2kzXBc{{Vj(h)PZ;M8etW$W zc2f7Q6F`as^v*;kAH)#YS&)kng>J~}FL83-Zw+XVZ^&{alHnQzMhau=T#LzxUDO|L z$VyjxFn=xb@Gx|XZ9L!~Cb?CCfrPPjNQ~5%Lt}%jfRA{_{Ubn$s3`w1Dh=cI1|{Aq z;z5LYz3?>7Hlhj++e^81rKCA9qoxmUZ_Z=tVY_nJGFX)byL>pRgTbo&^9CYV0qduM z2+@jh=%Y%`!C&Cx5P+{xht+}CGd>Oh`l6 zHDa&<^o^`=a$Ch%1Ly~qOoVKFtO4|1ONOts@v#O_K78x(-i%8LqUHW0Dif;|9sH1u z4>lm?1GNr)&4#YZoB141PE?!SUXU!HpJY?k1k__MNDKZ zNF%6f_q=H#9=8{`1TmjObYhHn)&Xw^x^uVdP=XJf{6%O~M!@!|fI!%CZ7QWPNVqHD zhSbpQ;wz6|q|=K(-7ez!-?$g+Zrs%T)MI!Y(%U&<_lHr7Ej+}PB1nk-H6jCz_NsYT z!R>+YbOuWvn)_dO0Ib}CHwTQlzj`3p1!f}IMLeH^heNQ!g7tz%n2wB@oytClR+xl3=dX{Fu-e6D$mSYHZJTS1o2R0 zW>oZnaBe6wi}3KHi2sd*Ojh#EpU#|hR!YPHJ0Fq|^;4fs{OBW(@O)fn=OYz}UqL=Z z%&Mg?ihP{-Mk=rL7wvom12v7>pP3I)DX9)Vuz?t3%6~^?_4k zM!S7vUqI}a@Clu>!7MJ|4%mUjYhuJuJ=W;9RZ8C@z*i1ijIt@UgxSEhK;xbQR zor^$9L8qZk0;1rRco9=FEY|2TssF}qn}MF9a>hxp@pOVm&%;yP7%3p7#h4M$u@F6d zJyns^v&@++3FqGl6Sg)g_5IP4MXW-mQ3u8}0a2Y8yZAAZLy~cPQg^)!eICJf7vVeQ zzk-}CmA1F)As6BpAdb%+lE}fsEri~$Lgtbnz-W*P+0fyT+uYbub*;<{J3G#ucG)ML zkm}a*Yg;(2hxl<8S|kLANXYlsCG;8TsMtcHgr4FF(e+`Gj@L*B4v~)cf0T}%%=I=Z z56+35KQEF}QKn2IEi{Bk3)9(OQ+c0JCZuH)<3S^8I7HMBMmDD^8kXw72!mXRD*nI7 zjyfejdUlMwm{o&ofg=BzR5jMFWcD#U4Ckvjg$=@+i>1k;V(AEM8WAy81^Oo9X&~{? zwok!EB7MP3m_|(kt-wGN+^WB&&^8Bt)`I?X`b^us_Harp(iO@%GDN zVIhcY^7a{TPt!9J(C_fG!O-Eyv@rMb3wD+^R+e6{e5bFpx{|p{wagzD?#`ctxi+U1 z^PkM^UA1%bw(^}d4b7ExO#UTvLAT)A=;3I)r1_PWB-K@g*DpXGvE{Js6yE8W?8z=g z{^ml_`W%&xjbRDZI;k(AevT#77+*s9>+x3IFmPkWI_f9D4GSEWSHlMQN*G!*ymwGE z-${kpcM(eX73Xa@z~jdbz->@v`s-O6ttp4yVu3@cFn@=$NY9Ir9#&*wxvkFDiCXRJ z*oKP3c1#{ty;%ID*TLvmwMW4@N^X3~tlIgMk12JldCwItQgH&6M7(2cyF>Xp_;b4h z>S@0-KR+Ma8ie^>ERs>a083-r9j>l8^2o0Xjo)^z;kkor;qee z&=ziog=M0H(rY0X7%2g~xA)BaJV=k*RpI-U8@Ds)0O`7n`=a^4Z6o)k^T|zzNY~|H zR-|}Hp$4z+b4Y)-FW#3`=g~9!Mgr@HLK@S6$Sgeavl3TN&YW57Cg{1fX7di=p=p=6 zsDzX)B0Q24)$&vV+tZ=kV5S6*+-Liolx9w-%!v52Q@T%Pdpne0;Km$|yA6?k_Hu;U z+d&Gy7yz`CdkXhbJG!=d6ju%Uy`OAkioSx}V}B4`#eb7jm)i-?t6<|_;tLa!C#0IS zuompD@5cqQ;1C||g9SYFx{`P|euoz2%A^DxT0}>hn7{R#U(1C@K_Ermk9{S7D+z=p z@x#M-2{gWmaQsXXEa|sGHV-V8<;^vk?I!lFJ*_uVI%VK_00E&COZKSi5+Z()+UAt!?!<$^Hv2tUSa zhxBV3j*073vuC@c%-{THOnGMQ(Vnu*A4f&stGH$kj6U70|G`ZW}Gf z^x~-FXknH(QkN-JkqdmGV;V_&u4go|s$yxq-r!a^N1Sn9Dy|VXYL^ zC5b|v7B#}_227z>$_%;iOsNzR{MNrZcwNZCMyiUA);wA2+>L%V52D_7biQ~txaihX z_&LqCO|qS>*gwNhJZo>&t$KEnPp4tBZca}rHQ5HE-`bux-kq(Eul$=Pr?=<6VkDDGwCfJ}meVsVz@Aals1 z&Y?Tvg$EF9LZCQJlMT6Fg8L<$p^C#d9+?Hu621#mTkC5)*CXVuIB)hcsG4X4y*|OS zG!`O5uLNsM`W-boh!9i3+?AUvs!QuD>3x(6PeBIR?;kdyE0`RB7P%R_aX@;UgPcmc z^1;GnRR^X!zafIUgz10BY#J=yo{gL+FEaTBb^^y6xOVmD*@#5B)A0T!gU<3rEXVp$ zfX2x~Nu*5ip^V^k6cfvo#>sfp7u$kQ-CE|OLPJ{P%a}&z9)ue2XtzIvVsBZG%EC9j z(W$tK-1WHiKH{ms0Z%AY86URJa#7*wUTNoL8 zQU2kZB%hPEr4{IOv5Yex8^X+mV@4vx?4#s)9V30{CT;n?ycDds+2~DDsfRXoSEJfa z;0pu5YYTTcUEA>FP$mn(N47C>^J{J4fXpvry?`f{>24Nvslgb}03II1yNqjbJ{;D( zQW1b;-95!7aCfu;>=QuJ&P^sJE447d%!OW_%drSCdVhp(+~T7G9I*Hy)34PozH4Dp z_ZeL7LS-E3sP)95q6#Z9@8e6gjK`hUDv1mNAsX)n*!6@T7c23mZs8|Un3s@eY`no< z7kIa>J^}{vL#Y5#seYlIdUjb})sc=o@YQB?jyhaYfoS%tboq8VS8{~*66MFiGn?zN zaIvvXi!<6v7<0Y=p^STT!jig{^4zjz>6o(m>G-{YFq>J-b5rN3I=tw z2kgwPeII|smb7@oVHVuMiZA>+D6xYxukd?t;EnQe0BKJrGzU+e?jUQs($AxF73aUv zn|I?N6vzSxAg%&DjL5fZ!&c!&JUH*gYP3hby|7RfQPnLLF)`amaq(f0A6|4#dhM$d&ImBanY! zJEO;e@{hs@C1L~B-XsB46O1InXi{70l%V5T5~Mr$ANP^y*|*sj{;?Ldq6Hqb^5%lqvbC5ZgiEFQ)mm&_^i?10CBx%SLM zmjW59T`VwE+k2B-u<9!!MCQ;GXd3iOqCv|tOoQ=$pxXZX7te`@-RPy|Wu)4AQi#aL~>?s&*F+67DoBmWXV2YfDnRmDq#K>gJVtx0CPm@8bBB~To>~9T4 zFGSGO$Q5Qhwk#FdhxCM5509Ou&caCGQac@6tM0K8*$d2WL9=HguD_YoiLS$os1 z_z@#<7#wUpO<}t{An|){<+nss7Hm}v&`khS6oh`C++(ds3G%Vu6K+uC9wLfys_Kx% z^Sk77WV_v0XUC>K!wk!IpgQTqDiN-${QCGfGRz0!&M4bTbk$D zczSf<5*#cYUyFyiZUY@kr=;Yv+o&pOw)i0GlV4HQqW8&!|^}>(SY4K_K`h6J|ZgrLKpn$=LE zs7M3g6?o$NFHRs9bN`fD0L5}|`tOo?1%yQlb_kNikY}T(9?d+t36BP$*-6TK)()@& zt3Ir{zVOpnSBKs6X)J*-e0LT;ZzsU>oF*Qxigp(MBLV)A2%G_W2ok0x_)_KDSy1a$ z*9+w$48VKlA=|T45eZ)kU{U@8=sJ+}x;xZ>7|$RHggmKmQxZS3T}SG^kcZ4! z|H5v7q1vm&@y6>&x)eAV+t-7bIH&^!?lo9$7142=N~7WSIpQ2#2ujdrp+*+|Wm%&o z=;MX&kxG)%f6t9LWC_YsgJ8EC(qQ4AYyfa^@zZ%$Ij)(?J-N~TFp68B01GSlLehaK zf@{T-Xpuv$r(0RwBvVO_IM_;8$8g5D^%O!uJ8-ZS1PUP)5;n$ZG&rD-R8)g(|5~$_ zaq$<4`A$hb&)=aUQyVqU^UE@0o=B|*xZcwdqZNKL?*g?RYzvbW^`4kI=J_+Uv-KWN zPoncMi|JyXx6--4J&*hcnCF)Qztcm0s0P!Yz+l%qeKXEvKZ7 z(jj=?Mf?5$Kn{_Yvq8U-3QEz7pk)br zi15@8ZpJUkw2)y&mJjl6%YuzC!K;y8uC z+`(%Ui%Q0xOm0G)2cjpnitF-LsR!_s8`|wabj(KPc`XB-B-*ocj&q|Fvx|A2g#-wH zQwjO^GtckPZiF8p|K-f{y1;jE|Mkps55#TYcku9cGS7>`zjKi2A7h?p=5c%r$G^%v z=bRUEKx-)xe8fEOLrg*hRioseD|!Ci&i&Qgk7ZT0G(P`5%Dq;2eV(V1G7m~e`jg3k z@%~dC(SO+HHcLm|jDq{-Z1r4$&UCI3Pg~*(jl%g~E=y4#p2M2fDjOM2b05bE&>p2= zJ1xhW#Hh`+vAEJQD@VSZuC&Z5aFRfOWEN}fq>r>cmV5DCj9V;ta;Xu`1af+d1zx~C zU$eOHmn@#w9r0;%46^yh(%-YWwKtMWaAD--Wl?Hpw7YVsw|^*5$Srr!O6*&uXlKgH zR_srQ^MXY5EQu`SOT;OnVB@3$F$)6~2%(OlHk5z1$=`$-k^8A?h=<@m13%8#aKB1` z`vCYfB~0)F7|F*+wq;q37m7d*+c5(2!Rj#^o`o4N{2C7-&==TTtC01YGH3*yfSVnd z?oHtG#DCy2j&rMR3i8oM8taPbY6Y&wdT_rG4{G!fF&`PqG>X(Kw#J;hU+v|^Km7UyRKZ10K%PH|}qJuv}fB~grbpt(AqMOZfl^SmiAUN5~lrXEo z!EM(gym-9;!C_O4f+0NRq*zk7V1Bf%#+BH1CmeZj?28(9Z?0bA=^hL14|qm#igGWG zTwaaRQ;F~oje(a`j6%I7!%A#wVN~*L_OYvcJ{j?{;9Mn8Xo=FlC38_tQ~=jD443BP z%oHrMv0|`pD(Qg2+>f-t=I39%$$l2SLN%rO#F5aUo@f_kb z6DAG0GEb=Jc7o_zC6rhhMMRHeh=|BFb42v|hoB)BO167?JoG+;pdr_cG-T<|AR^a{ zM6e8K(2#3p8hU6%Bu1{8Y3QX0K|?O0QT1GxgiB9PH3%YdSt2?YrWwOSA9`YNf#y5b zctlm#m^9?F#ADVpBpKDpb2us68Feif18iVEI6+EMJU9WUB0m^~Cx=9D`gc6j1gYBa zU<29JxP~Y$IZ-6N=O|j}P*RenTGpQ$!oQqMu?29PkhzYmG@ZD+WR9w5VwYS?~ z?MtNfdK4|xD(VZj#(-fk3Zw@m&(;`4zSB7lFe$u?H3_^T0@)aa$p?;lIy-J=xYaCdvr|Y0YmE{8g|IpZQ=~!>mKyZ|+D;V;6FpVl> z0yg^C4yb1jrqMXpkWE=9U4#g>by(HIjd)-fH@F{nuW%}R2i+g?kM)jtdd4tv1U*B6 zaq@dckb=jL4d33O!NAby2&1glue%z56o`_6*y6&YcmaDp7gs|aprCqeoJI8rLPf68 zOF-l*)#%=YaE+$Ta`jMfSm;x5o|O- znBwo${SotnHnBY`EwhI7AU%7yi8Vw))5JRx)!$BRROD*=wr3@34{pzjS7D$Kb2D`` z=(^uZ%}eksrvjAYoisZ-rFdlf1$z=;+hzmi_Ih{r4~>R`%pxehk?LE53u=&7#4{o! zJ%`1}k6ha^)oop}Lm>%}3?AR|k@C50bA1lYPn1Z#I-rQ=&d6*efjCvwHfdoIu4Jl%)4F zr~tIrgv`Kv4YC+au9^2VynosTqYTI75Ild#aV|1rtZtP z^o<7+I}y3BZ5&fLW7mPY3tv=D#k#yGhYC!LhasTL2d#ZEi&@UlZmx+7xaa(NPM8mb zT#v1nigk`W=QfON40u>h^D3{)dJxHl?a<2sGiY-TnsKPfMQut|BHOU&eN(BT23SqGf-P9&xBe5M()8{Da9skO$o*h(OzT8s4$I%pYkR-tq#F2`@v zyO2PMXE3`RG2ei&NASe~5l;?k;W)mqEr=!8IIiD$r03B#xD>)&XggAV8gSgmgZ=~N zO<3)^9DcO5b{*CZpsrmf-H#JitU2)a82D?~Db8jK$Fe<0e@olGdAA_lA)F#D;^~*K zbB);OqVM-m9n_C72HXlKNEPQA<~Xgp$v}*vKBIIamWs)J(R)Dol^DkU5#RJ@6u_3U zax5DA*(C{B-qARII0==caJe0$+D~J#TbEkMU8p2iJ7gc}g9Yx=t<_}>%^qyMRyJ0Z zmRB<86->SY{G*4l1nGeSB>jz4aG~^2w646M9J3B&s$p&IytlyUKkmRbB4F`s7g($T zDlsNK21}Ydbsw~YahMJbL@L{CkO&~*1yH9n@Q6=EK=Kj>5r$irjUxvK>vm;di|PzV@)nwfPJW|}%8dOU+%LYw7`MK4@4m!$t$ zETAs(+-8aUXDVvv|$u_m8)C-lX~55 zs531tg$Qlq|A`_<(wJZk3v(z&iKs5(WNz#aR z#~llos9UW%fPKL2JtZBmeG6^ignlN6xBb?(n~NbDq1w~i7Au+O&#Rj-7;Uu-Mz1aG zN6;ZsMtu`OUdQ0($5-Bo+r`I1;2pHYTnxa^#PYU#*(n<45or?D=Fg{Ek2>&(Uu0m}i8d>wz-wwzno=9JFOk{7UJ`CMI{ z{uW&_manjl157=&Bo5Ur{c%B4Dge|sA4^bV2BqS;SxDJco`i~gGLfomBV97WmLpEs zV7Gp3uE;waPNq6smADHFEw67_dKf*4fXvlEs+J!jAJsmBN^izvP~1HSUPXR`xuCVD z^l|boPWt@<#rX*+b?^HKH~~db?-C;;l`!as5}x9D5XX{k1{w{3Y*!%Pf0=`&WH_&& z#U=te{FJPUoWhdv#Uhsu*C@TqhRkX2J&j!;M2SseWEEX>_Z+I5cNR2NASLAJJyeSY z@vec8>!5i5>(Vhwh?7p6gPy*Ce}GH8{{A6;AjYYE`I$Utp|xiIfSRGI2-i%i^jf;8 z$dWjmUy-??u;x+pwBb`ymyOPhd>!Ig3cilx=%5g|V4#ZBQ!Dfyk0AsqTDqfUOq9I{ z-PPIR`565M7b@8|fP$Lqo!>zx{#!y}*NW6nBXtVfUk5*w^Q?Ytj;vv3t6xiS4C!25 z;~`B`pc7Xq0d&>EcscO<>tKku6Ccc5^=lPpxpm$;gv84x@d7Ze@+0Fb@rByLr*oGo z*y~ebuR8!P2Cd?#fGa%fKcoZ^N5i^((LMxz2gh%}jBolwkPy}_Wu>IuZdiw&0y`X- zwBSa@k}y57_O`;;F+lvnM$5uUJG7H|=)Uc3)ZzC<6QR>}IfDXk#@R~YRj-!Zi~~<~ z2NP(%{UT<}KVz^Yd${@~a~Pm#3XG1Tfk*OLGxlfdaIF-gCTu~#hC3`ilY<^i?v%GcnjNpBHxwlMRlr6m1u&J_gU|$VsigX(GLV`C*&rnc zcN2`%B7o8Rv;{o`I79`Ne zOLPZFOXu|BK=CfS3I!Cwa5R^PjptM_kiW|gOpe@R<63S!)qp&#a1J97IdkNH&=K_F zY(bCn>p<|wXDOR?$S^MysV2CCp3Oy8hi6N6UdOJDv0T-(8n3(QB=ig?r#(o8)L&ZV zr6#2g$B7`44uAYa@=t_)2_d3VS=;W2`@JKvw+WqFL`gvTslOdlk5|WPqR#63)lsjpgkn{KO#?8<8k7 zRFXpX=AVP$5k|>tF^MEDWH6ZrgYTCdhw29QSsc>SQ7|Hbvu@uY05L&#l#+4w5($Gs zIJEZZi+O44E~_9?i8>G3ck)^OFKEYG`79r_Pf?e$-cAAWxbU7RDNy-1gCB$j)1q_Y zhr4OC!Rt5NO#==dMB{E^W$-XlDFE>>emH{I7d*_}#6@5w?k2_o_i#7y4j72LiGA?A z2X_+(;r&GJCM7M{hr5Y?ppoTnVj(;ZB;3(>Hy7{6aSw42UW(&xVj?IyxtsV13Qg`N zR>BJ?+)dnshf%nj-Vw$FiQLT@swIZIiLbz1+|5~QvvAW3$Y3+T@p23eIr!m3d_=*x zf*KYNo8`a zhr;CiI_br9%#JOXa^lR{kyiRuX!Ro#eX(DF`)W)~UHD?{(}t;i9j11!XkQ8k6z#(h z%P)h8d1*TkEVPm z@+uDmy6gQ1xYm<)dPpH^g^^whyE3kW35Jq|kHQ;K^OF;e(j;Pe7=i-{FF4#oEei{k zXxXo-W_!Ycf})WTVoGavSzEKmlG%4t%aKBFTU&7%VtyJj`S0+R-7wVkTnyD?FOqsL zMl@FXyQ$dmN`fD6#XcfYuathPW-0P-baFVZ4U;1*RGbC0lG`M?oA&k(3~U|l4f%Tl zJ&X{GIbygKYeb2e5{lwf7S3^R;s+v!b+b(a)YVyy-0n2C1{vZOda;*5r$(V{q=q;J`pr0DB8v z{iC$MfLPt0K5{EfIynHN{kWrmAR^Tu^JFsugGwWJ;LMP5KqE-L)ct5iCi&|9N zSZ7mlHZ2@5yjP+=VObF?)J~EPa2Hg*kbUnKZ0n5i-tDs&LsBk=AWn9h&J}Cde6%c0 z8_)`8tHFdOL^e^>;aG;q{(#7~Qe;j1Qbj5dv@j3St?!8>XEj`Z17jJ5COo!uwlk2c45y=fF#>*6N+Hh z4rB){z+XofLA-M0^WCKW-JX0;NRz8d=EZamV223W>yZiV70H{Zz4L5dObuq>9a+e} zvF>d}PW^RVahs6S3wPr>6z{UT&}FmH-n;5h%{c#B_|=UNL1(THXNeE z{-f=Vr64lqKuUJ|%~F)-f(w?z*@+nXZpJ|bvcy&l0lx`A92CuW)y23LXXM$4-(W@H z5J0FbhnvYI?AjybD>PnU!9mh|$FMu5A}}^md7u#4(zg6N@*}Z_QV%U*8{PfRB*eNJ zDeOXg=?|qseEC%-ywH3@Is8gG9w}JO`wh;KN{9H~lDQ?t_m&PVfd*XcEtO&Ejh(Ml z(1`=VY#|+q@zHUBmDs8R9D`=y(!6HeKgB{C>6;ZI@34)-4?XKnNn5>7BDsU#k`@;H zu(K>p%#ixTk}M;2?e1F7d@VjEf0jBCk^UvLVBqOb=;>1;C-5%mltglI0wq^LPQq{+ z7Ha6>v$6u(EsHFASpkYkMX$t`A2+5?g)b{mt)=gvjk-sv^koI2^pwJksmDu|Go(^k zfQ=_>DxRj{AYKLvVem{v2y0@;d17u#tJfzfj_M%Viyjk1wdkh}C;AUHMThRWC zu!$32?@2YJFAibLYOjgOw=>$MW3TW_QrFKwP7vdsk$(y25m zkFCN#>hB)wqKP0C^p>(5eann;vk_&uD6ETe-;&#nTsNWv`te17J-jYIUaFcQ*{TB4 zG+|?NXaWgUAt9AcxQh<@6-tSBkg6F{>ZX*ouLvRq3HihBC+ca_3~6jK(io&PHdzaU zx2cR?ut`rswa8m9r1nrE?b!zq`4XHNg(V=C{z9rEC&9$X;dL(DfVPx90OAS2E(O(f z&_u5S>*8?pBNCbsN5^UitKb+L+uKn1NL;G)bb{Cmek2Y<-QEVs)L1OfqSZ2awGDCk zO8x|2o^Rr}K&salzJ#p=BiKtZpsQYwA>QTB(k9~a^VD*8j(j%;?sC{TFhYW#C)-wc z^I4x1+2;`G9no?QQ_?i5RiIB5{l&z+DRby2+$0 zC=|B}(I49G8MB$jvzeEVAd_wGBAO(8>q*K$W}Npk=lv3?REG=reXK`lIL6*T{XRMe zb`^LN9*Xr;Q<;YgP*tufRFC1Vg&Rk=RXmVrfCkp&S=**^JqtEeC3w&@`Dm7n_{Ia$ zm5njvpcD5|XR}yWFBY&3n8?5TU3cwJ|7dwI80s0R$88d9VmByl^f-+*PJcc+2WFNM z{Gv{<-72P;OIO3Z^$v7~(X1xhI1So+kSg$G-5S$r7M~=bd`-ZV0WVp+hR4n5Zi*%? zD@odbNd<6N-^00-z~J!cLC?r&2*Y>*)mwXlqI`$&)+kmU=24JHCgPCwI5dA@NwP~1 zriaLZ&}h&LYVBu*B`J_&DQ-)b-aEmIsF#n*Xh;tGP`;t8j#&-p4!iC^2S+)fWlqbO ziw=o1eQ9h@7S7zIfe6Rzif~fz5dDmI;wJ$4;tvpC19b>MrAWjDFA%B-!^Y<0kaA}h zfTU7CgD)Zj5n^ml#NEf+2vSK9L=MQ01kFxbaU6o2@syz8{=@M9mfcPvxPQD8L;(oV z>#=(6%qphjT`RFMOxaY1wXUCL&Cf&z+@7VL!G3P7cPph1qBHp33M%cD`?FF%gXUi; zOM9{u&HvM^M3csUfO`8@$}{4*4PV?o5%FXgX+_eUq4I-d$4|48y*i11e=m=v6Ws!K zn+N>|FtzmtI1EYhm=OvYq)@A73bldC6b^+FBb0_p`wHp-k{%DaMh`g<93MgCO;o33 z#h5P(maQR>PA)qVQ zl0|Fp6?o^zhH9AHVn9wV^5!`>?(s$5Y~lJ~kvB`Y(ieLdn67kf$6{}s@CFxq7YP@l zbj@DQGaK%+;dYgX(II9h2Au(whN;4kOa`;3XN*vcvRb0Bk;ex zpkx*z{gD+odnJ?Ku>!Qy)>!nGM0~D!X0;x5>Z#tg%$uosmw97Ft_-i!sI5j;@iY8|;d)reJV792%uGv$fpKa9b zH4&JBH@wlv%`;Pha{)|^wZ^gTZErGwH3o2Cl{ahFxW$(vGJ@VSU;FMVZ-T{Jv!P@@ z!p@4*BgBx9p3CILx*wCDyRRskieh34xXeE~8VDU^@;599KjQ9Q7{UYD zO#Z$FUJ7`HKZG*;T!(6dtG&tVtT`pTFWAq^lNKMD-^zMlHSYXEOUmRmI!-&c+MAee zjlmZf9uA=9M-7U1r&2TqyY~i=i`xwf&xPKUi24!~tv)8dHzf~E{;nW`&Y2sTwWhuR zEGNl@)4*e){=EUTO}!N}H00mx-|r8FP>>NF(ZpLNj4=nU%d8=r>zRD36)=jW*4~=H zK!0~|7%jo%XDwLG-@GYFbFc9_XBjo5`45+;s~9EbSqd;V8f+dzZcwnQ8R6AqD8j&J zp_&Hq@*I<|oDr`hZ?hoFYCzvlTv8euBqn*pilk~8z%=ppG+^mqS135r?`Lvsg2=r# z_abj%hEcXM9<-%DG=^!k#vm!Z$UEO`T#$?ghI#@avwHttr=#jG^N;Y3@$G4_E?&ZW zt?+<tRk?jmIOHxbC8KviIH z45f=o4EL3?;837x?-;drwhq?rF7hT?vLD>rFic&(JtEkFI)A7a{rx~Bv_8<&KZb$j zYms21*I1!rgUFA60C7As9jp!n%xZZz5?#;3#3oq^F*ZoR6--_>1JsOX({v=}&!HKh z<$hI{-maRCHRJnk1TKhC^WF%^NMB$C9si|iKxFj8X+UHpRWZw?HLml{4|Dn4A4`dO z@~$x6T{bp?J8dH)gZ?2z_eBdvD*%19!Iy}DKn> z0sqAc5A+XU-CgAeH~e%)czv*Llt#dptk^z368vNe#7rPLHC(yneg6Is>gqxrraiI2 ztAtC0$3S~9HBgfbMuZCBiJZ%)K+FVgj6n1c^auueU?wn{aU6 zT;?=g-rwuTY%>ZCp*)Jl2V*a-YXAb5XD6v`8Az}ciyp)KG<}`D%1iL(w8eETt5V< z!eoU}^`a?YLk!y*0U!03L$wR>Dnqrzg4rcFghm?z<|->a%*2N<eKZ2u z%~|5@X)u#~RwgCgAnL!OtuBZi3V8ts8nEWT0Wj%W3#<|)?ZalC1q8+f^Ni>aZC<&B zd4NObJ{dth)=eVPIV+6MNQmS=rvuIGeliV*nBDGh^@(|H1qD#K4xnfn62oxEbfB5U z_%z%q$mG+3W`G}Aas8n{*ZE5C{&xe`}%1}xNSzbS-OAM(b{_z z-bBGk(Uo4;c7tQ8`v>UlqDJ0rv0I!KE=UB*jIhH>fqVpqwv6$NT%seiBbDBC#f(4X zN9OM`aAzvLNvUC6z&}F6&HD!WrAlv#$3%|}(MVFm*#>-5xwh~HiN1L>N~Vo zIn@TqT3^(usN!@Swql0$mE;W(*w8@WU=>vW!aZihenpjK$ynn*RPP^c8l&ZAOm?_# zYBrVihkCl{9Thn@5;*7S^6{_ zm~6u|U;!T}_&Bj60y*vngJ3>`bx8ROIz~HJW6UbA)L4eMjeeZeXbc>rDfl;*Si*2K zTlU;=mN)vLgCKz=XFAXfP-(@LS8yg1GQ@zaqqNCdOMlx~UJ=CHjhg(HH7J(pO#aCf zh?&X@5r_aZ1A!sL!164)4eDSsP`VXc72FuCf>6xlVk=mOnqfL4kf9#`5LWx>>zC+o zZRbX>OLW^K8@;K*b?rv4N4S2n(GXgm+vrVSV065VV?%rUX@$jCC++#+Tx(emR?J_3 z*Ox3XK`korpLDpkX_MDw4lA3`*ZXOrea=9un~a37+2l<(d#z4r7H{pMaMIWZ9`^U3 zo3=~?qATv32E?p%nFUzq9~?&Df0+V8&>t>R!>JG%LcS0|HWCP#%jxr0O#kjc)7bEE zFf@wgIoc|Hu_Y$bly!{_bYZHW3U0!25*lc>2}CVdyw&yZ8w-Y3d4q>gzY!q_UKSk1 zVui_Hw_?x>hxt%{mk!nbQs+$zFSV|_eKRQ(ol8Wvv<>y%lq{o_>u6>xr^7VVcBqIZ zgKWIs=pfhD8`9p7>%GaQkX-NY?d=bgV|$*-FB_rWtGA3l_5OYchRFrt`XGqeuqz@F z16{!b&__l92LfoWy;DJE49BKmkpFKNoQM(|D_3o{3@21NH0g^|0)%%p-k*Yjc%m$| zW_%#9%1pN?0u$nkg;t!A?Dr31xC(@^l3V*EeseNT$s7#>-8f8I-bb_B^*T`NXz-?_ z8EsM@=CyS@edA> z@b|31jmuY*2L~Zo z_dxPZS!T(o1taQn0jlhRDHP42U=Y*YHXW?}$cM8|W`TmVZ1}2yd&}od4)^xChf46~ z_7<Fgb z8kq?f~`N3>{X)`1=T`Hrnh>Fy~5Nkm6sk%2Jr%C}JB-)Thzx!1zE1YwNdqQ%sSdu|J4oDCmEyE)WIK zhJZE;*BJEolnrnpYp+f~U84#1;7P)}d>YKio_u2jY7lU~_3-FSU^CELIu-{RD3PI_ zkl$E;C9c-<=Wg+4G#jkdP7Z zZfP+l-X~hT$wEeZv&EZf)=Lx4uK6qa_tR+JaACOV!*Da@JyvwU-^=ylmrn&O+(f2f$J*~aAPm-Rx1={aHi;qE- zPJ?vGT1(!?y2kwn%Y#-OX}cBAC2S0k`=9s$OoO3hFB@?mMU3Vc&>X@^`cN}e0A~JjHdrzr@{?$xYeY&T zF(Z9le(>{-8K6k-@KkU)mqo7OU{$DHk@`p&yzENS26kBsbHTF?xKsW zc@NNPWx*5>(t@$jNHQeUJcSI2jOrlm$DNjy3l^RJp1QF?9~AhA>qimcEGV-+U;PXU zlOU?Znj1vX80aZQ=Y~kL)I@1bJG|*$vm=Cp!+j8d118?#ZXO$iN@N^YZkT*bhim`5 z!&uYbiST=j@Gbs<{pfGMumo?Rk?0Q*fDx*{*wS$BTCku-nG3BT?2cntuZK{>H6xpK zoVH=7S23BjrQbhLj;;p%%$E#;APBWZ%L9P zs)Epa!jc1KxiXPK?WLUt_kX<8o7rl{!(Wod!4n#;F42ieFrcTTu?Z0z?DCIp8iLvY znuzIWv;*H8e85O%-!3DWD|Z=#%xS>-A``5x^zl;=P37VG6DihUv@Yei;c2+KQXJU0 zVg_(4c0_crw%l)|yTxy4l7{`>^H=rPyEJKZfcj;wJ#nBsH72Ct) zdc*iIw$ma})iK%`q-U<9L{;Kc6q5Skw6Kl+yGbweYaMaC+v_$J<|1TMpE0`^R_Xnx zxZBWt?&|g?U1VmprYtbj-B;9J_zT5Bo-BYPY6`v=6L4_i)pP?4p|p`KAv zGMl-2C<0xDts8!Osyc*K6VC0;jKvNaG*mTa3%c7|YkYlNX2`NY0fY(>8ik4oAjU5Y z_C2ssh?-$?*EFQi=zl?nYlQ*JahBE^1SgH3t}B0NYG^9Ej(cq?js_^4KdB98ytRhY zmJN&nk#0qhhNj2_(0EW=W{$~iIzoFPfXe?UX*Z4xmu@?Zr|4kE%*EK7IMyG}%C;3g zU;`Yl+N8om7YLq>#;IZ$Z;Gj9(!Msiik)BwGjVZ=?O5*~@88?coI7nXmoh2TCV#<- zgMd3?+~|QFcwFLeRg;}G*e-CY2=XM8M%s8Ry+PQqF-ZA!7m!G17W#sato_XSAH(Z*GR`;<)Jp6 zYT{*Bm=LCaYSZcRnDiLl@>}lwIqVYFrl;Yi-E35vK`IP@lOMNh{CFP5K)?(iFMo$k z+TSK`v;8-V@e>qd=2B35oIj6y1v}Qq{Jl-Ik*kf&5|QC2{z8w(kr#8T&24QW3)Xcc zNmCQ^lU0-6)t-&#IJn*PkCM z1>ID?;#r7J*_?xyjqIM~R1ucT9u-cDCkV!? z+t!vl7qE*L;_)|LK`rTY(}|jAJ06(X0&@qctcCZw7bV;+`2R?I6ZpE0>hOQA^xnJj zm26p(eYHGUde5@-Y)7)=Bz}n(*^;$cyKODDwaeCGS=M67l59!Vb3!1LLgLsoj|2)y zT8B`wkd_iC1(LD^(m+TTk{=CQOB)J>uoP$rzxww*_rB%I4lSSm-=B~5?wpx9b7tnu z%$YMY=kO%i3BVvjsyek6B^LVyg*PhwQZxr9*fg?WS8sV1>|0q`kctKd$2t2QmV6e7 z1^O9v-?H)qJ}D*KC{L2?Z*03pDFW7TRIFQ_T_lp1_?;TY$-E~#+6z3wY&hzC1G7kd zPp_>{_&IIzQC@%z$cxOAM}eu6dFpTpxDMpzE{TcP`lFZmzPRqfK}{87r43*0Yaiu* zi`JY$pwdGQCM@31dnBX&muf!PVCE3ihCHMbMK>fr684OpNne)Sd#op zoT>4+-h=ILs&C`m4yQzL-k{x{d%QV{q5de3Q8#J-8_pZFD9-0YF{B@jBYkKYQm8R` zI`O|DeJF;sj7M)rN~t{79h!rkTkr>7N{yq`Z^5Hdg!&B$2k*OVrLf!NShMB-kj#}N zk7Tx@>?U|w)B6%ELM)8ZDc7}F_`%}5HQ~K80e9%kV_Kr`COUGCPVH_!d{ZIJyMh-> z4+C?|o}X6ZCFcEHE))w1C8T7UykFtbPTvpYbcvWzI9)=NfZnG*_PtlKNn}l#*iR_2 z=T37O^fb_rc;>L!Lh|D61|*IV7=oyt=KWQ#LCo#E$E@I2-=lJ?kLCcU!6#5w`8l1FqjoI=+b3?~1T3SYg}IQd7UvCei|!Hd)rU=Pn`Z3K>n$&B|pi zBXNQ1mOrjBSvTfvENCiY;vGENS#%CkcVh(Yb;xpb$%j>SvpEHGPRYB&Y(nx7@oGBH z4HfQ4vA;;Uxvq#Ox?A&0;R%egORNLXhuH9qeYK5X@0uwuELoQN? zb+p=M@9}*^FwfUEBSZ||X%0Tfr*n3g7mm6GQk$D&4bG%k`M4OG3aJaki1nv>Dp&P5 z_I$)O%#T=6xAMz-x#svwYjLsE+-yBa#}YoDkz)LU!kUe(54UjT;oNxxMGavC}sbEOVAvbvt=N7Qe%ar`pk|4C>jJsLd@R5*2RDl=u^h zr_d~&m}m(YcPm~h3yw&_nMLHINWzaRUg|pH&MYDbMdH4ocwy`9!B;jg}cg2pliAAJ|NSwGgc>}i|%ckL)G%9H`H0|qLoet6(b$P7`9|YXPqvMzO z6{j_-E|e$D$&*xkP1WUz2-G{O*AY{bwi#gwnEf<&0|2vDVd4aDjQ2$1quIm+kgWYY zwoMbBY0<X|6ZyWupnjY7ZecNun<)&@7-g=WnH4EUT;BB|uy#1E#lHw4RKfc(JEe8Kw z*ybGM7i)>llleZ?5+VvdK95`5vSvQclosm!jN>z<>lCY)spHh(Utc$;rMR z&lSRP`%{)|*iNn0@suerj3R-X{OW6v>lfD^%d!_`M;m>AZ41fImYz+{Bi)xnG%_<8 z9dedpZ=l$-QtYwUbNHZKUZb9+JRJifYaR0FOUa#5=upBKc`GPX2=N|Iam+g}XSR{# z$m3d%xrxXRGCTbvzqv1CT}!LX+wytKM7fx+ir6Rz2(Mc<%5RZ(^?xtM2rBcyY}qKU zu!FLx=*`^-j;g#Zoi00tps;L8ROLlp>mP%wwA!~wQ5#LsFK_LuQu18jf4exNtIZ4N zZP}O``h24Lj}3>VdZ)LS3grx`c79W}tE;wrF(q!w;fpEcy1I&~5`zEX*IuK1vDm>-I6ImHG*_>XagY^k-{7N=Eb@eA3j9Vi9S6 zoh;=CI24yc|+VE`iXn!`|K1M6*6lGpA9c1uA61=fs?x+#Ne%<; zom4r5S>}15s-?s99!Zo(>66@`;UTm-*ny)*-!NMg#?mAM{)*O$q9ovXhvn*2k`8fx z`Bq8sQaN~blJ_@Qnjtf|$vm(U>o<;Bs$Fc@j7FcSAA`8Drl#}*5Vvx-Qa^w=%+GcF z)sukLIK}Jlz^Pz+hni@LPznWcY7aZ8Z6k}hoQ5_~g#B5C85LxY)#TrzHF4DC_eHeA zMntVdY|Rc0Qh}3ArxMDjz)sAqJxm4Q+`j{;M&l&Mnzv^e!6&aLm`pK3AB++jYw~Ne zhpwxzo&VZa?}p5Qj^3gf$XjG>u=#!9_u%(KZ^7?}V*DP$;tY1L-;&|SVE988!w>kf zDc!;Eoe_TT+@r>X-&@{--&t+MED(*W2eRN;irC?ml+zSn!`;QH_;jY z%5waN(i!_u8Vxt86W4M2u%jzlND^=NKe(>luS>g}&sqe%dBr8%Zu7+`lngc9x&cb= zyH%-+LP?eSc?rN0HF_N_Cmpn4gLlY5%-z=!bA96F)PP_GMc9K+$jJ)*dew0VI^D6L zzZ*(Ak;24;@|qIW--NI3nGVs)ou-HA%o(erVp_QorIoRglQ5tU(Uemih3vD>P>H{ZhOLeX zvTPj_B-EDiml!)B-)dY0P?+i0nG=wAwqw8kEYMdFqW&+x2r<8NIEUgkZstm&>lXrm zbN!Eq0{SmyMVn&_?O4&~*c@NGqLC2#OGLlc&G}q(Ao;2ryX(=w zFR+Q&9u2%npe+&zX}`fOVQVz%C#g(1(ZCN0989*h5UDYw>pm^TM1sF?72}7^_FD6% zs~BHJ_V;g6ic_NBKS{-Hkq!PKpK8{~1}lTW(mbt?=f>N22nPbOIB&*f0BSb;^}k-f z*-KIQ2Yl-UYd^DoOU`dnK>pV8-Je-sbMUL~b>Byxiqdi&>DLezq3eGt_LrYoe^aO} zX`P5^dL;@KzHuy#-Y$~)t8PHi0GML!LtABD+Y<4H$od`iFidMVVlDGH1@hr;X{vsR z`)bAPm?+82FS#*Ta?{Pe*=eK<2L#VKF`6hEkM3{XPCxtXdVk~pfag{R9;%~9tM;a= z=y##){oHy#ZS>Zp-CATiSqn&g7;<#hJW?U`VArYkr&p-&QL>NDbU`D&^G;44I8YTj~JeXe86vsmA^Q+|dBoTC*{3{p0^*cQg8taC@s z_NcbS#uQn%h*6L5>vpl6wk^seSg&F1TNLL;fhuzOhNq1!syM;rJ27qSP{oNZ3`rT4 zs@Uc7ot!qBRk7RUJ2h=|sA7-HH!*Dts^TPNi7#CIXDi@=|c)u!6b@`^JQG8VOP|}HKp@|zEa&WT z@JSn9axL5j?|f@;aTGk6UpvN)AGvlsIMB;}G6gBbGCNj}pp_#2#$wb3L>OEf!p@hf zctZ4i>H`09e2_U$C69JimC1Vfc}$-9`AzqAOvt|ZWFb*z?tf*(QPH{xOFsWmL(pCV1}&$3MK?7rd^#qRvp z6a8lb)4qP6W$Y3=uBocJ3Ab?KSg1@3*(RNtI>tIN$ZVUJdoGayI?(Q)5vP9p@(Oj6 z4f4J`tjcmYL@efV zT07np0vO#5sKXafi|^z21U*%@=XxuaW!Clti;Q?t^>M+R8yrY9WqZOstsBjf^QG74 zIA59$n~}q617Gdv8ku-yR7C*37ZzH$X0v)0%-)wG-h5PS@b)?)ILzDM*G0QT_%A86xI}4JFQ)& zv_bS$zXk}S<;fZ>CbCu2T5Izre;yGtsTi`hL64aESQk8E2j%ocPE7T;AwfqHeAMde z#=J*C7t8fgQ-7VAC7R|-*wW1kVfH&#(w7pg@_g?X4z%dtFDD7|K53^EAJ1yhWEBg? z=Q%jOrpazktBQxHV#SuDiA%uV6~OW^HAE770AL{(8E)j#%#Rpl5<;)s^Z~xGe2-PT zEnkpNmpGKJX+lR|Y;f4TVluy+eZvaV^8;l}FbUhReKFWw%*QsYA_n`ADqd;BDr2yx znX+wI6|aSCJ0`oSJ2S(@Hh?Mc*^xcd4@J-gSQnMr&%QAaKGCNT#)Lba?M&(iEBe zRLJZo@Iv74+k5FEWD#c;uMU|Ks#_$9Su7Up?abc!wW?-ORg=mlh~eQqyIxf-S`(G* zayd{JCj1s|Xv*z0vYa#*sS0cqgT?M5X$Ey9I%$?k=wL5&Mt6D#I%uQX#hR2|RQZj| zOt8eEsIM0fZa1I`U8omT=)qomw%1E}Kh`NanJkm}16+z7!6MF?bExIKr(A6$GsDl` zeIvI8R9B=-t&Dpjtk#{B)7m@d*+Mzxmu%lBxLU>`ko+TxrQ2-JwoEvG0`acIhX6j! z)n#y--WpfH6rIx$uhFMZa2ZvgE#66MtynCAA`G=I!a;Ya@OiZuDB^tBTl6Ss1sY)x zskZ8c4%J>z02%MSH+l1-HM-Z>Ai7iI^WCNP^YjEP&vs$-uk$)Y+#z5z#b zO4XWI*$oPIIS=fkgfm5zL2-EWOY|Q15zCpxU{-*mmLh4_n`zfGMbfTqv}@>0k=?Mk zOlaWgMuY(In4qu1SJxf5(M~TEpOp(yv-kOxM-ZvA=o1H|xvAl(K=T|>Je;;3Dz9y- zZK@#(r9~{gPt>V{1BlV#vn>VNaF-;8lgE<_z3pQCv@VN6k$^3AvgMVVBi8z59=V4w zustQ*kR{30(=XwrZ@&wC#o?tl*Lw@-zH9&-Ne(pmCssjs^19bRXRZ>q zNRW;V|Mi>nvl^ynLJQR?G5~TIiY*j|DgM$npv+PwOMF|i)HbH*p_1qcLfaI-dZu-; zmex?z`30H(7aH@Y2B*1y=+I*^@y*90Om9Eh9WEf;Z$qtnYRj&vXj%gV2C%WW(F{-K z_}GV(*-SeXnWmu&H$_dfKy(TigY>hV`x3aFqFyXORYlY%frwW*wfE03s=xOhHPgxD z1d%NzZA2j%H7)UNHP$g!uzfK(v8Ch!5tl9jDl*kfh7~!9h(_xm@=F%;vFd}a|K^rrC zr*y0dkE@Ny|7#$lp1W5woZ%|%@L}_c{q54u@01zblDN7O1Q>!5xn*cUSroiOD+DU_ zh%5=EtS{d4YnCaZ7O$CLCZW1&O|i7W#p>_PE-M|U1bY2n-RUTzSB4ya)PCvlC;=s1{S5+$hs z*x?7Qa(*DgOK;V}goJe+1xmzk;^l?#JF&b#-0_e;znG(%1K_XJ^Z+7tyl75GqJ=vW zSwu*bO-3}vL5}Ak?E1)J*ku!3f`pl3hFtu$dBaCvtJ*G`8|3@NtWg?vx_B<(PC}nW zJN+EL`i(HbbTKkD(@N~7L-Qh|)xL<}`IOQ>V5d1>O66F2{QYy=FS13VilGWJ` z4z17{?NF@O1A^{T94^9v)5Xkc$BX!747+k)%(A|~6H!o}f!v1DQC;?UH~R3+Amnak z_%)OkGCkFHmB0T3e9PhoT@9swq#6nd!EG)g9j!1GVKCU2f3>CIub<*x0bRV8KdP?Fl>d=w&nG#TcE?*&oh5ryS6PY)?5E5fY$)NKrQMZ4@h|qV zy?pbD?6$OTWM`-C=7#6VZ<-PJqz)sqy4#PPF{rAiW7x^T`hxtsezyVEvvN8p<-hT-wu*@V$d zpLp0`QJrtQaj@(anR=g!#xrzI{0WEsBxUS^L?ZZT8Se_9lt1olmO*Fxjzy-mGKh)X zbcsyvUoSdG+b=z#b!*b-pGHOzm%s=ele@hGMP}}glT7`A1PP|*6ly=ww>*{mv#@`1 zmpnIgdgkPp75$Km1Kv`(|qR^D$FKY?>KDm48QoMN(Pv!EqJ%Mvk8c! zsR_;JHuWQDZ_aL))u%i_gqap!7?kMn> z_S>W=^tVage!Tab!*AaNHsJT`k?{saj5nmE<5>ltqL@{8DfLBIQ*T0mm|l;#TP%V! z)|L8)Ysb%QWbb}FOGIW-R-Y~kKfb!4AT+%m5&4}682epl9S8bIg6|l#Ekyzn#m5oJ z#j*Rdn*Iq3F#=Rfx+0FG5$Q^jylE#9-AFwbkCEf+4V<_lu(uQlB01A1&?*6P;>TKY z-KgCmB(uFm8IQPLkM6ygsvw{iNkEY0E6+tupNgb(n_25rm~A4l-uh&Tmr}%ct6j7} ziUlOOE^0PXS(zZqih~Ta=oXQLQ5H(`*se%>McHRlDlH|-3~MHUBK6%3Ay`9=d-@67 zgTU|+eubaxizWxVV5l!<7iMc;^PycEd`}J`_}0`PLeT){pkc`5V5)|mUhtxe{jG-2 zhX0uveotQbc2+se(7SuTJ_ku{+*5u#zq#MW(|r*)NIt(twil-wv-y(UV*g4en;oPN z1GI#O-raX_%DFqss{|A!Q7A-O(O$_%h#mX`Nnv^`_k~BMH?9wV>?{dn*IB~YoNPl}fGng^IV8lkDOt4GI z>g+;D`z4>Xxk|j|D0J@LngnY{?vrt(ND=Y-`FB}Wv{XmeIrk$Zd=M!xmzHt}y!R1l z7ICcE(PbYoaPc%+$yX9Kv*T}0mS#$p%jomzw$@S-u&{flxia)Y#D^=<9ItbC$oW(x zWF_nMnYn+Lg(J-=Kps zQU=>+hx~oixoWA9k6K^gKmVF&h}tK$)2@Fb;P*zg4M%q`zwde!5AFy+cg|<4qw?TF z%e6MV?01(zA{$;u$(>!aY;<1}xeR(h3RbO@-1wx{m;P-6ljz`U`PCVl@#C;$%H*=d z9S)H7+~9rj!^3R3l4M_Pc*E@JQpX#+%zpw=kg9x~U!;iz8Vb*G^Tg#hRUK}rs;U$X zt#GFD_9UC$3R7Cw!+pjN+o@Vw%MZ26^fb`rJ&Eh?*kZ+<(|Lf*P7XozO9k2&3yL;| zIP?EgB^#l^zsq}~=6j_Z3;orapv`^5q-Ro0IVv2fKIdqCpbfC#&_p5o(AfrNnXy#AaH(S=BL)zW(OfLcOR^{+k_^cG zvDQ_y3z9K9{Zcv-JT$dGsa0$LMPLfnV@ZcEU(gCffIfHYvfF)!pLCqMs3T8?Z!h3- z&X3o&fkbt0m(!Q0LBWVsxj)8*`?6L09nKazDmiLzO5$&_&z8O&Tz2FIuKVmcW&V=r zxot{)2ZX2*_FUq>R+%AQZSUik5c=DYb}E;nwW3shy)_%PMw2M5qg3nUiswtpnBzds zirasE9J<>?E3WqXxaT;wv*PNmkNcXOJ5MLD&C#p!56vf^KYV40K;QdzTSI_lv*Ua@U5?rl&WA zHrwcq3p%D|sJj5&QR?J7M&0Vws|DTo_&DfReCD>~7`pv?w?2LDZJX2X6v_sF56Ut! zG6dD^>@27z)TiU9{UO&YU2SbG=pKLRn{jkCFKm1I?CO$?J44;lvp37}+DZAcT-1#| z$vvJOu&&GEv!T#@!ibks7qwR=s$^*$^84t`Ma3XtduyZDnRxk>}@oF zARNU5C~o5cIaYFn5K<&Wne6HYBYRt_!9UnH{PoIK0i z0VSH31(slHUx}r&B4n#ImTY~#M_58~03fmUoRu=fTSPBg3yzqcljok1#Ffhv+kSz4 zSOgs$AI9{t5Py9}Ddu9a?6S<_71toBnBa~4b=h3W;af%u*MWCD@A4G$XX=-1} zc=AQQKa#4{2#N)&tY5lxiKo;lBA5O!^#zV z;k}0n*VaPCy$)cJNe@NvJS-$$6FCr#w9q*t!+(6JFgs*-!B^clJ(cT2Sv%C7eP3V2F!$~=? z$?fSvM14L9jv4xHv2J}c#D-ogMBG{_FEgG`vcg4#-?`5U8xmif03gW;NW2yxzI^Qz z;oCn@vNrU55~Y&U^CS@s`}V@yFn2wk<6mOOS-(3{yrBPgf*a(lxE}B3k2{HQ|e=y9MMC)12uHUCtau~+j?rx`Vx|4f?Etoi5CjKi9LKF#RW{7Y%Zu;wpMHzqXy zzI0)C^0>`xcLS-6x z3I4i_NZ2=xiIedG&SQ-|3I6&J@X376o}`iT9g)=u{)P;rDZ$^EVYDasTQiK0CivSj z^s`tZu)DGi;~-*6Wk7izP0%k}aI`%*bsQL(9T}MEKV?NcYDF*#T=_MpCXNa8YO=8- z(ch7wzmSj<#fBL=G2a2QV50sr$rD}-6nK*enTZnm5TOvEpoGLcgexCQAh?Yf^tFtP z&78t&4w*rHG11?Xp?6rxgyrIx-;=1%T3{iwZM;9`?ZrdPdlJLom6*5}7(w?piT=I} z{V%N8kl@39%)rFh$h;KyxkNz}YX_1)pXl$;Fy2V?k7npUvPm5vQ`LB+cE2J=oFX!8 zaQV+<=-Do*m6RS!xxwW~Y2>*5`_}AYP{G-yu0pHw%4l{KF{VbQrqB4Qus(K98OONg z3=$6e&qYCR<2JG@Km49e)tuQHf5ehcg0nd7^|ka54JzYLU2JdiYcY)`4hW1-arf7i z-!L+UaliqR%wqc5_y=y##(~u%XX8;nb8)MYRyY;Ou`F_po12bSX@g^fzJ~Dow7uyN zarLS+?RvMra*eUs?LW50xXJCGU1LnT{c~&dR<|^Uw6&vc$K3ju1?Qw~c_)DBF}HtY zt$s0Ek0zZA<>IWZnM<2y8ns|(n))1&`N zqQWn3D)3el+T@9_2t&qB1Q3vx>+ddB0Q&Tx5Wb!uu# zWBh@~KVrJPofg3O508Jw)c@Ke#h=?;;9vRg9{t}XWbsHi?|XX~*^;eH_m^dE<(PMh zQ{Z|tN%th_a?Z;mg%K_jxWeBn+L96Sl1s%k#%0}Kk*W9V(WZ_wgH&Td95>7uP?L&6!w+CI`d=o>yn*K4S`hV5+mqIag+kBBW zl87imN3(&g((pHA>UvU?us9F6U7Va9)7HtBgcEJ~YwSw0K2lY0YW@s1D~7NDY8jjN z=qrqaM2dV>C$aQAcY0SCrvRexw{naQo-3IcKXuNEcsCL3-mD05t$9j}X2)<{y(%XH z`QgvrQjPAZMJNdm7Z>=GdQ&Iu(8c0{ypX;^@=r>EzO87<-LA*?Li64Txs5AWW-shz zb3%f#nKR6ir_T9C#*d%E?GUEPOyi`aP-S+C5o*L;Sxj-9A?j|4DvLzLG7p}OXTF*U zmEjvp3JMY_Gdx~gkhKy%q_8%d3;|_^teRN!SnmKP9jC`81_pgmCY~8*TE~dd08(SL zhc>oFfqt&h7!8L1P^Qsm_}eohDP)=XW5a(qQ-7Ng?Kpe1*@Nu?Lw~@E5S|K^&vIGD zZdp3~S;OCvsedw-uW3SgK5Mx0kHTNVUf(nPotdt5-)MrcZ%w+eufWTb{au;5CplW4 zJr71)f_e5N>jhSnl-PO#e+<58REW4eR-Cmg*%Ma8ey1QFPxkj_>H{&v_Ou`_yOn1& z8KbP$7YQFt_Rp@;FU1m8W7pJ&cNe*J;<-Y~hKUJr7s8ZsdIk$r_5x*hQuo$^oNdGP zoF-W-FD{7x_lBo$C7Z|27CyhVAS=WgZ`o#ubei;!Env!~!`i(^6}bD5(xw(pc;xBm z=h;TI@w+BFrYdH8&57oYz$)(5EXbz$q&As9josBVKDKx060c8-77PW5N+1FMq(Ir$ z@UMcRj@(czM=7617JQOl-h*?DbmRte-JOg+xow0^gv`*98`k}&3}lY7y3}iv`BjGw zH6P-XOHyWQpOF2~Bc^w>LT<1|g84gr(Nv}+3-~+IxwXR^MXdU`WZ#}?qp^@U8lw`b zmUitOhnhQKB^0(Q%_eJUSCp*1Hd#x%Vr2CQS%=FH$)ztLjI>coq*PSZu~H+ctTc{t zt0;GJSJ5ElO(94x@oN`5883D+zhQ8E;~0*|xF5eM96D0CVstW2M5ho@+f>~w6p+nH z0os=s1(L){;3&S1;tw^hJW8?YY#Zd3mRwd zn`I6{)1`x7v35Gs#i2DM-k;7fk@bS!J_!~n zU2v$OKi!Be5v?cP4&&B*g&pdNxPO0^TdC2wSCS<22?PwdKo$u8RnthJ(+iUpFMk>i zJp(XRqpqhpvp&jO&K)ag{lSOwyRYw4m`4!?TlDAJS zmODfH?j_L(H7qj-mp z5C#W0z?JR&13quMjL`2J0V~m^q`2%d!V^S@+~+VZXu0+%~C<$7Gike)8smwWWwJ z`4Z*B$Rc=OksTMbjEKEj#Kp$`Nd(Cslb+HlV|QJZVQ6g1!rCnb*$H#2!@2xco+G1p zLG@vhjcT2%K*Ep3AfAwmWPgk;E>dOc} zdrLu5_3MO4P#1b=(jzr7$Qp))O9y1gKKQzgxI zfcN!c=aB?=C9oZYron;Hku%YfuOzT}3x~*-cPL$i`N6SsXqNiVO!K-xv_!_gv6&(! zd@8XzCtn#Vk-c3k;fWb*OEavDb%{vA;h$1&!e~Y~Iasi@aEQ_>`^S%qHEClm5h;nV z5F2Um_a?H<3-<;K%)BQP{q@xF&>;RB#`@2|dcIct*eK(>i3rN!`C!3jx8Xwg4Syt9 zP~hI{LfQh>T)5C!!I)L%gRO5TKTE)j0+K+F2)X@6MVmmExIE|6-(WuxY6{L zkBPBTWqj1dR@!Q*V-vVvGoEv?sgCWlZ1S+;Ow6mtUF@`la533#r~Z`-r2t!j>A`6q zo(z06I1$RoaHA%0z+-uovBk~iHCiAnJ#lJaVs0G#4Q}?c;qTpAkU28qW>XtWgBk2o zF?#>d%}&=rgb$OI_~eYmKkR1nPgdSE`fPu&p#G#AT>zCD7>L8Z;YKqM?!T=d^VXlZ z+4PI&)Nx)u`C3M?LP@3+4@!XLP+!B~?4ZPzc+d=lpS-Og$6e26AwB#x@bnCN&;l?F zC&o)o%&=dxnM)bxJ^o?fmZ>-B1--9O8J9fh73iC}{z+f$nZYs8KITEm5CO?x$Cj-4 z6f^#TGSb2oI|}^z8y=Jxu;{^6)j13spN=*o{O%nEKKE`Nl}7lf9R+JQ9MREh&wu7jA7@$jmhQ2(boT95FGodx-!XLa`GuKc?xxfU%3X zWPDpk-$PTtbQ8V?h? z<8wtB6-oZXS)^^TO-TCiw~1w3Dt;`<-x2=Y&VuaFQW6R#+VE8WIpH&ECTxL5*mxib zrPHz)M)uS&`|YQaL^zF)7iKwSd_4*6RJ45SRS^yV?_ZM8+Axe*8t~8zz_kJe z4qckZ6C`_TW#NFegmAob8aJ#!%SCrItf|gjp^Uy2sJjS0wx)VBy>od5dav-`?kXtO zpIITwul(@sYpd69Q^q$|ARmi&&apxE`u3#!`U*r_X#`CFPy3ot6Hr-YtT6nu;e)#i z*6a%yXpo}w(VS%|c-l85Di3AsH$<-_`Vn6XekbiE22Dt$)gwEk%Mab3u>vvWFsqZ9 zANFTf=Z2rzU7#lp)aQr$GploWh!PhkRF0}|Jd%jeqHacfhzlq6*9s@~%Y~Erw-Qd& zf|$gxb?x`?VF$|iQZ=lgYOrW4pWkQsN1%{s96 z-NosGc4C*-?jssWgENA@U0kOey#L8;f+EPgl(6?ANkrvqK19OGCnSx;d_8fmRxT?) z;qdK7{@M^PP5F*d`zyqd`tDeek0$6iwa{(srTlxi?eL;SNA>0{Z}6HmD%QLqM-|nZ zWn(lZ$*mA|<5diV?1hFHA=R6mgm5%cz4>=juRpDxlHAdneI4RjSIx&X@fZ!Fm=!-1KTpc-c{e zMobMmZB|0==}UBmRvyXeoz(a?^)Ezl3*z+PoJXsrd_fK1OorC%i-q>B;Z25wLRMr) zhIV9SEV3+9YtD>?CJpUiJR?Hjp?IifwRSijI&v2C2mL6<(mOr;9c-mRv z(Tw2OYDfAZ=yS$5WCo82zEG4u>N0}$u?p&S?mH}s>obCVi7`5Cl7(XKOu_lq%bDoG zFtxCfT4++OzlGFfI9+Sm9_#p#wcH4FkkuJ7gFViUn=ylv$&Lia)&vhHIl{BlQ*(rS zQiC1N`2MuukQ3kWv|x2|tOC$8kQO{1tEaahgisYcwhTjR@PISikP%#RwtQnoaM2lV z%?O@zhTAfNbI$O1TCl;{Qb;_=tcyi;83g)sLA^9~(8VXzmetx+e70*}t-PY2$)WFgRTo3S?WT^q= zckY`j2%D?2*~g1^sM%yEpG_Rgy7sqTmNch@qqs6)Kln#_*PI7!IogOyK_6^y$WbSI zgZp~593r(@mpZwS8tm?|p)ufz1;@61sUfza^JEjO{q<+lPv2UgGuFurZ+m9jZvfkn`WaeB?oAugSy@1TqPS5q!uYMaaFAACo z;RgUe;y<&0+s+)VK2aE=r#>|}s6|7Au*Zo&G<1ByyM|ezxhx?sAl5O6A>CVN$P z{aE_z;C=?V>|goC^wH6x@cBNrCN*3;;qif}a1gD{7KA5L?^0oe61kRtv}lt5D1xJU z9*brA>bWcCP_>ZLyAQJ-3!I(`HmeB*9f#!B+h2JwaI{GN_SKvEzo49JI%hj+4meg&FK6x7%eUP{4qgsPA(^Y4;U z2?TuaH1$7Z0%+Z3J!wrHEi}X5K3SNVMLN^-6C8A_pJS|~b(cESZEh4j^vcn~oPckDZuveFn9 zD<^rx8vgrlRIS;rT5M2-(?Y2_25G7%`BPBz4=92kwWa|7>AFLgzyG znX@c#N4ibn_7>tIA8p-cc0%MZBz~paF9r3)H;r6pq|}j*X=f655wn6#sL*A+yxc39tsFU^|w0>SG$$T&p#q7k*T7YLI&@QH&V#0!QA71LdNjV^$ljjyZP1k z@@(fCMqh_zs)tUrXpFaFmOxw9|+eK z74rh}c{LTRMDD383hv{FL@a?bbS==(HQ?D^IuPOOt1DyScp;tiPTDt z!Xz}tD?70=%~2SaWu<+;Es z#TQKd@3pxcKDEJ>o6W%oBcG<{TiO+_S#LBwSFkD@At83+#%oS*k1I0Pk=(IZ@Ra7k zlBZ?Ev-&CCjdoWj6#;)IXK;7$3m0y>giV)o-Ro8}f0!55K!ZHCSF@bA?NIL{dfkH? ziQqJ>L7(UK9e|XRn}FC^?Y!2CCV6cvpqcHq(9|H1ki{`Z&PQg{GD=sAjFIxEv>Epa z0?)Bhh&oPBW1i{AVTZxraQBx=iW2x0b7dRofih}Q@sw7RFiFxL4(bZwHY>}5Te2*K zKg%Q80p8HT3=7u#)fJZYdwFRFfYoBwU#FRz_~Oi_^6Zpt$GM#->E#7C^Lp<1n5@q> z+xoJtH*C_^&n4@1i+c=CRBz#b_NzCW-Bjz2Jx&yK#p6^zR-D;s*&9fv{#1~OaQ!cyasj8#FJFWwk zO;KeJ8vDv8WJc>~*sIkpm;{))C9r=XWKs^Z9=ulB!%Q^zMXheZLglDdGt?a1k?;sa zWXe-HnvZumJATA}mbp+$j&>wTDt2%OS`;>ZcBrf`HF$JwG_*92@v|L;7*)QHUlvX; zGj5U!HSSQ&^{S$e3)PJ~Oi#Pgf2Ho2S7m*0ED!nSK^hmBF^f^ZLbL%Xjk}*urHJ|T%5K84?cxvqV*}Q!zX*0dy&nGth$|C znNJNz3k&r;=K0Y=d)+_D+O1Bml)bIMW^pmIQ(lLs0+fjS@U!m@tP4dz1%-MdnNJo7 z0s0&2{U4BRu$@ubMPkM@%j1wBwo%i15jeY8WlGyd!`5ClQjipJg$UC#2c64+qcw%5 zWlrtnN=FYuE)~4sF5|B{KzEM$3t!^%uaPT#3Cv#$c$pZ^(PwG!F~7IT)J}%`UMTT} z#{9BHwyySyxH2>~G3FDQ{KU?f=0c6^lWQ`Jo&Q=OjlPVxiX)2%!|K>j^CP=5#Jwe6yL2lk;^ws^ckbI!7dw zC-~30FSq0BdK{e91`TumWBPv*w~4LyM&YKA%}w)g(_EaJydfSJ!9_c1NZ@b9SZW}~ zS8B*&tAU+-SZuX{MmY^z{WolN+G49u3hSJ9vK3f8|E)a#si5bYIM^x#UtN=&)K`F+ zc!bdZ;2O3HE@P{v-_2H$sQ;C%!ZR-)%gCji-zzl#Riw;14W@@md z!2y^h#UUr)41fbpz*zvz079{1=H}xp(brSoqvq$&~RFTsP=)L$@L*I3N)S@@kp@2Vmep$mMN*C|tU& z5OvIbYUws>VY-#=YlLHfz%f(vJo3bv(ruPeXy*&>LykTe>|qOebI+7DfenKAVgBa= zJ;==SprwkaPC^&4N=!{<9T)uw4Cd=>}s0zLO zqS=tOiP&~?ac|vTwT6CzDO-#>M<1v={ZAL z@5#^*G#pIvnPp7TdmU5M7s>(>fx{GFvWo?igXNeahgMN?Xgv&5zTQ!_PMe)+CZ)c) z;`F>4c}lC(P7+!olStFzN6ebBUCHbx=C-`c3LvU??##9VmX!0V$Acg35#oQWITKhR zTM3xr8QqNVt3RxMA(>0G=^hh*tJX3gc5RvUr+Xx(e>1S~L*Ln&v8D_HXdBu)sux+h z&GylGfOo3XYrOAj|MyI zF4zzP{XD+uhkYfQ7COB13ZJ&+EYcArNyK#4;hlEd`9c(@2BBeM{JNGw8p9V0iOnJB#-MtR%?uGDAem|jgbwSrKalM5M1o>R(k-@@PmE9 zu0SNDm&aSGdxNypDZ8Z>P1SczOIh)$At;YTI-AOlbjHP7>e@JIDX5S}j};SdA1k%A zj};ehpG7>sP=Nz>17U?SwxxSlb9c77!r z*+NU}*xHb9KQsr(rj5&3mo4?5tqDYfrrcl@EzEqVp>eL!$PU3CTwHJ=zh` zN!o$CwU&6`^IH4z<2g&}mTD-upT-LezO11b;;Z7%Wf-ap{8#F0D^ASIvw&GZFBOWK z48@nc3rN*|;0cHN3d~TtuR2lGN^+LT4SL|tzAyiC&JzRUx?ui7k$qtDkecYJ{3tJ% z`T~0+S`Txt-0OHyAis%#m{0X3uB*`omw*!#ZKm*nb!%;GrH@L7vv);+T+)lDpwiTA9>ss!rB}wV_L>z@Tz){($j^Q29mxOGQMdiiV+~VXt>|r5a#5k&cw$ z7?v~`JbcHQY*?R%$0zzm6H5dG3?WJvIqwoXK=0$uPn44}QDs>-%kruBarFmqh|@EN zFFH}sPxN^k)1o=9<9+Wr&fpI5il_3(q1YR{7BbQP9Vw=_IZYPCBMpH#eX52E_T1K- zRt|ZerXN29c@a~Mp=5nMwu+czxiG*TE|wm&&vL&&P4}hyP6n9CF^qw4L@*TUf6UU@ zbDKRQcM`r#xbrsAe;iD+&J8+mv(61jGmD|dX;Fl9B73#7FX`d8%&Em{fD>5{E#9LW z_CsakhJ$H`pz=Yw;i6Evl~MQ=fy>U1A8D=ph4kyUBJ_+^iI-z|N1mj(KPzq z>W)UkOJ*YA?cfod!vf;Hh^6C5p84K1g8;5}&R+!#4Z6pi)i9<6=>MKixsT>X?k zj%;;gJ5|?_GD5Z|H`(Uq@N)M4Vjo7{yv5wU-m+&~IQKW(k~Uu3;ND?Uw5E~W^q%lp zKeI{v*fu}vL0sQ3y7GM>{wDPF3X7`Vz$LADK^y2cKg9Rmdr2Y#=^+9aD;Z(+4KlDK z-hy4asGV#8$cCUn#Fbtrk2Fw1*@nu!idG!pxp*bDA^sin{8=x z0JBDT-UTs>eOqb_Z@K2HF_M!-O;~6t3GEd0-C~~zEw5_ULSjL$fOWaA7D%G_s9;dt zp!()r><3in0$>?bSfK9V`YqZwJj*70A~{(dXK*r!ZDER$sKePSiSnwUc{MCj001c# zRQ>Z@A(&Gqdn`^8unTdWFe7TJ z@j;4eqQ&NWPOW?h+I~f6w*%uj(ft7JGZ^#X_~%2aO8SPW(slVVlL}j&2Gu*ypk;!o zqC2Ed9GrAwjiVu2LeZ&9%2mx2+*CO1`va0BmB_&^1#gJXD9a`k>%b4iUnP=Mlco66 z`y5@!Ef)c!`}6G7Fz3vO-bu=48POPj&GL@4Rmmu57S1!Idz*%T(Q# z9vBn4&TVcR_$vBO`2GZZuWn`LX91LV)-{Hz>E|*B?uYwh<^@$%Xk`vl9Xa$@;2y1*)t(5U0GwbaoT6?N&+9nI-&X*dg!+n)HlVvH? zN9wGxVx`8^c9x}3AF12rgr3RrYEn? z+wwyqwAnNqk;F%dU?qhHP7V8$1r!b3AW;&K)qEBOjkd2rf|f&eR+O@afVUnszl}{V zOR!z4N@e5g7aD_=g~VY=d!;NAA#eFgE6c1aM}BEaX^$&>njW`v!aYLI4Aq_VeUYB| z<}FIiBdmcfxsW!xl|P4)3eh^>$FDUHo%kK=su#sH8*O#L(n%i*i6UPtJ$qhP`eTyE zT6CAujB!spkI&BI%<^g^s%%+QYR(miGS$Sb5GaAFWK)$VLmMtP@U690aYzK;4Aq4! zzR>?!3rj8NtL_3mQq^3RcQfAry4*R0K!xKx^m$!w5JhtXc|>qW;k00~M3brzocBp; zqV-p_+r2Gm@%$z}LF{ZH3tuGPBc!M4`Q!NmO@Cdp7kw8pt2C~UPNQ*Uua(1x>MG!` zU7ueuHAs?o#gkYyuoA0d1(Ed8d{%|J3JA`HvINhu0vk^NmFF=I5@uca{VK3?SD86{ zlS+7Zrv zuq%0rMu_y^G1u?vKW8>a_hq}hseM0$4{>sK>-; zPyVo&G;rY>>e{%stNi|f0is58y$vZ=HqPTJvQ6U=#f7&qVvZ$6W9*1mRQ~j2|J?Y{ z)CdLD`xMxGTpN{@ z%6iU(1(MNm-VXW(hlX&8i~^rVKp?`%N@2V?|9;(JT5MnMMDC|(sedcBUq-Xy?AY=G z4hr`7+7~Zg;FUBm&MbJIL-M_8_DJsv_z?Sc$IgRH3J};kv zp(162cbU{Iy%vN;Waxe#KufIL;=m;i=*5B+`len?@qufp9tEN#uxa_ScEM6$&WAm$%qoxhgs&HcPA2}J%4QSF-E%&$;^`8rLtprF#Z z#Hh7$M*)vqT=Xc$2NX$+(<+~bcRcu0`gZP6HnGwXmrVy|z+2Tjy(itOPcxy_?ag^q z^@YPb1HOVhvyj-PTO+alQ|Xe!T4zivnU){!`inM>OHJP5kGr_@=$%?glFgG~%MU;Q z7j3!W4Z8w40m;R+V0Tffjlre;)LkT>vW6Yzx}g+Gj%PpKwkCXTS0FcJ=Xim40zxUr ze90Guwa;a7KS(l)K4QuXm`kKNC}6Gp!`x2uotv1kj|!8KSx#6_2$2xA9xilxn!U#U zgnSG{^bTPVLJ1JaA-6?{)))TF?!cZsR-S}! zS^eo9<5jCcVqZBzvyF}@ac}Zq1>Q|eK~dw5qL4-%|Esp_@S)PchO)OrbYai+h`<3b(=T*Qfa`u*{;WPIi&n)x%tUxJuJZFKGSo_MfGf6GWP^-i8SRKT*1LW+f+39 zvnx>0lTg3SJr{*Z8a>zjb8nAV&TNR>?*6$%3R9mcw_%}fkBY5m27-QIgGs@*r z*i?$p^5UMrOj zy@BAC?f!DBU-bJu-tGSVTq~;(!Q$V>ZRzUdWy@9ewTl}{xTH}926=RRa zG=#k*-;dUAP|3;C2Ng^mPR@_D^MAYc5@G6(>Q6^@pP+{x(US2tQUH$m_orw>3o1OiYaW`se!3#V3X3xJ~a&t{{}j;o%js zGWH(FVgfI8;kWXP=(IC{jyin9zCcb8*gf`KWHLL+yeV04Hu6V~5B5%;I5$0Vd|K(h zSOGuuSUqbGgN1#8b!`Weal{Qz^jLf(`HmU+{nMkp{k^AW2B)nD)OxECo1(pCxzPgN zY2=U33=9t{eclmYPJH;s`vL{4Ba^!RdE@8a3W5460>0cR^cUpm_S%C@PyV^L(@To3 zia=g0#rEXey+;AA56{;zG5vPvK)L1&7!MB z`2Y<{6M4q9KC0qfUAtL|T! zKQhj1=`+39G{AzP{?3$G3+eX@sw(cOMdlkVlGdJ)r+iix_!_#Jggxx6#dRo@1mmJ|MURbX3Ek8q6?a$|KMGa)BGeBs+|#o>Eu0-oIGS5Z=#O&M#+ zl81RlmDvklI9welbeCD=JzH&|`(}0Emh9^@;H1Qo69P4X4Ur57Y66)na&Xx(GC4Uo z5I*>=wtOkkz&)4EcD~h=JYvm|`ZoEF&X$V_-blC18ZGNY432aN{b3jLPc?zUypcp< z3s<2rmX?pXyUE`1!Q&iB{-4!&vhn7G^Y#aBu8fxTUyia?r2WpauI|0AEEdd7ueIf; zz%as#R-xf%_Vbb`C;U(Q1KamRi+EYkMym6J6kS`DrrJPZajYueNY5WS zg$KZ6*m6{Qe|oG_h4r{v;XSf3{Gr;w+KpAU0x_-i;kES}q}RT@Z=);{Uq%qn25*k8 zwy)L(N-}GCrNSuHG9a(fsNR+5YA|<3uKSjQ@pIWlKl3J*uwlA3#x$b$%s*; zU&)A!2XF5xEAq=3w`U7TB%0?|h@v9fKbssAEoBKjwKmd&FV+RNZ;UowFgnU2m~6bt zyHp%WU0fg7Rcj;uFPk`Q^R16g2W!{nW98)dXzwY^<0$na7 zbG;bBQ2JlSk+R9M#;_Fq)3w%qt#@*ye|$pe-*cuKk|BI|L%t$r0_^-&wE_;TkXbZn&#+mb<NG4@?w>FgG`5n z>^h)~q>-k;%{NAgJ(d+G3RPy5DE&_Pwh6Zhe4#0@&RuI^|4CCID~A1tS?tRNyV)Gb zk3sXZZ}-*+w5mDak3rjkRtj_$s5IbL6WedFrpDmMiHg$n#cawxVoj5>ZbV1)5%+Z? z`o05!8~cyMR))XL$v<{#Vq&0ocmm#>%ej*SqQ_)}ylO9!|2OiA-3faZhj|RPx97ym zzsz^Jy&BtfzxP0(Av-dzuM%12h-A+CPEva=mrta_@L29W$Mu6=c1yAhbj{oIW_-uY zHaNDY{4zKFRV>6^KQ@(}{Viz)>_cy7dVDX@+zQMp)GwmdJD(+o#+KKNAScTb=483E z-^|KV4}|1+IRfhHhn9`{J2+OMTNnI08IULCLMpKXJPC?~O%hm88UZwj~)4 zY5ACbni@H)^bcx6T%@2;X!Evk{72H!@I8kExjE4&I6XG>_H$4NZ~p8`tWoEMX=>Sg$#$@0!=B6eAI zsS4K~4dlnlLQax=vqu9r+$bUvU2sGcu>trbzNKclZk(fm>3eSXuq8Bz=F@R&Y#A<;5ooB$>ka((jBxC~(9Gv7nL4zTHD* z&-5O{Y#0LG9UezrS;M8S@9t#&BSXC>{6uFUH`ahm;u8HzXP_|I-g*lEw1tzp0(miF znWimbfA)A=4(}VKU_esvNA!FQk&Yo;575Yu=#GL}Dg^WSuE2U>1A>xaOH%$EHlliu zq5c?TpQPWAK|)N5rsPnS^=l0A~G(fM0nS zYf}6MaWiZ0j0TMDp&P{G0lHH<5pd&sqS!u`$!)`q2e^U;B8L+w5{~F&p>d!>%r;Ss zbz@*D>zwBSIzb*UXS+!^V4~QxCe9#Zb}S@?i%iEvL4o)U+< zxZh=+f-wwv5D)ndk`vsn{+YpHk;KdqaGb~h;z50QXt`aUq*mGzFfUIDdFJkU9$;lO zSNqZEyXM=I)?>G^mE%GiFkElK(s2g6O|x4VPRqmahYFuo^NM@~w|LEN?dFefbUB*Q z&7}4;1>b7pQ{R7*{fZLFCrHQ||!)J)sD z_O9d=LHKZ%TdlU`9abI#`hXUg>)J{T9!jSdVV>w!6k1N+FZbxbZ@-yDNoh``sFZ` z5eT2+#>XSyc%_lM^(0KzGOu7Dgqw^_pb7#1nDa7J;buRUE%dQH;l^>T{eg`sD%LaR zht8aRkA!6_wA2OFYZ$4(;RQ=bqcR-+S1;1mx7X;|qixc2l8;HPt8~Iy!m0fp3p^q$p5UbzDiCEm;zs_v$AfLJw zxM+kLu=IIBQCsoLjaf#S+o%|Agu^ESltoCzfD=Q7`L!_*WKddUYDJu>T@Yu?0BD1w zk;a#lCwv)=WN(5WRq&qBrVfse;|32g`p`xd*r>V$cJ1RgVgit>M=}D!>Kw%A7xqbP zbcwRtP+p+`*Xx!urPK3p2?AQi?Y@F*<72qu2TmA-J{U(I$hesuU&=Ko_Q!LjsPUz! z9TLmWF?E9NkB9Qa|KNc~e9`dvS{C#U_Qwmo1DM&Odv0X*=@cZO5?JGG_e%1;RDy-s zrEO-HA6s0i6~ZzLY3Uj~hVH&$oExpvvb)tAZ-fuq32+4c+*q55CL;At%B+*hOMQU^ zbiqXRc@EdUA5fq7CA~V2TcG~2Kb{M|Ud-@B0?SD5Mxq*+$uC$rTWKc=Alpp;cFDe@gri(4M-LhusGPSk+t z)#E{`+_MtKm@)onaES(1X+YVltl`c@X)tW@Zxx#k9M6abpJ0a?;pYK?FW{!G*iO8Q z$Dn+Xig?yA&)TrgcCij@T5YhiXz;km2l5`S(s0B|vIDaJxr*T(l{^bn+2@fAW*7Ej z@TqYbOUxuvP!OIDaHI@>;VnX(T1C-@++rJICAJX`*&l!a@O+ z+tua%0~om3H4-aEQ^VQjB;?xYK~oj^LN?F7_x(%T87D|k$P!uQK0q<}setM9RQK@+jY zMhn870CZ*xrJl}gQtH9qm!t6)c;r5Y|8tD!>sKd|VFBaDj2LLU1sSr8aIB_HonVwB zU&>TyW}U1j6h2|zv&hNP<=1UxL!Pa81_%dT{Ts6%GbxNk(@GBr?XH?00thW4s?DdQ zx7V?n9`Axwl$E`d*4hEQ4FJjc)R+pvIc`&-EXNDY*$7@b9P15=Yf)45EswtB7{I^q?gSeJKvrlDFqaT}F|- z^`EtIvRE$0PNVh1sIS6Zzes-reHc1)l`-0vDzZ|VY!y+F?s(7Qv1M50A7kxmNJquK zP4pXtKI1d-M6&^^j`7kzl8rCWY)Cg~Ho*1{G*#P=E~dG}I?Fn-zJf+)A<_6V^cHA{ zVr+$Be@QZ64_Z)=1qEB6ol+m+*5Abpfl4DA59FOkAOCo@q}}WArK;mFamJ)00kuBq z_?rM&jspB1mM+!dp=vyU#{m{t+WBvTeQF@%84ycY4dqDFj0RIRBFJ7emjNf)j81hV zph6X40ogf}(LWzhTqy6OTj7iebmc;rV!B}a%l5>PIa~M}4;Ml2%dN*Wk3xmKKN?6b z`7(Bm_$1?Dc$3c%p)d`s%V!9r?!k3o1=8)0MLPQtH!^4S^Q?A$K?-hA2?Q+D19;g{ zV4D`DO0#Ciaa5shey+q0>|F86)(fOT!&4LOu+$yIw)tr_-6)d z=phD-oHDKE?GFzYW^du(TRC$m(73hTl!r^*%)B^gq4D&yS_QhRwXnKmEeaJ2<)bSQ zm&n>udoXib3!%;%OEb5%P@aXtZd;Fb;E_!gYHK0Z|Bp#>hcpWWjC4F74h3CYiQ|s& znRu?+T}9^&`4R9_VK@fru2^FNh_4$kNW<~8vgv_`xDu-#_)7xTBl>1Ro7d}AHbn5C z>?(+gX-nT}q)rJnS0gJ{J+C!Ax@kQxwW)7vZj-|8K(m00Nb!Sze_v9DX4%&@YuSv5 z*=^9U0Tj#ixZ8tyXKzptso1gv$Sd!FN-5&V`Ng=KoFXFDO5djJs`i8AOnqlk9a_4v z2lRMLPt=oQ$2E8uZW*?kI&qTE-&;G7ZSrvNgyW3&DfbyU(hR|CeNZqx+3-cgb0KIS%h5j1i{WZk< zYd`O=A#;CC)SD_iWUhS&aywEyo&0^&{ueHZ8%M)(gI|{;f|@dNU9Lh$^gtKdSVY{A zLyal^eTj5G%IAYCSXUPt3IHvPMapSM0zt+3+r+rIr$oHc0whKLAt}xa=ZZ(TbH%@} zx>=-ye{2b3$ys4$i_`#0TQ=XIbf9e{Nc(9)PGr51zxc80^t$s-DRLR~$jj!*%>V%K ziU3V`H@?;}HN+Q@UM_Dj#se>X9mqDPA6(Ln(VWx|*JB_LD~J{5(R`@hSC@(5+zieA z@NoVjjoM~z36QDn%yBGFL|q4H*b0`Dba9vrII z=fNRd5@E5yJh0k3laQ9sZC{0XT7X;BY#>J5;1d|A2`VBjbltRB33uh;k@Qr~AI^_-HLrDR*= zwbe7t>=9E>MXr9xSGtj=3ci zK_NQjbtGVXM(8$2w}5beeXr%?QE+^?6PDOVK{&HH8Y8{G{)=up_MTGg%Mn5*5SF+xK@-dQt^zzl@LRJJZ zpc5yL|8m4`nO+%rf;o^2>^>bQQlxk?96i>a=K%?XCk+ff@y0~ruG;f?^0|Q(>yf2{LGv!&Wz44Ss)=H;6 z(eZ<*Ls7N86IJ+)c3|35A{E{B`DssuBo%4T&Uk)<;N7#H6bhc3^UOsR;RT77LmkJo zpN2f&2Jq;-XB&RLGw=B#kNeUflqJWGc^pW1 z=UV(cebV!vJZ@&RV~uu?>L~{BUDfkb4t!*+W1UkS z&3C1L*z+vK{_P{4YQ%2)sK*nf7CA^Di?aUT{HXs&`5M`(|2Ne(vUjTgmyM57l>L9| z``9(oBNp_%}X~@7jN*=V^?!y9%!ITw_J_+0S_j`AGcs zM>;lXTdwgy5Im5kUG}|PC1VIy1;;|cC`>Fy=Z06o8pESRy?vQhek^N+);nF0>OADg zg=gLrfZbU;;~_@i-+8#Kc2Gb^y=A&!*^(ZDz?R3Wy>(?ln)c#!L7t_qkODq!+e|@* zWv?DHK2wlwsp2td+RZZs1(tn!OzBkxYb?D+V79<#Ia#13T@7ltUR{u^J%?y4z3n=} z3$q3JIqlv&Ip+%3SE_zr>%8yWomc*J!9s=dOmhnBwC=frOiT4@LGHh=E=bb8L6Av3 zgYl~imTIpOWF(Shy0$e`kg9G&rC42|V&@-wp}DsWgh-dd1%xwQ zpr^t|E61r`t>fS$4B5w{CJR85QsF~T9w`uX;u*du51;eC812!<6$#soKep-sRd50`+GgIcEhXN8^eXV z=VZYO>KP+CL5org)`Qf_bjs$oi%6l*fV(dPnT7K1zbLwTwL|;&*S7az+FLQ^Ba98} z)sM`qj5fDW2;|u*5eS-(OZ+IUM;s5axzLFF3l_$nu7+ltb|AF76U?>=_w z6N~1V9S73Q|I19=Sx=L%mWs%~(lksuFM`c_5R-g8f_0n2lXR_06Jj;%tmiXhH7Z9R z`!}OT^wGGP1vmsBA}X+%wehH(^?E9NOs*#6Is*qEVMrrS-ck>mgo6)3xw)RxiQk6O zQ65(GqxR!WSK1J|^mtd3@)dM{4*E5hx}VrP_+#k;YX}}r|1u3TN^~MrYcIuOd*)rn z)?%DN5*2_=;%+cwZ-N=y9e^PW&W&j}BiCf&j11|acGb1GOeRGk680+c%V4$!U>yzK zb^s>M09v1V>Iuk$^^o@HwVs^%pW%RNME@r)1R^1@r~_&6vSB|O^9?$Ko zrA+=G@MkCzXU}d#aUI%t4@_rvf8Mh!!jGxLs7hy`&b}E{`Sv?t+fo1ZBPHfXhvYcO(PxBcS%LdT zi2a1Pp^YC9o>-m-dw=I!%c#)}yeFQ7cZ2uoL_`Tm5CK^eu+*Q#|0`(!8rENz|F5(# zS*Q-r8g(e)=W6*wkW;pZO0@7w{5JV!(K4(8qo}1AY0g2gCklUGR2<|rGn(^ykD?0D zIn*b(&8Y5!mTa-;p)>IhC&V=tWPlSQhFS|hZ~eydx0}%mrFpBARp-v0-HuKuD?{_N z@N-8i3F101l&`ehT8a;W3T-!e#B%FTDMiB$YQFQys<|_4AGQGa=u$K643b013Kv#0 zHuxXN{OdAgi@If1*lywl=+ire1Pp{E?zT;{tv81+<5+6hx1j6-fffd2bQ%7#iQ7~m zBjwe7FR`_l`MVEV@4y)Q9wefKlldOWZ~Waj(VT_w#VWnSO%wej+nNqR*`b>bIP=k2 zHI@2WPaG7R#;~pLo=N_L3~AjP*ct%CS{7IXS^<(Ffp~qlvR*ajN}=;xtT%^X4>KsI z;<%c_&$v%4%eMh?l&g=-goKb(kNcYwk`_ch#BL=iXD>89&^nn%#a7-<>$F$e|K64yZY3v>3?%C92rB9s(7>Wsi$UffZ-=<%CP9FHCT;3=^!4MJN2oCL;gHfs$PQ=k*u*$q z6Xn`kCb`I;GAGegv$shTrO%_SRy0CDMQxQ!FCUypfMAciW@v|t6r))_Vuj_y``QKo+8mNXNcBWEypUk1%C}2lHxFD0uBKxs8eRpgQk@lo9K264QtFArwe_VV zNB>#m_&3MGMh!;uByeGhd|4oT5gI7Z$~Gv*0v zY>t$5tTcA5lr`>%-6UllFO4n16T4-xy#ztW2t-b-YO^2)L8g%4pe<)NDYr@Tcctsn zVduYzXx_hkkakMjK{| zp;Hsv!5ka%yPEb?c6BtBw^ugT?PT^rDQmbC&%gIOd%&fl=cl#&(?wa?-CZHj8{V`t z;bstY02=wznWKy=J%p=48HC5IhAfsQe#cL^;SMq5njPw&+d+}JoidBkyfX$Mg z2|cL*C?qkakQV%C(FzBYL&ign_OWq@S)5a-SsR`go`xbNoW!mfcW4gFj@8Q(vj+R9Z<#Zj%;ci?SqmjWC-Lq1jq zlgG;Go_>Z2csdGR&cd26R3dwS)B=c!MW#dOsD23jIjTv1bFprZgko=ra%|Yh`$oIs zs-mUV$^@J?lRjItLR+@3IBs)Oyf~OvCb+ZO_*pcCRVILE4(O*;1fsI)qQ#LF0c+N7 z?aix->MdpUTG?lcQnl8ri}EckP7wgj7%kRUTnNZr&mu+&N4;^b#HQtaw#Wruu*J#B z>d|aQGQ`Q+@y`~mEHmQdo1-*5hi00w@X3{zLi&T9i5_d-irCj_FJ4o$!P3(!=)QDKQ7#^L@9Aa8DM>4uw*>VV6Q9p0!Zn6IBo2o(^{S$D>s-8f926MiU@kr~4(8%b z;{bukI6%Of)n2B(byZQFB~)h`2-O!21VAtlKBYb4EB>m*h&B&~Y9|X(o0#IlgF(do z{~io67NgJjSeP}B1>O(~#sam0F&20m7-NCAfiV_%8!Q|PBMZmENH0T97z-}xKCMVA zYPSquVn_@V7OHQQW6_YH!hGP6PzNs_5>;mTdmZ?I*6ud@e}E5o+FiX(d?U)#w?C0D-ZL#*~8Bdlv7jGKBRVEJRwU|TL%nwK@ zDDYdr$-pmv@TC@Vv~i0aKPIlR=U^2o+TML6!2`VOvA+Ki6^0jM*vCf0%{BMt3mBm12k;A81id?%_4cya_l-h*n8MH zNbiC>gW9LvzIVfh$zH_O3=*g7+@`64p&5MHC-jEiT6;wr8PfPMu7B9-nRi5$8 zG~VQ{8XOoH?A2yGP(v8d?(z6GS-d#ddVEbHxL%ca!O01=u+`okg}lpR+;V#q7!OhA za=HeL1l+cR@a%yK&>#FK{}TR$P!IIhXQJlupht|rWm0H4+SPV%l-;!u8b-0wOT=fE zAgtI1qwHSoJ+H47rD|O5TT|n5RF4K>?a+r8`lg^!I|6Ou)y!=aWOo9Z)&Z@cVc4`d z+XhFbhlyilaLJ&Tn`3A{T z4uSYfD5R06ICp@VIi5tfO>I!-7>$Oa3SFgHKUxq`nIg;QJ=rtNu+~Zv*8xwAR<7RtD_j*$(C~85=;e3I~o#Qcn%1 z+H3Oz5`I#rCEW6O7|&?iR;Sx`8IIv%0w2VTdqpN!xdcgJ@8j(n1Cu{WEze^uP#xt} zo#joH)m505P{FaiBFpD_jH9u9cWZf5RWl;Sc!Yg)!F^w-j#ef8Un7ZRjeiYTW(Gp- z_77os>3IpN{$Qoy>(01nJrt!BTjX+fc{)3!M)AIU$in;bkO=)Q1_w`|bif<0mDfKsS$~}Y&2Qs=IjTNvTav0C@r6|Hu<=?W; z6CSM?XVI$s%W^h~?3)@lm?6+>PK zQ}lvK7aSxy(Ax;cT}yFzmuoH8QQw7ksDY4!oCfJ9)~aId;5Xq3h*g^QC8mO{>PVe* zo&mM3>)|LFqXU=sYn>-o!5L$(eGRml=rH$WG|-eg$OGy`9o)Aak6Qy(@yXuUO6H24 zWo`~9y|#{2-f7UmM`1fsskd&*+U2lyOR?X|z~?wj7Q z-Kvyli#;HbBgFp&pAr6r3-Z51sD|p2 zmhtg8qjKUKP7PoMBML9-iDNpo5LL}M3rG0dz%u{s8(;~X8j{YVz55FpE5wXL+s*Zw z98+VR`(wnXqjt32k>cQ;@V*6UmEWS<_omV=2x9^01ye|SR@s`dZ*M9d3k|NtA#A1d zo(mUTD_I#1xm3WtyrD^PSbUK#t@z@K!{YNnOa2D?q*IZ%NvEkuX*s4+>`dL7mh+^A z&GcsVWho^X)ib?D4du<2h-?Cg%a<&*AA$e0{wb%H|8;4FHvZw>WhxD$tJr8#)`VBt z1UcR)Z5Be&(SC3#f>hAaBpMO-)7!6KBJK|V>V6W2|5=78R-lkxuz`#w7)>IFL#Uq- z%V9hN5B3Cz0K_|0oZ?O_dwrn}`yiIRcYn*+az5xQjb(2*O}UpIRL1li7OqD1RZkD` zRSy{Ysy7VLd%g`}ebozx7p{89pD%l$&e7qvA4?YNAc>-}GNKOT)wCNG>wW_*j%l7!oLRXl1|HzFv!2U6Qs0fT{wL zj%eM1ZMk4oN*cGe7FUDfuI^^#KS1i*bn&>#(oD!!cXhMS7SixLjjM%jFt19Qg<)$R zVAr2SjCSt^UrKaqvDDVB{d$AXnIGEXs0&W?LEHwmTqsk*77ow(QpDHR@i?J!FZ*4|X<9V!k77RIRgCqUUMzUIl%P+LcNmdqc>SRRkP+`zOYnoZAgIOgeJTA>?R> zwj-(3uD!X@7po!<6I0v>S5ea=G>CM<(T--wh45@36^=}*;lGL^Y3(@>i(;5WHmvh@ zDawfzjUAwm0(|U6eS1Q?>~(1Wq8Fil5147NuVhw`S)#4~H9QlbEqk=*U-V>aqrdj7 zQ_Ib#zIM==%^h_=g7hkM%3i@Qyldw2!_X8O%Xp@6G8qoVSF_^~|K;MOWuL(sF`G+U z5cnuZ^&B|n5jxlh=Y4`2Y9{V=5&CVAv{{V!NY=En{!T0r^Zl#>b zWf$>HEiy&nWK$lXMNPx+0$y(q2p{MkP52$?ec!DQXAj-zvujBLIobcC=UwI|F-rVf=ozRpo$6Kgq zSx8dDEjtyGCV3l}Dt{21lTX{^Gaj&vARKjen?iMYHzxGLlBZZN`X)h?>e zxSKBTW3oS>I_;6_;0=gybtXd6(Z$sX61jGT*46}61&=8qPd7C*H9Bu;QyagrRPCYq zhmOffNTDIc6jD$gwBR&EDbW%dG1iAGWH}GZ|Hu{>OpQr1IJSo6N^+F}LlFTx$Z{=s zz+K0q7W0rFg3LFTA`c|iv*vdygVdp$XuUtlUm{S{!}GmV`nfpRq_LM=qA%nu=3PqH zT;x#``*`zs|ERNSck}3Q2$~Xn5OZ>ekn~_^!o3M;KkP;ufH2g#xA=~lAMHGf$2nU` zmwO9YIUeDQ2Oj4<7(z(ZgBIg;PJMa|Q9)_wjw6fy+oc2c73lOAp8+#~yx@b>ud9Mi zB`Vt_u~knca^6hes`U`xs(~>?o4F17G=o>o9AYyIO_T zjTpJ0qKxsFlwVBulX$h*G?nVC{8{4HVh(R1@e&$|K?|2r_mFrg(pfzRhtZV15GgG~ z+}miyts8)o$Xql??JZV35ev78K{!Q_f6gw0T9H>_ z8NW+BeVYjI&7}zIabE4VoxTlf72NlaK#Eh9oA)I}&X8~>$%PJstrrrWS-ih8giV*( zN3#J|X9>f~rr6$> zK^R@djlguDd+I{U@T=lJXU)^#PtS(H_1!s;Zadd~TfFdR^jzw+sh{g`z zNFn4XGq8{(X%cf6j>H={RD2ST3=hN21_VM2qP*Ih9lp9vE=Nm{ycfC)dm#bRyNl9| zje4e>BF?oS&Z`Y|`ZjELIcf$cCV?V+h`0);V|jX~1an6aXeSRNMyz{btXF%w(^t5| z$ffP@*eptS1baLRU=ZL?_d+NJcLn5RW9S*L*09T0OpS6Z(v5l8YP{ODyL?4SWRwJI zR%tR_Z>tw~`C3(%V}rA1q8}o)@nA2wAXnjl$d<+$ik)wYMWZZ?+-QoN#1VK=^rnT; zQH!ECBf2<}bDnike8Ixx(F>xz+Mjm&YEb;@QBtOM5|>FLK3>IrTv!NE?I2hfICOC@ zfNwP5ROAIQn@ll~!EE*SNr-t-~Kd^Y*`c`2)(-Bm!%!JXGd-n zgOpZ2=yPdZ2Yd-lF1Y;WufFn0bW)6SeZ16<_6^Pq_Dy5Cbr&v-svREd0T{!?4EJik z-S2Ay{ofq)t-cif;~z|aVN`^^8Sd5o^MJ2Glz+pbqK7`1^unkJX*1lbefXfSLlk{; z&%#!j{b14yqaviua15TRv9SppeKEWP{UIDr&|OEnd@bsc?i&hshpDe*7cN`?|2yS3 zL-PnUmUeaFcz7}wo(z8~@}HBgM+yuu3&Z&vZ$*uz(c3mKDvQ0E9qC4p<~~WIk@q@c zkDRi#8-t^vi&0IO;Kwo@ zz$4v0d$J&atv*}??SHy`nI?ER!?i(Q=JE)BI73Z(V27fO2YpsG5^Lnbt8Ua-uLh1c z;oL-pFM(iW>u4Lp!SWIa;ryw>BEI)(v1+U&7BNp00Y;wPSAE*leUvqNC6Ub#Jkpn8 zctbMzF=#`#(#wi%NY9^GY(oMXI-NbZ2!h)2CwhE#vcN{SJ4y;R;6GRfG$bo_#QmVh zmyrg^iPh~W$=|Sn{trjuqT=k1^Z_>BrjHuSC2%TmZ!^TV-Nk4oLM?C#dJ)dT%(RhS zUz*BGiEK8M=&A8IZFt;YZ9kMi<-P&qO3VQmp+!c!9-C-tsW2#lb;%YslB~pvcB!V; z8LF&4Up}V(xdC6QcBId@hPI+PI1n2oKf|=l^%eHuK#H+NDk~$Z*!SB{(@b3pvpw!*1=>lzv|a3PKaNE~qy%3NjJiF~XBI z5*=6+%|~t|dgG#K8n=VdVne%v?`%j8~f; z@a+`<`^u-)j|@9Rao+BrwVdX zv~L{pwXUOmTCfA?SC>%wNG$9Qk5W@CddGd(7bFJlcq9p?FCwlx>?@>*&Tw<+TmJ73 z`}U_GqE+ysCT8IMBfbhs(jQ*c^(1YBK0igwhpVPX+&bv%-h+rhcrbv=hq@vP;An+A z!$CO21GD68>+c;K#ei~@kB?7`%@Met-cJ~tb&k+7KPlp!17j10njqK=?UACY71|qv zzN}Q_(Jcl$FRzh_=04)vPbF(uT+7cL@$ICu$#jGZ37<`N4*AwgF72`*-^zqT;du0x zcGHm0o^J+u!MaZjPC6?OlUI5db5vp^_VyDG1nC(0Ndf1top^S~D!jl97E7$UQd>nE#_X1V?-snt#L>n{W}_dod_OyLH63^iuF=U)T|g)0Op7 zCh{JFzAwbD67fTrixpTA|L`s`EP>Dd6GEU~xFRZ`9X8 zo!l87#(5jX(8o~TI3^-bMwYusf1;WlZzv?qhgj# zFOK;0QQtaBF|jz0yb0fSir8zaB4@RaPxy9F#PLN{)Xq(aL+(U)aOtJ;PWsx3IUf-b z;mI$0;j@#zBAPUvk(OBb7jQ(>0_P`vTQU&Wd{LZ8yJ^bTz=Z)9#e22SP5BxruI>_X z?@akB>cknEG&L}sJ9AAlg3d9t`ymFKjyVdGOONAgjOeG+)4m335x=QLxUAy*v~M@9 zdfkf_3aGKXz9U6Dh5psP^ZJgZDk=-K$wduESvlK=ar)t#Dy;;h-AX4GtOm4f^#`HU z69g754dAfHNOguQiuR24g`DH?W(%DkXK!%S+0*YF9G%35P8T6i`lO>a@@%FB*={rQQ?Awfm`uYG!?*$dP-X3n=o4X-Sb8 zX3{KeYfEW{46QG|%9@TL)U*TAa9j-G_I6)r;qC2!g)8Is#p^<~DRm6~O6A+w<(FSR zPfpqTl5n>((SMjf0imR&Faz4w&t0364{8In2?CKCxZwr`GkEjV;V>Ag_Z#zWfeGYB z?B+j(d=$Ys9{f0Sz~QX~oMt%=?wASXt`NRvk>uu7vJ0zi)TB;8qO?Fbtx`Sxt>|6Ma!pwmmA* zOOfI5IUXd{f?YBfU;jP9iy8>z-&i17Jyk|s*a=CcRVzPUvPz{mbl-OjETR~#go8ve zn#^u?$>D--3aqYL71ibc*(zn@?;*t{CGCGwNTO(2SVpKP>SZL6`9+0fW#V%GNL`k{ zOzE#!mZv>iSZ6H zjsuVuPg!7oF@WdVoKxCIPn4u+M^BXG74wOtIP!pK`-Dx7vt8Vg;3!7Mr>DqWaGE_=*jPh zPqJ^j31a~YE`I7wvUWonMY)?C3WoFytkUz#75Q#ljUYX=xO#FCg}W)Q@D;LNztcII z8!0pC_wUyA`#+A--kHYr`*($6uaDBkf0>zu2}yYk#n0SzHBa^+S4-szcK& zrzeI(%$-%4E!6#|Qr%ghRruDD&XuHUw?A0ov-mCAkMG;oA^EkfXG;e0v+P_+n)ZXU zC7ba5=GhX5099uBE$$rlZs=!EvgV&N_K`|l2}b@QTRr6`&y}n}lDp0sDbqBleQyRR z_o0&Pw2PGcokF=^JNQtETY`RB~A`KIfyhmGBqNRt{<{Pn9SFyg!)-TU(^JQ|3=De>s0?bhjzv9^Lr}{~3#n6<h~Hiu-G~ufZ`RQmxmYE{WInJhW}4$nFn$PkwOXmwr`}6|QOKQzdJu zJ?ft_+GB^d{yNxl-1JmQv6T<8KRi{kYK37zKtt<56znA;d9Q!EWL+9c{MO1IG?t?r z|BduO7kn^CHN5Ki61Udk-=3g-e$UufFyFeORXzW?wxua(kir=BTUf$rmF0qzp*mgemR1}^XMzdgKd z-6|OSqs!^;cV*h8tK!u@`kNBJXqWTPmf#(U-;~59R_SIodgEwW&y}pY>$*p_{Z!Ka z^jt}{KwtKJNoI-}lbhYpd@6gsWZR1O< ztoDf)N|J&5#TQCS?C-~mYLs8P8g8v@zChMKwP!oj6Gd0e^f!>r)i%$U*e`j=kppqDA5*m_r(?u zb6C&!hW2Iu5zBe~uV6cf;=v>|ewPIMO7f!Z zV;26ZOo?z0+hQ*-1fG)aJ7X;QZ%7bY_df{^jc*4`dNd2hg#6nudPPnso4s)*_hkw6 z9!SEu@1DKdb1!-FFA~~X2(!_f9`DZ zS3%*~b5KG7dD)3N`B5i4XFu-TzTMe0HrihbT?D)|Q-i2-sBIx?w12jD7@|HihC6XR z8|?;ndro&lSJvP1G*H4A;&pR^hCzr%o`bPaYAtu+8Tsj4q*CM_ z=$8)0!a8MGg70X*Vmr!U;s{S%fLZKr?U6B0inie`&yv(~7u5aecm++r-9(M+1!A>% z%afuaQtyN@zy5S>pEJmH0texYl1UdNq#o^`XTPc4ptRXDj&sH;k3BYxi&dU020%yA%o32HkdU>XStZvCLAVYLs& zg3wd=KZnm|{->@=QB>Immw|OI&M)e#1$h&|9Oc|%kAg^OSxP20ksNg*9uI@Y<3u+H zX9l3F$n6;XhjB)v>HQ(#BalpNrC5YWUmOi_Sa)7eNWX+(r5aYErL}Mn+HQnH0(N4VMS!LO?Mf<`#9=CeT%;3*s zQ0xhfOB#mZ9gWa3qhSb%1%MG%pncIzcStN)*Jk-PF36s4fm$KZGx1sw)TNf9c^?4N zxwSJD!C;+BuEeSrtjpVomjPoW3osP>rVAP9<&#UJS&T(`MSEjsZl=mZ(kplbgQDGf zGyqU89(M$N<$ZmSBTeqhKR}Bv+hs-(X$+D`vmlZ@bVt%}Fw&dQak5jL5fnWOWlSZILv3(pn(D| zwAb-XadD~aShoTnlJFf6c{J~cAFkxqc4TW0#dw#f|JvFK|0%XtxV1bsA0}b#JVI+{ zfQK$nAs4Jd^AT4S?4c!{(Cr!|$K>pz_`enZXFde4|5E1`Usq*xy7a6Cr>_3f&MtcI zu5%0doUT|3^*xtM`gyeUqRgSlw*OP$4aE7JC=F25 zv%(q!QL&B8(cDrEHxz)P0QT-BP?oZdvDjf;9FR3qgDDD*^(hM4hu|#qQ{Pl-WN&{x zsR9{xgj(RB7LT%EV~3tOgG}l2{vYLPUr>F^mUo0=3t6t6ln==sD8~8c723V3FGaK8 zw=UjNdxw^P)RU^RD$uD2jz>d6zlF6!w-611QrO3%0W(#aH6m$e zXxg5QA#wU1I6OxA64`tXS19~FR06w|LiS|<$ko5vjk#u@ky5dsVUHmp$Ey-kJ6y`= znY<51PREzA4vdU^+vme+I$X5i?{j!aV$uQCaR^M_v2$w}VmzeRGcnc}L?J}&?=bUp zDN7{zr|fOKsV=Y|#w!N-HUNK(QLV#XNaT>W*epub&I!H4t*w?wMqvpPPmu3GLFF{4 z-JwpjgbK#2GsMj?42O#IIp77v1FVb81Yl}Cf%T>prq-9Cn7>;K^9Y>QF&vudbne)& zsY{#sW%ja5p3rAL@Ps~d(Fr|S`|5q$GA)fs{FqL^C1*rMPOj1RJX?~a{rj&=HiW-qIs<-Okh%D{W}?N9 zYcJ^;(n&4JIH?g5KdEWu&zBV6^~cAyWk_*wjaJn*aM8ju4noZJ{}P z3PxY>N3d!@guOZ*gB-7^lh$<`Tt>CHI}}_*;7v!<+OQ8PTkD3BKZOme1N++hd@6R< zr2|ScK3M0QFi8t1h-+`hRY)ht_#YdzXJ-L`YxY41pzy`#+p{>Jtd#KF1#yw> zOGvc*lPGm-u8o6l!fQ{gB?J-g^`_{pY-dQ}@xO(fe%AL>$_OIKrI_aTEBspoexU~_ zhgj(DqKsT|7kc$|q)}SF49Ff%Dlr3^yK5EJ)CW+rC^;3!Dm@i#tA&jbrs>JGn5J>| zR%smaKDvMvB0svG!E07XjT+bW+1Jn~QNZg&eIST~!MlUGcD1#Rp4{Lm>183huVG3j z@G!yo^BffF1X7-Jbb5p~Yv*im5;%gky(b2(P3WRyc+bw57H!swUTO+e$CF$7kN=Rd z3iL0|xIx-1s}u1&ND$E|A^>pjPCVKQ41lhDitq;k*YXElX=(?^G=$1BC6K9vgz_}V zn2bT(NHdzwnu4q`2nXxsTQc1A2j;!yTZm~kETmvyVsA|w2Pv#ylS7j}9|W%=889Pw z?gfu31pWEpA$u!qo%|>aY@J?48MgajNr2EITc;CD%i7>b=eAD!g{@Pz*8SA>O*Ys% zbpi0)@$CWa_fKv2L<7)QrY(DVdmerEmuclsZ!hlJgDe7}^2|SD<@CT`(Mf7HV$g&B zn@T_Pjl2iw#r0CCl_e5yz8FZ&hz)S;GQ{vhw%85-Ku5eAK^MkXIUT85g5q7e{&*49 z?G*B1EU>H{`Hsbhq`xEN#-uumNRw}yIZ-d|A7iDqbz|`gp7@=lSH;G_;o_Y*EH&8n z0H<3Ebf{8kM4i*}$4j$zBkBnT2Lb<55=q}PAF#4OUDm!bB|*ZT7^vfOR6N@ zHC~#jg8E@eK15E$jRMtysWBDk{t6=shl~6TwlOl%jI1dm#k)}d1CApxPSpFrPR2^{ z3&R(O?kmY@YKyHB?PlcXr>?xIw!D>TU9lCmT?ZU!?7q&d6F5-AJ$E`13xG-&WcwX% z_?d_Rk7mOdXTL*{zhDAR7{CW$n1K}Zl7;qz*osx^eg`>cf-fL4Fc`Hssv5f5gLn?T zuYDGmrnYQJ&c>PmEc64g&<_i-4nqr>jIa*iS#NUpbixI9Pk2vt`@(i$2hj}vP-W)R z7#5+s8NT;HMg1B!o0=z+WAoWm)=+nK;WNqfiKPO!eC^V6F{&FKFbmVI zwW#3k zv0CeUe2KkWaz4H!E~_Fc{E%E3d0}Zz^nHQiz7UtSr;MW9^wt@V>d5mwZ=ty7Epb`B zITQ({V?8!}Ayu`Jov5W}BZVg^1e+6i5V*L?MOf{~!=yfem$Jd=K4^p3r8zM{Uq0@y zz#4*g8qgli+>qvL$O+iZ!dB-G33L~$2OhSX0&klGf3gzyEC@WCxbhVo9KzxMj)IUb zK0@VJHV?S&JhZE@ECymn9`)E0+I(H5V*>@qYZxxd|7+otp*yKc+)2S?j6I6~*Wg@% zTbg^mTe-$ElX};y->tk`0>AdP+bcbmu~pi++bf%_1AV}7+)?RTI>fJVQrJMBJL||Q zZR?Ho#dm$;j>=R?tu!6dSuZ-bCRCI83l!nf>yw9$$FC;^(Z0KLT5OdFeFo>SlVo%%*Weix5Kv^i zUWm8GcIRx(_37`9(KlMkUZ0C~%T|Ls>DQBhu#T076nj$w?4U+cD22K!^TAl>A7bfS z!QyNmPob~yVn^AtY2>~)SetnhDw1=X*n3nt8Ee??AU*Pnzp|4>UPdouw4`F<*k{3i zksxfJfB9c6rsa4U;-+xc4LSd6QQ-V>0vIG118003E@2TO8PwjO5@#&VHz@F@fyEt0 z=~g$+e(H^|8Q&WWyVR%6<2by;GU+K2Pm0f%m(g)>O1EL|@1LSWA#p1Lfka=J$QY_z zfJkXfpr0+qTEOI62KuzCnp}!{Z(0wU=g=Kejk5=&-i^i49l!7(DLMys*RUzw%F04p zbED9%(GnXfie1fe|4g=!uf=YH@nh^3SUbi}v0N+fmZ73Zw+s~--GVRCb$9@Qm;wsr5^^;EzkvBhhG|d zyMh>|Q*yc#h{2>8_#RW|C}VJ*`VPo*ROiBZe1);{jno>c>M)3Q1)CB+3tCaj7`qI= z@^+B!3hJc$Kj~5Wzm%%H`VmCO zROxN%xTCGQ-B~{h4GkD)JMjRi&4|YE3#XK$BtfP@CNfcyL8d__G9N?*u?Cd}Fg!fl z2vPfy6xCc$74mna1>Km1M6W3?^}!fV*ES{)6~8YQFHp6$Q|bJX95KgVhn+j(||AP`nr0n|NW z(CB1ysQrn#GU*hC*+buE3?fO!7p{|Ov~b~XA{#AQe$B;8)5$sKHMmB?k~2#DB&|$) z{d8tGc*?`c`h^0{?l7{QMKl`iItYkG14fV)~M9_@jad=0YPAbajj0m z;WtfD9lb%gZ-rqTEsDLIv4i6b+aD$QV^CVVU!)R=kj4>&t|J`2T>||_lE{s4$0He- zh&sR-gK(G_MX9t3Kbm098w)l_NC%S^iApBXKV!@Lmb`|(x)uUnT2o-VwA>{Zqq)YG z=T*~u8Cx#V6cJxE=gt5`kE{sP8H^F2lGRhE8zNR!g4zuXyvH4Z>OD>6jnyP@KmrAK zqQ`)O$p+_oIV6mwYd0OSqQ0rBzNyy9fT5$-=5W*||4E=bAX|`MV%M`Kzj1R~n{x^g z0DxW(9(<-N*Pa!5YBgPc!aG{e3aK>+3`H*1gM6l=9*Aj>?PDpFm#s$%qw@tt#Fs_u z@$e#y*Ps8aSGvrkFLfgE0NU@^++pZ(K+FUVk281R=Kd*nH*yhoH^RBQyTIMGNb0dU z(=r)C2FK?bGP}^HFMkvM%c+CtxPPdKwo!~;ac@V5eSmNe7Xkf@K)29ElL0HmyHekT z$+`eorTcWQ4DSe}WkPI1c(`y3!;j(u?u<0!P;B3Y9DK$BDVzKjyZzgx_%6lOb}62` zMH*b$aj)y(8SFdJ&&U>q&e{tvbq>kE-e_QBKd?`(G;qypdC6r5(b$3|fN1<#&_FRcjg3S@3ub#$wjlWtBe_vqBlR_U>N*Rx zGD<2^=Z8}l0eYBHn`&(&{x3c88Ic(EUzD|q#DkHRd?ko-YVo4#DfFoE~0BQ@Oby|y5-o(WCo3g5e z^XvJ!gPAx!vX{REnxH2qF?&H4t~NQ(+{pD1X(ws4IN!7icb|=%O^&ixEoY5jM0P_C z(}4pDIG3WlZT9BnNR3a$9*PxTJH0z+GT00dPUe$rLwzpBbp~MtZ@q!HatJsVZTtxPXd@J6A&LU?(Fip#9KK2F{S7?p z3M$|<8XbcBFsOl95JV_~^Bdjz5{b&;q=c%D2B&SC5$XoB-v{L*aPTjC7a#wdmLKJEi*g z7}?C!x1@1r!x_D!N^r&8B&Y|$6@op*o;&7pT~ZJ0yd(6J-mRG^p^Bk za4RoOk0>H9F1}X=b8L+$R*xuFxa7dc(ScuWs6dMpF@OxK@04bjSW(1O6mbO=ahB#h zwcziTf(wZhuL{@`!LgM6pm0q#Z$Px)fZl!sM*D@coZkjBYY7eFn*}kp z&ocS5{0W4~Ac-?>Ulh+pZ$=9HkxZo4vXUJcF%8sOMI*3_(eUW=G#q)7bOaC8XFIAV zdxPT;s*=wC>CXczZ(PB1DA&^0Wh7@Yz#GEgVglpVn3A^-4)^iY%SE_l0vcLvy%VEE zQO6M;F=#Zyxyt49Y6gytU~E`3_H!iT!Ln!y0tF9d#=GQ4u|d?wgRhgTh$pI#$03Rk za5~KVqfOcqM1X^Pplkg>ry!n6oPzi#UN-mzsHsFwWdHw`oN=h)1oUEI&(x`(!G~fy z%jEw?E~1XK!$+!Xd(0+7uqQc&!*^VY^zM+d9^}U0tZO*^xugAHXUrKcnYK4dp$f< zg-3f+it;FXg;VUGf+bIIN?W_p8?OTHa2}cn&J0e4wu16*2!vCJOT2*c$XC(qn5NnB zOav~C*CFGR$v~v3VW0zSdxXi4@QE?aC&sTA#PVrjVB1xmezo~o1lCIP!`~QpBZ?pW zImT|qrX?op9w=XI^k%AiE-vn#Ma8Z6i{ct^X-qFJ(xSK~aHP2PewxQ9t|^um*9cQ_ zkzN%F6PL4joAPZ7xy;P=%3C3Nnulf#Ni3nl#G$7l;+(gUDp019wJ%0VvqR{KN51E6 zw8H3OPn+E$?=dAFNEeAc6!9lh#88!pxLk!m7P=RL%6(A1NL#@V`2>)ppT};6ia1SX zsBz5O_;&oe7%yKu-cI-Z4m^wiK4`0Cwt(2=BVqOC_vqa=N;nR#P_q`}# zyT92&6_@wnr`}I`bt0PUrd|CFaQZls2@t&#Zc%JETjVcV;9p7uZIs#YL`9{Jc&O46 zH+$EpdoTnhvQH*|4nyF_SL2m*tozs?PM>~^3j!yy#n?nZ8r-O)IoV@e8W@H@#o;1? z3Kov|nTVj3tvcN$$6#fvPS0~H^4I7ZkZ1QN~dM=AM786VF09&iIGq^ zNn+u_UOh=9H+oH`I$g0%n$CahXtvlmF(*;6W>l2b74;6=I(1O|?z>cA_ciJ4o;0X9Uw0atoP?7%DZzEz_s z(v3(H`_Ya{&A5kC{)$??h9gNkYDJWBSu*f*aDFpjL|VZo&A73rP=pi0yPu4YgW<$W zv~Y)^!rXBv1tBbk;5xy2z&T=sy&2(3AE!`g{Oh0=tX>7hL3+(lIDV6=g7$&Tyx6>` zyst>rA!^A)sfNRD0qhG>6^Eq*4^7kmF=~Vw;}aP{P!DqWw+qBW?xB>W2o4u9wjVIr zj$IN^F5ghBQhms_m!3z0To6Dm4Y1ybx(Ezdgz0bvXjUC;s?2_5F*~Owe+(r#dKK77 zWYG$R`D~XwiZ(i$O{24xM&~SN)xXY1A4U-kPCn}RH{^U`l=2WpscjVeC2oX??ZqU~ zjwXWH*p1A}Jx5X;s84Y*gN%hvMCBfryc2nqdq{S}W`ooxBu2g)Al^YK=(+n4;ihf@ z484NCL^{$d-JpHEa4?gU;C^-`V+ZPIks#Jv$CQZFsOugHYVJ)9}-(r{l zqp)^U27*$96GczUqUwrNUysCKDUJlf@ri|fn0Y*@0ed!vW?n639<+ob1+4HuF`Srw z{9$Jk_o2LO)CRQ<_Jgf>$PK^`yy;nd!$TC_TKGSbr1hYf zpFkC5#P53_>S5CI$FI;rQa&0pSfDfL>m}Q zK#^3dw^J~i095cMCUlebMp3TfV0t#KADJG`?oK%b*q3nKL+cMz)UzoYuoeBc(A#FS z0AN3^h8X*BwqQWoZAv;ygD@6v`zSpcfkgP95`9;(L5Dq3?-67&J=YUcZG|f64IgJL z2~z^c?bxu)&u~r*G(|oFsdq4T4cGn&6*{yZztz6xnrg32ODyw7uMa{uOPv3OvL`TR zgXCerj+`(A1sq`1EvdrsJDPWcU9OdGyMv!7Tl~-eB1-o}RBtE(SAL!xh;0 z#GKo|xY70-jkbSLqwVL7cESoD@}L7{hH$HCkCs8wfw#k=>3!?e?Q_U!YHld=ztCwO z@Ek+bGx%V?yM{P9E_ka0lc zrf|DFny=cMDvv~qN!L*A-JlX4#Gc87w{X1kK0qfRm+5iS>3EBvmiW0;tt;k7eZhNuLSk0sLCbKq0I0ACR!Tup6*Dx!C0W>5)y|&&6)$P2Qh=@g~2BKF<+Nqi^yj zvB{$d)MchUUNvoY(cf&UycI`-&jY%tYSP_C8yA(8>@{Sw>Zj2M}y9$;7o90qMw2F z$MX@j*vz5)*`?k5zJHB6zRdT&g_Pvphmu^+s<3k1L?8HKD8;!*32v;Gjl;Rx_%a$~ z_13JNQDpitzKoB*m!hB%C!+9N$23$(DM%%GM0SP0UnRk3usR%mox)hop%Ikmdsw0p zJS@d!jdLA7cn`KPDnUA8iPG0lv~b|;QWPMu@a-jJ%|-Fu(m5+EFB1!Y6>A0|gH!jU ztSfwJ0o21&y7iPQB_(P|YQO-Zq@^OM35qpgAN2YR#k;W1Aev_%uNX$);X-=)7n9X! z=ka*%SwwHFXKh~Fq$Q%!i}e{d6Bs>{bHkaxNBUci+)N|3I<24x|Y=Bobwjb z26;AZ1}Qth$(12RJXR~Qt8`#jIcetPI*eVVW6`eCkse{?kP5WIdokT;tWZC81$!VN zgj{xlzi34+FGJ-=@E1E5=d#ntW#^(?c1HLMBm${$CJXorQ_UJ}v&fU}*(miR&&Qz; zK+MJ>4fc=Y71PaJySb^YMt{O|tW0}&U7#Oa$}tdV2A4ui?teoSOK>U8iwoUs6uNm) zp_?OI3KD@-q|ghwlp5TEP0Up+e-XX6RPR02y8McZyKmzE;q5)(6^ z7_u9R31pWV2oM5FsZzPJxkvz zgipmA2?y&_R(04CsC}yn^V(x>p1eF}KYiM_iYG7kYL{_e>|3`N`#_g{)oR?6aQW#lTR-Y?TOUvp5^4-E0 z5;;d8P||TaiN%pee))kpkw>1scxsLamc$7TzTU7>;{Vg@4LKQ@q<}<~koehINtlsu zuB!i>BR_qs>(7(u*RHloaAQvHSxTUjH^p$oiO9h<^;rmiocLXXH?r%u4XNgCU0?Ge zcm1wmN#ubw^-1nlAd$O%->^9Hn>F?OTtf-kb6fYh^%sj2@U?5}mz$_%X+tiL;Blie zWktAc!MgfAuJGuzW$iD%Hc3~5nZWT}ebWsqh_5vLSx@vwEiM5k`ZMAu5$}8oxZ93@ zb`HdBuEAcP?s0KO#967XhU$P#)#6?5Unm;sMq;t}@e+c+ zAQo}6`4!``%Pw=I_^MCtG#r2*bD*6KdBt}+Qt(b_OBd5se$5A zOQ#0~u-zNr(MedH)Y#=NM;U*;)UL6C@d>dZ7^VJIs}Lv3*+wIS6RYmKoRJ^2Be!%8 zPGVm_y_f>)Hi|aRH3^QS9_D@PH(kZLwk|q^5*)RK{Dn6osBR^-_40m0=7NC1-pI8_ z@A^<@7L%R2Mt`sC?%k0*#}LG(>1#0wk4jy%91!*gYPZG<@Iow0VdGnYx7h4UEP0l5 zxG&z%&e~sNAGC=z zkA^Tk8Ety2ab|aDb7P_-D{t^j$NWUAvhSG6&k9S++;m#Upi0$x-L$$AHjfO%y4PEk z@eE_XBtCA;FFKQXD97$T(E)dG)lD}F**nRiboUeML15^X&@0u!Rk{&pkz4I?PMq1z!Iy@Y*xsB1w2dUL65C zV+Hb3#O9H)A?$N=C$dT^MvZdZuqUCjRlYm>&{k$;HH~VjY2kxyFJ5`F3T$FFAD%v# z{S>Rf!-u1*fEFkY>meH3#t(}`aeRSN^~9|0s$BRGF`s~mw-ajEbABTesKt5RRxYY) zu!A>j3cl_J%yDCbJ|e!A6u5Ve?L$W`#otigxV?5~lam$O5GH}qqOGa-kiaLVvFu3# za`z3X(IRiXC>xCyN#neQ;<0wQ-b%88Lev5(*E=b*uhb!1-!+;2?~wh@q*5AS5yynliUY!a%1$MZk%|prG36iA$;9f!duOQ?sL4xp$xgfykK{&)p11l4GaOFtF zVh>@&=}e+J=DBm_;Mz1d@Mi?NV(a#c-qv+$^KHgn*HSY64uv?#7cGMCCl#d|FGZfa zHJG)kT0du6$=GDuLrYB8mXG0 z=}ksC6gRT0|B&xVLIH|y;;lFtp|q&PIQVtU+;7hO5(#+CR&}-7%#CXow_%$zz2=DJ zueAMi;I0#-C1L4mYgZWer|`fdOIO>ve$5?umbau_vilN39$*9Yf(TE;nbmkTu+3)w z5&6vKf<-&GlkM&6!sRzp8OgM03)yzF^rK_G&b|Z4u`c(c{^lH7P2P2l0w!4HX8~q% zyq1D=3&aPfn^Wbv@86Cobp^!Dej40n=-thW%NAD)tq*jW2r~NDtk7nYU}hez^Y$sT zm!yu?S**z{y6Dk5-NG&~QPcW3sy3uSH}SX1YlWk{@WbmFy>RM-k=qA~)4~tU+d?*` z>b5MEQHFUMwUyGRXO*~(hvr-6_XFF4S@sW8$!f9pak=w`BL>GMZq^6c1zwAyCow<@SVb-TB*Q)14Pf`BIi@auQF}Q z-u3I=Tr7m%&Wy$hT^&u9CZ4Lxxk55*9IFeqJCe|*QI6I5$&5CQ!tGcA$eM$O(3QEF zOQd6U9%e#c$m{(A!Gw~+GcKxt6aYAehH9gdwympK_z~JlhQ;4WTYZonpQEirTg%x% z+tztU75(*6j`-{B7NRF0Q?gB8)&9b@!W*V?`q#uEo>ALpo#Elxu{v zAK-Mni7%(rt?RPCkC_05O1ZT5Rv0eG{{f&ny}q5f`9`2;zg+ojU039m-#E=<>Dd(! z9Y9XL4q|UE=IF`b=GiAqF!TwNFDJ~|m~wP9IwGHcy&>R^$JZx9&^Zz2M3(=yA>(g3?3uUS z_}hl#wlUVhKHCx}>4A3(_tS%KR6#^Ary66&R#?qlK9a@MWP2OHbT$h> z!!l64p6g}NipH^BuDcTutGV=us`QKWV-63fS|Q4KYc9a(8>)6pfigpae02CI8~!*h z;?xGS-eoLYPofsY^@ui-fx!%M+bTC`>%=@*%!qr+4_Y2suS2W8x?U`k$BV%(-P+li zqpr&?y%h`=f{cK|AjiE6bwr)kTiPAw){tWr;!Q8kx5C`=bRE^8t!dabd$ww|%jh;v zrLM2^9WboIxm~BkZi!mY&z-W}49PZAPMwv0ZpfrA?2TU&CQUC4L~i<6z9(!o*r`;` zH#>&8DqGn&FpSAz#Aya4SH|8cqiqUO@d}j6wuYVbm3MM?(oOoO2QNN>?_e75ZSrN* z^-m|apubSwQdNU;jxx_fz;s6!Z6~^Ya^JK!IdESlQuED7`ox~7+|&h9p}b|TUskMwOV!UsLQB93hDk5;f=`m7}`J^#19g z#1l-l7mmV@0%jI4gpM+X()kT92;@s;Y&eyg4TD z*V6VtcCzk>c@^Zm^X)5%)tGv@&jnme-tFpQ!=!z(ggzm15XOs{NG%^G$k-%12K{8` zLV2?j-Qiwzhk0~!vQG6*%MHwud8$KO9XUZv{_X107m(o|QVvZwCLN(bhnT!CA#7HG zW|ha?ASIG(@hM{`@f?Lvy-*sdt8(p!Qqd6IRw!ko>CmuFjyDbKd@ZRUV0dsLAN->3 zu-9@r&7%xnunS7np+j>%429_;r5<6PVu{!knr+v=+V*HnDL-Y-vY{{S;!C#ECIe@wmxEV0C~8PI#n6c`@NW zi}EqUqHKsR%p#qE+#8xI!dVDZZVLHAV%B}p)_<(b{lxgjjk%j{z7{r@SW7SPf-dh_ z^@PR-Lo@Z5ei-c^LmRLbVQ+=-&_0(H`IWlyjk(`yd*triWj9~(ej`7W<}x30IqZgO zuI@uOG$n^0;<7{xfk+>`500?hO&#@k^{(#?kE#oKA9Q8%fwkSa1cNB?)m-({s6Ep= zT)lLUQ*d(ODr1N;8CZdwmhjQa{HrgPfoAv85h8VTwYc^W>6rs6WIs$?U+m*t*TJr$ zPN7*@U(BRzD&J<7oa^uvO3xw~C#0{@;n@F!@BSm609U_NAtbaAOTQYfQpg;S1aj zRwU4SC%bMxm7DjwD^KMbZ~5<(-kbB~PNfPU!`6G<4-(`Kun`+n&l@ip{`!W&kr}u_ z>mHm9A3r!bFy23-%q2+qG}fG+$e*5YRpkEiL*YG@xy$bSq}|PR3ZBi3tl2s8CjN6p z?#KVQvog1G!)Khhe{*i+Q2v5cnzzj5+mNQhjY+%l&eN$(D1dj8R63BjLK%{AUt31(RWBAe;WHCBqpQrV+5 z*F-+@l_qSVkI}ojrq}MEQ&k>-fleoLM`RFpO`|j(ADSKQ!(dje+BWw!P_AMWy~5W# zM;(cEH9Z?W_m!sPyi4(_q@ zXV+gje@;*v+lptBt7zTdAryI1n#{Q=(tC(-bW>zr$flsXPBsNSb%h?$>+7kD?TciC zvBcgoZ7XgDkx;LBIro^I)4t|~qy)_CxlNh3sW*IEasa?@!;*EEuR?olq=7C+lYKw^ zpzJpfazgDUcTaGKX`fK5^$GQ0^n_Y%pHL5W8JjV;;y9sJ>l14Ax_D<*Q;;0(+OqH> z3VvlD*J)=hxLxkB9DT1*9lGEhb+Q{8mC5<2t5_FzbSHj)d*$Sqes4)c-a6vd;wX!% zb{^_#oSyP;bG_YFk+YHvRrM-P+VPf<)BI7_tnD0P*y}Kzag;S%c68)mY*r3L((@W{ zq^WB3{%wp(#Tl=I*D^M8k=SNXp=yRvATre1uVF30cs?W3_@9N?Uh=gi8~?jBf0qm3 z57G)l*AiqGhdX88;*RNnF(=P3bC-&^t$*nWNG#Rv9PQ3tky^&9mPIR4ufF=~chZ)g z`r@YpY1bK-f1s{h8K3u^d)xj09ZWy5RaIjViKzPDm47?g&w5>XF|vRD+_|^yZCsgt zBK$)BG_9ln^jhhu~2aBS5&92$lWhx)zfaQtTlcuyuVoAfTq$GVL6%|YfQbZ_8$BH8(55|c;h zpYs#)6V@B=EM0HBz0}z&l=Viv7Fo8pPh02?4K?8u=^~d0$Ua|W{X@RK`M}i89&c%Iub zh@1({0vfbr)GzOa#tldI^2|)AN6a}8oh0{S8Dv|=g1|#uiS@YdnJ*DJclbEq^G`!V<^7Qbq&W^|OiInF#^C#z0F5NoH@5P&WZq&!nt$%DRMrbjK=cp?!L@xtu{U z7<$hmjvf%vBTjpt^NjOU<_2g@GKolM5Z#vB`LavuD9*;P{v?wKBK6`GQHpDf=Tl%m zq7+4JpxW_y%9Q6;E3INUWgU?(l;kdqte-4O+|c3NGS`wrY=doEm``zU?LoDOES@ zQV1F7sOK=y1)$odkwmy2mlr;ojCpWF*Jc&y;{F4S;@^5<9tU4Y!ojB8*Kn@Xi?m$W zJ_Kwd3;U+)bNrOyx7`>I|Epz?8BE@wsCW5$!jL%rji$)pH z-KCXolLp*`-p5)}F?(G+hL#wT5Pd345o2Wfr6d4yvKx@DiweyPhHq~I8^4&qU3aP1 zcPN7(e`Qr;-HxW3D&_AS>+WZxr0@083rw+)Fq)2KMDu?2&bqs~R2XHCau9Ji+31O? z&Lu9hRUam!=@+pHI|FebH+|jju}b8K9odxLa$f!!m_28~ygt2U<@~o3XGJ&skqZ`l zATLbMTK5X=>7Z;NeaDV;7ARgsPpymhA=15`E0u5Ce9E#Qu)j#2_2@U2phCDN!CaGI zy@1tSY6z3^`NPkUZkpP&UlDxO~Mplx(dH6X7cV<=G}Q|I=|)=}K+I%ysXY#RDUF^w zuvM!e1L;#67}9)C6JSfnJg1Y%5P9v(O^L#P_F-mq*Mi9Q`7Iw3i>v+fBhSxoY0f#2 zURk4dBR3^0<8}Pq!wSG?+Bu#4PYIC^rsppao7JCO*pd<16K?UE4fcyl8gfOr#b<7@ z#eg*A^#wp0oRAd@ThiQhA{g|+MJ>Ka`lT(&w_S9iWv46h?Zqvb?&%cBcY0gAkyjSC zEbeS^i*(Q;HJwtJSA|%<<%TIfqbHdU?w|u6UFyKGKp}+SobGOR=G0xPE!Za^eL#9CH&eB_8-q zk*(P+t&)%Ie`xW`_XGdXl9Oycnc^D~Wf&cv9~sVRNs0t=T9%VZB51&J!Tzcp>p{NJ zu(xws@+IuNk609U@r{Ok{v$2L681ei?8T3?6oz-7!IA&V(t5gD>vXeME;Y8Z+86Sr zL14?m=*#36sckIVgF`oUcJIAJ>?^IBBYIyQ+1yz(SNr-G08@1}s*1%NQ^k8yec_ZS zC@iqT*)Wa9Wi>*-b9eGF!pyqAH~lQsgYu4Sxyi&rTSIbQ4eJ zpCA5F=4M)Fx@)UPma6&eYY{4t)p~4g_Kz|NC{?>)03DRw!Pr`H*t>&7iIsej%AcFO zLFEUM5Afaq*UIb&GP&HA{XmE82eew$*xDjqSDf$Za~QyD(`^D4ZCn+Y+za?m#DlUlh?5uw+5;QLW4aj`4W{E0%7w=VAJH# zs7n5%%Bx94T`bQBmtrhguC>2`PfR!Q;IbCj@m#Jrk_nWZ>xoOSUFYZZ)+y!ouV24D zVBsX+ps;4+)bV{*Bxl259{ z6F=_pn#!<~Q5#5Q^>m;qJCtC3el zKI(=KVFhUtQJ~~OBX462atOdtBd?omY@6&nfbSoTynzI_eCzR9^j*qHMQa`w^ zR8lV>eL+c;0Qstt%D{1(l6t^#H>qmKgGvewF1bgYXsbkhzj7&cLbdB()^IO)h08b~ z-4nSWqva4Q+btO_%MvKUyDi&xG0s@FV^L(;4xVkp zYI^R`V(Gb`P-9s*>A0+07zWTz&_!SUC?}?NG#VrG|GBgx+)hTCrt6l;&`-#UKBRiM zx&X1`3|67ukgQCim!^$yjiLp-8#}wK9-{iU8y-y7_3Ci7SA{}I?_~(uw{%q7!=n%R zl&n*;1Dd7<)k!%FX)$)W&5e1j5Ja#svp~pNt4=_AO($90Hr<-@chuF%t!S(3x~gAZ zV6LaY^~R_$Mw5$=M%+LO~o)}O4$ zpqh}+Qn4Md|N58GbHbZVwhnAQd^H&E{8u(2r&R*^88W@*8V206M}4${`7`4i>kA}R=9PO;(%FkN zj(rd6YsmJR|E(^q=e@_Z(M~kNuGS96=<4!K&agwt-Y)wZx~ncwG4c+G3`tujP3@4qlkSJv2*#p zoF7xNeIHv6PUshzg^u}o=-b#ksh{r1!Kkac;-aV-!0B@xO3*Uyw(%qi z$CLBnOirJRFqk%#>*-Qx+i-X}*G|$cZYw>)EF?$%Czi+aKXk!v3UI7+zi-ZelJiNp zY!4FZc<$tWI8VmEU%W^-PwHUVrI%uNy|PA5T~YZf`@U{}9=$e4&SI8ynGMF~7`mEP z)Jx@aX3W+?eTq9RVkL$F9Jt*!y)ek;z1%M!EaQXhq$TAbW)$VOQ6KgzBM2L=FWO>d1;aqL((Kwsy1lUwpb#2`kB42KV_pFf= zg$_78c16%$D@a1dbqMjy%jg7~>%?HVT#Jn)@G@jiPdoeNIt*#YzY5TCnK<yIWj1TDyzPMdll&MtPlVv07aPR-B3cfw7+UFzR9BaN$2_E&Fa?k31tHXz<*G z^jK(opa+qL_RygLu|2By3fy@M8kyWwSLDbCGAP{#+Q+fWz|L}$T!+W9Xa!+Qu_qq1 zn0Ayjra1MtcTElsh9<_f)wNa^H_yJ2$WOjn>OJR~1UyW#{{GIxL!A@jla72!eRYjYOmI^d&B;WlyT5OwuWv9kE@t7Z;!TA* zM@NQx=^deH_m~~j7aHxGL{fMb{&45;$oSNVTsq8xkMdIYQ0Le{uOnG2g~84#2kvr7 z^lWH6^o@e@L_EdFvp1DyW;pZO)hV(wR=Sb2n@hb}&d_c+WL=%ndX8LjGmY&G9}SJt zo#XTkzm>mH+Q?D$7I1t5ZNZ8Dvxbe1jhtTk@y@AG507z<_m4PAU|eh`G2TBpHgEv8 z`|LV9TRqYo(Gt$PrF8Md&Jy%>j`yLBhDGQ`)ys-Xt3QKW8p)SpVD#S}qDdQ2?opP0WI5O(G>L#hz~G^KX-~){f+Sh_&xiumOK8_r9kcl+9HL zgSq6?>)Xy8+8NeNbF5Qs({N6^0uK$1w)bl0IUy5r`VFB_7TwDHF;Na0%8ckJgh-U0 z0a|e|)V^O>?8Lh7z0S;NfRmH3oU0{%A9G@7d*4WVZ|Atk_?oGPWRwH6ggO>Uf`U4T zgR%q-bcfnU;k6HRk4v=rGtbNBu*T;QE%?^jX)m2cNG*LrhjJX2(4L{b_MVYRN+QI* zp@TSwOAvSOof9+8w4TzzoJ#HBk+JrH@%BMs$`kp|I+XLYgboZJ3XM&)4{829fq5<| z-NwWOLL(#JD9s4tm2)(>(%${_0$BB6cAe#fZDP0?`~it=_?cG6LWAvNBP@GF_>vB* zw{nFNetVZ@>?1aPzstPeB?oB&WiR5xel)y+eK|ZK5|(6UGZf6E1W5&;q%wOmK|1Rb zB1T9bj6-Y0ca8Q*C$SF3RqUmWDvqKZ38hAL9lf=>u2_PFPt?UF(L@4C){xIypVv&e zQYR+f?U5_KS-NN`N!MA0=;4}ys$*g$*&k`VT~e))?|rkhaK-LY9^xFK>yK5>7_ZPV zt1B=d$#?cXGnvOY84`a=iQ>HSWG5nPS%+Zs>EY3acHIvMu5@rc| zdnS-c#W+e#UqXg}IzqCw)B6*raK8$V10gwey)na4D@$F?my>!rAK@2{W#KSd*KCI` zYCAc0?=EFr*Df|SNXlZ*bB6z+u!hUln*_oyW}#zT?6e5EC0 zVDEfTRJBv2M;#*G%(o4mv}0~K0$co>M3gExsRpaPYn8rgz$yDOq)T_qr_6(PnOBur zV)idz_|mD|(O>1>ll!5ystPIR$Zv0MDHjQaifONZz4H1iw>OJy{>I5JX`^_)-%1}c z)%NavZX~YNKhyBte6!yYrR?n-qOj&C>HbMGA}55wX4Gim`#ZVv+}cfe7Jvr=XFrzv!sF;&QcL)9ao@BvarF3Tt}%>Xx-ZHB*G zR44$<@vQa07tpW@Cv2+)+vtS#Td+zChN)MHe8K`&IT5e2V7yWpPvjO0R^x=-Z^3Gv zu;(pUoegtI8h^52n{1dVuz6ua=eph*x!8g=I1x8kutpn}ERlCvu+7f6qZVw74NDTd z4_h$oFvJUTtp(f0UR47%!Eal@CMV(}7OdF`d&z=rcfyoQ7i5PMmSMqKoUk$rw$p}% z=SmK1E#NLEVuuB5b;71C*ls863Jcb0!*sQN*@AUBVRu?Ete5BldnDbbu&XZ}iT#5H z>d3EKh%DxD#5oBXk5{iWEKwo{EEsEiJns1xtltUSYQY9hQ^x&z;D!Px$4m@eJ(7L46coZg=-7`q}17M6tPxpnCd zMu7q=wqWe_HKH!@1`EdSD^75i1!G?o#~Za^yebyQ`>+K&ZWAwsQ^-~sbtrPKe3&y!XC!z_?@#xZ> z7mG~XfCW3>30rHyE{MiO+RY#$k! z=npjOLoIB&Q1GW7G0^u@PdFtdW+8BAa9#O)>;qz|Z)cEl&*TJ83f9S4IEWlZtq69O zK`Q>zF5a1(O#WCXIz2_`Rj~lg8>fXcG+G8*>mbm()TJ0`ujU#-^R5Vx>(V42M9|7MAynKrF-f169M_BR%lF0!<>N1E)xZo;bEK2oPRFKCZ9HkX1MA9YfvTwM z!JOkXLi0Ht<^KZs=XAt{G(tKG2En@$P%ywwx!42|*+4k{$EVb>DFC(|*08p(j{Q{) z5}dIO#7jCG;cKHsK9Js1t!hph zoe6UJ`4j#=%-n}0Y51|-xy2Q!T8wjQ$~VtncD~l`t$;n|Zy6XKo)H1iLt5x_US!jF zyWhk=hCfpNHS+QC_SA^?@!i-0?2X(p-tLPuKfe1MS3_^)#N)fqH!oK8 zy$VnHM7uxolgD@e6r&7x{cv|i!qGYTk-MJUy-29M2r%u*-OD0>eqwj3*;<|t&p|_0 zChRV^&~DrQ&Vj4sTQxyi=RdMaJRz>gL%RJp(R9ds(|sorRvZ=eKfije?Jbs&q|rj=@#smQ~YcpSmn zV~0a(#3*r@HHMw9O2KwHvBe|UVX`)8@GL3_rV~LtadHo{wKl&LCHFR8~?_HNu)1i7tIRH$+LLA;bZDW)>pz z*`V9&S&EXnl<-BXgs^!uR#jfG+{e-%F8A3)s`6&%;_%{FE)Fk_;Yh#XJtK?uLHhiG zbA#LGLTI~a5gs_#A1euyjZH$kbf_I0S(|9Aute*2M)Sm?iA#slxtWav!(S1-#qM)s zRCd(`8_yx_#&dx0s*AyEyuKX?)-a>#7*&24j4p6$*xrh1c?mn#CFNtr6g^ohKsN#C z5+GyI*W&$jVL6@bvmYvJ4)2J~=`AtW&e)9K8iO@6g!ZQOB>g)>sAaWM|CJ!;ioI#p zxnge`j}*}cd((`nG(;q|Yh%n6Mq}oB0_9|3MXIFXi1dzd942dJd6v8D)1I;>0*}GE zj)38p7mMT|dXJ;|X)qwZP)Dke*=IsOXxUVr0`?d99yq*)RajGuFk1NU<% z_xzc>g!i1IL(>9pSOkQ5YZpQxAwr?)$?|#98+pY2UuQtbx z&k-}4(5@vXNC*Jo)AI|++?9N(CbP_SGz+IuGp%-omw2;Z_4sRfX1G2yqjqNhcXHsR zWT`4l4H(y4s1d8uF1X7}nWVvl5%VQz6f#kB0EVqqhc`T&8 zASGy|aG_y&Y%I%TVRgxl$I6p-+9=vB7?8kSs8Pthc59qO%WYBFLs}l2jODiJXiwO% zum-V%XWCen+s3jy;kohUMD30Ziajyc-k7T`=Gqr?wTo-jTGp)2DD2NkyBJXu;o2$J zLN-s|L(=TigfsaM)fQ#{IY~{_deL5(sO5G*1B*Sy^w%lBwNIV$v%xb@AbmDbn+22& zAj=+;#gtz*bH2vK>;$L$&Yhs=BaFc*o)}-r@iii`|#9O`XJWU+3=MzL%|;DCUwp@X}bS&GjMn+xk%A~ZGq%f zidN!Vqoi-N1q7|cg~DSp9A8lO29oy(3g3eoWv_*jC@4n+qc@OzxnS_UMq~79i~>RU zq9B9<$u|iC-%}bPWRY+S#zTV9H5VldF!=slW8nCW3R}I1cgAG^0CIDnmHv~Q#^Vsi zoOP{MtL*Ri7g$dI}1J*hlkoQ;Z2#Id6f{UG;F|9 zgmpdHb&#I$f3FTO@I`svdB>dVjzoJY11yX?`CvkU+0A7m^}}9?PoZZxL64@sG>_>{ zz9oVE^G7uTXEz=GwFL7zD~4M`;F*8T8Rh8&Hs=pGX@c>j69XNgMDq_}3xy4gr0($; zZb!Q40x_1^pnlF8UUFo6dl_3Yj%?AFn)O}P)Rbe?_D4@|3|y`c(;PwjPa27VHLK+; zSAM%5(wk&VpUMp}rUy?NUF-jYLH#KFEXK5o8i3MC3^}O2$l5>b@V~;ra^z%W)xn}A z;kR=SKdWkYHTI;7#6cn+)^g~ zxa|b<2(#vvGPyIg@jx@L<1yF;fMMTYXHl#)&I(RLzW(q^;;61_(Puool1;uX@EUvQ zZA+QA!c0Ty6D0T%i;)CAyi#r)%jW@Mqu@yJdUa%q4d+qJ{1rOcjFVP9rren^N=pH+1)Smkg?emrT*=;R#uZ}yS zfB2hL^ab{!@YvF$#NTkcQFm_S!}H4W!>ZzTS=^*gRq8%9U0sbq)0DO()w_B?EE6ly zTYH;t_5&$ivxo!RV<|FeK9(ZqjFalnlp3t{ntu_6-XsZVOR@rbSF6J!XxWyu48(8V zY&`0MruQb$*YltuZgn^;2>q+MIRN3ND9US$d{Z=5Ea(*pdL$Lz zL=^cq^R57wIluvX71$#h<~+An*(EI#Df1f3QzcccjauU^y z!l)^H3H4RYF?94R~yNYn&Oy@mJ5UWO3BX>b>#w{tq2R-vd4|!zi7Mk zuMXbt;n;D%*m-VC3hs5`+3WK1M(QKv?)c8z-bS33^$stzhgyJyUD z$UI2u|0Jcl0uI#EDHxaGE$KmQL8w80@YMuB4A()wbcXLQVA|VG?hmP0f*3Xv30(6;DsFO%hM?)9OkHke3HiT9edPMx~e%{GdGS z`d5bK$oF!Wj-qcUs_ODk3^ z%sDJA?AgQ8f}MR>cI(|MW#iw|g*&OM_S&s;SunMR*FMS%i}~d&I_;?>>fhbdkk`5l zev#VP6MJm}(^|Di(H!THj!Qa0v%LA%U5oK` zZPw`7L@guVx8=hQcP1ksrn)U@Ba2QWu=4!aR3#wOLny&QLS{ zl*MMbHtSQizfd5a0@lEu+IeKHWf90A&>D9q%h2m*)}7_E!=xNdJnJIUG1I>MGa|2j zt}Ky>Q+-CgfH=CU<{pEEoWINX%YFe7s!P>nhmHT9>#y2eDJE>WDP~oh1!<~6pu+oY zYKD0hbzM4fle5}H^buQ(CuoYU*ZPZ|{GhfZp!>7#U zWZ|*XCahWWRgZJNYJHFSs?{-HwL0dj)+BBn;}ceE(is!hF3HZcDY8+DhLed)&sWhQ z5uKp$XBs`R`Ko8ueANn(Ej=@46|omHG9B|(*qX3v%jjbr{@}}r)`Zoe=cYd_vF4^N z47W^z^(2;M!J2xk`KqZ$&sQC@=BtkAd=-sj%~xA`;vL}k@KI=TnS@n8f2a5}zr!4Q zN}fT-N@>#~FaAp-QOK^m(PUJxBR4u$oU2qwEw5 zoJ<={i;7c-_741AyTa`1VR8Ji-0hVbuVxkzep+3fSsCwDRpDs;JWfrXy{fDvm9O&Yg|3d^#-rnASp`HF-Xe(wwBK-{02Y0a37gz>)B*r*FtS(?vtq?`{^WLGXCB+rdQ=*cM`$XTaB3-jLo0qBY~cG zgqv2i+PA}x04S>%;=0j=Y!%zCF-09aSsbp> zCksAt@`~;`bi1*`zZj~kq0X8Zgn9h`p0kVfZYJ?aTG+zK0j;rFA^*MKOCh)j1$qc)`fAmr7HN z!;yb@sWdw)h9bI`=F9Sm-{FO_CkaHp`%>v8tK#9t4c<neSfBu|0&Kd&w04wewh8>bNc8nH=$L= zQ;TG~yeSzvBH{H(p6*aJS(fn+95jxvO3TxXtQs|5qoxF=d|S}5_k5oA99d<&7I|b@ zSyp%iYvz(`Ycq?_b056A{Uy=#s^+pGKF}jZG48Lho=yBJ!K`o3d89SpOwpR2(F}p= zHIK?B?riz7F6OQL&4_|ZW&%k^2J_4EH$W5lK)eir-ZWm{GJd(Nxss&F@_jJn9RV*! z12TcU9-1;NCs{UuZ@|2FXV{IVm|`9w`eS^(cE>iil4WBrXgL&k(b zNqFGUJc+Sx0Cal{!{6DIyM)TdZ>fpA=#M=5`WMcPJpXd3JBe*KHR5Zp&}fkxUM}5` zI91~t$&9@6a_Kqq273a3QrL-htu*d5!37}3l6B@gan@?7Y8ZW&+ za{Gp5xhcOe)N}N_sUC=Y`jygU;VF%-yy{TYF=0De)Htr?JfMDq*PTtQsUDEjM32C& z(M+|dCl(!|>;v;U@`TgzIG~Gke;ZhJMt^%^k@U9bt zr>dll2UgjAZeUfk&slA3`E?r$u~9V;`EFs^vhd?P|KT>?c4r!v>xXc;tnhip&z5;T z#fIsnv15Hb7Wi`=81ufcjJ|T0)%e7B3^H|`G9T{QweTmD`Il7aBwyk0eL@{r750uP zo)kYIx#a=2`K4f@A15DyihSWl!;hgxRC|%K6ty?B05Do7q0n-KqEKW9&*J%QU=yJl zH#|k6mlJ_$SowA>gyF7F{9^b}J(_)#EFS6Emp6=W4uWTH;-HL&1s@shoP5TN$0MI8 zF6#;(u}9ulqZKx*>ZpUC1gx0=dg5CQAG9}(Nx8W)9zz=;j`^u_KV_50OGR|lxZ55= zzi>WUrz)fz4Fww>Ba1chfVajo=XH&%JEn6JcSr_9&y75Yl=d~spB|#|2 zvP$&$99``Mqzg1%N^6N3DIZVI(g6>}Ccsy{P!`aQ>fepW=Nqpe5Xx63PUYK!^h5`L z`}nIh#iIJRjqv01tr#F++M0j06rsCjcj|xPj?lDJjqV5>u)1r!t7+5j8kj}AakS$e zSxvh2VBMV>d;LQS`Ez7CFg+@Z!B_ZWSBSJop*Q>IGC||9lG=C&oAl0_nL-KoQga=A zd7ug&%+IqxTqzf7EDUtRMDVV1`yg4FXnK8PSi4f+`vx+@! z=%&TjXLY;>;?@Imj8XG-81fz|V0&FU?)X#;!d<6D zjT{|BweX`f*pZS**+ALil1+ES84)~;Of^*9VYK;gqaJb*w*M+$tonY5iQM&YaBIzZ z)WrT2NZV|kpU>3}!}w8nzU_Kqem=HGAEz>U(_uw}eg^I=RP%E#-aQlR42JOwQwyP} z&M4dH)I5Tx@UzFb%!LqLr!_?1@Mg>3X-b(Xjs?u3}z>$!#fTyHuJL|hBZdz)|}N%~UW@00kLkXXPJn29Z&m|td%u<=Nq z_26UY9E(-gi>(V(XoaGlR>)Y8HMDb1Ja4_}vAji{lDC+fyxDHA=Q5WaJ(@iU(b>b$ z+?>oVJ2&^t<2>sa`SrarAnkvf=@w&C?f&EVYnaz%dzk$;*G^N8$>LagH8*$L?=bok zWJan3>6napEj{jAUYKXgj}M+*e!S2rKAz`3Q+E6u*LE#7Ugg@MCB_#;yc6xq5F6j# ztAHRj{!Ii#ntCJCKir)k$(n3minqBp@`WdMFI+c@g7Oe{MFOHK5UA)JN6lYU?gJZn z=W;?7E>nTxDs|`6r5;8Z?Vb}EdSdsS3())(ZZA-lGYt4MLvj)ORtt zC5Ixxt_9t<`Qw7_%}Mv)qdFcvrA}NIS@r4j*a1GVdwKHt&{Fd&(b$av(^lH~t3bvp z(12Bf5;vKAqf*^@F^S%6CAz^MP1Gqr-(2pHpWk82&qt7-pO>Oebe~dpUQPPX#gmF$ z@#OBz#k{k2N?p76UV<#*w>(c({dS_g*jqAZnHpVPrLO%w75StUdhhzk!5{9A&ED_V`_yB?>A6-L*BvauoQIs;}`5%8FfEQ-o2ptJtXF zq&W38zBUeSx;z*oT_}jG+aYS8rbZTS&G6VdGCt8T(l;<%jLI5$@-GjJhsKyOO9DO9 zV_|)^gM>G8i8S#IF?ziJ-5RZaT8o1M<=j|vw6GnwJn+1fJ)GD=-&hl9dB6}0=(u)1 zVEDT7aFw_UbA+Q&vcc;cF}%J5E`Mccl7q_hg@GmvL5VGrKvQSr#=)`_-!|jR{uZoA ziG7jZ~H!>}c4RlRTj9}850I{49 zI=70lS-$Q4q4M#Gv60cv3G|sIym?@dP++it>?n=fDkrs>B|De3BSTot79l)I>bpZ_ z-VDk6z<4+Ij96NRh9-INlj8`XuMU;vE+!O9+}#76gMsb+ox=w--AG`#EXUXuxn#Jk zSm!=?{^|mcm5E5-`Kybpl6)5(La?3~E-T9Z2JLK?uizPvSx z`G@)IbA)BX)IcgsSFz+sjT7IM8>xW1Q{?Q2hKD|N;lzL-rP)*6HD@pG^^7N}7&rtg zQP|M3JCD0Ci#w*qxW!_oI8T&9#<)b{x&&t#QtpoFKh(EN!_hX07=DkfA ze_8=14=K8MR&cguS-E1$wmhP8cRi^wy9q@J2b8FFZwC;nqfZ6w?i!G~F1MawotKE) zP!DIfQrSaDA4lFe2wP`pDmkF?i<391{QodFC~0Hk)n$ky@cl1D>z-A~wJQG(c_W~Z z2iI>E_-~eRMHCPJJC)yTo=~Cx%%3lv=KD#-66`x1L7C@!bDXWWoE* z#Y>4;ejE&)N&HHG=Oy8$oZyplq+*|(a~i>z{{887+>}G!n^5f+V>`a7fb@0C`x>Xd zXaM!wgfReW`&CzwRAuy;Wa;Lr%jPVw%eJ)1yB(|s(Jt>f&3~jCp!H9J56@M5?l5Yw zKd#ij;eU{?IiH=~;knF0{L22rkj=qzRVIGxCCV=`z`U0z&n2*X(t&n{y#bbxkIC-F zhxRzZQmltf9?tIR!*U=ZKvKLo*p>_uIUvXO1*$KO`fEZHmAjgXF>22CgxyJtq#xa! zNG2SUYCrvdU+(7Y#9z?yzc)#ZkT8$VWcfz?sxgcCVq$J&o+r5YyuEY1{-q^LQAH0e zy>Kaf>V6AwXduLk85U^30!_?}S~$&WUt~iHf%FiNTV@Hj!tb4l3F~Dyc^`&< z{v%7{DcK1P^yrc{Q-HsRT-du)Pbp}ikBL^12vJd;JHAD z?l3eM;bApwxwWl>5vsOts>92sS^b%6MGuTzPgWx&3tTGaH6zRpo_8BLiMUs|gTwGy zCOMC|eI3cpbhU1Rb!V!^?Xw9pzZ#~&CgW?Icn><3z9>Qn~7pAhoG{R+SG~~_j%ED(s z#<`-yw2XU2CNw1T4GGj=OHfW>eWr*GPtDUsYYC_z|>T?RGP4tZ+dK|1Es zWNn|@I8>%WQ>gCQJv%^g)QnVc`j*7o8Lq{n$o)_@sy6)`QaR7J%T(jlk+jsHw{2V$ zOVrk^1%Vu4cN|PGzDgLG>`M>gU+5b%af0BN1ruGqDQ}^e#tf_qXn@9CJsZb*pxzrNgkO_Ev(TBKtiB-j#}PHe8_yDKU$I6k&sZ_W_lGFSE-rWO zK%Hk-E;EvpqMUa0Rl&jEn#FyfZ>!7ihy@yt8|=y@?x+P1kRm{)8-6`|oVKPW9R25+ zW%Riqm1;Ag)DbGYF*s&^g$n=nkWxo=g*OIkRHoav=E_XfpxeJg&SjQ!rYN#2Em#=d z5EO_^A;*hUcbV6`hc2aNLd>Cz%xg%7k;$9w3@9iSF{5n{jZbXCD6W1@jOHeipVq+U zX7>b^iG~Ko$6;!))ACGE?#7^BB1SYJ|Nc<$Q0E|QaoE_GAk^<=I%^DW5R5Cqh-U6E zHv9dN6~DV~DW={8<2*2=78~fOQi~*7;3b!5%?mJxVPQE^AwA5q_@c}d9Ff-Qf&!}HFyPMWpH4kS+i>-M=^{-jWOAG z7K{Rm27Jyf!AR=7U{-jOJI974NVL=9U})d)GfXzQSAeC5$uYxQJnA19--uFXk7hEB z3{vBO>1$vgIrg{UUtstHOAmx*mR=ZGN-Io;mIjz{y5~3tAEYG*=j(iOyDR)P-`2=; z^Mb{TH@PpF1>QG@JVe^(2aB^dxvOG9uvdKh=8XCSMtEhTmuq=U8BMpm!{>W7egKeqKmW&vSg5FeVIoZ8$ za#Q>l76k*IniOfuNZq2~(EGtJ1mCw=2$UQt^dA_Vgu z;7%}XFPs{f=)bUgWN-w#&u5Kylz3YtPxSqol=x&7km%~Krff&)Yaj1sUPK6F%*KzD zdV|@L@v~qEx0ZC!z_Vy;+@x5>BTe35akP$3c!L?j}Yh=jboBv{G@4lglZv0^6RJ)=>t2gB?6)||)}GJ`ph6B$9I zly%$0(*4(@cT4xKCBZVC?%E_rx*u33X%_IR9=UzDG$Z>mf)|nXYchhxEWrh4R?3yf zWQgZni{!eah|gvObHMv^MsP&|^iTt%7qDgXtts}8jEutVwMy{OWJebABkNzk4z)$Q z{2x#G>v{QnX0X)Gi>~R>)H6yP&qm?$-qfq5Xz!YpU#2*+QWWWU<2rWfc2-`rNWWXP z&=g-!wVL85zr8LwETWCf;>_7fHF+AC!>8^r_9U#r%e{z_i-GJWr)2Pt7EQ7!BK#># zVdU&py`cPPk?_fmR2N$ht9wJ2!#;i5#j+53Lu~KNRNsWavt@=?zs+!`3l8du^}Kkg zlb3YHWr;B9biAxN)&4NWGhFmw_h=!_gi`RQ^1le+V!PPOtI;y$PIAV;KvN!m) z1Z+(@dm`hd@0V;6)V$^+Q0=|suTtGd-g_^3|75|9X3_j0TK7;r_beQy%Y;pl3Oo&o7YRonFw)s5%-BOCfJUXjMJlqXKn#^>3X0p2s*1_ zGvlXwsx38_@w5Voe9`!o+4*=5V1#_oO20~7`6(QQT)Wd{c9tE_!Y2qlTy-=MV`rIl zMTq__<~jtE(6Ej5DT3v6Y_X;a|!c{*Ed58+s_op1fgoaqvf(rh#Lu! zS-v`l??vW~P2aIt?y8C;yQUgfi7?g2*f)KeFI?@i0-o5pl5fd7v|3Y{q%XB{nsK6L zEQXp0r-4BiPFLlt0uD4)_XK1 zANLYEmQ;c;Za)jun@z1P69-p+o0nmH!0zSLK9`7P^09e68+ui!I%^ID-r7Mk6TtOx z%M#v~hEEx?8kz?|V$oLXTyj^>U0&6yw@i)FfRar^`<&3V0{)~9K%Ziuecxboa zD?zG5Lxvrlx81*~tD_TdCvY~!b7&kM=+%Pga&@GLO0Xa2KKZ7M_fpwdpl~T`4vLh} z2!0~A33b8R4Nu|km(Vg0als^9s$@J7Y+M4XF|-ocb_v3AY#CexmQjNns!$(502wJo zoVK(7Bx4t)DPQm~{=S4s(1nvCn2fcl*-zhS3sBpl^+f}Nu{l(zyR7>x6Pcy=8X-!< z-oo!{{2*bP$)|0|XQb!JEto5|r#qSzC^a~c4yW|@IhYX4E%YiY7$BWZ#uU+*iD*PX zCuh21p3CHKvTG`W*n;tx?;A6L14*pa5b#0GhvtWmGImo@)-QMvf3HAM_$7S0YG3MH z8fZq;uFCzkI}rD+TFk|u6*Jkj(uW!7+iY#SbyKP1EI{Dtc8W=^+lg>R?n0NtQLPh^ z&?LE=sS{F1CK)k3U?WE&{@9rLFy0+?WcK6tb`YA5S-PEy85?zaNG*6v)(J|sRUWWi z0ZP_XF^~XCh9x?++D5tWj5w^~LG|r8luZ{W6XKu>a62j~5KT;nKH8ZSg15E94Cl^t ziwLK)CoHb*0UoGf5a&!#tx(8AF|-Ip+wg#Qh}+Gfm@Dwhd;<#tl8>W46dXE@j|%xD$oOAIQSW7fLWER78~8R`C-C2$evN1=giteiRGB5;_Hewzv9r z-~$xsM6T$qHk1MoiunhU)zNQLy-(bjjH^G?g|4~(nABcK>^F6Cn#@rQynIZ8y4EPi z|7dVDDjtYyp>EM@q*37oASPW%SsTihO6`R@eD5T90oT+%#+lR+6#ZfVqR+P%daRXE z0mYZ9_@7n^Ti>*I;q16wxe#X~P3<&xcbh`e=}5vxj5|k3s{~d}b_PE_3`bzq#jO|S ze>>JkbWNC+0OVzC5Kx;$7njaxFD$T*8FbYBF+kp~L`yN@^agq3p+M)^1b3-MET0wkWCdLt$kwQAckX61g7iJW_+b zWkD29ou3!G0DW*!J9ZUm$F72!aue+PhA!%L$tKt6gM-Pgr)0ONE0_5!q&l16CF!Z? z)sC~_*?|pG>y93@jiaRhSqU}@C5JkTLhSG93XyIMaX8vEN;hwVL*AibesPJbK!o7t z4LnR?p4^A|tgLVX$vE#>R>*d=uYM;0KY|xxzz6V!&M-(I&b^X@fot8-u4_oPwGaeo z|JE1Qpo`Wxh&B6*{^{3=hOLU^w*}ZODOMjh=^; zw`04hV@;R}0GEkgn}aU~Nli4&D2`gI*VDKH@sYikP_r>8=z*GK{5Ig1(NIYIZ%s4} zE@Jq>5+fbf)kn?fkM!bD?Qiv3)xUqWC@!EOpb>QsvZql%2rwSQE!@4F*yJsvBhgPG z`dB_=I{=DK-8dTAsbP#IxVM?Hu|X@>R9X+&@vW}3y5fGe27dId0CRz9;kVAV4Ss){ zeW=e4YiM@ZF649OAQxjp_o=DGS#`(o*q{T3;-^bDji=+WSa}stCu-*0$WgMy#T^i z44@o7f;M0T{Rksy14hthF@iP}vSvPlHWwn8Mi4%VxkDR3fWiQ3)(@Zu;`U;*B|2&r z$}p31p|tVs*r9MgHK3o;c|#(KCv8SA<>id*qJ*>qlRurGjNw;;U&h`!Bxm@j8F^q( z9m)cPQiy54gHQXO(JzbRDc9_ zjbSZx{DD1%lrOpSps21e4UnQ*qS)F>Wf{Yy2cg|c78rmZ7m5X@!&*XETfU5(3;BaH z#L_lkKVHIWUCoYc*eLSuZy&S&6YdrVgBTtky91F65-zBvJb9%FE6_kY&M1(?@=sb;)c|$KOKe@e5{)vcFDI<+DXi zK1ESW^-)kn{8qAU!XAR!cSA#^y$bgJI0-F(r4;v2isxof$6)mf(mk_9*)aeytlsy-b|P zOrl&@B8ojQTh#GuDC(x!qU_%#gx}Fep(}|RaPee*eVpiJXV04ZA=*mAU^FUX7`Pri z1#~(1!_Lg8G#i3?7lJYPMwTL4<~qMWo_UY}QoAPn4`mFqenJH6ySl=ron<)tXbyY#G4_LB3Y3ZUO!be=eLpk?Qcnp}C_sOv8|Z`AR! z$S89F<^4!L-$->`J5m=PC_x<2o`QIk36 zjcTDmJ(GHB;AJtkhMr-v&OD$l-|CCgCV`f(0Dks*XTMFoO{L}tdfYO_Zvkr=6%5z@SCx!}?y?FOJxj~_v5o(2f=)Q$S(jbJ`r zDi{1_I%hZ=z;M=9Iwm>43CE@2IyHW?b_Ty$7veYTHGZ=m{N@(HZ`K#GcFu2ZDP;A6 z->ld1n}7np*{_tZo@~zorGsR&_jsaM zob*;gI^w~OQ9wR~-eR9gpGF9AXzK5F`s}K6uFb4YUXUME%82pYr!k)6Ks^iN2?l+i zU_AG6#&hEwHG8gYo?3T}QC<`PdF4l?P6>F}w?HGY?K;mYL7~X>_f=u2@e#U0|^d{g0;cck5Xlj zMT1TcvB&u6I83G<{V2;4pfY1WNC$^>@W8io;I$*Rb8Ia-!@8qVn~8u8IKbF~ue?F9 zqjar1>LxSo?^;Fgb6$-rzK#p0~J7!cTmE~byQrE z@Ls9WM_UUzJfUMG+6(9kvL3|MqAuxbb^x?}VO`eFsLL282QY)+{(T z`eIZyGf-)m{2-@3#Xt96r2je&lCH+Fl$;IS6>J=@$Wx&J0uD4NR{&vxvAMo>YuN%M zq3{Z-sXI}j+lZ@AAwfB`ZeP3o8;bl3)ay2=cBTl3Fz2Omhm%7g2{00F)N(pkH+X`c20TE2` zJ3KjWk_G@Ia=Y*ga*M{cx*gjg?8FEASFhf{4SXvmHDPC-IWW|2!*NX-5TPyc=70_1 z<-X>lCkMfBbG1Q^GN3ND7G`)6PJ}}fnryQdxc%O?MU2phNc`18*NEUSmVS!E)9D>B zS>A=GbmqWPs3Hty(jRu(LNK9tJvn#*v5xKmmrAc13&Nf=pfHF7FGOgP5e2|Qji86l z)CB!-1$YtHpo*kFQPa}*nmiKR%A zCvfuw2PK|D7X)(nT0=?j;&MxilwOa4hjq^hHrKNT`N}A$_?|;D)vfK&p*)A0=~>>M zBsIA?3PFn8A2sT{m4nHRQEA-CGylX&Ni>t$Jy95@0SsUq%g;eDw{oDE4 z5;Dpkd70lb$@9&JN1gA+^TMYlKp*EbR3~^tTu4d8{(j8B8Y-11qRdZ3;Ta6tDo=h7 z)M$_tun>4g0Yn40Ay7&Acbk!(+BG<%xG%=?!`kq?<~KS{DF zH6)5L9u0eR&<65ELM)yIYV!&Xh^WJP%oL(MSk^AP?bMl=+M_zjR_czz@Je?n!ofzQ zArQ4@t%n>BjweFr6Bj{kl6FAB*FFKo*FK>*Nd)jC3neu-v{0rnwR9YW?7$TFnS^tZ z&{BC3QL+=0@@V@une@M0>|zWv8mSk*<`6<{bTgyLHx$T4B2X<@;mlBf^k;h<=&v3v z%csQ%Vs~s6eqyD@8OlIg;0UD zB#Xy&bmKIxx!aG|)4})`U?!4;SPC2d3rBbaN*7ouwvMh5e>1dGb>s1M5LO{;b}+Q` zUpP3!d0C!WkthL-rXoRL&_C4N-ZkJ4ftO1T6UCGKZi=maxVxJp48`x0AVh$8JCAP@ zTCSS+4EOYhKyHv6W&+6;H1!P)d7C@>n%iM>B?R*XEV2V8FcWC78!wuJq<;=8?Sx3w zL)*Y`@80GfE*-Dc(**`c3;`?@#NgR^^Ps;Q(%JsD=B^=sPY6@9!C@glQ7V5=KML*d zZo_f9hUsetM=Sw|<^W4E(6v95`iQ|1N0Fk;L!Dg%ZO#1JgpqQnFKp1$)Wxz*@M z3MMJh5riY&=GFm!8(zJmd;!tl-Z47n1c3!XIh-I3e;8hXTTPC+;Uadm`kVVZ#|FDv z!vxou9P)J^U@+gGJu$-F@Dnv2zGq9OX!n&zb_^M2mU17JU|p z`UaZ2FzRsD9U^Ialp~c$65XJy7lOz`=#RsLVXD6w1Ky*22_W4a3<6yv%^kMi-;oC zUhYgS)w=wo*^x~#x{li8Z`%vqn!z?WVs_*Z1aAYix7?W$(9*tZb}R^C71IvQBL4lP z=ySMhu#;r8HP}4akxQ`Heg>x~QW?~R&d}-|z;#0iaxHpwWPPt-bw_g3(|C zisdV^gHMj4dHIajGu%DYHPnae{9vAU$&P%&B-()k4fuTn(A%e{>>b%rKu}^ZaVT$_ zw|@v3M-pa>b}ZuP0^u@rdJkZl7#!Bs*T!ha;u-XNdwTkci+aLs8;Eu+nFXdq4|7|z z17>G~qesvMJQtUi1az2AM?03zg6V>yqS8=3%!_e22}U=+5Jf)k5FYd3a!G5ViWo=X zEU4O`?I{GaKgLmHf|m1$+5#>DYVY>ymXKRw9L0o9*Wi>X0nS+GPRBS(2vXNf1ljBD z_jZS?Y_7#|fd&-__8ap70ZZTtaeC%J!-V;(H#}>##|h>@ ztmzsEX15T*SH*G8Ad(t???~4`AC3UE4*Niy;0(0&MNmVG5530K@jCEshtwK}7L;h6h`_!&GmN7wkbGq8j`A@Q^)}-M8WemmvC#R?*XlAFpA<>Z%uFD`$M5lZ-QLOBuQ)(dkPWgGFSl0s)Z((Xh&jB?(qS zbV?1+ES)lMj$kGt$~U7^HqLPbI4=>AA9|&(Q+|1lU@9V7WM-$lV~*e}A~KuNDPNr< zIE)CGkpNd>73!6^bo_OyC3UW21=W>kJsRJgm@M~(NALQ%j+Nm$=j$oo*v#O|56*S0 zA}~Qab^sk6{()vM*0!GD=mr0A%Us85g3_&7qg}mz%=bgO3FFLM$0ake9P+nzcJ$G8 zQV^SBiJ#{vCopZdg{7*~=hcm;aYk1Vf%fegYaZP#g_}L5x+ter;%FogfrEq4ra9cX-clT!34l)?>WK}``NX<*JR&s99%JbF2?-ix~yThvTj`JQ?1tpxs2~~N=`A(?HJH#Oz z9l^0yQEqFH-5hI3^hoO-Z5yDeMUixb&{?M58( zlEyxYdInFv+m){)d_siNMQ2*zQ_Bd|S*5fIS^oMvqpQ}KH=llG1 z0)(vXBv*Q zHN&?fGdD)D&PT|??9G|EP}xLohar2HG2}63Zwkklvg^a1sO-A1$DDm2Hk3xruBI61 z>r)@U!>6cUy2H0b>QZmL!)M0_K`wme+!^%2NWx%ilDh3qUk1X5b>UezYytNmT>-+`t;-a^xI<2O`qs2 z)1~$3(@yBq)(G0W)Ju<|O`g2VSB%;={mPeZd()JOixrkh24QSl@gK*l_BuMogf0_E zP|taPrHj8Z*V6v@SH267_9>)Id(-6jiR0n(q{>j=Q&+~QtCr!<%Da83NW?P-f;e^C zNNcXis-Tnn=x$%O;Z2iz;%;AxkutpWUn>`=pWp3s1`~XLq*YP3|C)D@kzb2!zv}qv zd9(e_$19zBieDUQO;#8GhEq`S8D%)R=>dSWQA1m#8`r42A3IKfhF<*8DYV_93tn)Mla>!EO zTD{VuF8ypJ6g%=k#_M#^J-ktN-6QgwyvLUwtV_2Z?z4M*7sYi+4#R?@JL}wEuGy~^ zpYSQjHFE-aI=(ksxzGVJRMd&A=AB*XQcpj#(j-c#sP7#2ErWaE2~jauJAV0v2)_Tw zs)~s8Pwj6_Q9nJwTQ>P#fh5Y&^My#%KEtZg2rTGOvFfAu`tm`_#~PNK9kJ)dQghO` zJXnJ3P6jJv__K}f#*8slIw>lImMVwiyhwN_xh-ndI!=miRsuDaY&&${_7CHz4);CT zTTHolKqqF}onj6M4+V?*`YGR1Gur)eN2&V6{l57it?)kIxS%jyz3)B|eSxE07wuG6 z-tQ|5mg2kj`%0*vJ#fD-OC--$zy3m9ygL5@U!DM3thPPC=iD#jL)mS}^s0~E?@Nh* z{~&giU7howFI`GfZyjq*Gaii2Rj+`NXm$64zP|CFDyc$2NV!Y%j@NN_<9b0#D`+Uc8yWO)4txe0h|8%Rx&x1$0}6E4k! z+=PI^Vy3}VB!pv4NThmI9BdDQ0Kdnz;CsmUE4Yv>!xt7h1`r5Yo_vU~q`_$xf-CTs zu-lnuRN8pEGVU9S;&1SN>}AepY$CA@xs8o<8ovwQ(xqS#V-q+RvVX+FjOv-+<;*wjGikg>YmoQYXA1Kk z`ygHw;yvIA^B(Yoc@KEPyazmC-UFTx?=fLepSZ)9tbR1mx@5tG!67f$V2D5USNG7V zMb|AjnL{L>hJ6G2ViFb53svZ?P7}~6-l|i3JKn1p`hCm^4jt_xSRHgS@huJmlD;w6 zYNIdD5KPO(sf?yymnv=3tnfi$uc&y_^|YNR7rrz-<(VJYXGo z8}k_ZXzK-`n7Rji^VLJ6tyx;g3LR3c#`-+4=%%ZU`&-jPiLq|l)oCn#p%AQuB_U66 zK}%Fi$8<1QtJ2j&W38#-tO{#ruV=5qK77lbF*{tBblKLF)!c_XA2JM6=l!l!=#q3`>g?@TYWrv%PR>PcGS3_z~ zZ8Z#5Jpt2lxHw!u74>YQHBcXh<*qOiBx8k3MYC6FluT;P&c_sr_v!cVV;rDe0}%1L z;$7(Jh1!3=y@9Ly7i9#O#9T{I$S(u+^)pb1DyC#JU1r(KaS*gOoNhAH&5r*Z>8`q0 zw8A+#c8R9b^5qRd86LkJqu=3Xlc`$sxn`6l1dtPKUu_;UId)p!j}J}{?u`}ex0h{l zll_@e3b{K9{)sUr0vC6nhtz z(KV#9bY0<^@16@nZ@m%qF@9W<4)W_6^gg|;<7bp2z~lGE=E;A@i@v?F(iZH(-(^HH!h<;B4M3$9yaDG=5UH5og&-h(FXKu*ZeruI@_|AAsdN^S zUUC$qhi=YZpRLGyrNf6Iv=;b7HiEJ9CaJYQ+qqkK{*|Hg{4rX1ip?C?;lqTC^Ao>M z5@NB!cQQ?rk`>-Z4GK?j4@4w2_|s+zfiV^o`4b6Zj#`=Dkp{HF0a7u40#!Oxiu)z` zeZ#0OCXpAmB@<9Et%MSs%!N}cz>_)Ljd~I_a?34f98|S(^UWufHRm>tk`;L5;fGg4 z2jcw@Nz$iTS9tz3=oV|}K{oQD`h3FfzL|>%1_S;Tt>92)ZiI~2`odoHs>+VqC=x>Z zA&w@#gs*&QJ{z@`MJtOHVoEAGQ_|+qF(s86Q=(q+gQBcJn@3T=LX|CLa1op0f06_$ z*W~AA560_w7N2n(x#6G(I%U{T;eyOD%kbfS>`FRmA)zu7dYh#`xhluS5o{5ou z!v#RFIRLUBf+G<+ND!JR?J=H96KsOs++~fybqp}ur6j;)!$lQM%0{5wXx0Ye);%GRtHS|qosEz9OeBJM zH-6YHK=(|>7WKJBFnk@7v;lJ^tnP0ZECux?1iV%D>lWxZi;aXtjqS8tjbQ@I& zcQF#K7f!0yeJ1tNU*)DOA01(9k7-*I(i0Tgn$#xH)}%Hea%)nXAa*9T34CYb<2#c| zRQd3T*qL05$(?G0b|%9kGm5@GX#h2})iWkpkkxP3Gj^wm_o+>IGoe@TaCi7Eyy`gI zn!0+E2U?yy*@1cHR`8~9?ORGC;se44uW}Wc>f9=}WY3xl$Q?Yuwffad54X;jE>W*K z-1=*q%~QJ;*9*8n=^LoRiBtv7^_j3G4Eaa9TKp3!S?&LF>zu$ZP4X{I;X`BX)HBQ@ zEAp+zrEHUj2)TmwnUtH2@-+r51Bap9pwC2e*-x@-=8$e;T|gJ?>PChfJSW6u0SsPv z>5`Qp2u18euOwM~Q$FTPk;nT{j#cs#1|2N&)MDeL2W7BtuH$&lir;CM`6iK)hj>H}i!$h885l@C>`i)D6fP3hbzJ%^U_*k* zdy0$9yG)@f-f5DXOf#z3n>nLG|JPM~P7Uj+z$Hbn-mZ6vdw^dtpHulCll%)4YS4!R zLFgklWw(|=D%|J96&8QnAi|%J)+-X}KY z0cq$9cjW-r%@nNem?YaTyx@XmxGQDVz+Zbz+oz{tj0N}U)qF`D!alt=f%fU6ajd#S z>MNwYX6(}g8;*&$N5F@F8zX#3gs@49fZmp4lF^QdwqgD{OoXRC%d6wa@}uDP{AqORs26YiTJWls5w< zQjv#Af0&C|0cKk0m^x&umm;z1?aST>iPGOnmvNOdC`5TzcLyv~LC8702T@Wh85Cte z?aWZ7y72*Da)3AjEx>jzSB~2pZt-Oy>7Q}Ok?E3w^4M6aiiP2t(42~#XrwM5Bp`g6 zZZC%VE|~lvWjLTr7lFMurjS{qE{KRx%dTuq4xE!7>eHZEFd$W;kC;*f{;-Z4cN~9A z1zyQs&i{mz;<)3`xEnmE?SZ{`9-#~8DKH>5c;-WG#bRBIlC~3}A+0%t5r)dcs~ObM zpj)lic)kA&@p^i`V?FQJ+rjFE`t^FPUvpM(>-G?<2iF&{daRK;Go%C97IM(4xe2*% z)A*oQ!hFzpm=791hY#9Dd{Auy@j>gdk$Ncu426XFpm8j$AzHV2W*>uFi3VD(8$Cul zUT-`Qw;9A}EYSPl3Ft8Jbyc~xXg;Z13fI}&vD*l6!n6kfpI&uerVX43?hGRi3bFRH zL2x1#z#Ia!V03B|h|yV_jVK+$?&bABI5092JqgHXcf&@wSi1LgL@wP=o@dF-YCH7DOGI(!U)?%TXCYvx8Zy{3>d$NJ9~B-Bq-)8 zOuR(WlO|5mwrFBf`_nOL3_#tS{gPGly8tnm9<YwVr9sGYqDy(#=U4g{QFuN>Xwr;$;sibc+3k-mJDNLHOXm4WZZfV za(iJUVnUir$nOmzwucc@3Dq?(x27kwor5Ujf^(^?DkpS|J+4vN-o8+etfNT1^X1m; z1b-wls*V6JrAQ5hzvUpNL#SXS8WvIs&z_YZG*P3;U&4nvWI!tC6PIlRj3#*P;faxX z3uZK=G-g)#9LE1B<_Aqy7y5pB&~g-1yYdD{^PuKY!)R(WG>AadWY@q}2i!pRU47Qt0%}H*Hj={bJUcq0xE#Max(|A_bURN|Ha0yf+ z?V=HlQ4U0;O{fiDsKFVqHe0aYg}}fXc3Bz_@HO&4933MBebqS%vMm&vaosnA91J2qS4HxP23s2+sXZksz0aGp@FT{*n5K8fICh$`>%4{hg%xp)>-OjEu zx~h2(DTxKd6a}q`WISlMQ+mV>bEU{lCa%QQgemBq~Vr&D@ucZwWOpr5WG$5 z0MdOUtJ7^^(#*8u1k%rLWlI+2B#?Q_8CJR64>;}cn+kalR>=kNje4+A!# z+wp3a^<4%L3lYw|<^ptn@SPMx&z?bB$oF>>e_|TO@kul>x&#_9NuL@QhagWI?VqQF ze6Jduw`cs#z`955x1$AHixu>k8W@l9SuYMOJJ3+MwDW>uLfivwLrw%jbp78~=!PZ_}0~Eba*Dujcx9CM34}gTt9lPyU0?vm! zUP-gx78>X+PWR8(;O`m-#ngEw(&3S|XDRX^I}DBS zbsiv8GLx{72m?ZO9=y9Y0SJaui`3UIbruEypqMyY7M@<8iyoqS+a;xdgejDhpPfAi zO_lqiGIt|Jn@su0Ytr`AW zQqN#+4glTI62fsn{!xIU4C)nswx^u)Sd4vfZ!Y9hQGl%uHbd!*5L zVr-uSpRoqta9e=doso5aZyp#XNR|Az;mL)FLwkiu@!X?7a;l8*?F{J8oOU7GvU{ZV zd2PtAz4)N6nT>n19=0QXclv2=U*;*srlBS=4rPsR6)l(3CoOn1)= zy6Zx8ZwS*p`NecM89M-5?rD$;LHIWG76Xc$(F85jz9{>9Ht=CBW!(KPx$VOJ8o5uq zc=(&~;qWsQ4%Nmy;&0jTxCGGK2MPAbx{`@&t~lEVCBx;eDCxi^77l4pV47h7WPq%C z{00U<%3+5NU1BW`3?G6*AQlKhhAn`UV?QKc1KS8|J+|`Uu?AAbKrAV;L~zTwa z^F!2-V#;_U4IW)PF)tDg7FFa^N4Om0?+JXdTn-kgg+Id-KUlO>+C^un_)DSkV^|yc z2lw0$MS-!VV}*yJIA8szc?#l3$xjo@Src*5`-{NZ2LnjE&q0^{csd6}9E^89#;lFG zfPfE2%v;Nnslk)sb6zf`JQSrP_OZ;ppti!Zeu4VpSDY!13Xitxk!%62e*BI*3!K@N z@Gn#ZbLR0(AdPDOsxvp>p#>2fcIVJg|B6D0I!Xge6&ox+H%KqeQKU0-pcC3&)785d zOuc^vR*6k8`k^Sp+0`(podEkxI5=gBb-x)40R6MoZER=^VLKO@y{fUXuCUmNb9w3S z7KKSlyY2LXcxcu_-oFIL#` zs0fd)BLVttWYWOj8yH$z{%AiAi{_f=S?PH)MOeOcAykE%bzPTo{D3r#nQn%`u&kYz-+Kw* zHY9L+VU}kWtb(t(ShF5BNpT0<+;_`bFZssc+XmBOi*_cGcfW{yyM7tzklI6>YtTg5 zb`z^NN-q%CF_eDmErb=Sg0l9lz6oM6$dSV@0lXO=&;uy-i6cen-5?Dqu^b_L%F);_ zeU#l09DT1x&6*LwcsP!pu*3+2oC1oti_q5#fLU@3oRg#UVfJjL`NB+yQd`9^ET`f< z$QPwXUxHaO)Z`k644tMBjtLRUacsc*)h|RK$_U9=q>V@_y*lrIk?{d!Y~mSfi5p43 z;~2Ho7o`@tHWx?a`hTif`4xE-y%CdTf$19bO$T*RG_P%`(~bgfHq*}R&k*MtGRd0+ z1om|tqUan59^T&oG&aP6@=$X5SEg%(*A$R`AB8oVibX@@QK^eexCzg* zo{W;yqka(XW0aouEv->ltU?JMPYih;mEfV&{WjL1hX$%(f=8vm6X6ukO7O_-$R&(B z^T%J2Xu%%HvXz%@*x+$9B%ci{p`1CkP%)gGS-ZTbwg79mQmYEo1hxSG9?yZuZZ&Iy zfh=9d`W}G@`7Si_L81H!*haI=UjB&LE0_~s0LTND*>AW7Gvci`V}_-z0-1!wM9f{7 ziS?66upE@|+^ka7v%e{_EUY!}q0RJm$pBt{2xkGG0~O2|;(RV>>BG{;)cUr(d1ja? zY$~&(o<^XPSF8?*0j((Qf zjYV)@N6#EOLi#b{R^kiAeh09!6SIpCqWR%Me#U31a5LWsYaLk7DO`kNos98 zb9t&3s6V{iX%9S@0FPipX$N~C2L~4vlJQ9@eZuKjQx+$OaH#Ah`v8ckS-P8qblJPW z{1m?Y2~EvXepy9NXlj;nHu7;BZg)1}@(Kab5TYr}2CED0dZTI1)`t=hNIm$$JW|q! z(}bq1Ed)qmcao1b*Vr-Bd!D8&o7+D;=-KZSk9|ZW#0|8_s%_4yZ4@=vj-kY?>tQLk zDNB9f3g^OhZ!+6+kF<|on6RBF$^YOBUA_(&pdae6LevwzZ)qOHF0aCuc$poj4FhLc z#+HJc0Te)n9h{}%A=3a-$5ovI#p=OwfX&^#nHAy!wBWr9l9f!J8;g8bMFz(AH6UaRYb>SNWd#gb^gMs z#5|2A7`#W?c(K~^J!gvgPV=;UWcfWs|1?%pD#8Rf3|2Xvr zlg|uE@A{Xf=BfXkKb=%Kk|Z9T`OFKmYYT9zfd^!mrUE$ zP0vp)G{AG<`Kc`WA~0EP$)A?hy#>>W>V3~oWyDn*Ay9w(r>9u|g&wu;g{k?GfVLN= z@+hS81s#f_Mbj4b%P&l2=L~6*t$Ft@WVS@oInZPg4uj$4{+{iNj-FWTDmR^M9JENqH?ca~1l6;{lroG7!CO zT+tDzsy{PTtoEIrS|D2Ps?$>!6gFi9+h$=lf8G*owEDPU1l~n$Cn(-%pPrub%zrJ` zvBB~9x!9Wo;@i$lU6j04hj>dU`9ID~RZ6d^WiN|H3|_m z&G_ERm<;wK2d<#A8+F(kLfGV2rm9g|$F-RdtwK@HEiG`{)xUm!W$FyvpT9Ddlu*FskV+gYQKm&Sv~ve z)CH!UN!EJxOs*~4BKIXi;)7R(_qC}-v9%d^Sw;14HK+(kS8sg{@H~Fa8&lTQhR)%k zw!YC`t+v(&!PV7oOf6O`UZ2Vnz&E@;WmUiW`cz^}bqM6guTO1=-kGGwp7_R;gSs(N zSJ4+Bi`CoTn94{nIj*K|iM#nLF*m4*-`tXV=;ao5n92I3bfmU5qD80(CK?_zLeJ*T2IMpl={+3L|>TF_`ZVj*@u{Q(Bp#pFm+Scs+2t?Tj-Bj9$qZ)+6pi66o(AEX=+`OaFrX-jHtZHa^h`o!hKb{K~>|ZyaBhcOjbCibYnJDwm z(fYwAr>)C7W;*5#Z(S;*E*5(ik5k*boWJVDh9Y9R@kdNI!K}2s%Xo0_(n5Qe;qcxi zie?KOA}JA#7%T^2IX5e@cTq22v?5wHKUVa~rlzP($0gR~XfU*5%5Nxu02Hu77mH&7 zO-OLN@ZV+iNZSxbM~a(CR;J5gb1-Ey3CwgkaLh_>h|Q2&J^tuLirQS6m!RGff00@3 zdc0_P=0xIttRanf?mYyQw}6RD#-TXIS>1>wli1M}>PHKwuQSz0@}wKe1y5QJo^+$e zhSn2LS|9cpvl|3Y+F%kqsa!C<&;UW&YZ8Gl za%|fc>97Tv&3N_tMIy~HEgBr>TEfAZOnf<$Dg2zt+|aR~C?+HYoZB z!U9o6Gm)LcYyt&1$qREP|Kw(MCJ#Fvt2NXl(EuvU|B8dmUWjC{p>r}PUvV?L1tedg zkvz#^iDW_2(oE(CA%{Uoo<@j(&_IZJU5pLnDZP9XdX^4oY#em>EZKL36 z)jJVpOC^uMsI8n0oI18JQgU^p&DThGY+! zmJiV;p;`2MP2f)C{x|Wjm#$@iTV4| ztGWB6+(#aca}7wjXAWHF>f&;=E_YNeEm`b{>y0A26nHRo0!vS2XTY!yC2m}*88S|W z;1OMUV!vMPfq{9sLVxvXt$(R7&dSldY~?pgk*@q-v13n)b%0;WA~B!;ZpX!;Fs z6BZ=FkEgJh8yQ6%`TJjrG9<4Lw~tp?&tq77AM)hiXZs(}lN zlGV@SOLnL&NyV{hzp2A;j)2Zry$i3msXlQSv12-sX%Xf zAJgCOKn02EEtL+Cv`-@Qa^9WQj@U2*DO&&xNeQ?Rp~%}=F9blEtvGQ`#w^%uCCQHF zIEq8!LXhAFw~mL<2h$O$e2dBdF#`-n-63|3NP?yDp#T=8MF>@5ZG1`uTJ?tbi{`0? zmSV4ZTq?Gx8&|q;h-N6hCa@d*uF1A8{|*%7KOn~PcPhvy=H1iH8G+1=P^JF za_MmJip1hHgPN36BCF5NE&g!*p41i;Xscs)R01IK*D|&OYagxwJ2gcxcD$PN6NKd= zqiri}7xnep8@gZxVvx!GsJhLa=sIm%vJcHutqs$Q18o-PH|X{3si@fOa%1pm7h6XY zbhX3zq(qTVO0n5J8Ih6W>CVS^B$rTz9<6S5ur>?40SWJQ z@q`!tY6p*Y7&QNQy6_t{e^Uv@a+?KQqy!szqG(#lvmx*J!0arB_1 zO}yxW`MnU_<8q#G)3xneWCYGj&qxTnN&0KhD4f6p8*~j2zH>>4w!awTXbZZ}n1il2 zVe=IMeXPtGqc%n3Z6wX1}6**w{( zAofrEF2fJAs?GVd(SMo!X(~mR4HJ?7YGm&!<9~PmIPj)*2pze#WNj{_3|T*xzI!++ttHMUWsvfujP$J~ zK~h?Xly4AD5vIbsnC#Ksi&aT_+3ftpgjKwi7yR8Aba9~g#02TTm(3=|It(xus5v1& z4re|ExBp!Pqf51)CS?Nvf!tI3>v=$YJu;JCR!_$kr(`zF?+3AsX18fQM%}kIK>0G* zQu((gdeg3E`=;|R-j6=)wm~~Jq~%D{vrvirhJkh3l>1F!^PujilTVb-nX;>4Le+df zv}KK{0pIjj<+0d)HWq7BHymAgD4uE-0sSKA-J>gin93A-8NU_liPMe+g~#&*$BwQ1 zpR4@SrYMd}-d1aD!!&jjnCxMM%DGAES*M#~NFii*sy z$#SBZ>S(Nex**W#&Mq%kilZS-=-HvIi=`}gX3t`4i4nOWE1aZ>u42kqyZ*%f@#V3=PXhq&EUrTTKHYa1dAsm;B zkEoeEnjRa?#1LR@f{;g=^9o)02=Rw=5D}q_Ab=Dzv%d}{?x$g9FVm%0!sm%QV?_J`_C2ay*FkC0`#a3sD^CV4MCu!R1T@sut z__VdCf`?(4`hS2jIfa)PnC6TEB{NZaE7kc4xX0cl+GHVNxWAQ(Y0lcCUJ+lMNz+u4 zx_4P|df*SXG339uWUTZOAg(TS7Ai?)=*yAP4$p`%|zAi1&_oL~%|8G>^AK z#|0v#9i2*QJmb!toy68oq}!PMPv|p!7;l>8AA_;loxt5`aJ0civLj+TEj0YxXb19E{?iXw*Q-TcL1f9f{-N&=LDNrEM{U({guYT1u(~>yz$~1aa~X2{>G4PASiy zyCZQdBqUlmvsOa+1d0fCL9Dj~c0oe?rh4zP;>+{>rdCX%gZ73VXnQR8LL{@>4xvg| z>ln1Vw`~$3#Vgh9#~S9TFTUnWH#ZDJGocgL)4uewc#9qX3JZP1L-wvASR00It?q6S z8Zyq{_V#!?{PxwrtC?%iLJI9A>YP`hIlSnB70LA_E8{H_@s@Z?VIee6w%a@XT^*fx zyWiVpC({CUNZ5A`BZtnuVJK?=m^g4sgg#ToPl@`= z+;mFxUfGeg%Zsm+1B`mwBpm{>N3#y0kNG+eLbMq&Iv8|o5Sb{wlIXk!!MJZOalTCe zI58SUD0Qn%?lib)b5L$l%&kmrMW-6Xj)h0TrA0yDcuAf-AMZ|fFF_)lEwMu-=w1P& z1{8&Mb+QRC@h4#)0C9Y;D(x!a(?n`pXKJ4AEa3FP-1*q$V?d(3ry*9=yoB_D$bVp5(@r}1 zM@%#J07|NZjSGb#%}bCo6o%aGoKCl%!u#+}v82fG0lr|$w)9x zE#HaRkiy+KynH8Sqj2NUaxp3hhn7q5!J*|}DvB!`acCJW*V(I~T$9c%--$6Nzn6}) z%a3!--#2`KKSuJJK7lLhY03P3^YJ|M_vLr#WD^~dPBs}!6@8Y8lTCZskz=0XZ(G$D zt1gN@((Nm5=Qiz;C##=-TN4nw8-i9`-VGey#ssK`^V}uny6_9L_B+Fw`<*=d zvgb<__0#8;r>T>_UuROAc9&eJHeXR(_zanK-O{JdsCU}_V=dZV+QG787IIH$C9RP>bKvUN>xvPHkD~W z$l1@PY|{Ix?O#*Lf@m zb&nm2i@YF;W4QL5bn)tAPMBq=KRab#?lRzhi}jymu9W*2E4nv_N)-I3Se-7x{hvx@k_-r;bNvPia*je{Hp_ey4aP>}-dU?;ui-qE@It zPdPsPcWI+kt6}P>cq$BGQdj6 zvXwb%zj4|{`5pRTDqDR@K>Q6K3QICg*VFe`A50af-!x5UAoYKnrtQJhh|XL6Z&wiB$O{SVV0=EkjnTpLGgbDr!sxX&hMo;r~OxObsA4b z`RUN+N}=zLuKXT~$+xb@9pG-0w$~F^eIRG+38`9wKoN79#JP~X4$MCga(QjYMD}r2 z8ov)fC=&fYP;xVb9knn6ar1qokOp#vB;%GQRm~yhD*;C;Bp>i6Q50r0L|Loz5vxGF%VviOJ$tvmeTdWn_%dLwUh2i(&BAU6#F{)@N$5!rl%NXP zB!28LYeYFVU7}ukn=wbd?LUf>H*6EUQgPESPaY!VLtjYhf~hi40*4-Hr6uYwy& z7Z@FinSK^5)aNEd>Ndpac>xNu}kp+sB3-3?f4Tw5-mvswbo<^NF;G2dJINN?By+?9%!ts}_Z*>q$7!LTcIJsxs|rdwAi~MycngQd9AceTL|N zL1!2JMi!FqYiKC?jV$~leA1P0UV-0EnIcIs9b3=6Ja!(O^xG+u*FZ5;3BqgqQberj zyYPn7Mv;?(1hARBC-K`}yerm1(#-Zc9AmI;#j9iM2K*yV;oTa5zk*(1+aYy5%(n0n z>_WPa@!QOOcf&>VVPo;7M(dK=#Q%r6Hvx>Rs{Y5{n@nc1cG@hHG}Cq_X_K@~nkF+z zy0E0lOtv;#XOix1GD#-MWN(t`P9GrXSN)2h-!BgVg$hMbRz-p$NM(^lWK&S22>ujM z1VIIH`||&s`}Ua$EsOe((s}pXd(S=h+;h&o_uQ=`I5iz=fl>C3(p&Z=CoOzp1Kw)I zSGp;!bz)zrVPa~3aH=1Gc?szRs0;RuNRYeDsR6toJ-`qkL0)=dngsBZzl5+^5;x** zTCPOA`DDc+p+B*JJQo`i3rzUgZR$!0-@qTJEg*Zb-Ohe?uX&maIRo6bS{_RCa(*ui zW4mv>ZUjlrN(D#oi{nnK`2WLM-*(x~K3D+LDg}Pb|79r)6v11`j>}2Q+tgi(rF$zD zm}+IyoA5$Kf1=P2{L@35ijM&A3z!Cc3%@vJHKcZe@6z=Gjv35UkZvJjs82kUm_O`5 zx7@U#>~DPNeAnN|y_ahGrpz|28m(s0=l#W7K%lKtHEjc$WfL+JJ z4o<`JP2$6y!NeYoif&OAJ?-CSdY(vb+wrF$7`1nj`e?3ah)w* z_D89JJN|fWeVi!)@0eZxr)zhbOrJ@n5p5PueKf|5ZX0!@+eZE976EN^i-0z|MIbSM zN*djQBsRKjeCOI?qHppYi9U>O&!X_-T9^%NQ^fgy!NdoVO&6yTQ^44K z=P~Se`~(>CkTg3>+CYtp6%cH)GK;{SBVy=VLTKKR(SQn~b*W)4Pr7ad3T3l>OMtA#FH1(-I1 z!D&FGn#%6a_$N{|q2oOtYH#CqmtZ@4_B;%?I>h09h09F4OT>%!6=oGpVTyv8JNyoI z>+ReHUpk7U&U(MU-A`VI+)NIh2c&&uUt!6j-6cqLf-d61i>25y_cAg*rm|rp9UZ1gCtL{AcyKp_f!&czjE`9oVL2tq(lR@r+Fm$|;T$GRy1S88*xTC>abJk~t$&qgV&(`>m@xksBSdKZrGz z(IFTM$7CYC{%Yg4Ft%h-YVoE0g&tuGRS|-X7#I-joZ&Zn@r`>s@e0dO+3|&#XVB{4 zA8<$T*icz(&O(66f}NA#YR!S692+9v2k;}8zF9`mEE6aA*5YrVU4Dqx!+4%EXSkZY z;QuPqz-l%K6)&|{EfiDUsrapU%@gIB;{X1m;uTK>S@)jc`!Zfd7I1-Ek6+yLd4aZL z%C`-hq!#KNuvZ?0)27iy9f9Q57D|o)O(e3Be-g08;3IWii-Z!ua9SM}tdDJy*$h{9 zAG@p!GGV;pRTTKNvK zdyzX;{O;Nf>Efb`-O01#iSCS~wY46q4`yEYZ*1KN>a)QyoOC5Z&sE{E6-44Nk4M{V zqMXAP&$>6XP-yVL>5bhb5$s3H;?Bd}IWpiNTv%wi22UE|Tk;QP6{q4(2HFw!Vj@bw z))V_d9?ORt*j^^KyKI9)azv9jkZ5mPPIJ1NrMTwDr~C(rsdHc>)JqAtD;+N`AU77e zQBa*j-4HCNs9E=D4j)K+g zCFc~Jz;{PB$Nd7o*7LdZvB$Nc@SWmoz2rHgycE%a;!6v_=jSis+yn(D$cCVjZ+ z$m|%gQwGbEXsB9GhHLSB!1gBaHxd-m1t3WmehT%nMPM6};B3kCQac7BwLic-@&q4F zyAy$JCs)ldjrLF?8y*cx~MQ$yyb~<>+Gk}-RJSiUStwZ@P`Y;PhU`2 z+E%w5HjJ-R*UWGkuH`W5i4*r@tMyH}Uy{ zb>eN`4Xs#sB-wZ#7@i5lhU=VSOaB=Q#k9LZOKkugaX8z;eG{XhnVFFI(htwd6Sv(J zawQ_>utPlOu236&cB~bjxGQwFz}189Hs7Iw8$i__*xIwGu4mxlt-9ragUjp}77Ck; zx8z_~Uth3qD1^I6`}?Qhq76_Yoh2I1tpmaq-=4&0fhhNEtnHwh($1_FUy7C2XhSRQ zTbC^D!FtiS2kY<<9Lm@V!B+TNeB8cdM<5aZlKAdRPQ*T_=SAV$A^R>V@E-5nj$Jl` zuB{Ve!EsJa^aqmx4&U*1V@Js^0cQhs}79`<-&SeU07aE^O~T% zy6Ypv`PYV)=09seCfwa)f`*NFo*a<BmfzvBRCG+?MKF_FY-OKOHLk~I zx2)wC8X&T+kQ{S$B@mTbp4y%^KeD$*e3)RNH!0DCMxcN!G!Wi8Y0v5FreaieuGX$A zv0L9Tv0XQ)B3&_eHB8x2Sd3x5)@KfL;c~PD}a?x5C^#Q;)=1zT#vLqO_aQEH9*`sE1_GH zrqtADwf#grHr9u;ZQ#PWC!lIxqaLJ&C8Haf!yQJz3&wPxjia(j5yrhzX;+U*6nv zx#^%)EWf44E`Ix|-U z8S_R5U1~yQ-g8^ef^57-&F+ZU=)eI|S_{GUM7b~|PZd}Ew70nAptWe}gPAwi|MTc? z>$h&Ld7yxr=*}<5^E1bpTp)~GQr5|z^yZ3_-vkq{`DyP$qT!yO_Aa4c#N>(Z{R z0pUyd+5`9JulX`&jc?q~@O3<_&iACmOT@Fj)q_RJXL_?K`+q$np<#@;=b7GB1bqFO z-u&E{OGXY*Q*E({MbGxufy3cvdzYH_&7ZyK+1|5F5(6&zd2d#UDjPU!DL*JqY+#S( zVtr_%11m?;`A$&rTyKu}w>x@L%^TB~nZ%2Jj-5Ns*`5@!>$%>)qKp&2=*<+X@9deM zyh&cx^NBCMfJbyM{skzllLJ5bMX$$H%K{E@+4HE-wy>1!$S-@-#ewI0cbPh6$nNj- zxD~|ClfAZN)>OE3Uygs`J3WiV@X6j>(@q(Z``w;W(+(~BJn^?D(fk5lh?gm`iDfVJ zI%OGnp|>oX-K@gusy-ciRG<9L7kZ0Kdl<^~rfwNEYLP8A{1T{pWC*A)5zgdlaj#a` z4tdz%=&h$4r zpi1(@?HpS(G}a@g}dN;~kogE95gBPyA+2F{{`&dlsji$qk0NM(l>b zKcuounU_;E(_;z9^f*m?5g91vy>Ip`p5X)S8On87} z2tV!P-o3Y;>$y|T4i+=!VLHxefAM}FckW%VPA8)9TYq7VbFGnVad55C!IVE+ofVbc zTh`RJ`Rd#1>ivz~fv!3(B`Jx(?cVy@wwBtuZv4lktV}b&y1ewZuxzeGn5&%G^KOT* znOTF*WwWSR6`R#@8aC?<`==HdiVZZkV3roghV9o(LFS^BUhdqn`!V+OF>`&pC^aVp z<&d0=S+|2MAX~Rl%|6K1ZAga9W!=W)cvv?N1Y$xCGSfD$<&{m_K8--xv`M0`H*Lfo z`Bm(QJ~=aOQw-&L)3l6QGi@_6L^f>)z1$QtQv1DJgc+$rUT&H}M#J0;`xpvy_ateyJJn8ZzY*F_IH8&JA0|k{go7UJQuO#*~pB2MH(GxoK;D zPqi*^be=9SmLupw`;v8m9jkSLeLh`aN4+jEqmLO{sEawrr3jInLf($1VT6e=` zDufeC=i@a%{{Qj-BWmF}3&73T=KnHmXS2ZaKyu=la9;3c*4N53Iyd z6(5GCxPXuTxlST5-*hR6BKm%7pfBHK&B5f#w{jjKRVX7g^0y`5BoXw0z9w+AQB9Cc zt%X(i0_K5oRZw+!o|OAEJkK~PCR=~#(tg24&A1+2mR5|zUxoo6OcEhVm6GZLhRm~>G?xDy;j*GsIQbOl)D zKmb?>$+Enrd!2V|-Db$(f$(rrJ|uUtQ##p;VP`njFPX9)-Xz#kW=h2kd-g0HXut`- z4D5I~7?!*mUaNFi=YHIt6SiN3m;+(ePlsV(gRj`~Wx7sMb2PMC0-ykHtSbDQh>aBV zhKA9NCEoVjjvTs`veqkKKxxZ5BQF`l2Egh7>&ZH!T0Hv~I~zhk9&cG1&gYMIw~CbFez(JqFHpDqka^j z9QA8XlBeX-QNQLS*|SAQ{iJl#Q9tQhJLxBd<&%DRd;UAwJa<#Wc&#X@y!Oa8kGc_k^M+)(cBZXM(XvVrc zdEu;Qo1)qo%?~GnT+8Pzc&CL)XS+!crMmB3K|Er|3Y7rPA9muxrM)X4+tT?%%YS3z zUf1#LS*#Ac-6uMKus&(_?a#O~_|Cl$g2UlG8EawVFGe%?L6CJmjv30nUo1>P2$eOe zdfpMtSZu~xY*7(RB}?NjuX3*{ufYG&ITZ53a;LcK#;S!WEYx3xyBfqxZmg;h|506> zYD7E4E^meL#zkGpDBdG#u{TftL1J|3p$LxNKWaakNKbmhxP#b2%| zeyn}Md;Rs3&WVA6(eQW(rb>R^`>{m3^7$vTJ#dK({<|6bbM4k|VL58Ti-jmru4b?eA-`O%01%hr{;wV22Nf^^05k!^ZWhLt(aFwLh$1uR0W_MM11rF-Az6sMdep zy(m=(WbFW_XDmMR=b&ys@58}DaNF7gUln{cGnVLnnARGe!cin|{=qu?F7m#Oc&VY$ zwv!2J=z-LHIJGR#nyp7AcbbBze!4F>Nv@e+O3twAsY<7JC^Q95c3>+7ds$fXw9K%> zbka$<8a-GXy={wwR8^M(%Oa{q&sfyAXvsHnGx;aWUgvf3q}gyLvQdUiRJ{*xYVh!-H^$vHNbas7FWg-V*bxa1 z%ps+PMh{D`h zYLlG)&^~`I&iG7>g%6?msQ5(5gM~I1UwU+Xra;rVkXPS2%z=i@@x#%;M@_#((qPt7 zOpI%3w8#E74O8#kMSgDb#UTax*1F&f=lS2KEF&qD0>4gRzBMTTZyJknvvhA*mR+r; zd&DZa-K2zY&m|Gv&$83BBvfMB?OU9QjH_b#?OW`^ceti1J8u2E(oAmbCRCpM-rJI8 zH?{&e2Yz0PRt~U`w)`W38}QnnF^m~rm3F;Qu?mSAKY zQ*QWnu#VD?UvbIpTav`b@K3oa^xw$ekx%$9;hKi?kJQ;4=u~UdF!AK^dCL-%Rf*ZL z%iZVm*m%PJ+VjO@-*WGs{l}H=KUuMPw#h}CXICNaDYR!LjUljk7F%>&Q9EZpX}4~} zD@Y9qSjcp=Ch?6W*q37=Ys*LMkZFv-`E$bT1MmAy@tZIvwc%gagXuUAbSctPW~hOq zAqhFHr3pp$tw^!k<_M;gK1BaRNEo8f^QAjVI}oZ3Q|P_YGfQ!9mak`_zm@)X=_l+~ zjFSztBoq~5myj*5i1+%O;))B+qe-^B(s?X&<%Qdw{TYua7SRQK>Yo$4Bu1s@KNcbd3Eq#e zZMYOi4+!288l;VAZ1AhZzn*A_r)_0|F~ys@6rDIFG-1g9h%OeT^cx~y(nZ!zjl~rH z6N^?j;@O_I^)$N1%K;MkPvAaIRMLsZBe4A=GzIjFPUecA^%t)caFGdCb#)7wI}^Gc z*dWYfD+Bi<@N5Xb=$$S&glFxr9FRK?vgM7i_C$jMHilOxD?{j>%U~lRlz8iFb^ig} zQq@1PdURs2Y!YS-kKiqSdO3+~-SWlH?ELw~^n4XHSDmyJzG?m_nyYpAApa8-d29?@ zwooh#(+Dqv#}%;WWz%;FjEf zC`|e5Ff#=eAHClFZDA4-&6We{I}zIpG)FK9LeH^cAs;f4AYdxjjobH!*iZ}izihNj z;)FcT3F7D}23p;$`>aKSkOgi=%5KYIh#l@(Z?-rK`@;hR;l9Wy3_Wrp1+rs+5;8fU zAdLy!kg&pub7TSBL_6I*IuWGTJaw3`BSOI>MH-RNY8D~U;gAkC8IWL~i-JUsRj_~% z!Gv81j_tSurkg!bF$uv@>H$xIl5t=(I5<5NoQ7z~)u0SCMv@+olPaF4WsskKQ5V@dfAy$$Z z@tU#QnXt{v1xx`ReK>pXcoxHb>n#??FpNG-Kc42mq+y$Pm1&z7*3VRkbF}rB;$t!0 z%ZF*%XnGz({1M&>m8+i2kVDJy9xk50MxRcZ$iIRhQaN_=&RRUNgrWRfSNpS)6sY*g ztNaC8=+>+J`74z;-r2OtI~wWjZjDTb`#8J|S!%{Oqvd*LB>Yn0*DN&{hA zj`>|0uA|5N`578v?R}x(cuTN1iWQHc3@y)}kNKBrA=g*+Y})u${~|4J{Hy-O^EK?9 z5j@Wa8h;@! zuT@$b*X5J^RlHA*hp*9B<8?!5!L@!IbyTr!j!evi-lufl*%_W04b5E`5=;fdhkSM-y`qB+Gvrwg$-8cMmf9${W*PvJDu+AhK6kr2ofib^`u3Fn4=Bu2H@iCg#rnNWT-|-x z$`m=0PI~}vN2+g9H;AeLXl+)mTE2wGc0sk0l`W zF}~N6hfiKuiSOx^c>)DmQ{iD8BM&1?8>PQXNpHQ1zm%nKPGvtxY5gx=lu;-kI8A{? zP9m(dT*Vt8t*OWOW`~?cE~%6@wxT3qIi6i-q)Aye+8sNJ0RZ8xRrs|oflIix3NGPe zdHCgPGZ~(ZS}JJn=nbLsMBgTA&JD2 zzm^i4F^U%wMC6Bow{Uo~DOfnfDj8 zunX^WW%{ddJqVw09iwv;BPPl#<@AN@bkZ6$l4B-hDr7?ze2M3M&F$!IauL~(*v@>r zbs|C1047G(PbOSW?cZm2bQV*sFn6$iEdkOmONU6YkPenQbfNBqAw(F%%<5>(z2gqI zXcG2A8w%?3!$`6My>Lq(^frk*kB%Bp7f@j5^Bp#tafhkKoU^>VyLo(OY61`9IN3+p z#NZ$W)c;9_RL4PzTwn8=Z+h!Yzd z;iI$e3e|!>3nst4!5JmW7&E?4E(2F-=@=u`FPciu3AjwCLZ*aP2WND&E2ZfojAR%h z=Ac4jn0U!6HSm6Dd}^M?MY;V75%G9sOd-*Ox)a|Gtde0y>R3sX6dfeXO5B;J$_)dt zSD{PKDMN(JASt7PRv^Hks!(XA+ej%ye7SvVjL_(cmN;W1Kq^PoD#D>dp|-fVVAt|2 zK_VWzey0xNpxDS;u6ouKxXDU#|`7o4L^YA1c9fs@gZ zMk-=sqsRd@LbTbEC~rXX-~in?2H?apxw+yPlIXY($|ylafHzg&&veAnB{7cpEYl^G zO|>Rq45MP32}yFCGE6G7pvvFS9PpB7tWsy+lqgeb{XxHo69 zF&qhuMbNJi!T1;)4b5R0qGM%2LHoxvmdxsp#1VMK~I?;J_l_ep3y-pmUNixq*5hP8vz4@52H69P;I)%oj5p!6A1kv zXkB;XRB&JDAWq?`_1E_!y7+%JduRwCiJ*Z*Ba{AxJQCPgQKDdLa0)j?MeyGA$7plo z_OzPl2y-gBUUqbpeaxH@B;lK*({`47n4qnxTmznXx@*Hz1L4qUKd$x()9qP`bm)a= z?o_hLF<2Zy8kEPw9c6z!-Jk;2@_kiJN3O)EmQZh~KeSIFR8uuMqARwaQnDD!C#BV5 z<{(0`MPluhOEQIcm5S4ae=vrfKEKwf&86p>jwr)eSU(h&$Ui*>enkH1*{UA~+wwA1 ziWIJ5gueIWh8!{(bMx%Oi{j~Wwoo=$?=Ol9ss9!(&ZWL$-4#o+1kkG=!Nw86xC!E^ ztIQ)wg^da_Cs$H+Q*5#JiY3`-Kx+0lG->Lok2Lhg(K(Go#Ky+a)O3TVK)m-t=aT<_ zO-v+;{O9gVS>q5r4d87LHgKt=3h&LX{eGLm47i6dnO zAyYciR-Ae52u)0m(ip=d-rC@|XDfY^!E&)Eb#V5+s(6YK#`~KoaFPb6db%V=5mfjH z6T8zMph^V9^_;2o*Rv+pu_kjz7h$j%M*o;$1h2~yk4=&epru)lLmbh_l(-~?l@`>@ zmkc-1K@t-$y#bSf4BQtU$F(Uw`E6%543G}9)Jsq8#NAXL>lRYA_5=YM-L4Z79(@R&d=SSOYb?!sB@3EC!9OmJ$YjNl z6XrcoDrzWO0U8BVgPyLOXdOOks00*24GX#@z1V2YwyS-0(`JJ*>v6K4U*CJ{5b8z+ zdQ?6^T_TL>iWRe?(5yHf25;#AO9+aCN-jfW_by)jMug8Ptj3hxFTiG%IePFpiFr z%Rte)7zQ%4B^Z{om9(dpD`$BX>j)(gWgT2qjE*+z_!Aq;R1{-rU5tT7eT1=*jWKE? z$Bv0(sg(GkB8W51(&7x%5Not3BR$b^b5Nw~2vz0@*rFzB3I;3xzFCD-J|+{A4?2zo zQz_ID_%BdZL7u4SB+kf9gSN(>dpCg~rKcf+#FK^y-!#^!gnet98Nh6f2IDRd1iOJgM?cn_^0Rf4r)a z;dK`5=!i$QzN4RuY^tro2m_a8Hn0^KBcs(xsBR7_6LE^VP|N8nYA7%|(pYG0Y^xF)DD?Wbxk{m(b@NuSak|609=1##PT?QjzD2V8avKk9Cot3#Gk@cSyE&hG%2VIar z{E%de9&MRXM9XM6=*=H3PG#HN`ll!+_$Kt~Hsk4p<@Ci$BU5E%%perX8BZrszDHNS ztc!CNt(Ye9^Vcs~NbPYcz~8GNq4#jmVLZ#Yz<;PGW_YC59tf zR19OZC?gHT9(`P_p;Gr_nQ0%XxZs8*i-}F%;COH}zUUaDPR$-wq>PlQWyCgJie}6u zdQ>5aQ?w!gjNTZ&K!~I~#=;GmVhNDTS7irG$-$s~Qr=DiTVc?ik5997f(`!YI5)np zMA=HKgX{Nps;kGS8*xoXu*$v|iJDu-bd)H}(&oJ~OOL# zDT<9hwQlM17;UC;sGXvnJs@kth)NM$C?E5e3EH(?-K|3ZLY^VO>wgcKTeC`Ts%LHaFKk;KG)=#loO+ zs(Prk{8)uf;x409u|FS}aY_s6o9)!%7Q;8q{z!rpN2XL=jT85gxhAdPsX}-f@}|&f zP`lF?xG280sw;>(8jN;M$JO^A;f~`-&3Bx1$S2N1gr19WqGd)J_6Dn)4P_lSDv5q| z(ZIHOnunJ3RHo_UVb`g-6~D(MFc9spahhmq>)L{u`-WjJnGUP3@~u3 ziH%&6yKv3SN~SBC7KuA;!F}2!S1OGfUjplFf7oyB#kToKBfo_cyz>ICSqmeUnwFae>A)%8DXU8 z#o^z;5XqT$-b2_8&)%FD6luAGe?+F+Vg~l>}u8gjQ?df4i7;dxarfe=oFq#>5#gc(QMJwZ28G($Ck+!%!kBUMfKrb}}k(xu3q!>2D zvn*7Qpm!W-0}!=1EYsr_xjrnj0c0?sM)5F2okBSDv?!+(bsW~b@5T|gQ7|;Z^t>>z z{dCx&U*XfzE7D1m0)ueI;m}7jvcgB`d(;-0Yjs4YM>3T$yuv=m4<$Qsd8GkQHJx-; zR7jm2PRV1ZZK!`Lh_n9ys-bwg6({-wh?Owm zm0p>5T1O+${W%)z6ar%Gml9#5j08@LQAzs%awxhVSz;GZ7v{p3&e1C^s%K@~1hMSY z?mPg~^ma~4${I`otK@R?4K@bUi{+0j$^8!v4X})k>v}@ty#nqP==P4mpMf1>_*K}V z@9hi`GCNcRl;6;hz$4>ks12J#qvOW+33EHQqY@L1l4R-7$8-g{I0IEAExI^W!rE1r zkReuWwy1okGi}=u7Lld$8MJr`oV*Ul3YKtSxx?bu7i(US2HqgOrh+Wjo z#;C|qksq3UM17QgPK-O^A7?^caP(g$P-10VGN{fe!(RDO>j(mI_4Qtr|iZcvcqTJ{P z+8Ak4t-HJ|XABQzcnkw&cr5$W2w5`8=ok!+Zq%o1P&|x4g4v~>sMGUE5C5QIDaeB` zeZ^VJ8Vk?~#2hNcR9cUPNIo_51hmJ8=id7=PuG70X!35@Tt6zSIGuOXRW)uJb)*^- zYoOc^OKN3o{W#HJr7{mT$biDj=o(1uWZR2lB#}W4^pIA{TalxeRAum7*jZ5}f5x+r(Q&dgsz`M70S{posxY}@143OZ$Z={^G@2LzRSVD=C8JtNELGDf zwUOQUQc$UpR2;EShU>_dnm~pd8(5cNPBLORD~5-brwPPW#j&AKVdO`2Y&1&@Brjbdu5~DZfWP7%9q5NI^2Of zBDVrmM*g4S&SA6}=QN;*Mxy3(a!StV(>GdvAd^XOe^?TLA{t3F34*fUSd%7=1dp2A z^I=H4JCh;Dw$vadk??7U?efp}X8SiSrBGR`KUQ z_G}Sbtj4PJpO7TdRZ{Z?2ItZwgc9tyQ|ro5IMvRnB}IWZ5mnobK-YCh%@U zf;T@CJp0q<@#?7=Jj8;lV6p@5l#QSCh(Zip>Yf+K4-{z8;%!&?Gq-4A(kt@bVX3;5}Y-0&K1r{A8o_M!4 zQ;;)bJzm;ar9AMUD_x6=Q!RCPAC2Cr#Kg(O{F%&epG|K3SZ?Qk)t|+lE|JNTGSK>2 zbTQ(wzqZ;H7AUj#=tNHW;(}74ACPzxQ5iitA5%Av7M-1WEC zy!A3}#j?j{R}5}UjCkwcTC-Z@{A^4Tlf-Fwl0z%n@DPUv7U%!HwP5z}J?;}JLJO2+ zIAQmK8YszgmvY=KcxsDMj^JtF;RI*h#LQS|q|7@e4& zj!YY2ktv+I)29-or%cK^rzR$c@X(Z2GWdZbzD7uRa4e{Y41}jby;FKf1KtoCoWQAI z9j3;K{)znt;##oXPD&w2)ocy*4XxGZk>5zrgW5t^Y%&zqJ~bGm%eZxAbqoc^XXqI% zts?&5p^2$gm_6!Y5t$yj`~WWAZ8Z>0kg<@V{((@4-h0%cks$QUrrKbEk%RkbBcUEN zGZn@~zXnib5_h&v&v5K@X1T4q#<$Wb2?M&w%vfkV;`Zn>cg@Vu`z{(tyzRA3+2R}B z$1SrhPq@nxgmws3ooUa4UI^9gmvh`%vgNIZ<*hS8s3PP2cng$akYV1T@S&+7y*zrH zQ$SPLUm%e!Lww=Ez>q$PFETAPq?`akQ-6SC9lH$alH{mNCr(OQEQAHdCPt)+$iRm1 zz>J}UhS7t)20|N%_;r#-D48ZAQ~F$j$=Mhjl_XV8(ilObgt6U9SHGr6uf%IP4RqUB z-R9|unTZ2oL#B-=YdmD22yaY|8xRQu@fbjxy5%P@bmg~BOifIOX7nVrqH;5Mnnw?7 z!$D9(7;nWH!~0<(DkKqMRYCpRLJU|Pn{Z7m$iU3@NleFdRBn!hLgNASnR=i`TM01>gk}tcLp3^OJ0NpBFd6I%;XoN)os|rg3Ws4aV4n%Xa)k`C7Kls@ zAiF*pd-sTAcg@L|I`@Z1@tUB4$z9`^c8yl*Gj?@`#_0M-UA?i!gKN2UfGrbKGob@| z2rhtbgo;FgMkfSW|79As250)na_NRfo1mb9`}nTnL};iTPn>;{#+TflsfR~jI`89AxboL!2yK^NYC`Pnr=E5vCJ38BaYMwHFCxzkS99Dsh{7ZA z1%=kb7_&AONN=H8%kfI?XbxUNFW~d>GM!~FXZ7Q0*xh(6hk?|o21POEM(n`r7)X>7 z;F+Gr0z2Nq(=p4BqJ^QHEyY6smh!*g|^ zat@~O`^9^|=e7&@YH`FR0`ED2h{2S%iKf96mIm!_AaoKh zJvp~+!#ldCPPrpqN(ZP$#Y5cN`1heYDu?&3bMs8$4Dre5-NWKTueqPf#Y<%Lit-uhDd{OL{NbW^1`_Z6y*rX9eb&D2UN+CQ zT!{)ztvDf@q*Ubp;4Yts4^)l~HGx8W>ksbT!h^Zn zz_v|R!Q=tkx(hh&hj_ZtnvOSQ=~*wlhuT$aU-V!ulAv`r;XNd-|2aG?3mF|6rWdEI zpMWkSEh#NB*tm)0IUew`@xzsfwcN;Azs{X6B2;J>@Ko7l_+oE)Arha6$9qd$?TS1? z#V|`RQW+tbZsHXybCGo$kH$44EyCOJ&{msSpUDWJIcgg(B3+^V7`N5S3ELgW*02J( z(6(l~Bf5-}zJyljY=TO-Yn&?9ylOp59@$mES+BjWP~*Y zFtM}7v6UD|<)c-6V2lq?(r!pVc7pY8^D2HYV&iD;)S?6)7t>^N5ghf z)WLj$r!hEk&;!{=!-!Y7-r+OUNI<(Axn5&EjOPet>DLrWv3;tp&8<_iV(icq!-hc% z3bH-`+!KUb)oFp${AOrkO=+%9g-L&6N?aLFi`AY`KN#9UJ>f|Af^Wd2|Lv_Q z1~drFCj800(w_Pb&voC&kKe)XJWG7*<%DWsNsl!8dVF1C@jGl(HulNsT#&(W|Fa=; zxBBr9P{(nX4t%Cg1;u`R@I-=C483W|y_K=x@ehVmD^L4++C;cMyM068r|AAT?)&%i zk7=;zuK*>~fWL+eaomedwYRE-m=jWS6F;32bQM5Oxu9uBk15eaWdu#n;gdHJW2A2r zhsQR#BjWc{JUN;Di3NW~)W*bui}B;L7mV`at+#k`?nw14Ig{F<_db5l9eiJ@+zx$G zJ4{{p%Rg!D@DoCa#$LZ&`}z}JDdo7Qx302jUs|m8rPV6lmsV4jLx?IwL-WDE)W(ec zh==SrRj1{KJXX+L(3?)hg-a;$y30)#oL-Zxq|!T0@HjS97(G?ho&a>yP9W0 zW1Rb>En!|qWX4syKX_09%`>OBPV5W0;4Na#5+q8T#~^hW4a%TYOG+munJ#*;opax9 zO=ThWJUg(aC#Atp8XO48@h9gA$>}mgNt2qA(t_886%47VETqI*(h@gD#wLL)Dc$PD zD@=VuC}v(N=HS!7Ix#VVsAO9beYv_QUF!T47Vwcf3nVN^^I~5?Xv(!E9NN#J{wW#B zTZ5w`tNm~2AXvn1lCS_SADv=;3+a3swhWch)ZJ`4*E*wjnQ8?tV=gCnW zQ+PcSBpIS@IT)JK+u5$Iq2MGuf9{j>mglC+#Rd8%CPM&aEzFc5Ex2uK$`xQUVYfJr zSHRI|7j5+9XP_F3(y$MAd@$sy9UGhA+~SFio-9N^v(d9;vHN7MGpDw1CcF<5T~`z4 z%`-!;0H*pOlqoLQRdDy>iNBTFT}zELiGN-nz-Nu-bih zQR?PMxNpQo4mh+&u^encWl^Qf4%mn@!q}pB5 z>d9X3er$tMZ;G2@!e_0ubOhL#-u7;_JF}eEUi^vb|EcE57Z7gvg z_(A4)ge%#dodu`=bcoatk017p9BCluOv%Xw{CpO{^ohj)m|{vM3&2#r3RJ&& z9It)!BQo8bMoO+|eaXpriLe90zL2W*KwwEGJ!eV}1XgAPB$X|>J1JGt9XU2VS+)Uk z{K=G*WKwY@b1GARB~sD%l9QJ7L|+6RXnf5}Y!OJ)OHL-)tfbsfbPzE=nZB8xm)yM| zRZ?@NKbpL9m$g&=T zNx5kfN=b_WSSSOS5_2Wuv35_^#*&knjtp$gkW~|c!9=3u?nSAA{b4wqm@=b=ixUGw z6EmPKdr20)_BZ3k54gyu4sH#P!!Hkf@3nifn@dhEbmdY!(7@$9!>&}BR??iz$X`H_ zl6I@m1qJg7+Bgv$Rg;RlJ3Nb;N={}hV>u)(S8_a7Xrl}*6N75{lc_~1Oy-!vqsfb< zAXE4f@kECwYbCI)SRiqwDLkVnX~{|3%6SqLdr_FaqcRhy4C0h?- zj)o?+EX5ZIjL#}(2d~QRL1f?EU8QbRm!?#vKF0^q*>M{%3rBxq|`+YN-cwAwlnA1 zHo*pmraGo32EuS^mWcU&PgWiz;Os0#&6&K+Oh_^#w);JcI+1mQ%udCOl$=z}NXcV$ zHpz-;;(NC@m0GC$MLX7y9A7h8r-(8iEmEx`K2%zVMY9b=VoS#IyLa6UWbYejY3o)fcw9QfqZNlCb zrLO@j!#X^_Ei%@DezA5M9dj6~69CUk8cCDE9ivzhquj}3=`yG_JRT7wV9JC742%Y+ zhq%>`tV$i9r(~r&pZY0tYTCug0IHPEOTQ!yec}X+vqF6OysI(V7yxlYSkYia*p8)1 z98f{F`Cmgb4jBeQCC*{p@Je09<;^6cQ_1{tpyDC`3qK9K5+$>`8BP>GDXYsI@C6C5r zsicT>=ZmRoA*_Pwu9q|jt7CfpuQUj&W_rQ@(;$9^XX&dNMCf9mWxv%xTL_X-_~v}I zu#Sm+GUv03-qMI8u)_MR;y)TASXTr@*~|ZwX+R|PN{C5Wu^>rnf7EYfp(HuAQy4@O z5%WrlWyw)Nsij59U6U>~oW5##D$$@plFL?Eo5wNgW5Q=$y)3b5Vk|`HlFQ4iJ`6jt zaDkAeVyU@)T#)42-9vIs>Qhc}sh*$`X3dyd*{g(E>!nupDPh)Tsnz{Tm^D@EnvfE% zV))h$DB)@rUN>RAC|$HnMvMom$iN`tUS~7q}uOWWEFpIRZ?BLV8P~0EYT1{ zycy*2e(Hu@&>3wqjVR8>1Y9UdGH^}9BO4vOz>^(2`(O2p)Co&O6sU&G}{{ z+dXOX#ks}31aPMJl$exIiDiFb)jcK`ugUmry#k-%niX$vgIuCyjv3r z#PTnjvunfBjCtBV>1Z*dOzx_$zuqEE54-q|qyX1o4shkW)6;wtDihje*Zj=b#}!;&!tJiZWPt!-CBGR7(PP#5HEfZ}^wmUgE>9~NG+qN93?3RD>)~n%< zuCFHFa@TU9$od+089pfOF>cH9JbY_@@)!^bK8_T2%ax#VX84ONhg7V!kcZ=%eG~4; zuwz>>k|@+6B|i5JlNXeVVF@`wsu%gX8A$ens^kL=@)+s=i(C%!D9BH<>Sl1k?7O)J zKjhKI>YI2xy~;NG;CY@!rd$p_ENa_x6Y2ns;F#wU1$gcr zPnLM-fai+g`f8Paj@tvt3Rm|mxD&9nYdLNJn5`b}ilcx!%dj5%9{#|A3KXS??>cHw!UWCxtbAb!a@>JnFK1?Dw4S26P{f0(Y>De z;sd)q-yw=;LFH#m3GIV};(v!c?%6Ygo};`Hte$`okA<%lFL~O%T`V8<9H5o3)Y(O!^@xe$<0H`Ohc5Q~W#a^De5lx)@)~M<`5KOE zq8cyZ4(9>NZw|wqX_h~&>*4P_R9u>3H%~fS%eepoc1r_CAqt3lF9c5?yu@?1xcp|% zJmDN*-UC-Lx!E3D%W>pDJ;pW6_tC=1F>Y72k5*2wQthC1FxeNp$5BL{*&3v)L6Tee zC)qcxt8n{=wba}>Gc2H6$sH`_g4LABhQx340&)ba?be5|Ir7Mi4U4yL<3Db&7-bU? z`#g5bE1bIOtHRmp?E8^%XxMID#vkI23=?xwsRA)nAkB6gmW1ENe^jJIl0=bI`~eT6 zzhti3PC8xiRSw%VS2S$wQLwa8)2-~*+WVPL_|<;~{INE+e78NjeSGwwi@AezzLWBk z8T16 z8_@UEjvP(5qwASDlj9a54!eJ+t1meJ3a)WP-u_!Vf^V#s<#B*EDbV^6d}GDSx(B_H z4^V93psZ$oB4S3*W8=KuF9JK_?AFh5S8xqTW8*do#b4x*w*k<{(f@e8$oVxn=UBvg zCtw?k3+-lpGGcw06Xn2O;GBwB7oY=UIeshW7>`*028EV#)Q7F9Sf7;wwP7^fYv+$tnESGrRzV%h&OS{)) ziWgqzDHDHxt!H^gcz`X{!%(d_EUoE_KmNVjAW(rJWWYZiZ(RGIU-+gUc0efQio^1KHe6q z4(gEOEDVTUZ4)y?K;*~z8*({BKj^5DN!vuBZBO+IP^8x;6&K z*#3iQ7nfIv^rR}AAr&@m7@I79j+Pl#HdzGaoioGoCX2_>*BmM;gb=_U7nQa`RX$Cs za;OM+NL3!^tPgNd6$W4%XecX__B!kYpa2zybjOj#ZW+SwF!o}sRpq_(R!>{H(1MyA znhB*;K*+ak;J7^0gl!0zhZ;4T5LaAWtQjb7U&0J>_|vzW@{#gElqW*on_z5Sxd36raQ~RVPW{O%nHk9E=w0Krma5>UOP8bEg)4zIc5Dj&-G>5zsy+= zAZwqL^_R8^%a9lD6ATi0G&QBE)liq;6*16%W$5=6Cn4x#2!0oZpf4JM+8|iw^rwsOT~%xsYa+#o z!d6Jf!I@1-)sTvNHpI%)!I|X-dEz>ep?1xIwBJFM&iy*at;H{vtJf4_utooD&M34t zLJKx$P=8TP?YlVxIjDUbA=LG2z_iU7*oS~@hXp9sn@D|FQLO!PA9T1t?t@-NGQ#q7PEzYZ5V-HYt zfT**ZMSNd^&(Z|Dc;YcvCgW7g4pjU=-L~R0z^N6r9M_DtvaW=IKTrn)Kj~bB4ku)q z&(!eq0NP0rDWZf$$ohGpj=)k6cHZ5dVzPOp0(sVQn&`wuBdoN3kH=OiVS1(1J%c!4BGTJO z(6cIZBkV_*5s&Y4s&A~J5GAca3_y*=J{*RrFaAaiaw37Gyw}r~+b4BZY~I8HBiexdiNp7LT9Po6>PIU@ShrRllG6U=%1^zaO`w!{ z(@b&!Wo$6BpYq*~yshHI2~VzxD;GDM@GRtai91esR%5#KnG>ER;;-)WIK`?TcnYcO z96%W}tc)dtQW-5*zL_7}b?y@H{DEhEc00d2V*%?c*@A<#YAC*NpVSWz0ok;KEG!{w zKl(y-EV6R(g8MxMS>-2fJXUt6;RwYR-WgZ>IC|ah-tVbJultYtJ!kR)*F%DOKi_Mg zhNRvG9oUJA+Bl)8$Qpo#3PrH$$GGV_$W)PG{%r)Y`L}?64tqzDT5SmI7%C#Rvo-)X zhEd$qnKZ+rKTb@oHRIX%3Z$X%;3}NQM+- z+*_rMs;<9e+pTXYXta`MA}lN1DWSxhkrx>$|IJh!%8`+%IG9xt(;oA9W}p1AXE!hW z6&q!@jqEYgC~*+~VgC`g=&uXyw(1i$M4VOnUg$pj+CvvDdWm+m@481908sJ z7vaAP@SpVv=NPsYl_r)ZV|Oz4^I=|a23mZ;K^uDW@XI>!8hU?(M z=>HxnL*GT%Jrzo1eJJ|}^H%-|@hd;{f99u-q!PWUK=_q6z8%ep)cYuT2w8oC1(0Qx) zpVLOCaVy*~p>Nj!7b{y%fg0CAJtEj{HsrvKfJjGa6F76|HoNsv?tG~rbX|smSQh?4 z*t8tZ`hA|t!1nVIpEMPZ(CI}+vqbLqd70dEcmoy+=*h+2te%lefQN{}4mw8-!gJHE zkR44m4EU+2{yTcWzb$qdIC2Z0PksatkG=4^CP&Y#8i3hfBv!uMD!P7Kkz^X#CCE_%wLFRqqS z>?{UjINGt!QoN;4abigwl3=5Y2`&Y$76p)Z3KPriYl;)G!Ln~8<+B|B(qeR3OUqs{ zh5pBG{Vxbi`%>C0+_z>SzG#g1(=__RW+_K=Hk=P!+tRXUO$+%y<)(3F$2keEXHCW6 zecMtR`Rz?cMvRd76f4jF3Yb}9!fZy{wyBugmL>{7eQy$F)KD`zbf{lpsN17ZzxN)i z!*Ud3UCvW=%=C|?k~c4UI3Ly0b7?0OrG3r*G#=IOyouw^1Pd_uUQ-Am+Csy=9rCbm zhc@ink%27Aux|?uzIMpNzLuqhFn5=7ElXw30~___?JVf?0Che&!O~ACK zj+$=-g0a1h1S7nr?0*;Hn^gY^ihvS@*Q~VXW@G2@LVPB2JpY4)^~)?Y7}`@Ofz13f z$;b=S+lzzCVFyTJe($h@|Fcto{B$m5=8%730Sidx(8RtyP(O3c#mMyq{%ISw3^T)2 zgYO#tzHFVDdWv-pA!mRt09*meHV3~Vn9od@UPqZws?=0oSZS`!#peByXz_VS&e zeP(8NMhX~z>n!L;MriLE$83;%E3?&@ssa0TkUD9ih8N3N#!u9oJe+O~ofXSi0c9-5h%oL;|r^`X#cf3R!- z?xKmYvc8G2)%(LE;nm(Dy85?iA~G7r)LwFO)%N!nvz74W1-^D47}DsB7?`t|V8p^&v>l7|wRbhT{I#8(t+j28?Ac{Ms=PFbwS0)s zp_!4m-Mguy*}DmR28&yp8=HvHs8*YAyQ{gu1)54(1zT$ao%McKdxNX1jWVJ25y1-W z1YuwZk}`RytM&W0yXw09qVT;+yU^foZv_UB*4f-z?`mlGZ>{zFN?r9^>XEF%Rfifk zx3{^r*Vp>dvMLjrYPZz8yiLt5K0g@Xt!-%mLv|IkG&j`mDxlgE+XG#4tJjxpDQhoV z?+S#1Q+-3Ofr%+sJ+9MC$D3jJLkr6d-0a#4Y4J${-q}tvUeC%@Wm+q$xvjGvv^CbZ zc~K-dM6`KpL5#n?wzD4G+g0F&j}*c7ZBtv8MW#4#u;s?f#ZZp9^Xh=m78P zwnKJFqkzYcyixddb(;P5PbyzY7q9qLWs}%`nae)=mtR#LH;Y%iQu!tE8&|rz#P_ar zoh9D?YUQP~+kad6l4*9`?<;f7vmI|%HYf67@$$DTk0eb@(t>qxbT<2)%Ini-?=n~2 zW)Vgl+|*3nJR0D90=D)B^x&b(YPh{KHQd;YJtWp}lOvc!*V#j#bG@8Sa{;s6u`|7} z5FQ7<-kC%WJ*>@=71VJPHWO{@#JkAdpmOJqmwYAW6C( zBap;zwUxb=prLpTC@>9W5ety(OB6*G_eoSB4;hgGT|wvp*U!+C$p92MK%L>a8>niv zDx5l^Ow>Y7hQZcA)-raCLBllYqdXgEHU#8d5;cOtHi;Y-5uchanVJVNvyd?;)NH8L zQ`2QLP}60LriNjXsS(iS29oTS|KnCKgdhMToVRE50h|3glVdWGJ}lRnD#~?Ja36ZH zX?yPi_$#=--okNTgV*+#;9I9f1Q!;e z?Br43g)R&$CuxONH{8G*)8rxGa{huN%zL*n4W2(ri}O)>h#x~1d2NU#Axs#!o=?BI z^Vqr)N=NtTNXJPg)v=$ZD_vS-60}7oh6pavjcIlZj!ZMEzN)9{GEl`vmq?j!XH+fZ z^bnaU8gWt*B1S^Dj_=Ji3>U%F$(fyer3o5w)3-S8Q;-!KYRv7*M1-w+^Duo);LFdx z#_<(kU!(ZyWM9Mh>SA9*GvLJ*`dq~g(D!5pzKhNHN7s^rD0FDeu8emfFrDA#xaU!( zRd|lOLK=+>VU(#j&B?zwIO3?Y#zrBgx6TL8+Th5N$A0vqv+WtK2~#%aDUC~ko!ec9 zXrvifQ)qpTJOXPdY@Ow9zo`ZR@_^8pz70H5x_*>ocUYd_2m^DK$`~M|1DNrALcAn= zJX4%bt@@|1jcCtqH=O~R?}nZhk`ylE4s-kHK#z?(xCYXPZyF;ZKsqy&4V8wYRklkt z+`d8;3=9MF^ywr+V*LUz9;9i?F{Jh>ND?`L&S=}Mw@`GURAAvGeI6Nyi=LI$6~8Q| zeN>iGc$ZBsYcVe))0Nf5OcG6jQNFI}Xaq`s-phDtgzDSo-+_Dk!eYlieYxTvzSEW{ z)_lpgG@Uk8jz`A2`_Kzci#q`l|9FM(d~rwS8I|ITPu82ovzyOO7bnhLpPqrE^yA?% zwp-YBwyS&v4%A-U)|4e)`DI^|csSgfn&2ub5+`eGb8S&c#U)?y-6I~ZtxZqSV#GJU z;;W4T)?ekj+$xn5ntk~y-{!=W!P-4p(_umAK&bwa(e^9rt~mkEUSu(ARu7@|zg9aAx5UaV<1`MtaKX)$|{Y z4rCZsMHRM&rkCS-IM7IkkEKL7d@QFE`)=@^X;lJO-vIW8&Rw4~Ur*JUXSvG7V-I_> z#UEYg>zKXf>%JDge1}xFQr;2{xuS3t7>oslL!arU~D z+1t~rK50n`KEO{M<2Rov_MBK;EzIkEfTxMu-;du~cME;o@xrgxTtV`B#gadMQvDDK zlKjm_f2V%L9&l12Y8v&U!A|*m{y*Zr1U{dTx;Ihlt+M$ zri@=K_ciAK=!Y%t!KQp3B~8O0Ow8-R=Oz>X@gx9te9e`fF08$G!6p4z=xO+|aOIjV zp|>jIm6X0JY&WXPKt&fk!p z@p%6F^o%F+*V_%Z?~U7&n6QIh6I+*}=6{UxcP3{%lfTE5@#>u}!BlJFD==zYM!^I5W!J)+shCWGSpL}umJifhZ z!{`6`J2dW+>caBb~2(Fr4u)CawkH7hSJ@^cu8z(mxgd zMJ!uI8ZJ8`ikBY|M+9Ajs4ySlKnxWc;t41F5L;RSZS}G)-LU)kkK;xf78?$KJBQEL*Vr~Oh9a35vPhcMk1}OBU zX}g=A#3I@L-3wob1KIx-Oa#(majLMp5%YGSaCc+4o8{lH_Q3eW&VD{Y^rHEr_P#9O zz=&(f;W=1Iw}7(UjdV8$^^ii(R8+U7n(KtYCk&&H8rtPbo;f7d@mGIs@X@-wQ2OP6 zS;F!S8_XGyg&n%j{eAnz4T*o>{&m6}NZgV&yFl3RuO>WqCOwuNj!{XK?4)yX{_VHj zwtCxQc)gd_Aa(x}*bKJ+34_nlgRgx!di(+Wnk>SJh1Mh0w6!I!CCOs6VbA2%0d6z6 z!0`>zKHv6oWR4BfyEfBR!qrDGRwbLjg&$-zOLCfVyGv%C5F@_5t>qF7CyYf#n=ysm zd$=H(-Dh7mhn+f8W(svTRsU;__-5*rwZh^32XoLd6=-ea!}v`VS{n^-o6}1SZH+}3 zn6)-a12emDbic)e)t{sLX(8as6y&sE!;PBasKIb$t)*K?>=w$)mb{66@P6S4wx3;x zdC<1T?B;n{_(XrRf4($Z&2Il>^}JBUmg*nHCyb&Zwa{|#a(3p<`1H)UG09$B$!iy0 zOLp?l*B*Z>Emqr8| z5&;*QFn~CM$?~O1SRo#*hzcnzyI_5QH zgl_AuE>C3E#~r57;r{9mm~d)+r27BjDM9Fk1J!i~^G_EGmp@@Ra;srIyX(HCwW9H` zq={oYUj6z{Y3)FG^yn4sVdEd;jqCsZ{A&-%ot`o5)yKaeG~j7$p0^2MBW3}}Gn!I` z+m9g@yUOXFnN4-2H^9L~ZbEWYLiRYrh%AUs-5YO*?=<>}|^32X1ul}d``NhJqCk$8I zYFNt=RT;085G~&Fz~J*-c)^O3uTF_bU^#*66|D7x)jvx5KTHxmVK{axyW_s4^`f!i zNdwW6eZ*Vwe;nC|kL`PVYGg=$1ezEa-af9-+{*8u*)2 zXc?p@&SJD@813oiB`koejs4Pw$kXyHSsTp|3X z3N7h>g6n_VOhVl?54XArhG$IVqKdFmpM53ZIhVrv*I|FuNVatDAaO6xCj$0SL}LCa z(JElpK+S<83Z|>IIZg@nRMgnmar{Ld3spD`0t;{&0n(UD3oT8<2<_paT?p;vp-zOl zd1wnlULI;gsE3C()09;&1xtjD6mBd=7}HnYIU2SPc{H^IJkh_w`g$62D`IP==Dnt_6j7F8tgHT)L>6|Y-o|Vdn=a(An2@h|u`}`Ubr3Sn8mg=YJS}f_`{w?7-pshH)i}S!Z{v2d~{g-?Hx73)+Y^DUTZkUysN60 z(+Riqji&9AHh-G*+~>o?T&`>yGerl&Qx#|U!1rtR!Cg}SGW4lWR$pD8Tqo>$(y;S? z3`eMpT5;iS3H_2^3_8O-Z0w@OzfaHqM2Q;0_GtY3!`P=?YA9TKxF;SRqhk06tQ%Xe zHr!OD#))cBMXM%M#e-dXzOH8p>`N%Vp8j>g?72hl!$>T}qm1F@msQXq`) zN1w0|gDHeyX9(_Ch`$JW3h|3YqQ-(OWVOJbcN%hV&np&&gS54A*gFQdEEukO=$pI|jBbDUCuaMoVHB`5>_WH)$viyw=rQ2I=iK8=WzJf{_DgSpayOnAHi?~ z*Dyr`cNh&^gVex@)WRLswr~yUB7h%7q_%~VvnVZGI0ucL8+ZfPkd7>J0~gLO38z8Z zz%?ih91$;sp6IS^jd%2eiJfTHsPnZd+^qFPG;2Llv(}?DYdg`bu?OB-mTB$@Hy@$Y z-rAoS#DAyZP@=!F8or5d2YVF1IJc3{oAOj)Ykq+#2>ox($C3rE5)0Hkj*0%Q`G#i} zAR9D)B){g>962US1wu)_YjBn{h%H82^DT)B1=E8#A|&Ir;NwI|&Htn=UW%x!(%TI` zoRc7&HvH3I$-cA*QI;j3>!6=^mqUN*t9>9r+%Gptpb!5>AcsT#ON(j{wxF@2u{CxS zQG0}z=n}alI%>cqpv5L6+AuIQ)u0OQBgtS0aHy{4t;EGZp)DNEq(}DNhw6k5oW4~P zS;HhEFXS?wReCco$C!<3e5fvkpDPTV8m|3o+VU$w-L~h^K- z^@9BnT-~;D_Khstwam{-=O&Gl%R4DFgr0m~?XTmKzy!Xb@gIDswk=WoU$og9h7T+z z1)ahFx8Q%1M>vAWoR;?W8{1H6J;I^Vtx2E|?Ti#yhz_0)r;NWxn{%k8$4#?`O83q) zyns!cSyBLE%f1|axoZL0u0VJ|hActZaT|uY7UFjPICS@IwZE!eCXENTjrHMB9*%>L z20DHHco7x{M1nRi?jd`_lg3{9d`)8LW6#zWo2*kOA1Mxf%h1ER$`!VY}1HjT9ntv0g<3hK?QJpq6IeBE}l&1%KP(<9@w>LC#|JcJYMqa#6S z$wR)eJ!oUs7j-RW-~Ud9Im?QFQYHlW!U$fI1qvIx>v(M@rCFG4waIvxcW+bLQUz&g zrw=zV_4?>;8BQ96Gs3*pt_&Rh1rDA%M?$Wol`dND3nwpT50<&J#W&NBz@Xa4H< zydX zI6VrY{&+j>z6i5;dAvPY`~AguJ8fM%!ai7JTbhBKeVoXD#M^PQin2W)&pz^Yu0;fY zMtjg=ej`2yxBd=|@T-4=a&d^4Bxo|);p(K~%vnbJJmrJLyArp=YQNuoSNhs#%xUqB zZXMk^h?}M$%BwjGW~ph0;NobA^{mPKL1PZ?%<>~4U3YH0nv+x^Cu1WvTV@hy?68=B zVr28P^D=juzHhvRBtM6y>v(Dx7%=AGhO54=-a%Z0LJ#Bh$--P_G3O;fn6<4w-}ol) z(6Fz&!|y%p>k~|w2^6#ex1#qGKXaKK1 z4N3Uf&BZpWVO{8}#kTbZLpS^P3fnR=v5~O$@t}YUxC^?*Hm&N=;Q%=Vq?zCv~`u(zgxKc4;i787|tvD2 zu-x(md*6E=5dSNss)dRdk?FU%xNmMh_GYY5c+vAiB<%b{dmf`0k#Cv^M}-3qQKEUr zSO54w91#DrW$fo7G1Y(lt4~pPUby*Bx4Cq2v?ffEDtIq8m0@M|sqDi)Ltg;v-F40V zYMdHUp=wBlsv#AshT01V^PJCY`nLE4x__8e?VSIh8mY#qp>64uF7qR<1;60+tNne~ zjm3&np;uD|TD}~^h*J=je&g;RMu)_^fA|iU%&vDo|9cgz#%<;Ft^N6HKYx{biCxd- z-WDrPh4w9{;x>Op*zhv9*w}top!-ZU4)S;s-tAk*$S%Pk=sB1qYT; zmS2A0^2?v$S)NR^J)nkSL8luR#v(rOIv0Oy!7G_Ba^7q2SsheEkMX$E+kW!g=az`5$WcTZ!nE$?ZpC#hvBG^K1JxFH2C7vZ#@2W;ISl6D#gJ+$wH9 z7oY2(a-XZ&dvbbFKjtD8i(c4&$pFXkbjxdrQsjFWNBX~b1*_z%p(f7fPe1B(siAL^ zsCL-8dz+-YV+g9og)_VdQ6eWJToBFb%zW!a*waiW5S|O>yKA;mfw)6HUBrO91q1Fy z_^O3Hl;d~FU(yjL4Y;HG_WEIUE1%Rkj$Fd0LUaC6`=JGy>!gl7w$W4U=3y>Ze1vXF zuFGj=-#k{C6ndqjF2xi&u&ZuiiYWY|aBaP?X)^SWb*fX-x-`XCR+uoGh*5LdyX90)s(wUid-kyt>(>w zJ(s2m^3216eYu=wdsFTXDb3A-JwHp>&W_aBa_thvDR*Kqr}T1zeX|@n(3BfktfUxS zoa@QtDZXg1uai>@H&LYgp{6)xus553Xs|blGN@}=?tTgVI|h5B9C_K|T>pF}^Wfs# zZ3{U1U2%3#tQ4b7n&h3!aOGASwZ%`H z>WfFBsNp^=^m-EG0|zI5d(jDsLMZMC3qJ~`g2HL02+SyZm{n0Vuy9+s2~CC2Z^?xa z{s-pQhF{Zi+CoT;5{{b(lt$^P_!YF}F4fR7tZuw$#zSK*!?X^Ay=kq(MPbXwWgBZY2L3bygJ4&zy}erfxjv|-_w*=>|~udxD&GSFkEy@X4CnQc*%@vdw; zQf+z4a0#vr69hlfS@3JTeW7(Yk@mFovC}*2mMrf;s;;LDok^!@U3NwaV<6{p_A{>C`1sKC>7!pdy}NEF6pbgo-dD@9>R?S z-SxD%zE6(%EMoTYm>xOicEt4Xm_ZAQe3+y-Xjy}NmWN4z6y8T+5yGR7o_fn8QX=}> zMPED_{pDXgT@C)?%k&Y0Og^Yb0qq`Pokabc!rH=9_{Iu8=v!a-CjLJKp!D5R_!fA& zKMe0Gd`lF%5FsVF3shiLA@M`PT_BD^;|O*05bf?-TlhEpk2^+AQR&@k*y!sbrHeYP;BQ-Yk)L9a*60!&9bWtp!&0Zme zh|>P$NC!5?CFH3>liy8eB1dV%FoHM~Nx`)U;#4FB*CDudo)lh>Fb+nJGHaGQJBO2J z=>!V=X{JAG>CZa)v)*qBJzG`(%LMbAi9*j)hK?t&`}gd_Nz#_+ovFQ2|6|jFhO##k zsS3~gTiofJ@yj3E`WqZIZfHCC+tqJC7q~zB(Yi;~(5ESi-T?a;1>#DsqFcOnkkI&T!j z{j?;z4;xgoTMRkPE!}v%8`pYaan+CaoGFVX@#Z+%@R~q*Q<1kNcfwqhB5%tC>`uX+ z2w0K=WPjOUOB0o}hm(}FQ~)jV(Hf>Nz*iGFev02381nWtVa0!VbVM$eic99j?JA_+ zw1QAyxW{0}tvt~%k*NNH!Je!FFHh4_0#+NneRR-7;!;i5o~xu&|p5ioG zU%^c`@1~g7#oKXMh{rseXpvF3_V z0l{MaT0DmS5@??_hjoW)78x;wYhhPzwq=X3Rr90qm?8LQygfI2EfqwyAa{K;jzz=B z`uyEJ-f>*_a(K)e*e@G5=vs=61u``|e16<#;-g0sRQOS&y+q|!wLgl(*ccUJxTq+_ zE++6&Xt8|b$Ym4s@V8b7FH1t0lYp58m9~k+piTYUAd?E~Y#Sv^G73;H;cfNdWtko| z773MPTj~BGg`(ZCEqfvtdqVskSgeqKe)o@8%ER%OxwMwt6pb8pH!`k}zIRv|~f2 zRP)4^+;$xf2%X$lH(tBusg;B+xvi-RO=R%-Ci@nGNk+2Q1eGLf8JMR{JYceS%eLLo zoP+m-@K|88507_P#r<%_Txlp6Pi>5?#Tz(^b4D@mnCwB7gq8{gs~UH>M2VA2xO5H| z#D1R-dnSs4^x6hWkm}~sxk~6q2tj1*-8NgsCaPU&NtmUPQk^wf%$Z5{%gjfU>_c+g z8+esgs-0cn0QWtO^NK5Dmmr(w<**m`JG17YO9a}#nPfk~%XsjWnl!o#9L1<~lP8lM z8PYzVgxM0+kh@TI%zsb9WQiKL6*fs|)06Ets%Vy$F`F^xB4yg(^AC*%yU7ieOWE{*jr1y!4uC`MUO(#QfUm4l0<@|G zjh8EY5gMuxQUOvzHQg0zI!WqJ>+#YgMzz*gA)o#lGMM;T{kP+c25RFw{J1)zG8b)D1NbHjk&~&-dBge zKj9PTd_8a)tIp_=8S%z5o#W{6=U8omg${Rg_$@ibf_lyIvLNy`jCbUI7WsBPE(n+5 zH*(D3mB$=i7;{{Lfk9Vz%+Z>Jn``O}xzdmWhdNr5Fyv^Lha8LWNka~N^C1TgfV3t_ zLk=$uIofH+ae#&#$1vom1mQOB@T*mNs4 zCLZz74)=B(2ss)|$Ba=w4h$XhU`ogEPYnHT#kO#yz&(0Mf?en&Q9^$ipCmbJNURi$ zE7)1zr_(~W7CYWf6~|yqeF;59p9kUpz{<`yG4BKPNw`eLo_Qbc!y7In!tSL%r{k8< zfnMC-<1JbQfZ?ZBp)F0=k|rEjBm@?rDBtiY3b&;p+>dZz5ugaKH~sBP_XCPZ3tdp- zrU@Rpz)2LWI7fO$ctFXAq?WG%!TkvEn|U7r!te*Kv_?t^tCVt!Hf2CfnFX#ewW3^; zC2TYmnoQVJxY2}D;ec(%j_}0$@6SO|YY>Tvj`k$W{r7`h^%EtqXG3L~*uovoFjacu zX$@sMQ0T}g>7&!|zQj|f?gs}PDN#JVa@0Jr((B5x#U>3H0#d0QgThJ`vBK#BuUgiL zOgTfCOkFv63u`;)=YEwqp0ZHlNzFe=foe9M;JgKjeF;f8nE$ll*I76~0Tm_YVg}IT z$?hwH?Fj?Ju&eQfoC^#@altjh&>q6XBW3+R>uI_IxGw?AratKoW?^uFur3W)=sMj6 zYj97pi5asG5Jnzzzv0QmHMD{C5kXuBWPq0@TqP}UW-h`Y{EGR?Wb)JVFqupw{Ef)C zm!pfbQ2D3$t-lB;k(5qEI*@oTil+kPbZ6ozphVJ~4o-EBFT58wpox@>^4*JTjwno= zpq}IQWFrr&=1q`7@R)$C$RIHZ?O_U+{#f5m3CrYp5@&Xx2sucKn)D=5LR1DsarX=3 z?F*^?-4A^9drB4;=IppwNQ5duxW^4SC3XEFn}1-^+?S}uuha@D)r-_0?@Mq~DipR5 z^MJglLb;?k{H|le#f}xBkJmfSE{H$)xj1a*Z?uN)*z72aTYS(Pum;ERUgdxlUYl=j zZo}gs*i6rU)av*RySB}d!b+d1HqECeVzo&^_q92`8J~}9l&p~;tJ|%^#vU{^<86UU zJ&A1WMEQL7(N4$9InkN)d2W29IzMz%mt$@Un=fw8WDh*nmPs$RY|FJCl{Wg*Hh$Wv zOgAo#4udx32^aR4Vm$qVqRcG&bhDY2omrcJcV60)*`0eGb?lAcr+2W&U)!2S&%T6N zW(!U?FAn{3uVZB*8~Ozf8+3L%(ux$UJ)@(3YtT0y^!fVixJn7}{Nb#Pco@t&Jj8B% zvSAVXaJR#hY_}2_co3L9yRjO#Jw4PskL_F3Y-GFkI4tZN-Hvo|)v8WBo=t}oAbWa7 z)jB@tvyKLaaB;X7#UQ_R1X`eX$E^K+??4dOrsAz~O2t2|UTnX|vvueM_8qqN9OjU5 z?A*2<@>vIbnrhR<`!b{4* z@pS=EU>)t}xaCt6cujO@Y+Q>~<`wqC4*aP)Z7&&*tw@WQ3%ID*nx9vimv8O6JWxt3 z^x&GGQgjt2O)p!Y%_8>o`u2HdHJZKI?Xa`jQ`HO8)kt@qWMX+v_CS4mCVOeY3wtNnuWVy7I3B)_ZRuH^ zDf-5_9U?WEAio`Ucmj86S;y(AT!%F;U$x}?Jge0!StS8<1nPC6Xwz@YLp9ZwfK#Aa zlwyNSSVJsqTJwsTKsF14X@#IqD``14E|Kg|X9kgZRprLUAR$mwX-HD*vR1t$o4Mv= z^rwG~HUfAv zc4Kl=8f)3+u(4+xj=6=Bb>J3YngZZ0pf6x6CU458rMRwa#q8|$+tc#E3+F+mqsXoh zQhc-r`S&}Iv1gmNSr;kksBAeA1=-oOdon~NkK0Xe##*nqLZwrRQeIReqldvX;RfnH zYM(H-*=MCJXhyVTkm(Vppb8d=^L-ph1u757GVe+Z9r5v2uYLV`iBoD6sqt0y z%4r=M!E4^$&<*{L{yCYPcdl06R{#kk1CXkd{bi4159OI ziQU;-*%tb1&~aN@{Gm@KO8v%DA9Pe2($Qy}=*7D^lGAA#93ATQG4Ia1)0PYbMkmJT zuJW}5rPgpi=U~tZPtNvUc8mp|-%he5Wzmp5J#L<%En1n;p@QVQAG zo!2ydG|8-@0(XhWt>w?ATw2e;$$Pq}GHRKMhT)BrjD&GC{VuQ+(El(*o&z@IS*3I1*g7}XI zOMyfB)c@t>agT$G!lzXZbOaQ$Dq_kKL`6G#R?55EE@|qP?%3b3g-R|De|5|45m&m* zVGM8#2yaJJnNTLN&9k+seZ!V+siDvVRoKYE(J-hVZ*uz-7c>*$MKJ}wLS3zPweh@$1=h&}3Ku#p=pZtGBGSi_eg$Uw16b#Xssbot))FV;s4$6AF898QZau{^ zUA!1_S;~JGA|ZCd(`g}28>Qvs4lE~6Dj~k$tW6)C_bWo)?$;$ z=i-XVf=nRUmX^U7=Bfopk{p>`OFKw+&e*}J7RqjH?93qf%Qh9uS4RS8DfO_`s)Cp0 zUNLj;EYU3sp42Q8t`T^Qx$+#xm~7 z#XJ=&QJg>|64fLxg^37xi4=+4+bs=HX5Qv=`&L-c$nCsRzUV?0&oeHQ{KyVW%@2;^Df)|U+Tyf@eL=ETOk2wc zm%Au2_}&X%mb*CFfVh%3&b3vwB=X8`&rqO$2=AlOhMq<&GboN)=f@{cHmS*rWKps3 zNA|mr2E?F|ol&nKqLH$ZhmZ;+cL{_dzVIJ84tdL_!kJ96780YYsAP&HSDS4rnniV9 zWjdot5*1OdsACf0#d7+wl_Szx%B0$vfpQdzbQ;nqRvL&#jYGwmOaesle&L!E4@ULd zCR3d@o)1bTvCZ83Y8!4A_*KIqYDZ$LhqQB{RqXsq?35}2+HVcJ~)arfj^UQ$yehqAVm20gmQ zD3BPnMFFW4$LLpFs9%lNPV1=O*Wnw*=@m&sjo1&p-+y=nCm`52*L9jLN?%6bgs=zJ zVV+NcO|2HqkUGk9g}ct0>OXC((=1--^r7QP)(P+NNDJ&TwaCKTsu;SE{HdN;CAmfg z)bYF+HDtEyEF#~5Eoiusbs)t=7!Ao) z21Jmpf#_?Jg06!v5M6L*L#-5S-wO@@orRW4Sq50PX{MzezT^_s)17`tSK&k!m9nm) zmm>*Sfy9u#0*W*lZ8ojRXyY&5ic1x*q!)R`B~}H8sAf~0!8LN0X~~p@UM5!2`b&hp z^J1vxDgRxV2T{rmucZL3((e%ihqbFKIu9PRYoxdm32B5$fJM*9h&O7iGkKR^oXre% zEQY`n8CQ(XoW_@Hp%UpdFqEVmnLCzAYx8T(dNxKOxfF49gtQ@Xq|CWPTymoqyFaQ2 zPOXtJsz`pMLPTj*aW+k>x-CFw-wG45LeA5u$}6s9>7;;Il}?SnFe+6auE@KsYn>=< zT?k9*KQ8bHdC#tYpc6Q_;7n*l812JJuo0D&%T?qf@$+_LX65#x1s=Un6Yd{Ic%I2t zYGS*cu=-*fd4$Zh%wTiPl$&2BG4kmx*2EUMPU4ylykz?q+r}kdK|UrdB(04r^)Cu~ zL0)AFfk((&Jn#5P(s-DSSy{PGPCz1d^6ahFF3^%N^}dt&!5va)sa5ZSBzy(ow8!U6-`N<4KadW z)elB;tA(h%UTEcEn_D_lsSzNdou{v)dIlwNB#mnPj3}IXQ%g0cOEM^_w^XgV7uk|F z((YbGveDoe5Ut#a|1wRkNVfE_8L>9m%AAfVk+!eOItZ7g_-mPV60Hi;QXiEul6-wu ztwWZrr*=kzAhlAkcmG?PJ|*#8_@+;p0a=8KGf~~sf5Pj1(84(kLv-$|C9%?lg6T zM@LXh6@bUbsu?n1ngoi|*koUW&1)kAoAE#9$Z%5$P9=2p`bPNdHDK6UKqnX#+I6lg z8Z5I0rulz-BLNT1+*%+8o%~ku<90Kcwv>rJudE^^89`tqIFiU{xW+`q3zECe2FU*5 zC?v~}KNQ=H(1HrpPwUt4+C|JT>G zSy-2-JNFe`A2e*Kn$jDS>~$gxNsf&qHykZ{rbb}BuofYY-T3)s8N5GU)4iR}nfr(O z!%byGeTafjt5r~QMY4k`Aptj0nX{084DpBgkp-@n9xZnj7DN0hFp_N2f)=W2Cgi$Y zC7&FgRwJiW3FhtST*TJ2btaK(!V`+P5G{5U(7~pq1C5bu=9Hw`CSlV`AA2)r-phbg zG#ser9*bDTjyaDpWRL!kLY1CeT}Ca*5fqoqT=F8+Jf=)D=-rHbD}*X(tq;0bE@&5Z zU$rd32*PT+uvsFm7cGCPcA_f{9AxdTw3M!V4YC%%T;{v9+@hR8;&^q-^`tYB0V4}tJ7{Gs?+Ss5%pW+wV?2k1}U@FNz3>oJxjMf zDAJS?PhtVlq7w0p`xI*=kX0o4_@*`hBt-8mk^z(K2hdS1)2n#QFigE|C#;E!A^LSV z;ojsQ8X4-9_)&Jb;I^!&^9gkk8)WpNy&yek*pyZ@_!8yJ8Pw@T$D692*b6=~1qv5@ ziB6v<(sndTrG`?uAME0&N0jMNHum6CQO$dz8Fh;I*%m<}o$tT-s3qD_jC8qj2jbi5ZL?--=#*+t#}w0RGzQ*bhM zWV2Fy1br$Xk~%FU_Ru_PW@I{xo|44Fmjp;64}VS~^C-AR=o*>x9!S{9lfh4?L#wNG z;mMQPC`a^#PgF;<352Rhqn*^n(9Y~O=|*#P?R*8rmh1 zi?WaT&scYCnQKKJYqdAFb+7aC;|v<-EYqx$cr-Xt;(CFLnhgID1Bb*V%43^2-z2N? zGXF_mA8UV03TmVxZu&X-U#|FdOxP&9nDQcFvTPBJlRiUuhDYx`!ts%k z)c_*fsqz_Lu1I9lL49)75*g9P9FsgXLnM7#NF;%=>B~F+6`kzFCviHT%NDi}Da!Xq z%olVzU&nxK&+oOwS5AA#gdQ#kUINR2thY{#jQIS)NsKxIdQr{#Laqap$p0@%S`zeB z$IunWA(^ve2~C4|!OJ@#MadtE)U}=(I*EYBmbyAcqsb9jUv;4ARoKbuE2_SZ9Wl(0 ztcKWBlgCgX5nfOWiX>bQi$%FO{XJ|k)qzQESr-T?iimJFO&U<77Q_f{AZl6B5sS1a zWt!_$x@D?Jc}w)lvPMZFniZl?ri%n7l^;Qu3W${PED4jPDN?T^%rrKA2D~G^w0j6~ zx^^7C5y^P}+so7gQHf zL;Qb35xdCz{zLV}`dfa@Cd3#qTMHq+#T7V*4OY235LU|d#PSRBzUQ5Y0MaSAN@!2wdM0@WFs4selLpgd74 zrmi9XD5+G}bI{3J2T@e2^O_O7YAOz|H~L11)_y?%m3x5$OUV+$a+5icb+oOCmk_O? zZA~JFL=a7qmh)V)Y_sv(yx|e?(rEZN6mKVxrbOquZO2WhiEt4zfJdJsA_9hdZC$|CBlXAF-w zSsGbQQQ!z&>EP1IMWwo23TffL7%477Ut8u-QiybtJi4mzv!xLPQ$6AFI?K}HnZE6a z=Y8F+yt>jVl7qSZtfK+p-b_F*QDwi`GC(f0la41Vqw$kW2Bm-h7M26^?&|^EV zK4vnd7Ph5z^s07*BxSlcP9iZqTWS@ES|rg)S#e|$WpS<|YMNei)7Fg`{WN4`%~813 zOIFViRe@RQNet_7TJ?R>>aHD+hV|5emvSRSCzBl(9?hz2?OxB8s;3C+(`M0`pB@nH z-Xhf`?c$hq9U|Ig3ChgQP)o{Gl}3R&e)Qa?bec!1B#V|ylna#0GJ6$K>|q{D!2UnHZ)Qje=}TRrS&&<@7Jh z9cjzV&^%tUr!|EOFq|k4_=*UT6ZTHC!t?#_g zv6a8Le(!w_w~=JRUih+Oi4+=o&~f7uJ-=G9_3mMJ4ZAE-+Hc+OC}F4b+ltw_rR7Fu z|EeRMzvaxvysHyJ$qzVw7{`N&@Z6AJXwCzUHHKIP7ED!Ov9+*}zroDrJ>>8b;i1uo z9AArL*3%v{`@xqT3ssZ@QzN?4Z6%YSci7LHuz$kur^Ln9qv}J}%KfPftQW97?d9`A z;Cfk{D4U1;kal#75FDqAu&mtV>{j`U(A%w}W8)a*<57D#)~h+!H7PU#fKy6V=>hO4 zbiJAv!6yMmAOo&m%wY1aLu^n~EIad6M`eLt2tj#$Fep_ti~~6LEcIbWemX~vC@r&W z`NNJiX$nL`H|u)X@d5T|)fy8!oKdxqJ&@LE47G(E>B-FXbagU2b;~~UZnm&OGAC6Jx7qVmv}` zkc}Fr=tPatu%$~W#YaS`N|+cgSIQyX=+dFQz^KZjf3z3I1QCRSUvoTaC>Ra9#A2uQ zvXv`!1|5VBC;{vEhU4`G5tSlX99sKL$E^l2DqdEtR(n7cEY(Kn(`dmmgbRnq^N<{? z5fF#rTf~_MZWg*E3KYO_yeu#oB!6k3VSpURMaLs~2(eOK_uKL$o?CneeSVg3+A-g* z<*h;fXyBALNHpVT}YhZNTR%W--f5ot|NIK@4LtpuSj&~B-@ujXsoR=idi*@TLJMjs3=De!% zYI{w6bs4y+s;y>^{SsvFyV|*AUUhAmy|xNOg3XF*=IwK5t4J0`GBx01AO4vmE4945 z3~ZIxR?GPI6}uO+7mTjO?BrT!(!BC&Kx)d623V`vU#@X3Vb7f0IEU@)c4dX0GdPoy zlUA+T(7wad*~}h0;!0zm`Xd^)x6RJgtfR`A#D4V~$FA&hkXAx8*VSl5P+3=3Srhuz z%MN=yYgq3zC$CyHIC=<&u*#X?6^AW!#UC7IgK<-P)8;Vd@3N=oIV(dSf5q{ALsC&YdhIr{_I@Lj=kuZ!*2MEBZ;k^@0`c7zp_1<-M-A7$v$ztGxwGq&NOy1(Ulj< z{j=k60$aYic0nk4f%953yQ8}|v4WbaRjYRRtbIcPU+=j8ur=r#xAtrt*+Ew;SO>9N z#u}iFN&)Nmpm)SN5oEvpMw69a$-Zh;kFVE@r#Jx`3R>}B0GorU0qgPgk0RqnGA7(k zb;Q@h=49(Fad9(cfJ{x9UrxVgg(E| zI*84T)Vr~-a0f44tl`=u0I2sp>ZpQp1y#@CDQfy z#t->?BN8XUF_3FTQCi}3%;b)sc^&GMZFu7{=G?H+%)b0JXJ+XCvYj7DPQmW7k#V=X$lEi@ z4&-f24;?RXX2v%Q8^3E14h8#-%i;uK&pJWK5d^`sR45TH4`u<7A{ev#jl$ue#h3y} zoE3kBrtcaI^eg>qV-J4Mkrub_JE6OaoxilR4>vk9*glKP$W~wFoXfuLai+4r(t z{i-vI&24n%(dSYrN&a1E9c()QK(-em!gG>J1 z1`u^QoZrUFo%gYS6##qFVdpj3Epff`1>q6{ad#*FpNIdKw8UAmyK>oGbF0(hcKtn+ zEIL0jhdp!7Wmf%cytTZVJvgy8n?2g+u8Bu0#vXHRb%uU)oijZ(9wy43omjmn^!Dw} zk0!8^)wL!hsbG(Nt!o+k>pa&eyIORfWT)?PmarF&J6ACAI2bScG(ykJb!D(~AAr2t zKj%zg$3N}tWkWAIGT8AGPB-(u-?f~*bi%oa4SdFFXP^6xGg}ffWSGjHzRH=*p81Tk zf&hzH!|TojmUXwYntg2t+K7|a!r>mi+qsiH^L{Ad^}F%s+-kRxoojYxvX}0G7ihZ2 z+02gb2H>81oXhplOC-RK&pPup0FLz9_XGXopC#%Ev-xwnB*2_b3?{Jd&p9`+lOF)) zCqJhx{Fcu?TgOK*qIyLCUiZ354_D~t3Tvi$OgXTtY_!`ph)u67t#8B?@P{0Sn74oHs-(A z*}#5qa^rm7VossScEb`VwydUy+k)Ra4i}HGOFp#mLw5+PUzPTB5NPJ(-$<@hI^X`wrAbha6? z%j=P&yrQbC!d_8}3>8%sHMQu})SzoL_a>zb%D|8zjV-y^`PNeOHOeYWE6XZt%ggPR zl~v`X^>t{zYtgHzsAA(W+>>L-`t(d3T}pO+TL_n*}f0Ca#-jV z=limOskE}Hw!Eg!UQq=W>&n0=^^PPw>1>3-62nAGG+ceF^R2v+@=8bq1c2A_N=T}_ zrmVcW#$HiTSz1w3SyNlV?z|1gb>r>M4qc^KY?zA$n{!KQ&^@UKRj9;u;S~RxS6+*bBLoaqtE=m=;TIx3ek}%9=bo)gW1sz$ z^SU|Zbrofxq8xwf*|V3Rhq~_$=cV&XYU`@(P(tj zi+)u(BuTidsnBdTawqa@>u?@BZm3IQFWur=!X7Aa6^7dHb6$~_W4Gpcs>?AW8XRvP z9St)$ld<73`E&FP^RPCHkbGlhOXxzOVY_!IsY_-;HqaoCj>+VN{=N+qk$ zbIoPT{@^TRKi=ugUR+XLQ*E!WueR5!{WWrKRd%)@-Bn?(DXX>DqpMk7#yoAP%i=vQ z6U+Levn2GX4A-xXd3NjY=s`5x=oz3@p5X{b=b6y%>QC1c@yVzw& zqMqu?xhU?*|K*VPFf)A7y$FU{S7xVzQ3=Y!-RG)$csP5^4m5l0Z_e682@^ZJ z%(V=i^?GzaD@cXt9*1#A{BRtRV*#M3Gx>Ta0z>16nfD*gY;?NOk1r`NtA(zr%2Xs8 zLL!jNHM0YYTxIM`uFD*%OLP?(*c}_-D9irfG_g-DMN_ml$+cM%cjX)KD7PlN_G;pg zE`zl#bIoHfnO#{)WMkHniZW(MajjFnDp`AqYX$q$Ip@lSYexo#Mts&TUjQ4Rt(~Kz z!|btCXU3eGx@zbOIxVTJV4hbUmidw64$?<;;pg9k zSo?gz{VaENZCdD$c`k3F1@^zTbv>?1N4I=5pqPDVW3j7kj={!QwJRr&rmoOpmyTeX z12daZ)a4bkoF`oW!#RMmp0YEE7yJ6nT6;hkS{E>QK5DhsF)eO*}0IJ@z6NBWZT`YK|m4Bow@ zQX_6F+ALPH&9!E!*BU%9;q4>8RwogtM%1#D?XF7p{5DsD>@UP$;2|ZyEak8 zov7J}$YZx{cNNd8N6kh9PNVm#D&AON@UNqhE#Kj)$gag)28fZrr(zMK8_(507uD&jeoBcjzoMPJ!uR+7y(Ozj56x{=opr^0T z*JnqW)ILkHQ0GL4`mMwyPqW&sz}eWVZ5f;pakbkM2zU=S;m+Z4n^%&dQev=JD|1L> zYv3>q~Y5=x#_&Fp2-R>em6gjSB8|}5y$u*!jh!f; z&(Y^sjXj68y@D62yUv9=6<&=D`D!T$Q9{ty&J6K*-51(9BT@hP(Q)I`m4%w^GH-l%bi=CZhvY4$6xU6i< z?=Vhk3YBGL7`s%|p<|8~WD;bP=B}u(0udFpyn8$2+;Z8q7`D!;>}sOCrUHK_r975` z9}7-qhLX_U4r2adN}*L$V-!(>DR3&frYg1uCKpNrw_!OWO%q%Ua2swu_x4fXdA^`awkSnW%oQ#=s}U=%=W5#v}Pz*Mh)XdFv> zXiEouG;dBL>qF>iV0L&csLk0tBq|84We#f+BYo>x%IIQL6QzfWG0*P6* zgkbWaA*{dI^iAQ7>*~`dHCdV?fvWi*^fhN#73JJCp8`)j+uXd1JKNkC6wI=0%E$*` zv!a}G&${etVtLkO^W0OH9d6Q7*-h)}7f#U_V%$kB5Z3{%62|HXoj1Eg%36pmZnf< zOF8#kv*w$7&DrO^AilX1I8WKr?T=wz0t!5jB~Pk;DR;%x)#$vriGoRM(fM+71Dt*C zS(eRbXwdba9p!TF*;P4dc1WtWlkz?7o+f72F|Rol8eCcj{U{ zb-CQ+Cl%e)d3l>T+q@URFHPuAUP-8TY-0~>S#1pU9&*JQ*bNEgDeT;qa#Pl%6K^c{ z(Yy26O^00DP1Yey-&l{a*Pd?3WCN8OtnB#5H!NVQ_G60o>#e=!1Y90rJt$54ZTgPe zni?_V$8x`c*|0lHd(+uN-*G$H8L`&P-fiEOcu8Q0Pt{VFn{OYXzVt!wNYJkKTvx3+ z4YAUWyZhmWM-FDtLD#>$t|%ITw?(SmvR*8Ec)iT0=WZ+Oe*4 zXlSHw6eQ8)H#TQrHe8x)1QQq`c=;q74rujR$Gq6(h}|P}x|?BfWkpE4C*Sxh$SvkpL?Kf`AWcyyKz?|%Y)p^Xi-<8TuGG+$Y)1Qj=VVh-eGbq*>*S|YmJ5{b1hh=ly|?h z@sW?iDpm!38trKvS8fDg7M*-@A@FrS!sK9z~djtr5$1jEl$2~BX!=iLvx-#RLDASL}- z1duicQ-Um@q|A@cqs&lM*O<@OJE+V1eIvnony?-;G&14qBj8rbm?#)a4FAq;mdi!H zbx1>C@J4tIhM%NcAc8FE6B;y9VNV-nX%YX>g(30h2A2EPgbeXmSDUFGzw`Z_B8#gTanCNbrI&lU$#>B7w!u>xP^*d3uhlAdv)sSUep&rva;K@N-2D>+qMEx zH+9>p@$)_WC=la5n+H+r_Sx$2Bktowp5AA3Jv{GtkF8uO@k>3tj8}U&EqT41vesT( zJ(7R0*H)^sc*E^r@n^l9#lQ4&iInx(syGpU{&>w2_P#z_wu1KVK3gF${Gg8)X!P+P zw~u2V^w|oPbT|8KcBFgEXS3nw6`!q2f#mmd$d-Ov1uvrHu9|FiSHG7MGh)$qvN zPeZ~P1GZd5)(+T;mCXGETt~MJ*vbI;J|Osc6X}!$*@L!Kh}t}8E62~VL0c()?j5wP zOzJS(c^21C$ZlVZO!dM$!q(K> ziAIaD`Acg6gliJkSQ0N4OuHmdW1tFPucH>OxJ=SnI2OqOt1?0}m` zy2q7tp2cC7z86ImUdl& zY(ba+(_6o5=vr960POY^NP88H*_##`;`mm@&{(WebP ziss|T*_w}+=b)nIgF4d^Lv|I^bk1W*t!aw~#r<^_umg%sjgx>tC9!9^)^H1c=TVN- znu+Yi_z(tJNqgNQ5o{-JG*B`?P5wAaXiq|u7RX;*0D+_meV*)|ctjkVUtr1t{MdXD zWHJ555Lis%{^S*w#MC%bYFze_xO+k1cN^DG0_2mhNQv&jk0tT6A-fM-YY9X=2*V3N zNHWTbMb^!ntOC>T<8JvVs4BE@x{l44K1{#jv>?v(ACNi$hi3USUkk_vhY z1wo)j)0dP&v?!!B?~7*-zO`(TxC7>Sw0^_9jWFWVFyfEHOiinVtFsWx&Hr2yHNeUj z+GC@zCol0P*zlgb&yS7aZ}#N|xS+N5)NMUlFV}XIG7MGd(`+7A)4XQ1AkE@oj!#ps zsBYoku`ft%`iHM`uS#Rb7P%JO@_>5@+kS_;g*M#IXU(r;#PI7sJF{?b!Nl(PnA;M1 z?&L!o0gxm)8xi|%tj6VL9v3j14L zdc~O@`u1(^KN{jI>uW+^`ndZB!^2;3*BaPI-g1}|21dPpH!Hit9hj=nxcJcb9&yi| z!#;ereFe*X0vk~GJ=$($d!EF2rsD~BE-OoNC$bmn)~B+Q4`G+b$tT=%Sjv~N3)WiZ zN?>1p!tG*zeZpPIRy^rm$u6NkrLWgzvUBO~c2@eyuEd9*a+k)jZ&huW!`z=WB%856 zV7%OpKNU2{`#Ag6_uSX8q3^pb?0w&NXRtW~wMp#m@4JiGGZgnniu>kZMGE`4uRWQq zUi<&qdlT@ctE_+gn>J0l?@gDqG%YP{AzjjaA#IZ`NmHPOmPPh10V>^Si-4d3#&KK` zW=77q%!uMLE+aVeYMc=jT*h6&ozYQr)YoMc#9dMTpL4&-Hz`GCd;h=R^ZcH-&qKK1 zd(YkPJ@?#m&oVuO`kzK>_fzI6G-FO{^v>!z;dFn+bSLe)w?R$GPn*N&ohY+`4nJ+a zm-dF5L(>ZjVb1_^8@L$`K{TH&IY85(Yh(cG4QmH`>H3bA$+TymJxsK4QVzGyWXyqf z0V{fRFicL~MhNnQx~`$~(_3{hxTN}(VCWj7sOxv@Y=+!%mEd*>(R-q#@;RDArkhm>F*(Ll+CYz2OwWe$U2(xE^ecKr!_3@Pzi(D& z@Cw=B>8Y1RuloB|L&3$l0(uOCJ)S2fx$A~*XglCGAQU~$UONg^kD=iWEZ8Y4GWd;{ z_ZD4k;2A6~=DEW@w~1Yv|DY+IaW%&zSGfWR3BO z>piBIWXd1)ynQ@>GapvThc>-xem=qd*{fz#0KIk8TusYfGdpS1F>@^izHWBVoKMYJ zbn)xvTgmj_kZ3l1itV)IujT|59r?_hPK9rqp(^x-`Q^xBND1dxRYJxYFA-Jr>BW%y zhHh0P?RnGuGVQ%;dN4it1xj7`mU%Y)MvbjG>q~GLKIPBnzBD(}Q%B4*>DefVr!4!* zoaH|EZSxla^i3q>Hy_9}#|ZgdGJgi0w)*R_U4HXrOOZSEYxC-e#LOAaA>}F#?G31% zum}*OH#<`3)}Y$61G*olPvZlVT#JFzTvgDK!GMHJ!xdZ{x$|;Bg3k&8apbDfrUq_Z zhYwIhjNE302vqm5TBjY7PV%=*5M@X@?Mg|%N{1}E_0ij{Dy@l+xcF$H_t9Lf1D>3hBjAB( zTheJ(<8%WUSM*urY0Eu=a-a2;`>xtou3xcF2aPNC$hcx%qP^Oj0Ht+uDSTRZn=hXh z@&FwV(rN5CvaCU;KyVwi$$|1<=uVj!x%Jx519*&ljl@|*JujQ%bjrZwf*r#ZNvann zr_;9jCR4biNyZr~j~6}hvN=_c0eL$^jVQm9Xd#x-hW-vZbaq9ut5wBI;;*V~utfCL z=?$2;G3QL@NDmav#;{D5Nn7-#b>;S8(ANPB8Wtp-P%%jzru`X+ZeOfgWmgAF>fU)7 zGa9(Cz8KV^)31(6?*yh$ip-eRU^qVnN%|#V+RzOVWw8M>?|_(eZCDfyKUJYkw&8FB zY8V>H6~Bfqqd^Xk<)b+|dM>FpB-$gWwu}$5QM0*-4mCOAY4OkI2Gilp+DOv1RK`$L zY*`Q;yuC-0?kBV+a4MP~!XY=#c#?YQ<7T~niu73K!y zd~)g_9k{k8zM381KwV3qPj0=Zy_s2EknR)c9qdHB=8p&{)@l=?c@PVv9j#UIwCjg* zjfs&nbjL>54hS{2K}gMs7Rn4u7Ks~xoIu|&#N$Lu>nNkW!Q^g8s5LDN#XJKwZVsxK z+-rtvUk;^+?X_C>icPiiCb@br-*b{y}TbBQEvfowClNAU$K0}vl2Eyx4{>Ch(Q zgICkbYHhCSf(y3j&(dJSgPsKFRD`AiFK`^9)_J1D-d`Cnkjy&lMXcQgnb^@CT5O39 zt-PaMZ({4|u=VC73BVUL+P_P8%eARh&jw=0Ns?bCu^qW7p2Wwk-d!Gt?Z`#@S_;mY zq*MJB+!G{da^-Xc#SV)L04`h^-|az$zIJNgRB=cA8tZFrdP7@dlc9B1+x%IET)_p4 z=RtWIoUS}c7Y}xo+}#&6y#H2;#8>H-jkRUbbAtVglsf3|8*5WL<|JWLbQNZtThEA3 z51{c-@+hUx9b7#)1io{_P_NT78a#sbNDLbfs_3C-6T2V1y7q)71l^S9+^yYR8y`du zZYj|QEOooDrZs zj((_H&H<-u$dJvAW8A^G2-#SYR>;YA0glUHr~&BK3gWGM2&$nhB<|Ho?Pf7j=zaG0 zvo;DuX6XC(Ytti;c^QOLmWkYS{kydZwDb||m7JrsTZ3F@W3OzgUzzhchE`W4Nw^O<^pv0^h+aZFRn3v;<-XO2Shwjhc^GP@_!R!o2;b)k7N&2sA${+KE z4uCkuS-1PVn|yJn3;E!diBhJO4gI$-qbKktAE;V)vI_upyNbAL#-q=4k;|hekp&;zW|N83TbXxOx zRYJdnG~Uq@$gCtLv-B?2@O)`ge>(fh>y>aws;6o<<7}=Um@0E?vZW;!eBC594Ct5~ z!xutokYp$rIi;Raj$4Y~QJJ+DwWjW&fY6U3r1KtEE#9YEPsiR1tV}sy9`mN>-u}r) zqV=C%A23t&lk&&v_EGHGI^ERr(j~aH6c$c~Z!{+d!~;C&gb&nkhsg&xUPz~OpI%ns@ffcTE11wLdc%%x`AKP2Wfr3AL zr&|C^uX?hnP z<^R^-upZA*Dtop!9y!HORFl2bZkAgacXYmK-=kfcaw5 zHIt5Cco67RlKyC1weU$+PM4~W$L#lolrcR+z*Cg#_=RVvPf0pML1#$%G>Y5y(SeqH z1?UUW@Yg>3*{weSJxP-5aOJL6Imn?`#2)>dI%~sgBGmSiONW2WaIan$SLI9mB}aW4 z8}pnJ_+Frck~cCQ^o5k+J}IjD`Vsw}2_Y9EmDv~+aC28Q1iplaHAy;}ePE`NxJ1oS z>UUo%P|8&TCx8tk$+?p5Q^4~%rvCdpqXP5^ACOX^raRsjQn@&8+_L;e?3zojyJ)wP z(-(E-(7&AFB1zPbCY-5vO0mi;DuMrSfm|Z$=S8oSc!t0~Q`sY09?%WhSAxL7ACIgu zC8z77GXDRqX84#ZYj^!04Y~g5>fRA+?7_nUXZu25g>s{x{ASWMXAUWYs*Hs<#&sr? z>;=+K$ab2TGXS3<$#sS_B}oZPY=@Gh1e8@WF`&RGYa>X^zwY7V^A+g8z>uJe8TqW| z<9=W;X9iH#V^&F8gj`Y5>}nPt*f4jMEcOWM1TuX2tzqeZZ>MRrflIU?s*o}BX6W1KTe+B855 z9;&OH-8h&ozKq}`*)u^5)(c`#eEfD8QQ}1e?a-YXèkxptH1W{+t^bmFKS8uCd z92+{jnukbmC`|X)uh|^T>kNOZ+>e?qB}Kuw>j_0a%HM1$bWaZI&tZ zFp489gvr;#o>fjL>%ssM)P`Yx(69~$Z@@S8DjW7X!9yQlW%zY){bj&~Zxot@PQy8U zLbtFBU${W_$Sx~n1&zTW7!)cj^e;~^ygh|N6B1SoR>GE(=aM|?#N~2@u%06<3*m+- z*gVYnN7=n=#U&RyqrEWAbLG)e+?b!WgqB#=u4L_Q`34TQmSWPddk7+1eJcl{A}M#2 zufYx6O}cAOPc|8!x5U!XYda%?p(O1bK{;gls3D!^ztWRK7d~fsO;aEq2dL|yMIR(! zX!`EXQjLhsqoISA>86a+Rv@fKdJ4@j&*E1Jwj;?gwD-n_WIA}z5=33kSrSMcG#573 zEFEgn9*+GSBzebi zNNPj-JJmxu*P@{687L3ong6XuJG?&bG=x1-Bs| zV>;DST86m~Ob2g4=isfF3o6*jF!G)JO}{c`7mIY<$o)Y)SM!25xS5RJzR-%>A>{D1 zt*WiQ;umM?k`g6KE_h7s@_@b(jH@Kq`6FdMrd9xzGVk>-vp-pvqzBu8WxV9tWzNBw z3I%A14C~<|@HiBJgQJXtLCNl89(B?OUsDEyd}b>IB>?>q{VCDL45Z<|htCdNK6#-&u}C zWSt|fS&X6aHxwx^9`V5u`0Kt~<320Q`tqV6m_dQ9nm;95+hLhU7$)IgQ)L;V3kzEY z4azHH-xw@Lz-j@W)v6%XYAPwA>+7wH=;#V-Dczc4y_HUuJL27MuCn%rQk2oErIRD= z3G`8)DVz@eWVgB!Ji}pUzoFHMmq%dkZe|;@-W&GvD2$W=_mAL(l1;Gzi8GfRn9DHQ zwSr6))+xc98`&GFtK6C&1)C=PzE@NN)z9LpVw&A*of>H>DPvt+HhBXJ7~pSOmyXL; zLhUwdaA29KgmxIMYiN0tHG3j}Rh`cehbpXkbhO#ZbD@*9p6l>njIo8ZLd)K)r0LZQT%%vGai_4%|X()zGOuB2UwK%l6 z6#X_7!%B=&T7ocrxzbrU)7jg{Hd5J~%jjuaXAHq$vcxjXyNKdo^r!@lGnJJp#YN2Q z!mMlVT*qB*@awXty<&~z z!q6dBTtoj5Y$^IZq=SMu{eWu+Aeri1_CGM#{w4jV13j*+e{Yb-6>-J^_J_QVii)jC zR)5a%fJRTa=_FJ=wGtJDFR znQqH&>qs&Jbk{!X*RDCBINJu-F=f=5`)DH?GN?KSCL6x?_C~1B@OXIfS9n^=vkq-S^&a zU8@aVSTEBtboHaw4I!U}N(<4fv#V+Ldtfpz^01gU{eJ&vp$s?w+q6y({amkJ*dC}k z>l}_=tIm?7Jq`16@!#WChC?A|4UXizfWCb+&vP5F;6V?X2;I1T>qm2tE`Ldj2Bjr~ zQtzPT9F$fJ>NGA%>jLOwDuWC=CSWlb-PNbS%1rrR{Mi~4641Mgjvcp7azFB%b+U@? zI%thocXq9;q1oH(;@#gIv_e#=@=a@2Kurxyg;v2*p{-6$yWX}=roC@kZ^?mpLf;@V zurS#e8=dVOVoi@+Hi-o76{O^jI{R19o+DO6D88!ML{WbiWn@&v(dS33u{1dY!b|$M ztW|Po)(brv8hXq6Q6Qk{uHRN=xlvnkK#-`3Qs1>siaNFM)_1L$;l9HA25HN?)@=TP zXjWFOIvTA*o>@a<&Rn?|k+eA))@2RX|%_wc^g% zOKbL3#L@5zt#QG9gRHO9(nyDrYU8z@Zi)}u)zukFuD7ik7fX`#^_s=aHxKX9V{1nS z!HQ6<2o)B3G74EZ!|+HS#01ASc(5_nnkkRPJ=TIw8j}Z7#?weC&NF~vu+rJk54k-h zwj_^D`{F@bK+jxh$nABmfY>41JrbM@p;yL|c)eX?T|KbqIO?HeP-H18TRS$iQnr2v zwgc==@H{SSnA2cD=l6AW7R1OF_|dBZPm4fETH?a-tu%+amNvviczb3>)&gp}YIlJ$ zN-@c$*%_X6W2Pa~D064{QHTFLDKs7||DOY^J`* z511=;^vU`;8m&CTW;%9scLII-sx@(dn^#!a=p8#SiFhoPAs6ZyWPQ*7c3z+Od+NyF2p(21lu`yE8dltR?TFi}|fX zN5l8n)d}8~7buP3Ewjs598X2-O4T~gV4BCnk*Uq3^BEkC8|WHlX-sSp1&+FoSQBYe zcPA{LZ*2&k?3+&ya8~BB%q$;#!$=QZe|Gs~+P=CjI>iHxl`gzF0Ihlcy4**PTTQ|A z`;*p8`t=Vu9L7$do~FjC82A0(Syz<@EC)vjtR31|+z>*qd=7!*EuR(7rFV-PQpIOP z!P*|2qgeKa#szce(C4tC&qz5UbbMq8gqy~MJro&6>^kWKwX_@vc11N6#sy~5-oFJV zlyu3cI`JKRl>n4V@(!RV;gHw5}Rt}xzCflz6}Ynjr>Y8J-cH0jCUmz>g0*Mt#ri6UUmz8%681 zfojOkvFNK`S3u%`tbtUnJo`rjA(bmCmzReN>!bY7YD_|w6jlDXH*iD_XjcaEQuHL4 zjVB=}Qa?p=UZ5wBC&sAe_2yYo@@#?(JM)5q3e(K`JyMaptUU9{9h}&|acfB?R;E=n zd>1uea$)lS%O42&y4 z-(S*@sOEek6fv#@zr-DvG~}(~#JQn7 z5Vq^S_+IINQrN_pGbEh>SaiQf>HfrkZx}A(*6`na3;#Y*wt2xsa2$3lrqpPf8vg2@ z^porBriSM}-F|Xzy?e`L4Y^Z7rKJ`XGJ_lJzWttt#|9vtGx&sR)Ag#QLOjQ%8j`o% z-i>z;E8;ndFo_aS-ba-fC7>iJ?Nwst#&N@M>s~U;7gC^j+2Q4Z*WG8_M9Fy8*%n{O zm*a?#z3A9|!+PZ<_CE};n3gnqNdLI&Un=Me(ac}Ao%gvfq!gtD&QN5d*lEAncj0~y zkjqb|M;TD10A;8g!Q9~5g6RuI3&shB2FrFoK+n29h-m;a@JGKI*6`gs{D5cf{-uD@rdygh|8L*?;2U3* zH%1Y*SR*4Sj>q4y5I>N^-rr95P+ntHBqdcg#?#Q|>WFARL3TqeymZllMMyeO(Kw&( z?JbXR8!H=)A@nCplcn)=CZ9XQeOER11iFNcgG%Iy1rxb^Lh7;5h{)bFR zDr;x7rD|)WtrrNb3y)5x`K`CUM$r4-_=)uX zS4{6eqPiN8Oz$@{yfDn0YxsaT8tRzaU;ki{Q3kB2`>jg!gD~o3op2{UEcW+r2P5>LAW=8l)ooHkn&25 z5zwcM{mL_pJ*fC5Q1O@nzAnns;348Uj_-?@nL1=#KL^=KCwonCST(JiBSES zD>+RUWlS_DCF|;|uBx4z;{J7H)87XJ*Io$C?em(nAt`JS9gmc3*LAeOAM=>$z)zc# zqx|E*7@_4)HtXCsUD))kMrEMmmpA3mqSu=vLVY>u{>z(^366ZGR?%;Ub?Y1cHZ3yYWYAw_A7!AzD1n+)Mx9*-!e z(d@t2;^@(HyOUiF{ZM>bJ8W6IlG`h^mLS6h?qesr1B8%Rub~$j-mGSg(dmbF739Yt zoMto#>9TcDvGhLju+##)&al~EkM>F zEMb-l2Yu_D239PSMd3zSxr*VrL`bYb_yEi|cG%Z9==WAWaR$&4_@L!xh%V2SyX+bo z8_gXSZIS0rE*G}^Sr`MJ2L|Ej&aeUs;~s%HPgBuoa0VfbhGMx%ein>jv){i4qsgk zyoJ*P3?C#59Pn4TF5?=l1K$8P+ z7TjN-`kZH{dDHwbhWoZBn&6H5mG_(Cruap}NZz=8>z72KA2g+@h1-ucFIsX1Zj1Cw z$2^hgI_MrAdbBy7(N3c3Ji7iUP|U|4HQg3Tmmh12DjC9Tupyuot+WcKpxYkoJ zZHsK46l}pR_Y62tI#Oo5z8t(Ta@bPO=3w$B(OfZ)kIH z;Q5(Z?prgOKZI|f&+4^-(4V20)wMvYQ7~%w$6OwSpzr^{2C!*7Y4+N`4GAC*Ta15X%uJPF(Y*D<>?n={>`)0&?w5kB86%bIs` z!2Q~?=1p;dEf)v57mhYp1c|sS*Eh$6(jAvJr~03lF~4t~OhrFw*3#1L%`>U#m(A&J zd>#xwRZH~J=A3&jYpz%ScnNNl5D;>jeD38}HBUQ3My}fJUjCcrmebWr$ldDx{O0Dj z0)M=2F5)85dTReobCdh6+nW=9yfDjuHNW>S6jt)b=C~g#EQ5wWv8&yy4>S*J1Q8JC zw_!>3Xmb)Bd*6tDC|o@5|ld@H6~;sSHwsy6n3(t3&KDbl?cI;t@TZheMiy;(Dm2FbA&|Zhrti-L zRaE1#_ktH$yO7+|l*buh4*v|9AZLO4^@h?jL%|)Bz9B_87@$2>ZDH<9-fq4WwoTpv znf2hi&7rjW-R3D2zP34pEF9YSDF*aBPn?cJp>*Wk=1ufeS!oD;_)c@Id+mG8>Ucd5 z+>bQRz2@8I>qGGpp8F#JgM1lg)cm9A(+#i!?ngq5;;3;NrkM?8hN%V+j$rctXl9S! zC5j2MT|mp#wmkR#Alq$Wfqh$o+ygPTcY>%S4KIw#ZYYaXL8|ArHXy7uHOpx4*Y+H` zy`de(hu{(19h78)b)QK=l?j#TVN0{XW+e+RUUMZka}Z zEkq6xvJ~0svF*gM|5RHAKLQ0@#sK39DojQBHNI(dnX}yrN_4u70T?NO{ z{Y(#l1Qhfb(*;nu=O`fbfl&~qOqN0vguM|ng)rdTV7yjf7YU>bMv~3T!Yqy5gU%njiGPncoYGPWln9m4z5HJwjr1*SU>w12PkxxbrX7NmOaKWz$o+Eg|j(lMSxLc^R@b z&LA3|Vatf9fCw*Sk0AwJ0tqZrsjUtoT!^WFAhIt8a%4qpUbzH5Lj?>xpuoyDyI+Ch zN5s@dz*#6qv8Nw7DxUWJ6?j#&DPN2+F93vD;rV#3Qyj1@v` zng!pseCbG|U8OdCIDEX6SHQ=MsS5q_MyG_8L9PrEYNm>EFYv>*)NpjR4Bdv`qY6*- zk?t0K1p5FgD}mD$_(Sr7qwHv|uB1%F!xw2@4c*mX%Mn{B0zz)E7A}&|oYl>?-$%)& zjBYV|q89{q+c{3!@>EG2-4<+)r06GFrbNN# zD_qr=i2xA2%R1`=C6NSw8hHjm2OOxZin{R_4iQbXvu3li%2g;cRmfD=qnhD>=z+9IVwM?PE zEV5Y`OHHAs#kO+NJY$QccC$5_Mbkswdl%b6wDdP~*(5r4O__!c&bLjAW>eIrB6cYR zpRb-dD0jzo+t#U~F_4HaF2~wtPgq5Cb&oBb{@|Vtd(%C(ZvqIv5ecV7zjU(4c3uSI zBq8pOi_JP3t~JHOF>~7_`gIvD*ep3i&-L0814@f&%?}uqBBw2g%;AoR2tOHlC%m-& z&XzzA8f@A~5DGBN2HK#L1v;tTiGkU>5B_@e8|-QHhSR2vf*(~Fnups%v>fY%Hkn#d zQ*rewfIxFgqd8|>(K*a^*>Qm_F~XcF$~DLZkF2ou(#8+FW8Ckqumw~mF0nA{N_g27 zY=6OEZu*luV3#d6kmA>&84o^Dq;aS0wmq$(v>*sCi6K6AtIZg}9++hxi?HKQ2cC0S zBl0UsD~)h*j5d~)QEN~DXZfhREIrH(OEmP^m2W-`}`U#vkzuIq`;yeFB*Z@EFrm=`F zegOE4fg|%Pp&(!qu05eCLGM3+9GrKOse&DcF*sySJv*wQe{HvL8*iXpSF|OIBhg*< zpsiFzzo>0VrDK1w!Nu|8n302VH^Da3Ps>x>rUSNa75q2f7*5+0Tl8{^8DY^Q583kQ zwNl$OihmeCi(YdWY30K>JQ2#L`#J8Z8Tg5MgwM@UyH3Y%;sUEG`yaec|#)paLuQTk7fn6Xj8hdKZ}g) zmM#}|`Gs6C<0Y|{QmVkIJ6ac%06Xh2fHSfow=2)1;|Kq^^tZ<gcr0>1>&0Gt9KK8>9|o(4}X<;tKM64b_NkFaNB3PVF|lZ_5gx zk6T(}=;P1q(UVPBO4uuvvR^aSpeii1GLgycw}Ye8HA3fqXwy&j7ZU_ZV{hN{Fn^Hw z7v>?^L=>sMn4L-&eF!XIIBM6@ogdjkDe?nbJwyhAfv%6eDSA+b7v8z?!iOPzz>=zt1NItPArkz@IN59iK z+&z2*?W%(KAS!FYw*-C3E8Jk!rTTn@(;%n ztP9o-zUsOmD6FAj@$O^CZP}_wS%Z1hb6=qA6U%h8%VCdq*L`lAtI`R{SZ}I$hTuB} zZU4e%ByB@WJU#t|t%LMm+Gf$p5Hp(xXOnz%77%RKSJ;!02N2~9%PoeKrFfuEEpa0sH zAub4XFaQMlH(%q16+V4>3YC3>V_lS77z@6g0Dk%#lwAK4P#zE54ZEFT-{KgKz8~I; z>%O&}MZf$Or=j@V_pJ>)w)LfIdhc5s2yTQ_&~>`KDTQ_=wHHy%ceahR@;;Cu&wYnu zq`r9iBnmzO{I~qdxf;qofpIukX;ahe6E+8J&u)RE_!A7bdoF4|VM~=mA3xR+Mt?EF z9m=;SaE6Q2vhR^Ygf=UoPo8Rxqc^?>eJ2wBy1yfuR6p3}lB>Q&LkoVeEg{!W9HDgI z4`{)`Yhlgw@DFIU0RH?3Tc#Y!4>QNpWySD6Tze9uFm$b>h%P^A>z4ZwJysreWt@F7 z8FJx(`HDn)(3LgzT$Ol3FH9u?+neJyK&GD#?A@AazbVH6nvQV>fbgxUh^ zv9v9~9!qhCo^R~%! zQG+d<^!LK6_vQvHDST$p=AYRj{8$&|!S(`j7lQ=6G}vA)hu#miPvg*3stU0e$)PJk z(6PKC#C;oLFOlOqLhUwMm(V(m4uoPF-{;i$FuR#5>#sX-mQ}HASfi?G3kQ(ZV$Bns3AHQz>y0w)_4xY{jJ!Xpr|)P4@80SlSg) zA5O;#>}lapJ;S|&)rn0-WDmBdind2W5vm+SAIN5r@atd{&fSCZY+0!hw>qFeFOe$b z_XQ!v+FoA8RFJKsPJSw)yNX+iB2DblwwUQ~+;Gb1t`PKPd5Aqk3_+v`{^oFTE(OwO zLJO&r#VCcC%0=5MD@YrP1K=wU>&NOjH8mUuYh)1IW`*1oT!> ziwPw_y9+9F6}WE!kaEH>V&2h?N@P0136iH5)+3=7X!WYv9!jy*@GQg_0RhClf{))} zq3fpf+H*7QhO9oG>BK24vSG^N61d=@v9X~6&gk?U{lw{|rcxX$pe?vv7+6@N?vP!S z=7?U1hA5Tv46TKGbCV}$83-WR+v7i*vzQ7Cs*~AHk4M{!m6Icg2C9IR#PMN_0WM=D z4_XjoFC33C4D`DgR4LHGvA1!!oQMIUnt1+%fq?}QZ&568nJ8)?)}AMyHR11LJKf88 zRvbP08DK*!Nr0{LPhx>oMBIi1^fEHe4y)__=*mDd;?QP+vo4OqZV@H_E^b`OU&l=> zxgdUA$+O}omV8+}I_)hvmR^eYYj_-e8;`S9G)=U=IN{Vf@RG&nC>ow~YMW7VI6a>L zl}_KNsde@`%DHcPD!i`4#P^^MxMt~{)mpklXNR`qG1z_oOG8g6J)uJ{zuk!|&2V_n zBzneG0TxSrOETdgiza&_PM(3FmM~hJ2n2Sp)1s#B?KtPxC8C4uC7F*nv)r_&Id1a< zX3lTHi(GnHBwdpP#3_!X zCz5bxiqyU5md26zF}Q)8P01LXA`9pe)bA8!#4gFM)RbouFhbjp*8kst!^HQ;$#*sN`l#zyA!wgvx z1Vu+0kmcqm@FoOn28S>X(Uj?0`gt1izLjQQM$;!D$J|MFJH0#?zTA$UFl#ixG^G&8 zdvO2sbb4_TTC2CTr&3$HBaYUcFzcxx-CiLtVrM#$!1knYUHoQP1+ zWP7z7I(stC#aHy;r#&|rtrDkPQWi#CgnF{D*c%VskR%^ryB@abqe@L>I1fzha2>3Q zBKjsBhds9~61OJYU<8{LE?t@X8b>P(D3#kA4PFaOXylj3p67Awi1eoncD*?2;$eTH zxB!I$poIT7fw+hMrl&(O;Jpg#_T^j&>~Iv(4H;O4-0c{gOU#%>1>zcmLu%t>;6Q%8 zhyYI-m>vxU7pRQx&&1U55Jcts62J{8@}DC+y}aBBbD z9{h_dZVQR}aV(EpMLOL%y(fmwUug>tg9@h?(bM&+`fM^}W6qWy+#S60K4{@Nvq6;I zyQ&!UdqYbM{U+N!gC21LM}L`(LmG#HjtZvO=g`wB?bE0&8av}(!v2OF+`Crf@X9~! z-DPGj#`)Jd%~2%K{AIaVp9ga7_4Iu%FiLqI79_Szp1i4NZE6pp-{qlQV#~boU`Ird zxu^h^Nv_`q_P1)PeS`v=T43>gsy&!)nvJ`Y_XQ=Gp1K%MVB4b|F_bo|C6~UN%Dev+ zFj8k;0?!=VXMw~nnuhM#r=ff=eW|1E)36gjs|a$_$O%)a$cR?vxE#~K|Hn=cyW?Y{ z-6SX%YRm`P`ltsx=I8ldxa0Z2w}_iYvkL6fWvX#+0cagTKZX`!$GpNc;Mzj$2|*X` zEA&!`>LP^1j+s&9P5ng?5V3$eti%~i-qe*!=uQ*zF8s7IbmtYA^e;_VX@bIRDfWi0 zRYFIVkd@s_9t_9WI1b(5p)mI^vhi~SsI2m0Cf2Yytwx+eOvYg!Fcn!`T3!W?8{KFG z7V`}X50t)0aNh*uLp)e8`P4PS?_;C%W=~7GJXVzHm=*?mD@IclF5uWwfdx32c-+8m z#2bx?%?ohV%L>pP9=q`TN^szdvG>7Yp#2Qa(UEuq!d~XL5b)o@0WHKD!U&gVFIVt=)H$2okDu}Tx)B`pio;A=A5B+Inrp&xPCpeEQh3OX$BruW@%uWAN ztzDz5onzgc0VLkY7#-5v%!RUR(s9*W@D|S;CO8g(3=xP)&$|c{oOFFktGR$5zRD`N zC*CIi!#suDB48o^7M(E@6RsJ8O;lXYtP!Ou!5)SuO+f&Q?&h*LYC+v9Kz4K!{96{- z^KX4dZHuJ{T?S1%t|fE&R<08Eh)&yQZi+!XHsMCVO)2pVe`B9`qqPcyK!Va1wk5lVpfP0fY}ATH5BfMrtK>osgyh2el~5JZr?&-X8S0eYqoEtug&%g-0N%Y8kPIp zI=f2cURQ6|B5c7gt$ue-2wiB!j2%nq3ZjorPS=s!YA=X0LLd~6sSU7$keMZ0HXzm6 z%?UE~=&P}=8n2~=4VZ~*R${<^(|`s%;i`xsZ4+*N;;?+|VsjMLHR9kc3-197CK}}Z z_C_@R&y6_OeCOodoFk;O>36CY(O*GldHN6siyz!qnSxegXiK7P6{Ri!HL%xJ z6HB+R#FOxIc6+q{jtOcvkbXgXD7Dvh#>gNKM%bfH12RcT4f)0P+k!*=2&NrMDVsa6 z1Vu%z5__ayDXJepVZRnpA5F_|bY!@l4*QyT*BCTc8fs<-IH9qU47K8=;yI;4NyBY(W0u1QpOABLIMPz+MwstovULV13?XHs6 z3D0xuBP2Wg|LUjw7TM|gr>f#zc+6QJp_}JR)^!NKegc%ebs$xfkC&n$IC;1uEX=SQ zo$0IBr8f=>??iAVkq$R!;BT4D1~zbtMOX;6^EbmJM-?xY3U0Rp?Uq!p zt9Z`%3u|>%Ij@rmt8Bzct)apz~dw*p5#5Cd>w^0kT+gl z>KlT*OT9BlcD(3W>YAY-J&Yh(BmEY5lf0-4gSZsAr*IPGwFk+2&Nd*6G}QA)bB!Y3 zz@Or;|H44`@G|=<6(t_GXG|)AR1FA8JbvTp9h3xUU(3J%45|pDTC`&f*z}f9>@l(- zqA}T04nHh9oP&cKMr9x2Y;}hj*>D37>#{Jtb$mIfY?PllmEYD&D?lKEvgS9;HkcIj zzMTqVwU8tkajqI#JL-?@R~$_UmdesSn9_kbJ(&Lr=IsSp6*?X7lhYR@Rn72jy-4R zhYk~MKgXUc0w13PI%)4#ybc|i(jH95er?Zn&s=8*zmuiP`~*rK+kta&@iyEL6Mv4T zh|t*2agqwrlJs9-FoaMBi&pB3OT@#hd|4^;5WBK1L7KhIQ634A3EZwsLNEuiM8==v z%8nw95rR?|oDm4@&_zE->$rmSO1^Eu7AF6Csn^b-fo?20Sk@e+n7d$hS;%BQ{d4;q z_t-D&H%xO`AOhg1X$Ty~qAwYcq|30D;f-|=Zdf`;>x{j?X015DE)WNpLpi`gagMas zAQ|b6_1W5U@!eRDd^pVj75d8L=}2+lJoDu7o@b5qI!&!~6Ef>G@Y+$2fZxH^iq^~< z9n54;yCoUWWJhZvSsG#9C^n$fIH1#JNmt{4cxOw;sc0LZE-FaWwVq}_F1XkI!h`lD z+0=ehBaAk`W6uc(QIDG>4=m*Ee)Bi`3{MQ65Iixh5v2l#Hx`DT+6!9@wD)y~T7HZ~ zDN`VF$ffYb&jh~Ej@Kb9D_$zOiV!iYCAcEo^R7Kwo7{#Db&U3B{v93pK24H-h5unU zr(=}<`^NmML-56a9iO=KKDO7X=xVzx8xb=NbwGqr+@Zwwp4r#i3xQF#e#Jtr1M=qz zXwcxkhzIJtQy-}3;a1ZH%S}$UHtH{>z>m~Mdgfy=jt?H64Uejy*n5?VqbKK!0pLDD zl1Ws}FWj^v`b2Ei71|C=-vSJX@KDb50E|}cKj8nTfvugymZAdZszrTCBCTbh5&4R?^G5c*w zZPC*(|EN&R9)3iP!kQ(wpU0vSH9Zt+Kk2hT1y(t{7QB~jf_SqME7+A`1myP%fMyXc04MezZ1 z|Lop%Ym3FVu%oBsV`Y`_ix*fl^6*<=ylu?T0UKgawt=bIUgzj)+H&3Obehy@)rdoK zLhoB4ggv}!1TU2Sy*Cm?bw<#M*Xl#*I%Q*xmRlp~U_Jb#`24U(23gU*81(aNE=H_gkcEEur_HZh?nm z4%I)?GFdE#Up)h{H6da7=0mtDdF5n{H1(;LBsKH<=*YIV1X^|uu7_KnYDo^~I51>Z zj{vLC>_ZLje>PwhfZ1;n_kAm#RtfVo=*CH&A)S;|t}6N{eM*8`oM$?k3Gt>>!fWJc>x#57zP z1ztn+`}n!!@s@Mx4-HVXXxrr|q~ART)^z@3E!VKTcszYP#W6`9tP>YhgiUT`{UPU| zZ)R9j8|=w0I7MC|JRy(Kj!z)>vT@WtEsW(~OTe!!g^ld*uXm)gNb1z^3LL9o$6~M{ zINyGQBhe)_5s;0II)bZu|$@( zWtO$fL6nad#%i)Otq0oB?d)YrZ;F_a5*8RYRx!iZ+f2b$^bQR(hGiK+X1B@%Nr#GX zCD>SshmH2ht&oy3LOv#GisL1!&4Fa_Ul&^wWGu7)MaV@9DdX)s9g%L=vn{t|C(i|G z(muL6^9Tr#+Ej2X@IOeC_ED<7C0`$kFaB%0BG6s?c}u*XfZzWdE~RU_Zwzr?`bA4_ zjI5Zz;>uxy0P_)P88q}niuAfED&es&NxVa{k5{i zL{1LK9kVh7A7sTUUBSLS*J0`h{^^UIt>%5!d-$e0L8``R)nadnT z_wsayPW`_K;C~T-KLT(A0TfPiJvL=go-{Yr6%dP^yb5=!t@xMvXb9qT+7kHpaPH7C z*Y0^ZXu)@~>d^@HeUh9p7|QOf9a6sPUHC(8n#z33M$KH@3`KZz1KgDw_)3RBPu?AS zREGkP0_!Q@&qymc;$WaO<}!FY{QP&He`X!$^hG}?-S>t|iu45PilxYxMg<@zpE%?4WlA(2=L~G*Q z3l=#(h^3oHp<2jPtDx*Q4?37uHPPWgoI*=KtrXf-`BXmS$V7YzT_Fcd^xlv|ruS-x zJ%OFWp1eoBF}5|peS$->c?+}@H$T%BOmFsD!x^m_X~Qx{6=UphvJW^C+{O{d;z(LP zSTltR&c;pj*lT!qe%|FsqV&gX+9aHBI9@ZLy=1j}@2*XQV>xu_zG?{5Zmm+&1Dj@P z)cwu^CuMwRPNlTXK;TQ8AQm>fXLrm_)s1SJwG;9H`!A}^p-+N)rlc8IC1fBMR^KZN zWDhOH6&xrlFEHiNmXMw-RT;T{4~3##Dp>N4I%iHe4ga-1Io1eIT;rMnBh33+;@$fX z^VNf| zaX<*Z%sZEZmmuIuw&C~?C;LU)kUHxZc(6LW%~2|cDz1REj^MCedIiQd>lVDTZ12S} zwj`i4#@)Hy(G>DOa>BTGU*)(%^S_77{~j*>hl@;I&b-E+=EmdK@4{V%Av`j;gYdAG*vRT;w@ydak{2W3N=c`9`V)7U(+Qcoc%`Z3PCE&Uz6&gACr>he(pr_Ry&Nn@Yt;^E$Tis*s?*(o)L%|P3_noeSJNe_ z5hXJhGZhD<7eURBTsFeDmis_=LGMoo0um-64%| zY0#irH035#BR}XZnj$xiTju?n|6lI2e(x9#qzf)6j;1?PyTa($R}i;3sA+9*7vAIe z3bMB=D-wwBY$dR0?z`&@=wNmHVxu9)GSEE& zDTyxjmcsJMxJ%2q_=dy!c6{?PtmNyKPypmFh=Z`^yP?aISGkC>5X%7WZG07?h7-2N z%u!r?#$Wz=3t-{h?5mgR_5*1jOlps#_E&+p>X%y+yXJcyEQF#kq|e#c5)^v4@=-SQ z-t8P)=S15)IyKM^>{afHhFr&5R;hvqEH(R+{N~*a1P(t8lPf@i15yFFx#O zVi7t>kv-y=MOzTH3gfk;~;d?1v~DBgWl9*2XUJhah5~g)a{3G)?SkY7TrgOa1^|zhXH{Z&= zy5o6hgNnH57aTPlDyA(j;Ajynzr!y$a^+C@iwwtXz+b(H<3_-J^&$?a+f%^fne!6g z>^b%3mp}{1<-P0;o%^z*K~6pXGS~|OZr&@7DT1E3%Nq!P6~iE&PNJ-hsSx$W1?z$8 z4v6V};ixgm2QseNxcLe#Koc%<@|~H5^TA>@bPacnjIk1em`*xW3i**|zi`Cn%6XZM zTgj|)MJUOlWZ>*8`f1l=U|9arTTs=&h>%(n?np!aGIf&Lz--mr%+Jf&S3 zgIT%mOGm7?ova>hEECTw;9QEFtT>1rB69{toscAg|C-)jdh1c>_8Px(B>3_&=dl>9 z=MrzN!kK*2Xb-%($(u~}3Pq|yET_GTaFyo*T0E_0=`|B8^!c(w>fh`5O{nf+>w2I3 zU|E9QZ-PGo2x!lO`2ZE!;POPV<=ohE@j?GrZrnxhVo;B4Y16r{`>W%5xj8Zh7~a+v zC3qC>yS{Q94|JU`+z<#Aa_Pn7*}&blQD;R3P$lrKREz&pUra_^zSN9=O?X(Ij_b;Q zM@Fga8B?QF4fW3F`NmM2lbx|P$3w;oJlp9b<9{wmJt(+yz^c6&X}jYkxQi91Ri|qp zG(pOSGOT`zW=IN6;iGG+IJ(Z)8#NqNEsidHh4Pm}99{SdbuqW1Q*^5I@I@*l?qwpY}7=vg?5j-1=SMGU)nBI4a%I(1?9FG|1I3sHA!*G8wQOIvl2%>MeqSeer(46G~94o>Y4p z@BwmrTks@1$#kinRZ9(i?cNxJ19W4I@6dcF`78{aw5Gy>DXY}rNXP%F?uhK=B&i4%$;9IiPOB+Wd zSDjQpDm9KGH!|x+RN6P;GmIdn-0QnCmN(U@-6G?dg3f+Wp|O0!0#%~5T=;OgpR zMDRlRAhtS7lD#JYf(_U{8^GQZ)*+qi=9#<$-V9TN7_(eEM)t#3i zMX46$WozG7t>fLOgO`xSH97cQT9d13575>Jph=$mCowq4!uh-N5cU+~l1nfLoD}8B zMdXSia!`aQQU1);Cc^c@;+j~45i3C7sv4e;rPL6@LvRoO+?>8_7^0xgUWmD9j|HqN zxCE(Fb%4*1;nUl@)(yfNBD@|-^Eqpvq;_?sVmJT;wRkR5z*q+R20S2K@X25l7$3+p z$OZEBHH2Ux>gOcrG`|egHltljxm_uqcB#7aylsKN2bu$@n=n#3?Jonb!vB~M(QRaj zo#x5o>kG|LwWbv>e^P~2FKxy@{B@1{S|~q*%SoQ!g%7x|QMLX6t)6s8u;t(6H_8W; z;E{K!E7Pgn)u^UpwJk~R=k=`+sQh={AEwYpX6Qu!@B735BkvFQ`tF4keRnIgFwTdU zvh(NQ{_@7=wg_@P)CjT6eJ#QFWVc=!?3$zL0}fs=uqY6xuyhqTlx#3vTPNu|Vs-kl zOkAvlu$o$BC|{@Y3bw&7&W& z3Av1ug_PTKTx&+;@;u$|@#e8$0LWi|4sE(OKgG3?kJ-6 zdjBl$uPa+0NsVx3Dy=vW=I%VJ^+J_vrFH;~8J)5^a4NuGQKNA{Ng4I zdxwhFbf(8I)wZk1A5s9~BF*xImq;5jGaUK45S$?!GJ#aP5_P5`C1rNL&UpHiIr+La zkwUNT&(E8D>hv3nMe!#Bq{RceI{>(NfU*wc=S`acXcd6Z0FR$1VSb}GL9;L@^anESSsp)2`(40k7S{$*)edP! zV#b0--Rr1nMk2iVq<*Q*QVDLgPV;(zsYt0HT-3a%k%}M6&uW;^^2>Ee8Pe4gM|PVm zswwK}4cA=?A5Wfoprw>Qb>a|g6YcsoNOD$XEN#?%feg+n(J=btq5NsC2{rHZ%dosr zw;UdmJQ;jFS*`|Y@Jsd1iR~jDvqbn1T%4`rL7N|xZYo=5!AozMNmf;sw4Fi90J<>P z@}@RkrHr61CrCRb=z<@(Z#)~fXKa8Rt4{KZ=)!C&T~`_=udcUM(vpFU?nYe)#5tD? zg!2YhC1P=7^>LFK#j;MCsVwE>UOZ7^hJZe|O{ehd*G5aai*1b) zZOP0!W09~P&91{`3(5+Mr@$br;~M6`XyGXAC~pwH#UY9|Ji<@kLgghxwkS>C?3o)z zM;fO`(Ql?htp9;6mKeJKrB*2aK4cAZKlxH?bN~&!(i)!19tL4V`?MXDef|CAmDc&` z{;g*xoV`8c#=xEbYHM9gL_H>SgZf+`$#X{r$oNQpQXczD)6dr6?gwOi?g-yg-igx> zWhS1wYU!>U=Onc~gN>h{%mfjQ+*rl z{gR}VY}FSr3`^;MZ%v#&E@_GxqgNeALBSCf!5w$hQE&%G92J%KJ#}v{0d)NRX5Ra~|L6T1(p`1xRMn}f zQ~RlN_;(`zj^p34V*?8d3x(vdf$P_=KNFl7u|+*S_*U_v+&Kk;xS-4=8jYx*1 z>eQINFegB8#g~)Ltahl6NEhPW693f!Nje{KyHFiKuP5FTWRddf01z@(uRRSik;d`_ zIf)TKBMJxctJgk+`Bfv+k6@5p<%i!8geB<;RIViFi_W2GPFBS@!jzPfh2`x+TRV?S zk0E$v0G8|q+LapOLhW+yyyonIGIG4o8EikkncnRUC=7FrhdiL>`P z(Z_%{-WVeKo)a~OtZcYekZb&SK{y`R4?Y$eL=vL8AAceEvoqC8D%D}N_l@#Op!IjJ zNXEI7a5ZAw$8k#?;f5@-(wI-7sQ$9CNxFM*Ls2$1)rVSRtTRcs6aFgMKhH5-D0LVS z!J!2Xz`}}dVXi|caR_r9`k3Y*1?mC`^BictDzNQDNMe`aH$iYWp)e~7MVZpc0b@Ya z3J?_w;EE}FU530QnX0Uk3_*-r5ZtaBjcG~aDv6iga6%=-U zY@d=o$fI(!M(#W}RqtC4H;SdC*i_jxx9FT{|16A32>!}AENoBl2+60teBxY~m|6Rr zSieOq<|byQ4aocZ+i#zp=Qc5ODH?=-R$+7$gi$jN-grLaG3N_C9}G<_2xJKj6CEzP zU;u472kE9f=6uNQeCS*>HyvpdG5_Z=scsxkw13OxbP?i3$G?@}dD3&!d^45eh8MmG zcUwF=?Bo^vXzJ3%?y??sgFI+%(0Q=jAWzl1K@Hf(34-S1*V5fYc(4dm$=iiq`ElD` zLj!*;%!B2&{6z`iGy76$|D)yitHeoC@8ji0sA7J8vM!eEakblEvfI&}!oLkrZ!J4m z!RJ+p?C6u_W4Fi8(6BXo%ENScGiHXuI@T2mA@aDr<$juUb8ZKF$-g>>g*r>4rQLhW zcg_fu7r@lh44v#f--;z{Pbbu(?Rm9Ox9t!_LsqtC#js(v$sx?K@ixDQ-l+I+)v)Et z8!OOy3#XXA$~Q@eR#)Kt^VhFc#4?8;R66S)t(e0ypRO3k-g>>FiS7@Ev0q+>ZuqT_ zRzUS_^Zp7A`}tr6F4cf7z4c!Y!h-56G@>ym;C8q<`vWQY}A#Ng{<|;$~boUm6gft#~;gsy&B`W zD?!-W8_WIJ=6g(djNX?uMtX8n<+kx`ciz+y?6dF71K7LIRwl5}8<4`Dys7?Puss>` zW7y`smC8Z-$EPq?2mRzvm|smcPj`cph8{(5g^Cp-LdWjlLu50pcH ze4z4bkuCF|6S@6agkDxKHHhthz7mh-D3wExgG=GHviz4TgW2vED>dxyeU-1Xv_q96 zG{ue%JdY=;W*@55^B6w!=+z&4G6PCXIa#X?RZeBi|3EzR!TBR)nA1nCXQN-LoWQJm zD*GT7TiHVCZ)WK`=4+*@rz>kjw&ZYeu5X9J4w~=;{_ax`p;`J$4Z-^7YH&1<4w? zJ4f+W2R-KE+mZf!p|{%! ze4IvBdedDQN>dNNczqW$TgmgH(A!=SI0~)vw`xIH$BVHtKfOc@H++pEC{_vbs=Q+4+TXr3p%t_g z;SiIq>2UO#jLK_A1hPn$ux$W?1#P<^gM>lP@`rCz09JS)&7hhiKE=0OZ zG&940K*@e7gV|6W_z5zsnk3!D*xXq)bOn?Bi_Zu+(Y826-6Q@Wx&ccRKuGo}?O7-; zfCuI6z_UlKrXmorPy^n=5B6kt=RSlp(C8LVXRkm9S3axTq>Jya z^7oORe4y$LDEOE-180kmRgGdztrkD_Kq3^7Hg2i$V}?z)>R9H3lOovRNt1lpvAHuc z*zP}-YNg?iSN+i+dzsSb#qz5~Cp&46!yB@jG?7lTIPZCWf%#3|5z)P+xtuaK_MhLj z@P9JM`F|jf-^${=cB21NrFU;E&SU0Uu}kdqn9TO7Y~qQbTfpA~`R|bZzqS0ogCOVL z-+}bM5$C^VC;j)(`g>Z+vk}BniazaK((dP~<_2iU(28{8wW`aZd}{pE@DlPDz?c#p zzvL#@loyzaDw1i3VRFz}KNrilLL(Pp;N6~`R(rB-C2rKkEsn_wY5)sVL7G?FK>5^L2VMRx*fh!6U^&z;*-ySf9zBw+zpOqZFlv zB!b{t!tSTSw;<#RrK~_*9a(3Jglw9ffUAoDq~||+y1ytXjISo+W&%$OhxQ!j0T<4* zg)&YR?7bRHcx*fr?*qbPyVcdhLrjrLa^&@X#RNQ}t{xe^CJ$>!G$tmim{uc5)6@GU zQ=}BEsou9eq*k6xh){e=r4MeXzNf%xMxD$_T$=cItnxIJB zTqKwNkN0iA$vu_+mkh}Nd&thY|6crmH@fqGHv273;yKgfOaI++{CA5%`Tq}QkKNP% zX!gkef3ozDQ9Xb57;OFUBT( zO6*uQu6X8rQ>`CPZ&An`cd@;NG@O_qBwvZ^9Eeu*e_EXv#_(P-lBEta8G_H!wDI65 z)4R+tKUc>>Yv&G=4*ppEhA%sl{ae_(r{P_};Zt*br4ip%$BNSP@uoPDg>Eez$vRW# z>gaVh?4I3Mt(DTWrtKkKsyBX>fX&y;36x%pGL@-VXNGBP*txo9K<8dL58&bylyuD; z9$gqLHAS0LDi-=(bzShl0IL&sqDo1Lg)iomL1LZTm}OzcZ@LY2tSYJ8BW?QF{W33HSoDu(;L4U_(PoO z&%YA*E~A!U=@nJ}%*kNxgj#HP?XM~~0wqe6ul)-m*bCu>0pS*V8w|eF0l6JUK@FX) zoviDh)#IYvsSMFrgcR0~%7Otp{=$PCq@sdi(~ALsU=#z@xuO?4dWOe~CJ!CD;r zW{xckBlhc369WXs@so1snUU4G8LUvL3#l1%$0}-ZPDP;WFufh-Ss5}{m?|W-P{;P% zS`sQbMwtd+>j641Bf0sBr3w+ad!VHx>|IsoMx4(i781)-XG0OP7-71EGfgOoVpYuq za#JDfc+IS$483r8bHf5+5b4>B<8>YAZElK*I#b5>AFH?WP7&lCG+w5iI?E9F1cJXO z>+K|Un$l0xP3gRQ1SZ!Mk=CVNSW)8ob@56|wxe{udWt%~#U*#*5;T4$_^{oJ3Javk zpH(Mm+2Rw`v9n=j*F1$%xN8WPxve?S*-`KjvF?C96k6Sh|sCbHP?s-q!J_FMUS5zCf+SDkrw zUVd_3FrCKMXPL^qvI4f86^%2{zoQHqu&;A(?ntTipVejR|H^njOv}gBhegva)$bko z89H6k{|gnnU2A$ikk25*A0_jZR%`Y%K^-r8C(G2Cwv5Thn7Pv0)`z)HZ)wbu0m5*08E;4(?1iYOk@uhn&!mtcb1fDdG##hPuh8) z#HY8%-qvzfV*Zn$`N%-#a1>^R&dRJ*X!#zG_lQ}hiWo4uo5pS!GIouwc-lHNsrxt& z|HapI(P&s0=k|*FTYK!Ou91}YBe^~d-S#D|4t6ril*-EdO;i87^)W4w8=m<0>tb3^ z8r1`@hExNLRH#kq{zGd*>9!#E%I%+5!#>W?UIa~H@oZM0>DB<4Mn>yoK_7k=^A9r3 z7y?)pWU7%nNF_yhb4{dNo4UND~kmNnWmiuY6~(|pOwQ9K9gBNemvX`wS!pgv_po*X0YP+919#8 zNGT`S3x(-`39uiWH93n{NFZtQpG<1ip_`8t{8C*iJrx9#Gm;o?8dO7*l;@@z4B)z+ zR;Dw#7=V9U1CZ1Yx8&vif1N&u62x5MJ-ZMEVo%e)Ha z+P$->Dlk>clC&1mx=0TyJu{S7Hp-+Psm2)j-L!Ox)vRLqb<+yi=7&2GkVnqmMEf{&f*DV9Mb< z)m4f&VWh#!HR$|Cjit*ylFzNYZ~eZE|I>9>?A7;v9|akz2@}}Ka8vaJYO&&0Xaqf9 zqd_BCn^_SZ8QNS)H1Jmbs}ASVXvQsMq;QJ~HhCpvmX|R@#{mzs2eRn#|3gjq`!fE| zH=$>7*RsYqQ&fg58$dl;NKZ(>PFUfG^frh$Z>qLhJ*Y<4h4@O5(KMG50~v73y@cNBFh0{b87j zCgcedCbF=xrb+%-eq)Y=7J*cjWyBhXuNCM(;8#-coKgILYZv|h%z~a}b{8f~@d>6l zc~|_OIx|QS$ImP`RTY#M%}kt1H+YzxWyO*5Y11l4A8jwYF#*a;254k$k#04b7N}T$ zE)F!VHk#rkpJdZwku{{4Zc@Vz6wM{qv+ZL{-M$mDiRUvX5LZt2%>k26$eEDJ9!xTo z${WBF{e_{daz}-aY|;F=v8Fn4ydj0ifYxGpIYldm34Ge`Ni~dzqq9}E{!Ia#*fH#b zv8HUPF4fd5MoyZ@4UA60be;zN>3r40K2JC01WnGGOnq(A1T2mDK4mt|l?GOk3Z?g3 z(@ojIlVn?{*_p82mNSJtpJpl!%Fg5lmdN1GN zma@!RK}UOhkrjxPNy`o>Nu9!W7nwY`OY2}&6mLR`Y=sH~`()#jp>u z(2XloO;i2HPnv=?@kCe-;G28j$x|}18_S%`y1uF|rX!b+ytW1>GG{~E{4}ie@69v? zB@JD>(s>HEZi@9j6lr7a4cqU1ZIo9_42-oxkqH$B8otv=!AJ@BD}by0@>h70Q$OR*D;kC;sd=w=M5Cv&^Zc$qf9N5u7tQJ2huKS+Jb| zcBBo|)U#pOLDdjn_^aA@!}FMVEcD0f3#cj*S^PpswbFXvKY8wkqp?SHlXGBX5u6n= z)|BHnehOI^fXZ2Rvb!*XpApkaPr4=Fv`_q9s0^s}thUJXq?>RpqXRxGDr{asVb=JJ zCEey#y|k@&KSxaIfM$5PVWILrGm(Xs=t!P+QC#5|37}5@;$=+Zk<40`oFV!#} zn{Nsf$FniHrb2(HOr`+|8%tK8F-_Kzf#C5|*vX2*NGjd*uxgTvE|V4Y8t6GH+nHy| zc1MTdI1DP;6LWaa^Fu;(@R7+6D){ys$6B83a0I%J>gzvrg30ITXyy#D`Z_aUaX^+6 z=qDA!#JM)*Xi>gNk!wxaB=T?)T0m`fD~~ff_(5loe@kD7tjxa0++uH{&|kTcv8Q-2 zoZYDMH8S^;jr#6%*ivifd(nj4td{0dZ!IEp29}6#^GEI8D*t9~;X4c^X$6A7Q*kfDf>ZO}YOpl9f!x3<9 z=Umgv?A7QQVLHkJPfA%{scEX)bK>E-@%nU3bJ*jj&$jbxC?KV@+Qu;R>s3+g_~WI~ z?50xFXL(9|!#a{ur*ftwCg$e0LUWn>>dJ0dyB2}#audmFPNM9i3NVZr!`f~v9L@eX z&oq*KaTJ#(dB;j|8h!iZaCYZSxD+}u&*Tti{Cjz@`3q+1*}#oZ>wI~+DOS#B-GZ5Z zEO-z$ba&iTIG%k{ZWKv(~gnWbgY|XxW_C@`sa>4ate$QEH?SNGi8r2G>u}G9InBLgOX1@l>rOjoNwd~^5noxG_ z-}0l_yAMzH^XY_el!I-_!R_Ua)S5r4Wz4F~nq>CSBl#f=uE^Npg;kY=mz)ayqL|$1 zEm=m!D0>G6La9Hq=BI?=i($M4>!D;9wGg3!0vf2PVOLev+^dG-bE&wx=KhK5)Wk&T zn@ei;UIdw`B8XHsh$JgT`lNnMW~vbqGOgXUz9cpDN8oM5Z-~$wn*^ztHQ58xM!+o= zg~khbDA*j!MS`inGI)iR#HKf^NK9yMtf5&Y ziwTv)l9*7;%y0mOl2`~ztqxAoB|u_)b#N-A-?LAIkAQQy6M;TLiMU_uf*^tn2+2MM zd2rx(P+R~H%6GwMp|}7ZlyBsmJgK+2p*ZmHw`qE|enK)daH8<+ zgUiQ9N(u3`8)rH9`!%8by}?eE5zP<<>EGj2{_JNoLcw&G=$PVy=oohm2fi#iRxlmn zUb06K9kWD2bgVZxK@k8W$uSEFlDP!H6cr>S{?!{iS_qWo#Fj(;%K`<*EwwSu-e91+ zrN@Rub_tHTa@-TH*S#&uoN87$H3SK5zD6*|j@G9R=eeZ(3N4(Kc{Fb{r|@inLUV~M z*v6Us96T=n=1m>v{&Uet1a1f#^$Hnn5Wjlu-?=XC-e5&QTbjM3HZ2^Ar_cUDYmUlc)I z;u~Fz6S}N$VohR%{2e%wqLAD5^q8e6LJNf)Y2rV0lsux<@xb??ijAJs%Za?D^CS$A z2kgdBvhjXyes(r;E-BE7n(x&kQEYbgOA~ygZL4bgeTsz+6u%|kp12o1G+jzY-iA<2r2oB+9v{?$c*ZizirtI zR~M3R$hRf_3CW+HEx_&}C2!78Up|hKZ^$<+A15bo=EH0?yK);kNXgvoma~}!_&BY`eEUYJ| zAUKd&)6}+v`vE(Xg|?t4{m>AoOVaf~P;{}5)Ig*vY9JOvBf~Jfqi+R9VMGjcE;LPr zgLE!<_q7p-21L2PrC@4Ztdn2cP^!cr1YC= z?+*+D$s9}~XtzkC@2=e{&h9}|wK`U3WB~S_Mi4MgLO+DA*0asZcm{DO}3fgI}bwfTmD9Q1f6y8HsA%h#UM<%M;iZee%5Y6j9DuaynGD0Jaj z<-%_LSv2$kzqz9;0i*~AP^8ZhFGT2ruF&QVOeb&ZFbwuV0Vsca7YdJ4_C24-RglV_ zLy1PUf(PZ;i6rc9%2xoSh{c<=h_etXvy>a>)kH|-d-onUN<7T8L5!T<`89V4<_;&w z0l%6%@T;Le&k`>mg;>yCp(;ihu5p*0Hv`JP;M}r%G{D^gjp2yh<|qw@2)PiAVX6?n zp7Ev4A+&SG8lem<0CYI?c7~R{A3@}iXP?H0Y8MX+c*##Fc|jbwN^G6N=6|A|?40w0 zNE}vK^xcV&l8Re6RYh0Sj zT#DjGlj&8;4{L2-pi%YPrwWxR03sv)tMe7t2unM#Z6E*{;gvC#cF-%+6t9M_4sYo&8Lw(6AbQG)7Q7Teq$+Nchanx#4NBZn&1#@<^Ubh>VO>WF{ zruWVSYA#MZ2BE_XDpe@VTol65QKS6_!j4UGy;-%P0UXqCUZgjxHZ%b5H-3so5KkI} zO8#aQs&(gg0|QlM^RBA-NVhV-A+ZCMQ(NFQCd`foTrTNyr>g*!`35QgEd!P-1*klC zOu!MRP@cay(S$U=z`#(B;(!?{@;Ng+uZ7uSmlK3m@V@y5o-vjyE_z&8o{s?6+5#$0 z@uVchT`eyL2z6@bRG~>#&E9<`Gup|uajnE&Nvw*ci8?PttR}~vJndXO*8%Y03op#z zKsYd;H>r|zeV7xQRCtOVG6KJ%b84z>5DvX|KDC)DDI|L)o?#%QPiy#_e@OO%0L7PD z!|^=fPOagMXm5m#XCY_}?}d7YpPhi#a6J6C!#^749lmmC`c6>z+7JR1gdxRf3h*vQ zQ$XtUp{XF;s}u-7s}usucU*W-Zr&e~kfgkv}fFDqg zkuiUUOUC>;#FOe7Fs+j68Pa|&o3H za#OaCqf*uE^D6MuI7?6xcskgV?$3BFtbl)}=fZN~qQ2o|P#WKih*_Kn6ojy>)+GJ3 zn5Z&Y!<^QoVJ;ty=+ZDpZfKYrk(eh0Ctmf(Kh1Hemh)ToS>yHzbx`8|O03Vr?=Jo( zPrdrbM(I>+T~Mg{@?RPypR~FlO~?&r8ijnU%EIf{_LPRJ*yheqJ)4|W_qqDBGmR{1 zd|jE-PiPWCb+8&SCS_KRshsDs+nUvR4xL*n@T}g zg0522y<88SmBOu9!1jUm5V0+GG}ebIp|(3jEYrs{`T|FURD?3M5rbuM6{~okxFqylEzEA4zGhtD~1IiP1~fKyE-p?Q?Pp&_1t?sN0db#PlQ>-V^V=*O|BZoH77Qk9p?VLgiZ@ zQ{!*=Ntd@}bN1QAB2+2>VZ7~27-yAF?TzuOKVb|hrxVJFy-~jKBb2jC?8aCXMou$U zG{XA4WWCO$aut=&mhM_Wa}f{4)TrxT5Dg*@9(5xV*8>vIzZ3a)9KI8ISFM^fnH223 zbIHX}2HAMbcb<#6eLuRc2|ad{bm+3W&-2v(xU)(6>jC0$^?gm!!8eJ+BkpgK-hG!i z+?-_(nK#->-|+Z@V8HUNyY7i-@5=Q5*!i5zxEAHR`l`{W~{&0pOty*jEMw2ja;OMjnG58B51HcQ`5t_N+aeVdtPN_|<* z^}fwQ=++0-!bO`lU9@%UE!%AE?KbLw^ruqYi(t*x@fUGLUNXgx10=3wJGRzOk)E1T z|EiiOZ~7gSn-=5}35anAe%`9eXeVKYU9Lu-X$LgQ9fX4fZ?!4GjtFHk4rmgjIt(u88ZGwowIUj|J z=iiC^JC1*2aK5zTI->2N^+!P4yeo>!U9{ z)8d!9!7P;?zkPP6G(EB5Z&#~x_nM{p<98&*O5?O0*o^odd-o0eq=_6(Q z&~VCE-SC=O8pyfxX;J!2-8fgJZhzg(Hch{?huy7hyg~g}_-@L*Glp4ojpLo~ylxgk zBSleE<1d)LP+=Z!_!_|)0HLYS#lL3&lFLfBL;}o@ z8|mPAkq&Bgc^;ety7MJ;KnL~CHR5&GfI!M)G)7|GJ`tNI1JH$aV`Ij;g7mswIA&Tm zmWtwp+86_#Jj1sxk4S%5yBFs}Rzt-05nB};kgKf$a0PT)UZCENUy7;wLcD>T>u`p) zN{#2(P{2c8Yy(!IcyoNXA&y7M5Qoc8Hnu>^e1|Lec@^@nQoN$L-yaHA6(3b1EJm2P zmp9#am{}Ufrr#|`rdHEEr0NHVG!`|ECGDFvKFAloIX?3CkDCEmH7y+FLD^J1_c=ah zJ^TRyAWN9agd-UJt7I*o2J zilc$cqvHUgD`9yOPR~{#{pUsEO3pE3G`iieLUFaz#RxLX0Q{|b<3`+v$&5ry6CFFL49Ffn3YrE8S(TR*}grCf9SzF6r~W8>UW>dj*<(v+8PAElEPRWyF)tKN}r zk>-4OI|c#2#WV=)&akjWpWNQV4%A~15Hc;S_1NvnY*RzyXlHz;g^o((f0&~{f!y0^ zK`E-oBbaVRc>s+Kf~p803<(6JkwFlv0igIYj6nJMt?}LT$`SqX>3fbDUKjBCuRD0j|PXBs9C5vp9IloWTFAl z;`uiu3gC|8-x%Ki^d~!2+?g}4pyED1dReur;MhxoXvn|qQYa<5rjoB8q z!`4`)-U-JETVt&A&)F#REt_w-)-&+!14z7%O5rMr6$4+JUw6WDfSra$+5#Z!A~A@y z!KMlBguYbKa%{nGEXNwL99uxkG2JZ~z;JBU2CFDB17S|teeb>JTb(tYwK~)0sdV2W z`ZG%OwPCXJ_s5=3eqIrtL4;TR&x$Z) zB}fZFR|F@r2!!34FZ|Aman8cf6$26SR1d{0@WH_bH2@z>Y5lrBPang}B)h#j;BT-| zl8cX)ESW}pv};!v_$b8xq=%0VO}9u+JMq!`xfbc_R^p?K85VZSGVoD39A7VMjBPZ} z03S`8Hh-RnkGcR7i#&W36Ezq7tWFTsBNM5^#q;k({vF4^!OwTxaR>HYk2#i`T#T&w z0eQ48M`qD^7WU|JFzvWJWOna{4Rj``tTv|sByR9zCJ0prq3}I#Vd6L-wM>Nyc;G@8 zOMd$0Q2Ea1pre><3iD|?b@|C959zvkND<`Y2rZ^chhJfqL$B=@bp3!9MkwGy4wfrg zQnfXPXjCRGGmBX!>FMUd0#S-w)2PxEtW~{2>+>#UA&JG>dXVB;tdZNjSWC&BjMDGy z-dp1;z3bZRy1MtrF^N23{>Ks0IQ04FPAInkzR}BxVte_Q?Ah0^E(#0xf8RAOHTj% zGq_|+$dXz&nPHDwpq^VbYB_u9{>C=E04Naehs5g$YO1bS#AoiM6t5nuS#D17+WewdRR!p<9`?{NAosnr)K{Imn z$k85RjR1)wy_j;9rWHeJQFpuQ7+U3cG*l(vH+B^+(YrmHJ(;5r?RS@Jcy#m#D%ilv zeiW=@((?=51-rA|D&5blecMnj3QZBHvFP}q! zX2X&Dd{gZ5#TTGJqeqV{^AueUNQIDe zZ3<`kGe^g`U4`s^-{w@-eyk}-+VetFc%J(3D^`Y+mqh8G0nML>sE@v3l|F_RbB+4M z5vz16z8M9{f78l*5}L~VJM>m3~SivS%N&vcQbyGIa|a^%;EzRPg(Fu^4#{jWI z=H`Kj`Irgk{*Hp~kA8-ycN3-8{n0K@dL5H&LcW2h6#jV6oev*k^QZVkOV{-^e;z>R zHS>N4vB&+6^Tc1H#BaL%v?uYW=5S)8q<1znYa-dVO@q@HS=9X)wCf$S#IKO2bvO=3 z@f&MV>va)Ax2Te@+3J5|_1ggHu6lkLiDSJ6hjK9{O7F8~oyNBu3zhlfR)w)Mn=*$v z`{=k5Cxd67w*o~zfGqSid>N2BppSv$Cmk@)IjZ!+eA^cY=bTh}A-w7j1h3`kByOe4 zJF_qRfN{=pR7paas-&-PL`j^rD9Osag2ZSr(d9XUa1-hYmvOPQL7uj^*BN(G9*FM z-*)`sCQ&yT(lvBzSY$vPY^1vcU6){12?Jdou>N78Bk$fkexJzkkP;4%vGp!8=(XYK zP#t;hwYMPobv6bBIE6-#(GXY_=!2RWk&O#rkb@0#Qy|^>zKV;e2F0ZS1@UEEBN32X zI233K~Oak+WntwPLxvq()_Yo zRb*g>Zz1Pd{;5?f0sf5|hlzOG@UPZ#$s_gDiNE;zb9CZQw>@HYjX1tXcH5-Vr<<|l zIljjx)vL`|@_fI~CbdPFu~P7T#wM*DX2uY`@EIGsGTL0G?uX-@XmjlF%b&pzofuh5 zci+m!;s$`kOtv>5C_=i;w<#+$Q81w~mpImhMWPXxqxtXWJk>nzyL<8g7nVBMo{KYK zTxA?*GCkzX;Ou|GnTJEEw!C8a*vX4CRi(=yJ(@Q0`4PU1<#!S?IM^jkIIU7%0*@I@*kf7KiI& zwZ6^ckUdU7q?2OkRU%s-9k=q1Ka4i3*q6-~KPhNev&~OR8Dm!Sn*h5qKI57qAF*85 z6y&CB3cgJLQX@|$FP%ZtzIXqarS7KP8)BCnX=dz(UK(bX)|Z(v-+eILE^V$cW4`Me zVP`uQm^Z0+z>&GooH|Y#VHbQUZTe87%Jbc`0K-RQ6HpM3jIc|WEHsB}ob{;EqL8&= z@d(@(F9?(H3t_$sF;o?WP%V8VpOszb^6&M9bzB^R&c?~a^Dv<&W6@bJfOR+|DGG5P zk~}Q5jdN|?U8&J+6`*s~_!g^1$3pg@)|JXfxPW^O>EaC8lPo2|#%;`upVC95>cKcI z-FV~%Hgciuh51=Ds~l&qZ_Ju7j|Z{!Y{Qk-OzF9L^E>K*r`3Yxpty3MXr00~>{e$x zLzf=pr{j(9-}BYeYO15J{5#pLR8QCDM>PEJbL^xneq>9gO&PB8xlEeeVb*G#LJJyX zO~gQ0CMbCzQ4qcd5{}w0L<6jepawamvhvzwJt|_m?|AW zRC?WX2$-PG$uh7KNQvIAj|n2ZuWa(h%!nLRG$rj_(XPCCMY}w_qFo*&En%<=;%whe zY!6FqV0&Ua7u%ED&GxekrqGCX`bT2>P4E7=%*FP8C+@RL3H|2a^=k1&yEOiv)B(a? zw@XFCEa(6UN9Y&{oiDPF~QmiI|`GT_yUy zi4HKYhdiJFf6;H+rMZcg;Tp*}-29}<*@s$p#MdU0gjq5SSDgYD#H+`pH%8IO;)pji zMk(UeJ zzE%QdzSiA_W9Ny29m_45#i3*dde&BvzGfi?oW2_M5}#`5?X-7Wr}F8?j;Tu@V~?gF z_Y{Ot6DPp?VD>R4C_Np^YmF;7pgNFpBTo^Gf}Qe@;^vyT~MisBgzN8O4G!xRDK zIfsBQm)w4GcG9tWOQVQgjpc5Yvlmri&8zV@Bim!ig76rsB4%o*(va1iWI5A-HM$i< z<01sVLP@;-4nbFdk@RB`9=bJyzmfa#>V~tcd^-p58i3b9xachK7I0NbyjDoy2i}wb zj$6~W111bO(CXBH$O>)=>(4-q|C7R4qNwY~BrJ z7GKFa+7cEfnGaYrng#u+sE)3>z+Pk~junKzBP$%+Z@`MSBv)wbB7u;Hg@!zthXCWF zBIlllJQw!>tnkfI&Np>=OiIekECi!;Acc4+)oORF;LM}1r8I`JP94@YsRm*t=y{U4 zsR8W*;gb{=cGR+7I(87ll}#uHFFB`IC;k<*ra{<6=B0t@={1qWOU~(rnn;>P`mG-5&TI@xJB*npZTV5K|W@6g%wr%8sRxM?cOyNAdl479ZncW1#QMTBC#hhW{@(D+;Z8JhvBq#_7+%@9P!iH_G%w^uA?;Oz8 z(pBh73|xU%D6il*M5xF+jlWd?xZ`R;p3ks1==akf7O_CZOw{ieCOG+2)Y7FeT$c7Q zEkSyz0| zJ>V+tQ~j(%d_6^^jgSZDw8uGmvj;iVpGKpBRN{X*xuc?P1_TWTQc2KYAT@Rb#G@Xi|nFSazZw2r7?L1a!INL4`k1yZvrUv{pLpwEnDi3Z=-_+SQkE2-(iY3k)NM z5xkQ{tCtRGb*w*T>huXJxz%UlT^?_AtEbTuR3SnGHF~ML(HnT9H(^wp$>naboWT6x z)#y&|R#$L5tu6!J@RwVi`&4iEBLUv(yf$4ZXmpp88r_8}H~RcEYIHeVY4rJN)adh_ zX}s0A17>sM;$yu)~vG^0HD zNi^a`m3EBTDol%vH83_gKd<|=H+M#&gSK)NKyO%Yx{Y5E?0S)7Sr8; zKZY{dxe#v&5iXCnv>i=lSkV~So`sf)EW|hUPWDWLIg%aNWQ~^cueJVFC5`^O<)0za zg>PHc8h=N41?XB8Uaw(0Pi730Ul25j$bUGXLC9*kDt->MQ}p01&>UaDa8!EEL8&X~ zZQpZ_NL@j%`gw?7Z}16`r&}yeQTo8jA6{e2Lf(Fcu&E2}lY~@6_dWF&ah4*9g+=Ppz=( z7yhvo%i{&8nZ~aEgkX#e2O(iU21p@7Z&;Gn8hOi zrsWRIqK(9{=UqZfF>dSZBhevL*!kE;3YIiPvg9T~d}BL)@vt2zBjA$J0#(QHmWZQu z3<9dx+QCIglp74AyptgchP=n?b+6%&b>0}t5~(7$WRY5^vC9KIr;?JhS9K^6aL!7} z?pDNPM5*9YtB+w?^Bv8sBal zF{AAllS!?~v8tvQ`6*6b+dVgS%jY?nTcTxiKkV?JJzCm7)AogWo^pk2q1yWwmgLh$ za7*%Mj?%Ts_Jh`oT(##n=FAe*o-Z@M6tYyZ&$ZopMm;respLP`jzieF6-%X<%k4OX zU0l6X8h3*ohp@{`OQmTy+i?i{m}x01y~SRpeiM!xZ?VVfzc4KoG$W>to=w$Bf1>yk z&=1~X57SH&mY|4ro#l!21oRAce>hABdoS!v@8O%yx=urnvgusdDX-A$I^|JDdUnu` z4R!HPmScTV)Pr_4Qd^GH8am4oElBM!w$*ZK^_}Szg*3c1bQ&rO<>9SfNv%OijUS7$ z`)&l1ipJHlWgtQ9sio+8@^OQV6*a^yXLFiNke5(M#M(EI>{<9*M`oVOiAFPNK zmgWKngO{!bk8P=Ma2Wc=HYiOw-G8bTeDBghKB@)LMng9p@LVG}@ zyLSXUZr7riWtebmou!F%?XWY+RZL4~y19UgY3nqY3*=&2lw#Ukm3HA?w3o)%IluLe zZTs!*8lxe0nRNa5mV2Mm7^ieElji)~5>=})Uh~Q_$x^+f#;h^!s9i4o<eyM0@wA4ykO(@`qMvjJ3NRlJ>pjeSgvzA4u(#oLkyz)@qE8{Haqq z64dT$1RlTnvh1#!IN)M0h z+y9`(c=hpBlJjuiq#rcKBimL>j~rMr^FEC+Y{nW%?C+m+r^fi)2WzCM@hcy?O=JAi zO>3opJhk%Uzi5nWCk{yOtXs8zyTn#`r|`Iw|-st6!_v7474DBU2vy>8$&WW29cpsG$da*-sS z+(5bAaMQ)o+($R|?bjG17GEMgz3zg($2G=3{PPlN`m_r#x=CY(W=EE9eZXLJ?xUrS8kOy zUwLg!6llKaI_cA$*M7VY^;~+r^m5BKpJz12xMe_1p8}t-5_1Kd;8$48spD@ zyYZ5=itXY@wFSl8+&fOyyIFdCn8$=1XfJ_~>c`hddn1XI_;_*G7i*2K{= z240*!Hix-SkJiM=`vct#!p040LUoruIzV`kqLYLrPv{q4_Ae@T2Y=#pq07mPP z_OcoN^+J3q2KYrmLi>yXEYqPZ2y68A8A+Pa{{2GyfN;C8rc;k|=m)TGxXXUvD{jjuGeDuh>LJ}%^@rWX{96QB+de96L5$qU&oh^OkZfEQNMJg zVWCl3yJOiWuia_QC!WUbV5#E54z-*+e{utVqB~w0_{&5$^p~iZsz5|T2o|cPBjrig zi=2h-dX+|04pykxUk4`Wq!R^$6N4p|HF#@~G%sWD7ty&GWOvS(lR`6m0vhf|{Duhi zarm$M9?QsjY>hhk)@UJWv~vakyhaz!@NW>}r^+>I3-;8gEjUU0mFWLAukI1q_OKDz zi*$HHm%T(w-^*i%_??0+c<^i_G!2^RJc;^=@oT8=JAV~pxX4=)7(~QHVtj)T@>@hW zIaTK+Vo;_VoS^Z)SB$U2Lq27Lw~#Y~7O{9P&xzO~#*_!kwc~<%ZTN=b526a)yu&VC zuq#+}u=j$*q%Qb(mPILud-QJ2rX_h0~;NVxj_ z`>$8dtb5eC0a=-uNru9C1x2O8a^F{^lAytx)hzzgEI;XrA9jsZIn79K?TnI?X^1<; z04+AWnay#6IZk&1&1^<9ujS2Lj%Hpv0|4I4r3Wt~NBjRn;LX}Qk_XMdS_tR`K@M^Th&8LrkerLjb&QU z!71e%Ig7Yjwp?l19(GuLThvUnDX$8YN>9jMZR*D4Ac`T*ro&jSpgvFQ4kC&7Mli=~>vdSrIJsrCt8as?845W@VAmVpjR=u4uOHbV=w; z=#DgZFE`AFQc-Ry(*|w!mNu9jh1s572X2GN&_o*<^;z1wWN91zdZARfhnu}vMVgKg z>|o+xd1O$Lqs`IXQ`g#%UX?qZ%|DUn4Vrx}s89j1%==2xS?`y-;@Fg%tg+jdSi{-j zdv>j$p3?+Q@A32;XQN!@(L3kIo~P$D1O=8jdTov+c)r_VqrM~9M0()?B?{u*fg*mn zLv;oqf~Z{(jSJ%Af@tqnkaeyg-!o^@fvXlH(%X# zw>kjqV>v9A-zD~XvyV@+T$YUW6JGJKkDEo@j`Q#eD9Zz{=(JTRrh}NH=w(q@H)D2+ zKRD+37~CoH5ur6sXpPgYz=+U_5n&x45n9uoa6wOrJS4QHD?`Fo8WLjiQ|QdA7K&f8 z%kzee?EvzDyf)0!;cLT^G^r~8y>gEqPq zCwHZ=!#9oht*?M;X_#E;allLox>t8E-4B{OmbBTSd)Z-VZSU-cl^Mf|)}B@i3I5Qr*Oc+!VJbyI~ycnT$!Akex|tV%dYA?TQ&=z{ia->1_1zUg&)Ac;fY4 zIxWTV8clqg3@O=Th`v=AA!IvlHbs#xyf6aO=5Q?UfqHD{$cBj)Xv|%q=%RJ!oR#IB zbxy-LC=2#bN+Zf(b8Mr@yR*v=Q2*Ap*KHar)WV?bUg{n-?NoTfOr-*F#n%v=me6WBy zn}WV2J?z1vS#hlS>S8@xmzZN@M~6+)o(JLU%*j4JJPLd8qw&xSd{1fM_Uo-a%>HEU zNS1fKb$qGJenqhD)=|@mq>CJV9lbp%oo(h-_U@E1T$_BA-AYidPr0LyO!AR=7&GVq za~SMq=oas3bM&$e8%oEp%7&?0cJuYtM_A)+rZBd=q{dHbxxu<5h&^$$HHf9(2KDDx z-)PmcCoU`qmfpU@`lHC6>?!i~Yg5kr(plKe(Bq5P;jF#i;>%hO%?a>D9|Cm=xh&*} zH9@s`S}s+@Sq;pHbOEf-5pC(rm&Y@%8O*{*X9I6rlI*z!LUHXyo#cx zBABXZHMg;ym*ym~N>yQq66(uCXRfldgliCT_?^4}_O_}pjJ@T|iBfR{ zR^4Z@*}Gxmj3v}&#jwuHEPiZ9FElR`Q?MT&v94mlw_A1W55tNB$H=_JYrv3bFdEG1 z{Dd~0bWoEHUh2uD_?puZ#r9-FWpV71>R7g>pdcs8v>UaUYZ!915@ieh=mws4d+TZpr!qN2Qbq!7GT_6< zEu=yQ*iAfvxt&S^ zuI(8!t##Zu?~3;X(Si;Q#QSw_rqY%JF2e{J8Qz_n+d%_AQ{Uzhc!z<9_iwp0Eig%y zV$MYdIkQ^3dwM~^G=o{za194+bD7gSNQM0v!x~RZ5%VON(=8?Do;khj!9Puk3iKk; z%=Ub4GBQ(1PCRQiWobe@HC|2qmMT1!ef5AjuLr zD!G>rT2&;rW4EOmT2l?n*n>A)NBn9F!p54+XV8+4vdP0Ba$O2jT(IE=Yig7s84cm~ z>%B+Avuo?WRat7Pt*+>tVQQuC8CllJD!p$X4OcyNyx#O>38=9MXO80{3&yxI_KR^Hdn zn=3VQ4BK;$RUhKPoVE=7$@coph)UyQ4W*vanMyhfQ(Ijl3{^FKs8W?iVjuiDFOG$t znxqT%f}*&r>oQA1+N{=nn

zbYthmnK8vv7h_mv<&4NlUTFiBYR`jGN09VV`>H}SEY^-QWVu?9oqXMD(IJ%3X{L!{ zm)T|nugJlGcKIs&+3m@OW3?I zGlHahj#%GRji|z{G}P|VHoO6U!T2NfPBAMJWIdFBiM5ULXFHbO<{P?d8I;YpwqOpz zJY)g?SB|rdXKCYXv21&0UO3Z^vnBhWrLdH~Xq@fuFePn+0qIoRH1=wmEsXt=YSXbJ zskR9Az2c2vQR(pVfQ&R-Je!^F!dseV8|F8PtXuQ+E={w|V^2`rkJIq=Il27OZGkKd zcq}Cyamy)SVY+RY)Shmug+Z{;nsX>zBS*P4hjh%Cc@PhdRz!zTzUMAIWy5+=t&b ze>nBpqv8gBF+cR&x7H=_`G%E!N!u+BYVNaf{! zP0P(1Si!xI^X`pJ+6@&VoRJffcx~wa4e(zPJZUNEYuLv%o8H`qTd(-HY*%{2viSC8 z>Fe+v(L3Jy){jqI7KNPUOXNIySaE;)J4H8N#76JFcK=`F;u9B+*>vs3V-_CWb?q09 zhI&TPtaNF!G1cs~FP6OfH_h%YzV?N+iKtz&wDyFmec~s>r~FOrH(IZq^tt%BS=CT9 z9(O04(_yvK_`CC1pm43D?d2`0PXEUBJDue_a9^)q-K{GdTDH@{XK9+T^61CaJACjN zzZ+0BgfDBR;vFel3on-S^F6VYf|Hz*C|;=P*Pr~~f-cOzB46A5t^H?gTsWfh+SArA z_pj=h>}cD9ABEcUvH60?9{>DzPdE!ddA|0*y7^5np1Jb4{>aD(ynaNdR@2^WZ%TH| zf4AlARF^T`qAI$_Iy?J1atFhGBPW^2k9^PgmnzaHrjk?&$S!W6mWA-#WC}xy{E01 z&;EQ>@-d2wY*lTyt`1J-kMva?H-F5JtB(k%DqD1&`Si-Hb@TU5o|!DA$-0z3KgkWd z`Lf{Y8?fwjdSEj3zR9iFiE@5||Nek$75u2p`M|FKUBdED;)>TjfN?u!daFR|m%Ws* zyc%fSj1zp;HU&yS3f#vvM+_oJLEH|ZR;_Dz!>F%nxDNvd&6p&Q>Z zc~h0AG;dR&6kLpg*OY82E!z|*1-GE!$yKVaR!Bu~{W2E=`4~zLYyQf%DNvgHI|`mp zQccFG$SuK9DL5LRIeJ0UQU%Sb;A|AUh>wF)AXU(=3K~)HksjdkZ3-kQclo&}c|iBx zj^QIHo$N=!@3cNUwkc2weu9FBbwTGg1xmroC^)POx*-TbDM(7dhitSZq-|566zp_S z@>8uY#c*p>O3K;fZwf+6k}(wgDX>(;*s!$tX2KF*j9n?g2R%dyngTV2&oIDGuK|ZVq***>tg?L^&YtEsmmP);o3=1 zCmZv({&myQE9X!n{V`wc#QDG0?m zFRr%5^Wd#!h+C>P_~~!_V#EBa=U=;LJ~DVIBmzk>U|C{PD{ zIN3z8?3X$vXfU%eYugE!+n(EksQ`cRi!B>>49k7)nT=b9afh2*SW|L`8@p9g8|mqf z;5y@shHx!(?Fq|2bgpy(;2ZhLyWU*60idee;`>>GMX(7G$-ADyd&PfK#UM-5RY;%JRe0&49-nV z!~dOpbXO1^kFN#%F1q7iyjr*Ygyp3;{BGE;kGAmE_mmkIAmuP@JsM&XZrFYR|M8|^ zLMl!octP8YRvn1P_Ees63_5&rGk@bFm(-{C>l;&J zTlwP8Ge_c0V)l(InQ~#`UzVj*^6hQ?z>DY#{@Kz3yl`O)9$vnr#l!OX-eXpUtibap z$L){Jr!|&{Wr^~0QuAdW+kXP`>;1o+pWU(l#D#Be z+`m3?Nznp|cKYV0PugEOU%YewKh1yqf;H2SLWaD zmP7PlbnZmnCI0g&+%yrb2hX9_gIepsbBxxN27~AP2MxA@Ov#?wGk9EdC&EPtWR|Z- zT3E7Y1#i1=o!lZ50#* zT^Ow2pR&@eMR&Q;(zqD9xfC`EQ-rPL2-msb`Z(B1j^P@gaTBx1Q9hTWxnCNJDnPF% zFunC!(D?;!p9CRBvJ*+#kty$P_XM_N>UXyzNw95q_3||5B&4$u_4@xSD^Fb3%r9r# zXZ*NTK;AWZh2O)D@Oq5z$M{5bPe4H$nc#Z{9}ysukVU?%YbN+!=C`a>^Y=hsHGj`t zXR$wnwiNbfv_Dn#rxy8B54p5^z9rKWKy9h`AAGYB>Zo2hxAktQkn{k<~l8;&|Rry>d%e-1_Al&B$tf-Vnh(Y{&Nq1gyquD}=}(kO{tz5TA)8 zWRV|Ov!hM(?{7b_(anyo$E6T$fm@(uXZl;X;kqYd+XsO2@NEoQwy3;O zJJ7IlpxzxjCgr7;#ywjm@lp#l-YX|OWTB!JwF?wSsL?vr{L}xweGR9m zWkuksdFZT*(cAIZhxjD^;>A1M&EoZ}=Aq4}f=efh+@1|6CHo{NlP?O;Bh4 zPIv1wK)ijd<9r2wWfb#wsxUaPR{SQIx9f^1LFv|HmQ4405zY}J6diZF7!BniyQ}80kl3A@C%(M&@C0qt3uEF49Uc=zF zU|?H@=0AJdf%OY_WL)>{wQl!gzW6P8Y0c>&z@>gK0op#tP>_{4j{>iP7Y2i7jU^4aSGE8P)vG_<{G1taI#QZc$wq(NM#0g1Bd6db669P_%Rn}a{H@5;PpDWv^lYR{V~Tl z=i@Hp_EWd6KV}v5321ITUL$(eS=RWlv;1bveL!vF2Ye=Wwg`Wk{pXs!{C1Tc5w~oW!_+-3w=2c3s)p zxGr_~U;$T#p87v~?V#mH*R8u^&85r!LGAF^D**q?%LizbV(uM~0Bid!RnDzXX-Iu+9BWcl1n9NiPMky7=p?- zJCBUWrLn}j%l-#9#1w z;ZsBF5ti}4W!K9qlB|UP*c6xpAhv$lMhCxdb+ippdG}m*X57Ngp##_NPB=bv{Gs_D zeD6T>!r8YRm`hAJe)lPd7V!M*#30^LD}U7Y-@c=^_2{kY<8*vSEoJvrbLK6p6?^j! z;VmoQ{MI`UY+dl(dEn*E@n0@KwD9UP2k?^GfyzS*AHH}1FR7hgb!guIy94;D0)Vgm z?!c+;bk!ke#kzGzp1u0Cl}B`LCx*|>O;HdoOKpHwEO3+CwL#)O?U(hefl82th4TkLkoQk2cgvC zpE|TK({>O_{iml6&0o@S@C)%T0od4i@KpD`r=ZlF^v{0jGdm|Hs8C_dxB8b*>SsPH z9Fj{X1&IHI%l`ijF4K+i+#8~B}ejPD!OH}DJX7++uQ4GZ`-JI1%H z_6B~Jy(oSN!1w=faHD%(?F~rRL}SW6ow$Dl3Y-#2h8^E^KrH?E`v3e#CyvZoUS^s7 z_u3oz)}rIQ{LGUVRQ~bceB~d%ofx0^l^glf6A|gx98FgF$w9$lgF=>qWk|LDEey#p7P_j4;X`>$6!*=EtoV!6QwR2Cs?Re>Aad z)4fl4XQR$FiRkqMK+#E49Nt9eFTmB+5&A2j%%Bmhcds;NalI51s<=>)tU2+C#4bg# z!0WuoO>}{!JZ&DfLV-Xoc6uP{8BTgK46PuL7!xu&ruw2FX*H}#IodsBW0p}}h1E@W zT%xOMj$7*WJB>^QMW)AUHxaCmPgG~|3jj-tO>zCKfijLVQ1|&lkzDjx`ziDIT}CpG zEV@hS6e%TAUv4f55$eq~j3*HV%p%rui5T|R08XA~yNOCS?6B`x!^OCwNUapb8)Wsl zR@go_ome)Sg|48>p8}i_^3>|EtvPCKtMhY$#+qx8@3r(~9qPA%3w{P7U6gFiGKr_T~8#%DiC*OhwXF3 z5o$QoKy@Jl%|Spdm0L=FzKe=QO~9#biuPruX8tTko4u4NcO=O%kC5#qbb-})#F}4@ zg}P@Aw*y0@&CzNT$0Wg;b4-73rF8vmAiEk(*KHUCt>yt4nct(hzt^;B_BeAzlO&ll z#bRnN>^WT(bc#{>1+cZsA6T_*)+i&GXWN&T8S;&2ucJ>{*dR-7#R3!~PSOVQt=d|p zn7ucl7`F60z_hidpPn-eovK-?|1e5pgT%RHsOyuaxW{vifjMJBDul9Px8Ud^4UNX~ zr^Rg^0xqkIWM~)Z)-GB+Zzy&dwq8c@z)Mf7F`8sHl&9&q=%>neOGLNtv~a%rlMh=DJxb@)v=k9`7-c<~g*U$VtQ;$C%f; zB#3;RGCU4s=BOcFVTY!3v%$644jW{Ky&Nt2^Gs<0l%j{w9a%vv&9lRrXRAy#RCtG- zpCemYj{*+llG#52YKk)y>s)H=72xK?W7#%ShWaKzW8(Sjqq)uuYF1eM&;?S>XKd0c zUPID3R^265ykHWInFAP$CktN$R69sJ_&%Uw6&6XRUd6NL0d^)E7E5PM8@C0)klc)w z%lyM8A*-;kg@T{8EUx zbTHYC_(Mvqwxc|R6|LQLF`vs&JR75SS#dI8EVo<6jUG2Vnb>rZFB?!#s}XiwX500^ zbvF{n_@d%Dg{_$-;~cGG*G84T6HViZ85-H^DDE27(?(heML7?s3Za()Xsm$^$Uz9M z1ExtZFVj#NoH0;=80||at+B&Dw4T=e0q5UZ8*U<}m?rt2>T|q_9F1VMWUM4We(nU+ z^C`BWT^0sSX_az%4sp27Ap05(RDxm%NEaP(kEUwx2H5EJ6WV5wt~am|886?xsETPv z2grsn1-}`%oN3~21vD^8+&rMt7`uEFQ2Kf!Sx!C8hxH^pxZ--4inI{fL9+HBiii76 zlO{DC`~gVM#gP)?f&jRWO@j_Q64O5o490&=~NORl{+8nynG-JJNe+i0_rD4#hqdL`wvs&FW ziwRB1{Kn#u8B(MML*DdOtAe^qBW<*iw|^!3;bhjHXsDMWu)(xwu4xIRPCrBEfaVm0 zCLGij8C2?R2%_onsZirbbqw^<^hl@F=Av%QhPy#;(5JyC$iD{eqveK=P!@Un8JZVc zz1DgHxoEDLo5P^PB&$(17BkH!*BK~M#)?%ao$l0y9%2)wL3MCwfE=LuY51v%zm2VQSx)%%p2G(}u0j+H zLA2R~;;Q3K-}ScdDX&R6qPOO)*p}BShUqNB=|;!~Q9ITd7&dT>Sojl^cX|^lM8^nn zSS!Ur$#K&#MI)3WNhOVI9K8d155Tq{JAVw=eq~%NkDWu&J_l$xN;9JO)|_hD;HYUU z?)DlD3U_}*`;it75WS&uHJdL0ipZRM37`&1I@wK^H~Y5CaIr=+3;PIt4bW(WWC&Fq zMI$7cC^+wg{}DS9p%CW-^1LbwwxyL>X_eVxjiV-mBsueEiNjM>bqQ1&6;wOTQihme zNj}J9+8M;r4@WKEZWcyIDmLpM)OcFII!t7~!25c-QhgSl{{8+bWC}TZpr?t=E z`qNo454egj#pfi|CX*C-7(Ig=(laK+GbI1ZIM=tb;X+x|POABz5nv|XB!F26Kd=z; z)3@A2yvo(2^mX7eyG_LmRMY{{4G{VQid8se=M_p;Mu-eOUM}D=py940l_g0j>rT%Y zyBV^!7KVjr@*}%gd=Dyyf=2RQFBpU>3^G&JprqJPPQ}~?Xv+F}i+j2mlP*ZE)tdWR ztB)yQ!5i(jVY5+E%&VH_O$M#7Cse%!RY#6ySA~GGBD7kL(4>q8jjb&Oz06R0^kwp+1vYOx9DO6Tp>O^R7rWJVaH%XVk>* zl4dL~jndx*TtUC_#gNR27XsJr4P2)(7P0?&nFZ*;{gdpGQX^Hwcn}(0Y2?ogQ?6@) zOY5M<*iHHrJN!pL*cO0pIhRb^Tw(lJ!&r~>!C}MA52MBEL>B}v1~P9W!xG6XS@$=I zD@TCrZe!1M<+)Be^=(kSw=As{UttDTi&(CS=UNwNv#PI9LUY{85Jk|VOMe)G^Zxp*KsB_LKQ!);eCIW__tas76wZo9C z_arZ|Ue%l>`;Tni+HE4~Y$8cg+QCE<8<6fphFRcxr%92X)O{>VQvnTxI3!em&LDL< zi=OkF4V4Uu_0-u&E@k;VAjqQoaI@@G&DzAwF%pNqwm5Ed+M><1rR7t+I%M3MuOtdO&44(#4d*sj@71f1dEmEV3^?