From 5e2da6e3ab72a6b77ba3bef47b73770c0c39e275 Mon Sep 17 00:00:00 2001 From: ForestOfLight Date: Sat, 19 Apr 2025 14:15:19 -0700 Subject: [PATCH] Rename to Construct --- .../manifest.json | 0 .../pack_icon.png | Bin .../scripts/classes/BlockInfo.js | 0 .../classes/BlockVerificationLevelRender.js | 0 .../scripts/classes/BlockVerifier.js | 0 .../scripts/classes/InstanceEditForm.js | 2 +- .../classes/InstanceEditFormBuilder.js | 0 .../scripts/classes/InstanceOptions.js | 0 .../scripts/classes/MaterialCounter.js | 63 ++++++++++-------- .../scripts/classes/MenuForm.js | 12 ++-- .../scripts/classes/MenuFormBuilder.js | 0 .../scripts/classes/Outliner.js | 0 .../scripts/classes/Raycaster.js | 0 .../scripts/classes/Structure.js | 0 .../scripts/classes/StructureCollection.js | 0 .../scripts/classes/StructureInstance.js | 24 ++++--- .../scripts/classes/StructureOutliner.js | 2 +- .../scripts/classes/StructureStatistics.js | 0 .../scripts/classes/StructureVerifier.js | 0 .../classes/enums/BlockVerificationLevel.js | 0 .../classes/enums/InstanceEditButtons.js | 0 .../scripts/commands/construct.js | 17 +++-- .../scripts/config.js | 0 .../scripts/data.js | 0 .../scripts/lib/Vector.js | 0 .../scripts/lib/canopy/CanopyExtension.js | 2 +- .../scripts/lib/canopy/Command.js | 0 .../scripts/lib/canopy/Rule.js | 0 .../scripts/lib/canopy/extension.ipc.js | 0 .../scripts/lib/ipc/ipc.d.ts | 0 .../scripts/lib/ipc/ipc.js | 0 .../scripts/main.js | 3 +- .../scripts/rules/easyPlace.js | 0 .../scripts/rules/fastEasyPlace.js | 0 .../scripts/rules/materialGrabber.js | 24 +++++++ .../scripts/utils.js | 0 .../structures/Everything.mcstructure | Bin .../structures/xmas.mcstructure | Bin .../manifest.json | 0 Construct [RP]/pack_icon.png | Bin 0 -> 65843 bytes .../particles/blockoverlay_xy.particle.json | 0 .../particles/blockoverlay_xz.particle.json | 0 .../particles/blockoverlay_yz.particle.json | 0 .../particles/outline.particle.json | 0 .../textures/particle/white.png | Bin README.md | 10 +-- 46 files changed, 102 insertions(+), 57 deletions(-) rename {StrucTool [BP] => Construct [BP]}/manifest.json (100%) rename {StrucTool [BP] => Construct [BP]}/pack_icon.png (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/BlockInfo.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/BlockVerificationLevelRender.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/BlockVerifier.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/InstanceEditForm.js (99%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/InstanceEditFormBuilder.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/InstanceOptions.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/MaterialCounter.js (54%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/MenuForm.js (86%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/MenuFormBuilder.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/Outliner.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/Raycaster.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/Structure.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/StructureCollection.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/StructureInstance.js (92%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/StructureOutliner.js (97%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/StructureStatistics.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/StructureVerifier.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/enums/BlockVerificationLevel.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/classes/enums/InstanceEditButtons.js (100%) rename StrucTool [BP]/scripts/commands/structool.js => Construct [BP]/scripts/commands/construct.js (59%) rename {StrucTool [BP] => Construct [BP]}/scripts/config.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/data.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/Vector.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/canopy/CanopyExtension.js (99%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/canopy/Command.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/canopy/Rule.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/canopy/extension.ipc.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/ipc/ipc.d.ts (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/lib/ipc/ipc.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/main.js (65%) rename {StrucTool [BP] => Construct [BP]}/scripts/rules/easyPlace.js (100%) rename {StrucTool [BP] => Construct [BP]}/scripts/rules/fastEasyPlace.js (100%) create mode 100644 Construct [BP]/scripts/rules/materialGrabber.js rename {StrucTool [BP] => Construct [BP]}/scripts/utils.js (100%) rename {StrucTool [BP] => Construct [BP]}/structures/Everything.mcstructure (100%) rename {StrucTool [BP] => Construct [BP]}/structures/xmas.mcstructure (100%) rename {StrucTool [RP] => Construct [RP]}/manifest.json (100%) create mode 100644 Construct [RP]/pack_icon.png rename {StrucTool [RP] => Construct [RP]}/particles/blockoverlay_xy.particle.json (100%) rename {StrucTool [RP] => Construct [RP]}/particles/blockoverlay_xz.particle.json (100%) rename {StrucTool [RP] => Construct [RP]}/particles/blockoverlay_yz.particle.json (100%) rename {StrucTool [RP] => Construct [RP]}/particles/outline.particle.json (100%) rename {StrucTool [RP] => Construct [RP]}/textures/particle/white.png (100%) diff --git a/StrucTool [BP]/manifest.json b/Construct [BP]/manifest.json similarity index 100% rename from StrucTool [BP]/manifest.json rename to Construct [BP]/manifest.json diff --git a/StrucTool [BP]/pack_icon.png b/Construct [BP]/pack_icon.png similarity index 100% rename from StrucTool [BP]/pack_icon.png rename to Construct [BP]/pack_icon.png diff --git a/StrucTool [BP]/scripts/classes/BlockInfo.js b/Construct [BP]/scripts/classes/BlockInfo.js similarity index 100% rename from StrucTool [BP]/scripts/classes/BlockInfo.js rename to Construct [BP]/scripts/classes/BlockInfo.js diff --git a/StrucTool [BP]/scripts/classes/BlockVerificationLevelRender.js b/Construct [BP]/scripts/classes/BlockVerificationLevelRender.js similarity index 100% rename from StrucTool [BP]/scripts/classes/BlockVerificationLevelRender.js rename to Construct [BP]/scripts/classes/BlockVerificationLevelRender.js diff --git a/StrucTool [BP]/scripts/classes/BlockVerifier.js b/Construct [BP]/scripts/classes/BlockVerifier.js similarity index 100% rename from StrucTool [BP]/scripts/classes/BlockVerifier.js rename to Construct [BP]/scripts/classes/BlockVerifier.js diff --git a/StrucTool [BP]/scripts/classes/InstanceEditForm.js b/Construct [BP]/scripts/classes/InstanceEditForm.js similarity index 99% rename from StrucTool [BP]/scripts/classes/InstanceEditForm.js rename to Construct [BP]/scripts/classes/InstanceEditForm.js index 9dfaa52..208ef1c 100644 --- a/StrucTool [BP]/scripts/classes/InstanceEditForm.js +++ b/Construct [BP]/scripts/classes/InstanceEditForm.js @@ -1,5 +1,5 @@ import { structureCollection } from './StructureCollection'; -import { MenuForm } from '../classes/MenuForm'; +import { MenuForm } from './MenuForm'; import { forceShow } from '../utils'; import { InstanceEditButtons } from './enums/InstanceEditButtons'; import { InstanceEditFormBuilder } from './InstanceEditFormBuilder'; diff --git a/StrucTool [BP]/scripts/classes/InstanceEditFormBuilder.js b/Construct [BP]/scripts/classes/InstanceEditFormBuilder.js similarity index 100% rename from StrucTool [BP]/scripts/classes/InstanceEditFormBuilder.js rename to Construct [BP]/scripts/classes/InstanceEditFormBuilder.js diff --git a/StrucTool [BP]/scripts/classes/InstanceOptions.js b/Construct [BP]/scripts/classes/InstanceOptions.js similarity index 100% rename from StrucTool [BP]/scripts/classes/InstanceOptions.js rename to Construct [BP]/scripts/classes/InstanceOptions.js diff --git a/StrucTool [BP]/scripts/classes/MaterialCounter.js b/Construct [BP]/scripts/classes/MaterialCounter.js similarity index 54% rename from StrucTool [BP]/scripts/classes/MaterialCounter.js rename to Construct [BP]/scripts/classes/MaterialCounter.js index a880a13..1cb2aec 100644 --- a/StrucTool [BP]/scripts/classes/MaterialCounter.js +++ b/Construct [BP]/scripts/classes/MaterialCounter.js @@ -1,38 +1,43 @@ -import { structureCollection } from '../classes/StructureCollection'; - class MaterialCounter { - static getAll(name) { - const structure = structureCollection.get(name); - const materials = {}; - for (const block of structure.getAllBlocks()) { - const typeId = block?.getItemStack()?.typeId.replace('minecraft:', ''); - if (!typeId) continue; - if (!materials[typeId]) { - materials[typeId] = 0; - } - materials[typeId]++; - } - return materials; + instance + materials; + + constructor(instance) { + this.instance = instance; + this.materials = {}; } - static getLayer(name, layer) { - const structure = structureCollection.get(name); - const materials = {}; - for (const block of structure.getLayerBlocks(layer)) { - const typeId = block?.getItemStack()?.typeId.replace('minecraft:', ''); - if (!typeId) continue; - if (!materials[typeId]) { - materials[typeId] = 0; - } - materials[typeId]++; - } - return materials; + populateAll() { + for (const layer = 0; layer < this.instance.getMaxLayer(); layer++) + this.getLayer(layer) } - static getPrintable(name) { - const structure = structureCollection.get(name); + populateLayer(layer) { + for (const block of this.instance.getLayerBlocks(layer)) + this.countBlock(block) + } + + populateActive() { + for (const block of this.instance.getActiveBlocks()) + this.countBlock(block) + } + + countBlock(block) { + const itemStack = block?.getItemStack(); + const typeId = itemStack?.typeId; + if (!typeId) return; + if (!this.materials[typeId]) + this.materials[typeId] = { count: 0, stackSize: itemStack.maxAmount }; + this.materials[typeId].count++; + } + + clear() { + this.materials = {}; // does this leak memory?? + } + + toString() { const materials = {}; - for (const block of structure.getAllBlocks()) { + for (const block of this.instance.getAllBlocks()) { const itemStack = block?.getItemStack(); const typeId = itemStack?.typeId.replace('minecraft:', ''); if (!typeId) continue; diff --git a/StrucTool [BP]/scripts/classes/MenuForm.js b/Construct [BP]/scripts/classes/MenuForm.js similarity index 86% rename from StrucTool [BP]/scripts/classes/MenuForm.js rename to Construct [BP]/scripts/classes/MenuForm.js index 22c6681..03b8c50 100644 --- a/StrucTool [BP]/scripts/classes/MenuForm.js +++ b/Construct [BP]/scripts/classes/MenuForm.js @@ -4,16 +4,16 @@ import { MenuFormBuilder } from './MenuFormBuilder'; import { InstanceEditForm } from './InstanceEditForm'; export class MenuForm { - constructor(player, { jumpToInstance = true } = {}) { + constructor(player, { jumpToInstance = false, instanceName = void 0 } = {}) { this.player = player; - this.show(jumpToInstance); + this.show(jumpToInstance, instanceName); } - async show(jumpToInstance = true) { - let instanceName; + async show(jumpToInstance = false, instanceName = void 0) { if (jumpToInstance) { - instanceName = structureCollection.getStructure(this.player.dimension.id, this.player.location, { useActiveLayer: false })?.getName(); - if (instanceName) { + if (!instanceName) + instanceName = structureCollection.getStructure(this.player.dimension.id, this.player.location, { useActiveLayer: false })?.getName(); + if (structureCollection.get(instanceName)) { new InstanceEditForm(this.player, instanceName); return; } diff --git a/StrucTool [BP]/scripts/classes/MenuFormBuilder.js b/Construct [BP]/scripts/classes/MenuFormBuilder.js similarity index 100% rename from StrucTool [BP]/scripts/classes/MenuFormBuilder.js rename to Construct [BP]/scripts/classes/MenuFormBuilder.js diff --git a/StrucTool [BP]/scripts/classes/Outliner.js b/Construct [BP]/scripts/classes/Outliner.js similarity index 100% rename from StrucTool [BP]/scripts/classes/Outliner.js rename to Construct [BP]/scripts/classes/Outliner.js diff --git a/StrucTool [BP]/scripts/classes/Raycaster.js b/Construct [BP]/scripts/classes/Raycaster.js similarity index 100% rename from StrucTool [BP]/scripts/classes/Raycaster.js rename to Construct [BP]/scripts/classes/Raycaster.js diff --git a/StrucTool [BP]/scripts/classes/Structure.js b/Construct [BP]/scripts/classes/Structure.js similarity index 100% rename from StrucTool [BP]/scripts/classes/Structure.js rename to Construct [BP]/scripts/classes/Structure.js diff --git a/StrucTool [BP]/scripts/classes/StructureCollection.js b/Construct [BP]/scripts/classes/StructureCollection.js similarity index 100% rename from StrucTool [BP]/scripts/classes/StructureCollection.js rename to Construct [BP]/scripts/classes/StructureCollection.js diff --git a/StrucTool [BP]/scripts/classes/StructureInstance.js b/Construct [BP]/scripts/classes/StructureInstance.js similarity index 92% rename from StrucTool [BP]/scripts/classes/StructureInstance.js rename to Construct [BP]/scripts/classes/StructureInstance.js index 8cd540b..8104ff6 100644 --- a/StrucTool [BP]/scripts/classes/StructureInstance.js +++ b/Construct [BP]/scripts/classes/StructureInstance.js @@ -52,15 +52,15 @@ export class StructureInstance { getDimension() { return this.options.getDimension(); } + + getLayer() { + return this.options.currentLayer; + } getMaxLayer() { return this.structure.getHeight(); } - getLayer() { - return this.options.currentLayer; - } - getBounds() { return { min: this.structure.getMin(), @@ -72,18 +72,18 @@ export class StructureInstance { if (!this.options.isEnabled) throw new Error(`[StrucTool] Instance '${this.options.instanceName}' is not placed.`); if (this.hasLayerSelected()) - return this.getLayeredBounds(); + return this.getLayerBounds(this.getLayer()); return this.getBounds(); } - getLayeredBounds() { + getLayerBounds(layer) { if (!this.options.isEnabled) throw new Error(`[StrucTool] Instance '${this.options.instanceName}' is not placed.`); const min = this.structure.getMin(); const max = this.structure.getMax(); return { - min: new Vector(min.x, this.options.currentLayer - 1, min.z), - max: new Vector(max.x, this.options.currentLayer, max.z) + min: new Vector(min.x, layer - 1, min.z), + max: new Vector(max.x, layer, max.z) }; } @@ -103,6 +103,14 @@ export class StructureInstance { return this.structure.getAllBlocks(); } + getActiveBlocks() { + if (!this.options.isEnabled) + throw new Error(`[StrucTool] Instance '${this.options.instanceName}' is not placed.`); + if (this.hasLayerSelected()) + return this.getLayerBlocks(this.getLayer()); + return this.getAllBlocks(); + } + isLocationActive(dimensionId, structureLocation, { useActiveLayer = true } = {}) { if (!this.options.isEnabled || this.options.dimensionId !== dimensionId) return false; diff --git a/StrucTool [BP]/scripts/classes/StructureOutliner.js b/Construct [BP]/scripts/classes/StructureOutliner.js similarity index 97% rename from StrucTool [BP]/scripts/classes/StructureOutliner.js rename to Construct [BP]/scripts/classes/StructureOutliner.js index 65648fa..023fde5 100644 --- a/StrucTool [BP]/scripts/classes/StructureOutliner.js +++ b/Construct [BP]/scripts/classes/StructureOutliner.js @@ -1,4 +1,4 @@ -import { Outliner } from '../classes/Outliner'; +import { Outliner } from './Outliner'; export class StructureOutliner { constructor(instance) { diff --git a/StrucTool [BP]/scripts/classes/StructureStatistics.js b/Construct [BP]/scripts/classes/StructureStatistics.js similarity index 100% rename from StrucTool [BP]/scripts/classes/StructureStatistics.js rename to Construct [BP]/scripts/classes/StructureStatistics.js diff --git a/StrucTool [BP]/scripts/classes/StructureVerifier.js b/Construct [BP]/scripts/classes/StructureVerifier.js similarity index 100% rename from StrucTool [BP]/scripts/classes/StructureVerifier.js rename to Construct [BP]/scripts/classes/StructureVerifier.js diff --git a/StrucTool [BP]/scripts/classes/enums/BlockVerificationLevel.js b/Construct [BP]/scripts/classes/enums/BlockVerificationLevel.js similarity index 100% rename from StrucTool [BP]/scripts/classes/enums/BlockVerificationLevel.js rename to Construct [BP]/scripts/classes/enums/BlockVerificationLevel.js diff --git a/StrucTool [BP]/scripts/classes/enums/InstanceEditButtons.js b/Construct [BP]/scripts/classes/enums/InstanceEditButtons.js similarity index 100% rename from StrucTool [BP]/scripts/classes/enums/InstanceEditButtons.js rename to Construct [BP]/scripts/classes/enums/InstanceEditButtons.js diff --git a/StrucTool [BP]/scripts/commands/structool.js b/Construct [BP]/scripts/commands/construct.js similarity index 59% rename from StrucTool [BP]/scripts/commands/structool.js rename to Construct [BP]/scripts/commands/construct.js index 39baffd..f6454c5 100644 --- a/StrucTool [BP]/scripts/commands/structool.js +++ b/Construct [BP]/scripts/commands/construct.js @@ -5,16 +5,23 @@ import { MenuForm } from '../classes/MenuForm'; const ACTION_ITEM = 'minecraft:paper'; -const structoolCmd = new Command({ +const menuCmd = new Command({ name: 'structool', description: { text: 'Opens the StrucTool Menu. Using a paper will also open the menu.' }, usage: 'structool', - callback: (sender) => new MenuForm(sender) + callback: (sender) => openMenu(sender) }); -extension.addCommand(structoolCmd); +extension.addCommand(menuCmd); world.beforeEvents.itemUse.subscribe((event) => { if (!event.source || event.itemStack?.typeId !== ACTION_ITEM) return; event.cancel = true; - system.run(() => structoolCmd.getCallback()(event.source)); -}); \ No newline at end of file + system.run(() => openMenu(event.source, event)); +}); + +function openMenu(sender, event = void 0) { + const options = { jumpToInstance: true } + if (event) + options.instanceName = event.itemStack?.typeId; + new MenuForm(sender, options); +} \ No newline at end of file diff --git a/StrucTool [BP]/scripts/config.js b/Construct [BP]/scripts/config.js similarity index 100% rename from StrucTool [BP]/scripts/config.js rename to Construct [BP]/scripts/config.js diff --git a/StrucTool [BP]/scripts/data.js b/Construct [BP]/scripts/data.js similarity index 100% rename from StrucTool [BP]/scripts/data.js rename to Construct [BP]/scripts/data.js diff --git a/StrucTool [BP]/scripts/lib/Vector.js b/Construct [BP]/scripts/lib/Vector.js similarity index 100% rename from StrucTool [BP]/scripts/lib/Vector.js rename to Construct [BP]/scripts/lib/Vector.js diff --git a/StrucTool [BP]/scripts/lib/canopy/CanopyExtension.js b/Construct [BP]/scripts/lib/canopy/CanopyExtension.js similarity index 99% rename from StrucTool [BP]/scripts/lib/canopy/CanopyExtension.js rename to Construct [BP]/scripts/lib/canopy/CanopyExtension.js index 4e39608..8cf1acc 100644 --- a/StrucTool [BP]/scripts/lib/canopy/CanopyExtension.js +++ b/Construct [BP]/scripts/lib/canopy/CanopyExtension.js @@ -23,7 +23,7 @@ * SOFTWARE. */ import { world } from '@minecraft/server'; -import IPC from '../../lib/ipc/ipc'; +import IPC from '../ipc/ipc'; import Command from './Command'; import Rule from './Rule'; import { CommandCallbackRequest, CommandPrefixRequest, Ready, RegisterCommand, RegisterExtension, RegisterRule, RuleValueRequest, RuleValueSet, CommandPrefixResponse, RuleValueResponse } from './extension.ipc'; diff --git a/StrucTool [BP]/scripts/lib/canopy/Command.js b/Construct [BP]/scripts/lib/canopy/Command.js similarity index 100% rename from StrucTool [BP]/scripts/lib/canopy/Command.js rename to Construct [BP]/scripts/lib/canopy/Command.js diff --git a/StrucTool [BP]/scripts/lib/canopy/Rule.js b/Construct [BP]/scripts/lib/canopy/Rule.js similarity index 100% rename from StrucTool [BP]/scripts/lib/canopy/Rule.js rename to Construct [BP]/scripts/lib/canopy/Rule.js diff --git a/StrucTool [BP]/scripts/lib/canopy/extension.ipc.js b/Construct [BP]/scripts/lib/canopy/extension.ipc.js similarity index 100% rename from StrucTool [BP]/scripts/lib/canopy/extension.ipc.js rename to Construct [BP]/scripts/lib/canopy/extension.ipc.js diff --git a/StrucTool [BP]/scripts/lib/ipc/ipc.d.ts b/Construct [BP]/scripts/lib/ipc/ipc.d.ts similarity index 100% rename from StrucTool [BP]/scripts/lib/ipc/ipc.d.ts rename to Construct [BP]/scripts/lib/ipc/ipc.d.ts diff --git a/StrucTool [BP]/scripts/lib/ipc/ipc.js b/Construct [BP]/scripts/lib/ipc/ipc.js similarity index 100% rename from StrucTool [BP]/scripts/lib/ipc/ipc.js rename to Construct [BP]/scripts/lib/ipc/ipc.js diff --git a/StrucTool [BP]/scripts/main.js b/Construct [BP]/scripts/main.js similarity index 65% rename from StrucTool [BP]/scripts/main.js rename to Construct [BP]/scripts/main.js index 55d31a8..4bc4dda 100644 --- a/StrucTool [BP]/scripts/main.js +++ b/Construct [BP]/scripts/main.js @@ -1,9 +1,10 @@ // Rules import './rules/easyPlace'; import './rules/fastEasyPlace'; +import './rules/materialGrabber'; // Commands -import './commands/structool'; +import './commands/construct'; // Other import './classes/BlockInfo'; diff --git a/StrucTool [BP]/scripts/rules/easyPlace.js b/Construct [BP]/scripts/rules/easyPlace.js similarity index 100% rename from StrucTool [BP]/scripts/rules/easyPlace.js rename to Construct [BP]/scripts/rules/easyPlace.js diff --git a/StrucTool [BP]/scripts/rules/fastEasyPlace.js b/Construct [BP]/scripts/rules/fastEasyPlace.js similarity index 100% rename from StrucTool [BP]/scripts/rules/fastEasyPlace.js rename to Construct [BP]/scripts/rules/fastEasyPlace.js diff --git a/Construct [BP]/scripts/rules/materialGrabber.js b/Construct [BP]/scripts/rules/materialGrabber.js new file mode 100644 index 0000000..411a9f3 --- /dev/null +++ b/Construct [BP]/scripts/rules/materialGrabber.js @@ -0,0 +1,24 @@ +import { Rule } from '../lib/canopy/CanopyExtension'; +import { extension } from '../config'; +import { world } from '@minecraft/server'; + +const easyPlace = new Rule({ + identifier: 'materialGrabber', + description: { text: "Automatically grabs structure materials out of inventories. Use a paper named 'materialGrabber' to get started." }, + onEnableCallback: () => { + world.beforeEvents.playerInteractWithBlock.subscribe(onPlayerInteract); + world.beforeEvents.playerInteractWithEntity.subscribe(onPlayerInteract); + }, + onDisableCallback: () => { + world.beforeEvents.playerInteractWithBlock.unsubscribe(onPlayerInteract); + world.beforeEvents.playerInteractWithEntity.unsubscribe(onPlayerInteract); + } +}) +extension.addRule(easyPlace); + +function onPlayerInteract(event) { + // get inventory + // analyze active structure items if not analyzed -- there needs to be a way to refresh this that is efficient + // find items in inventory that match items in structure + // transfer to player +} \ No newline at end of file diff --git a/StrucTool [BP]/scripts/utils.js b/Construct [BP]/scripts/utils.js similarity index 100% rename from StrucTool [BP]/scripts/utils.js rename to Construct [BP]/scripts/utils.js diff --git a/StrucTool [BP]/structures/Everything.mcstructure b/Construct [BP]/structures/Everything.mcstructure similarity index 100% rename from StrucTool [BP]/structures/Everything.mcstructure rename to Construct [BP]/structures/Everything.mcstructure diff --git a/StrucTool [BP]/structures/xmas.mcstructure b/Construct [BP]/structures/xmas.mcstructure similarity index 100% rename from StrucTool [BP]/structures/xmas.mcstructure rename to Construct [BP]/structures/xmas.mcstructure diff --git a/StrucTool [RP]/manifest.json b/Construct [RP]/manifest.json similarity index 100% rename from StrucTool [RP]/manifest.json rename to Construct [RP]/manifest.json diff --git a/Construct [RP]/pack_icon.png b/Construct [RP]/pack_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa91e7e32eca5986d20a1481d179160329e7001 GIT binary patch literal 65843 zcmdSAby!thzb-r%-7Vc90@5tHk&=+^lJ1ah7D_i#f}{vYH;ANkw;e;=1z&b1hGj4{Wr@83NmR9?wqqLHEj0D$>YPD%{`An}jCC`jNpur}Ty z@IO>%IbBx(K*xXlg#hUp!~lReZlj^&rlX`NXy)X=W@7GSYQg5^;0%ri0AVpNXA?6! z3pZ+03o9E(5!!>MHd<;Ma}io?9wiPX=NA^%HgY~L7V18)G|YVL%mmD7#YCxvy#&Dt z94y>SsJ$HQ9bE;zL}>q-R}j2@{F4%~_D0-P6;P&6AtW$;FDDQ$Rp~or8;=i;EQ;!RqSm=w{-@>gY=M?-`^lT+Li; zoZW1k9H}2?G%G7A-onAc(ajYc%lXe(XKN=nCs%8y|HIV({P{mE0G_Ur(m!kbw|jAL_-6@M zH)#*>G5$V~|8}&ihPSf?yPAcole>$Vg|r8_O}fXYaTa{xVqxOu{*oIf$8!!YK@N_84OMb7 zx3Tp8FGKk?xVQv)_yl?Q|I<)VZ_G{HO#WX7o0|z*I=MKQfRAkBU}9y#?(AqqOa0G5 z3chf%cX9z226xB(*DjQl1YbJ3x|ukdS-g}Ip#`6s&Bn%DkO#`kYsxRc%gW7bX~_!Z z;V@<8=MykxHHY$;SeSEiK%tf<|Gry0Ll$DH|I7nGlM?r^Is|=C}-me3eWp*3sJXt^Y@j#4fS7I zA!uUusO=)OW{+aFFsJ?dYn%V(JpM;3|9!uwwFNlo|3&!!THV#j(#_Mv#X`agJiGsa zda?hXw(n}<@qgd^|4f+w+SPyA{QpxO|G#bi@1rrZHgUAF06i!>?c?LHKRTL!35NZ@ z%IvSd{RgM?@8O`Qd%XO|%Yq;N@zWNL;M6Xl7Y-C^-35Rfl$TNx8eSQ@{+`X0nrROg zL(O;oPEJhppK<<7Xh}d+lPn<`l{s(YbDDNc4c+$~9PDP?@5)Nv2b)49#C76nC*ULF zfr#4p_%(*c#>Tt710mOdz@dyZ*O3hGo0i54L2N3Q%}jw7;ibY1NydB>#vB+N8e@*n zOQA8ue|@laR0F6Xhy*I)5FRNA4B_ztaS8_!ztW4BoZq+qerZeH2^_Rt;by;J{+p?AdytNgw z*%i8ZD~(_swr#fFKh&Mt+}7^Zlaq141Kb0&a3o_tC&`$g>LAgW^W~qu1Z*VxlE~Xq z?vLqyc$Gf&>*hp;J^Y#REUq_ii&&8TLX*XuEpL&sV^Ddr6>-$TTlU| zeJ3*33)tr-1;pdv9brlrnVl34Ap_&ntin-k$_UQSVM}oQpWLOf8FOY8K;406Zwmv; zYVvK^Ib;BJTA?sH{a34wkTch4=G&)E@Rf+|4UpQpVp<3yl#B_8hi%YNpe{4WZx08@ z=Rs1BwDpMSV8|CA(@H-gH_iCu=G?W-HJUMrogyP1?jL*%XOUeZtEVle? z@%0Rtt9Pg}V3Tz>EDSY??~Wo$O=Z!Q^zrpQJ3l|)y1e|#DYJ8P8ItSt1QBJ}+ zej>l^yLW6n`RN>7h@=n@hfB93$WID@v=^e#&;V?S8?kwZbOj{AohB?gm9T=z?IDqi zdG&7(_cz-c!yog^%*@ap*Ni6_v zGU@Og?2@I?u+|zESaWP#Pnmb0F)S20>cW31Z$nRjMnf2tTT+6aULdd%)otoGnkDkH z-a-HNJ2DkC@T|mm{n1E+`ub!jG`}t{y^jBsRP-!(E@if^y;oou6??dq3k(c&adyU8 zcbSDywHmm5yA2BA?P{iK7Xth!rsbVI^7Q1pzP_$i`p8=sc-cwy>VB^6PXB1uDm&Al%2c|srNvNgt_WV+ z1MN*BZG+2>9MA^uj1DuiW77bg69*zgDa?|rB~$I13c$Kx>9q*V#Pl^n9fd040Pyhe z;Zn4XLi=Co+5+x;99DZ`GFO~+$cTwyHtCcbizrpMH#aw`%*nKm3)5aK1qR+59{9{m zf%5-cX3$veaIwFj$Cmo8z~*gSk8)@7=XF;g;|0?l4Xgq}Z1Zgl3}2FH(0G_7ItBK! z7Mua{@}WHB4vN#sF*ZIPwEkQxDJ$^)>L@PocJ(SQ;54s4hK$eS^z6*W(9lqR*?Kx! zfk~Q?prgGV0J_S*{*D|`U~80W+eo)#nEUmMOCg0NsKAD!==g)z#q2W&$v#;V8?#hC z%`q69EhnNV4uWVr{4V@tLzRUS1I)0wt6_g`4ES&5X4@0_eVZp~CFS3W zz1EYpLp}EAXS3w!QMk29LRC`(^R(3R`v>M`W{@YLXJQXmqZENxgT`o^S-y?|XMcWN zfhHo@=(N;2*3}gZPapfxDc_!0-*sz*w9E^D@ugLc$-jR63Fu%+A6+>XLQ4c-T$n_O zE;p$6T+X2y`*T|xRlhlx=RwQG26&8Ud+dQ%3QYwz-*z{bCo81RN;`^WSjvKeAZsUA zTL*y;H(PfXOWFRTzKh&vBc83?&8FRvYs=+^pLLi8-dtV}meer{iyvd@$o2-3O;0Sj zDWFlRh`X!2?vQ-lkuHHhjf-$eiXyO7p|s|<)(jrGudmSc&CQ^)$eG6V!1IdFd`o_= zaN@NM4Kp>!X7%yqJH%8}vZC3A&$Y{k3_NBnx?LAf3y8;SyY?5R7bPHa5OEXv<6J|a z72!22&WFk*cT`24Nl6Hd8i*$W;(2W;#ExHzikhk22H>>ab7H`cTN6YPu@}5}@nYMq zqNUz#m}jPofq?;!f`THv+q4zSMXc--WlWyYUKhJC4Z_X&9z5*0s4y#Cx5bCY$bEpR zDx$xC>;CRWBHVuyMU`sslPz~FCBmUM+&mE=2T*fM1ff39*)9l#JCp{Zl8v9XA&Ci~ z(qJ)?yNyY3C~>hJXP5Ab(^9r5qE463;)6_L=k<+pI7T*ioZMR<&pZ$KH*eGBeX(D_j3NC$DN8saY z7=p!^Bgix+j$=(d`8g;9viux@U-wnnd#Ry9i6Zw~IbUDj70_7^mFYKNVT)eAMic+i z)@Gc%S*z0WOSbH@4Qcf(OF==w*xcO5mdoE!Q3qbVLXx1l^@9eHpjKqQN0l%~W{dx% zA`|FSm2bmZ)(?(%$q7Or?Q;V|2@3GJ8>ohB*9HteNA{-9RtOi^&?d{9e1D7B<2owB zR|mS0lO8fB#iYS?9c5)~H^Xe)<=0afuqji?Nhl^5+ZYL>HdJLPk{_+=&H1cV@4&i? zpSAUujpksFS`u2=Cd4m7?b=R25sX_fD45ECLe>IM@}Y3c+~*If0j9+t;)}7sRq-NT zAN}rjb8~~b-kr@5RkU9J={r1hE-ov>jF2+bJ9j;tl6T0~Gua24E0!uYuA!yR3KKhmLW-xA{TNpQRvGJprjl`tL#AxxotLz!mIdGQn7>ex9k zJT+FL$jXIXuNEaZe!i?>FD<9y3`w*ZGpKPFxb))Sy;A%LzT(;Z%^5R0%0N>1~01Eg3f+Mp10qV%~2r|fTk zic5x;?#~;PsA@#@zdW&E=+cX*4}1t94mBYUygf?$QKJ3PD$CoFC402@XVp=_>Hxb^ zIaM~&A)@@Y((cFj*s~W;Mo~9Y>u#!&dzPT|?Y`gjF{i@4kA#lxJ%5(L&K)Cf~Z!Jtc&${U|I^jt_bZVM3czCG%l zb2pqpMnV#2dXl+TZ@#6TrS-#3Z=#52Pp>^JgoKz_yh|)=u&G*m3 zK|n(*=t8IV7n_r32>)#jHd`M51Bp}=PVF>?PgTT(>_+xjSXk9&(`MUlf{QARUHb;%@Ha$;myR|S`_~xEVA>@J5TRMYCIShl5JEcP` zzI}&xPQw@Cy-$#(vc^d&D=9s?6I1oUV*JA%|_hCHFNC;|y; zKF?rF?ShdTS2h(I;;yl9mFtfn zQYqm|p0>7%<_^WEP2#m;!)n!BzdS9|>jaGUlo^yJ<3~3+IXQ#CoORcC>1Od(Xz6N1 z&dJFMOhMxb&=BJSyPVh#EozohQE47Pdq#p8Ji1MkJU|==K!J6>-b442WffmxLeA&- zYBrr6aJ@aGscmSn=r*bJM&72hp@HaId4n5~cg;`$!;oU#rrA{tY23l1a6fzy2cu(& zR+)T-QOh^K5rIu92>to)?CNLjDzTM8uLk%_E}Av@wy$7S18@~G0`Ua^J>uZV-Al>v z4ebMY3r;2c1Zx6hRwKo*u&_e#^p=t;8aL8^f@yWP+4Ls9rrGf%rpK}8blZ6q8JPMCZ>%0l&VpDx%hNbMSCOnxOoB?jO`!2xNAV4~j% zxR8{t%BE-x^@TCk-IAjdvH*x&51u<^A$4{$p~hgIt-(S_mzkN#fzhdcv0Wf@oZf#t zY`z$*bMYlQI+~gQZJqt=^4r_|R3mvTfwlOlED_&RMF#bg?@6(!n9CH$b|w@VjqkAY zBGC~5T6KWB1_lQdk%_;0=T10Llzd#26l#;cwYMiND=TZ#8H$HVVDYD^Uv=MT2GB^U{8 z`wVy}qP@yFE=cGkb8z2+aVAOr>B&}J+(_x8_@;HOnBrn8pjm#cVpbpP%1{94ib4|z916&9ulf;d zvETFg5&?bl`LC(^ZVNmimtciPQ}>GTUSw{(*?C1WSTc9sp zBj23*$ZzjJZV^(7+>Gz)(5=f=a)MqP*-}>^9BRsMlemy46EFoL&zns*H8n-WiJa?r zfIfe1zv-a->cg3q!uT+UVw>05XI-cJ;zPeVzF)j$j@tJ>FQuahEwn0(3st8N5n=0DCPGyVCDDIYBV&~JLeumNy2FcTI#{*HRi>-qLSr)><2e8~4Dl={~y4f*)NS|;wJlNYSLlJgq(l8C? zs{Dc9u;^U&dDh$|9d!bV86pW;U0tE@PGQBl!sGg)v7 z<}YvN92%YiQt1n$-zV*n!nRpD?Y}5sygep8u?3ta9cjUjjh}sI1=x zY27P0t)V6f!1!tKEj!gSAihx=0((6Ik>dmXj_5{eSoX&EKB$sZo+^l!{G6|`QU(w2 z-u+6u?OM~`)|PpEb~eHq`s*|x)~5qHU|kp^p-!DW^651JL>^}XO8@?4e5Db$oU#yS zZtlvKkxY@T!g;I^uc+^1#a|I{R$`{Eu3ojWVzTnninp~<*8U2V?HQw&{s$`8jQ^QoeW=ru29AZjL;gwl+X6|_U_xq z={tW9jr2HIE^mdoW=gtN`lbTXbCy?7`FekXalHc5DfVl@)aeVjzxDdlCa3mMEnXug*29uBZl<+}VjF_01(P_5& zsVi7dr}Hhisn0`)!HPq9IBffed>u!w)|#rqb#g})@4VGsU(fSVKOWKBqqyJmHA|5M zFcuhw3jjlr+!7}S4#%bo58IY*aLbJXpTB$>|0$tt+Yv}ob%^QLXf>_8vBKmedvK81A^)j8fz0??E= z3b~<4%1aCtVotF~++nM)FWhzL`sYubPc1DJM_zt+`Dz~@TqCaX`L-`P%$VY8G!Df!WQVw%JYp2eZ0jQC)!2Op(;?+$+7=To?+^W(g z9Z75!P}tc5!!a1ySHRS6`2IIh8}-G4r!gK6r5Klb*GwP-@NyEmHmR#D=MvPkeTKyI%u+B!U2&m8Riz3@?B_xAxR z8dkKfLAQQ{$3kE*3JMB3eVS^Z_HFqsIxT43{h)G#g>d?ip6Eg0>nljx9uWf&p9W&W z&g~F$CYEj67-q-(pwS5~CH#JKJTPP8sCQgQZ#^D(K1}A+%=y2;NXoKRaXb7oHM;eu z!8ryjCT@Nh;dlmLH}L!p&8WJWN@BYSFm`!Db5tpc%?+umfG%_vLK2RIsa2ieSG$s= zJApok0rz)QroAU~xY8(w=suZIb@xVclTa}6$}wR3*h}uJ=rf$o)1zyZ`Q$la)DZ|l zT%YH$X!MQp-eH0vlZFoga9L&oaL73TRLCWL{^<#V9Kb9vqx6C?jv_@ZQiU-XM90lc zO=(>_G5H9}n~w*!Ks|h4#&6l;n3y1f+frdgSc*cEV*%fJK2SW9;mRv|U8lUl+S^Kq z2sCZsyjH`($&D?&+!rDe*05yVsW>xNfnUgdbxIxN5MpwB`t0G|!_|EpC(l=^A|1H? z*!ob3W}}#4b_0i_k30l=T?2MhWX8fbyEU$$fiii602<{cm}Yg&uh)LQawW?@bp?0_ zR(^65@dEKSpFk0a18bR;vEM{BlCA0@x{z+)20?;5S9UW!7t@Rz91XYnpJgkCbefbk zHO*npuw20;pMN2Ft=dzU2HTtJ=B)62DtaFgx9Z^JMfMvo>fjg%gY{m5hStf|6AfS6d@~@=l;BaJBZVLm@)EofPNgF zb|3OFgsB#~{mR(>%n4>9X-7<-(RJO(g<;r!Yws>M2OkgzXj>Y*+hha z@&y5n`SlT(@_p0I5PTwP6cZc6T{!Ud{;26Fk=>u@V!;O)$Z2Ro*86fTnqj*)6X}tS zD)AO)Fi2Eb7-JF|ga3-3rp0oY)CWX+QG0u4(g`QEGP3B`Q02FYfLmh_`FjCI_+OAU zGhQz@?SVO`F;x(IthOGf1%cBcOuqT{SY73(c&N2?-VQr~*kCdvKPxO#$bb_m>pb38 z`aP`ml;qZ|S1md>9M=p1VSYmOreYx5B$L_>f_fBOAD}*>(fuw~&=A*8@dL_^33;^9 z8ekB3b9PyA@PHDxa7PW;brY&&u0Z9_u2l*?qEtCH&9?=L0R$sp2Wj3S)leo@@Xwbu z(Cj1=6B9vq>7*BbD*JroEI6JW@B&@Wc0L&T9RL?LSOvahtmPY99`>WwSkRAktsdQi zb0q3FIA)%Mm`OfVY4Ya!+HzQ?U28*^H894SF;$+pYP3}F!vCPBSM12iYuJSS1yVbu zSw)%Q*UuB=27zJfX!{Y)55-VCGI2iwD5atoYMP5e;Ir4D>op3a3Ov#G+AiA6eV5bF zMn%ASYNYY!HVTZ9ecnc%BI+?W#(Xc)sVmK{n}a|#zJ)-ly*w6fS{>x5b#=up{-o=HhKUS9yqcgLsrk$KK zQ;G?390iJlaWIFB-(H*;*V!v}cJTGG*^>tH8u>i$byCjU2J@3dd`0ps17R7QLuWd% z5*|D;s)$=@1a5q!Z)c9D)S;WzzDIXd_kec5&9gpb^D#nY+VQO8A6(eMZAFB@QCCr( z@Q|1!6Kl5108`o^TT^rvcyZMKFLa!O3Jra5VslkpKDiQWnFcVX51z*dA7T*ur9jitz8!pSGV3KW<0)+&(+o z$V02JAstxf0)dU39iRJKbhbXj!~N~`*-rlpY>^}coOH*{Vnt-h zV$FmCo4!{T9LY*_<4X}2fxll|E+ez|(i}lB=-$0C>oC$q498JXzk-h0!kE%K?Y=gU_&^2e1!Lk}-em=J*pe$b9W zfi)b!80nDGz4gZ(WvEFGn3IA{!5;2W;Y6dhfEMr77`|6?oI5cSit^1;lPYWkWqGo{ zX$;)9eUHA6-U}JM88ac4MeXbfSQ%m_;R2l10-q|quvl9j+>wMk;<19bkQO($yy?E+ zy8KXCJ8toLNwD;&RsV3(>7Ho6ZPgJtH;K`+8-=RJ+-cd7#q^B-(;~o?B~LJF@u|BC zkMW4uz+?4cc0n_vH=CiN=?n z8U9@_`yj;7bG?<_htk?Fv}Lx@nd~8@hF^XkW7O#xPNj!5_!U=sPZn_OJ<%8G1HPV5 z+a0wW1Q6-(`(lWjDFoVCEZ3#;TFG-;ob-zl=Kqz0pR``Ij0&#=##H#pt;T8 zwsP9D(4}{N19p_oK!oWFi8x!mL*esF{^a(z%26S8ak`@mZ+a;jAJH=qb#K!Yw)AHh zmYv)~PDsnI3vV~nJ&WWvj=>JRrQ?6tJ;4pFs~+IMth^(?*OTGFe-gNnT-x+ya`ih* z&`E<73B3e(il)*Lmh?;3tB^O1Bu8$GlSSrPXng1Bj8V|@)-!nfz)z<3&c*!3aV%C(B+y8KCz$f|@$EXbU zK>O}pF$-+RRds!D6Z;5W;;IaSPvJv$ozS7seRp}K91xm)I}^v*>d*duoL?>T$$pJ? zy!?ct$8K$ht}(hzdZ;49J2$}?M0CQ>+JD1GbYP3L(f7hJY0yG~uE_FLiZxvO3<}Ls z@+uPW8w{Mw=+p{;Uj&YeF3(&sdA7*M&>$(U2(UXs%HDcudR<&n&gJxVB{Z_P^kgdX z<>D9Aj+0@_>0z*{=UP?oBXHR=tU`IXUcp|e4)hmG3H8lT$aMP>S95q`@kPn3d1QHy zd)#gPEcJ3-HZw4}F0p+?DZ*#qd*SZA=6BQw`wpqN#TZAaqpmKj+sltjJrxf(XlvZw zZuE0F3Quj}-fvUtb4!3Z*~2~9S?m?h5Ui6+wnA8e60r6=|h!Q*uN2j+m5F%b&9Wn4x^tBE7->~Bp_ycA(Dtc`J{%&BO z?rCo+760*xsm8NUHXO&&(TdSD@55In!0HJ*aCgaBgRE)Fh9KQPp_Gcls|A0b{a*O_ z6L`-KfqRSu>8KHV(ZHkGSz>FVR|v$)WtqZX@X6*Aivy}xjYVgi15<6v}4I+20!vnsBnOE=HF>YxcfID{wEu_k2~Z zr$(ek6wv?5T~%Kt+hM&ck09wXt>zYrFIFadwkUEOj9tpCzPHxHEg=ELL{10*i}s~N z?B$*88!p~?AM9U=OkH#D&tuPff&zKtBTWXosK~Mv8C*efMbj~np<6<$_4uc$<>j1| z(arojx-OEE0Q%tzDm=+nwAWAoWHkX*TV6VzXw4DGh(apeOd}m13nIX#7}z09%JTXh zF$4yp?Y)L2qYKWRx^h?%VMD?}8MOemBnsNBFvCRR<>_c!gj4ImBqO|6f8*3k{EV^t zRyet(mR4NO=C;{^gkynL<{QCVlIEGywG?A(6!Z*6ewyzClW?pg#6K)7z138nu{JIu z@!(Fp(0O&O0vr}S+@l4Y=CbGIl~Ig)DGKcC2@qOF9m0Vni{h(Sv>%5j-eHUKyKd*F zrYzlV@X3NTzA1@KY-TXU%IwUXnOXw+WfzsX+6u&DWP7EvU=cpSO?W`kQfYg!1N;oBM3 zDQ!^T^{;1#C+vRM{w@AblH+Ww?s*u+in*Yx@63*N%~Yecn}0vq=CPX|n`z$QIZ|Z6 zUubZmLZKOXNZx2Zo9mRNeCJ-aPjz`ba0QlX$X`%_D-^~%a>VPOzDxD-c%~lOhBH+l zz)ld=Jru*YsAB*cmi6XHW|0)F#Jy3R?q-BFLg$Mc=gaM9zxg~LsIVmQ)aCN*KeYDH zK3G(<(9>xeU)^A6Y_K}FNyjHlmf8y@Dr~S~Q`=$QMkrPHE3hRRV5vUfzIb{@%(V`8 z9#VaIXtxy8w%7#mhrd%YG}6R>mmMO75@eE2Ts1PzoB=j5uE3|sNibXWpJ+=_yOx&h za}BHj)aLeBPohTPDihSMUm#J!0XQUBRbgG&HJ{sOpi4#*Oj`jS^qqlVj@fEP}yuSAmZZ<(&5Dw?y7WQcJ!ama94WK zlqFt}(F-rcM}rLiaN3Cdf(}8ZsQ0bDcVHz&!!mY!DG_M`emM+ad#|LLoU(nq z+YMC$DJpqwZEd%wlgd^gq9K1$@X;|6KD;Paw?f8MBC;fkJ}2{+SY(hkWdzld`xC)v zj-JWH@GTRJ&)>#BZUHo;kuon$GXh#ME3QxuNdvk%(IeX5(gdFbdOUm!WhT+NJT5kk z3d`+N@crSFfbp){80GzwFgTFhF_XvG*&Z7~BP{j}{YnjYVJ}l$uD5VR?_I7EJN4|O z0BcF!1|HbPqH^h@*?z3ON5Sfik%qnsj9-QOb=LG~ljrDwDCTmgIDA^58#Ao1JqQ_y z)0JoHZ#PV7GVMmQCGMH}i*lvF-U9WTRN`}YcXR7PLPGkZ_U_6#VDxOP77cRtnUyn3 zn5Xj3Sn`(gId$qFO=*}4bnvHWE754&eup_t%oj=-DRgfr7MtoyOMXn>hzD(z(VxmU zf$FJ@4??N}D7088US{8(;<;l{Qlk(J#3+eytdy197&3~i*r9ZtqWtzD@U6-7GM}-u zpTB{V2SX} zO(VWpRV98zj+)-A68^~HGupq;bb#AdeCsHBOW@ZwrADGqEeA5xV@#XyHv51KQT#F$Hc$@LAx+YujQavOfufJ z$F}J%2t2+wuCvvAtY7p5Gqv;yirH`OJONpFuhm*D^OUh>Bpl%2bJBgNw!-=yd4MI$ zBoySjM#aX)cEDo`$AhIm#bXzb*SWWJG&r%DQpM&fxYRW}GIC%FhB|J81&pf@GvxnF zCF%4MeRpsE?D~CX_#ah*VZ1M>zCrJ8JJgJE4sAJD5YA9n3+U6E%-a*(5wlkGLzycA zRvh(`Qkn4~ESDF*MTw1i$0I_&5=t+!n4WC$+EXn>88pJY7$f5gd|{L3s|%BqM#V2x zR9i|+jMZ30lhU|8R{8yOSp>-#<~6fF>t>9|nm}q?H5ewxr-T-du>7x%*GH<3Ze^qd zDDn}5Ciqk&_uslNbT$`UVNg4P&7x3w($MUOcaLPeA`P@hnDwvL?SbE>(5YwJjbXC^ zTd$9g4-Q(0<&QtbdhNl;a6d#bjcwOI*9*|F58EMxhkRmGhi_uIFcIbpx!2(H!P|q$ zs6s)-9@8-47AD`8czf|nDVWFuN3WM1$A)9A2x(xmvUR|$cIAb zhEJbcQcmDvXh!R2<9*U3Zn;^F-c@r;###42}O}{K^k0$?TGu9iIKFDR4oB_Cw#VcTJrc z&hEI+|J*Ye$lrQ?XW5KEgsDlrFbT%(aCRhTkKXH8JY|G_64+pVCZY*PxudX?=JI@~ zfO%MVT|EPfo2Vke&D}jnt=M6)x$$n5>cMOKe9mbUWNQ^XvYxwSWn^f<+Gz}>YN$$$ zl*_nksVz&*2N5=?r?;gm_?@Wi(+s{sr zL`c=j+>xJQozGSu=dX(r^wxGxq}Bp|(u+HMP?F%x8krOcxwe$tK8gJZ`ARAMon`ji zEa~OW-e(CNiwkT!PXZ4?pe52ogp=u}a2et5%Ob}*eEG=`g{7Tb7Ytw3O80A3A z-Ja8^f!|U0)e9^E`tI168MlR_us$t}h?!EFU}4NFA*)_oq$* z?xe}$pA&BH{8Gyn3p;pGu`w{HGhg*qfDE$BM=lk}vpnm%A~L|)-rjx*A{0Ki!tycw zKDVOzr+PpW8QT;~z5q70T4AOPjIZfe2$_slqS9oS1TsZ%QBhHUMd01e`eP3H2JBff z65!S1KjGmL*Z)56eW;Q~PpZ`RqkXkL)4GF}m#8=;`4x047iGYbM2O+sltnB8v53;G zM=dAmlXdm*8(MrK5+31KHmw}xuS~doI(k=0e4pmvta^QqCiA3Rt~|D2>ON&eLGj4H zFx%OpKHp@(8SmWx!%P_@QZ$!OYw%RBva~*(Hy5phMLA}rWL!~jNof+K+DS1dcRcn! zmM(kvOdA$F^f!(N*{Q_#YA4?}c^+U{)yzhE#&M|A!`y@8YYNLMk;6A`MR6?I>yRh( z>=so)XOz*kqySCi`B(p1~&$Mr( zPUDH1fEhwYONM}FMljWsIwXmgbz4$T>a#dC(5We`O*&gbLH5g<*izU|@eAnxI` zP)rGYwRCfC&aSm@hXpvn65mKfI%W@!UuX8E7gGTRd%Qk))JGSmXb^CQtLuVc*5LIRXP@^3!HJeb=x4QGuvczfbtu&`l%sJ6 z9p^_PjKmi7lB(8Ht`hPZx?Se}5hq1c;&taIZt1Z}Hku#ACOKtq&kHNtz~lg=*+m8% z_%5M?WNiQALF0QaP9^U2e)9}}y0=Bc#V9q_w;1g%K#diNRU&kg2S+A2ezZzSzq+>T zo-{NF?2oO2w0(-ZK3P$`5s-2Yq7RHuGkt0iz1zK^IX!-uUgWxDIi! zunj7|n)HT)NC*=kGFIA|5|17%MXc-+OG?RVV81wJKHQz(33FCI<3?(Hy7}O~bYgS- zD<&iH*HrS98HydLQO5kcFb~lftMdauJU+6E=G%k+dreI#5(Dy&%D0)gR+NG#x%ks|@O#kbD>&+B z06$9Q^@!7JP`G9w&**MEE&wXb$(cY7zCB<@56wc9^he*^V(ccPaC}XLO*-YntQZ{o4h8LL|fm$~OnDeaUEY(!ZxI#pPRK$?ppz8__jS-X^P0 zAZdwFgon^#swO_K|AR>tAvHEVEfa7QWlSFka^F4^fdoe`^iUqh{MFxvS1ikSQO&ZY^5kMjx8j^vAv}=&^y;lvn%FmQ-|v!# zI+X%_eoR0|dh8d<@1VhK%6hEiM~EmnR4+=|f~3yX7o)4=-&u)AV(Ca?=}3<$*O)6Loag$p8})y&vnTt$&(un{ zgTv30A?l*XL$yvPe5`7yKn3)zZ)iw;x>YCj^(sS_NonXu{d=1c_;5@-C#yCK)R>Q}v2uk=@rCe@>UJ%)K_YaGNcH@PFI{sMDGotVLrP^2 zc|OE~;~Ytp-L7;(RYEOP!8l-+P7NW>E*PlnzJdPKKBJ*?VflloFqe@&u?iq&kt_s- zd5Xq3toq`NzmN-E{WGOu8K{e|n$-2)OBeW!AGtn$`%`VNEPdy*Epl5uNJaGb_Xk^@ zQ5A+w({c=n(!EabAvSY9M9+dVxLHHQ0O%$JAt?(@9{czXqlAtwLGI{!rviLEAdVri zKaFsN^pj62OZ|M%cJ4q~0k28FiFsnu9VMH}Ap;9Q9eWjZUA{JfQWY!BiMg9W+~IoT zX-dx*5l$&7<@wYvi>Qx}XyBzfTaxTa4s%|zHKW3oYF90a$16;e&XK|@Z!a>8Nhy7L zM;kfj9x2G1n$PMwLdI1Zi(6CrxQLph`gLz3j0x+yvdi$iTF~Ktsx8eqHnDyKDNT~v z+NmeQHBZ{_m6-gSXp011f@uk(Gp+CW&KAg52HE(8RKB}aD#Dc7EKPPU9DIT#di)W8 z5;BN?{FzxXg&Gi|M1NF>z(4aYtRN4)V~}DA=^JB`1o7dItm{X=x2Wr5_hkx_WHsW% zXWRx6kcfm0@{$e2yrokb@S;cY%WDZLYtcnw$8QPln>U><2luTwb^AWC;x%~84Tfw+ zT>4jvY2(vogqA|2=}j>zEG0e%{RlY=Ua=8`6wcNr_S18vDcXaiNw8|>E2*QQS+h8i z(1+iEz}f}FsDNjgFEb|>7h`29y@Np#Ghe!VKEX@qc8RqcN9~yGC%q@?Hcxf)0zTTV zDWz&%cGG*ky0*}hVf8-R#yMi26z*}s_X>Ex+RY$;Ymy$mgKHJRauBClr9U1r*6(FwMc`#Cq#LRg-21!tI*@o1JKHk`Pbd%CiuJAiWh)r}J_&M-Htv zL&3%56k*}eIdF8bVI-6Fp2j5 zIRU0wY7l#CiMA%yBom&=#gy>gD*rj&YS)=^N!kSG#gY^`e97O- z2uqEMkNT4TdBRcGa3*1ReE{TeSzM7R*GL~1yQ5mL9+6!wx*5#Yk9?qX(mjg!^oQho zFh<2Y{a3vu(kkG~WIBv*!2>+667dQ!C+ayNkvc`OQadItLXcA>X$0z7_##EpaP5ib z-zxbUi+^YQ#QGjqzP%{;61CQJUcd%t+cT4aMNG}6o`-uADRL~F0lM&!v_ut3+I`t2 zkGzE0O83`7cn5o5NucO*nuUCnNk0)9hw$^t{$M)=D~*+vmBVtwCfaf9+VWt# zI^-FGSBm6}DdbS*)&HKm{tzM=PqUddQ9zuTWfAR5u`As=(Whd2hvHhB zGZwNlZN-PTF*cuVK16*h&jW3(r?FHzYi-u(ugJR&(QR3k zcAkkXg&Av-3vspa%BQqOXp_B3E4g9)Y=dHhyTjXcBtkq|I8LGf<^eR6Xmq6^uT|is z^MY4y`8^b|Oq_fO1jok+p9FPsHXVr<{K1!PI{rkF+@bUOH$UHJnYUvvtM|1N+w!qo zV{MIwtzzq8gsX@+qhu2;tCjK}Ch%oRnzz-0OFF6ezDvf;&^?kOx?vdC#)Y>9bMmGsDy( zrTCHVslBH|iwmlM)w{f0qgzB&dA+Ll#2AT*M9Pjc^9Ofp()f>~t2aC!#S8KShDlfT z?~n`2Ht|0Uc>|DTNSw`3&kJNzmnnzHWte!ZK4&J9lIx#ZYU*&Vq%Nzw+46^6+GY|3 z3jx!E-Ypwtf9X z6<;K*4v-FGsEd@K?u<8o%yg>jae!hgi_Bx6sL`d}40<(=e6gZ4Ecv3jta?!J{o9w= z{&|d|i@-kr<(SRu_wxtU9yAPlOIjM1i-&N?>jM&vK-aW^qC75k$awayl(uk)7k^|W zCEku?w`j@#;^`Z_v8Y3DN7*?Pe6#JT3ighliZtldY{o&yy^lFZC{J$b3 zc`x}xp_!3F$c^r5UFABLe_2Ur%C>8(e6FSA4gP65y}0L}=AG@h>Yo3Oje07wyFDd} zPC;xlb8nA~8)ZulIH#EF)OI#r9$-$5jv1iGPF3i)vQM7_IZ3`Hmb=|9VLtb_j@Z!} zu`Hi#)oH;YAv4N6D%ifyDF;9Cr) zSG=84Mzs9l&OMV0kAqYVs0Jfu1N(4$hVK$O6CMI8iew4Is?*=XxX?ldsV+dVYa{Y_ zltuebLT?V!sDBjD6CJG#(&xB}(E>o(#31&SJ+ga@;Kgkr8re1pms zes`|GNjKLB=5lL&%b;CMEie?f|JTs9)?}3riA=Gjt(>ej8=9C~iWNz}cfCt({G9(Y)YUy2WPP>#`T^}(GySj!-Pf$Oq-lk7W) zA!;fdp!f0wF8j1X0+*PY-6(lBYIL>EOj%N!`|>yEyTTsdD4XM+qav01#)%WAgP8Sy zFczMF#?p<|XwVh<(01AWaK6)aEiS1B#9L7Pyt3yJMKE~39x}iyZSl=*vu}3leW{9a zo&9P37&B9DH8b6QiXk>vFA7k{+SPmgY*E} z63+?{W@67bPDeFrIbHmk1U-6tU&t-AHL#^F|EYQP^_yuj7#{kGMWX6;ua+y<=txY= zx##-A##+N9ot?JItkw&z8V)=|W34h%ZL3T<9?xjh=EO6O=3Rzbc9lx+k{m}}yODM5 z`0PMq_aV)$9%dF$n>J3jlX&3v?B?!>PG``l(4=DOBxu`79NT&dh{o2<=V~J%=$R-S zv2Gq^mm2Ua`HrjBjOPG+XL2G9<$JVC_sWk1RKQ2sqr!7z$Wz^R&|t8gw#R!R^^;49 z%DjTA&zCGJkGE&q7-#m0go}uSDI^~80b8G8;2*mw5>;k|lo56{`gl%6cc>9WJ)!|L z()qIDV=Lg)o5z%((mGjr9GjLOFc-wJJSR(G~_piRW$XBwuHh;OwB}3}yuGZThrw$uc>u!*OygYWCJl66$AfB68`h&=iTzK>&A2 z(TeV4(M5lzCSnh&P8C*PjcmqqM%}#JfvKRFuu?pq#HGkHVUa{H<@)?v1 z^Zm>H)*YAzBkY|^N6He4<{+kZaNhK)1%Km3u=;B?ZOjEWJ~G8&ZRk`%C^6eSd+Acl z&T@-yzdN(8b0DaGF`%XMztFTS=O-cIPQjF{Rir0U?oNvvW<%R;zw6T=UKpbK7r)N+ z@2GSgqRx+p^hUO~Nut&G(4@7}-8W71R$fs?d=T1Hf5|btzj!5#hXM(w#&#E*v_Z(A2bEi+dOV%KtFy+(K=3VYnA zZpakjM}P`(U~LV}q=PheYAEj+-a)d}@gb-{aw{tzboTe>_;K=ij z)YAN3p{ZRcZZ3C3Kh`G6w$^B} z#){NATNh=JYeE7M+_!-9u1q#;tUFHah_f#HSQToHao2#t)kctG{AERZn^w1}bv$|P4J70E zy9?!aUfwq{fg%zArF|iEOuRt!L%;ANC>~q>ofn8dHA=ZV%kK=-Ml)~p2NW6k?sGp2 zMQ3Jmy0nh?eQ5B@urI$GuiagILw52&jg@Qtg$6L?GY&Qk|~~ zzT!&v)JZ(cSG4H(s*>A>h*uHq4}m{gXp(-5g!l#c5hWLypbsKUPZL#ky=0>c#L*|+ z6-4ccB=rdez@@j93aE`+OFPEPU`pk-EFa1GtfV5xNr)eW)Nm&6S4ByFA%Q89BYraR z5^_If9*U0A96Q~<|227UzoKxaoKaz&dpQ|!ctNqMmL&u(V2caR)lFLBrEbGiz z+vSm7W-0-shb5Q@LRJM5P3ffCf1gsf>10x{Ewqgtz3INH9gaBWGdmr!Vn-Qv@Jtry zVPp|I-P*q*AM!Jq+J!7j7F++PEWxl^hciiyBU?MI?QjMcQDTm-*JU9<8gL^1b`wLi zkmgtqO0}xqDu|)fF}qFGsM%3M{9X<5of=xixPhwru5!BJ{QB4OmujcX>Xx$ie*4dH z$E9b&|5%0~ycOe3hj+V~%oJsn`c>D2qHP)pK$LlibqsxO3-TzED)8nceBgt@mTEm_ zx=z2E7Xy>z5_DBCfXDWV|IGrE3AYx4L)n?qhX*FeLr!u;eDYoU8{`9PLYhziSyq~K zTt!30!sH)KrWFUmo2hv_GzD?`28$I1$Mt5CPtSF{BAeK#meF%Y-R8KNXqTK-2`pIK zEXrG^?j)bz6rlQ(h;$Zh((9Qv6zc@>sdc~$r)<|yk0|(Fn-69MHjiu)5_Hyxjkxw; z|KS_Rc56~Tes%8m@YK@>*}{c$p-SHD+W?oi&4gnYsn{s}muRI-h@q6J#W#zC3UVVL|MRO+#nUhr@jgk4ym?fenqVW2&N@N zrVwwk(1s*>=+~^|-`{kD04!U{eR3MC`6#*>1*b(hLyUyG92oqQtMOU*{2{TtXI%e> z9Md7Ks;I+QRB38rur7vlCoBl&QFR+x+mM1$_Rl*bvr}XBH=$r}9l@$M-li+bXQl(g zDzz9dVuPFS)`YZ}3-swEO_-9M^8V*brh|AYhM^NSCPUzT5`1%CQ4!I6#1V~(CJB2SvBCZX_zKVq=D{8UF-mMLLppovX&I_L(%Jrk6JDTy(LZ~HKi)EJ*pg<*qVyEPP(TR;lDe9|W6b`p^h zWlZTIk2H-R6%IG2nme&V{hl}*^4PzT;LI|u^K7TAOs{$xg9W+MVJ9+@0!B6BOkUkB zRSjV?VJxYk@v)_#6WKx|0Ml{+-ahT=n#Hveg%M{KAEkZFLLDka%||@PW5F38EZoB6 znChr}9yOM7aM>!ecQaH@kfM{jB(!Y>*hDjj=|3%*n{ZFPlK z6W7SmYjH8s*f_XwHo_%#AP1JBA`C(TG=wwb3j28DCk1>}^OxZJ-cej~{}1 zzvC`JZ145TD7ZH8jcIS5V_pmbi&jZ;ChL9d3lHrj-uU7hvB zjXqU8VyTdLDJ`wr+NP@KwsxUv6*1*oSqE1m@eA-j^djwXL7}xhU7O+!B6UV$Mq`Ft zDjFJQI`9uWr9{vI@>gZ(?=SAy38H|q?$3x5WmU=+8|)Sq*la*(cKHUaF;$h$LFKkO zgvdKIyP}nF!1;IYw*+|CS@`YvSkZrw#O)_?7dad8(N*%cU9)!7J=PN|3&VjpDQSL+ zrF?1G>2?ew@h9cGKL8eb-9ewryKb#Kg#0Ppqi*!`lNv_~4JK{JC+*cI*DT6QS%{p*`k&SDGk~OxZ z@oGF2^+_GI%xH5J)*21D&fpRc)seUVO#yZ(6m4czrPfcN!KoYvpDFzCsSw+84(47D z|0w5&kZ zZjM`sreSBsz4rb**?-e?1NzJ6)4$46k15c=Rbv(EMYMS!pF|D59qUs0-6}{qZ$*J5 z*+Ogyr}Im72kHi8=A#ZA2x*6^_~ABEGPeXm3IYy@I_@?M8;_dFM%G;f@hDOo{jQvI z@SZGA3MZzw7IV<97^V zzvr|SEB`2R7=%z7ZW;IjCr>s94Fe+X2b`v$MRc|h$>9MXD_Bs5b#gM-XRENDY0YJ% zGptLlR{<|}E}Vta8LzWG5LI3oHq9h_B?0lixh_4;S&;CDVP<}CLOp6!g(I+{t|4WkO>gk@QJ>FD)r%`U?U1<8GDWYKdI4ZF)u+%=0T6*o8BMiNwfxD$Dm ziO$s5+27TYc@7@CPH5tu*wjC283?^p+SY%*fDy6e+tBJn{%* zry_wj`EKi|ufNmMjAI3K?i=w*8u7VD($O2I$&b^J=X$7W_DjZZl}|aT0VScT81>08 z`$C|qdr&6rjsG_~-f{jSi~)9WxbY&Qpqo0Zq<>>Rp#ELk%yr6^qUepmI@pw?Y}yt% z061yUnJ|q$(>^1oRD{t!{buGc&d&y#!l#O`EI2fE*v3X+Y1wWaX<=)o4JR>??3K%) z{Kiq){B*hOvdW_q%fC!eOsQQ&{lOFaF!evu#@qk#>B-V1hYbGVpv1p5o>~=?`$_~` zrGOtt;7VKt-Y)``vB~~jP6K8^QMIMyM$rm4<~gOHK&y*h`6`;4tF(t$Pr}Uf7qD?Z z@t}_vIxT$tI;&JY8(+7Fsp6UToOc1;Fyw~`0R%SF*sgOFR-hdI$W6Gd(V=u7#sY}- zK~rN#tmlRG$1Ld?z9@4yJCd(vNkBQ_e>X=L>v>-4I6lj9yTKC;<1+Qcos|1xJ7B&A&#`s+)FStq7*hC%=y-km)zrLdJRH2R^@FcKr2oXx#sxOOn9qf0ZIhr*6VK5NE#U28b-+cYl>{+vY4bSP;v zOgI%@(S3ytMyC(f5F1KpxkllH+~_-18px$Jz1<|;)hwjgp^&UaYb?dfd4TS-1Jb6x z4+1an!<{(r`UYR|YV`S_!-F}ddSef5NFJnNwo6mR$f`@kM_NAlI$3yfaVBM`iblF~ z&mVACYx?KLbSD};D0o{`EpPcRxyvXNx&@h7GHYQ&DRfp!Mv?2ZM9lz|ewp=z1Mx@% z45Pm%JV|@T&ZD^Y-@v(UxHIpLho#3htxPdh<6 zd{jSVMYZv)tvjWD^*V<=U=viXh{ec zRcCHy22u8v)az{zZp-hE>?U8em+Y#`pC_F~5Zh1o8@Va7>r?>6vxN7Ht}*+I^ksYc z-NdZ{@@_L#dM6`Be38owrQ>EhlGwk+IoBt&z|ciYxLy+Dc?%44{l6_(6y#RWuim7G zv-IV&qS)(L=@3=;>`BlJn{>FY31CQHJnYdb1KN-?=p19OHe?y89z|W5PzlA&K)R2J z?HI$AJsS^fj?+6_oCFDi{mGL1gQX=cbj@7HBsQ3R6XDYkaX)L35OOl2^`e~xZof%0 zQOpPSo`{daeFtft!R)cj(P=RCi{V6@*(o=YLpJTb6b!TzQsOpWL~Fq_>c@4CVZ+hV zXAGaIE2J;P1py%pPn9PxR(+a4IaRw5{U2r@>zT23$XzN43?M!AQzW1EpnWL&LWB1@ zrcyTSoBKPP+g*Fzz=zGZVya}|v`M-mjzMI%SGhp2jJJ!2$9HC=YOGRKen8fLC8iQ9 zlQAgH5{TfI(2bEP_6uEWWk)!5O+`S}f9O8>s4A(E2WvyVOf+W+7cJokHVAa`7qHDk z8Bjv9MGtX(^Ok?Es1{(Zs+$%}w&gHL%4Xo4>%|-=6QnfQ1vV*VQz#Hd8mrMU7%z4t zfQcS6`!<%A+C}sFH7h%jvfH_`f47s+QQtv z+Ez`NfL=p}WOaacDt?q|MNhJdhK-WA+p#QG2N_v5+Xkoy0^LNShC@PeT0UL@BLKOmdif-$kYqKWJPeTt0X7AfEOHp%x|Q;R z#DVh6iB&LJhQ2g7zXdb=3!22sEKAhe2ZO`9iyxvjv(d}QI^siZxSnbA$6s*CQD@$5 z+}REvclp5DzAuV(J+1h}k^L{8$Kg5BniJgIvSTW7*suP=tc*O730@HWb0CD<*xZ;G zXn;`dZ-D(3Xu(4I{1Q)&eRA~|cIY+E8HTzGj>R;BH%rz|9Pu;-Rr;f26sQM3<{l(3 z9_{a*(UYKXZ7F9hJ`_*!Yy5yiTm8(3PjmK=z{6q_deB~#h`kh6>@N6dl+(nf(qrnK z@m2aL@m24N6Szv68VCuv%fIgL9dksR*TV`zk_DK74>1f8?qt&>Vv7$v_x0?X;VR5O zDFprn zG)59YrI`5-WO^QsmyNWwz=^3OF*^b^cJVQHD9)}X`1%z^*C`~HEhL3eueShvf@HAk zA2*%DOocwmAS9#VJOyu}(o^z5R=GfZaEFS3bR^Ro;a&Wih8i%ryi;IO$TQEzL^AlF zAq1(uYglbo10EqHORD&{1o11m!ngYRV7FU^Fqe%e5Y;BwXd_buVL^D+VvnxGE*lIj zG!{}t-;fMH-~8)~5~}M%$Ow3K&wYROfWU6>nsWwbk0iJPTyvnZ(m|ZnCU6R16G>3A zG`$SKx$nc;=(9lAY|gYmnkZUu%Du|+sK(i?nt0%sodcd>0SK}@`eFeo5!@ohS^Wl< z12}UVd35;tRxZ;LC@69fCjS}pTHUzAF9~K+OcVHuih>NzwwaYPeuMQMm8RgqadU?a60es_&#p&pZcf?V^CSJArH)C|GklPyC{OJ60Wci+o>ZY*@#| zNPVHk?j-Sv2tr90FT2E_&$)5Af3coS;Hwy_K`gT`{9cN;)TQGUexwihH^X#&aP<)e zFnbXIST7q%BNW;w&NoRPp#7CPN!7ezM7B4?9;v zoEyjpRy4*B86dTJQTH3-i!67j?;B8kk1#;}jtmOzV)3Bb9F|Wx8zNio z1HW2lDlIz?k`=%!9Gu!Lj_cKH&dqha*Z!NTQG}vc3mg+3S&YaRp`@wf+Pl{0F1d#k zF+nGJuv3!81dJ~p>qv8V`+kJW2O#im!jrvO`rh+fsMIj7>ohjl`mofJoI6RjiYZ~@ z*H7TzL&cxxmg64eLpM~yB{tTK$C+~CIfdw6?$_3gy#CZvbd`U;9s?!jb>IH=Ww|Xd zHdLj;ZT6fIg$2VN!)Gzf*q7VR{sVePOP5FBa<2dcm%iJ6S@C~)^T~lKV5y+tuSalG z*6x85-#QUiqj#9d>d$qMUpM{6JXz;>x0 z@VUcwou$b-X1vo0cWFH$7(o4#DdP|-ZCq6nv-&sLt1T{lYNDv!e@S2$smJ#jZwYjy z>+Fe6Hnlt#@eTXM8ilQ6b&5Ts>Cb_=FRS#+}e#wEEXH zvkXA44&Y=1sW%_JIIa?TQ=JCbxrP~1{R@R4Yxa!}f@a^^u65Q@90e=7j+c5NqG)FG z`ZtnTLievv)C~U{D*pY_r6j&F4sLG89lWdj8*04xms~j9N9bt$zi-38pDzPHpf>+* zMoFQxLvdD*(bufXt}Tfds^SD$5WEau8bazCv_n~}30i}5?gF6l+o&1GPd1$WV!~yq zK)6RQ=Fej47k03BB#M;u5{oOhVj3>@wJ;;t`AUNEPbG~b4|-LqOmFDw?lGdQxg^#= z!oK_*U(fxt9eR)JC4ZuoA54J^jnEHUw8r0nkzSM=t0}eT$Wi*8JLDlgX9?RUfZDDe zcA8U`JKyW&ncn)J>M+XUbewEqH zln$y3jXT;ZD^cTcTp!;py->HPy53YCUbLw4Jg2m&OU8S;eGyQFDy*_=%OhGz7BS2e z+kpSCjl8ybo{{r;_&Hm7q;%I@){0!|=%=+Z&-satxNlFh3iA}>??ArFWppk6&b%FL8ioScn!M`mH@Qg2zkHBz0mkz9} zkL7=EgJPy}lDMP^@*c=9{*Yj9MMhkb5<}9^5U=fOGuqSill0^IKO{mhI=@ZjB)anQ z_|KYac;nJnV*qdx`&9~8hA||X>%tInbAP~_wA84<1s1y)X!e%CF*)Z?qkwq9?>i@m zIH_b*%qGR_baUm6rAMQ~_|sBj{wqY>mhFMOnF#q73xHIh?`M{jzy7%CxdA$!-=4+n|pX&Hw5ylhm zNE?4#pde1CrepJ}q+t;TiM7jOMl<&iJ7YN5&a2208QKX!>5_DGPV`oJ%k#IB_pl$^ zfLQ+hkCXFL8G+(ZY-Hi?b6DY<0aMp296s}>CBp^Mm=cFUsLY7n^W)0!GxzF^%i%kB!9UTZhe$-qapBN7bq@DsOi%Ov6W!Mn(K z_d^LRuwK~-=S4&oZ9(|FDpIz+I+yV>MN@FXkXo{eL;hiAu@f+Y(Ufthkr|=Rb19P% z>>GuCl0})wQryr4f2zwOd3qgi9+2=(AnSBssKhPZNkU7;Pr28s;Ndg*(EqTg}L8^M-Uq$Ac_ z2?Po}l0NZ6`M()c(xMpMcUMk1v2gdvnpAbxDrF&?cKT3mRw9eN-!Sn5*Wy4dV53kH zr$P?5^{cOS&Lt3nudhIQHP8VE_bVoM=+H7kabu-t9&@9P*~-vM^@EGD=K?^k2>CnZ z4~sy|buQFKXV|!ipc`Sc>^3o&Yrz4U26P;S_S`KjoV{k>>jj#3Ejgt{bNVHrsDD{@ zl(iW*gypCBnxu+h55xOv1?Svs5Mgva(Wb34ay{DN+V^&D+9_zM*x7_JI(1oPpO5G;`pyYXun6Y2znx>25G4Ph zha8FqOa3yS`_em_W_r{qb-GVV^fPbJ%TI(8H}6T2Z%=B`n`pbV{xr{Rh%OE7K^Et>VEfcG$^zmoGIsqn3| zS}x3mjeO5|r_wR|E5z3hD`Vk+D`AA1NQ{tnjO6Yu5T_+mjge@CuraF+#uUoXdT|eR zYk>z|Ip_h7LfqeoEYc=)o!nOieGEH6#TbipwL;?_vJZyiKbWr|n`q3u5y`X7nszg0 zH2(5ASgv0U>h=B-o#O_yhepA`F6(e1-~`7qE(Pc1FxIcjKRnu%y_1k`kGy<`Lb1fv zXnj~oD|@1i@G3#=!4>$x7hoQqlOVUloMmLFUt@T)%ntjKzqh05GIhgQ{zXCayQST& zIRKKjX`aqwU_nt$*qtNhNi-IuoP)mJhsK=+qb&WMNr2>^7omIw1w)E!I~40B@V~)_ zxEEA?EVpX!u=h9HtJsY&#L+r=oo|QDU+|*F?;uKxyMqXk;c%KW-}M#`&bc^9^C~V! zrK&fpg^A^7Rm%j&e?=!`-q5NfA+UmH0-2Cxt=2+f%durV$#x3F_4X(Ro;=jX z1hNIXTY9fCcAv*0P+kYNoJ?@Eu-rO&`eBSQH6^E~M3mCzyFwV>^;_~>qx;g{U0Z&% z4G3g@FuXguxT3OTCy*&$GxGn0Z&3|Wr3UkeJA}XW*6i(b3EZ~Ae<1?KO)9;bYKo`a z^s^PJ)PV?mWN8dafDw`I1kXlCEviBq=#4rKa)R*2SIYwxli=(49Q4jBA6wc$B8&GF zcfr=A?2N-~>{svEE}ZL;&_n?rg6VLQ0j)v70I5#q40t54CC*Z{9zDOQQN-0Zg0#Na z)9z5dXDBP6g?wMq!MNj>ZmuRyA-lTn`yeA(wX~(&hsVo*nPcTC{UZGMYeeD#p29#U1K{dX$`?9E)&@piAxou;d$K-frerac* zkI5s(`W`l@9}hBLgZ_Dy%bJ(&sk!+D9jcIr5}$8PmiA7%dRL2qwV=%G}4I| z22XSD4Th>SX^k3`g=Y`7uI&_o2C{$lL@{tU?$%2&Qv7mr<+_Fpv+7bcDQ=3H1UVk5B9RDcqN6!!9?`?SwC2lkHsm1iBITgV(0q z>F(%R9VL%S%Rppa=;%$(um@~=$sE4|xnl{VK?lb8yXH}O4NQSJ!3q~jt)!(;45<83 zc$Qnp7v5YmClx-z&%s%mRt4-}yi_=-vITYMd&=-?&NuC9oKkE10dFUSvz?%9D%X)r zzAIrb{2mKbMjjOD{OWrM{#kA9g)OwUwoV(UA~5suGENn^H%R~a!65Z_4eC25(#8^8 zwF9xi3(i+xIRR$?B!|+;{^|`?O1*LPG*dd1u{`*;(r8K`b7S+ud_a8yVc;3*(PvHE zO&2tN6Q$|&)RxWEJH0;bs_A?duDlzg8H`q4C#u(S8#uToFi<$xZ!#Q}6~g;3A{74p z>DPW`si26g=~^87FuVe$PHo)-k4k-y#g9fvG0@enF`v?qu@PO}`qp=%^MV}R)kXeA zH!HlE?-<3#mc?UF&VP%8%tOE@^G0c^_$l=~Mu+~p0VTV9_(Hi8wmR5gLhGRAK3W*4 zY?+`RHO(+(#(W9INt5`#3U+y~9rigQoK@{S$d)ntpqyv_k}Of~`l<#;1t)cpA<>n7 zd!&H_k-%1B^f#+KT_3l4KGaFG$x-ccZHEGz|&@z zAh#Wl^pfxA=!tRzjw#NP_enrQh9u5oz6tE2!x(zvt?=oZ^dj#Ar~wF&9B$$AD*qPr zO0R5@W}TR20i<>hmKE%S(Vy?6j%wce{WUJ^C}E>kpIrtR_3KgOw%@T@F%>zpE*)Fe zXGT|a!e`;ZeAwP>?ODQC8z477yXBN@4bGo(ox7kfxIMVQ4tB6>{4-qI(4fOh(o<}M zY*}Z_l2jO+h8^)miY=a7>{M&J5gFwgka;B>SyjKCBHs-LkxdBya5G=#;4@#w+m_hc zMxg_xG0kju!3?1gNBIOxAk`Nu)Athbz~pEf5is16aTt^Kt<3Yr_G_R{jRsq<+*N=l z57cCtcrM#5OPB?#gh2H1Ac7J}>qI=;A2By&2d)_%!?RyMIYi68xhOC-9sTbN{=e#3 zKc7xDoEF&OB7Ao!E~B*kjw*`0tA|xzcHI*LPpIuKw_Cb_3bz-lp zqF?EN4!yilXj;(nv)%x^&OlgqEUSQU0?fruUXWZ#??Zfdy5tkXKgBQ5ReykC2#;x-IRXMlLm zqyK*YHC5F(`Wl4@W4&Xk3#E~1ms_Xg`^kNl@!xq%NO~eLPkg?On8}7P{xkM9qRe+< zfczZ2di9#qyUs`h)jeU)Mcv_s^zkn&E1aD_fu&sP)bKEFK@5)x|DWc~<^7C2)VL)}0| z@sWteH6Kgj#_F@{3t@~}&sj@CCSng*c)~-DaRQX>*?*Wu?5W49f9!KbZM{)Tbjt*3 zErPpygQypQwc4QYP{Bme7c=Z1CIDMO_Uyy4a6^GdwzN#nhn_Oj6ZErDMGle1)2uMI zzqn7;0d=yW@LVQL?mT!ap6$Y!m6{oOk6MH!oW{a;q3u9QP$70A;@V*?2xLD|@AT#zD!P$K`0WkzuCs}<i0FAKOW zs@khnBP^aBSKc=LS?_tc6}%PBnkxC=ObYp5Ms#wG*l-vzk=VxbKN~bwOZLjgqsfK& z$RD_hZo~jMW8SPTgIw)AD64FC08bY|F_eLbfN~xtly*#JV~RNXbi+Uxv#;lemNgjU zd6DU?L9AD@r#o{YZj%aO&i+tIHjmHS5um0;Fbn&_dCTOND0*m?ib@7CNz4ATOGSs5 zBKoJcW%1r5{l|pM9a&&LHn!Vg)7@!9kI#CLDpCGZT{=Z>-XZa2-8R)8iNY-^4yr0bxtGn`L{o8h>K5Ha|q2ZJBQW z9jIV=H;eoA+vw<>#RhhOhhz}vz{hNFU%+e#n&fZ~^pJ7R6iV^{M{A^}zT6H>zbI%* zkQVSv18+2uX#bZazWF%KbXy9NOQh~@=qp(h(+zyzRKw&^s2N;K0zGqcF zB&b=#h)cR%QTtL)q}mskZW?l4A2V^{ZTYDbTd^wi{t_t9lgcaqdcd1$Ik*dU<+KKygcLHNzVBoq?f67f&z z$nB5B-~03X81r7aK||3~N&S}$Cx(yY$xNZC47O5|oh4YKGvx z{E}&@mGQz@awRLaay_&mj;sFV(}c{!feoTC~U! z49aTtvKOjZ_4@QxfOcLzOXgfKf4Q z>)rKRtSLJCg_0f`l0l@(+XNVFNJ@uR_a>3m+2d`~nbJ3%NuN6 z6=6u-{$x}V>BYh)ZcmUxz$#>clNtuD-g-1dV4lgAz6QDY$wPVJchEohwMxG9Fyz~D z6`FU&X<%SU#F+Qi)E{IbFIxuCWf(K(Ws;^rug}dmQ)9Crmzr;jlH4s5X0Vc7`=fCu zu8TJ<@nvL*kU73MXQtrq&H(on{p@@1Ex6V0Vh(pNsfSxAyP{PxM_ccd2Vu3xF+e? zQ;y4ICX&`N`^Tx_uuC?|;dEsU;V<8o$n#zNCvUw1<#T-rgZVk0lm7*0*T}o}ck+JY z!Rx!oP062pN@z)VE0<%rv!Trt;0jzIoZ{A%13yV>OM|gpiOO?Zv)@9wa~fS?fO|rb z7lf@ak4Q70xKgH+qLx`nlNdBYUdpb8yicC|bG0%k!nesBVg!&Bn zQ{C0zU4u+<(^;keWT5oi4K0a|33B0MXU+(}>jwRL${V zJS-a#V4Ny_eUiK5=zRt32+%GuMX?drn{co?tTnd#43xBce~fO{Q981Zv$ zB8Z$bpmD3Xl%isKFG|Hn)g;wmXjTff)K-saPmdHns1bAce)_jB3&M&@f8y|MkG<%B z(te29X%{2y+FmY(O<8jd@Krc1g>M}NESQ#LBD^gs=aPgWPYrS0M#-c-UJj33xZO{8 z*XSNl>L9~T_6bsOvqA}%J`_m$DSv%+c+HrYvXtJf$X*h4<>NG(oF1)-YT{Sq4~-u5 zpY{U3=#k&7a!us(XQDx;;0?!UC`L4T{xABDVsAM;8KjI$&A&PA+{FQVL-A`k*r`k< zMx;Wh4}aZ?H27B<?cIgiw#=W3BJlfZjudug z+FBG$)S6Y2hc3Q#VM8IjmZqJ=+@ulfS>Ra;2VdaHw)BSqL^7L1!SpY!HwB-SGSYDg zuofvS@WDn+LVRPt&KfT2(VCtcDXn9Q8!kLzmo7js&PYX(rekwXNpmlD*OCG01yhcH zl!6t@ayPSW&_PedsQ=aV4}_Cp4yji9J9c?^Ys{4{aN4#nbv0 zTi=X~Y2nA8ovVdsvP4M>t1KPtkKpv=49fvQSk0b(j{g+k22rl84~u9M16&9C`ryf! zxUn}yJ`O8M0l%1+qFu>0vLM!4YRy!TYFwJzjZKRZ{Wm=#-WdKC&xbVPHUCQUb3KJM z=pbf557*iTO4EioVS$e{{A~{vJbc)8Y8YGBM$BDtFxa{fQU16B9*jQ?+5Uj&b%Khz z&INr*Z~Clw6Z&AoQ~IOL`IHEhZ~YAU?vbn(weMIT1wmLYD!}Z*_%Mx;z zwqzkJohGis5b5WM_0e9*?lU-^5`LdEC}|ay_&|~Ia5r!k;HD@Z##i^ammcgOOMxAR z6KL^I|BSi};xY!BBII#LB>W`74gXSo5LtgoolN_vWzh>VM6C!}L|4k0JbVEw-QsL* zlzktA+!!Lp%HeMWcj`tl*U{8H)0I)FfXk3YsUTGaDS1_mq|=f03(+4|rWtHV2{nV& z(3{b`s81(0%p5ojf{6h+X>qEeYOErLMTm{x5g-ynAe{$&odAKQ9a>9LTx;MUE}phE zNn1wfaneve9AyBsu1lm|cV%|+m&L@;HMiVKEsJa^%Ti_xNbE}qL`CmI!D^F#wi>fG z!3#bLsBnf&(XupY-MhPSL`C^pmY1T^8mZ!~n|be;JOJHLO4R#krirMfc7J{jtFzV6 ze>6ZUSac-lOLbeJ@r7^WTynx*kz$Wt0cV5;P1K!!3;f25IISkpbRQ`m zMpQ=H|H5;l$Z%3B-J~bYsLuqWhSA*uYW)CZ@NLEZAC2rP#;`LmE$?=^-xHg>&IW@* z>r^0{Wvq|4g7io4mu;S7^-L>&jZnG%xrA-m3#mgDGC|_Q6$h>d zFGpmcuk#=@iy)Q=?N%GH(DJH2I3i#Jt>xi4nS9N^js}OAXVqLZ)-4Mg3d0h-klhLf z@?wHjpO8IY7PGc_iv6jw5mVYyttgBt{SivlLKc2SME@cS-$MGA=xc#j>_=-pHVoG8 zCp5m0E$c<6nkykTi@>!=W2_5?T(@6I+!W!d3xD!w%CfZOzF`R{5fKe3vJBu8`lO4bovROhZ2K!vy`jkaiQ#@yvGbvW4BvXcc;&%d-|%E*vAf zXS^#0!~M!5b`%epErg&k<4u>-TL`^A4Uk&%~ zEE$_E!HLXOTKpB3G_0Uh<&#cK1t)bS((TBtWLEN0=od<}f5TSh;=fa3R&8|@)q=+T zIgL5~TiFtvc;)IPDYXcKS#B)zr4jd==M=TcCg0bemjiTSp~{#`qa_o;V+2~W4e8sz z$Z{9&VMDEae@vH$G!7M*hh))|+8Y~J5BMq+<048pb}9=zR{#>_L-8nG38=Q|P-cd0 z=>tR?#)-8c(Zk#~%}Emfh)4aHtgy*xv6StbY@7@9FkyJrNL7=Lm!yxx&U-IU&|<2O zOs=^a|JkeJfTu+s=CyR6t`LEVC=f`n@%BT@?R<76Y-rI)2oqQr^xVrv{&IpECVR&& zXu+1IRa4|Eo^rLu3qtQzv z%eHC*0De|Nm2A)towkj$2Z4;DHBuC23&el}p>kAejP>5Na?sl2{zaY3MbIXhdDD)zz z{^L^!fX|J%wHn|~GM1=skG0a2|iY3dD-UGFiUF|MWcPr@agbeMgapz zGTdUgVZNyA?MOw=XpO_5r=G~nI{%EQ3*FtoW_Qp^T5K&nrLZV04a_w;^_9}`11v_W z9*OowR8F&_`z)8N3uNvmO|Wr2^>#X}Ivr;xl&=6hL3$O0lbUt`H;T{iXX4Zzul~>}|A7t5 zL%u@Q1UVI7#v?`8aWv2lP0*n>jiiDngwYq1#OyI{6}yxCefg4AuYyJYkEeHFue0mA zhIee+w(VrcW@B58ZQHhO+qN4wc4M?bgTDK^pYQm7!ilx!oMR4Tg#Yqngy(U2lhxvY zW&bw?B#!0{taw2H3=M@uJ!t?G*G@`GGRTjc zDo^})1qROh!ONjkOy{()3>kAG|8?#66&-|@F7RYj$bpr{IISCHZV42T+gJ-;Pi4_- z%C3{{sHm%cJMAY=3yE+q;y{ioOYXaaqWsr`;8S7##^>g1$8Iu^+&q=3?V_ta>k>;l zDLzHW7j!*ru>OVatHVsiOkuU=JhR9JeY)cI)MCiFu)we}Z{yh@WNUQD$72mDiU&|A zTA%eI^|~-Zr&3jjsO(Qod(Q7=aF7$?a6v65Z_=hF=AeDoM~opQ&#lDK+a~}(f#p6+ zlU{zfdlh7{4u8c8!(Xh7mGrt+sJhdHRNhGl^VB8|GTAowlFKX3JG*0WXTLYj$*POq zydmXE$?D+Oxe|h4p&OttfVc=C8vplO5)G}qFNpLzt_x$b|5LHo{1B09%V>e;R_t~x zCAT*`%N66^3wzRLP!U=Y2Uyxnl>KJJ$$ynFH)5H%wGCNLC?sAGJJ(q%vV|%OQifzF zdM<`IiwF)hip%1Jf6D+3CAA51O+`CNso{mtQ>|W7E>mdlje?42vDoY&7n)8kb{Eg! zm_ys-I9uXtg|zmkmwTED3t-NfAc^H17I#z-Ae=pkW%NSUqdT8})4iV#{Rv&9D~3igB&r%8)^x}VMVDh;60-+8Foo#X z9%uh{I1XHY0P6UP9t~o;=@uJZ9RV%{{>b93_+#-+l+Ykal%&e7JY6t^N@A<+WUjAg z9)#`yq8fMdl`?s23r_hLcacJ{!m#Jp{oru_`D9*`bJF*G&6G*_5?GGHIqm-h<eMF;*lAkKU6YzwztNM9F1Idx-$-j8~UAO#q^j znp+!ulT*fL7LWXt@nLO+)4q4S*zesYQ(cdIQ#BST+K*td ze?Owa{+ST97O)g=5{p|(qCCp;GcnQXwN0Xc!D=*CfrBO6`^N~|ML5pB^V>Gil-aN= z5B<+J#0!Qw*DIaBMzz`iFHsBt8}Nkh&RZ##L)p+VVw57GBb*kJU=<9inSp}1Zx;PB z!rchbgGgj~Oe5B@A-44b+ECB3}gYb)M-50vjMYKBvAQ8v1%O&lEM0( znt|SDz!Y>W;{#h%5F;W8rfV?I@`%=p5Vsk0c9LhPSawh6{yzJXf0)YN*X0k^#dr-o ztYI3QiXn%^>y0o8bQp(h81C3MHA=ivC&HpoobIc@hjGp>vZYIZBrcM_T_}aoz=J9! zZKQjpXif8+6elt+X0bjRs9jzy_LpI~f=)pr)oQslH4y_v#t?uf@%BJsy(js5I%UP) zg;CtsXRTBll^3}D89NOOhGxH-@^#7%ab1&Ln==sn;Q~$jqLki?D#i8{MPDZcoPoa3 zhUP>Q{mT_e?kPi}rhF~-G5#6UFe)Qu+n{9t;xSpnx)mW5M+^RDAeQ(AY9;yq@#4}n z1{qci$xPT&VDZWrkXb`8;=0pxwYET^D*v=F@kWAH<3Q(O8c81oBc(xOQ~cuCuT;V# zd^X6oxgR2x$rEPt25lp0AaXGl>H+EWqsFs$KxyGJ--2|34jU`*BI=UFJF!Pl!MM!} zN{%Vn$!*JY@RfF@(CwqID_{s#Bkcvz&#?MgeNuqUb2sFkkr*t--hWleP*r~AvUYTN zRFBc;ID6FAk=M(3a{q^8HA3v(G-iXK615f4IIU?Q~%*_kUweMZ;Zga%tI+8$b*e!9LCQhxI>3p)K%%oxveQ@fj1l z03q1yD7KCvn1p972MZitzl2Dn(YYn3Q`pe)2(?{W@P{%b)vO?Ysb5k+J0R9b{4#7O z%wVYd9lt?Rg}G466@{fzU_jNO6wc~b4T}pvlM6P7>&H<^asjFcP|PB zl&v7zx&^2Le5QjmIaMxXN&8D+#-VQ3VHOt20Bom!v2H!PM4;xwaG0ww6aVmRw9n7v z5>6{`gjO1vXq(?}&H)Gcr<+wZ*?+EBTwh6z+sa{T~=8IA>BAvx@XG6FVg;QV` zf!y!le779E7$HiT91PZf424x`2L^08P6Mxl&q1m2G%=2X@MnCJ0QsIGBxRjgz%@L= z&{V-&^dcKnaHA`FDTWa(!i!8<$1yMlhKN}GB;Ae}^=Rdo3zOc@4Q%9Y%8l4-%#l&? zpG8;0R*X|O8!9ToFYNq4nw-A8%WpwaZdb3#hn#AjB9X7hp-YbzxcSaN#~n&tcVskh zHEy&SELAy4*6tdd?($urL}wVqx1*039g1oDfuN%ymRvIh+QW%l2vUujpRl7^aLqNR zeXjW+MMGCj4d*5%k;V%fsm3E{ek1$%EANbslj>DOL(7sn!WsO)hzdvXK7(~@Gq`vY zY6&i-w`!VU=`Ud8KiHgYt)^non(=8FBcuOP-m(nQZ=ynlh;; zr})zfZyts+Mq@Cof7qmMh>@I{Dxjb$lg!nt9C zK?qHVxx}@U0GY%>{&f&5Bm9UyGO9DXm>jqHRlALsD=6i6jtXWBUTlX}p_F8}Y{oQe zAFDg-!U5Xm-_p~`(;Le_5J@fmJI#^VF_$$6j*lmj@xP^DYzz6=7Kcs)%}!M6cg%~H z0tkZNm-bjXwZso6m6dHe-rFycDI+6I4pK00ExmxLx+Cc6r7B~w|*`h|DPlimLGkz^woHy*1Slb7Q~YU)mk zuE9E7HZezi!v>^*b=(SF9sP;s>x^hAc+EKbN8oo8`Wn68#T&Z{cd}lRn2!a^jK4i_ z86b;ekBX|7Z4`U629S)yfMl2nj{M2%K;rzl!2PgZ6tucV9U$E`d-p#kmd5>kqRvBY zQbcKlOA2(jZxQ+At4_gM!CT9;8u}^t)YTrClGrRJ*nAI?vz;@jeMThfw!tBPZ)H_W z#@>yfZBL$Go^PNuR+Avv4_`{{RrT2|rXBplYb-hFPhdK%n=pOUG~>D*{w>h(I4OGo z-aZ;v*?|Rx_Q4{EAmV=Qsm=9Ihtqqi2yz%#@|FL=V0RHk#V;7bbsq9?53q52T>&CF zQ4sKj6*1sSIQ`$D|80mWr*dn;0}%tR%@DQ8fZCPs!<^ZL?W5NVKjS12N;{dmIVhsmp%{SQLxbOfH1zPcidn{?F_Qg`#0e^vgigTQb^ZzE{W( z?ixer4cr;eCxKTrZ9g6VFrRe{iKcSgN|FJgPmLO z6V;yC4!JG#L_TV_8}D@R8u-vxYSOnifaDyd_gp(u$Yw99tEIkL%?hbFek^}j`c~Xd zD8(2vTXX`rcjI{3TZ60moj{WzO$9dE__}AsgAKtL=Dw7G%UU4*m{2eCWr6d%nmlfS z7xAa`dQ59=-8JR644Zv;Tm&+I2@!S}Pl3tAp|XV*9r{0ojA3vU@(oyiP;A}}4+mrY zPkuT!y zRdNFhMgc9T;A*s?XS28VQFs;oH%PP7~MNOd8+SJLt9P+4kz1-H-wIp7Aq9NyD9~e((>xf_VbyQjXBK| zHtG?CvVI;H-z+wszDcK3%%y&jnCG_aT@`gaU* z8g?6m#gFYpQ9udXO_UP@uED(C9;J2qe1K^6H)$}yEAr`3W-v4XM@SM>x1!$S+}pUo zUMkz!B0M9AZ~Fe*NDmD~OC2uujSLdV zk5U6_a`A^QQkchhTFq41S=HFC+SW8tY<;P7{ppfgqBkROOaz-T#y3c!K@BcYZ^fQy zC5u7l3nTzcbY+J^qY5m3M8`-T?je3?Ns*nr>6JTW#$-nV&2x+hnLm2YLeU**@yM&SG#W>Id^4zbnID7xY1JL}O3Ww90rDUKPWm zX|Uw(cxuRfY`^nl@Xzj+bzs-yv}EN-YHp~P4167=+dMxL&o|(Q@^gKVnKuZ>Py2Z- ziIL*nxlG{)Ne*bvJjFM;)g0=;m1%&~rS1K-1vtpqvqyqahZG(DS-Fsv6vjl>@QK2* z0rw{)P((Qt-86G?zmwl+PWuTQXzu1o?HnJqF9Rc>%eylT>`p|KVdOx<8hk3D7Gb-7 z2`Q2o28;HhPAUC*vH&0QwV=(!CcD;7W3;A^soo$yBaB7=$!$t>RS*}YuLuP{5MP2U zz4?`_4a>P4e{YRkT(}3qd{~Oyh97AAO`*h~AaLhp;(ppw915kEx#J<4J0(*pcYltL z$eDC!`n~tesnoURQbM56k6ER3UQW2N3ByPzeMU2YVqL(%CAg8u|J-{>7~w}|$7%EY zmK{<>SsU5>o#)PA>|i2Lq4|60LQ&^sLIE3qRKSh-Hy$S@suO~c1eK?nuu?!GfCUiE z0lNc0Kk0GS)+>4NsF8~M_xe!$RuT_#F?i6sQ6Uq%QCMby8#+{a{OfA9gq{q>ik=rd zCNP!%`-W2+@OEM2{kI!%(v#XxL$hVlLbaq1cPeRsYqS}B(JC%uk1t_v4KKwGj*rw? zmM>_o2BORdO`vWGhAr)X1&!F$8u$ItK3IZUl5z!7JA$!fwpY@wAb3mjr|Ra%h<{AT zaDV4r3=5?CUGt_m}MP2p!w1EwTkvZ#*> z-(0U#z$jaMo=2hvUQgYdG`A?N0aXYCvT2bphkhO_vz1Q2`u!d3n_E`0XFT5lmP`F0 zeewp<9Xq@XmMcWJtzf!{cbS_oQfB713)4GyHjEfP{J$pH@KE0*FI&{=${UNpYFgAB z=6|rpzdJ=4@S;HCn3=?zCXj#x|D=f7`n{q~{0}TzcAVna*}am0uS!boz)`MpvfvqO zbGkS6_@HaBD7S&EJariEbvEoF*fMCJg-Xu9ga+|kncQ>dP5H$RE2I^%j2Bvr=Gc9u ze{)PwFw~F5iZ-!I_Bq9T18qu1I!h!n63WaoN9WGv6dd@75lV-WC!`9%&mercHb7dK zXAU1SK2A5MrbvjcKYOl9_9|YdZ=CW4H7yxQv-+4sCHLRk_{|DvG*-z;r_z)F<%OZS z`XBKqkC2#Z$M7T6Srm)>HqF5xmZLFIEPDo2iHW(gVf4sRdZbii*of zfEBcfL2@g?@ac&fYb24h8Rec8dE6c?`UN+;?BFs*7aZ&tk+p*z2ZwfxSLY82Ji}F1LB2kX!2rTwdVZpOX zs~%(G<6Y8~v>m2bES0YAdn>IQe&oR<$yL<)^i~hdI<4|eU2=Bqr+YPh?B!dhz{R|l z&4)(jQ6D~@O>mJ!pqhdvbK21hB~uX0L--_e5~ zPES~vfRUrN)Pak-jvC-VqK4uiejSdsQxIZf z7owoEF^#Uc0w1**z%E`{M9h@D`2f86E08JKJUjmi?L7Jjp${N{Mt}4=pFQ%kYK_&r z?(^ZnMc4;eP4<3E_wK;|{{N{PbH3>uW`jgDiGp!PR0ecMujw;rEvM0A{HrH0bxd-KYj6Ct$J z!EArES#U4wBa>MpYN+JEAblM%oIV=Re;lHp-vR3Uc*#kOeknx0P#USw@4>&`dr%ha zK$wp7MCKKdp~BdLA%m;Yi!WxXUPqC&=Iz2;v&?dpKa2&lTbQXVd2~BZmj;8v=5pY! z5C`f(tH_ts1D>$gq0n%UENsD^TUlDeA=UPLT*D26z3JeCw7$>Ql>5KttpLn>G2e!{ zf94R7i8M5Nx(%UWMiMym{oK$nRy`pD}fAqHAOTC z`DP&`Bg_{ymeCJu5t|VxVb!odG3_c5CsaKj>|x!FZu;+q^0#znsox$OZU2{yb*w-! ziefN+#BtFH!$pgCr>^>1mY*Of(hlR`XCh1GrY#n0ECW7?w0XGZpz7@YDjo#&lg!Q^ z#+1OV=p_j-DJw+FseY^`bS}sXNK)u<%YArWZ)+0v*! zP_B5UFMDm~3nb@~F9xuv)6H&8J+K^(MA@R!bwiVQc}$>4gYL%M@QPnPm;=hQh9F^g zECwG~R~ik&cV-OBxNkxHxn(Zg>MS*Khrd(MsUvX_Ko&XVD9k{-~9=$r8UA zxeE(;_LK*8HNgsTYX=rt#H9PV@lNB8b>NQeH@b|S^@9LVZ?&_=m+uS;BKp_!qX)}r zgHqvL6PVszQ}7A3_IIQk>%PdtT=VzHg%Us#BC7>?_&4uh_a#4YxB@Ua7S1M1)|Q=1 zjWyuQD97&b%{RftZ2e8*jTIesm?^b$Ust+4Z%E+(kWBR*WQD!~h_~|> z(C#DCouK4MJ596d0uprL$AR0cN)!@EUF3R}cwNe+Es7xXx}dd16S5|EB1flD_)3^Y z-OR#`rri-!HT5!GY|pQ~1l)(;2e^txsM+p*5}}Ci_mEUac9IQP;KE*MWS(;SU-OeK z!CP35vp)*Snj8jfUnf*hIeMl8pcCe#;lR!P$yi3ayj7%PK@+6 z$vgnOy+p>xYZc*Bro0m7osgg=I0=~%ficLU-1k)sGsA=8;kQFs!FK$THnx-=CTCe_ zj^*f0EwbGw-Ag%e2IRRuaV((fH=0aa=*l^j0;+y1z+%W6v|#7g+Xk(96J!Z0FdV~g zL}m@9cQG&wHM)fBSy2%|&$v@dlqsG<--$%jSdHDN7)ci0*zmxU*ux7Lv^&9xdr-T} z^MRC*CvxjTEHT4J%fEF{e?H9Th7z(`+AD*3R|_=4O@+=+XGGoQSq#9}i_7H3Y%*A1 zB^@E)`Aky%%Qe!`crqpE1q4j?EV_gIHo)(Rn2ZJ5N(ua^ZzqGHL(QiDM@d8{LH$bW~W9|G3LZzQy2skwq-)wrR`j ztzxU(JN+~#*gLlbXaV~1cXH<^s?O9B( z6W~87_tv)vD?ed`B{-KL3{0>DgEiY4UE1PkT!Y1r%;jFZ@Gf$xnSkWeHj547x0$x& zSX?>@@bYspq=C64D`(~TKlu8HZ$biW zWx^Qh^pOBv3Fb=N+y!#oUYR7BRS2OMIX5wZ_sgz7P;Ika2Nn5&!b*nfl-e;(iDh=e50PdWV2ygAm zITBOS*}2NSN^fI2C3NAa|r@y>qQmqzQJBen=OxGy^z zTcXr`G>C~7nY}OYltd)4MNAX7F;VenP^9@Insm7u2&GgBbEQf%BU2z+PP}e$xY~Tt zhhw!1j!e8AjUp;KXhY%l$nLm{(~||btf*jp0|(bZZK3Z7ma8LY38RN!r^8{obmXFNNt$J zY^t@6i~Q{93e;TE=*2mYb|Pd-P0S4~b|bR^*C_IoxT}`Otk_~SLybg0S z|2t@D^Io<6*Y;m9sq?n(Q~{r$*&jjI>d@I>t@7~4;Wb!D`S{NR1$dL8_wy?{cASLF zrt!CHVQ*kk)rhz?e!$ zG(O*VsD=%?^2DInN&c#z1e;_I=1zy9cER3s29n9oBuGs;t2oD}YZIGhVpP*wt4m*W zo3shF5iOs;gi6ux!(Y^g1seD#E|3Npg4jGWQ!nL7hFhU(fw}F{bOugsumN$+x@=B> zu4X!S&c&%MV)8`j<2F2+Fcm;p53*eeuE=#~YG!ZbtVP%TZU7TN2X66V` z3&Rm#Gi%6Q@ic4NHycc|yK;Pk)tJ5bQLOP}B7d8?$?_b5==N_Xq$6fJvm)s0HSB9W zitrwy){gLFtZ4q`1S15V#ZK#Jw1u9GQz;JC@0B1&GSBu5a=vEaO9DY$r==?YkEuO4 zN}j&3SB&0bJnFcHF5hCU)UrArFqth0S}n0^p@?aUzsY(lHaE75>0K07yucFyHE`qt zJYPsyCwsA-TJYEVbt@&W9cZ|yxTVT!b&F#vS5eb=HQmvL(ns1MZVRgtJx?UX+BfYpMrPu|I_t&V`-FslB63~G%Ni< z)1!)pNn_K1>P^QLP8UZ#EzJ`C*E=zNRNKu_t(Z&_TeezLv@~(R&L9S8GE+rYEmIai zd`tJ2vEK>b>`)~w8B>bCI0n#?6L^ySxtEW+C5+5=a)hdrys}Qq4tumvkxMq%1hG|!afM`GUeN*s zok@>YWmOqPUtfOclO?ELWy2%xyYe$vDt6&>AL1vEpTkR*xoo0&TMZan9>Y(3#|zn- zpZ+N=V@viRIOQAX>-zq~lHfmyr39+UD!fK>N!t)K7o}`;RBAGca`cgmu#G7{TC^8d zLk%YVkSg1tt~O>e@kxt-0?<+d{71P9CRG)g7UXp1?oZUhpOLE*22qHL!wOO+QsP|S z)49+lonL>V{$cVg`kj-`y5}P}H;Mx!nFagi4I%+*vCO12Q=R-DKZii{au~$V!2@^O z)y+UyZNnHOBZt&&My$6kTEdd{u|SDI5U6w9Y0=j?KEPwhOp8S0xEZT%;k*xHBe#KP zG?Kd2KVZ=?<%kG(Mwme0U+6ju$1?nW1O)PJMB#2!M+owjJ+{Ss5I*!p@cf^dJbitr z)BZ`*pNbplRpMm3k}6zg1_YKZ{@RLbr;#u$dY}+`GYRSa0Y#+AzB-2DM}@X4OPVy( zJlr8=#Aqe8Tu{fSA3aRX6)j;mYIrC}C7lBDQm}Z}#*~g}Y_n^}r(3Vcfv^YRQl>A$ zk&i~6Tb*QI5K}A67Zi9P(2O*Q7^&1er>Mf_=G;0KWY@CyE{L9Z6H>sTavP^-<*bO| zS_I%s6{b$CH zq)`n)`B}6-eW}<7f%0-KpFf%f-h-o*3vQzuYWmXn_)Si>qwf4%URDz|hL{8zZSF~{ z6Bf%s{@OMn2|q!a)Hd)ptbQ4xW`u|H=U|mvZi%SRADF2XO>?>*_ECdx9CC?v;=guE zRfV1LKqM$wvZY>hQnp?G9t-lw*U(TI!5)a@;x>N>aoJq9Hhfyo?tAn${U5_qD zbUHu|(BgN=WaWp*t)j^wy?IzkrJUaizrRGRk)6nte^5%0EALXMaea&Vcc7(cIJ^Tq z!EbtjY%>O-9s(Fyf=^EG+++DsH~5iwaKj2=e80M;=e7O(Qnx2d+{grZqn8rz#BJ8F zvm%j(aIHf#V#u=Tg8F#l?h)S6@bVx{4{JKX*IjHG4!he;$1dO4t+#*yMT%WmsK3B7 zVRtF!a7(MgXd^cZC-)RW7FOmS{JSXmkL zI{3NQOFonQpQyed?gPey)iZgsO{V*SF+Dtf^9RLzPPE`dwL2p`E$S9XS|Wn@<9Q5y z6NZ7BeBA&~iKe+~evgHsM3^pn>4^$c;CQO;LMp(y5`<@W&~lf+2V$;(S%@KoPsQm3 z=)0Rw+~E;0)*VYcWCTCLiSBGlcQ=nB;Hgm_+JfN>B^4Z@aevhb@p0CO z=hBn1YcwgrI9+b`47BDT`;Qp^F}y1yXt5u`TOi&oWXq;b(rU3gxzfbz;bQ5F30$?%hGb2H>bTOP z8qD!v#|Xj&HFBUD=H&$faD0NiHu;%4^*!d*1Y6H%$aBlQexwY!mEV7Og?!Gv!1>Yy zA;Az|rfd3r?yz0zgbklh|1~P0T=5F!TzEYYyoVcGBoMx7O4wXVTf5z%ACej#ZMB;I zWM$z>0kId;epuD!ckiz##fByM*rL9r_ZL;;%J4T5y3q%#7QkMsN($muuXuc+I|}=e z3-Z3c8F)pUSa6pNgAR}|R8pqLBcdp6C}}ZzksZKHXGt3}TdT1p<5Rd9;{it+5U)L1 zIICfAeDpq1osuR!V@K)e`!BYjJ?}Z2iU{;wgO}4GzXE;lh%Ka@_hP>WZujnl?(l3V z;~5#j&X~X=Afw2*H(P=?n^-3_5mO@ac2aw9yU%yh)Ab82j%gnFg_Rr@__`Swc$zs= zEJB8He+C}_33E|Xg5pVn9w16-ax%|^TK9cDH$F>AdTV-o77Oa}Y@{0Ybyt4hHvGL@ z-ra8;Xsj8e-`HuK5-osJZ_EUqfr$fERvznzP4mha;)OOUx7?6U;lChm75iHle14+>Cb8gOTBQ>J76147ZIP6 zdIN6Fx+|9N(+!UNb!Xz+zp;&3%3BBCA`MYCxs`mav0S2bnUa+l@CmO1&1=!y8ZY(mZi3xk zTh?=P36_=_>4+;o4u~xNtSn`n)!=3OmR$Sb?>}Xiln8$M5V-? z!Od?RSG-;zaW;jyJ@|>QQXA}UHH1iEt~2#zp=0t0A#5o6)DUAFRK2p$CrE7wk12ki zE5Ub=CNctFAd+$VXu(z-#!5EDUR@vv3jL9!O2>lLrv-b1r+2)X{QcfIw1f2XU<^^4 z11jkz%AqyAO;{NRGU=+d!m?pEWG2F+NF72><0X`@F*W>M^3Oo6a@Yn1 zIbg+X5shD&UUZK3m!Pco$#7WHQOw#C+-cB|NX5~UiioM`<^6$_SAyRW`b_m8A=tmE zMdsRn2mu6;<`_jTSVSUT7}e2&*HmK`sbsZ8-dr@t3;EyIVVsb=ng9FpP= z!vuzF+o@B1Y;fOuf_Bz&RlA*p0N^fECIcb+Y0_SzlFqlyfy_1VAF*S8ZvhaOf$AHf zQRQQSqWV0U=CkB2Z~8h%#Xbo8MSg?%l;$`mkbj`Zx-lHrFf9>o9ilc0B3IUl%>#~Z zBXAjbtLQw$^|?xgz^B0G#GpDXj7{`92?ENP;4u5FyOC<>8Ozh5;YaS0)G$(@WM4(2 z@2_PcF;TNvK^BT%?~4}q%r%#z*_Z()ViuR|Vozjy&Id}Tu#BYm3HP{0o~TLDU>%_+ z%d+Mu%48XhCDhU)yozBv7d5WusL6HS;K_~=UW^srsm@e5Y;1|>#?Iw0e9mxaNeUz! z-T}6`y*uUA<2C2ASVov%<-bXur4rSf^hg^KyE6INSwu_`>4)k^j#jEJi|H=@DKowzO4TQVInW7?CyNauDWp}m_iy+` zCcxTr0?7+AY+MB8;{)GuIw< zm2ttnCayE6BA^}1G1BNhSHJNT~KTq^9CE%pf5&UW< zo z^7c}xB#3BAT-=bN_BabHM#O|$o8Qga-HcvgnGD%Q%~t^T2y-OR&aqgr#e{$!s+;Kr z_vo>C#2RvSg_J5%$ol{bCxIYS#Pm8{C{Le`?!*-vyWM5LPHG7>R6py}9|li?7A6}> zBbEzPp%PgY{pVy(F`50O^~m-EGKCHINzyz)f$Z~)aVq$|;V)KlZ%wcv>EI9*qSU9~ zY_YE<#kycHAZSpcLAZIHx2hz!`~fMhXFB=3k4(9p0Pa9vTCWAI&PaL~LeJqnnf&8%>DEjo+4}rDy;EuwZNHL|NgGt>6 zw7HL}a_#RojCdnA&ZafEy^G+DoBLiGHIJn_+vA(ud3o*t2bnZ)j8)t84f~AQFmlA( z0LYFVMuH}Fo#KM1V@ym@TL5Dy`}7j5OzT#=0ZPii*pZ%?Mz+9&VY z?}^W&Lf94O;1bAjVsiYbmt?Iu)OQ8Vm0}M__U<UHoRFwx&ehlez@rmJcIk?wEao9u?JA4o%Voq2ufSZ1dj)X0mL=>d`d~qu1(7~^ zvS3Z(5~(j0Qzy?o`H3W4J>U^ZK*Goy#*|Svo=0G>06f#$&W+?}53qRuHB}64PZtMz zn5&FDtSVCtPN|mDtQ?j?VZ5F8l`0#ggq`L9FWbdhA@H zGC7~%`Ar0_cp6tpU#2`MN~v9F4R?$`-bv?kQP03G5htU1NI>{~T!_HIbGKEW_BdCA zh?pE_iNgrTaA&qaQa$p-Ckbkj)_^Yx>=&gJYvahS`WK!mlHKcLlyk8HIkYIdH{{?k zHY$&a;wk8`N3ULh8{<}4Vl-6!Xy(rV8+ea3v4Fj@GnvPLMPchm%6Th&VwCQ--L#hl zRh*~UZ!!aXu{-6TwE6>Z7jj_T?Ar6t#RCmO)=<%t!aF$X`ZtsqaCgK>yJE@f2oG|F z;VVx3LFW|*+osrwbwlQlsMHbV*8#uH20RADQm=55w#A@W;nMB>tL$#YF56Yj4e>(&Q!M$1qb*hA#ZQ-kGqu#pC@QRW*KZL`E+28|bz)u;b z280tzJguoHV`62%u>U#kY*Xn1%LcGp08kno+M6G*; z=qWz`Kp=Q^>9;APX1Ma$zrk*Vj9SoqCM2FJA`;rP1K_9VurV6^D62-M-djy9tc06H zU}$hNVkzZ$p2??-QkE+hJh&D<_^PCe%=J4gh)!5hqe0!|+H>$8;&TJ+ajT0H##r=D z+bIsH{X-%3BJzqt7zqRcW6`E@-+zgZ4#Ks zvhpk?8GRd8JG6X+di!!_hsF(i-R$dS^khe&u`J1n@BMU!c7HMzAzXQVEi2oq}<`7E>GtPKSI#Zfo0d3hGbEXrhsOS-GKP>7I%PW zl80E`Agbm3hkBsF7&r%xPCd6p&K_BrL|gy?c=1KH&F9T{~5=N>NA-wxKL2{WEdJf*y8I4z}fPX^bQFw!`mc;4bm{1>Lm3$!g?6 zV~m7uNS}>Ki%Lrm)r_V;+#+_EB2DM>wtKR%TZ~}Te>p^*yHk8#!nTOGdy2QU!jZLkCN-W#=rmd!O&KiR-NNH`>U*XiqZsa> zYqKtsCUf$%JWJ0a>c5}9Pgy-pYm3g%Lx#-^lB+I4bqOEWC93Fvk^Lp$?amRXasZ%0{vx^i;oV_B>rSvjpde6FK|MGtvgnHQU zYzkAGQ%O$*1^I@-#Z5$))2!qaNv_1l1!kQZQpKpT9<*&XFMU3p=Z|W9h|}3%bWECI zZ~3wYTqsYp17;n`e0`xmaNr0GZUgmbaaA#Rr~9ov8Y;@te*Jtau#6ye0%Jxd$qsom z<`}oI-?C-bJvcb1 z$(*Ty9cdSzr@aoJM+F)b$Vx^`1yCnUn^$|>uV%iwPYuDE(+*pw|HT$yUGu9L_qZU;xOd8xz5IOMm^cvD+Wm?YSt4ooQ`tEw)lU{j$9T z`|ga1(XPwbW*Q3SF(*+k0Ks7-I@#)2bTzGoCcq8XMis2Eqk-Kw0-Mm4Ow5wn7`cgg zn3KoM`FIWq8KZ(9{|*x(rZJ^OCuyW3m5kFUWFRT)ju$iBuYw%@KF$&j@D$6N+O=81 zku%K=Devy%I?{@Nlj~{#9x_-oen|aseUB5f5o0LsLr(RM=xS5A)HgE0K=ordOvMUB z8PEU2n{pt-Awl0KT8v-B%1p2y2vYL4p^{{azr;>1zis2j<%HUD6Dy=NT6#4+Y`bq5 zoM%02(=zvMRFBc*Kl6qGpm)*l0M3yXsDc$6eQ0=r;yEf!Vi1;7Ly1tMKni8 z?F1rw&M(sFP=d3m^@~h>%K>GFhA<9%{`pGh-<}m4kR#htUAY zw(s(Qi^on~y<=Omc&}{_yNUoa#{jNLomHA$ct7y280N7HoGQ&q^=nnW4{!-weCN(T zM{nHq-1qk|GAg_pFb&vY|3e5H6q%`gqw(KMASMRGM8P?anK^a2xV=^SH%#&&3I%M} zW@L^fal;b<+Om@Y9Jg2qBc20AV*a}m#ulZ5%;$D@kq^QA?r&3n=VHwMOTrR<81)JN z01h|ZbKUDuVUxe9tMkDAspuh2n@$+HQA5*mDv))r@R=85C{nrO@lGI58chbtNZE(0 zwx>npK4v&lW{yrDLp1Wpu>qpl?{B!CA(@95sLBqah4L6qBXWEVf`bjWCxYE3hKyp5 z7nDARya~@n-4xHd+{0MdYF+w+jEx2@o4y+tJ)lotP%shCvzIma`TR4Lf`Wo_RaudE zkhG+*;EzV(Y#8XN_rhMx0NU2fr2#|{CI=_eslNwa`dNCd77Io`J_K#sbMAo!>ladN zXoHxHZ^5RBj1I-?`BHWrQ4M!}2@8&c(BI9W>nKhme3R0Z#*Bh~KowXbZxq0lI_!b0 z<>5>XE%@@z;4zsRqp<$`F(7%wf_@XsBoDccnmtY&fbxu|(N2J#s6;@6@f6~v!I^Q7 zU=^KDTo9)m4*5c4ME)vN?=a#SH24rYG82D*#ACdY%&+otIJg5-&SBrGp2~3kr9A?^ z!ZxPFRCEPHvjl=|>(sE?x$jC9m4T}fPLJ*7f0G^Lx9|5L6={SQRA#Sqjtq6Weu>Qd3i#MLtGF6#DM`?{W(Y3M|)b zxty%>*Q2?8#zDqnZj5Za7TAxpbLwr!x)sOilvx|c}VZ60mTXsN1e*R zt3a}xMCZcoptsg*9ir8h|#g2R7L8i zvQo+UyCXT9PEdaIXtZ9jlKt;J#?$;5c(N8kRz(amGqWkn*0;ge*ug5hy*@tQ%T+qu z2r_K~u;AEO7i1iwDigYDv@m2tYfO^!>ovmjEtm(i!>tt-WDhC`kofLv$OGh zEiIudemVH}?4;Vwm+06qwhgr2YF4?I1!aYI6e5#-o@vAzvGU3|AxB_=P^$Kz2jKY{ogepEH^X8LU_c5!G=IL>W20Ym`e z^)k?iyLw$5F;ogJ*{aX6xoY#zSw z6;v*hJ&Av-7~=~+6sc(Vkb1-bshk}#@u5sIh~i^~CerXmz{Qr1+QEzV0L|I_4@2~Y zSa|p!g^q%ya*$)RW(*o|n?#PaKl)ijbo9^0_1-kS>!VoT!Aeh$gd?Wq5sezxkxTG) z#pcGGV>$MX1-_lGR(FAI>^m3LERj(2T3z3rm#e~$JAn^7O=}-8L{|Jxl}|Y0WYie* zGCq}Tj4U?TFQ%0|M1J@!LLhz`T|>u-mLgvVfp^t-pd)mebzmYuvzu$04ER?+>vDVX z&q7t~T$5a~t-6}a1>aFvAVv6@o?>Vk8-gjb-Cya4VYoR8k)^f3!uPu}SpH-OZ1N_h z*ZIb;6UxshqOK}MwDIEDLuCqgEMK`BX`D#u|B6|EJ;2v#jq&w5kK(6l*oP%Q8FF-v z?#47*3*1_rLOFGub6SEZlSk7ah9tc2s?4O5Sp&bcwoN-YC6|YfZ@=8B?vQnE0KUmo zdHcr^{XtcbM_qjo$uQg$Sr{mnIXQB*x|Rlw4n}jWo{s+zsIMgJ^ec-71_lr&LibML z&;li)fqgk%m#wQm6161gbx#pb;vTQ!PDqpU}j(@@6|dHAs4O<(9@Sj{97qo*{RssGGA>CO{!mtnR-=#G4; zrXOj3ccy-Q{aw8(Pwj#E0=Ad0nH@D06VGJ$0;`iAmpSirm>8k@CjwHrP54qy8&b*p zZyDonW?aO)yEP0kEC;vpcM;9vJ4s?&eyQv1m8dotAjd}syI5Jqs?hnH6I+kH8e1f) z5!b0}I}By6?)o?dkJ%$xs@c7?M7glIh|%itkM-X|{fK@?fWL>A*Bo=o2)FVJs0$v# z?;M_f&ZH5q3E!1(cIRRSLL_L25NzK5gH2Vw2t|YeXVY{>fH~tQc248OE_7jQT_2Ap zCnuE{Kfe;l2;B_H=aTDNTOZNofOZcq4|I;bU5Gl!`G%BXxC$PRg@%irWTQg3{`Mb?kZM&zy=3G^*t?{ zVguDxKq6`gzew?(P*n}HA{*||FC2{@n)i5hx+R=F_sR!4TUr#Qf^S2N;L@xV7=I3L zxUKMuS4&Lr2n(Y@V2h3&KWaP=jaxP%*?5apvLeSOCfGV?-*~e}pkgwAtc_X^@aL2y z7-S8Klx!2Ye}T75stMv>q3*uE+Mh#@HA!Q6c{!rb zT$y0V#cbY+z?8U5vM_8anRBapDS9uN>Z^Hc7h>swF&r+gyjo66>QSxeaIzu0dI)}W z@83RwvVi#4$s;hjCa`(gMC^k^w)FJ`zj zcCH%fpmZ7%p~GKpW%fwZ=JMpzQaIxE!1_wr*-_2YzmZqk?lRxrpl~s>T20X&IoWy6 z$i!r}*l>T**df*k9)4##!%>A8J#?n@O);oB)L6KKQn2=o;WoU^j*{US&I+v{R1C!E zT2ef*3DQ<=ew2+u^=)@b6!4t8dwXSmkGHE_*jQMT68F;*g^*s&Q~L70DI4(`dI+*E z#&aRY+@pr`!9&uZ=|$u%Hp#*wO*Ki~SGPK3socWUbSU_7g=I5w&t)jTkG<@X^Mox6 zvL<4%oJa6(1$(FoI$$FvjX;J^8A#V$Kpo{Wh@ zme!V*hz<4_1Xl`*AIl{?@3HA_v^AU4CAHzmaZw?N3>!Hqjwj}yVfXj<+?e@SXVa=F zVPRpTv&Oz06mbJFRaKmY{B@bSvCT=c-lUKo4^z%BYWAvmPS=ctoQsfx4ImuG5=@D+ z7V2;*<|=80mZ3rujAdwoix@)O>MQcS8QADFLxz<7zYLl1q>^>}%&ODc%lxe}9G+18H9EMvzynYGpnW@S62i9j|N zYIKc`V)CXbt!MilupEGFUTE`nUEJL*QD;q}Tg@8WsjN~xV90Y6U^M|D-ARWCPZ#NJ zQr6LtkXbT`WPzD%1TFIt00w)TTd z;7ga6$ZE}|S-u=P#CI!o6Pb^>nI-2@@u%`TQi@U6e2JfMPZm$DSlLPEyVdk4TqsC! zn`-WaaZf^6bp)M}hR1L(yx(dx<9|d#k03nXB5Lvc%Ame27=rc>zif;kQmtLd5;3_B z5>D&wLYzhq=%1uD1`eUfP$WrLgsejBu;gi}<6AFtb9hMEVZddp>*Z>oL{V zi;%<$N${Bot#R34`h)~~{W)s?D76A)nhf;WW#*WCK7;7Vz270!>aGr@YV z9LTx(r|HVr&9BA9C|OxqNjo`#?KOdq0X`4cJ1-y= zfHDi+;vlNyau=3+r#wUtPl@u|kIbVR`lPQ`&25FnOlSp_-Ku9D#lX*?ldU+;yAv?d zK0I>slzy@Q0&l#ppWhNj$ocpz!iu?)H0VuBm$%9>R1Y8TfPPyK=b`A$s~?2Dq?B^} zOA`}K578$-g6Odw^{RMGpf|gOypH2tHDvEu&ihr$t*~qG?r2?g?r-jXT&@^2 zgBjK0-@kwJ>+5Dmv@!af@OWaKq_;VDua#+RA&LyRk5>VZ9J;)*VLW6Mt$_ZewP*?f zyP!>>P^KKOyt+V}K@qYz8E6 zoN~{w&N7;dqM3leM`Uf&c<8ZG*f__e{^cuZ$*=cdkdtL6X7fM#NX>q*@?&wX!QQ~b z&246M=ahB>)qo0LJ!%eRZ5ryPQTUSl6-Z~vC`5P&86*dCGysV%8FJ&wKSE5nTr|Tx z_M*%Xus7e_+`N{f_W$m)`!lz9Y00o9KObSp@?U-88ZO0^qPU(fz!`NCmr=`m!qiEH~_r64x*{}$=bnvJm>S~a(4zT&DES;YWYAlL=s=k^mU)nqR z>j7pGNXf&6J_c!PDIwt=79Uzh~dI?kuAPhdfzGkGzq#b$hh`tgbnQjl8 zLLy13qyq+mC``)L;D&$QL=6_|?D7>Z$`1~FLoKebO17~~8>IVkO0N#Xz}nuHWT)3; zY9Ck6*L=s>da!4X$QY+MO~I0>lY6euDw1|oCZhu!55l$^+&ukf`B?TK z%uW?f{39o#R{_b&)4iY^55ss{kGe5PkWo;|8&?B-r<^lK=jKQ$2i^(I;<=B%49w)Y zV1b~JOml!|gd_)pXN-$@2;uQ~9>_ZtLlWD-|hICWuW zss8@{!M9P>oA0UmLM0K)nnwa`=bI>qVRg!q2JpJffD=nC6Kl(O-hHC`-KM{}ylGQ5 zgs|69V-UVNo_>kF;08bIO{bqnhh6Y@Tt?#6u|82YnQgdZNx0I=u`e9HA3*yqq6lCx zk=@=UoMN&z)3g&@%dHK|evKVw_EneNJRpEdOib+BsMRCsuz4q2*Tlr+0`Li26RvzW zvC_tBJ%y#b{SPnk{Ihwq*G`89+LmO0BG#eTL?dpPJW4=BA*M!}+6vmIK16omxt8lK?_dA2!e;TQh_t+?_&HSPtZx| z-(|OE4S6=%%9cbUZC2*#A^Eg5%6W;u;Z?iOLGV2GW4Pf^Y0(c(2P9;bv5Ks^~kJ%WfeXjjh>XMS#9qsr_*$ znbm&{ftvZ>a%&1_^Hw5Q!qobjnxDO*a&9H`{d4qA%gc_?A@F#zweXS`biUq7z7-ab}?~qcCep`Z26s+nbPIqQUKCT)-CzucNQ0 zGjCL_YUJmxWNo&sY%fCXQmfLExDY#?d-CRZ5c;BK=>z*9nc3{|TnI_&e--j-4mM>V zSW7o$v;iR)iYmlO95b4S67YL)ctnVKbu@Pl=)bfy_PeFvhos&Nt)qok+eFwkogg-Y z0|wC;I8t9AJ(+3vMRCkWvvyF2jfdo$M{uV3cmxH*&1(l6?B)}xDJd)39`6rTd(CS{ z2M6W3C%QWFC0!MAcm%N5zCj-9CT~m8pac;?$l^a+*TmIQ2J?%Ug&*AE*S!AR+}`5F z4Ma_do+^3U*hClyT*CxL>Y@Qx^t|%-hRJx5v1Tl)_I@8@P#N~9A=V1r;ow(c&wvYqE7+7Q{cu+M?g{#_{#vqXE@!@z{}KuxlEjUdt5Is| z;Xyoa*U)4;TeVST)LMZ>Az&#dD;w?7TroNwoqc+8FKn^z3b7_0DgW;gWk1_cJ)j=k z$!CD`&84odPou$PDqz15V#t}|yI(s{hJsBQ5f>LHh)EI1=)8a^9i(2?#jLHiFcW+i zJ62-%*B#*)HqyuGcHLZHIFn zahLShrkeuOJZU~x&M{8>>Vxzu(>Qde57PQtz8`9Z=L`>BusN_Oh21)ofSxw#m}~e1@=fD6h|=GsCn4V7~lUBu{-xQ{BgAr%9<vxanE58OilVf4{=}?XmC0hPF zDtRjAnC^4GY}qPKtAIyy#Nehe{7s`!L)Xm2O9H4Km(&Yyx`c6zPidDEG@d%0=)kK| z1^<%hqlM3wANi#R%kN%|kxvS$nm7`P3WbqC8}R(I;(N#s3d59uh{$`ws6Lqyy%5|7 z^v<^tHcG!_m1)ML2~fj{0q21aJu`vxi{?qTVT?268gRyq>f`3-?kp-Qx~n+`h^6!_ z4V9uJ(~?jRxw(~=Jc&Hg@sAWByfhon;I$U-^Rhfwod{qK_f2?Bf!LFlG_94E_kTw) zu}ZzC)<3e`eBN#28~T8{cW8t$M6#sYZlO?@j7Yb!d_*rYr_39k{ z2(x)zu6@E}7I8|1FW5;43;vioxiY$TqO)FsIH}wx=-I$40|ScR)h3RQCn+7H&xD+U z#2&6TSq7Z(L6hfJ{zi7{H(#^#xuENAPzr5y4On1-QB1cC9+~B}6fI*Ns)VDL6@jNc zPZ~HFemnHFn=$SiRM?NG5A4J$JJcBFgbrM^5*7|u2_a~%EfJ&ZuM6b1Ax~%+!^Y~U zW{J4`UHTK`E!1%4Y~8O574y9i0yMlYkR>_9#Ko&ddnVim-4j<5Wb zP^3!=u_FXuS#@9>)U8sa53!9Lam1{w7=N#?PkMxzJQRKhknpB4@U}7Rl>RM+q6RDU zYdV%|ZnVAu{Pl?7SEoOWGz2Kb3N(wyOKv4`XGE3&2%Y1vGDktNzoLp$KR!ck^iHJ7 zp#S)_YGsuf0Z}7hlJymH{;EeRV!_7O4~^`Xz@OnVmbGI;cPIbtvUpy&9!7&FKI-G> z==jindr-dQIw7VlCnxs=j5N!CNu5##%-=Of1nZ%7euO-L)6CS-jS1xcf@C)%L+h2e z^o59zkuJ_?S}Kd)H>9RL5=DgwWwB@32TEtw$PV6~1g8Ns1MEn9Nxcohy48qa69Qz3C3XoL$mRmhD zNDQ4`;aV^AEz5V-g%VozDGH$qj^5Okc#l*zGr~IjD-lT)U7tPQkXwPDw`US&61Zcz!Q`h z>2A2aa>7TAJA18!b07lO#n5u}Odg@*%W%uu1VM_4o^gB*NKkx0Pp1LKE+-RdJ}4{p z7eRKvDXrzRs-O4UX6cO9Z{GqUXAX(PFn$q`)#nY14vOSq2~=ccdYV)q&S9=Qs+~r9 z^(J6L+aUU@r{!P-W3hnCrtLr7NV|u&9@5|E=d@WWDebq*hsmJwMyDA2u-KA@0mQ~O zlZ%&J#iyxKLIlApdEaBmoV$=E8*s}=$hEK*+fSm9yNrwEUzIAchKFdT$>L%%bjwr` zVH(NWLF&o5RQTZf{Fl0n>{3}+Ik8|=dz~+`3)Q@bv->jnx&eO&;$h`FQ$85nK|fLF{n@Q%+UBK#(1I+jJViu zBP8!uADLX~A1=x)TMw`fJ-OY87T=~bK0y|#T(zry!FF{q06M)-wuS%!ovYoG#~w~$ zH*fe3${netR{G&YlF3B}`)f;mbvp$e-ICnHV9uul4!uJZXjgMVh+8C9A>s$Ta&mol zA|LIon<4YIwXjbK-j>*^G(1KjpKI27QySO>qqieWvTcQoaPjOG`)6hdAzxM>A1+A_ zJ01fJU51{|zbRJHJ3T$k^~U}xESNvr7>7TJ05OhBXPQK;s{@(7j!A$DIqQn4JkRO% zqca(_?4C#yil&8y#sr>j4J}EVTu0s?_24i?^_er<-MK`oko35)<(kerR$)Sz4d=q| zF5u?wpGoGzv+77^=%O9a$nfV?okm7^nk8J)nla!V_kM87!yQ6%H$A9ZYC>{l4c}j9 zDd;DL|4S)G+uD}|A@xF;#!ycO?us(Vz+115pKhdj1m14()mt4BpO)5giMw?i z3;-HURVD7-$TjA!rqwBxVKGj&-x*R;WDsZUbennKzjGAq9T9}LAG&dfxP!JbKE^ zw2&S>Kou=5JAK-+N4M=Gq0)Ba>_JSH4Gfe3Qdk!Tg=724Fx$K?yS1CAXLTA)OajdZ z^{QZWE6v+F2i-3iv#rBkxeTms&;%KOGA>80qty_Ilaa0~QjKtqq#ql%66(35#1dOu zB&I;@$rR5=Lr<+S*}W}HUO8*r(~VH!-+%t0H)--o)0FX@2fo_Dy7A`DU=GB~p>!QJ9KjI4V3r9e01u-l z%z9>J3QN=O>)HWY7tY1qpoFhg`Md3{A?HF7LW`Y%&#sq_D zp&)U~LqOspK+nkf=S)i~TH?e0Ia8v{D)j!Idyv99S;yBDLntRyo@zc zm+q6B(f_VVLqAcugzL7xZ5g-mw3T+jU50DS9b#sl@Mu0# z_xDReyQfY{gt3enQ!aL*YvT~EkaKhh2KSx{PI51d!+}6o&fZsTsVom-l zP8t^MCmv_W8UCbWA1t@Bc`m!_h-QpggQ<=toEk1Y@PW+Y)Tt-VPko%L5zv71;ZJ|| z7s)&JRye=Nphf}T0Y5=(UH=omo-i!aXrhk$e~u|QltQL=8zdcrjQD7vp}8uL#g%-a zrSD|_WlG4(?6@!KFaTjCsX(Aa-WtiRo`iKAwc`ap8bpRZ*X68(92%PX<1QTvQ#$H& z=7WZ%LWj)cAU{f^{A)zHJrX{>f&9~+*>8eR(Bp$v3C)(vmAI+jl?IElva+L6xwz;T z&Ct-h+0pxK3tg=S10!XcaT5FeVW1J29q!>N3j zg~i0O&_iQPUZ>2U_l)X52G%{K_YvD16*TP=m(^$@5I6K_PO?&#wGo5*IB2Xp)7?^F zj042LJDFwUpwp?gOiYXSJdKn7_-Z17+WH=7UQab+Bi**@^~C6CZ*g()-&0E5+rg|~ zQ2}q;P9IU%K10u>@-I~!QW)dE;V9Ek{)Pm5?Kq2DTw&t<(-<~=@Dgb`h~1>g7|ZME zSbeyj2+aPE@Q88rqyHnMQU^HpWGjw&x=$MVY~qpHNirY?YADQ~xOA>n#NTNi`S-sw zO@C6KefGrF)T*aOMGO33*SqE*k`&#g%M8%KN@l3pix~~=t-7V8{R~*VJt?xawY6HQ zW~L(74?fgy2SO@7c6KxLs*TYlZ}rX{yo98nIhN643_B^gXqN6$pjy{U(PTy&kXqot zUt#Gnaxuk^bt^tWeG?Pvg@px$39(DVcdPCG{TN(r@w9Z`fN0O~wy<^|J?U;4cckRP zx~+!!UUC#CYNN@4tQWGM_tsxL+y@OBhEaOyqhP6zKH%yb$g~pMW+L7{> ztV98425gzYP2}U_bJFU0$mzc;O&tl~o@}_@PBz!CZ==8RG1pEZ?UGQKb+#u60fMIx zcm;oq^C;LqR}8UR<3u;95Y*r8(G|1v10#UwaW4T3q+4GswM09e*`^juE=D&+hS9LR z`^ZyzY5!lCmobi-tK_vpjfNtuo6doV_!Q~pUE)erQ2yy4RT|X1tY$j}cJm*cUH0C| zdV;eQB*tE59)5mHqc9h4OzCSoITrOl*AM7HsyzL%B~`ZYdInFp9E$*z)FKNa4!4Fw zQvOC$47|Q6j3{0ak@UyKj(daK^>AtxV4EqpsyVjBdi7FFFtHh&v;Ea+Qp9uqu*Jhu zaan`NQq7H>y^|hi8`&e;fV=o~kTM(k-VF}%dmGzV!_^nClhgH-olw0-$ENkLrTfd( z!~Zbq_4W1E))qqqGvTo}&(zvcwbPDpI|lpx{S0EA$Wt#PX9B&f&?)8B3Z9D@+%PYU zmvZ2hoE*x{&CUDjwiAT_u(n=%rN#Q#6sxS-N(uPE@1J<7dOOPN5rJH%d1RW;5aQt= z`&P!N%jY827%TnCCE?U8UlPPcVn#oaky=rxEEpxXQfkY+_-8!c&Vz{n$a&@@1v_90 zY3}Ok+Ouz5PUcg7L1_JB@|5~mG{^ElV8Uc${2hESklf&uY1VmvtR6B6+TFp%8dSw6 zNP7U%i&rRASiK(i9F~@rzIvhw`IV>l|NXPKiD7R%anv%-_v>D}qD-}F5S?%?TA)Ir6I>bt%eNM$H*vV!I@`2gH&R#3$XIdR zEDRG3H}QP*gn5OXJ** zlTnUfaN#59DLdT3SF=@S(f+X!9-PU>LaK=72l&bZ&Od+s3I+V<9!|i~$L@#w+vBW5 zKPD`ihPgXb1Uiy<0Y&V$=4UFHl4D`&u8{CxyiW6?zh(M#;|=xeA2Ghg1_uW(t*x1! z$G$v>c#i*Re{c}hZV_4COQ*9h`xVz1L(l|}5I#)oNE1YmKPmHk!674CfpRnVRFE7b zCo|1uM6!0@5qi8wKY-xCs49McHeHyTOZ&H2;{Kg1kw5@{LQh&n&wHCVGtv@G*3`7L zSB#%o0iAjSPVFtq>(oaNu&d-m_ zUk@0AB*I$H1ecY(>nQt4*+;rTuz->5)Z}(ymNgvv*?Up}<3ddXt?z8PUv)lCIihD< zks{HVW#_lJ?u_59tt`WWgP(B{KUr$=~pK2|M`Olzt0i=LHrq+Z8y1o2qp1HGg7J4 z^RBK}x5)+$ueHj5&CJc|#xp9I-6S&x#wwmFHr=|4{@zWSM$ALARF))=Z&G^jeBplS zM8C9*>xemvcR=Nfwbw0LI6b`_17655Xb5U^jgHh}mrJfufGWjQRNsE9aa=86D}(+m zyW_C^mX-Q$4aLGQ)%~M9s$kvRw|+5I4ComXqDgXBp_o|zEBbBl?^%%`PYY3Uddt=3w|tsg!<9J=0K9ty5{ZN}K~ zrWK5jk3SEW(Tf~W)HaMU-k5$KWNlT=H;LP9_M3^35f`xW|5=yjzYPchzv2SO*fBt~ zrWWbt{9UVf)!dFZe5we5Cxl6-0*~Ale*u2|$krkFNWKSy0;kii;fHAICQY`y>2#5@ zow+&PsdCtJxpD~u4?SC=90g`l##KezB8oCXtaVM#P#*mI+ABoH(k#s^oqHQWaUeUc6w$1$Z zlNc4nKDY#?Sl3EsfdjeXsvJb535lU5BO8)9`zd{)({b|)%9*0*?(R-Y993DtPxsl# z>1H$lI;TYb*aA=>aDGfYXU>I%yRCoF1VKTlAX6Uc{mm@sxxiBZBxhTR>!G+)X=#+XH>zSuvIJ(E zsyg%4oSw-(9^p9O9)35r^Mit`d!My>{md%WohtXOq&rT8Z0FpL4H*!xI$0h@9Q0tpU1_4H^qHfFFlC? zqF1{)jtk7JWgh|MK`((OrhFvpc@gN?Fc&fqqBgd+Z2K!eTEE-Qa@v9(lEtK&%?C`; zM?}r&%JIK*y6(5%Rt;I(*f8g!K{wrwl_9H^(f71LC=fRYs&bwn`4CxH@bR&8YEhaG zZ~}gA0b2`BO&)J%cfhT2sVOMlgvIE@$ZK`z&~K@K4^-L;qb8%KMhQCk*SKmt_w6l? z{c8IUdyrusS4U=~VQ|x~dNT8gcQy-LJw1YOe(=!hO0{XefU&Pex|H8B6gdLX&KKpO zU`gX*mf&O7gj8?^9_DH-nx(_B=bsAhxXs*^wv$M&%$CZLs)|Z?gZ=GZdG$CDR_Zbw z+lAGc2{nM758smO0+TiSo6e`*O-Q!s%3WORuzn`S6es(?Zhcn3ga1U#OYZn`PqA^eUzwYMnCAbhMhb~`$H;$Ob zP6UK^{YrBmAM!M%BB#q`&y;{m&%oJ*Ix9sFOG_x3wb-6_q?f~EVuUz`spuCuf(VTw z#`r?%iC~)w(uiF%NF3Z%HS~-JQYza^9FOWr1p!kTsG)D3oCzmS$slpFo9~JvcBba% z=O_A%NWeIG6>}VM^2+{vTloKUTJ6uwXfEaKsBw(JZaMczJ6}M=vDXTT>?6XEza!B} z8qmDIuGFXTTaIv|lFTuSUT&PT(WvU+nr`?YTnKJu?enE?Ch%7bL2};0RivQ8Vpv*zMGFDg zr2fu|4p-G=^5uH}>>4!XN-`dynM!%Krg3 zyiHuxSwCj_rwv}ZB;Ppk1)LY618Iyz*jp??^5f77NWas`)@ug*PiJ7GOIFLDqKuO` z(UZYZ;N43E8vx!3+xeC2)}61%90BuleTG8|OUIMr6D+mr#Ms#L6|YS!tEDpQO4r1MCW~#YZ@^h z`BRwkKQ@>scJvrRKl(wl-+_;pfgOHeuw0Uk6~~2 zkDJ`@>1d1RfJQ2nX>3VbY&Ol^tC=`dc-{H;k z_gmjC^B1VZ{pJ9-W%oEYAg=8@;p;(+O(m-KG$&-i;coWi@nJ|rIz74N8|;R_K+|{< zjN?ax7uCl*5Jw%pDU{a-he*2*D;!>TnHK`wTj0D~C?DTAK7a`o9(RbH|DbLuf|CI} zYb2xu4G=@;q2dqb4WkeX>C=_ucd3*SjYGqa8EhYf(##OKZa&k5_Wg2o@ zBon6YS-3kqNgRkxdEDP?dc2den%Y_(-Q=W&X4kiS3%1o9qF`pg0G^KMV=z8)>y>J< zdpQ`5)OC`6+!PYW=W6rqU0ir6t&JY4`l_QenPQ<2u{;;f z5DB9LmFb_luXnB5D9?C}>+fFFL<`PfYl*3?HaiCKT)f7;M_ISEM-Tk*OiQj+TbecN ziFP*71)ps=n^GKK?+IrEZ&EcnHdcFQXNREZ9UWDij);gzbYmNg!w$H>E@Gd(tT>&J zkl>M!pw7w6#QbGqbT|m?rf^q6c>d*+_|qjG%;+;CUgx|kFVI1WtdPk>Ji0Zti)eoN zcNtUu^PlVyX7sRk099^+W@@RYeIponD(F0|EGS&BKQ<0?8HBkMnUO{eY}VQd*!FH7 zBSO;C(z+7p<=`*h(DUgI@nfvLYI=$A-ljqiU_afFD^Exx?&J?JF23k*z!xG(keEuQ zi4(G4yyzeogpl%#L_Wtyg9ODpA&InH0yy_zoFHeF%O4wp-9hH2Y%~tgSz28~~{81~!1ODnkgQ76E zHvI|XWWrnQa|ii;+9ht{12Dn4 zY9l9N*9SfT_=GlcH2c!wzcL_PH%e6FC&eiS#z%0%9Wg=P7q1dx#r%4Tyd9ATg z8Jae?&yT5b;rr3>70gxE^)5QU5B#;WjWEH_%c>2}kQ${~s-x0xc e{=a{s2qYTrqmUhOA - - Canopy Extension Example Icon + + Construct Icon -

StrucTool

+

Construct

-[![Codacy Quality](https://app.codacy.com/project/badge/Grade/10040a714ad84a2f912d4dae9d3f6e57)](https://app.codacy.com/gh/ForestOfLight/StrucTool/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) +[![Codacy Quality](https://app.codacy.com/project/badge/Grade/10040a714ad84a2f912d4dae9d3f6e57)](https://app.codacy.com/gh/ForestOfLight/Construct/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![Minecraft - Version](https://img.shields.io/badge/Minecraft-v1.21.60_(Bedrock)-brightgreen)](https://feedback.minecraft.net/hc/en-us/sections/360001186971-Release-Changelogs) -[![GitHub License](https://img.shields.io/github/license/forestoflight/structool)](LICENSE) +[![GitHub License](https://img.shields.io/github/license/forestoflight/construct)](LICENSE) [![Discord](https://badgen.net/discord/members/9KGche8fxm?icon=discord&label=Discord&list=what)](https://discord.gg/9KGche8fxm)