From 45ae7dc6535879a8e42561ceff2c2cedc9b506e3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 01:28:40 +0000 Subject: [PATCH 01/32] Update VOUCHED list https://github.com/anomalyco/opencode/issues/18464#issuecomment-4101766628 --- .github/VOUCHED.td | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/VOUCHED.td b/.github/VOUCHED.td index ddfa7fd161b..65bd876ecea 100644 --- a/.github/VOUCHED.td +++ b/.github/VOUCHED.td @@ -10,6 +10,7 @@ adamdotdevin -agusbasari29 AI PR slop ariane-emory +-danieljoshuanazareth edemaine -florianleibert fwang @@ -17,8 +18,8 @@ iamdavidhill jayair kitlangton kommander +-opencode2026 r44vc0rp rekram1-node -spider-yamet clawdbot/llm psychosis, spam pinging the team thdxr --OpenCode2026 From dc0044882c465ce96a2452498fb36313bbe953ab Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:34:07 -0500 Subject: [PATCH 02/32] ignore: add danieljoshuanazareth to disavow list (#18476) --- .github/VOUCHED.td | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/VOUCHED.td b/.github/VOUCHED.td index 65bd876ecea..831f32edbf4 100644 --- a/.github/VOUCHED.td +++ b/.github/VOUCHED.td @@ -23,3 +23,4 @@ r44vc0rp rekram1-node -spider-yamet clawdbot/llm psychosis, spam pinging the team thdxr +-danieljoshuanazareth From 5dc47905a93d01efeaff3de713d9aaea1246dd59 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 20 Mar 2026 22:49:55 -0400 Subject: [PATCH 03/32] allow customizing DB location --- packages/opencode/src/flag/flag.ts | 1 + packages/opencode/src/storage/db.ts | 4 ++++ packages/opencode/test/storage/db.test.ts | 15 ++++++++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts index 43b3de37bf6..05f04c85ce7 100644 --- a/packages/opencode/src/flag/flag.ts +++ b/packages/opencode/src/flag/flag.ts @@ -69,6 +69,7 @@ export namespace Flag { export const OPENCODE_EXPERIMENTAL_MARKDOWN = !falsy("OPENCODE_EXPERIMENTAL_MARKDOWN") export const OPENCODE_MODELS_URL = process.env["OPENCODE_MODELS_URL"] export const OPENCODE_MODELS_PATH = process.env["OPENCODE_MODELS_PATH"] + export const OPENCODE_DB = process.env["OPENCODE_DB"] export const OPENCODE_DISABLE_CHANNEL_DB = truthy("OPENCODE_DISABLE_CHANNEL_DB") export const OPENCODE_SKIP_MIGRATIONS = truthy("OPENCODE_SKIP_MIGRATIONS") export const OPENCODE_STRICT_CONFIG_DEPS = truthy("OPENCODE_STRICT_CONFIG_DEPS") diff --git a/packages/opencode/src/storage/db.ts b/packages/opencode/src/storage/db.ts index dcf0942e126..1bb8c1a69bf 100644 --- a/packages/opencode/src/storage/db.ts +++ b/packages/opencode/src/storage/db.ts @@ -28,6 +28,10 @@ const log = Log.create({ service: "db" }) export namespace Database { export const Path = iife(() => { + if (Flag.OPENCODE_DB) { + if (path.isAbsolute(Flag.OPENCODE_DB)) return Flag.OPENCODE_DB + return path.join(Global.Path.data, Flag.OPENCODE_DB) + } const channel = Installation.CHANNEL if (["latest", "beta"].includes(channel) || Flag.OPENCODE_DISABLE_CHANNEL_DB) return path.join(Global.Path.data, "opencode.db") diff --git a/packages/opencode/test/storage/db.test.ts b/packages/opencode/test/storage/db.test.ts index 601289e58ea..af5ddec3650 100644 --- a/packages/opencode/test/storage/db.test.ts +++ b/packages/opencode/test/storage/db.test.ts @@ -1,14 +1,19 @@ import { describe, expect, test } from "bun:test" import path from "path" +import { Global } from "../../src/global" import { Installation } from "../../src/installation" import { Database } from "../../src/storage/db" describe("Database.Path", () => { test("returns database path for the current channel", () => { - const file = path.basename(Database.Path) - const expected = ["latest", "beta"].includes(Installation.CHANNEL) - ? "opencode.db" - : `opencode-${Installation.CHANNEL.replace(/[^a-zA-Z0-9._-]/g, "-")}.db` - expect(file).toBe(expected) + const db = process.env["OPENCODE_DB"] + const expected = db + ? path.isAbsolute(db) + ? db + : path.join(Global.Path.data, db) + : ["latest", "beta"].includes(Installation.CHANNEL) + ? path.join(Global.Path.data, "opencode.db") + : path.join(Global.Path.data, `opencode-${Installation.CHANNEL.replace(/[^a-zA-Z0-9._-]/g, "-")}.db`) + expect(Database.Path).toBe(expected) }) }) From 6a6417758972db9eb08b8534e84f21471899e205 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Fri, 20 Mar 2026 23:10:34 -0400 Subject: [PATCH 04/32] fix(zen): emit cost chunk in client-facing format, not upstream format (#16817) --- .../console/app/src/routes/zen/util/handler.ts | 12 ++++++------ .../app/src/routes/zen/util/provider/anthropic.ts | 1 - .../app/src/routes/zen/util/provider/google.ts | 1 - .../routes/zen/util/provider/openai-compatible.ts | 1 - .../app/src/routes/zen/util/provider/openai.ts | 1 - .../app/src/routes/zen/util/provider/provider.ts | 14 +++++++++++++- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 1996d48c567..d51688c9940 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -24,7 +24,7 @@ import { FreeUsageLimitError, SubscriptionUsageLimitError, } from "./error" -import { createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" +import { buildCostChunk, createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" @@ -90,7 +90,7 @@ export async function handler( const projectId = input.request.headers.get("x-opencode-project") ?? "" const ocClient = input.request.headers.get("x-opencode-client") ?? "" logger.metric({ - is_tream: isStream, + is_stream: isStream, session: sessionId, request: requestId, client: ocClient, @@ -230,7 +230,7 @@ export async function handler( const body = JSON.stringify( responseConverter({ ...json, - cost: calculateOccuredCost(billingSource, costInfo), + cost: calculateOccurredCost(billingSource, costInfo), }), ) logger.metric({ response_length: body.length }) @@ -274,8 +274,8 @@ export async function handler( await trialLimiter?.track(usageInfo) await trackUsage(sessionId, billingSource, authInfo, modelInfo, providerInfo, usageInfo, costInfo) await reload(billingSource, authInfo, costInfo) - const cost = calculateOccuredCost(billingSource, costInfo) - c.enqueue(encoder.encode(usageParser.buidlCostChunk(cost))) + const cost = calculateOccurredCost(billingSource, costInfo) + c.enqueue(encoder.encode(buildCostChunk(opts.format, cost))) } c.close() return @@ -818,7 +818,7 @@ export async function handler( } } - function calculateOccuredCost(billingSource: BillingSource, costInfo: CostInfo) { + function calculateOccurredCost(billingSource: BillingSource, costInfo: CostInfo) { return billingSource === "balance" ? (costInfo.totalCostInCent / 100).toFixed(8) : "0" } diff --git a/packages/console/app/src/routes/zen/util/provider/anthropic.ts b/packages/console/app/src/routes/zen/util/provider/anthropic.ts index 15fe75b8481..2b617bff621 100644 --- a/packages/console/app/src/routes/zen/util/provider/anthropic.ts +++ b/packages/console/app/src/routes/zen/util/provider/anthropic.ts @@ -167,7 +167,6 @@ export const anthropicHelper: ProviderHelper = ({ reqModel, providerModel }) => } }, retrieve: () => usage, - buidlCostChunk: (cost: string) => `event: ping\ndata: ${JSON.stringify({ type: "ping", cost })}\n\n`, } }, normalizeUsage: (usage: Usage) => ({ diff --git a/packages/console/app/src/routes/zen/util/provider/google.ts b/packages/console/app/src/routes/zen/util/provider/google.ts index ecf3b2d4d4d..f6f7d6e19b2 100644 --- a/packages/console/app/src/routes/zen/util/provider/google.ts +++ b/packages/console/app/src/routes/zen/util/provider/google.ts @@ -56,7 +56,6 @@ export const googleHelper: ProviderHelper = ({ providerModel }) => ({ usage = json.usageMetadata }, retrieve: () => usage, - buidlCostChunk: (cost: string) => `data: ${JSON.stringify({ type: "ping", cost })}\n\n`, } }, normalizeUsage: (usage: Usage) => { diff --git a/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts b/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts index 046bf8f0c62..ce97a34d9bc 100644 --- a/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts +++ b/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts @@ -54,7 +54,6 @@ export const oaCompatHelper: ProviderHelper = () => ({ usage = json.usage }, retrieve: () => usage, - buidlCostChunk: (cost: string) => `data: ${JSON.stringify({ choices: [], cost })}\n\n`, } }, normalizeUsage: (usage: Usage) => { diff --git a/packages/console/app/src/routes/zen/util/provider/openai.ts b/packages/console/app/src/routes/zen/util/provider/openai.ts index 596b38cc5a4..e5649239e7c 100644 --- a/packages/console/app/src/routes/zen/util/provider/openai.ts +++ b/packages/console/app/src/routes/zen/util/provider/openai.ts @@ -44,7 +44,6 @@ export const openaiHelper: ProviderHelper = () => ({ usage = json.response.usage }, retrieve: () => usage, - buidlCostChunk: (cost: string) => `event: ping\ndata: ${JSON.stringify({ type: "ping", cost })}\n\n`, } }, normalizeUsage: (usage: Usage) => { diff --git a/packages/console/app/src/routes/zen/util/provider/provider.ts b/packages/console/app/src/routes/zen/util/provider/provider.ts index 1f9492845f8..3afabdae90a 100644 --- a/packages/console/app/src/routes/zen/util/provider/provider.ts +++ b/packages/console/app/src/routes/zen/util/provider/provider.ts @@ -43,7 +43,6 @@ export type ProviderHelper = (input: { reqModel: string; providerModel: string } createUsageParser: () => { parse: (chunk: string) => void retrieve: () => any - buidlCostChunk: (cost: string) => string } normalizeUsage: (usage: any) => UsageInfo } @@ -162,6 +161,19 @@ export interface CommonChunk { } } +export function buildCostChunk(format: ZenData.Format, cost: string): string { + switch (format) { + case "anthropic": + return `event: ping\ndata: ${JSON.stringify({ type: "ping", cost })}\n\n` + case "openai": + return `event: ping\ndata: ${JSON.stringify({ type: "ping", cost })}\n\n` + case "oa-compat": + return `data: ${JSON.stringify({ choices: [], cost })}\n\n` + default: + return `data: ${JSON.stringify({ type: "ping", cost })}\n\n` + } +} + export function createBodyConverter(from: ZenData.Format, to: ZenData.Format) { return (body: any): any => { if (from === to) return body From 40aeaa120d050a0f3395367cbc2acea052bd8fe6 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sat, 21 Mar 2026 03:11:28 +0000 Subject: [PATCH 05/32] chore: generate --- packages/console/app/src/routes/zen/util/handler.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index d51688c9940..812e7c8d1ce 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -24,7 +24,13 @@ import { FreeUsageLimitError, SubscriptionUsageLimitError, } from "./error" -import { buildCostChunk, createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider" +import { + buildCostChunk, + createBodyConverter, + createStreamPartConverter, + createResponseConverter, + UsageInfo, +} from "./provider/provider" import { anthropicHelper } from "./provider/anthropic" import { googleHelper } from "./provider/google" import { openaiHelper } from "./provider/openai" From 38e0dc9ccd18f791ca9d433e5f2d1c1c7178341a Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Sat, 21 Mar 2026 00:51:35 -0400 Subject: [PATCH 06/32] Move service state into InstanceState, flatten service facades (#18483) --- packages/opencode/script/seed-e2e.ts | 2 - packages/opencode/specs/effect-migration.md | 107 ++- packages/opencode/src/account/effect.ts | 380 ---------- packages/opencode/src/account/index.ts | 397 +++++++++- packages/opencode/src/agent/agent.ts | 44 +- packages/opencode/src/auth/effect.ts | 94 --- packages/opencode/src/auth/index.ts | 130 +++- packages/opencode/src/cli/cmd/account.ts | 11 +- packages/opencode/src/cli/cmd/debug/agent.ts | 12 +- packages/opencode/src/cli/cmd/run.ts | 4 +- .../opencode/src/cli/cmd/tui/context/sync.tsx | 2 +- packages/opencode/src/config/config.ts | 2 +- .../opencode/src/effect/instance-state.ts | 47 ++ packages/opencode/src/effect/instances.ts | 68 -- packages/opencode/src/effect/run-service.ts | 13 + packages/opencode/src/effect/runtime.ts | 25 - packages/opencode/src/file/index.ts | 706 +++++++++++++++++- packages/opencode/src/file/service.ts | 674 ----------------- packages/opencode/src/file/time-service.ts | 93 --- packages/opencode/src/file/time.ts | 120 ++- packages/opencode/src/file/watcher.ts | 166 ++-- packages/opencode/src/format/index.ts | 182 ++++- packages/opencode/src/format/service.ts | 152 ---- packages/opencode/src/installation/index.ts | 19 +- packages/opencode/src/permission/index.ts | 336 ++++++++- packages/opencode/src/permission/service.ts | 282 ------- packages/opencode/src/project/bootstrap.ts | 8 + packages/opencode/src/project/instance.ts | 8 +- packages/opencode/src/project/vcs.ts | 96 ++- .../opencode/src/provider/auth-service.ts | 215 ------ packages/opencode/src/provider/auth.ts | 266 ++++++- packages/opencode/src/question/index.ts | 218 +++++- packages/opencode/src/question/service.ts | 172 ----- .../opencode/src/server/routes/permission.ts | 10 +- .../opencode/src/server/routes/session.ts | 8 +- packages/opencode/src/server/server.ts | 7 +- packages/opencode/src/session/index.ts | 10 +- packages/opencode/src/session/llm.ts | 8 +- packages/opencode/src/session/message-v2.ts | 2 +- packages/opencode/src/session/processor.ts | 8 +- packages/opencode/src/session/prompt.ts | 14 +- packages/opencode/src/session/session.sql.ts | 8 +- packages/opencode/src/session/system.ts | 4 +- packages/opencode/src/share/share-next.ts | 2 +- packages/opencode/src/skill/index.ts | 261 ++++++- packages/opencode/src/skill/service.ts | 238 ------ packages/opencode/src/skill/skill.ts | 35 - packages/opencode/src/snapshot/index.ts | 386 +++++++++- packages/opencode/src/snapshot/service.ts | 320 -------- packages/opencode/src/tool/apply_patch.ts | 2 +- packages/opencode/src/tool/edit.ts | 4 +- packages/opencode/src/tool/question.ts | 5 +- packages/opencode/src/tool/task.ts | 4 +- packages/opencode/src/tool/tool.ts | 4 +- packages/opencode/src/tool/truncate-effect.ts | 137 ---- packages/opencode/src/tool/truncate.ts | 144 +++- packages/opencode/src/tool/write.ts | 2 +- .../opencode/test/account/service.test.ts | 2 +- packages/opencode/test/agent/agent.test.ts | 38 +- packages/opencode/test/config/config.test.ts | 2 +- .../test/effect/instance-state.test.ts | 384 ++++++++++ .../opencode/test/effect/run-service.test.ts | 46 ++ packages/opencode/test/effect/runtime.test.ts | 128 ---- packages/opencode/test/file/index.test.ts | 96 ++- packages/opencode/test/file/time.test.ts | 26 +- packages/opencode/test/file/watcher.test.ts | 6 +- packages/opencode/test/format/format.test.ts | 109 ++- .../opencode/test/permission-task.test.ts | 114 +-- .../opencode/test/permission/next.test.ts | 370 +++++---- .../test/plugin/auth-override.test.ts | 23 +- packages/opencode/test/project/vcs.test.ts | 8 +- .../opencode/test/question/question.test.ts | 131 ++++ .../opencode/test/share/share-next.test.ts | 6 +- packages/opencode/test/skill/skill.test.ts | 6 +- .../opencode/test/snapshot/snapshot.test.ts | 6 +- packages/opencode/test/tool/bash.test.ts | 42 +- packages/opencode/test/tool/edit.test.ts | 6 +- .../test/tool/external-directory.test.ts | 12 +- packages/opencode/test/tool/read.test.ts | 30 +- packages/opencode/test/tool/registry.test.ts | 6 +- packages/opencode/test/tool/skill.test.ts | 10 +- packages/opencode/test/tool/task.test.ts | 6 +- .../opencode/test/tool/truncation.test.ts | 5 +- packages/opencode/test/tool/write.test.ts | 6 +- 84 files changed, 4546 insertions(+), 3752 deletions(-) delete mode 100644 packages/opencode/src/account/effect.ts delete mode 100644 packages/opencode/src/auth/effect.ts create mode 100644 packages/opencode/src/effect/instance-state.ts delete mode 100644 packages/opencode/src/effect/instances.ts create mode 100644 packages/opencode/src/effect/run-service.ts delete mode 100644 packages/opencode/src/effect/runtime.ts delete mode 100644 packages/opencode/src/file/service.ts delete mode 100644 packages/opencode/src/file/time-service.ts delete mode 100644 packages/opencode/src/format/service.ts delete mode 100644 packages/opencode/src/permission/service.ts delete mode 100644 packages/opencode/src/provider/auth-service.ts delete mode 100644 packages/opencode/src/question/service.ts delete mode 100644 packages/opencode/src/skill/service.ts delete mode 100644 packages/opencode/src/skill/skill.ts delete mode 100644 packages/opencode/src/snapshot/service.ts delete mode 100644 packages/opencode/src/tool/truncate-effect.ts create mode 100644 packages/opencode/test/effect/instance-state.test.ts create mode 100644 packages/opencode/test/effect/run-service.test.ts delete mode 100644 packages/opencode/test/effect/runtime.test.ts diff --git a/packages/opencode/script/seed-e2e.ts b/packages/opencode/script/seed-e2e.ts index fc3573548d3..f5bd7194f25 100644 --- a/packages/opencode/script/seed-e2e.ts +++ b/packages/opencode/script/seed-e2e.ts @@ -11,7 +11,6 @@ const seed = async () => { const { Instance } = await import("../src/project/instance") const { InstanceBootstrap } = await import("../src/project/bootstrap") const { Config } = await import("../src/config/config") - const { disposeRuntime } = await import("../src/effect/runtime") const { Session } = await import("../src/session") const { MessageID, PartID } = await import("../src/session/schema") const { Project } = await import("../src/project/project") @@ -55,7 +54,6 @@ const seed = async () => { }) } finally { await Instance.disposeAll().catch(() => {}) - await disposeRuntime().catch(() => {}) } } diff --git a/packages/opencode/specs/effect-migration.md b/packages/opencode/specs/effect-migration.md index 4f195917fde..80c906fcc82 100644 --- a/packages/opencode/specs/effect-migration.md +++ b/packages/opencode/specs/effect-migration.md @@ -4,18 +4,18 @@ Practical reference for new and migrated Effect code in `packages/opencode`. ## Choose scope -Use the shared runtime for process-wide services with one lifecycle for the whole app. +Use `InstanceState` (from `src/effect/instance-state.ts`) for services that need per-directory state, per-instance cleanup, or project-bound background work. InstanceState uses a `ScopedCache` keyed by directory, so each open project gets its own copy of the state that is automatically cleaned up on disposal. -Use `src/effect/instances.ts` for services that are created per directory or need `InstanceContext`, per-project state, or per-instance cleanup. +Use `makeRunPromise` (from `src/effect/run-service.ts`) to create a per-service `ManagedRuntime` that lazily initializes and shares layers via a global `memoMap`. -- Shared runtime: config readers, stateless helpers, global clients -- Instance-scoped: watchers, per-project caches, session state, project-bound background work +- Global services (no per-directory state): Account, Auth, Installation, Truncate +- Instance-scoped (per-directory state via InstanceState): File, FileTime, FileWatcher, Format, Permission, Question, Skill, Snapshot, Vcs, ProviderAuth -Rule of thumb: if two open directories should not share one copy of the service, it belongs in `Instances`. +Rule of thumb: if two open directories should not share one copy of the service, it needs `InstanceState`. ## Service shape -For a fully migrated module, use the public namespace directly: +Every service follows the same pattern — a single namespace with the service definition, layer, `runPromise`, and async facade functions: ```ts export namespace Foo { @@ -28,53 +28,52 @@ export namespace Foo { export const layer = Layer.effect( Service, Effect.gen(function* () { - return Service.of({ - get: Effect.fn("Foo.get")(function* (id) { - return yield* ... - }), + // For instance-scoped services: + const state = yield* InstanceState.make( + Effect.fn("Foo.state")(() => Effect.succeed({ ... })), + ) + + const get = Effect.fn("Foo.get")(function* (id: FooID) { + const s = yield* InstanceState.get(state) + // ... }) + + return Service.of({ get }) }), ) - export const defaultLayer = layer.pipe(Layer.provide(FooRepo.defaultLayer)) + // Optional: wire dependencies + export const defaultLayer = layer.pipe(Layer.provide(FooDep.layer)) + + // Per-service runtime (inside the namespace) + const runPromise = makeRunPromise(Service, defaultLayer) + + // Async facade functions + export async function get(id: FooID) { + return runPromise((svc) => svc.get(id)) + } } ``` Rules: -- Keep `Interface`, `Service`, `layer`, and `defaultLayer` on the owning namespace -- Export `defaultLayer` only when wiring dependencies is useful -- Use the direct namespace form once the module is fully migrated - -## Temporary mixed-mode pattern +- Keep everything in one namespace, one file — no separate `service.ts` / `index.ts` split +- `runPromise` goes inside the namespace (not exported unless tests need it) +- Facade functions are plain `async function` — no `fn()` wrappers +- Use `Effect.fn("Namespace.method")` for all Effect functions (for tracing) +- No `Layer.fresh` — InstanceState handles per-directory isolation -Prefer a single namespace whenever possible. +## Schema → Zod interop -Use a `*Effect` namespace only when there is a real mixed-mode split, usually because a legacy boundary facade still exists or because merging everything immediately would create awkward cycles. +When a service uses Effect Schema internally but needs Zod schemas for the HTTP layer, derive Zod from Schema using the `zod()` helper from `@/util/effect-zod`: ```ts -export namespace FooEffect { - export interface Interface { - readonly get: (id: FooID) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Foo") {} +import { zod } from "@/util/effect-zod" - export const layer = Layer.effect(...) -} -``` - -Then keep the old boundary thin: - -```ts -export namespace Foo { - export function get(id: FooID) { - return runtime.runPromise(FooEffect.Service.use((svc) => svc.get(id))) - } -} +export const ZodInfo = zod(Info) // derives z.ZodType from Schema.Union ``` -Remove the `Effect` suffix when the boundary split is gone. +See `Auth.ZodInfo` for the canonical example. ## Scheduled Tasks @@ -107,22 +106,23 @@ That is fine for leaf files like `schema.ts`. Keep the service surface in the ow ## Migration checklist -Done now: - -- [x] `AccountEffect` (mixed-mode) -- [x] `AuthEffect` (mixed-mode) -- [x] `TruncateEffect` (mixed-mode) -- [x] `Question` -- [x] `PermissionNext` -- [x] `ProviderAuth` -- [x] `FileWatcher` -- [x] `FileTime` -- [x] `Format` -- [x] `Vcs` -- [x] `Skill` -- [x] `Discovery` -- [x] `File` -- [x] `Snapshot` +Fully migrated (single namespace, InstanceState where needed, flattened facade): + +- [x] `Account` — `account/index.ts` +- [x] `Auth` — `auth/index.ts` (uses `zod()` helper for Schema→Zod interop) +- [x] `File` — `file/index.ts` +- [x] `FileTime` — `file/time.ts` +- [x] `FileWatcher` — `file/watcher.ts` +- [x] `Format` — `format/index.ts` +- [x] `Installation` — `installation/index.ts` +- [x] `Permission` — `permission/index.ts` +- [x] `ProviderAuth` — `provider/auth.ts` +- [x] `Question` — `question/index.ts` +- [x] `Skill` — `skill/index.ts` +- [x] `Snapshot` — `snapshot/index.ts` +- [x] `Truncate` — `tool/truncate.ts` +- [x] `Vcs` — `project/vcs.ts` +- [x] `Discovery` — `skill/discovery.ts` Still open and likely worth migrating: @@ -130,7 +130,6 @@ Still open and likely worth migrating: - [ ] `ToolRegistry` - [ ] `Pty` - [ ] `Worktree` -- [ ] `Installation` - [ ] `Bus` - [ ] `Command` - [ ] `Config` diff --git a/packages/opencode/src/account/effect.ts b/packages/opencode/src/account/effect.ts deleted file mode 100644 index 8686ef42a99..00000000000 --- a/packages/opencode/src/account/effect.ts +++ /dev/null @@ -1,380 +0,0 @@ -import { Clock, Duration, Effect, Layer, Option, Schema, SchemaGetter, ServiceMap } from "effect" -import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" - -import { withTransientReadRetry } from "@/util/effect-http-client" -import { AccountRepo, type AccountRow } from "./repo" -import { - type AccountError, - AccessToken, - AccountID, - DeviceCode, - Info, - RefreshToken, - AccountServiceError, - Login, - Org, - OrgID, - PollDenied, - PollError, - PollExpired, - PollPending, - type PollResult, - PollSlow, - PollSuccess, - UserCode, -} from "./schema" - -export { - AccountID, - type AccountError, - AccountRepoError, - AccountServiceError, - AccessToken, - RefreshToken, - DeviceCode, - UserCode, - Info, - Org, - OrgID, - Login, - PollSuccess, - PollPending, - PollSlow, - PollExpired, - PollDenied, - PollError, - PollResult, -} from "./schema" - -export type AccountOrgs = { - account: Info - orgs: readonly Org[] -} - -class RemoteConfig extends Schema.Class("RemoteConfig")({ - config: Schema.Record(Schema.String, Schema.Json), -}) {} - -const DurationFromSeconds = Schema.Number.pipe( - Schema.decodeTo(Schema.Duration, { - decode: SchemaGetter.transform((n) => Duration.seconds(n)), - encode: SchemaGetter.transform((d) => Duration.toSeconds(d)), - }), -) - -class TokenRefresh extends Schema.Class("TokenRefresh")({ - access_token: AccessToken, - refresh_token: RefreshToken, - expires_in: DurationFromSeconds, -}) {} - -class DeviceAuth extends Schema.Class("DeviceAuth")({ - device_code: DeviceCode, - user_code: UserCode, - verification_uri_complete: Schema.String, - expires_in: DurationFromSeconds, - interval: DurationFromSeconds, -}) {} - -class DeviceTokenSuccess extends Schema.Class("DeviceTokenSuccess")({ - access_token: AccessToken, - refresh_token: RefreshToken, - token_type: Schema.Literal("Bearer"), - expires_in: DurationFromSeconds, -}) {} - -class DeviceTokenError extends Schema.Class("DeviceTokenError")({ - error: Schema.String, - error_description: Schema.String, -}) { - toPollResult(): PollResult { - if (this.error === "authorization_pending") return new PollPending() - if (this.error === "slow_down") return new PollSlow() - if (this.error === "expired_token") return new PollExpired() - if (this.error === "access_denied") return new PollDenied() - return new PollError({ cause: this.error }) - } -} - -const DeviceToken = Schema.Union([DeviceTokenSuccess, DeviceTokenError]) - -class User extends Schema.Class("User")({ - id: AccountID, - email: Schema.String, -}) {} - -class ClientId extends Schema.Class("ClientId")({ client_id: Schema.String }) {} - -class DeviceTokenRequest extends Schema.Class("DeviceTokenRequest")({ - grant_type: Schema.String, - device_code: DeviceCode, - client_id: Schema.String, -}) {} - -class TokenRefreshRequest extends Schema.Class("TokenRefreshRequest")({ - grant_type: Schema.String, - refresh_token: RefreshToken, - client_id: Schema.String, -}) {} - -const clientId = "opencode-cli" - -const mapAccountServiceError = - (message = "Account service operation failed") => - (effect: Effect.Effect): Effect.Effect => - effect.pipe( - Effect.mapError((cause) => - cause instanceof AccountServiceError ? cause : new AccountServiceError({ message, cause }), - ), - ) - -export namespace Account { - export interface Interface { - readonly active: () => Effect.Effect, AccountError> - readonly list: () => Effect.Effect - readonly orgsByAccount: () => Effect.Effect - readonly remove: (accountID: AccountID) => Effect.Effect - readonly use: (accountID: AccountID, orgID: Option.Option) => Effect.Effect - readonly orgs: (accountID: AccountID) => Effect.Effect - readonly config: ( - accountID: AccountID, - orgID: OrgID, - ) => Effect.Effect>, AccountError> - readonly token: (accountID: AccountID) => Effect.Effect, AccountError> - readonly login: (url: string) => Effect.Effect - readonly poll: (input: Login) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Account") {} - - export const layer: Layer.Layer = Layer.effect( - Service, - Effect.gen(function* () { - const repo = yield* AccountRepo - const http = yield* HttpClient.HttpClient - const httpRead = withTransientReadRetry(http) - const httpOk = HttpClient.filterStatusOk(http) - const httpReadOk = HttpClient.filterStatusOk(httpRead) - - const executeRead = (request: HttpClientRequest.HttpClientRequest) => - httpRead.execute(request).pipe(mapAccountServiceError("HTTP request failed")) - - const executeReadOk = (request: HttpClientRequest.HttpClientRequest) => - httpReadOk.execute(request).pipe(mapAccountServiceError("HTTP request failed")) - - const executeEffectOk = (request: Effect.Effect) => - request.pipe( - Effect.flatMap((req) => httpOk.execute(req)), - mapAccountServiceError("HTTP request failed"), - ) - - const executeEffect = (request: Effect.Effect) => - request.pipe( - Effect.flatMap((req) => http.execute(req)), - mapAccountServiceError("HTTP request failed"), - ) - - const resolveToken = Effect.fnUntraced(function* (row: AccountRow) { - const now = yield* Clock.currentTimeMillis - if (row.token_expiry && row.token_expiry > now) return row.access_token - - const response = yield* executeEffectOk( - HttpClientRequest.post(`${row.url}/auth/device/token`).pipe( - HttpClientRequest.acceptJson, - HttpClientRequest.schemaBodyJson(TokenRefreshRequest)( - new TokenRefreshRequest({ - grant_type: "refresh_token", - refresh_token: row.refresh_token, - client_id: clientId, - }), - ), - ), - ) - - const parsed = yield* HttpClientResponse.schemaBodyJson(TokenRefresh)(response).pipe( - mapAccountServiceError("Failed to decode response"), - ) - - const expiry = Option.some(now + Duration.toMillis(parsed.expires_in)) - - yield* repo.persistToken({ - accountID: row.id, - accessToken: parsed.access_token, - refreshToken: parsed.refresh_token, - expiry, - }) - - return parsed.access_token - }) - - const resolveAccess = Effect.fnUntraced(function* (accountID: AccountID) { - const maybeAccount = yield* repo.getRow(accountID) - if (Option.isNone(maybeAccount)) return Option.none() - - const account = maybeAccount.value - const accessToken = yield* resolveToken(account) - return Option.some({ account, accessToken }) - }) - - const fetchOrgs = Effect.fnUntraced(function* (url: string, accessToken: AccessToken) { - const response = yield* executeReadOk( - HttpClientRequest.get(`${url}/api/orgs`).pipe( - HttpClientRequest.acceptJson, - HttpClientRequest.bearerToken(accessToken), - ), - ) - - return yield* HttpClientResponse.schemaBodyJson(Schema.Array(Org))(response).pipe( - mapAccountServiceError("Failed to decode response"), - ) - }) - - const fetchUser = Effect.fnUntraced(function* (url: string, accessToken: AccessToken) { - const response = yield* executeReadOk( - HttpClientRequest.get(`${url}/api/user`).pipe( - HttpClientRequest.acceptJson, - HttpClientRequest.bearerToken(accessToken), - ), - ) - - return yield* HttpClientResponse.schemaBodyJson(User)(response).pipe( - mapAccountServiceError("Failed to decode response"), - ) - }) - - const token = Effect.fn("Account.token")((accountID: AccountID) => - resolveAccess(accountID).pipe(Effect.map(Option.map((r) => r.accessToken))), - ) - - const orgsByAccount = Effect.fn("Account.orgsByAccount")(function* () { - const accounts = yield* repo.list() - const [errors, results] = yield* Effect.partition( - accounts, - (account) => orgs(account.id).pipe(Effect.map((orgs) => ({ account, orgs }))), - { concurrency: 3 }, - ) - for (const error of errors) { - yield* Effect.logWarning("failed to fetch orgs for account").pipe( - Effect.annotateLogs({ error: String(error) }), - ) - } - return results - }) - - const orgs = Effect.fn("Account.orgs")(function* (accountID: AccountID) { - const resolved = yield* resolveAccess(accountID) - if (Option.isNone(resolved)) return [] - - const { account, accessToken } = resolved.value - - return yield* fetchOrgs(account.url, accessToken) - }) - - const config = Effect.fn("Account.config")(function* (accountID: AccountID, orgID: OrgID) { - const resolved = yield* resolveAccess(accountID) - if (Option.isNone(resolved)) return Option.none() - - const { account, accessToken } = resolved.value - - const response = yield* executeRead( - HttpClientRequest.get(`${account.url}/api/config`).pipe( - HttpClientRequest.acceptJson, - HttpClientRequest.bearerToken(accessToken), - HttpClientRequest.setHeaders({ "x-org-id": orgID }), - ), - ) - - if (response.status === 404) return Option.none() - - const ok = yield* HttpClientResponse.filterStatusOk(response).pipe(mapAccountServiceError()) - - const parsed = yield* HttpClientResponse.schemaBodyJson(RemoteConfig)(ok).pipe( - mapAccountServiceError("Failed to decode response"), - ) - return Option.some(parsed.config) - }) - - const login = Effect.fn("Account.login")(function* (server: string) { - const response = yield* executeEffectOk( - HttpClientRequest.post(`${server}/auth/device/code`).pipe( - HttpClientRequest.acceptJson, - HttpClientRequest.schemaBodyJson(ClientId)(new ClientId({ client_id: clientId })), - ), - ) - - const parsed = yield* HttpClientResponse.schemaBodyJson(DeviceAuth)(response).pipe( - mapAccountServiceError("Failed to decode response"), - ) - return new Login({ - code: parsed.device_code, - user: parsed.user_code, - url: `${server}${parsed.verification_uri_complete}`, - server, - expiry: parsed.expires_in, - interval: parsed.interval, - }) - }) - - const poll = Effect.fn("Account.poll")(function* (input: Login) { - const response = yield* executeEffect( - HttpClientRequest.post(`${input.server}/auth/device/token`).pipe( - HttpClientRequest.acceptJson, - HttpClientRequest.schemaBodyJson(DeviceTokenRequest)( - new DeviceTokenRequest({ - grant_type: "urn:ietf:params:oauth:grant-type:device_code", - device_code: input.code, - client_id: clientId, - }), - ), - ), - ) - - const parsed = yield* HttpClientResponse.schemaBodyJson(DeviceToken)(response).pipe( - mapAccountServiceError("Failed to decode response"), - ) - - if (parsed instanceof DeviceTokenError) return parsed.toPollResult() - const accessToken = parsed.access_token - - const user = fetchUser(input.server, accessToken) - const orgs = fetchOrgs(input.server, accessToken) - - const [account, remoteOrgs] = yield* Effect.all([user, orgs], { concurrency: 2 }) - - // TODO: When there are multiple orgs, let the user choose - const firstOrgID = remoteOrgs.length > 0 ? Option.some(remoteOrgs[0].id) : Option.none() - - const now = yield* Clock.currentTimeMillis - const expiry = now + Duration.toMillis(parsed.expires_in) - const refreshToken = parsed.refresh_token - - yield* repo.persistAccount({ - id: account.id, - email: account.email, - url: input.server, - accessToken, - refreshToken, - expiry, - orgID: firstOrgID, - }) - - return new PollSuccess({ email: account.email }) - }) - - return Service.of({ - active: repo.active, - list: repo.list, - orgsByAccount, - remove: repo.remove, - use: repo.use, - orgs, - config, - token, - login, - poll, - }) - }), - ) - - export const defaultLayer = layer.pipe(Layer.provide(AccountRepo.layer), Layer.provide(FetchHttpClient.layer)) -} diff --git a/packages/opencode/src/account/index.ts b/packages/opencode/src/account/index.ts index 753b80c5f1e..0a8d3687a35 100644 --- a/packages/opencode/src/account/index.ts +++ b/packages/opencode/src/account/index.ts @@ -1,34 +1,397 @@ -import { Effect, Option } from "effect" +import { Clock, Duration, Effect, Layer, Option, Schema, SchemaGetter, ServiceMap } from "effect" +import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" -import { Account as S, type AccountError, type AccessToken, AccountID, Info as Model, OrgID } from "./effect" +import { makeRunPromise } from "@/effect/run-service" +import { withTransientReadRetry } from "@/util/effect-http-client" +import { AccountRepo, type AccountRow } from "./repo" +import { + type AccountError, + AccessToken, + AccountID, + DeviceCode, + Info, + RefreshToken, + AccountServiceError, + Login, + Org, + OrgID, + PollDenied, + PollError, + PollExpired, + PollPending, + type PollResult, + PollSlow, + PollSuccess, + UserCode, +} from "./schema" -export { AccessToken, AccountID, OrgID } from "./effect" +export { + AccountID, + type AccountError, + AccountRepoError, + AccountServiceError, + AccessToken, + RefreshToken, + DeviceCode, + UserCode, + Info, + Org, + OrgID, + Login, + PollSuccess, + PollPending, + PollSlow, + PollExpired, + PollDenied, + PollError, + PollResult, +} from "./schema" -import { runtime } from "@/effect/runtime" - -function runSync(f: (service: S.Interface) => Effect.Effect) { - return runtime.runSync(S.Service.use(f)) +export type AccountOrgs = { + account: Info + orgs: readonly Org[] } -function runPromise(f: (service: S.Interface) => Effect.Effect) { - return runtime.runPromise(S.Service.use(f)) +class RemoteConfig extends Schema.Class("RemoteConfig")({ + config: Schema.Record(Schema.String, Schema.Json), +}) {} + +const DurationFromSeconds = Schema.Number.pipe( + Schema.decodeTo(Schema.Duration, { + decode: SchemaGetter.transform((n) => Duration.seconds(n)), + encode: SchemaGetter.transform((d) => Duration.toSeconds(d)), + }), +) + +class TokenRefresh extends Schema.Class("TokenRefresh")({ + access_token: AccessToken, + refresh_token: RefreshToken, + expires_in: DurationFromSeconds, +}) {} + +class DeviceAuth extends Schema.Class("DeviceAuth")({ + device_code: DeviceCode, + user_code: UserCode, + verification_uri_complete: Schema.String, + expires_in: DurationFromSeconds, + interval: DurationFromSeconds, +}) {} + +class DeviceTokenSuccess extends Schema.Class("DeviceTokenSuccess")({ + access_token: AccessToken, + refresh_token: RefreshToken, + token_type: Schema.Literal("Bearer"), + expires_in: DurationFromSeconds, +}) {} + +class DeviceTokenError extends Schema.Class("DeviceTokenError")({ + error: Schema.String, + error_description: Schema.String, +}) { + toPollResult(): PollResult { + if (this.error === "authorization_pending") return new PollPending() + if (this.error === "slow_down") return new PollSlow() + if (this.error === "expired_token") return new PollExpired() + if (this.error === "access_denied") return new PollDenied() + return new PollError({ cause: this.error }) + } } +const DeviceToken = Schema.Union([DeviceTokenSuccess, DeviceTokenError]) + +class User extends Schema.Class("User")({ + id: AccountID, + email: Schema.String, +}) {} + +class ClientId extends Schema.Class("ClientId")({ client_id: Schema.String }) {} + +class DeviceTokenRequest extends Schema.Class("DeviceTokenRequest")({ + grant_type: Schema.String, + device_code: DeviceCode, + client_id: Schema.String, +}) {} + +class TokenRefreshRequest extends Schema.Class("TokenRefreshRequest")({ + grant_type: Schema.String, + refresh_token: RefreshToken, + client_id: Schema.String, +}) {} + +const clientId = "opencode-cli" + +const mapAccountServiceError = + (message = "Account service operation failed") => + (effect: Effect.Effect): Effect.Effect => + effect.pipe( + Effect.mapError((cause) => + cause instanceof AccountServiceError ? cause : new AccountServiceError({ message, cause }), + ), + ) + export namespace Account { - export const Info = Model - export type Info = Model + export interface Interface { + readonly active: () => Effect.Effect, AccountError> + readonly list: () => Effect.Effect + readonly orgsByAccount: () => Effect.Effect + readonly remove: (accountID: AccountID) => Effect.Effect + readonly use: (accountID: AccountID, orgID: Option.Option) => Effect.Effect + readonly orgs: (accountID: AccountID) => Effect.Effect + readonly config: ( + accountID: AccountID, + orgID: OrgID, + ) => Effect.Effect>, AccountError> + readonly token: (accountID: AccountID) => Effect.Effect, AccountError> + readonly login: (url: string) => Effect.Effect + readonly poll: (input: Login) => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/Account") {} + + export const layer: Layer.Layer = Layer.effect( + Service, + Effect.gen(function* () { + const repo = yield* AccountRepo + const http = yield* HttpClient.HttpClient + const httpRead = withTransientReadRetry(http) + const httpOk = HttpClient.filterStatusOk(http) + const httpReadOk = HttpClient.filterStatusOk(httpRead) + + const executeRead = (request: HttpClientRequest.HttpClientRequest) => + httpRead.execute(request).pipe(mapAccountServiceError("HTTP request failed")) + + const executeReadOk = (request: HttpClientRequest.HttpClientRequest) => + httpReadOk.execute(request).pipe(mapAccountServiceError("HTTP request failed")) + + const executeEffectOk = (request: Effect.Effect) => + request.pipe( + Effect.flatMap((req) => httpOk.execute(req)), + mapAccountServiceError("HTTP request failed"), + ) + + const executeEffect = (request: Effect.Effect) => + request.pipe( + Effect.flatMap((req) => http.execute(req)), + mapAccountServiceError("HTTP request failed"), + ) + + const resolveToken = Effect.fnUntraced(function* (row: AccountRow) { + const now = yield* Clock.currentTimeMillis + if (row.token_expiry && row.token_expiry > now) return row.access_token + + const response = yield* executeEffectOk( + HttpClientRequest.post(`${row.url}/auth/device/token`).pipe( + HttpClientRequest.acceptJson, + HttpClientRequest.schemaBodyJson(TokenRefreshRequest)( + new TokenRefreshRequest({ + grant_type: "refresh_token", + refresh_token: row.refresh_token, + client_id: clientId, + }), + ), + ), + ) + + const parsed = yield* HttpClientResponse.schemaBodyJson(TokenRefresh)(response).pipe( + mapAccountServiceError("Failed to decode response"), + ) + + const expiry = Option.some(now + Duration.toMillis(parsed.expires_in)) + + yield* repo.persistToken({ + accountID: row.id, + accessToken: parsed.access_token, + refreshToken: parsed.refresh_token, + expiry, + }) + + return parsed.access_token + }) + + const resolveAccess = Effect.fnUntraced(function* (accountID: AccountID) { + const maybeAccount = yield* repo.getRow(accountID) + if (Option.isNone(maybeAccount)) return Option.none() + + const account = maybeAccount.value + const accessToken = yield* resolveToken(account) + return Option.some({ account, accessToken }) + }) + + const fetchOrgs = Effect.fnUntraced(function* (url: string, accessToken: AccessToken) { + const response = yield* executeReadOk( + HttpClientRequest.get(`${url}/api/orgs`).pipe( + HttpClientRequest.acceptJson, + HttpClientRequest.bearerToken(accessToken), + ), + ) + + return yield* HttpClientResponse.schemaBodyJson(Schema.Array(Org))(response).pipe( + mapAccountServiceError("Failed to decode response"), + ) + }) + + const fetchUser = Effect.fnUntraced(function* (url: string, accessToken: AccessToken) { + const response = yield* executeReadOk( + HttpClientRequest.get(`${url}/api/user`).pipe( + HttpClientRequest.acceptJson, + HttpClientRequest.bearerToken(accessToken), + ), + ) + + return yield* HttpClientResponse.schemaBodyJson(User)(response).pipe( + mapAccountServiceError("Failed to decode response"), + ) + }) + + const token = Effect.fn("Account.token")((accountID: AccountID) => + resolveAccess(accountID).pipe(Effect.map(Option.map((r) => r.accessToken))), + ) + + const orgsByAccount = Effect.fn("Account.orgsByAccount")(function* () { + const accounts = yield* repo.list() + const [errors, results] = yield* Effect.partition( + accounts, + (account) => orgs(account.id).pipe(Effect.map((orgs) => ({ account, orgs }))), + { concurrency: 3 }, + ) + for (const error of errors) { + yield* Effect.logWarning("failed to fetch orgs for account").pipe( + Effect.annotateLogs({ error: String(error) }), + ) + } + return results + }) + + const orgs = Effect.fn("Account.orgs")(function* (accountID: AccountID) { + const resolved = yield* resolveAccess(accountID) + if (Option.isNone(resolved)) return [] + + const { account, accessToken } = resolved.value + + return yield* fetchOrgs(account.url, accessToken) + }) + + const config = Effect.fn("Account.config")(function* (accountID: AccountID, orgID: OrgID) { + const resolved = yield* resolveAccess(accountID) + if (Option.isNone(resolved)) return Option.none() + + const { account, accessToken } = resolved.value + + const response = yield* executeRead( + HttpClientRequest.get(`${account.url}/api/config`).pipe( + HttpClientRequest.acceptJson, + HttpClientRequest.bearerToken(accessToken), + HttpClientRequest.setHeaders({ "x-org-id": orgID }), + ), + ) + + if (response.status === 404) return Option.none() + + const ok = yield* HttpClientResponse.filterStatusOk(response).pipe(mapAccountServiceError()) + + const parsed = yield* HttpClientResponse.schemaBodyJson(RemoteConfig)(ok).pipe( + mapAccountServiceError("Failed to decode response"), + ) + return Option.some(parsed.config) + }) + + const login = Effect.fn("Account.login")(function* (server: string) { + const response = yield* executeEffectOk( + HttpClientRequest.post(`${server}/auth/device/code`).pipe( + HttpClientRequest.acceptJson, + HttpClientRequest.schemaBodyJson(ClientId)(new ClientId({ client_id: clientId })), + ), + ) + + const parsed = yield* HttpClientResponse.schemaBodyJson(DeviceAuth)(response).pipe( + mapAccountServiceError("Failed to decode response"), + ) + return new Login({ + code: parsed.device_code, + user: parsed.user_code, + url: `${server}${parsed.verification_uri_complete}`, + server, + expiry: parsed.expires_in, + interval: parsed.interval, + }) + }) + + const poll = Effect.fn("Account.poll")(function* (input: Login) { + const response = yield* executeEffect( + HttpClientRequest.post(`${input.server}/auth/device/token`).pipe( + HttpClientRequest.acceptJson, + HttpClientRequest.schemaBodyJson(DeviceTokenRequest)( + new DeviceTokenRequest({ + grant_type: "urn:ietf:params:oauth:grant-type:device_code", + device_code: input.code, + client_id: clientId, + }), + ), + ), + ) + + const parsed = yield* HttpClientResponse.schemaBodyJson(DeviceToken)(response).pipe( + mapAccountServiceError("Failed to decode response"), + ) + + if (parsed instanceof DeviceTokenError) return parsed.toPollResult() + const accessToken = parsed.access_token + + const user = fetchUser(input.server, accessToken) + const orgs = fetchOrgs(input.server, accessToken) + + const [account, remoteOrgs] = yield* Effect.all([user, orgs], { concurrency: 2 }) + + // TODO: When there are multiple orgs, let the user choose + const firstOrgID = remoteOrgs.length > 0 ? Option.some(remoteOrgs[0].id) : Option.none() + + const now = yield* Clock.currentTimeMillis + const expiry = now + Duration.toMillis(parsed.expires_in) + const refreshToken = parsed.refresh_token + + yield* repo.persistAccount({ + id: account.id, + email: account.email, + url: input.server, + accessToken, + refreshToken, + expiry, + orgID: firstOrgID, + }) + + return new PollSuccess({ email: account.email }) + }) + + return Service.of({ + active: repo.active, + list: repo.list, + orgsByAccount, + remove: repo.remove, + use: repo.use, + orgs, + config, + token, + login, + poll, + }) + }), + ) + + export const defaultLayer = layer.pipe(Layer.provide(AccountRepo.layer), Layer.provide(FetchHttpClient.layer)) + + export const runPromise = makeRunPromise(Service, defaultLayer) - export function active(): Info | undefined { - return Option.getOrUndefined(runSync((service) => service.active())) + export async function active(): Promise { + return Option.getOrUndefined(await runPromise((service) => service.active())) } export async function config(accountID: AccountID, orgID: OrgID): Promise | undefined> { - const config = await runPromise((service) => service.config(accountID, orgID)) - return Option.getOrUndefined(config) + const cfg = await runPromise((service) => service.config(accountID, orgID)) + return Option.getOrUndefined(cfg) } export async function token(accountID: AccountID): Promise { - const token = await runPromise((service) => service.token(accountID)) - return Option.getOrUndefined(token) + const t = await runPromise((service) => service.token(accountID)) + return Option.getOrUndefined(t) } } diff --git a/packages/opencode/src/agent/agent.ts b/packages/opencode/src/agent/agent.ts index 5a629c73e12..30d09861447 100644 --- a/packages/opencode/src/agent/agent.ts +++ b/packages/opencode/src/agent/agent.ts @@ -14,7 +14,7 @@ import PROMPT_COMPACTION from "./prompt/compaction.txt" import PROMPT_EXPLORE from "./prompt/explore.txt" import PROMPT_SUMMARY from "./prompt/summary.txt" import PROMPT_TITLE from "./prompt/title.txt" -import { Permission as PermissionNext } from "@/permission/service" +import { Permission } from "@/permission" import { mergeDeep, pipe, sortBy, values } from "remeda" import { Global } from "@/global" import path from "path" @@ -32,7 +32,7 @@ export namespace Agent { topP: z.number().optional(), temperature: z.number().optional(), color: z.string().optional(), - permission: PermissionNext.Ruleset, + permission: Permission.Ruleset, model: z .object({ modelID: ModelID.zod, @@ -54,7 +54,7 @@ export namespace Agent { const skillDirs = await Skill.dirs() const whitelistedDirs = [Truncate.GLOB, ...skillDirs.map((dir) => path.join(dir, "*"))] - const defaults = PermissionNext.fromConfig({ + const defaults = Permission.fromConfig({ "*": "allow", doom_loop: "ask", external_directory: { @@ -72,16 +72,16 @@ export namespace Agent { "*.env.example": "allow", }, }) - const user = PermissionNext.fromConfig(cfg.permission ?? {}) + const user = Permission.fromConfig(cfg.permission ?? {}) const result: Record = { build: { name: "build", description: "The default agent. Executes tools based on configured permissions.", options: {}, - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ question: "allow", plan_enter: "allow", }), @@ -94,9 +94,9 @@ export namespace Agent { name: "plan", description: "Plan mode. Disallows all edit tools.", options: {}, - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ question: "allow", plan_exit: "allow", external_directory: { @@ -116,9 +116,9 @@ export namespace Agent { general: { name: "general", description: `General-purpose agent for researching complex questions and executing multi-step tasks. Use this agent to execute multiple units of work in parallel.`, - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ todoread: "deny", todowrite: "deny", }), @@ -130,9 +130,9 @@ export namespace Agent { }, explore: { name: "explore", - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ "*": "deny", grep: "allow", glob: "allow", @@ -161,9 +161,9 @@ export namespace Agent { native: true, hidden: true, prompt: PROMPT_COMPACTION, - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ "*": "deny", }), user, @@ -177,9 +177,9 @@ export namespace Agent { native: true, hidden: true, temperature: 0.5, - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ "*": "deny", }), user, @@ -192,9 +192,9 @@ export namespace Agent { options: {}, native: true, hidden: true, - permission: PermissionNext.merge( + permission: Permission.merge( defaults, - PermissionNext.fromConfig({ + Permission.fromConfig({ "*": "deny", }), user, @@ -213,7 +213,7 @@ export namespace Agent { item = result[key] = { name: key, mode: "all", - permission: PermissionNext.merge(defaults, user), + permission: Permission.merge(defaults, user), options: {}, native: false, } @@ -229,7 +229,7 @@ export namespace Agent { item.name = value.name ?? item.name item.steps = value.steps ?? item.steps item.options = mergeDeep(item.options, value.options ?? {}) - item.permission = PermissionNext.merge(item.permission, PermissionNext.fromConfig(value.permission ?? {})) + item.permission = Permission.merge(item.permission, Permission.fromConfig(value.permission ?? {})) } // Ensure Truncate.GLOB is allowed unless explicitly configured @@ -242,9 +242,9 @@ export namespace Agent { }) if (explicit) continue - result[name].permission = PermissionNext.merge( + result[name].permission = Permission.merge( result[name].permission, - PermissionNext.fromConfig({ external_directory: { [Truncate.GLOB]: "allow" } }), + Permission.fromConfig({ external_directory: { [Truncate.GLOB]: "allow" } }), ) } diff --git a/packages/opencode/src/auth/effect.ts b/packages/opencode/src/auth/effect.ts deleted file mode 100644 index 14a97080792..00000000000 --- a/packages/opencode/src/auth/effect.ts +++ /dev/null @@ -1,94 +0,0 @@ -import path from "path" -import { Effect, Layer, Record, Result, Schema, ServiceMap } from "effect" -import { Global } from "../global" -import { Filesystem } from "../util/filesystem" - -export const OAUTH_DUMMY_KEY = "opencode-oauth-dummy-key" - -export class Oauth extends Schema.Class("OAuth")({ - type: Schema.Literal("oauth"), - refresh: Schema.String, - access: Schema.String, - expires: Schema.Number, - accountId: Schema.optional(Schema.String), - enterpriseUrl: Schema.optional(Schema.String), -}) {} - -export class Api extends Schema.Class("ApiAuth")({ - type: Schema.Literal("api"), - key: Schema.String, -}) {} - -export class WellKnown extends Schema.Class("WellKnownAuth")({ - type: Schema.Literal("wellknown"), - key: Schema.String, - token: Schema.String, -}) {} - -export const Info = Schema.Union([Oauth, Api, WellKnown]) -export type Info = Schema.Schema.Type - -export class AuthError extends Schema.TaggedErrorClass()("AuthError", { - message: Schema.String, - cause: Schema.optional(Schema.Defect), -}) {} - -const file = path.join(Global.Path.data, "auth.json") - -const fail = (message: string) => (cause: unknown) => new AuthError({ message, cause }) - -export namespace Auth { - export interface Interface { - readonly get: (providerID: string) => Effect.Effect - readonly all: () => Effect.Effect, AuthError> - readonly set: (key: string, info: Info) => Effect.Effect - readonly remove: (key: string) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Auth") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const decode = Schema.decodeUnknownOption(Info) - - const all = Effect.fn("Auth.all")(() => - Effect.tryPromise({ - try: async () => { - const data = await Filesystem.readJson>(file).catch(() => ({})) - return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined)) - }, - catch: fail("Failed to read auth data"), - }), - ) - - const get = Effect.fn("Auth.get")(function* (providerID: string) { - return (yield* all())[providerID] - }) - - const set = Effect.fn("Auth.set")(function* (key: string, info: Info) { - const norm = key.replace(/\/+$/, "") - const data = yield* all() - if (norm !== key) delete data[key] - delete data[norm + "/"] - yield* Effect.tryPromise({ - try: () => Filesystem.writeJson(file, { ...data, [norm]: info }, 0o600), - catch: fail("Failed to write auth data"), - }) - }) - - const remove = Effect.fn("Auth.remove")(function* (key: string) { - const norm = key.replace(/\/+$/, "") - const data = yield* all() - delete data[key] - delete data[norm] - yield* Effect.tryPromise({ - try: () => Filesystem.writeJson(file, data, 0o600), - catch: fail("Failed to write auth data"), - }) - }) - - return Service.of({ get, all, set, remove }) - }), - ) -} diff --git a/packages/opencode/src/auth/index.ts b/packages/opencode/src/auth/index.ts index 411d9dccc07..c50040f1d77 100644 --- a/packages/opencode/src/auth/index.ts +++ b/packages/opencode/src/auth/index.ts @@ -1,43 +1,101 @@ -import { Effect } from "effect" -import z from "zod" -import { runtime } from "@/effect/runtime" -import * as S from "./effect" +import path from "path" +import { Effect, Layer, Record, Result, Schema, ServiceMap } from "effect" +import { makeRunPromise } from "@/effect/run-service" +import { zod } from "@/util/effect-zod" +import { Global } from "../global" +import { Filesystem } from "../util/filesystem" -export { OAUTH_DUMMY_KEY } from "./effect" +export const OAUTH_DUMMY_KEY = "opencode-oauth-dummy-key" -function runPromise(f: (service: S.Auth.Interface) => Effect.Effect) { - return runtime.runPromise(S.Auth.Service.use(f)) -} +const file = path.join(Global.Path.data, "auth.json") + +const fail = (message: string) => (cause: unknown) => new Auth.AuthError({ message, cause }) export namespace Auth { - export const Oauth = z - .object({ - type: z.literal("oauth"), - refresh: z.string(), - access: z.string(), - expires: z.number(), - accountId: z.string().optional(), - enterpriseUrl: z.string().optional(), - }) - .meta({ ref: "OAuth" }) - - export const Api = z - .object({ - type: z.literal("api"), - key: z.string(), - }) - .meta({ ref: "ApiAuth" }) - - export const WellKnown = z - .object({ - type: z.literal("wellknown"), - key: z.string(), - token: z.string(), - }) - .meta({ ref: "WellKnownAuth" }) - - export const Info = z.discriminatedUnion("type", [Oauth, Api, WellKnown]).meta({ ref: "Auth" }) - export type Info = z.infer + export class Oauth extends Schema.Class("OAuth")({ + type: Schema.Literal("oauth"), + refresh: Schema.String, + access: Schema.String, + expires: Schema.Number, + accountId: Schema.optional(Schema.String), + enterpriseUrl: Schema.optional(Schema.String), + }) {} + + export class Api extends Schema.Class("ApiAuth")({ + type: Schema.Literal("api"), + key: Schema.String, + }) {} + + export class WellKnown extends Schema.Class("WellKnownAuth")({ + type: Schema.Literal("wellknown"), + key: Schema.String, + token: Schema.String, + }) {} + + const _Info = Schema.Union([Oauth, Api, WellKnown]) + export const Info = Object.assign(_Info, { zod: zod(_Info) }) + export type Info = Schema.Schema.Type + + export class AuthError extends Schema.TaggedErrorClass()("AuthError", { + message: Schema.String, + cause: Schema.optional(Schema.Defect), + }) {} + + export interface Interface { + readonly get: (providerID: string) => Effect.Effect + readonly all: () => Effect.Effect, AuthError> + readonly set: (key: string, info: Info) => Effect.Effect + readonly remove: (key: string) => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/Auth") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const decode = Schema.decodeUnknownOption(Info) + + const all = Effect.fn("Auth.all")(() => + Effect.tryPromise({ + try: async () => { + const data = await Filesystem.readJson>(file).catch(() => ({})) + return Record.filterMap(data, (value) => Result.fromOption(decode(value), () => undefined)) + }, + catch: fail("Failed to read auth data"), + }), + ) + + const get = Effect.fn("Auth.get")(function* (providerID: string) { + return (yield* all())[providerID] + }) + + const set = Effect.fn("Auth.set")(function* (key: string, info: Info) { + const norm = key.replace(/\/+$/, "") + const data = yield* all() + if (norm !== key) delete data[key] + delete data[norm + "/"] + yield* Effect.tryPromise({ + try: () => Filesystem.writeJson(file, { ...data, [norm]: info }, 0o600), + catch: fail("Failed to write auth data"), + }) + }) + + const remove = Effect.fn("Auth.remove")(function* (key: string) { + const norm = key.replace(/\/+$/, "") + const data = yield* all() + delete data[key] + delete data[norm] + yield* Effect.tryPromise({ + try: () => Filesystem.writeJson(file, data, 0o600), + catch: fail("Failed to write auth data"), + }) + }) + + return Service.of({ get, all, set, remove }) + }), + ) + + const runPromise = makeRunPromise(Service, layer) export async function get(providerID: string) { return runPromise((service) => service.get(providerID)) diff --git a/packages/opencode/src/cli/cmd/account.ts b/packages/opencode/src/cli/cmd/account.ts index fb702c95a56..fe8747bce75 100644 --- a/packages/opencode/src/cli/cmd/account.ts +++ b/packages/opencode/src/cli/cmd/account.ts @@ -1,8 +1,7 @@ import { cmd } from "./cmd" import { Duration, Effect, Match, Option } from "effect" import { UI } from "../ui" -import { runtime } from "@/effect/runtime" -import { AccountID, Account, OrgID, PollExpired, type PollResult } from "@/account/effect" +import { AccountID, Account, OrgID, PollExpired, type PollResult } from "@/account" import { type AccountError } from "@/account/schema" import * as Prompt from "../effect/prompt" import open from "open" @@ -160,7 +159,7 @@ export const LoginCommand = cmd({ }), async handler(args) { UI.empty() - await runtime.runPromise(loginEffect(args.url)) + await Account.runPromise((_svc) => loginEffect(args.url)) }, }) @@ -174,7 +173,7 @@ export const LogoutCommand = cmd({ }), async handler(args) { UI.empty() - await runtime.runPromise(logoutEffect(args.email)) + await Account.runPromise((_svc) => logoutEffect(args.email)) }, }) @@ -183,7 +182,7 @@ export const SwitchCommand = cmd({ describe: false, async handler() { UI.empty() - await runtime.runPromise(switchEffect()) + await Account.runPromise((_svc) => switchEffect()) }, }) @@ -192,7 +191,7 @@ export const OrgsCommand = cmd({ describe: false, async handler() { UI.empty() - await runtime.runPromise(orgsEffect()) + await Account.runPromise((_svc) => orgsEffect()) }, }) diff --git a/packages/opencode/src/cli/cmd/debug/agent.ts b/packages/opencode/src/cli/cmd/debug/agent.ts index f33dcc55824..7f451e98c02 100644 --- a/packages/opencode/src/cli/cmd/debug/agent.ts +++ b/packages/opencode/src/cli/cmd/debug/agent.ts @@ -7,7 +7,7 @@ import type { MessageV2 } from "../../../session/message-v2" import { MessageID, PartID } from "../../../session/schema" import { ToolRegistry } from "../../../tool/registry" import { Instance } from "../../../project/instance" -import { PermissionNext } from "../../../permission" +import { Permission } from "../../../permission" import { iife } from "../../../util/iife" import { bootstrap } from "../../bootstrap" import { cmd } from "../cmd" @@ -75,7 +75,7 @@ async function getAvailableTools(agent: Agent.Info) { } async function resolveTools(agent: Agent.Info, availableTools: Awaited>) { - const disabled = PermissionNext.disabled( + const disabled = Permission.disabled( availableTools.map((tool) => tool.id), agent.permission, ) @@ -145,7 +145,7 @@ async function createToolContext(agent: Agent.Info) { } await Session.updateMessage(message) - const ruleset = PermissionNext.merge(agent.permission, session.permission ?? []) + const ruleset = Permission.merge(agent.permission, session.permission ?? []) return { sessionID: session.id, @@ -155,11 +155,11 @@ async function createToolContext(agent: Agent.Info) { abort: new AbortController().signal, messages: [], metadata: () => {}, - async ask(req: Omit) { + async ask(req: Omit) { for (const pattern of req.patterns) { - const rule = PermissionNext.evaluate(req.permission, pattern, ruleset) + const rule = Permission.evaluate(req.permission, pattern, ruleset) if (rule.action === "deny") { - throw new PermissionNext.DeniedError({ ruleset }) + throw new Permission.DeniedError({ ruleset }) } } }, diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 85b5689daa1..0aeb864e867 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -11,7 +11,7 @@ import { createOpencodeClient, type Message, type OpencodeClient, type ToolPart import { Server } from "../../server/server" import { Provider } from "../../provider/provider" import { Agent } from "../../agent/agent" -import { PermissionNext } from "../../permission" +import { Permission } from "../../permission" import { Tool } from "../../tool/tool" import { GlobTool } from "../../tool/glob" import { GrepTool } from "../../tool/grep" @@ -354,7 +354,7 @@ export const RunCommand = cmd({ process.exit(1) } - const rules: PermissionNext.Ruleset = [ + const rules: Permission.Ruleset = [ { permission: "question", action: "deny", diff --git a/packages/opencode/src/cli/cmd/tui/context/sync.tsx b/packages/opencode/src/cli/cmd/tui/context/sync.tsx index d0698773472..3b296a927aa 100644 --- a/packages/opencode/src/cli/cmd/tui/context/sync.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/sync.tsx @@ -22,7 +22,7 @@ import { createStore, produce, reconcile } from "solid-js/store" import { useSDK } from "@tui/context/sdk" import { Binary } from "@opencode-ai/util/binary" import { createSimpleContext } from "./helper" -import type { Snapshot } from "@/snapshot/service" +import type { Snapshot } from "@/snapshot" import { useExit } from "./exit" import { useArgs } from "./args" import { batch, onMount } from "solid-js" diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 47afdfd7d0f..c464fcb64ab 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -177,7 +177,7 @@ export namespace Config { log.debug("loaded custom config from OPENCODE_CONFIG_CONTENT") } - const active = Account.active() + const active = await Account.active() if (active?.active_org_id) { try { const [config, token] = await Promise.all([ diff --git a/packages/opencode/src/effect/instance-state.ts b/packages/opencode/src/effect/instance-state.ts new file mode 100644 index 00000000000..fe3339ee689 --- /dev/null +++ b/packages/opencode/src/effect/instance-state.ts @@ -0,0 +1,47 @@ +import { Effect, ScopedCache, Scope } from "effect" +import { Instance, type Shape } from "@/project/instance" +import { registerDisposer } from "./instance-registry" + +const TypeId = "~opencode/InstanceState" + +export interface InstanceState { + readonly [TypeId]: typeof TypeId + readonly cache: ScopedCache.ScopedCache +} + +export namespace InstanceState { + export const make = ( + init: (ctx: Shape) => Effect.Effect, + ): Effect.Effect>, never, R | Scope.Scope> => + Effect.gen(function* () { + const cache = yield* ScopedCache.make({ + capacity: Number.POSITIVE_INFINITY, + lookup: () => init(Instance.current), + }) + + const off = registerDisposer((directory) => Effect.runPromise(ScopedCache.invalidate(cache, directory))) + yield* Effect.addFinalizer(() => Effect.sync(off)) + + return { + [TypeId]: TypeId, + cache, + } + }) + + export const get = (self: InstanceState) => + Effect.suspend(() => ScopedCache.get(self.cache, Instance.directory)) + + export const use = (self: InstanceState, select: (value: A) => B) => + Effect.map(get(self), select) + + export const useEffect = ( + self: InstanceState, + select: (value: A) => Effect.Effect, + ) => Effect.flatMap(get(self), select) + + export const has = (self: InstanceState) => + Effect.suspend(() => ScopedCache.has(self.cache, Instance.directory)) + + export const invalidate = (self: InstanceState) => + Effect.suspend(() => ScopedCache.invalidate(self.cache, Instance.directory)) +} diff --git a/packages/opencode/src/effect/instances.ts b/packages/opencode/src/effect/instances.ts deleted file mode 100644 index 6fcfddb24f5..00000000000 --- a/packages/opencode/src/effect/instances.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Effect, Layer, LayerMap, ServiceMap } from "effect" -import { File } from "@/file/service" -import { FileTime } from "@/file/time-service" -import { FileWatcher } from "@/file/watcher" -import { Format } from "@/format/service" -import { Permission } from "@/permission/service" -import { Instance } from "@/project/instance" -import { Vcs } from "@/project/vcs" -import { ProviderAuth } from "@/provider/auth-service" -import { Question } from "@/question/service" -import { Skill } from "@/skill/service" -import { Snapshot } from "@/snapshot/service" -import { InstanceContext } from "./instance-context" -import { registerDisposer } from "./instance-registry" - -export { InstanceContext } from "./instance-context" - -export type InstanceServices = - | Question.Service - | Permission.Service - | ProviderAuth.Service - | FileWatcher.Service - | Vcs.Service - | FileTime.Service - | Format.Service - | File.Service - | Skill.Service - | Snapshot.Service - -// NOTE: LayerMap only passes the key (directory string) to lookup, but we need -// the full instance context (directory, worktree, project). We read from the -// legacy Instance ALS here, which is safe because lookup is only triggered via -// runPromiseInstance -> Instances.get, which always runs inside Instance.provide. -// This should go away once the old Instance type is removed and lookup can load -// the full context directly. -function lookup(_key: string) { - const ctx = Layer.sync(InstanceContext, () => InstanceContext.of(Instance.current)) - return Layer.mergeAll( - Question.layer, - Permission.layer, - ProviderAuth.defaultLayer, - FileWatcher.layer, - Vcs.layer, - FileTime.layer, - Format.layer, - File.layer, - Skill.defaultLayer, - Snapshot.defaultLayer, - ).pipe(Layer.provide(ctx)) -} - -export class Instances extends ServiceMap.Service>()( - "opencode/Instances", -) { - static readonly layer = Layer.effect( - Instances, - Effect.gen(function* () { - const layerMap = yield* LayerMap.make(lookup, { idleTimeToLive: Infinity }) - const unregister = registerDisposer((directory) => Effect.runPromise(layerMap.invalidate(directory))) - yield* Effect.addFinalizer(() => Effect.sync(unregister)) - return Instances.of(layerMap) - }), - ) - - static get(directory: string): Layer.Layer { - return Layer.unwrap(Instances.use((map) => Effect.succeed(map.get(directory)))) - } -} diff --git a/packages/opencode/src/effect/run-service.ts b/packages/opencode/src/effect/run-service.ts new file mode 100644 index 00000000000..226c276ead1 --- /dev/null +++ b/packages/opencode/src/effect/run-service.ts @@ -0,0 +1,13 @@ +import { Effect, Layer, ManagedRuntime } from "effect" +import * as ServiceMap from "effect/ServiceMap" + +export const memoMap = Layer.makeMemoMapUnsafe() + +export function makeRunPromise(service: ServiceMap.Service, layer: Layer.Layer) { + let rt: ManagedRuntime.ManagedRuntime | undefined + + return (fn: (svc: S) => Effect.Effect, options?: Effect.RunOptions) => { + rt ??= ManagedRuntime.make(layer, { memoMap }) + return rt.runPromise(service.use(fn), options) + } +} diff --git a/packages/opencode/src/effect/runtime.ts b/packages/opencode/src/effect/runtime.ts deleted file mode 100644 index e6f1f326262..00000000000 --- a/packages/opencode/src/effect/runtime.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Effect, Layer, ManagedRuntime } from "effect" -import { Account } from "@/account/effect" -import { Auth } from "@/auth/effect" -import { Instances } from "@/effect/instances" -import type { InstanceServices } from "@/effect/instances" -import { Installation } from "@/installation" -import { Truncate } from "@/tool/truncate-effect" -import { Instance } from "@/project/instance" - -export const runtime = ManagedRuntime.make( - Layer.mergeAll( - Account.defaultLayer, // - Installation.defaultLayer, - Truncate.defaultLayer, - Instances.layer, - ).pipe(Layer.provideMerge(Auth.layer)), -) - -export function runPromiseInstance(effect: Effect.Effect) { - return runtime.runPromise(effect.pipe(Effect.provide(Instances.get(Instance.directory)))) -} - -export function disposeRuntime() { - return runtime.dispose() -} diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts index 35a5b5e204e..23c77e7bf71 100644 --- a/packages/opencode/src/file/index.ts +++ b/packages/opencode/src/file/index.ts @@ -1,40 +1,712 @@ -import { runPromiseInstance } from "@/effect/runtime" -import { File as S } from "./service" +import { BusEvent } from "@/bus/bus-event" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { git } from "@/util/git" +import { Effect, Fiber, Layer, Scope, ServiceMap } from "effect" +import { formatPatch, structuredPatch } from "diff" +import fs from "fs" +import fuzzysort from "fuzzysort" +import ignore from "ignore" +import path from "path" +import z from "zod" +import { Global } from "../global" +import { Instance } from "../project/instance" +import { Filesystem } from "../util/filesystem" +import { Log } from "../util/log" +import { Protected } from "./protected" +import { Ripgrep } from "./ripgrep" export namespace File { - export const Info = S.Info - export type Info = S.Info + export const Info = z + .object({ + path: z.string(), + added: z.number().int(), + removed: z.number().int(), + status: z.enum(["added", "deleted", "modified"]), + }) + .meta({ + ref: "File", + }) - export const Node = S.Node - export type Node = S.Node + export type Info = z.infer - export const Content = S.Content - export type Content = S.Content + export const Node = z + .object({ + name: z.string(), + path: z.string(), + absolute: z.string(), + type: z.enum(["file", "directory"]), + ignored: z.boolean(), + }) + .meta({ + ref: "FileNode", + }) + export type Node = z.infer - export const Event = S.Event + export const Content = z + .object({ + type: z.enum(["text", "binary"]), + content: z.string(), + diff: z.string().optional(), + patch: z + .object({ + oldFileName: z.string(), + newFileName: z.string(), + oldHeader: z.string().optional(), + newHeader: z.string().optional(), + hunks: z.array( + z.object({ + oldStart: z.number(), + oldLines: z.number(), + newStart: z.number(), + newLines: z.number(), + lines: z.array(z.string()), + }), + ), + index: z.string().optional(), + }) + .optional(), + encoding: z.literal("base64").optional(), + mimeType: z.string().optional(), + }) + .meta({ + ref: "FileContent", + }) + export type Content = z.infer - export type Interface = S.Interface + export const Event = { + Edited: BusEvent.define( + "file.edited", + z.object({ + file: z.string(), + }), + ), + } + + const log = Log.create({ service: "file" }) + + const binary = new Set([ + "exe", + "dll", + "pdb", + "bin", + "so", + "dylib", + "o", + "a", + "lib", + "wav", + "mp3", + "ogg", + "oga", + "ogv", + "ogx", + "flac", + "aac", + "wma", + "m4a", + "weba", + "mp4", + "avi", + "mov", + "wmv", + "flv", + "webm", + "mkv", + "zip", + "tar", + "gz", + "gzip", + "bz", + "bz2", + "bzip", + "bzip2", + "7z", + "rar", + "xz", + "lz", + "z", + "pdf", + "doc", + "docx", + "ppt", + "pptx", + "xls", + "xlsx", + "dmg", + "iso", + "img", + "vmdk", + "ttf", + "otf", + "woff", + "woff2", + "eot", + "sqlite", + "db", + "mdb", + "apk", + "ipa", + "aab", + "xapk", + "app", + "pkg", + "deb", + "rpm", + "snap", + "flatpak", + "appimage", + "msi", + "msp", + "jar", + "war", + "ear", + "class", + "kotlin_module", + "dex", + "vdex", + "odex", + "oat", + "art", + "wasm", + "wat", + "bc", + "ll", + "s", + "ko", + "sys", + "drv", + "efi", + "rom", + "com", + ]) + + const image = new Set([ + "png", + "jpg", + "jpeg", + "gif", + "bmp", + "webp", + "ico", + "tif", + "tiff", + "svg", + "svgz", + "avif", + "apng", + "jxl", + "heic", + "heif", + "raw", + "cr2", + "nef", + "arw", + "dng", + "orf", + "raf", + "pef", + "x3f", + ]) + + const text = new Set([ + "ts", + "tsx", + "mts", + "cts", + "mtsx", + "ctsx", + "js", + "jsx", + "mjs", + "cjs", + "sh", + "bash", + "zsh", + "fish", + "ps1", + "psm1", + "cmd", + "bat", + "json", + "jsonc", + "json5", + "yaml", + "yml", + "toml", + "md", + "mdx", + "txt", + "xml", + "html", + "htm", + "css", + "scss", + "sass", + "less", + "graphql", + "gql", + "sql", + "ini", + "cfg", + "conf", + "env", + ]) + + const textName = new Set([ + "dockerfile", + "makefile", + ".gitignore", + ".gitattributes", + ".editorconfig", + ".npmrc", + ".nvmrc", + ".prettierrc", + ".eslintrc", + ]) + + const mime: Record = { + png: "image/png", + jpg: "image/jpeg", + jpeg: "image/jpeg", + gif: "image/gif", + bmp: "image/bmp", + webp: "image/webp", + ico: "image/x-icon", + tif: "image/tiff", + tiff: "image/tiff", + svg: "image/svg+xml", + svgz: "image/svg+xml", + avif: "image/avif", + apng: "image/apng", + jxl: "image/jxl", + heic: "image/heic", + heif: "image/heif", + } + + type Entry = { files: string[]; dirs: string[] } + + const ext = (file: string) => path.extname(file).toLowerCase().slice(1) + const name = (file: string) => path.basename(file).toLowerCase() + const isImageByExtension = (file: string) => image.has(ext(file)) + const isTextByExtension = (file: string) => text.has(ext(file)) + const isTextByName = (file: string) => textName.has(name(file)) + const isBinaryByExtension = (file: string) => binary.has(ext(file)) + const isImage = (mimeType: string) => mimeType.startsWith("image/") + const getImageMimeType = (file: string) => mime[ext(file)] || "image/" + ext(file) + + function shouldEncode(mimeType: string) { + const type = mimeType.toLowerCase() + log.debug("shouldEncode", { type }) + if (!type) return false + if (type.startsWith("text/")) return false + if (type.includes("charset=")) return false + const top = type.split("/", 2)[0] + return ["image", "audio", "video", "font", "model", "multipart"].includes(top) + } + + const hidden = (item: string) => { + const normalized = item.replaceAll("\\", "/").replace(/\/+$/, "") + return normalized.split("/").some((part) => part.startsWith(".") && part.length > 1) + } + + const sortHiddenLast = (items: string[], prefer: boolean) => { + if (prefer) return items + const visible: string[] = [] + const hiddenItems: string[] = [] + for (const item of items) { + if (hidden(item)) hiddenItems.push(item) + else visible.push(item) + } + return [...visible, ...hiddenItems] + } + + interface State { + cache: Entry + fiber: Fiber.Fiber | undefined + } + + export interface Interface { + readonly init: () => Effect.Effect + readonly status: () => Effect.Effect + readonly read: (file: string) => Effect.Effect + readonly list: (dir?: string) => Effect.Effect + readonly search: (input: { + query: string + limit?: number + dirs?: boolean + type?: "file" | "directory" + }) => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/File") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const state = yield* InstanceState.make( + Effect.fn("File.state")(() => + Effect.succeed({ + cache: { files: [], dirs: [] } as Entry, + fiber: undefined as Fiber.Fiber | undefined, + }), + ), + ) + + const scan = Effect.fn("File.scan")(function* () { + if (Instance.directory === path.parse(Instance.directory).root) return + const isGlobalHome = Instance.directory === Global.Path.home && Instance.project.id === "global" + const next: Entry = { files: [], dirs: [] } + + yield* Effect.promise(async () => { + if (isGlobalHome) { + const dirs = new Set() + const protectedNames = Protected.names() + const ignoreNested = new Set(["node_modules", "dist", "build", "target", "vendor"]) + const shouldIgnoreName = (name: string) => name.startsWith(".") || protectedNames.has(name) + const shouldIgnoreNested = (name: string) => name.startsWith(".") || ignoreNested.has(name) + const top = await fs.promises + .readdir(Instance.directory, { withFileTypes: true }) + .catch(() => [] as fs.Dirent[]) + + for (const entry of top) { + if (!entry.isDirectory()) continue + if (shouldIgnoreName(entry.name)) continue + dirs.add(entry.name + "/") + + const base = path.join(Instance.directory, entry.name) + const children = await fs.promises.readdir(base, { withFileTypes: true }).catch(() => [] as fs.Dirent[]) + for (const child of children) { + if (!child.isDirectory()) continue + if (shouldIgnoreNested(child.name)) continue + dirs.add(entry.name + "/" + child.name + "/") + } + } + + next.dirs = Array.from(dirs).toSorted() + } else { + const seen = new Set() + for await (const file of Ripgrep.files({ cwd: Instance.directory })) { + next.files.push(file) + let current = file + while (true) { + const dir = path.dirname(current) + if (dir === ".") break + if (dir === current) break + current = dir + if (seen.has(dir)) continue + seen.add(dir) + next.dirs.push(dir + "/") + } + } + } + }) + + const s = yield* InstanceState.get(state) + s.cache = next + }) + + const scope = yield* Scope.Scope + + const ensure = Effect.fn("File.ensure")(function* () { + const s = yield* InstanceState.get(state) + if (!s.fiber) + s.fiber = yield* scan().pipe( + Effect.catchCause(() => Effect.void), + Effect.ensuring( + Effect.sync(() => { + s.fiber = undefined + }), + ), + Effect.forkIn(scope), + ) + yield* Fiber.join(s.fiber) + }) + + const init = Effect.fn("File.init")(function* () { + yield* ensure() + }) + + const status = Effect.fn("File.status")(function* () { + if (Instance.project.vcs !== "git") return [] + + return yield* Effect.promise(async () => { + const diffOutput = ( + await git(["-c", "core.fsmonitor=false", "-c", "core.quotepath=false", "diff", "--numstat", "HEAD"], { + cwd: Instance.directory, + }) + ).text() + + const changed: File.Info[] = [] + + if (diffOutput.trim()) { + for (const line of diffOutput.trim().split("\n")) { + const [added, removed, file] = line.split("\t") + changed.push({ + path: file, + added: added === "-" ? 0 : parseInt(added, 10), + removed: removed === "-" ? 0 : parseInt(removed, 10), + status: "modified", + }) + } + } + + const untrackedOutput = ( + await git( + [ + "-c", + "core.fsmonitor=false", + "-c", + "core.quotepath=false", + "ls-files", + "--others", + "--exclude-standard", + ], + { + cwd: Instance.directory, + }, + ) + ).text() + + if (untrackedOutput.trim()) { + for (const file of untrackedOutput.trim().split("\n")) { + try { + const content = await Filesystem.readText(path.join(Instance.directory, file)) + changed.push({ + path: file, + added: content.split("\n").length, + removed: 0, + status: "added", + }) + } catch { + continue + } + } + } + + const deletedOutput = ( + await git( + [ + "-c", + "core.fsmonitor=false", + "-c", + "core.quotepath=false", + "diff", + "--name-only", + "--diff-filter=D", + "HEAD", + ], + { + cwd: Instance.directory, + }, + ) + ).text() + + if (deletedOutput.trim()) { + for (const file of deletedOutput.trim().split("\n")) { + changed.push({ + path: file, + added: 0, + removed: 0, + status: "deleted", + }) + } + } + + return changed.map((item) => { + const full = path.isAbsolute(item.path) ? item.path : path.join(Instance.directory, item.path) + return { + ...item, + path: path.relative(Instance.directory, full), + } + }) + }) + }) + + const read = Effect.fn("File.read")(function* (file: string) { + return yield* Effect.promise(async (): Promise => { + using _ = log.time("read", { file }) + const full = path.join(Instance.directory, file) + + if (!Instance.containsPath(full)) { + throw new Error("Access denied: path escapes project directory") + } + + if (isImageByExtension(file)) { + if (await Filesystem.exists(full)) { + const buffer = await Filesystem.readBytes(full).catch(() => Buffer.from([])) + return { + type: "text", + content: buffer.toString("base64"), + mimeType: getImageMimeType(file), + encoding: "base64", + } + } + return { type: "text", content: "" } + } + + const knownText = isTextByExtension(file) || isTextByName(file) + + if (isBinaryByExtension(file) && !knownText) { + return { type: "binary", content: "" } + } + + if (!(await Filesystem.exists(full))) { + return { type: "text", content: "" } + } + + const mimeType = Filesystem.mimeType(full) + const encode = knownText ? false : shouldEncode(mimeType) + + if (encode && !isImage(mimeType)) { + return { type: "binary", content: "", mimeType } + } + + if (encode) { + const buffer = await Filesystem.readBytes(full).catch(() => Buffer.from([])) + return { + type: "text", + content: buffer.toString("base64"), + mimeType, + encoding: "base64", + } + } + + const content = (await Filesystem.readText(full).catch(() => "")).trim() + + if (Instance.project.vcs === "git") { + let diff = ( + await git(["-c", "core.fsmonitor=false", "diff", "--", file], { cwd: Instance.directory }) + ).text() + if (!diff.trim()) { + diff = ( + await git(["-c", "core.fsmonitor=false", "diff", "--staged", "--", file], { + cwd: Instance.directory, + }) + ).text() + } + if (diff.trim()) { + const original = (await git(["show", `HEAD:${file}`], { cwd: Instance.directory })).text() + const patch = structuredPatch(file, file, original, content, "old", "new", { + context: Infinity, + ignoreWhitespace: true, + }) + return { + type: "text", + content, + patch, + diff: formatPatch(patch), + } + } + } + + return { type: "text", content } + }) + }) + + const list = Effect.fn("File.list")(function* (dir?: string) { + return yield* Effect.promise(async () => { + const exclude = [".git", ".DS_Store"] + let ignored = (_: string) => false + if (Instance.project.vcs === "git") { + const ig = ignore() + const gitignore = path.join(Instance.project.worktree, ".gitignore") + if (await Filesystem.exists(gitignore)) { + ig.add(await Filesystem.readText(gitignore)) + } + const ignoreFile = path.join(Instance.project.worktree, ".ignore") + if (await Filesystem.exists(ignoreFile)) { + ig.add(await Filesystem.readText(ignoreFile)) + } + ignored = ig.ignores.bind(ig) + } + + const resolved = dir ? path.join(Instance.directory, dir) : Instance.directory + if (!Instance.containsPath(resolved)) { + throw new Error("Access denied: path escapes project directory") + } + + const nodes: File.Node[] = [] + for (const entry of await fs.promises.readdir(resolved, { withFileTypes: true }).catch(() => [])) { + if (exclude.includes(entry.name)) continue + const absolute = path.join(resolved, entry.name) + const file = path.relative(Instance.directory, absolute) + const type = entry.isDirectory() ? "directory" : "file" + nodes.push({ + name: entry.name, + path: file, + absolute, + type, + ignored: ignored(type === "directory" ? file + "/" : file), + }) + } + + return nodes.sort((a, b) => { + if (a.type !== b.type) return a.type === "directory" ? -1 : 1 + return a.name.localeCompare(b.name) + }) + }) + }) + + const search = Effect.fn("File.search")(function* (input: { + query: string + limit?: number + dirs?: boolean + type?: "file" | "directory" + }) { + yield* ensure() + const { cache } = yield* InstanceState.get(state) + + return yield* Effect.promise(async () => { + const query = input.query.trim() + const limit = input.limit ?? 100 + const kind = input.type ?? (input.dirs === false ? "file" : "all") + log.info("search", { query, kind }) + + const result = cache + const preferHidden = query.startsWith(".") || query.includes("/.") + + if (!query) { + if (kind === "file") return result.files.slice(0, limit) + return sortHiddenLast(result.dirs.toSorted(), preferHidden).slice(0, limit) + } + + const items = + kind === "file" ? result.files : kind === "directory" ? result.dirs : [...result.files, ...result.dirs] + + const searchLimit = kind === "directory" && !preferHidden ? limit * 20 : limit + const sorted = fuzzysort.go(query, items, { limit: searchLimit }).map((item) => item.target) + const output = kind === "directory" ? sortHiddenLast(sorted, preferHidden).slice(0, limit) : sorted + + log.info("search", { query, kind, results: output.length }) + return output + }) + }) + + log.info("init") + return Service.of({ init, status, read, list, search }) + }), + ) - export const Service = S.Service - export const layer = S.layer + const runPromise = makeRunPromise(Service, layer) export function init() { - return runPromiseInstance(S.Service.use((svc) => svc.init())) + return runPromise((svc) => svc.init()) } export async function status() { - return runPromiseInstance(S.Service.use((svc) => svc.status())) + return runPromise((svc) => svc.status()) } export async function read(file: string): Promise { - return runPromiseInstance(S.Service.use((svc) => svc.read(file))) + return runPromise((svc) => svc.read(file)) } export async function list(dir?: string) { - return runPromiseInstance(S.Service.use((svc) => svc.list(dir))) + return runPromise((svc) => svc.list(dir)) } export async function search(input: { query: string; limit?: number; dirs?: boolean; type?: "file" | "directory" }) { - return runPromiseInstance(S.Service.use((svc) => svc.search(input))) + return runPromise((svc) => svc.search(input)) } } diff --git a/packages/opencode/src/file/service.ts b/packages/opencode/src/file/service.ts deleted file mode 100644 index d4f6b347f81..00000000000 --- a/packages/opencode/src/file/service.ts +++ /dev/null @@ -1,674 +0,0 @@ -import { BusEvent } from "@/bus/bus-event" -import { InstanceContext } from "@/effect/instance-context" -import { git } from "@/util/git" -import { Effect, Fiber, Layer, Scope, ServiceMap } from "effect" -import { formatPatch, structuredPatch } from "diff" -import fs from "fs" -import fuzzysort from "fuzzysort" -import ignore from "ignore" -import path from "path" -import z from "zod" -import { Global } from "../global" -import { Instance } from "../project/instance" -import { Filesystem } from "../util/filesystem" -import { Log } from "../util/log" -import { Protected } from "./protected" -import { Ripgrep } from "./ripgrep" - -export namespace File { - export const Info = z - .object({ - path: z.string(), - added: z.number().int(), - removed: z.number().int(), - status: z.enum(["added", "deleted", "modified"]), - }) - .meta({ - ref: "File", - }) - - export type Info = z.infer - - export const Node = z - .object({ - name: z.string(), - path: z.string(), - absolute: z.string(), - type: z.enum(["file", "directory"]), - ignored: z.boolean(), - }) - .meta({ - ref: "FileNode", - }) - export type Node = z.infer - - export const Content = z - .object({ - type: z.enum(["text", "binary"]), - content: z.string(), - diff: z.string().optional(), - patch: z - .object({ - oldFileName: z.string(), - newFileName: z.string(), - oldHeader: z.string().optional(), - newHeader: z.string().optional(), - hunks: z.array( - z.object({ - oldStart: z.number(), - oldLines: z.number(), - newStart: z.number(), - newLines: z.number(), - lines: z.array(z.string()), - }), - ), - index: z.string().optional(), - }) - .optional(), - encoding: z.literal("base64").optional(), - mimeType: z.string().optional(), - }) - .meta({ - ref: "FileContent", - }) - export type Content = z.infer - - export const Event = { - Edited: BusEvent.define( - "file.edited", - z.object({ - file: z.string(), - }), - ), - } - - const log = Log.create({ service: "file" }) - - const binary = new Set([ - "exe", - "dll", - "pdb", - "bin", - "so", - "dylib", - "o", - "a", - "lib", - "wav", - "mp3", - "ogg", - "oga", - "ogv", - "ogx", - "flac", - "aac", - "wma", - "m4a", - "weba", - "mp4", - "avi", - "mov", - "wmv", - "flv", - "webm", - "mkv", - "zip", - "tar", - "gz", - "gzip", - "bz", - "bz2", - "bzip", - "bzip2", - "7z", - "rar", - "xz", - "lz", - "z", - "pdf", - "doc", - "docx", - "ppt", - "pptx", - "xls", - "xlsx", - "dmg", - "iso", - "img", - "vmdk", - "ttf", - "otf", - "woff", - "woff2", - "eot", - "sqlite", - "db", - "mdb", - "apk", - "ipa", - "aab", - "xapk", - "app", - "pkg", - "deb", - "rpm", - "snap", - "flatpak", - "appimage", - "msi", - "msp", - "jar", - "war", - "ear", - "class", - "kotlin_module", - "dex", - "vdex", - "odex", - "oat", - "art", - "wasm", - "wat", - "bc", - "ll", - "s", - "ko", - "sys", - "drv", - "efi", - "rom", - "com", - "cmd", - "ps1", - "sh", - "bash", - "zsh", - "fish", - ]) - - const image = new Set([ - "png", - "jpg", - "jpeg", - "gif", - "bmp", - "webp", - "ico", - "tif", - "tiff", - "svg", - "svgz", - "avif", - "apng", - "jxl", - "heic", - "heif", - "raw", - "cr2", - "nef", - "arw", - "dng", - "orf", - "raf", - "pef", - "x3f", - ]) - - const text = new Set([ - "ts", - "tsx", - "mts", - "cts", - "mtsx", - "ctsx", - "js", - "jsx", - "mjs", - "cjs", - "sh", - "bash", - "zsh", - "fish", - "ps1", - "psm1", - "cmd", - "bat", - "json", - "jsonc", - "json5", - "yaml", - "yml", - "toml", - "md", - "mdx", - "txt", - "xml", - "html", - "htm", - "css", - "scss", - "sass", - "less", - "graphql", - "gql", - "sql", - "ini", - "cfg", - "conf", - "env", - ]) - - const textName = new Set([ - "dockerfile", - "makefile", - ".gitignore", - ".gitattributes", - ".editorconfig", - ".npmrc", - ".nvmrc", - ".prettierrc", - ".eslintrc", - ]) - - const mime: Record = { - png: "image/png", - jpg: "image/jpeg", - jpeg: "image/jpeg", - gif: "image/gif", - bmp: "image/bmp", - webp: "image/webp", - ico: "image/x-icon", - tif: "image/tiff", - tiff: "image/tiff", - svg: "image/svg+xml", - svgz: "image/svg+xml", - avif: "image/avif", - apng: "image/apng", - jxl: "image/jxl", - heic: "image/heic", - heif: "image/heif", - } - - type Entry = { files: string[]; dirs: string[] } - - const ext = (file: string) => path.extname(file).toLowerCase().slice(1) - const name = (file: string) => path.basename(file).toLowerCase() - const isImageByExtension = (file: string) => image.has(ext(file)) - const isTextByExtension = (file: string) => text.has(ext(file)) - const isTextByName = (file: string) => textName.has(name(file)) - const isBinaryByExtension = (file: string) => binary.has(ext(file)) - const isImage = (mimeType: string) => mimeType.startsWith("image/") - const getImageMimeType = (file: string) => mime[ext(file)] || "image/" + ext(file) - - function shouldEncode(mimeType: string) { - const type = mimeType.toLowerCase() - log.info("shouldEncode", { type }) - if (!type) return false - if (type.startsWith("text/")) return false - if (type.includes("charset=")) return false - const top = type.split("/", 2)[0] - return ["image", "audio", "video", "font", "model", "multipart"].includes(top) - } - - const hidden = (item: string) => { - const normalized = item.replaceAll("\\", "/").replace(/\/+$/, "") - return normalized.split("/").some((part) => part.startsWith(".") && part.length > 1) - } - - const sortHiddenLast = (items: string[], prefer: boolean) => { - if (prefer) return items - const visible: string[] = [] - const hiddenItems: string[] = [] - for (const item of items) { - if (hidden(item)) hiddenItems.push(item) - else visible.push(item) - } - return [...visible, ...hiddenItems] - } - - export interface Interface { - readonly init: () => Effect.Effect - readonly status: () => Effect.Effect - readonly read: (file: string) => Effect.Effect - readonly list: (dir?: string) => Effect.Effect - readonly search: (input: { - query: string - limit?: number - dirs?: boolean - type?: "file" | "directory" - }) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/File") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const instance = yield* InstanceContext - let cache: Entry = { files: [], dirs: [] } - const isGlobalHome = instance.directory === Global.Path.home && instance.project.id === "global" - - const scan = Effect.fn("File.scan")(function* () { - if (instance.directory === path.parse(instance.directory).root) return - const next: Entry = { files: [], dirs: [] } - - yield* Effect.promise(async () => { - if (isGlobalHome) { - const dirs = new Set() - const protectedNames = Protected.names() - const ignoreNested = new Set(["node_modules", "dist", "build", "target", "vendor"]) - const shouldIgnoreName = (name: string) => name.startsWith(".") || protectedNames.has(name) - const shouldIgnoreNested = (name: string) => name.startsWith(".") || ignoreNested.has(name) - const top = await fs.promises - .readdir(instance.directory, { withFileTypes: true }) - .catch(() => [] as fs.Dirent[]) - - for (const entry of top) { - if (!entry.isDirectory()) continue - if (shouldIgnoreName(entry.name)) continue - dirs.add(entry.name + "/") - - const base = path.join(instance.directory, entry.name) - const children = await fs.promises.readdir(base, { withFileTypes: true }).catch(() => [] as fs.Dirent[]) - for (const child of children) { - if (!child.isDirectory()) continue - if (shouldIgnoreNested(child.name)) continue - dirs.add(entry.name + "/" + child.name + "/") - } - } - - next.dirs = Array.from(dirs).toSorted() - } else { - const seen = new Set() - for await (const file of Ripgrep.files({ cwd: instance.directory })) { - next.files.push(file) - let current = file - while (true) { - const dir = path.dirname(current) - if (dir === ".") break - if (dir === current) break - current = dir - if (seen.has(dir)) continue - seen.add(dir) - next.dirs.push(dir + "/") - } - } - } - }) - - cache = next - }) - - const getFiles = () => cache - - const scope = yield* Scope.Scope - let fiber: Fiber.Fiber | undefined - - const init = Effect.fn("File.init")(function* () { - if (!fiber) { - fiber = yield* scan().pipe( - Effect.catchCause(() => Effect.void), - Effect.forkIn(scope), - ) - } - yield* Fiber.join(fiber) - }) - - const status = Effect.fn("File.status")(function* () { - if (instance.project.vcs !== "git") return [] - - return yield* Effect.promise(async () => { - const diffOutput = ( - await git(["-c", "core.fsmonitor=false", "-c", "core.quotepath=false", "diff", "--numstat", "HEAD"], { - cwd: instance.directory, - }) - ).text() - - const changed: File.Info[] = [] - - if (diffOutput.trim()) { - for (const line of diffOutput.trim().split("\n")) { - const [added, removed, file] = line.split("\t") - changed.push({ - path: file, - added: added === "-" ? 0 : parseInt(added, 10), - removed: removed === "-" ? 0 : parseInt(removed, 10), - status: "modified", - }) - } - } - - const untrackedOutput = ( - await git( - [ - "-c", - "core.fsmonitor=false", - "-c", - "core.quotepath=false", - "ls-files", - "--others", - "--exclude-standard", - ], - { - cwd: instance.directory, - }, - ) - ).text() - - if (untrackedOutput.trim()) { - for (const file of untrackedOutput.trim().split("\n")) { - try { - const content = await Filesystem.readText(path.join(instance.directory, file)) - changed.push({ - path: file, - added: content.split("\n").length, - removed: 0, - status: "added", - }) - } catch { - continue - } - } - } - - const deletedOutput = ( - await git( - [ - "-c", - "core.fsmonitor=false", - "-c", - "core.quotepath=false", - "diff", - "--name-only", - "--diff-filter=D", - "HEAD", - ], - { - cwd: instance.directory, - }, - ) - ).text() - - if (deletedOutput.trim()) { - for (const file of deletedOutput.trim().split("\n")) { - changed.push({ - path: file, - added: 0, - removed: 0, - status: "deleted", - }) - } - } - - return changed.map((item) => { - const full = path.isAbsolute(item.path) ? item.path : path.join(instance.directory, item.path) - return { - ...item, - path: path.relative(instance.directory, full), - } - }) - }) - }) - - const read = Effect.fn("File.read")(function* (file: string) { - return yield* Effect.promise(async (): Promise => { - using _ = log.time("read", { file }) - const full = path.join(instance.directory, file) - - if (!Instance.containsPath(full)) { - throw new Error("Access denied: path escapes project directory") - } - - if (isImageByExtension(file)) { - if (await Filesystem.exists(full)) { - const buffer = await Filesystem.readBytes(full).catch(() => Buffer.from([])) - return { - type: "text", - content: buffer.toString("base64"), - mimeType: getImageMimeType(file), - encoding: "base64", - } - } - return { type: "text", content: "" } - } - - const knownText = isTextByExtension(file) || isTextByName(file) - - if (isBinaryByExtension(file) && !knownText) { - return { type: "binary", content: "" } - } - - if (!(await Filesystem.exists(full))) { - return { type: "text", content: "" } - } - - const mimeType = Filesystem.mimeType(full) - const encode = knownText ? false : shouldEncode(mimeType) - - if (encode && !isImage(mimeType)) { - return { type: "binary", content: "", mimeType } - } - - if (encode) { - const buffer = await Filesystem.readBytes(full).catch(() => Buffer.from([])) - return { - type: "text", - content: buffer.toString("base64"), - mimeType, - encoding: "base64", - } - } - - const content = (await Filesystem.readText(full).catch(() => "")).trim() - - if (instance.project.vcs === "git") { - let diff = ( - await git(["-c", "core.fsmonitor=false", "diff", "--", file], { cwd: instance.directory }) - ).text() - if (!diff.trim()) { - diff = ( - await git(["-c", "core.fsmonitor=false", "diff", "--staged", "--", file], { - cwd: instance.directory, - }) - ).text() - } - if (diff.trim()) { - const original = (await git(["show", `HEAD:${file}`], { cwd: instance.directory })).text() - const patch = structuredPatch(file, file, original, content, "old", "new", { - context: Infinity, - ignoreWhitespace: true, - }) - return { - type: "text", - content, - patch, - diff: formatPatch(patch), - } - } - } - - return { type: "text", content } - }) - }) - - const list = Effect.fn("File.list")(function* (dir?: string) { - return yield* Effect.promise(async () => { - const exclude = [".git", ".DS_Store"] - let ignored = (_: string) => false - if (instance.project.vcs === "git") { - const ig = ignore() - const gitignore = path.join(instance.project.worktree, ".gitignore") - if (await Filesystem.exists(gitignore)) { - ig.add(await Filesystem.readText(gitignore)) - } - const ignoreFile = path.join(instance.project.worktree, ".ignore") - if (await Filesystem.exists(ignoreFile)) { - ig.add(await Filesystem.readText(ignoreFile)) - } - ignored = ig.ignores.bind(ig) - } - - const resolved = dir ? path.join(instance.directory, dir) : instance.directory - if (!Instance.containsPath(resolved)) { - throw new Error("Access denied: path escapes project directory") - } - - const nodes: File.Node[] = [] - for (const entry of await fs.promises.readdir(resolved, { withFileTypes: true }).catch(() => [])) { - if (exclude.includes(entry.name)) continue - const absolute = path.join(resolved, entry.name) - const file = path.relative(instance.directory, absolute) - const type = entry.isDirectory() ? "directory" : "file" - nodes.push({ - name: entry.name, - path: file, - absolute, - type, - ignored: ignored(type === "directory" ? file + "/" : file), - }) - } - - return nodes.sort((a, b) => { - if (a.type !== b.type) return a.type === "directory" ? -1 : 1 - return a.name.localeCompare(b.name) - }) - }) - }) - - const search = Effect.fn("File.search")(function* (input: { - query: string - limit?: number - dirs?: boolean - type?: "file" | "directory" - }) { - return yield* Effect.promise(async () => { - const query = input.query.trim() - const limit = input.limit ?? 100 - const kind = input.type ?? (input.dirs === false ? "file" : "all") - log.info("search", { query, kind }) - - const result = getFiles() - const preferHidden = query.startsWith(".") || query.includes("/.") - - if (!query) { - if (kind === "file") return result.files.slice(0, limit) - return sortHiddenLast(result.dirs.toSorted(), preferHidden).slice(0, limit) - } - - const items = - kind === "file" ? result.files : kind === "directory" ? result.dirs : [...result.files, ...result.dirs] - - const searchLimit = kind === "directory" && !preferHidden ? limit * 20 : limit - const sorted = fuzzysort.go(query, items, { limit: searchLimit }).map((item) => item.target) - const output = kind === "directory" ? sortHiddenLast(sorted, preferHidden).slice(0, limit) : sorted - - log.info("search", { query, kind, results: output.length }) - return output - }) - }) - - log.info("init") - return Service.of({ init, status, read, list, search }) - }), - ).pipe(Layer.fresh) -} diff --git a/packages/opencode/src/file/time-service.ts b/packages/opencode/src/file/time-service.ts deleted file mode 100644 index a0fa8bfabf7..00000000000 --- a/packages/opencode/src/file/time-service.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { DateTime, Effect, Layer, Semaphore, ServiceMap } from "effect" -import { Flag } from "@/flag/flag" -import type { SessionID } from "@/session/schema" -import { Filesystem } from "../util/filesystem" -import { Log } from "../util/log" - -export namespace FileTime { - const log = Log.create({ service: "file.time" }) - - export type Stamp = { - readonly read: Date - readonly mtime: number | undefined - readonly ctime: number | undefined - readonly size: number | undefined - } - - const stamp = Effect.fnUntraced(function* (file: string) { - const stat = Filesystem.stat(file) - const size = typeof stat?.size === "bigint" ? Number(stat.size) : stat?.size - return { - read: yield* DateTime.nowAsDate, - mtime: stat?.mtime?.getTime(), - ctime: stat?.ctime?.getTime(), - size, - } - }) - - const session = (reads: Map>, sessionID: SessionID) => { - const value = reads.get(sessionID) - if (value) return value - - const next = new Map() - reads.set(sessionID, next) - return next - } - - export interface Interface { - readonly read: (sessionID: SessionID, file: string) => Effect.Effect - readonly get: (sessionID: SessionID, file: string) => Effect.Effect - readonly assert: (sessionID: SessionID, filepath: string) => Effect.Effect - readonly withLock: (filepath: string, fn: () => Promise) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/FileTime") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const disableCheck = yield* Flag.OPENCODE_DISABLE_FILETIME_CHECK - const reads = new Map>() - const locks = new Map() - - const getLock = (filepath: string) => { - const lock = locks.get(filepath) - if (lock) return lock - - const next = Semaphore.makeUnsafe(1) - locks.set(filepath, next) - return next - } - - const read = Effect.fn("FileTime.read")(function* (sessionID: SessionID, file: string) { - log.info("read", { sessionID, file }) - session(reads, sessionID).set(file, yield* stamp(file)) - }) - - const get = Effect.fn("FileTime.get")(function* (sessionID: SessionID, file: string) { - return reads.get(sessionID)?.get(file)?.read - }) - - const assert = Effect.fn("FileTime.assert")(function* (sessionID: SessionID, filepath: string) { - if (disableCheck) return - - const time = reads.get(sessionID)?.get(filepath) - if (!time) throw new Error(`You must read file ${filepath} before overwriting it. Use the Read tool first`) - - const next = yield* stamp(filepath) - const changed = next.mtime !== time.mtime || next.ctime !== time.ctime || next.size !== time.size - if (!changed) return - - throw new Error( - `File ${filepath} has been modified since it was last read.\nLast modification: ${new Date(next.mtime ?? next.read.getTime()).toISOString()}\nLast read: ${time.read.toISOString()}\n\nPlease read the file again before modifying it.`, - ) - }) - - const withLock = Effect.fn("FileTime.withLock")(function* (filepath: string, fn: () => Promise) { - return yield* Effect.promise(fn).pipe(getLock(filepath).withPermits(1)) - }) - - return Service.of({ read, get, assert, withLock }) - }), - ).pipe(Layer.orDie, Layer.fresh) -} diff --git a/packages/opencode/src/file/time.ts b/packages/opencode/src/file/time.ts index b6d572fe8bc..4962ef0c9ee 100644 --- a/packages/opencode/src/file/time.ts +++ b/packages/opencode/src/file/time.ts @@ -1,28 +1,128 @@ -import { runPromiseInstance } from "@/effect/runtime" +import { DateTime, Effect, Layer, Semaphore, ServiceMap } from "effect" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { Flag } from "@/flag/flag" import type { SessionID } from "@/session/schema" -import { FileTime as S } from "./time-service" +import { Filesystem } from "../util/filesystem" +import { Log } from "../util/log" export namespace FileTime { - export type Stamp = S.Stamp + const log = Log.create({ service: "file.time" }) - export type Interface = S.Interface + export type Stamp = { + readonly read: Date + readonly mtime: number | undefined + readonly ctime: number | undefined + readonly size: number | undefined + } + + const stamp = Effect.fnUntraced(function* (file: string) { + const stat = Filesystem.stat(file) + const size = typeof stat?.size === "bigint" ? Number(stat.size) : stat?.size + return { + read: yield* DateTime.nowAsDate, + mtime: stat?.mtime?.getTime(), + ctime: stat?.ctime?.getTime(), + size, + } + }) + + const session = (reads: Map>, sessionID: SessionID) => { + const value = reads.get(sessionID) + if (value) return value + + const next = new Map() + reads.set(sessionID, next) + return next + } + + interface State { + reads: Map> + locks: Map + } + + export interface Interface { + readonly read: (sessionID: SessionID, file: string) => Effect.Effect + readonly get: (sessionID: SessionID, file: string) => Effect.Effect + readonly assert: (sessionID: SessionID, filepath: string) => Effect.Effect + readonly withLock: (filepath: string, fn: () => Promise) => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/FileTime") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const disableCheck = yield* Flag.OPENCODE_DISABLE_FILETIME_CHECK + const state = yield* InstanceState.make( + Effect.fn("FileTime.state")(() => + Effect.succeed({ + reads: new Map>(), + locks: new Map(), + }), + ), + ) + + const getLock = Effect.fn("FileTime.lock")(function* (filepath: string) { + const locks = (yield* InstanceState.get(state)).locks + const lock = locks.get(filepath) + if (lock) return lock + + const next = Semaphore.makeUnsafe(1) + locks.set(filepath, next) + return next + }) + + const read = Effect.fn("FileTime.read")(function* (sessionID: SessionID, file: string) { + const reads = (yield* InstanceState.get(state)).reads + log.info("read", { sessionID, file }) + session(reads, sessionID).set(file, yield* stamp(file)) + }) + + const get = Effect.fn("FileTime.get")(function* (sessionID: SessionID, file: string) { + const reads = (yield* InstanceState.get(state)).reads + return reads.get(sessionID)?.get(file)?.read + }) + + const assert = Effect.fn("FileTime.assert")(function* (sessionID: SessionID, filepath: string) { + if (disableCheck) return + + const reads = (yield* InstanceState.get(state)).reads + const time = reads.get(sessionID)?.get(filepath) + if (!time) throw new Error(`You must read file ${filepath} before overwriting it. Use the Read tool first`) + + const next = yield* stamp(filepath) + const changed = next.mtime !== time.mtime || next.ctime !== time.ctime || next.size !== time.size + if (!changed) return + + throw new Error( + `File ${filepath} has been modified since it was last read.\nLast modification: ${new Date(next.mtime ?? next.read.getTime()).toISOString()}\nLast read: ${time.read.toISOString()}\n\nPlease read the file again before modifying it.`, + ) + }) + + const withLock = Effect.fn("FileTime.withLock")(function* (filepath: string, fn: () => Promise) { + return yield* Effect.promise(fn).pipe((yield* getLock(filepath)).withPermits(1)) + }) + + return Service.of({ read, get, assert, withLock }) + }), + ).pipe(Layer.orDie) - export const Service = S.Service - export const layer = S.layer + const runPromise = makeRunPromise(Service, layer) export function read(sessionID: SessionID, file: string) { - return runPromiseInstance(S.Service.use((s) => s.read(sessionID, file))) + return runPromise((s) => s.read(sessionID, file)) } export function get(sessionID: SessionID, file: string) { - return runPromiseInstance(S.Service.use((s) => s.get(sessionID, file))) + return runPromise((s) => s.get(sessionID, file)) } export async function assert(sessionID: SessionID, filepath: string) { - return runPromiseInstance(S.Service.use((s) => s.assert(sessionID, filepath))) + return runPromise((s) => s.assert(sessionID, filepath)) } export async function withLock(filepath: string, fn: () => Promise): Promise { - return runPromiseInstance(S.Service.use((s) => s.withLock(filepath, fn))) + return runPromise((s) => s.withLock(filepath, fn)) } } diff --git a/packages/opencode/src/file/watcher.ts b/packages/opencode/src/file/watcher.ts index 7e5f5f7be31..1b3fc8ab4f2 100644 --- a/packages/opencode/src/file/watcher.ts +++ b/packages/opencode/src/file/watcher.ts @@ -1,4 +1,4 @@ -import { Cause, Effect, Layer, ServiceMap } from "effect" +import { Cause, Effect, Layer, Scope, ServiceMap } from "effect" // @ts-ignore import { createWrapper } from "@parcel/watcher/wrapper" import type ParcelWatcher from "@parcel/watcher" @@ -7,7 +7,8 @@ import path from "path" import z from "zod" import { Bus } from "@/bus" import { BusEvent } from "@/bus/bus-event" -import { InstanceContext } from "@/effect/instance-context" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" import { Flag } from "@/flag/flag" import { Instance } from "@/project/instance" import { git } from "@/util/git" @@ -60,82 +61,107 @@ export namespace FileWatcher { export const hasNativeBinding = () => !!watcher() - export class Service extends ServiceMap.Service()("@opencode/FileWatcher") {} + export interface Interface { + readonly init: () => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/FileWatcher") {} export const layer = Layer.effect( Service, Effect.gen(function* () { - const instance = yield* InstanceContext - if (yield* Flag.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER) return Service.of({}) - - log.info("init", { directory: instance.directory }) - - const backend = getBackend() - if (!backend) { - log.error("watcher backend not supported", { directory: instance.directory, platform: process.platform }) - return Service.of({}) - } - - const w = watcher() - if (!w) return Service.of({}) - - log.info("watcher backend", { directory: instance.directory, platform: process.platform, backend }) - - const subs: ParcelWatcher.AsyncSubscription[] = [] - yield* Effect.addFinalizer(() => Effect.promise(() => Promise.allSettled(subs.map((sub) => sub.unsubscribe())))) - - const cb: ParcelWatcher.SubscribeCallback = Instance.bind((err, evts) => { - if (err) return - for (const evt of evts) { - if (evt.type === "create") Bus.publish(Event.Updated, { file: evt.path, event: "add" }) - if (evt.type === "update") Bus.publish(Event.Updated, { file: evt.path, event: "change" }) - if (evt.type === "delete") Bus.publish(Event.Updated, { file: evt.path, event: "unlink" }) - } - }) - - const subscribe = (dir: string, ignore: string[]) => { - const pending = w.subscribe(dir, cb, { ignore, backend }) - return Effect.gen(function* () { - const sub = yield* Effect.promise(() => pending) - subs.push(sub) - }).pipe( - Effect.timeout(SUBSCRIBE_TIMEOUT_MS), + const state = yield* InstanceState.make( + Effect.fn("FileWatcher.state")( + function* () { + if (yield* Flag.OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER) return + + log.info("init", { directory: Instance.directory }) + + const backend = getBackend() + if (!backend) { + log.error("watcher backend not supported", { directory: Instance.directory, platform: process.platform }) + return + } + + const w = watcher() + if (!w) return + + log.info("watcher backend", { directory: Instance.directory, platform: process.platform, backend }) + + const subs: ParcelWatcher.AsyncSubscription[] = [] + yield* Effect.addFinalizer(() => + Effect.promise(() => Promise.allSettled(subs.map((sub) => sub.unsubscribe()))), + ) + + const cb: ParcelWatcher.SubscribeCallback = Instance.bind((err, evts) => { + if (err) return + for (const evt of evts) { + if (evt.type === "create") Bus.publish(Event.Updated, { file: evt.path, event: "add" }) + if (evt.type === "update") Bus.publish(Event.Updated, { file: evt.path, event: "change" }) + if (evt.type === "delete") Bus.publish(Event.Updated, { file: evt.path, event: "unlink" }) + } + }) + + const subscribe = (dir: string, ignore: string[]) => { + const pending = w.subscribe(dir, cb, { ignore, backend }) + return Effect.gen(function* () { + const sub = yield* Effect.promise(() => pending) + subs.push(sub) + }).pipe( + Effect.timeout(SUBSCRIBE_TIMEOUT_MS), + Effect.catchCause((cause) => { + log.error("failed to subscribe", { dir, cause: Cause.pretty(cause) }) + pending.then((s) => s.unsubscribe()).catch(() => {}) + return Effect.void + }), + ) + } + + const cfg = yield* Effect.promise(() => Config.get()) + const cfgIgnores = cfg.watcher?.ignore ?? [] + + if (yield* Flag.OPENCODE_EXPERIMENTAL_FILEWATCHER) { + yield* subscribe(Instance.directory, [ + ...FileIgnore.PATTERNS, + ...cfgIgnores, + ...protecteds(Instance.directory), + ]) + } + + if (Instance.project.vcs === "git") { + const result = yield* Effect.promise(() => + git(["rev-parse", "--git-dir"], { + cwd: Instance.project.worktree, + }), + ) + const vcsDir = + result.exitCode === 0 ? path.resolve(Instance.project.worktree, result.text().trim()) : undefined + if (vcsDir && !cfgIgnores.includes(".git") && !cfgIgnores.includes(vcsDir)) { + const ignore = (yield* Effect.promise(() => readdir(vcsDir).catch(() => []))).filter( + (entry) => entry !== "HEAD", + ) + yield* subscribe(vcsDir, ignore) + } + } + }, Effect.catchCause((cause) => { - log.error("failed to subscribe", { dir, cause: Cause.pretty(cause) }) - pending.then((s) => s.unsubscribe()).catch(() => {}) + log.error("failed to init watcher service", { cause: Cause.pretty(cause) }) return Effect.void }), - ) - } + ), + ) - const cfg = yield* Effect.promise(() => Config.get()) - const cfgIgnores = cfg.watcher?.ignore ?? [] + return Service.of({ + init: Effect.fn("FileWatcher.init")(function* () { + yield* InstanceState.get(state) + }), + }) + }), + ) - if (yield* Flag.OPENCODE_EXPERIMENTAL_FILEWATCHER) { - yield* subscribe(instance.directory, [...FileIgnore.PATTERNS, ...cfgIgnores, ...protecteds(instance.directory)]) - } + const runPromise = makeRunPromise(Service, layer) - if (instance.project.vcs === "git") { - const result = yield* Effect.promise(() => - git(["rev-parse", "--git-dir"], { - cwd: instance.project.worktree, - }), - ) - const vcsDir = result.exitCode === 0 ? path.resolve(instance.project.worktree, result.text().trim()) : undefined - if (vcsDir && !cfgIgnores.includes(".git") && !cfgIgnores.includes(vcsDir)) { - const ignore = (yield* Effect.promise(() => readdir(vcsDir).catch(() => []))).filter( - (entry) => entry !== "HEAD", - ) - yield* subscribe(vcsDir, ignore) - } - } - - return Service.of({}) - }).pipe( - Effect.catchCause((cause) => { - log.error("failed to init watcher service", { cause: Cause.pretty(cause) }) - return Effect.succeed(Service.of({})) - }), - ), - ).pipe(Layer.orDie, Layer.fresh) + export function init() { + return runPromise((svc) => svc.init()) + } } diff --git a/packages/opencode/src/format/index.ts b/packages/opencode/src/format/index.ts index e4381c69b20..39e0630cfcc 100644 --- a/packages/opencode/src/format/index.ts +++ b/packages/opencode/src/format/index.ts @@ -1,16 +1,182 @@ -import { runPromiseInstance } from "@/effect/runtime" -import { Format as S } from "./service" +import { Effect, Layer, ServiceMap } from "effect" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import path from "path" +import { mergeDeep } from "remeda" +import z from "zod" +import { Bus } from "../bus" +import { Config } from "../config/config" +import { File } from "../file" +import { Instance } from "../project/instance" +import { Process } from "../util/process" +import { Log } from "../util/log" +import * as Formatter from "./formatter" export namespace Format { - export const Status = S.Status - export type Status = S.Status + const log = Log.create({ service: "format" }) - export type Interface = S.Interface + export const Status = z + .object({ + name: z.string(), + extensions: z.string().array(), + enabled: z.boolean(), + }) + .meta({ + ref: "FormatterStatus", + }) + export type Status = z.infer - export const Service = S.Service - export const layer = S.layer + export interface Interface { + readonly init: () => Effect.Effect + readonly status: () => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/Format") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const state = yield* InstanceState.make( + Effect.fn("Format.state")(function* (_ctx) { + const enabled: Record = {} + const formatters: Record = {} + + const cfg = yield* Effect.promise(() => Config.get()) + + if (cfg.formatter !== false) { + for (const item of Object.values(Formatter)) { + formatters[item.name] = item + } + for (const [name, item] of Object.entries(cfg.formatter ?? {})) { + if (item.disabled) { + delete formatters[name] + continue + } + const info = mergeDeep(formatters[name] ?? {}, { + command: [], + extensions: [], + ...item, + }) + + if (info.command.length === 0) continue + + formatters[name] = { + ...info, + name, + enabled: async () => true, + } + } + } else { + log.info("all formatters are disabled") + } + + async function isEnabled(item: Formatter.Info) { + let status = enabled[item.name] + if (status === undefined) { + status = await item.enabled() + enabled[item.name] = status + } + return status + } + + async function getFormatter(ext: string) { + const matching = Object.values(formatters).filter((item) => item.extensions.includes(ext)) + const checks = await Promise.all( + matching.map(async (item) => { + log.info("checking", { name: item.name, ext }) + const on = await isEnabled(item) + if (on) { + log.info("enabled", { name: item.name, ext }) + } + return { + item, + enabled: on, + } + }), + ) + return checks.filter((x) => x.enabled).map((x) => x.item) + } + + yield* Effect.acquireRelease( + Effect.sync(() => + Bus.subscribe( + File.Event.Edited, + Instance.bind(async (payload) => { + const file = payload.properties.file + log.info("formatting", { file }) + const ext = path.extname(file) + + for (const item of await getFormatter(ext)) { + log.info("running", { command: item.command }) + try { + const proc = Process.spawn( + item.command.map((x) => x.replace("$FILE", file)), + { + cwd: Instance.directory, + env: { ...process.env, ...item.environment }, + stdout: "ignore", + stderr: "ignore", + }, + ) + const exit = await proc.exited + if (exit !== 0) { + log.error("failed", { + command: item.command, + ...item.environment, + }) + } + } catch (error) { + log.error("failed to format file", { + error, + command: item.command, + ...item.environment, + file, + }) + } + } + }), + ), + ), + (unsubscribe) => Effect.sync(unsubscribe), + ) + log.info("init") + + return { + formatters, + isEnabled, + } + }), + ) + + const init = Effect.fn("Format.init")(function* () { + yield* InstanceState.get(state) + }) + + const status = Effect.fn("Format.status")(function* () { + const { formatters, isEnabled } = yield* InstanceState.get(state) + const result: Status[] = [] + for (const formatter of Object.values(formatters)) { + const isOn = yield* Effect.promise(() => isEnabled(formatter)) + result.push({ + name: formatter.name, + extensions: formatter.extensions, + enabled: isOn, + }) + } + return result + }) + + return Service.of({ init, status }) + }), + ) + + const runPromise = makeRunPromise(Service, layer) + + export async function init() { + return runPromise((s) => s.init()) + } export async function status() { - return runPromiseInstance(S.Service.use((s) => s.status())) + return runPromise((s) => s.status()) } } diff --git a/packages/opencode/src/format/service.ts b/packages/opencode/src/format/service.ts deleted file mode 100644 index 64fff79497a..00000000000 --- a/packages/opencode/src/format/service.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { Effect, Layer, ServiceMap } from "effect" -import { InstanceContext } from "@/effect/instance-context" -import path from "path" -import { mergeDeep } from "remeda" -import z from "zod" -import { Bus } from "../bus" -import { Config } from "../config/config" -import { File } from "../file/service" -import { Instance } from "../project/instance" -import { Process } from "../util/process" -import { Log } from "../util/log" -import * as Formatter from "./formatter" - -export namespace Format { - const log = Log.create({ service: "format" }) - - export const Status = z - .object({ - name: z.string(), - extensions: z.string().array(), - enabled: z.boolean(), - }) - .meta({ - ref: "FormatterStatus", - }) - export type Status = z.infer - - export interface Interface { - readonly status: () => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Format") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const instance = yield* InstanceContext - - const enabled: Record = {} - const formatters: Record = {} - - const cfg = yield* Effect.promise(() => Config.get()) - - if (cfg.formatter !== false) { - for (const item of Object.values(Formatter)) { - formatters[item.name] = item - } - for (const [name, item] of Object.entries(cfg.formatter ?? {})) { - if (item.disabled) { - delete formatters[name] - continue - } - const info = mergeDeep(formatters[name] ?? {}, { - command: [], - extensions: [], - ...item, - }) - - if (info.command.length === 0) continue - - formatters[name] = { - ...info, - name, - enabled: async () => true, - } - } - } else { - log.info("all formatters are disabled") - } - - async function isEnabled(item: Formatter.Info) { - let status = enabled[item.name] - if (status === undefined) { - status = await item.enabled() - enabled[item.name] = status - } - return status - } - - async function getFormatter(ext: string) { - const result = [] - for (const item of Object.values(formatters)) { - log.info("checking", { name: item.name, ext }) - if (!item.extensions.includes(ext)) continue - if (!(await isEnabled(item))) continue - log.info("enabled", { name: item.name, ext }) - result.push(item) - } - return result - } - - yield* Effect.acquireRelease( - Effect.sync(() => - Bus.subscribe( - File.Event.Edited, - Instance.bind(async (payload) => { - const file = payload.properties.file - log.info("formatting", { file }) - const ext = path.extname(file) - - for (const item of await getFormatter(ext)) { - log.info("running", { command: item.command }) - try { - const proc = Process.spawn( - item.command.map((x) => x.replace("$FILE", file)), - { - cwd: instance.directory, - env: { ...process.env, ...item.environment }, - stdout: "ignore", - stderr: "ignore", - }, - ) - const exit = await proc.exited - if (exit !== 0) { - log.error("failed", { - command: item.command, - ...item.environment, - }) - } - } catch (error) { - log.error("failed to format file", { - error, - command: item.command, - ...item.environment, - file, - }) - } - } - }), - ), - ), - (unsubscribe) => Effect.sync(unsubscribe), - ) - log.info("init") - - const status = Effect.fn("Format.status")(function* () { - const result: Status[] = [] - for (const formatter of Object.values(formatters)) { - const isOn = yield* Effect.promise(() => isEnabled(formatter)) - result.push({ - name: formatter.name, - extensions: formatter.extensions, - enabled: isOn, - }) - } - return result - }) - - return Service.of({ status }) - }), - ).pipe(Layer.fresh) -} diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts index d0bd1032969..1e4e45f2cd4 100644 --- a/packages/opencode/src/installation/index.ts +++ b/packages/opencode/src/installation/index.ts @@ -1,6 +1,7 @@ import { NodeChildProcessSpawner, NodeFileSystem, NodePath } from "@effect/platform-node" import { Effect, Layer, Schema, ServiceMap, Stream } from "effect" import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" +import { makeRunPromise } from "@/effect/run-service" import { withTransientReadRetry } from "@/util/effect-http-client" import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" import path from "path" @@ -293,7 +294,7 @@ export namespace Installation { result = yield* run(["scoop", "install", `opencode@${target}`]) break default: - throw new Error(`Unknown method: ${m}`) + return yield* new UpgradeFailedError({ stderr: `Unknown method: ${m}` }) } if (!result || result.code !== 0) { const stderr = m === "choco" ? "not running from an elevated command shell" : result?.stderr || "" @@ -329,27 +330,21 @@ export namespace Installation { Layer.provide(NodePath.layer), ) - // Legacy adapters — dynamic import avoids circular dependency since - // foundational modules (db.ts, provider/models.ts) import Installation - // at load time, and runtime transitively loads those same modules. - async function runPromise(f: (service: Interface) => Effect.Effect) { - const { runtime } = await import("@/effect/runtime") - return runtime.runPromise(Service.use(f)) - } + const runPromise = makeRunPromise(Service, defaultLayer) - export function info(): Promise { + export async function info(): Promise { return runPromise((svc) => svc.info()) } - export function method(): Promise { + export async function method(): Promise { return runPromise((svc) => svc.method()) } - export function latest(installMethod?: Method): Promise { + export async function latest(installMethod?: Method): Promise { return runPromise((svc) => svc.latest(installMethod)) } - export function upgrade(m: Method, target: string): Promise { + export async function upgrade(m: Method, target: string): Promise { return runPromise((svc) => svc.upgrade(m, target)) } } diff --git a/packages/opencode/src/permission/index.ts b/packages/opencode/src/permission/index.ts index 01ac7689717..63e6570189d 100644 --- a/packages/opencode/src/permission/index.ts +++ b/packages/opencode/src/permission/index.ts @@ -1,52 +1,322 @@ -import { runPromiseInstance } from "@/effect/runtime" -import { fn } from "@/util/fn" +import { Bus } from "@/bus" +import { BusEvent } from "@/bus/bus-event" +import { Config } from "@/config/config" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { ProjectID } from "@/project/schema" +import { Instance } from "@/project/instance" +import { MessageID, SessionID } from "@/session/schema" +import { PermissionTable } from "@/session/session.sql" +import { Database, eq } from "@/storage/db" +import { Log } from "@/util/log" +import { Wildcard } from "@/util/wildcard" +import { Deferred, Effect, Layer, Schema, ServiceMap } from "effect" +import os from "os" import z from "zod" -import { Permission as S } from "./service" +import { evaluate as evalRule } from "./evaluate" +import { PermissionID } from "./schema" -export namespace PermissionNext { - export const Action = S.Action - export type Action = S.Action +export namespace Permission { + const log = Log.create({ service: "permission" }) - export const Rule = S.Rule - export type Rule = S.Rule + export const Action = z.enum(["allow", "deny", "ask"]).meta({ + ref: "PermissionAction", + }) + export type Action = z.infer - export const Ruleset = S.Ruleset - export type Ruleset = S.Ruleset + export const Rule = z + .object({ + permission: z.string(), + pattern: z.string(), + action: Action, + }) + .meta({ + ref: "PermissionRule", + }) + export type Rule = z.infer - export const Request = S.Request - export type Request = S.Request + export const Ruleset = Rule.array().meta({ + ref: "PermissionRuleset", + }) + export type Ruleset = z.infer - export const Reply = S.Reply - export type Reply = S.Reply + export const Request = z + .object({ + id: PermissionID.zod, + sessionID: SessionID.zod, + permission: z.string(), + patterns: z.string().array(), + metadata: z.record(z.string(), z.any()), + always: z.string().array(), + tool: z + .object({ + messageID: MessageID.zod, + callID: z.string(), + }) + .optional(), + }) + .meta({ + ref: "PermissionRequest", + }) + export type Request = z.infer - export const Approval = S.Approval - export type Approval = z.infer + export const Reply = z.enum(["once", "always", "reject"]) + export type Reply = z.infer - export const Event = S.Event + export const Approval = z.object({ + projectID: ProjectID.zod, + patterns: z.string().array(), + }) - export const RejectedError = S.RejectedError - export const CorrectedError = S.CorrectedError - export const DeniedError = S.DeniedError - export type Error = S.Error + export const Event = { + Asked: BusEvent.define("permission.asked", Request), + Replied: BusEvent.define( + "permission.replied", + z.object({ + sessionID: SessionID.zod, + requestID: PermissionID.zod, + reply: Reply, + }), + ), + } + + export class RejectedError extends Schema.TaggedErrorClass()("PermissionRejectedError", {}) { + override get message() { + return "The user rejected permission to use this specific tool call." + } + } + + export class CorrectedError extends Schema.TaggedErrorClass()("PermissionCorrectedError", { + feedback: Schema.String, + }) { + override get message() { + return `The user rejected permission to use this specific tool call with the following feedback: ${this.feedback}` + } + } + + export class DeniedError extends Schema.TaggedErrorClass()("PermissionDeniedError", { + ruleset: Schema.Any, + }) { + override get message() { + return `The user has specified a rule which prevents you from using this specific tool call. Here are some of the relevant rules ${JSON.stringify(this.ruleset)}` + } + } + + export type Error = DeniedError | RejectedError | CorrectedError + + export const AskInput = Request.partial({ id: true }).extend({ + ruleset: Ruleset, + }) + + export const ReplyInput = z.object({ + requestID: PermissionID.zod, + reply: Reply, + message: z.string().optional(), + }) + + export interface Interface { + readonly ask: (input: z.infer) => Effect.Effect + readonly reply: (input: z.infer) => Effect.Effect + readonly list: () => Effect.Effect + } + + interface PendingEntry { + info: Request + deferred: Deferred.Deferred + } + + interface State { + pending: Map + approved: Ruleset + } + + export function evaluate(permission: string, pattern: string, ...rulesets: Ruleset[]): Rule { + log.info("evaluate", { permission, pattern, ruleset: rulesets.flat() }) + return evalRule(permission, pattern, ...rulesets) + } + + export class Service extends ServiceMap.Service()("@opencode/Permission") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const state = yield* InstanceState.make( + Effect.fn("Permission.state")(function* (ctx) { + const row = Database.use((db) => + db.select().from(PermissionTable).where(eq(PermissionTable.project_id, ctx.project.id)).get(), + ) + const state = { + pending: new Map(), + approved: row?.data ?? [], + } + + yield* Effect.addFinalizer(() => + Effect.gen(function* () { + for (const item of state.pending.values()) { + yield* Deferred.fail(item.deferred, new RejectedError()) + } + state.pending.clear() + }), + ) + + return state + }), + ) - export const AskInput = S.AskInput - export const ReplyInput = S.ReplyInput + const ask = Effect.fn("Permission.ask")(function* (input: z.infer) { + const { approved, pending } = yield* InstanceState.get(state) + const { ruleset, ...request } = input + let needsAsk = false - export type Interface = S.Interface + for (const pattern of request.patterns) { + const rule = evaluate(request.permission, pattern, ruleset, approved) + log.info("evaluated", { permission: request.permission, pattern, action: rule }) + if (rule.action === "deny") { + return yield* new DeniedError({ + ruleset: ruleset.filter((rule) => Wildcard.match(request.permission, rule.permission)), + }) + } + if (rule.action === "allow") continue + needsAsk = true + } - export const Service = S.Service - export const layer = S.layer + if (!needsAsk) return - export const evaluate = S.evaluate - export const fromConfig = S.fromConfig - export const merge = S.merge - export const disabled = S.disabled + const id = request.id ?? PermissionID.ascending() + const info: Request = { + id, + ...request, + } + log.info("asking", { id, permission: info.permission, patterns: info.patterns }) - export const ask = fn(S.AskInput, async (input) => runPromiseInstance(S.Service.use((s) => s.ask(input)))) + const deferred = yield* Deferred.make() + pending.set(id, { info, deferred }) + void Bus.publish(Event.Asked, info) + return yield* Effect.ensuring( + Deferred.await(deferred), + Effect.sync(() => { + pending.delete(id) + }), + ) + }) - export const reply = fn(S.ReplyInput, async (input) => runPromiseInstance(S.Service.use((s) => s.reply(input)))) + const reply = Effect.fn("Permission.reply")(function* (input: z.infer) { + const { approved, pending } = yield* InstanceState.get(state) + const existing = pending.get(input.requestID) + if (!existing) return + + pending.delete(input.requestID) + void Bus.publish(Event.Replied, { + sessionID: existing.info.sessionID, + requestID: existing.info.id, + reply: input.reply, + }) + + if (input.reply === "reject") { + yield* Deferred.fail( + existing.deferred, + input.message ? new CorrectedError({ feedback: input.message }) : new RejectedError(), + ) + + for (const [id, item] of pending.entries()) { + if (item.info.sessionID !== existing.info.sessionID) continue + pending.delete(id) + void Bus.publish(Event.Replied, { + sessionID: item.info.sessionID, + requestID: item.info.id, + reply: "reject", + }) + yield* Deferred.fail(item.deferred, new RejectedError()) + } + return + } + + yield* Deferred.succeed(existing.deferred, undefined) + if (input.reply === "once") return + + for (const pattern of existing.info.always) { + approved.push({ + permission: existing.info.permission, + pattern, + action: "allow", + }) + } + + for (const [id, item] of pending.entries()) { + if (item.info.sessionID !== existing.info.sessionID) continue + const ok = item.info.patterns.every( + (pattern) => evaluate(item.info.permission, pattern, approved).action === "allow", + ) + if (!ok) continue + pending.delete(id) + void Bus.publish(Event.Replied, { + sessionID: item.info.sessionID, + requestID: item.info.id, + reply: "always", + }) + yield* Deferred.succeed(item.deferred, undefined) + } + }) + + const list = Effect.fn("Permission.list")(function* () { + const pending = (yield* InstanceState.get(state)).pending + return Array.from(pending.values(), (item) => item.info) + }) + + return Service.of({ ask, reply, list }) + }), + ) + + function expand(pattern: string): string { + if (pattern.startsWith("~/")) return os.homedir() + pattern.slice(1) + if (pattern === "~") return os.homedir() + if (pattern.startsWith("$HOME/")) return os.homedir() + pattern.slice(5) + if (pattern.startsWith("$HOME")) return os.homedir() + pattern.slice(5) + return pattern + } + + export function fromConfig(permission: Config.Permission) { + const ruleset: Ruleset = [] + for (const [key, value] of Object.entries(permission)) { + if (typeof value === "string") { + ruleset.push({ permission: key, action: value, pattern: "*" }) + continue + } + ruleset.push( + ...Object.entries(value).map(([pattern, action]) => ({ permission: key, pattern: expand(pattern), action })), + ) + } + return ruleset + } + + export function merge(...rulesets: Ruleset[]): Ruleset { + return rulesets.flat() + } + + const EDIT_TOOLS = ["edit", "write", "apply_patch", "multiedit"] + + export function disabled(tools: string[], ruleset: Ruleset): Set { + const result = new Set() + for (const tool of tools) { + const permission = EDIT_TOOLS.includes(tool) ? "edit" : tool + const rule = ruleset.findLast((rule) => Wildcard.match(permission, rule.permission)) + if (!rule) continue + if (rule.pattern === "*" && rule.action === "deny") result.add(tool) + } + return result + } + + export const runPromise = makeRunPromise(Service, layer) + + export async function ask(input: z.infer) { + return runPromise((s) => s.ask(input)) + } + + export async function reply(input: z.infer) { + return runPromise((s) => s.reply(input)) + } export async function list() { - return runPromiseInstance(S.Service.use((s) => s.list())) + return runPromise((s) => s.list()) } } diff --git a/packages/opencode/src/permission/service.ts b/packages/opencode/src/permission/service.ts deleted file mode 100644 index 08475520b2e..00000000000 --- a/packages/opencode/src/permission/service.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { Bus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" -import { Config } from "@/config/config" -import { InstanceContext } from "@/effect/instance-context" -import { ProjectID } from "@/project/schema" -import { MessageID, SessionID } from "@/session/schema" -import { PermissionTable } from "@/session/session.sql" -import { Database, eq } from "@/storage/db" -import { Log } from "@/util/log" -import { Wildcard } from "@/util/wildcard" -import { Deferred, Effect, Layer, Schema, ServiceMap } from "effect" -import os from "os" -import z from "zod" -import { evaluate as evalRule } from "./evaluate" -import { PermissionID } from "./schema" - -export namespace Permission { - const log = Log.create({ service: "permission" }) - - export const Action = z.enum(["allow", "deny", "ask"]).meta({ - ref: "PermissionAction", - }) - export type Action = z.infer - - export const Rule = z - .object({ - permission: z.string(), - pattern: z.string(), - action: Action, - }) - .meta({ - ref: "PermissionRule", - }) - export type Rule = z.infer - - export const Ruleset = Rule.array().meta({ - ref: "PermissionRuleset", - }) - export type Ruleset = z.infer - - export const Request = z - .object({ - id: PermissionID.zod, - sessionID: SessionID.zod, - permission: z.string(), - patterns: z.string().array(), - metadata: z.record(z.string(), z.any()), - always: z.string().array(), - tool: z - .object({ - messageID: MessageID.zod, - callID: z.string(), - }) - .optional(), - }) - .meta({ - ref: "PermissionRequest", - }) - export type Request = z.infer - - export const Reply = z.enum(["once", "always", "reject"]) - export type Reply = z.infer - - export const Approval = z.object({ - projectID: ProjectID.zod, - patterns: z.string().array(), - }) - - export const Event = { - Asked: BusEvent.define("permission.asked", Request), - Replied: BusEvent.define( - "permission.replied", - z.object({ - sessionID: SessionID.zod, - requestID: PermissionID.zod, - reply: Reply, - }), - ), - } - - export class RejectedError extends Schema.TaggedErrorClass()("PermissionRejectedError", {}) { - override get message() { - return "The user rejected permission to use this specific tool call." - } - } - - export class CorrectedError extends Schema.TaggedErrorClass()("PermissionCorrectedError", { - feedback: Schema.String, - }) { - override get message() { - return `The user rejected permission to use this specific tool call with the following feedback: ${this.feedback}` - } - } - - export class DeniedError extends Schema.TaggedErrorClass()("PermissionDeniedError", { - ruleset: Schema.Any, - }) { - override get message() { - return `The user has specified a rule which prevents you from using this specific tool call. Here are some of the relevant rules ${JSON.stringify(this.ruleset)}` - } - } - - export type Error = DeniedError | RejectedError | CorrectedError - - export const AskInput = Request.partial({ id: true }).extend({ - ruleset: Ruleset, - }) - - export const ReplyInput = z.object({ - requestID: PermissionID.zod, - reply: Reply, - message: z.string().optional(), - }) - - export interface Interface { - readonly ask: (input: z.infer) => Effect.Effect - readonly reply: (input: z.infer) => Effect.Effect - readonly list: () => Effect.Effect - } - - interface PendingEntry { - info: Request - deferred: Deferred.Deferred - } - - export function evaluate(permission: string, pattern: string, ...rulesets: Ruleset[]): Rule { - log.info("evaluate", { permission, pattern, ruleset: rulesets.flat() }) - return evalRule(permission, pattern, ...rulesets) - } - - export class Service extends ServiceMap.Service()("@opencode/PermissionNext") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const { project } = yield* InstanceContext - const row = Database.use((db) => - db.select().from(PermissionTable).where(eq(PermissionTable.project_id, project.id)).get(), - ) - const pending = new Map() - const approved: Ruleset = row?.data ?? [] - - const ask = Effect.fn("Permission.ask")(function* (input: z.infer) { - const { ruleset, ...request } = input - let needsAsk = false - - for (const pattern of request.patterns) { - const rule = evaluate(request.permission, pattern, ruleset, approved) - log.info("evaluated", { permission: request.permission, pattern, action: rule }) - if (rule.action === "deny") { - return yield* new DeniedError({ - ruleset: ruleset.filter((rule) => Wildcard.match(request.permission, rule.permission)), - }) - } - if (rule.action === "allow") continue - needsAsk = true - } - - if (!needsAsk) return - - const id = request.id ?? PermissionID.ascending() - const info: Request = { - id, - ...request, - } - log.info("asking", { id, permission: info.permission, patterns: info.patterns }) - - const deferred = yield* Deferred.make() - pending.set(id, { info, deferred }) - void Bus.publish(Event.Asked, info) - return yield* Effect.ensuring( - Deferred.await(deferred), - Effect.sync(() => { - pending.delete(id) - }), - ) - }) - - const reply = Effect.fn("Permission.reply")(function* (input: z.infer) { - const existing = pending.get(input.requestID) - if (!existing) return - - pending.delete(input.requestID) - void Bus.publish(Event.Replied, { - sessionID: existing.info.sessionID, - requestID: existing.info.id, - reply: input.reply, - }) - - if (input.reply === "reject") { - yield* Deferred.fail( - existing.deferred, - input.message ? new CorrectedError({ feedback: input.message }) : new RejectedError(), - ) - - for (const [id, item] of pending.entries()) { - if (item.info.sessionID !== existing.info.sessionID) continue - pending.delete(id) - void Bus.publish(Event.Replied, { - sessionID: item.info.sessionID, - requestID: item.info.id, - reply: "reject", - }) - yield* Deferred.fail(item.deferred, new RejectedError()) - } - return - } - - yield* Deferred.succeed(existing.deferred, undefined) - if (input.reply === "once") return - - for (const pattern of existing.info.always) { - approved.push({ - permission: existing.info.permission, - pattern, - action: "allow", - }) - } - - for (const [id, item] of pending.entries()) { - if (item.info.sessionID !== existing.info.sessionID) continue - const ok = item.info.patterns.every( - (pattern) => evaluate(item.info.permission, pattern, approved).action === "allow", - ) - if (!ok) continue - pending.delete(id) - void Bus.publish(Event.Replied, { - sessionID: item.info.sessionID, - requestID: item.info.id, - reply: "always", - }) - yield* Deferred.succeed(item.deferred, undefined) - } - }) - - const list = Effect.fn("Permission.list")(function* () { - return Array.from(pending.values(), (item) => item.info) - }) - - return Service.of({ ask, reply, list }) - }), - ).pipe(Layer.fresh) - - function expand(pattern: string): string { - if (pattern.startsWith("~/")) return os.homedir() + pattern.slice(1) - if (pattern === "~") return os.homedir() - if (pattern.startsWith("$HOME/")) return os.homedir() + pattern.slice(5) - if (pattern.startsWith("$HOME")) return os.homedir() + pattern.slice(5) - return pattern - } - - export function fromConfig(permission: Config.Permission) { - const ruleset: Ruleset = [] - for (const [key, value] of Object.entries(permission)) { - if (typeof value === "string") { - ruleset.push({ permission: key, action: value, pattern: "*" }) - continue - } - ruleset.push( - ...Object.entries(value).map(([pattern, action]) => ({ permission: key, pattern: expand(pattern), action })), - ) - } - return ruleset - } - - export function merge(...rulesets: Ruleset[]): Ruleset { - return rulesets.flat() - } - - const EDIT_TOOLS = ["edit", "write", "apply_patch", "multiedit"] - - export function disabled(tools: string[], ruleset: Ruleset): Set { - const result = new Set() - for (const tool of tools) { - const permission = EDIT_TOOLS.includes(tool) ? "edit" : tool - const rule = ruleset.findLast((rule) => Wildcard.match(permission, rule.permission)) - if (!rule) continue - if (rule.pattern === "*" && rule.action === "deny") result.add(tool) - } - return result - } -} diff --git a/packages/opencode/src/project/bootstrap.ts b/packages/opencode/src/project/bootstrap.ts index 86403f3da94..a8ad84297a4 100644 --- a/packages/opencode/src/project/bootstrap.ts +++ b/packages/opencode/src/project/bootstrap.ts @@ -1,7 +1,11 @@ import { Plugin } from "../plugin" +import { Format } from "../format" import { LSP } from "../lsp" import { File } from "../file" +import { FileWatcher } from "../file/watcher" +import { Snapshot } from "../snapshot" import { Project } from "./project" +import { Vcs } from "./vcs" import { Bus } from "../bus" import { Command } from "../command" import { Instance } from "./instance" @@ -12,8 +16,12 @@ export async function InstanceBootstrap() { Log.Default.info("bootstrapping", { directory: Instance.directory }) await Plugin.init() ShareNext.init() + Format.init() await LSP.init() File.init() + FileWatcher.init() + Vcs.init() + Snapshot.init() Bus.subscribe(Command.Event.Executed, async (payload) => { if (payload.properties.name === Command.Default.INIT) { diff --git a/packages/opencode/src/project/instance.ts b/packages/opencode/src/project/instance.ts index 6075540161b..4c9b2e107bc 100644 --- a/packages/opencode/src/project/instance.ts +++ b/packages/opencode/src/project/instance.ts @@ -7,13 +7,13 @@ import { Context } from "../util/context" import { Project } from "./project" import { State } from "./state" -interface Context { +export interface Shape { directory: string worktree: string project: Project.Info } -const context = Context.create("instance") -const cache = new Map>() +const context = Context.create("instance") +const cache = new Map>() const disposal = { all: undefined as Promise | undefined, @@ -52,7 +52,7 @@ function boot(input: { directory: string; init?: () => Promise; project?: P }) } -function track(directory: string, next: Promise) { +function track(directory: string, next: Promise) { const task = next.catch((error) => { if (cache.get(directory) === task) cache.delete(directory) throw error diff --git a/packages/opencode/src/project/vcs.ts b/packages/opencode/src/project/vcs.ts index 9a9e42ecf88..dea25b91b43 100644 --- a/packages/opencode/src/project/vcs.ts +++ b/packages/opencode/src/project/vcs.ts @@ -1,7 +1,8 @@ import { Effect, Layer, ServiceMap } from "effect" import { Bus } from "@/bus" import { BusEvent } from "@/bus/bus-event" -import { InstanceContext } from "@/effect/instance-context" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" import { FileWatcher } from "@/file/watcher" import { Log } from "@/util/log" import { git } from "@/util/git" @@ -30,54 +31,81 @@ export namespace Vcs { export type Info = z.infer export interface Interface { + readonly init: () => Effect.Effect readonly branch: () => Effect.Effect } + interface State { + current: string | undefined + } + export class Service extends ServiceMap.Service()("@opencode/Vcs") {} export const layer = Layer.effect( Service, Effect.gen(function* () { - const instance = yield* InstanceContext - let currentBranch: string | undefined + const state = yield* InstanceState.make( + Effect.fn("Vcs.state")((ctx) => + Effect.gen(function* () { + if (ctx.project.vcs !== "git") { + return { current: undefined } + } + + const getCurrentBranch = async () => { + const result = await git(["rev-parse", "--abbrev-ref", "HEAD"], { + cwd: ctx.worktree, + }) + if (result.exitCode !== 0) return undefined + const text = result.text().trim() + return text || undefined + } - if (instance.project.vcs === "git") { - const getCurrentBranch = async () => { - const result = await git(["rev-parse", "--abbrev-ref", "HEAD"], { - cwd: instance.project.worktree, - }) - if (result.exitCode !== 0) return undefined - const text = result.text().trim() - return text || undefined - } + const value = { + current: yield* Effect.promise(() => getCurrentBranch()), + } + log.info("initialized", { branch: value.current }) - currentBranch = yield* Effect.promise(() => getCurrentBranch()) - log.info("initialized", { branch: currentBranch }) + yield* Effect.acquireRelease( + Effect.sync(() => + Bus.subscribe( + FileWatcher.Event.Updated, + Instance.bind(async (evt) => { + if (!evt.properties.file.endsWith("HEAD")) return + const next = await getCurrentBranch() + if (next !== value.current) { + log.info("branch changed", { from: value.current, to: next }) + value.current = next + Bus.publish(Event.BranchUpdated, { branch: next }) + } + }), + ), + ), + (unsubscribe) => Effect.sync(unsubscribe), + ) - yield* Effect.acquireRelease( - Effect.sync(() => - Bus.subscribe( - FileWatcher.Event.Updated, - Instance.bind(async (evt) => { - if (!evt.properties.file.endsWith("HEAD")) return - const next = await getCurrentBranch() - if (next !== currentBranch) { - log.info("branch changed", { from: currentBranch, to: next }) - currentBranch = next - Bus.publish(Event.BranchUpdated, { branch: next }) - } - }), - ), - ), - (unsubscribe) => Effect.sync(unsubscribe), - ) - } + return value + }), + ), + ) return Service.of({ + init: Effect.fn("Vcs.init")(function* () { + yield* InstanceState.get(state) + }), branch: Effect.fn("Vcs.branch")(function* () { - return currentBranch + return yield* InstanceState.use(state, (x) => x.current) }), }) }), - ).pipe(Layer.fresh) + ) + + const runPromise = makeRunPromise(Service, layer) + + export function init() { + return runPromise((svc) => svc.init()) + } + + export function branch() { + return runPromise((svc) => svc.branch()) + } } diff --git a/packages/opencode/src/provider/auth-service.ts b/packages/opencode/src/provider/auth-service.ts deleted file mode 100644 index 5045e1edd22..00000000000 --- a/packages/opencode/src/provider/auth-service.ts +++ /dev/null @@ -1,215 +0,0 @@ -import type { AuthOuathResult } from "@opencode-ai/plugin" -import { NamedError } from "@opencode-ai/util/error" -import * as Auth from "@/auth/effect" -import { ProviderID } from "./schema" -import { Array as Arr, Effect, Layer, Record, Result, ServiceMap, Struct } from "effect" -import z from "zod" - -export namespace ProviderAuth { - export const Method = z - .object({ - type: z.union([z.literal("oauth"), z.literal("api")]), - label: z.string(), - prompts: z - .array( - z.union([ - z.object({ - type: z.literal("text"), - key: z.string(), - message: z.string(), - placeholder: z.string().optional(), - when: z - .object({ - key: z.string(), - op: z.union([z.literal("eq"), z.literal("neq")]), - value: z.string(), - }) - .optional(), - }), - z.object({ - type: z.literal("select"), - key: z.string(), - message: z.string(), - options: z.array( - z.object({ - label: z.string(), - value: z.string(), - hint: z.string().optional(), - }), - ), - when: z - .object({ - key: z.string(), - op: z.union([z.literal("eq"), z.literal("neq")]), - value: z.string(), - }) - .optional(), - }), - ]), - ) - .optional(), - }) - .meta({ - ref: "ProviderAuthMethod", - }) - export type Method = z.infer - - export const Authorization = z - .object({ - url: z.string(), - method: z.union([z.literal("auto"), z.literal("code")]), - instructions: z.string(), - }) - .meta({ - ref: "ProviderAuthAuthorization", - }) - export type Authorization = z.infer - - export const OauthMissing = NamedError.create("ProviderAuthOauthMissing", z.object({ providerID: ProviderID.zod })) - - export const OauthCodeMissing = NamedError.create( - "ProviderAuthOauthCodeMissing", - z.object({ providerID: ProviderID.zod }), - ) - - export const OauthCallbackFailed = NamedError.create("ProviderAuthOauthCallbackFailed", z.object({})) - - export const ValidationFailed = NamedError.create( - "ProviderAuthValidationFailed", - z.object({ - field: z.string(), - message: z.string(), - }), - ) - - export type Error = - | Auth.AuthError - | InstanceType - | InstanceType - | InstanceType - | InstanceType - - export interface Interface { - readonly methods: () => Effect.Effect> - readonly authorize: (input: { - providerID: ProviderID - method: number - inputs?: Record - }) => Effect.Effect - readonly callback: (input: { providerID: ProviderID; method: number; code?: string }) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/ProviderAuth") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const auth = yield* Auth.Auth.Service - const hooks = yield* Effect.promise(async () => { - const mod = await import("../plugin") - const plugins = await mod.Plugin.list() - return Record.fromEntries( - Arr.filterMap(plugins, (x) => - x.auth?.provider !== undefined - ? Result.succeed([ProviderID.make(x.auth.provider), x.auth] as const) - : Result.failVoid, - ), - ) - }) - const pending = new Map() - - const methods = Effect.fn("ProviderAuth.methods")(function* () { - return Record.map(hooks, (item) => - item.methods.map( - (method): Method => ({ - type: method.type, - label: method.label, - prompts: method.prompts?.map((prompt) => { - if (prompt.type === "select") { - return { - type: "select" as const, - key: prompt.key, - message: prompt.message, - options: prompt.options, - when: prompt.when, - } - } - return { - type: "text" as const, - key: prompt.key, - message: prompt.message, - placeholder: prompt.placeholder, - when: prompt.when, - } - }), - }), - ), - ) - }) - - const authorize = Effect.fn("ProviderAuth.authorize")(function* (input: { - providerID: ProviderID - method: number - inputs?: Record - }) { - const method = hooks[input.providerID].methods[input.method] - if (method.type !== "oauth") return - - if (method.prompts && input.inputs) { - for (const prompt of method.prompts) { - if (prompt.type === "text" && prompt.validate && input.inputs[prompt.key] !== undefined) { - const error = prompt.validate(input.inputs[prompt.key]) - if (error) return yield* Effect.fail(new ValidationFailed({ field: prompt.key, message: error })) - } - } - } - - const result = yield* Effect.promise(() => method.authorize(input.inputs)) - pending.set(input.providerID, result) - return { - url: result.url, - method: result.method, - instructions: result.instructions, - } - }) - - const callback = Effect.fn("ProviderAuth.callback")(function* (input: { - providerID: ProviderID - method: number - code?: string - }) { - const match = pending.get(input.providerID) - if (!match) return yield* Effect.fail(new OauthMissing({ providerID: input.providerID })) - if (match.method === "code" && !input.code) { - return yield* Effect.fail(new OauthCodeMissing({ providerID: input.providerID })) - } - - const result = yield* Effect.promise(() => - match.method === "code" ? match.callback(input.code!) : match.callback(), - ) - if (!result || result.type !== "success") return yield* Effect.fail(new OauthCallbackFailed({})) - - if ("key" in result) { - yield* auth.set(input.providerID, { - type: "api", - key: result.key, - }) - } - - if ("refresh" in result) { - yield* auth.set(input.providerID, { - type: "oauth", - access: result.access, - refresh: result.refresh, - expires: result.expires, - ...(result.accountId ? { accountId: result.accountId } : {}), - }) - } - }) - - return Service.of({ methods, authorize, callback }) - }), - ).pipe(Layer.fresh) - - export const defaultLayer = layer.pipe(Layer.provide(Auth.Auth.layer)) -} diff --git a/packages/opencode/src/provider/auth.ts b/packages/opencode/src/provider/auth.ts index 8ede977a59f..2180d30632c 100644 --- a/packages/opencode/src/provider/auth.ts +++ b/packages/opencode/src/provider/auth.ts @@ -1,48 +1,250 @@ -import { runPromiseInstance } from "@/effect/runtime" -import { fn } from "@/util/fn" +import type { AuthOuathResult, Hooks } from "@opencode-ai/plugin" +import { NamedError } from "@opencode-ai/util/error" +import { Auth } from "@/auth" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { Plugin } from "../plugin" import { ProviderID } from "./schema" +import { Array as Arr, Effect, Layer, Record, Result, ServiceMap } from "effect" import z from "zod" -import { ProviderAuth as S } from "./auth-service" export namespace ProviderAuth { - export const Method = S.Method - export type Method = S.Method + export const Method = z + .object({ + type: z.union([z.literal("oauth"), z.literal("api")]), + label: z.string(), + prompts: z + .array( + z.union([ + z.object({ + type: z.literal("text"), + key: z.string(), + message: z.string(), + placeholder: z.string().optional(), + when: z + .object({ + key: z.string(), + op: z.union([z.literal("eq"), z.literal("neq")]), + value: z.string(), + }) + .optional(), + }), + z.object({ + type: z.literal("select"), + key: z.string(), + message: z.string(), + options: z.array( + z.object({ + label: z.string(), + value: z.string(), + hint: z.string().optional(), + }), + ), + when: z + .object({ + key: z.string(), + op: z.union([z.literal("eq"), z.literal("neq")]), + value: z.string(), + }) + .optional(), + }), + ]), + ) + .optional(), + }) + .meta({ + ref: "ProviderAuthMethod", + }) + export type Method = z.infer - export const Authorization = S.Authorization - export type Authorization = S.Authorization + export const Authorization = z + .object({ + url: z.string(), + method: z.union([z.literal("auto"), z.literal("code")]), + instructions: z.string(), + }) + .meta({ + ref: "ProviderAuthAuthorization", + }) + export type Authorization = z.infer - export const OauthMissing = S.OauthMissing - export const OauthCodeMissing = S.OauthCodeMissing - export const OauthCallbackFailed = S.OauthCallbackFailed - export const ValidationFailed = S.ValidationFailed - export type Error = S.Error + export const OauthMissing = NamedError.create("ProviderAuthOauthMissing", z.object({ providerID: ProviderID.zod })) - export type Interface = S.Interface - - export const Service = S.Service - export const layer = S.layer - export const defaultLayer = S.defaultLayer + export const OauthCodeMissing = NamedError.create( + "ProviderAuthOauthCodeMissing", + z.object({ providerID: ProviderID.zod }), + ) - export async function methods() { - return runPromiseInstance(S.Service.use((svc) => svc.methods())) - } + export const OauthCallbackFailed = NamedError.create("ProviderAuthOauthCallbackFailed", z.object({})) - export const authorize = fn( + export const ValidationFailed = NamedError.create( + "ProviderAuthValidationFailed", z.object({ - providerID: ProviderID.zod, - method: z.number(), - inputs: z.record(z.string(), z.string()).optional(), + field: z.string(), + message: z.string(), }), - async (input): Promise => - runPromiseInstance(S.Service.use((svc) => svc.authorize(input))), ) - export const callback = fn( - z.object({ - providerID: ProviderID.zod, - method: z.number(), - code: z.string().optional(), + export type Error = + | Auth.AuthError + | InstanceType + | InstanceType + | InstanceType + | InstanceType + + type Hook = NonNullable + + export interface Interface { + readonly methods: () => Effect.Effect> + readonly authorize: (input: { + providerID: ProviderID + method: number + inputs?: Record + }) => Effect.Effect + readonly callback: (input: { providerID: ProviderID; method: number; code?: string }) => Effect.Effect + } + + interface State { + hooks: Record + pending: Map + } + + export class Service extends ServiceMap.Service()("@opencode/ProviderAuth") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const auth = yield* Auth.Service + const state = yield* InstanceState.make( + Effect.fn("ProviderAuth.state")(() => + Effect.promise(async () => { + const plugins = await Plugin.list() + return { + hooks: Record.fromEntries( + Arr.filterMap(plugins, (x) => + x.auth?.provider !== undefined + ? Result.succeed([ProviderID.make(x.auth.provider), x.auth] as const) + : Result.failVoid, + ), + ), + pending: new Map(), + } + })), + ) + + const methods = Effect.fn("ProviderAuth.methods")(function* () { + const hooks = (yield* InstanceState.get(state)).hooks + return Record.map(hooks, (item) => + item.methods.map( + (method): Method => ({ + type: method.type, + label: method.label, + prompts: method.prompts?.map((prompt) => { + if (prompt.type === "select") { + return { + type: "select" as const, + key: prompt.key, + message: prompt.message, + options: prompt.options, + when: prompt.when, + } + } + return { + type: "text" as const, + key: prompt.key, + message: prompt.message, + placeholder: prompt.placeholder, + when: prompt.when, + } + }), + }), + ), + ) + }) + + const authorize = Effect.fn("ProviderAuth.authorize")(function* (input: { + providerID: ProviderID + method: number + inputs?: Record + }) { + const { hooks, pending } = yield* InstanceState.get(state) + const method = hooks[input.providerID].methods[input.method] + if (method.type !== "oauth") return + + if (method.prompts && input.inputs) { + for (const prompt of method.prompts) { + if (prompt.type === "text" && prompt.validate && input.inputs[prompt.key] !== undefined) { + const error = prompt.validate(input.inputs[prompt.key]) + if (error) return yield* Effect.fail(new ValidationFailed({ field: prompt.key, message: error })) + } + } + } + + const result = yield* Effect.promise(() => method.authorize(input.inputs)) + pending.set(input.providerID, result) + return { + url: result.url, + method: result.method, + instructions: result.instructions, + } + }) + + const callback = Effect.fn("ProviderAuth.callback")(function* (input: { + providerID: ProviderID + method: number + code?: string + }) { + const pending = (yield* InstanceState.get(state)).pending + const match = pending.get(input.providerID) + if (!match) return yield* Effect.fail(new OauthMissing({ providerID: input.providerID })) + if (match.method === "code" && !input.code) { + return yield* Effect.fail(new OauthCodeMissing({ providerID: input.providerID })) + } + + const result = yield* Effect.promise(() => + match.method === "code" ? match.callback(input.code!) : match.callback(), + ) + if (!result || result.type !== "success") return yield* Effect.fail(new OauthCallbackFailed({})) + + if ("key" in result) { + yield* auth.set(input.providerID, { + type: "api", + key: result.key, + }) + } + + if ("refresh" in result) { + yield* auth.set(input.providerID, { + type: "oauth", + access: result.access, + refresh: result.refresh, + expires: result.expires, + ...(result.accountId ? { accountId: result.accountId } : {}), + }) + } + }) + + return Service.of({ methods, authorize, callback }) }), - async (input) => runPromiseInstance(S.Service.use((svc) => svc.callback(input))), ) + + export const defaultLayer = layer.pipe(Layer.provide(Auth.layer)) + + const runPromise = makeRunPromise(Service, defaultLayer) + + export async function methods() { + return runPromise((svc) => svc.methods()) + } + + export async function authorize(input: { + providerID: ProviderID + method: number + inputs?: Record + }): Promise { + return runPromise((svc) => svc.authorize(input)) + } + + export async function callback(input: { providerID: ProviderID; method: number; code?: string }) { + return runPromise((svc) => svc.callback(input)) + } } diff --git a/packages/opencode/src/question/index.ts b/packages/opencode/src/question/index.ts index de009519083..a0d62d94b83 100644 --- a/packages/opencode/src/question/index.ts +++ b/packages/opencode/src/question/index.ts @@ -1,49 +1,221 @@ -import { runPromiseInstance } from "@/effect/runtime" -import type { MessageID, SessionID } from "@/session/schema" -import type { QuestionID } from "./schema" -import { Question as S } from "./service" +import { Deferred, Effect, Layer, Schema, ServiceMap } from "effect" +import { Bus } from "@/bus" +import { BusEvent } from "@/bus/bus-event" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { SessionID, MessageID } from "@/session/schema" +import { Log } from "@/util/log" +import z from "zod" +import { QuestionID } from "./schema" export namespace Question { - export const Option = S.Option - export type Option = S.Option + const log = Log.create({ service: "question" }) - export const Info = S.Info - export type Info = S.Info + // Schemas - export const Request = S.Request - export type Request = S.Request + export const Option = z + .object({ + label: z.string().describe("Display text (1-5 words, concise)"), + description: z.string().describe("Explanation of choice"), + }) + .meta({ ref: "QuestionOption" }) + export type Option = z.infer - export const Answer = S.Answer - export type Answer = S.Answer + export const Info = z + .object({ + question: z.string().describe("Complete question"), + header: z.string().describe("Very short label (max 30 chars)"), + options: z.array(Option).describe("Available choices"), + multiple: z.boolean().optional().describe("Allow selecting multiple choices"), + custom: z.boolean().optional().describe("Allow typing a custom answer (default: true)"), + }) + .meta({ ref: "QuestionInfo" }) + export type Info = z.infer - export const Reply = S.Reply - export type Reply = S.Reply + export const Request = z + .object({ + id: QuestionID.zod, + sessionID: SessionID.zod, + questions: z.array(Info).describe("Questions to ask"), + tool: z + .object({ + messageID: MessageID.zod, + callID: z.string(), + }) + .optional(), + }) + .meta({ ref: "QuestionRequest" }) + export type Request = z.infer - export const Event = S.Event - export const RejectedError = S.RejectedError + export const Answer = z.array(z.string()).meta({ ref: "QuestionAnswer" }) + export type Answer = z.infer - export type Interface = S.Interface + export const Reply = z.object({ + answers: z + .array(Answer) + .describe("User answers in order of questions (each answer is an array of selected labels)"), + }) + export type Reply = z.infer - export const Service = S.Service - export const layer = S.layer + export const Event = { + Asked: BusEvent.define("question.asked", Request), + Replied: BusEvent.define( + "question.replied", + z.object({ + sessionID: SessionID.zod, + requestID: QuestionID.zod, + answers: z.array(Answer), + }), + ), + Rejected: BusEvent.define( + "question.rejected", + z.object({ + sessionID: SessionID.zod, + requestID: QuestionID.zod, + }), + ), + } + + export class RejectedError extends Schema.TaggedErrorClass()("QuestionRejectedError", {}) { + override get message() { + return "The user dismissed this question" + } + } + + interface PendingEntry { + info: Request + deferred: Deferred.Deferred + } + + interface State { + pending: Map + } + + // Service + + export interface Interface { + readonly ask: (input: { + sessionID: SessionID + questions: Info[] + tool?: { messageID: MessageID; callID: string } + }) => Effect.Effect + readonly reply: (input: { requestID: QuestionID; answers: Answer[] }) => Effect.Effect + readonly reject: (requestID: QuestionID) => Effect.Effect + readonly list: () => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/Question") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const state = yield* InstanceState.make( + Effect.fn("Question.state")(function* () { + const state = { + pending: new Map(), + } + + yield* Effect.addFinalizer(() => + Effect.gen(function* () { + for (const item of state.pending.values()) { + yield* Deferred.fail(item.deferred, new RejectedError()) + } + state.pending.clear() + }), + ) + + return state + }), + ) + + const ask = Effect.fn("Question.ask")(function* (input: { + sessionID: SessionID + questions: Info[] + tool?: { messageID: MessageID; callID: string } + }) { + const pending = (yield* InstanceState.get(state)).pending + const id = QuestionID.ascending() + log.info("asking", { id, questions: input.questions.length }) + + const deferred = yield* Deferred.make() + const info: Request = { + id, + sessionID: input.sessionID, + questions: input.questions, + tool: input.tool, + } + pending.set(id, { info, deferred }) + Bus.publish(Event.Asked, info) + + return yield* Effect.ensuring( + Deferred.await(deferred), + Effect.sync(() => { + pending.delete(id) + }), + ) + }) + + const reply = Effect.fn("Question.reply")(function* (input: { requestID: QuestionID; answers: Answer[] }) { + const pending = (yield* InstanceState.get(state)).pending + const existing = pending.get(input.requestID) + if (!existing) { + log.warn("reply for unknown request", { requestID: input.requestID }) + return + } + pending.delete(input.requestID) + log.info("replied", { requestID: input.requestID, answers: input.answers }) + Bus.publish(Event.Replied, { + sessionID: existing.info.sessionID, + requestID: existing.info.id, + answers: input.answers, + }) + yield* Deferred.succeed(existing.deferred, input.answers) + }) + + const reject = Effect.fn("Question.reject")(function* (requestID: QuestionID) { + const pending = (yield* InstanceState.get(state)).pending + const existing = pending.get(requestID) + if (!existing) { + log.warn("reject for unknown request", { requestID }) + return + } + pending.delete(requestID) + log.info("rejected", { requestID }) + Bus.publish(Event.Rejected, { + sessionID: existing.info.sessionID, + requestID: existing.info.id, + }) + yield* Deferred.fail(existing.deferred, new RejectedError()) + }) + + const list = Effect.fn("Question.list")(function* () { + const pending = (yield* InstanceState.get(state)).pending + return Array.from(pending.values(), (x) => x.info) + }) + + return Service.of({ ask, reply, reject, list }) + }), + ) + + const runPromise = makeRunPromise(Service, layer) export async function ask(input: { sessionID: SessionID questions: Info[] tool?: { messageID: MessageID; callID: string } }): Promise { - return runPromiseInstance(S.Service.use((s) => s.ask(input))) + return runPromise((s) => s.ask(input)) } export async function reply(input: { requestID: QuestionID; answers: Answer[] }) { - return runPromiseInstance(S.Service.use((s) => s.reply(input))) + return runPromise((s) => s.reply(input)) } export async function reject(requestID: QuestionID) { - return runPromiseInstance(S.Service.use((s) => s.reject(requestID))) + return runPromise((s) => s.reject(requestID)) } export async function list() { - return runPromiseInstance(S.Service.use((s) => s.list())) + return runPromise((s) => s.list()) } } diff --git a/packages/opencode/src/question/service.ts b/packages/opencode/src/question/service.ts deleted file mode 100644 index a23703e97ac..00000000000 --- a/packages/opencode/src/question/service.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { Deferred, Effect, Layer, Schema, ServiceMap } from "effect" -import { Bus } from "@/bus" -import { BusEvent } from "@/bus/bus-event" -import { SessionID, MessageID } from "@/session/schema" -import { Log } from "@/util/log" -import z from "zod" -import { QuestionID } from "./schema" - -const log = Log.create({ service: "question" }) - -export namespace Question { - // Schemas - - export const Option = z - .object({ - label: z.string().describe("Display text (1-5 words, concise)"), - description: z.string().describe("Explanation of choice"), - }) - .meta({ ref: "QuestionOption" }) - export type Option = z.infer - - export const Info = z - .object({ - question: z.string().describe("Complete question"), - header: z.string().describe("Very short label (max 30 chars)"), - options: z.array(Option).describe("Available choices"), - multiple: z.boolean().optional().describe("Allow selecting multiple choices"), - custom: z.boolean().optional().describe("Allow typing a custom answer (default: true)"), - }) - .meta({ ref: "QuestionInfo" }) - export type Info = z.infer - - export const Request = z - .object({ - id: QuestionID.zod, - sessionID: SessionID.zod, - questions: z.array(Info).describe("Questions to ask"), - tool: z - .object({ - messageID: MessageID.zod, - callID: z.string(), - }) - .optional(), - }) - .meta({ ref: "QuestionRequest" }) - export type Request = z.infer - - export const Answer = z.array(z.string()).meta({ ref: "QuestionAnswer" }) - export type Answer = z.infer - - export const Reply = z.object({ - answers: z - .array(Answer) - .describe("User answers in order of questions (each answer is an array of selected labels)"), - }) - export type Reply = z.infer - - export const Event = { - Asked: BusEvent.define("question.asked", Request), - Replied: BusEvent.define( - "question.replied", - z.object({ - sessionID: SessionID.zod, - requestID: QuestionID.zod, - answers: z.array(Answer), - }), - ), - Rejected: BusEvent.define( - "question.rejected", - z.object({ - sessionID: SessionID.zod, - requestID: QuestionID.zod, - }), - ), - } - - export class RejectedError extends Schema.TaggedErrorClass()("QuestionRejectedError", {}) { - override get message() { - return "The user dismissed this question" - } - } - - interface PendingEntry { - info: Request - deferred: Deferred.Deferred - } - - // Service - - export interface Interface { - readonly ask: (input: { - sessionID: SessionID - questions: Info[] - tool?: { messageID: MessageID; callID: string } - }) => Effect.Effect - readonly reply: (input: { requestID: QuestionID; answers: Answer[] }) => Effect.Effect - readonly reject: (requestID: QuestionID) => Effect.Effect - readonly list: () => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Question") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const pending = new Map() - - const ask = Effect.fn("Question.ask")(function* (input: { - sessionID: SessionID - questions: Info[] - tool?: { messageID: MessageID; callID: string } - }) { - const id = QuestionID.ascending() - log.info("asking", { id, questions: input.questions.length }) - - const deferred = yield* Deferred.make() - const info: Request = { - id, - sessionID: input.sessionID, - questions: input.questions, - tool: input.tool, - } - pending.set(id, { info, deferred }) - Bus.publish(Event.Asked, info) - - return yield* Effect.ensuring( - Deferred.await(deferred), - Effect.sync(() => { - pending.delete(id) - }), - ) - }) - - const reply = Effect.fn("Question.reply")(function* (input: { requestID: QuestionID; answers: Answer[] }) { - const existing = pending.get(input.requestID) - if (!existing) { - log.warn("reply for unknown request", { requestID: input.requestID }) - return - } - pending.delete(input.requestID) - log.info("replied", { requestID: input.requestID, answers: input.answers }) - Bus.publish(Event.Replied, { - sessionID: existing.info.sessionID, - requestID: existing.info.id, - answers: input.answers, - }) - yield* Deferred.succeed(existing.deferred, input.answers) - }) - - const reject = Effect.fn("Question.reject")(function* (requestID: QuestionID) { - const existing = pending.get(requestID) - if (!existing) { - log.warn("reject for unknown request", { requestID }) - return - } - pending.delete(requestID) - log.info("rejected", { requestID }) - Bus.publish(Event.Rejected, { - sessionID: existing.info.sessionID, - requestID: existing.info.id, - }) - yield* Deferred.fail(existing.deferred, new RejectedError()) - }) - - const list = Effect.fn("Question.list")(function* () { - return Array.from(pending.values(), (x) => x.info) - }) - - return Service.of({ ask, reply, reject, list }) - }), - ).pipe(Layer.fresh) -} diff --git a/packages/opencode/src/server/routes/permission.ts b/packages/opencode/src/server/routes/permission.ts index cc6c26d4358..aae9a9c3a69 100644 --- a/packages/opencode/src/server/routes/permission.ts +++ b/packages/opencode/src/server/routes/permission.ts @@ -1,7 +1,7 @@ import { Hono } from "hono" import { describeRoute, validator, resolver } from "hono-openapi" import z from "zod" -import { PermissionNext } from "@/permission" +import { Permission } from "@/permission" import { PermissionID } from "@/permission/schema" import { errors } from "../error" import { lazy } from "../../util/lazy" @@ -32,11 +32,11 @@ export const PermissionRoutes = lazy(() => requestID: PermissionID.zod, }), ), - validator("json", z.object({ reply: PermissionNext.Reply, message: z.string().optional() })), + validator("json", z.object({ reply: Permission.Reply, message: z.string().optional() })), async (c) => { const params = c.req.valid("param") const json = c.req.valid("json") - await PermissionNext.reply({ + await Permission.reply({ requestID: params.requestID, reply: json.reply, message: json.message, @@ -55,14 +55,14 @@ export const PermissionRoutes = lazy(() => description: "List of pending permissions", content: { "application/json": { - schema: resolver(PermissionNext.Request.array()), + schema: resolver(Permission.Request.array()), }, }, }, }, }), async (c) => { - const permissions = await PermissionNext.list() + const permissions = await Permission.list() return c.json(permissions) }, ), diff --git a/packages/opencode/src/server/routes/session.ts b/packages/opencode/src/server/routes/session.ts index 564bb496b50..e399636ad84 100644 --- a/packages/opencode/src/server/routes/session.ts +++ b/packages/opencode/src/server/routes/session.ts @@ -12,9 +12,9 @@ import { SessionStatus } from "@/session/status" import { SessionSummary } from "@/session/summary" import { Todo } from "../../session/todo" import { Agent } from "../../agent/agent" -import { Snapshot } from "@/snapshot/service" +import { Snapshot } from "@/snapshot" import { Log } from "../../util/log" -import { PermissionNext } from "@/permission" +import { Permission } from "@/permission" import { PermissionID } from "@/permission/schema" import { ModelID, ProviderID } from "@/provider/schema" import { errors } from "../error" @@ -1010,10 +1010,10 @@ export const SessionRoutes = lazy(() => permissionID: PermissionID.zod, }), ), - validator("json", z.object({ response: PermissionNext.Reply })), + validator("json", z.object({ response: Permission.Reply })), async (c) => { const params = c.req.valid("param") - PermissionNext.reply({ + Permission.reply({ requestID: params.permissionID, reply: c.req.valid("json").response, }) diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index a68becb1fba..7ead4df8a3c 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -12,9 +12,8 @@ import { Format } from "../format" import { TuiRoutes } from "./routes/tui" import { Instance } from "../project/instance" import { Vcs } from "../project/vcs" -import { runPromiseInstance } from "@/effect/runtime" import { Agent } from "../agent/agent" -import { Skill } from "../skill/skill" +import { Skill } from "../skill" import { Auth } from "../auth" import { Flag } from "../flag/flag" import { Command } from "../command" @@ -152,7 +151,7 @@ export namespace Server { providerID: ProviderID.zod, }), ), - validator("json", Auth.Info), + validator("json", Auth.Info.zod), async (c) => { const providerID = c.req.valid("param").providerID const info = c.req.valid("json") @@ -331,7 +330,7 @@ export namespace Server { }, }), async (c) => { - const branch = await runPromiseInstance(Vcs.Service.use((s) => s.branch())) + const branch = await Vcs.branch() return c.json({ branch, }) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index bbb7c97fd25..f2d436ff10d 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -20,7 +20,7 @@ import { Instance } from "../project/instance" import { SessionPrompt } from "./prompt" import { fn } from "@/util/fn" import { Command } from "../command" -import { Snapshot } from "@/snapshot/service" +import { Snapshot } from "@/snapshot" import { WorkspaceContext } from "../control-plane/workspace-context" import { ProjectID } from "../project/schema" import { WorkspaceID } from "../control-plane/schema" @@ -28,7 +28,7 @@ import { SessionID, MessageID, PartID } from "./schema" import type { Provider } from "@/provider/provider" import { ModelID, ProviderID } from "@/provider/schema" -import { Permission as PermissionNext } from "@/permission/service" +import { Permission } from "@/permission" import { Global } from "@/global" import type { LanguageModelV2Usage } from "@ai-sdk/provider" import { iife } from "@/util/iife" @@ -148,7 +148,7 @@ export namespace Session { compacting: z.number().optional(), archived: z.number().optional(), }), - permission: PermissionNext.Ruleset.optional(), + permission: Permission.Ruleset.optional(), revert: z .object({ messageID: MessageID.zod, @@ -300,7 +300,7 @@ export namespace Session { parentID?: SessionID workspaceID?: WorkspaceID directory: string - permission?: PermissionNext.Ruleset + permission?: Permission.Ruleset }) { const result: Info = { id: SessionID.descending(input.id), @@ -423,7 +423,7 @@ export namespace Session { export const setPermission = fn( z.object({ sessionID: SessionID.zod, - permission: PermissionNext.Ruleset, + permission: Permission.Ruleset, }), async (input) => { return Database.use((db) => { diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index b28a595e1b8..a8009c49d49 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -21,7 +21,7 @@ import type { MessageV2 } from "./message-v2" import { Plugin } from "@/plugin" import { SystemPrompt } from "./system" import { Flag } from "@/flag/flag" -import { Permission as PermissionNext } from "@/permission/service" +import { Permission } from "@/permission" import { Auth } from "@/auth" export namespace LLM { @@ -33,7 +33,7 @@ export namespace LLM { sessionID: string model: Provider.Model agent: Agent.Info - permission?: PermissionNext.Ruleset + permission?: Permission.Ruleset system: string[] abort: AbortSignal messages: ModelMessage[] @@ -286,9 +286,9 @@ export namespace LLM { } async function resolveTools(input: Pick) { - const disabled = PermissionNext.disabled( + const disabled = Permission.disabled( Object.keys(input.tools), - PermissionNext.merge(input.agent.permission, input.permission ?? []), + Permission.merge(input.agent.permission, input.permission ?? []), ) for (const tool of Object.keys(input.tools)) { if (input.user.tools?.[tool] === false || disabled.has(tool)) { diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index 3e1816e68e0..f1335f6f21a 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -4,7 +4,7 @@ import z from "zod" import { NamedError } from "@opencode-ai/util/error" import { APICallError, convertToModelMessages, LoadAPIKeyError, type ModelMessage, type UIMessage } from "ai" import { LSP } from "../lsp" -import { Snapshot } from "@/snapshot/service" +import { Snapshot } from "@/snapshot" import { fn } from "@/util/fn" import { Database, NotFoundError, and, desc, eq, inArray, lt, or } from "@/storage/db" import { MessageTable, PartTable, SessionTable } from "./session.sql" diff --git a/packages/opencode/src/session/processor.ts b/packages/opencode/src/session/processor.ts index 2fe3310ca6d..c3a572f5b3f 100644 --- a/packages/opencode/src/session/processor.ts +++ b/packages/opencode/src/session/processor.ts @@ -12,8 +12,8 @@ import type { Provider } from "@/provider/provider" import { LLM } from "./llm" import { Config } from "@/config/config" import { SessionCompaction } from "./compaction" -import { PermissionNext } from "@/permission" -import { Question } from "@/question/service" +import { Permission } from "@/permission" +import { Question } from "@/question" import { PartID } from "./schema" import type { SessionID, MessageID } from "./schema" @@ -163,7 +163,7 @@ export namespace SessionProcessor { ) ) { const agent = await Agent.get(input.assistantMessage.agent) - await PermissionNext.ask({ + await Permission.ask({ permission: "doom_loop", patterns: [value.toolName], sessionID: input.assistantMessage.sessionID, @@ -219,7 +219,7 @@ export namespace SessionProcessor { }) if ( - value.error instanceof PermissionNext.RejectedError || + value.error instanceof Permission.RejectedError || value.error instanceof Question.RejectedError ) { blocked = shouldBreak diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index bac958ec103..5625c571cee 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -41,7 +41,7 @@ import { fn } from "@/util/fn" import { SessionProcessor } from "./processor" import { TaskTool } from "@/tool/task" import { Tool } from "@/tool/tool" -import { PermissionNext } from "@/permission" +import { Permission } from "@/permission" import { SessionStatus } from "./status" import { LLM } from "./llm" import { iife } from "@/util/iife" @@ -168,7 +168,7 @@ export namespace SessionPrompt { // this is backwards compatibility for allowing `tools` to be specified when // prompting - const permissions: PermissionNext.Ruleset = [] + const permissions: Permission.Ruleset = [] for (const [tool, enabled] of Object.entries(input.tools ?? {})) { permissions.push({ permission: tool, @@ -437,10 +437,10 @@ export namespace SessionPrompt { } satisfies MessageV2.ToolPart)) as MessageV2.ToolPart }, async ask(req) { - await PermissionNext.ask({ + await Permission.ask({ ...req, sessionID: sessionID, - ruleset: PermissionNext.merge(taskAgent.permission, session.permission ?? []), + ruleset: Permission.merge(taskAgent.permission, session.permission ?? []), }) }, } @@ -781,11 +781,11 @@ export namespace SessionPrompt { } }, async ask(req) { - await PermissionNext.ask({ + await Permission.ask({ ...req, sessionID: input.session.id, tool: { messageID: input.processor.message.id, callID: options.toolCallId }, - ruleset: PermissionNext.merge(input.agent.permission, input.session.permission ?? []), + ruleset: Permission.merge(input.agent.permission, input.session.permission ?? []), }) }, }) @@ -1271,7 +1271,7 @@ export namespace SessionPrompt { if (part.type === "agent") { // Check if this agent would be denied by task permission - const perm = PermissionNext.evaluate("task", part.name, agent.permission) + const perm = Permission.evaluate("task", part.name, agent.permission) const hint = perm.action === "deny" ? " . Invoked by user; guaranteed to exist." : "" return [ { diff --git a/packages/opencode/src/session/session.sql.ts b/packages/opencode/src/session/session.sql.ts index f73e16804a9..189a596873a 100644 --- a/packages/opencode/src/session/session.sql.ts +++ b/packages/opencode/src/session/session.sql.ts @@ -1,8 +1,8 @@ import { sqliteTable, text, integer, index, primaryKey } from "drizzle-orm/sqlite-core" import { ProjectTable } from "../project/project.sql" import type { MessageV2 } from "./message-v2" -import type { Snapshot } from "../snapshot/service" -import type { Permission as PermissionNext } from "../permission/service" +import type { Snapshot } from "../snapshot" +import type { Permission } from "../permission" import type { ProjectID } from "../project/schema" import type { SessionID, MessageID, PartID } from "./schema" import type { WorkspaceID } from "../control-plane/schema" @@ -31,7 +31,7 @@ export const SessionTable = sqliteTable( summary_files: integer(), summary_diffs: text({ mode: "json" }).$type(), revert: text({ mode: "json" }).$type<{ messageID: MessageID; partID?: PartID; snapshot?: string; diff?: string }>(), - permission: text({ mode: "json" }).$type(), + permission: text({ mode: "json" }).$type(), ...Timestamps, time_compacting: integer(), time_archived: integer(), @@ -99,5 +99,5 @@ export const PermissionTable = sqliteTable("permission", { .primaryKey() .references(() => ProjectTable.id, { onDelete: "cascade" }), ...Timestamps, - data: text({ mode: "json" }).notNull().$type(), + data: text({ mode: "json" }).notNull().$type(), }) diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts index ead715cfb7f..ca324652d9d 100644 --- a/packages/opencode/src/session/system.ts +++ b/packages/opencode/src/session/system.ts @@ -11,7 +11,7 @@ import PROMPT_CODEX from "./prompt/codex.txt" import PROMPT_TRINITY from "./prompt/trinity.txt" import type { Provider } from "@/provider/provider" import type { Agent } from "@/agent/agent" -import { Permission as PermissionNext } from "@/permission/service" +import { Permission } from "@/permission" import { Skill } from "@/skill" export namespace SystemPrompt { @@ -53,7 +53,7 @@ export namespace SystemPrompt { } export async function skills(agent: Agent.Info) { - if (PermissionNext.disabled(["skill"], agent.permission).has("skill")) return + if (Permission.disabled(["skill"], agent.permission).has("skill")) return const list = await Skill.available(agent) diff --git a/packages/opencode/src/share/share-next.ts b/packages/opencode/src/share/share-next.ts index e911656c900..e331e8fc6a0 100644 --- a/packages/opencode/src/share/share-next.ts +++ b/packages/opencode/src/share/share-next.ts @@ -45,7 +45,7 @@ export namespace ShareNext { }> { const headers: Record = {} - const active = Account.active() + const active = await Account.active() if (!active?.active_org_id) { const baseUrl = await Config.get().then((x) => x.enterprise?.url ?? "https://opncd.ai") return { headers, api: legacyApi, baseUrl } diff --git a/packages/opencode/src/skill/index.ts b/packages/opencode/src/skill/index.ts index 67bef3bd38f..b770ab83cb6 100644 --- a/packages/opencode/src/skill/index.ts +++ b/packages/opencode/src/skill/index.ts @@ -1 +1,260 @@ -export * from "./skill" +import os from "os" +import path from "path" +import { pathToFileURL } from "url" +import z from "zod" +import { Effect, Layer, ServiceMap } from "effect" +import { NamedError } from "@opencode-ai/util/error" +import type { Agent } from "@/agent/agent" +import { Bus } from "@/bus" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { Flag } from "@/flag/flag" +import { Global } from "@/global" +import { Permission } from "@/permission" +import { Filesystem } from "@/util/filesystem" +import { Config } from "../config/config" +import { ConfigMarkdown } from "../config/markdown" +import { Glob } from "../util/glob" +import { Log } from "../util/log" +import { Discovery } from "./discovery" + +export namespace Skill { + const log = Log.create({ service: "skill" }) + const EXTERNAL_DIRS = [".claude", ".agents"] + const EXTERNAL_SKILL_PATTERN = "skills/**/SKILL.md" + const OPENCODE_SKILL_PATTERN = "{skill,skills}/**/SKILL.md" + const SKILL_PATTERN = "**/SKILL.md" + + export const Info = z.object({ + name: z.string(), + description: z.string(), + location: z.string(), + content: z.string(), + }) + export type Info = z.infer + + export const InvalidError = NamedError.create( + "SkillInvalidError", + z.object({ + path: z.string(), + message: z.string().optional(), + issues: z.custom().optional(), + }), + ) + + export const NameMismatchError = NamedError.create( + "SkillNameMismatchError", + z.object({ + path: z.string(), + expected: z.string(), + actual: z.string(), + }), + ) + + type State = { + skills: Record + dirs: Set + task?: Promise + } + + type Cache = State & { + ensure: () => Promise + } + + export interface Interface { + readonly get: (name: string) => Effect.Effect + readonly all: () => Effect.Effect + readonly dirs: () => Effect.Effect + readonly available: (agent?: Agent.Info) => Effect.Effect + } + + const add = async (state: State, match: string) => { + const md = await ConfigMarkdown.parse(match).catch(async (err) => { + const message = ConfigMarkdown.FrontmatterError.isInstance(err) + ? err.data.message + : `Failed to parse skill ${match}` + const { Session } = await import("@/session") + Bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() }) + log.error("failed to load skill", { skill: match, err }) + return undefined + }) + + if (!md) return + + const parsed = Info.pick({ name: true, description: true }).safeParse(md.data) + if (!parsed.success) return + + if (state.skills[parsed.data.name]) { + log.warn("duplicate skill name", { + name: parsed.data.name, + existing: state.skills[parsed.data.name].location, + duplicate: match, + }) + } + + state.dirs.add(path.dirname(match)) + state.skills[parsed.data.name] = { + name: parsed.data.name, + description: parsed.data.description, + location: match, + content: md.content, + } + } + + const scan = async (state: State, root: string, pattern: string, opts?: { dot?: boolean; scope?: string }) => { + return Glob.scan(pattern, { + cwd: root, + absolute: true, + include: "file", + symlink: true, + dot: opts?.dot, + }) + .then((matches) => Promise.all(matches.map((match) => add(state, match)))) + .catch((error) => { + if (!opts?.scope) throw error + log.error(`failed to scan ${opts.scope} skills`, { dir: root, error }) + }) + } + + // TODO: Migrate to Effect + const create = (discovery: Discovery.Interface, directory: string, worktree: string): Cache => { + const state: State = { + skills: {}, + dirs: new Set(), + } + + const load = async () => { + if (!Flag.OPENCODE_DISABLE_EXTERNAL_SKILLS) { + for (const dir of EXTERNAL_DIRS) { + const root = path.join(Global.Path.home, dir) + if (!(await Filesystem.isDir(root))) continue + await scan(state, root, EXTERNAL_SKILL_PATTERN, { dot: true, scope: "global" }) + } + + for await (const root of Filesystem.up({ + targets: EXTERNAL_DIRS, + start: directory, + stop: worktree, + })) { + await scan(state, root, EXTERNAL_SKILL_PATTERN, { dot: true, scope: "project" }) + } + } + + for (const dir of await Config.directories()) { + await scan(state, dir, OPENCODE_SKILL_PATTERN) + } + + const cfg = await Config.get() + for (const item of cfg.skills?.paths ?? []) { + const expanded = item.startsWith("~/") ? path.join(os.homedir(), item.slice(2)) : item + const dir = path.isAbsolute(expanded) ? expanded : path.join(directory, expanded) + if (!(await Filesystem.isDir(dir))) { + log.warn("skill path not found", { path: dir }) + continue + } + + await scan(state, dir, SKILL_PATTERN) + } + + for (const url of cfg.skills?.urls ?? []) { + for (const dir of await Effect.runPromise(discovery.pull(url))) { + state.dirs.add(dir) + await scan(state, dir, SKILL_PATTERN) + } + } + + log.info("init", { count: Object.keys(state.skills).length }) + } + + const ensure = () => { + if (state.task) return state.task + state.task = load().catch((err) => { + state.task = undefined + throw err + }) + return state.task + } + + return { ...state, ensure } + } + + export class Service extends ServiceMap.Service()("@opencode/Skill") {} + + export const layer: Layer.Layer = Layer.effect( + Service, + Effect.gen(function* () { + const discovery = yield* Discovery.Service + const state = yield* InstanceState.make(Effect.fn("Skill.state")((ctx) => Effect.sync(() => create(discovery, ctx.directory, ctx.worktree)))) + + const ensure = Effect.fn("Skill.ensure")(function* () { + const cache = yield* InstanceState.get(state) + yield* Effect.promise(() => cache.ensure()) + return cache + }) + + const get = Effect.fn("Skill.get")(function* (name: string) { + const cache = yield* ensure() + return cache.skills[name] + }) + + const all = Effect.fn("Skill.all")(function* () { + const cache = yield* ensure() + return Object.values(cache.skills) + }) + + const dirs = Effect.fn("Skill.dirs")(function* () { + const cache = yield* ensure() + return Array.from(cache.dirs) + }) + + const available = Effect.fn("Skill.available")(function* (agent?: Agent.Info) { + const cache = yield* ensure() + const list = Object.values(cache.skills).toSorted((a, b) => a.name.localeCompare(b.name)) + if (!agent) return list + return list.filter((skill) => Permission.evaluate("skill", skill.name, agent.permission).action !== "deny") + }) + + return Service.of({ get, all, dirs, available }) + }), + ) + + export const defaultLayer: Layer.Layer = layer.pipe(Layer.provide(Discovery.defaultLayer)) + + export function fmt(list: Info[], opts: { verbose: boolean }) { + if (list.length === 0) return "No skills are currently available." + + if (opts.verbose) { + return [ + "", + ...list.flatMap((skill) => [ + " ", + ` ${skill.name}`, + ` ${skill.description}`, + ` ${pathToFileURL(skill.location).href}`, + " ", + ]), + "", + ].join("\n") + } + + return ["## Available Skills", ...list.map((skill) => `- **${skill.name}**: ${skill.description}`)].join("\n") + } + + const runPromise = makeRunPromise(Service, defaultLayer) + + export async function get(name: string) { + return runPromise((skill) => skill.get(name)) + } + + export async function all() { + return runPromise((skill) => skill.all()) + } + + export async function dirs() { + return runPromise((skill) => skill.dirs()) + } + + export async function available(agent?: Agent.Info) { + return runPromise((skill) => skill.available(agent)) + } +} diff --git a/packages/opencode/src/skill/service.ts b/packages/opencode/src/skill/service.ts deleted file mode 100644 index 434a51bad91..00000000000 --- a/packages/opencode/src/skill/service.ts +++ /dev/null @@ -1,238 +0,0 @@ -import os from "os" -import path from "path" -import { pathToFileURL } from "url" -import z from "zod" -import { Effect, Layer, ServiceMap } from "effect" -import { NamedError } from "@opencode-ai/util/error" -import type { Agent } from "@/agent/agent" -import { Bus } from "@/bus" -import { InstanceContext } from "@/effect/instance-context" -import { Flag } from "@/flag/flag" -import { Global } from "@/global" -import { Permission } from "@/permission/service" -import { Filesystem } from "@/util/filesystem" -import { Config } from "../config/config" -import { ConfigMarkdown } from "../config/markdown" -import { Glob } from "../util/glob" -import { Log } from "../util/log" -import { Discovery } from "./discovery" - -export namespace Skill { - const log = Log.create({ service: "skill" }) - const EXTERNAL_DIRS = [".claude", ".agents"] - const EXTERNAL_SKILL_PATTERN = "skills/**/SKILL.md" - const OPENCODE_SKILL_PATTERN = "{skill,skills}/**/SKILL.md" - const SKILL_PATTERN = "**/SKILL.md" - - export const Info = z.object({ - name: z.string(), - description: z.string(), - location: z.string(), - content: z.string(), - }) - export type Info = z.infer - - export const InvalidError = NamedError.create( - "SkillInvalidError", - z.object({ - path: z.string(), - message: z.string().optional(), - issues: z.custom().optional(), - }), - ) - - export const NameMismatchError = NamedError.create( - "SkillNameMismatchError", - z.object({ - path: z.string(), - expected: z.string(), - actual: z.string(), - }), - ) - - type State = { - skills: Record - dirs: Set - task?: Promise - } - - type Cache = State & { - ensure: () => Promise - } - - export interface Interface { - readonly get: (name: string) => Effect.Effect - readonly all: () => Effect.Effect - readonly dirs: () => Effect.Effect - readonly available: (agent?: Agent.Info) => Effect.Effect - } - - const add = async (state: State, match: string) => { - const md = await ConfigMarkdown.parse(match).catch(async (err) => { - const message = ConfigMarkdown.FrontmatterError.isInstance(err) - ? err.data.message - : `Failed to parse skill ${match}` - const { Session } = await import("@/session") - Bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() }) - log.error("failed to load skill", { skill: match, err }) - return undefined - }) - - if (!md) return - - const parsed = Info.pick({ name: true, description: true }).safeParse(md.data) - if (!parsed.success) return - - if (state.skills[parsed.data.name]) { - log.warn("duplicate skill name", { - name: parsed.data.name, - existing: state.skills[parsed.data.name].location, - duplicate: match, - }) - } - - state.dirs.add(path.dirname(match)) - state.skills[parsed.data.name] = { - name: parsed.data.name, - description: parsed.data.description, - location: match, - content: md.content, - } - } - - const scan = async (state: State, root: string, pattern: string, opts?: { dot?: boolean; scope?: string }) => { - return Glob.scan(pattern, { - cwd: root, - absolute: true, - include: "file", - symlink: true, - dot: opts?.dot, - }) - .then((matches) => Promise.all(matches.map((match) => add(state, match)))) - .catch((error) => { - if (!opts?.scope) throw error - log.error(`failed to scan ${opts.scope} skills`, { dir: root, error }) - }) - } - - // TODO: Migrate to Effect - const create = (instance: InstanceContext.Shape, discovery: Discovery.Interface): Cache => { - const state: State = { - skills: {}, - dirs: new Set(), - } - - const load = async () => { - if (!Flag.OPENCODE_DISABLE_EXTERNAL_SKILLS) { - for (const dir of EXTERNAL_DIRS) { - const root = path.join(Global.Path.home, dir) - if (!(await Filesystem.isDir(root))) continue - await scan(state, root, EXTERNAL_SKILL_PATTERN, { dot: true, scope: "global" }) - } - - for await (const root of Filesystem.up({ - targets: EXTERNAL_DIRS, - start: instance.directory, - stop: instance.project.worktree, - })) { - await scan(state, root, EXTERNAL_SKILL_PATTERN, { dot: true, scope: "project" }) - } - } - - for (const dir of await Config.directories()) { - await scan(state, dir, OPENCODE_SKILL_PATTERN) - } - - const cfg = await Config.get() - for (const item of cfg.skills?.paths ?? []) { - const expanded = item.startsWith("~/") ? path.join(os.homedir(), item.slice(2)) : item - const dir = path.isAbsolute(expanded) ? expanded : path.join(instance.directory, expanded) - if (!(await Filesystem.isDir(dir))) { - log.warn("skill path not found", { path: dir }) - continue - } - - await scan(state, dir, SKILL_PATTERN) - } - - for (const url of cfg.skills?.urls ?? []) { - for (const dir of await Effect.runPromise(discovery.pull(url))) { - state.dirs.add(dir) - await scan(state, dir, SKILL_PATTERN) - } - } - - log.info("init", { count: Object.keys(state.skills).length }) - } - - const ensure = () => { - if (state.task) return state.task - state.task = load().catch((err) => { - state.task = undefined - throw err - }) - return state.task - } - - return { ...state, ensure } - } - - export class Service extends ServiceMap.Service()("@opencode/Skill") {} - - export const layer: Layer.Layer = Layer.effect( - Service, - Effect.gen(function* () { - const instance = yield* InstanceContext - const discovery = yield* Discovery.Service - const state = create(instance, discovery) - - const get = Effect.fn("Skill.get")(function* (name: string) { - yield* Effect.promise(() => state.ensure()) - return state.skills[name] - }) - - const all = Effect.fn("Skill.all")(function* () { - yield* Effect.promise(() => state.ensure()) - return Object.values(state.skills) - }) - - const dirs = Effect.fn("Skill.dirs")(function* () { - yield* Effect.promise(() => state.ensure()) - return Array.from(state.dirs) - }) - - const available = Effect.fn("Skill.available")(function* (agent?: Agent.Info) { - yield* Effect.promise(() => state.ensure()) - const list = Object.values(state.skills).toSorted((a, b) => a.name.localeCompare(b.name)) - if (!agent) return list - return list.filter((skill) => Permission.evaluate("skill", skill.name, agent.permission).action !== "deny") - }) - - return Service.of({ get, all, dirs, available }) - }), - ).pipe(Layer.fresh) - - export const defaultLayer: Layer.Layer = layer.pipe( - Layer.provide(Discovery.defaultLayer), - ) - - export function fmt(list: Info[], opts: { verbose: boolean }) { - if (list.length === 0) return "No skills are currently available." - - if (opts.verbose) { - return [ - "", - ...list.flatMap((skill) => [ - " ", - ` ${skill.name}`, - ` ${skill.description}`, - ` ${pathToFileURL(skill.location).href}`, - " ", - ]), - "", - ].join("\n") - } - - return ["## Available Skills", ...list.map((skill) => `- **${skill.name}**: ${skill.description}`)].join("\n") - } -} diff --git a/packages/opencode/src/skill/skill.ts b/packages/opencode/src/skill/skill.ts deleted file mode 100644 index ed3e0a4b75c..00000000000 --- a/packages/opencode/src/skill/skill.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { runPromiseInstance } from "@/effect/runtime" -import type { Agent } from "@/agent/agent" -import { Skill as S } from "./service" - -export namespace Skill { - export const Info = S.Info - export type Info = S.Info - - export const InvalidError = S.InvalidError - export const NameMismatchError = S.NameMismatchError - - export type Interface = S.Interface - - export const Service = S.Service - export const layer = S.layer - export const defaultLayer = S.defaultLayer - - export const fmt = S.fmt - - export async function get(name: string) { - return runPromiseInstance(S.Service.use((skill) => skill.get(name))) - } - - export async function all() { - return runPromiseInstance(S.Service.use((skill) => skill.all())) - } - - export async function dirs() { - return runPromiseInstance(S.Service.use((skill) => skill.dirs())) - } - - export async function available(agent?: Agent.Info) { - return runPromiseInstance(S.Service.use((skill) => skill.available(agent))) - } -} diff --git a/packages/opencode/src/snapshot/index.ts b/packages/opencode/src/snapshot/index.ts index 4f845ca2ded..5f8c5aeffd4 100644 --- a/packages/opencode/src/snapshot/index.ts +++ b/packages/opencode/src/snapshot/index.ts @@ -1,44 +1,396 @@ -import { runPromiseInstance } from "@/effect/runtime" -import { Snapshot as S } from "./service" +import { NodeChildProcessSpawner, NodeFileSystem, NodePath } from "@effect/platform-node" +import { Cause, Duration, Effect, Layer, Schedule, ServiceMap, Stream } from "effect" +import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" +import path from "path" +import z from "zod" +import { InstanceState } from "@/effect/instance-state" +import { makeRunPromise } from "@/effect/run-service" +import { AppFileSystem } from "@/filesystem" +import { Config } from "../config/config" +import { Global } from "../global" +import { Log } from "../util/log" export namespace Snapshot { - export const Patch = S.Patch - export type Patch = S.Patch + export const Patch = z.object({ + hash: z.string(), + files: z.string().array(), + }) + export type Patch = z.infer - export const FileDiff = S.FileDiff - export type FileDiff = S.FileDiff + export const FileDiff = z + .object({ + file: z.string(), + before: z.string(), + after: z.string(), + additions: z.number(), + deletions: z.number(), + status: z.enum(["added", "deleted", "modified"]).optional(), + }) + .meta({ + ref: "FileDiff", + }) + export type FileDiff = z.infer - export type Interface = S.Interface + const log = Log.create({ service: "snapshot" }) + const prune = "7.days" + const core = ["-c", "core.longpaths=true", "-c", "core.symlinks=true"] + const cfg = ["-c", "core.autocrlf=false", ...core] + const quote = [...cfg, "-c", "core.quotepath=false"] - export const Service = S.Service - export const layer = S.layer - export const defaultLayer = S.defaultLayer + interface GitResult { + readonly code: ChildProcessSpawner.ExitCode + readonly text: string + readonly stderr: string + } + + type State = Omit + + export interface Interface { + readonly init: () => Effect.Effect + readonly cleanup: () => Effect.Effect + readonly track: () => Effect.Effect + readonly patch: (hash: string) => Effect.Effect + readonly restore: (snapshot: string) => Effect.Effect + readonly revert: (patches: Snapshot.Patch[]) => Effect.Effect + readonly diff: (hash: string) => Effect.Effect + readonly diffFull: (from: string, to: string) => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/Snapshot") {} + + export const layer: Layer.Layer = + Layer.effect( + Service, + Effect.gen(function* () { + const fs = yield* AppFileSystem.Service + const spawner = yield* ChildProcessSpawner.ChildProcessSpawner + const state = yield* InstanceState.make( + Effect.fn("Snapshot.state")(function* (ctx) { + const state = { + directory: ctx.directory, + worktree: ctx.worktree, + gitdir: path.join(Global.Path.data, "snapshot", ctx.project.id), + vcs: ctx.project.vcs, + } + + const args = (cmd: string[]) => ["--git-dir", state.gitdir, "--work-tree", state.worktree, ...cmd] + + const git = Effect.fnUntraced( + function* (cmd: string[], opts?: { cwd?: string; env?: Record }) { + const proc = ChildProcess.make("git", cmd, { + cwd: opts?.cwd, + env: opts?.env, + extendEnv: true, + }) + const handle = yield* spawner.spawn(proc) + const [text, stderr] = yield* Effect.all( + [ + Stream.mkString(Stream.decodeText(handle.stdout)), + Stream.mkString(Stream.decodeText(handle.stderr)), + ], + { concurrency: 2 }, + ) + const code = yield* handle.exitCode + return { code, text, stderr } satisfies GitResult + }, + Effect.scoped, + Effect.catch((err) => + Effect.succeed({ + code: ChildProcessSpawner.ExitCode(1), + text: "", + stderr: String(err), + }), + ), + ) + + const exists = (file: string) => fs.exists(file).pipe(Effect.orDie) + const read = (file: string) => fs.readFileString(file).pipe(Effect.catch(() => Effect.succeed(""))) + const remove = (file: string) => fs.remove(file).pipe(Effect.catch(() => Effect.void)) + + const enabled = Effect.fnUntraced(function* () { + if (state.vcs !== "git") return false + return (yield* Effect.promise(() => Config.get())).snapshot !== false + }) + + const excludes = Effect.fnUntraced(function* () { + const result = yield* git(["rev-parse", "--path-format=absolute", "--git-path", "info/exclude"], { + cwd: state.worktree, + }) + const file = result.text.trim() + if (!file) return + if (!(yield* exists(file))) return + return file + }) + + const sync = Effect.fnUntraced(function* () { + const file = yield* excludes() + const target = path.join(state.gitdir, "info", "exclude") + yield* fs.ensureDir(path.join(state.gitdir, "info")).pipe(Effect.orDie) + if (!file) { + yield* fs.writeFileString(target, "").pipe(Effect.orDie) + return + } + yield* fs.writeFileString(target, yield* read(file)).pipe(Effect.orDie) + }) + + const add = Effect.fnUntraced(function* () { + yield* sync() + yield* git([...cfg, ...args(["add", "."])], { cwd: state.directory }) + }) + + const cleanup = Effect.fnUntraced(function* () { + if (!(yield* enabled())) return + if (!(yield* exists(state.gitdir))) return + const result = yield* git(args(["gc", `--prune=${prune}`]), { cwd: state.directory }) + if (result.code !== 0) { + log.warn("cleanup failed", { + exitCode: result.code, + stderr: result.stderr, + }) + return + } + log.info("cleanup", { prune }) + }) + + const track = Effect.fnUntraced(function* () { + if (!(yield* enabled())) return + const existed = yield* exists(state.gitdir) + yield* fs.ensureDir(state.gitdir).pipe(Effect.orDie) + if (!existed) { + yield* git(["init"], { + env: { GIT_DIR: state.gitdir, GIT_WORK_TREE: state.worktree }, + }) + yield* git(["--git-dir", state.gitdir, "config", "core.autocrlf", "false"]) + yield* git(["--git-dir", state.gitdir, "config", "core.longpaths", "true"]) + yield* git(["--git-dir", state.gitdir, "config", "core.symlinks", "true"]) + yield* git(["--git-dir", state.gitdir, "config", "core.fsmonitor", "false"]) + log.info("initialized") + } + yield* add() + const result = yield* git(args(["write-tree"]), { cwd: state.directory }) + const hash = result.text.trim() + log.info("tracking", { hash, cwd: state.directory, git: state.gitdir }) + return hash + }) + + const patch = Effect.fnUntraced(function* (hash: string) { + yield* add() + const result = yield* git( + [...quote, ...args(["diff", "--no-ext-diff", "--name-only", hash, "--", "."])], + { + cwd: state.directory, + }, + ) + if (result.code !== 0) { + log.warn("failed to get diff", { hash, exitCode: result.code }) + return { hash, files: [] } + } + return { + hash, + files: result.text + .trim() + .split("\n") + .map((x) => x.trim()) + .filter(Boolean) + .map((x) => path.join(state.worktree, x).replaceAll("\\", "/")), + } + }) + + const restore = Effect.fnUntraced(function* (snapshot: string) { + log.info("restore", { commit: snapshot }) + const result = yield* git([...core, ...args(["read-tree", snapshot])], { cwd: state.worktree }) + if (result.code === 0) { + const checkout = yield* git([...core, ...args(["checkout-index", "-a", "-f"])], { cwd: state.worktree }) + if (checkout.code === 0) return + log.error("failed to restore snapshot", { + snapshot, + exitCode: checkout.code, + stderr: checkout.stderr, + }) + return + } + log.error("failed to restore snapshot", { + snapshot, + exitCode: result.code, + stderr: result.stderr, + }) + }) + + const revert = Effect.fnUntraced(function* (patches: Snapshot.Patch[]) { + const seen = new Set() + for (const item of patches) { + for (const file of item.files) { + if (seen.has(file)) continue + seen.add(file) + log.info("reverting", { file, hash: item.hash }) + const result = yield* git([...core, ...args(["checkout", item.hash, "--", file])], { + cwd: state.worktree, + }) + if (result.code !== 0) { + const rel = path.relative(state.worktree, file) + const tree = yield* git([...core, ...args(["ls-tree", item.hash, "--", rel])], { + cwd: state.worktree, + }) + if (tree.code === 0 && tree.text.trim()) { + log.info("file existed in snapshot but checkout failed, keeping", { file }) + } else { + log.info("file did not exist in snapshot, deleting", { file }) + yield* remove(file) + } + } + } + } + }) + + const diff = Effect.fnUntraced(function* (hash: string) { + yield* add() + const result = yield* git([...quote, ...args(["diff", "--no-ext-diff", hash, "--", "."])], { + cwd: state.worktree, + }) + if (result.code !== 0) { + log.warn("failed to get diff", { + hash, + exitCode: result.code, + stderr: result.stderr, + }) + return "" + } + return result.text.trim() + }) + + const diffFull = Effect.fnUntraced(function* (from: string, to: string) { + const result: Snapshot.FileDiff[] = [] + const status = new Map() + + const statuses = yield* git( + [...quote, ...args(["diff", "--no-ext-diff", "--name-status", "--no-renames", from, to, "--", "."])], + { cwd: state.directory }, + ) + + for (const line of statuses.text.trim().split("\n")) { + if (!line) continue + const [code, file] = line.split("\t") + if (!code || !file) continue + status.set(file, code.startsWith("A") ? "added" : code.startsWith("D") ? "deleted" : "modified") + } + + const numstat = yield* git( + [...quote, ...args(["diff", "--no-ext-diff", "--no-renames", "--numstat", from, to, "--", "."])], + { + cwd: state.directory, + }, + ) + + for (const line of numstat.text.trim().split("\n")) { + if (!line) continue + const [adds, dels, file] = line.split("\t") + if (!file) continue + const binary = adds === "-" && dels === "-" + const [before, after] = binary + ? ["", ""] + : yield* Effect.all( + [ + git([...cfg, ...args(["show", `${from}:${file}`])]).pipe(Effect.map((item) => item.text)), + git([...cfg, ...args(["show", `${to}:${file}`])]).pipe(Effect.map((item) => item.text)), + ], + { concurrency: 2 }, + ) + const additions = binary ? 0 : parseInt(adds) + const deletions = binary ? 0 : parseInt(dels) + result.push({ + file, + before, + after, + additions: Number.isFinite(additions) ? additions : 0, + deletions: Number.isFinite(deletions) ? deletions : 0, + status: status.get(file) ?? "modified", + }) + } + + return result + }) + + yield* cleanup().pipe( + Effect.catchCause((cause) => { + log.error("cleanup loop failed", { cause: Cause.pretty(cause) }) + return Effect.void + }), + Effect.repeat(Schedule.spaced(Duration.hours(1))), + Effect.delay(Duration.minutes(1)), + Effect.forkScoped, + ) + + return { cleanup, track, patch, restore, revert, diff, diffFull } + }), + ) + + return Service.of({ + init: Effect.fn("Snapshot.init")(function* () { + yield* InstanceState.get(state) + }), + cleanup: Effect.fn("Snapshot.cleanup")(function* () { + return yield* InstanceState.useEffect(state, (s) => s.cleanup()) + }), + track: Effect.fn("Snapshot.track")(function* () { + return yield* InstanceState.useEffect(state, (s) => s.track()) + }), + patch: Effect.fn("Snapshot.patch")(function* (hash: string) { + return yield* InstanceState.useEffect(state, (s) => s.patch(hash)) + }), + restore: Effect.fn("Snapshot.restore")(function* (snapshot: string) { + return yield* InstanceState.useEffect(state, (s) => s.restore(snapshot)) + }), + revert: Effect.fn("Snapshot.revert")(function* (patches: Snapshot.Patch[]) { + return yield* InstanceState.useEffect(state, (s) => s.revert(patches)) + }), + diff: Effect.fn("Snapshot.diff")(function* (hash: string) { + return yield* InstanceState.useEffect(state, (s) => s.diff(hash)) + }), + diffFull: Effect.fn("Snapshot.diffFull")(function* (from: string, to: string) { + return yield* InstanceState.useEffect(state, (s) => s.diffFull(from, to)) + }), + }) + }), + ) + + export const defaultLayer = layer.pipe( + Layer.provide(NodeChildProcessSpawner.layer), + Layer.provide(AppFileSystem.defaultLayer), + Layer.provide(NodeFileSystem.layer), // needed by NodeChildProcessSpawner + Layer.provide(NodePath.layer), + ) + + const runPromise = makeRunPromise(Service, defaultLayer) + + export async function init() { + return runPromise((svc) => svc.init()) + } export async function cleanup() { - return runPromiseInstance(S.Service.use((svc) => svc.cleanup())) + return runPromise((svc) => svc.cleanup()) } export async function track() { - return runPromiseInstance(S.Service.use((svc) => svc.track())) + return runPromise((svc) => svc.track()) } export async function patch(hash: string) { - return runPromiseInstance(S.Service.use((svc) => svc.patch(hash))) + return runPromise((svc) => svc.patch(hash)) } export async function restore(snapshot: string) { - return runPromiseInstance(S.Service.use((svc) => svc.restore(snapshot))) + return runPromise((svc) => svc.restore(snapshot)) } export async function revert(patches: Patch[]) { - return runPromiseInstance(S.Service.use((svc) => svc.revert(patches))) + return runPromise((svc) => svc.revert(patches)) } export async function diff(hash: string) { - return runPromiseInstance(S.Service.use((svc) => svc.diff(hash))) + return runPromise((svc) => svc.diff(hash)) } export async function diffFull(from: string, to: string) { - return runPromiseInstance(S.Service.use((svc) => svc.diffFull(from, to))) + return runPromise((svc) => svc.diffFull(from, to)) } } diff --git a/packages/opencode/src/snapshot/service.ts b/packages/opencode/src/snapshot/service.ts deleted file mode 100644 index 50485d0a7f3..00000000000 --- a/packages/opencode/src/snapshot/service.ts +++ /dev/null @@ -1,320 +0,0 @@ -import { NodeChildProcessSpawner, NodeFileSystem, NodePath } from "@effect/platform-node" -import { Cause, Duration, Effect, Layer, Schedule, ServiceMap, Stream } from "effect" -import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process" -import path from "path" -import z from "zod" -import { InstanceContext } from "@/effect/instance-context" -import { AppFileSystem } from "@/filesystem" -import { Config } from "../config/config" -import { Global } from "../global" -import { Log } from "../util/log" - -export namespace Snapshot { - export const Patch = z.object({ - hash: z.string(), - files: z.string().array(), - }) - export type Patch = z.infer - - export const FileDiff = z - .object({ - file: z.string(), - before: z.string(), - after: z.string(), - additions: z.number(), - deletions: z.number(), - status: z.enum(["added", "deleted", "modified"]).optional(), - }) - .meta({ - ref: "FileDiff", - }) - export type FileDiff = z.infer - - const log = Log.create({ service: "snapshot" }) - const prune = "7.days" - const core = ["-c", "core.longpaths=true", "-c", "core.symlinks=true"] - const cfg = ["-c", "core.autocrlf=false", ...core] - const quote = [...cfg, "-c", "core.quotepath=false"] - - interface GitResult { - readonly code: ChildProcessSpawner.ExitCode - readonly text: string - readonly stderr: string - } - - export interface Interface { - readonly cleanup: () => Effect.Effect - readonly track: () => Effect.Effect - readonly patch: (hash: string) => Effect.Effect - readonly restore: (snapshot: string) => Effect.Effect - readonly revert: (patches: Snapshot.Patch[]) => Effect.Effect - readonly diff: (hash: string) => Effect.Effect - readonly diffFull: (from: string, to: string) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Snapshot") {} - - export const layer: Layer.Layer< - Service, - never, - InstanceContext | AppFileSystem.Service | ChildProcessSpawner.ChildProcessSpawner - > = Layer.effect( - Service, - Effect.gen(function* () { - const ctx = yield* InstanceContext - const fs = yield* AppFileSystem.Service - const spawner = yield* ChildProcessSpawner.ChildProcessSpawner - const directory = ctx.directory - const worktree = ctx.worktree - const project = ctx.project - const gitdir = path.join(Global.Path.data, "snapshot", project.id) - - const args = (cmd: string[]) => ["--git-dir", gitdir, "--work-tree", worktree, ...cmd] - - const git = Effect.fnUntraced( - function* (cmd: string[], opts?: { cwd?: string; env?: Record }) { - const proc = ChildProcess.make("git", cmd, { - cwd: opts?.cwd, - env: opts?.env, - extendEnv: true, - }) - const handle = yield* spawner.spawn(proc) - const [text, stderr] = yield* Effect.all( - [Stream.mkString(Stream.decodeText(handle.stdout)), Stream.mkString(Stream.decodeText(handle.stderr))], - { concurrency: 2 }, - ) - const code = yield* handle.exitCode - return { code, text, stderr } satisfies GitResult - }, - Effect.scoped, - Effect.catch((err) => - Effect.succeed({ - code: ChildProcessSpawner.ExitCode(1), - text: "", - stderr: String(err), - }), - ), - ) - - // Snapshot-specific error handling on top of AppFileSystem - const exists = (file: string) => fs.exists(file).pipe(Effect.orDie) - const read = (file: string) => fs.readFileString(file).pipe(Effect.catch(() => Effect.succeed(""))) - const remove = (file: string) => fs.remove(file).pipe(Effect.catch(() => Effect.void)) - - const enabled = Effect.fnUntraced(function* () { - if (project.vcs !== "git") return false - return (yield* Effect.promise(() => Config.get())).snapshot !== false - }) - - const excludes = Effect.fnUntraced(function* () { - const result = yield* git(["rev-parse", "--path-format=absolute", "--git-path", "info/exclude"], { - cwd: worktree, - }) - const file = result.text.trim() - if (!file) return - if (!(yield* exists(file))) return - return file - }) - - const sync = Effect.fnUntraced(function* () { - const file = yield* excludes() - const target = path.join(gitdir, "info", "exclude") - yield* fs.ensureDir(path.join(gitdir, "info")).pipe(Effect.orDie) - if (!file) { - yield* fs.writeFileString(target, "").pipe(Effect.orDie) - return - } - yield* fs.writeFileString(target, yield* read(file)).pipe(Effect.orDie) - }) - - const add = Effect.fnUntraced(function* () { - yield* sync() - yield* git([...cfg, ...args(["add", "."])], { cwd: directory }) - }) - - const cleanup = Effect.fn("Snapshot.cleanup")(function* () { - if (!(yield* enabled())) return - if (!(yield* exists(gitdir))) return - const result = yield* git(args(["gc", `--prune=${prune}`]), { cwd: directory }) - if (result.code !== 0) { - log.warn("cleanup failed", { - exitCode: result.code, - stderr: result.stderr, - }) - return - } - log.info("cleanup", { prune }) - }) - - const track = Effect.fn("Snapshot.track")(function* () { - if (!(yield* enabled())) return - const existed = yield* exists(gitdir) - yield* fs.ensureDir(gitdir).pipe(Effect.orDie) - if (!existed) { - yield* git(["init"], { - env: { GIT_DIR: gitdir, GIT_WORK_TREE: worktree }, - }) - yield* git(["--git-dir", gitdir, "config", "core.autocrlf", "false"]) - yield* git(["--git-dir", gitdir, "config", "core.longpaths", "true"]) - yield* git(["--git-dir", gitdir, "config", "core.symlinks", "true"]) - yield* git(["--git-dir", gitdir, "config", "core.fsmonitor", "false"]) - log.info("initialized") - } - yield* add() - const result = yield* git(args(["write-tree"]), { cwd: directory }) - const hash = result.text.trim() - log.info("tracking", { hash, cwd: directory, git: gitdir }) - return hash - }) - - const patch = Effect.fn("Snapshot.patch")(function* (hash: string) { - yield* add() - const result = yield* git([...quote, ...args(["diff", "--no-ext-diff", "--name-only", hash, "--", "."])], { - cwd: directory, - }) - if (result.code !== 0) { - log.warn("failed to get diff", { hash, exitCode: result.code }) - return { hash, files: [] } - } - return { - hash, - files: result.text - .trim() - .split("\n") - .map((x) => x.trim()) - .filter(Boolean) - .map((x) => path.join(worktree, x).replaceAll("\\", "/")), - } - }) - - const restore = Effect.fn("Snapshot.restore")(function* (snapshot: string) { - log.info("restore", { commit: snapshot }) - const result = yield* git([...core, ...args(["read-tree", snapshot])], { cwd: worktree }) - if (result.code === 0) { - const checkout = yield* git([...core, ...args(["checkout-index", "-a", "-f"])], { cwd: worktree }) - if (checkout.code === 0) return - log.error("failed to restore snapshot", { - snapshot, - exitCode: checkout.code, - stderr: checkout.stderr, - }) - return - } - log.error("failed to restore snapshot", { - snapshot, - exitCode: result.code, - stderr: result.stderr, - }) - }) - - const revert = Effect.fn("Snapshot.revert")(function* (patches: Snapshot.Patch[]) { - const seen = new Set() - for (const item of patches) { - for (const file of item.files) { - if (seen.has(file)) continue - seen.add(file) - log.info("reverting", { file, hash: item.hash }) - const result = yield* git([...core, ...args(["checkout", item.hash, "--", file])], { cwd: worktree }) - if (result.code !== 0) { - const rel = path.relative(worktree, file) - const tree = yield* git([...core, ...args(["ls-tree", item.hash, "--", rel])], { cwd: worktree }) - if (tree.code === 0 && tree.text.trim()) { - log.info("file existed in snapshot but checkout failed, keeping", { file }) - } else { - log.info("file did not exist in snapshot, deleting", { file }) - yield* remove(file) - } - } - } - } - }) - - const diff = Effect.fn("Snapshot.diff")(function* (hash: string) { - yield* add() - const result = yield* git([...quote, ...args(["diff", "--no-ext-diff", hash, "--", "."])], { - cwd: worktree, - }) - if (result.code !== 0) { - log.warn("failed to get diff", { - hash, - exitCode: result.code, - stderr: result.stderr, - }) - return "" - } - return result.text.trim() - }) - - const diffFull = Effect.fn("Snapshot.diffFull")(function* (from: string, to: string) { - const result: Snapshot.FileDiff[] = [] - const status = new Map() - - const statuses = yield* git( - [...quote, ...args(["diff", "--no-ext-diff", "--name-status", "--no-renames", from, to, "--", "."])], - { cwd: directory }, - ) - - for (const line of statuses.text.trim().split("\n")) { - if (!line) continue - const [code, file] = line.split("\t") - if (!code || !file) continue - status.set(file, code.startsWith("A") ? "added" : code.startsWith("D") ? "deleted" : "modified") - } - - const numstat = yield* git( - [...quote, ...args(["diff", "--no-ext-diff", "--no-renames", "--numstat", from, to, "--", "."])], - { - cwd: directory, - }, - ) - - for (const line of numstat.text.trim().split("\n")) { - if (!line) continue - const [adds, dels, file] = line.split("\t") - if (!file) continue - const binary = adds === "-" && dels === "-" - const [before, after] = binary - ? ["", ""] - : yield* Effect.all( - [ - git([...cfg, ...args(["show", `${from}:${file}`])]).pipe(Effect.map((item) => item.text)), - git([...cfg, ...args(["show", `${to}:${file}`])]).pipe(Effect.map((item) => item.text)), - ], - { concurrency: 2 }, - ) - const additions = binary ? 0 : parseInt(adds) - const deletions = binary ? 0 : parseInt(dels) - result.push({ - file, - before, - after, - additions: Number.isFinite(additions) ? additions : 0, - deletions: Number.isFinite(deletions) ? deletions : 0, - status: status.get(file) ?? "modified", - }) - } - - return result - }) - - yield* cleanup().pipe( - Effect.catchCause((cause) => { - log.error("cleanup loop failed", { cause: Cause.pretty(cause) }) - return Effect.void - }), - Effect.repeat(Schedule.spaced(Duration.hours(1))), - Effect.delay(Duration.minutes(1)), - Effect.forkScoped, - ) - - return Service.of({ cleanup, track, patch, restore, revert, diff, diffFull }) - }), - ).pipe(Layer.fresh) - - export const defaultLayer = layer.pipe( - Layer.provide(NodeChildProcessSpawner.layer), - Layer.provide(AppFileSystem.defaultLayer), - Layer.provide(NodeFileSystem.layer), // needed by NodeChildProcessSpawner - Layer.provide(NodePath.layer), - ) -} diff --git a/packages/opencode/src/tool/apply_patch.ts b/packages/opencode/src/tool/apply_patch.ts index 66c8b181b25..06293b6eba6 100644 --- a/packages/opencode/src/tool/apply_patch.ts +++ b/packages/opencode/src/tool/apply_patch.ts @@ -12,7 +12,7 @@ import { trimDiff } from "./edit" import { LSP } from "../lsp" import { Filesystem } from "../util/filesystem" import DESCRIPTION from "./apply_patch.txt" -import { File } from "../file/service" +import { File } from "../file" const PatchParams = z.object({ patchText: z.string().describe("The full patch text that describes all changes to be made"), diff --git a/packages/opencode/src/tool/edit.ts b/packages/opencode/src/tool/edit.ts index 982095cd55f..1a7614fc17f 100644 --- a/packages/opencode/src/tool/edit.ts +++ b/packages/opencode/src/tool/edit.ts @@ -9,13 +9,13 @@ import { Tool } from "./tool" import { LSP } from "../lsp" import { createTwoFilesPatch, diffLines } from "diff" import DESCRIPTION from "./edit.txt" -import { File } from "../file/service" +import { File } from "../file" import { FileWatcher } from "../file/watcher" import { Bus } from "../bus" import { FileTime } from "../file/time" import { Filesystem } from "../util/filesystem" import { Instance } from "../project/instance" -import { Snapshot } from "@/snapshot/service" +import { Snapshot } from "@/snapshot" import { assertExternalDirectory } from "./external-directory" const MAX_DIAGNOSTICS_PER_FILE = 20 diff --git a/packages/opencode/src/tool/question.ts b/packages/opencode/src/tool/question.ts index 27a988e5632..a2887546d4b 100644 --- a/packages/opencode/src/tool/question.ts +++ b/packages/opencode/src/tool/question.ts @@ -1,7 +1,6 @@ import z from "zod" import { Tool } from "./tool" -import { Question } from "../question/service" -import { Question as QuestionApi } from "../question" +import { Question } from "../question" import DESCRIPTION from "./question.txt" export const QuestionTool = Tool.define("question", { @@ -10,7 +9,7 @@ export const QuestionTool = Tool.define("question", { questions: z.array(Question.Info.omit({ custom: true })).describe("Questions to ask"), }), async execute(params, ctx) { - const answers = await QuestionApi.ask({ + const answers = await Question.ask({ sessionID: ctx.sessionID, questions: params.questions, tool: ctx.callID ? { messageID: ctx.messageID, callID: ctx.callID } : undefined, diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index 79bec756026..e3781126d0c 100644 --- a/packages/opencode/src/tool/task.ts +++ b/packages/opencode/src/tool/task.ts @@ -10,7 +10,7 @@ import { SessionPrompt } from "../session/prompt" import { iife } from "@/util/iife" import { defer } from "@/util/defer" import { Config } from "../config/config" -import { Permission as PermissionNext } from "@/permission/service" +import { Permission } from "@/permission" const parameters = z.object({ description: z.string().describe("A short (3-5 words) description of the task"), @@ -31,7 +31,7 @@ export const TaskTool = Tool.define("task", async (ctx) => { // Filter agents by permissions if agent provided const caller = ctx?.agent const accessibleAgents = caller - ? agents.filter((a) => PermissionNext.evaluate("task", a.name, caller.permission).action !== "deny") + ? agents.filter((a) => Permission.evaluate("task", a.name, caller.permission).action !== "deny") : agents const list = accessibleAgents.toSorted((a, b) => a.name.localeCompare(b.name)) diff --git a/packages/opencode/src/tool/tool.ts b/packages/opencode/src/tool/tool.ts index c34bdbc5085..6c3f4efaf6d 100644 --- a/packages/opencode/src/tool/tool.ts +++ b/packages/opencode/src/tool/tool.ts @@ -1,7 +1,7 @@ import z from "zod" import type { MessageV2 } from "../session/message-v2" import type { Agent } from "../agent/agent" -import type { Permission as PermissionNext } from "../permission/service" +import type { Permission } from "../permission" import type { SessionID, MessageID } from "../session/schema" import { Truncate } from "./truncate" @@ -23,7 +23,7 @@ export namespace Tool { extra?: { [key: string]: any } messages: MessageV2.WithParts[] metadata(input: { title?: string; metadata?: M }): void - ask(input: Omit): Promise + ask(input: Omit): Promise } export interface Info { id: string diff --git a/packages/opencode/src/tool/truncate-effect.ts b/packages/opencode/src/tool/truncate-effect.ts deleted file mode 100644 index 1b4c6577f3b..00000000000 --- a/packages/opencode/src/tool/truncate-effect.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { NodePath } from "@effect/platform-node" -import { Cause, Duration, Effect, Layer, Schedule, ServiceMap } from "effect" -import path from "path" -import type { Agent } from "../agent/agent" -import { AppFileSystem } from "@/filesystem" -import { evaluate } from "@/permission/evaluate" -import { Identifier } from "../id/id" -import { Log } from "../util/log" -import { ToolID } from "./schema" -import { TRUNCATION_DIR } from "./truncation-dir" - -export namespace Truncate { - const log = Log.create({ service: "truncation" }) - const RETENTION = Duration.days(7) - - export const MAX_LINES = 2000 - export const MAX_BYTES = 50 * 1024 - export const DIR = TRUNCATION_DIR - export const GLOB = path.join(TRUNCATION_DIR, "*") - - export type Result = { content: string; truncated: false } | { content: string; truncated: true; outputPath: string } - - export interface Options { - maxLines?: number - maxBytes?: number - direction?: "head" | "tail" - } - - function hasTaskTool(agent?: Agent.Info) { - if (!agent?.permission) return false - return evaluate("task", "*", agent.permission).action !== "deny" - } - - export interface Interface { - readonly cleanup: () => Effect.Effect - /** - * Returns output unchanged when it fits within the limits, otherwise writes the full text - * to the truncation directory and returns a preview plus a hint to inspect the saved file. - */ - readonly output: (text: string, options?: Options, agent?: Agent.Info) => Effect.Effect - } - - export class Service extends ServiceMap.Service()("@opencode/Truncate") {} - - export const layer = Layer.effect( - Service, - Effect.gen(function* () { - const fs = yield* AppFileSystem.Service - - const cleanup = Effect.fn("Truncate.cleanup")(function* () { - const cutoff = Identifier.timestamp(Identifier.create("tool", false, Date.now() - Duration.toMillis(RETENTION))) - const entries = yield* fs.readDirectory(TRUNCATION_DIR).pipe( - Effect.map((all) => all.filter((name) => name.startsWith("tool_"))), - Effect.catch(() => Effect.succeed([])), - ) - for (const entry of entries) { - if (Identifier.timestamp(entry) >= cutoff) continue - yield* fs.remove(path.join(TRUNCATION_DIR, entry)).pipe(Effect.catch(() => Effect.void)) - } - }) - - const output = Effect.fn("Truncate.output")(function* (text: string, options: Options = {}, agent?: Agent.Info) { - const maxLines = options.maxLines ?? MAX_LINES - const maxBytes = options.maxBytes ?? MAX_BYTES - const direction = options.direction ?? "head" - const lines = text.split("\n") - const totalBytes = Buffer.byteLength(text, "utf-8") - - if (lines.length <= maxLines && totalBytes <= maxBytes) { - return { content: text, truncated: false } as const - } - - const out: string[] = [] - let i = 0 - let bytes = 0 - let hitBytes = false - - if (direction === "head") { - for (i = 0; i < lines.length && i < maxLines; i++) { - const size = Buffer.byteLength(lines[i], "utf-8") + (i > 0 ? 1 : 0) - if (bytes + size > maxBytes) { - hitBytes = true - break - } - out.push(lines[i]) - bytes += size - } - } else { - for (i = lines.length - 1; i >= 0 && out.length < maxLines; i--) { - const size = Buffer.byteLength(lines[i], "utf-8") + (out.length > 0 ? 1 : 0) - if (bytes + size > maxBytes) { - hitBytes = true - break - } - out.unshift(lines[i]) - bytes += size - } - } - - const removed = hitBytes ? totalBytes - bytes : lines.length - out.length - const unit = hitBytes ? "bytes" : "lines" - const preview = out.join("\n") - const file = path.join(TRUNCATION_DIR, ToolID.ascending()) - - yield* fs.ensureDir(TRUNCATION_DIR).pipe(Effect.orDie) - yield* fs.writeFileString(file, text).pipe(Effect.orDie) - - const hint = hasTaskTool(agent) - ? `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse the Task tool to have explore agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.` - : `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse Grep to search the full content or Read with offset/limit to view specific sections.` - - return { - content: - direction === "head" - ? `${preview}\n\n...${removed} ${unit} truncated...\n\n${hint}` - : `...${removed} ${unit} truncated...\n\n${hint}\n\n${preview}`, - truncated: true, - outputPath: file, - } as const - }) - - yield* cleanup().pipe( - Effect.catchCause((cause) => { - log.error("truncation cleanup failed", { cause: Cause.pretty(cause) }) - return Effect.void - }), - Effect.repeat(Schedule.spaced(Duration.hours(1))), - Effect.delay(Duration.minutes(1)), - Effect.forkScoped, - ) - - return Service.of({ cleanup, output }) - }), - ) - - export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer), Layer.provide(NodePath.layer)) -} diff --git a/packages/opencode/src/tool/truncate.ts b/packages/opencode/src/tool/truncate.ts index 17105463837..fa1d0a4aed6 100644 --- a/packages/opencode/src/tool/truncate.ts +++ b/packages/opencode/src/tool/truncate.ts @@ -1,18 +1,144 @@ +import { NodePath } from "@effect/platform-node" +import { Cause, Duration, Effect, Layer, Schedule, ServiceMap } from "effect" +import path from "path" import type { Agent } from "../agent/agent" -import { runtime } from "@/effect/runtime" -import { Truncate as S } from "./truncate-effect" +import { makeRunPromise } from "@/effect/run-service" +import { AppFileSystem } from "@/filesystem" +import { evaluate } from "@/permission/evaluate" +import { Identifier } from "../id/id" +import { Log } from "../util/log" +import { ToolID } from "./schema" +import { TRUNCATION_DIR } from "./truncation-dir" export namespace Truncate { - export const MAX_LINES = S.MAX_LINES - export const MAX_BYTES = S.MAX_BYTES - export const DIR = S.DIR - export const GLOB = S.GLOB + const log = Log.create({ service: "truncation" }) + const RETENTION = Duration.days(7) - export type Result = S.Result + export const MAX_LINES = 2000 + export const MAX_BYTES = 50 * 1024 + export const DIR = TRUNCATION_DIR + export const GLOB = path.join(TRUNCATION_DIR, "*") - export type Options = S.Options + export type Result = { content: string; truncated: false } | { content: string; truncated: true; outputPath: string } + + export interface Options { + maxLines?: number + maxBytes?: number + direction?: "head" | "tail" + } + + function hasTaskTool(agent?: Agent.Info) { + if (!agent?.permission) return false + return evaluate("task", "*", agent.permission).action !== "deny" + } + + export interface Interface { + readonly cleanup: () => Effect.Effect + /** + * Returns output unchanged when it fits within the limits, otherwise writes the full text + * to the truncation directory and returns a preview plus a hint to inspect the saved file. + */ + readonly output: (text: string, options?: Options, agent?: Agent.Info) => Effect.Effect + } + + export class Service extends ServiceMap.Service()("@opencode/Truncate") {} + + export const layer = Layer.effect( + Service, + Effect.gen(function* () { + const fs = yield* AppFileSystem.Service + + const cleanup = Effect.fn("Truncate.cleanup")(function* () { + const cutoff = Identifier.timestamp(Identifier.create("tool", false, Date.now() - Duration.toMillis(RETENTION))) + const entries = yield* fs.readDirectory(TRUNCATION_DIR).pipe( + Effect.map((all) => all.filter((name) => name.startsWith("tool_"))), + Effect.catch(() => Effect.succeed([])), + ) + for (const entry of entries) { + if (Identifier.timestamp(entry) >= cutoff) continue + yield* fs.remove(path.join(TRUNCATION_DIR, entry)).pipe(Effect.catch(() => Effect.void)) + } + }) + + const output = Effect.fn("Truncate.output")(function* (text: string, options: Options = {}, agent?: Agent.Info) { + const maxLines = options.maxLines ?? MAX_LINES + const maxBytes = options.maxBytes ?? MAX_BYTES + const direction = options.direction ?? "head" + const lines = text.split("\n") + const totalBytes = Buffer.byteLength(text, "utf-8") + + if (lines.length <= maxLines && totalBytes <= maxBytes) { + return { content: text, truncated: false } as const + } + + const out: string[] = [] + let i = 0 + let bytes = 0 + let hitBytes = false + + if (direction === "head") { + for (i = 0; i < lines.length && i < maxLines; i++) { + const size = Buffer.byteLength(lines[i], "utf-8") + (i > 0 ? 1 : 0) + if (bytes + size > maxBytes) { + hitBytes = true + break + } + out.push(lines[i]) + bytes += size + } + } else { + for (i = lines.length - 1; i >= 0 && out.length < maxLines; i--) { + const size = Buffer.byteLength(lines[i], "utf-8") + (out.length > 0 ? 1 : 0) + if (bytes + size > maxBytes) { + hitBytes = true + break + } + out.unshift(lines[i]) + bytes += size + } + } + + const removed = hitBytes ? totalBytes - bytes : lines.length - out.length + const unit = hitBytes ? "bytes" : "lines" + const preview = out.join("\n") + const file = path.join(TRUNCATION_DIR, ToolID.ascending()) + + yield* fs.ensureDir(TRUNCATION_DIR).pipe(Effect.orDie) + yield* fs.writeFileString(file, text).pipe(Effect.orDie) + + const hint = hasTaskTool(agent) + ? `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse the Task tool to have explore agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.` + : `The tool call succeeded but the output was truncated. Full output saved to: ${file}\nUse Grep to search the full content or Read with offset/limit to view specific sections.` + + return { + content: + direction === "head" + ? `${preview}\n\n...${removed} ${unit} truncated...\n\n${hint}` + : `...${removed} ${unit} truncated...\n\n${hint}\n\n${preview}`, + truncated: true, + outputPath: file, + } as const + }) + + yield* cleanup().pipe( + Effect.catchCause((cause) => { + log.error("truncation cleanup failed", { cause: Cause.pretty(cause) }) + return Effect.void + }), + Effect.repeat(Schedule.spaced(Duration.hours(1))), + Effect.delay(Duration.minutes(1)), + Effect.forkScoped, + ) + + return Service.of({ cleanup, output }) + }), + ) + + export const defaultLayer = layer.pipe(Layer.provide(AppFileSystem.defaultLayer), Layer.provide(NodePath.layer)) + + const runPromise = makeRunPromise(Service, defaultLayer) export async function output(text: string, options: Options = {}, agent?: Agent.Info): Promise { - return runtime.runPromise(S.Service.use((s) => s.output(text, options, agent))) + return runPromise((s) => s.output(text, options, agent)) } } diff --git a/packages/opencode/src/tool/write.ts b/packages/opencode/src/tool/write.ts index abfab6d482a..83474a543ca 100644 --- a/packages/opencode/src/tool/write.ts +++ b/packages/opencode/src/tool/write.ts @@ -5,7 +5,7 @@ import { LSP } from "../lsp" import { createTwoFilesPatch } from "diff" import DESCRIPTION from "./write.txt" import { Bus } from "../bus" -import { File } from "../file/service" +import { File } from "../file" import { FileWatcher } from "../file/watcher" import { FileTime } from "../file/time" import { Filesystem } from "../util/filesystem" diff --git a/packages/opencode/test/account/service.test.ts b/packages/opencode/test/account/service.test.ts index f5436e5147a..9c67641d208 100644 --- a/packages/opencode/test/account/service.test.ts +++ b/packages/opencode/test/account/service.test.ts @@ -3,7 +3,7 @@ import { Duration, Effect, Layer, Option, Schema } from "effect" import { HttpClient, HttpClientResponse } from "effect/unstable/http" import { AccountRepo } from "../../src/account/repo" -import { Account } from "../../src/account/effect" +import { Account } from "../../src/account" import { AccessToken, AccountID, DeviceCode, Login, Org, OrgID, RefreshToken, UserCode } from "../../src/account/schema" import { Database } from "../../src/storage/db" import { testEffect } from "../lib/effect" diff --git a/packages/opencode/test/agent/agent.test.ts b/packages/opencode/test/agent/agent.test.ts index 60c8e57c926..2805cf2614e 100644 --- a/packages/opencode/test/agent/agent.test.ts +++ b/packages/opencode/test/agent/agent.test.ts @@ -1,16 +1,20 @@ -import { test, expect } from "bun:test" +import { afterEach, test, expect } from "bun:test" import path from "path" import { tmpdir } from "../fixture/fixture" import { Instance } from "../../src/project/instance" import { Agent } from "../../src/agent/agent" -import { PermissionNext } from "../../src/permission" +import { Permission } from "../../src/permission" // Helper to evaluate permission for a tool with wildcard pattern -function evalPerm(agent: Agent.Info | undefined, permission: string): PermissionNext.Action | undefined { +function evalPerm(agent: Agent.Info | undefined, permission: string): Permission.Action | undefined { if (!agent) return undefined - return PermissionNext.evaluate(permission, "*", agent.permission).action + return Permission.evaluate(permission, "*", agent.permission).action } +afterEach(async () => { + await Instance.disposeAll() +}) + test("returns default native agents when no config", async () => { await using tmp = await tmpdir() await Instance.provide({ @@ -54,7 +58,7 @@ test("plan agent denies edits except .opencode/plans/*", async () => { // Wildcard is denied expect(evalPerm(plan, "edit")).toBe("deny") // But specific path is allowed - expect(PermissionNext.evaluate("edit", ".opencode/plans/foo.md", plan!.permission).action).toBe("allow") + expect(Permission.evaluate("edit", ".opencode/plans/foo.md", plan!.permission).action).toBe("allow") }, }) }) @@ -83,8 +87,8 @@ test("explore agent asks for external directories and allows Truncate.GLOB", asy fn: async () => { const explore = await Agent.get("explore") expect(explore).toBeDefined() - expect(PermissionNext.evaluate("external_directory", "/some/other/path", explore!.permission).action).toBe("ask") - expect(PermissionNext.evaluate("external_directory", Truncate.GLOB, explore!.permission).action).toBe("allow") + expect(Permission.evaluate("external_directory", "/some/other/path", explore!.permission).action).toBe("ask") + expect(Permission.evaluate("external_directory", Truncate.GLOB, explore!.permission).action).toBe("allow") }, }) }) @@ -216,7 +220,7 @@ test("agent permission config merges with defaults", async () => { const build = await Agent.get("build") expect(build).toBeDefined() // Specific pattern is denied - expect(PermissionNext.evaluate("bash", "rm -rf *", build!.permission).action).toBe("deny") + expect(Permission.evaluate("bash", "rm -rf *", build!.permission).action).toBe("deny") // Edit still allowed expect(evalPerm(build, "edit")).toBe("allow") }, @@ -501,9 +505,9 @@ test("Truncate.GLOB is allowed even when user denies external_directory globally directory: tmp.path, fn: async () => { const build = await Agent.get("build") - expect(PermissionNext.evaluate("external_directory", Truncate.GLOB, build!.permission).action).toBe("allow") - expect(PermissionNext.evaluate("external_directory", Truncate.DIR, build!.permission).action).toBe("deny") - expect(PermissionNext.evaluate("external_directory", "/some/other/path", build!.permission).action).toBe("deny") + expect(Permission.evaluate("external_directory", Truncate.GLOB, build!.permission).action).toBe("allow") + expect(Permission.evaluate("external_directory", Truncate.DIR, build!.permission).action).toBe("deny") + expect(Permission.evaluate("external_directory", "/some/other/path", build!.permission).action).toBe("deny") }, }) }) @@ -525,9 +529,9 @@ test("Truncate.GLOB is allowed even when user denies external_directory per-agen directory: tmp.path, fn: async () => { const build = await Agent.get("build") - expect(PermissionNext.evaluate("external_directory", Truncate.GLOB, build!.permission).action).toBe("allow") - expect(PermissionNext.evaluate("external_directory", Truncate.DIR, build!.permission).action).toBe("deny") - expect(PermissionNext.evaluate("external_directory", "/some/other/path", build!.permission).action).toBe("deny") + expect(Permission.evaluate("external_directory", Truncate.GLOB, build!.permission).action).toBe("allow") + expect(Permission.evaluate("external_directory", Truncate.DIR, build!.permission).action).toBe("deny") + expect(Permission.evaluate("external_directory", "/some/other/path", build!.permission).action).toBe("deny") }, }) }) @@ -548,8 +552,8 @@ test("explicit Truncate.GLOB deny is respected", async () => { directory: tmp.path, fn: async () => { const build = await Agent.get("build") - expect(PermissionNext.evaluate("external_directory", Truncate.GLOB, build!.permission).action).toBe("deny") - expect(PermissionNext.evaluate("external_directory", Truncate.DIR, build!.permission).action).toBe("deny") + expect(Permission.evaluate("external_directory", Truncate.GLOB, build!.permission).action).toBe("deny") + expect(Permission.evaluate("external_directory", Truncate.DIR, build!.permission).action).toBe("deny") }, }) }) @@ -582,7 +586,7 @@ description: Permission skill. const build = await Agent.get("build") const skillDir = path.join(tmp.path, ".opencode", "skill", "perm-skill") const target = path.join(skillDir, "reference", "notes.md") - expect(PermissionNext.evaluate("external_directory", target, build!.permission).action).toBe("allow") + expect(Permission.evaluate("external_directory", target, build!.permission).action).toBe("allow") }, }) } finally { diff --git a/packages/opencode/test/config/config.test.ts b/packages/opencode/test/config/config.test.ts index baf209d8607..eb9c763fa75 100644 --- a/packages/opencode/test/config/config.test.ts +++ b/packages/opencode/test/config/config.test.ts @@ -251,7 +251,7 @@ test("resolves env templates in account config with account token", async () => const originalToken = Account.token const originalControlToken = process.env["OPENCODE_CONSOLE_TOKEN"] - Account.active = mock(() => ({ + Account.active = mock(async () => ({ id: AccountID.make("account-1"), email: "user@example.com", url: "https://control.example.com", diff --git a/packages/opencode/test/effect/instance-state.test.ts b/packages/opencode/test/effect/instance-state.test.ts new file mode 100644 index 00000000000..2d527482ba1 --- /dev/null +++ b/packages/opencode/test/effect/instance-state.test.ts @@ -0,0 +1,384 @@ +import { afterEach, expect, test } from "bun:test" +import { Duration, Effect, Layer, ManagedRuntime, ServiceMap } from "effect" +import { InstanceState } from "../../src/effect/instance-state" +import { Instance } from "../../src/project/instance" +import { tmpdir } from "../fixture/fixture" + +async function access(state: InstanceState, dir: string) { + return Instance.provide({ + directory: dir, + fn: () => Effect.runPromise(InstanceState.get(state)), + }) +} + +afterEach(async () => { + await Instance.disposeAll() +}) + +test("InstanceState caches values per directory", async () => { + await using tmp = await tmpdir() + let n = 0 + + await Effect.runPromise( + Effect.scoped( + Effect.gen(function* () { + const state = yield* InstanceState.make(() => Effect.sync(() => ({ n: ++n }))) + + const a = yield* Effect.promise(() => access(state, tmp.path)) + const b = yield* Effect.promise(() => access(state, tmp.path)) + + expect(a).toBe(b) + expect(n).toBe(1) + }), + ), + ) +}) + +test("InstanceState isolates directories", async () => { + await using one = await tmpdir() + await using two = await tmpdir() + let n = 0 + + await Effect.runPromise( + Effect.scoped( + Effect.gen(function* () { + const state = yield* InstanceState.make((dir) => Effect.sync(() => ({ dir, n: ++n }))) + + const a = yield* Effect.promise(() => access(state, one.path)) + const b = yield* Effect.promise(() => access(state, two.path)) + const c = yield* Effect.promise(() => access(state, one.path)) + + expect(a).toBe(c) + expect(a).not.toBe(b) + expect(n).toBe(2) + }), + ), + ) +}) + +test("InstanceState invalidates on reload", async () => { + await using tmp = await tmpdir() + const seen: string[] = [] + let n = 0 + + await Effect.runPromise( + Effect.scoped( + Effect.gen(function* () { + const state = yield* InstanceState.make(() => + Effect.acquireRelease( + Effect.sync(() => ({ n: ++n })), + (value) => + Effect.sync(() => { + seen.push(String(value.n)) + }), + ), + ) + + const a = yield* Effect.promise(() => access(state, tmp.path)) + yield* Effect.promise(() => Instance.reload({ directory: tmp.path })) + const b = yield* Effect.promise(() => access(state, tmp.path)) + + expect(a).not.toBe(b) + expect(seen).toEqual(["1"]) + }), + ), + ) +}) + +test("InstanceState invalidates on disposeAll", async () => { + await using one = await tmpdir() + await using two = await tmpdir() + const seen: string[] = [] + + await Effect.runPromise( + Effect.scoped( + Effect.gen(function* () { + const state = yield* InstanceState.make((ctx) => + Effect.acquireRelease( + Effect.sync(() => ({ dir: ctx.directory })), + (value) => + Effect.sync(() => { + seen.push(value.dir) + }), + ), + ) + + yield* Effect.promise(() => access(state, one.path)) + yield* Effect.promise(() => access(state, two.path)) + yield* Effect.promise(() => Instance.disposeAll()) + + expect(seen.sort()).toEqual([one.path, two.path].sort()) + }), + ), + ) +}) + +test("InstanceState.get reads the current directory lazily", async () => { + await using one = await tmpdir() + await using two = await tmpdir() + + interface Api { + readonly get: () => Effect.Effect + } + + class Test extends ServiceMap.Service()("@test/InstanceStateLazy") { + static readonly layer = Layer.effect( + Test, + Effect.gen(function* () { + const state = yield* InstanceState.make((ctx) => Effect.sync(() => ctx.directory)) + const get = InstanceState.get(state) + + return Test.of({ + get: Effect.fn("Test.get")(function* () { + return yield* get + }), + }) + }), + ) + } + + const rt = ManagedRuntime.make(Test.layer) + + try { + const a = await Instance.provide({ + directory: one.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }) + const b = await Instance.provide({ + directory: two.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }) + + expect(a).toBe(one.path) + expect(b).toBe(two.path) + } finally { + await rt.dispose() + } +}) + +test("InstanceState preserves directory across async boundaries", async () => { + await using one = await tmpdir({ git: true }) + await using two = await tmpdir({ git: true }) + await using three = await tmpdir({ git: true }) + + interface Api { + readonly get: () => Effect.Effect<{ directory: string; worktree: string; project: string }> + } + + class Test extends ServiceMap.Service()("@test/InstanceStateAsync") { + static readonly layer = Layer.effect( + Test, + Effect.gen(function* () { + const state = yield* InstanceState.make((ctx) => + Effect.sync(() => ({ + directory: ctx.directory, + worktree: ctx.worktree, + project: ctx.project.id, + })), + ) + + return Test.of({ + get: Effect.fn("Test.get")(function* () { + yield* Effect.promise(() => Bun.sleep(1)) + yield* Effect.sleep(Duration.millis(1)) + for (let i = 0; i < 100; i++) { + yield* Effect.yieldNow + } + for (let i = 0; i < 100; i++) { + yield* Effect.promise(() => Promise.resolve()) + } + yield* Effect.sleep(Duration.millis(2)) + yield* Effect.promise(() => Bun.sleep(1)) + return yield* InstanceState.get(state) + }), + }) + }), + ) + } + + const rt = ManagedRuntime.make(Test.layer) + + try { + const [a, b, c] = await Promise.all([ + Instance.provide({ + directory: one.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }), + Instance.provide({ + directory: two.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }), + Instance.provide({ + directory: three.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }), + ]) + + expect(a).toEqual({ directory: one.path, worktree: one.path, project: a.project }) + expect(b).toEqual({ directory: two.path, worktree: two.path, project: b.project }) + expect(c).toEqual({ directory: three.path, worktree: three.path, project: c.project }) + expect(a.project).not.toBe(b.project) + expect(a.project).not.toBe(c.project) + expect(b.project).not.toBe(c.project) + } finally { + await rt.dispose() + } +}) + +test("InstanceState survives high-contention concurrent access", async () => { + const N = 20 + const dirs = await Promise.all(Array.from({ length: N }, () => tmpdir())) + + interface Api { + readonly get: () => Effect.Effect + } + + class Test extends ServiceMap.Service()("@test/HighContention") { + static readonly layer = Layer.effect( + Test, + Effect.gen(function* () { + const state = yield* InstanceState.make((ctx) => Effect.sync(() => ctx.directory)) + + return Test.of({ + get: Effect.fn("Test.get")(function* () { + // Interleave many async hops to maximize chance of ALS corruption + for (let i = 0; i < 10; i++) { + yield* Effect.promise(() => Bun.sleep(Math.random() * 3)) + yield* Effect.yieldNow + yield* Effect.promise(() => Promise.resolve()) + } + return yield* InstanceState.get(state) + }), + }) + }), + ) + } + + const rt = ManagedRuntime.make(Test.layer) + + try { + const results = await Promise.all( + dirs.map((d) => + Instance.provide({ + directory: d.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }), + ), + ) + + for (let i = 0; i < N; i++) { + expect(results[i]).toBe(dirs[i].path) + } + } finally { + await rt.dispose() + for (const d of dirs) await d[Symbol.asyncDispose]() + } +}) + +test("InstanceState correct after interleaved init and dispose", async () => { + await using one = await tmpdir() + await using two = await tmpdir() + + interface Api { + readonly get: () => Effect.Effect + } + + class Test extends ServiceMap.Service()("@test/InterleavedDispose") { + static readonly layer = Layer.effect( + Test, + Effect.gen(function* () { + const state = yield* InstanceState.make((ctx) => + Effect.promise(async () => { + await Bun.sleep(5) // slow init + return ctx.directory + }), + ) + + return Test.of({ + get: Effect.fn("Test.get")(function* () { + return yield* InstanceState.get(state) + }), + }) + }), + ) + } + + const rt = ManagedRuntime.make(Test.layer) + + try { + // Init both directories + const a = await Instance.provide({ + directory: one.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }) + expect(a).toBe(one.path) + + // Dispose one directory, access the other concurrently + const [, b] = await Promise.all([ + Instance.reload({ directory: one.path }), + Instance.provide({ + directory: two.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }), + ]) + expect(b).toBe(two.path) + + // Re-access disposed directory - should get fresh state + const c = await Instance.provide({ + directory: one.path, + fn: () => rt.runPromise(Test.use((svc) => svc.get())), + }) + expect(c).toBe(one.path) + } finally { + await rt.dispose() + } +}) + +test("InstanceState mutation in one directory does not leak to another", async () => { + await using one = await tmpdir() + await using two = await tmpdir() + + await Effect.runPromise( + Effect.scoped( + Effect.gen(function* () { + const state = yield* InstanceState.make(() => Effect.sync(() => ({ count: 0 }))) + + // Mutate state in directory one + const s1 = yield* Effect.promise(() => access(state, one.path)) + s1.count = 42 + + // Access directory two — should be independent + const s2 = yield* Effect.promise(() => access(state, two.path)) + expect(s2.count).toBe(0) + + // Confirm directory one still has the mutation + const s1again = yield* Effect.promise(() => access(state, one.path)) + expect(s1again.count).toBe(42) + expect(s1again).toBe(s1) // same reference + }), + ), + ) +}) + +test("InstanceState dedupes concurrent lookups", async () => { + await using tmp = await tmpdir() + let n = 0 + + await Effect.runPromise( + Effect.scoped( + Effect.gen(function* () { + const state = yield* InstanceState.make(() => + Effect.promise(async () => { + n += 1 + await Bun.sleep(10) + return { n } + }), + ) + + const [a, b] = yield* Effect.promise(() => Promise.all([access(state, tmp.path), access(state, tmp.path)])) + expect(a).toBe(b) + expect(n).toBe(1) + }), + ), + ) +}) diff --git a/packages/opencode/test/effect/run-service.test.ts b/packages/opencode/test/effect/run-service.test.ts new file mode 100644 index 00000000000..c9f630585ed --- /dev/null +++ b/packages/opencode/test/effect/run-service.test.ts @@ -0,0 +1,46 @@ +import { expect, test } from "bun:test" +import { Effect, Layer, ServiceMap } from "effect" +import { makeRunPromise } from "../../src/effect/run-service" + +class Shared extends ServiceMap.Service()("@test/Shared") {} + +test("makeRunPromise shares dependent layers through the shared memo map", async () => { + let n = 0 + + const shared = Layer.effect( + Shared, + Effect.sync(() => { + n += 1 + return Shared.of({ id: n }) + }), + ) + + class One extends ServiceMap.Service Effect.Effect }>()("@test/One") {} + const one = Layer.effect( + One, + Effect.gen(function* () { + const svc = yield* Shared + return One.of({ + get: Effect.fn("One.get")(() => Effect.succeed(svc.id)), + }) + }), + ).pipe(Layer.provide(shared)) + + class Two extends ServiceMap.Service Effect.Effect }>()("@test/Two") {} + const two = Layer.effect( + Two, + Effect.gen(function* () { + const svc = yield* Shared + return Two.of({ + get: Effect.fn("Two.get")(() => Effect.succeed(svc.id)), + }) + }), + ).pipe(Layer.provide(shared)) + + const runOne = makeRunPromise(One, one) + const runTwo = makeRunPromise(Two, two) + + expect(await runOne((svc) => svc.get())).toBe(1) + expect(await runTwo((svc) => svc.get())).toBe(1) + expect(n).toBe(1) +}) diff --git a/packages/opencode/test/effect/runtime.test.ts b/packages/opencode/test/effect/runtime.test.ts deleted file mode 100644 index 70bf29aaf3d..00000000000 --- a/packages/opencode/test/effect/runtime.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { afterEach, describe, expect, test } from "bun:test" -import { Effect } from "effect" -import { runtime, runPromiseInstance } from "../../src/effect/runtime" -import { Auth } from "../../src/auth/effect" -import { Instances } from "../../src/effect/instances" -import { Instance } from "../../src/project/instance" -import { ProviderAuth } from "../../src/provider/auth" -import { Vcs } from "../../src/project/vcs" -import { Question } from "../../src/question" -import { tmpdir } from "../fixture/fixture" - -/** - * Integration tests for the Effect runtime and LayerMap-based instance system. - * - * Each instance service layer has `.pipe(Layer.fresh)` at its definition site - * so it is always rebuilt per directory, while shared dependencies are provided - * outside the fresh boundary and remain memoizable. - * - * These tests verify the invariants using object identity (===) on the real - * production services — not mock services or return-value checks. - */ - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const grabInstance = (service: any) => runPromiseInstance(service.use(Effect.succeed)) -// eslint-disable-next-line @typescript-eslint/no-explicit-any -const grabGlobal = (service: any) => runtime.runPromise(service.use(Effect.succeed)) - -describe("effect/runtime", () => { - afterEach(async () => { - await Instance.disposeAll() - }) - - test("global services are shared across directories", async () => { - await using one = await tmpdir({ git: true }) - await using two = await tmpdir({ git: true }) - - // Auth is a global service — it should be the exact same object - // regardless of which directory we're in. - const authOne = await Instance.provide({ - directory: one.path, - fn: () => grabGlobal(Auth.Service), - }) - - const authTwo = await Instance.provide({ - directory: two.path, - fn: () => grabGlobal(Auth.Service), - }) - - expect(authOne).toBe(authTwo) - }) - - test("instance services with global deps share the global (ProviderAuth → Auth)", async () => { - await using one = await tmpdir({ git: true }) - await using two = await tmpdir({ git: true }) - - // ProviderAuth depends on Auth via defaultLayer. - // The instance service itself should be different per directory, - // but the underlying Auth should be shared. - const paOne = await Instance.provide({ - directory: one.path, - fn: () => grabInstance(ProviderAuth.Service), - }) - - const paTwo = await Instance.provide({ - directory: two.path, - fn: () => grabInstance(ProviderAuth.Service), - }) - - // Different directories → different ProviderAuth instances. - expect(paOne).not.toBe(paTwo) - - // But the global Auth is the same object in both. - const authOne = await Instance.provide({ - directory: one.path, - fn: () => grabGlobal(Auth.Service), - }) - const authTwo = await Instance.provide({ - directory: two.path, - fn: () => grabGlobal(Auth.Service), - }) - expect(authOne).toBe(authTwo) - }) - - test("instance services are shared within the same directory", async () => { - await using tmp = await tmpdir({ git: true }) - - await Instance.provide({ - directory: tmp.path, - fn: async () => { - expect(await grabInstance(Vcs.Service)).toBe(await grabInstance(Vcs.Service)) - expect(await grabInstance(Question.Service)).toBe(await grabInstance(Question.Service)) - }, - }) - }) - - test("different directories get different service instances", async () => { - await using one = await tmpdir({ git: true }) - await using two = await tmpdir({ git: true }) - - const vcsOne = await Instance.provide({ - directory: one.path, - fn: () => grabInstance(Vcs.Service), - }) - - const vcsTwo = await Instance.provide({ - directory: two.path, - fn: () => grabInstance(Vcs.Service), - }) - - expect(vcsOne).not.toBe(vcsTwo) - }) - - test("disposal rebuilds services with a new instance", async () => { - await using tmp = await tmpdir({ git: true }) - - await Instance.provide({ - directory: tmp.path, - fn: async () => { - const before = await grabInstance(Question.Service) - - await runtime.runPromise(Instances.use((map) => map.invalidate(Instance.directory))) - - const after = await grabInstance(Question.Service) - expect(after).not.toBe(before) - }, - }) - }) -}) diff --git a/packages/opencode/test/file/index.test.ts b/packages/opencode/test/file/index.test.ts index 8f4cbe8688c..fae3ac1f286 100644 --- a/packages/opencode/test/file/index.test.ts +++ b/packages/opencode/test/file/index.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect } from "bun:test" +import { afterEach, describe, test, expect } from "bun:test" import { $ } from "bun" import path from "path" import fs from "fs/promises" @@ -7,6 +7,10 @@ import { Instance } from "../../src/project/instance" import { Filesystem } from "../../src/util/filesystem" import { tmpdir } from "../fixture/fixture" +afterEach(async () => { + await Instance.disposeAll() +}) + describe("file/index Filesystem patterns", () => { describe("File.read() - text content", () => { test("reads text file via Filesystem.readText()", async () => { @@ -689,6 +693,18 @@ describe("file/index Filesystem patterns", () => { }) }) + test("search works before explicit init", async () => { + await using tmp = await setupSearchableRepo() + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const result = await File.search({ query: "main", type: "file" }) + expect(result.some((f) => f.includes("main"))).toBe(true) + }, + }) + }) + test("empty query returns dirs sorted with hidden last", async () => { await using tmp = await setupSearchableRepo() @@ -785,6 +801,23 @@ describe("file/index Filesystem patterns", () => { }, }) }) + + test("search refreshes after init when files change", async () => { + await using tmp = await setupSearchableRepo() + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + await File.init() + expect(await File.search({ query: "fresh", type: "file" })).toEqual([]) + + await fs.writeFile(path.join(tmp.path, "fresh.ts"), "fresh", "utf-8") + + const result = await File.search({ query: "fresh", type: "file" }) + expect(result).toContain("fresh.ts") + }, + }) + }) }) describe("File.read() - diff/patch", () => { @@ -849,4 +882,65 @@ describe("file/index Filesystem patterns", () => { }) }) }) + + describe("InstanceState isolation", () => { + test("two directories get independent file caches", async () => { + await using one = await tmpdir({ git: true }) + await using two = await tmpdir({ git: true }) + await fs.writeFile(path.join(one.path, "a.ts"), "one", "utf-8") + await fs.writeFile(path.join(two.path, "b.ts"), "two", "utf-8") + + await Instance.provide({ + directory: one.path, + fn: async () => { + await File.init() + const results = await File.search({ query: "a.ts", type: "file" }) + expect(results).toContain("a.ts") + const results2 = await File.search({ query: "b.ts", type: "file" }) + expect(results2).not.toContain("b.ts") + }, + }) + + await Instance.provide({ + directory: two.path, + fn: async () => { + await File.init() + const results = await File.search({ query: "b.ts", type: "file" }) + expect(results).toContain("b.ts") + const results2 = await File.search({ query: "a.ts", type: "file" }) + expect(results2).not.toContain("a.ts") + }, + }) + }) + + test("disposal gives fresh state on next access", async () => { + await using tmp = await tmpdir({ git: true }) + await fs.writeFile(path.join(tmp.path, "before.ts"), "before", "utf-8") + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + await File.init() + const results = await File.search({ query: "before", type: "file" }) + expect(results).toContain("before.ts") + }, + }) + + await Instance.disposeAll() + + await fs.writeFile(path.join(tmp.path, "after.ts"), "after", "utf-8") + await fs.rm(path.join(tmp.path, "before.ts")) + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + await File.init() + const results = await File.search({ query: "after", type: "file" }) + expect(results).toContain("after.ts") + const stale = await File.search({ query: "before", type: "file" }) + expect(stale).not.toContain("before.ts") + }, + }) + }) + }) }) diff --git a/packages/opencode/test/file/time.test.ts b/packages/opencode/test/file/time.test.ts index fbf8d5cd1e2..db7eaaae0d8 100644 --- a/packages/opencode/test/file/time.test.ts +++ b/packages/opencode/test/file/time.test.ts @@ -7,7 +7,9 @@ import { SessionID } from "../../src/session/schema" import { Filesystem } from "../../src/util/filesystem" import { tmpdir } from "../fixture/fixture" -afterEach(() => Instance.disposeAll()) +afterEach(async () => { + await Instance.disposeAll() +}) async function touch(file: string, time: number) { const date = new Date(time) @@ -84,6 +86,28 @@ describe("file/time", () => { }, }) }) + + test("isolates reads by directory", async () => { + await using one = await tmpdir() + await using two = await tmpdir() + await using shared = await tmpdir() + const filepath = path.join(shared.path, "file.txt") + await fs.writeFile(filepath, "content", "utf-8") + + await Instance.provide({ + directory: one.path, + fn: async () => { + await FileTime.read(sessionID, filepath) + }, + }) + + await Instance.provide({ + directory: two.path, + fn: async () => { + expect(await FileTime.get(sessionID, filepath)).toBeUndefined() + }, + }) + }) }) describe("assert()", () => { diff --git a/packages/opencode/test/file/watcher.test.ts b/packages/opencode/test/file/watcher.test.ts index 2cd27643e88..f4f0c1c7d65 100644 --- a/packages/opencode/test/file/watcher.test.ts +++ b/packages/opencode/test/file/watcher.test.ts @@ -25,7 +25,7 @@ function withWatcher(directory: string, body: Effect.Effect) { directory, FileWatcher.layer, async (rt) => { - await rt.runPromise(FileWatcher.Service.use(() => Effect.void)) + await rt.runPromise(FileWatcher.Service.use((s) => s.init())) await Effect.runPromise(ready(directory)) await Effect.runPromise(body) }, @@ -136,7 +136,9 @@ function ready(directory: string) { // --------------------------------------------------------------------------- describeWatcher("FileWatcher", () => { - afterEach(() => Instance.disposeAll()) + afterEach(async () => { + await Instance.disposeAll() + }) test("publishes root create, update, and delete events", async () => { await using tmp = await tmpdir({ git: true }) diff --git a/packages/opencode/test/format/format.test.ts b/packages/opencode/test/format/format.test.ts index 2718e125d08..1992dede621 100644 --- a/packages/opencode/test/format/format.test.ts +++ b/packages/opencode/test/format/format.test.ts @@ -2,11 +2,16 @@ import { Effect } from "effect" import { afterEach, describe, expect, test } from "bun:test" import { tmpdir } from "../fixture/fixture" import { withServices } from "../fixture/instance" +import { Bus } from "../../src/bus" +import { File } from "../../src/file" import { Format } from "../../src/format" +import * as Formatter from "../../src/format/formatter" import { Instance } from "../../src/project/instance" describe("Format", () => { - afterEach(() => Instance.disposeAll()) + afterEach(async () => { + await Instance.disposeAll() + }) test("status() returns built-in formatters when no config overrides", async () => { await using tmp = await tmpdir() @@ -62,4 +67,106 @@ describe("Format", () => { await rt.runPromise(Format.Service.use(() => Effect.void)) }) }) + + test("status() initializes formatter state per directory", async () => { + await using off = await tmpdir({ + config: { formatter: false }, + }) + await using on = await tmpdir() + + const a = await Instance.provide({ + directory: off.path, + fn: () => Format.status(), + }) + const b = await Instance.provide({ + directory: on.path, + fn: () => Format.status(), + }) + + expect(a).toEqual([]) + expect(b.length).toBeGreaterThan(0) + }) + + test("runs enabled checks for matching formatters in parallel", async () => { + await using tmp = await tmpdir() + + const file = `${tmp.path}/test.parallel` + await Bun.write(file, "x") + + const one = { + extensions: Formatter.gofmt.extensions, + enabled: Formatter.gofmt.enabled, + command: Formatter.gofmt.command, + } + const two = { + extensions: Formatter.mix.extensions, + enabled: Formatter.mix.enabled, + command: Formatter.mix.command, + } + + let active = 0 + let max = 0 + + Formatter.gofmt.extensions = [".parallel"] + Formatter.mix.extensions = [".parallel"] + Formatter.gofmt.command = ["sh", "-c", "true"] + Formatter.mix.command = ["sh", "-c", "true"] + Formatter.gofmt.enabled = async () => { + active++ + max = Math.max(max, active) + await Bun.sleep(20) + active-- + return true + } + Formatter.mix.enabled = async () => { + active++ + max = Math.max(max, active) + await Bun.sleep(20) + active-- + return true + } + + try { + await withServices(tmp.path, Format.layer, async (rt) => { + await rt.runPromise(Format.Service.use((s) => s.init())) + await Bus.publish(File.Event.Edited, { file }) + }) + } finally { + Formatter.gofmt.extensions = one.extensions + Formatter.gofmt.enabled = one.enabled + Formatter.gofmt.command = one.command + Formatter.mix.extensions = two.extensions + Formatter.mix.enabled = two.enabled + Formatter.mix.command = two.command + } + + expect(max).toBe(2) + }) + + test("runs matching formatters sequentially for the same file", async () => { + await using tmp = await tmpdir({ + config: { + formatter: { + first: { + command: ["sh", "-c", "sleep 0.05; v=$(cat \"$1\"); printf '%sA' \"$v\" > \"$1\"", "sh", "$FILE"], + extensions: [".seq"], + }, + second: { + command: ["sh", "-c", "v=$(cat \"$1\"); printf '%sB' \"$v\" > \"$1\"", "sh", "$FILE"], + extensions: [".seq"], + }, + }, + }, + }) + + const file = `${tmp.path}/test.seq` + await Bun.write(file, "x") + + await withServices(tmp.path, Format.layer, async (rt) => { + await rt.runPromise(Format.Service.use((s) => s.init())) + await Bus.publish(File.Event.Edited, { file }) + }) + + expect(await Bun.file(file).text()).toBe("xAB") + }) }) diff --git a/packages/opencode/test/permission-task.test.ts b/packages/opencode/test/permission-task.test.ts index c78da6e6a58..3ca32bf414e 100644 --- a/packages/opencode/test/permission-task.test.ts +++ b/packages/opencode/test/permission-task.test.ts @@ -1,11 +1,15 @@ -import { describe, test, expect } from "bun:test" -import { PermissionNext } from "../src/permission" +import { afterEach, describe, test, expect } from "bun:test" +import { Permission } from "../src/permission" import { Config } from "../src/config/config" import { Instance } from "../src/project/instance" import { tmpdir } from "./fixture/fixture" -describe("PermissionNext.evaluate for permission.task", () => { - const createRuleset = (rules: Record): PermissionNext.Ruleset => +afterEach(async () => { + await Instance.disposeAll() +}) + +describe("Permission.evaluate for permission.task", () => { + const createRuleset = (rules: Record): Permission.Ruleset => Object.entries(rules).map(([pattern, action]) => ({ permission: "task", pattern, @@ -13,42 +17,42 @@ describe("PermissionNext.evaluate for permission.task", () => { })) test("returns ask when no match (default)", () => { - expect(PermissionNext.evaluate("task", "code-reviewer", []).action).toBe("ask") + expect(Permission.evaluate("task", "code-reviewer", []).action).toBe("ask") }) test("returns deny for explicit deny", () => { const ruleset = createRuleset({ "code-reviewer": "deny" }) - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") }) test("returns allow for explicit allow", () => { const ruleset = createRuleset({ "code-reviewer": "allow" }) - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("allow") }) test("returns ask for explicit ask", () => { const ruleset = createRuleset({ "code-reviewer": "ask" }) - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("ask") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("ask") }) test("matches wildcard patterns with deny", () => { const ruleset = createRuleset({ "orchestrator-*": "deny" }) - expect(PermissionNext.evaluate("task", "orchestrator-fast", ruleset).action).toBe("deny") - expect(PermissionNext.evaluate("task", "orchestrator-slow", ruleset).action).toBe("deny") - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("ask") + expect(Permission.evaluate("task", "orchestrator-fast", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "orchestrator-slow", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "general", ruleset).action).toBe("ask") }) test("matches wildcard patterns with allow", () => { const ruleset = createRuleset({ "orchestrator-*": "allow" }) - expect(PermissionNext.evaluate("task", "orchestrator-fast", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("task", "orchestrator-slow", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "orchestrator-fast", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "orchestrator-slow", ruleset).action).toBe("allow") }) test("matches wildcard patterns with ask", () => { const ruleset = createRuleset({ "orchestrator-*": "ask" }) - expect(PermissionNext.evaluate("task", "orchestrator-fast", ruleset).action).toBe("ask") + expect(Permission.evaluate("task", "orchestrator-fast", ruleset).action).toBe("ask") const globalRuleset = createRuleset({ "*": "ask" }) - expect(PermissionNext.evaluate("task", "code-reviewer", globalRuleset).action).toBe("ask") + expect(Permission.evaluate("task", "code-reviewer", globalRuleset).action).toBe("ask") }) test("later rules take precedence (last match wins)", () => { @@ -56,22 +60,22 @@ describe("PermissionNext.evaluate for permission.task", () => { "orchestrator-*": "deny", "orchestrator-fast": "allow", }) - expect(PermissionNext.evaluate("task", "orchestrator-fast", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("task", "orchestrator-slow", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "orchestrator-fast", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "orchestrator-slow", ruleset).action).toBe("deny") }) test("matches global wildcard", () => { - expect(PermissionNext.evaluate("task", "any-agent", createRuleset({ "*": "allow" })).action).toBe("allow") - expect(PermissionNext.evaluate("task", "any-agent", createRuleset({ "*": "deny" })).action).toBe("deny") - expect(PermissionNext.evaluate("task", "any-agent", createRuleset({ "*": "ask" })).action).toBe("ask") + expect(Permission.evaluate("task", "any-agent", createRuleset({ "*": "allow" })).action).toBe("allow") + expect(Permission.evaluate("task", "any-agent", createRuleset({ "*": "deny" })).action).toBe("deny") + expect(Permission.evaluate("task", "any-agent", createRuleset({ "*": "ask" })).action).toBe("ask") }) }) -describe("PermissionNext.disabled for task tool", () => { +describe("Permission.disabled for task tool", () => { // Note: The `disabled` function checks if a TOOL should be completely removed from the tool list. // It only disables a tool when there's a rule with `pattern: "*"` and `action: "deny"`. // It does NOT evaluate complex subagent patterns - those are handled at runtime by `evaluate`. - const createRuleset = (rules: Record): PermissionNext.Ruleset => + const createRuleset = (rules: Record): Permission.Ruleset => Object.entries(rules).map(([pattern, action]) => ({ permission: "task", pattern, @@ -85,7 +89,7 @@ describe("PermissionNext.disabled for task tool", () => { "orchestrator-*": "allow", "*": "deny", }) - const disabled = PermissionNext.disabled(["task", "bash", "read"], ruleset) + const disabled = Permission.disabled(["task", "bash", "read"], ruleset) // The task tool IS disabled because there's a pattern: "*" with action: "deny" expect(disabled.has("task")).toBe(true) }) @@ -95,14 +99,14 @@ describe("PermissionNext.disabled for task tool", () => { "orchestrator-*": "ask", "*": "deny", }) - const disabled = PermissionNext.disabled(["task"], ruleset) + const disabled = Permission.disabled(["task"], ruleset) // The task tool IS disabled because there's a pattern: "*" with action: "deny" expect(disabled.has("task")).toBe(true) }) test("task tool is disabled when global deny pattern exists", () => { const ruleset = createRuleset({ "*": "deny" }) - const disabled = PermissionNext.disabled(["task"], ruleset) + const disabled = Permission.disabled(["task"], ruleset) expect(disabled.has("task")).toBe(true) }) @@ -113,13 +117,13 @@ describe("PermissionNext.disabled for task tool", () => { "orchestrator-*": "deny", general: "deny", }) - const disabled = PermissionNext.disabled(["task"], ruleset) + const disabled = Permission.disabled(["task"], ruleset) // The task tool is NOT disabled because no rule has pattern: "*" with action: "deny" expect(disabled.has("task")).toBe(false) }) test("task tool is enabled when no task rules exist (default ask)", () => { - const disabled = PermissionNext.disabled(["task"], []) + const disabled = Permission.disabled(["task"], []) expect(disabled.has("task")).toBe(false) }) @@ -129,7 +133,7 @@ describe("PermissionNext.disabled for task tool", () => { "*": "deny", "orchestrator-coder": "allow", }) - const disabled = PermissionNext.disabled(["task"], ruleset) + const disabled = Permission.disabled(["task"], ruleset) // The disabled() function uses findLast and checks if the last matching rule // has pattern: "*" and action: "deny". In this case, the last rule matching // "task" permission has pattern "orchestrator-coder", not "*", so not disabled @@ -155,11 +159,11 @@ describe("permission.task with real config files", () => { directory: tmp.path, fn: async () => { const config = await Config.get() - const ruleset = PermissionNext.fromConfig(config.permission ?? {}) + const ruleset = Permission.fromConfig(config.permission ?? {}) // general and orchestrator-fast should be allowed, code-reviewer denied - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("task", "orchestrator-fast", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "general", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "orchestrator-fast", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") }, }) }) @@ -180,11 +184,11 @@ describe("permission.task with real config files", () => { directory: tmp.path, fn: async () => { const config = await Config.get() - const ruleset = PermissionNext.fromConfig(config.permission ?? {}) + const ruleset = Permission.fromConfig(config.permission ?? {}) // general and code-reviewer should be ask, orchestrator-* denied - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("ask") - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("ask") - expect(PermissionNext.evaluate("task", "orchestrator-fast", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "general", ruleset).action).toBe("ask") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("ask") + expect(Permission.evaluate("task", "orchestrator-fast", ruleset).action).toBe("deny") }, }) }) @@ -205,11 +209,11 @@ describe("permission.task with real config files", () => { directory: tmp.path, fn: async () => { const config = await Config.get() - const ruleset = PermissionNext.fromConfig(config.permission ?? {}) - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") + const ruleset = Permission.fromConfig(config.permission ?? {}) + expect(Permission.evaluate("task", "general", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") // Unspecified agents default to "ask" - expect(PermissionNext.evaluate("task", "unknown-agent", ruleset).action).toBe("ask") + expect(Permission.evaluate("task", "unknown-agent", ruleset).action).toBe("ask") }, }) }) @@ -232,18 +236,18 @@ describe("permission.task with real config files", () => { directory: tmp.path, fn: async () => { const config = await Config.get() - const ruleset = PermissionNext.fromConfig(config.permission ?? {}) + const ruleset = Permission.fromConfig(config.permission ?? {}) // Verify task permissions - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "general", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") // Verify other tool permissions - expect(PermissionNext.evaluate("bash", "*", ruleset).action).toBe("allow") - expect(PermissionNext.evaluate("edit", "*", ruleset).action).toBe("ask") + expect(Permission.evaluate("bash", "*", ruleset).action).toBe("allow") + expect(Permission.evaluate("edit", "*", ruleset).action).toBe("ask") // Verify disabled tools - const disabled = PermissionNext.disabled(["bash", "edit", "task"], ruleset) + const disabled = Permission.disabled(["bash", "edit", "task"], ruleset) expect(disabled.has("bash")).toBe(false) expect(disabled.has("edit")).toBe(false) // task is NOT disabled because disabled() uses findLast, and the last rule @@ -270,16 +274,16 @@ describe("permission.task with real config files", () => { directory: tmp.path, fn: async () => { const config = await Config.get() - const ruleset = PermissionNext.fromConfig(config.permission ?? {}) + const ruleset = Permission.fromConfig(config.permission ?? {}) // Last matching rule wins - "*" deny is last, so all agents are denied - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("deny") - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") - expect(PermissionNext.evaluate("task", "unknown", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "general", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "unknown", ruleset).action).toBe("deny") // Since "*": "deny" is the last rule, disabled() finds it with findLast // and sees pattern: "*" with action: "deny", so task is disabled - const disabled = PermissionNext.disabled(["task"], ruleset) + const disabled = Permission.disabled(["task"], ruleset) expect(disabled.has("task")).toBe(true) }, }) @@ -301,17 +305,17 @@ describe("permission.task with real config files", () => { directory: tmp.path, fn: async () => { const config = await Config.get() - const ruleset = PermissionNext.fromConfig(config.permission ?? {}) + const ruleset = Permission.fromConfig(config.permission ?? {}) // Evaluate uses findLast - "general" allow comes after "*" deny - expect(PermissionNext.evaluate("task", "general", ruleset).action).toBe("allow") + expect(Permission.evaluate("task", "general", ruleset).action).toBe("allow") // Other agents still denied by the earlier "*" deny - expect(PermissionNext.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") + expect(Permission.evaluate("task", "code-reviewer", ruleset).action).toBe("deny") // disabled() uses findLast and checks if the last rule has pattern: "*" with action: "deny" // In this case, the last rule is {pattern: "general", action: "allow"}, not pattern: "*" // So the task tool is NOT disabled (even though most subagents are denied) - const disabled = PermissionNext.disabled(["task"], ruleset) + const disabled = Permission.disabled(["task"], ruleset) expect(disabled.has("task")).toBe(false) }, }) diff --git a/packages/opencode/test/permission/next.test.ts b/packages/opencode/test/permission/next.test.ts index 2a6b6e0bafa..043e3257b64 100644 --- a/packages/opencode/test/permission/next.test.ts +++ b/packages/opencode/test/permission/next.test.ts @@ -1,11 +1,7 @@ import { afterEach, test, expect } from "bun:test" import os from "os" -import { Effect } from "effect" import { Bus } from "../../src/bus" -import { runtime } from "../../src/effect/runtime" -import { Instances } from "../../src/effect/instances" -import { PermissionNext } from "../../src/permission" -import { PermissionNext as S } from "../../src/permission" +import { Permission } from "../../src/permission" import { PermissionID } from "../../src/permission/schema" import { Instance } from "../../src/project/instance" import { tmpdir } from "../fixture/fixture" @@ -16,8 +12,8 @@ afterEach(async () => { }) async function rejectAll(message?: string) { - for (const req of await PermissionNext.list()) { - await PermissionNext.reply({ + for (const req of await Permission.list()) { + await Permission.reply({ requestID: req.id, reply: "reject", message, @@ -27,22 +23,22 @@ async function rejectAll(message?: string) { async function waitForPending(count: number) { for (let i = 0; i < 20; i++) { - const list = await PermissionNext.list() + const list = await Permission.list() if (list.length === count) return list await Bun.sleep(0) } - return PermissionNext.list() + return Permission.list() } // fromConfig tests test("fromConfig - string value becomes wildcard rule", () => { - const result = PermissionNext.fromConfig({ bash: "allow" }) + const result = Permission.fromConfig({ bash: "allow" }) expect(result).toEqual([{ permission: "bash", pattern: "*", action: "allow" }]) }) test("fromConfig - object value converts to rules array", () => { - const result = PermissionNext.fromConfig({ bash: { "*": "allow", rm: "deny" } }) + const result = Permission.fromConfig({ bash: { "*": "allow", rm: "deny" } }) expect(result).toEqual([ { permission: "bash", pattern: "*", action: "allow" }, { permission: "bash", pattern: "rm", action: "deny" }, @@ -50,7 +46,7 @@ test("fromConfig - object value converts to rules array", () => { }) test("fromConfig - mixed string and object values", () => { - const result = PermissionNext.fromConfig({ + const result = Permission.fromConfig({ bash: { "*": "allow", rm: "deny" }, edit: "allow", webfetch: "ask", @@ -64,51 +60,51 @@ test("fromConfig - mixed string and object values", () => { }) test("fromConfig - empty object", () => { - const result = PermissionNext.fromConfig({}) + const result = Permission.fromConfig({}) expect(result).toEqual([]) }) test("fromConfig - expands tilde to home directory", () => { - const result = PermissionNext.fromConfig({ external_directory: { "~/projects/*": "allow" } }) + const result = Permission.fromConfig({ external_directory: { "~/projects/*": "allow" } }) expect(result).toEqual([{ permission: "external_directory", pattern: `${os.homedir()}/projects/*`, action: "allow" }]) }) test("fromConfig - expands $HOME to home directory", () => { - const result = PermissionNext.fromConfig({ external_directory: { "$HOME/projects/*": "allow" } }) + const result = Permission.fromConfig({ external_directory: { "$HOME/projects/*": "allow" } }) expect(result).toEqual([{ permission: "external_directory", pattern: `${os.homedir()}/projects/*`, action: "allow" }]) }) test("fromConfig - expands $HOME without trailing slash", () => { - const result = PermissionNext.fromConfig({ external_directory: { $HOME: "allow" } }) + const result = Permission.fromConfig({ external_directory: { $HOME: "allow" } }) expect(result).toEqual([{ permission: "external_directory", pattern: os.homedir(), action: "allow" }]) }) test("fromConfig - does not expand tilde in middle of path", () => { - const result = PermissionNext.fromConfig({ external_directory: { "/some/~/path": "allow" } }) + const result = Permission.fromConfig({ external_directory: { "/some/~/path": "allow" } }) expect(result).toEqual([{ permission: "external_directory", pattern: "/some/~/path", action: "allow" }]) }) test("fromConfig - expands exact tilde to home directory", () => { - const result = PermissionNext.fromConfig({ external_directory: { "~": "allow" } }) + const result = Permission.fromConfig({ external_directory: { "~": "allow" } }) expect(result).toEqual([{ permission: "external_directory", pattern: os.homedir(), action: "allow" }]) }) test("evaluate - matches expanded tilde pattern", () => { - const ruleset = PermissionNext.fromConfig({ external_directory: { "~/projects/*": "allow" } }) - const result = PermissionNext.evaluate("external_directory", `${os.homedir()}/projects/file.txt`, ruleset) + const ruleset = Permission.fromConfig({ external_directory: { "~/projects/*": "allow" } }) + const result = Permission.evaluate("external_directory", `${os.homedir()}/projects/file.txt`, ruleset) expect(result.action).toBe("allow") }) test("evaluate - matches expanded $HOME pattern", () => { - const ruleset = PermissionNext.fromConfig({ external_directory: { "$HOME/projects/*": "allow" } }) - const result = PermissionNext.evaluate("external_directory", `${os.homedir()}/projects/file.txt`, ruleset) + const ruleset = Permission.fromConfig({ external_directory: { "$HOME/projects/*": "allow" } }) + const result = Permission.evaluate("external_directory", `${os.homedir()}/projects/file.txt`, ruleset) expect(result.action).toBe("allow") }) // merge tests test("merge - simple concatenation", () => { - const result = PermissionNext.merge( + const result = Permission.merge( [{ permission: "bash", pattern: "*", action: "allow" }], [{ permission: "bash", pattern: "*", action: "deny" }], ) @@ -119,7 +115,7 @@ test("merge - simple concatenation", () => { }) test("merge - adds new permission", () => { - const result = PermissionNext.merge( + const result = Permission.merge( [{ permission: "bash", pattern: "*", action: "allow" }], [{ permission: "edit", pattern: "*", action: "deny" }], ) @@ -130,7 +126,7 @@ test("merge - adds new permission", () => { }) test("merge - concatenates rules for same permission", () => { - const result = PermissionNext.merge( + const result = Permission.merge( [{ permission: "bash", pattern: "foo", action: "ask" }], [{ permission: "bash", pattern: "*", action: "deny" }], ) @@ -141,7 +137,7 @@ test("merge - concatenates rules for same permission", () => { }) test("merge - multiple rulesets", () => { - const result = PermissionNext.merge( + const result = Permission.merge( [{ permission: "bash", pattern: "*", action: "allow" }], [{ permission: "bash", pattern: "rm", action: "ask" }], [{ permission: "edit", pattern: "*", action: "allow" }], @@ -154,12 +150,12 @@ test("merge - multiple rulesets", () => { }) test("merge - empty ruleset does nothing", () => { - const result = PermissionNext.merge([{ permission: "bash", pattern: "*", action: "allow" }], []) + const result = Permission.merge([{ permission: "bash", pattern: "*", action: "allow" }], []) expect(result).toEqual([{ permission: "bash", pattern: "*", action: "allow" }]) }) test("merge - preserves rule order", () => { - const result = PermissionNext.merge( + const result = Permission.merge( [ { permission: "edit", pattern: "src/*", action: "allow" }, { permission: "edit", pattern: "src/secret/*", action: "deny" }, @@ -175,40 +171,40 @@ test("merge - preserves rule order", () => { test("merge - config permission overrides default ask", () => { // Simulates: defaults have "*": "ask", config sets bash: "allow" - const defaults: PermissionNext.Ruleset = [{ permission: "*", pattern: "*", action: "ask" }] - const config: PermissionNext.Ruleset = [{ permission: "bash", pattern: "*", action: "allow" }] - const merged = PermissionNext.merge(defaults, config) + const defaults: Permission.Ruleset = [{ permission: "*", pattern: "*", action: "ask" }] + const config: Permission.Ruleset = [{ permission: "bash", pattern: "*", action: "allow" }] + const merged = Permission.merge(defaults, config) // Config's bash allow should override default ask - expect(PermissionNext.evaluate("bash", "ls", merged).action).toBe("allow") + expect(Permission.evaluate("bash", "ls", merged).action).toBe("allow") // Other permissions should still be ask (from defaults) - expect(PermissionNext.evaluate("edit", "foo.ts", merged).action).toBe("ask") + expect(Permission.evaluate("edit", "foo.ts", merged).action).toBe("ask") }) test("merge - config ask overrides default allow", () => { // Simulates: defaults have bash: "allow", config sets bash: "ask" - const defaults: PermissionNext.Ruleset = [{ permission: "bash", pattern: "*", action: "allow" }] - const config: PermissionNext.Ruleset = [{ permission: "bash", pattern: "*", action: "ask" }] - const merged = PermissionNext.merge(defaults, config) + const defaults: Permission.Ruleset = [{ permission: "bash", pattern: "*", action: "allow" }] + const config: Permission.Ruleset = [{ permission: "bash", pattern: "*", action: "ask" }] + const merged = Permission.merge(defaults, config) // Config's ask should override default allow - expect(PermissionNext.evaluate("bash", "ls", merged).action).toBe("ask") + expect(Permission.evaluate("bash", "ls", merged).action).toBe("ask") }) // evaluate tests test("evaluate - exact pattern match", () => { - const result = PermissionNext.evaluate("bash", "rm", [{ permission: "bash", pattern: "rm", action: "deny" }]) + const result = Permission.evaluate("bash", "rm", [{ permission: "bash", pattern: "rm", action: "deny" }]) expect(result.action).toBe("deny") }) test("evaluate - wildcard pattern match", () => { - const result = PermissionNext.evaluate("bash", "rm", [{ permission: "bash", pattern: "*", action: "allow" }]) + const result = Permission.evaluate("bash", "rm", [{ permission: "bash", pattern: "*", action: "allow" }]) expect(result.action).toBe("allow") }) test("evaluate - last matching rule wins", () => { - const result = PermissionNext.evaluate("bash", "rm", [ + const result = Permission.evaluate("bash", "rm", [ { permission: "bash", pattern: "*", action: "allow" }, { permission: "bash", pattern: "rm", action: "deny" }, ]) @@ -216,7 +212,7 @@ test("evaluate - last matching rule wins", () => { }) test("evaluate - last matching rule wins (wildcard after specific)", () => { - const result = PermissionNext.evaluate("bash", "rm", [ + const result = Permission.evaluate("bash", "rm", [ { permission: "bash", pattern: "rm", action: "deny" }, { permission: "bash", pattern: "*", action: "allow" }, ]) @@ -224,14 +220,12 @@ test("evaluate - last matching rule wins (wildcard after specific)", () => { }) test("evaluate - glob pattern match", () => { - const result = PermissionNext.evaluate("edit", "src/foo.ts", [ - { permission: "edit", pattern: "src/*", action: "allow" }, - ]) + const result = Permission.evaluate("edit", "src/foo.ts", [{ permission: "edit", pattern: "src/*", action: "allow" }]) expect(result.action).toBe("allow") }) test("evaluate - last matching glob wins", () => { - const result = PermissionNext.evaluate("edit", "src/components/Button.tsx", [ + const result = Permission.evaluate("edit", "src/components/Button.tsx", [ { permission: "edit", pattern: "src/*", action: "deny" }, { permission: "edit", pattern: "src/components/*", action: "allow" }, ]) @@ -240,7 +234,7 @@ test("evaluate - last matching glob wins", () => { test("evaluate - order matters for specificity", () => { // If more specific rule comes first, later wildcard overrides it - const result = PermissionNext.evaluate("edit", "src/components/Button.tsx", [ + const result = Permission.evaluate("edit", "src/components/Button.tsx", [ { permission: "edit", pattern: "src/components/*", action: "allow" }, { permission: "edit", pattern: "src/*", action: "deny" }, ]) @@ -248,31 +242,29 @@ test("evaluate - order matters for specificity", () => { }) test("evaluate - unknown permission returns ask", () => { - const result = PermissionNext.evaluate("unknown_tool", "anything", [ + const result = Permission.evaluate("unknown_tool", "anything", [ { permission: "bash", pattern: "*", action: "allow" }, ]) expect(result.action).toBe("ask") }) test("evaluate - empty ruleset returns ask", () => { - const result = PermissionNext.evaluate("bash", "rm", []) + const result = Permission.evaluate("bash", "rm", []) expect(result.action).toBe("ask") }) test("evaluate - no matching pattern returns ask", () => { - const result = PermissionNext.evaluate("edit", "etc/passwd", [ - { permission: "edit", pattern: "src/*", action: "allow" }, - ]) + const result = Permission.evaluate("edit", "etc/passwd", [{ permission: "edit", pattern: "src/*", action: "allow" }]) expect(result.action).toBe("ask") }) test("evaluate - empty rules array returns ask", () => { - const result = PermissionNext.evaluate("bash", "rm", []) + const result = Permission.evaluate("bash", "rm", []) expect(result.action).toBe("ask") }) test("evaluate - multiple matching patterns, last wins", () => { - const result = PermissionNext.evaluate("edit", "src/secret.ts", [ + const result = Permission.evaluate("edit", "src/secret.ts", [ { permission: "edit", pattern: "*", action: "ask" }, { permission: "edit", pattern: "src/*", action: "allow" }, { permission: "edit", pattern: "src/secret.ts", action: "deny" }, @@ -281,7 +273,7 @@ test("evaluate - multiple matching patterns, last wins", () => { }) test("evaluate - non-matching patterns are skipped", () => { - const result = PermissionNext.evaluate("edit", "src/foo.ts", [ + const result = Permission.evaluate("edit", "src/foo.ts", [ { permission: "edit", pattern: "*", action: "ask" }, { permission: "edit", pattern: "test/*", action: "deny" }, { permission: "edit", pattern: "src/*", action: "allow" }, @@ -290,7 +282,7 @@ test("evaluate - non-matching patterns are skipped", () => { }) test("evaluate - exact match at end wins over earlier wildcard", () => { - const result = PermissionNext.evaluate("bash", "/bin/rm", [ + const result = Permission.evaluate("bash", "/bin/rm", [ { permission: "bash", pattern: "*", action: "allow" }, { permission: "bash", pattern: "/bin/rm", action: "deny" }, ]) @@ -298,7 +290,7 @@ test("evaluate - exact match at end wins over earlier wildcard", () => { }) test("evaluate - wildcard at end overrides earlier exact match", () => { - const result = PermissionNext.evaluate("bash", "/bin/rm", [ + const result = Permission.evaluate("bash", "/bin/rm", [ { permission: "bash", pattern: "/bin/rm", action: "deny" }, { permission: "bash", pattern: "*", action: "allow" }, ]) @@ -308,24 +300,24 @@ test("evaluate - wildcard at end overrides earlier exact match", () => { // wildcard permission tests test("evaluate - wildcard permission matches any permission", () => { - const result = PermissionNext.evaluate("bash", "rm", [{ permission: "*", pattern: "*", action: "deny" }]) + const result = Permission.evaluate("bash", "rm", [{ permission: "*", pattern: "*", action: "deny" }]) expect(result.action).toBe("deny") }) test("evaluate - wildcard permission with specific pattern", () => { - const result = PermissionNext.evaluate("bash", "rm", [{ permission: "*", pattern: "rm", action: "deny" }]) + const result = Permission.evaluate("bash", "rm", [{ permission: "*", pattern: "rm", action: "deny" }]) expect(result.action).toBe("deny") }) test("evaluate - glob permission pattern", () => { - const result = PermissionNext.evaluate("mcp_server_tool", "anything", [ + const result = Permission.evaluate("mcp_server_tool", "anything", [ { permission: "mcp_*", pattern: "*", action: "allow" }, ]) expect(result.action).toBe("allow") }) test("evaluate - specific permission and wildcard permission combined", () => { - const result = PermissionNext.evaluate("bash", "rm", [ + const result = Permission.evaluate("bash", "rm", [ { permission: "*", pattern: "*", action: "deny" }, { permission: "bash", pattern: "*", action: "allow" }, ]) @@ -333,7 +325,7 @@ test("evaluate - specific permission and wildcard permission combined", () => { }) test("evaluate - wildcard permission does not match when specific exists", () => { - const result = PermissionNext.evaluate("edit", "src/foo.ts", [ + const result = Permission.evaluate("edit", "src/foo.ts", [ { permission: "*", pattern: "*", action: "deny" }, { permission: "edit", pattern: "src/*", action: "allow" }, ]) @@ -341,7 +333,7 @@ test("evaluate - wildcard permission does not match when specific exists", () => }) test("evaluate - multiple matching permission patterns combine rules", () => { - const result = PermissionNext.evaluate("mcp_dangerous", "anything", [ + const result = Permission.evaluate("mcp_dangerous", "anything", [ { permission: "*", pattern: "*", action: "ask" }, { permission: "mcp_*", pattern: "*", action: "allow" }, { permission: "mcp_dangerous", pattern: "*", action: "deny" }, @@ -350,7 +342,7 @@ test("evaluate - multiple matching permission patterns combine rules", () => { }) test("evaluate - wildcard permission fallback for unknown tool", () => { - const result = PermissionNext.evaluate("unknown_tool", "anything", [ + const result = Permission.evaluate("unknown_tool", "anything", [ { permission: "*", pattern: "*", action: "ask" }, { permission: "bash", pattern: "*", action: "allow" }, ]) @@ -359,7 +351,7 @@ test("evaluate - wildcard permission fallback for unknown tool", () => { test("evaluate - permission patterns sorted by length regardless of object order", () => { // specific permission listed before wildcard, but specific should still win - const result = PermissionNext.evaluate("bash", "rm", [ + const result = Permission.evaluate("bash", "rm", [ { permission: "bash", pattern: "*", action: "allow" }, { permission: "*", pattern: "*", action: "deny" }, ]) @@ -368,22 +360,22 @@ test("evaluate - permission patterns sorted by length regardless of object order }) test("evaluate - merges multiple rulesets", () => { - const config: PermissionNext.Ruleset = [{ permission: "bash", pattern: "*", action: "allow" }] - const approved: PermissionNext.Ruleset = [{ permission: "bash", pattern: "rm", action: "deny" }] + const config: Permission.Ruleset = [{ permission: "bash", pattern: "*", action: "allow" }] + const approved: Permission.Ruleset = [{ permission: "bash", pattern: "rm", action: "deny" }] // approved comes after config, so rm should be denied - const result = PermissionNext.evaluate("bash", "rm", config, approved) + const result = Permission.evaluate("bash", "rm", config, approved) expect(result.action).toBe("deny") }) // disabled tests test("disabled - returns empty set when all tools allowed", () => { - const result = PermissionNext.disabled(["bash", "edit", "read"], [{ permission: "*", pattern: "*", action: "allow" }]) + const result = Permission.disabled(["bash", "edit", "read"], [{ permission: "*", pattern: "*", action: "allow" }]) expect(result.size).toBe(0) }) test("disabled - disables tool when denied", () => { - const result = PermissionNext.disabled( + const result = Permission.disabled( ["bash", "edit", "read"], [ { permission: "*", pattern: "*", action: "allow" }, @@ -396,7 +388,7 @@ test("disabled - disables tool when denied", () => { }) test("disabled - disables edit/write/apply_patch/multiedit when edit denied", () => { - const result = PermissionNext.disabled( + const result = Permission.disabled( ["edit", "write", "apply_patch", "multiedit", "bash"], [ { permission: "*", pattern: "*", action: "allow" }, @@ -411,7 +403,7 @@ test("disabled - disables edit/write/apply_patch/multiedit when edit denied", () }) test("disabled - does not disable when partially denied", () => { - const result = PermissionNext.disabled( + const result = Permission.disabled( ["bash"], [ { permission: "bash", pattern: "*", action: "allow" }, @@ -422,14 +414,14 @@ test("disabled - does not disable when partially denied", () => { }) test("disabled - does not disable when action is ask", () => { - const result = PermissionNext.disabled(["bash", "edit"], [{ permission: "*", pattern: "*", action: "ask" }]) + const result = Permission.disabled(["bash", "edit"], [{ permission: "*", pattern: "*", action: "ask" }]) expect(result.size).toBe(0) }) test("disabled - does not disable when specific allow after wildcard deny", () => { // Tool is NOT disabled because a specific allow after wildcard deny means // there's at least some usage allowed - const result = PermissionNext.disabled( + const result = Permission.disabled( ["bash"], [ { permission: "bash", pattern: "*", action: "deny" }, @@ -440,7 +432,7 @@ test("disabled - does not disable when specific allow after wildcard deny", () = }) test("disabled - does not disable when wildcard allow after deny", () => { - const result = PermissionNext.disabled( + const result = Permission.disabled( ["bash"], [ { permission: "bash", pattern: "rm *", action: "deny" }, @@ -451,7 +443,7 @@ test("disabled - does not disable when wildcard allow after deny", () => { }) test("disabled - disables multiple tools", () => { - const result = PermissionNext.disabled( + const result = Permission.disabled( ["bash", "edit", "webfetch"], [ { permission: "bash", pattern: "*", action: "deny" }, @@ -465,14 +457,14 @@ test("disabled - disables multiple tools", () => { }) test("disabled - wildcard permission denies all tools", () => { - const result = PermissionNext.disabled(["bash", "edit", "read"], [{ permission: "*", pattern: "*", action: "deny" }]) + const result = Permission.disabled(["bash", "edit", "read"], [{ permission: "*", pattern: "*", action: "deny" }]) expect(result.has("bash")).toBe(true) expect(result.has("edit")).toBe(true) expect(result.has("read")).toBe(true) }) test("disabled - specific allow overrides wildcard deny", () => { - const result = PermissionNext.disabled( + const result = Permission.disabled( ["bash", "edit", "read"], [ { permission: "*", pattern: "*", action: "deny" }, @@ -491,7 +483,7 @@ test("ask - resolves immediately when action is allow", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const result = await PermissionNext.ask({ + const result = await Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["ls"], @@ -510,7 +502,7 @@ test("ask - throws RejectedError when action is deny", async () => { directory: tmp.path, fn: async () => { await expect( - PermissionNext.ask({ + Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["rm -rf /"], @@ -518,7 +510,7 @@ test("ask - throws RejectedError when action is deny", async () => { always: [], ruleset: [{ permission: "bash", pattern: "*", action: "deny" }], }), - ).rejects.toBeInstanceOf(PermissionNext.DeniedError) + ).rejects.toBeInstanceOf(Permission.DeniedError) }, }) }) @@ -528,7 +520,7 @@ test("ask - returns pending promise when action is ask", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const promise = PermissionNext.ask({ + const promise = Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["ls"], @@ -550,7 +542,7 @@ test("ask - adds request to pending list", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const ask = PermissionNext.ask({ + const ask = Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["ls"], @@ -563,7 +555,7 @@ test("ask - adds request to pending list", async () => { ruleset: [], }) - const list = await PermissionNext.list() + const list = await Permission.list() expect(list).toHaveLength(1) expect(list[0]).toMatchObject({ sessionID: SessionID.make("session_test"), @@ -588,12 +580,12 @@ test("ask - publishes asked event", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - let seen: PermissionNext.Request | undefined - const unsub = Bus.subscribe(PermissionNext.Event.Asked, (event) => { + let seen: Permission.Request | undefined + const unsub = Bus.subscribe(Permission.Event.Asked, (event) => { seen = event.properties }) - const ask = PermissionNext.ask({ + const ask = Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["ls"], @@ -606,7 +598,7 @@ test("ask - publishes asked event", async () => { ruleset: [], }) - expect(await PermissionNext.list()).toHaveLength(1) + expect(await Permission.list()).toHaveLength(1) expect(seen).toBeDefined() expect(seen).toMatchObject({ sessionID: SessionID.make("session_test"), @@ -628,7 +620,7 @@ test("reply - once resolves the pending ask", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const askPromise = PermissionNext.ask({ + const askPromise = Permission.ask({ id: PermissionID.make("per_test1"), sessionID: SessionID.make("session_test"), permission: "bash", @@ -640,7 +632,7 @@ test("reply - once resolves the pending ask", async () => { await waitForPending(1) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test1"), reply: "once", }) @@ -655,7 +647,7 @@ test("reply - reject throws RejectedError", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const askPromise = PermissionNext.ask({ + const askPromise = Permission.ask({ id: PermissionID.make("per_test2"), sessionID: SessionID.make("session_test"), permission: "bash", @@ -667,12 +659,12 @@ test("reply - reject throws RejectedError", async () => { await waitForPending(1) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test2"), reply: "reject", }) - await expect(askPromise).rejects.toBeInstanceOf(PermissionNext.RejectedError) + await expect(askPromise).rejects.toBeInstanceOf(Permission.RejectedError) }, }) }) @@ -682,7 +674,7 @@ test("reply - reject with message throws CorrectedError", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const ask = PermissionNext.ask({ + const ask = Permission.ask({ id: PermissionID.make("per_test2b"), sessionID: SessionID.make("session_test"), permission: "bash", @@ -694,14 +686,14 @@ test("reply - reject with message throws CorrectedError", async () => { await waitForPending(1) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test2b"), reply: "reject", message: "Use a safer command", }) const err = await ask.catch((err) => err) - expect(err).toBeInstanceOf(PermissionNext.CorrectedError) + expect(err).toBeInstanceOf(Permission.CorrectedError) expect(err.message).toContain("Use a safer command") }, }) @@ -712,7 +704,7 @@ test("reply - always persists approval and resolves", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const askPromise = PermissionNext.ask({ + const askPromise = Permission.ask({ id: PermissionID.make("per_test3"), sessionID: SessionID.make("session_test"), permission: "bash", @@ -724,7 +716,7 @@ test("reply - always persists approval and resolves", async () => { await waitForPending(1) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test3"), reply: "always", }) @@ -737,7 +729,7 @@ test("reply - always persists approval and resolves", async () => { directory: tmp.path, fn: async () => { // Stored approval should allow without asking - const result = await PermissionNext.ask({ + const result = await Permission.ask({ sessionID: SessionID.make("session_test2"), permission: "bash", patterns: ["ls"], @@ -755,7 +747,7 @@ test("reply - reject cancels all pending for same session", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const askPromise1 = PermissionNext.ask({ + const askPromise1 = Permission.ask({ id: PermissionID.make("per_test4a"), sessionID: SessionID.make("session_same"), permission: "bash", @@ -765,7 +757,7 @@ test("reply - reject cancels all pending for same session", async () => { ruleset: [], }) - const askPromise2 = PermissionNext.ask({ + const askPromise2 = Permission.ask({ id: PermissionID.make("per_test4b"), sessionID: SessionID.make("session_same"), permission: "edit", @@ -782,14 +774,14 @@ test("reply - reject cancels all pending for same session", async () => { const result2 = askPromise2.catch((e) => e) // Reject the first one - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test4a"), reply: "reject", }) // Both should be rejected - expect(await result1).toBeInstanceOf(PermissionNext.RejectedError) - expect(await result2).toBeInstanceOf(PermissionNext.RejectedError) + expect(await result1).toBeInstanceOf(Permission.RejectedError) + expect(await result2).toBeInstanceOf(Permission.RejectedError) }, }) }) @@ -799,7 +791,7 @@ test("reply - always resolves matching pending requests in same session", async await Instance.provide({ directory: tmp.path, fn: async () => { - const a = PermissionNext.ask({ + const a = Permission.ask({ id: PermissionID.make("per_test5a"), sessionID: SessionID.make("session_same"), permission: "bash", @@ -809,7 +801,7 @@ test("reply - always resolves matching pending requests in same session", async ruleset: [], }) - const b = PermissionNext.ask({ + const b = Permission.ask({ id: PermissionID.make("per_test5b"), sessionID: SessionID.make("session_same"), permission: "bash", @@ -821,14 +813,14 @@ test("reply - always resolves matching pending requests in same session", async await waitForPending(2) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test5a"), reply: "always", }) await expect(a).resolves.toBeUndefined() await expect(b).resolves.toBeUndefined() - expect(await PermissionNext.list()).toHaveLength(0) + expect(await Permission.list()).toHaveLength(0) }, }) }) @@ -838,7 +830,7 @@ test("reply - always keeps other session pending", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const a = PermissionNext.ask({ + const a = Permission.ask({ id: PermissionID.make("per_test6a"), sessionID: SessionID.make("session_a"), permission: "bash", @@ -848,7 +840,7 @@ test("reply - always keeps other session pending", async () => { ruleset: [], }) - const b = PermissionNext.ask({ + const b = Permission.ask({ id: PermissionID.make("per_test6b"), sessionID: SessionID.make("session_b"), permission: "bash", @@ -860,13 +852,13 @@ test("reply - always keeps other session pending", async () => { await waitForPending(2) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test6a"), reply: "always", }) await expect(a).resolves.toBeUndefined() - expect((await PermissionNext.list()).map((x) => x.id)).toEqual([PermissionID.make("per_test6b")]) + expect((await Permission.list()).map((x) => x.id)).toEqual([PermissionID.make("per_test6b")]) await rejectAll() await b.catch(() => {}) @@ -879,7 +871,7 @@ test("reply - publishes replied event", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const ask = PermissionNext.ask({ + const ask = Permission.ask({ id: PermissionID.make("per_test7"), sessionID: SessionID.make("session_test"), permission: "bash", @@ -895,14 +887,14 @@ test("reply - publishes replied event", async () => { | { sessionID: SessionID requestID: PermissionID - reply: PermissionNext.Reply + reply: Permission.Reply } | undefined - const unsub = Bus.subscribe(PermissionNext.Event.Replied, (event) => { + const unsub = Bus.subscribe(Permission.Event.Replied, (event) => { seen = event.properties }) - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_test7"), reply: "once", }) @@ -918,16 +910,141 @@ test("reply - publishes replied event", async () => { }) }) +test("permission requests stay isolated by directory", async () => { + await using one = await tmpdir({ git: true }) + await using two = await tmpdir({ git: true }) + + const a = Instance.provide({ + directory: one.path, + fn: () => + Permission.ask({ + id: PermissionID.make("per_dir_a"), + sessionID: SessionID.make("session_dir_a"), + permission: "bash", + patterns: ["ls"], + metadata: {}, + always: [], + ruleset: [], + }), + }) + + const b = Instance.provide({ + directory: two.path, + fn: () => + Permission.ask({ + id: PermissionID.make("per_dir_b"), + sessionID: SessionID.make("session_dir_b"), + permission: "bash", + patterns: ["pwd"], + metadata: {}, + always: [], + ruleset: [], + }), + }) + + const onePending = await Instance.provide({ + directory: one.path, + fn: () => waitForPending(1), + }) + const twoPending = await Instance.provide({ + directory: two.path, + fn: () => waitForPending(1), + }) + + expect(onePending).toHaveLength(1) + expect(twoPending).toHaveLength(1) + expect(onePending[0].id).toBe(PermissionID.make("per_dir_a")) + expect(twoPending[0].id).toBe(PermissionID.make("per_dir_b")) + + await Instance.provide({ + directory: one.path, + fn: () => Permission.reply({ requestID: onePending[0].id, reply: "reject" }), + }) + await Instance.provide({ + directory: two.path, + fn: () => Permission.reply({ requestID: twoPending[0].id, reply: "reject" }), + }) + + await a.catch(() => {}) + await b.catch(() => {}) +}) + +test("pending permission rejects on instance dispose", async () => { + await using tmp = await tmpdir({ git: true }) + + const ask = Instance.provide({ + directory: tmp.path, + fn: () => + Permission.ask({ + id: PermissionID.make("per_dispose"), + sessionID: SessionID.make("session_dispose"), + permission: "bash", + patterns: ["ls"], + metadata: {}, + always: [], + ruleset: [], + }), + }) + const result = ask.then( + () => "resolved" as const, + (err) => err, + ) + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const pending = await waitForPending(1) + expect(pending).toHaveLength(1) + await Instance.dispose() + }, + }) + + expect(await result).toBeInstanceOf(Permission.RejectedError) +}) + +test("pending permission rejects on instance reload", async () => { + await using tmp = await tmpdir({ git: true }) + + const ask = Instance.provide({ + directory: tmp.path, + fn: () => + Permission.ask({ + id: PermissionID.make("per_reload"), + sessionID: SessionID.make("session_reload"), + permission: "bash", + patterns: ["ls"], + metadata: {}, + always: [], + ruleset: [], + }), + }) + const result = ask.then( + () => "resolved" as const, + (err) => err, + ) + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const pending = await waitForPending(1) + expect(pending).toHaveLength(1) + await Instance.reload({ directory: tmp.path }) + }, + }) + + expect(await result).toBeInstanceOf(Permission.RejectedError) +}) + test("reply - does nothing for unknown requestID", async () => { await using tmp = await tmpdir({ git: true }) await Instance.provide({ directory: tmp.path, fn: async () => { - await PermissionNext.reply({ + await Permission.reply({ requestID: PermissionID.make("per_unknown"), reply: "once", }) - expect(await PermissionNext.list()).toHaveLength(0) + expect(await Permission.list()).toHaveLength(0) }, }) }) @@ -938,7 +1055,7 @@ test("ask - checks all patterns and stops on first deny", async () => { directory: tmp.path, fn: async () => { await expect( - PermissionNext.ask({ + Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["echo hello", "rm -rf /"], @@ -949,7 +1066,7 @@ test("ask - checks all patterns and stops on first deny", async () => { { permission: "bash", pattern: "rm *", action: "deny" }, ], }), - ).rejects.toBeInstanceOf(PermissionNext.DeniedError) + ).rejects.toBeInstanceOf(Permission.DeniedError) }, }) }) @@ -959,7 +1076,7 @@ test("ask - allows all patterns when all match allow rules", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const result = await PermissionNext.ask({ + const result = await Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["echo hello", "ls -la", "pwd"], @@ -977,7 +1094,7 @@ test("ask - should deny even when an earlier pattern is ask", async () => { await Instance.provide({ directory: tmp.path, fn: async () => { - const err = await PermissionNext.ask({ + const err = await Permission.ask({ sessionID: SessionID.make("session_test"), permission: "bash", patterns: ["echo hello", "rm -rf /"], @@ -992,8 +1109,8 @@ test("ask - should deny even when an earlier pattern is ask", async () => { (err) => err, ) - expect(err).toBeInstanceOf(PermissionNext.DeniedError) - expect(await PermissionNext.list()).toHaveLength(0) + expect(err).toBeInstanceOf(Permission.DeniedError) + expect(await Permission.list()).toHaveLength(0) }, }) }) @@ -1004,8 +1121,8 @@ test("ask - abort should clear pending request", async () => { directory: tmp.path, fn: async () => { const ctl = new AbortController() - const ask = runtime.runPromise( - S.Service.use((svc) => + const ask = Permission.runPromise( + (svc) => svc.ask({ sessionID: SessionID.make("session_test"), permission: "bash", @@ -1014,7 +1131,6 @@ test("ask - abort should clear pending request", async () => { always: [], ruleset: [{ permission: "bash", pattern: "*", action: "ask" }], }), - ).pipe(Effect.provide(Instances.get(Instance.directory))), { signal: ctl.signal }, ) @@ -1023,7 +1139,7 @@ test("ask - abort should clear pending request", async () => { await ask.catch(() => {}) try { - expect(await PermissionNext.list()).toHaveLength(0) + expect(await Permission.list()).toHaveLength(0) } finally { await rejectAll() } diff --git a/packages/opencode/test/plugin/auth-override.test.ts b/packages/opencode/test/plugin/auth-override.test.ts index 0095ff38753..b967262254e 100644 --- a/packages/opencode/test/plugin/auth-override.test.ts +++ b/packages/opencode/test/plugin/auth-override.test.ts @@ -31,15 +31,26 @@ describe("plugin.auth-override", () => { }, }) - await Instance.provide({ + await using plain = await tmpdir() + + const methods = await Instance.provide({ directory: tmp.path, fn: async () => { - const methods = await ProviderAuth.methods() - const copilot = methods[ProviderID.make("github-copilot")] - expect(copilot).toBeDefined() - expect(copilot.length).toBe(1) - expect(copilot[0].label).toBe("Test Override Auth") + return ProviderAuth.methods() + }, + }) + + const plainMethods = await Instance.provide({ + directory: plain.path, + fn: async () => { + return ProviderAuth.methods() }, }) + + const copilot = methods[ProviderID.make("github-copilot")] + expect(copilot).toBeDefined() + expect(copilot.length).toBe(1) + expect(copilot[0].label).toBe("Test Override Auth") + expect(plainMethods[ProviderID.make("github-copilot")][0].label).not.toBe("Test Override Auth") }, 30000) // Increased timeout for plugin installation }) diff --git a/packages/opencode/test/project/vcs.test.ts b/packages/opencode/test/project/vcs.test.ts index 90f445ed782..11463b79502 100644 --- a/packages/opencode/test/project/vcs.test.ts +++ b/packages/opencode/test/project/vcs.test.ts @@ -25,8 +25,8 @@ function withVcs( directory, Layer.merge(FileWatcher.layer, Vcs.layer), async (rt) => { - await rt.runPromise(FileWatcher.Service.use(() => Effect.void)) - await rt.runPromise(Vcs.Service.use(() => Effect.void)) + await rt.runPromise(FileWatcher.Service.use((s) => s.init())) + await rt.runPromise(Vcs.Service.use((s) => s.init())) await Bun.sleep(500) await body(rt) }, @@ -67,7 +67,9 @@ function nextBranchUpdate(directory: string, timeout = 10_000) { // --------------------------------------------------------------------------- describeVcs("Vcs", () => { - afterEach(() => Instance.disposeAll()) + afterEach(async () => { + await Instance.disposeAll() + }) test("branch() returns current branch name", async () => { await using tmp = await tmpdir({ git: true }) diff --git a/packages/opencode/test/question/question.test.ts b/packages/opencode/test/question/question.test.ts index 45e0d3c318c..adfeda395a9 100644 --- a/packages/opencode/test/question/question.test.ts +++ b/packages/opencode/test/question/question.test.ts @@ -320,3 +320,134 @@ test("list - returns empty when no pending", async () => { }, }) }) + +test("questions stay isolated by directory", async () => { + await using one = await tmpdir({ git: true }) + await using two = await tmpdir({ git: true }) + + const p1 = Instance.provide({ + directory: one.path, + fn: () => + Question.ask({ + sessionID: SessionID.make("ses_one"), + questions: [ + { + question: "Question 1?", + header: "Q1", + options: [{ label: "A", description: "A" }], + }, + ], + }), + }) + + const p2 = Instance.provide({ + directory: two.path, + fn: () => + Question.ask({ + sessionID: SessionID.make("ses_two"), + questions: [ + { + question: "Question 2?", + header: "Q2", + options: [{ label: "B", description: "B" }], + }, + ], + }), + }) + + const onePending = await Instance.provide({ + directory: one.path, + fn: () => Question.list(), + }) + const twoPending = await Instance.provide({ + directory: two.path, + fn: () => Question.list(), + }) + + expect(onePending.length).toBe(1) + expect(twoPending.length).toBe(1) + expect(onePending[0].sessionID).toBe(SessionID.make("ses_one")) + expect(twoPending[0].sessionID).toBe(SessionID.make("ses_two")) + + await Instance.provide({ + directory: one.path, + fn: () => Question.reject(onePending[0].id), + }) + await Instance.provide({ + directory: two.path, + fn: () => Question.reject(twoPending[0].id), + }) + + await p1.catch(() => {}) + await p2.catch(() => {}) +}) + +test("pending question rejects on instance dispose", async () => { + await using tmp = await tmpdir({ git: true }) + + const ask = Instance.provide({ + directory: tmp.path, + fn: () => { + return Question.ask({ + sessionID: SessionID.make("ses_dispose"), + questions: [ + { + question: "Dispose me?", + header: "Dispose", + options: [{ label: "Yes", description: "Yes" }], + }, + ], + }) + }, + }) + const result = ask.then( + () => "resolved" as const, + (err) => err, + ) + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const pending = await Question.list() + expect(pending).toHaveLength(1) + await Instance.dispose() + }, + }) + + expect(await result).toBeInstanceOf(Question.RejectedError) +}) + +test("pending question rejects on instance reload", async () => { + await using tmp = await tmpdir({ git: true }) + + const ask = Instance.provide({ + directory: tmp.path, + fn: () => { + return Question.ask({ + sessionID: SessionID.make("ses_reload"), + questions: [ + { + question: "Reload me?", + header: "Reload", + options: [{ label: "Yes", description: "Yes" }], + }, + ], + }) + }, + }) + const result = ask.then( + () => "resolved" as const, + (err) => err, + ) + + await Instance.provide({ + directory: tmp.path, + fn: async () => { + const pending = await Question.list() + expect(pending).toHaveLength(1) + await Instance.reload({ directory: tmp.path }) + }, + }) + + expect(await result).toBeInstanceOf(Question.RejectedError) +}) diff --git a/packages/opencode/test/share/share-next.test.ts b/packages/opencode/test/share/share-next.test.ts index 5be5d02450d..fc8d511509f 100644 --- a/packages/opencode/test/share/share-next.test.ts +++ b/packages/opencode/test/share/share-next.test.ts @@ -7,7 +7,7 @@ test("ShareNext.request uses legacy share API without active org account", async const originalActive = Account.active const originalConfigGet = Config.get - Account.active = mock(() => undefined) + Account.active = mock(async () => undefined) Config.get = mock(async () => ({ enterprise: { url: "https://legacy-share.example.com" } })) try { @@ -29,7 +29,7 @@ test("ShareNext.request uses org share API with auth headers when account is act const originalActive = Account.active const originalToken = Account.token - Account.active = mock(() => ({ + Account.active = mock(async () => ({ id: AccountID.make("account-1"), email: "user@example.com", url: "https://control.example.com", @@ -59,7 +59,7 @@ test("ShareNext.request fails when org account has no token", async () => { const originalActive = Account.active const originalToken = Account.token - Account.active = mock(() => ({ + Account.active = mock(async () => ({ id: AccountID.make("account-1"), email: "user@example.com", url: "https://control.example.com", diff --git a/packages/opencode/test/skill/skill.test.ts b/packages/opencode/test/skill/skill.test.ts index 2264723a090..12e16f86a1a 100644 --- a/packages/opencode/test/skill/skill.test.ts +++ b/packages/opencode/test/skill/skill.test.ts @@ -1,10 +1,14 @@ -import { test, expect } from "bun:test" +import { afterEach, test, expect } from "bun:test" import { Skill } from "../../src/skill" import { Instance } from "../../src/project/instance" import { tmpdir } from "../fixture/fixture" import path from "path" import fs from "fs/promises" +afterEach(async () => { + await Instance.disposeAll() +}) + async function createGlobalSkill(homeDir: string) { const skillDir = path.join(homeDir, ".claude", "skills", "global-test-skill") await fs.mkdir(skillDir, { recursive: true }) diff --git a/packages/opencode/test/snapshot/snapshot.test.ts b/packages/opencode/test/snapshot/snapshot.test.ts index 20305028764..bf54feb4723 100644 --- a/packages/opencode/test/snapshot/snapshot.test.ts +++ b/packages/opencode/test/snapshot/snapshot.test.ts @@ -1,4 +1,4 @@ -import { test, expect } from "bun:test" +import { afterEach, test, expect } from "bun:test" import { $ } from "bun" import fs from "fs/promises" import path from "path" @@ -12,6 +12,10 @@ import { tmpdir } from "../fixture/fixture" // This helper does the same for expected values so assertions match cross-platform. const fwd = (...parts: string[]) => path.join(...parts).replaceAll("\\", "/") +afterEach(async () => { + await Instance.disposeAll() +}) + async function bootstrap() { return tmpdir({ git: true, diff --git a/packages/opencode/test/tool/bash.test.ts b/packages/opencode/test/tool/bash.test.ts index a5c7cec917f..4d680d494f3 100644 --- a/packages/opencode/test/tool/bash.test.ts +++ b/packages/opencode/test/tool/bash.test.ts @@ -5,7 +5,7 @@ import { BashTool } from "../../src/tool/bash" import { Instance } from "../../src/project/instance" import { Filesystem } from "../../src/util/filesystem" import { tmpdir } from "../fixture/fixture" -import type { PermissionNext } from "../../src/permission" +import type { Permission } from "../../src/permission" import { Truncate } from "../../src/tool/truncate" import { SessionID, MessageID } from "../../src/session/schema" @@ -49,10 +49,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -76,10 +76,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -104,10 +104,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -130,10 +130,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -163,10 +163,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -193,10 +193,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -223,10 +223,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -250,10 +250,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -276,10 +276,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -297,10 +297,10 @@ describe("tool.bash permissions", () => { directory: tmp.path, fn: async () => { const bash = await BashTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } diff --git a/packages/opencode/test/tool/edit.test.ts b/packages/opencode/test/tool/edit.test.ts index 7b6784cf49a..f6b1ee5c926 100644 --- a/packages/opencode/test/tool/edit.test.ts +++ b/packages/opencode/test/tool/edit.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect } from "bun:test" +import { afterEach, describe, test, expect } from "bun:test" import path from "path" import fs from "fs/promises" import { EditTool } from "../../src/tool/edit" @@ -18,6 +18,10 @@ const ctx = { ask: async () => {}, } +afterEach(async () => { + await Instance.disposeAll() +}) + async function touch(file: string, time: number) { const date = new Date(time) await fs.utimes(file, date, date) diff --git a/packages/opencode/test/tool/external-directory.test.ts b/packages/opencode/test/tool/external-directory.test.ts index 229901a7228..0188cbada04 100644 --- a/packages/opencode/test/tool/external-directory.test.ts +++ b/packages/opencode/test/tool/external-directory.test.ts @@ -3,7 +3,7 @@ import path from "path" import type { Tool } from "../../src/tool/tool" import { Instance } from "../../src/project/instance" import { assertExternalDirectory } from "../../src/tool/external-directory" -import type { PermissionNext } from "../../src/permission" +import type { Permission } from "../../src/permission" import { SessionID, MessageID } from "../../src/session/schema" const baseCtx: Omit = { @@ -18,7 +18,7 @@ const baseCtx: Omit = { describe("tool.assertExternalDirectory", () => { test("no-ops for empty target", async () => { - const requests: Array> = [] + const requests: Array> = [] const ctx: Tool.Context = { ...baseCtx, ask: async (req) => { @@ -37,7 +37,7 @@ describe("tool.assertExternalDirectory", () => { }) test("no-ops for paths inside Instance.directory", async () => { - const requests: Array> = [] + const requests: Array> = [] const ctx: Tool.Context = { ...baseCtx, ask: async (req) => { @@ -56,7 +56,7 @@ describe("tool.assertExternalDirectory", () => { }) test("asks with a single canonical glob", async () => { - const requests: Array> = [] + const requests: Array> = [] const ctx: Tool.Context = { ...baseCtx, ask: async (req) => { @@ -82,7 +82,7 @@ describe("tool.assertExternalDirectory", () => { }) test("uses target directory when kind=directory", async () => { - const requests: Array> = [] + const requests: Array> = [] const ctx: Tool.Context = { ...baseCtx, ask: async (req) => { @@ -108,7 +108,7 @@ describe("tool.assertExternalDirectory", () => { }) test("skips prompting when bypass=true", async () => { - const requests: Array> = [] + const requests: Array> = [] const ctx: Tool.Context = { ...baseCtx, ask: async (req) => { diff --git a/packages/opencode/test/tool/read.test.ts b/packages/opencode/test/tool/read.test.ts index cfeb597fcec..06a7f9a7069 100644 --- a/packages/opencode/test/tool/read.test.ts +++ b/packages/opencode/test/tool/read.test.ts @@ -1,15 +1,19 @@ -import { describe, expect, test } from "bun:test" +import { afterEach, describe, expect, test } from "bun:test" import path from "path" import { ReadTool } from "../../src/tool/read" import { Instance } from "../../src/project/instance" import { Filesystem } from "../../src/util/filesystem" import { tmpdir } from "../fixture/fixture" -import { PermissionNext } from "../../src/permission" +import { Permission } from "../../src/permission" import { Agent } from "../../src/agent/agent" import { SessionID, MessageID } from "../../src/session/schema" const FIXTURES_DIR = path.join(import.meta.dir, "fixtures") +afterEach(async () => { + await Instance.disposeAll() +}) + const ctx = { sessionID: SessionID.make("ses_test"), messageID: MessageID.make(""), @@ -65,10 +69,10 @@ describe("tool.read external_directory permission", () => { directory: tmp.path, fn: async () => { const read = await ReadTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -91,10 +95,10 @@ describe("tool.read external_directory permission", () => { directory: tmp.path, fn: async () => { const read = await ReadTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -112,10 +116,10 @@ describe("tool.read external_directory permission", () => { directory: tmp.path, fn: async () => { const read = await ReadTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -138,10 +142,10 @@ describe("tool.read external_directory permission", () => { directory: tmp.path, fn: async () => { const read = await ReadTool.init() - const requests: Array> = [] + const requests: Array> = [] const testCtx = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { requests.push(req) }, } @@ -176,14 +180,14 @@ describe("tool.read env file permissions", () => { let askedForEnv = false const ctxWithPermissions = { ...ctx, - ask: async (req: Omit) => { + ask: async (req: Omit) => { for (const pattern of req.patterns) { - const rule = PermissionNext.evaluate(req.permission, pattern, agent.permission) + const rule = Permission.evaluate(req.permission, pattern, agent.permission) if (rule.action === "ask" && req.permission === "read") { askedForEnv = true } if (rule.action === "deny") { - throw new PermissionNext.DeniedError({ ruleset: agent.permission }) + throw new Permission.DeniedError({ ruleset: agent.permission }) } } }, diff --git a/packages/opencode/test/tool/registry.test.ts b/packages/opencode/test/tool/registry.test.ts index 706a9e12caf..c9951ef198c 100644 --- a/packages/opencode/test/tool/registry.test.ts +++ b/packages/opencode/test/tool/registry.test.ts @@ -1,10 +1,14 @@ -import { describe, expect, test } from "bun:test" +import { afterEach, describe, expect, test } from "bun:test" import path from "path" import fs from "fs/promises" import { tmpdir } from "../fixture/fixture" import { Instance } from "../../src/project/instance" import { ToolRegistry } from "../../src/tool/registry" +afterEach(async () => { + await Instance.disposeAll() +}) + describe("tool.registry", () => { test("loads tools from .opencode/tool (singular)", async () => { await using tmp = await tmpdir({ diff --git a/packages/opencode/test/tool/skill.test.ts b/packages/opencode/test/tool/skill.test.ts index f622341d333..ffae223f98a 100644 --- a/packages/opencode/test/tool/skill.test.ts +++ b/packages/opencode/test/tool/skill.test.ts @@ -1,7 +1,7 @@ -import { describe, expect, test } from "bun:test" +import { afterEach, describe, expect, test } from "bun:test" import path from "path" import { pathToFileURL } from "url" -import type { PermissionNext } from "../../src/permission" +import type { Permission } from "../../src/permission" import type { Tool } from "../../src/tool/tool" import { Instance } from "../../src/project/instance" import { SkillTool } from "../../src/tool/skill" @@ -18,6 +18,10 @@ const baseCtx: Omit = { metadata: () => {}, } +afterEach(async () => { + await Instance.disposeAll() +}) + describe("tool.skill", () => { test("description lists skill location URL", async () => { await using tmp = await tmpdir({ @@ -133,7 +137,7 @@ Use this skill. directory: tmp.path, fn: async () => { const tool = await SkillTool.init() - const requests: Array> = [] + const requests: Array> = [] const ctx: Tool.Context = { ...baseCtx, ask: async (req) => { diff --git a/packages/opencode/test/tool/task.test.ts b/packages/opencode/test/tool/task.test.ts index df319d8de1e..aae48a30ab3 100644 --- a/packages/opencode/test/tool/task.test.ts +++ b/packages/opencode/test/tool/task.test.ts @@ -1,9 +1,13 @@ -import { describe, expect, test } from "bun:test" +import { afterEach, describe, expect, test } from "bun:test" import { Agent } from "../../src/agent/agent" import { Instance } from "../../src/project/instance" import { TaskTool } from "../../src/tool/task" import { tmpdir } from "../fixture/fixture" +afterEach(async () => { + await Instance.disposeAll() +}) + describe("tool.task", () => { test("description sorts subagents by name and is stable across calls", async () => { await using tmp = await tmpdir({ diff --git a/packages/opencode/test/tool/truncation.test.ts b/packages/opencode/test/tool/truncation.test.ts index 032f0bfee25..dba083c5123 100644 --- a/packages/opencode/test/tool/truncation.test.ts +++ b/packages/opencode/test/tool/truncation.test.ts @@ -1,8 +1,7 @@ import { describe, test, expect } from "bun:test" import { NodeFileSystem } from "@effect/platform-node" import { Effect, FileSystem, Layer } from "effect" -import { Truncate } from "../../src/tool/truncate" -import { Truncate as TruncateSvc } from "../../src/tool/truncate-effect" +import { Truncate, Truncate as TruncateSvc } from "../../src/tool/truncate" import { Identifier } from "../../src/id/id" import { Process } from "../../src/util/process" import { Filesystem } from "../../src/util/filesystem" @@ -129,7 +128,7 @@ describe("Truncate", () => { }) test("loads truncate effect in a fresh process", async () => { - const out = await Process.run([process.execPath, "run", path.join(ROOT, "src", "tool", "truncate-effect.ts")], { + const out = await Process.run([process.execPath, "run", path.join(ROOT, "src", "tool", "truncate.ts")], { cwd: ROOT, }) diff --git a/packages/opencode/test/tool/write.test.ts b/packages/opencode/test/tool/write.test.ts index af002a39100..97939c10519 100644 --- a/packages/opencode/test/tool/write.test.ts +++ b/packages/opencode/test/tool/write.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect } from "bun:test" +import { afterEach, describe, test, expect } from "bun:test" import path from "path" import fs from "fs/promises" import { WriteTool } from "../../src/tool/write" @@ -17,6 +17,10 @@ const ctx = { ask: async () => {}, } +afterEach(async () => { + await Instance.disposeAll() +}) + describe("tool.write", () => { describe("new file creation", () => { test("writes content to new file", async () => { From 2e0d5d230893dbddcefb35a02f53ff2e7a58e5d0 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sat, 21 Mar 2026 04:52:23 +0000 Subject: [PATCH 07/32] chore: generate --- packages/opencode/src/provider/auth.ts | 23 +- packages/opencode/src/skill/index.ts | 4 +- packages/opencode/test/format/format.test.ts | 4 +- packages/sdk/js/src/v2/gen/sdk.gen.ts | 8 +- packages/sdk/js/src/v2/gen/types.gen.ts | 264 +++--- packages/sdk/openapi.json | 859 +++++++++---------- 6 files changed, 581 insertions(+), 581 deletions(-) diff --git a/packages/opencode/src/provider/auth.ts b/packages/opencode/src/provider/auth.ts index 2180d30632c..99184c48a57 100644 --- a/packages/opencode/src/provider/auth.ts +++ b/packages/opencode/src/provider/auth.ts @@ -118,18 +118,19 @@ export namespace ProviderAuth { const state = yield* InstanceState.make( Effect.fn("ProviderAuth.state")(() => Effect.promise(async () => { - const plugins = await Plugin.list() - return { - hooks: Record.fromEntries( - Arr.filterMap(plugins, (x) => - x.auth?.provider !== undefined - ? Result.succeed([ProviderID.make(x.auth.provider), x.auth] as const) - : Result.failVoid, + const plugins = await Plugin.list() + return { + hooks: Record.fromEntries( + Arr.filterMap(plugins, (x) => + x.auth?.provider !== undefined + ? Result.succeed([ProviderID.make(x.auth.provider), x.auth] as const) + : Result.failVoid, + ), ), - ), - pending: new Map(), - } - })), + pending: new Map(), + } + }), + ), ) const methods = Effect.fn("ProviderAuth.methods")(function* () { diff --git a/packages/opencode/src/skill/index.ts b/packages/opencode/src/skill/index.ts index b770ab83cb6..43a22219edc 100644 --- a/packages/opencode/src/skill/index.ts +++ b/packages/opencode/src/skill/index.ts @@ -184,7 +184,9 @@ export namespace Skill { Service, Effect.gen(function* () { const discovery = yield* Discovery.Service - const state = yield* InstanceState.make(Effect.fn("Skill.state")((ctx) => Effect.sync(() => create(discovery, ctx.directory, ctx.worktree)))) + const state = yield* InstanceState.make( + Effect.fn("Skill.state")((ctx) => Effect.sync(() => create(discovery, ctx.directory, ctx.worktree))), + ) const ensure = Effect.fn("Skill.ensure")(function* () { const cache = yield* InstanceState.get(state) diff --git a/packages/opencode/test/format/format.test.ts b/packages/opencode/test/format/format.test.ts index 1992dede621..68fe71e03f9 100644 --- a/packages/opencode/test/format/format.test.ts +++ b/packages/opencode/test/format/format.test.ts @@ -148,11 +148,11 @@ describe("Format", () => { config: { formatter: { first: { - command: ["sh", "-c", "sleep 0.05; v=$(cat \"$1\"); printf '%sA' \"$v\" > \"$1\"", "sh", "$FILE"], + command: ["sh", "-c", 'sleep 0.05; v=$(cat "$1"); printf \'%sA\' "$v" > "$1"', "sh", "$FILE"], extensions: [".seq"], }, second: { - command: ["sh", "-c", "v=$(cat \"$1\"); printf '%sB' \"$v\" > \"$1\"", "sh", "$FILE"], + command: ["sh", "-c", 'v=$(cat "$1"); printf \'%sB\' "$v" > "$1"', "sh", "$FILE"], extensions: [".seq"], }, }, diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts index b6821322e2f..df46c66f20f 100644 --- a/packages/sdk/js/src/v2/gen/sdk.gen.ts +++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts @@ -4,11 +4,11 @@ import { client } from "./client.gen.js" import { buildClientParams, type Client, type Options as Options2, type TDataShape } from "./client/index.js" import type { AgentPartInput, + ApiAuth, AppAgentsResponses, AppLogErrors, AppLogResponses, AppSkillsResponses, - Auth as Auth3, AuthRemoveErrors, AuthRemoveResponses, AuthSetErrors, @@ -63,6 +63,7 @@ import type { McpLocalConfig, McpRemoteConfig, McpStatusResponses, + OAuth, OutputFormat, Part as Part2, PartDeleteErrors, @@ -173,6 +174,7 @@ import type { TuiShowToastResponses, TuiSubmitPromptResponses, VcsGetResponses, + WellKnownAuth, WorktreeCreateErrors, WorktreeCreateInput, WorktreeCreateResponses, @@ -337,7 +339,7 @@ export class Auth extends HeyApiClient { public set( parameters: { providerID: string - auth?: Auth3 + body?: OAuth | ApiAuth | WellKnownAuth }, options?: Options, ) { @@ -347,7 +349,7 @@ export class Auth extends HeyApiClient { { args: [ { in: "path", key: "providerID" }, - { key: "auth", map: "body" }, + { key: "body", map: "body" }, ], }, ], diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index ec797f2ba81..59386932607 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -47,13 +47,6 @@ export type EventProjectUpdated = { properties: Project } -export type EventFileEdited = { - type: "file.edited" - properties: { - file: string - } -} - export type EventServerInstanceDisposed = { type: "server.instance.disposed" properties: { @@ -61,121 +54,6 @@ export type EventServerInstanceDisposed = { } } -export type EventFileWatcherUpdated = { - type: "file.watcher.updated" - properties: { - file: string - event: "add" | "change" | "unlink" - } -} - -export type PermissionRequest = { - id: string - sessionID: string - permission: string - patterns: Array - metadata: { - [key: string]: unknown - } - always: Array - tool?: { - messageID: string - callID: string - } -} - -export type EventPermissionAsked = { - type: "permission.asked" - properties: PermissionRequest -} - -export type EventPermissionReplied = { - type: "permission.replied" - properties: { - sessionID: string - requestID: string - reply: "once" | "always" | "reject" - } -} - -export type EventVcsBranchUpdated = { - type: "vcs.branch.updated" - properties: { - branch?: string - } -} - -export type QuestionOption = { - /** - * Display text (1-5 words, concise) - */ - label: string - /** - * Explanation of choice - */ - description: string -} - -export type QuestionInfo = { - /** - * Complete question - */ - question: string - /** - * Very short label (max 30 chars) - */ - header: string - /** - * Available choices - */ - options: Array - /** - * Allow selecting multiple choices - */ - multiple?: boolean - /** - * Allow typing a custom answer (default: true) - */ - custom?: boolean -} - -export type QuestionRequest = { - id: string - sessionID: string - /** - * Questions to ask - */ - questions: Array - tool?: { - messageID: string - callID: string - } -} - -export type EventQuestionAsked = { - type: "question.asked" - properties: QuestionRequest -} - -export type QuestionAnswer = Array - -export type EventQuestionReplied = { - type: "question.replied" - properties: { - sessionID: string - requestID: string - answers: Array - } -} - -export type EventQuestionRejected = { - type: "question.rejected" - properties: { - sessionID: string - requestID: string - } -} - export type EventServerConnected = { type: "server.connected" properties: { @@ -205,6 +83,13 @@ export type EventLspUpdated = { } } +export type EventFileEdited = { + type: "file.edited" + properties: { + file: string + } +} + export type OutputFormatText = { type: "text" } @@ -664,6 +549,35 @@ export type EventMessagePartRemoved = { } } +export type PermissionRequest = { + id: string + sessionID: string + permission: string + patterns: Array + metadata: { + [key: string]: unknown + } + always: Array + tool?: { + messageID: string + callID: string + } +} + +export type EventPermissionAsked = { + type: "permission.asked" + properties: PermissionRequest +} + +export type EventPermissionReplied = { + type: "permission.replied" + properties: { + sessionID: string + requestID: string + reply: "once" | "always" | "reject" + } +} + export type SessionStatus = | { type: "idle" @@ -693,6 +607,77 @@ export type EventSessionIdle = { } } +export type QuestionOption = { + /** + * Display text (1-5 words, concise) + */ + label: string + /** + * Explanation of choice + */ + description: string +} + +export type QuestionInfo = { + /** + * Complete question + */ + question: string + /** + * Very short label (max 30 chars) + */ + header: string + /** + * Available choices + */ + options: Array + /** + * Allow selecting multiple choices + */ + multiple?: boolean + /** + * Allow typing a custom answer (default: true) + */ + custom?: boolean +} + +export type QuestionRequest = { + id: string + sessionID: string + /** + * Questions to ask + */ + questions: Array + tool?: { + messageID: string + callID: string + } +} + +export type EventQuestionAsked = { + type: "question.asked" + properties: QuestionRequest +} + +export type QuestionAnswer = Array + +export type EventQuestionReplied = { + type: "question.replied" + properties: { + sessionID: string + requestID: string + answers: Array + } +} + +export type EventQuestionRejected = { + type: "question.rejected" + properties: { + sessionID: string + requestID: string + } +} + export type EventSessionCompacted = { type: "session.compacted" properties: { @@ -700,6 +685,14 @@ export type EventSessionCompacted = { } } +export type EventFileWatcherUpdated = { + type: "file.watcher.updated" + properties: { + file: string + event: "add" | "change" | "unlink" + } +} + export type Todo = { /** * Brief description of the task @@ -889,6 +882,13 @@ export type EventSessionError = { } } +export type EventVcsBranchUpdated = { + type: "vcs.branch.updated" + properties: { + branch?: string + } +} + export type EventWorkspaceReady = { type: "workspace.ready" properties: { @@ -961,27 +961,26 @@ export type Event = | EventInstallationUpdated | EventInstallationUpdateAvailable | EventProjectUpdated - | EventFileEdited | EventServerInstanceDisposed - | EventFileWatcherUpdated - | EventPermissionAsked - | EventPermissionReplied - | EventVcsBranchUpdated - | EventQuestionAsked - | EventQuestionReplied - | EventQuestionRejected | EventServerConnected | EventGlobalDisposed | EventLspClientDiagnostics | EventLspUpdated + | EventFileEdited | EventMessageUpdated | EventMessageRemoved | EventMessagePartUpdated | EventMessagePartDelta | EventMessagePartRemoved + | EventPermissionAsked + | EventPermissionReplied | EventSessionStatus | EventSessionIdle + | EventQuestionAsked + | EventQuestionReplied + | EventQuestionRejected | EventSessionCompacted + | EventFileWatcherUpdated | EventTodoUpdated | EventTuiPromptAppend | EventTuiCommandExecute @@ -995,6 +994,7 @@ export type Event = | EventSessionDeleted | EventSessionDiff | EventSessionError + | EventVcsBranchUpdated | EventWorkspaceReady | EventWorkspaceFailed | EventPtyCreated @@ -1534,8 +1534,6 @@ export type WellKnownAuth = { token: string } -export type Auth = OAuth | ApiAuth | WellKnownAuth - export type NotFoundError = { name: "NotFoundError" data: { @@ -2058,7 +2056,7 @@ export type AuthRemoveResponses = { export type AuthRemoveResponse = AuthRemoveResponses[keyof AuthRemoveResponses] export type AuthSetData = { - body?: Auth + body?: OAuth | ApiAuth | WellKnownAuth path: { providerID: string } diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index fa894045e1c..76eed0025bd 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -199,7 +199,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Auth" + "anyOf": [ + { + "$ref": "#/components/schemas/OAuth" + }, + { + "$ref": "#/components/schemas/ApiAuth" + }, + { + "$ref": "#/components/schemas/WellKnownAuth" + } + ] } } } @@ -7053,513 +7063,220 @@ }, "required": ["type", "properties"] }, - "Event.file.edited": { + "Event.server.instance.disposed": { "type": "object", "properties": { "type": { "type": "string", - "const": "file.edited" + "const": "server.instance.disposed" }, "properties": { "type": "object", "properties": { - "file": { + "directory": { "type": "string" } }, - "required": ["file"] + "required": ["directory"] } }, "required": ["type", "properties"] }, - "Event.server.instance.disposed": { + "Event.server.connected": { "type": "object", "properties": { "type": { "type": "string", - "const": "server.instance.disposed" + "const": "server.connected" }, "properties": { "type": "object", - "properties": { - "directory": { - "type": "string" - } - }, - "required": ["directory"] + "properties": {} } }, "required": ["type", "properties"] }, - "Event.file.watcher.updated": { + "Event.global.disposed": { "type": "object", "properties": { "type": { "type": "string", - "const": "file.watcher.updated" + "const": "global.disposed" }, "properties": { "type": "object", - "properties": { - "file": { - "type": "string" - }, - "event": { - "anyOf": [ - { - "type": "string", - "const": "add" - }, - { - "type": "string", - "const": "change" - }, - { - "type": "string", - "const": "unlink" - } - ] - } - }, - "required": ["file", "event"] + "properties": {} } }, "required": ["type", "properties"] }, - "PermissionRequest": { + "Event.lsp.client.diagnostics": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^per.*" - }, - "sessionID": { + "type": { "type": "string", - "pattern": "^ses.*" - }, - "permission": { - "type": "string" - }, - "patterns": { - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "always": { - "type": "array", - "items": { - "type": "string" - } + "const": "lsp.client.diagnostics" }, - "tool": { + "properties": { "type": "object", "properties": { - "messageID": { - "type": "string", - "pattern": "^msg.*" + "serverID": { + "type": "string" }, - "callID": { + "path": { "type": "string" } }, - "required": ["messageID", "callID"] + "required": ["serverID", "path"] } }, - "required": ["id", "sessionID", "permission", "patterns", "metadata", "always"] + "required": ["type", "properties"] }, - "Event.permission.asked": { + "Event.lsp.updated": { "type": "object", "properties": { "type": { "type": "string", - "const": "permission.asked" + "const": "lsp.updated" }, "properties": { - "$ref": "#/components/schemas/PermissionRequest" + "type": "object", + "properties": {} } }, "required": ["type", "properties"] }, - "Event.permission.replied": { + "Event.file.edited": { "type": "object", "properties": { "type": { "type": "string", - "const": "permission.replied" + "const": "file.edited" }, "properties": { "type": "object", "properties": { - "sessionID": { - "type": "string", - "pattern": "^ses.*" - }, - "requestID": { - "type": "string", - "pattern": "^per.*" - }, - "reply": { - "type": "string", - "enum": ["once", "always", "reject"] + "file": { + "type": "string" } }, - "required": ["sessionID", "requestID", "reply"] + "required": ["file"] } }, "required": ["type", "properties"] }, - "Event.vcs.branch.updated": { + "OutputFormatText": { "type": "object", "properties": { "type": { "type": "string", - "const": "vcs.branch.updated" - }, - "properties": { - "type": "object", - "properties": { - "branch": { - "type": "string" - } - } + "const": "text" } }, - "required": ["type", "properties"] + "required": ["type"] }, - "QuestionOption": { + "JSONSchema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "OutputFormatJsonSchema": { "type": "object", "properties": { - "label": { - "description": "Display text (1-5 words, concise)", - "type": "string" + "type": { + "type": "string", + "const": "json_schema" }, - "description": { - "description": "Explanation of choice", - "type": "string" + "schema": { + "$ref": "#/components/schemas/JSONSchema" + }, + "retryCount": { + "default": 2, + "type": "integer", + "minimum": 0, + "maximum": 9007199254740991 } }, - "required": ["label", "description"] + "required": ["type", "schema"] }, - "QuestionInfo": { + "OutputFormat": { + "anyOf": [ + { + "$ref": "#/components/schemas/OutputFormatText" + }, + { + "$ref": "#/components/schemas/OutputFormatJsonSchema" + } + ] + }, + "FileDiff": { "type": "object", "properties": { - "question": { - "description": "Complete question", + "file": { "type": "string" }, - "header": { - "description": "Very short label (max 30 chars)", + "before": { "type": "string" }, - "options": { - "description": "Available choices", - "type": "array", - "items": { - "$ref": "#/components/schemas/QuestionOption" - } + "after": { + "type": "string" }, - "multiple": { - "description": "Allow selecting multiple choices", - "type": "boolean" + "additions": { + "type": "number" }, - "custom": { - "description": "Allow typing a custom answer (default: true)", - "type": "boolean" + "deletions": { + "type": "number" + }, + "status": { + "type": "string", + "enum": ["added", "deleted", "modified"] } }, - "required": ["question", "header", "options"] + "required": ["file", "before", "after", "additions", "deletions"] }, - "QuestionRequest": { + "UserMessage": { "type": "object", "properties": { "id": { "type": "string", - "pattern": "^que.*" + "pattern": "^msg.*" }, "sessionID": { "type": "string", "pattern": "^ses.*" }, - "questions": { - "description": "Questions to ask", - "type": "array", - "items": { - "$ref": "#/components/schemas/QuestionInfo" - } + "role": { + "type": "string", + "const": "user" }, - "tool": { + "time": { "type": "object", "properties": { - "messageID": { - "type": "string", - "pattern": "^msg.*" + "created": { + "type": "number" + } + }, + "required": ["created"] + }, + "format": { + "$ref": "#/components/schemas/OutputFormat" + }, + "summary": { + "type": "object", + "properties": { + "title": { + "type": "string" }, - "callID": { + "body": { "type": "string" - } - }, - "required": ["messageID", "callID"] - } - }, - "required": ["id", "sessionID", "questions"] - }, - "Event.question.asked": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "question.asked" - }, - "properties": { - "$ref": "#/components/schemas/QuestionRequest" - } - }, - "required": ["type", "properties"] - }, - "QuestionAnswer": { - "type": "array", - "items": { - "type": "string" - } - }, - "Event.question.replied": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "question.replied" - }, - "properties": { - "type": "object", - "properties": { - "sessionID": { - "type": "string", - "pattern": "^ses.*" - }, - "requestID": { - "type": "string", - "pattern": "^que.*" - }, - "answers": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QuestionAnswer" - } - } - }, - "required": ["sessionID", "requestID", "answers"] - } - }, - "required": ["type", "properties"] - }, - "Event.question.rejected": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "question.rejected" - }, - "properties": { - "type": "object", - "properties": { - "sessionID": { - "type": "string", - "pattern": "^ses.*" - }, - "requestID": { - "type": "string", - "pattern": "^que.*" - } - }, - "required": ["sessionID", "requestID"] - } - }, - "required": ["type", "properties"] - }, - "Event.server.connected": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "server.connected" - }, - "properties": { - "type": "object", - "properties": {} - } - }, - "required": ["type", "properties"] - }, - "Event.global.disposed": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "global.disposed" - }, - "properties": { - "type": "object", - "properties": {} - } - }, - "required": ["type", "properties"] - }, - "Event.lsp.client.diagnostics": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "lsp.client.diagnostics" - }, - "properties": { - "type": "object", - "properties": { - "serverID": { - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": ["serverID", "path"] - } - }, - "required": ["type", "properties"] - }, - "Event.lsp.updated": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "lsp.updated" - }, - "properties": { - "type": "object", - "properties": {} - } - }, - "required": ["type", "properties"] - }, - "OutputFormatText": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "text" - } - }, - "required": ["type"] - }, - "JSONSchema": { - "type": "object", - "propertyNames": { - "type": "string" - }, - "additionalProperties": {} - }, - "OutputFormatJsonSchema": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "json_schema" - }, - "schema": { - "$ref": "#/components/schemas/JSONSchema" - }, - "retryCount": { - "default": 2, - "type": "integer", - "minimum": 0, - "maximum": 9007199254740991 - } - }, - "required": ["type", "schema"] - }, - "OutputFormat": { - "anyOf": [ - { - "$ref": "#/components/schemas/OutputFormatText" - }, - { - "$ref": "#/components/schemas/OutputFormatJsonSchema" - } - ] - }, - "FileDiff": { - "type": "object", - "properties": { - "file": { - "type": "string" - }, - "before": { - "type": "string" - }, - "after": { - "type": "string" - }, - "additions": { - "type": "number" - }, - "deletions": { - "type": "number" - }, - "status": { - "type": "string", - "enum": ["added", "deleted", "modified"] - } - }, - "required": ["file", "before", "after", "additions", "deletions"] - }, - "UserMessage": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^msg.*" - }, - "sessionID": { - "type": "string", - "pattern": "^ses.*" - }, - "role": { - "type": "string", - "const": "user" - }, - "time": { - "type": "object", - "properties": { - "created": { - "type": "number" - } - }, - "required": ["created"] - }, - "format": { - "$ref": "#/components/schemas/OutputFormat" - }, - "summary": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "body": { - "type": "string" - }, - "diffs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/FileDiff" - } + }, + "diffs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileDiff" + } } }, "required": ["diffs"] @@ -8823,6 +8540,96 @@ }, "required": ["type", "properties"] }, + "PermissionRequest": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^per.*" + }, + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "permission": { + "type": "string" + }, + "patterns": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "always": { + "type": "array", + "items": { + "type": "string" + } + }, + "tool": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + }, + "callID": { + "type": "string" + } + }, + "required": ["messageID", "callID"] + } + }, + "required": ["id", "sessionID", "permission", "patterns", "metadata", "always"] + }, + "Event.permission.asked": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "permission.asked" + }, + "properties": { + "$ref": "#/components/schemas/PermissionRequest" + } + }, + "required": ["type", "properties"] + }, + "Event.permission.replied": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "permission.replied" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "requestID": { + "type": "string", + "pattern": "^per.*" + }, + "reply": { + "type": "string", + "enum": ["once", "always", "reject"] + } + }, + "required": ["sessionID", "requestID", "reply"] + } + }, + "required": ["type", "properties"] + }, "SessionStatus": { "anyOf": [ { @@ -8909,6 +8716,156 @@ }, "required": ["type", "properties"] }, + "QuestionOption": { + "type": "object", + "properties": { + "label": { + "description": "Display text (1-5 words, concise)", + "type": "string" + }, + "description": { + "description": "Explanation of choice", + "type": "string" + } + }, + "required": ["label", "description"] + }, + "QuestionInfo": { + "type": "object", + "properties": { + "question": { + "description": "Complete question", + "type": "string" + }, + "header": { + "description": "Very short label (max 30 chars)", + "type": "string" + }, + "options": { + "description": "Available choices", + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionOption" + } + }, + "multiple": { + "description": "Allow selecting multiple choices", + "type": "boolean" + }, + "custom": { + "description": "Allow typing a custom answer (default: true)", + "type": "boolean" + } + }, + "required": ["question", "header", "options"] + }, + "QuestionRequest": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^que.*" + }, + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "questions": { + "description": "Questions to ask", + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionInfo" + } + }, + "tool": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + }, + "callID": { + "type": "string" + } + }, + "required": ["messageID", "callID"] + } + }, + "required": ["id", "sessionID", "questions"] + }, + "Event.question.asked": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "question.asked" + }, + "properties": { + "$ref": "#/components/schemas/QuestionRequest" + } + }, + "required": ["type", "properties"] + }, + "QuestionAnswer": { + "type": "array", + "items": { + "type": "string" + } + }, + "Event.question.replied": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "question.replied" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "requestID": { + "type": "string", + "pattern": "^que.*" + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionAnswer" + } + } + }, + "required": ["sessionID", "requestID", "answers"] + } + }, + "required": ["type", "properties"] + }, + "Event.question.rejected": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "question.rejected" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "requestID": { + "type": "string", + "pattern": "^que.*" + } + }, + "required": ["sessionID", "requestID"] + } + }, + "required": ["type", "properties"] + }, "Event.session.compacted": { "type": "object", "properties": { @@ -8929,6 +8886,41 @@ }, "required": ["type", "properties"] }, + "Event.file.watcher.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "file.watcher.updated" + }, + "properties": { + "type": "object", + "properties": { + "file": { + "type": "string" + }, + "event": { + "anyOf": [ + { + "type": "string", + "const": "add" + }, + { + "type": "string", + "const": "change" + }, + { + "type": "string", + "const": "unlink" + } + ] + } + }, + "required": ["file", "event"] + } + }, + "required": ["type", "properties"] + }, "Todo": { "type": "object", "properties": { @@ -9415,6 +9407,24 @@ }, "required": ["type", "properties"] }, + "Event.vcs.branch.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "vcs.branch.updated" + }, + "properties": { + "type": "object", + "properties": { + "branch": { + "type": "string" + } + } + } + }, + "required": ["type", "properties"] + }, "Event.workspace.ready": { "type": "object", "properties": { @@ -9618,68 +9628,65 @@ { "$ref": "#/components/schemas/Event.project.updated" }, - { - "$ref": "#/components/schemas/Event.file.edited" - }, { "$ref": "#/components/schemas/Event.server.instance.disposed" }, { - "$ref": "#/components/schemas/Event.file.watcher.updated" + "$ref": "#/components/schemas/Event.server.connected" }, { - "$ref": "#/components/schemas/Event.permission.asked" + "$ref": "#/components/schemas/Event.global.disposed" }, { - "$ref": "#/components/schemas/Event.permission.replied" + "$ref": "#/components/schemas/Event.lsp.client.diagnostics" }, { - "$ref": "#/components/schemas/Event.vcs.branch.updated" + "$ref": "#/components/schemas/Event.lsp.updated" }, { - "$ref": "#/components/schemas/Event.question.asked" + "$ref": "#/components/schemas/Event.file.edited" }, { - "$ref": "#/components/schemas/Event.question.replied" + "$ref": "#/components/schemas/Event.message.updated" }, { - "$ref": "#/components/schemas/Event.question.rejected" + "$ref": "#/components/schemas/Event.message.removed" }, { - "$ref": "#/components/schemas/Event.server.connected" + "$ref": "#/components/schemas/Event.message.part.updated" }, { - "$ref": "#/components/schemas/Event.global.disposed" + "$ref": "#/components/schemas/Event.message.part.delta" }, { - "$ref": "#/components/schemas/Event.lsp.client.diagnostics" + "$ref": "#/components/schemas/Event.message.part.removed" }, { - "$ref": "#/components/schemas/Event.lsp.updated" + "$ref": "#/components/schemas/Event.permission.asked" }, { - "$ref": "#/components/schemas/Event.message.updated" + "$ref": "#/components/schemas/Event.permission.replied" }, { - "$ref": "#/components/schemas/Event.message.removed" + "$ref": "#/components/schemas/Event.session.status" }, { - "$ref": "#/components/schemas/Event.message.part.updated" + "$ref": "#/components/schemas/Event.session.idle" }, { - "$ref": "#/components/schemas/Event.message.part.delta" + "$ref": "#/components/schemas/Event.question.asked" }, { - "$ref": "#/components/schemas/Event.message.part.removed" + "$ref": "#/components/schemas/Event.question.replied" }, { - "$ref": "#/components/schemas/Event.session.status" + "$ref": "#/components/schemas/Event.question.rejected" }, { - "$ref": "#/components/schemas/Event.session.idle" + "$ref": "#/components/schemas/Event.session.compacted" }, { - "$ref": "#/components/schemas/Event.session.compacted" + "$ref": "#/components/schemas/Event.file.watcher.updated" }, { "$ref": "#/components/schemas/Event.todo.updated" @@ -9720,6 +9727,9 @@ { "$ref": "#/components/schemas/Event.session.error" }, + { + "$ref": "#/components/schemas/Event.vcs.branch.updated" + }, { "$ref": "#/components/schemas/Event.workspace.ready" }, @@ -10824,19 +10834,6 @@ }, "required": ["type", "key", "token"] }, - "Auth": { - "anyOf": [ - { - "$ref": "#/components/schemas/OAuth" - }, - { - "$ref": "#/components/schemas/ApiAuth" - }, - { - "$ref": "#/components/schemas/WellKnownAuth" - } - ] - }, "NotFoundError": { "type": "object", "properties": { From 9b805e1cc4ba4a98419ca13d9d487c4550af8ddf Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 21 Mar 2026 04:07:51 -0400 Subject: [PATCH 08/32] wip: zen --- .../app/src/routes/zen/util/provider/anthropic.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/provider/anthropic.ts b/packages/console/app/src/routes/zen/util/provider/anthropic.ts index 2b617bff621..b63be8688a5 100644 --- a/packages/console/app/src/routes/zen/util/provider/anthropic.ts +++ b/packages/console/app/src/routes/zen/util/provider/anthropic.ts @@ -20,6 +20,7 @@ export const anthropicHelper: ProviderHelper = ({ reqModel, providerModel }) => const isBedrockModelArn = providerModel.startsWith("arn:aws:bedrock:") const isBedrockModelID = providerModel.startsWith("global.anthropic.") const isBedrock = isBedrockModelArn || isBedrockModelID + const isDatabricks = providerModel.startsWith("databricks-claude-") const supports1m = reqModel.includes("sonnet") || reqModel.includes("opus-4-6") return { format: "anthropic", @@ -28,7 +29,7 @@ export const anthropicHelper: ProviderHelper = ({ reqModel, providerModel }) => ? `${providerApi}/model/${isBedrockModelArn ? encodeURIComponent(providerModel) : providerModel}/${isStream ? "invoke-with-response-stream" : "invoke"}` : providerApi + "/messages", modifyHeaders: (headers: Headers, body: Record, apiKey: string) => { - if (isBedrock) { + if (isBedrock || isDatabricks) { headers.set("Authorization", `Bearer ${apiKey}`) } else { headers.set("x-api-key", apiKey) @@ -47,9 +48,14 @@ export const anthropicHelper: ProviderHelper = ({ reqModel, providerModel }) => model: undefined, stream: undefined, } - : { - service_tier: "standard_only", - }), + : isDatabricks + ? { + anthropic_version: "bedrock-2023-05-31", + anthropic_beta: supports1m ? ["context-1m-2025-08-07"] : undefined, + } + : { + service_tier: "standard_only", + }), }), createBinaryStreamDecoder: () => { if (!isBedrock) return undefined From f80343b875124cc96807b47055ecb2e28c6d3ebf Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 21 Mar 2026 09:11:15 -0400 Subject: [PATCH 09/32] fix annotation --- packages/opencode/src/auth/index.ts | 2 +- packages/opencode/src/util/effect-zod.ts | 6 ++++++ packages/sdk/js/src/v2/gen/sdk.gen.ts | 8 +++----- packages/sdk/js/src/v2/gen/types.gen.ts | 4 +++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/auth/index.ts b/packages/opencode/src/auth/index.ts index c50040f1d77..2238d57f5d9 100644 --- a/packages/opencode/src/auth/index.ts +++ b/packages/opencode/src/auth/index.ts @@ -32,7 +32,7 @@ export namespace Auth { token: Schema.String, }) {} - const _Info = Schema.Union([Oauth, Api, WellKnown]) + const _Info = Schema.Union([Oauth, Api, WellKnown]).annotate({ discriminator: "type", identifier: "Auth" }) export const Info = Object.assign(_Info, { zod: zod(_Info) }) export type Info = Schema.Schema.Type diff --git a/packages/opencode/src/util/effect-zod.ts b/packages/opencode/src/util/effect-zod.ts index c1407594ca3..97cbbd2fc99 100644 --- a/packages/opencode/src/util/effect-zod.ts +++ b/packages/opencode/src/util/effect-zod.ts @@ -60,6 +60,12 @@ function union(ast: SchemaAST.Union): z.ZodTypeAny { const items = ast.types.map(walk) if (items.length === 1) return items[0] if (items.length < 2) return fail(ast) + + const discriminator = (ast as any).annotations?.discriminator + if (discriminator) { + return z.discriminatedUnion(discriminator, items as [z.ZodObject, z.ZodObject, ...z.ZodObject[]]) + } + return z.union(items as [z.ZodTypeAny, z.ZodTypeAny, ...Array]) } diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts index df46c66f20f..b6821322e2f 100644 --- a/packages/sdk/js/src/v2/gen/sdk.gen.ts +++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts @@ -4,11 +4,11 @@ import { client } from "./client.gen.js" import { buildClientParams, type Client, type Options as Options2, type TDataShape } from "./client/index.js" import type { AgentPartInput, - ApiAuth, AppAgentsResponses, AppLogErrors, AppLogResponses, AppSkillsResponses, + Auth as Auth3, AuthRemoveErrors, AuthRemoveResponses, AuthSetErrors, @@ -63,7 +63,6 @@ import type { McpLocalConfig, McpRemoteConfig, McpStatusResponses, - OAuth, OutputFormat, Part as Part2, PartDeleteErrors, @@ -174,7 +173,6 @@ import type { TuiShowToastResponses, TuiSubmitPromptResponses, VcsGetResponses, - WellKnownAuth, WorktreeCreateErrors, WorktreeCreateInput, WorktreeCreateResponses, @@ -339,7 +337,7 @@ export class Auth extends HeyApiClient { public set( parameters: { providerID: string - body?: OAuth | ApiAuth | WellKnownAuth + auth?: Auth3 }, options?: Options, ) { @@ -349,7 +347,7 @@ export class Auth extends HeyApiClient { { args: [ { in: "path", key: "providerID" }, - { key: "body", map: "body" }, + { key: "auth", map: "body" }, ], }, ], diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 59386932607..f7aab687e66 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1534,6 +1534,8 @@ export type WellKnownAuth = { token: string } +export type Auth = OAuth | ApiAuth | WellKnownAuth + export type NotFoundError = { name: "NotFoundError" data: { @@ -2056,7 +2058,7 @@ export type AuthRemoveResponses = { export type AuthRemoveResponse = AuthRemoveResponses[keyof AuthRemoveResponses] export type AuthSetData = { - body?: OAuth | ApiAuth | WellKnownAuth + body?: Auth path: { providerID: string } From fb6bf0b35e623113d23d15cc1a12b28fedd31f88 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Sat, 21 Mar 2026 13:12:54 +0000 Subject: [PATCH 10/32] chore: generate --- packages/sdk/openapi.json | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json index 76eed0025bd..9f3a69c54cc 100644 --- a/packages/sdk/openapi.json +++ b/packages/sdk/openapi.json @@ -199,17 +199,7 @@ "content": { "application/json": { "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/OAuth" - }, - { - "$ref": "#/components/schemas/ApiAuth" - }, - { - "$ref": "#/components/schemas/WellKnownAuth" - } - ] + "$ref": "#/components/schemas/Auth" } } } @@ -10834,6 +10824,19 @@ }, "required": ["type", "key", "token"] }, + "Auth": { + "anyOf": [ + { + "$ref": "#/components/schemas/OAuth" + }, + { + "$ref": "#/components/schemas/ApiAuth" + }, + { + "$ref": "#/components/schemas/WellKnownAuth" + } + ] + }, "NotFoundError": { "type": "object", "properties": { From 9ad6588f3e0066125033810a5e0e4dc08f0c6961 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Sat, 21 Mar 2026 22:13:09 +0800 Subject: [PATCH 11/32] app: allow navigating projects with keybinds (#18502) --- packages/app/src/i18n/en.ts | 2 ++ packages/app/src/pages/layout.tsx | 34 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 72caed40ad9..8efd9d3bc9f 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -23,6 +23,8 @@ export const dict = { "command.sidebar.toggle": "Toggle sidebar", "command.project.open": "Open project", + "command.project.previous": "Previous project", + "command.project.next": "Next project", "command.provider.connect": "Connect provider", "command.server.switch": "Switch server", "command.settings.open": "Open settings", diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index 8e2248469de..2adcd3b5634 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -936,6 +936,26 @@ export default function Layout(props: ParentProps) { navigateToSession(session) } + function navigateProjectByOffset(offset: number) { + const projects = layout.projects.list() + if (projects.length === 0) return + + const current = currentProject()?.worktree + const fallback = currentDir() ? projectRoot(currentDir()) : undefined + const active = current ?? fallback + const index = active ? projects.findIndex((project) => project.worktree === active) : -1 + + const target = + index === -1 + ? offset > 0 + ? projects[0] + : projects[projects.length - 1] + : projects[(index + offset + projects.length) % projects.length] + if (!target) return + + openProject(target.worktree) + } + function navigateSessionByUnseen(offset: number) { const sessions = currentSessions() if (sessions.length === 0) return @@ -1002,6 +1022,20 @@ export default function Layout(props: ParentProps) { keybind: "mod+o", onSelect: () => chooseProject(), }, + { + id: "project.previous", + title: language.t("command.project.previous"), + category: language.t("command.category.project"), + keybind: "mod+alt+arrowup", + onSelect: () => navigateProjectByOffset(-1), + }, + { + id: "project.next", + title: language.t("command.project.next"), + category: language.t("command.category.project"), + keybind: "mod+alt+arrowdown", + onSelect: () => navigateProjectByOffset(1), + }, { id: "provider.connect", title: language.t("command.provider.connect"), From 6a16db4b929422b6f5ef7072ac889cec41ae1eb2 Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Sat, 21 Mar 2026 23:33:04 +0800 Subject: [PATCH 12/32] app: manage mutation loading states with tanstack query (#18501) --- bun.lock | 5 + packages/app/package.json | 1 + packages/app/src/app.tsx | 18 +- .../components/dialog-connect-provider.tsx | 3 +- .../components/dialog-custom-provider-form.ts | 1 - .../components/dialog-custom-provider.test.ts | 2 - .../src/components/dialog-custom-provider.tsx | 77 +++--- .../src/components/dialog-edit-project.tsx | 59 ++-- .../app/src/components/dialog-select-mcp.tsx | 30 ++- .../src/components/dialog-select-server.tsx | 173 ++++++------ .../app/src/components/status-popover.tsx | 58 ++-- packages/app/src/pages/session.tsx | 252 +++++++++--------- .../composer/session-question-dock.tsx | 84 +++--- .../src/pages/session/message-timeline.tsx | 124 +++++---- 14 files changed, 454 insertions(+), 433 deletions(-) diff --git a/bun.lock b/bun.lock index 58cfe892f39..7e07e61ddf8 100644 --- a/bun.lock +++ b/bun.lock @@ -44,6 +44,7 @@ "@solid-primitives/websocket": "1.3.1", "@solidjs/meta": "catalog:", "@solidjs/router": "catalog:", + "@tanstack/solid-query": "5.91.4", "@thisbeyond/solid-dnd": "0.7.5", "diff": "catalog:", "effect": "catalog:", @@ -1966,10 +1967,14 @@ "@tanstack/directive-functions-plugin": ["@tanstack/directive-functions-plugin@1.134.5", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/core": "^7.27.7", "@babel/traverse": "^7.27.7", "@babel/types": "^7.27.7", "@tanstack/router-utils": "1.133.19", "babel-dead-code-elimination": "^1.0.10", "pathe": "^2.0.3", "tiny-invariant": "^1.3.3" }, "peerDependencies": { "vite": ">=6.0.0 || >=7.0.0" } }, "sha512-J3oawV8uBRBbPoLgMdyHt+LxzTNuWRKNJJuCLWsm/yq6v0IQSvIVCgfD2+liIiSnDPxGZ8ExduPXy8IzS70eXw=="], + "@tanstack/query-core": ["@tanstack/query-core@5.91.2", "", {}, "sha512-Uz2pTgPC1mhqrrSGg18RKCWT/pkduAYtxbcyIyKBhw7dTWjXZIzqmpzO2lBkyWr4hlImQgpu1m1pei3UnkFRWw=="], + "@tanstack/router-utils": ["@tanstack/router-utils@1.133.19", "", { "dependencies": { "@babel/core": "^7.27.4", "@babel/generator": "^7.27.5", "@babel/parser": "^7.27.5", "@babel/preset-typescript": "^7.27.1", "ansis": "^4.1.0", "diff": "^8.0.2", "pathe": "^2.0.3", "tinyglobby": "^0.2.15" } }, "sha512-WEp5D2gPxvlLDRXwD/fV7RXjYtqaqJNXKB/L6OyZEbT+9BG/Ib2d7oG9GSUZNNMGPGYAlhBUOi3xutySsk6rxA=="], "@tanstack/server-functions-plugin": ["@tanstack/server-functions-plugin@1.134.5", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/core": "^7.27.7", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.27.7", "@babel/types": "^7.27.7", "@tanstack/directive-functions-plugin": "1.134.5", "babel-dead-code-elimination": "^1.0.9", "tiny-invariant": "^1.3.3" } }, "sha512-2sWxq70T+dOEUlE3sHlXjEPhaFZfdPYlWTSkHchWXrFGw2YOAa+hzD6L9wHMjGDQezYd03ue8tQlHG+9Jzbzgw=="], + "@tanstack/solid-query": ["@tanstack/solid-query@5.91.4", "", { "dependencies": { "@tanstack/query-core": "5.91.2" }, "peerDependencies": { "solid-js": "^1.6.0" } }, "sha512-oCEgn8iT7WnF/7ISd7usBpUK1C9EdvQfg8ZUpKNKZ4edVClICZrCX6f3/Bp8ZlwQnL21KLc2rp+CejEuehlRxg=="], + "@tauri-apps/api": ["@tauri-apps/api@2.10.1", "", {}, "sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw=="], "@tauri-apps/cli": ["@tauri-apps/cli@2.10.1", "", { "optionalDependencies": { "@tauri-apps/cli-darwin-arm64": "2.10.1", "@tauri-apps/cli-darwin-x64": "2.10.1", "@tauri-apps/cli-linux-arm-gnueabihf": "2.10.1", "@tauri-apps/cli-linux-arm64-gnu": "2.10.1", "@tauri-apps/cli-linux-arm64-musl": "2.10.1", "@tauri-apps/cli-linux-riscv64-gnu": "2.10.1", "@tauri-apps/cli-linux-x64-gnu": "2.10.1", "@tauri-apps/cli-linux-x64-musl": "2.10.1", "@tauri-apps/cli-win32-arm64-msvc": "2.10.1", "@tauri-apps/cli-win32-ia32-msvc": "2.10.1", "@tauri-apps/cli-win32-x64-msvc": "2.10.1" }, "bin": { "tauri": "tauri.js" } }, "sha512-jQNGF/5quwORdZSSLtTluyKQ+o6SMa/AUICfhf4egCGFdMHqWssApVgYSbg+jmrZoc8e1DscNvjTnXtlHLS11g=="], diff --git a/packages/app/package.json b/packages/app/package.json index 545d3130980..3f4e2472f2a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -54,6 +54,7 @@ "@solid-primitives/websocket": "1.3.1", "@solidjs/meta": "catalog:", "@solidjs/router": "catalog:", + "@tanstack/solid-query": "5.91.4", "@thisbeyond/solid-dnd": "0.7.5", "diff": "catalog:", "effect": "catalog:", diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx index 9a282bbb708..5247c951d32 100644 --- a/packages/app/src/app.tsx +++ b/packages/app/src/app.tsx @@ -9,6 +9,7 @@ import { Splash } from "@opencode-ai/ui/logo" import { ThemeProvider } from "@opencode-ai/ui/theme" import { MetaProvider } from "@solidjs/meta" import { type BaseRouterProps, Navigate, Route, Router } from "@solidjs/router" +import { QueryClient, QueryClientProvider } from "@tanstack/solid-query" import { type Duration, Effect } from "effect" import { type Component, @@ -81,6 +82,11 @@ function MarkedProviderWithNativeParser(props: ParentProps) { return {props.children} } +function QueryProvider(props: ParentProps) { + const client = new QueryClient() + return {props.children} +} + function AppShellProviders(props: ParentProps) { return ( @@ -136,11 +142,13 @@ export function AppBaseProviders(props: ParentProps) { }> - - - {props.children} - - + + + + {props.children} + + + diff --git a/packages/app/src/components/dialog-connect-provider.tsx b/packages/app/src/components/dialog-connect-provider.tsx index e4fe9e7c4ed..734958dd589 100644 --- a/packages/app/src/components/dialog-connect-provider.tsx +++ b/packages/app/src/components/dialog-connect-provider.tsx @@ -12,10 +12,9 @@ import { showToast } from "@opencode-ai/ui/toast" import { createMemo, Match, onCleanup, onMount, Switch } from "solid-js" import { createStore, produce } from "solid-js/store" import { Link } from "@/components/link" -import { useLanguage } from "@/context/language" import { useGlobalSDK } from "@/context/global-sdk" import { useGlobalSync } from "@/context/global-sync" -import { DialogSelectModel } from "./dialog-select-model" +import { useLanguage } from "@/context/language" import { DialogSelectProvider } from "./dialog-select-provider" export function DialogConnectProvider(props: { provider: string }) { diff --git a/packages/app/src/components/dialog-custom-provider-form.ts b/packages/app/src/components/dialog-custom-provider-form.ts index 92d235c3bcc..e26dcb09710 100644 --- a/packages/app/src/components/dialog-custom-provider-form.ts +++ b/packages/app/src/components/dialog-custom-provider-form.ts @@ -34,7 +34,6 @@ export type FormState = { apiKey: string models: ModelRow[] headers: HeaderRow[] - saving: boolean err: { providerID?: string name?: string diff --git a/packages/app/src/components/dialog-custom-provider.test.ts b/packages/app/src/components/dialog-custom-provider.test.ts index 8cfd78ebeb3..07dd26ecd67 100644 --- a/packages/app/src/components/dialog-custom-provider.test.ts +++ b/packages/app/src/components/dialog-custom-provider.test.ts @@ -16,7 +16,6 @@ describe("validateCustomProvider", () => { { row: "h0", key: " X-Test ", value: " enabled ", err: {} }, { row: "h1", key: "", value: "", err: {} }, ], - saving: false, err: {}, }, t, @@ -60,7 +59,6 @@ describe("validateCustomProvider", () => { { row: "h0", key: "Authorization", value: "one", err: {} }, { row: "h1", key: "authorization", value: "two", err: {} }, ], - saving: false, err: {}, }, t, diff --git a/packages/app/src/components/dialog-custom-provider.tsx b/packages/app/src/components/dialog-custom-provider.tsx index 4d220a0b191..53b66fb451d 100644 --- a/packages/app/src/components/dialog-custom-provider.tsx +++ b/packages/app/src/components/dialog-custom-provider.tsx @@ -3,6 +3,7 @@ import { useDialog } from "@opencode-ai/ui/context/dialog" import { Dialog } from "@opencode-ai/ui/dialog" import { IconButton } from "@opencode-ai/ui/icon-button" import { ProviderIcon } from "@opencode-ai/ui/provider-icon" +import { useMutation } from "@tanstack/solid-query" import { TextField } from "@opencode-ai/ui/text-field" import { showToast } from "@opencode-ai/ui/toast" import { batch, For } from "solid-js" @@ -31,7 +32,6 @@ export function DialogCustomProvider(props: Props) { apiKey: "", models: [modelRow()], headers: [headerRow()], - saving: false, err: {}, }) @@ -116,48 +116,49 @@ export function DialogCustomProvider(props: Props) { return output.result } - const save = async (e: SubmitEvent) => { - e.preventDefault() - if (form.saving) return - - const result = validate() - if (!result) return + const saveMutation = useMutation(() => ({ + mutationFn: async (result: NonNullable>) => { + const disabledProviders = globalSync.data.config.disabled_providers ?? [] + const nextDisabled = disabledProviders.filter((id) => id !== result.providerID) - setForm("saving", true) - - const disabledProviders = globalSync.data.config.disabled_providers ?? [] - const nextDisabled = disabledProviders.filter((id) => id !== result.providerID) - - const auth = result.key - ? globalSDK.client.auth.set({ + if (result.key) { + await globalSDK.client.auth.set({ providerID: result.providerID, auth: { type: "api", key: result.key, }, }) - : Promise.resolve() + } - auth - .then(() => - globalSync.updateConfig({ provider: { [result.providerID]: result.config }, disabled_providers: nextDisabled }), - ) - .then(() => { - dialog.close() - showToast({ - variant: "success", - icon: "circle-check", - title: language.t("provider.connect.toast.connected.title", { provider: result.name }), - description: language.t("provider.connect.toast.connected.description", { provider: result.name }), - }) + await globalSync.updateConfig({ + provider: { [result.providerID]: result.config }, + disabled_providers: nextDisabled, }) - .catch((err: unknown) => { - const message = err instanceof Error ? err.message : String(err) - showToast({ title: language.t("common.requestFailed"), description: message }) - }) - .finally(() => { - setForm("saving", false) + return result + }, + onSuccess: (result) => { + dialog.close() + showToast({ + variant: "success", + icon: "circle-check", + title: language.t("provider.connect.toast.connected.title", { provider: result.name }), + description: language.t("provider.connect.toast.connected.description", { provider: result.name }), }) + }, + onError: (err) => { + const message = err instanceof Error ? err.message : String(err) + showToast({ title: language.t("common.requestFailed"), description: message }) + }, + })) + + const save = (e: SubmitEvent) => { + e.preventDefault() + if (saveMutation.isPending) return + + const result = validate() + if (!result) return + saveMutation.mutate(result) } return ( @@ -312,8 +313,14 @@ export function DialogCustomProvider(props: Props) { - diff --git a/packages/app/src/components/dialog-edit-project.tsx b/packages/app/src/components/dialog-edit-project.tsx index ec0793c540e..eb962f47eb0 100644 --- a/packages/app/src/components/dialog-edit-project.tsx +++ b/packages/app/src/components/dialog-edit-project.tsx @@ -2,6 +2,7 @@ import { Button } from "@opencode-ai/ui/button" import { useDialog } from "@opencode-ai/ui/context/dialog" import { Dialog } from "@opencode-ai/ui/dialog" import { TextField } from "@opencode-ai/ui/text-field" +import { useMutation } from "@tanstack/solid-query" import { Icon } from "@opencode-ai/ui/icon" import { createMemo, For, Show } from "solid-js" import { createStore } from "solid-js/store" @@ -28,7 +29,6 @@ export function DialogEditProject(props: { project: LocalProject }) { color: props.project.icon?.color || "pink", iconUrl: props.project.icon?.override || "", startup: props.project.commands?.start ?? "", - saving: false, dragOver: false, iconHover: false, }) @@ -71,38 +71,37 @@ export function DialogEditProject(props: { project: LocalProject }) { setStore("iconUrl", "") } - async function handleSubmit(e: SubmitEvent) { - e.preventDefault() - - await Promise.resolve() - .then(async () => { - setStore("saving", true) - const name = store.name.trim() === folderName() ? "" : store.name.trim() - const start = store.startup.trim() + const saveMutation = useMutation(() => ({ + mutationFn: async () => { + const name = store.name.trim() === folderName() ? "" : store.name.trim() + const start = store.startup.trim() - if (props.project.id && props.project.id !== "global") { - await globalSDK.client.project.update({ - projectID: props.project.id, - directory: props.project.worktree, - name, - icon: { color: store.color, override: store.iconUrl }, - commands: { start }, - }) - globalSync.project.icon(props.project.worktree, store.iconUrl || undefined) - dialog.close() - return - } - - globalSync.project.meta(props.project.worktree, { + if (props.project.id && props.project.id !== "global") { + await globalSDK.client.project.update({ + projectID: props.project.id, + directory: props.project.worktree, name, - icon: { color: store.color, override: store.iconUrl || undefined }, - commands: { start: start || undefined }, + icon: { color: store.color, override: store.iconUrl }, + commands: { start }, }) + globalSync.project.icon(props.project.worktree, store.iconUrl || undefined) dialog.close() + return + } + + globalSync.project.meta(props.project.worktree, { + name, + icon: { color: store.color, override: store.iconUrl || undefined }, + commands: { start: start || undefined }, }) - .finally(() => { - setStore("saving", false) - }) + dialog.close() + }, + })) + + function handleSubmit(e: SubmitEvent) { + e.preventDefault() + if (saveMutation.isPending) return + saveMutation.mutate() } return ( @@ -246,8 +245,8 @@ export function DialogEditProject(props: { project: LocalProject }) { - diff --git a/packages/app/src/components/dialog-select-mcp.tsx b/packages/app/src/components/dialog-select-mcp.tsx index f8913eee4fb..fafba6168cc 100644 --- a/packages/app/src/components/dialog-select-mcp.tsx +++ b/packages/app/src/components/dialog-select-mcp.tsx @@ -1,4 +1,5 @@ -import { Component, createMemo, createSignal, Show } from "solid-js" +import { useMutation } from "@tanstack/solid-query" +import { Component, createMemo, Show } from "solid-js" import { useSync } from "@/context/sync" import { useSDK } from "@/context/sdk" import { Dialog } from "@opencode-ai/ui/dialog" @@ -17,7 +18,6 @@ export const DialogSelectMcp: Component = () => { const sync = useSync() const sdk = useSDK() const language = useLanguage() - const [loading, setLoading] = createSignal(null) const items = createMemo(() => Object.entries(sync.data.mcp ?? {}) @@ -25,10 +25,8 @@ export const DialogSelectMcp: Component = () => { .sort((a, b) => a.name.localeCompare(b.name)), ) - const toggle = async (name: string) => { - if (loading()) return - setLoading(name) - try { + const toggle = useMutation(() => ({ + mutationFn: async (name: string) => { const status = sync.data.mcp[name] if (status?.status === "connected") { await sdk.client.mcp.disconnect({ name }) @@ -38,10 +36,8 @@ export const DialogSelectMcp: Component = () => { const result = await sdk.client.mcp.status() if (result.data) sync.set("mcp", result.data) - } finally { - setLoading(null) - } - } + }, + })) const enabledCount = createMemo(() => items().filter((i) => i.status === "connected").length) const totalCount = createMemo(() => items().length) @@ -59,7 +55,8 @@ export const DialogSelectMcp: Component = () => { filterKeys={["name", "status"]} sortBy={(a, b) => a.name.localeCompare(b.name)} onSelect={(x) => { - if (x) toggle(x.name) + if (!x || toggle.isPending) return + toggle.mutate(x.name) }} > {(i) => { @@ -83,7 +80,7 @@ export const DialogSelectMcp: Component = () => { {statusLabel()} - + {language.t("common.loading.ellipsis")} @@ -92,7 +89,14 @@ export const DialogSelectMcp: Component = () => {
e.stopPropagation()}> - toggle(i.name)} /> + { + if (toggle.isPending) return + toggle.mutate(i.name) + }} + />
) diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx index f8d14cbb943..ca4c42a3769 100644 --- a/packages/app/src/components/dialog-select-server.tsx +++ b/packages/app/src/components/dialog-select-server.tsx @@ -6,6 +6,7 @@ import { Icon } from "@opencode-ai/ui/icon" import { IconButton } from "@opencode-ai/ui/icon-button" import { List } from "@opencode-ai/ui/list" import { TextField } from "@opencode-ai/ui/text-field" +import { useMutation } from "@tanstack/solid-query" import { showToast } from "@opencode-ai/ui/toast" import { useNavigate } from "@solidjs/router" import { createEffect, createMemo, createResource, onCleanup, Show } from "solid-js" @@ -186,7 +187,6 @@ export function DialogSelectServer() { name: "", username: DEFAULT_USERNAME, password: "", - adding: false, error: "", showForm: false, status: undefined as boolean | undefined, @@ -198,7 +198,6 @@ export function DialogSelectServer() { username: "", password: "", error: "", - busy: false, status: undefined as boolean | undefined, }, }) @@ -209,7 +208,6 @@ export function DialogSelectServer() { name: "", username: DEFAULT_USERNAME, password: "", - adding: false, error: "", showForm: false, status: undefined, @@ -224,10 +222,78 @@ export function DialogSelectServer() { password: "", error: "", status: undefined, - busy: false, }) } + const addMutation = useMutation(() => ({ + mutationFn: async (value: string) => { + const normalized = normalizeServerUrl(value) + if (!normalized) { + resetAdd() + return + } + + const conn: ServerConnection.Http = { + type: "http", + http: { url: normalized }, + } + if (store.addServer.name.trim()) conn.displayName = store.addServer.name.trim() + if (store.addServer.password) conn.http.password = store.addServer.password + if (store.addServer.password && store.addServer.username) conn.http.username = store.addServer.username + const result = await checkServerHealth(conn.http) + if (!result.healthy) { + setStore("addServer", { error: language.t("dialog.server.add.error") }) + return + } + + resetAdd() + await select(conn, true) + }, + })) + + const editMutation = useMutation(() => ({ + mutationFn: async (input: { original: ServerConnection.Any; value: string }) => { + if (input.original.type !== "http") return + const normalized = normalizeServerUrl(input.value) + if (!normalized) { + resetEdit() + return + } + + const name = store.editServer.name.trim() || undefined + const username = store.editServer.username || undefined + const password = store.editServer.password || undefined + const existingName = input.original.displayName + if ( + normalized === input.original.http.url && + name === existingName && + username === input.original.http.username && + password === input.original.http.password + ) { + resetEdit() + return + } + + const conn: ServerConnection.Http = { + type: "http", + displayName: name, + http: { url: normalized, username, password }, + } + const result = await checkServerHealth(conn.http) + if (!result.healthy) { + setStore("editServer", { error: language.t("dialog.server.add.error") }) + return + } + if (normalized === input.original.http.url) { + server.add(conn) + } else { + replaceServer(input.original, conn) + } + + resetEdit() + }, + })) + const replaceServer = (original: ServerConnection.Http, next: ServerConnection.Http) => { const active = server.key const newConn = server.add(next) @@ -296,7 +362,7 @@ export function DialogSelectServer() { } const handleAddChange = (value: string) => { - if (store.addServer.adding) return + if (addMutation.isPending) return setStore("addServer", { url: value, error: "" }) void previewStatus(value, store.addServer.username, store.addServer.password, (next) => setStore("addServer", { status: next }), @@ -304,12 +370,12 @@ export function DialogSelectServer() { } const handleAddNameChange = (value: string) => { - if (store.addServer.adding) return + if (addMutation.isPending) return setStore("addServer", { name: value, error: "" }) } const handleAddUsernameChange = (value: string) => { - if (store.addServer.adding) return + if (addMutation.isPending) return setStore("addServer", { username: value, error: "" }) void previewStatus(store.addServer.url, value, store.addServer.password, (next) => setStore("addServer", { status: next }), @@ -317,7 +383,7 @@ export function DialogSelectServer() { } const handleAddPasswordChange = (value: string) => { - if (store.addServer.adding) return + if (addMutation.isPending) return setStore("addServer", { password: value, error: "" }) void previewStatus(store.addServer.url, store.addServer.username, value, (next) => setStore("addServer", { status: next }), @@ -325,7 +391,7 @@ export function DialogSelectServer() { } const handleEditChange = (value: string) => { - if (store.editServer.busy) return + if (editMutation.isPending) return setStore("editServer", { value, error: "" }) void previewStatus(value, store.editServer.username, store.editServer.password, (next) => setStore("editServer", { status: next }), @@ -333,12 +399,12 @@ export function DialogSelectServer() { } const handleEditNameChange = (value: string) => { - if (store.editServer.busy) return + if (editMutation.isPending) return setStore("editServer", { name: value, error: "" }) } const handleEditUsernameChange = (value: string) => { - if (store.editServer.busy) return + if (editMutation.isPending) return setStore("editServer", { username: value, error: "" }) void previewStatus(store.editServer.value, value, store.editServer.password, (next) => setStore("editServer", { status: next }), @@ -346,85 +412,13 @@ export function DialogSelectServer() { } const handleEditPasswordChange = (value: string) => { - if (store.editServer.busy) return + if (editMutation.isPending) return setStore("editServer", { password: value, error: "" }) void previewStatus(store.editServer.value, store.editServer.username, value, (next) => setStore("editServer", { status: next }), ) } - async function handleAdd(value: string) { - if (store.addServer.adding) return - const normalized = normalizeServerUrl(value) - if (!normalized) { - resetAdd() - return - } - - setStore("addServer", { adding: true, error: "" }) - - const conn: ServerConnection.Http = { - type: "http", - http: { url: normalized }, - } - if (store.addServer.name.trim()) conn.displayName = store.addServer.name.trim() - if (store.addServer.password) conn.http.password = store.addServer.password - if (store.addServer.password && store.addServer.username) conn.http.username = store.addServer.username - const result = await checkServerHealth(conn.http) - setStore("addServer", { adding: false }) - if (!result.healthy) { - setStore("addServer", { error: language.t("dialog.server.add.error") }) - return - } - - resetAdd() - await select(conn, true) - } - - async function handleEdit(original: ServerConnection.Any, value: string) { - if (store.editServer.busy || original.type !== "http") return - const normalized = normalizeServerUrl(value) - if (!normalized) { - resetEdit() - return - } - - const name = store.editServer.name.trim() || undefined - const username = store.editServer.username || undefined - const password = store.editServer.password || undefined - const existingName = original.displayName - if ( - normalized === original.http.url && - name === existingName && - username === original.http.username && - password === original.http.password - ) { - resetEdit() - return - } - - setStore("editServer", { busy: true, error: "" }) - - const conn: ServerConnection.Http = { - type: "http", - displayName: name, - http: { url: normalized, username, password }, - } - const result = await checkServerHealth(conn.http) - setStore("editServer", { busy: false }) - if (!result.healthy) { - setStore("editServer", { error: language.t("dialog.server.add.error") }) - return - } - if (normalized === original.http.url) { - server.add(conn) - } else { - replaceServer(original, conn) - } - - resetEdit() - } - const mode = createMemo<"list" | "add" | "edit">(() => { if (store.editServer.id) return "edit" if (store.addServer.showForm) return "add" @@ -464,23 +458,26 @@ export function DialogSelectServer() { password: conn.http.password ?? "", error: "", status: store.status[ServerConnection.key(conn)]?.healthy, - busy: false, }) } const submitForm = () => { if (mode() === "add") { - void handleAdd(store.addServer.url) + if (addMutation.isPending) return + setStore("addServer", { error: "" }) + addMutation.mutate(store.addServer.url) return } const original = editing() if (!original) return - void handleEdit(original, store.editServer.value) + if (editMutation.isPending) return + setStore("editServer", { error: "" }) + editMutation.mutate({ original, value: store.editServer.value }) } const isFormMode = createMemo(() => mode() !== "list") const isAddMode = createMemo(() => mode() === "add") - const formBusy = createMemo(() => (isAddMode() ? store.addServer.adding : store.editServer.busy)) + const formBusy = createMemo(() => (isAddMode() ? addMutation.isPending : editMutation.isPending)) const formTitle = createMemo(() => { if (!isFormMode()) return language.t("dialog.server.title") diff --git a/packages/app/src/components/status-popover.tsx b/packages/app/src/components/status-popover.tsx index 063205f0c30..464522443f1 100644 --- a/packages/app/src/components/status-popover.tsx +++ b/packages/app/src/components/status-popover.tsx @@ -4,6 +4,7 @@ import { Icon } from "@opencode-ai/ui/icon" import { Popover } from "@opencode-ai/ui/popover" import { Switch } from "@opencode-ai/ui/switch" import { Tabs } from "@opencode-ai/ui/tabs" +import { useMutation } from "@tanstack/solid-query" import { showToast } from "@opencode-ai/ui/toast" import { useNavigate } from "@solidjs/router" import { type Accessor, createEffect, createMemo, createSignal, For, type JSXElement, onCleanup, Show } from "solid-js" @@ -130,41 +131,30 @@ const useDefaultServerKey = ( } } -const useMcpToggle = (input: { - sync: ReturnType - sdk: ReturnType - language: ReturnType -}) => { - const [loading, setLoading] = createSignal(null) - - const toggle = async (name: string) => { - if (loading()) return - setLoading(name) +const useMcpToggleMutation = () => { + const sync = useSync() + const sdk = useSDK() + const language = useLanguage() - try { - const status = input.sync.data.mcp[name] - await (status?.status === "connected" - ? input.sdk.client.mcp.disconnect({ name }) - : input.sdk.client.mcp.connect({ name })) - const result = await input.sdk.client.mcp.status() - if (result.data) input.sync.set("mcp", result.data) - } catch (err) { + return useMutation(() => ({ + mutationFn: async (name: string) => { + const status = sync.data.mcp[name] + await (status?.status === "connected" ? sdk.client.mcp.disconnect({ name }) : sdk.client.mcp.connect({ name })) + const result = await sdk.client.mcp.status() + if (result.data) sync.set("mcp", result.data) + }, + onError: (err) => { showToast({ variant: "error", - title: input.language.t("common.requestFailed"), + title: language.t("common.requestFailed"), description: err instanceof Error ? err.message : String(err), }) - } finally { - setLoading(null) - } - } - - return { loading, toggle } + }, + })) } export function StatusPopover() { const sync = useSync() - const sdk = useSDK() const server = useServer() const platform = usePlatform() const dialog = useDialog() @@ -181,7 +171,7 @@ export function StatusPopover() { }) const health = useServerHealth(servers) const sortedServers = createMemo(() => listServersByHealth(servers(), server.key, health)) - const mcp = useMcpToggle({ sync, sdk, language }) + const toggleMcp = useMcpToggleMutation() const defaultServer = useDefaultServerKey(platform.getDefaultServer) const mcpNames = createMemo(() => Object.keys(sync.data.mcp ?? {}).sort((a, b) => a.localeCompare(b))) const mcpStatus = (name: string) => sync.data.mcp?.[name]?.status @@ -337,8 +327,11 @@ export function StatusPopover() { diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 6d29170081a..428826f6ad9 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -1,5 +1,6 @@ import type { Project, UserMessage } from "@opencode-ai/sdk/v2" import { useDialog } from "@opencode-ai/ui/context/dialog" +import { useMutation } from "@tanstack/solid-query" import { batch, onCleanup, @@ -327,10 +328,7 @@ export default function Page() { }) const [ui, setUi] = createStore({ - git: false, pendingMessage: undefined as string | undefined, - restoring: undefined as string | undefined, - reverting: false, reviewSnap: false, scrollGesture: 0, scroll: { @@ -506,7 +504,6 @@ export default function Page() { const [followup, setFollowup] = createStore({ items: {} as Record, - sending: {} as Record, failed: {} as Record, paused: {} as Record, edit: {} as Record< @@ -644,25 +641,24 @@ export default function Page() { globalSync.set("project", [...list, next]) } - function initGit() { - if (ui.git) return - setUi("git", true) - void sdk.client.project - .initGit() - .then((x) => { - if (!x.data) return - upsert(x.data) - }) - .catch((err) => { - showToast({ - variant: "error", - title: language.t("common.requestFailed"), - description: formatServerError(err, language.t), - }) - }) - .finally(() => { - setUi("git", false) + const gitMutation = useMutation(() => ({ + mutationFn: () => sdk.client.project.initGit(), + onSuccess: (x) => { + if (!x.data) return + upsert(x.data) + }, + onError: (err) => { + showToast({ + variant: "error", + title: language.t("common.requestFailed"), + description: formatServerError(err, language.t), }) + }, + })) + + function initGit() { + if (gitMutation.isPending) return + gitMutation.mutate() } let inputRef!: HTMLDivElement @@ -961,8 +957,8 @@ export default function Page() { {language.t("session.review.noVcs.createGit.description")} - @@ -1379,10 +1375,40 @@ export default function Page() { return followup.edit[id] }) + const followupMutation = useMutation(() => ({ + mutationFn: async (input: { sessionID: string; id: string; manual?: boolean }) => { + const item = (followup.items[input.sessionID] ?? []).find((entry) => entry.id === input.id) + if (!item) return + + if (input.manual) setFollowup("paused", input.sessionID, undefined) + setFollowup("failed", input.sessionID, undefined) + + const ok = await sendFollowupDraft({ + client: sdk.client, + sync, + globalSync, + draft: item, + optimisticBusy: item.sessionDirectory === sdk.directory, + }).catch((err) => { + setFollowup("failed", input.sessionID, input.id) + fail(err) + return false + }) + if (!ok) return + + setFollowup("items", input.sessionID, (items) => (items ?? []).filter((entry) => entry.id !== input.id)) + if (input.manual) resumeScroll() + }, + })) + + const followupBusy = (sessionID: string) => + followupMutation.isPending && followupMutation.variables?.sessionID === sessionID + const sendingFollowup = createMemo(() => { const id = params.id if (!id) return - return followup.sending[id] + if (!followupBusy(id)) return + return followupMutation.variables?.id }) const queueEnabled = createMemo(() => { @@ -1422,37 +1448,15 @@ export default function Page() { const sendFollowup = (sessionID: string, id: string, opts?: { manual?: boolean }) => { const item = (followup.items[sessionID] ?? []).find((entry) => entry.id === id) if (!item) return Promise.resolve() - if (followup.sending[sessionID]) return Promise.resolve() - - if (opts?.manual) setFollowup("paused", sessionID, undefined) - setFollowup("sending", sessionID, id) - setFollowup("failed", sessionID, undefined) - - return sendFollowupDraft({ - client: sdk.client, - sync, - globalSync, - draft: item, - optimisticBusy: item.sessionDirectory === sdk.directory, - }) - .then((ok) => { - if (ok === false) return - setFollowup("items", sessionID, (items) => (items ?? []).filter((entry) => entry.id !== id)) - if (opts?.manual) resumeScroll() - }) - .catch((err) => { - setFollowup("failed", sessionID, id) - fail(err) - }) - .finally(() => { - setFollowup("sending", sessionID, (value) => (value === id ? undefined : value)) - }) + if (followupBusy(sessionID)) return Promise.resolve() + + return followupMutation.mutateAsync({ sessionID, id, manual: opts?.manual }) } const editFollowup = (id: string) => { const sessionID = params.id if (!sessionID) return - if (followup.sending[sessionID]) return + if (followupBusy(sessionID)) return const item = queuedFollowups().find((entry) => entry.id === id) if (!item) return @@ -1475,6 +1479,74 @@ export default function Page() { const halt = (sessionID: string) => busy(sessionID) ? sdk.client.session.abort({ sessionID }).catch(() => {}) : Promise.resolve() + const revertMutation = useMutation(() => ({ + mutationFn: async (input: { sessionID: string; messageID: string }) => { + const prev = prompt.current().slice() + const last = info()?.revert + const value = draft(input.messageID) + batch(() => { + roll(input.sessionID, { messageID: input.messageID }) + prompt.set(value) + }) + await halt(input.sessionID) + .then(() => sdk.client.session.revert(input)) + .then((result) => { + if (result.data) merge(result.data) + }) + .catch((err) => { + batch(() => { + roll(input.sessionID, last) + prompt.set(prev) + }) + fail(err) + }) + }, + })) + + const restoreMutation = useMutation(() => ({ + mutationFn: async (id: string) => { + const sessionID = params.id + if (!sessionID) return + + const next = userMessages().find((item) => item.id > id) + const prev = prompt.current().slice() + const last = info()?.revert + + batch(() => { + roll(sessionID, next ? { messageID: next.id } : undefined) + if (next) { + prompt.set(draft(next.id)) + return + } + prompt.reset() + }) + + const task = !next + ? halt(sessionID).then(() => sdk.client.session.unrevert({ sessionID })) + : halt(sessionID).then(() => + sdk.client.session.revert({ + sessionID, + messageID: next.id, + }), + ) + + await task + .then((result) => { + if (result.data) merge(result.data) + }) + .catch((err) => { + batch(() => { + roll(sessionID, last) + prompt.set(prev) + }) + fail(err) + }) + }, + })) + + const reverting = createMemo(() => revertMutation.isPending || restoreMutation.isPending) + const restoring = createMemo(() => (restoreMutation.isPending ? restoreMutation.variables : undefined)) + const fork = (input: { sessionID: string; messageID: string }) => { const value = draft(input.messageID) const dir = base64Encode(sdk.directory) @@ -1496,77 +1568,13 @@ export default function Page() { } const revert = (input: { sessionID: string; messageID: string }) => { - if (ui.reverting || ui.restoring) return - const prev = prompt.current().slice() - const last = info()?.revert - const value = draft(input.messageID) - batch(() => { - setUi("reverting", true) - roll(input.sessionID, { messageID: input.messageID }) - prompt.set(value) - }) - return halt(input.sessionID) - .then(() => sdk.client.session.revert(input)) - .then((result) => { - if (result.data) merge(result.data) - }) - .catch((err) => { - batch(() => { - roll(input.sessionID, last) - prompt.set(prev) - }) - fail(err) - }) - .finally(() => { - setUi("reverting", false) - }) + if (reverting()) return + return revertMutation.mutateAsync(input) } const restore = (id: string) => { - const sessionID = params.id - if (!sessionID || ui.restoring || ui.reverting) return - - const next = userMessages().find((item) => item.id > id) - const prev = prompt.current().slice() - const last = info()?.revert - - batch(() => { - setUi("restoring", id) - setUi("reverting", true) - roll(sessionID, next ? { messageID: next.id } : undefined) - if (next) { - prompt.set(draft(next.id)) - return - } - prompt.reset() - }) - - const task = !next - ? halt(sessionID).then(() => sdk.client.session.unrevert({ sessionID })) - : halt(sessionID).then(() => - sdk.client.session.revert({ - sessionID, - messageID: next.id, - }), - ) - - return task - .then((result) => { - if (result.data) merge(result.data) - }) - .catch((err) => { - batch(() => { - roll(sessionID, last) - prompt.set(prev) - }) - fail(err) - }) - .finally(() => { - batch(() => { - setUi("restoring", (value) => (value === id ? undefined : value)) - setUi("reverting", false) - }) - }) + if (!params.id || reverting()) return + return restoreMutation.mutateAsync(id) } const rolled = createMemo(() => { @@ -1585,7 +1593,7 @@ export default function Page() { const item = queuedFollowups()[0] if (!item) return - if (followup.sending[sessionID]) return + if (followupBusy(sessionID)) return if (followup.failed[sessionID] === item.id) return if (followup.paused[sessionID]) return if (composer.blocked()) return @@ -1780,8 +1788,8 @@ export default function Page() { rolled().length > 0 ? { items: rolled(), - restoring: ui.restoring, - disabled: ui.reverting, + restoring: restoring(), + disabled: reverting(), onRestore: restore, } : undefined diff --git a/packages/app/src/pages/session/composer/session-question-dock.tsx b/packages/app/src/pages/session/composer/session-question-dock.tsx index b66c27579a9..7ba07b15d0c 100644 --- a/packages/app/src/pages/session/composer/session-question-dock.tsx +++ b/packages/app/src/pages/session/composer/session-question-dock.tsx @@ -1,5 +1,6 @@ import { For, Show, createMemo, onCleanup, onMount, type Component } from "solid-js" import { createStore } from "solid-js/store" +import { useMutation } from "@tanstack/solid-query" import { Button } from "@opencode-ai/ui/button" import { DockPrompt } from "@opencode-ai/ui/dock-prompt" import { Icon } from "@opencode-ai/ui/icon" @@ -24,7 +25,6 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit custom: cached?.custom ?? ([] as string[]), customOn: cached?.customOn ?? ([] as boolean[]), editing: false, - sending: false, }) let root: HTMLDivElement | undefined @@ -126,36 +126,40 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit showToast({ title: language.t("common.requestFailed"), description: message }) } - const reply = async (answers: QuestionAnswer[]) => { - if (store.sending) return - - props.onSubmit() - setStore("sending", true) - try { - await sdk.client.question.reply({ requestID: props.request.id, answers }) + const replyMutation = useMutation(() => ({ + mutationFn: (answers: QuestionAnswer[]) => sdk.client.question.reply({ requestID: props.request.id, answers }), + onMutate: () => { + props.onSubmit() + }, + onSuccess: () => { replied = true cache.delete(props.request.id) - } catch (err) { - fail(err) - } finally { - setStore("sending", false) - } + }, + onError: fail, + })) + + const rejectMutation = useMutation(() => ({ + mutationFn: () => sdk.client.question.reject({ requestID: props.request.id }), + onMutate: () => { + props.onSubmit() + }, + onSuccess: () => { + replied = true + cache.delete(props.request.id) + }, + onError: fail, + })) + + const sending = createMemo(() => replyMutation.isPending || rejectMutation.isPending) + + const reply = async (answers: QuestionAnswer[]) => { + if (sending()) return + await replyMutation.mutateAsync(answers) } const reject = async () => { - if (store.sending) return - - props.onSubmit() - setStore("sending", true) - try { - await sdk.client.question.reject({ requestID: props.request.id }) - replied = true - cache.delete(props.request.id) - } catch (err) { - fail(err) - } finally { - setStore("sending", false) - } + if (sending()) return + await rejectMutation.mutateAsync() } const submit = () => void reply(questions().map((_, i) => store.answers[i] ?? [])) @@ -175,7 +179,7 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit } const customToggle = () => { - if (store.sending) return + if (sending()) return if (!multi()) { setStore("customOn", store.tab, true) @@ -198,14 +202,14 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit } const customOpen = () => { - if (store.sending) return + if (sending()) return if (!on()) setStore("customOn", store.tab, true) setStore("editing", true) customUpdate(input(), true) } const selectOption = (optIndex: number) => { - if (store.sending) return + if (sending()) return if (optIndex === options().length) { customOpen() @@ -227,7 +231,7 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit } const next = () => { - if (store.sending) return + if (sending()) return if (store.editing) commitCustom() if (store.tab >= total() - 1) { @@ -240,14 +244,14 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit } const back = () => { - if (store.sending) return + if (sending()) return if (store.tab <= 0) return setStore("tab", store.tab - 1) setStore("editing", false) } const jump = (tab: number) => { - if (store.sending) return + if (sending()) return setStore("tab", tab) setStore("editing", false) } @@ -270,7 +274,7 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit (store.answers[i()]?.length ?? 0) > 0 || (store.customOn[i()] === true && (store.custom[i()] ?? "").trim().length > 0) } - disabled={store.sending} + disabled={sending()} onClick={() => jump(i())} aria-label={`${language.t("ui.tool.questions")} ${i() + 1}`} /> @@ -281,16 +285,16 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit } footer={ <> -
0}> - -
@@ -311,7 +315,7 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit data-picked={picked()} role={multi() ? "checkbox" : "radio"} aria-checked={picked()} - disabled={store.sending} + disabled={sending()} onClick={() => selectOption(i())} >
yK$)Bd4nGx>~WT^saP$(#-6X@!7{;jA4sL1ae+iX}d3t@=!&`wz3&N z&Nvf|_?}Yu;bF2Oui)Yv%`AP?0;{CzFDjSru=n5o^Q+kG_$E^<*J#kRXDe{c_mkX7 zher;Q6+&iZ%M%z|^2M89INcw%9uvT>L}5+2$v$*E63pzF-S)J1g3P$3AY^&1-ht%i zNBOVwT4e6-a1+>R;^22^7v6x7%k3nb-NKqlagK`xQvP9j(DdJb9JYJ(PLk?%o?uKs z!$s($^$W3{1!tkG;SKt*lmosixinW^4d#iKU9CTm?^n&_dl#(Qndq0#)muvsB`?ok zH1E@wy+}J&H({2@o-$Y?y`gH>wmD{hezendtC*>iJIFfREd-YzKbBD^t(Q*~-g4-Uw~1>g3uL zz3K1f>1MD5P;29oX_n8HiVtFPjD1geC`|ONX}TTO7B|DIiA|*4{o6gJeEjtKhDraR z75s8qEUEd0xjy%}7m{gqh`DH(S>KiE%6*gxL+4!g^i$%Bp)sL-%UT}^k#oCSGt{PN zK+Su6l}gh93*r5AK#m*)Fwj!6y!rz<0(G@)vq%ux8SV6;|GG?P>bGc16A}L>@Dzb6 z60Rg>q)gJ^ZE{<;> z8{Is#tU)xvLS%h?2KqZc_X8-$%{c;>X+S2a}n56b^%#Res(s-gMJ}mo8FF_aM9;f;!916Jb8O z9PZ2<7)I#9zLzV*gJw!MQuNkt6&q>N^(&rcB7;XY^N&d29A*riW76twYzszT8l>QM zf@jj3ZK?*;rPQE>?`Edbz}_RXM@N&5AvTL4>~c>_v644`#<|XPA)BF(Mi0&|ysNCY z#Y4EQN)i}B+}Z80Sk);5kSi?@=I%L+{`7_55ZOTUCf8$aD`6w9!dW`)Fg7)iD0j7} z{w!H7{7fCoM|FHS-$H)W4Cl(SX~$=(Z-_Do)0ej@2fd~{2)(>PRY;`i%^wamv*{A9t_)G4Y&+V#WWV+Kxd*N`)T}JISsCR4ByESmy-H{nkVZA zi*=7BmY+(Cw5s3CuP)Ohmm3i}%^A?9VkvEkOVyOkXPjr_vDaD`Y>oUInaAUY0cfat_PJ|6r@24!D`lQI;Rnt|8}&T%g;elb{Oy zzJKyJCalV`S~xL_5rsKKMeyp(wrP`E{X6Ax7KBTN)3JmqxSLS(nHOoM@!v>uR|jcS zQ**s)GZ0@?soiYrvuv0N|I%%#72B@Sqa*R3dApls^ELh5id=!Vs(;tHG*>ts?*#Y+ zR&;pKpi=-^LI=n0>1v6Pv76m|N<0%jQ*u9IeJjCjbf*8(a<__FwTteo4@}!Bdxkpu z&O^+5IV3NUA-yAGlqmUhT!?G)glXH`%2qPWmhc3iOIw!?fAI8>Nm>j%#8Wb?TP#ba zHD$^GHD#TPWa{9#yZ)~Vs?M-$80^6#W+^){Z+;{7-W(aedrEJ#DW%}ru5K1W7eudY z;ki059_B)dK1WkF;%9bJ896IPOFdXB3CtBssB^#w+<)`@u)8V*7S*lXgHe34U6nQFV=^F6J*c-0S{)QLMXI4fMXA-}qWr9wfMZy>wi6j_p z7%bcGPNI>G0LmHAuB{K<77Uu>%36sDw=wxIV!^Wi*FRkw?LCWo+hg7VQI|}z3hQ*z zcFjR;P+n2!`y?g<3QL1m(2%27w*@)#E|zy&e|d6Bh4q=!RA$qW982#vEFW9akfetz zDX`{XbcEn+oHL1QSzN$qGnw$nhaZK{QeqR1Eg4SL-!VRwm*M{XBDmk{F3Wnb=c35a z>jSYIANa?=fDbF(~w*a&NNNW9J5S8W4^&-y& z4N1SEJKs{ONo48i?d^6lt4)zDV=n$=-t*pxr@*P(Q!8Pqiw6}s78w^(qy%2g7G7PR za8DpiP2k})jA8&lzJo6YRFrgkvoLehy4}L*2xKRQv5Ec>98!u83%}b_7YN1Z+cmrX zqb~~oV0Pzznn+Fzjn(64g4#D<&V@qxG_~4AAqAzn8+SElc^!9r5!*DaFp3fwSp6hJ74TMx33%SR6DF6;X9Tr{nFCp_FYT7xnaN9=np7`#an7y=mbElUS77^OGk| z%}HIgP7k%E>kOZ%{pMvO?HmV`=Ay~#VB|SCNDZE{8-RH)3}tbx(kY=~!O(c!Pi17i zF)S>qzR16yly$cA@0cbb`E{sItJaEwg3@x1)CK>SMY2H*L{qe^(ce;gN?_!$UPvmM z97aJgjtl)!3zbJgC4mg|+;msCf{EIiDdn5pNL~0@N~m2#hHbZI;q#ww+V5S)bwoFN zzbU4={Cf)Lsi2gYm=L8uReoSl)j9NN)EzyeSV_Zzs&Q$khmlp{AeFt49GCPK9OXPu zn*ora^KTm~#>D?kNA>S~yVz9bo}j1Q{775;6esQym$g2|GIYPH4&30VNeSRxb?q*DujA@ z(dZ|QAKyH^IgNSf`6gvfrTOnlM|EB-B)YU29wJ0PNgq+fE!}sk8qFx#9T4w z%bUjlNDGd-Ws_OBtc?{3P`xHpQP!F)58spovER13#j)5u>+Fyth8IUySO|Pqy<^8m zxEOovy7M_kjU54!dcgTjVoyXFgn4E{Hkty-!I8$e&Bd>+F*|vr0LZ@LpfNxuu5xBg z!Y8>ej+{S+2>p!26?BL9KRe8%XkBjxGe3{*icI{|_|fTuSS`;3N1x6YV)TtgdDCBg zox6^l0Qd^8Qg@qnbfM1%UP%}700t@eZ!Kd$APh&=iGW6}uX8`z=uoA-g8oqFn693d zR_t*dwa;$4s-Yua-Ijks*G1SV9KbNj1m}GJrY19Rz}&Ls^a#oJ;L8tU1m`l6^JWpa zje*rv;mOC>L`*lfpQB4-c_3aeNW|J&B6`Pan6weV!1HfX;A?Mfc5_OaNi`*UpQT#d zcGCL4s)2`5Pn1>zr3G$V!f863PBk8p=<%#pim|!taAk;rUD#xaId;DuMn2~}EEk_7 zCSyvVY`~K#*Yl6F+Ed;m&Aa!T^`2G=o}2~4T<5eQ@O+BEPpwEF(D1KN;c;r$!$u>g z$CVk-dM8UECPW6pn(vEft>ova4WwLVt4c0X`F!}**%=SR=3M%!tV~ZPy zB-B5<@)e!`xCLDU6j;glk*XIDRq&9SI$|}@x6cE!I-eo|5hZ;}f}n zULKrGYMhteurqu0wHU}Yt~^90-doq=53cd`=2z*zCNrmTH2909av|S@gY&rcJ;!Ui z^VPyU@(B{y$oCT5AY~rIU}C;2TZ$ zE(KO+zH`UJ?c2cQLzpgJ4T>`*f|7U*JceL==Cky88V^P|k@KB9+ol(zCYt94EOL(@ zalPI4uCe$)FxTG^D|yBj2JYeYZEjp6*u+5~lA4_?_(HpRQCx)_ARvOD9 zcP?G&p%f)OZ0^gUB+3jgaT;-KaYLSmWIwdceac7gxv`#*xv^N~HQskI5>MSHM8Js> zOo4wno9}L@L}@8mYJ@7>_SctjTD3Lad?{jk@@?{y1l&c3BT83LxHri&fex2b@E*em zDKB%WH>%-h7u>Yo4WQ3o`^NaB~3PNgN=*?PCUm1PKX1w3h+!hETid;qOvhitF$ z&)mBX{-y4^G%Qm;x6!O=jFl$g3=!(P8HVBTtDBfraN9_4xC3^uze7xEZwhceGZ z>}3E9U;byRLr?!WUVDcgbo^#E%A`WMz3@a#X2f|DehbmI`1v!JT1LpHyt2(=#O4YR zgWzWFaRIOsby#rl)iMuAmH$v4{2zDV*B zF&DV9WE=d1bS2+WZf+?v$8`648PXNxVmhNvfQ#Kr%0s3=q(kBbb}5M0igyHVlQgEq ztO?2PR7^b$5xuu1__^W5&gb)bN=~3Njz9vxZCzhMM`8f{o^3&Jp3*UuBw~jA!e`&y z{^y5n@dACUF<8n_GfhlYfQlFq5t2wB$PQGGmQT`vpSe#QXPsW~1wGsngg$pl7O=A5F7 ze^!3}ce>%rv)UsbRi%3!c~~1xowgOIlq_!w_h%#H+ILkhj;Z&3D}6-0;^2q9Mb4-}A(>a}0UQK-`c)CtsHg9!(QWG+S>}oG_w=Y@5 z@v-9hPF_;{tTctlo*vs(q%&gE>P{HGKkfK5(Q;3a!|IPm8iPD)_5)7|q{|=1NSFD* z3ql3BbciLZqeO%$EnX~<7p?JRm@g2Bzgi6BT6)$E+(u;BZgT!tal4YQG^9!)SOWXY z-CuZ;QB>dZ@s5+n`g?zc+ilrXnp~X5(n5{M1_U$y$X0q-wVDlIXeM_k{+)=KJaChT zLqI%QHvOy~`gSm%ilzZYD`!xo7yMJH?)HY+>#XGZB~EAOb!0 zcj8hl`fT)uOtmVv6l|WJbNE*0SovyoB)u|sH7``boga`Y{#@%mwiPik_5S?rnr1)c zD!yN<=Y_rk;oV?xTcN=hgY1i3`G9>mv0(^F@cJ6JG=I35-) z@RTy)R|=OS-6eqEE7{iy%OqnSBtb>ZEAHKS#bsI9n4=^kEQ{uyE}Yc3%{XbI-IJE2 zdXt~?LZnsUG>?z6Q1+?6K@EJBLgosE6U~86Iz0<4f{LDUK4TP|%~5|945gTHbdV>( z(hvcELa%u~aonIDa*WK4^^gHO)T0uF2}&;yuc@%9F6?p-`izz5vzjsEDpu`gPisl-M1wOd+^e9*lh@gMkSTlu}Sb8`>k zd}P-TtlRy*G_lv%#uP8beF*TJX|Co~b!l^g9DX~Lp%~9LBwjXb8a^I4bcvU9%L5sj z%0&jamvtc;3?rYdkQ5c7J4cQvTZ5(~?QK=^Wzt>6y6B1zk3KhF&@H^Z4DKl^|xmqkVi$n%I#?ef^`R0lDyOkm(kyU zZFX0z*g^53jD!=r9Fs&&^>UuSfgn!PkRc8WCKb2HW2*QZ7UemTI=nu0IHe%|@vHEr!I-xmAk{cW+xEA#QN_0hlyjvyB;}9aZ2NDkf>jUu25Z?+W;>d)eX_CDyDL5A% zr;CF;5rn7`BMo1x9)3|RPZEAM5m_zcZ^#kFyTHd~8`VK}oA3}A&%Sn@M`dDEwPr-M zkijWB<~|N9SQ;<(&fW9fC3)p&9qmN11|1CkKw?=OfXgm zF}8(}-BgX~zWBm6I9?8zU#6;(`6UYNmy;sxbNv3ai6GSdJ&z;W_v1%HZ#W9bH55b@ zM_}5R9C`Dqe|g}xZ@3vmqtGqWeo~@f*pX(!k-qu=$lnt|#27dOkRm{R3SyMHVHO); zIVMOMfcnrm?h!8r@^eIP9tQaqQWH5M#ePu1G_V2svw$g7D9(EHI$xWhxr_EyT6^h@A}z!;d_yL1wZN&&dPU zJLivXKzt&2tj0W4L%8z@|;4p!-m`qWA>#wMllnve2++2#;KIhRVy^k(c_T{y~xp_oGXu`dp8mGn|!e( z^$$P(gY6~4nQ5O2A)k9fqc=_kM1bY+5HKC)9TLm-?ZZh_Tfj@WFqv9Mv-=5_-$>RZ zLWl%t7UWPt*TdqIw@W+UwdtMs-ijm66Q&}P3FB%il4+tdr|rR)h0|y`avex8Bgb4m zm+#&Y>o$ZPH!_2XU>`p?Nft!rhm!#021s`U>K)=WB?r@|fRE8`xiDbybd$a}w>t`x zlXxS+M6eV&54;CPDnPQJP#4|c8sp6Ju{eP#qTz&ys5$@OHs>J2)Y*}2o+27)F8oE~ z+;tjaEDae|lqh(wfbul+#!tRX9H666mX>xoO958UW^zsjW=a7o;~_)}Ohl05m^)9I zEX;yHODss{_z7l*P?0~uDtO2jg_CZ=*-xG*^7VRoHe_0X$d7cC`;e|ih%*zQL(Vn^ zsgUJ3+zSgJbBH^rbBh={fC{-DyO1QP*UkelJaFV)MRF7%vQg;Hv{$JRCjrM4SjY7@ zpzIP@&}}_e5)6XOqrXkIZ=k8Lz>1AkTiXyrQ=G!M;#DD+mJvSW7N5>g3cH6L+~@x- zMN~o(|bFCp47CXeHCKU6(4>8_J!iTDZ(T=)D(bf zQo!na&}zQy(+N;hQn02rbjwi(OklsE#oDXj{kPzL`8%2$5F**{{MS5VmukCOhcjwg z{<;1gw37S+^^uKKjtSQZFAgd(_q2>2*SkwC4yYL4w0mkdT5S&1qsg`RP%#)HxMDI? z&Iu02)qyG8+eT1R7Ib}|7U~ZT`&FlPCQ{6|SZX6VNGDH!)#=0tO`jZW?qE`PIwf<0 zFRzi$$xx!(-SADf|3s4Kbq3PT<&?%$jkqSy_idgX9c4|B1Q!pgTSCo8it4M^blD%k zunHXs<-KR%j^va2>^fWW|GIVcUqY-mAf`m9KCz8A=IY=Mq}R7NDVkPWRIlh?q(Oq* z|DiH0l)YNavpcStSDeCKtyPS>2{!fdaQC@6S>slm^GrwFx{~8MNgEd?;o{M1Zo{h- z!bp3@&?G`Nm=JZ2I5mtOvX@3EX^V_JjSx(wx*pM?y57(TGe=|te&I%sQITAxoZ{f+8{OdBRXUFMF4j3H$;mBecwN5NFUVN7_80Ub}xZ= z9EnS6q&XV)|7^;rd;6egtqbcXb!qC*?_;f!Sw&Alqb%1jBAZ@N5>i_I&Y)sAtJ)}F zUqaj(Y`fBr;A(gAGUvVdTR4`0IA_+IJ98hm2R5VkmT76c1NWH_`gSvpz7Oa-u?KNe z>hhSO?)J8Qi0bOwA=Wy_Y2dG(aj+ok5+Z#0!jD`-ixy%^Z)#3)NNpM1PZ|;w6_+&3 zjb-(u>(`#oZoMGIOC=zrXKy-&4m)xK7#g@okKsdrS>vI*M_?v67?=UI37Lpc9yvb) zF(*GT0PZ^YO?toYL--Y|kh^++SFNPS?f7K3f9?-=?OvHd#5=1?g&OS{8f6vcbc}P3 zMH$H?+<#D+Xz0!l<>RH24~N(FN5SMK-H@_Sx<_gr)SLwEo1Fl&V2%=SFms}>bTEy| zZNQ}J67m#?;5N=XsvCVRN~8O|8LGrMQ&BH&1(Uy0Q%+lR-CI4^q~@G=N;8fRT%Ib zGt|z1*T})E)I7`KS6a)Mt>D5z{tduRX~4j9P#YTbJPUT7yy!t^IT|i%26hTn^v$MM zb^U&TYN-4db6ACRj*|{Z{?0e`>#2B|jf3(~C?TjI>ZQQ|9#{^+JmeLYGHl#@)?+0h zVaCm?Yr|9r$^MwVud4#g>w=U@Pr2+tvyZcEn5;8*Sr_Q6(;ryp<{*uhapJytdG|At zPX|WTS<6N9z`sWeafq{@c{bg6Pr7&C zWb!63*!QTW_WJU3%U%O(ihA@(a2YhUY{i4Y0@D}S7Muxb;%&*G+8#uWGCRNf0O?%p zob^DBIT^q?=bF_|=)Nd8>HOz-wp^+QDEE%HQ6)BgprYO8F>|Sm&%U-&^;OjUd}XzJ zTj#uO4~N@CXGXIGPrdA&vWBIt!#r@XM|02zZnE@#hLBAhAPVu%c!ItCV83C~K;+Iw z+$K>L5H!P;j`f4SUaRrc`B2er+e!d%jK+fEo%P$pa;43PV=!M>V zgxUk2-cWsg6-q6AHZ#XU&aHq+P%vSAF=%sAv^ckHvu>)nZ>3EogqDJOF7X@;vhpLs zr~ZD)lk&AEvs7(7k|g-xqr&GaB{2i!?foGRZ2Bo1qw+ycd^DLq3=bq8EmGNEhJGZ% zDS!?yJc0=4>4%sT7C9fTn9o7EFTMpcp{F*aCQAFM1^r@$VDZ$9-KSJC_BHD5A+_!( zlk%%;wK+nk{gk)S``=Op-Z�Ih2@$;s65^8LUe868_aDlZ3T&x$5=DW=Bb_ysfl0 z$F&d%r2q4PpJqZP#bEj6thu?B7Z0K4c&Ovir#kht#IfhD^`teI6-dwjIW9$h%IHnkM;$qqc`OmOw(!^I66mu{#1*j`19FM+L!sS zG<}l!7gk*jb9A?`<~NF^wM2g8woH5zu)c&)JqNzL+hVxWG%y-p&XaWZ;FRv+e){wK zFw$j-jlwH?@N*jw(L2x=Hx@H7o9ME)mV}R|Lb#Vz;@;eNCw$}G+l%kWMumBycMvQy>-F~Ev~Zr(t+p? zNeX~hdo-Vq@4Oa{1swfosHa=-z3Vo^I#nJ^OOJ{BBY}A zx+&?`TJU0O9Lz!tW<_K9UmDT*12!N+om#%{AN>s%{@%axbl?&#iVJr#`4C-U=$Xnz zH7ms%N;1=U6~N61T93D-Fevoh&gMOHdj%(kMcS}5z$);m1vkCQb@=X>kE zedd<9f$!er{8Esi2-tU&;@V9{_i4nw+>^jh4BZFAzSig@R`RBB)esf@$I{0#g?}dg zNkU3b<;a>0ZPlD*YT8_vcPVwghd!&Tq4t=MtQRg+5&e~fCUt1pJ_8G}LX2Kx?2kJ& zMt`u4RmznyYEH*^j3ncZ8l`a`lJYo)I(|m z6l{-Pi3&{8tg@CgiIX;0=f3kd@@J+X%Q*K@TZW6Jisq92Ra)i}J`= zk)1FgeYmO4Bn>Mywe)%P@?_vDbtQ6AZzA4?t!&=i-5JLASNi`6XqEV})pRBiYg=FO zjVI%Zq=NElJUU~VrgF-Z#~qq${O=wQ5fmx0R~*EnMwpU4GFsocBx;|Pxp)jERi$~$ z7S&LVrt!k0yKoja^*^#CkvvsS9!>J&JoY9MbbTYeuGGT)K9T;6p}T{qcTIPPaC%o5 zRCE<0tyVN0p*Df5_Nzs{LP*n$Nq=wMa`;IOKd#a(LC8MTlr2W6mkD`gWj?W$N-)3Z zSB&e@x;3nFR`*1`9ro#0ATd*+`LjRLe*z_m5F52HN|ox%3r;bXdNN|5lwZyWtiT5_PD5FqlxP z#LU#C)Yu=`=G2bD=k*DdgeBa%%zUH9iGYh_bLmXd?}&BBv_JmW2cHg$1q$}7&q~XJ zK>r`__W$C({a>UwDDeLS;j{x;1e^(4+Lk5+@_?nIxxrGV#@Qpt91#Vm*(7ZB(tCC$$G9Jio+p;vF)_C%4Xs&9{Zr3nUa zrYs^H?}eaA=(l6DJxrJa>fo1Xlnmtw!)pmDKO)oQc$d_@k(?v*ensul;Pt;KiMF>m zIT8hEOSP#qP8W#iSRqoSCTW7`D|>|!;At3I)GRfv^HHJ(8P83Z1Xit(`B1_tL9i4%h#69Yc8Qx3!O2`%dPigVbNyU z3EkXDoN>m7u~r@&A0;#?dN)KLGtT64ZgG;Qej4rmHrL#_G`;ZEuM|9>wHUoS_nHdG zcQ6vTNakw%_NV{kKZ!pX;$SKa-cd^py(68n>=J~;S*Usrxy3WtZ0O3>QDobs~Zamm{HHsC_ zb(%dsi7=bo0L4g%>Log;L;_y4)8$^$5EIR)+jZwm&5Qk{X-qrwFB0a$X1}7ODL3?| z4)Q~Tw z>^Ys2%4_gJ6fnl2BE=|wQ{*)$cHdjpm3nVTukk-gl3(Ku;nI%BH5Qm^ncI@p47|fx zvo?7g+!ZE!>%6n?0;76zYFbUJH#`HFS&Fh!SNK&ld#pc^#2%sqvOI#+(eNaG+fkw1 zoFlZ5BMv7ApshqLzmRrlfeJ%4ckiEN>$#fz^x`x5?zO_!5X@KUX8Gz6em;uK=#eXg z8&gu1wt=CWj3V0OO*P&%^GcxSncw;JI23J`FtWpAgpeyGX!}`zpyT*b9SawhO=a6O9_=jmyBu#nqR#(30TA!rY_G=(`*e8hPqQ z_RbQ8yr#QECC5PtY2tZut|X^Yctsp%TExkOj0E=%%_^=flz1z|R7tlO zM029BSE@G>oA4k6CpaFB<!Ah#T(U@m3WiW1KJ7Ji2V54U^vAysZHc3jk3Tucq*1(& zrrhS-gOY7fPME1&Qh1 z1ff}XB&|=EJl>avUFh&Q%~PucJ?3kO*!OfAE=)rV8VPi#z8X_>%D5~#B68#zeeIb} zCfC17wJ=dblrK)|IZ4JyanTk*Voj){B{&oihVWuJa84ExIv4Q#tSztZ^tI9d4v})m z@`8BPPP%=bS{in_;k1J{)6YOHk9WNepGa}%JYUVO2K#YXBKm_)7E&BxjG77d7}v$i z*p91pNKkyMO@Jer<7-YN@DcOGBob)$N#j;MjfF#crzY?x)4)hXV(9Xyti;{$yW-iw z*>#3u+v(p1>kU8G7D3XXibX|nojy`WfX2MDta#sG`bA|k=b=erav}gaA8&(Cir*%> zw|y2UO06;cPjJQsT6K1bY^otGGT)7)b6n5OET=;A0Qr)dxcw^X?Pis&U$ z-Qz*^VD-Pc*4D>UbOnt+*Qz+-rB%=OO)KwTHv37r@%lQ5dxH*>*I~~&mQ55^Ive79 zSB)s7bFQE!bQofc=x$!nGTfd&%`|oT&4;;iC_T~@ykMeUOo5~)1Bq#tw3`B*^Ae*> zlkBHNPNE2h1_&#;>8iBdt_!|dioX{gBaU>UfCX^-mhEeX7%!8H&ioE1zS+I`X%GVD zzKz%14Ie7FiSMuTfpMHOG~#c@r>IN6)VB!1p~}=1S}#mCjzoLQ$8S1-_(qyK4d7bA zu4}8`%ylC-!MNz(uDK@0PP4>IW8Xyxw`c-IKr9YDQfQm|4|c`-_Q(eK}?_=_CXh~5)+PhIzc2JHt_AqKR z2dFc8s+Z3#)#s|-+(fC%gYG`veC%aQX;KfYP`t2EnQ?O!+?usGR=~T9Oy2?j`A9(! znGudRneP-CBIv(QPUGRveH9jg*2{X4(OyL2(GNrvSssG#puAVK{~w!}D0*x@)wHLQ zI|3M~?cI8xj5oH)INWN_bh*5tgRbPhg`fYVEQAIbY&QjTBnM`EZw~xjsl3F5N$vnp zf!R4zadVJE7cM#5LIUl&GR(<%5^r>62-P;yES=`-w5CCwaYMx9Rcv_IP7m?jsUMSl zZJcfm-NL8@w4Lf!PgL14#H^o2`y@wA($sMLZ{Zld;BTiH`~Bej@4? z4iSpy$k>aUp~@2y&0VV_xI2#y!|(U+fwKvwViL8OJ#T zV0S|@x_vWt0qoO|xK#%F!4J#}R?<%#*WMn+FeO4bCF1XyP#1D&x>4vqc$O0b7D4Bj zPL4u4ah7ybxP_>5@fZ}0N|gsHC&`^5NN)lxJQu{b;XYF>#f(3vT*YBa0f!lb9q=4r z7T5xSzUqK9*TTH^((aJb2U(bPmS}v0;1U5nLr-t6$MQvGXsL01p<~zZm`-1=qd&9p zQC#2gSY{7;cn7%xSY5<|Th9MLR9;Y8r+w>~HtS2OeIxRn%M z9l0Ai)LH=HMu4d^3?9f>8+XP>li(N|cr=O4wu0mskb*R*1ulU^bE%+-F8i=Q71B1v zvb*C(m@pS_19q2HAl|?wK2^5v$MyUWne&sCAv2YP#=~sE`(OrBc(*(K2uB#7iI13t}#|YZ|2WQpo z(jowVb_Jm(4aDXJ2jOrFJniBV;%K};4=&(yT2y7Q zTBY|Z`#TM@z(9Xwpp6v^-uIS&WRX^w`V(YS7$f$J?i~slNdXXZ%dwOV)XX=5;C)ft zQXo|CGH)tp+Zf&F9bK=xb}N;$m2uP8L0g7oqeF&W!E;0aKFjqmIb5aCdHBsY0Tdi+ zaD%kUy74K+@@aAk=I|BvxFT0~WR>nTm)^T714ZB$r9o@6>^p#6C16(Z*oxxnT{h%L z!me&$*vq#=EJQvF9!cQ{A|u!fm#urKwwI_2{I2U1Oiu`>aRX)kwFC5BO0XflMYzQ3 zCw)OS`m7(yCJhpP70e$FHUr?{boMo+M07)rF(5(_MZcXy?`&|Uyu-@By|LgIjp|c- zMZ)ffaB1|FeIYdbA~yV?H=Jl}<-gqk#^-DSjWd+;>SC^+c%Y%Lv2~*{nZ-y35RH3? zZan8BQgh8^%r*i0l@`taK8oLxj&DK_?fG)PmKI{bk z?$yI$kO2jDg@Q=jg9|Mq94HVX36{T{HonQ(Ohdn-v|LPW*(OI1+qErGa`s78yBpcx zr@34#8@~576gRfs7AZVLVd)k*6^-Ta_gMIE>?)nnNJn*AH09G#Y?yC|iB_F4eNJnu ze}g%8#C2;DjdE#2=~1PW3@$nJ+*rZzkG8MUy7kUP*KP!vZbUDpLo5Jz1P=8#;<~#+ zLV{lL9ol8r)E3MBwsl-kX$1N?z5Gjb=T>j0i+%%`*7~Qf!N8wOsuvB8>DqN}tW9Uk zGSRI-cW3lKBMHrh{$}yOVt(5;vt8wV`@%Q6YE11`Wc!^rZLLq~%`~o0hsBM0=Py?l zM3>QWgP1UfWQZvX9z!fH+X?;B0L#L2w%|}lP6w^hF_x~_Pt10$2?uHQ&Rgl(I(=O2 zC9N0UciwAi{Z8ikNvLM(pdX}mS-isrzVFIsAD<>vD}ZUGbgwYF-;l82J?tk|`@;L~ zHyiCyzuP1A2l$VmwIi;kuh9pALHPRtz2)|}9aM2qjW7ZhL@aJ+#U8|PX6?m(>Xn;f zJoxke!7I}6HU)E^-o)BRF9EF%N?bX8T)%0ZKZ;vjT>HOAk7KR69_TpEGm``cs()u- zWmhv(j7F?}t@0C0F*^G!6|$;(rudIb-1&jjFD$ zSCcv8OPXTHi0!vhS%1x}$F>%cpHng)%9Ox6Vd=xUhg>Sv6T>gu~ zM3geU4f;{a{iPONBlM(IN=r>+S8OR`^f&6dRZ|ZNBNaP*K;t?f%zYyBzQIo}KO5#B zH4T7{tS|>OW4moEwXRkc?!3dk!C|DDuigr%or{;e9?JQs&Y^n))xvDNCNcaj7X5}Y zbQptGiop)iIC~lg9?{TmXgL}#t=+R+2<7qK*%{B>nLh-s_rkND;a%^d9t!>GY0{gX zbVbj_U_X%=^9FMVdlOF$##G!U1H5?WI7fyE3$urNXcpdpTSx9fVPO`sH-K*hOzD1u zpXd(h=GB^Rw_hB2k5RFHEdK|)?8b$?-W0CC&@RgLjx@u4cLu3E&STvmS%g`|&GHBK z{Z$&9L|cZuADU$j$hkdUP@a?jyC_{YrxG-&8Z#GkVj&cciBO7cX5RQ2!c`Z2Syjnh zRe3n-cTXMKvOTeh4Psi&4PT3!3$RDSE<8DZp&+i8UCBOwM{H?^HXj@~{3*RrD3j5s zH(-vzEW6EpqCA$fp35tnI~KEc`^4h2XG@x5=<99zQ+t@ipvD7wW6<$oDYr?qgJHvJ z*AQX4oy0O#0a~+$mv`G)l&9fGEQ7yb6%LD@e_#)j0w2rcz?kDnIYM-O}+Q+ z*&k-5*C*uT80|spr1jy5xHYNfHI+Ye1Aoz)C)BQn8CZx6NXD)qTn!b1Uc~;v&ho6= zt33W(Hg`=0VA0mws|Q$&b_FE1^H~+Sc?Mzid@G1+gWSce$ILTHmW|KlW*^Axc1I~K z%EvyIjeD^ax1QuSd3|ni*=-wmm=a#mAv)I;-eqbfwhg9t!DARVnlTYG=tr2R4|m&v z4~qwTFGT*Krd=1ONL=DASaeWpx!8PXz}Dci2Gd^|!8aT0?midFZ2W|Gjo!tmmOVaD znG0K=_=$N!Y{Iv!Mq{N#Wr`zt-t)lSZ$tOH4S>&dSVXv zJ9lYtUCXeOZ>p@@?VT&EVMjheuhRHJ^Tc?0$G-9rUSP>u(!>$)@o07t5uaR&$>; z%ID^p=s`T^joGfo(#EbE+dAddV?SQ1_*_aKl#c#cKbxmvt_4VnJU>Tn9IrzK88Dj}cjv|C-`2p~rx)4+FoRz>csv zzB|B}{GYFZ{qNg?8s7}$@La++HvSO4vmg2V=fmIa4`Z)hdbRdmu(4F7ytnyV;EQj< zy;#|(a=}tA8}!sqW>;76m$ExQZ^Z162Ov^5ey8mHPG+F4=>H(zdUoRB@Ua>69ULmM zb@!ag0r!i^&y|LCt>Het7iN&WfG zGN7^JN~89zPt6&UBTY-KzhHk}90L0$)sewf+C|S9Y9rT`>$C%&SNdJ$ICiu@>f5&u z+XeOtr$AOPg9{>>4M5DhrL^C&XPfjx-M)-n6F_hdKT zsE6*q z;0|w1jAopDz+L8YVS9>LQ@ffYx_SA@HQXyIr($E?ccrL#xh)^b)J8$cMP9`;{mWbe!Rcu9P!yrq0Z+2Gr;zw>I7TTNCcrE{%5 z%amP9e_c3lQI#VWv)gN{sM7y3r=j61$Zj@JXx3D;A~F33~F^GJtc}i zfKq%wSz2EGF3sOoFLxxFF^=34jW9oxkftVBl;KxfczKdqTQ;|JVR^xF`-^o+d2?Ix z^DCA6-a?@-pDs^VRT`yRI)QGcA1)Dw6fBNLi9BCcj1tYPEA`E3NIH9LmGuPy(imFrSA* z$0hWNr8O|HI5E(uvdGA%UHwtrXQ=Pd$bI&Xg`Shc`a15(r|tJER1suUbH!RmJsua3cg~xz zpIS05(d_GcOl0rNGmUF7?Dcxof30e`CugGN26$rG@EDUQB7>)Dbg5))ctUPGHc7Z*>Ab4x{B9-9ZQKu16IntV2U2X{ zd^F7jal~t6d2WG6?KRg|^T`rDDRKrTcEzmy3*51S-G)fTsFg(@?Xs`D1<9U5^N0y| zKmVH`5w*HApik#6Ip~4s6t(^x_qTzCa9u@jbNc{btZfLmu_d$ssj_3o_YM$%8i`oU zPe@(gh^Lrp6e{mf(S-oC;}}%x4dan|PLiO|miIA3MnJMn2e|*&M_nR`-NVU^auyx2 zpZ_tgKG^0_{McS}&DZIH=x>ek7Flw+^m-nT@o444(?`GjNIr(3!U#8+nS3j+ZhSxd zeLLZ32h{aPlI?6;(tJ7{3Q`$DI^qWUtHN%p_1hlO001t5drszj8 ztQS5}ia1ocUi>lLZr0;*sU7jS<5naj+4#oGuL{V@JKie4384%lE(<1z+LV4tM(HPA zFp|o*%S=_lSHL7zhzKudFn2R?=Gta1Pdh{??}F)($Uf}V7Tp345iY2BJsGaNWBSa3 zFH+eI6kowgB^ku?pO{T|)R}QUHPgfT;p)*bWvN$d;8@?LfQo+Q&K0V>%^OA-7J6Ue z0>8cX%pw?oY7xPFbP7~zj|o49_vfMgV)nn{y(WggqweDVi}0RT=p^9L%62Vv+yq=Jy=VnVl|%vabfyJK0S{A1}>R%d?x>sN-I z(GFTZ^hG&#B6VpPiDc^6&|ys_R+* zMNl^KPW>q1+yFh)9@vt=Q!%N)XC0xS2{TH9g1ozG5M%V9FgRc8rC)^3&VcZvLeQUL z*F9(J8-K)zaa^P72NtvuxsNq@7u?<4P3-v{h08!i#j6Qf>vnaYr%!+rpm&)f0`uUDZ<^|&m!9szATF+!} z`BNu~sGGfakGtr68)=1;;9sv0QJXQlp1e;YdnB>(Fbz%hM z7(NJLxSPdi6@j*Nj~=+5a$A)tb-g>Z#{4^7L*lIxp@5C{k~rq`7hVoM3qF0YGzgpDYjr_5$0PXqD*_wA99Tncgz z;3F9d;;9?iAQ%LUGfI7LlSC@y{OWmcd!BO84;-KEMF2)YrM=9xal|A*@}vq7z`BT} zdn5cw6?c9ODOA@Rl{M<`^@&H_KGQ%Sw!20|3~*eCgv#Iv)OHy(+7v&a3v)WH?KJ}K z>Ah4si1an!a~krpXNUn{p+6@NPkHIt(lZP-Kz6RwUta(WZtD1I4Y%l!j@L;E)vfMD|cP zgbcV0C=CXHHlN{W0x-fk9&R_}^`}x~gICyC!2u9;tXJB4s^01f;>J<4I~w04OqVJd zAjrn0YpqF~Af6SFdL;Cky}nJK@^9yKdf-H9de-8m4#eJyu3;tSsw!TRe2xXd*LQOc z)S&GLkn#g?nuYe)*(PHHo>@wGf>|1L2CfdiU1{he1otTfp-*#fI9m#kXJ}uChOQ3k zC=Vc=%z|&9LhBeE3bXJ0NsL?3l&cMgV}nt=npJeO{wsT{z9YJ?tBu5Bm{C0(8&y!< z70@sBL3A}`cG2pgF{MG7(zt7)t1-ZV7-!p8{LNIa%yYskR4KE$nf^?77U6{i=sGWm zOXn{BrIn7GS^eT%P@r)LnkoP!3=ULF*edUoKD?}CrRb&H_1n1bxAE^y)|bzBV(2{I z6%+3B)*o=5tFt$#-?e&VZ+1{>S=TWr09dv*Q>E%BweU0h`W&(DV6KdFKf}7aydDG_ zP;jy7B~_NWv4D&#CFvK1uO4iXhzsdSIjU4?H)@LwKU}AtbYME;=z=;F#(aaW}f!Ly->ImWmfisAe>yr&S3RLmo zsfUY{#4W2v0{~}F0jms1TMoKS13V<~338GpcwSs8oi#L}6k7b|&*Lh}+49A5C z#q2;%DT=E}CisN=$LG;33g-%dS)m~5GdSaO0wxqav7wO}ihCyYL>^UyZYD!Wv?5#2 zLUR1f;-xpJ0W$GF0zrHX>!4VBvl9TQ(0*NX=(mx))d{L~mU#tBHSOdXa|S$oy#so$$l$IXIA1x_5dk29i;C9W{<*m!2GNX03l8n6Hm*?7^YZJ54{3G z3%in+la|QNf^1MpQ3ouEdn&d9682?>#~hG&Gc!%#LZ}j~8W}zWr)0zS;sZ=>j5B%vF{w)@8K9 z?6`^G6Z9lY523Q~WfMD%NQ_JD1-B}2?u55nY}WGKr~k7HEg13nN2t6Zc8OWtiCGJu zn=Mj;oU~uAdL#iUi*fcmdULu+IuP{*z|#`Wib>v;s9cbjtVKFR?L7ZdH!@I z`9dm0n*B`_)Qxkx^zFcb|1VKnWBrRUu=Cp``zxhQW=%5xk%%v3Y1ZIdeaa274KO@j z*c24GU^S#~wxxNYC28Y8W1y^xtbG88Pm)J!c(|6FLG(L^;$O&0n(meA?!TzplD3q6KN)p1t*=fI`xb(ep+<&{TS$)FZy8~v|T{cPR>zyX?cj?mmZq;9uVylSba)2-c} zT5q1Y05^?u01?m}x8xhRRE#ZQ%BB{=mwJ@=Qa=qEH90x& zFNc3^%eC_qfB$CufTfTF_ai3}QxkO90Oceo>8AGgSF@UKuk%k(GMds z$6yjFul6=5c+2A3>)Q`OCa+$Wl zBHHD0xEtPg&HeA{zT^7X_Wp@C_rv7dYe^T#i3A#0oK6+OQ@_>Bz@6A9Zp^!U8s=+T zYB$g(8{lUOl6HiRrt$=}WaetcivnOa7;u;mUn)p`TYxbvjH77Yf1yH7bgx%P2H7Oo z6ebKkRlgpXBJ4lW6&%s|vD(p})Oj%~D~sTq;zvlCSx;sQjfu4&5h7JoHb_hKV#d+n zB>&6qe4y)6<9sWiWAYGZvci(D$2Vqy93}qBH!9@$QpAy$aI#bXM|W+jscXFB+^HaO z1jK>{FY^&;i3$d#egrI@0l)m-=3Uh6`dH<-J$gTd!$7s-tD0IvrQ+vhc3?)K#~&8_ z;>?(9>)8*CL15W&aU~c+1fZikx9~`w;QvF>UAQ&%zkL8-!eFDj$6zpEAPo}AMhHlk zq>K(xX(@GVqmc$_NkPidD5zsJA_5j+&{852ihljcv*#~3*LBXh?sKmDbKmcmIMb)w zyONEGf;qb)-z}H|YypBd=>0@4(?m(?|5Jv*n9mRH>{s3qQ|P#nA{lX}+IvI6m0A5( z$ezPawd2TBGTT}EM%x18mP2h}V2RK}Ucp3d4l%2tShO&*gi6)d|P!QDs1Jsdfci2%5xfkIT$eM)rv z?^Hr;Ix@)8p8)j_1l_!|^r?<7lCj24o zmu%)qJhAxp>s!^bf2u$H+JnT@j9T5kZRHfpS{)aMAwe&2MoY~28XF(y7~znipz~Ew z{c(r~^}hJ(DdrL4IxW?Lkqv4JLe4}BYyajA?d2_e)3Ol>2;5}q1K56{=*cG0U-iX= z3OXmftLkM-4LTXR8C5%WD@K`lG$m!c;Us0Y^sej?Ez*%BApdBEIUd05%n5a-K}@Rt zs8T@+^CU$KSRV=9_*ot=8J~4G%k_RP^a-d&&Ed~p<-iKkJO*Arm8S&w6oP_{~f>kcmMUTgD<~^v!mi}71vBA z+>YXFYD{j0@pdl*gV*cnad1%UHQDxuHo>_*mrrSJO4rUmKw5mpT{nbc8KU|x@q28{iyin z{rifZTVZQ)K0nh-ny!?n;)22{V_CwgzF6tm90=qL#=#q-PMakrLiiai$xtuY17~Wq zV!r0}ji<#m*XD*+psUkMJVj$MK!R}Rh)R%W{9<{77!P#Pm z9m|J_KK(tS?pqPBy*mHfdHTu5{*TPZ#3AE!ew1F0^wFngg zL;uTBJE7TGvR3Z49lxb{LvZaT93&Px{}NI6737WH(;xnPNzXmdfaI&OCk`%qsfBFX zzp!6DF9ZjzvAc&?tliU^?;D>|{NQ(JE<&)t4RdL{1zcs7Q(hm0q@ACkfimT2vtVuu z14F@t0%^9?O<$jBot^b$H%f2Xsi&=W5;$A;?0{m=PBKKt$dm@jZ@HEn6!UOci0_*e zIy(BH0T+c>k%jt4)LPH*!&GPc3)h}VebRj&Q_GfdPW5O@p@Y)FEPgX|Y>S1zvYUyp=vo=lH;8VC);He& znyEByn6(AhzJEXk|LPOI%Hfj|QSH9=h}ZhRBi(9rPx_9g&rij4dS}cux*;;B##blN z_mL!+kd0^ zUyrUu9{m{mma3WY@i}cRb;UZ>TR*siy06x|5L3o6vzGNA z`;)I#%}R6o42(~)?QPAJVrtiHGXM3^u#w%axg7JyN zdY?;>W-pGzgMHSdvsg)egg4@{%-L%Q4?^v4nK(kdxVkOCfP8n#hBu=|B`bWLe7jGz zd<7+~(z8&jO(waiw|L##%w3C{zsB?vkHK?=*HX~DUSFE-V`Ey#Zps-8ulNJh5U-T2 zJ#Y`!L*HDO65A2mP%fP{lGXX|S&d-ag6Em|2_~exISnh!JZnQaKlRBFzzL~@e6@&nwDT#`AQj#4q^xh;(bwU$E56CC9T~+pe+9C#O#f#pSqZM2@HFDjOVKGATw~Ce>J3-LzHG7im3XYta^^3Uf`BE7Hvlt&WMpS8VV}3hJe&AjIm;{ zdX2{$H@B|I$`EZ)g#MZF#f8)Pb5E-?3rk5Ns(xQR7M{E*pNx2%;1{4q1ZFxBOsVfo z1I~@FWZXa)ioAj4cKXIN=%F==FIS{k*c~}E29vAJAytlP#c6`ZZ&OpdJdKA~@3p5l zCw}x6>1qley77labg6H2j4+#Z)nSNtFJy$k4F6a`!Z(ok_ClLiJ~(1-QPVjAB7bO1 zK!5=6$3_LE0?D2+e|UD@|Inr)y@iBmmFpwxd)g&o2p7HdyT6u#F-$e4Z|%C8XLtdc znAlhHPGQzjbDMSy(R$KK zAPW{F8Eg1Bt}_n)mYbHjJO_era)}1 zbn@UoX?lA2UseK)AO@nX>ODW4)eke4css|OXx{<%q}2%YAulPm!80$$pq|cs8w$;i zcSjfs(%<^2g{pi^LC^eV^&sAmfEa9EB(8FI3z}&6iBz`*qDPnCv0i~NSjW=<#YMqU zm6!yCABG&AHQe9%PmxS2k%Pn6_?0M@SmIY!8jn!)J~yF?jKr?6M(=|}^r{1FifaUjpH1|lO}1+P zFlnnp&a!%&-GfVLmSelA6y%aI5GhRcmQcQ#8J7V8eNOR6V&m!`c_bbrV1qn9oUSvzKJ`mW}89e_;~q#Xc$? zLRnHu$OwpGR|X`qM%sK;NRV8=x<6WmAIduK^5ppa7xQhd|M3Odj;B90H&Ykn*d3F? zAI2+FL=iyP`EjqUis*}T#A1&4Ybx^fvii;z=KxU&{(^Q5!|0ERLIfPYFOV-1$D8S~ zFSoQGRsP+hT(+;`U}J$QBtm&5G&WlT&?`qBxTr-MYU?2$NoM`e@ykh+@xSV-Wsebu z@!Bp8M;dMWYcBkh+oMPd zjm09#u+tpEXuXHHmW=p-ZyWBdQF1Edj3>>HYinpagMHAOR?n0OXmfmD6E>aK^}`?wSivYYvQ; zQx{f+NhF13kOG!`*(Qr}FdDj?DeYRqQd%|no9V$`^=&L!hG8F_0)_rEIz-aqIY4ni zkWj&(8XwnRTkdBQ;2$|vSCGPN8=lDAO8rdZoz~A%dU)jU%K=f*_em(8^-@81oN$lO zh5a?rzdnLJ9+2efv~H4Q7hdWZuUc^L@<$WV&FW-`q|u_}iVz=n(~vXmo>HC9@7zR} zeVmX(CEA%JiXfSpznxjRB6Y#LzzizJ%3R62(tF#E)4#-+$=ynow6`T)-vtyKkmA99 zv~fi$2%|5W6ferrC5d>XiJ|45~V?coe>avYfubH5}$&j zs1itLe1bkbhphqyow+lJ_#w?+?UHnLbwcm&tUbZhrS3CB4{W|pl2gVjD&q$jp4MNW zI1!~s_ep#938M4x0)2JinHXldCf&BaYQ}Twzzp}w&?z|8iSspE31Rt@Md+b~A{As( z;~)G7hys9+r|y`*LbK0!Wdd028?ZfINIS^)@o_?F``WE66k}*A8%?R}o z7aCiu`uQot$dG#7u<|KLZkcq>VoPD~EAqhowQ&I!fQg_@>8EnAn7eSz zZEbB^3}c6i=1AwNngFLDg&C{jQhMKOl*#rDgAEeOnsIB8sXT6s|3|+jB#B>{M z4SQ$f2X`TYs{lJ}E3+9rTa_Tm^}XcK_1uoOAys#9m6_ovmaO{`s<799MsDY{-`5V2 zH>|XVezFK#&%Md?+Vp=cL8WKGVNLQ1)E$W%cty%~@m2co+2G_mi7C&w+jg34vYgYR z@aF<;&KFzi5mQ}^u-e4&JJKm5`%~SgELB^~WBVyO49Zb{ONUBFLgXYl>CgX=wB8P> z8ZVglGjt`wIJrY!$(Ph@w>7Xg zC^6qeyW?TQRNv`w{V{93&Geu|7m0D>KuP4weH87gq=m{>m#r~PY567j<~taLkBd%Y zpvmL^$vk-eRnrvA!z3zu6)#2opqxOOenMB!W>az=+DA%rzOV1@y4LtJf0RU4Hyu)i z(Uf= zpVwT!QL|WdePe&2W@MODzvQ$x_Q&k?;n1g!p&_iHwkcTyLDn!Ds)g+DHZHw!He4_m zUr7iiT{V8qBx%-eWbUkVztpFxqY01$(z%0Aux02qKGty_-rkB8txCH;ar`lOl)B+w z)9~Gd60U~l4ICK( zx5|xKI}8Ldwe{zroNJ;FS9H=1=`lTGea)s)GH-(tuWWN32|zvfX7mH)=k5S??fvaR zdQ!#C`*XVw&sO#pfLa8)T282W0uyg-5}-`+`@c4ByxC{FFrXF{93S$a!w_X>xt!pIM?JIqN<3JgEHKFzH+f>CXkw?#Pwm zt9YyDH-CGH@tGt_UBYp_{eI|?2;i-foyTcx?S4ZHDeJXshYEZHeIKs;77)Y4tFW@D zO2u$|ze7}r zrAFzD49f1{4FGREq?lVM?X(Yr)RaH%TskGH2-arnAcjymI6j9&0U}UHkiId2lQN2A zfNk@C$5>u(T{5=d;^zp5eFrE6Z_JTQ%f8F5AIOZ$?6MeOU^E`oA(|6}@m-fV_Ql8~ zS_%N!c?UV9fn1S;oP2bYQpm{D@KYFv_9pM^UBz+Gv z${MZ_4}8-dD4}>iUA^g#m*;n5846xT4`1K5DF*2QAnEV^2h_cT67$9J`~|T8rEzcq zx%6=S#W=ygI200Z<@!_hqm^!i$+zgA0ST&sYZ2r*JXS9di|M^1@GX#IC_p>(Qb1HS zo?ROYRvHH~&^$#EklQ5iSw*vwyG7?#G6mAW@0DtQd8+0RZ=Rzm`yDTSl#fJ zj14J-n*Yy};>4{}K?aipjVYTc*W76)DE}5QeT=`qO2*&eZIz$+s__*st~O zl&q0EI+?!r7KkXyDo7?a4}}rBA!q&vMpMdElDP&*XzTFLlOe5wA+5cit`h9YZmU4+ zwi%_Jz*|NSg4|CQpatARGE z%hMwRkPX33NLU{)$F~{Q>kc2Ho{ct`UZYlCiNH`#k(?xPcM_oPA)rd8T101$k5I!i z$Z-JRQpcgoaCI*R#RhO>2Fi$_qbT@X+1{%n{Y-1ke`?NR8g+kNO^wrigD(s)bZOBP zB!ivc)Lr3b-pNxGN82c|G z;2=IFuCeyNh%f7?a$U5x)@^Bx;hI0wF!e(dQ%wR@;`1OHp{G_SFZs`%e$KGcJEj$O zj@NpB<{y5znG%@NqqKFt;CuJm3EfB^>71s`@t1>QTMN4-iQVzPYHs!e2#ErS3xa}w z)JZs@^@Jz)`=4CAm7sB9cRRG>i}c2qb!2h;+}PQN_$%6hQq2zzz%P#C8O2;Z2QNB+ zt73qKMy$DT!1b3nj5PR`WJ;&tv^dFdxGX#%^YI9WAvPp#_POpyo>&=&h)DZ?l=p*T z*o!$GU&IQ4-AA{9cpzWSEe^m1Uf2bGVxrK;j#r-IYo5+SktWvD=>X;D4fd$shwviJdV`%43!G$Y<=v)uH%h8VjfL^#!Wm zoD!>GPuNfRbyH+m9WlJrtWWvL^b`(n7L z=Ji@7JCLb=jZskj%XjA{E_ge<@xQ*L|D|}4n>T$}S}%@4)vdGeVyy;?RSZpnt@JhD zm|THthPZYGzL}IWWI~iQ%|4lAGnRL1nTVA<1P44`Sstu7pWOL#%dydfTonjZcX8i% zxu^Q_AvNux}tO_1e%5B}pMX`of`1iFQPLO!QcTyj0{Ye;9B>;u|?w-%~u8JCjYuVHUmJ% zhwCmm|27fvFSdQfYw!DGq%&mL7A6V+mzx@-nRwd>^dqrmC|9dLl=>oXpY>b=0;*1v z{dU4yR%Im}4^V>W|6mqPHz)N~l?G2{HpcylXzF>tXr}uudeN*&iv%%*EBY4XBE%F5 zGI( zUyF3(jnFwUcouY~@@ga+$)9K1;w<%84-I{*(0OI(GpoHJ;#Y01wQu|GM2l? z@jxoV2lq0fvZL}BOR?!CK!NvVN1HxIH&PsP{q7N*;MtKvB0hP@QEEg9v|X{1rjK1n4~ARi+g1t78utJ1A@c@( zP($IqrHSUDP0H#ZJQQFRmYiRX$s5$rn3#|P;G!Cu@e8E7+GZ>Wy^bpkIJ7HHr>{) zEC%j+%ZVC~OXh?iUS&(eiEw{_J^wM{p~k(S4fmY6$U_5wZeRoVq~_fg{NDUgb*aB|&Mxv)gzlN)DLuc&Ux`R>2n? zNPw!Jv+{vBRvX<iF~%==_=`hG zym1QImo#h4fht|-j2yE3@LGl|%~xqs}# zwDYs|*)s*RjKH}Y4-2UB=m6AUtbM8G95wmGKb^OqEVax5vvl^jx#`H%>o8j|qbu*P z=2kTjW72X54h=L+%$O}Dao6*)PhR3=`Ll8=gEtbK<5SU_JWy9gAB}Kl{Foy5ePtY3oZn zoT1;4QArb)J5(v8tn$gL7)yzJsT5MZ1%79KA3HD;uFHeGAS|#8n)*V7HnS&8)N9Q0 zVasBeK4u&KeGVJ-m6hlt=zHl8q-W*hD>YlC^bs6e>cNWS=bx<)$qM|GQXU{;m8-R` z<#TCDQ+~0p`l?6kx#HPgeS|AVc23@5+<>uhJYTWYtecVTcR+J^}3#aARVXm|L)f8?a3SiOA zT6zSe5gYx(Hp(p5D~2p2bq#`A&ymdY)0ka#R1YGWvGN^RI+DcVo~|{?cL~lS3%S{i|c2-VwK&m#%@Q{2(;%V z$gZaYvI!Nt6$hq5%5#PZIuxnDvY+L=s@eV*_VOQ!zivJW(8UOR8zHGKY^fRlw80zj z3Zq}~7+hW64Dbd<+-xuY;g%&@`0Lf}C^PFnpMu2NhVIAb89J-l`I?%V?>s*k{-7`2 zoDsRp8Ws$`pW4_X1+eqqSYy{|igoVz-C{Lx$n2<&#B;#r_D{PAJ31FG53Rl(-{@{X zW*1!ND^zr-);@L<+X?>m-Ss;y(r`WT?O(PZp|8SVRF-5yo|91?gUV}C_|0!KK^ccV zGzg{=k*YhtAJ)i20+qIEVvADLL~d!NBjxWM7^(3yL>9urt0e(wHX|jnDmnVx zTp(+b>B^7-Ls#ipv;J&w=kp^_vq6rP>=}Z3MnpzfU6P|#{mUT)+oS-<)~t_m066S+ zsAcLO>)<|{iSlvyra8O^@DFk6&!o4K=}K(XR|gAHWwd0o@^=W@%DkY-;J_5HUc&`j z;TcsJ9WYm?nElVcWl7q+A7Sg}8u$Vd)VkC5FO%rGo)Wbl;7PZPZ_=;FKwP@q;5h#ENwWHt~o?tR>L0|Sl|GmiG0V@Rocr{K$vCm zB>@{lJS>dMD93P)BwIS6oyvI@1FtJE=sESPJ;R&z)K!6mnCsS=Q`ec{bq|fPui8Y% z;N-28r@5X3#9IG4`8sP3R=m;JeeeXC%<}Q811_RE2k-PCaJ?g~bSd zql3*z#ly9DyiMfzI?!A6yEI{zJ!EXqRHY*Cb1%WX!K$hhU!5GeZ=~3A zyOu>G^8-%w6w0s;EL&;_FE@=;nyZ=n;i(NZvf!~ZSeF|77LoJNUw&5VVh5;tltunP zN>Sc4ntmRXs&KXWx#%#CH5qq^je9TcVpTtHo^v$0%-e@pfu{kYM<7sKN;d(8PU@k37jHm_^bz(gG{=(L|%7zK5f@jvja>< z*hLz3NP`sqJ?sdclSz6LD-VymnmaF@H3A_>TMP;(0|oZ4acq~x=1 zS{ce8NxNxxCY8&G85`@L#iF#b<@}3>?485)4besvs<22s_oe*WP&L{03G6aS5{E*| zzeFZ&gFiv$e~un=J6waw3k44fgsz~|eHk$h8qQ!d$RSegtvaT&!^9sy3DSE~Z(K_{ zZ&zTVUT@J`Z(%6i+9c!uxn6D{uV%7iPL(tMTr)gxCk0b>f{D_JqpT2YY2U?0UB>wfEK zu)PC7bHwtRl*0fmFuV}^ozL=I{YB`w^-_j2l)&|`>!y5$&HbkOby{w5t z(0eY=u}FD6<4b1SQLfuJF~F5{4Rhx;m6W%MH59j_O=&?KVAbFmp+on54dnpiQ_F^i z7_dR31Wkdy#?ihHHe4=rqo+W+e^27t*5XX%h|v@~8O!uwBgcqUYn>$f{VGZ$UOtd= z>8z1-{Rt@AT`CZb*GoUK=WsF%!kJ@M8rzy=Bq`jW!Jx81fmcVtp- z#n;!p2D^^qdHrN>)S0ljp1`LuR@(q{7kyk8}J-eimlIUFV_21V(JR{ ztu@je<;gt{cId|rc&m>0mdB$C(UjmHsfyAl?456>alxRgQf0A{Xiz9U3#Y;#hIHL5N!MDMqg3YPiXB{eADv`|+{r7DO%LhtE?}H1HvBRuZb(a`3 zFFZxsGTlSVHt)qGzRTl*amdLP-f0!F@s!J22|}kXN=H1(JzWO}3i5SW`E?$G50Q}8 zPe7qn*AwI4>$GiR_fxZ4rDVd2r&&o|pyJg8K|Iqh4c9bZD?gWGlPmZ@rMYJJ?9AX! za30@{o7A1ytJGf zRv3q6d|8luKeUoVZJE|-Og}F@bEZ-P-~F&Y@i zy^(HvmMikN=kF%=SmRa=I2d!d^1O^bpL{asIKZI`?#D6h4Gb6h>@UQc&WEsEaq!_f zc!`#Vgrv#EcB|os`7#Ag%bB$+YL9%Ge(HK1%D0VrdxtYS_BL*Rwi2id_>xlaAn$yoVjOn-3Uj*;A>Mi9WO3m2q76&Qh$EON)>)a(?|L0N=DWf# zJjj{%^x|F8-Hl?-7FY4TYS9+8l4k>Z`0Bg6ZWC8(ALRUr7IukzvhU}AxwLqb z>3*4qcg(KcpP0_V@$v^a9sHkyn1!eI@FLx%%Su(Q9P6S2zAIcmX(n{XF2L+4|2Zv+K+= zdY=DJCa3%UY_4xB@bqRQn6nL3;^);>9CwK@kDW*H=2eR<1I3>L1-QY8e^t7|z%i36 z{VDph_Ho@02GF8)l|^EawX%z^g$w_ixH%{Du2!{Y1f^t9wj`kR%2q#Nq;Pdygpr=1 z7;-zW-G$$IbSw*zr``oc=KnmaduA^Eaj|_ z>G`_9=e3*@f8IC; zEV=oYql3trXK*`@$o>?}C0vcaLgLa)-2YZdJj<+{S9H)w-KKkB>w$f>8yDUwRQ|6~ zU+1RCyzA=HVDxwLzj(1b{lnhAwUG__6}!%M3=psYZgvvBWf%a`kt`im zYy(8Zoq$Enl@rg4T$n+tExGTxm9>8L{gR(@EafuIv^HAt2$wBKn=h>&) zAwrKV$V^F-!}9s(Jf9Y&z2yI1*B6AXw|sL3w$Cb81$}-y0BK?ulQ&C0#@ek<@GALn z-tK5r;Fq(lQ}*&Mz~ofoGMesSQ#E+&NmtZt7j@btjqSMAZbLFOT3uT}_#~Zir{yIJ zHUVM1odX_^jP}S`?y76fT9*Hr%-Y4*jn-#x2yj56atYYEv_=DP?HL?OvSfBa^7 z*lQGVeq6SkxezXYNC(Tc$ItjhWV*Oa<{eZO^OhKU3#up&x7#(2u6`vNS6unnjb^TR zhP`vdgL0$1(-2{@MGVEw-8f_)1Gg|Es?BJzpKi2*cV5_}AE_ZpVwlaSCEwc%qQ=n}UzkdvH z1EEv(RKC#R@BqwZU7VYWdHzuz(Dvkl@g{lbk;y}+>;A^&-At|T_`E!x7<*IFP&Xq4t!Fsu2}RO;2a4~QeUf^t5$(q%*cV6pz~EY@T`M4PbUurE( z*0wYl@efkjk8KZS52Z(qjNE{Vc5*gY&j!JhYmRbzjd%j(J$je%S^78Y~f+~nK#_Osd4bL4}1rnqoBTAcBxUX_j1pY3wBoLEY z6JRnHFd~Ot8re_D=S3ETbQcmUw%29Xvs^L~JsbQosnV~Zi?-n%!)lvqS`7zEv&Mes zGDYnzcRV}moP)u`pH-o@vI-`k|-3n&JzKwB-2G2erszmgR)|-X~=6J z+TxO|JU*P7?T(Usex5PlWs)8a@_X>P#w>e6PM0$=72w^T5z_(E^Ma(vH?-foZVKiv z+gj16`(a(=S9>p+T&uWYdMTRf!)!_fiBBMzm3^yOZbNV?Dk-xL|1(H&qERqyVdF_? z(iumT^N_}n4U>s*ZdqKYnB?iLiDm#bB)FP#HG!G!}N<)@-!Ylc)-;lDO!+eY_J^*-q9&oZ=NCy0LM(|!XX19|Q{U6kzIDsOm%?rnq>0JI*ByM-!S{*_n z`&CY`+VJa?*{MRz>eC!W!4G|Mevc>xd>)=*t@vTd@laSsk46|ma%i$G!*_jBd>e1e zY_<`v)NJjnOlNoCNs8l%W)qCJ5p%9!*50e;xDyy0wi|?l2LmX{-jY4;F(CG2GYhd6 zKnauP0qhQE@@Lg~CvR@RJt%jwB8&jP35)R0j463$H=;=2c6AINTH(0V=si_`qr96` z)EYuDoUTr_36lnVXCOfv(f`pXyvI{l#e^8C zooSkZh!+4LG8mjo6q0zmo$$`65iCPkc^^o}r$$o^1tF*v6>IIX@ID0#j2Yhw0zW@g zqBPb>*MQ+*mLsas?ajM|l!C94N~+>nklVfZubnqDZMtIh{|GlI<9S~IQkX9myGrmZ zR5pF2F=d57JmRWZbJggG3kJdVuV-j#&V#PMXR zT>9HIe@c$9`m~zsT`OljTcqiMvg7h}_Z=Bi6AvR+cN_rU*M*?pDma*L4YDW$KtRtMP&H*L`-iitt2zHx2d`@O0q8lQ3W1+k zxvhfo_J1`~zm7f$jGKul6VZDv&P;@EbALoQKBDx4W&}^1Gg&+^#B@IOQOZJ2 zvQEh7M}DGm7q-F}A|@3mGy^y^Od)YO13+~jeuiUvXBDaB@H4Kv@3kn&4txdTs?kx3y-aBYg#$2r zIoH~7PJ5Z4mWsQ*rGkJ{0f^-YMF1mKGWKMa$p#6LAV&IjgDe^hZxUI)A)^@3VRsLc z7me)g53Q4h9*#MxIx=048b{mo(1o0IEVzg><)4_L|$(Ygg-M)L8Sskh#&(1)Rh1| z;gYvs1`&%R&13;s8aSE=9{_MXV1@^*U)M{Gs{INvJxI;LK=Yj`;e?B)vOK1B!oAfZ zlRqi_k^wT@{Cu`@YT;aWbBWq{=_PpF_8`2D)1N!~+T&!F1f)?{Oh&R6TaGFsZ7zdt zA%mF)kir0^mcdpB`en8fHZx$QRG*^_f`Zcrhxp< zfpIIQUL|2^Dl4WN#TwrNqXT}qGY#86AjsXpWuL@k4}MMJEwKJXhgT!LoI6 zhl0?6@)s^3r2|MN5w5fbhYynddKlNe%e(?MBti@gD(1|JeF^Sgi*?e>vf7x<7>&B1 zH@dG6Svc*ucx?;3d9Ayaxr+;Z`0A_&XfS7i(oHmLf2cx`ppDrE_h*z`m$DQG$#<^WvXwme?%Q!mcnW6lL%K-RpKtC^L% zyYQ$YIY_8Ymf1S+;*;F0w>W3ini(J%qgsRVj+8rHceq?q+CyiCF&Fa0Bx=E~Vc%#e zkOgz>vUO`jAv$Hu1OOvl;{p|`HhWE75~@oBNgM#t)EGS~^f>^o-NC{L{sq}E`|_9G z{#_1Q0iOrdoHuAVuMD9C-IX`b`nX;30#zG`uVo+fxbRMxb)nKa$z>qhYXXm5cJM2{f|J1X-Vw8UWK4=&Ll5Q&X)KMZdAKV|{EV4^&x( z@bWXmd!dG8uq3SsYXG@PWobdOKA^!UG*e$BV0!!BCs?te%~=COy>x#`RpbQA2&d`W z-+d~_^OIaZDK9BX*0@DSUH4Lq8hoVI;cXVyaeC|$`_eD{J^5TlvV}@p|FZcgSiDWh zq*@tqzMo5Eu#*W{&prdfmD#D;GS9O>^%#J5Dfm%4OCOb`4A~t<3_Zt^?{c{!+`NHJ z1bmJN!sLJ?Ss`;mS)oBsTy0b%Ii3pDSu9h48@4D+Ne&geHOc(JeGv!dtS&w zt3(#-Kb+4R+kiU8aqR*2kjG2_K<5NNP8l*9b>-?WM^zdqR1U1W49z@vQg*;FG8CY+SG0^}Ck#^Xpkn(8CawKNQelbZV40N+EoRK|v&S zv_uZH=fE-=?>Qa#4Ro^PDoR9zfm&H5@Nd;khr^+`#GphzSvr%ab+cTpX~(m9~&CC1Vxy zQ|1jS{MD@Rk6}#An!|^x#syAGZ2y2>Utk)|t%UmAqlOc_D2W~jknm!x(LcuS(VwrI z`cWCRnGrb5s1Y%yGeX%8%q75Ks{@FY@{6PX7a$c7=74$*$;r?l%Zq$l_(uB9X9dI; zU%%!&4efn@ShwSlK_D7$1XK|9Aq@QIzQ5QeKr5w*vr>0Duhu zL*mgSQ6Vb1rGUQT-n{^&yd8CFG}2w%prVwdhL%-025l4uS@f@ftngXu$-^-48RIT{>yGu8_s-d&Wa<2hLdX(@E=r@B9KYZ zgyl!qKC|}mrUu0wt`b1&6d;i`ut_w%&!GUKX7O z5hge;gXORLmT!XPd9&u_XafBe>!)1Fg|tqdY{{=93jEd`1=fF!M8x%SO!O~?gfNG7 zldl2j58&Y`+^Crmz64HI2SoteZ2)Hu$dqVTlq>B7fO>j>jg;T(8bB`0Kn#_KG3pQ# z0FiWUfM3{Xxi%rEyz%}ANDnFipPeePM6(N=N{I z95<}+cU^JLL;QM4V$p-QU8@!&%=yExYEG%-JlUK7wK)IXg{w?~LIEPkrinJ@)KF%B z1NHx->%O9z_`Z07PkIPR2)#q-y%#~sFLVUN&_O{%6)6%B5Ct^}Rf^I?ss;o>qy#B~ z0)~z>0cp~tg9wTpD>whU?(2QaTP7=K&CEG_@9!r`RR#?3JZMnVao$h;pbxqSIir#VDSnGVkl&eR)o_Z)>>+{pI8-eyHm0YD0!Y;q|8;w!O&M zaQQ%xMW?Am=qe|o;Q$N*X^`gABN11DBe)YDf5Zs`<6vGdpbqN$(`TV#;_4@G5Xo2j zL5bkp>yvJ0-?^#cuX?#P9Dn&i$c?w@!;e_UVUe-=GC_cU7!9+0Okh}eKPEh z@}}&I?~baodDtI)f4_IzK<;%$J-_{9TVCSrJN3a9^K9*p;DxD=(zu*&fls!0o|Jx( zt0o$_!`I%-m`6{H`I0>%4U>*&(-gMp`^K^ z?&fhp`H_H3GyZRAq1?cL;kyOKiNAQL$pZF_po(nslv!1WEhN$)@8z8hi@9fsXVk5- z1?<0pW&hCXm%A5WyBVBEQlB#W9YxMi2hXng4e@P~iq+)o1ws6?o`2F$Y^t4o@+P1t zn6xI7W&YJ&3JuaVv#ETenMLl-P>%@e{G&Ns|8)7GB3)4duep9xx}7VyMt=*bqyido zOncTsOR=Sh>i9&6ZhI%Sn1k{OsTkyJy}lzh3CX{MrYUt=7BpF6RNif{1(Wu+<% zb;(reY~jag##=kx`Wnxy?J4h;xmFNjF|Dde!Z3L?H5&PA!|NCQ!Xbn4wdVJ`34r6nwg)A7M{e@{>oGO)mb7MuG$4`qbQSP{wur!Z;Zh4@w zf!dn7qVZ#{F_dy4xygaYDP&ApwwS972_h4ZrSQwUu*epprMh-8#IwikUB&ax*1g4= zpRE%Y7iiPT8+bDbkfh@i8=oGeFUC`F!bSEq()ql$19>T8?xxVj&YQB-AlC<}@z z>&Lt&0#LCSiC)6Zoia8uFYjIbh@3Rj<07e)U`Mf(nAv0ro}A0CW50CsYl!ohq3e6& zaDb6CpRN3g3=9sDR41K`nMq#QfN-A$auptil5C1N48)=jJ2iEmr#~ny937cER5kTb z>@0DlK#!zrSe8!#ruK@%c3nzYpL{}~(o!q!di4dN+xPefcy@Rxfn^v|WsSavmMIN= zjIqMtJD(aO8dZK0Psq-l)N-PvS$H^6p7vA);(|(Kf;hAH?K}>HoR)Kr-K|AI*u|e& zgFQ8zowF8|hWsT{@gn!N*=%kyB6sDI1iBGIio4CrEup7G)#Sx}} zLU|SV#=i=(&5DX%x$9MAyr_BuS85kF)c1IflgLAZ)Q~MxD~-Hm%_f8P&CwV|ZUEpp z0B?4zvU$aTBe9ibPjY2YcJg;$6@QMGhN=YW$ABkxpDMJItDOpig?`V==}4#7U)w7> zee`P@T8XT*a0TqI-$4m-95|UB+d51=nkP+9?;l8yTP;HN$v_CIYDtHX|oUil_`{OjvMAE`Mj?F zZuUu(^Je?Yb7sY0xTYS%@POG`p<(=ZD*k1$qv24l2}k$} z=KeggOufAe?Ll@H-<^XQSJ^w?ka^v<5SCY@{@g$iXrfCV_D5tERg(PMt+1ZDS@+>tCU2rgu;W2pt0D1Ml$wjxv0#-Gs9px>ZKBuG?lX^4~0oaX^`N=acFKKNS{o?>_AmUaE?-;}(}r zlyA;1LtM9tKzH}DB`Gv3pwlUdayKUIwQtJiRx8M;+5c>5eOc)zG;&@r=BZ5@6#9Q1 zKM3&uQTZSM2w(-10YEvx`h+|JYOUW)fK#{yrByu#nVDcSHX+Bog9+0FIEqU^6HPxb zrQ8PTrEJh8C~yqFyg8XkF`*ziH3R5`9Pq#`z5jw%=vov6C&)YnZ!#61oTvz~u43cb zfN{!SFSB;=MdHM*i_vyjrk3pWn$hTqAphY!%?P;4P_NBhwR1z{>B8V@R|>J&ui<#K zazVY{^T=ycG8Jep9-U0|iE!uAel$)7`zXs4vXLlcaD78Tv)n#c(L<9AI0c+6(z}$j z_;aEvnGQF4-%7j2$?JEIJqd+st!L+J&&@VNstcv_o*BQD{I@J z*xB?QRcGB5$#Tvj_lK){<9b8csbqG4>S2B!{XXv5 zzFg!RUdq|kwR}6^CE9mX^&K`o8*c3>RK|n20&K$M9ApxC(%;3ZCzaGjn?S+m1-oi4 zig|uIA<^`GCD@eh+dPcxy<83LWEKO0yM$^p13V-^=IjcD=iV6O-1IzpX=d3I^Vbil2nA0p6eYj!_6a7LxMDJ6;*b9o==3q*KP%t$ z-mYB+$22cn!>1EAHd@-Fy^p2k1F4)5a?<#iK{mI7oD_-^>SE?g36QgNCQucdnt>3S&kTb7@;zl6A^XX53wh!Cy{1Z2_7 z>^YtUi)`GeD+99P?1-cA=y6H|QsY}!k=3)UNs3w_e1kLaC-oa_%9{BzH^);PbBBKw*OI7Q&a>hTCvs4insqBS{X8g%+%n9d`jXE?+(&C;{b7Hg#qM^6X3gDUF_+Ec$EYRgbLYIpoRcGBf80YcQ$2za(CiR=f^7b{l~TizlElo?RBLG&!*pe zVqYhX(CgGk@qUt{i%C6lmp-Wc?XyS|B6OjwTWF2Io2gd;%F1R)fJfEMWrx+(zwC2Q znZ}7u?w%1^t_r0+NY3!p_7C{?GLSuR1tQJieRSF?7<6JVS@s7#Qr8l+XS@1z`+L;M z2j<>g$15Xz+g_?%^vs&2j0G1YtFzq3ze;cXR9hT=c<}JFh13r?gv#tkkxP zgS`bE>X7QH%PDEIK2ld_n3ftBqR}CTlEC!DzBSFRRvk};kC=m_C+>m-L%LALD?<)% zFZ*!rMb+=cqcR+rG>vD#i*G{R=F$R&MqL@S!) zA}Ih{^;PlK)i-TY_%1ec)z94di!jwACg@o(IiaxxgLKg=sC_Hl-)-u zJ8TFQ5{QjF{#iqy3d0^3N$gCCUA32C##Y$uH34N zHBE@u|3-(~q_lJ90*RH6w=tuO0%O-Qznpryl6Ll`n0P4wmxp{@0;+Hvm(3f`}MLmNHT0baVrQy@82Jrz1woL-i@V z;0D-4xQak8s(?wM&=aq&iVhE;nh9)N^0BV!aC;JzCqI&MXkngdaJ>rZxB?3!Bd8Sl zs8v+^QLalf4&5&oKR`$O2LxzYN5B2V*$P07$Y99^?)N%i4GQ!s3E_x?xRMawgId?pDGjQJOm3cO}xw7g|^Wb74lRCsWOtk-{l3(gFM` znI^wu(s5t{b_;Hpi5skpR<(|XxyrXPVTAt`Gq|Uc9p+xg$1&jgE6`{X!VJeNM1Z&+ zIM@&&nlrpQBq)&x^Ti`TWZH-?3LQf$#j_`X71l`DEgYbE0XwU%P=1ujMx`Ut2&iFo z%$rOM2$yTFk5M$YyUcUz1Hkd&0P~WGqLC4SR6gGoT^BM1TMqqP3Du-PzR_R@chi38 zA=7tKo{qDteMa}5C$qUl`&Xi0;n~9l(NbSIGt}X1f?%}CwW(uZeLO6haT#|3rcLG% z{O*ALs%xPOb99CMO7f4Mz(`Js=IWd3e8H?SFmD*x_c&meS+K&uyl147rM6}s_keZ}vcsRP1fjG^8pgh1=U*e<*P*-v)fg2uAg53!R zsgNiq+#sNFDRw0Cw)(xNGnnUZFzXbl3&)Dq$VKk~EM^ERR9GrfUATKd#|f2Qo-cia z$G$!&U0cD1E0&$SfLVx;FFiUyc3-%KNI{Us;l4Nk83-M`K#c{E9{q;RL^KG8o^6XG zoG!uk#X;T5Pj;cyKF2*_HSt^lJN^R2{sfQoA|+&CR6N3f;iy7>&~qhCiVb=HfGup5 ze@Pw90`i7-A0|A&Jbgs}OstH%S~*i)$}a@`qL==_Rn6my@&$npIF7YU4iFJL!Q@}$ zLS^8oG767aCgLX)JO>5yWjspBd=Qnze{bkP7f`-L&-2pd2P5L~4#DCk_h4=}>qw{= zI`qCfxak*28SiOuMf(>VCXWL<_)&UJWcwZ<^G+Bo;V|o@Crbx$ucU(C;#gEA$Lk@i zND#*_V&ktP9Ppdec6#EQxRc&pyJe^JUdc4~k*{ zB#41-2(ln)&vEpnPd5qH_nV=Qd$`OB8GC`HmZR2l!cIVhFN z5F-(9X_CQu2b?58U*-`)+sy7QQ1+JmM1eg%LL0k@!v3IRKdU$XVsiXua@={`7{&$s zS!w*G&cg1h8s1?+l%|Klbu1Zgj(Mzft!j>pd#M<7TZ6zxgjT zb0G+(+unNcpzln3DJp*H4Nu-2Z3c(Fy8^RPhdlWO;u%)GN=BT;!(Np_&pE(AM@0Bm zYgp+4+eEL0EwScD0ViACHh=m>OzMc|PUc*Jc|XAKE6zKgYK&)pC1 zuJ^|z32~@DFBC|9@rT@(|N8~rq0MNa5mbyB#$!)-*7+54{3LSNE?Cy%o+q)mNaFJ| z{pgW{p!$}Ybt3k%NWdH=E>5}o~(P#{rh zkbnc^Z9;tj3T_3!B1k9?cXnMa%)7_EyTZUaB@X(%{&ISelU>{0w7$O!eTI);{1Ptx z3G}~3)h1qjR`nh;a)9CpVe76zRcChbD-T@S!>p6Bn>gU(3TAu{6Wcy;X$1WWz(k0Cx2NnF7GYB@n2=N8KsxqzcUC;?6(m zaqW>MuULy&u`lO0UFY|Z+en*d`wQdYHp9mpEE%y>si=pJDL+%kR?Pg!Xkr@ZJJj! zThhwl>sTmh1$CQ&h&?zLyof|?22C(0HxIC*=>v0&+kNBgG95!|N{za)eTUE6IBIJf zLO7PHF;;>Yz6@sDiDx##80o(gp&@L&p6EIB=r$Sa`WO2R2e5R+ZAMLe?Z^cB^$37r zVSMBG*S9)Gr+=c)*~ZlrvZ<%U4UIokt@iYi=j6-u$;sNuAOxl_lU=Z;>xph1dr&13JM7-Ma*|c* z&6ruiuZAp*1hn_M?qfwxZbTbRzS_sUFGQX`1kjj?{gKI&Yk1D>OZM*+v9HG#H`1?-YA$c< zEQ!vVpnk>04G?#1&b$LLN4~9K1NSf=Gtr)|8;Zpvp{h%2n6ZL;?+PzYz%N#|m25KF zH`~2-@4qjF7&2{(nQOmxg*%$&D6_AY-ab9Mbl!8RMQmwse=q6c&iK;C9A&h7%s=K| zeQmU8O(ALE>A*4_vyJ~W&(b&1+w(+@W#S~WraOp#^moSUWX;^lt*-3Ai4`1&v*(9@ zMK4P2XO5-K#2=lW7$y~26m=>sjf^ZVDUZ!ky*SQ?^iO*&P5$M~y|s9>{C1mo(D7ku zrFM?({(NLxPz|GLDTBnRwlt5gBmd=`&KTkUv#NM+N#gBW*b(~e#gU@xMH)p5Iz@eV zm3H4@zla9qP8?v&ZHGM1ePW!Q&Z=9R9GU&FGW)vYqxr{=ey_H&m$xG8W=n_sh3xjS zTjdjIi^%UkCRFx6{^R^zhassA+_{bo?|l1ed8v!|dG#j7{5kd$qf(%-@z?JmJ%itV zwY3Y?SWA6$vJ!T5Z`XEjxBe`4BxHKf>yyCsKUC4r0{=LN?7ok^*#9@SuZYFu*L8I$ z$uEk20&X+cj)M9t-v526HXx4ug%|(zN;N((>@#=(Jzh=MELvc@-WL9GrTJsycRa@e zu88rd^TeOuz^5^6O53&i|fY$Hg&)v zaT#pL98ahBwg*-jlEsBQ zYx)`U@G}+p6T&U$U!@u)iL?ncrSmD===BWO+;CI(8ja%_l64Nll5H{ZgaP(I;Y~>JC{dSd2eVo4U6+H-wkYY-#*+?Hi zT%9i+~s;TZf3`)2t$O;U}#}f_1#GY5YIAi+78V_b0 zk+W6d@XYL*^MSmUc+A(cB@hzF#w-;4&0{61H=KRR{`gxV&Sw|)e02N#UA1=Q1@3F^ z6h9>I?d91=|1m{|K@N0N9wm_8JIE@I=F0psP9#hAo~1p?BZ>(+PrG;+W!kDhwB8vf zvO;1sv}(Kh3+p=@Z0~vRE4bGBX5FzZiD~h6wMhHIMpvT^QEix>-acWs%~}tAs>Q%e zlN7-OBp4wI9yi%+5&OG_WASo4&O_uo@)S2`7UpLT2uf9CL*KK#b-R0Ux-=)Sqgm3c z@}J^SVIc0-_Nd-}&@7eBokgqrSLQ(HOF|UKWZ$QL`IO@untydm#_fBcZ>ntm&gz-4 z4lkDZ9!|LuP{`30|2oas>ux77{yO}&QU4Ar+1^Gm*~RU~v%Aa>LBDr&9~Crg3B)%~ zZ0*vg1RpD3YyCI>-nU0g_?f}0mf(_@Jubz2ak{F>4QEsxU|G7ItqTiM33_6lqC z{X04;ex~VSS9uf zo_^#R3z6Xd&IjEoV0W5Q>i;J6I-loaJ$FJ+k3ectetK1c#_bFJT7xFy>8#m+_pyT< zZC^^l$JN}vrX>}YvHIn|-S!5BlmM04%4FwoQGZ`Nq##gZ(i_6Bzc#^{Pfl15$C1UL zrHD}-(;c?1gx3bWN?1fjz_>$f`foF|1R|q$@4VuBjf70sa3ry&J99KsO1nQ{;=eYnlVti6p=?2o-X4NUJE9 zlm02sWg34~T3SjlL$Z33bohAq_*BEo#>mN>Fiv3uYpC4G&uV~&pX*K#r?x8dNxT+N z^_C2b^KLwW${qryCPW%n6&9=XKiz zr_yfSRjvCE6WA2jaoc(|mM^^BeFgFtlVk_hN`cNC6=?4E@#)f+K-K!auxDP{aa4Av zy;9UkJyXmrbt2ygrCLe83t^lI!jYJdJvSARc63{cO=Q_!uF1F=|E!ya0S>G@V~HfU zM^-RGf?l8?TOUmCxu!|Qo9c=5c9YETK(mLNH43toSo&(G;x}Q2){61%W7v3$OM91-n-1CPM4~?Q@_Zgtn|kaZi3+>X9n<&vY9*y zq5A8}rE*4w?q!@$GhsUck+;G!>msY$-<^c0XDAJQxp`YBPi|e`gNqt3YLzii@`1)~ zL@I?Fu7FfeF~`v{E?}+{0`#HeTfm&z=N01!I)8c59p5H61L;>q8S60S#CgIO`XFX!A7CH&^jJf$#@ z|1mYyD!Ye0PER94^AA*ReJYCIywEe@)vrBLI<{84c_ZLLrNK2J;97d$m~T-H_~Zt= zle0HMEuaf&N?iY8$pnG)w69f`f#pJIeD?+7(euxz|9+T!aifAm>Ty|>!a@{k-KPNO zm=rHb7NmD$0*7+P;RJ1(-~iqW`ss5h=|$B4tpk zmDgb$LTYdYrb;kDnr2c>-ye>D>(hnbBcw(h^oUI`!R)5=X&ZiRe>Mcsv*c6l7phOj&YiwQ}vA5CPboxq79R}QjY;tgnX3->|%R_sMPTRY$kvz&rAtr7{N5_evXO{(Q>DOrQOZ~ z5y79FX*_1Ul>DJei^t$vRDp^>V14F)^kLdsM4n0&h##){tj0-B1mq6ynSJ+PV=Pj| zk0WbNa}0ZB(O0x51}YGZ|6DtCWVAUGKmY_7pWy@&SPb9A?wASYiJ?Fw^jK$~L>l*w zW?0gH{P}M>V)_vTz6`zYyr>gb{uD+lei#j_@ZGy2#WF8j)#tjJjhCKLqyU3!m*)D# z`f%4Wj)vRxxK?pj^5I@F35r!zLU4W1B>*na3HPJGkra3efYR<{V=~#tnd}r}!N;B4 zI8{LsSc<{pZzKJo5$SFxaFla2%XM>ZfTY>Wt@AVVk`#a##r zpw-S~qX4LJ$`KC<#6w~+S%w0>pciZUwv^jZoNQUhBq9@3GgSS(OgC59*sMp_3{9C5 zdcutdy^3d{c(59?d^#?k9&%yx0t2@>gfda zVia33LA#frQx0GSKs?qUekPU2T9A*SBty7+Qr~2RSWF~=lI9hiMa)-%nQ-?uL~jFn zg~Ejc@sUAzAl?e-euhJ^h&6{H_(!3%D>04hf%&Jtz5obmsS7Xkv$T#07x@gsy^yda z0}%EQXfx1XVef$xDL2dks2%`Ku|TR@#}`x3trSZ;kU$Pdpa&FbdkkMCXy~VT)Qvp8 zaT*liWI2*%B6_Jm^Q-A zyJNlVwtZ*r0*474y=@$=6ro{2IK3W`PcX}2x=uA9Gb!jy-6Iw{s1lRlmwD^rpMJ&9 z!#?ZM13~P7=E(iy>`~?Ra^_ZDagD8kcIPtVMR89jY4tfp6cmry!;m3}JOxY{dZle$ zjXvoa0;_n{A$zxB|2OhbzH@la-YqEd;Ri}IJ#5^~`RUU$0P;^0`LdQ`w z{tQ4E4#F;{VE(7ZzfvaR28DphUr;^u#=$!=usb`aTuHF39vL1S5ku%(C}#>9^&lxg z3)wcfu^x>F@vDQ4QhI;+)A=Hya&P?f$?-}GiJ}jz|<&(q>2NW zDk{*ZyW1zBoM2&@6`CP&4|$E;`q@jLhs~&LMr?IS0O#G zfh2v0<9%A>gGAyuO<7rg#LNPNc19;qG_jkma6mdtI~v|V5&Zm6%Oh+GPX9thvcs#xTqrxmnHUak|ZlJzIv zd5X3Uy2yQP=I|bPv~$86gm86FI8wBxauNE3re@wmy6Swjq8d(p^*j|nH32XQ7y|XM z2E?)!@fA~Q3}{5(RG(By(djpQBx9}v3Oi*MLImzdjcXOVE&efL-Oq4Hs;GSYsg?e_ zB8nd+tzrjV^hWLfO4;dpjcorBkJ?bUB#rNv7QQkFcf}|KFhGyOpWrB(=KqVbO=ASphf32#VU10vhcXDh6 z2QAn4`Y}IkkFs)(HR=^l%eU1w*;we(symxtU8^+f}XKO1jC#aK~|oJRVg0 z4EV3)B+EkNTmf#E%zyz3#D1zY(KBIVk}r@dfLvZJnbIY~9Eq&h9XR+UDU_Vtc=N2> zG)rro?F$_m={>vePh9xAtT^89|HviL#NbH(txscXtKQpheXSqM&K&d`TGN=bnI#X*%1u8-!a zoucrR{G`|d6axu_6Mc2R1Dw&eTzS3#eZBPLxbUCX>~rfDDB8yiv#Fp8K&yNc+JW4qHJ;Xm zWS+Aw0!f&W?JbRv1zgbOVgXS_=bQ=@1B=iwI~tnFYr0(K4)n_oke0GcSv)FZtM7bD&N>prR+sJQG^ z{GGCyMlHEWy~jt>AS{C?nDEkPAY7s|~61=Ss@=c|OIMZsK(V`q@f9PCr# z>Z-u47UVkx>8vu%>eS`H(&PJ?V>?!|Sr^6wPP25!1CS7%^>FR9Pr7haTI*1$y`t~B zon_>)amKiK^8(7~>^2u-_=M1QiRyrBQ2Rd*h#twI}T2iDk*u!?&5=ZN)mhuMqK)GY~mESjc*pm0QI>?vY))%oRNZu?7Y@ zd;nQ$bm(l?GFA65p?+><>mqBBAUv=Xk<7Ct86gGt_TC$>00(cDN`kbS953WjRpy|d z@^+3n~nHSG}5B1|Q6HOC-_eG}Y!XeBRnZU}A7Ri6lA4A=8 z>Jj{AB^)&b=AhhYVzPe)INix`M29XikzKZ=yp=zknV*smKf>H!mV4oaLjat!OIJ%A zU`F9GV^mG|@Y;Xy$XMdcbd)!$o_t5$34k=F3}60c$~pP z7pW}j@yx@E3im(jyHa3e%lPs$nDNgl=Q@RuZm!JZ+iRq9TypuNH|QVd^OD{n4h|~e zp8)#Ip33yV9RTZ27Eg(1-?!{^7DzNHQAF+Yzfk_y@Ug5Abp`nPkrr)c6*go4)w^i5 zbRHh6n;aUDphBkER0g+%0$-H9A^(xjr>m_GM^FMfd5|5qec)`zFihm)tu}@7yr@#l zAPxTMYtw|6+B8DXm@5S&Hx6;lPik7V<>B5hQ;a_H-M$|clg9rv=D$-PeSU;zZH3SL zzOT@(OxEj;%7k0GLzDz)HsYZ5B8P{OHbB0w@V7|Ocp#A{>T>cAD=5?>lgv7^{*Zzx zV%)qACs!DoQJSK3&$CB~eQ+!RI0OGTQfV}o2&s07QWOrf3ikHK{~jw#MMSR3M-%Qx zo7_HJ#l4GVB*zYp-R4l_YAXxngBc@#*oqU6>AuQ8MS-~k2zh_NmFx)xtIS>Tuuj?( z#W5MTAClNz3A^ty-d#Wch1UO#8uvwGic-Y^F>+6+J|E-obNk1#@S)kWV8qxOw%xuNor8tkMg?KTSD_ zrip~neq+$rv$BzZT`0;UGZ7d}uyHe{e5XA4_(Q()0}y!0^VIgS`v4c2rcO$*V2PHk zy)|u;jRnyU$_@ebGenuQVMKT7mo`60dASou-X@)~F_ zwCQ}CtXjZWUSDfLb8OwaV9nXE~lh+N@f>?P28*;?GvT!p&e@4+`&%#>ZKj< z^sGkgw_R6?MMltIOcof%#(~2d5-2MKD#IHjFD*<5z%Z0hCZStyO4hMF&z~ECT{I%U zXDVzA9}_dXbRg8NC3nam9MLesnjxN~yKHm~XA-X?ItzknlvqvRz3Nvstp03=Z;A+N{epFvSLYs4>f@{&mrNVS zo3Sgj6S|=ygdZ+ZQ!Y=XqCu=@FUr2g#75a1u5Nc_`;pWs;0^t}0149vxg85pke<8q zHUGh8K;l0CebNz3MHXkem!f^!La^e(3Kg}#E~__b-7~Cdk;G*qTQF$Bp8Y0JYm{i3 zRfThqR=gt_o>yb)DV2dXbwO)rTXkQ;$Wwr5Kmf=C6^h{qVD2UyTzuv4=VA5X-1BaR z93a_S`kzD|X5KxV;AYl7RW#=?Y@a-R?%KhKReo;m&?S#T2%P!q2})x)1fcKxzG@Pq z=3rVj@7&EWc-^`_ra7PMv}Ul$Q!%Q)tp1v(EU)!_ok+wW;EUGmr*yk=xL;*HEEc1b zMDzDDU|G-qNRDcPLSkplK)p_P^%++c<`^BP_mqsDEz5=UbwwyE`+m;98Bq8~eqrlL zSf^lZ)6uW?N2ja<;F)g5Ybmcojpkd;rdoI419lqr`gf{ik_0p@1vOX3P1(OWR^RDF zNvlVJ|2SeyP{s*egKERp4{G%moWGA7IXV7mU|IZ^@&{Foj zZ$#0nXC)*Hi9R&e;OAlv$J$Te*qTAci%ZyzWot1&`_6wlkrP(y4)N>?+M80E_!?C_&sj9Dg$L*}$xI&%JSAm!n_5ZM% zQ#do%BYr;|2!d5VxB*qA&_whkutjr;+N={(>Vf|WN&OiX;G`R#5bry}zI-sh+AXlDXh*eAW?Bqf~S+wui43Y`(raAO_Ggicw95o znRmuT!+4QbD>C|A)x?YPky;z1K=qG3l5ms$FZV)jx4Nj2ZJ(_i(>AdUnh)K)2B&2%~alA$8EAzqxLk_*VMdM5h~5 z`{6nisujIEcxh0lVz$X!M=C~8JABKZ|0Z28j}sd#58>Y!S3dvvbjH5po$Bd>z4N?| zn2Y4g?Ms{0=VPzTFJ9pYlU=Y1cHo=;js7f!D=#$|(ZPn5b3EN!Pzk$cVE=8O+?r`X z_8LxX{V0(pB{X5@yDjlJ3?2WhqctSp>0@t9*w*te9k-L0;OK+wp7f)o!=%v(mt73>&1h|%}V;DngHc$@Vq(-V zt z(~s}&PtKnR*3!gE8P!c-{gJW5%#>!i(_Nd+Zw-K--=R$Jl3kbdRt_&*4{xt}@>!)a zUV4?~qhk(lyy=Ikf!$j7jCMng$+(F9sClE8z=a7Reizii^gB9(#=`i`6bi;evlQem zUDDETu>Y`gennU%|0P6Z^{}t~PWYx{JXqk~V6)_}6}Ic|4Mu_guGZZbqnPb1>|AQ? z=E@@{Dk;a!9{q#J+fmcJ6DCyezKpqd3|srlW?bahza-uE31@$ictKeXp>SNq4zGea zpQhZg3doAJtk&VhqOqU&W8GM?os>u?6DB)IWxM#bOo&doDt@$;`O{e2aP-H;zSq2* zK>7Bs>631~TqGdA=3FUz`v)EQ(+&s{%QE!4-+$J8P4n=xai`kFfb_~pEy`(#@Qj{i zRBYB*E=Mgl!Fa4Bdhz7Y{#TKk-@c4iBp>$P-UxodgdJ1&_8%U&J{y9A{CZj!d9Fuj zrQ+1_$&>W~0{KknanfHA@Jf^g2EkkX1(%ER;IaEGC>!W$jnwQ%sL3 z#}lgJpX`hE^WqytN%J~0z7~19Xo%7vShYPz$rCK^ZYmcEmK4B<33S7s4Likk%klJ- zJKU1WfEdd2KOvc~g~FS5AnSj@3gr^=Q(fXyc)p#}{N`)C>Rnt=stlYW@MmR$Q(_V$ z@tb-UfSUX*0MLtXxl&B{8C~LlnIzfF2-I(up4$|&%Ky;oZBw4WkeT0!8NoGEp=YLY zf2a~85@I8zGM@AaWP$P^O>J;-#N?JiO}w@R$H&_AA*LI(sz*EDTV90Gv1HzoUhEFOY$z1jkvB@Hp#Q&mQYd^$U^Ur@_}i z*=Z7fT1ImgF~xd7s^G6RwX}pULrRDT7;OC}of#+#47H5x4HwUojPLq8X}Ek4yS@kD3VE zdH>H>L?#R}^6~fl_{&O8Ppp}84O&C1qbR zSFHH)Y`qOgn!|&%hV-*T5ZlRaR>?(S$3$?PD#$S5GpFJf%a2!6*yKx5?Y^BA{gv?qR=UIwkEjarW=6H~5f-mvOI>tSZO8m8f@XYtOL9006eT;xPwt z6U%VUWmt7tZbh#`n1sKptPz(#Kob3xaaJi3EI&mH4C47p&m86DdN9+w!HF zMQ*~Crf3R8X-S?cnbiQf{eZCLQe{t9bwh}5VEky6neV8i>yvSO*T`C^luD+lJc~Re z`bABGSZjx6E%JuQIqow5^2*?_5=2E2f5l!L*CuYVN>T(o*G5xQgXSpivnpvq`>I{}qS+GZ+-X4+5}Lq@!XK>4-n zmW|fzf#x~KJ%`oD!AihGG!1N_D=9i|B0K`(4q2KR1^s>_?>|(P9&~TAO?+ENWZKJA zWjseuU^p(IH`bryJC8zPwOv!7Oe1v6%dbZ_o5sSM#P_IGsk;L1esbD0#hTYDgJ3P- zyoX|so_5gV#W#hHw@u16ni$hXEv`RROLhPo{z)^fs_pW#Glm|*r5fkP4nO{31wl5R@Bn zBrWOQ?eVNTuSHSmtErm1Sxug7vvQFUk)u+>Hl$7XlD(PjZnvBvEfN)or+^#&Q5z<^ z`11qnb!4_+GEH^c0UPHswoaGz(>1HOo?d;=1{<>$by@3RqeY(nzF5sKb{?qN(A)zn zse>gKyF?GEuWl)JM0d;3tCeelC~M&2lkqusE(Er}WYz^-3x_Kg-0a52PaDfAgqR9p z<*BKPVyqmR7L!}ilIi_{={{>sXS+^`Rm)LK@)*4?^onN3VW-z5( za6RF8E~&uP{Mya;L#p-Rg$f2C@!(K1+a$BZQCXqo?nvD_iCn5gm8onTcrwYXU@^4L z-qxdSk9iS(BGJ6aMr|iLg~gL9uXM{!naVdgNflR!$2^pvbj?nJgrNuTqxY^3eP}wa zR6o%b+bx*d7wrU_^hUR1z#SiId{4dUGsJ(#Cl3uuT^cQKTJ7YRW;#=Mp>)>7qKDU zM4h`1svqs@;$+PGNX}b6R-~D#^%lHLHS_Wue)!oU2O18$tMSA7^~Z+|1&a*L|3lba zzBT>6aRXnm!8Tx{OB~%bLfSF9M@oq!rAtag-A4Bak?sa@qzI^Egp>-12qq;0q9S7J zmwUha+5PA~_ycyZ_#D@9p4a>Rn%T5So6uTdNbHhDmw`|C+8X4?zxWtqwU_h&*($l? z8WYA}dIf&9eEt=Y`fH_&4|-d-Yh1%3<=H3v-(JdY5kpU`hl@YRbW;w{XC!GC{rgM% z3w$R}!kBz|phj*=fo{}!68j+08W08+>>Srxjj4o^1V0}spL{y%K7d4~JnIE%m?8swE3if@x?UV_}>J z`iI7fugeYFj5TPCo?i?wd{PYpR>qv}lm=@djj?sBIA#6;MeN0S+^p7(PAXKQAc78h6aQKa-C$ycD9y-+!6s zSn;BJ7Z-h0TS_MD2b$enK^a(N~U@xRWast z@A}%g$R`6)`_CM)QhrLYD-7vZS^wm}NbQnOV;H9w$lbtiHNK}-3^w|pw2AK^iDQs~ z)VHd3`1y&Gn6s6z3&)p?uG>n!?_=12mF~!eoKr<=Vk@-!jo+5z+s3i_6p<36za(J9 zAW(dW;dcMsFkPdXefv-=($pq=o?e9S>JJY6T6Hftg9dsW2#QSyiN0ZzD#HVY6l5gg zefxmiCcs1|an4?E`9LEc3gwh@3hf$2WdWoV#oDX$ZE)g()pIK{tVF|U__{q@K2RezBVz|wI9DJ7T|W%u9@FcToqHfx`c1nJU?P%W#w{} z<^D?55E8Q9ewHZf7PaZB?lsaeGvZe?N(ela*xDdJs3e;zE0K)P>;ows;5&BvI_B>v zo;k_FM};sX?-o5-drq_#ydCYP5*b7r*GQ#^1d%D1jD&;8H*`;n_cuGG4i&VRW70d< zr;!)KhOS0}8UDr@u@-=zj0=IFf15Kh{*0`%_|5bnpA<%Bd_s1}MHCOPp5KT|--zeF z(Wzx%HIyNdeA{aRM7^L?)Ma({>({Gpnh1_h>!LI5NaN?*U(dH`A$_8ZRjf4vQdIOo zq5@koXdz}AvlR7P$PevD3Vf>sjV;ps)gK57QTB`!UjM)sk_48 zQvf4fIT^~ZH-@~OJohz4_i)5bPeVIsTn0cXH3oKt-o4@5PJKPB(v)$hCCg%x>rZ}k zv4&>#=$}Xb4Jq&90rc43Ez6o$Sv60i$xx8^?%3mNff9pb)pkZ)$IPX75|;+~@`Ev9 zjo}g9Flhp)sdhxUZPs|dk9u(se?YlXpsWyPrl@%DN=k&&p9G<=V7-v5Zosq!IYYrT4b{~CJ$O4N>?V^{afVmJh>LZMQ*sO~`5%9o(eWR$$N^bo z;R{BQAwd8Y^nsGc`*){eZLaj~#^3j%;sMDNJSiEuRbK%6^|Vh5w_16z;M7_2cY45A zUig9lj^uT!*rju&^Bgc@#;V1-Mn4`5d%-P;JI@H0X|;SQZTq4(0O$?<*_^|t;Mf(l z)L|*_^n_5t$HvtJqt@vqp=K5@E!&r$jogizDGGq!khDyd)WJ)g-~hVBDUDN3X6-db zC0K_f9(nF|`^eYBAAhmQ$la+0t+V6g=#8e=jeDd_Lsxsl)>_C;^Z8%Ks9$#ip5DlE zxutdm^>OX#UYTat!?HBd7KE4IH0ak}n#c4$5$W*>Sl7rQ*NH@IRb zB83ihv z8Z;GJ3d=S7PV+}v3*BWAhTjC5R~Kj;@6uLrJkf&ak={J%3b(O5X%FAENB3-gCry-? zhpbJM=xM)mF3=uciZ)lKm4#&QB`)k|$@Lym5UNaltl-S7c89j2F*<+r3tsT^?Vr6o zk^lqHkVC#t?O(22Zy1UP^BSimWW~5bhm8@cLx}_2PF}&=H_W|#=Ip01el|6!hOzC< zrC|u%&GVpDQ~vXB@P#+-CRW(r`UxuRaT1Q6Py;yBo=C*Wcjhxo1EfLIk8?iy27F>C z6`UrO+C+C$1?P~xmL+0N(YAf-t=$J!7xVWtSxtm&TM#9~nP0RB zp)#r}v2tc=H@00$L78K1s8}NYE?{=IBX_ed_x7#8^LXwmG98^+UEeq3kM0Y}niBGg zSWC%~ZV774jk+qhgP+o_ja&%MFXcaD8oiXqo1{LbaG^beTZ?23DO`MOSMHY|db_@C zGixu2piOdVWiWDgmREXQg=cghuWpuLzpnyHPlUH#0HzYRUTj}IpIT&_#NDSlhUN;c z>247;DZrM!953;kEnlModMC$=RIYP)s68==Ri8JH>*%}%aO+{aZ*of}+1&)QQ!Mh% zE8N%9*pm-gnkM7*4#q2q=gM42ZSU`}2nMIL1;&jE*V}XKHokG2CEVL58zEe1c*Fn- zKqEd;DF{N8`)(+X_4q~oKme5R4h%KtF+?VFkT~U&H{ZXJO2R#@<>5As6@yAk4zo8J zMi<-b`*PP4O_H^~unx3I0a$G?`C-d)r(SQc+pDEK*D6cflO)5m>0_KA>XMxKzkyVLMGnHN#MVTc(Uf9WVm=>Ws|35=s#I)%){ zDF|jtLOxlrJfmz!MKU%a!3WHsVJ|?E+LOA)D7`S1BXU-e)U+UX|C- z&?mvN4Z{&gd|u+(mc>Eeca;I`dPq~$Vyh86Hgeyu4Ns-OZ6B{O4o^G^?{rpfn@A+98vV$0M7 z$LrebDct7g#D#Lqe^DBE{+SR-0}eiqVUd>`KL|t9=esA-@cFPE^^ZeKg0WIA0%0I6 zKl!KS4S7A@bdY@yfJL$G63k@P2tcB))ytC$%&kO=w{^-E_o($*zcysv(O_p|TiMq_ zj1#=aa^01kqf9SZR;Jgxdf4#Dgh{1EmAuzyF|?1|Rgdrn6P@n=9;k?gglTvRk#0cO z^Wl17hb1%SAI(Y&m{kmcq4X4?+&fS`0Emauks2TWzHf75lif02_=k!~!gh&~axkeJzZTn+uz;(*OsX=-2y&gOjr7;p)lNz1a4yd>f&FY_}lK~NIJ z2~c=629KvLO#(UfU!~p@EuAzAqM#M$z|3(zbc6jfM+MzI4)1f%g1rF4*OR5VDaogk zDu30|pT9e*@ef!+_ZH&dCrA(cf+dXuhu~0pbHoK?-FIdXuDp6< z6@j0Q5G$VXE$$AOz$>@S&x;C5^%JOjNkE zJ6X=3e6DytTna+powMP+a5(Pw!Kk)fueP+vZCElM$l--M7XYhUP%Z-^8cqQOkJqO( zwJB)Ii(UETE>|n`lbcJF(#qW?)$wVKT|j0rT?2%=A`2FsI=p~u+V!VM@YuYFeYtr2 zL}|FUgRhPV!JvGq_m-6}4*UuARJoLZM9^1j)-DEH=~XBU4AvNk9$hr&FIfJRjZCC} zlt>(b;u52Enahw5YqI`MhzW6J_u}fREW)yH8dKwhC!O`@biOuSVzVO#RtXoBx}@8f zh_B%ZF=Eq0-L6WAa*yjS{;(eZlbfh`QQTQ|B3|Q)^&?RdzohVjI_>+z*Bl>r9r;fd zX7WGfB}App4!`<ao#PqQGZe&kxnJ1ZR# z^3Cp3To0N8yl0QP5};%aS$R(UX2MDjxE%H6Z}Gp!SHE9B`P}v68s@w5{v*G$Qz}o*sH(5T`EV-xQ;n%*jiJ9oHuxS-`gZm9=CkJGPJB5hP}Bn`6Pbwu zRI0M6DZ@W@oIFSX~R1oB)Ipv)RRkZVwYb3pWf})tire5H>6;y`EZouaQOPfaYBMvZ!lYAT>a#jB`JQ##(8tRLbPut~AUv-_UJditXLheHDY3WSZZARd z2a5@oiivuO3pJ1%i0ms7_}rCS0CC0`OH#pjpEHS|#vr3&j;*f1y=;NpT2LdZ(%ji_8Y$AfvBGvRTr|m{AbqcAlin-k zo~vlTB=sz2l@Bc~xTAC(zBw!|8uu}cPDIS+MP55PBi&3ou@Jk1k%DkO(b9-4O>9(p zBhTNXSW2XniUx>xE+r=}Bniy0)zPu_fah5C>ReK}uDW!OBlP@n@egdH>!CLL8!rmRt-jJ; zJvGp~WElEXfehanozuEUdT!XJXBblSd&jDOS2?}d-R7Zmoismt3jfQrTAJjgqCozJ zUfuUnZ=h<}k3Gm>6OPqDgtAj_69CafD!8BCS0)EI8N~pstSU1tOz-AM|H&>NMcflg zmmJyLkf!~Ur1>ZB5wU~ zr{tk?KRkvz9E5wm3T^jLbNAjhbpN-Aay;EltsxqJ&57rzD2;U~^lA6ikDk*`7l5O6EvEkJZ>(ws$}7 zF;nMt_#!Q3ZF;%y?AKn!R|tb^Tj-=5K4gsc33r?T&oj(r3Qx(D&38Y33mJb|np!g9;9^xZ%>bqVRZG+(tKZI^Jvc4YGc zIquw(J?X_A+e>}b`Khh|vqpJ2RpnU&$!}f*vX(C?Trt!9J6j$bG)_%To@9jIug!E~ z)E$i*($`o?I8L>zjIk<+xny8y?8gfi<*Bj$#MnWd#P5|6yly{=dyaUKtb9HWvC8UU z8vOCE0^45A-zxeIJ$;hF7boHHPMkZnOX=}IaAr)u1=U101=Y$F6E}jB#=RaKcscmj z?&6hyi_2E|%Q^BY%*~`w5x4&mFUI*JPoQSLRbZdnQVP|6iJ7jIEfjjFz(WJp|7)fjXe#CK8pHZ5S(SF|A`s7UOe{p9e(sz=MUd6n#&OolLNbt9R zlWu`)bH&}!{g$!IFwm->jtN4ZtV1IY8XaZ9UNbl1Y|Ur1ZlY4~mw7D6|FNK>1TyqY z&GK1@4Xv)RCW!B)qEcp|lslDlT>3EOLh+EoAvUJ|40w@IG)yr#6pyn2;=iWwB2_He zGO^-CysO!lejQ2s0+B_nsa-_G?-msrf8c6%gNcg+TkQGQ66Zt}BW`3k`9tKob~sRC z0FVy#W`kRlzoK??ykwW_;d9QICgVSsB7G*wzrLr!pDDfyRnjige$U806{nHxqt7#- zoVe+JYhZnTQ^tZEkI+Ps(vW%1xqEIXIk?W6@%hCqE7FHCkHVqUcO09zh@Et|T$amK zk=NFC6GNJlD!?(pQduX@a$ofqyUl{Fn)tMbDUOG}l|Q1q#nZ;ZzIYD}27{O)>Zac@ ziMN!IdeD)pI(g&5Ih33!DsoY|L)&tVAsxH->R9{G!@NwV!*>=`o+VcpoWc0XA9;L} zfe$vs#8^4(j0zYhQz1~#@G$Z~li_erJiif$CFqrEygN6C5>G_1PBDLWGw9lDaM;g3>IN$!J*$Psj#$lu^p{t-MO8 za+tf|*UeieJB_FhTdmKcvNfm9#j=2}XT=vvP$hEBmUa_^_}#hM8l``z0E~U*hO@s- z8XPf{la0JX8g9J`>A2QYb=pW>@?sac4xT^cirV0^spn&+JEDNy>SBYxjtuNtOR}(W z+Jg;09Sz`LtatpZzQ5z9O&E|E>GEuDW_MEEdbET53j#_-Z-|%a&RPyisxJ9it!|py z@t^Lwgf=9r%=71*`sQ%ZP~7)x;PtQ={v(1!f@43B&SpBfU19zwg1$h0qEh!_qyNBV z)m1CU&2Uo-AJbetB?|c5sK&Yf#4CRUWOHg7zDc*tOljo#V-_=fxk#dHnsM$ic;q?Q zfaV!;@^Q-=dhjo==45ud|YfFv(Eg{Dy(aA>ptYOrOe# zUb*&1U75s`s)Q|rqyYBn7KNCAoTWxm#ej;uWn(HRUU{rX0oqnQQNL&0+b1{~7d!?| zQ5jwy8u1L_wC9J9X0xcNy!m|#3_u-XI>V~iV!YV8h{){~o~SV`h8Tdc@ijHt3ZJ8b z9-!=%mxK!T$?#R~F_Q~U21~vwp9)*$y!^adpMo)g1>oy(CGU3wV%e(67>6 zkR_-63jyy21De6IvC^BHPi@7TZOLdGANGGQW`B6}%KVw=8`&E1ef?F}a;sV;D*AOu zgWuC<{P{lp|2lV>is9kkx8ypfx{URV4bg4j#s=_Dgr!pN6_hHx@0sz?M|V_0r_64m zgYbEew-UGC8|OAi-c_%@nVjX8G_2tKWu@lry3w=vP|&iu z#$iuh>F?$_(xvwJ7dO+#Ywt)})g^!IxuWcNYOL?>owMYpittV&l^pq>0z$yI9yy3n zI49^j{J4rO@h^w+*zU%LCo~3MCU~z3mCj2vhOZEzv%uBFWJtQ+_9Snp!D>N=UNLn@l^|SSbu-gt* ziat|+cd?Sq=Dq&Uu$nEl!sK-CcE;1db#!VZk2gHw^BeudC4y=@aE&H)ksZ-1nAD9VC|u@%-ia`n~%vidu3iINmL8xpaAqdn1#U16?bdl!p}+ zDjFOOl7z~Octbb^R1@g}pr-wZN_nqOklmbVXKdo(_SlE-uAJgV6d^Xp`7hj3%aV6Q zc|XP+1uiLTeuxmf-fPq2Zq6~R&PyfLgSx_rtmL*Z%VN#l3uY<>cJyy3y}C%rZE6txN?`| zmbGjiV97$Fpo~ifLux7`0EQ%=QdL?OEMQCnPc2>KCbFTdAm3;(h${B_y>)VdqgiqI zJ-PCCL4SdX0VVdmHv?SVt_?_@^U;ZOQtVG{UlVr>md!{XSl_h9&WK#H@eJ9Fu~E9T zsWWw|OIE#0?)t(P6CO)~5z8s9PrzvjTm)W8;#mZv#_9K3>q%|0ouH0bDquhTWrR)o zuxGe;Rz>sR(bZ?7*8K;)bE;2~DJ72Eg{?daz*Suv4IrmTo^oMegRfu!rZ-gSn*W#? zx1}T+$K|frnkG_@T;m#eh6Tk8>W0gI8WH)>D{rG!KFOOp=#w4MCQ*FQ?m8lPSva_B z0v~yAZhd6M5f58u-jq$2c)YloeCZeq`cUL6cx~4q2RlG2GUYlii8e*^_iV77ayh8y zQn)|CMUt%~QY^*G2n>rsyMa6IuJ=vg+mXKlHU$fnFUdvBm#?hUw7$v?08rPugc`Pvu6laIdMKE5pG zb}@xd0=6vQk1&^T+U&u(KFF(I#!vl6Vv%33V>PAM{yQ*Fl|%s%Nr|azMBrpUI*L15 z0VM_J$(~U{rR;UsrdsfljM}!NRJQGJ9Bc_!otR`sOwX~gjcMHGwgRUCS0_!=dl-c@ z-zzn9Q0>PF_s>#{MXw_P9Ai<``=esMMrB5*?98*zJw+1F!uGl7$U$@cZ(!58DSJU3^)bu5#T75qu!d_aZcF ztF$mruoo<{56Dml*X0LLBmf`Ed;q0iq3Zhetm;wzfb6#6(>6sgdm2c>Vgq3dCGj_` zOMb#jPbuDSkw+XCLSBM-oFWvQC8A4iV1vvO_5!82L>v)4KM=t-<5z)YTUgg1jT*US zs=cqdM&nHWWtv}ODv~5fCqfm8^@96J+aIdPe_+O5dtI(=5eL4 zrix}dR^<8n%YA6iCR-J;X+oQ8-@|W!Qm`E|3bmo=zBC9cJYd9p6?jKodgoT7PT}4#WgETe&F?`r3y%Hu*H*nZB-~v zgDe#EiI^3}YoHWV9w_I2BH7`fWg%PZQemkib|D zPlM`}C02mCdW9$8q9y&}Jyt#tiA9#q3ylsxwEBE56*G#tJoH`uondoq2pK-2u5C6e^R6%8!)-NG0w~dFK@5LmV*O-agOlSagTGT z06qzaQtaLC>6ROM8}H|Sr?@B0#-tprL5eNVIsVTVFY)(8Y8{NQd#h47vq&tBeK-9A zI~u#}vyY3XJc5;uwb-g%$*uOoj?BCjgL}|e&-I^|1FbJS%R)Umv$!6)H>RNHqYUi{BhH@TANRm$UNt*A zbJpXMYR(hMx;p$nT=98~+XC-endG0c8n8L`-ZhV4It4BGK20|V)`R z47sBrwB7Sv_Px&cx5c)3cYYz#zb=WMZdEhB$k3t*z+xWWO8UMU+22Kd(>C)o$w4Vd zY}S3(=x)2>xe|^9sP?Wj*U!3{8VS*@I8>5gsxoZqq1anW;v?~e6t~Hcc%z6k+#6m;p&umM=Y8E1JL z2^zh-3T240ZR_Fdjo#nU4*Vk6!GOzb>nzdOy(gpB7owMN@GKM*NJ#98XWx%ve@S!@ zxZw$E;p`i*;a{|QY(gTCSZrwtn1uwF9TMkHk~$r1M`e9YaB_VXViE)c5@0?AsE7bG zk^l{pjr|!I8oJ_>AtiNg^C}G}tnyQ?ebFs>RYL4oI1p%F3pD26u-5;1jrI-kZ4fGG z?!+G$K8j&~)RfxS>R`d=>aJ!x)5H=s;7Xt~1BM`hI+DvENS&6g9tAo}V#y+&kUvb= z-428W52Zh^SM{t@jYBE);6r^iq<0&{8bE?(J-nytDN;Sk%wRF+u~|B+^zeeZNee+F zBkzN%haW$*a968}2XJf#AEmKh%y0!|x*kzomr8h_xUzg^W$~_qnA1T5r0go!0L8Ko%c!G6)M(ig*ppV6r3|l+4&{K$ zd)7&)rO;@^Oscsl^xg(q(lRgEU&9o7y>+sP*)=O*p89dZGMqcBY#}8*wpj3)L)-h} z99j0c|7nc{!xu@4Q6=p|*@!8SIvr#{WVugFyro6GlZa+5rvj-r0#qwZ`FUF{MSJ;5 zeN04-{CTcrnw~R~+B|2k=Bf|*hHgHC%-XY#mAk-nyqxMXS;wUX&D;ntLW zD*KuC{H5(Uw;N@nG=d%xVpYdNL}i;1N-&2&_ztHa!tWXkL zcDz%Asz;n$+M>VzOllJ1M%mdEye6$|*t~%$C7vb$G4x4;}*G;wLg~x#?v>rr`AHSMyZJD2Li(hz%`G^&W85MS6GP>XxfcEhSYV6#oAq2iS5`7+(ocs}Nh zOY2bwzFM)4`>`GZF9=OEs5@KzQGAfb584Kb$o2!DVOgrTqHVUc>h z_6=g4zfLQJ^0<{;zTRf^K#V)EPyVH`hyKs#I(xxNy#+a1-*yet3xR% z-_X3C};t~+Y0a?p~l@IZEHi}$9i-e9? zplUt#s8OD=?$K_Sa@^uF+rKVf7C>89Me`l?$`6yYxCfG6(m3`}*9%xHJQwnw4I=Ue z?SgMM!-5bvAWXxI7uWE8GriRnP=5a&;L{9XpvG2TP(XY>a`emXyEM|K-H zIGiU5%{E!d&T^kTD6iztcasZo4-GWN)Uy5^1Tt6LfCo}_1KJpt$_4fZD2^eV5}5#t zTW8BuV0qfn2uMa7Qo%awV0#gO-2r%|P zN}v=5JeQ52ts_=^;mN8KJqj%RY9kPl$rEcZ5Czsj0W?(U%%W|HE43!@ZpIayeEij4 z6DRKK+IbxfnR=O1J^bNK>&@Y#LsRAWc%FwN0EF4Ni+=I7`eEb^A7Qb=FenuuiUa3% z+-KUBW+bpj=YSX;9H@GJ2nWZEvr=g3zlCdW9zgzGLE9e8)W4cx(w0Mr0mmzJHl%`C zM}^s9t+P1Ku8;F)U%uXXgJDdxdq>`&NPfl@>Tp=q3e>dSR0U~^khRgHZXvRa#qN`} z*y#V$G*b@RmXIuZQJ}2R0Vdwrvd&d`$jY=2*?&RPf7kFkJhq_n+E#(psE=z7z#Ser=NKeZ|wCGJ%=s(G+HOpw^3GUN?dZNaZ zY8&F)7vY;^Ef@}{Mq51P231ljP$rGb&_Q}M7BZ8xBq#~uE12D0;-lsWIm0bMS=7QU^mQj z=Tt;uJ1l_Oc=^%utFIque0-&H2wJQL9aMptG@uo#_A|1{)eCB3F8yLZvb|*flfxSx zG}msphF)2!km3cc0k-(M#GES&@wo5^Kc!`cx0qVew+&^960@emxBs&&>5Gf4ut)&Z zkp@;ofjCBq?ht$H7M=v8`L;!v$ahnxs$RBO`Dp77H3!p9nFbgS9?F+=y*~RB9lGg+TlK z$8P89)tz8bz`&asEa?!7IRWcYpGw|e^=N-xq&se=%bVEt(m9FD$b&8;;ta(*4aB~bh2 zdgqdc#H=vy6CO{zzkQ(7CcrjV>5hOJWh;V$ot6l2BxuLA%Y#T=c3> z7$*E^f`hoLsWG|9RpzI07GewdrE>_e6*&y5;jR7r3j7(w?*L|EtT@u(ipQqc=_a_y zWl0B&AP@z_p9F{ttUon!>~br#nwICgbsp)%V$meCcpFfr;megK2T<{*>AvXUPUn=c zf>=(@n#}OG+m}P27&lcCouJMsU;z-Dq$))p@5+7M$>UeCPe*Nhk)U(7nG~VwXH(># ziP*;=1&jPbNdju#qeE<3Q?|W8?|wH=zYNZ93o4TWoQx10jXB=GD`)$484Zwvo&3uaLTn-H0N;-a z?gJK00&2sY%<`by{VRqsnWttOI5CIq$^xw_0^GVc0v;^1Bv zb7_?xyPsGDed~NO?rdW}kE$Ml9AtIgT*7LO@m-$Ke7-LcR9vC8mdc}~u<6HrVtAw| zk+0hrgf#@QL7Hv&Jd|1hZuNO8&qErWFi6e?RGT(*5nQM@PZDPnYmgNu88^E5W{H=w zZaVB#rG&@}-9D7>5}pI)=-ECMx3>6_u6;DBv|y~F@*q8F`yN0v>j-TnTF#|)qTo53 zidF)bA=LqD!+ZRNT$T`=8<)EuyV3Qo{% zsS{_5X(Sv=UwUfrSjX}@eRj&`lFf$}o*k(irGcQs5LOwp*Wx5c>r-Hr`v15lEM=N= z9j)Bu>Qf6%EncQ-7-*q``E89rmTmx3H7%qj7^B3UuE9R(GhQds%e?slVONySES=p^{jc$@~Ntv+;p)Hm%M5&34isXuZc z|82B#mUZ!t5r^5&doKL>SZb!FAB5X6ljVD37U}i0gc&}kv8#m7Gn40}s(~epYP#(I zY~bdcE|DUTI6lXz(uNT~e+i6A391JZeL0%a+#2p$Udj~9P+$z(IrR)S{@x$(u&CD) zyV@3tkgH<-`5izwHEVzN8*1X<$Fi%FQPyR4I(DvUQJ^&M=falcAUHa)ZVFOS`s@eD zU59kjorM{t(%6pAIb+tenJL?r*?>@+*cB%!Ob{CsrBjs~GBGvyLROnd{qrF!!5!wn z#Pf($6Y%Nz=6LfLpms>9==bS*m4h#j2#)V=X+wOmLcj&{qJ+H4R7rFh(L`jW4mRHN z(I0ALL3HCKIe$~u1nm{K@X*O$!pE4&u(!Y8oXOCkJ-K?MkaL0(O-lh_zQEKn8O`47 z4?ZM!C~C{+eAs{221d9jM$qc5mjqljGq5lPh$98hAK%o7^~{U${YI zAEjT`ZE1FIsOeRy0!9y<(n5;3C_{>2iFYM3p<+fTUO*uWRh#Pn6M3Ql+s8R= zNFjmr0Qa`LckYFcaU{7Jn`sWPd$)llX&6f^m6!`Iz%Yv=NjPl$hxP~Lj z__W0s(sLTmJ#E?losB)ycR^$UM1x3R&2?npxH$P|yuw+^dQP6NZ9Vov*eeNC$JykYt>o$mJbK+h14JXC+NaN$|JsG72kI%u5-b$=x^{kRe zD9#@wL?2Qu6GMh!Ksq_n>9YN|iw^uKe|It-)XBq4>;3{=u0}a8U$xS64h;x?B3!fR zDg%fXD*%nGXs*P^Aw6%Uggr-P+Dd|=xEEK$_Yyt5smv3oW<-obHtjX}+G>l& zjg$j`RH7KfzJ)$XuTR6ixYl=x*_P9WR;=2@3Kx033*FA8{nhUtkB)+FUW<{MdRE?X z_M{!BQXvEQ`6wU>?g|6IEE-PBAz1I!=jW6*sZgq7SbmAuhrZda;F|CBj%0WtziqQv z&?$nnLrBBQp*J(npz*iJ@a2DMX{=EWv&lau-!JZ6c53|k)pp&{ePMI$-dC1eUJxOG${Ul# zmRw^&#=fOA}~fF z>rqB{2ox!zor%G0F-lLV#UINOo1j2ZeO6SD6CkTvM54=Ij_5O0A*Y{-Bjcy2rwpl> z!rl}}7LQWzAc_FqN6ESNhY6-gKdCdXck9`A=`3v@tQS~eOzyAt_}@?8d;KSL_4awC zDyzZ`v5m=cZ81YrhcDtb>HI+vuLQ9E(0U{v(zcAun9IeYpD#zL%NV2euR4z6jOtSx zlzifsslJe`E=?)`NP%P*GxbK|>+CD$CN$z;U19M>hc^46r~%DyDa#wh z&REI=jBLwh*kj!sz%YU6)LN+Q;SK~PI?ey`>T%(Yzp;!GX~_x*N?cABx?zU4_ev^h zvXt-HUiC)?lU}BRen!nr!D-cN&b;i4rj8A@1#wkaEoqA?=q> z>d2;O)U)eEFibs|P*=>QO(T^!i%ScY*TmF0ka_N9I~DOP z&lcH;J#!`^^p@9CxGfT8(|B;x>(Z`riOV-QFD$yRi02T*0e#_j1J3uyxm$l6(1sJ+ z@?L+UOz^n^3K`CZSr9H`$z>vokoIN1I`f7Zz1y(H(j@uf_eEO1=w0k|xero(yUZ4`MqnTNoEBtjJfbQ0tmrEzTh)B=r zLI#JUz#^p>Q)p7pz1~74gN;K|1)5p-+TPy#6(i)%=v?WS4{7@siy3nn@9zVY%qrj! zxVAmWWLI%D!(}{Jav?1iYG@%_uG-)5YT^4*gUa>)+;0I^kj2T~ssA<1*|~=Gq_CQi zIyKqOuu&;7c1^^H?ZbSirk(bl3@MQHUi^gz8hJeKyJKuJ0QlK@tTaPo+~z9$1FFlL!74t!eVF?WYuQs zspCj3GcZM@i2z2=!!-)zxarUxvaF>Xh=0g(<>y1=OOsD*-J^@YpAayVqUBlVKXdh6 zrHR5lY^vhtjTwa=yX4L~B~@%x8K^M>s)6)PxR)agX>@7BpU=@-ovzf3A3G%&{^2s` zueC;h8jD;%2_iV{6YNjJ-!4bs)v}Q922(3QmKb&C{rb`E8yH|J-H>w)RrO+Wv&dc6{6OkZx=mtERlG~>&T=WHQ33lfz>c-6pnXVg?>Rh$&W zb6Zc|+Al$%2zh?mf?rbr^r4H;$7k|{ZLHpc6&uB?Krn?$qPYAGn|T)M)04}6?K%E6 z(`Gle3w0MQx!rZ}o7(wCH%%-~yetYquc7k9FL~VQfD?$5-ENJKun%Z#$yDY3t%P2h zlyYd#ocDy1(5yv`c~>(!JKmaqTy>qp?VLH>l+&_ljSGHXibb*?!dw31#Br~o!DV&9}gB!aAR4%!Kg|z3{;{5B}KS@q` zZpPe1PMVqk-&tP(?I-etuc^k0fhvEK%5l?qnsd$MPB#|#Ok7>O5Q0J zpd=0q`uBMHQZ6SeqUgS9ttYr=Fl(DxmUz@T$Ju@9|KRy9ZWs~% zg#w67qCeD-=CoWzmzO0P!BdMtdv-sD$I*($yLT$`yv%GaOR^z6=oD1cI^;zsm4^;^ z_BPWNa6Yt*=12fLdhdD?-RwkJjZWQBe{@h56sG<-??OA0RJ9$1ym1YkExR$-)WK~w5_u3?^A@Bbynu9w%p30RV>)PKnNMc zmAjtef-i?6XT}1rzw6Q8-r!1_?RDAWLjq-)Eir)jHxSjpu+?`0kg2rW1!4f##8ikz znUyHy5G2&aq#zGP?OgdYxIDsIbuUN2qf{9@Oyo}6;>@sn6o@bN1uIUKg6<%s?S_*B zQFBI(SnHHiVOlVYL-ORTyq1EjPvcf8c{ERzMGEHwKjNdO^0PuiK}Kx%$hRwk4);&l z2+2G3FoZXWq5DG&p6-(c&Hkt_$Xn2nyvvPzeHWDhSZ+6^VlFxiPp1Uk7VB1FYMf0} z@c2;^OVBE#@IL!%dOr1)J_dx!Uw~kaNi5i)pX2p)X$IS39Jz@Q2~c6inTg<3k%WCz zXYg%Fllfw#zn$S2+)ZTsVW%U6JXqO1*`_tpM>4I*8hP0MEBkD1{ZnA zWLD-vFOfDH@vx0gy(=0Ss9GsjexgslQP1Zp@@{m&40QTHHC1599d0Q|hE-jTlwEhu zRKnbm&wC2VxKs~kHtL~BbQYx`vSN@9i?Z(q!lTNUI}YG6A^VS4V`5AvMRo4w(ovSt zv=IjhXMG~;uXb}+e-nN6?U>tiZ)JO1g&0otZ{QXWS|+n<`>*D&?MT5~4+wazvK4uM z3JKW>y&o7htwr=`M%EIOfLtI6=JXi_Wv)5@$NJG>hD5hOE(1p+f%>OBdjE%`dvRy- z|Nj7f@4z;;ne$n5J~PJ%H6uB<%K12_oO6gMs%_4vno1#R3dt#?P-u=JG=-efoDZR? z^eG+u_Wk_@yYK7Tb>H{~7l51n!9e6R z#F7Xx#ZgZZqe7x#zcONPiXLw1jUDKZ2n{5I-3}XML?C5(1r&fL+6ie;ASTfzyn*{P zKX)>gOPi)}*g{YErqJVYVYDmPuLDI`CK-OopXb5{cqQ%%hnHI*p*bw#y%6*QE#>Wh za7qLGE)MyghGNlBwMMA-4ahe*mq}gZ7!EnZMzL9Fjyc##=8cM`2H-_Vn5fSMp}UpP zC_2=Vi8H}NZLwU=Y;I0bGuVx{zQNAL+2aBQ_3A9yAUHxo=hACt?BIp7iWsmW8??D@ ztxbl;FgUcN%l{llnt}`q;z@(01n7ZJrCl@Pj*S+nB=dICkz)%YMeC$XjmY<`tk0Y# z2%E-Y)85lk8gWPtkNAzlBQo>10CbI5&I~E%4IA}|h2F*R{UV#z(qOT4--~pv%L!Cx zOq7=^m&rl&IiL0G9z>Blw5vB0^1^>2XF(Bqq8ZUYk>y;M$|uqj`9l=3A(t}2!3D4= zZbJ(0Sn;ynMJyN(aLG4AUY`(2p&=eIc%aj$9wM!$NBZ#|Y7vX(L*&aC^Zkgv^No(4 z#iC|$eEZRNu4di&7R|@Pq8nO~E5IF&^|wpQ37>|i0`OoRxCbjbfX?O2iuS+)&VX<3 zS*UYjax5PHOO(gGUnFuY)^Y>Iefwhkw_=IitF0Jh6aE(Twlo;vwgd_|jYx4E*gS(f z7sGv~5gyByw*k9)-8^nWyUW2Ai%ckdk!=Oe}m-#bM-t9V}XE$Pn z6i(w%Gx&-(*!znBAF?c`B!d?r%tOW|Y9qK4aomx#yTP_}5}6v(0Q(bv<<)!M7YaZJ z1_`M|zQsf!yJC^2$P!(T?gW!x(^ALHVJ9#Tj%0w8F%a7W8jQl?vc_>=1h{qa4hDF5 zvMYp$$<1RUj5bppjnI=o+Jhl!4mh|N&G(g9{;4hBVZZu`8qjd0=73)QKbMe|y(51A zS3@C~#X}`|%A=>oq6wGE zAU`gO?LWGY;qgd=pJ77uh+r@oG-Cmc!oZ`jTpn0h0tqUP46Soo^t;z2 zo{)x0G8UFZ=AHKkYdBsqoUeZuBRWO7H6|3@WOGvQA- zaw3c8#v?n(SrlKj9kZzo%tUrI*qP7PMUGw7NVsTb7f~juIri1?ovid72A35BqD2IY zV!&+M3sJP|WD=AUe;vf1dlADET!fsVy-`!0f92QnM3WYYvPN-} z#wm^v7|l1$Y)n?azk9&0*#T;)Z;->$tz=ehIth^%&AVfF<*|6#67JO$R=ST7Yg%*b z;Vf@rb;Li<7Zr+tttxp@LQ^xLxrm0eNPAYKDoVenhcoG5H|eNfAAvf z_7%)?zu)M|qF1K8&vPE5zXJDuFv}B6Ivm4VkTH!-wvD#7h0dGzs%C1`5%+i4=$^3F zY7*jhLnoNd(*mGYb5QdQz28jGU)Wts_=t}KNZZG^Iz;X!hCM2eFO$)^Wbh#zRzz&# zoOH{O&v4w&Tk2(*&;%0CO*PotPoR_{m2<2dh~Ahg|_Z@ zHT;gYEfWVh9mp8IS2G<7ztD@o{UgIYJ(oJoO?#^w23r_NWA1Joe)IIP2B)IY^U>%%BA?lx-nXXcc?RZGE&nhX#pIZY%eYvg zvBRL6pRo;F=*Sgp_1SP*eFN-7G&GV}n*==V!tgvH@ieio-U~+Uu|^M>GQoK$-UIKE zE;4G2d}BBI-qdftn7fTfM=)8rjf+R*O&~&&V4exMd)yp-sB1cQ@e4Ivr46S znYW7xug3E3Whcaj-iHyMmVVMdT0 z7y9&1jezN~Wo&r=S(5e|>YFF}7Yo%I-P%Ozd_w1WE`+=i*$L}-n{{A@cKwT-^qR_d zn9kiOy>PKnb8dQ1R$NGOrdg$->cyz+Y|n$_!7errp_a!Pg_>f|xNFYtF)%rQ(O}w? zf8@~1QmfE%<_!lAhS{9hCJ(qIwk0~x{q|hINb!q~-ci%mybkM;$-cHI{4SQ0kl6>}^!A*&P2UrURwvGEA&05=rEVu-igmcZN@Hy(K53aWZYZ zm#4D4XWRZF(LPfRhq2T5 zbElgBqCr}m>75mgE32w9BhI79u*gnZRfg+aI7H;|gZQx~V8Z2S>soa68oTSC*M__n zkdZS9D}8HcKbw%pTr6En$wTcL=U+KD;GovnG_*vK>Cum=Nea(-${3Y{TUZ$Q4#j>1=TQ?60j^W(o6NZts%XLg>e<$0U&}GfepE=+QsDpNB_(kv8Uu z6KkFmwzZ$vSiRRqW|#8TU>(R`_$5Qfnj`gFJKOv#?JZ->Mjx}zuY;KKtsbQ8;u?N( zPHWbojvsP#t;LM#@4eDeI)xnFbZTeXaiUy~PV*l$ZwA*-wO?sx%#0s3UFTjN`FLrEUkkIgm4#PXZb@6tP~Nxa5Mt2@Js z=sXmrbd9(4BK-dMb@4{WL%%L~u5Z`zeZ}nw`f_mV^{wG`*uSnlnLY^WN5K_VTjb9R z=sCnTv*;X4`q&EV=+|DQwsM2{dRC`uFoJb>{~GECW2P{#h|gna;tS)O#O|lex>eWF z*_rJRZ&p#Rn?KVveqFe`H2iOga;0XAk+pchMoCLPuh{+%ivA%hIU>_JwbS1Fv2Nvp zW4Ec~bYH_hB#-&8j^Ej_wfFX?7BZ@jfdO_mowZz{Aa}3=e)eU;-dD3>(UX8_mLS)7 zK;n*+A!w@o@_6MbG7u%*sFURK*@eS5HXMJigf2O9;m6i?&#$OY$L<|Ke@clvg)lGg zuhw}QZq2sDE)KPwzjG2lo+JOMtw)7bVtAeR@FnOQ4Yx-Bw$l}-<6WG!oWZ{NY3Zoq z{sfN`muB6N63zZCJ_xpYbh)B_0P>=z8()AKXmPGf5TiYB0s6HW`Yk2=5d5FwCYIS=Uay~fx$vc3@pq!Gm|oPd zWA%|Z`1Lr`iARS{&$?hgb=>Pv7Hx24)Oa%cKM9Z!e%&>q4}XZj_`Y@woz^j2Oa9M` zd84RNm7^i9-Pi~#N@n<-Fqpjb6;U-MqY-v*rnhZGI;I(f?x~V$sx7ITA4@O4)9Z1q z$aB1BDMz)E?$0Ca`)4u7a3)jhNVAn%zwu4O9Nyv^^tR&#j!1EV{5`R5+r}Zal!&Hm zsqXcX8(aI)wluPmKUn;AZ;XaajLLflVDTuj z(OA&e&q~BuWBOs9YAV(#6U(D{>j0rtNs{Z=Mu*B5xKa^HrX$H)DrcJZFP(koH3?C$ zc|3p9_CX>mfAc}E?mIP0)r@^@22i)lU0Jz!>V*AWkEIQJU-=S@V@xGguaae@_NXL{ zpsQ6xaspYJSj@2ed8ASq3rz7;rXRO-YN6k36vF%aDLbd>aP5&JM;^UCe{OI^SoXYm zFUDe-Gdh`(YP)BjyD72ZTvnUqY?t7B5a$KZM!+FbK`MNfg0YTn)fVO!U zQ$E)&`}W|n$3x8acebq-$li(^*gS5vfD4zn83FpCYT}=y;AM0-VsWrvDtglWQDcAk zJFB}fwX)**H_PbMESc1G+5NRAePuyq;A5N+6x5wvTFbqQXBF5nS~WMFWJ=HV>p)wR zPM_U>5mZrP@C_c8eh>Y(q(&%7xp=A3y>t>&`OGibMrM;Z64t+3JU!v4!Wfb^V%*YU zAsAB80_YD7F*$ZqIS0p+<(y)I)GZlwG&5y$5D&zbfOx-(X-TEp0iQe;euPY##jWH@ zCiCNUio0$*TEh6^3iD+Fori`-o5$5-og~?$%$D^&6VIZ%gdrXD=~z{XNoy;8coi-l zOFUFNIM~x(S(8X2Pw00eycq>46WdJNvONT0P;6!^i zDD*aG)c*kIL`T0*5a{ zoTxJAD}H=J3irN9G4m`puHiJM>Q)6-1%&(~W?ejOt$k_1eNCd7vgj_2*DPH@VkYQ+_OP~aDZEV>NbEp@z9B-uk~+X z;J`X|48che6>4%5|MZjlB#7B~eNd=d2+A0@nj?seUK}jQ&A`>7d!7x7Ss5aSt`*

fCpFNf$A=gEBs>()Oy$kMza0OA zN4P|P_+qGbBFrY&Z6 zb$~+kpqsu7h+Dq-H&m7da8_>oV7=2l;8rcjQEb|osTAdJa4064w8$3%RH&0cZO^?= z#%=dyO7C*(zk48qw~l=`A6BXNt=hGtv!rOSW66+0d`pD(h+UCwkAYXcR5*l=5I83L3>1veB$>l?bKeOvq-JgZ zQq98A1}_JW&n@?h@)9LRZoin`6(g!XGb4ieYdKT5*5*7{=F+VOsKUhi`z{rYNW)Tt z2%cO;H$fl6nYR4`(n(s_)De{LGKfbvnv(u&Gv>4I0pkVskPWA43_=I~<5EooAxs$* zOePB|<7VC-AmbaU9nVg^uAwh-8G{G>xyGRs(r;T(=MUkA@e3DM?&SQE$M1g|``O>8 z;c}^XT;cQMwIkkqVya-ROr=nLsw5dg%E zz?uNmB{Ti;Zvo>|lJCDA;}l9Jl2DrJtu8gXO)sT&FF`e{C@b%9>o>^rNeqn$vgTYj zED?Z{$-KxOj`b*M4-#OQO5s6LG|&M)0IU+tpEPsr!u0hmb!8DKbdB2ns#x!NO})`K zvjst5^$5t&i4(}cRVN@4-3mi^6ha%bbS^4R*cr_XHt7vEJrK*PJ+E@njoTXwRjC36 zoKa=?zvPZ4bCUqAz~i70KwHWJjv>Puy7(FG33i|({v2kKYFKD&!MxVikR#OIvlpWG zx~5*^yO~po-X}?fJ|)nma!R@O5z{ed|H83$8n36sUPE6> zpA1YhC4$9OC;<<<&e-=kI{{F}>trW#KG1_eW+PdEfHj2!tV#7!1W8nBfGXVBxn0Pc zm&tql3|9y!H6Tv!!04%#(=A3`d;RAJ=E$F9j1fqr3Z#+Nu1GL`>ONEVQ9^>B)4>XCRKXC}C`th6Pu6PhX*6wY27c7$uv$o4~dc*o`gsfr+ zMpF(X#2^GF*Wr8wZrZN1q&He$&{e%PwR$kNUCtwnUSf~iZ_V(7r_Gvx%!UDpasbwf zf9OPp7?HstLl8IsCHGzVZqKx&2+=@>w?MK}6nQsm(Z|Z92;R6*QK@|E)nb}qYB9#oSv;WpRJRJD83TiP|PUg(^3x$Bhfp-#^(|@4amBrRAMEzad^_cKf zp-czV&(T>^CiHJNJo6N+!GZR)zH^8pGl4Y4QvGm_C;rHB7G@@a6MPdk2Tie64u4>U z$?uKKT5Fe%d7GT#_=_CG`SmhRU5EpP;&ttrUrpaiXaYZ$hsC53$gNXU=sOv)(^wqX z;fQDzwVJ@osbh=k15jl}kV>hR_%^}4giObD&VM$N3eIj3HY%IJu9HAwrxuof3&D zP~;Nz{DNRr7&?M%{moiI#MFYn71;1Ut|iqe*5{!8y#Xc!&=e?Y1CZmlveL#B^@Q(o zRZpnBJXUw!plp4j#MItVKRby8J2?zBo&ufjB}3;J$adfWg&7~xcN%UVyYijzwjJPO zk4Z2l57mIMZb$4IoT_fZA&z;D{b?#SsNAfw8dRn_64s2|c#v5sQ zvEf*TgkX~(;9WB@`OsN8@C@0^t+e@!_Kgg`M5wXY@wMz>IA9Ha<|cleOsE^%OYPIP zWFnx`hos%DC!QM;({BAWln-+kaq8qH149bq4XEsE6YkgVx+38qEI#E-X8Lo)O~`53 zM;p#Ndakbn;riQEIoIp6*O{hj0~`oeb3BDJpM^@%0}?c;L#up zdGQ)}ZJiqr_woWuny-ne|PG-B5_*kXoIk4 zh~_+eb(RC2wJBIrrFiT(l%vYMUeI^*NXk^Yi?w3yL0`lFS--RuNyA?i;BCc`-iu&fH6d>3#U(+>mRoA<#Hymda6p(^CYgokDd9b4BEjOe0ugSA|#iM^s|LBtUY7k;DJ?LkeeI`T|N9B0KqGFtz zT0eGfvbbXG+xYN-qhVmM)|=3Cl+aFjlQ4+8Sb9QXpv?sd@ReeYu4K;!UOMz~!Dok| zD{8k{%W34dUTYU*-nS1|G|PDu)7FxFrY?^Ldx)4EKDT6OBtkf|o>Fv> zD3%CflaEJE;z!*o^@D@2oaJMzQ>75%>zse}^jvA+?`Xb{A2V+{ZoG`2JZW`usen}? z3@p@i@rr>C4L}l<-e3F?>MenIAZ&8UYL5GjFt-WTo4Rs;{zJw~>82VL*Q5pxhUtJ$ zQT~5;@Td$3v>u_W@DYE`7J`igg^-|Ag!)O~3EBZP&~8%AVHTmM-k*)Bf_-F5)wz8p zhJ+tzm7i+e2|P7=>P3CHI+ugOK#JSX#j=8o)t!yidBy&F!D|p?N4d3WD3_770?9w&25n1X{lcF`k^9DwglhRB*qM zLCRdEam_#XbT(xVdkwL62#BpII0OHr5~L1K^&{PEkJ$0pso*{nfji#{sm6Lio*u;0 zVEPB_-ufW+?GDOiqxdSZP%-W!pHexRqcV9@G~`pw?cEB6Z2g!4shuyjiBkON^<5+zzQ7qlOCo!M-aciYwim; z{UP8Li83eSW{yML*K_6TdHbs}>e$GA&<)qb)cJEi2!EGD@+KiFAM>pv!xbq~G^)V> zlyYY9)AXJ*pCIDK-j*SZMaj4#`qPt7CM$LcZFR~${#jZijy0X`I|V&3fkO__DWdT4 zA>?;}zH1)bANnDNl6w*>2Kn*gDFjExKWSDL?7UGy{LlZ$zL(CklOJX5GhsjD z8S!NU?9{`AfoECe@l`JGq))*i${4a3mU4Pz`k~ixr(5+0NTWCu7SuJ8`hH05+}pDz zvIsi|(H&y5E0D_HFvYy*Kces_{%|lVgkoTn=0Jbx+mL|B-qYoi;kkjVx)1*qa_JWx zcAlQ`6?XYoVJ7u$p=ZuPX7hSlw~4DwwsGz zm291VUd^K^aI8Hv>CuSy3D8=h&Y8VUg(25Im(Cj&{?IONl#q&1G#yU?z!!Fq(O3$Y z8xs=Y*St0U*zHYI5JdE3>HGNU$y0gCjJX$yt1JY$1wHSQ=)X}U&uLA$HHIbhzj<*} zeKL`?j36m9?sc}CZf}nV^F_^H{k_#V+n;k%>_EZ7zZ_FWVWlF)v4Kq5gLJ;~N6A6s zhP4lkBKPJy1j%{R>dw{9k5aiET;zomOryzck`fqtm}`B!?Hd^k7Y%WJYd+(C5XqL zId^zZ1jq)9F&SLOsa>yCU;WV?)_sR-8S#1>T9D_mNUkWjz#7w2$Uja!?Bi-(47=`P z+Nk%|^rFp0(PYyx*H6b19`}svzxyM=d-|X#bkR1@NK*KZFRylMA69Jz#zPKvGwV2-O87ux;)}*}Ob@MZb^5cJPtiu3nU~I)7Nm2XGzuHj8#S_c zZt=E#Z_+O6FnIX0cmAw!QF+|fK+mXeh0Eix>e`*B4FK}(BfiJPCJ5T-rsF<;eP>wm zXliX;x?kgKnb^!G@&KkM;+X-13_jphA=Uv1{RRN0mEJX=^(Irk-q@H&qrr5_dGpDu z?{NW9Cfib_`tNN`I^qt0|Chrl&5nLs_N8p3sC@v_H{*LypL?p!Sf+#MGvGOhL)%*Eo+qj?X4_vv>6A6<=2_M2P5DN22`e;oGN{HOQ62>bg9YP zs`dS!sF%n4f5*Ld%$Xn6E5F}l~C z{pTfmeKsm7bwnpVDFyYdzA^3wP@OyX-vF4U(~s6DA%bC2roBX{P$nBJ;8#oeraRmF z%<+=zF~o}5w{rE-!=F-b?!P-IYq1#p_vhxfR|jA?{@;dn+;{f)k)7SnSAPP+JuRj_ zxCtAkt*kf;s*9S)#9vQZUXlTmB|{5?TUPvf43zZC0LL4$ubkgv0x%5zFnp@S0GUf( z48-HZO1T>(cj^u9_4z9BwRj}bmVcII*4vmHW%*Fj@w@K<_s?VJ>>IO}>2imgtd9fF zEqwQvvRq}-43hMj6kpEKR-v_;$7dunjJMc%#)Z!?K2={Tzz1QM*j-8wOq&oS^X`&i zqB~`@Bs>%=LE-gsdnm=mzyuD9RmWp$Nl%(yb1OeXhQ|d+eZ;=jD^Kh@6~>=asZk+v zeDFB9lS_ssAukR|!5uU>tL9y~SRly-w12MBJoL~{FmyiVnu+1b>nfI61N+p-!;-<(f04?94oV^!an=<4(-V z8DIaI&x0d_?g_lgM+T`ZiN7_fFgY`n7uImALTzO6pk0tJv36UA>-Pzb;H>`S`cv8h zdLOvCh^B3b^M$Z@A00>k8&0IEvdcFGu_y}nLms`ty{Z$lO*366|F1XPXG^u7cG3NQ z62v<~`j32Y&nu`uXs$SSS>0=a2T5{DsrQIT2L={Y8==>ojE=kQB&tnua%E0;NQD{a zUbM(Iq%EEI+i@1+AuH(~o->oJO>y<- zgCY%}%+nuU+>$goC1KXNfVQSCX?q@V?Q0t#@B=tYTrO>5oN`W?~AM(0y zNE3k9)bucdAMsvEkL#U1XR9S;lULTN3ER_EW9efkH~ojA6CvqgANOa%mZ=qw3&YjF z+Rg62E2ytyr^zv!uSR(am!UOGL1hCt+=Zq|4_c4t#}ML~25!F@8>9OvMX%+}Zzx43%8L)f`!xmj zr#wqiM;s@JJPw2#1q$N^rWau@J)cGQ8HtC^$PF95F!%V;-NL9N_FgqB3z6Y9eg%j$ zJTNQ!*4v{ss2WsynvU=+n05FK04~ zg8aHkj6uSoGd31Ur7gyvXAFw^!W4W9w)Pu_v;}9=^(SY2?4x@+=s@(LRcx%zu=$u} z|Apsgv`F{<{Kun41|g}m9d%kVI!>$w_=ov&PGfAoDm}V$BE-(V+rxaAwx?t55pKx) zhSlv~&2y}sc!Q-W#uWQua_!^vrQ0oUk#{qWFw$~-NDn$Hfxc%O%nYqeb7Ud9L9V@Y z9SApBF%dtE6DorUvZYt;tP_M@umbhgP5Fo58Tvk=FVhf}yU#v1F+coN^DI-9XkujQ z9z>tY@oDWAw%HT2ZF)z_HWtmfuU20S!e$TJpGStGj)uJlmqifmy zt(890z#e^OHwQq&a_pvd^Dm8(l5yrjxUNqd0F2vw(7<;{(|0at_TyjILz$pYd!@ji zQUHE$bdRc?ni7vWr3m8A9fM76-RfqzX*$z<6~B^*QDor^ z8Q`7FE&q~_U_*}b_p=+PpJ_DyK6v_C(?!(95r`2Erq#qT4Z9VWDgT2MIiMj9lw&&B4@Ezj9!A8npfN4=>^`_#uHY35XsrLGKlo_=GsVU68hh3ZfG zIJkQ5Eu{-S{BmHKXpoS7mngnV6#h`K9UBjcu{qKb{`(#BFzZO zU;FfHVi{U=|3l$J|9>Pyl~ejZ37Wl1a@ev%TOb)ShtM*Yj5e2S2FU z5Nt3-F>k5KTr782aE9EYOA}U)=$3D<1USH`HCBe%C2DVe&PQUG;^}oIaCY0Wa-u^2 zXt5j(snSZ&ROmTen|J=_#AIS#4+(L>1;L3w@&(?8Z4xL}%VNVSV!2&=VuaJ(!OHF3 znsZcjQ;0qka$=pT6+t9z23P+&nD)inKqk+aZeJm1&kj$k?zN(_qi%{|bP19LD% z`c9Xa&fF zTe2JN>B6E?>WZ}KXEzDOQ#)Ozom6%G_nPApCldQ{VswQMS7w z91kpnTd{#s0pu!+v7s`}kK`g|Doe429-s8SrrH>aORkrw$Mxut&b;WgIMW*%C0^@o zifFqrh89?zn(86B2~6rPdXwgK|4_9sD)K@h7ahY-XD^=8T2K_Sz&QzO7H%aj-12eq z3fZs||_f}W#%G_0&stJ8x z9v57TkF2daNcr&n+NG(qYA0Hh`@0E^&@1U9$Etb^8|sb62M%N5#`$M(t(@rV6;2ge zagGXD->jkCdHl1erZq#+rVa=R3h1uY?gguVFIP&Zw(nZ@OHkW+7@`fcH?mYm%vDC( zq-$li4=sbWyxfh~!xD6{=W!Xe!#qyk(d(VrrITEK&H0j{+ezg+n*76t5#7>sb14i} zl?7I}OsNk^F=*e`!3!FWch4$W;2OZ1ZUV-guN%`Hc7Ke%kImA@W@<4xLkY_-z$@~} zwE{a7WfziYgZFH__J97x%;%mfRu+uS>Y{NRr2dQHGVb$_Q3I^&n-|&`SYwxrwqHN` z>*)gxSxmR|K$lEOo$5H@ohro8EyWPpW7L{AYY#EXy>oOb%@^~<)T#PUagDx4N>Qq2 zKKR_X>Tpe(?01f1h!v2-Y##dV!*ekI<#<=cU+MpLEJePXi>!NT;)DLK54R-Sade1U zI3BI1Yos5GjH-z$T{ZO~tRWch{QdMbGPaDi zrb<4THuKC=rNw6l+WIxrlN(rz1eNc)5w~@*SU>4ct6VRWXa`kf-T;6o8Bj=1a>Qb z*ZuATmK{){|1+2N#d1tT>l0l9LZCywAbvPQFpy&Vio?qhG;v@pBYkRe4sdHw_xpz7 z`SVeGB6k8)@@_rd_lPa&&QKB@j{4YlOe#Lf^sAPCt>wQiMGXNPhi5jbDTXAAQAYWF zRr>GNlWlUMXRLc}PwC%6L)1&Urxv@FiQUS9RP7W_2z@j3>-=pIbL*E2)(2#poG!ud zAdy5)uMcvFv1_D<8JGk3lPoug}V5N38Kqnz{p%orCZ_;MVbtjHKi7o5WXFW zE6{i?*K=Zj^1JxqN`U<4LA2i4M<=|=I@Nz%wju_Vmnotll+Y*2V$eiEUI7{Qik=EY z4HkEz&CNG4UgOS)%Q?mU+cv{W+3vxd3(%Kuh>wBHy7tExtb$aG5+a*C1?&?rEFk`2 zoQMilT7@7+CP-rmiBI=blL>gi4P0+zQN&ZjFR6x)o&;t@J`y>&_^3GM4725u#>TO! zzM)Ajqd>512t_2C6Q@oo5Z#pe-IXUtt&+V?J^%cqcyr~>_x+jX?J>f|gy@iJe-%uE z5*)96jIeMvPA0Vix+!%c1tbbA@v-ojKL9_*+%~{my3kx&A%v6CEvwP3O#9FMDV5WS zC}O7?=2)Q4{LtD0Ybw0<`$EuQf*H=7M;TP&7zd zNKGcX?T{EX<0xdViO|c8Jm&qi=)R72Z+9*S)kRtiUx>z^O-yfj7LEpEmqBuK=5FZ~ zxSK{C4_WXJ(3+AYP#!1JPLXTpToNHsG(=k)tO!2<)Km9kGa-j_Qv5%}8T{V%(~J6M z7!}*wU3v4x;}dn25<1Gtd%M*=oHx1rc$KJqmk@K`aX6$t0Sr0wUdKpZ!{4yCJfn8X zTKw>;E}NRBZ4t{_^!t+PdXC_k^i$5XoHAo9=T*y57$wOR(W>u)M00`E-}IX=#Ur{T zf0{p6-ohmsNYz%cNS6JgMi44E3?fvCmhF|7?eji^!=@VvmA;KUeF6$sh?aEqlsva+F1=mIV%) zu?oAt_wXusOR{C_W(%JK#Hsc5hm@XUmXVh;K0XYe7raZbyaW>UIw_#rpk!rXrUB6u z%OC%-VWfv0_;$H7<%l{luKmqco@4?A-M!%3E$y|{$AgzLtrqfud8F+{T+N5ZfcL#4f@*-m%LvwU zhr3D+kDG%|-f{5!5$@&;dJ!TW*f(_W;W4F%U?yRya#F@J=*`fnB+dy4=hM_X@=gJf zf5^1hltS&x6~#sML%CC|9H$!txR9sY2mGsuxd;&`uVI8+cD6EMRBSKA`ofm&KSA7S z6(et<%OBe|*7yoNo`kFRq@nKAcs3Q5`YXoCj9uSs3JOpg*?8{v8h( zj6OS`Og#H-uFJ=5R9Zi>ij^=6p(qY$V1YVQjNzZ68g8y2gLpHwB4-`_k!at0H4j$NmVNueHxski*m&>^^lQ+xrh@w}oc<2g{79l)QF~ zt{gmDcw+wn1bGIdbDVrv>+y<6Q2&ONWMpxG^6Bg4LuZSt=}nE*p<>^IWWC*fr3%;{ z{S`J2d;^xQIlFE@5&ux+EBX#9@NvQwBS)}HzWE&S3M00UV%G(#n8 z8-7Dc_OiK#+u!8PRBLgHM>EP4MJyRCaIR|W)RF+mE2dA#HEd(0D6oB@O8$E8>FSe@ z^_?B>)TDQ*jIYCswFGVZ52P#~*lprdCrsJ{zoL{w^O{U$M&;$6DBt`38TG2zLjGkp zG;z<}Z|&)qqdV_T3%KZmc@2;Cs~9VaaNlp5B;+$1GfsNw`Yj9jzIeQXQmHgrgoB3T z75hA>yP<`l!FJ?E@7jbd!VJK7s>~Ze2|OTz^5{n>TWr&JtCx z$5j$HBM9!0Nt3YM3eg~~T`-RtJtP2Wq2;G99uX&Asej$S*@+z5G#PZK?)f`S(i4?w z1)(L_mDK#FigKxJ1=oYiOWSUZ3~;u_a3Zx{VW+c3Yx4d8m{+SE!{~TEQ=E)sEG9{P z)tn2snEOiZ!vh{o_J{76U&z}kXI=dHb9|#$<&EVB$1C|WOe4B@JQ&@F?EUg)wkW({ zBM-?Rw3~qn57j#ICBT{mdCPN|Cw#inT-5~VnT47TTm;^P8>tH4xzNb-H{Arzr9q?@ zS+Mv}@aNvw_cS6O8(#$>_vgTeZyTSxLW#-wTaD#X!7p5KM7mSHo-r*7a*%&tC}9L` zsQc(3FBCgP6{(!!K87WTXFQ<)njvSH>30j)7IK?BNPj8j?O^c}=5`fve1BG5kExQ( z5p@wk!bg;V>*51fxwFz@A1wBT@7kmWS*8fB!qSxN&3WsI>Gn`E%#_3ysH8(R@n5?z z*#TmYrnod4z|ZTf`(^JpjJh!iw{P*EjX7a?|K`2#3hE!#5GK9lN?ha~rRC$m(r01T z`g_qITkm;2)|G_{NSu9YbGlWCqL6}Up^i{LUT8Y?Tytf9UShfNZ3!#!i3eO-xn&5m zR+eI|EVESt8u+DLin z!jH5EoAr@_i&GddR8PW{axOLz?)dts z%N3sZ>x9>McV#!5B!>p!zMb3d_A<|mwFVUG&lxDnMZbg3=yjVm9`ThK0APO#%)>j> z4gfcvDTFgoC7~hFrD$;2{6(**y3~^J@1N#nkxYVQJK4|FOHOR4!AiGDU?h7+-Pq{s zLjVw$b|HdMdvES1k)#5|mYz`Z?{4nZ2F`ywZJ)6*Qhrv)=Dyuo!>8KVue@hjU=fXJ zE-eOyH;|b!Imv=^Utan9BZCAfoxtk8TzStHR(^uHA(uJTa|ryN8&@UX7O-xKtL4wD zUT&1XEx~zU^Hvjs2pUhqSVFvEscLh4S5uyM|K;{h>rgrJ`djI{x=Z-LhiHR=&ykKd z;@1O}msng0(`7f^8#Yv){s=Jvs1d>8tiK(8ZmlD|aWa>9KvJp3E;eXdH=)YxU`uu+ z{GQi&ty8aqk}-6&{A`(jc> zy=J(!D^3Q#iClL0OoNq-e!m$*gs48f05h91FF0l5si{wl{c7V`jA_PvZjDa>SJ`Ux z|H-t{C!k+iL1bjEaocHl34=qR>XT|yCJ8YTCSR8fi_9`zDIgwv6^MNDpK~OHLboKf z;m_Rl_1dK;v7Q^}b1^JHV#aGrS}nkpop~kYwz(1!#z$!My-Asc`FGp|!P-dHYeiMQ zgZgWLiq2=96H_b+aVrg7^ZYbzDNK;|OW9>oX4*?Rq1r?m{JQtk2-5PwQklffr>{v| z+cv*VYa^-r&xcYbz((x)(uYyHHdU&Al+AjO|nV3%LLS!lcpy#p~%I_U}y+k3G7 z%D%%S9YF&eUuC8+Y(C%I*pCsG*TR1h!aIvokg`#>)z?d_dO4r?opTM)rErux8yXdazKH*m z$%5b8;rfsLhmp-)1Gib0cTiX?6Y0Vc%+D5EV7YgMeke*{^My}WAuPI%++y=zTi_pF zSEKdhG?iV@;`(W;C`)i$c3Jgna6mw@%=&7C+vrLrz=o3e@~+?f9^M%@{4;iJY_&#f zm6z}H18C%msQ2!d+}+N9wCrm7mC+Df)hMZdk)I*=`Cv$nU;F{=ZS`lYj>I){5ut9K zTTGpE6k&T1>N);=+#`9dG;@(uVYu8Dr+>K;Rvl7NK*Q3ZVZvYRX0vy>ytTBotO_Hz zuxpR8SuBLnW9(X%=;c$dC1US&HXwdHsQ!oHg*))F&gNHZMT&*-TlF243Xly%Ny56f zdqDy>{nT$ch`5=X`+!ijc%Ee~wMyEHb}px(RUN6GTr1@)CcvAH2k=qw<~$YmMnvw{ z|Ksewzmo3%fR6*RmwgrDU>y}(2sY<# zg7)4{{r#N{clXku7w}3E?EODL+UQo$PY&*LE+DAr9qggQ6Nrbm3hWOdy>&yUp{(U9b?qKyGyZA;Q4HzZimc(M>~b-S zPzJ85^Mv?o;DqS}))JM&aS|6h9Pth~DN+t-$8I~ZQcYDL9y&uj6! zSYbg8FYhg7{5s})9Bzz*Oyxk58WPdEraYzUij&LoBF45~uyCso=|~iqg6id?0>tea z$6Zl6b3Y%Pi~eLE;%)b>)Q(r!#^qbIHJ2rdca&^ewB}fhl$^sp(w0L~B;$#x-x9$5 zMx{7!y9nJsHuB{xtCJ*Ae>5_I2;sk@_MLR*eQ3Nk%Y!wG!{*4tk2ex2P520X!W;`~+u z0RG8*D}lRc6-_ui2||~0Af8MTx?a_Ju~DtelG+GEDanp%iXyK%m%PXH66c~_oT(?r z9!8ygeBWZ4-D^*_WLJe=AWJGF0^ z5aOlI(TI1mUcV2Q@$Wz~IS>bmzSF#kaj^;gu>!u7h@Qx#Heo@+gOr%VlWfPo66BN; zo&SbVPKa}gt$uWEyTC`bI-Y!KNxy2}&==X?u~*MOM}{Fn@GV*{&-d!om9oiH6?~|e zq{^kO0tq4DmPix^@1!iPuw#7XfiZ9OG80O~V`?LDB|LMts?h&#L-G5lgz+sQnv%=T z@Hyv;Y9J;|(^3EZ(D}Zo6o0CWL*XBKlyVG>didFJ`RhR}Sm))O7SrG-occq%j4t1! zDstpMd5`+85U#(KR2%b9AmC^x00RXE>U@u=zN&hbq!lnuuL;hmS9zG@)a>$W_MN6D(6@1VQZ#^mkN#BC=MQ0VMBIQZO})PYl1wT6bO z^;z~CA|KuSJl8K-Mz1|wG88MZ!m^2wwpGPK3Tkri#}*%^SUdBU65B4GqO7DhpXU6g z%&h*j5zjjKa8CYL3aU%G9Nw(H7U{EMXZ9h=xnUy}uw6RYzlfX2w6_h1Xlk##5&I8* z91>d8{ly;V3@?7Isr_BNoFo>$h99EC{oN3~d>2)!)wu&am1QmNN3FXR8q5Kbk3FT) zG}Z5MG|9;#6Zd9S{1uba!FQS2!iO3+?S}ViO-rzxZFT(KduKJ~w->RjWJ(V#>zvCB z!R}z{?Nb(D%4=%LyHwn>p)kwJ)NjK|+LhuzwzVv+RMm$Yi8oB-Ps(^FjJ^{M>;qvy zEPN@wGQY1wWr!FW^O&GFD*cKm-r#L+gn!|o$2g$ZQjrkdyT5-oL)cNHawU0?akEHLsjGfQLxuJeC4 zyzxZ_wI^Mot(AC9FR5O+UX(|WvetY5+HxVGr5*cEk!oGgxX&!ru;+Edy|AyI3x1Evs`%|JpUvT@6`!gI?m% zvMY}n;x~yP&Es0Hv~X{XcX5FyzgDR5t~Gspo!WUy$qlH__WJK9+9dx{LX4Q%o4~t< z%RZE`i}`)uuSv*Toi5r*#$T8CDD7c&S=rR?ZR1v#YH^QAOdWm)-6KSClaRYBHhoOX0=lfzxsacy6*6tNnF>M<3e(zC1VTUcM=m z?k-C62jl75LxiXYrbPyhgJ#?-xoxLjyUO1-sdy%ybX4>yA1*J*egeUT#b|#p*s;C*S;1&#HH*v%_#eCO$JSQ=4(e=+qrym@=H2WyH&IN!U?1 z|Hw7k!fMRMyI0P$z5dqjOq+3jbF2NO0U+y%a2ct96D_ntXPFXXfb(xSpX=8&>w#>- zP%1`AOn2|cPnCM&86?H0gSR@WtA3Y@{Ztry7Dq@?{`HlhI4J(zUHfNEo`H#;3dj{? zLxNkaBL5z69#y`Y>Ah`yApW4T;#$=k$*}b&q;M-q7a*>mGuZ@yS6Rb3t9bFFX!xL1 zmX-XW|1?X0nba;zNfK%4tapF?fe(EPtZy%FC|yF;5K|ZrA#^3dRa4=;C(sJ}(5aT= z3I>eoz$tlc=paGi>a=a992N(lyi&?~E-2h@*x-Yi1&fnkL66y|b(M zk`S3!bzck(Wp}BKrhAK*+0}tFI`}i)Cg3I0fUWg=cS$QMrX}CIltWp$QXhWo(?+*$ zI5&m=hOH^5T}nsYk~)7S`PpLeLZ!^B;TyVc6~oW12jy(@CKu01Rx&LYB$2N!OWa*k zjQdBiMEUDk1N-94>Z)t1@kt*G#-GuY+s=IROAJ_+lZf?!zuEv4Q+ z|47bN6`y3M?s^Q>6|2bFe!Hgl z3TPq-UIwOlsyUT{xyVcgy~U~rOcWP_r-nZitQKh^a^ZE^U3)TnvJGQ2p8S z^;Y@d)al*t@8{|(LGGAIWp($<6(EFeN+~Y9$we{frg)1-%l$e9GvCxnrzg6;Htr$f ztL^3TJ*%o`|W#1$;*yYM8 z7p0nb3)J~HPg*RzFNt<6*L8pK+2O-nb6L87!aEtUkf9M5_3cvaf!7q4HSCzVt+U^7 zp0D!WZ*OBn70E~Y{XHYzPhHY26KiuJlD4UMKuatuI#9XU- zeuRuvc3cR5J9WuQ$e`!>8jCkFr}d9lrIrpfCf@E8lQZh1X@Cq>4{CfO{Sem~UVwPo zNGOEuB4v}l8$lG?{O9fDhAT6lW24{Lz_q4w#N5rNY^|rShHz& z&iQlM$%<%E*YD${-YcVfJk!#=TaNr=xiM?Y4%%N}?NbgDb7S)NqKJf7dRZjq-$;a_ zSOSS65%#<|TXP~+#NB-EXIj2y!Z`1~!i6`3FJnX-7ra~Y+qOL}3A=%cr!J<9=rk(S z5+++W^WL%h|HY_oq;?KWb+f=wU$#y9=h4Zu9-Wh3icA0@PkV5D9m8)s`Vk3}U?GMoq_X6(m!>lCKyQU>0pWoA9D=uX%zFnqk4 zHooU%c(IMx!IPPAlKG}>?z8ygN=N7_)!T5b9-7~a6{*~C1slTKAKzNi^5wqv+2`K; zW>dQ<@o(L}BR#o39iNoSbbkzaUvo>y2%b{!iauG80+LU^3FsQ%LJ|`=JQ%UVru*ie zxbV45U6nQC^MWC198Vo)Go{fzk3OW-R~#nqTh@|7IhxbS|?hg7PXmuHAw7I1_xp_=ngK^FevV4ejWAl2oN zb*+h(p>dLg^md_2_S3WUz@iqxrkNT>EQHGlMpJg8(xU==QGa_}`OFcTkEw5KMTlC4 zQbsWRrB8Pe`n6bV9vXFU%|2j+8;o?q>z#i^u*8JPDCfb9ok}qS(+pV~`K*+?3Aq6^ zAK;D}RBM>S|HI4x;d zRq56JAU;*RUhpbaI(|&;^YpROq{xdY$kt;#BqROJ67=fGR8^25T~Woysr-P!_NPXl z$-krep`^kPK$k8DIpM`GE{t_kQ3NeTAM7@{lyV2yaL9NF?Na6FhNLrXh*Zg~RighV zB}ovcRl|EChjOyXK*1S)u0r20tRy#>XoDop(@HhNoOyj(+xL zeu#rL;A-tV>r+63bdE3J5!>F*a4+)=bNGe=@cyAOI#hR-g|vWEapky7twUA-4-G1z zgyv@e21#*qAlgZK_$nhdA#D*s5A|(jjfAUK?bh2Q(ygVp_uJ|jP#p^#Y!A*Emxa51 zcJzQ}Oy_Gv%dE1;jMTRBgV5GW_lzORZoK?ir!d*o@fOx%9X7G$YR3%;fE0(EsRj>$ zTJeR6%Uc<1s&A?s&wBpIO{?*UEc{bmmLy3N z`H*yokCu;x|L(eo5$SofG-lMG_cRxsT($Viwq&?%4&olJ=pC62Sinp5y8!cSXIaPd z8EabM{(yh{heXfeM3m@2G39rohG4;=50ghp(3pu|{^A#hWiQ$Vebx(4f!VWu$NeLH zd-E!MqkDWbRA#s$>nenSIU)e{9LIj%-4_}C<_VIi;Cn33;**{zFyp53aSoMmk|Tml zH<^|(GN^>`MbuSZ$qo~F0M4@~_jFafDicZ+Nu#CZ+_L)%%3o@w$n%I}$I?y4nys+QmL1%5S~( zjLG{p&(M>!I3q&(9bV~u@cZvy%4eQAYg_(P;O}xqdX@9jrU{6$6V$DX0e><3JXZU= z&ng~0er9qVcueb`x-VKx7UCozlKkz?S5VH5=wt1?lqY{iKn^xa(sdU{+}|WT3Cy4) z1{9=xoM@YxNtEUu>W+Mo_k*#os z33q#=?xo9IE^$xvuwd9&K<%mWA^4SHzu&g50zbOgVEo}I7?+FjRf|A1VYdaMUF(Ve z9f+whI=0G&xUz*_9Y_rzBK|JW6?oiP0P?^=D=1h~7|P%jE0xWP$HAnOVezy0b!&LW ztjwQygMQ)QCQBDLNX`ABE$wYE2f{DwV;nfRDYsSwU_cf*umgP<70MXPe6XI` zE)9*J%?pQX^9g4!hwLL-`8RGlzu;LsdgNt$iSQn_58}9g{JTY+YJfl;Fl`)A&xeQ5 zVYz(NGd}7bE$7O%=u%6fScvFvnlIEh5c*EIG6sQ0gS6N&Elox5$3UYyBC$l|o7rNu zcYfb1@=h_KAp+Fv9TA`L2pl8f>g7WxJXx&aU;Q(A^syHmIp|TLLUay7Ev8OQ^m$T*%;>4*k$_+h1jGSb2m_*m z67sJMcViJPT!jrCRzHi`gh!oktN_hcum>Q~Tu8A=$2e4VY0ty-~>G^$xRs}HEoNVqEpUOZ!B1Y7! zCDb)xA!DbWkuf4hbO8(+K(29OfOVNQs?55N#(37j%yI5@V%5y~Jlpen5 zU@2ee^4Iw!J)rbIb3yHM!KrI|7~`^yRDzWV;iZ^K7YXnv{Jev2!%qoR+a*{kvp6&= zv~>iQE}ame+Gs8v1BpxtOo@HOM+y8ONCPO11Ez9!FM;SyTHGS7*`j>{aQC}nRXZ=n zUVzNb6^*C(DLgccTRY`Z`9v9z0nkq8ckoZzz0EcQ+^1?rD?FaFxbKBuwMPAPbZxM; zu^YQG>yVYqD4&4@9XEBaXNLQgyRN)1S2rn^kMgnEZ+(vmJscpcAq(T3AYrf;#I8A# zaw3uq|4u$~doQv@qj~TqzI6c-1w?y1Kxh)h^k6F^4uHM zyh!~kssZ!#>ldrC3vjRyB4Bp{He-knOgg{a=mAeD5p{}x{OrQYkMe;R!=L;zX<=RZJIK}|01=8xV?Mpe9@R=21euk|AsM1%yH zLG{}&q|sp!>YLLSKjS{Wrgll3dIcNu@^zUy{t^yVqN+L)g&Un22$BZYRiG9Rc# z1DUg7lLFKlzv}TpSS<0LK8pA2BiJ_X-i{Vziglqh+0soL=6E7XUYS|}lKx_)?>;1s zO>O{R(;Hy2O!cTD|Y=?L=bYgPp-*wQF|~=dIdY#{9cpbe~Ip4-VGK z0tuirV$mDpA|XmB#4Rgk@7@KVZm{8}1mnBQ;`qQ32Qt{2HeyMB`19la&X$qRpUMix zXB(fNtVr9Nkx=HpY^UsX#ZwQhlo0;!?JB>loMt+#|9OS9Ch`_7bTjAtazo>wcEe>u zALWZfyj5@@TkOjrq4ikv+8D3S7oqc!TwynS)}opZe;!vKLWhRXcmaVELc7zF2q@Qn zWXA-HpW%hvx&Vu_XgEaBh7vve4q9x*dEia3stxxT;jx;+uu|cVUc~M}ULc^_Lj4G% ze7F0cVS~b&n>)}-`Oy^~6D(OM7SRr|TLqEWxqAda#ebmzhT+vrl-h#_(=PXZ{Fw)> zikPrP^n@Ow1z6%vt+)2Ae?T*WIIDjj6Z*qtN9+ie8z|nK^zR!kUFP@=ewF-(zCshc zj7jKrAF6pZoZ;#^sWIpZ^!YvF$0LKogL*G{K@9mI8FG=d5SV1Z7-FcqI5;6biK^Kl zQGN3b`cbM5KnUjDuN4u)FL`oC+MRDj1T8H{ovf(e6MAy*{9cQvzgvR0TBhjX|2<#u z^i9mAU(>E_EeZ^MxM+K6%-FY~?%$8O zq1gH4TI|6>b}xp@X4QPYt$+w(S7%Q)WPhtY5L)oG(FFVl!xwJXpXNenoVh)0pgJE! zVF-^L3dgSESXwx6CKniKzf)?}xfb&(fZN_w@e zVk`(arl=a4rTtFuxtQRfK*orec4@l$6{=#lZ7Y>*y(_o1COB!CX#VxfEV z&n`Y#%gtWu%a#Wg4f*1>krK4geC&iK z8Q)R#mBIwm0MPqS^LqY}pf&DNoqH%jvd7FcaefLS_+5$Lr&8>jy4xm%2ZQxgx5d^{ zxZ_?x(07WshqJ_*PuHrI&!D&>=Vd$vkxYSCGGJl2kA@5oX%(dV6>N(4XVH=5*l%rG z8-kT@CIV3YKX?rxN=g*bqlsA3AJGIG&bLQ;EPK;${Ax)%X{Od9Jwnq|dimSslURHX zdkn<`+>hnt)dX$wOt#g6wu4lpefAJWM6!KIcnk|C%NFs(!Dgl4i8HlA_gNeFKakmO z)-#X>b1=c55`UDi;C1N)FS4#1tQ_Zh1=icHYL6>=Z z5Uq^=25G@c=DfOiUO{;HvR{WNuKCk$2X8ov0}yhE#5comu|`)oByO@acd^xlV13l4 z0>7pSlyeW_kRn_;#>tAK0|s_^cqvj60H{AQRc+2nc$b@Qmq$=>>mnxWt7J3ft=UQi zn`s#USr15$1Bqf+C`&2OC=MMJ?n_3`I+QAN;+DQR?Fa@Q4JYTqTHH%5c~9T#J<==^ zbGnv$QGZ4O7{(!z=0W*rMLmwgX4mLswa#50n)OQMJ+6^}e-|y>i}IGy3Gjc=CXpwh z6V_W`WnlN~U`7m#_dYj~P88-DeMd9d6^b!9NI9{M~-ddOI_1_#JpzRYfEd0Rwn z(-gH!B4x=}h;g7Fnl6UGstPD`$j@V|ZcJW|jdQ0t4ykHYv|6R5yzN#OaXmk@`1qy6 z;2c$F4{2VQn7?E!{2~xfQ2obji1vs-{l@g|19x2gNM{jsuX{brQ#v%?@Xai)@IV{0 z9>HGJ5ofvh5&(LEEcj1y<`-^1lmv zX-Aeqa=eOZL%A<}BYf(4TWssjLdoSE!nf(_Dc=h#-bGeyH@q#=W{a;P8O$Di6PA%Q z&=l@bbvDuMk(-y`;x{P5rc+oL^>xgU74V193fp05gDzry?w%42P_|MYj(#MAVf;Nu zIng+c2Fy#?oR9mrOauBhS^ymIs%6x-XUbsr`PNz|XO!4acjvz|UKDZkJ5+`WFSMa= z{t4d&mZ*9G%4{7~9vDl{{p#^LR(LTWX3tD`v3WUKbs|<`mOhgWOa6@6$9ca7lRp=o z@`1>hwK@fi#Bs9QE-*o@>Z$&205^jOBx$`#Y!xC?dMhTofh|T^4pgp~8 z<#lr$Fg;&W-0Fy{^*8}74F*F)pvLc6xDK{9Lxk2H&=ff^sDD{5>Y0*7l; zqQOSSX|AVdHtE>0ci>E&0-tEM^`3MiMJk-go;hRleDcKQfX?G*L3EoEh6Zvogqphc zEJTUyq3Dt?VIrRC6o z^6(cf+j33SjAy+x8<5aPP^#(7mf|F(jRn4XG9K-s8J(fwI2%1i`(H^8g<=PHXrrk z1`cYBiH$)&m7+<7=YAU&-WZ1~qjcHzB7ubEt;$gLn=|GfL;Gpb_g`U{@+bwep92c^;< zs9*D{2fsQ#;VA2yVvSl-vAo(DBY^QT)fcBM6yoyv0C=nyi;AN$%OSP}18zFBlS zBj&f>p1))H+K#VfpGn6|fmgL3A3CAqQSi#uBFbmKKkEWk&b|4=Y383%KGJ&|ly+Li zLvMe-Xy1>|)(~9g;UNkCtq2-8zQ`;db$L!ZF_zNV3sR;f*ohX3$gYE4Z`(pavae!UsuCGc$FG-ktcP zjCAEH-5 z2XC{DzW3fm5A9P3FikvF3dh`MoK$@!@1h{QyL~-&$okNWY-KBeDmJdo3H;1b-Q@Kf zOoE~`&~Yjt@XfQ;%t%{3_OTrmRlNf{0ZSzf6=p7PWlTE{mX^Xqw27d7<5Y$J1X;Q& zR%m~_Q|Y%>=`ZVVybr^I#2Cz$#M~s!9aE=k2U=?ITDF>tZ~uC-ua-kw>iZ8}XZ zVpE#IF2)ae3DPgNW7q9n-`J*W&72KzyAq+D9_{~9CM(P3=Z6HtC_el$H}kame@Op_ zs+U*~Gfa%X*InFq_3e4SuB^tt=}!0?NkK>Nj~SY!+BDl^;U7)GyxKP7;Nm33kf(cr z3nZS{!F_8PF-LQ0*}cP}uCjHH`_=B5>6{4cRYHjNyuVJ9&Zn_OXt7MOB#?Ge`T??G z;LXnGzxgi{S`MN>z*%6QtU}@%3;)P`Uao(`33(y(sw_$RHCa)1KQ@DYugj#GzlDtP zR3yGpR^p|Z!ZYNbX3CrGDemq#NdTN8%KJNr0paN@)|4Bhx@=8S7um9KJe>*n|F%E> zA6h6F@PDD8Cw}56q0}riR2`0EurfroJQH&`Y%9uWrnF4xbNc2hE2Ow?c+M(?G64sv zIQVO9DGj5f_QO|OtkPlCiuwc<9=X}6R87HQoWZKgmIVcjM;C`?1Becij~!S_nGf4h zgLIYBxyM5^kV|q|=0_m`IsxV^Mm%_;+c%Mj;H-%_qA_F)k}T|Ph->cm3};g|_j&+j zja0^}idl}O8P-GEPBQPZ>S6II@`Js+x-cNn{bCb6j z;*_66h&Y87;e))1n5_m_N{3_u0uaP(0DVIEc=sAJB3~1fq{`R3s}hC@h`FK4*FEBK zpg{DEN%1f|nbb22)j*Rn0ftGl^HfCW8_)Fr6f{^OC^&u3xnjJJszb@(Itv~K?Po_r zS56j#e?~M_!ZpY~)+n97KIwQ*W1fhQ|Bv2biYZ2aTv?<3{iL6?;pyqZm4=Ad<^!3~osR4@Gn+AywXf;^JrRmT<&lRjcNmV1HOcr^c7PZG-R?(^se{lZj6 zVZd<&Ctt#{U_C=rBZ*D3t-eFElM$rQJkk)s-rjDbDU?qvu0Af-sd#bYB}8sE<4Lm! zlB|a4`@A;|n%=nZ(zW_S+k)3A5>EujBY9XyE4tmP2ABZq#E3ar^`CVv$UD{OuOZ30 z14eeTmkd!Kl=e1xW&n?Sh-ugi!8M4y%!xEBnYXObVC~gKbY1CN>LIo0_EIT{{2wFY zCp2`dwRB3i+l-PUB|LSlfpP@t$=S+DtuUW4V!q0*>GQh2q|7O*QIQ$iF1m2495DR8 zK409IxHgCj@z;9;6(gHdk6FfTdZRwLo?UILFHAn*u4|%J>XgCDsBppTQ}Ke=d}*!=i}J5kU1bYJrc#adVn)q~ny52rrYnF`6s*N+08?e8xl zTyrioze_P`ax%rI-h#x>#e=f$g&#i}1KE`}Y>=sDBZM%V z@8s!OwE)K@>63>t@(wg_0j!{!0xP7=aCPZfxbh=0CZl5~?``;3$$px6Kq|iQs}9&R zCbv{q$q-F=!xRlkvO*J254hi$@pqFJA?yaMvb+niYJ$N%RnSsa33=7hn&dQWT)(H_ zq_(aplGr^DUp z?5b(Bo5;yB#7a5bn5Ic(Wq1QSxsW}#`TN|Kh{KVg+Qgg~_olX-dn5aa`W~M`l?OyG z-QMq5ytBZ4gQ8cz+l^aUxlh%zy-Gvvnp1H$bEvxB@J(dsxmZ%y zs$$Us0b>Qy(J?iXw~MSOm0Hq+=~1ZCHB8}=x)XXi9~rz~#t2Xd*lz}WTPFRJu)WY= zG2ldJmfjF=dj2jnE`jf;BG}cud@_NOFx@Co!)acLTT8>007u#Smoi5%T3P``+C{lT zwl`FD-Vz%2ABOKgr86Q0k+;GSsUX?75R?g=4Kum~vh&q|xR=xds1y$9*CVChF3()9 zrP*F~ayfAO2y1k~ri25BK<<2yuv*ChlV=MZDbjdqdbZUIHYIwOt0hy;xm}(O?0S3zvT^GA%Zd#7FG+*TG{|LCFvvz zsa>7GS8^G*zrL&c#!h6oMlEh*I8k5rtE-8$4G_IBU*}^$m`H+7sBp%WSn^?U%UKXdeR|FzZBSr?jc?Z zWPnc3zaM=d2nmn+wytZD3vpy<;+!ZpCbzuKo@Bgyu0uGORu&etrX~7 za7T3Ol?yEqB)Y^g)Mh?f&ccOim6C3_afg_$TC4JapZD5>awM9XVZi-qH1h9_zBGJ+ ztqE*bF2(~@6XhKe_Y*WM=L^;HuiHoPh8LD^vBYRqvZ9B^L;`ctMdP|F^?Ysb55%)j zVBwMzoHM41V_{+#-~zxP9Hn-X6FDlc?ccFEuSa#={BxyaFB z&}{ceXi4jzjX|X5_@Hc!AZ_-!jfewVgpf+H;g@$ZogD`|qFz)>a#z8>ebVrjof&(h zS;fb302?;W57hko-b?_&Cpg_swIT5_*bgMm=SZlQ_8w49qso2_hiLrGjnLU$8pPST zib(zez};GgBqxbXXLGryD8wOh|E13+?t5om2)26>;;_Fu!C z*7&CCQv8m)t@Qk{;uHTeR^icqlxNm_#|)r-cieBku}JHs%6H(NkUM|~P4ah00QrPU zc=X*{n~%nsoOp5p5FN7bmZU)NQGfp{vGi{c9WXB6_5B(qnZVn9-p9%I=TZaf#%9duWa(!qnG2Y&POc0!l%&E00oTeZ_6dO60U+pA|Y4nwavLAcEkg$Z2S>5z#T@) z9iej_B*$sf0AblT2c;UkAz_3hxQBuq#XATY z&VwzO18JxW0BEmKWEhh~5u{3Yo&VzpQA`s@z#+6%2%P~l?89ZhV)ijo`UU9wjH8Ul zDN_B}pxKoBf)tch&huek^f3OGo?I%8p13PGqscZ=WPn zOggfTP3_?O4&$)zh=A6942X=G;-Ws?ho^90SA+s52fIoHtg`c$1=L~!hUPD1-IS_v>c(v3F4Hk_eb4{2Yv6yktimAqwQ01aBGH`+$_jjT_if2LZP!k0C=4MafL6m zVjMuLsFbmzk7r$8a?t`JK&BPD!N-DVCDMAL(v_H1p%+R76c1F~T*{jglnhIY>d9PO z!(saQ5=^p23L`dvQy{w&8%EZ*|S#WeIoEO8rbPk@YdDOny71 zSAZUzC|b)xT_K{JW<|7Vpf5b25fLJUR`01pVrkIL5}*V#0tk9R*9n7l@;6M5)}SQt|nl!RrF%+6=@*$6{B*$CRSgDWAF=epNML> zq{Cdz3ZugV_>iM?`2GWs=%_@8Tv(=5we*?>Q1w{|(NZO+Ukh9VI5U5n+eu zi9USD6A-*kI!}*))F;#r5^H3N%Sd}!$;QThN6JuoEy=RTOXMtzT_Ql0c0q zF~P^#2ww__LSN?Eufs>-Y z*^M{%0s^Zlb^zE%?6wb;qQ4lTddZ?YT-*wc6Za0uWD29d@^m^pOMpDG!Fhy)x6usd zwtZxP^_i1JelqBTm1WsZ_0ps>UFz4czu*($DD4;#Edemj6J$b%u=wz@-|!5gh#V1Q z$3{eOV_}Y$SUnAIiGZfIwzYTiLg#Ul*|Ec@P(330b3nBJrs%+AyZn@>;#9kwR^<*G zGfYNzA~^&tz>bhD#bKst9K$FChz>8L!)JE`T-xZ}2w$pd`1z1UiDdukp%2v`OzV^T zPh{T2b!FG5rj;*!GfE(H$~I^_dF@$I-ggg{s3W@zFwY z(8RfOAqH`sCbT(GZQQbyq@ydVnAP6uOpTr!%gtA{&N$>>%dEgFSJm|kbSl|VP2?LE z4A2j0&}zo{-}jLjG!bW80BM#HPQzc}3GG4u=$y|RiO&Fk2r@g&>(0t4F5 zooP?Kg-es`V3)LM1a_?MwsTh)1MGHWIUVsXa3EnSGNHQR>1^){K-6RI?U7vk)R}u` zr&$>}_3EbelbkYJSkaQT{0m9RFfznP>w-1_l0v*e$K?gkM7$`M&d{KJI0wf7>{|i$ z3r+MZ8N0;2Jt*jUh`KX}s+77VdPWN%ozIggZY1TmZOLRsJBYXd4dVpql?_N$=%qatB+WC|IYLPsJ3AWS~GkgV+dn=5;JP-t^5@gqYd&`UJz zjF#x!ZY=LNXJ~H${>H|T^jv#yo2Z&&|HLZlD~hw$K8&0~kDR=VDju*oG~$+u{lT6@ z>0!UpueN!jkdBK=a#`=%z$6a=4_=4T#fF6kbe68Bo0`c0S@ER zUru!MCgdkpF>fh-NB>~Ia))0}MV{F|lvB|0i90^9F|Ke%Vk!TQkW79xYdpX?a2?&U*&k}yXJS^ z{OwyZo6s)6mz(!Lr73^?cw2BAHxeM4mOAh*7XEX3W}W%qzS+!j!Go`>BU-f&pm%Wo z=%_z`(X*U^{tgShglyU0^cPfk#w$!gb;FWT)J_~?x_IWot+K!g^a^pY^^hn+ZhVP> zD!XMr%0YjP?b{;XDMk0o@P@KTwI?J3V%e=n_&J-XtQ~lSn!~`VAPa1Ge|?yy`#xi(zwmX|*FxA?|)&7i8 z)P8g+)@56#Z}h<=pzy(Kfbhj$p0Ic%Hia#SyJPCHWb)wAH=O7)4)f~Q-CqDsb~S$J z>G055)F=Sce0%xZ^JS3G*Sv#E{5*&PVrtKfc-$U+nRhSK;o2Z0<=?X@b=+*HoBfU* zBL-iv>&(YOO8A1=b7bL&yW*nA1Mc`HI@YLf<_?y0gm)qJjz6zmCS+ohi+=VQ^%k&v zUszQ+i+xHQpXH7^6s#CrUNO*J^g8-FS$A=r*ymUK`qabGAk5tLUHfs+UuGs@%0qkI z?C;XoL!wVI5^kjS3YHRtxSJNN#b8PsA#e$`1A3*>jmwj z{?7+A3m>?iom`=f3|mBXk^6oz@=3Xk+MmWZzVH^#E`1}4Udwr2vpe0jzY^bjcTh)R zd_du~K@q$``@s?%QQAyKXO*U;doCmhri7fv{6BfZ2QGHqUai@$m2DppQ@a{b1d@U57@3 zg3u#}|BhUFE#vXrUVf_fPcKXqbH;o9%y;Af5ir2eD5rJr%+I&(YQLVrh+e*cSGbLH zFB+*eTfblXma#prF^Qh!qXjFMH*ih0^E#(Xk^|piYs?eBegE+K z{=P=Qjo24=CAc#yH;+DQ8W79&qnO{(gq5GzdB~x+Lp4`I)rd=4)=7dMmVD(Z$+}z{ z?_!Hno@m#t4fb)=Tj~roInlbYfMAo-tS%`@Fi)>q^!?afNfu+?qWh%#AUs{Pi9hw? z=6Z7FrXH>=_b_UQ%i15-7@q)bDNg5~t}{FRV-n%!fU7?c*$1BP$ylEfSM#pGH4x5E zN~IkI%cp#r>vD+R=jHZEl>b2Y<9Nv;JVmEBwPaHLGE~Ofq3%S(?|p4IxP(<{V8`H? z?CWy;x?=J>Jyd7!)08hJXBL1_)p1({^~Tg3fFhkTdR?3vmmsFLhm-jE@(X z>0W;G>EN+F;-@m5uOu%d<85qpP?{n}uZd4Mp}BOu zUhm7pq%G}O6U)j|$84p(_8j9Rh!U`ORtD_a8d#7B3SiiYhee*=GV6$U8HB=sS(qT||Rs%yUE6Qk9^Q#zZ zZ<5Z6f7N)raWLzHZ2Y`$X2pXSLA(JA94YEsMcZ)-vfWFH3X%~~(dHxN`EbUP?1Z*P za8DL?WTcP(Kf&l5s`p>kU;6a)(kXLPsv}Kf45qO+f{D%1zWnL$_VV^WeIrSMBC8?O z(;KHarC%E8c-~k%{U5uXdKxqLI7Ft~|FuI|xv<4pbuaYOP ztyC%;K45Au)T72Sl@dlP<60og#`B=Oc;>44f|{ja^SjQuqxd7!dKpChrc6~WP?Anr z@2$B)3xU!K=n()UZGr+sXe2-lg)V|=-1q~0kx-5sJvx83W#{!UJa;55=^_@&TN}+O zHX)Y+t+@CVFK1d;G=D-TfWL7%5{Z&TZLT*-AClECZn|;lxdk*NHu&40Ul?~tM)RK7 zWS3r+=SU#5jxPsTn@d|pZnjp=lFcJV(GG_{ngjv;5AOaTt{BIKv6M3o(xW}* zay>pnl1`16x(`Td>L_};1ql$QZFp?L7y)OF!7~2zJ+o)za@&qXOIf9(`Ow1d(x#?X z9UDT-7Q-GKH|$hTzpRtcMIWD4v*kdEs-2vj-B} z(Tzbg`;OlSl{aSyhWEqYL&~# ze^?-iPtESn#D{C$yG&g?8~SYg#I3VK&(QyN=Tto2ODdr zRV%T;5?x=#Q<(2C6uYo__LnnY#G;>?-mfoh?(rgpr1DvZ@kb`#lwQGG>UHn(g9!ay zBL##&#qrXXmX~$V&`1#ulwf>>9FC#CpqosF)z6VQ2}m+bCkn*0=m7~t)zMEdK(ZTT z@qQn32^wqa=%moyiB~s0Pq>L%jEYLWK-5#EqF??*juz0oueblZ?6Usw1w4P}nBQxV z;Mp?&u6J%3Ky6dr(uKNmk7thRnJF3@zOC@ z=8)TGpP&W49$%GuJ~CvN8m4m|&pWam&ucQdA~t#3RCWQDsk&7GoxPCMBfN2&(a)Z# zcB6}K>W!MwU#@=-Z7>y7n*gooHfYhS^?H|*@q10txBJW zu?LMT!@Ph2VsgR!?htcIy>LjQ77aw%%>DNjx))e(ZfC*!f?!%>ZJbHw;eG{hv_A#v zdX<1o4M0U`q=)w^d+=qpmq&}lUJVs>2){?0pw2`+o}6yg^dmK47u` z>Hr-SO_=G!k#PJDf523Rx6TcqikWcGcISc}Tdt*(0Td zbCynk#6}|Q3n5hzz#zKaEFN-G>P|nB9vzvnyeUKc+EQ*y9Iqs#xVPlMq$)X13Dmku zG$uaMLV@!ldmt#EZ`?L0oP}L)r@K$;Q>oDoTgD7}UlW~iXDz0@9NU=s%idmD4|k9M z4pd_YBs6lFLjwRKW#94Q!VYs@#VSxYsa9uVz8cLu-97cj3Y(wECnw?qFq}p?H>~B zK*D%>;^*5rMKn%0uz3QgkYjG$=_+Q?xMA!|BnA~^u~;ns?q+VH{7OgR-LEhZ(8`Nq z@-}wO3)48=x;}RrH^$U0eAW{S0m&g#ZK#}03uT7C6hUnUT?SGu6$F+ z&?cdRN?}?&O$KAYdrrf&4P~my_lP&SMRUpgWD9%pszpYRo(Ap|PP2?l?lN+s9R?F< zY|JwRIzY0?;@ts+^#;sZDkSUZKkF*bKra`;u}^y*vV793#|PpLy0^X#aP6C&i>2_* zw~0i7jwGg9ZagLwXBO|YT0wL-P|WIp`-oq`K`~5=d0u(5?u)XB!0773;|p@upUk& z@}bPc=IIr)9Pm&X>l0icd^UG=Pm&)mEr*w8CiOwD{~>E)akR5u`gUNVu|$PwlSn6D zUDu8rGn>ykWQ{r+n>}jK!8SV|YK_XxgJMGOYzk+M*K?QPa|`Qg4=37`LDUZJje+iO z$F6u;&TCp+H>67@rrNk=gpl%X+Sk0?rHq*gotx=Q+M86(nV_{yJe?&y>*8YDnU+&v z@p<5{XPxgk@^=5IG2eJFmdQySE-o{?DMuG8dn&0%l%3aX4TG?#mBAOeZ%)HlEDjLf zGJe(=@y+^u^&^NinTu&D0i@a^GeUi27!|oHS9^-*o4;eGSF*Er`1%)jk85M6>!pP< zq|=nx?*oJZ4?B2c3J^rWU?awji19yhwtv%}{woGawn+f5l~Eze1wI+ivYzZ~8XZFn z+u)BMG4D0@vM@26e8?o8j|JfKfOsQ=yz!WbDUR!kUuWVI(bryLm}7J1T79=gr)ZrEYHt%19Ai>qKoE57veSyo-b zxn+vN^8ieHHZZ~hif0p(mXBb{oJ_zk0HlaY8)!J5eC}FhU*|)$>4)>?3WYKYD zV?5OjNgD*2KTsnYSa`(5Z}TX>nh8J2()3GzF?ANQF<@@wyxj>1Q9+V4C+xLZnT-eb z)SQqpZEw%w@g@^zBz^3P9g2TE(93fBxz#mjCm#ufPjt4|D4mRHAN9EJfVtuzd0Qww z+w*S2sd(N>{b%A58GhPeG3uN?bQA%nAMzqixH+unoMz1fXSsK1V#{-K+M}rUeh#Ie_ax&_`QD)AbX-)~0VPTDXZu6{9@qmY82 zVgD2X9;)>SrKB>>VZU@6wwx2azO?F z;~Jsv%#3sh&nxzMkAp}Ez`eTwl;zHq-+k5`|CE$N^qnz7PzUWis*Q(4!~LXY7FO3m|pc7dPH*_y*XM8rz7pH zK^3nTmq03T*RxX@HB{DN=ilDs>8st>o&`Z^V1U+?{Q9z2BL+)BL@~@arf^ExU%OPr ztnv(-xEArp7;Q^iIHp|q#1NL5_{r;0S!O&d!*@U377xj6FwN4olzjon4U9H=KMghn zpiIMgezTjVbR?W6hFm^eqAvwztkz|2kwlhDlqZB}cBJ7Ineo+>m;b&P_oV=tGXuO- zkRtq;;EN-9A5YHHy(XR(6;t0;5su9#d8u@%4u329b}i$3pl*L^2U`|~FFSzhPHo2m z2d_t(-oIV-avJ{%u%%p(icjmcS#@d#$GbeuEY{gJp{NFN_e2+C?2BBRH;#X;dk(D6 zou?tOeTYWz;W7Iv;^q57(Gx=LUXvGP^scM=o?aanbxDbs7*3Jd$t68vWuEqV%VtT5 zjl`k|?WAw-ej8B`0TxX-rX$gBp2GwLvjU6JS`O@R_8fkrc`)~4t=+}})-v~q@e8vz zFV<$xe;((Xry&~|Hg5iZxjlA7UB(CfeZ74}6Kp1VPKlIyA?4rJa;$y#K1E@HaeB*= ziMos_TJZH{LJB*I(n3YXF_+g$$|h^U5Uj>}^`^}45lk?@`Of1t)0~{OViGyO%Z|Y$ z3s%sHD2^M8u6bD}VmrM={}Fnx+&7Sixi+`d3@)8YXs_}1s0>@2jJaaO0g>~0h=75F z?DY?Y6Bl~0Fp~*tE_6xlB=1*Kx+xZR*aAW|rUlqH%(s;$yTQD#JlPvbv#B!-G5_!a zJFepVAztN)G!x=T((-6+nPj_rJc}1pj?ofoZl26cK@{JdTsr12q>}7aqkSdOBh#0C z^oNHiBEb?=kT9GkPNHA@;Sl+wZ^%No)WY8bW$Kf8omq zy^^qzYZ=lvIY4eu1tf#bemDLAvLDYuNdQFcvyoZ&j;7^T&4JVF3=5wOUp3}o&(0UG zCjR_$mu=vEc28%Z@KC6) z6-(m+wQZ&tR>Ze)?Hu=IM43OsczpK|*dCOLF3ULWmSH;uQ6@2@ne@gtdK=wT5baA- zvIPgT>&aEahd(~qSkQw$YbvKPJ9J>LrZ`U)Fux>m1SO{1>_b=hopW;n*5${IzF8-k z)1@21#ue$ry#^=7?j$3+_WI^0{I-Ac&r*LW2EZzJc^v_t!iSF^ zZ>A=3*{-b&HCWo`gx#-8(Lb+8SIdihm5~L(@Z+26R;?6lP0L89;kzxT zG0qRXX~Z2m5(VPlZ~##O$o$*C?@hnlanI+sx^F?3tOGyNY%f~(c98x0Oh`aLoMxZM zp`hzDhuB3MztOep`|!g@u`$)$C++k4nQz7yWzOO*9Q$;WmT58^omjyobv6%D$Rz}d z)IJ@-?bWY?!1)FiM7VJ}xHZZr+MUbIvtU86jKUt~%@4L;?bFF_Uz+9|9c{OYSpm=+0D{CYV{(8{>2A!1T<%|q z$jHV=`?*hc^KNkki_`KH&OaQE{@S{kYsYOS-tBfEf+>1Fc_5N7!s*tS`kx3L^woi@ z&3Gu5!aWZNSJ2f_X^|?h`l-t$XD$v_R9jt6CWKa6gg{sLcGk~$hn1fDmuo0UVrZk- zgU`QDZGEtq}_?5qooE*$T&{ zyV_zn25N$*RQeLQzsJ}l{zRQTw=Qh#r5pXm@GwQ()NiSbbpyD7Hagiba<8#H^j&M{ zNf({PN0(Q|+Q;2hHacT(KlYUi(?UBsg9WCI1M2E)>=o@J$CwmJD!FPgpt5JayEc81dK;{ zQMmDHAnv2oUM}Jc6>`mVw_)%&1vL5an)hmp>9f4$f)B4xnt&HxQuw&-=g%?STLc5p zCwW^otfCy}v z1mVRulE9pVZmV|B0LK5zB@-*Z0&*f6qSC2i8T{T`TJy%Vhz6&nr^lRink}rvu_fkclH| zeVhpvv}rKE8oZZ7aldg${t2}x#CLCssq~*thR9?>N!}yHqaSZ~s&sy0gsJ57Y6nc# zBSODn?-Z0M0D+?J+|wREM<5lzueB4)c1P7$pC0A@`w6ARUGC1;BpwrBN>NCo(V@Zt zQDhhq)nty!*$_T%__?}kuKp0bAN*20yzZlOWpF z$Nxhth#V<85GJ|@*le8;^81YXdjt5nR%CDd9qaT=k588X=zvKl5*Co6rt0ZuVrDsI zEws=-;Rf?YX(FD6!sD?khHLoVH%htFhB_CX+v?^=oe7cgRkY!foE5b8#SGOy;H;gBR%NV8Bb;=P#U-Q2bbF> ze33Z3FU&u-J8)CqGjH*Z!yLr&T;j^JYR{y#1^*kQ!YSUXKFu*p0o*lf*V1sq+`j|srWE(_w{8iysFN*@D z(CVn?pV|F+WP#6tsxioVPTkvRKnmAWRE;12RaJ$njwcWz8T?NL=z(kY>tR zs_MJ73)eR0C_*i?r|SB0%7oG-7H0F1dykYUc5xq9ndf8NZuW^rgmWonhRwF>_~HWG z>ZvPfAw>o173&In*35g&wH<$G*6K+5g8sz2!82N^Qr7~|+?KGMZs2C|UHp6ec1T|u z6LTUu0(KAUmw%YorEuzF|2qqx(uc-k8(O|1KseKF#1&Ojc3`lE76{EsQ`=Mc0K3TU zH>-&%--`8^6*p1Bdbbo-vI?%Bz9fp+r!!iO*D5Pu*~3uC-l#I& z>J5kJrNjQ%L+RI+$38X3_w=K`0dl%(1r|O7BG>Nf`Pw|?wzFe@uCbvW{}9C?Lm>0T z+NWXo#*bJ2ph$GWNjk0Qas1JeIFGJOy{JIRNUT4eZDB6XXf=a}R>Pi;9@@SWF^bF>9>Ez-{L0 z84P}o4*#U^Ci!9=jq>le`=w{_*(-aJ6np7Mf@0TGf#1OF4V{-FtcN?XFWgUn@P6Ef zY=YJQ{<53SKB6OjXW$5w#SBXGm$AB%X}O;I=G)%5Y`6qJmZKs!L>eMBoXA<28l7EL zy`nQjs11|RYOsO&f{?8n8AqYD*l%ClN`5s9p68Ae0bwChqk0)Y zu@Il<)%vp;YS7bXG_M2%nKe)@WN0*~v&(*_)9$k?w>4sJMDY2GH*E~ctN8NR(^dp! zU7*=X=hATm-%hcA$`*vHUTYTO$doBM_g=E!5D$vSVS^%u*yXbKsgjC+c(_}2O>1hh zL9@qKOvT>($9M$`ZQ(YfuBkD)SWe|$tGv}| zs(r%LWzlLibJV#n;hK%;d2e`6<6Y|r^>6R4CA6w#{UOb-%U2Ifm+D;nwUn;X_)hRH z+}vQINh8Uv+Ndggk>68$YJbO4Hd3NlHNcnGvyHI~!6MANsh@9?IMkN+nQyPY z%MaJP7THaC%~1g!3i|mhq5^`CsN^etadBPye*W#t$65?m8jX>=zqAfZh4@`y-hi1d z2WAI#&JgJ*2n?`rgx<*cxoy`8pLA^=+5B@UDtiw7)MOj3ya+<7XtCO$%tS>(tAZ~# z8P*r?Tfqq7UEWH$bUFSE|U@BHO22>OIm0l4&Fh_q-N{krRkFUK8mfe_ver z;=~;$KH_i#V1k-LUnVH_p?5q2-TO5LAo0wB4;%9VYp9f+<(JcizmMh`H9|s?EHoM! z8UY@hiVzhT>HkJ%3rIW)w3PGa5RtxsgzH3I-@|f}-@B2H=6*DT>TSN!2=K+LF%;oo zd>xt%WU`$r@y&9;OT6i|Z-)7)Q!U6i?kfMlGE55t9d|?p+b=f8T%Ns3BxVV=4(Hig z;N%A`?Y_~#rmE6brnrHPUu>R|u6Vo`!A7wV$@C^QnbXb-3VxEb95a9BagxI*k*89R zFIB~CS+0yi@dDougi5KA5&IHNr(cc~pe#1gBZDGZ@@C4?eMh_~f$cAQ?795hX21#P zKT9)$l#>=C{qRCx=;T|egI?qkR+a`r4y-Ej0OCF{r}}$}a-uNFSGfH&EpA>jcR^2H zVcUULd&9nNBH!$DpAc}!AMXYGGU1=9R1CrBF1on1JQ6z~y9`pCIr8xf==3P~F*m6o z&|d6^r2vt$d%3_0$7#}d2+?D`)0hIQ>{ls9Fb@OV5?B^_StHI=FS%bAo2Exg1rkH&66-I$!TkZM zAG20}6?0KZegOd|%J@wQY^%46p2g^u+QcH4$<3Q|9Et&GF_hvcri%UQX~7x9{4dlN%V3VObz)(e15@9`ZZT=}dKsZJ*s|m@?8FHoGt@!tXR+tnXbzF-u zRVw_BoCPrnG^MOn=`VfCTe)qPC~!Y)K}4*}T4Xo`qZ})R=SD5jju_+ZpZK) zH7rYIYm_y4;kxX58Pabr>#g9$!0jkv+}Mv2@PRodpwaZb)n@YMaIA}c$T?2OFAS9c z0^1G^;{kSkpctz3wv$)U?V20kCCvSxk6Yc3M0l#k_2*ws4^FgLCo6cs8UU*4Tn9{b zr$}q(xz0qG%3jgkH=oR?X}@i9OX^a!k|`)S1E{zr3(X&sPt}GmtGhvT;9<4CsoHU= zHNU{bz@qd|yc1iQfMJ9VEmVh^8oV4qY3!RE3dR>YyD%6jKRm*f`o`Gbf5vaAQSplh zr=%Jde6*3GyU)-r=J?#a^#n|a>l(=>S-z}IpI1@YT3^vwTe&2E=H>JZ;VvW?wI+}1 zlZnD%ib31hfldxn1!L2D#hg!6AS1^|K^hr_W&Z5nT&ryaxky+GdN*0f00J1#E;AIh z`VOK4U0czdlgcwet_i;uj_A7_DI;t9FcN?D1wK4;w|(o$WsW#P>guFQ+~!FYd3La2 zXm5}UWr`^~dfC`#R7JkJ6X(l`OUrHzq2M7pW{@X&kndYuB@@B|RuTEm19vlsaXUr9 z2VhoM1F*U2b`AYo);neKmTfCq)TX*CXzAc~+20_#0+w>}-62DRcIW9Q2GDqhQjz|m zYVdQ_;AS@y{E9u0aTlU65L-3by23IfKzu*-%52i5Hx@h7tKRxa2KuG0B&B}3_<>;C z@G&{fe3NVCWYyih6TJV0Q#Kg;`b!FBpD9(_a$1aLFy+q-h#e@7*eU-Jcw`7?2J@pU z%#%OrK$0nECc&Yfc?fvBUBoL9Q1C#*jMBFJ)57ZUEP;374I7H8IUV}|6B1?c|up+BZA&sFUzDL2t z-1PS1 z@v9g<$-X0P-*3fJR5socM<{9|eW*wIC1wMcC`u;2E{;~IMuA_P#x#j;vG}sr*8Sg9 z$69QQ)GCK9g60`n`6l5c+5 z(vJPv!SuOdZlZuCs_ljpQLM9dY%HMWit8%89E9B+K~MojWL{j%ai3{tqt(b<6aprhN`luD(af+O0UL3 zX)-QV7x@l{9%@h$MOa49=`_urvzT=GM89+&D7)67Fpxh^mcXV+EUk5&CyRMi00F&) zeBPhdlwN9r-c-o@m)eNy-EmoMI~ zJtutoFVICB8_-0@VE39p-14TvqbqowbN72n7=6G==V4!D)TG!&uM0vU%X_RL6*4b=E1pp~WW zu1DL_8Uo~StcM-G90--Pjdx7NosDV{5aVM_nNM-AyyWSDQHyIC&7<<|f!7bE!gWA# zm4lX_-J+F?Y}!^;5N$}IeC!^)J^a4LEW{>Tsd0ot>tj;;I6+MNh6+NPeTd1|2`Pvw zlar5V3$0ul=lLK~{n}O&lwM8bS37r5>uL>J&h3pA{wlJ}L zpq?EtFQLt6BTIh$PcNq|G{mndwabV3azq;QH8E?V(VMZ?c{n!0%IwD) z`*`uSiGG5CQ(_gls$~@`*~^mc=_Miacc+K$p@s_lWK)EEoE(k0(}lB@Zc_n@3U|QV zfGxT@z~o=zYQCrI577xihAjmsCw@A}%8-S;4q#{C)wvR{2X4EATBiCu@hqPX^wE!6 zRyRv-PZqxp^@GIS@uiNMr~c<*qGw>GVB*C z4S|S5eX=YJDPnU%G(%~Oz`Y2T-~28|!hDtR#jAE!B}Z?_!s&MmNNd6C>hAY1q^Hl6 zgJRW-76kPl)ewCPU;?9*2Nc(iAoE?DVu`5xuD`E??9G-&VA6|ORXst-J?IS}znAp^Imm7)oo zSos!TS3&L3Ydgt~0@hv5G&R3F=XDBfIKK7yWW1;u7;r2VEAJ(EtEEavD{~uc6gHz4 zYgG7)j15_20#V;4Q>mBRg0}p8>V$AE!A~SOG;6EP(dvOcQKT|z>Ey}%bdeakfZC>+ z8vc8Zg|t<^*T*cCx%7v!p~7jX&=bXn>uJh0Lw138Pe>rVEy{q&OxV!Hzz^DO;B#z5A3iZ6$${@HlK*(%S!1G>h?|nWwF=ENM^)8Bb zIi`}IAxg@+?wcE3d{I=BF*@+$vf`1NK!a>nYO!Qt%TK**n~Lyjpr&QzpYWkewjm?F zBa1AC{#u2bD2*Z&Gbe#{0#x8VykX&e@ zl9T3@&I`TnF;*z^5Sw^4c>t%1j|=fw$GCp6&P1r}E;gy$_v$aG)m z8$RQ!>Qn6Ft8#6Q^E3yzd~|70MJfA9xY5LVgxZ5i-(3!JB7NebdDvfEaW7O`Ofav; z!%gr+AIY9#y7Xzz^HAn(2IWrDe-^z0!+q4iRexqrN7}UxC`dT9n`c`*S5lrZ+es3aiAhU5 z;szYv2@@Z@NFa2~y%nhJn3ci=sf0e}cF*5Nyt%FQC*?6ZNqtn48@;KKyie#|?H{x& z;;z_(iAQmnUFZKW(sg59tXYi%5dbgZrr%UQ-x%*q@iU~uS#p!=MOxS`eGGu46* zCOh@sSy^kTzkepYPCWHsEVHEV>(M?EOZ&!H?8i@|eicHJn5A0h%J{#Jn9}kXIase; zbq1o_uL$XjW2;%VK0FEBp)UFHS~(#VLD=IIxr{ZDF$J8(R9Gt{4f#$)oV5xii9YWmLYGBk zeYaXjVxyR5X^Q@Ub+X4N#>nZEo@G}SXJ|DZ8Tlpl*fw{b4fkc5+U3m=<6({xjzclQ zJ1UMGo>MIu?>S^BZE2tB2}JH*q4**7FpFbyvZ4MiesG2*kLJ5yGd1j>0}(#BXsDbd zSOYOf0f0(Ab`LeR;zZY%BTp>F!&F6T@BiNUC=|kh+4JM=65z3);cgf}U*0@6Gm>-W z^d(8ZcW?SHuqp`C8?oSx*p3*a)eQaHee5$l?Q#bC;;j(j0IZ%3kFKB4;S570Fa}qx zhVb&U%SaQ3Yl^t}dPDPvrPC0SzI+uGoc1JW&xfvo@SUCyxT;9C_M1h05Yl97d>4+p zX2bPrj}db>r>d^Iv4`6wv}Gbht?D+x^8ulRr1REa%`KMjVVt*b+Jv-<(dhHKZY3Z3 zZY3u+OfOo$=L;1sqHcoL?)Y-8K~4nb%U9gPNhLwVo_`tOHI!j!KCh~&eqLk2fNxSf z=luge*+)2zdfE@W_Xrs~D3nN2E*c8+v_!*`bF`P9)K9pVOR3kB^hZS7-utJYA%OGyL&x`Mk$ZkiQpw zzum)QlR;8jDX(U!a*@>^LMCliwbbxpPz~q3HDGw<6=x;iZ6AZqBGIh|gN7YI^8xx; zy6F=ZT-wS|vMinwe1kE$ioVOt+kfacTSv9`v6pt@J zf72}KR-qLaQ|0_U^ayhH7#k}&gkG#aXROo58i|0#^p@cm1*sH`Z)EfkSEoj?td;R&dxm*Ty9{ zd0rD$t1hP2V`+u<`1Lv!y$HFn_s1!|OZM?~O4f)>sP_^$>P;1H4ku+Ftz!)03+sW! zIYR)5i0Qk`1XbVaRa`^Ac-$U=lJk4nzP?mjgHRfLweI`C@hp$+`T=?LQ-7mTsK-X* z;Z%vhYe)uu+K5$aS-Fmxx4|uyP%U=6#bfi~z7Bi|)7>`kz%XF#!jvl#reJsJFtlDMntIDE?{cuIGnU2N;Hl&pl zc(p_zza=o6%gE)Y2J0d2R_#5>ssU1gSSejpmOC{@%vtScG#!FGUEC$cdQo?kH&|7@&McSAV2u9Km3$MJs)g!pIBA|jUUUtozSj(EaX*e$) zug&LhcF=I%)I>H_!1-nJOPiF9uxb@%%_a~2wThgdW8{gz_APb1;%A%QVD+;gacZyl z8o(Vw<5dAgvk5;*ibCg0;$gRaa?}r5qFJ*wZ=_npaF>+xVRwdx|P^|IQf{e-CR&htE@NKtr{F-u-?X_|V} zWVA#ET@+3ijX?8V^%1nG6nf*DR&PP=fJA8wp}XNOmW`M?d4%5}v-lWB_(Q&^0vui$ z9pe_wqGs)3JWM~bBF#59vog0=Olk*tDRU`cXgkFZ{%sb=@5UoiBvKz4)^b*!i|hEI zhRccB?9}Sw6klWnC>n_tfYWn>H&Ra1MQ!&_Dk|eU_hoNp8KebV*K)TrNM)K06$mI8 za#luPPE_KkusDP_eqSw6MeoyO`a3 ziRBo|#hD=o>!Kto$E~wL3*0q-MbDa>sv4IV{8dW4)c@nMXJW+FUe7FXeH~mRHuTzfL zqmb9R4+f!+?DixU1A-^XQZ2r=KS=@?@-t=`qR(nDOI1fZ`(-=lt2f&6wzV&r=2WL| zJiM~#bR6R1k?0qTOkpmdIdPZ27nk9{a&V8zmy(q1v?Bc`{&$EBeovFWI<> zEpLgOBn#++;5*BS7EnQzUP(8yzz;B-aamLa#{_>UNWOwtCaiXtg3y0_O{7nKY$G2= zY5a666JB1a)YWZrPiD&h9()>%!BdL(RaIJxiOaK5j^-;l&lRuT;U{A3Mv958kYsyY z7_srbtIg@fo)6L(WCmK~A}^e#A-TaBc1zzGdG}tz!P!4Smux>pV*jKaMJSj%FdYrk zP6fs;T#dEDkO}?VuMVOTldXGaF&(QF&R{i;;HatxWaD?g+MIU@Lr>Z#KPRtLWwjdZGOphF(dHj@(fNhRf&QnapDI(LaFF2P;_{VR zAgQj0vm1p7K$9ZS>|H0jf)vzk%0kUWE*@brK?}}DwQ)+J}JrVZ;-*kE3{9^6Wvj?@N>h| zd=ZXYkvM_7QUMD}eYbnX^L0b1QMY2D!;1g4C)3L7pHS9q)XhzNa~Jl-ywJVep)AZ_ zSg}t?!kFZW@7gL^dPjeN(@_u+`!Vw|k0pY5Y}))O<}#&;xT*f)(1iZdl<>s#^^FsQ zhVErpU}vs=om=%@cdzU6v#al4v4W&17Z>~@Pf_%-ZbkcB9g@C^eD4<8PXa34T=OA( zlZp~U|76FEB^x31`m&nR>p{`4ZnPusIL^K{7{15g`tte3?$=K0r*rMq+x)n^8m+Tu zQjJxrvT%||6s~l)W~J0?7HK|$h$oXJD87RC?(h{-M0b`?!#=K*lVD6MfuIq|Eniui z|0L~AsI~Led!FNu{@e&x#XoXgvS`cmJm&JXyW^`@=h-e15at9M1=UCqCViZ~X`TvA z6E0J9!h^u543D-DA>2h_Wyb?pvtKO>Ol{i3`IM<#tj0I{9mW%iE7eag!W!2;v22x` zplU)WGZMd9uIw-2v#KWzqx;=b&gmCoaHrr#lF7e|i!D+Kr}P7VWjT$P;@CA|rRC+} z#%g2!V!aun8I$+3{?+gu+{l9?xZ?=wp2|oTF?4!Qi6&alY|blJO1))UqL}F99`^M; zZ_y1K#@rMHKdTnKyOs5P{WE4MGh6A58EoHw_TiZu&BE@5#rNzg&)hlf=}4ruJdD0o z;u&Aim!2xi6DOdjGMFlqo0&5&sY@<$_x!YYH@WJr1?@-FufCe+%GTu^HoNU|-Lggv zTd%Juki430@?nYx`%Ft%mX@cF=t9QaY0-2)M-RU&(ZeOn09##|_~v)!(=igi-cOlT zrfJVO&pP9lJwl(#Pg(cm4jwa0)mmW@A5CEa@e|d}Z_t@73Oz#LP1G>1jR|>X1n%+A zRlKxGhhhHx`cRN5s@`lxKW`O0brz*l=XS=g(plIXeKE-|E-_bY`ahXb`9jarJi)m1 z7WXowa>ss*lwu{H1`M5hAaRjMD+Xl%HVH9S3K=czZ240pkhw(6vhY*g9oVw9>ZLBw zkW}QzH1ofF`xRGwv0CA%JWiPE=W+4$M`!CMu=sizXLP*sl~{*rFQ@P!vE?W(UuR62 z=)VNd=Ir!7mULi_gGEk5j_#1`C9Rc<$~2_kAvM4s@tdGh`bK0DcY#)5E&@(eAHvyR zzBpA6u2Tx4Be$GAt$o{z%Tm#~Z7)k=MX^0{G}}0|SDznF{Io)CAm&*2vc#NO#V9CD zj_w$6Y*_Z}fdVSSv4sm&oFQVX8aY)kC}brK;y?zr@p_ZNrzxsF(8ppQOi#y)7e*?} zS_V_0*OKHjzsIyhIeR(4N<6rlDC5U$jlPed&iNQ}q9j-QE^0I{Gse}Al;>sxmjFy= zWjvSkK+?|q7PKTV5({B!1YsyM_ybPJ~fXCzo3>*jC#kT--zb*rc#7t%b+Sd zPX*I@(i=L=gs-0t&=En8nDY1)zGS8uBo|0}=xea(5sk?~Jk!5caFo@Y0qk*g^xBHT zlV2YxV&aNrnaBS}*L_7b(SPy6pM>;65(vE|^lm^vP|;9DYNSaw^sb(hF9K1w@d`X(+szCx_HXKVy4h5!(CW-nxzCi(7(^e3`jB&q z6BSa9W(3}^it<~Rmh`DOD*JdL%jkHWhd-}hul9BDVJO`xp)OtF*Kd{&lwEKE#Vr; z{F%wQiL{{~qi<`!iF1wq{6dGI=u&0cVWL{q^Y>A7#n@1|aV+|L2a1EXG1bucrVc2q zl`5Z>;Nn|o+5G|OQbes77ZEZeAHgB>w2p8k-AP$Cqg2st1L>@5DjrWAH^T>$mCD># zB`@%*3&FxZPChbk?my-Gt*l4(swk)DX@iPNeTA{XXi>Q2E`);@I6m-CdLe!pnLtIJ zxI5!_?av(facQx&wP_>NAWy9SH~Q4!Ot$eT@4-NoM10ofGp~)Ho-R{$zxF=SNH$np zPsTRN?f8S35E1#u74UOk9(%IqE-Gwjf`xTZKQNlhJ#8M2KMRB^W5}IKf%UB)NHyR?2LQhiEnSi&aWnR)wOUU-5|Wi1N>J& zYmh75x%@UiDy8yucYm%I^`y*+YcSJ0eTY2^7R2sfnLy3*hu^USm%+Saob(s33Y&}( zl!zZi=*BgY>hGDN01@4bzN>|FzAe(aEFJjs!(;0*|lhDTb7y!*e83 z%ORBJ1>wKHZgkGk;8)K9_zp@lY!5A2?r8_?_Km*q1il83xwOM(5fvi0#^q@hR_nU^q;L)9yu=B&t@f71OVMsbESD&))O>mGnr>}Q`o3_ z%;A(vI*&!O`06nKS_jfXPzW(!IkBx4ZDDn+&89IlrL9dg>b|JTqq9wH!~ahU(;GD4-`gWeeHuV9 z9%7(<-IZc1?rm=>4H+Oim@1IPj-iv}e%7LgjWCF(9)GhkeN1tmjnggRVxG2f&7r56 ziCL-!PP!@y+O&kcw(W##H{*BXMH0E#9UXp81!>!1;b0*fNjmrKz_|)r0`^O6%Ivw^ z8~BG$GqP3og@b4!EBK;Ernz6l#M3o)YwS-MI_9+y5OE*d#Dx=^qi>eDZG@j>_8qad zCH#33@b3p9j0$(5i!@2+$z+F!!$o$)LA!?hf~3R(yx>HF9$W_gNE7(=6z{#$e;5&! z=cV0iouTC}?;B`3^o0cWFitGaG4;&!yN~_A4JP&F`FFr9vyppj2xVM^z9x3C_Qr&p_xCjCff?dcY$rn5lT1DS97zub_8EK)KfrkE@$7_<)2@A z&fUy^R>I$kWp!BPec_w!SKna2OMD+yvF=yrtnYnj}&5-_d2G?ML_V=&A* zx4$kQcks-n_2q+h85L^Yy;2S?RoYn=#=a#!R~B--Or37pcy-po6PsYy?Ff4|^G>Lz z(!#f$9?ymM4*3bgbjN9$bPiPSb(T6EETK^Xrj~fI&(0qt0DlO++^a%SQHgNQmti11 z;5DRqZ6xVhRi{o(i@M2mnxMtvbnE3EUrsfI1`}s;{ID3?Wi4RJ z6&A|%3jdj$8gEu3c9}Sz5eg1!4|2n~+Pij$)vH}OY2qaQ3tdAwqZA0IOL5+NMZ$N- zDD`=mjfT7AUeRkq`;c~?6~MgM5R%Z~1i%u*H)N$?FYxTr`OGdYz!_PsoV;D@%)k2O zRQ1ek?X@AVW66pCGzgVcd$S!g4%1IurMBk0^IWUsUi!&E^I_KPjn-@MAz*0IUOiNXu0r3 zCO?QMk)e5eV66=ekxyfD>ZzV625wGplO62aWh;=oIeMmT_WD!1eh_ObCqx++D1VI6&x%y5={8zdh5lsxDEKDS6~8L6Z#VG>aAgY4*Ny|FaDW z3~x*1r*#47JzMAxYaRiay`%O7^{(EhGriYfh_ei+=dCWH4_HG04kLBxhkN1}F(Y6|i3yn*PcFEUxP7^L*iH=IMXoKrsnytv>i6*su4MKlJtd)X#@ucW z4s;*`BXTN~nggs~>?oB$9e9CHW+3Q{uANkF^#gEq_COm6)y6Mo^0NC_P*3h7VROgO zX15YS1WXkXqL#s!>gk{%jjm9Y1KY>RhmK}nxEWm4OZ?K$ymX;TPCB2_OuAfb_GI9j z@e!`NFf}^pq302$d9l?pBpu(`d;q}`(ts4`&L%Ll0;EHQgwfzTB2hVvomV7b$GBJh zV*Gx~ikaa>K5T*M6(Z*2y{&)y$jk=vgid!*|5TNCIaTNW76H|Nzyc$7a_H9L(6DD4 z`e7S-v(^LF-%mPpOr;Ou$?o~})cP0zHHn)f(ZFCT#ET9uY1E#6Qc_aio%!JrkuWBG z8N7o!MvX3)-`f-Yyf4Q7%)jA=Q_DktCrtmPiM{nb@{rM}G?PTKFiqjNr=N(_kwI5e zQ5L(qhFgOI(h4R7W-*rAC=Z4~O4>OVV`e`^1eyW{<3$*m$k|}jr57a^%b~w6-`)S0 zU?%9kz6I7~fUOUTSTP{Z)S;4k=+4x{`M+cSw*9zxeC_c-IAVV&NX#|0O|Lxh`{m+O zSxK|$J8#XZVQxzYoD|z3uih%J6?GGTi3FVEL(L<>&m8AnnzAqI0{bL{tSaoHOzSc1 z)6ZK|A$ou&2~cH#wJ2lz0EiW*?*&rtn`3qRpE1kO1#(uCn%MCD)_@lY!%BUXmwpo- zjJnmA*tfWjG<6w;7(n6{<^RRQ-vt#a0bpGcuosw(ygGlY8m@+&K86+RaGFnW0(TWu z840HL(IGU-cJO2hS`| zs}&*lkhIh^CU@sRO*l(J>eq}74Wz+S0RNn(NHslZW*(%`sn3f2{6qKizXeqx{vt+A zB2=A*Ot9YLt})W`SjVZ$$4(xQ|8KgT>}fgSZxMCgOb!-}k6W!<4xKSqKmLS1-?Zf@ z;!9CVomJiK4YlSh?Vv)?Z=qlsoP$SP;=)e}U~8XltMho1m-6rvW{UHtNMCrn7Y|g8hnw9W7}s3@-&_TAg@-zI_o`eoNBQFbMbnU6 zL)$)PNQXw9B4orZT}>9ItAY0l-f~LbCD7O`?uX=ScU{WTv8rL*^zE?$#5GiJAV%m->qh3t)kIPoAZ0*E&ievYrTJ4X=4n};6T==e8fUB1y} zzBaM60p@{;fsnOsXl4sEm|D&+extw3U0qj0_t0+L?gLsD1aZX4Gp6gSBM8OaxqTyE z?)~e{#rvLyDkzhnyX{tp%TRl&zzKl5$3d(q0&fP?ar(O#zP118M*Qt5{g2zT(htf` zT?J1%uUQ&E~l9Gtk!xdtIOa2KJ5{_yIm%*W=X8O`(=81l2#<#+y+@g zJCeK{)mjvVr~|#eofyApLI|v zekV?D==W?+>5CXqUf6LU7G3wAii)+ZM~;u=UwA~@ezAiY9vr2ET4mj1D~M@o<-Tz(_XEyZsvjeGXvbs>i;Kwoc3()AVNKJ)N%PlJm9t_#0tPCJ7GSX`x`foDv z7Z?;@h``%AM+kM+*rom{Ie49WfUKma+8LKtsCOKOoICM;N>1Oq)<{d4lMRqfGKkGg zH#$z)`Wi-|SS7nm`rwgnFVkw($CBWH8apyI3n1+i(y63JV;2nr#|8=b1Lpzr2q~oB zoJk3TR{rLq>hD8v=Y2Oq0_(Il8y(jmr>i<~g_230n(@X@SCHX#fp@}Ib^EHGeef?mtZo<0zE$%HEv?HRZ|Ism} zeQe!J;5LjkD0sC7s~}qgbe6Bpr*0*Q*JnrnlHc;(?x+F|y@&dVGqecfnU$1%o+F3o zs|PYPk(m2!st}n*&0x00>{ly>ZXL^#p(#sb6@(^CERxLy} zu>O^uPp&rTmKdp%oE2wTO{qpZ0A{srIeMUZ*_>h<%SD&2kA}~z8BWqNngmzCighV# z%0acLf6+>($mTo6m3+joC9j31_@z*F((X71ss$t3o!`abSTa;4^TC!(l5UzMI-E^o zVD@YXtndeOEjV~9zqJmj|2BBpWOkGC(5@ie;Ks~4-yH5lN=iuY$EL37ksQFym7)Gr zoNq3qHLMtJP=sp9=aYSF;!d3#UmtA$1Iwrq_d%i<5Y>K7Ji&S`A}v>6lE_)m%=PeO zsd+{_0SlDDomo0m)p+au(8&^2>#GsY%FMysPr9vZ_Bz9D$6q9p9HFe$OApIpzFvx^ zpLQh*q|JQj0rOK=e?DLK{zIYlek%^oRKq;ymuX1KW5;fr@Om7Y1}^Z6zqA>sMM%m`*Fw zN;IL%l2r0Vl4I44Hjb~_u8ZJBAwX<)5LsuX>9^VOP12hetq8L9yG+SIT|FIWt_>-G zwJ%0a{bQ&q!JK$qhv;=9%XnwSwEtzb528uJu2?Q3Cs+6t;2Yc4)uH?>1S)0;uSn*y zvm+a@23h7$L!S*w`knPA+2FR<&2p~kG}OpOzi<}4H=>LbSCcCaGyj1R*L?DElf>Rn zGDy`i`b_pLZ9YDo$(w2b}|QlsRL38Hh|}^T*;OL#Rtl5Y|%0zD6-*2N@F0lY~jV}w)la}IkZPe4q-m7 zMuB7-tCwDOe*52;8hc`mOtd%RLVo>(F#$FzYP<~8Md!9kI4~!Jz!@1NJ=FS;)v58h zN=ljG&ZF#fTLLRjR0FRie-s_8nQp!IOa2iOf_r$Xvatzbq(MyO$Lg_X!2k35;I>R>Bt7Z{ufCUiztH~ z7Zv~TU+rG75Ir83jt&e)boNU;U__IB@#_B4-WPw;SN4K67fluhu4!1PW-Sg}{_v29 z8q<5D``98+t+Wh)3#KtN)zw8*(xYZFzBGuZpuOBC8xhDt+@0{P&TWw^fku%diHKKI z+a2u^YW4v4``CoN^3JA-{PX3rR?>rTbZ^CH$~y2Q@Ru^%IKx6Wo;9F0y;=#r{l>Ov zw>SZ9eFt6vAQSL%KqZAL(o%&R_6cA7l-Le~^;z!61BAV*ee!tG3`P4~_p)leojy&W zC(EzV+FSI*P}XI0ek`j;?T!HzE&#`E*u*+8+n5nuWUS4u*_W)|m_xj6RIN&o;xe$9 zz>2W7H;WH=*@vd8a1VXoiMb+osoO=shOW>>gV>j=U>?U5h{Un7_UbCj#A8a1&dV2f z(oB!qpq%-Q?o#XB#TB@d&+)9?Nky!tKVNi9-E-`<4-U4Dkcn@qi+;53>K(i%FN9V` zK$1)R9NoRkx&HKY&AjNxI;5u3!@!1E7`6NCf7E)p-MN7|+O`4UlgXJX6`rJVTkGa8 z^~(9L!+JJLC6DH1z0<0xvvcsFsa0psR1w~;9alMiH8g%n$13{eO`WA6GUlA-JF}m; zhaWD@-HnUpi={PzL8L;20ieD3!?WaV^UQ;PbK)T%JK1l3F|2$Ha!*OQE=|@hpy>Fw zN@whHkNi?gJsDq1eG^S!;lV!fyxkC9=n@PFH(l0WOT0W?L3qY1Ib~M zn=~yM)&$eQFc$StnhQu{XD)l$!Wu238A38x2}TfA_4X1ang+sL)9o4&(r&iX9GjAT zzwK>3W%PZ)F_|qRZMPZz5=96BWtpD!Ktk@QftTC$=fW1kxQ)6ZHD5S5DS2+KJ=g*# zi+b3o`GkZb?u>SJEVt;lEtJ}eS0k&~ph?HGNfuyhhHz&-2sSwwE~W);IjW^HtaHPu zF-Yy(jr=Fx>216R{sA-aVre;jN0MKA6;aE~RW&T&OX$gTrp~AB5XORDut3VMHe}De zH3U(MCMb{zjDwZDx5&CvbsCA;*R={$G1Wr`U z-b*-!;dxwUC8)?)u?2dV1;bjTi-UQ*5F2q~s|Bjv>`;1G%p~hNLNR66Giy=ZCTb8d z67t600wpMhl};Kz5$^ICI41QVqb!JMrgh;^^T%z{KmrwD`bL{XwuhkZgA9b}Epe+J zn&l~C?=nx$YEk1uR-awee~4h`Tex;p(j*9};WJPb3}Hy}cF$Z{zGkdD+bL+usNUkz zj|j1XSf^2`;+W+SpOh6dhF5LcjdwmVT5~*0w6k5jTF#ytQc+@zUXtA5P|Ql0I(XzO z(q{}se`heP`Z~t^h045~nM3A$~rfG14jj$ER4^CiSs&$tP{tm%{h_r*c<=B}`krsxTjpu$R@4zbyZXzQ#rZUv-Jzj{&#>lp&-*qJ&N-ygk3u9y4e>c5N4@J{WhN4uSF1Nyv zkLO!QxoY_o@866T;=Vyj8ruNLNW+2cm>Z>Wda%-d8^nm)M4Yh_9Vr{kL^64Cic4x^_j)3EwUS42vq zau?zn!8&a|j)*WgSt!trctIo9JiUqrJhGUlk^h@NG9UhYD*6w=+< zCWC-o>dXvzz=0yOxCosZ25kE})4`CZ*vQt@rv66%(smWknSdC)$+^U~HLZ8)%m{!z zdv%V+B~)5-<4HM~-!;XmGSXFaJ4V{MmRZ@%NMs`O7V~aDjJkyBC&^VS522FsAd1(O zXV{+F&sWGtI%cJ|o55`XY!Mw(P-H^jb*DIJhUBkIy?1F!&SA<*c^l{hR$UB;KJ^Bn z#b#eP>diSsi51G4p(;}p7)lb~zYuGIq6zv$6G>2wklRMJeKi+jHhT@EYZ6`OuIkxG z=Fv5;2g|Qt-O;$bZ4WBZ!Ymx@lU(6vSUjq+H~jVX-(G52VG_zcf9wSU_r9YLVp~)h zG#>JOm(w$hu7&af@D6tA8s6)uJ~_z=orrHs11(2I6hAo>aC2}T=*#((!BcUpYSRfK z@8Dm&|L<)@sOp<-9~E;4V}g*UXHguY1!ODYL40n@zEZ60dE&g@_|_bay2qoS1`p=rjcE0psShOQOv}_JVj)65edEohWr~I zVhzQW0M{K&NY{232HDFlP!J}2v#_w1)sn=ok8Gp(>Dd`%+L9$W5U?W5V;Ye_N8m%7CV8+N$>F^x$K2Xh#Z|sD5JEc7G(tlZ zKYGp3p*CA8GF;oZ2zM#ABXnWS1VW~RVk3g@`^Z#zQrS<+peBzMCXO8<{l0z1*dx^a z1{YyZYe1h5%5c6&o)5~q`XoeG*F@?uAroMs7QZ5526vPvoQ1u(;ZfGxl+S%t^sBReu?aWP+m0x~BrC3U| zk{nEK+;K2Us>d7`Y=o->BD7eJt`%U&LfOGlVrWE@FoVL8naI)eZ*RRg_fm0^g#<)W&1 zh@)v4cTQpk`%rBHgpWWinCC~3G@tnv-1XdEch z19pmz>JYMxc&{^@)G89%ZX`pI- zhy}sPY)OnnpoXm)@WVJ1%mDot0!`t6KNr+}*#|0TBRAh4#hR+q<07Nx&iiH|t+;3*NpzJYx>KkSvT?8Q*hU`W zIDkl|BETHzG#n-@w^>Mg+0x|PtJ2Ytu^Nd%b=g6a9D@y0_XRrEQq5h472)Dt(ZNst z%0gEH|6|cKI0We?(77OJK3~L$24m7-GKcY=(DSWAN}Ce&etQ?$ZUNiRv)?g)Nk}zT zbQWbCEdK_Sf7QZ$U=(L-3Dd*M|1iqHaX3Cn^f4X3!p2=I|38#uqX6+E`*H>cdczcU zJ2JQNSpmNzF1QIULH5_mve{sv`xs~Xaw>YvDn?G14%K58!!(4;&ZIY(t_9MdIzOvF zQOJSsp@1u^;1+8xH?7WArs z+jRLj8>w(Fe}*FZii3Sc5q-@k&vUSgf*W5*xUU@1EFp+k-teol;SaAtqPemNDf*j& ztIfH62#epM*F#iS$}Y{uu@U9Ou>7=D`Oa*kyqbdBapsVVEp zHX80f+zb17=GT;_xT#o*Q5 zCBctIA*<*}`Zf=i1t5&NZnu-r?Qv*wGSl+I&5yEmi?s%J(S#pKrAwQbAF6jE2zp;0 zi0HCGf$zc2bX2~uqHKer3(|}km-!>?Dn8o&7IsyTZ~LHef_i3&-U16OmTYeRJBm9T zg-lQ zO&1Q7VVZnI5k9z8K2~w975hPSI2m_QrhE(E)BB(u+=NSZXpbqvF7o$a_gwf%#}l`s z8&_#ZVS&htBp{29yhXE_pkekm2&1d9uLYuDMz`IcK_|Kd0nQi~Q4t0ww>5+kreU23( zh^uj;gX6cp<<)!{H|cwJ<*w9&yWuX*(Ha(^8ZKroVeyh4Z%`?SVEx+aU~Yvz4Xj3o zu;?fT2YLn=b`n4tbaVj&(Z=;U7L8w};Wpz$m)MWKd-V!s%&&r;FWcn}v%Z8~em&#y zH_l$c`m1)UVjgBj<3IDUl7SC}KAvSXzG6$XCITu8Zr9!W(UjuwO`?(kU+=?SU1I#w?32aZldmN?K#Ef(>lF-=vz*Ma&zk-zz#2 zjdwh7^sapModYMyQB(^L-aYv{qkR%%G|}7Z*q8K(K0Zo_vK-*SB4&_h;*f+?Pq(Khf_xV@19;aQ6}Myt2HB_T?9nuQnuov@x%@!u!x#BKQNPgxoq~&){P#?lT*hhFw`Bks)ECceNY|Yx_!x@q)Lnm*`1}{-W z7X_m0@)#iw*}`kNtKhQ0UaXU!w7fdD$-o|sCGeW;VSSTl|IQ}8l>A8&<+>4mQ#kC~ z*bgbxTl9zjLpFKSn`|5;`DJYU7#JAo+%CZK7-L_~i1P55KH8GAKW4M_%3E`nHafG1 z8j+$2%rj~>vbp6D68yth~7<&={@X8+alSJ7n>eYiru7cud; zXKYMk97a1DFSG9gB)9xcZGSs;@I&6GcRRIaT(RPT1_U;L7ITwuXtpn#Pt=1s5<4^Cb1TRqFH!f6TGT>EQK&;?o0vJ8^^l z?!RSl68d_VD$4V3w|r)lPxVZxr7kVeS86aLi?>&f9va(mcFb^Uls|cLS)tnWy!>6D zRd(m%C>h-%h~1RK)^|5KZw;T{PM!O&=bfSF^B)@v5C7dec$WIFqH!8MAT}lWqe=8J zRgycofQV}R1iY{7o)VFC#X617CZIsIJ#n2Fj#i`nRj<`)CHSS1Dh(w zV&wTY=ZfWbjo7VJ<|jE!ssHn|{4qV}UW2y}mz~~Mo#hnfwC~g%D0iM(;h<;u%k+I5 zPC$RdZS4J?sr}}&PYYf?a~k_}ZLB6`rRMzfiJq}9=%s1)vv&%7SkW`*Xta~RjqEI9 zA+E;q<;vid(SpfE$MB^q1z5GIrkMXk|KwvY``dgvgP!2_gM~V;?||;r_ZM^lhC_em z6`Yfr{*RQ>D?*4jx?|RIgZ}pAeM|AjVODhXa-##Dx*6!bn-+t^{`KCM-J;_D~q@oA> zddr>-53PT9apAbWYTHDQK&D>m1Q2)v)Y$oV&|~-yjIth|A7P&-S>2*LMkO=HyAAi( z&h35snRawKU@mRz8y~ymzGM0U4*Mmq`xNf;Dcsho=hFT&Xqig1kXP){4SGl47|MNl zO$JBXE`R5Ev>|2bUktx)d!p&De5a=FnOBn7L5I~s`Q`G5&Fh>$4H6ncLrI6O+)sg)%j)Z5#uZM;*{xY*0oMo z_pM6BKR1e3Re5mYwDFOihRqi}IzOF#omv*k41z~CO10bSF+Ij1qpsR*cLR{RwzM5a zmmSGL=|lNJJine?B(D7Z~m=U67^s>@7x;%jeF$Qjf3vsW4L$`+jBOvdNz}PwJ0eeO13Nfj{vq?3Q-U zi_^NhK!fX(jlL;o9*OOJNLRK*s@0_B?5O>- zZmjszTE9_74~Tptxs2&cN2@D~^~1;zgeA*xdas)$h!SJP=t3FVDHD2@8_K#MQDJ)2 zhawp|jqCBvib-G1=C*H0OTE+{-W)lOQw}?SdPMfB;~u^08xT9!gY(~;58O|?XFPooP>O3IY`6;&@=0CHi7AeaKAjC|N|cxwg!AouhTi8cTF3kg*7 zdJ6Bg2UO!@8QmIRb6ncLgjXz@AJOyuWFu0}Uh9UIEQnG7mp^@eQ{^%B z>csHZQfj9fyD@dXe(zN$RL;}WoJ^p2%LSP!qRHe=wcHDPLeMKkcdrKIM3{Mh;SR8) zWM;!WE)37a%gZ5Cho2A8?LSvEEs+l^&lDr|WF8OZ98f$BS#SqVze~+M7;9PHp<-oaxK(i0Z3`yQ`nle1|I%^b7SAPd%Io zs|Y^YIVeVX7?GB9Cvy#yAVWL+*wI)+_qkK;?D>d~KS{G*rS77AD%Gz$BCcZ`jt1&{ zXcs*_e%<+ps@;n+55;<09r#VH@|pR9A*tA}Jub$nZwl7G)RtMJDq{ZRy*sX%R1IyPj-cZAsgIzt?oFs=`AU5!UgBMtxdz zgw-(ena(<_AS+2^+aa*Z$J%k=O2o*!xKUo_Aw!9xp-h()$7Ppu>>%9f@5BE4#kspL z5(<(cRAii+{CmRThd`I*+hq`B?Tclh({7@00W{+UtBrK3fi0Dyl3X| zCnDjdiI=5B75fq3c8NkJ=~~7aLQdLcl&_aKW(em^A5;foquF6Hgig4t*9gw?AwFw; zO>xhX8tzn;3-B|d5@?La__98s;d?Bt(~Q&o&1Q1cegOz;WE$~mR2V!`O$cRJiYLZp$SyFT6%~CN7DzB=&JDaNgcTt) z7ZB?>)FWkKV|Jdr{w8P7(Pd}NGUm=&JdJTn^$Ku4m}MT(@)cusDhPLRtvEvUpwg6< zoAf;1)-SU;Kb8@ExndT+-#%(KbwTCe2D{46273PH70*w7J_r9Q`ipD&2nmm^CU_wiJg zrZI`%;*s*41@c zB4b(V1AW*S+?-E7u*DrI7og*Y{U3r&PXJf}i`unLFk_>vfSRrRfeBlltFCfCZNrVq1 z)%`VrnM1jZdusIDrfYv1FGaj}v2-$`E1DKRw;z%#o_PL9)@2R5GvqrOO! z=qei7rMPuKcl$@mh9J85VheGH)UN3(i(#(%8jP5fbcs_GORN_)P0Wv4N$~no@os_$ z&)_18CW%+w?Ec{0nVP%=l=V$&49mn_#^BUAVvlGM>0Vt?i$offG8Ia_Y-o~s@>_g4+9!gR)RCRlqdKlLLVPYw)|81| z&;WI4Aj=rYCf&b6xR7EAjQ~_*827{(i&q%W(-~+IQ_>FPe~_6~&deZ7f=GH1cDT|H z)g-Hi!ySy{U4T*w1Hs*&Lj$&9UOj=|EHJ--2M$bGM%n>EX82`7BDLUpXQ8C^{>f=X{vk_MJr=sSL07fHEglwz)G&2SKsU#1MllPHY}23DBaYR4qTwaS=E z=cKXEH|Nd%G5EwrBdrbE(ftU{;FdV!>An5A&u?NFCX#HB3On5;iEcf#>{2o~Od(Z`m%X0f zTAXIa1R#eAhu+V7#vQ#OdZr_$B>)N!phg&IQ>*6=2cd}JF28~f_bz@uLUBY5Bmrn^ zs(5e^X*AY*25v5m3i<^h#_cTWw%M{`Y`yM1m(qi+*r}KS)+!&n;C1=J*OAxYX~t_} zgIjKKvR&PUkxy@kPr9=!L2ys$3~f75rKLHFGc5!W2?9WPsf|NW5TVGqIr&UyxZ?s- z9^t%91e5`Fk6)wr_-LhuyA(*qqt+gjxvOKvRCPXURlJKO4N_yL-&QW%zCguVSc=^W zmKV&GG~9y^zn@@y82KvVBn6SB6~XtpTey-kaGP43Tm)(Xz>ORrrvm@-SzV0|kP%v| z+!(8_UqQMVP)k!OOUo^WP9Sp14wdf6M|iMB97rHV$I+)<);Sc{kr2zk6F@48NoI@q z&{1(6aLJm-4dXhqZ(6?m?hf8-YwBcMTbAt)%?|wqF{gpW=yy}KtvaljDfvCDxVhR0 zM%DLW%##D45s)k}#R9;+jha_jIhR0ED{h(hz!?NqkLsNDf5hR#J&pHv-b(Ff;3;5p z+T%g9g34#=H>4M809|X#g~`3e=qu{M-S&-J56_>>jp3lS{YN0?6tJYGJ8J6?5ib_pXb+sAys?#P$Y)qx@`Ry#aNNzLfah@u+1%)~Y%;NWaKF_s!)+uPe1BVA4Ba_r!Ma3lRKRYE)sP>K+ozPP}%ebn#R!| zUGMF=bzKYykO!Na`sA33#gD)$34q*#7jtE`1`Q3^u0k&>)D}HE%i|E{-fp53>hwrf z=PcB|Lxf}ssx-7x%x94%8Ac@tVWsTMZTF5%#&)L!AcH>)0@7sp!rL=zSd)D$@F{FG z16{@_NpS}O3^2uSeocRT#e$IZf{3dBO7e=-R??VJU$s>Is<4pdFF%^&BTS8Gh|WFj zl^w}qIoWlD=QZMZ0JhFQNT)x(b$lRmYRPF&Y7MBYge7a5roaFznMvHNBXHw$eZfBc zsq(0%X#y2&DF|?4)}$UPNS9Du^?_$7_}kdm$I8BRG}B)dW9c!3 zO~9Dt@P-XbO#i)^W<>}AY^OyVdTkwu6p#q-ApdgjK#t)Pd4zJq-wwncpKA=Wt0>b(sRZ{#=7 zL ztGoV*g)BKtvjUsBO{Dk|s7&pc7gj@_OCh;nO`yND=U6EV{3c8W09*Ys(*2P8h4QY9 z0Xt6~SbRL~qIe))^%>^Td$oLEQH3e5neN1fE!4d*{jr*~06W16t&v_!nIijK3r!OS zU;j6-KgP%OlcQ74{RBMBpDuiWr{8x36)M=^7)u7Fh{7MiQM z-A3Jf%y{bZb+ff8KVylHxcV)C3v>E*EymUro;K9Pg2?WJ!0RirLKos)r6D@fX*uek zty&&rVGvAVIJ);gecelPpJP!$#5$0(Tc!*8ok*W#8I@JLrrb8-y`|sp&?sP0UThZ* zg>B^lSPqlIOQ*6jBO^9UR-2g4N{k=nV-MvecO6Tjz$b+BJJ;?XI$cxORuy0}q`D0E zaMM5a?1}%!c+#b`oTXQm&izh~3`j({%3k}ed$DaQATc`-Njm)iyJePJ3{lEyjuZ5h zA$ajbrRcR8T$;z)G4=TAjwGn-FKBJxoo^q*rCchv$KQV%SClCI zbs{f2J4A}H|B`%8ul$7i_rUGd@Bbf1_Z^kw`}YByCE!L}xIq+g?>!Pk#l80kXUM`ddBADR!ylY+DhJ?q3&c(;>o`O?6 zSVNDPR;T4k{1nKLAo8I%0@|AK0hg70Aw~R}*q0KvgpJ5JpU;y%mwIs^=4*I7(JKmN zNlIgCL=|P6?8$!`mZQODG*f|R^8w9DgN@}xF>{(d1)svKypQ7~&O@P^W*fcSrZzKP zZA<+lo-B^H%2hk^^#CC{$ZRFY8}Rpd#M@*}xf!3mZ<_h6>C{QU@7`lBJm(DEZ z^E^ua6ohk`eE;<5$!%C%H8hY6G4=*4t_(=-W?hW+k;8*M4J6~|psse`W1ba_y+M9X z6}cZ*>c!w*LITWFffqIir~ae>(C7B`sn7u`iViY9{NsI?3#)@(cW;^gnHP6>Vd>JD zFi}AI>JghlOb5ZZ7z*Zq!ECrF%Wfd<6(Je6^GuN8)Hs&?OYP*RfqChNMXUV*zrPm? zO*_=ZxM+P>tmzM1=ZkuRV{Y9~dH(vc@r25Xa!E(vkgYtktuZ@{XDF3G%K^YaLU8lA zRcaOpz=a|+D8v%g67pDic=EIUm=BPyx)k+>yK#?JYoa4A1sY_7IYbserraXr^6?w_ zUvducJ4zP*!AY5!U*DJzS9~0D?Q;(x>EmX6Da^^=Abx#%R>;fA+%U!HP1@J-Pw$jH zK<-z|&+qjE3>6zn4OS>oAPA^S++dDEgNgfT{6+S&Da6yy)^C`mIyC^|cUjLY+wS;L za(DPj)sH`*9Dk4nt}|W`JJ69e;Tb9T+^>v{o~FhQGxxeBVyIT#t~-hD_c7vH zfC10Ewxd3%dYO+-fIj1;lR$;ilyuIy*G3NG`SWHj;fYs5f4;X42}2C0TmblUAugOa zg5$g$O*<7K=K*7bP2tW2soc6;*i$+UCg=~y0`q8eF+rSiOeV+F4f3@5e5~MqMyr$9 zd6Shh@1Nxl(rsIYS|35)8mw>{2>*pR1abUmuLR`RG2sNe;{ve z)~EEX6kr&X&1)6$t9GlFBo(?SidxIc2WXWbSWr>>Rdev174;>zMNE*j%EOotK2qT{ zn2~gH4D1`2c0PnouV+(;*J@Ax`h5Qq*L!TbeaFU?b6njWQ5{@+%~#C+`Ydf4?IpH5 z-+*s@dwdhrmyD>rBmCq`tm!v&Hm_Pef(VxzFwYiD&>$A8u?pPchF3$EM5sr9k_?~d z&nJ$A+^dU9*FL$k)%m&X(!uQ(!w;FpPL{3zij~H^dd40beS#FkvA)+=Jt3It&M4nP z-Y=ZT#7ZvaiNsPh4^~13F%#&PYL!yMJ@!ztiG!d6_WXug$a&pY+kbfmKP0eyMg1dH z^VOHAv#G0}4`RQTfre6U0fe(g)yM8=T0Ju-*L|Nx*UEn={rOUvt zTu|TIwDO&SgkseR$!rImjR?2W;idQ~u@fY>M3+lH3VKUsUYU&Cd0dG7XYwt_;*`N^ zF*tIrt$_Cyf5>moo9dQp_cNU=1C?}=99{Jb9Nv$ayOsRjg?R*hyc6_w=H}5vs^IKr z*u5wBiJKVZL+4Q0GVRwo56XDLR%w#c5mwrKGy|YJmd5rEq1xW(Uzj+h=bsi;r!KWv za$d;z8Og&{A#(N1cDB~${d_+S+1u%I5t4U}tVeOlh^D?sZ!R0lTpkQ*{`)5SeTA=C zd8!5~q5are9e?I3k}oI`EQ%;ug~^i%l$fsKr>n9W0|kWKm|e8^4Eno)hhq9-n0Bn9 zIM>C4p>a|>_7CPbtGpVWzB?+>Z0Gi&pq#6jCn4z+XdUAk1h<372N?#@0VZDjDT^PZ zH+v`K^DmW&BtWGfZRe>^1{H^+Zi=Bc$5D^A$23}-gh3G;8W8mOk(%pn@$sCuioDBw z3A?QL1>l6l_uM|ihAwPtD!lW_tqMD5@h%-4PPaB9rRP~gZRBK_gaf#qxv)X&k)s6sOyW_}>psC4c zBUp(wFY*>p^z>Y_M3cr<#gm+N6lOy4e#u)?n7EbpI5L~LOOm;X&NGCg83QlT`Wghj zHPKUV`XIVkRNkY@nXWi$&r+muU`%yunkS~d zS<1sf}rewP@a)~2K5z&pOkol7}vem$iwp7Kpt5O10?vg@`bs-HGD7Wl+{@9VJOMM zm8d|TsxFA8%0*tYgHahF7nrkLlZ1BJBuOXpY9}tXX(=e*AV!uC7>yO1qU7z+1WNqi zc6#{+Bv)7c$zI|JGi>R2l>7AEqR>!VRCm5nD~31dkSJD-?o>3NFGBYQ@da$NgduSp zkBz>gS3JmUgK>LOx`kiEVDfxYX0Ca&w?H@ofVZFL)?>{TCj61E*a?xbmmZaRG-svL z)mcJWB_`hms9n0jNwPr6-&jzQ(teEL`QsBJ`7&N2d8@zdm-ES7Rd+Gf;BHPge-p zZC`DCXQ;iVV5Z~d&byarfSw;s*Y zS1;1BwiT{S2%6WoQw~v(nl0865F34*tz0s@`D&w_N+Lwt4-&fpRT?J~uJ{evQS>Dm zcDVIqKlnL5{_mmqNT^3->aFj0`H#J9>d98Yim{!pPyX?oR$Kxzc@f|h`F~*+Z6Jr{ z({mSZV5p~vpgGC15L7j@J-F#1=B*C}EZjsn{O0%?g4W0a zjCSqpT;sYzzMLKQ-;E8a|1e+ocB~}s82ve;F!a9D*T_m5%O5ub!43=@V+qU`+QHFl zcT%BoLm;dR{MislXLmX)mxU!|+jsdK^2pRv>q-8?s&pEF=YJxh1QjR+2^0_-{^lWb zm!npB&8bHCVSJ~?ygOz4o*`&oQfG*nb zt2e`nBid+xg~TI}?A+^*YXpf^0uVYDz4};lU}VZ2GH*`lFvxoq22PYD;i_3!e~|1U zp^qRVoCp*YdcFB}WmZ@Gq>glx$5Ohg@QI*WWs_|6>XH{-mcTF)-@ixKEQNkRO6&_q z@_k-uF4kz71pgyogzSffGKYmEN4x2-oCcxDU!H;v5U-$7jqk$e+Gg_KgOoLB025H} z<)FSbpp-pOP-B=2I?Nby4UK$JbfdZ{vaV<+ID@wmLnZEzMlQASB==RGL0>MnEaYpY zUu-FAkI6BivROYdT-B^1T&~_Qs0$Uu4NH+WmK9_5=DeZnjUXIH8quqx?-Ltr?D`H!}53w{kBR#q~pA^ zyEUqgQ_;o47_2zs>GX3s zvJWp$bGeLLy$sOvZ&r6^VY}9Qq#$f|u&0lGi^oO#M2Tnl-JbfJ<%(L+h&;7Kt%4Dm z9!nGPCzdAjo7>h;VmIIKF-&JA2i62F#%ivL9G)CZET=3Sbw+Z>BR~|4!qOn;>tlT#Pem-zzsEc zwi-{6-borD4(l2iv870qXt~z3BYPoChAy3RP=>>SvQ@Wv&x9T2M^M2PdWsbw4C3{~ znLXG^r4a5|2={l7khlw#2*0y!BYHDpiYr7ZHsMt{j7kMcmtW>xY-LRI(|q!fa=;`Z*CF6M~J1 zuwgaHW)fr$+YT;XXViR5PY}U>W6g|~=w*)dnZXigj+8CJMv_m0AFN+D@&^Z_^TJv> zrdO83CUNt9&RPFfhdRNknV|FQAZ0xGOjUL(XqA-&I^97#`p#lkfqc;&4|bo}5<>ju zEHNs{@gai~{X<^=WD!TnD8Jpfw9lA#~2aCH&~c&rx+jL0L-NSgHEut*6(%%7&bLYy;O zzxnNXOqzvZ<%qVog^pzQCeNEqgX8u>Usku0RRtngYZ7D_INvp_D9#xIeZ)}s;{@PfIm}4L8FHLy(h$gE39&Y z3!Ijs^3DU^VG%5Of6y_dm;Yux;ZxK~g7tE~R8EtJZU2iWv8YQn>Cw7hv87#gW4G6a%!NQqRaH?1YP_|k%`oru^ zwzZhEy^jZL^I|N&c~tex#TH#Kt?ZZ%1*=1%ib3zbEf6_+SPF1+oc|YsMx8VogoXoV z$Agii;dBmPo{6}_0|F|QCgrVmtemD!x97h!v!$fE5S$}_e1lK4NFY1N*ZvjzbGC91 zdBOs}ods|Qikc4-gdRz&tjTY(q|@UIs=#`ZBPqV^b{sPw5Ap%K#CEkEiE}Hu3m|1W zjS|jMAcadSqs3m|ly2z)`~kwam_MutLMuTtZ(p{U5=t(L%D7vgO=w!ZtYWSawSq4G z5l__P>+en`sC+tN8U7YctUnnUl!xEQJKJTUN2f``sqv+}Qq(L!+_27__sDyo@z)@= z2r=csi@4mY!@oX4!BKjQPlK$8Z+w{0aM1a15IG;@QVYVYhRM7cmZ{t%bj1mf-yk7C zS-)i#M8xkXN`dXf|QYZDFF|m)%2DnWJe`k817G>T8q){h-I% zEEd~shqA!R2x9Ho4gCe6^gz3-I8DZzraY+?7waSaAFpE3h5hwgPp5t0^0BAM>QkR+ zlycVVSelmp>778(3hv|^&c1Li>S`9+p8GjM#TRQ_C+!cyc9HNe_Xy5C&ft@SvZ_)t z-veZhw0(3UR2aP;x{BpD#@sI@Q@4sWGHEh+Hq5t9pc3k$S`kUKs;fI$oLhoN`KF=S z=N7-bC+6!&lIH)>0_=JKozj7)h@tt3E`c;@lD6|zvejw+fIEp7n!b)SDpO&MycC98+>eAwLG%XC^TE6nkCT^DX0T9 z)avm1GE7+g@ABuOi+7{KI=iPo(U3=7lMbnIUx=9__Y>w6uO=VsybBqS2&%8;w-T`jp(~zZZ=-+JVk|loXYqpv9)EaHOVid`E@O|6XVwI)- zo0zXL*R9qm9lEYb7JaK!g;9D$V4p`7aRWp;_t~hSAR@41aJaDfPznvg2+7Oizsiyh zJ_svGNu16&0aB&vkV8hlho@&WlT@}r3;icI$&h0!ch3CBYiysbxdGDGLZmGKMS1$V z##) zfI)9!ij^U^l}9BQhv!}xU{pW@Cs^q1VRXs;GQVGUk5kC}cdx$N>t$gFvn-wy*ptS|>zL27NAA|2&e^`Bb6VAoE zgqKMfr-&|jsl8ZYL&XhZ_3)b@NHO>S48h3|2#R6w%2d{vi?7@AKX8zxi( zMf_{~PyIe!kx_7r=y)lEz3j(dO}=RU8)%;8D8K(*DJSFH(Lv)$g^JR9uOfr|s9@C` zBKr|){GEki9xVP~iQcgS{kLi4D^{NLx!lX-sVOcd=ulIc)OgcW`WU-~AC0N6KYgU1 zaB}!1H}efpI_N8tACUzBoE72ucQrtq0RHw!;a<ej;|4 zH2hN7av|ty#r41;m7fB0?JK>Zult7lT6z8ZX{$_Lm3n7$Qjkc}`{$O$RqCZu$G8w; z`vO=~klNGv;s|uLRtSUvZMNigz=PTlHnLP$84i@rwHqA1?F>{3Yf?L{(C%RfDw5DI zt$bUpdF__SJMk#zHv7(qoub?JLBYKsB!9h?E&o;T2lr~4PPgRK6=M-e(@DxJs=%{g zCqXX*i2*j4{wwT$A-hFR)EC;6d$EQX6(DeeEJ!o2&Xcb-R3>P}=7X-iaeRi%Ye$i)C0vf6{#KCIlTeoR8#k0%TM{ zoKU9yE9?4h<1XXEMy&=kPNnC}k#fI=;c@Yp^5HGbqi}J2T_mmvFH(Z&v&VASL~2yR ztb=pt)*y@xKgq0OPahQ`zOAdCdGCCFRw{XYRHbJ(SYO1?-lnzEGokzLVq71wh@Yd4 z$b~0;kC$)D`^MGj9U&H7ySo)MAw62f$ziL|!2}7g-+Wu_2rWBDsR)T^uAr25<7z{5 z8pCG)ExfcecFj>-5Cv*X%+xd zp$j1HwBareiLe-;=OcB9K}(rms7+qe7~D6aF(w39BOH*~J=1JYEZi+?1mBgTXE|~~ zoK4j*5P|v6hZfXhuIs$>h~CtuLOGGYL3v`3t~J<;wrv~N>uG|it4(Li6ZKWSU(OdP zG1whG_b&q0PXg^@ZTN0>^p;k7OG|JM;$XgL25#W=6hri(DIAVDVONlnN_K`S>hB93BHa8{vMO z+`Y<*wH@wy9;=>k^tX@e-bD>i!N+d>^^1SN|_hygBzc>m~o0?G+FXBNgqyl~4YKHm-%X$v=#I z{n>T2NhRid>M*#DH%GMJ%9M*+skTx~E|){SGA;*1fv>B~*v0hn5G`%MM$1X5W-=#)Ce)ke{cU8r6|P_d&4OMc%#mawQ*6(#2E zSVN&CR3e2`_;x0{r%Fm}BqlTX^Ox=gzTiSByG#U~V36TY4 z!Hrjs2)xp17I_$q`x(K7H=7#Wvb-)TDCLq_cLg5Ihhcur$PvNDLypUSyQMGJ?{89rJ)*<;`Q% z>sH3|JT0RgTP=fyK)Q+}Nv$V3ezPNvZ*M)_C38bF95q9Nh18k6xw{=U=)$=+>4DK2 zR`2jGa|={nbfZpwoxq<8Ad1dVIdnbRWnuwS;-8uD=a1I%Ge^sr@mG}_+uW>=igX?n zxkonyrsXI?;+#yVS$zHx*&Z)65PsevlJi~Tp>&A(xQc}@%$05xuN?K=B{i6V#&+;kmDT>(q)I;+gI_g}d~t}>*rvy zkt@J@HPX;Ro+CT#?Ww1n^+p!^7ttb)C_}6zUIbWcmB`}1CN<*j7JXD;>b;J6uPvxUgJ#s!@KtD=f7 z-HLm9U7r)#nQY)7S|K%Ni!o9afh^XTpB4VnRJppPfLh}m`P=QwtB1Jee!}nLrpROw zB#Nb)BNCC+P6A|XY z2dj?k8mOUinFSd-U%BB8!(OlO#*r~1hHFHT*6Q0Tq4TGJgR(+*QaMC{E{>lmpBU01 z72aA40`t%ztLwmd^Gf=ysj8F-V;r&cZOK}c=jo$S{|)6>Vr{~M$9Z2)|Hx=&1_WBM ze}<;2H?Ky5mWyh~mHZSfI@$#D3wil4Ki)1SC8`3V;T95C;(nP2^M21_2hImpviTQ7 zQUB~Me8Wu3Z{1C(e?lFOO?t7rV>q++;<(%HsfpIQuW#{}c}Rz)>qB+co8kH&FGrVM zK0g!Nd%#d0X!T8r+umjA;+#oAThc#rplV(jK8o}2ypsE=@_BjQ(h z&Xi9L+UM5~U=P4u=VVPij{2-;P*Mt~-!0&;^C$i+SO0nT6iH?G z5JKHGkI9D;QzC+Kk`wX(pb}KA@4Bk^S;CDAdEemj zH8&XmV-UeO#HOHsuu|}UmsD~OAXM&8;at0U-uUw)3w-+c8#q!6@Z5iTH@jx_c(}iJ z%-(FDg@S&Xl`P~bJD7)Y^FVQ%=G^0GA;%5FPK&-GTWz}Ir_aR#v@Ih%QR1<>*d|FN ziZ1+(7muj`M7PI6A5J4i%2e?3^IBENmADCOQ4cWN@E$ zIv)3h-Uo#z+}gF${9zD}+wRbzZCKNT3uU42#WzLHe>go_Dqyf9=uJRveZi zIbuNRMk%CF;juv3L95_e_rgppI{D@(j;T;C78`GmRX#U9kI(4-#q+&8PT9L~&Tzj3ClPiiEKEi% zY$H2a3-+_+6NNbIvY#XXDFo&gljJbF~Va{W|ZT(B9q zo!ZK$kSB12!ki$+3W|@42E<_yMA84Tg#dUc6RbrQo=(U*+wD6}UJj-^=5&#c1qmFq z$RP-PS}n)4KPYU6r<=@WEG|$ep#i?K0b6;xhvE8v#`Mq9ba68TV^RtO=I#%MJe7B- z24zAWdk5AvRh-beSiXn7rUZv6q3r&|Ab~zcy+0MALqRlboI2aBDh(2U=eC?a+n8zt z7?^Y_Pqfjz8W5#z;M#0^4(qnkwq&yTX$CF-ndu4*#wVU;hi}b4S{b~DI=t#xG6To8 zVhfLykfjJ?=`A|8?5HJ(xIW8Sr|N+v=*G-@5Pembur4xqO-2E1WxV)ZTbe-VB@k zviLHspm#7B4e911geQGN3#P^ro(p0ePGBw(L^>GIP`2EO1~;zq!iR5 zcsUd%OAJ*=o_k9S{i<_7vHHVI9@Vv&lcz1nH{on!aU}e8cNu}cw31$3xy0tB9d{@Q z@gd1mG)Q2ZxBVWmAZPnQNtH;#mSC!;Abx|)uGCke$@UN=%_c;p37pAPXea>Q%C-gB z`uXh>YMulkIl&xfY^tK7)c5w%Eo`xks;Zp-ynHCTI^r{cwqR*+MBVUv_>|U{$kXx7 z^7&PKOOEAA7wr$uxxf~%Zx`_%(XKN^?g~Nda~q47^F0KGDs5o!tk+Sx*ci6=N`X@u zx_~vL^hMK*aV=!1qck|yIGTKaOo+T5SwBv6&OQ&gnsU?#ZA`X+{|Ua@6lh)dy7k&>5Yuj#NWAhQvZG27;Q=M53V zhYI3f_gV_Iu41|+->3O5E@98Mx@f1!{TY>8BJ-1ri7GF9mV5%;ta&zqLFM6C^6{V{b1{$iwKc|VzXpL+jW70!z2^eVlPmb z;wTXwMtj8ce>_GA$|2In<@2_to*P7P7@FK~QdGc2D2~fM7ks$?DDsv?Rn9g!LL5DRqd$^$BjJ3Pwst&&*- zNL=ne)0B`0geKl zJ0XQRy+U`V_JNJN}&hHbD8nTIO^WL*0BiB|AfPc&nm)}O@1E*H`yRmL*5r~Bn z9nM+{koE?O*a^OW*#~%o$prUP$e*Bm==6goSQ%^v!12mohP{EvjK=p2;pi7wum2B>VRpCs6 z#7m6yXpq?Bdm$Un+6`inQe4I}JXq7O5pE`@pZNBRu01sVIORX#a$89-W{qHQCIW4^ zO|O=#Un!NklYaRbmIl3wX(U7kgjuaSh*XkF~Q}`JC>NT=$sJ zR)&C9<2c7-seJ0ryT9AKPVS3|l&5n2e7s!=2rdP{k z?_z6;N7-Ajf^}np{Q|F)xBn_LwLd|dY7LE`PbE7J7}J4`D4wjaY6f>TKyZ%};lGC3 zUz3KcN^=FEWi#$SJE${cJ>(Qw?2;-w@;LYG>*&N_*4Z;ne99PRtOD-Olt2~og7)A%gmU$Ok6U*S8MEET zQ(x!l$gSQ}Mv6tjI>@69Q?Ke1KI&`9x8BRb5%HLaYczy^4Kj0WN>6zv?5@L?2TK96 zUrzt4m47Dsut!-JBx-MWc9)4rSVMTXa#LOT!ea?74Rg&w0*3c)M&5bIf6wJ|XYfu+ z#h;;03)RKyU!DDdpMT$7KP6K&B$?^@rYZ?lHzaw*c;~6UB%bhGUg)Qr*mS0$nY^FlmtcxKkT;fHpxGHr^quD8!X7_fyMfgH$ zT&TO}y?ej*h27+qoHKUehx=ixH!P0xI2uNhs14SF95au8@HRJCndS4{ixS?P?7(GD zs}u@u&1S3nBqjP+#*wFp93~wxeJB2NR`97BoUTcjxNdp{C;#1pdaFJd29yo86+vtG zKSzC%V=iD!BIb#P_;<)xsXw+}{T8ux5;M$!o8Gg3zwu)H+@U;mwZms>FpZ7C zw#i$ZZLRm{93NKeB|6BU-r6o@bEJChe0=h#EoT#s60B1>kJ8G+P~mZffXk=_sHi`D z?kG=$0!Le8A7p}^%=Qumi)1L&?g^=aRJj$xGOy?H#N{(hR~!wKtjkk6=Xz@0q`Fh3 z(~DJlT+SR5@Or~Yve-lWo1I1_S#oNk>^`fJeoqkKeM*QXTvGgt}n&j z&eK&K$ETZ1LH8o;?SB&OT6}a97zyVG*I#LZ0@rQv{R6?%$`|5{WUIp}gKV|lRBD$h zo|_|BA|2qAaa4gnQi=kbx?5OQ7uqw0dn-RybGf)H;zGdMjG*_YFc6C;&VD}>L{{Lx~Hl_uesZbS?#2}4Nxw3T|pKu6e*mud&hV+E+>?(eV=V@omNnM_Wm@zZkkkbobpC=mVHeM@t{3ax{4;DR1oFO|^Yk2? zZBpaqi*0&fQpNZQsbgE!X>ZCBR7+KdmRzcK>~5eI<-mX)6`K)pM44Uw@}B=>2H$j!JpY$#Rgh z*%$BG1@50Vdt|jzgI(_i`<4v<;3CztCaKOsE)a}4!iECmkaDcDwo_?>BaAQSX2n!q zNZj&O1vb2ByIq;+VsHAK+kT=m`0}^W9OQqEQl9lE1Y_>*;6B|8oZ~B3^a))T#sPhG zsstXSR+FSbbbmbvr8G=q3#mgI70Q{*mV=`?Exl=gaA!yWVT})S*GYu}>URd$_Gij7!>5HBSp!%t<97g2+DmV%_#{LH!%9X%SIjDutTxD$7jn&Z`OLh z6|ULM)q~J^r^d2#ziRLq*!S?otAvR5nL}jF_n=BE<^bY0Q798nmHoqnnxxW1LGg5N z$vrugAQLybtzWS_Y4z2HQM>}ZNH+bTbu2ho5T@A>F12ZRVMQeA-#1l^z<(MwU7V^p z-NjQ=8aAbm+?8%!I)992AqAr6n|>N5rjgwMAFH7n!&D9^{aXIwIS1e_rC^L^ zsSy;9aG}V?#HT+dSk-7tD^6GGbGdrtd~do;b;bMF+lCo|Y)2+{{2{6(Ho*jLp!e6@ zrTeedlhzFAFYOanDH!c5&t^)dL!|b)!bN(_bMe$CM~T4$pg&azN1(|tPbPvXkcI&y z*2=|{P#`!kUMNjE)Z|Brk5&JM>c)k zaO>aS_QP4#Pz!z*-+jqY=}(k=qiRmRIQwia2aQ(*`;=T|Nk}kR{ zA_EdAu#k!p$lr&%>I7?*{={1;U$;%%>T_#q+H4a@n^h*QahZLJHMkPD9PQ2#qQ{#f&8G!t zsa-8z;OIh`Ij6%J zGZrP9LA~AimCO#FA|4)0C2{@{X7c~}oh?~Ux|P%34gg(;c~5Jfa4cNyh2~1L=Du1R z&%&MJ6CWA!wwl0S<>vG6j~_c}A>OiTVHftRILLM*cjw}l3?Jp1w3TM~p$G8ntvL?h zC(*0_E|$dcgSczNQFkXyKcm@GG(g!~E{IYM*Bi3tjk`JlnXZ1Tr9#ES^Xr$|RbT3z z%|rzLAp#aqy*$Us$3-s)KPdnCg+O6sD;G3A{F8eeLEELtAb|22xnut{mRy0AYv>6} zwQ@VCCC+VS%0BTzVvnx-6%}DWDMj>A2!$;jrt02yceoBf5~?+o6D5+fx%o6JLq@nqsHO=0Fg zbB9La4`2S-cs^`IWbFj9F1buK$^%*|CTQuUrD7XV6@mfyrlK;QQSb&czutGyjcT4b z=bIjCeom;XeR=b?olpB}IItQ3Jw0?9vHdGshSK<&^;dI9urc2NFd>&~HHFVN71sPW zdPV3!;cin29^D8D4@fJ-r5puq#l|!b;RH@HH~>#-U*rx-i~b;Jh$nPpVe%}@N$+o1ch^)uGE!DeZxNcsZ$Ht-Suf`f7MKMq1cmMpUSVdrt_ zIgq!7B+D6k`3mV>&YVSJRC}eGE5|cw?No{_v9MXA=8|f~ObJ4XDpYYd4(GGw6BLz} z;q~hF@0E$-5vAkq`A<7P;FbFw_Q6%XCh%L~`e$8&a~+exA2q&zz2=wx`-R{yw7zLU zg_5_O_!`cMq{({c{lfJ~=%s*oYa&u(!$_+<5~**XEVWR;)g%kTB4^XE-LFRlJmf1~!sI26SQ*j8R<D)5AR?t z%L4S)Nt4M)nIQa4i^wl!PJGqQI^AIxQnVMSX^W(!e2D_EU~*dq)SPi_CHgl^@)$YC z4rN}zA!Ivj@@_$_?xNFcLhb_9^k=pGM*v?P%6`(jF*kTm10OS~uW*2;jDLFG;y}rlEjy0iDDU_WX+GZ$}lY zhvsTQ;-83Q2d;7)ryNHEKsaVGDDF6$UOYpoRLF8XOh(*Us&u6w^y#}0a?1DEv!z967s9oF;dy>W#O}!Rb~D&~KzPu0ZWAIDR(9bA z%2U14cQX}npJB6}grGP>DFBY*M1*n*LSZ*~kf!-9&P%VlbUPIhw9CG3&E0D$Tt3iQ zGUma7<7hU%KHhz?4c}p?dVzSw@vT&rSbRXdc1U;~SVV9tg2QvQym~IT+50GoqL*~t zvjW|JMe7?kLO=W=1&a788z!N)W3RNrRuvh^R89@yqDyz8mXpiB z9THb83?FKQJByxqq6a+{2TRz62L2Dh1AS<%CZy%>0K%~!%AZYSDHK7J#2HkBT6HeT zq3~Xsqb=`G-_ZV0zO*-l@xpysnq>6nq_ zK7!91L;ie#IQ^`2iR|L=>+_X{cd)|0TP-@Zco6N?Oubc zcWUtUQHHVQD^#xx1ZsnN=_Bmh6L4_R9hud}gljxqXr3ktcQu7uHL2u>QeRIx5@c0r zh#op$46*%KFGNIDao0}06=0?-xDI2jy>sm56LFdb-R8OX=dLh3QatAGn2UsV1KfU8 z^I8^}K1!EqdSoo!&2fx;5wwe8UQCv!9sw108h5vgl{j3}X!k zxwjxm(pAUwwFRf51miN0pmcx7V5Aeh80G?km2m`7xS9|Ob#!=ZTr?GRypxOF$8ebb@2rqgng9jA;guOGnlCMtdV=A>Gscdsp{%()Fd}08TtI6 zn`y(<6-PqA;-&k!KdnotWr@dy$UVRUJSa%dDc#$th=MebG9X18rq@qBHI<6|m5xY$ zIzakK1JOaHhU3>`I4Bzb+5PS@gR7HYp3e0yyC5tx_f@t(Td~@;tsg@7WJXKrN7W8ygJmty<4kho)>MIaGI($H50rljZ!Uu?uzn39%>{w zh5(2afWwu+ace=_WMg^dKGx*b&^4RHH|tVQPRo#ZJ#qvKJOrSbba){((6)~=VFa~< zF_j$+aFhoa@Amw&BY~(K#ovG`OfW16I#FOl^@#AJawz_S6#5OT#3D7MmgE19=~9-h zoQL#h`=m1e6R?Sx8WSuUpgtZK^6M8@RjFroPUwf-vVT8uEkm;bVj$Zrb6Q359L>&C zV0`jz^p$i3X%{F1NQs_3&0xaP8QFfT5TD)F3wF~MfFZ-xh23AYFE2r=Xs~hIGMT>o z)#M2JP!({?Kh$ObJE|(_+EsVt#UF%Y_uL?#qv( zXBS#C5!l^r81RXe8sJX=*qnK*dwM#1e7V{1ZJ&wz=y*V1sp61I;jqvod9%D_^-ucV>`IPSyC(bU{z|e=EEkouTc=X$9s%)%D+!ZzPAyDHK7&mLI zTs@5G{#hZBOXI)y!=-KLG!mmHdg{G(7v@4;a zU_}X&TEWK8>rMboX-E(zeN&2`4P7>h0?%9mtG4ZER!Y$z$=vJS(7DEEjAeSbK z=y-tZ&bOlbV)!uOU`n1Ir;^i`XLt`MY_l-~PGH@Grg#8vm4n3Zypy#tkPeHG+ms1I zb!n+)I`wK4S=>WFG(pQAA8XWJ|2kGn(rNr44gybkULaw&x!L%23|DO5LryLMJgCDX z;HA(+otley_eL3w0+yA01np*{G?Yi`Z-L78A+>7(lYv(kj~bbD_$o3nn=NBr*hky3 zn=;B)FVtB%3+0p|Pg6!b&aO7Y2=i9DsIB&rL?`VgepS}79`KR$L(qohlLA2YqfQ<nmDjLF@Np9n_uJ&JDG`G>ANgA0!TI)3u-vY!ZPCSo5G>_7*1kYYWYc1d z)C=*CCCQfV=aWji9>?}3nImThC?K zNcfl=qg8=QJ9Kr zL3`q8%ng+s-mUj{R5e=8EK@7=gjDj*JFMSHz5d_gzs}=lZJwOSvhS#Xp|00BrAzB9 zSHp-D5q*t+%R=vON{qPKtm%z3-hF#^tOcfw!3pb+bJc`zM0~8dVAF+xym*RsvLxC( zE6n>L9_;-jUfY1gC8A-*G*`@__gZVel2u@R&Fn*5e zTUpoez_sGbcG_m8awF`U&eAbIy~GlCJat4dpoY?F(JBmL*9&ecWQic0j!|%pi`Qi0 zFp-vhU5tRNZOgk?6BtQpxYl(ohln>wq$}U=n(0DY$vMmkV-3|L2?x|e1VO%g0d5>< zUD~%E&(!x5zlYB#drdg+8W~trrxDQzFXke{8~Rl~Oh2+m&_s6og(XXOBz3)869Uk} zL#NMF8^N3O2k1`&26R}$|7;$hpr_z404_L{>#`(<3*n~b{Y5z^ctvHK>!xOxwufwT zgFH-xRI>$@RY;>*hFTRb6N+Msg_8Rf>x1xtw_IqPM0elv=@IYmMuOhGUu)Kn%c|Iq z`nA}cJwrKA`VR82YE5*`o}4SzP$I5?HfTgjwH`V#+gbwdWxjy=5>GX{I_vsgdAJJh zdZ3elLnG*f_L59{+ul>No;6$0Ht4fv7fUl*FX6P*Ws2`-OObA`icz=A&qZoe!bc`B zlwZb_M&HZdyM>9V_k=;b=@N)sEb*}XMD0=0l(3t|@trj+7v{m=}omPRdAHA_<4!uA-3&{{(i z#u|IhP^Q-4A_`FJKrW5}&C}NP_jgNNb1snG7u&Gen~_rvwxw`&REa}qh3Jbs0+E1{ zFlC`Z3@3LHkUR-NF**2Hw2lOguh!X5U^|!Th~C*4i!cO52kGj+8(V4#U-?JmnR8JI zplxGIu54)g$P_lLL~J{Js|8Br%*eLmKG(;D^K~zN&6O~5MwRNu7c_@!O;jlB%q_Eb zjvYWsgm^a>^+EEKbZln`5d+zPj_K)o_Cif2y55l;FGbTT1RM%2TiYzhub6^5b+QH_~0wA)HN+TYs`#+rK52SzYA^TZTBG^l2*PF{6%e5i8~1ObVc z)|Polf$9R&v8mt7ywrI9*V47BOL}R3E5!`7&M=OPv6p=Tm5@(k5l{5Q^V-guht&v&;gO6Tkq|5{X&gNd98cU|WV|v+^bmDi-)6W7S(K6Bx@c9J)V4UK zj3TpHOZT=&#rKiqT(_@5itFYiNHDM3sQost{4XJ>tNz7d1RvVrSa|HZgRl;Z7mNx3 znGEC-+6iFPgQ6XU1YL<6LpU%~D!*XzMNSFOjKE(vwnuTs3RW&3ltJ3CH$e^r3%Tc* zL-8*l$kWQZQMhswrA`%RRl+F{OjMCjbRb}9&pY^G-x)IHL>`M#xhFG5wu<0znhrN5 z9ds1d9k(n6T(?*Z|6Ffp@jOzy9w8v#)2h~VG|*k#$kw;m^TJ%p>lLGwlsy3`lO389 zS|NlTo92SVW%{XgV)Zj)1kbg2R#&gn0O8++Wd(WrCgfhCR2NaPm1#a0T$#ja z_-x56xGUq)3JSi~;qpFe3X^d-@$r4Iff`r)2H#hyFxsbm&SWL0+|%^r;)DE9teZGQ zvhf4aHn;eOM*e>fDj3V7zwv^HYkkqsdKc-B= z?wc}%4x85}YRHKl5cPKTX#jE#J4rcvmgxhv`(Az?IggbJ&F95WxfWTBr_Nsox>(BD z#qX!s0cmiDd!Vxl8ztrL(0lEE@BsA+wktL`dAb~%K)u_J>DQI7q~9Q%9-s)N_+Aki z4J}5`#_9};?v+I|Kf}IkQ~-<;kC1$+k}!p_=v9)#-p9XT|f094t2|O zZnDmk@lI+D7y1^UWfxv}X)CY`1_w%tIH72Dy_1)OT&X%vMG0DZ;oOf~m)M=v{KFOt zy_jV`h>B}3@|k4WODI`NT&?;bC8fAa@a*s%?0acms`o>VnKAB<&XJ!NpW}DKN;5>( z2`C#Jos0e~lQ%$cCa^{UVF|g27q@gAV=yj%`vFrV0bHIt;#{L?c&DfFxKww==R?t^ zLcc$NrzAm0;>!x@LjywUPGHQ2jc*Ay^$|jp2G+c>VS=yq~^SR zy7Dz*)Yt{kF?-`#DLTuLFny&;AZTSdxkx?7eu-3X@7uvi<&k84L&2TSYX3rOec9x;yAIKA>n9hv=Vb8{DA^U{xxWIu>1-HV z{qUaC%l-Cw@ZeRef@8&(0=@Z;qNHu&e`P}Iy10@AuJ&Fq5mQ55@}lrI0IQmjqiN#G z{`FlCx>|XOS!;D8o)YzF5(y%5@o7%M_P(@x0OAlq{AFH@xP1I3dHUEC?q=#lFhw$Z zX=~81c&eWg2u;Smc^oKvzx^2EBP@+WL{Z2v-Qw3b)VH~_5!yv1q{PF)c~xJxw91T* zYn<_439aCERZu^0i8y^oOV}xDCigOR@BxGFK$#{TkFVFkleE z9mAF5;b{9+r#s6t3X|S_v%&r3_3vY7U~FDN7HYX7uAaTp_h`^=BtKSTq4yBUUnM5| zyVsdZsOXBz^5Yw?3oMaISGtbf`RL`Gs*}Q6N;fq$n$@_oX!^ogN*j{T$T{%*dYDMn zv?_=~w*~`Db))X-!_a<8!Mb?%e1V7xy>Qo{-2HHn>DQa80`N=&|3bRzq9iw$4Nubf zDEh(dh>b6vN`FwXLgbeU4{HP^F(p^|U+WxC`U4g$2co7h_8NO@(4p%3P+rpI$M=NJ z`pFaP`<;6fx3~xbizt=s^1{Vj?WA=`V-}1i5=U0g+4t+4Npm%t7oOqOg^w2=j;-(+ zC7^<-j1(~`Dd`?hxYyi>q4-3CL?vIVufjM(bmD!I_U%HEs=R#I!ln8(T@PBmSCrd( zrkTbEw0+K9Y}efky?}hZyWi%EC-LEg&3&%{iI+Du7Cs|$BszQDB#~`*Q5`f^kLObw6->3j6aX+?8r>OwCKDJ4+sOau z3dFiBB?++4IP=Q2xKGY~MkFGosR8bY$dEj43KpTbz>^kE3KO23wI?E_frgYT^$5x9k&HOUuH<`0K6jY-A4DKe%YDe)U)kGdRalvG~elfJmL0 zhK}g>jg*d*2W-8(GxXh^&<~#_o7wRF+|`U~Ql=hv*3O>SEoK^;(R4&9TDRds+i4(^ zc$r8#7{Np)Okkv+8)&+ ztS?3=ZWj;LixTo*)0BAup|B2RxL_@wg00D^U{|OY7j}^5V@-p&;POJ)FbWS*$Wpw) zMOAPSXUH%|a<-<+S#KJ=3?pyVIaG_0U#uQA{{T;cVbWs0Omr5*6hwm`FFVaa+ri| zpEUD-gQK8=NzOqk{2v7Cq$?uj-N>w_p6k730yt!uO2JkwqXC+yyzV9~dK) z&Vkur-~|}?%`Xv#+=NIGAW4zMyxkcN4N^{}@`c33=qX=sNb(aR;x?!fG3+(04`Cnq+ouP@=L&O1re-9t?r<;8t7O&=L5^iNI4-Uu-oMwxVgRH(AI&7jA*LKjN?a`{kqb0Yl=;t_50n@Wh5=5Qnbhle#*3F91 z?Yw9KuSjL$@Zu_@3)Ab6T^&T86!=JPX^0Ti0)UbP2^bc#nSYi2GUO#s#8}F2iGyCl ziMr^C1@5W4o7Q^Bz3Dp+_(c*|P-y?sZSy!IN^Fe;@KjChx#9Ac!VaD zMTIBqlA(TNS_lA7p~6cz#g8*XdPwL&Qgw#Ad1O>!LPm>cMZ^2g$Tr&5Fno>XHb@o+ z(q=&dxkATz%GGQk0tT!~15@}2s}bgY8$=sd*Vwu2g}^lAhaj6oUSaA#Q^mG$V(m+< zzqlRe-gPK8iT&nvDCz@WsA6A{_2T-#CxW=vJJBgB+9%kH#uF%af;|RTXh02|t0@sA z&e_wEQN1K{Y+{sDc;QrU*C?-R)1A@7HTtMifj;wKlwFnsz`BFMf`rq*_h5x=A>)}m z3*5!52aMPcT1T32GvmQSM$0C zkwf^N54@3Ate%B!^f*EMltS}oe(T$3;+w$_rC$s*6+Gm#MRwfEv=o}}Rf>h8Th=Lv z?s!C`BAQ1P7HDuC0`!fL-UCm6adRlTe&|lq(CDeCf6{wpJrnPa4c&cL-1rQAZ5#Qm zuQ!JebK*BBkia%np+c&VFIDIoRmhYJCgBiI^59as>dC>PSC>a#;?u`5Xkv)ix3dFT z4_cWOqaFnh*F7F?1&jZtJ^W^~FJ!Ckyx{eaPon>5_TD5TvDH)2St7k8^f_Uij&A1w$WpWzkZoyLLqNfhbfo4{EpFU?4bwJ)oZ_qqc9t zoX^8)9L0sRPd@TR{|6lMo;)5$uTlrG4pYB4V*gDtoS>DyK%IXr&>30tuc-4=cA~4K z6~b@ykk$eiGd*6=@?!Uw(Gy_kLqiB-$*6;K7R*Oj91~e3_ni2SzRN>~P@!HlAutai z@H92*P_%6np+Mvn!2d>?N;@a2oDgt2a`te#7#B4s`tTVTGuF;kZ<^@*ULmHTz!wO6 zH(97G+VaT6a$Km`N7CAB^8D$EW!iZW+C&@{B*I0DY;BHb$+wIxpUu5WJ!%!T710C6 zixQI1qa@+;+b}a_kYx%e0#Y>MxG@j5|$s`W^)gP%`Tjuj}uwH89INP zM@=q#9r(M)eSDOxydh10*w=-oybh2^c+vV^w8?I^*OuGJMh&u;)&Cj%$$BkaJ%9S@ z>-4ad)1mXLz{||z<7R)y#X``s_cjY3HuwKfU-Venr~C}`cQE76Aej6ZX}@4lIFB_E z_4$Jyh<_V>=+U>Pj@DHk=ixH}l50AMnxf4ek$<+Uyb_9jnPB+3_u;a-J)iPnIW=qz zye%s7?;1UHz8gL+EjDhkTKx*~Jmpk~!7zG()-!ucWcKR(H|~bt#M%+h@j>+G_bac@ zgs$}NZljXJ(6>owpViLRJ#|V&qdz7`KjB48PobBn8@t}(Uz$Wr4$SiiUwS`?_=T;Z zKXy)f@wLO&0f|u zJd-eQF2h?b$o6w@Qclv=R*Ib{E-0WGR*?%fIAwDp<9k}n6-{0+p3$LXe z);f2OtQ`O6)8qJYzWl1n`S7UcQRgOp-c0z~dhYW#vg@C8;f$+)eLgOKWc}?DTQI+d zJ|)})sFJIIbH5QNLMiD5F$=ta%qj7tJz!$RW1C*LRMO5YLCIfEPgc-QeuU0A1{oi* zzx-|WvaO7nAUACkS7YGzr4l%yzAqx}8mob!nfw72M)45(~uDH<-l>ephDP)7T@0R+uI)=`b!01^oPcYN|vvr0jsAbD|vV*?OSFi-|jXo;XyX zC6-d+@sUK!YgM&Y6vV#g;0g19r`}hSJ3a)OgmvF)g~Y|ZQ|fqFo_D=b?Olu^r|{Fr zKG27y=xeXEW`wFEOBP*Q=5bO*4(@ z{$#IyOBR&$!soKb*2~7bT#^K#GM)cMtSfCPBC2!5TA$j}&bE0g7bWYoS+%ZgOCcK1 zFGiJ}V4IoZ6R~e^Hl4vhST{;(d5NZ!uxh`{{sz5IFZ%oXWO_>{RQl9c)pz>SER$m@1!UFe0+P;|;?Jp9COl4uF_4w7BHVWF4m z&$oke-J;m{PkB3vzPKD zdlN=hi@SBBwC{zZL26y;$Uh3^i_3=%>dON5v_dh==D6It^tCdDri%ym#Ash2$|v6# zd04(!L9r#yN741hgI;HD`0Q5#jq6Hmrff)MQ@XUv^-i8BL~ckC415GaBT8Bg0dkk& zCMz+>cHc5fbrx88y~1Kalz;j+r1oli!2NE;K(x+W2 zM~fVXs|KVFxT>69D6&#WoD&~X+|I8|pH5kxYET4PeY9ksIb}!Wsh48bzRtXh4n-(^ zJrj!9mHb?;+UK%2@>EpNZ35!Yb_jkpMCu4)bIx5MX~o*wTRDkmAS1m`{t#l zl6RX_h~1}i0u-C<&~l}~HXD&S>>%2Izw}b<>+^|UH%yG_@imPk4?Q&a{ZQy9pANUmV`= zZ5ro+Va)01(iliS225GoKVzeuTptmTM+;Oyt7f|}Kg6&LUiWX)gcf_$WclJVHi!Kj z#Lpj9RBv?|zbJk_2Ypno)oqeMDwT=Y16AZVT>r5azW?awPoC5HL53kO9E}uJi|h!x zqW*aq@i&WM#-Y8aKn_E$nNV>Ft*!Y8=MJg`s}hh03d3GJ%|17cDM4f!Jmgxmn5f1E z#xeYiQ*-R)^leS#8r&YgC`t@;1dy<5qdWdGxxVc+%g?G_;`A<@YQD}iwe_<}uSWZA zfnvR^1(i-b#jDkdY`>w7F+y>ak^1Miw{_ zZcFvacPR}=5v=<})3&GOwl2f8F?6yqi;i}sbOXN$^e1yM z2hG)FAMzgWddrNseg{RZ|CVb-D^|I zvE@!#Gq=8XJa^4fUnVo)S#?A$XV4ZKeQ)K^sOcy9O9CLUwjUuBmQ`XAmR zjCAV`7R5|F-z5AaM5pis4=i)k=%lbWp0O)n48f{dW{%Q0x)L-(W{jMvc$!T|W79cf zf8*x@6)i6&r)$5IyIFlfk49pup*(dMyWig~Di3p?fyoX;COHOVFUC@k^E2-QEvu;t zDOzQycfa!T)T{Vq^lP%Csm!L}@Bm2Ig4NZLj+7v{laV6JtNCc+Gt-`)_izDEO# zHT)bnd%We(z?im-y3-Q#^o?qes&J5^DpK!uqog%*}nXCxOfqnh*^T!wG;D5EchwJOi*~khnFS`|g3O zU(Ki3npJ%6?wZ0)`_xQN7R&+ylDN}_G3yc6Z%lhu9Uk<%9JA4O99T*T})4Y}kFoF^8a2K35Qd%&gufa`m$`O{OV_EIL z!tXIl!6*0J&?1VjFCwAtn&zZTkimrpTdyuZyKFkrl0(Ze~6G{ew8o&Z+F%pv< zzddSrH2V}C6CW~QBhiH%$-m$vb&hqbr2xL429}ex6Mc6VK?8Puj`c9N#~>VH7G|7j zeP<)0@n>r-Bei*wCqD5%e$k#lC5SBme#!gK{PxJCx*x^1iXrG2GN^ebuap>O(OgIPGQKh^Fag*DglV`CO;GaT&O1~-VIRX&g28=g-J;Y2uH|p zCUu<8%l=;6_SR%yf(8eXi}?ke#?{_x3qd^V7CxIJbeIQG-}D-Xww__qvdAP5nTHL{ z@zLoD^|VU5n-xJIz%ZJ=v+4>>LO~GVqSq79Pn4Qn2H? zN(8te@G_a#qcd39?Jma$F#~72O>g{@ruL*%@^tJ4;eviFg)2@SvgzsbfqEh+KA?d; zLMeAdtm*RB86>_6-&~N$8p9w7PMmK`nK zoUbx92T=&t7CiXE7}S~Ow0*Y&3eQ(9$!9f`m!Xo+7PzJsJn~Pm$i(dGE}&h$&A<{i;jhu3WDWIyY=O z5j=6K$P^?R@yD?5?)y+WONbqm6}ZFvm4E+Tjgbh3Zn$BWY!^~B!Pgrk>i?cay3%F0 zeRt&==t>v>hXFM4(4d7n6JNv?QV!2SPl7)wXHV0E(R^-&?Ra%=fnBf-U$9nSz)zBr*X0=Ox-ZG%JU8vWJFcF`U^l)KcubDT&2c zi`4Dse-kS2F>IgJZ7>OYR{9M8c+EIm%|2C{6~2?{$AaLfgwMZe!aL5s%8_fHkrB#+ z2VLe9w|hWA+`L*^oxlnXRb*s6y!*>W;GiUi|MXQtfQMPq2k=D<;t z(mHe3tE!_?-;@nMP&W#ma67e5Cv;^KVwepZ&z1upFT!Im!2gIu3Y~Y>NDMPyeruDj zNPulFPOo?vghbAq6a1fnK%2f6t8^s-q>pe-weh8l0&)*BR8AUDgae@ASSIy(CVNEp zRwtGNc26l}a&7M|84eZQRXT;p)=|x6ykibW{qPVCaLjSZas%BlfQv2Aq8-w77BaG-uZ`4e|VRj(-1of-F2n7QUbN zzxAr#hjy##Q~jbYJ!OpLSBzXhSIys+hdnj}jHJVmlTj}UkHSNp2C?79_9<^b z77kbbnZ#PW7o7IR1mc}_W=ttOky-fp6aSz^@`s1u-UtN{~*%U z_0I^q6)eF+5l}lG_}N}FLE+a>lP-)Im$sO!3gziXE+b`aZ%(Wl4T97u&?pY#B?(!A zyNHI~_e{yWDb0O*_4tp=Pr(U2LM)otce*thrZ}GU=QRFDzR*c-?;~o{>S@mE_qOGd zHn27|;G|;qaMZnfR`(9WkC0*e2@pKMfG=L@;6V|<)*VBf~lw6>TOzpJ*M zIBQ4{E2jvlT(MIa!M@~aoe1NN4cwZ(HL>`^;{DG;kTx$PkR-(p;uz{)Ou%O^P@5$7 z5TVA^+Q!ra9Z8l;rdGb&`u(;AT^KLrEC&)8=laq-;7dvTNgt(8Y?lQiX`pXl7Mn60 zunpTx%xyt@9O4z&Aiqk=5Z*-2-wGqWEEs8Vo)^Y|aOwPUX zD`%-qi66hVzfW*~q;tn*5qi4A5}bW(bSknTLLX-)=L*Vv90YR(6#gFl?!9u*<@?qu z$cP}gj?{UH6aKwjsIBWx0j7d+ox307efItH1+C159Grr)K4J+Bf#ny6NiPnQll7NClBW zKroLCXYGl=C;Xe_c`dovN=rT>HHG~1LBLOgk*|<5aX-#t3T{>2yg7Su_g3oEf43I$N?xB^mHFWYI^+GQt-ZM_cGA``cP-pH z(^?j6t{qY;2&x4Fu;IT@-al8Mp4Jn;U9RmtWSvF9=(KGjz5;m)twoB9gDyKnKTn^? z+u^OzCrZcreoZnxfgHaZC6SUG?4RkPUm z$ViRz(+zLhgEJr7!~5YPOHBdDeg^EU{)|3W14>9?VL;1Z`OHu-DGzoko z#wV_3L1#;N_wGRUORw>iPl-eKi%i0rb&A&dm~RESV{O8#kSjU|y3%tmDm{pA-P!Vd z5e{J@h)U*E%nM7nxNa8o*SZJ6CILK&{8yXYWOaKmugCW?{$Sw7_`x1j-D&7n$4Ox< zfCGS(2L$7Rg}zPy=CA$rk-<8~5soLbUq?5Km4y+1gU2=3Q;O7`r4MTO61T>`l-VPv z50*!ZlxT5n`M((>^5L#Uj%Z^xI~=9M=7L3nt@}nz*C=1kTk3+dXZLGw1NGd1T5 zcs&u%xMgx24tXovTzUwv#hwuKHv1kMSG*@aAh z(Jb8!Uz?vQ*$p4K7PZyBE=NH&evM-M!c)Zdec!sYWYNt{a#t(Z7SB!k~(Ey@!Of3lM$z!B$y4@K!oj!JHg8aE# zyU?aR@5_RV+^PFbrC`2Llr{Mms_b8d>icX)V&CFM^tDfy*dFRd{tK4Rn*H>f#?sXb ztv@8c^R{_qoi=GR5`KxL_vYqBRA{nX1VTQmme7Y#Pr>&dNKxY42EhRqH$}DT^O#Y; ztJ#F*+JZ)t?T-Odvm= z$2%8*n$#%18=`C=C_;uF{N!MeUE1XRF^d}?y0T>rxvC%JlU#(2S@_$)aSK`i7$Hjy z0Lygaon+IYmLh#?iUXWxQAe~1Eh1?vaj!zh)x@FWLw}k|!;foB+iE|7nT;FV>9%^F zG^t_eg~-KT*t;DfWt88qDUcDzC#;W7y+@IAfW03C1fzl{PZxqVz^8%X1~|c}Ir{Th z@7=@sn7vkGU+}iiNs9H)65h4!wMqE#_rDJbPgj~;C6qd?JoM?04ML6ojass;xLhfF z^n#|wal2P(>NKlo!hp^C#iu(V3dx#RZ7_xlXM15{JS{9l+!GHL@enQ8-oGm}IJs#1 zV_fu;RiAisqQHPt84KN}{dllycU@_HbLE3*!``AIPbHx}%430j-5YhDk@a#Tj!3m-m8$Jd>`Uu^nJ6hfRGUxBO|U1cA6`C?8p8Y~)g-bL$= zq>$k5x3$o#NO6L#W;NV<-shrkajk}?^sP;TAtT;Mx*&*naY$^pgg2dpL{?HLHCkny zDdzi|LUhBt;|^*JCwp59l5^lVzIUBS{;=wuw@^G#rdy4%uIf9@|JIMd96s z?G{q{lDI|6-*$pbs(sK$Q4{Iu-60!QpU{yy8FF(2QJpPBBD1Y1yf%hax$y~q^01?v zyylRZi!Lp7y1m})mac814lR!7X#dMG_v++Ai|NwmNWDv!C=qHv=5(F&;nd=!c-@lI zb!(W$lq;Ggb3M$;{zR@pHS$XluXJF&RyXmIoubzH6YaZLnf1*~?a0yd6^D+toW2!j zv0XkNi=f?3ReBY6-zUJ|9&^n8ayC6gf@j*sY=G2xRJubR-(Oev`HGXdZ)920xVGtA z8X+@H{n}Dz_q8#(;AP@Ny*Xz6H_bYq5uf)a4??}xj$&#mZF=`ZGA zXhAz?F)dV~{|I5SbBc>VcKN{1g*U57MtW}gkzPB6iQWAQ@3}{bC62QmtsYs89Hw4d zx!w5bZ;Hw3`#arJE)0DC(#**$vF&Sh3t7J>lLj*iEf6jMb<{{fygyI{H=1CDo!cLd z85u({g^`@sms^(=PCe7)Sr}TVtl?E(UR0lwbt^X7HSa4jHI^z#UKE!PrHA}zuUTSN zIR&A7SMU6iDU3_*ms!UuZ*cV4g2A!j5cotBu_y!`gAX())T&I0**KFs=xd?w7VawY!M@lSaXP{${$4MKqsC9`w! z){%+s>b6-97ml!A3LMEy#{OG53Hmism+W^r7Y!3)^q#!p=5-P=WHyAfzihM$$Wp?I zpgdVe<+g$BrZ*ZcLkzhng%3w+T3(AL1omGCbMHFoW~<9jP-?OqmB^k=eclH^bdNq+5ykaUIP?(6m5^L`A=52F9Uxd2* zM2=hs8Qzj1jxKoA{{)$dsfZehkFuJ}csu;qwB<$qaXt|{4|lfs%g$jxaX@Fue49|U zI}Xwz0_Vu-_3H0)^&8lq@qv9(y8_tKXq^5jYI{J1;FEuxc~na$yg3?>KNUP_ni`3| zZ!A@J{uqKU`^4G>ANvUv{%Fzn>SeQJb}!ml1oB??iB`$@o*!1ouMJ;@9~)D8^SoyI zuyaC>Rcsxyd(SwaJp&m}g1jS7bm)&FW4ZzKR<33#7mD=x5z@kgSsuG4ww&W^z22Yv zWWe_u$ZPTG-LQA(DuGzur{z4rDPvC8QDANvI$hFVXXv9RJ~T2^WhbUc*=LLLEzyu4 zl#tE=$Dlf=Hnyj%(!p4?qd_{+5DFIPZ|Lb>UaNyl@^dKz2TZd<{ls8{TiMQH$gf+= z5)Fj^8Ub{J!pMX zJ|?BicTi~WRpo==^2BYC{by(U1$v6>;-rH?g+1c(C{SouJ7tcB7#?E?NHv902Wd{P zWHLy~$pOpfPxjJK2(CnOSnWjROSi>h(2H?9WsSqiJDRG0=tN^K*iKO#yDIVA`j8=P z=B>y<17`%-B?Cxj034#>3_~ABl>ZQ+&@HS?zPxbmfU=UJKEK=|1~O3Uw2%H+&gA;2 z(**#F7W`7Ua=MJ-nwoU4#3ol=LKV?K6Xj)UmOs~As_aB^6{#=9zbkI!f)scT`lZCZ zOi0x7E_(NJkpIRI<*QY7lr%dg|wr|MPR>vM@1U6s&)C$&5Rt47&1UX-QCpGg$lWD~3)6S_5 z-O!XluVC@?BOfY7a~xFs%e|EAlOxtb6zg9oMRf?ozht5zhiJYnh$Q*lnNiXQ&+G%S zeNOQR7T4n=Gps{ujY*LQ4_ymo2rMGsxUMK;ONL&h($WaS0N<~Thjd`F%zUc}kuS!! zj}Wm;qn$q889@={xn_ZC*cx3R&&l9>MIu%e`NxR1Rmp{$nunJ(-OIEUiJSKsro$2a z%;r5GbhRba8O#yYF%cV;AlXV)<9ofVHM;r8ZlC@Pqu0dImUTHs1p&;lm~zg2r+kh}K(As;>jTmy0c`v}K7iYf%6h=DA1B>b{@9}w zO)%8gJH8P$y}55hsh!hrS}UY(%~00Slf}PP;rA;4UQ?Fsb4ZKSCOkDv_J804iJ`ej z8@-EAx;3&KC+|@AFl^mulaa7m1CTZ~yKzbbZ$siMiW?hcDar$fq8m(AM4Ua8=yD<$2Z#D|#54tya+S`u-j0|(vexu}mEkvIZ&p=jiBfQxhYxH6A zGy^id;m_4yk<%PCqO{lg$X|ut70ob$?!FF*X8=sbH;cYmHL&t}q=KNI?-?}a)%>F8 z!@I-YD$Foro})Rh-zp{F+Oz*dUVoEqz_W`3maf8Xfvh-(CzTqvM@zK#ar*biLlV9< z8UEUwmG7IVdLbvz2<#&22wqy+VR&{j3;O29cogMdy0I*$YOR5NqK^Ipb;jspIyo)e zFrxNvdfssr1@kZ!#rk*hs{>uf0hQGQhcZlg85Ycbt9ao|AK3-kMDX9^cRjbEGRD>~ z6dsD7SRO5iUcc^sti^hVs1@HQh(YLYU44AM--N&RWXZVB<>?1dgMp%>gki-sxRh^D z<16Ky?c*8d$plzRH^S*2S*(oHU{P z@cxH9EO+p*jQ(v2mxt0$4txdc-uEIZvms6w%y+<=2!?VesN+Mga&5WCVv#91!=k`3 zNuZO~2AOJP7*)==Ys~#rJ9zn_lYBy!*rQ1Qx9^M)g!Cn~Z$9rsxHr|}RrWkK0``59 z8h1YWovz^TD5zO1qx-EmsA6jlfF0QP_xhDThK9Qwxf6~hD8NWq&|86ovjv_lwrGks8<5zIES zjyap#6^j-P75V2@e|d~f{%+FIC2%3MWmM+R55aAtVghPx?6diA!-e?% zlRr)2?>;x7Kla=kXzG>laCLh9IQn4yk{Q3x#m>=u_7y~;!bP_qcRTm$PR!MGQVcgi z>)JXlS@&D0v-%&~Tf589Q(}9Y(6>#Ckl`{j}8~4b|aPLA>v$Ddy z&7G^lJ+d-WGc!ZnW@c(-j#9HUv$AdDy1e<`zyE&c+<)^A=kVe1{=9g7o{zNoQ0Ws# zhWKa`>XMZyJfl?R4^<0dZon2fWIB8$fu}Ztn_s5N8-miq1G=*3YyCQ3g$}m^ZfM%* zY*|6oYPrg5Ajhk>RS;Z9G)r##+pIQFzPhdD^pbO0wJ3=z2{0#C9;A{+LUfoPE&Ua) zSuoWNw#^LmDbC*^7qp{3>HHHtW`29v_PzN_Lp^ay3SjMrSTaytJoT|ZO_QU43p%V_ zmZm>&!eV@Kt=9b|R@EK%P46#PXE!xw4y3WoB`>~ZJdW3xjsLgeqp|LWumv^C=|@Y5 z?BQdQKazQv~kEK2*2yOU?@U*gLxhBa1tKYXIy(c8Ng4z5pJRtm`aXmm0H z@264uwh7P)6pg0_ryaxWZHg?`$|yhv3f7g9X-bQs;mRWl2M78`%tPvC42CElG)K6a z*y;1{PhG>t)5JdA|B_~`cVfq<8L*v-7oWo-=FVNY@qHsjZXiz$J8bokrjgF`AunCl zLmXj43@s+Qjeml_a&`8&me1;A&ZlYybB}d$m1{w2>8ZKTLEryLMGxZrxrY3?KMR8V z1-=1syzF5&jR-K8@k>=%NTqag6U6w+W-Zm0PZ?QW*KCAeYk{kE|1Lc;snt2IWzZEJ zb~nja$s~DLWj955QyIJ0TctdrW&BZ>?<#;<7Ly4xcnm(W2pJrl0$YF4+SA4FL?vJ0 zo|xWHpV89y)adPJ%MLL3cDngc6yfk7nnem=v#&7iAXSFNP1i}Sk?L=q2bEcbfZzW~ zKBcMQ9;eu_pEC~9C^`cXOP36~TVahpP)t*CPZ5$H!s-oSnN+FlcW>gk8Wy^Tq|L|C z6rBa;%f-_bW(JG&#q*CxldXfoj~Ucu-2eoG>WxzabPf>+!>H!$4 zm;wZso}#=kBnJVJwud+~J@U1*h2Ag8S&0jFuW}CV)?G+_cH&%X%ecZpgQLU4`^{IP z^R{d_VH&$Y@#LX%b3>z73B*>KR;!UN1N_0qjURmbFeN0?lu3icD}aNqjyI{FPpx_U z>F-QJAUak0q6u;HuN*co|IWR~2g$Q{OkQUk0EOl6%dG&3h}8KDshszqn1tiZ-+z#T z!_RIGPKTwwzjwZ_0X}#Wt|c~M#~QwEaN_IBs6+dpdck0iM3AhsrdY6sY&=afdf>W` zh;9-4=%5a(=5PD9(S!E}3wAM=}7Kgx<466i2Wd&HGAA zS(wQ*49W22%F{u+T3li<==pMJZ`5H*=kISSZmkYbb0gnIrV9xOKJrBJP_(Zlb9WKR zA@Md)fj^A99`>U1u_T7()19W>Dm7r{UbptbJCEy(@lNgeQHQH$XYtTrk*e!~F8=cs zNblZn&pShg;~f{89(p~^sxvd1-kCTk!&{vBIDtGn?&zcIW7;+OMInbJ7XxKzH`q{o z$RUr}Pvpak8mMKEZ3#V_i`4WwX=Byx?AX_1=b-A5B>cQej^)rl!3Gy)jxhfkpMY8W z6v}s)HBIyWZ#*MpIFZoOq=r)icCbyX zYm08-4>~s(L#kD6a%S!5C0)`yezF9)EVlRjGvobd zxReE8gk+*vkprnzs+msu%BOeM5TuMd%wFX3A0g|d7akS>j+TcFNQ_HGmklXNMyCcS zN))|CMs%-b%O9`LNqmuk12!MjXW+J-0^XFlA(nD)*?+?Tcp=yA8}}BbIiNgscJhYl z#VZth&5Ix7pqx(VL6=5^rL$N`M%SwcS1l<>XF3l zz1PBCes@PObV#4VrKA1GCpF=?0xOvWovH9@cCKCISWZRil%r?z=g;GE1mO~Gw`}a1 zfF9lQsiy8W#h#_!%G-SamL%2NeV?{@RL~DGYc{$n;>@^!CjEA_i#G$s|ZB4l05wi@0ZWkbZ9 z+nP&iTrPbzlR->4njO4QD0MVd{h)RvQD5KV-ayh957i%K`Z-F~t-@%n?asXWC$2Hg zI|Ap+hJ*E?=5B&|GvP*BrOsEhx-3y;6K%HEBAnZ}!_`W-sl;1j)xO(?Gz6hJ99-<= zcUQ5}KUc*?DyBk6S(k|$K=j4vHo07qIkoA|c4qO#mC_H@jTCdT2ZrS>OpTuweB|sA z2b5!CxEivBcu)}O4aj^?eRY~eFe%NsLb#oA6m_~{0eEAoR&Xp z_At82kiN>j=-csbOw{!Mf{J~HBPD{jZjD(0yFVk|cU)JDT&~G_^27*;`1oYp0b%?n z+DbaWzlc+KFaZ9z`xeJq?}MyyCzV@mh)C)4YXszjYtyM7y0D)&)<5!UU%MDVXN_y+)r0o%nGD3H_ z1H{nqy^PE8#=9ZABoSF7@g)ca`9}Zd>1Kun9<+`K39vSKW)2=+nN`pnfqFXby%aPR z9?a7RqI~vJC1wo_huUtc8)E(1{a~5DB8C*`o%Prbve8Auhw=iGeuMv=(!czMPo)Ka z8P`e9P+F_Q-FTNlAR1<9C8bBGwl6*HDA#=%Um*JL*J7l3-J$XPTY` zFM)BeD5nX5DH!KunJI7u&$H4brg`%Qws(19wuM4_SWaSbqeNll;G`{2<8x0HVj!U! z;o7#c$Rcyqlk9-M&VYt>pFyYMobpGm05_J5tR`=S*~b-**{4bEb!ORD(s1{@$E?m6 zNv>^!oNSFAFCu7{Gf4J6*${McXQ@nAqf(&L8CM*e0ws1svq7_shcA#H=ZB=Ag}~0F z+X|ENO9gD}1upd(qr{6VjIb(7#rbB!MnAMTZoPZ1`4}uP`&|jgjrLsaB5SHr>iFec zt+b6}5$2rhLVYX&lg)sZRY$OqK5gcCI}x)}_U=eTHNku7l& z5crRgA-7l#_`!#hK~T#;D!N}=nYxbT)2EpSv_XKuw?cBI(kB6Lg=&;YHC2Qugt?2l z0dHH^Puxoz%F6O*1WB)ASZb2RC0l!ACm(z+0E82y+h*%k2lvzY>_hMBorAW1bSqbJ ziEvLct3#U7cgm`l+?&lj+Iv-x;X3ISq{hS^&)}HItAKQwT^3?X=$a@&l{JE7n2iRy zA^98ap#d?52KA#VBp~j{|181%RO!q1aPvNp)M}EI2F)eUZM)Fb?pB$rLh9lQMVatL zTcVvCr_*WiDIjcb#^Y7Q(&3OeyDcFNw|`j9pM_E$oaKs-C9@8+A3*z%l(iH5rmkr+ z2oCR={HSv+JTu}yo0GR}oSHI)^4!*RuxWiGvNJ3=+3+hm9s`i!Wy6my%t%hs$K*bh z_gr`~VP)_|NKN`y*B=$_`j4@%R$Set`VZ$^1N|TfUWt6H5*t@qqw1sonScB4I zcF?9eYO)h7xM?de6$*gBUpmxiD<}AlN+j<3N+zqU* zSbV?GaZ5hx>Cey+YDYmz{4-tYvh#HDlcI>Qss0y^=)|-SSN3btH4Vy3fA)lxQu%lO z>YRpYGExBEYpJd`m!O)gNd7aOX_A<_A;B9o(Xnd7`v>YY3MdXC&)2n@8eMtP7THXF zmWZU_L4p@B+E;_-whmc=WgpItHkP?Ye=4-F<|VlC)d_SGr)0>A#WnxXOi?~vhx*W6 ze|=v~?eUr51yCh5-00ncs)5hbnq7kj|9o&Kz2-bMT+8l5QD`{yAL0)zTH8_{GK-`DHV$5&C6DkxbRn+=kk}-<;$ym7F=REn z`QZx}Pej8}je$64USZL_0M7tF?|uKz#XG0ZtbJ2G@*Vo^dY9WJ-^UKe&%d+l{W5n? z{i*yeP=8nkEFs>bx0p__E|4e=Qk9&fbb^KeenjB4UBTwEo zRfB)f`abdL56hj&dKUy{|dXzb041-7D5zgeg_mIerIm=&ul>`9i8m*L8m*gPM?(#f!B8A zxCr9rZcRmy_#u)+a2;RBx~SR?F1QXi3qbhdjn2zUEdZsl!77ORaB6bTE?d~xfihz+fEqvE$0?VNLH+(D|8xRTd+W;&t)NN_@{he8U0CsZvtltu zu}NDgr0WFA;e`KO?s0x}W#?))0Cg(r2Pmzc6lA=kU8&cRUi8H}IY4}5T_v;5&5Vji zm54?T*>v;L0(g~Xs&r<9A#okQ-Aem|Kz$yLiPm)jXwKv7 zyCRDMi8e)|xM99TJk%A?P#b4e8)syiipLPivs1>?sqESC?M}+st}uCnx!iolwO*6~ zzpg>dC>g%+Bz(Tx;r$kBVXH54I(S~5U0T^}A-^cj2>Q1*D*`cnVRwLcx^+TCEqiczo*bP~%9dvxOjS$x=CI@Ck;`YNIw*~7?E zEs&A8ettVlWL1R{A<_egUnPe2%*MG@71_OV>|n+yztH&c)(Z88o$f@wG3!8V4x*?F zggb2GNp+rAUx!xDskluD@m$_LcW_adQS(Mr^M>i)u%zCHTGG@Q&$sS<@)Jsr&<8t8 zXW0ySe!E=!cXqe_>e6-Bnle|>9(HP(z0nh7OR)Q4ZqK5N@72~gh4*nu1!UD>vM?FD zx+^P679rK?aPuxD=8$Iq2qqqCiZ^DP1LD%0-sf3ki?l0yyo)RZ#mBswpIZOAy;{;} zlJCNdNBa&j&~vZZ&&Iqvzk3bg9S;#3mfy!VVBSZ)W#WZ5@WI;-4wmXG55+}4*_^ek z|4XTN9lr16Q9q&=+ri=M;4mv}N`za~yT99*jahW2Kt)0 zdI_Y2-sv^h64I>@bPaA>p%Clq35d!${Pt}SAt9!&w7g`&78~9ZC>U#@q@JCjRrJQ= zUbbjz7^!&NQ7uha*o&?^#4Vvos#}UlQ<0Ht2nY*C8{%)rYe5LucJ9d*kZMIx?DOb* zq%MaW4d+IFXcDIcrJGHXLcDtA&pflO_f`pBu@cm*)0{aJ+ZfKAixCkNKSWU7U1>%= z3O=%+uA@{sOU9ZNDBqw_BQFpC4qva=$xsCVQ7jHTj>CW8k3_Ako$jnZndRYqQBC#2 z$Zt}E@pO7-#fX>Y2(2L4gh{%vYIPyYjyb^USXoos0Uh7r-v6jP@$9L!V%uC-Yl5?7 z{f~{)KgPB)H?upV>E}1+xOIVz497c&gG{crgxtC zct<@cq_uhf!gXehq`d$01p@Qpqa8g@efMKOd&C+s*dj;b93aS0!zNTZJHXxWRQPr=SdA ziayGc&HDpPr>vR(2SaQr>3F;dGlgN{C0OBs0j&#AOftoR-Pii`f+vJDCC!{N;&*=< zGwy}nv1uKv_k!F#aWJfv*mFaBo=*xyo@lo2{M2?TM>I);xODtj50QSgLG)6LU^hds zV@RfK{jeD@2a4}ZUc&2AwMla(7aG$6<@jx8esP!xHV7m$j9q(OcbBG(&(oUzb!05n zhy45Wk5n7GpB+zBNuz-#`ERhRfRM{_rI$Y!C|0(?7Kv^rrPaN@wJp$J zH7m*^{xsL8cN}<`$okjEVu#--qv{MsFMXKRGJ6V5Re;9KVn$oGMlC z^C$R9%eb6jS68Cl=5Whc@Q-iGc|F`by9t4x%0pL!AWyo-Rz--1yaB;=LVSdqiQ%Yk zko_DO3rHA7E*XkB@*Y9Fpv&O8edyxcA4@UzF%ss*{xd%;T>WbmLXp^656*^Aq19 zTShW`vuCg}X5srM3cTW#i|Qdnrrci<%}Y9%+DWNYAyrkmaxr?!W|;7^r^iH>!t72qlN7kodT%Hsm?Oz9%4y~9GD+#^G6P|!`av%t$& zLdVWNKI<0`uNH#&))zPF&7^Dp*m&`&!3sHIMIBu_7ZX}*kg>S($TVXE^U#e+#mUn7 zdIl;jP*9@~)IlFZP?8`yMUaJXK0W7K{#?9KU%l5*lCJZW@a^+<>|=)59)WegFsxGh zcWUUfqu|F4+M3pwY8n62N7YMl0%H&V>Rm|Ah0727F-xGif+ajT@d-rbPnM;|6u*Clo{ie;FNb#Jv=t z`v)WdHu6}SZiDf4L<&We;8`<(Ee3#-AQBl$FTR=bJi zrskDsad0{}WGr7&KeS&$HH-wTBNg!ddh%qZ1_XImd@_FaQB5J~Gq$sgwBX>RBGhCz z8R^kpC9KrF^z@SEKUbXs8lRSw%LBvsF5hxj_mBc2?z;EqI^ znrA%NgVOmUiQY+-6mL)NcE+ z2R~~0b=(|$2h?hw>Q6WN-U0Qky=&YlqVy+JEs#^g1o01kee@9%TM25W8$67JRMEeO zUAhz$=YIFg!dTban5A#+LeXADa^}}#RO5@-)Tk=dXv9_dgGcbA(JxN*~%Vrzu4Lm zt5{Aoa4VQkyf$A~>k_woyHOS=T5k~ht=fi#0A#Cx`r?#iGw~a_fV-O|Q-r&{bs0F& z%B?KfKJ|tz)6d?ov!zKpb?WYPe?{NsD;XnG>94MbNu1rGhPDS*RULih3Y3L;_;{xr zZI7(VzN>kUjYF=qo5(0;N#B?tQZ#PtKbgFLV{>Cl@v`^^ygH0kTqIrS4Hh*0m7exc z@pw{frqp@Ty;9FEODSC!^B0D}r!=*URf=4$OI^=za{conMk>oX*oLOPt)BF$Dx(50 zxy_v?ew`u!Bn#H+`PBL9hQq3%AV3(v4eciyR1MHYXJ{T6-a&>@?By@y3_ zp03BK-^kZmB@Lf57>=JW&|iKYh$4b)^2cO*EE*gQr}n9EDTJbShQ#^&XCb@D7+S<` z&ECzXD~6+b)kcELvkg~f6yDKK>Q;3#OGH2J^PkxDy^`2pa{XH;k;yj?os}fODd`xD z_}oh}*QKZZoV>KqZ&@`5ZN&6yKO~L0~IcTCF=Xqd(Qq(|cHw%{Ipg3uh3qb;$VrVF^v4+zG#^3p%#- z9y_{N+ouS#qYnOeqIKlr?^?wq$x9Vt6iMAGC-N;fY}CoZ=rz6|@rRXf$eLe}!xJ?5 zLGdvIVd0Aj05`x}OqL;6yC8raA{fWpeCrHA89St)+-(|(7xtj!N}y2l{sio39LmAH zM9nj$cqtsB>XeHPQUW&x94B6F`m3BrGe)NP|EMbUaB;n{YqKWYm5-azkpLAz)mU%y z!qvgD8yJe|4+X)~mGZKmnXN{|bfJgTLIIO}ns7ayMT7tk;O;EihC^L7KdrUIvdqp| zvlmezqw1&oOTm5VWTm34O#+hkwEM<(nOb|P?~{_UBNqq-0SI=5kT9T9wLyxT6D0N4 zJIez~zIYlzk$q3k@=)7xf9Ug3(2)(&pna59X@R7NhTKAQ1vZ|)W4X6qS}|9d`K_|uz3B=OJBVm?O}kro zHrnIbm&JBt2-Ei@WI-@{5BzsVl|`C3M6gG21(_5GurEcZ4+GWUZ6E`)Y1o^2{0BUY z33OlAZKT1ukkixjBB@xrEl0{Z`1azB=v2j!12y+TGp^J>vw`9jt7C@-glDI=X@?{I z#`OBz3-^^qWE&2D@O)le5K=jWJ~jaoO=qRyCw`zJMI&g;s7y*U5!bmts>P})BBEGA zK2@&H^j~GJj&Djbg9D)8lWUBZB3n=J!X{!FGlr z!kTQ*Vy5xpkN^;J+Vo3hmgxq%FgiE@6}=yBlUIZRp&7^{6T(XUK(v1nlndgFq+fzm z56s=xHI#H-Idrn|GoF-ZT8wJ19erMrJ?>)?_be^`R=%m0ywnTK&5dK~FYp1oR%)eD~@5x9*8=C`6Zf82l#s|>rh!DEM%CO)|6MMdwTk-Q!HU)vl zv>5RRnly=Y=7*k`e&kvG$M{Md^}QOyXV>3r?oMrBUT{kD8@*6dLFQlX4Gc~V)E7UR4%{u963L;(B?@{A#j^s$q^uk3x z_Zoha5amzP;-+F~MZfth#ctNDX6TEBXax(I2ONkTxi|!_<{|m8D6>1m^w@Rd>cOk) zeV(Osh)f3sUOUK*9=@Nh@_>QVo}l8$u?6wh?mf(>f5#s`9>A}K@x$G|^LRY-v1+-I zykzex`|sNZ@7X{xxK}%1|6t{H3@23(WMffrFtE_{<@7}USi6^@Cg7~0?=_Filox5t z49%pFmD(Ruf-@R`sxY6v8k?Sb&cl%-b4u>7+cs`nsq9^Od(Uk;0ap+=C5!U-Ox?ab zHa`U1jN)(w0&FZUiVzEE5BIyJ;U?!s|4X=)cTU!FKSiLQAKc?lc;nU^kMZA26Hl)e z`!S@mx{n>Dz~|JdXOlRR5s2*IWQB+RB<&IdK8A(4Hp7b6&kUBW*{(XqO}-p?l6N z5yD@NpM{##6QT@Lw1>kELM?77YKtU+ycD#GG2t%JAN7M!@YC;^{QjN^{;~ecvthJm z!OLQa>scOt@ZhI<;CEplRW`V%JdR2~dUHH35Ca=2$28$i{mMe-u+LVCz&|~Uv?SpD zsLo$fk`dn2Sg@Uru9Tgj8!3f(k0WJ&ig|V{>>Nyh+s!{vgh=d6F-+oLE{eu^#mJM+ zNEpQIu)>`&t~+5M@@#5klV^ z?Dnuy4c+Mt!T*@wGLFg&Eb9^;WZ@oP3hGq=_+$saXPk4p1LI+RKYyNk0SorO749RN z=%X)44L#OUegJi}ic_79`E&=Ov6y(%>v$r?&#)5XYvtF5(~sRtL)JyM5)_5>>=0b< zZK5J*&LmmP?s| zA9N(s*VYOiN`aQYJrgs2(VqYtM4(rhk-ilda%MAPF))M*JazFnFDClo+3~+mLOr@D zUc%J5gyMjcQVyVG-B=TG3yF9S38xl!(+d9OPJubxv0WyA{aQx(r8Hk$=5r?hF5_4` zBEme;S4=tP1@od?5d_4@t9W+Czs^%@50Xd`@JYNdz`l_4KSeNKAP1J(3ZLAUNSVdD zxEyHWeyOJjyBVh9-|5I*b90|4Rb4F+4qA^E{Tc6@UHEJqUAdMaWmCk_Kh;`}xe*>* ztQ2#>Hs}Qd7SDo$*kHxIOk;NC>(Bqw>?{~?%(JpiMv;pT9K@^=$iaHOIO{KjINMY1 zSQlkxnN!V`yfP;`AsR+WA!)!g*Db@50X~;nGL~o04R8?d*0~kde$Ep4$yOI%*JYya z@Qb!G2gv-#@qo}Gs4W}3^E}3f3nF8{p^StN_)=}JA|6)AvlIhZumlz?e67e6sqRnB z&fAj{Qcx{GNM?zK_E9C9CMoL873D4xc9*Q+VL_m^q^m&PS!I{BiAnn0Ir13 z){l|0w~#ClN6v9w#C1*~U{X9|*kb=#_UP8hGVKf!0T59Z^kA)m*TQ(~5mdv02drfb zF4p)5ui5Q5(nxs2end)~_hHo46(BQt)bdy3p;bcTpB(0YZH@2A{8d|xNrt(D zt;bEWkq;O(2ETH5DCbaOg+172&>nh80l=U%AL#_)86aBK0jAJ4jt6cYR|Oc`G&S@= zK@8~qe&}ln_+~_TvRy+8SMEBFl>g*}$y9d#GcTEE!s@VS*G*^SlX&UH9IgWYt+hsk zZOaR>{1&VF0cMG;_{Ci&FEB+ft;S@)2)6+Gl*V>$StRn{A`veq6*)m7?!NNJ8t=JlN{_- z6K=S*1TdhD;-?OUr@hQ7RDDq@6d2^Rb>jhm(1NlEUxV`~$8sF-XJjRF0<`uvuP5s` z$(Ie=5xu7hbzJWDKz6v?uA*#<4k$NFDa!v1JxG4}{nQDZeNYN+y~(Pm8Z!sWeRc$anQ9PoR1_d7UPeGjC~F8c}h zQ)%x8N40q30X+K92@i#%dxj+8*=dFx;dF!NRobH`>Z=r-=T5#Xrz~_)BNPZhKxyee z(LX}{OIqNGOT8*fAzaJIw{LyQKo1C_d(PFV5L!U{3J`?d#>O^N>g)F4MoL#P<~-rfy^1XMWZ>=`C6@Ou0G zRy!U5B9lQ{v#3~W!MB)`+@~3D409n5@4w80*f8#{nOvDXYv%Sxf^k|horL&9C_vsa zFd_77XILJhHLjBUUoJ*(SfU@0`Qd!Ii&NqGa=MP!c-Ab|wiT~Y4H$khNSJ@T~UFSPI5u2G}*VN7_+FzVLc5>F2l+|^AsoSOqV~z)ya~_&; z9$KwI?xXZwz%1)ntgfAQO2>3YzG9KMY=NtWl_X(bs_wN=ZZga09%}TJI)HaJv_BPj zIy8LSuTj#XQBWFf(|Juq9qv!}RAK>@=pZ>Bak~evWT6KD=o_yaD<|tgj*tuZ|4dH;&fBM0qB`H@&m$i|xB|`lV&b%n`>4N<@b?wYU z#-l^G)0-Wth!UTslFW+c}FcYwq@&x`GWs1fiSI{Nxal)e}Il?2RtZ@~!Suo23YIzo;UeQY<4i|nF#x=cic=+t=duOM*%}Y%m+0vv;JK1Fw2-1@1N@&lv- z3$j^dtgZ>T09aLLgQWIA#u)I53NJ&Byw6FiOzTn|;GQd-b&~;Wu|O*LZTI_Na{x5! zzdMssOWeO|ZujK$+OM?4YUi}?6nvQ!%D%pxw6^rF@nQ`oX#!sH{0$)3qPSQV=PE&w zXMU{%n&F4ea1d4jW}$nK-op16BVfrKcrz!h@Ni3s{fkkv*KcB89x4QZSfI2kV3WOF zJLcVqJYw@-wQwG2%lyEhWgGn+mc&K(&kMQQ7^aLhJ+m%Vltd?nyaBOmRCh#k)%>w!j{&?vy-aZark9dx4>VqOFd-CJZc-lWjsQ&kVi{~bVdoL-wVUmD>r zd{G9Z`h)f8U^4*34)fvs*#XucwNn)BO8FtZ+y-Y*GQ~k9^qrff>|@?yrzsh7S8+Ch0jCS1qR8L9 z*C1XOzYAP=IVn(2P~Fy;1?ez8Td^SGC!nTR3}r8n@fVF4reAhcus{P1x!1xk)7O&( zV^)>!g7~ z&}|`XY;gl!!aQVS;`98tTZ>snuw~v;6<~M#2jRV_%I=8gjYCUiq+(JINZ4{D-8PVD z7RB9rGE5@c0Xw|kV2g5GNAev{h9*;JQ`HnK^xfUpR-97hV^{SEpl8!Q-C?)!lSIyB zDFKu@a#>1VIY$iS-?;dG!!l3OBoj|{RV0Y(q2=B#=-LpQ99-lRA*XdVd1PM12j9E9 z&%?YsS%Djhl!b_^%>nCJmP)YpEmgNXeBOE};hM;I_M_2T)80-2gV<4D@ zFa{NL&}@o&*LBg(H@Dn7+=Y4R7%gwKr3SJF#Q{nA+4}Qjq-rlEe@a2ox6rq}tp(>} zq0>yGu7TvZvq41h$Fm^RyJ|xki#J;bX319ba5`ctL@lqch^aeH%uqbZ?T-5sQ8uaGr9r4J}(X6+=PDFiC+h=}^pCmcrB& zsH5-9LwlAGgmmJj*q048&jW=m;xtluBX45RFezqQTf~u1L{;}mS-3(IOqz^y@%!2~ zGe?}#CHmi3A62f~m<4w^S4wKvA9q&QE~C=c!R=7*6`H^}L`cC^i&LMP<(RhTK8_Ea z4S=~^Ky-C{7-_W!-19EC8Sr-T)_;a2=GMXFmduIIHDf|r{B(0SUT7UegEbd;F!%Gq}7_$W6d&7eJcBZc8 z{9p#5fYmm}x!LvGsYvbG%rlYB7qSuWuOne5H$6xF_oD{Cm8?h05lc3l^CVDUexrfu z$F~YhdjA|RQYpS7WQAXWJVv&y>c-B|z$mrD`3=D$zL`%HiJpd$kq>IK-h5g)DHx8= z*xmS%hE{Fe1|=-q#IW-;ErKsNpRES8!W!j9I2Z0Th%QS1;AEF=d1#T3KFg%sBKM^j z#*}7D@7>n^cYBLih3)`qG~t2^U1n!w?+5_JLfSKELXDYeE^jD_(1*5* z1EFGj>5f{chxSmoJXAe~T6i@4sCm&(YX6(qpxyW4^3ruQv)~Ltb*!a&_s_g+zaXjQ zB1}d&H|xbF{fJbo$fQ|u4kKmHW%{-GT_OkoO~U`r_xQ3s3jv}SDJ~duv5{FjfE58j zt9+ww{T=*qUrWn&r+TmCfM?1R@2_VYmPvF!Z`l$_=@W-FTx)mO>roq+O#l1gM9E)tXZhQR{&y*aiBbeYL=gbiTZ0~L z9hPC+jFSB7(5|9s2XEPSss1TQFK-ZEJZ}<9E<=FCuYshhOU3oNQv~eQ_)%}4N$*o` zNIohAWVSdMX(|vUh9BD~#<|^jO5jU7_b5YEffbVECZktg7ru*u)h%q*mbx4ZCRg32 zv#C|bey=qU;{Y?Gc)kS6h+G%%KJuG0;5v3#`o@_IwP^wiqKl7h$Zz}g`A0}+_cz-<(YS;bB!9!_#@uZe;WH5Ui%o&e>gUPc<1vYlVcMC ziwRPaHY#_{WKLS_)n?0DNX`iefU3_JQZ63j;B`nN+Etqk6Bm^ARSx$UUUJ2+{9eo=~!kPo8ze(0|gs8M} z0YH)BiuArD?NsZFSe@vJPDTm~$|r8PUnvwcdWo!(yN3^~&&&~)L1bgxEb`D|$*Axr zG?tK@QwIV=C0gd@n&sQQ_)_Ak_5nL&c}RvH)=7Q?fHjpFbVTm3)iZn>`trJ$NYy z7E?zBBPBqtY#3-Hr%Y1M&HS9LhhUwh*Hd46m?ul+C@4B3q$h!RJ!jyVZ_xLOboe8Y z10@I2T1F{BUysj!U|;dn0|{01!C>u%7C2W^J8os-zF{rRN!saHMzjmeGG$GP;yG9btp(H}3_LSN33ogV2Ky3n0SXQbx}~sV zd`iO29CGEcC*PsiQ+jiKLr{rufP|gMXFXZQhwr1$UCBHa(v`S?Ew%rcLkA=EKXA$f zZ2;Qo0Gmc;3d~~i4%7p)@ivbfHl!!*Gbs%ws;}uZb zz>`$C0w=zSC18BeI*#|e>{?ONu|^YON+pt5HPOF8c{=0dEr_sQK2w>2;LjLIIPyf% zKb#W5Oo1PbTmzmC*^t6ya>G<(jJ_TwWMh9&c`Y&zJ`y0HO#?_WmN|X zK48S1fug)u>KLJU-sp!J)M`DGmIs`8Canxm2aUL@t91+%4P%U=8Ab7++Db0w*wh*| z>9H~+~kv69~9 zx$X}$wNKr#43R2@ujZnkYv0Yf+63GLyhInZJ)Zxw2F8L+y`L!eb-r58=qn1Tcn4xV z`aT>nM|+4f($gD3FSbvd^=CoUT6aJ>0b+N%OB)=Fl#`lNuGr3s2yYIl8B4Il+^%$K z2;~FZR4T7nYRcc{Yh)`u7NMdNXF(DZY?vzr6xqm|M||rb{v*s1%*5PqkhI7R9Q z>0e9sRfZ)8*BpIh4=G(&2ojsJfoXUP!IekYgsyu}a@;La4<_g)>22(~j`D`N@F?A? z9F~*hchYb$SuZ}NF!%V}fWim+jH)w8tI)C`-R4aH{2Bx%lA}!84kLamsYRdaG$$pu z@g2c#+)#?k%dxm6)vC5?;qY83ibp<=&t4U6#H68Z)-O~UEmI&xU`aDu6T{C=FetZ* zTSv#|yV~*sC@JjwTXbGIvNyErx?nv3szITac>cQd8mXJs(H`RB%dr9S4cWE!&pGH= zmesSZvTW<@Bw*UbHz$aOb$uDkGulGe1LD-0mK}9SW%=@5sW`JmknkC+gJEpau9iq2 zr8$tEslx{hUB8tL5*#mUV!l-(^|8QlcZCbqJ}{H{szdj=?N^N6G#paN|2*4MRjpwA zzi6=hAJO3pNCsRd-0qU^KF#XOyW%t6kW5m^%o>7qxtA%P-BDMbwXP*G7(V~Ja2@U0 z$U#N%l2^Dgbq&clc80@@|Mzj zW0zeZRsYgJ!n4Y0Ag5q=)ytRAQAJ=i#W&Q~D=S7&`sCV5y%;yA-sN_eZA1UN((xjq z+96Du#v%c#m0c%D-+Rp8$Wk)vq_v;l82bdduBUu`G6ky$C_f;*WeUn5yt5$7{DX}( z+el4bCspL>Uu%?iwHFZF-Hlt|WPEKO`qi)O#Fw$re`ouhhHMo2qj5Cx35JsNe!NDf zZbov7ouS!Lo<=bYfVB0{_>RXL&UJP1y?j_`F{u0SrH-QQ?eDl?2)L|3_IQ%$-5kXB z_cCdxO_gYqi)W`rU4y4MDEFKd0o*rNF#*Rokdu)UwWqPzdX#g5YyKj%g@g1 zYHe^xeRtaMVTSq3Aih#V)hyOgO9?LN@>;sg0$zn8?%Q@>1uVJC(qEfTt$nvUZwhY^ zn|OJ$svj6sAJ`B;*6h~$p$_oe*_bIcv-Lz^ zW=0)GCMu4BdDFb7yQ@fumkhoJks*cSN(%eaUjdttcFOt@1@n(5T|~HI6~F9UTe%jp z5QG~Y@hqdZS~IJ&f0`VXY<(;6)9JJZNOta zRw&=3B542>;pV-9y#Z*~NKHXUHi+GS)uWK7Tz{=MNL}B=(DS#f2K4Xo7d9axL%47F zRmp*^WrexZk>2z^k!;SE6x$YI!A!mM&J?P?ziqAiYHx@pc64!y4OytH1Vyo+ntVer z`jRewz;s5VPdI9~>8kVs9%eEDWaYEcRatd>K_}7ye%i(UOapPy;#Z;a&(U|$fGBd? zAKjNaro+bxe8n}ng5CNcegzovOl!#jAJ$al1?M}Z(mLg}$AdG|7jyk(&AyjQB)^ed zeD&jKs00cpUnyAj7R*bZ=br?TIH&a~I$`AFCJZf4c0%tVExomZg4CEGMJ7ly9-^A?KZ24@iE?5?%sN?fmRkC2QAR~zlkN~+ikXB5+hN>F zPk~ez;Ltv>8y(sUy8sM?J_v*AGaz=Kqxh&=CJUf`YehTy|8*>95#a{OH;T{^Ely{9 z!xotqqIF6lu{iGo@Hx z#Lhju&C8F1LP8;3eOdf*uoFC+k!)wit70 z*bpm5)NdE4b})214Z>3;p9Y^bW5)Q1i@J~i50n9y7>OhQhogIsXYzml0DkYlW+xkS zJ~Zbua|}^4ath6<5E_wlNs^>KJ2;;^DCg!FqDB%?%^^9~6q0hL5Smiy=(q3h@z@{x z?|$sw?)!f4eO=e<`35PgF53lM!YG9j;0!<9fk)s=FNx{f2PKF>0tviOJ*;5F92BTJ zW={xe6}O;}!G$3Z-7&BU1!6}_ag2sqa=<2>B$s}H%e62%2VTq*%EH3WbJb)_lKs>o z%894m%tJYQ;rxQqFkB#t!Y{+X4BBBKdD%m|UYe_C1wo1emAx1Bs(d19tUU=Z3Pm7f z4wjZjm+p62>y69Z$(iPgO|t|2ngZAH<^xBg#Puae`UV2eVO7ckd^gf`N7mefzv_g# z1xoJ``0x9V2xmaxBp~PsKrJZ{cfR)+ElA_R1Lu()Y-H_OL>3Ennq>WE335pS(SSuT zv4u=5qA(g!&W;J;!V3w=H!8B$+wfpQrga`Ie8BWlp%LgR;Z4;=T_Y%!Cg3v%yBsYf zT27x%j{MXX@|-1hIWAvOJx1$0y}Lb7|P!gC482IAp2Sj;>dz0r%@Yj zLh)|afo=|h&%CV_qI5q5+AJemd2k)hpcz$wU(Yt9DDu;P z1ymsIahG+W(3wKoc|Li{L9|j40uQdQ4j{x7|HoW<6;;1uqlVbXZEp&lgLn;K=JL=d z&C#Jn;seCPqiobHAiN3Oo~7B;umvueg~U)vB$^pM;ifIkjG2G!$wQdanoRFr+z7`- z4^fi7>s9etouTO%rTjeKBpR&114+?9ka@^y4*X?0G=eSUhIM_j03n~m*N=kVU%38s zuU0NmwvAWy)Kxn|6E%v(EU+=30L&*A=E<)+$9^H3ct}1Y`8B$M4_vMTnDspLpE~pq z0oWv9wum?$3q3$Zo+rRg+=kI;<+6{;o8f{~qP-)}ZKy4kPpy`+>36xPT$KvdUx{9o ziCyKW)UqhYYbZdfq!vH%#GkQd>@A=^A+h2*)HD2Z41 zhy`Bpp1`7KdFTZyW(&YPsc(25F039Qyv9bqrZlME5!Q$h{z?GW^Mt{>*hWzWj3`cc z3lN^gqT5)oY<_+%51v2~aKy%W0s_9=RG+-N6mC)?T<``hj-D3TKY{8B$bZR0Nx0=+ zoQU(AFFuKDrQXph1O%O_5Uu~!s_GO-P{~#y+4};SG^ip`M1uu;5O-5I2pSB)+sezF z#+#_LO;yST@B zLj3ry5TXEI;oHM&mBLZ6!Jjo1X#%KoE|gie-dXo0qJ1F;)9K|M9e73 zBV(w|LJL?U2=`?)gIU5w9Z!kxp8mYk{!@7IokUvUWkcAl zTD(>q4@7Lag6j}UqCyq0VD)IhLPF-!?~5PrJeguY+2Bi;b7uzT&}BpSzsa=!y7=r* z$5W6j2hhF`raXE**DiWS*hC8$U&G8qqq+#lVZJ0u5#%$H!8F(n0Dg}Om+9n(91G>L z5V<_W^nJ;OpT6M$vXkobqWj7h5es*c`q6%osH(}j-T_=W@z{PipTtl6F(IsM%i^{%8KjA z9>_%G+ib&gN#=u8M0f;bx)`JeTt0^opwA(x9Izq_n#6+1Cipc(qcY!(ZW7-t(uSlT zd*Ky?)ryCIafP)WzdGiNQ$cey(39a^GA)0Ge*z<1?bnkW)P84NJ?DjJ*Xx5HM465xT9hlm~Rx}85;T}7A0ee)7Rnbb_h>ozao}DD=J2VSxA}PjZrXr zQfwacc@8~{McpF+^~ASpmbl9%W1mT5TROl;((EDun8}-cAveZP5E*8Vy?pGKtul~- za{QKt-a3J7@y79v9cZJ$ec1zQ9Izw*O=%$_9O}b`H}g`T%muc*AN|b3gl3`pAHE)* zLvK>=e*s1e?+8y^npVr6*1Iw+`h}RaukWSo489!wv2>=6i2LM+;{MOO#Mrywwl2+n zjGmpLEsczzCW*_UU8o&tRK>{HU|zqjbpJpIQraGuL`7z-pl!~f?$Y2dhro8xf~T^~ zL<8V^GSJOf)D-vaXUgbj($L2_^h>s1)`J)0j*CecQ9~qVe)kzFePmI;RM_Ou>pH4X zDgn61L)e^Jvj2zqM#L$(%$E7jZk5jdvRrn@pg(oK&`MdZ|My<2)o;3*-j;_fWx--- z$jQ0h3107t7^;TXNuk1ZxVYt@FZkm=QZRX!rt+ca^h?5DD7gPD zUrqfJ;Tyg0FP$&b!Tg*X7Ihu{F#VbjtMYwIn_ZXLp{V=8!|V7nn61a}Md?c(n;{?P zLVjMJQa-=XyZV_!M{+voNdUZG-e2cK@7d`-`Qg5N-9$QO+U@dNQGNav66PhJakw<~ zk)I2}-CE~~T$cNy2f{4yZea`?=TChVRoL9gMsq1BKBlUFe2HN)`wjcr^e~R+j~nq@ z+KyVwxVL6AyOVX$;bA)eP7Y^JpQ$LD9oob!Q)k>>c&(0jku2|-9iClwUIpj9$EGKSo(QYsch**=}hf$)D(Nw zr1*QHGcF1J`wJ0Wd-lCq#MgPu%=hV!0H{&YDD*QFPK;;!KTiCHkxqoUa?FxoFH3vA zzj${LG|9I5-M{Wl1SubqZ!vbGHBui(irp8}yk>WL)Fgag>iv>^shG3!iQm?a5Kj)X zFUWk{nCs2qGQ_k}HoPgPm!Z87wg0)4zc6d>9(t^MH3y6bA5zsWYGwX}E@gh4XzXB` zhKb-QdI85C3M)xlNa*YJW_~mY>{!{VLAl7Kv(+s6Cc`xGw_`#mMQ&^=Ubk3>guk#ZEMUKgjheMu<{RAJX~_6NpzjcIp0 z;+TC0&+Cv*C+ljHru@11#ri#S^7tY7xSF4~4T-%M?%W%l(fC-(0T-*2a1S~#m6hPv zL&a~Je`_h`SbVi5)Mn7vrM6G4F5hs$yt1Z+##Dsr{+=tmBOm3};RO7P{>AQKp4wh9 ziFn`TSXM2YL_Bm6)6LZcZMKJKp!0vD%6lo1IP(nrF;vyrwe&NUBF0~MEFP=ww#7uo zg@d#}OvQ%S(U|t6=h=#{`gU1~wOJo^;xU7{#wR^a*jAQU{NWN$b4Amof@99YN{Bb7 z)Ecz+ymzC8-DpA_XeUN~V#Tb@54?Ess6$kV0WWGgdi=bAP}8UGJNB$Er>ulEn><#7 zo-c@uXiY6a<6HESIsX2NmieHz`vw&wrN$>ivvMU%KSQi)FO>#)RGTJ`^{$==P}M9IPx` z#&4~}!PUJ!=(FRd{lE#fSA2xXarv1f?HzO!kqk@0enV$ar7vl|rFG z5$h>xAVRf(Rq>Vkv|s`G`f2E5ULC|mvg!rmcZ3ohYJZSs4F#U9-(Q|K?O~F{GkY^B z;zRqkyjlf|gI3H1+g%?n)bn6nAT^mY4HC$SHbp&{TGFP;#$36FJ~UVF27gdm;Z?}) zSGpx=O@UuJ$cJ*8#=Ho@ks4v98WU$zz5A7;D%aG zL)x<6E78ol$tz-|0f%>i4=YlSdDiVENp|9nklt5QK(Yp$BM57vV`B+`+%O47W-DOE zpF=^3^Vl1dXQWBx+yAJQhg*d8FwGiVD(+{?k7E2t>`6pC;C z)g$YpVyK+pJt9+cCcQY}PleXNJEEP%#F_kGV`{FG3Bx+R0qG`*U2qH8L#X4X5YRAH z&>YYC)qC}kbyXmttA4}_h=U)NWL$NtERtQq61XeL*7r5-@DLANQ-6AZwkYYV`PHnO zja!6HsY<}fv+o}JgbWz&Yr$TyJ=*{YdaY?k)C$S8+yn{x^7vWAoE~WoHf7a)_SfX| zC(Hufb2+<-DP@Y@^83d(E-87xt~n)7#?_0G)_4S(Awc%M**@|#Pb@1^@DpXN%Dz)=QN>>eGbb$HiDVPt~#DiRFWQMCu?@EwkyHQ?}$~`8tG{sQ6O4X@)i|@ zU!EU1aH;A5804kt@iDz-zKfsiV59C|p0O)OE?FokQZUC|r?#z{li!7%=?p;ksWS7Y zqP2I=>S^1h64fPq{g`6qLPBmSVLb($dNZ(NMuLLSnqIu#$gP&F8Q3_-7 zRh&TTQmFTI$cUOiCPAJa!Es7R8=$ z!E^O_qK>(+eOBw3w4Tlnec|ZZp1wjqJCmeq*-<+&QVY~%9qBWIDzfu%W3P>R+j}SE*ZH%+i2+Db^gMju zN>@04K120@_n>4Rsn%MD1~(;uZ{0P3L$Sx+Uw#o=-{W(Ebr$PC;CasdlMT_U933hT zZOqtq{@6x?9U5!*H6A!?)W@F!sXr*$?PY5MWnosX3~~<@+O=k89Gc(}?vWao8G!OFi|EHt5x z%q?JSYw0K-K9CSO2gc`d+#DaDP1qA87(shx-ipgKU=bjHH$K-Re+KV)ahfouGyH}S znRfr&f@mR?G5+Sq)Oh&c2Yw%870an_jz*{Gg#Nff>{b94D7)PI%>DiQW$_f$cjjhL z;x;4x>q;XWA_1l`kjJ7KxJUv7PdL{pTyb{OkO0=FJ+t_w|IZ6Whia|d6AaV>#Cv&{ zY7K2D@T+;5(T3^Zwu03IXOfhO0S}z~LE`*O0X7I6)a?AuNE}NOWrI}b7zUJNoeb7# z7UwjzBREg+jC!rW&kP-neDbxXwi6Q9hgu_FSD%4EKzX2ZNIIIcf8!W}-wH06XC;NF z;ouN|_4=qe$euJ14o(;00czH_nChjr;pP%`Ppjy}=FtPPMf6DqXey>z1l}#;^-y%K z<*zwNr-7~!3L)hs2VrRlJdFPeYvY7X3hstys$3$p3tv~+y1H*pJ^wNn25W+?yhU`G zrP=XqQE7VjK8wD0?Hljf1+lAe}L?j6I0Jfq1vwHqf?yR+w^pO#46SlDnpw zW>r1rNmzqNERQBwUOQ7W4k?Dtd&ciZm=G((##L#33yW~!qe`O01SkjYTWxu6aY0*h&6|lsAP-)HOzMb(}4=Ow?P;I@s(0w}b(Bs$?#Avnn zA^Wv*lXLS3vn9tktG@1b*hMU?xq)$V3IK6{@+_+dK{ilRIF#iK4W+@n9B$w<|3_aE zIQTr!u7Ve6dae9=j9ue=TJ_2`nrm``Q74M#f}rhvSmhFFFnQIpoK)lI1UykK>UE7XcXMP!oS4l?cq*JK#7&Ik5`j_P1V~ zx%DpK(HAOW*+vl*FK~Pk=;;7JEL)-4mx5`4ZRg^6Ah(rCMH#5#Y(yg znS_$_LeA#np7YoGXW^NWN+t8uIsv1hc%8)*N1l9o*fR!o|r8FIwI-f zc_1myM5GvS>Ra#rEs2Ko2UA=R#sCz=$8II*LS9GDJ$62&{GfHrOuDN1|Cvk3j1tB- z9DnIAf~M2ARq0MEwKrGEuk03C=xG%{k$kY0fro=8h5;cK4L(9c7SP~gw7*%-iX&eC zwC!@ML3zvcjD)Awrjpcoi8dW!rhYNr9(3Ah>|oW4cNPw|iEoI{USRX+hVbN)fXaq~ z%ElE$V1xVoz9%aKJ?YAQNCfhc`{AaQ*Lnjf?zH{6*SQl;ok%Y2^cWD8bOe+);x^*k zg#)vxc~Wd>fK2Z;o-q&V#g&P`$oP)tl?4*ui(U~<4oFKp*C6! z9zfd55Z=9lrl1i)eWVe+70^R)jlkaG-Ms-Sx~u8Wvfr7!7e3gO$R zH;g=|EYeOo`!&z)FTK-zKpC@}e7*kiE5xwQe0mUUZ_Bt@S*vBsVz~RL<#a|E&EyDN zz|4!2YXQFueHUbzW^-^lB;Q%lA92khO)?E6W&cik667cV2Jc5a#b$0&$;=DMF!^yo zV38Pi1OyM9%k#q5GQ1AvF!MAo^qUNCq+VcYd(|{}z369hO$IBpKV`q3;bmA}hlTAJ z9tnLb&|#plIB^zjqc}M<6lUSL|jZ#&^+@_dHob$;@0#K?b#7SWJSMbD1 z0a}PE5*a+=z7Ots8TwfypXZYjsTE)(LOWHtd~_<~l6ar#_uHrLcwYP$EGZ6L@Pf6z zOQxtp2rRSVA=)_9Za3P=q11YbkKGaX`~P#IOU4I9R4@H%h923;E%QRG7Qm?if}Uw_ z+0%U|b!f4wZq0--cpI(Q7Nn8piAa#SAgPoj_QCE>@QN$!+uHE8cZmO*n-a56U`k*T zw)1md{12AwH<@HG36g6x8`YVvPNTrv_+aIVqRy)<%)7tAejow}pGLPAaLE${6HFB! zlU7q};jTfHll@TP+T*r(Hy|xc;oQkt&WmCf{y}F}r!y{6u+jHZ#qT$T8-|w%=~dM% z*R<+a`#-s@JKyBh5=QB9SBEI=n4g7`qb=a*HX5py(j@Md^&)gCX^08;7g-6lZ#*K! z3R2HY-hDTenauvwF;i1P+BjLZTJ5!D8x^!sOuOq0(qcguI2m6(?au*wznQO?^mQao z1Z%B^Z20G0zLDyKUhz_u^_>z7m=y4VC-HlqIQ!B>3qsM94HOL!@|pnCR^MKadT;Y7 zdOh&$#-#lNdW{iOHwFfrLC(o%dNWfhu*eXXkFigVFPD8_CqLvranYe5t;wX|f)wNC ztGDj@f147F{(7oW^7GdI(87QxcEu(eC%4vf7QZ;<+bMkr#-@<+z$ySknr~O{*uJVh z{=4-hA!?$@etNex;O4VK_TRjuyn?G)$W*qt^Y@%DoD#H`13~;#fjGdq{9(~};GIYB zE;1j0^8jf$Q}~vk?_jlT#P#0Qru9>cQn_2}Da%Z+Ei<3+8IBZh!MfX_GKwcamW+~O zAHz``@wL4u(i>}mSIV%QHjfBU+mPC65PRrgYkaC^2wdqK)I*gPE8bfZoctzyLs-dbSU$n*HtxXTwJ}I^T9X4I>D#y z{0t9xG&T19%myh_UPsO8cWs?YI#Lpqr}RniA#=yn+$ZDs!>f#kXR9mZuXXI(?QpO6 z96b~A2F&?AiRaN2Q)x;EfWIlL;Qp1r+oxmj=ha{?Dp+fStTfGgn8OS3&!&o`P#ZXW zf$(pK_~ycuht3bR$Kf>EPBln_3-Ouzk$Yk*UljIo@aj1t?8Y%zd_iTdj2J#-ry)Lm zM%`J&<%w)h9&t4JU|Jjj+X+jFb%0&SdpHvI{c}@vEPp|wZpxhcU19UKpv>OIK<4P7 z+9z(1U%i1hY)EHds^A&S7gt#;pe?~Mba*ku-1AR zEU_~MYSfcc&)-;!~gwa z&QwKoS_CUDD3xfS~4L zCbVdUKJoool7B_mE;REC$Z;KCiO(zM7e3YOPnJFmSTuOepGgiMTX6^dsM7S)JUnA@ z5xo8FPFU`=_l4-?X~@H@BkCFkZY_yiniW$3ErNAnlX%QsA$irvNy37Fh-G1r$|3QM z5?TUyru3_6^W?xamUD%NP+D&qT9n_z7)?_JiuOt)l&bp5c#DR=H*Hv$*Ge;7Hj_w;<{#dZFFDy3(38A8Gz zehWm-##uj8@~5Dd@5C6*L@Lwv$z9+RkjTeZGZUnkLFXoud_1*22=1 zF&Lw{7!K4ZxU^c)82H2zk)c~povvjATf_$o9v>PcZ)6^OtiDL*ale)TqXFl}Vqa@K z!taZDq#|F-su9rK_x2AXT`tax-itNcAwe39$EdyHg>cakgZA+49Fxy*ma}D-eEdmA zRBQVjqfWgzL#3WY01%m0Socx^Jin(IOhs})XkQ)!A6F7HsQVOtf7nRPHaOqx=mVL< z7P)-|VwT(XK6+2SPa#*cj(PgH-=43lKAan&Gp5unB-(jn|6JtR5#y&EgH4Uj!tOMk zCv%!K)6P?4!FE$6XE7$vSRUHN$QtDksab{vKNri+gl!x{q^5mcq3lCczf@v2kpUAjj?N?9lLAO!v_&)seJqlXTy{JC54nV^ z3A_L3Wo{pt=k(`immi8cu@Cun5^cF*6IEF!v%3b2xZ;|Hb7Y<)96~}3CwwL ziOLOkdnNR*$J?>5N66bq(trDQ7q8Daul~Kc|IzC&D#jmVmn~$bVBoOxY=KkGd)j4= zc`S$sk36=IUsiv9Z%v^&In4$THh9}KRn?H3sF08v$^_y_5PWTo1B%KC5YGc3+9a?j z%StjyQT-~ zgR0pFAQMcVwdaWEep9fMfA4_2@amfU8SO=x(SlpbS{DXR(nL#Qn(I>9Tt%IWUf0++ z+*H3az-|qV%Dj!|Sf06k_-nk~+1=q((ySF_LWmZms33IYtuoEp2w!o`7%I;l6FOSk zEq1ppSv&enR#5z|lJs)hAbGR=$wlSh>kC4;#-9{1*}ZS3dWc(C0Vzd@O^HX~%bE5?$-?H;{Bq`rLO+Le}unJC=nri5h^l7vo7vD0A;b zTVK8719{-!Juec{=L-#yUo@0&e4UPrQD@2wTQ*S7`Jh2gUe@Dn#1y^tI-wJ$O*fYW zD7O_QHWkM+cftJ)w_DpDu(w?9QqH|IH9gz;H+-CFa)cZ4rq{xnq;M)^$?3mK)l#+H zF>Q-No|YT)FN5JqU5{4;&hBvvz_@z@?OYLhg0N;G6cH}z8UHR7Tet?ijs1}-b>V$aib|JeSB zzoF*}DrILN3qs>egUzELkm~H zqy*F50)OWV8GmM5O`4uwynZ7wHa$urOVFf1Av360!|MDoaarp&EG(ET_N>jcSzvpj ziIqGG$^Cfp-Ud7RPlXIS-gf32ChLiv{LCd*=MCer9|Og|UW2`!0C5J6VGY%Duzx8U8Y?$TK@G`ttsTfUTWu-eu3iAuY(y(Bow)#9Tl;vzQ1m z3?dVi35JofErmDFkL6f2C8uonSkzjZX!jWJFt*M>R6QW-G)8+Y{LtxIOs4}`x1{39avnXZ+{2$sV1F$A9*oX{MvlkV2_G8owUymv z8bBesd={~-TZ=XAXrC5g=@IeM+X2o5NwZEh?xCmKbpw0u`W4r~0j)@eP61ek(Y;3< zEXTIm6U&$TtbU|hb!c>xTNrBgGbuae?I5P&3QdSJM_wUegO1~4>53(@D%<3}1=bxU z&-{euv2p(W1K0k9Rfw%Zd^!0he^Rt%A-V8P242qLE(c-u61ydb|OQE&*J^*k_n_MrtOi-pv#%eEROfikJ~I==$7}n zwIEg@)K6VJcbvcdEJq_7r;+zL;XY(#h(%TOJ5w$G7XMMmw}hrnY40*^cfh)En)WtB z3l1pGfk+FW$ayQ7L@Vu>{N~PXvl0h>bc~iP6KEUX>y+w7EZR??SeW@VZpr9q_sSK} zrGh{*6e|fh2|uZ@7DS=1JP@QZUNYw1Knq;YQj^I?df`&>o*K$gAzL zgK<|Ld@DBAf2ON#qiWGD7jMOn<-}90@X#(1qnYnw3uNuCuYb#p{gq5w8H#CE{@o;( znR!`m*Pa%JP7Bkh;kXCy#o}n`d)+`bW-`^u@ z3-^>JmjE*4OZ;Q^8t8UORm{lR@G;Eo6}%DMN*a7AYFbASVgiL|1?`g6GkR)`d@}q#NO-$*wVD4jG1>1`2xNm- zT@vgriLn49#SbFGR!9V?Q>VAXY)|U<@{a1&uMfKS#C9t+lZ~($$NJN+`3I#(IfL^h z>Eh~I)7BFyOY`Hx}>!HNqa7SdoSNOYY zEWU|3XxTkTC*ROiy4eg8wdoS`QtK>#mr@m0R8-gbILPVWw8D;+ZUMu75B6TN zIOj}nS~=gog8P1~ah2(?MKNmdRqE`DX3!%y=)j~J2@$5o@+5YWiA!&!Rb;f%4tA~7 zoxBoYu>q+}R*1%C=(4+&u)E#Q_(UX)Q2|!Ic{NDFmmYhh60rZ+QC`Ox44VI2q9zMg zZzG3YU4sfdAJ4OcOpjlg&QJF~lJT?nqbIc%!PH9vD-gQnXkAj*8vyPV1%Rwp+fY^J z87A0c7|%4;meoQX?WR`Y7|$)5A{@=Q3H-9`PPdW;L!%*pz^bo!MSpeK>SoGpbhGPH4Sq(<__j;{4@=f1lUq7^a@*pLpd?HaoeBM1?MN2Kt`2vkelnf^jS7bV^ z2FgHk8+3&^9mW5NoZTv&j3EPNUjUP++;c6)-!)u(AMxOAXzFRzX=%B}*pG^`l0&Y6Iw{hC$)AU)q12GLICP`l__m}!+q?e*vE<~z6Ut{klR zlu;vP*~B#ZL)MP$R)u!U4M$DC8dX>a$*)9dH3zDh&g)Zq%;1oMhG+X~y#G8%_K~Fg z-jcbdQmU)ntFhg!$_`jot+W}XE3)!F7KN>3Y>tVnBM^W(DR6Hh^GGdPxcyY&gV}w_ zBgc|5G8bOc7>;iPm5=2qm=;(ol`?dQWF-Q4dI9v|!^W2vIC)yWf^WCZBx7y{;qU$V ztvG7x754-V1clC{}j{u%U0VQ3VD-v~VQq5gEovnBWo(9WejSiK~)u8k6d zyfb^83Bf zpp5!bH_p!5q%Iq9!Z37gRAA20kxcW@FRHoO_@nyKNnheFh@ZNllfZkSOJT@27${;H zz#PMvr)V+>9u~C5cSrsg*rP*a>e&S65sQ3k58j%B{8_C7nK_x*L%2&B#H?^T^Jvvc z1|YkJ-nEj6)+m~y#tEMJF4Tn01j)28G`1OnK1`r$}rFi7c^TeVQc8|Hbp$;3Yf+bfdf)%%wbSUdePHx1)*%!PdS_<;(FxXc|zj>2?Ny0?u0N&4G25rw!%?+qHX7dwfye&1x^mw7+@S^3B&c zZNCemB2Uq<;Bz&`VkpulhJ0_ZSTr5r@~Z`v-rpEH+hprKV^-Nr6KcL(JeV3SW-2zp?J1v6ckV3xi9PXpM=$9|g`V}#PU9*&{kO#F zhB|9ocUImVCefl>DlhW(L%P%)-B_l3Pu?%GeffWTAX5XalyKKcT593y*;>I7iq?H% zOYq(Pn#d5c`WW3tiZozQ)s5gkI#wq3rP%7~Qs@rg& z)pvUQN@4pVncM^`(H(UOF1>YT@1=Iel|XBnB*AN8-1{Tu0?oQh6v0*fb681Thv@B) zyH<2@P|274Ua_03UimYa{z^PV^bZMd6D1A@?5Db52IR*zKh>6+h9D#7D~DdP*}5$j zsGewfcPIIt=pj4IBkGr+#=YFs!37tHmhUb@b_XOu;v<-#kNYhZm%4SR)_dcb^MX+~ zL?`#veM|^Vt9-tHT`x)UVuQnfr!1)?l|u{&(;DL-qm^ct&Z9{*N&mLS9VWcjA+wdx_lvT2HkM z);+D~za54S!RQ*Z%NU}3=qXw6`hHSqrs|xRfzMZLvpf9m9@C3+oM2G`b;>5}siw;@ z)u^}4=`D#u+;19Vy;s4GMT$mOu!@!m*zuoVLn;6haIJ-d+x<+Mwl}okg3{NQatG4j zmI*eiuj>vM?q3yAb-JnRBytYgU|N+wEV@zHWzwrh_qgiwn<+9@aVxC;Y;tr5BE2OK@40^KWXRw$o{_{_inr8*~UaGc&av|m`G*qzN@^weII=S<)FFM>? z5semU9M_e*DU-z!(vI5{$5z9CI}6AIYoC@2pO>{)7aR-P`XCtqWr)>h$_{&f)*YavbEo?E-ES8{!v|?2hC@9*i?iT++Sn9_SEZ__d+o(9w*lfaM(R zwmC4$f+VC$Jjx^WUiH1cWh)caAZ4d1AXZ{`7$&zJSy8uLHAsmmHaOJd9QiirnjIKN zz}o0)Y|V-!TjH|t#v2TnJd{u&B-xbL)F=H?z0#E5mr)Qvu=;bIswy>Mz5dWjV0?^R z-eT&~23>ielMz@Rr0I(Voyd?+vj2Y7_t#mKo5vFP`X#7u%N}U0@4RSid4B%>%Mp;+ z9NxM#d`+}c%|L~JA?4hw!8vF%BMm!ugfeEJJM>iLqDg6Wy&3ps@7@e%cc!80ucIEW z%l7+!E*|iFl4Z!+72bCNv|m7^I{n1k>ILo^9vEtEE?-u0G-;}l3H~0sn5I;KrD6V^ zYFaJ~xhj>XsQJk^^nRqpRrX;&C`Gq1R6UlWAgv^?k309Q%H}d*G;Kiz(4*3kq668d zBRLSoP_(W0%9IQzx^i}0JqfIy^R@Sg=;6m3Q6T_iyA`l})W)!m5f#)cVc&JO^1z~&63dp)Tao4o{;#ueX^=DDB{8Wo14u9CBr0Q5&@6lIhiU3 zSmq}8Ufk`GBEbc9Lc0(?wcX(sDlle#ueR7H#pR{$Je?y!*khAmiR(mx1L}|icUe6W zNu*@G7W#qa_!Q%cCe)b*l@L+aA)_R#%nWCyxQqUf>h=3VprG#1aw-%og-fe)_!|2u zVX-2EY)2f1BYbxpM4@>}rB1zZZLdouRtWu8A_i_LSxd;u^GYjp?p04(w`Dn1K&*bm zOmwx1Xc42II^1K~O+BbSNO3T9;%By#lC-V|AVG8G=)iC$pgRipl|3Q-BhCI~V!L=i z38Mh7wPhsy*essWf%hsb});ZeW zo7OFVzPmVmm{#)eoiyH}UqCPGdo2^H5axPlN|Opg*aBdz?{6O^Uoiyl4>m2(SRB-= zcrp5_Z;AW@%PFlM||@(!GI4$?$AdP1_M7d^gGy0@03Tq<)U(xUSZJa)JZPU;5&p|WZk0W z;B0wOXN)ga9Q;5Q;kZk#s>FDePyWmA{7*w9o{$vet`_Q@xO`VAUpmIw^mnnsJ5Jou zj#5EmdnhH-XRJ(|hKeKvgT@FPa6zdEl#z)%Q_(a0lQ^brk0< z3o$NWB~C-nMKKkJE>0UpTTwnwZ~lD35%jogHPLK-1@g(gt2)7@ypIvF$`fZ@b$4+P znM}8oTtLNRzq5s23mubHlAgs5s7-c1b&bh92HJOXnXsEo+rB?781~TG{m)zqF z;YW}Cy`ERz_A0Mz!7J=hEra(C;PZV;BoeM>{9xMRhw4?p~nOWM;pH(heMOL$=; zw&tPC-*$ys017446F=whYeUyk#EU@zx_ znTLT>Ac^QM@t^?i`dyu>B*m(Q%>8P#{dAGq=f8IANkW~cnQ<&Z19(ZZ9*2Dr*5Bx+ z8o0fX{dI2R?|1Y+)5e3B5pc8Iua3h1=3eqADc5pXLSA|BED~@-8~B=jHJp5{B#4@% z+_3-S+3pO`^B&fIKFkB!R3?IDti*gEo2C@;?u*>MsRvM31Wr?0$&AUBL=5^Ij8hLQN+{e%89l>dz2yGc;a!c*QsWA)%Y= zWvYrvEmWjxH3N(#T_U(#;&d1PCnV@b zvsj@R?$}5K(x;p%->51^z94P&eSWZOV!sy8g2m0jn@3-N(PNsA#F=k|YX{3(ZiH(# z$vTgSm^Hc$j;803A`p7#v#9d7=E}S>hd89jt0CAyl5n@C$5=`rlqw;QF}HXg0;Lk- zx5Nbq5{DN4M`zX?778MzZss`lK?>kQ8V2QNq@@cls4eoj0ve4%Gp;gkQsFII;cmim zRvU4N+Nv4{$JUo$uP>`c1d0ruk(nJ8ykrez5%7(JAmBsQj1RNmlq&)1skRlW zg0{&Oj?yPiA+i8d=KbGA)ZKLv^@pl^Po}<)Q92)My?3rjdG|~BuV(WB9r>StK!%%U}AYN#D_zD1|Hs#qu5 zYtzti!tJ_~HG4#J{t?-wKJa8(;Qm!b{*vbrw)*`ynx5--tGF;*KBRfLS3k@-wYg%# z$(S|b#(??1;zsrGF`_!_ecTI|Ss3jI_pg&k(X-cnW6;$!RgZXwFdK0*%m!cl;BEc4 z*TvR-qaC8soq8Gb<*SJ^SwmARzMesvi5lJ>>SFO`Uz0$k}Nh_+Db^3iy;c9XL@k{}_F_$G-pD`rpTLKcmv))%|Qf zmM9PVhMhPG?NGJJuhGlBQe9%#rqcd5-WIzdJ{az)T%KCrC?ButYYD^pbOwzNOYw%6 z$C{KIJE6{2YA@bK3sx4E<9h0e7ahO1*gg!sG_~T6S>5)G^5`$^;n=6Yn?rhO80M8Y z1-0AzIg8(pt_=-OnhQP3g4)K-DS9f1Z83V~KJ6XMkT9L}+_F*Mq?NGva8nut8g63E z^RzdhPlMInSBU?uCnD?Id`@0i?so6b^}Wjv@KwpYE-214EO8{hh&iNPns+4FGu=x( zbNZZnNGn&{qQ;?o%jyxLhu9)2VJTu{W^$%-hyU=z%HeDjI7VWPZ;dkIf z%``drkcOGav>$5nL@+j`eKnbGj_1ZTmgib;yF>;yE^!TpDyHNQ?+KI{8R9N85cM3= z35pmt+I@eT`j1BCqq|wdAJiCzOejOCWIS!y+DKgUIhs`bs@c-o%FA{FeT}>8D>p(` zNn0tmq$TgN;=9_~gljTCle#;Y*N+n0!fca2&ksI1?&Ag2+tK@H3idBPI2r0{VHOiQ zjxb-uae+)vd5fuXb>1+SuTXHLP*k+V!)rDAWrV!sXoPQ=m#<2<*Z7HgIQGRJ+oFbu zBbGqA;q&xs>Dwo*tu@jRq*99zrB}0AN7{$XnHm$r!_BS|y$WIz?1h+i&ZS`~Rf@$A zR!JLxEd!8c0M;{7^GyP$Q$Cw(9=?rbYl{CG6>4)s@NsLXfn{(JE6nnZt)*A?kt0yG z*MM^5vgHK4(uSDnZ*!Rt&*><-G6J{sV%t?&1ezkA3^XVECnYO(Y( zvsa#+|1}~744t^lM;39>Qvy-ZiGA;nLqRab`|mW24EJ*07W%)zBbk z*Swk0F!qH}92ux27&VG)jE%+Cytd2S-)Ll1Ara)xgr`M+H5T`MR`@GZqMX@B7h)wc zIi*XQ&4v5#s4B`WYQ`^uyoV$mhi1wING=UesM{m@j&o3q)f0IB23Xzb$!K-!K!Jr) z!4m#H%hKy+gb!HR2d1_?g)y*)R$5FL@o)I?;U!LuV|fiVf)Me^b5}Z^*on4eUKI8I z*ZO1=s$@Hyc|KyVsS3UEnEcIQ`ppJ~)FF{C3SO@7v0H&nc_eP@9r_2awvKcScZ)qn zhDsb|HSv7Hl((AgbfJIV2+h*P7aVD+YV$(I;AZp@Wpgh9j2Kx}-I_hL46Gq3ZGj2$ zN1vIzNGvZ5*7%fA`Qo?+RM6_c)50|o0gCvMAsNAtr1p?x!SV+J<=VZDy>lk1{ehaz zOvQ;OCXvs>^WG9){Z>kc5=-7T%{BF+hQv8zN}=c*&d?G`-wOc?59M-iL<^T|@C;rV{#|n~8Df zcz$VX*hA6wF>L#;vl#^Jm`$KnH;&zMAwyGi;#~V-MJFcV!`7_fAF;qiF}RsU%R$Ng zAOaM)v(4qUo0v(DEs9P7gqiyUfYRV73{%Z?A9#MPQ1MBP{AtXB{$N6&$3r@jA{+** zJq;I&0rAgf5%b_uMwJqWjQy-nxk%k0tEuVP{-v=__)t>`3=^HAzxe znDW{YJE<3iIj?RSz2N&-ZzWL7^rF{6mp~-JAbR~bI;VV=>EI)!bGp7Izme6(l=42J zz9FVH?Cn-{B&oZhlYSOHx;fAt+2UL+bfj>78eI# zvYyo?k2@y&KiH2*OqHn}y6!7o|IG?0)d{$n${cQTY*wIS_lVNJyt$SCFx7CNLe2eY zr-sPI)XCVosk~jr{)!O~Z%w_pF6FH>HJik)`H^FtIYG&mOUAyrXpJ*Y+sEZR{oqb%&zK!*P*8yHk$8{Zsu4fmCQF~;U%AWgjSD2AG!z3mo>X-)EPIWME$oF z%5?UA_J~>HQts+^6B!idmcknqvcqUrc0OAd1SMDtx@;5*C*Euq0Y8@&?hDDv&5|?h zn*QP&gL_bsEgQ`E#$)*r?!;5?YP%Q7;U=&s$8O1A9LE4}%Q|bx2=RsLclYh=n!zK1 zVYN50Qj(`}&%im9#3L`VD5E6Ta4E+E(;88|G73O0%oIHs@H4ajS(VrP)Rp$tu|NJD z`C7kbi$i33gPCs0A#3e7_8d8vSuLS_xyks_C4Dv~Oc>XdS$|fhvnw{_vDR5&SW`+4 zQEFfJdAjPz)qj&%hS8Kl2?4;yka zG5P(=F|no9xbhwMvcHP2E{%Cak_IzdUT`Rko}qF|??C-_o|2a2g0%#_I(BR)i?D%v z@$JPooOWgz#YW-sxs!dbd|_vfwtqb(^WvDTUUP}nJCm=W&a2*d$|Je`q=jhYZn;#4 z6A>@PFXr$3F|j%zJSV6UBB+)MH!P2M&L`!xo{F+EJ-&5Y-t`1vAY^X zeEmK*lRJ#8i#AWg{jo=UjLUmGJ)Xo=o9^Roit@I(E*balOfMh3gVt2iv^{$Tc~kG| zp1g@G)bYT)5@-xrp?s0pZDeg<@-1h_={K5fNGk=$Sd?+uBDOSGdV4q)Wm!SNxQBzq z`2vKwEWrsp@kUv@TcU#+7*UZn5eZ0j4*Q0>OCCAP+i)}O=$Q=7dRXYxAzD@Xv^fQN z-1(OM2_h58kfwN7VKKJ00g4LJ^A*ho$>N3KiW!zuyis@6Tx5A+!;WSlT=|s7R#jY- z_g}k{ka}Ihv07Bj$9F{`Cyw&MOHrZDj&jj*&N^_c+o8S{ZFV)`qP<_ct4pl&Qbk#b zsb8@4n;D;3$%i>M!S0fSUSoQLlp;>n-R*{bqFGwn>q_=A9EtJ1Oljy$rnaJ4%_r!c zso>mBH#F^1OV4UsH?$ADv+bh9m9s7?IihiFb*59X%*xDCC3_%?yAr9o^y0*xTy-~K zVFq^2d_8Y-LSDSvHVdO8Uo@CmR{z>dxRM>4N9T7CuN%R&7pQEt0ac;oYA(_&V5=Dn zCoTC*C{roUb(4DH?n4h;`%8Fv9(4E1^8PKV=}o6jQICzJRL=~?skpAF>`r!l>-qh> zs5gfy-bS$2H~%1&G@&5(j9?SJM8QTi26q(lVe)-3Eh>uYXsa!dL^p@6P@AoHi2!pJ zduzpR%(mD_pUP;_=+sjd4*+cspBs9*V%=~rR9Pm?{)gU5=}d=4kymjA;B>|Dz-7-i zUtEMiSt2osr64EhLm15y@ywYw;yG&>02=EHif8s&k&lX+yk|R*awWRR`KsFH4-Ott zI{v8(=T>QO>qmHkl5uhM3_4S3+qN)88�=`OcNQ3|JE34_iNT@!`+GLsCmqnVMx~ zg-1R~$qG0&r*nOSK@|}1Hr1H4_c57d;pPCpoMF+n>dX_$i>1~kR&1@*MK?zJzTRQ_ znWLW52#Ie>g`12Y*MD+TOxl%DOIVNDxyCvZ+neR`s1RiZmY-(Oj=KXB`tj8j^sPV{ zBS}O_zNSdZQwzCIoa}9rISK$^f}|J%bIEs9wmfuEUih#N$fsuxCsGI(*7P(_|Nj8z z#@w1y`&|jlo6=)dpI78G9Io!s`g{jo;|j~q?Hf5~xW8Oif_+Blq&Wud$drT^u^%ps zw9G8rCFnIh9x6KC1$lA4JlmL515?$f+}%x}5%M@K`M!&YR!KmFyOw3c50vVZ1T+J0 zJ*v@5C;lhnpVv8OcKVi$VgmN-a@pIS$rJC1mq;-e_dK%3-0XVRvjw}BVOkgv^L%0N z*t&kVE-r>A>*dpOTRc+Ucz?wOC0PKcc__h~`ZflGoas zVX3hZe$uucrAAPC|2k9PaR2Jv&uX42#MjSnbk|=#J7XS28gYc86tEHEaM>qYqvnEs zEVH_L0-Tf7$NX>O=JSRx)}9EXZmJsz$$e?nXFg-|^2x5htWIYVST!*gH_;F^e}S~6 z0A4ROQ&n|vF-FaD3}oJ|M>B_IL#dtd<7TSM;;}NbGtI$j%wLs88It^_)h@i3ksolI zbzRRdG5mIR{}fJm`VM?tGfc$$Br*LG1k8gTVkFN0gg9^$b=Dvj3`BH-wouILRt9pZrVt6v+YJ!qhOSw|gSq$}283bKO09GqS+j>ktxJv=rj z6>WY!4$Mn9aVf!dD=slC!F>%PrV6OXXg6PnGPfXRg0$!3hDx?k1*{~Dyhg>7bnGzM zyPJ}->2S>595zbzWO@uiG)EuF-3SzA7NdfPqQNn7Hl*V~0x@$8GeE}8l7j`3$Hx=2 z6IIyb*{Sj8p(Z@AI5JCW{rHz3Ue_98VHL^{yZTsV+W7V0ydB%7q|KtjZ_$ZRvDyDl<~i{K$o zd`#c*a&(v9L#w^-lKkW~NhA8f8**wrL~(1(cuv9f?Cs#W>+vT!$p3y6JXtGPQZD?! zV!QSgE*KrPe4AiXarDB|5_JILApF0XM11zs^?r_at5^I9mUb-t?6Qr7nGoTzmI(Hg z=pQ@buge)cNmp<`C$UMDxQ_8bMO$9Se-NChfMdW$tc^t6`B0I6F{v7csbyQN-3bu{ zHJ~~eqQL;iqe@K=k#wk$2MF-1&86&ErmzOeQUgNhh>oqiG`gb2`}EUZXIznYY|7H>LRH}Pq1uPdERl)03S~ebNQh53F2#gj zn1k+SfWbWQgY2RlL&$qu=m{EL>UzEA6sCeu&UQgCV~FXM2P(3YPKae+x803LyIV4~ zvxEF6nvFVbtOKNEpWSdgYZPtJi=VTOF1B$NuA1AbNA+Z(E>Xj^4y9IDHwehVlSVj- z39cFr4+UUC`%#?%u6}xPWdbaW?^*KT^#Eq7EYHEl+0?k2$%Cl|akr4R=tvpgWasAM z9dYH-|LLBfKHM?rX?&^IIm~7oLp-N)zSVK|$C+2Z&dd^$q||^YpxpNNDewd$mxp;q zJF1&Z)VqmO9k1bWf{u{^1_vh0d@9kw@!mxeMi5O_LoN-kZeM=fhntRS58=VUF&$fO zq<_fl0MRm&MU7oU`TES=v(FraRq&D!^`$t?w6T*Y-tB8YP3I}-DnID*JI9wPF)_Dxk%x%vwOw{C+ICGFMrIH+;G)k>EzPs7_ z)}(qrs_d$s$ELcN@9#1~7q=xZ2L9b!Gt_}pEI}GFpK9y^QnZ!qqi^$24)3mCFE5`ElyObBIS$v)}*YyM>#fX_^q4r#U2bUtkMJ_agFUJ?zh95OPDt7MNs|#JhAdEx{V4jFy9P-V-8^C?PvN=56Y9_D$VFSMtLCJor|0v0%nkI zwEdyJ_a^SY@svyA@T%X#-Phye&`A$+N-W`V1LG;TdXELiYI^|iU;PGP0IEa)u|bgP zz7icqsgYXJ%>?b06m3sFAL}^!E?w`p7YS8z;Fm?dj?{ z^GK<|sHtXqufbJx)77ynu?sn8ZR=HkUFu1$?5Eu(t%v-KIuOEzxp5&R?u1_pSUu){ zr0hvrx<;P%Nf!UzFdr;{dZZ4phxS%o>J={_2gVUwrkeUnGVo0tiP9qymfK72 z#3oE|@wrRv+9)5=Yz#Vz0QUr%Tusj&l!|(=bt5Y=Jhsn$!R!QVp-y_$7_7sAfoJfyV{kkH<~F1FR^Ai%zgbuEefHv$(|#mt z#^{}h>JRpv`)(os^reTJEB^ORzw@$RNTcY#YR4X~qw~%ioVytB%ntT?k(6ZA%t;=3 zYOL{YIK|ay>rIHlb&M?o_Q~=3-ejVDbh|DCUJ|(-oz2GZy-A@2xGVR`*uG?aGGI&w zrlPs{0_|T4h^v98^<$fExV*$Ji;63Hztg*-xOxWFf`3;TQ5^P)T{zfnUGO~xEsuEh z)hh1aO`?R`jaB(YzqW^7JT{3uD;)zqAgo(6&>}%-Cz~>7bkmpytg=8`7gz)f1p0y} z=s{sXyQ8D<>Am~|0kebvU(&UAi}0(--$l)Ku2aYL!tXwbY?09Z181^e?$dm<zvzqJb`O)^v+1IfmUd1ve!A)T%=PigV7s$)pPAwh zZxZmIx`2sBKckEC-ZEwd5^n{oZ(1Whvv&#DmMj=cE!4X)%Q+HWfq#S^pw?;wI%@*G z&(Ki}{4gNAt5pwAkILY)UBk3J5XqJD>LL0k$#KN4BOmWh6hG%(IhykX_OD1fi&#&d z4_>z+50N(asi!$XUJR0#vysPGu-C5|OjzK~8?Xwx;5zLr+vQyq_Nhscwx9^Cw)Vt= z3w`1AW!iM=tEq;^qS5-H6a96!Y)=ud-aNDGcTVQ@f)-K~9n*x$*ET)p#kfUMbkR+Y z*KTtJw@;9l5olH=REL)KdjB@m;C=k1#w;e#Ub#P6@1KC}vY~t%LMVdLc{d4v`SpKG zrL@a_?Uo5Qr^1Y>7##<-F3i8Glh5fqW&85N31UV56Gl>cPKbT;Tx6Dq_2rjF*8PMX zG)M^NKqUj6%0f!5Lw5@;PCi&JF};9+$&Eonq>xOYVhs0`5ErQBGO-{%##yUYGBIFQhxhBF(W7H@#7WxeG(z<;9z6Lo)N=gymDj(G zX&YerhK>-8gl;1NJD=yE4lBP-Ps>N2>aJ=J*29U%`pEX5jcCJb+!2*+a`mLplMkh}*?v=gs#Bv`>YtbWM1xA!Q5Q9eoc?{xw# z2;r}Q6y9D6Vcey(40Wf!m%}*LpnN@--$=d7EN7>4^_r7;<-8Eh-sn^6w!_T^jA2yVLE}F3+8nKOo{*S5eYR<9-m$;8i%YA*- zWt0@SErk*-vH1O?a6RzOYrd`zL6S^oom6!t?R~rJSJauaWfu3Zw(JMB_c(Xx*-0^F zEbr}!XneLJ?n2c?m0CvL<(b!?_PKM(Xlnx6>gJU@YUvX$jch7zsfr{oL)ZAZdxU!- zIkdsNJ9%lR!{u{TYWeB?2mVXEGjZSpRRN<|+ozE)`(r9!QS^<19WWf+0@6{e<^|?! z$p^Mj@;a978(Pdo1;th^>Qpg^gQA+4AIb4x1@h3664CK@*+BrG{Xxv)4d#&UVXe~A5_^g@jK8QFVC1X9-()Lf5@6JBcjAj)nUASj- zt1eqQ)OHx&eMUf8r0`-AZw| zp`jZIh`WSzLSf&X9b7U?Q5f8_s^AjR8AH6!9moT=U}6pdB2RM+9K}p;Xnwz*#wEi= zcTn2kU}a|)=isOPvp@F7$u9Xu2-ygGWhbJnBh}oXp2gl?>40i`DW=B_@H2NtE{hc( zc_ZF4G1)JtbdIArY`w28?-6{MV@7x*ngCcxws4>&mK3xDeMwYXm4*2rIBCV=0&z5` zq))D*QmR?Ut7hFTqfQ;UkB4{ul_XjkkGMkYd~D>_ZS5^*jmC|OT++Qt(5(*+zu$r8 zGQ=!Tt}}_0Ur_th#XHsq^NM|BEy>!$h?2}V03_C2T2TR@Ri|MfW(qQ}7#N7Uh<5Z! zCn%Gkpv@vhxlIPoJ5(N`oI3#`8v#+;>YS<~LSqFQ{Hb6N{g0Zg%T*Ms@&^3HVFJ3AG`4#a7j@L}OR?QF6+#-_s0 zvY+e%ichPD5Qjx8SdK;u6=xV2eGQV!3z@TzciY#8>58Y8xx;A@QIW0zpbCHG$$S$e3K4 zoJ!U`8*0>{ID(-(Ox>mJXXhnTl#_oYyG8eVG`VuAR5ZosRpML6IM$a76@S%@9L~TB z3Mao5+SQ03CWH?L3cJrm5pqo@41Ji!+=PqG>XlTtZ^xDKt0qHGO-_C1T zKg#RA&T?_Za17kx*5bmWt6`)qMQ#7Kw=++SdK}e%)*T3VPSG5-eYS01thbhGHOdL4iw${OYHb-~skyr@$nXR#gv$7){oo$PM15|Pt)kGFHH6Ia_~nL{8qSP$<6 z%b{r**7vzql}_(xS2TR|qXx?sMd?wI=Dvd^-a8B&`5k_TvwsEp=-$aJL5k_grYUBR zmZ-?8!u}$%MCwtFc5>v5B5(H&HBa za}iOS7ste1MwV&WAp}=@@gL{v%t?`6QVx*E1Q+z);68{bZHrKbHCdl?!|erDGQ~Zy zA#?H>nI)*Rjf?X6R{IyuI~w|-_>ZYCN5EBpDZW_I3gHpS0ThsAHoaGO%k!MfM9&aY zDx6T!D$Si+i7O}uTpS%;x8uz+K$ECuhtp ziTA4LP}nf60`Urk$pmO#W1);|^PF^^{Hw}U`_pe#?{dMJ=C9pbqaWYX{-UPN+H+Xx z+g++YS$71(TJ&rMH z+cq^hLO{3br{F3dv$?L*|9P)->t2|9XiZt}D3AKO^6nLNQuEr=5ViQr^H9y7KM0KY z5IViBX?XK%zopc6uhN4(x@Ck}$p{uWKd(#EEmrQJ{*_kCD02F+7GSnYumBdJ;ufC- zL+z+*@5D}e78G-2(II;4+}`+u7Xi1$OS}Mu%fr2K( za+tLP%A5ARXh}3}dN~Q_!U=R`flW?^dERZHy)p<_Cvqd4EOLsm;P+7WDb-VZW#_Ao zx{4cnIRd{OCbS}5Fbb|PAJ}rWi*EgQ!#a(o&ZO@g>msiaeScwk^vUPw4Zv&b(Dt*E?LU)GgAGkgC z#g43~vY2m9UKO3NbBZ&9irvo(GDKEh4#lBdoKFJK^@<~=w0HEJl5&gRx;*PGhn)Z5 z9(MM__>+SiPjeEi+%HpEgFfPiuI9ma6_630YoMvrt7%MmCRT(fSsJsO(D)A{FVo_n ztzt>fpHrqlPo1|6A-827L3oa~=0jEKyT8WTSXS&dr!O3ulH~Jr3yO#E!^dxPE;|8M zjd{eOa+yx@4zK<`MUSmN1ZQPU7>L~>l zL;UeAn0~Gay+yuoFB)!Eb;GVJN(5K?fG^l8J%?eilk-+7PS z>!BhRc8@Eewjt`nO@_&67i^GBkcW6U8H_Mur7Fa9pjd_!$=`&~F}JB#?ao(ym^)3BIY=@FiLG)_-Ru2B}vNaXgsD0C(Ha)u_pF+Ndp)JY@1m z)7No-uUHMQoP0duGMgJVw$CQCXWDUL*fu5&sY#o_k~i8!9d=Bzk0LJgPZJ_}S_+?7 zaV9-ZA{l|~*?X!(y=$RQl4JAz`|9@_gP$3Xo4!5!Y+-*Jy&%1skVRQLidk6qxAdXQ zffQ{$KX+H6(w=chduil7aym0IC6rqco%bCa%q)9GSg;nC*}R?1Xy0oP^Qwub;E7VK z^zJ<-9@cHHGwHRzH_;xwHy>YnXQe}Zh6D5>rw6&?MmL#-N1r108_AgcrqeQB%+laD zn}%q8SAA3f3FNG?a>*#hhcWEsFg|%W@lK2d2+06|v7$c~lujC{46dEm8$e?Y%32BFGb--{d%T*1!Y)wVcS9 z=h{AXu>G72ao>=!2GCHx-8b69-#Hs!DtuEEjna^{OJm;JJ1o=!NIRvP^*?&8`mc2# zwqDjakDd1Yyn`N!6y41`c+Lk-n!FFvmh5~yRpL=t_QcoWm=boKL+48}Q zR|U(ePuH=3?#oM_dQvF;Y{IkG1iX~Zf2&Fw+WwVF&DvW?X|R}Szc6RA!rhV5e!fdj z2B73vR}71boL(bZd@VeE*8juT*qCt!kr}k>5{poJTv4|hrX`T{q(K%9kK>9}DvH5% zC6t$DsUy84EpA$z6gamx&4AZL_-+vDVOj7 z*yUG2U^Yk+z|b2Kh*&E0{x!HU*GzLaG?r}381^51lAtH-2eAIfVX6?oN&@h{Sm?#; z5Nj?}x!d?au-=_nF(HImrVF***3-~?x_2)P3?2fT*+4DVpoiC>+61sRUtYo^GMu9V zfxx0x(zR%iqq94pZXsYQJdTWP<`OzMgx^1f1{&Mr683Nldz_o>bqU+I#YXfJq=9q= zp4MS5;xNIvev?_bp?%cFV#VU57B#&-!$`p>JxSP+XFvtWBG2ov1Ooin8k}zsKbUa1 zmkm8khK(;%9sW_hW{VFVjfcUx< z5FR5Q$H=4cVCh^$a*R-sL>vR){`4|ivS%C_5l;489y0zUCT=TGZuNrLa$z2HSP&19 z6N5sz6nF3=ZxOJRBy7V^HY1!EK*G9L5Zbs{xnCe%F|Zyz614~&xejk?JSjy3>jvtD z*2~Y&$)Bi)+OI+FSuh3{cHkMrnh*2goll-gD$>)-??y!{n=LY7)(;P&%Ed3mpnKL( z`CLR07tuzRbTzZPKt{$18A1Wn?pGel#pKAWGVGE52pDS5fO&9XjG6PNw^0?>wipGd zU1aYPuS*p}wi11b5^`$5F6u?gZy*J3z`z)yNf9_Hfbt&^ELbLcGPC0YGhf^0cnDyN zNvNC|c;-`h&tbo;rO9zOaK z3o}U&8i5UZXqjf#c?OW*U`y?6f$pKhGLVgGMmcmYtP6!aKZD$Sh!KB=y~eNb9vA(Z zbi&W8NfD)X_B~id2qf}AyBNn0^I%LKe2oMz;K6ly_TijzVSV+EUJkOVEFlJQo-WbM zLZ(EVX(QkUS(pn{EGZJ7Zqo9WioL`~CKC|JJd9wQj~A@9JmcUV(dzR>ad*~mU_fM@ zBeKR-eaS(EufeT!k#PXSnhHP6h0-|Z!3<9NR-skv`4qu<7cY$DGt5Mc4CU8>L+fmh z$XzZ~CuT$q+E|!_gfiir$@e!%e});$M~E($Rm71-nqjtF=w}$z7l6M;<%>q3sa06l z*fZB+un*U8cUYmXdAPSi3zLgqyNv(D$A9GE6s}_bXJIl#zRh%g6SRQIc#sBuh0H_6 zil9IuuUVKv7V;eh2?iSJtp81UGldo=Q1mpiioRBJ)xOrT3gftdMIhSR4GUb;@?m{f z)`l9}$I;yY+=kVrM3ddI%?~}nLq%~2HD>w{=ANcTsQ8J?aa4Ht46;s;JO#8YQSoao z9rHp7a}8Inj$bEq{=V5MWC?$8@!xOaeC}TR&F?&{AtE62Jfn!n3#}_OiDoM5Y74@L zD?G{u_yVwKPJ<6{sS90uH4-gZdF;1A#aFcgxJrRSlB<`Y#G$HujU5IT32a78+hHHk zU3~DD7KF|QAz1*vst5L9$XSqk^cYYdGQu`rqOmTy0Yd*rMfxuE z|NY(hM;-XhCG=?kpJGJ9_V)iGh#>o~BM;*ruI+IUKL7IJDKl^n7NU@au!<;4%!g+I z$U*^nYdhgsUu3>NsYGROiFZQGdyRtC3xil|yA;|DA!8~WKFt#m1=RRb9?F&g&Z&cD zFfLp3Yiu+yx8oG2XvQ`Q^BxqE{>{`_* z_-I@*#c#~5B)s1%VRr@FEI_ykzJE`kKUQ`Z{YP83Yz30YpK6{?m+#=w_x z3qpN!re{fjYskj&G_L(5izGS@1zi!@F+KigZJebEum*+(?{=>9usLlw@OFxbN-9sC zf*BH`mn;Np4GpGEUM8T+X?Ic>$bEmW_tGtU`4!HW`!IXEc=VD`-Co!L3L1d zv)*G~@sl&9g#qjtt+YO8(}F(!)Y@Vn>R)Z2(cMyNo2%{(12RN|2U4Lz6KJRe2J{#g z6DLGV1>i2PMwZ}KHv@Mh6%Q8RS7Pw91-PdK?6{z3eVar0L>BS6J0uv86%0ID`6LdW zxen$Ipz4MXw-Cx1C@^R4G7CFH20s7APP1??1-O+p{1PAg2wP(N7wcbmBH&gnqx6Jx z-k|oMzG2li$G->KR?$IJm>wN0&I0LhVWniGa401i1Xbasl(M=?xgl>OAFt3w*#Gc{ zbFiBQxD{Tjffn%R!_e}lM|+BgUdZBZl7ZKBo?7Z~lm@U6Gl!}}H`Wl!r?FrF_f&v8 znEyEXd5?KJoBaNf0d9fN2F z;P79l@c(Jg@H!qMg+Dz>8%M3Epu_SbXigU*9~~uL-PG z;Ia6)<85T=4Dz&6@~-39zO@(DR0xFuVNg*igqx;%y(uwRyKyvDQ=oO~@hS^9!@^$X z5T*tA@x61uZ(d8)oG?H7?9_Vy1{t`^6a7&$?0|oaVxqEyGy2bSLe+9LX5}kg6KtIWc z_flEm43yAO9pYe*Z2!f7nR)qDFza!8$@$ijdI9fu-q8L#*EV=~V?9>>m#05!M1Jw! z9Ztmjy*1}rgryd)yly8zYYFP@v(PWI=r6dI&p5;T75|o&JuX*#W4@J`9I=nAI3c$* zKQmlNh3z9B0|UrsFHL#@HhXYk0eJQE-^%qO>=5ho1RwjI{-~f0Pf2|*NfADDRLx$# zm#iDk*9KY+zOw&^E>B$%;6D7~u4u&KVI3=nYG0%Ak6K@{SAWehU$O_H-yZePZ-0ws zaS?9!#*S1I78rt8Yv{xoc)8<;Le59?Ho_|H^Q%)UtK6p(WT1BqU2=coC-4RR@X>w+ zk+%$DK3;^o?f>ZGY5W3t-0(m2zn62D+eOu1EI%&#I(PJIw>A)W*TCY^FlhQ`ER2)(H)|P2HBm|4W+XSue3!3M~4KC%U9&_ z?~}1Btnbz6O;P8M#v)%Yw|_vph^S*<{rK_{di1O8*RR$W7lr^FfWtjln*-mf1^zWo zttB}|>i#PH3iTJfY9G$o_gJx$@N{sY>cIy@(bDBL>;wz@_7wgNV>t0e|KMGbvV#e{hh-?Y|t)oD=UJl04X=6GDUs}8IiT7&P zi&x?$LjdK$3tsR;=(3nVyB5eoNtf?E~fi7J@(Ag8Xt~*@9MI)dc0t zKEHAN)xg1#G3>%sMlT88kaTr^cP%&)hVi^|sD-ZiI^xee?S`@Bh5Jmgn2#RRaQCi4 z1>^2UhwvNz>jNk9EBjM^@h9C3h0B$vaL={b{qYxpH2Af1cUABdi>6Z_&+W~;@Q0@Q)r_BSCW8#mwzGO;YYeM3VxIL1^-Bz4+_0|y_Q1jN zO_H#-J6d@7^iPuOt%=eB7`5N)g0ddh$SV8PIR}~o?aIEmIk;Lvhl69|dFw0hnjXg; zJ|dsRO&Vb%#l11s&^omh@x@p~S}#oc(~F1Jvg|FrhdZ18i~PE`EG{EcQ#a2U&;QiCi%ykeQ}oW}6Uoy!Arul3r+AkIP-oOvd|4L9I(xWw5=l#hya? zK)=^FPjuOP@ak@t>X&`TS8JS9^4qL;=v)qW39d?lJv&s;J|Ulfr14W%7T0Ia7Q~rc zDfcD&HHkTFZXKKYype{e>;4k)PA%}FN2l&xbuj@6G%})GCHl44M($cg>GwO)Ba>q_ z5oO8kZ37#Wr-#_rVk4;cpbBjh9{%1T=PWckjFt|STQxrmgSoXb13hx-`gwcb&x=}W zy2L3y8`CnBi{CM|y7SoSHllO!SQ0^Ii{}F05jBRT%cg$6HZFJi_bI2E6EagrWn#N` zW43jTueoS74CR!zE_kekFJY_}7!5e9LFyll1-7g4O`-Aimc;`4aCi{Nv&%Bt!jp+4 zW<7OirzE2NkuR%`WhHjMkh4%T3avmb$Q&!7Jlfgttp;(=t5T9>0jj;9Me+S+f|QNM zJ5985dR(qGGb(OaNqAr*GEmQt-L63^4+?F|p66aEZ;D_Srdxh+QL`?f&FB4M7CvL& zsA@2;@YV)E!Vze@FO6u(B9DhUMkQ)zKTesm`||i+7^0 zXX%uv>Dm@pj3l2)hMECzEEvQlvz{NUOUS0f^lHs2rUszSIyXGKsvZ{jdKGMk)BsYo zeM^cXWf}@kn5aa5J-p7&5A?NMS@$*~?(S$1WrM)?nSY{lY9Mc?bHB|y-tGf2?$K6? z3-())dV6`N>QHV3E`U_Ef_xw&O$dNw*bD*Gp_P7WO1iZpL~*e7;IR}Agv{u%b_kg& z49UgW#XJ%%K^98Cxj->UB^I_$Is%_2D2Lw;-)QC0tz1UK`Qa5s1|1rWLBRjvMt| zQc671=qj65{Nq&`=>n4;z9?2@P_J8bY_nMV)660nbwm6FYl$a}J*>9Q$k7GBbgeor&$r%z!&_I- znXPpoiQ=UH4@LJL&gB0;aQxm3V-90;KA(qS=6r0nIa6~832n}&93m0*-R88Ivz$WC zQ4~@kmCYgNB#Ee;DwQOu)Ti>>@4EK?eZBX`eP8$ee!ZU$yP!1ADHY?gc-c*yN8z(6 zhm#AG>4R4USzF6Zt99?;1@w^2L>#xWfK9e@pgYux`oY=2>{;b{J|C<{j!SCYV%62f zRI1DE)x?3*8@@q!4ac6;!Z#_mDW41&x4ql0TtUD2R7J&b)^tGM`twqh)YFPqbFKce z3l4}zfp`T|OmNT7HZfUcHGi{)c;?AOurN8i4W2)n&ixYCV)*@&K*p+f)yu?d;rD&^ zp2 zp;p?y9ehWkMpa~FGe1RKP|9^yq{B$2VZzaaa2e!_UIQ|V-)om9Tv69ItpgH>JZ}No z-H*972=%PyR*fcY!%vgPhOvme>Ajhjs$l$=hh*sQ*~ejuLlbOOY`)Z9wCoMBqNjsJ zWfw+_Rlc>h_`LnP5S6oE_!a&bTdV~0-ljF%FMbja!=$e(d-tiKKu}C41)f-;q=;eh z^IRF{xd^&?!^g8c(o-bMb0bF3jF=(Xet$Ux3mp*yDBmX_y4xke6|@59>IT8uJMYvC zkb{_m!wR{$PL&HB&2;Y16+%+4cwzWNxj8Xs74n}lvK$yfFgQV+-8x=$9R^l>k}e!f z9*QjkcvKasCa^k)mJciA>3xegBa5jSZu*5~fzadg^gD4ofWKDJn$gwoY@KxQZI@@p5pGg<|~Aec{ry=LHqg|iR{9CXNQ z3UEaUv3OrIL2xLU+srQZEGzfbd2628*G3y^*dhMJm-#K{#Q+zX?m-a+&~oeMj|gtX zA|TU3dSk&*`RTBprnA}I)8o}8hhy-hI_~WCgHenwjazwskOysQ!+vEM=O?`K0b&9Y z*&k$B;8;BTVZDGg2@C?3lNkQoxgO#1Q2pT3S;+w?Nl9*3bsH!$>w|E{m5sH9zgxy+ zFme}wsw_Dx{le{fQv!CDv8u1!-r298&VM@mb5_1GLE-moxgIDjU92TJT_jjBU7~Om z^0yZEj5i<-WLmc`IYvWGiF`bjp#+g6$M9IM#`PP-os&2zp6tE|5B5BaJ{=WQsaH`5 ziIBO+Mz(Z*f0Goh>GC#1iWV5_G)F+!E;$s^}>+VhT8SzTvZyB(%U*0-J) z^joDjox;uZj^6q3_Ea3N1Hd;xlFkON(czr?yx*7pwLrx)Rg&AkWg=J%CPl`%7ji-} zOC|2ULMKhi6m-IZ25ZL|1z8)V_96;tnuF%L7fLkHo80FWAF`mO7^c2x?NMmfF(|kA?h*46fWPo|Rw30tK)#uXVsy*)}*($;ATFZhpipUIclE^l5cY|X{V)v`gh<5Rqh%D4Db7eir-w{zuJitbB3n6(+;h;+eUCVz23tt;zBT&1Fa! z4$|^_C=7v|aL5WNg#PXB_-UgWH&&gpn0=V|4IWl1_T)pMx29178LEQ;|A5g1>VPc8 z2QjL69x|0Pg2Ed&UY-GDRRC4hR6&mWIM(&{*}Z#{(3RVdc_N@#dL0>>c?{*4)oaw8 zLG??2G$&)qH%1jT9h1EQ!a%uCwTi_L7Ao@BEISEh6{?^0u*`EoT&#dS(YMU1;EnHP zX#rqyD99W^HOqbEjC@=%?>yj_Q#I_ERR~H(>J9|exw9YSgfmNf%Ony?N#PmAQ`E6w zbH7xoBJ&Xw)4NoH7sqg{I_`Nn2tfNdENGe(Lktp>wNN?pC^Hqtsy%}f31_GJ| z9FSCpYJ-Y_VdrQ^rHqNOd20F!O&^*`f!Cy&HCi#(s!3-FVgbZiMFVfDKgHh|6yX#l-mmcJ;$$&aZAW4uY z90XdV9-henxWw#x4~{7_0sb*+f-KmOoGE@mL4Bycb4B7#G(&=k1ubSzUwXm;y7LVO zVtbED!KuZiw@=z_)_LHZ2=E--6MzE>lJ35PLWzCqn-y-&ZdHOJlc*>dQ+2*uT2=P*!>SFp zFO$&J-t1J#EJrH%N7QZ8`?mab)T(yJ-Z4+mqNj-%mA7!tA(|l#f9|FRRyU>F1xe*} ziKj|CspuDzX0s%dIX)>ZvBxt}%;$s-DGTS_%5(y?g0v+e9n}t0R?7v@a9~aDVJ>k# zBxIo*KRGNjFWcdRFCCqVceWzYFL?AW&p#KapvDTmnAn^Iqo}T#Fik;k9x*_AktQc; zkQL5VOo6J{@ZoM~L}?ZuTYbTSC#kkC$}`4+%g-lz=0)W2v=WeZ1;igNBGA=w+h_9L zuI%@e%d+&#HuH-GZy)A#EHaBn)5dx7J;2C{$>kMW{|8jT&Skp4I|xNpzr2L<&*8v+ z(qry5YG6<}Sa-I!)={GWsQ}hJQ@=2?@vpb@tH}!0MX;?mjo`@L0d@)>+eQr#s?6?U zyyjlPg(C99bGn&ttw(~qE=E8NZ8+zAh0HMYrYjFl4@@V>g0=^ML$%{n=GgqhX~t1o zw=B3{4L3a@lIxC4N#Gp*{B?~Ut_(>B5RyZ8lHAKZ0mxPWHwk!{_L3KF$_wvBQt7JC z4DX2o`)d-d7fU6hpTShvuxm>`aq~fgCssRZUpe`z>gc6b=jjt)hW=!@|L59bdoMF-mTFGe?wy@UJzi%AxF^l+hCn6Cj-MHD<)D?Sv+3d&ZnzAdjW_OaIP{qUXFI`(BL^_v^pFRKdIf5q?O3Bal zh+**INZex7>B$pGZ^0>RFfqr9-HI~XzDQEE2T1Ls#mokM#4qGu&~3Y@L`@^v^EcAk zTJ4TXrzA_`&R{R}g=+k__T%pwXa41gZQ1CeKW_qp>cQYr1He*b(ES=`k+>Z#ukDeU zd5!1ut{qcHI~;{O=Ole*r*D8VjUegCA4QZUExLL~m_g*Mako$g5I(1V+0l7qg;()0 zjJmBf%jG|o#n!x2`^gN{I50(VzMA?Z%I?Nk)Eh4E4^p4sB%jRkm(23OacOWifJehX zaXXC*R0jxKCkDEj=xZYAUE?<^UP${=ODBaZWE|LuWOMaC_T|57wXicOy~p~)JJ9K;KQEj8tdDx#ve!AK6xrT=cI^N4 zLMu+l-`-ag=K*r?{VxU@DF4|aAg9vuqeSvIaU4y0Fx{my_v<^xCq~g@ocs;zEJ=sQ zeBr*8Z$Ca1^wG5SK7-uTA!kPW@OmJ^Uh>owUzA=9g?_&MW1(ta;|W7S{M=95lFpFL zCvCx}>L51oacLY)%kI12lL!;J&lPuen7whw?R}Fo=#FHbi}cv!Ex##Z{gCXn=Vpz94XYJpiCE2!E-uUDywJ^rD2xzgwuP5VJ$2Un` z#d`{NLU#q0ce$EoD|tkoa^nCll~$T~?`y$ValgEPz^oG$+%q}}Z37vdza zVP^&jr*nx4wOq2QbEuY%t;DhgB;8cHLJVN5!O`Vj|Bfp;T zrGbF)l5?qt(f3lF?X@q|+b!xC<YZ4*`GxRi}Uw}#jTm2-P@c-kdIxp&ie7Lt3*R&#VT&8*Xi57LoS)Mz)l%OB2~Eg z%HYzAM8#Dc4G@6I?nZtCWx({Cc9)1z6@6#7A&H*6M{xsZYV-Q@8DeHdNH?VWNm$Y&hvWiw=Rgn2fdUWfqv<$(OtR z&h=#9x$lza5rE**ja68YW9Dew+;OCeIyAYCtVHL6!AQDPoDCOL#y#4x^h4=Q%CiMm z&ud44-VxaJNYJAlrPa(`NQJgvvh_d)Rm@;?(t9xFn>M{Q(;u35N4zh*S=Kdk~M$eTtHR>!ii2o}6+O$W+2&T3#DCGP;*867qXnWzhOiJN$!SEX&(8e8)bx;KF1mrs>k+2a5Ye&E~wISLsC>vP-hsP4xp_DXA5}tQ>kFYFq}u7 zOIT$Z`;3v`U5e1Tt4)(U`RB(-+~nUM!;g|qyh&9E%6d8x;huyY7x?}_B&2-0@hDOL z19ySxZtu5)4REhVLEmd~kSyVPE1d~sCqJA}ax@5LD1pZmzYoZ}%r*iTwK!l~>O5{p zoGJNd(r~%rf`skQv4kf#1F^(&uTI~)J^OXsySi&g;Fs1QRU)KE_=t8vwfgGl-RXRD zE_{~6MWSoWyv0U!<9r;^qn{sJ_dk*I%S~5whXzi#b{=;<#Hx`27sTu;QBt%E7O^!W zyEHcHZ|+|7#=k9QGRVQARD#9lUPu?JKKTkDpurvO!7n{ZtexJm0(FKh-Kw%n2jBM+ z#kg(zM7(3uz9Aj&I45Enn13SU`j7r{1Pk@Txk$IEd{eptOw$p)CQAP4XfD~eMPmCq zMK{)r3gpEG0{6zA3Y~#cbH!ERU*+A4Kwm${DhVi!{|-f8Fod1|a^f*tTxGzXZU+mrd9IdgNm-6KrxuSo5Na zZ0x7e;hT#iI>n8peug2M_rsmgM>}JZ8y#$`nnw?d{R=|w_NcAZsWvBXVHIE}m=;HS z;IYXB&2z)DPkmLZGdZoN-IHU;hNTP@*?L~%PLOa?9RyuR6MeWif*ICt{+SH1i7%eA zS{Kn}o*l~RAimYSk2{*)9AF9!r2Nnu;5ipY6=Hf;Na(4p!C=k2|AmRpb8!Blh={@?(jO zGOt<{wcb}crRZkJfLD1)wEjX*c0%drUY-l$c#(-7rqZ9}NF1+|m0!1`*SB3*z+Qdr zE6eL{epYXYVFxm6hTq^7=EM)9yUZ}$VR{FP%ws&@mj9}gWc4tenSy_(p1VS5dDEHY zdNtlM^+&19CR8gBq3t;$z0jF)nwRoJv@+B1d0W|El}XIHdPPk4>9tCA!s$e;BZt^x;fhCWlIM>p$w%SEqB&>c634R*P?2*@h21G z7*&NeXtq(U$m*K7ci))RUOcUS)2jzRK8Wk4(^$c33NJd5%$%@y8lNrc_Z&{lR&!ZjfFxSjec{tG)CkQkJAH4+ z_p+Z`@fow6mV$)plU*k+8;gaLu7}$O@z*|a6P7ubB#*M#=rVUvxKi9G4j$ufsbNOA zc&NWDu02yyQ@s+|gBJ#C?s_k4fB#1quWgDR8T8F|GcCx=9~P zs(gR6a+@#9Qc5zRmo7wx?^vVoA|6K}Eq!jV5P@`g--{+Qyw@L0F$l6)?ysh`@qJ9_b&c?waC&!67H&PX43*QR{m46QgJ9CI0?#zZLh5SG$-o2Y9ImTee0n`bows z4}{TA?iO>;CfzHr+=NBkmn3r<23uslz|K^KcY|5+sSQGdgG38<*Su*L^ZbjE=<8QM z&R=_}B7gs{UBg9Vq3DCV9j=bQb1_xA;=I|KPEw<+4e4c>Q^&Dks#2@%1tMo12on8d zZe56?i7LJHFHL#&wQM5mYnPuwp-l4~HlDeHFO?h5tLBFe?uxw;o%iq6WXl*zsqf2K zu3Y}%d2AIbKcEBgY*X~CsXbrEFd`4>w_oSiSL7(w(u#7jWN;D)5ncC62ZGs>hun2l_)|NoL*uI$#KTX) zp;XC48i3+pm;`86IDP5AKLhH;!2$4s->TF4bw7u2s?~NL8+RGY?%s>TpCCwk)|EE zCWhwFh_byGl)mv%KWEnWerGkMu*F(&QdPiLzCoTJAQ==G6~~1pPT8Q34~e`Ei6@0z zf_t8Y7kqziSURL2pNVSt2Q#s4W%9%vx`S>x|W7h0@M`=m;*0tDVGCrG&uNB zA_T<%4o+!Sv1Mj$#M3}xWC{{ZL(kOg@==AhUUMBKOJbWObcbb|s&^yEuQb7OJz#}G zf(bO^%ZfN>Mt5Dxmx_OkpQLSxvr8FzV|3>Qy0#Bnq3-#!9-p{QpPL|e2=X~K={WA#@k+os$AN=o9|dn+5+o3t)WO zr5;uomW52Sd0%lkR#yEMA2l#A-N-bwx>ICgP{zS)*uiB8gNAV6MSx0I_+#Ul1QJUN zMe{2Npjon}bvkqk!RbV=zs;*xawRmnwjq~p;t+P%o!!~oRTw-;YK(ojY`eec5I$r) zLC12OQ{=il6vx3u5vK1Gs)BC*;tA{yGDN?=>gIipAL+TorJhH8f+ixW);R#BX?~-! zONhjUQghV%W`&th|C@9@s-jS<8P_csd;U+ zqUM-^R{_A~J2Zt=kUW)TdIluHY*Y%KP+6C%)#rLAIHXZJl=mwAFZWA@6AEzwSq}Ry z*jYTn{0iVl2P#6$LR+;jUXk2YzPPtln6(V~9U%GowHB4G*`jv3rjT}hyt{N$u0>#G zY3NJv5cYtr41lE>ZQ@i=#X1dGWj*tuQ>52*pliPb1PwTLDq7x($5-CBY@q&9iqELO z?hxjHJ;Dd*a=6t48;!INS{GRfNj8$j%VRoPMC@?k!t0lx1B%|!H5J>6wV0N&V^`lw zwD|gzf1e&pJW;xSYPD0uf-#KgWUFo++O*MGl1!F^(*L_{%q03F4!qaPe!8ow|0)Ym zO*du?nN7Fx3weIW_Gb=bcgwn@Z`}50tD!$Bv}z?{hsTVX3UWXpjO9D)4L$vS zx`qTDNUJF(;!1cHSO;HwWb!obW8Sl4?z*-$iJt@7t-8Y)fplHJ_S=LzZ zyckUr_~0EWjTsB2{u5o8;PAblXtEAhn6<%{=r@We$4Ia5MXL9)!=Y#{9m8hX0hZ(d zOQudsd6jlTnyny7SBN{@nfv#4-s>|aJpI%Pp_}2d3=O!=$N+-5LJK?eI@y}5>}_%F zx{I3fvo?@3Raw8ndyCMo8n(6e*#^`(y97iJyUY=+NR{$u9vouod79VxzTg` zkLjiD>86}Re?VPI6}x*Kr2NO`am)30zVtyX0ZSfQ#Ph8+Io_z0pV5VcGKY=ZHsOvz1C0(LA1j9_i|El_;kPMbnt;>>AAjFZm=y(H% zIBXi%hG#oaI&Ih!FLQ4PWF&$(oep3`cum~o-pBJHas%4P^fNw|!*s_vaQH`TS~rnzj(F#PA^p+Vi$T|#iu?Dz^{fM-?10b}yJO?#WBhCZ#^%Qk=v8I&?O>U0PO zO@r!I#}Vb8=kO~ zFd(4c5)bJ}k1U=j3_GsVpNid}Cr$)sIOGm#QfWvgC@i0*jXI+<+cR7F&6k^i`G1UB zm1e0@Uc+aqI-Qj^v}k-O#LiGwg_$gxKr~6f-uudveg^txgl9UF_YU81q?ctUTM}m@R@f#1 z9h8JzSK5x6UkCr9aQRU*j1Lsndk`?a&!EB9c6Ww4o zzO!5YkBAr%6r#F`m+eu`072Lk9gca(_=(xQb;y^%bM?CeW*A$TXUP1lhbD*?VKpC3 z$zCb^JHvGZ0xfqeuxjPfSpmhT+Q@{n?CQVZJ3k5^AtZijc0ak;#VuX6C1$_*!+{CW zglU`d-GEQ-q+B_N%D{`kcJYALSSSnh&?KDKCj8UkH6Vkgu?WH}(lq_>iWTg0n;Vgz zz{%wuA^q{1x4KyEcc&#?4D^yY(b@nC_DCn!5g(t>h%dS;Ht__OMB#_*dp3;pMkVO> zDc-y2R+Ig>?mu3p{sW)(^A#nH$CVoJx}|)#^!{Y5&W;~ALMX?{a^s>~t* zdP>y4=Tc>Xe26Xq72Ye_YgTOy3^+aD5)b@o#qJ*Id3 zOh~zLPJNioyz<@df2YUDS%2HMjD6A-D?pWJSjfR&*L5?L+9&75qXXV;RFW*L48A(y zd!*moM&y1*{`cnI|G*(GbPs;E+7?Z_(VRdAg%DZ7Xov_VL%H2XjtW*t)Ktk^NDBuk0)<#W6c|vd(W4z<0UPlJihr=XYuxt^@iuCMk84~ z++E5H+8>>V_jbHZ5-=tPgza00MW62(s5ND?RiWUid*_r8j3c4H5hM_ylOi6RB==|F zArF1>cK3Oi3(2>B=x)&;eT$gCddNS0{nDWULw=IhA0#DtkoMPz-YyuCA)U z$pE%pRXvYkhn3p z*7(<&{w1o0{Iu$YjrhYGvNk2^Ayvr8BC3tNM92g&N#u!53B_Lg$SU16ikcKuJPfP zx|@M2Y{bs>h?2{4f}p6)O0%s%6_=$5zfo zH~n7AR%Prun4zZ*!*}{jb_&x`R=ozF`akz0a2B0x#HM{i%O_n6(2R4eRI%)QxJnYg zHo7yyr;jUFrDc#y$Su&1qYg$#on~ z^4ze9y-eQX^4YeC-=z^1m7{M-RQw6h*I8fVh!@Co@K=YnW<{~pJd>$pHvm=J8hO2~ zj7`_X{5xEX6flI$Hst7^-~Vc_@RoW&u~HTX1hji*1DT8{qo`}m!B@JQnzz4>^$1HW zHHmw*ca0WnR&3EO>8YlM+$OhL@yNulNd4Hf_%$bXhjJ0LkM}QpO`0VL{~cDjETykj zDEhs(kxVK$A7qP}g8P`=VC=qVRIeRl!_Zs3-k(iI;e$;5T0$em3U2L2MZCokzBpQ4 zZ{W`rPO30bxsV$oQScjF*2$awR3#r%OCXBJ=67YlDz3qS0)i)~a4<7Ri_Lqg1|OS`J^`}Q`=^(?|3s5BpeSYU));bl`mG5`7C?; z@O+T{9oB(sjQh`-i?Mfg7VyBM4q$_9sAU~>tp_rzUFPq)+!|bvG)@%8NT;(!Ytr4g z3-k^S8w3e0nR&rP6)A&Xj0kwEbluZoHJWc>eMO7-lH%Iei^e>6yQa;2sdU7j7VfVp8EI!0 zXG-QIa<4F^41dfzICjVLTQO~50aQGq>MSgDGxmS~o>gn%<6+T7LU@&pT>D*OuK%!d zgs^2Pgd2CsmDoXd%k@^&6@ik5Cn61pUnF!YVs1#@vIA~|_%D&}N?1MdF#mm6y5HNv zZNM4oy*yAMaUI}B9dz(}QDxXW@4A||I6i0PXu3IAv}#OPFz&wJyI#(O5H?-uwCS)C z`YFRZ18g|7dfWkDtWm6(Z*20_w%=M`x!=XrGDS9LhZ=NC>{V{mY^unks=^G_KhA&w zoXTIqse^`qU;&sg=!3e()Ov%AEyHVOU8@kaDGxq75?*XTBlE5jI?g6%z89H{jqBYc zq}MG=z8rj{8GKW)3_5C7_m%&6wIk3UY>TyS$baW}rA)!t*`5e~D83CjifQVK(BjE)u5pn||{# z(z&>7vr|o}q1hhP{Gj?-wQL{bl;bLmSr(WswN=`MT?c)u#bk0I=c1}%dWccmc$M-U z9t+ctLJ%@UCEA^z|C_^V*P zPv{eK!(3J;jppZ-wtgI$E7_(x>fN|PNi}EAEBo(fXeb`bEOJK&v7*xDcd1ZybZkoA zY{ovgo^RWz-aSQ;3lu$}f&g92;T64!NIDW0!LgS=|{VRUd56pu7`uVw4*xzn) z8!RdbiQs}|BXv$QRHV;ny>eJ6$rIw5P?vY~Mm2dnkUxVBGOza3Zq|5k^SBa>r1&wk zs66P6?A#Tz?+lpGk}FX!iAOiw5EeQJwl_J?lXsU@cv>;t^)s&L8xnvc%DO(*uZ=H% z82875nn{Y+OILGj`^9NlcD)TER1D;_%z&BYp(Gm)?j6y;d0D{ACD7_VxZFM*+dgEu zi}3f)5&jf$?1+bG&2dbam~NEV=c;oLQB7Uv&T3H=4=TEJ$J+YJ*Qf35wXPZ0#tJ6K zWjvih@Jl@dkGA88ikIJxTX*^Y_R2$9SK}|s&5fu^7sVC$fCcZryQAd!6bc#$6z!H& zv=KR{@d7hz)K6M>tuy2+@N4I{>%0YQYx|;5l(%SaHe&8RQh9!>>)YGV0=KOosrUP* zvWY*RaFb)sd`W(|vk)PeKbS7pS)Kg-?zw|9EPc72yy)6Xe?s3Re%vGcy^!dIbu>TC7RKdC2oNLp;io z2&GfgXrE_7`i{DFT;CP^e;X303yrtxaWZZ~?@wi?%>p&ud8Zbu!Ll|jG1xP zqXm5F0v)|Atams&MED`9;bS9_rYCQ+>1Pcwxy}Q1Uln^3x#7NXj5$d-udKVL9@wB+ zOl;MkBayvgv~&4&JJ?SS-o9;Lf7_$2JlWmie%t649?kVd;#qO@>pd;`xo*5*-0Lr7 zq0yc5>-)*<{q0!NC_L$?jl{5${4m9M%gJV}K_tzAheU;xB}iTOkR1#eRNnQAiQi{D z@!SMr<{UGU+$cFYZ;LZw*bm)*qIoaz>w3os{%Y287PbCmTaq-ZmfGm9%U!b6~Zj>8GlBruZP>~U&3A9P*NzyMa)~-mRND3 zU;#64sioGmZLpo_l(J`sc2rj!e=rl>eb;)Iu@4KofNe<`or; zNTm7sZKy{Usap~?P@cA31jnOH3hM2*CM@H%=KPuA)96u7YIm8rZ_UMnZa!mhu8{P+ z(9j^N*8JJaxpCdb{TRKsK#a5&2^-ZQ9uDDfTSut;+P~*jz!B@)3ioo@C7Dm>(jN&i1rB^824Qq@o*4%%v|?pewe29TE*4`A&rKKDmosE z*9dsea2E{xnAyMGjMHf24dK>ojmo~u&ic4_>`g@Rrc2A*hhujD^riQ9hb6g zDXOTOXF#07ZHAc`f9%>xN5|(v>Ef0*&j#unxra%G+XxK;{Qu8Eu7cIqICC<18(ji{ z-}cn|&}&>?KKz=#{GIZSF@?&W7gZvx0?Axrb|0?gBsHD?{rt361Pp8>cq>m!zs)_*)Sx(w?YE*Kd{%@&*q|SW^V*$U#lf zHds&1XX)ZNNb-d<8c78B>r6-bhS|;_r;c+gIsKNCt+`Wkz)tgN^>LWf+c-TNa-TBk z9`5{IAo0QDoK7zWj!$!2-ODM%BI`?#?~Civ4K|Zc_k~KltTHgp^J*Bj1YD`4X^>AH zBw)wUN1Mc}c_I==f=|;)(L-k~*-cX#sHvZ1%A4UfsoZ4+hugLicUA-7Es@C( zN^Q^uv7Z7Km!fWUcxOAr_&SDrXCCj_K%)}D7r=8yNxs*LUOl=258x?JM)HKXH7vnsmmH#x)5#^f@NB$rZJQ8Wso=l~-t#l#^IPrn z1ac8Q;haPE`7!<(O|{R>Y98A$qbd&Sv^T9gm~@{{iF7fSj#w!QK5U)%HwjY|C9!UV zh*Oe|s~3U4%cx|sbdhWyc&E!VZ;QDY{hB<^>aKN9Z!SeKS z0^s$hlc5=Be+ijFi`#Q!e;ai!+&g`=i9yXkQTH4f8R$cwpYwsDR&#ePl^LS1mGf7R z+mLS{2{f^X6v;>yG7==gLxIiR;D_6kO4;h0Z&u7V2Or)|y0CGUlWpC45%;BzsH|2n zaMR6&B095}q0#K=1WCPw^8WQa$^unm*g|=CPL$(B<2k<>udC?F;t0)*lGCR&s=g@` z!)?&~Bhvx7efxvRV%pT7RZ;3aLLVULLTS;UwB&g-Ca@!ngI%qH8$X-jH9&5WtOmJ| ztK4<;$lv)mCC*3fNOcNgMKUj?(caw!HfwraLxS?prz&|fwO+-`_k{V_(+17+q9270 zgH1Zl1^UhXK*wxkbKVgy1od5y%K)*Y_dpVde+I>Rj;86Z-O^L4n_S9u)vIhdp;P>! zBNGvU2SpC#S5h0qB`Js|yU3lbR<7T4y7IZwvg?=FSARvi*9N6+bDQoory@Kp-+?U# z7u#JU@hRYIYwJ2p0}_^kKVstsKY0}Xtcg%BvPl;1p~3)=`~*wvA5Pc@bmU)^*omcx zI5pFnmTLvi2srVsrS@F!rS|s?^klsL7F5FFQnziT$U$YQSxcUtQZp*llv-hl zt*RgSK^7i}3BmBIcR1;je|r7P)g*&rf7QxuIn0a=AbDk=C- zC@*oa-8vE7lqsA*|Cf`epEt}#ydc#LlhV%g)yX6U@}_GP*yudI^xudwwiYc8$K4~rF1H%9 z%|}rmfNNej?9kD~d_4onB=q^SUB9ODd^C!GlK4Yh*Q6xk>hGCTIHUBN&b53kfJmZ} zlrI2bo`rG%Udi8I%X3)fFjs^kY`!KM!x9snFmb5m%Q8W>0Q|dv zzVmSaP_Cs?9v;2GZ>#Cik^$p3MHYTQXnTnqIbr!WZoMr}NWWWjcYN(yUVGYy-xVL~ zhe-9}HlBx)bCecR3D#A*iPLVcN$2TnGURKRDgxtaf0{@@bF)*JR&(%tvs=BAU|>^o zu6PGsl6y5$6%eR3E{i$wd%ZAcNE4ioDjI5@miKtv!&fSCOxA{}Db|8^`cQA1OE*ZF zU%b3EoUbB$`{VDQAx=$v3R=Y8)@zEFb1xpf{;N2AuH02y`vU)S6nl`WSyR>OTz;$g zq{c*XID+o zj~|PUGAxoEi=J6!`;|-_E+_0zY?p)eGfx43sI4&7vh7`bN0UCqp!u&uc5M+qGgnq-g zO)>3vQ63AU^&vfiRm)7>j-xV>Ih2eCcSY=T&q^RD8GqHT<>^ennDa!pnO5e)n@1aM zAlJwEb-)Afavkagzz!-cV{?oc%8B(H?LMC~4l)h-+@q4s&k+~uIcmrFk#$r@Uvq~rOge{R_;q?iOVJ=-GWobA4kgyrQngwFTK)rh(g^Nt!G zxIvHsoFJ?^vCj4rhb-e>KKTjIiA7A8J`_&6hOsR=#R>k z%q6S;(JwcQ2=r-eC()Kg@cODgs+oPS74C`y#qO4HS0XD3b~f6dZVJ$C#R z{-V)-T+~%G{!%R@K&^&S@T$+Ps-QNz%Vsc3w#W@xbXUbyMQftFK_lt1vQ5L_Rc@4E-H?(W0&ecoDEei?x=JNee<1 zyI_x)#=apRyRG+d)jijl-dN>g_-b{XS1z=(CwXzR#$n9xfBLSRq1s%&u%R3)CP<__ zZbWU1!%&jyVg7Mr!VN&C75E9NC}-rQXE$Ga2-wyCPayMS&s{0OcUa5f@!O$I+F_2- zRU>nuS8(oK>Z2&t{Fft!FMVu)vtN-zi*=@h^`a@O9*UnB_A+vJczu%?fTAKJSWl!7|T9#!1~`=ILn_Pk4{+$%Dz+gq?b!|BVO9t^3${{lV}Y`BPu_ zKO_#x(4?x#8uEEQOLt1D7j+}!i`vZm)o8~X%*^6#U#-Yp-S!%17Eam2f*4R#nE6SGF>nSo{8#QGe`g}tDNH@dq&fS&!xw~sm7@rdgN!srxPAt?s^lv(E=7x)jhY3i%q|z7?xxi z3TS%@Rt*ykPmW@{m4uU2ljMacXp7b>p4pOKksgQ8(BmTJyfdNS3*6!uQl4yB_TYL? z6wKw=pt_jKzgA7X=Q`Z?HC4k#jFeuV;6JatF%~X25+tPQfc~RJjff^lgBjfaN7#M7 zCHenh1HZV~Ac(kUxVPfS99g(`;>;b+%oSFarWxQ~iCSvIZDwYMqq5S%m8*8C3)Vo~4EjaS;6bU@C0oET^ZX{|uBOYm_H zRBo~Iq1gW}z+qNMb5uX^E+HgGNAa2yi3L>ik**Y}e$erT4Y>~`h`_I%v`QY3qbOOj83_`$?GRYStrm6HaMCZ%S{=w>UJdMa5@COdcGCIof@D zvVAJoP`NT9R;6ps&QiPwm((0C+v8ZJalEe}^si3_ID)uj7AO3n&Hr(N1Yp|C&ya4V z0OkUF5=KHCc(V1({~xpFH6t&!_C#-Zq%8?Xjo3P-w&zXSY;hXwMX()gQY2y|W)><= z92(TPFm2W=Xjz2_W38$HU*VkANIuy~+Ecfo|?m3+>h{_CtOl1Ne z)(I2DKhGZg*Y~HNfer~87!H*;-l3o*UNNX{TXQ}$hDb~hUqi8!m98ET%hvv>bF#_x z8y?bU6TrbxULWuszL;V#dr~`a{)RXC^xWUWr_z!YrcXI?(QT~8y|zpDKi#}hynQ}v zXKuYb-s5=j>D{XV;{L#%wckoC^`5is4khJX%WBB)4bwX0>kfCGR89Pl3NYQD5sLqQ z(dlu{&Y-`FJ$?`Mg|6WVo%0HvZ3!2*EroSZG=vt}s_OLPdDU*yYq}=KCDuv#-<)^1 zR!V)7=~)o{MSrQdtJFQ0|9iRO_X)-51HEZyPQ13oKh#>;m#4Yo%?pzR=;QiN20PZ- zxsMJAhD5uwD{l9lIn{dpv3&Z-1GM|MA(qv7HL6ur1syJVZ*I+Mt53Y2k#gTcr8msY zR;pG$=Xy@aTV`&t&AuCJ_w)+whp>f*3^5}An!ai1v0kc&CDN)9zE4zvdq1O0hPUye z6-mM(QSj!d@!M(Ew?o?{PANUaA6tZjoLGW|N-Vbua$N7=@=Yl`bam?%hEs?1D zsH3d?!I{sZ^2O;YQHW!Fn0YNo;xXs0K-1Jx${bk7dEuh!>EWtCEESnZK$i<3>_65i z5vzp2)9u3+Df&TNC>a2eR}MZ zv=jDjlI_4 zu7RD$W?=ye>quYgA?f4-iHhgE%TgmO{stQy)AFCp0OMO_R^y4u7 z*5QqZ*eL)3(nFj$U`X?saQ z7mqqcmS5;TENOyU{e{hGh6m6PA@mT~?QQUw{Xu+ag$wtLA3NpXTzC%~HHE5VY66*e z;NgqePp(!53@66>2&8I&Ea2RhI(lMi2VnRxM$pHNSTzDJWNe&av4Z! z^5ry2$slfAFbYDR{Hs|1wXag^sLV$ZPb=20qI&Tiby(z&YvScJ;mw36$v7!Uldwol z^SO|*SqA73ru<`H`g_-HwD0Alx-czdm*J_s{Hw?-(ElNie6ZrmWsBjgm2xM_+NyF%x z>&fX}_u!v?6ZX-sKe|e^eb^~1axLebPX7S8$L923q*HLB_@HO?*eXHPsrA4^Y#|5k zb+0XN;qn(h#w7RVfm?-CO;Rz0(KsWrkARqPvW()xWVdd~o8GpiB0(Mwq~S%hFq0!J zvy!ta^V^BPPWW0M*>UWRHf=^+oh1%7TaB+4KGL9zAh1ue zdtwPSVLN?^6}b%(QLCf-tw!2wyG(2dH<*+MU8SlZ10qGp*CO4%g~fXBN?TShdVgh` z_~`@8hQW1Yz&saWxU}oiGNwmJeHPl+vQ0Fn)uex4A&+>ebKe|)Zbh0849fSrQzsF6 zg@z2hn_c-nJnuruL*xac;h23ZuH6yNa`&(XK>W9B$Sx(owic?aeOsFgP2yCDw3PJ5 zBBLC+Fde|i0w$0T_b|BLg|K~$x^eAmW)11)vL`1d2}`$RPBV3YW2x$sG(Qoe)B8_6 z?yeU7B|q|qkbk#CIxogPCP--Ze>mKkBPQ9CG!61K(^TZ)T9^s>^4+UU9SZD3tq^he za!|`)J`L$fK%5`r;uVMRB~TkS)N40PK30o0&}qRej@GKLN2b2i>@A+$HdM3L5f(Y8 zGSB#!a_6CRrS~=B$M0AU2TLGOcg>*gROI$J zc6srR=-6O|9Ky(==fa~=kODQMOjNmcwzY_6UK9;F(KlsM&*)R`@e=2!rcM~$8d~UW z_|bd$cylZp^$6ozfx&L0&!w#&YOll6B9xkJ1Edr|$HhT&Z9o9Tf_#X4GHAkprE^i0 z>}D-LoJ(4|KkqT)BcZO9Xhwh<^9g2)(ARRN(WJhEcRM$i()V5?dWf9$d3bu*+EF@F z{5ve_(OfTh`yPjjBI261ck`~GTh9p2j&>`Y)RZ5q(E$u7&jb?0MWMcLp8DA?*Lcc1KAkxGJDmNlU5Ra+ z+i}UuL4#fwg?GA{DLMS;{q2hUn5!HLwtRyCyJymLOuaoQ;7To|P7W#P&1R8MwNzvj zPyw+^O!1B5(g2rcpF*xJbq^TdA$~(X9;7(!oMA<{At>q6PVM|UX?Hu zG2xZl`s2KfWqP5YzxieUaV|2()VGqcS9){oxwWDC88^5w#Eb@Skk4Sz(Mf!yprKq) z9&pqGYDHVg45c*`OwA!j?9~)E*}4Ohqj8XqOPTFdC#` zvEo}s?R*jAw}f$SGk7IV=6uVepbM6F(Xp=@vP%_SwA*GRvSlHVS&U_k2+Hsid?y|h zP`4&D7|2C7u~9RN4M~(@Up5?f>ACK|QLXC(^;#oNdnUYEVSbkuBR&vBcK0PZ-l*TT zBjI;E;7if+a0E%W;s0>P|oW97pr&Oo(UT))@wnR*P-@|Aq&l>#=iu^;1_l8 z(*bF9AtS*Pl1|FVhE@;5qtirlN}{w^!P+IhW>FeBS|aHqWkl+^_wK8mBDh+}9s*)_ z=t3uWPn!y=(xC422Zw3MipBK@KamxGAN%uXtNxCb>;dslpZ9KnPHm&FLf~`eh-E!w zH0R5e-6Jf)($v@Jhr2~CpG!3iN(xKDL}_EJBqF#DhedyfkMT7!E>puhasf z48DG@Xf&@}hqQg$>=n$7hB!?{rZZMU4y=3fVcn;=AmJH&;<*a>i`tWAeKzQ{2R5zn zX{dM2?qR2?N6z0RC-t{VzVXgtO~hyPn_o~{loSCvL*p) zK^m&qS9zF$82VJ!v_51BO6iD*#W@gP7-Uu*3Nl67UO5*KJfBIr-yceUExS2>^{uPk z@XkBLh!TAO$pc&!a`+{px30q6Yb7+xVH$|N{=oL;-X0skd@Pe2RlL!;4YD3>CkPWX zL$|IsIvitebo zeD~X#C1xhC%(~itIgg>@k-1w(snJoOSf;BuDJ?pc>)3Q*rAh}<3nfn-&i>rJy`S+i zC#zjYthTa!uvJpG^gj(s#Hq3$P7_h$+7hj9#I@0`oaDZ%#vww>Xbs4>#c&aOjnPbr zg^<+ftFC7;ks{8GVJc_Gg`&Aobsoy@jFsHS57#s=(CW=QFJM_ZGN%P_kb2kiiQ1h0 z0hgWv?njN?eUsX*fHq9Z1~BHKCff5AO5;QdjO$^I?g>g)J9PXt(dD-G%7iPI2x+Sq zY++R07F49H{ey9po?K1m4-rSN0)kGsyscXw^06Atr1(4~OpyUl+qooX;#Rl<4E^`2&mIIP0c>;TUgEiMjF>r;fiF zQip7zmaq7^*KIV8TbH&@JSPcdiCo=6Edsc-X#Sw+Q(hQGsWepslW<4(tQmyx&k9iL z`PioH>?GSUe7}vz$d+pqr_>Ezh%>}P-sCp-<-8N6Igi3B8#U1tUr+;n4bCdQRdF9y zFBC+0^3*LS#TccTk*U$QggjPq$3`lHm#^dzx+&Rd?uCw6)n?N-fsnRtrTp^^eyltt zI=&ty+j!5h@b2_E@0TR~dPqn=+qBR!=T-EVI(3_(&#zC{w0!-5pN~)>>`yi4FU5)l zk#C0VDAg+aYx1?D(N!%)hfP5&UHDj&PNcCU8b@N-ZD$4Jh=Tp6Tx*7&-UWX^tve~f zel2&=06E!Tmge|HEAnSgatU~26Fgm_P_42BLB}}AoYx~!DTx6$>H{QFf zATIp)&4C$L0Z@pP=Eq$p`j#7d$U57qIrqrgCYW1;nyW7O=;nTrGd#FjuHbr+TKDrV zIY+#Wo+c^%>=z5B`NJt8dYSnet1|>mjz^;XD5cxtuebzqvX;^o%l-awM$Xt<#BWkViJaGeUzr=GzvVoNSl^AGfW#P>O!hIO0^??wF70%gM=B z0w9i*u1qw7gKEKgGnNeDfFtBlU6yem3phrADSnG9+1(L}Z#&;M?z1l)E>akbXR+PP ztQ2$S!LoivHklrSbq{yF&m-iR4=Pp**Qra0j1=fkOq`QEzhd`o=Ve@xmZ3!6B+6=L z{GF3AfX$tiSO&6nf{N*J{00ZR7E7soW|S-GtpCH640XrO3unGCPfV0aewT(FvA2-v z>2A21vgUo*>BAxSC(=1;8!mvAPmKKXs5d09UJdQJcz!yR>^>>v*tNwD61-wEa& zloV}OE=lpxz$2)dd=>(tAoTECt<^v_mS99BNkNpYDpg`?33R4yfeaV`ScTcumWXMb86)_G z=a%Iaz&f-vTq#`WBY_&g#btJ^pbPP-)!eUl1|| z3}D24m6~h?(5FBDg2->fa;uxutZ{=FwSlH84(eK=UhoP}!R4)ZBLTP1G4!&tmCV_x zhWzs3RTpCB@>{EPgDcTZdhNSPu6z|)V-_q;_+3ZnvTOU!8RoM42`;+b8&n_G8nn*S z^;n>44QkOv(3c{6#sBE>fpa?_Y$>_wjB&q=s&_o4NFO^M$${Xy!A)wj$mQ7TutmL- zui$$(90?7gOF|_Gm!|huQ7UN*uUsr1uU5IK?P%_6`2|_ZyuMFN#tUO8cg_aa9_$ln zbsPPD{33YPhng+XGWt$W_PDa^u9sVr{Co{|a-YMIctS>;<7#Yhgl@|AMNPKJylrQ= zs?WWkeejvVuce#BJZo1wg?vBvl{>~E7~{)S8?2$w(g40q=0godvx`p3xI5-S)xe() zF3=e|Q{*!A0L`1xANkecva6M2oevlg%+DS@q8YP`813hgfi(YTT9TCitgFvu_b$yo zP~1O|&}%BXLX2ALgY8I5&lfJSe_N&A&u%IY*y(98P0A9Ztjc=hG)GQ)TScR$9{>d? zJ2f5=GdIIZ3iZkcu`Gk-#jCQ1*Rl;yszb$utT4u==kmPY$h|QbLc_w&CJTM(_&lQm zyRhb3CXr$30tNGi;8p1ND!1pRE&jeeC5Ez$s zkce8o0aeY?3hc1{kWhw(i1G8mxq2(Z2!l77iG^`%&d={RA?LTa7>prmlSa(Qgebxb z+TYq5Gpv6IJyrwfC;Iis}S}*Ydj6p?O zUOLP$p9z~ZQ@4GLiKakrxSr1gv)@RdE>!|L-rMRBzi`Q9=WM;X*?XpOOoS%=J=W3K zQLMXD@#`Cpi67tfAj>5h<3ZdVW^Y`rUM)MYmZekQ*n!f^`lm}TJ#Q8gY#KCsA$&v` z;>Q<_C(j*2dO2ZSPcgJL;+9S~4dV7}I_a31J(7w0;4Bp>ZFQg-jZUQZqfVM-4(}Yc z)m|$U=GE#Z`4pJRRL&|4KRb_Gc5EoM8Z|1@>?W-|b=*K-!T<#=z45|%Ejx$*&9V2? zK>JxCNBba~g)x`HuKj@rMpEHsBV)9*r;;vXA?MJLz$=6-se8E(O zudXgXGW}h-QF)>Lp7lFGxXFb|SJkp$*Dz1Fk&3;QQJr}rKBLWpoe*JH_cY@}5Ms2m z24hJpbi<7B-W2H<^xYkQlAB6eGjh5%ob6fz*CcI)p-sGYoj40=7GBH(1 zi8-pZanrzvJgOhAHR<;9)iQW@=+U#0en?eYhl;7qwDlhdBQZiJLRiCcsWNpkZ+(WmF`9|MgN zHsUR7-V{)B*DXJ^pSyfp_hS>-c-E8we}+?DmG9+k-ZoyI z0t0xylTzqQ2f0OFm+TC@%>Rko4k$Q21C4`+Bl;s?91ufjrH5Zq3dPz}rQ?oZysQ;n z_k-PTkONG+*_nFDKQ9ip_08d4d@m~m&qu-?NEuDb+_Dyl8k9ZxLkVOwQ)y?@1DbW` zfKEzc5f|(>_lZH89SVEH+tpvq&)7Dmi%13OgK5f8VvgJXKp5S6&NhMga3jQjy(F45HheIVDp%;zxGmmRUs@tfQfo6-K zBIC5VShfY?@Rd+OO`^Fb!)wzE8Z)AG!B$q#U!75lDduB_KsqQQ)Z1s0)-3drE9m*9 zm)@q3t(DL|1YfqG(hw2I2YqkuL3Y5$F6%Fsxs}bus}F%1?7YEg857=7jz`QlzZhAm zy>hs`%G9k z`BeThR56JV38CNQ7T(Inoy^4@W8nrA3AdsYF)Ar=CSj7BAlIEM`ksVfIC#3o7p*f z^Rggah#{4(lb7=-S<%o$q*fV-t#i)lD&31J|Gl#vR3CIgDug^_L0j-F)f*q#84+DZv`G2{T z4Gjh{Ja>fPP9@0ROeDvcW{(eRIRfwqkj2>Mp>7Z=!9;AaL+LOL_XtSW@*|AVV*405 z-|o0~bHr7=Gm^c|+eaWnNwSh;h=B+)90fC8f|O`v?LK&c!h`v6;m&l}<{XU5g$IyN zo#dk~QZTIqY;Py}!ZNHn+?FqftRoWsq<{~Niu>;gR`jEi&ShA9bHk2%;h7% zT9|0))R-K=o=7pje%(?(;3DHG;^vQ2c^6B^+Otx~#Fv6Ty| zl0`Z^WrdUk`6x9dk<_iSlf8A^7=CW?5F&jM89;_xkl_N2@9jLQiI3(H@y|FyOf8{{ zluJruUPsvIdjxFPHm~`NGxjb8Q^QBG*yw%&-asm&-xGbJ7Ul^cNZE)@g!>aD$>is8 zNVs4x265^trhvk_NzUnIR2Q$64sHs>pfVll8fjum@LhEWPC2*<0hzWS6&bs@FOQ4b zvj_>)fY)mgR0w%H=`aW2;kKKO1DQ0YfdB%O`Y0ur~mC|^F| zqN42PtZE$^MqO;Uh6$_SqaIpIR4`CYRIGqke7cBjT*R)$;01i4Z|Y4!nAT3gT;yZt zxp*4()*|`Vynulu;Kl{IqBcRGD{hj21rorbBT31!J~Ws!fS}bz5(5Q~2v61q+EeOe zo}*6Z6&}s4?&Vjqq-r!=YIN7SOK)EeY!R>E!fnY=RZ8oqcUd$61unsuTx8G*$iZ%? z58uTQ=!&m}4|I2x9297j=|k4)uL0ryTAk+v;g5noC&I0-B*HoeKSjbVl7$7X;#eTz zD}et(CA?X@6|W8aWD5)Y$5|5gB)fsdL*XpiQ@63zveJj0c@17>?MEopaxOWmS3Bta zivBT0AmolOriSO&;TM6S5n4k72xg3MG!gOfvW6z%m<7Rsyc6DuMimnHm}2?> zSPOS1pAz_v@gxE63HOrjx^}mOQH%L`%)OT?q&_F~gojm^O;@>gSw;4NWId%9Q18_O zDgcBaodro{JLsSp70Cn+dvee$vbZD{q)}ZaoxGfBs3HOzokQ@NTBII3(3y|=X4F2g zErpp~|DUR8W{C$E1y7c1>NdK`?|D$rllx-geUI=)&oo#&y;?Z2nI`;(BP5_H5hcRs zbq0RX@gP^IgTjiYp;~CDWE%Pg9oxb|Cf8!*#)YaL2@Mm3j{FlU9Iw<{D?R68@Z;LG zsP@ZYilwNt5<#tS2Rb!wXqC7Xy=^4K#{CRgSxntps5dNPQAyFHcy(Tfo z6)KEHw{S4!Bw&auB#;h7K24nr!f$Ti&g%kcBSM;6LJHNaBf5Z?d{Obi*xn1*e&jvX z&&!G2EJ@QK9P+?s#zVIx1DZ&v_LKoC4ft$w=D!rxc^x`fY!+ylBm3;SIQ2~ZhX5>8Y+6?o#+|dF#ZGFV>xB_ z`j)~MmHX>`RG~J`$I1JJntoVaeZW&@V{Cg4^%j#mShAj)i@nW2TJoUD{Fzi5`q_zD zuutgle|V58Tyy5z-e92zpT7P0cgq7m>YvX45BIUGRc&a4e>-7O0s|`p$gg$Nvc4SmV*LL)4$}&5z^PHv*S2RXl7P$%IiWG`KM}cj@sdIe{69 z4B~(7;GwLy*8yE@ANlo#>pv1+PcbzJNe6^pF=nR!^nj2>-y0Gf1>x6hp;iViar}F* z@ashFC6@&BHSR1AcptOPciP^B_szuI_;cdFsW|{g+_#}}r%)?!V<;@Pi!F=a0OrOefCc-yqU?7=q3;A5t|P|dSM7>^UyH8wb8TSI zfpK-?YQ|Ky@h)Q$r$@2W1Y2!uHmjOlwf zO1qC$f$n!Ty#qb0uj}Z!93S98ad2cH7X;P2kNa+SX3zZg*|qo7*ID#btNf4KJl5#tkDF`5Lw$7kM;~o(ih2EBU;W^Yhe7(=Z`+jb2k!#lQX-*7?Wx> zsm(-&eCoHQA}d|=hj@9&ea$O!m)HZN!zauw-m4aJetj^`s?{EAV|~(!xo7%pU9V9I z9U~%BmLPq#avuzUv5$^j9p3ItGqJeR&5|fZ%hpyekoVlbrM+72!_r)rm<((9;taq2 z;z)I}j*i16gRlPMraPuCpe)uU7OwePycKKK$SQQ6?hKJFow>}a^eA$lOuxG#&I0n9 ztL>`Xrk}QvgSB?{tS)IQReEBb839qo*L;q(POEEsO20U$02%auckw3Sh{MbY|Hn?9 z^3o?!=BBUBuT&i!VP;=4f6Y`IG%dimG7=5{uGSZuj0s>p*lOl{w!~v}ecGY{zWVKp z^UYVL&(`m&Z$y2`mLA-9@|{%NeGvzfW36KwFK$c*4_}J(bSp6R!J0QKutn|i-AoIP z;O(}7D7;Jpm>?q~I^W~EJzOlM7TwT#bm>B^)e3FaKSQE_G+eW{zv+tQaNq6bu27=C zVbr5ZHHDU#ff%ccd!0|bJcP=xc$B7Nn>&+Zu8p*4oOJzd_^$iV#<>{Zlt}Th74U}H zHqFyHQB=Rw51<_IP_6Jm>>MPTeR*7N3NbzNemzr=4$cYbXW$z?%`FE@$Cc)dnzH6Z z7F&8xc-x z5Au#k3$qb|3=wTA&q8rMQS}q@XO>c46~8JmdDVVHK_Fy}q6P{_I!aqTif8iZJ#fm1#T)~(u;Yp)a(93iud_hW@&X;y@(~rIewPOG%vOMt*E_o zLwDIw@v-uc3V56W!dPQPAEAgk7m;C7*^{|H!6Uy$Di;?!I4Dai#l**i?-okW-0^p@ z-gGcp@t(B0!h*(B07qFgo~Q1AyZMQh5Hm-gYz0`8atY;Jm?F8a_;f_Sn6Cz-$+0Nr zxf1HQUjL;i;|xuZ15<%>70%mUp~IHuirYlhD+w#o*~?Xc+FJ`PXGhr;63P_s-E;j| z$>ARqr1`8W{^+19;NAY*dojydBt|*j3X-X{{w!PH)e5jOZ6dI0ACXo`s3(6>3UD6c z>(i`Iwe1eC)70Dn8?sZ9*>6-5KJ3=i?kBEBcU%w7b+IdG4Jxp!VgBU?-N_@RQNMYC zlBaA4DRUd%w=n!IHFQ^!iOZk0f8 z@y`P8UdjEm#3ZHqRo(c}|3LZsDoMY0ITa`?%hni@u{O)z$q~UV*+Qe*TO*MlV%8&47}#AeT3#D2x|KV;hX^}A-1F8@KmSp|yTl9erkRSy zZ}xDhjii@Chh)V(YsC3JaTo)3@ zNp)Ll=*{K8hppuwbBE2#$65}1yGz_yg()nM;o(QlUEAURP9DyuzDx_fki!|&mP1H! z8&Nq*!J)FAyATxWGC9}DH_Z6W$iePq)oKq-n+4Wb@eA+J=|BOMsCZ_+aNOh%BTiEF z;&h+@7QEe~8a2L(A7AVjPbI@7o9UU#L0!ntr#{=QXdj?_DY+T47BwrUcJng#GvPW_ zF(6zv-`&wU?1u$RL8yebdwPaYMK5w`d3WtZtDRz=tiyNwwW5nrYBEm=4)A%8i$@~& z-}^xuHs^ZS-^)88ul1?Tq_j@xTK;j2b+mpOoCa0oR}LHT`Y<#OD30mVK4!gRlQe|)W#ez42nOrmK8=_!F? zTy9X5+X&Eg=(kH3J(kxDtO zfmoBUU0slatieYUsIjB_JBZ^c-c+43JBPi!FyYXVezCj+Fjdy=kkgaeN!2X?MJ6Zg zE4xS{5g6z*I&Q31-c737o^h-KEXxQ=o<12;am3jxM0JqmV7)gcUNOu(AJ5{lTSfFijJ=(jz8QDgvW zgo4VnaG(;=GSF2$6!w@NAah^;Q~>cnfZK1Bf9r9y>l1+kD(mL-x$^zp_(9#{=8B1D z-wyQWBL2SD0j4tKpS0*Z`o8NsURW>*TYwOo!J4~Q%mow{ zp`m^`@pGA48qE9H+r^9Rm;bQ-$_R6*mu3l9y9{AID7b$vIO@VuC@^+93UMm43Q$Hl zheHBv9)yn+9$}onnY))&+4*^a#G+XK{fJ4Qd+<*b@PG55aG>=tAMOP}mDmtjN2Umh ziQ`)?{=pz=0E!NV%;o4W{=HEHYh0uSVe#WIme!G-irvl3&?g@zl&2+fZf5gk*ym#^8bY+3*SD#un0lj zP}N0H9z#5V)1u~ zm7E`QH)-2gDW|e<^r&1xL^4cw4kF9#e`RBbAnZvM0C=$sBngF@V>G+~giXh=1VAj=!8ya& z(PreYXN}orKF=e|LBJydyC5ULQW=2ZGVX~o%KuoRrN)H`juHf>xFb_xk>$XJr;QgH ze36A{SoYi@rfEs0a`lv#T~ceM>%wx<0}#HsPz?$fhw7;m1#02|1g{9mU=&vZtT})< z(kma%6l1F$S4Krb3eD1LhNi|u{RTRO?jwxHJ8kV2ZN`P8T|@|gbR}rkoE4#gGW^{Z z$9JRWI&DusALkJ6)xU8mH&);jAVaq@7djy#91F}A>ZA&4G>-96jPX&$`9>uJ%Lg7G zgS=?isqoy4#kILBm1`E~_(cTpPlgGTP*Ju+$Xwv}S+n!0uB5T>S;{X;FU~%`Y|IHt7bdw}M zkndzxUE5>rS$@~Cu^3Q_N)}j!0_vWD9RV=804kS($2t2p?qfw$E^6DV@}NNk##;S@ z0#WNJZB*J_oaYk8i6f7iL@*OzUM2W@ru|x^^Yc4BQsD6;|A3WLSWL)K?FJ>gaqCQz8iE+ZvIR0N36Y1 zc($v6a*GxSeDgcS8ChAtm`*M_n$h!hmOKOy0hR#@o~BHtbJ%;dQPWW6S99~k0lf!u z0dEE|CtqSblGZ;bm;o2K1FN;i@(p6xIav=G6S`#vVy%NRHIUTt@Sr| zsXyFPd+x>b#|?~_?72S$LCLB!@I#~X05X`6spZHdlIFR8d~hhot#3Txmove-r~_F6 zkU3zXkSV_!z#@SpQ(v#evkN6MnQO&AnX@*4tjucg?VZ!>aR8hX1|xV(6+Pc^?v5}U zB2dTH>hn`qjTWc9;X{+#O3U>PO4WZeT1UT!B&og?{|dLFf>?22EzPXdj`=#$nU#D% zu5IDX%D$YH1^Lx{H6AO_H2YcsLcLVHF$MDn0)wVA_xREhu7?@xGC+#gn;G}T=i!oU zmV2e1;jQl9vH`Eyt%+wtmUOJs#9irw>i0MO`MSLW(-{_c2#Y<;5rPma4+vKR^8e+w z!~@~~p-Ke^CGDj=0J5kN5JyBDC(pcHvavfi!7y__4X*LuOVv-?FiS-+dxE#z{$TqE7ck>Rh(Nbe22Khd5$fbQYM_Md29F z1ACW(-QH~%Q|7Z?GQ>Cs4oU#F5&%iyCUOcN&6V8iE{IplwfBS3)uK?%VOMt^G~D2A zL`;n}GSIaQEDdr(uh(o3``q7%U{@U?$SSTSU4pmzkck5`EDL*oY4}YD1tyCno z74yMJZx%h5HU!igE7YP!K_BP#gd0GsLoS(d%N=tRyM7 zqnxQA1-(4iH?S1{fF>HD*e%(#F8KRt=Rb_y>*_uvKit(H?Yfep<79l6|NWu^ssgD%eRd-FPcX zVE&qAgh}j)-A2i!fBUS0Qjwe$V@&Voxj~xiD+w1uO7IIZrQuTF&&_@*9`K4a*f8}I{Y2d-H1r5_KFOwG7zp=kjs<50$9{fNu%&eL9 z+=dzRee=M|XyT7A#e^d)(z|%%{LNh~douO|TC^??p9K&XG_$`Rf>CN?6{-VaRK`!A zB-or!3Nr0&6+?m!TGmpsPn=AlXa)RkOClK89X|Q6rPI5Kgem=-%1#rLJo#B7F%q}k)}X$ansnjE#%gpeR{d*pP1j}uf-gLi~oadm+ZNG%kS!tf9Ym&mYw4v z75(qt`;$769!fi$QQZuQIhGp%aizXh_0stQ(VX~P=||2=EPkn^@=1P6diuh5Nm1;u zKFa(1LAUS!6%70q95ar8dpR9Kll>HN)MV;xyq8S69}&nEqdWvK=Uf@LPJpjwVz)kB z+65sNgqCf6ICt5;F1nG_ZdK1ffCMoOk_ZKI7GK~LuMZLb#Z)PO4U&#!#* zer!2idS-shkN&3oDJC*f03FKQdhNDo$z;J$dkT8A7aLGSgGS@hAuWI7cJS_Q;pt2~Kkez#5KPDrXR?U}F@tCT@7^UIx#W4z0A6YaRyK$w zhL>zjdrPG6EZ#jD`LNz+ojNpOIZwTUBt+mgzdd7HxN`8RZHbi{_p~hha)ryb@_7|*rACUH3{0|-16OX|P%1Ru)t4>m9f$c_zOd3~1?eNCQTnQM?l*9GY?G(S4Y=0NBkCW`=4f7pzzq~C8roOOc9uQ4N{oUnGi&U8BO-2`6_^VD9SuAQ0?9f5TB?6Cp3|*8V;m`@pN*U2D1U&7R z=ez4>_duNJ{S{u;KJ-~FMg>>D;~EY_*U%$XY#8HNO{{JQ<0GTCAKTY1+7X=xmYOg8 z=ufZnzc=NQvDw~$OdhRFI5D57Kl^Vklh1UXPUcdI&O$+7IUzGf5NZP9sCQ(s$&TvWUPauqJ5dGO2wj7Iv_kmnk1VKDEM)0X_9P>J_OOASF zYWN;Y!{YbamE#sRCeE@in@WPUNb5VpA4L+UcrWVP9BmC6D%*VDgFGKr&{YI#aOi}* zEhBpE%AM%No#7IuqZII&qI6BHEIl8P_pAMhYrg$pxd;_YCtsFmsm_@>F&1dU3>Ga2h%FC+$n}kE5 z#c}m z$f&=|d_^u`F)B%0s)PjoE|J0BH;0&%kY#O9{bvGT$_^oQ@potKEtsA4W9gBoCn!LI zOHYHac{2+9$+|;BP4C}kkPBsuAh(Zb^4Xm{_7%lnd01NhpUDO>p;G6>MFE9J#~`v} zEQq{x5T^l~4)uv63v@0*^>=`h3L|+ZsEsE~&KD-;g%@9-u1Ku_)_LTQxt7=@-8r#+ zT2E=gGuR?29QCEe0xjY8`}YwmN6z53cV41fNkzFG&u#0AEpu|?NQ5_XK3FW1%&E1+ zK%~+MQVVn_W@|~XkPg*K-{p;`5?q{h;4efCIxeg>woVYkQBYsku9Tm}?_haEclFY) zx=LeL%?5=#QErVvYrVLc5JKdBk>qC)-9M^UmuQSX^}@ z>#HYfmN(V^n{=AXc(58M7(BCSWmFS2(*|GcX))I{n!WSkr<498QJFR?!prh0yQUnu zWOW;K6dSMnaj8{e(9!rGEU=_p=xm`qEr< z)Hi;;QFd=`+hid~J@-#?|0}Z*72X-_Sxi~yATz^6Zm1z>{^({u;e5H zpjB78{Jrk}v{pOE)eK;SvG+a6gm$a^C-(f7?eeZ#3-SK;evWjV+FX;2av(ph!)k(~LK2riRU6ong`aXC}I(*H+Kz2#o+NfftKy+h%6x70D6X+OW z`qB4wN0rUhDBcZG_X@FX#K#-289j~JPHmZdlk$aCm6cUOvJZNlEzN#!M)6BZJ_?q4 z8&erYC5EClc8-!Pu!TKoXTC=MS}ey5?D7~SHcC#{{A}CSi1q=4#Ra1*?*?g-Ou>yJ z*ALD;TGD|35-byYQb92$EqmdHJ^P{*7aIBkoW?vxI!eYWPsxd!o%C%w*AZx?(%vKI zeCZ)-w?F5vu@Mm+9^2~qiNmBKej#8p?HR809`W;gc>2cRhmI;ejM+?%3ALUdv_n(} z6-7A2^hz;1pBT>V5~2ruZgA9gX{$%J?W$kj7rlv;V2uXeGd|4zj?R~+;eh4kgP@1aqow>dINirjir!qy z!WDZYHi~Yy-&Yo{r(V9W{HnYC+~fZ)?p-^2xY5>+MBM~(-|^%=a}nGc^fUP_JmlzCK> zX`Gd5kObC>1OIw}XQ|@l%mP;wW!ko-mJB{V-hH?7Gh>fI;?u|wr!u6?kW$j`A7_wP zvkA^q_6KWXzq1{@Cx(+A5KN{Pjfs#@v&^%j6{hAc9Xok*wqwfwMB}#Q2wDCONptIi zB8ae~XU9UHYaNhvu~ne`wQU2L>@Vgll5>Ck@F-&#D*vaBT4j- zWdH>2q+x@|nuHy384IWXvK;=4lU0JUl>w5j89`H+poOhl$dyq!Q%Z~x__o7I#0+0D zv&u4et^NcS%zKI0os1}c_$SDq%#38K{l&o5RhMN zdr>T%A)U@Zg-+eSMhNXBA7;zy1rqel3XEp*75R8K176I=WMYIV00>j=-w{xT1(aHC zG}O%y$1nspu?P(ujPK;*X*A>{$_8=`zz#U-EAYfEE+?~5!vEQb+C7=EO%)9-EBy1` z>k@C}M6USvzLT{h>MIP_K48y|k%JVyq+(|5L9fMr76GK^M0CLFo7NaC0h2nsbv5Ai ze>L1nGrDF$iZ)pi?13p4oY+C*aSq&`Biqc&5aIhUBcou0yaq6%@wJe=ojwX`oRni_ zD3d@&|CrZxMm?k*tPC{-%;E{9oYK`=Dca6_M6%q15%i@qH58P!UXs=O znVN&l#DQrwA2JHLY@ZO|h^_&IlI4PjjTI!1lO*bG-K-BwEcAJ8((&T~Wb;{unEqNs zERBlQaNT=zBq<-$|Nqu2c6odyxN z48Lo+J~CCYaLMZ#{S-yyPr>e1=x)yFRVX`Nj2>R)Gc_au8V9IV~5c?Ix;&AM2x}r+SJeKek+i+Dj z(==(`Z~38;vlmp-mQMlSz9`)+d9irSZXBbYcCQ;;FQm?RQO-0*&kIUSsQO zK6lFDgs_ZkyW|RiGfq|HCWOh+rY~>y9SUB40w^BI*0yj?OF&6!(PTgTTNkTu9wQm^ zdHB7c{w|Myp`UbuvkPoAjLo8H-JsrBIh6yT%2id_{s^%o2B#J6@ifB=-SmWG6#VtQ z#^GBv{adOk!$ycv^DL<6po+hYqu17(l|97Bp;F0{;d_7ZDr^;z1fknyDF!eV+18;C zUYU62?K`G?+Hl4v(A|+|woCkgZkqqkC?AJBmXmcw8JU=cXRk&@1EGeO*oJ2Vu_yT5 z$sqMhccR+y1~qt1o2u9CVI__lvlzSQg1k?m3x8i$+k65a(;#TXkYzW4lBqy(5}QNJ zkbBvRno~m?w<($(Z7RY<`_l#jCI4_2!gZ=>)TM%V`kw;FV}2^;YXi8C#%hx7PT&inXClrdA14ev=^; z^G(V{OZHy|>R*OjXnWv)c3HIwEv1r=RH8R~JQI>?5?Q4H2SU$ha!)siUEzp`{%0T?ydCeRl4ta@NBZHeUgA@5J zQBeN#p@)kjh8mgdo`L!zQy$TJ^cA-*Tg4;y`tm!xN$@Z(ecrs}ilOVZ=YJ5hW_B-( zL-t|AS}sS;G`}$##X%J=2MPWRyi5b$M~jRrVaz%Wu5x z*&1;QwNHtvepa?&{dsFB2BbAYW<#Pz3d58#)x-x(%YZsHHuQ)ggm@5xJS?q)-2EKO z%wfuj#L63Ry0%RwfT$Yw8BdG7C3uAlz-%9U-GuSU%%CtJIm~-O8Sv59T;E|M2d{~L zpZ@7i>33@3MoWn!35JWa*#Q%VW?v+}5Uqc2SwC9T3jHSYjv-}yM*k3X4LxT3k_NDu zGfwx%M-J<5&Ax6Av_2VpiR;$k2nAq6c!S~T`9n6lgm;PTCc&{6#?UakUEq}<;TK0| zKq04mxB%)c-LIXxiN+xnWwi>KBgZf64ByqV@whu}@u~?Di;)sIM$PQ80HNP86l?Ix z0QNeEhjcZmLv;Cu2&JzwwXOG=7((pE!v)eT1(8Car_n69&nA=(j8~r!U z9h9^~GYb!y|D3D^zTjnk?0-p_Qf|I?OdTYagcDB6aQ>_OGlMuY8qW6MLTf>)W+y8A z?DrLV;|X`d-$qK~dhdNU&@N6n3^-ZC72(gds5Jo;#p2r4!oY=YeuQmxWO!ECf-cKC z=gg-|qxJ`y)~RLt_YTRYZ4!Fmr2m%Bnl#QUy#y_gvwEuRhy8oC(gans~QrwrHhg-$O!6OdStcZv&832zA zvAt+;SactsDB}Y@Xx&h+B=KU7hxgX7l^Z(AW9x=pxAeUB`HmuDI_O+oqP`cXo&*0P zwmp~|Ae9t;|MY$5U(0gThBBen`DguK;3W7PV~q%_3iL097a&b(o%7`-(jq3t4$TJj z;N#N28Nj*>M2?y{{PC)IX+{OBzr%?*95I@?y}*{NiZ3_X0ts>- z)*6Uqm&2f@fNaep)zAN!S|gx_7x=?TdG)wkS2;%IVW1Zrc$XT6c~!7zQpRPi>$&zL zQvVo=Br-DQyP_G0b_b*G^Idmt(=E}lR({Z2jKVA@*XiNM2Xpnl>&6T|ZQ|C-)E<^6 z;Y50HA~0;Og?O;%MoR=Giwk_wMx>BDY&K<;mh(WL=iiI}Kn=&Q^(YYzTO)?;N7y$J zl74<1y$0(BicUO;Q2Hdo))fl^&8y5uILS)t1iSel3sy=x9zItiK(ZtO)NCQbzfmMd0`M%) zhu?|T#Wd@?7G0D2o31T(mAYYnh00Me`oaiDVA^ zH#Z+Le)i;W^I}rAu7MT(y7yEpRDFN)h=npcqtTY;=>X7+nM<-1qQ`zPyKt7_2(B*F zdQX{^gkS4(P&t*)dwlxeTNjoh4z!1G2-t8Y==mZH(}Q=d%aqDL`9MNA8n4`Rv7&exT|$7OQ#0pn^2tJdDlRSdX9jzIt6^VhhJ*5; znJMbg7~pu#Z@Yajl7Gs;O1MzxRv#d0wu(zi8(V`J`jq^sVJ+Wlv94RrKrl;X_ZsD# zz960FnDA+8p$1Zr*8Nylh{df(r%g6mi*i}=n|tV;xkX9ne$va&X|mPHkVIROPRz*{ ztK2F$O_jT}EE&p8Sr8vaV0n&yxAGEBW{k0^zg-TgaO&V_b>us@R#o7tUvYI*(}T8- zQ<4jo)%&YgI#4Cyt*ZjX@L?Ac8G;4NXJVKj6h$dI5|=NYhTy?`z=CyjZ12RCT6+0! zH=Bz|I3jR+C58@U8mPzTdhS8$z}cyW#L|cErKrpI|9QV7CKhdgMmsqjXO+par39 zXU~Lzpz}v-Z&7;?QhwV^9$TqBya}tOTn#9=hB0spcKz0;R2|@I6twW4Qtj;_7d%Nd zb;?e}?TY#r=`+uce66m23z*i_dTB{)NKrQY`FD%UpCJl(k^= z0W+LWsXIfaQc^o%c^Z(NhJ~@oJuol8bW)UHvWg&W;00EEi%ch9;Q{Jn*v5z(KX>lc zJ4jA*&wjmnI#QBb{Wnn}x*`5%p;8ti*xjDZC?AWYIw*PWvIMYZ`Evq!*WR}Lv#dFB zx1du>zwfp+Z*-qc+R1kXiP8{eQ;q{EiOkEuq?- zkty9uWs$!*Wi_IyMdi?>Qr$TRXk&B})-d#k<< zo|a_4$`FOnp}@r@c8(=aabYK$lD>qPHW~Xdh0GXc`C5`?}GS1gmN_=q|CX7@DP#sn|E2BVD9HAVr>D+i;lk!@J zUlbkI69*58Oi2k&4$Y)z306XM@n^5}uQpLcdg8>k13ZN9hYb_`U1WsO8d4`dTQZ>- zgudK0B~+(~)WO>nygKGCZ6puSoXV|EoW+Cd15H$uVw13RnG9Zan5>C$p!M29YnQXsU{y z5PjF8uVX$<-ma64U9OdN(;!ErE`r2{79G!)A*4R2ynPHnk*vgXFGvVGpFgV7dA=9< zO&k9YLLEsKCsCpt#POoj?9@h^Maw1M)PTd&ssO2fVQ5>Lv{n}#npL-ji+QAC(+h_x zngLPinDJ#OyTYOA0kY3ok&Ci)hU;zp8#qU6`bpH{%{Nh!-hLwN$ZS zJgV=XK3(j_|7*yoTpO1dAnq3x++Eq9&(4}lTyzjcJQ(fFtGs(+^^|3NZT26NlKW4R z0(Cd+vSfB>9H9O$d~DJ1A{Q3U3(UM$N2#AZ(DZ&$lAru{tjyU1L`%iWI(Z&Au45Zf z3>ZaY;1+kv1lUNuTkCvmqx#TqrgEc%*mH|tdLt!T@c`WyRww+Aj#FY?aiX;hA1J~# zzo7DRg*?de3L*$;W6b1V2l9`pftL*-Fe^ap24p8dp9gKAaLIOTVeR@}Xos>$aJKp? zd;F5K zuR+Ba8-YBRie`bTxnWo-r>%@Z)2%fY#W1UstC5+g?N;}`{owVZmmc;-t#|Mu6kp}B zN4tem*Q#Py{K9gMc`!Icztln($q>Rzs9{NO74H_v_vlL+$9>UgenXxtLoPbk4cYM7 z)ILevMkpekBy;2ZZ2A0lSdO0M>yUV2Wk;$Qe}f=k=iO3K%S$aOeAhzSq1nf;)5I&S zFUUf~W3!>;g}Gq`rT@xqyLjGg|JP zmau{5t_i0<(%e@z-Dmm!+ImPX!RtjA5ELxoiKVAnJ;$(E$+NvvMU&MJxA7O!!B5Z_ zVx^i&5EF|eKUX%JRmK9jJ&}I`B>aMa0jZb0pXt)2bYF`F%zt{=+}3f{@#p0$wVbA# z3_dkA?+v&RIYn1EP$XM?4!EF94)-uqef{X4{_0V;LPU|YMvyP?9a^{>W;?p4Tl2kV zBlzGS(J76Cx%MZZe`I?gUfCf_-Yhl2{@g)z?_s7GK$>yo+j1a1CUd%c^JDO6r%yCJ z^U1Hl1l}%uR;#Ddt9SEClSR*tL%qOhyl5!yHw%DJvK0-+ zBU))3vjy6#%xllKpYuH}=ZJf3Xw5AhS$|Xqc;L~&LE8SCM(-~Q{G{=X8PoaQqd9-y zx6gekdkk#~G0R^uZV)>n@f%ZOl1=?5x%Vn9o#x=LAR&(te4S z{5mQ;lQWjxFH2z`$ zOz9i!^dch#i8~Aqn|qF)vJ()QS>jk>e(pep$0Zyh&{Ps9dV|r;KjJYCZ(Z#8-09!2 zjsG*H4{>DavemgDi3Xf`di^&aAQ*@enYn|)G(p{veA)FWDVgu)GRt+R6%&F3wnFuK zNSCm8xz_Ef(8|mTB-5jr>*(`m#@*5erHC-usk`0rVQSB%9+e87!vd7fhE47=KwUqp zo+cbPv&VcNjA4s;!Vqcb?R|CO1w~P+4%^ieKe;P4=wdpsA+E6V_K%Y&B#5UVkk_54 zwaG-?;J2jgI{8`i8Mk3I#$ka^VRa<=ADyU*K)A6R7vc#_G*90A`w}`vcLBn6qg1|Q z27PyTDO`{Xy2!OYsj$=pzmCWnu;gnYH&m?UYd> z$F#v%AS^VHw;Fi88<;b2%PwtmxgkG*h2^F;qnyI;RIn28v#@65v;D9KTA729y0wpP>Lh%IW2Er>AHQpLv^)sb9_gdIY^^HNo}jxi27Y;GF9lOUjl~~A zB=C2xYpn~#;n>%ox<6fP0zA}=lh(I2zy96ZAp|iooAj^IPngMFHj{@Je5RpXTY=$M zCbX}sJ&Q}I-wV^F1lAWM8ppeR%!-9^G)h>y@hgUCI@;B=W~-HKb<~6-ywJZs??!#S zeZeP~FN&bD93-(!5ZlaD2Ceay&^VI1GK*IA-;l3W1)Vkfq<+NwBZ*GZ9oH!sE2=0_ zs4U@bUA#|i$M&{jf3z8CHW($kA1h}+!U#RHaWj(IQ~H^$aJ)_Cj*u7-7umN~tBd1v zXD%O(p^toCD8J^C{#u`@u&(|SK=va+%&_8HpMKY@{;paI?t@@_hMkAj#K&!FAfzIT zLhgcaKe&E4cKW@fO8a5(W|exCMh;52$L>?)F-<)7$28i*8i3sl5ZtWQ4SlQ&WCf57 z5IfgDH!3+X$w~DoEmi=*5a-U0oKQ%18smod zz?&_(*)o%ZmD_t>o-|IL3XeNYiAGCJn_pR*dF`7{93xb|XDQ!90eeNE&t0@eoH@=I zT)L_3)IW>1N*=Ht1!0mogPs6DPS$+p{$Phy)RjvVp{HU-Yl z^k4iFG0=!~btBwM4ND7G_O<}>=ypfVEDBgGVXW?&{-oIcqnv&sOh!TD(<#_yzzsK;i zmzJ*2Dy%&-Wg|RUml~`u1}pxHbaD;7hG*DaBbj95*bk6AAQ#n}&E+pMb-|fbJcDXj zFIqCu^O?vmZhhu`sr(p32NC42Gjg1wl(2;&PPFlAW8Y2&X)C>(kkku+dN_Q^}0PCM^628@%CR&F@ezh_5e} zHS`|4AM7wf6}%QOTN%fAG>StN%jMgtlH-_?4Dy=AI+&4!fUx7&?rAdq)G(2@C{%7RURoimw1@( zU^A9nxc=Z@=B2yXGrW-`Az#G0>tn#0GU$PF3|>svia&7NR4+rouV!L!{DKWbY`O7Q zjECq;rtqwacNl-_#jP{sRRi7iQwGtdX=7ir7uL2b^BcE0wpu zXnQcdY?q{}>O~#uMMHxGguCS#G=VsrgipQbX<+4#Ct~40g~RZ`Y#YjjWqXZ%okAZ3 zKD3UZ;QcuJl4DK>UyILzi7a6{QE=Re^6APKNRkG+^d2SA8DtpVFAFV{{dU`Fqf%r~ zr0|BAU*xW!4?|`Wh}cjL zjBMPb%PFrA&gP^AdCQh$i-7zUb;2|(_x>VKfFW!_pqO}j)vsIpt_;dt{p2=X>`RT*%oM!hkEP zzfPmm_5bv!HwWYE1prH|3OZtpArpt=(PO|`6_t=B#fRq=F;+^LrxygPi|w<#7ccnR zfZ_tco#7(ha!V9*5aF&bRcap7b35aHO@2=JecoCHKy~mhqU+wzn4nToBK(2;>+*K(b!+@MTVDedaF}j2qJ;G;`>{z~WNN zbyBw4DK^al87}{u{_2eZIY2F7SQsvUC1g0?a)cTZf)7S3TY+7WiC&NNGJg{5JZgo_ zK2_Rh<>1LQ8eh^L=ElCdE*iTZl|^ceq%xME|j1`NHrA3JsX)cW49uy63sL+tjwfc0;|K|`m?4&wX)p<%uOX+bV?|g5c5{pmw zarr<^H*aH5;+Lym0U2W@)_@{wSpT9(%1gl(GPlN(_}wL`ruC?kQrzyP%2@RChYL9` zrFxGjdgu4%&Z50;?i05BL)11EEi!sABLbg1|+ z;4b4n(LVTrx%W)wnnkme4-*;@c4a*J?VG1Y3-G^N?!kTe6J+Y9^1fAF3XbyV*69cx z;Q)q6=O2~^{#*7UYyp6W`4d_lkB zuX7RIxBYfzkppT5l!G6O_Sm=b@nh6n0|gon1y1S{qX>ph66 zo%Pla0{NIP{EzPgwpXcLWrj`)AQKim7+@Q(?yz0RgujvF9HGWo@w5k3XO)>t7AeyY z=#I9nQas+9{^aGiu^ZMG;4dfiT3GE;)4>&7BI~E_xm?rgF)ppbpF;Z1d|%6drGrg{ z#4XKQd1{%Rg187^plx`S08-C`%Bi=y*+0In{nvu2aBR}iQB&MLs3-cVd3Nh_b>CU3 za@2DYp(h5l)Cr>C;*iTqFK(E}uR{v|lt;d3nr;xKJ+*1Yy_r?+)(2GqdXwFz)Xt=5 z9El3ixo8kX0OHrA&d`W_F<^f}=$UpcZ245^+RytgHh1Ze#h~_}2oW2NGYZ$-Ydc3? zCU3YJxVwNZb~gYjZIop^Bs@n}+*}oJ-nb<9n|Z=PKCI`3W_?n34&Y3I$dqP|*@0!v zecZ07Y{H=6qz;oRUu^z^zEUZhwwEN7XIJ-Ayac)oE58JvVJ;Ko+Iku;Y5b0Aai7&> zMiN2UvynmhPHPn*e-#jYKYP9L%o%B#41IkXyr}orCWvgIu`D%B>bwy>n;TVc^ zg-Krg|S?J@|$w-Yv z6d5Nz2L<(H?_GyDtOUB49BbFP}CLV zDA1mGt0D4^zRm5o^)()}p|1Q`+YAS1o|Uq~D2S_aEeuxcCVu9~w<#;Yw@52%R~K7h zuk}=bbB-QvEpcf@>Iq4dd!{pI=jSrN2NEqc;*v#l19B%}A$A_}HA-pE+A>F7uyK0UgaDvK9Z)VDR%yaaN*CHWhTP-(ECOyk=~eH@u)v zehPwW5mYGLI5*iqwXb91erAmoxaA6b9B9ao+FGtYKXa2eB$3B;$b~|OQp{7e_(6c<3|97>7Q zemmQc6a;sKfeac;T%)Y&VaFpuq8|d`Tqqf(s>*iaB$2_Tb*?aal_nxy6 z@5v(M#Av02v%&oTXgw4!@E^J=;FH9+tayC3)2r(J&V0b!lKOcPK^nV)7o`E9?QZS> zS41XSUyY>LWI3QEiQbd)$-7{%!Th7%$Y<_|Yjk5n1Wy?`jg35)C8_sp{`2>Q5 zIu|OM8A0(puk2XVkNGWf`G*(Ssw)mi;3{M|0>sOpMjxWK64M^P&J z@h#nyOnB+B#J81c-SitlSB|)h)8?+IQo1^^a;(Vyv@?C`BZWXU0bEZj-E5*T+EcgFu3JTWe(R{8J(+k^YznS z{Qx2{uZjgnWWP-1I_7ewGv^GaD`H_BzT2fzq6r9lnusdyc5a~%8w>j#lqv*v$|8I2 z_5~%Zs`@Kuna|#viyeM7Z#iy2T>1)*C3NLGYD9g|Af4X~LH$Tgr1n1L({^ESsJmpq zK|@*UBgSLrD7*aEk4R9{5_T*^qxgrr(y;lF8wgnGfo>4zPe(%ar~Q!OqK;$qy~%98NxHB6XKjh zQ&HY;ngIt04)obE4FYQNO{1PnoIuzKyVmOxceZB_eLlZEZfTKrt>SO8X#ji83`D_SG}tvix(Gk-IBZK2}tqD zlU?nspiwXT@=WdDx4V&cuRm1a_!+L7!L6gOZYX_)0~aj9&MpaFI43iR?JW_(M>Z${ z^psOo+|o@pjy$-RpyBN3UQeo$OI*<{KX#dHHVNuOI_-5|*n+~9%erVUz!~sM7G587 zHd6yHC{#Erw8fBL2Wja7g=CW~U7Fq8_hjU{q-lLT4{70!l_y5W`Sv^cFyj}SbP{`W zNW;Ivdz69~l6|tnI0FB_S*H}3&AR1x$CLdk4Wd&5&cmD!XK-__W(0L|u*o@;v2rE? zmVvp%J#$KB&EIL4JkC`4_A6A=#@J&?*-1%$i2;{~2KBIlo+5dpt75lYE@o^JMqu!#GahkoXT_%*3g_5twsaSWMy*$W9$*&JQCO2@i-r4K<;8}G!3z6Et!Bn zk`xGvZ*tA4V5-ytG=+Ks3A0XxE7-Q(w60$6huE`31JX$j&p@kW=e-PGBhP7r3%{EA z9a^X#p(ic&IRZ&gwxZ`<-k7i(S9`ej~(!gBv@>?FfyY5(xf8;oDsI zP&VWpRZ22srEB*=w3YI3NWk$pXi7~BXkSdzt()$ zos)jkADrS`xFX(E&z;{ZEFDgLQBuN1&FTy!TlNccj=)g6Va#*B%2lK;qoY#7O+;V` zl-LOpr-Aek5KLg1uL?jL8PkS@|5QBdlfxw!$r)5~9)u{jFFn6_OQIMd9Q{N0xmEuD zL44#bg~6YKH(12j9Kno!1a>$qx0m;ep~o8}Z)Ydh-OW6Ss=PZBu-r~=$K*oa+`-3kO7&nUutBBPoa8SwSV$UPyq3@YP5v#k!eOze`0} zIgG0Z_p2)>hwJj43ZvXEgw6SIxX!t<+}KTwM-x3S%{wbjA~d~|qlpxraUXGVy^`>% z6t3e&zYTTUbOpI2b>Bwx{07^)a9+zzE}Fa8-h%K)(%=G|U&W7#uPjx|`v@0+^e`{3 zZohQeN|21K5EkpwWdmb8L82g^3qRs`Yoa*Q7W1MJ6njQqC&r_9{A|uo>YLjL884_C z;zkb{>gWPdq#=}O(ZF9I+Z{+UDLM1?jkgh;$)ECuYO8^Dly9l}AT0VD4sHEf9wTo# z(Ws*@Br(4#e60a-b``i5AlL4aSCM9+d!Cin+9#TDG@2%g6^*d!~l<1Vrw?!*uw=)BR zuHi%ltpcHeSj@LIs0R!L0)X;4!5Xyx>3kG8iT@K7@Hr0zzYSW15S2J1Bh?pgaVnt6 z@CDj825tI>m*KLU7(58W-U7i1noWqbe6IWmjediL*W^^|*f#i9Ux;`eCh2>cjcmoS zHACn*5XQ}dR6V}u8VGINxb#&QK5BbYWU1uXFBH)o%@T+dF|VX+WS!S!!|{AfETGZ zh}O+#3Nw_rBwr)T15f)LU+fyMTIGfZql0){&n<>^gb(n(2_y#vLTk?zaW?fB-fI2Q zmtgjgyQjnomGMBevp-Tr`D`GEV<+fI>)m5%AmtrME{XfL_}OrEz`5IfJa^j8L_=ex z%FQ6{D{8_fpQ?*zV`i;#j9ray*1Jmz2zGe4#^16(lXZfVD|(Yv@tDqu%CC;bh6j&v z<{|`VJ9(}9AC>>r8vqQc2*`e10@@%r#wB11-#MHCW#X6t?J4M}Ol{>yE-}E7f z1hK$CK&;13F5MRfppeWX3ZFVTFT6b;Th8sL^^}mmSuMXJa1QugPlI`VU?kxSYp_@a zo)%b5zkSXb!cFlC&r0!mZ+gzvp5ael$@UoFF%Q8FB~A`V!C1{NNWeu%;NRp zWczs`Emh~k${*|ccK`QK`0pLWTRV(x>-najtDb*U_$2Ec8R%A^!jxcdtLwR(oDBjXUFl74#_dZ)kXgAuna~UI4??ene9Hv^YNtwfPHD4 z1(;BoiHp&It8R$tm}t@e8GWQ_?j=YccYED^dN=Hu#dj4?HC?d^_Zu!;z-93?o!C(o zo?kh!K^i?_liX3QP1V0T@)QB1KH*>gSv`6B%ziJ88%5>Cf}8-fG!_N_5@OhyDz^h< zyNaH1oS@aI8W-NSw*z6r6NOvgVhw;vCqf?y&<8*i)vtaW5Y|8cu;$$<;hfOgs+(45 zJ8`(aLvJ`twdXCsb8yG-+=G_CTOlJh+~iFGCSXWnz;2Lm4a5SdbhafRVV0s(zB^z= z($TOY9b^W8?kK{07ca}I5YcxY+hC_nXd|dLgbw{R>O{BKj&BUpfo$Za zoc)8V2P^VeKGxi{!@@MtjMvke{UU;cR(qf0tSY=~XO0b&%IUauVOUq_rmA3>p+HI0 z5D#V(W3?JFpN6S8v?;WLAqWru*exc47B5w*VM~0Bh3_79@xh z_F;mfdV=OvSBG-TJ_<-6;8nbU6j1^2{r&)=`L9Dqx$lK(#ippx>hRP&#aF5YIx1D% zCfR6#%wSW8dcfM>qPiIhEs%qa1cGS88nlJ82$<-P%jtlo+FKJ0UZa@*jzB8(w*(A? z;rOs4)#QDe{zuMdAC);DMc1pQM!D`vW(N&wGev%?0ls)$JNu)xaA6>Khsc?PRqACg z-R@_qy+ykKl8ay+)#A)JuJlDtrrAe1ItWB(6L*|vL*Ti9*E8xwd8vo_8nbct5a{X0 zHkiBq$T#56ZFS1Z)d9kiZzOy#>1+%VckH+glir87BG@>kO*CipX|}OQR;pB12g}a) z*xplQm#u*MnC|cWunaaxh|nR%EoiuSxv*`!xC^*g`1|o9UjRM)(duc<*`Y_ms`R(E z?T=&a-!&F;oI`MO4<yr1L) zMTca-27$9SE>O@Pj^3yEbM#LFUpoymM$J)1m^oP)RFH*yhtSyd%n{N>{J4B2trA13pmmqldFS8o2a_5e})=eSQC zST5hC#=Lp^Erkv{`{IoDjIHWDt*^oC7!=Tg#1VaPB%4O!ILW3K1Hs4RAn?-v@qJS# zIm4cBgd-jne0|)nIs1CB3XWUUMt)K{HOpB9alv$tT>Qi>(4Ht|Y0@QB@Lgyk*PXR1 z30T%Ez4z!#Tx}B)UUcfzbc|@kvpENW9c5SXB}1H~j>uVpIUo*zK!QC#%8xfe>wiLq zW*{C|sP7KsGT`rJ=(u*kA;6RdXfr2#eun-zm!k&{i@nuYYu64Y(Mij1^LDiB6DuV>6m9e$`Ve~{!?Zb zibHYwu@Pn##F_qONv zZs>9aX4e_ConrO{cgx4!-Y&8(%~O+9nv%4tHEa_t={30Hs5@O{{}Z%)Xdtea=9qXadO2ANA5E=AaWK&5@O@cKxzah7LAjWXDgH!>ma7OCPPK$xXN(jPA?a8YCRiAhlTIZBtv__Y> z1UKMQ6Lxr@ivyQ=?<+(N4c~>p8sw#7#Q8C@)WAq2a6xDjn)~j;(vyRpybOv06wl-W zVqTDs16L26*#}rZN7Aj~!tu=xqFkd&z|;5{C7}mpC8|ITVc2kU)d0m1c#KD3#KC8N zwBPUvIUmbmy4)!LKRS@>`JQ+v!i3ergejGYcQiUeSquu2{I8VLO`Tw4`|DU5Y^bIt zGyzH8xko;JG(9l#RS!2J9Eq(C2SF^ohLcNVL2F%ycA9#HEtj>6M^g0hJ2MOL?9RH zv7YwloV^ph$#WrZ-n>$~s4^j+F$jxN(EmyWKP+=EyHG+!Rn?}}ig9J}V}9GThdlgJ zVTDZj{LY_NT6>C(c2WIJnrqc+^_#K5Co77<5S7J@zU56pUPZ`6Poz#(`_YejsLBZ{ z^5As!|Iu|{QB8F3ALu7NfdoSD7Pi)qtQN#Q=(ks6jzN zQK`~3ND&JdQ4|F+cJx&_`JMmWS?jD^&dscu*|R6le)jiMp!tRq>6f{C-4}5O`T*s= zMiK5X;O5!p#G69XwEE`Ot;NItG!TyWS3e!X-r2d1Lp=IHb9hki$n z_|Y14-sCb=yCyn46P>(E2<#FYN5#o`d z{c>|ZzS~^>SnPhe&4bELlhaG2Xx@2F{lr_iV}(}tRc#Nyu*_F#6MUvlOZ8d6xdSpk zuIx50guR9js8@ST+Eg7DMS04i?FHNd9079vz=1QGslLGJItOce%ZKS_H?lSq#V>t` zQ}s1`A8_#~1)J#76@cTpbA6$%L+26^pzOM{y29Wm_y8$P*8|929aT&|g}$h%wSTp> zLFKPD+xSDHuz4p6r-tG<<*Wr(R!F~LVw(4GkUrrC-VTfiLJ%oGh|6($T><=gxjISXYI6pxSbc08qv<7M(N7j@XN z$xfPK!3)8&u?{@=>aINa)Rk{s5(xqSe=$Ee008>Uz!m@z{s1%_fWZIn0PO$&!2ehI zbLFI|07i$b97~scRR@1E~+hBsG&=C1_3}k_wukv+QZ=8eY@4 zy^dn)3S8LTnUCSEn4Im39f$KJy+!2=_t<~E{o=wJ2M~v*Y(G!#el^IFvV`9y5Mtm+ zwp+e($n|&%Mo9skMl+#$3`i&5cC7w7;C0u|ejPp@tdNK1>v%=!3 zX@=_=Cx@8$_fI*y2J940SzLi|BgNG@E&Yi4dg)V1#7;hhVKPdfijvVl9^ea57^wSQ z{Mn!(444n(GAl58w>JmoN%NZnMY}SmS1ODayDJwBU*KY*eVanEUQ*%ZXB@<&{+iPw zo$Aj|A8E#DO2t>yd|M>ztZ2rafWnDTFt`ZM*&XENNI2pg0ap5|p6{zdnPAm`VBcB6 zliYp#SdImWqvdsg=2>}9voYmNk7B#7Y7fghtzDue_lJb3AUj4K+2l?7yoQJu_Em23 zi5_P~Y6-5Zf^LUnO~*G-bouMN(nMfu@2$b(`IWVK=0 z2j$uCbnkhri5gxPNSibme=#cwHTvBYZQ!uJ#UA7;!BtH?W%rU9;=Y@t_9U5)b!Vd6 zJAOZL6pbfHCiqWaLo0A@8~dv?Iel3x0%ShkQ#`T;iodslY?li9D-$+=8}EB7J1OQX z+W>7HEz)o7%|Eki4C~hmFdvM%i+4S-{gI*Y)B*=I?Zdl z+A*<^vK|yBxc?GrSXs$Gw5D(fPX^=c4;%QmcjeP`%XXcWv4hkxLZR$D{kPg@ zNc7GutTOC}6`=4^D@Sw#^-npqkH>Bru_`Asuve~~;bQoho! ziSp+@$r5SQ`=X$6NxvHY1W2N>kc4iNOStVTuen z5s5|heS*q_$jVoB@*f%A;`)(#^{;acm}*Gf>KRe1QFeYRxiPSnjzVVO|D=f!ZPVvY z`}0~uLkqyI#$8lvAfyTq(y0Sq?TjQa^yh{7* z1Z^`R7IvGZGfiy(Hd<89-;^{W3MeXdpb&5G$4HJzNT~Rl>R>M$uZIc)%^Z6y3nw&1 z35DT{IJyrc!*1)zIBICxYae!`wLDvKF3dEcPM8s#t}bY!e%U@RIH02* z@~5(+6sKU{b?VU_Epem!gr{M3gD(tb)lfd3b@PTKdM$h(JiSvP=i7Cke`&ML@DJ#> zjwzG>TJi%9=Xs{VJ=}8D9W^di01^Q=JS8|BtKh=}tF1rlQooe7U5PzEDkq1g$6sMHT!|3)#a>`A*2?m)(Z?e+X4t%DTk^(Y|5Yhw3t00Fb-TbaB%wptcV7nJ< z`qr14w&b!U$o6grEE^IF3``Ce1Bq(Vl2&SB;wiJj?ajL48^Le~a;`Mj_v)WF=dZjd znG4kMJ6HQnCt*=khUN>zHSnY@G#C0VnJ}#BIoz>sC%>0(65%8b2s-#Z#xn(osB3@} z9}3YID2l!deZ$&chBYmD3{vVV#QT6Vrg=^Dw;}!L=&N(TG9FBw zK)Avrd84kFpfJ0oTUX?NceY!5uCl|+?3vcWOeD?|Jr&EzxLWzt?LXWUX%*XHy?%BM zQ4#DstWox5(}SRWD)j@4ZSSF#;x$b%vH7D2BgUJR=ykX9%b} zUFeY6+-Xs3qpAhm{fqN=AR4{ACS9U@ztF2fZnM+Gx&~VWOfcbQS%)ebE9T~sXYPFs zHhfV+e<7y(Q;Oqy-NLNuS0Hp^0AkDsFs!}sL@LDLzOL165hDIPpLzfI>6eoKwbXJz z=Jsx;{^1vqn4co+yFx&f~V`Wlb}bJ|ECj811#`f-L8M45Ed6-?GwcX?*4* zkuG(+NfrJX?N{CO;ld}x+&Q{kN>=W}J`3q5N1ouWJ~1^i;lt3m@Wfl%VSOQCP-8g) z%qHNFd%t{}gz@e`xAb8uL=vhdTs@0Yv_{H!tGOBdjE$R@*{5y;syTj@2rHe|u3m6$hi>7EP>I=w64-75w*9=E@GZ3n8rU1#Ef$#T zvSItVh{;TgWD{sbEGdkGs=5_<=4Mh|i@EtlGm@j#nI9RWs7&)9rLC`Sk1Q3H(j{s- zBV(4{;ybPLZk^by)BmaZ(^Lr7{a zG}VYXFx2>N8A2$aCQN;~XIOjrO7K5mvREHe!| z)YmKM27M%75V^Yw_Rtw-gin^CLxrB+%_zogCqF~{=^Lw(w-RBvkm9jhHg<3W}t`d-iOZrjV@t3Ctugz zv4w}7l}4o#s)o~*FOo4CX?wj1sFU1FXFxP74RsJe_CXQ3XIVQ)hqj^M?lk!6$4v^l zMYzG-P(JER8fItG1sB$ZpNGzUPdXR*;lk?X<#ZdEJw?ixT@Mv5SjZrc3j7Z(Kp!+} zyS<`Gw>1u4f`j9T06xkPB8;MkhjS1%GKXt9SeL5ZzdA8q-$S^$@Gw03VDPc&8ytLD5FS;X8P-Cj#7ayx0t0tdJ^N%R!+wcXx2HGlH%e zE;hPW<+gCo(`(UJ1hH3mF#$o?r);~Qn`;v%Wc}dIX-E-KxHtEf7nghBImtS?gS;w| z<&!<-oo(Q2`RDyPmsMu^G*d-MBREtvfd}vTb=^>O&jeNGC<_xsFl?`YWeAe{%b}@H zVJ@VOk3Fai(uFP#wkr*jz!%26i$3%*=wRP`%f+qH#MZcC&uL=!`$Y1`(H(4@P}lna zh)vewp5ku~3K2pM?j=F&e+VI7Tp;Y8=U_89ei>UFR8h;VoI7m+qz-RVlTe$KY(mKV zmwOe@>`JTo{8UuQwldrFtjcBVH+ z>hCpF6SF#c7n&x%pa*FDL9;lhQW83Yeb43+V!^#Flygtgw!=mjb&XV(>6cCSy$(!v zH$CkLX~TZx4toTPHsV#f`6%x+xPBVcpcbM9c!hDUVs2wBYpe7^``vj2VSN6l=jcXn zgN+6EznD8hv~lh~Ty*h(uAR6cWe~bW5}!~SG;J3@**nTQDsEXPZr3iifyWVE94GhQ zN=QS7gCjXulO;;M)AU<;(Q^7NO)vV88a*wf5}z1j}yt@TsZ~ML9l4=kt)4{)i+9gyVTGk%lS75ATuAhO(y>jxod9FVjBo z_8prDUU%xBasOu{ci*FU+h2$yh%5n>1Mwn<1x0EAyfO`G3m|L?kwT8~fBGQ@H%$O6 z>}UEc#BA#Cej$i|C5WH2oBh};em>%vTm9_2cJV(PaiQ!c^akzA#cfl^e$fVK}AG;{@k7{W~TkLL(hHn=l3V3I>t*6W8Yl6GCSc3Ol}iQ z8xjzVEt-hedDK`MQilsM=Uj94Mxb%%#y)Jt72Jxq*lByQB@id1{Fa1pUz&J*#KZsC zvyLi!=P4=Y(r4r;vCr7&E5P#`$HXfq2fy=ilX&d4zPbFq>3ku2h{yJGL|7b=e(?DM z;pu!Ic2R&OdY#x)v>dWs&VzM9%znb)A8(lFmobl95-8v0quhDIHUfz8P1r#$W;esEeedlO9~Y>)I=R(%Uux#jKFLM1?(*W8fW&>*jJRrLAdat1`|-JFX&(nytGe*MuXWBP%VNn_(AN( zF|jZ8;@`c+KY71=1mOBX+%NF%pSzrk3FrU848gG)L7=*PO`Gxlp~LqO;u z9=a+*&BO7$SFalaUkqNp#=nDlum0Hk(y+g#u1078UPzgGW!KTMzjWe@uK!7X*%Ei^ zseVE!p-mL`R)1xR-Ss-1_voU8*9P~BXe(5tu?k!#Z<6kFw4Sa7J@doOn z9!bN_%dDQlZG1}m@d^Bx5`iUs61zV2Qt!{qwk^d!ePU~X*aU5=>WWY6`C{!m2lvz9c%|n4f0t^<+(!aDI9T>3}= zwiY}Jg}@$q6U3~@{952uC+LGJ+n|SGo#{*Chi3ve>Tl9= z0E+pXD>xX|UyadBlz268aEY*^S8H0u>ChLeBIz-|4&eBY*(+h%{A#dY&w4)d*6G&< zkjwse8Tq&*UQscAsB# zl+%6}bnAnOZSs#g@Sv!iS61+(wZ*|-%ZsN*yub(SLeGP#?N`qm?ScA-w*M(_1;ehX zOV<7CXzJ&D(*K7Qx%ggN5r38zT-zq!Y8A?}Kp}E8rI$_gCh9ZU(21R!zrP@Bf1mYB zCY=BAe66)GQT1b+Pgm`}DHpqdiS2HBJBpB(QSE1F3};H>L$}qP zvz!09Ij{|Ty@}^Jhf2*Cr8`}>U#vciR0`Txh&Py&y)GcW+&*(jbuTOVs^L8P%NXH< z;ZVzHn6G|Ibxi2wMbe?@7esF*>t`dX6{icew-onAwzZm-%^n_8is$Hx=<4|RRouS& zw%5O_+2*#crOz43@0VVrW)90N^;(apm>(NYx)}WPRA-OfrK9nU4Q*@qv*8;|ZBqR0 zJ1D#Cw-WxKA}VgOBRebn+l7sxORXk*=M~+}B);o?BryLte0k37>+%X}wrS7wjX%v0 zX-iP9s$SS8`fT0_#tVsvuU^qrgmhrn}jHMlY3 zGNd??AA^V=&JJ7mx>_IFT@-n{C4>RTP<2OWl{wKxN~ciD=|jI->N4`f z$5guJB2!#D9x4>L)r7=nxAHdI-ci$kK2E#6w(p@ew{Nv}SCufG29Ae(d3JKOE+b1i z{(OZ9F7WWZxqz?>sWBoK_Af(pRORE&%iBX#C(;#eOt+_UCnE>eL+@^07F)F$!{81s zq9lWd#BBBDE@ti*u@Z#Ct&UfD!Fdj45(kst*KhF03VuKSqC2C$J$*h)?YwqdX-z_< zPyR>-xgdD?vHf+ctg6uSuFB)fnR5Z=*4tSdnJI=9O8@=4wcBuAiu)0x<^C%qyk0fB zDtc32u0A+V3$F%{tscc0{a0w)iaJ@Gh2J7N)`r(lLc7+maHSDE%cLQytI~Uy%8AFU zC)HgikJWhrPr*kcU)1iuwrW%T^7YZ#^SOpn7HKjr;lpa7>B8n_i9(q4!jC>V6`Q;k zwLoLX1e+-IE;LyTB)FauVJP54z{4u-Pc^Bx7`yU+`KX>_9hOhnT$C)D5ry#H80ks zP1uiGms$B%%rE-oPS)fEn|~O*lNAwEUK!fi6r$`K{N1QIc1^*lrrEr=9IIN2vm;Rh zw;{ZV4vT4uvgPOgEN6*mV7@tZtmm8g}%CkiUHniB2 zaX-?x{U%k~=u3(xfA&898GP}F+jF|BeL|+5T&E`BFO5z{t*NO3_a^$tBJsTm7|bB_NQWwtv9Qzt9}j zNQ~4$aQ(R11-9AUW?Gv>AN5L9=_T3B)TUDf_PxnI zaZ?(p@pB&nrxkau_r&-dEFTWE5mJpF{TB@XqCH}^!|MhryRBpZuje32NJ7X*xO0G3 z&BcJM^SGkm4Yg`L)IHX&{r8nzUQ}nD-H#aA`HR?^%q_Bzu4L2bi35yknIuC}M0`VU^lhg~tLz2H-9r>CSG;Zg?I zFT0VXp>WF^K?vSz<0GUjdv?bQ7*oH(_{U=h{Z8#m(_-&k}@xeb2PI%(tfQ>A=l?KnvnH$bN@*MP3%|w zNBRE5A=RAAUTWVsDCG`1PTw8*{`*k9%`Dnw z0jqK{l?79Nn{(Q_^LJ_Di}+i6I0F*f?UNy~w`UsueM1S`RfUcYT-FDIRWJFVn>D1S z0@>!$cIVaB!&!9&$GD_xwSQtU#b2L<|0!X>Gb-a8l9kJsS>~Mj4jvs=^FhkYh4}1Q zY1`l%QriWqb~VwUx>ur}R*c(5_PGad@MpBxmS_?Iz)sr2l#MBvED}s@k~3~IrRf5G zNZ!hJ22=wP`>fg@<~^#sX0dviS$OB6N9c0GqwnvV9!kXg^fFhJU%N3MSuJtIKa6L7 z*2Vdz?7^b(7?owPU_3p&(4sFKZMO=!P!|( ztJ^wi_dD&sV_H8(b`IBXorav;&xcBcSV8%(N;B)XMM5R6T=e?t(DM z4;+*NkLW?ZI^4gw>-NAGwBQn^IESz+hdH)+S&N|aPl{2!M%Un)d1PAt&AepKWror6 zIP`6CxfaF2`Eg{klS(Rl(H-+26iX^lrDyvNbr+<$=I`!?6M6YS&p@m6=UUaaT!r_FYoSt7B&-5DQvoSbAnpDTyTt2UTSq3(_3&S20FfHYhd4S{Tev7Ia#j^3H%T=J|aT%@W=Qa>OqFVPAqBnOGS z2b!C7A6rQ6E(am&7nWt25etFP=&Iff3lh`Y+hXr#{$@4x$}?oCiBmDRARv{DIxnI4 zs~ObC9$^&-={nm)hH4r_me4Dd7DtZQ?WuI#$OMr&;MV^XLe`!CQwSvqcH%_(?qy8RBq%9taIBkXcmc7?fd?)~ z%pGb;2+dFGo=gfx+528mOuqBm-6_7u;sHk@uD`W}U9g{rpa`>>1)ai7fP&c_9dC9B zw`G*&fJi)u<4@s)2I2y^g%JP{0)*2(Q90W?^%%cg-eo4_A_>%dj|cUz{*l3ZYj<{F zU7f{)A-DBiG`P&o;{5%6)g9AqN!9tOwDHdZ4gXFS&+g=Ouf?SoEOa?p z*)7rTwFMzU%Kb+)@bEpnyEm3CidXL*qV4|PI9(*t6P4=J{d_uZbX=txvf$V|^x9fu zFX$8iAn?GV|KpS0Abc+bk_Pc`*y*8eRasYN*v0fl=i$*1aUN)I=BHKfT5R>W%=Ll9 z6^Pj;e8-^16=O4puU3yS(u&J2GbHf_j!!wdva}m@th*qQ11GjZ@;k>IWxxVy@VP$# zX9p(90C3vllfp6|9s;R;>|O==6QMDSimp6Valerc!jfKt(0r#T&XMhxTZA zZmnJwq#fa(WDh1^nMcul(ZRlD)&9C&5CzweIvd8zvzkr6(V6wdnvW?ES`cp2(--Ge zOnB<@{VBwA&SVk9lOY;BSRf0_Yt%{$ek32!qGVqZ@TX1DN&M1<-6cf}M*!3wc{qXO zY!YB6!U2k{cnzh2LhBIb9hS0!u26Y;$`hi12Nf5D0|9#HZdWcWUPV`cQC$K`Z@9fE@<^T=*)5)dS@Lk6}cR{gKrm17hSM(uokoR!A9P z>9jfXQMD*dZ=7u3ps0_+2y2RwhVxTteC@Kr2L zag|jKW9at5EPF7T5)HLznMVM;hXYX*@VDOQ0g#)ni~b;TG;%G%H!>DLjRHcW&qW@Y z-q*Ozv@^!%irrt9vT9+hNTGwF=TP_bko-NB?@|#t%{9B%|W}8lHYe^;pQBZA&ZB&@0;Hx3r1Lk>jZ!&wP?CK zXiHsaNfzWJ0jjaEe2c5Nt6VBierN>&H^T#F|3>i-r^=jwjFx#Vl~>mDJ20bwq&LH5 zRK7T;vFk{@vJ7B%?Cn-5I`$-BJxmg3UmkZ55{In|#s)L{<^f5P{IdT+U%lA$hz681c~7U1eZcl zgQVaR#T~~=?o3BLYWG^~wiW;WbUNGhQIwT%I)usrNe!n!9O0plMbe3zEa+x}_ks5n z=H8Nt{2m$bwhU;n4<7G|?BwOArAz9hvw}vMre#7B6T*>Aei0G2coa0>2pOsh7wHxb zKxp3E#^TlRw#w=P%p1^NrBD(WB$cop%*-Bt*{Z2>tg;|gK0k_+=fQ(%(CDxH*G%k% zqZ_hSHwQ``Unb_Sy;#AZ1%PyL0)$Oh=AsDz)DVquq7)zUJ+BGDLBJ8^#EF+oz_M() z${Dn@cqMT)vUn7naAr^zUZ?V&6)1>5c{cs$%c-_Wi<7I=((Rq)tku6QcRshSDmJzj zhvWIW5gr>J*oC3TWNod z7>k|P#M^gE-+S@TJE-&X;kf9X$m)j;RI(|vb$ett^eN;R7p$sq1 zibAO&2Q_cS7Y3f5M`{-1Q>+D$+JKa;y8yCmmv7z^7f&EVJK;rY*z2;1H*Z;6Dyf)G*$^!@ z;?}S7&yOpgb)Z8yU*&*@>&KQw+{|ce*90;jRD^ysXU2jpLo&DxMDAuUGQ>UUkCQ z54BsYl52A=FE=%|eQ~@!av6T|=SxTY zw%j{;x*xeCn_Se9JEnVE1CLy=->Z80)7;YLNT2-E7WkGuPq;a2udmL^t6mVhx{>~a zb#mpaaH%)&-Mn-nJt!{!hM$E>6Z%=X>2}@x0Qqs{)=Y8I_vGOSIn)UR@l{1>>Z@;b z5-U$wZ=2Z|nB7xAfs*Dwp#j)`H!MqM48N$2_{BlcN4~<*)$wUhNfEi7KzTWpEFumy z^p@rU{SXFJB-WAR12A!t2sW9nK3ujPggZ)cJjvFj!Xm5fJDk$ZS||tOeW8d}CZ}mZ z&Y}5$E)0Z)h!x18z!>6+b~*T{0hSs)F)j?{)!>}{weM=!El;vt>6dv7Z5MlQ=q>on z)v7Z;3_=*|XtBrT5N$%+if}`}PLk{PMP34hTMXs5JM6MEF}hDMcNVSQY`@e-jEr{n+O1 z9r7A>vm7pgF=_qA(jQA~p0aJ8(*Ql&D5j0hc3nS;^sPso2hdV>&fdOvB+e_b?o+;l za7{wT1KmznjfXbtAfn7>f-d!lmf6$gb#SpiSB1STX{b5lCpzSH&R5{=8RsJsnvY7> zaZ*Jx*5}C#Ks}KMLNPf{wV+!VG)*0@m`e6_+rcqr>5p`4KHCMYvrsb|me%OgJGg|I z(z``!j>1w8rM-mRSL>1h6yIAs^$YOi_v52T1LKB+sWA^TJ{&!$5mvu691~K1;I~hB zqSF(NtYl1*5KycLYOvvBZ{$nw=wuI^_Qv#)VOV`mAM~zsTnkFIlRrc_r+mu8Y>5>7 z%ocyxPls}?{q~IB{9CpIR=k}5D$Z4fJL?MtIJJIN6h1}lD4L5g7{tbuS+C7nRcG(5 zk=lJXy=pFy{iH%fJann+!eSN-)AMEk{=WI7{kr}sH+fgSuvBvwIsrm^ZSWN+Ggk>` z?dfXeDaNzeW)tR?)#CfJz~!T{dvDq&xekg3xo6ct(FE@e)@`5pHRKMa#4i2X_3I^O z)ndQuW}vj+%5ysh90YUU`kK4?97Jg5E&JwN@uw7jU5GslUH$rD$M05Coc>X!v7@(Y zD)<>8MN6X~)!xvY2!p}|6zdgI>lY8Rr;b;;6ua_uD3`nEN2j1~!fSn855YTol+C^4 z#ZpKaB)8O-lY=wBw`C8zwe_fW39=mz{t^oShr%?1;4rV(K#!x>#VF4=aPN`;o&ay6F{)-3%^JT8YC6)v zs}@0ErVIg6MVH=4?H-_JH+(Noo-S6}{d2Tn5G z{|@vu?eU0FdJZ-P!AYk*6`c=or2DM8bH+1oHmfWq76A8L*;%K3f$w&YT~wX%A|GNnKajOl{Y;j_Cv4S7}@ESt>H3u&oR48*Zp11wOnN;Of2#+1kRtz6~*GS z&c}|&66!z19Y9xzSNArnS{5ccN)QKw*hXxs`heI0?_4Lsd5c z(Q^U>^`68@#$hMb=wB>*n&M1)-Ir^Oxl1(h;)VAIrnvbszPn$IjrUbvEdB4ry30Om z%Bx}D0B>mVz?bsVmrlnwPG=Ckly9G!8OQG~m5LP$NkK!_`|$}2Fx7`?NQ0by(f!>H zgyarP;L(^pSrX)f9C+ECv+pkatbSnGG+ladM=oK$-jHRlzx*Mi`QX+Cvwcd_evx## zW$#h7-4z6^?DX4QZHtF7o)77zn5VkC?eBeZN$vKqv(u38=lU7%E02w*#VD_g7TAuz zD(f5?be*9~+7gedR(mxoD;{^YY@jd1E8m=)m+>v^X^byzuOTGKe$GyRzbJEUd+FtI z{+`Egm8XxtQTb-&;yFrDQ!Cu9VeR-9cNvu0pA)0}sr!RfUFt{=>&J;ha~Jk}dw(X< zFh*hCJ0EEHj5WDqJ+(j5)Us{5OH#^lt}Xt1+p3y{T#9UI);}GCsZ8-tp*5A}66@C3 zu!}P-7V*O^YC%bfEQ{8Bf>FDhs#MU)qiuiv*Wt;HgAKJl*3+YTt!-s?evY#5HKpAfT%k^ z)g#Tu?;JEhPTGHItH1Q`m$u63)%w7$B8Nxqp|($ry#l57kYRqxKWV5_yqJUnivG24 z3u%@^izUgGR&r3+u8~32jDU;bz?DR&1#`(SH;zyxib!{A?|UsA5G)sa!AHm@m*-M^ z*h}N3DC#R?sl&9_3Ou55h16Dg?EI6^N$=r?SXVV$N=)^1)6Md&@%Xjl4O6ZS>qzS~ zH6V!D`zGlLniOuI(Rl>=9j@CmYHwVihbCh)Nxz<4RudTtOjcN8-bSX}`^n#fx4$b* zv;X&}B>od~&g`-hbC?0p=!I73;~e#LkeSmaaZ^xctoz0ht|?e`3RQu);c6vLcPnKl{^F zuija&bH3rj)VAkIj%!^FVh`zJXdw>>`6%JIt#gmwf{<6=qFSyO+jRTG4G1t1H^t#x zkHTErK3Ju3&?^aMYlQ1$R>0J#2hzfe=U0c(ibTE%Mr^KQHqJPr}wC2(Ac*rP}tMBQ`fD)gIGt9o{{ zNxx&zg2yo2gc|axMl`4;2qkthbhwmllXSBpiq<^g*%WQ<*pS3_b<#J8rV!f^8cQO5 zG7C!*A_U7njP}n6%mXFj_29VaI{n6i2>C5%v*28SPc>M7y}Cj*j1>)Xd&%pfC^@c%sdKYPkh82DKWKQAs$C5g26hnt(A9-bAUQ^k1d$4d zeDrL38r5te()YYxg*4f3*(Usq1I50*R3=j80S9#!)fQf5M~=FT-cx@l`sJ}@_}sIs z7Y-IjVg8cL9c4>e@&ntHLzR@N6zH-L;!6qHwPIcAaEwu&r)VaW3SDbv%2Aky%{n_g zlmi!S^al;=sKjch`X8ZH*e_T4MmekB?ZY1YDkv7-ul$1WBFWKAq)GiSbsM}9v+zbk zOwD{dRnH$5Wz0JWI@v-i*{)lSI)UtXt(6=~NtS%RMR2b1MzbCWHJzqAb(~I>RB7;E zN}@l|Stu;Ghnec5r72Oi`(*1Om1Oh-5)Z0p$IyL2mrH{vdGx!P^h@gZ(>@5dCIQ$N zkuf5GmL!w#>|9JFM6(URVjJCyAWDBIdcexWF%(=zOEK@QPyU&NWXI?2rFK~7i&`)} zj|)KcfEEEt%wp^YG;w2-jWS_BNw7o^DLgS1>&2W{#iQdFkzJ)Wv9O5iR2TID1vKF1 zOOf{0i5dV!{#RxN#gtpr6<@V+BDQr>x3TDWu~%7M(KrUxT*wvv89gX$0vwi1Qjg1t zI(^J$(nWtO7tqW#Qg%48+-Nd8U^+`R?q;a*A(VJ6F%{@H33wv9&zR&;t?FRS8tn3n zwOjHP*p=)79V|QsO}GO(vrte3P!(v&ph3L94wlne)S&VA?>XlMRSKbzjPC&JmJhu91F{WpM6}KrIyyx^S3CdC&prSY!K2Y6F!t z3N;PRwd~H#a8x#+I{ z`NjZ>P*OG2QqY>+`6>ZgdFydq4(45+s;0d zCFmwyjUA=H&Dh`o0p?awdT{IcIt*vtYgPgS9M?}Bm zx@M<3PeP>4%spnCGF6W-p!JOb`RA&40f&iX#~IMN4>#Qk+>UT60TPJ@b_~@`hxL=}WkmiyJ@2X?3NL#Sv&#sgAcn?>q2pQ#vwQn{UMT6%PHz7RV6_Tj|FYb`Xm z4Wx>7QG!e$){zj7v&M)`v&8KP;4PH+jcW8QvFec1>0f12V+qH;EIz|NGFctau^UhU z=?X&AudaWa;E8IM(B7o#cz89yb5YvoEtDP17JRC%=uZU%zNBoGkcpUM7{+-i#W4N}mvHcB0_Z!qunzv;a@enuLC9QR+ zt2&|LOs_;z-kiQc-GBzVPo{} z;eRUa%&xdF9V!+{A?drN`DB0IG4;YOM~dotjSxL~M1&c34`>BL)$0Tp z(^J#Y=-lmZq&lRf-%1%ATSFR;MREtFuEYN9BkD;v-yd)$@^pu;UyXcBS0`&|X@8a! zozz6qOjCo+I6UPlBbz6wTU_Z~dmT_6rkSLz5droQZ5AyJz0@0Vez1B_8_rNgGj#2! z27KXO&+U|)-1hAbB%(s@TSqezY;Yh=_FTa;yOLW2D@cqujfB!UV^sHnWPk?mA7`x2 z4MZHjvQ2YiXy1)z|E|gNRypopG;dN3OTJzV6u+(RNa-9glV(z~PMIBLn)SX9$vFi` zXQPI{#(FA$6**~*9n|KpE1~5H#Op#iRnIQhME|ALB;2BMF!#-%?dXIV*Jb+=L(Gz| z&p>-bHZR1?XZOLgUQ*2a%fiX1^DhHR@mS{~n>vr1T8k8Z)TMqXG&3lG-F~p2Ajhn@ zSzu;&6R`Uc^L4;XFc5R*yG5T7C3P!zwQTB>D;NGW*Gdy^NW2IL)mE#kTKGielS>BY z^F1|lZ&YSm%(9dY8zR;A>p-PVO;J{@@TDnO{Q8GqB*pjS^hY^Xf*DTJ&$~i7? zB|AzyZZ(tqG5Fw=w9ZX-mSWw2F2(z1h3}8|aLf3YqLeJ2&z_E_%rp8^xmI-y-I!rlr|Li{w|mew|t<($?Q# z>bmq1{Y^9MpyAL&`tOvC!F(WgKx63liL+D!sX0@R+TlyFP98dYs#$)Prb2q1bna?} z)R5sS)BxZ7k8>k_!o1LE&}g0dFZ@8U=;4;WoYu>^+f%;Ta2c}x6dAMMZ9{L5k9{`i zwJ;rpHk$rI><=>u+NxGCzG0u1k#^@2K@{L0r)G$fiGBI)qJ7n(WCEI8bH5(IrpWP@ z&YpX>bxCI%IPj!lLpLiKIU#CLT_*Lt^MU1oe=L04#oL`hMZHAb*geJeXG%-g25mMO zsyRZ$uz%uW+vEwR@Zj9X;@3!S z=A~_p6MqL@jBG&-s(A~U27M#Hzd?I-&!;P{L5Q;yy=n++JLAKRei^))grc@mHC^Wq zgjoIWHj+v%7tD{|{&P{g(9p z2mb%XMi2$TZ3c*n8}~>JapV^FHryjCH8V3SRNPv)O&f^Ytkl%Z#zE6GHN%Y3Wq;-v^b6lJ5Mj_Tm|tL z^&gM+8~NoC|3ygVJRi%}9iPlOF!GnjVFlZd|GvzcN3-RptQDg`^i*6IhgGQ_*mL`* zH=+{Am)LD3wNW^03%W;JpS3@rqUG00N0}Laop1FxN6npB+wkcOkZjHJHuVPfocOr? zguptiyeDZg?x%B}OZ8=|^ryWz;e8>=_Szxyk-SoQ!_dy9hnM5e?r1%_xZHnmvfoW$ z6c29tH^uBqVj#~Z@aMPa6h3=j!$<2u%DeK5cX^-x{Ipd^hnoZr8vXR76xx`8rz{f- z#v9sQwG4G8Mv7kfPT#f6R*L_Y^1etzBbu*RyhtlHe)43*{2A$1j|%QWJO^FR_V3Up z`6f6n*d{(u`n4MWY~}WG(}k>h89yMfcyc;ycYks9J|W&V_w06C8PO^O+py2)tz?u* z8H`AvF7K1dKMVWgNfkWWHGvD9aJ@e79{##%7Rvlo!PFf7P-YKhZV7JC2 zU_dX4)e@ktBqT{wX?4h2|7_`$hytL$k^n7Hw@M{}5{VOXn`Ed{iE8yA@!v z{<+aZ+y^sZ@49ke;=q;HUrG%gnwi|yZtHp!2pX9h7S|&~BG>lhS@}!m!+&}|vOK&r7w)9yo3sZ11@-tbfC@a`rMdK!v_~%?{Q;u6}y6;u^h1K1>d#?G@ z*yX47kD>Do-=|L$eB(W;fRxtF@SgLnJ)Vpj_bX30n}C}3sNzG13)SQ&TFh2O+dMa$ zYhn+1j{ei8Bo(XhHsU&UrY%QlmQ>R3ozfVxYv&imW`^-(t?UlW=~3n8?5%3Ah`-J7 zXwF4mb^+!5Ng0%OIV>kYv@h`rqcbgd9+RJU|Ma_m|JnIdvh#=y=UYYLV5vy0lDF8T zO^SMF@#w=<9>RN@0W2ojdnK6W>IINBhteHr9b|OL$bEHV&{)Hw)Qz@Xg?ogP(mKvw zn?Gb>ZHBy@*Ub#oc$?Sa!;P zcnC`@fUAYwk0^BoK6^K=#ci2CivH>q^pOvA2%Tx!E);Nq{j7FGg($^rF*nXpB9G

MHc_@$A=^%Cbl)hs_{1eM}gYIz$Ru zVyx-bwB~cxn9kpsenmG+A}yfe2ic68En%T&vZlt&)CFy-!Q%q7r!iNb_5%(~UkSb{tIXzD73`{9bFdP2A|rAsz_Yu)$}_I19_7eF48EzDyU8 zTc~Lx=F5td&G$7d-4ZKtsW_u&n0!4yI}5!(X`JwsR}{mrmEM1yW1E`XFn?uToudSQ zeyGkHnvfXsj334PoszHQ)gf`J_U$-12UgpCw!Oi1Sn@wHhu_+|=z!&HS>^|BEl$E< zj;xg6IcZIm10nmGuSoHLypZgxako;(4Wx|6r7bvDVwV}A*Yb=lpAWM}v2^toC(Xx8 zE$Qk$^9HV_;GfEXnTpX;W9k9EjOKTGGTWEC?Ar`ntI@{rbzEqsJ3+p4!I^)t#Rh@^U1V z!Sjz4zoa$pm#}gF8u6-wfyvQ%<~B`k=+*iCqBEq{<*b5@gElR3h&M;xk9T;l3R+^{ zwLLYycjpObG*@H4n*=_qK}ijQ&q5e1+hAmFvs4QDP+q)C(#9FBk8iIr$AT|@@JT_1 z81ZrY&c%c}^%5*^^G#oN`3nib2?)MGXo^n3D8 z+j0vPh8CDuwoH-z-u(Z*xcVXwcuQJNC|e$#yL<3h*+JrAw@17ey4XRW$a=plF9_&x z-w0@6<<{(U&SE5ymks~)Ey35Nr!ylN9_6L@pBIU|LC8_}q zY5cz;=Kml;;Gld$?-N|JRk(duGijz+PTCNZyG{tXcN9u|xU~8KTdUgXP4cvVK)-guq02DCQdo|*m_*6H=}bVVb9cM_kEPxmqxip%Ujz<^Q5^z7(q*LQ zwID`*96Zb8DVE`L?TK>sR$REeNcO`z$S8pH&a6l)tjH`)>5@O=rrDAjS<>vwpIcsq z=20*@F*cvyuJyko)uE6d^$I1#H`A8W-X;Bc_vJ2>C86_h&KZN)DJz($E&DGDd-CHe zB((dh!`a`c&dret(o_e3npd>i#E!eNxCZE@k?<1JOL~L6T2O2Wgrno= zlvALDr_C1qq=Y5dBNnnep;YW|VO4}yr=5pufV=C(GC7#wzmL}zv{wZezgB*H^<0^O zwVK5`&0<%IRd(}TDmz{5Jj4di@_BUBZTk9P+ZRSF<~vl6F~s(Zz)PPQK+y=9S&sa0 zxwZ|t%oRCo+jhXv_D6<9$MWu1pUIUD={$9n!B>>D^4J3SGoMLx;+feIRB{VltcAX* z#CR~<<3hcnqT!`_5}j-zRZ_Q{Hs7;AKbj2RI0rUTT)PXJK(CJR5`oeve9A$S0ecAc8~f#5`b0DOPI5qe;racF7#M(zW$l+C41<6XnA{S5n_B8S(2 zBNXu?KI9CgRfFM8c1NkMb(T!ain1X5^K6oe!3yp(fEM9?4lMaq8>Li`d98ZHd4&IM zEt}y+c0Vk5+V&K4vV)954bVL=v-TaEf5TO+Ib+C|I{Oz@bAM&?29MV}j0z;2?HqyL z*uL&8R-)8R_o~7-lC_U)aAHxE$S_+~OLCVb!*#4cXBG6wbu86^A=$OO=fgbJbQPbP z_4Awfql<_P*HsF2$Stb#$R<#*qtsC~P4OD~_PSSq?&RD=7UqFbWT zQ}oxjSxQIZ3n*1FeO0_2a9fNrKZLvC{?1O_HcQ%szj&VV_}ws*aG8$c5S}nlH7lYu z9r4>0q86%6zbZb7gooOMb}WWBjKxNe%c@4W9E3;SC<^MEhza#CRnoaql*^l1^O>=W zdH&X_JvU9PHRPJKcDPHh4*ywPj0>nHHpRebIMQ&oLUkj8ViuY3V3UwEDlVBT{TVPX zTV~xM{92=9t%r;$Z(6#fbj6z}-@w7s&Cgy6oP$h*?~Mhq3us^1iF?Ni3t(=PD*@xs z%+z@F%el)-#Yz8t8xpQHC>MqOEl7tn`@V1bP+hLy5UcJq=6CWvN%wvd>9KL%h%C(+ zb)Mz2J4>3vK<_YGgO#ggdcuM5O-uD^4{C#q9O=U1D+#bSHc{sF(|0qSqvbMkn7h;z zIk)_mM|Nl$W2vrVX|Cug_Sl<6ajtjzXmvxPUp3q?c%s?2tm{Ken?B?N!N|FFq`gKN z9LbFuV4OjHp`)7)xmgd%3h8_SUD7LC|MC`>+h<76F-mC2a}CGquK2U!!*-YQ5`9FR z;DyBz_r;pH)N%1nqQOhR3OXdY{ST&}=mL57TFFbSYuQ!ehu8M8IO`<0iRP?-Mw0u! z8MtS=^YMmKQHJ9m*=DPsB_6178(nhTB%ROl01`P)@)6^VW01-tanncDeH4-JxA=gd zj6SlX_?z*sX|{eb5~Y>#ogsHkZ(Exh zudd>qBk*%fk4<*!B3Ajxl_zGajM^`xW#l=EBbLYB6cD*tff?U=18g8h&e?v&en!=S zd7!nFB~E%7GX&t+^fxcM|Mb7RFD6|psX*?|Rn<(Y{cKA7(aQtRreCKYa3#a5JOXak zoaY3nn=(*cD@?GZ4%xteIHE*qcc_g#1B4OTi@o&C4whs>mUI%ylJZ@JBb8+d4m6ZI z+5Qx@|0%>tKK4x$TV}{@q)rN+B}|xdUQ=g7-%0`UR{f4muUi8;b5B2@M1=&^?Z7}D zPm?SQ+=8LuhR!ux*5TNq1>@;R!ws@=llo)9INiblxI45<0VG}-E(aeX^e!Wl&=`?a zxBL#5(C~EHwE9u1TuaZM06wMjt=s6RuJ+ryYk^F)HKY5@_YcJctUq?R#=Y4A}~N_>fDU8WhmAR-L=4rZhQPC?COre86h|Ep-+sWg2-U|nWl3F zTiJDD*Vm_Q-Po|BAX4#wUdX40!d>I8r%DY>1S{{CPt-DvFy7Y^`zRtt~qo*cR zMK?g$GjC!pze^d|to;7lV|dW*TmA4@^vn?9Vty9+z8PM;`OcNPhbmV`D)?6w8kD-i z1K2E72NbJIdbCo2nmKO}eR#%~Z>v&QC3Z4U!!ILau=R(r>&{mOGwY3IZ}f%jyu$4B#ES9w2u){|4Gg|YXl~cDmie5Z6w!Yctfa& zOS`jOPEzO%KMRp&1pG8g(9dwN-HK@|W3@exlrN#hP}mQ3#oLB8tjn~X$2Env>VWAZ z8ScFU?rKnhiY58{55~#!WZL~$U*(+o9-KBvyy?N!Haha6i(+a+%8!3fZ}D)IB>7$& zrHOF4x~Ry3GsVYdW8Y?1?d2P-$(LJaOHI!YU$3}(;(W_!<@l}h=j5}NO76!^L6X!t zH^(A}3p0~GaBMg)+@6lOSwALkLnF0^kGA~6&ifDlv`Yp}v2k7Pcu(H5H=Ba|&A?edjJ)}SxMuWpB*XDPH=T%U zKYkCI4+6$9-QEoKv3Zh0)Ti%xc@gsGS#d(+Vc8OS*=4F+0tojl?#rhH6lWQ^L05hH zQT!<&?z1At2PuChDX$I@W-8)*`GHrw-}%=|Q=u6zPUxmMUp^5ZSYaNS_~ZM%U3s9B zxa|ApHx;)0R|gx9Xw+Nz=?qg$vhrf6GL<8@fb1$=P;aIf>-D6pR!C3611X>zGg1iV zxSHdg7nCgzPLC_d>b$&j;_C>;C9TMd3cBR(HnlTiFs~8X>Hehm$+tJH)!ImxBp7N+C%3x64 zYC3gJFv>_YirMONgE;GSVhu^4vp15?Wxw?`I!1PKS9G`>*H+zGq#IqB_Q|cf)mqHg zdGZ~z$)Xr#Rj`S7E%3k2A6+Lz_+8ommsdtpd4%UAbMDtEm*k@%_1&wdoZnscYcx#X z_=Dr3B^5#YYiSL`P`-?9UaK5R8uQZe_y^_RDeV?VH=3*b(_R*S|86(y5IX2vXY_V< z!PWoFl{%->kva@w)>%%^cvfWS{qmrgpDjDj>~2M`%4@ZXsd7C!IT7RXQevz^&3wms zn6wWaYFDI~96qkH6sPjiYR&C>v0g{BzkE=Q=eyY`yC)O{F9t~CDfi3!{5oH~ql-^m zItqXIWHq>I$hd;S#LAL>$G?A;{g2q|$&j=LzY1mxvMV2u3M?w^A+0u_PfR)JxuZpY8siW-ZpwB4SVQ*Wfaek{x{ACg%deR9h4b<;cl@NSvqQ{FKt zi-A%xPl%jOTzWLyUOI}P)jMw-tphfiB`JgDQe5<_U5#M&Isc2YUQ1tW1-3@6yK0{m z|27{5)}Cz-%@7Y;YZ-{&F>EyWpxwR8s@zQ=i`;Yer`NkfX*WuXR zv0ph<`NX%9(RmzJrWKbopGU&JCJRUj)wu|{bfejEl?RzB0;{d(hORmxVnpO$h|l?L zRpR9eKGB`xk$TauUdH`x^J8I8xF;h`h8O_r_;oPjqV49?IpUY};Qx8ZkDm|Ik#Vx@iaZ#gymvvw9*gI0eY0s=W`S#dR^xqn9 zb$&FS+*^(=bNlL`85K=vhvEZz&PfxqoxP$=YhHZ*NBKE&rd-?(ZoDvVXNMNblCRaK zOrFCUe?t*ZoKJ=;oWP3Kitmc6>?m9HvA^ZX2c(1GWQ=L^a$reivx@5hg!H+Njl!6~ zmnnM#Wuj#?C+1J-7XOgS-WY5?5pw~Y9~N>1lXKEQ(S%W}lmd7eY4zkqkaXWnW=}G( z@4NTar89Ma^_AL)Jb4cz8+)0UkI9AJJ}H)EZoRqMmsZPewCtn&Q`zBD?dh|juuy(s zb4)W}Sn9w?iivJ%LI%e9iCvdEJDRIaC>7@X0|k)ZU|`;<5q3a=t??L!%}htwto%+t?@{|L)l+mVqqsQ;ZKi#it^@ zTt-d5Ej#$>GvBn>>YW|q_lMlTb3dvXXFO3~=^>aIBA}Vi8|>z3!o_bMbC(6jytE_ez1L z3oQ_;%D(3`k3C#|O~LUGW1uAN-KvHM$Zl<17GuqzD4*oKa?(69{N>!LT;DcCnlH?a zb0DGi^1!k$yAa--PBVugjtjJ)zu7h3=3D~L-Dt^>>`C?gNI~bM+-Pnap!nYN#JGAH z>Sl9d>MtQhdJIDoOG%G4Li7NslM7pM^LT>;G*I8^Um4++~uzYj;=kD@wGnkYCYvSLxGbne)p;;g)Y7a zlpZ$`$t~d?kh1-}{V5b}+D?DYYF8Fn@Zi}mH{^zJi4@#AP5n)pt z%F#5FGyAZkLMw6&B~<7QF3e2K-|KRM8TA8Lz8d5MZbP&{CSZ0K>#9WP{$!c!^J}1 z*~(reJ|l}zM!RvwE}FhSXah`6m9|elyGK>y=13LuTy?PPYbUJtWRkMCzoyOok@TCC zs~iiuO4chEi${i4CKr6fHe&xk{E-om4(TKLG^3^r?{kD2_UpW z4Ge!U+|I|ZN8_;m4b#6@k$V->2zV<8EsHMA9R_~Q8cv-D9 zerha{t#Y?<*A*)&IVf#ORw=9&Ovnr2hz7a{3uLw&K_3A{3;I3dhIjB?0z{bbI2kXK zn`=6R)bh@z|Bb>Pxy*1sJM<}1A{(oI?3n5CtZnCOb`y{2W~GU)5T$kAk>E5C?o|0P z`J2;uzQ6y(7A-|S$?_Xh?4jjSHd!;Ywtk5>*mx(s<6?FLy}Krc(P6@>iH7@^rz(Aj zZ(`E3{2FQsE-Ow~2@Q2T_%-f@`6kLU;1iQv2a{FtSN)V>>-sahcc17yGczGe-V){m zn=?s!ZyxJ(+s=~k18@!q(rm@&?eh8(*q)751p@8{U{_XP2PI>Rkx;vLZTW@Vpcj5h zXz9N(U+!ca5BhP@(T(vyzJ}wV_PZKx*AF^#Fe*p3B*2#ZZbuW-_$ozVD|)P3_VY&c zq<=5=r>#sK3nGW4!)UBcsh$^Koe(xaQ?w8FZV(gZX!ZExw&COMLz0(2qL!AVS%0!X+Lo#{T{GcxFq|*B^+(06dWRKhp`!JZM9V2NPM??zB)A zqL7w?1szk*7b_GX@HoWajT5O9RUZR)^tZicZz=jXnRSYfMYCe7zU~MpkyN=K%ue0% z4O&ma{AtZfh2dNtN8VP;KFLp7sX2aXReg&l`3r!jvfv?HsNAs(O=6D8K%9#(&YTDj zXND}par6MhfiCM~`$Stshvcg{|0N%BMfwP0MIlP1$QZp=Ec#X#x|0|v4;poqMK!e1b-dbm39c@3SU?7W7}ziT`dL4lc-B zr=L84g{O6ST}Kpe`O2JXIeLp94JbKE z!-X^;<{de@rtbA#M6VI2?8ZYD-zZCMiWk5hRRO#2gMPOEu zhdL0k6!y7F=JcDS#^&SL?gJq(_~9hDh@q9s&#+j|06mDapm7ff&!`?t(TGKa|Bq1Q z?A$1sbSxeJq5VGZQ2dJOhwz=k=7^YRGGP!1sT)B5MUOmFllr+&V!cb^Han|j{EVJc zIHf%{1Qs_6&IoBf@EV5u?=`Hs6-;F3yZBYwFe@#%kTjsA*Z+i;Z^^nGBAkd|K9COX zE>ZKTdPF_qZ(fGxCycx;n~B&h*K=6(M=+|;%BUanLEx*~&wLD^3kBsPwUt_RRJ&&fY<}v{B{U!1AG!&gSSa(GCTISA0nKI5VcrS z1YFtg7v4ow-Hhc7j)kl*df%NX#TbQ79jl9WijC2T{`@22LlUNb>!5jUC4C%`nS}B| z?DzFOo8}Z2@?%GCU#i_z2+WEFwh`mnJ&4oe!fLy64kK_>(N@mJ!EoM%C_LhCv5T1Y zlKFJapoRkbagFZ|F}t_uXHu|Nr2^~Xs$=2<9p0vQibd+@iDj?~de6y(3lQDQfobu+ zA9*!jBPG{qiOxUJzC<911@l;kF=-H0AV)Hz8TS-cNSBljIx*7Lkj6WM#Wj0zZ7bxD z#5?mF=p4P85<*r;X1?m>C^o3FbYJ)3OlTsJbDZ+PH}NOBOMtw;eQ<~x?vaXWk2`xw zdjDG0{-OBe-NZ;H5fD{{)4wH(XgN(md&EEIalaseT;xLF1-KY4ja4G5GlH=eL&Fz# z)OYxUrhGkFnR@aOqZ_KUnUL5;Z$gh)A}-)+wpB!XkaKjZq;L6wb0_OXwVv)XP8#7q z$HHz^A72Ox8#KX;n8e=0UV0wYUfTilU_n%uPibJ2D#}1uqXtSvA7=-zC zbuh)WlQ$Y(2JRy}E8g0tc)k0?P4BW`F$3IijMkRn<3=BSv814M3}2WE#=%cq6NYKD(4=JFnAWoQQ0Z=s(P(3E9Jhk~}cOS2sPh8`98pK^$W944ZAWe=K5kuJ}YEcZrSAzWaYu6~!16eYz2Q)VCQz8oOt@LFFyIRq=n8h8D zlFvG)C(d+h)Ss*`nq>yv?r$Rz6h^zzDZa7YNhpyP7T48LgoXzQAw>EOZ1`1m8pMN% zFgkF_^hAgI`_5o2obv(d1>g$z+!=Ji)fSdK`i2ZE6UiKk2CoQR$qBpO=sIm{`)-T* zXa$bc)n#rnI}6K)#}TmiorOR@>*JI4==Pgv?>)GY>LB%-%*300ZcZ&=0petF3j6^&?Iz~RQ83mcHq|!UHg|Bf1LQM_uT1O zc4wwJ?)n~qvX7~li1lJ}wH}Wi24I%NG&y3eIumTTyaR0k&~l00)Ef=!+qYry1Gc^Uq^w!oI02_dj@czr=h!`O>JTpTr39Qb7_%YEdTU~Lty&^Qb z1KE>)%TV{ON$d(F`YhO%CJ^}@zB&kg@Dubuz;78=51?Nx zSAzu@vtX{$Iy9Uqgy{gb%aFtM5cB07h&h0>r40vnb?CRAIBtoPe>LW)s8~K1{ruax zR}4~wMkf|GccUft%O2bY^|;iDj@T)5ch}=o=}Uj?V##ZGqbTgPh+EV?f{1Aosc>6Q zr5kUYB5q_81z@{nSVqzwJ`*EX)KSz02kQX2TEllcC$S9+Mpy`#y#S`SSN!bozRA7+ z{7&>kmtF-@Qlx4nO;$(0Pky%WqkW)be)-l>Oml8Z#ZOvBvg&U4u`(&WLCt{jq^~Vr6VT}5dN%58UBh~|iQbj6q7FKWo&akpAABdlto4t1)Tk4U%_H6JLTXQXH>yxvOo zYFI&Ma!3UqdmWO!iavoH+3=986JRFdTOx!g(jRH_&Kqz@C9;-ftytRH?jX@|yqGLla};TOWryUhXdY{Pb}tEUar@rI1D$h%x~Aw$ zkBNu$ty@|XcEXSLiFx=qS?@Egh#>9tG&M~I&^(an3D@kdlo}@D^agY<{cYMbB>k?~ z+k@d^KW`6N;=Y7FwdE~<+2DdR;G*eC@@<$GMEmdt{HQ>>fQdN9wJm>%e0hNL4Nm{Z zK|Z3%6EGk0=UEqsP9a_J*1M1H~hN33Kk;eI=yeKX`xu0v1k~ z2q1yXmn~c*;V`O479PkH{uMH?aq#ILYaBJ{Q=u+kEm%-dvJf@#k8OO)pnWFH+?i`T z)Q>Vfy`cGJMJk+s7p{I3-G}+8d1!AzM~fLQ56PK_Y3SAMmQIPujRX)(ffsL1Y(GN$ z{0=nL8e%DWlUe{zfRO(ClCQ@=vNqtk>y!7LS9)|XNe|H9conegj_rT&JyxGl?=MWs zeRm8VPxQ92jZo-cyLn>$FIpOA@9ycnZ4HE(#{21e7Nukr+}ZqO`O=8p31^@Ogxs@} z-!QkqSN=dcFTno({G(B?JBB!nCB4HZFT_jYRA{(->%X^NECg@B!;c{1l73gZn`HhW z?(de0HH#WSo=^{66)1`BpZDVTb6}gNvRE>$d$7jQ$FCs0WliLx(hZ{ ztAA`65yY}H+<@%cfO>FYdk?^sLJ&u>&G67y!B>98e*sa>g7YrEYd`o+AddBe?%cNd z9>Zhr0TWO{6-OZhbXLZTU-@9wKKBwd)8gnv4I>Dgih0)O`qT+D%Q`sR#GGfi7Di31 z-5Z;(qh)Nr!wEF2+1^$sde+mO8y#}bL8DL#1OW(Xl!B78^OaQ4VOBEZ8PTL_ZSWuD z_V>4?^4ji1lw5h^6}D1xWJx-S_ZdylTi0wVvt{G8yr7AJ=(1M8rkJXeLD64rERwBa zL^W?Tj_2NM(zxA!xw)+d%+N~IuxJ_9NrrOx6oKsJ2~^~eb+b?7EYrm{JQHPeU&bn< z176eEJW;6uZcF#Q_!@ITn>Ezo>loVbcfWZAQm&!vcj&ES@mQPe9lM5_zBodMe|ox* zoV%f6)e~U$im|_Uv-nT+H(9*^Ydlar9AvBTO~_7cG?o1|LN;FDFxfi+Va`pou)CZBf$?H-Be^sM9Zzjy z1VR@U4G7EbxtkQ5A}j)zjKyECjkrmzX2ung2~y+&<-{%WK6!l7Ls7lq;@1pP)!?(>di%p<7L9qak;Km!vT>uJT#|0NK4eI zk%0Tk=4pMHdS5z}B1Go4+BkPIM&)jWIu@wjwfC8EDBK|JOSKs#%;lOK{O9ebh_0I! zL$i4L{ygOj$EVvtk*>=nLB0iLyg@?gN(gM+mk<`Q8pIA(edE;4ds;&4pD>xe(h+Gq zFM7I@upvMgaa`m}UjGb{;4bdrBx9paC_goI!9sR==UD2 zmN3f-sRgn?Qtlv&@zX9e?dSbhxLE&d7oYvB4<9p^X5CgwOa-Ggdb=2zv<+WmygH1P z_`R?^bZs~{KC z97LIJx6i9>SP|(hr~7nYytt>M1Vq2!f@K-*(w-&8=VO@MTH9T`UTMN7CVrOzL;ry1 zME4r7`y!`6b0fI;;x++MOcR zM$W0{fvK11P(If}>61iqfok@d7KQH@js#|Q)x9qtC_PBE+a;kg=N4o-O4la0?M#eZ zR=eKaL2K81wmH{R2Ls?-KrEchPuFCAVr;I)>M`(U$VHlQz z?R>zoDpf7}$B|Y}L7h=%EFtodgr-rk*vS)D#OH$ zZo57%#stK}-JNRKgH zrB&r_aIAc1m~`O(nIZhYz=crY|L+qrxy0pcb`BEfCFGKFE0heN>1OF!EGS4qLJivm zsN}%J4IFsftl?a7S=rQ7ZW;K2IMOg`fFr(#)E?D_VFTtpou=zjqk zczKR{(|lY}*Qf-@9h!*a?Guneo$06MWFFS_L&#?Rt+$yh7S9v z!4yFAjmXOOj#!m_RpOS}1P$KWgUVvP!Add1hM}B2KgpY271#5Mz+^kQIvYr#0)-n? zHN(H}4f5jkiX88CZwULFtzIaivFgXsEnZOnq5L~nZe0!z9kfROb6&Uwd zmo8VrZ4UpUm1DAVDwEa}msP3geOH^6<1R^7o2a4Ep^V?pju>O4mK-p7atv`Pp)D+Y08iHo=0 z=7we(?edYcnLTG36bW`r8nPGXP%5F6_O`GLqj=s>8vey&%Kl5yNw1i)aok}~MJ^G@ zF%S>uJ2g*iHdG1OnaYXG$hf9+c|maHUO^qgT^?73 zrzY;SzOFVNFMu9Gy#HDS2;P%J>J<*fo!6dVrwdcm>e6cf$6irqt+XNOfP_ZWQ}1Z~ zaL%jdPxhMarBxR>SE8K{X_lQt9_`1UU_5BbLjD)8Zi_MI0h}zyfUJ=!@|1-hc51cA z!5=Y`%@hsv$(=yod^TF^Za~FU=z}wDZ*})Lu8dS%`tiDTKSi9BD`}96YZ)pTYCh8s3(4#PJ1X$n|d0URp!ZwoUg8@w%o6$esO z1&6}lle_f>w4WzE9&^m>1XR=_`Fil(oFJP^SLBXFs%#VOukTCt6OPe*&)w)V-o0bb zZE7rCAb};WqT@9RMT-!nr4R8gcc=KxlE^? zLr^l+vLNU#O3{SHc@t&ikJ6~H|PR=G#f$$eG7~X z@oCPcIFZkb*|=A3;t{p2`##*NcGYEF;Y6vy$aK(LCST`)PCP^^V76+fb41}WXZkeV zF{}O0Jz}%nC<I?6V#ybSuSTtaFB zL8Ub?KKr#}n2#W4w*zgWvhR$P#DuJSdX!YOWQBZ{N2Q8GoIb%N!Zv8H%p_3Os_% z(GfU@=u9*_y{u~ACQ>pLxO8U*eu`5WMXc(sSGK2{gJ?Q19ik1YLtQm`wSd_2q|qjY z3cxTR2ivY}ysm~CXtVINzY~&*`zF@)@lC=F+8LlIatGtT-ChtWatW%1_zCkNawJ04Y!{(_SSdZ)a2#RRQ-~ucMMsoT(**srx_#P zOx6uYVuFc1L3OU4x*cuqWyeNtGQGF{WKo81 zVF4j6NpJeSu)I$r7BhX$(#Ub9JAN?t!{+-2&7y}@x7sQ~)AYMr*D0`!0$cGQtn|D| zo|j^J7SPGH6K*saESAS)GB+B}-qy~m5v#Gcv3L8;6Id5D{T=H=Q83D+#_ZHG{?)4v5Vu#0!aZp)5YMVUS!}!sl|3+(tLw2~e=`q@&>+sE%!yei z3}{*BK7NGlG%B758}>Ut-)i{e0n)MGR6b{*)oWKUsUl^-k+Y`nqpIOrR$H0%YJEgw z54Y~$7A=_8l7X+%MOoGF(V^zzNjoDqh}~)53nNyI)NfyP&3m#r?+g-x%|6*=NrQ(7 zH(vvxmT!E}naeIj@hb*)E$6oFu;2;(D+W(~zsfLB^#ZkZg^ZV8-D6MG%n4bWZ zP_jJ^z&hM8FDpA_B0O3x9*2En5bQ6>=X{rrPA(4KP+U4Tj$u+;9d6 zdWR2siJE@%%dd>+Lp!Vm>w6>u|2y7aDBiy75A{$iI@I8I$y5zyIcnlawD9Q-4KONo zjkw+@fFc=q+?uvc3JiSmFpT4JrlDNQGt;g`3!pkSw6?m0M)_ZRk@q9J=lXZp@zD3H zhp2CLXzuW*v-b%H$Ru$uM;nPIVy^7@=W4B4RBU2kQ?j?AOVF_7DY@CU!#QW^P-vMShdCO?X-T}s|_GQoM4O}jDEjz=1N`zeSPoTAoRe@GE7s3?0Dj}Kp! zllU%qS9o$MQcAHl^-jK2AY_PSA#3GV_H~M%^B!1pdFCtCr{G7|ybydCtWIq`8 z9R@FfAE<`F& zS^I+M4h}+f)h7I$NqAAO{MY1ziAM}wZsea>($g7Gy-os*=zCqg@Z2&vdoLBkEIgT| z7`;=iCogl9wWQt=an#=*=1YS+Z6jL*oW6~uhfMS%p7@I-AIBf|$aJhUzi0x`r&7R} z6^QsMq{oQblZs!g%=0paYaKh{>=j>Fd1^5gypk7Pyj|>V5s|zG+day>T#StaLO#^SifNZ;B%TQS{vOc1g!xUFL}6#YH~j^*N7rqdhl{ zU`O@!ucV8IH)MbI)Uxh^xbsppL{Ii~Q7W&4;Y#%O3<6(xmpC4p_p3_Ep=$B|Ozk?F5<_R*6pev)C)d_6kbvC;>kBl`T)xsbmg zFh2lZ*M=x%%eZY9f`PN&w#6T?F^6U<9gd1$uEp+7u{VxTPyuKbKaw?Q(5O^Z6_$a7 zC=Wjx66@eLSwPh0g0V+UlYRD+>9_c+AyLLgP*)IRHTEn zXQ&VxkRlhX#|D#V;EsOBx*J)nu1s6DT7i$&NhgTqgHz5#m@k)e;T?+qUhIS_FUSDeQ-*o{!$!MN}}#mO?x+?=lW=O`#XcVE|zBSoo+p}YaMc0#~90kIc0z>ve?O4!&Wtg$Bx`uKz%F$s;TCrxW zQDYfm4M3Mx6l?()YXg2vAS?NpwoL`(voV;bbxXXKZL0RyZBoxGZAG^0r=c)EEIdP? zZrcU-ViWiOlm+ISo$ajL=D{LRQF}*};tz+|0Z=OzL|Xu!iiXxEK$$$)!ELzcy70Tb z(;lZR^LB69-c(3Uir+Fs1q;^U1-P?Ct|*)(x&bt_@GGxV_*si zFa-!b2aC$-f?b1)<^kOzRx=lzR}fTbJGNvdk~BzYLzC5 zfoXN_0lfGfP2dsp3bNt)c6yyc1g{f71|>l?lEA0RRc{O-!|5&uy5MmGAT{-@I3LJY zkX{4c+p87oAb>fuM2sQan+4q`yjF)qX0uS(?-75|We?Lc$%fEDd1Qwys-z2f4l9~w zAahuuXPNdxv$V53#4Sx2i-_>{AHfMTfCgy+z5>_@Hqzh&3PC!H)GrcY zW*twikAho~U+aEv@;Z}bS^%Uowox?+ySocyz_m;kAXM<86ND}LshaZ;ULe|Bb+t)S zqcaa0BDfUEM%La!Fj>%p0FokuY7i=}Bw<#%Ftb=u>QIE}BEz|sUOYtiPM7#3O?>r( zvnn6m+m$Pcm-zS_v$BB!Mp2@n*}sMGpsvG_yn#JT7@cFy-L7{6vz#%Br-hFI(i^SaO<}PJctOG6%{^p*7Is@XR(m%q?<@kk>m}JN3OXjdzkYfN+^dMOHvU^rF{4K{r-Sm*LFQ$*K^zRd4Jq*oG+%VKcKljV@9^@N0_wY z7Mk(j4#zx=YcCx6c#NwB!Sx#bVinD`@&DXMkNW=id5GLe7-bTc3&741pvQGA3=S6m zosjc>E&A4-#h5#7c^r0!;d5i1cb?HJ^)f`k9lnm?%>?9=oNJvN7T&M0fqPLv$X(-n&VdP=f)Q|9~AHdXJ_=wu>~kc-E`A(& z6}755SpDnmbDC65Hpk3-n+{9cPwSb zvkAy5=7VaY(-F=dZ4c4hQcx$bP?&jyM{Kz?mWXt){|@Z$=$M}E!W4#UDI7VRy*fwY zoXQ)OR^#USJ2UIOw)lK8K6{OcLLP-rF|RFCy=kn@5jbZCpMh^LnHbu5A?hnoaFT7(;2bnFy92r zq2=W0x9*0s^^d^In;@cS@VTaBYxM9<)l*Y6&W&RXS9;EBZ7pJsw8?}^zhgcj!?@$U z7vE&B&EK27@_f{$0PV0YgCI)Hubv+xiF&WO0h`i7PNH>3C z_GKbo<`o*<>wMrn-Sho@P4+vshz1U^i2CdgDnC#cdRX}XfrOesYRfEOH0%rwN?~e; z_O=LcMF`iHOJ&2(Lh}|vWNiVIR5HAfnbt@Ydg%PW}1>;N9YKn#qsA$<0jq{_8s(Z z9T=j~gwZ0$?HzWWv^z?dqZ8SGe*y7wZv54N)KefCdHVu6tRYCml_$Q5X4St&r ze~CoY-Cnq&0gMsg{*zD#53mlvT0IG~UuLNeNBkURaeKj5ooBs-UT4yR^~YRu%lkb$ z`;_si?YybGFAiQx1BU+&MrjwQ>fhMNTWq^r?`S_B)8LN?>_tuRy1bo;8(bd=yWa@A z;Bc-tH+Glu{;IwB3p*xr+8yueB^IvS?_B79dtV4q@)>>~3IEIgYi(zFhCUrnXECIM ztqH#gG?wgeL^Z$)Ovz6-TMX7;$#gkG0#d#$T}f)UXBI|${m$N@aJJ0w+MgfnheD34 zmIWNYKHYt)en$iJZXw+>{&K*Jgl|yHvj^5BDVsWHfh1PW`OYXE!55+mgav)j$0GO+ z>W!yW(91HG#Mno#pQL*|JG1@fvx}N*V}ep*Ytw?><#&Z1HeJYBHDj;PeY%Vdz05q} z{K>A9Jatdw4sr~zX<@#aAY(Q40Nva*i#$2Co7md3%yiSG#c}?;v#mOp^;qg#TDRV) z5SOSZ6v2&zPd7cjAQNN|Bh~7c@%*{~{msQD4+cwgq#P-<#zgIHK@RIVW9^HBIZDs8 zH>lWP-5nTgxVeaol{MbiybLUoBpnUVwGWs68De=wr-QLJNt z>~Oc@d*{dFQcsHJq=w98eT=eBZo>FoX_ixwy!XkH~aM%breJrJQDrg`j zobveTY-oX+O{mhn2HF0FwOcC^l3(*Q(+$?^I+jD&&59x`Dq{WPS`UIs<7P6|aO#~Y z8YN5By+wxA7*+Y=f#sy?Qdt)2_F{gi*g2o5B4PR4$?78t?^Taa6bfg|VD|_~-2Tdz z1=R&1$K@Qi$sd&U6^d$B(+fK{@+~4&w##8*zY(n$I`?(@E>z^Gt+1cKY6*QWYu=QQ z)BWChIo|HoptJIS!B(P`R>~L5IXYz#z4vnCre8aWd_04ZgkwuBviR z#HwDcZ=yVXJYVgRf}}c2e2Vm}by34?CyO3$bdXV|LfP-=e|M+pJv@Yxz|C_+W6z&4 zinrTYlTPW}A#RH(r3KAGq=Xw{ zJ9U;WSvF<4s|U2hL02#6RA+Mb$SdaC4V${M!Qnbf=8vjOHv-Q2rfStkniiAr@&(5r zcDckLtLs$^u@8C+W;$(oFV~X-4&q&+DXks*#xjDBY6g_ouTamm;>x~XO$hpXv>$hR<1decYdvb_DpVj1)_gyM2X&&J%z1IaMoic@?U}(V z(@P!&;>(0(0bj?7NotTW%ie5ep>Uy}w!c6c5iiQW%X06#Gf$YFsXccO-&Gy+SYE#j zd~~IV%_JXpTHbAh-EdY_1*gpp(oS>Ox#3k6#<1|j2>YM6FSBzXf`g>{dfEj~^5vVV zj+&VB1X4i6k%Mte%5XK9|MU-AA}&^?Kp7DMQ^xc(r5SFEmF%Qw*pi#|1AUK8tH7ol zoWu7{UVA8I524Q44te+|I2twTDm~ygm&#Zv@XL`RC3PeluMVY|e;|*`!d4)|I|WqEe=-n!QWm3U{IlA>w?GeP$9LYKXyV6-kUp%+)(gp?78tjAA{ zr(mi^<0SkPI6$Ub;kO>mZ1go=W59|Cd!teInXcam1I}E`pmJfK2)n!GGu)QCJnLEK zKTU(!xpFScoY%x(S_(f8%|uFJvE1>5ZGMC(^z#{4K#YsRWsFTqah`3$d-p&6EzA?C z#%d9UG*;QvcNP_1jTXkb{a8>Ck=WBq;?}oluh0?rOz6AfyhX$^j(NDlhwxfr!58^> z>ItkI1kqLCWA#Ao2I7w^mdx6Ko}S%TaWy;c4_g6;PD9VQgpAxquJEm+rMQ*hON})#JEL? z?+%%No0(ES%92ZB?1);!N(kpkrxU#o~d)=?` zZhnZO_}lSk-{Kx&D}|$9*gK;Z%?kdW5D_!9v}t|5F3(}C#X4P07VM>;`N{R-i`Gw@ z!wpXNqm(hH_%>vM@#oL4{){uPOzJf%?+m~;W*>Hb3XbJ;KE|X--(GU#6lb|eg$nl~ zsZFK|Sq#Nl`^G?UT{^C`;7f|>pvbV$K=pbL*PnRV1-o@^*>e)P4mQD3tMLS_l3nV0 zyGfr#$HCn&!ncn&!LEIuq1$rci?r$v-57cHoXC4J=bEa{bT*kfMZBBSujn#P|T15|as=iqHI>4S5;Cz9(S@{^ycc`D&E*_?NGJ@VHyT zUZJ5=vi@2oSmCSB%=fav(-PT%7A2=EMe)!nNFu^j1N%Jqwn?TuN}-y$a@zKEw$o z|6BO)CH>dTVka_(o>E>Xt*pmo<~n{+^tL|O%4(U^|iA>E8jx=z)(VHbK1{J)fMqdHDf$DgdGa0u12uC~3=+%Bu|$ zl4T#{)gy?qBZeQQ(3L<)s6GMwsije}kdgSTO@eB2#UG451Y?O%P+rPW1}iQib8|CQ zS-U@YQ@ee{(9RR4A*&ybF3UfqR9Hvva!fTOQ8=T?daXu$(WFz|eJPW8!FY&v4Mm&) z;vF+O?FG`CZ`{)|O()&fdjd7FYoth$4Ke5N6Oay=E>+JCdZ8_O2Vaa@!W9`~l9ybs#0W8;)Oh$@;N-DbUjs-V8 z3!Y=utWuK)-%31!ISdazaBdpPV~g0#Jyk-HAb_?ONCUCv5Ii}jX23e002Vf2>PBB1j)hg!AVCberrgKt{~e~G192tj11Mq6t}zDH(r z0l=&ml}%`pv+33UcNjScqo1^~C|Eao+P(nx2(^XUg|VRZD90jAIrkbM`zEs;)QQ zH$T!ih6fQyisI>@TQHa#mA!<-<3?={1z}hm_?#H|fZB>_o-n-oD8Lb6Z$ij=Z4fXH zqZ^&Fvo%?#m=jWnm=|&?ZK3pDxpFnBFy3**D@aJcODS97B&*9LL~)Z`ABsgq+Yz>% zLCk{^(dwnNy$@i#=Qt4EfPo$nc$sX45I%WCgdFLM1Lo=^i zR6@5CZ#YPpc}t^b>>pMfdT1#3y;mOe^q||~*r8dr0Arms#OjgD-;ekF`;yh3 z1Ul&s5|}M0A#oDzL4?_q@Y&aWN_&3Uo}EvwdaxM7Qee+tXLXY@8AC8&F8tan;K2F% z;tRfTkXk(Syc_FUW?E>09i6z&v_Ke(PBhu$FWyJM z{meP$#~|g$&qoQI1CdDV9VFHmGAbNY^5%37|L_XGO6iyG6y|{d#tSq_;#hu_vN;ld z>y={mt5ahnCeFyuyapnqK(ahyrAFFhnr=>3*I#>7-=;P?_b%VE334Zm2uo3Rb41cD zw@;X`V`fjuxE5O0dR*k~D%?ayEz@bQo4%jWK!~%KzIltB1U@pc&K-ag zeU80kzL0Yk6hmSKCKbQ*aq5x9Cn>g*EOxg~xykCs?e?BELEoJ8kQ89QwEFI~fTKn? zTcXgs1qqC-f6?D(#143XA2_m5|EC2OrT{SGWlkp4X~|rT|3PBqQT1AXz*ij&e%jv@ z`ppYMgZSNC`H>_ZB$@GGzEj*)SuOpt0BN{^dG-czL8b-U3r={a?Vo#Z)%C7GOCJhh zml9xi+?{G@cn|4%pE${)4^a4EpnnWJJB_5s^(KV~ET{qL%iihn086!JksTRDC4kW2 zbUkL_dY#79!{Y+Q3C^%&RJcEgN=6xzdFFtq=SyrfM{F4YV;18hJrr1$QTAZ{nq=a# zPPTnT+an9~_4CXPu=v(WDh8Trmi{^W2iO96G#z`VW)(Qh8#TS;(41JZ&NGe98 zg_wl`5}dn!NO3EGlEgu~x=SDKnu70hV7^a)GCpbUMS-y@~zrZG+MRhmtjS*17ejP!m9Z z%13szJB#IpO7-fJp>NkoSAHr;Brj02Y+0*4*{oSrXEiY26e2PN5}}b%@nn7>GRLyt zG58j>{kcC2*TCaK5+4B8XZF-{wLN{^>w-u>`!*;SShWXT2w!p-8AANYK6QnfY7Iby zVdO8LjhGLrsvJ3b!yg*&>Fh&QEn9UE_@6y_qijPQwy8vfnrkBWX>zLz_S1*SVs1o{ zcp{V8RR6kGz+`G)_^^}_v$@FP#z|+9BTGHKF^A%|uU9Swxs>{{-FzYY$Zq;F>#KaB zS8u^DWZr-UJA#=S=cz&xr<*G;#>*(y6QlTXw#*Sm7(ZX-WHb&fM+D0!UVM?-VsZWKu|=DQRKs}) z_>!3%JLFEo3J3l?6P`qdUhnTi2!VJ}zCcGu$=8XovEsbC9z5el^%jfb!c6pBZ z=@hNfd|u2pe+=zn=}I(mCB$dE*cOdK1XC)USaX36;hh5-^6!oJ8~1PMik z=|+}s$Hq;;Vv8f?-KmAoe9zo?rWyUK_-ue$edP4wchSWZV-m$#4kRDD^y!Ri-aqw1nn0$t){1#JX1NkrU21-d(RY6~u6n*t7*r<(n)@EL z&$FXJN^Z%)fYA}l$%`Sy%c5G!EXnyMIf0;@Vx*5)lRDB72%oqlptTC2<)2rz+%c=LSpp~ zwKLZu9xQSY$!aypc|m`md*T<*)E2VAu53*=h!VqTSkN|9xm3Xzz{P;y7}mQ@m0`n2 zp{ny$7952rC1@T}3NVA;MRZ**@R2pI|bb_kA7* zUb@EzG?dh5=o9mpKLmOqAQ%^YJ;S&MQjhAxl^FY3mb%Ti%LT-Jlj?|Ho^cmD#7LQf z*p*O)mb>bVr0b#v(Zp|!2FKxGVspYik0mF+oWq?lG(Z8DXtHR>m%OP?OH(q>Y4rVc zlSIUgimQ2ii+LXPu}L85$Ckh&F>vI1jX_UPP$P;Po%d@QG@dc2;6+_Y=4pueyzX$} zp8DM!Qs>;X8!0H}udbm%v@XOn% zxkUaznTeuRTfPk7*nXNOc}6AB%n20St7zHJk~2vZ1}Y@MKIO0k)iEsrXN)7R09btRibv$+DnSpSWwO zIEIjMPO*8um!rExfN*w9>dDd59+Q-e(>0tA>>*l_4}#2kr6w;upcNzN<6+KK*;r_o;+DQtvcHWvLC-#&k?{{m&Y*Xan3JRMv1H@}yBe{V(!p4y&H$c=ez z+c$z@z%iibr7_iXFdQ@a^}R&AG5AG!Q)HC(5^*o*)HmDfIl5<`OVdBx&GftrJT-kF z%Bg7?Bv85A)!N1UZD`>1Ot6Z;qI5TpH&Z)6_sYF|ADh9tXs{%EF2E2xM!xmoDAmD^ zh-xfeNj-;sii>47-uK6x#gB+MPVRia%%x2SeywMI(_%MD)`Y3x%#1ouC2FN`hLt8A zjwl~APc8`g<+j|w4bj_HJ-?O;D}~1I->B`Pnv!8xFykPIT-ifAMb)YY`M*0 zJMl--K0DLxT*!iPrgi}7515b*>mIIyUr?nWG zbu{S4Nx>Gc4;jt+ehL`1|Z$3Jis z5?O1m<80ZDXC%sq86KKvMo&8N>*pFCN|8Fe*IiK09QzL)9)<3JQB9V~;xkRDm~LMV zPap|>RmwEgj36 z^M6+b`=`q9ur zORb%uQGg`bovpV@>P&F5zfs@efO&F>0*9QLXvzL$7?f^hF99|^II04G9?|GFG%J`2 z%0QDkZu8RtH8>r_ET49}v=Zxj^QBg`rpcC`YEIua+E6QDEGx3GayUTV^8OXuaBB;3 zg@E#frcV}~fj1?8?^NqbI_hSOK{VnrE!ff`rQ&1*Jr{aePf&vXbEVni`r>Kv@RN~_wxBcNGp@PVhfZKYNED^+r1K?%5={aHZr zcb?(r;Fnc!QmsQ6`MPyng^CU>-0dVCEChf=+*TfS+)dSwy_KCc>@W4RW03xiI+i29 z*DxH)<~2XXx#AJ<^jQkK;rBbTiv2s*8qWoE|8Bne1V>jV@*5`>sc^?LWF#4hst&O; zg~MXX;wVvoEZMsi(X^t(Cn35|>Vuffm?LGde^YhW6l&DyR{p{4qsY&{-UqGr3Yih3>PBCmM>_ssA4$NYK^zM`Gub}3a~7lB~eDL1;GxkjV#D6Ni+2o4@V{Is)Vb+%0ac#r;Pt%^w zxvL*b1`6+{2}k%YNdws*E5-IFZ%+iQ@rQ%HT-f!}PL%Y6fv|Ytm+|^z_ahJ&-H1tF zNofX`RdNko2UFfTH=Qct;k+1)?|Vsa`|q!J{t52xPj(iE_)?=Ck0}4yZlLk2X}3k< zQCk=0+9Bgv`grF-+tS!|n^dEJTmd5=Jl&l&a#bqaZzX;fUR>q-&?P7Oz*$!ESJTgd zW}8*s%YP-rJlnMH>>|89O}BCs^rl(=XLoY*Y<)LW5W{rh`8P>l2YeGmj{WD0Rv zI@4I!T$-t#Ux{bM*`11ADZ`a*3{ ze~;K-hGxEBoJp*ACVc8MoJ(?GoYUP0>#q0mIMM*c<8m`+2(-NyACFTpF6XnR@g-2C z_sIZJieF3ePFtTwG^8dh$v`YMBV`%p_qxyB^!aV{?`vMVguc}f71UQGMmi4;_-g7RM8YW8&XB%$66`g{p!$>j|Fx1ai1xVso_m#6=m4h4Ww&QeN zm|S5G?P6a0`e4~1a~4Dua|s`H(^X>^sN5$b<(bIG9p;&9}VMGeX#xa{wg|P zdl)JKII}saj>(rx8+fcUpKUlFVR*c-q^~XpBJ%@x!t}g~80Az>m4d480jQ6^z~3w$ zY-7F3uZ%O;VoH!?A-7~{V_&83AYD3c55}0^lu-ry()nMG-%0{0Lq;9u)Ll%E~(OSi;JoWk*P8p6%Iar?#N`W4@33sE}+D^2&xYeVEqB4i~I>9{&*2WtDF8gj$aH-Qs2ap@ANYN-!pMa zfoL)^FBmx_i>Lt_)lDR|mpyqeq&6z)S8VXo=?(9cq7x{R;gIAj8Cbnp8+TWuc11!% ziEig~dE^*I7NU+muQuH)cl9FEcKb&RLS3_TGEUNM0-wP4b-jA23-!j9@S_EeJz?+O zhWMH4Ok4Pu;AF5+aa)i8riT{_imD?4BodtV$t%_`bs)GjWQEFvE~zHA1+|R{z08%7 zTkgeVjhBIxU9Z3IyH{?;a5nlL)^Npvw4jj#R)<2=#f z_0lg%C%kxGPo*Vg*=(y1OG;WoKvb^c)R;0Q(@YGn1z_9sy2`XVQloh}<6j+6vk{Kl z7IWJcsM)ad^H_`uO3=4PFY0nXgs#r82BwR>XYJD*0&g&q2ESx-tpJbodNw9OnH5Yk%aQFshuDs@^eJ^WBEO-U3N?GaW(` zQKs#f1(LADNQB;{K_SCxW>?rrZP-Rt0_5frYV#Ux;oU_Jhnq2qUoaR}eC)-|e`F~! zute(xy3s?$cCZrap-1Cae2tu-3q!GBRk?$rG<{5w<+M$hb{Tfef|r+^7zi^GsR;6V zt-TFag7xBwWZ~`}p{yPWEOa@R0(eoBwR=At*H3O4P%Dngp-&;}7DR=w%$ zTUC>_5k4>p(PoGD{Q;0r9g4(4k0_I|%pwEZCY@i%Qpm{P37!hn&uYLO4cjEuA)MBF zk{-iz1df8`Y@cT@sx8a=5emH)e<{?30%+qld9@OYE+w{CGOmY}8hyuyKk=|$k$sF) z-v_Ih;`IQh`@yBQpjXrg@7V)^pQ*?1qr^S=Ugl{Z^~&q9GW|>xsYm&lmXv6(fp{8btbiYuGD@{oz z^-mTRqZXaB6m%;W-W_L?TEI$feasm(Pm}7W*Doq$X-W(As=dcys_IlReOet!f%qE3WOW22bhQn@;;?1ylB$a09T!mQE!hlQg3wnUukP6_NHC#*i8J#FR_ZL-g6l= z)*9_ioILgzEYjU0nyfCJ+z50~ZqDLvB;s`sy;H~1y3~{Wy2tx@BtU(8=g0Z4aFDbK z*&{P-c)!E;*o#;nFmrK=emvk#JB;G`Ve^u#u>I)-leD}VbNh7iQuNdNnVoueNy#>P zaW~?YjC8J~btWw2C&s^apT}dh_bm6qbgMd5_Hhcx{g5XrC){k>&HIGB_a#mW+6=Es ze8D#$7#`G{mtTY9X43#{&V^H9cl?!ZKGVN+r%~p#R{Cj$bQ?va3K)aFuT`%)7^>~X zK@W|ItKsa^phIhRDRCMG3Go(JPX9R1$n#wuIc$bBF}YUV9l2-~_4@ciLGdx+U`zl` z9ysP(BL13*5PvJqdJ4vSnt?324AG!osrdx{IFqJzyvu8l^o9sm0k9#mvZ2OCki7y@(>N8bHCIC#hVMg1ptkaQL zNUaVDQ4GL^-^BXfazn4^oL;w1sIu7oj(gGmcSxhJLMKe#jY%6{R}>(jIE4ZMr##h^=i}V-e-|q8zqii?PV@m>ZHrE-} zz}Ex0ApESL$4uDW>k~9rr__K^;Axqyu7Z9tbw-W<<#$dq5JU8=Ww6+|Qe$rPZc0&r zEW?rXYaN1kas-71&`vK!N0lqpSmH>M1;o{K)y)!1(y6aIc)$de5Riur9)=DX9k*r* zOl&3OJ+VC;Q7TM9$(gmk>Qde{y-ru+sIh+N?o3kt5pE`YvFw;R7iv?q_SGUZQr!H` zHtLmvnd@bz3wNcg?yxGnwyw03JC8a@d7{#GwTkD`!4UUp&0m$3wyLnPUU%Yy2QH-a zC15REcYWu3zI7wNE6FSswcKNCMaJ z&Df~Gtrt;}Iv$^r#QAQ2jD(68SKuooD$@Xeqzr$Q0HiNWCzc2k2ATnEzf- z$j3l=>RrCh7o=KdxymM5A%NykJ@OplIMFS%mUAg>!j#JdHRX>~J15CF_(lB@J73EB zsc7>BsVeSHTT7pyViWx>OSak=;Gd=WV{YwriqDnm!8qtK{eyB)U1p$2<^hjQ*_D~j zKO&&-GjsAj)|Hg`wN#Re}!SUTe1K4e{ zawEnxs=Bu_u3JX(ThpXYUMpwf5JW7#Z(fHKuPJ4xsGz*-6hm|s`bT7J24vN0B=JzCi2O>>F z!teI=-bM9FYA=9_FPaj>1^s#q&OFJ9pAJ0JT{w>T7vdltG0kQJ&3Qud7r6~HRV|R> z_1gA@<2FHjFGy^z*tLRwMOJNSIEM#SrclN=-(UvBV*uOZr?MrB8wCBWfs-&U3O<8nCJH(1Y~IgFw0nkmIKVS56M~BXMrzwsH3Nrz88%$ z@4W{I-K8QsMW|51c>~^?9_0@dNLef*$E(OxO>_lnrfER#zdT%xv6(;*Jyo}f2jLR_ z;1a=o(5^k=u6sm*eB^Cr&bd%3rrD-Ei(rp-bV>7YiHLsJTVbxB(JKqx%QP)15S&zsQb&q1 zuRMT<(F$DNr0UVjbL7rtwSUe_MPBBRE%vfZw`NS@eBCqcLZxNMidn^sbv?bs^6UCC z{4F)De%YQnC{uS%#fN9`yLkOB ztcFDi%?3YLLlLll=dJCw!yFc$#fh2mqLh?mztxTNLzxL&p;gofW=<-kGGpRukg!cJ zr(Q>#=0Zim*>1z)TUKl(1_GZu;8lU*NA_v=c3*K2=;u*h3((QO#=wcZ-6vHUi@Gcr zg+y~D;nT%@maaYQ3YfT=7^cBdN(Tv$FTxYn=e$QTIzpa@QG% zbM}rvT|A3Yv`GfrablptTaffpP}_<(ng=gF0ws72%E7s+bLJBIHe1>*9QpcY-N^$C=ag#XB3#Ug8;WDNI5y)6B}NN?n!HYJHq6QoWNp7LgdvZxKs=hXeloAkSR zQ!YP1sL^WmJhFWBoJQmujt}`j)Ax+P&5E&SedCL&sUy^9RpAZ!Cr-ZUXb9C2eJAW1@YoFcwIfKey zqcZ4V-i53mjkZk{e9B&5>TZJtur*+jSG%d4_}<~BR9>2Z5w}gMU1rM@X?}sM+V~Cn zSlI(x?zyf{q64DttBbako7JayOh@j8tr>2p>$Q&lf?wPGY5d#A_6kS4cT(vSQGMfC ziU9Vx!K@l{C@I5E)p51Pcjp1w6p}3UW9M6n^YfVp*#oCKa$W?kt2u6MN;L)hS^IGt zeP88Sr#*vh#`ErUGiec1P(_pbnHkODwxuO2;eSlM96kbS&sfJ0>=p1u4tl|xaz?U0T z^gP81%8|_+iBc&2HW^S44Gd+qZi28ZLk}<;HIG>n02nn1aT7c|VnZHyIkKh5ADhR& zl#-6~6?)+(SUN%RDd+Jr0SZ6<1;{fCA9$Kp4BSB4^#fz7=Kk1KtZ}8+L?BOc`13kC zj6_1E(@@!T7y-$Vg@7x6VJ}=h>>k=sSJ-e2pT{AE^(R>~BBZvOxDR$F+q2n@3nPSC zj9GICY>gLpNR0#QD#gl~Y@hJl3^UmhOR`q^=YY#XZsk0v3Z8`lzVkguqg@_rGt^ix zva8l5mQ63!64;}xx`Beb>|25y>LR~(L5)SDxR|K~sq|%7xY)C09_Ig!H51_R_KeXRqaiA(O)qb2b3@F?)2Q zbQtMl0)3}m0}09(&fI0AYRY~@3ghc^DD1)(k@J{HE^l?wE6cEBIxp-F3CRL1F548h z)1C#@X?*C5>4rWjfqg1fU9R`*{JcS;G^OzX+d0-Vq}$Z%Z)O*UwKb-ey0iF zf3Oi7^&90^VqVAI3VdAna(-2%B@&LZ;0+{%;fab0o8V6!+j8?xeQ#{EiglL<;LmxopIXV~L9#G(rniUTlz?cMZ)|w(Y%7 zAJOs^Vgi`0zCr~iDD6EVD2+$N1ch5E$SLQUB)}X=-qCjISfc2dlmw~fyH|z%JCM8pgR9C2@Iungon_eAJ}Q@FBA_*ee$~~;A+5I4Rj)FyiZL+Rw~M0SqBM8@ zrRmYXa0pJupr+)XrXTtFvI+Xd45$jDRt;zNyh3DbY*#p$=HFbu_KIKJYL5ynFAuJi zJ{M@zT@~x6{1E%lcA(YPeh9`W+=-N)s*>A5^)4Q&Plez;=BDi)+en`dshU>9SipBE z&7#L?r&?QMi|RQBfnwfUM@L|JRN&q*I)cXtWWj!Fwr1cZPPL^Rt~6Io+$ zJK>^KXRLl?tRl zXQUpSI7_~TJK$2)umkdv1SM?_BQuCaZQcu1Bb`{Iqh4)YQwJZJ@D4vABaqR4#fhz6 z{w4w}lBR94DiH!vFOm`q?`I}diANM-xbnk#I?}Q!i;JTK>dY_(#=dwT8;myHht{3qUm}lHV zyXOFkW|wkyaM+Up3XjmQXc$&dNUeA`FUclqHJ-}`mU)H?qf&m|Y;Wx4+4v@2WfLzk z7O_<+S-)JAr3rG01oHz};1*)*WQ(W@83tKrmAvh-M$|H~{}@W%e3;d`e0H8=u>(!7 zD<)T;F(&^+R{^ znr?+T$jUljjKhzFYFYUU6U%>W5n#k+7KVvfcO6rPdalfnZ`?%n;>W9ek3t#EZ zHp&-RUk`PYIF2PAB{;-ODgQXX%<&>bwTre~63=rjibAxpj+|-;wz;%RFBUu*wz;0& zyf9?b=l8YAOy!MAd$M4RuG6TtAbV)V!vk0ZQL8EH=y{tFU{HUpxit~~Du|7{u| z*zZ|ko?UW_*SH}1Mk9jD*-FA^LNv@)_j6u+Z}W}*DDI$9SpUZ$qCrw!-nWwZ}X zPLc?94~I1F@WY&P^io33(YSf7tc;E#>S5sAc7dz0GqQ(k0dh?ZAU2 zpyfjx@$;J~_z+3t;luBpOlg-mGMtU((OF`7V*buQP*-8US9^A)M>aWceVG#+09&s= zW7GqDqnUrh-F)OPB8G4^PGxJB#h{>fz5p_empsVdA)d}#UnG8W(Z>;b zUj`)JJ%bWBB0nTQH7=1fEz@r%5jV-a(Cn7oOfK6ch-3D^D4>k}dD z97Rf%<`&#^pzcam{kWpSku8t~wD>vNy#M;-BPX`p+yHb5;hq_e%FGJ)F10eXGBqo+g=V{c-u&-}_c`|?o&kpg*SYw9KJWKyfjiu| zC}I%&HB|KJ@JSh6nNXN5uuDn&uu_@kYSB|hw}=B_!6R3*{%U;wr;qj#e?OksP&QoV zpMwD-rw|=CsVNi8Cfd<+N7qEwsv}@G8J5+rp4@!Zxi{cOhu+U5V!x`CcDtcS`cCuU ztP4Tb-88BHoKEbt5@qJGHc84ahNM}sO|j{UTTs;q(_{%|PbQ2-M4aJCW*j)`H-`#g z|7TU4l1hUGweYE!;^-4Nt!}Uja?(z8fxD~c_PK{mZ30Hw8uZB~HIn_S}q(@%L77IYmbpn*8MKLQSJGm_0x9WWql~9vvBMI9O zx7s9_b*^q+5)d%AkVVn05GnaE8Pa+`_qRx>p!=L&hBB`Nt=>)kaN@0Y9;2;_ofcqn z?{QBUDeSHhpB_DqBGkcza+!46Jah91>aDBnuI~h*q7e1rtq(3p!%MQQwLuA zi@^`WxMKJ1D8+V^x7x|oX@=?nB#F9ce9E=uF~IG zvj!RbzbEBa5BQk|93C3k#g>#|3-5Zqw5$+;3d_o+ZAXJdfA>l_LvVRi+z{(k6hzv& zLdr78`r(_!lko8~g~}&vGdGtbZowIA^X@7Gg*7b9 zFg>0Ma?EY6FV($r;f?w&`?AN8r)U3Fj)vubm+E!AnD)Yyyd%RC0D^Gye2L|XZQ2!i zhavd>i&*}mm@`d8H^|NkBKFva4B5Do{$sH8^cn2-`NA^rjD~gFAGF`?#9nsCp^)rT9D{TMo zDp)hWD6_$q(40Vpo)snZC{|pZ(P=M?{HKRGPh{CW*?=7^?!4WWVo6#NNLO0y6m^oK zbw@pLJuH|mx*h>67my$cn<$f?4vREMJ_0Qxq3Kym2Mr3c)b%e6=17QoZW%^Y11_I|1| zS;yErcCQoF3F6_~qw;h*tTqcQ$E^CqC=cvwEBd zkb07l7G{?-pAK}K7Cqc8-{@XL&$e>StuH7F&h|4z%hit6ET^^svSu0Y#w672@B365 z;V>6>=`b6 zZ5FCN%Oxd?h#r5_waQHRa7yc3*NgS*r*exnC;tt1eq6eBI_S^z?-70ddmw5X$Xp+g zc1AH_+p2MfTW}fHi6lGu5TMf8V7^mX#N+qBTNyEGZo8y3Ix>c(wB$?&995O3Hx~Tv z>qJb2U?++K4obM4xRiao<{h1et1$LTu(eE@J1M(&*BmYQX^rCP+$%d+y3==7vh_xA z%KY=l5puTH6&ZD^yeEa0iuV{MVq}Vewjmimp@U}hDnprSIkr>M*CxM1^2M3h+}a{X zka4U0L}o#aq))g`|Lg(JF#9>>3*Ryb7q2Cro(%h0lP;Yvc4eR{w1Cz)<$FA}cQ|yr z#qI1Oje(?9tE~YQs!pwf`&(&Gh5i)0GgS#mYLu8o92v5C{gAePqGZ~px4>#YQ?k_n zmxJ89V~dzGQd(bfV)_VNBm0QzGhg*IrOX*0Sr=6x5H@$($BOYLz2H#@tr!H&u;on(Fq@?wG|J$i(LINto&$aUw`b>*y?{e0b!pN6S|iM zbF)o+4%YPhJAG;#zHzcpq(SqId*s6#4|PlBZrWFTxm*nR>pnT|G^l?FD+e;%-YT`o z1b@HbtnFisXDn90Dk#?S^BL*pZ}sy}W`xMh>~_kkHRww1h98{Q7dd|Gsr;&>X3V2A zBSkA!vb@e6rkwQ`d9IyTB<%8Z-o6(3Z9c8{R~@-i=a=Y1LaYpUlbxAY;O*#s&B~l-Xo`b#1bu4xVrXRqG3bhuw;eZ zwSc1$p1;tpuk3nNk6M5PP~BT6_T=4&vZSDvP8)W3tQvI$Lv2YV~KB^4ZG?czCDcVJa>3h+stKqgSLIoxdwyS zPaoeoy#s5E+HAvpN8LS1s>ogJOvzdRW)MZhc$6#?YdN;+upsB$(Iu<43_Ii36*+rK zl(2i_tfabm>1+ix&w?NuH5s>|uEZ4kkU39P-PM6&{VdargjXSnecRfYZkF>wQ)jAg z**RQaJ9e~S4gPe8?Kd<@?ntYGHJpOj)w(PLI%XAjoXE*n>yz%}W++VZru4O^@7_ObJ9NMB(9(fJcwDx6>k%s9S~2Rb`>xd0@^Vvj<-(Aj0FF%DW%e}D z{ifY(9wX2q?90w#qU1@V6U5=@4+fu8>Qev4byx%pADIF&>=mqKGXjNTB?-u|tw6bO zlcoO(GPaV4eGkK06pooKXtfzcgf)zgg|CS1)O z{^H^a1{4&X0yBopV7#2@2^(PR>ze9c(r!qg8OGxrMWP!(d8pJz^oz69Da6C8Z(|bW zD*XM*-76cTo7|eJzg^z(_ie1{Q++*^m`1a^>H(W4WR26l(>g=VGk*rl4nMRr=PQYx z@)T2$*gs@etHcV}X(e)ow4+>@7;!mv23>a4O1zetexZOY<(oM`vk59M{rznqm#x{@ zA1uYrWGH`k)o(~V8fEuh>+s(g(T6(ASoVh`r?p{3-<>TR1NXcFiJ|-U?LF&v<7cZ1 z*Gy0*YNoh7IqXu9-zQTmXd-DZVg4roz<4R@e;1Ma_#l}=!}#N$JO>AisZJuIe1$$V(khYsE1`mF1uR{6B0MR$EiQ6FT~1z_+&MDtfLaXItR%+v@-Ga0pa>Pv?ZR|aaB?5 zTDrKX)p>_sN>~>vSwcHN_($XPelF@Ppg;e83+grr^X0)a0qg?+J0{Hr1*auj(OhWo z#r2)P+=;PLQL>%KmcH)XY*oCrsX;fC6x{NOeCsLH{~k~iKvv9}09(RB^LUp2Nii-e zz#?Cyc}L7rGW9!G5Q(_k_vz&_^T=jaKp>F7irdgL~t z4@fqzPiU65{LLf$rp9~}AkR~g`#3NQAQdE}QYgryNR9mh=w1rUHxSvqn2PPe5?B3m z_{e0yN0ca?sGoFYdK=^C*51g@IJ&jZ+jjqaWBctZQU>3px(L{!DT47aeZUNQ>mfRPZ@*_P1>6ZH)Ncl@Te-6L|GS3(S&|(yn#)Tdy0p6&@JH*kX^XXFUV*<5!bsP=yC}0KWszf8>h(rk@9yXf9>{9zLiU2x?L;&`1aaS(xG8 z(?NmAPXxT?pld-CKQP^cPtURmROy2JTR>B~YsNl0Cq0pO|kh5C13hwILm5nv}GwvbY$ zS=fRLLXGki0Vyhnv}z;3^-(|KWQ_(SFVYkbx3Z&W*|p^GSNnr^Z3InEc`Ts)Tsq=8 zZTOYUt2oE3MOKUjsw~tu_bVV0X)5~5SoB~Z;@~2@zyyk%y5^2LZ3ZOX_T}#5qBcsn zARjB30Ohebi3aTP!=?*)-AGQ1|wr`B%wa=EZ(O9+_Ue z`h2po0a;KPh^#8D!&Vdoyi4G06kwIk|2$229Eb=DMg(%;yM(nC8mV3A(^w)*j|v+% zVV^ZFImJT+k$@PE*M75#Z|YG`*CXW3e3);8XJS2$t0>T8?Pk-rYEuo5>6~VQ^qgUt zf)AX8@0^@d1Vpi1)!)ei?0Q|({@gW6y@6R(Ab|wJjrh;FZ06cqlPpZ-_aTs3)0-#+ww{;>TQ~Y(vF*cHP^3_^_?;_k8ASPC_q+- zJSUaJkLLXC#R~n?WXJQ*;?8r(=MzyHA@*>?K#)Ya4sp!mY=HZDhA2Ro0{&z+Qjfu-MWJoZ;~Dis>;nJKeDSELHRU0btpDn z7?Z)6qwX};CD3={8ZV_kl)(zy>Bi;m`>^0HJn&@vWn|CgV)ZUxIzGT8t8zrI{CAhI zZB^kZ{g)Q9a*c5D@dMf4I|&sfEwNkKY@@Um8;{jCti@wPJrkU)Y1Ijgh>(qaKrQ%| z(aC7y?nYw`&Fa6~$CM4FPx~~r(&0!Y_|oNie?Ih`eBQ@Dg_VC`nar+m`5L+Iu5wL4 z7#=&od7yfxO>AD{U5^GM$W%^__~dpYDctT_ilfew@sCC$k@5CK&8s_6*p9&*6Xz_= zgandyRjOvLu^k4k1z59S=FRW}6vQz)oGxT91Hsilg@yuf4+p;UMQTKoum-sd+X{D| z?Ar01{^mqWd9P#|P4#)J=93>gw-q024LAFGiU3}U;nt-4j#MUIs`DlR5B$22ME3L1 zg4)vw*QEztrLis@xNh!NB6128)(~r$Bc31-Z^kamOkTTW0yU(q zL5qFZ9yb-OJ)FuKk#)t&-^$0Q9tc`pkEuCb4RZup?f#Y6`!hBP8OA4mw?F3>A=bO9 z_Vx)$+_T!rdz<1n>f(2ov_JTcZ51TN#X-o6(CbdFw@=#WG6^z);O#r0Azuj0A?^j< zIy5`fjMaFb(;E^Rcgw>zb*EKw#DU!#FG69 zmROOl`BWY-b+sF@npP)_^~==7?~O_@P&ZdUJHipe61k9nANw|rBlpfiNhILvfy-Jv zP>%x(8NYw;S2SY2s00f1-(!pjf0 zlttYKxnl>;fQFo*m&~VM9L7maeMt7WP-aB7&L5!GJQ*DPb$MnuQl_qVhR2ZI^FyY6 zcHfcj+x@C6aos1X-(CH{91TF$WbzR2KVC}6K~LR{|2X$JRqjZoS%d`z z64)e^(?6J4He{d9byWc<^fgC$LrHu4%6<=RM#0@#Fl$yX@ACM6<}HWsO~Hapi=Y!1 zgSPH^8ccf{dWM}+x43Eab1h1DqTt|<_AN}!sx0EFd0BuR+x{-$vhgDWnIpJF^0Vtp z1!n=I5QAHM2`*lU6(D>#Fv{YSe|JD(uXX(2L+eiC_p|1cKaIGuV4NhF>*DLAM8br2 z*Y@?RJ}WwWy`!vPZ(4z;DE(r!wpxXkuncY6MY5@>I>ZdM709Z z8p*-B(g2$EWbdGm?m z;I42#&G%bFaTRh!;=R2#-^toCmuz*6hOsD$u(;rJm;VeDw4eVM9r)`7GU##bxen2i z_Dg@Uk9;zw2C3Q`+4Q0*O%vlqq(5UJ)RKHdMG<>kNx+J5q1rM8WNR zP$+7i48%y?xWMPt1pz@x|Gmyw`1nW{(B~1-ELSI-U01R`;Zr|t*O9(*k$8=2AG#F& zbRf$1mgVuT?*Gj4&-jh|cPAo=bNzj?#SJnVY?D&TH?MpcLmR!~#U;ICY-cL_B&@BX-GDD{;5Rfb{cxsJ+w9i`*K z^n1?<$fy(iYm&aY6c=%HXOT(4S@PNilXPqKa-k`?2r1o;Oqse6`wg~h@|%`WCgsA8 zQHdpVY(M&y59QS!k&S54jYt21%q^iCFz6n*bV8KCnA}>OQl{q7EMhmcrwxafDrulf zI9XCNSUso6AT9W2j%3q5&|ykwH0>V=8iPeYuRVGhI0?20JHhO!B}QV$)WrB6K&?v- zEP8tHsJcdhJ)EbRxzj`K3Q~$8VB0N`Xht8pM>e1~nUdPk>hbMpakb3MpHGAj*)}R* zxye+6p?!|D9;})mAg8-(1l~f;8l-W{lhN3NCx0?0$r&=L`-M|&n1buw4$Doe8NH~c{$p~s7xUw- zIH^Kkf?QuQL>X04$pxNhRMU$wXpKYW*7V9kSV_2iq)JznIzu;1t zHtQq3T^}86@@=*S*%({qCamqtv}BJq0BA`r8=W{?$+fLL(SafR&@0ka+E`$gv;1}I zTV^~0klD!>H!+6@@ZWN&tJ;VSX(HYi16OhsJMr+QFg$_GOA z*jrN=M01pIul|-P+Tr(lTE@V9ttw-+JC5fM5sE_eZ^|u6R`Z6ge zP(jaLl9XBZEUc7+Fq1c84Nd%Du0ZRoE!IOBaHBfyFvyW|p;SoiP6@&Wu}1B!R!W7( z7g8!~rCWdMZ{LBc#6U!Rh>08G+bMBM*#FLy5wb`y2&w|54wj46;RhSbU%}|;VO)~I$LHnr$x>l&cVK|Sh!NiG>&;!f$Fs*)ZAScd-$nzC(8>I^oVl=#l5RA{R~*kj+L}Z=x~Q$Vdf7R#4TSopUbYi;O|pcP zChWXtIo+fY%Qaa$`dOzvB#RC@XM3eap3D`&mH-*P`hOI3B7fhJH+=d`YwNB~?~TY( zHC(&zr6`A$7V}JTZAw8O6&8GS&_F7~98+MMQW+q&WUbyPpCv9!G7+5&r8V27bKTi^ za5V{NVZt{sEOfw6Fg)LH-=qJifK6vo!+*=vr2j;k;HsYzt2Buk)V-7tnH+s#qM*I9 zXwPG8>H?wZfThZQ(U%8GnUTX{XU1V^F=f7vzqrr0CWDPhbN+uUm2Us@e9~31>i-VM z1;k`Ni5R|30xGGax)~MSmp&ztDPssVSUmdMM|MO&DRi?XtI_L|lh;WNKx(BBiSJVk zXePMX3x^|SrcogZFG^_U$Lv9$WS5lS3FN`PZEL8{M*5rKFK4!hK4&^y)Cuj^-h1Cx zLz@8C@RNXqPmtDm0Qws4H%l=x1(V|*@ir?pvmLpm}@rWJWNQ4JH9{F5ivI-|x{Lod9yduE{acd^pl z`7vevj*ub-u;oINIF^ms^%+b!Nk&vQNnck;SR}inMTFEQBEl>80L_Z<#A5?Nx)SvsNq#s&mu<6s$rPx~??R5vAkn{vpVc%p^5EC6kouZ*R+^m6pupVCXBR z8O}D(&V6>&|3+E3gD3~k2RJW>E^}X7YX8Ql+TV$H%RA^PatF0|swQC6XTB@&rmp@X zBr5&~YzITB1Z24fUDVwS9EIRSbF3AQwxv<3JB(V`aF-Kja~B6wq<1FgiiAwGOspfx zM4H*TO<;TK%Ja-16zc!#m{8#VV_ial|HryC@}DG8sfc7yS3$c(kc3jPgmEURlU!ID z4yGMA?8buT$?7`%oOSE%%|jY0bTfmjhw`?;7|am?*&c(?<5FqsV5S_^uVYqeAPdm4 zgLM!{RoomUdKQLbm?5SL={SLQ7}TFPIdtzZnsBE1H7^J}hyU}vi_rmBd%dFlr@T2nqbBN9<2(Nfi&HJDxe(?>^bkG9nxw=!W>C~w;{WJgsQ8(5 zuOT1%+>sSp0=&px*_wP&S{D8RG6T}&gi~ppHSOd@qDBTM2{0mP@Co2-df7Jkxk4|4 z7TXKXDb0&yDcw$qP`v%!>)*1)cLxp@(n=vaWHQ`WI0~T@@7uFia(U1XyJOR3}zYABXUg49TszZ3!_y8(uT92CRJ)bk4~9giMO(Ev)o zpTQH98*jJ5)eaDqp4Cw`^-r;pMEq0|GWXj^0WX7AOv^qE-XhoTo9?m?$VU%s zR=HlT;ecWeapAUjQ#;2pTsay@b@M>;GJxjQWvt)z=|N51jww5(qhY~s`Uvj*l*b3Q zomz$9T{9f4LSX1W_B4U%Aamw`15)Zm}SF7_-Y{zO= zmXTC%E@eWa041-j(qrp+XtLGW`X<$ClxnhM!w}OMAVj!TI6W068&YcY8ZndDdpl2W zz4kNST~#wf>FAGjQ~(Jdtz&yrFR>9N_ejBb@zRxwYX<-Rc+-^pb0)9C-3SZqhG|qz zp2UNGgFAHOz!~o9(3YlT?Y5%dwoLA}oqSoUc57U&mYWiq>BtkM9j`*D!D- zwy1Do0!@`gcm|tc?l)aY;Q|84SP6RKh-QZdATeIoWh-u%~yg@N=d@ z#Htr}L7cfHan#-rcamjo97(lux7%Ae<)q({x#SatSSxjAVPX@zdH zyMSHJJSApRhoWLM+Ced0!@G)%F%6u#HEo4}ft(=5-=uG|{yAulfgF`-nS%SBs>r^I z@4+17(nPMVJZLGUt43L|MXLc@v3^cE-xO^NlPnFDOi|H@&s>dTw94s5*u808Dohl= zfOXzcpk452?e{x~SSrrtyFQ3MwLe*^nyZnSEN1WT&2dh&0wkNcM?9b64P6=1ojt0^ zDB~20j}n6JSMK0G%NgX7kaoW1rw~=vmtG7&x7J=*b%~obs@kYlUdUEfeS3K}SLh%3 zK6womiK~99+q=8-r8t|TET&(rK`cmOxqEQ*dfTL=v@;CKkXxOzxYu!gv+&J_26uIy z1flFNBz-a9_o18j0?MS>a7-BI9y3J^uHjh`T*%H*AyJYV%B&1z`{e_4Oz&%u56bu{ z7W4X5y&v;6Qah3rNI^%=jOQz-uSmq^3jA5C%O?#W3h|F>0Eep;-zu#m>y&B20!lvBzsdRpO2x9&MX+Yd#+~KEi)CdjY}#Gf7rY zyfu&+wU-gL8ejagaDM8NC@IO}V2P>;OzaIqk&fgcECijClp;e4!a8(fofLlW$vC)c z5BOfwDtx*>Z^Z$WpBuLQE>`s=s6&5Zl;KS0sw`|pYQd{M&Oc*<9-DAScLQpj1dEeOOag=41b46k#&KG@bA0zr`X!wdB}CkuwoNNW zb!X&6)4>6)+;b&tIAu{;x*;mWj(_vZ5nZ+Tn9z?l$_-Ky`u5tb3`f5|B`+cDy_V`F z-p|5qleBC20%3R8hmoN7?#9mXeYSh9q~Ca1ef?Jg4UUg&b3Q%*22-O z7ujEEtc!OPVx|jc?ubu)Pwx|}iLg7pbj1VbUvO{S3+&hMbixfNhygvwfA76%r|8fX z&|BTvaqiCKQ^&kvQ2NRBRD%uljUdMUE$^1S1n+6hBpDwFK6Znh`!D?tk;_LjhDCYx zwT0a>nihLf-ue*tYRe9I2QPRU1gb8JMM;evKVLrv0jm92b3 zu&l%P%%;>}BJQpZ8ZoVvd@5pS9b8*XY)+CA{aCbX9Icnq`1IuARpSEo%7B8eRl6Cs z%o0Yn{{Hx5lJ=XxZFgK@%w7w$$x4A$vm(LMo2Lk{SyWEXtggZfh31bQo*IYMLSwL% zh$^W^^dh4!;)iyo^g~P~Tq{~KiIBlZClK63D1W4${T{*`kO6QuK$op^Xw-+ z-!}R~?0=G1XfgffDvQV7I#BPP*441rofC&P8g|_s*MQp)`Ka8*>qiIT_Ky9_pLeZF zr=={fTcy?jN2jurHpy1wPIkuH9fpRt5Kg!$IL)N}BJt-Uz6U|T*afx{<5)0O8X0r+ z=5FlejmvojIic!Z<-|?Vmh|u8w8ZoSj9qWZXdl*DxVTtW@>xS5E9=geDz6>uCk(Z- zv!o7rpGeHA*|`4j$Cl-Rr@xZ=%e2~BFYC?ZldcSt)KxOr61^PgFX_wlv}vk4({f$r z6SBr=^USF?Qo9FDefkI*oKv4|wy*6XE>?)mgzos_K>#}p+_^#IWhm+5QCAyiH8E%( z>;%+`ly58*!rs@kfh(zt?~HL8<&kEXxDh7q!w{x}1S+$vUDzNr6fUgr2;!cM3saY# z1Q~#4w0PoQB{`c)9dUi}+Q(`u1#SmC_7pFQ0sKe%|3UI};S+9nA|wFD`38QeY2FF^C)wx}XO+vynk`zBI zL0ak*^w-4+5xNI>Py>=Atsw5W1o68Yyj}@7sSeaGo>i+i#!ca8C~AUb&Fj4r=PZWR_5BbdEWo zcsvMB17js2Xg;u@wtpr@Mw$W&Q>C9SDA=^ZH!kkB=`nCIP%+{~S}sE0Z$|nt5eyRQ zQXr<5B31MZTQo%c^F95#mEMqt-cAoGkzPzGL`8`OUTL$B;Tt$CI^Dl;KzfS=jbS1D zckS?2mvdYKb?F>3H&2BLs$49gyP%AR<^O`FJ$Ah*2QoMg=%H8$W8I7Sg7gu+?yhXk`d8apmg}Pyh+|T4+a7 zbr4V4$=|(|3^O!^Ef(fmxjPCS&uhP~aebi{|JSQD;KCe9K#eclo0Kk{0UP|qiHvZp zTPZVm7U@I;2Wnuh9Jt*Q%$y>zS0BcWMMSR3_E;B~(xIP($5k8&N5T~b^@_rKjADba zdcC1|5?{(lUly%1Yu!Ymd+Q3TwJ3lC%>g&t%Q^KgBgfzK{bo&@d$k_bT-s5+#dgufRP zDI6Lw1W5Q2+=t7x6GSq$2wqeUmrjkl9OO}ZC$a_&Ka4?~BLOq<>BY~mJrpTnv)?Qi z7m|ekZL_08i8ds}xA-9I4#cSpQr;@$_z>2MP~rH$CrwsbgY5~N~l(1e$%+1ZR?LfVi4>_k}I811+s*5hD&Nc3(hnoE&Qr#m?yG43~fdm z{3c7am^(B$+#o&*6f=+FSfC5Qi|S>+&;>!?E9sNXfh^$@B0QKdM;7AJBq~>cx+&0Q zY$@T#2=uzZ7T3U%C1rRH$)c5jE#;%?Sdw)FOg;(K$&r6a!1F3`ioS3U=*I3h}(QM69rL)u%35Aa+T_C8-IQg$qn0HH|voFp>MGi>Ff7)v%ZfM$cCg@R2KmDHpycL!pgH z&=y(eh>GJx=NGY;gqSD^ITMdSWg)`;l;4-<9sCm+5_R*+8s_FCPV2AOqe=V=4W&*} zwPHmQ&h2Wmz){Q-3qQbB4ZK(Tt{SACKgmIt7RhR`5Z)vxx8?}+9HRwfnUH-YY>J-Y8Ps8+s5H6 z9aHE znk=|$5n6Q@e(F2QToyEgAQHH+nh^==;t+##c*uj`Z7wnsIQ9qD^NNRi%MK5gJDQ}n~)U{v?uFQzC+oq!W@wE|2n0ds?eq_dE@ETsP=f)R-F zqQL0_IDK(QC>!PqFtd>-GNWlr?=0VxCaE{<+qB9Rna0<0M|RO$mA(ltoGA2;yc{}Q zT~O#nMMu_is~g}#by7^_!D|8j4P8X2JhtkKObPIl-69(#(eZIYM7QW~ftZF6p5#q~ zl<6p(sL(e2u|<6xgByx5R||^83VlbRj4JdUk1QJKwm zr@*|AC{}Hph`TuE(?Y%(A#^zd@5wMh)NS->%KxaqSdy>{6SN~>B6v`Jv*8Hx zn?)f83cOy#kJaPn1$e`M(}9VDAWu~L%J|3&(X8vUaQ5^c*7$_B2xO`cE4kJYRrv4g8;|=*KrQBB5dd*jjc0i$ojY;^WUglRtuA;7LwxQSL^K z6NFIcZ`Slb&UEIz*__;Q+?42d>h$Bl0RxvF9D7b^PA>3q;{pu#2)c3daV`Nj&bo3& zfcXil?r@Vztk--I+1GYGsgbOA^GYM}X!y|CzCVbQmnIQ5f~T5na32?$FF;TM#C-wE zh+Dw|P$AftxdcoY5&woG`kD3Y%*(mzM*Pvg(}&C#QUVA$E<3by$G`JL?*7G_eHNK^ zo-hs&z5HqJ1`mS^LSIP7*Z;=c7U0JDRUloYeBz~$Am3#^(z=ejIXV9`?U)8iMxwey zkBFaSU?K#tU4gfEkw{4Z+*N>TbIl$~Mg*|*Q*ABh=wwh0{HWi}=#;un~>oBW~O6lkd_JeTy& zk%bbv!lQ@L0UgLT;QcHI_m1-{>+{NGmqw6}Gy8A)YvA}w?gI6*<)?s^zD3;`Kz{eR z$8a|xJc+OS57WrQxIZM+99(PH1+uO_%Xzr^4v?+K;1!nUqvdgljP(U%oc+C_!W3j>N`PdSGy+Z<| z9uYf;QUgHY!Viq%Bci;^*UqE(MH__nP`GOUv;$E?@MfL{;#jTPhFY@iO1&qM&eW!2Ic^2Mh$h5$cqpj|e6CztCHPs$+ud zpI0XV0gkev%9^~>m$$B3A6AWPyNTK&go zscq)PuwgN7Vz`tlHdMwRQ+8aVr6K%BIXZ+^z&$3F#GPsYI6?<+m> zYNWE;j5q2F;+%b97R4af%U@M|{?2j98oL^wePIKQl6NuuaH4!iU^Kco(T-C|-QRO{ z$;#)0SFNq*&DO+s6OofShYqpLP1|Y*Vj_I6V*RzlM}l{KeR-j-z0MLsO+Q!Lsb|>D zsJRy@uko#kb$oUP6DKJ@KX5!`D?Ll+&%^JIGweIHH|2~Ow7ZWk!uy_T&9?eAyWc;) zN`G@FW#3jA$hMzOF7Bn*_bxrghA&-cH1Y`TwS@o>)%_J97KS51zL z(39^WH5*>U?;t~j7T>-7VlbU+S%aEdsta9mk5oUXXN~D*?bLSYj7VyLONUvG+B7GS znkFav+? zDBg~7aL(XfaNaLHJ{i8~>^?~mr(R}opX52ZYQ)xQ)oFgjJmJ=ZIrIg=iQCVh0U>Dz zv!-~R3kB}=V8qT5O*hs4TrF56IkNV9bxyj2{htx<=iJ|=@2*Cw zYufKFc+fB5!B2S8IL5QHXi}W9CuecmAzzvnJK2($TaaP0@CWk~VKM-@??o3B%L`3#JN zyk4|m`Bb%y+&!#0ijW(T^wRz1oBzQ*jjoCm-P#zHF0!0_cBr9CcyoI+KCLvVWPM-x z8Gb>;wqKnyX6k1@-a+nQR!zHlxKychQtu)ouCHe;=l#(<3S+z-f>p#^KixLo9B;?? zRjYo<)y&s6KmJu@^DRA5*pC1oPR<%;ybdiATD{3_eeZ)?aRtm>T~k>9m;vJfWuKZCHR^tomsPtH=2Nd*~DQPafr-vdXve*)#4e+=O(Bm?;OmEpBK%u21|3? zjqqz`=N@~hvO`(Bg8p56*C(#-wqML^$uE|KZCGluFCwwdo~>EC5@|pH7bOXsOV#`7 zMm)mk6BTX66i`~p$<`hTv8`GDE4>8tW(KgrBo5c)`2JkS+IA{m?eMZsE2_#swie_( z&agiIks2bmLp5J5UPIGm)c$GZrrnIiiY+6^4w5YFYF@0sI}=z0;nX!$msUC+YPAzi zN!9qNpYeW+MivadZVX<@BXcP!_P~^UYqgHmA+bwSjbN4G+;!~*aX#{T1wNtJ`gq9_ z`qt?F-l>!0MPG;<&izfhPc|B-Dscl^o&JQ0xmEhFhf%g>^*JFqebH}t?~MD|;yw@Ufj_u_K`t3! zyH^)miHY5*gjI!5UQ3py^h&_^FeTCjvK0#SzS#)PVt#9sDD8FV6W{%euA*lAw*r_a z0eM^q!BZnby5WMshn(opk83k=2OSkZ`1F~K@-z;QD%D(BfEMRXBheG5x5r=nY%xbY zymi6fmty)*-|jXe#lDl|mF4rT$=9pUtCTkrwN1ZBGIK=h_YS}|5mJ!GY;qd?9)n9Xk!^i)mwpc#XK0E%%%!*f-I)dOiAB+iHVPkjExjCSmRndZ`&QJsYZ_P6AtP0W>QQKAn$8Y*AOSPfwPGh#p zuRQI%NEUHT%d2X|X^vSdO7xUz+qdOUwOV({Nx7RhUdA8aiQe`mBhBFORHk7^5XRo* z23|cFD)F5E(9ov`V@U_aH}AkeAILd}GxY`jZ;T}LYn43LF^6od4H|z2ZLcFa9ClYK z^RxgBo=+CoKEsm3k{T|+DI!RZ>Ybw}!@|4E!*upnZ?|(xPYe6^=zK3!`F_2vvOtik z#*x0K#cKzm`AO!N0N8dPHX6o)5KsVY;`16VX?eLq1!b}k7G)3PV-5{JBa|1Zd8N|5 zg0wCS$lUA?>c1crrNDUN9QmV0x8`DG#=ae28}>D6BG6Hg?-7t_B&B6-a{0aDV~(*k~CPbzb>bFFCA8>T*FhIgQb-WVVhz1pLBI zmp3L{7+Dr_73y|*PBMKckGj9__KcOZ{XAuLQRQaW_8&p%W^a2$;u&#@Ypdn1w=U-p zAKd8{qLnzoc#^2IIS4YTwqzE&)lh!^(Kg57O!bh(&L(oiWUnfcn59RrX!jU6(|LjN z`Rh5a($zczGCoc?*leR-DF#f=McQ?nQkrxeeG$NFDZ0v2mZx6=nehu9QJh=V#^?EL2 zF<8_C^^XUqC$*ec{3zke`k*Y7{2YRWFP>rufRJI9C~H@i%)Km%{$7ZsDFJYjNwMqP z`KWEDTA=0I*X%&~%s|5%a-2qspBeGJsBe%ijk_1ae#$UA+XPx>RaK~8oP50xx3Bsk zV`LEiLdOtgF=cp9)WJfCVIl%qf5okM*?=4?Rc2?p5ra*rN4xU*W&tPvn;-uskNGU3302peaC*#tcFU9r(pEjDbgw3vYTyO z_0AwlsxbqUXF`INsX5TyN;ds}vsuUtKnSrNnM^ z(zKsj+r7W-^BfT~nJR1pp?TUuIIO3;ZJufMBI8(DJkZi1#Yn)GAh9Kw|3eZbP1sVG zYq!O!v{A3m@?iA8D5v(FN{bNc_8UP&02-1^I*P=+sBw$)ncrK zri^GHJ^24nbRYgy{eK+5&%N&Dy2icN-d+3Jvdic$dygd9TPO)psyob^y$M-~LP#a4 z?{)2&m5^j7NmQgFzx(?O&N+{BKcDls@6Y@Fdd??Ry+rg)78~&O{%&GBe&fyOLQC@Z zO3){PB{FsXP)*`WOfH53pcnwgG#YmR9xPc9O-Ahi2rse#Q{+Sf0+~AMTlKgnG*xqC zLh)-_Q>(NdSdjh-p-xO=!B107ZcULI^~vMDWa%-AWjJ@`L}LSAQt*LLVn_byjL5G3 zX|L2ysgp_GFeo19q5{dVmJx@ZKywvXUI#&nip@aEX@NlW5v-a5_+JlYQ5C= z|2@_p_>*h-qQhh?94{P1egiwDpm^s2Ts|Wxe*CW{0ts-nk=C6IY2mL}gMh!jhHPVc z5C}#8Al}=Bm9{gQRjBIHE@BGm6;OVodZRNI$>y0!m2VIxy@&C3P#9bU%Eg6b z{?kjAFl!FZeuyJf()6s(!V;|PY#^@;K{LQq)tkTd$sr{pe;>gFGC|5S{4`{C`T%R9 z6PwHTlCp3{~LXJEbm%h-Kd7a%SkCY_Dp%vV8pSa-x}0! zjW7d=kBlciB6f7uO198$fcTlO0vlt?g|!1=?GR%m&VK8^p(M6`CpNu-*=oC6oFG9g z*wBmlLKH|ASpdJKotBg#`Iz^>M7Rkgj0IVgk{(OX(E3N1`^u#rQ%)FJY>a{%ONhv8ifL<6 zO~di}yi2mmj-#F%Q#hd|dq(wTfBHDPdkh3)W^=z{z;su-ylNwrMWX=#vCHqdd#MqA&UEz=mVca}Se0 zYnY%6vyY`g@G;@i!6!*c@dl%{P4JZqTK8uwb24gp*__8%q`k;o8|}R#B(6*+*_-pM zcEAuc%_xDCp9(s$_{P_oB3=$Vn~8d^dFMtf*7y-fL~r_E?o|5GIcSr;kG1)wC{nXD zlSgCm#GHFmqVC)y@Mnhe=IM6$-;`DH(xtt+?zsy~QG7~w8<}e3XG1dA4Dee9i^78V zkj(3P7~FR=5T7Zhn~#)wf)3`TNtC}L?ondwm#N+({3L-zOD@cN+QC^6(gj**na4RB z6gi4wa*bXI5eGSdWm=zgW zY)Q$~hpDM={4TUM|7@m%j3x_}d(vjy#_S42JraWW0sR^nV$1{N0*JhIta)m$yYG1E zRbP((^7WjjQFfh$#`S}aNe{lH#3m!`YLd%bPa}^U?iJ^DoMj6}lHB#6pf)PrJ%Bx& zxhk9xG4mmbCdV%_8?p9%%k|%ku1PeUr02{aM(B@hrA$|CsC| zM5~q@5ow94CG!nIWk0O6qDfTlJLp7tvH%h^AG!{K z&5)wzq_#aNYklVVEZ|;MDO5$plm6exK--0suyow*oZy!>XVv`Ac5C>X4zLEhu)3B* z?mhGP`ijJf1PRjzQp!j!3zW*=IH6=#1s3Mg%Rt|^s0ulng&Nh#13`X9V1Ikb>9SSZn2 zk1B#DM|2y4U?852ix6YiTLLrvwyLumedSho!D+J&>zzHmiXQpb`W?^LM+2OY54}4FXNb-EFN&b*{{)z<8GgXtN zXDwmjfuLj-`9e(z0rHpm1r8EGd$LC2n$AMce8}ApZ1TkAfn?jDVM3`N=xM*ch6d+Gp%k{FD|xwg^zb0Pa=$9vT_b&qfwrmZ0A=dk(?D6qZ9@?ES@ zX;fjNcP8tnCUEWc8wj5_58a+CV_qX8^wQZM4ckK^086IbF0AOscL7qp(YkPfxG8500;FG)EW8C*O&~(ko|L1XxOQcgGZP-zJ-sGL?+Si?&@BU_R_nic# zhVFln#19=)#+O|G@@>4f0=*6ep@H~+i!0YoiA>MHr!1ZeJxE54Ig6jUHreZM@~l_< z%~Z&iwFr!As~+t;m7;VZiL&B;@dVuD_CZCPZf(wIAGc2|CoX|@jJN~wtw7{_t+RR~Q5-{rIZ|>hcuf3^`aJ-E*IwrdrP=ge_ig zEI4>@c{V^09;4276$wufgqyu%ulezTwo_8`D490E>YU7?VD~ZPzEf@}N!0Xch%2Zf z2qc50nq(%-WU$&5agTW+LCL#f$)ID?4$Cxdng;@y5`e?s0>VucW4#1#B#%kP)63IM z5APjhxv=%$`?o0wTp;+D&{fCAuHP+7a(O?op3U}@lON@{O~zs&TpDA3JUc1VEn(QVc}^+6{72sK`VYoqcrmv5 zn=`X_`y5UxFj-CE$1nKs*})t?B}dcbXtnN4&rf{9zQb|C`2b6R!*NI)3yO&Dgi1^;#*4Lf-%rz@p1p5v z__p+FIxuTkO$$QaEMVbct5^huBQW7Jpv^kdaS*)ZEkmFJ77kZZv{~V$LbLsB45UBE zpbe4ZEVc#5-s>1_0dJa&mqqJmYOaInNq>YRcubCN^mm59r<}5bO5`Q*Ik9kQ2!VQ~ z2d3UG6RtHAr8Rk@eica~e(xYN)PkVZ03y|RHIP-SiHr#1WOmB7!_mk+b^|U=u*Vn**Apl7Gh`#_~#RZ{`=6YBibF^4EW6oX5*yR za`MWk#@q3{TAgbrp9m5&;7v3jsr+uEY}WQpCZ~!Rk;2Bo9_!+>Zp=)iytm%OT6cd_ zV_1FJU~kOIuxQ#}&u`-Ad3|uCV~CY!BKx{^g`wY@;>hV!sOF>i`Ymd>Mi2KOu|Yb+ z;Mgck3403M=4fjKcKU@(^To$+OMa5@Ndd?cz&K7Vvk4dO!&Qd`3zQ~M5J2Bk&dx3? zX>PrP;9%EAKch&l25{@7wZ6May=IYTz~PudIP1%drcOnD-4Eei;-5krKi@=r1lQ7P zE58L@wK4prr3k#xDdWg$|JZcPzv9BVPBvjD*_7#YC;`^gEBBwWCKquQ zw)5rjcbVb6h8JZwpUwKb=eD2qo$%%UrqDT1(-g(9zSiHxac2B6@$aY!Aw0eEi%MbAl@Bkh*u$yP;0|5!GyH8I@72{n$9_6q}9& z555D#eFd>J+kRb+36VCk86rs>t9f8PD>Rrp9Du4fkp(%uIj+xit8VAy%s^hxHfi^^T3-ZfMH>oL!NM zO7xmysKuy5BzDFUb;8LUH?Z*v^%cXHGfztV%Iq`DelEh^945OCGwlkOe+Dwj%K5Oh zsw=-tRNJ+&X|x|SYJp{CHT$_d49&Fnh(&0OrsfCm(P1Gk3NDDr-3gCNAcgViGCD~i{Nt_UxQIch)LMK+{60q55)o;%OetnjP_XP$!Y&(-b_dv)xj0HP7=)d=@}jvg@%)$V{ltc zC4#0N9(g_@Ey?dk*qfdqecfrEcdK3UHTV1U=IrtRbyNx+%c=@mj;#p>sS^akTDeczwlfv z(=Ai6-W?eKrk3_Qx_}~y@XT@m2{Q7<@7@;BqRFE5jE|Kk*X( zh#u2I;o3S2k$*u)p8S~&U1UEA!LgmrjL1IENb{ik_()4yv^=YKFX~+p-9bwm^p2;Y zD&LJLL_dkS(}_9nm-MVP0j7oBSa5zFabG#CPBHNMNcfnqPgVmf#&vg5UddIi9zzCMV2!624#raI4ngkGUd^@hD=RW23}9Tgrcker~1Yv{puzUlSR0tHnw-+SUO zrACcz4@~DX0_2uqN!snZzE&_g|Kz16;14o9KvZuWz7L^7)kCpLf8gr$A+Z^BxG@I_ z@%EsnVWHZ1Jo>$aGH;_^FDk9qh(+*_AFKI?F~_?zX|VQ;b!h21IE-4>r9|Gi50K3L{` zIuow|@uGQ6N^UxAQ-mZUpeGH)r8tw!P8=iuWf~c{0p|pNlHR6^Yt=US_J3 z-$}E^EFf+lu!uvL!*r1qf34c^NbF;llSqRxQrUr+M7^J}G7bv1Bg4IRHe`v1h*50? z>x*eim)^%pop*ez;X+ko%2_|(%Mxip{U30L!6xH70qc#dE-o6G;6!cONm5aEn0<5HYI;l!fc z%2GU>Qj=n(pEA8OOfaZTm-@}L-lizaX#?%Vin^2KJ1;~aHeQC^RPVHG*SfsYs8jEBgtiK?2}#cV&hDN?qSbpb&Z^v#qEc>P&^F$duV3+cs=(g8n%FFZ zP^!!yih>(h%1?$#)(OLS1-B#w4T#nCVl0VB%>z6Z+NGl2rPoFHWqY|LgqWkeLAUH;vL{n#oN~~+$fB}wPF>8# zk`8fISl;|Fa?vH(5gDM-?*o!6I{_ovf?dCbeQXJqm`F=e0~h~ad7HvBf2%qlSey)| zi1b8gV-70fec&*Qo*BW-08H%Y6fT#P2$hinMogj^CdIC4>Qr5%gxUapSoxzvtGQ*A zH?zz}bhop?cgwNrZNpk70fZ=R2x-ueAY^5#k0|& znJ#am$kS;R&wDy0K?*F#w~)*&OEjo?f}5kR;j!Aox-PjN7pph5J`q-XH`S9H zN6k^zM8fFC>4pjQekoaQD)5J~RYbY{M_x(@EM@gT5-p=ShX3y^MVr{A5mXU!=%3Dx zSPbKIME2;^vK$%^-S}$oaIA_G^N>{rvjs|oA7l4pH=fKc@?%AlTe@?ubae-H=@MBQ zZpm8KauY+l{+e|WLaCeTuqMBe!_ZABzDhGAsuDiBwKYfnc!@^pud9M1Y>5B{M;^y8|?VRpan-r@fcSl)WRe zRH~PtnMXQtVRemJyy*fQDvfc+Ux_YtTIHi!n61w+5`%TyoHM~ZF3hpyQT0UiUF-y* z5Wc*O=WWMlLWQLw8L}OCH7|n5&9#$$Uo^bVC;nEkmg+J1NqsSw_`;)0XDT%0mdWxo z9;Bga!t<~I&b)D@Tr#GWUqu{J2{^5&`sL*PN%N{qmpY>SHHr^V=~}d)ZsvwK)~7eZ z=?&WtOVptd;UNP$i&6)fKU4<4Owquws2Wh647)U$QtgaCi^l(9P>)8cp4a*O7eQzG z1;fVbPPlgErOohw7JJ?N)Xd})hz*!eJ(KW>8Ue-Y}O7s znsuqwnuRDjNS!_YI($9sMcJc&HVuu9CLw+zC52rIC1f5ikf0Y%bV@GpVH3+4mW33% zNfQ<&zdJ`}W~ZCCT7pUjrerR`05weZq0I=vP0F?<#NUqr=K$~#3ac$-fQaK8Ru?rX zS~Zry$l!Zh@G2#YW~1)*W#~H-&}!|#mG67`PsjCTtcOZU4TH%^@1V7M5?3uej^ zr?Mo4z}Y+sntXDqV$9V`t)_`7&e6IfUry9UpM*2J=#Y~ zw-`Mw$K9cLh(xQU{LdQ5xkTuf$EP=_BGiylm$7sID5o-1k5s9j%R{sZ;lk^oqYgnT z2KZ%3%?jsMDL*n`*Qvhgv%1%LqNG8>4J-}Ambb)*Ozci7I*j0ndT$z^Ue|1&P=36w z#%J0*Bbi{21`CLhQP@s-iqE!Tyle+WfjjWGtBHGm%9)Sf^=Ai4VKx6A+H7!d|DB-F zg&O@0x(R3E6$}`%aZgX&V2A=DqC^l;NF&VVfdmPUhB2fK@N#hsg#$2xSJ~>vj{2d3 zQa9N9^-qFRZw|KmGd6TuSzcdV4RdYh(2uINfit@W;7x%FtNy!jDt+ z@8=i}vkuOuFcxIGFHYCBw&GjxatHJBp?l@gd$JIGXq8GuG4mn)1)4f}Nhd^UoxDxB z%5;CTzGn({6rfw%doIfT#t(IuJ$VvD#pQ>Bfv#*kUe1Zt^H=!bf?BD@WqV@3K}ol| z-?GH8rvEilm^Yzn13y#<3B2~qzA631#AThrXOkXvK>Z_CJ~`sX4}#u+G>nq4??~@f2;j-lw&&OI6A}mr}#Ws!r-@DN0gk^HB21k!5_*4*8LoV z=l-0E3IF!4Xg)u+(i3?5SLtnkIfLH{@9^py@04mOl0P{m=xYQ!DK|T*sj^9Z|4jyW z!Zjs#FuhqK;(6kUh)HKJKzTr7(4E)CB*O?lJa#sdHu-3 z9XAT@f@e}fa4bd2JY;OeI6{*&8q*=s5{#h#24=;UrSNypva2h<=gOTS{A1` zZA8)xoXS&Yk74C zR#Y`*!lgr+ef8B#i`B@CC&(x9S*pL6ES_r%qL*dyq0-e4K9c{-Sd088!#om4d&cJT zk^#=YCO z@mk>wf7P(Cb@k~ks;k$<4*oLt8*wC2huhV#oT74Ak}3rpEo>08IVBHjgM`izcX;ku zlCf`hsT z0fxX=w{8FBb#AEqwQU{BWc6nrx6FJs3a73Ab(!+%G1pWpc38Zbt;rd^Z-=K27@0`0 z%OELO$=a6c#6e}v?0=RDDWI^zPP&YjMxBguOoaN=3Sv7uC;O~HEnHr`JG_WmKS9g4 z`nj{o`NS@ikmpq>xpB&%*dR#Ay%Ocsw-r|sQXE>JV`87c-L=Lm8#2(HD{p=Nn-p;q zMl(u39D6J`Wx}A`Q7+$cAe{(BVu#P0YX)no{c*Ho+_k%qqkw_fRgTtZ;DUst>IPNr zdgD=kEt+$S%Xgm4sT27@y|L>8SV+*S!1=;mD3@o==kP{}PYy{F!MB8AlHZ5*ZAo^R zSUy|$|_4mh)`yo>xGMzR>~VQR+^p(hSSRxHm8D$>P{bSqg^qm zZp0alM*tcIf^xdZ;jfU`(i5+Qo4j@A`cExcYpFWl=faJFHGdQwT{ku>x;@xnzm zNSYnx>U)9nnDZc?0loeN*!ScEv=1V2h8lr{N*lN=^E^lQpMo&p?wr2D^C)`KGhE$k zWOpn%_I&GVc;Z_fS?MDJMtuFF^bPdemkKU7 zbt)R%tY9e9e@Fu2?>lt{6UV!x$_vkcc9uMZnE->9jMP7I6O4p;u`IV)CSkD?S!$P{ z(0`vRe09aF%kKS0NO{4UeRv=V^=1fz%RCbdf=A-<&E@EX;`vVew z=@|JtB3Vgv>S5wN!biL07^K8hIotMyN`d+v6eWHcU4fai+wc4DDHnnAfY~9biW;&J z!k-$P?OKKTNWVB>s85!AwLd#q_iEKDklkDihZn#r1>x9D05B@kMOoPibkPN!e^lMu z{xB@ZdA@r|_X?(6Twue+KxhQz92ie^A*Z+kUH2gB$%k1QWyV#Xa2i=DPd)?-)2fn{ zfVpHF7#&&AM3naMhMybLG^|(WR7sTNivDaIh8JN~ajR*wEp*_n_pSk^PVr4BWJSVG z!%*p74&fsG*rmuiMz)={n8*ec`mj#AXxUuiXF2P})VhO(3!`Gg8~K}gPI&yhKl8{x zRAhPPt{Q$k*=?G^4~IgeJetSO)ys1_^mogP!N=2nCs*NWSl zfwI<9aNPF?NpUu6yj^2_mSOLJK7PL&s;tY%eYeEp zQ~1+t7vnLT{Z4=*{@eEA%a8m>ichh+1d{v$@|!2J^lsCqOCu%19`#AkOoswka+I8* zdsv~_f=Y)YhN`zFWoB+s`Rp9<$I7+^fAZty_j8pTBZOrX=RVOGO&0h3uach9(6Y`PR=^WKSRmJ_IpKf@9) zCq|CC-kWLHiB1@fbmDdpi&x0Fs8%lgw)dXP``j-a(?6QL+1x^$y!Op*BZ@M7>H7}slsT($wpg_#WCCbrZm$Ljm+9nk}{w{e*Qz8mZ& zh2Se>i%gZ0rP5uu?#pYZ1}nyRgX)`}DIna{uGEhNnnnn#;wv6&u98^q=_Nn}dxEdH zJb3or!`aJa329M2HxwT~hU<09z94AH-dBb%Vwd_vQtJtMq4T3NMCGZVu4Koh0E^-a zrLx~EaY*ro2llyIgK+_j+@j=!r<2lJ7BWNXw=VQTpjCHF!`+b7CU8v#@s6$8Dcxne zyEq-z;9VeX=uVKE>8psMe=+0~lJHlBdryK))60#p$eyzn`+1~swD8SdS;!D@7 zj}9_Z{F&I%UVKGQS$_5kN2!nCw+Y&f6%~@o7#b?GlaR~CFjzsw_}-bToE1)Lr7nKI z!N0;eS)@v;JO|?Nh^g3P=h4=T4E~|jiJzhu91Y$xT6DiWD1esPuZowtSIgZpi@K>+ zlQ~ywDAC`(*A2JW@a8xb!;G9)*y+Z7gWwISLkD400}nZ08?t9H5uxgRow6+FglQ4E z>{C1NXCnSw{pE9~$2k5iat{MPtfXCWRCm0k_slCuGXEG-9&<1x<<>MN3wcn(pI|E&-#(FH{HTnfzzTsh` z!dq=6sK=eB_;rt4+Sjeuzn(>`c(9-(fTN`mn!hBvskESj6O5DeT{WHxCm5u5`x{Am z>PR|O8iUmy$aPS5?Wi5F;LMAaH(bXNq04fu*=0$s-L?HyE`2qogC$)`9z#Bnnlp0`HBP% z<(o8UGs@en4wJ?MoVKn`U%8dHaSQPskVOf7F!%`@Mh~n*A5Mr{=Gx-I6Q%Gn0hT(x zlG5>_2*9;nC7rBsV{_4IT|-8>TAf`A{VgmZAQdfw zI5J@*Xd!JzvGRG0E8H2is|vKybq})vbYl?8!Tg>_FLKC1{g9ESvnxbjlSeJ-oTv~O z#d2UPWwjH;?q#CYPjUJ5rx*OyC-$})$zF+ zT%C0G@^Y5(ozjImNols=RvsGnSKfW%ex&#K^)2N(Yr>|n9)IAVkr`0vjT|M(kCqF> zEpe8kdoOzPp1!|T7H%)5sD2B$(hNQH2<@a*K55pHuNc!vu`_iMMLto7#{7{*moc=GA^xtSSPu4 zhrfDB6yHfsXWZJy3SY#r=aM)^vB+>qU0skMpS_3A_TIu(N1e4tVt8{oA46`uFjZ=+ z*w1jeD@b*jr|CPIJ0nxoSM?<$_|Q)$GD4L<hpA{}*UE1axLI0GNf`y-Uu7v=#9U`hVS(2Z?7f!VV>vPsIK0BErESEd#a;ubL6Cp; zIENJo62yrD5u;?OYLLIP=(3q7%!$?07w| zC7{bd!3i(`Z?xm((|ooJ@EGi5P?H0qX8O~0E5mBc$z^A;o-Fl9oVm-Bt>fPB{x8D< zK$58*UwKAxqGJI35D+Y-qc7JY|B;knY^m}IdN^$&3S@f0qe5p_GYBwM6AgAPJM zw%20TybwEd*J2WU4p3zUp~|ptM!gUsoz^!}`SYQk*88X#+lAu|^Jkf>>L#NV*ijt^ z-6({f)ylIznD(``H;MLPt|uM@*`#=eZlP+TR?LE>te#PsMa_HhtmOZm8wjwG z|5HRYXMQsIeBE8!j3wFX!S2@l^CNVXNmZ@gufm&}+cW{;;)+?h-Sf!rL928{fgtZ~ z?yj>-BmUW`xtBVn8Rr4yIyx8Nnj=x!F2YCYe6K+gi?QOjcGSPK7ry$LFUzI&q-iUA zdW$Cu9pF%BA(TGC{VMm=`R?Yvvi8)B--Y*1Tch&huf3DIHy4>vn9C#J=PSJ6kr?qN zjojsr*e~b3z9bO+Ng0{QPAX?z+!MI&96OE`?#2ZiuX>Beecp?UEt2-(tvxTr(w-$) zn97?)W)a~)2su>rrDp}-dfMJMy)s4Xz4_?RL#{%Fot`*ysNW0MsL5XjM%#gdHdls4 zkUNXEoSpm;WOSqKX9$Ts8Xc_KNh+*T5$UmC1s&@=O3xaQ)5V#$o_oz*rF{I(b31&h7B4nz`MEtx_-nPnklN`X--FIqxxp_>tdycK^Y35H zuJA*=uE8p~=GhUgz?5gF=e2GL2wf~2CnZ8f!6>LLH_}PB;-qE2hLh$z_Ll|qU)(&T zRsSWu*^YlpFpL+!x3^Y?7R?)#hP{eZIF>nY0s<*O032sz*RhN5N_%5Mo3 z&J5yW*6V*-n2efp`|x_*yuJ18A2(|CXa40QHWVr=c&TuVJa78nMeQ^C^I{_H_kQ<% z5YNLJB--kHgG((O#LS_W`RUN|X{Yl2#h9TXWPl8xA5N5k1D2O0HkP9QEpqMA)xMPQ z=#Y7YmR6w`#8$)$IS`&!?*w`HeIK5e79P`KCdVrmCtleqV$*BWZk)capI260=%D43}$_0UVovpoot-ereTR{HD@; z<>d1eLw)de^Y2}0rSYXNrU}j82yR2B!K-NgN>1OwY|ujp2&u^7 zHp4IoUlPKG_}5GB=2cj{^F>sb_CA#q+34g`OtcbNF}%3+$n$8+)uzbZV-@n+^P{+- z*KLLCb02gY=~TClqoc8sInr8K)rr5Ox+TS^!`pF7v-E_ywQ^J=Q{7t>omMe@?LApv zAt_Lycn8c?Jt*P=`uU&SNHUt^(sB?pc$nQs%1iuakNvkm&m-Qa>p5;WBoF(Hua7DG zL9AVF`I7(S>%X?6lzV_rkt&GF3KE&xu&*@*C*I_hM|%)KV1_p5ry)UOEj}*xAmTWm zIF0Wm>;NTur|1m$Vkyt@PWEzLVXlyUCEvvyl2sAj|Ig3hK)LKQv4eh5@L;P#9J%a| zU#|R{a+yc2M+#o{w%NHD3+;=0{$ux@&AEAzTtT%@?+CSgk9zj7Bj!D%@Pfd$hzcme ztn%}ag>a>U6NJwOzsq(v@4D5iRDKQtE33Pa4t`p-kH#v&_~3oGPF;|*Dby}u?rK zG`+=u+xHM{i0mL<44Os-JCBrynR*_ ztk%pBHJ^04e@Cqz4LyD~RjQT=jl zbRNq~xpf5t*87ICUT0B^PflS@dk;Ksonx<)uz3>u)a(`k^>oq&u`NrwycjBNC{jjn5_1~R8gS2_-|?BeUR{C_V0#g{4QY3!_{m)P`_}HZ?O50D&N_d3N49$ z%S-29a<-=C$}~&U4TK&_lTLpLb$nM0_UbeiuqJx57~2nb_VW82mUo$3`$=M@Di0WU zfVXfoEhcfH^|;?UHS&>&?W3Clb+?|z&V4*ra7)DN9D$s0sn&W_i&v$c^NE#Cn?=<{ z<%VoNC3F5ci)=%%P{~p*xC5okZ>=sFe^zcUYli2H%x=7JH0G*`@odexjhc)ZVs#)v zg)v96%I>zXs|E#6SwHm8s~*^T{iym@o62u<2V3X7k%XDo%wz+w86iuHBim1@^X#mz zlHTIMQj*{pe4Nk>)_NH)bdz`mYL3B&Bw^mUSdN#=s4#S{;2ZPrz4UBOR5eC8C{9_s zzxp+oT^8`&;lr8c2mZ?Js>z%FpZSmOTpq%NNjBJ>F+@z+J?Tn6eG5inD>(xh4}Ahw zzS1M+ox^wB^*O5W+Oxj1P)77tMw2yau=Fbze{FeIHJhx8;~;Om5lw`C-W@g4U1@v1)9?67joJbG)yy7|rdFHm zIr2uVHsRt^>+jn~{JmGJEkYJ!gNe+A=h;vLZem`X?($a;&k{|Ca{mEvPl{e$nIXvrdj`P>R<+MtX{F zsx*Ae4)7(%IPwIb0e%?3Y8mvApW$qpy=n)nZrDD9AYmYw&+X=`Y4>BMbM}XaW z)aSuY=00+(BV4@f!YjnA3`_R!mPVG`2e9YfC>46&?I=I->>q|1OTm{+hQ*^Tomk@Gt_jxAMs->$tZlS zr+~6_-_48x_c}kh|G_EpTod>iiRjGC0hBuC^TTrZytKZlh_TZy^Q}`fk3KnQ-#V^n z?4xDHg6W!7ap23TaA(QkL z3)G&nSmQ$2%pYE~aC|AMLH28T`_RDlQFDyOeV#01T2q&o1Fy@mP7S%$rPD{~Y%N9L z@F7&wX^CAq=o5!=k`c|IlY4b+TYJ=5W!|D~^ui1U*c=l?|G9cQyL;fK%M;{soNP?i zD|qJBAD+Y6tNo8bec26A4imGsk)xC>EydP}Cjnhu6Z8c&pDSXrSP=Xy5}W*LF+sY+ z4thFBm(xy#q%?!;l_~mW_$?TE;Xlxuh>ftb$uy@G)~tu!SMIiT^UwM!zQa_Xw@_}X zzT;s2Jjj1MFH)RK#)I>rYF%p|d)4Y!ccPp?U=|2jjs_Hl`8hwOt%Ugg-o9%D3iI!5 z5ND9Cf?T{mf$2ZI*f@w3pji!K{}6zCyfmFBe$L(SZ1z58)nn@<#=2$e-4{z`KU{MI z!nT#?yq5OhQCV>k60DDi+``$_Sir27!aozq3ZmCNMXPsmeEd*UK>bpz{Lk`zs&T7o;Ijy z*Xt-P<`Ik{36JqGeSxT8w)Wc1{3-n}1seZb}S zqqC>DRVE|^*kNe40eSQ7yJ%CPF`KJD@os%wl0C=PGFPsi^@cK`EAS5K={{>>QsAGw zkPc~>Fvbk3d$Xicw=X)hazZm-i(=0ZExjhj*UUA#9=f^c7$paIH?h7aQYRd43Cnmq z_EsF+7kWSkz$7rDKMowu7Uach3z(wq_?33RauquM&8$4mAeot4sgmG_e zGRQ>ka*?F z{BOMklI;p;XgmmC3-6R{Y1S3-RiXLPUmacAw zIudZZiHl_BU1}APq0eb=uSF`Z=&J8(IGBnYP-GuRh$)%z%vW*$41k7sF(VIsv&NB! zQYQR(`?DaN8X>tE34k(>0ST{!vsc)zF?G&88(D1H84|Px4gY`^?$Gj;iA_N0K|Z$K z{#(EjX&%CF#-sV$_P*Xty}BG$EnSCQ_B%T_&j{z@l$8so|n3I zzF?0dkW67gWx*&x>dgQg4T!2km|h{7&*@sZt7tIzL=%`ug2vf#kh3N3$^cK~pt8Ty zRD$`hne)7n&yhjpdz-sJlV~Z%n%^pJdXh5`%-~1#mA^4!waZ?z(1hF2Xz5=`;PBgt zEW9K$X1|8OgK&V2SyEa|6{=CHMi^FVJXLiCTv~@&Ce;~I+2SHFOG@285e0{_{VQQ*M@tVi z^vY1DjcsTK^=CzjGxLsEggVDIiKOju|F!p|p_ujrwg)8N*lzzpc5cxMrTNa(S=_xev{E)#vchjK9K zoT+6SuEj@lSgew)crZ@prDQT_L2P;|3zcRqIi!k=9(HpT`Jn|oug1KxD_Mis`R}r( z*p)<*fCuXkf=i7P3C(5&x>7EhJHq!+&Xv+NnGDp9g%tONcDJl{al39UYPSgsHW09% z!9heb5V@`F|Mk7{yX)v>j?TvKZi+YU;-tY!pv22AMV=KKEy-!6zjyWJa0LJ?%H>;b zELO}qSyu0>{)9U4AOm7c&B{2vZ68gAi~WHa?Dw^w|$c9;-K@`Gqye{%_!d43B*n** z`u{-Z0!h)g5V_UcYy;P_5gp(4cUpS+vTa{#qN?&96NLs2VOyyZY4zaI;yzPIe;Vva zYfA8@z3Q81fFAV@lS?!`cX|&M{_*`C9~R;eUp{^Juvk}|2fs&ruwB&-dj0ve1G}~4 zdf3y`l1Ik(mG^1d*b<%ES+|lMj?8&%Qc2Z|@f`@P|R^ZL7oWJ-0ho z;!(4gRl@+(GGN4N0KcI#&!ZTun|r8;LyhoH4G3)}BD+xl7b3)&!~4eXW?V_rq>84- z7XG_lm-FM`lQqph%z=XFT5*w($BrTjUks5Lp#iwhKmq327f(a9%Z`@Y@z`uUih70V zP|m4EGPVIc73xAnI@U5xej)u}*IdaOu0%w7&VA!LL1iR7&rM5(f9>BiwD>Rl$i;)# zpQh4JSJ;i&0r20W+% zqZdj^^=BZWIf&%z2g@5HuH~2g8CHDjm00IHST10V$=J9n<9<~k*8@l|A6pCewyr{C zu+w@zMG8<(Z9f)bNzO>P@+e@L;z@_crFlE+@f>-utMF@2Zw~u?=9Qmrcgea1cjGPpvDhf|BBUKMM{xrM3bY14U$ERk3E?A@{vg32jdV zo2@85pvORLiMi!-&IGXFC4=&gbhtfxo*e;m*8|{sfCJd;JKc3MaW*M?b|-Gk>b|qB4eF|2h1mxpX%dyw%rmm%1R^&U2$m8b;aVJq@qoh+);N&L_#7{e&l#zPWd03Uz670?L2xMMiD>r5$(KZu1nB*}g!8 zaN(XDxIK|)Mu*>1zV5*8f@D2|$G!OX0CvX`zDEy8{@Ea>RCCOwrnSGUz&q2~IjT5M zZv!9IZ4-9?>AjpL5nIO#Z>AaQkQme`}!^}K7o({We}dskw{5G`ce@KgGhn59ZoSs9S~g{ zgijg4rt+j5IPHgHNdcGI{Z^pO3bR^2)AG*tP8P=-y9&a!+lQ84T+Si7FuCY@`rto9 zFH?;*$#dL8H1|9zCW|r9j^A;N)5la0oRAP(5V^AtL1)9Omk_Ds57V}&>7{klrDdEg z%$RqlCKsWk)B6N_-GIt&%w0L{F5>02Z zwsmK(Z2U`p)|g20@em!pm>RnL=2z#zcbfipYU6K{8e4TIn1u>DQ=g7Kx3V=YPNRPE z8O^maLdQ_&VRab+VVh_Q#E5|yP(x5z%Ho5_Tyo!sT=4q~&kw0&q#I|iJsJL?LAmTE zudTwWDfC6mJ_&a$;*WH@&~SGQr!5&+pw8qJOXibF{*Q;Oe!c#hbc)3Js%76wya0*5 zIhwN*zC3yaAX4rOsv&lefdm$OEd0AT%`oT@GK7pgJhE)J{Q1KlxFz@X6L(jMrH1+Q zaWS_h^)IK2&ZnklXQSgtxgyA#-=2{q|NU3+|9!L)irHgF;`>hTL?*NUUE9q4Ea`6g z90K|Og(o=h{}i77p9lUg`pFwT&$i5_|U>SsSu+X-Vkj{0vg%QVmg508eVbe z$oX)Ts0Q>JTZE%2h_4RkFpvLm2L+u1NtmQU`l_uL)f#!cl^Z z)-ARo#;Vk!T1^&H+G&j-?{8#*s1cy9bXa3r#wb__R7SWS>$td4%=3dfe5p+w-i&rX zIKgd~pkb5`$tAnIrViPCsfuK!X1ea5L8!S>Yus?IM7!OKw@scz>xUIom03bY#iE+e zomFsCe5gvLtCo>rm>tX_7S5I&Rwzyf?4a0A{Ed9TeXvhpC#kjx(dJaeYV@w5mnH09 zpy_h{PgU3R#q~B-#av|B^WwR(gXa*$XaZ2@*ic6MacKLsECq8Z~cDWgrzR@IdGP;MCNHof0ylRQhLZ*dhxH8ZI8eXhrk!S8Ym z9d-xLT|D++>a6lenZXOyuDIZ+cg&GfCXr6cG;!5L9uh`q(JPsFtaicCO8z2qTH#x1 z4P4B?VQE(Bbz~c$$@p^$so@ztQ}}Hb%%kqWt;`5Zw^8bFrsB_LBrHm|v3^Dq*64%z z6T0ZPNw^gqs+1vaWkjeZ^QTm^>;hKMG#`nmZk%$oa8njN^ z^6&loouflj9ef?^W3LA(nV)DW<@n$)ZY16V^U10Wz_@DaWIh_NPp!W_cw#yEB3Yz_ zq={2<#K~H`UWb3tdcH+Ocx%+GS^c`Ve$lEh@rj!zlBC%CUbc_#o@+RA(?=Ek?S`Ft z;KRY9>byxd1GQ~f4alM3OcopAat^`=0l{N6UcI-)(MV9j7(juChE9mm-l-Y;B`BkU z&tYvwWe z3a(A|*1CJ%A;a>J#&9t$zMb3)iYZR( zOoE4!M1b5UiBHkh7p3g*EFww+mmp*)H5jcA*m5b4tHK9ZqCZV`(MTgk z<#8Anz_+^nMosbS%vG^`G`aVmMm!-K({>g8%%q=?K%lC4~vL~=tl&c?}To!PTA#|AB3^cOxFkM{@((_d8)|&!(HpBSUxd-kU z(2>aky?9Z7F2r`I&1U?px@@Z(aap6DiPlu>g+TW_AmeJ+Qd6F&hmR8`u?(|s(X zgxS?HCMG^W?|8vyF4n$iQpYZ1M${=i*Jt?z1}rGx)dB z6Ywg8`k~=|J=kT5-qNnG>!gjJJ#GH zw3=!_sYgh?->2Ym$~|L93}3KJ-cvp<>_s=5_BrOf7Wp#MqHtmF)w)Q(`WicT+PQvL ze;|etA-fOa{O?Qp-2;|;!HA*z&?l?nqWxf45E)^E3%h(%hi#|MVTxpsSwXBJDUD|} zomtDBy>1Xz`ML-yX=>Zpcvo`N!~B|%xKm2{DXz$JBdF+zv2i;_+CGOmYoLud=xR8{ zErUm1t}qq5REyBh8+_T2S-L;wHWD*9bU#EeSgt(JJ>|@<)9VA_P7{M@GYa!jNfumd zen_I6PBr@E{qUsEBc$04m9T*FX7vM8KK;k?hR?VF#|=dgW<s6A0m<%%5y!Kz7#`RcYJ4vzNSMan6K=wj$7UEo zta78_9#oiUaG4TOr2Rxe$R6D)c?FVX23acf1t-jibmoxMGf_(Hg`YW^wRRSfem(Zt z#|sKPaxHh7ZcEksHV!3Piht5!+%81T<{jIQ1|(nb9nTX*D-Pd}lw`Q_8c!BNS#JS^ z%X}WeiR+ScKH>IYBJ(YL$1bY}qC@0`_6F&DhV0PE*|o(t(wXI~^2Bvu#|vS1xmMy_ zkFeJD8vE-bav*>6kmWX$oDSU!nJIL0KVue4TB?Bwjz6k4D=DSIcB4$FJd z@+k=i$pH^=xp49qlks-_-V?jT!-`pAFm>qCsVcGfnS{12k32Nw3}EJ0*OXNdFP1Sm z8~H2rmSNJu-(AP|kKd6zOSJ<8nR35Q)sJ*3u~Q+dqV^-oC((MRUf5<|H!khXpJiL& zX#VH6A4gdd1CBh)I~5*4Ft~Q&FB)!RYUoKnoFY9Ray#MDLHA9?Sz>vH>W+Bl9ZG4t zlCMxz?uiG{Q*=@TmAqk82HY!2b;2C&y_%C(=XRZCTwHAZV%hCNFZsaqKT>z3$}wz_a!3&fk-LU1J{@J$G?%Sep)9F8sA|Qz561u-^E{& zvU`64)Rq|iEaG6S7m=C*G37F#)FktjkoH56f5V1hDmo$8t#+?c8$^Ad8H!a@ixh8% zDI8@wI*1ex!w|zTxF0zMJtOntdhvBtgf9oN9~3Ad*4KDKU0eFW;i>o`<28HFy`t)0 zlnoB7NT`nO$@GQ=T}8auZ#UioQDGU0v!H@BY)6%2lt#FdCsjQy+GHgSD(xeF^Kyy-Fci^_8i!!9a7|7ebejUb@)WvWUwV_K z8U(-_=8YKblKY_uUk2ja7_pNl#19u5WL3Uk1PP@SZ6C&cPr(T!$)07Q2}7Nts}SEF zY7h}cqeg{s=yFP$2sLUmt33k#4rVkhWbrG4#*E>zg!s@6m?Iw`pf$IOVXvPLK4KCh~U z+FLx)fQ5a9C|eR$87?twlph~z$UuaFmditNdTf#{CwyOe-LJ4Z-6SY(5V}Vh7}Gk% zRk7Q_fIE@xw4GsSHQ25d>Zf5>QI4Jo-%FYT)!*hr(GYkj8?H|V^g+cZkrj=Sfqz<# zZB4UIiZ)UO#FGG)Vj#20KpkJUlO^SrYvkC(&*Vc6YJ#5O z&K^kE6PsJLPRT@+El?cK&HHpe;rm;7husm~HgSD2aif%|&x4sVV9=ySg8!LatitoN z;w}uh@~Z%7OU=Q0TV=Ln__a8zUvL+8vmXQ5F$ilxR9-7Z(upZ*l8x6_wH&+<0{zH~ zi}))omH-iZ#Kyfy!p-w!=hIjMMR}@Nd3LV-jUL< zd=ib(WWqI1VadG5M5Zqzk1Qk8Gyq>p2bGLS5wK~LBzh8Z$1aL}EIj3j7ClMpPcrg2 zU~pp@oA9|1xjhocX(P(qmP4Vxzf-b|LQ;vK|8-HgT6iNp#qm@uW8Rug7 zVBmSgE^-q(IVbR4|M6vPC->r%7_K&(9rR4?w&4{hHTJ(hxWt7rijstI8Pc8Hr$~n? z@*(FM?8|{8eq3}AV9E3BnhvVzK_(c4D;50}^9S6`sXavYeH!sTx$UX;6Y8$_f z`YLS6-YshVUcy`5iy*?(eoX?{L9AyKPczuXB7SX>cyn5I zfrD$38{T9;`oSiAZxs8l{86nn0ZQhra>kMPk)I&(BkSS)BwXH8%zhAMdkn?kp)V&P zgSo`rT0keCzWqmkE1qqRx*6JgV}jQ?NS`--D%9L?*Yv$aRFK7^8i^7v!kRZJMO4%W z;aNmzd3T&&B)Tf4a83*IK&s&~;zTJJg zF?(M9-;GO28TiNeBg5o#8_jg;Sw$8^ia2$Ei_YT1y%<8340sL(Q3)ddm0gYztc6v4 zKa=>;T6ljJPGIItWY0mTh<^tNTe^T)h1g&A^T1rfb29LNkGB&jWMp9f6!9bF`RcXB z?Bzv}8rjRo&glvD@^KRp_<45iaIp5=E(?wByA97@8Gd|hdc8I%6Px1j$}Ag~O+lD9 zJ(1=?gEZ0p6u3ZbXK`6QvsM4ZKY{LSsp!f0FJCHkwZ3Swel z>Iqqk{19yu=NnyU8|yY)Guf{o#NrhZ|AHZu4IsF%1`Pn7wS0XSfIP)|smp-pu~9lY z=ucj1Q2O#maP7E)K*+)+A6Sb$GaLW#EjoGSGY1zfvet-ORjD9mRN#5!$GJ<3mqGk- zVZ33B>?J+m%`*P@CEVQ#e4!pU!fG-iYrfc~lWsZM{KxJZ5!*uEU?oZj84V>;;YPn9 z`pXC?`K)ge<|2UHK|w^k?++QmVK3o7fos3OHS~dX^9!3l$vj5lqkqAh!8U}qEb<*9 zeu2J<%w1dK;uikH&i=Rd^dT`Klz_jy4yC+Z+va{)_INJPrYtJ)^ZfO#TQA7%60g~~ zDc*x?3~XIeW%PNRf9d+hMOl3ziIoDfuU*byj=H=?7sh}3 za@=E`$HgsC*S>ItB?;rCOP`6Cgx@oSjVol831WnOUwCxf>;ZJPN5*^waV=@_`?ByS z>W^3Kbz{Y^CNE#0nRtH6tGMaTDW1?2C^W^zcFhZ2KJ)$t^U4DE!<8mnNI3fbQ&=J& zeG))|L|iWqQ^d!1W#T4@KP;8j2kE%NOFveLs}hyOpOcSL2x7mfKVP!--9uKBJ_}pC z|9Jr<{SVMcm349P{7(?HB*n$m?-;*|FO==`EbG;8LIS>s0fv+<1YTr@gTJ zu&r`^I=^#*Aygs|CX=3C=b!+H3wV(Z#TxBU=PumH`VL2DqurTr79ZQ|A0bwF^xzE%Y3U85N!;y#uvRDI4oA-lgX^WLU!Tk(#Ai0qQ? z&0EDeYFRqhyt#VOYYA8u%B$J7=J@V+4Uz`IeUWp#n_@{)k+<6|VM6{_#WY`@c5eOuRNZem1k-ny{XzY6kB}9obmwMO% z9sT}7sC!QFzymk;QVD7w{DhABD)xLY}&ZAR)KJBvSt zIa@=U4YmeS%e-kU~s{WRJ-=O2KRk3tT^fC7l0o>vw zy(qq^b|Q~+>ypB$6V-ItJ24X)n$Zsj-qe!Mel1dJu(SQVb#+vamL#k&3u)VyDD0^xULdzPM2-Wfq<{lG3~(|>7bjBC-#(<<&^AP zg|G83m1*zlb(z)l`g+Q$M?`#J$_s__n?v<;aUeww@#{M!CJyyM>y5V2q z2KDAD=I3-NYlw&gml=`cal{hM7w?-|WkPxs?l`EHcU%53x~_W-`X}~QkjVtf`tZYS zPu1M?+%W~nYCzG&zAw|>wk46f+zs|O>2;5ll=%30ZEl@D(XIITkLQzl`&vhEH=O8l zE_F2dM@z&p?OCM+uPLEdY0qoDcbw(-dh?DV>hJHf{UyIgG405#Q|A|oj)oq~$rSr0 zb;0$T{A1<9E~T>Okg{z-r@2t{tHIWVO_P#EJIgmLbUu>W;?iJpHmGw_qT!&Q&zef^ z@7KQ^b6-OYmKn4mH@Sw+&YSKnL&DgzX`0IWuX@(t&qqd0U6L?}yMAn<)&tIiu_FE{ zYb8_|Jt%e&X%Shp$M_CM-_pvr9BqgaFgQ(Lomv}S=6?I^3#4~yeS4W>wo6!*bI+k) zxBZRVNxi>)UrQUv1~<{CeUJJ`J#MpG{isAh&^yGKr*&_{SFb*~qL9cHH}tq$ZJl;# z;r!zZa(w?2x6;o1I;EkQq@NwrHu=}Q{+EK&$;ba(JPh0Bw9ku(GQPFz+um4+`{s4C zx8oy8VdCB!INQ#~=l-_pzj5!itP>(hH{z4YVWT&7U+v5s)8BVk2onis;gh#M9KEYU z$`HO{-UmiTDNR4r7G5c(u^dDQTHzvk(_*F}BhKpCq%vwmY4M@FGG{T7sxedByr|J& zXgF5gpH7yOaIP^(He$4d1># z9^c{6?IzNmwO4CVSAr`%RY%nqt*X;UjMDd(bVQzvnEA$MLcstlx z{mYfvGfNg{NH*>1|1Lb0&-bk;MU$nwM7cU$F=!``L6&_+iAf*%TyBC08r{Sl9)tFuRno4j-$)?KiDee z2SY;UqPDE@-w^8&hyv{yM^2)q(EcZn4v}lIw(IJ0t>+^kg1Up&K_@9!FNZzW1;Xki zP|n0yq{yW#`~_cbT?Tq~7gHzK;6}ytf8V{EKBQXzSBOk`)Ev9CbjA!Ko2g2~rZQG43 zyk60)R}D^V`2vH7J-1hTjvtkON`EQkY?Sx8=e|I{GFxX7DG4t&PrhymeDh9e=}+5K zpaZaKqUF4Iuq+}&Y~W~Qq-pD6d);vMZooNz}OO;*(Gp29kS(3TrSO68W|$qTUeKgex5L@H(mS6%)QD^rbg zHG1EQ4ajL##wNn{o};^~Z(6pxfnBC|mwkP?>KCEJ1&he)y>f^fHZL=RtY@a}&DAaY zSz7OEnj7(*9xw%2X0cgP*bOtcI!vepAVdv^`CbO5VkH1Hg&dDVbK%AtM5 z&fGLm6_O~KtvaXO9DMbhvm6=K;NU8l& z{jW?moS(KRp`@m1 z+>n!+X8{}p&D_++xQ>0SyQdpd`Ep3&T=}TmcdPO+hX|<$W61uh&6LpY2-!_e@unzD z81)jXFfk7kui(OD8yN^SA{V7fJ=9h=0wFW(F!p=_7DR?AQU}f(F1ZX^bZVT>5D4i# z9bNnU0A}C$fx827N^)UU_pTL6yH-di_WgUEP`tw;^6B22I@`a}ET8|OWmh;$kRKfkyZ<-VtK=~-bG&q94#9I*MM*#SVJ*iw{?DS_VVuX6js-fca_Xqk< zdUt|%BciEq72I0z*)b!=i!jk-blC@ueMPa{jz&ukJLQI2O_Ta?$C4eO(he5HCGKIk_V1I2(+ z+!%=GS`Wi876mkNOumx^vaY1)#g}Wvj9am+rhlI$VVgF8f1xF-nh-%qzy5rUWsb=M zu$ad!_6I2mU@-_vvhp035&meH3=tr3ss4W~^M=)V>jQ_fF4Nh{Yedx&tAUAZbjLBU zZ5X8E`tAB4vh`3Jt1zO!Du#GkSsaWN^oy3so_t=XQP83mkIS4d3gaLsF?sTv*ITno zI#f!%1${d8fOrN(hRu|m2L-fHfP=9FI4n(R|7_I5w=6D-x7htZkg9;S&K%oqJt_tm zm{_gLj^g@30c0y`0ok^Vgh+#VyBURxyKbClXgOYA6g!4|+3K)hNv-a8NMoRq*$6u> zRGD!{6n!u7kNsgdCN1HyLss$)QtGTX2d%!b-9wj_uBE1Mmp|f(RhU zyiX>j+yOw8!DwLF2iTxDsGh_u;CE2Wo!ei#1b* zpXbag42*4YhoQ7CTIRIK9^p*OUiFkJ6Zva+{dswjTNl(%2(nYv>ZsUcwFTIifJ4s% zqApAc^c5MNezbAV*WJy<6pa=bMg%DRU}E*zfexYarWYsh=>J1BA-3(Fm1Kic#oQf> zuWi(JaMW&j%D>TI^`o-=i=63DN#f0y!PXEq7zW2c-Mt_#UU1FQyNv)O$xE6w^IA+m z|8y2x^lNtz|4Q}Ph(m1qnBpvmC=o(HJF>POc$+*#65ZeF%-}Kvh)KSw+Qol{M%p8% zcJ~#BkT4n-pIp1>9oo~Ba|+czP#gxpRhEZNJKVP?0fTP7PQEjaq-hr8u?YCMxC^qo zTl;B*s&uBoMKQFvg}?>^1iF?u6+-9-(CF#a9MC%l^oerjx8G^s!IYoRb7mI?LW+-m z=$3xtdop6T)puXHLKUl8kuN3X3G)sn9G}y=n4RBtZ+{l|7AXXq2Ii#3AdqFh%5Lqr zh*tYH8iac@PaGI2@H*rU5#@oc$DXocz>L{(?{5zem4gHpQ(Foif*#+RSA4lJ8!~l@ zeOmSef3}8-`2+E@3Mv2EkIL;Yj%5_O2`m}n%?LNU{c4y&9{{ciK+w;RU7fod=_OLa ztme$9#K3&H=q63V4tRl67etzVC)Iba2+yr?(e-rH{mkyY(}zG@3{%^`Af_IfOfk>g z(#nwzOze~W9r+-y<4MQWV21mGWQvkG9zkI-MdyLC#4({|dKzgGVgstW&zwpucXnsW z%|l#CfCA^d3KurL-q}yGQ6}eAbThXP9e(DF$H40YU{OAqdJoZ@XOG<=n(F~W;pe5g zZ!kYdX1kQ$zgH(4_25Q8`E$F4>X-*D6MY%HLT6r{1a%-a!KGOhlBPE4Z4E+QUKCTo zxG8^U5>uQluzmy!cwRmRO6J0(#j8Zi*c;X`2%ovs!IYpvMCL)~C=fydR-_MRhoE7BPKBchcV^~il0a2*bn zA7MoxLqtpNIUnDPD0w;4F{kz&_(uX|zz_(K2c$U_mYy7~_b^!xfs8RT6JFv$;7&KA z=N@CI@#!5sD-0Xl#z`?vI zW-tRrfL0-hc+#^6su5{!KEG`qrWJswey}!iResq|g#wQ*K@Qr<)Wld&1wFicrra1) zGUjDkB8UJmzkGdGk4K`%<}og>h*YSZ)XF~yK}8S-5+*D%pFF?#su-9@_C-h>sj`eJ zPl?zOGGAb)A31RgG?DO4opKuzf5NKY7psQ3G7Cz?Kx9}D{~RhIn3Bg$r8w+#EoJ~-p|L# zujg1@vEuO}RqEiH+}MUt#*DWE=zs^e^ne3PYvoN*n0i1o32HN6Xy%B^_E*{GQC@tf zZuCu@_Q))Yj_RA7;;-wtJwV1U7E-BDA?vB}uYmp=ud5IJv1w6`g|GW1z-@6CW?wE^ zn&+pvF7+7Qbj1)8y#%^=|!#a4IWZ_YHcq?K009RtX@AJnC&*8<1{zYMo0zFFJ{8gre1@jUPgC7H36?n~a zAK))teF|nIw>}h)`Bj?2f6m8qr0Ygmc4F7Zzu4^21FHh) zpa{VBgQmg-VOviXDsg=YRH^3At)h2iB>}mo$={He;M=uk%3NzdOzhYv=OmaGCAxlycrg58=XJB0p**G6#MXR>Ne!mK>vVHU{-KpR3ao=Mv#`AmE{Yd@Vp= z{|{mcJeRz$bowy(IU90lw8=#BDB2E%L1iDbz+bez9J6TI8_O=tcYvvN1;sl-`V=-W zB~Lw$mh?C-`EMqsxlAAvM^e7)@cxaatn(KD~( z?!8nh$@eC5Ut#aqy;KbU)ZME619j;0E9j31Lh1JTx5*<(+_LB!Epe{fZH3;feC?7K zDF-10K981*elHQ^6g6XX>2NjCSD%lN3qz*QzfaeY?9VNvQ}Z$pE{l{fG|qmk-ucV0 zlaX=!e^jO-Pw-+ViqG2L*^%a&N`cVIs~Or_#;A&ttaHxguJ6C@xRddXTq;1U9Ot2` zKq%xXh}v4fnt^*CMpqM)#K+Q(o1Bf1>ebVJRxt6)=paM1WI6lOH$dQ+`6mdSe1;kW z#94V%fzL!i{fy>jTk7+9pY0Sc<#`ey{aMQ1<_{FVq1*_;Y6o+ET__`r|7a|7qrz0@ znJEWfs`!F%3()lL+TOMO$wy1XyCB-FHVkD*#E8mTQxc@Wfk-5H>G2uI<_`AiA?_lxxzT)$H(tdXKRW8qdEg9*{@eCyY zk#pHwJqKiU{wwxRjZFl#if6$8QxA_ z34_8RcsSVt=m9|hL02Y9E9Ileu$|L^(H`8J#mlc(%Gdd!4~zM8gJKNfrRi1&d5PQ4 zYR(QHem`?ALW8^Hd+|4X5>}U}aVz`BrhA(y8gpD6>QIot;VR`LF-vCX4LS@X|uV_(cJM8mx>%cYl6Z<{E1%v(GSXj)4>W1V#S+4z6Isj0#3&bLl1oeR_yYT=)m7TT8z|uAu2Dj^?T_o7!=O1Cf=1*sTP_u5WF?p4iD=| z!RoY?UO7$MehVl06yR+g_Bh1+ZjW~0RN5+q-c#E7ce1U*go9={ zOL^dW>H*Uk;9i<3^ct~3NCY{RN$3tQp_M7!2*s+P0k52|7{;?GqzO5X+R_M}HdzI0 zo>=X}zVWf}2+3EsPUwv7yd>P>TG?=5^wg6^e+|9YS z$h2u!aro5ugx(<{owpHgiKfEvdVR}Mk)KLcsZf*@oeChi&q0(6d}x=h@P;ziNHB*A zT3cEoL~K_2GedU>ANHQVEcQFD;74D9{Yd2~adx~G@ClfGVk4URz9K^;GvB>( z`=0gdl(6F9I9I&M7~=}?4$B%6lI`D7P5Y(>2x740Fz34fY@i%~i48DLuc+d5PZOMH z+=u;zcuB*ze!nAoc^xmW?Rk*0`Q({QnzhlOlDejc<*UNAhsQt7yuurwu!5&L+9}u{ zXeC@_rDC;oF?K;XT^1EcH6-VWh0P~V7(8}s6Fjac$TiFo4u41rYo=MRSba%aC!P^8 z%wDn`E$SCe`n)K%$5y!GBE93@z^W0eFhm=Wp>ERi@kVI=&_nAsbO;P*eToWKXeT2S z&u%Ior|o0X_%v>Js@SZ(<;?ft*2=rzjiIb3zvjN>JiK~JeD~qs??klXLz}k!|4EbR z{AJ{x4{~2B(wE(VC9ueRl2$d(m>>p&_F{66VY2g#5bFji9KH--=w!GN)m{pkTm}@5 zE5T1c@y!ygNV02>e@)-#5V~bwB$zi&(hkA)v??9hqy@x%RU*`O=;kKeGye+uj_*Q> ze4fV#uYpLjaBq?Ndv9^sT$q$V-Byva19mJkalvH4#f^(_VcE-Hyl;{Wf1~6p9Z<5V zRGCrmO6J3J8Hcgy3hCbkvagqm06==Icr2;%UCqkefj8{O$?G1_`4tt#l)KJI5#@>k zw9ko{Tc1y?Da~gn_vbt|FJV0(PNGNk4uq8!FWUi$L_m@cmTd19Y+=rA6#;P?JMun9 zYA47Z6T~;b;*F|G0z}nlTS_)k*o$SD;5@u;M>xkNcj*jf_XM@tQz_<}0N~F3q%xu;VcWDvJEAq8*Wvgv^*~ZQH5{`pvfTw7w@wM{wI2EFeG9m75^)&gcvPiY}CgbH_ zhyji>?V?}p&Lr!qGNJ5M&0J-{k{l6zm4`MPm?j?7+K%i_yHLF2i{}nCXtB;6t>?aP zH9-;kqApj5g3h3p#+{x+l2!ZH09uMk^W zfuY~5GC8C&eIz7dNyPk_-Mtd|KV5)m`<+l~yUZe|J5%O2Yxs9$OJSm;j#OMw$|PMo zEH$pkS{)o)B~*`|mUmdRtJL_7K!mY^{EJr#S&z$XEjrD_ zhB{>@Vw_Buh2~qo_+2kXTnbCyJ@1!cFOo|yP!5EY7b%!jL0O|deC&9+x=uvx)nffr zOl8(cqMYZ&k1>Z)3wI#r(&vts#Hh6r`GUt84naXn95NhD@UT&`Y_stH7z%HYRD@&f z>C5AAT^vl4K2y&47xv-V_>^oRIuo^Tu*6`q)dR)=Kt4aCCy9PY}vF5rXq_^Mc zsP~5n(ZwYQxeVCdLfxVOvESEwLNfZ!Eo}^hnkY~ zq4hSEA+@%Rajue}jtbG~Nei{I ziHWwyba;oyEOL}mg63N#n>Zs%fzOKW2rUaGW<({_CkyjV?|5N~k`8@@{A9I3Q+OtY z)KO3ZclQrkhxbD{+c|}yYrkI-H)uVda}cC@@Y_*jpOkWFu|v9wN5#DwTk`nOw*zV= zw1Ej54$V3;pXNX_(#$tn&eQ9MDwiAsz6rC&CW|pn>hmEE;=>xH&Y4XQO}piteVa|z zp?U>FD&#!rB!~bZ5~mgjbHVkH!HJD|8e8$MbVJ2e=~Y)V zLepRH{M_8>E@`oUAUxW!&oWcB0of_;$C_7losfaFC>M`GL$Y}b& zROgyE7fJs`)et=APG^>zDW6dZXa;aJdw-hIWYbup;;yTM;ui3?xpu{+62?B{Fl*X% zrER+9Ksfer`9BNM9T^Dj=8#|*m83i*2n5N~AtW?t5ZI*fpVHBLPIrIFQUIEwZisU0 z84al+mDM~0f4M;xp0d&A)bV2T`?#6>?wz3?7Dagq0-#0!G;!O3Mmrr+Gi_{AGmNH_ zmuGocK^LxGB5) zjQorA{H{Dy^R>Ofp-AgZ?_?=YzjDMGsbfA`k_*ADa+V{MEvO88P+Gu4O|}DL)oMIZ zE0XKWBtLQaXp_Y}oql^e2F$j$?jL!j*SaLI%tO6B|Wdm98wbBK52Al_~__ddYsom2Zz%y z#^c|-^o{i1HWb?70@G`>Cyx!%Vj%lYL!|nu-98S!&eeSVVkq_>LOVpGmQ-x!=wohQk~EoBL&7OV7N}aL^5@nj?3UXy&|O^AUH? z6O&`;`+{#L!*))jwW6!l!^u===h(0r4n{qY2h0!2{vK2y$N3aB(6;OtM@}24(hS@8 zm~Rc4=O9oI&$Vq3{4(B+bq$*duqj;~y^$fW)gg8M8La^&<&hTJrt&Vk7jld!W%btF zOVMCA)Y2cek2JcM$o5Fs;}BearfXF8+024#wJorX)k}cJ6hxSm4@0!`bzaBFE)OcQ zgfs`B#u+qAEU2R!YjOhSU!a}pc=C+P1G9u-6UHOT-`&ywodY=My{+JKyE1jGk4kq+%wct zvxPG=>xCmTTR1Z9Wu;BE@`a{lWu>;PEI+)j?{DAh`uy_w<@^EXI&jYOG4412Ev187 zpe`1uoH2)7_uv**;-Dq@1JAO|o14=;f5DM={*T+!3!j(-dnggX*Z+Fb+Q&ZWKc?NcNX&V-InO74|WWCz+;Dh{b#x>k!M{5VCYyr-WZ>+4CS! zbf2ex`Qvo-v{Y~t@jpG=b7VjKVRmb>!|eaIqH+jvpgiJ$S}5O00)BG2$}%qK z*LY;ylMS4e6D#=M;AzfrOmi*o$oabL5tdtt#c3nZ2R?q^=(+0Hi?`|l-w&Ip%>Ob# zGgg{{pk0GDq4l~wzjBnPmUf4+#fqu&wt%o8H!pvMhn}x2Fu6DS` zePMb@-d`I;05{$G)@pU=_PFCjWgL_g$|Q*ErN>XL@x4l+ z{Wy!S%1!@mB7muj{krx8q|*a>^Pg_#Cg02`a8OM881WVOA!oG2-;rZ6*KpBMYt_E# zYZvEjLI1~`3^I|%zu-+;P3<~w!` zILgtf7%0QzYqzZv;brIi=)?e&l4KXEV#?xGuyT;5P%?Yzf=I$2GN;v(;V#1+Pg z;>4_3>HWs}yc#_6t(zrn$*4d@}qfxQQp4!JfHYZ*u6 z=y(wW=hUy@#K75uG@|+sU+?Fttm&Q}AW025L+O`Rvgu>05rST~Q4&j9)=QQ(Xv%h3ey!lrI?&Ir97|5Rf|8iS_mjkAO5;JnnnAPRkrw{*1dI5pO z!=y~}$5ewQzTh#RcK#cyHiLv<@@j0UPx?1O*Ph=uQerc32(bbgq`Y_)fUeDF*zgOO z@EpKw2qikOsKaH}hyMegm4&8kxvTv+^;*OWe$g|J>4(C7oH5WtaU zgXT&(n^6Ze;;tIp7-)!O3DQK#O53q_l9e|$+7~1#fC1X+$qPY92@4~&sF4F?EoeV0ER zbP8OL^R_-8@^#+-%e*?)&SOxY`kQo`;c@JXPVFb#jOqw=sMT5;DQduM+^=w5HpV-# z`3rL)bj8fX(m*3w@S}@`$^NG%bGvP>_RD^)-ucAq3~nR{uXG51qi?_wH0YYERtr*( z`m@({fZ)W}c9Vwb_uP>alTggdk8gh0>IGES?!?}R^X^SO7;#@cTon9We~6KHmbWRH z>H$Be^KyWuCa}Z|8!Zl4a6tsr#^87BXGw3~$<^$=W6WA8bO2r4?EGOyzv|3btsZqcCkU;IMHS@bK?uc`FLa&veZ>F1v6UDF;}CkEON7aaO<^%jf# zbH>qWb>rsij@5-kg{%j(tY6z6OZiR?L(v1IqRP~({bB&@)=LMMB;?p-N$XJz5{e~V zVQ@-3_UCuITfwazid~3e0v&-7zgOz_K9y*CKnYPna4Li%dr5$&)0PW()A->3z>esj#p2K*I)AxkQRwFlt+noX_(p({4rOG#C+MSL2}j4syYOqzin z6Zu_wet=!FS5015407Z3ag*K4H*m{_ftS7hN!I;B;Y^uX+-kW4(W7ha5`x9N7uBA1 zK>Y0^ubw)WC>wyzLyy>&W>x9C)PNayVCBKTc1)AHSte)&h%4Xy44N8kM|>gq)!rEZb3`C-n@UPqT|uh zZR+a*^hAPdUqxJB3Us(g|DdfR+WVq=@1yEJd-^<7b_VwyQo{?gZbyWkf+EP6+V}K% zGl)(q#N7Ob#Dl9>=f>o2Dknsc4SU6N-PJGYgU9Stec3|0!U#0_MPlP(x%?~Zk0{!> zfaKDU>b|+Uxo(5M$2fCx)|HU#CCeggG48mdzK?G@U!vby3qHoeTwAD(>WlnWC1nWY zs?B@!8+$sj^i;kIFJFHr5DX=@)A(jT=Z||p0YL@uO}NBzBn~KAmfqkp0jhnmKt>}= zB$72;TxOC^_}fCzG>anZb#L72Q=H}tfD*k4pQB|(mMPw!5sF^Ny6my}GdM}t+_PEf#p+Oc@7`Pvv>AXsn zGZDFLYtCkA;aamu(@X+Q^{b*Rs14Ig1f?pDTxH9@$kVSnU$Ms~xkW9%y2!w`tmL0* z_JUfXXjFH8D{xI$b$7a~uF@`H@g9@vs*l^bVyNn;t2{H==Ge24>><;;F@5Bgf8CC| zwR+C}QE5f!bu+jZ9C06u^gP_ZCY(5qr#8R339K=6k8_zNo4r_rKBtqJ?`gBO8>#Q_ z7M!0tcx5YejtPhdS7S62!{Ubo0ZBTDpC0+&QvbQ}mA_9#JXY#l^Xr#fwAWP_dl5V0 zp{HsIs)XxTadZ-}@yxy>$ts``WAbTJS+;sE)`x-74W!m!h4?y(YQJnSmtR7~RlMof z5BJC}P6>N+JpA+=_Q2$zw!`qnkFt`0xt}wnu$5wOQ3H0gHs89pN&fI6X{$sqyc_t^ z-tSg|KPQ>;K0qvFp!l(1Z0WojaEgv<8?V(Ri?x)Hd%!g2N}J>YZy^Sgn;w>|^hSy1T&izL+VG%y@DMDN2VmAt z*7mJO?G1!zj4j_WtE?~Er0uHJoOlxZ+pLuAkf3raOL1=$S;HWVXhnK20N_^rg>i2( zJ*kaqu!x)s^*+2@cV--P)dKO;^kjn$7@Ng*QCk+m>$90F>q;Yxy7$!b61QZFyVVvq z&6L^&FyeO(f^}%gIG+tOZb*>_z4QR41L2sP$7|+PWgKcEb&Vo;U3DXF*(Udn7rxK^ zr{kvEPBggqoFTcM<7I)kb6V><1zLHXENGL`v>9eIlInJ zecpY`vNreE2$m~wC7mYkZ6HQ@9g1vo78~JbobK&-(!eJX1eTE1~P^T?>2ZUS@bnhPO!tH%K5P47;6w0irpvzbSV zN`S?Hvi9S4gHT2l8%2~iyY<IHVB^SS+ z;d%P0hCt}Z0KPu?j<&iEm*6@iQw);-vko@>m(d(VF;EOQTPZv~<>ZyWKfd~}KdB~nZdU!Wr+ z%s|rN>d{{3@?+s8A-&8OJ(!Vl7$*%fERc!mfC4 zpBglI>1{9305x9z@04D8M`@gN5;Tt&MNM8ogwX2VaDiN<;APn}B+7w58QxaDHdl9{ zT5g?O_VkK6egWyAnmIn-7)MUemD{AaXPeNL{Ycp-D$JVfeQfPXkz^l;s+!|%&QvT6 za6OKQlH&-#s=?De0T1*ycInmV7TD=3k3uUVedwf7;Kb@q$$*l1wk-O{ zlU!5jy&XfSL-LMiwk;%J1Lj6HID65r1BF=@zeZba>WVe6zj@v#dYU3vB6MLvG_ID``{DHScXp9Qc%zp#K6D~#q9tkkC@S}hn991f znYA(V(7Tso{(hu>Jf>W8;-7}`ztB0dVQXkxaT9bvR%sm3B5WegHL;0z;$E+FBBVlM zOz0A7C56zwu%*Eh$nP*Z4O0R4qYp`7Z1J$LQK6&3!^1@r|8LY7&2gkGHg&G}eXh>B zM1kDwETSZ+nzGy`NY9hXMf9s)Ca*sY$i4K@+_s9mCPb!se|%OR)F8%q%o&>DL?z*BIhC;2Y%gx$p>jw}X!Qn;6*L#szyL;#UgwgWMOW zSg8$xje94LsSlH;3`#dzU}XO?~P)a1h0E? z^k$Y-WA%BS_4h`Un%=@t zkyQaJ8q@?dyBB0H6!_<9&?Dae~s_clmnd;ol(95L3fAE+b$k{|<>z_=qSf#rla zfpRA0*Km&ey{IDc4t!OF6mB$Ic4AP7jv-A6>_*lnC!(a%(s;1CbJ&7T4*L!xsajm! z;X(Tk%d96{M7%NM@1yXK$(2Q{IrPUmgsZ{_Q`TOiwC>WzhfFuT8A-RyHJcc!1q_9C zKsHr6t;$k6%8ZR0s8FIh$VA$`OH+(6rjMkCxR4!xM(cicA}m9Rwa2OCfiQOQ44V{h z(fp$ciJC5F%&ssjjdvou%rH8X0};hp@Fe_B6`J?G%vMi~9K`dJ$EN`m!alVoh9<#8 zvzn)D0h2uhsN4dDprU@|&tVf2T^Z>|goCEfl?*-Wz1~Z3H=;?VbMlKHt0|BSc$1ff zr3W^AMxY0leUh-${E>18wZ5SBXMT(4Q>#4U7PItXB2VpK@3;9LZyWw`aQfQ(DJhNJ zMFUDb)*BqkLD+VBBC{W_-H)E7&p%+*jdx#|pTbX}3 zG^`Xk0ws7pTvnppSN)T6cBly6$WZ%AKqbzi*2N0OI&YxnE>eyvu|CZ~U%PdcU7+K5 zZwNBwG~uN)A(g6P8q9VKQIK7Ehxj_G%$?UnX4Hns`4qG9Zx|oe?qL{q5&e+dz%Y)q z4CPasMt1iv>*ar@At7HX`FchlIcnk8o4$JpS+KoJx8BIg?_+2<@FJjGxpA?Zy_7Qt zC2`Y#*6|mLeN>PUKi@;5VPZVf9 z-6K+$63wyNk-F~!ZI?3T0Ml|)e@ps2wY-NOSvj+z*57>hat3cRO) ze1^pa@~T^e(mhM8na!EH*BzkO<{y?K%zZCnBqjlMl9176|3Q8LCEwKmT&LUs{6;0IdE3jEhgqm zOaulhZ9)~s59Z;pTtHt6cdTLc0bZm zT~uOy_Jm{QWps{4rzqaoVOox*o-X7h>S({5Rh}crhdojd6ihz)))tw6lC&Z7qa?-)a)8-zX$Ajib`b)gJblBrRT zm8c}GKA$J*R0PzdG@wk!orYT%I`BXBex0buuzq5DH#RQfmukP#>BR#k7R6Cu3Sp4) z*P0dE=w($Czi}?k6y|Qp3eQ!uvH00omllI{&redohx>^Lnt1&-1SW1I=Yddlm7&ta zmBaMo>x42=qsdSW)2$jiGp=HLx4E*x6UoB=9xUzJ>6mV8Drt&M9X3$2iG7c+{B5IH z&eY4QrG)nUN}Q{89x2Wu9*dtlT9%{-eV*2SE$ugnm~M>wTCV?zcJwI8angbq)nDny zAc)>3c0n|%!!gD@0&EJqV|^U0cUR27C0Ku4@&3Ydq^1 zqp&ee&pgIK8tUL%W^oTVIr9oc_4>$bRV{I|ZED%|DhJY{u+d#RgI8HcWUTJB97tQO zc`M1iG&;5Ao>I+cJ%M6CT5JO)`6PuNGE&K>@*rL}WNR)?`TE-7#R&P&+xTJ?Jp`%OvU z5az7%cgen9A-Yw9I3Pwm;9z^{vMmzne-KW4K*@>?JY%STs`kY7Ra`u{hG5;;sEW9P z8oagIm;j6LO!vZnllQ_OeEV{^Z0p-1Ci-@>M=|C{_Z8clJ5P!@ZD~4HYq)98w(Pfw z%AN|Z_xNdspa$`_;pcl|x3!AlwPM6Pr{_C>b!c&`)X{v#(;DNQO%J(RbSSO;*PRD! z$G{&-t3kZhyqDADzHc3@gM+6I#hg>@tCQKYJ8dpaoP6=KCUx{=tkTJmiRF$jGWGjg zi$veRjyJ*kKpitA7xo?dpV*^q8h(9;#d-A%U3wRA%Yy%P|#!qS2<%X`HHWan2k#i2K zkT2?KcNC4>g`xTL-ardiRvv|&mf*fiP?VQSFG1SkS?zg-_UQ$e!1der57pQ2!pjZN z;xIXpyTqTFTLUyrXPUZZZDS<|&z<>R)cfvX05ZvUDy3S>Od)@&XnhZfc=Yp!3eu|t zPf$LTqu|@GjAG=sa*@`D0n+``FX(d9K+?-_txt@>GYd%yRw3!XXD>xxAcYKnxe5L@ zAzkj9!A7n{SniqVyJH`Faa-M~)8{=_uyfc~mv}Fge>`u}>T#eSZ-s+Zh#xI(5t98G zgj;}J&o1De9Oi*^pqHaiUatwIzk(68t=D7LAg-YKr=JI=@^PjcZFvT>=?Sv;|J&W3 z1RIFuKAKNH?8v!3Jo{#E+thQC4Mc%LR6m*)p*{Ull;Ejk+vGtYe(anUDkjaozU@Hd ziV?}~|D2~kshZW8V*ow#cJYj)AxzC%ZEDQXxe1zGg2nrc!*_IdR%eIJytcT0^33d} zv$G(Fj>3nfXLhYdqQ4AHZI$iGOhAXK3F?7s+SEI>~6;lfQC>b|x5?Le-sbDQ&TESnV60$3)J#lA80 zEb;h6Lo@cR`CcH;_PZzDK6|-69GoZXqqUU}|8R5CRFTssZ(hA#HZF`jQF1sVUGw?U zK%XG51|8IqAWcQTmf0L=ZRdLI>TTRCrh_KGq5?MI%Brr-hIvy<@}kE zGo0T2WLc7N{cC~RS6NBEc2DAJVIazM$3(#Ep!p5FQD3dH=Jr_hj|qL^Lz!_&!!a-Ms&)Od7lwGc=RqyXx*rbEU0Ww`@L<8zaIIpY>C z?rypB$Bu%i2{B2$rJWn$f(O^?h!ta?bCax7h9km|`o)S}C*Aw_qiB7e^Pd*rt)t<)0y zHR7rER;GS|e!Ej7+E~b8+)>+`^{VEi(UGW%T)>BXxpyuIp;~A(3cF>=I)!k_ zbPBvWYB{jKUb!&`i}w5;U;uxy5xP4JGP>A!+RWnqJ(TWXafnvY-SPVp8r0AJLm~;V zzr8+yxf!>{LvTY4jp^6`M6&bkZRso4#8S5hn1u$(w9hNF4!qMv<0zshP4BL9!=n6F z<}X);vR6JMVq@~9eA(=O*;bElXkRwz^O(f$8Y$nuD!OYwuLC5vld>ME=4)d51?Kco z=`uDSQ!L7D$Y1~w+!;)tB-geUtf*cLGxX9a-pS#6fDulCIC3qH7ws7=SL#Zs6ht3( zv%7oYL1sRMc`mvAa6^*D6yR!~>7%;7V5|Y|z58iW2RMk}YOPLc**EE+ z9hdqQVwX``>N}wM8-}yUU7Q@%Ld;EaR6jaHbmu!%EC&+vb!r2{{qviZtBfK%6N}X* zBaY*@ejG1&!3Zgp&%5#h)lzU=bB?}8MFr#)c~mmFNl62DnT_NWO-;<^ zc{+^1M%7>A1qMrBkPgc@3a7#~e`%#06$B;aTN>U$01bH-C=xpIdX?ck)@GoEqa9Jf zfG2EVD8=EVb80pD$E!$7lUhg^aA!A)rCvTa@@a{8=hzslWVN=yR((~5<}oYdT+3j6 zRm(N_$^g>Vc=G&Z2+>|%@x~(D72h|2=f`8od949@?jvr34-FS`+}!XJK0m&>5cc~N zX0{jg;q!8pkG~GzWpkx8*|efy$@i@-)^wBOc)iT^#6tOW0Mg7nR=piVm+#}`Inl`V z2XbLgaQy}J#d`Z3>cibc+q3W3^Zt9y5W<+njvI@25?2Nn!|`dI0;d6!4xzKn(SE1R ze3HgnLyz932~6hv6YezjlXpECV2$^~Z37wMIo!aO;@Rwozyaw_MYGfLoVw=5HY$Z| zz`buZ)U^v{G<2C|`xstPpmWkcaEH?K)#mO~Di97OqJHQP=<|8a4%T05B6{NJ^*#E8|yVomYNg2x?7*xs?ffcO-0q?w-jT0H1SDWJE z4?Y(zxvmko*1~vcVsUOP$<~c|xybqX1$?d(JQf?j^V0qBGrO6qqdrzp&G&_RrZ$ga z!vto$ka&&szd)sXk>)qY@?!C(e$IX{nTEF)e9#fO(4j7TKdlHVWM1HQl@A2tU)b{+332c|iCwq>q zxf^~yV_xdzg4s1RH`AuH?2W!38#oz`4qvp|4&z876#`3MuwAWT8$wul_w1+-o|}`w zUKwWYmvvm^A1$~Rp6~YTwzJ8#)^DPxiKfJ+&2Kkvo3KhK@QJN^^2`0@DP0m;4O@Kh zud`=%t9<_Z71BB)$xAMD-slrv)4QPWHHJjCg%c~{e~!te(4*@+bN3Zz(oc%lb9 z`>}88hqtbYb(h_uV-GYScSLIN+oT+}qk@GpfmUkX( zc7GvsM1!oQp_GnUiqfRNog%O*0H$$$HR~a!0$9By0KyYn2cBRD(lt=Lsn|0D*dWI{G2d(HYMDob5eDNUrBo!zU_}#V&vaZcpzl$|s z*_h%$Y6LJ#T(*@c!wrJD0^nR(@E8K(DAolhqc23I|E1*Zpu*5TX9Pd7kv$cGaWR_F z#HAd6?!{?d@#9$eck<5N*6ZA(J{#+IQGVlzT3k9>!oD4h}Xuao! zTG+x0f(+w_BZBwL5#H(Q>9@+cK#!ik#@~eXHW^`^pavb02`#xA(A^t50tx{O0J&v= zD1p9E3EL0Ay#<22_zb!4;9>&u;Bod1b`jbq-CtB+5r5_lC}OH3$fi;@1flv$R#C6T ze_sb~rjuIAciIdwMs?67R3SCL*GbyKaUIifyB@JAL z_*9>khu0^Kqrh}~5%)syfih+Nylu8n2O1PLQI86TIacN6Rpgy<+henuxw#GHv<+6RNiZqRI?@}EP$p7&lXblbKsS+V7DN! zIUSlrK(dGAY6(cMpV=DkFQ8^2n@pkGira#++HCoo4kS064hkE@Ro~7;DW0N@ZeYUMXSNkX>($#f zVIgz2(5Dv;zpcwt%Z{PU@#<_W_B7aPMQRR*humU^thUmpD$Wl$c^#b32Ma5?*Y&h= zy7E#0ISGgbh`Qg(e_e_Dw7MkM3?5mCmzTqMX+1Um(z@G*!& z%q4RGtP4P-?w3(Ivv)^&h@i-e3)Qmi)Wr6I3AfPUeflpjNAyo07$-;OUp`}vcpDcp z=G2npqod9})*MkAoF2X5b^YWuEb~!k}tl@c4DiPlo4BSdIT=|pSE+XlvnCLs>=Zv>H~pv*Fz$MLqeHp#7Uj@ z0X>bj=yoj|0DAD}J=98#KUM$3p48~?*rqPim=l^MJFdp+ADgadM*9?+?ZqRFpJg9^NrQ$QZ#VoK&A7Vp#rEQejBuE>^<$7d6pQ-cP|wx_2>^NFjkzmL z3Z76aTJ1I|2{yj{E02;P+L#FE!bl;P8-oYh+qLvwf+IgbDyJ}QAK*qtzt}hk9&_pQ4H8N zIt*0-OQ#X;7r`{A>&Y5@;dWsA<6sjyq~Uta=CZ@af5QFZ{!P~M(Wj`8U+Wq4^Z!jo z8@_uex%1p1AIs^C&`dF)s>JE2wrm!dSNJ?-gbGw9_?Evj9Q zUZ`qo;(!soN2{(VL;^?4WPe_2U%=wYIBKxI`0~!Wyo%*EL^gl=9Xg?Sxk6XaFitHWN6NB2rFd_S!q;D=3eEC8F&gDo{Lxr#oyH z2Ih=`mY;P2(-w-pK(^7L#6MU)!&^Fk!Nl^;2!~rv;;9%fLA-I&YfB#r(nryGqrCeC zrgyCC_`>mo?75C@O(Rjr2;xu6@oz|30#>41>m}GaLy}uoxnR zt0rNOWX6nlL?n98mtHBY8#eRt#%9saNfp?fH2PzqgVaZ z{-FQ`OG5`EK&JeOim-RyN*XUK(>{O=z`)=~<59DV_`i@7pEd_z+FqQ|nob(v9OO6I`Gxp!ZNt)C>W@qiUAG=-6-me7D1iB!nwPvypC|WMUxj=p~JbbeZM<`Wz!v98C zc#Om1m7vV!FZaJd)KIq$>E6OSKGNF`ZBKj?cLe_FWuNYJ&`eNq=!Fd}g7qTtA9hDj zddrrO=+W{s%2Fs0F*=5kp@AF-2VQ5w*;0i{#MniEYmwo*M7|r30(}Iz_ru=VB*Uif zV`=f2oQ8)OxM`UVsn{9nvBMfFIwuLE5SU3KPvu0X8-(n?$Be(S)1wyn@GTv#J<<+ zZC*my)Q_)*moJ}BGPd{CMn(M8yNj5a#w@Fya)6&W9j|veOtm>bQ+pqSS8$~`MxxQPx9N_#D&=X{MaR24Fc z^HRqNrbMp05`P!;D^?sMR0X-8G{o*8yI1m@kZ)8gS={G!;hw`(>!?CNFR$6`JR+ zmXzs)a5uW3*4r;#5p$^xMl(zZdds}^U=wYAncDPjVA@5u|9e}!;E(@wJjUTG0`dP0 za{XVVE-3K-le!KQw&@UZxH&K^u}LsH0Q>)>F6JN%iNtDS1O%zng@RhgQMm(oD6FcX zwTK=CMXH+PbM-k8CfZElz%qfJ13#q#bF+?H=1aRLPEC?*MlL`w3Kj}d#*sLXrCXC= zBH}JaN_LH?DQ#0U*fo)F^qV4nbv16HPqx)krG^{zOzE$BPlAfSo?&hj`Rv|7r zOB6@ra}ffPbuz|mo*{$N+~PDU?##KXn?|(Q{7bm=3__(!yKPyg2=BECIf=aj!+`wT ziN|#s^XYmaL-N5<_)Ec{e_xg>3Q;Prf-_-(8dgi3Z#Rz|ww~hgyW<8G(h4^M5?AKg zvN*F=*G)e=a}X>I_xyD=2ba$>-r7or;vB?A3ux`XqnBizYgyaEotfTVPsf@2+^j)) zifoRFO`(TI*W80IM*U2%LX%$jpl?TnLDV9^=bDYvzfu8cH7r3jR~ zMz~C*Wt8q zMKQ=z(wI>V)E)6bnXf{-##D!1G&ud#;UaedqD5ZNmmiJ5&VQ_(yk5z=!U$-9WkR=;tEV z5SXCzHgKqeC@$7KSBo`1{EJu1u88d8WmfnLo3bNTDJ0ykeKNKIw>}C!_-WqL z5fkeVb!M6kk|Acyi4Niq+GD>hVF~-OxElbqc*29*i1-RtG*Ba(6Qegqm)!|;B^QZv zQP@frhRjz#K!E<8Jq>5`Z{;l~TF{kBA8#C(<2^@+_t^CpG3Lxo&T(X68e-YOJ;^6> z8M6uJ8r|jKnab#t)(DvtPIn--Kc{esa7#3t-X{$TSO@EvJfb6d0@_u90#^-Mv7~Uv zfSI!b;R$_rO-u9nUg_?L+)U{@aFNcLJuhEFbDQO^T;S*nceLD}*@FnS!x7JJ4~d0TS*NHaT*Amo#&v&u!Savf~nVgpSOp zeS#M(^Sw_sO#ge)Xz&7Z=K^tw7xkSNsOHNjp}A4M@1>gbD#T#3k&6^4)i}u< zHMy@!E*AYd*}Dv{@6<&hU?uKo`A*36-quXS&)iQ@Iwc`b=I}BdB`=j8*}ZnQs8vrW zl#v!fwi5cw{YUzbx$PVn9H$5DjwE|TEq0;C|H=RSy9nyPid`#x6S{U`2X`HEFTY+$ zJSpqfBHv|l-!so6^d}P2lb?%R@BrY~?_IV&uE?K}&N2A7sAHLD!krRSZg!n=I?Nx$ zqb|a1CizNz<}Brn&IAb6E%1kz`SYc%7o?Su@$*b@<-Ml~rrDb3y{cQ>v19HA_+Jx0 z)jM?qKgtw*QQYZE?6%A`_0Ydj@4oXA6$UDW>C_1y8zlwRQY-FRVJ#U{+nOe<&=Bg9?nBVuXq07Nur-T)1XoK z)?9$vEdQqwRKQp&eysHFt@c+MU+e)aI767mnR1>|!TA9%q}%EB)56U$RH7;aX`z&Z z9T}0)U*0FN!f-YP_9wu~W%+leH)TC5>^-M;qR|3F8+ql_r)|CDrLam+mv~y5GLCIa zUfq8gS07` z5D{~*iIAsaU3cKGQ3UdV2u40?;J#l*eN!^)~ zs6*pBnTPzQ@&oH5vde%-!nn(`pQV%k-2YI|KhV?W_tDwttly%QHd!-|zb`)JJ%j*V z0+Tkf`tbwHd=-M742e4HlgR|Th48FCRN;8?pUwqk%a~g@qt`QMHhFG}8Voso;)a@Z zP3YxAv6|Z!dxh)5%ALWP$E$fm7B`&#i*l16`t_F4s$Q(IZ=G;B^>f(EfBoJsHW7QU zpc*H!*_gZzYHZBHJw-X5)XgbSli>fzm*{GI62yJ?pHAKD#vg73_Fb=Vrx-Coa80f* zs&}_*g&7}9g?SWwsk@vByaBj zjd46!*3df{E7^-3{arCoi>>FvA zZVdSE6%a{ayCXa;L<#OshunA*>Oh30a+E`yEXx8St`ZGc-KyV)jap1~ksX9G8QX+P zZ%ZKs2~yNw!Jb*c$k`DyL|{xJT#S!ldpj#5}`zbQ6GfF;WlnKaOT5KXteVqSFl%zBF{^xRW z;VtC+2Y!d&&xeA=Hh=25Fs$?GLB(^C>cTXq2hJD;rt+Q!pOZDwmEq*FA!CwQ$)!WF zAPsJAMlTHvx~T)PS*BG*Td_qtu{3-O2MN~&YOUikQy4ql?D=zYYm?|TDsY!wY@A%& z)(a|80>6Chn<9bgOCTv680Qi9&jM(NQ07H=Y`~)|uh*gfk-$2FfQD+t@`51w*QGaf zj8!^x4SjG*1T{IXnjl=sbI{20Nf`nHcT2XmYc0fW3~Jm0L0u$JKLWrJmGcR}$2gbe zNh!yrLajulbsY>jfuiE5GCsxa;}E@M@P%IPri=rsy)aV@L|Q&X*cg!LTOFiO7|jaV zLl9xXW&6QipqhTwQZk`NtwJhW&|LQ)y*;4pSgBV1!&sh&{T$Au{s4z4fk~J{W?ZPO zQv7!nJ^Mn81&xMa+5J@6UY3lxOkk+_Fc3VIO{6U$y21PVHQU*+tzz&dy4&BU;2nZQ z2o_@S79u^}N1p^4jhjhV{?ROqwX(7yS5c3ve(bzESx}=E1DU0f9J`&91HWdnndK z*1Jp)_pY~M?sClTagf2u(7=<$n+O6O5oDxACR_r^>VhlwDs@v~GTZcTW?_sLr76l_ zL#{G-yxwZO-cSMtCqpB@D7kZ`SB*nm5DSs>Xswge9OxQT|8E}HNl5aPKrM=bthma> zi0$zwX#rT%kP1jxIFuz$_7lQllVy;z$jh|2E6XS!ePB|c5_|wf&XIfcOpn@Nr5%Z` z0i+DOjNt3EA2mTp)fX8_T`tZd;pr2tTy-!eivUno5s6-wYq0GtEBn(pdczFXzb7G-79 z2mU_Qb#$y5=13^D?g^4NkwYU?#a;Q1=3N1X+!{hl`Pdds2%_+jkp~r)KsI zphOo*qF|QjzDCjS%%0b5*&aYtFi32RJg~P>^c_p)CHv_bT6CR^`pFREOJXf-76n)8 z+6W~9@J}zh=7eE~*mYl0P(NO_^9wLfxyZ7lTg552jE-|oc4pV=0xVMBg#@8+Hbgn6 zR(=g+gjPSpXU(wCNrR{a4G8IorK2V!eX1)Tg=i;Z5=KO#OOdZ;gg>H1qr^pLS)!!| zz;~>eV5JzJ?*ap&d=lz6ci@(d*ak|BKPG*^fRBxdt&_#T46(R)o6=4Yznofy`m>wTG9ptO6~nGh>ZoP04ag7B zyjUaD@jQ~Dr~4RmD>f*rlD3k}7l~-WA|q?@V65o37?JOt+(q2L3R@IWDMoVT!h`sX z*c;O7Fx*f~SVT|m0qU`QN_#tYGc@y#}>a|q5a5LKGcl*19GdV$dNm zF!1JQ(1zw12i(?~_$xsc{QZfMhrG4u;MdUqJ^eb-U2V-`Eja+g2 z`U|_&<0J&X%qMtU_}E%^J{lguds2uNe$F?(xRX;izD}3xQUew-a`T?K}jrHA1%Bg zkKCb)OanjTPl!2Q6deYB58}QScMXHF-!|iZ9Jwz#OFGuY`|*p%MVM^C?<4M#gc?|g zyA-6ZKJbam|1|vkwzl<&F^llnnI?-mb!|O6H5h!cr6RIs9vxe?%SBe85DhV(eLrmI zxi!{O;QUz)OEQ$ictWDU+j+l|$g+>zO_NMSHUEiza~E4KSOeA(@@6sbzkVp$bLu9L zvbAL^h4PrS&jD|*KX?>(qdl~%GfML6VVq6&ug~NAo+IDu`!pCd9s7Y$Fpm)*ek!?k zZ>r8v>J@JsHv2{LfyDPK^?=6^CT_I!aDx+QuGLlPlgKsGqxZLz zn!7d2j^ZAL3MHL!E(d56sR$j}^$*sk%uYQ;^bKBnlDZ*bG$!luu`4HEGjQzAEC1Gl zk=BmWd*byE#c&z*Idb2nEtz}bJv;TitK3gDsV56NNb;fW_FbsWgQl2!lt8ceADp}6 z0Z(tdfAtIb#js+}$%#f7#H_}(t|j(_5LwY+!sOE@w`t_>d*Sw>@1JIvH*#-w^`exI zbhaP+ zaZ>Y7g(vh|zh;kWm4}v2-rry3LU1w|4m^55x}5e{2oL??>3%tvvlt$}_C^T=}E_a`agWPvsBpS{Mx)HmqQoG{yP z%$a?VbtA>ARPTP>~gbzKF<_aHB9C@5P~M zw_m+DJ!K6y3nuMuM8i1>C$s#&xDHLr$j)Wc!`CP;7A#j%?Z2shsW~O}7 z?{cYe^2sg^IAa0JTFk9`yEiv~j;47CA^YL_^n8)hk(VC3I$epsJzrceAJ~?;9S$iQ zd`goLHnMQGGgc|}k$L2Q)v!h9^_eU3i;A(4Moz#Wx#F!>3=nAXu2FLEQPpc?>#}wX zOZPA)vMVr$b1cSeK^z~qS4KPfdF|O}jh9`cxNNA-+WzZ~3&J1$tz>k{UXE?aG(R$a zs^g_~_2}ZYgssyDmBdd?r#!1n7fpT9edM;zVPCPrx=-268LO&ejQScGueCLksd{$s-Qu;d){%hH?V3F| z<_)whqufK>P8)z2bEhi2@}s0`?w91r!Bd8%rfM;CVl2MmdGObt4>bl{mG+MnT5+_C2K$|jeIbWKm^18WL+ROO z*0=l|z1mCin$AlEztHzD%Kc0QOM$tNckM@7H)o>gmA?aCb#_}+w1?+~N#GtNC0;vj zJCM1~u51tgDc8>mQRZ!{*`!aXdSoNakQHwi$(Yh-%Z`|-B-kE?_`nfw38Q}Y5v`Np z(xa=IB{%VXC-zn%yxKXr2{_0*N{i&T^7Q>00|)B}7FD_8Vew7tP7_!yH5wcz|4KgV z8(U4+_UpPy(b0pJvnGz9{!<#3F9+Qcwv3a<)6M60vj_ArqX>`^0l*G;YQhrkmRI-V zE|d=(i;b!KAxTWw?<~E(=Bp&PDD@%AUQ1q};WZK65kO-*c3#r9STtj)8 zS(MveS0zbDvG*;Y`jmWxeDA1Nhlg8t(YwhxFEOsRIl-m0vvcZj*K$J6viq;P5M_zK zLH50B{i*4_=QwHwcf6re;ZVr2JD(S2%h2LljcvkU5<#{M2h(%GH=T$~Qv=jrUjiXB zZ60Un#m(e6!`W#;Q!k%$PCu5cT0e(0CGAFS*ek4KiF+ojGA%9^-7IDZm zu1NTr0$7R;q^poLOZBvLT-GE2g@fLO()Bvp)uUJaj8c&H2cVUEyobHdZ!>^>We@do1TY3Ovclph>yMLrH0OegYYP_l2nH{Jf4`&+z-!of7&`jbvuh}e+@Eai_Iu_pxvUELbw#uq64E8+z zj2$$aYc5CutT9dF*YdEXuVd z&xj>*30;L;k{$r&FN06|h0A{r$a>MY zpprE`!TshVXyv#Oa-Mr6cF&(as{(4Mb1Mh|*pW+>Z^yM;hBqa-E-T&HJ{;4UD4m4X zm4&hqIu(Zi^MC_~*0JPW+FUm(WeG}Z*OG&jbDh6ZzF(tqu1A_r#(nfN7kx`yjee=^ zl?loM2zJFqg`wpO^i0#}qWLBBUu;_(OGM8U0$RcWW|VG3A{O$ocJj5~s{|KDWyOCc z(Z$$zJ+f;!L0l@$hU{_R5Nr+h*jJey+oT_8=rIs!V$*veL9oU4j4a68Mqva6e4SmN zmOtG&ciUo9HAHEyD250u`f1s;#^)VtpGB6%(NH86aYd<%0tTdR1ZD$-GFO4*3*vATgf|SQOnz6#g6?O!AHc4(gxh^u7z!Hk zdT_frPxaoex?}A9b*9>(_c6n^ii<3@4Vb)$e|yz>5BnvQnziuTMDtI0cjFkk=&JP?S|!P!Tp z_fx**Ql#@JbUGje{I_OCm1cH9Pd{bmvQnv)`td@a!0D$pYK>8V9!395gDLDwlM2J` zV@u~u0&LYWCuAw-!-zoZ6Jgl=(-=VTvRW~`T3Pd#dPYA^*c^GjpPfX>I>pFvr>uQKgscvdMrToxV2_kld#5nJ%$yJ5*Aq7!$9E-LGX;Z+I=cqQ6M%1s z5XyO}ZzNnLJ#3XOYm#oZy$`e5x_h@%gG6(dqN$>7mM85AQZy|d7%U}YvyvZi&j z!f;PM9LL22f@grMex=U}{>Wso*g*-n9>3a1t4!xQunKQ~kO6f!I2|wG=Md)KCv8Ku zkP~Rw$S_-?iuiTL_)|H53=Mj0u9|9-&7saHit2Uyb0v0)b#}dJJ=bnqU%w7gWbkb< zTCzPfEYc)hLU6ZI(RYk+CXycYov`gLff+D4p2+^0lSN*Gd66OFtsq$|(28^S-cmZu z-61@NuU0|MI7+yzfu!KnlRE&2*?lXN!_+s*VOm^eLCa&(b(0!$tgz1{DY;7fOICv`SgGqC1AUp)J1nia;**hc}Ykg2`; z4oC(?y0s_YpAweJcXa?&UfRit%oBbP1vFI>PTfW6P=m&tzNhV>QUnfki$_v~oR^@# z)Cm}5+e6GC5&+pHx(YFX)wv!CIOv)Bpd^c`zysszU_128Q)>^xIX5C+TK6U5i37>i;#-+^ogKlWp8QO#G!rmefg;r0X|yJx6almB5QyciXv3T z2k<~Lbo%&IZ!B`JkIoG!L1`C6-rrtEa|z)uy`xI6QEYoDd&geAwds=@dTqB!LD+(1 z7*t(u+V?@_rkv&&I^3}IZf0`b1)kt=YTb@n@$ba@VI-KnJ9ylm+A-)h(b$u3&ZXnr z;aDFpX#n01h@q)cWGW|w%JIT3bGh?M>JHtqR~Zmol9wI|+3{KLfgYM(%$q-oMfwgSqkC6+ z#Nbq%4|vy>oe@+fp!fn8t?c+PN+)6DjgwDt@6wy|ba_`Y1YHJNdEl^`OMh$c0Ez_o z`a9hnIM+l^`T+3nN+!wYy!rm(QLdqrcqFUI!7p8XiP|ek?T`XQD9894d!$R>-L>F) zxcUmxClDV%d$1XlUUjoPdVw_M7+=8=d8g3oxTXwHx>k9fc{C+-aN1&hSq;!GwoAhL|mF#9Y_&Jm8^ShIPRY|1bD%w zz_CZNY<=yLL;HLI;yoabuA1eWVvcseSArplox%1I%Zq>#f> zoXamHT9f^$?iub$FvI~H#Vb@9z6r-S0V$N93q13JBR}$8ZSwef8c2ta^6+enNshGi z51GL_@lHtPoY~y68{2E`Ew=EpC_&$eSym~WCruGY1ufO82AxOp=}dzY;z16Q+hrhJ)ZR-9jQ6vFoEiQ z4;uoYXJHuCHkl;KA3fD3Xmc#{Fmp;0>-24om`z?d5_qIbnlj%OmSpSh zb(t&M4-%IN0-y5lNk}#`g^2wB8 z04Gy~eLv4FL=3~G;82TXH1buk(J_mmLp~Far^#CEXI8X(0E%74h43y7}07iR7j0)6Hw)la1ffI*I{T3E16Qf??Ze{`EQ z2hVhmgg)2;fvi^L*h{-gi!-pgqZj|JbZCu(hrAGQsuB*;rPVPq7<#B^w&e!>*b3)! zIQ>h(2TXPxbW1(#MdqU>up%?YE_Dcr0!dh%Abwq`Fa)^MJUVXN^C^XI)Pdw?l>K7) zcAKxe=;3;LGOo0(J(e$HWxoO`EX7ved{^NUh%^GA%+cA0qq6A$vhJf&|A|wt?giz1 zaB|A~Ek(I2)#DNHG7|hnBxj zcM($@lHdwTb<4l;bWF+t6YoN!P%+^tfyeJM4)TA0#i;Nh!1utnJ5Pb?vjEI7(CiiI zqQGf5gUk0(L6ktMa*&Oqz+axSZxP+fOZ)`$oQL)q1sqj`JL7$B4d9)n$gWa91sNaM zwjyQt<_VTq95r*{p>>ISRUJh%w)#+865oFJB*m2sWkxYFPtem1CqTE9Pk`VcqYs|- zK5M3nXU)!j_I@@x=mx?YZ7wx|&`GeD6NRDg?n#JegF^+hao}_n8bljZ`z_|8F$I8A z;*L<1-NrpHQ?C36$WMTMxrB!Y=qoLUbN*wSiCH&arvDtJ?;SQFiw@-*JMOlJ{0ZCU z$Ht)gSlY}-&}M6G7;X?AeN*Pq4*Q)Of4>|)2Xmxc+7Fby-SEo)M(G+wPEh2m{>J(}L0-?2D-nD?3P(ceNjxaZpgrz} z%^C0;T`BB+65;&Hyiog*kxJW??<>nCS7Rqw0klSM4@??NNL*+*NfUrY$nb%( z?leI#I;jjtv(I6IkG0l$)Qp&b7G4PTe=BO*mxoi z;#e$O0*K7pR|(qn@?EHJPPGie&zUT_pdIPVqrtnP;$x@-2#-)w__Z+e;k~b2)ZHv! zFSYc`JI*t}LOQJ0nX_>jZ>#+um6u(Mv(Q<0G#}9Laf^rIe-r?#NogXdAHkVIg(H8< zIB-R_ef9AN^*$x8rcd8gmxw!}IjFRlSrvkiNa(x0V0mx9AX$rt6MGkVFKz{YhC92H zeurj~Xy0Q?M6UB(zB?(o&2u@2Q!E*wF?#||PWwy3*GhoLBknMT`~4DA)-K}S!~4Fu z970)w&C~J>Dns`Mh+20twQn)sXdDNkg}6cZ`apD#Oyzacy!#z)zU8>}O>MdRYjB{j z2khuyMk>@yKba~J-s?g8UN`s796WR|S7rA&QmyBVWS-9z5L^StNUF2rH3@zMFF@o9 zQJVv~;C6NCCnbHy-Lb>mmwCPwi+{j(R2T=VvvzAW*Ie5yP~9*?KNGrEqd`c){mb2V z&Nl5FZROtk;+JRAm+Q2%)x@|_EHf3RCA1wlQet;c!bNBumnc)fZaw zUWi2jM6J+fc-?Jsrq=b7UXSD)TjO5`p(gg5DDgMlsumrFRAn7{!U_(2#iG zS55#Tkf+;{Sm%hwIDQTMZXw|qgu0V-+c;BA^z>NP{y#;>?+vcoB$Y8#%tmf23z=?t+*#jQB}-+Kph8lJ1YG#N+A*l%tW{oEC?pQH ze)&H9ot)ihPrCl~Y*iTVc}LXg{ZpGhA}4ex7Z|6nXWL(CwlX!n7;3LP%7Yn`nuQ$J z)KFA@8BnDtFM&?f{l*o*ANplKD#X0>FXfq@zYq>2$C1bcpy-VQC+4MNxwACrstCGP!j zP9bw+?oRF)GD2poJFwDK>Em{vsoX+ASo+sno@)KptRQz9E1^=zHeC&gN12Z?8%`UGe>T-}_;AAy2n_n^9b$P@dQJ>DGnuD>LfDu-4>W=~`QQ}eYKMSJ%L6bEibexCT-s@^=lnh88E zns{dVrZ93Jz2EY-@dGjzmURa>-||HP?UPZ&D&kK^&@xPukQ7gNN)pM z+2grPC>j+cXv?CC1fn4zzbt5M>@A2Kivod?K;mV92#1~Jx@{oJDDVZy%r4XgnuwDmeuIamP&l^Z7j`=q#I1<)4hK-iqQvho+YS)jbZr!U@M{ z=-UlKhK?sAzGUi=@k0L-=3>bFKqNa$6a_#yQviaF7IfqGaH>Zd(%dusHkN&?SoN;G z3Fr3f%K+AVY|dsl^vPsceDKp;lQS{%etm~DE|Co=%&K$Gr+Wq`H5R4hZ-gWcqHx7U zovp9$`u+$1abHbTO%T)$7SFPRD0gwwwUlPyf)Bfe{K#Msi3By0=$-PILbsm1d6~Pe!kwc!H?>dccaGv<4ml^tpWbTpic&VIGQnWI@J8An>ZMhy* z9pLAhaKSZ#`+EHd@DIjPDy__m7^{-GhwW8aBMTUkK?pA{jnYgS_DT&Yn5FxKAmvx` zcP5m2`}kA2EuV1rlHNgQ`dSPNKIO~yzAK7;ZUMh0H-z4J|ITf*D(ijhtA4H;weie^BKE(l#d;wI`x9XeS*K1)A1=o~JQ+~NPWd63&`=vX5dK+`5;*Zht zRHP04#)qcwSxWK|XVI5Mw(jfi8>ZF@UK0xyvo9>!AM<<*^Q*S}$FW|_+Ecyi7x~LI zzYc$L4dkEk6u2`0UMk%Xn0<;DJDY!7Z;s?`#}j}5_z2XLa-N>Fdw;r?j3fe;-kHG7 zp!oc(8|d-6Ou+rr@3H&;zJ!YscWbkF@6P7ZQpScvRXdgCr&T_OGtck|z7!^gwFetG?S z9Wk|{W_;7ZiWWI_`r62z+Wq@Fo~Nk2?J4{endMt~<@4qZAZh%SIMl!bY;NAOd|k#m zsmGe@50&ZN^ifUy>qiHSuB2PvP)@~h#R6;&q1m(msSatEK}^;F|}aw^{}SMR#v(WOs1uIUR=45nz& zYQ){^GSO;*7h)?@pQc&06Kx!Ow?_QL`na}!NZUlBnG|#n^XBKGk1nk=r4}^44vl37 z>L<}KIyCK8jE%aJgp|oA>mt@ zz#xARkhcsXs?xiq>D@}3c-8433zCxcAkR3x$CT0&s_BV&e`0wga50RRa^R*nRN34n z4Ny@%B27Bdp{O5FAsvg+7e|+<9nGWn6s`}g1nf>e{Odg+m8sGOF(N~RYNypUE0tbU z{;J^#OQdTz@^HUrjPy9tOB7K9s@x_>)ie|XK=zQp)<~k&;7DlG4NT^T7b6T{^Vqx- z=5+eaixz59cJi0_CXBxVU=oC1p1O!WYHI}}vAHWzGPjj|uBI#5GKl-PILmD`V5L%J zBk1#o8T?|UwnnJ8gQn-=j5HjuR|zrITQGhP!t$vse@I_r4^`=yqax3l_%I082A28r4dAyELEb+ z@fhi14Ak@T+n5brkXFAfJ&j-d{izEv+9Vivf@Ky60gsD$ZPbi^M|1=ZE_coqmy6b1 zC)y3FCq_?NmrvOZrdgw}YK_r!TXjPJQ88Rl^s8=Je~_dB)pv_Zct|squn+qenVihw zV|l4LT1Y6>{_HLlvjf7?X=sVeyjW&_^M`z=JK<`x)-VCuMWVR|%xLVIej-g(39M48 zJN);EBC1!m{f#~jVi`#^_fwk~(v2QJLJvpF*S-zAd_>)}AA6l(h~;SR@JTT$!0N7i zh3C`bl6-K74O9nG3q&=NWuOdEjZ}$x0C!h(A|m=9-hxNi2NeG#rzZ_)U5-9Jd0DdI z>~RvM=ZaC9g+^MZ5Y9LeTscbx{B+7U{3}}OwJ*Avr{9*4A${hB+9Ba#`~cRJ3au{f zI*XuF#?fpCDTh)4cPcPdhcW>9X4a+}byo+5*KC2p1eTSO8W439fTv?RioaOgV?4G? zDvi$k3mf10HE-Jz9rjmhUo)f;!8X-E7@^Xio&jU{=)51eM}eTj@x7E0jJ@tWB6Sk- zTT?1S&30>kph&VytADRSnh}?vV?$^g1oSOYNP{-7h(W==U3c$NDoU)?oFnKx=8-*E7C85zPQ7)cae9=t zRjFF_@+D0vmub$T5)oVN21#Dp$0gd>XnO{Qc+7lxG4$M=ZeSDxZu{M>TCJdn#Xl0D zin0xgUd5ZA9e}^o9bp7!uGqz1ylXbJCGDnEn|}zP6{+gPlLv zR)pO9A@H?8@gFTXJEun{K8lYrzNr9X_`ct^qO?o5)XH5ofNKbaSQ>m7mG(Y`A&yu~ zPu6-R3V0ri>;1_b3~c7;wk~P)R0047SXE!@mT%wX8-Hy1B}El7NX2SQ@}tt| zQQ{u|1E1iG8n`<)DJ|Y60>8qFF*-INN8fORIBpZBx4^k}_tjcCYV=RCjg7#BcI0AZ zp@e;uo7P;Mma0ByK9HurN!U}C)^0nSEDx8@&D%M@Vs%655!DEFy3clM6`M-aU81U9 z2g&KItFBPBpAZbEXlnj6P{X=eUXO_e#EhS!L!#WtrE5P;-xghDIV5Fn zuYmPqz(%}pniQHUg`-+pze*!V$7v#)$3GkMFM}zDd#LrpVDH0JZPF8xZBRr zC#CJ%tT^C*@%fjqNhM|F)cFC9}<$ERVU0m z=e`>>b4=RPa8JOd6O(q&h&HUWb*;@jP^8PHVGY+bb4st#3Roe8rtoD|GqhDr>2&!h zDDroF*xv6-vi9eVjKT`O>3OFab9=nh>PQ0pwop+EPU~Wh|pr=hV;xl!><4hxaF15^7&8S>{fwKDO&UXNf z6L0eEGQKCN@ODx_^1H`LOJ$9kQ}+l{1HnSE<%d;L0CF=>Ef8fAEE zJQ{42N?QnD6^Kauh@fm@^x_47DhZ#O`D5kEu471E&F#&E!q%Q4dE(M_5*{$xlyk*KxDs_HB#V>tcxp>6Wy9c>EDlyud? z;C0q;?@g}_tYgnf=bo&>;;g?NR|KuDrudl!2vxldu#PRX?I#|7K#RSkTPD$~Iq|?w z_Sa~AoZ%Y+Hg)&6sZ{1DfpsltPu1Zo#Jqa|D;aO_I&hihm*t5q>=5_{I`sfAn~0a% z+>7VwT>I3_2NC!1XvT@ePf<+>2+)ZGIlXYUBJ#q8nT7o62;!MaM z2X|lfuRXTgG&GZ{I0eG^6Ab$&JC|!sp=rR{wh5M~6Vy|9kZ40s(~A~pDE7zLdJ5}8 z^G^P{67q?!b7p;^H5}g5C6T+|DCS!7o14~(=uQsg5j;gdJ?p+4@`*0=v_Y>po|4{R z_PUR_IpA-bAY|~-xTmdQyUTgc^pVW5N2q3o67pS|btFy68!x@4D9b&q?awhBqkWsc zZb8~5Mrj{1?B_f=p0*F#fAGrHPhU5G8dTU~6|6{~PJSo!oq8IRyYEeA2Qcwi*PIZy zOV#Fr6z%a+teEYG4Ub+mo9vClcoWe)uztTSeg$k;Him5%vOoBfK5X0i=fZMAN6u9% z-j2`d`uv$WRz)Mk5KRMYx@42^ilw?Lyla2XaSZ4CJJM+~QANh~X``x`yLX*5!US*> z$aA*+y%q6d>SnrigQG?s)xS*^{vxAN^8Y&{ZSq@9$Zn*NnU$+l#;E3on`? z&o=A73wooyuK6|Rz)WUaGJCEVUb_-o(O&r)YA?kym}Q-Ka#6&Yo*4NsW^&8|ddF>7 zc^_z}^VNfhQ@8BSJl^!4X}RL8hy|~;M$w-$)a>sUXiBmhD;tk@UCH)(bm|ts5fT3K z`cdI6TM#dk_F!)l(>xGdWfZdDENgh85gLh*J|uY%l;={8NYrKY7v&7HOyn1GfUC~E zgXMEk;X}@a(Kq&9_IleAGg}M}Q}Ct`Zau+#EmqOLvUyXyMrcS2t$*(9%Hj~@<>5}- z3mciX;Mcu$;GxJTh0kO4GbS+usTq$oo!?;Nj|-{isrE^ob}@Laklr=Z%C5n&-Ro}JE2}g%_1nIbUWo>ilnHTdd3-w-i~!X}Ivd$6wb)-i zMssqw7Fji-uW+s<`{0f9GQw;6pia+&6)_WPpWVnwGhuZvuPD@-9mBm`E)g+tX|2RT z*Ra)l6)^R^2GOUN5hg8^Rk8i3jyVZi6?u(Tce{0%oyw)(CI^p2j?8o6Fs3_Y#C$|U zMv2;Ti1~amC`=IE!G>^O%$-Qq|YhL%|s7X>I6TnV66I54Sj312|xd6=N- z`IFsYx19~Ti4^1a>^YQk;5%dE*j6X4p~$>1h*!`cyE?s;Ym=|;dH4r?v6 zlje!0egnd^%$Ddwc?J_nRk^Ac9jkH;WCSMi_kU$TiVmoVpGS@QTbwZ?>?vVz+%bGt z{h*9)r|*nkx5tyq%TQswPT0*wDLl$LL<|(|u~>fG+r*x7v+_e>c}Uf|W_c(k=abX( z%}Re|vV#8}H39iV_viFTYuExk_19oulkMZ`%6*J)-u56CUF55F#V%=Iw)V|_u<+g~ zG9+*18(?AXidM1T$#Hr@f1{w^it0g%UrIk!Ld|J(B9p=+8n1RAT`YCAi53>KXJ+Ib z!_CR8b?{M}pjP1wn*3|V^K+t5v#;jaI&0QfpI)3P$+XwxgNrwR8ElGYofkRZ|0him zinCnQHAs#+O7SzRftLlR0MAAV`5X{uxauv3Jk<<60+Ie1&P-R!oG~)fyvVlh0ne{ z7}43nBHY+-`!;&Yg-{C$G*nzX$=6!~sQV$#|$EOX9d6klP$p?(Q zJQEN{-ZC2eSs)u4v#7C#VNBng5?1XnNL zMk`qo_A`TSq>ZV(lMs4jVBQjIpA>|7O3FO+yZa=VK@_k#rB8yD5Ms#gH7L~hS8Oc9JnGts9$*c5j=7qOcN#4WtaT&KW%u+E?vGXtXwwvwi z$3`kB`5$u6#OL}og9F#<`?W3O6~>;;$XZ-+ZU)|onuEFUXQQ2sGLnzIX& zplF|!A3-9@KgY(HLjm~F_Bj*R99@_0^*%)HXYZHjF)KxI#rde<>wo4{)&J3r?UQ0# z|85eu*gTj484tK#0Bgju($qWofdt$6sTTgKyrdxExORxvUnhb~@W!Jq!}+a;S#MHj zguU;2&o)gTyZ2T|L$Lx*RI(Wt4oie6-q_|yu_rT$iB+=C?Y&GxyK^GxM3oK7u(Nig zwBUk{-sl7@0<(eg^+|tlhwRgD_heTgYn*!P#1mrNVYq-J^l*jP_Vzk;VQc|vO?2%lV~?)lxzT`RQkv=-4?f;Qu=}_IoA({<&9EnLahXq7yCb^&>I^fVW)7tOAYbNm`-G~f zA2|yRlTB-f$h{dg^C^{8Xt1(Zw0oT8fM!UC>%FjTH^W;!_UIZAXFo|W)u;o>*ct5{h9L`*n<)Cf_I#wcG{hd~`Cy>c*K?sitl%`GP z!(&z^3S4v+#&Wa6CGSK@vgU)J6`D+u)!Om*95ZJqku`)(f3?NTIoMhCxNfzbIKp! zeVPjEIR`qylaZ13l7*@B{hWgX?_6Hge|y=U9dGF&JL}$1K5a4sI&Msl=aOrTb6+&m%lQ8V(-zp8-dZ#>ir#3z-u9|$#-{I{8%f>31Ig)@GVLj*Q@&ToF6#Ph+szMa&{)izugF(QK5T68rV29oMIPkDQa2RMNdktF z(7)@3h8x9@yR3XBCu=>On9au?QiJyuV`SW@=6ue}A0+;H_5+U);dn=eF`)cPqa56W z-gMP}s5bB_W1zwygf=flfZb34PtNlYSM_gnE*4kCzRNRw`_TS3W>6rr5PW2HHP3i^ z%w6PNt;i(mD{c5@nV@hffVg)UHUfC>)MZKB`Hzvlmx6H*b_c*9D;E%Di;WTm*@<>X zpeiLZ!{w`j{W6K=G|6!)j@Z-nhPBAoeZ|8a9Q|Dl?q_u(H2_Ioqar7`>r zy@&8!oX}@hw}OlCLv+S8pJhxax-OP%kChcq7@uOv%-oZMp(m7z`DNT~l}2-R>7F5Oo(IQrs?a z9fmU9hO)Qcu2AH|%D2UAbUF5EM)_$sK>BCA-1+4B{nONJg?8)Pm*1KfZs zPOxWsbQyRShAQqm_}}8Q|NQXQIrcIx_fFdG-}j34Fu34q6^pxD zfcss*vukQWL^nLVOLCj&K{N|cN4&PQHK!I_!*mLLDsdE2`zZ*imG#VYIY}=4t~$;-D#{RnGuNGn=8w3 z%qHB_4Ot^*nay^_OIy~M?~&ZFe45~$jaFATUqd&l>6EHUIte$j-?MSTTqeEmuD6?- zo#2erCfk=8;;L)U=bqfl!TSf}wVgt)lV`+t!5|TDDeA_eq%X|redyV#5wkm>y*dOQ z`V8tGc38?_UShx#zgDl(7;s($s@51_jfJki4mj`XbkHI&oBdXc>^*bar>UhIO0f-e zR9$tm)*sN7clW-BmC~s`m=b9&L)g3XvczALAO(&}Rd+2QGb6-~_sK7`y$KHPnRUT#Z)Cd)b#4G|_m+^AS|PlKFcl=6w0j zi29~vsdMU=nQi7*e=~fAuFLHIA#R6~{nkk;=RqcSmTw{5fMlIeC_5`|DN~?;fT;{t zLYO0GLq=EkGdj3F#>W2r1XEbFx zN}{XIO>CyPJ&gMvVa+=r)<}XUu!Ambgp`FyoYv4`Cdntw25>B-lD!iJ5#kS5l3bDJ zeHswOuhofPg`c;taof)S9?Zzi&l~xX*S($gYXshMF0~D3-S99^;&3ID>fLw8+phZp zL7ix`9Blc2blrP6)Bhj%|D88G*_@9x=d(r#sbg5jjk2dA=-8VYugWae z`rNBcTXS}v%MJ9%)i6(NxaV88$Y_3!;rd>Ww#+pBg^yVfHT6AW^4&FI#noqB_Mq8Z zMkrZ1QWaZAK_t-0e#Qde;V1SZ7i8;HPAcXB0)23BN2Bu8r6%Eb!8ygV1xtXZT=6bj z+X36yA`Pp7ALB(e8eQZYPnY*&&pm&N=Km|r0Vw(BTwypG{SW z?jRO#sL-gv_pSC>zHv-!>LXublqX4@31f7oPm< zd)}eQdi^LZ!+C7nFbo;$7$>&Wrd($%+K_~AHE`wK>VFXK{s8dKHC;GNJ<4mQ`o2nO z*pmH+n#VpD601qaslE_#_!Y@Nm_KTA(j)ok8%*m9jO+9~OgsKLp!Xn0BOZDBVK*0T z^lv%=b&`xKo*T_NEE6WWB1?nlSh{hsX)-a*7qo3&*7X=51x-)Op!I71!9JrSXa?UX z?48Zba**Xo^U4s@OXo3@?%-QNc7KVVnOItX?r042A$D)QdqbTc|93uM?9NYm{8wh_ z`V^*Redyi!zpC$UUJe)dm@J?f(kWj4z?`O)l^c9*w_F5;?E;)Zl;0Q^3sg zPwj`B-kgcNTi{&T!?@l9c=+%I@+yDD)mI-4;0Y!|l}|vu#Djr9mKTO!9DVJ)HcU8Z7Qj)zCE=`c4%6-^*v9sZtu@n zp1#Fd50h2az4#k}y_%mdE?Pb3y;$++=FOpxWEJYIC0=jrxRMo4GRac-P;*MrPkHg^ zUXVUTL{wH*T*nyK51`esQMN$Qep287Vb=GX;su~vOZuG*--+R-j&!i79yQ}D)Mt0S z+I)PIJG80o(x|LN6+?J_BhblcL+gEhl zXp}Mi+@UMqt+h5`w<2UqJ#T)QE1f1BmEET6`FG?-=dMDALsOo4uqW{^Qz3AYQv0vvndvk2(_gOBQ$HWtQKak<1CTd0F)H z!tIen-KS+HLxpjNb>rSCHWCZB*YkojZn2ULc*^Cf!RmHX9 zq|1->?3Z_PLGEn=fP(jT&Pdu^i0cfR9xBX-7zrIX;C+V5Yd}f;w=G^M7?*;|1>`^F z1DFwO2mz)A$h^JB={CmEKsFKgJ_w8%%`U{h^7_v*C~yT4qi7;UPw^cE2N(hJeB-IKeoN$jPwbo zhAI39^EMFq1R8p@c5){F5b)~Nxgx+BJ^zRHhC+VN>w3;vKs}<9J4gspAnRGTMOZ0*b5nXZ3*6SBWpY3V{Ve!(fq+pE}b;0M_Lp`Ro zRkc~-(i)vKm5L*7_Tt4yO3xjuclC&kRCQOXsapx@F!Qm#C}Y3xd{dGvbj~IsbiG7T z#Xs#%q}tAFynmwg>+-uT+z1V|?y~j+3(4~dNxrv9QY+UFd()`A=e9Cx-Q7*wqf;t3 zb97#p%1TTMtBJ>sylzUVs#P^_H6N}|5RQT|&1&51&zYjae9pRreid=fpazS6OmDP$ zU|BAiq&FXaTlGp-^}OS+;>TsdR~lt5b>fAE&*(UQ77rwar>kXfsZB>##^mx0sxQoV z$A?*$s#{b;&k`-cPcl^#@5lYHO2_)vzYG&sO`CHZc`JEqMDBu{la*y5a>KNZBY=8Y z=X_Eu9HJbgO4KOJVtg z2I;mr59#uWr|&?8GJ?Q)MuhT?spbmfOr4pUD35~mGQk{i%VI}6uZ#RE@ojCx^*WZL z!^N=QrII$VYp?x9_dh6IxYe##{3k9?qZ_o80k?@<#ew!qmKzvl_GN=Om$GCL96mRO zzIJHU9aeI(gKy1m+bX{tt42<`nPqz86tP*LhT<>&LOI7^gs(i=)jf%o(Caj~h3Ln~wYs))WdnOv4CXXs=t~k` z?hkNb)LE!#XPu%@SL1LFX}8_whmWuq;7|{QVn*VfHg+IF)t2yinj>;jHnMi_TOxE8 zo@L3){waIB=Uc7y;FGpw_)9Sp6Cz`nUr{YqDx#-dy@j)_Q1+f`8O>KR9<`RvkyR3%x)%Ji+DD9q+#`Oyi?lqf3uljSesjQM=6B>|tIA^}9`ET9YTGg1J} zyhTt1DcO4qCiidqx*>v%i9)10kOvTs_*so-D$mUS6T??&THH85GJN$$9g>hb+B>L8 z7q3tD3tBG?`)r?w>76kEev*|CpPnE9*`t=BS(Mfk-J=e-TjU`@2O-w?V>< zoK#H&mp684LKD3?aQ=gi|F*Amz!M8;-}bTi2R8nNMZVRqGB3#6#cgTjstOz<+h3O6 zDFk%N(DxV2ROk$_geD&88tE%G|H)iu5SSO1Fmy(!DO>77D$Ha|MrhPBT^pC5CNCs| zJcpnOR#9L}6(#Z@Vg-OGb0qeWe<`71=~uze2QPjICTfs3GNOAZ`d(wQ;;(Ww4T40dCfdLt&|cJicG>ba8_5Pu(&&$nBV1t8lg@}?_%jzQ!D zktIM@|3t*)n`7;zzGO@N%RM1gO>X}x>bt}rzc8Iv!LDJ`O;lfjyX#BB=3J#Gs6Z_>2!b^FGAA}pcU5ZOnHmX3JW0R#d2M)Wl zEQM;>5KC?40M`e8jk|)>z>!ZU{&UbPZVgq%es|7~{a?Cl3%aXJ6+~ntSOaFu(qpdg z%&sO_0;Xe@&l+pz#nVjyueXIXw&F_z^F;7o`eb~`KQJTYCc=F`<@B}^Abf}nsO{07 zp6Usmj#Vk4uBgy=!5_9<1LNoJ9xfjL_x5I%!s%m6OQ(&sF+g|XE9tflbi?+D&~{0n~>g_2(ptzD>D9+hKyAFX`&tEo=u+~?{D7f<`0rpEie-#2i8 z;}A+-?3jtP$H%@`r^7mqa*P2daO_biEA_A!&nFxk5RTxa5z9c6tOe-X&xz|5CBfe& z$eaQ1z_FXp`{Pny2utus*WP|h`%|%<=0h!@Bs71ThrECdLzkBitb#(oFHZ3go1F|k|Q zu}_a)qi`T*6!5+qBv2IM#(|!rL65K?S_GIS7naG2c*{oFj78K^bo2%gNi4)?U)jcy z%P%iezZ=H{_;|c|pF~+Xon_|VQj4lCz|_I9Z-{6XF8Q(^dX|A1eSqD<#evw#>ifwX zN+~>4zK_ zh*7efJ(0J5L1O;0{CBN8F*7~Uxx3WU zPIB4N$W9UMvRQ%6%S!giHh1>LMeg zr`WA+__{#xH4^+N0L=e8$CwG`H#mTcr~uq>U^iNBG#e!?E{s4F=+(gW91pAeNxV!` zS7>+7QBYI5d>A5|bOP>BZYN4`hhb5UOEuF$L6>B zt$1WV7GU7Ez6uN7hI?=rSU#{J{aVUGF$*5=(+j&Xme0tbXR=E!TBZG@76b@*Fq6&s z{KF^%7IDEIz7W$+nt|X-X-OMuk`bBqIctUz8cjgHqLhf}#Bu>S#lMrI7P7094qg2O zqcET+wi&9piv8=+!od|sXwcJKK1uP+fN@kU09DJa=u47Z*_ZTd*J2Jyz^6@6f1 z@9(Z3OD^BRhc!mdFfe0$0$bb61a{>s7RGr3WvdFfb%&pz#SopS_xKa*@e%rDxID4Y zk3SeB-waMKtF_^zm{8zl+qH-Is-08;Q8>84N-n-0en|j<3csx&d-}$)!}je2u}|)r zb4kAYC*I$YT^&Ul_7+a^N|FF<^_370>uh{8_H{-jBlx;VU*e;(A-E$V)rU~r9*Fv4MC4>A0a(M9fPq-h@@z>9{EgDGOh1{M zn$tGt-l(_ErF|}QHi%US$dk3|nO~>4lSJ_j?knOEJNg z4`*2DYw-_wTk%c=XetWU{0AayU8~CJ2|AWxxDCF_uKdEt?Vo4|F?xA;5S0K&+q9I% z7|KW7Zk#69%yzxH?w|l6kc3QsW%suqkKH7OKe&s11wc)fSE#=_s9G;UWYUl%C<Gh;l(C zjBQr-!i8i}21qyr%8TB+GNHU6EDy{h@PshK3`d^4$bJ+yQ}u)jCult;v_bcT;bv4B z5T#2`RsEaJ$%f;qN*Ra$`5fQdR9S;RRP=o4qKYv?3$P`Mo)~8*;86XvCZJVLa7MOO zX+HsvYQq5!aX^-=VK3WjpQ)ym$W?z_juLRChg(xe zuObEN<ueba^KokqbCuTb~dXE-l>PVOcBhSd*<%7P(1(2=C!zBU^y+I;`#PSzLlwFADP17>K_UvI#&as9{2oV61|D*Up9QJa%_LT$s2_EL~5PHzkaoOv< z6?ODU&Zs3`_{VSi!vgNq8pD}iNxvb4|7lq`8n-XSwLh3dE<2e94ZsNdbv;_%s;Kcb=-gghK3OBs-C6-N_dSSTPPXIbaO-(*-kwlyj zcBBe_)=|1BuRXq)6qavrxJ@q+)Nbr|Q2C?{GrBjFNob`l)qdp@c)0j1UHrL8OJwIZ zst18meLLR90q_DMvJ9}Qddn5cgeiSO?;c2v2|mKEU2|xSL{*=<*FmK~K?LYl2$ag` zAfFQoof+%{3bP#*T{}XXB5$VGnUjQ3tz;BJHCAZ!$%DJRI7#p7-DijI67o^*(fXvvBxC@A`wgO2@+m;n!bD zn659)cPxy9C;%7@(EH^8{OBG$_AES<4n0Kyi4g$)TZ|(V*o4Mpr03*C+*>MrA^XJJ zXPfzY2>ewAE&CCT+J=rk#tz#&<4!G~$INS9 zU{Bo2?pf&ef)ihXR3(B< zIT<~G1UFdCsYk;t*v*p+@b9W`CprBF*)YNlp@1mf+3xk8|0G(qK1O*nRq9YjPL{RB zzbo%czV)iA{*dr{!`}R!k54Gs@_$h>7hk@9tTPr4PzVE{xj;+$WI`O*ikbd`&UTGf8U~www+GCwg(CwPugC&Y7v&A&@edO z=5UZc%R-f$?SI3>mj8Lek6h1{+GAU+9S=zkIf^IyG4taL@)O@k5FvS2g-V(5Yuk`h z4z-*AflRrutW4AgSV4U#Jd5zyo<8Xq{td)~7+L!|EU*ay3Ocvh^%$D5jnJPKGMaWG z;cs3Nkv^TG@Y`2G|9AQ%0ek=L1IOuD7Wbvkjh)vE@s{m+rZ)<^X0}V@0-oSM!&(1F zj`PI9^`@N?xNvvoE06+9E2(v@om(@~7Y5z-#^!3 z6w&|IZwQ@k6TAf4N){p>)*?2{h*bL+U-InWvY$A%VK1TAMgIHabBnD4!L>mS5IMsW zOhD=#p$h_RmJAsP7qDeg&FF`WlR!x`z8}WXf(q_aTEW ziwnfmNl4?fl1q|3ycWQvha;#$z;WEG)V9lR^z*=*C!?f!5m~Zbrm%?)gG5HEg!2q6 zc@j?f*y)f22d#ELrgtrkYF#vDUsiVP7CQg4X#-sfcMVC(Urpmb+>$8~bs3f`dCYl} z^e81m)x6~_-;q;@{1y*j&p+lH5NR;eFC%H=-@xu|(@gP1!eE^@#4;6czTbHJ22p)+qO0P;Vy2!D#4-tXIAWWs ztX8mkuV;m~WOJiAXUH0`UXp@P|AG5sDtI>97;*0tr}^u>UP#Xe3HN={r%v7Z{Wcx2 zIG%UhNXY4a|Mxjx<+kf0$w7~yI@>Zi<1Kv<{4o~S7%J>-xtgi|A8V+{l=pB&C$v$% z*kuH5G~cQAW&$5DD>;K0VjbWsmbA&R#sW1nt#QJ=PGRaI!QnzJpKCn>B!KOBieyxz z5M9)<@2}R83|m3A1yDrGNk-&+j=apU7*e6_Oirq0?EzoJ0y%F&`TY!9*43SwF5k`` zL?3;Heu_OdNHjstLrAN-2EHaikc`MbDlmzlv00Q#MLQX#!;34(G((Ivr|-e!P_kz^ zx6KT#@U_ko!Gz>>O{ZQY|B;iRX_Gvc>7yCKdytrEiki1N!_*W( zA4huhDHR*~x#zXNO3$0Vo=CKH5@7$=e2*<~B_;fsRW_bYSi>QeZk-0~^3j13fO35_ znZNg8>LE5DP2G=*Jk2EI3rK1IXNXYpDO0eDZB$O6Dw;TypGM3UBHI8mrX<8lhAjPN z+9ozNYr+f%GRRP0m3c0MI&g=LAkTNAG@gjT@+K~4Js*%&P~|JWgKIBs`Ao&Hc?!j0 z8_G_nf-r@SWxquhNKjso?~bSG*B@NikqidL5l6;D2oM=lV}R8sApRdBUtK3pF=FFQ zMBJ)i$nb|$(}6*e&=2Xf@qzf2?9>RInqrOU`V8>JQez*y+@Jq}M5^B)kMsV z>Kjo^=A#&Aj6Pf8R!o#}@(+)yvZ+RrrjpQb*fBo_(#n#I4{=B}Tm7|+` z-MDZLB$!3FmC^YQ2bJ9gR1wEQcAr)p&osW(`gvvny^<<2@cOyHmHhEajM=FKQ+cwZ zmAuSaltaV|Mf)~^zfrA4AUgDpz`&{h(1U9J-!TBQ6qQx5r z#7wlr4|FIrhIS|e3HPx*m%WqteCRY$vcwEQ|2y1ZTZ8)F;!-8)%KbM&bbfnf zdaZszD2OZ0|H6FQd&4c`PgKiqGSypN%jyw*TIoouvDn}Bv?Czq{i~So^7jxLxD-yt zlXg`uaPni4lRnp}lf#w&-f*-kJ+=CmZ;bQ28MY~<~1d;Hr2yM5`fCFQI zH*0Y3#-I;y%=krWoL0{NyqbsgM2v4*;^g*U`KJEUKht0f2^MIZ$nMl?ytAL$EHGT@?kI5yn4kAViYhML%w=yrix9pSRQ&E(1&*JaRjAv0l4g?yK0RtON3&y@L4H zjF)MvPXy+`)xiF@X%SI(fes|o(TsErVh;*C@~dQ+c>Sc*)t7g_c6)wq*7A%mQ|rfu z4}RQ12G2eaP5*AOETEl`3}Iyjq0Zx1{VX)```XG>JcgkbM`9#P4K#7FMg2y zVpW|Y#fqeZIhxy@cZEw9soV#?#QWreA9%AlNt@`qT$Zq&UYscnKDwM+21sW*4qaEA_--Lq4Ufdgg|?Whe1TVQho(=GN!1@BYNb zL|o>{TD0_2r|q?O4BaXQ{|I-S#0Dz=b-HjqJc9*3+>1KX2kRRvG8=+ezDHi$Ihv(f zoZ4jYl$`NRg)p0$LI?a`s}l_Pf5@Bv&o};mBxkp~@hX@v69vKrxGU3T(yoi@5vGi9 z!}$0`l}&MMI6?tf%0K;KS@x=t`wxhn_TJmXpa$>ZFy=H zVPb+&_G54e$)>pyJd$%^#RO0wtzFc>m?qN&)jT=qvqBq!8oNn7b9@KKU1Hl-eh94nGcD)(R)xNN`e{mfxaiT`{ z>Ta6rJ+03^c@!&GIk?4g&C%$$F6!2Civ;C8 zYEl8pb*xG>iLg@)c)`aSQ)-dFZKJI@5G8k`hkivg@5Fz*C_WWJ&2=FieJaPk$K!Qb z!bwu_yIY<4^EmRY;RA#9;=-RwK&bv}`Mc$&Ki4WQfKmx`gu$~0?zQ_BR(Eb4l2;PO zxmr<&aSr*U0<>KF{t}_aZ_qmG=%0ujz|u>y=9SWo;a5k7#^%Wc>KY?OP$!1NjYr*z zGe(=BWl|6V3O$?Jdp7~GfdG_7gIY3PW&UD_46#elzS6@=!mf3ky>&*V4v^Y7 z0}A&-DtEG^GF=I(qwdQavc5Xw3u9TmA5?vtV&d|DF@?e{@nGY8JBmLncY1CRXSv3C znTSx$TuelLwGebL>FN}3ebg5jH6e?;TbSAwONgF3r`JLy8>-YNojG(6010=PQ{jOP zjZ;bj8n+L2w7cuZT131avyxHgKCag099e9#sY=tZ#Ao!|?-P^BAbZZXj|%b2P`IRG z@8Zin^0_T2J_mBqo0sjjgyPFXqn8|9;rP^4d<~x(1kM59;@6aI^$btf60C&fx0a_(N zV<3ZRqP%S!zAqxuhM?enM=@Z`xf0E$C{wjOpGB&b?SCpy#V=s&LRIaml))xZa%w zJTEm=8fN7!(6WiB4hl3#j(QJu;hb^>Qq2> zd$ygLBmH6jcz_md&@Cm=Ut;Czw#w^OO1M!;H&xpX>4YP>uaN}&MeIdt*nE3M;b>uj zh$DRq!^CLgnp8hJ#1dh;zFz`XRWQH&?I9as%7X-D{gnS26n+c%e!AVC4n(m7196wT z5@jKF0dmGnvU!UT@0J@r({ za&VNfyc&0HO+0U|9aa1_nIhgxM?^EP$4s-4$EU?<|rI4Ic;^zQWhT(Z##vlM$V5RUir7D`~L4NZxJ zbLi=U={kbtpFU|oh}5kWSRd8LD!a%Cl#=!mHdAA$J+?2IGtmH05L|AvnS& zsUn^?Qgk|t3t=dXTcy`Zcxj>B+ndCo%OxOwQ?s(u#sUMK(RUj@)cFinyu(%%G;46? z)u6CVES-_kvc`5$+x4_CQKj21$qEUlH>`@?De3-UeNcaI>xi8x4kW}|c(gd|?=HPb*3{Fphy> zzC3>z?dNCVMG5^@l0yE?K^}<@P$b2nJeGd8iafuY9xiJMWEG9Q6fmx~;-+e#sStxQ z5#+xFr3NM&`N@OZI-f3>G>?tSEdjK*H<}^ushA<6tr|>tVOIh#a!NUDwvTJKprNkQPge!f}T-xX&u-`{h@UhtuiluZ3R!-_=iz3D?7P!v&WnVmJ zQl-0*Dhk2pKYE=+qOgsC{;jTGaJ%>u&vyPiZjXbpBU4Q%E~_1q5?n|G3%c-&V3}kTmwepNQLAJ2(CK2up4(U2O&nz8 zLdT7-N(=zHwZ#u7iSs!S@OZ1=FRd3M90Q<`4=WJG!edWlw8PdR6gDOCD58*ID_9~Y zk4Hb+Mqg9}#I&Ja9_XN9Zgw#%%6&|f3J%m$Bab&$H(-IIVInG|lb&pQ+W{|KCfsv7 z)Kx(;YBxetMn;C7iJI~D7u35uCj=2bo+J?J)h22EGNIa7;MPcj8eY=e*w9`J;>uPk za0B;8T3s;_*5F*d41vkZ!0ALpE(NI>e&Sf!(Xf29M2Q!JY&W-~+(|-_C}0@}&|$iX z5G#I=8hH|T3B=okwAa2f*g1hdv_k0BC!G2bEhgh_Qde?VT8DAII`s6Ex zrs6%s#XWK9ox{*wnmi|v{}?EsLka_f#snOKmSLTUesRV$|XQX_%o92$iQF#;H6x6%j!XVzBH{(Vw3x0-P zq(A_C>p86pfXLSI3U44w9L$oEMu-KTBqE%MMtGm&PG;)LG>|$$9Yp&-4kn0Rq|62- zt%4k>;FSlir^An(%RdIwlWg(@$N>v_$iU1ZoFp5xF#wihgGS0hvhskq0|MNY6gMji zm?#w1afrKC12N}FC4zbQSy?N$OgK8lunE0D5=bpVM;bfH8#_JbqKe0)18ERVMiI(U z3sVroTQ+VA^tnif9HARo&4Geg&^k94{{nN)0Fk(0R}(Fr!PlnvFTfk3M?{W;KiJUq7u#M=xxi33-y9k-;zoaop2 z%R%aZ%Ar`P;~cOq4dTUwoM3^~Iba9keJ=+nW!or;aX$_RhwL=VQM5KpaTZs|aWq$L z5`-EK52C@ZaN%J9*jZB9(6kgMx|#b&a@-i~ope>s3F<_LqT=r^Wh4qUBuHE+}x`nWKyJ)bk&KCO94Fj^ybT z&?vC+I1OS>ggUUHi99%s2H8czE^(#kM82DJR2#9VlY|VzQFNGb(R=rj94s7vyVkLh zDY!HW6P^>HzwU#Kp0|1h7QP~v;y?h4h&4ngX?*32#w9*p? zwsQ^mES;O%*T@1{zL>u%fEJ>rPIk(*RD_=@;OkfiFY&F8YxQI!%zdB3iQS_S5fENqi#Uc~dQ7Z&qYY1c5kC`E0p0M~Dd!TVR)N26Nyb?1@ ze>%%KaY4)S9RaWn;Qx&qp5~&KV#*d4DCPtJoz~;Ptvd^VS~F{{nNWLG0MF^Xyi=Cm z!*;&Vp_znQV4Uc}b%X&s{_$B}i`4g>04d<^>33SjvEe>S&@u{itrPh4Afjy&FC`Cz zc+p@H6l5VWDlA;Cf#;ku(4Rf^-2!^4JqVTd_`)U0IalnE*O5orE<3MHt@S6naNj4&m0WR$Tnls_a@utd7_s7)x zh8HnL!5uve^r{2)tsG{DFtNqpfGGUvOZ?vfShFeYUl!*Nhx46{-6dcpz6kur@ymzv z|K?)f6HvL_vilUI`8bp(DSEM?XX)^fe@*f$b?FCy`gCQ$7$XtH%rNYo9iF%wOV#Y3 zxXV=*rB0BY7csDZ7FFY5;eWuOET9ZA7sQ6!rNG)f#bjw&81n>OCM1x8pl@qb{=)D$ z%=Z+`dlq?`KDi3u*B`)YQu+T70Dl~&_gI`g7XOvpS6B`HPIc@dJAvOkL6kGO&BTmS zE{^{|#ebcNr}%KT7ZU&QArqDNT1&E7O)bkeVb2Z z6SD~Dn=l-(V}b5wH^^**&ax3n6y=*FggMPu190N{MMwq;nvO%ZGtkQ%k#z^GeA4_p z7c*u&QK@--O|ZR|ClXY;IQQQ_!nBHymY zJLd6n!6mRd<&78tC`JR>JHT&l!%S%KayqQk5){ZnM;=24g|cr$$_eH+=n zjf|lymvAEw%-QJHjFZpU`qQY||8b43>d!MX-q=dlaIvx)Zx>iAdMM}#2J>r%m;nH` z{jaH-jxs;Mfs`Deg-qzRK}rM-HO`|kxgy^HZ+9QHk8&~ZxY%79|Hk(F`yp%pb9fc? zR@cINJ0E(YosFJgR70lN z&VNQuzMVaeSqZN!?BZP@UQR9Bd@=tm@wm~#^7#xRG=f%W=h8xi^xB=owUxJOP2R68LislwCZ`?VIxH`r zvEO{~96iR^Y$gdjOhhekF&r+kn~7c~V%r|=yk&hH`R{|gR+Qm5w|{Zg=u(G}y=cfm zKDvdAib?z&^ymwS{blYk+=X{~n1@y~fC{|7XbSSmHYAYv7(@X(a1e!r@j@csF!s$i z(!$Oc%nKfI!bUH%(7y@%yWEMmd;DhJX7b@{@@@PUny=;x(bKHuMImqpQ&mhkM4Umf@}4r79E z&CktNX`@wT_7XEHn* z^)7iUJRIKe&;~Ad^2PjW^*#YyU_OdV%PBt={_E?w@3GVL6Y+n4d=bQ*`CwZC`t$kb z9nC8J^E@xJF!pr7K-_=(SeTBgBtNoQqdmu)LzU{_ITf>323)b|QP3kC(>`o?JY6V`DxaRHii~VjDvAfAkdjsoqw6zcO9s z{T}fLRac}ow+@P5_v z45x2WmzD+D6=nUO?^cF~z8=DzNzNZ`a`OT@9B=Or{;J>neBi?qh}lJAHT)wrxQkCM z@?Q1Amg8t8=IREmyQXzFz?5NY3L9=F`AwVUR2F8cwlc{d4oc3hAsfVj2?+uHUm-#1 zLSD(vd1DD9;ug*K47-A)uI%=Hl$vfWgw`D-^99&w9^_<>xIy$cgkkTszIPTw+;ho# z!F?)9F(o@@fJ=$18V1d~KZ52@9^cq~P6Dn6sebCI#80sVoU zteIPHJn<{%&zQb@phWMYdm#CFZ~U2@aXBDE9IqO{#NQ2jF!RT6IY0h!>1?&dp{%hz z+4!__$n8OEx$<4xKetVrZj4^gi9ILSa9yLwy^^XgbhDdz?BbErnl&}nYjKNvySks+ zYvaEL)Xco;DeIh^ZavL?`{P#C=;sF772Ug~Uw$s{q?fyy4?R-NZ8-nHRq~gvdu5FF z>86zhpErgLoJ?U-W#s6**r&G@lV|?S7rxE7t@%WLyT|y%-9xJGHRG>(x)=jy8Yl5c zZmzG~kC<1ko$capIdwr60-PYDRZOneumH*9Nh?Fn8kzf_JiZRTVNS+Q_Kuy3gMHxJm;Fln$?_&G09b;!jHR0JTLFDI=qpQ zslQa-nqc}pUt}5AIxviGxTgInd>a&%Z7=4- zA5Th=Dv81ZhudvJ@2W^1HP>6~`BeRR8*sIF;n2dym?5b4iE);d7n)pX2-tXzLS9=_c86 z%E(!g4_~>hG2(?V8OKzE01+~6Akvm-nYLQqzYmwhrX;m>;$OCmT#9zf_l{UHUwo

(+9w&=1;S8aj_hthA973TQu+-xiM|HB+`4CDZL=`wJ6g}HW=n4k*X$1U zsA_(28^Ol)jzPtG08nBl)=&~C*ijcT>C?WUebrPW!XZB2?oq3n(N|0D0<9bV3Ae|W zOfdJ&4b~PKQ}sY&=Jl_3#=ZpK&pnhia+DB~aX#Eb(U!a2+mUll(RQWrx@8vTb2`(7 zBqz%2*^99WCJ)7-Dr3sis_In4LA}HvE(2hu^q*YzrbD}d=^`@xnqHybzO48(&ox-x z8Bgm9Sgcd`x7|Zwfm@||=UX~eyQmodB@jLaFmx5d0ar{i;o3OB^KeaoUumcLmMp#$;Qzfb# zQf+fSrW~56oN~%rNTrgtIV2$@sZ?_+3F#!MPk#G-|A5`D-EPTxu_A#N4o{J1hRvi3*on{^qw2d>dar(Ew z&l$FMi8;rUFdpB^l6P}uT&&@4^<1GdweNBV&H5{?07l~9U$*Osx9CYN%RB9Loz%*U z4KxQ6LGK8fqyZAZN(aHfeYHM>@H(`!j2p_ZO>fkFJ&jVS;IZt=ZnMrd zfMHYQnT&i0SVvba!z;ITY4>(=(=6A-oWo@~MCy6Z>4&{H7^JS@NYvmB?-G-^wiiUW zit!-#>e--jJcic>15x&3Nd(fwxeO-)kS~VYnGDGx0WNl>*hP~nhClv8l?3U?BYjyKUaZoJ z0vUxNULuuu+ubgcy3dcIVK}@d_i{0Hp!ob#F4Q=>Ffe#aU-XuPu=7^DjAQXi9_4n@%7H$c?({fNH41z#29kz5jU_~L`H%4EiDG2F0l zA`ID8!N@xuXzk0zGC8ABe}V5cIQ}yDu{Z$adYKF=SB=BKcr@y0!hO`O*m0=}=W9Bq zH6il0=+eV$PqfxNyphc9kSW>X5uB%;O2|9u!4yPDpihLdX)h_4)OY4RB*SV047Q0aAnYKsu&lOlL5hb z>b@`*lt$6EtU;-5OPz|z7R|DbK3#uQjuyvPYFNKCq@VZ9Q<+{|Y%u^w9Quv~qugwi zry#yWUNw?N^(dd((_z6{xcUpZdl@okh>Wn>848NmgaJ`nv!e`AxqBe|rbDnZRLmIw zR^}g6QowaVjnrsTZZ>x^A8owWKap~wC8^MBm)`!=NS!nK_s0Ute=@am2<>`2OaqItIZ<{(%udUVE%i_ z>F}?nQsMJJ$m&7G|Je1*5_8oDY<+lxFxla@y1nF)$3Li|#5p0@5Pu|fA6DtePXsQS zJR7a>)r0Yd5nCJ{#2z*oVcD zm_xz0ab4Vxj`{H6_>eO>RKaaPJdq~XMQhh%s$k6xZ!H8}fX^x0wynPVB0(D=gJM`v zO!KW!*$YnQi#_2t-4lT?g=sRa5Ipcoy}UWjdf?_lJA)eu1u%UyRa3><%d~{ z7XJE2-!VqHSnSjl2PzMT!&CRJI^DlMXQ5Vt${IYlA$RL*q$vl+t1>kb;{U$3oW`Xi z#ippwg^$c$@rNPa6u+1kN(8z4Lq0H{<7)Rnj}pk1B-HVh+MHi9uhfE^a&9$$(k@hQ z-qG(0PVPDoJWN#D3IaKtAqVQnm8rmoq5Ec)G`V>YY^8~Jf(LZ1nzzqaW8Tla0cDA_ zhhz}h7XVT~xj8C4pSphgWzg_TzHJhJ85PkA>Y$(jGCn8qqedH7|GAaFm|Ah)@$-y? zUm`ADCK4wL;M#M!I#uBIQ}^$uS%TZ)N{-YuJwQ}H;*9X(nYUcIktPQ~R4@>f=AsG( zVuJwuskt+aa87!T)SRO<=b-G>#a|Dpc&RtXq}~{x1x{B^i631 z;xdm?L=~bwG-&2BqOo7{-D#OzuPKN$45Vb@1i0_?eblpeUc^CtqUpFH;fQOzZ+`PeU?%3d^yqQE zj}CuSjop?ylM1R*CsOWwO4%a2tJiBd9Io#>dX$l^O#q|Exe^ge2z7KfH8RkV3Q0U> z)cMZ1%3l~kliCIwk1i|r9aO<&|LYSOzby)FkwrQ4>lDE59J zmUjN%(p6jFQ)Q^A*)jt*S^twNy$#CE(-gZXC<}-hko~WpU!EA0#r?Rt^n9}-j= zx^5c+lYZS^x`2LkTr)kV_d&kJw_C*=ZBUl3!AM4TeN*uI3{U4OmVo}RZ;m%Z>F-{` zTNA}F5d7$N->}&%q2!ZCfdSjPt7C;|V?;s%M3X^lgOBXeiO90tqq|UB03yCiD3GMd z5oj}tWJ~~+rwrbb_M=tlHIhP;$qz9z`=(-%6|r03cKpI_J?dx~uWC9Z{e1EPW;}8} z-ob;~e0F_JGU0UU&%-T%fW`M!sk}G~cqJllu2`qii!tX$xM3;0pW2gpimGKPJraK2 ztY(MI#ZQBqa-X#FJ>wSTL#&32c^6w5h!1y$bg_18~X2)Mqa!ORs)gg z+&ak2TDw@4GTxRIox1#M#Gsr5UgjMu7fOO(Td0Y|xnD*&79O{=emNW#lD8ixlN&}!(^`vEX$2F6j*d@K zs^3fQcp^EZv}<;A6!on~zLuIp74!A}6N6Q7}@5gMLX?`K1xsv(!Q>#fqh zZ@{~vr{DFbKF<|yOmz}Ks_1!@Ar@Ipxq`ClST8DZkqzM$L1DS$oID`HCLM)CI}}Rc zg8|yi8skp#>H>W9r62a;Nw3d_^6Jcja$QL7ZXGUbC|3|6r%6bx!vfVt&&()w68OnJ zglY&@S#7E-l>-~QbyBp}3jB=d)al2(BkrFPoPZx}4SdVWS?9BcMh7Vp3%*0$dPhYT zdSjjv#H=d zmjGLsy9#bU)0dIP5CZK5A|&$eTfPW?*wrIOPd>~ALi$oApt5DuY^5fG$~^uXby?No z>&ERV>{l<#166(^evH$FaK0e&zJz~@w_`)3%A`rJP{T07v<`cb&&t+oF8=PceHHK# z*G1!p?DonD7-3n3W{+zbXg|S+Cnhc55toH^dPWIvCCrYQvw0O4rzCWLJg=cQC_mMBZ2#TEQp-sCh2^}B3ScshQTbH-B1kUl*4q~; zRW0D!Y3A*QJF8fz+-#SFW(PrKihFKr->AH$pYrTKL6!=0$n98AppC2`Li8L58Q?|Z zS${6-xZZKu-OQ72SER5Xyjv!BvRjRay*;Cy7#}S9@?N%VE= zUXVZDUt0Njp;3*&TdGApxHms2V*OZ2)!VFTjb?vKF2AlV7*2>ao|Nuy#(8R?K!W;s z7rWTt9cj;vxu4&qJhnCbA^z-)%)8U(=kD6^#z%Q`=(oOWTYQ%>Ie)NzSlm&h4R=tRM@YAe zTmE3t#p3HI@EVleuTL*^Px?ZUn7HSr0g(F}sC+`N@$Edf=Z87Gs-H?-xd(_49DC9j z$DA-KgJ{60Qq{y^OmqE>qd`K4>GzZ>mqt`i*o&%9J(U@fOEXNQd_dC%VT%xZ-Ga<0 zx$eL$B!xp0?pgtbDA+$s9|0JJ3bn%yqF_G{A;E1+FGEGMGO*kq=_Sd_-NeZ3LUa=I z_=Md+fx6V&r`<7Oyj{*bXe^}r0$uXj_OQ{Aa@iock@T79HbP#*kLYGA-6;qi=F}6? z#|4yhkpMdxR=yQPcC+ela$t4~xplAvJnFy~YjT?mY0Obca0PqJARX)-5odYC#D@t1HAud%xPY~AnWyu)gTx#eooW@O7ya@- zU~q|yLoWxjh;4yDWu3fGxN-8jxX}C21FAS1W-yz)IQ;L1Cs>-+3bQgWbk3S`pke-`WBzv}%` zU)xTZZuRlm0u^F;UD&oib zv8=x1+y%lD+up*oKtWBx`1b31s&UF<5K0Wi=RtcOawJYavm^YCGBu5I_raTZC-eST z`Qha6H6cEE!deYMX_GAn%KI0iW~3Nd3(HEs6AOVcP%$3sMEz~ywBBpMjXFN-F85>aj)}uyoP0Z%wtoe zV7b%-8TFMwm?h+Y(Q+s5PUXDQHxFV&oQ9Q7{{f8Lc5t&!C(_#JDg?(Lx#l`=FFE)a zDjN4ES;duQDEA6uz+r8`j)RlE-8ZDftjj4=sAt(Gf}Kv-F+p+yEEs05cv3m~_nL#@ zk_2Eab4AQ1EJ8VxulL%%ZhQiaD!;E>&|2{W^8#))CqDj1j$ruZ13*df|8u8`+$gt)fX2jK=by zA+#b=eq;DAi%}DJa5UIGcptLH7x7Ug9u&I&`bD$ZSa(T0F8K7Dh0>&k~!zRdnL+Na=9zGbhU|R ze>rJ?w{^S3z`^YMcYCcMZ}^doYmEb2 zeFknjJ35b8E9mqnH*@0j+tfB2*TD8%puPSyW8>eJV2tJXr^R27USw`pnwdxcnVzhl zR5@@cOk@UFAo~h(sJ`zSR)tA$hDrNc&B=`heAw|ut&gPC0sbfr@jk=u2*ucsIY7p= zP`vM-o%@f@ZAn9f7M8E=|9itcj3Zxnbd2$@?=eE(sgHI87R|We%FBWEq&)aYIl2mG{C+b(^>GIvXg_ zb(F9GmdkUZwup$WqvpbkW>W~O`rv!G%M))y8nv#DFzswBcx(wrXSmr6d|oO**8T}T zFsCxUt(5PTG+3t#p2vkyWE2fL;OC*L3Fq${o0DXqWz$AXGxu<>go zorQ2y88TvxDV~ozps=i@&i)_i|1eI5o&Au6w|~TGwaUrvdTe|ncX*HbUr}59BED`J z5T2KkLx3?C-0(rJxg5*cEQ^&vOUrtl(qdaS+D3@ST+7ZlaZuqtUPPPjlfgFpKotH! z#0xCpVQ3@tilj-C9iD8jjsHKAlkLDBv}v`YQmUK|q9N@y;ktG6;lG77o&C+k2u`&Hs4A56G-UI5y$ET4M?E=qlsJbWq@?zVdqwc6G z46FDTRN}&1fg1AT|0izh(nMB1iT_~X_|R43;5BrUOhrpcg1S%$O=jrR0Y4t~lq_Y* zk@v6ouCHo{yIdA`l%uF=_2ds4QS6L%@l?EqrfxRt3{IZd2FNVnH`I;Nv&=a1S?!aW zQi>@XC8bGoqbuuuk=hmn9=-VsS|RNGV-C_OV4(n09CbsaqD5d0IOWrf(;vD8S;uL! z6?AV1)J8{lQYdqvxy3P4MSHa~b5SH`38^rMekHB80Oycp+J$d*{M4?vFOxv?r%kWw z^a~nS9I+Odk1OE}mlT`_WhZ%+Zt7IhERovX4-^&=DWrt4r>MS&YI0or6at(DmPLe{fu5Yh>fQ_EU<@5x zr(X4CKIfnheEZb$i&AoBTQZL zb!95vxQqQRx%g7QuLCS-v90;VJ4BD}AjUq+07m7Kf3h1O{WgxZh+|!-oH|(DDx778 z;#uLVWxmB@D1)+cmFIC^?&Yj-m@aew*40z?DP45-fwD@LT5WfGbe-epEfMWEbdAw( zZN*0*np_cBh{vXO?&jK*1MI0+(0bC$@hYJ6+o!DZe2ktOTNMS7qtaxlpwb3y=hOu? z8M^k5uR6W1GgFuHDpp^MqsG8H}BJ*|(qa;pMfpRA~F&!gfD7bt-{n8=;4-nutw(CkBrjT%f|=Zc=J z1O1>(EvQsSQ(m|TB-TysbW1;B?=vDW<5jv}6Fsh8Iqgq@EQNH{KDW90vVUJoDIL#(Q+*D8ur?T~8#y8A8>Me!XP$lq`}_K(DKC2p zpX}iC>#N_A=u(aKn8Da+3V~S4DZe3Ip5K-%<{Dw-`@6A`r*xb{)^*BGe5f?SK1+eKiHMGK_?eF0AsfR5nJUcx|e|MhC`7&d1JZD~>Jd>A(hgMOZ ze*@Q3ziGX<+Q4htvsE)8`uR_N`m&5h=`VOg^vG9?gm`pPAUXVZbriBpSHy(d4)COT zTK(4@{Ugh&?{F-CnxC*8=_GeM0isXFyI(R!@3Ic0nAeI&Xz_fhD>UD}*rLVLt^wE? z6x*3#q$J(G_H2&a>^(ah-9g(xe9j}f?zU*nuiJeW#=9&`qbqW2UAG}v(vH)PvQP}qJu2r0!nQBAiDdQUk;hcpm0|W#Gl<15?s8=nGZFr1k zAx0dCJ`AhQ1(FqbxO}def}Lf)9ZfaZGc?;qxHMBaxL`BKq@(}Z7xszNY~vWsqH}a0 zk& zmm8WwL}=#K6Q0R$28|GO1x*^a>`c0sr4+cUH;-x4va_^LH%Uxk#$=jc|J!jJx^Ph^ zS;XT+k%b-V9-#Z=+DBbIuO49DyXf#Y^$KJ4M&nvXPy&;Ye)5Cedb+I!zH4sZJJn!F zReHeqcE!M;i|U|#>mlj#^BHFzjlKBda5hjXddlcx;h=gQD6O0Q>cMtG^i}(}cs&Y_ z{=&4534Z$#UK5!YlYIXC8L7q?OjL!;7?IC*@d28WWr?qt@s)ymY(R*hLuGlZ_i^@WG%27ad}*}cZBlO1(#Ev^r*`C4QD9#MB^_QtkRPv%9}5U0_5GoVVnDO7QaMCOHu?I-e2ZI8LQdiD!pb`_ z-!S2`cSV;Eo;mafUS<(5XOZn7<`TRUJ8yKfBL%*_T2w*xx^^%}z(01sT+5fHF9!Mf z@tM3;+`QK(aju}L=voybX6)pxc&P42$mJgek~(3%4QM2$UXlcwQ z+GeWDB!;db5IC9;dZ^&a=I>%B!7?e(Wgv0Ur>BH!2k}e2uNI5esji2PUaaiU^f+U6 zE_mGH+0}!V?5)lt$sF>RaoJ?~2Z{mvaotc@+g@R?B0%wV`JNY8gI)44&EZm(0Js*7Ah&*JK%e`pn5?MIywD4qYHnCl0@Eo$|I6*PTN$hcyHUZQ?+ zcQH@(>L^;!Y9O=mwb|_xG2#iovX99?rL$k({|p({LvErA$euoY@r9OoA0DQoi}ZeM zPq^+-RAr(Vr-sGB*BGd%$MH6`^7V_=NemxWcUMFA*Lcn4)ypSDq(1!new-0TAUSlC zQtA_2QU@Q{i&$>8rcGFn`BaJ2-(obtua(!KDZ1mWze~&~`vxZ-@=Zrvz)8XVf-fyq zlp`-JR!v$>rse!Sa_j86e@b{JOE$N{8L{7HvXxbj`%rlp+Qp?--Kw)IBghwg ztD1c(oi>W}<0$f>jOA77BgU=^bD;9I_WPcG1FtJc8uxihtd}B;Ye=AAo%~zT{Hg5c zZ-s=27(1RXSePwELn0YLRl*Rg7sgA|vSsY=WIDjaUPmKb8#x+sA5qIcON?vp<$Lw8 z3LOw^WC=D~d54?pk57otZ}XYZy^Df3;KCFpkId9|VI(Kpc<6Ucl)@4s<}XC*5n@#G z%Zf~^ZhmY>YvI`0m-&JMfEWeA-1mz%wj$zG@v#umj54MMR#`A~8^12Mo4Zf)%2pf~ z*@Sk%zzR%R;CT#tV@`2sm><(X_;D4NXwMzbit?RD)mW_2YwRlNP03)sBL=C#iEwjWF8n z&czGi(!;)`z=tGPlx&`6@7l1E{SdE>0^OI3YHDDUiXwCe6&<}G(!EoBQM${@lI>~_ z8(K?abQ=kS`3^KdRloC7VMxfbfC@deU_4Gg>R<4ci6$+;)s_Zx>QhJDdF8H~4hntk z4j3P~*J4iEre`2NTI@d#yk*>PLjUli4t2Y#AaJ`SoyhZ8P;klS@o=NU?X_&6bvvg^ zZb|alHlG=E3Ud_8swbA^SfHyMf;%JRy^u`YKZ&B4jnB?rrwXN6t^bks3dJPg*;H4=F{t6Y>|rlKFSOXEMk2uEi(%c67uUCnxUWsZtyK9*a& zPb)b&zAXEfy3dCp*0*##$clLre5(L!Y)qV@%lf@~&J*S#+8dlbNBD}m>D&=2WhkIE z)s>^2xG370o+}zgf`K80#F+2CnnxPsB{<-imx}9oo0I zJ)SbzYANrYP&SV$W^P)%+7qYon|0wt)9WVwz5W^%6?l~Ad*A(n>^U1l9=j|>&9LJK zr*88*YHVU`{BOF$6o$kEya~#A#uS!)`kFn4J19kVYqC$D=Rxs-Fo!&}-0OUOJIX!b z)Y;peE(JLzOq{^S%~Fh}Npo$PbEus_T^EhwduBUa?+_yz9eSrxx(?t4{i&#l)uVcPYnYV_ht*CRAoqwy1T~Ic~Gj9X*D(u_+l4iV(}l z4R#*D22hGmOKMp0$N`20j-%*%=Po$u#ojA@;ISv2Q?v9O{k;fh4>_7VCbE718O}?O7;DHM(3iB8;Fc4kM+F6rAscwvDtt z9M9i2Qb`SUZ`S@imVqiV8XQASjs+5z(y2YVA_51emOhLwMa82#3;2(r9_{bMzUuO< zEF`$<6S9|dkq2FF3ZOj+^%o9;(jkkvGha-pWkfgH+g_4*C{C&uCtoJAZ-28YS!lmD z0+l{)D55I0orlnG$?x4hH`L}{H4fngUTx%4cN6xG9pgvo8|Q!V2(8;hd%Wy?a=D{m z@9c-@bmrwuKAxLxdsl%!eOi@eqs37l+nP%lP$rI2e@!V58Kr?t#1;2^H0AKYgh4Sm za0H5yJ4Tji06)1L|8%)?rXpNRZrM4F1RPr9>Sls|ZIXvSof~h>KN73zW;f7-9dq*n zjuFvw7~@%yUF|YyH4&bIuXE~?e7W9B>Px(+1kqKGxvN-#K=1SWQ=EhMBgDGAgXh&w z{#Z{6SN4ztxv{O76-#{Pi>ez$G@)MXPNTvSNv2d8Nd~oH;fjpT&N&)N*UnI35bI$m zj)8HBErE8f?1P0PeBe7ee*nW@BOcAzvN;dL?$!{WlE`l7C;klVCMtmsS|^Q5meE+6 zOHbO=j}#YEg4nnXs`L$SJH! zmVvS6HxUh=-5Csz`;6*KuT6c7aMsP{%UJkTEU+KYBQQ=BoD>G{Mu=1L#3)mzdc!@8 zXpPMzTmw$Z>X~FGKSG_Y@C${UPeM}~rO2T4U$!Ni#Et%dp~X%Z+cLcV?^U*%6sYq9 z5Z-YU0B-j5U4)&zsS{7+zs!W?*YR~|@y2dK&()1ZF?kEWU(OU$$vTfN=obEXQSY3g z=u45^cF(=0^EFK<9scCI#ba48WseS@lgZJHrR?@xmh?fK)a(Ru#ZZ0Dd%7QQod~)f zV~y_OwXU-iJf53eu}gwwNj7Ckwu{TJVwq4+~3)b3VrOSejUAtI*SqCwhwr zl}caB8e=_P4)3hK{mXCY=QDQhWp?|geFwthUzx=UhIrNbCFDX1-v3}$8mSC6wPP-l zNEa8S)N%Ech_~TrwbpcB)6jH za%BtEM3Syx2alIa77JvFAaU0VbW1oencn71WB2$mH!Tx)`N^KLXNRNpXsuuHo*4M} zHVlgL{BBaC>l&1E0$q&V+u!q?fIl z=*T|2Z!n*Yjihw@68E+r8fGaCkrbOj1}wX%-H7`W|5VW)SpI)V!rrm59x64Uh8l1o z75!JlT2gZll{Pk0G1mGeoL0G4=Kts_RggSk&{$amMO6kQsdfMYQ_M1bCv7qzYf04# z<|qGUB$h~)?Iq!6pQ{lTo46&La`n+ALej9T_nA1Qahy_O92rVIwB=Mb^~B%cqmaUA zDf)&%wfi2F32Vl}@1(`vs_N-Un`<^T-s>?qL!6_c_KXG(>)aS<@ZU2_86bxbA1IhciMDyV&`&Ca$5jjk@e+^uPRl}>z1}iHW(I1OMR+&y*T(y5PYCc8zYy6Nes?+z5cgmiy7b@<6SUyoWN z7Ut53)&9y#LWYLN9{uF8$A1JI6!IIqcC>9}7e($6&-F!%AEO~FXp-!DEf-@2v*v)^ zX|hz4HvbcC_)j{Je(Xv-`PR1xyYQjQcWc_20_yZfSUkBBRTO!wC+aXziyiR$VRE1G zs)DKWTU%YFY&cllE|N-sQy*lA)n;cag=81$$eqAWJH+okWP zX^63KO2y%_av#g`u-X+Q9Xv~#&63{p1=x$1AWe^(2OmhSSQ#z8?^Q_)@fY2qZU?q( z`)E{N(Q9zyVFxB%~6A~jupZI9{r=j{!Lz0DyVe2W&K$0*U3#>oq9d3ha$|wW7Zq?L|Ll7AU1}=d%p>;HJXe<9 z3Odi+=ngGuzfIld;~r$E(3-`Jf@2q5<%0jty zrxO=7hhD_D| z+)6o%eFSzMrP6v17@ao?o`=?vRdjlw>8kmA3vy4-5x>%#NlwrbF0_s zTM=QR%viv~XVg~o-Z?knD+37+0gG}+LE-zVx8*vjkBzVdjts1owxBl_#$i#rW_N_j z5$Hv$&gG07D#?_ZCwJBP4}XtoS_%0VAvdIqufoY@*5{p`N2Y7by5YLpy~~WdwMI=F zl{F@0p*dcf9(|BN8_OZ?ili#+>O!X27U1evSd3}CvJ~XCf3m3i3rBnkd+kDeThp8n zJ>wy-XhEwXLo2TAYGGq#|MlOh{IV~C8_*sN#{h3l+n_mv*1=$oi*&1f-hZsl|1m|e z)wxo;=iErqzbxc9>*H4-7@}3;&CaBgRftZSC+_JiH|0kMj8<5ot0p#X|0ZGZ9MK{i~3j*cN-}(d*ChIMl-Dg|M?!j zE)=*ED%twl{{2tvdF|7zx|q9v`Nu_c8K2T?XSH1SLw%*$=7)S8rHvMAoh;7(T4gln z;`Z=T1ez^tPcjwUZ2xaFY*96^ zYvnzbl6`J<;$Dl0zVZ{qqW@1#gQdSrle2CAK8m<4`2X+Yxy^T3+l^OTN3;E+g5d=x zq1Uhf4=uhEe~3&77J9$Ui&`T;7cC6Vdj<$L1DH)YVWqAVCHhH?48uyuqZAf+Fj zc%`kOY3!JmhItHQa zOH*CHr*ff;-ID*q?V=q)R4!X^)nc}>Y!OwI{X^TYkK)r>TnRj|;943;yTaj@6!hekDjEDO>t>B8?a6h2$L;b3x=>3+o`yNNP2l z>8*3s?KXLFV!$i1+IhgOWy&c$$23TNXt-}K>fpKsOc{5??^Up8HKfvk*K~v&@!cIi z9aO1@4kN1unY@a6#Tr#8(EWrLbe@|wil7@j5ijHpTEcPxM_4@+bsMDR8yr_4L6zW( z4gAU)%|GByBnNa;s;SF$lvZO>YEZz7?jHq5K)NLAq^bjcA#hNOETFQx__!(dG~ANV z_R3J>i24s(Cqh#ZlrbG4;NT-T-u~OOOmYeYpFDQTllPU^m^a3Q)Jn*eq&>!4uqw{ zL2c`+m)>V0KZ!XfUl3`?D;UC=c6JK~OY(uZ*H0{RfBimOI0(sj7|iAU0i zS~GDmO8$}w8mnTa7cpt_piBIT`s9DD{wEJyH<4_BWG5S^6#VK)q^tDI8y~yCN4ORw z6Cd#EB>(3Zf!B(>o%bV8w5z+J1Hb=!Y&z5FYbmbv@V?&>*MadsSH1cl{{)nh4^?fb zUD{2mkrr@Xb1@pskMOX0+QlZQzA(`H9C@I+;z3GNYN{MXAR>oSu;OXHoEAMS-$f{2 zbn;2N{^71n&;{NQ$rJTn_kvPh)LY#Ox-yb>-TN)a=lLzy4VL(A;)ojZTMk*-6=-f9 zRwHJ?4pT{@@fMDjb7G>29T9Tf2-hL#^{!154WBo!E0(gSl8(N9@1WY)=t^2~ zAy;2~fvh;#p{k25_fhWeIoWuDbBw|{51vjs@r08&|KrEx9G!wAUWnla6`8`vM$z}eA{n{NOH@(Q^EWEe zTGM1@4mz47r%Y<3kWgU?D#%=mtnKZ@B7cR?g$SE005NTDpGd0c9Cfl;0`W<4jfbO) zpQMfa`cJ{oP3M{6n~3DQsN@UhOK00kccijMCrtFv@~@^vUc$zwkxAYHF7x9<_KoF? zZruTtgXR>n{_Y|ud(UDhqH~lN1lW=#lx*qqbvcgqDoP|I)uK6iB7L~jdfdB$kf7Qe zED{lGl&QSrlA@!poTp|;B3(j;w>NDbKeu4yadO+jQ>HDFBmj|6jfGY@2TmcBV|kQB z77IfNYx{yqOAwS5sW8}tyZY@#S0gW$`??&z_Ve4^NeF{|@~v^`@A0AN{!34*$n3+~ z;fw#JcuzdGd2D6>`C>qqZ@bH;Xw0`$*U&n7_7~F~%P?B&svI=+ND3ZM8Mf0%{%QvH z)|;OOvemdyrwum(F3-=!&uf)ZhS{y{7 z{=Y9qH;cW4%kDk$IlAfZZ`|Zhsvh~+MbK3Tg~{D!@BrlovF5U2-Y43?A(^G}Tr3Zw zJ(152SduLFl0XhjWw=@(-H!i67P0TcLiuLKh;ijRg&3a ztF%2!VTC=5^`y%$=dV4}jgWy59H{~j7+41im%ygBGD*U*Ld){n^0~K+Aunz7gJ1XL zk63hg7uBhf-uhAS663^NYrhXFHQbi_FY#a6BiY5@#zU9oKHsn_3~2l9x*&g>=Rs1z zb(PmK#}=c02H70*Cz-gF&~m#sp7}Y7O!H+wHeD}DgrO8(d%_)1Hg8GU*2tc)UPjxC8^?a6%>)y#aA`;~wa8-uq3nG6VP8?uE{a z+^ed(vE-*6x>UMMI1y0^C(53W6-H?`godo472fA7Rrp$#oT2j~_`j0lZ=MpepAAuV zfZYc2u{jz;Z;+qE9drrG0zO2D1SFr~Q_?!JANNru;P?4!qW?N4{2fCIX6pqC%*1y- z%v2jccezPn#U+LOk*KG*Q&mrh^V)d=URC@R!(t~dA<1_Ha9KKu^*D7H4sbyI6OX%^ zt!}d@BBk!28x9JB_F>54<9{C-veAwSd6UaNUa91_QC2-$pEiA(JRI1jp{^psr$#FE z3@7723XiV-1>XNXzAKV5zO2Maj9xe$hTsAh)I^*wk;i#z|Dq7}l@t=X91WF#mBUa zqzj5e0f({wkFdM{XY&95$A9d6c4l)r=X1U}$()8ta}pyoXOT)HB&kL!m1=WNPUa*@ zsyQdhNFmCc<|H*IIW5geMW^fZsZu_By}y6JcbEOT?Q&dpb{vn#?S8vLT?LRKe?&T) z(e; zu`}X}N2<(px)Wy@Nnd%mum9Ih_l=f5%*SxahEk=w_i>@-JpAL9WG_+jc6Npn6CRH@ z;P#P@*e)ji zs7d}ohP$$0HZ0h78g$#^IDHBr(f39-$5NL#mw5Y#UB;)v{Tj!d-Np$6v3^{y4F$f; z$!GS|_MZ&XR%gxW;~}ZhZ;P_uVr&F_eC z#tBmNURlH;0-T78 z?N{1MT0+D!A+~(5Ef2pB39*-aA0%_;bm)F2EM0(pNdfq29I7lKnu<*ERq%CCNS;>U ze7$_PJJ!!f!EdvnF??rPW5`b__nDp}$DPojsb}%1>@hA z<{1|Gjk$TLUi|~qbpi=@m?9e{@3a()-;uY)8kL`gC8HKqUYiynZFV)O z5LxoJwQ`)-62M|M{(#rIAw0ylNTdc^KJ>r1`0sJBU6NyCH@ogkSx|zptpi))c>4XBb@|*}sTvqNXRA7y@I0 zBrvZf`VcgL2V+PMEEw)ag&2^4FM(C5bNN4rkQ2;iY5_-E1s;uu$B_7sYzdnrV?N)@ zy8F36$RU-Y_`QR_8>ya7PCu&P~3R<79~Y}d9c2nFmq+O=vAaFOaCuK%ms7|02hj65}` z*$?ZeBAUC67x(&|ihsP6Nbip;Z<~~9TQpR-oTc7|(cgmY7|t`IR4)9w&L^Yz{J5R9 zwe&g~5}@nr zsk`|wDFWh-DgP8lE!R{^#@=wXZ`eG4d*Y5=)bEF$(l1ul-F#(asDGsCl>xR5A$C}d*8UX_CV^ChU^^-l%z*9Y_9^8-b%l3_jud@yZ!W^0 zHz3Fn39qu?bucQ^z!N_}dNHSY1Nxp*}nJ|eCyPF9MB2Al1cvAp; z=oUU)8M2FU{-x9XML?Tt zS=fFU(YL`WJZzui)pCy_p1WM_U`s93HoYB4N++Iv6*UzQ4d7TH9U27nWoj=8s67iM zu|W!|*TZjRlu@f)XBryTi9;SUa}OUvuFY_Q70(3np09Z+-y<>% zD>qv#PD5#9mEtBd_RY1}jEuURnqO&rSXV1Cg~tIjOx;)VcZU=H4>-L}MjRKxB>k-^ z9<5&=fK9kCo+Jmlum8@6&S2h)*B_vC5^U%p4E+A(k{bK7y}|PS`9(jO4~7rkA58;Y zX=M5<=MY*>UM(1tJZ;^JzwKq|z(iO{n&0foFmr0`0f|p_0ZU8+9*Dw!6U_Wi0x{|J8fV{!jM zyHG88o3*!JT#{z^d28?U+CnG%I|elV63fKs&bgJ#nP#xBZv%37B19jh0FV|HIyH>+ z*#CNu0HVhRfoZLhZu0HScYJo)-^htOnCbsd9Q71I*Vo}UrbUlXgsaAcOZGRWyBOCG zKR$yqX*;+{_f&Y$HVo%!-rBkLUzxAK?3Ia@A@ck7p<|uJZdYvL;zq4qj0gbb=2xr` z>>po!IvNqqgg$HQ(B*@5#o%xTn(=O0Dd%NVHdMlY(s}sx>kaGQ_tGgn{jSnpIrEIv<@%yZ0ZP{+p+vZ2JwBN9{_rNiP6V+bjXO1b{(Fp=LlD21 z)6WXlV92PJGBwPKHBy{@Ty#d~nrUOk3@Kiu1}yFiAFCxd*?Rkn|N4+idqKM5mEn@w z;=#3kJ*wasvkH6d)Evo%HIgRllEb!l`7w}N{p+@N?YX95DLzo;%GdWlnJ0=doDX$j*4PUI?;I(-_nqB9$$FNuJ^jPPzWq zfTYk1MQiCZxs7B;honu<&zSW=D|oxmMvW{VLy29*!9rMr2(L;-M`09PS%?os88wpdT-|xKT5QG=i1zccLDo3 z=D**s`^1gR|H2RVX~9}`7ke?Ty38U{6I|myJCggvYIreKo*vj$v00DPX9Dv6qm41F zXMwGzOIn4gDKSmA@85{WN1{bUFb-=YB;m2ufxe%tm!JVqLy%o#Zow{AvuXbC`f^Wp z^ScvAid)_oJlhl$;C4KVI!T8rcsZr_nf%5ajI#575@OVuYPRalh7fH@9CXaI7H$az z?aO@Xu$POVevfmPb9Y}D#u$d6-sxeL7KN!LL3mP%V#q)+@+CA1i7i_$a>7xI&Ag-? zGOs0-+7}(UrMFF7smk}rZ_`t^3-gI}LJJ@q*(yU`ohyK6WQM*GmV zLPRC!7UHZ)5aoJmhQM{LCecI1;UEX5B_Q=S1O<3oWlox5Zs}c5S)(8v5FQIK<(Lx= zD8u{KiKQofwwCu+6>CB7E{E?sCS&sO>)1|}?Twzm?g!sKwFeh!HkpF%5Ry%POx#Uu zaH7tH=F{~i{rr3X{WWO3a{((_0>}v@n0`0?-Pp*#fwCDHD4&zI*}XPd7v#PmnVav9 za{zSCW`ES7)DeHv`r)94*u@!EGQ3qvA<77RvW+jcy7qVxE|ADFeMF~YS@ zvjsYxqR9%ljn41*K!1h2g}zDO2u7-sd}st%u1T`=qH_m#n(<;orCS8mq4u75nUEz6;%_g*W<(_4 z>e>|<0(&mSppgUjUrJdjfQRV19GKakb!>SH3FZuh$x0R=O(mnZp^9LhY)@eKmDDfE z(j2B2IpSpF+q7i4t9&>A@1o0v$WMSQlA#LDEmh6wnE5eM9!N!a1 zQ|OLYJ0o%qtmv?vmiw|bF%XUKf-=77kbmGoBr|W^^et5<6v1X=DnxWTN+c7=NRTcS z!wkL)(Lt?A0AHM9EOG^QaXk*EY%s3*T-d>&;Mr)*y+qBe_NYLH;_=<5hZT%NXnw0i zG-tIoMW^5Pd2k<$(9|DHcidijHatm^#J9Z_jy@u3fBachZZ^4Mb1BX1r%oOnLX`aB zS|5r|aYRyS9Q1*KZpA7Z%)s3q@WC4>@_}T1@wY=29qE*EGDD902}VCxDa&WyG48Oh zzp^^wL-xCTK3G>azbL7?*UUNO)@#`bsd;5t_$5U%r`@q~r9rZd#Z*a;Kumy>)sB1J z$2L_SC;S?EjOTIkOhXBnct`nG)=c?R8q(c50mv36s;PD%9Z3mMg=@wvDIg<@5_se= z4XTm(Qz{7dK41yhvhm6~%sCg?7pP50SF%~oRFY>0vXk(fb+BwE?s_~!%U$vF&kPyphqK-77+yb-6{+S$95k2*c1#ilsYKmJd`ni1TC-8PULzA+ zf7=7YyhO$ZYwmYmuTW*W)VdEwv_xS)nQVWK_dai|@a+qFXUKE)AVJwStj(^kB0az` z$zD1FEAMC*+>jkz$&DYVvmT^C6qNLBBE;Qt#Wa{?P3*C~u<=|n^?d9b@pdM1|d+nx@FoVFsyO|G~lzUOMP-9ZAUm-ZT9K}QK#COXV381D(wv@l{e#Idw zM1@g|T>G~B=+B+x6DC(9OnD&bpmVl5m@sYFcOBOHhk`oS*!F-nxzkcJL=)45c0$6P z+qwD~*waOd=|vhlzpYFCi9gD1$zRbfN6d@gSx7DqASPG4lT}W0u=|h~%`@A~x(KW5r0G{wT(jc@B4=HDRtn z4W_xZcPxP9g#n3{B8VLg;!Mrv^wh9yQLY4yYC&he_y11T3Hgb}Y%2pso36;}ye4|CVhF+M-2zfzvaduD{k+R0DAi?wCEdEvdAi5Xk;;FmG$dCXkSS zAPo&-q&{Gnr!GLMd>T{Ipp!c@8t54{`0f-cK-ti9M`Nv2WxQ!?&Sj1zLvsiDg2l8ar*+z2<%n@*PKi$!*2n#-kw!?5O-M0Vmd90 zt#X--|32JOyAON`m zgkfk)p@58>B3#Eeu5_UrBqwt$EjKX*Bcr^DPUJJYfNUvT{5nxHAt_(Q+)1<+&4C~= zDh?I2;EIuJ>UM9wb596Tl9VE!s&efY*qMs-Oj2=|<0Un-z2c+Lwd;?{tF>uA(e36yTTq) z-jfe;yAb~?7xVy6rlg}2Eg zX4~~{6dj};#6q@4tPKWs4}ox6f&y+}6$GySI`t~lVl;M|jy_D%@YGHhk%GTg-k_SxpyHJO({>qO;~O)ukh zMu4&PrY^W;FDFGBJ}BZiN>w6qolG$zM;!4eca(mcP+1wi!*YfZ{_AR}cLaJ{!HonB zLX~Wi)n&x!HI0*pm7~lmSY2?P5By*({llpgIb-@gM=U+CvCk#ZNM?uv5r#|xubfc3 zEUb#Z=I%SSU^!-K@=vE5&vt$7gi=|X(DB)2V3j2OnG*1>kQTNfqD89MRO|`;eYy8Q zWU^9a7`(E3O5}n%OG;?8`CFlW@g^lS?DWYX9_ZM~7~L0sV9B+u-(DW4-=+7w6FLSG zkw3Y4kak*j)1!#u{iix#*xZ&sOIk>jvuRy5Ycp1s0xm~2#f5ZaNH>xk~YG4(!v%=Sp}WpP+Rm-Cfi z1zAV!5k-w%{kALPfDVu9?J0$TDfI@-QxY)b2$BOT;Q0prq(A)w?;}1*+mtP@J*YaV z|A?zHvNV`k<^JrEI8BWkCUstNvcdzc;JteV-yL>%2w%e}PTQbol!{VFjhL&G`JO7| z^)Y7^sgwB;>RjP?BCg5<+&_4u`rONXE-xJBdmLf5auDlAN7U@G*O2eK>84{Ojl+wV z${|h%vn*Q&lC`sk$mX=oVW3~1sHcA~ccJ&L*!Q6Qaskk|q3M2~BV>l!8TGMB|A*M4 z$Lp>`z{^VDrpl8JyAP0X?=8G^-Jr*QrI|* zRmy#+){I9642~?|PUg#>4<*|6CL6IP998~_y@rvg_yzrT`~+Mof(FJ0{RB4!9|o(e zgw{B*K*jOSfm_mZ43zwh~sIlU}GVkL(`Mf!X$SSid^`K0^SokTK#|Ilf zYMb#g?{i3@MK7l# zMKqpbYz9!kI?4aVl*dE(dOuh9* z(@X{5Sm8RYaf>} zVKciW)nhCj>4M2d{IsRa26Kng7Gx%Y%b3B!Zo$2WJ_5YWfKAbN?dk|c!=JatzVCTl z`ChjE6!K**#|)p_p6y)h zgP&Oql|f?L2-|W@*8OBkDJ_PP7d&h zxGh`Lvj~CAN<9AKhDk?rf;{+*5#uZqY8*F%gZ`9|yoUPyy(F(sC)_S2{1+_UGYx&U z)~!51f_p`V5c|l^`aj$BQD#|l>@5I^JB9RQC%BydmaD)WaGKW|F)lJ}1L-W~s?HBn z9jG@;KCq#LtA(0dqJ8woNq)O)ADLTcTzU9ZL|)D{g283^pgjge zuXGoKgL&TuJoS5Jj!259ZFS;)8#F1UWA;r}H(<2nO4rhi7L70MO7@^*Ux)y03^)ubJh4x?G z6)g?d0%tQ0+=vB8(b+qBD{m`Lohk!U2<9B2&xt8lQqu2%;Rlu0XD&K5Kvw!Ziavcl zMsGT=9o!{lC+1+2NLFUkAnXHeSWxvQ44ro<-kBvNM%m-&Jms?U<7zV%%uaVoM6K;H zSDO(-#R8Hj1P`( z#GZ}56eRXLKhqm;ed8aw`%?(Q2-$^@(MrH$o*|4$_Bfe;V2Y}TzBYC1`BEQC?oOB7 zoq{Qc_hIVckYnnn-N9?l4ti%<6HZvB5>^m1RDGJjknK3VE7Hu&>#jRPpwFN}8Nn)B zD;@L`;b(b>U{ke|!57{rVji;5&!~V+sKP(^{*UIEP!MbrA6#Wb}+gOR}` zmsx(<#;5#?4^pwr%8yngwspKJk)-vWx$GLb8Q zryP6p$z4Kk$oA@O44(XO0aFlto*{7W`$4FpDaPxbdEF8_`r2D$A(Js34B6nLC2FRT zL^#ERLtaz1r^>gVQn_SF>~-?>wcaM{!+vb#1t)uf^^bufWRU^;EABglKDLnIrSPG$ zSRr9k7k~lWdac09B*`aYv!g)epZ+$UHc`uktZfE$6Q>?xYsK&ovC*=wsoFNJcEYgm z4=2>DCaed7QGuj%r!OEujE|Q1guWbNHydmrvaxux#g&kzr;urX-?`@m7^k(nFf{#V zD){#rVdtpTtPGjs9mz=`9fK;s5Uv4@4Z0>G@qAPv)t$@bv( zN~ahql*~V3!6T8W;M)t(L}uKcX+|KO7(xacaT)qtu)*D}k7HFPd{VSE zv~4;9Fod0>&$y<~glKeuC0#lu7QjO#@4X;suhc%tx*T>*qc9re+6z{p=4#UjCSvd& zl0Z zx+zv|1>kuBlGg)uES@nF$w%2)JoFB zLDK52)t_r|pZRt;;l#N&7CLmz9sj%~Ix`Ed3EM@51^{6u0*LbEy?U$HmD5jb;X(`@ zwGtE~(-Prq38L4O_xdgB&3_p284QGtwY9d3i^kNm60N(ntiG!b0og80$iF>u*WaGm zLOP@_1F^uvgJ}@i37)hql*VRQ(Mok#;Euu4jv0uv5W0;4v0_4K|05}(5Q()*LPX=U zI9%84lp``547ZwmNSzF1+y;6?LZDh+w_(CvzQao*;S7P-$O=@VgX$fYPt@0CJ6Suk z9jv0^rvc;@e%_eMoN6uxK3T)et6J;*P$v0o>l9a`n~3GuUZ%(=#^ZPnF%KKdKtR*d<2(kTBnhb=O9(DyAP1 z4b-0ER!t>?)w}h}6;3CZ!x#+MGixACglc6;Nzz;U0Av$?U#VEC2atv^agW<^b1YP} zSh0Q)8c)T{ak1l6Y$xmCR6Dv|gyxIu{wzo@l-)1&t%V2F+&_iP6`k8Aqn{4^R(C;!0 z&IQQbJbM)?csB`ghzVtA#%$v|&;$}+wlgsRZMYYGj^8?(i)qE926+kt?UMWyc8>Y5 z8jp-nMs{+s5CQHT4=34)wcIM9E?wVm1{Rn&FBG$Hy&_aN~fq`&QryNcuJV>Yh0yM2w68YMcULBh!5c zjA}UVU{>~uZpuy17-;Z%#Sp*$9;pdJYI?I&_bgg9H^w`=t#Tg&;#340ECy-voX+y4 zR^mep7*l zdfW^T_l++pW*k-gIP_D1;~BYn)DLTqsxI;A*;{}HK0*QoXEBj}v~F@Ytj7{qc!1cm zv8B#v2J^gR{JqbJMs8v&9uq@Q^ZY$-<)!ujPeHyY%1%e0V?wuy1be=NHVJ()83-Fm zaN{~8%@S$>h3##WX9(dj{AZ7;cC+GMiM48-gdJr~zUC{uCrOuo5&mJ0YJZWmFpetx z9s0t>Mh16$5hy@d(!aRUOI*xjAUubO+*OBS^I#Io^c(<};L7jzj(^yL4pzX7uoH7_ zlx+e=T18l4^vD%(8+Xn;u5WmO{n(~pI)?gGUv!g}{&W)?dKQo5C`tK=a?E(JQUFc^ z2G=s-r2>rE79jE??zI>P5n-SGwLX4(IA#P_@rAI?eYsARIk^p3-{49A7ECRQryhLh z)%=KiE5c5*FfBaPIi`eZX*ZG42uLY-wmG`V0mF;dNa-ytFL z+B)GAerX91wnSp*dDtV-(lOfr?8leC`7h_s%g%g!`G@^-!C3kW3HMfJ`akNl=MCvu z5q403Y2lBZQ|5(x=NK-$>!nqOY9T#5CW0zkYmHx_G&M8;;B~bOS1AcMmr`ebW9!fhG zRVYS15n#G_sOw@>3p?>KfBte^f9ZM32x&xoMkIA--2E(NXUp+eob)HgrdihHs2X;V zk8oo_Ayi09I!KcVJt;;WXF{1GbPhmw29OvGJb}96d3Na+?fnl1?k!N+d0}ahEB%!; zRloJ!Y3%aU!l zKwk;Vv!_C~D_7Y`H*dw9T*u095bk=uzx@o;dI!~U163fsEhqfd88k$XH+dc&)|r1@*w> zqqg=dyUK^oN|ioT<_<9o{HTp*hS%<>cSV1GdVSnFTkAe^x(FLrXfb`4xij&{5D`<` z1iDx7-0U(T=u!Nq4wO-~$F-ISNd2BIDZ`g3PWvK}Gup$?Z#Y9jCG5^SrM^(ei`R2| za>{l^pyai_!N1J2`ye0ozj*A`>F7YB+h z+%hFw({*}!gNqe}TddyQ+ZE}Dove=>dvz~i;nwB#e7(3YU%UPUe!3p;Gz<}UH{~dB zmzly7&HTGHe!IMZXm{|V zbUZ1hx@51>nb$?-ACyJ%e#g#)J73pPt-n79r@^l>J8JbMOy}Ll>VJQ~f2Mu@jTEaW z)M_bH>nGd+sh`ZWHNN+swN{=Mk3DP3gtN2Q3OK$HQl?wziUe?f4iQ)h?4AytKM zoTK%Mk2yXY!n3X2s}IVLDTxaAX2&5DtxQrdAgp+m*T9#Dp78p_l}<7fYc7~enU zqA;*Cq5tgnLjMdmqv{!lowrNpxLs8xal~^m>X*JRy$u>#Ycnegv#Pt_2zpTL>0x?c z^r^>S+V}L0;G3b>tpk#+mW#FaW%uZo`&8UMWEl6Z6v1B&QCSfbn1@K0y3A~AwG8qr zZ+oJi=vt*7P0UXXqWt(0!R963_f|hsSV}MH#P8elQYcFL_Jkwn$>66@Chmo9j+XH# ze^~t0cn0KYQ>oge@YhPCbVBWeq)q8W_2PI@W7gpF^WEtp=Jy)~k3frFCG*)xMO*D0 zU|+n_X;uHjZ!0ObTyuUmJpQ^AP$tc}}e2XftpQsrhh zC7$&nC|j`Yjh0jehVImq8Dss_aJ=UQG`Kw1@}BdFTcDwT%}d;qxw|6kN`<@nQ*}b= zk;ZbPz1rbU+fd$6&(FkE-h6+NvKdyt^;^huq*cKS8jAAF+S%d-At$b;JZ-?S>?^Gd z7ftBt@2W5lr z<4+>1U;Db=nigf}*dLhY683rw=g)V`A)mD&h82Pe9+$uowzDL#u&OWr!UMjj7) zyMY`A>aUcZsOZmEa_s|frU0{7r-W)V7K}>l+M_9@yi19;+wP0haSVq1sGgY5pSjrw zJn>cnsp(Sa!0HQhFHObcDl_1KOF@6b5k-OzsE{S=O(jj^ig%lDIp@Vk`Fw-;_3U?5dpD3`-AlNg9^PxS z^O|TQyYb3S26U?r>!ZXcnf;DqOZh}VT>QGc-Q}yO15~IMJ{nGq0QqkRiC>cw$b(sq ztwvJryF?L9(_G!ngMt*E!zo_nkmCbvrO~K*5AIC8R^*s*B(d|`)KZ;nyw=Ao16o;4D# z;BZ4|;EToo?!=Wev>py#j4a+(o1U_x6UmWRDRoL zv{X@Z$bKa$ncjOQIPOVdaH_4-*Ucy5TSo$(S8bjclX7I0_PMZ3j+iIRPPnDi8=o?f zeZ&tLFRHz^$v89TrwB!h=t5op9v;uly|fP_z^6)Zg%#RZ&V7({N^6qglgi?~!Cdos zabIC}AP;2ZsOl7oF#pkW)AT^Pn$OFAJf#U|wRw}#B%^;{vq$oVHq!o{6_F-=mIO_f z7Qh|&plWh2m}3mL_+Gzh=Ltz#j5T=yByAni@0A^$Zyj<()ipWSGKGLGyQHmBdOWh= zr|HFa7m_rty-K+%UyT#)y3BoT{m@ecp6szqy~dGef|~xYGt=1cOaQa;5G33twGPNL zw+OTi+Y+S;%ebMCqducs-f{wLynopOVIn*Bs4+C`ie#0AuX&02(KlY|X z0f;!+l3(SWm35e>?Kx`@1n!zGJOOc}2DZH@L0be$LT_oxXCqkvg2^_lcgV2j%o=hq zL_lQNE)&4vqwiZ;L%;EF`^3~Tlz|Nkajq}ZMr8?kH!?wo)t-9J`jd7Cg_`8dOgrdy zOP-Q?d>}2t`c^P&vwAG%oVaV)v23U)bs*3Q-JW_f0u#+oaRwlh=e9Mf0F+pEW&j(; z1Q1-H$uZGd3??x-uqSMoPP?haBZ{!qH$u_CKw~EnkhrjsJ&9H;34_$SN!kAysTwP` zi;(uzIu1pYu#KPeN}Q6R3x&7ukf~vj0*8_63qBChUhM`L02Br1dmv)lE4H zn%0a0>y52RCJ(GrqDf8>lx;)`+UbeCYe(8&ao2D2lGo|=f2g*8vZ)b*0Dvj#hOa-IlkJhk?>yDa(T+%TVWgCYbara?o*GZy z2*#(zUAwYlV(UmEroCflSzF#?;^i}KspV2o6B788>Xx~?-B~O)oXCd90sSR_TpCD2 z%u%IrB&$^f($2;xm&NywI4|Tlx0J&fFd9E8xXx`nG=Zt}NS+ADiXAeF95N)1AQzAt zV58UAcp@;X3MjBZr0K*!vXsMmO6OI0e_K}+Rp%sLb!4gkF?CSG{YHj2N{`)lhs!YGkY8tZkg zwX?#ngb|CytoH0G_DR1+evpCiSC?7s$^aT#;-xs1=YVf@D|>1@^H9d+R9}kEmDbW$kY^)rPRhh&#u=O=rn?BiS}f4>C=Y5S5;2hm7khqMf9j$p(Yl^#oaD&S zos-TrRA%nlT#DaG$}-`Bi)6uSYme`mPhbXIufKTuQHOCRmhF$>;MqchIOqXVua}C} zf8$+R1><;QPnnZ7PqviVh4F&%Nd`5XQ{P>t)*o&li`bthkT4S6xs7z~F zcy7O4zr+2(a(ZT!UqxOs@~s?VKP^e0589B3>#D$uVYU>P?eaVz>-z4@*J)Bjke1q> z42JcRqg_Ts-3~}bu_yr)0WL0}KVKh`$8+wykZ`_%O??5MqJSO7LNx7}tVH*WgF3}; z?i)-~(|Ni>Zg}5zKSSgR zvj!%Of#+eqY9nbbS^JfFFV$8!%4F+eZ9{X5YSves#P|d~5r`iOf`)>U-tU%K8O@3d z5>&qWWW<1eoG}+B@y>UGfK<&uy)S;Rc64;gSNUk0S-vjK+lEzMZcf$Tlfn>7wl&;t zzYKg){_3+6FzNU5lg?h3$}}nJoFb0{0ut1CNc~M6Io*vfvAPk+PEZ_}B;uSZ0V%RL z3L=nFoCIv;V1<*}YU~Zc$ZpFj|B?bWVE{xWLiZEdgeqiA!JSp*R|?_5Z<8|r3e)l{ zG7F$CXLHknj=9Lqqq2Eb^NM0|+Wr&s^31JaB|37kse?Iqtx$kNWw68r8U zVYNtLb;fHD<25k?q$t5?tq%^e=3k$mK;U1*WwE7sAmcR2(Y9zN*vcu4riAoX{y5kc zib#GfeO5LUIy+wT5CQB#?8ifOnVi`k05$!_Is6F-KL;YSH9onjjf6_HR#hTf0>!FZ zCrHY}cb!kKs^Izyq1r^i_bEtg0Hi(u^4D9!3U+66Lt%0A7M=$`HFqPY*^2xG2Jq%O z=fOr8%KY!N^fG4oUy;nY($1~Ms)mgS`OB$MV%RonLezX9vVe^i0xLiFO9A^4uY44!8GthwM6ebS(1-v_3MKvTJV6U~Uwt#}wi}4L z{!a3-0*?TS+yobT%Hg<{+U}(+V0q9jJk;)e_)uE4R_Nd9tuatUG!vGu2Wt8@_p+T$ zAOh&g$)X#F-Kvn2A78ng^i{6}X#|Am&x0g<>ZY1YhL5uU5i)~YVH%8gn#6?4H;0rX zKyqR>S`c=168YR1fK4BGowXa&3dqqCXh67SdD_-HX|sjHbc?%GS(nFT&kcg#0m9|r z)|ea#i)?t0R2?asZf8fD#@ZlyP3j6d&D=H8+<%@NaL` z4DPNMK~)=7{A7IV$?23+bIH3}6V<3gCIxIPY3UK}=$oT#Qq?lJC=}Xy*yZ7FB#9%5 zZYu>u>DhrVU@eV?bdC~J%HzOB^HEgYsTO;{>YKiz`{L2IzFL|_BO17vDIW_p}}^S+-- zLc2D}(>+1{;a@*@W-$^?lo@k=E{M8xbagi9X*tq7vD3?iWjK{4o838*HOmc137by#h)YyMf?j_L zR^WonegZ2OzLBa{-Sj@(aDOK0<5Ob1?T06<$o8)Cb!Lf0lDxe>D*;6Qu1S7IT#4rN zhZR3fTQ>$k)QG`2U!DF~59wJ=?~=zc`^x|LMeDeL^;u|bmo@E^pFJ$kZusrKsfc`~ zxH}D^%^QjT3t%OHvtB=GqXeJvq7lFLJ^6wA?0jqf%S+&U@*PHhFh$@_Czf>x*l`*3y-FhR9v0#$T`8H87B9*? zOamLS5+wJLH=h(~LHuoJF6YFuj`?QxO-kW8n!>~rimyH<+x9i`ZQ-dm{@Z%N{Nx3n zdxN}~ZvP+ixb(vkC3QN6&Y| zo-MT?H=AE@jL!~0_#OGD)^R89&u4BB;&4QZPb-ANPEezR6iA>)$6jK|FX=yjJcs?= zdFmyIbn5mikTEiOqPh?|dhzHj#C`y&6Hvjl{~AiqRyB2wA_AoxFbs)95~(6~9~h#( zl@;*?1WlFQ)WPkJn0atg;d$*|{hXJ>MWVnvkSk+lLmZb+o1h+#6pO)=7 z_chH^<&>LHNyjp@0H7zwOD>Lir%A4=~c<>MK%Q>HO&g=bpLUYCBjcIf$ z-X$My;)4h);+O|1`iLZ5j-cyCLSEl9t%_pZPyW?yZmLPjK`THq5aZ-DX66wW8mdj# zuO*FiLq?O$xMLZa68;XA3pYN~?2|Mz1yqsUax*m$vnTg&#D>~mUJa3|DSxJGbZ$Ol zyZ(nYU#X;z8F8jzvaFRW_e9c6``9(cmaX8*tFv>^v-Lyi~W!I;^Ru8pUYy-6< zPyIb8WG-2|frawSw=Q)yFU(#90>#OS100H8{MIV-a85T`7n1mjaU?V#^BxGaDRZ^? z+6Gyx+A-6A%7knMUUFHDxHApBWYe$mH2oq|ZURlP7z~k(2F~x3xf)HS%q%I~;UEnF z+cvKG&ev#XD_?JxnkK1bf{4Cqz9V`7<`TCf;mxSWGD-o?Jaf@NUMuV%DwZ}lsaa!? zg{@E;`7W0>w8Qb#Fi)+{XJ>{AYLXatFv@jI4Kp4^?QU|mNM*|^ zRIFPcK)P7P=jrM{cYkVd4c}O!KDMzsoW%I$w82Bb{wnl@Q5)t0!NW?=EkzSo(!;V|L2fCWQA`jp_+`V|Gf3Z#7g*r|y{AtFzAltrr$r`j7W; z>3oFfA0!SgO(OjQ^5JTlV48$hpypilI|tu{xzo3UZZidJD1YjkukvXR&;Ee3k(<}C zfn(wPv%(V7+^SWFnh3hmg1z3=xJwZ;U3f6>hkm`BSplks%R4T{sB2-#S^P#{raJ1=#c>(DA#LWQgc{5N8MUW$91Q7e0 z1=_7Owwhf|#(V?2~e?3Dt&)IDBIJpLA31;|F9dzbpn{JZt$8LPkQSwvN9o zE939vSKfrUP|Lq};JUT`{2WaId95@v8Ig)K$ql-dP~89!K$74Q+EIpzTruaM(xF)Z zS1f#FSVa>NGaRX-VC&C)qQxqA_FcMu^_t9S5mQSgLQs6**v|u;nSJhdMebBo<3jVdE({O+av$k=EG ze?0NB*fT2Nnl#7pFy4q$Vh4Z{Spb4s&pr%tu|Kz!p&fa_Ud%$1u<0LD!&YJx7xE_& zmeC7EQ|lS04B3T=E50E`vS(Zz!W1`6DAvuV&yU(~A3L(nYVN7mtc;h6Df+@*h5rV@9%H}ijI zmM0vJ;|0yR!K(8aru3sVL=*rK%44NTAy}Nc9ah}W*V#%p9fa@#bdb?>P9llJ0iGu5 zK$bcy#K%rgx0Z~>PP01w&p1bM~P-(+*8>^gh2s%tNI+aI-!PqROa`1hvtP`N(`5IU! zn>)s9*cYb5osbwA(;R2j`GRDy`-3-FCFi1IKkKSMd&_PZf8%er3Fh(2n7T1caSUokiWA~jQs2!2+NPGpOq1+x(GDJq~s9e_iL41^gAw0E5Z52CZ* z?{ilnryID!T?;8aMah35tOo^~g4TE`GUh$}duB6jn3|BFe%{GfS>W+2M ztVM_Me#-KY@s+R8!b>j>Zu>3mjUILQtAm<&6~%ipG+D1#j~VxIS?W`eTghue-L+6N z5(BdlopUk|O)}`ow!y%fliXS|_xmjL2)TX}dx?PlEe(S{e|~fE{yEZl1;i^Jg}tKK zZmSiArkZfou$Lh>N7rv(eA_9b3_+dakfQn|7y$;=*B6fsj%qPtavi(|1v1!|psd-9 zW7_pXZ5C-&}MteSte0F@w7o0joye`oYl8a6|XA>w1RT{;~aypcDHMA!97I-!YY=B*e zZ@-h@0(MgSY|E4+O>{Gb^fD9(4E%m7-tN?om^8vh1>$5{1831#($&e!0%7eL6ZVxx z4^feJqobHD2u|rAc?mXI}=Xu=GYmYVLPE49I zLF}3RHHeZG#D~ezWX=g5lJFf6U`vtFtNZTMA8cQg#n{C0T$}dvp`VgFC%yM_l*Kvo z7|GISEd$3)zy0UJctGJhs8ymdR9e6mje`HaEQ?&cCh}?g^elV#@y;H;Iu|?pneCLN~;V2Z2yy42TiV*G^XMUhltFfk%($q%*l;( z-=Eo1MpORAcA~~q(YCo)-i_v>|J9n4OtD=Q^RNE@;W#yCYYR5gSmxua=T_c(KRFgR zN}NrbTLkM>FgP8su-IA!?bYwzSRs76Vlvo;z)<2Pq1fx6#Qp$404wxTBmoE^i?T9q z>KN^N{GLBI<3#%FG<(rpqr5bbkW8z!#hFG2f&|3ptG|eOpbstQs2ef68KB;4!7W%z zKmgx#-r@*@>>!lw%z$!nfYBKb<^5FN768$K7h&U~(W^irMbb@LWj4*$uIiZV98GjX zO}@xPBHbA4W|C)Zpf9USfS4^)MXg6ah7F$MChA4I09Q^DUV!32bY@q3w*0`Gw>5=tf2wqTu*3^r*pm)@0An3Qpm zkVnWiiLmFj*aYTAMP4M=8L0DlT=0gs&l=*19t~3A%>nKQ6J~ur;>^Vn^!VyQbN+SZ ztT~{@UF7Td=Qr{_Ds>+?F-8$X#EwCQXB6z=fH(mxgf$mNuuk%_1YS4T&yYEUn$2Ga zItn!_u%BhTnA~1W-i=LQmaIIru3j;5MZ&o#Sn|AFqf3XWaZsARIi!#PQ9}S~6@$R4 z&-vZ~_CLj;!bCNWAX*4h?R|y+6!D%b*Gk-<|>^?7U}>A zVg>}@vG`y&Gmu`el?`sf{{a!%$|$_iChJvjz_R#f^dLWH zsOAlI?8qhjp!8}g&TI!LEjoisSE9iR%>pB;+yPJv6I&;6m0EUYTkUXAF+~yo03?|L z5_C#cf|5~N0OEhBDe1}#C=1VNa*&#_eqG@pRajo(Y(SkfouODbq*H;=l`1N#!zN9> zKq+RSzNQ^(G1aw$7|0DNRDkdLF%{5*Qa}#KIH2~H4YcOlj9st8@rm*ef-NQ@4da5m`auwb?G~LwiXIkQk^Mf+egH!pz@!WaV=7cqDEjs? z9~Xr_lGF6^8V?((c^)6f)zZ{D1}}Y6CK$J}CfiQtqz1?<+%o(CjE6B)BC`AjfQV3- z7^CxmqQV^Npt`RCbKUVLK3Ja?=XFk}=EfH-5WP$!9}FR#6kJ|QVFt0`&}1ew@jsCQ6QQ?{dj58(c!;=5C)WlM7ql7x^&d8W_czX}+>) zz_j!ejUj{8tRqnE*!Fty8;kW~l_-@R`F*eq0w7=+8|xrRFEzn9vM>{;FdCMbtY&=m zHeO=zdnHBHD^343#5v2t{pIMQocT{K+V}c)H^CY0-BHDqL7CSB;t$xUCrD%$gx^h7 zen4qQE~t)!wTRQ2Es{j?km~;w(;;DgXK$rSff>*Al$|xg8P~mxxpnXcFa6-}01k-Q z>;gGX250te*fg2nJ|GJn1S!8Be5Yip&+*#D%qkK)V;on^WU`@=#!q?j{^?6x<(gY^ zuT!H$iBh{{g$jo9RAl==wfQ(WDX%E<>zXPp&FDcCGeuUy272w}lRvzy8n-E6Yf!D4 zqE2Nf62Syt_PW55{-eyACp#W&K%eg+P7^+?%iO98P;LOfQye13Eq1WJ*v5HA#$6&f zep#rmwwT zi1SXp^@(pSL!6Iv!5mA7_0{(Dnlzs#IQWy}&k%tRwTfZyd0=^^M`qHyQv zr_3pYONR*1TX#qnEJ~FfY#-7T`7X1SDutzhzZ?xn{Yk|gf-23!1wH3vj44VYPD*iL z95hYEJ}q9-oFFMmNvK8*aLHT4ZLJ{cc?(1YL=^$3PHCw53K#BlJ{B94ZXjSG?`?8G zvA1MxpA%zO-tGUO=v80UO)=#Pv${(7Y{T5s-Df_H;q#UsKPplo;R6WhpO7f2531we`R4xEkV;) zX;j-G-KA`8EPG_nD`ykxyxJmuyw?%yz*xHJbccdv50Gi=;C%;yy*<@c@I&t)?LJ7a zSfSDeLusEvOexT%^+cwq?B=kg#z@nfLp7_}+E%92?-n=a!TP@lE_=!+nhD}l1I*=j zF;8?(-j^k)=uOH)N(xHi!^(*~E(|^rLmeXV^NYRhsC}qy?#-bu|M`);ZH@c#y=7M4 z@zRwMK>LkvfLnt(hiTiVBRwsz2Hh-Elk;uWyO5ft)9G$mWh*blLx*$;i6bgQY6w;t zA4vs4QvN~U<^vx4aBLdB2dJN{0zVn!6`rrWlcp=PL7y!2(+ny+JMg3M2@dZQW=9@V z_K*7XLqT2{ja=A01Y%Zj|F`cg?f7_Ftxlr@$Z*;)VcXV#tEx6a}vzs=IgfyiBzZ zDVkmkrHVn(hev}7vcEdCwa*L+kL7!{NH zc)w$)G>`m%f`?qs45i&R|MR=LcTl{WAqk}Y4<@Cf3)pXNc5yZ59}pk^R#zEPx6@|v z=*HvB&pkDp3i|iF{djejDIsD2U_bYu!V1M0t&3vV*Mk7+hq5sPH_1>}G0oY;yZu-w zQ9hb;5;;u$4$jE>GwQkz_ultDG0c!RcJT#E2OVS6sG@K^|Kx|aZw+wZDOle@`4k2` zAC)xwIiv_(9`#2(I?4R$!yw@Ik>ne|@3Z)m>`Z{P3QCnpsw`tLQ$Z-gfbI2`p+0{AcL6GL2zAdn6OBEaN-)>3EZ(5|~us ztWCGS#y;`kcLPTku7J*wkh9;nikcj+c_GDnBVGap66jcoURz;hk8T<=OOR(xk=c0x zd8niMsu#2hZ4qY`G(QCWS=tsSMy=en3N1}Z)uh`}m}P3XvvN;7HE%8zn~P&VA2k_Y zgQqXw(YsW0EdC|y#uHuYmG0j82IOqtX*r5df1I51FGV*3^OBv0rr`K9I;nP_o-8wq zxS|5-GV|7?#$HqLUitIuEUf6NZ5oF=qA~lj+9k=&rWG9^%G$m;u1@=xwQB?DHjIt+ z2}ds1?LO;#qFBBAAaN*2N3&s*r(7MfyedkyT5Jy-Yfa8=I(bDmW}Wrs%1@oPM@a?) zk&yECkXLsh4XWZoC6`~{PbgXZ@-cya!;&3_XIFmg>^AzBQdzV0e z3atv~)O{T=oO!BEq0KC<|SOsg4~kvh&~d!Z)|}z&8H6ECK^6DX$4pf;8ql6`2+oO*71pCN zN%2*dgyv_?Ftxku%g`rpP{n+8YJunl;c^R8LaC(~zZpu0UlENn@1UmDs_aX!X4IsN zq5c73Ft~sLE5?laVq^ zN?i6-*i#H@dH{7VkUj+^%J8V5ChN0}KBcT{s_=3^>hxv{$7i)TMS}_x?Q3+qwLlrq zrp~{d{#|rSV;b30GNO4J=wyjnpbb_~Vkk3}f$RCYyh-Vz5x4H2p=OnHb0v+O$k zq+?%xk(-Cxqe(ZXtY*yl6m{yKd zGF=Ng?qPrWUHkqn6FL_SxT3obe3)HQey_@4)F_2JW=H>NuhI62L%CaO_sswGbn6_x zOf7ghSp%wFrQ{AB_fC;Y;^mE(teO9Jv%IG%W~cn5m1cYQw0XpK2}qYe#~uN-KTYAd z;=l>j`m@bv@sFKQ(1(6$?SU}MG%<>NoRWbo6Yl^*-iNa8pWmEO{9fhx4ag`w8VQgo z`RMM=D_)r7QMI#YPX(awM()9>jaCT2A~voKwcZKR=2vB$!wW zMmOzo+CEs%v^In)vu2^}FCNrfR;KaNm@=VtOn#xTI;G6{c<>vA+#d$%tmr%0>IX1f z4H+By*{M!P4XRn5N<|m%L5$lA3gV{_wZ&Xe^*=Yx)Wl3m3E;I!H8*Kg0D}8ZgyL$B z7iiGPx7}<76LLH1qP2~yM zGE?tZ%cnj7Tb-goK2rvAEFLff7rt?NMi-;cwWXDfP70*Z_{%TP;)NdV(JCE4ijSSl zh*s1)T=6Ct9<1|fwTKo(NB{^FC>NwXJZ zPp0og$gA31%im+%HMk&`szeSEOOdR<9FzyLyLl$fy&~fjI3vFP2C_natkJ8G$FD__ zGP_wiHm`=Oe?y_<)gE!kS^3|9&%OH`z;mNyJlM4m!)vs2x7c#LuGvnMCA=5S6G43^ zR8|NngkpKTnd^eNlW=`m!x#H3Id9kh($%yDmh$6nIR|K!RDy99V84$KlG+Nvziuw5 z*nx2Izu5;l;H~WG11{ICwqD9YS_9tr7UU^kXzLNODAu}NA z?%lT+)=(LVBN@S8x!-r;4d7uM%4MAe-47g}I!i!(&&Ufa^P1`k{kryWssXol63=Wx z4JV~7pIY8_8`s(d@ilB?y@Ahc#vX*U0KyBRnd*Xh%(kIxlzTF~z@LQ%;$x2luI8-{TyP?kG#7z${ zrh!Nwdh?n0LP~p`-}N_MaY3rV7bdK|oOxV*2L)!yS>8WGvI2=iR%~oROe_ZRfnh1- zYzB9Tz)OcY8R>L)yuiv28W~Kb_+2peqs)+cv|HyCy=d24)s2Fg65cC&HL1u%?3lbt z4TCGSu(x0;O;VPF+p7gk;a1T`#i|O(;}nr6o94V|!gGDZbUFBo3?4p`VFt~N*y_TQ zCU1Hqu^Ih&;#VFjcNB&@wSL+r;!e*iM z$QNxuiuQN@%Gmy_-nFnp`8V)OsSJURg8N4B`d4DyD|qeBY}cs^)NgeMYRh6(KH6aZ z44`;f^}_4IMN9E_xfbpj8pyMB$a3)VwA+vh-h(#i#wdh{wAFGdk_Or>GXOofqfInb}^QZ=U0A#_6)5@y@V)!#aioeX%ntc6D)gX&m0r1bi6#T|2;;5~b zyOs(Ir^EB8z~Aj>D*R-#y-~L{>`)&8jRz&UJ^-plED4>A8=)&`( zdUfZ_2e)U#cKy?@&ID3@*Zp{-MV<$?j&cO4rQXBO3XD7P8b{3J4U3hMg~A79|3-+a zaO2i*eEIxgnMOW9$)Prad05ncefKz10r)Khyo!WsoPk#X{Ou9nh#xr%3RX0qc75hp zSk3>o#W&#xOsrfIcy|fq%!j-6IeKQB<$$6Jk@@(D9c~+#rf{*0Iwdb00>%=wtK(N$ zL$Ga9L;v>Q^+Lu?#2}n?ajMMvghbwmj0f*o{SRl&I8JQ&dzc=i^|?w z@L=WMTj{+hN`y9O*U#Cm_&Wa?@~}w=;FpTG7{YAi-J^hnIYxyCaUsxE$VY{%Wn{hm z4}LQid@e+>K&S7mF+dP~F^djk7bAGYvg>MK1uSShAYuAt++*6In?F87P2vk%vgec1 zxlI@`-wsmP{>`^|)#*tCB5_%%W23f)UE#kQd{7o6Q-%}Ez=_#`P~7hfJ8+l{)^W-j zntMpl7l%1BpdMWZ=^63z)lk!AEH_2*cW20sIr5a@p+`MM@B*y(iP)XeXdn-u6rT}O za9;F?Y>J)wYlh4 zfXB&^D+tD)unOlr%XQcJd-%MfM`YLr99LGb=oV=ls)Q@XYIq9}Qvofl5;=6|Ld#ib zc>vJHdc++Dv_juQNxTe8KDQWtk-9JOxPuGU)C{r&wL~TYEfc+lQTcWeU#BWuJe+*T zL?~LMEJ||edPsNh?-oAJA7`I?WT!NgEFNi|-9~+d>!bOb?c#^eZhL&%9zPp4Tq21c zv=~`HH=b48xU*Btje~DjKi^FB`=|qcqPrB<8$!SZ@Qe=oi}eMx64x=|xDK@d^pcZM z;vJ#z5=f+}*gE-X1YVp(5x!;L;8o|+{a%!R-5?AW=J16ppku;>pXKpE7Oi2P37BZ1 z|HB3u^Ha7pwT!j2peN(Pf-((@Xb!_Qyx>*54tU4)|jZDZ=pQrHeCSt7$OQQ<)__K(X0=5zE>%jqo|_kQ2u8i^}npEwZ;ooN1Wrmz~!#d*<^4_cSy zHQ-Vlr+qNCNlZ6u%2DoUklhIcL~y)f{-;vzT#WV?T_=l~?A^;dE35kfZAd#!b+DhB zevN(dwZ4R>3>;8dpYrI(Gl@%vt~dXb4KAcOIMjqV=sy48pvvVkYc@wP!eHoLeB^T+b@B zX7$-lR=jWPvn^d;`)QsXbONVC!jCz{eOj8pdQV1k%^!+$%Wd^t&bbht+^#)f&H7k$ zJ!yztNB2V3YryIVN>UykzTSY7s9u*b8&q?H&ppq^Ct6WAoFuqAo;y4Jr{lpY(t|6kLnxur%PKqEPs*zX)rjwJaWVm^&v;UB zn>w@4PMR|_*4ND^cZCDilEr_<^iX7$!`XKra*wRg`xF_f3a*LUuHlmIa<;m*89Qu# zrJB-x^t$2vwXSgAk8WV|BA%z=(y9r?+gW#6RZKS?dcwuio>l|3J+k1UNBP?5b-YD* zlA~FKRBBCsB-LZXwCmH;Ghwn6f20}?Q;Jh=!-+<(%~@E53Z-Xw@#?@;<*X`nrABnY z5aM|IdC7H?m^eS~f-5hEUo#ik1LKH&()te83HuAt3zXQqb>Cti6%@T*CA{Z8lRz1A z5qqJ|0acGm6DnI{cvfE3!-X!Ep4|&*l@HYk0P%NGL}NE}|64^y<1nZR^@C3 zX7|l@QaEMC5~t4G9L3GcR_7?xpmXh84?26d+g=VgxF+XFe{`I(4rkliQ|aM3<*$zl zGw~dJYiH85Q6twi0~(@#Ck3mUb!0Ie14NemMO$Ckv=0cE4hV;@3ADwV?pxd2)#aYs z4C#yY-W$B#@P&jPJU)u_<947O#+)Jqqc^`F_*D_>t! zdt^TsTgtg@ehRvV9^SZ(Zq%lw>h1)J^o`>WC<8XKxY+mj%|P_?+8h7Mw4gx3pKG}# z0vhxNgr~&s-E;BOS;v->JO52YM-QA-lVvV@+E*);o?{XX3HA>ZPh5>Dnb8x+-uaF^G6{ z0#z0uExqR6b5p3$$od;Y$8N~`fI_VfuyY{RAQkFo zhr5Zz6OI#ISw&llofZ?88Ei1|xqi_k=hDOjZuF+zjM-^@TID&j3RD0Z2qKP(x&KBp zMeOm+&pk_xsngT%_sxBT{6C7_eI*d!^WX`7Z?iNIV#Wzo?%8CoR_dQEu8~0K{sGJ% z)+2UmS!qMS#g+%~_i5Pli+wKZ6?5tSxZI9lNAHqu)|i{u2~*jTA4dWKbPm&sQL9dF zMP5S)iD5B$`42147$;G2l7o*b-)Pq~qPri=P!I6=3)4|cbpE}hSbQJ%6Z>I`#n0SjYCc9?4wI!JHGs9EaV$M+K=&4Q+Ehh!fd>V6whocb@qZbX**G;vpuiI^eU zk=DTQ+)d{&oa<@|Xz5)he{P$Hqf^A@?4~Z7_@51H%Qb%cB`Wahwu#T9 zCB+BIbC0Hc{#+-{OTDv1Cy@eATUhP$<9mNIKHornbmho9c6{xSTNyU09g#O9wI=k6 z&a(w@w~z{Y!@2vY>j0WN8n&v;V2;hK-aVWI{nY*Q=)F2#?vIjL#oZe6MQo%>#?4t5 zyYwGg$Ho+EPNF6f*>kxq^G&J&SCI#oU~+j$Z)bsZ^v#n`gv{q( zf=+EAYUdj!MAd9il?<1_$x7QMJ0x{8*Td%IHSI95qrL6YDNqr9nwj)%L(v1`VzF+3 zCETndrCsID(SG*CQR6sr785=zQ$=p}K!$%SdJeh-jX@e(IXQLuNWlZOx*Qa?R+QN#NdYHf|eKRHqxb>RE0c#fyuwmg~FOP5sj*1iZV z>Wjf>yEc&nzrB8W_qMu+iuUBnIeX{;nj@IoLmQj4-U+0FqkO$nqF=2Bu zn?+I&1^>pfPT0FHhAVL=%+)(BH%b|AmkTL>C7k~y=A`V_exgTZElewYdPLrhU4Hc4 ztn=MO-=p(agl07FM+mq@>X?U?x+eZ&_?$9EY8~07I?M@Ni69k~pWYOp0w%&c6B%mi$Cqcer6 zz5z>8Jt^p?h94`g%PH$V#5}Rp9MQfmZ)7l1VxuIg6L_otZ}3Y+s>9;zgtE4 zKgB7;U#&Pd?G-EbfmHBB?aiKo<|m~7{o$jWQg%5@hSFUL0gSjCac(&1auR=|bm(rK zoiTYri$#1J*_D0rus{ftsy297W@jd7PIPGlox?cMZav4?sa_t9O4YX48Sk8tgKzoG zK+nB%)t|m`vrVbJA(xUj$mCITk^1JRFx?X1Tx@;FUn*Vj-`WU}pK|u;v2U-_T3O8- zw$!<6hbNX#@oCAqrZqcdJqtHrPYXMR{2jsGvFL2_&w1i*OefET>AlW$l$_M?rC)t> zZocbaQ#j8+cp6>rHfkJRj=s2fFG%&)t_JI$ zNRilVr9?XobF?d#VWn`3eS;$6wCZfDeeB=rKJ~wkdM0H4uJe?;`Ut<;cS5@)N_{wS zR`pq8NY^)_L*d=WyRNRk6qWxKSNL(_23-N($n8uRlKdsZp+h41b@ZbFBO>ItU zd#FfQG+P{h?eI6+%QTyR&S_pO$5$#9N(LyrkZ3!2xgLG9lC7YUnCA~>vraI<{Kz(n z%qah*;fb3@FdQ^%66Xl!_yICHCjNX{Ly#_{sNp;f0YMf?f`9hDx%) z_bohSK5STa6PtM~=*|)UGq()&Qh(&BxOc|aP#o6cWS2NzY>d^fA)vqTM&kS$GOIB7 z@gH|_3*%rTI2jd2&?8p*T83X=;BwYhXm5Dv*gB7!Imf+^vp_Z1yVR8U6etlJs2PIr z{`a!{U*W!_7V#l?<_V3oE9KDwiZ9#Jb^GV?{iX<9ClkTOZ?RcE*sr<^nkbo&M&$>q z96Ik(=Oi5$x`p0Dar`CdeBW~2P&sAK_-b@;I#*Av*^qEu$9ur{H@u{yUVN=W(Rd1X zJGtfq;W#A?N9mXKt;S#+vnc#f6sP?$vI!L!kq`I3x)1?I7qL7$Wim3-|My?ak&y-LN&7|(gPiEGl_D~AKyWq&N6yQV-mG|cI;djJ_hOPc6&(+ryv@4ANPeppldIa1b;5vsh>`WPF0^Fu47}@CKCB%uj5_L z5rUQ{?6fVsLmqAfh_%|jXjpvIg*P8@;wnw%)XfW42^4!`CFlkCTXpiXB*@-l57zy8 zWA>M>L-b9Bm6Njj|4Zd|hEEEX?WHN3)lIUCf(XP^c7houba8+qRiw`1PB({h5BZs^ zRLHYedvk1ezVqc7>o)9J9kq9xxdH58)yF>BwwD#7!5M405%;!K2`@eLdpl3{O_@r4 zT(UUQEz_6)EsagQl%PxZv6#})NnDX6AI*Bhr6q#tv-Qo$Jht2$CV7a-4oGCAj@2^5$pJd;XHTD~2IK;VwQ%=lRWEecFD*$z*`F$5*8Iv9%qn$Jf z{}Ap9x9pwhQ}KTTiB53pqGpg4Cmnfn5_m#-du z?ld(>K#UzvbBQf!UXddEk4ew$!K&`X0`@4%RFUR)<*79;&#ct@|5d@g z_V9!UA|@(jMs$z&ijM9l7dxmh;ie~9t#f0N$%1jElDZd0?a?uI0z%6mI~nm^0M_UK zkf$>sL}Z>GH~zBoK(zDfr|;A;@fE6T)x%U?>kf8euu!?NDZ#Ta7((ZapFQGz5RGKO zc{yQW7M>B5- z06oc(aI2JqZEX@!7~t^Y*}?>?B1k|q9kS}c&`YT(gug7p%#f`nK~7!sq4Gh|{qknq zavDOM$~Je`^RD;bO!X@8$>2xV@mC zFsK__HLL|+&cY*hMTw`S=QXEGX5pBP zmM_Qw>l%nA{R=Hi$&Y8V2JRxQ2uS{KIj0liqbribLu0WpUOy_-3iMBCA?M#vuvXWZ zGAym%A2w=a?R%y?_TI! z1skz@HfuSxmxBJ>1)Fd|l=hA;_QB|E;qf%Rg7G3N)EgF4TM-SaNyZB17OGF%^&&qcfK*pG zJe)Yq4^`P_A8@aM>=bTqmyX+$?O|insrul6=^8=1gP>vogkr@FoaiWt+MO$M^AyXUBf#Wc@NzC1F;1sXl7)gb&PxdCW-(fGn}rf^%FIRK z{=z5>B_=HUcF^7WpB5nrt)1k#tU6MNyeKAJ2s4lq1u496pWWfP2jEvBE>uqQK2B{K zRF~KZ!R8%($W$i+aJX=vA>hv=e1gjPHU~4?SAnUz5sMW{a}gR8l1!CV!G3qQOh36U zdJ|l9VThPvaI@+KyQVq&Myogm!NqgNP=*~sWFyFIdO1mqho1%T6G0jM_fG5ug#erv z;O)d($d(bHwFmLN-$PDq4=|EBL6xRC!8|9csdbHkAfbmbf{%NPUUEsaRUK(>nc^PB zN?vc#H`0|M{CZTn9QP+DM@KQTTqCCwb=u0=pN|C~iGWn$y|-d8S_h{ed)uaCK#KiG z<&bl9E(>74{&G=E_}ZmC(Q8)fpu2`89Y zyv23;UvbR0j}O`^k@Lhzc@bRa-rWb!2BeHZ?7mwojlqQ3Ha3)go`mXr4*}_^X~KBscbGb2CS2&Zon_fXNjJuH_-bk45k8L z`ZOCtbg6~;8j=#|{}XCw#W2dm+JE6=mil8w2w{JAV;Mr&gMQ;}4iwuH8~Vg}om*(W zQel2fS6b8WmljRzoA#!N)CJr_E9ZElk28|F7~YD~Bqb#KJpJK=a03A?II0Yx0@9HH zq!5szbHwjW+icrByfIjB1cp|WzUb(AEe1W^aSuWtieBT;Z@aguG*VsP2x(|+qAJkp zBz@`>TEvo25Tm-RDCIizt60&;{k-bGhl#s0nFdEuovfQLSv)!G z)y&#uPViyfEg7@?Clt*4B7sg8`Xzi*Ag6xGmiA{vec9Yo^j~_Sa$7Iy^z#2q=|1VTX3N|-w zwjTF1FjeR`j}!m6?js?2tDqyDjjv)|+`=D_xmxurPi;dw=mUrG+`n|Cq8EnY-*sQK zO-r8#kXW#b(+yuSxb6>#^d9KrtKcjwcSo&fz88$j`h^ZRf{zAWUbY#St;USpWG!|Y@XXP1C11>a{K2AB;Bt79HzX|S?Nl%iPG zNek!b)wh$OK)51pww8H`as&DDD`w2K&Fh>5vAj&}B!9CxQwI|Lso*qie;_QHC%6BJHJ`v7HTY)DXz!~0CF&j z&{>iT=7|uIwt^s?wJi8rhCHd{i^&ceca)I6BUa{Fcl&-hzx?h$qU-c8Xmq@Z#1U-+ z*oH_cnmEStUw6tAJ*7K~O)t?&=170!215v`G}VH8KwWe&kCxe;K^|oR$~w6LN>!?p zkWWeNWk#5;QG^=A*12R`m$;GIVm57cmK2#VI=L#>vCdU03~|gO&RQPl(IL+2XQF<~ z;hY_|Z{h3&Y|Kitci}R1jQvT@Fwm!GkKgB=Y<>>ziyZe78|Nnpd z$BrGFnT=r>IhmZF4|5i3bCz=>=Sd?uiE1gO)922dQ*$n%IY|%utVYnPDyxTY(<9KIt7B|1pw`UDNg$ta{xspyS7TCOs z`Es9#q9YuGH+&(RNdha;f#XKBT`R?VVS3f5n~?aI_(k(f)cfJGDJi z-7PpXLp7ZMNIHJ2z&TU=eY*{xt>*@R*yyfwr)diCazkU^4AlXx;iuWsZ7FJB+*dMP z7KT6X_{TGTl&W$e5!lVwO=UK=#w^}iIx&o~jC@}>z;FyT@~PHGHk{7Ve;hoL&dp49 zI^ZY|k{gr0`5tG=MmLB)Cfva7ALV|)tv3CQ*rmEKZ0+P%&2zgeUs7k_7v9S?{pG@E zEuQeYCd&j} z=D9j~b^i6;PVZ|NX{KLsnNB$V298bVFEWUD&9hW1Exn#<`;13WpxOU6iZjV59BKCS~eGkZyOUzBGL{D?tSuGCiV+ zW_^v4O=7sT>nx%b46BlA^oL<0rjCYFAUl1qcsx{~8RI!pEQry`waqnX@@8HO&tCTqYSc08Gc) zqnGIUXBP`arVlA-g?Ey^>yH7X4U;hp!ye)}&nBn0Q@P0W74A!5T{Mx6PXKzE2xDPt z-u@(KwJ%BT1)De6iebr%@|h2HCK$(MqZUR($c!r02>{Wa!a|Rd-vG0eNmJt}AcQVP zM?%Xh*0Qo5Z3(mT3NKFT#7LU8v+>s%ND@xMuR05FcK2KHP}2e_Yu$If;Cg8~zjgP2 zxz59;u5xGTJl7soidtlH8MR_LN-pH6lBq_gfPH(t z3ed`+Ks`pkO#G4_YvAj2T@+xa8lveH9$=(4;Fk~qZ_P3Z+B~9{pOdSN->J21;?tC2 z%d<&&>oaoPl^$fawkR2022Xf9{%GqFDu$Z$UapMBt#HXfol{-epSHdDk^?OCQFN7) zr{Y6|{W-nY+LH{=BS?ddpvG6SuDfe;E?bEkJ{7~}UMaSgWGj&EmX3I2A6CTuAC(A+ zF+}59U;}`OKL82>U=Z~GXDCAdUqjJjjYv;p7HX=X^tE|WnuBS0RD_7nOUKBnn7YvC z888-vRoU$FAEQjvdO9GSfY!&th^4bp4%z3Fd4LT;JedZCt*kKWOD+s7-ac>_4SW*4F;j zUhglXzmHG%tZ~DF2I-;s(TFjgqCt3kP-ZMn$G0hd#V{v$zXP~*YPdMZ>%3LlV4bY6 zWyVug!?~hvBlJ`?$t4Sa7>BAb?;OR*5x1$YkZQzAq{YefpJ8Mct|s4&?eG0w+uxPWwjinh+Cczv9J!*J(Q`xFD_t_yKWax_&~b;ST0HZCjhwtLlA=tq7&AB{FWe1FMn zSE`BSJqyYGBp21-MG_=uFu%x)T3+IDWUT70_eZ0#x`9Yp+fkvP)Nn|EmzjrwtTRbr z3Fq6WQ&(7KpFo?s}nd_R5Ls5F_An&txq)#s0tNo@UvgS*=J|2z*#7iH-BoXtD36cuQ? zQRIJoNtRgGjP}B5zqkG@VH_N^vD zL|1yVQA(`b4&^$cxX81Eu~W*8c<7F@ySM%zZY#jz21Sm-mJi()wh6;ty42?8oHZo3 zI34S>2IU;?Fd^P1Z^4o?ei@^JU3-kvYqm5&g_n!Fm18{$4gOTQC>eJX`g=c@UzPB- za-;0w`bh3Zn&>Njs@NK_#FclSyZ$!tl$;B5gsvHvTpcefuz+>yTb5ch>2GK~HFN)6 z1m6F*((xJ8YCS4Mnn!$lhE%5i6;3o+cr@-&wW~|H-7!`q^uM;UZ}lzwYW+7~lFyLH zw?B))8ls)Xq$#+soe#p=1C!RBXcM`y%#<+s`!-r*R5*)F5gsH(q$0riexfWWi+>VIS%rO#rWcU7a|Glti@R<|vRuJ8qtErf}S;XhF(71pT$IFU&N z>|z!amDn#`L5JA3RHQzSCBqM}PNR9rR1;kEBT91H=ilc(x*`ob1G};$%RIg_8YdY& z&)u>P#QSE_;zLJxlBrB&$!980#R=AIHR-79@lx*h@L=V0m*j2L1t?@)Av+&H+)aMi z`q@fFuUS&d=SZ}as6^mq#a=dXIrFcFwl-XxkbmAir+wsw~^iMGINlZca%n)5xU*f?tg0` zfO&dQW!wel6~Y0H9p)}(C7zok=e5Kg?n9wgVcxo5Ugz^i>N2Dj-XQ6P>~fTT#Q{&M ztRpUe+QTAbLl$<5Oux|NzHF#a$j0l&Y|7gIDJl5)rcC^+2R-wkn@Yz8Cq_39SDq+w z@abs%(ajtZpM_jeajMX^V5O(ZAhz-=lbFNjKd0T%;~$oHCTbNl>-bo0Z}&KP#MP%V z_sccp>w7f08#o}!B-w;QMK^|8YXkj~0S%Rd-xq6DT(0{P!5pWp<~4rP(Ye$4hG8yy zOw)3M3|2Tsa-g~Y^L74?EjcP**R{7=Zgd7+2yD}Yo&8pTNR3G}%X->}!3RVvebs-6 zr*fIK!q2q6(_t38e*z2Hc6*Z~c6L1pI&#du!M0z5_pQ*wRx^h=#s+R=zBBEK%8M#` ztU10uY+=d+B`gG1<}@X2xFF4BM5yWirEgvs%=t4Kqbaqog;zF`eWGfvA+o555@ z9_i%4UuRw6BhBPp2i^NoP4qOSq$xcsWfrE6_x#f&jqFxY5w9EIk(TtN>qhuU#fz_n z0RJINUhB1Q`JNf1j!AD&ZW|PoOUIoeIidV3+ z8nzi;y&$l4a6ZjX$G5p^PaCjLAZ7Jz53SKrJ$H_-@|~ZKR1CvL^t5LCrSV%pyt^jG zF0~(bowQh|V7$wD!sL_c_YiI95(cRNVVGkD)Nm}@eq&g-OX8Zl3n+v*M=+-VA;3}nu{ z{WppDRIT_f5$5-ef6{{$_jg1djY8AtCsFGf{$Cs+zPgnFQS1hfCwfbngIE0FCun*n z3poE2`-1I+%OzV8JNAiU<@V^nopyN0Q#5`C%bkA+$O!>iCP5nqVlS!4zBXUItE9Ri zAK9}fu&X377(l8QaBFSc-YUeezqJ{~rQLrR`Th~Ml_E|!qQw))F){WdgzJf5s978q zvDN%5O>r5D7lm(P;vFWz6LiFyje24Y9=C&}$zbtgbHDHKxN8xt+o~7#i17V!s`^nm zh!%{o^{uxCwJ4wg$+g2Wsdz@Ir`FY8Xx;<==h_h@`V)%vM&svY+$(x(q3@?e^MG`lvvt@H4`1ckqycoRL?X0i1naJA?l5b_V07lV59Fg<3t zbalSXWi#fnJgs~H$pEDLXlQCCp^xeI36xsMJ5-|($IRKuckSMob(I^`JZohS@ey%E zi9A7I4eLZIM`~?2@-g4xwg{^_WYZKR4FxH&QD42=q%xOr+Cz{T~8!0j|0tsLLmpS zbsjXv!LO2`WT6t&uNlu&P_e)T00;`hlTOcK3UHl5sbpEqeGzwzk9okOj@Ig{LWk0= zwKg4*q>R#q zoSP^bJ){}dfB1L`Odf#ExW`DD!!$NX;Jg*&LV{xFAqNrI^*U5xa|)^Bh+F|LWT7gU zj|it{Ze`s$44U5})BI)el$d>dUsLfi9Z1m#2@qlj@>GOp_GYP{#32 zxa;+P@X*EpIKKnFodWp)i2bx$hz<|>T3FH`aZZ4{%s@}H?Jn-n-HJojqvQVRmw@OJ zkO;D4A`ZxKrM z(`~NUo#WM%Gxpio=?1;3!9C`m7@L>a!7ObJmDi+)$tfevDR6ZaxW2Gbi3ugfAKx+y zP9?xC7!X9dvMoy@6F}~u0B%C0E=#J`3UgB=l}mSA)l4v(hbI!fE;A*M;;vqxXJ_$o zDLm97Me39@FkCBfkl_jSou!NQNE)ttNA07PPzoKQ2%7f(x`_VNwDOHxzwrc%dRGp1 z;?x#xENd|M8EhvLpl)$u^3Q>J14MRjCQQf;0W+BP}ynGL_?J0anj2EI?CF=Y1 z&+u`{#66t?DKYlGqn61_gBVPoHke+YLNE?>3Q#}FyQ#&HH^500D`%}%XMkt7mT$@GZZEiQwIyZGfsteaVhQq)vod|e@y}Z);-b#8< z@Xu{Jx@j4_Ru*uez?9X8+Q|zp6Z@_6@E?kgP${p{FqjX0kW`+8@28oc+ z{J+xqQn!S|=(X;K{bWH$z&w~3fGDD8`CW!=_DSw3 z+Vheo{eh2r&Ep?j7aQ0nJNDN>jO(%frC7FKp%?BgC`|GMNH&*PoVTSx`}~_bpgHsYLIZ^@jMp7 zjV5Y7_-b76yBGIM_#ou(gU#KzpTY^T>(?)K2LH#dp`EiNu8Gj86ks=i6nlCfQX~D= z8Sz_s0<8E|Mt2@ClOBjB15%n(#NZ@O`Xx!)BM*BUhdxQ`kchvaBu3)|{T;Ou7ib90 zUO1O%VfF4j*;@K3O?vgD^lQ?&C+~0$O)|fPGQWEt{VEu}S~+<64^~=MCaGU>)eCsR z!1RmI%>Sbg^MJX3Vo~8t2{A`|jnRDOi#S|96aS0RpnT^Z19MN*J;ub=o$N_3=|OK$ zXY*CDvwZO-`X8p8Dw%^9!CYt(=Wr-L8see|MPYzeeM4w&?Kxh%^e1UuSurCw6yYcn zl=q;e+3fe64BC9C!w2|4A42ELTyC1~xi4l8=h6kZLwQ)C2wlQQU&F;eay<7(ZK~=w zW|!(zL)HvE$>wqv_3WIqy3td3vx#Kmv(&*(YkH{$MQkF2p*YkzCc=#`G0H%mK>Zuf zNBlE|dYhu?)r|W+0v zJ-ha1kHfjz#B!4lxEJNUu$1zH)#Zk56Kks27j(DBlzywHa0>ybyg>uqn5cRY(o=+N zVn~Wb+hocf=kpFP82T{Nf)_+-MCBkFHWqO}uEj(~@Ix`9Kt|4VL5lijvJuxv0j}a^ z5_|z66Dw8%KhmUM0FP>(ug>DuU^+eU-!t%R2PxRpm=JU2>cmgML`^f6c^fA?b}_OC zZX|+PiIDYt37QDm*@uqfLn1HW98PJHA)W92T1xXRMC?JFmig@P?&|@W&%E2Cwb-h& zOVZRg@xDMKX%+Z)&i0J7x5?AjbWz||X}{)YF9ffSM)om2VXmnweX>;>6%N;iNE2wJ`Ylbm(r>Bi<%glIkNcTY zw=vB%lBPF!_48B1=P0Omi9;)^(&RJJOzGt>BbWw{#}El&?)O+se-8Nq(HFl29u!IY zV{A556Qg7@w|%Y2A6+0}p1gW1Yx?sWLpo&Rzpvw`SIa+Yl>a;Zktg#^=Ftn%xmn7Z zzB&fn(j#3ODK#m@C!s3eNvmDMJ*CO4=Kcm2@+jma2zlb68&erZxq%u9NbxFh4!I|g zB$ws)b>|5q_ZkP2G+@V7upcbX2k5X)e@A6nmU;7U7OP6dMtqZfdZ$=-^^umyboZ@e zn;t|NjjWyTkG#cJ4!mB(bO!4gDXXr4k^>kqp0_DvVwdB7)mmkI{QaGw;1645d+O>Q zxA@sR2@WBFds?HR_2`ol?QiF+zAt9k+tV)G%tvne*DG`K^nr`=Q+PB7rSI} zu7o1kc_aIgMc3Dam-Nnk20QL#D>#%ZZ;TgPrnaaK+@!xuTe|mC-?F>jXb(Kk`n7-I za2evj&g4k9(_D#{@;8i?Vf&-4rnE0Oke7O1tzvhLhP}So3l*fND;kHsoJQ`H7+mTp zH4EOA^O$qFAz8&M!MG4r@viu%z~JDmnu-3*+gHlMjH?PT$yYR1(SxStF=t2P>P~$y z&#ZqYW(F_R5;~0aITQ9~wfCOFJ$v~{b4Ir-tI)9q(?xcdw%t+Xyfp>K?BXig=K3e= zxTw^$^Yo)VSpdOtQ*&8&c6XXn-mE6SCztk=R=eWvt*bKk%6zo)8DsGNt;GU3x_|uX zGl3^(nd4@V7h$<94+`5`Dvs^*lH6#!a^QTM>A@F2Kk7Z;v+ijAtZ%zx&u}L z*Kl!VHrMUK2aD)JADi)&52go6C#J{l$qnad@xOxi-5jw`{hh?icse>K<~AL@W&6K8SAl=lyfN~ji+|KJ0$GK1IckKrDnCSLSX(cyQI_w}DHZ5dw; zHu{J+>#kfcA1f-pec~>yu-7v4zN}@9q*knpy!+I#z$9yOUX6H>IORGbW#=HOtloZ( zo~@^TjLsgN!|(Z))i5WNLtUvAA;?_8-p6)t(RHoHa*X*wb`;$_cDL^Yqn~Yk#}02JSHV zbRYNHSnBZw2lf;(C|DEt8sXhj8c>=2rlIAe-{Izx?dp;d46twC49!Ji0!5A3Q;Kn7 z1zgVr5(TYpqq)=PGd|sMPD!Xr^;Rpo&%9LnVhEQo^`^eg;e>0kGb$c_&KhOQJ^Rtw z2KCkP@0Mo^?IzBUtX=fm)3vo63(}7iE2DSutX{XB)U&L-14L7mmkfyurZMLZSefqo zGP2!TuHYQxdClmRJAePsE9nt}?}p|*VZjfP2$4tY=R#%RCii%rb?!B6I?Z)=nX3`2 zw?@9Z4?+A&-}bT_rS;!tr7UiPEEqL=F?Z?TQmUJc!K#uaWI^Ga z;)rElf(ME&V{RAVJi2jH;^+{|3XBNIQL4+jP{hsK84;bUZT#90yBPveuwp0rWzRCw zZQ=d2BSkE^%_wGuC6iS;98vZ%b4ohNq1N?5==d(u;qw<8u7)|1=Q5fm@8x=9oQ)5~ zxDgFx7(?)w)yxb#mlLC&$q3eKTQ`#kD$|!|uJw+LGThVS8(iL6|Ju?ez9gls_*S&S zjXpS`1J^a6b}7twGsW`Plq09>m4cBPcENPBRt?d>!}WKiO}bvM?v_G89{$k7!jsvc z?53`Ebx~)g_3?p{ujgOSPUwV-jk^l}yiZA&Jw)YlhB0-y`)wiP>i#O_9zAY+A6&d~ zSo&$5eA;f8_t~gtl`<%f}D`DmQT3G<*e<&QJI#w zd5q0Zakk3b?Q>^8*L(S@=h#S^SoJk{f%4DBU&0dBen<~PjkRn)47bu-zt*TT zN2#zElnDxLQhj)1p!6~MnzZ$6*?J+;ix#W7?1YL-n~7Z5t9`o|lCYmOm)Ym}Dd8_= z)L~j|h%vmA)Gh=_T&N&mBf3CYQ%ClpIKh%KjxMfL?UO*^Vlg=WJr(nQG)lP8J5Xe5 z-8PhUl`ngjeXueyg01{1d+zo1_Tp3l*BNO`Ie2Qx1596adC-PA#C+Z1d_dc+xm)J+ ztX9*tUE6EFT#y|a8Bn0>*HX^{3no{UAr1X@Xu=opzcgDgR!+ZbU;(lbu#R}?g(&o_kJG2xDO_`PQfCrvU6HhH?kSpp$i_eY` ziBKN|k3UBJ%}0poWx4lc&!UdMGSn0xBh`;@FJ-TD{b zNXjpm`lXVhH$Z~1ztm6yynId>2}_sFn>EuK$+@8WJSZ`Nv$(Nqq~RCR$h%cS3p0Z> zCRn0KqIZKvFWyRL_93nV$J_oJkTh;Mb<5HMPPiIVR#`aMN3BL(y#U?W*CHs}Mq|sz za1jx@ed5Y}t~KDK$o0w%xvKk{$AKT`trhLFuqzRCytM4|3`a&#AY)?Z_uqgd$>Heh z?qkooCCZqp?%YIL#(sCMrWnN2XJG|`ORKjp|K93F;<8>laQGlDXIq}&2Br@XcL{UK zZio@YODDI9D~+{C+}}IMap5QAvm9pl(=;sG!f0LuW700TwLFl{kg#KKdya%NrYS9=%5Zx_}^!W>u4MKX=9S7Gd!iX z=XGW5r6U~0lua27y((#%#0);g44%%E%p8`SW#-bI&BlALz^%gqQ0crLvt>|mk0nUz z!7$v19uAmz4-f9RgAoB6GPW==Bcz`SC6Xmq7Tmy*bgjDj0x5;Io@;)s5~X}yxqgJ5 z__@gF%cZ!Q#0*Px-4#!vI85fLI#;pZr^sNL8ugnI+{K}*kkm9cQkGRXOo7mz+jWC7 z?IaP;tbCY>65h^jV%aw!cwUla1dsh5+lynIlK%`92aXp++@+<$wdn33WlJHyUn0~M zjCVbC%C&HLR1yWtD}qTFQ72#bD%xeFp%BYsV3Vcfw+o$OzEG;`#w~JIZ`~+n`K~+z zWd4|M?GL;xW~ zLGi%G*rErgiy5KKR1_0V`rE!r=EZw>`U*4EDO@Y00| zAIS{HJLfThGpexvS#|;#@?mCUyPi0l5QI|Hj|U6&VLuPUKq5?5#Kbb0RYP8t_fQ`? zJVkR%c@d1n=eCa^rJ^l*FO;v~ip?ioa;JuTUB>(4vwT}KP6{)AL68=Mbslng#T^cH z0T46*8p(tM6UD;2vZ=78CYFjVTP3vCAXIarRz~W+P%pJ#f#jH(2-{G^O>P8c-J0|L z$lZz-<7!OMk&bZNII86p7ebq$`IAgzst zBmoz=TQTl19SYpnR_d(3U$4|vjCtXrq`c3xgwr>F4IK>Zi25!eT&wSP#RV!RbtE@b z7}697FP^Fj9V9FVYLP%9%Cu>dM$mjkp?~He2Jxo}1~#xV3SsIzmXcUfBl>?Nqjo*_ zkl*iW`o~Tj2O*C3)vu-F*2BKiaf>m&5iT zXDkuGiu_RgX}Dn8Yk$~*%14qTt{P%DjpqCB0KAb=c0oToZ64AAK+ra#$|_Su7$PTP zO5%KrF9r0*gopHw1r7n&S(fEIcQz*@zo>3T#iD7~sCicTHXoDDB<+34lCiF%kEU?N zSL+f;&r~Qo!PLOLbAT)XCMRTWg!bNLRPG$}5#It#Jdvqd7Bb`rYQ=+O9-_!R>##d2 zmK3s?6w*b`RLx{5G3G+Q`n>F&F2;t)-_JxXdmMkpB+P=o4du!yWJX!KM_b3$VP0`X z#$>1U-juAvLk;h6eLfiZK}JUkA>GFoKK9U0rH+Zi!S4Qj{$BMZ$lD2`LJCQdi#kkS zL=Z@t(QwF#J6sS?3L#QJnXM5T^Do3qm)x!K;>xMdR=dmV0CX3i3~>B1UA#g04f!^r zS9ju;fkh8>F}%CEzTVTT+0#ohrqEOLKcnva+ZMp2ESAshu}jc1|i=NOf9Ql>8? zQ(4#+mg)#=qFcw>0ovrEqfxM(2hn%LVe~K=v;Pkwm=BTSSvXw#$#EvW0fwir zOporMAZMy@gBH4gG9N~qg>?mj%jj&bF#Vn_J{N}8p@7B=@Q*5}Z~!JtoJ7RC!h^!V zhWVa6*SxM9Qt>e7*pAfDwwV*;Zh4Dd=LbpjP?AAb@9#!kOVryL`D?-Dd@?K?^rum61#>A$vI`V;Gm?{8LhTfEbkyZbWa5 z>beJ8R1^QkcOgcsl(i5<`4*G>H|@8P_H>^3~dQoPxjEo$Z9Go#t;mBD`T?^-H<45lNxBMMU)Oa^x}L zi)u@h#w^`Nb@F{uEGU?6L$2Jac(VWvVfidN)^26;+RMVl{fXUaK5+#+iJa)GMWNm9 z!H*BGxg=dcCh(ldB9{2ckEibdQ7jxU=*)k9mC);jz57m+Gx3?M*A+`9R$$P&w@-~> zO&?K<$*vw`%YWae!WhId=T0mxcVD7QNhcgg+wsa9X2j?IbZpMEKyA!y8BqW3wtaAQ z;WqEqM5f@~t(S>Dr}d5WBh#a15pJ`fj)-;Ghc)(PyG$1_{_QO&IuPduENJhs9!grg zhce|MY>vyxDofrP**Db!8V~^;!E5Y+sL+b(;%^7)tb}mU+pt?fAr-)eHq3y|<*nW7 zO0?KG*{t)h#Pdb$@iK|yp>K6+O>&-E_tYou(aHK#Y5(@Wv?w}c8ORQdOp>+TccYjd zKY?OO$DA zERt>7{t?li8WG~!V)@bLf{|qO%=K$yi8-J5m(;EnWZvxBqq?E<44F`tzAF{7YXE7_ zLpX%VGk=~-5NUDg3ye$N7LPOW%tva3t|5ksa;u!W-hQxwZKuop`3<9^95+CMHY@I07KYFd;na^UCE#=Q}Y!l(2ndyawv5Tt6)_{MSiLRR ztWgdnj}j)n{rCNVml_cF{jCIpDd`T=BS5~hU%d>!m8UoVXOVfbjLgw88#|DdsP=GvS`LX}fuZtnQTqMOC_o z+YW6QR@^<#A!VGu@pEOjWKki*?dW|S`M8A5z%Bw;{54p?7f8IYK-_o{Gb}m(_PPQK zKf-D%MLeOW$1E>Z6VXQwY24z=K|ylW)kXd!F57BS(=usMdQ@b!K$O-2;)-li!ouv;g1d4oBC%%9dSE z%#%?uAd}-g`7jt#9CV=1(+AR|)ZK>|7Vg0oNo{3ngWu0mwu0X#s7814`;0j5=q*w1 zwM0o!p6I}AhR(;`?hnWL+6@3>)1E@`POfW-x8c0{Ic5!CfkK~7*v%hcm zl}m z^*wIh%sKq~<%@CTCtO`;)SK`yHm1D(tixv<(a%A&Y;e|IJGQAL{9^_Dc@9RQa9J}0 zCrqaXIkY-cH>_!f&Qc~rI5=8;8L0sGS0hm_OLq`m38&~}FYwQ%H3P z$3_t#oWC>HbZ~A!%Ak(ImXIO1Jc3CzcnvCMRkY=hr;_k8w)4DL-j*M?pXNO}m^MM1 z{tr|oCeYv1t#18$VM2$iDn%!$QvovI*A~~w%}krE$TqRC6Atw$ZZEl!VNIb*?f?d4WBTAq0w!S5 zz>?w7(?0%X15-E&9~AB8Q^XRvedk@P~RuxK!(zoJXlYWoCvf{s>XD^!d*38=i!2#uFaf7MfHn0kQmk>0MR`@!x*}TN$TfH0 zV|SSFwC(D>wZE4jTK8yu6(en-RO!7VawQ>+ZdSHV<7(dp)Za#ht7ly6xeNQexAaR6 zpUqM{pt7j?9(ZDO)zv0ZEn1;O0KuxFc$=I!ytg7X=cgs-4vulkt{#{2y(jA&`L#wV zx#F_wYY*T+mu%_Z^P$`Ox&MycE7H8Pru_&-7v6~C)B$nJO`<46Pzx$HyaX zay*xk{7?<$HvaJuxcaXZH_LJ=(A?8b>=PMo4-_v~HcXc|tOc-qzgV3f*k}y-OU$<2 zTX6G4E+>1Ip+OF|Gf58|XO-~tJD0!Ts|96Jy-#h*4mfh|WP_;{=Gmy@a(;eud57{N zN`eEcI^a)7jlv!)cPr*3+E1SiR1y2)4iT*WHoUHa7`y&!S$up2O+L0ni?PqX9P~<| zjiqYv#4r#x>-y+D?ZA0OaRc}D)Df4IUX{YYL&;{zUkBP^_GZQn_dL1L!PYF_@2b&4 zVcOm6?|7cKv?W9K?EWT>+VKd&&b{NoM|t`C9_20vU+N6uG;Q|(?{pdi7NP7s&}?#m zH4*l?KXhiOC8QVq*hk9goOSuMLc{wOJyJzD=hXM!su9ugo&D)L%M^)?kTPctTh(w- z#M;!g>}GopRx~~TrE}m^(5b(uvw8UqsCv8^dn2S<^hcCiVlJ|tLF0vugV zB9`ZmPv7V0_pdc_c00?(>`g8}_Pbdoe|n~i{Go8qwyneI4sN;Er2l&2+Rm@tGAC!R z5|y)JOuC}7g$37TcImrkD;#<=U3FtZ!_?jA4Ii$6=iXl|K1_9hp=pfTO*1^1#3M_O zTi&=-C_LLmZJNX;d7ISyKJ7(AJlnmpJkz)TkUw>`n!X(Qvsra=Bg5fdYi^Xb*!jby zHQYLZa;^9^4cVHPJ@95uOesGyIPB8 zmCb0Z`Q#cwa=DtF?$sfce52rslVVQxWaMsq@*wiFdg~X38#yM}T@`GgY-G5>>{G_W zHtM}yIJi7}{-d~0qVvnvFU{i@-pTxa1|eDfH(@QA+X6YN&r=fy2DNp6Kk2%9v*$`x zO+KdZdyOK*7}hb(&++}LRHJP)q9k3Ny)#wSbnx(aC-(E^_G$4zw5ILG?wgF=m9c8$ zBG+*r777$D$Uy60%gsLM6SA6UD5PpQTu4mk{dn=^1Bb97u2hg;dp2~qpZ(mI9(_|w4)n|9;s&O@LeTD8^)}ewdU^WFO+?Cj1CBujM!hUovq23;&K?zF$s}hBJQNTld;Jmo zu;#@*w;r$Pcwd|4e6dRZjE9u&Da)f+RI#>}q>f76o&8t!%-pktv>Cat&$90KXZ(ff zm$5Atr%vJIXa2~wkW{xVNU#NPTbdhHz@Cw18boZcXCATBx}EgA3r9&V5hDZUF5!jd zVdh_p&PNb^!k#4RV_`zEv$N1ia8c4%zwl`j%pvml{Y{OmFlukLRQc}aEUHEffy8vO zqC44h2fdEqx1Y+JIfC8!WcPVmG2ynCg*L}*oo%4XDOqsR6Gxiyki2*Q2iLpi+MFXI zMFppMd;QsWshTBUvlEEp24&S6e_(2aAypa-MuNcvPvm+v*GCspm50#mQiAw6U@&mp z5pKHfWZT5i>qZW&6VKPF4iZOv#dKWVSQUn2F%Mdovo+RW>I|wpu1^-%hp$s}xiw(2 z?nKr;Z-_hRKkS;b$gvnGSR)L@7;IEKekf0P|3ayE;n$^5)8wH|>?fte)s4!a7>&-& zJ7+8V5OFq3vqX~9i@w&8Zi|Hv?;236fWazYYG3m-=kJfIvNZ_+fSEXVI*~WK!?Z{t9Rh-S4tzVQoB`3P|p+8E+t6rF=c`7#&8o{pYC$M8jh)yDkjzX)rkY@a|544GvtouTh(cA z?|r@{GB6x9U0js4t$NfUGpccoO{EVwO25!3!>9@Sl?442d&|oF)wj<^ZDqeS>|&>N zLTKvVgkGe&=0)GWl7W#8S^pt7YYfNC0o23+D!fZde2iEzGdTioCV)hOQ=(j-Ie!oQ z^s6Hzcyi!8qF&uE{(eG7`jj{4@@XB|kxGLKT^QyCT!Fi}gPL%qT=jNTgXpNsmWA)U2yjR+~VRHx6v^XukZ z!oB{Kt#1;VovyvliOU?cQQ#8F-K2_Z!XK3dQeWS&dwk8CW5yNpUHxh!{puAgUcJtK zm4VYASen2_f_~`sf3T0pt(CpTgDhltd7VcKV_v_zl-4k4O&Bs=cCzUMjphe*c?l+E zPDFB?Q8IUP(POkC)cbem@#2O6&p_K#94awS*3c)R16lg{9F?@V{inb0TqSNw3%2g$ zc>9eqF@Z_|Rm5dF+=0!;?B_+f?%@MQ%wdbVG)6!ryC%!A>nvl+x3qqYBm~pi1~&4q zP|HC5mo`OWU(Ck1 zwfmq? z`@Xetv=X|I^JqegU$08ur-zxJc@A1fMCnwcBNhja%z-fdL30<5?LCe26;L;%?)Vvf_kSwBWTtH4-ZS_RJr6jPM(u`Kg7;8+;CZ%Q5ouT%(}e7HeCl{6`(2q z+Dy;~Ih7%e=`g(U{ub%A)Rk~Ep7XeJ?U?l7JKx~R+*soxoMXLbtL{}o)%z!}?*6yP zwR2#r2eM@GF8KG<2-Sns+{^)We!Zu^ma20VCCJxySzMnRX40p@%>ln5^g`b#cssu%QVfe(Flu>o4{Jy*am% zxl>0B+Mhn$IXk!o!%@|T;UhM~zUGPVUUeGDh?!uE69zIR)L^u7kT$ubNUNZl0QKT5cwLq@~yy-{f& zP?#F24|lnj4Y%cq600TO=Nd{pts~DKSP~s{6Aox?xufTDn95*NPbE=_7BE^eRaF;8 zqbdQl(hi^B4qsMdvW>Q}l^frYm$URZ2Yd0W;{E4$row@D^@4Rp9|NT*18z_P1!_@X{z(duuwz2ih+<5?{^;AtMTB=&Oa|VeBx)) zW%knU_|-|;e;o|i$+r`LDwKY_H%!T8@^Is)dL+lxCg*Uxb9k5Y)CgSi8MNcspdWLP zjE}O$`ILGNTCACGoLSL2`jzarkLmzMKI@qCwb1XSE}Vy{dB2ngv}D?0ie*$P&BEuR zuJ6TbKNZu)HXB;DN1QA=xM%TwXC(J#??%RB73h5ft_*NZoOAhqoZa_Zl5gDbakeb= z0u^TpLhgZE(~RNHfg^W@BS&iPky-)nk>SWRt-vftR%(`}R=CPEO>No6k!T3R7ox!aB#q<=+v5K$3neb8`bS^)+f=$8%35>HmHe zIHozg8@O}_o$~Wo(sLg(*N}_PCk!!Rr#3F4( zGns*r>#ngb9aIx$zDlC67=lCJY1g_LyobbScVQL_=4-v|qQ)wpLoz}&C*{Xf`o5XG zue2P>w+u|gf2_uQ!YRlt%56V27X>x0Kd-(qV)v1kd$G&t$FAqAi8^+WTb8Zr*4mm% z&sFP(*Td-qJGvZ&PNxjZ0U&~3pT^VS&rw-9UV5i3Z?Km8=?-Z+EXLtth{f`y!&XV{ z?>E*xcu*V<5HM972sP%fjwH-uBF_8)z?KS63*?txXmh;e-T^qZ}GtSd(ODn)iK}ew^#n)qQ-u$CF_CqmpxSYwgZnl$Eqs!TW z<^8}x$LKHCY&0jpBvX|rh?49~k?sOARMQW)#? zmm8lxe!d+6F-oVJ3#Kwh$P*C7bQ8s8`g3&+lex;^3l?(4hrP_qFwhggs~;Q3N6wsz zTlvjBAqR?lO5dYm2qu2p{C20oDd@aMqq~VFTW@yr){?iJ4yIUUn$I5c96Fn#eDL{51l}yKP2lQ?&QV)+DcMGvg4nUdLVpAUVmce3w zem-Jp2KMirFZRXbI+yDz*ks@yJ_-Sv&LO>XI(pzypu4hV>Vz%=9qi#35RWVf`q$XqJ5xITDBcS z$5}$MKbImkE5%%p>H$qQ8qyy*t(Cc7dID2fR&Gm2>t@+)> z$%)3|O_}Osc0IkC%qbW7-8!ul`w6;!dETn{z zU0>Uw!5ggwZHY1;_3dC3cHTXK++Z!Cnvq>I9sVd<^&MY(s4k(H77_DsB2aln-}qfT zlenW|Yf;1BN*gVAo7=ZDgg5;!8$7;b6tPz0MX)Js*&DMdzLSO|Ma|MtYd}k3%$H_s z&y=$7V>xgwPBGJ{Ks%tr;c?v1WD$tdj}SwUhm^yMD|y9T~Vth*aJ(Nlu&)QR4i*Pv|5plP;L^;i`Q8aYBg-1FAVd`)W8 zfJJ+!sV2BA&AYqaF~@k&=dD^cWl}X;ngx@dwh+Ri*?+zd_Nca8&K>Uz*-aWWW|geIIgA;)}T;0#z^9cPaq>z*;}U;BfjDMXA^*ez+_vJYBw568t^KRh}Wsj*%kz^8en1p_Ip>YwZG7%7X z?5~~Bkapf`m%?+);g9B^FGIx~%8s#i2w~=yuJZB2R`hm1mj4w^g=x7H#6`98r!ix! z%SmOBT=1*xWSIXqSh#)1Vg@p$E@)0Bv0I7ks)eZBjqJhYW;f|qpQdl0;Mzy`6j@Y* ztN-Oej@{*JF*}v%giKgUzC5{WHW?v-kEA-Gw`7o@0vGTi$|;uTwKHIw+jNa%2X@kK zqh{7&nyz({^d`pTz#61OZPB6qi>vp-MMt$8e1mf0b|S%Td*gqalsKCkk$tKFqKJA^uE?|NDaY6^7FG1oHC*8wB7N7U@R?m-F4 zbjJov8I76hr`k_DLTZ1pYTD@fz1yY3Z!ya5QI=-M2M{`p#pv+6bm?8eM~kMwDRO1{ zLLfC+7*|t*I<<)L1uZE=wma&C%^_)jVu<}BM??4Uvfz6V#b<6T>yaww1g(<7!G7eq zSZ5CXHR%j{mWR)Kyr5z|eXyz1Pr7opAm_fh;5Ww2hgzCrv`wAW_9|MxkNnv_Q8q$$_jaWcyPmR?3|0X5@Fbj~n{<9{Xo* zCO-#A*&*37$(>NQ14FlsVyjw%uHI;TxwUmTv@f6YOSaWdTIRJ@M!_brVh;>B{`$P8 zpAc=ZAGQE4qZYsD_+@S#kohdRsf&GeldgY`(hV0+T*-%mLWRNI#GPXc=aR7bqq~FM z&4Re)L5V!MGwcWYjFfVg&azU!OOdq>v?`%(^zijSOywtsiAUo;7$;TFe`?!d$3Neg z_zGq0-=(Pg_vPX0uc}`Ua3Kw1j>E0`%^ce9bZRz^c$+e**Lk_kzEWEyOCH{I|~j<+Ik-8>wJ!7crEo zLzEbN#)-Ehiu30a-JUS;S5$qN3_d0aij zQ6>bOf8AhfQ(O0-_S!MV5Z3AKS-+kmzeZ}Wg|uAHJ>~Vf%x()1<{+Of%`XDmGCO0P zH``=i@)rW%Xi9XvfASKp0_k{etv|p)?v7at*aoZ;jvgw6Z6pys71}JBNbh66dqPA> z2S&g0pb8dcE}6{O%#{{C<(FV~2p-?VWL|4NsEmR`Z|(T`-+(`U9d+cO;q|$4d$Pl` z7yULd3Y}@kh5O;I%bN{Nm2x^)%LLHU~X`Ug^v z%x%EaFpdl|yqa?aI!W@jvYPptHlK}Gc-e98_@#<2f!IL4Fn!ddvZ6`QzV>?s)o33$ zBon>wbEJnpy!PKF6lu|Gme+WtlkGx4eoH7;SQ;zP)1+sHD|&Kq{UujEk19^C$T8g1 z*jk58d7fJ|8KE6@1I*lDN7+3Q4v(1_PSjrp!z%rh_C{I0wu^(4+MV?u=U$+lGDZ%w zZ@=pBfrq0#hqEEaVMVLGWO+}?ag#AKrzK(Z#|Csc#aiee8?H3)UvTE4{}0fI$%qdV z1q#iiUw zh#SBDotB+0cYt}r7vaYr7j8KpX;ZnviSi_DNDZGYnpT`$)jQ$%ghn-AuoX33{ix%uwILR+G;2q6d^q+?;#lFJb9ATCf0E)X|ac#OcoC0S+dMXBa(UBTg zMc7Ks>hm|Y+*?~!`?#JH0o*k_+cNU>e8kY?h{285x2=VJv=Q46Nb(3@0f_SK5e9pb zv7N*qhR~pz6w(|{u@A?`Ee0`0l0#)Eus1)QQVdehgd@SY&n7k%(cXe)ec+``biPdj zL-%Br-U1Zs4p+J=LRUhtdw6T>MD0|b_I#-W0jv8K@~#C(;je`tsVRtv_j^t+A(NE} z%RjH-)QZ73Wnv9n%0SKB?7&6bhBe9T*eowI&af@QaLXw2)_GLMDjqiew8zx@ISq4L zjIGzS+_Plb-b^TT3LK*8;a{@$V$iDHQk%eZ8z!#Z5A zXf4ok&*`-SN_Ts3M7Z300nTW+p_8Q2306(fuXOq(A5~*@I?C`{DqSXx&xr76k%2H@ zog^LoS=3&o+L4eCjD0C0o&pprw4c`Oj6G#}nYY&48l&Pog1)8J zSL&Z9)S6~c#$x3z_K< z0+%+^_`~uah69%^HrOwRc}@;N`C2n#oojN%u_J^kP5lI>fyNu1`9yv8OMRK{EmMeX z<0E+Is&92k24gN2|IQn27@1Ku51-*GDA8HTr2g9QZM|voa^AA`!IXl)xn%9>EX($T=o7nCYpC5I zF4D%Q)^ycLmw& zHa!fz6HNX07h_~h{KuAZL?w%3XH^=hM?X7k+PR~`dZ}*hh&z#0cP+x;K{FwF1XBdT z<_QTysf)00I|42edilxb+z1+;csJoGtGO4Ictdlcr)xfmkgFJfnZfg@^0@Viw`jy*R~xsHZmdKoV;gt!|3QlC0@xW_ut2^Ev75k2+EA3 zXV7xd!k5jG+>_1&kMNf^dFvJs3l-)2#v8_zD3hYLF-xft71l43HyUnLFDyqyET!sV4Y4_MkkB`pWfVJ+b{GzhXTl`oQ41k;$yQ%lLgsM{0{KYeY8Jc3AXaI} zXH;J4CV8g<;ZmGAX+3M@Gsm<7f5xj*%hHEjh!IdTBk}*jrR_HHEU%WS+n@o76KeuspPEdgN+}0cD{$=A}W{MSe%sVr2n7 zHrwkLtRmV;R(^71j}v=~&%)4$cd6|qzRD2;Rqnr*31S5G!z-*^OW73>W(MR?{c^kH zV1soygT~lBM~JZFP27;1x;nbxk^=Ppl2 zoZMf3ZKH9>dFi^M9{#Ku?NUmJb5F>~zEf9W?$||Tf3Ds!(8YR)tU++#H;^Kh2U-ok z5J*}f#8&K0>wIGy;xXtOa*Rww#P0k(cG4J|qPF*_4W*LbSDG8OoIvcar=*9D!<)_+ zVyBlrn^`YqRq9iSTPQyw&}TSSKOneoY}xawdetx0kz)1t!!J`i-?j1XM4ac*La$zF zqA&bN-1$lEf~NUW^)Bacw*x{dW{W6@;o_S0{N;oSnPYl;?snR4I((w^bhwR$T~vaM zQ0@m$5B&_^)-N|JknZI?#xm5`>Ds67$xm#V+SgOHG4-T4($J$~dDvyX;oC)9CrN>|-y`Kd{()rwh-CqxTxhuLjaB=wVTFimg_jmzT;So@45$6oIUXUj z!?VkAcXn-jC^TKDt)Y0yXWcYDaswWkDm7wTyJev$s6J?G+;BVxWf#iq2~pBEqmL-~ zoRS+Vet%)fD0vuPup5p4tG)zQuN{`hj$`qTx*JMg&PeA>IoCZMy%gfsFm7eOA|F|*^P*shc1gKyl4Fqx6L_cPa^T2mL$Ek4zX_IrR)kjY zS#qF~m_^DOd(#8?pmT>LtpO5IYWjrJr952M#%jD0H|YhELcRsyM$KUEL6LzN%nW7c zi70UXggiL3GcfV#*y{+#667{%6?49CTOrcx_^#A&U6l+EQS^|){jyU*%4(s1UaChvB%Kx5y%N!kqy|yf9~MV;=g5}F+~Zg}g+kr~z5 z)|{sWz`*->qu40thO+LqF9{0ueL7q zj-m7Y#9)g{-oCxBd!CtMuZ*F!OQjhi^5FvfU3YSaGl+Kt2fCpgBbckv7jPsZYXJ4$ zxPrrO?_%BNHYbiLOq7b&g7y2)YxU5rwH)IL*9oDKr9b8vrH&3hI=ykdgfNAz&LH}x z9-ke)c@aAE<)%(%k|)dTYnIN**uLB5t7D^lJM1$i$L6VpWEfczVr|hluyWKPcEiTi zLD9jXs!%!4d{kWbECHqEe0#q$DAr;W#K;MN}1z(VP;BlUdp z$Z0Pe|%0~s0^iM^bntP!bW8|-S zV`f@WpsKc_OrCy*RAby~vGpcQ_0D^@ev*2^yxdD~Q*uzr);~Hqn{oz_; z2Vmj;T%6*0MB?U+OHUIqm$#p-8vopB{-_gLxrN+w@%z+)S3?(P-v6Umy@~xxRxay z&R~#UQhL6XeGs&~?!m zZ^ij~iX%qt=hVrqmZq|~I#ro9=2#<=Ge1%X58K zm8(F`P0laEZuA{msURJ+mi)?U<{e_=5Mz|gpnX7Av z<3!z!ZQD3tCR>odk)BH4PA%J{WlgVc!k_p=0afnZbEk8{#8dNj3e=F*~9K=FKpW4+`Vf%MfmHB$0Dt_G~ z+INSurR5%vq9FrS5BW#tEFx4Vmc#)!jbPso;%e-5k@P?YaGv<&fMic3b!UD;jWY*& zv!+lxXN>r(eZ+2S1g>MH|4PW6+|>R@=t{fRuSqbnU?#b>AJD0S0Z}7_CFGP zZXn^3P#YA!Tzv_DiWP|B60VY7+brbM(^i_o=db61*77rkm#Spbccm zORvpeMG>-D5D16Xbkal(%%i~|$@xzJcZUgYgG5NhIz=oq_NCMAPWjb0dgI*kE5@0O z%wkW*9BC@uZDdhox4nII_I%cGw{+Z(!-M3d@tev$*hzeD`|__s_XzN>Kq?2KNaM;P z*@b$6Tu|XRND!Uv)1;=%yA{^6333e~zw9V;?14EGVp2luZNeKq#4!hMql_-DMchiv zP-|o|ijQwL&%wdfTsI z=MOOD{5W7pKjAd?7Wc!a`6w8Wbv7$i0x?s-8+j>$tdKhLmTINRR(2B}!W;_o7|{Pj6<+nqoHmw=wHG?y-12!JTk*{z*|H**Gc zq$`y6SF|C*wJ6)4AqbDa%x?ZBhLz@0kM#6%JeCylZ+D2+YpeaEn|3b17FLB3o)&Lk};2&4W=AZ3^36tJKc+$fSHw5Z8GS=#m*T(X&?j@gcg8Zs5}@O z;lYMth50{SIL@yQoxPbs{XsjcnAJ80xGd$u1aj?TasI2E(ob528Hx&@2&;?o3j0V8 zGWKgt0PkoU`>>x6nqI=qI8^T=%OM$<#Bjfu5kQIxw&z6Tu%r%3xG|!q9t-lb|L~<^ zMWzzsx(l8Osu1<#Vp(ZJSyIT$eDkkv{@+sXjHXUl`Rz9+L@a9Fw~$Ve+rih4Ou2#i z_oGx)hZOYtX+~}%d%GLN`UTg3&@>R53O1+K6hDG>-vr2OkU$p3#G>e`PRO7^Ic4RvXb#fX`n1nVSBCH7ChQJTLCk%Tg^v%509YOKzt;`kmQsReYg)P(jOKZ z60DN_`mi%A?(1^t@zI4D=^y}rrdWC9fY29Xp^_15iJPU(+7-wE)z6xH5)fwoV6A=Zn9Jo4Yp+sj7@*fUCt?=0Acb5+U2G8;qhp73fi+jL2Nj7{>e?TphATXDa{N-76@tHTH&vyue=E4zTMu*t?q(aQNWat zpSzy@s1nr?LsCg+_H}*a+RF>+*x_n~0HjE)5m|Xnx=O;YuwQZKwsGJ`2?7oMfHDb3 zsM93$>+yHP>xuv$w-P}aqIjQ_`BD62dx-g0ttutwP?CEdH+zahH0J_bwj}#hYcY^>i)Qf=R3Yr*h8?dh~plw?6k8|kH25?JyO`+ON*Gm<3 zXrSO?m?x{iX`hsFIb}f0RiM-zRUqBR}?5F@s* z8bfR2L5Nw94iTPqMxONzrq~BrIA$jh$DbjFJ*kCHYxG$WERc23B)8r^k5WQwJ6=~|P(Tj*q=mu7 zbK*_4mK7dx8?|U;ONIxmq#)YIAqHtc4(o7)GwY;za{(n}zwU zTjg{aN!lBCE^qXBf+|*3nkXhWv5NyR)|3sXf<-+zp_>(yQ%_IuRomkg@W8?+u31&6 zh5^?jUmzjJXE$5x_%|5gp^eHFvx!S~O-=`0){7 zl5R@DDW81B{5!ALI_9pjKZ1hGlh-9E;!N6V07<>)R^>M*NZu!4+P)7e z6vnv(lWvSB?tUl5X3k7=0W)d2JF9?$G1?U)lC}2DS2|~)^iO>7WDMZiC=2BV8X|tpW-w| zIx0XW6`TjE-ZP$p+zTF)t^nLB=t;&is3jXJioEf+?=FTidR}$Gm^Dh9-hd9jfqJo? zKK7F$l%2+sj?cS3*lenhm`bQBN5!5ie|g2&^V^X;O`B4B-ebE56#}U@|J_m-!wP<0 zPvXGW4#~NTfUS|4j>$EuRi0GjLa+OIkc{M|7bIirA&SDOQv7uL;LW4tIUPkbbkP8L zOSS4*tyXKsIBEcJk)8`s8ABfCzpSPC=7_4Hpw$p;w~1~@S_Goyk2M%?w>9#GY8BL# z4;^EkPJ90%718}O?DN|xq8hjHw{y$|00WOGKY1q_Zw`CUU~X(WuSdH=qAGz zw7(Kx?3&d+Ak3~(ay!uXx4t}k*!_{=;U-#=(eRjMvs*{6c+VK%Q>2&>1f91;rb>?2 zP*wI^!zBo4rOQipaxk;C$P??(6#G}({=U6M`>P2b)* zXSp@6VFBhNwzd-wIP$1_GO(kkQ#bn zeL?wg+?B@103YHb3Xzm#ffw-7i?}oa62!niucYl{ZQT2UhfZOaqyA}>l-kq|sXX92d4A$ft<|#!LjD&8)+lhy33<%_B>J#ohjfLu zH~jGofHs#(6VPC@Ql)91+`C|xkHe0%0yT^@X)c{jPa>AbO1J6||G#N0(El6Lf`R@oGt0R}f>ojM+J;D= zUqH7>&*U}zzRpz{Y=1p(K{5GdJ7!YEg?azq##*?q>N#Bj4q z{~LNfQd-3>o8}!^TtT1}VN-ZFT&0yAj|S6E6@xbWOR`@fPDFKX?sstznKLEN4eqb} z>Gmyt;leHzmmgg{F9ovlDn?O)cD^yVRNioYqMvkui82hqi~H+EGe~@dTe3*Rg^ru3 zemMOmS%`qp_u0#TN;?yITx;`z1FvgDUb2+T6+S6a3a{f^^}cN}Uj*o)Uluf{zt!UA zvA^u!j=-HWg(MWaHm=GQ%9{J<5pR8xTPi99z}g$PyYmZ*M-HUmIYVE}Z+|5AY1U%>MU&3R#S6Zg%RA9evqpVQe{{)%{XwLBh7&Q|G1-52YMJqD+$D*W z#ZjoVxKz)>1ka?nh^S8zppW6Y5(@_}Q}=z7Lyn`lH`;zh%tQqc;W}Fz*u5Cl>{%XGCsa&NG;Lw4f)ONds1Fkmj}eBY zBkpSlzF~;`r~08@Hgh_@nhyOxMiwomT*%UO4-*#!@+M7vkKMogy>u!`Xq`jiIedlvH@fmS|UqV$x>pI$uZI%1tY+d#X>Sy{0!E?v`IuM zyUUQ;eWTm;#yYP3`+Ax`)HCy|q28hePy}D~h%J;4aq%8?wACqWWcW$ya>;}mrs7257+@M(d&;Brd7v)>M{W1bbB(S8 z!{r^KtC2siI34r&t*$&Ae(?AnrC9W_*44%VhV`=drDqjmOg~(gi_UnW+B9`8uL*nU z60)pZB4tHR8^H>goaTQAHWXhG%zHblm~wya^TQ~T-k3CHDE{febBLcn4efA_&(#L{ z%J2~#J88jL>oea1!isWLnT0F5oAx`fMv<=hg+3wIYYMA~X^@zZ4wel%mB z22TH1Zt+Y`Tlt+U2EY@z*ud41SSXC`D5;p7nPSu1Ax6bit<`l5Ty6tAHfax z7pPn{dzed!6}Hdl@dew}ajabF13uHbR9STFLqUGRFxrU^Mro~6#bQqxSeI{#;1oYf zEixP3UdU*(FpbCNg9iJH%x{~Vy;j0Oq~8Kdw@?dkWA7o)wtFD#`1y?_9XnZF_g`%- zRVUJ;OrX5dxD9HI`E0#&-ZPRkzs-U3aUwx$pYF+cL?8Ixl~qlbDv0EE45zs3z@;^5 z-DjG6=vYnpsS$K~^)PzR@e+ekUni^jnxUZvrb_qg?ctU&$BRnm(B{cI5a{oUDuj5X zA#%rR2jSSi(6}`93DE9;88)n~QCgo*z3|GL@BN46!vYc%$-nQ3Q! zAQ-)>6#)j&4^MgIY3;i`Pv_YO<2 z%9dfGDf0du+UD9n>1H$y(yhgUF@PKgOKmjsbm*e+>i-nS2_SB0Jfo5DLxiG8# zjVXUOu2Ela%_GJzI+!x5xaT%eZE&%CFLqQon!MfmeD~RtB{XBw>>Zieu0pjHP9a4= zyKNL?uM#SUL@?*KOexl`Z}Q%zzHkdN7G(bG$8NJ@ew%cDrq%vUc$ay}P)SZ?{zF?ppr5Y#*Y6#fOMF)t`JR6w^0 zAPR*p!>Gubciyjcp%KbadNF=3I;KLve}V^U-Jt_su_hEIU#bs1fP^Yk}7THvuI z`LgZ4)xI==A2B$`A=GRNXi6St7rKkI_tq{6xt>Q#$4Z@qvkr)Ns)Mqf=UG^+=e*p z@cyDck`ykI`{#a;oe#mcoi}->3^3VunV|ivw?q9W^c0Wo{0sPOP&Ot{#H^c9(>q*A zRyFb6Pg?-xS+V9j!v}`sAAq`?=;r-nji%L$!{K^khEr=nNEcRDLxMPWfkeX|YkLzW|7vnLp8j7v>XCKmhRtyH;GtR-71V;fYd)T-`<0+a zKR3F|(PSadOnSYihA*~E2rFlv7>}47S8o!-JpPCf41r)rGZDsYgW`SIINcUejK@8W z9AdFxQwh;M=J}DMu2kBDO;PmQdv}f)JiS*=B+z8nTwDmrAV_BcSZc$3JGj;b4;q$w z{HPTh)~=dclq7{n;oU?Li=(F)S?C7iTgOM6j@k7ZUdzVFXN!3F+vqXO*dt^ZyO8<^ ziJCe1=s>}|&h@_4vhwe#d{dPrk&}I`EO>dNAeN@Z%cndfeHwB*W;9Jbq)&JDuBpJ4 z78o|!=b?jG(JwiOLZtjkyG7!lm6gqR-A#T?2cVLrjSz9X?b| z0cxI1tLo8MtcFPb3dgdue})H!t=fe5q&D`X3Zud;gc;>8l@M%@R5HkH9HjpVkOZr+ zCXgV!7RG%0g?!bpG5PO(s;(xMZXmd+Pi`zMQ3y&caY`*)4Sw{ECA(YaS{J5Q!duW_ zMxd-z#X!6jED5qdw-}Zph8;Z0)D)QFsv&0PUMHYL+j|;kKW$pJfNXiG@;G4k9w*y& zxg=Cyaz%GCZVe=}20B^mRr}fUy<$bG)}yM6r(k_^2Pc|s`}io|db&jI znoKU+WKPgnXZ6mqx&&BdCg==J%2@;{`l7fS&fcpDHJyk2SA@6*S5-U>_MvX2vDCk< z7TX^2v@nU&zRX;0^)zJ1t5zK#;WVWB;+2RoFvY#-D({Y#Fa$};lNAIY4CIznBMMYw z0M?;37Bj ztw;o4rE6QvT6@)KBs)X2iIVAmh^8b%NQ7wf0i)Sy7`t4yN|I@$9J&eAknrY8V4oI1 z76ehJLXK{HgV=~mC}PN zNP^Dal@H-~xhmM_JW^${NCXIp&9dwX#9S2s7k>iJ1lWZ&;DIPsn_<`*s53cRruC{& zx*vj%wN5(e|6APn4b__PaXnJNPlOFu})k}uNJ)5_9E(Vc9G!-GAOjBsW{Z#aXLh*=(f zP+u-0*#?MTBa=Z15|9cb7w&ijLJESYC)XRWp$@;OPP0%8LH!{cI7}pv?8{_u406^G zOd2$h5Frl=;F>92JOT~xLinu3kR{BaMAu@Uk*r`y7Q`Ibl2s^}&upbX2;tV%^sN#2cN2&Cksz#VdsJ7t-3jCxN#l^I;)NZAfodF@Fb+{UQ zFy1fgBn~wk(~G0&W&JNiw)1ZN4jRar2;D0A9&!*_0P=n_@G@F{ z*BOo5t$=izSvVhA!IttDnMMl$39ZEip?9Ppf+a26t|m6MHC3V2jg`@QQ-B%}$fii% zmaxaVEe40Z!z#&`_*>$eK2hnEF0y|or>*u}T-?YV?AVzlx-%rHv`<48Ya9pSqX zt_{-9zHGbi1iJ3qew2goWtZ!_{V#9$Z3ULmh1#?kUJ4+p@LFM;w~AONTIO{0Rs>fU05++`aKOK7664I{W(nc zopO3JO$5;fE7f+D9cWuu&l5-;E_atB-A3L=s zZ7G!bgJE=2rQZr<-m_)Duw~K1GH<(Np0H(dn4l%1%$iu?J5{7Q*?V*rd59y$5=aOs z#7mpA!R!GvefWUH-kL?8VPW#!24U<$zrkQ)@WhVzvdu%m-5X+zr=5&OZ{x$ILTAbI zOplAlb)|@qd6I=+;#IU3G?ggz_^kfRb|8jL*b^l^#}R6n*&Q0dE_Pv`h_Au;*T1X* z-}u+X0-0}Jvas2yt9esjL^AJ)GT~TR^rAvomF#0awr>qR`yPD(gb3wG9TN40@_X?^ z1<6A=;V@V!=H64^>wGPMXGxng1- zfHZW-is?fBPOreC5nj3&wVuf}zU+kiP?|a6sx!_Jf`M)Vxm+UXj_`5af zP?F5#Q-$xd3Y-xMZx!4(dm|BqeE7aKmv%06g9YCq=#@xd7xj6x4(JuwH5B$XLm`+ zrAsnguqpse;-k1?n5VegiEr;jMaGH*|CJyPvmadl0`L-r*vOJK^wBPAbS>fwa;Ne;^;wfs?&>D=$l?6Jm9s&LX5;mFWBdC-USlx%NU*s z0NR^8EPValrN7s&e3+!Pb=|NG+`riszY*Ie%t(P#L4mS?a`;|{}|Ur@GfA+l*LlZPP0YRA7KXOWpz}~~@ExG|z%j$Rb}QLZTfcnv=vBOXDA*ubg3p2P^WxSZfWJ1E^$+4* zSlpT+Rjk;n)zu5ur&G0yw7ry%|DrFAcZ9Tj!mN`h4hf=<<1M91D0v;xWki_IUp5 z$>XnlGF$fDu!$IxiQG-aM)-$+Fyeo!TzOn|B%bl|nvHV!_kTaRVqxdb04k4npDFK+ z0eHtq+Xs;!bFZYg&GKAe}XLg+~f@=23|44qJfD&6%dIJ zUwi08Pj~avFRIFE+t|-_`+ZNR*ZYh>YB~=yOP*dhRP~mNfr;6Go<{kq+&Uu#Ofblj z(w&RG*K>8a;pbcp@58P*aC=#=1z@(`HSO$kJcpX%0PS$w`q~fmjjpz^uVu!Ti&Znh zV-!)b&M8}Z%|hIgF4<;Lm#x|LK&yDjLw!tHp=-BEFAu-NJ`MS( z{Kw&(^*H1EW!~Bw-%2*5V%u9R>f-uJ1|>h#QB>5oI<)q*t8UgSsy!L4+j{mFOHmLJ zfNpAN1X5n@m88TNt`#iQRfb4F`PtN%bqg)j=T~%?)h}G5Cb-0ILz>St(c;~eRqqum zzm$yG6AhEP3Ykx1X{>XWdhFr(#L7F@Y*aNn)|qgz4rJR_yw(iOYK54rb7 z`Ef}?*6p6dUvz^=?9*f3>84NLVqzkooO^9MvM*P~)xI*_y{T~h7Vqwg1EY(2x1*D6@Gur};WfIy7+P=8wrKX|WJhzY zkZ45n<^ICp`)JhNSW|`aW9brk^d(6UYASUgais-vSNw8MbVIOLluD5Nql=A2?hr@{ zMn6_UQSCl+H%q_0yof6LcVP#9Cuj7hYtI9yK{cc1!GeK}L!ia}R9sOWm+trFSWAhF zfs?@!hB;zJ4?FhRlutdu-GqqVQ%|?*&IpN^)%`7z#Bm3{Rtc?dSR`0f_BKMfN)u;7 z=jSIc2|Sdjd6yx)kTHLm^Wx)^U+pUw_f^$@PX${1+NXKu)fCx>6b;_#95aT=&U}5g zQT_e!B8(MK-8(4$wfT$EqhNe1hxmNY?CY?Gr%6B14&x9_*|YvT~W#oY))9_6_V@J_x#~EdWT%j5=>g6ftk2TY#wjaD|{@}21AX9p6XUm z2|HK7bv3BAVSXb8(|*sgIWP0WhjrYSH%njS-pD(u5wuJ}9$||({^k!5&9z>s@!}AO z$u(atFe}3mW}T8#yLCaKl&U;R;xJU*LjMrG&GqF;h2`@V*}IwE6+7?pM7~^-jE5&_e&qn=E5u2yYOEkdYM8D+8s2t1vi7T&dN6**Jjdz70V` z+&O1^vf@HW6+!HHi>jO5V*AHdj=W6eG+3QDonzYM+Y@97}ADGCxpv0}Lx0S1S^#bfeVv{VmnRT&D z=+a1SPG3W8pN(8@QZF2G+W&Ri@a&{XdPI|iYu;_=%y~Xnp+3VdOi_fR3YUyOTJP2QD=C#oL^&&exU-!GxhLvRkDo#*d zeAMQ(SsySbakoWcdIomHgG(cjP8~el%!)!YOv9 zaJ64P{4)3P&C)7|%*971rpHf+=YKgBbLH)6C*!+s@m#QkfpE#!8Js3VU#5cx1^GPb zTbjG+BT$Q%c!YJo6oAZuIf5xZ&!?V%G&A(zB$%!|HkNlOU8VwN@bg)Ea=Rvs!@SC? z*fv!+6-NrBt~8YYQjIhnfPoqaiSJP)Lxr2ujn-=-P1ru^TpOZ{L>ng<&bpW-% zi~jfF4aeJ6F~Yu(B2!XbO5q@dh9T$mB0&P#*c8GtPO!E3qa}DF%iKZ!jyS8cOHhS1 zl3k^L!9Tq$LcB>Ry(qbzb^Gfge^#P5p5a)|EZePN<>C+jI#8R&XdVVZGVGl0&Y;^4_3kLil=C zi@}-t1<@5IGLeKA@cilz3LpVQ_AlIvJpc+e&<8Dkg3dE4pVORd1XIWHRT`B(9KYj> zg>nRV)jo)ots?^L ze%u0RD=|2KWdcD~^qK$EpMZ010q`0u+Gz2SS$8GE!sh2hL4#g)R$L0rj109#VG#%Q z@BFXKA*S+DwEjHRriJ*6$S9E17fiDva`o?n7v0jitNHYk{KbzI0HMR;kB=vd*o3c= zK)@S|;WV%~8-j`jLl#Li0~845_QZ_U{)F?ewqSxVkI7<^&NU!739u(4@<%LM0LA45 zxOC%pDBJbZN0V8J{rw|9ERhJGt{{co=bXtS*V{R!+q`*=S1WV_%zKeRC_2AL4+Y^v znt{at*hH|T#`7j%3lb9+5CaNGT4ZDHJv#X?chl(`tVZZ;iu|g*HBBke=E_@*9Qm_J z%8R~yO$HnRNTuxP?yFt%WgHIfZG<^Ha1lc0ks0;@tg&oJ_%SvaafQw%-t2=Wdz1Q< z)$^z?eR#Wa2h>62WPzjEF=>&wTpDeRP!q5^+m<{J1*GdK9WU!%Tx;9V&|(7|--3G5 z*-(^;rnhHT#Zz(yminI^q?vNtev53B*@Wf0A#ow5} zz}XC`HQGic$yAws4^^ZK&(YuYoW`gtaDsW3>(#OMLESna_{l1gDGg;j<_}!{q#;XB zvY@k%q^Cw(NzvRmjJ4YI#Bb4>Ij=U~b}_#Dfc|s_!k7ls&bo1UCMGFt0)^dxtyc|b z#_1d(taok_62j(9e;PhR5kZmR2F4&%mmr`S;%^-0A^Mk;dXrU*vrpFWp{Uapf1ydJ zJJfIakibuE>@35Hh1oWP&kd^AH_N*4a~iv+9!IcBu|8Qdbo~b%Jr1!F*Lr*5$jVs} z4o3hRYO@<5qDAfP%m{hGQB37V0i+>Gm|PZ#K;jkwa+r{%{mD{}c=M{F$B7CdA<67r z5YV?;1P0jN1raYbpbfJo&R9c~c<>HT4a4p-t`68%iY-nJbxZY(C&2IDHj-0b0pey^ zY{pS4Yd}yHMG-Y1%iN(ht#q=_bY>(1X!|676cAC|2i*rCV^|*`V|U2@t;*)ZcT1IF zVfj>63?ryd<*LGMV%0T?k7v)+b0Rsn2BRRW;H1RD1b)+HDX`=O1L)g8C8XU z0O6S)f6l7fjl-oQNpZ9L_*wykhiU+t8O*@;an@Mep8GAU6D!MQKbQEb zN<>S54&_?30)>zodX1b4Ae^}*o+A>x#!Pmc&1I%(lDRr>-cCOZ~nrreo&-6_r z(k=HXl0IagJCKPC02jul*$F^XvZWoJF3mM-Fry!fRX@JKD|?xp>C>!WP%Zr%(EW|b zd&K$z!w&o-$1FOnw*knagtfocR8Z5rBeWaNSsBH5Bl>!29h}XbX}*bIrA^=%w+=MX zATSBQi3Nb+!x>mo6=s;ldOa>6A0KEG%)i);t?00aD#5FB?m%wv{9lMNmouG;063|h z;VdWdh>ZSUqk<1LmfR$DK?Y42buz+g6~q!l_&AqnHI>7(<8<8}$mjbc=suIfz_t`i z3Ikh~+Mhv$kiSO&#hc0AvLxkV(7*ihQW8hd5m+M^f)07DO2i6@kRuDI9FXBDuuUms zl-CLTsE{18NRR0Rr89+o)zz6-C_bb1{sXe z5`m>8z*2w%Etl+%poobmD2%^2;m7=$$F554T+XM8Qh}hvN$UdYgz6g_#G3YLxUtQE z3qls#r{MNeLVXI`Zko9Gb-z?m28Ef>+)UVg*>!5j0&qQ^aT^vGryb~AWkAvmbdF zd62pZLfn^P$x5;DH%}|5VqQvMd8=7pmGOV`r0xWFn%ksaq~le2px7XpMxVUC2D;na zm_g@oNo=T^0n$2VTXh_IB*!?4NyBe(xtSf*UJ^e5WH|1E;C@)K+0z#I*cWN^j>@|- z@zhU8BetB~)SiOb)z*4I;$A!hS{#Flyw+1A9ru{OnV4emmjk6y0MSMA%Ma(&#xuRO z5LG1oclN_*uT!90=Mq!ELBYIPqlLft2z&-OzN_9W&$SnxB{12Wop(Ctu>bMnH*LFV zF7G*q?wiCETfqX!yl}l!0(Sr8$nz8?qMPI%gADhsY5f;yN$;IlshE>@FMEg>d2}g+c~EpwNuya?c{H58++tvzE6?p z2o*_n>|m2cb>)o!o`YX*Nm{!HI#pp7*`iq2@_Y>&8&6yQSW8`2Cq%IrB8^!Xd`<;7 zdzab+a&@>MN48w!0EEzKWqFNdTJJFp@aWvi$@@xNgZ>Ya<3|P9L|xw8_NAuScCbks z0MR>b+*qJ!2wCXp{8S%}t@s?_B_(WUc3&rj931gFLlx{C$3~H_M8(?gqv|)b>n2+ z5xmCzQ3k;0yJOfUpeUSd<>^#XHg6vEW~CpB!ho>!tjwdTP4eCOW?5P;2z#9(gIN$_ z>3Z17gG^^o@hk{HdU4%ZaLqzGBrv&~lkAZ-Lw%vAo~|#I{x-z_l?vBazfOG@TvcvX zXf6kc%5Ew`0ZZ8NV}Zv=D~IFcIa;oBSo=WhHxkm>4>ay9-;wh6X8L9x&yx^jDHa40 z0f7d|NP}Q=Gc$H9fGrmSD2D8QSfF8sd5TGzQGp1L2Y#7>=Tts;WVQB{b(qlOrKJW}5e)4rUWravEeu-uc7``CGCEyGH? zQl#TRmn&!KX@Wuhc>{LSTna@O6eL837gJe@EFU9CdR~(|=3J2d5LyV(s1azB>qnRn zeuCnz$)g;fK#`K~K%T=Q)VwD_<)JX4#WIc+=lf)gPf8>`nC6yMF>{h{XJhxyo?myw ze?3%v$CXz_LkV=>)E+jKTo5V-m_9nd9}?u;6OuR@DoLD}FI&g}uokfH3>hNnOHCQM zlnfEi;B^~>JmAh~$VH*WiEDti0>GUF3ic@F;B1;(P}X47j{e=4K?SakGHSK@BmHnq z-HW`lZk)9zQ}9?eId~Uxf19=s_{ZZzvkJIkJ7sn~R=;c)=fWyKv)7)^X5|J1mivJA zBOhD`-j%bFK!*3I`=QqdBxXPs&9aRpd-v=2yq-kpdK*>E9PHiD9?CZ%*ZUvb=!62UuR?N7dI~OTWNeoIcnN|FR>CVNQ@er9K*nW{Gh0$dHbUAS=&t zNB=&UUk4ogISnZX@a+Rl4N`h#Kb%w1h?Z}(`LSO`N*nqb_t|3mT`^~jmC51lZQKln z>uv~=dZF1fvZsuy-UDeH`OrNYE*g?V_fHL2tSOkz$)PUbb5@J=oLm)cf(sATf;ND6 zzo4@K78fafCMJXHC*M%C$)7er=h95W9-3;U*?n}XZhM+R<<)unwRpl0GNb>n%I6^HKVH@bg(x=3 zd@$LqSvFtzt9~ZuO^wVb{j`gf)Yi}6qt2)uo_&;;vvVuDt*tXH)|az{kM*-NgR*1U zA#2-euhrKFcoSn0RzPVi8z?s=@+P%I@7K540$Uk?OLMs2sc&3G)X46yYB#=@s=tPG z{8E%BIS#s2K@pDL`-*!q&S<@sps+S7tW z(4*9yK^nN4uUHe(y$=vzCY3_swA8RzAemcjJlQBAoum$0hV*&7EUbN&xZkby+B%2y ztQ9=Uta>M;VDdPoq}8$hOrvR1;0Adm<<+Q=qM>)@elvprIp&qQXkaK1He&;tTd=($ ztgWaA(uLk1qUF=!Aj2!`O23zNXr+8&bk8uXIvcNHO;9EKg&D2bMHm95;;Qz%{lz=b zv8hmySM{aeTa)kjsu#MzdwT@+EP#d^?I;=A7RX(!mgBZ|QBib#b!cw%vcE-s=!UC4 z&{^4oO@UVw?AJ{Sb=n0QKDWTKiLaJ(5}()-=sF%`fgGdlBRz?f-SJ6SN?+rlko#5J zTaFh{TF#P087*+W>zicR*ZRFY1iC)vd4MV{mGDUOs=|mN0?aFe_Ie z{ER$nU=@mOW^fadW8Z4=L>2NnZV$@3dJ@an^HYvR)~D?BeY~xfZW%V_mr|uqy9!-+ z`}`T4c+h;A54cCI3btE6SLA;c6Iq>aSGJbSN%Y3z%y{(%eb|8J2-a4nC8NM0pACUw zo(YdQ;C6I7aJgmlJg}pv_{9S*h5Cm@ryrU|YrT|k98-QMjO%8^=eS+(SqV1PdhVE` zZy5QVE0_gX4YX2){L-bOu@h!zauDUx4oc-15STXt> zpD_Xfx4R{-^)@R-^yVb5p}+T0bn*GS@)E{8TkMl3$0ly)H-dKvl{m#t@iX@f-wKG9 z@9+b7b;M=AaQ)j)mAW%8-Pr}Rdd}6Kc9dHr^m>8p( zg1{|2JU?VopkOXp!pf#7O!yTPJa+wkZ*I&{^||SZz*qu($t<5>XN=dj(;1~0QxWJN`H&kcu$()v(*Q|KMW>JErMH$;N|k4=?=d`5PHSAS%6fZ)5d3SAtWC6 z#e0d59u@mFcZu{#eX_DKC}^RV%fmvDs>A&JxB4piQK3DCZp;qOhc$*owXYqVkAB6s z4F9oKlgW^F^uCp!oua1QPk9B6HfV^OVj~4^`5xW(=ezs|Bhef3Qn_P-8>F-1WCP{^ zm&6%(`)sD=`{z#?JT-h~@*1^gbkEqT_@-ZMrnt%obTICXQ8lR{g*5bv_u0A(T(ZIJ zd&f&7CXO%M#6QPy$wIg0mdr7i3xQ&jiBg9GczpV_Lh?K~O$N?ByKJ`M3r#{b{^Q6` zOwI-TjCpCixs-J=AXOp>f#g2-5=ppUshxI&1~yNee2n}gq35m;O*NFbE+Qwj)NG+I zHe=~F6h|=x2B?3jwRz^mCej#^q6k@}x$K`U^5c4`H(ek+;vAeLD`wZbZUsLXN??{MYd#rK3~M%J;rj!xpO4J}kbI`d!TJ4npKw7L=bn3_auZ z1kZngWG#)XfKZCqg@-m%4MrTEt($4)esHXny;Z`O$U-q!29;hG$GvV9+4eVH4$wQr z!JCUqN*y&hPYV%LG~7KtAps^?>KEX$-JSfa|0P?iK(JFcr15|k7Cy2yn*a`K6veJzCzUXRIsvQ7$*!<3wL(1LYG%Po3@H;4R- z5{HAF2K&e|#C3?DtBz#`WIW3>&cC|zTQV8~pMUX2OYxYe#{0{!Gd}PlfDr`b_j{a^ zynV>>jo6eraXHCRp;A+Z)s7Y4^)K6J`gzt$>)i!r1*6z*)Q&3zV`!@9+H)gxFQ0L_ zpwrO!s_03a@2KFc^Mk0xO3~LdEQ$s=fA70Y3-GlH5dgJcLhC=nd`T9GU-Sfd;&=@C z>(C2}P{&+ z@?jPS%bX2J^vYC>4e1q|Xin7{xtQU3Ei)n2sPEo;AF69I`hGyKMM&>#&xO?$smssO z&>!0krPY&!I%fI`aK7nbe<~h=F<;L-f`f~xOT%Uln&P1tueB$Yd>9m<#CdVPH=QwZ z7m%WKpj)J7Zuv%~Y1!*ZdnPOCcFge!O@?R5Xf%G{4%og(etWo}VI6F_K0l}Y;$gss z0dLr^+~b!zsf=_Yd=YVp1eM$b2T5lp zF{fT)C2W3^mVvlPfn%(Z~ zm~r43XZCv7BHAEf``pdi&2fVYCrpvumz@ zJbeuwxNUxcud1^5zusLnTYu4BD-IQ|57f42Ou?reDc3q*y>5H4FLZAZ{5UPs`bWZ! zWJsei>-buXFS#ptuO>wqyTtkF4Vf4010qt&eFchHb7oI5Ne_Qd_OrD!Fz4{K`P}JY zQ}`}Jvhz(%#mD3CQ_8*!rEXPyL5IWXVy^~?7|;LrK`M^V`v~Rm15}#J?5+(Aplk+< zoj%5o5o+1{BB6g$KFAg`<&~tRbUr@RWOS`1A2y05+rF#QOo>-^tC1P zM02kx^K_`$^xL6YpX}e4%QUXxKhBOyv2+y(S_;Em=|(w$=|yPuZcX%s@(#HP+Sr&? z#OGQO{tf^c$y-|>l^vA2effb5Q)V1kNe2tYh`d=VoOsn=_qb9qk<#i((c)n<87XcW zsqhXNGx?TeYQ}NzlevR8UT`I`4l9w)?FaVjUwX)+BK=No5yQ~^k%f*vXjW@ zFGcnmyxhUGeNi=wqi57mOHX^x!EWOV`|l_4V>`D3?Lwr1o2%!e?zt0PRqiu;k_k*2 z;b-odeK^+Z4{sT2?Z=E{eDawOuetbIk_>n73MNb^&@l)|!o3ncHB3vh7ebPka#{JX(x8BgZf7@NwounMy2nfxTJQ-5;{y2 z4~W=pf1L>i25rQbKX?>shg&u8hGT0tt36>!k@P<2DduSxQR09cagmH}elL+YV|Q`J zZZAL@sbFZ7b*HobWzpjnb$fR&-r)(t&QV+SEjdevCNu+C2P z*0VwN)ere)Aa$h>jeQimH}l{xSyAV_@Sin1A)(uGB4=Q4rJhe==*rRRghC>r>>s`` zA}Q(sU&92C_C0WK2>FgFmsKOo)TW&9WO6r3sjwF1qllQ&Y_(A@?{B%@)cgMHTpHA& zCv1*3(^W|JW;*f-g2YFC33U&e!=?DBmucql&&&ck9h4V2`4kZP6rZ zWWEoMp z3f)6HVT4*PRNY;?hL5}2B1m?s{`o(k_~xgEl^|EVu8d`hI|cWK#MiO%{EuLtLGJA$1}#*AMbS=6|dd7 zcRFcm-Hd@CMK&{)uYsyfnX(4w)WFQWZw=^DKjdcpxR4MLRiwC&D>QXcm1A4*Gq;0; zv$8AJ^maQ_k5Ai0uo;vq5y5qrdM3P@2?j_IODzIUaqivct(3cCu7zGhqk%e<6DA<- zO}rt`7Hn5eUO7(269}KPBNUeDr^yvyldSPCX!!1c&!a$Zm%V)&QnzPYn}`g1>(ZH!JF0;)=;QQ^FJnLlSxL<6~C!v zt%Da2A`930IM0iSC{a3eyt~Kex>=C1i?G+2>1Z|kzTD=Pj`Q6eP9dtc`sH}6K)uj~tk+?)0Hht-o=_9Tm0 z>wTqZUeUrlO$V3JdbNlITiTS$N8 zk8hQ|H2$$BNu4N<)}g4FoB*mWg;9bkG}*L0HFMT!YUtxx8q3i1N-r(KOecDgLJ^XFGcXO^LQnR z-t%W-mE?LUm@IE6TY^EK#!MscM>Qb)6T>gGRw_38cX3Xq|Y%CoQiueA?tgPs~$w5B-Zt7kIffTR=V?oVx%iTKhswFWBw#muu>v3)=d$w%EltiW3a6ne?VVZ|NFwwyAk8WXfhr}i$ z?e}Bae;|Y5+M3ParqxKbQpOy%MFrKX9Um@R3<|oys69g#O2$7xwA>bnrivY|Yo%nM zv^s106`W?Q?^O~#{MaG|(~TNO~G6ql;qkNR_{b3S1qdy|^I_e>Qe&q7S&dkYRfDlg+ss8#|F z5?vQqzL&^wQxcoN6NR(7E~Vc@k5e^WN;89f{SiN$)bmhx zhS}K}_%lbYO1SiA%tr&_$gdayx}?vMIO>Y)8-rdAePRHf=QAiu>6t%QU(`5WV*FRb z3#4`j>we^|@PeuM&dwxU?zB!g_FjMNmEFSAg8=b6SDdvSHLomoYg7~yxw#l?zBr2mrH=395dgg9uHbAnSyWTG5#GJpqAvYZL5 za}!s7Oq)t_gIozc4Hyy6h^8CJ+rUR~YIfyHGWP5vB}pML^~wSopx#Z0b50h+Cqs5C z;gSLMt_|aC80D;r`XbM5cW_uqs{xM$FrUOw6IX~U#!t3GN{v#!mXG37q`W}x8!((H zI84R%Q%bog#=G1k6yLYZ1JaJzx56)43#rB@dVFgvIK*jtHwVzd&7cJ*+;J}GNA+gH}r-#`tfh-S8tQRv$tFm8=XS(5(8rmnqOK`0Y#kdb*@!%Y8t zqCP^_bjU+am*OWHBvyDfE(hfjZv^3^%!P~~C^uhioiaHQE+4`bTI(a`sP-2ZQOLD5AplaJg zxOq|Xa@fHh$l&T(a=?QJlNV#34dxK=@`Wg@)2qH}8f2V93eW-@3%D3cNDttXRo+#^IN^jNVj-V~d1eE@g(|L9$5%L992tE5V04(gO zf^wSD)m|C3(rpp$W>wG>S|AdW7bt$ZhqfoW{r#&!@cE+(j=Zemx~|Vk^*a2{Jdr7RkrUHeqX#m##CLBure<#3_c_irwjjb8`kX3Q@9!k`X;wXXB3Q}0Aa_}06}R8OR9kjhy9jom z2#5uy#E~mbfzS2H#ND-*kTof{+04z6!(|F6~{N zR#x}M2CJAIDxoB!Awz9kJ%pN_T>dWv%O=uy_~ZpYmV@z$%=_<2k}Mnu>E*97uQpFM zth6egLz9N|j*Rm@Y}vU@2&F^fk^^M8J-~To9mxqCcU~>&%C|3|x%gRHfS+!~B0))u z!R18-JI~S0Z_FYyJY>$oaH;+d%R4s#F9NdpZ;#uk*vTg+ z;0V(4tG1~{ipZ9keqTro(~cY`ikp&AIS%t>mYRUBf`M*o+iL`wbZZH2*_x05KLz)i zsE3F-h}cyRb-_^X!{%w{D{%DS4%A{l+qInj zB<^q!JwL@Quf(5@o6ig`!OEevaT&#`E8^ELpI6cY&Jq!eLZ#hAlbnjI0JC1<&Kl|7 zKJwf1JCy(G=C>kOQE9G2HSX8T@XisJJYC043H4ziV?(e#zQgOY}zvzl)sDY@BQ#NbmZ83EU- zynAbQnA0sc@4fnjyjPxlC?tODVcLD5;4MSS3a}`o+v0*8QFJ6o*r4fKp#h<0w|p*) zKMw)+n2=Y`j&d@tH2|vmb#d!MwF)e+F}v_a{Y^vKJX6Vdt82w=3+_y{DA6_ zC5&giVd3JuRp*I3xV#gQmV1=cbmtwE@{Y!3yut;q zx229Q$E8v#c+4FM$FEemM_)ZgMCiBe89XxTnV4a<4|AJzm0feqA12BSe6+bv5t>v& z;~-+(QvqmrD|JKGJ8#eq%I{3ovsA`iws-GCCt!!IFCUGlsLhC~HgaTiR8pc1`w!?p zIEIU!&VSmOfvDP%9%ps3QUk&(JXsI9bq_CTr<32ES0wTVI1_R?A}O)#muWiH6}JWd zal(ye1=YpO5XIC3RFwnO!eB=jK@9rqUhyL0B8d(l|*~?cf+!A=jO_Z1(oI zYrOAw`0OO>+^l)49MxglO(71q8xc2SAJ$yF3E9uEPiAmYca|u11(^Zk$wEIQ#)G~; zeQxu*6jdWMhD#PqY&GapPt+8*)VY}U;7_$$+NIMT<;MlQ=S26_Z~yRwF)w8~_e_az zt>|;&1|O;U;mY{>yDmPstyuXLnVH*i#p2mrw}y%!+bd=!RbLL|l~-wc=j1AoVKNZ* zh}=i24OOb6bX8Tk*_bdBo@O<5GyOOCU*%_>%%r--+1b@lRp-s0!#fpN~t^y*XAI3!X zq=xL#j}$)h#*K0>pp?{o@nO|LVFW(;Q^8z@7d#X^#^zTf_oFYW;0C!gY#kBfd%aSIieJ*T^BsS)6(7Ki|CY8F zLs9I+`0t>BV*swmAg;(>J?c7Y4-1_DaWDAbjV3;idX?b50%`%jAwJwld%F=5w?=?T z92>W74Sc-3f`dGk9N_xvWy`d`?&`{)yER_pD@eC+>&4*uv&+IFY1{yYSe;xg5y-!Q zLf-UMQjkafIioPW5^P8NZ!y?PBv`<^iua)+thqVJZWq?ErKh9-cWL#DT3PzG$Y1d2 zXVfzHEj%#)3~YfFRh)|wY7Xkw5MpE$#^YoES%I&Ug-*&?O}|2&!cjYdDwN1y+pA+S z^*VMkaH4NJ%35=juH@aI9$|r9+&D{whL=*k5OKOOOUP|@XaYrIGI0CYrx$4#smO)X zNMj=PmiQ^mDKx)6yaF~q5kW!d`+PdGckuW7q8otVc8#k=a<+5_X)G!VG{CNo^t}jC zRg7OkD&hEuX9iM}1(Do(%@17~{x4D}CH8XbC?ZJ&?mc?4QUBc_dEqgzA3py-81t-_ zy7)uRT)j5s;5_Zf*1IB02+)$N&+yb-9#>*~MZ1+Wel0YYVx$B0Y1&EvM&et4<{^!N)CU=s=TvQ{1ia7QXAdHWM= zAY~HVEp9u~;S&)4P+Wwc?myMNYmBq1k=A={`~Y7l6eQfVq_qI(yuApaGm&-W&^j#4 z#0e7Ff0p&IS*<3rv4(=h%7pNoDA`ulpV9?vVag_rG%DcL<60k`B(8o|>gMNu7;NG_ zfyT$w4plvmu~1Z!5!s5-t=UB#;VbA<=$kS~DRQb(FF;yG_Bn|gKg3OBAXob!?dAMN z?6y!J(Nn&-H&BsT^S=l7yQu*y4v)!Ng?c#8rIViP$g<~UgJ_}ukrH$`yzFJ(I!x%ySW*@FAwftcW z?!FMNQB-JRtcFt+&dEB#CBn%u39qZJLP+oy>su}=M2yC3D6RAVBjOZO6l3BPZ!GKL zb<8r}x&^nxfB7$~BFm(3f4)}=^^g4*mA5w(kGr_<;@0qAa)@{K62Hy{&m78_LV&^< z>e*Q6AAm3&0CD-w1CR+_e0x@B4;8W_B)I`!OYwrx6n-sx!5_bnusqLia~>F~0b$-f zg63u>C@Khs-8$|2BLbsb4VO4{@u;d*dh)#ciS^O)Im_`YHD|+(rd?cmF9eVUqi`2G z${B+r=5H!hVi?H8jJIMH-Y0#r#~rD-BTDYSjM{=Ct6Kqcn~1?WXa8d!cS~Jl^G5W0 z_BNAme{OQw>a2XYJMFggx?;Nj^yv_p@09-TX_L8>u81PP$o62-Rn)fmU;qOd<;%BU z&Z?W<_nGGVPFJ66IV~B%$I`fnKs;g0#RwK78fO2w)^Wi+(ZSzpE5Yd_ySJ#E&hzOO zt#E;`w~EAyiFmwrv#Xb$u-^2z+wmY8?;3vre-64O=K8c7aVz)xcUrk{h;yjxwUCSN zN%~P4s8JM9lZ~f*G4clh4)=9U#fkOZcl=Iy-fhDNBKISPV`=T<>1~%^DC%y*lJ1SP zOh46F?{9Ho(<^;@#ql8dcxXlXPMk*8^flTO_uc)wE|)6c8-81lqh)lQplC-gh9Cv# zeee-k20LH-d)KSx^d

CxiAV zDy&^g6C9>}P}Y0ZZ}xY6jqN4Gn_>sWMG2G4tY_ zD|m?EJV0UFX6f?}ZVpO=p32a`dVn^EPI3au!n6zJfignc)`09o$f2F5m>tz#jfy;X zrFxqKmdr?EK__00;h%vT&=bDcrM2Oxh<12AW;!x5@(^y?94|x)>DHnl7PkP`xM!^x zm!F!KRns+*^d!2{n$WYyZZP9$JuO7Uv?DUAz#t{EKFh*1LZtHhJ0Hw z7MNkin4G)Dq+~ORurvHCx?N9&0}uV4(?VaEh8y>OZnu3DA!O2oApr9i?s>epmiFIH z9eF}riEtt*FZ%403A=%B0noKq%$+=te!cyoEM1P{cyEOENY+I>4XWr2X!7o5ae%eY z8GV)nrcm@%wu>^T3%W{$x>-!5hc&+@5|~j zz-4Lu(H>;6Jy`gh(nf%XDBZ-2pZPbOU1@vol*=eQliyH8akX7t#FbE@1F5~HZmD#L;;`w_Z)X|l<~UVK14EE`k^)T}gLYG;yU|$R%|`&%V>k|U^+&^JaaDB{putIZ zvz8jf$@HxTtnsB-W|Ea^Qum^+mRQUG$kHN?3m$ENZN&Bm>;VSbnr`pr#j97qBg*FlBNcI^m@bzpHo+GdQ~Ei|cJL}7k^G4kNk8US(?Xvw|j56jGOnN<7n z-2Pz}7df>>q-S0R&d!8Ll1LNJ3o|Xg`$YvnJ@o4pR>eE`e!r&`*b*SKJmD>`Z^K4L zb6CEql4n+D0Nss&HW`G~J~)p7r-E*KuyLFzZ~N;{pVO2%=?6EM-jl5JYEp^l!pjEx zMkc2(V`iCVlIN@`0Mi^NbD54qv$zP!JiAIVkDr&3Yr!vn9p`mU}Gag8rEfxU#$g==h0LXxoPWI2>=ny($rLlXUzMc?h zR@BcOBtN;4;{#DjleO_r3ZU#DOBlDC0!-4luSk#Dq|D~7=N!Q%y zUXy)&JUMKCgBD`&%wBeUJ-{Cgaqv$!OHMbL1Q`+2-Q1v*04VD9wN=()rhjZ$Y!$@S@rpoBH600^zGK;OlpNP<*CZ7PU%R2Z1!2W;=uQL&KPKPhG?Gvdr7Px|Mvkn&0auybag z@6Mu5SZA>vvfOmDWTzW?quGK$SXzDYSYBqz2CmFHYbz5iO^4Y|bitwdy+2p8n9GQt zlkUIUG!^Rs=Pfh~&|foW9o1qNZ~x9cRBnbF=e)RLI8kOj6_C&LX$3S5VlOj<~~| zXlvOGo{r9H=K$}St6wBzV2Ci7hT>OQ^MUV!#SslR>>lQ_DA`>A&g~* zT8)j zd)u@IOf|B)@Y8Lp75Z#F3$Uj8k9C=oBh`?*X*>2JCuru|U#5WekD4R!Sna9u?!E+g*a~Z*IznHXN z1+lE;3%_*2&m3H3s{6sH|3MM~W#13vr0qmZsb4)Sl>ClZcZQ#`Z{$Ae)+2nuKk-d9@^{J!( z%+ElC{X?m8d}i>$->i*4%*k_S9&FwU`_&c(`n{a)KslQ)nc-Xy@aCp&&b%9cR#1BU z#;ajb3Pt+(a>gRcc2jsH&3$w01@~~IHF$iZ;<}>rYdj$!=HJmTXY6Y;!(%g#xus>0 znH@#zg}cudbZs)1({(mB;av%|fchPNQ^C-9B{6MusNqJm7 zbA|VZmY+*TvV6JDKCn9|!h_2eyT3ixI~Z!8_yu;+C;-%d)klKpo3jbMDy}uhyG|doH;jJZ+I7 z?MG0zV@Slvb_$<`&TTzdsB(G!uF01b6PsPv3d-?@auT!X+V(<@vzSvY2NUM3$kuT7(I}dBXXHjWTXn!(BF+JXjE>gqWa6OQ>V}2qm-AeGta!)_li^(jt(w&3|Vm;xB=^fmSaRFc%Z*wDGB{x z6Qa74085+1bX$kGMD1uRuPyGc#I!AjV@1w*@OFC&5U{T~gk{I*@q$rT)kZ?wz@K)RSSwCPR*DSZY81*J@~l z_Lb{Rs}iYKmECU6M52Q*Yx0bGnyQEjH517oumER>V|3OYbUugH!;V2YR%j9syR`zV zIEB#dB}ga5UJAsB3RGegGeXW&i@w3ewl8a&Dn40;?m}pyG>5dzVx1`}0q?L|i8{?* zC(8;+lWnr${nZ^&tZfq(Ef`Lge;U+-3mzNl-SlnY$RhvU%M=PQ^cG3o4|FOO}S(oby{dfrJy z)`TwBSA4$aEmcsuH)OAJb23wXohn5Pu2SgYKRVdsnR}wkNzb;#{Z;23OY2vLjs7GL z74K^83wzUVVnq*q|8`WhC%9U%DSqE3Mcd3mNc(>b#5LLjFNTtT5=J>n)=@v7z&Ak+ z*tv&tqr=%Z_8x8k6C$iO-F?9Ay565AKN`&FdB$}2VJpZi14d%bVe2H__sL&f;Cpwv zpEq*zfAz^qWQU;2g1fO?{~Pdo6|PC`0e-13T~^|r&0EImY%Nh(+cMUWYk}Ga`;*&9 z^2K8dL)I#fo+Om=+mPM)>s*N1sC~v-7I}_=y-kLiGCZ?`W~v_ChCMWK_AO4{=y3RH z5LSNdA%UuYyQ_znxL2c!7-&C`kDY5QFr*$pr4(D?zr1ug@lnd*kX9Y(ESuzCej|#z zF5h3A0lLuETR60VUj|4Pb+33FGxUh_do*OfuqL%DmLyGy?N@I+lTERAQkt}ep5|$3 z+3z2AX^dqWXSD65YQN+Dmh+tspOUs^*mY*VS);9<#~o#1iwGdTDI;Yk zQ%5^szu{qB{jxt#=iLVa+5b!=R6GA1EsHp6kV*e3dJb^4A`d-V?Cr`|{BrPu1N~`d z=>mpL1dA&Rl9zdeP*3*uy^)9EP+4&Qy#rj(%R9Z9`!^H~bllEfXv}D} zCTTl7bSu_GLr2pez2Wp2y!Z|$nX%p4$(g>Bz`bClSA*ZrqZ8~RaSw2hO#5Ed_^)WL zUijKX>KgGlPdlu>xjNgzXqGgKrAr5MFt{zIx^U0jJO=#qs>`G=P&4qAI&^8=Rp!!a z0#~c|^`5WWhKvfl?c;>d@OV6${*y?nLg9hwn)xvYKSfu9yzX}4@&0rd<}QVlUq%ZL zq>=+UzaQS^x=_p;X83yl-FFU7ZSks;Ihm6q4J~2(Hh&Ja_Xh=Fg~g1pF<+kAq2_z!((>cM%m4Nr*nWs)UOg+iyj zpli^cl4AS9Pr*s{qkV0v@}mqf&2=GIBcYt3OPeeC;5fH-B^V;_^Gc#gZD414pAilC zXHfV@ZNP}>_#DHu3YM(tl2|8fiH^@xJb#SKElgPs?BBZo`8KBMcfmkjUyqI5hf$#LWLV`)bWWCIUj%H^4Ce{lU_dy85m*zr- zv01+p&uMICNY-ErOOh|T^hDLbwEvtSxc|zllB_vB`@^=Ld3bgu&UQ{?MxfC{pDH0i z+kx`-K$13To2)Yp2S#GR=GXePgmiV6eRuEUG~x zxKO*EJrj|$%RQj&V$M(hwMONX-nt?oppQ^7tZVvYl>gFV;2PH?xcKd>Z37^n`b*Xo zZ}St89okE3)-`LMTtzfkepypyB?3ZT0?Q7lpuw83J~fQ}&b{%~4qqBx ze7cz2u(9xU0&chV9x7eJ$hi+6%xK5=-ODRA?CIN{>|{Z4ve527qQua6;-wIoO$}coq_>lP8`leItE;jyUmFE7%dwB&dHLC2iy>QAiL9-P9K#V=0gm zlRV5?TJu{aTCVZOD7U(a&_FGT*=vP9e0(`JrA zkiLXQU&xGL+gS>P2E;AtDkKZ;t^r7BfgCRc!qkB%4_FLVsjEh^@4j^zC=B%lD06|X zvd&?9ZtUyZZ|X8+uf4~LKdHmiA&Ct&ij!Fvi1wPHeN98Y9B9h!--Rbrink=rtCz=u zly|Q^cUpgc%kvG9@mjjBDnp4GG^U%5dLG!S!|WxlGvEvP?K; zg(%~{?Ak+eLKUR5C)MkR{nYvH;;8MW^=nNHqXXrhy`c&K zi3@Eu$xeDqq?nY%-@k4}6sdRhU0ZjxPmu9$Q*2cmhdIXG*t0clM!sHv(1$q;>K1>L zuQe=WhpXjOejATyj@DM#Pm)8EAnQb#Nq`I*h`tpA0mGQ4pGaJRno#Fa-E#W3Jmjbh ziAKl9(vjke=tp4K-V(Ugpy}qT6iA`=xc)`;_b30ocy)_3DHN)6l}%TQEQ%d#m8V>+ z$1VB(I{yw2)&{`q3T!K0=@wVK-m%Yx$Z5*0EK+Bd`V#y8)FG3Owkm@ar~;KzAWr*} zQgO@0j08vz@L%~+NCJ?=X_k*{8SHBiG993zXQ3!j6*d1p5vA4WcXh3D& zg!(4Xa-4CI?PPB@Zp(E_ll4458~CQ}UG}L8Q`pvoZV!Ie2cT69(lT@G7|~_q5`yvx z%e1%}M-ui$<8iA5NEg3P7D!bGE6y#uOzJZGK2Kc({?j%h=>z470%2WCaJ%;GMT#}O z2=qIsMxSh)tc?o}g#=$SB&P4A^c&@%l!YXdoNZ^i6tdZVrOgu7^)aBnbB$+KuWf+ji%K^&HFMat4^nlD}^p}tC(x(=R0`vUF(2ydN zdvWv?b*6&oaxki_!?Dpy_u8%j#R8_I7A;pyhrWHnHUy{djFiT6=@uhqSVEur3x;W- z=dYG+UY})?18QH|3>NfIBs%p&I=8Oi!DSMEuKCUCLh9bi0R$z=1Bl6EkV!sBgR~9) ze!x+mX&WhN8~G5*-eg9tfaos%bQ1HXq}+h!%KWK7X7KMT>N&ah!XKTD-lspg>OvPF zGyCxeT1jNnp3;TCp^vdfdcpqkQvw4!X+S9!zN^og|;B62+D!)%<5-GcVh^WU|-`Omq3 zc}1Xv2brci+4ChPRKYT50=zpD-l!@5LzUpEE4=f|JbG@^fBAveS|HNw&6$Xl1LoK> z?Jh|zSU)kTB`^(La#7y`D;Ir0p`DTb`pR}dlAECYV&st@Z?!BBtA;uMxJWSx2K}=i zCUi-w$42X~Kh~LHSok~bE6=upeOvl6xlh$+G{3|tS20mk`p5ML&(W1e3|)R! zvEJQk{iB<_jn}U}a7KelK65n2uhS*@m)9H1FJ6&xF)hkvE8pfrvd`lwxwDqeW!s32 zVtE%|DNqND1!BPdy9!5%p6jjKQrCQp$z}bC*zM{|C(`LBy_fp$?!;^mA!s_rUT{){ zBnP0Ud}{RCMg?8yBo!ySh%>|Lzn^_TjFAJ&EUh2Bmwe#OdVnL{VIQeBfL<~C+J(7l zdUEUOU(eACuCF?T0(^^)e!Uw*qatKm|9G>L{p$6<2l}mUHCwAO_b%)ZItnJHPG)`w zD7)^&sFGs+Xr)CT&ZwB_>yZM^x0iREJo9&5dOhiy1~byT^Z3=M(tA7Ea$toG)xpvv z_RlDg)nUBqqDj~Q^8;wpGtYonLP#9Dm>?_4-EYEUm|Ck{dE@S+&uM)!pjP`i+*>^g3j3YnY>^a7cU8uQ@ZylUA&~Y+e55esv1sh z5lEJYPbh=GsyoZ*uV6SEn3;9)?@jO5l*~^Xtzq@8XOivo1f~p~g zotb{LG{3q18ohk4UJxmM`3T5lh4Fp9;@?M*XPSf&Lag|LEFF|A)h9HI?XtUMG6NRR zTvEI;=#$m{7l2@H(xX z$uM?KZ~K3g-Dg;mefT$UK(>IOg5nC?Tb#Kn+?r;%w*k4+L^Crp16R(RIm!ymof%q| znibBRg;tK%?P!>lw^o+bUH_zqBl87SvxY|9j}+SDWB^E1ezPfrI~Le_4j)ch8z}HsuVCN9tu= zxaBgzQQr`$nH~G}L8#kliu$&s+6;Z#&u6($hQ7g`Ge{ZDsBrt}J+yB&$>`w)+&#yj2eOU9b_nHB z*0k~gBN;~F@wE!|!Yg~HFQ^;5Fgk`$9#+_1Eo}?LyFFuOyOMP(HkCVr)r++CLI(Zy z$}FN9FLTUc7kGgj*Yh=A;fciDx0-}{8b4)|IWjS+i*I{$E2O{0r*VIgltxg)oywb0 z|MWdmhE3T{XSkn6s_`=#@1~y}W)9E&riLsocPWhet*ChM!hE8>IoI1Bno!CwfNj26 zD}AX0ceurQV-!caq-}of4ziDn)|zdND(dchv?h{nF8}_lRnxisxqm6*Nq%#kqiTW~ z6gIPrHW2_;^i1AR(5eTZ0jd?7dv}(^uLA5WqHFxMx9z2h-23A%99M1yj8X>xElvUE zzlLNEl@ZnDvY>%Eglg@@M3MlSZ!bU+fO(Bi!a##4(=OR_;x_}o4s^Y5qb9h&*4{=J z{F7XsxBHdsr#$nQ$*ls@IeK~Ya94A_p(+PT3{&-Wwi=f4&8o;F)R_GYD-SW7Qonfo z_QKl=Q?oLc`jWa2U&fJ19`RiP;cE$|d)7=V^j$3j&_+3S5*g%@_HgZtr*RYVufO?9 zc%DP6pWWL}=s_^das_i9A`)0bT#i*dy!)TpkGq`p=eO=6-52U_3@I-c687E(Tzy?+ zYp5l6+AzGK4k`O{($&DPK(#DjOW@-X2OG&-<|JK8SwZHf55}I82);RN`j7KO!R~dy zRlk_Gg}#kH4`kBeiUF&*&_N-yk*n3-4S<`14j%XXo>v@nKhloK2+M$%U$D z$*lMcCENjWV!);=J)65zY;WQls;pH%NDhps8hRuCL00D~V|emklf(;za%kguR`c6b z)sJ~9?mv5ibm)pp&z3KLz}RD328%i4m5ofCQwnPBz>7!xx?o&=xZX9uKd~mc*?@P4 z+<)5_as8?k^6ah4XP#1gZN=}ShUnAIBNZ%$+^4Jz%d!DU+c1dE*R~v1SBgDJ-v)nA zjjvY)w}&Lchmil#u(<+WG$>(T%{JrAe>X3=ue0vn?79vb_behxR$s3oI!l!9_o;Dw zhzv|)TJ!6s#UgKAMha~s_cK*ia)1LN|6!5zW(O1Pi~^_8b^-{PsX$E}&?4I(+Riwy zpEm7SgFPy>3$X)sRwBcn2#y9}Ue2oRX6CnXz&Om)Ji5=M2&l;)9Y60m?fLcsi5xQbq;8d<*0^_(3INyxM7-7TZvf zr@7P9z+b&J%#0`(8%~)gxKut#$t)@Owx%ri90`=sJBryHO3$ zMbFQpFs%8>%v~TuVo~Z6;y_e}q&}y>SQA*W)thDejkJ(&uGgU4u}(Q0=t~CX6kgF> zrFQLg&N8As$e>-1ffoj_Tbc zr-lHvYrD^CNqU)pu&1a6F>7?B*J?ciPZeiREe+Y4MW}Wl;{LFb}2c`o$~|!>u@J`n{L^ zfagW|h_ns%S>szkaj#}-Hf||f3kyWDowsm>e8!JY$5rJPZl2tA_vZbblMj2t-zvBW zzEzRlMs>YiYKW5UYz_RD+nCrgtgimV`NH$HhmoCR=d$OF1G#yu+uBte&VIRpqACLK z>o>P^_RK5i~en4S%T|RnoxD6iyxiMkP7Vn!IZ1gxWks`C% zwOv~I3LG9j3BTZ(O!ByY!H1kT7H6m`Df!L)Q0lEX@)q2!M%$TgpH`JK3YO7}%+?7u zEHOZ-niqZn$?7k`)Y2CEMFW^j!87ah_+yWaEp+wRJ)Z1?TGcOVKil=}r$1tZNfk4| z1}>UU9p7D`VhW{WAlgq8^IV)?cLYAYBW3w7Q}OX2YOVriOC&j}@4PcYxM%Au!itqA zwIf+wMmihlXnM5Nuh3%Q9ldg#uP~LOr;~e4NAk!!2i2YD-_KbOS05;GU5@a~t!eif zi&MN&U=+Q2Kj?0*+(K?wb*K1JMvUo9g}jPNZ64ZSI`5eq2ifE(uB^NQ)9s61$Ft8` zESI7~V)OrzjLb4PS=n;`{3U$vJW1z!`0Sw@(;x6a#O@`96=#qmmfo;^rQ^@uC)VHf zd(>qP1?ZNP#|LeRDbE#wR8>E8qy+iBs4%pOt9Aq8L~v0sPbQHEia7TpmpdQ;Z0iG2 z-BhzTVlwxEN<$3AAu`{3nAaBZHKX2OD107#?$HpO4xjMc!Pd=rj#5c#EYx=(#V{nE10=esNGTT5?Kfr}Sn?egpfwO-s@QLfri^6Xo{cPZWT|iK&NvI7)J9aNhAp(Vt?xiHURm~ISLy2iQN?%Y@;Imj3#g>M zsPt}0X@K`q7MNfbkB1G+ih})K94(5K@HGqXeR*_ETOz@eLWB%Nm^A%U5=%|ZBadJE zkKJL_xq>h5u!?oS_Iw-ygc%u)Nh{d>m{}IzAmOP%iTm6i=h$bkP_zOH`+O0_BJX;` zQFsef!nUkYfHK?pUe6Ou>ks~NWGYFuAVk5SLs4GIsse!B+X$!{5eY~A;x;qnLmto|_3q8ssSlUS9`5;e@Hk*A0%9H@~m@UI$21VEmB8-P5M`yOGj1!Bm@A7?*d6V9?o9$QRZl;@dz34+<~!K6WgTb z0YkAcpA4f&ibK|{n!5Hu)#oJ!&r8&KGkuQyla-MwG4&_AGpm%n3JD-hV&c3~c_9dM z-HdFCvq4%dSs9R#n*wassKqTV`j!9-Si--#ik?y41+`UL=EPueqJgh}6Zhm! zM|Y~gInEMtZpb}P@H_hCNz9Uo*Hg*ow#ZE?CX_6#@1_2IMM;~hXg-2!8?eJN%#PRu zx8)R$pxX!tgPwxN1g6cIvSUeJhNLpGvNZaRj?;3f8#o~g5Nmno0NI7Fu5#;pV^(2` ziyxMZTtef5d4yEnI&)n`jvUTRQqf&vp0iQVVJktE#ZwIsxr>O&MYKNW()XKWsIiw| z{2$Od-cDHEeI(21+Xafme%MXwE{8F0Vks0{nA|vHA4zuFAR8)|ZaDv4kB|@wOyrjg zb!}^u#AMFd5WqGVn$O;4lcxaS>D48}c@jdKgoM^1(pMymKr(?W^&iTbTi0i_HSN$| zS>71x&Uld(=9Wth-YbmuRvJS|XnfOl!%N}@<-iSVxK~l9J1#%`Fdw=qb6n?Pw>Fle2)r9F*@cBTW>VakeekD=t7pEM8r)-^CHe!7}6 zB0CYb+iF?5x@~5>ot66LP}F1F!TodH+HJAN5W7Idjsrr9mwFh`_u-O!m~X`3QkE`g zXt|<)q!XlMM`X5(v%BCKbVOR0owo`u6-Y>d5|Y7E=8;nKv2P0bP2EY9tB*0~H!LrH z8ya=kIvQrlduS5-1z{dMzwfhXBI#af}6SNZw z#0nSn)`q1qd{8qfN{0kbCn0+Q=ACT+Q)I$r$7o}wI%hwr@EiFtZOk$mErS?u{A$)< zLYDdRnwfB{EGaYpXe2b&w2`A$26juDb$d6fI`6AcVxTl+qp%_7O|^|&am}T2FzhZ+ z`y#7~3+i1&3<RKkZA z{qor8H4<)=LF#3Ym^RYxK&jc5R%vEmRIWyo4^fI~b(>(zxM96BG?gg6X@)S4+XpN( zYIty4PZXziYTma^a{ur9;L|ZFq*-9-EQ2&)BbRJLa9cuklYBPcona^Y4$(2WbVMi> zH7UT@^FVZt48I#>&&xl%`V*{rjc?`#9@@9>#^Y3NX9~n3(!qHo^7MMKQ_S0Gp*dkf zWf-%ylJ2G6NmkZWHh8fStxb~OkWqv#r}qODCYR(I8M0B|Py#^EMh^NM7lcVsZ>M8A z7m=ZK#O1}^-Q)@dKcv0fQPraQ^HbT2bTfav_n~q>EB0B|`+GJ7+ zM;k=0{hDJkn*Sp7$Y~0V(Gaj40U5i8c+UZL&$&4#Hi!#=k zYM`1D9f48=Q^|j>W{2%>@lK*!;1|aQB~jIrsIYdfgc0$gO!Y;bMLEk<((P&-h$8`F zl)Yi|qJ~yt7h?RMV|V2eqp!sueWGt#F&Eeo{AQcyxuBo)({*Uo6QkimvdvZdA=5o{ zydNkU3*d?Oa<}@^?<}4DDQ2_1WfP$c$EMWj&@t_zv#=1i<`hKQCZ37P1u?M9A$|L& z2A7Rf)8vA78NV@m`i<*phsbFl9=F@c2B+RebfSDjRJPGDVHaxB# zXh}Kf=G1s}4-;ZYUrx8kl%S9aDL{4QNYR)@3of-IoZ0eqPU$x9xXxn7-Hy2C3)<)A z>fX~ipC4hM%W~GI)VJC7gFj=w3kv{lCg+TfBi67_BK2Qw%l?tF7~9gn(LxBwS5soj zVSZk*Ib}+-l|#uZzU$|re?7om;GRzBh=jhP*uy*>6rz4EGzmgY9FLXjLG*6 zfcxfk2Lt49Z+)(MSJp5*m!4}P;x1G38*ZEkL%b_I2^M6O z#o%p+T4wuZD);Uc``}(#B&l+)k}SV|M-ZMNp}Kp3k-=@TefXZEcHH zU)CmJz)NjnJbkww?v8p$TJemSleOW#G;8->S|;-|jYvodAhtLFR;0iBZXt&!+F zC11}mhS!vQ=Dj+m(6N~|>j&ER%lfqJf34w6IGbU5yBjolTJ*j_t!iQ5_OiP(Wa8s| zbFq<YEr0Q?ZS;|*q*BXe*9KZ_%A}XqYWz{ZEQoYSc~A zgMC)>9&ZErYDadOua>EfH3{UunfVkxyq0xG=5qYV5HPFCVL9i)rB7#U_9!)h>Qfa{ z`d>z?o%y)?OuWM5f750&8(q`M1ir?-NXRt}OK6)#fr>Sbe~Ls?LyhLNt^m*_A^J!2 zNatb~ydZ6(zyD_8+WMZJQY_ENI!D1BDwNzW)2(sNd@vnWmwt!y$j>g(EwTz z*B;Wr?6BM!j`13)A=*^acq;G_SvkGXmGJ3D!={A6VEeU16T0wKDU ztL52T6C~r4o76QxY708jtY%~b$P5R8ty))1mjdv)k)x2)2Tv!+7 z%l0X&AC7*IKAm{7)wZp>4fO=fn9jl|${x#F@?DBNSm+o%($O5L^~53S+bU7jbmr*kEZHQRx^C^5g)yGLJtJ=CEqrWefkcni58>^P-= z-OzPRM(0o=w?9#`kfMF-#>O(z!d%kdh-zT`l z%Vu}(5Lgib_AeYjxX9p;yWaeQ5R{(El$r9LZ!gV?)Qqmsau|{m$toE#O0Lfi_%3J} z`3MDK#J5#X9jbk}AjgAINmCBg5bq1&coKxGB!l>(TEQ$*n^k$BSRJI9S&QEv=J&^u z>OrD86KL)uAJ{Gf&;pvg9zt zM7QUVLL{4$jmFbirAXaAKO3uLW>Xl%-Pyw?o$=p$)tF2gqM@P~)eWzJJ^wE6f1h#w zQWo>VPswn|uU^2Jj8~;E!d1{NF92q4$MN1*hm?BvuhB94s51Iby6TOonT=obtd7z-R0#6LcpW`Zse$-WWrBJdDhK3 z(}*z8$!2waf!ibxuNyn!z^OV_vq;VfuTN)LF_NQjz zUDh_C1Y#F#5NjLa^~Nn(wI>@dL*{^+H)s1bJ(rnJD@a9f=6+Q%-=0xrm~!noYp-8+9L_#c*uUuKauj`0;vj~NP6buN88!D=9AfS{3zp0 znXe60?Z>r2+3SipMw;~T4o9NIi0k3w2M0eHJ@vW62#Y)5N|?~qSp-TR0eh|~o}o*J zK`h_Ub^Bz|9vq2Fy|bzq@~onn$e&o$7b6YpV@vVX6n`E25_zf zGrLzCo3YE9Bhk%=Gr?Y*E7y4v$)f{8{i@R4%ps(+$A#`RxV=s74bXvWY%Sfyu5G<# z-Qw+`uCyg_U$$h$t?G#!S>@{mxnSk|v0RU=**#+drrMD@(v7k~o~R~b$+`%@(jV$Y z9g?8A@(Sd^jSO9q?P20(7Ofr&od^koFG^ie{`hQ{$)c-7F?i_yqxVydZLOz$t*SGg zOPc>t3=6y$m}Av6tpjSmejdM+nXhZsb4Z|U!Eb)#6U@X`Z%e2T@rKn&Pba{-08l|^ zHKnw&2H8fcakm@>89)zAxZDKUjdHg22c!yPmv&6tS_SWgEZFo1AU4q)yIV`Ep}_xh z%zfhM7hNM6@pNXG!gE&u%)DF_pQLiLaCmP3Q@!F6Q~y?=YtYep#QW=QAY3zB2x8zE zfu_c4bPhV_R$hp7M2^f@hID<8#ku>2^&1IljwOjXySa{-T;ZVFv=Ck$v5^Y}xz@av z9FFSK05T3b5nV;c}71mK*POh9$A znv*5jGSzg5F`WUC1s3crd!~F*itMCQBKD%4fBn|IQOw(4IgVdo)LiO^pIDPe*8+0Q zufW6U{mHnyR7yvB4Z=gW(a`;XtNPFmu0i7gsB+xC&WQ1I)Q!O9kZW_wssw8ePlpFI zUh)WMUS^F9lw?y#{a(K>MI6-|m_^pJp}k$BSG7rVj=wm;FWWx;@;$D7Ay7;Da#BGM zG~?RwzmJn&67z1hT~rOZPteKM#^|&%ORKycY_k(ZovH699KxRs6F4@AbUH3EVCcU7 z?FBbW%c+7s0ECD;bf%xbt03)M@QDqw>JG$f#wOS7vRgsWqNM-Z>PXq>yUtZk%DSI@ z>1ey*PB*j7N^wIEy@0V+b?%W;F>e4!uUW8Omslzlnh!fTII!5Ag7GJDaG#{1HjIor9U%{5d0AVT>WGP=xBr{8l+G8VPrOw!81=zhT=n3V$0zTs)V`sc73 zU7go6-xuzkHb^BVTzZYa(@#03zW2Xz^>)*M`Ded(`vhg3G@khiRXC@)105c|C(7$+ zYl0ioZ6W7`U~OyQ*KWnKCV?OQvi+$)8{|%hz5At1o^rh3=)5AC<@G{KAv~=|iTOWI z;3i1EiXO6SP=l+9JC09`te!35o35();$#LGI0y}Z#M(0GupM=$BpT!p4fygQaSsWM zF9Ginh*{H|y3a$LOCV?&PXl^tWhsbYBPL=&9NA$1MR3l$)SZ4+Y@=yt0)cau+-WD3 zMApP_h-de^^=&vYa};lcd4`nQT(%d#1GDlkw{O0RXrdne>1z&W2gx>bM1<2j4X~wQ zhR6r8^bpA);K5`Z?QD?AQlK^G?CWxfkr(WQ@a$<>5fpZScavmj8ft8#N0`ZO6H2;h zMrGl=WysPDl5r{@A8m*|lAz~jNG=t?{cQH+kaG-KK0Du`ITfOK21txQ(3Os}p^KT3 zcEE!U!p&Qy9_ zg>zzRSam{oaL8MW@|V5!u8`#K1If#>2$LoRmE(DVcZhE|ZsGGBj^rXmK$-;Hh0{ z2tMNntn>qRjaA_(u+ss+o}Me9=wb&N7%wOWMemfjYQ+JdafLm#Q@1mN06eRwyAGJ? zU$HaZ29Z>5T_Sc^EtpCkt)0IFFw9CW^>hB_3hP4Zo`jp}_u2 zxr$#reVSNJEY0XOuWdR}Ytj)_V5Djh1-Tpvp|k0cq}-^Igco2hBJPT;ww+-ZTk6Sv zSq4l5oUOLx9>G<$e6R}zmLKlm5jg-UtXL39+LsCm5ESQAV8^wge*7yI3s-*ngWJuy zUC|edYAOmW>ML!;94)~8aBWY1z5M$i526=K`U)}CAYNtnrDz=9MskiS$s|A-eCX5( z+^O@H&BpLVmiDs`stH(_^ysldryUNMd!#SI_8>hyUm!|WgB>G5PhM!ceG+23m~Tb{ zyYQ9b!>a4gavu^shb?LkL{}_lT3Ep^9jC=j_o$v}hGBg?WjA+SITn(|J9_=8aqSo5 zO`|=D#453J8{du#t^*bZ&yIbyJDBLjt^q3H~(|YB2D$b9}Z;!%3gMirq zwN*Exj>A0*wNz!uqO`wELjQ4hIwS(Xi{~etOD*)$@{7l7&mNEYmOw3=w~{$*7>cWE zT~KRkReSj+tkv>H`&ui(ChX@LIE11aB80^P_=IVg*eS@*W-<7Ywg;>HoP-0}Yy4H2 zy;2v0_5$|OnndBPvGI6SsI_!w6gRi7afC2wcQRDyj02uIp8611OxgEp#QmW3@!6JiWU?2ypVmpcL2WA$?>gcjHZEOd{ zF{-Iy^P(Wrv#8z9v6}o0XqEmU&s9w_$R$@#Ck5-l8Ojz{4*S$hdJ4m8`Q8QqJsHl~ zdiZbN@Zp&7>{DN5U+c(B$+XkDwYO)6H~hwtTI^U(ATW0TNo*UBiz>6tK8LmQ#6jv{#f~ z^L~~yq5bA=WHIA@{H*^ok<`7!M@A5>N>}WY#3i(0R<-gTl)-L{woxuMp&|2Qs)~B? zwrAw>c~!ZiJCU;Ffywt1E;K^7O7`Hespl;KlZG5rv`UkX)YS0KcE&|}am;^s(+}=l zS3TzD?`2p~=p!#=j}V-%A$9$-YDyge92<8ti9jr^msV?2ELxo0{Az8tF`CN*5$?$H7Hiu=~hZzA@PJvev^ z^QEkaSJBS%#}xL0mz^RFv85rngp@g39bZ8?4D?J(=&Cg2bJ<13@C_%mVyp^u=_}7P ztJ1fY!6*rAuRz#O>w29t|C#I6Z-^iD6wjL~@rt7MsH&g%~SDX&Na~$-FzcoyZ%cJ9C2r` zr-GzsAFCf686$fHaxsM8-~VsU!p!kw!{IY_V|d>ocx-n z-?FMKSB%neznz9=sT6MSU5)aiy}ZvF&TcpE zzhC0eZIWFO_);i?=R@t&4GY6nZ&1vwT%a_Hg4Pfn?z`&K{%+>Z*)$p_&n{TH>Z{Z> zRo7etMCE(A<;zZq@72g$FL>E)J~}1B?{Wao%YBaUgrZuC-ju)u*cAL@t?dDQ}?)CeH^T+puR9gn-JM7bd1Ibl(K-A7Z6$7Hltmlf=xlxTA=( z>c=JTp(zREkXw@nOEN(!qik>^5h+>72DcACJQ83vz80ggv+rEEEup5{LGx(!?Zc{r za%1zu@oceL=?WI@yvG@Kx;I8W7(UAmxXFZ+OM#*iQe4F^rAf`hM;*`s>RjuJdJS;svA838tlJAa++Gb~>ewGq$5xrD;a zjjyZ>se$!MY-QPJop-%-j!ZZVZ~cC3raG&$eOAf_>NumZFX3ruWsBg<+pLVQp8+X) z&Oj&A)>6o}8b}Jz#@O#&7yn4Z#8X6O7V!7H~rMjp=E@${j0BS`*sjwEOEh;nCPwtgl=Su@y3 z5eb%#qJvdsZ57ik!CKpkkl8maRQ=l~Lry``4o4WqK` zzf2|@qGnEkRLzZ5na=#mV&uPKS3_X??i{ZwiTdNCRUCBb(8r)dz;Mz) zv&IHcjcT4~2Xdr<^;n5wqJKv&QHAR#DO8Lte$W2orXZa9VV*1@=%Xo&4KF_5wp{j(Lbm z*66n-3OqA8Ic~-SpbFgn-0xxf4jHH=%6Bum^$3h-%&Nth#6byjpwI-p2KcxocX%@j0h$e7i5W?i)kU++Z;7Mf^0RnLv@5{&_H4- z>hdHpsl();5^4|$qJ>S@FEtIKNKdbLa&q=)V3nTafON4SO_G>?2}qv`(pb!WBNn;s zp_1z7iS7Wv=l}#2sDc$e@<3S%P;G;)Fr2ARl~yy~n)E}h7ul{kNf z!LulcM$#G7wD|sNr&%_-J5#=!j!cmzyh%h}VQW3)q8bGdQ;Jwmrm>39Hg^cC$#%A* zWLolo6ZMDaZ- zPH-QiYmvwY_I_vBu~JtGsHAmpwT3d?he1qj4yUTSnWs`yUYWBY61JOpz&B3 zhk_^+z#GU6t8gWkoRgxG`0)@dnGUhr02#0$4&Jci8&DBO?N2EeVX5@PA#oh=`Mh1* zHcSx*;!G0zgn&GVK=v_^%@48rw^5?(^l3V+W;jdr3HDUZnQBn27hNoK3>%V5Xl6hd zi?#)u@%2);LvKMdBcQdDU`Gms4uA#&AVp&kA1es@v)E*3MxM=kNiIaIO<*Fk;^)MIG#W6YRIJVn;LG4CFDaz z6i6ezc~m`gio5UE&45l}bNM*-mB97y^D`oVAnG0GA+|8wRCm!doH&W#jqrcA>a>AkZhg?iIIo z9E)1^=_(o5BKYB7(SV0vU>gB&8eL4X1E{e`IWB-FFG`Rx5D!;v-0BwMyI9C2I_3o*{Skoq$nRbQh%TRa6F|IUvr{yESNglNzzQvY0{stG zeuD-SCG>lypc>iGP!_C;3Qwm2*Z-Gu0jFK8w}#!Nr8ZZ+MRK=M%@1qEh=<2~6S_B0 zE5lmm-oSrYb%WgNsA+igM6y|{q#X{9$DY_f>|;WLMbV|Dy~M8VSYBh(kxAYyCWQPm zA4y|Er+0kJ8W&SDf$3sMT)2o{0ANrIiC;%ZUnvq7o9Ho`_^FLs z=@VG5jaw|sYmrUU6@D>3Z6I~ipcj4N(g&#=0Q-O@7ufgC@m>q+!Bd@arl@% zg{`&$lxJOa2H-g?&5J@Tc>@$hg*#{Oy7i(};Yh+mI(mseu>D?qoUZnds25@Je$7RE zmk00{b@=x+iQjw)@7Q4x8ZklFsvN*VV|&-J=y4&O%|aaV1G>f_*j&h=#S5oskp042 z2YX?e+TuP(y29j9yJG9QOSe&1m;n%pw zl&Gjw18joJ%I;B|g%CpXd|!f`|M1CeXa$UqT7RqUrA>iA}oJf!N;8 zgh_Nq?PF?l)p2MgUBtOeby5&? ziD)!`5_>ClLUsx(7l&86H~f_)QCWxnXA#pNFY&N&W_=MoPm8^?fxJWmUg9G0bhyXX zdfTsZr<} z8-e9C7=97*V+pjM3eVy~0!g#=!J*G-5>2P;{`kd?FNz)_iHu7<;!m-EHYQ~E%?Q2NGXN5=%5S);-BB;VP#Xg=cMM7|6)Ff1h{%KJo_>b>sV_@cWghFYnXWV-F4( zeMejY%*URaeY=7Axq&gdGE;DW>F@fxenHo@&-1~*k^INltewA@*Z=(K-S^1D=MTpK zH`KoIfAp5V=)G2&aWnr?zvrOQ{4<*#K7X-{mkN*nZ2t2Hknku75)09xocgZopPl_U z#=>o0ys8t~t?kY7;|2F1H@=7j4ELaH&g;79Hp;r9^9dCl|GWN61iM)Lqv5m@`jL;2 zqudY_^z;01ip+Z-zKqug&&K^*Q#uzu)lC%a(utbbUT01f+$hP8l}m1#I=1^B`i-2f z|8@Gk%Uiv<9|MN-3?GK~oi+UDb=uaWqPr>IBeL(~*M=wk+(~|6hsHvmT5d-k47K>E2JgAcv&h8DdARR&6PZMBF8$iLT( z=Mz^cv#p5_FI_CD8GFFd-e}i-<=&@R^;er>uTnA-bR*;Rujqr+rrcH%vBmtku4%)| z>3@4(po}NY)?&Y4hSh73CD*F?*91IdOiyRVLCXGUm5SGS?i%OdUq%KS_x6tMQ?ZjP zwA&%1W)B826^xZwC0}%%6stO&E?ZqCB6PmyYip~Q06tFbT$)^gH8KOR_9o|Wy28NBic$a2Xrw?0dZqN{u$_+?B-(2hTSa_pec zJg^b;Rogkvw81U0!-C8qyak;Fp-kI}AH^U;;xHgOTvJMt< zO|@@ZTle>nA!}OoPA8^8oqs zz!)#-)wT>|hU0WH{P~T;7ajK$aOovuYE`bm(cqULnSv4d2>bB^fy5VGQy~MQ=DOQz zA?Z29_;W6~#PA&3G53@69U64btAc1^!rm;6QCs|M^NvCly-`*#Ie!*kIFABnX_It;zdAP~PD@}d&e*2}fW+9S%H8~)Ip8tUuni22{chFs-hpXqGFOa7{F`24R`zeXTefgZ zk+ulb@J+O}@r|$8kFM_uk4sS0W7~fAsK=Ix!uzgPMYQhvV9@KN5LbJ<_-49K=6in{ zP@E|Lc+VLJyzBFAIA((Sk?KRjoK}Ipmq80p*+;dHQ>eIt2t36ITssFk>Hp2Kye+~gFz1?u;RV<^C zO7?{Q?(Cn!-4ONQ`W(}G5dOXZy47$4eYTmZJ#b9Q6#|u4wF(f;6u?X?LyO^_O<7;--lmGW?m-ow7qs)S4Nl)q^FXF;08-UJ zmKw#T+7MXhCm7hZ;H@rmDFs3TFs!6;5-u}4$jgI$jP4^Au`27rqB5ny^7HfWBK<9) zToa~JLNoTDV%lSEkD8+2x^I;}l91NY(BcHm6}|RVuu}I1L|xijOVGx{9^EGH^`+wb z4nI3XH@>?^cQ|n7i>u9eWyu8HEogo<;H%l$>BhD<2ENzWMvIO%1L5`xCtVJ@y}o&? zrgif~tO-oJg%CP5*M`AJ%6)5Ryr- zT~>EEDJECcKQfod%P%`VAbE)bR(`aWAM`CYJaEZv&n=*OLeYxsi9L=+0@_hWg zrGpu?(^FPyA@@BWVR*iyl@?YMoM!hLv-j=t+z1BL!#n~hHnCNDCHeD+P_ zY7S=kMSwi$Cg}dB{P5PbD>ot@N(Kru&csMwZ1-k2fA|QpJyY|P?z;$gTg)JbCKLpL zoq~7Uth>OQ=4Q=5E8i{q;MSlccj@~P#RY%Z-d#Gb2?7y)>!=_-c}-& zo+(u!c(^yTzxXsNlbAM}^Pq6-L+8$6sagF799w7`u&v`U4NT}q?`=($pUm0{SSC!e zq+H&?%Q>shF5_mEqqQr}%%=1x>2$vq;eB$dkMejiateMXc@ zrMsm3_Io_eUvM7h`o6rL-h>#UVmwRrMG_2o&JmyeOsSWel_Y01;@DeS{l8>>f!k#< z+nvrL>-zJmzszf^jhC~uR2X8muj0?_qcY(U1Q4p30KOf}IO+_TRsa&k{X3YGi@(h7 z+;{O8=A&htN+Fgdf%S02v1$nJlH@d7T#T$2%nNPzN;$t9${5*K~IHPO9gEJVb0BfGY6>*%pM!io|AMDJwyuJs`mx^U#}xxur6mF;QYutOMSBD z9ra%A?0#Sb^M4iKYVBn)`;5kLLK0E|nxf!p}ff?STb81*I2`P&2T~)*g`}`k|~;Gl8;n*?9Uzf6 zUOtal->U!wBOK2j{`0Ej?LH0{Hg2>kQ`Ng+K>Y{*d9JkfbuBXK;r>{ouae^jLKQzx ziQW{m-0eM)wC7vEP`ktb%IjZ#Q|=D1#Ll-Bl5L%Q^S}Xga2s7Loi2-joGGb31qCZv z0a5FZW%!TR{=lFAmIO)E!Kj&>fab$1Z5T6#G#=HJyhjm;0}j?{i$}cT)k- zbUG}FN$Ji`phNUy7)UF|s>qXzuWk8)UT%8UE;%O4lCSumDl^A3F@L?JUNirOXHy0ox-h-(e<#>0o?( zZJ99k=q{P?>LJ^(4S-@Z)Q1@g!k@-wIsyYkvBkfzidRZ=shI0v4V|6+9g7di&Siko z50)>Lt&f!fS@ zdcWMPx44zmgc*cy0+8r_RV&tR{xC5NnG=sMj@=xdd~ufg=MjsWVm0Vpy9`E0sq3?0_%O3NI8t&fNUMq%>+Ss}I=(-S&+yU9w-4%_hOy`dH# zhz-$ zc`%=AH00_^@nf(WZOAtM!s;MqV=zBdTKzj_@V-Z5x7b;>SRh|S zLvXA7#W<{n4(9;kHKy_jbP+0F3^27y%M<=^q0)h0A40#~uFdB0Z--@D3P462riS3* zZt@sG+>wDqGbEu?GLDX-5xu2jBc}=gux`2x0EB0QubCBxj}6*-yEY_APm^c;zQWB% zz4(Y*|Eh8_HnVJ-ZFS8FTETf>{s>Hm4yy5iJc3FGzzqBbl$sf;>kN%%hJ9Fe#3smy z%G3hbeDrltC;=+2`^aw6#qr~fRBwHc@tlHOqd5`(nrd5JT7Ab@!uNs}jYo-{Ud~r0 z>|OKDV4RafA%-!2PZ|L5E&tjA@gog0)L_CEo1uhZ`rn`{)pQyU8@{W*dV?)~aKdVn zWvpBRRIULAI|8l!@??SuhMgnH33O<{L%0i2lP_{OAUocw(e~h-J(Stq21aiKLrh-d&mAOC!+dk8iR#9%;}Bzys@^ps!L;)+sK zOr{>4sY~@!{lEyiAv^%G2!=Rf>cUIc%}$@I4Zbf~&a$Ba!RT4vML7+cv|k;C_jUee zr1Ver#M7r;RTl@3yvpX6{}>;~X~K98LFg}Es|F1%?2s&%uq zy05&|FL{`(=uZdfZ21UXq{}zxsxg!D2*#M)6!G7x`;UR(x%K^dwgBK}F0 zbuk{#AUv1C+<8CE+gEI+AC5gQRC}1=mCVl~&cEzl8<%JXoLvG)x&ZUOyZW}#Md*Si zo&Ur!bE?CP{CNhf`&E8uw#@^y78kQYW#;3Vy67+s08=$)PI#qApeMn>{LNtM=Jyfb z9%w*+*N=q5Pnh#A5s&s~zQlOuHA{r=i7?yKNg0Tp#hlHXy&`&;FCrWWf3@a*)Xhtg z0F>;0Ax5QNx*%vo0F_+k@;eT`u>c>8G1`^VMO?DV)e@##w9^k-fMnYl^3V{28vswq z!%a0|Ydvi7;ZejeQ1N)>oB{24$paoqX-`B%-VOSVLh(6~!j?NPVWBzc9MRZ$NE!`< z(qRYzgxm&43;{SMIaL+E0Qs@P5x62tfG2`s=AqdaPZ@!x^Y*p_WZLQ4%>c|MP@?NK zYG6bpW+7j&6dskg+SUaR_|IxHD;8fIKRmco*6-|}6Phn>c|=UZ-F{BwR(ysP(3{q1 z<>Mv)yq3Z^@E9stLVsN#KB+p@L8ptmyltX_+&I&vfD2kgT}gjXh}IF=pFqU`!RIu( zs0;sOI~_oe4(Oj*UE-}a0CuI(5&oR)KRUEioE-ikGq=G9&P5S(zW&ud{<$w@j+bQT zTV-iPG9>5eh-QE!fw6IeA-EC7HxFsjIUInSgAo?tkD)s0SuyKxsb7j7H!L z2+S`I77WdV30}(Z=^PJ+Jb_`_1Bh>>8zsVI6Zoqe@8nCUjm<#A&};%x{-jl0DOwzZ z2Q~TU$-W6O{4|movM%%w9gO^7%>bo&Wgyy z(j*8WpV&NEVTPz>>FY;RmQj4blF=h}kOlKVQf^^KUZaj!r3LdHWDzOKwE6Vvv%!Dh zoY2X&4bHmjX3zhdQuZ|v*+ZY-p88yzI5D5S8l0=U;B*w2JRv!nt=jOxuo;9A97WZ* z$Z}#0AG47MV!-q7I0VL{pYKlCGtCJ56yHfChZkzoK?Z#l=}nCTXWm`Njm-^Cf< zc)+gM-w8=JP}olnK2!boj6vDC)g8A-ocZ>r7ZWn-K28yo8m&xDhiAE#u=d;pDzM)- z{{;B_^}ICq0xbQKgPE&n2lOWb6$Q*gRBf_)0cScp1ryZN&NOsh&R-9Cd{zM7_XF(b z-M{(*S|ezm%p8Bn&OW0SCly`t^BV^wX>;@AY(~WGB5^0r;=_DMa7~t@m58Pb5bHI7 zjD(5c>0TBG%%4D`Zqj9i`Vu;>r3QB8ixm9*ns&2r+kh!E`3klkV&}PTZy7~(q-VDK z9{5F9hi3W)WLJ?Izt=<^@6|37HTn28bz4dT@#j|~|3_59qj-8$k&5Vf3*p0su^V|T zZ2azfXp@iT^SElyMNX0sRLjf{&0++I=iB5{#s$b{*LQz1rr&(AanX`}j#fbrk zchludn2uIiVF7K6)pvemAGMWE4`<~39=ujZ|CrB72tFC{(C+Bz_dW4^h!9S)@pQ}s zzeGM?@}+#@Jo>5iAJB*@Z0lCFZvONXt{$t0>GMH4Xi!r}kcd=12ucV4xBX?us{JC1 z8k!Y`&#}Myqoz2wXa3u#_w7Y=u~ePyfxSChHTw=ckd77234=n+lbGzofs#5QLYvJ~ za^p)TT@vFLh-1hCm}XGOQfXEUUwrs+T@X(yYBNi<28c;w!h}v!Ghi2o2C>DKs$cOk zi$b&i6+njpLaWI-Ak&?l70Nwn^RQUmHLJ6C#OW$kRcDEz>FQBP&35s$30{a-tQ~s!q_u zcY-3J=hZF3X)fN}zD$@TI;9O!Ll^>yA#|D%M6#rHn_k9@=0uQl_DYu@TP!uW=eX)} z1xxHE)2l{qz2fOXu1??OFDYt;2Z&duPswczM2JbL*k*s*V2oK76wB-})Ut~Sy%@%X zNTBibq-CC{v~EUK>2ZUDw__GxeOybIQZ_HTsh1ho(7==0#ZaqM)WS1s3()d=OA2G} zlYr;pN)hu6Etwm>ZP{m^9-Iy8iI?k7P8;3S_NvAI&!296M#p(k_4wDQ=AwH0>+p{g zN3@TJB%e5VL#j_UYFGlLVMIvkea2uxkwyhB%bC>Xh{eIHXAay{8#?*FTFG-3-Mm&u zIVp{H0GM5zWf8+?GwMiAa^&`qZXeQF=>Eh$TfqYm_S-szm&x$l`OeyO9M2)jeDrvGz6g+3F0UMd;ma| zB!Y+%9O=yJ6qZ~~$0F`XS$!CmnaYy6sIw9YpT47$c>g2ia^eSmldnJR-P36Yxu8+( zHRGRmitXRKq)Hm!3gx+A7>GJCOdI9(WY!`ccl7kzbPY{%OY_$}&FmV6D4B{TQY1|` z@l9~}-6SoT2CYLY5ULUixGSnt(<`C|uXQ%KMX;JMeacR~;4M&s)#c<#X@=WkXP&k{ zU_aK9rFMD*Fp?_=(^?*@{P5*EY*QUC*g(j4Cu3JKSPfQd=0ObG+mHLG<$TPy5J*cz zJX<}K*5NE{x!3k1hko{!NQ|0Nc#vHs@os`^s!|eNM7f9FuXOFZbz%2PgvjJEo%SyG zMC|*n#Clh4y_=Ey6pt6%_$-v^Ivace6h#UONYrleeVC`-bilgj)z!*^IKmMd%# zFRO1w!<~^YX?!W`kLeC|b@>kt9Xn>cc*LR?@Zp9U6Uzs%g55hV zw&+K#>HOMSjN~^}?^^oanmGTfW7*I(cdSIi+)do!ZJ8t8jgQ5rTtwiBmLzHM{B zsO^j7EIxAYS9axWXNqh#yk2=UX2?uWcU=4Y(_EEhCkTIp;u&|o>T=Ij_URSuSj}yX zL-D~)Y+scCQ!pdKjb^BbB?kHBs;BcC38?pDrq5=S-@3#=27xBpT$Y7r?vVZ(SE|tI zhK5gAj^~4S9@!=JikCCP>$+=aF5H&Aq942xS!a5o0@T^Wt=+GG^mMf*5us?J8v>E? zW|;LN@lJmAi}4Vyj$bI_Q_^``-q!w`>dsEam7~u?XCwn@1VuoCZb0ia^3sEH^$5*a z8KSFn{qXLQP_xCMC%5Mx&_v^{O!HjJE}EPCAavBIOb1Y{qo4##eMgoiG!&GoFEB~E zX1m5-sJcCU9d@l;ZzT%yfFY6covA$G676Q}TR2_R1qxTyckZ_dyfFA(N2&2$(2+w= z6~DNtb$^KVW&A2iwkpB+U_;ssIAb9eb?Nb~0MqfUOF0g-dos4gwsn=Ztx|0dXca@x zO%E`FGrBkd-as`MG2QzD8>5L(mnai^uYH;`<(^cA%;&4 z^On1wRa7oD3ErV}rr1j;vGr@+jrX3&`N-_M`3EM112=>AE>7o1(KHmAJdVZAxdlE2 z)q{35qg?de+X7J{^>WplnYq^3JU;g(=tc8v&|2VOLC-~3PhDqgoDw?h*>{AKXO<=n z2`f}Jmg^TuY&U8Wgj~GliguiQA9Ahb^!~M@GokFgm&0IBucOiLEpAp!jIYSws}lzN z--=_@vK`WDrRAs;NTB!1h4V)S9|sIthAI*kCcF0Rt~|HUhT6&J^uW`$3x{*s3%3^hN#Z$i#&2V2wm;+CDv8t zwdFOd0acTm*#3@8&Qjn+ZgaN&>17GZSKl$)H&9@hw#swPM>H=&1G4ZYVl}V@bQ>x( zsLee1MY!_&KZbMaZpQt0u0iSHhvBNdBMkAxRnRk|pOihawVwmuZujUuzI#(2@Y?PS z2~KS8Yl=D=K0rzlxzKi-b6x(ZiBc`U-o*EnX@evdrdw^Zm|~ebfwTOSr){>Zk<;cQeu39ZA_8ii09gwtIIEsf(g% zy<*A>FNZDOX@jWOm(Gc z=>9zlGk4uJEGL(zQcva8;@q05@QuaWB{I9^Rv(TF^q+`BEdb4p{xM%e@f>+U54yKu25N z^$mPP1G!Kugz(kKvcR!S1tg=7=f8IX$r(gts9Xk~)f$wol&nlPf39B#Dd@}t0tLO#FwTQ6s4VBqB#GlbP)CFAnQ$D;DWqC zMU9^QVY%)6dG9Q#+&)vNn*K0J7!$1l{wH#E;B zU?XVoLkoE!xnGOctBK+5p#fBBy=taF888+OuajbP&5i1K$+$ejU;cC7`GEEEH8_;J)@KSaMQcq-R!kr9L`VG6o)j)B5muut5Su=fNx83e=!@fqle)y*taYgJd?xGvt7<8#A)hRau%q9anMBg!Mym zkSZmuY^a&ERNgc!H*p`Q;76BA*i|4mgn#q{=%9JzPcsT>LpX>S+HC{4s}6>Oz8Nei|8|7C*d-gYP4SE9j@XA zmw3OhG`TocJnlqi}zd}5q z_4>7=8d-4Jc@X^P?~5xYRnHhC!G)(o&T_uY_3U*P^^)W}gfnesA&cb`@tf_Fu@XSuj{sc{~@Sx=72Ab*7Wo5EDUx zn&cgwShY7LGYo7=?YWTZEBB-3Ze5Ke#8x+gtT(ErBgm|u0iLcgy0@aEwu5`yW|BS8 z2dIZ}HSd%WbBfKe5CE^TnxP2*snHqg?mTQj$<081J6NQk$nCT|?(CXxazyNb*;S); zrg1L`5)VR~g2-4Vd9-FohgtusBHri9`of;F#e;_|S;lPkLa+-^T=LRnpF{jWKDBlr zSn?WY7xO_(115Cuv}KYV>inb(9(%4hHcs8Km}pELe#-sL~gQ;oHsnx+y7r z6pU?0WTk%1HQFGVw$&JSFgsHyB}^u{y`^iVf;Z8mZrU%0&s6sbK3I3y$Q)@`-nW-N z7KhJ_3vzspMpzn(B`?wZ?zcXh)sL5C8I?Gh)94m-s&)Vfi{_~Tc%eXEny4ID^rB`O z&(NyPs>i?If5Hm%x@OsJU$Y4Jd!MBXtM(H!-R5ZeAV_~phb-FS@8271`6@opX{@VF z{Xx`YAo=6jzP&WUvQiv`wr0);lllFYcEUh=GS|iEA{NJQ_GkYoSBo-CDp5R0HZNz{e$NeC1DUS!y!FWM z^T>8fb6JmHJ)=F#j2d{-+_%|oD9rW|+`xPt{ir*urokb7lhSoIuilFM+;O~rH1F`9 z9j<17qv+IHHQjhhuwhK2n{P6=R`9~{ZL*7q2POit1OIb+HuCrGl;2r$x=lP}mZu+o zRda)=-NV!sDn(UHW3;>}Sj5~;#4@1oMg+|r?w+DEloYDNrL=R|`yuO0D;Jg#F2T8j zWN6T!m$&)yAGgb&AX|m+4$NL(KI~sj+S?|mP4Vrfj|ms<%y)Q_GKJFrTQFxIv&^U{ z3~Py=>5mpYwh0n*UJ@~MXQ~9~V}p2R!#uGOo?-LXs`pIIp4(*!CV5UGB8N7ETPEL+ zLm|!v$!PcA{jNiEZdOe_S84YZKA0 zVxS0IqgV#UnqBv>%s#&8nF-w`C-MJca+Y#E%9r-sIsaoub-?GutGS zn_zT!no}x8HAz!>Lw%1k*101R()mL(2&6H~{9!*_O#>JvT@XzLPvO7fhc>HsNC8u8 zlg-)D{{~mVpILP`Xl;GEH4M9>zy>uM+H?1#{zmKUe&!7{mW8^=Bw1AFdc0cXb`)v3iEatBF0f0g$Lrs--zLsIIp^;}Q z^4^qeZWUnJ>6Z_N_lUYHczEu8orHUfw@U3Fy3I7vFd%1;R4?<2^}cB~z;rr)?CBv= zDuK#&Tsf7h-?>D29n$e?EiC694&kI_R~DMuAI_5aVg1179xwO)>{qJss*&c^HMK$OmLg;b9S^6xMHD%b6@uwp~ ztLW|R)69I)i)LV}c!+JhZQ)YScyymOf~QtREUniuZDy+Xn1(GeW0pW+uXrQ5zdr`X z>)u7xeg#b-Bt6_%;kzVVpOa~S?xxS2P`!6r!@#U^aGQJJtuj6X62b5$??@wvi>YAe zt7jphJ+xvg^=`pSX;5wsh?Db13vs6N;SSb-Ip_>>i`X<@rwX&!3xh_@*@M~~-jh$I znoA%v*)jw0F3X@$H`xJV~!UqtLUV#e>yJbB7hI z5@c*!_ocTzygt-$s?UrfgCoA!%as9?s|Y2wVIa8;MurN(XC~()MO9{S=)+(3SWX6o z)Hy`T_d1o4YPN7r0UkCY zjk^@Lw-U`?>nMyH|kj!%7nqq3UuzqU}?(yMmI-&ZHLmUt}QK71?2FQDt_Jb@*0 z@Jh-$-nYq1cJJSeQ{vO^MW$qbz-x%aC78~c&Gdr<-`w_L9Q|?c@95OJIT=Ih+MK6U z&E*mmRA|X3vs^?aJX-h z?7iKo6ALYePM$o})jHN>C}ZayN(}rJd-i(obzMr+wWJmSb|KoT%q!G$3UehkJ z9n-qa*k42aj_$vdKKgF3M3=*+{2 zoBdl8Uy^;Wsn+b*>(Aw`*z1A`kBo%~8DCI~0JZpO{SI^VpUyhGSPx$h)2WWB%T+zM zUJJrhrnj13^CTx|Ev}aIbulS=Ukc3#5E0sCy?I03l5pKrPVCZ)73fj2at*IeY@K(68fE6 z%}tl&58}?dcf8E<+q3ZHtJO=sl?dGKUs7aMYD&Uu2_raAPV!(}@_=kUX~ajRWL7y* z^-;sSdd(7=r73~L7&e@VF>Wh$ZXqOgs=J*D7Je|Ahe+1psBt4UuUDr+B( z5{F-ZVk9h3Mm68d)$ZthZe}o!m~WZ&8FN2T+S$w#@6hjH{s)uaZTV8x1Z^$uew34| zS?&k`9$5{3(yJjCf%soz@{qFl+C^&IZ?MAQ?1iWW=Ilb$mDWZ5^*8(%-y_pz9$9n_ zMy$jT#K8&QsW}cWYkgu~T#C{YKy-9!#dVX*C8Gc+wT&XpE6L)Ee5bCZ&|wXb3`enz z3enWzLYn&vH38ciwhkyr26N@83aLrW*zahrGmzo2vDhd?a2 zwHF>lMX2EzP~TzRo<~U}M(u>ORL~^_L@vaU#1&Tec0mZbfTu?bJ?|;*gV8d16adKf z`^3mAlKm>~3%`X)z^^Ij(Z$?`LCSrh5R4vREbQ!x@`{T*t>(5`&p2Eq0t>yXm(;|j zgdO3Z2+-7vo37_Pd!YtP&;J0+N9h<2l~zCaf{k;afD=o?>+dV0C>WuU6< zAJjAeC~m}H%1AX~(5eXS{7_2OYFeJJz{P>k>7$Y8Ezv2TRx4@&{vL-aOhLRuKX%DZ zg=lCQ_|u~xza8HaQVeS$Ov=PJlHB#sOl<;Cf^FU>Kl#FmQTr>7O>*^KJ5J?wT=xdEqn8d2s=JRz~?$(8Vq!rm+cqcHK# zpQDJV3Z(jD?;^w@GPafzLcCpCczpG^^3!#j-+N`n4}?Oj zfgM9`^aN0uD)&bwCZBnScqW&}oZCiCWp`n|t0q8F0uiuVjWGXE<(6}(JQoU9_8N6R zCEP@^+2Dxc!DL9b^0c_*XD*_{JX6gSSr`*@BrO3}VzjO#oz&l_7Q!qJy_kF_YqcPa z&@bu27ECfXFq-9)O2~4-FpO%W>ABDr^#lF>RDz-Sp|L1PNbg}<^d@9`PUD;es*=A^ z12Sss{n~(cHQpVQtZ>M!=Hyo7dcZt9S*~AJ*UfV60SDyGP%9(uJGnOneXS$`^5 zp0vtFsD5!tE_yHWK=DqU$v_bLkeXlYG~vP>ix|)&HehikZc{T*|L*gi->k$}%D5j_ zK1;mUITruyo>=X|k!M8!@GEb>;b2jg9G-FyEr&xS*GxMrr@jclM=Gvt9ySlrz3+r4 z%ioOY$0bg4epWEgK5uuttE!}u++*Ni@nru*&N3oJA+-@b1F9>a5|2Hr5u?0~e?-R| zo8BZG{r;a_aAsg=Q!Ixp&%K)hdjxnT6s<(G*)nB;KB zjEvgCNC9cLTz)Xi@q1bMg*mKjcdw(4yZcH1Eq9ffUT@-R+4>q)-{eVYUt%0n{jCQ- z%kc&yQ_z|=y4VVOsI2E*M&-7B`6A{vCzvsO5j!aY#Gz(x*D?QP-ZQuvmovv4T-Czb zn-?ICOoC0kmgnNLu<}o?Wm#P;h5vT{v<3=Xz;)fbeHGFS@=?*z|K3v&1MgFDXfSd) z2Xz0J!F;Qcx8wY{bvW?kztYd=6cDIa;BgthWy|AF{;1p6YDX-Kf7vFseI-} zH^ejO#VeX27h&Hylg&O@O?U?^mq5Y{K$`@2byn|&ko@tKBkXWQ951cJ^`0IE@kv8Q zNeiLkWb*wQK1Ebv9FE1VthqDR0*nY5KtlpQdR%CP5Uo&Hd`wu`VnmGp{=|)UQoRCS zHRu%tzItWEP>1rfn$VNs?mhcXyo6Acmj^4>gUV>G_kYOJi5a8b68HIHxH3WtjG*#+ ztJRG4F`s3lz?*1zcmP9Q<+bcNmhKErd3-s_@{_Di9Y}5Hb6VZ!t=Eg^)jf9S4AYVuU>o|_36k}^q_Vcse%MbFlQNG z@vTktGP46UiAGZGc+?KMaZ6KA4<>#8x<=q_O=OGluFQCx);r?8-cCw-67Oh&7|-Zezvhf#4SF7tTtg8v10lU0`KgFLt8W&-e_V=697&} zt~Uj*XnDyDMtl9KeDpo&MlLuM4MjGV{X$0F80UK@N_#qDtp~YT)jLVQ_K?K0yM& zRj5-p%pi7r3PoiAee+4d`?PUuEOpd(hm1GT=d?VTpt34a<0G_m1hhi$wN@I4G2CeB z^9&Y*HTK{VJYD<~U&Gf&G6Pdih>lQx%2gDAT2t!wrhkd%H9KX9f>m#0=;ixRuVpNa z()3KNvcqK1>gzviK%L9?cas=$2%scX-SC#bG^sXPhHMn|DKha6URYmdXFH`}EfZIy z-V=Q7>L?t4X)UQ%tz}e6mu1WmGwc`5h?V6|Kd`roAi+X@CrJFPkv}gKcP3@gRQoA_cxSJ6)7$uiVbMKo zsfE?(R%6qQ75Y~cG6@dfS;fX2!5D|5EW^CCep0>*e9e8eMjNFN%aW#Rl8IB4#p`j; z9cfie3(+t{fCvuEaRN-4ROdKJp~TcTPXF(VW)#IZ{EdbiWCAEpij7AL~#wZ=@~O-$1T?FWrcXX+&rD3ZY=X{1`@Xd^a&VZA;o zyVEO;`;JOtB(7oz>2*#h4Mh}7H$yb$^t0&kwyB@*Oq%!VZ?8E*O8^Cqoo<1*55MTb*php?!F>FVPfveVsQ(HT({;&lkw$wFs-?A3?gWlOLCoIU*B>;3w zlat{@R~IdI?T&7QBJ_@!^$4VPisalGWDEpm#65MKx;>0?O8OwfPc3q`tiiYw?<>T- z$~+;{tubPNZSd+ytkYV$WNFT1_jz0W>92n%8^23Am{4FL=$9-DM|~ejcGL7^FN7t1 zi0-m5jMP2mszHH(ksXA8Az0Bu_|b;Jn8Fq+Ng-* z*{E@fr;~P{9HNn8!Yln48-DY8wwZOjDy#9V$LU!ac7K6(Wq1N`{p5evgaD%aZX%K0 zKiO0*SevYY$*yTk_Ga}Gg1$&?W;~B(lp|EK4>es2EV3?U>F&cS;doHSL&tq+6RFsU z%Hk0V173-7Vq+pnqukPo%}c#-kUj#ZD?7#D<$OoR2|ZRa2&d-PCnVH^w_o z68TdA?*=>-s$r9%up$6lX&D;@zWzT;PrQY0_w|oVlL|L}{15Vx`;m8IiRwy6&M0N? zyA$bsb&jt6$>=PLj*KZQB&9Z<5_Z8o`wJ4zV*T#VYK!V%!8$Ut;Cm`?0*Pu^@dYt| zUE)H6_||>f$zIt>Om#QlV$AC4|Bh#sSs%LXXnzD8?(Tli>cqa;&4k^vC-1oB9QxE0 z_)Ems`ZDIXEfW&amqUslJNVf8lG~9CZ4}CLrP9f>=VQR@Fr~iK4$T6%si$bC&}YAC zTxXs>0GO&NG2%*alwk-U4Y`vM0oqy=+kSXXU0o`Brd1<*6!drPpDLm%Bcmp`W|=NEhL`i>)O{+>I6iBW%K? zZMbqYuI>he{F9)V1VrMRgF}qeJ~7-x>$l>MB3FH%%<yr08 zpla}Zi>*NUrLu8MP(itEU&X)HL{a2F7)^Im!Q8?tJ{8)6dTmes${b zfeFjLR5`s4R@r5H&pHoB8!8d0R4R3DFuvcT;E@jJJsdg=S# z4Ghebx4^Q4AZ2W^IEdSQ8;^vURd}^o_G4zYsPh|LVCzR3MvS#D9suiL+S`sR>- zzFqiEcj-maBZkPGy5ap8ZttZqr|=6LBgbJYZHT-Mex{CUtKn7I@DlfxDeEYedFaW% z|k_%T3$$vg!sihxZ(((OobFHOGTa+T7Ki#$My| zf}O8ztw=;m_@zxB|8Xl|It1@wI_z1|Q8%WIG&H4pTGrl^Ir9xO?$)qO$GZ{fTzp1)x#ogF*g5?w4iL6vOx4 z8VYeOI!i)1S8J|5J$_7a_P`<3yY6T$*g~fnl6QJWRwb*KrSumnLeJCj*Rd@84p?sMLuK)$<|HvuX$Fe z?O3;Px)yHgQVrI`sp@y~SCA)Rx|ChCKH&=cu+x91UmS5R2L6x_pP#X=@G7m6oxl6) zH2c*(xviCV*g}L)YkazuV-00$*7OZW7^+Ith^Zk4`pH$@5{voL`?PRR8Wrh?Ld6yg zD9g>Jz+#4YozRR5`*~!Y^@6K{6EpELg7hUgZrbr;2>4Qw!&y|`9gBp#irh=0kqs$o zwGYSf(;cK?x0vzlL)tgH!#yA)I(;ysK(_`yMk+e%vcb!=`U2f!A%nLRQH;SBuhVdp zcgcpT>#u9iefA%iIQecSmGWHubp5@gipwcMmS=eztaadTqpPWF8Q-UmeR<~_UKXlZ zs(uB`Dl~moF5?NA4mdJ_->0j+i&VNeO!W7Dw6pvawa)V6^34Vft}vr`zFKgkQzzAQyR%^3eH-VjQSK~r4)P!F zFO|$Pn}>d&Tg^cOFU|iWLx?d!KxMCjd@{;Wn%NDx%3} zVP%2ksgB*GtP&G-q5O*X>Z(2jiRh<)1a9&%B;G%`j+i{1vX(xbY^HYB0WSe3+weibw7 z&191bBK~z?kSV>CGE{On1cZdz+vx%lwA?n4OcVr&-{e&hHsA%A%P5WkGS&+`@_Lj z2X3S6dkS|kp96!G_RS#NPj!SG&mZv&tgIOA)>ki0nhXaVZ;q(_(1>Tc8ry?u$#k;X zMmL-^;mwE@`XT2yDEHo8h~DN+TiM1KNdG3-?X-*R<@I35mO$p_1#fNpqq1&3brl}( zVtvV|8MGn`U2f5U`CuKKqQ`7^XRim!ZO)p?>LFvdRu!85K#U7dx#!Bxsr}>(?a{9( zf&sc()XJc$=j5g_P!ninFi&NBGgH4u0P|`lV;|JJ9y@mj#6NxLVGyjR*e*u%X=*`2 z0;&N~G@TSvDEm_CExO$`I!Uj70Pll7*y~THb2E?lT+lBaT&xHE?Z~ldC|!!*T9$6y z-QR${M$O!T5XDHdK=?(zSe_B%M571ARH1_&IdX;mN8{up z{q~22xn)&9Fj0?MeXLR!1Z|BaVOvi*FAE^XKI<}Bp7qUgoT12Bpp>*5PWhNspR(sp z&c}c15{?`o+}tfBm;VWNNBN^nAn?DVTe!Q2vs^z@tl9V89oHfhD!-@4395-vT_f);oy%;73GVbxEv1GTv#`nIxYBVz z?8=odD9ruLJITI7OKk)!Pu#zQ1iR;Iw6LfOej{&R;R z*@D`w2Od_;pOq>-Z|+{)fVMZ250>t!k2pQ2Z{+Sk`zGvYtf(qvO{p3L=mYW-GPi3M zTr4=;@%Lvt$g0t=oK$LiA!Zz|^vO-uqrWAYa)LlCkxnf5t(v*Vjyv`FW08(9pPtjN zF7;nfrV2^PQ2UW2*G3WAI2_~Xcn4>{&#YzOf7q*4(~dSWt}X`Q#Qb1)ky_b{!?C3X z3ozNazGruxTe#dr!u2EQr!h>V-X?e-288_i6Aj1JfxfC;sWg4eQ}Wy$^L98uxQo9} zg}fRJj2QCM)KgEYmVK+PB>^@mt5)XA+qH)UNT@$s89wg$Si;~=Pv3id&DGMXd7r1M zZ@1~W=3t2ctPWSg#+;R_kIzzc`9H4iGb-u-{~telqk!VpaPP#eWribHTDWJ1Gc+wU zEmyq(7p}sQBdu_hnp$XDmR4w*yIh&37LLj`wzoe%-}ArpKV0Mjuk(U)UQh0i=ktCW zfRIz$9h3MF>-!8u;W&!i}_7lQ9_*ypo|V zJ?+^u2k++S5Vqq(Il;HyP@6b|g|Wx~c-9I@alhgK5F^qmmTq-_n?MA0^`kv^&P5)| z-?S!atA6 zf%l^tim^ijv9`tsTK#<5sax(9#X!YL5LE~b!X1{3fO+siL>lPkjiYZh57|TFh&+#8 z@{v4ddb2mM_4CPSRrm#G#2ZyFq>r^gN=n{1=K8F1kyCK#eJQPQ+f&cy}<#)3#`0HA(Upf7+W35Gf24*h<4*me^{*k?}S_}cHh}_3H z&QFaSCMO8&)5yq#0N{o!Vmrsdghk)a*48eSJ1~@tx)GUcV)xzH9tot5wPToOS!bY9 z!8t*7Ol0F8d@oO;m>77EM@{II?ct++Wzb@pQ<@8sc>!4;&N<42?xulARPhZ>anr^d zaiPc)*#2*cl);>D99RMg&bLCWm?5M$RrEYhnTGpmn$s*c==LC=lbd)YV@!hVmisgr zJJ>0)$Z-EpR(!c|y;sf)f+MWKcy0I*?Uf?&X?qO-#APy%5O$hMWf6cNJpkAl4mJ{j z|7qiQJV4u}%AeiC?pIaf>nOR3(IhQ5&4_}eCfx#WDNZ{gbmrg*&0TY~IRE2$wlAa> zN#(oGBC@K|2|)DHi69F+(@Hyokrk#L2-JBEAc~tQ$v_h(#ES~_!yRs)gLK0{CsUJ% z!yr$d@8*WoVKF6vl=35&?fH3qn{X!u}OvC*n4K?LXt1gZ$ZUV^Q>yhzw|WGP9ILgZIe zB#3_)=dUa%w{c*}H1>Q|^55a}?Q$1R-|(^!Kgv1?6N(II*Ep{^N2o!I+4 zS9O=#icR#L&O~4UkR27^`%UdtI}#^O)u_Nkc`$J@{{)j1N-4Dn1X|nz5r05zkv?I# z^Ham**7{3@NGCF0$x1{1?hB2>FO+Y5wbWD#(J_(f>D*ff3&`lKCj^y0%04zNNbH$Z zOIOWQ6W8QT0&olaVYRk) zh%^8qptkGWQ;m-$gkQ;qcL7$;rIxR+^w?C`4!jDx{IiDg_|RBSuPrCcwjIr#R)zz_ z=cl0wxP29yU`^pxg9SC{;^j{ACdA{dlmpF^Y}cJt04W)D(9*%55ZqbPhcgBC!HZ^Q zeWse=__BKZW^rBG^}2=2As<^Lc9fqZOw}A8Lf_C$znG&eZRf1%rQ9fLxu=Im3IYGd z7{J3YM>5zV6+~%l@P2Z#>%M>xRzVbkC6<)UXr6+Y^GBQD;@(s`56%(g(A)3qzeOuq zu`BOTQ`oeWu|tnB4F5IM8|JzTU!L^e(bF#Q`1#b(*u*A7RaT`Rph1FSPRPebfVc6) zCDR}xuc2mL%J2KYWI?2}9$s=u+3jhDX455)wZY4@f|WPQl4_=U2`YeZ$jisnzb{_x zc-mopZfl4<)e~}G+dAB)oh+jhgUf_S!No;mJmB$>w$=b3Sm_W^q)!Z^sIN(R{q7`( zjS!jQ2c)OxA2MA8OQbd}U1_LblqF7@Rgms}=rDa%ppqJP7e3`Cr8N{C=xS@sF0|4% z8#8D1X%u-U-notz*LedO03;b`O*${9hIbU75T}W0E8tNkvXyd>kf7>Cf$YEfghu54l&x(7;w3k204ADXJhB9(=>LJXjFluet5~&jl^Fq2pG^napa3GB+2Ja z*_D#D3;AWscmQD&V2JBwG2kO^EImfP-4o^Gyh<-z*TlO{nLQ&r7nHsD(BP)6X!+X? zg+I?LUAaZeA}~~?_Rq;4*1qoa_4dPs4zhdOaKCIJd)q_LNY~4ctXitsad1=;G7YeE zzX+_)-Axt2WLJGz%yd86PV$Pt#|Gm4Uh4Eo@i#nJ_@_+`ibxYz#}W$+zNnP1?0nv@ zjF~##6uV=^ySSs7LpaBnaGg1_tMMZ|UL_oW<$}EUu=X@n59XxvBqUc4Z(yc`Y^#)7 zR`xN#t5ZOfJz$DZDt9RV#AH_>dUR3#ZgiXZudeyIww|cjsSn+@IqI zEW{xTMSj0C0KiFr5uoPz19$~P75oIUpL<&N-BdCy*^deJ+B;z_*qT3s_1OuK65N8; z_h-l!9F+aN=rMD?_OM@LL0uVJ?TTJ($OBI`mcSNYCi#1hrlV6{yVRSuN4pOIIt`mY z?|RM>!E%2=eT<qA<_>&esaFQjxJU`(+q9Fq5h(NluI~AUKd*2BU{#B_#bB&Ld_V`&1Bo_keDy9HBj5gXJoJW%x)x$e; zA-x{N001;V^gNJOvE!8dgY#fx!1^+NJ@bQ}??f6%%fIpTa!Y)zUw75t0^0*XpPW1A z?Oz_ugTD$&)YK-doGW;xj3^MaL4{HX(gdOJWg!NZ>jt$KrF_{Aai;<;Cc%h14kL^Q&#$2%VBxJwhNXf)-pyGuzs)>oG^Z2Ks5C@whmM#yh@Cf)3{l)jh zx0ZwR7Ryxxqjtj9hWVR^Z^UR^Z$`sSL%ei2%!hm0lL}cMgzP0jZX5wyP(BJuz~Q7j z_vVyGPKsQ2i`b{+_X{Bbe5iK$M)KtOMfBE%<&pM%F=r)9;_t)~da{P9C+GTLZKnAR z$GLJ3J!7;^IBa|4SwMSP(f8?1C_s`4x-kJ4H>2|aNxN~LfD<3x1rY0tAMu(eowmJ$ zOD?Doz`g$t@5god360CYz!oq|{%}K@qtw}z^)#px*xs<|uE3Hk}8eCN!wugU7@OBFAO_EUV)^g7#XUarf z5jBJK{TglCe@W}&YOM_5Fq9dc$^yXz`NS3hxCC`v4>BruX>Ya;>{Sxpv>jy6vD2IX zQCzR~fUCS4q@|GP;$-S~qt~vq_>z)!!g^;?jQ61?DpAXD+J^sXe?YCiKp~~*Nmp&1 z?Srtfs@K}h7frH918ZOS?aKUOFzqeJf^Q4^L4LDK^nUR+@ugPeCz-1_WmEPaj+d&_ zr+(7)&mtEvUrLuq@VENB^%A3CrvG9oFQVuB`-kSTsps$A=og_HP5KG>Pq&5~ZG#-z z3M&;{Zn#HRf3$!d9{nJ$E$UF`KD*GwL>bqN(NBx3dq}r5*_9uV`PTg~b3V2hp}UPW5yrL>%3mCL()pF!k2X{^gq>3z0-!|?T=C+dD&iR#^X-vDl&Gl5--5k3Ii3^S*?s*Rby$7+b1dX-Vl_sCbL;X&5&n zWtG39o!jp}cq0Ha|87BxSwceyjTirq}4x9;fZD>Mitv-`rUI06Mkv zU6YocPV)AB)t2uVs(xR8-C~=6yzMgA7tSN959RsYeim|)0xCf9nNtO*)}~)?c215p z9X4$Gc5I=L>{%omlhsO7Odj8NxanE>xK5--LC@&=IS}aov^FpR05GTrYyp7c7XSeP z03ne7?~VVTz2-bSA3lgIL8)x_8K%~<`*Serq4NwoFp6Xz+d$W0^|8-vlk%Yncwt#6 zX&p-3JYQohN6+_elGSxKtXw5Ajh?asawsRzEP7+SGhujjy|`g6i~bVxAn zeDpC_c+LI%s@2sy05_Z-aC_okz8dSt@dLIQ_z_Ed=O4fKkHzm>wHjH8BoE#-H~sOL0zzO(CUJUO zWw_cu>ko(+)94XV!w5pROY%j{cUAhzdByzs*J0q%Y+dutK93#k8f*{dd)zY#2h7TV zjF;R>Cf?|^%&6|2zc<{WVwvsHE@h|s5Qi?(lgaHw1Jfc0#aZ0{cs8aZHswHttmCNz zljkujQ$F(E@?04f_(k!98TYcE8yEkR2>d2>lBiTUflZUF<~^xAPYn+D&0f8;5B&H1_T8!iRbq7m z?&G{!?NHoJY&%o|``Xh^2RrC>2>R5AB*FPkUn?-^mdkyfFO|w=ODAAfGNsMFyqbad zcO+FIDC15M`^{>9dvo3IBuS;3j#!rNM}>_j)BZGHDT8Z#*=tXC^c04cSln3$qOMzL zfKyC<2(yUy+}iI;U;}{$3jGp<#`e3HHcnfm$oPi@8T>R^b^n)2_J^8bSdN%B52hy6 zeX3^rE#Jo^`{>5J7UhEmF*xaB11LxSxWwzlO9=NhpT2u$VIx%P`_)_#OJkUlfIfVr z*vamu?-Ez3Ut-bM;b44sp~XPn5^j5|&gW^P>DDG6sA>b#k+g4P%Wx1a>rVZ6+cu3H zOmhG>pD&k)8EJ6EnmdUeeR)>7uM?H@%X(at$}?q z`!Jr-P?=YkhmN#Pt`a-OI2&We1Gf$LdQ8XZ&>Rc{YKL%U1N%U?&8{7;f}6{E-j`tB z(ckX*1P^@*eQPXKaocBdTAptBrw7J$hYJEAUt)Ltto2l&ui9_(e2nK{x z{j%68r;Y&C0%5zxk-I-8jB<=IF}x3|D#LaXtGFB`nkLMo`gu`h9ZM9MWnL4;@$}j- zOOTJ&u=7Mt(tempGxPimUWXj!f7$k4?!^)4=e+;C828V=<3Y`>5Yi;a_8g@F6fqzi zy7Z+aqN@#*0g8f_h1EUx5h?^PG4*`qL8QAB6iZwh(m;X|90g{QcK&;YrJH3)@jBLF zL9Lo8PqvIXkANR@pJ>qX^-UahwK0(= zsvHd^u6Wu1)XbD=LWPlg1<}F^+$7^e@f@lU(ME#mSoOgTs+138)%WC7HmTlk83ZeW z_HVzCDEAptba4GFNPo5uX(m7+Riw5h)m{VLL_TWCXWM&YQ5gn-Oh}{`|B)5U+$-&A zp9R4&<3-{*TQefP71{jo5)E!G0$#nW1|@Y;m=c)*4zPA&d71b54jK*WwvIlS6d@;S z709S_ivNodcx=P{;-StR2%*rN_?1nOKjeT-)vb>CveN zqn$;Nm&Z=IBO*TNn9_C_*8aW1!T{DX<5gKqv9hcAUpj5&NQdg7h(X=c!N3=KC$#SJ zojle8fiZtT9LvIzzy12zJIEiy40(tJh2v*4eJFaMtE|EXA%qrl>8gL$>+HiND+a5L+RK}o;&#ZZ z*dIIzIu8gfCi`qj%WtVJ?qZ+_`NRBQEi`WZIj`toO{Q|Hc|^WP3Y9N~@Sy<>jV~AX zm|dI``c+Hp9KPQ~sFvwX){~G3_1|Y47D!)}8MqDIuEIe_Ij)r&EO3u?`|Kvn0uZ{D zF8bGqIjV&;guKrv)MB_qT3jInJ~EM7@sl91d9+J{H(uhxmEJK{8N+l^`cqlP1e-Z( z;JFLsxP0*%X0XD`mV?*Hab4{7b;8!7`5etglv0KK;H^Qv!aVL?U6Wxv-Y%_5qw?3! zA^6exegqu{+txq>v(u%;+k;{H@0jMWQhMv@Kc!#)toI@{&)$u-DwV_C2I1%e5Qg#z z6;KUy-TLHyD6u3|viEHGq1)JZHG+CGRaQe)8MtSrY9H#l<1-EY1%~@if=rfhL(yu7 z#xCA@Tqke9fev(&>S8tYHZTa_9I&_! zcVU9HC@+C8^xZD9qzPk1#D-XpJ`)gW@6y1L%6#`{UrsOXtq*&Mt#yHETd@#s0=L&! zKS6Q%eFkk5u;u5WAQuXl(7#qidO$XJ)RheXn0s+|jukmP99b$(zDt6C1K^C`pppaY zZ!C%?Rlj;|6z4;9%s9>+$4s=Av!eD(8j0sERVHrd_tZ5usgC`~mpLwAOT`JnmI=SM z;;H0f)d4${E~%RsN~?cs6^0{RKU%g_p?CRYGzD$k@SlYBqRv$Qu`V^5xzFzQsQ4SX z={IxJS7)U5dIg4f0k4;UV%5~^;1H;p@k*cm$`@MA7s97G^c{+cX*PNUCt=i=qMc~K zq(Uu7saK3aisFz#8*Hotg?jP#Oa=Mo)A;Je3jwwJnkabbSnv<6JP zcMlP|8JLsi7@YvA?>T4=4PqexX)=Kxq6l7C^r(Cv`Vx}K)PS^I2S1Xny2)DI$x>>gGmbat$-q1gkh?731 z=%1h!L$*lzD$c&qHz(0pRZ9cl{)+>9=0uA3`RE}gI-Lx)po&XIQh!^5Ot@eZD@a|V z<#Ymr09EiK!T0egPgCtE8os#0;fiood!4V5{eu~q!U7{;VG>=2hzoc*kW%=>|1Jfs<%NzG zODSC7Hj1;fG3aGSKtzd+ALUf#49<%L_fZ8~1DU_J686t*oYr7~T8s}om^*CpBM+3~ zpa9rzhX?*ip&zpZ;sgLVm7wS6U?c=ttULcccC6FEtMW0T&91k3Skbl?+m6fJ%{ChP1O5lb~I7WJh^j`Xzj(kIK#UGZMUP7#|=txlK|aj@>J&IO5p7 zXge+D;&t#oenA|a71~Vlox)M68G$QWXJ{yMJliZv%m-mc!?1CI=q@4J1ZpYy1vx6d zNCuKB%ANiJlxHN#lR(lXMD?vflgc$I4UvBP^(q4jh%E=w7Jx(xCpSkx7F;~2yy{5= z1Z#5Si`?$QguTLP0A~fDfCIPU^^8QIn$MtrQeX=l_}5LW|Ff=#FwU0!&+@B+IrXr|Q20gaLd`%w?`?rZ4mk(IR8^2l&(04R+IJt7CsPtAc>IOwh&3dOO)3TbPPgaK%BU+5E_I#3Z+ro=_Gh2 z4}OM%Ji|v;GhyMg)_)VEO#sGWJnn!3st^bB;)3sn!;`6S784;>)`GW~(0k30n@9s1 z75ZEc?!qXz*%$mQwk3uHFQTZ4nL5?^#xCyFIUyFCP+s`U>yndO!xyhPfy}6|$pgSK z{bh9%W}GI3=m;T)$q-{9@LvwWI@J-VDf20o3v~JdNA< zzy#AS*po(s_Wm;3E(<$H(r(0|4&&ejd}JdJnJEZ3K|`gR#CG$M91)C0YVl>lPEdhC zIMpC3aNiZJyCeEe;=wHwCYJB6Qo~NVsr6gA%}rvTaWQ?u@;*lS>(QoIpk@7f`5pBB z<0H`GAW*v5ULw^lyb~5P#<|@^bRk2`#rH7^jNUSZ`T}4vTo{Ln7Q=hqBK~Eeb}bIo z%D_goWBOFFWjL7jPGz|y)Xe0)F%h~QClHU9NzKSJ0>tK`(tnS!=NL%35b7%q;z@8i z58Cm|+(lFUULIsEy778&&-!SmN43oBr`UO3m{?TfG-5hPmVJ9;34TEN2Q|y2`$bpo zI>GOB41s3xaQ&To^Kh`k>DvU;+|d5r&Wy%%2C{;N@()JG2%+gz^oS5$%SRpzlUU$m z7kLsws*PBz6Z3uiod03{!Wqr{lu2?mlagaW+a!ceR`@^Btd}uxaq{D+Q>@oi7+8#5BxMLGLZY^)D@<*7)2xN~CrGaH zG22QdTmKSXFtIm$|ih7(_;r0e-vqEI5Z1rw7X zUi=_940Ht-CT7yEk;M7~?1~66np}SAa!3~rGq|;@@b}Wvew&lOdmowOE#E;TKL8{} zVrGzEuC=49Ljc`L12_Ev%8|s+BuE++eG~vWAw-|xgSP`9DzSarlu$!LY+xwxr%>V} zS>hQJJ4Ee`!b^r6nIH-z4S+8*W)~t(Nq*)EN9<=Y;!`T2z^{{U$8nh9|0DOVF)>$Y zh;q{06#(K237vTwJIYvn^AAI!*CbYcn0Wule{m_jAJxj8bULu`lq#bTT}WggX*7rp zu6`Q@xQz=wDnO)BR2!M-#Y2!C+VE|E5JOyySJvB~fQ2>cNFQ@Vlr>9aPGI{aAA|yj zFTA_BjQhzIUQBv!Fs1sFA>p;9h!F#TL>}sj5ViIXbwBuX7Xzb>`J&s3dBjBbi7?=0 zTz|kE97?-Z6>r zG(?Xuv0h&!!(aZAe876`D@j(|Kg`%dQt+Dc|o%tPlZMl(Le+=FG(dpO{83 zv0;)aCTauiFOOW<9NIbv%+60C(vX%%KhN1pe5JmS-z|}SuK3PX%!b6T!X3X{j9zgI zuf`a&x9@p@wR`>TfCQk{BN)n_>J4mRz9pzRgq$940$lcMv|wHsNrY~kHHjY5OPTSz z7Mgv6_~y<|XIv1}_huzl!-b(@ck)m8vw=MCgV6NvAMy&08w7SH{`|D8PMdWai)@9s3kLr+^5IuBp;Wuh(P4Wnj{ z^_#vaJ!bvLxIRq1P=3)kuKY6jDr2mqxq5rmfi_xFr08tlbdSN4p#Kh6?-KvJ9liF$ z>+Rd~*BsNKdd*FVDE%6Cfv#q2Yk!VBecTJ(7R0U^yNhBcY&T@v{)DKUa33E#pE#QE zN;&>vUJh^EWCnKYUZkg{bX-a5rP5#em0Uf8B!ebK`@SYx>)Eme{HzZki=1x7gDu8cp{rSG``EM1ANtHIlO2J33ev{)b*e z97=V**86Z|ygJwx^Rk?laUW%NIprj=%3q%XGrY5&H*#TrZ3gy2n4Z~;AK~_~HR4LU7+#t1?f6r~;dg!`8tuBe zmr7j}&{h6NQeg_)?%=hz9Y=N?x`_I=`Qd5U)-qP7j_o;GqPn-!r^&5b zBiQ5Iwd;>K>MmRMnY+Cz!z3@R+`c*%AP@IF@nPhU5^=~irknm~#96;)pB}tAxV$01 zPpI>kGZB0_e5NG0a{*J6K3g@kT=V==-l2pNV_%~)gHvN0W`hK5NSh-{?oHE#L389J z#kA66iv9EK_Nxhjd#mUH(Lel5A%s$ExNT_umlE@uC|>#CBh zH#rnNuxTHw!@9dLqf-}Q-{ng|tC(I)>$GugX}$YB)V}QU2g13mgV6Shu9ra?y9*k- zJX@Q`R_3pdd(=JezvZD`*-+A4R90_Gz=#VYs6PQirQF8e7hTcvKNs9>{4Qzxy?CWZ z==aU&^l$i>-LmE7^d|INp-%^;Z6JemWsi}TX$5K)L4{dAJk%O~t>6;J)KdCkz{4n8 zp>R~+W8{22d!^{mlD+&CF1J+R$x3a#%raic1C6y8_6``R?C;-q5#neVV%_HQw0`y# z;%DEOC!?}O;r*DIcfA6ycT**rxnVyF zIAbw@Kcm@EpSOP?ucu@~Lhpfwir@H*M^5QBp&0(4ZF=bRWfvU^dBF~E@X56IzUbf7 zPc)9nB855{aj95M^%V(dg8hwZPPTll+1e~$tJ1|+XtJ(4s-{npJWeSwUk%9FNqS|K zGEiuwyVajZd01OSwz#Bw&z*3YJ5?BB2KIiLDII{3QCQ`_ChF^ZXzPiWW{m467F&lX z`$`DAq9k-9!E~d?$ZbdSq1Ki7Gc9_|@jo_s$`eU-rd2G)QIJz*A;im&}8GbjC-mDmZZUJ`;tJ?oQ*7!!b#nCG|ITabF z9@3a47Y_=q&x+pZkX_5*J<)1YmBV1&slrF**6MZ!u((oKlvBXqZOgsF6|{F{zwF&f z*bTi^+))qR%9Q$sW7%3-@D_^4cRrkAv#JM9n7aDVQ)4{-kxs5A)vMAZATxAQKXg-W zE7jdpz1_OG%KK7m)60aB28`h`t^R$st(UOZaF^}Jx$gSd1V1e@i_{ixNSq#pb0w@4jojiiz=U z(o$_SaLv9t*}RpetGb!MSNXD$A6C6rs~wrQ}40A)K@_t@PMzuv@Ph~Tnqvk6}2L=^00H)blC|hjz>* zocU6BbN|{#PDo-H;`+17p>dcf^eIC9x z3@z3Aj1grGmO6P=$Am{>CD2jMhJT!@rFu&58}9dc)9nme#=Nq=7BT1;>}lPKFO>gX zi?x(tW7+2qs!IR9JNRt#bi`Pe?!Y>li1>6XG5o4eNIx!y334MNWFV?*@<_Km+RyUg zHj}I+&98XQvj~!D=&gExt@uQ_SNL&9^~Y{C@}H*v=)NebP<{h&236=tYz0d-2o3)g zm`k%c4wEd@_bxjqn-mx6zcfGUXCb8$y3w^-t~dR!-aFBgwToU$Lwd{K<9+h`b;b9F z_q>(VInttqun%_)ahUup!tKZn(bYK@C%cRbu}vn$S0D?yP5%tLt#;}v?(68XmToGF z6g`zp`q70;qk+S`L*9m5w3{Einkmm!Uf};V?v%u9)yP$8=8$iF4E_4hKcMc#fequ1 z?=1(fjrC%4_yhV$r+j=y=wy4;j?TNqj>+piAd8r;Q@`3IPtH3i1K>kD2=v1bugTVr zlA&s+JhIj4%4#8!H?RSGwqynmLegQq4L-^y2xu_rp#A@@f0o4odpI2@Ke8fLGdgdMz?hDDZS+_3ggn=B!NdwQu0@gQOT6>50jzqiq4_RzC zI^;CE;QEqbYEz zC_<4TWB_=|Q{IvhSGQMv zx?gZ=@9oqdH`lB$Fui%!>4XG+PEa>wJ6%jj0k494h@4%RVE~fD)J|d|xB%@kCcupH zM4v^h1V-)Er>|jeWeSS>Gf`hkEQXPP!`TvXZ5llGmR9#Q6@gLMqLCtvt^T9ODJ46I zgl7Lh)ANcW<#NIp*J~JR3V)=JSLWoZahL^HqB^eV=jQ~8GId?pDjO{MfL)ppAclm1 zi+6sKI0$iC$h z@&l;h*zemppuz;%%!9qDFfQ{#uc)dLF%VXn6Gy9%3&FxxZ`M@i;_urraQF6v7^m=I z-Xai*?iF&Txh?hja>=Qe?K(WTv4UNJea#1At=QXwln(6ueXA)A`F3*m^|X ziL{m%GlS;tcmB-)WrVxi(K{9AcWh}1K{fzLntbk28a`qEE}c_M2i%iQYN%q!He@!O zlrySs?yc(Xjn3Cg<#!!*fw^X|Rhoc`)PBuEChCXde#j__1AvQI2WjxJ0`XLgB?i_A z!~I0AON4hz*Y9ow5PP;ALithRK)#RtLeX*oJq~6OtyuHFnOGeb&Wa_)b<2xn`G)LK zr)P@Qxh%QdsDR!mUR`Q4Gd82ov$pDU#K@58fI@@(r?e(~y3TQ$){eahM*(P%dPj2r zfFvPc0nG6v=eluV04-N^JI9a?#9INy-fA_^YI$v!G5+!`Zzx4z_@X)!CFoH}w^FTS zb^KwTS{fK@?cV~71D@#bl_BrrY_N0zSv?K1@hQAlAvqKcL@LRstfBY3&bTO+1bdqI zAW}^!#56%JCnyE1KEM0sAEs88J**CUlnwNI(Dy z1{%x4yz~4}ggs3Fy{2oG^WE}P);yTPX7txBjf;P!E3-_3)x=B^OJx$|O@kg5jlDmY zgW^1lO0i=wG}39FGEuHIsl8|2mFi3LQfU<%84x2YP;%BNX2Y>=*8O`S5>W|I(`3o= zfC?NSp<4`90SUrKYgrshPunFH4D;#YnrX{+9%%Vk+xBiFUl+IkM~(fK z)*rx3nVTXRU1Q4Ao*>JBt+;=(T#whq>zd(ZM`FICR4u_169l%fsU zQ~PHC1sJUCrb^QH$_jyoDUgGRT!OEbWpz&Mk~ilHvSw-@8*we_WZmeoisr zwT?^53C7+HXqU~p#4}+jOgL}0x{`^cdr7(g73si@h`XoL_Xq_=XX#l!zLULD-oC8> zsrjLkX8|WNeE#ct%xq(#lSgOFK)Yz!Vcj=VDES&`w^3FXn)@HhXZ3DHCtq%;pBhLl zp#s2aB+fIXfI210cp(%1WA3Og^CjC4j`vKKp1P!dACgAl@5Y|um?IC+V80Fn$=WzmA~QhO)6#rc+3$StnF z;I`55gzlwXO&Hb#EKsr=;P%(G;j15O!^P;b?^G zwXXTy%a$jmpmtQY3TJN|^r7y%C$$;~$mFtW8?$^OZ%Zs{$#Yq4rL6G1JL#qR#%dfY z*+Hk0J>A0W@Ua)`S5hPvetvcs>+gD!iJA{B^$1ES>lbT&GGvgM6;!l1<7BXm51NMqQA>(^qn?FR+S+X=1UhEt)nI-R^flvE5HqUi+T~sLl!9T8jiKZY;{W0L8=`awGJ^F5%H^=7;lZ(h`Fh22jkS z`SI!k#%_+ejpRj*th-+5_woA~wf-s7Z_pY_=CV*aEMNmb>*W9zKocnoQC5KcN3cD~ zPi09QWzoDcC1Sa!O%J=~jBIfdfrTi0X3pzuO+pO0tl5D)3?m4T13;z#pf1eH z`2)TDV0RA|Y92_UgVe0p%7Vdr-caz1qCEu|N)w1}#a6Haoo{8azX>frEbp)lWMH4{ zRPq0)8U5cNV2fZC5QH0wnznPk{V?_!eYCVs)Y0c)yL;2^Kn>z--fC4?%KvOYDY=Iz z(UkTx9}nL!y@$(3?jYUXKf?;bQ*InevjwU1-HLxZo0wg%yEqcxiNz&+((L;_@JY|VQ;Y-%8G%CkK_9dWI~pho6W z)z&(a_&%$5R8c8)IOj<=NEX5RB7G>~832o8Ni&z!e3|=UQMV@Yq_+DLc)C%YGwzo*}c zAMAWj?8=P}np(UZJ?g!Do^*uqLvlWfwVv}DjeCWovkrVXVErL-|8^RqYq1jXq;m3z z!aOiN`Y0O!`9wLF?1royey2rcYm<+Py}9ORQCOE1v9$H3{3FPA<(EucWloItRpuj) zIz^dr=PM8U6B9A*B9=^xsfsL!)wNL+fJ1UodGB`u<7lz$u5s>1pdf(T9_Cx8zrHly?gJLq1p8!OZgb+Z`q>CG`}xyf$LuG*X@floWZo zzE5Cxe?`eLL3AeV+cNG<%>N8OF-|D#dr<0E6HvFy_g>|f?a?L|DwmR`eW&y;#-9nj z9K+2Cqkh%KeZ~#@TqtJ+NbX^8BvfyweSG}&wg=toh){v~s%Z~;i`B%7jVX@222c-p zgQBv(!q`ep06gEg#~3IHdW(07WNIKf0tGF^^dM{&%ZBV|+ho}9s6v96cQ45&T` zA6iOMp0(p(yEPM^dpeuKpTqP%Wm6dJzwu)ac125*fOzJT%cbNuS{#stkn~)Hr?6yG zSTY=z>+v57VvufL%q03yF1zqd-lOuE zIj(mr{r~M!fy)l)HIv z=6wMtCL2AIZ6ALvJ3+nR-K2d|#Xym*>kW;uku?3MT`M)zqOVyoMu3B(!tL zu0l%q=um|`H;C4L6>-HCRH)$Q^K;s7MagmNuHqoRnFrZRG*Gm=As1L{mz4?suo|@h zu*-zk9=h8~s_oBF3X}5wF3lchI{~$h#897FN9Z4q#x>}cqzg%W$Bzssb1TC9`ygsRcthIvd~o~Y<-+C8 zc&4UV)p@Hvy!CL`Tg20IJ8n%~_DSHxCYS8`Hoo@QY*on&qn}7>cSzMq;oF5^$6rKn z$yH`{&{eD%742k3z?u%x>nC=8@WEZocvZ9JVKz0(2NV40E0F)3e&7fwbvosZQ`B77 zg56Sc1Cxt%Vw6g=YC6XD!EcqTUPxs-H0GW}?VxkkZ_J&$NSuBt?fYr`dY$b^l+Hsl zJFF>3+IEuLAEYqsV+R7Nb18dk2cdls6)wg8v`!}vqHvAh?{4y{7kseorpfgL6Z2V` zBT-3p>XM{&B|JKWNcX25*aFv75snigNgzTZJ#m!0Sb5zuM;Q4z{zB5#ogcbiT?Idy zQmd;r%hL$$)=B&|5ZqU9TkzS`YNnQ;@&A2QITvcRV5#>3j@_$K2I zb4I~t7j{-(-)G}kaoWtLt?&A;H}FfRyf~~2iralcl+DZ^zl;2Ay0bvyn46rfXfJyn zOQvOj(FQ!hCNA!m4a%Cgi7;)Yl@?m^AL?DQOjG~7%On9E+=mMiBY*@KjOQepQ@~)k zM_%<20KU}E62My$-OX@AVupQzxHGAVCu~kyz&+g%7E_=meF=?}ZpJfjn<(D zJ-RfT@hQq&dpk%nZuy~~^BJrDOqHvqPjBI(dKO>b_Y6+0*mjdp6C+?t{><-tA|uP% z<3<5VlkCtL%pC7^kt#gF+4hrN%ZWcYc{}MkJLG0i+s@8M=P#MF=eE;OB+sB)AvvBtXAI@q&+d~>Fs!` zE+3{(GH;GyWEQ18>CqFMsS5$i6zo zm7#t-?xm~emFegUkqyHkmv89tn^Fc3*Q_pSdEAUSb5azs?ah3S+0{*S0Do1wv1w2% zcBSB`%asc+DC2`~qV@0i3QC(@pm=Xjpu_NrL`)MK&k?p~K1Gl*@f)iWgfSEOEneH? zIl#Ujlmc192!-NbRYy_2z!goK+H+~ciHGFOW%R#9Qlp@H~b@xPj|6rlL zt?aRJw9Lha0;q0EAL4i!38q5>BFO@f3PVbNUKQWo^!5XDPHIfXS!rvG8=>s)wp@Cn ze(-6$@vfi{*74R#{)A6`%9&$5#IK$0uaXV66<;3;%hyT1__sBqX29WSp#^6cSBJYc z`rN{Yhkev-Vsc~(`Tr=o_kX6}K7ivp+RUL1b3Sa2bEcd_+nkR%pF$&qgrq`Z<~*l4 zBq8Q}Oe0A}%@8>hQlZjF5)x9;w{q|P2lm4rk9|JZuIqihp2poN2;v&>yofPam_de! zWs$)%n`F2(39OALifVQ8gsnwLbYxpaC)`Kh6h=tDp~GT%j(dqe>Yd6k-OD}8`%#QX zkFt7Q?c^`##o}Donc`cS9$Xerzj)9kMIK$(f3EE_lOQ1G##ig{-+v#@;=mFw7*CJ+ zPIH@e2OwNSL4x5^sc*Y55Se`@m!lR%1QWpXy8Qdv-a59HRIYkWZPtjTof{dOI!ra~ z&V5G6zZ`M(ZQA2Qy`Hd5`}&r_`GwpY^-BGPPk-*e6LX`|w@?L%WS++^F#>v9myvzC z4_d1>&#Jij0VCWnv#@x}Qul!D*_ip)R-r7RUN%%`e@UQMl*{$k3fB0?N`ch7F{24o zezeo0;rGvbdLG@{z3xf+w4l*F#&_*~UOTRfdNcOne_3DJ-0+M0X)`tk4_*vPW^}v1 z&qDrc^Kp6`E_pxU>A;;<$%yj;E$Z@2gO{u`u6?v(6j&KD~r%glUEaHPq*p{k|aakB%8K993HXBeD?Mi z8P4~|1H*=Cr|BOOrNU2zC9&riuL9yiwO=gXUHsKMqLn$w&!6Nf6>{UUe&WE_v$T(x zdv{FUe=+^_{`2Es5AHwu_UYf{O_jSuvb^TW;b&U|Rz2GpAE>S?w+gPZk5yN!$Pd`~ zg^zu^|0H8nV*f;Se2#

?5fNR=cIFwu<(oDr;5y54pKd4D@=}_(A=}Pb(&RXB|z1;VAZYhJnc+h|WEa0)Cmub$x=laT@y;9`oixl^Qiu?f<$>yf@;(i790;ZIX8;GbN zx0fndc5rT%u9}e!JP(VFScYbcpMDkaOUV=-ypv=DG9EBI9BiN#jQ1pHBO$m>y3&0* z-g7{!ldhgjSJJ4%CxF$&2Crc&zE@h1R%EeVY3$7~ zAlcydec%l%Bi%KAJv9ic%S#+oIJ+9Q3?|!UI0&nT{#dgbwRwqT7@=<|8elaD^-3B< zJG}!H11%-IJ;XCOOuOnmF*Qugoq+c5BP70$Ivi$1B|^XTV=hevd@40ImQ#;*I?H+C zNUaIfk})a?Qt|-kh`c6cmZ`FDMQD!Bl?JmGQ25@rcO$V|`=xJe54p4rCE$KKO%bH8LXbny4Q^dMyFB6y7RW4+5J*&V@5EALV z+RRF+)$I8B-*n#Ht@n*+R1U&XiQ3f>&UIgL-#_r{{W_;2<%TsIYlJVgWLF=7vZ+OltU z`zVX+!{}I}*;K*pO;6H#u79Ze4;sHaySSfVyBXo`3D)Uk*xDT|UE{BBw$H#AFI_jz zHcf8Qvt?w+gY{;K>XIOdG+I`czl?0Z1kSorNrXQhW{6~bV{Ur7Z~W0$d$QW(Usk>q zntk4rtzp?;Ag3e4(-0GRX?M-(TL5HT3&Ow8yEwc~N97-_CPX7Uef73vvX%yOATx6) zbZoqL=cQO%bF2OmX-lo_VuZmyNPCoC&eO>{`$lxPBa6f%<>;gjbgjf=8W6t=OQ@tt zO`NK(|K#i8*8_N+O&qIVqnxh5p-H4!k9BOPceEfHVWcp<8y5Atp4|vbZtCQ9YDMj zDEnu6U7N`~)H-PPQc1v?5v=t5oSoil>4Uhyq9W4?JB45zc*9w(-q5!(8Pg9O;8fdGv|5OW6zu4<8(g4-5+fB$t_w-Z(GY> zyP;T)wM-olR0kUZL@JOintE{La9f#+{2ADl8Sf!Hau8?vNn^B8%8RPt&Q{>kl+yad z68kWZKE8Fr`Dh&S*;7w#yRF^|!j%(Es5=tRWJ&MWPW^hBQ$tZJR(TShZB7~CMfxab z(BNYWzEI+FThl&#a zSg0cDj_Y-K1DQO3tA%Q-=c-i-`DdWV z?4cz@sCNRC3Q}^9fo?`yU3gzO8Eg5aaTTGbdi zdV91o^s@IkZH?QusHMy=gxv`Oo1Qito{zYgk%-!%YaJ7<(Gp4SG|+Ffy$&R>>)k zWVGdj)Ym~uO$T)CULuZU!!wr-*4NI7l;wO-?r`eygzq1h@&cSU(ktno^(0jPwpKf0 zs(#NJ>fe`Pll|3`r9=gxFWM|xZ4TNFo{M$3UEcja&28PRq-iv4MsCS2LFK|w(wQ&k z+9wV2i5iwfWqiLpp02$J;uTi)$pZ>Q1KR~2Qul8dB{NRk$RiO`f>ONCg=ACzoUzrh zX*v9fF#4TPPQ+6C{!l@4wdX^OL$PKXV<5fm{#qMz1B&dHCqW^_#!Y!zxBGZR zI^7x+ybTf;N2WLEr%lmpmcb2LA?4CDTOIliJ-&9Gr4WVer}jN~PI^;-Ejde^}piIi8p zTuZ<2rJ4%5RZbQVR0mE!{Z3#JHF+Ye z$^o6X+Z+(mq2>U=#M*W1@yM$7w=g0UN7OCp*BAu(NLe&HB*a4{I$9oAS^POTZDY*b z?>q~=`SadUGr2$c69n5XRKy)ENsv7Dh5kN>KS?0r30*6re_4G1KL}RaJ99Lc&$MLL zZwKtTL(fhcnr;2p!11upF_<>DUu|$pnRn>gLgaA!Urs|mXs3PnN#pgB}v;L2?^X_V5|KfFeLINQP30+L+gd!b8)FiZkl+Zhd9uO6fCZZA`^b!zhqK00j z35bXoItVIF6pwlWqN1WFcJ%l=+}sy%|GM)AzH4T!S+i&F&wd_>j-H$to+Nm|>)S4fnzl{bp9Z zTr&?TE+1abAS2Xp?$Ukprqr$V+dk&skb~tHYHth&r=?mH83*0oBCt+zAOVhlO-7*EFYV{dm8@Diyyt-(P>z2j#adld=Y%_a9PLUOWO@= z&c92CgU#D0#mD;lRfkN2_HIM3#B;4a6MT*P@=$v1fGk2>*k5-*I}2hc#a{V#&zh(U zZJsKV2ihH(69B*#G*W#_uP|- zA#k64Y#!{gn~jR^?BGFLq+61z)oGtYaz6773f(XuaRMc)Hy{pmY^xE})e8MlwxQ^! zlZj%?I*Ak)1u5mMH16;;o&E(o<`iml<+Dx1!*LB%Q3mb&I78PIi?rP(U;K7kanU&E zpixRNi4iM3P$PsK;Kq@d`k8Wk0L*wBh-LExFgt^ROSnU4?A;8w4 zY%96k-Eq9(W0=)QhWrfO`Cio$R?U$r7QmX+-`sF`=0Vx_L4U^hKhx5aou^5E<-+Zb zgeu)qHMHV>^$dWyv1cG3a3agHO0K8Q;m$UWPgRDbjW>Ir@qCV_03;XnM(wvqj6;xp zM%#l_KRh*@Q2ow&LJ>}qGG_E-><{y{)EKX6ZIrwgum4^xx~?eBr$MSJ1fdkuSj4h^ zCEF<=$^Kvz1oIm}KQY%c8^?;jKaQ4NZ=H=usMgNVv33yqeaWS7NGzayylNCVc|W_t zDQ5X|P0KkDD371XF{X<72!fy^e4U8q;#Tq76CNeQ3!D^B^Z~iQo(^(h#)up3xAGx% zA#vEetSsxhmjliIj?IyAvyyu{G}Sc3Z95DA$t-Ek7$yYght7gz*3#`P*GMIw^urWX zNn)FgaajL@c`lhW?enGMNvXGwQ!AZla3{h^o0(Png9kSeB?ZXodmO-o zLGgN6?z=_CD$;R)BVPSpn$Lu4vx3J_Ki&^u+GgjO52zZ!IZ-}iVuyEweMNq3z58+K z7-EAuYH6GiMMB^4;N#a2Ip%AhUleE9?EA}nzjXz*j;fpGl7{pTFvW`Lj5kT|M0Fo5 zYF}=^B|4o}Y;d`}n6>bONwQAK!1V!iEx4s3k1gidn4q)bzJh0-YJp|I{SQCzpV};jsyoV?Bk6AjGh5BZ5NFD4hnvQ#rcD*(} zz?vZ~7nk=FG2fJ&!i$|~J!mxR$oENC#}@O$6|9dXz_PrgJGGv{_ViRGnA_hC$9ka1 ze=%Z!u5?G)O}D4I%6Pean^T7}-fk?>CT*QEug@=N9eZ96T8o7$1ICn`#jT{xtX-~G zP;vG-;rrhHJ0&y?#ay4vV2pW`boQ6~Zh6e-57)KJ6yA`qmh3CKr~F;#(xz_WcOKL~EZYXloMIp)?9;n~SBIS#)YQZbM`2{g{*|Vc z#@ds$b^nhplwj~z%DB1QL9urwexhcqTRnOLe^ zEKp`NCyU||r=LmE+0sxRE0!HE91%xu>-BH8esF_>&K05hb`ZHdSZc{ekN_^=?#vd; z%7uX0lDk1X&^MvnNj}tK5w<5HiX^s!{>&p!sXd@S%z&ujTDR7@5u_xbWj&i955&;M zWco$;1Ez*Ndstc-gP4@jxOZX z5>b?g)f6-`4T-7&AVQpWV|a3h88wz)Am`HI`3CYv!kuriu+3OWyE1rEI=ndjckzv) z!Sw3p{K4%)2jvYILF?Kn4SZ6aN*TM-y6JEL8+T|7M@}D38*l9dh%HV~W9#BJZApDp zMcMIfv~t*5#tMdk>H+*?+@WS;mrz^+ng6nD&G@I7qS~|s%XkF)!}U9|D0vYe`HH*2 zh*x>ND7z<=+)I3q_}2C62wJSiMZJ@$&WT8Nd$a{2pt=A)cNDKn;U+fOON7AA5UQyb!8nuBasI`sK!%ClgiY$`FN2coNZ~sUwn{{+|o2S9-UbhiA~bL zk9UJ)Hw+$}Aa&wQ?8fk4d!JjsrgRFR{ygab68==3(IvOAu4Qt=4Hf+mP21>NFZBlj zPSQDNNT~q55@sZQQRWhV*YJey3r2!cIjx0*XbmSF(f7;#3T}E0@&BS`5KpSVc`u#! zYOfuDss-@-dqIQgSELI8YO@&$k^7@aR{e;m3!n?8nS`)0jb|$OYt46M>!CYe>488^ zCH8(ZD`jVJoPGo0`g9XwjygU2_u9 zl3W>3Mv2r!28g){kMFGL#TPqdljN?k+nngTOcI- zL&WZ#pwfb(ZRa1B#Byp zSO^i?x6YhQbam=G1eYGX8G~M)%o>Hcsav3nX649Y9HQBL;*!a`_oz?&Pw4}*d zGC#~POqK>xxxl`#gAhyOLFqi)%`6AgOCks3Azpvf)gK&z)xu%NN>AWJ%_RCS%-L!Vb z4KT9AlT7O@`N8|zmlZu`TN{b+uylxOqxl+=K^Xx#wl%9+;0HsR{rUW853-}09aU)Mfla`g`TJLg?hfgg$MWbC0;T`Y7I2r zaox6JSf16Z(EAZM6mUMmWAZeyK7s{gHUTbVyPB&mzCp>g{5_po`7) zepP&fgVPzyl4+YP$`~E+>&RZ;O7}Z$d{#P-A&4S61Y2ELCau=tRTspv(_wBziLec< z@~lo7TdE=$)7(s>#Sn2CmXP@#+YP6^wWg+G&iw`90%9R&AZ4>JkA2|RQ?4$*2TxE}4Gq`r0+mSsCTXN78kEsMk@+ z--wvVpjT{yqY6IaOQZr7B~NvG@;T{cBTK!d(v)q40j=bA&Vsm70?;u8b&THGs`P8Y zHucI-6boscv;MpE1%l+H`(V$u<7#CSs(Sa{(^gQtUrR}TEjlY&X`@wPCPSv)kQR)Y ze44?{e)*%CAbN(daG4!CvX+nfkxm!|df0qsKh4BsMc8Ypyfan~>vW?^LmaX@S&q}+ zkC=7$q9szD&ak?#?9e40|84bpgT*_d7GlFS;eBh3sMEb1qIiPctv-j2R^&h;#D-P; ztg8CtzVC^6nyr6l;{E{+R=SQ6LiL660@W)6H)X$0iM*anZiiH7ba&*WwaCGJ;?Zq;EL`knNK3NXdNC;Q@BKxbEM{+>Bf54s`L3B zcvPtpNiJc7qYgcWcx6CKXzqj;`f1XDwzvV#Nj(Rh~;)lzwK}lW}vFEhpo;gSZ zg55_buN=n=3IEeA-$3)kkbp7#GQasXAlTB$A222Jrjga(MAV$nRf@E8zh7v^3QXlZ z#HgNq87lSsRhV($kmrZL#d|0$N%7os?ZYFj&JV6eEu7KTJnJUOh<NmRc zsO zfWc;E>)#<$?Tz%3TEmL1y~ct| zc6my6>xz%#FSXer#j44_wj)~^B@XXzpJ@S+4nxJT($KW5nAXC4(NS& zvYV4vpxrxp)A-;(cHN0>ANgf|k=Il_>e@_5lOcNqT{~ z@2b?h5QkDt?VI%jg$>=o6S2#iTOD}a(x&0Qv^K*Ir-0gM*Yh6-!cRCitG2IxEpM4G zJ1T=Nvi@A}=p1O$KB8%`HM2=5uT&4(2zz38)$rks6P0slYH!6azW+1NHS1J;JfdRGwz@?H+DAI55Qb<)&^ z)(D&}KH3C?%2ZbM> zi#LL_%-QB;Vx~@0&Q!GFokexM?+W47lh|8xk@GLM4h;IMyCe0QRyW-=n7RJTg>QDikKV*hfj%$d_NNH+Hy0{0Itk2)50*5x?iu+;d&CwA{`6 zV#GK4{Yw%v$eC0R**v9!fW#%1&FkOGvEO@5zS#9@rnzf@(JF3c1I$_7?8LinR0R)x zgQr+~4?dWfyKCvK;U^e#I4D%rbus@L>^6U0d^z&Hy7}WLdtn((lWskB{X4jx*8iTF z5xZmR!a^KWqdfdvSI(;X+Oa_m2kpOvfO%?S-+{Dx2VtyhX-NT%q|_4}D3?IYGUYig>EH+MTJlD*p}V z3S&b|{1!tf8rTZGPdCZICn5erhon|`DxJ&yT82|)^mXZ>p4(TQ)k6*z#TkbTOZ3`s z6ss4k^1axi_M)p^pYM#D7w(K6~;bZndV9p7A;K5H`w(1#Xfj6?n7iB#L%z zEjNLZDVh^_-mcX?zSK3XA9-2dOXrk3A7h8bv}3efnPmVD?sXw7x#%G3OlMOWgz)xc zkl$?VH7jg(xhi!eG@?AUspqdcYxViM2Bxu}5?JQV+K@4VP zyh*47SS#=us1(&wrA|zVTpt%|G*XAItg4^cF|FM!&&K|gyJq5@+pfR)!QtocXJHdeDTWzsl+m;eu-;2NtutrrfRh+p9hWrJnKL~RSKu8`FLf@3 zW9YDqu-@6Qq}ziRm6mc3Gwu`UBX(w!m!M?JE-~K}D|^|oqs}q)1;D~*cH2^lB|h^G zz<<4=x=(3`-)%bh4X^NbB5Hd0k@eFXlb)Nb2UH&ywce-5e`0;hdO;71N+=MeWu_6O zwO(4(0M{-j75J^vq`g58l|f5gJYO0*g=Otf;ZtzVizrs>1Um8nfNW{9Zr9OrUfnd> zU(DA~K|CvLf7s7oT7W5m{1hrYAe$5Tkew*LrWWe-RqXj0B<6qL6}MW!$bKpt)MSs z#ay44`#HGz_0V7o0Pl{%39*8Et526Y>Kjx3leY!0n7j7&Pnj11y%ZHb*!A_d4Sv&_ z(sKX~U8+!(10eGY0wytDtk4M?kSBC9Zdn4}2kK^77rv!EJhoVeQqvm8WiWu>Dtoxwj8JPQpLVY5Hu#E8meGClQM%3{ zEAh3Cdf+3&xG_v&bQWRhX_@(8UD?Uj29Tgfk|!ySg@EoF&OWUv zPmATUA`h2?#tybYPD^ElvW^NX0#wmpY0>vTAu_!zJ&dQJjJ5bM!e%JLp-XgP010+x zF$wz2m3=Dxj%qzaOoi!mYN+k?Nxx=C;y_6B3FHZe%mA}9{qk34NSLPV`CI!vb4zao zluId~g}lMN{tcw{2lQ{+wiQpa8Ox%8H9P9gb=GL;= z(izWh6^6ZhIoF@5HZW~ZZ(O>H#ILuhUxleV>6t-4VTXNy7a2g2*~P&VVgyK5i-Vq7 zgongJ4-jDnTxjCrN!c&S_q}mx44{Gcse3rNAK4iXClu|nK zSsp&X`;`c_4Qn>fAyr`7WQuo-S5G<hvf~ju~zVX?X-w_eD*hKyVFxqziwe;mI!07ynX-;wPyEPW|l_H;1SOcTUt(Qtg%nxe2_`vZ%D+){J1i=p@e`!$gl zW#Rz8P#VxASRQE%QRs58@Q1!6Lnz8(;&eC&Unbbw7ndsyxtBvaDoDRf=V(7EiacAv zx?SPyij6kdpAhA3Bu9#U$D!F}cfZ!bg=r20&MMGiUCktRb4Wh)g2dJW#q9DQJ(6dA zfWP_Wl-pbo`)b1Pf_42E2PTYK20M*WbzbkdVH@oSmV4zMe4ft*rbJH8R!z-Y*T~r&BoT$j;vm^s= z<&0|<2F*w+-j_55Ksu1w@u72&C?D-X%FvYW>w~<`O`-_i0ehWSBg;UbX z8?Pwue$wPpU0$A-*A4M{hC`}_o zB*y2&?-cICw#@e}7sP5LR(gQO44@YS>Lp@uCa7?HN(sc4Gx@ok?JUXN(h_x~jvp?V z(&^7=AP8Gt|1f=^VJ8bc+|=s-Gw=Mo!|9Gb{UKHPojB~MeOxc|glv6*01$IAhf_x` z+xE?Iy)XF(fPUX2dHii+Hyr&vhldw{2t=qS5lSwF1u($`W1-rZYhVqLth0&2m5#P&9)6>a=3x#NchE23LYkM3-WfP1o&|gZu7Q2Wa@?#+%Wv zEF^k~?Z(UTKCL|hZu@x3(TUx}?~xamd&IEU*EoK6xsYOK@y35!=btvCxxvM&=p z1FyJL)zVLI@<3S!Gf462up!`i9983=V1qMf2)EawlyJzB)MAYUi<2JeVr2x4=2W(r z-uoVj5k6u@tNd&#XXbXi$(_vgo~9pWk^(-eaR#-bFOFsaRVm=A>TW-bs?TE5$!CS- z$4;tNA}+Sz#5!;@b3L!iM==Er&HmVA8iG)d5y6U2H>kauJ^x`E7aSV3m?iZUnkW^~ z_aS&MXJZ&GxR3fh9iQr-7ehK{azfI)BVw6&w}+Cd@CJb60SN+dp+D3g0E=M4*0X`n zTfheyX*&!O? z7yG<{A_#OEv0*N!?-D)nop+3}KTcG&Oq_L#97GNJ0I?XL471y+0~!T@DgQPnGRD1s z-8~=#2MhbRekbdY%Re0ICjcfe3L$DsQs(bxZjmNDKDSDD9BA!T2#+HJ1{JN+q(#7flr|6c6Q$OayWw?X%xCspEp1wGihx=~Pe|7{KA%GrU zyh;x4(BOexxXHT6vV=~Y_z5V#c82n;Wol$b&5SJ<`4ahhVrh=+=_!=jNY5D9m6NZYw*TMZ=Q0V z%_v&>x@o*w3QN9NwB9x`jmpy>7(6K%b1{(mFi4vZhMkl6tFTLrJ?b&vV^sj5>-TrWK+lfMq^H8goe-7! z_nLd~Y=_o@=w55;+1Ag;jFm5r-u7;giJLN&9Dcgyw6F7kLdrc1_jc>@I)DrGO_FM% z7!Fx9F#(Ux1KKj%cr)USSt#t+1Pe%8>DWr{IyV*0>?#0|PD(1|a?KVKer4oQr44>?%D zk%MiEFuR8TmoY=YY+I$z_$a{Nd~31Wkjf%%ed)++(v_NYbKJjt=3ItXRPcUMZ?HlI zFR-$lmrv3Qz-{e&<6)PGUqD@G;mwN#u=V1a-Fo+B%K*{NV9%lko)G3D1e1wxH5jW& zd?e^#g%`abI2{Vng?=o8WIY^vmOSIkA=NyUs^sGj-^i1cx5u|<-Hozcc<1GU-Zp^(&MJmX)xgen!oNJgOD(rZ1WtUQJ6hS{iP-F)D6Ddv zbb6*BS)wUO?C)#T<+2@*p>y;3EE$Mb$I=zQXsLmtb{L&e%HqLm3c9m>@OE>McuifvHUrrr};8i4lm)x&}6&s2t(p+yfuW*!|sbOf;si5btf6 zZg5;&vGf~=yko4nuNmi8`B&f*p5S?3#R#nb=>v7qPh3cZ_>Tksj*F?!i!D9ajrs(9 zd{TtFfmaGVjxs=M`e0Kbyw9Z>AenDeumG(R}J;!*|;{=xHVq(vDpD1VA2KJ`DFbP6SboJhB&bXRcWr|ge z;<~rF^|F@or`iSf&IEGA+B%0)jpZ-F`QeAz6n^T^+w6WHC9eFxTPd^Y@7zS)B>* zo;CGmSjP%h+g?514TY9uQ@!~3oA?%nAxb)7?*2dF)wLmBxt_ZMK&E6!jDf5s<2f?o znulg^=IkYl0qg2^uIA#Fj`vmO*y8}N3 zW;RTgY~uIq)1YIjb_B)2j{k`y@y&COOi%tbhoGpTFlBQ3CfYV2l+3kAEeo;Hs2xJ;^aROnaAe60 zz3exN@dm@X{8kEjpy!em{}XySR8&poYaOT-hNyMB{rM6u8|c-(eAlPhRpZLZ#&wvA ztLBFi!#!pP-=x~su#Ko0XpwuFu^QHs0YvNbY1+yi0uda+pg~NDEU3#vjtDo4EFjPI z#R)klmToKN8a+HJCw?E8OR8P0&oIl@S;D_V3DGnza3m2NCw+sg1wg=Wy+ z?u8At1ve&1itlnXzrlnju^sk6(^4Kzs!tDX%E`T$jUPeqnYVzor zkIXXKRZO+|SOzO3<-@FHWOQe5V2U;%gKX6LmvX>>c$tbGEnj?KmG1DMb8ZO_iShLN z^DKNcr`gxGCeWI#=IEnupjm2dy=1_(y;$w-squnCX(LaNI*qZPmq^P4{efGGskb=Ds;)Y+4!Knn%*wFXMjJ0~e=4OS z0J++aQSPY@J5+fp-U54`j7da*;8ufXK|0p^tg>H!<4U%O{NQdS{AY zmNyM@rFtk=%_e~-{>_jeC79)Y0mNW~wFyBFGq2rS3X$#K@g&wBHFm=_tj6zRH-77cN?BgDOy{+P6+^EPtVf!VzU@o$`IfMoAl$7 zslrTE3<+s93&JT4bfw%qregdozX*~`=*;axd))z-zKrMEG%gWM6)y)fmdhR}qNH0l ztzMF2I|^k*g8-ntY$qn08=Ng&TP0XW$IG~W)Wa86G7;dVTD~zuCk#&!b)*dNL+~BWRpvi zS&ee99bSRa=;M+*-j9}gKM-425XHq(-N^oj0Y2Q`Ny_=FK8>a?l7_wF<gwp+9V}R!p`9paqU_43!6=oTZ;Z?rrul!I||Ywm#tQj+Aanj z6mjpNaVn<6*$GC4)86U7D;~5F21!rN)&V7GTU?$eMa*r;d+nhgTj5Gv7dWpy4er|b zpQDG$$fC=|#~arHEsHfH3bGDsM(r=;=SJgr+GvRhD|t#}t^8OU)v)v7cv9U}d)07g zmwuLZn#}`PolgAofCi!b-ejv4>qT)R#u)XaN;eMiao>fhx0HbIcGi9q-Fgw2ypKQS ze+d4es=u1Se_?Y-XSi*)*!;3=FIRK)q;h^(73dqr;zW92Eb;^QV9IUL3;*^ICtl&7 zV)R4ns{>bFr+rX-H*4dQUaWJYhjZ?K+ZG?LelTBRFoIwCNZ#uMcWa(mT9*$qkfR2> z$X=$oywxkZtS(8qowV;3LQ{O|hs#x>{bds-8{wNm+wXk!J#y#{s4ZeVdqX2j4Nnpa zT8nk{pNpthYCOpHtCR%fLskF$mhfT@QTr-r`~UaL``2=1dTebN*13Fk_cr2?{y3_D z9VW4cp0GXhj#yq05hGDR0SA0hBi{HNjQRg?O8!4Aln?*`paT$HjR29K60rx!X`CgJ ztT>qnZ6CUisO~^%Mz2z2*<%?{F?3i!Iu{6r<5V4a>9HFi5h+L~HeDE;&5;gL>hGai zL9d8wrwC)+tsJXh{%-oLOD*s#%9hs8<6>uuNr$3|Z9P-@rJ3>Q_wNX_{=b~)%5^Zjv-ZyH=he1LNH?B1wXbQMhpY{e_}Ao)XeVcL+N&x#cHc;F z=aKX6{QEb&vyWIlzj{0Pm*X7#kW1}T{S0sk0g&vNQq>3*6Gvz4)xP_mTG#`m)+47B zInpB}{X-5XXY+~Oap|}z ziC5CP0iGg7)YThi?#F62tTV(-L^%m6+DAr-h8jr;gos7`*rY<&6JJs12rjYv?T!j>(6;vvZLQTVZWCcRa;_+-cPA80!lD{^q;k12uH;`v+Ibngp+my)~UTl@m4&!0p|srk{llB=S&921=t3|F%MJICi`F za>6uo4D$Nan^q?)dLGTHCS0FN&tA&8QK}Ppg%MaZ*T{u`%co=@zAXnFcxeAF%YBea zXkxn=jwFXbDHPv{XlI_Q8m7ZD&lZ}>y37w=wWO*q@zs zQFC|l6~oq|nG16>up!SOt7D$hJ}2&xjrvs$1Ygdm6|wLxrir!(BH-%_s!-!HkIGhR zF*yS&&*i>G8~(B9;aPx@1GH3eH*FduQ|+PY{O+dyM9eRo1Z{3-b4^dxQEjT6o-nPF z_YQiTI(wvlk+G5W;p`u$sur_d|A&vmJQB?It46vIP1h5RT z%vh0czl;_Ye%Z=*46Va+>t$>^(+%%?0o8xk=iMRtz$_Ot^s`8Cdh9q#R@RIY!!(qm zQ!`g23bE$ zbb4EvP*kmLn7o4<Z$GxHuwPcvaP5(Dt3Hir>&0Qh{<m7zE(IQQV3QB55Jsz3T37KAgt{!2%MT8qB>LsK4ds^39u4u@-m9qovll9^$k zXhbplJLp@WaBY971C!OH)iIJ=S( zhY(y-72OsZ;@aRcz;ke~c0do^8F{!YFrL!Rqsrz6y#n66ELdL4J`HMr18J)q#{+G| z=;T*gkzkDv(ypr}{WBwWPYh!(1Lx(JGr8Fg`A23?kTJ+X{Z~?BTw~hr9P4tWt+LTw zPP5tFyoH5H@IlIiG^-~-Put}o;`vza-yxSQE4;y^S->&KrG_^rB{Qq;ByMWv*Xwx^ zVGzalc0Ogg3-3DX?BwJ<#ZFOHDPvJqvn?zpbXb=Ml&E7GixBSx|9fYem%LZh7F$A4 zcRukbQi1-&qgF(ESxFCi)Xql)>Fe%K8=!|>yGE0|AB!`%dA<3?%kQ>p8Pbb<_(9%S zSveR8Q>CbBN2MrG5yx?jOpiD2`|*Qem-U>poU{H6RibhEF4lh1w^})KMXlnn1K9h7 z=z5bOT!GIlKjmO4Rd!Qf_xluuPB1UD%*lC*{{yMmxi4pBB(zl8=j?9#c%XQF-}m+} zVIT=}gaf+g&4h8u;lWShEPvtz%D=5a6WI^+9oXi+Rh2#Cg1~847d~rCyKw$V05986 zPHUQ^XNAb5*z)-j3C+-VVA0C+NLTh~fE`u&^TXJ+YE@U`>k0M1y@f>gfzR>_@72`nUE*V(_$UvROgluPTTo_X9!^Ovm_K3Z%+%8m;<6NK_2K~H3$>#S7DCPXvhgBz^1EDb=aTvG;x5*OiejHbJ9)u+_kNHQ{1#M8K{ zazU4?ryv9%VgZo!Ofy!dHyoH9>`-K7bUs75bMGz0nSXIbjlLHwpATb-ea^b$3558d z+_sONCAbfq(GdwMjRsKt0?xDV8vn3CYY>@<6}d~L**`Y@4srb~mgEcpjz8HN2MlCH zdPwmp^AVrOwhZG}KLMC@fJxN_v(^j7t+<^WjhDBiG{4}zc=8M)v}Ng_J4l9(ak#Nz ztlVO?>4Aa_ofL0QzO%?A!%>db?iv`78dI-6*z$-g_`NOofXEy%nI@I4ss*sH>XEsd z5IJf@3(G!zep$)#OiV%&#;KC5aB;WcK0&cJ`XvG0UHbzJ+;87Jol8BpUpLQT&f6ur^0iqSv)N0STzEjce3xP6wScDz~ zd@StUY!$rJdku5VXAj{%yeMInATh)+omfP8E`qD-fhx>$I90<71ODm_JTz7QMHO84 z)!mCw8vO3i>{(28JV;d^^rb(epy32zF(DPZPYj#teXDfr7eIn3!jJ+;a;Z{1z-UdE z{qkN`04OB_Dj!}?2Wtl=Siys#ev8@Z3}A^6VP0K4AQY!(Nt~{W8fBRFEJ{@MsEdOU z0SvG<14I%6gLXCG24`}b(iXh&3XArvbf1eqgID80nj&W?yYaj1zAtki*M3zJ|9o;o zMG(j130BE_rc@pal#IpPTL)k%Qc7IV0cNBgujQv9OIb8|XHm{?fqlx3z=5!+SWJNs zS+XZYA~ulF*`t8QhO@6x_xUFQt49l&$SaIfLjt&aEck7_!*xT@>S{fUnE1iSFrEd} zN{7V>AYK-Rdcy0f{3eoq37pg%WJA_T2RXH*dZ^J43a&q9Yd-A-$d_Uh+7$0aU9R{E z`a=g(h>0&Xwf%Tru|WMhuZrB`<=f)ogkRN+XBH^JVe#xPa?n|m7C4ABHw z9(hZM=n_i5Jd3e7`+p^IM+>YgZ8jizkPpy!JHju=e*zV*X#KJ z+Ywlv_8^#orfqZIi>mJany%Af!IO*Yh>ehF^GgDh{tOY$xdL*bLpGbU|;>y zCbT3&2u^$6Rv&vebR1-Y7iK>Uq;l-RAc!5>NhYh)#RHgqyQ!CCK*SUWygOws42Fq; z-Lbs6muz=D#O{DXAOjru>LCsQm?s7DZpiGQq}z!MB$J_hU*SCT@5pbK$%7+27;|D8 zb@;I0JQF#{ymBu|;LnpF+dY1sO!;5FKsoP`xw!H4O8u>kA~SBDJRL1s4C2Y5zB?Kc zPabNsLA44^e97R!)&YGUMLErJD(-%j3pLqo_vlCX$=JQ0KcH_cMGx<(a zT`^Sn2WN=iOf~}nW0k-H3aTJs0}e{#0Ujqq(;u0{jQscT(Zmk&WDd`#t2LEImMX=X4XXa4|Igh45{q3P7f+xi&ca&U4|dS-0WKkq?<0uV0%)a)T2qnPEyhDHP6 z=dti2c5@qAz}*me4GrV>_R-n|CwIEC*!<~ezVmEx78-8&305?X?=7CHN5d1CP$%X9 znG1_4hWRidfyFSRQjPIe2zWO8@JGad#H{{lr0LJv!?~UhbI>LSRg>kvkoG;|h$W0b zTwN~}?#=~$XFYvpuJ6;p_qPic$^{FX0dfC`~YP-o5g9sFd<%je1$vRN2&$FgMm}i0;WgLjx1G}<}Q@QFPLdRWl>No)2O#( z$6*hF7&2Ikd5g~)D6=z^j)t)Y`GUw-MU(u!^)R9{$J9_T1{qjL7I=6Z;r9mq!Hm>3 zje>Qfg1msQcLZkfNS@tL&3gmKigWSe3!O#}4{jqvJj_G%kSl1^&3M!uEF3cpapJ;w zud);#tw@DQ);4${AMp)Bi!VHaNH&{|SNt5RC^&chUEcG5mw+sfTP1YqL6~vI){Em5sdB^ z+~UoOumv$}LGJXM{|!eC$b18=W0Kb3Gh7UhV*G!HavQL6=l?ZQMiM`xc>YzuTLKTZ zB)|16fZf`89IkctL*5l$F&WC5JZb+9UO#DC%Z>vI@yy3=u-7;fSpMwpYp~a02?lCPy4}D#C|BG6~n}1q_2X=xrlXN5rKsD-0awi<#%6A?gd+|0j zqqEnJZEpwo)Uw0xypEb73-TyN9!Sa8)q(trdQK7CDqgGI{!pj0h3ORHOWZl2qJL3@ zc9VpV&(Qx)uVadZ-XfsN3j;4?8}*H zckmAi`5njOsF>o83Rmvso=*wSjub!o?zk=Zmipz_rO%@~a58(bEoQI13l0$G%a!*H z4D2O)S{I4qDAR!Rk2L}fqTMOE{ICpqFbE7?0tA$zPsvFrg>1=7yYHK z_vDknWv%1wobDiu_v!N+PA}wrZu5}Gb*Hl1;iDS3hYU^s&cHzp?t^_TjVFP3&Rl%_ zy{+{{VDI^rUFjB3AL8roea)Nkvd$;Q(LUsp*KM+e2GYiTQ6kZ^CIC*%k#@h0fTkp7ff7_rArxH>y4c8&3kfI_gGe%#KGGbJKvS7 z8f7gBp&8=HMT5BIklyZl7IB9=(0?*&s~nnFa$UU*ap>-t*ke z+4WjlnPb$AUH?4oYiBjcZYIlG_ct-oI$i0zR^2rHf)@lU-&Z9+ zYe^VB|L#6kb93v8`);nQaVj^^Lrv{YtTIX`)}IE&>F8|;;a$2$N)e0Xt*doy!ksnZ znymM=r~1ypDvx7j>}97laO3hG(YrsXU#_?Z&SOeGXTJ&jpPiR7-qp=E^B+ z;@kAzl8(8ajkr{N z9du;2H*?JGN5xEeQ(qT@oj+?KC~cC{Jt9}KUUHLuPNP@U{rO&rV@>q0MhA;U{|E6Z zM1hU=-ZHJ0n>A;brQX-vPies##FehZ+;DB(daTh}H={9jTi>$0E`QhKdxJ!6&%26q zL_G*YX@|PiA$9cJ##KtEx?8o7->)4xF7rdo{pgzZ!rBif{GZNH_0= zd}P4*u*6iTVf4Kh{cXucm^+5|+=E(L4qqHx?I1CU2JGCI`n&Dn*e(!;H3qdaCXVbKDWts3x_jnDe>$?dHEz9HALL94pl*N9L+C-$n zgx4ZXUd7(H7&C`xRrFHxe|K*r^xkH^Z)q#2(98XqbYkc8r^Bm#CCl$$BVT#Dypk^v z-=QBDI>%O$YTJ394L>U!FNQM7Y5^G97u*{{7+wth-L9EAVb@?)uHmbs51 zm1FL^2IDS&0(vqQgU-<3)Wm^6x~m04!`YXkp+gZ{;j0u53u z)}PwRpyozapM@H1*0RoY$1FkLoawLgn97jM=lazNw~(`-668UsCi!b_RQ--3bgkm# zv-%DL?Ihz3ww?R=lZMgjw>)AeLJ}bNYbpwr1BFGf&IP7I%64GdmE;^#!=C!nSji%d6qPg=k=@pQAJh0CPfK18PA?3Pq6W)0hB@{xN{-1mW`sa)2tGR_d(gT*Vl~VvbVQg=oP()9 zvT50#=0l%1wKFlit?2wL>*O-7NFqRA&^< zV^RJIx*GD@_~nzG<0nPd6|tgFb$6(Jgr3-D^xv*~ieb+3UpvQ1szif-ZD*uUtyeZY zh^`dyou%6jVeR6t423MVxmv2LFQ652N;@ECBVXt9cX9?$ma!`IhL)N2vgah*yqova zvw7>*HsP#lO4=j&wTQi?AgqBOUb{# z{8)qmh7}Ir~KD-_9J%;?wA& zF}|rKYb}ZUa2YA@cxKzV5>e|ll9;PlpG}Y1&GaF~kAR#Wa@h1$$_e>ZhY|e=h4IQ+ zZ=J2f^14SdA30ud@fwTH#uk;W{NDXUsvWMozxtA&_y;Hy-^(CQr1irzekjTehlsy- zw$7mK*|M(lWP~{}v=5L`b{caqxhujIU9YE8LYvymH>8F z>$Y^|eOqNAr`q5K2I>-IO}w?6B*QxhsdhHL#xOyc0W!_W?*S;s-|>R`H-yNQu@`M+ z#40(yjzS;&Nr$S+Anop>e`ef{cB4EF7k%wGh&s9+0FIPO%1F+&gI!(61br}9P*BkTH9uCB?< z7kjAvorbmkOVCZ7cyMp1Q0;H%m*~q@$*lqPdQWFf5-{9d4P-Jy^w{ETJls+d_ha?W zTJfdrXzlYqE*(GN0#U}^ho8Y$zFo{&ah6gF%mw80MGNNwf^r`w=Oj|DQhFiH*TEVr zfI{zp6eah`!@m6K!#qFZ_xUcXF#h}emKMd}(VcA3-0Hl5EMjy9kqI`2-%ARo%gzn* zt~H$vGX3Cc(VGm33^PU^td_!xn9fcF@H-;(ub5R{m3#m$$UQff9TS}&=byvpG4Rl= zUa7Rik_nFg*8A}xL%wrBhVnm?@<580i%TWSr4kK>`;s3@=^C__k)h6PFg`lN5)KVu z;+6uS&ddy*`Q9gMrl{dQ^=L40r|`k${A4o5$4p+WnVQ&{TfEu&R)LjYVRJ&g575W3 zehpjJ=i4AYNOZ^!;US6BcjG@kkb%>A45lD2nu7!KOh)uRRR~WLVgW?Sw084Cx3u<; zgU!`lnQr?-mJS()_!>XPVDp-BQ4mOBdITBFAODGl>;o2^06TA9Jw9#zuX@og1ye*} zg-T{4{Idr{*cF7PfA9ngsg|piIhQH9+HtwjWSCd)|71#4Q#xXQB%eGK{0D&KwY8bl zd^R8_f?ssg?m)Or*NIJ~!rEPB(;8pg8f!>Rx79VJD>)1ydLLt=9gqwv zoRZ5Ux=x9US^MA9S3^ zD7}pMSy@nB!wB8%w*lw$-G_&ZPE_p6UH9VK@XAR84$o0Z`%L| zT!>pyHORstFG$ik`#p~lJk~OL z46!+RHHn%t$s;E-U0Gm7Q{Y^1F7KxPQuxz|;VH{b2w{E-frlK%-b;A+^r{00RZ27t zrfCEaP1Xs5bNMnXn)*DLfX@myZJP__gienmxZ{YiY>rq%c$n0%OH=tiAN|+xWpd6) z8{pJF>=+)3$J4nfwAnwl$Rz6Cq(@m2mA{i7Z<>psWXi&Up*8M&?Ns^nC!JU1qX}YW z6=Z@x^f2BL89{%oH7zquL*RfIz{oKO@Te9IV@iWwo#6GV6sVvB3l@1foa6E*`|Kx2 zA&kCoWaTXUah42fD}w(FL;N%&hX+8K_qse?%Fo@KK_ z-#DFEhIf{^ELJy|?MHy{Ai?YVnM87?x~U_{V!SncNC@yGw-LbKI{~MTA$u8LBYxtnL=D#%6moWtM*rN`A+#~2kw9rr}Mw|_8TXXuCvtV zTOXV!lkSx|3{Zz$`hiLg8RTfyRAt}lUPk0t_Cbl{ZR}Csa)9lyh15CnL=pvp;{qk9 zLZL{1n(b761usTV<(CBV1iy+mfHKR%Uv1Qi;VVG|gokUh4#7v2KvJjxO7_A-(jDR> z=l1?g?#)dg=Ba2ZQGx~3>V*WSjt&Or@=(!SXwG3w1NP~25m)}Q1^bJod@;7rBdH)G zEt=36;91`UB8dw1=TFK4RAo^SV?kB503k`BxC2mv%jWhmK-|1Gw`Aze}o1h zt@K%`RFD#9enmQ)3;<($X$P|;*AChFX`^{Q7H<=Vk$7~WEHW3JN|WdXO7uD)(}#oc za-S*{U&UnFVehp(e1O3QicZ^x_E7z=Qe~gcz~OJEB9FoRsqoamGZ%nbsgPsQ501+i zYNZ?FwO*Dks!_xOS-zoMqcbAVIwPL?^I{#F|pbi*O=4z(|y3NfW3cx!Mts@L+W zKtcekkd}{ILs~eT^n#>?<`%|fn$*#i(2GBVhY-a;@g0Cg9iVM4yx(?tYHsx^+o=pi zll-632(4z#e+-`CYTkV$Z5zwaU3_dGu{fH>bW0^b4Y73TH~H5uI0)=V@R6xt$qkTy zE|^T^+YEZn8|`G$$|#OWGA1ccr0#d!g4~Cf(&@oxh7i$2iD;U5Do{F!R#^*x zH#7ziaPTX;dVF1OBcDw59>^Vt-{hgc()%=hH_%o;yjbA=FQ=-~^AmFxr%m!E`%uQaUqM1N#Nyt%u*fNOu%F-p)F=p13Uj*Zn*o2CKXK57EMCW<= zKEUZSiLtAxSS@x5dq&7(h+ai1n5BfvrUhbYiCW`N3?($NMnb!l$C( z%!n9aRw|C76-^Vx&t9GWkm9qD?*;&~sJt{h{{mH*L6Zg05j=7ex2CiYB1LDnIRqCU ze#FClZ<&ut&(lUbfYQ;l=gV81ODl-t2Yb#6Y4%FcjS!$ zO1TOG9_FD*OPE5qV@xSvn@^WrR*XLKxi+2&wWQJy1k~Ol$nR4u;|~>WlA991)Z_KO z3$Ns95-h+WURWWO9s~sGRFoXM;z#fl7g@M_-;l132Py8* zElCq2&`|J?FnBT;duHABQyDpV)EI>8Oy-fuf#hs-NlUfqBPk=$lradqLu*q73O-_x ztpH9Y8>NHPzV9h&LZ_F1c^$6b#jQV|sVM7fcKbNF3(>_@P>auzbK=LcBMDi7YCx9H ztGGA3k!Kq3hn%7MDWAD*cJNa4SndIeeQNX>P-z~BjRxtmpeHtAaTVPyAVCoiy1L{~ zL@GV5=!-ZZH8+G``0RTH_l=xKjE9fccwlVGwQQL3DnP8EOp+DzlcaFCGUlfN)9{zp zsK3@tw+$KC(RqlA6_C}>_@qk9aHk3T2XL~v9>&yip{-o2H|-VdC!oX?5@be6!aaC_%~nKn$V z+~bjd#&id+so^4S^Sv#}j-1bO?*$*i0-uYe@?=i?oB)d2CkTQ1!HU{(3jmSatyiT< zL`O>F)4n9oEzxq&7Wsn^M3$NZ9EblI_vI_a>de`ZFW}Vw!vBf4xC;k%W2oW++Iyv;L!^u{4=tnixL*`EdX|;lh^j zUxjO%SKm<61{geSQrbLr2Y+&Wu{RO3`J&ZtFf@ySVcNzuG=ju%?%Dgy8G2?8KU%|( zK;;6Qa+Q_b$RB1o@I&XL9dC~rPR^jgEQ$^;$#cI zZ7#K4R}?=eBvPjtz%vn9x77t$K3L(C&@pYb)G^`gcTW+#UVXLSU<&k1i*2{Kbh6y1 zS58N7mPIcvf1dl;=!lAlgbQQMJ!`O`fA+J>;(Vk{DR(*Go4TIUg}Ce4W#Nm8mooem z-VWttPT3k-K%L79FozHSU;;TAu*;ei?YFSMHYPRH3dV$wOL)83_AI)$+&5k%+YO2b zdAepbUA7QjI2A~G?eHyMx5%5DDLUknWJ3xmA=98}Q}WAGe5@=$kaoY3BL8!rv#-Po z{Y5>@zVw1aQc?Zi1dS)X3B#fo3hl8SX?=P*?W?0*KwgwJJ~GNX%9!^5TBYvm%xtFH zfi?6+RkU&QsZtNO{xeO{s7tCPmb-D?1%_RalR0AMJzP+MB7obL9Cw4Cvs!tZ1+|h0%gXI_F%h!mNd47XtU&EB1Xu1-TBkYLCY=jH+@v`TNws>Fp5Q81BzrBlixxTkYq(E&EbES&F*fokeyWcdULgs-YCz-eX*!E- z4+w|F01x{Na-zsWcpn(igS{ql__q9Dbn#2MUj-B<@Ys1w&Li zu8-bZhlpQlr9qw%wmk#~-OFf~D>iX9<_iK@QY-4Q<)M5TxBr{a+Pb1tK1Dpy|!S z!dL~d9u`%veC0;i`1MN1Tzh#Xjc zk(2BUS@a;k!x+%c-G?SoKv3SVEZRcP%R+HfU@#FRQ$C3BMTSeu_Bdv86i^9O8S%?| zZqR)Pp;WHn&Dh)Oa3B4u4Ij!Ok=un%7cZkil*3S-k~T;(7bw6MjgpTBibdSakBkmC zfBjQ1wPLgIr(6mK;}5lwXh9JC4?qYK3n-jUfJoQmbrgIJ5!E> zg{or*5kY_qnd=^c$-PP^SJWe|eZqXZ>+XQc_T!;|P#A89!gp$8@TiPIxg-fy@Yajp zNpPBq;%bPoD7IQDddOm1p>rR^Mva>s15*8ebfpypMUJ*f*OKzFO6>Lyo4Euhtthe)hX1+;*?v1%HNy?tTiF2wggUpJ7pQPa}p1-65=m z>@|p9WUl*fv$ zF$!xvhOEJZTgP9N+LZ4=)StEi4A%y)BS;A+GgeBS0@Z~xoggneI|wGFUkgIKDMBe@ zr-jZZfm;hG5L!blOqBo>U|^vRlws8{z0G)+aC(Rnx{23x?Q0$$J@U8LYjH)yQ8!cG zdO+3feP|WV zSulJN{Oyf+s6}00Go;^#`Xj(5>F3g$$4{oETV1;u|~}qcA<9JjwHh(U`vKsFxZmE zEaEZ_nju246`>#UChIGLv!NtNJ!ze}{6;vzv{G2Q-nrnl6*UmL1om1YTFr^S>mM@h z88X|f+aNJLiz{suo{P@N{9%#y1_d@)!%7#qmj0FePhCrEN4{*%>lA|@-6zR!DQIuk z%WK%m`3}iXgpnAsw`6TIu~I9-Azs75iVrfCoZKu6hSVL8iDBNfbV)<(AO?LlziNCc zyJr8OYfYjl|7C{4>0mEb_C(fm(`JR39VgSt5aeG4lg$RN{gp$zp@)1A2u4fSbvWT) z>Sf~~N(eJ4f^WfbBcWJI!1~-ved7=v!#V3aA~vB7&XOKb7M;|)*k>KC;QK3pVz3O5Ge&%og>~o6?J2 zv{=e8^rqUZ%V-&A=q%n)Te?xT6rnj6McPzO1Z5~P21T@JlHPO(7RX$@ zQ`7V~*KGYMzEjDKZlj5_IfSEAW|duLl}|o^ge*rU`N3{Ej_@+=T_k06?9fqA!Gvc7$D-w(KS;* ziVpLY9u=NFz%0i`-F*)e+?Y*YJMJDnz7mlYWOnwH@dPgf5H;TjhXrE(5I zRAu(8B>?Yfh~xiU-eR>3v!vgPkPb3=_wq<@LQ>w~MR_$XEy$s(uxJ$bh&;eKqDfT%<)&#j0%LhlWfF{b)t4&B7-TJPJTzvt+GVQYqFY)B(4~(}XJQq($4ptM zEXMP%mhUc0UGq#WJH7x`$^$#9X5iGpI_V$fB|&W$fD3kU3mRg!(O?7FAt!}H#yn22 z^QLJ@%=pBsn}c;0E<9Jw2D${4i~v$Rff$mtm=^FE&zqEt?+>w_0=0W$n^}3*tBW7| zR5xXN=!A;8uEL5$9U;p&hqCnp}_u&qkf&{5{!3 z9N(^Vtgv}J^;tdx*Hx8a`EmNOz$K>uuilylJE>2$LXLtTjC|RLBJeWlK#DH`y>y~K zSl33|%C+J;CK0`&GC`<%^4DRY=`$lZnPVBRcya zC1mTN#zFaEX?Y8Md0CF?0KGVxsNb7mj2xt1$KzoPg-I_=g&UR+6oqe11Uq!6Ds1bL<;NK1!&Yiz2t z!oN6)G@pBlj{_<3JivY0A*MC72e@eqf!bv%jL{STHqf@X*Uzen{Wf^z664_+xQ&z| z=r$0xeAgEsbge@dH>B}TtEP~ql^=l5kHGiswiBeMO7gt|0Nk!_2yZ~uw8;uLDM0>t zSxN7>?8-RoGNjA2!S>9^?GMT~T1(d~@T|spw~96(N7I6CBrRMSKo9s&T*Y9B_qCdq zj-0YOuGjEsq$WFtMKs>&4E<~)n*h?ZhxFLAShqIxxupk(AB6v5k`dnzqHW z%=%3QNt?O}knty@UG$*_dBsEKc=79^|Hj| z*BSfa@?9G>L!u!&!*of~J&0_~So7qXj@&V!?Ptcejl@vbmqrpj77mD}(;PJioKAF` zQ8c*xjRXCWCti8~zf2q4WJhw4joK1N&wt2dX(+7Y%%m&By@F}q@#dSXvHO*EaX*3< zi6oJ~uY%Ns38>2biEQ;HM0F?2NT_|hL^Mq&E+^HHT!unl6-Lh$Hhe2T90%^Um_od9 z{Y)|`UHIHkHKY?q$D&^qezSD_Q8(+8axm;^~#|+%4SSOiGS!ppM0L=@JYKzqRlBvfKZoDNeUZ zYsPdRd#km#~l zI?vuz@3pDn#Ng*_@VKGHRda(*jv6JD`1ymLq5NxB@P)yDOXUK9Fx%_hf0#5E@95iM zzv;K~Y#0WdEvqvT&c+xL>4EWY&l4>J=jn32Ho9C+b)w#UVmWEO(1LZ}t9PzI;g^ZR zWw+lfi)oG=?;Pw6l*ga^IKVSMZSWRgV-nc7^dRGi!b|!q^@;1%yKtqi*%4{Cj}Py> zGBkb7{AO4Ek#pM@@OKpy?g!|4c$-wLDMPZBV7Ah;(@Dj*w23T6B1mVS9vYwacB;Zu z@VxireAUCbdk@6~zP|D#8;R$L{p>9rP6f3q6%1~tapK&8_ZRu6C0#hb>}rwM{89c3*Q8t zdnYW2`xdp>1d5qUORTHcWQ2eVmXmJAqLXbFluHApA3%i1&_HM@;x8E@V0)Xb z&On%M4HfVy7^oCGOX_7^ard8r4!vxOnKP=1wpO1V^8cB6#o0q4x;(UTJo_<%QFW8v zaPi~QzSM!QPzl0L^mUX@uqC9`O`~|DqMI!3S&irv##O~^t4GUgWIg=Y@nh*q)RSu+ z-e2#`J7~d=xY?X*6t{DFND?ALtRW?b6;Eaeg4I8+BA~bM(@2xQoogaM-E-?D&SutG zWx9hsu5Z~8^Ej-xRaeiVgT}%BaF4%nR&$d_(XSl29Q&ghb)hh)k*dIubiK)cShTzG zcDhXgt^qgZX1kOM7qf(%Q@%_#?fQj(ts43G<1JTYFWq@2IHH8Ur^&eLe^E+xpx^Go z{>tuNs9JR>+$N&PEto&M5>b547DN1z^z5pAME%QBI~`ynh+vbeDu1p{E4J>*=fKf^ z%^NF^)nfdI_$O;&qMHLlF5#Och`m%3^bss+UFb}5gI2zUrb7c=4H0}#kOy@Vi|p15 z*QeV)V18fen$lt{BE%2QMHC~NZV{Hd%*+bPj!~{R+iKWqI~_WmZEahgjgD!gTl#)b zt~j20!7k#%`hO8czNh1^mqf&hVAOC%en8C`EftHwfV}e!w}jr@^n4+biQPjpUqV5t zn4KXxf(PH>Jsp9K^ETEGC`^n0R)o&(fTgFgIeds!e7@Q1g}Sp%-5=D%p0rZ2P5-j# zE{Ug0@bf{|Q68+;tNA+#$a|EhD68APqYAs>8eimSvndxk!imwdvrXnhST3D=S znh`n-#*udm0astJYC9n*9pi=ZY=}6z5~fvoSpxEv0k`b?AgI#l1vT}jz4oXFSxmqA zyi`0!q7S0fBMxe@HrAci-tHkY#Om)XHQf)N(Q2(jj{OLZW&O^Gg;V9I@x*ZiJ_(4- z+00By_=<4G(tR-uJF6ua_5Y@gN?{VGJ3fZh;k)wt-QO)X@;H{5g- zzuke|EzOXHb-CBD@m^hwthh{EOZ{A=^h5F-zAZU-Bb_FYP0rFR7A^>k?(zK|U?;=G zLzR-O1;;Cbq3=Q`Pq)oE`CeXlnm#MCu+&NfD>(eXedl*g0MXmm)D(LIiY=EzYohQ( zvjfc?usk~Stp5(kdwJZ!Fw?8r`*jo{k>x5rp+H|OB|^#mG{YTH-1B^rGPz6O>hST> zZ-7y&IqQ5|BqwkPmtzz>cwN?V6f@BYGma3>^J^ms^v@mB=XME}P7vj{{F~qP^r+Zx zoRAXyK21RC8)qbQPQ6*O(tkiJ43=y_dF|Vr z(oqmNF+Xb@GoPVpGnmJt8Rb7x+Cs$A3d=gKTTZnVM)pTltwGxio1zs0pwb6!Gs~ez z697aSvl#k9`ZC;|Y$F~LR80B{MD?^2cGi<}{t+Lp?Z>oYW~bdWqk+g6hFSpM*3ccy zP888PCMCxjZ<3j++%K79QXHCVOy1+YXhVzxJp}@A8LlsKbJEmD1s@ydTXLBTcyD6$ z^I`_=YJ=~O*}MF~srm$vHiJ5};6?~r;U}{QqNNiVh$SY!+l3a1MfIpoyU3P@s8;jS zUOa869^vbM$s)_CAAzS+)MGoyc2L0u*pNV6@S_AA`+VY#q@lqc7Rskx7Zv+`m;0C2`f)O zl^SGH=`eVq(eUKO_u@SiUe4@3=z>nyk@o?>wc03&SnV-R7)aH(?*S@=36`h`=a1NH z5ig%7Dy=iEj^Uq)-Py@9O4mb@Zw+;&EsPkIeqX=ao=Flc6dT_?)z4SeKrY}$wIw$^ z6%deAdjbSko_2-E@BiYn^pAxy2ywc+T@KRYQ&4Q9Ls!$Eg+LbPL*vJ>`K%^6 z{JCR|0`&Bk=gV1D>hi+gmQH_8leMKi4^T>=n(`jNR% z0`p(QBpV9-V2!#&fT;9|BitU}5pU7{H_sa&aO!xUZ~-7w&YKN)s<T{dV6|rH`ZR<8s2-2`%QKnPT zKCWhq@{-P%x;)HAww*;N3+P;eC$L`~oCn}oUtm!HwO}?hfxQ;X-maqjesJq|DVKk) zjX!;QJC=!!1;DZH2p*5uLlOAvk_A&h?_mXDgE?BZ@AnebQdUGI!(258iHDm&sl#X< zBveYXi(8ZIRg~w3@_t7hW9h2wQ2DYa&fY_n2#}G(yVgwmg;{1v@#iN_IyKV(VI&fH zm;1C2z^S6VnsYH}(Z#js!UEV(O*Zsb$CpprA|?rINe!@6ChQCqelKzAPh6X)13K*U z`Au4DTmbNjq@^In4Nt2S9LG)yg7B#|kc z940H_0ekfo7E6J@{sJGo1-i>D@rGZ~_#li{=^n|(WUnN6u8Tf+EcS93v-DI0)++vT zy~=7uVw5(907>{OswUBG%W?zuA|+e+G4eoZ6jGpo3a^^_%If-aoBhZ04@#mZD#C9`A_3Ns2)_#8dmJl3K%!Q8rw4`eilH5Fm=p&$=mbCIUI##$?AGKIYd#Ukp(lW3w4Yr(tRj#33+P1#Pyq?D=Q!eU*-R z6FgzQ}-3BpkV;iTStS?X* zk6$m_L@&6)$|m66t=LPRh>;0o8*f%@Hybv1d9vyJu#T9df|npvMKv3rMAMsZ1c?+M z>97@QWb@%>F*u0CK-6IiZPl9LfPn--P22rF07`IDx0=FdD6Ce|g00BoYe{T2c3ZR1 z`4xhNz9_hZjL}a9{bIV~%unI6rq?vshyP2!Cr?jKBL9%RjMjKe2cN4=s4z$Y(f`h~ zY}D|w7d~3SMD)6E$~VziYoRtaAHCBw5~z?&lN8O;d1Gg5I%ll)gs8EhE?^`0D~a!v z8t%Yw#ynF0*KMz-vs!0UwJlAyZC`vkEYMsW%jE00#bZF>m)Kwa2*TY&3RvyZ*H9bl zj;l?hp0}I$`K+-Xp`y3#9|^h|Pbiz57_`RNVBWBKkyhCJy0{I^l(?e(G2F=Fv+8t; z$BvT7tPWk@#pJfA{;lVSiwL$xmtKX5;Xdi$r#@I1>FEESdqpqiyTpW5Px0A4hg(H2 zKDf1r_2DdWuR%gP%6c>s6XL=K&lTL%NS=_bQI`tVmAukw7#k|k*8}}=T|pk$e`&=E zM)W>C=n;KKMOH%`Mi+gDz(J5x(s#CNrtHt&)LZx3Sn3!gUA?U&&pwB5L zG-5@Z)Fh7Hby?oEvLK~MLsOXJRU>xiv17YSZpEz6{L>Q{jQJcL!xDVG`+~Avdsmo&YF7A^nAYek|^72;E5B z_UMsJ4AJBSRkxMUxk_DqI&lkuP)1D@$!Inpddj3fi*in$U6eKAjOcQfg!o+9Z6$|JrWlI;kU2m{(2T%f|pRLH995dbiG zT3LD*N-KL_=?zxd)jaB__PJ-nl}_JX;(t}wLO=)=7a%mkPOOjIQtV{2l2EuXXA_=1 zSug=_#^93BEwfy~rY*r$HfojH!h)UajuM`IGBJBPwwq5S!N^O4nQ``|EG1k*F&dtY zh3yy@4CJM!DN6OdQ#_@FYZ*T=l1-5h6@`$B95iv*b@u9ZPuZFv{A&uzr48UHQ0H{| z*ekU5&!@&e|BtTw3TkTm13jLekOHBE4u;+#AVNUYgf2Doj-huAh&0iY(5uqB7<$Km zG!Zoc6a-7836^6(MHKY_Vmo@|=6@gW%$>-%}wsxuPUBYm~z7xCk~ z_eytKx9g|Nq&u6UtyM)DRxYwgee|T^mWabehOj0co^k_f=O73|#X}5SqPLo+b*%`> z%am5?;&d85`0~LAUWT@MP+Xr-rN`vyhnZ^g%r^`A80uFXf4xf=wkBRUD;dr-tpsda0$uUa$kt1aZZDchpA(T=74Bcu|&yjNWfGg4@=#~ZPi%9`TORaErP z5^p6%MjiN&Pb@6EE``T+zTYNHr`?Q`8iZp;09f;0@eKv(3G0qtwG$vata~Y*`noAJ zbFNjTr>l+f;r;0Ge?Ltk)fKm>nHxR(Muk%XDMKlxrI9lleZ%cD&tkZ_wuN=*k z_W2(U4`v9yqEziL(TRKh0nT^_HC^N9hCduoV%&jv1u@9FV7IFBg`VgK9klZxS0`n4 zKs(+niXyo#Vi4PX52=oox|L}z^cnwYQe!&2PtfSoq?pvt7bgYcn@b5r=d!GS801sE zXEh(=93R*iJ!lUEgo{pxyLB13A;ho!6w)672+L1N>@SPiigk`?V)mJg)_u`Xi+0kR z;|C8s;v8BSL&fXnJ@{{j)fZf`gBt1&bh#<0BEOEpQ|E_(jw6&ueQ|zl!-nhvo9CU` zb>HSKf>-dzgM|0lhM;@YrEmsPwd;C*3PMq;{hhzgJ!x7{?w$7zfH^|YPt6kN@U*r+Hjozxi0*PQceAIXu;L?wN5<)l81j`@3~J#}co8CP+`lf9`nJO%mD&lDgEQzy~SQv1o^N$8G>R zufw-Mjp_h70fN193C91HQ%7t(f&Wa)0BPQDU%C3#?wq>sxJu8ew&a$)^9H>PvxCMS;FY%5ha42Nd8ZPk4RS<@ynUPrv8a zb#CvcektX?N<*xrs9sG~J#e)gB4LKMqTCu?)Ru4ViHyxx12XKhk;f`N{&eR!N)rOH zwdT`zZDmZ_&DZyi6jfS#HYh$x+wTOax#JA~mCpOHsOEm#yE62k&0a#&UB+ivR$U~t zwFGCo5t^+jHj5l4)=vJMU25^Ik3J@1h~=;Sr|mn)sjJ6iw}1~>A@4>p?FMkzg5P3Q z%4#gI$(1)*w6=SVV0BiVxjF~gRV z%kCNe2_Cjh^t*L-w9?kH2qO81fBe;0S5JHc3l!qr%Qc@Tk#4w`X%yoJXGs0Lpy#J- z_5oJXf%N#3I@PUw5;E_%_q+l4ZnA}J~PD-v9njVL{JeXlb&U|((i+x z`wv&;)Y(Zr%AfN+%DH>e);X*#mv2KZs13<^*dE9^253e^+T3l+UKxWlwiaFle{~hp ztrUs!>%>tw(lOxN_wG@RxRVUyW%xo6RG7UfStx44%9m^eBsKJ9B%wz(;K@ zE5u#{vqe3ro8$W2>t55{IwQrZL(4n0`n7pUs5^V@rb` zI-|B8WSKb0vUyFMgMM}@PS%AZcsx*XS-v>24A%3OeKyRXQo&F()bdEfLNzscXjWDC zitQrd-&!l}Sbx{v5Wm+MP&seuAayb4jIDupUV4}P{O5JET_eW|ZksWy{1ksLJkHO~ zs8#?=^%-_-y69&MJJJiv73ei(FbTRc_`uoh`vXyDXb~kZ#oHl{Utpf=UwU%2XxwuC z(bJz9%m?Qz?9A5jHX<^k7hdIjisS0{cisq>yP4t_V7{f8Ao%Y_|Dp5vg?z0m5T8V7 zt*=?g(}MqnSy29@x9`CJBSQz~T{0?a3$g^Td^asDHnDOTOe z?E3k0w?oSY*=@nHkV0R@-TbP9tYECFDgTnT=4`UxrYfci&Q5}u-~?F6q^W@BCD1iP z?@6(Kmj9Dy^t_)R6)-s4DRVY6+sOM9Zt#ERBOR4IhRi?L#TI4Kp@b#I@%BjMr%Rb4 z18) z)ua(-Ye4Ais5kO~F2G%%MUTJi&M*Y)Oe-?yywNTu0o6mp{v z!9tF|6er<`w$6RVEHpAGxmK*|bz=9v?iq~%(Kt($gmr{pCs-Hk5@E@XRhsoa+i67$ zmXISqDoz+e$8i-8#ENazVZ z33JJ;YP%Y!OgWcW$_)F_+^!s_EH7Ex6=DXKcudSOh;BlA%32&1F9Y9^-aT&U{qUk~ zR!2txEgPBG1oB~8$T^Tjf|@dtRz&S16@~N0XyF-NjuqlkX-fS@h7R$wWd_jy%n$k0CfaYd0XU83MKo#FnU!Cn2bQgn%{y7g`NHI12#9WyKHAqZ84oTJJbQb54AVT#T(fZ0IV)C;nQRT-Qz>kU z&9}MtR>Bud-Y%jvJtNq`y!dFU zr4pB(gKYJd`U?t`(PTj+^@0R1bdp5IsgHfx%`z;!z9xb5cL>>|a@EeC@ou~C#?rJ3 z+Z|65-b2)pB8jI=0&ON$tRru2^}_yL^ce&{WEiG+x{c~s>zh&T z?6{k=PfVN}+)QR4i(RBzh-hN7k-zbSK3K5ucuBS?HDl(bq`vm5-^}|Z7j2~5rGu*c zmScJO`7VdMmLmi9Mg8QF#3c7i`S*^jk1~ejz`=RwP^|g$Sn8Aniym3m!mpqwsk@1z81Svr zGI_*7h080W7x8-JOn(Ybpb-C}y1dv?#>F^CM8{}Q9n%c@Z-BFZDE=?yA&6iv!OUJg$_`wfL0 zL@!|D2Rp3#jD@~Xfcz5GH#*|49r)C_^LZq=J2#2g1UAJ&g1K-@8kAcFE}+7N_;kh& z-9uS+b;EvF#6Yg*0=De}$W<%PAVn#`EGEo8I5@TIjR?jl9z1|yVHq_$s0pgdGo#E# zz9sja@!bpfg)RT<9qcq6Veu70W`V#>V19}@m`Vrny}=Ut8#d}GT~t3$AfEz!{LT~~ z!jM=MFK)I9mdv>iObrtj$YjFBJZvJpUC?a@q-dZjR5AFvYVHJXI}Zv z7>WOjUIY7OjOF8&&!J#Vc3$xq#A_#MBpy1YhOAztgPW3zsBjNqr-0Rz(OpL4invr{ z^pWc+>ya12i3LT$r_{;PXGN2qGn13p`HS@YJIuHRR_df=9+;C!+|B&5lZm4WIZ|O% zDokR<{4^IrpaA*i-vm5_<^?3PASX!qY7%<)NAr^iSkERngQ}CxzhAC8H+wrgd7?P8 zpjv2r3LJhqW>_6tF0Lnxa{8Valq33qD)bbOyeSzwGm5?gpslepfdVDqAR&lU-rd#z zmFK+qGBdO2uN{afuSlfp04y3MGa&)?!ou*W`Kz<2Wx?kvsAvtr<|(ke9ze&rM3sG(+TFUaL5&Ui*bDXibMQ zD`1{CEPa?@6$17Vq7;Y-$*h9nn8|A?RX9G;2`G!fmU-+Zr;F$u>{_qe`ZY_Q5q^8> zk0H_2+&82xLxmhnET#Fj3XXRcSEpbWc!kre6~DNdT!E4=5_tm=LdMiu`wiGwHPoC} zWY?L+{RZ-)CRBL?^=s<*liU~z9LH^p=bm8TWr;w%`aYRbtojB<^Q{ zYM>L6dRozN;jPB8Tv$ATu|9;@yOG^irJnlc>Kj|~ccUC?%dx$7Rg=N;5nwEFm&U28 z+byd~nz=lf-1ZS$a&#=MLE?M>Qc#!$B=L1U0@jyhDR?7K6JJVZcN2vnCw30NK_v+F z>U@o8cz?cVvSyk0`k|*8jQCph^bDQjUZ>2S$(l&(sn|vx25Ai8BMN59M+OAhIr%Jh zb9Yy9Vs!T8kIccDOd>)MSl!BF3Zk$;0{|2}U?H#$qpW>HU( zWuN#;CtsTFhVMk_T=8b89=^p^f{xN5PIzeW++W@lNTUx>m1$M1UiE@1la$=o z|Nh$ZpV##Ny_RNF_D8?>y27RX)Ub!58P0DHl~<`VSELTLc@UcqGRpMP5AqAqGp+Y> z1$x(-SEFTme1PeM28SD&y`yctHt`?vm_=+niU$xc0UgC(_aJrS>nd?{pekR5#a}Ze zG{%%Pzmw7%`*1C&1Qv;frL{*GMC0uI)Qq!5&u`e@PLuieKI);1!|70Uqb8C`f(Wq; zzsM6&th#X9wgbn4;cN4W9C!m88(CRi5* z30O=CP^X0B$KuC6n+ta*UcJxLr^0Gz*YrEB{z&Wj@$TX1Llg0CMraY134iThMLw0USM z%|-Z#V*4!RaI>&SnDqA3i$9*g|lr$+iWh(dam#ns^EEPIyYA`L$nDqob?8q%7My8XaWcpL<>T8;>=iGmekAF_j zEq93kuZIk<02l&RfD4eAfTl-p43A_`39TuxO>Xo9bIQv0V-UEmbG3)u|FisB~I~sEZp2QBXF_-BG z|Ajg`&z=Azxqe4E8B3W+p^oM7AHDf0hea$N?8k;v6t4b7c>D-)ON|E7qb>>5Eoqrz z6N)E@@e{VR39!QTIhm<-cU&?azAO9KL*e#z{m}!?Z3V=vK-Lr8rj-xI*elxSjzy(E zr3>ISxG_xn<*KS*dDAz01lM?l2{{)}i=s&6;3t)U$C#IbbdV=$CXELV=Ry>_uUq^F z_9mrIP|`hDuZhsuZQM065$j6IzHsv$q72w*Kx*m^+tPkOd|<> zgMbkx%b<#6CLAaXwsHj-&ulOaO`k#E?Mz2yPl1 zp2vhUsqH6d{J#T8y96BdBJy2+RkhsAkpKJ@#{|AKxm65lk%lJ#uD0pia10Il>$Ob$ z{bl^>?TQs`f!Cpuhq2QO7qy5nCryQT=%jHzA>CW2pLfwSQbp+W3!!g`n==T>V43J_ zQ8XT8OZvN-3V-_F=pkOwWUjzb@l0*aA@|y~D=*ia<&wec;F@0b5I+Ey>dH}ErYr~lbO9vQIkT)ACz|oJ8%`1O{cbE8edvGbZwSm+5($@Ra z{OdP=JI>z-_(Z(45d~fl;hIiw-7O!R?VKQtIK;^aL_fN4Y|~mps;%SV_RI(M-Oo~j z+d-rm885g`2}F$vQrQ7bRwHUiJt3&FKXuUQ<6L=LFuzdExHz#W|5(%dSu!2g(FecN zFx5nqc}P}2>!B_@M4ARW;z!UO9ab~dh@_IYKr?nZ8l@Yrdhu5IwIo$3vRQS647>z@ zEdlR4-Ta*YQXBtHn*<35Ac;Uj92Yq&1A`sXn`z|#kdOL&rIR1=W*^uR3rLF?Zg_y}qoq`^)B; zx8AO{sK~1MZAQp3wP1UhCssMKZz=G2sNn0>7tI4QdVj-|{4=y}h{PaXlNw6xh-3hm z15m>LBm$8P3f%TBhp+>(q(iOl_|#C5A5AJLeg7Hte>BYfPga?ni3wLpsG2U;Tu{PbaheCKCzUDqZe%?%+hDc;r{)Bb z8#MPA0GSuUv?Pg4>Qu>*bX}EkF@*aSZ8PuQA1=T`IsY054_o(+N77oJt+v8jmb?;K zTn+;5yKaS+HcZg|sz04yp+kK!`y^BKk(`P5TSU5YWDm!-Ns(NnzO%?F?A0Xh506Y5 z_zvaVIx^-M0`+eG9PJRA>zqwuXj*o&{x_tJ7QPq!Riow3c!0(zMY$1tzSjwaG^#aqan56Y4g}h+}ZIwQ2m_4{?Cv6BC5PTK0^JF(0_o(hx z9&3yoFwWBjtI_Jn-YgN^Z@+ZM2u7y3eu4YJz`)*cFWzlhveZp`UgpTzZ|DMLb#2Sj zLs=QnA`Z#(`fH)5nmbYIO$j7It|VmK5icEBqL3q<00>4Xx0WC=y_!5$#x+fD$TgdL z!L!UkL)UGS;#OgV_=M$?!uEG7Tw5V)ae=Jzd`;ia<+$aIUDn(;Q$WVU--FjcZj`i1 zrrIEH61}eZV+vzD$=)yo|K&;{Go%gYn3D3A(YfsnJHds>7lf@#rk^EUEXk1WaxF2R zrSg8H|L?HJ8Q+i=mIL=(W18P8Din$0;ac-IZeA+lAn!mlI|a3yTg{d9{+!L6Lv{`+ zqSQ+A;zrgA#(OyM%jTj2+O3_F$OEHM9!s#>T)V&5=9^fjPJWVpWIr-gEU$Wl@FcRB z5Zg<|a$YpwZE|*1E_^bD&v0jgh-o}%<8Q_L%9?i~n=_PZh(wriNLt z97JeG?M`I|@`5y)sBOzdIxnU@oXC*(Uv-_tzkR(C#uAOZ_fCB!vXICv2@!VBNpm9SZ326D289T=gV z^qjSHaiSXI1Gi=P-972vr~lh!x{ln;a1lE`{$)8>7@qn~L7oibZ_Aam8vudEtf-kx zQ!qx1Vf5AnAqNprL>?%d#%|>*m*ExXQnC$fm*HN^>Z30kX`sUUsMCGJN4*n?Wr43Y z$3YGwza~Ih=miU*(aL&p?MHHQC`E?TQl}pT&tzP;1nFB{J~7Di$wQtFoMbAZL4V+i zRRvE4nAqu0TN{y)EV6ta@|l2IJdAtsx_ufbDhUbg{2kk9O=i7Fo@915iGO2=^>SF@#H@?xW_;EDxS=AukBJuU0Y^ z4*}_^zdXnT?ZS0Em@!;2g3+1 z#|H)8NT1hVA!)L;WonBRw94{UCOcR*2x~J2!Ef}38ukoh{&26p#Y8igt(8bdJ2zNB z``HkE!g|T%JO|g=N%RORvGPNgyQbqS?)#9laCrs&b1Bu!k;;0~`< zDp}=VVhOXNT2xB7C$r#jk-6~cBzD+6e7Voko0@Mp)qJB!L~9vHd<3AC>E8y5uURC1 zPsE&ip+b3-)*>$+WOT^jgZ6U4to?T4W4S$jY|eUzP5RE2qhfphpxP-uv$b?ndy!!! z`L|GaXEzL*UA`9Uf5$sprd3QO61JXy@`wn$>Ugfib6X8NKlO3r+wqtfF4!T&tD*V> zU&JH$1^g9Ra`7}TDT$OnvB}P{`bJhd+qr?0eNTdjb7;bqnAe_nHJuEK`J~pSvnEyZ zsyhHZy!Rns8m7cpZ3BJe<_$tbR>)%>N?}2>icVhU$Ib1{g6rjg2G_l;jLkGqkWUs$ zJw!MM*;;_=W$#oFWv0ZT4x$f(JzBae?*D1cXa$8tIM*%&L%V%|XbaiK*0rUv z@EqV}jD$87tB{c;fHn4~l`z}P%i&6MS*sL_sd{3ZW(8K?Vlr1)@5MeTBMXkPazj8| zTdbjna7n}gS8{={hTj{s?|%NuHRP#kogTcPKlD8E-OEhlA`j^3eZFVx5%g478JCc^ zL*Y`hF}SS1#U@HD?;>@6oSv>_Du7{viVi!!yh5O`YPp@(^m5flkBOI89(Xe%sM)6Z z(#v@BtOW&d%nwOdpe?l9mQL)#+c`0J$?k)n`sDldzn%A}jh zS&~np!vNmVR&s9{a1DSy1Z%*hT0*^EidPCbF`xLUH%z-$n+H3Vzc}`9=U0EfGcFOu zy5}Aa+siuP^(~R4(hhP8s?>{fY15=F&{|?_hMm517w!{^bNJ>36I9QVa)PCLic-ND z)@vZb5#@~PQ)v{Ai}1fx7mTRsfR)F)pLnP=Zfn3+y>oiQBYq~Vg>v?L-r*v>1rMf! z!PHh6I^ZT(?7$Z$#HKzlt(%-zy)S>;E7z)P%`1X@nC9Mp zh|EY+@_{n2?L->a7ka9ICEc$B09K-pnhn?EC_exYku!4&GYt((H|A*}m3RHmPOD7K zC9bHnV4IV(o8Yk~d23vlh-6|^Mn|QZ1=3)Nt6|aZ!6Q`|mnN3mebd2)-FO{-gVVhs zm@R72a!>1X=1AF&go}YB&;!E}1ZL-mD3Wn!GSTMm@}?w5i-_MlzZUEDGF^e13m&7N zbO$~zWQZ|{`hH{8PMS+?B%coqwAoX-IbF(uQg-T7WzHAafq1@8MZ-z%hg-z#wUQdR zma;j$U0Ag}MuQSpQ;UTcYD?dI*d7j*_asDIIVbGJF~rYYFB%?WH9znh3-zlG7|1&y zW#XP=)~8W@ImuB}Y#5CJ9~^#eJ}zJo`uT!HERUBdRpcuT_1uK)ECpI03*T(h4=txk zo7sYp%3Iw)eKMke+{+>&-%?a5hk(Z zWvnfeu2N;((nEZGbcpIgHCO2;ZoGEBu*AUZDp$aummXha8)^K0yQHMv%Bs08m~-9n zpYoCn1ag7ynoh|S=L-511s7x`b6eKuJ`U=5wvmwMSf!%DJYegZ zLtfb)3FW_KUT-T%sxf_W%KfWyQ%#oItKE}WsGEFt78BHWe)*JOu;w@1?x~}`c|t&? z8RQtn+>M+mrtU8M4B%97d#xr<+FWA7u>;hxZ)KbmukNaA3D#dVm!uwsOvX_`t$X=M ztq#VFMk}nfG+*B3tmwBZ{gJ9<#5)k=cKvUPf}c!@oC@>ycR4FCV4?EAP-?w6AwJoY z1d_Wtc=O2Da4ZgCwPWogL28OM9ihx74!teppNcOU>U;q;Cmm$`52iE0A_Q~^z)9LA zRqXiectKWw@Wp#I)n#lDfA)fWFo##)FLlZql<;5YPjrzl&C^|_0yEB}OLzx-u*KJZ zz95Qrt$FDN$-oht6hb@w7?GR9SAS5CC^)0gRB;LEVg8nDsQX=kBlSO92KVl&CRma`R4k~f zk$^ObGKK>Kdw0@kIusL>?Wc)#cK_Ba(czwVE@#ew9l8%a-f1D3z`QBxed+o!lZTM$ zEJ&k+{@XDzuzHjk)33k|TKMc(KW*C!lxD?rGPT84VuMT*t6 zSS5B~iEWDoz07P~<(uB;T)$V0QF4xaUc>m}3$B=o0g;ic>@#mkNLxI^?$6mebP1k` zBa>ma<-?1ug2U0-BH{a$cjVunA#+>n`ZVboYdzyn(Be2Ei^B&)$^eq_@_{tAPw%gpjT! zlhX~sB=uluT(GB_=7Sel|JK@vaXGP2&$VKgXKfW7O>7JEok3GH12$X0@aoCpp;PD< z;!%TtHlrPX@)KKV0-zLFG35zGmj+lD=^c3+;4k(TBXB-nd-N1whb z)BHvydzS%QgxKY{2X=Zm_HXyuxN!d=v$3Gx|C3HT!_fETS!}Y_WqJ1>| z^mi3f(SJtY#K#$X{@9@0{;{a{;l`+mIPGFt@NP;J>t;N>ZT;+Y$z#P}QSEHrjN2l6 zThC48_wk`o%>mQ?##r_~-uj*dos{k?a#i=rNKMzg*f!$8OPLsCjC>#Xac59QDAilR zvik0w^TLn)RwsX*lFd0dqU$X8$&)<|8nQ*1(@W-xsfhTJN!0#}CAuRO++WJzB@xaI zzS67noC#Ulmva^+R440wXtLENQ?)Q96e2rD%qRtfV`i`{qi`W!#sL9 zgOX_Mn=l$>0~EWSU|73=RicUs?Ww3!NpoQ*_30ob77)7wD1H(tyc&r+hgFYH7n(ed zN)kR&5{*)Z{&iQ^s2Mxu8iWx>Mv0?iJb|~E*uQ7O?IYw8cN15r!L8FE3Zs0h z&ioQ=yb+*&5UO>Yt?v5tM4yWXVN_}TNz{?dNYW-y39CA8p6oWJV8T5ToFT;@uLN#o z4@u~Cw1o~?Da;I>yy>FN307^o>yK-9+Ikc8ydz_GDZI+q`dP3<-;fT82P(|s&pR~+ zvq7E&`+P~*ahiF>K3<2U4NWxd4>~FT)uIw4b{~FTY89(aNAs3|)p!RhIVpluX6QD-N zBCnBhG4TP1a!@lQxte!INPUSZs>C==z>Wt}+X14Rv>Z!8KawL%Xdy9F=*sH=1{nnF zI%@;TmdAky3szv4 zs&PxV$RGu#7+(#vfl>xNPK+%mU{^rfE*{-sM{>nLOjQe12>s7FQICTf`R#>JEWi^^ zsMu2w5g@o+3fF7QHmro`iz`7Rb{KBEUcgk6EnPzNEGzm=I{X)-w_!ZsEB9a zi{n>*jDk(@GJY&oLkjLhh}O{skh~%k(kkY*8angSf$vlPc@1*R0p+ZQw&1*x`jFUDxZLZVZ-%raKx^!Yqg$~@nXP?aY*p^ zg?@T2EZJBQX1&O{Fm^AzfsSgx3d~S3bJzw)W|0)LbbN^6pbU2+fl50iEaSx#@z8iG zG+gmqVl^l$vPs;u@8K*+n{e80muPg*gT330HNeMT4N?}M0tBdsl<4*t(#c9u(3`v9 z<0Odgk}kKp(v=1790{Yu7m}#ml)6ef7jbQe|GA(cS%k13$VfmB=f@10<~Hmg#AM{! zc~BA!RC+j;WEH zDp;HUO8*3mj8{M&G(lXs<2G}D4dA3CXqUEKOzad6Ckh-hGKbhwVUYm-jjz&{3E2t1 z^92c|&|spASFHgMYdXY(J3a!0x&Dh7)1*Pq2T)UuACm@NQb#b`ZVL?72wR|uP$l*N zd1k)n$^cNEj+^=bR_8%tcGQCnfJvJ02fie`b#q-d=wZsOBV6z?JlKZ7HlhvxnIFgP z@N@p~G%Wmisbt9Vp~`yDqvY5;ATEXly<3;(Nr&!*!)_@cyzvUwRLIQ%RX_aglcp`4 zvaoI#gug=0FTM`cmT<;0ZtZx##G*6I2XKWWo%`tH=g_h$s%!Ri3dw0J?5M=x?4giawJopm*z?P;k(+rUa zeh~K?8SQzqpNrlNO+4!``<9CF?8ZvO-hA;6wcKX+ic5aUMvlti}eN+z^X^?wbTc=ZEx zWDx~eL{aNyBit>m%ttw6SY+A`zgMn60kF>S?og>vYwS^D;6u@aOgLY^TRMjlDr&>N zKq-0xU(<}kwH|5Zp)QBDebf$kg~hBBW|4LQ5wrnj4$!I$PH6?>iot|6vO zy|R%{z(=3ni=YW~hN8{`pmBJ_`+Wq1j=F;tJaZVc4G{HkjVfTZU=(=2!}ts=ZnQ*-GIIXeXr**Dhqz<*M<0o+^5;7 zRP~ob>djUdkNl#^$FcVRzKnhr_8!O42ZB3qEQirCqpc<5}|3a?~lh3@0 zf%wy5#&O6oHhGSUJkNp?<=Su4Fgq0BCJTc*Uw-WY?ao*Jq~L)gpa()B@#0v+(C5#d!#Pxl^-CVo`aic9 zFIbuW^+=%NU;yxK$)gRM0XhJBl=WO_-Oz$Q!N5a@n)q5ZaQg@(fd%zKK}6ai%yd{W z|2(I{%Mse*aIuS+7wh~t_9tGDPyLMn5aBzm z{WO6%HZ+0-_oo2esF0=rs2%C`*XW0@)E;?0TU5xYAC6i-U9~bM{!VIIz|u<)M}74g zi+PrfD#kZy(+!Wu0}b%dzYogXJ=t(q0!5lC6AFelWIaH}U0lIpUQ;plHUSQORydlh z)gwWhi=rnlivFew{mT@J2oj2J!aC~;{=^Dl;)QSVX9u_>`kNtML{-Trk_7(AnCZWzi;J+-P-xT0)mJs=G ztcEKv;X3*=_AQb8b`|SfOh=C}k@tTi&vRk??R$}Qcv%22hl}W^p}GAZ4{~B&lvu+GGCRd0VKvQ3YB04Ri{)$Nop~8ulk$)a=v`4h=QRhX;3%i+X!F8tNKXVB zIcV*XEg$9o*@INyR<4MhQ>A8vrr}0nZ^mfC=RJPc`jL!L*n>+^XT1~}O;f*o^yp*? zZ62>V68HC;nKOUi3L~^sidO3d-ac=s^=8q?V71Sy+q5g8ZO*kNVlc2ap-p&GKXxW# zEzNVis*gH0S=UGJ$lp z5PdeawL`JT#x0g6u)KwqCtc21OMf>oc{3i@2t91#B8mjVq3h^K|s#Um#l@C+qeK>hWDfaZwkIF5p z@ek!MMAm&$tqtv_A3DD$)t(WW@TF7z@8kbEb|LG0@0KCmQ?qMJS?hU*mn|o)TPG_P zw@eo+7#g}`ljnPSBbFxHBu17NQ1Z#VpLw_LOysxA#3GO8u#XLOHbMBWr_&XO*@U~& zUfuLtt8&X#O2LT3;6D%5nKX5Iu<+~~ewa6it`_nCZ zCLN&25(TG9@l%$Yc5fB?=w#a<>36bcYBHlt7i&x&R@PNiplSmf-?!DW#;>dB)$B10 z8vUL>pRMQhGMs8D{;815a^9UmLjK=~ugix01>BUZ$R7;boL)%@NF$mAtc`0l(*-QZ zaT^g+$TvPP7b}M8hmn>KoTLRiE$=X#hXLj@pCJrlaftIKaNcD4G1@rmxZhl5cx-8p zM45xz;7a}K*-<^~PcLR!{ipf;6$Ng}J#h@W1CRJ1N-l+5J zT6|P{{E;_m?Wr5WY8>HrZ%~1!niTrmJp%79$z0eDH5o}SQuRK#p>^ixBg4VjXkxDy zKmS>3vnN~-8*e6Zq^mSq^_6{xn zUet39=~Ida_n)=6CcypPrj1s=fBblTf4}|%pxX1LFPDb)?VQhR z8mm|@hq%j}L{k4W7pGUWq?n}TsML&%I}AU*(8BmzCu6_BuhaTKcD$SNZ6reU!d8gd zs~>^Tiwn$Uz&kmKo~vz3xtMRe^9k+Gs~st7njJx(&$cc+`)~5>omGydPQ%u$%>tNp zHZt>qOuQ4@N$qw8q+it_=2^xN!gSq#7dN+KO(AVb*G8Vn`ceW%UM|HqbCgwzHYyg= zY-A&sSZ-A}Uq^oP=!nUFlu;HeIJyTfr#iqTNWo>sw@b@lmn>v{)s=Uq;nb3A`orF) zP!^7R%{YBU(VEMux7C+*QaW2feJ2~Fl1GHj|Nba*-&@JHb5-8D4dTaPZ~QB6ctq|` z+~wvkZ$%8wXvLubr(&LHFjtz-#F%2d*1u(6(K_qCUuW{_?vf zpVe@(3nZbgucCR*XtKWdb>+avS(n(6=?&a9Rj;&XaxRIS&Eac_y4RWQR8XWE{b+V^mYQDT5i(t8sn!JD_`=As*O@%R`|KZ0bLc0n5jby~x9$ivYa?5kXKWbN z?s}>11<}jNy+N&XrS9U4P1T0r#@3t`Bqb4~8bPu+aFov%JF}$Z&W?X3_ENoGET|>f zFyWbey{X97);~B-o?zhIc-{G-9Et|c>uO*(rW(mo#WXA`eb-z)`b{hPcE~H+#xaYa z!Pv`d3sst$JZ}rhVc}{nSZu&$+{S!3#qmvuO3+5XUyv5@d6RJQy;2J~$C*$L(c1g( zp}G`0I9_9U%}mCDh(d3itvs-azqz#YAE*o+#DEZlDWM26|0LyGIFMr)^68d?G z+xIWa#;jStsPGD=-srkYL+elsq0hViajz13n;1f9)f6ZR{EcBwTgX2>ufv4uTu#w`9UEbh=x7-- zV0tFY4AS9#yRdp&{(?l!8nc+b~-ks)xUpk||-*qPcJl9xhujKJA z@vRq5(#B*Ha``+!_B`YtidO!AuEwyoit*ra8Q|;U5W>5|PWlk}G5+hxW9!%EWA|r- zN<-g%ebmnAIi>5ABoN^N5N4y*mTbX^{l}GTBm1}js8IGU&Sz)Up#^}RB&GS zV4*YD1bDD|pD!Hc)|B%wFV%OJ4TA?CjsG|bEhkr?!)Q=%rSTr(i^{`y&s^S(gus{1 z?ERDS`*{+9qvfwj6);PbS9Ji~biA!AQ{=Y(%Pn$B;e*QIlP^W1$_BIAINZIkM}H?b zDs4U33d?ueKZWxixOD5}@M5WEa-=415EfPf{UySjifKEMn!oASHXN;Tu9Lp?T(^b* zuL0D(^sYD!C_}D-O@Dwiu^#0CG^ z=|5R2X6FM{bGu=|2FFf~M8|+{yuTyabTw(Qy7GP>n^1(DJ^bQpK`brwe777g&ptyjDM{=akOrN?8#ieH28mgVlkOq; z+9BWntFbMB01vPP29C}!O}8w%K4MYRw22)Re-E)-vW`xNKCB(Gg52rv0URyDC~Pt0 zZ8=I*bFbNBu_XKYix**P5Dwx;BN+@ZjZ-9Rq@4FHB|TeE%p=R$&NogT3Df*nf^J6bL~L+e$|r9$I45W7<13I|-MJ4VpHE zo}wlmnqz*L>~+|7FiuI-FQPDI-V2^yJkl}Q%AaiX70a6Usz-?BD2YbkBv2ecBcnJ@ zXgab0VrhVSGT^!Kgd~Tio(7aRph>U}^!7eB#NF?UxS$47d!kw4EmSS%^CNt3f0nxk zXM@T-LBE@5!k{!n8($tvx27mT1yE!^FU~*cceM?Od*U`?24JY*pjKG?)|B z*f#*I6GvYu!#6|-vkYjvTDty4alj&p85!sO_z3NbaW(O7tY5>=;zLA(Qi|tLPnvM{ z=R-Q?eT%XHjnUkKy&UPrIGWZ~fXKb#zj0KkaN?4ipEWNg{R?7*qDez(R?ZJ>4&aq^ z?q$YloTO%?$z+Ib0@f0PJ<3MaKbSH-NfsazThPFwoiI zyU<L&z*&@KY^_K=p3d>&V!=n z3$rj{UO14#JQa?h9X#oF@Q-aKX%BN)p`p3gB@Ob}k5OuQKOeF`21`pnOP!s40%Zf> zW7J$n;I1qcrpTqK3+OJq0>$#eBW||!yk{w>(4Q(k;(p`f8x47RlKZd2V&sbA`bD$_ zv@m4wd>8dUhhR|(6;7qX>#2%3kRcbOvk8ExkD!F9+R`mCkb^rR3FY=xkSB@iKI2V6?_-7X z-}t^z(V!d=ElwbFO4J*p%*tUfI)x@O4Qt*3rSe@Las zIJVY_oPTem-xLb!1_Qb3!4f>`e~V9=t_nRvs)#M%zf5YeBTxZHQxU3myn@|GZn3m% z(S@`ZaDWeuZ$3X3j+uRUwz_EPW`PZbK5BbF zyFh)Udr*}NEc;$x>2&|Q)m_uq`|RfPt=$OS&w$}3v};%W>0;<4Gun(7wTaYRinCbQ3l;t;VooTrQ zA^Ora`lS)%NSi_G#lrwmH>yx66fvNJaMTO;iZ2#W#g*RfYv(sO&`-AE%YHYBIjeXA z7{R_orA+tkRgatBsgnIvWGz+9H~M1W60#4b135U}1~kiI#4%?~GR?NJ9djXSQdML; zWVY7Co(BO*DanTE_4)D@S7|8_Kg=~gOb71nK2ftngDkC0f?9jfR!{Ru7_7l@)NbpgtU*dac7zH?cn211xPiJa z(VZ97R;G2H&}Hm=SGDVD$eaKL%v*&VngR+~`XcHaY6;FuYMNRQ4S6i2-ca*&SEa(x zk>&3j%Z=O@c_XZQ{|(oS!=!1FmQjUnJdkpKrG!#&{TQI(@0;jT)I!s>m>@txY6AN^ zRh~^#X9G1jKurNnJLDg@U}?86s!FwsTCoID>Y`;d0hQN)_q>4xZ=Q&yrM};{G=|)` zc#=AY6d*W2BLp~dhn>PQF+FuH&F~Vg>Ro7pgQfLKbPm{n3zT8G^^O8&x~a5!KvrKe zM5s=tQNXB_bH34SC;wkaYF(y>+>Vv7edUM&DJU`1k)JfLQ3v;B{OJa~bOapGPmwSDl~$QXKSt z+DEO~-Gcr5hAMpFtFeS%_+wfWy08m$2wG}HBb>MfV>E$usrXZGf63!$Ru5zCT&N(W zpBeX89D>%*?xB(2fBun?uJ(AR{MbUWbo7u^i*+f%0i%gQM8Z~1<-x2Qgekl z?kJ#S-G_^9>wnrK!IZ=2ieL^w(F<$8)B&K;BOsH02>FAkdhxv(o@gKi%$Ph@%0GtU z(3F@od1!);eonFVPGe%?Zt4;YmvZf*Xk>a_(3^*1DQ#_CF!Q*gpa(PCi!;057-aFK zob39-c($20E?>QV_3p)a8Sea%JwWdx0PuWr@mg|`-XHllfYx%LVI6JsNL~b@IF;M+ za|;=Wp|=&mba}`2aA*oRplnFA&X;5`2iCR!XQ}r~1wC59JS6e3-~|ABd;^W>!f=Nj z=o_Lv0l`B{{GyL~-o|d2=wbK|_{(#*t_n90&bY{Ori2tLa;)^=$}ko<>)N1Kqn>lfG{ z5Codj?VR>v8B9kkC-hT?-Pw@~%QO*vAN9NU70jge^|PX#b_=N{J?D<)EV-0_dqGp{ z`!H1@huoKfb8i8a%VXm0DQrRe6v$@A8i3BEi^-aWjj-^Sbf3A*Jdnu?ZjOSyz5h14 zbMqq<(H#M$w{5l1i+Zp=!a0U!+>}V-`v;O9Y4k`P+Nt<&|M;@;!(x)A^7T2Iqa~#a z*Tfd6 zy@+V|jQ;dNnw9)P=MT>l-{N2kvC@10@p^U;wHu`52Sn^;wl_e*RpeN(q(ZM;_`V=a zaEjv83j)OS6Tl6tT^mrbmj|(la2yTf@ny_n{D$O^jPD@WjLA-|^C5LMwJ9HxR411w zaYHIz*3K>j|J9(Q!l7g84BA=79s9OJ?)6-i!@rVF6WT#;v=J%OyxIhaL76qMLi$Rr z+@Yh7KhVTP2GgR&b6&7VO~6S36-R!_Z%^%gA2Q-3=ZgSCWDf`<=UP>aLxz&(zGt5C zX_ejPMW{@ZA=(op1ey%8n`I5i!D`V%?~BnFt84tMXB;FCwZ64@IwA{I@!yyxz`>_n zSYp-|_0;R&t=X4N!Oi;rBmw)=@cUEP}?bw<%(-KoTXZIw1HFGmeyQ=#0zn`YYbn{E?nV+8HF^ zh^NS374;dEYFYru)6+KKyuoE^x@4_R{sD{k zlD1&X1uyKflE#K$`*quaxZ94IzM@Xx01&v5?MnayHYTTL(cN{#V!=|aE;H68M zqq|q26}wqFh8j|^K!?HpYdKva8tkuaruUSrBipNJpl5E7?V(Dzy`K950%|)r!o)~u zicb5@g)8~8AXq9;vL8oBBkswg@KVhj0F%2UxrCKf8RIRXqqg9IJYOVnOo;hW-3>{& zGb)5RXzHw-|1tvr9)msABAa2;T0o`q&bIsfY1kjSs%vZsGg$QmoMEoPQ;StHX~9Il ziB*sEI%}SOd9Sq|SZ$Z!hApas8v0g%@h$Qq3Os8GKaALg8A4zK_eMd z=dbVG_l#)D4|0Rj7V!vG`)ZU>TXQ%V{Sr=UPP7u>r5vCt7emkV9Cs)WtF9k8-}(-y z!V;4ATe=6=W0aTs*TesntvtMV_8JmERyxrzhn5B3fh{V=dxz0Zv?ga$8^mJ1S9z79 zf{y(Vs2j`56h;PCgd&xIaNlVy$GjHMa$1o!QI%6KDJDcZKPAC>N&-WMWivKG@=TtH zHg?I^4&^4*+j#p{i0iEdp`qx&%EvH3$i%C>uu=1g&>%qmF1aQcvfez$D$GQqyFZhN z;}d26lBCl>GssWjwcl{s^Y1h>$1Xi;-IT2zEgzj&mi65{9N$2uFs{K?krD3JkLKnI0W+4mN!2A0` zuoS;8u7jK}1d7}!k520aEpe<{+?^}4Q_f94Pu(?ly>ucL{#EJOgz;EK@t@c&Jsoq{ z@z;(HVL)6UZ`MlZlXkg?z*JgvvJNw<`&Uq4xXpuD&u2j~nJCB%kPMS5 zl6{BzKd;`6OV@BPE{~+&-dTDska8wD;`Z)I(s5F(Yv)#KquRiYAc&AHZ{@W!2+6ifGt5X*Eda} zOaN9LRc zed3?la?n-x+DHAX>Uu>^^^FAyvREu(dhrLsLw`)U-|Bc^EWhJC&q=kPS73%)g1W8` z1+!7zHY9<}T};udp|cN;`?(@q;&^-urW#%l*>_XK4gt2aMSazL`KV#WfvLE?ptkh9 z>A3o{sjQjE_&v9<{t!+;TBhd?o^RBD2A&Z0bV#NCya@b)z?STUSsgYRpc`$l4KqQg zdV;j1kk#VvVi0D<{3tL&AhYX203dG45FZ(mziO)3ku>G^3CL-$NWPMS11eR`^OedM zT9rp)HWtI*@grg9*-$Zjj;GY8@TZSTSC8kfh8Fy6b^F&*M8o6F%4k`~JAcJ{&j)v$ z=fKJY32^+h$W6oiuLq(b}XrJ3#!NTIC%t%EvIk#TO)UqdypTZJCAsmq7Rl2W06Ebah;}jp&f&d*@(0VV_3Sx=v0ef z!-!U_aiYbFb`WlFgp*r`M{E3wVygC1po*w{VaLcTM~e8*GXCDY3pO=PQj(%|p(C2p zXV7T`>Dw_5R)IQgOq+VP>bQXN{8jj}rL+Sgbt!==nR{$PqhbvBP)R&YU2}W!BGMg?lNb zBI@tRi+oi{{>>`k6kmL7RD4`Zh!wyIV*CDRRD7oWdy-2cq?aBalK|NS;WPP|xJ8^& z45hkc>FPPYPVtj;Y3sZT8iQwQ4~M2ymn1*dQ)?fak#s3(WiByAj_EQ&q(tw+-dix7 zY~8|NGG$8P>`^mr2sA{!9$FPkR+;>0l|o3K++?`4vTCiUDEbA zxP**yopdU>!#{aj7vh$j~v}ZsxY7u0_1sza%X#8RYy>?mR zFDH)pz~XhX^@VrV>lcKkm>DbIgsf|jiB?4r6}eY9L3~aaqb6qe13gN}AmR}`p|r?D zGKbVcI9g;}k)L|tDXK&T-6ADVt15YGh4btUhibkM_y zduIR15;BV%0A5J+8RH>29e0Itl<|sl)`8al^h;h}vGEU!Ne{lEn{Oc`0L!BEGlw-u zJY@mxW!Q*(9&qdpLHhAVg+(B~Hvvv~vln1^tEbDgU9~M8w%1FSY79{A{Q?t7xC*j2!{$|(%#7uYlU<4G2Ke6FFPLHQpUi}K7tjG z@W@&5o7Nc%n1)SmtkOQSwuZLWM@iOWsUtyDGm=CpV7tTJ-9#kwywR7w*uH6A+W25Q3>pcj8CpX(>Q9ryj-^-YIqNINYM)@tn4Gew4DbS(RwO; z67xGoh-@8!%%|;PBtbU+QTx-WMI~4<33~wn}t87RKX!5F(2SYs#b`tW2J*i-;o z86X%3QD1e}{umq9mvAamiBuhImU{Oo8#$sI&{%P^>vI!EbgRfr7=|QN+NdCd>2%e+ zA;r8evg?3fpdKZ#ajk+yM+B$luMtAbBzukC-sfb?6Y-!0i>8`%|G4@%kmb0@kMiQ% z5SiijnrJY6!^$v4yC8-+9A<8qdND2g(1tmU3>^cF}we>(_g!3CK% zJ=5I*D(R$xPXm$cD?1;lzfwPF-uigI@1y38*9UwF3dY5QPG@e=) zOJfXDzs`$V8VE5%rQto(L*_ns#heea;7>>U=&s=mE1Qg&3r9F`bAxUAnEHlG$A$+U z{X*~UKlU!x0H57Rvt1fqm5PT9ueI_x5)V^^cEL>Y%6cjbmOjTvT3^5VI$%(3t!c)tc|)3ki{756Pc9uf_CZB%6__{P_dgX~y%zdZaDgu3O5s7jdcPW*98NiOZFl(8 z-g74pD-!=qfDae9!g6+9-X1%$;`xmq*QJhz9z!{Rw3-fUW72#S85t9eXzZ}BuDUT= zJ@O5GRE?~ z_`Q;l?oiMVp+DU^Q7`;|bMHE6TlUc-to<-JM?dA-{dB?vlKE>`{z=No^JnH?^zR`7 zH2wfrs((EDZRB1`)7q2U5`5RA2#U|KV1AguZhTk8hgYv(ASTIFJB-w9I~V_FzZuB- z_+#Foo^Q&aqt{ZXi*Q0ytw0=MPk#heBO}KMn3RS6A zWQ^x4vE%vH+rr?d0jKQ+$m>7jbwy5bBeiiVmK`GBPYtJ6>>hsbnS7Hotc&_#PT_~i zyjGSY`b16G_GK+@bB5Avz$7Eh+gzY z%k8o?ev;H>nraYj9n<2PWO2Us>QWy^!YJe_&wDp|7XFR$GT^;ug@Uf{X77;517H2% zYpITVUCj4bUdEaPa(jOUSsY$orrk{ZLWZ0Ki+_zxtkj$9mS{Ge5Iw8s%kILgJRNvc zYlyGI{Q?H!WmM0a#kx3~v{!2F<$)S{zE_>?Zu6^CN7fx!eirXt?)~?CxKaPIU;y2e zC~X|V-w@_N1{9Pk+|1eBXfA%}e>wQ!TFcXSH~k=?lX3q+-Y;?o;r~i~mg^UmZE4sc z&0}uge(Y=^^MDA;N&71(>u^&%xCZiNQ>PTpVY|2M`gf8m;0_&t8hacJX7H*d18q~p z0VOudT~##qa@qcHs)>!OpHztVHuPvzQ!0GUf1%)gAs3--_W zHJ&b@carvh-3-O8TR12v{B91YbpKy~E~^@RoN>lS0-4OY`{RV$sLSp%2nSvmZ+_nc z2D-d&ExXB8En-^G5@7nYh%$X1A3>W+)32iLMP`)=>t{L zeGM12<0_6R8d)1w=_}^Vzabs3PB}Fq!}7KY&ibTmExfPVcScU;!tDY(ar>SetrFBJ zH?30RNzA2JN4_Ik>27H9Xr0?gc%9y^F@0Mr$m9LGoVS)Tw)%|N+xYrRtWKHOF8)*3 zw~;t|(YkM`evnUEfydufh0}N2-D}}%)y}n)kq(^34@}ge_db{5QAYe|Aq>mq^DkG)$Yth>Jtg$2frV z>*PX?1C;8%vqu5FDQ4EPBt=0mP@*!XL9?G_N|{8RrXMh|r#d>qC=so8gFATR7#XZ) zFyuwuxs-WNyYZpjdVlNddI1986gPhe7A+{xhwyXt_wqHyf`Fz?OENS4)xn>wE3@4A zw*6bGMDJdSB#v7MhdF8?QB*R2m?2kE`c}7xBKzM5Gju}Ebbcet&N2ukPR_~yJC!Di z9m7lK*6WE%$}{l_)s?4Pm)Qw6qsh5#ELAnNv}%x4_GGO2(7A^e)(}x_KS8-$m}Cn} zC=MrUt9(v#wU81UN0V@{2!NA8E&diN^|1Qd`~$O7?^>3Ole7F(AJ|nXhVHE_<(L2Qdp1NJ$Pjr@{bTt7E zj*A+Qha{rvKPbPUiXIALH`1n^P((!-PHOqGW?PIK#P5I|CA+CS3O&R|HS^@ zv^ukWG}p*f5VxH?qU{BI=~+f9bvU7So)iW&-u?n}AB&Jf0}71EK=CLJPyI7$SC|Am zUMf24q$W`x)+p!&;leOhGwgz-k}0ECtKfjP;kzCtqH4X( ztXfJg()Li;D{@IR?-J-|TE&-v>WgY3dt%N?aQmP{)QfQ1!?UZU$g~9W zm2(Bq_zLLDuONjUHUv}C+M2ShMO{IVr?fDQ&r&d#d5Fj7f^d!4Umd{HS4gC>A7@Kb zCJF8M(*N}nnEgbv8gr?*E-g~P7#h`HQ^sTirKvg2%uC_1YA1YD=ElYmmCH8dK$4=` zj4s;xH>|SS=H7+K4D~-;XR{0PgE3e=#wo-ZrCYkr_%yEV-Q_kuIk;x2)Q4*o z6?p_Fg7T4+r)%)tDqq!^*Je8TYTff9Y7_GieFI}1hyEC~`JCperzK+82s2!t(1i1% zl^y{kFtPqcKfAuB7E$aC-0o810YvcyXIhLx9MR2tV8?BSdjh%~xFRFbz-aivyx7;_4V@85T9O@iDN5T>C5Qit+G>_8>~rJH zkZ{`8ji%?z0X?#tTHwfk9llOM_ZrH1MhriZPJjk3ykzNIkI|OD0v$E6&M0=lh$|la zHtH{L5&T6`=I;FYcoN}(F+N+#1?4nr7(N zFG&Q~zE>?fAZI_bEoty}_)JoA0gWI84t+tgXmUpU(URW$er@nYg>dB#Bh@Wo=Gc$4 zLfT1}pZi?WW#?-4f#cX6P~i>XuFl(Ah>4wd-|@sZe)9`a7QFAIDg7P9Ys}qsxSi!A;A>3m`B>@sb%oL zp6zJf{c0ar%kt^XPEaygY~Tru4G?=(7VyAJI;=Y>#W3!|uwnKPFmy-(LEJm5g?5^v;v zd>qv6i((>M*N7zWfFQ9%1&Bc7_Li->X$&DlhE#;KR4-n+8WW|Qr zpE{t}6|FW7)ab?I3Y$N)#8h$r>5zvcLEopPUN5(pzFz|nx1M?=^|=)D^=At~^qfHC z92*+**a(xTY#^m(y(demp060`_ojj$|Is7 z)fkwZC)*so&C*M$X0rsVOz=W`vDofdqCzxFD;kO~r(v|UUM3zuvt=q=6(WY@qnc$% z(K=pBC&9GU!6B6tTIFI~TISLHvTbi_K?c5>@>-fVrvbKS*|5Pa-Af>0SHS5U588g+ zcK0%@yZTd{$3oT(G0pnvJM$C+!w91tm&L1Vng;0*?t_C>pnyQiCfe-eIj|Epz7rUq>FjFayLP{ z6;!7)DAh|K)ne*S4^s8h#GvoCPxEu#JxJ9`0F-eCO2x^16EByLUZ8%upOP%o+fDdo z(3e^4JN9lk##s#&^8@3g+>{`f7cIvFz%t0Wwlkg`z3#oK#1fEmMY~s0G+|}T$ijQD zjQqI~5WZ3awU)oXN?Pu@4tvo(j{OmKV3ycv6>h2Td;MnEadOxV8R%bq;b2R`Ju?#{ zs(%{}QFK5`R5#*5e8oqKj1n+wvNy?lP0ssBuy(dmm!@(GP0m3J(FcH0sCwEv5D_Z<26j&)^;hBTuR^X`%Xzv$uj$G&?*~bR<3@MJjO@jZ?e96_Gkw^H z#lFBxJMj~7+J>%co8#0&)a|FK?to!3xqNe)*mwh`Q|dF1V0DPIi#-(KQk2B#!pgAs<1k#j13m1dgpo)KxahmdfzR6WYXUl)m(2Fr7>JYLt6{L!|r^Xe{ zWkmwHJ=09RkKV8!rS~)a^Epzs<4_T6(m+lPqm!8|~-S|z_ zxzTs*=C*+TMz|}?VUfPe=Zj`DB`Qy0R9^tqCTRzYqUEsSurMlkTpO*T$=Ro=OuB3^ zqUojh^zIu7$Lk;2&nR!K>D+S9XON%pRbnf09nNK!?=AAb={#sJHqpqt{$rx-UFrR4 z=HX@=H1s-L;)!^2@|St$6Dc=@^}1t2U(%hVZ0|KEO0?WA9Fh!wN{lnCS^>ZcaYaBN zWe;8oK=Yuvs2Vsqw}aBC-y?mOvIn;7B%n3so24~JY5JWt9ei=gh-T5iE`n_FSQ(-(TFe|YodqZ)W2g{>A{+e3?SPHrnJw^HE zD^>JP0uq&dg9|It%Qcj@rdcX!*1s&(I(GF7rsB84%Lb~+msT^8-9x|UF+G-_r8qBp z2BDmr#)!(JH=j@gCXF*k>?=mzrSnUDQ<2$IFOx!25d>tm)W4BUAZ8O?L1GL>jXPHt zu7(Ct1edLo|CQSpXH&KF@j*tmJqWq$pAe6GpFU9bIIiS(?vZ;&8Cpp#T0n^_=N}0i zR5#NOw39-An<{Xs8draN-D zX>v!*4~POU!wqpf&s65H*MnH72t#{^DMP@=J9IV%T^#^UDk3X~Il_nDPioQO!TyFh zr(ZE`KJy>L+kGpZN98ri>)+hfphcWYh)|*2fJqFl<*wZ|(m zfN1F-0x1IR;5#xRb4b1juRQK_VTxDp=pC9nrifYZ`d9nyQ*adY^13-ciKTmLD(z-O zcxb!9BPC5VbtnAI*cs{6F&qC<>4ibJIyk0cy$*iS}ny#{wU=$)0E)_bcFj` z!8@34l&V3zd%s^X%-^n||du1gmvdcH#x=9;jO0}M@G#PGb%l=l8xMDUteQag} z$*J2uOSpCthjDv({KIf+prQi4a@t2HXWq@CLVOjayo{Ho;-Uv>$Ums}Y_fF9k`x=Y zLWub}dM|CCN%rQc5Vr@jf!`}?#xG;vPCtG#05?J>>_=n#|EcsSb(wFReD&Ykbt%+7 zo>p~$ROt?IdFGN^zGx5>`LXJPTdBrO%&6fk-uq7G%oS>~%;i$#zLPPdg$tgj4I~q(7|CuC(gOEcAq!1~jVCVvJt)!241nbMql( zdjgPG08gK-`whD}`JG&@={0})7Fp=tX8&E^XaaT8RaR;1c&l$ytKv;7^Un~y){%i|xE9%92%=RPA|h)d^KMS{h`Q!z{So9&#*A~7$>l};f&X0O zi>nsj`(;(uj50%F8hRe(BDX_mIfqU<*W4NbS-mk(CeE4%H)Ti< zxyhEFIo`3N-Naq4sq0ILDGiDKk5rfHv`fMO!ahcRz_&`L}Y3H z3fh%#t)UTRTZ~M_I$T9wC~*P?u@4Rt>Vj~uDrQGJT|+3kV8zS<$KvGs6@P1DA$o5@ zX3GZ}b~vVcOy)uYwIh36^@sXn+*G+1(Ty@Kv@KDku9;BCp+O0`DQvOq&El)v-^C@S zB`23vh0x0(<)ecnNOy+Pqe-=^!&Wzo4PSp}q6szaUeyug|FFKXP1~jQml}uA4ZNTj zW!NyN#UJTnwEWdgAE}h#ZhAiCk28dX@uMZ-n*4^8nG6ek`NaCKpY4&%8xw(5S@NEp zr0mQ~lM0bKsZXqof~#)5`CE51R8K*^76k+u_yt!=XkBdk?jb);@{tBp&SKss?#4XV zNl>mfn=EHc&`v1P#WXrs{kIeYyztJiTnEYvn~>|Rqr&KBEpN!zG5)PsPW^o1HV+6- zdS3gXXVTwS^XAUfu5*b@`eQr2+c?Q$B%4?&A*&QpGvRuXCmRV%%cK(SH{2#3k6SDm zWIR3Z>pOh02Df|HDfE)sdcf@hs%5h-#>R{S&9UsL5G^k73br_;O1s4zv z>9by{xq=_{jQD5a$H@14X(kUnILXi;p$s^4``y8B*K2U8#PdT*I$0IBrS(a1-L3Ls z#Cxm&?aX*swZXcOCshA(DxRSY0Lf7MM|A%Hm=d3&?Y71QjzO`?g569V1`-$DrZjr) z-3T37#V(s9gU^<7p^3$Z#@{}0HhL)0O0l8OGG+aN_@?ci>eBsSdRbHEI6Usu*M~6|I$b(q%5JrsaU0KSH7tJgGDOFa3pZ}@ z_>e4dw=9Era4t_7qh# zz`?5S@OHj3dlPJsvm}`d9r5Y8GGnhG<5@rSW^gZ zXry=F{R`H7<)D60n>O73CxLN1ti7w62EP-^qC48qCiJy36_b;*I=w&IUw8vcggg!J%5zg7<%jUX=07*XE)`` z$U0lOc8t5J>&>A+?D+>*r~dxdQNAE)qr#__nP|wo{ro0V`j+nllT%vO;g~sX34F5B zK|`_dZE3|UvXdN|_0}{_Sd`=BYdlpR9CJHnd4e#{xEF-HDdnvAxQX+#R^(Zf|A(P~ zLln=0&k;domirA)oW1Ba8=sW^WbcW7!^K5qiE1I_c#Ah`9+&Rr)K{l-;cWi?!_5*a z^#mCrliut;TnOh5NifO(lNDX}KWH(mA`^GB23mvZfv)CN=}EVlwtgAEW~$HJmc6I} z(GHmKF&ABtB#>6o&!018FyTtB5sEXu>%dwH3Zz`e+$Q^gva2ZJ~L2JSonyYcs|FOfoD$Vz0`Kfh(kUOLE0H zc4gtv$O)rq=KahbnZ9*r$oe$I>EP1K7_yUMH73rN@vkD1T3|+=(FGnXwt-Al?m3-0 zrQa!m?mG!jo4&dKuEna4ThVMLVRtDm(@O7}eyq3Hzlj#jScoDAH~r8_v($HopgOVR zG8}xPJcV;o(0%T&sh2rxTEp-J z(231S-;v9}|H>mZZ;y4(Icw?3#W$V&PwrBeel(*YSDU}1;ND&(S-mlwE*O5L9k)~( zhuC}kE$Wdyk9H!BbKd%|1MJ~n@{kQz6Yk6$9{+AyxG!P}?vyjEiUF3UGSBI7nG$+q zF&{hYRoGhd0GGGE*_E$ z!b6ISG^GSW*gORI(Uy(=X^>HS9{>1e7R3kL4TS)KR^HmVbeA&VB{qy}(Dkv#E1 z6r6)1I}Jli5zww$E1sXx^D_p%!DM7s`0pQB%NAu)%PCpBRbY%RAU0_`z;U8iS8Ypf z0VR2#E6&|Sa4@dj-(-4v(t!rjTsjpgjPv5D2!$MteAx(q=xLl-C;~#d0X9|?nG=G9 zJh7H(8do+|$kLTfYnQRCKD5&tmvp%;bkX)buD9&-;)!}0PWc4yrICnm1^9VuEeA_w zkLwa0!N6C(jO&}?v>W1QLvjh%C6?LQ0^xJ(R{()Zk)TqU&l03^ z2@=qGQ%75qhyfzuKjcIOn5tt_Id!=UJn=GN)E+?mKJMsKUbXS<^abjPAh!acTlfuiW`itknS?*~ z(EJntE>wM-*&=vM4N)2V=-6T050RS&C&3?REkcUWO*Rh!O|vbsvG6{g#VnQCC6*>u z?KfAC{c&UmXs?uHLJQWxE8c3L2&&Nu&CBm5~5*>7HB&lW*q#G;jG!JA-UaajwmG>_MSBb zZzxe}qaTMbL5UHjO70)?%dE~2OSDaQelmr5Z?6F2d0f$Aa$UB&u&I;VpGc)O;H`?w zgeK$Gd;#yhSP1(t*PYlGdDdj@Vcas^G38dVPSv@k7w57KB?q{>68ABZ!UVh^sFX!R z#lv6hvCuOdh)tMVeS$AoS7<;Y8jx&}*$*W;*K00J7kY;t-9IFjjXS#<3S71GmaMW; z8j3I<_m|LQva|PeK03PB?V_EV7s<&qKM9AJ2w<~XO3;* zen#3u*6x=aaTkdRz zw$b)R8LzW@8c*&D@y zd*I%NBXbtGbA{VX4RfS9LQONXK7gpWG0TxwI773-+-8L%)3m}SRu-0(rInVIP5*rV z&wo$h-~smm_qeX}eZJbfS0T6rDezCZg^7|Z3NUk3&h)_f&c~tPs?-^Ll3yUPC_S12 zH&lW7$}5{IReC&5_>W^>RWXUKN9x?-8};B#0LsstXKX zUWeF-J5*6%%^axfAmrD^;s5B!Cjfpj;(Xc=EQtyiJZ&fQ7-{$A@8LinKE$QHcn1k0P~pGWDLWhn%;Li`g+1GWy?eiF-g^&UaeZ;_p8u9FwqHUeGZej8sf8(h>IRR2CUZ&IE3fhLl_``<%P$TR!I{jE;Rdz|0 zrAhbM4**#b$ejX|6v7%to5m9$daE6kMv(HNid|HApXb(L(S;-mFdA?@nlt!u0sm@U z?Om0UM`ffdIg|3PbHZy!dxnhTwyhJMA)Qn;zX6qvnxlNnE4dUP&4hFC^d_Q+z&TKZ z&Dm2GywrYdT59N))P)6rG62$M48_yrE)0S89RTsYF1YT7xUE9C^o(RL+0#Gee11#% zf36?o4%Ti}d@H9Qq15&bZvXCI9a*m#)UUk!xcOrnTK%e;^DM6-9N52&?)HIk6)Euc zmL2BSJs*NqAFxCuNdKWV1fM2LD)n>fv1l4ViU4+@L-4ebJpzkBiEobr#i+FHhz5I4 z!TSf=3>rqShXe0ig+{N!qH)HxU+@iM_z&MGVGA<0KC;D)Q4w>Y;YRG5f>OJ@8gKu; zsSraiwc?76@h(BVZsj!t)XgXTum%8n<4MidL20wA09q&q^feE%N}e)f$Zk?T(zIc9v+Pr4tIXTAAhWv*BMm|QJ1k8JKc1i8|Y7(HP&Xv zJ3i1RHYLwlrH<^BO+0#3ced}0?SVJ#!(S!UZdlWC>i*kD(DO0r=h%tbRkD@tOXa#7m5*=OWul~NeI!Zb3KQLb9#}M*xS?wQoD_rnG6&6*NVYk79DHs3Y^bhQQ zm}r0%3$lK#0CZ)5DgfaTwaZG5;27gJjbYFh`n5#@-{_BAbPCjuI32*h)rB-+X&EE* z)ag9Kj*FU+SCpTRs-h3eY)Kg}n|$IsbP+ zNHk8YL;(~(WL|~t7t9=@L5u+)B>)I<4J6UnMjb^Oyf$yu$1l((ZO2BY8fN3qln@wOW;Nyg@{`*?>x^2)>2F31#v!djjQ3s(MK z%i_EkLZAij*@#?v-LJAa@q)U!2@(KQ<^u41fUFSY$C=FoR*(iK@cd~L8pxFje^-`q z;C4^6uk3CdOycLonhwNA0FBI_t()oYl0AG8y93dPgEUtcDn<~rG z3ekCHoF=EIiVaJ6B4l^`>sXUlG75QO-`Z%+(DccL2WEE` z?5A6D)NW;E|75!vw?{@~>^*aB8246f<2j|cPbv!d#}B=!VcRAC47$9GVs=kK8ba&Zv6L&p&?pu z+pI^1KX@Qs;1tOGs9gX2M{e*Fz)(_i`)qrg8>FmV0tlSUFQwd))eK-aX0qeY`R$_Gtw>zSNRC3tg5Zh zEl|+6w?$>Lc)#Jvfb$>||2|{g4q*qiHVH6U@xpH>%T`mNKOTZMxPlPi#2zBsOghq@tH7G#ZQ_N5r73%0-0sS14lz&p93pRCIoszi3ADmH3Ume-9(Fa&9D?xPoNjqVldva_|I2bJl@SE}O6G0!Us+~QSg9ciYwG+-H z)iU#?9RiXSwS1K3SlmUgr{i|&BW4$wyK+wYPh3RsxF)il!q=XG$M3%`(@*Bn^Yyve zd5$Z@sRSppGm{rYzdn^Pt_u<*6V!zrJT8h@`)EwN`l8$-scf-y@#&2DAC}c!*f;qe z^_{A|My$Se`uVfG(#i73!;eg5-PIOk8q3NeehScAa9gFuv}4c(yYw*DO|Vkkq9Rz_|2e!yXst zvvX0}^f(uvvPEFqSzh{qHeHGmyG(8`9BrxKR>Wj8;3{ka4`uS*B}1}-+w<6xc|hvi z%Lxli89ws(cbZWv?v$A@%(d%&0?TpJzL{kHOt+eHs7sDQ^ItOKKkyQ`yE*VhTDV+K zh~b9dsy?m}8N?2Q{*ydn{%ItnO*<Tot~LqgjNxM1vN|#cBYx*0jdc z&QyjcR#%oex3@+38%eiP$?e8z<>rSHLpL*tO@(e;rrZ$Q)l|DtRxjSWs2&lNjtawp z_ z!<<|oX8%HL2o#Gbjy&DctAU9&54+hb%#5$H&{R6&GHRnGGL7w`vss}SQ=F%qw&FDukPXZP4Q2Q^YZ z&kfB(sVyUqRjQIdQQ&rA9%Ox_n=TI7xEgnXaCa>*u|TGw*7LPuljnGG_J}-lSWasN zGo2&k7Lp@il$_H-1MN*ows6?|WRQ=aYfl&uLL$H(4NH+{PUIUA8{zhns2+>M(hzas zJ3K)$1>#v#A32}@ieA)K?`C}1DYre06djE!yl01x)osXLh*PRLp@AQ_zG~-Znq##i zOc2O}PTi4YmkLXh-HXb+{ciXf34<@m;=evEeyl|Rv@=?5GOppe&KltwUGux$|(1+H$(VIZ8C}r(8lHyazs+(WE@0alKb(g z1>5wBH+f`7@ z{#b2r)@G;T_?sH_sEhFS$5Q*_lsuMf7vyw`j+;oj9zgu1g+-(Pn0J3u-rJ2gAoq!m zp1+ENc7@OpV?kG#nrfpJcDh7qsTsLX88{QdWgml+lgFj1WXNx&KX~XO0+eeJ7tXyq z;qpv!Ujo-$C)8%|F!%;&zZX}?xGH5V zu@r&q>4}8BnA>ig`Oq)qH1d@~8+X)peTETWR)x8h2fnSN?}h`vdUmBNoT3zYy(u%2eH}C9HAcCPF=0rIetxZ?aPF2&zDI|J|-rDzR^85|tL_ z^E4=2oJHXHEXpe}Na+fAs@fQzi>YL`jdCgBhyQjEljp3{)<&OR?cejfzZV}C?D^I^ zG(U{i_$#4{F$$?vZFJeji%u<5H&Zab#PJ`!by7u|xXB?MzdDLm%{4!6^dPUGVX@WY zpOGx|t-|))l`xdb&PVMI8*@OYD$WE&k}Llr!=ZmJRu@R>k>bOXa)vkiifUl_MpCvvlys%i1V&)B`Yz#prd)fw zP3SH~pB&Lyl>~ybr2d66#>G~`@3*L*didTQe(3O%R*s!btc&)^dfiAjzv2hp_8}h5 z-E|hdd!-x@uB~$JrS8c|=|KWd!&{GrsL+8B+^*0>72W6IDW9B6;1=A*=QtygvRoX( zx33ui1a*!1unJDTg2>p4No6wRZSTq2zu2#j+_@h#GUypXawa#}#a6k?UK>A)(TzO~ z!jU|ePm+Qokr3IS5b7z75@Na+wCB(LN0!rUoeJBrjZu_&r(qyN1n=EFVqT{uQy?E8 zWl?pc>Ii@(O?pUT#=$If@B1k~++;`1lwH9bzHK!facP$ZhxX&nwp%?J(f5_*o!iZN z-T|u|9+G4NC_$3$63<|M{sa6ts-ArH&>MW}G~hff{Bc+eXAaL2lTm&w3yz%iFt%!< zQTt8TF%$I`xfe!-9Y7bEhV^|pj#agcbKj>9QDU_Xqc-js*%aSjV{J=33D-Vi(_aF# zkIp|;_gk>ObP?Nh>pksGTM~4d+fJNIlsWHhse>Y8I&lSmY!{$9Pb<&M-Z!Y2rNYOp z&Qg6&YAna;9;_+yyW)IGcR9{@zi-pjT2?^2=3mnUt11S#u4%h<7!Uz7DwFStJw+Za zkb^ZsQ>y*z#Spj|cFk?uWxWZ2~f3JGL33n-$Wyuz(q+GR&Nb+UntTq-VpfU-t_l_BQ6;nPMZ zEBWF>V~URlgqvCNl`@2Atk)kQLikl}nyu@k)lM!k7BX*zS?F`E>&U_Z^>t5OmWH9H zaf*JoJlVtGY&zm7uT?|FRUaDAIfCN?PAP&qqAoN>-$1d(x>Mqm#<)u&LH^(XCS=%q|J ztw#Igc-`Do-r8Z2_E{E)ss$OQhBvzWeqZ~ad%qqXn0&y#=OvMqR}xNqK)C*4f~YWu z|J{gyZb#%*KUd7F^LgjF^t05?BH=7fsJpu;TyR?!AyebFs8^MtAaOyM@*C^%pGT&A zUsfAQclvV;**<7ckNiG2C{pMgoVcEVFASj`Xm6e;)4GbH02XF05V5&z>}?E73_YOA zCgBj?&a-jaF1XuvJL=lWam%rovHl!&KkC*eG-8pw9ccz`a={ z@3KwOW!l4?6%a33rNziyWgmcVd*!u6L<0s-EF{E z0%dtmJ!bqanoRs;nc64eN;G24*w5Xz;UJ#!DI|!|72D9= z>H5_umx-#IyG~5UJAFeVZ88|2pT9S+L^jXJFKg#5?%xU{gM;oEnQ7um3XVA<%%1jC zUw-7Q@TPakD&NpGd}E*Db$Y&((;y@1trXIl#+3K^rEU14JatiiWc~YN&Xx|{HYqL% zBLC&)dqAqE)!Yp8qgBn|OpD#NHL0p1ub{1{hXx*GlQtg1kAhbe}2w(Z*F%`XMl2Q03y$Q2AwabN~f+Xx$Y$#sKLHa*Dp$fVd z?=(>bTYFy|C3wFxN(?MKAb@B@TrYU|4Rlru)l)!)=&lB!&b?j?kiPO3r}%(y23ugt z1iA)V%OxMMTP&HsQXNM7>|yj&vUWy+zxa6zJ{?o!8EeVZ0|B9~HktcR>vo`HOMq22 z=`@RD9R1sLn1v@K1Tc-PhkBG*RA>dYvQA}?v)R1K2Qz3>w73j}2feXWM2z6psrgEaRJ7;7o@f_0rs5(1N#Z^C z{qIY}&42jV=SCIIZHF&CNoDOcW0RrspDR(0Vgk}u0CaT%ZohWwneXkhcMiQjaCB!h z;_dT_lh&QBl=Wr8d1?VUwlcG^2A<}-fZrLFFK^JwHYK( z_K?A;xuX@dvZwv82gf}wv>*qIevoE~JKvRG7636+99W4ClxFvDPXGL*vEP5u{$HAN z^@&f~ie`7(FV)!_OqRUb6Sn?g_vL)I-CAmolp(f5e6$WV4KD`KPv~xa3(n+2Er=dQ z;&6HSTnm9OL`L?^LLhm~yx!lzX*OYnY_3hrz%uM+19rJa&n52xxZHkYTAT+;a0l@Ub{$#39c`1DG%(hD7YLK_ zfGvc}2?3DR!WTaZ%{&30z5~J^@88iyweSaPbc5-eFz6xHVG*8C)E6INnTbvNuUD9Z z2keJcViaDXBf&8mtq@BZND~J#z~yeGgWjiwEPn+J^+OSh>8ISm>gn+Z9|ihYYW^L! zEFZiCL*O9N&zNONZWpD={?KD zMZ8iWre(Sz!d=JlJzWZsUFd{Wh$#i6NyQoPgA7UA4=BO|I3O1)+>f?xX#p4;rf$Vj z|MxI(n;fXhD&w{X@GL9QxyC7(ZR`V5nPM|5597>~%ILKKEC6TtZQcA@rD!P` zkwiw3AYa2O@I;VzT)qYgoCQe_J^{KH9VD{=3?aZjc*uj^0I`V1t4p&_JAB*z6zXNrR`<`O3#BG zwpP@o#cT76wZdYtMY%eB+ksX#4`fK!mfw~EtkTzcx~)N42tWw|O1Crabpf5Wg03j! zPCy}=k5znha1JEvw|}(yqoIb81{AJ&Cg?;4$Xpy~fRmSj?EM(Ji*A_) zWw>#ERMV7!iu_V(Vq$Jnvc)RMLI^Ua`UM-hQ25(_esKl{$av`JoqeDJTT>}a{LjvA zzj$*ua9&W0JB*nZ^7hHu)B|j67t!QjaCb2XTY1uen`TFZnCpTLzJrLefPanvjp#7- zCiyxWMd(N?p40k0EXxRx@4nF9*&^eX2jaKOVEBLn*&~u+fxec;wYCgJ>f!reNOgh0 z!;1J#Amq%L{C1l9p$9b;`H&0gxWb>PUx(4xXjS)!HZeL5j{#@z^<>`0p^JJH3R^HW zbf_aBAJc;~;3R;UFn>FjEnFbMOVJDmOQ%CzIAAkMW$yLB8#S{0sp4(V-U0 z&f#?+VYDS%8>meHqmSkm-!jJMfu37Kw$q^pS7FB;%Dpz}kZ`^+Rp=ceTMG>64iMUT zQK5;#fikN9C4Lc>fqvJ4nI|~hreimLW8VG3y!nOMmxn$lKwhyr>#W-%aVK{U>S&3N zYCi&PAp}@(Dh`ps3F32e#-VUYVKyM&k_z4`xQgdOo-{)6bQQ_2F`fp8$w;tA*tEY~ zZl1dafe@0OVHXdV7>rXJphH2xFgmorzS~u3{OTw!m=1a4-MzTDeb{xF0)Qn55rz{! zUrWkWqOtRW8!ozne@XrTpTWIjs6g;gqD;#{8bp^mq)G=W3Wk>D;A%fSJvkN4)u3q7 zEw0uzVS1%GVblWv@!&$j1kf-cgtRGu66;}yxo~KDa8NgLj~HytXTTUBPkB@+7oH?2 zOXA>50sq5QiODDi0fDC>6X`0jXox8WmI#mlrz-9w>#-7u7j0S+r#LEMUb&cl;*CLW zRj8uxAM{xe#`iQ@@WyL!ijF>@WiyMDy3*a;CWboEKvw;7Mi;gxap6c+$^Ja}@Yg6m zK~{64{C~N9#<38Jdx2B6bm#B-~N!(0jN2yq9%%sXepDc3bJ)K^PK^&+4txMqOW4dfGa#$#OM zpPS(482qL<*lzcwDE$5dX}H%!%#%`d8TE3{X`m8UZbKQ?TzZZZ6p;H0oF+aOdLL&) z0J{sIub1J+X-HTaGF}Wly1KhpG8`#DN%jKYQh?7SnIt~Co{uag-HqnLyMzP@-uZwo zL^FM&z%~F^wbyo-0XpI^wL6RtPv^tKi8s4_{7Ts>6w+`6uDeEJVh-@|Ld>0q=nV(g zs$%rEk8|5DVxsf}mji*Tt5`e^JI{SOB1t<_!Jp>bbO{3zQq>O^a3M2p_}#gFjM)>i zb>J{OJOy>Vsa=vLW7BT_`GH=bO1#P8%v%@I|>f%E@UGD*bD&6Fn#oF@y% zaMz=;y#z#*5E4#D)X-tU0%#%!=Ea3%=BWfz?@L6`Gq}OJ+W-EQOvFge^v5!{Iz1Ia z&c-`#{X~(H(4Z12b2Aj3xcZbgDXR$>Z|;WqjKQOcijv$y00B-RLiAU(-MJ8o5SA`Z zx)VEiB@f*uL?i$gCatk=0a92C>Ho#jxKgm$`Ck+u`5!?N`};xxz7pcr#8R-X#iwF) z8wVC8cyVdS3GBWG%@iOyW#Ktuuo380vf}mM{-dj#X7FB|&1l!tpCy+Da9Exb=1vOE z{?co5D()9<@fTIP{?dEc$ZL=7#8(_?c%}3Y33*AyGS0vytyn9_mUv>jQ$#1`Che4`VUw7j}Z5ruewG7 zE}vb5Rhr;A(w}hHTVfP@6(w;hvjxy<8Zw&;mCz8`bXYbAmQ7qf6Bc#xR?+vPxL+Qu zrGy*$FK6m}#jq|hR!aJ=`Mdj{;G|6=Sc?Ku`wg@vKyz@2`^c&7IFL2~ViN>C6LXPD zcnz?YdP9zi;%riQ^c8mIy$2d z{=!hzw1h=T`ls9UwSahTT!a3fTjc<{%*jQ`Re&uDG#wzunn0i`jiAGT;>A9FXJ zQY3a5ggZ8aT!^FMSM7lqnpGsDGz8h)Jo zd;eA{?({R>oA3v>$`wv;*3SV-6+&me{Nyj9KZ#2!ntLUwaa!@WTA&>b&R9i+P@w0j zD0czKfeWwTz)Vdgm-eMf%cR+fU>@gQA~a>X!6uatyl%?u#2rD#^R1g z7aj-3QI39d&h8EA=ix6!xlOi%hP!@7h0uOr7sv`DuaVj`K1~TOo-hT<|OJBMZcu&&Y7uN ztFOIr@!iahip!haBQbAhRrjz&C;g9yEEtZ4-^|aK0gv#UW9Ku?1GM&khToOONfbj#m~{xR{4%9(hHcs@Y{=Gj%5S zdz*qv@TFF>F)fqvIh{RZlOD6kxRp26Z7t3T1FDV1pAyqnt1_R?YmdDRWHs4&sN#Cl ztoy}LNPQ)4(ShaFv%mB8$4Vm?PIYE8=S#x|WEPV(vQ>KasP^cePIy%jyKFV)B)vuW zY+t5c_l^Cv`;5~U4h+xgq$L*)HKg~w8Q$BT(i?p6^T>a0cn_=VA4A@nAlB3^WJWom zhaV3fJNx`F+-&Yhb#TF!kOEvaJ0UJbt2jUTzCkP%qjlFxxbUKe6i?OJ=8@)gpTAFM z>X`PXW^7_9J1fv+f}rdDnRxcD=b>^;4r>SNYsjDPUn}M+RH8%LjSM|UY+&esdFmdamn&Q#?FVEpS zZmq8r%^PzH3*^-jdR7hZ32s_ReoN^qcjBUQCsG#;h$+XGXfIAv*b|lR{~}7uUaH)h zOUGZ0fPl*{+qxS>1^^wu@C$$O3mwJ&+jf7n)ObXm>_NPdNzq~z=N~29)K9RT&xNQ~ zZR!TXX7MLcwa&O4V&jhqvbJO^E#wUkhnhy5zU4Tke`Qb~pK_`~N9sL(GTR+nF>6w_ z8c^}~wa)xX$S6sl#d$d$aC3k~QgWBLP-VJSdw!NSPw6Xa46-x;v$&h<=rbGbO7^`n zL#!5>bGg>-d*6dB5E?C7l|?bzBV{n>2O(;T3%9nXcie)M>DM0GGpD)sTB`cFi3YlB z*G36^+8T{c(W!Gw4R;`~}!5rrDdVj^6Z$T;lOeMAbrE@S1QhM{jfBJD9p_bEg* zc|G86%YL59cCc!%pmntzDFxJ9vT|BM>|hpg4su<+TYrk--Z{3$ZB{G?@YJT2jL047 zE_ZzI0koS{EaD=Qd4Y~|bz+^z#uMKrzu;(x%Y7Nrc$0VW(JNV1EuD#7P>+~flnIMY zpjLVNYi+fk`*-csmbOcbQEqy@FHt;l)7~6%232;kM(knH6FeI^LjLH3+mLyi|30E$ zT%`4n4rdLI)J5Ni4cxUU*MWVgyqI{vSvVM(kWk{?`yrIGFUy>z)|^plQRFC^t-JB* z(s}KlFD}m2(rnURq~w{`R=SeqCF9 z?d0yY-{tGZk6aXnZW?1o&L{P18`w7PJ^20V#p81iWbuT9s>WjI);z6UjU~!KdbQ3r zPVS9QbWtuVPgOTRR2!cAbut{+q^zS^r?bNh>mTZ@UZa-5)0TY^lz%u5+OaQb@9LyH zZnVHAmwX2=`jR{v;k!TFQ1QyxSoRLt_j@93jxVAgehU9`J*BbA0=xD(i_r9pq*9^Y zu=ZxlJBw{;J}r7R#f4Ss^ACB*gPt=9(NHPIdm|!H%bAG7Ti-da8$QVhb}cZrU6wH$ zRyt8om1O<;$rW5d!f227xjoErj6Bjv<%K8q0<^)yC6uc9UCCxIQpt0(ioVJtGz9PI zT&%P?WFPCzxABz3>XMLB)-JE4Q2LfS3S>MRw$@Mk@}1q!Nl^2O)@Wq*>O>Lrsn1CAd-GRh5mrvE z7K%0earL2z`SzUguD|WN&Q0%T*3aUPf9egkb6%8UKzGJjlYQ@0mEkfWY|@C7aw6!( zy$ahSHDxkzmruWny_H56@U)x(WK9(P_h11Bc@Dw zyHiuKU&9fDp0%B+1&ghykC=Q}D=lBgrhY*^OieH}>F6Fn9njk}JP(k5Y=8V_S4 zzcTj&mdx3$F0{s{h&rHij$nPF5c9yQ8|!R(`52TbnP(EtUi>~izCLCCkT7Dc;e4#5 z-!J>ko7Xir2+rr@d{~!PHZu3yXh)p=5Tmhzs7}d7GL{W8Xhm=C7sT?Qp`tug0@#>@ zP{n~HJey73^$ME3uy#0Dbp2!VIl-JI(NKB~+*MCxxg>z)S3oSf;O1BMhkB-ja}1>x zltiDI53~C%mhbm0jU|;;;ouCp>c7kV4Iura2toOR$@QlNf5MT#5KI(@G+xi# zLWF!P>PxdVl>v??4D_E=fS1c+lT zQ{NV(ReOC&$4!C69um+|lK`P1169jF%~-QM$sbFUODnM~PM*81Mq0hH@o*n13^ab# zML6lAN*}i2v%FW4{bBl}vS)Y6a8XJH3AF`;9>m`%_B|2Y!&D)5Z5#Cpn_B5g3o9Hd zfqTukh7j|eR+%VUkR!{3wLu>uu@QU^3F;W+iZ})VvV=gh2uI)FOqWTVv|Yjg+H?U|%HP?2f1?go&RmQR&{_ zTWe2_XW|NJ6p|f}sZT;E^5}Bnok;#I6dM31`HV{dJrPioz?8fmG$ZjyZ=t9_v!L7Z z!v@kpV;H%9YtKBCp@saoR|VbCzLS2jMSxgGSRT4%B(e-7VSW)@<;Z0TwN;6eFq%;7 z?uPp@k^APrpZ>kScSMcuIKml^LBaPDp+q7m%#qR934rr%A&5R7N+m(wyuAYjGz3H& z0X))44~bwbUD&?Wp?hVIZt|+CHvnSI0S5!}UATFuF!Bd0Hx_P84p8<-cT7Siy4aTf z^epQBqjo}fDp_n7y-->%nh>w_9}{8dUlD)6q{SB15K##VFe6b`gV(1}66tYc=Z8ad zMFEQ=E)1Jw$kF^+#GA_O>koWJPPbp~qc;D=^`l5&>&g7WSg>!Npf$u$3Z2LpS12eWC5og78)5rVfv^ z#-roT_*H}fD%f?~klQ`KfTLh@V% z(paLfR(CG9_{qAlVUmjTY&w!4!R`PiB+%q@I*P#fbI2`pyw7PI>@Aw9wbPEZ?QTCL zu!?2k)$Z$;&EQ)7?A#C%A2R46U9gT&B{H1^`LPL{(T>5Q1f1()0E=IE^jm-M8>5BW zh`(gH2e!~1*&tOaBLo6GHhk9(8;YRQ(L8`eiIg-Y$Ib&b5j?sKj~;vNQE0?4W5osC z__%!(=1qh+all{FA8rXF>nGT&8+ z!ULW3M8ea0R8h)vHawrQ0BJ+sVV{tJOOQQ@PRVS2c;P1fsI@<9<0;BBvg8bX?;X+O zn_-GHpsHXLm3ymon71}vHJ80>TdD1)7Hw`V`R2~Z01P6Ovl?ud34n3vSVLgLMWB_4 z6-z40SVuGkO9nxRXMVA73_U;o^+ws=NU1fmFZu5oE znC0QS2wE7H1l-gXF?S_!2pA$@*!}NsOfL5BZRmq?5dvjaN6Ustlu-rT%t5{Ry}fr~ zo&X350V1)%8{uqd5tc1N(PuO%uikgt7%O=u`S1GZQs9AOv8_4EG@!&wE&awu^TQqm zM=)o9Uev4X$1f;umgE%{F}P$I@fACSHvmTkIU+NHoXN5U;Lw*Z)jBYasB zj8nMRetrqInphSx4=23J@p+M}#!&an^8_qJ$_|u>w6@JXr)tFK_r(w&UA+?qk0i0Q zs0>`#&0tqV!X-dZ>LQFp7krE6UV6E^9Jp_ufg&(pdw{YT%h4;x(Du6sszRGf0;a+qZ><)X|$V%>C z%#DC>h3yZb(Qqu3DYtsSEBGb~aWB>_&SiTNl(cyB(n}e(xa;zX=%BH+J2fFtgRt}~*&Ta%L97s0EKg8m^2<^j@dpynh{LkXnk znW_WGiyF|i_-dcb$*0hnMz$awz#GKNy6>mokJ`i+xhYe zWeDSOb^MI^MathgVIStZ#V7)QbRX-F;R1XB)i8{99-lHz$Kr5GTy1h?pn7|B@EbiT0ni50td6o$~SEN}6*xdd{~`G&LXT>YdrW)y}qR%Q}mNNE*g$7~@0I10w2 zEs)40JQ?v%avtuMB=Qbjif#X$RewYjnzb z+k$n-^eC?E+#1HVC4;n3vWmLdoq#U_;0c6`BWX!14l27PV4R0@amOnAs<>SsetITZ zk(IZP*f3Y=-qdhCOKaz}?#oxpl<^a9$Nl3i_(%h%5CvV-TB7%=%GU8GSYCXwqOhtdU{0shGRK8JpC?36RqY!Z-f zgkKM4IN%oprH`P`y!M4&58|@Cc5O&z9?h=zzVt}6(3J(5xMu^AF08cM)@@VWTuMiK zY*pYU)_FsP#Xs^^{s4YGh~e}d(|XtX#zy*WopetiD-99X65(Z{!O?a`(Z+=kq`a`0Of-l_RdvRY7j6t4jnvD1^Mf;3z_&5 ze!x?E>pMABjPtGSPo1u`%ip`S^OTXv0Vm}PyMn~Y;BwnJ!{101&q{2XONDGqb;fw@_ZtDUbMoY#gG8ofRw%;0W)HT5xZNb4Rgl(*v$U%`%t z@&&~h>K5Zh9i`NpgwvWCr31!iT#i656Id9_x=?^?EZ#FZfB(~|C$q;kXU`NLc-W%w z!PU@NtIz}Eq7uN@p#3NXJlShTnxg|u$EKwzIfjc!k&Pq z1&&gm#=|_LJ#45Wg+!s)L{&-NS&5EAl>(p^d}l(KOquEd$;#LJSr>lSm}ZBxRtHa@ z(*np>UnRgD_?~~vwe53%n%F0hPwiHr@U$kQm8OMIlS5sln_DjF?9&3*fseV_Y;CL5 zh;P0%m;2tko6I4j8_M!N3`ny~12tt%!*4z8!uX4{FkYPk#J@?LvZt0*Wmtvn?M7_D zB0He+0^m(l7wR5hRF*1mmdWqSLp>zGe23Y&+yn&(H(fX0pZ=(Yi0~6KwJy!Le=Id9 zk23{pv{rJrJlgP%0zF8UJP)bd3A4#sch#Jhtp9S}`Se$wZ28TH+g=($`%7$I1QP75 zu~2f5=-Tjxpy+ZpqkKxM`Gix@OM4S4f;Ajn<;XQ~?#Yn3%Hdk7uPGj5;Xg2uBw zN|Mq{Nn1KZtCftsZV+xY>(Fkez0s?*Kr!#fZsS0S*mM=eWp>tq2hQS&eROk}sRVEK z@nFOb5|@Q+QABQK8K>02t(y6weoUZ3nDl}AGf!L(cR7t~ECN+Fsj{d}k@S+`(&r!T2CcCsBqj;7Cl=y}_1>9vA>{7#WJS8a)s zUl$C?lwKpvYx~jdg7nxlKSOP<7Nipc6k*ox`_-uDW(DDI zT+~gsN=@RY3jEpMdhUE~)4k^mg#MVlEvEU=>)RNz2gguWAsn@SKd)A})|B`&srtaU zYt6PfqjRrxu-$gPwwUF{mxvdzVad#eZTZLG*;nVSP}}{sN!#y<{8V1P`irZPh-5)7*pDR)-~oygS<0uRFu9{D4dRqSK6ty zDlT))aY{>unK#er&aDq8{$_@j^4O49zxhId`@qklI3(=nBYkq?v6B!BO z_@1z-EGl|=b@q06HQ9}#9ij8E^zDC}rQC&V3jsh|3j-x7daU@^4sCbiVl6 zboRkFJF;u-ACljcKgUp?uH>{0m|RO!XHM4_X6k$9jZZx?$Dyy`;1F2*(M!(nX3GuZl9iw=##d8Vn;EVnldNr<`0e^ z%f1ih`FXDP$m~_ZEASt zj{Ck41XoT-`~P&u!S|Z=_#F=3jp80s8|t@0CeqMu6r}ZvB6-N2h}Wo~8ShRo zy;RCiyFDqW@!d!>UZ5NG(!;~Rc0Pl-_X9QY>9{aY1zC{O*npnw<=dYZ)#OEn`%41` z{J>*$0W!!DqZ{vVU6rcc)B?Tm40jM6hsV>p_h=;16&k8hJ)R@(1`ve+86j%!9xKXh zknwMjPaOJF>MQ5FmqXKMtT&eQ!|3{|;G?qx+OVsnxkZ9x4X#_D>GdBwiURbg_$Lno zhnIaGxyQ=Aw5db8?{alDz&bm${cIWXZ=n8ns*D?ek;`$%r-z~%)OR=*9xI{50TekM zu}(?N<;ac$-Twl~*)-#H@Jpubr;H$(mLblA7s!P{{hf^cq9M>3S}dN6TLjX*G-!fq zUGh}|IZcZU-U3|tqRklcQt_2rb*?E1*Gkikp=tXG3`uT~c923vC^VazdN$Zgx)EQf zM%$rMeHz6p05CT;f)6;$-MfPCrs1P}_D`2)eeqAyzPN#%H{kViroQ$*7KsSC| zbQsiYfJ81d$-h8smoWTPBW^k7Y9i&g)DYVr{Iz3U1xwr42c%C@^}DDtWR7RO8jTM~ zIja_?&+zIAu}G$+R9!zFGA?=_aN=h(R_HkX7n=BvYegLWaaf5>U(M&3o43wIAAC6B)U_UBq z1%>?$qx01bh+J7kk|-A9l{|26tt_3IeXuLIv`e`i5A(Ae*B5w&DKw4zh_VC_evx{u zN5#pbSSw{ugVaGIE-bE3?SntSY|o`}`lbc^I5u5oUkZ@+KcNvAp++jI5{R3ma6IhX z-B4w}{%{>2!=+JOz%v?xbpfsen?u8j&Az!sU$lu4kdAe2;$50H;3Cd#9rsCj ztphX(v#Huv`f_dPw#%|l*Qoi-5KW9eVNNSM%FX`^+{fOytOFD!e;V`%zIo{S3y&2= z$_i>z-9Ug{&VWoIVI!H9`@62lltq1X&>Yd4G5%x^nH?d-(=wKUZ=25d7q}V#J$)oP1?|QzaG4%RbmQ-{_mFqvEB&TISsFC{r^J=x z3#c{mZ)iid2K|l7R*IZkhs{@wyoFyNofIo=_DiMRejK?i&V?#NS;1ttr$n@`;Ta(w z{Gr08;dYRQA>G&yY#vh((IFOKCiSPQ<|9g?`b(ygZJG{)t7$&4&y8JE1*Clf;^S#$ z?IgSxO@l4+4=q%F9`gE;dvq@AV%YfCUzSkOv@y$OO+(rnJczbPeSWt8a^@8a>6KlV zpy+HhdJ-20NYm`5AFHHyYg#+csa%}Hd@YN5vz6|kMc0a=LCGNen>~&)mLb2}|Lqq? zIiB|Y3-y{24gB#F;b#r8`UHiLE$y76Fch%OQdp#|H*4cdR8m<1dSu!zbq(z^Yp+YsbKR*ztj~r!Y80y9r zGc`s9#$9f8-Gg2{&{V(T?NyEVQU+}|_yZAs=2gT3+}WDDM1_;UecfB`57b32 z=&sMk{`3eUHJ>mL1s~KJG|mQtRs&ym=ghPzwEvBwucx{E29c1lP}sn}H$Yh|2*0B9 z?_Um1RS)Y1zyi2hbJc|A7Kfv#?Iug%BlWM3gzmKEm|^$6kXs+?c%@C81=0Gpzv%e> zn>p-Jp1B8kJB~QM=q9DrL_^v>YzQR2PrT1eN$SG;iw}F$EQeeEA?6Wapy&?Jr z&GG#>>*{sVpa$sc7p8hcvXJ3Eshxu48;yTCnmb%wh%sGmhW=Bi=(G`yZ4?#?J`e?t zni8Y2Mnb^Q&%r#$)44$YLSccnvP^{e%F2TrIB+6mFO3(|}gA<=iMtL6eZX1a8~ zM_ET1l|v*|)A-TcyCK(LBDeG{`zcq|>AYQv-AeH+O;=R*HgL{?@;D1(Afb{f1+%Uyn;CfFfbz!O)Ds;WvabP$}zG zKyt4eHv31?yg4esmQ@&b=sRJq{NY88dIj||Dt`J0P&$dW zj}21x1F2LD;A8fRW<*~7Lr?kVpYD?eLlGOGX6cea3A?zwD61=$`Y@0z(l@Z#%b`${ z$PJrt9ZRxD6lQDLX#VTS_%EC<9d8S?h;;{mK;_JTiv= z5peb>RYvQN!lq7?$iSW@NPW>j8!1~WNL+(^HZDBadil}!GI!=g%+SlBm#+uQo;WMD z#OcR_G7src+?rV<)7KGQDH~%~9efQ>Oc5D*P1+ax5MPONPby-S?jb(Ra9*ovU!)Xc z%4~d%qAL0R_XO4T{M?WX*E+~rN)Qp*TwVLAJGo&*^dchat{=Qh)iy)R%lripvtG=% zsxygg;cx7r$I39791O`L1bWQSJ9X@?J4@>b$gU;u@x+4pS*4E?H$$Bk^c}hOqb>=e z3i@^!akx2Ty|$HkxnmTe#(Sj~a<`r%mF>KE_tXbs)RUg$L5|^=CL6oYm{s!2y8-oo z-28d&94=*p3PBVpGf(~PyH>j%Hl=a6o-yjuFIsjO6aP_iM*}r${nDwkg_3tq=U8V% z#LK_oJ@c(zq?8Xn{x4r5sy3q69>1zt>vsPkdpEsxV8ypZsEbi(*{**@ia`u(ykJS& zT2(l`R%E4eW=1coyP7znrV#FCw_zyi`77ee=ak9~sp|L^M3LQ2^P)KC@9v=JS_he! zr%}AOi_1~3GI)31>^CxuZ>418q|K3)TrVLw;hx#tn)F>MvXH)pMR81iGVUGmLct#N zk-M#`T}}M2NV^gRlNGM$!0^R1wd>L6jpiro3lRK{l@ejSK3Jp3)yj~@;IoqJ*E`B= zcJ`Nq`Cl2Tjvfm~QX$tqJW@{kTGU+M)$3fl?-D|%7cp&37hm5=TDf4I+lsRL+KmXl z@Tw;{$b|}#Pq)^3`LU}JVZLo$d!Ii=C^@jO{<+w<#x$zdv8G?BJ`5F+CZbWhSP#

{MDA#AfPU$yFnUHAn$E;Y}A1(j^uOoW9)v1gHHzqdaLX2ief{eoM=cW;~a)%n&pLHCc9{ls|Xe_B#k@F@!-RK?o&(*=#&%+)ePYrh)WyI4*rAJN^$LTE=U zeZ`-i>$i@$;1>;#E#kT_BQLk7=Q1j z->%-trk|&b5Bu_L1ZV2}RvmpXdc*H;lGOLOX=L@>{)?ei*5k8-C8&mQ%dffuja1B& zNEYYt)Wwbiz%soZ!X7CqN=vys%D8`FWQ;YF=>0Owuj|(5iYsb%E&N}HynvQ|0Vm3v z!FV4?BLb$bej-Wsb=M?B$&D?{NCNfLBJXGY1d5&I4N7F7vknXa%>-R;@(>pjm3mH& zeSF2+nAI-p7`${&3*d=QQ+Z)fnB2#EgGxwFwh!x_+++ts;dhoW!wZjoY(1?19RM>o z2g!^z1I!_KiM*sCnj-C~5wW)F)T*kM|Ic}EA?xdiq^KgBfIUh42mXzlM_Mwjeg*Z^ zVChP#b*G*9+@2PG55|L?1v*_MS$9%cEgDF7d_$9Wd~E9`U1U_(TkH`~bRpcNUFBoI zBb6^aAr8AAIlC!jC^~S*=+hFWJ3Es#86)ENMnY*VJFE9lVBzzy5LIc#DIKHreU%;c zq}Dlx2B>_(p*Dy3t0gTD8$O0H8W(+fXGto%V^nF5B}5tF?u;*HRFA_%!;#{sBk@E- ziapjog)V^EF#@AhP@LOhs9u4CBmI{(t?@&nqx&oj` z@4TGgvdSmZl=bqeNL?oP%M{DIq`ULTXWMjh91g$t=8mrQuO-u@xDP$iCQyfM_GJv2 z`&#HO)4a38NjJGU=D}SkIf^Rcf`p+PYcr~?wbVV$GVB97MTScm1`p+jRRHgVIUb9R zkl05CeUkZhfO<*DJpG!PKf-T!K>h*jG5D}+d))Dc;F5homxt&RDz9v9>A|5;WP05J z@~I4oGhWaRK!$=52WGQKl{m}fD9tRw80>+s9Xz4K)rHr;DiRo08#Du^8{+oc+2bNr zL(=ecTc7?(ot8}blGb9^w6r|J>`7g?g3IFVuP&u2-qlkcXga#1q&f{XzU)4)Hj0M>SKuxloZf;m0$ITS|`XbTo zAel^`?Z(u1j^5Q~9_#0p|znYiFwqXFfZ=ls|EQZ9kIDf~dn(+gg7weJ3Kb zUGI#kVX`f>AeS@*K9Xl$Sh}W8r!Z%+A8D{aS1FV%I3c*lf5)^mg@De-c)csE(d!E7 z{aIXg>-~{$e}+c<(ld3O{*AB46#7)E@Z|jK`Y-GE2zJod4Bq=-r4qewlqY^f%&^|w zH{zmlufMMjb2>3|G(9=)RjF&Yy22CKMxYYzOEs4ErmSN~NlUUKup~@zshM(UajHPc zH;v%pD{L}WS`glwcjU%ahAyK?Sf<4tPU-dE>BEjKn?_lFOG%?#=8xWfIw>S{p||p} zA4l2#4HU!bM|e>}M2qh4E%&N%Gt2+@yTpDw<4SbF(za&(hCiUSC9}M}e#01xjneI5 zLjpiJ_k;*TI`WRn!MjWMd=>*_56Qs7XZ&Ab-a{UJ6Vz%sdS|@et`%aCX;QL%FRQ!d zvZ9};ik+bh>N)j|M;gynCMs|B{umWH{>(%^iI&pW*s~sfa zs0ClqHhgZO@8zFswd*C_zU$3}=$oOQ55B$M%+@seH!mn%ML{g(*%FxWPh0=WXwz`1 zR~-eO%@WRU%k22@vSaln1b-Q_d@DrbvznvTFG&B4IDL0ih}^L}Ti6oTEL7oyt>MEa z5F*upHuF#M3pQqZ$j4<7fszX!(6Ut0-?q&m9HUzW9YK}$TO%sr#Cs@mCH;Tm0ykA7zf8bI04%#ecd-%*WKJne-=uaN;}`iiDkBxKZe5uNcu0tC%HqA208qijGK2@vyGV|G2c) z3jFN+Zfx_o&l7|mMEqp^%P42i$pC3+ea~*JAb%OkAZLvuL>l>`UZY7XtN^u4(sV#z z3|FdG4bUc zhh~*AB|Y`@@EcLOsp5iu|7nf?rZVH|;n~`_%Ho#;h072;#{b_IBT;%wEvOOuY;H|# z0WRi~?qU=o38}MpR7D=*NY^_T#i%RHQW=>zIs5aHlPp*Y|8cbcSNZdV$R(-0!X@pn z{>_DkRqOKyr%7?&kf03_?_acGw+;Jyyqs)V>lpU3}QdKh?GXBQHzmoFe6(wWB8jxRN+pvE!9zQG|ohJdbWJNy!2`d(|G~YPejdTIMe!ixbZ@5S~1* zHyl#b6(m;}vtdiy=;I!d4<@0$T0MIIa5CgJB6^m{7g;xOI9Xrc0Z0yUV7Z{pq4ln1 zVz;KPSY_J4f?D%uxrj>$u`k%-bnDXEcamZC?p+OSb6gVt9T^NPuO+GKgvluRi<5RgEhD>n@>dlY?zn&jHp^}4KvEVj7`4H~#%Fy9HMWkD&7G_)9 z!o+s4k3*UU{DjQw-aFK>J*=3?3yT)5>ZLBohh9{fJ!$`xn0itRn0~k3`BS9P$hAj9 zKwhK2tZaWPkzxx3B6U6xBbFpnIA#V#5sY+RSCdv1#Qp~4hQ?|Xnc*R^zYR= zyuFB{i0GTv0gZ8wn-h%F?*1f7+XDJlEv2nXA8>mtyXHmqq;PDzF532ZpwLp_O}x(? zaC69Vn-7SWiIZM{!!v6o9igHCsD_rP9s&V zNa?HjJ_jZC25BvSL=W)cJOJ{`nk208(cX%_TvuatSb*9_9{ko?<zH>^d8`gXWO-T-GsExv5`WmD z8uUF8nc^>NlxZ|xEH$p?dml_+=sEHa9_K}nvj>VvYbd1FS?}-zeN_`25*UZJ_Ls@h zBm7ez$aa4h%J8kI^HYtwB9rk%-9g@fbx+ESk#r33>DuorIr5e!UJlF*)l*+jA%D;P zOBvQWmO%hbX*v2!8sU&#gWQ*C7|L2;{F1^K+XND;Dk-YUzE09By-?cKv&L9`0p{Eh z;%pye6Y>siSmCn$QSx8QJMn=hV!W_JPRBsv-dLfW9d^2wXShwt3znwCEv#HoFuqOL z=zgfZ`(#kF^MNirDaBuYF9oPRqte)ZUhRQ|$@4)p05}Z6$qnJq`LFu!;^g&zTHu9b zl&B^Ns|i+3g2T^HTs>v;Ibjqm)r~qv?REVEtz0EB5xECBNi3 zYx>4y2VLS-Sr?9>tK8FVnqB_d1vWH{S&pV^DjchjY`DqgIIC$(Ies*XHxwmskAX>C&^^oAXLnNGW&Ux4nIz=5sKA!Mr4BT4p10(=v7Ds_mA$*`a>48*=#+ z=*DKAJluCg?@&<(Bt2?C8@Uk_PJ1m0k@V}wOju(Jo8X1~&sIO`#XpPp0$|es^}Uq- zDq33NTOw*UlyZ1oivPf-JFq&t`XFPA*Sc?=PJDmzEZfa-^LThr3z(NxVy$-ZPK=+e z7Xj6E(k$Y~;b31Z<6#dbhlG6_jO>*9zKERXBi(Q^_J6~4e$-=~B+_jvB9_?3ZJ=e& zWC-Zf!@ng8rUw9LgMiPkX4M=H4|r-Ccl?ziX;}WC^}|=fSvTJqf4tW4Itsc-R@!(~ z?;JXKr;u@gM%>+hfWKc|Fgcc*v_8dL`23tDA>{RDVBKB`C%38LclK~Iuzuj06Ug+q znL7?QfM|6zRkhB;sAt~GycA&Z#1mTZAf+=xgB)bdg+q&5`I^OJ%xVGpwD(QZtr2k^ zg^+jiFPgB{H2pbqQ)Bw-1r4bQEpJZkbffj*PFoM0w|;QbieE(h6HHC|@p&(oQyNPp z2nROc)lFe%6-M^=$yRn#S#Q$zTL1G>-U{ELml)-e%X?0_EM+Pg-<&6Xw4hryjxiTg zXYC;`hqrh&{eIH*!J%9ByX#ZfYO3;}Hb-&} zPS@|xuX8;QhT7H~uM8i3)@Ew+X2(0sw39JsRdoq9if{T>QWIfQ;JG)=vhQ@^=wD@T zTPlPvPUVm;DR#MgUjLs^>E{NpfZF;&vrlFlW=ZS(GvwNTa4Y`iDB)CV8Is*{DWQl_ z5Q`GAz1o*J#*oyT@v=&O`+o6k#RhFj{p#Yft44jncNoX}*UFJ(tDHNRL(m@*E9lmm zt|IsoCFxm2)v}pP940J7SoXLo1m-)b_v4LHEC0fz*-l5mm@-D=7hdHoE?Axh_P#br zQHJj*onCS0d0CcU%5e_FYIjen7v;CCF^bZguyz%rvzH@VoRejpzi#N~>)uUr%Tvn! z&9PEA?c?%@Ea(1xaMQasNud2R zOx1jIE=x7yEJ`xSGN60vOeyY^>-tU7cH%VP|eZB?|6EsGq)q?{a8K7uS_(43O~6T;{3 zoC>k2IV~+qw>Y;An=D?Ian|^$7O$J}?^8>E4cE&Pd+3sN!b-87pNNGlt>%az7-#?C zp1pqSP~-dOJu|N9RnyC#*`Gw3jt-gsA_&bf}FT@*%j!t(a13cRgVN6CL- zcZir%LD#gNI&M(RExyzSxZC!aRaMze-1XPKrQ=#0IPpt{uSQ5O-(`ktoTotKCj;~- zZ)ikJN9O*qGEqOVK<+(Cu4csrp4|)=<5ovsCL*E85RRDB$bd41lN0@$D{Zm;M03EP zh{6^-*tuE$XVOY;yBV%oR9CM1!Idm5MmYP;4ng&KtP8_gkk^;0Y|v7d{cz_EF84z4 zD*%`s07QD+VM$xuDhNwa!97PlHf)Nme7~o-iF#`@^Q|43LGrpG;nX{@{9#hWD;_M} z$%g7Mwlo~c0q*|=jv?U}+E{<3l*-pbQ5Flc@`cRDs=?ub1Cn&xTBss_A zFuK!ZN;w%K&kaT_Ab6_5l4?l)dZop0`=~}&Scbel`We#MK=r3R?hp9N^R_P<-%O{i z@cQ||_9_aE0^&NxS<1CS2lu2_QcJf%+^1{>wVdoK|9g{U7QZBn={QPjXBr6hiX?NI z`TG7_A{;;$D1SZ7@n~p8Mw{cFk;h4UGbd0nUF|c~vM

lSZ!lt{B~aOg|u6gj=% zBLA>?v63&7YmovXPI*}xtvGW|u~l%uVBrHZKzY-?B?tJ=H06a!DDvnU;^YVw+D=Z_ znyUj%^o2oaBGVf|=~3vs_YX@A8%cWSGV(JX!l!Uyisq->w_LPTO;6T;JHfCZrf*y7oAPkrypOsw=%U zVF{tvOB2^Xh#d7(xi>Kcu@dwGIJn)cBFKGF3kIu2B|nY4yj0bK_ctru9MX&c`CNG* zE!QYmsK(R=A1~U@tC_cx*)GY-E2=_%EmOU}alG&%pUIhiuq5GKOGC%A=dtE9zQ;cQ zd#=>`HBddMA%7990@`Y}Xl$&?+jOa1Hk(!%3(EO*`sw-M^3leWA(cD`{DBtuak>uSa)QJ%g-Th<+A{+S7*&1XqDjC}4!RMF9 zqF=^OU!DkXuyp|1Fdbz4b#=!HUQ+56X7+W3)()!hoJRpt`gXpaC9U8!3pQzF26aMO zlkJ#&Xopj>&lB5y766rPB7-q}fTme?LbsjE1|zJh=k+kd0$c>UB~DX6@mVWVxAIH; z`_fasJ*t_Z0S86}&K|bOzVf~|$E)%5?5)C1GgcAoz-ArjrG}aA?>~9I6YnOfw0k>3 z_fq6^`}#$moSjmxsRc{9v6kV$ZH&%ecf7`c_)Yii;ya(QR0s`eY$H(-zwBA5+&ad1 z^Xy5b%ZTfFRcm8io2dZc(eRPtzE}H54@eya^TYK$PWM}DzI}@KSMhsh#pcS?E(%jU z`4Zk8RHz#^7W78$nG$v-mdZu{F8J$YOF!lln zo#N#gp_!rauK^tUTi(ebQ84u=!?jQ&76elZWo@dR0|@!?Abvki`-L7{u{z7(LC4U9 z|2%*ROyMo#GhC*;GBj~lMXJ2Sk1-Qx(Ruh!00Zall45Lu*;MNC08Rrq2OqmJG4X_c z5#}ke^FKn}vyZO3N1e&!I3|L$J2)7YP?`rYeiLHA1p53q-QWo<@IW2r3+3>R+Zp*E z&_83;yZ=f;^l}+0pq^kBYXjKL`i=KW3p2fV;bZ|P#l#&2hlwBW5w~{s%@oe5$UyTF zQ)RL_7&cHH06B{FA#4fZn?YgCKJeINFLsc1r!(9?DUvBH0QXK|_k@!vc`Z904Y6|P zndg4|K()V9Msbux)J~#$7#Eih|I(*Qb&KZjx3h)1f1Eto!4iHRmQ>%7`?6O2)@*3y zsiW_|h5Ew6M3F!_CfJU^%B=22pmjBcaJ5$C-+&{dy&=yxvmIa=)X*gL9%o=? z(oezOrdQzC4vDuF-peB(3>NCngpQU8`LQzL{-8pkps&`Db4Xv1kv|40^k@D2ri}0{ zS(pjVuR>40_oesUq%6q0{mVO8mpgJl<1{;Y`DnLL0&tJB*ul2F66EBCV#mklu*xtN z0d^Lt?%6SRQ1QxAZ+HwqVG)d3guwlwaDO3lCI}7$ZDylGcERT;W$>xwa!H{OWQl;- zi$w|(sCl=n@@~qaqps%FbrMvp$ZIoxpJ(MehOIFjB3g~Q^`^GgQzz|iiM<3^7kfD? zJQ8Vxhb9e6$Tmwj?oX{+brZ;CB3PgX6AYKUU@9cUB!jU`AeIFpGErvyFa}e&9%~Yk zg)XkB$jcFmUDTTQE=lGmEL;LyY%?g`J1h;ojVe!Or@D6ZRMHCSimKf zZTslRJ8Ql*)R(#)P9yS_>!Y7uxKrrgv66;B4M z0YGCpXwoLwi-qXJnqaU9on5X!@{B(V8XE!qBOqJg=S-YYCjR<*#D;+@SeOUuC@TLC z@PyG7*+WZ8%#!@9#3ME%xzV|eaj*=6khp!Q#PiUjnl^TzQl#oI0KNo};(@Gr%G?I`|E~VFg>%l#mv0+ zf&C)eeDw zONktS85-~TxxR}&-HDW6GPG6j|9P2`D2IzIh=XySdv-m4nVrxhMk3V$b1g*$ zmLCr(THEe;5%~ZlD+og@G+nr_&7uAYEa^=&8xxhAS$=k1*#lb=%`K-24)hzkPBGZ#?(IW1PSh4$d z0nhneTT`xbrAQHGpTs1nkM>b^M7bq#;;mZ?B zc12CZb!=YMGSaIt#=Hd9Bh~) zeEh^rRk?FLJ*Hf;3Mr_(J+$afXG2`rLUDi*{ZFZ?4O&r;?<{yrHB2S!pE5g0rTi^I zgE@xO`jg?qUT<>IuS{40-Y6Z})Lo<7TE4*d$(ERyM<&o1X4j*5IU(S+J>jus;Sgr# zxHm|P3^~Drg>Hvfi(K``LJNIS34Z0KlRjEnP}()SiRtzw{d0+I*xj8=$+f7Vc|s?c zc<-j%+0gWsGgafgMZiR{3B!9Bs7MDEkuns^&ANC0^)>zhF|=XT=zA~Sl@d1A&& zu)#S<7E3vDQ@G(6#`YFgb&n6royW)uqmhUwUCm z8ModN^bbG2a53<6uF$E?`DMJ0{K0eNU($}JXT$dGxo8|wDj9#8FCX(F2d!4shM;ZWov(cFb_bzFGQDtH6dYv)lhT3;13M!#D->fz;kM~ngD4SN9w(f>?h6oNEq0&#J#Q*C}4i ze}V^gC6b=yvAT?Wn!6N_Q5_`DS#Z+{xV>^D5-hkqujLEZB4Gkz(rB}V$%ZB(my`Lh zoK1X=H%f0|q4EBEgXnjj2djMm56)F1vuf4}&iVs{R@^+bUs`CX9uZl8fm zQDqfu_*FJs$oT-w|3m?`XvCF#_=4k+vw(K-kMx&sWx0w*6bO?C4cSx+)XI!6g!)E2 zZgiM`^n22f`A&}yJ{4ZRZoNM7V0_j07QU_W+S=kyk?d!V%y-ksOUVJnxcKKuW%l-O z3b#G(fyoo|NQ-Izr}B~Ff>!HIK*1mGZZ+&z%E15*)Wn0yGWq1qoI<}{Fg^+tIgf5C zNW}mk@t<;jd`?Y!^Fr?~!SleLT5MKlb=PO*y8MTi(*J8|dT;+F?CN>Aq%hN?MA-Sj zF;}#bkgYTAt8VSvOP}nz@}aI2s0~~3AD22WfKI|46Km#+L`5*{*gSkm@Jfq>1LG{ zEvZBho&;#blxIE`Hr-S6CQIiGLtOb#)e;D!!vwPlp(8yAodb_+kdOSv_dC8b#Qx)i ztn-Q)Kf(P+Ph&*T;9Tcl`QrDv4Lvk@OS5)RbG9_#We1Y2T3qaNiJ97VessSu6}1Q< z3v)dMC0a+!Avh6aEozU`71%_RCepa;70yf9JcLow@8-?M6|mgy?eB+LT4uOX|c8gYJSWXfQDs)32Y$BvEWxN10Frqs0XOJ2BobjG{S zVe&j%87YiP$mn&@jW*n8w>cM_z2d<#>v#z}tP1^R4WrrPU zhZ1EqV)g(uQBnd5inlkl$#_hysOWZPWQ!@Np7h$Os3fiPENS6a6tg$|v(19+zez`-T)otGMPw96w zb~Ks!(&n0t$N_ALPJZObSW9W~?EZF)G-{yl)q@_P&xnqZ0+LYt^F+RuD!|}%zK{}S zyZ;Iz01u?3fwEO=Qq;^+90GJa*&7Sl zAFeu{#6ERcof0=`_+l>Qrh_qQJiN$iy^-9=th!P#aEn6Ido;$g8!Fr%;GKF6(!(Ulmc*=CNoVC3TS_VNiC8a-i4BXkj16vuWOMcgAWo{5{ zctqJirIsVf1C&Y}w0vsZnEHNK&Yg!A!DlO<&Bhq|+AO=Q$OL336CgJYRn)o`tifWY zD~q#@)Opd@>ZS&Ln*;Gs1HC&ph`mj{2vm{6>;07Z1f(TsY3MGqJu*R61MKbe8IQUd!y2 zsOGpvWYf&@qGlrn0#_Y)lc>D%!$JrS>7hUdgM8Y1?u00`TN_;mO%K2t_B)1|23LHH zpRzEH{fChdEGqWnhORQ;`MUzGg@(R7)1i*vNA-4Bf5hQv5|mYM#aSI93~+WYJe*psZZ|K@7%AiQ)`EARP@Tjwt7{z(mj?bFNI z`z_Oa&E_~EXnG{95g?Uy94Lm{sCt=H&$ohc)sLjH#)#O8aqIW(O;%Az|V#QNo^)_p+K(<4; zC)Rn{mi%=nEqp`2e5x1#UjgHzAR;cT3aLhRvo=FZJd84^u)^y1;WkG4(eo7Pv@YKL zwgTJ|G`G>y_~wwFb{;Gvt7HJdYvf5q23!!;o~vU2zms_X7b_1U__+B0S$UUsM~b*Z znW8eN=w>DkJeY-)Oy)ULEyYkMBAH#WxWq+>;>kfF!O9J%gEx~Oi{B;{+J zP$r(3JvX`;0!7GiJbD+&P4-oIYmH!QZU9tSpS=sf2g2wimqs^=N~p7{$GuGV-TnU) z?G{(`x{Ytp`eH_jivjMq_Vy$9CPlZFR31G+C`ccbm6uv#rps%M)l#`!u&}a|(k9HM zF&&O3hQ+M2acMA;!y!d;x54p?O2qWu%93>0<%1_sPbvQ74H3g4BB9?cv*?<3qxdyW zkO*4cnixfG2zA!DD>|z4I@9BG-UMMbPVl)xtLQs*wF{LXvO|9=Sre)t#~gMF+9wm}ygJ zuCVQDqpLgR(_)DP(~DynXKCG8t(fK(gV3JJIVElK!;R$x{gG{uzh9p?n46UN84s0@ zU13ASL@*h3^qw~Li$dBn%t3K&K|C#}==3lEjC&Q|&sNut!9rm=VNy|Q;eaKsd_*Od z*4ws5busrAuwWFoA)bUs6b_1VzvBhWuZwY^YTdI=R5|}^vp0YL)ugNWx`WwSo+2*m z90-d3e<->Sza+ah4&ZDNQE}iN;NIfihJZ$Gqb``nJtEUh33u@&D@!qm6{dq zkrif^nHi4Cw1H;39$(%+f%`t^{&24AI=?T6!$?yZw5+(;v!4${Sas92z45L)sDZOs zJHWg0GAXxrz{_SO5gzH#*2+El90BDp>RN*f!SxVX*R%N)h0@(7(aEZDz+gudeH1!} zP$7xec0+Rl@DEKNkfQ>u(Nh;M+xBU#h?ykMenW+8tWq=36IcdePkLn)$GfVCS|=H7 zo*ulXs~y51+tdU?xUJ7|JnX9U3ZlX}Nf&KCj zOSIiRj`&HC7tRr(E!Y*t=}YH`sSGNhOwl5e40di}@O}8i*&}8ryu-@29+zM(znNG! z0o6o5%igIsI(#a~&{NpT(iX4BKTUL9+~bs#c47Bb>~XZ5$pSt1m%_?tX926&*!KT+A8o>Ld>LR-@Le=<)6F{K1omwY9pluQv;g zl;-oo!{S?o{kH`^dQ0Xe_D0sveuY_R=> zMfCTKsIEeycbVE)JM{oOIzkGfM?^bw;{-i^O>?JW*cO`+!jC%W4=g zY1esCGW$h8K!NFUm3HjwAQazLOt`n=d2V~B)p|x#mw;F0Fl4~&*Faz zvfW&(!wIbj#)TN05Jpi(y{h{50z1^bJ^&c%dK z(g4h7RQJfCx5$Y@4CK#9C;g^uPL7Y?&@OBqm9L>t*Xvh%*KD3NQ+EstTk0x1=cGRj z5DnnnF8y`aKt^L=NaDWeVfV_3@~kvZ=afT7Q@$qOH`Wm`YdQ(l5dh8{`v9aY;JxrY zoZebYVn`9w_=c;L;kOCVIKF$0-Snc`n@FC{=EyaA`r3~rS9wcj>#?YEd)Wk+iMiV# z@%~JzERUORMIKo6S?Robm>WfOxpcqM?uA3}Z-(owz6t(z z;tZCnzi;z|$}KO3x0M$DY>m0PO$MkX0L7Dbs9v?s+@#xQ7`fMG;O3IG>QhjhvpPY* zg)DWn0PyFkZ>x*;S%L~@Ojqxj?midWiCT>;X@r9exr-*25hQj`zZ7E3j2YKUP$BtLiFQwFX_!JG}s zf&$?TOH1zCWJ+j%fW;N_kGxd@}vgy4gyL&9nwg{vzw;dTlJ zsXPgb!@=Vf5jXfzlHOvs@Z`)A{VyX4TLk}Gfd9KjMjWi#kbyZ@SsnmkbU?AGISpV1 zQc93{2lODG@NrG4#0FHdhjhsr2bFS^Oivsg^h8H!pCN*-)&amDGKD#`Fbo?)0|=`r zM!-zvWS{b}iw0YMFK^1r<^<#E;l{;f{I7^=`~lSo)Dr>fdB^$lt7#J?G2tZR!H#mI z6iAEit@DjIQUunZL(=$=1-L@vMbKLpJ(lpU+{O218p{~@80=I1+$i#XUl_%=!PDRy zK$I=57X%aq0GsUCqV!`Z4r<};5y}k6i&q-D1c}WF-|2Sa2OO`>D%&`omMu)=_OBkJ ziYxrqOf*BjW+SDokV_rNyENn^6%k8=6bFH3DwX_`_E}PPnR1f@P+*x3U`dWl)r-iH z$irn?8e>1Mj*CP_jeCCCBV|rCYDfg$lvdPt0U!WCQGC@;#jHmx&~`-R-Y6rT?YKD> zM4uTBxaJAklnswRj;F)u0C=7NQOhgZeouMASH***GW~#KeATP2VmM3Faz1o73ZzW~ ziAjN!dFEQ_klQJlJ_1ne&UdBlqJ)L}%hLc!Auvt^nesvTlQuqq+HRE4IGo;o1cWGvJgtHDay?ip0_XLhuof?o%$6Z5DwuObd~lFg zai_Fsp!dz!?Giyjlg&>@WKA%~1Cxvg%4No93~NsS{?tm5^;32}T$Z64Im&~*7_oXu z=p?T0c*MDT^H~oXjNJfGl!5;RfRt))2%0B8hU(Hh9Fnf3^*Rwz%|=cFv~JO0o>Z{V zQ$u$Yi|=5;UIOLg&ywF^LB-`t%53mbrOFRT;LImlgGO$9*a?R8rcjcJYYwKt*5RWZig$dlyoCUBTHn_j)pg$0{kL84C zYm{%aK4+nkKq!@qF5s3maEequAnxJfl9ke{e1VBAc8R}48PEKOq7hUY#A@dfMnnn} z`@sVm)EmlGkn2j}jG4+#+-)hkuG`U!=79r1_k{r8nI=g1q*H*P;^fJ`+jU24ih$3w zt5k=h$$YZ1;Dk33GLa|}BBbL0LJMhE00$btfn0iPTs_uG!9Z7`P=DS&H1!UekC3v7 z3x-CE5y(#{Vgu9z60YQ0ew+QaYB>k$gaKJQT+pI9J=Quz?0~(EL$#PgmMT5HriJkV z-6mA9IS*{k1;5xb$5Vu#9+ZCv^cY<$4QG=6RN*01NrK8Xd!D>&H(1DeKJf!;;=ut2 zVWBh;v;dw)fxZibJ_p18)Il{8pl6KwLMsd0QT-El`)haDccet5#G%o181Fd_v2~>F zAtJqpCtiyp8^7{@jx#ObLNEOWinu7NbCXS$6HR%E`4Ptm(Q3X}Fy&#h5f^05e(>uL z#GeWa>j3)-hbt(+1JxE6Iz&gO5Q{TDZ_7YL)Tpp~A0Q|_!xb%}1bERz(rBVg3Xn-f zB;f|$_yFD6197b*RG#s?rETWa?eRQV0Y+?!BF1|)Zk2H0H9%{m8To5L%q*;$mL|H* zMUZF2-_V}e`-vsd>z0%QvAlEpF5V}1z`XeJ8A`DK(jmT#UK8rWUxy*?Y-l)N1Wkui z>HSutsC>HE{cf=tyx7Vz*jXN1dsQTIXCUDW4qh`N$`rs(3gB)0z14KFT8_vu{k%HLv3J=h*qtI|$lwVEPmsWS#|+}w9uu;YcbMPreE+7hgp(Me@Xr6~audp9 z9mV@jfaZOK*C`=F(eW@JY>L_Cg)@0QnDzCYIfV~BNQ0f@^*8WEw9kklr4Sb=VtKcb zPjUYjMaHMhAJM3HNC}wT5&=3Qz!)t za83@EkD+>Xz(Uzz<(-?rBrUz-ZDe*QcLM9(d<%5cn*ku2A4Y1iZt%G1MLS2FiO)@@isb~La$R}0V@+hc$8i~rZ<8s zLZ*c(W5CB_AFal}lLKqR8s?@&^bpE=@VRK)2Hkw+T{ zs?gS>!$Y`GiU3OO5K&N@eR&k|^&9J`(!Ku@8jVbprhZd~wvqj+qGOjAegP!sIpS!( zcw!N9F%)drQLN7CcBTm@d@2BPa3a3R7ywh&esyGa>9dj8x1-{30g@B{?o4352!*|( zM{n(mH_;r)KU~z`j!n!Cs%TJinIpc;mkzuZN#ly{4910 z0Ci$_s{=5OSDeytkN`@B2?uDzfnMM{QTQ+71c)WG5A&$a2`7osLtAL7#O==}b<>+j zq5X&3I^4PGpdq>3fsDJdW%va3i~W&)>D5*O{4{6qG!I5)H_$1-0%}_qUu=%O{8cyZ zuhH+i2bi?b&%v{wHwB+189zov;qE-JiEw^r8FY*SWKdxglyId$wsV(M^H#MN;A1H9 zX_`d9g{_ls{Ds_U%qKZCN8+617JXMK_JJm!FJZY8y=7D*=?MDoaH04Vr|1p`f#x7? z(8PqwUKwprsO+`l4ouRJV*=z8Hgbepghn9&-W!VT2PX~u)=qQ;W`u~S1_aF^1EDeZ zXr66=8w*3Md4p631@S;loM%|HZR%j|6?__}fAgCgEYF}8;tv4BJ+D$G`dtm*Ki&^L z`F1pTsNti6^^xV}*S=%z%=>3mu7^9teYw(uP;-hr`~K1V%}}(TKkeIksW$0OH1u?g z!JJv2$OR{{vhL^CLk3Fp4dW;gL#^Uwgpc1o$V?+Px9m&;y+SPyM}De$3L1gsNh+rG zH&YRL`!X!z0I%%>Dpx4S=60C=+4s!CGnzzx{2TqvuDOr+oBQga&5^Bv zq%ifxR+OBOzq?`Ek_HtI&7e+oF#c8u=3H1$^aAvHP%j2wEp%FIE*Ng=o)m0Zom-eT z{~4wE!^4hwQ^v>Qt+<6p=R0Z5p44=7ut5*0EUIogwmNBDu|@4_KQ^y2sz0#>bZV}0 z>gBjFCy%lbSa(uY`YF0j8D&`jU$fAs6<-NeOCTul;Q`k`YRBotmJ zt5|%jcHe!5$d%M(#u)ZOVGCC&rp@kMncFHr6EDZs_!;B_c9m9ivqHP-N`GGyB%vH*GV(~tIb+$v-to>xyTg&Lk}L|*o78Q)+|alC${}h!J8+L-({}ZT z+==ep{(jTbmy+>LO=^W&4si~-SIjO@zgG1^OAwPGJ0+Rs;1yq zj!h;yTt!&V!^~qk3OP<*}8eUQo>hbRJuG zC+D3vBCGGo==C=dqq81?!BB@!26HE$IK>o7__dDxO1pcoW8h&aH4NKYPPP4Xjhb2A zhABCg`DE)-ug%ulI9;;X^BD{BW4kQWhygQE^_HBiJt z8fdgyc=VZ@b()yF^Fpn70%l}KY2Rtsy)BURU)T3;i#_4N;kEgKk*G88?&dlUFXiq2 zP+(U2yV~LL<}FrGqy0#a`jw;6gIR)y2fom2`fq=|_43;KNks1>Qpq-3NmXmFtNxgs z`EAF0kEZsMn#HYcXNj2g*5lV#-lV|aw`9DX(!X1T_@yV(-7<9*^iGgr8YwH=9!Jre zPu*>I`=mry(0ep~^}u&O8&cL8ufvirYl#i1?4W;Mdtjna$Mu_1SrKM=5>jR2S#eic z`B$UvY+_NJCvUYvHRVU>Z?VZ`tx_*H58_BgNYxne3-B1dW!t*wpXs{mZEf+jEzhp7 z$H~`^>^m*_ODT08tf#GyIwH0sMT#+(QxwZFP!CyMdeL2r4fi)wfAw|rvxNTWh5Dn1 ze@wr)mL!E-?*}O>Pl(vA)=D_2Au@-sA?0dsi_T=T4yCP6IvA8_rk%^m{_l6>^Y+X> zlKoeVLw@YXqc;uodI}9(B7tTJ$G6@x%?T{PFGCUH_@3=b%%s zoeD3?Pv~Wn-VR+`yh-z-@2RdVov3}vmc;x=;Kykm(a zoQl$m`w#10!Niw-iV@p);IPq-=XH>{DtgG;xjP*z@zlVn|Dy^dbt9dpA!$9>_i@s{qB5U%N+yF3Hs;s zEuZ&MR?@g{(&hU@p%M`eMMjA33KBX2Yi){`D({^6dI8 z+cQozPOCtPM4I-oN4@)8BzKt9${6q3P}UZ1h#Y)Z8tL@x6zn)ZSG@Cfp#2Y@j95c% zhIMMK_~`G1pm^4Bo1Il?aO-r)Y}LqET1$V2@vLp3RNq|%Eo;UROmTdwY}M1z^k zefjvr_iY;Flye2=7wJc$3%g64OhPb=UnGYe$Q#)eoF|{&GJ1wSGi= zwof4E*%1yAx`xjpsxVWW+5)*;qQ&RbJFiB&TExpm4Mqk|*14Y!)I7F2^@(JDKXQ|o zn(hxodB_Q^*Yl!_0RQyx8{}-!Hg-TR;z$RUoDo9H%ePdHHQ-3FZ5*2eKHzRB2T<@sxsG` z_yrpuGAnXq-fh)zaC`Zg(nY<#gpFO$Fs>XK5@KJ8t?*h<_#^Cg;@1yn}Wp0 z)Ym|Vm}hkgx8TXoAK;*c=kINZ0RIq&7eD#uOBFY^RuWeMKh~l>v%jA(_*7A=729!4 zWyDE@kdxgfc6R6Mi^lb0@e66{iKtxCs*KWsADw}x=Ja~lPqGI#h$RzIQKsz`Ki`=? zhG66R|6KWU{{`{ECJVJYBohdSh6$i6&GZJDq9IMo*T0RM0U|WM8B5GEi&j|2gPA5~cnQGvJbNtQ z?q+hfbPD{d#e=O@y6=Y6%<1e>225=LOsv?|+*M=tRLXxm!=Ly;Bt%Z?J{97AOt!}O<8vO);=cMQtkUJ^M0$U5FDO=|*>9&%G@S;yA62Wc5jIEZ}( z=<^0+N3jWD(~l^Kaw%MMEYNgN??P0Vi`jEovp4n4`mT8B_xi5%*iZE!Y?*SaAV=Db z`5Ebdz>0eV;(m(un?*91##1m_kBC@U*6|+A_oyt1VQ3&e-I~ud6@q;o zjG%4?q63IsV}zEBDDqrwo-tSzBfKc4e#dQMM_V$lt7`+RW(Kk3>|zv|RcyIL$T}6G zm?0hmu77KJ5e97>Vq_A~ma`Tf3?aLGKf4wz3pI zk;|*O(YBQq6`-(%5k)yuulKMq2S zE0|4#5^W*ZFS_vzcNJJX(28Sf{bXbT?y3pwO*$a^^uF znK>uwl!EsP($tA*Hd^Y@9Qr!nNH1SjMO!mtmqz=5Fa~hG{Zu@Km^gD ze1CWo06qs$4+4ABq0V^Fjx?MhMFwV3o-6*muY9X;KyzrIrRy}b zXBH7Be1UY~UXV;>D5L_V=jft6bQFdm!<{K`%GTGr)vSM2!zXWd6P>7MMQ9tsQ~(+I zlL(xzWego^8w4ZIu(DqYHArOu)1nD_Kq2!=0v>7kc;8==^hEAG1OKmf<%Z}Yp^PNV zFHoZ~&}+!M8Iy3bZ$@bdoEp@cK^L8)i&N*yJ%JUTz?c|@BF??Db>Koq{Yid_nH^*w z4UXB*+|kJJyE{UMV-~|ar}ul#SZFUw+5$VT17Q&vaX7WcIA@Jl6Qh?Ac8DtK$kUIn z4d3=>UA@ODieQZ8yNj~v7BTcMTKk*N(pf>T5o;lmJ#<9sYXl8Qg6w%h+T~9UeX(2< zNe#tpPipq*mIE*ygi2mEfiks+plELT%rI$n zk)tY+Tpd;yoare5YtlT%6WklpCuwKtu#P3Ab8mh)!CQ}Kx2p>EEMUwnhMFytN_rsw zObWYv@s1{6KZuB}coy!MEp5xFxaE(C1B4xaBeeCJJ-uOUI+906*#Z>>%-!V7ov6b| zF|CqI3lC4ti7YoE_=1A*PsXx35~p!R0&%DXhPmaxuNm?JmpLgy13<|DC|+3RrJFoo zQVoAC3I{4RF_OR87dluSdnnPmrDoYgZ(Fg&&OOhYZz23_ z5T5>{;7z9MYjHe-#byMp0`oKsp#7Ie3^nn}J9L%FfZn zDgdWXyvd?Po4$K5bDgTl2Du0_^rrTl1&Ksh6xrSOY2mDMpgpGnCi~f7jF8Kt>^s;1 zFnccC8qx6qbc8JcLfsHbeF>Rw5EXQ(I0ixp@nHh6WRT{GSLIifChH`GAX%)P1IqX+Le?}ujti0xCdj{ve1kljzn$wx4?y!Cs}R+=mJ7(2O`t+8=YWsd9tid%60;%7k319*eLHq_=k#sF)9dq6*$h?_LlXmvyawu;u_Pu1 z#PT5~v}~o0-HLM`SaHDF%K*_hdiS|(w@kVS;8<~HjO7SG8V9no&5&OT=9R6p@DUT! zE6x9P>h{LBQA$q#Z1u&nl&FlPUhh$-1&)fqneP^ilYTtn<9j5Da*r`KgqAk>f4mt#3lAgU$6)@y*F};r?n~%`JwsaBx=hOdv&Y}j3DgZHf z@cwtXl={FiV|yRZBP&1mo)Iq`zm;{aI4kC-keXx2tSun$Ir%5xH?Bv-JJU_tlZubd zksA)Hk2BocS4C|g!7lgKI1+d^bjO6k)SqK$RxnZLvsL1NQarj?(0*5EIw*BDD0B19 z{rAE}iyCJb|4ffSWj(nPh=k5-)I_xwM%6@ky}=YFW5+)IGgdAViMh>G(qlmX`*PzO zKq#gqq2n)@(B9lfz~cl8{3JyjNV5rmsQ}pt#OASBavC(C0;Czo3@djFyg^qX1Erb{ zs2!z)aCC4J0NRuM1A5H&hnMKjuS#=F3Z}n0ePYaYcKR{m?X#8D{FK7E)_a5q*O%8n zs&*aE7V)^lc%b?s|2aVTA^$DDF25`L!sr%@8{2jrpcDtxrZBAnnO>CKFL9>bU*!XY zWFhUFzTgJ}2f~a4ch2ntiZ^|Q;7?@rB;T?AmN^@XP}mS>16?k>kZgZC-4JHuoW0km zXk?=?U8hDZFz&|{#0ktuLQv-Z)O3S5;E9t-x+0;noCA|y8y8?7z~qh7SqIKGGF0)* zz^vo=HDQ__R@?y_5C_U4Cu>tuG5jA2<8xmYKj-cK&bIy?yK|&h=LLHQGI$f8W?WKg znnctu>fLpJdNEMyzeR6x3F9`vp*f066G%S$rDPC4ui&K|2FS6Fjya!wYZSrPVF*!D z1^QRSoN!UdyzF`Ko0wWi0cE}a-6sbulstXgOyDA0yfIgjK8HoDHKDz!vlr~#E<@D@scy4 zM*I`sE%*83m6R{&=M=pgb5NY77Kx3t2ON#Yz} z(N4lkk!-}e!BkXWEy&@th={b~c;V}Qmb9)HRxg<2sMy6C6_Zk%%TzU#0|KAM?z?+kU^SGf5E_)@pm!m1U>!C_ zEV0?A>acxI+#&3|l;*(knX+j_G<3XB6&>b>T6%LHsuqm`2AKGu-k&P=Mi+tN}(@$?fYZ9c@mK%<4FaM>mPYGHMu>^7@`#egI#LcVRb+jjWPAik3@wb{+_xi4SssAO zkT`S(Tqo{1Ne$2QO>aN0KO}Wfg|%e+*0yxt(Y-ljh}1qBLnD#shi4r|m!wdF;k;D2 zLlM2ufe=MDE?uqDHuD7mDf+I=F)hO$6~SNdAF!9Xwq8#pn0$Y2{*E06}=GHG=U_D>$Tj--|a_gDhP(FNEW+%vx9SJ3-Tmp$c z^q!}u#HwQU2g}*e5`*jx;fLg^k;y!J4~deBVi|^}WaE}~v+08kWb`+CKIt_t0u8sD zGDp)iL}bm$da;iZ{5!b8FfF~6Co%)2Mq^eAJ}%~qnqad@0gL4hbD( z%OF9WSLq9P4p`x$3fO82Z3WV<7?-f5Gh3et-iO7%-M^-*`lMygY0v4Ft)PPS4J5Fd zR}%JO_O*FqwKwCOe!YMXX)J2syA=0jYl>R_kw}-j;YZ827BPFfIw6qW9Tl>cY>6e;@aGJ81@1J?vqg_09?7(_{b)gb@VAnn}d}_v!ND~X4jLe zhti}OZqOjJ^g(f;D_Jmr>PlkE*Ize|+@t;u)p7rF#$IE^Y%wKRV(xyAAr;vi5!>aZ zJ_MX+{DTt-{oE;$D%8co!^WIGZ(cTJx~u-3$>aWXxyFiSo$t*XN-w)v-J!)P6b-_Q zEOh}9XNH+`VGp;~n#W+ZbONWQ?F{ibF;%z8|tPYDk)4JO!2tLH>k3^$WGmN4mpn3oX z+^u3&E~$dW>V5~s%I*z55evxa@pO5dLWj|D@J?~2+(XoEBSq;83E8YtG;LY#y_Hld zFRBi#6(x616XoR+%@8bQ7on2XXdYmhh>rS8deDo|juPNZH63P&XQ~9bNVeH#+x&?o zqqMs~@3x!m{JnvuLA9b*G>~KxAEN$~>S{T@nxtTL1Kg$$jGyL8@NoH8o6QscYl(!a zL=}b%uGG%zABO5x1*CCyj?>99E9?JVv+5_2)I~a53GWi6(jo7#FX>SAHV*o9mo`Z7 zkP9VufVE_gC`=n>S-UsP&_ebVJ$86+7Z@RmuNV-cV3^_wT=2hVoJ5EIi8?{$6L8Te zK!i+(kZ=&Z+9%9Vh1c!A5u150KaMa&wtS1AmKR2NrszKeJ& zjeY9qJB(y;MQ`TrVFefNg*4j{{UEGMhd2%Mdf>Xu!};f3UAO8+uVp71Duo4ydy|8S zlHhNh7tRWZ1v`JJCb@>RWoT^l$g8(g9o@#~_|YA>lBw)x5u zIq^M@W}9iy%nj2Vtw)#>m*L5?dQwiUK^ory$h7a;MX5~`jf{rzHwK*XA7x(~(Y7Sz z$F!WiethZk4Ecn9p$UY-0Oc1Ym$8$&?IH-z#dBpls8g;pR;Cp=X+CIiRvW4MN z;!^nGpBU&1D_6Slw9Dy7nD4yo$ck2l+@|SvrJQX0cSS8`qnhf=PNv_GIp%S;U(i|y zQjTjB6dcvN3VO1ZajkrTr8drm8DR$CKW%}C{#9*xg%AaTRBn*RklBToZp51n<@b8p zb3x@d2gE;bFm?Oq-cxK{=R%(Q&6YA!kD85W*GYX%eWXIwigKJ%HvW3_E@;8TjlHKZ z_=kJFc!tVu=yqno!IVMNhX$r!VaFl)4q<9|hl^Nz2iP#kMWV0gh_!-&M7`l<;pp^O z%}!;sMCcp)$LMQm$LX&Ng;RkW!IIVkth0LqodPu;2XtP!T(CT~%TH}{ZQ12>xn!f| zTh+9a4q}oZV)4cPdl%Zdii_UfsC!W=4BvVKWJHdW0!Ta+z><56$=Y4Pl&Qrvm8L&a zO=lAGedZt5hzC8t+WXQNp?>efev_R8)x&pGPr7|d3c%-J#5?24RU2Xa&+q(PiWocNF`q=r7@ zLzl_+16az|P{dzeb>+VX5H!$WP5)XEkQdg9KY`a6_nvkVJf8_$tdW9HE5KsmLt@Tg zyN^pQs}UxPd~qL=#C)x3!0vyF<=piBQhm@}{8EsMr`xvzEw6oo{mXXEg9h+f5}67O zB4|#%77Nxuo+1i9iM!gmo=lxKSR8sA5gvYxV<$Xitty$YiKc!4lf|7{@g$-Z;3`RI zyRT{Do?~ttxm@!}QEIC)G-!eJS1}CBKf3lvTjBs)HQh=LVx0tXwXLe#vmyd3v`MKS z&mlT5T(O6XDyONsK=%B8sr1l_Xt7FlQiI^WuQ&w|p?+Xb_h+8VD=rJsYDbIMf&7r8ZNX0F}PXI$viFDS%E9oi$Ep8o*2K{9^*{6U;hxHK;sTcJvIBpek_DgI z501IwSTSV7CAK>e_bzKXPhN9&Pxk~7!`&e`KcZpx;L+c)hN%Q-H|SWOcE@y`W%dx> zabd^q#fH?i+}AHtj8Q%fmmNx2R!uw$TP?ZR*x0^|uVD?LXBsAYp_XSbVwZ_dtKhJK ztnB8wofrt1F|;}`WV5Oyd{`!aU>xB6QLps#Pou;Cdq;vaoxcrI7N$H-0bS>`bXGAY zDJ;thVzPB;O5aGb`Et!m@aJCQNleD>w5z`HW!f~InAq5f;OOHO)nB(uw0&x^vn<(& zE8ZHlJNipCBSYqAh8#|Sg+EH~XM^yMsIJ0$ug^Qz&a0*CqI470hQt3mC~xF~f-n^P z@ahU5F20Mgq7rQKXYuzJ&776Z*TK|mmTk$9dCC7lL@O%G+;K>|>qU$rGxkUwR)t`7 zg)&j(TVvwm=1#)i(p7Y-9>La0JwEs@27J_yZpsFm(1^xAb#bXeo!LcQR-g8{K0H9A z*gajhV?cTh4>cM3F zoR`sjRkh8tA)KDHAij-buYG!P$k3~r>h?Y-kyPpdHg;rU!axc%pt1)Lo#G;oIf_~X zAX7}=4boX^!?Zrveu;xm+FKD#^t;waSq6k-w~00#>xt;dO8IBW-D?r!I8qc}4VT}YJbwkTkmgcX)k;i-QjKn#~8c@6-DPGm5vsoq`OiTq+ z-4F212Z+`(Svhe70rQ&GL&m-IHvzsVzkFwqNV)Zo3lu796@65VP5t7B%67t6hF+VAB=K-sx1_ zAejFo7?X#!=}dkAT_amr*^gUlaMbiJw4raL$Y4-KE2SZA5DOrhb`Rk?)<=yWou&z9 zOsc!*OO;e7uCIfnHwIKWF3{{tMP`DW_(ZcNCdN(3#IF+li^2(EhWu% zjBB0P&n(XjYHD?=(+3n&UA`L&WQd8|z(GStHP+{)Qm0&7s?pU%yZrBldu?=;DV?Cp` zK{0V(*9Udrgl*Wj&zLtui;qBobnG}#Er@{WEcd(p!f*j(K`JZ#c-XvZPS~^-0)mxx zkf6Q80lz>-+aQyLulqJ`@}IiczWR9a@m|~$L6LQesUA!CathHojosK69Tmgg2jkRZ zg*%q84z?wOb>U2v@d4FpWu=cmg>K+CAoK8>0&PE|*pR`i&7k_)>jrDzErq(?^yBfz zx-KS^9H(JJwLRA9j{>xZOga{*HYcGK1Y>oG>h{fxksqS6Htu@0lh}t1{Z9OCK~-hG zQHlt6;p`4RI=q2hKlTQltB<`n_uhPsS+GRV3j<+34yf^W7(K7W)i^E*p@SIeyQ{A~ zbx)h4b&099)3x6#bKdr(%8EkHlFX4T$Or`*XPdPbqT1c5d*RSN;PkYhc}GMvA@;d<}@_vdAKzT)Zh@;^*KAXk5CB@=v$^p~Ll|6H}vrFK9+ zC(HCHlWEw^x^QmDCKYnD(;M1d^gMdVk`!*8Kpc?e6LG^~6F-05TOWdAb~O#*NQ5&s zgPM9nmxI6-`9#Z9;yCF-uPHIMo!JR$HAwwqX0*d<{NgWNs4$#!vRGlySG8fwCS=7M zStEsyIz4^+P9{VD0+$R3@;$vhpp+c>>(ie%+gJqS6mX$aX5ef9lssff9x|UBS@a@K z->R~Vb8PJP4hj~%xia$9XcV=mcot&@Ouh~b#N!|=LkMxa8a$rO`i38}pl93UgZXDz z4sdp>^{dMde{Kr%Ff<*K41bqq+nFdN0M$v(J1$j$_(2QD7kkr9taA3p{v>H8B_QxIbpncAc1>x7;IV-g6n4ug5L@E-}m3-#Yo%yJ_G7~b}n+&-f zfS(LdYLn4bCIMO2{o)503adE$)Gx4+w}r>OpkMP=ZG@p1A&A$C^HlB098w^p^dy92 zB#0Y_Bvg3T_aQz~tlOwht~j6Gw7uM1m;O-EF;nodGi6U{E8>O$E>!0+8@sp6VBz<# zwScbLk4o!#O8)Ufr*s3`{Q{?VB5xNe`v(ZFNxx`7TuPhu32sDdP|nL9_wHSF&(KD% z=T=(0FHohTg^9||hAZZo(sr>?B1fxU6dt%2zN+7 ze{1p0D?*q^J>rspGNU4mq`+jR-Un*%^aT}*t_>ZNDAbEz>#P zsd>nG@}2x&wK`Yo57N%RbQwPzQD}s(M=#{A`i|`d3F|H@F<(33y5S4lmA|+A4Gj79 z?jf0-Uz`>9sU_p~)1pWC2Kyp1%FZiC-L$ZEAbwsvwJaQ=jcedpR$c7Nj_8)eJc~&3rQ~D4{6XYLy(QXl~n9KLSFTatUOhh2};kk zU1r`CsgCnHv|8+j5{0b?26U1Z5b<|M+`^*GMoL4D20Pd!u6j?moU--Zt$so+(j%cj zYa^vHLup=Hu`F>18S@FTaAiw63;5!5LGPoc9;U9}`f|?aM@@ht#OEgb1vjOTKNra- z(jCWs>FZj_dVPLSBjd&YA6NGkmvs9Fe4GseDk!)$5cgi0X&E5S)KF2;tiY`;G)*%t z+*@&v%y7>NS6PnG%#jT=Gn==XmDy5THtySp|8wvhJSUuRpf8c@2iNcVe%>b$Uw>F$ zFGH?_RsJdvYJ7?%Z=+w!oYkq;JnWGd$N(sf#HSMv1G6X$zU5zm2!`8s-JC6gt)!N_+?&-HS;3MyQ$n=nd7TxTpwU-hIx^JrZef4K<9 z(a{&5*I~1Kid0Igkbr)|qp-APiZJuq?p@gj7<>bpzhml_;dhV*fmnQ{ntpGL;$oD8 zl~2{UHY7P~|74&_UwnH1x*#WzMLPV3HBPdP%CM|#CI*PMK?EjSN@nA&-dlPdYTq(7 zdm&8e(U$yOixh0p&NK$B~ZV!zUG; z8itXyWo+`oGM*HL^ydWTg*{D6K#ylTBB=Sw3}>^TjoQpajf1-EY+GSho)dwJI=&88 zOYq3^Z5@@__1@V`L9+mwR7a$nxRHvxq?T&vnokf@mfc9mq)lq#Iv<#M|^nC*rp#GU06=Wn3UyhzlijhTpTyIClO5N7qOJo8#u> zB^@qk4tdtU@BK%0x%@V=(_3J{nPU#g(_0Q^+kZK*y-O7QjjTmOqm3Mg*3sQ(Q$V<8 zI#4s7i2G;p-JX@Yg2g>9N&y$fEsJ;M6^^}Auan6&3MC09Rr9bi_L}NzoNPimv>|qy zYIO4HnD(3-DwGfb6)k4kOfDr#Dyk%0vGQ=JOu-5h#t0@IndXxesUg1x_aM{T5or)j zjim_-mpc*xLNRZ*ns!=gHp6!hSpF5yp7hx_*?c7e=_MM~%)m-_Oa|Fs^n;(YRnI@p zxmzN?!C)#WshZf1Hl6;?)&tkUGY_dJNuEhnd_{&IvJ^+M7lBx7WV&8_UBx-_ZB-@x zOzYL;o~Upqm2cc5-`_7uCGfAF=p$^W7uQpy!{?R>aw7=#zky0<4_Pa@p2}ls>X<0r zZBpb+{)w8`_;~(1`DcPmcaz)7=-sKF4+U`A;<9pncaHNsyWn_dkZS02nE$S(OYGHF z#wC+nfu3)OI7&+V!GtK$>qfDW+#`IOC6{1WeAvoQvRcO8?y5)M%- zPRz~-3OJirZOGObiTX*vBlrCKf%-lQ+! z{g?}9@yr!y-s&D6+c{;0k`VQqxii{lfk+qbsBE=Uh#ZC@QLd|NP^D7-b6CC$Pv|jD z{Ur8CT0wLS=VYg@f>mG|iNr?RSX1@BMFG+AzemOEiR4N0YlZfORATD_f@}~iU4gJS zGf@v{T{YJ@QJm%YU|v&suaP6bI9mD7b-m2JdAH)zzo`Dli#%L@K%$pHH98{#f8FGR zYzS2R=1RJcn$NbT%f;m@Lj&n7_;VyML;T%jJ#H-J3@3N;L=2=S_fPO9X)^+(Q=kP0(r!I5JRp2vHTi2TxVV}~k-Vxc^WUpDJ*gCn zT!oq?r|)VsWf)WI(0)23#d(&!p_*ylNzsD3)>OH(ntI4! zFpJt$_pu!WVRM?D^Vg9kYl~%xU#3pnN4EobW@IWN$|r;krLtxfUoLG=NU!o{t4AvBZ^R$hi~GXi0Z zlut^du!RByd0nEKEG^pwI(*+ut_Z;uO0<)aHA18ns#3IwRj=!LrY&dE0;)}yQ%gl* zMUx6JjKPQ&r~aY^O|G7(#7X{dyiR42h}0Jgpz zg~8)<_oa;}Uz~Cvbsz6WPdyI&B&E-Vb{1(CULE8;6xVfO;hUQ0$y&#SQjes5@eX{7 zBw&+;OLH3wodB8d0JW<3IiNat6DhbnU1M#(m$1VhC1q$5G8D~&9GZ>yH2x@YIo~JJ1 z=GM{_ma%|3;@?SJuP6RoN)nTZTO3inyQEx7F?6kyyIG9Sfsgi&`;P_^``0btM58|b zW7ctOK3^Kx1Kk$qaAmN^`CAHK#qSK|^JLSfR|a)@b{Uu}-!NCcpDT5gFTq+z$jzV{ z$r9}>)$~u2Mg~=hlxj9_6`DEf6zRKcmCm|d zZMSjD4;}P`x?@0<<&hSU;LI@1Kzy4~hSwN6ir60O%4Vo<1?2A?(YD5R-PPl7h0bcR zk1Kmw%#S|OzHw?kVGh>s_31N5s&H{oX%xYmL#Rke^ooO#K^&(bOqQ-pBfLj28P)h2 z*UH#=z{!z0LJg?{1rrq_li5^uwTM9117NI|b{SeYw!g)dFRAUJs_a?THv=&uHTvWz zm}`9G=H}V48SVQW*(c_e!HJ1e$Br|2hpKgIJ+B)>mCz330_aMJX)_r?jdygl3Q zH5|(h!1rvuc%<^Y;E-~lP8bL|$Y&JJB31N(c3x7&&Pk1P=l_1sRT*{9Br0W$$iI51 z6g-kyvvXCcPRtYG4ihOyO7OvK1EihGp!yBZj3}3ES<7(r3>jq-`8dGPp$iNCDN??@ zj0j|C0`_b6cZqN8dED7JsH|RbEJ8V1h>^rP>jUhswiDg)C|ElKDIBb)lit@F4$D;#9)v!96rxPEJ$pc+lzaF-3-yh#kmYu~ zjV6r_!v<&IyS6;6y`^$x>7!XZey4+%S;eTg=PygmnGd0tSYahG2}LnF zecYAJS#&|SQ&EP;~u1){t`5iK|Fe$jI`|n9V6jR z)Nvw{@w1;~W7u|Iz~5ioW|qJ4tDh3iWe%9RYx=LprCwW!nYt?Ft9e(7qda&RXqYRzjZCA;TDBnI6q<4p~=qP#JfXbQ|2X{M;qzU-CK zKwlFg$)RpfGk-K{6YJSJR#WcYqqb&LOBZPH3FLw(>`7oY^q>GK{D4;LKe5`pqV&04 zj0zYlAiDu5@kT*ja78ya|AU0M(a`~sMp$`uP|GOa+`lxo-dpjInzO`-bZ~%hnqiQo z`zdT~w4#ub4zZLQ1xR)ZCDedAhrPuAP#o$=;KOEagpOTjaF_?;$OlF4m8aYoTcH+yCE8=> zV?X(ecg~N8pPzqwQ)N7HjXV8HC|!OpuIgCX*$7gD4o5^N@3fk}`>y=EOv4GuGB0Mi zcrF2mFZZSnT|+0eI;pk2$C}0EJ}j2;g}V& z+;*cj?iEQXW`vVrFJGBWjOhf`r0)HDKRPSIKpAv(1<+dI1{&d)mEKdhRWYUZ{47wZ z0o^e*T3>NjyBxXSzpuJcA+7Fd-qX=Q4vf<2^~i4q@c?7fP!&OoU|NqO#Gy-d9AY(Nap%GK0K45ht7^6o;XH|~Q}ZRtRvPY&7L zX4QSVy0asElv{qtKYkv zi<}^2R)`2VqchS}ic05vh#F;Qg_kr0Y`q+3aY`@OKEu}Uo&|LS&OM4fl>$SSw_{KH=CXD(h%yiV$d62cN(9QHxhXFF)j z`B3z~`biH6Ngu!7k9e8Gvn*_Fn}j%C{|sompIJRl$T?T0yI0H6_~^#nc6ZcWmD$qGlk#cP2+(b%M7GK>4*P)L=(;2;T12-> zU_481g}tW!Hgv=ctT_$m1`ZJ?dAIc1Co>EN5;WM|(`+T;fF4rPX-(?f&@Jvzv)Kdr zit3!_&p-DYEbp^yL5Jm$9TMD=^Q}A{1s#z35r&!bKlkdP<6*C{?LL5HUMz-FCs#^T zDIURPBn>Im$(dcfwMV+BRpZsm*Qi^n*7vF%gjqh`?vCFc*^&-p5`(*IBV=1Ug6sx8M^;dp-cVM^7++$6aMG+{HWs$Jm1Z(`WR*@T>V$($Ga6F z#^DN*&lj)lYV~z}ok00{0jM2-rLv_lC`?Rj!dB+xhS#V^KRHHYekBo#;c2Ce6M4VC zVb>jhv|4<4v09ZC;bQU6lT0Qiq54+dzh`${$((Eb$#azkjLz|qDG)gS)(>} z=3AC*%K_OWw^FN4kfBeDk3Q@+0rG=gU=$I~pyI zVH!iSTf&o+Ec42Z@1yip4jC1ZTJDzV(~1@JmbC+pJW1GR&?=|zmGEu8`-88jX(WYE z@ZF}Awfv^;irik?84k-(rkaXNTHfz4Y!RCi+w|CTdzyJ2;0cuXTAXo^_4>vak8+7( zrZnTW*mpIY@U>trZ`E$`f%sHQwTD(ozZhYosuBly0~hzhowsNzkcHkjd7oh znhS1s6m|9cEM_GLBi{nEj^bTCfU<_(b>jwS(qzugncds9nPq;@!b2h} zxXkHL-;6pjO6#$Bm)7DLwZZvWX|*dQxYM_fkI&M*>`+aQPe}_yQh)4R*%6ew*mo$p zdautL>T`QDCxfEs=({n;Kc~ zHFEQI4Yi4OLaXCjatp1#iqUXLDYw49`JOXlfp}+1oqpgx?vDL~@PC-83%;VK%%<$e z%)|QjdUoT1_9Xk~ZnU3{EvwOUF&<0msNM_)%Nd%F5s%it+3+6yGApIK5fT&ZvVK@c?;zh*A_A9HdxxEp8b82oU#Y@lvH=@ z-G{)YJMTB1m71xBb)OAOH#VvxFCbj-3W3f>zDZGK*YNQp|0F%oERfaX=Ez49x^wYfNCwzGM<8_~6kEvSB&%#Pwajkm z=U!l9v6t)Gk~X_%bYH#04Q`u;STC_qMz83}djX?(lRu-2&p27$DxkARDyd>44Y50B zUFvNAZS)6HLH$#b+C1Tap+c0&&HLf9Uvk~UYob*y^V}`yQKF_j__jvGds5s%1c2R# z-|sQzThLYUW%U|P9h>LmQ8RZ&XX^$pt(koFpmg0m5o}MuGX8P9P=1&<;Tv!i=?WOd zB5%MccZt=_fH6|BhsD>C+kOd{yek>$HHt;W=cn4q2E2Y+Tf~aarO8t3ob`Ws8#2?Q33&c`U%{v7wmOezaWCNdRYZaK!@zjWE%Ikc4)l31VPGl$ zXp|Z66+}b#4ED{jMYPPR1U;;CZQhZ@M|VtWzV&z1)Pb}acgzn*A<%uv30KGv!U{LT zd`~?VR}3bMT{oiy7^yvnq$}QBpU~I?M4fk92-InNGU%eG?qF^uo%_ zRT?P(IASmSfe!2cgg){->txn#m6xJa#s8Se8WuzpQ<$;?ByPu6YPU;nI_0ZJ)$Bm( zv?`f?^t>t~_%N%E)ADl4YaF$hrM{dZ2wM8gbmTi9*@jc}-GZYHrz2=$+Py73=!!&$n_G=KlM5JpLN$ zV5n?hRcomx(L((qPiK^W;RJ1VwZI}`Mw9qt%-7xF}Kaa^7Js~M@4G;Lp0vX>0q2mbE>Bm{CJ;CU*s8v z2QNtvMt1YNQoj{3`zQ6viHX8c{b7embxya)!9wklQB)R5S!`rNEszLG=SOtjSFtF$ z{=B2|j0C#ngY@iQxGV3qo`9#VdBnKr3*iY_x$7GH_!>iL!z$zw*L8z@eWP5i&!JH! z#>4ILpZ|)kMEd30Lz~5Oo(G$<6hBKJheqLioDQozU$mW>14^wQwRlYa=P>jY2evPm zC}H3K+q>H+!-zqE`zoZU%XlQ8UJv}J)4bxX(1l=(BItN}MI-ip#`eC1@u0_St{O}u zQQpsTT-B~@7b?oxs%8JYT*NnXyvP^0dJXm9C)QmCzx;^ys0clck$x(W5;wubDJABT z|CufiJOFCtMeOo{bZ6jw*CD>^;ICn@Y(YXf5LM5W*!p>%v8+02mbkZ^_I@0DyFm+< zl31c{VA-wU>ZSGabP&Cj`zVCzfkoX~Pn_`u;;*AF?@IsFhjZ&iPZQ283Zxd{QcDw3 zA2ITW<(%*=-vF*ToeZ_dK)kzSPjT?#PHhrPY^a^~9YNt2v$FYVuKiIb!SsK>9stTD zPlTm!ZXRdN>@azv>hxW8ebo4iy0N=Q#tua48bR{1?>2CNgYUJV8?(Fh9Pe7K9TYr=XXB1pt@Vl_N8=Bz}TD z)*-Q63E$*m-=!?ynPQh#Pa1p2*Oa)4mhAp_C808b{8I&BZ}M`VU$C}yC!JT5U23e5 z`aB%oorQk@FB3QPkj~XV$kpC~(iJQilY?im6xh!2eSDA>UDK~6c87ERF*^JOCi{7R ze!Z~x^m?)JnQc56NEzFObqgU0!*+#$at_6)*+vwok-YadVcSn}2LxzQMQQ02YU@eq z6ON>x1WF*Pdc?`}KZCE&wqr(B|KPw6tc$bfiY&r~a?=YG4)lw>ICKC$hJjUbikVSq zc+mws3m(hc@oPr@&M!vSuF4R0ddP@Y2%|Efr-U+#1$q)BWl*#CcqXw#IBx z>GSmq1B5a?rBtKpS|fkWJz`#n3w5AFSL5(vWmBJiiD`O4qJl#)IeMz9v7CsEix7|5 z!;W(BZc2y*9vKmJx}+G>JcA9EX`=2ty?F=QRHzv`Fu+uJY0pk2ibMfeqg~VnmQ*5ts0MkTst}5tfs7SN!K!r5B-iR8$&E zFivJ+Ab0j<`RsCIYlTLg9yiymZcWtw>MS>=%ZSClkxku^fKS+J->jGV!OOfoDb*x? zWpeOFzk$R>kd3HgXrq=%faviXzGULlDYlQa`9L?a0dZQ zXFjT-CHwb>`Rr83p^5{Ae+S2F@E+tbZ1+_#BWL-`ZgnQysHb-|`+HZpFHA@&4-_ z{cLb?A0)C3Y|jD@_@%|RHTzrUoh>3N|MV z65iq*f@z9u9#ul}IHjY$Wof_y(z)P(I#j#IMu^~$6 zAC7`R&f-(sJMZcpJtoRxMoA75_{^Esax9F^*L1VS@kS23vdrmvcRa^g_uYbmzkkUi z2b89HkS_@z`6scYs`U7Dvs5l#?A+&yl{~>f%ddg2^zEx32|}?@DS;6~k@(4@z9-lJ zN7doEzy}w~se=Awk<`CO6^jO-Yyq^SLo*t1FpAt(vay4vK0N%@^iXBxjg=aU7Ofhq zou+X+3(RtR5lLz;nPE!TbM&(RbTk$)n|-5%R*ar^x6rOjTzC}Na_rbt|2cZYoVP5)hEtR%Z45E;zrGKo=TwZN&RgmTBrWS<# z_GY%H$4-JHiZEICV?grwpOhA1X*qV>8-yyakX*xDtqSUBj;P-FojY_EkL3YLbg(-C zI;lJ=?l0~IfCzM;*5Y8#Ztxx!jFzxHBz!u;^B-q(p+1~(Hpj=S1MaV`U$P_@<*N0{ z$MjHdlzC>22SfE^+OEPM;kDkmpXvunov*w6ZY|a~&UMMoN1rPU0RCkOUmlZQaTcCI zoVzW)Hktr+O(2sUA-hlMKyrZu-d$@GFl`++a%RX4)i?h_=))S1HR<#2wvk91;5>*sKw)Bb*cm`zVabp_F@(ag&L&S>Lq0A z+YEfgoFiQ<4Xp;CF+fS-?E5_NRdDp(yG%#cB?Z={A2-AiSSTM*yD%{6y$mTdg#MQ| z4s`1(r;J|ToIXeK8_6iyoNUVc?!LPT^}u)Ed%Y^Te^Xv$2f9Vv|C=~pxjyr^QgR4& z&U8}xR=D)3A<4g1RZlrjWW`E}03gW$+KTC(Q;^(Eo zA0bYFr$Kve+;AP;pO3d2kViTX=0d98L%aY)!}N5* zQQ|NErwLHy+Lv~sC+>9Mq|J>m{#@}Jx9i3F{hqkCXv~UDa_)B{dM~rc2QOkPeyZnn zPd6{%}RuPV;V`yUtYpOTd7aH(BA4Z!mNUbVupPvE~V+(N}rFzeE00LXw0 zLGI68_;cIsSFe5kpq=oo9T%^44)1b*df>0&V5b5=n|$N7%hfa$U$-j{V~uap@lE;o zPqXcDTe(jNlJ)fY@}jB;E6MKr_jv)pe<$aQ-&g&2JVSp7fTRO!hXEKe_CREsvfU!&gzfp=!ne;P?}mLJ0>;6O7#Ju}bF)m(g>8&Z zBAkZL*n*;qyqX=Xy6R)YT~@z(2O5zrFMszm=2Vs7T&+y`5mRj)FpWiA9 zA^Qe2kA*1sjcP7m)(i~X5juN(xes&e5zech#*g9>S}sOqmG=JLh zLJ(!&JGy(HZC*Y5xiIBgfT5oxW=r)D@U#aUleeb54tl~w)r$zuOyHc$G@CQ0S%5F! z{^pAXSDgG%J|iDTh>gN>AYIe(9+oa6ZQ7})f^+xzJ~|eGQmuJf=j-u@g2v$Ix6>qg zLh~;o1-S7P`wza*h}rIqcHz-yW9+We;%(2m6eE8^#2JkLj7 zPS^58iS-4U`O%fGf+`cg8mFS=s4Urr-FiBjiX?b3(y8$nQMYCEqD^$?tC>fWK@F6` zF(dUq;U2B@8okPYV{#r5+;1|wHm%~W7#$(SNxmL9rZk0IyK=mP*P3#1C&*VW!@i3; zkuNyscJRkhW_rY<(-)T~H=;U=ruQf*d@>zLQ(=R=F}PJv{w}}x_~4EDDP;#djXgRx z5u{LWUt}F6hWP6*xQbb#)A*|ZCnRbB{E^9W@)YO4PjkP{__;K!6Q_qodztD;zSZ@c&AHm~LL3&P$ z$#Sj!$NP}4Oh^)P3|4Zc_N&(PEB@$?h7=QlPJ2p2K`K^&EDyTkP+ZV4nq&ST9-Q~S z+b;FyNB?#fhB8X(NO78TG2Z+0Z9CWKW}+fYqu7X~tNds4;KO}|GGK!uw*^wRQ6WJ& z^y(pnn&>Oc)wQf~q;xnJqWk;nl(czmWnG$L7B?`L#&KSu(`C$4H5&EEcdd#`{Xauh zoI!zzwuI6GjlI_Q3pDAs%{oBtRvv|o*IX|~KOT&Uigoj+wzCwsjU+m_f+I9jw5#xU z5TwM(QrBBsXx)%rRuH&5y=;ik*aZSPc?rQ9GN?3ZItbWQpb=l0oUYYv^12v_k${xo zKZF;Jzs@jmcTmxdjohsi-YU#&a7wVtMJ~5KAnheX<9SHAGmVVmIqNsFx=TTK9v1?< zL|2VS(Vd`w#x-<{yzU0X%lg=Q?0@=m8S;twBm8N&yHL-9<*z-zNWwfx?6AA0m=InM zGS+Jiy2JgaRfyItWbvJK(NZBD_b2-iV z_*KvmaqfC}XiF)y>bTxlCo=P`?Kjcr+qbFGHlP9$?$b9bITO8#<5yo7?QQ7cA~EZ% ztTKV&M;W@Hbuss1No5L3$GTG;Rai4g9d{skKXVXOT`0XF9~u8ZLf$Y(BaUC7(yxwK z$WA}qgtXU~?aA^2YH7r8q#KLIJE0*#N+6kZ?w-*LwSO}m*jaWe8I76rM0J@w#C$h@ ztoDFtbg%iGsxyKE5a)M5woLR6*QH`>5fHWBA>78Mi4%t$B8u(=!m8iF2{{GlcOfr2 z*1k>EVzq;O7V6j1GGL%Jih*PW<85Jwt_$rA5!FILk6Kv*Vs6xT{fQxx(+)Nrb_o(Qa_Q3qOA z9+eGU!RibX&NDh^qL1~K5?4B64lazU`jlRDm!L}5t9viZRyus;wHwCnUb(<4<9V?H zeI@E})i#KZa)0I2En10TE%O9>dKV$JL~d5D3-XXhGhLdqnn)T%Bl zy>%#B-e7Ao+N6}iwYwFOp57M-y3W$N#Lwv^{$|QM)YrIU2?;cWD<;J?mY%%h9t&o* zQ^o6tM5XVw;=@1gj_j*bPrnztDjD#;nodaq?Z=RHV7Mz%NscSW#P`x z2p`+dx^UGpupc!lXIno%IKQd7U9kMj>@(35C<{1p9<%{B$m&MeuY%b6!nC&z$r2uX zs!S**O#zc!E6~Ue);>tmS-$FNB7+26=376L`Q~->m%q{h<$I6R^YS%_5kAh*T{$9z zT(-zgp%VkYoR%poo$I|T!opzqafJqyT;qr^2~c~M9J-Gv4&Z($+RfmjJajs(^#v~o ze+ls2{nW*4<+TPv}ziH&t(fL+c==G=~i-iGwD@A7~ttM=}z1?Zz8i{E9cdzYWt9Rbe_=%SsS!pm&e zk`0>teGC$3++IbiGZVql$|yjxJjWEX?+jJOK)hMm`s@C~z|m8CsRwrYmOr4x9*d4F z-KVTNk?0wpisw@4ht_~XwKFt=f5S8h_|eJGFaPA0;NCcIMJZ)>Z&9o!ZzoeyxF`V) zcyTJi2e&2LaEMs`!IcZo`$}k(3&A}=E0|h6A*CJ~jmDo{QYd9U*xR==-$#O^txiOR zd>?(UXL6DFnC+yQ*ywe^AJ`E;HWd}FHlFg4QoK6R_h>$!Jt|1g&!E^qKKv+c&Fj3u z*FJWqh6M?DnA8&azD|nCx-I)#1T}pz2vQ9F-o7_5Qv0*boom--L=*dOPN=0@y?a@Y z?~jK){^U30>veU^Sphbv`IIzk)oXpNF8uJfGy=2=$^Er3kx@Nm^u8)mNpa(c`}Jd2 zB)4iQa%JfTr8lILDpQ9eG%_>;mM+>}<;rHdA8k@l?Itw?aY@2bZ8Q+ocIvmBzzg`E z?kFwsFsG!$Q}w(=T9p4gC>xj5F~6yf&DKS{y=|iLup#}f*SXabA@Dc{2n0a<1%ZMA z0DwUQU|TG-009651OWVhPyB!6<&4#aY2%%A6kbNXlgnX`X5!5PM7;VGw4%HMgDK#H z!1>bhCL9bK1Vzg13g&PKBOthpKA%`bR9GZxvDk zsTtL9{QO_#A^|N&?qC*ujS!r|Ba!yFR#8&G`5LmdjS(fp2N&JW=OFZYTQX9W-Mx5( zuD9+jRAMo~Bbnw)Fudm9mlC=ksvAVA>TA0;I&|&FtF>uISNT^1(h)?8YzwGZrA6BU zat~Ag;kLJN&NiQuOr3xl$)3(b6NzsSO8YEd-TPJN{t&SL>Zq71w{0T@87)A)um#o&MPY=8FK`9eGMMv?lxdrDJe69^t77~^A331Z zF7`6#7E>us&IAf1-?@2>SN&fs53(siJ! zZ$WB$1f!C763;6W=?-YnT)Xhxuk(9$fbBC?o@;~h)}=SOAAx^v&BiNe)*+|kl2E^kT?So<}%d0za1d&bz; zCrFiknP3CK^>@FA(4x`Z2yF~}AkQrt`#RTHvpZ!!_2j-42Ern3FGR-JVmnQg#5}#r zywc_)Jv9%9S*DvdAfPjYh!@t{PuNMXImnu0-0m>lMNO zXs%IEI>KiB6a0$cL(DKRIgKeXRX1^aV61!T*>o_t!188gc;G~*PHII@)(LWoH0#sO zF+};*VU@jlUFkkqFBq6r=qn19AN(Gp6gFyW$UVAx`4#Kn(`0`0srONZ>!vIF^Z$ z&Z>s^GX76=U~lbiasXq$QzW2b#~(Lc;_vGFcHupj9tFH7G!?UH+m`Fr&j9xNySH{+ zZDc{jn{UJf1qf(IcP`Y2r8wg>3Dzf|d{ka5;Mdbnkt<8&m~~QM3Kjh^bqDB;ws!h{ z;8rlT0jaTO-qz(&EYdc@En^Pv2VQK;@-#M{(T}cemsmX3nEZ6L<*cnB3k}msPkXON z4L-`$5ubl!vp0eQT(ji0EAxUE($a|piqskgwu6v-^0Y?vS%u>2)MIWC8!|;)qby2X z!st+<<{WhYf?k5fC%}qJLS!m7Z-Y!r=Rv^@> zil=83q&UCe1?3QPZzOernmV~gFb z&&5NxUukrPga^s5&8fdEW=jUr?2_>d>F%H7ld&Rz1Y2RWD$xY=i8Y=7IU9chZC&|j zF3tP54E`9E4%|u{+gs+W((!Cdu|Pdbr_UMjuR)lHishUI$c1q{-cw(3WxNc}=cRU% z(qA#iQi^wZe(KHS>z|zE`h@m@Lx_j*)D_zRRSGJco@@=^!5lu|^2M21rNj;pyi7=y zI)$lCoYIx&-Al;96$!_@Ijul%f5+66``fw*79}P>Vu+T432-Ji?)R5$52>rX(gxb8 z^8zDU!5{G^*x|V)My@xs??jt+Ni4M~ym!t$WHDx|5kI2W#9`<*l5IAAUqGz;^)Kc4 zBxadi{&jP%GT($>FZEOyzEx6^ZB=Udug5b+X(dO&BtS@S_Il`<47 zs1&D(>l@RJ!hzawAHLj^rh~f@i_oSHzFEo6a|z&ZEqwx|V&_`vw>>C`63-;D7xL0f zyc1m@7}xqW>+C|7$Aen%P>b;7SqDDw7LoI}4SpQ6zg zR$e>hd%*Uq-d9~iJqZfM%%dD5fs52-EI({ZTfXrG$Tl8qCo2J+;JnZ<29NBT|un@1y9@(Y-tH66rxMEt{ljio+OCf-{Bs zeowaLg~#E2GfQ^!TOgc9`(9Ky0HU*4fr4Nya$ot}yLr9OH^uF$4KLYp;s+*^l7_#> zN(Y|=E+f~K<@=q!R-bK01&UJe@@-!k2abDO4}K&olMa+g~Z3A}~CO1wHyQ>xpjoRwdxrjb`>`3$-|| zQx2{6fMnDDETr3c8sTQ9hyVj*2*H-K;;1SaM5Em(Jy(CJCW`=l?s-L)kMYtWXQf?v z0a6^nlSV{fl74C)4k^bpmVrS;-m_w>v0S{did4h zBQK~DK=6qg~KS0T&co&cy5J#yC%mq9R7V#N9EC_1DZbA=ysg^uc8+%qha zytQsQz!PV*$PSAjbq=U_XTYm*YA6ootOaFbz$C8HBMT5)8;XfO-7w?Yhqbm!!*q-& z$=1oHz;K*99?~-)GYnX*66EF$Jo`jZdlewfiP+E9tC|NnuzcY`PzM0S=rsQJ_G1E` z9OKy=S&vH-BYo0Qq5YVIVHOig^Vk9^azMI5keLa{?y;ZI4~{2>#I>Voko`RQ zXYbDKHsl9idSop%V%tnoYTBe1!TjYYU}LhfIujs46g!OoJSzpn5g$ed#*Rf%ij+4` zhv1_1EyJxOWt{6Qy%eeL-TX5{f-^hbk^zpCdPlSy)4q#?tN_5o0XO10kjMeq%z`d^ zVV(QbPn$p<1n(kYz~ROF0VO=T$H8s(zVsPY+mVz5(FgI1=MCXWq;P-)Fn?P7$T^ad z741yIUjq`S%V2gaNK!h)4uHKW9`Bc7hQIjjE31G8ti$WPM_wIoX-E31Crv3@)8b{Tj#5AwOi9B-yAqMyk)Mq~+aYl>Nif^D^Vo)a>P$S05h=vK| zGVScy3>{q))ud2g{BHbwOhVN!gJ1C=h^2M0&q0Z$$v=ZixF*|O?zuCQL<0~`{btY!iuEGg?2fgjRPE&MB? zGm`Za4d>P&mf}wZSvnop<#+PHY%Z)J2$<$7WpwHJXuwhSb&jrgbM zHH4tz`SZ}DvI4L0cf}Z`WVL;>fIUFq@(*1da}Z=>@9hw)SM|lWOwZ&wW#EN)`!#S8 zf@B&S*Z ziIdVg;7)s0b_&Rr4B0IJTaY28n)>~-`UeR;2~8#k9WbBEeIp2Pu~{m*b229(bY$J0 zd{puag!4L~w?@p%33|&Skt{%CKp9t_3o;7ihGQ=Mr$kz4pnK?Hi~_C9c%aob!ms!i zvqccz-oeO$4?x!7|17Ebm=X4> zFBx651DTOPyXi#L72wgiMB{bH3CzW~D$H&XEdnI>cP?x4t>4+#Bl2)DAPVEIBQx7$ z{`f6~i`;IFOB1ti_xUKBa$C2<`1Zi@1=mDFA$uNH>P{1l!ho3{U zFoQeU$g#oq;y~tNE0YD5cZJXrArca- z;|XN)pyAQ*WDZ)|aJq;naVPKW+_V5YDH*V^la4xvN%xpmx{|A4 zqECo8`Y$4m4^{oU(_a8R!Pg28g#L3j1ivZr=8Wa@d;Sd#?O#W)ARVT-(~hfThj^6g zqn-v6@#^`1IJ)n!q~7-r;DDllqTt@4;$FBlwGc<{aL*LCnVK^-s}IY)x0#xIYnmfV zGu)%4W@cuFGgoC+W;Xos{aqLT!gV+o=Q*7Fx$pOj^D}~D6U#YDfTxPW2#k|1D)z^S@I7k&rtE)fX)b9o0S(xTyqLGV7!GJ>z;rm&5zA}@#mm}8 zc+((Gj1Yfpsi;HLe2sK^5E5$pKmPPG1Dzzm7B|`Y=&U`DW#UL|ZxGL*-m32~aK>i- z(0#Ti70ZSGUq`t>jV!UI1aeAuj9^PaD93ui`S(*&?U0n}Z3Z43jD zy@Fwu?E;!jVZe2~&?@Hr-yZcHHQidbc~55`eF*p!Ek$0`GNXrYH+=nw#<7cEzoN?d zjljK&2Y$_ANRjpoNAfd(6Y4!TNSpJ-|4*(=VLW6hvYNFin9^1mx+7yGHj{RhE>ERj z&)R4%DNb`a{J5Da_p~^e{~(7m|I+RfVx#Vk4T}v;EgE#|J~#u<`d}DhcaSKIWzv4O zadMP$=73Uv3@C3krgyH;&;$V29Yk-5V z47?J-_`SdlEMA;hfpk=`WD;3EUfK%+u;2%$KZ{zt`Gxq}vU&MhQ=0Yus3+Uy-c*3| z%X-hsJpBrkq=SC(Fof3oF<2&XKpmly^^h_zZMCF1CyT)5uf%P{LD8$l*wiT zcy8sFZ>`g|&HjU$b~Fhe0IU9jV#=p<=`6Y*Dr6awCZhaIF!KdbSStbUS_|K#b37BH z&(h%+`QZncgZzJdh*dt%yI*Kee*A3b{P*vR)m_fOtBMQ+^}IXq;`8{+MAkDL5H}(# zF9D{U_BW7kuK2VxwbKchWZiDFtSY+xbBptl&tQ#AZo`xtWrQlJc}ZE`3+%Irv7O6(VT)PbUG>(>j}rE` z9A_Tf8@4D?az9*uV0ZU%{Lj(%(K5 zpb-n7yBPSKamRIWg%ZzRwe*3&$tBoR>tJur zikNHDtYWdB?@vlR&Wf-|XE0?XjEX!4%&uZ3zLh7}j7j8m6?$mQ=XE$2pdNeJG|?59 zGle-Vja+-k+LLc5q-s}yACM9A>24wj#xC!)z51}*#As5B^4Q_^>-aS*bk%7%sH>1# z8eHe{K?i_E@@cb$z z;OwWn)rDpI`$<$N(JuXV(6V@HISfm6u;cpm_T%X7ExBZY<>-^=Qn)MBdXR{-n}4Bm z<~I=HN$p#vuVkIFl7b*Y1nF5YZLCP{*gXta5G%%{!?%~*f;)VcVg)Ny_`5EdR4B)fSIT zyIE=rD{{w#u7tfEfr!rmTDbKwgNv=OT7{3IMZ2ypp+VjCu;xhmSM&0G2m9+gC4OBK z^+Dm@naHsWntOb3cH_O1st~tj+U_yC*eciHcEw_F_1cAJ z;fufJCVk+6snrqPZ`pEGXpnIs|160wMSC5FJ>=Nks_@mt$GYDO3&Xs(gk$5>nm}{K z*Dh-%Y#>=xvs8Qdchd1+CYKgm?!&|qm10XqJQCfidtqhk-Yq_+PdHwy8o$jvReXLh zUC{fgBFKSm;KTLGv{f~W+(tde*90-`UQIKIekOd6R<*$5gjw!kjtU-OQQLARx$7ID zdHa&LzrRub*NOH#rCgZLt7^3Vl%&2w9IyK42qcv^lZzw^exn-Ct&|&i45gQ_IM1<3 zYc?sEl)i{H6&Lfly+!>j`zr9@Nbst|sPLVs3+KjxMS(QVWXtO&7`MiA?>})k{FO*^ z^{8UcXq6QEW$DK4tWd&w zyuz|#75!y2jaM)=o7dR~c{O@N-B4&Ez+idx-ybnqY#A@*U<> z>Wr>Wf1|&J%x=8QV#+gTCifrDs9n5jEU6XGJR#ez;uhx7r?GiZ;nN~*zG)uyXW2AZ zvh}WUqiM6yR!&^<=zG*NVVp+cLZ#|+$e?feOwJj{$Otxzc64f!t#ycoobb(OwRU$$ z=PlIk+x-X~C%Co%)WRmrj%-u#Tpj{~{6%_nRXf=}ho?@%Tnc@iVLV*&7j!|;Y+NXd z!!eKhrkcbvCZAl{77bplxHMgHZ%Fb>ojJ6&Q66mLo~C5zk`=&=-3!emsc0BjnFrJV z{{&p3YNDE}1Y<+bBF#L%_w zm1|0A%pYp`E$?zEAgQPq$V`)eW@ek1McrK_kF#~*ecs3bW3L$9bT@~P3V3jkc9c*| z?RaXCNv^?~I0xTOfOd?ne4@Pe8`RsVs)K?C16LnI^}LAtysgOmA}ZYBGX$xiYIE*! zRiNYHr=+HsW=@BX9qs)Pse)A4 z+XBU^3nL;SjV;v8%n#xBQhg)cVu#Q%kK`uQWFJKG7tQ(3Tchbn+3pa`%H&9h?xJFV>Xp9H_g=q6F1hjb z%_Id;EJq!6Sz1&U&5I6Ve2w2i)*@ehth~@r&XzY5?SEEWeBrD}j1NzPqnJJt`qRT_ z0yCs_JEOhq$GJ>)5myQRpGR*VKNNqGk(OCBw63&3T}(aIqF2Ga8Ug&x_{5@ft<`+g zq+8rY_8%}j?Hw9YC*j(G<8v~d(|DGf>@s^@o|Lbm4G+ zatq7@v->`YA|uQhr$d$T06j1I-jc}2zNQdqOS-Er%Kop%V>9w+V6n^3UbSidvoYm6 zKcG^MefyK8a(TiP(e|~QrkAW2*uMQ3ZqTUJ@-8{ME=Uoj2oi4A%X5&DRjjH&4uBir zM+e|xg=%;*R)6hr(X71D?<(HOM)LAObfbO8gU5A&o~v@z*rQ`I-@a?kciF+-M8ATo z+7E+mlGnaF(U&o?UlN=`O8X{!J4s!?9k2PN-o1EAf>{wjmc%oE==O#O#GeUZ4wWa5 z?vE01rlvBrUO=K8x+4HKgthJU%QpjAwO(miYlveFa#5S5?g6ljrqvBPqo^q$iH*@ZavqztyY$ zuyKVFs#?PnZLqz-Rw7eKDqWo>$#bq)XFz#Q17(g9k>|iJGHF1x&R>DDsg*eD^7!>3 z|66V7T~&HI)pjPb6}ewSLuLboSbYfDr+0Fm6ygoKEmdM79v8+L73HwzHD=!EW78Po zHKzB=5kL&55~(_D$a8M}N~+v3*@&nw&ZTzgmC$X8`(SgX%va6qHww*bA2@C^TQ2tB z{jF=XNU@=%5eO_-56V@C%d8_XpQqAOD^oPxlOFg&Ut2yjQ|*c;u!bX&Lonju^i=Hu zR)Y-IP;9;>0C)BnMDHRABFKUWq`1IvA>drmv4Ke|QN?B0nO?knd$bV1Y-GlSIqrF$ zTON2lk?0D>>+}u!GSS!u(bz#hb!KO?v5zhHU_+8(A;_y{NwA!;pvEy6fHnWsUGu3i zWU65)Ao=p-|8!38f=Nni!KuY;lAjKX{UW0Sd|Xm?w6KGuSv3yZCgHkC1rAdMwWboS zrc~~dFLRm-6n)1XAR@9-1?|mM8;b{xErQL8dHH~B;Fj$hYlpJ zM$2Ly8dHd|{o8hhbU6_fUv?r1*pX(m8tg+5tLesyB(5F=`2|rWN95xZyBkez?9F0 z#2_Bo5gDg28UQf~Kr{l@HD17S#?c|hMhDf_wQ3@drZg5s#7ATuG1SMxSQ8DJROR>= zKQcP#8LrlJ+Rs?OgK9j?!o6IP9+VqIt0?R!hNYNMjZ3?Pn@V)bzsuj_%0J)SZM67` z#jB61Q3A@@XPnR%D}RWb2zF>V6vAtRpb^(SfCBgzMa$z_DN_m~rO{~KJ?=hHT`I+L zFxYBTwi5K!ihL%;Dvy1tCWKPcq4#E}Ks7Zf2$cjwC0*?(_IF8&lfCC|-2ZPj`HyY! zahFkri%M||*qBI`#F+Ebt^ZB}poKGqDS)A%8BSRemq5nqA0o_!G=5{ss6!O8-gfF3 zFTHET^nJF}QP!5~o0{iGR(65X(iz`#R`YUdF8h?U*)+Z~&F_Ha_phX@le1w5wwg?H zA()4=mor<9+iudw?%T26t2N_nf;XyyHO=wDbn6eT_@WesW#`D60^m&n$_PNjAS4(V zh&Zs@q?$?-Mq%Njq#aQ=A+_CiI9<(I+ACA(zUR#4B)?7T%N{nlJX1nJAj~$iJtWb0 zCdt@(-XE1D`hM2!SyG6A-ECRBMNAJ2BNUExjxL|{MYCXo$YKPNAc3R;wqdx04lz*2 zOyIekq)-g2l>k}mE#RLli8tlV`1gMDoP=m(`uDY;5RUV$Q+`2q#oZfOYKhe zCx9_JAgvv1`X~U}_l8lVtZO4CWD+59KwF*8n-FF(0TOp3fQngM*1(#EFd5A#Luzs* z1(~snLb`va=p*(u-N1)`h_1Zsup9tnjL6nVbbG#3$dE1@Npe`qj2qPFvTBh_(yWGA zS1{BflczBJNznn~*EbV}Br3HHJGz3|Id#fNA%x#?Lx=9%PSP)tZpC}Hu5W5%G!y+7;@$DA3P zY6&+Prx*a~aEG`+IZKEq1s2+f^P!D(dE0S9I z>o+Cz`b$t27out}0lJvY9ZouBddQ5p_Lf8UK}ZP;Mc?CfcfOMoAq5n+`8dO2g1Zb{V13*`xg2rNph5aEoPo!KQGowv-NNOWIgBNy=PG@qy9 z9e4oM@t8>qtMfs4R7u%>E%TjSIU&Ju!?nWSRe7T|26(2A$)lrq4q-|uU^UY;o2^>^ z=H^}I56#7uCIFVs;z3$+K>EODk;_tDC=rGyUUB*W1FVUAelR~G@|yu$+kpAY8{fY3 z12_~JASBL!*&%@Z!I!M$nfmv54n9e|QAA(_WUw>_umk~Ii-@>$o?;y!`x)@8hicT1 zX)C3c{6*Fhf!tF)>D;clbwqBmzYbVC4#clR`oL}jt0c1b5gEo~emjxb1qyaa4c!Vj zx|AwW@0HvAKVLM?=^W8Euycsf+0T4hM~SN?PlZ5R;Upx41n&dNOs6i9oKD*AWKOKdBd16hbg7MP{p)=}^a*h?_WO+c}n znnL{eASBf>z(d}hymlgkGi9isj~V2n4&#GTkH8;!7_=vyB-ZyC*0&?QRb6s|-w{aM z*Y6v*a(X!G#^3mvfe!xsv}#`%TztI$B#a0dWGJpcMFdq;GdT`0&Z}^5R=gY`_vR)_ zySpND*+$f7hDqvR8-enCD9ZjyYlj6Nwz+bJG12%WAT{iW$W!_M=(U|s|UANNT))8DYOpgjpIPf zGx@8KL{khimbHehRpELf@&KqoNW5K_zN-lZ z1fJ(PcQ3Zn_phS*yLM>QL82Z2L=Q-X_3XiB0R5rFhQTc+Jkc@m@`bR}qjF;S3zEnp zNt6!!bdG%Q?}rP|Itm#`^TCvs!0tPZDFkPPP$dug}G!skX{DpMnX{pT|BtM^GA zNk{-B`9If`Y(Pt-O{L4)sD+lW0KfOQvqEI;=gi-oIl{72~#4GKDov9qA zqzWov8!=U&B&e{bi*AqA@}n5~h9lnDTWqZOXmP9z+C_d2+xJ-M)}C!JxXJy?dcNW1 z%0LWnkf=kGb<^9@kddC|gTAUF3ON^FnJ5vHnyNUydzwkf=ma*yU2_L(Fiw9IOlL zjJB-{XS6XnO48u~2UeQI%yJkw*jj==IACmae>fbxF#eG;;>>+PU}(&kDj1QIA}kwF z9hvny@NT+T`DC zuqEZ=ojQWRgt25IKtZ0i>?)ROoL9mt`@Qu8jpB~tuuE9mh7Z5N(`ztsLaiX{gAQFVS*cs z+TbxA)wJa`L#9q33a zW*dhF{lWWa&aTt2v*|o~TZ-Q-6|-Gdsa&QVAKhUF`6$pZQfEW?#X;V_k>V#*Yi1L$k;v#uH9S$%)sO%6G~S;(4r?UPU{&*VJbKqJ z&2m( zG_4h2!yI|%a^#Ks?Q#!lRq40%?yCJta5;=JnO}3Mf zX@0eeJY6oRpdp!$qUkQJw_kmbB^wMm-g92&cKx|Ls#XF4%N^3WRl`T1x>)hZ;3gWx z7$wC$lza|~2mH-pIlJA_5~zg7$##p6MP{svf<)+gFT_oln^x9l;ulY39_&su+x8K9t_8!M~uMkEga0jKvs(J960p98Dnb4OXrFwan9? zARtU@5$G)j8KPLBbwnZ{pf&znLe`Z`Zt-+xeL6)aoXmI4BiS-eGq(`?%}~*G!k{4U zIV?n7iU*4R;j_q9vaus;4!oc>nhOsfUFQi3$8q3B2gS7*v$M^R*|RRU9TSzo8hDV9 zm^hp3A5Jf))(PDgK)9b3RdAva#M4?sl{Ygaca>WZ#Y7FyC~p}R0KxlTEKKtW#IOqJhHk`fRnQj;Y zgtGV+Cn(z)UU2Mi?ZN_Nq0r*r7(Z)|bT(cE@e5<$(O)(`yU}b?*Z`MYxXU6Od zDcDa#mHii5)u4176x|Ml6R~5hm8=HgWPz9S0y;ERcm&!>Y(Rqh{Q}8;>WHU-w`0cw z{!2SYv|ZNBJlM)s9qxpG$|?uR@)21>u*edCZ~~U8!;S=(Rbq7)peknNX1FB9w08If zfjw1oyMqncwwZjHpx1I9s)br`mUy{{QHCa-ed!T2Gc?yxO|eHXNhw75O*?RzRpjww zb8g~oWGHXr{OoAJ|5AW>jf(1J7M!7w3+=_CWdjA92ud8UTkwx`?IJIv0Va_Oo*%-IG&T%MgDG;7kG z9L)={TEDIIn)mh#J!F&vaYC=2Re#$M8MmR)aBHJRzp^QBexphDf-Scl(IgiWG)CjT zfn`SJ0P})h_og$n(fWFLOIsMxS4lyQ+Mnj!S`BK(n+VMTSioFEZP*Tu6u6comvKxc z1kZ6W>3=uR!W+R;Wx~;gL`|smg0eJJh;w?m5*LLgarMc%%9nsvZ+PyQn>yXLC~3H9 z<#(pGors_Rem|Z_;jiu(c^;WV;U6GI?g2ppkUQ)VeKjJF7u<5koAG|Ny3!%-M5&{W zWR37D7X3zGeGs;s{9Kd8W7W)5KCbt|+Y5|FoKquNogtW;11fnpL{aC3QdZokz2T9~xjHyP%jYu-u(o%E2lt*{EoSl^4_YK-ty<>N0Y5rt!;p#li=TDv__77j8%WJ^SwWEYt6) z5B|4}=o{wwe}zwfy=y{(7k+u&D>*fqULJ{iF4nP={#ME%9C?S=#(3h#inst-n_zSx zZZr-yQnni9!3-h41BAv$VFffs48bO12w?`49356hjA)gNXwZzbMg=~MzOibhWG5P3 zzqIsm>;r{%=8t%}L~w=f;(TY0eZC`>Ha2>$#1py3Y=wSnFiGKVx3Su0!%f-o2P_-= zd34sfPQ;g8B8=$9T>zI+wDpaY2FOy~LvEK`c>PFRekA_BA<=C^(GZZrK6&=Nw|=dC zMjQ2BH?#ti?gy<#aaD__ndqU{emeqm9o98>3BSjvxw@7T=GEv5F_WB9U9Li|$cr)@ zm3t8LPmV+43JvXALVcw1Tda9v}! z?qKe>Hb!;YG$I&XjVP1ax1D37yj!&{L)A-TbC;qoygqi*-!QV7s(|G}b(Wc?ZoITa z-`1@>qZ)0b9kOBiLf9mSVrDbyd}~u{oT^!Y)(}jYH(x_@iI`YP*y;;fl_2zNsMcKg z+#E-FL#9OV8_)J(gX?8dt+&H-ee|Ura4}Vs$JP1^Obdiey$zlOTVwr#8Mf&pxH+Fe zBf;t1h|~2t#>k(P)~#Bzv^tl#`pbFJzoD)cjU(G_=pkNl-Lx88S#i{CoeSKYYJl>x zVPDo-bXQH(gqjyV^Rst{kTm%_9#O3^p_sAdWYouue`7(MKvsO3=9 z9BAq{q%YgBXfyQHvWEDgz<3+#^>O3)!(on6CPX_ErQ1KGw^pZpQ=gd6y~XrNumE3F z=+ZcBjF9CM8#1CzT(3$&JU0@D4C1D6D;H_FCW z%W69qS#`*n(1J8ao66c{{=9b2WHFI)^T|2~IX|%JZYrq#cY7iF!ojZ%g>5N0AMXjJ zov_~W@i8g^x8rI^(Z)Z2^eZhHCf?k(Vwp3goe`w1K}k&mXS{GP12HuZ%3-XS?@V9T ztlg#D5HkU-(t4zvmztY?3EK*$1VVPTmrV`~N7S*h`C2=E`%+Y~ol@Ox#&q&$^G3=; zri4yo-MXdMpBfFUWW@MHQ`3UM8{|7S%oysG7AI_T@33*Df=TOcOD|bQmh8f~VNy?P zWr=7-DidOE2D#F#<0P?*5?-}{g40aqUVNYT1M(Tb*M%8sZ*J}C7G-Ul{FRdP+Z;=y+G&nqCXGJ#(R`9D|g3=WPS+y*y~OC z6Ccr*I=ZqflX419{X1EX2*OM%2{T~L<&bYqfS-?A`>%t3E-678T4We?U;Rmu#WsmQ zhMF``PO6xRSy+>8*h!I?Eoy8pmFZ)<-TyFAqR8?pFkI*qBz9wn-+{(2&?!$PFANIi zgNkj`2;+`TpKx`glB>F0;4d$j8R)7q28UvJjLSo3h{I?8kYwm2i4KwgX6QM`XRZ*H z@69dWR@!7LTVw>3|0kL{0N53QFJ2g~Ee&PB@(Lc;^M7p6>GivN{j2Tr$SvI5wb6TO zC7?+`vXb2>*UvG2f#JNYVcD|Jp1T#}hOJ#^7p3o0@IQ90^h$kcR=Qb7mv+FSN`QPF zhI}0)m8%^hDkKhvd#H3n=#voWMdSBH7$_rHs0G08a*u<){~km!^Bg%|aYpanm5h>7 zu`2B{kXcB_Q5V1{zwa{R9h%k>KRhg)x$b0=ShUlj1;{5I66p%Izr#Ex= zhoah(=6h~o@?DFz;ErKgDo$1(2L|9KS4qekE_qk7jf$K)hDo6eWP%}3Y+A<+DPvim z_=shH?|G0x}_(CEJK za_Fd+EEmr7TT`MjaoxP8+XXUqYtF^01Ef5O!^{sWO@frfBEr)mFJ|Ko#1zI3rTMZy zU4)Dcp0uEaz#i2snI=q1^kM1wQ?lGl`I$dJQP~K7%#bm*8%iSzEGwyf>~vL7hx{B8 z(f%Sv!D-HebPtBjD^gv`zBHBJQ%vA%Y2rqwGASHrDnGl5nfGD9v{Ax1vKmFJjItH^ z$%mC+12gjJ{+IEhb-TM__)1g#+DhGZ93p=|@STQehq|!UC}xi)vLEpw;NDSQjC<4< z#y*j|jB==gksg96VCN|7sP}4u`hsYIoD)px0ykym`d5Z1ocw+Q)Kro;C54m>vM*5O?|pw*!Al^PX?W+#hP0tG@I^3#XJ zHoEUXohADOt<;0x*_I@;@kbkdG$_dTvtL_i^K^Sb^?i#}MH?{-#|FlNWKqLHT~XlZ zaDL|a=}48E-*l>re?Tb*V)sC@Ih6n2oVl}nreZ(n^sC&hl>>ZL&8*FcTn3pjszXt6 zFKz&q>_vn3Ng@JdF-0=zQF}z`Ve$p0IQ=@j>cJJKYJ-x}V23T640U^}QDulqVD>L5 z2Y>`khdWtoVDQ?NmqS^1I^HkE)i^UT7K_d2wNs5O1-Ux0?>^$oR&-fDQLT&=Avh5S zqS&%wnIk}eehNgn43qDx3ki@ZOv9+~WqF;S3N+FC&%c%WTGu7(4W&!syNyHsoV7P* zQr*U>p|!HDj01n`>b)`)ezMnZ@!J^NFF=nyst=hKW7wZePB00g8TXTzrg_mn^-2Bi zFrEAdoBAO}FejR%KFClzPKa(ueE`&Zm(a|F8`0hQw+2jnLRLJ+wRJsfKNUunmZsiu zD?YkzXH7}_4N@wJQgmS0pI;ng`p@){9Njg4&b7HbGkmeNKW=ZF^8h5fL0-2Iy1i{3 zEC2~+XESMJ*#U$9RecG;^*;MXF=(Y&-1btFr6~5{Bp3UoQbfcihr}R{@4W5y+KnbG z46CD0DOw@26}6@O-`a0vnij7ZoOOL{@oCtY`D(;VmF(zicP}yrC4fX{l$Ngk$@;jT z^(D?d`^NIc<%d#EKBT0xH&_lhPrn^72k$dqjNZ9IH@0UgGoUgl7!OO*$(lDtv_0Uw zu1xCBu7*9-P#C}|yMPi|>!k)57$;fncvu@7h87aHJ05Ln`(xE-Zn2pAnw#>k<=<}C zIc!OD_)gy4^Z#wj`n=k-0ITwfoNL7da*U?kJc$GOTL?aeeUMk=hIZn5L+JBOlpr{*_xf{abYK>W8Gd958+KMcTj9;*n@yge7C%_JKn0gInAShDT0yTz zO+>~NPJ)W&s^H7k2+-m{-O!LQpr z1ImCM0c!ItbC~Aj#8X|z^3K3JjSJ1abXjWS79$jtr1BlO4D1uSTIxbQchfa!(X(^K z!WWwW{3_Z&?gBm3iLZEy5ZUZGNOP}-gTSR)ciZL0TPZ=k3+@3%1)f|}8f7jD<}zi$ zXAc!0%~+_+n)DFKY)bM$OcMHvoy?}* z&Q|tVKrC~??EzY`?~($hj?dHz%FTm!t758_O|cHAO>a$3auBf4+G6+ACQbCO)=N9} zMTEKD?wsTOuF((&a*IRv_)R-8H-XpH@N2Ic0okH(!`l1{w!=jV2Z?+s9KuphJjK{tyN7$*bRKd;})x_LK z;xOh-7=oPfOd)#4&`@;?KbqnH$ulI^Oox$B3Kc&|6bLn1N-Vi_&AaUI<5j8||KtTG zjPWc`~c$B~U~n$?V)Akdu9wDRym9)SNgW{Ah7g>C?{B zklNhgmS@>c{c(4`^%}D|Wq{6ScZmPTY{&&$T1D|U0SJ*{7Gv5o=G)ra>Qi~ldBZ0JZdX{~$fGOjzM@o%M7MZ&Y zyUcx+hwV4AMyj+W-2+ADi&ymJsi!4^ANxSGhixz1qf-?tY|}kMy5t@-f|c`-S@#iY zx4&(R>a};m-=frV=KxlcA6d^UJ%&sC$o1s@*>(4VA16bCT`+=1X8`3{cqONO|VSw`b@lMY6tPJ>t3B66&i4BV4-mnZ{o_Y*Bf zbI$a9jvecL`wdf8;t6IJhu9ymRwMpWg#Xcvw2ni?&5wb|`#E66@Gl&{S0KAh#d#u#}- zp)a#9Pd0u`?10{`qK|>sAAt3*2ex;W_=@h^${aS94!^R31bm|`Z&rSsrPF12w3h?H zVs3A`ooL(vG#uaJ0aeC<&T3oIj@-iowb4rO*fydk|K1xDW-^l3e@xnD){?d+;arn4 z8j;PGdo!&1TsNjk!wRSM05wzB4H>x5gTCtC!AoEjLXDv#{HQ~kfe4e>ULzp!rO(HBvqJo>hjXy2Z`GU*zBo}y zW)ZQx3nKN$TqW$Ik*`iJs>i9ZT|^CY$}{rWQSum5t;orE<)C(cQ zmKhzZ5-wC018e~rnAT)Z=bj7Jb+3G{B^D)zYLb+K6Gr}p6OilY=? zm9Gyi{snz4%i7wlY3K;L$Fs7|BU#O%nDyYA(fi9PepOI?GZ5!@I5-7c17qWx19Oe_F~VZnfLSo z=iOd{cr>0f-Fqd#hWP%y1_w|2yz&|zTR76X323cdwO(^KV-jekDP!VdzjS7d$_63X zeCW_8S5>n^`u?Qo5rx>Jx0$shHei-!{UEm-BT0`4=w=^?f24C zC!S&1^e_Kf`}F>_Jqx{zny9`9lLs)SiheD%gOqL7_0#xn0R!v3@ur{aFzMVZ?Ql~B z=h-2JfmOZ*&X|H#fvhSWA#cttE8*RY*z5Ipe2`GDH~N-g4Z7)jm>*B=#Os0Ju#7$6 znK1g?=hihidj|k^0{^Kq!xBPo8|GknOy9TIxVzi_IpAVH%7=|cU?U))1(o~q*e@vZ z7rvq5U4{GM!{`Gl-}Nz`BibSg!s!VVti;_Fssib-Wo=FJpU4vDhh7Bloi0;G(8e{( z^`Mol8V9Apqo(V$;KCfsu^_mM8)D+VO?zb}G!MlXPDJ0Lv1omQRsz`7X4vN{!THh? zbU5NPB7`mIBBBl;LBQ|l1vbXn)_f>WXvejIPnA{_@rbIIY_$Mb0RU1!W4sV8G+Q&D1zH4RaiYe@ z5ZBt8X6(anvzmUxP!%B#r#BwjUE##-dG4lWX94*=6hua=&aj!t5d1?yK@njl{7LEW zS$t5DL4|p24_)Ly&NHCrH25xMhaZxI%)h8^#VAibRs7!+mc3+n4A27#ddB9l$O1oNgP=z5?Pv zhFfW?V3=;_?`b?=A?Gut171)3rR-;7S1nl*tt$Yx65e z2cy1EgO|O83q>L3_FlJN?I;Q3C)%a+u^~N1d4)(_48L;W3({}sW`UtRqkcgb7it|6 z3KAD$;D8Vlr2}+e`>+CdPg5Lr(t(9mV42@t^~Lr^X5!@iB=o zwgD`(mD{#(Hd(q&<%$Z^P8)QEOE)>6X|KTObnm;7`7qPpc{ix0t>brmwmpl({MkYp zw1dE=FSoMx840<2x^nO#{2I{yO0LuVK ztZ|_g2xkrLe###CB6|c_dnDCEub!GqNUm#rK;iHTbTAnZkgaOs9&OSR#hOK6EyYTA z0-&H*$?`Oz*-DN>3r^bCREbqtK5xW6n?&VyYGj@Kc}3@n#($~LiykaH=?q=|khFbGTY9a=-)EJl^&aRP z|JvM(MHEi=yw*}si0^3;L_c&F2)kqpY`mpd~FmPHyWeEL&s- z`m^%QK&4I|J5C+($M}2qbgBRe0un($k*s6ke-dtxk&U2F$c*nZrM~AQ`E}BCEPZk5 zCST%HiqcPZNl(+z(%+BP`Z8XAzxwh!)U7=fs=hSu^C*dyDR<2`#`VLpi|*}0R}!iu z6973r&c1TUu{Hhbw3p7YOTW9Q+^KBCS;SX_-o11|d*^!UdS4?echLhfo^zPcy6}bj zCvV!FZn0M_PBzsV7QQ5?T~effq2+Tps2!{am-r(sXg(}8rp%%Muy(h3l=85+MroN$y%yQlF*vl`M3CsJ%eumQSlXdmdKa(`{u51zx^avP=5@MshM zqBuLDgJJvA_o=+!0q|ZL&pBHTz)*eY2{J@mu$px7daM)yckx8#x`XvyF+_eqzV+*X zU(>u2{~}ddur-BCi=)adOi_{PKQhllCAKWuEtqR&yZ_eTvkeibjSBfZX+MRSs4-n# z!x{3M8j84z^ZiS9?x{V~l_=m-b?@{M5&&c<$qz}*eSY3(jb{JjTKTWWI9y1FlL`+y z?Y(S2JTpd#zd%s?PNb32*U-X393O+bW%$`jPT&(9HB;@N=1OVN&CeCK zWZ`@|Gf>29=W*J#%g}TI$X+4(TWG}uIUFs#1q?|g@%f#6W?uWt6(Ls|BYyIsCp zW+sC5n061~0r+aJCjYma${Vt+@RCdEt2{2M6)nEDj}~zGyxUI9HY^k>bU`4_)ZI0> ztfJ{&(?f6ldFP2y=se_eznC}|%a9#!D8-2vG@jfB_cw{{Q>gea?Lj&-MV$cI|MT>-+hqRUOLd z&E|3DbgshjOVq!ftHVq37oK}-Y$wnG>C%zF4BB$4N=(=#H@*Gno^{5yY`QdFN!sdC ze^2u=0(H{F4HFt8d24>@-)4s>(o+~&Bu1NI(pT;GCZzZlC;OwVS^ufh{1(@iBs?=E z;%^B?)yB8<-2&fODPe4-O24>&_K#)$V&~;7;NmxcfS54~5@1qmEI>)l6-(~RmwdZb z=iX=>u))D!1Gh|!#)~??o%FpoG}i?;`SA?^3ccO_4L`L|D$v5UopOG`f(6phH#v4? z=9J^So&PO&E)VuU#mghPrUBU2gR@6FMpvps86ne~8UCV)T0D=4oHu6-!D9kh$m-6hKGfYYu$Kf zrGMXj2+ls(;p@lVg{fqgA=Y!W`TD2NhJ?^N zK7k8B0Ysfb#7KrWhrloIt@^3yGk$H_Ho5*{9{jm)V|74oCu0OmS0A7-Q^*K`y&5KU zGRaQhtM5VY<(25W(r{gFpviSHV;sU={y=`A&iuNVn~q!Z4ORC#{==MjMd#*Boacnz zL~C6~FwP=9VhMpMvz&{a890(|=2t!S*0UTL%TXZaQUlpcSbVlRYFQWShHpeEsGQ=7 zQ~N%l7~z^#rD)d5WEJ3bFMe|sl(!<8wx_7NA?mf-@h;x>9D}K{7-2)g*ZzXk$;Ts_ z7r#*MyGYoltKgRD3ckkI92luQfqr}~ilo{qht0L_Fecs)pMCa{Ri4{M>Vw$T#Nb)i zI>VHaG|67&9=pI*PrpI%WWJdD_2mQeuxLIxhlcRZ+S64ym!=1Fo69;|cykBLf5`Ei zK?$keyh|Y$!;nfo$URuE127>dH_$SLwqmj8Vz90zO62!FfuPW~iHd zlk)m2`2zEgC^IKF>{0%4Ibat&(%Y3WrLg9^hfp1lUC&iGSGEe3G`!tpDb-#jy)55k zc49t;$9$v8RpMBz%{91_+zsy~wP+eCP&e)Q1+VhVcOF@Ylxbr>%%aDoX!?|!eUM^fp)3w$4t) zKcQe!s#Np`uVee-Xh`|IlXSJytf3Yz{IGoUG;}c>wkX^9r%y(%hM?{qpTVi=;oXEZ z+bGsccT0AFZ+4a$!^68z$)B;vC^5;+Q}=TV;EHto?1EJNfW|un^Y>Sr4G=!T`c4*e$)wTK@0mOVa7~ zGo#ij^*7B){;QobViBE*C4#rR)x(wiV4nqEx&8HPKX00wr?5;Q?Xna(MNxzH*b_%=?0c4j#U!)(fs-CJk2IYvs^m|6a}_Hxz?n7SEgzZk%omEs z&X;trPZ2NsI?psMcFjmxjB2*}G{(2Si~Bk6jkQAvNLvLhg-1N6cyK_;Zez#HzC3%X z)fcF8Y<7V|?BW%*2|jz#sKwso<#}nz9>f}y{|epO?%Ae=CF-88!{d%YRaLj}MV$}L zK`*KR%STR?m1xAgtnYD1TMN;RQsfP4IDs7tIy@)~`VrlAUVfD8j?#?FSC0?Qdwa)h zBC7kNvn5n{&&5M6SGuyj9@MmF3X%E)Y}C8$rLL(K=GYBZw&^RjKAbY%X#8}{>21L^ z=jy-{oBfpfJKjF-D|%b;GRn5jw(*Q;Y;WF#1b^PFK%Y2H4KPX#^I@b)6ykv}yXE)s~v*#7GoeBjMR4lbY){6+UJec`s zi;x@-?l(|{6AHKEyCW+-o9h((Zd+l=iQ~j}p1!)%k51OM66I^3^*;4YKZ)`d*u1In z5P7tcg6m(hD&nj~8n~{YTy?67cGjRO^&hp*QO2Z-xjCc8O+~joGoq-cCq*Av>wVWR zjb5IpqWPNn)kX?zD(Yxu=9!QWqpW_XSxUE~YYhShDsZn$Z4ls2mBf~o{*+gf03p@0!EPmsY2Z=(38dHTwz4B*azI#H=l!1NdodVKdxQ?hilq89@_^a}fY)vRjtF1% z<>*s4Oh4bx@`?9#LfKAtVlo+Ks_(6){tQoX?e69%bfo5H9y03}^nfBnxl z(^S-{KBlZ{+e{Jb5G@S9itd_^fwIxHA3t>;B|D#XbW`(fPC~y@;41qGvI; z?^q4z#n_U^w{1&olc&vp*woSD(z0r27X1x->#DqIdZROT(y*FaPlr`bN*q0(pYImR zHc#WrE}3vLK7S(v6&1jR>ra=lOQM;E#a(kDnLvjr;>7x9?&d>l9Zt}7WNeTR{1Cj} zJBF~>`I=D~Mvz+KGapankR~ZTHZGL9v+=IE-nBBA`}?L$?V_X3uBe&3wzg2l^qsD$ zfyzI>4zb4uvKk~tR%KM@)m25`^NdiSV)0(D-CT#UDf6T02X7F>X&{!WldjP5JwK^l z%i+=i_*fSJs{Cn!kK-HxaAG9O-Yk%}4&eFQ>Q8fFagnBwe@ARpkQq%AAvs@O5sO!U zXnz*1K6bVs*X>tlZTY5Cd`PKIBn0;`8H9-)JTJnc=8-+uu<*`^BUOK=r=YIzu}Bj=~a#pK>D$M-`rH4gSn`<(@x13*S@TkSC+nRl#X0%JV?)b z`R?{wSuO0Xt#RvRQvo6sHAde=$U zr(FDD=}|DOaZ1JL-J|k5{b#>ewf~H6()Sw0_R+p6`3GdVrH$gegv<(`0WvfJfxaJP zt#n4`F{D2uXb&ALzFKB_;!!eJj}H5}Juufk3uLJy9baj26uQhj`^AZCttLY%I&?Zv zJM#QiS?L#Ti{l|7cIAgBJ{D{5M60LcKE&7zbEd!y!hjFrhfU?G(ovsUb}c&T6a783 zbM(C5oSaS>>OAu~a>^1MCmlf|U9@!MB9Qm(lDXxLYv=8%9KuyLJ939LGq2bS z(|dAN*RB7YGoO%r_ig{zx~O)9UcG>o=WES~TOb2IJ#?7bx13OjsnFA5sCI?Rz-c?M zVT!~>W6(1@5(Ff8m1M@#!AeyMd&uR8NL1pfLHoyo`D=%V+V7*i1Twq#5hw1YUiypY zfnQj1Yq~ptAHpUb3k@3E*0Mt7pZv~?vwxu8Ag02GcLnk8Q$^LqsGd4faZaPtoM zd0GE8RGma3*Pa?8)cJ~eXsN5#d3D)epc5`mA?9(Orp>6?i`b9*h)(TuI1u6v3z1Jj z!FMt9cq8sI43370UWMn~#bwq&4cFmUS#UPCgk#2dFd%^}$m^ew9JXu8LYGf>Zq zF>55Mc)@Y`DD1kVH9Q$VM`pvFN1R)P+;hVMv7KV(AE4)$8GbYfjs$^sLOjTs9yG8Y z4H}6@GMJo@+p{S_Ozhq?-H0mGKl&nRs=x}}xgj1lrD>^#ft6z(k`uT)QJpOA)C^5RH+qdsvr{OypW)o6Lo-)-sjFhX zMEO`YPfCK=(!|G>;4w5Xj&?bK1N9BBSIa2K#v*Xktj>W@l!Qh6KB8j&YEe%pa8D>^ zKy*oQm~S|Am=Sx}atp^O_@hwRr69ZH zR$5z#11kE(YZxFa#M}9_JZdU8`${*9EM_lAO?RRmAEMYoX+Z*pF$^b^i4QUI?g3B_ zDK)Q{MO*aR!vL=R;o2W$h}x{3L6Bh53hdSZ=&+{Fu=VomKFD!A%$aiQN?5(hr;2C& zjs8-VH!5zJw{X+H3F&3!{|u}|BK;z>8~$*g_|ly}u5IRd5qY^({CW2g<}eELOaXcI zQ-LZ%gsF>(OKftgYl5$WK><)qxk%?8oJ4{UNWj^_IzyX+Kn7$!kzIy|zaK_fY-L(i zh$k{{MJDq9icS}e-gI%7ytPkFXh#T%$khldj&HY~Brof=-WcDA!gVAegc$+M-`1yZ3&@@=n> zg^`1>NER-X8zHxiT@$7!@n>I<(%blDbKKg1yx>ssynz{Ta(~~clj3`*hJkapoz<(p z(#&bRomV&AR`RO$2MK7G#88TWhOI!1NI()moVp70WgUSDboRRlKGk-4SE0g;o>_~f zDY*ls@4@28@WT;=h-qaqqwB-8U$icrYw_xiqCtRVXxyafH=dyFXwiFAQHlAgpNWlK zW#U`IC<(9nE!wR&_<_#Z?vj~qyEonTNsL5AC_7K8Pk>kf;)g!L{Amy+w!uol60nf5 z=FVD$Ob2G~zt@e{72=Ue*vJ)}nK~kw<)XMyrvn{o?`Cn2 zRN)AiZD!FnwwtDZ<7{Qk8)oqqnah5&t;~nvPze^I0o7N)7VIp6oZyaEb88Y-51&`7 zP;ruc>pijBLa$p|1O|74vqjE7Yxg$fk2*AMy}WFOwB|aX-VL`QUf+V8#aA7#djf;> z8gaxN7{>$gN^#T5nhKGdWk~}`-V7WS#Dxb+zN>ux>XfaQ%iR`@NVS0w$Mz}v-I$_ybJSxm-5X2?`ts^Koqj3ha-MnO=Ap-d7Usz-Q1%Dry^N zP8b+#9_J$`=QAy9zq#?-%SFUU@uxInlnG(j=FJUwCL-BrB){~Xr zdA&*4?wsB`RpOn?-9LueQ0o8qjp|egTmq_<1C2ie!ZW6>7^Iw}K>`>B`j@5;Ywm}T zfPYcLa+UfcZ(P2=7w^fg1Vj({r&VQ53>AGV6_Dk=5qkZHBBoQgoV=5g)_(u2u-5Mu z&OfxtQvIjum$Bb>0Ae(-)e0nTXEc@!ZdGF9m{aVL5*!;79>(mAEx_j=rtLEG{@~EO zvZ#^cW+_L3D5txeBja2-_Nu>SBb%f+)!7(bPUb7klOp9do0$<2aFx#^XL2}tylJ-$ zo~~66bPaJGMgh<(Kuux~yg=j}4eH1M31YSQ?}7AKY*q;VBy9T3EYm3nO3D|EridRV z`-Q6^AiLsTDkopZsdZQ;g?zKxmbd;AT{g!mYCu;%9Igqs?Gm%CKIeU9h%C{KVm4=<}tX=L~Tvu=Y%9)S#2U}c0GFPZ(X zA3y!8KNXgQ?Oo%QY2#-ED!q>%=KL0_7LtfoKRN&50$)7etUz1Nn>#~PjzmJ&z?;_a$rDxi02*zz|4l*;qyJmSx1oPdNpa_0h)w0Xh)F0C?R5JE7ir{)U{yK59jQkCS0#091zW zl}OIl{`r?*6)<$$1xEBBMQRn^qDtDYAHTDn&Eu5PP&h? zN0_fB-p=*sZ~y0T7XB>j{mbF|71ut8R@KULafaG7y`li%G=TEa3J3K|0M)O26J`&1 z)anCLW`R9v2nG{#*0B2I8Msar^tTb@Pz~bx=4;rT;>!T@d-_;TV{GLyo3RpwIVi3? zFrY+3lh0EZu6Dn6|GxB-nkS+#mFnA9r|-XQtG)Z_v$N4aVI^jPG>4)CMh%yd0H8Ya z;r%u^ow#I19SnAW_^_g={ReOUG98HDoQl9j;)hBZVvrFXPB3o>_jix9-c$mzd>`v9 zk%$iDTZG|wxUVmWv=tvN7`9J$UHfsRdF;uxJv$EU&f?Loiw9$+_v}Lb>AA_siWDeL zk(kyGFhMEdzCjl1ny!`0X-MCQHy*c_^kqor*tm{dlhb$J3HDky%PEp@U_aWIRLeBW z_F1qhmiow9p>L`cvFKuq#p|*?g+z#Ev6(}zP83LScd;4yAT0g6oAJwLr}4p#&xsg! zN&QI0v?v9eH7)=6KEF3@oK?oDi02Z;lS*$iGtaOer?c?s#ai~@F&#|;-^teJJj&H_&NXKmJ+?~onc zbe<1^+PWTlZ3a$62&nb=JqNmFdNfoIL@SX8E00dx89$5bZJBciE+?kFe0SW;;B)C3 z5-v=m@C+z46aNjTWZ@L$lkch+xU>k^9mI!Y6cnc=(bY>^n{wG<^ZS9qV_!9->`1@<(joO3a9%T; zXLVynZddV)uvCM@BgWarf{^l4qLLxyrv-Uq?BEAQa~e-~2z4C%=u63P4G{2ghnc)a zzDcF>_#L@yqbiJoCT+{=y8ipH9CN;_xxuaGlEzQ^MXR@w?VZhar-kT?-c!@a!I(Cg z>``(T$lvO+v&48kFjK-GIoC)a;MVr$j>h+jK2aw)J&CCjlKbuKK>MzwG&?&DLg_n< zq&u)a%$oEdCEv$n-6D+N0TKSRuQVgkh6M`QSCZ6pgj%ADEk6vkKG8W98}(Dy{eg6J zd3d8&DB+t`5Brww1#OPgiT-}0Q~?zuU+KnG86xB#@;CimB8CcKsY36PB$GIB%(XV(=S*jcrC3cX zXoG5kddmo#pV)MoEVNQleEz08CDQ6Fv!MsT59Rl~a=2luDkIz<5Z*0aS=PC&QmF#w zPg+S=IcOffdkrd`l8%dy2ceG4oW-8<=`Z6|yt65-|W%sMX%cvAk8x#6jJa9W@<)#I3c z7x$Q}8kmQQ&rliGkfGUPTL7r+Ul}0Q$Kx&30^)M>a2}z{N=2@>{ksATqtsjj!b>j% zq6iH8x?Yo4dakuk1**Tb9h+~Z@^>=V^l$)PwT$2fq}95xSMD)cVoBBw`EY}>;WWR% z`6|>8hq%_<30NoCAmdo0m0$K7pcodclr_bN%epC0K?bwO&Z1=oQ^lfPlJ#h^C~jwa z$4j0n70=s2nzXDV^rA=dF~S$q$nty(()(g${1z%mKUc2(}nJ8WQjdf`rumq?fX?6hH?8j-OSpC~cjEG(GqvMWCs68B z$uST&!o}b#moHn@yhed!Q))orlvI&nGE9R!!r=%&IvkkI*akWmX}1wk!9+8es!5bP zWsKkA$O}%#omLr_@P_t|;uzA4y4$S|>P6+p2>(*@Lhe@k#lDi3*&N|KCIpew?iB4{ zNb*bOrvt)AdXcPi0XS--8NGapefr40-<6dT95FdTNk+Le18`-eWQFczR4mnmw~&>l zOkU;K2@ds$rb;A)>=k~`OGZbt(l~(=x5{$CPTs|{t!a`xZmVX}-!e7pB|c$dFccI9(*Ad&=t*a6acMr5T_3tVQ@j1d}) z5yyw&sbVZD!s_h|Z{nvSQL=iGvq~*C8!$lMxmy(_FT?ciMr5}~tK<$MO)R5GNB?j! zxwCdHJA|6TrA?Il5W*A6qgJ89Y-r05a4SS_(1;9451m?@7-p zVTfi|!FtXVJVc_Z4`I$Q=DxxLOLp^m*Wgr0k6z*=Kdf}`94A`hJQz-;M zlxqjhF~4(Kz@Mt<8YXDwVxqSodOMf@i6K-fu(M=L7*G*aw3O|lELIhAl+2-K@s;Pw zY?=~bZiic9xXH~O%T?vsCIA@`8YX|CL2 zsx94T(r?>rC>03aHJkLU?%6x1d-g^dV9gz<^%c%hP=JtRuW(V^SDFTIjyX=yBW2Ab zIP}U!xN1onYJkp=`t*p5LG||?Isut~zmsn971;>mKDU#MIIn9Pk03i_BJ;OBnn$s< z$i){qoznZ>angYJDgAdZ-Kg*kEX;`hiHkkV`ioW-{kIt@W(yu zu2y@8dGR|_Q&Hj1VSm^@gooNEdF|cL_O2^$-1$$KZ_M@}yd=;^RT|CweL5i*Yku*G z3+T#vwg>{{$zTl(MCuy=CQp*!V2`fMD>0$6Xwgk4c@Ub+@;65PYRMM+)gVh82oq91~K(_Y5t%(+vDtwzYcMCt!tBoB`8_@DScA7p7!{PwY$8s(T#Q zudg+Vovi}!*rpD0BT;{EOgk1_N!PUsUWvi$J;VGv?X(+Kl{}Ad? z3etQDYHc&IJxzf{*{=(~tgSd_+eDSTIOsv#z**ietNx&R3h-`SJXC5xu68MJd^N}( zdjVQY0;>J_^&iMF5!%5>L$<$Ma_k><6jm(|Xy4d(k@khxJk|QfuJHe^~!dN5q@wQ zj8y9f8S{d6ayuX0HM;dFhlT2z9MIcu14vsvq_di$y=yyG5M0^dJKOw*S>UT2m~4Qm z!%W5JPcqpgT{)8OpiaZ>ewB3uQC;ML6+#!H+zBnt)+df2$*HxxsmEzqx>-a1ZB!Z0 z6v>rQNh^?Xk-=~8To%fBS41+jDC;04zkN>*_pPbs0Q*d-SVxfiCNQTq3;ZLp&~8k) zPYKt*UNJxvT_E=L$eU!mhI|w@q9YLh3xz@efd3y9`u~05{}DtR7Nbn0EOU{(iowlv zTFqD{rv_UPO{vL4;n;#G4Zl7HMT?qcd9Ip3;BX#g3cjGmEDx)6hDp?rHRa;ea>dq2 zjG5dLl3zaKmCS}e)q@wUUe}uEOAs&Y2&R}R@+d|3x-y)NpGexYU-&Dm-8 zBAV({4fer& zmiY@p$m!G<-aqIv4!*Y-DRaI}2WxXMX`SQ@KAcWLD!iRLk@9 zlVG-{{^V`U+R5)#d)82uo6bPL*t07@Oyceb2omc{DmOuu^wq=q6-rVZrHn&PS$z%H zbcVTV4>(zHTVac@Xg^*QqCz58=r?M2kKko3el~|2;TF3dA6$uxgc5GkrBCDMwQHS{ ztMKmlHFX(xf@984^nR0RKhrH)^#Oq2gcEmW!~-p2Mlh~_Zy)Oq)jD9BkWH*9&QK|p z3(i5@h>b!pY6yzOv)fV`d&7a46V0MaL3-Q0RnV@ma2I?-S z`VKXXYof-ugjejMmX&-(+L3%9bgtgl*l3QX6ZR-ok#{a`@C+rn=C~^(gLkEYkbGaz z$%|*;L)4THMvPWzY;ve;re|ICLf=0@?=V6I?(AETt2!F! z2GyB$0%DyhZpobquESQ<_jUqx?yf1v*yR#D=4_zq{@Y9#n`NEgU;afHh45Y)I86Ld zKs}ey6veMVZn_p4X0507VS&uMdl4TdDd++a`O$h%U@QL@l@HgZ0lDe)i_0yuE_BJN zRafe{w_7>8d(0DhB~Z#*mZj#UT@J756r7yvq-iX$0Fy;V1kh5rXsnc*ryY!tUXIp} zTqPt9gX1;|t*wvbvB?P9ocg!l60i78i;fP?C-+6&0^OG7YYzXM<0IvB?m!AO;P&W* z5e+1KE_Ns&9EzEGRY?z2;~xX63cU=NmTTRh>3lh!DUU^LWMFkO!oHl@m#TEQKo{XT zkPg2QP?kcBp%2R|IA{Ig2^*H4Sj5sG@Y)&f-KGcVPic|zI#`Yu@0BvMxG`4p>+Ux^ zlGmk`_`3x&lphA@2&h2>QuQX0n9#eZG&~Hqgqo84c;_$itSnDKPC1Fn4Jizb46J-= zB@C9Sq-@Ii^3wQ}HXm3Fnn|LHc)~edfgHY6?LXE)hHQ5#p>_o6F8CVlao9%=Sv5#vI9wbIupq+s zG$S;b`s|vQWR~U3&K|2_$9(L?=k4AM^U)S`|sgP*;jm<Ss8)<6?J@1T`Tvw}4{q4K142nP@?d3y_(uHFkfY4+yEg+kt6j45DaV*X>z zsW*h@8NHbt%(L-(3srm#^76-gO3uXC<0;AsJ~R{OV9JQ=O>VEtZHhm8Pu$L=z7%*t zRI70qkveIU4H6>)d8SW56!0T7(=%C*yK>S#d6!A^eit_tZ3JG_4Uu`i!(+zlN(UyW zT)}P1{(Zt<&>81iS2ytZyb~bJ|M>yhouRg@d}DS?nCn(*EmUbokoRjw>5;_0Z%~!k zgFe|0_Khk$PGHWu)<5#+_= zSlTWtUd>Kn{d-gK+fFLAnPi^lPBjUX!Hub@P_z^BER47aWT8o_;m^2DYgyaZy>`Y=6eQ$wT0I{93o$ZPgwN#vNc2_Bma zCxz4s3yvU`gtxM3)Umc>qpo^Cp16vIm>f&}D7Z0Bb2-qb;KRL>B{H0DO7bc zA%!32Cq6tfY4IgxRmO-uc~4H~KNvD#Wn zVVqu--Pt2IziuUS5Q)HRAw;k!?E%zjCcsR#64lqA?;Aw!qdj?{|q3Fa=-28jTGOCA6?Sz3XuS~3Col4gpT_7B~`_5lzh znv^NSz=3%>>Ml5b-+}QWmLw3@$o|11TLk>a$fS0nWGpw*la1mHgF>QH@9gU+;Gs$L zpb29zN|P)=5J9@(KGit&apR9hWcIn8EzJ0m)0Ix$+(i0mU>t($V~rv^SC zpxL-08+q(9L)EZg`ed*q75J5(YBwq_#Q=|UgNKZi$>~6mvm;=N{CHVaGwnbv7vWKfWZ>i6>R{sv5UCA&AX(I$&X@ zq!^nU{>XHgK23&mPjOy5tD?^ICM;r20%UYC<5QZ5(Xc@GDo{2H0A^vA%JSbJva)0& z8afk<w28(X;NL$&!D!<3x z>rIocMfXq&dAaovGXDaA8^~7ZDBvyUYUk#8j2^_9ya5e!8 zj%kx-10ncWxfLTXlXQ7jJExP{2~VoZjZ2&X(r=G0vOgs)E+!y&5YLM>(#A>i6{;2~ zit10ZZwXS>Nk(TExx~A_HO@*C$PSK|w#jGvKy2W1N8NSj;yv2FJwoP}$IE zn`eYCjsPOkz#}nI@+)ArHEIxj@*^L7va2n#QycBwbq3X`N^4JxbQjG~Wgi%s@i|wT zoc%tMsjCDMpftl4G}z~MX2T*rvnrZ&h&#dPi=c&iv6St+13I~7E(R8j@43T3n0>EkWk%-Hy53T4B5?<6$u_p}Hy6lGX3~lYwAL+-t^;1!0OjISE zgDqBywKJ+V%MD1Nf>B~e7{q}=bEh}=f3iGEhJ3AWoc88MZ8a)0!EII&hE!F*5QugsE1J*WX~Uy^t)Vt(} zNrpr+X}w3`^14`<&;=KvXsmNsn=;!QW&V$X${)h!bH~n(W_c5ge6S%~Yrq2@p7>0+ zm8euN9&ku-dXg;E6AwMVf{P+S(GpM#N>N?j2~@nXK2tys3bi0bcvE5dcvK_ls;OT6 zpB&T+EJm>&GrJ-=g)i?nvn*qA6jP?yUS{G@&;vX=K|zn)8KI%? zwxINk#IMJ)ERoO86VGzUuD9AF2zYBAwyT$obej0lcMNsB@*2m^X z6;?pMmLZ5suqzC>H|u}U#RLE%h4~_vaZgPh-Gnvex6F$Xfya&_5BTOCrx0GduoNn) zl7uS$RCf^oBLb8;l<#{dOCdjtIL@m@fS|#7kKC0g=H9@k6b2{`Jw-Q}qA+en+`}LdGNbPus$8a z&d>&5=4d1%**l7%Oax2-*~s9CoV+>4;Cw?wbsjM|60oqiZEz$OB@5EQ5#^X;*jxsp zpN^t*hbV*~FOq;VhAlz$PzL}kBOGF?QS{?&cLo6A9@(?FhxYjGXNW0w4ZSMx2-!(k zWUH1q+En7uR6iBLmY7eDV0oxOU7Eq_vE)cHR1+@-(-GAU39t^B(Z@bZqHyGskt-9( z#^L`O0rx7YsE1_!H*EhD!1)G`nPZ`v7#x)ZbSRq`T@ign!-OWkdl`u7hCFFIhUsS@ z{K@~ZY1c3o%xwkY7#WmhUiSk7bt5aA2o)Rw9QPbnS;HR@kvcOZ z)Oi3zn|#Zt6BsZEy+ng+O~M1{oeGpkW3`Y>z1cEJDzYx z>|*b9Y(>^^DXd}l>2lA(TxjkuKWSWFXlRBvFmz>^y0Sy2!NUj(MC@lW09uv^OJX7z zwsG3__2-XnKJHt5_V#)9tq4l$eGXouRUG?$675YogLK;g$*_RvVxYtd_&gS#x1th- zMVK<_KOHWN`>I(CL&;QlF5PyDj9I6wa&r5>2I&09KokFMao^ecMd$iW0v@ek&mVD} zeae5%$#9Ln{k(uHQC(-jfReF->|k=t--i!7Jn|i`13X?n6h>G7!-6gAJ#1gU%0rD% zZ87KW_31C|GWS#0_Y*}io7t!Y!Y$97+k$kO4;B&0R7+;T9$0`##J#gTI2+n#4Fx@q z#jKNl;8r-v`crJ$cn-iN0pZ*ubNyici0tG)fBa|E(?94Mt_W_f`!|1vjr`=h$+dAr zLys^KrKGEDBbY6c42vkbL@p%_EK^>la`-OJwwklJFY?g%Y+{Pa63p@#z{!|A zbm_~35)nBPzC(lPTXldp9)%0JD?-#Y-e1E@$vMckFsy8$c#Bs0K#6jN_Suc)kv1x` zvL|RM<1(+n`D%l>{hiG=y5oOFwa9!J?!YlDJ>jsCBewKw*htJ2onxqB7F+Alhg}86 z+PYhHcBLq^5qd{&Bk%JYwNY(_I=n5mU*J4#zs@7$zWy!o2Hw0E{a?3&>y37PK`CvA z;9=rw8n0R2o$`Z~EA?f!v_;))Dxb7>x88jE_TSGz(lZ$=eV)1*) za$*`TzbAzON{q=;ZzeSbF{Q2p%q7|lfOBmx&5UI!2&*-Kh(DGnNB6=eTS5mCgHvGT zq1SdTsxCzYareCqHn34x*>UPf35$+}>$)6+?%_5eg$^Y?jPNJIvO&>u66c3n03t7M z23X(~U-G!%Jsz|}JJJ=)zRGLt^R}m)=h?ErNAlg{ME_q{Oyf``12ntrDYsw{@i799n)UD>$Y50=;vAcwXwyU|cW&OQGQbjG84T@&} ztn!)CWoO%QIUe|so2zlN-XD5+mI9IzEXqSW#@kXz+Trd54G!;^s({+ZTIE3z;p2KL z5e#6K;hr9LZq$4@7la7?Tuf02^!Noya0 z`9+o$$OuIStJPyhWqbhP3Zf@ZDv-zBuZSnWHt&#|xOn2MsX&h?qBaLI}{w=IJCHa9*WC626=&8#`2zNFXkr{`KCjUm_1 zm$kURV_KN3XpVhgNAABcCzTjM7~cV#^XnrP<2FC=_v&VoeaLVP#!pR#-i<9y=2 z{Zc|{L2qsI_9T+?>O?=TNNE4j&>IkH7kzRRb*YI@iX`8ZJr%J{}qtlvZ`$sSF!>?k4&QcRFv(zjywz-m8}D z3CpOPin@73Q0iEOg|a`F#?9p?2+7(tM+t$tH>ywPo1Zmssxtf2mCnuQvX-1w#%M^( zxK^FBLy>;!X(h`$LaoY);MQ@}!q||PJ-3#d-pwR)-LD#2Nx`?N)mz?t4<)qw2G> z0y#KOH)D}6Zj1d>j`)`s=-lfbV|G7r^2lu^&`_y>B+#+@;LgFzZL1fQ7YAB!%%rX1p!PQzVQaKmk(+vbpkStU=0EnLf^ z%6=0j#QuCf@BAa+y1Z(t&LEiE*!yU$xo_ZeTh~t0Nf+hCnlIP8xnIb<9Tz-a;6F+d z@1TnEnFMBs7YMz~YY-Ii<>D7(cb>1}LKI`r3froo33{4csn$}}Wza7-au!{vAsZQt3=Gu)l z*?oRNTaWFhfq=Lt8nhbr{vQ?Pc5ng5`9}33@n_)YzzXa2#%C@(vKV3%#AsPa+5aR@ zon1IQzXC8nX3)iFhdjrZqPgv)Cm9v>a4yfE-7sTAs6@^vM0ea6f)@(q%OCMSrKelP12Y{mH&2Gd50pNxbK zjUF5fA$1@Nk$1k@RJ(aWKJzHn2`hdy=@8fLJd?uHIrz}qyL4|B9@csy5p+Rpg(sD&X+Ve1&~*QW1Uz%jMBOsJ)VMoSuS|KPiDQ{Th^l zeV@DcJ4IXGnBd%c^tG$rf&{I7rC&7oFt12Zq*AO`p8s9*Se;4zS|P5RsXU_~uB1LJ z145Rs@%_iF=%^8f2M@-1K8VK}&1`3|C{WX3uWH^tpsslJ}+ru5XEXGXif`;mep4uI-9it508t6(cNIBPnX zJ{>U4eMH~yq?3^5?*-zvDiQ#hr>9|~|A(Y|@n^#E{s+E`&CG4sm}}-bceynsZF9fR z{SumMuDK+)RJ*v$HOehib04{fRH~UvM3N**g(OsxYIq*Poi*zqI&=Y8}Lw<%HA=}SnF@qxY2vE zQd_hq<(fnkspOPN`ctrli_EaIfJJ%Lm>S8&J`1<`dX|`ii7Qc#{}VZvc-r%uyQaC{70Q3;?*T(6B`pDuWyRV+gY-+{YDQ z0T756?0wS%PMR{~Zu#By8sYo!Po(2dj}1HVn3))kDp}L|P2kdNK+K$d{CaMcS^mO) zX28^u7YonZ)6EyKE|`-Fe@tAiMvaHeJ=O21DmR%FB|Gww7_e9hoI%ktq)Opws%VgO zGD+XUmECQ3_=}0Co3ssGI}HECZ@Sl0H(kuo!sMx|3XWFh`*_I!t}g2+JqMhOO8108 z<^a>g{Y;sGqHwQFGxMQ^sb_zy+#c%U-wn)ImeZuT;xm~F$0JBTr*%*;=-jjnIsH^& zX5=VchU>z{lBi_THRPay@9eXh(J9Z`LYo6| zUB~+^R2>``UkIs0n8*x>M6`NbjS|W5%8C9udcnI!Q4qy>A#w^2zOg=Y{_V8$If`@0 zE9Vl53^&>|C3P;DE&-!v3)+kKjc=PhFY&jt2oq^yjnt+NoRWPS`&k?;PzY97U!@){p?cV8;om3Rln-t;+ z<-XMU6etA%LjyH%8If~P`$C$;|EZ*+2*%m#z(jj5L-Sj=$a1;VOiNfs!AY*HIH$7) z%GhGd^-X__;3M(&)I7SuBIITNp z1UsR-!_h0YdHHvGb?1#{J^+gF6psB{2j!=@fue5g7HF!HA)wo)pe0z??T(j<^M z8Imhw5Jw?m`d2 zdm+c#0LWONL?Kmf@fxCPvimM>l`7L}HkuAG6Kn-Q1zowo<*2;-#@}fu`;@SdFLdq{ z6-Sj#rjw>JW+wPz`bFNMU~@zH)%tKWu)8(c0PXT#2E3Rb47|vhV@@owkLQCdU!i*bmQUE#hE#DR(a1|)IXqW53Ff8tr56ql8?xmaHbwSYnGB#Wg z7r?g{lBMknOQsCCGb&2}^XGtyc)F{XNpA}vN!#068E!d|FF^hiH*7AeFh+Zvxts z9^fcF@SH+WQ~34200}&ZfM5{x z@qc)D#rck2`Vn5U8(v5LGUD-3Igi&5h7^YZ57$#x)7Q92XVbqB2$sUVCVuwrBkp0$ zoO`t7C@}sbP!4UOj(2LctK>VHbCttem; z3^xmSM+rmD0jVsY0t*ly4chk0z@#Xrh%^zzM~$}d-(JM$Gyv`2ZP@s)8LdW$On&Yc z^5wok<+-`+y_QHl#5}X;1^H=yE1PW+#C`6S;k}p!4LlZnM ze|RCz;4j>P&jF=I?c{JEbzL6M4#V(q)aeEpA@eyn%<&3rQkF%PVNk73oWYbOKFj=Y z*lH8j7wbF>5T2tN-l>V|aPVuCy2;Xr2zF?l7p%5Ue!IwjZCmglkT=Ky&xJsNAu)-& zT-_>ci65VEOMLs;=10p{8$2T1;!djad#VjDO=VBAdrtY}@vMM3`k4>?=Wc=&b!m!Q zz^@k62+y!uuY{F{Ng|=1+8OHz7SLd8Wxu%<_ueo$GYT5)a4hL$?bdwnxjo5sDJr&$ zG)I%7Fa)tX0?7$&$IqJ|e0g>w#z-YaVo816d7wE{3hT(M*#SLw+sL(|o#J&2N6bf(H%2t@L z<||F*>uqfd`1@WL{?FbnuJFtCyK$kO4E`w!(i(Umj9q}T(kzqCdp_HGc;nAdW4NL` zt^W~E2#c@jthVR}&NJ}cBJkb8SMSi)z{{7oL>mQM9`maq?as}l*$e=6gd#YX=0{;e z8l+e^vjUF%eepPOPV=wvr=Pta+b{QvM83?h0Kjzgh;FQoYH|j@9H~w|4nYK`qlBp)0lR3@PMc}>P3A3{R` z7t3Uu^9ahx2S;=+rt?etSIzfCN#jzs;mxj(+i1tn!#>$mS?y}h(@wpZ{NodQV-Efs zKG}0bxT-s3(2MU%pxF>FP1-1Z3tzJ|cmNkfAWeL#mt7jf4Db)|%RvL;_(T9Tu=ylp zO7v7j?R;H>z4piiG|KhadH|$=HX{r*^`lwzUXJoveAh* z`nzi@FW3JmeQWgKp?G*v+%g#=sOZvNNF}C2VZy<7niRM1F8PwG=dGz77Wq%Dx)-H9 z+c>yy);p8OmXQV-4iEz71;Vtufsp$7@NRh!YSClB0v5tUfQs#u(vZclJC2^)9g3Ha zjx~kJ+ zq@j`l1Hok}Ga$k8mlP|#15}v)ByQ6UPd@&wPjM3I3WzfovyG)@h+3nU?PrmW|8ygVRvKwBEF4iQ zQ?Da8zK2(4SgRGjN#Ju>tVC66UVT}oQV}NZ$qhDWXP<1n?FjkYU%s6E^MprmFqkI}58qYVH^J42U)iA$U0({9)tlfOHD5JL4f)3W1wt1}Kbbq72 zd?A0Y02Kilj1tvF@-(J;6R>$qRj|`;%B|=t0qay=6jQfC0RJU!qI^WbpzD}o?jS_M za)+EQsz;!j(~XA!k?CnyjxPnd2g0bSd4sD!!GJ1-$@_+{t!0T@MsS@eyo7`kNtwqODB@&5phG?`k%^ddD=a;OD7XPeZN|uux?iy zR{QWEu^PRh+Zm<+lTz;hOSmn%mo>e$K*v_X7b0x$pM5ef@T2)pY)kTM>|;bO!U!048?;sbS9O2HH?)Qzk>B1$4m z&s+&hu7&$75(SgV>FT%vM>901+lPEpFueV6{@tg={hn0G|E=a3bd^9%e*L+64Xe-a zY`8-E&GR(_sKjAA<>N-OxwZS(9KmbH|Fw;$nl z9xiVJf&m%&{WR3X)X3=c&_Ghv2gx}sL-QRBQiKM=U049o#APNo!(w)MVD^v*1xXOE z1B&#qV?dpJ9=P@*H6MxWWCp^)rwg>@_4wEa;IqBfn5?Qw=YoI0QksFfblwxF#EpQZ1zy8f+Bf(Zx#7R8s!Wa46 zf`8S*_bG!nS3q1<6+=SyCLGTRSTmGZq>Pa=J+a)AMkx$`=-$C{`6pf1uE{0AVEJ14 z(PRtV$tfs8XaZ)5r-@0qA*80{p+fUwLF5Qz#e7s!kOfr?>P$7MB1%kKHy$lWeDdU+ zqg;t^mI-$Y#mzi6m9((K-@2d3UbEKTCG*xA4GY~54w9^afkmObcIoEncSJ_nW`=l> z6pkSD&_44>_jA$U2ZPdwv_>^NzURQ1O9JFY5Q4$BSNg){oo>dLxfB}xbgNTvjUeAV z^8x@hr|?+AAX=s(a1VhXsny_OoRQto6ji8cGo9CD!C2~StRus+`?=8d%zJ(E!LC;n z_;C%G978V*ZyB|oqy(tsPy3;3(81xh)-=G)&7=>c?fs8W#tDTj^nj+%#X)u{S^8B# zxCsj{n5a7k-(xEtP6qM?kKD-a?f^lt4A6)z4YN`$e~dF-G=6|9jxGiYU+B229Z)oGDzfbpyQLr!Sx7XvztV#&Z-jD7(XnaH zLP-Lzht9ex8hDw!UAIj_-2(6^?8ZWMs#Zs=LE_1t>iz=5h1j=8@n98zg84>`{GeB6 z?7cw6SVqv<@4CFvUf1d#v{mLq7a0b!p^cA4NZ@%}~+&CPZ!5 z)QA65u09$wy$2nAv@}4t>E#_Be+IH~^ex<60+YqE(E9(J z2RDlWJQMM1QlkX)9zM7Ey41_T>;lDC&LMGWgDC)^tX4&TM5-I*v;UE|<@_LFkllXM z4Ryw_);q0$&n&Il?@=a;0SyP`W3tlr;)gZZf!W>t@>yYKg!1RPo_!#ZWagNNs0UCS zxuu6?m4ds&Rv-p|Do19N=7EoA;mu$A#%C_QDzSN!-x2xuv!500)tz@jL5&x`*qvAR zHFErN=IO&ZR|iK$9o3;Ubl4O|T7@_-BY-PVu?lmz&z*v;G| zzrYChDCp)dyj&PZ?F+{s_^|=Q?6>UGI$XIQ3mh&8o^`O=cyMU{TEXA>o9k0_V>bO- zJM>ej-l`tdAd)?;U-Jt}NS2cIhaugtui+Sdm+2w(^pH@LU z0Pi$i#a6uZ!>K3=L0%K2JmaZ`;rS@@G(QUNrJHZOK!)_4+W5Gb&`p>3pzIe7?pON@ zC;A~?!yYglMTJg6WU56imqp==31QP=VWcfB&l+mwyO%H3kvxlp!NY1~sNjpk%7?}u zfHdyW)cc6KN_3-Sd+rZovQO$?k-#y8R{J6QJJpoGOPGJW`1#sxJ-q+hM@2BB_IWJ;~O=02pI44{5wtK#|@TqzVMs)fy1~Q zXdyUEsg6*PiP;P$AcBSCz=z{ysjY*abAuwb=?4Uv0^jM)`Xck#z`K}q^%fc8M0swU zqF(HZkvdaSKhC?39S%>f}M7Q39yhm zd%+N-(!OEcJYmH}s?yZ@851s=V$ z12>y{L$<6r=wT-l%H-dc;e@ITlR^(1TiJLKbjp_J$i!;c%<8G>P>9>0f4rIDmI@Kj zAPhohPn3=j77|D@-o7hcXgjOxihd1MPp%bU&_qRCMXk3oF15}tqw?ML<%$(ElVa`` z*X}VP%cEPxL;xJM%So71IR&qe@t{XS5xsM$vI zeU)5so?H+(`XBeHf@7qVUTK-#8h%G1RvD<&KU^3L&oMJjo(O`P)nHU5n-1LF+hmS} zF4cVXBPjXQT&Ekgj2(v+JschO?Vk0;^LpG}jHFrWyP0VNRAV?{hHO^uKNa2Xri#r_ zLN_SCAzY)I2$^fT&Iu!Io`#qV8g{=ngNKO{gI=e|MM(1Z7V&NW4A(`bE1N`M+qm)< zk31fWdkCTjHYdg_8nmFLn#PhhSiTcC&PA=8c+Kmu2aimd9WfZp-c-Q?=&BQI7sSmg zZMh&xc-6fy4J?ftZbi9K6o$epRvXl?gL4+V!$4+dQL{_VunEkW|03N8ec2ETe(z1g zcyWHD*Qk4er20Yfqa3%y4`KZrE5e|Wsi)lx{g`i4!DNP8(}AqHoQk`#6MG|k-9r>B2M`QCDrTFm+YUWSC3bAEMR`8U*neSrun$o{+6iFl zn3)&JmjaJ?+&mgvSgw;t*O4FEe#_CYR}b-7bVorJfpTsXd;8jx^4Q<>OsW%YCB&!1>T~~H9u!kLD*RE@r5=M3#%`(4UZe% zcErWqSz~w!XsM$vKUX)?np*h2{Z#@dzi8afdz*8Z^fBG1n#VG{@!p^ZzNBC1&Fik~ ze)hKPP9nsYBOOZ+cf*UB1I5g#T!3@Kg97hpwNu8*{AijFr z)*m%o8GiVUdcElb@u=`D`AV7^a!3x%kyL8`J{bjBAVOs5IQcejj~Vt%Ju*g zMe7j_!xh)Mm~F8S(Fa+Go&xQ3j)IrA_99KsU}ML0qxK=kVvKWmuhM*PJE0%MH9wc% z(dT=9y!NlUY?_6$AJpBWaY<8bzn+3jjF2mkXrd?Psz;QMf~0A+-Pn}jiB$cxp}Ye! z78o?_zxsmpvEsO5ylHn;%6jaYh29=b2Ww{fil~SNZ7)+7GdWr^W_mjY#04!JNPnCF z)@MwNBF}cH>2^jpeYz{#><;+of!8VrVfO|wu^3q_MM!QgUAi-{UpzaD25!IjW;A ziQCtSuMP$WhUJD+zHHj2KkSQT|1{8;0a5gI|dilAx$ zTJj^R`f`*FXc}(p5YLZ0j_Q6W9_@o^gBAL6CL~ZUz(DjQ<#mQ$ko!yBbAKFI>73`I4W*z z6KSH`qI4*K&PzLw$wFeYuXvA4xDNnKH5Z*HPN>^4(#@ zdeOGK$Ah_WI!MtCFVjzz7%D&414PSzJJjD>_Z29G$A%P~beAJyeK;BmwDW^WB1EOL zKQ;yAvT~xHsI6NV6jvCg^_ct84)yN}z5vQ4gJc0wXD(ZQ(d)C3h-;$}^-aJT5*;4+ zd-Nui$mbd6U8QR0aa9f|Z}#1YM*~MHFu{>YkcsU>Luh#cV)X|Cwl`5)hF0Bl07cDCc=SDE_6{lxWNF5hzdf~FASNCvs@ZhsBt0qVc!EN(SO!uLMtsA^ihw9El7*v~F>b>@3{(&oc0=oW69ZNF7v&KtXIo%=C>Y67#0?OOq z4+F1r&NX{LavQ|`wtswbf*7G#2~F~ubr!kG?QVUXRbiHY$31VizNr;X$Y7?!izeMA zgLHmgk2&aMFr>y@tLyfWXEml5R6a((=wTJfyEgc~Z9ez;U|v7!N%6Jr;86wduJ#+@ zKcMY2lawE;>$hLcteBoZJMUh8L}CH|=nZ_f8`nZJJJq7z@jAG(rpb4Qv7|N4JM{kjiqxF8`>SK) z*t&_c9rBf#cgHZfX*Mmiy$J8RPCLX{jG|N5ngV>>#b;UX%IauM2^BBI950a zQs%UAYpup^YX7I8{y&lu|K&DV4NbWeQ7f$J(^RW$nGm8>?BtblWdI^ULwooozk>w& zCC<;*y)@vlx*lHwKe8_L;w_zDTOHpin2V0C6S?}N6Lurb{)s9%sVlqDck5rAZCj07 z56rOVm2}?e+_1Q3Whc#=Lr8AR74KYi-VJfcimqzvYfkXuSJHRy~d04Dk`!+ zJSaWTF@xFSI*@=Gk?KWhZ3TC#zfvRU4m(4K(G7JZ}=rRO5Y=AsBtGqCVe2OXB10FVL;I>?{t@u zb)G*S=`h!hW$EvL%f~Ilgc4f@lezmJt6Ok|e82tWjFyy_0@2CntGaM~G><7uN!r@%s?{KrlYC+N;PPSCFKwLk!ZN8H? z>!N3WqNEM)6?<%Y^eXpxE6Fw(RiEXCf+T$~yZaM~K>HZsxS{d%Ph zX@dj}3Y6-xSVl*i|G_?gw3ilmxMxwpN<$Y$fN>0~5l!7^YOZn_;$uI`M^sh-P=h|A z+-5I2Mw{4Mw%R{t>j#(pBUjpmZDSo-O~`6?z~gJMHt_wz6v4`amqCvnk)*&oE?U;#83KVW)4Bh&Z5jE`tWAPcc-#FdCZJ^SQZe80XTP}A^dTl zgKSvT_AMSvZXhZh+leEFvx1Cn*79Aww=n{r;$RFGmM4&|%DDywo?-5{ET17-;N)u1 zxoDy@*&C?4Fd*QsYesw?%WJ&lfB+lvz27R;$j?X+N!j{r$!a{0kIIjURq^DX)}I+x zGw8f)0Vr0WdNrwzpXVdUAn(P@(fn`mKUXTR<0F-~Nr?W28tf5-!f3eA=Lw5Nnn==U2xQWSdUU^J*mQO?p_AmP zfWYuMB-6}porL&2#GK$3VoF}z8-x!HJcwhM$!?Q)ORpRiHignr-SRSzwx24{JD7IE zxVtk4dD=QJ$dLB!)NG%GTA8^up7KW|syYROe9fJQBH|dcv}&=QDX0nQ2&caVY(^RA zz@_Pxhx8SlCd;<9HtY-!4XJjde64#=x-g}`pZqR*7$l*6A>GE4$yfUDKTW#fH+VmA z2K+2c=ATs7u_%leuRD(T>3EFB+RTGXJq(E8_}waOUDzE=PCFzn^MMDs;2qmi=V&Ky zuKB{zvO-5iS~V(4fUc!boOS*35d*gTiuk#>5153$#urmd`mBF&jdhZNiKdyRO zMD-c^CQ1D9oCvgy5t~wfkd0~$YxwkXk>p9NYnlYh?Q^wCd0KrnGhF7t%i@>!Et?r1 zss!&R0d;k^>|*&0eb&o%!fqIL`ReB?uXHTfdql0!oBsrbTJ;HOqTe!5WvNMP#J&f6 z(~9!q_h_sJE(K;2+%oVJ8kXG_-%NQX@-oN@GR*eKE!z|7WSlrm56@-km%^~-A@abunP zDy?2R0J>Q<7YO|y)JcJ*GO=M!y9_*^Iv`@f7B@wz-c@g(djh}s3|=z{qcA~vc)mhB zUo&~x;7NOC6v9%|G%z4fUdb?lChiDSjSUd79}pf5k7$4jZ!y`L3h3CS6?K4gJVLq! z6Zx8G)DQu?`bkA0OIM}gxMTGhlO~YY6YrgdEX0x!VjxCI_nuG8;u?A5UhIe_2dYky z&>%y*+IY`!yC0t_Ot8`a*_N`#`TOPhd$#yirxZ32d z@p+dbs6iL=Rx|^J3;8TZfO7C};@VV6cDu|nMh-oeT(BxPPk7X_2Geg0?1&ki{nU=Y zltG&hrXqg&JA>w*d}gx+&~W}{ZD0yn0@Wd*6%P$v&O_0^ot`d==bu-S~9g z|H7II4D$c+nQU+mzPePn3=|*&3Se4B1}BZQ(B@#y*I+J0=P zFGV|=shhOO$BI1sl+1t8zBYNS(3QgaqIfm*7UOcnr^Hs1L0C(wvp83YtOwoGa$Ovn~Jix=N ziunJC0xvl0eCyiP)&m}tT!nv?!m!=ox06b}h@WDWwU&PdkBw*&`EPz#(g5h5Za?b0<0#ev+AfAAb{?&~Dsf8Q(#Ak1h0M!X zRPyTrUzeY4ixocD@Hi79(j7Gvbv4F-Dw=98L;iUDmx@$DwYdFKB`MC(^J*o+LBpOv zXrW>nAU~$)#I69zwACxyS)Cv|p?x6%?pM?#vciv;_Y5ZK<&1(-j+e5Y#93$M(|ObO zL}0j%@r5GYgOGOJNW8L*-mfhLf6F2|)~xX+m`0Os}$jVwZ!TEltMz0*NH^OUo#59PQlp}#cU?DfKB2?rAx@pZzJ{+G#}n$ zh%#9*UYI~@c)d!b>rlXPy&sr+VWFl3$%p~mnyZHWc()fpQi!g5ahH%-?Whziq4L7R zJAyeSPn^$qzpCyP5~FYsuRxWT`qdib5E$$}9ceRb*nB3)xmz)tqV&K+$N>cJU~`4i zlLvR?P2Mj~X*vp#dFm<(t%ES)Ib#aMD2cA6(+`SR=^7Ue22g-%F)0Gd{xi;(aH=)? zFPTMTsCb+g`s1sPbc2^&WbIXSf-Sm~sXy=KG0**p7HW?~|N45*w>I%`D<9S&`n+eN zRoDBKVzh&T@Ow7j&J(zA)Z%tdR-O$vr84A571=LDWdc)?Nw%2*b`Roi{{D_U@+zXc z5$95ZGOyK*Skq18A)ll_+k93I(un+f22**MUxV$CQU)`1;UjG;S%@ZuPw;9+Q?!Um z7p(m~RD8TgB~pBLW>33i{0kvEC*F?y-m83*DKv(FqaEQBZ1|M67vhZ7iRK4TYA2Q|x}lOf zfK^bJ_n9)Jcz_qG(osgPo(Uh-N4|@0lBf2cTiNfqUmQ<~-$TYTV%*@Z7hw!~xujvj zN>rX?<7bEaefJh-4E4Noa*3sZYPr?U^UX~2%{$-+0F&oJn-%S2*nmyb0R8t?abih1 zi;W;GM%;+X6?ctxhw{ZSCv*sD#!x#1rf1diOmHCb{ZQdj(6ys#7Z1)Wd+k$N=OX^x z`>fSTUQtiE$DNL!ni%PtQ|f2u$ikHlKg|hhx>qNnY;m`;XOY-L#+}MrLJBRp6dS=&DHg$kND5CQEH+2z(}28z@uNyTy`8kEo44ocgI zq@P=N2^T!yr&{LKj-9ie@4toV#J{K+*Lpx%;uM(O%Du-vgE^3P;m1mjly*w$%ruzA zhAugdtwatXjD+`5ote90bIC&uv-#=8Ibj5d@{rX>ypR;8Y?5sCSrM6UaBogDO?G){xpR%-mSD2&=xd-OhR&?2$Cx4!{&7!xYnis#gZ`r%@Mkeurvj zm)>E-sMBgC1p5ZZUzj#v9_6;54`~fO*$OGFh7*gRZZ`WNbgHR>0_Q@RU2>oXI&yZ%t9k=K#O*tk7* zy}uy&w^H#J{1*CR}2+$oMF@}VXdbWuFO)c{x>*d_jMO{lahQ?!$5%Hlhiy6L~r z?VvDnV1M|@tqWcok5lu;gf?on*>Q8KWiq*JvHZse&)8GN0sy`0vtY^g+XXPK}H0iBL*ajff8*sOy-(y z;dp!T%evJk5cD(%^tdxQBzC?~Q0f_8P>-l|2#c>9wxCXYqWc}I=j z%&nt?H<#N|vcL3aChkQ2DzUg6iv4^@%(JUe$#&wTXHDw6i3^hZi!Huy!!K0F&3+P+ z2@yd6b9P>MynFoQZfXw4H&6~#uB}}krqxlZd7Ik5^SV)``eV5+E$GSTEM(O%&-4R% z)7tX$08ICt@#oVe0(HN$F6F7!DMebpe>ZW8D=3-@{1#P|yfQ%B2@_`H`F9sRaG940 zENRA#QUpc>qTaRnuPl=~q$ZY{ZrSpoHn6}>)8@t#$pF&|=@@%psMP6t*546`t?B+%hH}s>K21_;d zoO+AC%yWYw@VskBdc+?9l~~Rhq+Fi}_`$hC)Gb%I@bq*BB7m4~;Qgx^FNS^UgyI<+ zQ)GQq$UtG;lkbLyvmD?KT2IgNPRM4I@$k7|*FNzAU))HHCyZ5kdKDKp zx!P*-%k}5}UFVcklM62X^OSJ#zFF)&7{wSb`w6csha1{UTDzk5qb|BG+28QF-!fcR zH%3Yj$?ze-Bf|h;3ZuuS_>j74eK^ zMuYt;H>^fT@~iau`q^T8J|VhmlrS^|uHC~0K&4S>189x69WMNesD*$lYCZixs6yj@ z@q{)?;3|nGHXHm(tsA>iVc)&CJr;3_mZCxgLSGi2dxb%|$Jmy zNynAfoN^FszV3H;(o5nTY+Y})tmQbP&a$k3IvayhGq8X-2z=nTPU>H>x}4&cnW;9L zc012_+>O1a&G#$Ak8oVFo8j9b$%ACJ{O0z!q&g(q+Fu`=nR3-R99Tj`FK2k#jU6v* zp}RPEdiDVPk6>sc%O4MFZiF=4)woiYK(kV9OPC&!AlW}p7eOtGT0^L$UX->sAs|O* z(2Xqg2vOx%nf1luhe}=*xtByEJd+#=cShyM zwCYveG+y*)32#TALpxxbXZt5xn*EXnoi39bhct6Zk2@a3c6Gg+b9w_Z|wL**r_C!8vn zLpNQ1bTl56k3?kzdbco$nlFYfqqe^fN~!}gjTWmV?x0@tdEUVP;ip8KxYy?(ous z8LzG9@z0OHpMoNJN;*Rf`2r$g(}>xjcJYQiu-u!eOgr)i6e?^Gv(uNg6HCDOOwnXk z3MKJ?Mv+{Yh2G+TX|kKVWDhq_Jkn@jpU46|NU_!U>0;^YZN)X_uHfUhS#zW2`I#pb z+kVd$zO*P*)BT>;nvlV~7B)_zp07QAiI)4zms5Uf5yYK*Qau*~j;ryc+xC$%)T;;w zLJQ{h@qkXoj^GEm?~86)U$(MTN0Iz7ed)`q29LbfEier>`QhTu&!&sxDMwvK?S1s+ zndDrxkZl`6+IJRPx6bp==UEDoP)@O7g>>DMcN^fjV&}VDAe|9#_e=m^hJCQGx^tfR zBn5hzt4N;SS_|M=;!kd&%RONMu>Ynq;M`hu2VFB+?IM^f*2boHNv+H@tT1!0SS4?{ z;ww_B_FC||Cx}`YZw4ewgRcW`)9V-M7lQc<*=S;_f;i7&}FrjutH5|{?Oi~ zg38ErnMqxj%TK6n=ib`edWjUodJR@x8YLptx9CbHRH4l4twF#{zG|Me0G)#-aTD1; z9bi#qEWtU91mdagJ!e=D797zlR9bx(Td2azSJi1NHdSlH0^O1td9u%j=3A(C! z+Ac^7{JQ6^y>%c_ZILOLtSczQGKdkCaWy$#fA}juiTyHY7df42NghO<#}CN?L~{P? zAHs$q!hP=>zdAOvEZV~!I(45r0N2F8{gR208)WFQ9gz523Pi)aGyBVQlCr`4^%h@a zX3TSi$3~kc?PpaqQZ~#f5b(E&_;nTD)KF4Vks?h>K`uj}HUMQEc%Zn2aM1Na3KY7I z==XksdoO}m+}|?#qDGd50j(__!H;eJ4*g`B#E0tR$lRF9(A>v}tWbt^D45L$`6=!4oszk%2GOYP3>D2CwM~^|MsjBpKv44F&&s zux(oy5XCFjhm748$MRtrnpc3oG;D$-$IC5^hJcwz@{l5d^I$oRLJ{*R48H}dhgiy0 zB2AXy#<*lzl}V%*10iVj=l7H!#(O5Xtzx$K+u{YV-(#kux0Ltma#&QF| zh5Ev%;Gk)`gqNmI%~{ueT4g)gLa!!nCx#0vuOhN`20E4gA|WDS0J?Z{p~#62!eaf2 z3!LHD3^ePZPz?p*nk;^&fy_Yr5obj`OjqBocLpX&-N|7ZOfpSeNF+DzirE9bqqc+njIAv43N zC3O3MST5CwLU2_|@Qp$kAXyL&q<}_wQKalINF6%U?y@rOmU)_bR^rx z&i|FWRE8D5S*hSghaiA)z~@2B?9kN(|A_icJTo6FoV=F1K?43^LMpHFHf%vF%^WIL z(G*dhENdQ*$Eg8@F!Fzw0Si;&;a$1Q03j|P`h{DQ7%prS49Phyb2H1zwU7se z;5mvY5}Bv-{Rd`!V*HcHMv>BAjUv+!It~HSDFA%#mS%+)Ra-GBBtdKJ1AePGOmf=w z!d0!|qDurQar++8fz13;QG#gh}P z&Xb`wTUIrPCv*)xNDMNvRsfNXu%en4o0&0pe`eH9DegYb86@mrJ$a^2Exwh(Hu z*kN5>X^~r@N7rQ>VgR77WUx93=&M%rl!f3^4K*t);u4$wN6vGp&O{~xGlqAV6Xg*x zIet!7>#ioY;mUM%l!&<^rN*|lq|ESn4$e6F1tQrVn0wWlBF)ENj<|N8bZtBN+6K4t zm#@S=rBG5Hk|GbWWb)`H8+00h;nfw~YSZ?+JOo63A|N|5rP96=N|{bid?EYfa9LWw zf!^@rD>t#Sue$6~n&NSZiKq08g2j?=f%3GiD?6B#R>^{I{3ASWNs%O*M)?{x*s|Xfan9jDojvw6N0cP&*cpRnXunBl~)+o?=>N~OpV3! z^pq*tOQOuw_!FdL%2J8{~u@f9hKz&KX9KtML_|# zfqRRq+~LNJGgpN(O;fZoO)GG3!CaXcZY?!jWwvmoX+uj*n`mifOWX6~&G+}`eeS>R zbNrWoyv}vOx!$kW^C8m-$Ytl{eQn2{HBW)a6cq;nKWkz>FJ`W|aNuVez0yQi65>M# z>H#25*!-0U=b#yIXeS}<_C1DnLe3$`p# zv)Mn^WD{fjC$!9Dn#;xWEmiu_ZCsrdaw{sV;u;AvO2W7U#Ro26i_@}gUCzRhMFLdk z*{f~tz)JdCh};Z7b_Qg`fCLEe3@Y49*i;YeCn52!LXP=Atx}u^v=l=2hXA8lP-n_z0ss{Kv~uSrc(33TOIh@TxLfb6yo@>`BDehtL*K)7`EX*w!c=Tc_ zMP3xP!?sZs(_h(cZP;G%lXDu^$&K^tZpe)V@%@bXH{}YXew=4c-zeZ~pZ!&#eqBO6 zL!>&5pcw#h7RZDJ@nnb=5soq#xB`o=3$a}~{827S^Z7f{wk#}=J|=e!8uou3Q1RsQ zcfU1KNA;c?@(vxjJ{n<5e5DQ=(=6^4<6I`q-NAoF6kQv-CV3bCGJTsPGt_qIFCTmr zkn|oP$pmTwAf6=X{1NA90BomKS7>aPF$WS&x#oC5=jydyQS$Ub{MhP+RLB(GV^ZS; z7oUC+zdTqc<2Np$ivP5Z-rp-WCq3m(#zfRq6u)b5wd;N@mqL9{dN?7zJ(D>idL+k5 z)Lz8uy$29@+|w4{#6y*@TIoV|~% zcQisH6}f+VE?iDkrrYrTjU#Go=hpJe26Jd}fhLB(IebmN!ZzdTYSBfBkeh1P+mQU5 zI3Ykn2(%Hl(c7?$O~}QI*wO1CgBfTFc8n?}0CqA7o7*?9*Gzgg|@hObkaMXcl5DoKWY3bT+|>GpD%gr))dVp6|Nm z&V~e9k3#PCt`#bydh#5X6+bO=I@AkearT0Y0uedvDZS#cXh@?&^(2 z`CingaXjyciDCVMX$_Mm`-b>Y$4N;yDYjIRo}@ zSLDw7_;Z*ipYP%AIbfUa`2fDT!%28Z15WE?q9aZ*X*S)(Ul)>1JyxiOev=>6YcnqPq;DY;|2e5YpJ%pc03e&c{S@N*VO8E13KvgO3PPtt@q`%#_Z3^;AWCc8o;Eq!2L()6yj+;g1eA)jBPjtN(F9%>} zKmpWlHWSIi##xcxYf!-U{J2ly*>!re_z!KC|J`Kyd@s!ZZv7Eb=FU5Gi5SATz z(AYd#gzci8~oa-4K>;f6M6W(VBWzCjq7NgVj>TZia zyA?0&_0K<}ch=&}^8!p|8cWw~Ab_+-KX{o(KH>+W&}Q=FElFENk4de#!E_Wq4!ECZqPoX$I=Z^|E9 zMAt8B_N+`u85e8wIsu|L^twJo3)%ACv>b)-i0d-)C-Q@};vX=stNi#7Vk`6O_dogV zLC~^Sn`g^cM|7`xz-ZuX^7XiH{fB;PT@2CGKAh83IwjUpd2%bZ_FJVOX=?VpA8^lIiR#GSepU4_-uq}hf=*cqM5gr%jpJfOf~{7 zUy5{GG0U*s%k)_K}9j?$AcY5Bz8t-~>LX;n)tped`B@!jI5 zERZUJ;X#uEaLbvszIdCaeChg=K_w$79SVt!%s{A=QQf^!TuX<#FsL$bbEVv|Vq^?& zxk1$zyC2_-vnbxD>DGx7F{gQ`jJX6fsGhMCbzrxIX*?2QM z?<>6*NEbW#?W~LE>(f6%Q||@mTdcDthY=bV+8IT=UQfQlD6a<6E~!?EiD!^2iT!h?aQ;IaLNa0x!Aq3|nMGnRPed^tPl+HrK;*c5HsTBIQ?<^qng2pw+O1 zmYG$Mc&bn|4Msgkrn`4B3Q?tkIy8yhDJVqoskP5@4i@Vl+*oh9pCc2K%7*RW(7HwI zA;;t1S9vI;c!bN zeCUMiJsLefYpGI0Srs_Kx{w&(!8`4znjlO=s?5T^USsz(TnGfqln zD0S!UjOaQfojE#B!D`6rC9MU+DJ;bX&TW3ROph!9;+Ul#z3`svisC zFz5-L^BL+9YO=J_*yw$vtc6t;A~p#`yex#y+-ML_rp^n#`q*Y8#~5f!M|+cYTiszg zQ#HgzIloUburpGvk%Lvw_Gg>%$l~mu=ei@!FghO^l?n7SPlXQ;(Ci|6s>qn9jRlXXB}_M`@` z4$u*>fLud&-MTZKs3ZI=TipOx#IK20{3x=n*tqh}2KC>Q&QjMVb0eeMJ10cNoyVC= zkQhEROwSH`auP(yre~9ClF4>~G~DKPY?f{z+3!JzTIorj>9(-us)%Rj+lk>9x>i@& zyOAMA&_1mCJU2{vbW+{HTX(%B(p_bI(%a_P1v6a`CGAL=`a)CD-Wg?L?2{bhEk6KQ zh7@faVh@3``_w5omA_*&ytdFwQP;M^V9-u{jY{ujw(`shwf(Jgs>q};y~IV3)8gVt z1;?30jFPk$53jGN3y-*OABNJZIET`Fc&v>_s5&x?db8@Cfp4ID!YP1>0RhSxH>S8w z2a*wCNCG2MMlNIyr3*ao7&s!)4LGOK9C;yVt~1EQQBg@Z+v#5)h=|R7>+&U?GX02!yV}ds@)+va{#uEtd{`?-bVKhRBRE(8=wCB=(_N_Q<3aK)Rya#9Mt-?Q5>x!|10gT9#qhnsUx~VP4N1xs%lG;cLc%_^YY zJEb<1#*u!h^mnoFyGl+sciM)&{35y zg8u085A&}1$wpPr)92^Y1izVd)MR=2#uYN-O#gR*4gl7LqnCJ8BsNc#@u4x>SzKH5S@}aRZoR*^p zi;d@*b2mq8jCA%@%-UtUzzJ3E`{<&^nB7ob`~OE_I`hm? zkr#I}yQ85suU?s^*~JNuE$pyo0fq}9lL00n|4q$G6~6CA#Z-I5AwG85q<`<8c>1kw zUVr~HQ_eOu)5*0IWoY7FQ&2;(ZW-H8fG)>oWMqd%R;#wlKY z)9O{U{V7p%Vf zF&Gm2HSGaMuCJLC^MTvuay z*C5uPa&M<_(zx2@cm82%opzyQk%7?q$}qx)7nUQzD(B5W#1#V;?KQ{uu>BB+wsUtl zgT)8A)dcocoZEQ>SGQKJ=T{WJDVwWlw>=KHK3Ag?L2#{FJ2V+mLqm{E?8hB z?+ku;xaxV^J7)q%Rl}nNc$VRg`EShEN6yDA5c*$QEW=|*-*-krH72y8(@}?uXWYZ=hk8nQ2dWH1X3vVd%DJd})qINcpVjDyJ;ci<-$Xg;-$03tl)OARc|Y^ER)Ao$ z^aeG@h%s9d$Z}JbMgT=e5IGk~wl?<4?*F;E$m|e}LhpB=lhq_ebmx6wWo)EmQCmZ4 zi$Ejgi44+8(5#!V#qH>!chhHTV!CwA9vat4aW=Qxusa=e34)+9Va<)G47l&WB1Hcn z&ORzbBYje#9KMePwXT69ZDfF_7kt$(;M5q?hf$e}TDW;ed{96zAX1P!7P{4Ji-~1t zSuFJwn0VL5Da$&t=JBW&27J0GzmP?N@B*kP#lLU#o2v1#*X{+zCt+{NNNg2u?mO5mMzH9yP zgggm|sk&^h^q&K{@<=`+hD5o&J@%1e`TV8V>ssKXSboYSV~_XyvTB<~{!iwjG=du*#hd;k|n2hP+@?{wbVvzVi=JfS5Mz$3mXxnLA%`($tSuAS(+ z?g$@YmIaLrqcJl(6dq3g=hzOFxn3Lf%w^!w`^%M#p zwlp4MC_rHV8Z|$T9HHTc5Rw<(U2FtIMeto>ML*hrJq7x<7H?%fDOG^v1cxBb4Xk&$ zSIA$2-0h7>Y*-|HE?wDwJLF{6`#s^Gp9j8fsrD{G`WG#|m_GMq*zioE_`O#UEwN&C zXZ@D)9oIZ|oV}}|HT-}U(=;~hhv?2X=Vj2TAj&CSa?_Ro@nS)4o=$QEGD)wu! zmdEg|O#5{$XI~03^s8@M9{0qFjTkt17CWK zBMhz;66%B+vYOV}m&G-;=^_x8l11okr&2!O-LxvKa<=?EJ~sVBLzaVAmgfx#&%_fYsjQ82xqp_uBJ?=GgMBZf1SHT9Vrr%^N)BpZSl=5)wrn3bzIp8U z0K?zR32ix|_|gZRNj27IWq5jnRfNZ8jUZtHdm0~V&-dK<^{^g2#+0SI{`JIq6@JoJ z{x4VNs+5#*8(EJ8HWz|L|8ZZ4g#;alU}oaNG9#36cci6MXNqt=N1Tts&S)sGK1<*8 zHEy6FcAeJjWugf)=x!#u8=EbrhMo{;RWD*{eku$w;jSdG21TZ10IY`v;TwW!-{Rfu z!A(`#vkwbH01#hDnhSZyvjAWRQ2kg`>|0e(Q!Dw6`VM#7FneK?CPhYq2>`KVU^86x zMZn(ECP(eK2P;+8U{G$0-iWRCQ;=DClpEwn2?0=Qx`e&5&12r2!QAACRT-yLKf(@d z{*NppZvxwK;d(5|FHlH3Ej^5E0p&Lv z(eNOk1P`EDQ;eJCB1NZF^ngFFNU4uOmVCWQ+i=~t8nhK@9}@hZlQjW=7)(Jo2(wlZ z@x#&ncLXYoHfh_pXpzy#06=s}IPE^LcRS~SJy?}m*db%k{#h$7ApF)9Pgg_go5LVW zvK*saD)sXTgciDjFjYRORU`izU?CwV+>hg z+*XMUL7bOHUED9)?k7#IM9qLn1=^H8NvJT zp@sl?-9exp7T#WC`qjjjOak@(kjfdy%FmDqwr6Ya$oI+MZnPUp0VH9p6G0CFq#z)i z2fzU2^2q5`twv6)>fG`)=IH@I{ObBqtCiEQf`Fn1%n%l> z?*m+*qfc%^j7d0AnLpkMj28mUg^&&z@R>KH&PH!l0iowL>4u^2`wsOEoI%p6Wq6t{ z6YOEQdL)kERB(Wz$W;p}2ViCZ2+=tM2M}*wjT@1dJBHH$Fm#cp0~nC~%XOAmg7+-e zhu$7Tf@k^yi#8kIY>(HpO4r|EVC*6={aEo7Vg;r_?9Dfrl>iiEQKrJG)}-uLgViF| zqof$IPRrmuSJN)LfHe3a;DZ{ve9x~(bP-yuGVBCshmNwLERGA10GLYf4*!>>JzEYo z0kGT~0&J-Hiv7^lWiV^Bc^DV&9j2g-gw3hISu+UJJM!+8lOO9w zCU_arI+lT_@sc-WJJoxD;~N%R$v^{^>OLZF-%djIh@L$i{G>6w4%g1$vWW_!{DmL``GAP)rh`bi{2ABZ@8-`1E$~*zUT{}Al?iIc2D1x3^c*_ z2=FG<@GlvNWvYn|xUd|JCKxcwuvav8)maE-$3aGyk0@q~PSpY$wnv&JXd!_;UMHU< zviOLi<2CE6S*ypz7DSIRja%2yl265TPI8dI%YNt@6RR^HbsPmgh z98f}JbXGO>Gx%VgO<-OR5YGqd{vm{6!Kd&rHMD$#EIiaQXe`|b9}gxk?82{UWCub$ zsm1|3=*%N4dlL9-k7S9op`;MV244P2fQ5}`U)(-g$@&62&V>7m=uiMe!v`3~Qg}EB z?RyRWdYJGhQrV;kCgMx&6`Ho*WVOG+Ebyl$NWlw~tBp{9{ROPZ$6UpVe=0NkXtD zW8fUoK$LxzIns#P8t`ZjsMxlGy3+g7dCPE^bJSt6Sd~6S@Vf>(Wn;OUk_14DX{KEKje#F<0Fgtuq7X?4Hni;QGB$iU=Tp; z=jpRaPyF}z`?rV{ZNlh$uoDYl+H3oxxVbqGDzs${wQBje|@il&E$-j%9F-4N01@6>)6Evqp5z zQZf_SbVL8YKd?-If2zaLQ6^?kO#JDl(*rKzxB$^ZQ4|8imxP*z4QL~XV%{y=9Vw>So^mpyItD; z#LCPR4OQ-j29w~ISg$Cx9XDpiTor6EWVA*70snE7$mQH*&0fx!UbPlm;E5e)K}|WY zrIJ9I^6+Acc9;O+$s;rF>d83d8!_$~7s2+NbGH1|_s$>P%9I}6>?2@R-m%`i-&`}? zS~FF~C3*ut14Q(txSXE&vwgs=%@3=be&KN#i-F1nJUc)_#PA>^d;5X`P)ofjb6Fhc zY=>$6^QC)ld-+F)Tb(<3S3fk&n&mbPvJk;k$opTw(7&gAurM|Qp3{d&5=J@65&ebh z>2Z*M7+49Xbabcqpw;Vl;h0yOm}#u|G(&vxKjNbV6#`%4&*tYp+gRz}0*N_s6X&NN z()I#>FlV0#(cLUWI&)tu6Bf#cxANhe-OwB)>;TpJ66Ng#pDseC{mb@EVNXr5&|B!o z%zOHt@1J7~HzdQR>)$oi`Jnd+rU~>RNi3+x=AAtW&L%X#W#iGtMu^~*p3C^n=QWh zJJJUOiC+Le;9tfU(?pfS!yi7*d@$rneB@#7VsU_F*Lfwk?u4L`N18RAA*~7isp{{} z^rD6j`lkjq1auV;Dzq-x$OrVE?^DRUCLK)mbeEDR~tBl9_0U| z7=g=nv1QV18xQyrBsF-t<-S1IO5syUEwHK(b-A>GNOMAA=PriA%cO=i}?$4RXw@;IhG!)Xd$pLn}N zAcxhVIh}FqkI94+cgk#(()G7Sia7o2z`{Me!VN-DX@`gWF^Ifw=YdRbb&F#wToJHO~{9QD3%1VMD=FN^se+!`(B0G2@|qP&sg zL`03K_S3b|(XDj+{#65+=+dpE=1ragQeWN0u1xjBTI?nIj>BC-CGoyUSS{DjWn9wU zPwTc`V(X)K=aTLRT?WOs-s=YKQGMT1ZNB&IYD2Js!Xed4?ZwxPgBeh3ZWfh+8P)8Mw_MC7@F z%wW?s=N;d3UDRbio-F>fC$VNJd3Sl{R&;aBORYDGH#Q2=>JE$^lsyYkyt{BeWN6@v z%3&RjqnfA9uV|gegP#Xf2``LZ)=KYoP7qB z4%}e3%J^rQN9*j@kuk6?Hcsh%b$JE2R2>=o@AS>XH;dhFp{|=x#OFNdrXK2hY2H?M zxPIJ;npo7)LcP0VDy2C%@>g@F7xNda{<|;ZSxaQNBiF&P6hu~AU zR=*OXZ`;U4NK~3s+L^2U9M^+&}F)(z5Pl!#-dz_q)yU|j--3sL`R^?9Ej~2i7%;FjPX(+Vm2Ij*|l1f-^|44Hy**Zeyh@8t5bE`lNRhF^$PQB&r zBq#3@TIw%=_o?itLGlVm9Tg(8Q$!tO5;kPyP+=k8dkig09TMl{ZyN^Ut}Gv#RQzTZ zE%C`-@*fqP^ocHmmUfXGIP)pfXnT~Q8mrtucAd1vg(>UXv5V%eHrdZ_O$CHTpQm@k zS|Bdox6T+K--+Uba@`h;V?pMAVPl8JQyumA>?)LIf&L8>vQoNf@iFg?8kM98!!o3O zOgvWJ#$7>oubD?&D<(PmPs3>DH?chb$OD8~;_N|Op`-3dUAM}acmK6jgD&5Vg4qXN zYJNL%ERyd_zy=s%^PC$0;{=Y!Jhd)MYQF029&uDRY+?=Q&W&v;SSyYhdFH+2kAoyP z%J>E@gp7PHD~fn(&92oA zyL0!_&J$4iSI3H4ZaP`LVISP~+tQRsbr_X%`2)N2&S6KvAhdXv`ad0&~D4gzTZb{V|+tmZ7s}tCB1@YWPB*)mE6VK7jf0p5Sz%9 zQX|Lvc^egV39ot|p&K_+$6C~BKQ>AjX8E$y&!;T*9i?YKEZp(vVtu;Unz+tY6*-EO zs^=A>m*|m)qm~X42@Ng_6V{$5-Z;vJ%k`|d392t;J^Ro+=e|KjpPeN>arwdsnVBh?^Uk-8mNd zdDrLO>K(x3)}M+lCl93D?Xq$U?x+mNtnay*LZ5EU`kJ6F5s`1)Z;Rg74!FQI4}V%k zD8WDblo8WQ_EYl-&dQDkjF+E#&v%f0O8#ttD0yukr(1T3t(@a=U}#Qcrb|~Gsf@L7 zJ%`bf-WBhp-~C+d942YPjM$;nlqR3 zOKnek&8o`{2b5bYKb_u&KN#J!5>sL}b=8D;a8l<|pWcZRHBU|-^&*_31ZaqH3rkKr zJbfIk=Mw4iOiAM%;ZV&;vS|4$`UCL=4|eR__Sb5;>VwRkdv}=F;;VE{LTslH^T2}6 z(lzAu#hdX(R>|{n-88Oh_tx}(UoFnkHr`WikJ!sQea=Dg8{QFk_E2%da=#hM>s4+P zRJR9iE^GiXYWk)h?WsSwuOlau9W{+TCZ03!o?h^Gav7y5l`U1P2QJ&lLf4W<&L*fQ zq@CND^8Aoz#|Soe@(I3OG}R#L@2WP~Nz+EY8DuPDf0N^t;pPr^CV`k3rrYxZi*)oy zdjBcB&R|1FHO_xK?j?K|qfF55a;t0x){ZvCWA(8S z1@^24Oz3t-sKv{)E0pCgx!8DJw|937O;!jE`EF0Tk!ye=uM_8wAAW~lqABf4aCkw> zJ>6cHlzJ|PS3cq^@yhFib)TF51%W6anV|Uuym!)x38s(8p&E8Z-$x(sbIaFRUKR00=x@Qn#&jW9&?7lCx`@YJp z2T!dYxS4PFN)b)X>%R=;IL2gKQ^9cW8wL?OVv}?hrgFwc20hoa-56pC;XA%G7!GjT zGYhJENHxNzC{0w^7C%qjz4z6$%27bxc%03~m$CVLOk51dZ9Uswn5m^XjH+Ry_`ofl z;rm6PnTSjY1!ULLvR8%*rsiTnG1(%SaKKJg#+Asrz}oE&wVE9Iq;o?{^G0V<5i`!X zw&zUZx?b7hm8FK;F+WS!yvwex%V^BWADt92aIlTH4!Z8>{jr$o-y^#PU<)3Iyv`25 zXZpWqbIm~MZ-HsoCs4FZqviswc0jjV&iUXQrsn)TOzU!nZEc|1v}JbwR{?6#N}IBK z`$`RntPi$z>OVnWr;ATmDu92(c1xbIlP$RR%wc<|VXTPVz5dzl zC}*SwAhBU9nKY9d!Gu}~MZjgIQjK#!=(uD%Yg!eF6abJUq?iDJ1puYmS@%>69=sZQ zlm!E1<-Sbgp#a%r$*Sh#Q2WUt{E;G~>yxMY@26Y2l`m%PVH7MapO24hKTE1W)xeT! z#?lyQ3yUGkOglT3A&-iYHGEzS1M08|;$_@L(WfMSdLjW2P)v~o3HUU|5}Ra6ki55^ zm3&bsDDGtK$9X?qb2O=dHOlxCt^`k7(c~?cVLM4qfv^s_k zSj++=U>Z+AEun74~0x^qN-bM1a^avK%7cg+nmcjs>| z@H<)hw1=i+b1Hnc^O?I6%vsxeEYwdHmWh_G0ZOj}RTiaZe(w6gD}e2VB}3p_B=Tp* zlcuM6Fh3XLsJzwFd1W0r+Kcl9Gq#MscivvsrRR?jF)Rd)O`)UH2VpuQPmTm6QrTZ3 zfy5g2{Rk(m6FFwjuI*TX;pn2%Sy383R76BRv^31)}m$= zQD#(MSE_&Zsr3tf^+hd6G{P|4bh-WPCa*qf6Kb8BS@X@`7Wx2zUC4tzg#)}0H7tBP zK!*cT6-~3W1727Ix6fJo5n~+jW8OxR_ZlqnB011Mlb8Ksz&n3tVj;IkfsRvu@8kWS zAmrpr6lNWKrY<<0)X>&d+4k?*`mfswkibpNz}+z*`SnHH zf1da*)}_4w7*oVxirQQ(|%?&K73$I-bp}23i@(4Aa&m})FNP;xCx{PvxkUpJ;vfH z>x!RSS3?e5cag{{dK(p(t<48Y0s^+00b+}9VO1==2LMWCaY-96vxBu}??gUk z+rojgPVd=(;oi6hrgtuz-i|7YceL<-ELvHSi2>plS-Pd`Tt=LZ`f3C*q)-VdhG5II zXWF*EtC5Kvw(7miLw{d=cZHttmHyhTzlO_soBn?`rf9-NCMR6;`@WCeEHD-T=EMUv zS&ad4S4eBfN!HgFY;HSnZ{@)d15zN8>eUmE_f^T6-0YK(6(2C-`4((V$=o6znf_rF!l(N|kZ;9_bs5zw+ zGr6=K&9yiXLpaBZNB}_00K2O{Q+FH@`Hl*cTXKR4Eq?a3LtaKs%>%D*etI;S5qX64 zKgyDg-vnSN3~$jEDfPRIMq({#70!H)KMFv}uoXDq+=GqrF=awOi6Zusgy`U(&*7(z zyM9m2!;g=f=QeHFZ9EWhTo0_hv4kceB{l&#;aAba0y3B?x^c9B9HHj| zkkn5^9$T>;s1gHGHUsGoW*6`W#MAR)*RyvI&Kd|snzi?twqHaN`_l=4mnRD({9?1? z6TPj#N-w%)-=^_QPE>pJb(`LaUK#Sf*za96Tp0;Omwc_vKa22>cU*sOEN2_HvrC~V zH^@c7J`+K$>1KDbWTC+ zqL0YfjNRTRDidPl^^4m@R1p+`k@RB(0&KJ31oZ$GwWl$UXmSuBYt-XH*t5VtdN#E* z+&bydpkIy8GVQchXoaTXii&d%QCZz4FqN_L00k%6XddLQc%x)@jsg1OmM*6XMO5*w zS)~Qk_qCo^Q>D+x3%=Yg>|&U9E}(wTZ9GMJKIsknKT9&)9$BdBP#nV@8HE+0aR|lZ zTfppXq@1qjB&l(HOwN+^KBloHpg-xk=RWtPR?uk!hf*tcCbSTD)-s$kBj{t#pt2*R zDrKs+a$58*^Mlp9M=a7d<~$+~c)ifeCwFQ_Jt@z?MY!^6H;!fI4i)KFz9P5?`y?{;DW3S zXS3{oQti=DH9uQ0YVsHrXoriI_mT1=tw5#XH%Ewd)B$m`QQVJb{?RTI&w?J{_5hE} zESo(~iru?Q!vCSzmjVS#)}CP)!D{CjG39s)8~lO1=}VWwPNqC2@Rn0EEyR+3`viQwJ|9gjW&u_wL;o@`A*$lu5eI1I_IdCiybAlcWQbS zjeanz@@KFe6)ZpdQQtZ~2s(}n4Ana}8}QCu>altZpdk_}JU3&9`BlKPh2i{o0Q*f@ zx^3Pb&*sIdU$z1E7^CZRv}i(c#2Wh(JsU19ZnG6nJfa*XmDA-xssTw4YlJvR7npg6 z6GC}F%yqrdaHw!{w6ux4V)oWyBk;m~3#p)?`y~X#F|O5@&Z4ToCFCy`1)6)mJx2Al zsy#}XBeaD|`UzN<75!SZii_l@e5--IKhccc^?zr9GGwWxa}fAnybtMrD6U4rriG4u)x zgwkr}@okZqRy|PB{(j&@*tf^Iy0dlJ>MscRM4?jZ%q#@w70HI2^Q6_-i}h)A&@cP@ zR2;fb+%jK*YKr0DdXHx06K`7HKKpge!`I=sRq0fp`P=WVL$M*-#f27P+C`J>TwM12 zWz>5|$mI|kG@){Ed`Ug@#!x=Gf{#eNTavJcE~kcLxJlJKBX8%!b+|=ML*l(r(76mcoBSH! zrP)dKihR_-n}h@V%*7y@Lg0?qg}l&2AfF z8?NhO*>EobNCD&IY_+wZGObMo<6vYTJ7a_hh>MOX_Le6I$JnJ@kv0bSZa9asG;N}6?q`lQ8SW_IZe>4 ze#3$}M0vA4|1M*qQ$aXws$JIeY}oI#npZM=j0*#cm2m|E2u%n!fq)489H&RQ_JoET zn%sB1W{C$Ko+r{0PPn~uEmMD3@aqQ&bH-eo?Z8u@SCahZLl>u7siGMF96HVzQCJtUO#KuY$@%5`0ITK zp#7U+ReM$KP$rCf{|`&|;?DH{{||gehdFJSGtHdmH0NVAGm=wtKFgdBIfjtRoSH)# zIVCjbvqnf#&G`@_5v3ZbP=w^IqwhYy>-QJzbzRTvdcO90J|Fk{?SW!u6%+jtCe~^^-m^bS0Saj(}Bbzq}GM>Qf(*XSL3bV0*~-tnADx@j~u~(~p+3O2JYG!TYy1 z$;*m0E(L~fC89;3HMA{1RgLD!7#|Y5vi@p~497sRlss6m+=Q={=8>U%p_BWQ{m?8n z0&3U_vpPVx%gG1wCNR=IMXaM+A4+8gb7TKk4uLT4wi)2 zj*# zIBjX{Vx#+;?9W-QzI@N4GAPHp>}Hf*cHJd1&2JXO-%ktQ%0K4#!0#hcfbjt-;Zmja zSM9TLAN9^?MH*Y*Fr9K{Od#PuY}L^plg>fzZ$R^|Y|nkn+D$tVrqN4O=)4J2S&{mU zeQnsTk(+f!Ml7Jy!=T_J@BKy5>Jb|=s6C02ulzxDaw9{@GB@MNatga9oy=vwt0TBR z5%uQHBCzfJr`Z)+n%t!#rJ-I6oTgrC`XVuDE0N__c~t#tk;&&_Ggw{|9P*-sx< z#Z`5_eg->{P~Vw+GnV%<`r|A!<5FUt|7U}BNj3wiU2J}kc8!qI-7oF;=rf))wXsJm2`BBaK)w63+8T$CNG0o$?x%H%P9`6N2bxytpCe2+I zdtdvhobg~Ls)xmGHV5@CUWch$-S~^^(WAP((q8GtJlbwbxeT>@!E@oD8l-pzBGNkx z5qC_1UI_xiEPSfU0X4;Q7rv^JZ`7KfY;fbCIvh7c*6+R;aO~wV#j!2={H+9~jF>(q>f+IXG)s}F ztT2Hd*h95ZP%nZ)GL7GwjF1@MWt1nzrt@2nC5C|t45oIgsV*hWz~9u6XPM^{&470P z@0E9tfzojM^gk1K;m&}~+i9~ZV~f&N$6k;{DATac1?npFZrwhr!c_g|3j+KVK}7g^ z;u7nLb*a@#PlgOii!!06(8g3{_f$Dls`OVAg>*cY1x&Gd7>3*SI{{uGD}E8jKKVHR zvT@tcxFOw>riorN>jE2ypfwN0dC6um0H5QkkroZlf$of$l{DjAFIS0kt_dUsyrag- z@;99~gf1s24je=qCitYW`3_km9H;3JT}PeJKzn=R@mq<|u^Z(h&g-vOc9V`HPCrEo zj`7nx^}&p4`ajl^1|x3fGQ>3TchWHutOfH!jp+m)tHP1AG)IGFo8#(>RF$@`i6yJ~~YEaV7= z^`B)O`U>g3QM6?$q@p2xwF<>(-Sr@)&I$6@>N<|k zQI^+@52~W&>jTVXW6c{N+J&>7K7i$g0+KvuymwHB049t zT$zO!rH^#lLBe0iyNd|xsxZ&FTi!gNB&-S79A&CIGf0bg9qqJRmI`sz8MmAjs_`K@ z08?c^TC7@gjV(dh5m$RkW-}x0r)x&b-uX)34_i&|T18jsMOk{WU@baYJ69<@rZmiZ zm?iRczFk*d5iR$v%8vIH4qY=S9Eway%Zrh;NQEs>hOiW{ak{CItbBl>63e=*QQI<; zXufZ_RojDCRtc@aD`6$@Ct?RA=qAtvP@OGAUgW&iSI|k0+x0OYZKF5L5|)iuh9Xst z!R$pt`Vwhur%apQ;mi7hY<6zvw1>3ryfkPIR%+*bXTe{R@#$Z{rtvTsePsxX3ZmKv z-p_7PaQ#wyYU{pvD6}iJ_o_;bEu`jffFClzKV@>lnlNq{hISlMBP!`61wM&uCjR7d zQb~I;eIv;oY(`>>-T? z?PKm?z21cJB>exBOV;fk0|$NCzI{kWdn&6~+(s7&dHiYPH?KC#^6w8!)0I_I9tVAK z2B59eS60c=EC4xqKyaM!69mesk8BC`MY@xWW}1u=WOxrPbn}jPx1=Q=4MQ=dgL1Af zPgtj;XMsSi0VE5I*hmpN58Ub8e(j7q(fak9ITp$n38l4eM?|41?;1zIbIHM*lVt~e zVf+y_rxN^D&C}A|hBOpSRdc03#taBMGK2;91-pP!06ac!DO;#SVJ6hIw?>zkktZd= zDZKJXYK)f$tjw|wQ-IRvfJmZ=FxEuSUxT~06Gq(SZ&mqrRpVKv@;D}yw-g6ur0}v7 zN>8%L!9X{D9nP;2)9cPZxhEn1{gIewe?3=+JXmclRbWUybry?uVU9Q96;}oolJR%? zFzuakgc0?H(2Nq*)xYiD&bek=lV(u;J<(Ycp_F5DC^bfKrV zp(kQbB;fHbU^Pl5n(YjK+-(B;>X*dEmnlPy7E20$B-H5bnh;afucC8esVoCBT@q|Y z?f&)Y_Gfkn)8axcaO*RC@t)YO|qhpND56Z<3a*b6;kJDM& zWSM-LF0E#+^1yv{t5p-c@h&ZzswJBp=s{P`+qkE7T>jPzgr0I*nIp$sGFf3G^HK)b zw6vLpCEDgBGbtmgH2{wY7-AQAelYu_3o;0QSVMs=Je znS1w6+G6(Q>D?^uF*dEx%{frvddiztjyD|=k^EGe9_Ant)juGb0u)IYh;AATd4xr+ z>!ZrMq*b@){0UaTO>C6$wJ8H)~D<^YVts<#Xo_I;rpyar$ z)K{SD&VY(D02Q^0R%w%~9h6QfzpiR{-OlwCeduK2Vy5^0DW4H%fTI14$>9m8n*FdG zfbKaVnK}!UQcP7~?v!ZRh(vxJOFFt9_AYYr85;WG%8&O!*$=kjL>CeF3(|&k56(%h z3KKg?jzND%h4fbB_ zKJSteEq-~$2_Tu?ism@}v6821*4PU62vgG@!tSDsQIdS5Y-d3Y=j8Z-vt3MQLq_av zV~aHEEME2Co7`6unLm3IQLCafpqMsDp{ov~m?SQNA5%}V8SHV}vLZ$YFM1iy6JV>8 z4xY1k=ms7-oXXW1p-M9{`$JyoHbQzlSb42xR@k=U{XpchKINRG@i5I8IOS4m=7O_i zToQfx+fX3ht3`6J?l~XX(#t@0=df?k91Iczq_)|9mo9uP*Sn?)xuZ{1`|KjMzq>GsHIu`I_I_q!PKC)!;NF* zRY*mV{Fr>lknRQ3El)z>?+~b>{`3Q_zAujzW`W`&QOt9Y**6jK&%*7~@H$6$z4SDx zbLp$Lklu4?|A`}ejjq~}fB&*J```fW?@j!7TgZ5Luxty+`q)L4cAtL*;(Ak{o}Q|= z5q7ml7KcmAY^!_}v&R~_42rCLdT z&T?_89sBjbmOHclG`53Avyl=zw;IpA)AnL%V$CS7HD#AeUOENHP-2H?b4;COQHyJa z@6zZEqlB9mM(!gIOp+M1h$6_TO{gW}X<1;QbIg4witK$u9t;s4~6)A)}`soRd=cj^r&#b>btq}UM7 zBA8`bqmTm#2+fE6A*S#2dM0YAwo|~No!PGEIL)4Qh%Qd%P-ucj?64c}f(h0M%j&vF}k{`&Kv2RJ8_~$n+ zby=66$e3dAv)2_lzOGAUyRrurc8tnzDz>rK7{L>9KTR9d5<0g{8-`0|a-5F^bYs+-t@V3iN9nRqpY=%vF)BXtua}S>K=rrq&$%ft#|+@Z&QUi_W-pP?=a??3)z* zv8c?m30mS`>~`kqxaR91%`ve->x!u*QiM6w>4llFyXL-Jq5BKdw&F15{#wwfV`6$X zteUb0t11?8$vxG%JIqTAM&Br6bFtsGo00X>swv=)g*8iPz3u{Cot)foaNIdgsRpUN z9_P4u=m?BN*!FL-i3iZLiq<0fe}1|X)05wzIer8zJ>50BqNqiAxm=GCsdBHMh6R)N z1sr4LrVC5=J=;Kpe~b_XTm}r^gP-25<@Gsg3`97HG(n4s--X`pEwZqjnA5uyU1-v3 z*Qqgf)4?AYEXIO)-1B#j{a_ISWzX4#- z9ly30u=6EvTT_Y@yxi9X4nkMc1svMj>IQK=ZE1O@ry5Z?6|u9VEV;gMe7>P^B3RJ8 z^vO?w62cpm_mH--P&xN^N#B=?CH||6r*r~8yXInHkEAb;@|t<5^&Ybl=#Fn&mg*#wMK?-MzWm?(m-pOFM$K|Y8IJ)60?3WTSKq-$2%kzE(6g$EdB>aiblqS7Oi1Dh<~+XwPfcB^IG z4JJBKn%pHCih=4TP>grLV|SG`{*u`txr20y;n6BzBx{gti4}H{1$v$v$3q8c6usOz zzDw}oAz2D5Es76QjuBD?7(8WvoQ~W~L`uia={Fo~YslU|X4g;dpcs86%P&#hDBF`b zMHh*DNMfe7=NzYgdVTVQRd!apHmJiVvvPBlm(|NlaFu@eYnmJFQttMbwr*qUt}d9L zV)2&-hO_vrE(0BH~CE~t@9N}Qo9sGcyylfV@Midu*!m0~rUFNSc-y9u~MGGJ9 zi(#G#pKaZLl1v^|eV(+ErlO~1JDiUA{T(d&jX0`TO6Cn5A3XbLHeJ>jh<4+UB*5)# z3^?%cwBAo2_Vp-c#<>E>rNE>O|Hl?8zHqowv%@h>cH|zeR?`^&%($KmGZ|my?-eaAf)Jb(+UH8E5@$?S%JE|9|!UR-T8C$crhP{6?GxsxBA z?s9z9G40}bsIQiN2YBXv8AdcpMMf|NnA-}uC3+?g*4_Q1};qUfW-s_S|geiKJivE2NA%!A7 zy_?CEIKbtj?*whkIz7XQ=6|={8mju>IBPfiu&g51(hmH_#(mgV_!)i9LA2loBx6YI z5@Se^e=*DRU`;d*wk>BEU8M^Tfr+r0st!i;X=o6nT4Zx3>*p*vpX*?hFku%+#9c#SsPbBjDTF+mW*gq@ z@Q3He)705C2@LA`w*Pt~604vbzsJRHy51e|;*6u-FV2KyQ&Ae0RnwIsaQXlweCtDy zIAfOWKKd8`BxUU6`rHGdI|SwED?4Wvfikz~oZ3$s(Kizl&Ak7`AyQr2P!tIY*JJWR zB(+miuxkC5JelKcFdn+X0aZDE`2ZB$d)C_R3i~$k;!?2GVcGLsHtq5O*r8b(`37w1 z-zkm~y*|W6Jc2`Ko*?>G@re`?70TidPulDr^vRiHNu|Y zZs~Xd9#EwYLUi@)RBcOdGXvjUux^>ylDT6tabbM$e+cV;&Hz|sZhgyrPj45lNBuFq z;Np&zFW%2gc%uPBLKvU-unVipx7%1^CHgh{oNuwrgn8^KO%KQMRqmjpV1-J%Jc$>i zByZy3L+LekW7Ht>L1Ts{{qs&|SAyglz!+u~_KKp`7@acwNjFXO-IK#YMBU6cxh$a&2m-e!3LrKH)moxPyYkIt2p@pAsKwZD_`#Q*8l6;b6yWkPh+vrJk zD*N6yZ>9v-#_ji0UWWIY-)gkm<<1W}Jn{^JUF1Wj?%jXaT}v zQ#f<9$uJ8pGJzj_3#MNR>)heG-O;E?_U;$19NQCb>>FLIv%z5-%g zKLtcRkB;bBA9p_h7IA|^R!ye%8;4>Z7jgHO=kx;q zGl)Y3mr(u!g8}1a?GU^HUmxnptHaYn@PRBHXjVe~9{7OSepwW<7&@ z@)sf6jCcW%dv#Tcb>XAxD> z8^=ks9kyurdHUlr<^*@(&!c+_f9R7Ud4K-Qa?zQb@jky$gB(=U&zCdx{kiwit7kDN zAzyMR+EN?Eehm)1&(G#`$Ur7di206)jhcwEV9EX}Pz2(IW0vsUp)J`0+1#k?vViyc zBsgebiV_(TZ0SL~anbPXl3Hz95-)lq=LsFaRYrq$M8i#o*%DZbu|0vpzoOHA%^+UI z+HkV^?yb3eD@&-r&1>R-Yt7oelUE9%5aEP^$&K1|ztEi1Ba) zO-&f)I(=!mTtDfCRL81qya@A#a00>>>rx+UVajtdlNXmx7*9;g|m02SzXqF%e+(r@41IpxC@Q}C-2SLfLYy2^x-I-ymO8uvS(0WZYl zB8(Gh?1B3yrBm7UFS5^=?;YLiwEX^YTt((r_L%NJ5z5xm+vy~> znm74DgdZF+I)ExL5lwdxn;Ixuvqab74cc1dtgZNpdAJK19LHrT>?uC4sxR;%+b74r z^)#ofrR<;lFwfRG2Oaw^#yO`Hn*v4ove6>hM82O4qp?Q`o>5L=mCY-9IAU||DV>() z55&;ljVK)ki>_4(YWarv115O7KAt9W9CS3#K`&E~D_tl7| zW`$TO7Qq(?K?`!Crwm{YqgPy1dzV?K}31R>V~&YO~vc|hT{ z!G=IKo3Q~gVu11va7)3HWhx3d zXc!`xBn;cUx^+glK2zTlFX~FNZ4Z{{B1!mH4JG^#vZzrxsp?%%Hc;HnDl@yPO>Nw@ z;+5UwyX+Vc#2-{5=y38rNE^w4LOa~_Q9Ra4y%8FIHY6NMqAofw?$mzMyvdAEW-5@G zoG&8f9y57*1^D-<)3&$37h74^Emi|2Hc?H!>div_1Di9`$f$u$&}?*ymGDed1%<)aX^jxI@m#ojygL7jG$cz1JrN+XCaVjk${SWW zq0lb$31Ky=Nx^rSeze>QB!~F@;|uQTJoQV{2$<_+QpWxw_b07}a|t(asoOnnV7odY zJ;gh5(FUbS(c4DiB4$}7Yk}H^$5pILV$I;DiOX%9B>ZZb(5f7|>OZ`61!_&n27JfY zdaw+npU@f-F(Bw&g)jud)yRM^vNB@nH#-O3l^yBSjN80C>%=}#ug!)22QZ3MR`}^i zPSccWyt$UW&spe`d;L<7naHb`rI!+4r8Vg(+Qp{k>=UG`Vf}!=#3Sw(GxROM)5Wj% z*{Y}@X}B+Mqpx&eJRjz~Z&5^$h%ZT?U=I_9H@RnKa#_iC&{--_`O;2+s8|D)=r9!w zGs?gB&6ha2QoQCGE2pF;6Jt-DzbXD+k>I+us=0Qf6SdECY|lMXaa@~`+w++yv>}o*}$B0n3DPDcUcFxE}DNkA1Hb(m)Oud zQER-1OE=>%C)c7xd?LEpmZC+z%IU6}5UX4&UB%)_0{n&Y)+R#j`*^?r=jP|WViTLj zz;ds8sYI14>+9rAhJ*+fH61;9q#hesh&B5CN9@hy4vN=sf-(H{KEScT)<^~&+~W7!?eJH0 zd4Tzfzi_&=(y+n$|*6soa3hyNgyT|7@BD! z(U~>b4B!zP5NuSUi=?M^o$Z#j&?eN_xhsQ%f~Yi6VG$r&-ySQ9U_V1N`dT3Gd1L0X z>RpoMI>yE5T3N?`Sg~&aom^mUj>n&KsgaS^KyD!uKTot!lnI~zt(5s8Vb`#7C*Rr63IxyUc`Ykm$C)GJh{cQ> zFGD67nUVDohJPd?gEDU%6{+P zDvc{KOnHf`;;sV?k8!-LVr^>^cwd#=@RvN#xW-V+D;*QYM~Z2I>{rL$j(Pclt=iPS zX-&=?Xk%$ozGXlB(_)_^1_pWukCJ(VPA?RuWEmaBiMa;hU&|9TECfOd~)#Z z8!fc%m(RhE!AZ(^J8sVpk35rh~+2N|_6ZRK+qz{PY2+Z_hi3`#J{q+s!D9>CX5 z(Kg?e=lhQ=r;Kw?Vnth7H%h}DJhfNpWxab~SbywXzxvEjs7RuvIDHeRT4hjm3g_~k_ z=d?|Jj7uEYeZu7mn5v4UOH?nIHL6AC3U2y*riF@)7*Iu?{*Q>1ewF7Jsz7tmwVP87g-=7 z=mKH~r#;Z(#Io}(iF?zIRT4H$pI$n6>j)P)!s|p}*^Wy7`7UTlN1$32-ElxUxNE@d zrUTB=N|hXY@fEuM<-zFrOYo6w^(WZ>CUA|enR5a5RjirETXWT1{+woJsN8H59jXN_ znjnVhz2L|dLYmf=B2dQDJu)fdRqT~jS?O==xy|bqt`eK{kxpXK21{tDm(JZAy)S(& zJRER)egeHJ)zv> zH#fQLY;yzYOaWE7Do57TOj&lRDjOnrvfc1)aLTF1XV|`EUySm^)Pv)3)uy*E&O*bj zUk)ScxobAh)Bbe}h{TkxJ<}VKaI|Z=dtq?N(b=n;L;2Z?UR^7zhf>bmVN1`;5h!sb9Dpmo~2xqfMR(17bg`#1xy54V3AQ>ZPyT5B1o!3NagD7&BWA|Z% z)2S{%_k-3Hm(|1@^kC0IcG71ODTGfJkZ8 z&xEB4yHM>%q{RCuD9N8Mn8BQ?C*wQ7_ZstK_+081aKGhmiI_cMu4TI?h*ZO*Jgxl+ z0uz93DY1)5kP%U~0lz%`HNrYq3S4ztTe+ild;*m(t1GAKS!R1|r4lEgU)Sv_SN}fv zhx3D3dG|WOi6zm6URTSztaN&e)FYdZV;O3W58me3T>3J!9}tm0(g}zdmkMWAS*~J6 z0|Z54%3^ATM6NoR7#F$FpCyZi*UB%KU$93g)C+XMyZPrjpN;doA#?E5w|XM(u{JU@ zWd%-+)yNy^Xmgg%B#*nL@tTt$%X^kNj?*e@Zlt(zY8ADiI&;HUs}VPP2{IUFHjEXE zJ+GfGhyIZP`(vRO2>^@q!v)Wm;(0G|Watcb&dlvK~n5Q%~f_C^5=+Lx;=XDbXhl z!^|1d4>2fNGX3GbnvKj0^Q;Iq5=${p7Uem=sBUMLM7$aB*rCl;DDVVm&R3-B@~oN28y$+8j>>JBw*j)+s(n0@ z;j^LwS1YxOr=8ZZ=UV{Q@#|x{)}*$39Of8W*7cK)063DkF6wVa5l~Gh=gm#wcmXAjwv~i;$j{1Ge`{^G`F|YETHU`jDJqzJ zF)kn67e4y?qrGV;nPbLSq%34R80)REIPlXM3E!iJ3Fc;=EWD4vR$cd2X3cTNN^`m# znF!;IU9A-%8vaHT7i;6{k*eSNVWbn}-a}NfE!!iLPYY!^?D-#<1w@B@FDF9FTk+@F zl|#%o9QiT&l-%w!#l2?7SZ@lufopYnN{T3oki=&2N2vD(9HJIgl?zL$=Cy0YwbW1{ zx}{a1IBbR@2F~T094*k#=H(cXO`I;yi=}H-T;0$8aAY&_IP>j-iVJH=*e_R&&szv} z#}=tMp~R&7=g@}0Ox+Y9Us_t594tA<+%@&tE@y^HV5c=!ap|d1Y`K!!T#jKE9`XDy zkkAfTv)TWDCTGAmQO=Wp#BMBmeMOvU(n(f*6#4FoTp)WI#y$1xGJAOet}x(T^2F^} zfz=n<#Rwj+qcwBV$+RhMGMg!G82-5!sue-X&hGRj^FN#y-PiWKS-#41&n`}KYBuA9 zXBEhWgN0-s&t@=Qlg0Z>&q002IUeeE+H&L>8%~g6*sVOPUmcRaiG=->wr?r2T5ito zmi?$%!^$t3dB0P5L=A6V5-o7EFgwe^fgA4!y~uTwDUIe1!1^WGSek45e_&sl3egGP z^@i?HN$31mVOGpP$YQlji79EWI0nHeVeST5+*9xl10ql0zB~uGL!^HhUy&Mhz0VxbeNceOIx%WnWJFTnm3aoit?7uffbGjPm~J3n1Ro; zMjCa|;k%OmcCV`tsurxi^^5dHLFcYZBj_UftVm?e;wyQ0^P>>c4;NhDIqBUl@_MM? z9>soqX;LPp6A}}yaN3ywpUSs-6cv;FfP0>LMp;-$zRO1=jV%GdaoGp-UL-t?HTd%~I!vco{V7nfE_da<#1 z7pi~l@LZ0ZGCVG%pRNmZ}d<9(v+Nl~S&ZDT?71USeWVbv>~(XXj!XAwNLMggaZ zx&hreNrp%)_dI}ii^`LHDM-YQ%W4mHV;7c#;_BRmIq&hz0r=L4244WYOvbT?J5{iy zgWZP)^#nk9%-J1hL+v{tzF78)R4@z2ykf!op91p1qG&RMV<;8Da}ZsY5!~RU*)r(& ze2r4GkbXzz%-wZ~hN284J?lkO80$3i=`PpsDyq{*Lefs%Q<~=so%a)fm)^*0j>}2i z^+2Moj#3zprN9;?Ap#iGIvu!w8=h-9paZnuJC9Oi|5I7U-foYShA zKO@9Ny|}|TG4n)+CI*S+fp_rGsT_iwi2sDSa*6Vcj}f+OTy7ROjUHxgQ9-{H*%{r! z_CPiV;{Q}kGdRRT6jIT^;j#-tvS>vn6@$*VbmbQ?)qvI=yID1+ld94=2$w85>{>y7 z3F+|j9|(&4T%H}=%XFSML?BE0d@#yBl@O@ErmW+*F`F zjolppA;Rqog4i6eU^ozL!D=hbqFy21K8>qPKe{b&wk)j6oQx9CoRr`mvPC5t+cjc7 z)j48(li$T*I;dy%wbXxibGhmBL~$b0C%ClYN}}C>UydgISh_%C4qX73eR=->)DOV3x56VL@q72v3mDasAypl@=RamH3J%apeYMm zX4lMHnaJ~oR(C7YwrB1%*q-B%+kb3=EK>o^|FQqN@uDv??uVKGTs~axgy=_l$A=p z5P_Ophy?fh-zT}Ch9%(^r87-@zfedo7(&(ustN##5y7|=h@`uzCl!M6p<}SstdXV| zcdElfwrbjOu1-s9Je=){7+V~?2Zi8xQl-d)#th97kK$^?H^Xk0q8ClFj1A@ZNd*3A zvIRH?E?pXvRgzfNjHG97B(>v>5CVo(7R>+8ZkhrR9?X;Pw4k~~)@&=#-l&@GA>{Nf zi05Y$;!Xo{wn1QzEso_ZQUwL86}`z4`X7+9i3xFzvf&YOJqrMrdH}KXhcTE2 zmLD0vOMkP}a0by6O=I7&lKxoh`%oa*LkaF}a_ND1v3alM>cS;tN1lZMZGQK-B>7pv zD=IDhsCtUhT1w{zZZaq%N*eHtWPBp5NiCwR^dc_f};c9dV3p(pvl;JY2-rytqElyUJP z?`RG~z{nw<$}y?m0go;zD{cOYt%4&S3#bg3(tzwt7DosWO##8}p!QKVfea{~Ss@=q zFL0|iVSob})dKlr>77suGFv-oNC3exs-ZD3G-S+8?6$f)e8#`A(+DDfc*l-^0WTTi zLfB2QPbP&W_6^R%OFdibkUo4q#)!E$ARgQ(4+DTm0a2BYq4qw|cORhMJ`YPgsvWJm zwXl#lYObnrpL!@%05Jt8vq|x@+jj`|0wq8LL;UtCN4HHf3Y@HK4Q0+^D=6BfN5$Aj zS>S9&DRrXm4o6~h?q(^^S9(@D=V*;Y*C7oEBaR|{M#Xk}mpyW$x5|wXB-*Sk5jfCax)Y|NRduXzLVC`qRpSlC#P*g`r!ThF^bY^t>Aom( zxFT}Q1ITP`&}r$$#9ZT@h{>E1HiDZ6M7K(YbV>qzdBqyOL&D{PC%9 zY1Zdo!{{s5>Xne}HngU#JCMmb{IfbiOcxIwz)lB9A*H9c9dFrcz;cJyl%i(c9!{R!_gTgZhvMhVqFf16Z9aJb>o{DWFqy=$Nr!WD4{w9VD;_f?ta=$#$Y@OWIgWC$4z#>uGfWi)EM29v7uQtqgxHD{`m00b~cfyj}GquEV5dxK>F$e zgb)r=*acf&N&3RUHQwARzB2bP7Hi%>wC=yExX0P;NcipW%VZ8Q$_hGLT`0O{ZY#!Se zr5_~??6d;G65`N6)$UCE55@b+z|O$nhge6$JoqZ@bKe{O99E}bm6i-B}kAlvgckPIC}pnZP~FLO0s*HAf#y!s{2f>ksEwwOJL z`6qTpTHI1HeEZJTP?H`^Khw05?s?!9rD(C==3@mm_3cVylk_VK{C zFvr}E?0FT2@qcY@fyQc=TK- zX@@<-_`h+c59-8$NTfACg(=1Ztwg6K^GhDfU6%%=A!GM^UWa|{5k-0SMrDBcyf0Mg zW8sZ@Zdd8918ZlYMvt-K%~Z;{3Rq;FMYKCKCFMsa)|4=eMdJW zHj(Ui+NDA}4z&LKZY0VC%&!85_6ar)o=_>ESEY)wHP;kxTXcf8wFVQKs^>A(rs@Su zbrtADGA>oF=v^bN!6@{@*_&pV*`Wuu1(-Iptq^A&+S%2lt~nr2Jg^iN(HeXw4$>Eh z@+K_L{WRoj7uO(z$)1pF7xioBKJAs^0vRk}b*K+=?S%Z|F|6KAe(}c(D3bU9{Jtm9+cpX*U6aX>d~Hx ztQTh${;um=>v(0(hg{9)s)uB?j`P~Fr3RE-xwLHd&Yc|F*+TdE86cJ(7iS3o^WvDG z6Ki4=zH!1K^R@!l1(CN@FNg`G#QPZ8mf!4g^!4q2ACHIHv*DEJ zhJaPA@~T^j7h7LkSzK!?z^9ZVSYXj$mfx4^%GTV6Rxo=UrxJ2ibo8uu{ayi< z6?#H*8{XM|&S#j{$mGD(GeO*^w+_K|*_}(&b?Ji@fq>(1Qp{?G$iHM&-Ph|hMS|(& zq?ewJm{JWdT18I2kb6X-t(envo8ACK<1BBHO+n7c`)ef~KYSJt=K8JKPjcU;fF|?w zw`bJ$z&R=y8mmc_*2v((n~qk4LTxS&zUDk;JlS@D6WW@HCUF7nXqf>+i;GQ6(KognZ+ZI3X)+drIdsQ zw_N)8TMQQZUc-dL;Rqz0^y-nn*C$Q5p<9ooLzS?_J$X|`Dzb|REK5}MeCIG3RSgn2 zFMAz{s~K?~-scMW(}>;~T8=+rTsMQHB5bmt$I80oK371S@`G&T;F2DE8M(_E2*Gi; z!d1*m(eSHGkRVE*D#}6TL>`&&V|+$oa1!eA&@F3Uc<=3DA04$|6OIsUy26FVbg8~~ zFt;PYRYp2SgH`d_qe&(1(a|Qb7r2!Yb(uDkXu&K9CO&`IN^Sc5zL?18N>`jBZ!I88 znk;BLNWqn^@n2tV+UNJFHH@r^h*2A?iL8Q^@J;}_~bs8CibpWgCQK&rwA%6Gf! z<|V-NxpMpJIsyn|b2iVhR#Qfl(>~V010nPFI;Twdsw!!N^GH)krpE5H9 z^t~l<-2AO<6-+HQYuKLHthGjq)xX1>lGoKLC@l+f%I<83(l+RI|i%Rwod*Gac$hDX~LDnw7=3clQ4Ny{$bwY^xsu{N1 zSNLrvdW|nefNm{-Pe7vCwfZ}`tl_4@pNM3GTo-QEpd$Z;vjQ(IIr41DiZ;$QPMo*D zmQJn={^+6OYq_f*JpNnBwQQ+=N>=fn%KAvWV|BrCrJ{bTg)fw`Ceh+nckStT#C6FW z07sV(I(OF8pA8Syjf(HTNW%xQ52h;@@58-6W9qGGIh_}o8$^PK=(!rL_$ z;$Pen*z5s;+i{8szt^*62Ty-23;B%~@K;VJKNL*NcVd8qXf~ml6xFi0=?j1))>o(t z_poID?j&sZSh!jJRAl05arg2>cwS_=dPeGU*<;erB*o+*(S)^I0;-dGNklt8$f`=v zHvArTFaKn`#c88lHu*e{^r%qR{7Ji`ShGiE4_3bN$7|e5D=so5D^3<(nM4Yy@(PUf|V{RDk3U+@No0p*E{ZW9+EM#*WPQdIp_b! z2z-aGb2l%}z1N%&<#@Oy@qNFXLAVf9oriw_7PnTpUSJZO_wR!~CLv#MTM^V40MXz^ zGxczwhBX&?KXeggIY$`#T44)Lh(tca4$eWd?bK=8hs3_w+-Css^Y%qP({rXX#4S9Z z!gWMy%&1WPjS;>_WubjfQ>tN-4w3eY497uphB&=0Hf|_OG}StI+Cy984et(swYLmi z=T(^4!j5ID%N6|KvwjEG>AJr*_uP2*!@1jh(N-7FT&N>CDUST)G^t?grk{vWW? z0lg$R2|p(#qwD22NLqpBqvd_3DJ!572~Az@` z_4;}-_uPUa8MVbZ@o$z7YIQ|HHne6?iHL68HlXKxN#VOzawfCK$#ZvFPHJuu+E+%LqsP<2MUdxH;$=emI?* z(| zqA$J6mGcIucMbNTqU1jY2Cg)|3dS1V4BzM&g$diQ8qd%aCJQR~<<$=J#QqDLILkF) z{m8dLYx&hSjto-8DhwqctXH~Ik;-9Gvz0EvWfhtU%w} z5okqqF>FB?Fj!-J5|ND1Q)l~MC^!fQQ7%^^SyLXcx{1R|#cIJ~CJjNZz|pOFj_S+g zbv_?g%7+XPtc&g}Mb}BC_>FLIXp3JD2oDmzE2rv~c&@1$PTB<9TyMqMNZGG5z$gJ{ z2C)2}uo)&yWgC}!_g@n>H|9*K^@P2kigoL~9UF%K)rI!B76x{^M92!IJmBLTe0@>@S@s6IgNu4wC*4Dp#8Dadh=%3oeORn^{f;}XmYaC**m%k z?uEkk#wp%kp$FJwfa^=Q2dTSQt3GkCLh-Ro^zPAg_o0i5e9!Kxeq1A6*k4 z5zcVHqZBk$=x7-w1BjqK5ucCsC^b%z!R8(IkTe8bzP~sBGnYEAd+qg{BlM}}mo~aKMus%$(7?=NKFI;xm5w5l^Z_0wq2+k-wmI5juwY zv=M#-835JoV+dC ztyrv<^0P22E8+-LiFLH8CeQ3@Iq%ltq!p|9Ss^*{I<+zjF7|D@MNZt9Ow-C})z^Vg zvDwI_gl1-5{koGT%NyZAg|t!M!aQCJjy+ok z;vdEl_5zvzdXUw5Bhd&)hlPetOx5|@0%bc(U*5UHXPqPb{+(gIvi|6rYQbqRZB_q$ACWv}v=QS6POY@NpCk6}mm6yBrv zxY;)dUxl_2Oa>8rbqB_4FBX^dQjE0qx66%3XNpjbMCEH;nW-%GuL| za`GUmcX9umX%~!`5O}y z6of(MDbQikHdKS1k-PLw3zJHnTzNTxcaA@+j{fCNpe)*WA4_fys2}Z{C0A<4mLGeF zRE20xkF0aog7qP2!=rkL$U|j-N?UsLMb|tQwHTN4xB81dcOu*n3X3-#ip+G1Idn@v zYkeg3tSZCe)$4%VwhF}RCQRILSc&Pnm za3_(+gW%?e>hHXtT#eRM$uCb-l#_S<8gp&PxS*g}gf}W*m#rMo*x4ahdzN(Kw9k#t z2L|k8XTnjXJHjMhv>d*X5?gdf0d7}XWRpO05sGFDb8t|3P89>7T8`O?^W_<;%IEY2 z@;vG~1o;C&9yuf*+5U38yp(HmYie)Na@H_*XF_Sf4g?;FG%&(jpi40@^>KDYk%Cat zh1NjX@o2aV;#!R%uacT}tHXubs!x~>vQM+>*bUWL1h=)WP+Wv|Q+}lA2TvaU8Ng_u z90WVkhlxpq@+vyLesnj0=5`lT_RkH#{*X>=@OZ1k@L2ct$cK|s95(V%B{FFy6*yR& z1xH0RlG z`Fc2f&t(aEx6OjlRjY-}N`IpQtu(0i0FHU9>wnNX_?q8f1T`Ga~sDY*v_bH%*aTiWa$hz!Y~c}Br< z5PXiVqyj!!&}T)wVA*@LPbaWq>zuKqE7Ko;Rx;FVc+9I{vg*yb;Ci`sTgohAJopk< zkwXSfTcBtEfGPxaltr^l3g2F0kd&)g$jRT~QcP8Az4iCkduG}%pWY*ckRd`;BJ}7J zD$Gpat)On|w#fP=%dvBp4>Z&{b7DOr;Aix_VV*ak6O5!DkWr3oFrErhUiNuu1FS7Srp+*W62qm+ z!arP7vu?smJp~;Z2@=Cwpek^m7=9)IL=fBJ&h?I+ zAonN=LCo&t8)ZKYmm9@%qmwhiQshk3+zxWUm**Ba8NGrEi{%|Ao}~>0^kGn~47dvk zsDZN=dkmW8zHJgf_86Fr2+XAN%)(=$K3hl5J6L=)s0pv2drRwYg!I3+PM~b@;&`w= zrc8VQc*z%tVqv7*fp8KK#!USnCyeL~O3D=wX^F=Yu^E20cXgwOA{k5NX|E> zKk&_hy=lY&7u>?2y7%*imAQhRounO)m$!6y8@hEFYDdK5F*c6w!sA=uK!AciIfXCM zQNTkqE7N{R*G(QqX|fdXU9iT(3`GYp`L@D*Ey5-wunxx$%K^wXalaY>+o=KJ0H(hH z%S}R}V}>yxNsR)S2LS5Bk-zxd&6Vvov|!c*K%fu>-NfWzu~7cnsy9rY89=g>FK{}K z=i)N-2nB>EN81WWM%w}v2tN8u=UG4Da6vo=4!s;9@!l&b#6z(6m zJ|&4C!yjdVZ@Ei0W?#lqFE#C;u$+9al4J>A=^kVOTLMvB=E4+<-$VMqUmF^#nx|VqEF*0D6(ANWiGc2Ar zJLVnzm<2NLETEjs0rLfb@D#3y3=-GLl*d8CNcB0tWJ6YgJ~%kO_sozSi1D!wS%K5{ zjuoE_vUx1whL;@41@Tk>8)J&Qo@9S{oXv{^*2}^4|@)C75(jUt7+)ea+TT>UYG>m0x1DY;KP!6-z=NA?m*1hpgR&ENkE{;Gms<$ zoV5Zx{?VD3p(L>kj-e)A_QVOVcHaBY3Guqf2g$`+f^L)xOu~;Pt?FMqOz!%8>4+F|SpdmV6Ji2|H~M@(ObyN6z|6*;5#O(ujqgFso@Uu zQ!ntj7x=FtG^DkU|7ng2NB-6~6YCLBzT#lsoo1Uby!~NQmxINHoeLldhM>P*TQOd- zWTgg00Lrm|mV-cf0_eSCj0q9)YDrk1)Hfppk0o|zTE)QOMrqL{Bmk65fu&$9yLS+P zk_b^>o*wF*&g&J9bthG^7j16iOb&j%g1w+4>y2u4o*i&K$n%~XX#2R9Oki)!cJk3X-^+S zX`-tINE~zfDqUM9U;S4rP?d$xu>ffk123%Vg-{`m3@?*qH!KF`aA$(3X9UAnbiH!h zAL@pS({Aiv_H`&&J@mvI2 zs-u*0s*_Xb>UbF^X3K;)HF0Bfp_Z4h<~_IC&f1sU9L6^RPwGHImExz0 zO36P#qa_eG95jgn&t^gmOC<;T=38S^0u$I+!X;bg%x0}v{jd0n_LA}$lX$VA_+L(gtc4H5&m)+Sc~ z#ZsTFG35FJc(~hQJqGZoCQxkI-GFK&{S0)JTB^;sr9xQnASmBl0Xa7W8xZEX0wlMm zj7o*=qhVg^@a!G4I$XjS8xh8m*1@#-+=c2)BAZySc%0=;3^JJo4I#l>x$@=?;#Dv( z^N<4b<_OyY79Bd`t>dsa%O&MO5XYUNSPlZJIwGPx!t=PlH;z|Cv|#TqV?qS=4fpVZ z`NK5~AJ4z1LSI6nqfNyyKqGgbc$TOSvs6I@zhvPQmFDJrFWiw0n~6?xt*9B(Ivhf8llMs&g`D7w7J9SqM+if$3Nt&@nz+p&Dxt1?VRrBIn^fNMSh6KgA-X7%kT5E2K*#XG62Zlo$t$|1F~2{Uk+jT$5K zJz??A+~f`W#&Zp0eg|h9;|^Q`@I|;+9 z#mnt{+gkp*4bWSt;N9BMCFt>QGj?dZ${Kwk?}$%VaD4ALA^lVsavRD%4c~W`BXQj1 zMr)eUgAG3!06C_DV?-*!z5mrZ7={*%^Ol zH;`)E=|LU7$G3&AQR`XTC+E1`x%^)UcSlaKY;HVNW|(*jf{qdvN|}9OEQBjARRIUh zB~wT{sxpb(1<2BT!~2fJhwRv$!rXnwLce42?vi$N!ufOM4x;Y!M;#N(4L62+16P;% zz7c*uspo&kK-b@c%O#>tu~%9F2=7D6s}u$;{qSuMn<^Bv{m)O!!{faD#De~Sj^HvL zZT|0PB9QBO#vDNA3wY15t1ME#cR^D zRzK7vel{rmI_1H088d27a9k>k(_wc`#(W5?R-+pXE>X>dt`6N6SkywL^wSc6Pm0e!0~3M^07Vtcb8CTOh?r_Tqi9JQc?E^$Y}XU7$(L zk?94@os7^=d^uZ{`~C|TtXw=S^FRAjQ^q;%`!;tnN3Z=+%R$b|XGUKe2cy&`6!RNT zC*9#ICX+LYA$pZ7N}T9Ro@&U6v_eY0 zDl2ZSzsM=KQ(DfT->_XP>5aMlzVG*B!^oGJ_cB%0yRbSkBYOkuq(<7PLjBCzs6o-o z6>B2yw!4TYc%>+cX(v0Nv~RubIB(W7JKIs+dvs;J@nC^=<9@}kxbme~HP%y!Ab`#) zLe#Ylmn-plA62R*69zp*OJ)ERD$Vk`(AQ}ZyQ(lehbC*4{ z=YNA9mhyd%we?Z8qBbzZ{i=|++F*-MZ=XZ7QzfQ@JrG0Jnb)kMWZQO!Jj?qu7xQ)u z>iokPX~W`9cAYTFQez~xBzHQr>-ci0&BYQv?BzVQ;rNykr?RC8l!^xOs({m@3;DI` z!Sbq?PrAO`6+eB2_Fgd~5}oAb5wBl$`SR}ZvVI?$u;BE`z7d#&g7=ECgLhJxl41he z<^$oxqBQ#!hOS;D2W3xc-n0CzQ2B;o8h5J#^HfRVr5d>tQh;_Cma*fgp?<1<5rJ{ zNqXyg%bwa5FCYr413cPKE)+!jC~4}9S9mkRHtWeZE!wwJ9$A<~VSBxh!-0(s>g`c8 zDG#ddS$YXydeLTnwAkg+k%KHA9tuY)~)rR z0rfUpnK=Ha>7c$+?~U&D7RCpghZQ}Fwdq|)UcFo}C1vtw>9b zfx$OGwbz9WgC4`orbi{`V=KOf0C}UySF$+mb|_?FDauS+>@CLbD90VREzrX-)Tl}s z599szd^%Ji8~(@3VqCFn75ha!M9884uF8|Ir8iH)c#6|`j=IiNrkn6AMvfpMAstok z?9nAdI%P?vo&U)F2{efeL;6ZZNR7lkDYtKzJDBMPsRT6|>2LP8y#`5Ymrwoh(!KB* zziT{mczepIK)^6@ea)o1M1ki;jJ1=}W67D0sj%Iesfd#v+1Y79Jg>qXwHqch=1B!N z**}r~eJO!AOdE>jjLI~ZzLmW&e1IIU(8{;fG{bVElw;?`i*3p#KtYkJJ+ z569t6r@z!a)%TLaWa!z!C^@0(*fUta*40_$xp2M@H400S9#XgN`&qoVzkwiYPWR5c zK@f(D0urEF`nioe_1-u_lwRH_M^^Tf5DpMr>*4O**za z+vV_lrLOmjFb72&5C0{)LJL0miH1WsUQoKw)ot~B{%hol`t-*uv419&pZ6&RzDe__ z7Tc&()0vG|;5wuDvD5ojD_$qAKVoktvvM0MO8jbix4u&X*?VK56f%ZpDg$jjyLew?=mbmb(^;&g6EzW+jxKi^<_-NN=QG z7DBE^4Nlsm*~}GV#;jqP{h^!RKQ5>J`Do8SkTqY{tn2x2r7fAn_irz3lGSuBROd(O zX2W)n!-lrnuWwJP&KPWH#5hK;Ylv%({P0h|x3KO-lqyk0-5SnrF4x$<@3H>LtE$lO zupjIBsG&5x)SI3(6}Be*(R;#khgGN-Yr*q{pmb}YVEx7Ez%w*OWXzTCJ9kDaJA%Ds z9CcrdL_W_K@1(VsZn}Jx?PxL4ba6cY#Uk>`w023lru$!#C8_brOHI}I!jeC5=|486 zeg=ltl7?wd73-YOG~V5I5;{$0-&30`i`U7$H&m%nCaoNl7 z?CVR@OI~^@$|*lLdE2?3wy+ksNIiRMxgson5OGX4{nY6Ty>+OZH4|3fudx3-YXn^m zA3b{ypv>+Wbq213l8g1m)hh0z$ep7*jIW_%ym22!{lifnMxdRw_P@oBLu{kJIgIVi z@Bckc%N}>~PgH4BeA%)tnep|Zf40;sCR1KUD>>?)q<>|r##^OYU29EEVX+9jHvwW6 zo2y+z*CrETExCrqc?bn%IW@%#r=7aBz0b_D z_Qbb>=MRJzFoKzY!c)dI?~Jj1PYeog!ZR3f%3$>~2UH88@Ts`v-43Z&r9EqMMCY5m?gtQ`fiD%ZSMlxe+Sl_W_8D}jGS789mY6Y8`s)qQwvR1 z3zG)LeT|7p8dDO*mZ_cAE~S=Em805JqEmqJyMU?DWI;lfo=A_>!Awo*ah-Q@1*4w% zYkCkXVjkD^)OuW@=^&G4s?D^jZJuF8>_A^HPsCD{&Vx`xGOBWriXWWy8W!tS zoKC%vJ_tX#UqIP{T_bWG(Ogx)luR2yQpGMsVahqk;e=PQdMDtvHRIy5>!`V!wl-0P zo-1Q&g71%O*P0R`kwoRYqtHnCwq?G*cb*-xd6J&)bw)Sgg<0&zP7a+d!X6*(J zJcCq~K)ujHcz`l?`b&im67s>NPF%TgNSH1@ZG9K==y18ydiY=x+DWwnbo~}kPGD4_ z7`f@&@;8QNOmvB66bD15<*L_=d<{s80Fjhu-vJTEadn5fmm%&)27sYvAUumEUIUaQk?>nUNiLjN0~8_CuzoZ_ zCI?FeUg#TlRcIzTqeMPR5O*{utO`_iH3R&ipAJB(k?zSFAdiu8)pfcRqE&OI@*5h{ zHphx2RsATv{Y$^4u->R%r9GSc&;sRTTn_K^!X1w1I~nI{$I?Mp9}HP@5M3PXK2;M6 z6avto?!|&snm7WK9O-`1+SN$N<`Ad+BYm0o?f&_BfC_w=VM=Nf{LK{#_6??ent~Nj~7MV_V$n@WMqET3iRn z=H0Ongl8=;IPHK{jOnm*9Pu_1hTEXsMMW(8qKl|rQ4D?+nlF?l$nZ{Hx8`fOvK!7? z`5>O^IW(#VF|}bF9`T-0zdIV`LYHmxsG=^kEI-m?L54{M5wW~n%QIwK();%9uxVHe z)hpShqc*k1+2Dx<2=1IObP-b+mgV7|ND}q?AH7K@A>qp}uA~DnT$_>!l(DDrv#DI{ zQ@fueqT+f{U(V>>kn@bhyEvYAv-#x*ASK2F6q9};5~Q+ClT~@H{$p|IU=g+KYDUQS zrQ~Ny7N__Xa0ik@)+eIK&l2`0$Y|dc+>6t((`0M7?D(^{jKVBVE4MJGv`m9bzigfW zz=qst;#{#JnL9#g7iVaYZvewoVu9Wr0WTxO4jIhgMPX?|a7b@YKJNaf= zbQuyR@CG0$17Kee38zw#HB=sZ6u%gai!N3zQq%c>$cAtcG1so=9g7BD3Hvj9{!s0s zK9oEf&E@&*G=SrR^68?&NX5TSzmo}huW|#Z0)WW8^f^58<&|)mfW+K;Wt}hN(yfm4^tFWB~v3=BNe{)m@u`N@2z+ z!>1=*`=C=eD$O4Xgne5<+rK=W4?t#75tI+}E+`mxz9nl_nvzShFW8LbJ8+5~je1xI zXcx^8i)~$!tVLd`DbB{gg9%Vodyoj>xcBoHmH)klWxa!EQDMZbmKrLm22j%o;H3b? zV}VtqkQDtuz8?~jnwQFBVNS*nl07@H!Sa+h(Ep7G?>>OHhMbFgkD?sEBOZ=cdMm;P zS?=Tui4-OjC2qF4Rn@?kv+Nyhf{rQK9u_{UV-^Jk4?>hVn+U$xyFXX%`A|1t3HLKT zB+Ddh4O21y%MYNTNFhV@mikxOU22zN+3&pp`KMtKx5vl*`$@}P009#6+9N757I3jK zuBr%-XB+USt8^s_C{M|C6NBCUcLYURNyV;HT)1HF!($@8Umpr2@8loJ0!iXt(!PZ0 zPXbamUvRs5{^vs)Q*+M%9F-EP#J0J>t1t!l>Ba+@qQ`;Wi$P=<_i^Kbhi}9~-R@eN zcL8|LaW7kdAO_f_6oVkf<`o=&dZQfQ2tXgDNpa|QpGJJ^(xEd4%Nq>U!Qq=|6V$f7S7VaaU1Z5S(VzpE5Op}~Kjr~yb+ z8GAf^4PR##d)jr_zuC>MD?SxVapiCq(I@_`&A?$wdPpkFo;xlH;6KKl3))2#}8=L6S;Gu`FL?KTV>ID$Ip%RT519`5=G( zE5Hs@n$?i3%oA`Cepu(2gSp$^3rX(ro~_HXt4c@_6)I$v;1O zkSEl>VD#*G`61mgGMOtB+jY}KxK3xyal~{skdqyDY>VxRLNLBwImf+7X_{G|(;9YJ z<6ibIsN}@>uWyi|uJNn(@n4d~sQ2N63s6fEeMYP(;}IZLDcL9eIPYP4$v+e@OB>Ursc90d>=fAc#?K#Nz5u!V z`!hy~2mb-YIiO(jv&BcSr8)oki~g4vL*7(RpObm<^zxr)zI+?g1@S&05kL{ItXj@A zV`Vg-S5iNyhOh$6g`qG~#vHCHSct)SO~-Pqcw~>nZEt0@AR7bcO}TNYiS+|fH-bKo zJdK{Ml(#d@fb_`2&xy#1S;pdS(y1VXu*%jV6Eq2z%C=>*n(~Ex9*lRL^~FmXr)@7T zeQN6-J$m~1FK^>lH@Alelb>JTxLvI|Uv{wnp)S+yt!Z-Sx>%S6;Y9u+uZ*?E0;$h} zjzX%1Y!3>^LrTT<`=(c}*gzGDWnv?qPD`^%Z^>FuH?Lo~Y?wHl(@ut5OT2v9A-0C` zJC?Q#S5wJ)sdGIFDTw0+6>dCRC<{?%S{Zd~yy?TvR=;`sZRppR>>sxi1H-=l9{9N) z^=T-9zz`}_mvZi;<-z&y$?A8J9?RKInG=}N5-mh4K3y^VO94-&K&inZ`N~V9mzBNF z$_1Q}2^W&S4pbQH90tLdtYfTDG6&I8ATHQQ{0F$(_ZT89wO;SDlm&H#h7~_w@Q+#2 zo6p3S{%FYBKG?4|U#*%tfAS|&@1ZVNvP4RJOC&NZQNhbV)Zy<$!ic-HG-uUQD$#4i zR?wPEhU%`9Xl_L3n}xayS-mffH-h}i@L3evD+kZK=sE$DyBtfNGVE2N4FaMp1*)2v zjTYvSQi`NJM~vV6`F)M)N%)qJG4*EW3)+gU zSn+8xaHBAAwS&8zBQ~@B62_UsfhyoErU|RmiHMHZ$y0IA?w*L2avslLgwgMLrj1A6 zJVZUx#cuB+!wPs?FeojuQ!ZSTxJ(6=|Gt$1J=AnGsIrn_5HzkB?0bPlTT90hFTX4C zq`8DHrwNLZ$iRF7tIB;4GU7kj2Wz-5TaH0ZVCGQTnC>1szqJ&lwW5y^+3WgGF){oG%gN6Ahp+$4TsX1{F?}VPwww3#YEpWax`>^EuGC@u z2WJ!;-MM$Q{eNkqrD8B+D%@;Uv(!F%%>gDmz=!!6D@|=@Bi;?L*743}y#Z7Dd)082 z{T9#>dl~}rqFm}E4lJPZbatT-03nh>u{E{ptv0tM#F_-OKlnpmKNd(H9K#eWk8YJQ zA)xDJ>HAA=wIW-W@ji*5?DCQ?2iT%g;Cxn0L=9ZJfRFB?A)~rIjkwptCsd#&lcXUy znk9EW5q$-84VNd(q~=KvE*D|#El>eeP_r2sIFsVuQZy(qr3x!HJ5EEFQ3?WM#{z#a znuY&~Mq15nBFwiegen=(Lz@g8*!rs{S3VkyJ8M1A)qC;+7D9&FYRKm{fu>Ls58r2W}O7Z^#Ll@PhEuP$d{)}Fy)+& z*AMSn(QD0hp@y;Hx_wROQY+V_&AtWM9UQ+PU)g~Kd((x~$Rr8E!{e-o+7?WN@Hl!J z|KIGGY75QsBlGaw$;ZwisI`;luL)#g4@6mWFpKz(sR^A~@Uk)}Yk-JM$(m5+ zil2#TEi&Iu7aCQJp#8m;vCUO3u6gR3)ru4%F5b8O$$I6yIfP^t0Py{xR z(Lp>T@)V>pjTfF{YZyM_%8GNMT;~9)92vGjTp6*l16T?@yESVsgErIiMN43&@Hl%yeGc|l%uwXLW z9jM@Z7IIz(1r}y=yB^t35RZv{IRKd3zj6|nx~AGT?g)D8Hw$0~p=VMp^HBODhF1H? z{>?(Vz*e8UOKoMsi%g}ABWy5n8my_tLiljP#qYT^N_WNEb(czw%iI8%F&lQvT5>iX zE8Uc?l{Q}k@_W0iI)qm0-@PeyQi8<-UvVG+ui4;07*;u$sYn+_19>I8sfJ&I&*ylt zXGjGw-4OQ;TY%iBj=fyjo}G_=-SMtUmt;$%MrBu@ed>>KB!Y3vG-+nj+7LNk3p8*p zD+jei!{0VpwRk9eX>4Op#cVdXECrKkefxn;7~(`yV~Iigk>uX&*N5y89_LOAloivW zq{M(uxXMNZGRBl&OHSnY;ADRneKldxe)w`4KT!$&$NrLwH1=>v>qVddl?0Z+9D_}s zrYltE3>3tTU`!vDpwL&i^%otKr$(0F)p{9qJCn{V!9>68i5qxnY{s)5{^9BC zyIb!dP^nP8L^nJ=%WkyT;aFuBU&45fQxL?SIT4gku8rA!C|;ql!|N zP!3RFk62$izH^WI&D`Uuv5g(>f!5zb5Ru4(8^P6s)G75pT)-nii@FIDMjBSetomQs zvis*k_isw=f5!cEfj6GZH)j-vuw)+rk#39NW7}h$%ZKGA2cz0v?+6-WMhB(FIZmEP z^7G&~z~ND~Hu|xq5pk|2>BZJtr>lDrCDD%1MIv;E$gf|48010SCAvcGJr&rI#B<;v zD%uYy%K{18uIN&sug4!s)?&Dzp0RZu??+rX#|lc6Q%I5Rqsh+DD*Yf~A#)Qg1x;@j_X|0_G zk*j|oFvms@0wg7DS$S-za09sW6^H=P{X@mBTWCa%X>X76XpQOba9zw9Gs1b3ai-iR z*~o`@BqxGzvW4%=qRa>{qsT6B85&M>5cEN((OgtFbBzbze)4~FMCxizl(gISm1DM5 zQuSlT#3-jqykY0K;`WG(lm%~PH4lr8EM+4Sh_JMo?r{Kb-pK#XwC$}7?=I_;)?`N3 zuInSoHCA}VaOfP)$T9qgbF-0axY2rkXo0-*Nm&=mizgGBU6WRsx7Qd4HftOCpH>2& z^F~68Bsy_mHwqp%O*5K1e9@Q}U{{~p_Iy>{&r%}%v8alL5MqQ+3@A+DzTCZ&H=}FW zgG;j~3@On1zvA=2rb=o}NQIcW@U>*QNvDi)rvY%PmU5@q`(#_W;#y3{e&mr&T;-h2 zXqMO75;h!7wkyRSuh@+CAuc52xi+c(w2ZoCu2ImY`|1TF$k_ciqw0g8&*pTs8oI{v zyph*CBisw5zo;)2^%Cv2L|rt<8#BTv8>?M&8d^`$Qa0Hc&okvZrm?dY^MMF_AS+^@ zSK{BUsaK5fPYz1MBQM;;TXWJO>T%Ik{iUK997WD!Z2BU>~wQ=RTBM z_j6tm72=CKKalu}!OS($h`o?8mcI+RxJhn}JFZ9hP(3hK9sSX%pxsPt?oY#1dr54O zVexpDmuhRxrwP>@|Aw=>d1`+CcHDlKyfCN~9TKOcTiUd6d{bjJHe^~fr$5BJ68wB( z%si*WPI_zL`9m{A3^dKkNCkW?C)Xi{LVPYk=dQ3q$|bDmLPAJZ^ryoKW^%O zbW5oGzX@7T$wt#`@228_8rWnRWKz>{J7au$bE3LTeYQH@phaW0qGLMlLmTQz2BYxq zY)eQ>;g2-Cln13JyX#+-JD>ss9{u}XxEwWGR3Ou=Z4{pv7iv;dtVenon_KA zoy|z)M=ffz^LX<1GAMqu;F969G15ulrNPTQ{c6S( zO~dFzb(1}ikv{l#^{2&(?Uz36+3Sf0omy_4NiT1FS-R0#9b&aQVs)ZC|7cO{o6U(3 zA~Lu>e{$2xY|ri1-Q4ZJi6OBKoJ~tDefpV`c+fE2$evINRK7}6$iQPXAZnQ+xqAGUU0?(5Zc z)5*w))%<%(bG@jmG55yBhGQ38y4ChP3HnxAUI1KV>&a-Ahh^8p{K_>Cj2@ZM@OKP?T`>3`p9|9$fH<8U|Hm#EGmxdx~xNy@i>zGR)m=4ZR%IC{DKIEfdJ6U|YQ>yv^lJP>Oo;i*!4Lu7NsTjEkCb z4@|d+c11L?Ihs)}$cWfpmyfdICzw814`ED&9_+>Z25F(wHKh*w@%2Da3Zk&|ktmaP z|ILSEwiJud*88^IySfSH^}JTSp{}1M{(PJ8BbRDX=&C`ZvV$YC2SDiqnjD8_`#;(g zXc+Td%D&gZ>APWSuf6&xmP#ad0MJ`hxw96siv~)4xpmJY3x{m3H%~Eno5CCILSI`M z`dvI?XQitEHV*~Kp*uO8g44G~@Me}O)`ZIy$qkcR-Y-HX9i@&jAovibs@o&z#_ie7kE6<7YEUPa0S%SRp;{70>p3p9Mv=X z1D2sHE`RTuOgZIYV(2WrP*JFK<$6Zelv$sbq4n6FH(Sw*c;cz8D1laTtq*ngHj)h} z`ktr%3mE+G5bl(vtdvp4Jk5?@hcKvFx$2Ma5o?y83|~l?n5#>2W z*p5@s1qY%bhUmH5_P*Z@eTgidQ}PcC!V6Qimq8k7Rwrs1-%59cF0&qP?uCr!-wQ#% z*nFsLZ_4$0ECWWx`$mpRa>>Z#L|d%eUS|9)IekK|=foX1IsCmBKmYtN86VFpq)d5F(?)NEog1C3SBgU#t-6iQQp}ux^ zg7R{{yo}d#N2+gS$n0f6Yb+$|ffYt{wIEBaoxgMM<3w$-7I)gz2v+7^nprhNOyE61 zThR_VPrG$DUFUcHUo(^y*40iNA}+}qoqhjxA@uZECZy+7T5#ZB{!?6EbX2kQyTYsT z6M_!c3B`bawuH1d3pc-HPJ>^cuuR;fNm~C%@L|jN(Pt$s*$-$^)>Ud!mdAE8mwlHi zbi}JOyRA;#zB~FZyR!t2m#DHHBPduwvrYxbgH&*!gic*9BAhR8C@XX%ZOoCCn;Ojj zP0h`z6rw)42rT(~-6J?6xlKEFD(_1kGv^No5j zJM}t|)8{W+{R5bB{}H#L=7i}V?>IQ~#9Om7XlW6R>GPpb+BSn;H+2K_ zL7G46AS+p`zWchD6`s+Q5WtnO!DnCyZH6BMJlXx3Uvzo`S+S#Sv_5y zC*c1OcJGf&|M3FHx7mHehPl(s{XW-3H1})FHTUKca%--k%Xgbg?zfO4johyzq)3}v zifYKM+jpe9N>ZtOb9T-@aQ5@(m;Lm)yxyNr$UCxz+1((!GLeOM=nj`CioR04?icHm$6?Jl*6O}z_;PmcQ8 z)kH1z=SaoWrB7A5N#}7(1AW?9MbJ06Ct`b6Qg3&YJ*@ita>tAuNxm! zUO%Y;$kdt^menMO+ux*xYd+b0`QbW_ocKOR{#&7F3q$NiLb4EMvu$FNcwjMSN;>AYREvztzipAYa8@O?@>t)U*VR!~dG~tQ;Nc$D zPBr25ko_-E4gZw9^=xC^_49j2G8?T5s zi-^?TSl5oaBG$5|IT;rUQC$*Syx14y`}jmVQyUc!S>py(Xk^&CB-nN^G7_3DA$`Bv zy^SoTPrXfI&K78+fG;C$_%u-a{9*QH!tEE+ep$UJpxg(^%hkkGf4=4m%4q* zd9dBNpoFHXh&qLhGMM-M>@nonGt8ApmLIe(;jMe8-t{c)Xkv5LjYw+h&9A;+@=mKy zOSpVHw_4GOK}g2dKk)GlVW8^91t}u$v&AzsN%7VBYx_aaS8xB*d3UN+|7Fg}vB<0X z4z_Qx7b*{1JQXONKGmlDD3Xc51jMQvHiDer-P|Y-D8G+7`Fq;MylxFG&T0pf zu})L-iu%d$c^~_M3U)$6}bo%$2Drj$p7t$T_%mV0T|Z zI9D)Zh8xheJte*w)EV|EqdcPl+@x+UNDR*3zo+_$oQ~;}v0#As> zjDXcjfA!F96_Ah)w#XBeoc+9&6vEqj6 zLjEb#Y*{AJ5kcB^35TA<)VaQf*roY(fusaAh%zgyLHM_!nKAh!rLexA z&%>m^`e2D6{M`)cuc9xupyne;;S7fv8E&7Q;aG@J`mQYzt0(8rsW%^8bdtWC7W{8x z8R^!E3h~}3o}#Ne{b<&@*gzT>tVxEEH#m*7rg51Y>>L9A2Qp~d%JMHI=SU!-r#W{* z)dGkQ%DtGeKrBu^2d_AGsCxeRfacRp`m&$$9iw;s7mslE_)Yf0kG5>TD zd$p5oK>b=svFR399<@D@jUrsQ0(U;Q@X~NM;?8k)%+%?amnUGcFV0BK45v&s`}Bp* z-@Q#2qBx(D$R}s%9Ja(pw30N(wl0|NDG2j>kE)+1^E|ns{nr=U7Qrq-fEOL?Ys}8d zPm{k*`gR7 zKcVcDabXUyX@^UDMY+MvR^q3`ann|3U(j;RyeR9LR9Wr#E6YgunHAiS`uT64zLGb* zUqR^DD}L@~#w`~+vlEO};R+X=d7-ic)m&w>xkAe39FD`D)Es@7t?ROea)(UljV8!k zSDJFV`6S@qh|Qa)Zf{8hf8Hb;A@K$^hs4Twjq36Vd56=w@bOdu$=uBitpik)R*SExj(Q zGaGb_wED<_c&{x_;U9>j4pyR7dtfaZC&rfxlH^xQ4sFz9>03Vu1ieI8@r^IAm!DIQ ze9fIfhhiXWXMX*69_ced5Ff9;;xT`yHd0qn_WstmR5O0jb!AiP1vix#Kc&eIMHW+# zLjYkHh4(M7t8RqIvFUPNP}!;wxrXrQ^%D}|r`Y;Vci(IVTZD-2eik!n8@EGZ9g6r8 zhTZ-wZv?7>YGv;t*AaE>`y&8!ELZRmK=3mFy$$%{kbiNy#0D5`qC0`|pVy4j zLglvb~IwpE}k;#@47rve0x10=CxPKl|Uih_6=|4ZdET#a#BH5*FFVMtNWa{{jT}*l0t>`e(Lbqp;uyAwDZ7 z`VAmB$V2~~Lpopux0!nyJh5KgyLOrxpceJoa4A;>p+{^%I{~q}HMv2S;9nk!&BIP{ zD@-lhe=y%hTS{s0b|!4)s|mL-CmZ_j$!dJ)Gc3YoA*-J}mayPRxY99OF`|+RV%vZS zP{`&7T9HfXI=|`tkn*VxkBH^L((njACb-0?>+Ivr3LW@}J#bL*fF>UHbq>iCMt3ri zop?_Tz@P3;dc_JGw2hUsn&}z7_vL;_}vZ_#=eU z1gb1oIR;H1b!j#I_=9$ID;~LG#TkZ{{ha8=>sa&uzu<>Q(1!pN3y-3(K<6pYSf1>w zHvBAGV@_z7i`P8j`I`+mfFk^M8i($?musBVZjb#!SYtmu760;am^@WFs=iyEBRm2S zrl5p<)})f{#CKnh-v+vZMTNCOgh%R$%L=mGHhjPRyvm38M8_XF9F5rd+1t8eu}B&F zNBb*TK6=_oiI=uv#n!`GZ$&Sp&o3BQiD;6_of3Xem+amCEGE_&TxxJC$CAA+ zvZ=#S)Up}p^RHGMi3){A(={Fb@U?$Us(3Acry!M7@q(KNx?T{!5^CF8COY^Se)my= z} z(KX2w!?JgnOKQz+J5<|uPHG4B#NZsUjFO80oe`yYgX?0jII^Mrg8D#(^KyfafT6}U z{4w?3kUIcWI0k9Qry5DnA}0S+zHcQ7(a6)>*F${6VnV>iPW}E&Az(v(P6!z&b%R{E zn=0FiSp!HXQ6yg;)gZ-avZ3S~_>mv#kre3PZ|do6pBjD%v=Cq zA+pn9G8>%Q;s^g#ak3a*!67=r=PPy8v4$}Vg3KqvpP8BrZ^I4%Qf*Kj<)bzt9t#vB zd3!nsQDS4fH6Hso*Z0A4F2OP=F`7JhI0Z)IA;9yz06D@lI=#3Vx*#Yvhg8F&DroR%8jLa!JCl0403VBLIPDh)^`$^GD6#a@+J!e^ z`>6*>F+As9CZ4;anQ#OD)AgCS0&Xq4TLUiwKP{CrlMS5{3+F?yuSEzgC*+rQH7)!mDxdi*pNKr`9!N2#zYJVXTm6}?4wyn&RLM3&>= z^1ZOapIPHSU>m#Y{J_ZVROe4CP%lp-O*Z7WB9vFUC|6@t>o2l^m ze~vf*T-ouxVHkg>0 z(1@voMYGe?chmL6{VD-S{R%mL74bDYF|>MxprCyyM524n{N}9p(znzqhyS zVwv~7iGOP6{5i`S*Pc*fbM*OW0o3fri7)6*l1LFxc9{_)H|K*Q_@q-{j|QPCX^f&{ z@e51NsCC((qO{j0jn>jeeqBDQ)eWbauv8vA*$;tisNn;me4drXM$R&Y8cTAr$7Tuj zEsDVF7HhR%3!>L2qo-Z|TUwXu@#2{}umAKSIl3F|Z6WXBGzU_A4~_5eM7B)==QQr(Gww zi$DJOtXADU_bl$_WsO$|mw>om&+*mi@b>DuJ?l9G4`16$Z>o*cn zYmzh*v3LcsaBiXyw>8+8o?jd_7{hpCcE#q_5-U?{0ENo# zg_FB?n*s~aVo_V`jyO@ZHce;n3ZGI{|MHQ3XZ={R6hVGrpv#>KG7Tw4rs1j;+jgiJ`Vq{T^4#xtYraU6oza zSzL|Jwl=S890A=$@k);6zLKA~LTfFjelo}#P|KRL^uB(xnP%^pEm^mJ z1ur#xl#s5+rmBibTMAW)V_n7*`ab5rpZag~V8$D}>-^_GPn&q{iS937&R8!7c^~ju zIPinkG|C%fqtE^gN%%{b8^mt}z3-}$Tg9I0>Mz&Gt5Xp>zI&o17C?Q$@FW|EU zc4w3`*9IE=b!>o_<-KfhCnPf1vs|BYeBr*>akZ@~k!!)I>H*%<+Mljp@p2bL`$|L| z{)!U2_blo^Qip!%xBsZJ5B5?CE~g4_u&F=UP+-H@b^8GgEtxklD@32pWc5yBtUn|O zb4jY!p+MZ)2WOgUI0^TvGdum9|Gn~Ffy@!gVIRQ0z*J+6LA*w-rNP3{nJV1#cZOk8 zO$Q9mpIzE{-xTIT^dCt(*{=NIa?R-tcxP$L7~U%Vw$QrR2d`{$fqeGw#sb_bvewmh z-SC~Lc5bcd?|IvqWqu&u_D)@Nk zgb#b5%?EFzsQLVBQcH_WrCrKx%ghB;X+~oB?Uz#DTJJ4sYJ$(LZogk>@^t@u$7%X? zLvQGzgqPC!-ueR(N3Q-BQxk5vHExm6$=>qJj$1J1Od)bu>Q=e%MUS-QV?jQnFY8Qg z=j!i;$ff*xyi)DVyDZ`W$?CLsi0)Acm3FcyOWvP%Y`(AO;Uo4E2o)z@7Lz%pdl|Uk zth)woh*fKf;3=jbX5bVuE4(e0B7607b-!1pJg^GWCP>)U`r2R9SwBaZQOw-nJg|&> zo^Vk-F)K9RakM%t%qsmXAy}!vS%GbtR_}&u~FLT^q7ygPnL^QZdoQ;AJZH@FqxmW zi@1+a6+CzPK-x_5Z%4JPX%0^N<8E_y&ZV=NDCr%)r2Ht2`M0QJ>F7kc0C8opH~*xS zNl{p_+1oyT>C={r4%m!j$74YWCl(uV)#dy4NA>0mBkO$b_=q~45xKB%RJ89(VAI9W z+wejGzn_X#DYmMQ^sm_@A|nHQctK}7r$e0-antp|5bv~vDMfz99i_R(3w=Ne%5FgE zP`s)Cs+Wx5c-HwR!^0potJCDR17~&|Vy9jt@KoSFRD>clVnD@bG4+gyt9OD?WNnmT z^+j=SnXMa?$R*vN%%20w;n(J-MC~Q(ZH~rV z=}R?PV}&{~DF=#k{p!*Edy0S4Z(<{_8hJH2U#)zKRn-ug+9Bby87RezLOZ!vUb^|0 z_xq-NH#nBdHZ+{or~(JrX9arj)^wK!^l#J`e>ap$X;<`(cCfFyk$a=oN*r?7Zsi9T zs=X19v}+}451q*O-zCVtz&v#MOe?_AOVXbfxL9M><$8J>wEM}^XN|3zLjv!amLV2H z;GS*yf=VJ~6o0kwW|hmm??lp_+~jr2WR?6~-TV&S-)rAyDi?hr>f~Qq3QaZz_S$+0 zY)INB@8sID2-2O*nx*iNqGS8KHMD#iPx&(?|Hl)8>?nIODs(%SQ8cM_-#1uzuFt9` z#imqN53i|aa7jO*(FHK>(LQ~zfgB}F(|nbMiK$mH>a|Z)yPf5%b#s&}CzKbMkU21D zJ4z-NM9a4oi1#i#eU!DaD51z%BO~(p!2$Gf;+U8Q7mNyCXC&=G3CJ-eL!~hDfp-;W zSF8ra{yJ#6eS4~Iqdcy!oTwAHFnP{HT*L9U2u()7_r5Dodix|QVbqFH@cE{NM<^sQ zS0-0*wGTd@Zbv%u;fV?2-9i6~(u^T$wWiBgq_r1QkX;MHVBDujT)oUfQkEl?QHnrK#3oE~0b6iH;Fp_!ZD@NuwjgC?+b~6(F~)!1LN;u20X;KbV$^j~ ze(s98F{f{%+Ez1y<0Uz>-78-_soZ&{-Tv@(tEj=I9A25c4l6p>)r%<__wEElEiLaT zTR>u9#m0Tbx8Shhx=_8Z3%`Sf^%d&VDa}5alqOjavTJ{GD5eVPzr;%GfVdiou8uf@0 z<}14V*DIZ}&6@XFxhBT9v4d&hqSnz$f^NM9=hEYJq*vkE&1=_!Dv)=6{&N4(d28~Y z=+hUD?A8CM{-HBtH=kqfqUE4~5_dFCJ(Lo1l_za|yYNMyIJrGrQ-gM4Y26Z+w%a7q zyj5iJh9m4hEr4(JZL`;UCDWsS!2}~x@F?rUKLcB{LE7mr$=(ZBLf0PaJW`Uncrq)j z2D5n9WyF59x7x8@wj!jc&*;^5uds=P5`LgZs`gO!(wJZ1uc>~W5Nq1} z^FCH6jeWg18kwa|aDP@TmeqEu4JGU?-yRZvi#5FEmh=lcGziz9IRZKv4p>>WGu;jT zc&2P=qwlM>Q(v;&xJLry&s~E#SE=E5w%R(oqsCM^D(&5bw$Rs^V&C<1UvkDaR^H_} zYQLw>nXsOWe-$*%SHW1+m#T}D-8gCk>T_;NXb5{EZuRXR%dx>F$*=77ms}^s({b(g z?_QND99;;$bk*JS)u`6KSl=^{6ERA_?ip#9Ba8-F%RD8)tko1HFYF$Y-=cg*l7Jy( zfI!Y8X0|bKU2A+d$AnjgeyRczV@_klMoOszwS%E zc;m6WpqKr|sgB^eJ||TcB0kv?7iJlo`QxZenf~&G_}F)&|F*HYi3qcUkizA(9tz?x zEIf_NS1i*_v68qXkNJ4BoTiaPP*Tg{abFY5xOsX_R=#P$Nw1|A-#8dIpV?oa89~K&6!r^lG;2lq0>hIL z&BSv(lcGH-=W=++n-s({>^$G;tY<=^XvtX@<&RDsPEs_8Ai*NGV6j^QL0bau7?;d3 zxLq18QCzXC7j8UmBm*@nqe-|r#N9ELxK^4Md_AQ2i79=Y-jQ~+T**OT*((%o9_~}D zc~C-2+3Xnuex3-~T7p{UFw&@q$ED;mG*}d+u!t@KD~I`0p+D_xladh3Em#*zC0`O^ zNrkxa5b^wYTd5+8hvHMerI3r}8!7ZJK>}A?yYbL*FRJvv# z{LMXO$mf7J|scLNbtr6DkKT|BAQ77HCyl^ zHtq%;dUQ(Lzf}GoQc*G!9?Qi#lYypGh#&D%1e?D+D5>K|t)^tfEk#I}xc(!-SaJ_J zup*V|m9Ku${OMFRzR9USNe;iLj_8*S*l?&1)rG?3LqajD{FO`x+jJIxOCdf74~q$h zM{*I}RP+NoUXIb3y)9rM&IUefS^-4VhkrU96^*W`*+R^{Y%GK_bkp4G5-jaNMRdAIV_}3k! zKSrRjU{RRlZ+XymDq?Tdc$6#H%R@C&VFLhY1W_~#Bbl3Mn7Iv0<}!8oI4T~BeF}+Z z3$oa#yQF3vbtI04z?H&rY}l*mg!A{^9=&mQRP(HTEfv>72{69w53Mw?CApqBS~ssJ z9)S_5_n4twx~iAxgS`gJgnd*+-6JdWQ*(C#+4n=7-bkFJf<(z=NF)!IOoGVuHaSxv zNo3$L5;%wg$ph@8KJi3!`~u_rfySbCT76zRdQ@hUt#k{;noxqDtX_4z-nBy$PHTve zOzNaY%#;f9079DIQMl4e7ZLE)XarQzxUUp_7nd=Q5n7;9az$|V8{uy<4C5VPj;vhy zxu$blO@}bGc_g6`9(MOBHjmppnBP&Z9(JbP{PgmfGkLM{gZY%*j1i6Npy8|v-{J_h ztHacYkN1UE*{GJ%W}IpDO;bz{)wU0hx>Kq9%2ZwsDC9&w|JGld8*1o8E2B_~0&lk` zk-&V6m2(m{!WCNPVt21J=doe``2*=x^;hby>h>2$-+IaG)p3pmgFHwKi04Ff-BnwU znS=WwathdaJeG$SjLApzlACcK^a?RZTTovKQSO2v`VBMs8BIt|LBJ`2=z1Fl`@nZ? zp~+mZJ4ImheGQJ*o==4c{uc0~z`{S=z_C#*Ousw_CWnPX7@bZsY10>CU6cp*`uodm zRQ@(*Ir(XDGqKBJDtBqu=YHSde~umeFw~1jwisZFwh+dBfp1tsA6bGpfKZYQNQVM; zO~l9Y1;%8k9~Eqi$D5LYp zl&R~>DOPY;;szq|A(nVD?cyPVAa-t8jxIF9ZN6C0Gr~et^NQPTlyfi>Ve{tEy~M|bR*n)oyPiVulv zEc>}9jqZVsF1B^T#N-kyTbcxvNFG{pW!OD;;Bm8?&zL=Vq%jutz-5O6mA&W%zJLo5 z!qJ2_iIaTq_8SWzga_HNHKGuN##BT+5kg(Xnqt6~q@lK_%!Q62nVO!m7}zrz_}Nn2 zU65|X+NE&4%YGB4`Xb}Jp$0=k@o)4B!5j}+Y!Hl|`r-YsM<8&SSKianW6@FjvkZHi zg@(Nu_BkxPNe1#Wg*eOuGzLf_!Xp9T@iU@jZ=inc{Sh2M07siL<#LipGo~|wO6dOB zXxN<*Xe#*@4`udsz4}F4thb5huv4(XK>rl7!r<5Fsbjje6l{{7)Znt!o`T>iVAA8T z@G>6R9Wx;}H*}ZsC}VMA&UCV26Z?br2vIs2I07M4Al?AzX%VI$ML@0|bXR>Sl+|Rp zC2$TiHo_fJmVG1_0>iPO-^Ac$Bsd*lW;ZM@XBjK1rl|h&9`YV5{+RW@QsUWz`L*o8 zrS@aPrPn?3`gD4GPi6?Z752_8l0VVTKW z0-Ef{cO7SrJC!?^4k_$SE7jh)vpJJW+OMw)?SEi5>u&&8x1W`(JPj(Jo0|2yly~gR zg^GS3hiiBh85}m>2{liY=h4`^1wGx)kM5Y=SI?>c%T{$YQz#S z+w#5=CK^S1VhRA^xR39o5A~rJ-6*i18Qih}AnFcOFbL+SV5GZEfZK>4zoYfy{iS`y z7NG|GQ6@%6V;Nmsv>Y^s{4|{!qnk+b zF`VUnb$1%D-LQT3cDDnNxgV5m=R3;Hn|#x$()G|Sb~$Ng*fXvJ@@YtJt^AqRY`GnBB>X>4AP4LVUvV?OPn?Uoq)9 z?9tfj6kK4JQ`wHVQDfHd2QTTjN4TC#?ysfN=knAZ9zcFY9o2g7t~J?{DERvUHxG~e z-CmD-fLg$J@z`r}z!(1g00$aa6a&QafJ!_890lS7kPW7SiR9H+f&$L8slLJ+`P}B; z4^Ry(E-3V^X)vtvjEPR7dewImQkxS6NDCEL?6^uA{FKt(-|?qB@uiZ+y`?;jjwHA+`f0ai?imctwdicooHPE$GK#GTzBH#4jVjUHy40u=-fI!sV zTT2qyhlbd_{W|3QD|tF()Scfig)NC3s$R!V{LnM5aH_I+rheMg`A^Cj)e?s`DX326 z0$>8EfF3lc)X`Gp**Xu>@owQeIM)+~+zD{Nn% z@pb>M+j#y!*!of~QYH8HygU#Ulkx7tOYF(~o@yF``*itlFz^pxYpw`vK?TB?05lhX zCGCUEXkZUK1dbFlAg|)7n~$8o9$~Kr*4>$ViN#-oq{>5`F2WLcUQ*Q^h$mO2R>l&d zgIxz?bp{d@au3X~&;e&6$nQiXbp-Fy5LO4C%5?PTyf1h7XR-mk^_#qM(hVd?{4T`h zk4S;)JONkA+W^YQQOf^`t4skRW=3;MAfgoB_jE}1z*BkQZ5&`zuI!b6vidN6pwA0jZ&}mUG)GS%{B;*^#Z#C zv+{9TxhvSo4uY<`c&2}aNKW@8F`m1Tr`W=fy$ky0V52rfn6@tv>*-`|FN8JAnlUz# z^A(+aMx(C&e$vP2u9|6{>rB5vXl90-1r10Z)X}ZwQTt|myxz?>iR&KrrBXNyB$nS% zB3VDEGD+BeuD4(V^Apu@ea9|u4a$y*&wg4a^2D`@XkCj>Ane=bS0aO6F@I?oKIS=R z=?GRhOs_W}ccl&tO6IAbm~y@EV&HFK)dnh0^=oFtu@hLJ+U{G>i**`(G2KX!^q87B zjcKS{>So(R`7`BXU2RPwQOuj*#zZC^iN}ZJ5?^Y*6IMG<=5)TZOH)80HEGVn$W1m2 zq^`lo1eGe18xD7CSXm2Yf(Z^5GPx06ovMQ;FYR}|^lUJ^= zd*O2Dvup%=(AgPruBq=TlIlb*IkkgGj$#xbL};svj?*ObK+@6ZMyA;a-+~i;RQ~yb zmIwz@l}|w=77>U3=!__5OEX5g23OY6^?Ug}_h7>mKGzG}nGGroYsR?qvwzqv|yaK2u*IFYK^NoG5}d^ZHMR6nW;v}CIPJfO3b22GcJm#+YaO|mJeM{8tEA?(Zux&Yp^gSV zCLMr>kE8Oy%Klb^QO)^WV82>w-*A$dd3Jy9Rnt{^dK(6E6~>Lf4C-cp13#Fr`kCV)0##q3d_dw$s8#54*HQm0A)a)GEk? zuU}Yh;KPn#$CJOFcnGvk_3RJfi6Q0o7kKR~oz`r|Cx7^_GAWzYc$J+uR$X0cbOC7x z%Y37ksELm$kt^8uL{h@j0ptf?>oVkKpR?oFIv1l0lAYb~Jf&NIrO|gj!vl%~4)p3a z^xp~uhYtSxvZrr~*d8EpFohE(QLcgMY7kP)oDsU_@pyp{Jovs&g4*7bRCoE7@`3H= zO2^8;s`@uijUMUS4avTK96wfMLu_jTxokfi1#Rs*JGO^9q2WH*%(F*zk6Vt*Z4ixf zY(o{W&NZPcOUBK_98t;pXnUJ&$@0Q*Lo0RUFDe0v?Bb|OT@XE^rX%C1@UOcD zO{~^W6NqR92ppz?e|jrn{vitNV|~fMG;@w1GtHkM;(oz2O9AcY;PFIBwL%u}sC)jG zwDit;j=|8H5J)}u9ELHtrxrmtz?uGM-3NQIKSA>vLd#Z)gTFMvJG`51E>D8g@#wQ6CQ!l>e<1jQ+?MR53 zmJ+5WDRVD^$~bVD-c+X0ggar+_4Z*i`7?GgHVdMi+~jmTiD^p^*E5RVQHsml7QY;PVa46N<#mUZMQ>(KzoOtsuz}1xP3q{SUkcRSlves?nW#W717_rivqtqMIu7gQY6P+G&lS<2{i}yOQFuPxtt{o& zU~j5Q{LK@H2vP(Vt!pif&au_9`8xl1)yVqj#=q*JoP1y3<|i}kEkjoNL-o@uJuy15 zKroGVpqt*5IBK)E6-ZYi^MiOy0m(iJR91k@bgO;}3{kzc>l5B@*vb~24TCmQKh>km zWG3)$O8=vTFUWT~IFAL=Pilq94CiK-+Tb+C^e2t#o@Y53hg=T(8!CBMGScM+_R9&{ zD+wGA)^nM_4^sg6ovv`Q@ughn+O!B}N+GC^){kK8E>xZ6W(f@~0ul z8C2aFqxRy z>&4tUGTk7_pSQ&b@KwljJzlrYrB#@5&;btKjR~&Rg`uX~ak2ZaoV@xD5U+)b);N5h z-}%(P=H#0n1<#bta4b81`?o~@6pP*BOfBCs0#=wm)dWB=^dBKvnQ$<_>!^{-xU~Sh zb=^#%l`W;lIIv6CEY;xlNoQKA{qRt3>lJr|Ov`ClC$i;*(c;2m&BoriA{YU{> z|Hmu%^47@Bv@6RFSw^|#H!L$B01OC?1HL@%u)LdTHF-c;c0SF7BEv9})PRm;YP~ao zYcZ5_8EO=ePA82}P0!z@OXM?maAx=Gu##e{C zcR}l-7CMCt!M!mx3u}iNjp|5)x%O;`T<{tfh;GcW^&~{NhtZ2rjtlF7exdJuv-mtIJiGs8aEH!{q{|` z<5ebU`dUlUWsPB|l?YN0c;!{K$X>yKfO>OjJ%sqN=A>i}e@nmDfYvK|zkJUKUaDl_ zn{`;N9kvNFCf++#dS6HFo_p3XKJDK4zO}VL^ez0wc6M0)!#XA|PnT1Q545=jrlpx1 z+(*c2vCp*?^!}2c81(DHY1#Gm+?F*+u1lL}sPaLhsol%@>|)=l!d|rc zA4gymK!nAZ<&3McXLR0W=D*9-!9UsdT@XXZ zPh&!W6KJfWsg2(n!#YzMov}rxs~i=SH+HFQt#5&e;5_@u8%PcD0C>}7@M@ufl&#v5xv+Mm8B>Y>eWF?F>3!`{p( zPgPguCe5D%_dev)8y#e<{md|T^GBumnWZ}O^tIHxqzwGH>JkMjr3a_it)JKDoE#o1tRz)cEtU#B;x^>ugK8|MceUBMl9+Ct`6XdRcK% zzTO;sJ+lFIY9ZE>W6aC76;Ft~f1~)&-HG*(BwQAkfeY~>W{K)WMabE#LVT=IW{vFX zaOmYmEV!_@kpmH_j>JHu0&^~Bn0wL5d41e^vevHSXyHx zsh&;ODRSVZN@79csIVr1X}H{ z33U2Qhjhr|vOIv=<2xEfhNAf?RhGYHRUhiKa@Cz6tu8hokq`%95V|DvDJDv~l$D9r z^EZ_$GW5?-Z^UFj<3c5}QsdhR{eMa+&X2r~LrFPG8<7{L0y3*e0C&142~CGe5Bf0g zS>KV~(KNw{M+(=jt3|463@M@Jpo$+jkq}+q!ArN7gLr;|>LWIEaD|@Fd+UlKadn$Y zZ_PSqy#Z&@_JcAf8zU>bW22qS^SD+m2A@zLg}94Eo9d`odJLq1>cP<&?w^#&{va9o z+N^79R^Go{d!eP`4k3b2OAz2f z@<{bg7Wi))P>`0Wdj}ltdH4z%tj;=|hb}hfXdc}$jZ)&sA`Di)=0%on05wyb1oT(R zg>Q!wlsbu~wZl%`jdlg?-X!T6;yv@vy@lbsV-iE`Y)i@oZrl!LceFyl5R{*}VLq5wXc1cdXp>E#jy?Eo%SIM!1$TVpQaw>4f{;eC0mBN8#DJIsHKCU8ax&6DYFcBUiN*mn((0M4i1U zfaN-$Ugwm+#FgpWUeW2UZFb0e%ZL-(eOV`$TvCUj%EkTb0{Z- zc5*`Vi3w|2oI|*cax}(vEDo$qTY61S9?k|k5^@>ht;7Qg#S%}zlcHt@mkLJy)DZO(Pr18wu*-+&BOsixJ(mK=dW72fznqdxKuJ!5! z4Um;|&SDFa?tqCpjvN#>6{9r4Hu!orui1vJEt&m5;T;mcVaUJRq-{7>Clc0YO_Vk7 zIGepoo>nVRT24V8g<9f(^AWEEwBvw+&pH7fhc0zw>V2#>I_zmu9^!4gw64G+PZ6s{ zrIX)>yIamJB>#PFdwC$dF%OB9cE^>;?GJc*2=|MB?_B5>leASaOMGUXOt|LtuyKg- zz8L1gdPq|MA|3cLpG)f#?Ze=ldY;X(mcc^lAMH1;b!De%KP|FgK!d1p4)6^hI`Ij_ z^k$fY)5IaLR4&F0?LN2TBTe6Sd5|6*R5skY%&6y}x=7=NM_mkDcN+olfZvx;|D7l^ zm&&R>W0;$m(Nxgx?{&=gg^jLnJ=({x#Xxb5nIBBcG9fqh$|WJ3va+1bGDy&m&*#oH zUeLJx^!vT#nUgjvW{m$z@lfjyHr(pE*&U0GOe6OelY~uR6X(NmhXIDWt4-zM56B7m z+oIZ?(X)Xe-Xo_Ow&^DmX5_Nx_w}=X*P&ZMa@tMJH5yh$Sce?!_veur=AX+Pg_6|I z*(p`+Dglw?1;Mb^X(PsW;?~dke@ll*j6kjrx6_L1Rl&u~Z zg6v#xkXd3)MWvKgh;x6qRAO>&Cgyy@1EZ; zhgdmnEq>N!FZIFE<}WjvFfgTlfTO1HcC#d>SzKeH63}{*e z(BoMRGQC`gbR#QLGaK)qA>jZSEX@>Wt3W;itFM4a-VeXMt! zIKT)Oalxw!li8C}T$+>KUJyp=wOWgkRmdN}Se@|)>yeEy27Tp8Ck3i`_Allb{Ds(% zq@BraI`Z5mM2tlPS5N4f053x=az!ufhL{pAsoiCg6Pu6b}Qc90SPo5*A;nXBl~Hgkz4bfg`tc-9s>M zFWL`n$G5W2srsV2$w2FS3_ow+14?u+S*MSFi zM0Mvg=712ELY9A@GKrgWY%Ts8-l&gv?&VEJqzdYEqJwk<<^=^aumwBH1}Wn~s-@EF zss8}VEeuORuB4Q>B>(J&1D^Hg3nH9f!zmiu5$f)4tsY{3%LMMIfd!PTj_&oDE@Zux z-U~p4$!z{bH2Lr06;Y{qhf@ z3-AlAxqmo<0KbKyCE9OphXcNk@Ryfr67_ARLNS*7)?A6Ov>Ee+dAs>g2s#UrCd>6f zhda54x|)p~V_r~5vUyIgddeu_2&xl1$V-PX>*DlOB~ZGurIaotm8GDC6E5z@M_qGD z3s7JOkW?uGK*;gx0IMx{d{b@a0Z@h0An?1VNTLM5xkchKqadaLnm+|?^+6U-{Ir?m zRs(ENV%DvY%lY5Jz3;dH5O5ejf^Y-*%q-jUJRKHiGsZ&lHzA)ekQ_$w+DpP18BSz^ zmD#{riqou9kY6bnCki`GH_)3_u}Xj?Srj&C-I5WIT^2Hp?+mjWQE4s}6L7asJ}O3k zluv8%0P^4(OHVZNO`X-7)>4-?*QArZ<7M9q+E*zybq4TTKLJlBii11L8SfFEyG@uB z)Gwh3y^IoJQ6vY>TVwMu>QN8La33O2p%{2fTEL?AicB&1mOe-q4I>m^t2P&OR)Lz4 z&cP^lN@!53wV*!scK&yCUVVeW57~kzz|B6u&UpdTraD-h91rW}LcJ76DIn#{3Al0WAy9^{n-_9Js~D8D2ohDwIdB34UZu*;UZftW=4CX5^#o;F_$w5o zV6ZIX>VCPkQW2yXg}b;5jrQSVCuz3>B{#q(W?*e5xCw9F(~(f%df9QB{QS*rA`VB! z!3&7MYq*3*q-<>Qy%QJP=Sem>Ur$sqxDS}^|I)8ZHlm)PtL2cP+fRUIjDmV=tQG@m z!vG2}jvY*c95%r6*Tgg#$CkfqYT__;r!oKWTmHpMz6gwXv?V9C2GDCN;syY9_|pV& zpyOsByDSigD&=6Z;At_vV(^S5TKgu(jjn_W!xT0vbl3i02IWY{*QS~T!_ggd)FtI+ z<4~SUB2F_2N^BCEV>C`I@I23jO)tocGJw`csj{Fo;FLM|?zEsX+WzWA{ukHM=TFnz z!Z21^F2D;$R@*)D1hOY9RPyGFDz{?3jhj}L0V?u@4rA`f7nSg2-mup zvIRPoeOR`R+Kw{7^9WKS=^OtxQJfi>f$t=U4 zIQJ)vP+?7|_UouI(uiQ@`SGK8rJra%SZ(t(8=ad0#S&Y-QM4xmq`k@LlPtgK6K7Hb zpl{1CF9aWFhS9$K#&DQaE3{-N1L{n6A(3G*INY-=kN;e4?_q$@G^1zPVz(qTnyWye zozMpnuoxonA~V4Pr=}F(%ZRkTwcYbV$6B>(Y`~bimWX8C=x!5p;>$(8#PMR@_NFE) zwG1E%)Ccz2JQshXY4V=>>;%(%ZBbGp#8pz95rN%8AId>LBr$<;E6=2Ee_JTcKae4 zR^YO=VBc(IZ|4sJJ`C^8b5c-XW5$>l$806T3UJ)deW6}-u4}}_fTL@u zC>b73TIv-W*;vOV?Lf?DpcadHRur^c>W~dnD~VHZ>`m9Wh(#h1Y(<8K(zz~@pfNtu zO)_A6Cl1B4QUFN!W|eUJ;SwzFRPJE1N2X{M5qZEG>2i20(ahuA8bkXEvxo(Wl7S+) zz@rXmKJK&)1LltgA8J9wo+;cN*Z43D?L@)JIBskXk{SyOm4^4wk()n|YdD#=4BlM; zFTXa=3*4jjDRETi=EslXZ>D^oGr2j_sUqCS=R`t1y4s2a@uRfm^fHFDtlIK4afU0quJ^rH>sFGVsNFhVIIY-cwcc_I@F5@oGDQ2V@?SC ze1qOUKPB#T8(PBeRPr3KLwWw1&Emz922QvKU~wNC`PSZTibr_CHdcCC2r zj4$s1-G)Sm*6+XNWEcTYLLKOzOYg1B|M&6YQK75HFV9Kly>Ywt*U9}B_iesxBhy`g z6h9!F_=rs!*kJb0$D*#GTlgpfG7NC>Yp$vmE($=B6LJg1!Ab1nw&;~P9{2+$A}f+- zgT6oE5ipPD*;nVS6FfD1fc{=A@Y_s1*a!E%uX53b+FJ{v=$ew=k`o43J#noT`Ib2RYu zb3mb|7hKMxkC6rP`L9vvT=l{TPO|6|5LU~&FqaiG;WDP65gJtu$uE1}QUF$h!i=yr3HT&rNrgU*OWMGl;M#viz+W?Q4?w zW$%46J?6GW6Sm$lQ_S_YDQ*3^D_SW!pf?SzRcP#1JKyTvrv9-J-2##_Gmeq2taPKcXb8W3XML)VCXh*$9lI2mjy> zuRv8;P!Cc2^ck!&@u-Q+ow&DfCI|o06YOIr%Ffwcn0V#onqqOqsmi)nscl(%GVs;) z*5XM{Y0g6*J!f%Lv5eWHpixA<`c3P|mjZ%WMTe~4G`O04_ti&Npl&UyEzNXUpv)b( z)WjY9R8?5->4;o0A7zr#?=GpK7+`DxnN!S+qk zeE+?=qfP&pH4U;$p-o$5c8(Ie#lLp%ymFD?67Tj)v1E{<+bznyD{|oClfyaAH%Zs! z)wN#iKmE|=7tI~h?v>hTCgdag<;)$Km;E-Kab1mO_?XfX%fjR29T`a3YK456K~qHr zRyUt@=Zx<6;<_VEH%88O_3CP^vu1znG)(H=X58+uMB=iR?B$v_N+(3?xIf6!q{l)n zRn%;p%iU{KhEGR!9a#0nziyfni~Q9@Kkip<6gloyb5J;*0n>4-{R@G_$|lRIqHE%Y zb3&?LpLfU-HDfoJ>k9Ya?p-(S4cioPT>@;BlU%|FO+qSC-re$6Yq(!?(F?U*?oD0P zP*2%xf2Y!D__2%n?r=@XCGO7Y5RtpfG9RS&oHeY+d{l{?b>!@HPb7q4^in*sw>EyP zIHJ|HO4b)LKjdALQs3(Rytk;y>m**mVJquy*qEW3&9HbBqeP+1ooUz)Q$Y7^mFj<= zY6TI@WquuDLz3QXOJ3X^9l3Ss=Ht)T1E}r8l5y*OvsRbys(L)$Mt8rwm6di{QH-Ww zu6O$)gIn=NzCy>~d6h}gYoxIFTFuY;JIUIw@Z=5;lsVVVeWwHgN zYWylG*6^X|lal+{7ohwLH^Xo2WeAnzFEoRGP_4A$4|3a0!H&Xlxh~!2j5SWh@b`*r z!_pFzn+N#FGQ!!(^e{{7pVN0mX1)v?t@=N}I9X;MAQqqPZ`|?11f~rw+_Lx+ujs;f zpgO6_WumQ9m=Cz`_N-K(m3@Ohs&`$WZzs#AWf*lC8tATa_tv*qE*_jKGi&V7>g0S} z5xi|e3KRMEBul>}*n^;bZZzA_xx8twr_PdpdSTcn(;PcbkiAl7^X*TvhP*a7WGdEa zobOYipPP%<*6olRQeAQD?+g|Z(NtIRNq&glaiTt1ywtXuC!!ZK5{=E%G;?kPR=sm zSTBQny!JsSCMSXp^6vn$X&W9Te=4+icYT|6-jQnKzlLZ?XcKE5h)9s$yYgADIbt8A zyB=++CKg?iuqJg$thy=x=6O=EA#PR@n6$b{Eb*7SiIVW_#i`DJOe}5plnAM|aGQ{* z`K;N|V5wZgKSu1=mCb8*{hm>Ey5NM4Y$H{staNbBxhb~&pvhImxZ7>a5-e4wA{P>o z(w7t49esP~JZ`O4`*V$btMu>l_Zx(53WoLT_#70y__^!7Gh}58;K8BekLg|xYTXNV zpW=719cj1N89Pw*Z@mB9^lr$DiFgkWE*E1+XqBt}VPu=EYvn%)-w>DL-F8(ldeG7r z9^(!0yYzA|mR!mKDu<5=OhsrSlhBYv&@;doWez~3G*O5ux?s3p>)-VtrKk|aYNGw%1? z^(OLSb88$=+*J62zT$h8T?E3Flmq^A_G07(2LrQ)PNGh$|%dgli$`hhaQFqhr2HjNm>iH zkk^F=y7CQ$qhUhw*@_DVEsR@?~NtGYW6USI=8?lmBwft`+;nImGvI$ zrItG@UQ6kcBGyFLEoJLYsIuIb%72VH6nDaNP;QTsTV&Mzxe0ggd~CEC0`Yu^4?gB3 zE0xHBY3Wc+@?6dQ+i9x<*e%Do^FfU(RS*9-Yx&^79v=^+2WwX`mrPzRiL{YTm;%?2 z=WTcf)Q&vDI%*Gm8nb-t;VWLx&YbI9LnaU{#M!Yl0&~SROJi$9UfceP=n)7N#)Ne7yua1#M zROH+oZHJhUPyO`fl_{qEY)1SYs7U$sh&FNqQIQe$<~Y=)P`I?~T42^4vI?EualKSt z=2gwWn%Gc@Ktys@ktlCeY~vNG!acDDhYL+99$c}s?9TT5WE>Y3a{s6)KxH>D>tRLp z+)vQ_8+;QJugL5}cu==`2$jZM!KugZycaBrlj$riy*7}QR4i4Yk`+=R+8tjVEqfCS zQd{!BA1nCCF9#NE2#fx#Z5YRO2F%rXjfReFy1al$serLx!SXz^^;`x#dY>mBN(8eD z?Esl#U8jDXEi_#opf#L27erN|=Q^t@G?7cK7~IZOn6lAh!_)PU0Nv|fs$44i76-up z$6=E*{libF)YhCdt~UGK>S~nrnt5CElBF28NHdeaz7p{CT;sHw^ryx$)eu-I^5J>SqY?^iz}$4n81m1+3;!UH zDo1E#rk~n@xb9?@7~SlDT$5jMz4qr|AY1y+=#ymSp%hkIGo$-5<3wx&IdUWmv5=K0 zG8Sdi=YcBjY|rxQfe;SCC+Ji;GzXUi<}iRVXsXnRZR@P9%pp+51|+jHlu-s>;UBa> zWm$zm++`FJmhM2zOI-{hhaW&c-{2)spwf{6IS*3;Q8=ki+rp15f%`3ZL zCk}EDv@Cx#*X^KevD#cjplXIcFRCgll0BM-%Z?=Gj^`B~XhSX7RFyEQ+zw^B8YoVm z6g8w^l_`8vlY9W+UkK%|3k6XDY$<~WMy4M%>-<1uTA7vh?_gsL)gLzZA<&Kz>L3{! zs9ha2lYeGr_LWK)n6Q)an+bc~Af){!D$Xz&uMf7Cokg0FpQx2=o%=t_R0D!1svJwaNWRg{e06CnL0GhZJmQLs~e!p0b zFw8p5tZf@>$WJg{)EV~2SRF~4fU-?R)6xwc7Ad#E`AH$IPGQNsgNP zyLUFdb!?%9Y}b(a4IseT75bAh{cZ3EUF!IcnA9>F!8N^~Wu?&~&TFI1$6iG7GG&!F}^T;V){-Db%PO&bueA}2u+lzdQ2=hMT z5zO}AfmyJC;$fbXi8GFg02u4-^KWmtY=FkN?34wr3-EN|Fv@@_@PCMkzm!A$6J7EqXZW`_PRoa6`d;25-I7^eb{OhzUH<>Bdi461|~ z5F8GFN=9ZCOJEH}04;g*$1Pp+xrDEO0(L6TB)H!ufm2oEG{V zPWvT&1HmTq^lb2l0rx+i6B;4p7}n?H!vCgbh1htR>`=#DZ4{>{SR7FG*12~Do^err zO(W-KV%No3AbiF8-HMgq|4zpOYLdUMpB?nQSDAg4dzA=CS0tmIG`P1CSJ7=`4(H0{ zQHWe1BP+;gn-z?WFEDsnqo4-!8Me!W#V2RpedeP$;$u2Xp@q3mV&@#TX3;{v3T?S@ z-^lw=s!+_6dLh6r!X~_XJb8`6^y2nmCwT*yJ(cqN)Rq_m(j3Sc_3&~fa z0bEldJoUMP#Xt=>W*3drX(5m4@^W3V-VfwG?pH-)A>!CjQzl5<%qP`xL-pfZC_21k zIM}C+O#ZurY#{U70L4fAJ}Eeyi%ie9SK~;DN%UnO){Kfx(9Z$SuOymB@IqZJE!jJ@M*#i z)3d?tu|Bl@&U-a>d0L3PY#ez)Px;b#$r%9y!)Lf)&#pZ~w_*yP9 zxA1fW)%3Y{&IlQ`u*Drq{@@0H;K*QN+|@$(V&Mk+I@w4+MidPay8--tcBi{DBM_cx zDZ>TbwaIJ)%=fx9)C0wAD1WoaL(jL0+<5uBqhn2TFgTFWRHmBHmdKFf`fzx18N7j5 z1@SAqUzyF}T#tC-C}=Z36df?r3gB5F-!KILaAX>Q3@+X)x*lcc7eH;JAR2%&@PuF9 z&;A-iUZ{&TQLseTj6P|kanH4s_J6-tc#3>g|NPQ*_|?B*WZv+tA%FlIXe9migZ-97 z0sEu6h~C&r(X+;2G(=%xk&or+5wh!>MHV;*fL43~F)s)`$c?#2MoI6`I2tYqBz7@m z>4LFqkC>3}BcB}zCCIdWuusbHyJRutk0Oxrmju}fg){(St#`Ko-}o1R&Ntw3=*bm@ zeI4g->j&}6D_yO{_Hk2CQylg03PA6{H}4{6&;tY%z2l|NMpSIb=5O4n>*&ZA5R6#qJ*Q*#TO#*WBAJ9eszN=)O3V@+z+%@5gu`vgC3pY$}#7P6F zfqV&yIFJc3GyE&O-zO`vE?JWXm##Rw1ffcfP=r~ZcsxE|QB3}L5)jArJ>Grq%nG35 z#!ni1RKk?^Ob#MpKIKKtiHzx%=CfRJXpFQWr9kKa{eXO>h!&j%xSF+h|6D}(^jtosiyANp4)W4oMRNuBKrIf_5iHQW@g>eP$}IqoaR#g4Dc;+mM`iaBPl{;q zFN3+sWTjhVJ{m=%Cw{6qWfWCW{fNIh<8RVQ*6?1u=BLkZA1Yif=DOgK8*B#ECH)yW z7m!hu#wP+aPWoMHK!(@=OdkEdI=lt100hKPBo`=RI8dMoNP&}(2f`!gpSU(iM=!QI zCNIVQ)DE`2rb4X8d@V`0%EyQ!^oe8^lS0L!m6ZUjzrDI==u~Ub$0M#8DWcV%p3Q?6%a;fT zP;ASvL~{?LK0=;^UXqBG^BPUSZj_PIjBBGC$2FlI#@V!+3mz%^l)2#6>xT1$ph`k%E1MO9zk$X1B)12LWF})bb6j3V`%NOu{a;@9?F-wxeJc2+V(Qn1=k;f9 z@Z@249SQ_x^fMZmfBK;U@=QOGJpJJG$@4O_R-8YGTU0x2Z@~!&FV=r>=bNPUq%S@$ ziyfui=` zu;FBc;g;??O?G%##@Qxn@x5Y-rPQ|ObbsGRt)qTDYnIy`X=J8NL1co`jdL3xCc z&Zm(~3c^F$L{+VkCw73`w)&oZJ{N%j4$v(cqzDh4_$OGo_lYlPY+WZ}YU!;jLfKJBPOcJ&t(Yt8YJM8i8}8@k*;* zg}PXVfHl;3lL0+_AX*GdgYrPRsUqFFCFS>nf!DiB|$STmwezS zlAJOHC9k%8vyw~41U1qdgEt}Ky;IsXET4$liMFk3opIUL&es#UllF(_pWeEpnJqio zIidZO?o7eFb7h(rYV0I$Fi^^XnM8PLX2(UTd~$zZvnnb>=4F`9>%slav)zW*@A?wk za-MOtM65>;<3dehnKSUNfQqyCrE@Gi$}Luw$FRvYPbNaIIq+;Xbgg>k#OJS(f6uox z@>SVvYJKS2sb$%908C+48u}ev%+SRNb)*G3$j1o+EX_d+Ic-pV zV!u2>w);ZQ28F`^Qq9GmTf^yYlm`GAfBLNDhA%H9mIXw=8A=U zw@7%NidmnsHvn?<>~Kpms5#qsjK3i0Zd`$Hz=B|!tI1=H@bhvl>kd-_@{lsNyeJya z+l|Zdz(o11s?t~j7X@u{A7nQkC>p$aX;^c*RPTe?Y?N1LVPu8enKvTCvMo4>7){eG zTudO$-iCo-#+PXWs6ysWzzEueWOs|T(Pu5*bBsG857@!tG*Y^v3obo=gVSyD{pM>1 zce#N~9#z^5$hT>R2qO(a1juY2#Rgn)p@g`dHbrtTL z6yK#J!MkjN{L|4a76(7^&j{e*#BRBDImo7h8Iaq9tSZVTKTjD-lnCCs@skG(~dFLP&MiJbkbKztA zg=ZFEJp7H7xiQI6If?d%`9JxMmi>ac67|36ut>p1&fiM zKyhTwq<=2VCmY162yYs<$ufxcE>2CD6Q6_+YbZ|BNDuW*Y z&mg|8E#S;tzD=QP>71W5)J6oNW>_2OrCw)Q*h2RIf_d{rQ%LG#E7>Tlyi`tYzkTD{ z@iIbCS>5=6-rlRJAIX#)+@YD=zcZlH;3+)hP&;R(%sk3o4$@KOd{2Z z@J3nSaV^ECEObu|>4DJkW-qC|(shY~0_ldGUN2;1c%L@_G}0)DbLw)TI*<-SRiPq> zAH-2;ZT9`}dqGZb(nnV@|MGA@twrp~S$?PUMEa#GC)otPvN1E~9lwj+rjfv!II0k* z_AktW(``j#w2Xf*yg&krPsN5oPfWwja9}Yk5h{zK(A3F|F!|LZd~SI0`nFh$cDO2X zl{`zv?CPPb(WAJ8+PrZ2{Y&d3R`nBj8>g#F68Eg)p=D`7R|mkeD<*oWFUxIeyTnv} z7dtqHec5&YQrEG|f*vPPxKDD1U!7yAm@X33C{0$hTqs*V*S9cdE4_bQ(+cWWlIz$T zur#;NP&-jutS-?9GxhM`Ne0{mJ_kUhs@Fm6M*HFx?+0ll=xm}^zW!wC9IM)_Lu*JoU#fp|5Um9xKKfflv~6bJipm<(NY!d`ItiNn$JE$N0`oUYOIg&fGWX)yG& z6m(k(_IZ!C&xel_2W>%)8n{CUj$?Mmj#JR)-u0XMM=Aogw82tXhMcnp=k(&$$- zl+H>(MlRIa6o$sWLH(u)Qe=^Ck(Ha^n(A7#@$q!%vViqiepVaMNg zWF_Y7py}b71HiBP86o4_P^YK(_~N44CRNX|NqrrNJ{Q3ywG&=CB_VJHr z@|#gcD0pcc^%bMWXmCKEMlgAOgznz6a@rw^@PZ*QAE+BkbA}+^=5LIV$8WFi|5vAZ zay~~y?lWb0fPbS|ArSh;j0ftU!HsgW3dYc?3f3-&$V@>P#8v(5SMSUsNM4 zXe>+HH&NACAbpH@`}7!M9cA1n+YOmea9uo+F@T#I5V<2G=EgLWy@!{&>ns+8N8fe& zF6D^eX?C4Izy>r3&-7e4 zeMN4cRcJgoufQbyc(86U zSa(D;<~z&ddazZ<=3-e%y^(+{k7M`V;M@0Tll(P~{c6w!4(tXS5#KqO)d#!PCpjtx zxA_MrDLJpN9v)gj*#pj`ds-d7v3Cc5+=U%hJG`0$o6ZtWZVnh>z|lhK*}mRN7T!uC z{h}h~KkoI*(6Hm>^3k86`XeMLE-ZHDzDI8Q;$iJi0OGex;ZJm-kx8h5GQn7xka&`i zXuF+sUMaXz*}%mtSD%nms+^OhbZG^%FzTCnLVggMYa-!xIbhRZX7O_6Z81;kYl=B^ zuTM&(UncDcFD_wDsqa^#&0X_)Yi$npNd?E$q?d2IA;kvkeMcU$VPVPP-)S7$HvM>- zvJtHzuM})>x4|YXG`Bmvs;QxRIQ*6n#31e6eV*%2X5CX}!VV3WqeL>%Hz)V^9F6h` zodvfehJB*6*RR%a7$@L0p$3};Mc$K*w;VRg)3uadt7xl%GQC$?6oT+qo^I!Y5#p%^Aal0Ua}f zX0iuPd7Yviu+-Hjir$e~P<+I@Lsq?WZIxB;ET@~CuJ3Z&a1-6~Y^97}@yRlwe(sK5 z*AZA#m(bFooV%J)eMu+}*BhJ2d!O><=h> ztCc9ctuO&4OeP$U-AW!1I0J zn_lVK3lTcws%=7$7h)|_Ai@*}Z$-CGiG7@2Zw%@l&?B-$YR+!`xntuI?AGmdvTb1A zb==SctglQ^h!@G~yQ|!RAoM?>Y?ra5@4Pn(iS^m=#roBkteKxO)C zV(S5Sv$M}k>g9oX1=SV~)r}j-jM`I^Zj||RziV{cfe~f9aP#3akgVgW4eLwCEJ`xKXPdSg@+onDTvn%bk zcGBnmW`T5|y}T@($AC^l*l`!Ivf=(#N8grtG*h+J#w>bU$YNb8N{zu`MDb`J{4p26 zwwsw62X!TzYm_Y+J-l^0x6N6dJzzA1X9u@m9?()I;AZo}@JqZFH z!^!3FONmf<#rltNtk^IhW>2XnU{}q=+p{A|r87zAGxafcvH zmbu1Ps>&b^#W60w_6cJK1=K0x2GQ$x;w1UvZM&#SGzx+?D8M*4)`>r+OjTk74bn8H z)V0IZV+Wgjhm0~!$b@=Nu-dG-2F5~3nyOIYDn59mbECLUh<5Dl$v72n@#s})UHTp% zaKLzz;EsR>x86TF;yZLxX{bL-<4wOjq+ekfsQd@7M%0z`&=eo~AM7 zNd61iTtC280BkvID@I38t^b${*vKS`FYyacL~zRW`@ghpnzf+rg^jti zi41dWcX4~5@CYy}^#evJK=o=++5WaMd7xS4-x$b;+nSkgpRI=c?3d^0p2?Iej6Puo zP@KcI;(&+?x+oU_Y8(%*J8)=;m8|OGZXnx!VA>w+J{sX2uQX9C>#XDS^x#fS$^(h&fStokfyIYz{WsFG7os}la^gGLl%&(+$&>R zAsm4oN?p}8w2mCCQKCs$Xq)*e&vM9HkZb}-TB1>5N-^q5KgVO$mQN?#qsm}1u6>VL zPTIwC#SDm@lX9zeZc(B!(jC;(H8aeWE2tjncml_Y#Q@JW18m&^@IT+ry*aQEwupPv zjx6fpWw(nQ9_Xc;>v3FDGx`I?T)N-IYLBR3y|IHQQ@DhSn(sQaH$STZsJvEHY9`>> zxsbFY-nVWC``6>Gwg(#LkGkC4gRlM=Ju{x6nc<4}0VyB$9h(A5-qrKwAgW9=zYk;) z<^FHlI&tTc@%g%T;P|hVAOn+&hKIWe_us(vKksyS<(m1JNPprykEU?4Tn|-6*+N{s z{TP|5h8g5ZT^O0)23%4-r31d4bT8iRV$!RXJ1&dH+=gnHj1zemm5#^Z)9}I;eFE%< zyd#OH|A~{%PLaO-L~;_Jee_UC1cdtvGCDLj7@w6j{Z*}Wd#A~FP8LdjaZQr}l9TS2 z?4<~2+_nKwU%LX7m21*2G^;X$PPrfO__dq;+sbf@y4tB$D|>ubYj&IbBh@ZN#vLG; z{EPccr}&wD>HEJLn~$C#jXR%)MxzV}2IzYUSLxim+q35Ka)N3xhBLU$g-GFy!-qgI zc(~k-gse13j1C-2I_7;xd(28j$4AR>8Jvr=bjCENNOh^5`-Xgs-gN~KS}#B=K%MT) zW3lnjG>X^7zKlAp-j_K#mws}rT~)HVrZU*+x;rU;TPnAgeVt?>_0`~aV~7S=6-N#J zfQK#v#iW0i==UDOsEGNf_C!ZK(hPX${?NUxhaU3#K!L@rn5%KjLU)HcJqwbnFi$3= z3aJL(htLn(6yNca8_6l}1OFc(iY)p2Z&kbh zNNF+*UQ9QNB&ah$sy)vra^`X*{cYjTTh@PgPHJ7ty`pma%J75lYVR24@7CajUr5jW z<{z%tDS*vfn3+v((6d-gna^L|@kyN_nYgm=HcU$739AK-FWfJ(I@9X)`22iMGc=G|A9LSo%Jnl zuI_Y2z0_|_NBzw%jl7wrU-imWUB@dp;O&F{UWAd_-W%bsA<#=PKNhQnudUd{E~=_m zx#4fL`9DwNo~5Bn`VB;}|2f^I6)&wFq0$9;L%VUK_>K4@d+%qdpK|XlsoqlWa-W*X4Sf1z zpZJ)tvj4DZdUZ8L(-nNuVIfv~umyI$*9BN+HJYFrG3c{qJDewM{JXA_n)V*n6s#%& z>x&dw&gz?$@|n<^_gb>oyBQs?)<%!63cVE}J5AuTfIJ>7PuF&?uL>$n39Y_ZqXMfG zouq76Utk=iysWx7KW5YWxEHzGi&z-dc<}VsFS~~b3Hwooe?lYq`XEMUsO429baXq zbZK2wvFx-x_dTJrJ~=KkL^03&mIvLH)8a8*qc0V^lb&eUT-jT@KT>HsF{+XHH3+8= zuAPb)3(^j-Y>LyE zp{;VcP&a*t23EVtt% zYRgX--c*#T$e+ocrRV1^E8g_0jICmVe|ya<3tm`Qb7+#4vOKlhOej%OrQHGL4;`6w z7O9W32Mg2f@tI@(sXx5D;tn@cah_Pr-r{w^2WAKOGrso6;$$0HpAkzVCUvPA;df`^ zdiywGWvUZ$N^(GK)x*lDqwo5P&4lJwJJ-J37vVDCc`rD)ss%0AOJUssg}$PxbOdn` zBe{`&pJ$e}lj@a}*LiA^!8if`dls`GY!^$4rM<3qjYrY{>C}*Bl2*PnZ=6W>Qz1LQ ze%@nqd-`2w5KKN1XcFdlL5$zgXxOO`(Nia}73*ZQT*7y;hak}q{>r;4scKdJbcjzn z_Emk{fCpAltA!z_8tdPT!1YV_AS^DMIdNsVa95%}3ys^Ea`_&*bXls*lQQ*UYY}FwS{|$^M9SnJo(LDZ_~cGQd$beQQ<)(AFD*Mc`p%7t@r~me z*M__HHVwkx<6; zvrX$4N?BSGk3-3c)-DW)E|ItsD6hr)8p&!++8zWJh1cg0B>a7fHZVL;aZv?pC+=+< zrU|a3T(~X~yhZ2_nkqD&fY;3m%{Kj7C`0)V89rWDBf1*PZMqEP!HNvZ zpOhIpV?phI@livS9C#XKJYJf|X3J&>=KkA375WiWT{QkdE=jtfbLf4B0-FSLr&bX5l$W8gmfC|deEaM{4TxPq;Kxn%@V+rmcy3J2WkZGb>Fd%ZJu~vE?8X09 zYe6x%R#B!8MV(R0eF_fZS7m3Y2i1c9n-~dHmA+GJ86ZFr8I(1b31H3WG$-$AgsMry zx!eJh;D$TIC&7nn@8R6?~ENBON|pY>QOss74TNdqFzEr2zz z#}$3vACwx_)vgiwYIVhn=r5{r(E2{v;oqZq>g)5rBc+>`wojQ1qp)UCmABa$$Nrd& zpZ_j$V*(wn8|%qO?b(&eyvC2ttEeeMSt=N{)6Vk+Xyp}0wUQ6>$~AahW1g`Tn5-27 zpjGr80xBInoo6QwLPfFqF_r8UQ|0vDA3b?}TYai;Aq@+Kd09*6d{k)(bo7 z281u2!=Pz+zyy6;i^pprPK3RarKbEVGdIaxl)sIsbAAm$7;&EcH;N$F6*qHfIq*35 z3!x3b-1s@&n?bK=0%Zvlk>@KyM_BasprS?oR+N{qU250`=pWYB%cIaPbMwO;sdH4<_1@oh{hsv)#y(YROX>ornz6eX4X)XIR`qlxEDsb~b zx779pu2ad?3z0Uvf~Cd$+oMGXemfmIa#vv%kUPBbw1Ib~M=3@$o4=`HKSf`2YX2hF zP`rwdq(-9n4@dlU!>9eCgoS`StMpLKT49E=@DBa^rWtZ}>kTd{_q!REwjuHyKj-5h zIlnfz9VG4r8r5yQUCDRQ_Ce<7C#SwsJSPDkLl90$cr zQk47kN$Xe9D_wJ5Rr;3poh=MwYm{4lt(8{F?;&6V*Ug;%Shppb0iB$md6ARUYLV3M@ z)lKgc%Rge$K}{s2wk%Rdc2X69rP?_Dg(%MYi+1k{{$V0tGx?s=K_~j^dhtSHG8JWO zqQBmWMg#eeP(XgoJ~78Tpm7;FA?wRN0pisv->yS#n^frJbitm28X`q7*&!;3VezL8 zL~7bb#>Hlse8$%fb^~0_zhff*cmFxER@EmTR^qS}G&D^jb!6oubw2{meUD+!_?fh7KsZVs?u1~x@>g?5Vq{wk(C165m09Nr4 zUXgv^?D(}?UM|du*Y*I0Wnk_z5M=zqG3gL3F^(Pv=-}2S!G~WL7&;6WB_V~6V z<*|R4$h;?N`3r&KuY408Mi6`uF5j_ z$60QRtU2l+7x^kHcgOSkTK#gJkl5N|v4GsaOf;aDpP?yYbzg`au7!M~Fd?%hea)5W zFaEmoX4r04bOYL`nSaX+Ep(6n0qT1b;`c6-uZDs7d11??lN)!yr5mT?LkA_Zj`4qj zSCR!EvjqE4C=-4poypBaA?LM`WlT7k`9I3;{h#Uo{~!3yo1JW9PC0DIndVGVb3SX% zhg5TxPD4&nZF81tj-k>BIVHyu(uPpHG?G)Q5z=|-eDvM>^B;VFd;a|V;rV=A?vLC3 zc12ixF&A@w^`bRJJ>2>Z+{8KJ)}**-^QZ#g{`;~IQi@PFT&UzNNfDNxP-Wx5xwfqh zD0^&KZiK9|V&nWWRH>lLcB1(1KbR+BxHynZh@jcKe#ZVVaNP#JWdzc3^AYvyO;0d& z?g0LD#T)-IR69b40X9uBC5Q;)1uhA7LZowvhu{iz7D^CFfW79v618;1&%F}G;%?#m zjj{UdKohk$&VuQB{LW>`KUA{L_VSVHZR|sa75r_3V@j@SinV-2D#JEJt&()C`0_`W zNRhM~-kwi&lRsk8UGlxR%Z)q}&!xljmjbd2YhrN&A=wRKv4jXR3QTQ(NppZ zHJJ&|<-$%<)Ka*xty}}*olSY<4;0b&}$gkug?c>ZP zr^mZ?OxIEt*&=bg#$)KF`<9o-Ry*i44;sazCME_3(IaxY159l_(g1<1ZusH<$+{@5 z4p1#;ZT-=@Z74p1=9C9ExHVI4-=2V*e4<+U>&7K6Fu%fo zwTExn`3L5FJ-#0hcu*K=S`(Q{g`H%;ne-^7o8z|t(SHq=1aWv68JB4$lV8MDt^Qf7 zF3)qkt_(ZM!1lFNpEx+JP_^7E&@lY)+UC|s#E-o6;e0O0!@L_{kxCExRD#%$M#lO{ zB#9(uy;F`R!qHz;68&@~P5zjbHO@;@Szp8V&qnIf8IQZ**GhxH(}+s?-k-jx31QTf z_#>hlbK7NIhjhc__MlEPNcd7})7emmX^83sjQ|skS7ZeBGRpb>HMM)sqmo`Z%g#LX z-zZqpx$bZLO-GlPqAT?L)Ws_O$}+Aoy}*ROn}r*z{t=)*F^Fjw_0>d43yyMWTW7oB z=Sq|32uS~V{W>11g-d+-c~ht5)w?73%8xEDbGW;0DDl(QN#mys(FY{Pwh6ms4%nQr z%eM%$KZp|TFj74q>*}g7ay#YQ8eLnZy1~>VFs=J`WO%1(qIq(fDAio;)3L9CQWqL2 zUTM|Dv}7S-)8zc;t~6O++jim68>Z=TGJ_G6n78gY_Y(>7^;+;)JX>q~1bKT@R_JUy z#qFYw@;b4tne=1C$oP=8X!UNU*4&`Jn!UPdTBrZ}5|4|C9t*x{$+B$SK(&#NtdG8= z(2CTlf>dxx&|09GahRtrGcE15)PEl_ElhGXLxVqbfjMQ<}Whis_;*7N{ z0@eY7#KXU)UW^R-^DBsSiQf1omAiJrGgbcRsQ}w(GnpGa^sTPHp!b`gbL&Qfx5q~O zM`F1fhh$;k^np;h=UOuC2Rf}NZw0=+@_nx#BgJK8b^d6O4(Xxu5hYB}$JO}X9|{Sb zykyKH&x-5*d2_2UqXqWdYQf@a|LRrvV#Cmm|5l}&9v^A4Y)2xek%7n7E*Fgpj}tcH zxf|0aJ7s@po9kx{^ zGq^!1f0#aq=1NuQBW)EI16d$(<6X;cn~e#5LbhW`3~;FRfqyno@fXqPjE%HAOZNa- zOd%6fcDPLn2^yiz?-1<}hpQF8yFD&0Lp=E5GlYLz!$wjg^fhB!=#WSAQovli zmqW5m<)Z|J)8ec=*=lOU)w>sz9wnKZL4?`J_K!ZGMOAFYzA1K$QhEu$4Ntd!6W4y{ zQ9Ek-kEg+fyHwPX5EPP-{E7u|;TG~geu-TA}CcSMs!+Qt1jIk~x% znb@BEctY;===S679}PEs4P@>~mm5xhQpK3_=l-ag+&y=LFo!NzllFXUrJ|Bnt;_4z zzdrJ$Y^{<&0EZs!O2@s)i?7QRB$eHYD{Q+dap{lvgI(m30^FK;L;|ov7$K6j%dRJX z9B#~`h#D!C(q0Ll2F!r6Aj<~nf^oUuFjG)JN@;RSFpY*io2Osau`-l7-X^%$HQ)8u z%^Hu;6(3{#C1RICub*42G#YQ4Scl~cX8#s%=}EKAp8Re6VAOcG6)2;M*;)nsr*so3 z;7KRtOGVrc$*I0I>{rPiD^7CbZag5RyBk#h{mRd$?L$Wlc`fq= znAN^_ZukB^4Obk!_8!9}{N8z2Ms8V2mX)JC&A%)MI28OAbdm^Hh&5alA?so33HAR7zSP^IqtD$bqtpA+YGn1j>7H;|vs zLqcV1fiF<|Us#Vy!)zoOWJLqx+o@?iV_uQYexWt1MTaA$4ET$`;`zP%fZ&f`$j8;f z-P{)B7mfas+)1# z`LLvQLZq7p)qPuBYo@#11E9Xufm1qLKP8Awp#$05e-G>Us^zhg{2FNvXUmMM2bOz{ z#Y5?$VvV@XuP%>joGniM+-zXXQ}&1W4V1_mzpHmaYDzRQ*F6`li1YqEC!AF8=gYqE z?EO4a5}XbFh^WcU)vsg|dEx>72x`SV1@j_R@74Ls$Y?ORa(K+wr?A-e)QWUo@hGi2 zUH>zbps6`UOmB3rKU=ETnXE9-$nMLRweJq}Xj((bwg$6TDhGcyCTMvYdY$^^YxCBB ze^<=UFlbq=lmAs+`zBm04QhQz?d_fL{LSs>Jia0-BV0M@)-Sc6TdE0OF7RSt+cbXA z!VucSv#BRdYAPJJ8FnnFXXtrv@e`h9b&RPO2ExgjOIewI(2j~}gesjn1(Ein1G8k4 zg#_p0L%vLuPWO_jghB1OZ_g4McZDf-GORX3Mbz{=LB4Q-bfzq%OdjWRG@E~=7GPG_G@r^vjPuA0l!iO8IaU8^*> z61-OJZd9rh?67GQWTRhL+pCd&DMsdS9N0ypkQE4pWy>F@ydDjYA^)l>t>lj`@QZs~ z)DupuL|oZX)2@2mqv`?sEGPF}98C6wzc5QhZojvi{?Lh+Zu;GK4P7jX0k&m3q~kYG zN7_$i7bl#YHbP(J9{5VQn{NB6sa@v0X}nexX1b(A*@HcG>KM6ZDn+XBYk7r#nD#)FGB%wI)UY8-#$b<`<5sE)am-SI%9`-p8_%l-pK9Sg^=bk|-y zhW{?pe){=)(I#P~O7lx&x@g}|a9U=joz+@-i_W^U(2dXClPg1x#-I|Alln-q4*-pQ6<c zE)^@k(0AD#U5HSa^pW{>#L@rqq30bnxA)wuX!2EW#|8!#qU$PF2qyhmrDFjsja|nq zSQ{f0vuI>K@0IzG*26=qqgUECv^121<>ySg&c?i7@$AaIpVicWyZNR0Ytx z-gllyI`ZXGgrDHNTyviWoqt$;KI+;A)R_dPVOTZ<9@K+j` zDubnVq8WDlo`MU(kmXC0_OG^0k?0NXVLOU8Z0*we1zo%1ukUp)%-^2pkjR$qDW$@l zZ#16o5@nVKuv%p*_s*lI&v$OF|DbhSjr3=r68_bk z`}*IQIoR&dEu>G(pn8{)#E35tsdA)V+0}=Yl53~v7k;0Tw0w4t|J#GfUl2O2qY?-| zQa)4tLBpF;PmILtlWkH29aS4b8>CCS5b(6UEW;0Odf%A)>3oa~q6!-995gxjFu`A{ zSmN|_EbUJIjuPMjyEED@}1N7XG%){v~Au55hwa};@!(T;hq0L8bNlpR#vC8lS)!KS@{qpa=W7^ zJpFxVQ{Aw1cI&~4NO^yqyE4%`eLekTVCqLXN_wk#oHP&H8Pcpdr zb=$OgL)Cr|m{012kR2;Mv<_8FuQBQ`4$T|#!UV)Rij@9nWFEzNONtj%2 zDSQ_U9wZN~!Lm2T0_|-N_&D6O6xeVZx?ZX^d1=b*t$T3gmKs&VF~;;)B2tqU#FYE`I-)H2o_W_0Ii$j_%QA0k zmeIvO9WC?&&hBKY;_814-7es8mUJ04xkYEWSz z_%aHNxODpEwucQ_D$fD=vHdK}o*&}aGOu%K4NJVV@ecByIAZldMz1}5^43;P@&1jP ztSJRyQbD8dI@L|X-gCLwsoAz70h2@olv)OC-aKmyP3&na%DDUbxB;X3iIO)0v#=GP zZ3U=t%X%Gk*dP{D9a#ZWu;d;ORee*a#s!yT@1bP#UE}*j5)o&FLpUfQf+02 z+Vr5?gPyj$d)35!TYTbaT$Ublg^c!{ebv4s!SWhF=W%RqPo;1JSx6348U{n4| zz-)~}@b_3={=p6H7t?zc?OjL~rmZn+Gr1NSGGFx9>vV^4{08RsNoLNTcYN1l8Wtf- zih+}Q5(dQiom#!3jO}{MaGM66${RY;EAXYPG9LQ$r&d~IWaN`?iV3gGb6{Hs@q<>U zPxzBXcn8%DQBO_Pu+<)#?F=uVzs({y?%H`!)l8lZiOZHNF(C zl1$fyk>MUT$CHKd0~F{HvFOUhx#1vg0_gs>L}f#CKMz&IME;v|P?1$|GD0+krchV* z)()C3N*%-YB!t?;_i`M|A`>1CdNRQjh`$bP$ahco-f=FD#zGb1RFEvVFei$R^UlU0 zA2HC~0*PWZwH-g?egI*{&MJNk7!eFTAwcdIW_*Qb=F@;tba)RBwZj|OCOTP8Jy

^D&>w-Ev=tM4r^grTD`%uH#j$DLJs>CGY z_%^iqn>$$F%?$AR7U1EnUUi2DSlIJg9xtmc{oum7!V_nkOCHE8<9;lz3Kuzr?%*eefj z(EiFBf_WA9^5p0Knr3A&#bLIG!5G&MXWDzPf%Pfq8tL$F08p5Y631W#uv(I}0*ED) zxU81i(s-B%XZdNsFmuQjJb|ZADqHp$Ab$MtO?+i$n&opGfYL83e{$`G($_ah4IsSw zJ9i5)v8T1gx0fsv7Y*&x4BnYZ=}{f0OZ0T9eLDgAI)gF-bOCXa+&?x_dKv2hIHpmD z?IEhhfpmK)atWt$|FZNW2G06lM$pVTyxBF zg^(t1;lJVm0!#P~2&fI9CkQg+dTY}&7*10+Ej8{{CFHR@?Z7K$wBpTl5HvUSsB!Ag zofSu}5L`C4K{!qa> zWCdw-25Nr>nigac3DLr_(2x}VvQLuqU>P?#3knFg$I?nm-ML^<;EeT)Oyj^^CRu}5 zr%suAf%WzpPE$@Ibw3lP>J$L8NQL*R-DgBWg$KhUCZhh6U%){fr(Bc9b<)!Le}Y2z zvA9@8iJ=e?a-)(?orSHO?sKK^Qbh?!3Zj{Lj+!F62lVmyDAP@p?FPr*PMtGZjS7^F zHnlYlGCQlDs!Mur;Ol*iw&3Xhim>-aM3e|k1L6M$;oO@pmM;@XN;u&a+kC;Gj^-;> z6(&KGTALJ221tWV)GQ715QyvPQK4K;F3P=D|^C#>N+%N(VnShoSOHLsKGp=R$7zM157?x;p_^W08SU5 zPrE%k_(eU~A^vR6!mI+-NpFg!WK4wmvJ}X~nwb=(DPX~Kf{50Dz#1N@HXzyj$uof! zRy9Ax zhhI!QC!(byNc$wf#3!vYZOR%OR5FS@n37B~cV!!Y-{ER92&~AQ>z%D>brFBmg1hm% zO~I%9xjWwarq@wPGxb@J#w@G-g11EC0Jb}2$YmZoD>oc;bH(p$Se}oC(}xQ~@~)J+ z=LZuyYpmP;ED7do5hsqrm{P};a&8ye9GMojJ1kk**w90iDcNW$RiHVx>K1`D={Zqp zXWBqj1~D!AjW^&asRq1Y{sWdao1&~kRQf{*pO!QEx$>03dNTZ_8P%{@Ie69S^z0w0 zhkX9^SgQdQVZJD+t?arrqs-->~19f;Dl2y|{N7<}n?opD=RWE$o9r^&oxQ#aMzy%)LCW}IVZU7VS^FNl#eAe0FFQ`@1^ z+o2|zwn42~$rHbu@bYV<@{P!1F0u6bHCC=-`?rNvnJIzH_9!$}}NoS&dHwN~p5Ii-6utxo+s(>>N4He*`H+KIvKA?v^--YAc0OIuoXgyGRbATmA zQBZqFh_L^=I%WAT>Qcgts@9--kBoFaqrLS!Y#ysr?hG|geYQmse7l+y&l+^OAmU3% zE)99auc2(!0)4UiuxfSBs>nwQ3;iz2o6LJ8Bd40pu%hZ4M@vt zaRf~f$uEVbnj(+RMU1UNJrC=38Y%HA;Ml_HE^m)-I*1b!W;Yhh8X6?NLt~#etUDM| zx14M-YblcNv_;pnrLRy}-XKgfQ4RpY^ik3zH%_3OwQyZ}yaO}e$Zrpa_@qW7d;WXp4bVWEtx^FRJ7&n@3Rr%(NKJt z)zj78su0zB;<4VtqsBrJdTRk0^sEckT~d$jmKr3WKb>Vhy?e5r>Jl-iwNFuGvy^6u za=t`f36^y8Yw68SNgW~-zJBN5y37-bTAZ16aQcTZLHE4;{Y}thz$HPJ9!$_-gCV#0$0b(6&?)-gJ-l zMH#~%u5BtO{Q~RCz`6UNS(j{mFR;ctR)PgOer)dKiR@Q2KfpG-k78R`RyNCQH$nf-z>1J1M&I z270*ld=B!0u{tu+a)T!wa z#>q1px>AnIKuSCSG{?&c$9_jpSpU)o^?4s$@+6D8Gj*&7k6MFor3~tAvzkw*w&=$f z9my0^I3U2G@ZjPz7X;_k2XC9QEWnh{4?(Zq6En`SfK; z>WhbNez)Sh{(zdlgPKzlpxdnMR3ihxFah%NNfgB0H(u|&?5YbwR6Rod9Z`L=Ri%uj z&LKxDL8_beEd;RMnv(`GeeS}`>vttiT(pSJMK--fdu2^OI`hkt0dfiZ?;G{XnY#oL zb3(mLnm6@0?(p+@D&?sBU{0lZ-^JgK_Jf+dW=-SVkE0;B&Zjnmp-!Su=6{gJLcR8! zRK-MH@y!8gU!vA5>$=q7G0D^e#Z=9GR1#auoU5fGwyjxQW~eF$<>mID z@fYIJy_3*NA{67U?nc(yAV6pLWh5aI=D>mzzk3hY*c_Ww$4uSn4^>8lTJc9`^N`<8 zGgU0$N>g$|lU#gJj?tI1*0X}?_VZw8-veW{K{+xRq5Qd>?NrhRtRMFzEV*Bd|l-8yq+{v|6{*gfDEQA*;cy(ivb#JKlcZ*j&t z*HwxXU{C=9azS5D$wB4P_eFz~R?j7QNxo@HHR`uZ^;0<5(&~@+199F4wbA|HaSx!RLCPlbt%P;7KlEb7 zlveCMvY;kQNZpNpm&xI_j z9?B!J6>aPz$NtglC~9+Avd6zZq&*+iFMniCvy#@nLvdYr`{nk##+#Ov5#im=Hy(s) z+xFh`nvN2^#RYDn%+Ef{Xq@-IsxIvT2m@1k~!;nPJeBexP30O{i@0XL)Gl!#wlGUDnGk5J(ZBsVkWq6Tj;cWE zrNH&-yYKNkAs@IDpLwBoG__(+8H8Fm751sim0b89y57S#KeRn}gycOp$b1M5! zZ=CT@Y0lG>E^4M&;sZa4MrqXFSmaT-epca{#x*{@g>bsdex{aaA6s^hfs4=v<_)j1om={HqG`_ynDRRdiZN}d+fpo{umJ+$8e~Y1eMlou#mM6bBj)+pD{rQ+b zj50hZEWg1r9Dk5`ymfVa{Fr9RIT>$=UBuntZw`lnJP$)_ctB^xJctAcuesWVbg|IL zrRKsM^P=JFmY1JEka+O`i;6qS<)3v^Ue9w?o{u~DBog-g@To(2`Bp1g$tR|bIa?d< zIKN~Csj-gg|Hi(maIAEK_!m*NzXbbvSIg|5{vtz{PiL?9Xvs-j3m$1$FJM~Y%nCSR z!x}|PE&K|zHxFYyq%_5}qyL732$kG01HHmI50MQ9H^hfX#w|6K}z~Hs{ z!ObN;QZwN13;<71b3#(421R}_m;^PXU4a&~wC{eFc2VcWoH^efFH}y|fjvG8MKj6Z z%JjAQ2Lh%lYuL}DR5vlZQO4SV&wutk9f^ZYfu6#CD z$k&aH$^}%@{10pmeNnuj&76jS7m#L>0_UK0ni6g)DrxOyNnY=ySLpVx5v-f+{{lZg z#?>3?Z1IP!;r@+gIS2=i*O;_OTO2Z>f>ird;h2<6UEh>UO{XQEIHzHC%F@l;(ON7& zMIMun&A;>aqQYB@y+cn;@kx!3A{*W|i3xRz^%2?V3KE(Is)2pNEc2ti-l07M?Wx8A z2(M5UinAXnrL)A%#{vmu9AxVE&Nh598*XPsa`zE@7dKT;kr8Y zL^47FEcO($Oo#a75acb@EW=M-X&B2z{yF5-@(e^2gGdxAy&(a%33*C`xp9QgL(1Z}txV8a=}w_L6?F4+k*(&>U58+c z&m29vrfXzGSC7y6dC*}d4B(NZ1ML9e;xTX|B3|Up2mSqDSwKZa?Rz9nvI(0b!FPtD zyqj&HfmULtWmhiNavRnMl*KWIGCFqzFOw?-q;+=k_n-^ewH>KweRjm%GvAu zPEQEj=?bXNwrbKUhz}otQvuw8S6;rg{q3`;(y9~mFam@UI0cm0+`Ylv14*UbG~bKY zF$!be(S{~k01s0Gct}$$lNu+edTi_y)p$9VxJC~ks@`osK24@?iq`70EVf8`s_p`R ziJ&8qH}IXB?S;7kl2`Pe`c>g8f=#Hi`}PZW_Y_qC@;PJ2ktc7KUEKfeeM;&C-bhP?NhO1r#{GePV+p;pa_&W0hL2jx_!gwKFf1GRcJ2l z?@oU4(igb3w&w?5T5{T*=YLcA7Z-XjR??pVr%XWdlhaoSxd=-Ki*J%~FQ7 zBOwo5%?~GnOA!`aorYXiTEgQ$qh z(`sz75N@)@3dV(dyNivN&12&|4U_uSURnJ8q+DKuI0*m+_IHHOXPR)INu~&$F_~x` zf5GFmW-{6ZNLLaC!p#97WUdqR)2Wm>A?^<#v6^gyMUFiF*5>5%ScGdFQZ_EsGfgce z=ZxB*i1MHF;`W8SaZW3r(Ox6?S2fC?lCou^>!3GiGfa(y3x|F>Vvd9j{^tDk)(&dK zmtRNoRU??t5E4*1@KqAMKjGO=^0QwFn)~7#KdacYS>*o9Bv=*`UV@oxC4Jl*KiG;y z9^wcFV;?mkbxMH&Azr}Ge=xFYOGuApEMQ6aT`fuj=pT+1+r>%~>vuK2{mpe+n``{n zs*3vq%Y|%r1#&mVQSXF=F%8B5=b!OfhJzJovLP5=iS3QWCJ<|iR~6G4NB=2m2R@kx z&L-b5qQO*1FfyLI62MbQ`q)kf>9yv72v1le#%hyK8J{&0WrZU{kp55_@6wTncm7*p z3uJs0%^whdHz3u%B+&-TtoEiNnSKfHI8|WgIQFo@oj9^=K{(q@gG^6Nr%g9+drHe z3FlE=!FD)SO>CgpjJe<*>4MUEEy`0St%ZG6Y?dphES}{LG zqq*EBp(;$MC{px97m(+9{bg=QHGq2$iKr(Z^Z@u;wUM*UppIe1yPt$46@xw69 zJGCPBOGx_~j@a~q`jshOZ!+*ai7iVLd&%fmD`HDK$)}(;4@YSta#I`INBIQ>xN$6Q z;pd2+iG!!`v$&;l;gkWLfdI9yLK#5G#wCZUE|mS|5MTiJi<}-5U{zG3bDbbuE~{KL zfXl#2GY2FmQs@)5=j#W8XChF2)}>4U&rBB=Z{)LO26y7i8%A23QZ&pS@hXG_WoHGCcQxtu7MM$~K^kbD{>HPou7N=n#EotYSH{L}W! z=LH<($T!dPDgn=BPlbiE;bqQzur26otygg^=7+^}5d9eFeWu8*i*nk#$B)m}(=Q^Z zFW~0uT9Yq%+DSY!n4Wss0hh*PPyiB?GT=p%#bI}c0z`|j;`swYWr{)>=XP+*<>7=A zW=m)lwy>n7aM6MyfhXRTbyzpM0_b#H z7yXDdy3+E~MF&&^r+UR|xaP^u(q!j&IyqEj>RoPuUGAAK&@KZsb5U_pEqT{bumf6A zA1DIX7NQXa86&2dfnm`EVHZmq9vB2Ov zrV&&H;HjrC&lJz?pF|2TX)6QI3S*JPrW&=$5Jsl=;}j(?g0d+=^YLenZ2TB=+0vukc;~|Z?1#_oOV7f; zU3;y?@ArCtSY9ptBLr-AHD< z^Wg5q^sDI@_<8hKk>Cc~*@rWBPM`MbOWpftHhgaAx{Mdy>m%`~bd)9PFsH~4Fc)Y+ zu%MHw&>mShqo#w=keqZzbckTjz95?R5jSD>61R+=TC>w-;fe_MLn)pou86T)Rj<{# z$J~uLSPx8&YS?T6$+mzn+(oOxak^7P^;qMm7sQ<&-}%pcIam6L(fc@bzx;IHX6`C?5l?FvBbfo_;+t~F9wzsgwuf0w(w$Yow7^SbqU1^d_oXxXiCC_dbO-br_YcJn zzZLmb8QwDl=uRae2~`3elzo$VrMWX#BXx$ z{P=Hb;2!4a;dm%Amnfn1-RtM)8jMO(AxAt+nWifV?_r8yH7JI&a3Voi(G^#l^1XfJ z+UI4@7xgVcPeUS~-h7yq_-EarCE~H9%Un?WTz*y=$S7NOw=+>JsH+3i2rre0Y1lS6 zPY|saKYH^%sV{Wqh$k^u)G{TqEL{h9uig8%kLBbl)z0$lgMAEdJ^l$GC0#V*SVq9D zi@BMXmMyJ=_2p9b z46UvgK$LvSa>Fh#Ln8*2gdjBmv!Q3RKAM~wo|yofnBVsi@;2=?yq&Zp^qPqv0}za% zqT6S09To>fA{+IkEx#}1sba=LiW+M-zaFk*0C_go^Ag6l+U|5s1RhM5ahOivxmo_z zq&@(mPn2@~B+t&RU{(h?CT(_J&MvQNOR#fZdX@midDO=erKPWB@ow~{e|zSt%|>m3UdGM zSX;qbrpj2;Xzd`?GH>E{bAe=64&lGA8F@D!$d;obQWy$8L}12)v`f3sL)Jr}Z8?{( zoe|l;Ad!S!nPOj=Vx!i=ZWVKx)&=*bzrB6SLi4d+#moCv+w00S1q&{}4@o z_U|748^gdNn5?G3JEOlK5pOt-eWc;D#IOCD$AseIM0Ey49yS>Z zPnaeS>U&Uxht&1g*M-D6g$y>zR<7~dQt}jLR2g`$WmrTQ5lQ>cKEi0yamj%9IPzV| z69`S#NF~Z&Icl%9Da9PQdmE%-cVv-{Xt$2CCm_c@Q|q@8(DLT>4raS~H%TzoQNr zJGS0A#*XQC?#0{D&XccwbPM9T*c2eLYs*tYI?_Gh>qQWgu1SQXprr?1yZo_qRLEQa z2jD7YbC+>0&#Xjia^lAB#2%ZBqSiiM^Q&IY(aOong1>mMkUaMJYfmmFxDynUS9Vyw zK!t3kpYJ;qcWw6KsmLXYP&|IerO7U^8dWoEyUe}yu*hCIDv_WZ<9GzJnQ^ioF$Ivg zP%~nREm8av9At@GZS>)X-!V{4+?3=susiaz?~V5Ob34_$N88?@Qr2VmQfg$AA&j$i z;O<;Cddue2jb~3$n+Kw6$qaQJsgA5+~32!AFxjZS9ft5Ub93Yvv zB=Cn$1&E7m;peu<*QGOzqvzh8es~*-dNRlbH2I%!W|cWy{tC(r>`|)F^Jgq zv}Wt2!T1v+Tj4X=SzWxPG#h1Q#J3)tzsV*4!rtWi0)eWVc8vrK0QLM^@$i0Cw#luWgf!_ zQt-;I{khsz!d+KSS(w+~3=J6c~tVIN2V1Fw@-( zYIEgLt#t9KAvRm0ezCQWrH@Ov_D1`$c30p?T%)+Vb1gKl#i>U60q@~(_>$7;$01#< zbUTsTi0;JU+)=IC2}HGQPwbZ>7o0;uNhG47WX8@FrOEwJXzjU_NrFmr|DJn6IVEErY>vJ|u>14sStRn8o`L?;;Tam%6C+$%KN zd5KQ;O_f9%@i7wpl2mP6&uyNk`}3_F&N6M>wQ2Iwt5awv_i?%L_~0`aja}Ra{3uSZ zgzPk+VvAwrl_DqwwDqu4mSHDR(%BTP;H-}B4RnT{#ybPiRys>oP*QY2n#es2D4lXO z&4tI_L_4jv_$ptKCsih?Yu4;)&#$R$r5W?ts$qa-x5=!M;#u$e z{&{+)fn#TdVNT*(c^iRcPrfhvflca!T)Yy&XcKol2i7+;E#V z7bK-+*y#+a-Q{&^qThd``0-kT>wP1>T5k1Gs_1lyoas=rBjI|Y?@5O+RZp6=#_(Om z^)H*kQ`U?3#8ne-Ax=kI?EJ~P;4o8B+ilF3`ZepGFUT5tb!C}~jh$Ps9z@D@H3s`` zYIo=^54jHLJldz+IW7G2`cZY6+Ok^5n$2!6$BnOwr!xT?vR@rOSjHk1FapC(c8`Ai z$tn_nis|^J#=$=L9i!N5jye*Di_D9@y$WJdOx+GosquGqtx9LGr)@M_*}$I(Br>6= z)IS<^0XmZCI$*L}c5zIx!Yw-SKKJ!~th2JLPX(Tr?{2XfRq+(iL5|p6wFCkFo=X32 z+L4`@p!@fh=Z$YavtHPKiSvB&XJ))(t;sJ-^YLCak*7A75X7y;uHlPwve4)gE<6Na z`I7NN3dn(*dYEO;5u_D#1$E?tlX`rA&717-VtHsKLche zF@#51I=ojdq+r0D3*o-Z)bl@^$p+!I3K@s>YZ*$*lkaU;?jkwA5QJF9NlX!IoBNZJ z+yeKP*Jp;%{WxpxXVw2D{**6cEbCb8P5Lo})MYLCX@W+>0WlYAiiTQ+Z!rfG_@}cS z!*}3GTEp#QIs-bJOQPFZSteUpe!tD-3`RU+R&V<0)BWtC*AKI$uMias{WpBH2J@HD!EWEx;`$QvVpyfz+vq{imE zM}7B8ZH;iu^|8xda}tEFPjN{D#l>p6PhM%e%JR1|Y0^M=sRvWwmJ?LgYu(07v{o=I zG*!44i89^2GPwLc z&rwNbnpCcjJ#zaxZq1omwD3#f18=5<;_wZm#jpFsc+IO6u|mvG3=D6eC!6}-MQMkW zW#Uzf0@vmS@By9>XB==Sw$e8+p0%Qw3dmdh-UCM^r3fr82rJ{Bz8TK7U(bO)>OZzt(r`O1p@ z?=56PXn~Z_mvw81tOKX?Vv+5;*dn$Ss-B-dyWsV2%rniCqPX1*i|CCEKY`8fIP{g6R?rtMPJ#S_;5&M!)yf-Unc3!WDJqVqV5Yh3kEE~cxxu@PpZRH;@V55oy4@flg> zWL&{Kgi~J{S_UacWFo2Gk7>#~|L3Z%a784?P4l^{sT0KI>&p~7Eb3rTV;`jMD$Mgp zi+A1$ID_HaX7D_s#Y-O*LQiS$0QlJqX#-KzDuee4nWrY2yJSEkX&ZLhDWRb$nGg;2 z(}Ec?I88)Y025YAztD##H<7tVipeDmDK$b+{YQBzioN`I_veB{=fLw=mNoj7sI|Ne zk&A=uia6F+rrrqSy?+C)+%aws}z6yqX5Q(;1?S%&@y{@L z?`fSW*?|QMTsqB!pq;W&_aU}(Fz;ySNgS6q305`A^Oebi!d~6zlzR13DniM@78n<; z8@z2{^S9Q)h0AxrJaND7Vh>Do+Z{QYmHHOL7j$1*(kwM8)DjKg|Hb@&G;gEk$ahTc za%O5W6CcIS;+(+SI6-{wLpEwIp{HQzZLlW|e2oNq$K-j#kOqpPQkXE*1!@9G+QcmQ zyaACYpYs<^1B&U|?)k%?y3IEt4F-{86bc%zEAfD*2}2$lJ*2#3XTH?pdkf&t80G)T zC`3D1e#a-F>HG$8uBhnasOh|@Z5cEjj7CD#A0(qOT-x;Hjk$camF#*iDr!f{ujcB# zH=38bbS}h|Sl=w^>Mi@5rSKuf{!*y>MyED2^m;85UIC!aOl7Kh0pF4e*D-nDoh(DW zfm6Nw24$K4cv#m1>0|(xn-*9L07gw08PStBcPnZE1#gfAJEEvWCM;zNZ9HU#RZtOK zP86*@@z)^O$MOUqOjB*he$wpLrM=8?Qu#WAua*W+By&Gu@~nkj7tYT5PAe3@S-SPC zv}ojJzih>$T`e>WtcXMz(ZQ+@ZftNIzO%40r$gY77zz|hf94HLoJ!|LseIQxWjmlL zD@uEBc=K=QserYDWY^6152WYG~sq>_2@fzVU z03w70-nek%--Dt+B+8Bf@uWe~q+)|-8l3CuquIhKNcdS@I3`%qDfm5;cdesMORYa(lVW# z>ib-PNt|RQfXjjoLUmRU#8IA8McVk{s;uJS2ht{DsF*4ANpbkEGm_V))4NBhYRko- z8grOflygeXNtPS8$5EN^#*GKk>*T}Iwd`~#E$+IH zN_-?6i0(GThoSlm!4->#8ZoQUv}WM%YNKtCj?JyjVAuz$a>BOcvJZ7FRRy`=@pkDH z^ZMltE|(@}1^-t2i9O}l#i!rZ8L8D%rg3>20kF+`d~c%p7~-fuPL?}iO`D9`wflnO zoQ^L8?2Z?U!i11$hfuxfW);Bg>4(YjH*cV$FRhR&hg)u=8C;h*Pl0vxShnyz_l}ce zT}g$`4q>N|2`7XWZpvCqorW{jXoBkT?ZYiN2BhP&&W7=f}&3Xe3uCvcoT+_)6bg2>v$C1e!aV@52zOXb zQL^hq?lc~j<=iZh`mL;p=K1?kT+Li}9AEgyr<^E(TA*^*I#rfG;$yV(|J2H3S*J4h zd6as2x{*KuGKeP->VxTw;^rbw-Sg)G10FuS#?JoAknUspFFfS>Aqcx3?&*hxe+rjw zz#%KoDE+E~VfJ-qvV;EyIy(~`u!3fWOX9z&>LYWR4G(H9k3ZQYR&nq&29xK+e^so} zrrP<`p}7-}7yvW|WX6VYKr&U|A_sOm#|6dEK?Fw8l>?9`8^V=P?8?=@>GEXhH$0aq zc`-++X-?-P<0q;Z>WHcX^ zpHa@u{*~Fi9ibHm;AH^SoxqMHPC!^OgaS1ofjFuCe=XqYR#k(GJ@ycnPe9%ME(z7fF1fi%@PW2I!E*tr{8+aNziqxBf^ zGKYBRgL3-;Pa#oVr=Co9O2x4>-lhmGEj_W)x%j)-en;;VZvc|FUC?WS82Es{NF>SN zz-&|C34>nWIi-8t%;s}6$3LqE_)OH%#0N%JC-<(z6e8uJvf+qEB#*Cg5 zpM1>w`V^Tf|LT*{aH-W45o?y&C2R-ow&CTCL>CWI|9vBX9FZrN;wFfi8y#M{Kkz0R zkxhG2@U|ehulJ7;E7=RER2Gjfl;w8lH6ZbX_LACV7s)o%MX6dN58W)YNsU17^1yh$ zCsPm40iM)i5FqQPXga0AxVrpQ?hDItr6z9FHh?At6vu;IoPa;B!lEDCyUGhn=zENo zeBwJve7wndH;-UApOYf|Cctx}Mh<^d$mmSj*;h5ftq$=chZQ1GZg?V-Ymve&|%&x9OqHyll>o5LoupR2~d!5|Wu z>@g{7pc=VQDZb$u4>B=#s`TiCLSqbIk2edVv}X-Cf8e%; z&n9gLljR@BaSa0i*8n+ zgRok3I%8$0`L=|^miBWEGxDZ2=3{>!^p`}(zJyNy>vLAim# zCb;(>P^;F-yQLL+2q|jwfZ~sIpf#o-`8Bm$`27akfJG)>wpKrDSg{8 zK>~ll-XsJtG<{bB#ma}OSAUL=+(c_ZP=#PL4Q$8;TQfgzT;MF!U;!b*Azwcx&~$NM zi^G!TZ%9Vq4Cy?~RrAC%^cS`fF#O2Lw;0hb}31G3$T6<@!;E=D3Z~`>{1J zuN~M)<~^}(pehsWNRHCU#eV-|`1t|-iL?&pci(33kK@82sE|2c zc!Ja3>;*#yIqAzh$Q+eJV+7jPb>L(U(Va9(MGtzRr9DJF0v5Uv8%M)~;%-x#5tl_h zyuKHTw4Y`K4lJMx-G{Q8yrzxZQ-oC=jz#6q>U0r7bivSw>0`Stm=oSb?Eq)WFy~6L zmiyd_Yf!qHV`9Gf(R#|8LhZn*?SW{XaxJ;(cQ$oUK3S726`^bL)>Cw=R4(=9w^yd+ zm^DGBGkZ3T8mIZC)&q@sKaQT~HT1bxT)Hw+sH+hE+_xsAJu~BEnCvxbQKJ`(-_2=q zia=FA2Xco8QBOkEPIB(b4=iU2np7leSNbT~iz=V)4}Ud=R2vlKJx!BZ9vbu3;hpYl zVg7wCWylMCPxyWqO80+~#Jw7HZ%t73W_xUWsW;(G2X!11)lSOCw$nDfKFSE4d zcyCv=0kRP>qOzHYp(6ft(HK04Te-vTOb+5TqQJNspxoMw*jgSpeu9v_tu!c9_es$s zak`<_uZOBuhcGq@Qw4ps4pOlfs;73Jly0}JtqcuYD><1^Zg;Yp*P5QfL-R7DBQ#o= z1^Qk4HEHifi4Z{#d@HjAF=P9jTd7qd41Oo>9TmGyi>@6-%=DTaF{H{ysb^GHp3_LR zZX=-%`-D`QK_(yDm?EcpW})2(R(Dp-`5tGhTjz|ss5PJyplFp0M9$^zUI}B@Ly%K&wMXu`rp| z;y@lPQCZDC`DyscBLs|wt)?w8KFy;)`n}3yjribpir41sk-9Ldy52m3gi=6dbg0mR z6QIjITBZt{Uu>%rmP_BBJVM4~sPC8Mo!xS(OvzMY?1KvzysFMyDtGlxH%Xni4PZ;x z33`n<55&p2n`|`$`f8u&#dJIhzvZIo{V^!(jC$C##a4hyLd4v;I74pvQq{Hpx(*9% z%ku?+Tlbk4oM2#@nn zojLbk;UZee5dVcTyPvoK(W;>qm3r;bF!%_(Dv$GA#4*AC80cP#EGk9I`S6d5R{F0C z1H4hagA$9Rj6W6*s(&|bG$nK!RntlGATaS#DLA8O$>2)0jV#HJpN%C7yLBizo(J%W@6Tx;GUZwPI;KqDLpvwJ4e? z?AQD-%rk@z6HKYi`#t;W0YaVt*PEL}EnI=fu3Wt6zvPx@d>Cv|O(T)f^ah@8%QP$o z$YVi$Z=EPswORJHqHtEY(x?YLB>KX1pmkJHz!~jdw&IHATWQ*NDbBPX(n-5Hb6N%S z96zyId0dhkq{pmllV27HOeI2_ozgIFco-2$gqGpmCKRyThNDE+^^@|5Pc85o?6w6GRq@z~hBlvh2T z?=6gir!Ys94B{bQ37>uns z?DKJJd1$0&o5=-tXclBJpjXp>@c%4IotMWsA66ruV+4wjJxA-xZtC1EnE7sFyz z9Sx5;B9=zd5iLZhnG2?0g~(|Lzr;_)WxYRO8& z3EczXpYNa}AbcL(M(u@G?FS zldJJ#@~z94Y&6c-D}1$mlObaBXd-`Zic>bDD%n!-?cap{yFs9RZ!i=Z)~s#uZ2R;> z>Jt!TLb(vY&+mDby91hs~67~u)dK?AY zHy$PuFt3RDcY0I*ezQpSXS-)22@%S>l;eg&jB@qAoB#9!ENw=QX6kb8siXrB2upse zI5WyArIZEg_2`CtcyKP(Syk{a_C6Mxu3&t$z}@$RRt4vvN)HAAluXOWOD@kj=SLA^ zni^j|6aKnScHu7gztUp6kf*bW1D{CzqscB1X3|*`u{Af$yvCjNkUL?bNn}Z7q`r2n zGgxt-liXnS73S20RAEN`D%SJqv>$ZTnm(mO8a(JVd54RrylW@vSoVEieCG4qkzGMQ zJoR;fhMPx&HwOsg6*mLD9m3;jBHJx$jA92jIf(!$mV znW_s9gQxQAn!xoYX=St?0-ar%BYPu7GTVvU?{1;VGzTar-_o3~-#2CL0N>ACv;G=5 z_$|(W)-A6bcB$9HYHbPaK41*^jbM_s7CQk+A{R^3zzeU{|Esy>5&%{oL>?LFG3=sg zMpnH(g<)#3MC?`RX%_C^)FqntX{$C-RC)WRhY@6m!~F1r-y^mW3>ih?$1V-UJ^O#P z?q{+HO@au&=iN6xh^Y-UAOK)p4ntKfZ=_peKcXux%`P$zS>-W0?R>5o?Zq15iwLV! z=qNyPd3$Z(@c*NPLjJ$`(Eq=#Xgj-<(Pno}L`EmFlZ?ZSI ztvypoCargg&436?NjsLH!ffxtrKAW2HD6ydi}w=-LCs;*h{+ORiPI^ZWZb=K45O?7WeCohKA(PcDBb&=I}>B`+nZ&v65V*f zK~{ZWY~4vMP*%PRpx&d{e<6k*C2J5KFgW7x!}Z}MX4`Vg1Fg&1Y1gX=JdngU}z z)jr(I`y0cABS+8eosEq^L<+4k$U}4L2 z8VI$IGAo6`_=iCyJP)Aj6fyRr2cS0$2MbIEIq>4gULjlWYhdCT=LpC4nB9kJv*|F2 zeaHc@u!4C7KeQwEq=%T*Y8ySm&fzV$9E^Pfj+_xZg|4LJtR(5YpIwwT zbSWK$$gqeFX90v1FL%M|eU^~Oa#LD$3v1e`WmmBO8pGmq?OE5mGBC?0Xv> z8OS!Y7jqjfQBVEtK-)uG*;yJZ_-C53n)>(dY}WzO(Zj&gjr)Yvd&2rNDqy{zQ{Eif z(8*Sfk=wSX_UX+nWg#)!d^QH+LmsQyd%H`h{-H1XAao{P?;!zq$#Yu!R!WXYQs~6) z6<2?=V1-HP|1qW_0j9>boeet|c+Zg?M0BX>PSE<jOdr#tOWUsd?)6G8fy{7SODg1)eRU|;S*P<2Q5dwMrz$KNA!`Q?7^ zkF8fs?M1!Na8kS`&Mde9S5L`FWExs0AXUvrIwxKf_yB!n-^q{BM7GwRg0$Cwjsct8 zZS0fl&CUf@Lg?CI=G*f8>dzkbgu`@iR{3mmVx|R-w|+w6Vk5QNTf;CEwhO5MHP8;h zLgGr|hv#ZRzP;hiokUPTvj|Mu-C{@(RkRb?a?6LUK=ly2lz0g!z6uZ(G;c|Ull1`s z(Hf%HeZ3;tSKPk4f<3?HRb+;%eUG836S`(eY7+9GW*Uw_1PbR@mmf?`G-%FJyV0qN z-4k*kelOK7YY_tJ0RRtSHX0O{j3;zV@$$Xf5E)(mIWH}+^c~^W_k*RP)%$z?CO|HosO>_lf%eI=P?cTl@2eXa?M8osw9Heu45x!NSIC>y;?#95nryU z>UHm#*P19Nd_5Q1Eo|!^BPDmf1P@-5_y0%ClG<}(i=xeb>!GMp(I$1-TWqs6x63hO;U>wFr)UqJ7?{VOldjqZIr<&CAcm8Fe=M(4JVYcX@}wxc91Ub1`!0Q@h{QOkncwL@%~B@gIEG`Z9eN21&7G zvObm9MwU>Xuc{z0x>7O{stwF17v40qDE#^}5tyG5a6gd)Gd;PZI2{>;giE8?CJ-3To_T|maX?+Wf6Vy~Q-wN43<>){u|Iv~8{`84FO~TF# zZdKvBWXlvq=*FIMG}5UK7qt5HzQdSSdU7+u7chQp2-z=fybK91a*tGG2f z)nW=E{4c9hr1J*!Jw~&=UMlqI;`Dz`!tN1Tm*iSYZsy1kd))n_P$MwYu+{(~sN^F6 zzUHKvn}TtXWVp%k*(TsfmK6T033GNZ{AN+h|`z57U(h)e4Hg1F!wO z&YB{mmU`hj7otJ^B#pIoEZcoDQ2Bn+05o$!?LpfD)l1i|iI`qmmVDCWqy-SB$Oi2f zkAr9|nLFHzvlM)G&r4a{Tjezdf)wG0gogp-tiM;`}}fo1l~q zKyi0s5hi8{tc_fTs%|IW@Yn#ATLIxmUKyg+eWWtmiIx{{)?P_h>A5lD?n!Coy*l=l z231@F!0<$5BXE3Z-+^mZoui?@)#SrlG4)D6RD;A}q_02xuWG42n)EG7 zw%@R`PCf$O5eAB0MG48X0j49$=}<>blyC5My{Y{R6(1jVHs_IJ)}-+56JJM4Y71e; zfIvI>5&-b@9rYh`Zo8GAhB1Jo+$v+EC0J58(`w>fF%Kdzq( z<`BCi)IG{1PDXiy!vq2s3M`f!@gvz%fe4OSf`F5CzqIOVlks|~s^*|5^Q}-+syf8e zo_7hH|4c__15ox;vSd=J9fsZ^fTnF#Rro0ltGXn-;n1Z_iPi(w1EvYmN5m&nZ}I>RPPaa=Da+z*;xza>1@w<>a8!(F}2|-!W+l;%dpOY)h&QWDaodh z1U=F&0BRJ4F<~EYCMyhV2A%#&y|sksIg%|v;(lJ!la$hG*C(-q;$(4-T?2SC`7?#Vd$h}df`_vmK$_IRn z28f{2VR#mDGtI~&VK+>QUFC*zJVekVcnt zi<)e+CEAcPD#cq`-j_6G1S;wf4em$*>ybe&6LPK|V6Bn^NqER!l#ivF-3AO2NP)J% zf_hp=Us}EUd~|R$eHTnnv^k}zBR4t={nQv;ZpJF{E7RuzzP&{+Zvt>ctQsCPD3nG3 zK#qK6VFYJo%To6+=!PR+NFe-sSa$CgvMfsUMG10_Q!_>pZHWD!=Qqkj{J%J>G8Hsy zh*kqYEV#^6Td*1yw~vT5y#Uk_5T!J_ zW4@;ppst;+AExxR3P2J9uG^jrXM*yLK{t25;)jmI+&ExoVzir~KXK#0m1gJ{O*n>| z*HL1I!Db7@%c}KM#{giXaBWMT$T8pl2W#B`21uGa62T#_v1&BPi1Yc!K$9f4(ABH; zj!7U3oQH3xw>0os<~%_9&V}kxl|p#(;(|3d zfRPnd3N+9mO}z|uTIyz9oC8Sq>AAF0bnX^&a1!MLtpucjw6W(COpdbe>~Tlyg_fU` zDpAs121o*wPObwScMXA}w9d&I8?+8t5AP<60~^Ick8q$jRfJCdlp39I(h}a> z02-hKVT5(|9HH8Ttq>pF;p}}M%9@O84QC8Ou}SpcgGS!Q~|v;iIU6} z^*t&opeyaP1EkDqr3FWB0pR~-OA&#xWT1K=IF;_0Z)RfwXoNX}vR*?hP=<#}LEgJD zIbJbf6DmZX3bLW1ZMd24K!^)D4>SNhsR>p=Nfk8rtL2jD9=)2Aj!Kks_+%M>0dLN4 zES?GyeXNV2!j2FbEvEh_o3EI#A%_958+Y3Jmk?*Zw*BZr&htelX+5}BRgH6Vh+I8Z|xD9H?{#V3r6hU4CV)KD!d_duo;uz;3zq(BxH zz}dPZbV$SyGk6PSY*{hn19&sB{Y&G!OtgwgJ;;KtDZ~ z@2+bLq{7H3BJI5i-a!G{Y$Y{XBs!g^YSWpBC4nxvQc$LPgfB-?~DDIpV>> zJ6dKqkeeSciK69mpBxB7)WoW57)cQ?Q*E8Qi5JSQA3^D8US)a5-Cug+lOblSWVo1{D?pfRdM> zF&i)njT@%m6#;|B%pGvq;Kope(ezvWd=W{rBy{N!&E)C9!@-i80bf#7s`F~tX~I5a zux<%k*${N(Qb24rkKFZkMfxTIn07g$<<`8V2KGGFKF)&d|iLy;?RgXw&G)o z*b{+6%0UYHZ!)MfKOS7r?zDt|bk-UEtl3b5Y`BiBIV~hOe?Kf>T&Y3=3m4rC z0r)9kxO_)8p8|k)V2@nm=8^t%SKUQjyq0mJw@LZI^p^_cuQt(|8ut!rtv>pqAaqEKP|@uJh23YzIkL_=&IosF=5g`Zmih_48&Pb`7Oxyk~-SsO6X#fyOl2c36x z#e;#Tur;Gs^Bl~xFMYgar|vCjM&R+syAK0bsXZ7eu~&GpWP0#Xx=1puR+H$nwF2@) z!3#LBm`l&+j{{YgYz=)dlvYTi^~`Z!5tp@VLlne$vdEnX+k0VR?|a4G1H?Y!#c%Y9 zg@}rMqln+``|lf9Z2ZB~2)Z8pII$H0 zk{Y?Wj7=2B8kt25EMiK;k-*mrRHSwx{NfAvkqzkLA}ojvT|mMGxC|A^>!u(E-?yC! z7P+K2TV|5&z8ptAcwpTR9?0nyx-BYcbqJ}V6I zIe)Lahf|If838Q6-Vpr-5PyRgo8ir?$#z+fR-+B zkuskUyd{JHRyn`%KerX}5}w9~ouUYrQ$+-d{NIO~-7iIWeB@4^$OAyW za3y8*XO!6WePS7I#kVgDS>eIm0?X*!{oiMVNHo}mU8>MiHE=Rs*oU$(D+X@@EPwqh zMtp>NEf7+v$a$1#=1Yb5T+|QFXN`XGzZB(n{cF)c!u&(rCVm|aeEo*F^#~i^O@lX} z;!m-c1VpLGZ$uJoVhDxo?#~dgq)v;sssc7WLpH|@f9|(c?A>^|vGH?WY1#WQa2_iX zBxvFZcrF0|SyP}LD0t`M6D*DvIzm_Lqs!dHXNl zla+sZDWPAAeE4ZUt=QMpJ7_)q?Im)TF70=_<|QrrMW4VP0^6WEq^KZgwonHL>PQtD zVGG5afYsi=N<$&;l_2N;iT&d50+ti&uSM_}hCO8c5GYgh_xHG=i_7-;J3H$UY3}t` zV`e1sr%xJ0j-7m2ZF}l_x1FZXUMn98^HTul$o<}Qg(ISMCeimAf1UnO&`b!zWQczH z-s@)&ubQ~XM zcSENzy74m)V^6*756Q{+0`n!_xgYJAikbJ}=ax3x=U3wVhTutu2@hWmzNt$q4m%Lf z^YkU>9QNs^ywo9%-JvetJl(e2=fiz_`3V2W1J*uW9b^BChaHPe_uklw&2bmjUCo-T zY`%&JZw;{WoffawIpkl#S$5E-<(;J(G2H!<&vZ!t|X3 zoh|uwT|?2-02l40iWV))G#%RHo;|vJrX{llZFtko^7-p?s{S!8<%c)s$10Bq@|r3s z919Io=KG{~4NS|^qVhf=ws-1!K6|_ynAX$5ADVi5T~p!xPKKB{+<8il)s4GlQ zkFFatTJjgh{%MRe?c=ML6L!1V1>I3yGNH(BttgFT&B-+O^tukmtBRCb5)IYd9V0OaMLYooYN~s&LNoq{?a3 z;HZ}U9Xpb|-5qy*rzeEw43*RGeCs)-!ZS6}srf@kj&?a{H)Y`RuQT;;IkhF9-a-d8 z=m0z~L~O*2mFa}qu2xYJJsc?6@aYQ=c`t=aRqzu9xvnQby%hiOb5EyaV8I8eZlj!R z?S-eF7Hzor#P20)JO6r@<`PA1gypkBgu91A7+u`AD>``S`4e^1hBw|_eP4`wbfSBy zgFYyy*_0fa?jT+5ofNgZRDt^HIBmKAp|l}0?Tw*s-lqW}RhE9gtMaK;x@OH!i5u^) zn-2_rGZ8Vczke?e_KowwQqFCjj1X@St_eKK`_-9L^R-K>Y5%V_&;ENe9-Q@{<9(JL zk7_=3XTWr32N8+a9d4IjpDT+vW^CV)ia%4R*+_V&t#JABOrmpB`YKve&UeM@DyWor z>fPlscHWQCeSt3nqpWuS{TFD*%XwQfmlPe-!PKyc_6+jR3({3QKhZsRvGZGpB5Hd1 z)ZA?y=dOikZoX+8OOM1`3o)ewj?HPSr9z)nA`BNxKPfGJZD(ZZ2|~Z7y#(Ev@jVF14pgHC7Kx@%h88iW&#* z>Ka27`kr1)MBCpn8s0+04M*S#Yvv=VerVG}U@H>%Zv9(G^?Ncry~9dqtlz%+9zGub zEL=&*3SOxD*k0>M!EBK1*Sxw#4LkIWu<4N%+aIOHDgienFQ#nU_Mw^k)KpXn2*+{; zFA?_@fQo{r8G?U2l(Eh@FLhze!j1=%-&z(_07ncAYGYrrI%E{Repe`h0zXB)%^u<0(=@Mc4#@I{58hQ zDMPKPXV%5(`|i@cP{ahUYV$!r(AH|qrL_a1;nU}zsH)02nR6~wk4j;xA%1r@UBtUC z#xQgb&#c-@1WmN1@|Q|vzDzpA;9pB$AA;rtHJ7y*W}kSF5-oZ0aqB-0-q!DK*$(o! zm>7?WPu>ZHk!l>)!Y*ZQ+1A8qjhE1`tH=}%K~(-=g)Fw56y7bl?6cIW>-Z#TrxMH3 z*PK-^3yF===@Y(KQd&pR8mrz!37PBQi}UvyCfuoY+$RT;NTQ@T32R@NhIDfh3kS21 zlDZam^DgPR!H@6+Lu)~F7J~01&WK^T1szA$TZ&X8r9{c!(BkpQQf86&gQTNKDigBa zlp6!ET^n7jPxs4*-Q@vw=2ZigL!wtBLQIb22KiQxR#cK^6%^wm8S`SvS``<@eEO4P z@<`iZ;+T0bc9k|Fe5Rc|FjKZetST+AX5j+l+cOKQuD@T4(=g8SsT^4r>jH@!I^V#u zd5aT!5N@0we2836sJvA7QmUPKqa5??XMWJ&wOf=O&GZVk@jEk@9pAa9{c(AkPncVXD3YQB#Z#x282u9_ci=cgevP97s;9xD+(a z-A%oLKxQW|$sbJYY%AYBO-f^>u$af4ItsJ>6)|f%)vwH7>b*$mESxCM-`vR27UXUn z`^Qij;fGrf&QBQl>Ki{aTxmHw_gA7-lSjr63d`I$_ zUisna-+XRJC3!& zNn81@#}4S|g$es`>@gif4u`^%i+-10Az9r%@L0>bYJKRxW{}SJ2`!T8b%R|<_ooqy zZre+v>0zzX?eF~hbMWANIPcfPBcLtOS094RRz(u113D!aaODlXa^7QE(n=$Qo9j*` zgP1c43)C~_uWLo#n~mEY;~|S4pFe&kL7!wEA$sK%({dVq1wj^CxJwZAQaDj^{W|z^ znt$#|(v|rnA>HYsgZS+IOV<#9AuMGd^7M#U#mL%+D%j^Wes_4`74 z0Fz@Q-Z6Xb#=+-2p!co7#A+7Y1xhl{7D*BG#&QJ_=MIBFdno}w3bNL!u129HYGe|Y zZvVHz`i}zF1rrH1I*W03M?fWn(wne&ZhQ>!I7;Z&Wmtf7rDZQo6)+}ePEsI`Novu> zw*jarKnMg#`9m|S7+XI+JoyAyIe)n_A8Wk?!UM7;2TMr)w++|~g^$;?mWUeUaYT$g zQf*8-2CQVw@?Sr9yIQkoO7T#Tpl~fjMpm6kV|l1aN9QAf-a@JVxv8C_ceqxS2bqUs zAoyyBVBIk}j)U>y#1(%LVJ;0pbG-NJzde=0AVBi zb5F5^(gfBk5u$GnQd*)bIXfHwp&_|6xBwpIyD(V*VZMt%JRLyZk?!q313{V(Di^5Q2Gj6(qj37eS1Q$dJ|vWfVghPm;lp1-7|8v1XW> zXStQ+#K`8ZADuYH5@2Qb?*uX9=MO;IbnXr7f#~ovL?W|9hq-YdRv>hI8x}W|jleRL zmVh!-6XH`Y{V9Stt3!SEbfbBQFC3yE zILOtB57*YLNZAGC%LRNn3NYJ#3S%>-gmNMdL9euGByHq}p&qIB(qdV;k>R->r*0wx zRq|pUDYxsW*%8y{C)2iJq4*r57yP19V6+g zf`C$r_?6!+t>eg zXb){zaYoMhK}au+dH?anpmT&mvfW;91#^%!Rb2i>uak*iaN2$4za9W#)U_Vj^u^hf z;{}tQvn~zYr)arholtxXD5w|Uoil})cM-s|j9}W_X&O8YAU;Lky9C}h50c*ihy&(! zL)E=sjuT&vk5r%@?i{VL9)J+pg1lsg_8OzSaBhu6k|g^eWy!1p05k0nvxFwFi$&pd zNr10(3{aH_3EIesiJ9$ttarT7mAdV5$z!4W(*2C=f`g(ZF1K=1{h5)dY#l7)Y#&Wx z!v&OjC@YF3Tn!LNumVR&h6og3mLfv{aanpput&DH*OJu3z4WFk=VF6xK4OiLDGAyW zLt+B>PiOD-x3Q{orjSzsXn!CT3ijH_3EO5Gyw?9*%Z&AB#^T)pHIonfbW+RVmzwwF zKW|89kTTTt-u zdr<0_cYAv`c{Vpqmg%0BmFeK~?3ORR(5F8hz>J~oCeVb^0RM^p$4Lm3iUG>Sj5`|N znIsLFUQzIw`tN!q3rk^P@O1At6XM%moD>>t$`h3EV6Nb)(9`GgX<3KobMAhck$%XO zDY{RFpr$Aq?8sLXkGh{Z$aY008IZMSyXa3P;G$sCuD<|~31AA^ol*b2N(DmSPCM$| zu!``~$F=&wp(J(|uY684k`=566dk&UJXloswl9;4!S(DF2hjE<1c6^3LQtx z@{)yp&X~MQc+?PY)t-9&@<7<$Q+A&$OHQ+)HfbP*`9r!IFuK2hCQ1dWm1MbB&+63QY`8z!sHSjbIVi8hNyQ-=9RI8@JjZB>{)Kz5 zWaP0(H4V;r10w>!Y&fWcrQt@G@1)o4W5`eOTD)#sJ&CP`=lCsw)LAZ=D-)2a*km`L zIPF6oJ90PbeMjc=ICa5d%yQq3qO!Wf9`?8U)B$Ud4wv@iH%>nBl@$98+1p9ix#f#M zt=HY6o%y!}Bd&v%qN_63cdsS@<>%=LJfru}0gaff`l5kt+rpD?vk}CPOZ`AxiDz;@ z;B?}PDaY3^)@o%{6o45g#D4R>k|wzUH12%8S=pURMV^Ryb`GzQSA@*Vy!pg2;d>u4 zx}!U4>3;`+_}dmDa#g9C>Ef&ya@Gdj^q$v)5~x0H}Xb<=X@%isCW?keH&&vjwm9 zig*yIdjBqyCR%VxNKl>Ta+g>(*w#%v<^pAck#n)H&b`}}A- zO|%n;U&;=>bM(1K?)KK*+>pa35}qwIrxcJ6JJhbJh1QYJ2?fhSw5W7V<#i^XhQ`t* zHP?0a({zu)p=ZA%Xtb-}zZzUv59lQkOP~`hQL15Y2AmmF0=2wwT)i5kN`YgsN3PtW zslif?{rCpre}d5fcDvESG(hemO_sdXBQ4tZ@~G>rwXVndkE2+5UC$aJB{LJ=D%ZkT z^9>DBLcu7A7KM(Y^7lstUd7O*`G8%AbtYv~uPI8E87sd*-!nxQ-`&s#K#p5i?AnDj zuA~d4IGkXnF%U5zCj2vEgNEFG1$B;nk@#KU1VgAl7WPsQX%TYspq`>`q4X^$cX#FU zt|!jMoND-$+LW6Y&~a)I&dxsh=pi#|Lm)VVq&Hq5w!J!T)1)`jt~tJjRL7McOI5oX zry32HVAJuh=zCB}STZAbQWPuP{yHBPUHwgy40;z0SEj%_&jy#jdb|JUH!wc7QvAQg zKEWbNua;?ytQBhfll1BRFZVt_RhvKQXC93?J=&*V$Iktk%3TaLhuYv7r$Tp-f~n6K zx)hc^mje(Y(`fst38vwo6F<~PBIP@2irYKPV-WLAtCLaeE?!8du z!}7CzIh?+;LKm?t-s4IAIBV#A&wI~fgsWV4Pd8f8oay}T`G@YA#v8GZnFEg_AQQPL zW#f3PEyn>WE~8>hDOmzcBcNhfB7cdORb!$#m=NX@JZ(rD2x9qyv(=C!% zxop`RaPmc6KAxBbW)rB1=aqJ$b6Ah65SPRLQ$&H%o zq(tPlN6r|B6!w86vs^!*>_6baa21CD9t5)fk4u_446g(0t#>3TD1UOdw7=OI#rO~u|wh!j+?BSOIijo=Wm+VK*= zndb4bob*f4nEb5X$^`w zuN0}r!j1}Sv1ySols#811Qr7c0~IQN}Oa*sLT3464+ctuv-=gA=Ab#huXIp$9ywj%@Ve;TKT! zXs8c%I$F$x&8Bn@G`2N5?w+oM%!i7CesCc&ZCD5BKs;%d?X|b^!3|H3r=9$_|F$|? zJ|coETgom)#1^Ub8$Hl(a%DJT5*n==g@QwuC?M$NAYeA(%3IsZeuN4TstPIKQx(9@ z(KhJR;ViUgj0cqDsP_TyEIIz1#)G@hpAQw*{3DnYjpxDl{x|5{(suO>JTXaLea~X9 zZSnT?8Ro+eK1Dz7Uw%j!>vWsOQUEv-!Z*`&I~^v=eaw9}I?izvw+hO_&ESpnNEMi~ zGZydC$_osv03JD*(+Z^?cja}=>Gd!tEkG>X5058_5tnSmVpcyc=Uz3b6g9uA{%p(g zr`jRavm~6Jx35u>%8WBA2#SNC=3Vu$pClSBl zWjmD&c`9A<{zi@?Bej&E{z%~^*O8#ZmKB8IAjqd&n(`MdV2l$mCk&hf|eWe7=u$wF-j~6EZh7lYcG}# z8}K66W77Z{hFy&7bv~8d*`Pa}cG8z*m1=ZKtm7$Q`TG<{LJ?X`)xR0!#%g|b6kvXx zNTDFK<`1mN;Fw5PkQ|ndCM6+)@#BgIx9&=u*AnX;D)#tE@jgestCe>89Bw1+&9$XX z+^)lcP3?`Z`TKU7i(6?Cw2$RZrYUH+?kXD!j8lV1Za7EX*aRxf6NC77t{P>J7SXJQ zqW*Z%_t~}9Wk$ku|1lxD{>wSe8$i*+8w{y}C1%mb>3eE-B_Mii0UQsMu=Ak1niyMowvBZ>5|4TuEdbFNODp9wEE<#uSCSU>|@Lc_(scvut`EVFBdnC zJyFOmKhrmzPKD7qo&lOzK}sSN2c=T2`1*qAx4s<62|XNiUWw%DF=rjjgdzN+cWI5z|lfT!;*OI@Jk z7%&HrNhJc5J4wY~cf;k4ens=KGo8uJH~DJ>p#f zvyDMRFMvwa%eGVord#r}@wjb;J#=vF$eA_Wv1OOF3_{E97T-CwMj=>g`fFvwe}%(T zsfLTxnVVJbCr@7EiFi;(#lkoY$$A<@O|}`4wQX-)wJero-J$rIjjVXJsUCy3$Ly#l zoCVThcr7~IN)Vn8mx$Kmsh?1YiG-Hr0siY+Jt17pWnwRgJUv8GctQ#NZQoXODW9aM z-JxIT=2~p)N8@MhOCtFM1-o}hXg#Re+?R3}73`>K`J3kE_hUf(#9)lVv!Ofq%+iA3 z?NON-Euo|sV=VAfBwDgU``i1*&(}bMb5pp76xKnkpb{HHk}Tqb708QF z>0@*ePpr(1&J^HDG!dkN2g>`0i59RX2%k?Mc@tD&j+wt>R)rR8((_wn!hR0P*?ms_ zHq6&NkwpEYdGX+vRuF$Zw=K3UwopC?M=YJxcCQgP%oFxUbp^g4io`umZouVkXFwPD zOrxcikNtvlwIP1CJb4kOUu}!&&UNOG zDwa(ne$Ux25^>X(JF#9C)>BURaO|)r2mYFq}kix*R_Q;&(Nh$KqizL*^}c@?RJh!5)ggAW=K0Vp-_84L_JvSC06Y160)Ny(D2@^ zq|%uOuO9ml|H_3y?Q3t&?AEOl^W7K6c4wUJw{nGT$9fFyK}Ejq>A_G%kWxLb=hlMo zt(SW#H6NiQlRa4`9EJ&N%x0@*_j`7-bI#htw8zv_6K|qf3Tda5Wc86ERyHP@oP~v{ zU@aS!KT}qJHNU?8^cuWj#^Lbrp%zDK$joxnzp#7nh+#Bu;+aa}vucm-49jPF1n^Ru z9S7-OSuJ19mxRNz%nHWt6pY!KKi}n%n!ejB)*iHOV>>E3yrte((g9mogK;1g0!)Pj zS26Pjm?=gOR3b#LHU-+`Tc({yyQ#d39seu0tR7Ok4w=yS*W`XWT*+kI?Uxi8r})>L zZRN{7U(G)sgd+{_f@!XM&NN6koO$R;g!=KP5`(gg`B?^oBr~a2tp00J%hv)_lw_)A zZ`WqDFOu|`{cr;FHsGFVw5qxWjwBTDU_y*W$cTEOVi0sqa&-Bv`>$D3 z-h!#RxYpzI3K_qLDX__aDn_sr#Y&-Mg8y9N6A z%eyzBz#H8BpWX5P}X3UAB*-XNC-c=BZ z7Gu(8r_ADEShmVrbQM-C%a^1=B|W$CMuliUp6Pr{4+$6vv-qlIss%RwvqsaQBwT7M zJsfa$xx);2LFs9$(sNbDrT=1A{8KpZs+c5mRIAb3(b}?3%@VDAPmSF0wXO^;d|NCt zx>Lno0FrVsDZKhdo&0c3tyw!WZ<@JtzCY-w|B06;MJMQYva0RD`m2pCH`HV07K6*A zgSzcvEp((UwcTfm7b)GxJKt4iu2zO4%w+`*Sl0ifTxyoC_gIgP9rV6-L)q@ScV?&K zTDN9QcC9Z>6HgcWzX81~ zE%#0Dk24Fn*#!Y~dW8u(7#)^*NT*~WqKNna{l3gJ{P2E(2kW0j5a6z~SQ8qf_6LxJ z)N7bqPt91n)w14|F*>3%D&b8-aA|${K>kkr2*b__Nix}|_t)Vg`jUdd1gR-@tV@0D z!3v0AJm%^dSJo1)Aj{CnX6X1caBYlAVArw3VPDtKrfAHp(Cny1+`crl*^SE?;7z18{p4d zXdzBIgwNH!eWen7;i_h|I%%&lLw8ZXY~jt>l?!JxZ50$j|1m+D@J?DHF641v==(m$ zyLI}Q7iuamPSU{v_M>Xv+&x&3)*k^XYnzuze@(FM1AWBYkIQ(gGxLM~t`@NNp0?)r zxpr>J1V7svQ_)Ueo!E)i2x@Omk_Iwgf;h z4PpH0wmxt+TFZ=U*IfGY&;2H+xwZ6YRS8B!fY>e>djGSbz&hO;RrhAk=LJt?>)e7vB-aFHYejF4c_MM zInKLL?)GQh!uz&R*~^cL)>a{5Z6{j4lQBY$X?t_`7D&rjaln`3_b-x$ zeHLCtfAf@4H)mx54U6^WzY195AOGko!*Ot`;!ejQ>hQyL!=F6X;Y5DMD2|eP zj+v$T{r<4*Tc?bin|A}%uO{l-CSNau<{TPTpwXq%cyb?YgXh#qoKI$V?IzXGg&&`3 z-_H8#B7fpwyquZS@zZezPoER)$Cd~Kdm~I#wEBUUc~U91GDtlUWh2K6SKof^;nD33 zhRT>xP_K`U>-q|33KN^*Vq3>o;=- zP(7PbWy09Vv^(ozUiMI)fX_0U9W%yudK!FJIo{gglOLM*(%5w@lls{AMLZPF(e@_V z?E?3lrmHN`HRqLXkA5g@x>5vAc=OQA!k=V@OmCu-SRXO%DGp`FcJ^ET`fHIsw2$!d zA?bbnsG9#TB{olKm7s)WsDA|ZzmS)w0!b{3#gz*F z_nk$=@&)ZBklq%jpAAQZKy7E;`1xp=XQB^V{ynpE5X+I>bq_3iecAd@NM)n<2FU0FzR=F zmgUg!v_gKfti^Hyv@*IjCb885U_yP`YhukbQv~bd$JK`!dxVc^=`pxx8*u)kdlgB7 zp(Iwy&zR9u!#ItTXZ=beLZPnUNwu-@4b6Kd`Qp50*GuYtsuRi!c=7AS}R6 z)tg30+sz_aQ{t+!Ooy^eQ|`O2yxIHlrJ?Hq(1Ci7vU(yXqh6vx1Ghk})Lf(9x{_ zi?jRuOY;BY1r7+x5JUy{K-?Q=u1at#?va@q&YY#DrDX+*iZe7*Tm@?G3}d@Gh&$erhy4f{`k(Q%q&3<;$ zPdW3{MT7cL9le_VgvD!NbLsjQ%=_5A@PO+yp#w>~?L&#!+efeRI>T~uqr|2f?zT$l z9vrx|+?MvPq8%=nEQLqSGS%JMj;chAZv_sfe_HIS+4Jz#()c%-Z-o;BY^$sDqB>XE z$${NrLuGHn)w?PB^G#$G(!%HScypr$#-Pt}n0p;|Y{q*HhG`0IE`L9FC0Wkr{yf3+ zcw6eywJ2=5KQCD2d4FQ4e*FDYFI5iqeABY4HFrTt>r=M3k{!M;nT*`yI()h7Dy{T8 zS0}J7$*saXnZFjcWwZ@0nz(d!kw`E)y)Yc3U3}?zhw5S5`YTz!fx~yz$U2K-<+kWn zp4k3>G3td{UbXKF)Z=_hn=Lm1kiN2{F!hSCiruN?)~N2c$t|(n`Rc6+=FehuVmpL1 zC*O~?k?V2=M^vp>KXv4$xej2I?eQmWt->?%(_QI16TNE}4@9~&Wu@bdq21#;8zS{W z!)^)nh0Gd**2tJgSJ<9#xnjvdbAb|yB0dr-&k9a)Z(4%4-Dkrw`CXuWsF!OOd~@vz zDmdn4sKJEK!JW>r)n$%tt<cIEJn9J~QOHL0gVVg&SrU@e^r25pV^Vk57pWxXni&lz+m}Vdg^$0vbn@SYH$3_a@WV@E zi-VF4N{EyXmJO+}lf6Ipxk!g(%NRMFKl!rGuN1!6LM^~1w(;RFXIM|qTccr-WzONK z*OG_-{7JA-y%Le}$M`bcwbv54H^ER7Br52I)LP^?j&+qbbR@~(!g2=cpWJk2%{n>` zmj>{po6pKTz!wl-8kd!7MBf~dNav48XFjg1bkCA?A3bO+yjmF9;$qZCf~ISc>JpO3 zo^3wy!c0K@HFpCnG< z1QS#gVRH&6e&-Yk^I?N%DYu4%lx8bw7{T7>go|H5k9|h_uRRNkt*6|bMqsNduh*}GJXb8fklf7|$l zOQ$R$|1n0b9u*r9t2%i22LOnn%!)*t*Lc-HBZBpS?83* zw`50zCM&w^>8aY6s6kS(Y&G!k2CmoPLkzI?km^>sy??yjAV3vp7vU*t@^UX~iAI@zp= zv*oU>>dwu2T*5br3(5J=q{5YimI@04f2?3~!oe4GXV7D|4xOvdy&opMRS2-KhjOl*!A2auUp$5TEoVC zlWo*bEImehcBSt4-XrM+x87$t1!))VwNfawU~`rjNe=q2XvKcGWOyPkTR}&$ID$Na zy%0m!uK$EgPV!SU6Lt%{Syo(+mZa6l7R)cS-*V^n=y#kYs4Bdefsd)|+CQjx8u{+f zYq+3%jdcczC3rCn>{JkeY$31J7-9XiFQPvGR>`sOB{{h z`odt$)+2MIu81g0^>)F{;J-+(WlwuiI@8%p3wfOOXkL2opWuzkCvwCaGx83zJPPkpvGT{G#FHw^;VDJeMQB%@_T~ z<9*|~v97!i43pIwd3PIB=?d3|Yn@mZIvS`ShiV#$g{WrZS>5Apdp>RbWXS`!omlt0o z8XF8fT8E2G1b9#4v=Vo0(b1cqG;*3gxUI2mVbxSy5a4#~P8q)ker?;{W331| zwT%+3pA_u{@H%FoWO3*v-7n^z@XDz#C0p=!xoP$g%T$$GbeLE`(*gJhnx!Jg1>V;H zqLVydX)Md%4s+k+zUv2N-ULNZ?rrIf1$Ves?Up4L3mS^T>!|4W$mprXvuNRl)~QPX zXdG8WEm=ah3zy1-ma(U&J_^=Xp`+qTljl26!J!O_$gc-bHsDJe_1~7~$Wa3f!QT0- zU^D$)W2OqmfLOoP5S0#b^Ak{HH0^J;&qRq*y&eisgw z5I#yn9F*#`(u+h0|^+wMqeifuBdqYabkt14R%HpL6y7NQEi)Hx@ zC$&f#jn8y)&MDmWi_+2>S95Vcy~9WL^O0~@#SAq3U;7lBP~Cy6K06CDZil6?ds373 zy*V!N##ifPnaBfit$FYLx)kAP+;)Ah=3f($e4gM5;C_;b4(fWKk-2J^VfY2{qiT9z zNrr7EY};(?zE;xS*g(QFKzSj{hcT}xtq9qutf(lP* z;_{%?JmEO@$7&u_pkJOU@Tud&GBGe?#583%<0FD3iCkO|UNzaTDZc+xk7jXi z4})#eU}}3A=hkCtc1ZFW+`D#BV|U{%ogUfI{|3VvO(|Kv5Il?}FJrxC&;m6$=7=PI zS!Oqo^NPfgid@ezh?DCtu|lV4bJWYM=4jBSx3Ro9oy*8SP55cj0SOE?#N*OutEFCR+fu&im!Q< zE9!wQ<`(7YGwgOcE;Iut?3|`Js3&6IXOc)boZYYZ>7vM1i^*QI?eY_M3ckg;^(pQz zgqE|#F9Q%vKI}5r?XJ5Rh!*v*_Y!EC4u9}qTq~!ZxQ`VTbn$rfNWP?u3MyD7YWF)H zQ~S8l(N7@f$`jm``j_pMo3vs$i5DhoinvFf_Qd=~Nf0kgKe;fS)o-%5{o}JwCKq@g z+22Y`PsVCGh@7<5{Dcjo;r^(7g^?eL+?;_09wS`Gq1FK2{}qO-a>A?PWC#^v-;N!v zSeCcS!tRU&xwPN}M5hkBy!L=$lYuJVUBUS3yOa(~Myr}^3mCC-i;Tj|AJ-lvD_=DJ zqf?o(zX#S&K4a3ks*$6(zcO}zrFJZHdZKhXwY&LJp*La#F_iB!xF9MlX(aA1mTHijVX)6{XF&!LfIeGQi?h3L$JA>-Xf? zcf3164Hebll%mHv5th6Zf8c=el+r^nt@f#yf!xxRr%6+3A$#&v)3lEdWIq00N@FQn zdz8xdHP4((lfCGDk&WwJICmw%DPjRWG}*<96R-Gqbv%wT6nMH?^F4o7wQ|{aWG7=G zO7Lvr9R?W>dJjetrSWU~%T^9)Ku*iW-}f`H-$og~6<5-qRyv76mdmNBGyf(0zNW>T-OED8A>?l4H%!YLlv`7K8D9JKZnDs)u@^O9xT2xJ%*f z!NOq|Ulnx35Ea6gS*$lV)75gyR;1^2QH@mLq`{Ci0GhPS$`!J+nYB7I*SMa2ix=A$ zFg+9GWnZL^xk^>y@L+s#ICv4UZupPOhW8)qbPFm;aXr6ld#dqmL6h5%vSB-Js9(p> z?Gw8d6pk@EqL1>+kipa1%%4bG5L;huO5*eP-TrlTCqufMhVsvu5VW=%DbRhB6eXSL zxiM7(x=YtU(q{RW4P>U_tMmDP zx(e1-yfwow@bKT{U#s=Mo2hZo2-B5t_mNDM{`G_1-_P$`xZCKcdL>Z*=SK8B4;4|z z8j{_zjM7_4v>O@cnB%x<$p|l^Xq{fT+Y)*INzA5LIHviSDUZiTrJR=BBi_=>?p!Wy zcy3tjXvA~;^m$_l)K=Db^@hOwHj7P}nPs2W#g*+kI-9#MrOUSjtG#Wz+ZQ&KBN;=h ztO%0_C*8Vg3oi#CNkFtPM|=VNszOC=ZaSBq{X-)sEcg#=LAMs=Q2e4pzDpjHAx}ru zw#jH_Y^~XsN*evSa~3XqUvw#;8+|VRGim^h@Vp}IP)+GTL;c0Bg|aL?%NN^reuiW zvnkE#wZLl{;x|9RkH3!bu{js_$*QjD==;B^&tE&XvjH7AUXS%){(bktRv({RaFU?` zSj{6K%aL}e1?@oSQwk1dM-_5C*3UTkcS?vmp3(3;`pJMcFM0E?{ZYq9wr&=gJ`{s7m5040uGSZ) z5@&Lvq?aZCG+vUTVWo&~yavO@eovgUmm4n-TLGZiwuoPMaUgo}Hh9 zj#_hE5VkE#TOMMr@f5WV9M|<0xsu zWF=M;jb9ekP>~H>R+HmY{oyBS(4Nh-hK#?Sz}YYOO^|Hsabqd9cePnsrnQY|R&ns|L$c0ZkiA&&r-cR+rqbR$9|30A4Id9;6Zn?p zm-YK~a7NiCk-lE+K)^OmJv#2x9%yRQ{I7!&*Q`)gd(@zfm+zb7e3^1~b7Hd6AV?6D zZ)LW%&^nZq=MbUZPHKS1JV<(Nnh@A{Y?=I?26voR3TWc_wc?t!JNsq#Bj>+*8|qdW zp1FELTc&CHMl%>DXIjoyvOJvjO39uJQuQqg`qmMovNc+V6ihzoYHr=lJMb~^x{~77 z?3+CqjuMznzZRE5jbxoWjCswcmq|GVhltYc*E<3o$_`#Xn-jy419pQQ<%9fy!n&VC zkCTlVRA7#DXj1Yn%pfKP2$2~!OO??`2;k5?)t0{(kV+E&@+$AQxY`&U8 zGcJs=#O?Sw;ZtgiM)e8xEF1c`UzX@jxbLwTPLAK+kjj^e`?O!rdzl&-J44p=KTBQo zZ(DOaovdFbp?f)U45ojgubga*y$OQK<#sr*FHY+PTup8oHX?t_ z;8~Nen^BNuMB`eTg>P`jfJSA*G%xKHzLaNQ$?EL- z2ME;`xC@a!lB6Z+bzx)A@-}z&%R96fb?1_KFHGXZFq{ozXiX>@q-61UHtpNEL1H8t0R5O_ z^2B)3*jGzUer_Ctm3cKMo%ka;S2piD*a6~L>rK-Wz#HODwf5oK?W983j?-Jx86U_r z7rZOqnA>#PXDIDJRg8WP+*Q>##>mI*&|a))P$T@hy_aKe_^*l$<*1FPr^nyQ7Z_$d zOjQnBaqkY)ujD@(m(EpvFovPnvou6qO#VZ6uKWbbcpYPd_tJkUR>_RS0*6xf4(Zq;Pa8+dkqJ z+&*K?e9!8c@Q_~q#oKGEh`CSK_LV}Rj~i~$16k6cqNuDf?aK;Yc8-r=(?B*{orJ%0XyOJo*g?uH52aZCn)&Mk|1&3 z&FPF$g;B!9I#;chfqb8R!unGFhdI;L1*aV4L-(~rB&E-fHD`6mlC?nMwy%r3jz%bi zW<+C@suEVxj<@pI8vRi5Z*39VRjbc*YzxB{Uq`sM-&Lyc2f7X5u}eM67*-P4FeyhR zG{&x<{Ao0O%uexh;CLv1gt5Z4N2eUTziu;bkkR#k?4DXoA+H#$DqPF=mzR1M6fOxK zi6V2HU7Uup+xpWYCBMtYxR0$(xB257X@?G7TU(s{)%8)m9R@KFY%o>ufxEJUY!33% zn#lg0Nx#s=QFS?$!k8Bgpm*qd#^z!7hG(yWYFD&xok+Vml)U4u;~kVq4zFcl+SC<( z+6x~}k+wU-H8AgLNbWRM?Jkc$Tj&)Uoc`GVvBM54#pOISey*%ZB`sv(!d-oU_kej4 zQ0y9u^DQV#)4pYad1TQ}*|1dfq@S(Q7YnAbyS?F=lyFJqF>jSQH1;!jG`x{t0!ec26OedX;Z(KcpNcQ2()VsN6s`Jh11=_Tti-B6lH zxgrpXO^=3%(ioKi0I}}baq>r_`Eqdh=%Gk(VfT%Ems<`F2~~@)gFnlKh>nJ@osoO% zF}$?Y+j-#kZ=b`#)A%ooYkk>^AJ*gQEsgHd8OlG^Il28KODw2C->jYL1FA?(TDVxQ zg}s|-SiYa1?P-KL>DWUG!>rF9^@QQ%wiXusfLf389|WtS2Br%yN!^iscV#T}bJwle z5pvt!S5cn!uWs01jC00bIb%VqQ9SgvZ&lEj<_mTFvQJ|voxZ>8W(>VlW%1Lg{J9V= zG&%psw|@1y4Y1MxFUNtDA=cKCqYI!lAs#NopJPlZF519e0CgMu)uP8!`qs{Kb?qk9 z%DE9=9+#GHsFnqUjqONYuS#$+K;{^36s;2f&K)pNp~GB9B#Vn)5K&aB@qusK@B{W2 zrYgAh%B`8X>Ao3aO%}PjT1WEXtU=Jrmb(H-mZoW=f{5PEt~vBssrKlHzOUGqwt2y3 z1uc4ubB@y-lt62YH|6pFTV^LyucLp=n$E6Lz-MxK-`p>^uqsC-SO|#D<0B z_WgxP-^P!05*)M^7i0)H60Vb((>g0roH-_>Bx*D&IkdZ-O+7-?8RHzN-9O>-@rgro zS!Yc_bUj(B!MVO&+!UxE(l^%TtfI4Zaa7zO;7nqrnW~EA*Ne30-4UUlRZhXlh9$(wQTny0(m3qk@xo3ULqY$Cbu!8 zj<1DfOMP7{&gb4AyJMk|oO5#bjdoJTe|{CA5i9ONotxIzfAQZRc*OM7Y8qvEYT8Ln zG8`ct$wlXtR%O~_=?Z$`@B`!(Eb>*h+eHpDl*)lsdS?C9<>fy3xS_6X1Bo~;_c-*x z`|k&Z|Yer6LJm>?E@fw zsKGxx^#$apAFvM(l$PGT;K{`*YnLiDWBk+ZkyO8*P*O3xT8cky7og@Sb8n2KSRX!5 z@$Gt~Lc$kdp;7wq2JYWK;C*_GbxeNm66(0CX!8S;UiKGGui5Pc1k>- z!|`^0_b`ZyrpVwJ^o?07qo+{DF#N%RUEm7N<2%k{B{lbRvh=_e{pm*%m3%mx05OhH zI3OTVXCc^G$U!fWd|MRRpHYK@TR^=2N(97byB$}_Q3|s$G>?6+rt}?a+yxAheB-8& zrI!s-E@A~9xZ?O|^%Ok}{hW(*J?^=ZEZsrST(K?ub)xY5HdQ#xGu#3@9_Ea-74h=| z5(dDCw|NJ=fM;8vC#bL~0OHTOL_N<}p01ukPkhs2*lM3Rz3S(jeOURCebAdEtBZ$u zBaDczF>=0%R-d#^M@alxkeFwqj%Sg4TG0C9$lo$ze6K=2HLNVscikRQnFKr4XMT?2 z49_6D;e^8hX+)+_f|m$uc2|O%RElMnvX~wX^)?}9WlN5dZy$*}eUno=f-n1aLNS8= zeoj|q^7Mv(%6p=jXr;t70lCw1vI~vqksPjt_z@G>PA@%IG zaM2fGeIp2II}5!efv$oa-v$wrAT$>A@FXHPWXQv>-o@Hr*0;8i_tRVlJ<` zr_zxXXgd+IVMMxWgaNNR=0R8x|tZ3Aodx6I%_Ga zoyHUxwk1SCwOl~Rfe{CRMB9t{U0_2mpgl$SK_IZTwYnZxfd%ZBR2P})sdy}W{s`%` zexCBsU=8HiZpnKV!%y{e=t+3?lIbV``Gr~=DvP)yz;kCM=9mS7>_0wEYztSXpIkQ= zE4HK^GLJ)ge!^gxKId#jd~G4-Xz*67!tq&=Ze@uut||-W1`KnboiQ5 zU|v9)i8N4)4G&@i`f5~N0yVYD1Lw;jOA`5B=4ZMj zQ@%(YPHlWYQR4Zlv3ty@kB5`5i)U{c`x9- zD&!Zo*etgF->++1N$o#2ujms+LX(8~OIQ;&NCO}=`HVR=)iE_B{Fqv;PrO>h7CA91 zvF)pVFe|M#+rU{cM=jU=B8pr*a5ZI*lZ%yCM3#iEv8S_L+Fz$3oMI(btz<{MPgjulysLz? zqZS8|pW{UK-$3r0LR^gO-QlMA`N+52s~ZKxWlH6-fKgSb*5Iyu7Us8E5QtKkLI znQa!k0lpNgV9AE=wYn@5uW*7Zhzk`#WXp@HdZ~?>>)vSWxOm!lkb!(1ky3SHYb9ji zn?yQCm!4lRZix)})%lG%aDpdNsT$~I?W%wHD&_RdP;YhG zJ+?1e*b4_n9s;5c6^XYC?cWwEpu+N9Z~S>KF{mp7d?87rs4E5VfDpW*QET_fl$23R zksoF8zLJ`S%0ge0?D~#K#r2GCBgQ9D&$%dk8;U#Iv(I|uW)gCX(9W7}`XJZ-i{I(k z-aZ+NZl(wc1X_Q#I~pjQ$^`3Dhp+&lLUJ|IvO%DIwprd79~L17iG&+a1AS&{4v-w`L z^}GcN3~`g)^kr6Ti;0BY+C`$_qoX+1R~4WfS4hCOVz*_jOd*WgAszOR8^1X|LgZl} zo7FKlP8&PLym4TwWseFJbHPxzCN1rWk(kZNIJHWliG&Mj^p1&wuB|J4+v(V?D_kz@ z%dh*vlZbl$!pJa;OAs9z5(_A$Xm?D$|T4iY3# zP5BTfuE22J1!4i9w$mMlo=d#99b0%N5swx={!&6mAaAS}BHfK^750C^97DPdSk zY8OX{&q_!zL3ZrdK`1Pi3b6u!z@2@xXA(wyi}!>{*E8e*v~bW-g+pweFy`1{+AcN>uAM$AVrtO)f^AFQ_-W;Sza&FdHk@%6?S^`LCr_C4`ZhrgU&y--O_p~aW53e zvSrkxAJ4z*9MpL{N8!|Xv0j=b(yDFYW!0FL6vkuBt%(g@oOq4eT>E_W*vy`+u}7k_!-H1C4p_9h4PgD8l;z zLLN%@)whMxZ0FV~3NICejgKn$P{DRoum|9yQ^MxqPk8HPwS6lN?nI3L!sTYNTOriH zkP)6MtK3D9(0O9|zF@rX#n(`=RhG@B(98SMvb{^V>90Qq8bdf}SA>cN%jPj#1n@_M z2@tad39_gMr^imtey%Y1qU!~+r-)1e?#)$KZ-oNGxWc4kke_?O*x4T*?7yEs=w$PC z?rbR7J;KC(B4mb0e(QU&mPY6zQR*aidgAF2&8sR5b zHpJChM(W|5wcG;x&lg@eU*2b_@Ro_y4e54`$J>QLht7E0APM%+_mp(S$vJ3Fc=}-7?q}X&9_MzUn^v9;Z!DmU`!$WHy zjrC4dy-CDAvGjYBM2XDS;nst!2`UEl=g%%rsLY3}+*g^iO(B~(y0+QU5W3EM8m8ZC z)4JzXdbsc_ogdU3jYt8+6i5)i!ftG2y1?_;r*-lam{ZA6%~^&JGOy!#r|$b1cx0K& zGh?yN0g~lwNso28*lXWBV6d*?RPBVSu!>2I{drH`9&3rGEUVhC!Ra}}k8la@Y6xri zRyo{!*}l=;+%iXUk#ZaW(JqItS$n;jSjm&HUChtX+$2CGt(5Ue-2^UrR=cg1H8lti zZ=njyT{<3)xcX|tRm^YRr%#v29J^xEyCxS~wrd>~bxcinH>JoUL}xa~El=jTaBZ60 zm-EuzKUkvL*0~V`sX!&Y{0G4&^T!B>U$s-QBEEQiV3K4DpDOH}gdh9}B90X)rvjF< zu{ts3rSA5`x7`Fxt80N?Olq4>tIou*Z)40h5T@I25mC6Oq3gza%o_E=21UdDEN!Oja`So_8*=v9#nH&1CVInE~fUqxS zT>Cgfg<($I^!R=Pm46}3;$Wn>hmGr7%-*yAP})M}D2-l@Aa-&)PY%+QV5;9u; zJi^TsvZDb=Hn77b{=SvRzOSu$7K`ggwK-+B^QvWVd%UM})fGEY901JV2me{iPE48y zEB(R2+^Hb)U*1DMf1W70)%Gb%mAk&i$cE_$q6B|eJDnKzgvJ_sp`nBxyc?eR*6rH| zu=39x*L|dmM<5l+;<0}~QcBt$#2-ApGwUWHDb7c{x`LYL3mOe#^t1rFf;cCQHxiiu z2Z;R+eOKFt80rfUl3VFl^gRefcudqeTVkE=r58{Pore)?1KBFJL^vhgu9dphFfe{! zV^YQ)HtBfiry-v`gTc5tu(hjamr zIEv6dFX;X~r}C|m1SRx|5sbnN#NZE5G?Yim=>p7YroMOFLz-IL*kDPs`4EE^TjXa3 zM9yeNr5hj&+)QU=nt(!w1k+*6V>@pJqeZa2@A(~W8%av zyYYH?%iMSj@ge!tuO4gQqLGLU&L{db>_sFH?#mt#KZT=fm~uc)0FvY-_H&iB-4Y!; zp16|r*JUfbLpmx0n3}f@)?}yK9&0&z@^)E&XJFA$ypbnLsBP~phqmJZLE{D$UB!o? z>Lvo?Ges^1Gc}u=YhH*~HOOtO;ulL6Q4a%qx0oV;Dby~4?tYU1xz|DwCUb$3C0;-! z1sZfTx92JNo3)sb=OEbELo^*Nr~o}nr=vzs4E3~Cv6}sj#zMbcYOGWQd6?cI6i1)e zD_Bv(N+GpT(FNJJ*Yr$K-x{8DPOTO?K(i!|x_BBSw<-V-wm{VwEoEwSfz=-%+^>a- z&Y}n@n!XSw0nG1aFzGUaiYo4IyYT*^x&MII_L|~Ay{%cjmwr4puo3exzH<$Wa9ulfSv`7?9tQv>#gwq8leS=;aBP&_fo zw<~YeesVyoc-)|s9A(?lja%gGwN5#_`uX*w#EV+6>kgpuBVh5d06>n{wEb#-fFJ9k zMUt);2)5ub7&#C$n#RtS6--e(iwk`s{rlw6`f@P*9Y(D7ORWlp78XXp2G04^`7SAz zF$L{M_E`QOP{@33?8zG@tIQK_jvDblJhU>4c0BFz_mbszG5ck^pnj10FT#AA-v}xd zhF(PVKg#CR^K!N9IS6c^00vHiJoz%Do^FA}gPLb`_r;6#&9kFdXNSHp5`DZGKwBo>4nEgAc)GGQ6wJo=?=&xa2d_Ee9AiecWOP z_O;Fw(I15{YYP1%Kuw1QGD3rlC?F#M&l1YhLW2qrS&M~0p_^H>Nt4$r?YiU}o*5;Y z18`k|QqvJci#Ed5D=`-wZH+&U##g+|w!n}N&0hUWC z+zqq)^^9)8ZwFDSGTbcXBI}Mq(7$%7|m65;;kFfx<5wXIPBFHfN6RSqNq!z23F`|CkMZkmsEN=TQrnjge|&;Z$pl^wGE^f zR<6SD$za-7+x5CZAKHZo&L)2)vkeA7E*(?@v`|8$Js>!X@f(O|fE1S4{~hF^=10os z*!`zLt+qz2ZV-Xpsk4~X&B#^(ifs>AUuSmxCKi0;3+2k7(r)C^268XT!Xt-^roG@F zp0l1*!{kBd^Gk((MHHTM(*mXgjsvggQ?v9I@4(SQiK(KAH$e$oAhpa9>f#pI|TJ~8u`~#-&sH`M? zteU=f`&$cM?zoO;H6I=+Di&sX{~Hyc3{^Kw>d_3GcG;otn;kDp6@7ACR0ynb+lQC> z2d7N90cXHbh+bQ}fb73vT_RBe#W`=v#2bMZ@KpWLE3@=Sb!ct@M{DBfB@(&p!7$KQPx-v9BP;_ zz~qDp!=bt{ElI<6#f8?+F>F2+n9abcTD71#pqyNctHE}l#L6fWEq;`>F+4iPwAh2o zbRlNZFG!otg5PpT-WanJ_B%juK1S2=geWl_Qe5j$>h<=QKkZ#Ne0^rJ#wp;{5PURn zxs9qD&>eQ8>}_?t`aQIqs&TMIx>xfk-S4c`GW&Vj z;E}#+vBmgggw)>AA6W>U0qzQdG5-jgi?Q^hj({;+kL$qy0W|^R~Jsmo3^|cTbRUqL!-`{kE7MnJIR0cTIR{)FjeHR8%7iOq8JG`y*q!p$rke+5i9vzt!%Wxlt2(RDD}w8 z>NUk1*_YOArlC8brAeit+O<#7(Wl*U!(d@MD!RnNN-fI1?j@WxmIWKA_6A5rUGVy? z(^?rSHv>-aR!g6)yCXg)oP+i81B~^|1^Ey6bLgMnAH(NHlnlO`?LipS@AwSYPmT2z z8upUk5D^}9nt;BgTu0kwX7tY!9}3HIOC|P~1541f#IM4#H-{vhf3NtJLfa22#Em;7 z*T%b;C^im9D;4p9aBbFZCXi`(9dH$kwOyvyWgqHmR+6s=X(i#SB_DEb^YEq`@yjcP z4MS=dc7hSNa1c3D3x|<~-%YneF3rUB6&A#ZqE$lH9>l3JGkNZ36sv6PlIo; zOi9R7fy8W#9j@X^v&9txy-uG&S&MDG5NMx@mxSHaJlVGr@)1vx6DuMUO_%-c>1pa9 z_xBoZ5wD_s*yY~HFcE*^2x@B$lknE%w8F1|fpPU>LD$uxkLR!+$Psn9V(92SH3Ma$ zp_*$rQO8&r+Ae578ncBHvEERADuKU1M>A3w$1vR-n2 zoQ219w>sjZ+bWn$uKe>K6cN{CSAP!+2GNg~OpQBi(Ma2OxFyE{%jOuCl@>J&yGg%y z^MZ$>bFJ2Rp?j=c&T~yAC2+|Z+CMIjo&A3I$pm~XuOG9OZ6Nbq90wmQkIr@QjOETx^t1&7quhs1I<4QR}<|p?# zt9;(0;zC4ywinX;K>?rqJsq9e2o$#{B74a{wG$!YJSsEkJ@Z6Ngbf=J2P#E{ZU{DI9SLSU@$i> zpl+V%DrA0g7P1xb%Kp=i zY?gT^4fmp`2ArML9C*Rf|0-FI!K8|~EFJEx!dDU}@kHIqYS1p$xtsX&$iAABv;fyJp}?!d=vhk66Q5%jlN7SBpXum*yZ#t# ziK_O^Ka7IV$PXpSA<8#jJl@Ak06;uuvoYa(j2wg7f?O)83bJibd*z-en#vD(*wc1$ z-B}YH40X1#yy;cSznLisgay0cTK;{xwMT^r&B_8%WBF`ibwR=-97#5KOvIV3Pa@IK zQUA1KZ&TYvBNn|mk7woRdXc}Kr!K-nabVL$l49npyJjyN|GczQ1YT&r{<1ty@~x-) zgBx84aw|x*We#weH8h#7eK0`Zv-;Ggw$Nsj#?8-Sq5i)AQS&#==Hg{BzvMN;x&u5@ za9m^WVR(=|So(4cBs*TE*ET4ES$A66T`l*8})QcZ%z|IYc`{aXgsEveH?#%u-+Rg4m&PVCY0%5CNgDEh7l$tGGllTnja>bW> zR|-eFV~cw+ebY5t1wGF?)uxrVa=*y)1^)4M+de%R|Iss=EGf0ekcF$yrYMSLU}vp& zJ!_hv1$Q1H9U;7?<2g+#!*UYYEVsrZIG^F2QtF{XW8So& z^x&UPY#L$`#ODJ5BO6=lje7+7bA4B1AWcOD%$T22#&ki%=p!Uu;i|mq6^MR#G7tj@ zvr+x=LD*P9M6Q<_WyGr_e|rLIK@x=>K8t3=gF3F$toM5VGB~27wDvvjK#z2*?MP0q z1D!|#!WjP|{#?2;e&RXJcw(h)wk}eY{3pY5_sXteLkBGCEJ&^G_MXt#gRLC;Py1q!>fEDOgjG^n+P(Tb(g%C^m9%3P^#XYFZ{Lv3!gp5AzQ~xvK6BC7vDVOYLT+3h3I9inwkn z;$G6eNx&(Ib%b(OKzbVbVt+hb9Q52z#FPp05NMAC5X#9|%PTM!OE|J{+U=r4C|Cz) zBq`IV4ueXZ*rNl30tMmKBIq-?Qh-0nx_8te`8aTW?QnKOx>T7wv`Z)7sQO*2Pkg=J;y z>%;FkhyOX8`*5H8{#@_t{n7)~36qH|^SbUJukoP6b#i8PXBAXZ4~eKdXQ3Q~gl_iB zO15UhNkAAGFuzGdb}Ma%qh!e{jCr4)-fh zyHDnis>>~!vyAEGRY6@;V#)khDzqX7awEZAI3Rm6+#Uy#Z#E)QU{NUNA5!6>ujNz)Q*RM}!IifOkh^6WUZ zsJJyZb^v2Cq+4krzr=;vamdv;1(ubVgw|XV_9Q**dHo5OF1F{km z`=sxx)pvN87=?*-yrW%kJPV}3sthy=v?73X56IA92H1Hj!oNqOHyie6)cn$h%{?Pf zNoxp}n({*;wWB|@{lgi_VKsIO1JMom5-jnF>%lUNmgmZ4xNoB)z?iBs}7$#RmCf zplW1g$qbM^Nv7qcqrc*{ZxTWUCgxk08x`hl+L9XxNe%0(7Y;FG^GmXeh5=`H0kX3I zp;u}syOaK5sn``A4=mJ^a=1wyyAPEi-6DsO^pzr=SD?okS!L$S%j&4j34N@Up!vHVJQ$Sg|vK6L! zQF`kC+0bg5L|}SyXDhM=$jTyY02k(1Dq-p{z~)SE9Sm5LD(VJ+%_+d|ijhgfq9X?A zECr|^0P079>AM5dt|X%w$@fsi?Rvh&T(NTxOZ6K0p425^M#RnnpcW*M90!Qz087O| z!UU;_XCTWD7yf%GQ;-RZPiZhq0ewAOl-dj8inIU4fb~{DUhAM=Q@&a&o(hekHN8S^ zUxmKtD)Ha|d@PIh%Aae%zFa|p}QXv1#Z*nX3C=iOM>+$Srr!sjS zMkCph9rwTUZ6EYxyz~PuFw@ zg~PaLu?d5IYqrfFZ@ioXb0cXvT1mNJp{~Kzk!-|O3U4u{15IwZN4_=Lb?XJ0-z=36 z*~};ZP^^kAeT_tnOXLY)|4%O#XUhbgR2k@oI*G%AIhj|I0^D#43AfF)RzSY7m!v2l z4HDRn4b~)s?I=QqB(N<`5l@C-2B1&=7@X6Wg9!s;M=*woO#SZ$%I-k-Rj@S<5^>N4 z^+ciF>mYxW?t5{~T(XqIuBUqmHl@D(ltf1{DYuthZP%i`#2i@6<^LFhe3r-iv`Y+O z6>j!At+xyA$OdCq+(d;y>^TD$Jjk*OmKLsuS^-XnLksRWf~1Oc{eXrmT*lQH&jvdv zg4Np~`4MZ9mx<+04#}(XeJ|5@=*6k83N7P3zUxS9bDK6*d`ayK;bs3BW6j0+M+ zlE)IV{QJj`JNbxQ>OUIGga%4tJSD<2k+&I>3=IQ=j@b&>x?*DVT~7&kmXnGu^SKwYlNO_Q8-#DU-E z$t{IJnE|FL7^n_wT9M^_G6G^H-^ZkC{DW%uEldg`i*n(qy3zsQiB(iOD>7)vsyUp43JJcU){uct}P@0w5Y) zkA=86Hx)`_A&!Z_V)0jabwMsTgtW63DF%!m846(3<#uUTuwkSwIN=epw~OaKO5in0 z=wlcEgD#!|7Ce}xhd1DVMFP%u@f8!?M)ACdWQe1rnop-KdjW_95|qmbB;aSsaERZ#`VfCjMNA-g6tWRqXx98JPb3x54^tUKW2d})VxcEK|xg<_=VWiGcYvD2!}=ATIOS^VL9iFkba8GpNsK)$$rKNUe@RNDDt zB)Y)-Xe zB;Ysp($c53ADlI=%xfngpsgtIF%bA}{cQd#?rEzifhE+!hX(m1YGqN{Z7CMWg#$Z- zLRcPpr+q*PR_%lzqI;I{w~VxBF zesxm7JLW(C>c?V@{F9dd{5d3nRh$5=qwqc%Nd`c4&Rp8Md&Y+w10_SPNpKqZe*`Y< zC&H6?!Vw7Fm$sj#49qeFIVhpUN~V58+WCRp$%M(|x1-#SKM z7q|NhCD>joxQ^lJ;v$0@LyE_nP(TO<{JT-)m`6;_Tyn#c%Us@iyXK+dSv z7%>00G2h7tE{OR^Ais23-JDN*YW>WSeG^N)D}e$XCc&FYaQhW#0R^VL0@Nl$uacha zcR>6!d3mx?Z%G1Zk^nQF|LMwuSq{I*1+kqKZncEqpDw|_U4q8g?fT^(*DM8payXAx z1m2N$(GM9o4H`jMr0cD*)`g0)793E>bNRtGu!@#%m zQD-@bNfiGwlON$KF!P1K<}{xfg0qVeT(%HQKKPMP%z?iBfjoH1NjpHJR|Lf51TP#1 zwg(9;v-pMq9pw~64VABxjL7C7x%6{3n+JW0cV3pS2gL^vYWM02>P4!5eBK7?jJ!ut zYin{|(GN!>Ek`{yLbLp&&F;3XeD=>uoUK3AhI)Ke(*PgWZ=A^OjMF?L>lu|aSs|^U z%`_K=KpnG?g)vI{9|Xd(lGcVSLVxUt_a*GAzX_duQfqk*{o~xyWbu|yPxz-La7(w|EkBDqmd9bYH@v=hGW?%P z8AeP6dHOVMUskWb*%h1tQ;!(({d^?0EST@mwqfi9CQDUbU13(eKdS+$K4-5mYpS8r zn_50+Ymrbdp)29d#zP9!eD+r$I?lT5{5mnZP=;alB`6B-jLpNxtG7-LAfI4SSCH*e zcGc;9p^>s@S)gM>yA#`aa_2t#YDhHRPTaJpUjZdqMx1zc^Agg->J}(!Xcs1lsZv*w zYq>i-AsJUTaH*SDWNzz9x3PYYJ{>n=Z&mE<>UeNHsZxD&@@~kjiK~7Az%W782yz|B zI_4F)z$sw5Bp+F{8fWrjS#7iCj91{3qk3%`DrU+x&mymJnx$`=f9n*rb85U=^~kAy z`HG@|fSWrH^FK~$|85gxy=d4$bRkpQMM|mp6n1+5aYpzcH{OZZHO8mN= zW5D%ik+OT)u0fMPD9l6s*!{7q{b{<%XQ|sArbVU8|M3tPz)|rnbOVYd& zu}==4txb#JkBtw|pU{&y?w031&8QoHZF%nxG2*e>pfWEflJ|k6`UE4oIx+vhu~*09 ze)Yc5+N@RBmToxsQ{0+3;ks>-5HMhKB1}`LK=pF5W#zAujP9pe>Z1J1O$`pq*DE&UVC26>MW~R9|XAi#s)!AxBH9kyR&cbdo3ehhB>l{zuX!Y z8VgV2Lc`Zm?SuyU%}=KiC5S`C-Pw)329hQAd1Fqf4xzTx#z*LAz1Z2PIEjf+ z-Y$HSWW7zB55QT`u=a5IfacTK_Qgepb$@k3w@!M|fYOs>U!j0>y4r~=k2V%OtP^mf z=Wa?LGZ}J~!N`x=6HC2rM^#wXi%(xEJxI=J*Z$QAaoG*|vlV7O5^Ro8zH#{~5iOU$ z?yT^*M>9OV<@>}t7e6r#^`hDN(AIh5fISiPwcLr5b4pH@LGdP=J|6bXMlzUkT=3jp z)mw37pEo3f>hj)2G@;i)J?q=0`zvmSN4$V;dQI6c+Hg)zeWr!?Z1j301Uq7yyqHRYH_N-PW~$pbTy#@?8KCTqIn{k{u2e1X zUiS_BTtxx=+u|*kSN-~*phCF|MCf}|0LTV>-kPw63FMVC&u&-SQ>!cS*tSYwUz8Bm zEv?zQGq~e{X&46U__FndPu0LIm9;;z>&GWMEzl2s_li-&{@Qy!c{X8_t}az*)6Dx0 zD431tqUKLD|6J$AcnH4v47lmRZMSskCHpk+2 z`?~0*?*{c%nv5tPcJS=CnCIb<+6-)Die6i0arl~Z6Ou`89YJMtb|utTaxA8-1fI*E zC~j4H3_ZTCF5~^RP7{E{fagh-22XobLN+K)cu}RN4QVR`a3s_J-D%lzI9?$ zbnhSZ{GB@f96)~uf629jN6Qj-lTPVXF=j8yeF07pWSbHGe7=jWUqTOEn=8q2@GW)z zg-MiM)tY9fG>gu$S63m|uEuG@d{v2)%ES zd|qw@^*CK~lIM08?evK7d5i&uB5f}yzmssgS8C!&3hwR=F~*lRPDpNuN@+S+ao5Lg ztgn6=6p%oDs1tOYHe9^U+xLXbBvAf~ER`iTv!y0RvQ($leF_+t5nYGu0w+ROn~pPRk=uqfGhpf}&*74NMyGMvKJbH9bW9cy&O zy`pUxdXED(jlxS&2v~c|;aEJVn%-SWAC)rRJgcA4Qyj1|h&1Nz#AQXQ)jiTH4be9> zN3rUv=m*UCJ8DrGa_(8b)s!PI7InJj{rn|lW>RZ^-Rh?ZoQuCAIWh~py8a(}((K_B z0Q{7~Ev#a%pfCR*B@561RyVekYNcY>WA8FXjv3&U0p{1fnSey^kIqZ!I;t7@itCJJ z`2GRQUZ-vW{$0gHqr;4I3owRYX>-3^XYakz&l%y2)-^#(Wv_O zCp(G-bzcB$N6{aAqy>pO)$dPpD?X;n06Z+fqcUecs&jgn<3&x=Aon322qO@D8@B^7 zau9pa0D|odaE)9Adk{9txjuEIDlX$X4{WRpR_9h&O1g-&haC(AWaBfBd|^K-+`e%? zQ$7V}V!LNw?~~I*gOA2R&?fYWWJ1kMnPC46f-Cbfs0d8n!-D@E0HWB=jRCYK#qssn z`)p_N!&ccL?xRQcE1vCudWI?$xeX-tpdCJ^pnyq*70|6PL^uw2>rXbc<`FWAeRs&I zBUk=jm>KjP+!~^i!m_&LZ*8?_+eXbvU_q@{K=Q07siKZ32B4lyg^~d<&J*TefS552 zg#dnjHp8tS{4Q;CG5z7zmFwNPy}nL;7d{LE`OIIm1FFl8O0lO^YG{B@)~^&vPL-ko z3y%e+n@6f2Nd{yiyPQ57GkLWHd#@a+XWm0jArG|I*r#$`5)ts&|CewTD9&P>=|{lA*S#Ts(AI5cRN|{Pbyo?3Q|d`w(WD2qAGYb+$k~WcqW(JXuy* zEtikVy_gzCOPdi@*`X;!W!Nqpirvpn6zAc729j+DXY#af!Ex?YF}H0OV@rEj!$!T? zq<%2>y;7o;%6;DF+kXP(%!_@RN06z9s99lR z=7|%*<1;;@z>0^*kr@2Zy%)l&51BJFeBzGR$|l|Zc`0z4p@(0>!iA zjHS4%1nPBcnKAVFtwxs{fCKPDU}aP64L>&WkDK9qHgsssO@1 z8S$;?xDKGOG4On$UCoZONBT3*ytcDMZ#+(<9yfkeW(d9Su-8s~xHoUP}!?bgJ z7sEVhb-{vYyg zeU~Xf=Y+RH4{$hFb1mR>8P($Z{M}P8V69Z1e(L%XKp0OG#nXoGalKuj@KjmrbBB>Z z0s`W8T2f*N&||v~G8E@^q%-45yayF9|YUwH~JHw?dDL!+y>mN#ssj z0q(DwE+f&?J@~PJ?=tn3IiFDQ<0$TlBuEOg_}cze)AxWOnS3}Ez+X!h_`Jg3%Efj8 zT&?F2ZdLW488pl?;!4xvaQ3g;nHD5y@{C74o7OG99Dc9xUE%TFb}9tF+)W1Xr~-v5 zUrDae?Z{cdQ5N-6F!xYvp!VyMvU-qg{!PTKfXANoj2xIPM0JJM|J?b}-l|1BRbM&p zK>vk5f*WM?392VA^W$k^44T;17<6y;r@8UXv|!)Y8BVP6y63Y~0nhjlPmf%t%AR+9 z|7m`I+*=_6h+$+X$v&}#b6N*bhC-_a0LTL}M07->HIZ0MT+0kxE5S z0Y~BihtAE~6jAvWs3>EaWEb6z4gINK<@(X@>BHxG>*}x3vg>c&xex>c_d}$NY1gFJ zx>-~n{2B~T1shXA)NsSv2&1570RfuHi*S$dhxOl;0#gyPXJZf;N#*h#gGvsYAkxJ(GOUg2NdiQci?P4!YNp* zUWK2=XO%NHzt_A*p92he20>RgL7Ye^dnI~fi*`T!knxu67VWs=qtDN!#02KDc(ZM( z^q0wQ^(!xtQC!j*D98jvf1Zci1Dd&4-trZUz+2SD*u5RMA;*@kn-JzFc=M}cAMw28kqpKZq5 z@89Ay$$3*j#Wl3N^Un2*Abtk5SeAGF9H5@Ej!Xr>`{NIG3jjz2P_h+dMfxCcE3cxQ ztz}qz@mHsc?#jqUtJ?YEBzC4cV^g@FAKCBB*H683Kc2fV3d8{({TGSgP; zbq~Nrlr6|vmto`%J)_$^x2m-r430|O`}-cX_90-r)P_pu-t%9x0H2gO8=uJcYIcCA zFEbHqJzH^tQ8Y=eh`X}8FNQbo>TT}?=qD@dbze30v{Nag$pSb?d!R7m6WoV7-3e&) z0{HZODqbcd7Tm=j1H|wk3wGA!6VcM#d`E{nh)U!DV-Y%y2RYTrFY;7a7jfH3ayai0O$6_5VQ?Zw1N$xbQAWzH8pF3t~3dz8zwt7woCP zrFf0G^7Ed|0?qV%6939qSngY-F%{SffRML)$ZL9?R6Yz1Yag8$VJ-M=vGRU&CnMUV z;#=1}HZMQ#)#h(Sro4A%q5pGX`)5nmzwt*c-}?L+j*qD~1`uy1KIvN*%B4x;=rTW( z&A!ub?KMPHHDyWkIkmdm9|2)d-z8gtJz_xjBb;-}`9SivZ)alEk0-q1Kum51@+s`{ zd$#@;C)}FiO=k4*&AecE?Lo+wX5_y|+Ap{X6q*Ps*iz@i5jmhBYL)-~k8bjIe9oF+ z(4Mq7NU;kju|iXh0?nK7{bnkC^}p2F$rv}Ft07LO-lTDTcEKrX!--R#M*tj4s`rKM z-2hh}z`k^U22ya$(R4bm3C+FvsqEIAd=hPtRj>Kt-OVp~>M;GYt-n)!U`LHJB-yDY zj{#hGdgD8Qd*9`!ticx|&)agi3$@lNw1l5Pg#{qSXQuK&*7elFxQ5z;g+difer?WA zF|IDi+Jus*C7Y3)@^!VuHNMs$Ir05)9K3BoK>F{ZwPOC#W%liw35YDOOL_Ey6XuS8 zj*4tHDK$e9K|A0lc|5I15kk?B;xzush@qz`rN=`r2}UJ6rAabqc5skF6kVT@W$)`0 z6>=qHv9PWcFnIx#n(#%m^)$kG4PsB-RRuJuAd5b)lyodhGctTy!<0*GRozy=A?Ns) zqK%Yz!Jyn^G{mbi@@eh;OysZKHWFp&cKB#i)}nmFST;XeFG}3C&L&?Jt&C440f&J( z0%-G8z^W4DvWR+WZVAygO9r3fV)ae)>Yb>yiF;>TdTQ^GJDsg)^<(x>1$@dr!)jzS z3oan3YEQz310hHO4CVUQoy;qT%=dFgV;1{Tzao1sRXpK7@a%XrD=c_p`tL=4?*VTz zWXukR;M``jJ11Uu1-FYwmk7Nh<`!W6o-NQqGIMwYB{6u?Fx3&lFL^uN;TB;=NGpoH z;2OGFq*hoOE#-G2AnWw^ZS;3ohgU~4sn)vYZUdBuUjozK$-snXb*Z7dicE||eTJ7q=QJB0DTrlJuD~P*NEv)usa>?F zfWXsU(KiMlG`PZSCV@|D3NtEzeE}HPSo|wiO&obH^2TIAm8-rw8oc!7m5&0v_Bt*@ zq7uRBMEgH-f(=rzwnua0E5XD9gAxF-OP2?v}>A57Vd*G_;)N9s`>h-Du zvxvuzdJ+pI1Mo85uXcU#Krkb`oT2cz(TdN%tLJEGx=^OiCH1B=*UEO-@aE%@y;p0k ze!u^|ZZOX$k}pdF%wFNsOvTWNad`|+NMe1mA294n%4%%veFlM7*Mn2XZ)Om}{U5O1 zk6Gp*C*PU8P@VTc`xy6%@E^{G4SR(qI*PRf_rm<0{}FJ*P(_T;l=cQSv;zP0@y`k( zPmAfbK%tu%>*>A%eTO>pOq3tv2GfOeL>yIJiO8tC7ePp$ixbr9gBBAH$p_16IC`xP zb+3-^a8zOeX-yIN)Ym%tq>I6{L6!}aB#uRAcn3Px+&hkCg+{kSqf31cPM|VG3;04^ zOc8SBMZsNjl7@?$o@&K`z9DIH5l}+pRb4<>-Ex(q%FLiWUb;cG9J*2kg01C` znmgzPc$W?ch7Fqg^jN%n6Jzw|vBrSaC?go3-QJ6dDCv**g|WF*+nlk&kdM?!)6cY~ew!ID2UDN( z`|iL%w6fHBQ9ElwFjS7J2z{yW2H3fV{_OMkY=ILH8KVl;9tz2sVQ1$RxdG#hAySk3 zVIE9!mO2K=BQOnYa>IcTg|SzwUlq>xmS&R-q7Fh(8SHUAQh4R@kZ01p?#fa}Vgzz_(6SudtrRJ4~4i-XXSEjN#8@h#oI0Dju`W|w7fy(^vHi(bHf(R=TCFQLIdH_m>Z(cn+ zU7aEA))eWHkeE-d?t>l1(S;d+>qs^erkgv=+er}a7JJ65=0d%~JRa~cJS>Vijx(sc z7>whPPtIhU;QZ!{o^*rGTI3%e{pij5-Ahj@g9mFN1b*Z7bp&>WU*VL+Q^FL)(!11n z=7g~@O)`*gza65D89jtqH3)Be>^)6(Nb3ce%W~FHv=8q8vUTAH! zf`%|1OA96_2QUlOB#|qC-Z>WXDkE2WMZG9)Y_$F(v-`BwwrdW1bg=HLZrV9MgFDZQ zx^`I~&(wX8%P|ns`8{1}F{jJ#x-g6+P7U*7%EWj`RL~*&VF3mcew@3slC9@Bu=w*C z(mEA=(`P)>yAJ6-R4?S*1{5^Cm4SRl_J8RY?l2ZZ1&IU3Tb%HGp@)zjY{DTlv(xx| zbf{*Qx01z1ckzXGVW#KZAw`R?Ew{?v|I_?+&v`@eMqu92AQnjE=Mop&T>;Ahtay?T z&;)6>qSId5kFDBS`V6b5NV^4WIRMgAL&%hQ|EiBaX4np3N?%P`2TV6zIwi^}LAKM- zXyyS_BiU*R8MY=1{}^cAz_P(FS&KGFghpKyKC~z$JRgYv~#VQa=)XdO22m( zXY6Fi9bcRbWJyWP)U@85QjwI@sFXklbN6B}3PB>qHw7%a=C!rcu( zLVlG55s%OGdxO%83J9wR3AX$D7fE0p21t%X%R}xxy!v`7+gZv`H!*kgW`*Tl#{=fW zWG8RHjq-A%mebOwQZpZ0c)tC8zqj^O$Ct$7{uuGI)YF2g{X}WAqRqVQTdJ3>jYp=a z->{aQrTQzw*gO4W*hO5HLi-yo-!hCOkmy3`0I(2+I&%m^<7bn3X+C2O7w+>Xn#)!p z=bw&c$EBr)2F(-d;eXfUE~Lzl-V`AU5-I~IFHY8czkY1$W1j$jpKO?A!)4$e9i|pYAZv%L%Sv32%v@RBk4=Cxu(zXZx zQmP&wI(qIe+>CtDB$H^wBF_D*+&C3v_LsQ zF?{V`^tAaFQba7^fPX^d%thrNPb}Vymh=`ArJ1fn#6wALo>_H{h}YtdWN39Tv>GTR zG>Zxz)yIv32^fgwh(_j!uFt5E{g~bq^fj5sc;T`{ubovY<1F75VseJU59Vh0|0G`% z3fPDsujnUlh{Re{5^a~p;XH3tEbEBIb)wCaY0Q^urq%y3R({Hp zs?=_9@?LVt%W&_}2yqQm%^j zCIhQzfC-B^g%!F7cHQ!Gxl8WF<^DgS40!;C#zzyChuKl!ZjSCddVyjU|4&s@}MK4z(s ztcM=354Rj6qP2MtHP8zSStId^K0gThj0k@(aCA>|niu#?{bq5=rf1H!=JD) zYB3dRS+MkeU-h-;Ww3T+_3)KyiD=a~gfD85Drj}jEUeJw4CB9QXML`-;$uGkQZr7^ z$W98=HvpdnfvbC>4>w-F(i{W5O=#<*w{_mgyQ(ggJS@FuC8tVPX;t-81{v*vwE4i& zkClnfwu*Jf3Ll0hloO3oM=!v_U2CDZ?FOplh!%p!;)8;wWFx5O7@A&h+P8cmV9UT7 zEO0(tzd+?;A6>JuO#EA?+hEgEuneySP>_;6dJShdRA;ZXMCvA-`!IaILK?s5#vF2%5K=>cK0bp%xLUIBHl=m^mL+)ng^M5CeUGL%w>u?FMA9Z+j5*NjdgU#l}K3gU#M;{QWEyZnCXS(=}ApIlW7XeZvw-ajKe}Paw4_t!CoiFlh3#kZPO$&;H%E62_Wfb@LIW zH^XxKG&yq}8C3$0(@k-Yn*tvA2O&E5-ffe~+PtGwo=Pfliz?7~Q=FoMBaaAP75&>M z`*1np#k$%Ht%IEx|6U6Rsb;&3evsv!!h@3Hm{=}m-v3#GtM_uzS8XHgagvm^}U{0qe8EDmXE#WCW7${Fc{L*-lJ<^K%f@A z9T(;+0!AO>qo)YgEbac&Em|0YGn0=Ep0UyEB4}+5%cTNkQh;b{pvb#mnKf`2xNPXX?ydy)HPP5%*t?Y4(YOb0PnJRH=N-8@Sx2&E;*M(bWP* zly(k=*iW!>O@tH?&pgw6E-zhsc*AnD*>97r0Yh}c&7$@^) zch7cMj`&qC1Hcym{L!N!-v;4c;X$vHvtBG|#rQ$Dq`00!C$W$5eYcgb*=&8DbqaUi z&E8e9*3}?q9F`u{S~!VTpnUE9sx?K>9BlVE8skdesoUx7y!}il2YK}K!%!Ot@lTIg z21x!dkmuI$q1<6%&Edn>zMw_FUODlFY_I?1ew#|_ckj3ALsvmYnzGW}Tomn-*2@j6 zjCb2wyXG_En9CWDlt*|iZrv_4ZgFVv2^bsU3! zadj574dTGhntMIvC+gUBn;jpClH!&dCv%sckas9QMsVj3X?HGb9$vdK*9TIij_Bj# z^)3fRC=0&)_k+y%CiJ$cf^DFsNl-PXOLHmRYOJjDX}qM`B!P&-fnC3-wt^ZMxC{!F zXx9-G^fo?i)5g%oI;>ywY!!hz_)|{WQ0B$<_vJf`9V5R7AKuA=Z~=6U{R8?iL2+aX z9<-Bjwl(u|Uw8L^RSyPIrEd`w&FQk$G_fe)ArIEnbA5=|b#((!Hf>jTAN2Mjcb*y!@aiBu@eqj~o5MRe!%9pr`J>MCt)$Kcj z5eXXY1Z{(i6Hd}x=O6$xaouFVqF?mfh(W~b1W~=rm))a!Y=YtzO_po;-u`{^&aiA| zz|{1x1^~pxe6Os5G<-6!?Sz{zzp3w>G#~|$-yb*mcKjpS*5Khom>G8zN4M^#t6C@O zsD6n$u(F;9%Bq57Q*SnCm^$PG9saZ#fCs2Aua9}+8v~o$jU5WU9>D)Igq-t=@7{+&lG#2Y(;U_btD@p+W^|CugWl zfY$>>-dinyB{k}QHxD-V4GD|5{NLYu4;n2S!OM7Qx^D(4>LBBA07iSttHE+aVG6W$ zfvzM@_yBLzcyq}x7kq|#OC@Qk&`b5~%EOm|m+qbpU;IN5_hwCLd@-B+hX@_~i9F$u z{|D`nu-pcT*BFrlfcwoA*LSOld&pIVH;3bhrg5YAfYIaRBco+P5x>)+4a@iy{wy#Z zgCQuqq3ek@7;#$6qB8zgNUVR*Vi+14@|iU&$Hn`};1`@GPaKDy{ig0gzS9LVrl6a( zoK$reae?gRuk?LL2iHcDSF)r3zTb9L@V*hybncW> zxn}%q`FQ>vK0jR4LRZ?iX8vW1w6E&qC8Nr>_d8*m{Mxzf*uFSz1uvhzlabKlt?JBe z&$jaGc&7F*?DZ+5+1Mji#eA){8U@z3eBfx2`}!VW&mr>wS(EDB-F}nKo0t7pW9jEkmfIKzR-ivvaUbK}?+gY7# zqN}s*G|pG+PaQGPK;h~{9BzM-5AdD#YB(xx&}2p0D`N=E1JKDAk>%9rBFmAeCJ+gv zYjf!sq49-$puM6i%K`YT(0cm(rHKCPng@@wZ%D!&b97UB{9F#1Wd9{xG-R>n7{s~P z4RlhN!^B!x5RWe!AM_zr;@94)O8EHREF4==aT4)(N&cw2i+fXJOi(us4SJPVZOG}rO$gS zW=HwlMD9!g3W)pDvJtJwddTlc|}?P!xIwmWS;k9K=e4d>-+i@XOVR!y;0zVcsh!=uWkD zk7URDBLwHW9b_Y*(vQelYLc#PWJrd@)XL>EQQ^q=UnA(c{&9`;@w_PNXgO>)??RX& za}r@AnIrxBqN0LOpvkew+CO8MGn-mg>GQPHxhs$c6T28MCXWM#0Ig*n)vpBdC8Ul@ zurWEyzn;|Ox3Vw?V!AqQSOl6iI<7+D9_uPw7v}p|t8O&$c#ytYAC7rK=qVk~bXKV8 zH6E4FT!njLz!Il;Y@w#XVnutGm7)TC7Iy;56pxKEvP|mv5)=yp8F{p>SDF}t-cSH)XyeEiPp zF^zv=<4P0N57dDT2*|E;c7t>pdpoC#149wwO!b)p};-3>UOU^vE>UsB6X;JA-CA#B0OkSY5BkSh;W95uE%-5j%0GSBkki%_iQ3oPD0@j$6 z(>eYxhn4=U??(lKc9a2ipi$XhB1~$Q{#op>r3LZ)Th7-i{XtNa@ka^uYbSB!^St#I zv7}w;y*iP9)&YBh#3JW>{CmGwHCyAx6Er>|Y02~K)>z{>w#e4top50*U@iMFgLHEZ z>w4u`aMjD9QelS5#ue{$i7^qaj7Kl9vw9cO;%z05DawXwp^Nc2;LeJ7lXL-6YG zxCpHOo@z1XR>OYgYb1%i>VK&kdsG1RK?d-kEQI{hM{L#8CbK+v;hg5*JwbDA>>sxPl^UT|YOzwqv^ zFh?63fZV{l-ZpmmW6gV&`U#P`BFt4(g+a2D1&C(+E~8_YMW)}4dzq^KCmDrgun>?r zuBD0GyLsRoi_(5_LtY^AznRjM&{YERkocCxDn!dP#@}P+q)AYBRXwEc8VS=F9 z^&RU%)k^s4oLY9WvT)dAsqZTSdl;dt+yhFusb%01b8OA78 znb_e5F?Rtoi21nNGl2IyLJLex3w5QL3P5n9JU7_i#5Dydydz>*;Ttf0QQn-CQ58M; zw+~TV=U7l+)zR>)rzY^wU99B0Fmdfw;e#y=*%jK+cf*R01k~&68*(=dRi{rbL>HDi z348`@U`|SZ)6lEntP9tFn<4Yw7UWe2Acru#xh&Y?EHr{;aP*r2*LE!umUXy)Jk4*jqibPOv5XaSi{wKx<_PhsVHr+c3CoHZbZs+ zdpB~AX-{fqfqJnYJS6sEkXE0%0*)$=3I94Kpq^8H|ItHnnJwv91WN!7p~EtD5NLu@ zC?5YNkq)o4bwu*>;rp}|yc*DMQKm%T>LCW^cDf$EHG?rSO zk*xQm!XnWBV04$O$V zW8o2uZ>qw$>M=@C%E}AQ`sx*T;_gtH_htG{{_(4>xx_LLTtqHsXCPj7@sls3LEqBh z7Is1MzZP6P>&9MH*$S443`E-2S$ceR7eGy^v6*+&;ir8o$WBGF>m$aUi0s>Hk&IHh zvmusFYR%@tb4Ve#zbF=zX-9w}PXX-zp?GBFQ6d^6l>>rZjxIA9q6Lfy=|z?;cn=DR zUa0ZpJ0}?)G2Rt8WP5wI%J*e;+4xnQLM97@#MX#WLs+;kB=HKCnmx;eq4MIgiQ}~$yXTm08JDRqOjUCE@TP&y%(!Lo9uV>yR4#?@++8aPvd;<(9{d8G zP6?KmLR_sfJu>^dmPw4bdcfwJcx`cLM8W|n6>OQV)Xska9p+;fMDF)u^oRdusFp9K ztQ|0Bk@yvVq@|jQCY$zQdy&eIxP3aq+6EiXgoBzY4_ligm(v8lM;6Ub_*;ycTj0mx?KLf%OB&Hj zEr;K?F#JNSWTYp}c}-KY{iPF1)oN+O+14f*JEqBD1DuKAnZ9_syN^EN)bblN8(l#1V~7#GIn zs@+$u3f|Y_ES(Zknmy(h8i`+1$L? zU9!2XbMc1Q>vhCBpm0x5*`A-vb(kawrSi8@~rLr6B8M{b)b|n52ADPaF$MQK| zR7Tb3m@z{I^@;O1v6)-f+OuVvJG}1vAsK7Amhax?tNv)k_w4D}GPz)?(ml`m`SVJ} z6LX7#_N#979)o}EG3g<`Vj!QLjS{i*-LKb4MM+1o_9w6{;(dj>TFDLV|MmNXM#|hT z_eusza|cB)t?+0r)Y4gMXLiln@|NF$Fgfy4(nAa5u(w_zz&`Fr&9Bi4-}Qb=g6{1F zb?&~h=fPd2JI87bZBTW9y8!(w6>_cmxmWI`5_QfaS@+uT_M%(E_L^wEng68AtB!tt zpLxh9*i4&#RGIJUL<&_-{FdWn%i8-|m>>V7E&wa1LU`*@YI5mvHLwM5KjV!~UW4?J z-r;nOu@rlSJ&7h)d)T{8RL(w87^U>5y8m{+3ObuM5&^0Q9=_5!-^V(_zSgs+fc#mP zbZ=nz)zQmii`wl+Kj0Ws$ETiLu>Fn?)6QP3eS4N=J4Mw#OZ`e;h9_~MDgWZ4R|}J~ z3+qm6r#G&y+=s~DVeZ(C$twe|bx3S+#rAAJMNFL*+kU8EWq36w7`}a8OG;uyTH^Mx z6}?hxmD-BmkMy^qx{LIDB&_dtO#kwFE@r}ee>_S>zPe+ul^R>^FTtVI=8)h5E~uwd zb;vt87PxwJBGvMZxj-R!rTwam>vf0m=9Ylsps%;Ke`DhU^rW6l~&+u1rUa*IhDbZ+d^y_RTPv0iI7@pZi6RqZAgu8WR> zokFCw;tH>uC$Bcu-;R$R^OH7AI6C2rm_GAN?D}p81r?JwseZTIJjV9w-jrMuGkSn; z<}4NRl=t8^tqt9GzK@Ljeu(PW{8L3+N-$R0su-AT&n(k(OlRf3TfR_xx~#P;yI)g2 zKSfT4%7KSsqjgMlVeXKa1`5tnOa?)7i-+xo?q3Q+rmnLr* zM?}Bl(hr>C3+A1@_OE^=+@j8j2Rs#QhySjPc(SZrl)c<0xn`|-^eVH8({YGX_5IY5 zlnEC|&LnI0D<26tlNwB zYyIta8M}?YcM^iT7unBNPkHsH#rK=yUuKkjkoMfNQ+nI=z9TlFPTkY-i+=lCX#EiF zVInLz8RSH3NZm12sZF3uOj36>tE-d3-X!?(A5QiV^AZfBX4f+Jb-{|FKN`81A@#~N z6=OAf&Pabu(A@SwJ?9Eu(2HzeO5XAvv$R_pQCisk z5$}BK^bKhLur;#H9xeC9ZK)MmE7v#QTtMv1x>4+eB*xba`6Nlr%}3u0Gw@HkKXUET z?clbuByxPzj*PBfUnEgi{Gpk?mcf3a`meQ_j@MdVB}xWi0sbX^Rws4e;viSYHFgt~ z7R1%3b=Ca6zOGz54im4nVPnsXX287enP@%;09=7y4l_NbTjv(;?+vB;T*P!R7^Qrq zXd8^u*lczTC{>EH&*~T-ufIWZ|6@AWUgt7V6-c?_Dm@Zb{pSbJKeD7NEVjRH&R_3Q zE3MdJ)z;G^*e9YtWgZ#kA4QvVl;6qHjXk!|SW@=EXbLg+@b&z8XHgz>CoXJ}w5n^oFrGZz)TJs!tM=m~%Diyo^P)pa@cv>xkR!Q7nz_V~o zY6zgalS+h=kN4$nHdpxhKTCX`aQ_b+4i#16&KPQzyJUv5T@#sLC z&@?=^?awzi^_rh$o<4zQeJ&w^u{d|zJ9R2fDf>L<9HC)_>seA^8)FTcLzXGa=Q0j{ z6CCT>tkBT=NzD%N3>2G>^8I~nS=ICWqrRD@YSZro_WpOT)`Mvg>E(xROec?0hD7G?o0mxdj`iPhfV`4#B7t~F#y#{5X~(RQxsgUfhr0H!pG zm}5IxQn58#VulUesC>;ETvcoo@vT%;t%v z8q=*M+JTJ1YRFcc*Z!h|^0rM*dD&5=0I}D2h$rSOuj4S6 ziHrRqd5_c_$jHQ1*Q{kp9;usiH2|!Ex^^8D&DIa^%4#c!D*hHk&6`kyg^sq#oM^ux zy&AsXv!uqaSEuF2(9*cno}|2q^2J9=r>oU(D>(O?1qB{JhdMnvYc?~`b`&o*SW~NM z5rr7sAHa;MXDYmujqtBy9mmts^*po-Ky7RJY=i#k8~!(wqmJc&(-dCcDxU7tw0M%U z^Q*h%dw@{ws_i^sWAFYxVnDQs-?yps$C!nsz%xb1ZUjc$5P1BSygGfh<@z)KfAEpJ zNxFUd>IM3b*5+;z{ISm`aeEPxMaq#ESa&oG276t!Df03J-Se9^hy%s4&I)J8|7OeU z{r!836FD*nSr|H*NFCcKL&G{_vHsq*>=ml%c(Zfn11};Go6d9f31x zNDk?22%jug^m6>~cz|)bN`Z?gN!Cqs*5WPMe>~9xr^Vun<4a9;Ujs=G2@tj|Muj0V zpHpj7m2VvC-$f+iA`a-PCRW|jzFX7gJ0UhZR6J$mjqYN95-IfAF1%+~5fQ;*#pfzc znyx>-eZWlTN%Xol*3Hn_a;w8h&Ds~}vC=4=9XlZ%=9(ovP7|YVf(@~&Sx82tgs8XG zSeRIXbAI{qrjanH(iiZF$S$lS&D4@_@|ww{u#6#ejk&!}xqz7!!k6Xz@K{ zDXFf>cp}{r{;t&srSZ`t_KLK7;6g_6YDks%LnBhH&Opz{$}>_R(y1eCmyQ5s;S+(V zsYXTm8sC95nA2KI8ppO%HKj3H#i#E&D1YaQF=1-5Xynv^lAT_kN1Hk4>;C+!rP@)5 zdnZfy@1V24(Oi@#^I-U;N7K&Ik(X(4dSeFj1IKMxp1rATRM5ymg0WYX3h#}l!$>3k z{v)N;foeI&kjBGDjGep^j7w70)ub$+OlnFc*)mTcFU1rVR_ANG?QB3Q>%Ja)<%&?) z%bz@;YaHS0d3)BV%$KaJ?p}2A6z7asvkUr^a&!mi;sK_HH3nVlQ(|;t+X4{<(1J@?lU$=1g-mzjkf` zopXP;FCpgD*S!CJIoAK%p|B->yrmeADpF8=dBZxnBKX@-nL?+~H{Mw0G*D}g=dCQI z$=g!4+%c?n=2wlgpOF4CS8zofu-ttf+-`Q9NEfj6x^{3S|D$J5q&i6b_?4+&=ZJk} z9MOt!a3h)p-FMh+9Ib!!G5%nll-N(POVfI$PgC41E5mbbazIgoCk{KGQ%l~leuXWz zPuuXejfYl!E{goKy>dkIozlM5Al;>?tv(qB6wn}bWWlkUPR=sh@?{-ms-gngCEbr-Uof@H< za8%i2PhM)V=A59Y&@Z*g4`H_wJj+>W?Fz>Fex8^cLjD{0a?{M&@Du^zw%dEb7dv|f zn&KQjW9{*A)eClqs%5{;Q4hF=L!5t(11RhFfLQ9QGh05Q9LH9k%_F~Xap?y z#~>U>C6Nt@hH;fLzIa(7%4@HnINg{k^r*eyjdCU`k3~*zH0N1Wa{Ud}Ylm79b6)lDUqXbaRP~aIJG+lr) zkS!hophnnY`&|OB<`&EhQp&bXT|-ZzSkCV%3`fJrW*Uie|(8)oKAabIbh4BT+ zWSruofKsPDvIiZ>F8b(FUsGIVt60_A5UQ6e5^-_Iv@vbxFx@k?+k(oDYv|TI1S_jb z^M4%X4%8kC89ApRf_@i6%B%#?V;lsJS$C6DMurAPK56EE1^1F%CSH{=3w5D(F$L4%&7Qdmf|7j&>b_FwE%qH z6vjj3e*!Q*av?`o;X`q-{S>GZ8N4tAq4FTXB$&uf);I+f@uv7RG?7_n5DJtVZYabe z0v5C#^A3C@go+`OM*5H3abd-3pCiaznwqc*j4j#9yyS$$JjSB(ICad_mYiT9x4lwE zs$Fuj*5iGX*=Ja6C_aP(al%5Zu@JKcaKx|Xg&&{;@vw9OW`xlaSKA;jw}W8u5PfN} z=6Tl6I(lWQdM9feg<{9)Cw&d`JtW{dg;9=0u%Ir|#gbu8M<{TfDVENulhQ@c^Tg*j zyIS*_w)vO0X~5^!65sfjorf`?OX8qb)kLLaN!)CD$Gn`thx172 zn+$aQXVg+{@ALe~wRnjawHiKQ_zpMtAqMR1Cj1xxwh;#W_^X>LY!1eD?4lP%(&2UxFxMEFJZt~6#JtqlibI9b$_NRLV2F*zC0uf_P}51RRUnX#(&@IbnZE8LFUo1wslFkovu zjH*XHeXYe!zSA=t$P)IDztf_>9*EA}bsNvpJ85b(eB|GuPGtw#{qnL3&Q)f(s;4yk z1_v`jA4n%5$P-dh> zx_aMEqkr6i=LyD&@-KVU_C0qWBy##}hMO*4L+@CjDWXnX(SNuoSSTH=O9x4=bRYgX za!C#%vY_+mc|~FUp?+{84W5RDt8Ng|jSyoQ<(UH>>FyPQGW8#S#1y22ms1bVzp*ki zx_H5;FSHNSaqi;f>n$nd1|ntP*y$#izTVnwlePN*%5CN*4NMb4$-iMoSt46y3g4A` z_+9sA^JnH?h1;c2`b*a^<9xGn|s_aqmUYw$#@bS}=``CM8@l2J}XkD0G} zg*>()beP`o;K@LKSMAsHm=Ao^k2|ySd+{B2Fn<_L&Ks9KQ^s{s6p)Rt1m^ZLhV^WwGwLu)08}~;W)_(zUs(4i{3iIYMB?>J|K$xXKFJXg z*f*IVXU2U3yW8|UB*=Cw^v_6x0yvV{GVOM+tE`wdrr z{;g4LtgTdR(78KzJ#0#KaEc@+S}j}8r_L&KQeF@UjPaqvgo2iBC?IXz@mjYd^0JTz&sCLi{v@Yb8s zXqQsrPrpD`q~`m^q>)Fh*Oof}4dj)w4%g}ITm04LA&$w|3tZYn$;B_`>Lce0#ai)wyTwITwJZtjO@an;wT>miLdjrF0Ej8Fl1O@oWx=_7@eTzI zeOt@N_z&a89^fv)%dR7kS7}P~s_E4th1%9IUUOOVDw5Fa^-%sgsp*JiDIpZUoR9n& z4s6?)OPJm19lCt!X?pEDQq_gIoV5|uP3%QUib%19OkaiuF}p=dt0;RZIP(e)Mc@*;m!!) zQ_7OUvpJFHITJTfvx!PNGq^#jiZm$J_gWzeg>6`%GXH2kN+E1&;> z&Tz*--fKxeQUrTaa+vJbl62+-q{XN9K!$@x|^ zjDL6iDS2^8pc8|BSJwSHvZ#)hCtMgow;gfp#a_IqWQL&uC51pc?ve-(PWEN&20SBD zUVlvM$lZ8o=KCR%u{g93=*L}pg@eCId~r<-I_j0X@C01T92u09Mm0JyUoq{am; z8N9ok-=Nn0FGU#^Lek6Hk3Z1|P2}pj-6Y(%RNSkz;k-H;2XS2g-5Hx(Lw>FNk4)2- zggM!W0mX>-3A6`0e~Y~KUG~*M-#pXPyNMz^WBq4wiAV?h{s$lqz{;oZh%i`Jj?$iE z^~+@7cxFD%Ix1BXS`eItY;@EZU!J=}P#+JPtRRy1$mU@LUzv|Z+*q3 zmM8@xh#ljNP9OCBrac)W;4E`lWRVaUhUcd7?>vjCZS@+p|DG|fl2>Qo5 zu)4cnIKY~yB}!c^{-4>K)tdnAAZGuS(=1vtj=RbI^kixW`R}}!qc83eSsCx{jEFLt zzx=r>A6n^U*G}JED9Q1gMfmZe&|_Z!&FnqmdSjV?_oc3t+)iaRTl?x>*Do;R@m;C+ z$XhBo3Ua1#{gnaZZ~Lpm;@5FjDP>-5v}Le+xsPdR)8vZX*oW@o&8VqrjmWw~vak4a z@fYN6#xwanlD!BiH8%r4UAN|6M>@7XB~=;@OC4rHc64~+O(fcTvYMEb=Q0Iq^uZNU z{+`_H=~CF_%4jO)2)oz{x?EPaLN-NpeC|Hy65B>}x~8!kf?Fb7AkV84p4fk;;g^+k zdIdh|?R>XwTEmjGv{CJ$+K$D@`&PxawVxWb+@`dvgjMmrmhIVd(8{#^QwXAtO%xNN zwa92^^C?CmmNuY`4l#P+3X$%$-I~NetTL{cl+;(Igeljd(M1N&m$xyt;qwl(#F(x2 zR{Jw+Iu^^Ss~_jmnxkZHMgF*_DgWAZ>TPWy`HAms)~PW)J=fiA8B3QXJ>+7Do+W=2 zW=^qxi8New_+~i|Lo@JQrE6WMWox(m=<%vhGdPK5RTZ*av zfmMuXD3#z}UqSH7L|8U;0@S>-O4l^_yTY-aE4my#eOn+*gFYsaO*gLic@J}fOp}tT zsEiGyrzx2Sn5gIQ9Xv~O@4wmTsA~DzDg+?Wva2v;Dqcx! zxmULwK{f`ZerTXKh7sykhLF2-)8@4sqV? z|G4yh0Kht;i^5;r!NQAIC49%m3UcpGDfu`z7Sm=ufCMtTa8y!_YpI0`B7;>aDyX%? zUM6AzHAu@yg!goVOUjVzwn1^J)iTxMDlf}~CdoxfLYxnkl|LrTa&>=QJXW?=0C1kF znBdG6>SF7aPh_cK|HQhatV?na3kvJNIOl+hdRK$D03wYEHj%K*0{FQrY%%ME;RYnbRZG^iHt>y^ z&Z(bkmIm`#h3`-4oStpdlX~~YFQ*b=lO7_IKclOX(NH6aAQ9S_EdIX3&Mh45|h6DAZBN66~E32Lzeu}zDi3TS?QeAYYNiqa| zLi@15vcKW6Kr_F!8C6iGS~ne^v;R&_wkf&Hr#p6ibn6)+_L4&_EnStsaVPjHjpZWi z5NhlwNI77o6r=zEPM6s=ZhVc0S0Uq8_u8EgYtz9% zY04eA4}~qc_CBjF5P(kH3>{L6MAogFW~>ndE~UM+S>>BpI$lK@2tA|TL`9DoQ32MARi^s?&BNk=Kvd zU(nmkR7jTzyZ>?ehj%UUMwkaRu_#e7Aj&FnH5uy|cZB(-vER2gXEtU98kWK`JMcHw z7&JR~T2|%>sDUbxmH*}~f!LUG3c(-LC9qMn5!eV{>=0&>jQb4NcO3%x(%D!xjisir z3O9c{CUKSnQDp`+J<@;Y<~8E*Zl3?Zv<-mG=0~lEt)6MJQq>GMZWFgkJFb#c5g1HR z;Ev;U+lIV@gdgHe&m^M&*)q#^tA<|vj#w67`Atw!DUd)CLSy;6mgu(~_x5?nH78;yc%R8=7jaffReY5+!(z}YK)}LbII!1T1y^ZZ}UC*7;_-T+)1&I1F?(| zt&v#Er7SvF^DQ4n3}NT(E}MusKl)hnRYLAXW|l$b*k#*JuE3)yoJ1EyT%`5yc~W>qZPgTaNCs$^zgkxr50ORT|5vCt&tsh<#_eUgy=4VeS_qw?PJqeuIkmMaOAeU1bxz%0YxD}5+G}e^&omrH z+@Gh2Z{#+2Fz;}$))Z9qP-`c)a>I3sj)ikTxe_`E&9O9)t}EM+&PEQgzaL;L)PZfA zZtCTNa&3C`XmvZMyZ1P#D{-q}vN|973=MWTAOlNP?Y%`sR=F9j`min?SikL^2@!sk zdzsH~mUAdx&CmojH~h|f!m(P=M(9uULGI?mU0GqP8E;Op)g}@0O{01>8H$BBWs`^Y zPvlO1HYo|m?vWqIgY8vi*fCv(S{%>^$u70D@gt9`wCZ$zg-jF+z?h%r#iv9mj$E&Bmpf}cR}WiD_zr6xjz$nbhaL6ci(T8 zA-CM#RA=_OyV>4VySJJIK-Je29og{SGYTXn+3b+nPYF+(cFz{GA=o~XN<5j z(oITS&E;(C6!K^7z}F@l2Fk&F(NLv&uHOAkcKP%+0XGO<2~=$1x}6X!8zSV1a{4FM4j9U9u?w825DuDP3BRveP#fOr&Z3CY9j z`EdZfPiPWAuik958ab$T=*S1evKr~%eItw+#u-)qZ16<%umUDg_2u}j46O88e>-)e zxWL9DMIqf^gN48=*%kA-&ERtw6Mnj@Nu&2I^a-f}oe=xG*-FKd6l!Aw0&T$ju}r1s zNNBk>aT7t&E}slAW@am26ZBbeYx9yrE+nPUgBKaA9X9%*edoQ?1vG1x{dzV#@$Akw zl3GrooVsZ=_bwec4Ha7%-1TmI{Qz87Q6{rSaAWS>p!eHsn52IMQ~}svIw`VR|I7dTo2DFMy!zT#6m>M||nR!ws8 z?GcJ*#Kl_8c$Q01p4Odi6C#w^}w8kPxAuu@-H`l?F`Qk zWq2M-mc9mAKN0I-H$CQx@h#$wLGVYgJtH;w`bnsINxEFBtBZNlqta_nY1Afn^ut3I z@4{;;Vkw-@9uI->y|fS0Rf;oT9# z9IdRP!BM8wYh$Co6`4A&$+Z=c=evEIHQoNce}67QN$3~bqj|`$=d#r4=C9xf-hSZo z&s3%k7?8#=-$W6O%)92d3aS*=DF!(kQ8H}#Y^%mqlmm_;HDr0~E1|g{2^|Agn;w%I z;2ElO=;;;nOK!RIy`1JAQxJjV+gM@s)lr!9%gB|wlU?Re_XuSc9*+iwT_Uv9wc8j_P_!P-3Zk)v1iwI^pn)UMBv{zxIKaZG129(Bz&7Zs{sOq}7tfZZnDk#Fs# z&#H`J*SLl{0)A}GrHh@09H%dF>XGHO6(8e?^>?OyOneDGm1XvzMRKgCxGtWTY;1OO z?}j$&8X>`yLnv``4GprKz%m*2+4=>5yGR>?!Ka7;?V%9{XBN0K%0un+v=ua+@I;EqcXB$!= z;eESdOufZ0r5E+B86b9o0YWQi*j-+@e>U_Bb()4%%8sSCNIT4S*Q%BxhThOAR=NA1 zyWzYWy*%92{ZZx%lb74QjnV!bNApGY5{DnBcEvtxQ!|6mM2V&hA%UDF6;MEdR7kTE z{MEcO=#jlta^hQs&ur<4otgx&m@E}_L8;zDtoBRkp+5id@S@V?*Vm+j^V z+V&Oms&j4UJ~~=EXj1MFM%LFdjLs!ImWel|v}-)~0E?PC0)lHQ3m)kmE0g~i5O*p} zPSMc1=U`iK<(Q@H*RFwU3KwDa0=7(M1IA9~oJ3TOS|i;XV$2}u0hhhLnH~IxpRWVl z`yS^uhYVuj?p4_eKur~KW|(uWj+n9uFT*+T<(Y^yYpKe%yKyKA%^$s%9H2au*I^Nv zb>U1QzuLcD?Iv1PM|5ip- ze97=rO`sg{keb5`1(}V7srLgqz@?I2+Vclp;_f!Bu~t%bXy$s1S8f zCf~U~WRASoc`<_Pb0+24fexZ=*InE}$gbG2BiRCWJuG*z`Y-~?DN}m;AI;e2(R|H` zEpOv9i~D5UJRM|6k~t!_6Ej>{Y1oN>>QP0i)c3 z0)mCh{(v0)sixnC&r_5nNXJzTDAH&egGf>|7%^~R^(n+&(_amzUfm9WcwbTb_&Rgs zt7t}GG@g<%S|EIfj$HuCB{3nELYsl`I7j+QC`fz^;i<^xp5!g}VFxj3eD~;@<9O)5a2N|bJZXsudr;qoe_E{=esTj#JWOT^>Dim_3ixOsR?8N9wGEH6H zVBg{VoJq#s3>dQ|Q!GVBY*F9$ge|5t@nK8KwO~|O>h9b!ZR9f3uH54~1?5OM_=Xw` zvj-oe0Iay#iDax#w!JtTA{~_g4)7Vq+j!zYIi}=>O#Jo6VAoy^lMt`hy>fDM05~16 zQ4O$*1;BZL>Q&$LW(@;cs1J@P;&9(i%i9^t-)F~45|9s^0X#o)fqekA zl+UNH)6w*0^i7K432Bf#7KCgMcjglCtRQb}YNQ|zD^xtt2z2Gb{e(8_{f~37D#DSY!VGU{9DND188IT%E3;2^xP3 zu2R#G13=Q~&>IdQSrTX^%SemH5;w<3NrG5!<-+_<7^OIV4~Tm69Z)xT)-JaO&a5fv zJrs}(RH1+jm`cXnP+l~&K?CZ{R8f7YKX#n>%anTdAwsb%%aX+uZdo2sQ4>m{j3o;K z>0tW>EII>3;VDjih4~4RgL@SN0{nEiKDBaGp#(Sj!%2lkLqqqK{Q z-^7;=paZR37FPG)5Qy3bZBNr7CJc}kmOYcKWCuEaoeHwr)C^Wv;OR)f-pbdHx(B#nS|F69O10HwLg%D%E9SOT5FQKLJZY^MaP#KtlY z@NUc721SJ?R2a+#o`^&|~*`H%7Xw0x}EJyZ;WPuB$1wUgzgqtnyNAA_*Amp!=!! ztjLxytv+k=UK+n6NHXGs)P*335LDR@F1w=y)~xP^$T z&gvGRt}-v8Ra`8nN%M2qEH*933D5$7xd`2AazEzS%L@S2EPKf-KqE55NC?_R z$H@R8W&Y5ks`8lwV4VZHw_ZBSGjKh<_yN9J^dUY&k$&vAwZG<5G9X?2h z**eZnn2W<{si}CD0{@n&6R$;n#3?Ing4AipP373mFG1dPNCgryii-^7L4yD^rQ<52 zk@7T_I|KlA=0d{AVI?$P3pXWx2|F5%o)r#21iV>+hs9jrd~aZ40jio0{U3_V^hATt zg#!cItH6nY%Text-2jL=m%CeZiF8~J5OO!k(3P%~Ogz*w=WF%` zFHK6dVuEV6L8e&nF8=@IP7w;IG;z(D`43%mV$D70M}pJnqHTeA4G0xQ5oqL&SOCKP zJ+g(C-!fF9>Ihf{s7ZcMo!t~C=((KyZDPnqh=5nE9bOBR3Zik0Bbj}EJeYc^?d>j~-J*0abDBB*2`4W0z3ZzBS{1Fa5cN*fu zhX(S&5UvP|<+-~73O5lV#WazUdcC|(e$(dDImHi>utIL>F7nYsT=+>LG>8Egk+g?4 z8Ic|XbaDrc3%S+_Q9dri%7$d`Y)sKf@FK>5dm75?NnrPa>Y@;R{CY{|_yB}?5p!pz z72Aw1K(#Pn&OFhcXZZ4pbPx@Gw&I2Z8Kgwf*~Nw5s-<5z7jJP|$wk!XP*-u10dr@J zq-P*7RD*tiWj|kA<7tG#0cbiO(ZCm_KVY#u+g2irR~;DZfN+tJK<<4e9ofT3iT^M@Cg4e&pQ*dcGq)W){yTPQ`vG~pnZlg? zcOLuZ5R^r4IMP<2Y7J65Ppod!G$yqhGa%>&D4hbRW_F(CPMzLFXg@==V5MZ#(eo6* zO)TQw_|VAC41#<`d;*KAWpwt7YGOtHEl+IScrbenb(MBM1ON>Iz{a|uGk`5C|!Dj&%_t752k_MC=25x=8(wPg0 z53#X1rz^TfyZHl_g%hHRq9KlDGRx!GZ`vMzR1p9QwLb6X4~iv<28*@R_;9Noth)mV zPUl~X1&zCtp%4b_`^pH}e&Q-atcZ{FwH9Bc0KSf*App!zFTe&_LP&lx&q0ggMeoT% z$fw732ADf!O9NtjPStJYy)%ifmfIq!uZ_-UG0U=gFeMX;TPqUbi!u zde)Y>&l5nW)IvX^bc>s>3P$EgCs*m1*g5P59~0jo6>0c7AyOjth7?RmVvU3mSCY72 zDsgX4=sXIiGsHxovdH6pfA9WYfJl}_Ov(@J6~J6|QDZxl8OU_URVGi@(B)X?+Zn~d z;~!=YUk_Z^La$=c&v-A_*(mUPkOpU#ehTEwgP!27J7DKbIUF0#_(&w=d?O@=3q4Ij zEveYQqG4W;G0%i(!!^_k@LGWv<&byB^=QPxL@ z5VJ@^i6G=|%8_h7^t3=MmAssRM)-3fdnp|d@|s0qO4(uN%;gD_eecSPN55P3l9Q10 z<{QW#yqqXxAP=mM1!<7h^~sQ9n}~2a1icF?whnULL z^FRUFjebGdzB{IXS;Z`K-cDo1d+1_cQc)| zy2S@Fn|D0eJ6wcOUv}~c`ruilwmXDQ60G09n38blL9g;eVgu2Me1A%71=pE_#oazY^Yq z=<;(Sk#CKTv2py@mvzh&g0CpuaL28g6wET9*JF*;x@WHHcKrP^^UV3=3q*Q>`KRWq zx2_J=vFw{5FzI7EN;onYR^7ha{k~}#6oF>!-!)n(f8oKip~T<}V*hKy=MgE}h_|Bj z$Hx@Tvc>!BS{9+E!)uL_yn=fEwb3(R@be$KpZ6WRd;3*j;XM*C;hsg(t%Iru<>GT2 zvf1yZu1we^#FqPb>%?42^;4y5Of`OnwRp%qo+warr$^>Hd!D+4_TQ^QFWD_;b&D8W z9Orrd!e*oWRX6CdxpJFzLIUjQh&CL0jQ_HD2kC0;#_1We$=aIum znzKSVB|6SAr$kATG)f7HqIC4z_xB&{v3u{w-uHFAuIpJ-ux!Gk8v-SMV2~OvXOlO! zq#TcJ_v)WPr+&?`sVKNKrShO)`$o1oiJlT#=4A-uuN;o4-nfcsMX??gFa{#gw2rt& zY@YPpQ1qDSFA@qQrwFJ?Lp5|LwPH=1#82j%QZuE$vqlb!^tG;AmviO|Mk=TsIgtMI z&^}R*@7Tc)Qc(}bZEKJpJ3rptDlya3yy&gOs!8pcU1RL_AhOB#woPt1L@`s=#JqZ! zzKUr-F!@;RWb6C%i0qYmbzD?wpiQMqx@C*_)SS<{f*-_ZOuvNVlbA(Mj|+7kQtdy8 z8x+EWiim!%hDr=iM<_~;ihlcW8Dc~%#KmM_AU7oFHlAV8PK-d7(~Sxxd*8?{C@u z+JrnCdtyXP_P>)#iifGb{l`eqo2`u9>W3k+)T5R>lIBnS4zXx>$OC zy@&ALq$cPxLz=hf;-Tr0KW%X(pGcoIexA8%@j*c-S#d~Wd}f(6^-fT^$y)p5FR{IO zE~Dl*V^Q8AZ+DU#-}X?sALPe6X$|E{dT}-vz=T`O$G7NS{E7+P#p@ko*R`aT z)#E`*)**p5r_AaQC+u_Hgy6Mi+J)50ODBvOlzf&`N5SCGtmuB-J>L+eh-Dquzu-z8 zWbZb8(k-NMj%ss$Y(37^=@s~?rBQBZ=V^sQb-D93BnI!`l)_W&C?)Jet|I^hU&FeX zpw6ov{bzsLZDsmcowws~!&4jANzbx)2}Z^rcUk}437uJLIqp)kXRLizk&Q?HH-k8v zMM<92j!ykxC7nE5HF2)9rD%T}O-TS(@W&Vms`u!sFiod9;0CVZd_LL?LVzD6wb{tXpe3VjQpkjT@0GMbR4jzy#j;gwKzh%kz zf-2a@Q`4ks9e<6-1H}?R zjbuQM;n&Vn{npoS_6@$UnOMQ8-fSiqHbh^lDeei@N!RCiYi6Jbp>AX^b0K9xZ=%)@ zP=`0k*XJ!DWf*nOwo`h|IplUYMHGqC};>w0m!Z{~JFs>-`Y47-q(OfPK3+fmti zk0UEYOOlt)O70pf=Wn4|*P%jT>TtccQ-|MQz+0)?UMw%G_lAW&a*&c`g*3k6;Fz?MRz0OhV%=*)dc3z`_&&Q6ulbQ{( z@fh=HO>J`tgle^zt;Tgj9;4+4(!S!(;_C}Y!QuP)m(|>tvJBZ2!6u90#eX1;UZ7LF z*t}!Vg%`YLlB-X^vE7`NB&V-y>_qQOb+`8gqsNLJHQyPJ*%03&&X9%-0)UfAxp^UU zFt6;-j=euSX%UE34W+0#$FnItXg?7)pC=L^!oYH$J0A#(A`aQuId538c!;Rp8%6nzGVb{m69=7!L-aI+i*y;4_+4i|%^ul`9QD}TsL0h5SA9A8XW@=G-%=>HQ z5Yp!=f>@O3utKfjS(zqgj6zE$?3K&$_iSF=d#4|{E^uV~g^pS8S01zfrNErC0wIk(D^A46`?71v z_vfw^%ZIXBQosF%)W52|9n>2m|DC~e>^-ossN&LuKce zSge)~_>eaUl4{TYf!z}~BR5a5JOe)tlFa&V(X?GbG4l6)8E|%}@$vS}+@$r~t}FDj z9a+FnU>#PvHjyev#DU;cr7en+B0$M=P>KOOvV#XW8TDTov|3;|58%j%hZ?829gzSl zK&C4x|H!Tws3XG=iKUbJ9hQcb_Kt%Mz|6sidV%$@0XSm@W-gmWVq_&l6_5WJ8eYuy zs^m!;gT(gnS@~rvwI2VK1F_8?{`Y!Vs$*D+WTF^C5hGB9iMC<{TQLmq{2cJK=N;f5 zDi|-H5NFY=z`37;j{~?p4!|oS{8q8Y{QW?O-NXJ%P#HTug^qq=8@Fq}gsDN!;mB_b zb0-ML&&=%>%&=5LtF{b1tEHXbUhvTJ!bSPp_>qY%L1uaHze;be~5Y1CE$92HwB=G5e>pl?{y3$->9e6s? zF6kY}tRusBT{Frq>leokJ%B_L3kv;gK!mIajGB8Vk5q%@Q?48ZnBs~9A3m|`EG@?d zkgnR2V$a-N!q6TA9J2p*!_qR?WTnkn#oESwh#{p27g`qdA)2w~2)}+>>qS zS-*dCHv37p;H`t)QpFBd55&VbU6oC_RSis1B-bgDp|Rx8OVBTW$kHs3I*TfCKpt0g z0AYX)2DVA*_bzZT_B!kQRd1aHXZ}pPr`2NHfB9b3-qTGpiWm_njGRR5%9$Ubi1{8f09-aemu|i$?=^P3eG)J7|_)TL0qf@uV$#IL7mw zr>%;TZFV(9jtoMCz&`)Xx=eud^YipiK|pRUokYGaojjlYyPKFY88a8d{aj@cp3{99 zY9tWC9B4Jd`y~Wm_U5@*5?SKrTbt6FJ0C9 zugnqDH=3?m)(fBR?(^b(Fj)Z2d&ghW$B9|e7ZMc#d7q~X#t0x10Mz%KhXD|#0Tr1P zNlwEKNrodSD(x<=OZX>kcY0@q+HYiE%bhF0V)d7xM>?i)ViV^+yM*|Yxo4)&m67=m z07A@@;&dRU4}5Xt?xF%Yg7AXF0HXS@6&QQ`jmUEkB%GsVM@T|ETBy<;z^h)qqAy&= zocW*(&Y;czFxErRfj@{r=F@p~dBnc{sI97}tK+(PNJ~d^y;8cYCTN}d+lf!o&2J)O z>a&I~B-szbc40Qmi**2z#$1hWh8C|sdV0~T16lT4DzAVs)8Hfa;>BWc5VtuQB*&lx zjpT?}&x#71rYDnm$Yd_@fRz_-RyY7{EKq{*?C|-NA%S}ZE$*DcgTd)yk){Tspd&?ER8ETw>nKhih|J0~MMBz)VlU6uIcm2;jjGf)T_2$~`DVu(=YDi2}J+}Zm}!T-oe z$W5SjG8q41X!i9$f${Xc{I?likDlh8MpyPy>fB}~^;44lH5Vu@;tp=xr(k2jJZ=Dw zuoch(6s*Jkyzqukk|Ii{lsq0MMT2*Lb|4(A z#8}9^z0kuX^VoTF8w1j`0BQ5#clXJfE_rY)N162ZQ6{Cf8C73yF&K3S({ZBpy2wD+ zIZu{wADKhodVg2|Er+YkPxB-P-hKiQ)_Hs8=A%@kj*WN87eZbqW}II7shb{RZ}Z%J zJOVVsZLR~7zy&X&`y<>Z|K4fEmL-gzsZgE&B_93A*C5w~B;%6}yZ-xLc$ z-VHo*VpDXzLwQpoER1gV`l5}myTyq++b+CN4&F*VwA{&zFn$!t*Wi7^A5}cy7ac)A zIKvW*lGYgS=*v!_@tnqTAvriV+yQpr@_8Amsk{a;-k8uLa}hSs{Qv~VYF(flVFN!c zLHGS+yoPkwixrRE9lufv1hr5K?Ea_k^07%hZ)gA&a!0EV=-qM^Kiy{ zpz!HCp4E~8-l9*6E1MBcgr5&SRa+=#Tc;l(Y&}*CSluTFFTa84MDAJuxS7$n8DT;k zBb9LWyNeZw$z?T`>1!5Q z844tQC|C$rD_Rx60u^Vt{E>JYZ;WXD_g#MM(WJMTNpFjs z^6vFaW-8^$yNj(Xnl|}x{^x+WBd>`<=Q#egC@m!3;wmT)RVWPY(8TaSpxck?r&07ifbc`JR?_}=Y^L?kguG(<3&HmjS>N|FZCgMRP>O)g-2Z&(^&k*(lNT9UAGT6ul)AnC zMuJJXeT#C~dyQ)D206Q)r8lm8`PT1~c0X0zKxHaqG9*=iOkOy?*04-#2s@vDI6iEf zGx*rdfM`NdcV+6_5ZMx^;8_+(6uLjHJ)p zI=I0hdp%CtD{{EyTb4*TkKvZ-`+%29KX?mS-btj_8)%)gR}K1mK=u)Fs0~3A=duhEQ(m+{dg1KUnjl07g?5sQf*wlLpLo}T)K?R9JoH9*CBGh=$OSJT=ocCuzAJqv2;2t{ z!te_^Xg;797MO{!!7xDSQf3Q2r8!CsWGj#F_5gRqgBh8Gpr49Go-AvF7YR?shn7sg zR?}89wS;$;>gI1}zKDG_HUdL?BZ1+3ijo|ImHbMIa^{5ij0iAmM534nj6ZiRMDGQ2 zM0b|--Nk}bzBg?$f*YFBjD8pa2EuyjRabHCJXdf$`*ZLU;(CSy5KTM8n2yE;FE7u@ zl-t#fHV+o6@0L|5mF2{oSo@^+`hmiTpk{*_2&l-YYDfp4`hDYs$GihM<>ZHEJQ^8c zMLxFALTgZ#tGS+NM%}#*?lyVPw-AZjEnUFz9i4$saC@+U0*Ai%E~i?*xDgjGi*~L; z)8gKP^^=Cpo8P=KHrXv^%3)=7&7Jr<9?AG#Ht><5(mvaTN0PW-qvASu_K_-b3CE|p zMYPkKh3iZo3-NYnGn&DEgI)0<)(*pMlH0V?@wdOLwINhX={VfTodqz8AMsdK=d_xt zmx0kDX}SpV#Q0sdk6Oe`p#Oz+PeO#+Q^QC6R%ERzCeV7}!~U^rSTCzetQ)_WHKGLi zTaoM5xa_+E!wB0_SMtY$jDpv<0704JF4z-ygiNY!sF9v%dbleO65FwF@>A3jqG+r; zraHtJ(wg=Ry%ZQ-+5f`l6Y+?sBK>U9JBrBNSnA6XC}(-IH{{~}Iq!F^p11IuqAAp-pQ0AGFcdQp~7 z=kt6lzdBRr2wr)rD%UJ+iiR z1Itso&jSPp9J`7M)0Jrv2D-0dm6!^_Q?yZ&sgR};KYl6cCFW~SAXJfHnPMl2qqDN8 zh$v)cd)@N>Vz6G89UHVS!bvb!E)p_`j*~dTFCf`mwNHILsVQ7N6AN`JGlG5SM?; zWb0W-BUDFM!NHxj$$Ve`?4(u~F*L_#;F{+`pinHol}MoEU`oh!07Rn)$QO&@lEwlB zqR0+`dq8QN?ts2eRKYOHRyR+oI7ER<3QQUnEM zJ7@!^VLfAw!PVx4VwFrv{6-B>r|jiNt!P*STQlDVEl0JZs4d508m@m>v@+DVv3k}( zGR{rfZx@J2=Ddt|06;p2WPl(hq{NNRrLKXJ0^4O7-ak=tp>3CX7R^#42rtkWp2}DN z6+y?6W#`BcFh_WGW8Iy{035h=u&z319x$CaVGC%cU)oAuAPp^JgeDvJcIGFHqUGG4 zG?=~Abwy5#%eivbo_YNsBK_7Er-AS3@+mkeRX?9Yw}*Sa99z2jcve zg3Yun!wJOH1u&oUC9y4aZv?`trLN(|jF`|lxMC&#ePd!g+_^UKb~-W(z)N6(Lx|iv z0#*|BzBUo){-GCxRwc*t$IN&EFXWXa?_i^DM4kWbQ~l(Y>F>S{jAJGG8e@I%8z9>N zKfrS=3dnnCLgOR}-MBPsR}gJ8S;kAd9X-2VjKOq>2^7A3gsU8og=D431ZGI@U?E2r zph9WF9>P)Bv)l&!^Fd|gKQSw!U?R8rpL_hEG`noXiO+g4S^Nb>Ld}VG(U=1F4@vn# zvSIxbnLjv_VFW@>gJ@&nR%g-emSCA@eGu)S&K!>@oXC}fVV#G&!`TS(Y*;SswDW{8 zE2{#Ky%UG$pM9h(TMIE~Qv`P2fyVLYz=G0tc$hn#(76vn1P*IMb@FEsL}_`@r0FoC zFczON6=Im+`Ds@0!d}$^={s*{+;3D;b*QGK;Y77|kI;#%XZWm%SLVKaMY{g$vqcXN z7j%;}Vs?E@QOP>P3e!ZIISB~6+DqY&Vv8`m#H8=8>DXM29|e?BI{ewAuie5$GLVUvX}D&&Uk@N!_2 zj0mzwl8|iOA0^kQC1?Jnk?E>o=bY)D2P9ic^$5w zGHjfn5M=XSOiSg?iJe&J6%nTR?GCVHAC_BTkIBQKTzOsKH5Net5a<5KeP~1HGS>+b zc|;#Im=D~49=~AftIKn12yw16^)HU!*6?Lcv|y@uyJ=%-x9gHtbYH5A`&4muuY#fO z`MzNN;lZpCJ<09zA6K7|3;Nl-u@DmSP-@IAQ(ux!#}66n)OI1N%=6rcf+9Mfre4H(5DHSsx^j zKr~4_nV*v`^fLqP59@Z$KG_fT1g^j>tV9CrPysYy8$4QT1u-gem~fgP-%wv-BI-7?~0(- zgsI=qQ9$6a1CWUUmyrevXok|$3vARtnV7wUyP(YfERQ5rSMR2aJ@jv6`PV!dGEWXP z%c!%h&2ha?H30?SSxb%WRE3s71y71vUx8Er(;j;G6a#X#=(DoO2##GET9V5A$jtO+ z2I#19nV4DW)x1Lg!XNbonjxT%Q(E<|H;T8$m_IC(-MYj-{SQU`62v857)j7P(fY_6{^aLlOhJQBbI7knX0of;Me%W+iyFZgX3Gcs#j`kY%+i~mCEPpyx#be>F@Q4GrE7vOr%HD+6Eg(mK@+@ z(w_z5?P{6+Vn`sDe-Lxx=SpSPWKfw={i>x)++f_p&c^@8yagJy%#e{ zbja28FK(Grv^QSKt44}dN8woQSPl@H5rkR`5(emaPQ>-%@Bk}y+3+}NYju2hkg1|) z@6geiA(Io0H3+14Oo&-ZnM8@b2`$5jXcaipC{-2KSgPdfGkEIeU<#rQ__$2t*dS@j@3w| z?QnW5_N!TCBJ*gXm7AU-21}Cn!~p%)6JxH&t2MhOwv1qrs`IKfM$`I)0PrbKpp0V$eAoW1bv-mn4z*;kw2WPMdbcq@#PPh9MV|KlUko`K4b2aa4VbH~#T zhxCl2IbWN`90=G4f;Fv8MZBHA8AA+&>(k~*O$~()5Yb^8KAt?qT~}%6s?A%{n`Z{m zP^vsfDTM=M(tt7tU=a<<-9a)84&XP?YKl~22aJ`eeH3PpdChJK;xicEEfaDRxbj@+&Bko$$$Xw3InEbw)$NSGK2x| z0x(AWGCw03#pnFiCZwuIJ+^x@RR%}+#RD*XARrPX#|8qcU#k%Y*|mqtbOkQklyt3* zK~2fa_T$Qq_h*6O3yTgiZ8gG?PexQ2pf^bZn-%fwYJ<2b&kP6znz&*7X{5-~rFMca?sbj2;`f_zu zzm(7c0-b>Ka#WKnn=U+99bW#Lq^Cdko(}sY=8OIqnJc1snC{;>xGqdq<;?qZ=y8lx ziT9d}XZGUEFJ7lKQ7RM{}NK zQ-&g=TaX4gv>yoQM_t-j`hF2OKiF(U&f=e7YOiCQ!sr2OLq=VhYb7o8sFNO~_JG_UhLR*T_1AFK7)YO#zP*k!5S`Cl8hquG?ebbq zKqSIw!Q;Ims;w3>9V4HJlgtQjcV1fBnNP7kGZZ z)o9FKtMI4TamU!1yjNQ~T26)-M$d`oz~kM(cU!eiLsPi4pl2czKH#*OYG&;B z2{TuteQd{)yj1s9#QC}~Poy4o4Slho%0UN@R9oW7oV{frm=B0b@$qe3cjd0?#{#-|MpcogvBo zYMH&$coV0+u%U-pY&>wQ+fvNo+(aV}ds^o!`QP2dP#CYZs7QQl`>;xLlbLi@}ZC-dZ&)a zF(t3?=|_oNTHth^h$BwkJS+3Tz*0EB^za54jv&Q}=YPIKxtFu5_ z)i`aPLHk?AZ~hHjJ+#dDU~;WBcKF>_*|}t`dz;>2H z=d?=!xw-e>BIC8X-LII4&LN?LX#Ra&_Fx5p$k18zAMep#0?nX@G?5KzBk74tM%8+= zb&^m13(BSC-G5c8S1$G^s_W$Go__B$hPf$MnRA-8uT_dmrKi?-nQ{gWEBHjHGAD(25%Do(O{;HB%Im$vwV z)>xQ2waa#|?ajZ>-RA3$Gyg?ZJ`T5SFDvS4{W(PlT9nE(>A<;}N@e7cJ1m1 z9U5bUx(7IewC!7{{~5+#l2^=U`1Qgi3!xIt$%TIvUzF#h|C_05%PB7tOVcFcsvv{8 zx4vF=wUoeHipn0t`YB-9xhx9!1Lj8X4Jq~0_p$_z_2sjAD3cm4^~U+DdO4FiE?3G0 zWc#9(UQp2VXeD6M*20r3;b)bBsazj5W%g|NfCj13{dc|87xY0>5IIL>^-4p3Fu#;( z2-LMccy)LrIK1dk9eDBg!>`>YJ0Hv#s=Q>8S0|PXa>f&XN{>Y%Z#v(OM6`r%2)7&q z|AX($HI9{OfhshlNU=ouV=UqQ#f-_9R{2OF@452%_TlMD>#$>|+?66qxK0Z%m=;C7 z3Z?X5b#crmQlM0Rg^j%%v#oAZg{sbmJK{jc8v)}bV$q8aQhx0n$-nvKgT=h>E6QZk z%~eAXL&!o2Ss~^RYTlY(G??*3y3ziCm9foyWh0J>viDI3_k z>c$Osls@bqk%%7N-C$lE7M|3&v^9Rys@!mIx{e~;(5d%r+VSjVAkP+`j_DMmNWk!} z9seUG@TxXH2o78m_E0`HBH@#Gif*4HS>5zF5B1A#zz97E9V&5q-C>p5_byT{&gIoR zycWqL&RRl0n8VGc%_=eMd1=b>(dGT&t?LcnV&w$AR%4{Ubaj%@Ii!?$riaU^qYvEl z?tu~b?Su3}$~v(=N9&u%R<4GqZoS}fEbsebTZ5ksW`?@2Gs%W;|HMf8w?uzajXYob z{S>!u;5fQrsX=;OseK^djv2~gvY)#tb4Y-P)~R!YfL zF^56fiX5Fh;!1SZtes`f>eogyZRbsE4QpekP z*{~GJri<>9-qGI$%<5JK>!sRWdGauUru(g!USSVG5_573VK3&}x9)FmV`N2M!yXvgT! z3>V$f=ViYw3l=_8HLsJAbr4zKkJ?phteS7rO+6rfMJ z)1_v}S!&*ayeltSj6ys{pTsEeUC0bFSzUJvgN+Jq^S{SEB3oOpXGs~`JNnKAS$E-z zhdKKf5E+-fRzTk%Iw3iL%R_^rG(i7v`)U5OJ1FUGB#*g95CZI0t_;zoLGNlMwYimR ztOs=~3nL47R{UmTM~jPFnvS-u@ErTcD4;0@3t=|E@pMZ-6r3%7L+22WhQj&%IzSR3 z?xM(Y5uthdn(xMri?vPZG5KI2J9v4%b>0X`~gCw&=X3ES8;SiKl@P#%M0{qxiaicB>H83et`m2ncR2g&Q7kR@ zqwsL0ov^lv$<7bSIoPp@__Np{`DH9XCz(@`Oa_UXIb=}Ap7QwslqChJ5Cd5cco7mU zRs3pd{`SqvVo9cBYo%0}Fd(u07q^{OPp{x?q4IO)2>S3nJJS%kDm(^-7z70Jro34d zA0PziwH4>Dz>yVxQ0pdaB0OPC;Oy&}M@=_mXBz`r)DJ=u4B(3lB z%7!tp2NLfCJX78wLv0UQByPApBT@$pgBso;_sCB|1r>9io0aSC(@&WSHsq%p+kM0w zJTJy;a+Y{ao*%5`=a@u%1Ny^i9lQA_?^6M{SeZxbI;G;?$HTk;85TS?fRw4=BQ;KZ zaGtJ$(5)cp4?!Z+qWDh2lE%%dzDZ@U1oR{fSN91Gn9?(a6RQ*qy;xLXnj04gP|NEu z78*1_JYhgPkzd(fFTIJO9o{Ylpv-7;Gl0XapEkW|WBenkY6p3L-J^xsRTTpOP5X4 zBkCG?!^7bnvKz^8K#YcX=RrgkBuuE7j24fB*Q=K57RGTZJX_MV9qMf08Ck2Wx2zD& zScE`wOR^PLMBLALl)yEwGg@o4>a)<;3W`%iaLBWv)BkYl6PXf?zQ`{n1=x%ud)No= zh9`oaz~55f-vrgH(_OpL;QEKzKj*<6xUlICZa?|%G)FV;tvv#}N8_ES&-WoY)0NzC zBA0Z3$Iko?k>)7-?#MoERBu(48OTZp?6RjF<($c`CAp~QBbC}dBR5>fZYNwh*e&F) zpgHp6ZzVBboSu^i7>Tgt^K!%8IQfQ4YKH~w9|qY53rwj$8Zf*w-PNAnzNNW`hkQUu)4-=ex06`dHLB~)7;mq;_5#n zs$b1(r6KZiG-IM<7Bg3JpiN&&oK!N_VRtc?Z3 z-kdZ$13v`SQs7P^)s4P)n**B^q`_dscfgSM@EN@+nfpMANQxA3SYkm40Yyp;*80h6 zD)j=_mvGWIRZ!KTT8g7V7R@=}71*tgNvEfxdt~TERK1-uXB?jY1`8Vb<-6<*_uLGS zm;3@X^FVoL1+_h9oEs+?G+x8vKM#PCnJd-IcTVuhXP7RtGdF!gf88Ak+!i{QM$!Hb z5b_>7)7#W*+9n%9k@{yN6{#RKRsi^CEvNG|rpZ!CRvC5EItZ^VO4zuk=NPsP+s9HC zX2`308$XEJn|%|U2oevWoyU&|fdV8c#egUlcN7saxXlCIgraupyU1}&CT~8Q_pl|- z5I-?~jtTh={~sjEWWjpa6T{H1E+?VUkD{jGchwYKT__017|)$AyDh7Hio3s`*jz2QI4D5+8k4t% z2pqX7c?v7Z6C`P?Cs|w!kfnF%4MCF0fVn)$vrmlc$*ezb zXi<@T%(u$72@u@;v$108aH)!jyns~BK}Zh8AcNes(&H3AeMMf{l{n-jOU%+GC1Qkr zcED_AV7*uso~=gXJOn%+^V1cQO$jplh=5zdooW%%wIW^4)}FNpT&?&-y-TU3RNDa0 z)1j1qN=kOCJuo%jMVQ#}K!q~`{L^{RWB^ndzN+KScb~<7Nq`R~+8;V;nq{1Q76NlTGM{v(&6C_<2A z-GGD~5WaLa7Cs;hS=A2(N`xqg8ro`uVv&krQvXIoY+G@6c~CVYW`njFAbx&#P31Rd z(8o9G`y7n3ziHm_*t&#NKF$8lD&*Nv!Sf>Vn|k_}cE2Cy?rK+fKyE%aZfqORN80eR zcp)g=6Ok;v$0~7=+^V#j2SkY=1yO<}_EEiAR8~$dPl;(Q0{<-xMOkZO3&$&J$Jm@F z)CM{3d@dlC^VxThc$o8SkHDKA0i!)hf2@?(SD=@HsZpX8 zFVpJsbCW!e2Vo^rzh|JoX81~3y!WvS83L1q*Yk-=!s3DXf=*)QAI)3>hldBk36^kV zPBCskj8iQ>5D`ejLZ~Q%W6Gi>0|ij5j6-AUdc!D$DvnW36Cdc#`UDV2>PTj5e&o@L z`=b4V+bHw4lIk@6Br?fjQ|FX;B9giQ(HVBO@6wQQ$S@GJzVI+g^z3i!V z#{%QW6wrX|YYj5Td>(u(A^kz-(r7^}FgOIL4FyQJtRQ-^ut<(HIcnr*nWgbTQe06H zHH==*@gA}jvtH-F!5))TF?y@#!`s>cWka>jRcMF@7m;~Nm`ZQm8>*0b6P|fnwk8G7 zoyrhewQU^>c|vc6Vf-$O$$tdBSy&UA2=+wP zQA!}g`C%R~I`j0I0WsW)Sk3%d_G*|Z&ZU7ns6qQN1jL$QP5E%@c}PCP66Y_r!CXfP zFV>*vA}*zQIrE@+Z46IMe$+gyIGQI&ec&E#7{=9ry#c#l3}|5S!7s1IMCap4a0^R` zm?Q+qvVagMu{1`JUKg2f=(h-NCDe*bQp7l{YBhkDgye4fE^bj4z+MlJ3RCRqDHV zyP0>1-}82+8~3mxg_+H!*@c2z4xO$EpKubrfk*H>YUc-}w{K%5R|Fe~&=4fI(|}Q= zfS-ODvU{PHt=jF+_C1{?Y zm?Zm4xp$=UPF@06gdGaSz;Lk>H#kv5W0glOvij=oBkQ!NQ3{Td?*ddzvrIFrB^j(Z zRE)}+30Yh&L@YBedE7xjR1BU#z5ktbS@bBv1hvBs5X>(O_zFU6MSCGU_n#X2FgMmR z7l1N86R)a2A(&C-Twp{fcri~YCgUpFgm^hyi|b&}X;@G+-~DyL4fZ4iCrDJ9^!b=t zWS53i&;Cz&`9hmlR^XAFA6*1>;cY}H6v=JJMi__~oGKGz3+1XdXqwfvYkU^@>ewBk zteN!Ud<8!Yq~4*(Xmx2Q<3UxJ-6&6ph_``dB>j}S_$n;=6jf+C|7{+7byMR^yI7^F zu#;3*nx)v`<;=2@7PA^^kU=2g*Y?OfB_?Y{f*!-2fP~<&TqTKQ_Sj|lC?74maArq) z%ce+FWOo2d?I^hOTWR6&1%2&F+dSfYic$Zw7mZk@>q{h2$*skI;Q%TxHx2P7H-#N|yWw zsoE!N{eeU@ow-Y}{)Nv2Oj$}36!;rBLNANQ9h(K91Y}vA@@Y0RqbA%F_UW~jr!3wy z{@~ZXtq{R`TmLsQvLHU=X?G*WuMuE!GBPCf^G53<@cl<- z7s|drmG~D1cLBy*Ws5E5di#cYBN9EUHjlQkZ`I#JBp#D8MoG&#o|?iGOj-FJvhlv< zT4{5^B7K|p=BHI`qU(b+Hzi*R`TV&j>t0s$E9%MDF=%Y=w0He|Wc`O@n;8j@d2gzK z`SVA=BLh^aRjSMDRJ~oyl|tuF%MQO5UnWFQ0$17nhj4x;VC!&g#Lwq2-rcaJ3ukz! z&kjZ@S~fypOOb~f-GijhB>Q<}e3UODVOuRM!#>VPZ7h5?Pff4qlkfepO^qkQtpjvM zl-c`(yho7rs+O53{oAEBpO8sqrJ9Mpf31-u=>imRaDz!(w${aa>|^=lC}QF( z{EA!IhueSx*L32VJx2pKzTTp@;17yT!3_DYSB1s`$Q&SDGRE7%_nn5}~bdb<<6iKWV{{v{m!r*d;KZYN!U0x5b z33V0(9nKwQAKwh;0i{`wZGVB)ftMat*_lTw2rmvj0^pt=0iAyj#VOhrUAHZQJ_K@g zGUY%bUqls=ErFx9R8ze)QTxkw#kF=_ruN9S=F+>+4xd9j`|{1uW{b>U!xJa zS%;EwVe4u00>b9o#W}jNPMLwQ@6<)H@uYN(uZLoZwaLBi4vU>7PMCtNSsMp0r@#zh zDoy06lnvPu>%nCi2$moj49++gu@j%ERwat%Aay8@bG1|=tS9a79?+y6j^>D$MEEI5 zJwsP@bn)7L)5R6bQU4r8q)nO!HDbfZjIM=TAoL@wB0k@)SH7S$=IvbTcgN0Uh<|AQ z^68)MBI;dmdcFpYJqwXI?PQ4+0mtsr4BJR6+`vl*aXIpCfPqY}t=bQc1xdoJGP|h$ z^5=BCh3z|g6YC#hzSnBNCH@ha)I8b~=y=LrylJ>M zhRP$45>LLkm`Th;tr(~Pn~?U_5gRSr)Xq`crC|+kO)8u3!nm=bVsCa zZtdIaS?2ceXfqmZg6PKuy%1t`L4so?p zcVDJa{pM!VLZ-Pr9F%@uDJSVhJFt+oeO@0)J^cEMJtm=dOmDyZGBr9@=;9_xQ>}XymS}!;*yF@-E)UW#DM04n+ zv_seTC!IKP)8cACun#hzq+eyk^?q@xx0@~#wm&x5=?lm~`CJX5SkuR3$U&J|6~60X zKFz#clv7kUj0z|y>~aY{TD@O#ae4LLjGMU?@=#DsZ{lh&`=Z2iwH~9FjnxV#4(xHP z8~b|YX;4$;9N*=B>J)!DPr_i@Ci9KAYeaPlS}8Y`;I2nMX9KEtm(sHLyQU9^@5u-a zFVGi^-o~eMBcwX0qptno%Iyv!;S2HD)R`0mRK-EvR+*>H&W~%l=*Z}r*o%{$1T?QI z-#BY?!sDKI=U_{mc+%C{mk@Q!;T(OxD@=#ffiglU?@fqi$Efc9Sp?gIfp#*7fQvvm zZjH&J8Dyx^Hy$(MjI!!yVBDbBws0lsWsr_LdjXSYw}aM{G>V(7c8Bk|wLAM(+r~Se zl=ubpxl8N(@#U#_jd0fa%`h=hE$PtSfO_Nf_#?-`QrE1@T8;bR(XbYHUN0GRAW&&f zF6w1(6}d%;z$eJAKuMvW+8yn$%DwDGf@c&fRyu6O85}XJRg<}7!+poY&=4Ka&x>I{ zP&zUDvC3zUNw#0yh>Te&%)C=t+BY+9d@|kMGxQ}V2ECI}r`4P~7u{YBYYV?v=J1I0 zGsmpOmYDVfLd=b}w-W;abczB=hSA`7X8rH)y?GW}QHl}Gn1p{Lr}^8aW_P~EMvt_d zU(S|L$y3!~ysfUNk$`!a3Xy_S*RiK--qdvUs>mEYmJOR+tPg z0p(7>fxI->39~g6oddH}ABXD#WZCbmyaU_9YxG3RRr7{VDD`z)C#}_{Z3+H_3ax!l z^T=8_{m{7mEBeB=c1fb)V~m)Smq`;)k*SP@hQ%rJba-Ks1rLMb$0pt8<3;lXL9U0z zTx?7kl&cBD(g%KGe71%hdNrI5ctb>^=9K`pLGz)&zz5E$`q5Xfho!Pz3TMuLR6&l+ zBfOL=F08VmwC~P7!B<~4yfo<|Gw4>d;<(}q{^&F2J{=-9JK`DIAfC&GvQg}U;8aLx zD1CVIBn@V;WFn#Y%aI50IX_}cJ?X4F4UG-`C~yE z(gf4+eMOYEgUWAEi;Xqc-BX<>RXHK0L%3TtNu6G$^qz@3{(fo-s)gOBBNy(3B7J#c zZY;AEzo;j0o8PU~lSg-){F*!(9zXlIWOT7K_|MR=#tJki{dK!lZ-e^#NF^B(1YrUi zmbe8PJtA8#lD3fr8tjEiUIySwEuZyXF;sPW;;))H`d&?1TR9%wIl({iz|`M#TI;Fz zUjFsOlD+eWIlO-2;K!4hJ$>lD~itmhAYm;~}&ESKT6P9R?_10wQ~Pmx~ym-`?{aaIp4*mPOv^K51IE*#*GLREXyr zkIeeBo@Cw`_RF(){Z>M!q}6NR;44$H;8!O-88@Sq8g(RR}BABZD%ICDSiFV1X9j8xq>shI6YA9e!_=CHXaUVmC-#9k0A z?@J|^lAa+g8oLAqlV?9pIe|ZGzJ-EIIbZ%#$&?*%M(dnWEbvLpe82DA6lu2hP8+?% z_wNJfmEQ^}*3FX9K7NjH#U}W!b*!n!?G4S-v&4EX>Ue2TkrQYcboNe;-O;R5la)9= z2QTjo;)C$Z1~_Y_zrQcoYch~b8v1W8!hr%?A5Vp`-~lXH02x$3MLr{go`bL)MNBUV zqpWE8tJ#dCJ{k0mjhENRgwf8xV8@?V5|a5yHWyw|Nib)opQUHn^WZ^3L6n5~z{PS{ z%ufN9=AFJJswY*=Vo#sc-zA9KbV@=3ZQ_*(Cx=cZ1%%Z8Fi@357m)}n#|k_ha`(jA zjm;~MaP~_&?}E12_%7$dcR=P-5^jX=``qcMv$)GT0ajTl8O}rgMMA(>(Bo9ZNizPg zCA_8>w!z?UUnBEfLdr73^r579n)k`fX!H1bqG*}(Q-7OVDQXTa=Cky;5} zXA(8?;!A=&Utv8>#f3nsl7^@-SOzl?y^UfW4P*#e!E>M@m;gy7BQwm4+$tr_nOTM` z;ie0+iY1v}MW`aH)^!R4e}L);=9uq!TS=M63kU1@MonHJj#ZMKP+iS+olw=o+9lzu zVKOk9TTCfVD5!M^vNS(oJzx0}Cvv}-7eXe>Z<}YTY)T0QSWO#b5cz*HstrrhjlFwO zTp9{9fL*4eXP3^!b)fTUYN8N@RKtBUYeWZ0agaG--8tn=i_zOEBAZEWes!cJMU5d@ z(3w^)B*$PRT%01V-59sb&jl}+e`860HV}Qs!gWrt;=&Lv6qqr^osg~;KrIPlp$2HU zvBr{okir=QRFMHn0QR4KZMJ+{jW=g-)GMfdDcG#f_vobG(SW_nI~CpClD#gVeCi2i zpGaPMmF5thg|3G2>pt`Awpit>01pm20{0;2txQXoSro%fzb4-8I?vQhR2zHMnypnzdoT>=u`)z>{d+&={}{`ej{D_ z#$|s7v49%M7=w#T)i47p5s$i9)G4gF;ae4sqEQTP2rKopf^ND znYhtwNnJ0+E`t`$dNvy_G@umLD?M#@yb3Md80q7emN1dcK#H94x zH&OFfDpe>s;qM&&wAu7+3o*>e&dkLw;CR7->Y%7kU4^xhn1b35-#KGlxB-4HW~EA6 zyXkR!o61s0`)#N zYdz4scl@LhvEbqfLQ*!NpR#M$U#>6V+z1c8Z2bOajB8_IE52&FWvL&>r=FSPVsl(T zx_lUnKX}y*beIa&yaCbTUkcYMS*?b)#&^H3CA7Kq!-P>!fs|iq!)I)wON!GJ!D-h2 zZ^N!bif_!!@^ikT+swW=9jp~T;Rm{#?!{zQC5XVfgnpmCQv>;OEOjtHT+pUy&j)-KISl|S)C#q8z5 zm9l^4ULPF3L7*etTEgtC=JvN=t*daUYyCBPzydcw%Jgo<6GiY($(j8>uycYjhd!_- z2<9mm(g;UTsJl=S8AJj>Uxm19yZ6N@Vs3?mgmAd^=F-0n#U_nxZw=oaQz=t%+(Yd> zc(KXf!KjYYD{_}F$#HJUl_?n49CI%!++wr)nXFXrs(~Na4l-Dt2eAXez1co-voI|> zxZAYZjRoJrjOpu)gt5mBixAsx(x)4P>%zR|*7Xx(j1;nSj*d7TnLjUkVy}jnr0yrv zW%lUTUOaICU#Q*)FF-5Rj5!t*&T()req;aPNaplmdsM(OENE+;BoKzM0!=5LQ4>m^ zhJ3VtK+T71C8F4ovBq(e(2=uQJ;&=C&Zd%5#gfRD<_!DFKFnVBa97w`*Aqx#>dOvM zx!t@5E-Hb;eWi&pO6cxn7V>GA^EGk44MTSg9`T7ohe^g5uTQL|5fYdKC4 z?oYWN#+M4CNmrHZyP-we|4qy4z_r(F74;MT`EG4bAZH^3tAoy@ZBHS?c++|VvsG;7 z{qK`*=`GVgu}4Z)Hp&P|9w2cR#F?gc9*po1#sUNnwccL};`M*1oQ_*tj;h-wMC$Mt z+|^{myp)6XoWXW|Se|DOo5CU@Iyl&g@!k>2SV25XQxWsrW9jD8e*39`S?xSe2W;WK zzro^-9UKsj0}|zfEhzUZk0DR|frb`a4!-4Y0IFw(9o(JY3$J<+t5lQ zB!hK1f{0dg;@11A;}E;AxD~#$FwG$0bQ|FRMR_B$@h#(_cu5KMx;L zytZ9^!`$B*JRq6=rcBYi@Szs20eB6g@Y@sWa{KD$Kyw4E70uhbsFkrYxCRI!Jd@1= z$r`{6@E}hS&zmC6)vtBX3c7=jyB-D zk_0~~Nw%*v*0B9N)5tYt_5ZpKc@{pJ!d3zAJmm_c56tnL)Ndr|*7C|^ed(IVKp!tb z|4EAOx_@1r+hk8c<}JO6#Vl!xA#yxHljm!5|C8ENLSWLgPj$$hGD$lfR+{^zc4ciZ z-dOTrq28W}x5_9M^#=Rh;mcR`db*#K9raqHMz9A`byZ6a!Z;vJL$C>eXuU{S=zbsX z22vJ4uVb+P&@QKnjI8cO1d-r&eBsl1F;4Nm*Fn(j+Fe4mqnN@s)G6S|TQR4d~FxJ6IX%?#qraF+va*-A5>}-FD?r_uJ#iT)~CW-yDO6E@c)tF z6o?Kvi%m!O3a6j{`Lg=-%k<%plmmRY=LoSxAy*L<-ztm-pNZOun1z_**Cpp?mA5No z?2J|>E6by62!B~ONI%~RKpGz)I2ZZ4i}4^)0~IlIFdfc)9RQlWl)gVw@LdPq`g@2v zDM-;7KT-`%nGwWzOGRrdWGu>@0ekWVl1~auEUin!x3P8~y6%^R*8H`D*OWSyxKoP; zjUy=DoN3~+NehhYlGCy+V{e(Tkfs89ugLHa+xJQCS3dpb!4l8e28S=@ybc(CCZ~m) zRn`tbt2?2yxdj9riF-ryrr}4JK?nA~ttuhoZ5SD*)Tr!CA3ufQ^~>F`jhue z6Dr8OhI>oD!lTODAID9TqRU!6_u2>M{{SXJO2}cHs$l|8;$&Iek!xoilz@Dq?(N$9 z@q~Ep{!zGi?uIIW@@4M}N~@!M+8tJ!o$yw%%dUeqj!6|a1={qz5&>I?eVmw8MwXCl zWWX#nX1o&Fq%hV(wcN)4_QW2P-_tS8!cH%w+=->NF~v3&TM;F9!ZNzS$K>be=;M=} z*ERfS8t`L#l#M`2s92OTAg6pfi>~IcF_f#~+UigqEM=%#vj3#Xh?0s)XDn(0mG($U z!6+qMS#x7TRKy^34vL#1$h8w&&N;7ikv~{$se-#6z({G$}!Cq=P@}Ty92gud? zIt8V4G3(CQJXRNHxO3N%2Z~U&`t^9H$qAuI1*mAUc*C4?V(}QWssN?QJXxYuo3t~K zTj?mhHiEbOwq?-CanBNOaIPwxpg4#XZGxam7aMMo`xD+?P>=p$n6J|dS}(Q);ue*@ zw#hYg$azN*tuGYOY%%&<8Olvl+fw!{gO~#5jIn~)qOx6%?Jd*B*r0-nLlu(qt@Y5qO80mEP*l>8FjfYpR+mcX zs>L%OyN;+4yU0&ciReDTspB(`VTX@v(KV#Ty;UWffZg{(O91OuJQ<# z;au)>Z^b8SxA0DZ-39VSpvsufl8HxIEmiH|Cl9HTXARP_WE-m_o3-@|IyLkbv=*sz z@xotSX)6Ufb!13BbAM(c^Lwx===~n=mb2gF`YUV;J3cNQYx=EodPB@6cVCzLeZ}zK z0*SL?Q`GD z!v&ISN*7d+LH#sIaPFtVur!Bc4u32_E)(s3K*gT9Y%7JR&!Y@DMC-0(*VAnE6e_0A z0%D+DFh*F*Pvj!QmL41>dm#-X!!Y&AWQjxorU=k6PRk>%LHk)8@HVYRG-Iz z&E_vA=lV$K>bN^-D0!F_x75r8jS7?u2b_9cD1b$S*sC4-o;Iu!9WvI`x{E4N(qW(_ z^E0(0(oGDa>kY3@smdIJ6WY#ZqpW`{iu=Zt?0;5|*AHvHHII1odi3*Iz5QO48Qbze zt}Sb2XCn9hva{unTv49;vksU`olQ%QdkFxmk?LTcgxi7~RJ0m5@~Z4fFXJ4TOyDLd zoAJv5Wm^UI`CE{wAQGn78%i2VMT^M*V56ZkwoYw=TwU{af3@^{w~Dvb%$5u0QX@fu zo`w}16r-xrG?d!g7_>rRObwJ?;H;BL%#d3>2qvN&*;jbeB9 z1hI;iqi3Mlr$skCLQW1J|r>op^#J4?|hM-A?`Sb{T=S<(a#;aUcFJI%sb^;NYw$ zX7EfqZ@`6q<4kpis2F@&?Xz|qB5FwIm%WPeCxgiCUGYv<@eEjvV{g6XXn2V3EJ1do z|7@*f!%(&tvILi-ix~TL?v*y{LT%h1`S>*} z7dny+LZ5xR2i(d1^3XLJ?M8P7s%o-HPbyyeyqRJx+ntc_^;ZlYB*+ckX}tC3B(@?S zx_mBAq0Y`8A2xBppB%Z3bIAf-bNrc&rj&Hws@K0~v`Bg;@wxVm){CbL2KErh|LLtEk>Kb{7F^v^a82j9CIEM*9SW-ei6}Mtb5$>al>j#qN9RFiwp2*Yi29nKf zBM>+XH^^=ezdi?*qj>%O%8i5oU#w=G@7{1#2an~Z>-!o>j7;wxB_{1zy6E0(CGg~Q z_TJOKiv1XRUPK97?6K@mb>dlXkz#=uRoJtmMA%XY{5d>^bQA!;0g|6~v#;ps+w>Nm zK>q}o62$DaETp(p<5~c2d1EMDam!34Szbi50eRd-Mcx~7$;lSyd;JY7O>=-cCSxI@ zxMcI!>2H$f`c@WRsAZ0>!CtadSgg!Ka}SB(+Pyb5DWyVq5{AQE3d^xI4V7?(w`uJ9 zR_OGe@wU^6;VRkcTDZL==Q7@xZUK)M?A1Q^I^E408`H& zmaLei!U-yX+$=!k{2P>q((;W=RsqIkG2m^1cwzHe>&?0zm(Vkq!^*KMe zo8rf^@w}($^1)8bnfjp%o5T(;RV<)qqG~T&8Z!vafDP=J#eiCJROas8T9GZSjcf^X z+qQ0scbit8T)l|*&<#w7ZK|%l=->?_SM3N7qvyPxIkzrOimRtE`#@A(#Czjps-L;Ip4-`*C#`k0kPv;)9) zFH6N+MZ(N;Z3>R9mUpBG3H8C*;t_gQ`)AZaM0=|=hAz%Pm=}NxYe0h44Ov(ig=8uy zm0)vgm==+TcEIlN*I%_JG#gX!%X?n0j9dTs06F)Ml%wx%xMCK3&>=~gbwNCwo{iyg zp%y{%cCma_QscF71*6Bcur3=>TGP>gFeS++Z{Nv{ZH=}th-f6SSu!{y3}<0gx_1mwc``I%#($|Um9YG&R6tb1~49uCGWZS!{JYOJ&=5{S*85b z>f1&^=5}@>G)AHzGDlv8MHRc!P{p$D3Dl^v!it=S~BviGiB&saOcqQyppK28s{Rsm0mE1r{Y zsC)TV1mkHSDFL|+efa?tZpVVifYz<@DW9+6ydstVUVHH4qH3vrz60t201=xfBRV?h zs1#0)fv@lrI2LySbG7{O5zhr#u`V*gQ8Qo>mC5FODoZ;0wE7|C6$>WEF23S75wrJI zc_}I1{%fk&4Z<70sx2zA-CJ#R_2-PuF347CaNGsAJ=A%6=zK7N|c6#YOYI_<{#OYy&0nT zA4{@>14g?7nFouxX+PJm5D(J_%}3d!T$^E1>$m2uNcXg*@VRZS(g&7% z=`g7;gT8(!=*quW>gd`kjBlZg8co6)r&FTK6a~xtRHXVk$2!K1UP&| zSz8dIcrvT8OA3*Dk)H_&Jyb&7& zQ!(hv;kB9Ti6n^4(RE)d*%wWBIxpgK+QiyeJ|<`E6{nxACinz0^0igs77dPIT{g(cnlSnNN(zk&|e!8}xvu|d5?-yIFI@pGg_ixV@|nJ!=yrKMBu zs4T|MKI^!g~U{!7>lWTZBUis7C(f8 zqg-|9+FOy!hw1HFS2x#PTaoEK69ZWR9p3+KIaCkRdOn^Elc$5XL1plFo?yQ=uIh;M%^5wQj#os#eVZLwanf`o`^ z@!pw^dPot-RLmAwGNCd9QE=_5ywUjvhJ2gBj0Lgn<7oF1`k{O&SNuZ4 zivQy7=I#yMhrV2JU!mkLOGi3TPlbw-9-#VfGk{Sl>VPu?i$8KeB@iqEM~J5wcrlFK zJ-TeQVen5zs9OT9AHz{MIZ@pLDyCj!iER;_=W!76H}uk_2UpFegcsLF=GSjRHzXr%X&!*Bx&dfh{t|P(F)&3B+DG` zNW-&_D*@2gUQ)^eh&~;n%!S6TL3CM>Z<}C5Hk=4TcygegbOaS1VlWF(K)E+Ejfn>6 zn*mtx8_Z3XM|b6kE#(BuZ0Fkn;99D7zArY02GaqlU=^W;8}_;sACp~vtg2yhoRPsuJTwwKOc1va=sxN|JSc(qF=5eEc(eeKOhd--k2IMjUuy>FVg>I? zPmcwHd*G<)-l7xE8DXz+vpn1aCF6)0Bj2|ew_6f&jl>kmMfp*ns(hkV58$E#H+=;S zCLsJfz)JSeohAGI-+YLCNLnY2^ z!;j(6zhks~K&&zc6djRG$F}WKi|eVFGCE4QuA5};wYm;>RZ=l;9%Bzx=wlcsq?y<& zlhtL{MFy!EAIQ;B9eKP!@K6ji*=)}=LpillIc?q*V|ez{Tcy$CFmArFaAKmKy=^NGGwB2z4pDFa4XT(Rh8lMp(<%;K)_vCAfS zqsb;B2kA)8#EU@)0pKDEawHOIM%46UAZRTSSE?eZAd_Z}_G&h^nS-pPV<$N+BfI1P zA{CDTotsaGYJ{Z1DG^~9~Yj3 zhC6~_!4$YFxvDc5JTq|v>*x{E91>Vr+*|7Wh^{|GG3nmN?m!fmk@9G!c(FU$!8~aC zo;^qGd`@#wbTPyko~%bcV(%*;6vWb+)W_S<{H8D~Tn~&Pjui~vWCNecx9TwXEde0p z=YG0g$8?Cipn!$en*b2Sc;RQ+BE=v?GzeA9L&ebHkY&J?0{0Gx2USJ=@OBPp1%|kc zT8p;2po}|}&Rqc}gS3V=fCE>T&cz^1Y0R6S!8&|c#_l9?Q5>O17dN3JP8%ejfzxAY z*y_!+e5OA7cCAo`u(Eo9g7`jI^^ zF*Fn^3AjO|A)>J@Nr3mwH$dMLEV#!SR@rm7rsqMGHEvd9Y7>}S0YX<$6e?6mcFI!I z6}iwG!zdydb^<_g#A3V+P=UmjV1b}7_zj@*9{9!<^$!960>p0I0RB+G z-&p+^uYMv;6d^16lk3q*Lti3W5b4NJ9_kVe5zIpzy^93pm(ux|@(AmnLEr~;51>Qa z>GPF4c^w*Dd6Jzm^($}bOUH7;;D5_)eX7`$*j6Hd zzk2sdFAo*Wg>Ke@Hzpv-0IGbE?7XoTI33Y*fnYX}q*4^g`IEC7_RywL90GlfW90fx{!?6d@R{eNC?$4P2S7Z>tbPD78A$T2GTnaq8m;yKBLh?hv3UoM=g<=a}rN@w#T*y{u zyie;mwHeqA0n^%m88)yx*NySIFAE+L8)*2@KSmInKH?8<r?S(<%Bnd`1}{_ibS-m(Ym)H&{YVnr5H227XlZjG!6^dGn2 zdO65gF5HI;k>)`BXy|SMGAgE~vsI*7fH6=1`~g9rR~av^+hp;PY36-)dZ13ax5XYw;D_}B0hZ}{XO^}&zo z>=|mw)}nwVs-wLG9ymeu$A0TW`cR=}AjBXI9YY=O-Q{C)$z4Z1X5Uc2HD_0eG(0a9 ze7P8RMfOgV&Rz8|(eG?r7e!JCEB4CW32O&}UIYK-ir~eb;Jic|{>8%%<6nKi&7G+p zqRffTVn@z6i&|%NQl0a@Xx;t|Jd(rxNx%jF8mk1st=RCsnDLqS7(YzdW9Qjz`f9=l z9FHynv7T5W;eT@QJ5z-Ae}Rv>)4$t+SM9)mcQ75#0iHYmb<$Jd7@lU;dj#2y_AuD%4}PF{Bd4w`*dP0VR-N`o zWV)`6tA(xS zTljT4j`l!A;sM|3{bqyg+Xb#j&`InB6@3eY^R(XRkr%ruAZ)YO{RavDvK$?~{zLx( zUx6o=FKq!f{GR|%ykh}#3wU)NH$<6!#NJ%_&F{J<(#dNYBw0*S@IP6iuh_yPy8I&# z|5-A?U%|e^DbC=+o=uQG+F5VFc8@OJJcV5)-^D#!mkkrm_|IZiFm1m5>MI}bdUO+K z^HHi~`R(AB#?^m(p97*tKOHfnxkaIlOhb!?PfP_omMHLse&Q>FnK2Q`yE-GXDzM?x> zch^DN;F+f{J!d~s@HKy4wp%S=KJ9>iq08vTgRqsv7nd0FS*{q$h}buqEoX8hP+t!R2pthq05fd0N(JMTMP#2Tuoai?ly@`g6eM zu;|>c7s`KsVQp^=S}oi%nCaOCaIa{0|2_9aZ0lpnkzbrM|9#}$Own6#zVL6)qc7+6 zHc;pJ*u($Ma79F|e+&s$hz4~auX-Q21zk&S-t1^y&#Bdi=~?F6&xTGTb%Wai!OQId zM9w8Bdgr+=Zxg?p=@cN*VY-t4L_+0o#31l;^^4c&zqrk)kZJ;%uja> z+b2t1oJx#0QZI8k)NOvD zu4j3kcALl&&_1w@B@zu=bIwMw*{dIki;j@A1+EM7O% z`iCC7oHnZH=_s=v=OXuc#Z`3I7Nig#f3wG|6E z{$69H7(wj1$l`yS1Z$N3<3y9Hg;I3;^!`NG`ugUs*HvY0*GZ2kqWy21YJxY6)rcQ| zKDM>P6(e;&AC=JZ{HaAnJPq-+gk8|rVrLd;-fOZeF~i$@2i$P!4wJ36eg&@cvBr(2 zI=ki(Zb_{DNZq-)&dnLjoXEq57VEZaatTgtT$v~-N0e2qR@EE!xzgh63hDo;n3$*S zKZ=#V^UZX!<}v$jlds)9b^}CBFWi<{@z3TON zoomx&+jo2COf1LWzL;;6+0{(b4{jNWpg(CgydQ4=X@8;K{j|ih+`czzw)J20IT-#Y zw0ZJ>nAa6WH2B>qt+|9xj{ zzQmK{kaIyy z{?FfcGX2aQ@LVk)trJ9un2o)tLR0yTUon@xQl5rn_MOv9KAkH1xp2d?IUs?s(o+|8 z2J)u4Kv(Zyr408gf3CgT`U|za5;y-q$!2Z3F(fz}1O1)3%E~J((?HAKGKVEe zY#@Dfnod(~9q-nZXnGUdcMoT9MpZ+_M4}DWRlYK7ewfFU#HK0-F7Wcr?kS!>n-8UI zQk}-W%r?xc7OH*x?6PDa?BmRwcT{aHR@~%wVo*Z}Tjr!7{C>6u>LUr67zDpZ92$P` z#zXQgb5M()N8vOuWG4Aq^G|fmKtRkIW>KPbcjM*iDw;9e!eXwj1scJePL?r%xCOr%N7suOO*q_lY1YWoe#Jz!0^KnjC6 ze;ocLl!5U#$dZPEs|?oWT@Fi=)~nx?pBi%;p}~GwgIH5|>7F3yC}nG%H@!II z&Ne(=pq?l=CbzkqZ<-Qba%Cn}p6F9D)^&aF_Kcl8KlX~4HU~cv3JZjX$GC6wWfCIU z5GgKq*G7fHm>jmhLgd*T9E!h4I>B`H>u|2%vaqJsL_-(quoxl4^&lp!-0{Z(N}F92 znYJ!#Anj<9Vkxq!2bI$|^!Jc}{#EoL!ZQ82k0R8~pwO35jtm>Je)AJ7;!J`NX>@udD4|V-;6dnz7Z;>A+u)j)6p*N6)ZNgg3#LK|2olX^%HI(fSutwJP7Z^DPHm7V% zw|r>)_mF*0zeb$-$KZ~$Qj5JhXAQX47MGycW3sPIepdb$7JT9wr>rlKpsDt9KZT4b}-Dh4d|-WzLurE#;m zQ?6I$m}K9Qb;quHtnPb=cDG* zKG|a*yid;84R7_1o7`g*V&=Icl6~7Y&LZ!#$Xq2&DO;&JK2#!*1XHFmhQ_pyaAZte z#nCt;VGY3^1OX-tgp8Pc&H&IxU zbb@V->N^zNQR%xS|6Um;nMM=aZoRZ=^ofqt3kOfSU4sAqt@2{tPbD_=fim>vrNtpX zMuf2>?T>>cHFy6#sA3C>1~qi zvwL(kqhzXeubSgu6EL>^pPoDrTz`|}F!i(~M(3S>tF#$=2tH8s!UyjDXFEcDnvSyP zKN0Iap;`CPEg-D9d77}7dRL>+944$@X<9JP2Nt^kf9=Tv7Yg+1_cPNY?!KSW6R|fA zxIq`;-1+4Lv88DIYg3yj)FM|pYo3~D$y&dZ<-YVO`Jb)?f;bxAo$4RTN&^vmKrrqw zqKaF{crk6aPDMH&~ZGjNcKG>&$fzY z*&D%-OUt65s;njvv?a@ezUE{9c5&@46@l*!8rdGRyhp!IcM)Wc-DR?Cb-Ew#gSF71 zKkUz17U6oW|67secvq5K6qBj)3u!rA>NU!gsU(%bo&#ZdB%85>JZOp9)+m5{xm%TXzpzE>uUVlkmzid4IdytSh$JE?bPSme zC66B*Ky4P@!vKy!W#B?Sqf&Yg{2l9HTqVYNh%#lqN5IWm0$nY;hvYjHZaQqmgU&|W z?a2VE_Coyw6>6(At6Higm+N=ehSkP;9r?1d(Hr%n8uv0ddFiqF8--}iE)a$eLTET0 z)B#cKL0;tt^is#g(ik#q1}1Pog;uTO>M*j#I?iXEH$b@$sPCD$*L9VQZlh-%V4`@o zE!k69T)Nm2L)XC3HNKO3`byz%E96!59vhVlk&Yk8VP6>7AY%AWW4j!IEBi z0CZ3XBl1kh12XmsWwRErhAZUQb&x|#>tzd+-;x%k2HZHn6k2Lx6Xy?0jG2_taV=nN z66{c*LQPFoMJIBbBI449PE5I9Jg?n(z&5HHS#p5sV-CHNVRIGIfm@=B&_S9e^sJWY z$!s+C3y3f=xr-rXuC>uss+8Tl;FmS)s5dbAH|V2Z`s7;}Z@W;U><5Jc`@092R*l0S zx|q0FhE`y<^qTwQA#E35k-29kHSEsED$`H$IfI?Zg###0iu#_q1Gp|vY&N>ez6jSs zmzbE`%NoD7lNGv|^Dj9!U^rK-t{3`NUkSL4A@M*DxRxg4h0adZOgehz=Ks_(DOh1_ zVmOcz6WDlx%@ znVC-uRbQb>i_>!QpAty1kdu&1Ogkv+HfYm_4g-xrTIdiGJw;{0@a)vL8#*fH%&++> zyOmX=&Z#9zzP4J&9e@6GFZ|IpSTp&1t+7-kItgl(IRq`q{&j-`*!oCQg*==$n{Z^)hXhOiuzgKUDRp z-)+9@Dn`^CaLMjmd#5-ixUoDbL|9=OC{fGtH9hShGZ<*W{g5|pjRfkVj>r^c+;2(#@jY; z5+4#^-qt{_7ik6A%*fil63%=wv?q2@Vw2HaUzcDE)#668!W`Mzx_@}FNJ z#6yjK4$uDi8j^N#@lAK%K&gGIhEiM$=tv7lg$AC=xqC`B;JTY-xku1**j&~Z5Q=pm z=q^)c2~1kbiXdMQPK2`_NZRNW%#7W9fb%=p6;i!9EF#5F2rvvRU=K#rM(naHiJ;v8+Y2!iYBKy@x1;v*{1i}}=4gCbkP%0T>H zAqIMgnypI~>T*xV=T|ZlmeBO6ohLk<$nh^xYr7J(waZs22Ly14_?2JXs37(s9ZKdF zXS#C0_M(FbmJC*Jp&ucsB=4v_2J5LF4n^NL8lmxrGs7!Ez3F==YYdRu^0_YNP)$mv zj57m+(vkp0=|Ag%bEZ?LU&r(L%p&o?IyjIlW-i}11UM%*@%|@|0t`Q z8F=~%%}t#qT4b{ifPhJJ=iP$ED*;JvK=gg+dYfLW78+AuQkI%^vwuB*oR(Ua`|gsE zforcw98e4M7Cy_=d)-rm(amNG4f_lB8;UGzc3RI#>IrvB0T;MSaRF$|^j6xpJ*6A7Fxi`xcG^Mg4DMFYLGHmkj6q(MO49 zdE??F)jDAjYnhszEfJ@j?&c^b#;w?hwA_ak^cmT%e2#`eP2%Yan1DyURH2m@4b=PZ z`e1TvWBH+8RUQ&ii*>^gh}#vACVncpkh7BpxcC!z6aO-pdTLd@(>g%#jMrK|PUMVc zLro7%phD_c3c(ujN3|g@1^lUrWPkwgj?gT?{mY7RC1n1oT9c+| zZ?eo9y97=JY4Sf*;%QYYPd&1PIKEV9JU|>kC*U@>%2XXpMG|n?qtfvoPo2uwY|zNA zQ9YoW8nvl?N9d0y^7C6Gomj1uN@mJ@b zczileBi-X$M9a4g|Lmct#CQ3*)n|H!uA3)S3ivOAwOBMMG_bpCD5DpKB+(RR=_E?l z7|AFPAod*3eDC?pZ&5ZkmT{v4c=q*rCd}>HvqFf+i323L8#XY&;V4o?Q(}6}>V2(L zT)c9L;u%)<9ig*T7_?M$Vp9HCx{s$_nE5$?U^D`1;}6zB)6uEG{da!OktW9j?Z;TI zdY~^BhYkHBP^joQS0qvSuhpIuHkNfUcL1OdDhb)`a!sN7eX$9P%nuQ#I6D?&9| zXJ&uqqklD^f8BBvNsT|p{Wc+ZuTnGL!O~j4g47PGP)(p_f2~ArSDySOW?EHQ)&vCW zFOpp{mNJXx&i4*wlBi|JsDgZ|0t{?pmQ}KB{k8@f(thBwAxhK)uV68&HPZu=K^w#k z19G6FkQ{(8I_~Knv{d=r@H1v|(X!gl+*xtK@|%Ek%pROC@+InjsA9pTYVU<>4hwz@ z4QuBsXA6*hXPgIeoVb}y>rg)c%<3ddq1}VaBxGVG9C8*pK(LT}6k~EY=haR4Ym>1j zx5a{>NvPRNod|aYtJLj9wWg0fAnQy+$rrUwy+q5JLuX%1JDxf4yzZy=MCqZ^$DnB> z(VnK?UBm(S+h>!E2!vb@u%-DrCCh@`qBV|s0AzsW3tb(?VQ4u#42 z-eaCLj_d-B!#~;OsX7@eEbp~!C(chh^T?;$1-f1b%Tz z`hGY0+p^))NZzrbvv1i~8&6(|c;$C@K&gW_#=_c0vVG7WZye1!+VK-T^j={Cuj0d5 zn6!=Z>I`1?5_S_UyhSKs8v5-Vxmk1MYN^`$IPt0l*PoxXO0PYXOp1DevUvVC-%ZKl z6E%`Y6?o~*HUF5}D`|Ap2k=zqdeY0IQ0}b+0r%&4Ns(+GeptkmO9>T?TP_2;TYX#T zB}3<^f)Y+YJxyK0N^T7w_YmOv0W(%Uk4qN1RP|Oxn!kleMdRl(#VlPxXz?<_f8Nh6 zzpCzFTyNql5m`Y{83ms`KjP|By1*qcs#@qnsIvPO#Mg`XJ!g9c_hxo(!r1!Tc;jW8 z&EKIOmK%>sPuR_WEG>52oT;+@Zl?V_2DNhLa;(5m66MORG=EyARr0MoH7<}C1f8v{ z_Na1`t$a>ni>|4YYPv(;S=sx>yPBbPUKARkOulQlQxk_>4-O}W^15m2!rsK1FVoL$ z8s7Yxin1{e zpsus`F=^W4lZ&LR{)*JDj_X6Y{5a@C-_ph*)xZDMATCS`+!Akm_V&!_Bjj7} zpPodSRPtH{&fl%k-b3{*__Qij$HdURk5#!hFPq3mLT}48k-G$b(Ah%*sB_+vqVmVM z!jVpw&f#Ilj zp>B2e(wU!eVPdhp+C*P~e54oeI9@N3q#zXy|{ChAhD`ol^W%(@wo z_frqv=v&U!K&8Hb51*f}n%sJ+Frga+p)0_OeE#My~` zJLIq3>+XjK->E(`+C!~u9D)9ayZU4~5IDfFI~D!-ItO@mS;#bK34UxXQyDRClDY5K zs7w{OWVc*e5O7+f#_(Zvp0QY*m2J|y_j!z@-kKYnxI^Pbqk5-|x~`7L9{-V(y=!{= zn%PNpIn)~SVA1>QF)PG`ywo~?2B{Qe^fe6zVFHd$W~rf9;6iCi?>m5b@Jga=zp|I$ zjoXrTPv5J~8+)2`1`pM+o}ZLRY-9uqU;|WD4;e4KaNQ^tk4%U-%xVuzT`9g4Je{ll z?;Lvj4}hzpz8Rliy6DQ98T{BCEMx&ALPv1fHt41_-gR3Ym-+_}7>17ji<-9H#1@`L z+sQ|IF^%Y3*Y{-e+{3f`o3StafC1ygisV`>T}0WyX0!Fei+LfZazl}0>;_OjzEZ2t zA7~$+C|1p2X-GLruIU+Id1v0DC>}r*ha%)xIjmlxnU}KiSYd5PM$lDO>e?*WYo~V% z*D!hgU%R;M%DF78s$G4rLI~<+Kh&s_TX4MVdDw@0mj>&UAN0xL=(XAE*^LMAV{YNM>2)5>gdoe#OnNfbmyUTGexGE)Q374=_puQLI5 z5SpN6*O<2|&t0cJOK){Jp$V2jtuX>F7-zl9SkgVQLtJ1R%AdxCqVJ@=^C=2O#eWD@ zI?$VKgHU@l{_S?%TqV9P?K3+|@bYP(2-yRu7;ofxez8TPoCT_I zlet;75Uad6CDpX3-!qw4{_@$;x#u1!CZ%8Ita)2U4{SKg-a<6ro%k^QwsSe?CS{*N ztM}-0eojkG-;6tt@HpM8N$~d+KOHEwaCUK`Pc4= zPB&>Ny}Fc_&>CrreVTr{XR0p5CGa!AF{0*?ec|zCi7uXNKzi>x`l&2g6p2YZpHN_@ z7IhSGbh=mbiQ%~g^us4Sdm?@*8_pvP9P0;3(pi~b?oP9>E(ke252D!w0ZRo48Yl-`vPLUoseR+_s7_eDM?^-*kOmb9kJM0WsQuSooY_!p7u_OHlU9ZjJo(nw1 ze0YQD+Xl;>$Fy@Tw|WVQae09YGg4h`9`Y@msMfo2DFVS+#e#~5#EbRnQS7~$xAFIe zHNT4~VvvGZ(d7WoM6IqWsmwD^T_j6>VqdAMMSqtvoQhR%l0N*IX>OBJ>iV&q>;E3@ zZmv@O43wHVCMWHnZ0`lG(oYi8YDEPe1UKTkUM^#979?37EiTD zOtY3H%jBBsp^F@_qQ{Xe7gIzD``_>XJ|YPA9;Ky@odC`BNzv%V=@|!Z5b=JV=C#?I zQ}1s}n*m&f_d9$NIjLauU{O)hfJ?tx}GiKOOTo4A3J>QXoz28!-oOQY8&I^gBRye_uxRujY z{`w~Ro5FAp4E>2v@u$hX>PKgv|6%X^bUv6~FM^d=i~PJ8dPD!g`eeb;+0n7;b7w3s zpVSTgl+GJgd>b!-!?%J`i!$SDy@4iZqFDG}GaY}r8tcdfD7bnglZ1XWl>1JL>qO+` zuzc{kiy&R}OUFycJ>n%ao|1|2ECP83dGNV({lh~hSp+EoPdope^FHn_(&@!Mr;dp> zux2h~jF^hp>P`=-FZiiohLmav-Eoe=msLghoWqW3d4FPbhV(MEC5|AE-U^#=v~#5$fdVGI8)Qm zYr$;r6;D~$%A=H(%lfLr`l`0NCZ$m2tAt$|fk)G5l7mc2Io(*gr*&L|HguB#wi>A? z0IHvb*_uvZDPgwxXcZDpD0udvV#BcI+;Caef#1lZwJu=2q&KS5AZ(zmNkOKmKiE_O zY^;!ZFkYoZG1CCEq_aCkSR%&eg3-T`FAwICX7?0tP=ZNlfeG`VuN2umva)*ReEX%h z2ka0_ljN?+5xKxpbsvsAm2QM_Aa-7zcg?g9d1V4?B!q=Iz#DPujRR?6`BZT5He`%4 zW;!yYp5vv*AnNrGc|yVZR$$ZAMpKT1c}}LKW~mSX++HgbJK@g#PV_b-W zc<&%*XHuk$eNn4PBPzxrD^Ouelgq&YlY{>q?fM^KYQKdo2f3s>Y*MMl3RktaV|rOEUprOe%bISu8fx`09NGI8SEhR$opF1 zp)X6q&+XpWQ0l^ZY{8~*>4sqkvxNXL6!wywYb~)oO-e`ELot;o9XGpurHqhDf%Z3O zJ`I4b4NdrPPKr%n+7(&HA_C<`98@WwQzJBW)`K-SB70b$6a>|zNiPETutbfZA%fz| z5^R;J9k^TwlWaPqV^V51lKFf)z&}m7loY{7y*D+h4fy$N!oJz~DqU=YMVRHfnmmtM ztqxB3pkBq5R-+S=)OFVOhN!ET1C*61<3T51v|W6`us@Y~<=bja+(@^%bK28k9D*)Q z21-%T6}ngM0*3UGqM$CV1QXD2{)^`s0vGyfBhk%gpDp2hIUikDii4{d(9!chj(vaA zdJlCR8sA)1T&BEBPy~RF)PZzNyd9nf{i|&rMxNNxTQ^v}Y@(ZKLb7$(v;#>%HSX5V z@BgJo(Fm1wejXq1k^wsSkJX@n+`L-T{XKQw<%KH_VR=lW%3IO3vKLWzC&$w^K{8^Qt+z=Z zfdb)ymyDV3toD15TAzVZEOzFN45nvYEE}*$M3}AC@5c9J9EskrLOH4 zPNP+mrbZ0I@mak|)QZ7Ru}dMcdTaFV3m^?LzQ-4@sSA48;RD4CDSjr5$}*J8;+6tR z%w-v}{XU92Tr~&?%Nx;9jlKwPvo~7DAwJCx#WXdXRPB%Zy7FA1#O^Q)?B%;z0`aoK zvvf`N1eI9jXCRIj4lYf_*iw+JEYthJ@7~CVqNP~u|VVV^!IWQ z4UYx_k63o!iO0+i+sw=eFVh+)8Y$S~IvcSICI6D+L=-a%xpiheLsN32Z*_Gwdp@*& zBc^q|3705&x&hZg=ooj?f3=*1iqQ8b-D@uexxoh6kw|D5S5lP#RpsvgjlTQGRm2dt z9rni=yF-j=GM&;=#Wtx!Hhlp<Fex48@ zNItD<2T~g&I%H{wuGVXSnELVbht+b*LG-&Ymb>$)vBLhRq$5&@A>Bt)U=U4UwQpI& zC&oW~a@&h%U14}O9-$tY=SC5GLCKh zAVDcKhv7z7IrmwWY%mY6ICSPSPQ}=jYP<FAh|~A7`uN3dU`oqT7&$#f49Nz#GOANtZgE6@C0<6 z78DBOZ`_zA5TGUm#REX32`wp<0L@X%dP56-2Mm9BODU``a2*)#czeX~jsgNCN988^ zr6f-AMZdpMd*F0~F@JjNYVsn{q%6}YiP(3eLv4`g>HyZ~co^jj%L0fh3d4sW3l9PZT=w|JBxCtbDw8tIi@l z0n=c%-!!BynN`|avB%qDqD_-FIJ-ma^rc(oxE<|8S;ryai)WypH!t};9QpDte)63( znJPQ`Bgqd>AXATL$h{-#{i$=5A}c*D6dI;02mtK+0< znC^VF-s|*lM_bQ+{rTl;EKNG+stm;+Hq%Yu;}8Blc=m)bnngRn0+LQ!=6<)ke3aJV zOhCCf*8ROUg1r+WY*YgZtaDSn1lgNW>pvue`GI^cVB}99t0!F8dVc-DaM~EyNrXw^ zua@a&>3@b|lY_P880=oX+S9sNm6SA{Uy0`qk>u?<+tu)rM?nW*h9EVieF}?Xi7&`l~EAl|m3i`BVaCL}Y?0%C;6)Ae^|@FH0qSJFz?d>XuAf3~J$^ zlob#Gpdm4|cYeU8DLahWeFDa2{sm;qnpO3l_+9bcTquT~jNOU>>!}YL9maf#N7{DcdiKNKhqI93yEm zJ}gTXleUd{!T2Dl88ApOoZ>%{RB>ftx}zmwMT!n(WDk&io@7Jd?KP}f&bq3bsJnHu z4{)I;`bo=$KaA^pOU+Cszb`to6{KW!v+&9hU+#=n(8K#5V*Quo&EnU1o^M|9H+sTF z&-$RpZV$D?Av*h}pzMVA%*55l=Ehs1)y9Fi(Oo7n8GSm^2;- zwY?PN!;?OVzRp~_Yk#yRZvO7z*)OO5-ug7K$h^CHN_jitn=J15VCwrz1DhCr15@3* z0gmhAHNe#h7lX5vY(j1{4d8aUCMBzXxCcc~j$g`#8A93xWVLZaFimX=Qq%N;V+U_l_NDaH?W|haWtDmr(T%uw7CdI8TQCrViqEtg;f2^hVt~(^WU@WPZg}RleBR+L5iaJquRIq4NsSZmbEw2-2lNx zkKjSYqZV%dTlTV_!lE^2qU3sx)WUnBN!7su!@P>yanoSYgV*_Mjq0oEk8*X{skk=n z{#oM}@ECS|w#;q@fj3|iqxVMQe}f2(5tQAvBYK37p2(12}_12xk11mZ}S?dA61 zYEmm^b82k3$fjpS2h&MiDxl72_KKWN>Zp{4?Qd17{nclqv|r5nEx!}Y?wHxQyn`uS zoFwi|cEr_}pgfK38x<<1-_;sgGkmN-IV$`&dL!_0Xj!(Z_Da2n=)nx~hKz6iU3aAz zG*VM#`(T58Lnk0K|DsMRvPbUph?&%|nNSu|@mkPoje)INPkG>}xqc*HWYt+r^-m`& z%r885Oy+yJ>}|T<5f|TzVfktXVw{5;7S=3S%gITy1pR81%h}`#$l~8&`OMm%QQuXa zcWKEf#$jIsWfPxRyj4uWG`MGYkA$4i+P!+cpP`=1a9Am`9Hp$}K4zQvi2xiG!6xi1qe%v9);%F?x%aisu5(X`!g^d!&Th`A+tA|533CmJRSIZLv$ zX$M{Nf1<&}7RI$nl72?RR7AnrB1U%N!UQ|0z>2{;!jf8C3_UWi31UnH3Li8i>c|^G ze0xgN+U+!J>M&3AzPZ>R|1Nj0gOX+WH0$tDDiT}AsMX+}B-f)MdP&^c#0x{XPPD_h zSKNMss)sT)JShpekUWnCQ1O3ol*)m2H*7;ZE`t7sxTjw)cz98=)UX{deP8`?H6%;e zHdjdce6PoBa86+7xhS1b6{+syCd+3sZxyPXwfQ8Y{ znOTdCqv|{=%3I`Rjj=Uv% zoC-gsDZ2IMew0^(2L9l!PKI`DfYfWL;#=5*+cWY{e6t^qki^^qCNTbnMdaqog{7LM z1~yy;_inoMi`g*?8JWT=L*h9j3?VpnI>(7kl&;5D{bs6(jR_eBtX6%-mmA42$%|q~ zuI9=v{yqMT$QAyVcLQlA&yA~+wr$NiChc3Z2L;CZYU-Ad^C|nV;(tqG;5;Nj-EfYu zwj?#~s(vg0DU`H9M_GDB>!x5ulNQ3|mtl?_p!)ydIV{k**b$5zmmQP~KfLl?xMz$E z46Jk<7#;S9mZZD?GN)PCUiSGbFG3!!&TSPYeO^cgc*@-~v(M96%!C&KLqT9+7Z%M$2SD-( zy#MN1W0&r?Vb4-s3bqmPOtoKTy5U+0w#|bFpQ~l41qPT#A(_NKRDn|bZQZ1;OI#kw zF)nyLDC1Z|%$+`V0j2NyzM0G}=x50u@{awEWO0wRj`D{wM4OW$?(o8r_)ZuOt!iB% zU=E{;c)hoq{j^~Tv07xn`khoJ*o1ic)4P2ChYq8;{iYfEeI)58yCs*rH=zp4{^@tv541bh|P_B>O2Nsvug98UD|c#(zBzz9OPWAy!+@ z?~cpkuckf{&&dT2lq#apVw@wlt|@yjwcTulaA%+on&=taejU{PWyJl@lkI=I)^`-c zXedpU&w4yHQ1RSAXJA}S*IAc793~GxV&-;ee9I)YvT!{I<+23nAv@#l##l=*gL}s- zpaK3dXfvQ_Un?nS|7ks!x9G4!!K?2ZxWQNb*Sc35hQu_|MH(Gk_Umn3br^cP_VBxH z$~w^?m%`ZE+h{j33Ncdh5Z7MtiOJtmuIJKgsj@9nl zOlQ{5OB2p#eAwTq-@BmAtQ(OTA;<_UNwq9ViSW@G_0ldt#5y$TPdR7)CV8PfbnyPRF0b zrxrnizkrd;bTgn|}rce~i&qQr=CWt`Mzz-6;R04;E z^amnM-;3e%g5eRk5;o{nNI(>=n0bAU825eD1^O_uB} zyNcmk>=eXRcvS4>qR1L#O~T!BqedgQ!Ij&$M|$qa&wRdbg=x4J(+ zIB!IGg`!6!h)Dx4mn{iD#klXXei?y8C59Xr2&G%fJ{_0zQuN55$3v+GAX$RMo686n zELJ!|U-h8_s9yG+sIqbce&dmtVW{fdb%;*p{~)InR6gP$MA*yjE;;2cc&3oyNK7r|&8v$}I{xsT1}_qV zxD(feRSuRkV>=8Et;^kf_ZbJ75q^WAtIip`fT(YqhU+e!+JLKf@pDe@6*V$mIQFcK z|Coh}|K!~7r%Em_eYg24tV4mb7bWUS?0-^8OoIW7NxxLajBm_Xd3b+c17&{o##o61 zUX5{~K>d3+($q_NY!Z^imie!4v zv?wuOgOR5biWXYHjh+oLM^I58 zQRZ>u9QqLo5WJt-(QjE4u^}j!5rlY);(eSKWz^e`wbDzDSnt&@zn_mW&X+td);dou zUUY!UyqWUGH!~KNrGlDe^HmXzTaLm+Rpj#IuIORe5K>_ud%Pr*QRJ{XMDe;@3o>SK zj3Z`OC8fDCC0K@7E{e#Nc*YXNN#z?!UG-m5-sMQ?6NKBKqN!ziVJ*$%7;;>a!xwFz zXRS{wW6@Dq#*1vB_P%X(Y!}hnF@~%A^u@}*LUp}Tb!gf8niKYrm(ygi@=1odc5+W5 z!?{{z9T^)>o% z>Y9w27y6|J!}&B>q;WebNfP~3%5=#icIm5BiRa$g((`4->PMOwRg#}XDv|?WQd3i6RYsAA;&0Aa-+@8l&kLN+-xy% z2yEBAsg3?k(DPE` zn@v~?Lj3V&(ff;rM^<1fm;1nC^K&9niMdql64n z2oqLB#;IoDQ!ZEEh_WP)J9rd7A{Frw+C(yLdqqt;bLCpE7}U)-_+w`18; zh#;VBM02=LZeTw^1W`|l>K6UULh5r-d*w??%LFBsviAH&7mG{ zZ`s-hdWQRrbQ+1UUxnT{huC%Tot1U4phFr@J#p~1WO7d&VKlW)8R2%u+>~^ldTY2p zL}!(*E4GAsye!;8fv?g7PZ3?e3LybYbuPhr(%(Tpo_ROWXTWY?BGNsU4$>+K_v3HtGB zO4o15IFF!22rgSA5`&H5?JQ6mC$^9S(+47SftI14iSo-ztM#CvrTCwlClYQ2&`h;! zlgQGv6YI}EN#6;{e`VF#HI#%((T<~B3v;L)vJ>>d7H3|N@0r*2ZFcEpI`!gx@{lcw z!Ry^PH>AuUuP6qH9HNJd18tLk<>Szwpks!MqgSe1acH66% zq)ch-mwbiKi6Jfa-@nCDt~^~g2$(ZUK0APM?*NFea3n71l9OJY)}iVsqh3Asil>%; zrT>gP>YmtIVO&3Sp-Qu`mUcv{MaB*o#@+Dqo{KO?5n=kHKeb% zF;YZu!;WNsbM4C56}Nh;x9c+Ej^sMJPSr<7Rzg}`SfZnMM#7b2Cj5B!;Ix~*Gs}ju z@k?T2VMYi7%3+nH%@Rd$QTj^~3=xDK7MiN(m{l;z+;79ryOWIp!6Q8kGxY7?kaRfd%&P zw@}KxO#_jSVZQ*PB4@YUtNt`taJsDUa}$+%YfV%_-rn=b%bY6cDw@$29>$)NOXL3N!qj@# zOUY;m`?-HF%{r=lS;%69;SvNz@Wc>BH}=78R zTV5Gfj)AvPMU(D;Bxnl!4iKgOPUEh1!fdGRnYb#RmFMiDN5_xNyzZ+N{nMq34v$0q zHYo8viR+pp2Dqg-BOmz51W2Y;JPi@ji8*B_jgHQmz$#4yD;E4W($J`9%C_6Pf0tC) z4{D$YDf|zv%@QtJko=67>Y~ZWEprYnNv-g|zRhDACyeRd!);439%Y>K&gyYER%Chm zWTI&OQ?TOXmP0aHF|sAZW57|>C_L$Z8RhnAb|tkQ5&FwOg;zj@)ew2Wd2|R?S{;a( z?f|hRrSMBvaA879{|Pr>;MEx6w;1F;3X@v@NC$t1R*po|-u0f$T$Ay8D0z8fV^KRL z`{p!jsq6elnU8B~ON-KfRlg+rc1ed~aC_;< z1?*V=cahC?k%sg0@*zU2fR#+@?Ou+UHtW%Uic<%ViM@jdeu`Ri`n9?@C%`;i=hs{K zHk_PY5gGME)^Qlqe3MY59 z7sUh1#|>BDU4WHj7VKa2hu6TV|K4y631YpMC=Jgu+uR0RWb4nReSNZiW99KZ^DDa6 zKG{MSqjYAigWtf8K5wi3Vjie|;?mdWPlm0$m{*Mk_QjXq4Oa%_mc@5De~sy4ZLEEx z9n5)UyAcE1sexJ5fBCrlWyyIn5<)Iu8)r?<8%^4sNe)ha_XN;D$Gd@`4sz(+DGfT* zT&t7KpT;v$Zry)IVrJOkC{Fiv_GiB=f6ztI>#XbavFJHS!{0ssB1M-ZP^*vG_tl95 zwA1}$k}_^wf@b@1+o@;8u}mRCqWFEXE5^XH0gVchYNKR%pfuB8cKn#qpoMb1Ao)Mz zhP#9%W5SbTmNarf?xQz2+ON8*O}VZrq+d<1!Wq4^@BYBm!4bocT*%+Z$Cs5Y`UKiB zE$$UMhqZSx4X~5Y4%Cin2SO9^ijXONK2J*9bSAS{%wqZvJ8mXB*#0K;98Y&7@BU)p zm8d%*&_E3#zwuW_@||`WuekcFxj8 z)%oUh9Q5?H$wZ6N|3mqe7L7hq&Sxz9`URaFeMA>&Pu`O!+)a=OBEUMDeKfD}KoyC} z-O5G!jH`XFgsEDuH(G;ae!dCFsdvKUHClZtUW-IgS8Ft*0>UX!u$G&QNd0 z??hj@g3p8)<@h#>MYRx+L{(qtt>3p<*M*##j{1QKcAh7L??xB<_VGfNO_Sjx&kknH z(;nrSR^=21|D@h|-}~ZiYUm|@&84gZm;Nm6IZEiXQHW5Bg8Wy))!HH1zB&y)$J*M$ z?MZFHDmPaGaWUDs>sGWpX;ue2keV6gp>OZ%F@f1%WI+C>| zpy)n}Yj3jC>$XFrXxwU7Tw#UZ!Y5PhNd$&S+x#;y+~nqi!^YEUrwV0G_T5N$+T4f7 zY$nD-!W6;S8u+S8S`bL9T}0Wt^g~hS}UWz#i%w<%z)Ig9T9ds{W+NJDAENa09TgxGdo6)MjLnZez$I-tqV2 zNDHfawbZMz`&_i7(&c(vf8L`p6Mx=e9Wsz=3$jIW)b2c)b`3(Ma>f4?!FGgJXx_$k zzRL(ft`Gy!_`)_eK9tDXGjB4b8s-R{551ndyHA-S_xb*AVXHbjxhdQU(dT}xvHTE= z6qqek0;}dy6k&f;Qr@3uIP&6Ts9aePQ!vAWrcJ7cL(^;}mDLbvRlX4l?JP31D3u(Y zbshy9mWC61uZLwtO!k(<`Xg)J#D};B5^vcP~0F^7y_X+r9ZTMTcsmnl$jS* zs8NI~a1r0_WGSp5ayYIbkzutm0(Rbx)oDx%L&BN_gd zVaX6WsU6SWv)H#R9Win!Eqlebld6$))W*<|;}jUEosN333Oy|}0=cKN&t)UP?qt9P z9SczfuEY}&3FUa-kf%N=ErLW7GWG_%sLH1J340>TFQq=e2BBWm;*@#$*=G{839DA! zoPQ;7DN_;66)wjKl%zDEM^n3nqYG|=_BkbZ$|3_!0#ZTdmo2rLd$etWMH`~Bt^G#s z6X_qWpzyW|EBM}5A|dS!T0YzUw#CDS&k};FJ&y4k6mI^DQJM1}J078_(tG@=eQQ7_ zR@~ge9r%^jy$Bn2Ug_?3R*}aokK^oyW`vrkEh3#9op(6s4>AC<6euoyoDZ?=v%PbE zFZ4R<)SpoiUur=OYFzc%x#O#8rV`*UbEo6KvjS*2wyk<-5n+kpf|#;K-8`uJHk3+^PIq2wLQyJ&ChS6imR??$5I#|)swSf-P~g8|Q#eFN9ze0l z%tOviwXr767o(&{qFD1u?H*gs6zV|aW%I(=?Ok$T`2{s14uykFSVm`m3xBy zhh0w}E%H0HbR~E&4jS#ydxQ~#4-4zKvbcj_Rb@%qMAYM{s4zw?i70vPLgE6WczLH%dSY53ShL+z_0IF#zk%&| ziys=6=S$BF@~%6%A@fhHg`2mbNR{6BRn)y5F-p`BeCUJQ56Yn{zs&F8w;3OCh@)%~ zyM*v#B2g34cDzgI_iAH*2S55aCH$*?(xF~rl1UraUyv4YBt9KTZX2|l!6S!`K6>oN z4LR0wCKvN@q~X|SI$Hz#g%w z4{X{$CqfBVx$F2fuVC zxD@D?7pOi_D_PW{%>9|5G@C6v$O`{5Cfw2@!A1!0@01^YC{zQGQ3XniVnA*zjozlX zh@v!*C&-`(5gWI*}Lkc%yXXEA~~Y_iKs z7}L~xK*q6^N2LZM1#C}fA#F8+(P~~cMda{vA%YK8(o^`+jlDAW_`(*4MAGY1&(&u` z!OVM7@^nw&yE_0SDkL2gMe`86$b%SrfZPs&?f3$@l#~HAV7(~7V~Cuu@&j+my$=WV5C6?{uZZChE5VeYj$2rWgGeT~r=no(XL z;jtb1I5LSprh_72^Gx@cpkM$f0f4}R9sLkA3Otz#{pSnZK!&7Hg&S!?Ek&@4jj(ST zh@XDIMl`q)My7Cc^Ce12sH=R#fOIA>oK@p_jpt zheq+K0SH?J7;0DxB7j}d{zpB6%{?nOR1rBW!3s9@62eCqW(^)ffJfnX`9dN&$TxmC zgCw{XP~tgO_rrUeHU5RsQuo^18egMR#!QM&5phW5*@#2MAOe8c3Q$^v#Mxh1os`9K zz^;@%0UC9GAy(1C5xgiV5Woxa|CKvZ1wL$F3nfJO@SRc8vCh8)tmZ=2vnpM0N$;=Y z##e;@&SK-al)LykgXHM7q6~R73ej7{IxAPe7P7qC7*%4DjJ<{mb~#B#oTvgwdt7>% zAcU|j!2?6wi=g=p2Xgmir&|JdvI_kwz>SeYq^b`ms^(Xx^~>DW2Y4E0@xfP)+zTt3C05?JuZQ` zf)yM=7AwgK2gdQi9&k7f08i!!(s1qPE0Rg67t@?Bg0?`%V`?|r3jbz9R@?TVW?Hcq zr`!`MQFjh`z`P80C1|@K-4$7z;uOXpdArUy`fS`#5@L%>abpuGtm;vZQU(-;Cm zR$gREi=rGIUt+NmzL|!;18Q(K;{0k0`&?cQjpMMpmZF=4)RYoN+!LDj210plHkfo2 z0FJ^$_4)!=oS`a5p#J>*xd6-8L`3j{0;tJpzjM>0>(9%A5C8DqXk+;D1*~5?UpPY! z9l|`QmnURPY&+CBM1(2R*u;K&p?l6iUtsX`0dn)XQ11EI={=p_Mkc{k;AGQ-FM|bH zlnY5k&;UG?%!kBL1e_xUdcA>Fq>iYqTvdGSXn_5`2iWL3#EX-x{KQoEr~92hgf0o4 zy!Tir0ry`ZA}~U6A~L>lQp*cOxB+p&dX@*wU;Jsyvn;~96_szIrLA)EotU`*_XKaqF-#6gSIqiEg1 zw}hWiH8MQhN7m#Ye(O!3I9T6S0ENmYZprD5BM!G-Bl-bEaiFj7+vxxb0VT4_ zp_5>14!Dj0X~~0pv8?~^b%o3yZ$nJpkGzU^xArs>_yTRP&;~0>j={|i0MdR-~aiOj}=%6IT z!UHns4Y7;^S0JHKZmuo6IX#X1O&ejz0XMFJxit@Vj|MH+jyf=u6HrF zqz0DW6PbaKKTGqu%RPP|>39J`hz4guJpmBj7z_YBVR^8C(|(#F;K?5@^VA~lSNaqn z#w_qvEaF@Dz1>e;4nd`2hm4Xv2A9>;Z)X$Zle(|{uDf49>RHtq>=7y5cO-U~NR(8_ z9#*q$zjiWczku@4ghJZC*L@Mc*M;IikFdbRZipWT;)j78vH}w@{FZbl`ngfMxXA|1Oy!UlIbZN_hJh28qQ$1l70*+^imgD4{B>50OB*8V?7je z*wDBlhHyhQ5=M&Qop`$WKl!BFtkVz3`(2IYa)X z70`)FzAccxND$9KCLo0x6OXgGFtEgtdI~Da6CjQNx5&c^;syQj2RuE7E3pFQ$^s!g zrP~WipNqB99#wEVQNz*WQJz!KU}ywBpy&2Y#}5Jj^TLWZp~n2xHfd+3KKJz|MD|P9KzwnM&!)K!azL4$7<#*j_N&UpP)P?l!EUb zAEN8zc8|Ax@(ap%C*${Tl88yygD~j}(6AIq!=o5B1X?uy z*%{&-zx+9O*>vftZ{O9L?sq3h|DeZa$mC!pZRx<Mm2gDh*d~}~m|5&VH#(`I(Y54ea3F8C@Z&m_PC|b0zac73_ zE61V=Z`1+4B$kn?V<4{kbeqn^kGr!9J@-bzFL+i9ote?;UhQlk@eHS6{~4HdQebj{ z@1%{O4te#`oF;@ul)A6&z88LR+PaZL+)g*9bGlbkUEz4>DzpYU`<`|HQjn#Xx7grPnwv`C?Mk^KmVqm zJI3)W=JZ~^x-Z8`?-I=GMpaeHysmD;v z8}p^@y?XD*Nuqg1@Ml{p(gz;Qeu$Xt#;v2V0j!UL)&=w89WwbD5=7CD87D8jDp;R` zYGy`ES6y3a_DRe4+Gt2ew5h9#=eoHk){*n3zMmT_*H5s!ZNr{RA#Ph#&Y`oG24Z5+O>*77&@0P1}9U z%czu!p*2-CA|lj_142)JI$*Ofn@)Y7+~75|v(y^)1v1nt)9{#Pcg|kDL96#nvtHjX zw;DZ-YG>_qt&O2F*fC=hl{!S`Z8;a2WG)SI@z;l2_fB5|oF8q|R-t!Fm!~hz_js`` zKsD+<^_`v6<-7OL`L)-+xT(-BhZ2iy(Mj`hZ-(L1VOVh z-=BpS4Pe*NxvvsQS}WyD0}(f3hW8|~b6z&lo&>gPg`HGkOvXp=%Sz2+p=Pts?s)c# zMD7+^q({NY1Y_d|@Gq9YlDQE7jTR|Yow!2$!e*mmmEuCg8HWXsh{4Ocv;W@K#4vBj z2ihoRP+6dQw6kt*cqc*yY?@%X01t-QXK%AqOk4|XeW^z?30khE(a)ec9yBOd6|9>& zYM&5XHNJj2Ia0artbDCh>~lRU%RLNOZWD<9L_PZ70!TW4$3Y6N8h)Z*iWn%G=Pfy^ z({2r)D)c-k3(XM9)b=?gi8gQ&LvJhbKSJ(7$~5@#bp|yyqo332Z|A3HTOUqCS5ki!050f?e3hL(PoJ#|M6nlm`;>&8S7cPPCfxtsabsAQB?g! z@zDd7s7LRR%;Jb~>NP}^r0^(JO#|m95Xyxl00mnNc0yJ>ujo~IQbp^rTyD^j=BgP! zY6pT8R~1P&uzE#fzVUFn=woUCBjdr@-_@FK`#S%CocpHT2{+7ZIVXJdb3f}sB%W;A zhcQB`FMbM6|L;Pdz-o22Y+V!_5&FU!>G7KVWD+O6G!-ohvgp;p7DfImCl*xfx8JIJ zmp7z{z%!mnn?uy1@389vr|F9At!B=y5z-gw;<#M>+hV~`?a(50JLQY>Tj#8EDBD%R z|MZ|P9EO;iFIaf6F@zJ;EM#ej-k0a3KV%$*XqoHKM~%+E=x;v;IR?^d0Gx>tz2R&s zE)kil2Y&7DERatEVv#_EC%RtYk7Heby_;fvBQt}jzkon|7{Si$`+ zos6oKR`2A3N;D^6j!du$76{j*oN&SUjCR+=otUy-04j7yu1bC_0)>1CgnHVEJ5jxr zE8?DU?4^Lt(Puo>G{hpus@Q>AKMsP!tza0pRE zq<9p4&snDfsnlJlaaj=-+b5U`0tF z|9@9BeY>cceQ9w1V05K4vPnrTD9FKx{79v8+k9YkB`g%K`^NhBsPMtBA5;?@4YqA} zLb#m0xol%>Dq;2jD>2SC1vQUF;1)*t7RADH*MTOtW}& zscva8_O1;9BxVYQtV1ut?JsRS7F})gdiwhzqN(*zR^NMsx6P|Z1nWp&G${LhhG%1q zhv3A2=z>}<)F5X;Q1A0*7MhZLU)gHd_5Gu>Yx|Z;1mJSz6|l5p^kH-|8ze}kBE*gW zBTb%tacU-)O*J3&V-i;sw>SQiRV~f3gR9FPyWW&~)KM4AP4r4IWYj&b*C<1Lvv_m#JXc~1Y$ZRbeUCJk= z+wR6U1#(04nK41DbZI{?peV;2WC)4mf>FcAADs>DIWH_el_6m3^`%ekhoQ;^53mta zEhQukOa{yrpR_36|ctv59Fu*d8~cX0$*=Mq)w zkPkvr!lqD9v1&^Ifrn^;dZw)+mTZItM}dX?4$voEI$(H?#hD^MJXNfpaa@BSk$&5z zVE&wiu&*XdmJp->H36>O&m4J`i6Nx%RjZHQiaK9QP~oUJc0ld93cj{tNkJ+u1ko77f64?fOnSJn^9WVZGdSic=@4vHfJH*+?0Bd%LDcsI2|(#~>U=DKV7CN+{3#Iv&JH4q z@^tx^2JvG_cPgcy-UO#zaoZ}<3x&Yjb`i2!*>FXlE|S0)JNp?{&8_bc6`nJI#dNa3 zIusD!RkZLfMH374LwoR~A;$w25X}Vo|8(6d)`SZStL%8l?m3dm3GjBs+D4OO2`;)! zs@hEMu!Ed`Ie?e%&d&uHmB>StErnghYJVvFc;#idW{1rb+breW?hVG>OVs}ne%`!ll?NjX1uE3N+LkysGqqPWw$X|MP_(G3-_9~a_V zrx(eDDN7>GnEA+FN_-pQyu?J7tF2WJqisDglw+*|JYD)qk?Mt{BaDA+gUJ^ zmpqdTE_aD;V~6U$gzgGQJwdCTmo6Ry2(*$Ab{+yz6o}pqP=R24$x#f?b&q04L>^Ef z!-k+?ap4ca8Pvp3b?y=V_FKHi9u*#jMFDMXk~P?%Yu#SRD;{SfqW&J$xxJ7(s|fr! z06=rh!@;8X9gux+v~4jA!-OU5h&BrwIvYSl7C;xp%RHGdDjM;*1AdnrE}mO6i!SbH zK>j6OeQW3puSsOi+=d4s$P@@>2dGK`W}08O2SGg1d{H$DX1IU!Xdpi{-{9-KYt2AK zG$_*-q)Gv)vq8KN2whhF4f8V-NzE2aHIa4gD?p8Zrf$j?0Yq>mx)MA~t4XK`d^-rN zhX&J(!tlRxjstIaQnD^Gl5e?MU!|uPaIb}*6PQBW8#s#U62H}TaNmB#3s_W&z8LM! zt-PgeZo-*W*#s57j)MB69%tJ}UmQ>Y{_s;If%I5lV_Y+R$X@~i>Dg4^?X2kZ$%zXC zq4$y&R{&@(kZ&LKK_8@#20zFJwOB*&STTdl=$3ZP1YC5IYZ&dP*?%=qlka6O5LIn} z;)Ljwc@AoxjGEPoS-Fi|A|uG{{1<(%!uz1{#b`+^P?4DxNw|AUQ960XB6?cvFj~w} z3#^B`{_hybnCfOs2KP>b?W=i&7Q`L^^&mre4VNSU?%J-zKYemx^B_F=9CFUfh6=in zrD8*XxR7CIs-gN<@{ab2`Bp0JvV%e=R& zq~e0W5`k!^tf&(iegOd0p`s<3CL3tTAv})lXsip}A&h{F9(xU+Altw78p04z@vq0nxZ~ei?)bOfn361A)#@4=wrdRG-v+1Rkl!qk?Iinr(usCni4e<|LB@A;?zEB-3DskA ztz(w05DzNsxPP**jA7bZ-|Be7-4z7uTuuMt_&|^Slf@wQC4sT(>7o3IvR6+&%& z8G_6f7S+BZP|t?PaPZ>*!3FFbj|w}86)$+_{WJ)bXoj330k2Z{0;y2PbiPO~R6ce} zQU&Y|gVu&aPUORyu|3a{Yu@-iRmrHyeQcHcc>2w~Y3bLOB>2hoic=py-aq$9^j0vj@@DT?y|7WD?bxJ_C8K^DT0 zg+_H3wQj6x9Tpl50Pd2PUdAo)ShHVfpkF zyG4t&=qHwU?CbC4Kc9c%Khe!WKDKlh_~eA3DHdeH-914vJHQAR2R{;@`E|8a97K@< zjB4fctA^CN@=l7$&`|vNJn9|c_SHMcQ@f}Y9O^xK@$13P>TeeBE%b*3{KMM3{A5+@ zi6M{If)@$>B(2RoKa|7b+wcPtpYRos*8NGmn*x54`6v$1eU*#&y%Yo&Mn2|_|JJ=d zq;tDVPyD;zM}FEzfq;OW9n@Q96}$+^ML>)>l19%#7V77c4wnU`17Y2=Q3TvUDBGK;D_IAA*SG$ z-6xy;eXDpq!SS69%fPi?7q|bM6X@fCQB?Sg*ZgEEAMyY}Wj9=A2Pu6?*NzPT{%BhJ z&XAVeyX=lKH#}xOms6D zUO@d_z~O&@6$qR_j&O#S28Q-zCi?Pg%$?uH`+oG#zjuGqYK8A7d`0jr_V<~`6Ju1E z1G{}%6UaD&Sa%bs0YFa*z%L)5N7vr$JlmNwzA5w>C%CrrWR`*)sYY2|mf2>l5-+3e zFKfev55Bdbez~vxWPbUzGY9Bv?QikIAfI&9ZHeC__eDc3!kMVgcVfRkRO&A*wyGUtTV0RoUdSZqjkqXt+xX6WT7h@ zt$v?W@PlIJwmKkq1ap9{*bO-@Rjx@5?TJ>=u6PjnZtU@Z@7?8|_<1cI9e=&$zN>pS#6qX?*X3V6-q{FmYPezDK5nS_a%xU`WvPKI3(I`Y05+i{xS z)Cw9WtgUOskM%|0iEM4gN-=oF>3n(bMuLEsR%FO!U#(3@zCG4Ft0JVcY2-TWZPRV- z*lO3yYVk<7?Caa7*Eb)28k`!!ZkSHT=swkQyj<%sxi)(D{G8LV_Fr?g@D6|+@x9_0 zvZJ_mT%*OVUPu(Lp>TdRNZ|HLao@0ne@O~NNI9I;U+Vi~o>6P>UX-bIrc+bhj!~Aj zQ6+(*hbw;g+%s}8oU(mXU}XE-rM%WK)9D7f)UW=MT6(??+-y^R~mYF5LK5dAZ`+R-!j)|oWp?^#}LWs6Q`;uY6UJibd0 znyW#;)4FQ@xll7~;59c`U*=1EwskFjbiH|cMJchc``4|e4;Xyl2bheP&H{_h%$9Ar zF%3%J#drkvgw3SQ^+dcuY%gq>pLx^aaKpJJ_o!@uSt_4Q%q!n|?8amY-)zd2i3fD? zn;FG#QF0*DgYs~C(6g}u<9^j37owT{(DYb)GcFfWdAH$gXZ+=wX4cWomoaztoO>dD zkmgopr-I(g#IIf&8Ll`pEa=vQ+=GTdla9NRl!{ag?4z##cjb<1gt^YC=u@<;N^*6| z_qUvd*AG7;Or?gdpJBPV%AA=S&%I>@G%8GDphM=c;i%fh&vz!xvU?X##SfXCpHmdo zz3^=zo3j0$7Eyj*8dAB(@YIy9P_Q;i(XH>fWl4gc`dLyhQ6xN%om5fgUvZl(eI}>> z%J{#Cb+>$D_mpwQ@U^-t_phFUWgLiUEVG`?!)R^6{5 zEu0qIsJbZ6%Mnh&cN9JsE5Cz4u1ShWzsz_4rhdPt4aC6;8L)Ej*njhNpRPIOna=k~ zKp9F0{i|MxABvf(t>PJ+fkyZBLbp#_Nn85)7xug=#Xn49eYbBut`gVay0(CN2rwh~ zYSlEg7R295_$nqT(dm!Kt&PrWEU%T9>(99`=Hskz5YZQ)%AYJoo7x}`B40e#@gu!1681eWD&#QgFyY_5Dsr6wQ35DtmwOU~zP1m)-m<>02s~Lx=oifIZ0wsTSd*>a z8z!88#SGmvklAHQeZ8gmJa-a(rMxcWn6dfvk@nH^mdDhOeDQXyi`S1j>NH&)SfA^X z7%Ze;&s0Dw@>!9gH}$ZzG+G|6aNWsYRUMfsMQXaDr06ViJ9>UUFa6yYit$8RD&gv#V|ZC=`gi= z)2fAR=d&CXN0J?FpwS`YWYs&dGQCr$>Q$d8 zEC}n%#^)P2*%s%l@8M%FZM%QBe%=#lb1!Jm$I{*1e@reZuI)lVj$aJilDmRdJ8YZV zp8dEKC7Q?3Rn6BZ&J#Tg7m6GGBEz9%SG7Ku@q6abJN-Bwpa=@{XxgGpEX{j9x@7?sllV&&`%&CXu}vHL_Bv8gPP z2P@Sepp^l;Q5!>bSnb0|9*_eWe^Evy!gibAYGQz!_Sd}Mkwp?FIjbmjf zB86k$@N!#!fJ&yBad(sTbH-7X{EEUhhgvnxPs^;Rx!j7E&f(Y76Fzt2uzC9B6MweP zgpA=T8celb`3%_3c4unQ)7K7BY~e9IKOdh7%~5`~Kee?h0Q~jR^MJH{zKZDdDIt_k zwbNtQRLw$4(QH+a_g6$>j)$2%ZQngQHHwV}nygfs2t{9f?FLi4Vm1gAN;=VN29dt2 zy2H*qL<*Yg7*2tHi(_6Nd5w*KVz|K>d%ZXMX0RHNDf<`a)Fx}6ec~1jct-zwR=GwT z{}J_f;W-7Dh8&gN9DW`(0Sfxqmf2nQ`%OLp6)i69ATw5;s*Wsr@BOw)_nZWMDeO*o zVYl{$LFA3It?#ai-R?$Z;p}v0f7R){r{_3q4Ju~nZr^{nDn7XtCzJx$ZS|f~5_TGP zx&OQ36agGFaWwutZY9@}&(PM+deVJJ)CdfcFSfs_E+<@yZEK-c{QWYACK;fJAOPgZ9h zrJj|bGP2lzYLDwf7=(v#n!d*l+XnDdk95!HtJ#f{1T|CoAvQR(yEnZPxY3;|WTY{lIkRyPnn%yQcTsX87C{qp;_oj)M(lD%k zZGWKL&g0cJ_`5aPjYhVFaxop9Z?n%h(nxg}Rf>s{I6&L7)5c98NYD+LCz@=qb22m{ zUhr3=SS2?nw7V{dc_fL+*GFsUxF%IBW3dj*&dKE?F|tnyS6DgTQ)Ue!%7NEET50;z zgmwlIY$_5!bA`|l0HCNhZTZmypK&9>1tS+FwG(C#4@Z65YA`}E$1n!`rNsoYp5rtA zh#Qh8MZR~)^r^_NqWH!Vr}ivPURDqb#!H9~D$gRSm=)&e$S0Om28kujmqp}ibZ8jy zM`hs4>CW3U^(vm0(JwLzKr#WzC4d?xHFXex#0?=>{YkSXI~F-dl*Ia)sU8}ZmINC! zLY4;$^5udNqr6L%;^>nHQi}wwf)5|0jXyGt$?!9U8Ro(Uw6f1|U{#K&LecCftmrwO zrd^>CH&~dSQ<6S<MrY*YA=s0&fKHVV!Cy)C>6z=urTv z6(GtU%!@U&5Y5*fGuKIl((xHbMhRx#P>~jsbw7bMXS#|hy_Wqwqwy*gK6&u7M`c&|WPZw`cPeYErTGvxj`T3z>?SI0Rv zYo>wA@RAg++K0LR$~uTBxe-)7oCM%Yn#Zedjms=#r;whdGzu3=PP}69#gH?d8|lhi z;Bw4}2%F0Dmk@v#JNO*9Db0MISFFe+MAFeagF+fK&bpZo_~H3q4Go5MWE+SL6HKTE z|C8^S9STZXAKcG>A!-WL45evoTd9eGG$ipprbaW7d12)+%4pU-k^pmHxT)jFOs(*_ zau&UHEDzw~{k3!{L3n4hz z+dDgn%NuCtaVJ2C9ccs)pO$r`g-WN4L-lYO+nE$?4^R9@Bdn%_S0v0Z_4K zs;iu@9E*ryo?yW3Y{RIx3jp1A3!dq75ThK2oy;zZZ5AdQ8OB%qhIAj`=Q4x04=M>` zL(L*VGUTa-UWZ%xfHdR_SoIPtnaW3{F22j*XU&y9_dAf{_$|&p8l^FRrV4&|^PB`f zvN}WS+8IP8d+vr(c}I&)CZPVf@5poN<{f|%0gO`=pv(&(jdCKk$}Y#`rF&00JUikj z^59Wxrb#5|@w?@e{D7_cB?O7eW6BVw)PElfm%igMH9cT_4*%c&67y`3xd=~QTT(u} zi0ABo1MuKABn41<9kBd70L}!!0Vnw3FB*_EL=H_$GQ-&*uWy3X|9A0SkxDvQKFBEN z`|-D>mT%*)WQQd~bg^^<{CJw!iMk>31EU-WHwWyUw>(rR&H{qYac;Iy`FoZ0%xh^X zIj&TY7Wo+cF;R>R6yBktMyUeaCEj;^fG(Uf@?1c3-k7fD^sD5Fw^1b;q?%s$RWwO` zTpd2G*h4v*WlaU0^IyD;$wd-g^EPq*wF0PmuKss?t>+y)#$!RO5g?UJyxD8ku2Pa1 zoacpJS3}c}brQwBoh1lB;cDt$=Ms#ww3h}bj(Z8OrXsOGY$KJ#l$Xv8q3kc(37gCW z+(6Y!$xI4XY?oaimt5dLZ3%SDzqX8=k%nGs$}uW*^OWk3Q-C(EY8zDmO%rbfGUg}s z1MZo=nWb}-ei&S?Y3~BNlTI4Lr5XWZJ5>H0s&^ap@8dbI!gugU0AD1vws&2N1NJ26 zQCf@a`c`C{R(^J6Phpl0WJ@B`2X!U6ZiOT1_^(G6D zKDlu#e@R#pWJcITjFLLIaG4%K=9Qq?dy!IlpQM&a--n9g?>(CVGNdUd?vDacaG((U z)!3xqqWu~|(pzEYle8)Q-f57KX1>)G>>qqaKa8%111U#>u%-$;oo$@Wdvd!H)@ptOa53 z;8*IhuNRHVy73wuoBSEUp&kSRM(5tz8|NJS zhoQt=2h<7DWYK4^I&UMILw?R}wO_1r`0aoCL#Mf5oSb{!*RVYPH+ipQvg{h^;`_S| zz1-K~3u60o{AkL7T>N%9Kb~kY^vU>K&vJjDO2g{o1dhaKru&} zz-9oH0DwfUJKRV-)5b&psK!?r%{PP-WR9Jg?SnJoiv{A2{P(h}d-(X**A+q8am=h( zZIL9ckT74Aiz(@t8p*B0ZhE&rKiU)|2do0w&tMZcVO{PG6QFO zpY)?NtuBcvA3%oIR-cM}0pO)K@(?!>E+zgh08Cm1%|~pHF7Y>#rK)L)to3_YbZ5r` zUV^jjAJH0DXqG<-6G zrJnOnzMtdLSCo82@9|MhD6#Q;XWJV@B=9ZltI^#1l8qev(>WA@hn}sAvv-zHgG+F5 z$!|9TG)ors;b})=oad;uZzFh@j;cW2zVEkP4G`V|Hr<4+bw0C`n)sUJVw0wGSyVR3 zbP_?zPGU;k<(r6!E&0gI&bkALx(bqj0~LnO2~&W@cd4gcf)5Je$&TlK^NwE;*1C8# z5ajY5&uVCoEWStVMlhkOjptP<3I2MisP4c;c`6W{OgaCns~mu;rsuND1Nbmi3$$&m(5~n+ zT+5`HtbeuY9dbof?0uQ&5=Koz`(r+Up*Z5iE^?-s>Ci zl$0;sX0L_JG?zwq(I0oul<9_GA_Pk0G`-!?)*!pL2x*v>BZW%^-aI0Vr|RuPFG+yI zW=YfVYsRnhYkh3hP>GXfnBG-4jCa18D9Y%6bOG8H#~~6_?=wL{$@^>)8l}<))ikXc z(R)J}@$ibE)fW2f!GHRn^)xf_w4G7?xtRCD10!tlG4#rFT)ib7CPo-Vm&27vjlfJB z&7B)3S`-NiJ_QSSl7Q|k+0o!&D!KMJRK+gC&57S$#Tnz#U6&zz7~LM6zIR7_suZ>P zivU&<>;j_vaBeiS&}W91Ev?RBN)t#cn~S;Niqg4w@b~1Ge!nN~ML}o&-Wu0yMc#s< zHLEGj#|wJOm_&XJPEDMxtF0%(pfmm$e!|wUkapFBBt+jxo>?GdxmRa8pFr9|P})B_ zUjnV=NCc7)YP|*`y^iKn&k*5TI~iyvv1C4JU8(%g>~LmCPY4bA(r^C5jI8NQtg?&o z%w`8%%-*q_NS1IX-MsKcjx6b8=0Tu0Vd^+^ks8~RefrBKA!Mto@t#2A3EOW@$|QGE zrl>tq-&W8lR0ZvGaHMB~LjeC3E4m?ki~tfzrQC8Z;S#U#7(oDgZ1`yJYjaB^wj4=xU%2KTMg`#PV6k82KtfNNXrY~^#OYd1hJZ2VE zFe0o-i?y}c=4^Yq?Ue+@wEQdfi4Ar@(_r}O_EC+8j)vD?EL5wm6&4F-cNXrnuJsh& z{8(<*gKK*?NBGNDeZkyMup3wMdBCK@CAjXVI{8)5VhciW9ZCMa84?s*JF4WotXY2v zg&##i3f?3MK{7<$2rIVGize6l%ZPXHlVWBC7YX+bsug)7v`Cwz1n%HH7t2foi4(R} z485qSgI_Y&t2S=T96?XRiZ$;0tGc;`$Wk@VybVxsOum z*vF^7kA;bHPu|=zv__f(K=)?|hy-$`ol5QHDNfen1m5JmZX>gWG(@kiL70uI9ID;z z6O0rA=Pjzl%QRCb)(s7zcs5X!2|TIA&b_W%8;$99@LG*Obarsy>?v6}%Qi=$gR`8F zT>D2#i4FIL)bC%`Ix#Rw=orv!>CDvS?nBl3age{sTo9VVBeuCzxFZ&<64{6DXXl1O z8bMV2(Zd&^I`1_jF$yhI)v5@7{LXEV1rCIEvSFmSbbw^$bAy||iGpJrfdy}f8t>hJ z0Z8zvZ?&h4CtSO{wc@evX`4DRA9Q{DYs#yFTwBdZS6WcXbOM=w{7-M`(=OkGsSCpT(*Dm9oYmVx zTroSFy;{`|(-)HhlV4_AZPy50-0_f`?uH#Aw_mb_D50;xp?ZnCsPjx)nRnPLG;SF- z((y#2fI$RQ&=qJSsf2RE65V3h;7Z#rXYhwWaNs=)hMW!%g{6tkkq`kp=Oja~+Z&e~ zmL`V|l-RY@+y0agPIagDOx9*Bx_)47&kJ@FcAn-+0y9r zGG?VuEC&Di?1P(?Uomv~(ds5^ zR2XDUeSwZbQDj1OGdcp>r| zoy;xgH?uGBYwQSQ@o?9)7Sgm#Byz;{93=hVN&zKnX3`U ze@ZU27sUA6>_5R~8z2Mg@Ta)(44^dGP?GCOVf_4Se^v}VQ&isCBvqAiwW`ML=R5GU z|L_oJ;Lqb5-kj++n)>a=je3oIF_|^*U;D?v@$L5-)4d4

4!_gZZ_ z#5v(lXVMo>#a5k_vDaR=kr?q68B`W9$OafSdEKt_nzNz0_;-A=fYwT~o@ zx@dBzsyTTn?CJfpIsh~yE!yQ(K6@ro`>A|oY&j${rGKyl02ISaJ>gwS#C%>HyJ++U$2*nCsVIaJBQ6wL}6Ty7j zm2sXG5_U|9UzBg%8L{i*pN@{AFF9OYbuJ~x>ZZo`JIRL6&Yrb+j2r)2_5vCUFC=RI z{F=zGc(MPA{V!CiPHPDHhPdlJ^(AXFd134l+?&^v@i29oiQHu4$zGCLUXoh%l}u%H zJ>k8xv9Dky=cr*4#}R3ahjK&(;~zXBe*j}=;$ky<4KzR8HiiSY|FD^(1u&(GEA zKhwz6CZ@O$`TXj63hlL_*&EJf6JK+PRMf^>y-|VG4?n-+D`NePROI6?D{@$C__{i! zIE`%ZNsK@;0T2kPoO6a_qmnw`m-yJfF?f zrnSESv1ik>*3NIjBVL~Q%T_|E4o>|W8CL;x5 zN*$1IYAh+Gi|Ng9x2gYRNd5>pKj)Ph^Ipu%oAL83sy*CJCP6H~^3kE%<>}|WcZ9EN zwokq_=^k#3E{ZSA54Ss*{H}H83-gli4=p_ht*{!kU+)n3CD~CDHytZ9@7n?`7pJEY z;E!rFs;ryN*?)=wTXzfBx-p;4DY$qN^`HIM`Dd)hBcate;otCw@~$hfKf8R|E(nBM z*1G#w={hNL^jNm-C~82ef=>bjLJ>kyu%MwSB5FWE5KCxM1Pus^JvPLG zA~vkt{QmddUF)uucX>B!X3m*?_Wph*^ul-@>dhNeCx(e1vt8n1-`CsGBe)E;Y!@}V ztOi#XSu+=D=A|CcxA!qc)2;~5c!!%8$-vU{|Gcr1%e^{N$*s%!R?9`YUkjYV>O0hn zB}Nr0V{H@r1{bm>v@#kVTzz74pk>fSHIAZ~&;nb(S^o-vX&oBZqe=Y~O$kMH(;vn7 z(3?Bau%+j9{RuiaN<7H{dO z?l)91(q3oNtyXnED=nYV(WS3$=rQ;EWrj-%DFUUvk|L8(*yl@DzD}fcB{>(q1$d1D z?0F^*Dai%F}9b7l+*z zzIS9N^U0^;+uu;Mr3Jb6__>Rtx7Tn8ha0g#F2FH>&ZkmfcQV3v0qWNkc~6^wrBM8@ zIE#&j-qqHt{?rx$H_IXGee1Z%lX@iv7G>EhN~?lLOZ1et>W@|e27E)D;7_W>U6W9- zP+6IAOLejc($1OMmU^^1?folU_37PDx_03SqZGC$xz;IRk$ohlkx@~;=|lvDPOGTf z3aNMP&-7LrsVh-=`)XGHjjzB;O3M69G&XI}!x2zpm*Jx5B=-xl5n zKEHiJ&EorD_fl1QVz^09A7yGy@fl@af-vByIMZ}fpd(g;v^ZKyoE3Up` zCMi(&Zo2)0d|k#dztE}7sBeM^q#s`2oCjRCf|#0|Fs-OVpfI7mjU%IW{k43s%M z8bm)++YU>H)%F-O0AA`Nin{Tv9-VRRSKN_eEZx)p&_n(+peSZ##SJGafgR`qd# z@vHZ#ZuNZm`qfl=!RN5b4ec~{k@Z=5;l!Fs1?u=3a6wmW{jdFQ6a7PWtE^o^=+DAK zVTQFsyREX%z%JK@SVMA=cF&8L3N|5=dm-!ln|!qw@{PPK+iQ<7YMtmCJ=Uz!XraH# z87y7{%Foq!v>m6%9iVmSt%%pu{)?HWPMKZwJ@DYq@WML3boJ(zM#JR-+JQfxZ>rjH z?D?dE3Hx%ddvSxb1_REf;-WriiX*c0tOLAs9q$$ zcLMK588p;+EULfi&lEQkt5UMsjTo7{idp$)=kI+=#GWOcJ_gY!;6*jv;oE@W>m+rWE})WLfHpru z2{C|qP_&>M`<9&mjpS+pht~$qqe^ns+$iVKV+Y$Hs;b8Gcc6U3 znATUh&O-$jr}o~l_9j10QBYZvMNC`N&3FJ5!f&JnebC{+=3ncGb+$7kzhck)~{uj|52^Utfo_Pdes7P>)48Gf0TUKfD9y1_>SjRrua zm`jaX-4hkc-Q#kfy6BbbD&sU%mdc$(?d3U8d*M|X=6@Y7BPs0ylsC*%fpjO#W|=ER ztGW%9a2@%(6-2mnA%EKX4Br9UBzr`0#1R*OO>@TN%f38%EIw{5Xtj*h&?=3(-MT*Y zRCjVp?@79-y=+A~%#VokT+f)gWjL9nJ@)>d<$(%>3dx1KodMeVw1PK@P_aWM!VVQ% zD60Ut=-6+k*cmm*JKQ?GUaQgBD{=Zl1>XS(8F5Q(CwRy+RWH>RRKj@K^8sn~oZll8 zsj8bnk&((k6&u4Az~*5tl#O8=y0`bGY7Yjvh^-#-wiRwueo=+`{Yuvo;oxXfxF+X_ zf9K6G-EZw5Q=OxSvgnrbLz40!_x9k*fB_vYYbXVIu_3-!y*Va6R)f28{N{G&DvkiVEk5_x;=6U+51#Ex!<#6r&w3(^$YU z;V|+{|7`Z#aqshbr;bq9soEWq;vQn+pF2SkT^hvTBP)$Z2yRq!gfIUd$2yQ~L6Qv_ zSR`4`yT~RikKIGpW8N%QwNxhFK0mU(VTqWgM>1{mgWBqbjP?8QlX70{O9yu{V$UG& zN`9oiX&OhDpLx<>4PnW-nsFQOTW0(7_W>Y$oP_of)zCZGRc;ZR=|?u6o`cc-bFXS$ z6~08=+t=A|^)JKl?fcqx;Gu1#v3h$6YQpoEqUgn7gKjwowPL8yj`j%izL=#nW8D;J zvd0NBQcOT795(U;Y0)UM2tXg^t$FJdsFbD1GhXebK&sN0-E{GyW>TrpX?={_3DfVp zpQL&?8aVEnbn#6*)eJ{HE@V_IkHq3cgjGJq$L;!B7A*%~hcN^QSw0&*c$GWZK-mg0 za&c3oF(g{hzLoy(Hs6;kY#3OgO7)CX3GM14m0;rwh}fwbFB$?@P$&!el`*-X5;vhX^3j2E@BoKR?~8KsEmlQz{^$6 zhBChlY1t_H)5F7|loOiin^L?NFJ#Y$3GUvF8(n#6ds5^_X$w=@i>f+md@@(A`^3?k zR+rwY?|W?J&!rqv6SC2n0#uOT{U$N9K&Q60$Q3{j_m+J*ae9CAtH=z}sWbkLZ!+sL zw!V=Z%WVr_`y2d?RPhgUAyoTDk`*aa3k8U#$1ciyreOD*yB3^4IH?v4Y-xO-r>L#P z{01=qDAXU=`b_yFtWTT3Ni(lwz-Luy;4Nh^Hud%o(d|JjP=M3UO9bD;Zwr)U= zU+*OM@ppBmCfYQ$u4==fq%|AYd*ajpkaF8XRsJ*D_zx`?Z_-B)Qs3ZAo8Hh@{(cHC z6IcPqfE$Mgl9F37H88e@9PSrQtshun>C2NY!2#X{Nj=vq$WT-`>zNBJ0&4_2W#Z6o0P>RuU?gS)b9erVM~AW@S2FA@LE@i7{)_VS zZm|WP(g`^BC;f1XK&)xs_T2vLiM2|>9!lSnbp~K%yLMtwL-N-`#bf!qPJT~R|1Q5| zp+>0(@D+d@A8h<4KmP-oM}f0$fKu+-t0KblI1Kev!S%vCNP@H%=7F3%=N35LHY)6* zKZlJ)lEO0%;YN*&Us*BFyd;q7l|nY@OM@t`R9kr~gftsbYia*ovE32W=<~8t$LAhP zzkV0^95AMB&1i0^FxoUnr%{^GKt5$)~3lp%R`WeVwaaDk^ zC+OUQiBQrN&;S<4&q##)OxJ|I_(a3#tFt9|`IsDI*jfN%?V(qlhBpku!}72hEDSPZ zlj0HF?a!3;bE!#}wB;`cy9ep?C=ss2?E?ArKjcN+ z?^n7)-qpEL|G8y4f2v4_ld+RprbbWE-;~yltbAzesbKP@_DoC*@&KY=}G;mRE zV=@Wt++FA@u06m|Si=X)y?`B=z6Fq9f?pd-4VW-()Pn&f# zdFl$4m4ef-^ktf?PpYRS>Q736DO3bhg8vLr`3TcRP~526%}T_(P<(q<3j1bjAwFnA zliu6alRc<#vR~>qw89zx6ba_v+N6xm4LJx!%^-8#N!#lIMIV#H^z=w)qh%8wID*MJ z=Zg%_8k3%5)R6K23kI+~gDC|{1aOq805qIKK>>v05I)0hE50uUH&%<6YB^#7SYJI= zB(pw~OIE>a`1^G@d^V|WJDa?Zjoz||E@;89 zX~2U~du%M59ctuesN`+vIMtO9V$3;(*<{z}9zDI1e|Cia*a$}R0bN$rSCTH84%~=F z9?D0hlHpQGjg(Ehex~UM;I_Sr zNUqWnBFn?YR?}0V+i+9sa?;uuBXxO8o#e*Mqq!hMN}p}_qCtKVgLoE(2SbBXYrT~WyAMqEq#E#Gt{xr)k_bKhoZw*d3MQeyQ^R`Xr zV{7tvZW=JtTbn|gB>a^QN3VplIGKC zYaB!GECy8Jn5%}Y8WzU&C~6}WwG~8d;7h4M^i~NfjKvr+fq(oE=pdSXNY_;@Qwi7Gn|=;H&*ctfsi z$Xfyxx>5E3u^BMtSRPs7B4sL>g{{#YGPt7uD+$F7JbX&^-71okDmrEH$a{`?(~+n< z$-2j)FP56FptfY9o zqiy}%zo*7A^~C#grWHoo^5%<=I=w7(q)B8?sw`J`a`Ri^ueGF0WXCRo;;#Ovyj2uD z`}D8Sq|6dGtc6Q&JxpIj1|ElQzrSksLooAO-a;^h|15;WZI4W0e^E*PK8&T!5xaVY z+!;Om{X-phJGohVkc2UK0fP;?UNvjRF}5uFAf(nmPVzjt;uTWKf` z)Gec|eQaoBqUgV)Xm8C+Z+f7P`x4HPa^B#%>Z|AO`pGrwf*PGbyFls?h7;rqqXLDH zI~m&P0^Iw9Tv>A4KQbEZe$A{)n9a*$kWu+|8xK7^m(kU{HDA~7w6jh-E=}6?na0t~ z$hqE#8AW9^5wsmUv85ucvmxB;D24!O1P#Km1!Jp$ilo7jFlv(sQpiEkVU({><;D)A z1s|q#b%&Wztl2{r0&nG;8d`;S2q1qmUV_q8GQzjNoJN=>jkNHC^cLIn@r= zqieou-cGjB)733m%+hf=FlUBg9fm;)ItE7l)zNvX62zcP>W&Fc}#taQCA@ z#0BZTYbH{xvEi$mpPyHtU}zJ3`$0uKP1DUA#|5h>38d89J}6B6>;^wzuNV{Tgh3_4BrT{q6*Y16 zv9@^>?(L9HAb*1-uTZI8VV}Y0j;S=m{ER~`;+2|cs=Ai2T0457D~|Kj1# zn;w>wk==A9!ok?VLjO7amw1c!)bHp!;a4#g@7LXaGcfVYT@mF@oe$(ABXXt?cOHBF zBlV3OXP7i^px)l#*mUL+maKTv^qQC#2f^} z!2iKWNZ|j6IYI*eALhu3pU}RoL{Zgi6SzjzS$eHZmiP`&x%T#Q# zlR8s8K9sdVUB{jFUpQ_P5u4T=c{cqbkCNOZ<_GCnxfQ4DeeAT;_bgM=Uah%}QA_(V z`Bc?sg+)ziLVohrn#-9DJ^f(fm<4i%RZk5%=9afFq1|;5CI83#5)#I`^hFRM85gz^ z#heb9#t&T#u%DC!`Iy_hjhUb)?xIbj%wZU<;AmHo7Ys>e_-;y(i~aCSC%^@&Xg2Cg(~LQ$36I%v5AE|4)9h~BcJbG{EwNU9hJrR*bVZ8Ux0zJ=#1hGP<~ zSD{~(HEDS$`f)>UiUXS7&IHF(dOX?mljjdNByi7cdWmjnF92~NL0l$*Ay|nwvdA9jxGQM)WNIeWLKIg3d`yh*EB zo%ptENE+K7cr_wB- zkYIwAzm%5pZmzoZMf+apDUNC#IHfxxB?PxNOwLUC=|w}L*ll!z>p&7iWHG29kf|Hf zbo@Mf=#V*A+d1GhgopWa79;QcsJU`mJK3NQe@_3?OGhqi>Wh;C`l-Y&x?nFpc%Lnd zzo{o%;eD_2u$Irli^ocMWaCk9% zq$#<6mqI(?aefU_hi!s7=)HMkX?_FTZ3N1)y~@E&#<+cFo$P#$VnaJufo-c2o!bcq z1$R%(yn2-aF*xU#Hm2yl3#+i3vC~-Q4fp*1Fi6BTTfx#!bC(-5HoK}Uys84p`7U@1 zTK~hK!D?KAtMJ`Wt7J!AOq5s-7#vVzb=!>2Knq{&)Z z*W$==sz0Hfd~~ar57*(eUrX*O6Vt#0^JdHFq)sDu{d$E}2H>HHpEK zc7wY#GAnY0d)>p*@mBvTL=0x`i6J3+W3}m2;?!w=$iYQ{{5Ss`kGt;mz(yo(WJ-3& zHq^PK6f6y>qO4U@NYoAbFZrDZBi*8Rg;mbquTRWX&6b=~ZD z+)>JPSsH<|76a=G3mQ1L87Nf#)d&K)xIxDH<{ky1Zfb5!lWrfz_K(+`yRts&EbVUS zm4+xioN&w8Gq^Ou&pFn=SW~qXcC-05SGsSMI$8(VhJ07gP^l`)U-}!e^`}|X)JSb@ z!`x2i2cM5@a06W46(n?cTJ46^VGhcTTum6=5U>L}3O65Q1_8N>G70oYznB;sQm*ny zTxYno*?(h{vZK+^S785dOi1iw)V*$`H0|ntrC|KCJB{ z6_>B?JW+9?|B|cvo)tZvSdp{<2UOUJicdYLuF!uQRFIjtBd85uD|&%^&{ng_HGah0 zGCJzFcF!@&TOHOK@#T(D_6b$?qDntMPgQ>}c1j)L&QsX1`I<*AEs*zeHA+6E?q|^P z7rrM>7C#{|=cE=AuI}yQ=)=%GYt8V`uIaNHWCrEhrXpgQY7Ccr>=4j_9WswgCdk-0 z=!?8wZ28_RlV3qbYEX?5>0(eXp9c->&+{c}PU14z)8;@&kI@6A%PoejHR>BOXY8Ij z;`f%}i&|u$+FZ0E0O}{>5bv(C`+RA;kN&Lo-$B!zx><09;L;CUUm1;G69*qG?PBaq zF4g|DnzKNY5Vo2CkE?8&UMMAe=m5B#O`5hZlS|-c%ni5qesXWREW8NpF z5m(WK*qD{MHpXAGEQ7{q^%Wqb! zb5vX6Sg(iidtC9cXC_zGaN2}cIMF{aHLmzLQ3%&eXFVt0Q5xoB$kd^DYyd4!aSQd? z_UoH$htKyvnq=PajF?|0bvPmx%P96~dFNs)JT4bb@@zjygI=Y%sk`GoQ6kDV1ZDQE z+^Jj4mG`|KX~{o?eDqrFWzH%uDD2|iRkklJJW;`h)s(R7^g~@1Ou*)|_v+_>8dG1R z-fViC>EK3Fe;WB%zVb(d^&b5F->k4VGqO`RrHo^2pYUZm^5O;-Q*KaYI>gurCekbb z6rm!TC}41vfxkH1go%<0J-X~wXP>L22vO=Ypqe}>v3SkDIf*eQZRh~f-u&!5#B7`mP|9H-^`KJgqx&rRSl3e;X=u7N>4W(j$Y z>naYs;+eGZi@GHcx^W}*s{tmL=9a?CP@k6uxG;*U9kgeOV`AdHCPI52VLugRE6mXm z<^;QeP>Mw)2fV^1s|V24Bv77+Y$;G|n_3rS0qV2B`b@Biq1?qK&&S%yB>TQe&$G^R z2}}S8RK#5MPHk5u4?5@yBbzg<9m&$GX&6~=`!>Wflv0Xu0k((=a+&y{j_k~gjIp&U zqa9J#C4@GCOglgs6WMHKL1rSDL{n0p1ie?JRc5h~ISm=d(>hawFz5S6e>OQ&59`CA zkqBHK1}RkJ+RN3W@!_^q8yXYx5c3{X8kjU{zYNrtr-F6&m>p8t7)GvH1dn|MtMr*GJ7C(4cWDNHmNzEZ0Tn3IYW9m_L{N4wVpso7Q=(Q{(QT2oMjYRDO7$N ziRVY*i3`g08uIJCF3535eVoq0^%0z58_uj3Q#AI*qk2t zyb#t;%ot-6vsQS-lzs;iSlBHl6nOy&DTU|run}UU8Evnr%Smk^^2?0T8sU)x9X^Tz zL_~BT4GvsQEysHSW^A$(3kqODPOKbT0OifE(e%pxu86G`qGa6+94r(y7L6?EfO8^7 zum5n@VU0bDXb3=Wr$kEX*A3)9Is_0)7@$UP@XK%_A{ci+bddP?LOlovAWqmlJF*Fd>n}XR#ZhG>wHT^!JPvS5u zIYFtHfi0VNY%|&#YZU(F#OKjwNODke81#nG>s}#Ego)0JpdyQF31b6Yb(shiTmJu) zBu5scxw%nFifk1_o&wavp1PlU#3=#cmI%+ES8c15AGtzkhY7Vz3?#%sFyXWa`+Wy~ zY?07zb?`cyaEgTq6EIKC{?rs#Huzn+`b ztTzM)ZXqltA|t%_7ASzrS&rE>Bwhh+%{I}6F`N|%6hKRZTF()lqY~Iy>A8H302RST z*Ry2W*o119*$W}@mO%C$m3T~m`S2PU4ig|i_5qc6YmxBmE1{Q0*nlTMBEnay%vT!l zY>_z1Ch!0>4UbI`*7RUdG-`c-pf%mp#>Tsy;^o#O!CzxhAVH|_!*(5wj*wqX!zpe_ zF~kk4u;un`jw#^hG{;g26nYFB%GNqE2X%mTr+yr^5kOLNi7i+^HBT_~0eED>JrTa1 zO_(Cf&e4EJLRksBS3)NCN_8Iog$Fd?ok;c_AiL!lali+dTFi*mqey9@Nzs-4BDju> z3E^KO?!VkxjAlw26j!d8QYhW8&aO}A5vN9AuVUgFui71lDvOkeFM-4-0fce^>aqF} zVsweI1d@_OJNdpv0*nP!NrMUn_aZNx2~=!>BFLD7Y)U6PZVb>oFCiqAP%oEU9lRy` zWwGxapU9~pet{Kqe1V(2y>|gQR*>RPLD#PRxH@so1ppfnfMN_-5c=*p1ML!^QkZz%G`H7O*?}oeH@i=2$lMiQqD0Hd)XRNm%1Pm-FTlue z8t{9CDOZ#v_eDyqkY%3*D1K(i{h$FKVdA(X;Q|eqF&$)6Q30%h?SjjS#aFB%c2PJP zE=||dV+wVo=nQb{f^SD#?9h&5HU%1P31Y~Wto)=!RYw9klToEGhChr=;K!6SV)EeY z_z09VqPiX!nhcQr%$NIbt?WG^6#|UrgtGi`IPdt#FQMF&*HF&`0A&xB((TXu4B9zOzin?`1g!+tY{3dmuTYUkAV}cCtq{5A3 z@JB({OA!^~%M1q)Y$K4S)HX6xl_CKr8Zhcc*y;e3R}q*X#HN>AX08C(4mNR8LR5Sq z`*l%vAn5EpCh^JP&X+QG7XI8Wx(fdl%N0MK{xp7D3ItVZjuI;5YO+Uv@+Y4P?*6|x zP=N$rM+0^V@H3a;s}1;aNy2x7ThOA+#dnN7T5ict2FGWwugRJuAmm;Ha?ga5G8Hnf z9$>cw9D)KsSr-I_2Bpz(`-CMYSr{9jc#BZ_7u9AJ<}%r6Qb2qyf=@0GUlbAV35YMq z6e)#c@c6b&yPQ{~qVJPwLcQD<*65D2M3ye)2XkhPFYrbP|4&b%0R>|0Wif6)ZGh$t z)I|_n-MaS>JAB$gy?))3i!HqHr}7Sys7YwPyz)Udd*Xi8Rl}$7^khJ;w-^Zt!KXaL z8Uc#4C`BTnToHbY2s8sw+WmmP zqTBC9aChBgsFuRdMcD=-5u!dmEPC83rHX{36m6MdV0xUYGNUCkv)~|0)YQ2(I74jC zT$sE!c>kG<+(WkHvj%aLg_bSOjcA?q3&2RxBpQIezKEs4^|@j!lUi{zL#8fL_FKS= zbL3g$+cKy8fHS*BJQgIFfoZQNQUOfX_1du12a5kJE9K9`e6h}T*x)1ajs!n0Axd$e z*8xu1qt%Ub^c?WqvynbEe@FZ0BBY&n!#_TCf?A-UZLxN|Dp+`HA zya{9i6aW1ssf|(6x6GjCNZ-6)7_;TNXH?xw2VV3M6nYjX)kzed--n5+8HMuW< z+<=5I%9{Az_MGtf(cZ0!t&8~1|9Mi6UN6eB{DDtWW!G=s=g+;1t6pBz{5boUk#2cy zQiT6Vek*0Wsy@82zh=0zQYPXhMoJKRP?0(!Fie0sB|(KS@z=#QTcrEEMQjJH+4-NW zTF%1WGMVJ_#2)9{dE*bahbaCc->GUd1Wrt-|C9YD`jD#qLMjGzdIL`vA3gXdd&9{r z`})ii;Y{*wm5VE8eV2C_buLmx^7!XuZ5lKBnBJ1DO2?h#e|-OMqV~@N2sW#^P1RYz zpAup|Z$=idWDW*ArUVkuw`J}vKDu@dW_=`zX-gxE_{dMPEem~Dw|*Dqe7^jiQ?4_* zbB%;he;4BalBxI~1vSfBnmzEN?9=k>^&dC>J|eWg(B2)@N$n=Rc#$?==Q4u-Iemw*29!Ham*&y^;Qod{_TuKJhXKb z|NUJEwfW7{BB)1RqvKp$Ue?~i04+!G`v>`1)zFU--M_GdzYm+KBk~A}3XHSFW{-0u zn|(yWcfH{h`-5%!)KPE6#<6|!6b0qYYjkbFam)CtLo*t~ z8E;l}PrS^ORp*35Bf1yo{2x1IEzMo))TsHm)V1`n=&qynLKOGm)2!0&@aLvUZ7%na z=N3(0mPc(kADU^Z=YFKm@P3d7bIJeC;?lvq`-_tPl!rI7?s`z`59lV=XI%PRptiX! z2&i5yeB0KTkCl;=R?fy^9R1Sdum^8DDn_qQc@_a|EujV z?D!1JB(}fSH`~)#=};*?#w5p_JIpK#HYP=!2sCt#aE?Y%PcGrs=$GBJ$J|m?4o}eQ z>lhQSN=Q0;TDwX+2!E7%GH^&a>C#)iUHS(~vd(L7$m^uiOL<=^cd6*KPsY<^2KCX^ zz5JCfKEArdcD3pk!=UQ)66rF2QZ41wPv@U;^{QWR-dF$LPByxg@i@y`$Ld-1smrD5 zUrzZVDQyQE+xW@lYm=tNFq$vtgXi7W4bYRNa?#|ep$#iahdiFxKAbQu*VYPM{izjS zpzHhk;-#9=6Qv3p%y7nUj{kk79(-(MYtN9&Cz_+@%)_f*XM$w%yb4^wY$yMd2U-vL z+{r0i8WN~RLkGq0+YVCA)E#4FEOu-Fy&U5W_oMG_jca(XwU6~D%%&dO{9P}2X4isV zoLyyF6YuGnA7=MXtuhL*=b-G`4g^7-^(qMDv~dBwb-2DvrK;Pf@~ZBI;fL29ww&kb zF8Hrp{}CU=yDO9pT0ZU>ReE}iyOcG2>5%r|L>F)AZP|{ehG(x_$eFQUy}c*hHuSi& z>O1O5(jo2X`5_f_QH+;Ce>`1dpx=B)dvNZl$Tl2y8{FgkG4QJD>8nOM?}F?2M=ox! z3Ng{7#Gt*vG77JSw*UO^sNTGp?I+&w|KhAO4jY`A{&F;wu@+y`h*ke|N%4JSHA~a7 zF+yqVRpTRdBUV$M6Xx8P8{@&!wzIpkTc3Pv*>|%y4p1^WvHxCiPWr<)6`p(SxK^#M ze1)#t8eJT$vXEoVuJQOUf+6_2t$H8Cvlw`Pke=TH8)7-Q zjbuRiI*nVN{amk5n7^v{hZ!F$r`97FF!(OOm?y>UyM%wL8eT9UgqO79N~YDeZ(I$v zSJ({C`&*+2>uG0PDSImFe(x}nyV3l*{6KiUW6N|S?*kVg1n~@HqrI+RIjenFmgyQ$ z%hkVi=hY?xZW_EIW4W5=Jugx88t3UdsHKc=Wbf=0rVN>9>5)B)U) zf@k0iQ#pta{f$%Z*5D2P;H{r_=2NJmbUQ@4$q1mZPEL-*v&F-s2CP0 z9G-VG3QjHxpQfjdv*GfGS+ctZr#1Ej^Kk9SvvxaT)!yz*y0O>-D_MkSOJzD+a9bHI zM_)VfL83WUjB^!7Un*;xv!VQA_-NCWdpYQ%rNc)f*!{}q`L4>o_9`|xZpsj}V6D8w zU6cBa5Rrh?&i{>vQ!3W2G8+zJef5}s=U#T77)*FX*IidOqP_TN)4Hh|BA;Iq5tYKF zh-jD{TfR2j`@o^c^S5X{>Ta73=4P%QIT}xHR6C!Luj#$=K=d2^QzZS&MFco*J*_|W(%KOO;231U? z2Fx7JIe{RA3PFCh2!g0z@u|Yt67Q@&Z?nanoAYE+_}s4Tf)j2dmBnPsps~g! z?Ub*~wvCcpgRY3%U*u6PG@_3tPFVUrcc8}IZ?CqewOmwgtk!RZPsi>@-$;=LG1Md= zm1vP{{F3jmtgrBe z(+=&DFjkZ3%Hik7ECB1WfBGeBXq`8y->2$VGM7`d(|W6Z`!|(8JeOy_YM&M1d3Mbn zO+BT<5)e^a_fq?-2yJD|xzz5*##Tpw3dTP@JBXk%44_N5W*iI*(!0rjsqAvEzsbbX zZ@QrQO(2u5RK|xu{rc&9ufAN>DJqmEncB7?#h%C2hOfyq-jgs32}PYxochb|UyCnX zckj7o_Lc#q?Fs$znfzE4yZtB~k!Vzp24J!W5hP<5G<=Sqq;~}}t?hHCWK}?wzf(tq z`4pw4tHF}K%DC6>erO7FQOyO7I=??9JZt`oC`)_afxj-CP^cZS_f91Z6<@%evzLi%UJ;i#u5t zx8bo>mvEp)X+y!5#XLhYpe^Jm+9BKq*jOeT6-Gmo*{GIYEFauDi%wfcIn8p2*pfNI zx}9UEila3_tR)C=g8}ZkaM_&?Ewsq&8^3$IcJ`_X`nn!D=}E47*y&8=VPrQKB(T<> z4KGL%8_ir?4>HOYTI-s}9J-j4sG#=fT61HulLix!819S{IP${)bW1OK7EHt*j$(sK z3D;$6ZMjTD-$nhEfw1G~&*z4GQ0~jQt7|R2Q!Z)kynbz5e#$*EOLS&e9-H;%qn20=& z>#J{(?#s(0p(DDH2J;A)UeCnAVQjwWKrj|t3xHC9W08I4F(4gpS0N*~VF*)bZI^nL z?@R3F0F;AWLvfp{=iWYLDkrg|7h8L?oC#o+M$6n>xpoMZ7R2gIC?a!EU6(E8KN4YI z7J!)Iw!MDK^D>0{FMFt*4PeQ@>3na6k+E{Ny)ohP zCfI`;ph$xoOoaM|^UkEquCeLfE~u#cs-L8aEdz5Dj0d&4^Hw&_-|Ef0m{f~Su0u5>OB6DdX-&vT%N>q#Ymc{Q7m$%dHTr~oW#arpBqUyyo7DFLBIW`8}t zcIQ}2d4f4VOw~aG8qZ(Xo^8ME(G>_ot^{I0)p#>l=8hC8vv*=6S?=6LfWJ6SBq5ZfwvG^?Hq!p) z*5uQvvJQ$1*a8|SfZA+(`bCZk3&E@#J1uj^;oJD;GSDV&Mp3H>G)Tx*XWY3^7YJr@RB4<@Jm7fK z1Nn_*Z!T4J8_)E99}#bmz1_plS|8xU*lgyybWZ_5XoOxq4*ajQcs? zD?Pu1j+i6!&!KY1J0EJdAk?KlKZL?8aHqNi%?7r78}E#K9P;5F))*mmIs7LBSj)jH z0e-Uk17t6gw>ltB7{`TnxnxZ)ITC;v0Nz_DHK ztzIZ!YA12z7(weFZ<2!%M$Qk7h!S?)3nA%_ls3`?a+l0wzSe;>KDV`7@O%B*6i7`h&ML`^!#NK=;bWOulBm{4SF%dl^nBBl zE20_{|0|+6CHKeLqwJ-}=j3R`r<>MI4Eb%1xMU7M*x89!XZ70!T?DFNf4bDJddL&;=CrtoK0k1t}x-!Y*Ik<{) zR=?r6Lq-zaRxu$X&J%Y#;J}n(7PEbunCr{WThX!`YW0nlpA9j3`s&jk-p#ZK!zZC! zLA)9*^6a54Aj3_u7(KVDJSDSu8#R}b3F?ypV?mrx8N%q}rvHw|3@e90wa5_vw)KUFzu8`4#@SO6_>NHh2-id6>pCk0=fEZ@7o-e%xO#*@ZYyM z?&3Vcj{S)nBVPAfiJ$9EDlmKfraYifF0sU``dUp0hPt)H>UUBX&uKA6C-VGy`0bHx zvs^zKvN)6n&jLj8Mx6viX?pajKXEG`LwLh8p`hJ}3ii?X#A912SeCANWFID(RahGe z8nq-I)y~!T=S1dsV*&uBg@lhyKY9G+yrd@0in_HhZ8mAD z?2|*Wlj@H8-{=a}U(IR2cr=siK+RR0_tPgLq*RR(E9TNiPf~o+$@HDr5pV2rNXsq` zi53R}pzAE5M!VYOXGJ+xIwk^|utEI*u-_kHlHD^C0(PW>x615h zf0kIv?z&RfwtW6mM)e-5HW#(^Ne&KIj=C;zgOT#B17ll#U+08uNcaOPkMX4M*Zfm94nbExu$2dt7?zuekSJG zL_xG2*OP`cW`^~AXDb(YD~3!;zc;p>jJ~hz*Ku#7Y74@eS#XV9{F`#LewHI|1Soof z`9^Hb`7qhkA*r7FwCsh^jIa9jjbr!n!dl!57278YQlnh=dl)VCz*+po=BocvuXJ{D z{x#pMF5E^!M~YFQB*+}d&Dq3~7cb0)04K_y`={?*%1%=drho~E)qHLOYqSZ|_+DHP zJ%Z3-fu`6GQI}suuV*Crr9DG$bGpA*Eqw@MJgG7ZdJDMisy{C2)KZMHEPi1#X<2eV zKdiJ@?b*GDlD@0t@QTl^qv%L1%H)6j0jxUz_pzIJNZ=h``E5DLPkO7M?9qxHvO@r2 zi5mB|3+y}b%V2f5>c88x1D{W9Px`tCkS?&Av^-xPN`2pOhJMzUvGh4ACUbTr3W?2p z4=ETYuoL~*P-%9N+SpV#DMptuSm5AqflHCJp{vSpkJN7Evxbe4+fM^<6++GMKa?4~@l zmfHxszvzT-+u${h@HhJJu}{jg4f7nI~qL&OjR^gx0&8G&Qu_ZR;^6rG1#l5HD@ z0YMQLE*v=+4%|4?ascj)dmHYVxid3gK-?o&=E`turQyuV3en8e%FIg5%2`%cYGyY5 z`2K=t9QX4a_kCTz>pXo&^C~V8UX5|REL#|WRC}Mvw>)3I#w+&b%&D&C$L4$5;pdN? z|9o2V_~F8y1h+(M!8)P^Zag90>8vx)@L;+56m&CO9yx-MGm-E$)i|# ztw1s6g4Y*oip6(rgC{}XY{mquKZbtelMkx4rSW(f;aR5z3Z~BE3 zcQ*>YvkL=Wfs;Cfjvp+Kx{@FgS@%w1P zUXd5h7%Y*2OZB*tRBdrny5+og{^z64X8Vy~dvr`J)q-DraW0t8gVAH710GrvojRO< zXO1`d3bq3bK{{P^3m{KP=7PabDbM)OGjxxl3$rn$cZ3*Z4%Sy%uh`J~7})DfuLxZ5 z3^(B+?q!!|{XmBosBYeLe=Eu0{$JAceDL0dM}nO%w-fEqMPQLUxpZivyE9nbjWmsW zz#sXNG6BpHCrS30^XV80mh)@$!xO_J?VoSo8fxH$Mv&1vTcKa<~1${vHA6lrYdmil? z{C4Z*;?v@Pf3G8ZlPN^EsyJyv`D~3 zefshh)BVU-3+dL{S$pQ{5fu|%Urvu)lnOQP`QYgSOT0tNus@s2DH<%2Aa2G@2-C73~mX#gzYtnUYZ}p-DH46z94Ik185>GOo$#dIQbcw&!2nEF$+%zY{k1C zo%MkyR`~83%n=z%@_$k# zcV&UmYfUj&rUKqqhw)qn7W)ko#jkAA71gOwd$B{h@?xHqUbR>0*=diw;Fu`UufZiT z{4*6#sz0O+5d=p>5c$U*b$ZV%Tu~I@_Ofh!Z_;V_L_<83x}*(t4>K2woS$U`KWx?9 zndwSMF7$(F!wk?Lixbj924q!pkFS;qrH!R_ClBxiej1&mjnDvhaS=g~DJPKo8WYl) zrwVOU+{e$|G=^Wb@;`Td8I3CKBd7 zXJc<5e@;9&?tQd@zStVRn1uadO6QM5j;0@iaXVgoAgiq5EUZM_6?19b1{GHYt=AMw z-NfnQe~7dp8!$JJ;vxXxyWw%oZ5!Kc?>u1|Z|qTo>yDecAA2W6rsuYz)cvMAI~kw) z^wwgd?o4)_j^`^f6Sg*Gjl8BgJk{JEvi9RX;FtSx@rcF0>!n%zp*bEQPsS|O9i6{7 zsF{pW=e}!$`I<^ukymA2?~>D;|G;KmY{A0@z(1ffq|c7W8XLL=qKjuW8rLznyLPL_ zUw}d_d)JZ1rq!1}ufF%pQ+&~Yq@cyh{9PnVetN{QZ)_56|1L*=?Y3%R?j$B%oJ09{#2?^AegB0o5t?&3>? zXiql^aRYlV-F#a3SCC6?IZb(I*C;@N+j%_Ns_*y`(2o#sio}h&?ycVVTqA39EbG^d znqckDj~4@X-N!V|Mui1WJTa1ZK4Ez~#S!4#QumsfdYVAr;?)KNx$PM@2)<7vQbJax z{{Fjh-7d;K)!@LZkQ+-XNSv~9t1G&`tY>~l(JGSSSrp#QbK_gBL55R8!TCMK|854s z)(6?5=a{GEnUz*a%975(AVuq%#-1+=ceYjqH(u8?jdw}41a)n-~33Dy|I(g^gXJGboe6Ou z)?8zWs9AbKDysI!09BDEQVD|@K ziM$b!O+0+b|ILU@_X6ZgRcN2M5St)9EB>BNF|U^ zK->si3CZtIUF=zUB}ISzAwX@9DkugPvuj-H8Ih+D!O_*JXO@h`k9@UoS$XX?zI2g* zwA4AE5%PkR8D)fw5sCG;68$5n$R`>&b6kCunr z9RFy8Bv>==5CyC+LuI@*`4XZk1A2F}(cAxg{zKICy16|Sz3p9=vcUCyr;(#@(x?WZ zhk+6qKye&F%mxE=ZxR&&Ks#9C%W}gD0fax7Z=Yey9LNDX6uz8n!uHoPQ;xV;zG(dU zILi{OD#)dl$;LQL(2*b@hss|n4qRW8igG@(RHRO^d2V~@`Nrr;74FRi)T-r0Q_=|o z2XmceD{M9A3`mpz1C(WsNaO)U{R!|*fT1SYhI^swJJ9xSAYtB5&0$qsY)m9R7zs{5yBBB_&@?FpZJBHh&X|_yj>nQ=fxq!yzxM8A~FiXr~M1mZ?zchV!iI~4} zIJ*yYGKFKbtD3&zT8Me0xEYXIEC`6hp#KoUCW9q#R7w94_(uTdog8pX(SI=;Gs#Iv z)G14XuzR5O?|xyn4#D#k<&VfsDB%z>@b~XyZx4vsaJ+`Um|O->bo;GX>~oYP(I*U~ zn^EYK?>$bP`i>71w=KfLWHvWo(N3d!3T;|jUKW8MERv1-Gt$M;Ymo@>)waN@O97<{ z3bPvvQs616_P!uTV@`}HL-gFD`8d>BTsw!HDRci|(j+v?kV(YuDUeo2 zwT(;fH4cb+$x`nc87GqqW0%ZxUbvCRmCv~sg@kVCY|%99X{oEA*k6Z0bn*r1@Nfxm z&|<4!RsqDew&n8~TK5^EDuw-4C4$_Mg~<0C-{Tr5V>f*yhO`~%M&ql(c%=*?ww@}N z2M1C{S>z5|KE4@rs-PhyN#G2o;EG9Cuf+EW-3=glmJavm&ydSK$Ae#M9Czgm5 z14~9y5&a`lk-!2cDCer23M0ast(-wa8M>?5`0rErbmvC(TBJ^Q3j8)9$t^xRmwgQ$ zHu@G$(cB^)mHeQxM@to9DZ&BXB@enjNZ%5nNKVLJ*bOiJ``j>t>l-*H$awr5^~3yh z%>DXDp*6GM9-mhZ{MXgZIdTXfgDSKBQOZ5s<&BCooT4}}!p>p;kfmv4UPgJdH7v4@ ztIHXZr`_#deqFYMgz+*dqXv8Sgc-Kx7D!Np5+lNTvxNly0ZPIFvS~!EsOCqHUk&GD z9&2vC`5u;Yu(j%;2B&gW$7Lacc%L>kO*9>@zPEgu{5|WKKTmdxgU(#D8UQ4xuJVHc zlmmdCzw0b~vxaK%C_+O5HmZJWFKp+zndPYiODFZ}8?-pOHF5+Ymi_0B(lmmO%2Qm4 z#@HHs5nl?Ub^EL7jRFD+y(6>E1zQkoMhz51s!9uf7Fbq0(TAR|AU=*B`|}86%vN4z zYkQj;u@DBvZ#22NV&E+0BISi+m8$E(1ICxH&%2E)SS1bCY`&;?C&JS5=h^v3o3vBa z+|vMV0)d<4O9(oeN!VFX7vYsRQsn~f357R6a}R6Bj(|7w68)3+Hlvda=Uf8FrD zWoM{4zZy8()S^52(r>|0758!3t-}$iEdqw)tTN8hA!i+x;WDr=f0$k?&Xc8Sm1Q`5 z6|@FJJeSD%_*lqIx$_Uro3o5pxz*~4CUG3$L(iY!+Rp0J|)Wo#DjfEI1B_aLd)W<-~zm6UKDq0R)LdqiVYOfQo?TzBr zzg9U~%#Z3oX)@RmF?XOuKM*~}s-APusz#wOAD z-=iPD9@)N*K>jY)RZFVd#l2q5ZPK7ap7QAQvZW+}z<3~Pe|Dv*OmS<>wMrbOIfubz z-CKGou79XudPgAB{c1Io@54Wkc3-g0nEtM`iiN7y4Q}?0f)pVHSbU<6piVu^C&>Sy z`eqT)>RM_{qI$BO_LG!*df)gY=u$^4I!Xrxv>KB9IBn4O&BobneT|RuNJoiE$VBnyyL9Y6Ak9KbrgeI{utB6PX%N~6b(oegG!i0o&^pRKLv`R7b?&>H}kkEOq{F5z5toKUdVZ=mwFa zMhd@$Jd2aiBJMUj2`!uoFxHPRA-;}PJ8H^@<&BUjYMo8dnY2|sYb1hUd41{u1oHjwghNl_5AzoTD`=I!&J`u z^VCvm2`8qFssI_kD!-mZQrNQiQv@aukxUR#9}%+PXrAy0j#&)+MRvJYj(%Ec{WrP; zq86tY)7>+fIPfR1pAgEfaAPYC-@FuJVa3szVJ*yJZ*8>w)?u%hZrUG671fzMU#d4;vMw zNRg>*vyoU)ya*i64grpe;zxf|Wi|e^GQPV9ImP%g)@y|OGMci2eN4rE~ z*EO(J4A0){{}9rWk>AHvqZ4XiOhaw~CB2CldLnMC^K|Z%vijkM_Ke}9${UE|79o~D z4ElFfw}DL)L(P z7v_(*KR3!{E9$W=KT}b9paFVrssdB?n`@)dNN&pQ4%DbL|d| z2rC7~`&kPM@Rwl}qYNOc&ev#++Rd^S1(ABwv_ryC)kh=0AZIao6b7MCPPkO}+fy`% z<2yk+ReD(3wnw~w9B8HZ%AgrAgufK?bTifMqY5h#& zp9;YuXh*}4oz>RQbw@M5Oe}P^f5O<+B|kQOMS{?4(-98(ahLIV*Ebq zd&tWt4W{u6IlRZr)6X|vzaA)zYf*K_fxav`xqx2UcZK~xOx7uDMF&PL0Dj2s$4LDR z7^PnhZnbaB1YL77YOQiK&{iz9$J&wFj-z#o0lLg(8b!GQmk*GG;#PUFSC)y2xPM5% zz;V|)+mhz=T@^F|e1?9%`_}9Si$%oEsIr%0hoW(ftKG*QTc@(5oFro67uLEA7IEw1 zp@?+F_7DW^DzBzyPq^%vFYIzk$}Z@=NmR~igykUlJG8>hfVY*Ez1LAeIR?L}ho0TL7Tjo>zr2$7q=-TT z2tA7bAf)$aJFD6LEA+^ON<))LUSm8pO=T{Xb!=>`bi))gnnPnBV|qGc4gmTogilSyGi%_^1~bLG+w_*>NxO|^%P1Op{^^66wR7A2CyJbxX;tDA9;32SYBGbybfklLqYPXjuYTqOOb)05cqm&QKBDWxc>PId zH)kW;F0Z6XW0uYNA&K$sx z$wA}Gg7UKL{nvvx22s_xN3oK3>OIwGyjkKmJJ6j;WLZQCPsYhmjQUglTjdAs?b+~B zO(xK`gsEI<9I2>&1}^E{D*_UmtQ!#J1yTTDj5`Mh=zrp+(ryKb8HHj~UyZgAO3|QI zA(=JF-|mf*ZCj0LWY(x+#>$X}Wn5u}TkeSoi@p;FI;fnoycX{{D*_Tq5T*0Jbl~DH z8yu@4MG^%}(@^jnTq#8%KccoYTRn1|?)I$6g5uSfJx75aFI51x0J7f&xaw!k^8ybM zz_KypFzNVa$o}9g)LR-P)Z%Yb9=KBIjb6Rb4Xs*3KCt}l5+{4^%%nwYYag8z?pnB7 z8x7yTZis^loSImavRHJCaGFrS3ar}&kR=e)98BA~EHH1oJ=@);U6eDmBf-v+-Xin3 z`q_xj`wUA7u-%~k{6L+aLT_V5G!&=-#6Rc7)jxrY5L!{(JNX4zjPx4T8gX%C=C`Ah z!=I~9GLornmt>i07lyAPbXrxajhWrtF%OSeeX}{^6UlR~GEZM(H%mgqfNnganZr8b zb0PdR%AizTSfNu>0Y3r@t$TwEt*ES{uZrCZf<|F_#ScUn!c`qk9SM`2r>KTVMi?w-3_5~<%>bJGrHl?>paaZ7|WnHd=Lg(cG zs0$Qc_}(~MTyyoh%8+`QG6;>HG|bU~lK4Q&G=Q&ciP0`CT>sF1&2&aYQ^Pa?b~*VG zZ15^DScR_x-*}^48U%`Hh(8`xGIkr8JR%gjRI?Lz@wS$C-g$^X6y9kuz*LbUvh852 z5xc@)IVm7C0y#BD+s_>(Tk3f~&9mxg67G%!BezRULAWdxrYW~(sO%@7qhZJ?sCB}A z@3kLHA8X;VVmZm@P8a~NXSR|MoFBi1nOlxJw-sQAS$!>4eUay;Zn8zc+UD+Ez%1=g z!hqku_S2sk3ZgXj6JCa<9gUzb3iNPY_j&t7RbLcVW2GhGTF7qA2HZgUV{$}deCF6< z-4ncjz_U~FvCY#No#!p4J0xR&S_ma#8^%vr`^Xj59kxp}>82fq(%URU7o8_$QLR3a zAO+y~V)mX8Oyg1B_T#8KAuqF|$>rzcu^g-Kn|$vq_eK&ig|WNW-gC4l!^#|4b|zcB zeB}~pg7yL&Z;1`OeCf;@TC5Fu$1wgx>PV5W2s(1j|Q=0`$`G* zL|oy*_2ATd@R$Rd_z=s|%>ktxiP?V#9=KKl2py3qUpdkcEVWLM>kX1_BNTmnh%==Q zT~W@RKZWW=Dj1ghoOwu85B;h@gEk=f4A*)N$Db(tY2k%w@WKRk`aePJw*yMZ0h)9k zsO5P*i@<%0fLfmG{R|G1G2Io6-9w572T3Bh{Nz?e!}I%Xw8Z{tt-OoUjw5K4tcVj) zE70X52SSB%B)K7l%g`oVWDo_}^tmO%MeIY#-dIZ|Mc33ks}`9xb25Me_;Ub_{zr$n z!J{Kdzq!9UmouCXpzE~&s9pzAZ@ry?hf&}+2N{2f!0zQjk-?2;@6M|rxZLxCd2^c$ zt56i*^8f=BI+}opBRoW~CHhxHr!jJ4E5J1+tqhxp^l@>CZ2f{<3=E=x4kl&9qbkWT zy_Oyw1;}A26yMC7fd`wdJvmfpA~qyI;a8m>cMpQ-Y+|I#sdL^`Jc2gGF_)ACeF`oXFF{FxLuBK%w8l`EC+TLHr#|bH>hF=E zUjf%cbM-h46$YL-drGnq!0Uik;D$inll}ze5lQegn_bRrWtHwo8e#ICR(W22&QWMe zo9t2HUg>0Jt1&Hccu0RHmmDNfa+ik4Jnx5KbMhg=G^)5rNy8Y2{SW-nMv&Pe;v!f6 z(;)~&kGUDz3jt92>qv~19XkAdwgQcWVDr+xVB%oBuB0}nZTg#Cx>E<&(e)$ppLkoW zqBG;1EzHLb%cuUb@bEo6M-ZX*W3A8Ng0a)hu>Y_RNIuHA~0C zK}#`v%hf8NA5##>i3)Ib{<`B2nwXP|m={bIg3EXkWl~XxhBeZh)YQzi|0y{1wHpi7*pBR8+!B2%zH&trb!viwxo+;SbNnbJ?qp%!L7&B}X}yE-Es#2{IpM%;Uq zBy@c6YC+!xfNMkG`X z{G^+cK?FEI7-Kr=UXu$|!H^Z$CssSVNm~N!Y=R~c{bgO?@H-SHmT#!-o{iPlR|olr zvt{$y+NK19&8yy*pOXkzJ@EEsGZSWjNJ-X;gd|mHbwjeZ1L0qGbbeb@RTIb1L?1K< zNsN+$vZylHlv^|{qG>(}1-Uc&_kFf!h?|!hCrCZ?4b3%D;GAiP|Fs`MO z${85Z3}B?dchTC!z;jtx#9ANO13jqg^RALJ{VmlGTZvu~nIUT;%>_*fDiSYWY-?EG zH$cNKXzK*w(Oi-Ibi$sOpn>8yZ?FKE!&?HU7&M{_aur!(r*4Dlzl`Zv6%ig&{swo5 zSbkKLT(@vHhcoY6(P-F?2fjHV1Hs^g7zNQo(55~yi1)&_*?|^Xujgb2Ff*gEKy!uP zbyUY26%hlHZ~{sY+eg6W66GkzWK`zszHFd{Uo-(PNEZ%ovW$;B^B=l7vdPjR=-jh? zkwnmS^(dE+&dB5!v>2k0!>C^GxZ*pTO62``@iyfgT0+)m(bPPZ98|iwGI_&0(A*LC zZ;!;wO3new-Ca2nKO(eiPzCR1AUBFHGgYbxvGSg=&U%?W50bj~lPOlIJI{(UX;wNj zcu>4(q+>`H(T2C}L~xTJe4QqrcXJD-|@ z0UG!!l6^*GA(62!ZwR|*T{Qs89o}Uk_}hpqfOqH(*gne=M8Y}|G6w8Ab5K4P^dl%g z`>d?-X*w4-3az5SHZ>QIexWFVP_*jK7%(A1xk+szTz?Bhlbgu#$xvRN0Wdn%FD8PtRNx?o1siqUUR4z;+2qqL9mXsO{A>P zed&gH?-fdhSf}7bgy{Eze?v;HJi;VrmbwgWTNZ4oQSYfx$xup`8y#?$&!cwSa58J%*U7`=mH{y(fa$NvzJ) z{njP%Lm6KGKMr*E z+QnFu*Bh(bcO}G^bR|N%sq6Kxq=Hu@ zFRutyPuBat-RJ9DuWw8zS^3!+8RQ|*^Pw@KuZn%?B6%IdvVqCHukM-up}f1$MSYQO zmsWCSd`5P-F98U50192pvsIwON?63;+c9@3dT{EC0aaB9+ksgw3~EHV?j#}Z4ra@o zwU~Rse(?fLJAQU)wafDA$37I8iuDh9CX)0_Fi%DzJ3Vvo)iWuyoxt;_9rNerc*|5L z4n>nja&4}T8C>_1fwz4WNn8=f?lWtTfM*p~I@^zON#xus4nUW_-rNdioXt31_gyp~KV*m@>e_f2z|kBj zf%oC~a!)F$rmZr% zf78~pJ^f>_xV{+BD{p8pDl3soV0#;C2&$uoN|@^6b1koSrRK!e zjomQ&+RCZj`iH8z4!ybd4fQ`4zD`<#H7#0hgqv@u#pueoP3yELagPjX00*b!(IqCX4mzeY3<{bDw-P5caND){pzn$r|e(j)y zs{WB|k!fLuh5r8Ho z?z5Pk?Ci_p+So1B<`iXutNiHYR5ZZ!M>4HW=prj=PDyy4rq za&58Y7x0ylq269KXawxEsYiB2*eb8DtB1zE0>&rwX@{J3|7O!6UrNWyY2~yU62#+% z$-9eDX*G=dadDUV+3*f9BY|7`tlsVs&9;_kJ8Yxz?v)q;-pcd%QE0y!&=_6{0iK4s z2D_jK6p$w!n)YAYcswP(DD_YAtBbts{#&FHr!iUSt3kcJGIU1J+}_%r9obR5^+Cr$ z=Pp!7OS)^&_p4$fw!%%Lan5zhzCq`-)hRH`O;EGIl7N>8r$1P-^orWJ-mJ>@e$!a& zcvjTm_?`Ew5ehxyFpsNJLn}G=Q(ruFcVr(_wq9E|bbQ5c8hPsKS%7Py)~I&{Kk#iv z(spl)%HRXy5hYK}YO2iK{84;#W8`O!(eIFph^^m!WH zV<-(>_5P%O$gc#dyi$b&Ht~R86-3N#2Tad)#3Zm*#~M1cBG z9{R8KpM(wXkQm*?`Dunx)rsD=r~I>9{|3KGf3a_{DE}KI0rfGSvRLb~;&&E&kY&4? zgAz=zQJ_wd{nZ(k0CT#XwyihlJCtm6UoT7IA;t1RbT7)@D4(R`>JS0a6Bp%%(Pop1 z|J(j1M0Sn{evm=+k*}J&!>z6fl(YL-87QqyyOAj;DGQW$i)C2a0dm_Wlv>Na0^_GcB zUm_wDq6)O)2l*jZbilXLT;u5=LD@kPl8D5ML1rPUrUYblB#-(ZP@x-{=>3oC^+#?% zBx2{W*=-lw40y#+smIPCg`tAMh85ybWiw=dsc~Er>XQH6P~ls@OYtmJY04PpNS=GB z8ZTa->RzU%y_t1lai!MLJ3=^%q2%5he0&U??b7woZsBek@!oR81u&zH64*TcXRcJ; zRJ!I^N;&U{Lx?n(p`+>PRZ;wm*tR+yyhAO+g5i392Hnc-mvPC@nM2V%uVrz860T4Np^Usg9%0E^{84R zvr3=cQqMuWOkO{c?mZS;(IPoeI(FjVj9ilX{%m<=@g-H*{d~bBQPwXJ8TnN?VCIgO zpIp)91#k7^P0jAz)gedr4zHSOZ zcf4X^8hifCw7EQ(#A7(9R(jQAUnmndDg}>$&|A$ zd_AFGV@B`WFWf$3apOToM7i^;N$avH(q)u=iK)dC-X{veMMLXJkX=;4a+z!_NV`tb z9&py8N_KghCb7B9)9G3zXgovZb;rL!f(bl0Z=(FW_-riO>n><#CuIvyF@)Z%1<#oG zn%YVKo5ZPGMd=(?c#ElM<@9wmtCeOz0rTDm1D6+A7{jy?s6}BFV0O77=Qpols{heP z^lRVo687#VU}HiFnOw3BI4)|(^05C+5JTet1Tr2G-3ie5x;1g(g{H4iqU)rP{7cit zj55{(g$>W)iAC=#HkMsM1@;-gcqjNnBu3{|3?2BV!@m(nyW&zz`Wgj^ne$q)wbpmv zkIY5617U&qG1*js9Az=oc$$G$&wcnN-!Up+=ljPDUZyQ*I7*;6wOD!Miuk-s-|;wi zhoSy6DvOX$W=P&gw2;O^Z)ky-n)q(2BH+0{U*EYd?NHxe{aY*cA0%@Kne{ zzxZzk{u!%Ik?$l<|1CNai=1>&kLz`-uk%H|+SZXLC+wupR`l#|=3cX%zR+Zz%I3KW z6e=P?wEU|a0wY1sgJeQ>ue_wazoc-`y%G`_t8+J%)W5JX;~Rb2Ux>CWc#auxd>*-w zwBc`5VN=1j%n`k5VssQ3`mZo-vmWru=Hs!s1ObMGqiV`hN^yGS!U7X6|zr%#(- zVu%F=chIDAD&Sam4vrIwT3#UMY|C$B_W+~RCiZM}2G5Y|AZ=|HwegDr^fFno{ zo&*7tA-)Ul$c));@*)L+jWS&SkcO#l7fx&a0aw0+*YU|>3 z{@cl~>yG&ZFS}F`a-b= z0)u)2&@g+kZQyYdgfsu)L56_wO5Q9`cMo`~GB7xvx(A_ySqc0-kS-CZRduADB$URA ztZ$M1N0c6M70c;43EK>wIU$Rd)nMTO29EzA6wDBE)s7vNYNI=iy@{6s` z(%^~bDdKZ_nyn~>lq8BrH6>6F!EY#~n}B1CJNK|mt`22L&3lJ;NJ@UU?|tD7E1T zoh26h9qOX3`JEumW1wu;=A>&L$5s@@HS$q5N;oXW{g$LpGX+;Wf~FH}1G!CyDb`$y z@MuKt!y9}%V^X~FGzC1D4H@D}hIj(FYi{5qS(*L`fycHFxeAyzGDnN0jkJQ`Je?k? zC04u#t*Moy^0ir4ThQ?lOSAQ7CzM(}*FD3|e)Ib8JKrc$KzbsBgIj#0EbtP}C#4ME z9ZY`-JpX+?&GCZ3F+Khzj3nUaX+cVja4CqRzjEW{_FLxhW^j4)f>hyPmlm!^^lA=n zvAd@%VL3e!f6~~^=@gph>ND5Fc1cKHsE)PHsP0;+9kW+y2xg7399Ko)v?vRHPf5vIK@vvNpelhr|$k>^T9)P#ZxcJo}!E9c> z&bGYS3Mg|X?#R6R!cWxg?bEVuvZBkJvK^pSrRYdL_r>fYCCY_vg8qemR33smlThSp zR9q~{BScF*XqUA?FPvCeF(Q@G<}}+#yhb0uD9uq#=1uF*1?(+B9x1qiy%@r?IK{9D@Sz z{bLCSwg5j8eHRVyeW)AxK-a@n@t?IQpjx>uJaIfxT(y_1{j_A_Oy?)2z-mEyQEB^J zbwV}#gr~1B#)f8oGYEu|)Iv#dk*{-;0Z;%?n+ZwWRpRKp0!zVPctVt!Am`G?J%;3? z@lH=%u?-Gf|DnCQHF9*M`9HgpiHY&txv4f-xW}sPhrax!HtFZRjL%fvBL>b2Lm8k1 z0VeJoNSOP*Dva<@e1SnVh;VN673Iv6sviY_aR31d$d$?6dlY?Y8;m1^gg7QGK2$+M znSan_{}nFqGI(tBkZEFmvgf7h>C(1SC2^u3Y%sV3$1q^^lp(SBy!*=HqmWw?0c4at{89?{a7lnjmC)7}{f z1FGm!8-N2@4XP=o&cG_w;7V|i0R_TAunr(|(kBywW^hip1P-dn>#C&oa-b zP}fG==1$z@jx6m-3})RftMf3{O>4em_#F=cjbv(fPn{O%crQKo)4$bn90_Y`-#$FO zJE{F&lcxX39ge4r7Y8(&xenS!2k9!<@c#D>CkIp{^ zE{#>8gm@iK@Qd;JHzn?{geZo0wKmQ&n>|Yl%)-~Bh|fbW|BjV>AWdJ9-g&C+!7mlN zA;Hb6lqluWU!3aP<@VX;iu(v^D}-{gjfhFwxlOP+Zo0HtO=h(sVr8CpwCknYS z=i&t8Fu11R3gXZ?1iT6I0N~B%M6z=Cp zpiJT1szvm?uKCmZAX@+=kI9?CamTZGJpVrRj#&Vq9?izy!WV&_%Wxgsetr22cSQz| z2Lp0yne&~O5!>o)XI-Pp)W-)fSD%VD?GF}$`!cD|^79jJoja5r1z~T0)?vw>)@{6f z{~Yk)ubwt0yZSp9M^$Gq1NM%Or;=q)xjt8)82x_yQOzCH5l5FFpSbLh5ML$)*TF+( zKq5-V{@J1%#G*DO#oQC#UTqXz3P!#Pjsj6fgXd$5;yq7XL0;;CmMHl{RN;gefGD2p z_EMyA5)VrzmWu!g1aRlgxK{3RQ;G%}3m2ZM!{u1w5BEV@a4tRkEsi&f<6NpJdei)Q zVsXN^!QBg6t{hW=T&Tm??X7i>@Yp8fOo(o z7Nk1mzx3@5P{P8mSI3z+55SWbyk`z+KNlif9P1))`0B--eo7QG9(k$V zqe1z%mb#slfjehIRBo*hRpOQVmbB?;3g89+_3%YkZx>$#a3_~R+*sUhEJz>#LM8&j zw>j3g5BFgobB#f*neS96UzWN)I#D26|8!50c*dIPhddledWPy#*$Sn(tJ;{`4H(0z zxXhrSy1CkJVICVc6w@rHRi;fU%dZ2d=f+((KRZ+0Cid!p+ZzCh#Y=#35H|p%`mS2# z$y;#01(5b5zt7JjG(WD$zR@FbnQnt^Sh=d1K4@9h$nCK;2k|8oB9|cl;oXxD9mkhw zy2l=vpc^HnBFaSX;#@>6~cy|}W5>Gb!NbY)PfdlKF2YVwgB*gg$K6_IcyCc^_kG-RLjUf(u z`)oBq)ZrJO)P#vaY}7&2S8M{-v#jo+P7C~m?6fvu{4>{IUq|wPJdSf<2NHNqpUYu} zix>|!A#ugs`|(|^Nb*rl;uD$3FCZ;Emode|oB`evoUQny3rdK;`uo4c8P^5{Or$R2 z^_BajK<{DF(35dKx4Hya=VG&)x|X(6LkoMTRkHEz7X7d%eVZrxEkyWCU@_Pw{4JL; z9-J=kt8zXBm6oj!B54=DQP^b#p!lqo#IPXv1jsl-MNFk6vLtEk_pBOkzaxVeb zD5@JICz6JFU&12L)Ro$XBG(=`*qNyasO&ydYOS+_Ie;%x9G?V%b$$(D-9tU^Iv51Z z-O_J8U$EaX`967DOq7 zK#h4-W!@-8Yc&oQT8dX4gK2U}+l;{8;y}$X&`<%5Vl<}H&8KvW5v;xmtscqA>YfO~ ze+{lx6oneR-kIn$r1ic`@FHI%>F~yk2tp3ian($lPsvau0t~{F1Ipcco z8F!hv>7NEy65)y1HY?Ze24$7EphVQB$oT#ck>3Oo+yn*1<^^kjU^W0%tV<}j*T#%8&GY4uP%#iUvy6!tHsXy!=I3OS*AgCyAaPQR2Tp2i0D+@LE zLUX1SmX)OzASk98j&c{y+@Y3fnSom2sL;|(&0Lk0m6ny2ef{zLp1+?zxz2Uqa2+@t z?)(0{UoCsdc;LZHS#@a!vO0O^Rr;5!uSAym<+`lb-+dxI??sf*Xv}wtux*(0J`A$b zr5)B?e^HRNC?4&u&qTs!U^OAnjs;?DQW93JrwD?^K@ZQx@S_x{;OAA(Vc>r0Ju!+$YBZ?rAw9A}zsh2xwO?RoJSm z8|Dpi)gE?MNr6LyTw5JL6jU8j?c}ktw6ip0*%HbVXsETUzOMVd3|rWXlJSR2A^s8< z1*zXu27+}^x4PYqov3zFJ0gTTG=s2A9K?m1fVya{`55e_NjIK9y&KOb!HXXzTtRpW zwo^#j)>_8@#lj@RVX`$8$hM`#oRusIoQMtG0cT#KI+LF#SE9a(GZ*ago_TIOFTL>r zSY#nD#K$?&X#dOIfdT&~clUp8zygfLdjVpE#)-L|IDjT{r6RP((83pC6OwRYaIoTi% z?h1x_219&rJC@|1vMhP12FY{t@h9l?7ps^&qQ;UOSul)4XTo4x_4rjyce3SgQC}b2 z*rbzU6w&ITgw4Q*Ti48^^^l4_8}h@IR#j`NwpXx?j*Ew}<&Nuf=@gVU(XFsK@W;wS zvG05F%gEWJ{yeNDWgPG87|fQ4Pv#HtT#(uaxc+UR8ph>Wh|#i=e4!63{IOBj_9@Qz z82NVbpS_{x4;3sAoLH*en5gv6P#}hFy}RDdQ|8dtePZY_JsJ6-a@XB*$sgWsZ$+HuI5tG)5{dfRrxh#6f$<<6b#WXH|Lf)YD9!p7w(Il_bf=hqg%0I{DX% z7-|1%snZHE)^w%^;`6Bx$O-g&T>9N*iySLN+;+s3%VxgPrtQ4^5i?licbK!&2QTo09C+D_h|A74mMBc&C`GD7vIUjTsqkC&c%oQa(pVBF_Pn^~w9J zoQD%H?x)cV@;u^OOZJi$%v#mRdx4Fd!rZj8pjC(uo&tkrd%HNxQ8V!k{6zE+X9v3E zil&o39wP>MEjJw-XFd2QoRTjIkGVwGu5WYKZaB5=yiMI(pww@ZBtuu3C_D*zwo{zf zvinb*KF(>5RTS#3TwJeyDbA~HTX{r+sy8AekZysc<#?V$xO=*ys%=T0dsou#92wod z_|Y^*gT-r-BnY?eD7gG=@zZmX4xn8DtHtr?l6|Ho3CJyA?88uR33?DjMz1vXB+8*Q zCvn1;HeCC7V+CZN4k8o0 zlo*l6+$%)`2I45ZXxKx-eVm%9(5eDAHk@9H5x{s0biy*hJ*5)3xA9y5MYg2ozk9Et z5wdbwY@&(jXn~f_2IeI%%cOP)@O-6DP7m-1PB!zpkSf6(ngd55JQqDP1n@^RkEE*j z@SPc>$grBrggcwBaK8$xSVBCavNRjJCuy*!aP(N>UA2oj8$_^`wk!CgRB(b%bv5Sb z4!!Oou+~{^4QqlSmY>5*UDrAe&2%SK;*1;!1gX~y!q76yLa0{~&}Wu*ymIh-1ZeBV zZ9p_E2=+YH*o^)~Tq2B4gt3n)%5gt5?6$yRk@~SfN&gpBKeVP?{7;fJ2vTq-nq&SE zN|7oNC1sn+Rz8>rKYd_X;U@TvY70RLw;*d1(pcmn6cQi=(t>RS2GSc@iOag| z)xauxK)S@w;#EE{yA#~t(ITk-=mUiL-v&u>8zpil&}i12 zi~qcP6k>oki!hh8Ph_iVTAF*LG7NI)aY3(#(A~!x6IQ;F;AjR|dy63?nsDb5V!!9# zwj6ivD0Op+&7c0^atbJ2&j)ILqA5f2Ost!T(m%%tM%LkyZ!G&lPM9&je0dv=*2>kj zBuGc^U&gj~J-mW*bco_r<-RcYMAf3x4+apR>iWw;V))01E0DC%9}IHl4(jgNnRj?z zPCTnrpva*Rm<)}1>HVuf;SHymJTjV&%*?pkC;<(vin+)0=LZx-fqhhaYg~uln zf+dtrQ~~?LXHFPvop6NjU1#JX#;8!oK6G^%U$rGlf-{mk{g5u?o+ka~>JHG~)l0{fVRY;r z?I#(kUKEr&@k+s8j->M(P-#`%GErDNd&vzB*m9ImKIc?3y9C)jpUPHWcs!fI?`}D+ zqY_!3-T~_g(M@^SC@s3>Lm*ef-F_UC9?5g&P@}p2g55D+xS<*31$a5IM|L~JX(3go z+;2{SW3%UewRvvNZ$=$4@eG&d~-mkPnr=wIvsAFw#OxUMRp!JC6*CiN+8-h=49m@7+_q+0)|V#1f-4dCL; zO;^;EGMptMBbpu>2zOqU$#KsBv=Fy&HQ5C?)mI>Wk%aR8(x4A}YhId$1D*Zx7e)&` zqm{2%ICWYy<&WGXc=08+aa>aA(f7=4=%+(Wcka^308>QhwT@6^qK=8L^!-%?mWI?= zlt1xf*QXz$CiIk|D(FDANdjuq$tEN(=MITpm7DoEqI)xnttNUO^ zynvTiVP0G{`#vREJji@&PQnH)A&ZglCP#^DSdu{;?d~WQlR40*b_rJi*jt3YA1+~2uk9*8w^89i0Px9^&gx#kF?|Rv zToTKHouZ-x(9qKySRDseM3$znLMdcOC>Uax36-e_dvPJx+2FtZ=shA1cJ*@Ay$uCxspBS3AW>c{XfX&J=ANg#O7)?D$y~7UoiYo485sZ#+Bn8~ zc{P2f)oU7Zh+=h8p=ifT^cS6+It<91rt&7Ajpa)s+pOLA##Og8Y_~A@6k?Lbb}O-w z=!vr}k3*GwK+kbX92MbHAj~wc1c^amDKSV-REKV|r$4Z0P7*6t$?%f*r2c;|6pcqo zT@}k+b#ri8;njrSh{$xh671l~7w9f-rLAkl`0tE^uh6MHLz{7QP5>|v01LHteN92W z-=60rP+guw|Ky|QcqPLC)QXu5mLj7-K>d-Dk;%jT7a+~%Nz%;n*t9D#0GJdU3Jm00 z1pqy!B3ebh!nkY=_`&zph)$Ris;y}Ici`L@`f6995Fh`xfYTglD zhXBgV;bpLZ8ktHNEDg0n1~QJ+E0`nqz%jqKI5_MoqE#d%_Yuw}1A{42C-{(H5j2J- zX&F#(Z3>n*7?|k?>|DM&7Em`tt3+bzu;dav@WN6aP`WMm97lrYDH&uA;$raE>%nC5 zHT44Xc~Sj;Qkc!N)pW!9zg(HWBDCWW`pKVW6#WJ&Q3gwu`OT4;;vfWb@Q!udBt`_g=m(rKL*eoen}cZDx%wA@z|A@ICbb?bYR1u9*0?RmdE_KtOsXNi zG9|B)ff=;gn@ivEzN3Zu zGFLyj)!1DdgxNNY9-&G_SyL1v$$x|4MB}j`j{&D!(a{(T%@fGL7Cojc!;y@a_}x z)4n#Hoc2k;gHGu#7dtDPU+Cx~87?+GC{KOaUwg0ZNO3Kr8%( z6nt_Z?<(le-bpU%MhDMV9G4Mxh@CNib3qaRhx!{?$TV(`-387bKlI;~WMfP#@&46dppZ&e7z$kZfWA%)j7UW#|LN`a zzbBwdADxrC5{xMrL7(0fRA~Bo2U+hp5W~j|nsSGrHl2~_#DqZ~teLq2SCPi>782DDy{hoXOM*P$2 z`KP_915;(~byL2|M@))U5B?oOpU=6E9KHP&V1Om|Obnsf_Jfn;!LM7|!lh00Ktdi8 zBNJuR66@IVi75E*14=n{%vmhX1P?!1M@u1>Mq?pegp@4us1`{zE_B z+hbKRJR2;dr#4Q0{d9Kb>A)~T#HAalSZTbzDzwj?E|q!99}i6%ezmVJrx|&91$6=W z47)mc;}i1ojG#8V9g!#fjE1~Jfelho_MdNDP;Q@F5tZAROz~7p%W$`iM~{9+ch9`I zoH{vE-aR`q5&s1JUNo$)f{6W#?%Y67m2wujE$jGE`4rU3mR+xQ&+Y0&>HSFL%Kpc+ z{e6?1;hU?7S@iT{(R5a#4C{!@CQs&Uf;z)cX42L~_VcvI$awC^)corg3T;mn)`U&3 z(GQO{enYsn{E%wd|6+)qy=XRi^ocMuZ4NPi_YUtx#J{0C_H&bSqc>OKBdfC&=r;kM zt4SZ9zgufNe;0wPMjBV(#4_TDr%dqc7XvHE#ZQm*T4v0U&ylaut|(0RCIac;Ksh-- zJvELsLrFXp>f~U~uRQsBYu4?vu;LR^#2+5vBW@CBFCWRCqR7wD+D0$x{xOqT;~^I2 zuD_+oXQqusKAFf)d+zd7Mku=xp}lkU(|9XfCDoDg4V~{I1@L>5mHZPUC55 zIFgVx`|PXAJKuCvv3{x`HBAinQqm0%e|G#Y~;YcQ62Tc@M|K?RH;@f+Xy+xMNV8;5ta-u zRtpgCd9%vPZwJ3To8%9jG$H_%2K%{qjX=TD!kP*6zYGU=ekeyrKMOvIFN*yBA2%q0B7(_QP6t26pRqr}{7 z_mJcGYUCSg^JHn;ZnYnt8t?awJogFv@f#p>;mP>yYjhx^^ClO5?GFSY03${rHP4_} z5wv;t&%>8T5rSbI)Y1y-C)TV$44j@I_8EWf<*Yot6^i*S>dp%Nkl-=Cm2Wp!0P`(<_uxOijW=<~^L_NMPj@t*`4ZfnxY!fWL__+q z4r8n0{_5sdI;LrPSj-fi2y;J;UC5IAHTHIdxi%x%w|p!Z694QPKu49z@jzwLAMk*+jY&uHlzj~7H{{Ic~Y)b~pA<IZD5>QBJ3xWJEy+Ohoc2rmMVt4@W%!Fz1dmSjArhA(Cz%?9W0t>?Nzu4kd9CA zPjL}2SN1*RIIVKiD@FUyNtT^N=f`WF85)gNJ=#2a@y3H&0ehUOOL1}6;D-zowPmrT znQGLD27Y;Rr(osUDeZLEE$y8BBqpjVcWyL8NwbBUxi=*k?x3ky8c{hpP;Nm;Xl~|X ziOwGNL-0dqSpuu6>IiMTM?`cV{Fb|s2Xd>g{x0)sNrTR#FEiVp<;izsswJUx4)!Di zJmmF)k9?>B>DO@?4em$LRnzL{D5OfPuReW7mO{O3Su@pfP|(yl_R-MK6bR0N!Sayw2HbD*vZBjBy$GJH!DX5> zXt&;j-UFQu^jiMdq*Tg~Wa;iQV6e0Sz;uKKK%lK56ShoX&HB{l?Sbc*#QZVzcdQ&J z;A&pf&DUob>?`|;8G|dEcWE7MHF{sRkkN3i7_M#gdSFyZ*_UuSBB>LUoZ4ni*w?=+ zi!NS$K?Et}kRvh`e93Om^{eo-`$k&5DGygq&~p}i@V>fn40OKPebz>-t6eEchDlC8 z@L8~heJl*N8JN#S8#IH40lrq?4o*wO!GjqA^KS3_KwUaape&WYqAy|)Hy4!K*b-<* z4qXPuA#8cEzbf<*=ffMEcNM?r8gSV?sT1i%wg)M$0@#$uFDh^G^Eezi@ zjz7aM=X8_P^ujfqjIsPYGYSx1!Ut!pW`~DJAdF#xVQ}2Tysmg{o;zOO3kV-gB3ZV{ zI!;3a=!nTLM+pG@zvKZety}XLl?Gy>JfjcJmQgbyy>?rn>+ST#UrIB?Ah(MX0L_`e zpG`#d!(@7VIZDCHjqVs5jWcR++1u2}C*=Hs)L4(@l?BtKa@>aD)_@C`Evgbm$wEQ_ zMv|)Fv$n~CWD}WSU4ALl`bCy)+O6*gvfKQP4Bic0G+&Y>*VCkZsh|wu7wxm_L067{}ahB*h;gDFa% z<3hZXqi~vDu>EyyIdS_JkzdMTlNO#O4PRMtk@^N4O9?^t1or_wiC^@4ekN-=Q@LgtI${9|Vx7>$UDgu-q1 zWJxLD+=|0FbD8oN5POlM{ztemi>4J}=zM)ywxA;U+E<=pL6GAKYr3R87bxQfqpCHb znZC3JW7x~68>>36>)(cid~0-ED)8)z;)CQlArgin0F-8VT8TFO-#Y(dIG~9vl|^t8 zuT+lsu^yq+A$fQ#7AMs;a$TzXu;Zq5A_R%GlL{(tJX*AZIbpPr zIfkMcw%zsh&C^9aXlY5R#9ya=gOPiVdo^?k;tP=5U;M_NT`zaCzT)N|Fw2iL* z!^YxWyxV}_S4Vxs|L*5VW?I3(tv9m4PX_nwIHTB3S3X3T8b&|9$WQ!S#z67Ho+d5# z^%VPjiMw&scz@^n#LL!R6Zu#kaY#y?4%O#A!6yG6KKShmb7c+kG4;^oKv{`ZoxKn1^usNqXpcFXW+P`m7H;ryJE5tH?q zzNhm}MW>?Hb=mq6bF=uUL&{oMc0zV;S&ezHTx| zD;9*G1ZqzLm11{X-fQLML|Y8n$yznhFQ8SotH~1oN5JCO1MYt`3Qw#(RC)tW(^0&) zJBoB&Hf7h3kL^qt9VxQ=q)C@20_D-Y!f$p<(ml*rV=3=?)k(Tv5X_##`mkIuT=zF%0x#0J&o_)>_s~(#-|qOAvT5#Qr*vP%EJ6UoOAA*oP)vjv-LQ;O6z}3 z#gp-NvajS$b8_Nv83*eDn)S2=SuPq)R|f2sEw+GBY2aAW(liQ&1D*|ni4Co2H|X)@ zOIfg51fde03QDyAY2g_-Gm!j?7Pvp4XdlcrxVhP`5m8J-;OIYxNkHZU+e(~lM<