',
+ '> Running: pnpm vitest run dashboard',
+ ' ✓ renders metrics on mobile viewport (11ms)',
+ '✓ 1 test passed — ready for review',
+ ],
+ 'notif-batching': [
+ '> Reading src/notifications/index.ts',
+ '> Notifications sent individually — batching opportunity',
+ '> Editing src/notifications/index.ts',
+ '+ export function notifyBatch(msgs: string[]) { ... }',
+ '> Running: pnpm vitest run notifications',
+ ' ✓ batches notifications within 200ms window (6ms)',
+ '✓ 1 test passed — ready for review',
+ ],
+};
+
+/** Node script (spawned via `node -e`) that prints a canned per-worktree transcript, then idles. */
+function agentScript(): string {
+ return `
+ const transcripts = ${JSON.stringify(AGENT_TRANSCRIPTS)};
+ const name = process.env.SPROUTGIT_WORKTREE_NAME || '';
+ const lines = transcripts[name] || ['> Working...', '> Done.'];
+ let i = 0;
+ (function next() {
+ if (i < lines.length) { console.log(lines[i]); i++; setTimeout(next, 550); }
+ else { setInterval(() => {}, 1000); }
+ })();
+ `;
+}
+
+const TEST_AGENT_CONFIG = {
+ command: 'node',
+ args: ['-e', agentScript()],
+ mode: 'terminal' as const,
+};
+
+async function seedTestAgent(): Promise
{
+ await browser.executeAsync(
+ (config: unknown, done: (err?: string) => void) => {
+ (window as unknown as { api: { saveAgentConfig: (c: unknown) => Promise } })
+ .api.saveAgentConfig(config)
+ .then(() => done(), (e: unknown) => done(String(e)));
+ },
+ TEST_AGENT_CONFIG
+ );
+}
+
+async function closeAllTerminals(): Promise {
+ await browser.executeAsync((done: (err?: string) => void) => {
+ (window as unknown as { api: { closeAllTerminals: () => Promise } })
+ .api.closeAllTerminals()
+ .then(() => done(), (e: unknown) => done(String(e)));
+ });
+}
+
+// ── UI helpers ────────────────────────────────────────────────────────────────
+
+async function openWorkspace(repoPath: string): Promise {
+ await browser.execute((p: string) => { window.location.hash = `/workspace?path=${encodeURIComponent(p)}`; }, repoPath);
+ await browser.pause(200);
+ await $('//*[contains(@class,"sg-tab") and contains(.,"Graph")]').waitForDisplayed({ timeout: UI_TIMEOUT });
+}
+
+async function openTab(label: 'Graph' | 'Changes' | 'Terminal'): Promise {
+ const tab = $(`//*[contains(@class,"sg-tab") and contains(.,"${label}")]`);
+ await tab.waitForDisplayed({ timeout: UI_TIMEOUT });
+ await tab.click();
+}
+
+async function frame(name: string, holdMs = 0): Promise {
+ if (holdMs > 0) await browser.pause(holdMs);
+ await captureNamedScreenshot(`demo/${name}`);
+}
+
+async function createWorktreeViaUi(branch: string): Promise {
+ await $('[data-testid="btn-open-create-worktree"]').click();
+ const input = $('[data-testid="input-new-branch"]');
+ await input.waitForDisplayed({ timeout: UI_TIMEOUT });
+ await input.setValue(branch);
+ await $('[data-testid="btn-create-worktree"]').click();
+ await $(`[data-testid="worktree-item"][data-branch="${branch}"]`).waitForDisplayed({ timeout: UI_TIMEOUT });
+}
+
+async function switchToWorktree(branch: string): Promise {
+ await $(`[data-testid="worktree-item"][data-branch="${branch}"]`).click();
+ await browser.pause(150);
+}
+
+async function launchAgentForActiveWorktree(branch: string): Promise {
+ await $(`[data-testid="worktree-item"][data-branch="${branch}"] [data-testid="btn-launch-agent"]`).click();
+ await $('[data-testid="terminal-session-tab"][data-session-label="AI Agent"]').waitForDisplayed({ timeout: UI_TIMEOUT });
+}
+
+// ── Test suite ────────────────────────────────────────────────────────────────
+
+describe('Demo GIF frame capture @demo-gif', () => {
+ before(function () {
+ if (!process.env['CAPTURE_SCREENSHOTS']) {
+ this.skip();
+ }
+ });
+
+ let repoPath: string;
+
+ before(async () => {
+ repoPath = createDemoRepo();
+ await seedTestAgent();
+ });
+
+ after(async () => {
+ await closeAllTerminals();
+ if (repoPath) await rmWithRetry(repoPath);
+ });
+
+ it('captures the parallel-worktrees + agents + diff-review + merge story', async function () {
+ await openWorkspace(repoPath);
+ await forceTheme('light');
+
+ // ── Beat 1: the starting point — a single worktree, real history ─────────
+ await openTab('Graph');
+ await $('[data-testid^="commit-row-"]').waitForDisplayed({ timeout: UI_TIMEOUT });
+ await frame('01-graph-initial', 400);
+
+ // ── Beat 2: spin up three worktrees for three parallel tasks ─────────────
+ await $('[data-testid="btn-open-create-worktree"]').click();
+ await $('[data-testid="input-new-branch"]').waitForDisplayed({ timeout: UI_TIMEOUT });
+ await frame('02-new-worktree-dialog', 250);
+ await $('[data-testid="input-new-branch"]').setValue('auth-refresh');
+ await frame('03-new-worktree-typed', 200);
+ await $('[data-testid="btn-create-worktree"]').click();
+ await $('[data-testid="worktree-item"][data-branch="auth-refresh"]').waitForDisplayed({ timeout: UI_TIMEOUT });
+ await frame('04-worktree-auth-created', 300);
+
+ await createWorktreeViaUi('dashboard-polish');
+ await frame('05-worktree-dashboard-created', 300);
+
+ await createWorktreeViaUi('notif-batching');
+ await frame('06-worktree-notif-created', 400);
+
+ // ── Beat 3: launch a parallel agent session in each worktree ─────────────
+ await switchToWorktree('auth-refresh');
+ await launchAgentForActiveWorktree('auth-refresh');
+ await frame('07-agent-auth-start', 700);
+ await frame('08-agent-auth-progress', 1400);
+
+ await switchToWorktree('dashboard-polish');
+ await launchAgentForActiveWorktree('dashboard-polish');
+ await frame('09-agent-dashboard-start', 700);
+ await frame('10-agent-dashboard-progress', 1400);
+
+ await switchToWorktree('notif-batching');
+ await launchAgentForActiveWorktree('notif-batching');
+ await frame('11-agent-notif-progress', 1600);
+
+ // ── Beat 4: the payoff shot — three agents live at once ───────────────────
+ await openTab('Graph');
+ await frame('12-three-agents-parallel', 400);
+
+ // ── Beat 5: review a diff from one of the finished sessions ──────────────
+ const authWtPath = join(repoPath, '.sproutgit', 'worktrees', 'auth-refresh');
+ writeFile(
+ authWtPath,
+ 'src/auth/jwt.ts',
+ 'export function authenticate(token: string) { return !!token; }\n' +
+ 'export function refreshToken(token: string): string {\n return token;\n}\n'
+ );
+ await switchToWorktree('auth-refresh');
+ await openTab('Changes');
+ const unstagedRow = $('[data-testid="staging-unstaged-file-row"]');
+ await unstagedRow.waitForDisplayed({ timeout: UI_TIMEOUT });
+ await unstagedRow.click();
+ await frame('13-diff-review', 600);
+
+ // ── Beat 6: land the finished work — commit + merge two of the three ─────
+ const authPath = join(repoPath, '.sproutgit', 'worktrees', 'auth-refresh');
+ const dashboardPath = join(repoPath, '.sproutgit', 'worktrees', 'dashboard-polish');
+ commitAll(authPath, 'feat(auth): add refresh token support', 6);
+ writeFile(dashboardPath, 'src/ui/dashboard.tsx',
+ 'export function Dashboard() {\n return
;\n}\n');
+ commitAll(dashboardPath, 'feat(ui): responsive dashboard layout', 7);
+ // Opening a plain repo as a workspace migrates it into SproutGit's
+ // managed layout (`.sproutgit/root` bare repo + per-branch worktrees) —
+ // `main` becomes a worktree in its own right rather than living at
+ // `repoPath` itself, so that's where the merge must run.
+ const mainWtPath = join(repoPath, '.sproutgit', 'worktrees', 'main');
+ mergeNoFf(mainWtPath, 'auth-refresh', 'Merge auth-refresh', 8);
+ mergeNoFf(mainWtPath, 'dashboard-polish', 'Merge dashboard-polish', 9);
+
+ await closeAllTerminals();
+ await openWorkspace(repoPath);
+ await $('[title="Refresh"]').click();
+ await openTab('Graph');
+ await $('[data-testid^="commit-row-"]').waitForDisplayed({ timeout: UI_TIMEOUT });
+ await frame('14-graph-merged', 500);
+ await frame('15-graph-merged-hold', 900);
+ });
+});
diff --git a/packages/git/src/__tests__/staging.test.ts b/packages/git/src/__tests__/staging.test.ts
new file mode 100644
index 00000000..f14735fe
--- /dev/null
+++ b/packages/git/src/__tests__/staging.test.ts
@@ -0,0 +1,75 @@
+import { describe, it, expect } from 'vitest';
+import { execSync } from 'node:child_process';
+import { mkdtempSync, mkdirSync, writeFileSync, realpathSync } from 'node:fs';
+import { join } from 'node:path';
+import { tmpdir } from 'node:os';
+import { getWorktreeStatus } from '../staging.js';
+
+function tempDir(prefix: string): string {
+ return realpathSync.native(mkdtempSync(join(tmpdir(), prefix)));
+}
+
+function createRepoWithOneTrackedFile(dir: string): void {
+ mkdirSync(dir, { recursive: true });
+ execSync('git init -b main', { cwd: dir, stdio: 'ignore' });
+ execSync('git config user.email "test@sproutgit.test"', { cwd: dir, stdio: 'ignore' });
+ execSync('git config user.name "SproutGit Test"', { cwd: dir, stdio: 'ignore' });
+ writeFileSync(join(dir, 'a.ts'), 'export const a = 1;\n');
+ execSync('git add .', { cwd: dir, stdio: 'ignore' });
+ execSync('git commit -m "initial commit"', { cwd: dir, stdio: 'ignore' });
+}
+
+describe('getWorktreeStatus', () => {
+ // Regression: `git status --porcelain=v1` prefixes an unstaged-only entry
+ // with a literal leading space (" M path"). Porcelain status/index codes
+ // are column-positional, so if that first line's leading space is ever
+ // trimmed off, every column shifts — the file misreports as staged and its
+ // path loses its first character. This only shows up on the very first
+ // status line (a whole-blob `.trim()` doesn't touch interior lines), which
+ // is also the common case of "exactly one file changed".
+ it('reports a single unstaged modification as unstaged, with the full path intact', async () => {
+ const repoPath = tempDir('sg-status-single-unstaged-');
+ createRepoWithOneTrackedFile(repoPath);
+ writeFileSync(join(repoPath, 'a.ts'), 'export const a = 2;\n');
+
+ const { files } = await getWorktreeStatus(repoPath);
+
+ expect(files).toHaveLength(1);
+ expect(files[0]).toMatchObject({
+ path: 'a.ts',
+ staged: false,
+ indexStatus: ' ',
+ workTreeStatus: 'M',
+ });
+ });
+
+ it('reports a single staged addition as staged', async () => {
+ const repoPath = tempDir('sg-status-single-staged-');
+ createRepoWithOneTrackedFile(repoPath);
+ writeFileSync(join(repoPath, 'b.ts'), 'export const b = 1;\n');
+ execSync('git add b.ts', { cwd: repoPath, stdio: 'ignore' });
+
+ const { files } = await getWorktreeStatus(repoPath);
+
+ expect(files).toHaveLength(1);
+ expect(files[0]).toMatchObject({
+ path: 'b.ts',
+ staged: true,
+ indexStatus: 'A',
+ });
+ });
+
+ it('reports both an unstaged and a staged file together, each with the correct path', async () => {
+ const repoPath = tempDir('sg-status-mixed-');
+ createRepoWithOneTrackedFile(repoPath);
+ writeFileSync(join(repoPath, 'a.ts'), 'export const a = 3;\n');
+ writeFileSync(join(repoPath, 'c.ts'), 'export const c = 1;\n');
+ execSync('git add c.ts', { cwd: repoPath, stdio: 'ignore' });
+
+ const { files } = await getWorktreeStatus(repoPath);
+ const byPath = Object.fromEntries(files.map(f => [f.path, f]));
+
+ expect(byPath['a.ts']).toMatchObject({ staged: false, workTreeStatus: 'M' });
+ expect(byPath['c.ts']).toMatchObject({ staged: true, indexStatus: 'A' });
+ });
+});
diff --git a/packages/git/src/staging.ts b/packages/git/src/staging.ts
index eb85f7f9..dec12d27 100644
--- a/packages/git/src/staging.ts
+++ b/packages/git/src/staging.ts
@@ -97,13 +97,25 @@ export async function resetWorktreeBranch(
function parsePorcelainStatus(raw: string): StatusFileEntry[] {
return raw
- .trim()
.split('\n')
.filter(Boolean)
.map(line => {
- const indexStatus = line[0] ?? ' ';
- const worktreeStatus = line[1] ?? ' ';
- const filePath = line.slice(3).trim();
+ // A well-formed porcelain=v1 line is "XY path" — two status columns
+ // then a separating space at index 2. But `gitForPath()` constructs
+ // its SimpleGit client with `trimmed: true`, which trims the *entire*
+ // raw output string (not just its trailing newline) before we ever see
+ // it here. When the first-listed file is unstaged-only (index column
+ // is a literal space, e.g. " M path"), that leading space is the first
+ // character of the whole blob and gets eaten, shifting every column
+ // left by one ("M path") — misreporting it as staged and truncating
+ // its path. Detect the shift the same way simple-git's own built-in
+ // status parser does: a genuine separator lands at index 2; if it
+ // instead lands at index 1, the line lost its leading (empty) index
+ // column and needs it added back.
+ const shifted = line.charAt(2) !== ' ' && line.charAt(1) === ' ';
+ const indexStatus = shifted ? ' ' : (line[0] ?? ' ');
+ const worktreeStatus = shifted ? line.charAt(0) : (line[1] ?? ' ');
+ const filePath = (shifted ? line.slice(2) : line.slice(3)).trim();
// Staged = index column is not a space or '?'
const staged = indexStatus !== ' ' && indexStatus !== '?';
diff --git a/scripts/build-demo-gif.sh b/scripts/build-demo-gif.sh
new file mode 100755
index 00000000..72b4adaf
--- /dev/null
+++ b/scripts/build-demo-gif.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+# Regenerates website/public/demo.gif from the WebdriverIO demo-gif spec.
+#
+# Prerequisites: the app must be built (`pnpm --filter app build`), and
+# `ffmpeg` must be on PATH (`brew install ffmpeg`).
+#
+# Usage: ./scripts/build-demo-gif.sh
+set -euo pipefail
+
+ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
+FRAMES_DIR="$ROOT_DIR/e2e/test-results/demo-gif-frames/mac/demo"
+OUT_GIF="$ROOT_DIR/website/public/demo.gif"
+WORK_DIR="$(mktemp -d)"
+trap 'rm -rf "$WORK_DIR"' EXIT
+
+echo "==> Capturing frames via WebdriverIO"
+rm -rf "$ROOT_DIR/e2e/test-results/demo-gif-frames"
+(cd "$ROOT_DIR/e2e" && pnpm demo-gif-frames)
+
+# name:duration(seconds) — pacing for each captured beat. Edit alongside
+# demo-gif.spec.ts's frame() calls if the story there changes.
+FRAMES=(
+ "01-graph-initial:1.4"
+ "02-new-worktree-dialog:0.6"
+ "03-new-worktree-typed:0.6"
+ "04-worktree-auth-created:0.7"
+ "05-worktree-dashboard-created:0.7"
+ "06-worktree-notif-created:0.9"
+ "07-agent-auth-start:0.7"
+ "08-agent-auth-progress:1.3"
+ "09-agent-dashboard-start:0.7"
+ "10-agent-dashboard-progress:1.3"
+ "11-agent-notif-progress:1.3"
+ "12-three-agents-parallel:1.6"
+ "13-diff-review:1.8"
+ "14-graph-merged:0.8"
+ "15-graph-merged-hold:1.8"
+)
+
+LIST="$WORK_DIR/frames.txt"
+: > "$LIST"
+for entry in "${FRAMES[@]}"; do
+ name="${entry%%:*}"
+ dur="${entry##*:}"
+ echo "file '$FRAMES_DIR/$name.png'" >> "$LIST"
+ echo "duration $dur" >> "$LIST"
+done
+# The concat demuxer ignores the last entry's duration unless the final file
+# is repeated once more without one.
+last_name="${FRAMES[-1]%%:*}"
+echo "file '$FRAMES_DIR/$last_name.png'" >> "$LIST"
+
+echo "==> Generating palette"
+ffmpeg -y -f concat -safe 0 -i "$LIST" \
+ -vf "fps=12,scale=880:-1:flags=lanczos,palettegen=stats_mode=diff" \
+ "$WORK_DIR/palette.png"
+
+echo "==> Encoding GIF"
+ffmpeg -y -f concat -safe 0 -i "$LIST" -i "$WORK_DIR/palette.png" \
+ -lavfi "fps=12,scale=880:-1:flags=lanczos[x];[x][1:v]paletteuse=dither=bayer:bayer_scale=3" \
+ "$OUT_GIF"
+
+echo "==> Done: $OUT_GIF ($(du -h "$OUT_GIF" | cut -f1))"
diff --git a/website/public/demo.gif b/website/public/demo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c58ef7ff2210a9e2e8cd3c76641b4008e6af98ca
GIT binary patch
literal 414244
zcmX7vdpr}~|Hm=R7@PYw<}ReU4>Pm5Rqi2#+*8Edib7+U%Up|)L?}s`LMmy@{eCCc
zVOXJ-)W@y-`aXWoa~|h$&Ohg$b9ukd`@G(k=PVEgJ~#k^?Y|QiRu*n{fB+YlC@-%R
z6e2As029=c5f+vgLCA@TDN9MINnJi8Eqw+CJ1cudOI}_}Nm)Xs{
z@(Q>T=R3Jkg(NQw#y3JD5|21mDCj%mll^i
zFDa>e_@K75w5qi9W$D{zr5~O@nr$q@o0d^(A6HkGKWTpQq~=N6i>jyZtE*pBSJzip
zldG%WR983tug;X#yl8vg_NMMtXMKH3{j0`ThvAli_SV+U){U-@t=*qGX4=R4sMKL<=KytKxU;LTr{F>F%t&9~bYK5;-@s&l
z@ATl{=*aZ+=;*}g((L&7-1zwX`1bt7#N5=<{M5?)^z`SM4cg4k^2|5d=ULj^-16KU
zZE$jb4KbP%o=JxiF
zo!~1wJKw+m{J~`YWd7RSYqQz=`Fn3~@7F)}fB*jd-~Pe=!QtWYpX0xO|DK$ju$-{S
zp77Y3J6*(@+M8=>zyYi*EG)7I?Ce}DGA!!<`YiuDCM;YhEdL#>ZQ8+12^>HrWDT@}
znhF&^?_u?0#Vk`;KCrchzp^JAW{|O9wYz3@PZ9eR`COoSpb+lX?{V(uy7fa{zm3-C
zg3m_E(6QW$=k_-3E6oW?#il%@XY$pa
z63@)Smvhay<$jwBGdC7nZf(vjWF8g0mfpG#wZrQ6zKaQ|&D
zzkPi6Q^N5P^XEj*rz@Z0Pmcf0EaTs2Jt#}$D!Emj1bQ+dn7+a~q|0qj54RU<1*@a_?nxOVs=h;*VH~n1LS+!v!xa
zHXGLbPX0Npxq`esW=tFPJ8Mj%2s)a4V%O^Yl<19pUQ``>afDJFp>VbX1oG!S1C)J(
zRm{`cV{{4s^0lD;bsB^}l?juG=#YO9;%*#A>L4nXRBiXGKCOEaVT=Ts4Z~MEpQM{m
z)#Yrp#zyxFidP!9>c@Iu>@LV(OTlLmThL$;lb6TAzdn5;S#EjlKs$i4Rg`;Mj{%_b
z_B!wP4OCp(HSR0DN{_9yyL>dcBm62}>4Jz!UfGFOW^v3jamE7Pj`!{5Sjg>|@B8|3>VtJ&Sq4taS|_tt-Wd6-2%Dzw_@Cm4+`?H5U&&MG
zxRx$4GK>^p%^SnOn%)2>U6f402}pw25R+((
zGtC%307$RG()8^$d9Wp4#H*MoXq+a&Cbv?Cj!x0I|5PN*46go~j8);lfc1Nmq$-dD
zr{|cY3m!?ZPBQiM=p>)t{uACM8t}A|ETnGm3GXvruhk^
zvz&U>o0n$dfxQm&VU<2eJjqZ6=c=`hK0v0m^NOcYMA^ex^><|f+@ZeUzxF;RyW#0(
z$Tf*o*tGUsMQ#vjO(XENm!8k9LbR+ryCyW%WDxHdBK2BK77hRo;@E;{RPIKVE>L}1
zj_0H|FlZbIx{2lyU}RTyU+{8#;NJRFF6X)X&z{{;*_@lb0BI&!6-iIb-uhx*5Eql`
z1k%iiJg5wA>s@k&CqaI_+j{wxTGmQ?W)Fp7d(Bx6rju6XAV~9oNWoRa!7qy~r$m~--$yj5g4r%)Gn;F5`TIV1`1Bk&s5ftt%>aofg<7^5vA
zg|bO^wy~UA{_W(_T(0PsJzp|fyWK5hr|G*<<$?Wdu0H4}Xm{7=PQ
zx6&-4z%-~f_^jKXJCJ9`>T)UMHHB;<=6Ce$vL}-xG!f(A*slQN5VLr}!3eGRoX~kK1
z8`gib9LxTNc3wDnv>{%KEc3=S@sb6aJ0Xo$b_7p6+v<~)*jNDsG?;3ajD4-8d5;_h
zg;i~{q}P%tV$DijC>7e~19#ZIzxh%oT4O0rbxkG_+&T6K0{a&s5HNC;RX((_DC;{GzCI+V_@15=gHB;@3;N
zf9+NWN?;7246Ts4S=5ONEa1BAh~~O~AyKo8-}7#W96x)*g5owAQj*sJ`pdinS)k-#
zwr@(wFcKL7IPO^2Bkv^yoM&<+XR?7N^`61Xe;eA*@3AWM-g^_3M&r@n?*J`O5{)}o
zcH&`|xh82n3+GG|@8nkkk8mC8-xv@@*nK~`D$eb(T3T?xlsc|KP^5Iq*+4g$rKmA1YmQdM4vul5j?)Drj%deri{MS&)xjx1X7U(LzDLo|b?H%9JJtb!9Ee>(#5bxyIH@)bs&`P=%m&-#F
zRKrBrj`H2^hFru)9(zNM(0oOggvF;Jq4=<`6txjJ$MZL0ZB8P`x#$1D*ze^+MI@&HW3`CN#;%=)Cra47xuJaYlnXDQw&o-pBZqwSSXzLJr_;SWd_h
zj!&|j@EUhZi6um>*NbY&SKb6shhpB81B!ZXL8EyQC!+=na5fnj-+y>OUee`1I6j6R
zrypJzm|}M&`uu-|(5N+twLSMADBE(m3%e{BiHB&C`4CM!3M{;hP}VdWWSNCm#~D0J
zfym;_8_|HE)o{sMB#8&4?i!L^_4!PircWNkL@2{}06K3V~xOGJf4Sq&pTkwWRi~?Tc
zxaDvLop81q7|&@O_r^Z!vUb!lg~gcy>4dU$vs_g|>s7&6R^eC%8mi+D(ZV^Ct9fkE
ztlea+k&hw$5`W-0NE3aL!5|sAVWq+
zL4SbwlUv0l;`rigk|y11k_`}ylF(5(C=<=KbP4(b&Y4L8UVScrok+IOez?LSx)%|!
zJt^`#(!>YO>)?SRSWXottLb?
z@TQsx>--?0X!aU!@Q}UmGa9=$Gw?%{f@Z0rZ0+gf-QG;Dzy={8<7L%J~DlN-5y#c**UdX3Y6Jg5!
z9vyXfat|t-tSPdgN$f8!a(n*pb8*r2=O#XU1F$e^Ik=3ww%?ntS{4#VpL_9BEyhnYC_-R1}d)fCKEBveO6yJVc@}7LZpA0=B3v7|$
z4NtRgKTz(dJe&)ktbN(3O+Kh?kdu6^aOahL@N30^h6iJ0b;$;y`PYIxZ_aML*1G&g
z=j6_t?uG{C7jI5~c!QdMgU)=78F+&|dV>&ngD`qy^`Y_ne52k#quo~HxetC87aCnI
zH@QkSUV72wcDd2xsHtD9$=9gKpQkB6tts$fbI^xozaxIHqvp#zZ#^a7Mj5@m$Gg=PHTSyNf>02$CJnyoOTJB4}D=>Oj`0!oP
zhj;n&?;dQuE8%%xdi1VJ@_n_@`=<}z*L-;YWd8lLt@pJ&AL=f@KY)E`K6>9G`Qe?>
zhxhXzT8}=w-TKhZ)B3@vwfk~wuUc#0h1UN0*1@CJo~_m~o{s}YAEz&WEV%4CPve~%
z__#{`xOgJjw!HO`X4JNNxs7q5?dzSkt>CtA58JjSKYgEXV;X(hz5Hqa!l%PKpN@h*
z{eAf9Sdwxw|A_@jVO`*zgz>R?P{7s{zE%n(gd(s&fqJwHO0^5cwTqOtOOe{8Tia#o
z+T|A7VICdwQXL9$9ZIDg>LlY>wYRq=slj=C8!+nGIO;7Psv(KGcfJJ`(t?hI?l9v`
zJz5fvsFog`R@PEODhOK-b$j&+NA(D&<4(sxsu5V3J&|t%TB%n`b(QM&Ms{DRgPlW4
z+^g-pt}ewycV0N|4i4#z0QX!i6|isOTgLO=ZtaO%=t(&4!5{a$_O0+Q?K+>&x9r!O
zaiZQG(At|a*h}|0?YEjC3uhJe?&HJtiRShd)%BIO_LWKXKSK7GhxGBo5@yjok?Jzo
z*8b?aezH_ggGbNkYlsV(g%8RqienYWv5HX!+Q5UK76zzNgPrPwy>Wy6tpkF&ePyG)
zxnSAL3th0S-qGXU*|?#(R%(_bI}e4mRf<&{HcUqjZ+Hwd;)cJL4sRoeX{D?@_8^?$
zKz*yg4N}AF(veqnBfqRiO8dl<9f#8RH42zRAHahj76w4^qug1ee2b&dp;3X4qo75f
zuA-soIO(+3p)t~!q{^uDsd1?+WW2K=6P?4M36b??-B}plIv&?JHSuwq<>2HQ{|?kN
zJE=x`azxakQ+MJn=hn!v`s9(vBv@W7^D^XBMpo07*dogd$2UBJ%mK)mv5!(?LY`A@
zSyRr&!?pXuYn0o^86qy$T~i%~@}8m-+g*1wr?pB9Fu~IY+~a>mUK^|M#hgi%do*_H
zWfL-y=UHq?3BF`OkcU-OU=2?WTm>zwPw=r!Y)B2~o|#|_vhuO;O3Cu=G6mi!@UkcJ
zl);9x28~n&4w!azK^
ztR62%`EhKtx+(th0if}i`>ADdJS!g_{Mk>5j((KNuThED_(SHVQiT8f$%?$}SYEuiPuhH{85l6*o+wJ9wUY8aEZHF;)&{oU0p=7{w>itrR03Rh(~O
z5j%kLXi^te?O&D`sRiGI*rD_~5A|9owtelOZ)oURIrpMt;tMkO;LvllPGUf%elT_B
z&f<)vq#&Kf1!&;zW8p6u<<-c`<8>I7qKykuSf`)>z7sg(>o&_rG9bs8HT&8q4axW}
z#hMZNWqXj7hlMxl`DbnZ)0Gr(G!;aFLI3&kXw3_#dr|$XEDM4a5Hv0OWyP6eCpm~^RTXOxH=hEe&0Wt5TStwvNZVGsc
zbruSd@@D0Ma;MoZ@sU}0;H=`g10POWSw2Xy<`|Fd-B`X&{kNGNLWlG$MQ9CZu4I-(
zmbND;V=t@v5q%Vp7a=feN93yXsWm*vK}NLReybFxJyt0n>^anhXVqlk{bLW3r2t;I
z&K$#kyUG^*CG<fj&_)&(>yk*n`irR~}Q?KX`MNk$<*ETB>S;qi=}T!+4$Y;zn4&
zBX}OBz3_i1m3;65JecNVZ*B(-9
zFU+JI0%Z@f3a2CL|9GFc2-4B`qw?dwEMUJ}hs;r4t-M)YAEl(F;UUt%6ppQ>ltD)_
zI>E{!A5&i6ev<
zv+=6q)Y(Oy$nAhr)=X27d{u5c=uF+e=g09E2vQ&NB$
zgZm!d@fx(s=g{hq$G-Em~x88mz#1*s7b$v^>F1Hn2KqOaIK$HyP4k3?TJQZZ8AvTZ1?0U^}&koby?~*_6=fqeJMG
z?a=}U-}ID|d#<|*PNSLcSFop|bbbJf%(Z-@>}`H75bu#CIHE6_YV&HIiokqKD}-vW
zH9by9Zb-rgWsv1KeaN3HsPVsxfe*#%+EbIG5%(2bB7)mn1t<=Q&IJ
zTTZd}9w+1*)XKO%X%CW#{TqDxQNpfxmyCzk?z1v;IzRDV+*ea#XOPD`739^29K(wN
zjW1Q5exiQ{JdP__F+)ZSpHh6B(AtoU-9L2bdhCP$0xt|b{A~I7HcmEG=3?{po0GYt
zpNUiV6Im^)pq?w8!k0ui0w2bcyEsG%{J)h&P)F}9C-aFS?-}t~dc};&2euN|svia(
zUVHxNso}}j+6vn_Oa#}t*!%v!W!XhaMZN@@hIjDP=5vVTt32USrx;UtP&wbOl9f2xvZr0u;YejX+8wtwNh&jiA#bP+`-o$
zJ0M&JWPID|@0YxCj0BnZuJGNZQ-yz}rRZ~~-M_7lH6-IWH0FF7u%GK=+TD`1`23~r
z*7=?YH&D7_*sb{P_R5Q_h!cm8D@gNoNiuz~R13Up)_HTBFg2*}s+P{ZtEDvoh#wpu
zl6<9$!B~l73JGYc(h=X;p=gvWcl0Ev^|Ti`@q$Y7t{Ht{-|4PBZ!bbx)0s
zM?3Y%8@$9bT^9aw7xVX;S%3(Ngn}!DO$las>P$K;jgg`-h))a~?Z|CJbg(6}vb&GM
zMA1;r{F_zs+7+OS(yM)stSxvkxK*d8loc)4jjZR20EZSzdh=nsflYI*%($z$6`G-%
z(2|t;Kw-{2pZ|loQ>ODJf}n&j7u;J!+f3AyXb|-7d97=Oz+bL*{lenYN=|HMTPJDl
z$U2{tOjlC@(F0*U3|u`yXg~&?8;H6I&AFE3U~>#3o<3g5bbxlq47fTuFM&vv9_-RB
zv>q*7Z%#?NyyuIMVl{fAz{Nen<5L1a*{`zM8PPR13Us1Yh*lFcYfW7A2WMQWDet{5
zUmw`Td&t|VdN;}v2~H%jlU<@lXG4~A6qgv4K~(F!s*5zhDVE=J9Y~1f
zzeoZg#96y__bRxF-J{OC44{SQ5AZF4rWaS%Ra~=9ySz%Bs`E1rb{o6i2*{)If4J@2
z?~2h|CSj{3S+nO(0T8{$F6v6rVE(A`ErsPMa3!7q>g;*#5aj|>
zxL)sh3;xWsYI(3K$QIBtU|tg*RbP~}Y2nL<%9W29z;*dqgm9~lcJdf;4JzI@3g-8
zWY((O0YgeTKkpNX0dSbK>K0u2`98SDPiV}ZQ#Q1cn{5ezJVk;H`d_>kipR-}iKQSy
zCc5%M)=XL`U)-H4(6KE~0+rsoxzigmm}!73B7oFCZAsL4T9U-K-cG%!8LilB;bNs+
z63X}=;`4P~LJRf-@%xGCH;Y$0##J;mRu%a;Ma45e>S~4EJ0a2K&wlQ+d^%@tF%o@5zMR!ol$SVI%L-?YluRJ{eDCB^Q3iA79u3?!ELg=|v2L;ZW3~xDuo9)rS!4H0Id|v;!GR#f
z@oyE^;$y0!5vR9Mh>zDCUpT*fs_LepYHHi;vM!uNwIEK*k{};Dz#ZsrBq^D?>-yKYWJUR1D~m$iE>&R&A^8uwr>V!`Oc=|WIKzrZ|2M1D!{}Z~Nl6&7OcQ(k
zj?qhraA90cH}6c-mhTb+sxQ@?6B;xit@_o{aQunINkoxaBr`?~USpblFHk{6C(WQrRX@Zokb8N_2FZwLgipo|H?wd-I+NId@
zru?`+_;QC(-d7I1m#r)P==LVfReNang+ej@qgDqOj5S^>bHvd2cP-`&+efuYjP(87
z<$jFxF=k2-J1tK=BZbvg$7&$4y4KVa-6*PFGPPPo>4vPS%enR^2cK+K5}U@}Ec&&f
z*v*!Yu%>(13^coQgkZd*#GGH}{Y+H0mT8QU8cQqoMTMCJQo@yLYSn3WO2L48yVHK5
z)1kH9anJ0ckhzmW*G2y>C*(UsD|e|1Czz=w+h{J=*>zdSFawbo8-vwhx6lK3>myrz
zlDn=5b^Duj2Ozrxb-J%QSzIMq1SOMPq+XE9Q@F(1z!VlfN?z!(MHt;8oV_O;+!LwO
z6Qynm?!|L(u`+LWI!ATI-tW2H*m->M>G?(rXL?Wkp5^UrOZ>6r9jRWtf>okfFTr0a
zFd6Dr$7+~l1x)Krzu%it)q9fJ*h{MF1(B0{ViDK;d#?%gsqS{<>YU3pJ9pi>FVCaz
zo>Sig|8qr1Y|5SqU$}r8f~|D2uaw^RXs@q~z5lULf2kR}KS-Bg)}Q3mpFG)FWo`AW
zs;`>V|Lp$xn#TUx&hxdC=PRzAd%SN|ynUW5G*D!%MQ=}UA!8by1{(bbnxZZ=D_nR$
z8X%VrG~6HfP<5fTs=F?#1a<_UXDD5At8XTZo57qU*XSewX9%{XB5z~?yy`LIQNe#0anhLR*cCwj`8v0+QSzjqoAfyaMvhr!6@HH
zd&rbMbbS<}I0ij4#;-djWIo0}M2yJ=I{fo~YFNdq$Hbe)B)Y~Vr^ck#$4>nkldg7<
zh9%ne0%L=Sx9!vAZ5$O|0u^sKDn*a0q>P{T99NBZR4Z^)uO3%hA6MTQKl5uG&M~1m
zHLmr?QCs+;j^f0LcEE(rjS1c82}H_-f%Al6{6(XJi^%E;qxA{o&V=!=3G||4gcvYY
z-U)lgDfPl6*4fD{deS1r$)aG=yn52|k<*2jlU75M7p9!7e@)tQINJ(O*(grgopQc-
zX3E}X>Y}r=Q}mQe03wu`8f68HteLvpH09AXc7~CZcO7ydF
z@$+=?cb>i);1U!)9aKGit!X;2%jMe8^!3H*;Hl}bbr;;PX`JFrxb94-`K551nF!CB
zNavYb0heN;XJV>nVw+}ec3p}cnz_9=b7yMi?)pqv7BJ407%MiLWb8^%bWJgzO|h9J
zM$e|*m`x9uJ;_LM&G_h=S>T%0HJddwoAYZncV{+leKw!NE#KJfp0Hbi`R4+g&ksC5
z$HIVNv&5KD;KQ!Z52rqtu77^?>vI{$++*Rn^7YU0WMX^^u+rSU+Geiu#$0u@`_qEC
znrio&rnzTbbI(7zzZ{yY-I;s&%e`KBo~(G8tULe8e7?c>a+A&c>l^b;(U+SG=3A;S
zw=~Va?V5l0@$$!^`S&~XAAenLbDocZEkwf>V&DrM#tWV13tiD3T`3FQSsvZh3q1u3
z11}f)nidAT7KVO#3~?+D^Lh>|E{+HD-
zZP9Dx%+mLDFXpc$rsDDs-Q{oQSAN(m?|Lr(bYA{1;L3jV@_zO5LDTZ@t}6#a%ZH20
zM^nou>sMHQFSBecC+X5+5j1uS8ixywGmr+nN#jbTfeLBdPiZ{OG;lYKcbdkxL4*9J
zK{;3WMSMWnzz8TX{F(!6lN-y872%scB84krPkqFiS44+DS2h9TM}4IA++~(lq(xR`
z{)q>aR^|0p6*yNFHGGxIRwNUArLtE~*ZZ8V_f<_@RhwQ_-|$uY=BxgD70$V)x#X*<
z;ivU?^+elcO()P#JJe6-<{Bb(&A`jgpnlCj$%8PoMx9!VVXT>Ktf80IOn>{CYWQO~
z{mt~~W+=KvAl=f7ZskHhchmn|z5n@Cf9qztbsOCRwP3qJw_l<=EUm>tiQyFD+z{~2
z?4omMfJ-y*Qg(oA;kx_N^~(wC9@*=6a*2^az~~_070y5(zKtsy8$No0zAhX7fr0)v
zH~dmJ0uufWiJoNvp3MOv-Rr>{8zJ8|Zv5WBac+iBZ$$hJj1;*VrL-9txEU3?8GUmz
zCUrB`W%G8z)jNe(o%^}7Sf|B#7Div#i`BL-!=p1IlXWGyUdBrfx&M>x0URA%
z$)};}oTFPxVc+z=f42w|?*_j5cD*j}`+qmT?=M~7FAF;e{eIZ}{b>05MT-FErH#eK
zf`^MCH@bl_49@6Wp<7nKXgu&1ni$1m&u$6iup@$=O@T(7qg|OmOW-*NB6u0cVaJ3j
z|KQgT=XvGK|CY(F3=E}hRNWYJ4h%@3ZM$a!-<4cFu??BsxN0EIblV_~o6hxlh1{q4
zoVqo4DRABWTVrsun|o-)(BF+yA~?BQ5tp)waic`XI{`{Fz_{56Y1>WpS3k5)ew^Uj
zfSSa0hlzlAm2EB2e9XKbZ0?OE3*dDIS8PzK8+mFj6&O=~{qk8;F7N6$U+O*JxsM4-J(0
z9uFf1rmagzhh;7i0};R&+z+d}J8@8z@KNHpc&_?0&e-0FjBa48t4is5z&|N%0)n`B
zrs-VHkG-diKzZ3>jqAcL&+kBqrLwsj(%FNWt5h~cO-j&z*{#>}Qh*@wr70m5)ZS22PWh5bh)
zFpQEMZV!x|O}^Tasv$u;|r@C11S0nD9d1#cxPfk
zf5&S>#9;XE$mY*Wy6(;*k1yn=BorM_K3;FQ`6$pkvC#e7+|aF!f*&X2=e!ipo=RY_
zUYSkpezjv;;n>g3JRSZc)+iSb`$69x;gyn4^w|oUF(qYZZj_OxsALHkpY?9OL
zWHiE$VBHfyO+_s6_t!@xGE3g4=%1@Ae*ICNt;HWiOe;9wJ|DEWCdcJpI~p{@yL#GJ{+1#`w>h
z2XR-p#nGNe&hYjjA`fbzk}d&m+J1EU3Z@<8g+kq{Svg!8c=V0ALGO#Sw2k|?K<}%5
zHKTFM*l%E=PagQnGbV~r-{cveb48eg(UD{FMvC@Ny0ah2hdip=fW`iyM-ChR4RNVJ
z{AS+EK}uw6o=XzRue7^<#Eg7w@?WlYhxQ>(Y~GA#t`cHmxI?W#eJvU#nH=|O+h$0)
ztBj!j>P%2kDxrZRN&jTSv~=#!r#Yw{`Wr!mzhWzyD7sE#4)Vm&tJtpafWjqN^6L3%
z2CyT8g~(zFh+D|!*KwpJW$p*nx}
zJwAp{c4&`EH*ktz_+gGqsSuRl$LSI6xS(De;UR_h=j8vAu*0Z_3}0Cy-O0g@a5m{P
z1gU-a##&x`xNxH(U(V?Cn*qZY>Wy#us5$yi7qt12l|>yJ1v~qK1Bk%CGufz_>$9|`
ziSCOKl(&WZ9N&H6=1E7T!#9(yKlUadAFcU&!;pXXCge>HSEoiU9}BgH<%F%zhaoph
z*Cq`G?4*PZ&JVr0kBBvI(nPH#N85IZUf2$BOEEWp-Ffoo{V{y-?0}T^koLTX_OSj|
zsrHD`#QYQ@_T}2tP{5+pE@B@&nb%g0$Zh8k#nI6GM@WCi^UATw5aeP_C7PNFh*JBIt&-h`lnP+WORMbm#2UX!mec}buuCIJhO7yAhoJJ_$xJars3
zhJ|e6s7YY07Q-{AjrZS-D99I$VvYWkV%Ygll+Ya`+FC6Q|DMg^t?~GFcKOi`s<#E5-TZikOkDK
zGK=cfUF$l8AGueb#wBK+1n>Jvz6eS$u#ZUOnk<)zjO|AyC#KoPrKlb;*yS2K
zAi+gGz-m__3hKk5Ewv*2HeL
z+c=OfgCdh#gUL%qWBJj(GMiS3QV%Ow*+DA;$3Z}zk_N#zCsu*K44E@_V}JzvO5P{F
z?Yi_tfZsM%^u;1kJ(-p>vsigbYu``X6{>!>(OcwrHW}0{3xU%p4f0|=2v-F@PLiqg
z5~a?h)*kiwdZNtGKEb55J?ZAYFJNYts9}bCctHv;@n;RlkF%fWFO`>&fu|zy3CbHpz0ofmW7oer0>feHjxbmCGPlNBATD1!
zsYg%j0bln)2WQoOiNR=tZcatrrK)xwS6^TXd!Z-v{H97V7sQk}+iALLVS-0(}
zyva1I>yar*9PvbY7nUj+Gn4Yex}f9DR*9*O-X!H6KlasG_L!4{l~fxu{rS{<
zQ=|orH!+LKPGBDC%l6_oEN=6{0L&+K=
zOebiNOw}g=O*%<-Vx^qejKDw6F;-O6pIJ8B}4A9)Qzn)W$BX
zI!#uY>;Bmv1nH&=sz`!<3>9flP%G;2Fuj5t?9i=qvNB(_w0WZ7BB$uJ>a&eirTJW}
zx@W$UbavYZS(kLSuEUttab|_he-Il8oi3qa!Rjp6ki1$#;G#vjU>4!fG#f)}Q=K^e
z7`jDh3qjvH(XiZBRDlYICJ|;Agb-{>-bv6Fg1ni7Au~}P--EEnYMWsrayy9j1b1G5
zObb=dDbb)c&+USk3Mvjp`biW0J{X@#QA1i-mWO{)0$
z_o*Q}RP{89x<|+9LAIAptTL`v+|0Bj~ZGzxnk_nvv)d46(wa>0lPKTrw9b9_Yg0ZfK${zEV?@(2W
zsHn~)hwx?N*7N}5bb$k^3Zq1W1<-+foI+bIS_f!SKqiA7N|OKq1~yLz)8huwk76|u
zN|!`p)fpXGP7m}4ADfh)uqi>U@}d%v`xsT)tb}LpJ%jXVY)N
zL?WEjqX1qZgSVbC(rZ;R>T5EaRY>mUq}Mg1X_c%cM&?{l_9}z)ttRKUO2#n3xQfky
zofFn?dFA~{N4Y0ecMzn3&y(yb$<*SAI?cmH0BNVnHb(#e9u6Z
zseUqXrO`$>hN>wtr8SEeeP^nk8)&=@kfC9YT37`TnAsZ3*h#7u0;9v^HtfY}kxY#}
zsPi>cp)`O}OS{4z1>T8KWuYEB3nNL{u|>A#<+jjd`*-%I&d;%magijV7v;OL+zM<+
zD1kGk{kt*LB$rKJ;oMC(JDkk`!lMe@x~OZ9f7*+0iY0(ZWrEQ5?`{tfjVx#SsEU(R
z1J|!lq-1u{B%bSZ#p`y!E2)#MA-3WR+3XUIB?x>%6${qpiId*gjJ
z4GP;jgK&nGni6iK+DLd8=Y4K=E5MN|rUO9kQ4~C|swCEzo=GMQz~~KtYD;2aw5d*K
z2ZRDZMwx1(J2xB%no+E(_(k(!Hd(7q5(z5|pI3rjQ!nqpOnZrzVvShN6otb2LSN3*
z+q0!pRa|-5ItXeZscQR42=A{5#C^$HfN~2)dh8yL0~STXgnxqu#B^%>pk1L6#MRN9
zvqCy8n?k7+$hQtuktw*BPpg%!pyrvQtIz3NuC;u0^$Hb4|92iwCf(}*4;YzeS*V?K
zbM;1S-ZnO^3_u9qHbmPC?W`neq@fP5u5=%i0g^GYu
z^%M%=UsDZ3urVP3!;m#CGpbe;LBC2$GlQT{3oH4ydQ?V4rWJ(NywXq3IxZpTmjX3g
z{)Gio5$X${xhlQ+rwb760FDd3_5Q|A?c94TA&XcDa`g!f%?(YIEWQ4nh6j&A%sOq3
zSEjk3?OY)kiDDN1Jv{w@szjo^M0b2Av-}h*qaFNPe{eO
zV(7S~YvP3BS*mbFlHmf^BBMh+H(%4t@p&hkl1`G!&k?PWy{!bIn6
z=_~$DdL*DrJ$MD-?D
zHEZT_nLvY?(Z5u#Wcm3f7c&VM#8W|s&X_AUA8=+dGU_v52ims(c_V;9?m+?~992cX
zhwl6|J9d{PCPnDn6NPf2p*r)%-xzSrCGO0QDrh3*znSwfmoCP%=iM-G;W97cihr2t
z=b}`A1i%*vXWY&OKjdov0)zZ@yol)SCOasPW6m4`bVk|Uyu_YPmN>si)xY1-9px^h
z$8iQHc(LU~Le2`aqS1|VqM~%W&JWs{4PCxyPp$Ew9_ezl{s0*05FHr=L=+eWy%FgT
zzDvV?`9F%z#h>Z_i{s|DG0fet+2)>*Yc9EL?sC6Nl%bMKE>X&DbKB%j;)}2ll|&(g
zw%l{SCRB5mRLEtn`}zF?@6YG)etbUXectE1Ue8m{(#rFuK=eZ4o94pntgdQ6jh%Q+
zNlp>{czf;+6{?notZ_+C*Y(Om;}sJK3(bCodkr(rr0|BZ^G#*tR^d
z)PDZ)&2v-jN{fdT_qDHI@X!nG{(jG-x!xoTX~bwild^S=8hzyFUKy0#qFQL~656Xv
zWfDE;^b6>%v}H4v%nTa4Pa${6lR@if(3}0v)J~(fAI+-Y@zj9D-re%N)ywtf(vb|0
zxg`kCfo9}##AitU^KS(OFl<+sL^fOWw;)s%?dkhQMAe$e3x+h)mf;U=?~{V2KID@=
zG%sEyjEF{$NkosTwvB0=jG5|A*qn^Jw2iB_eUjfE%=xUd(aQ7u@uWmrZgFR<
z*(a`g10?9@q$^GG1?WV@I)tq2)pO$6-}dc`?)UMw@58!3ew=(i(*04!q}4e^sX3Vm
z;zdfIWpur_kVt{ar1_lbTS}diPZ>&R?(Y-9}GFp<4%G8a!%Z#Qv`
zStpz}ti{Wt;}jo*S6no|ygfEoq0Q;$u0ksKLdvbj
zF0IY~-fQjXf7~(E-?h-+_ggJ@ci@RKMApY?!K2=Gc2LL7HQbpF3h6t~Vh>96k1Au2
z-h4dj(LWykc=&~WG)oV3RiOc!-U{iU*K+bM6r-fy_pLJDLm)B
zTB}BW=*2S0+!=t{dz)v=m_Fxk9xMO+MBeUGnDDA#%ccu-;lM4xO-S047Joz-T=W}^asw>9*<
z8RLo`XPlf7%6NUXDd>bX{U~o!w{er&kV9})UhGOnXe4dqZ~OFTE1OQaYpE_b;(%aQ
z-IiM2$nEtm35AxO^^rFoJ$G~q!vm-5vHd9;-0uTs+k@zTbloGis6BWYne?dU(8Zzu
z^n>&~Hd%n`$6Xzj9v|%f%)bA1q<8Jy!PWvLXTMml^}*(^Z$hcpi`$M5|Nbp0f#~Z#
z+&>=t_g9Z$wm+kt#_R~uXJMKfM*rdU$v_{qTrw?+_Syz!!54n6=AmQeO^Y{!XUuh?
zH@^0W@jLm1bn#yg;4u-pT{LPU970dE>k+wIKHA9}duUgQOlBVIMP=~Y_lai(g!W1P
z7d6%=`yyfNGb(<8RPt;ZNCNQLOv?ExZmxt%A33UHCM$VW-Qgk>cP*a
zU%o%wYIFHfwrB4D`s>O|f3c=LI^|XFgY}=k#u60*BgP2l6Z5gj@bu}0#WeLl
z`CiGdXB|r(?EQS~lVc&KwVdN*@^$$M_U4t9+}kk^ZWj8dYpoWBcYj?i#;;sidzyUu
zz_%=gOZ#V8uF1^L{9UcRPaGQcL_|E#o%F3q4mQ)d%}(L#b6cNKE;`%YGO_O4
z{pWg$e$;>0v9{J0koGMJV7#69W<(R*_betf$>
z8@aE!m_fKu?7fhoagDb0-}UbYUsdSe!dCfgV&42LE!zW@WWBjHb5uczJ&fGy_}hNG
zH7IlaWasOf(`g@+cJh^5=NDEB$F^Rqx(n?$n|7VjS3mNzapRacr~uAFF3~#L&tR;i}lVYs3ubP;lgu
zQn%JK6GLcmFhTb*3KF|!2xrYA8mftNXUG~!D%vGm$&2%qtaVD7WIb}I7w3PoW|(~d
z4v%4*=3>2A5RqCF7KC@S=|ypcL>Q*|2S|ucf=o5Kx6;DP7vZb)klH9gi7fzdu
z7_76Nwxw1(uH9We@N8~(`K>!q);Wb==ALVO_-`=y&ba7Arm4HZG$ky?HsM#;txNMS
zh9VyI2ig=7{;#Ht*^JLYO#^_JM?XRDgd&cc2zx$F88Jw;JI9-eY^i`ZR(E)>U8xoq
zRF>;Xz2;a3UtTj+5V4mu;Vc&wcwu^d`ho`Kg<8q0@qoQi_VNFeZ37Yr+H+YBMeAyn
zf2Lp9L>@YjSaYj%)a7jH8QK%&f&wqBoL)Ml%y8Y$^cIy*^EqoAI+=TgzjE1q>D+u+
zyLPbXBX$0(^lcud*j8~?uqLDaw)xcKzF^p|rn8zg2_93uDBSJZqi6D@`|k0i>||4q
zRuQW5t>RR5YIuM*>d3XvkmNC)dPws&IsR|72!_K}~-)sEv`*+X-QFkhrOH-HBpOCa)vrBt|@Nb%?7lasj
zA>A3M{Zd7n?wjAF1;%8i*UfFzw!f`48nyVG|NEu>{I_IWXUo5+Thl}5hw+(8L6U8&
z=lwjBK=}Y3R24HDH;O)5Mk^B*rQukEgK=WC4k#p8iRC5*5@O51$T`xb_XYzHCVDb>
zX3Cnsce&2f!`Ue%7D6g_0R(bfDO&AqMk*y=@|
z{^S&fGB8v(5Axr(q2kCWP^U4A>wdW*d@Y!u6LvM@A?@+!HS!Cc>bd1}E)PEcta_b4
zYI#$wOk%+A-d*eQxtm%U&4WKPO|_}YtC}`n;j_LyAJH8Ki}^Qg_Sa0Y470EZIHWe|
z`R$Me%BQF`L*uarVeYmxaf+>*aVdt!f1|EX+Ats$oM_SA-DJ?LR&XI0JFj=bGxbI>
z194P(TW=F1!cV`Qn(e)V==+2D=`N3B9@zxy`-U(Y4aCcyln894ZBe@S=R
zdGhRd!#k@!G5CyT`NKS!-a+weZEnIME|p;5iyM=ZmSm
z{LxIH*2L)S+>|q1=E9%PxmT}tQZF_&TbXLK^4wj1cHFd5nxx%WcQt>!_5DxRmE>}N
zf)Vpk(ZsSMX1fj&<-U)au_E5?1+b}pl9(twYpN{degAvW1DV&vts}d=lR#{1J-`w4
zqm)yk-NotOY+Q)5U;o&mBD@9LX=YZ|@!&09BX}LLOZDN`%)9Poi>-A)txUbWsHJ#V
zKl($&d#Q{VV%gsu#F6f^^AC2@J&YK)dep)hUZ+1HQWUA}Pr
zUiXw(f2qkO=CKPQrF^YlG-W2fq#XRYSzdfWZ>=_w)R#Eb(hdwX0W_iF%tQw9xeR}PG}~#F0b>ot7CC&qSNHkHlV1p*fHg}ZT(Fbd}q1vZ94oL&8*P?hU|
z0r~`%nPMr{Ixn(LTCV003uW&wmq*NCStd#F)^yeoZuka=`Tz>mJ#+1ECX
zVAv=eEVGo)d-KBGWKkOVXby#VUfpOv0^d#@kRQpMIn$bA`HH9_(+ktI`78W#m$pfW
zi+GOTBt$3ojw`5zeSOCjr;$F02qp{BC~7Nli5ny&`^zaeQ6wuMLQd=WLF;*Z6%a8oaz;+|G70cm;KPk}5w-k0r66|&e
zXHMf()D#UM(CsN`Phw9cAyNTC);6&G4Oqbz&-4pqIkNPzqGUFpGJ@Hz^1+EW=HbL=&E&)f4fO;YdV*`^Z#gIYB%+R3`SV3_esg
z@vZEGZP|F
zB9%BsR5Lx9BW1&wluoiqHXk2sz(6UW|x-#(gVilw2`K#t7
zjxjK6jF6*|pa_+}6N4z2r>)ouSyM!h=YO}(^GD%DgOQ5c7(t(TSP}WJNdlq(%SXhI
z<^L46#*22p1J>Z7W>}b9AR-LUUpz12$gC4mC02zO3B!-AIKa#(Tr|9>b-HNkJU~xi`pB(X3(s~6ro@oKfPO3<_`&Of)(agL3WXhN3p2|03k1u*5CQxODMht
zQ-R+3zY7%O_ZVw4k|+%zlr;ahwky^aAfRm^RE$A%&cmWmBGR1jUXt(#=2H|!R5tK3
zXR_!vKp?YJn1+XTlf}{l^^Wi`Di-$Alb4E7XAI%c{)A}4Lt6nGI}~U!%GeCcUX0xb
zIbBXy6QN-cI6U-J5%Jba>?Xx(>KVKM5944%$WHbT-9|LxMH(NkuUN?HaU_adhH4@i
zs~N66yXj;uU<}$|D8?LxkpSKEOtPMdMmWYH65U*gXe4j3&XJnmg~<<
zu3T-n^55>29CbH(o|D_tTsKmQypvD}P1PrDI4U^z{
zXjUW%A&p@kxW~*(L0F>UKJ!d3OV1n+E;lgDMWsN?Qg-bHk`X#YA1!!@5_?vLoWbxt
z!HOzThKLwGFD!Jy0M?5U(IkmE8^JOkk3B;P-n=`813+ge0()vA&e$_6x!8IpR=X4W
z5+~x8h3E#Hab2)>^Oliho^DDM{NmZN0$wU&G&D?l9%zd~h~Vu|UWZ{QLAge-h>&V9-C
zjLg6w_MU+YjgZBEV#P7aQu%uU3`IBuk%7Szii^=q#%rdHMx+flrRCDnCa2RDq3K`q
z)0dmlS2Z)XA~OCqW&Ea{$&NFagfkEFGg-8f;X`>ZO(gbE++*9jh8N>SE&|vd=JN01`IP{F=E(3&oCpoTra3PXa4#{dRJ3~@
z*g9|aDiajN&en~Gh*J;)B=#pL-iui6N>AZA3Y1<0VDq9xxzK>!c!U>;ojL)3j)T&$
z98oAiS}DR)OYrc<=kznLDO%J@ia0cD4MF
zg?LEi-@`B~GCx}eJk~o?0FzjTFoMq1X(EzKA5A!+gerHE0`d^-*#9sM;@{(pG3Nvy
zlO)_RFb;mPDlAk9KwH9#5S5J`DX><6P=Es86N;!80R93XV-#W&KK-r_!==V
z=lRkm3cuqkQ~|^-5sG*e;YeygbYr=DN!rbLo&}VcG^*kTfOiiMCF6LIC?0a@B|4cu
z9K|z)ahlxyFf7nI7~c9Nx3%j->*!JI4i`j;|3qID@E-P`o5ZDk7N7e72Jab{PKHMy$r(&Zj;zScz!dKU<)3i1mIf+2s{zyGb160^SQ5Zu(RwC
zhUdG8q0qf4oHPow1&LUn7imF?XkUc4pkXuy=(BWgJ?@-c5-5)Zwm$>NjB*~HB^4JD
zRU@L0?{O565HO0+MT`LZBjJDe!8sHMfXOWZEtK$(DS-jV@I`cq!qw!?-1_*=r9dSb
zM(80Lq{qP9jbd5H?$+R0_U0i+fU-a`RA&LwjYHhqH8G|Hu@Acb+#D!+MCdxItkncMyC@
z6`|nxjXKq62H|0xa7(PBCr_<2#Uf-gvJKCNWPE%~fsUj2q9_7_B+)-8KDw={u#dy^
z2^Q*(5)hRh`-2y4!9j;8oO>j^9Y)QrURVT=paQs(F+$sUkRfdT>NB3~dUz8a)=d>Y
z9!J;$`mLB0x^WI!=MZ1X%r|z%tP)J?MO8`k#F~w-;9QA%l=TmX-O!`w@y}mg*fV9^M49*bpj>
zh5@xA5kq*EKQCD(C{uoE9Ef$XSsY{u%iMVv5rt(wCIK&ECQV93U4((h7?Gz`-Wn3^
z1S9lGlf`m$P9KR#pz`W?m8M~Y?2%WBJoy+5N>cA0TlZ}ehD-P^9kYIBTns{#n=k3j
zEmn@O=|>)gIVDfubTEoOrv3aUV^h)^wdJ_-fesAf(YjmK`E&f1pXkS^MZuq9r
zqA3@f&YiSBNy~@o>g$u&u9V#2JZcD-th;^x8{wDRC8wi3g$}6<2fdhWSk?#4^?#}^
zCng@Vz>LiI{;#Ybin3(fV+HD1uFn$wDn`WqD9zPi8<)>9Zucbbm-&yH(|Dzy5E^Itba<|Hg=0cK0ewFGF^hK|#xlnrMv-FV7
z)J4#L-?$x&AOCh=G!e>adN(M!UeA}T`NC4gM5v>;jO(0_VvY?qVRPO>t+038TFpC^
zhwa>V%Q!CSQJs~3y+O^m6w#&$2`SQVa&NZ2=GxdZj>=5cWWLjC^rIV)hzUa!Qk
z)DpF0SpHnmBACUSrkcbtNK=Ueoj@h%af-u^S!mTu4IOdtFYaCjmj-(?ZS>z!sTm*%
z+IA{O;O6)M=&iehG2|2-$E5R4GWe0sxlAUH<}aCJXwlQu5w3G?JBu0cJ3CA!>~HJ0
z@Pe`j5-EKAE_LSmIYfzm)z01p8=cE5UnCWqn%)lRZBs8=M;|b}`>fOyCXsQWuJi4n
zp8B=~m$FGmeE-Prjm5O{bqskvlV;c2%CnCG7Fo}gr(%Y*%$o3@p@o}^7JY{_d*iQH
zvc|ilbC7t)FPmo~S!k8}SeI&QmVv8)-8YVXY)g;GZpG{T>%J6w{BO|aLiFzFbx8Eyg!jj`y{X9Ill^ZQ7h(?POCT|a
zOJyJ14_7`6pC0`lrnfqNpLQ2@IYqwh2)JKZ7az6ZeX%AvL#GA+x!Yujw+l686aryb
zUK)z6;0QV}S4ddGIm92Ly)M5jB*JwBhDf#7>$S^>Di;@&2_tB$=yH#^$HUc(Gna-YxW1aH?@v49o;}*%QxQGoNwGU0m!`
zsat9XknDOU0ZkquFr=ZFgdOpEyCaNT-3)Bk=Q_B04McccN0J>m!L8t#%TDGmA=d(>L$M
z*jqb!EQ-n3^{6|JLHr{8CH(&-dTfve5gs`>a6_8m>%I}9_Jr74M1gK=9mj)BRm69*
zByHR2>OAzaSsjo)OoiNLF?lYUNCj0HtscO&$w4U!j0?hQEWxi;6Y4-VZB-AD55n9`cl&&^p9;
z=85{&UfH6{Q;65_bUoQAi<#nb#0m6#@Co25@^_EqN$^emnEH$bukz+g!sktR#U;Lr
zfAMXlCn^Rgd#NpEb>3*3?~xXFkbiP}=e=T?6zX5dY<6n+U0hZ4{ejMQ;4Odd3x_m}^-X0ZWn+
z5Be_OQOPOUSduk-@Y%jbCHGChvb^_$ez!j=c^@~HrT-ej_btrTPf*F?3_sO`UUagx
zQ*4Mc(uglef-Ub6I&A5|aKxW?mv%O8q3Qn(Z*td@4s_Pg5{Dy?y5H%n*JXEp_J*My
z2I;y30|U}^3I7#cORiKM%(b}QGCt5+f7yf+;t=UJadWT21YbVt8gw{b?A)j0q-tZ=
zAu^G-N4Q{5jtk}Kk$T;|^HNG~)knkeYp-;J?s^EPeeA<89{*jee6Ql?mQyg;-M-g=
zXxRwXh@7LQSG~WY8t8TRP;8;svEk!j!SAq24V~Z03cu2Vp3X%6IB3@}r=9$bnLVmx
z*ndv}r*Fpaxl=hHO&yS$%_PI)dA3SThx2+{sSx)C=--G=1+MLw(nVw8?wPdEdWq^T
zZ^Q@^bM9jH!q9RVd;;2IdFKvS(J!4f0&F5@Z|uxQyXr=C
zoEOXgD|WN>m+s%FA0K`kaYe}HEd5RRyPe@wxYd
zf$OIt|E(UcT!I`9r(FA2z903|F!pe?FlM*v*2&s?6xRo(4|DY;ZNH^rkNkdg{@46Q
z_fM?NpIL8h8hKxLDDPap!v7Ki-JfYKoHq#Sc%$EBeOA0}|BD5)7;2gh=sdBDa2Tg86iU
zF)hIan&_~W-~>u^mQ8duOFZ8T`E7d>l6cc^O5~V7R@syDp<~nlAh@ZaKP@Q`
zM7S$U2=7h04<$sH5gz&y9;^`}^C8>!f;^qP=_bVb1fu$LBGH$qe$Qj8l&gajGFBgS
z$%)8=5=%6*;K>RB3mK~$Tl|;|d16K^a!rPq-qUCxzRD-2u01LMr4W4S#COw=s+)-Q
z(3B?Gl!m61X4<2+2x8;(qZYH&uSTJ=_d>NlNu1y3+`gZrs2VrAhDVvDjmgH1`=(72
z(`F;mzE!1t&rh50P5WV%?q_m*oT&Lt*#}~OS=je7LU)(=|p0v6W
zjg}#W3>@uLlPxlEfdO84_EZ9NwU&!#o>Srh?;e>mL6XZmn6uLj(+X8o@0uL6)eTRgS!KXzu@BoV_<^9OcgD2;`y=Pp-MVSsCPj
z!ui|&8un*_7hB<*bA@&0h3{?`HY69;{DernkJ*`wxwR{CjQc-B?FZ6wSu=eBl-}1@
z)c>=n_n_!A+tcxLPtV-f6Azy13;F=B*ojynv6?|4aJEhWDZy2#pkU2fdgpbKUZ!+f@
zZg&{Rwn_%-Z*nZ!vgCL|ZogxDQOk#z0S$9!hmLa)>)85{Tux~AC~j~*8MyNToGJl6
zMze3*x|LH|DUuo5U!Uqf%K0u_j$SV_^eZ=hR4#vo_gZh{0bkNmB8Q|W%P-vHD}A{x
zez{ltD%@If-5*t4Wq;DQ{ry&caU?4NZmr1jQDwh+?b~*y;C6We*|(S=d(|xahtiPW3
zdrH-=S(tgf{HSIXnkm^=BcmK&@w0}NO*jwDUVj7Fxd6^Vb0)Sx${Ea(OSzyJ_O%_3
zDm17H$6l$#m4?nbR$>ccmyucYFDFBGgV~r~f}51UXDr+JEJ)4>SD{y_85+d1#es9E
zJ>FEPt7T)dU{A0Y@t;tZC!`9g*jcLiaru3u
zf7@hATlA|oTw&YXhqfo8nS5%N9@gyp
ze>}MQ@hGK+*8lNz_T%9Pyi_m!smF%~)qG+hy5vZSqbQQ+7zwT_gj9`y(rioL;wtM#
zK4X8R5WZWlf+#L0?%1m#y;2q(fV!)8MkBS~gr*<@d~bZ#A~`
zTDJOdcBPkUP26m&!kmRIkO?JlQo*}z2F)sTWjX^SXhGqOAn}vd;P$GEwYBTYK-cw+
zE^HLpd#-DJI`O)z)d>#dj04F8KQg)X`}yLYhjP(>myq>WwNuv
zzmLlMG5fg#lT8D;i|v59fid}~=OoDtse@mt2ghM&H717Q;7l*~Zkc(p_^hrfex4>I
zFMTcDQuK|grr`CtAsbN-*A$+A?wOl9L!Or1$F0K)8^Zw35vFg$*FQik{j5k1Y$#i%
zt=gLpbwt$}1(`Z~LNz7qI(eDOMYifjquoaz6pd^?8HGIM&Dy{7Dl1Uvb;Zysp@;R3
z{O?iaZ%Ing6(~>ExYquUI?$@eUD3^Mu
zY=K8+~Ce^-UA%C#BNNk4zjAm
zajpUJCHP54Fqh3JXXxr<_&g|K-E6BZu;OA==L+uupzHpOVz&~<1wD!0*$$Gyw{NUt
zT#ADGwVY}lJl{vuzEkJ&o_|=O&MDUfsh)|C*J+n3X%lD?y5@A=aw_daL)Ytp=yBM%JuG$E>nE;95YwcD@TSu4NFy
z0l2ssr?{_vxnlYS$#|}o_g{j0(jz8n+xY1SQ+ugEMm+*k#dhPbrJ&g!?y05XK4kFd9aqVOy}wj-dzL3_2}-G
zTwTvioHy__d!7dSJA-?j;qy0KhE45<`@$go9a?1g>^a2T`8V4N!`m1BZYx9nsb2V}
zZu3tg=$}@`ze_BcVp$aUdVKOgnM$lL!=U9jCZ|%cF1O|I2%X75
z3G75}KJw%^gT32bFj=Z)OU?v!0$A;Wgk=B0+eetJ$;~!Dn2a(%?OuqPYnu9D;nOGHZGQ8JECD+&t|#CTpeLg-woR3-(GR
z^PNoiOWysKVD`CMOBLOv$OyhuBv(zaL_d|iiTe+p|EP$;j0bT9>R?;p&Q5#;9%i_H
zUI<*Pq_&1^?7uHjh2%X};;LE)cb-jOv1oeri}R2hoPY#NG;`3yAc5v_s*7VUOgfB=f-W*}*X+UbHUJac_F^`%H`a-8AQr<8bl)TPgh~iZ?z*3FoX>
z7Hawb>FoQrV)Iltk#Se}@tSR!d5WU(=bbf&3abi(aFJX;huAgb%)7kd?`<_($EeWE
z`A>-)TwY5|;Hg)$Z#)*;bHQKkcr+in1{X>(uT=2Avrcxc`}-f!qUE8j@AKgwFPPn;
z(#!#W=i)C8{+SP609!ta>h{_BCl&8{`}(PL#YjV6f`*^UOZN|zkf&_dD}&b}FN%je
zayWSz(JbvV-ex52(MT(dKe?IgI^-4KZtg~lUc=I>2{|!?MgeEk
zSrPr3u;t;3*!%4#hY^2&4S)O*8_Tf8r&Ju3G+$mAGcwN%kJJ=46$9=H-zbc6M@eJO
zRFU1;PPlo~609?xMJRG7`35xBYfGt};o#l*;^@v7UOD^6!ab~}#i%aM7-AhIFXAF9
zp};D_NJ=nvNjM&M{kg9+La+EIQ0z{V)-8mGSsfw6T<4`}Nk}&?B*(S)E3-iC+-4Wl
za$&S0<)+)Q4O-||(YUqN)#^Z)!_It7>ohtVGpsrg;-GX
z%@VE;Azg-yKWBSNYz$e#9qlZnb{!oYjKiIruHM*na`8?Kccx$Quh@0Idbcaw#UpY#
z+&Qro#a5BC)J!O`7o;K?-$_rCO0pkWopbYgRk1g7yK=Wj2(|aslr?lh7%ysjOPEq3
zCXIgq=Slr}tHi+)>O?fB+EMDPf^oMI;)+|Wz*twa1d*VZYZNh_-n1-O?8^}ry~wkf
z5Q0%l^8}EYYc`=UdPA#HSfTnnmvnT3=QNwro;oG}#>359%-8h-SC}4{-R?l}eZORS
z4Q6%_2IDC-$|*EB
zXzt;BFci{xRYOy{lE*T$v^&pnFH1^2LR?#BD=vCecGF7nK`kOg@hf4ywK5%kujgY)p
zInX4;cBwt;4?W|cpUFb(_&!~BO5DXF8C^|=e!5n0a9Yd`TJThppkIW0bb}j%kcOIe
zs>xm>Wg*z;hb-Bm>{^6+IbZE02Sg#N%LdXKM^so@qT_J&;isVa$ybIkxQH4i-b-J6Fpp*$F&BU-jbXRl%i
zj>KO2uv@ii3sBHfEo>k=s`W6KGj^JE_0*OCs==lrnN#_d{_A4hz^cafl0#Ld31^+P
z90yy5nsYbge~YBp_m~L2ZS+pj3?8*|pX&(daP1c7ea7w?_C(~=(@ZT1lOC1o1s#MM
z3mJak(A_f>sBJRwKiG1mSHi&p`Lxf{H$yUnX`jSqgAH_}>b^vVQG^akS$Wq1sV18%
zz+I5TC7PX*_fi?Wippf~K!G?Wyp`OCdUSzM^@Cp}1U74dyfY{+jjFPH|GEOBr7V5~
zTp193P6etvhh#($nKQrF0@Z1rT#;wa)=y)Jo9q=_w>L?mYtTf^Jxr==LWSG@29TiD
zn$6WA*?9^LN!FEL;LFkMYA^~(aoX_W>xk$=JPAp=9<>Nv%M>YR
zPL9{{krdVH({EI^tX~ii+6{s`YXVeY`zG?k=3*J6d0D2L99~3E4i6;&Sf`uu|H@*7
zQg@{_rr4;LPQLJ634lA=5;p54vz;p0=(pA}DoJ`Vznn+}%}^8giSdZREf&2U43{8t
z0m~E2JGfD4%Dwzj?pPY`dI5^5kzB?COEHB6XBMUYGytBgr3rQ;;~~?Fyyv_rzFl>3
zcOR#+=pqf+hct)fEgYsNB=6OxoCrR!m8h4Zm}=vA(gN!x5Sy;Q)yH_UeC0(EzoD#3
zO{9#-RBvcy7f9o6bXq!G6kSebLR`#((5`*rbaFM(C!)YHOA?k*!5tNU>XMb+E8T?RFI$Hi=Sh93u|;s8{S?teOKKrW`^t}0c=B+jL%&gA56eEp
z>v(1(8YbQ181PL!f%#k$WxVCbH)wNv&qsP`iqn*C)`D!Obn7UGocf{-NmUX2cQjQK
zzST&3D!-LhvbXpn&n+EO-h0Ah(aiA%fz689S#`~h;s|m*h!CoO{CC>ub3E*1gbs|_
zcNTq9Dv3CP0>!O9L8c;EPI*zWmuBWOT7AsKd@b1U@;4!&wFF7*v(J$q@6y^A4E0!y
z(2tSY;W$WRF9A4K8&yRB4rKasKZ&wsVU|eFrh%SefOnP7_;nawH45+9L=YW}fDuM0
z00Z^G2)koMqA0@k6p=HQX)6YPCi~mKAeS(xIgI!*1*P^$oa2+Ej)9bsfsCU;_!=wG
z7kp}_WIm05prjRUp+xgdx&QSo*IkbHNadK#Ckh`D=OQo_4s0!v%A3ZE6Tc!Wk?&PPt{V$0>
zGtoadu8vnL{Fjl!ac6dl^pBL3$ST6MI2G@C_GV4vnoMAgFW6z@@wJD>wgVY8G|=8`
z0xtmEN;9ybc!mD$d_S!P;x{BY1Hd9bDP+3bmhdGXy0zjiF?aSg4CE9MSxpE
zKM}p_3C}*HFn=JV^Av_k_Jrt|hFhB6Q|q~BWO_f`b+C_G!jR_QvX%C0d##sr5#of#95{b<=oeAF^*2@pdz?-W!!F$-O7X=KYm$
z(^e{C#4Km6H-nfTlg})JB+O=ma^wZmQ=jBpnr9~TWk2pKq_>*WFZE>@vDL?$d;jb!
z?bP!kH$7ER?A&D9pItrl&m7O`f8*Ht;*%?5IhyWPShLggz?
z*j|R6x9m>n4zgFa4;b(*8n{(%*;j2j&}um-X*pCsFf=f55Nsqni+J;^rCN3H&85LH
zcdN;O!HFoViBzkpgu$ynv9w;1
zv|e=|T6MJk8DPCuJ@m8lN$Zluhl!z$IqSb0)|+$v|3{h9m#nvShWY&wy440TRm}2p
zmcywwBadxpMK(v(Hpj;U$K^IB8#brM!$&(d8qci0JRW3xZN;o>%OYjVsy@PMH3Ixy
znf_L+^}pU<_15dHww!~uTxmmGUA7QTJ8t+Wr@$z$)aZeVjR1U@->_ttlq{fNBly%#
z__f_mxm|tO+mCY@-oW`V`G(h3D=hE!uJVwqn
zjLD_hDzw=rwhUtX2ET0#LUip^;0~(lqpHSsY90>if#WJS#x=qn9@maSjcsZS2)g1F
zoo^DMBjb9@4*HyqX!wL)1xZ`i5oYYDZRKd9pt4IpwriqE?++MA-Wao!l!XgXdX;Y=QD8
zllCmmig0HKt17l!Go#X8wKRvD9?rKC$8Y62_M{d($Vg>$9jgy^7!{=cLR{|Uq^
zU=S1-sNfQ;{>9kJWqV?DbRa`4al%eu(mKuM;Zv7LmdS@*Um|l|qMr_U2{=bCu-=`P
z`2&{q_?j28$%^xs_6&6Oy5ahDXN=k^_-)C`KW)mt%{8FQHT|1w#-wZJplgpWdIlFs?H
z9{x4s#?^*1mTB76rl(g~)xI|EFdLa!#N&V=O)~kLiDsKgj%Z%#OTbV}-N2D@v@h~w
zbkoDqEB`gj_C9sr^l|YlOA#A1h`G@vbTHa~!frh<93ksAc5;QJ{>>WpP4Z;U%*kWQ
z*yCa1gmp7GBC%Wkg!OzxqKGD=zic8DouKCiRMiBWC$q+GCS0Bd8f7x867lY9Gr)7Q
z-c>W^(?CCDBG&hV>n2MCInfb$0X)v)NUtLJt^p)@=3MjjI0_T>>i}M|RnEG(wb8D1
zudg3UIVTHTdV8KxFV$If;KFf7Z;Eew01sMCAcdE7^}PqxcT#^j@_CAn1D9Xhn+>yM
zD&d`lekL=e^ziv=*3;KfS2Np)5R>E}UI)K(Jj(<9DvotFeaiW=tUx5-d=mqhh!=Nd
zFh9%QsSGwCJRcP(h6KcF;#p+lpsqMCB@j;}x6sNvE2`*~%_NIVpd*qM`dM&xQ}_
zgg4?oN#URF)Gpb?kF$qpkMkl7M@pJQQJ@))r#YSFzkffZ?tcY^C?s+`|4GhkK
z>7f}7M!J|k^fI3k@0xj*bWca42?}SzT&M*`IPngVSo@tounhoR#Cr8zc#cvjK(n5&
z!t+%DRLQKuNBq9|xNDmPdonI)lOPWAGNR)6Gyxp>Zv*u360(L|XM;~XmBXfQLw8xa
zmw}!{lD{v|kH`|kO^DoNacpAsz!8$k%&|=gbwvrL@3Q0musTu+7EtAUC?Womiq7-7
zOH=)?={M^B#CWx5-Qs$P{XFytUXc++W94;acz34xo=!{;v9}&W3Cn%V_y7!55)^K_
zv-N=(Gc6Gxk@PLXSTv;XQzSe{^X2HIe2^{M1Eh;=N|tvWA;i~^NKNALO*Pu{;g(rB
z3MdZi)e3J)ii%)eHLnfMmW*;`0smsRw{^8%d-h70#TcJ;&o{{zCps|q)^$2zRy^Tm
z#M5X^0v(*fkwxAu^D%YHX`8Iciq(?F$S`AVe!Yj@D$0_Pmhl`Z!y@b*7eZ&-TWtrnV{we;Jn)
zL`NqX?kA+ZO=9CtiiQS4F$+PixXV4EV
z2?<>+c89m#i6>o}k&1CmiknJw%un$3C76i-CI3srpmJZf{7AH3n+i+4lFuk8boQCOhr?
zox6;DN&qF_Xa1S^hZlTWZU@8uc*4FardK0KwheWpIb!
zuE7Ecgy8Ojy9IYhfbbIBT>>PyyL)hV=CIBWIO}}(U*A@*x~Sc&yL#8&&vP@BptFBS
zWDx2g-54p`b*=p41QAUt-xb1zN5j+k-RYG@u@2A83XRJ}?yE*}n{ciUie$SCHRnWm
z?fkF=2%sJXr)`0x)!4iFLB#JBz_pB6s
zIa%6M&BPA3kqDl~mY_|J#9V@ihH$}4Au8#}ZzGVk9pS`XA?-@s;=j}oP;f#a5
z<^h2TGivCecDMS2o44k8oibRN$Gz2xd8lqTuOv>J)7*An5)uEaK@Hl$L@KpR6$59w
zKdFoc9j;}X^urlkUl)fBTo^`D?~UtQQHJwGeV!e0wi>bY8l74m4&Zd7SsVcmEl!&u
z(PpB47rKd4jjriBIk2z0$pU5QOkZCHN5+4j8WMQ+XLq#<^b>a4=v@4cl64&xa`N3=
zsjZErXf~*J?Y@-#OHo#F(~?92Pgmph@4CAycYeRd>az?bfZ4reP@DZ}R7q}dx?knr
z8+eXL9yoRH&{(>WrQubj5ObP-LR$LAoFVo#rD`
z{;n;l^s)7-c)XUoqTftU+3;S$Cr3*N5eZQ*2IkGt)F{+}`1csA;2kJlJPRAAq@V+V
z9kfChuuTIJdWEG*i@jtQhKeOU(Dd>>E>C?=E&6Eiv-F35By(9wP3GtF@|Jfj|JD99
zJS=Z;$WRkoWu1J_DsfPx#$9b&JW4&W&iz;DfK>{Ey*wKf&wSChg~lbbz@sGW`(txN
zzGhSDbNZtvJj!;@Rb#)PkLYrj@0Hy4ho^SGFp=aULV6JP+%%CPTyq!P$J0^VgT>s0
z{cQ}kKN{Lcm&H3N3+vMkiYk~>vA}9-bZ)C2sB;%(c5Wha%M!aj;(5ch3jJuyytU6f
z#@)F&Im+C8k2l0W1OWYmRmW%*r)^wIyL$4C7m~42sYpl#KBb%Yd&}C%*Nf{S2xG}+
z<@83bXD*C+vgV9DOm1c@i*k(SKPLO}FMVny^H_T22;44t44DW_T%HFhny-3FV+ttn
z^3>1WV7rVO^&5MS@OWC@zM*=qOEwZWA^J(Sx>x|Jh4GDO^#TcH)+JEJ_j@($tB$Qw
z-t-Oj0!96<*RgQa+?@Uz3Dy-wqh^WHz&Tde^VP)8Vk9t2=W{0EJ0(!0_&2qWn;~LP
z#ufu&NjF*t9VOb`@o4|{;UGTa_S6o$!^&U&k4Lp9{!eFl->`&+Shvs^{vGjLiuLz`
z0;v#TJ^cfs*K>A}9r#7Z#!i;nC*ONtikaCZwyG%rd-f#{R13{NUo
zhMg-Cg`P_rH>@9mhRiFxjRUh)*u?vfCxbS_#
zJVeOq)izBl^$lxqD)*#2o>|bGv%e}F`ms9RB}Rg9M>|~HRWd|bvIjE@H(Wes0?wHz
zg?_KzU91ZjstaK$q)IO3WB5D~Wl@*;?%Tc?yLF6tLNYdcA6QiQU%c%VD+RMXibLvV
zlv!dCM>S;#%dZJ6=QiHAd4{`k2H&v!?h4UIIKxOXaj-~K3W>`U(%5YyVe-6ie207s
z!jJCb?lD0`+=v{-*DfjMCrl#p%dL7oASjiMrt}
z@?0q|eW;1BcHJVDbEXmk_A=<*S&-yWg^TD_$2i4U5P(e(U@pfA7N7rsM63G0Ib-C1
zw&}2ubB)W3dv6S&TTue%_aXcifW^5*j0TxQh;ZLT?2`9Z!^$9=gWJ&3%Bz2}oy@WM|q2-+p43TQiAg*5;A{LYz&ioSc;t%Hh#|a?3x%_GRH#<@zI~XGU
z>%Agn6JUQ8bIs8iRpCAj`K$Rfr2O
z4H$+k#sAx!iT1h+nN>mCOobAJa@$J+IS%LeSrza9Do}qMmsH7;ME3Y=@n%U&UR;$5
zNd9sgDU@0mx3jlJ4qBkU;iMLwd@a1E%%DjVDojEgJIRC|Sdy;pN5Qxah&*js$%D44
z6CP_&RbF%ctB%NA^wp?tXO<+y6Z)+5L1;9`MZ+y;zlB~q#5C(b+AUpublipUcEz~l
zrIh_*Ex|I(13fs^f{aMcZ9=dA!uD{rR
zK6otICQ@y`|2Y>2f7+sMY#gYcCSdm970?qFO1(p-_kVKDKytT{Pi-zvsQg#5(Ht)5
zADQE`|C2%#BR;9Wo~+W7P#KL|Q_Pv>Z3)L^fZV^hS2^6bIxCxPx;5d^_~J>R7oEP+
zC$HKKKP>CLA_`IX0Kc3@$_L5NRq5U(%O_#j5uygzxA{v?NzZCi8ir`1#(be0o+je>U)F&TgWyO>*
z*mcQQKlTCgM}S-mo>M2ziKXGgqIhI72guRPH}39$P*Gzu$mf>On&w=O`>F9OBHmZ^
z55a$sz?p#fdmA%=?%HFD8TcUgF;oT|MDaq^k3fR6tOJEa$M;zCl@kU%{u>aW1PPq?
ziss8Vm>boH<~QizLNoKBxs<3sU(X1`+1sEoUF-P!C}@T2d{13GywaGsy;x_s4Rp!l
z3C43PXle^+GB{K?Z%xW53zmc4v~y9-eagX>+rUSmB9JmCu-G6dR615Pf9qcG*591y
z9|7nXef$gl#yOne2rxI?i>d%bh`SQHG{57VpLTz<8re;i6En2_DQ?etWX~ygrh9|J
zn{b^A8thB%ouluuu@M}YJEJk;tB~X&xk;;p%coAgCriG~mb>j{Awszz7}48LH%OmJ
zE#B8dbQVO?)NSfYxIHuHhq`_}vU#^)!M3>x*rjIsXTfo?$zid`zFNqENyCXoqhc%<
z(B99$6+w_K!LBbYs{e{A>mn)4XUCRiJ?rLFk?Kw-$;lbq{iFa>kqT4D3O@t+I6;K4
zQ>Y?wg;Ta7m*E`t8fbCru*D*gO&W|}l#y*&goXt~z-@_ObBTAfl4w?v)Z3EGR?_s_
z(%iH%?6m)N#qL6-ar(LtsMCQ264K77x?)fB34l
z7qF$7?cw6ZQdq|5!hKTd_3H{rsUPk^eEVS>eL%=gFAo4D@F7?;L6HDEOq2-D(Ko@m
zE(J3l;meoe!H*T}>*4uNo_Rl5lozhL(93F!F5U%yy8E@m`f8Gb14=JR$i&BM4;*`c$>N$q2QwDx#VKT_RN_iEWbxkbeM;g
zKuAz(B4JjH^A)Bi#d@YCE()i)lji46WdA@XBqQZ++)Fq9T=+3%ctkbpgKXE=srUOG-yO67Mk{au##-Xplse7Acs
zQ0?OYJ?UJS#XwjRP)G&HF8aD->J^+<_b7c;vVgqa#W$yMMrY;cM
zH3+vjm?{*#7@Nati-}HbA0Y|uaL~jW)c9JH0_jgSmQaxUx
zsaXq_#?%wP++Sha46V6#tu?<|S{#lVPL6umk2_9||DKf9l{tIO2?E&O<&Gd)Ln8Mx
zFs$)e>@vSM_-N)lQ@2_{6
z9QRR`aRuzq+#+wrq}X5K)EQZ^j8Hlg`sdway3p{aO^%npr_bDz51H%-xMu*ptj1Xf
z;MT9>-4h^-BS@MPq!LdlM%bX=gU^
z3$`h4cKHkTC2sbQ7j$;coS;iigfrJ^6-n|1W12H}-UYWvEw{7_Ppchkt23Y0C10;I
ze`gH}p)OIZSkbq
z*7Du*@PDlphww`Dj@ghW&uVg*SxeqSo_FUxG
zc;o}>hZh^SoI2c*BT`CC%>*Vv+9%t__T`ZP)O?D54pZKx>h!G)3LnPO%74L(|_dE
z=YVq4)T`&YX%x9>R=OGCoon^FX%EzE4Y`?whfg~5=^VQ0p1PS{UYnV*8KB?j;Wg-E
zxr+nq4O!d`dH9Vu8Y~5FfK%62(tOrqZq|A?+Motq7k4v{n~y&3wrhpvgg5$WH|AOH
z`dNHdwGBq{H
zVw63xUG8FS1mi3Pl`r{Gqdg-*_wndn5qQn!HBC`8_lYcCeqw^LL!PnH_sPm$FF5_%;Bc%{LGjwRicqk=#IH>U|lJ@>NaR0NYCDh3K`_{x(yHe}Wb@eO(%MkjR2ARaMB&qM`Peb%(30oV
z1$yc-djF%-r?vO7dqAWI&e1R@(k>#J>C=knNN(-ad-|>A8(ip9i!M5V*Y@xDz9+h^
zC)u|r%QsJ|t-aj$ZzE5Kk#GO4NdJK7aKOfZ$5a1Sn+eI&pLo%+G|}E$QGD5_zv8|V
zSncAUuZG5+CRzNZhMstre5ZY$rpK;ZK+j_kzgf%YSrG9M32cJmIk@#{Dj7DC2AfK5
zo!)C(TodI#eVTdnUG9BewtJQjd0v70t(M>R6}2xs`mKRFrtJPKYWXeI`Y9RttxUn@
zI69W++UK@l+lR1Zk=r$N|Mk4*9kZ7WLa{wO|ICi|&1kW$_>L_P@9lv0?eZ5S2EX0b
zj-5`iU7E)|692s=|Cw;ngTs!4OMk@H;lsZo|1-6hhd9^~N#_ww=dN8`BDF%29?{fq^7OygrZN~FpL6`)F_)Hq#<BLn@4l$XBC}%u
z74Msa#qzJWt7M`#r<=Vl3<0aY59j~Nv19}=Y4z@P4{UP2cKYi*Jzn2-o{D!Okl!Ro
zyrA$_NdRz+)g?1=eG)kPs6)m%(dhnj?0LhreAa`>_M|S2#SjwC>63Nvk+=qI)8bCM^sJHi>H5U|8*zm8!&9i&b)*8D>s>C3Iin33|zGUeNh
z=mwEYCk-LD4o?noc9SApl(~jzFNb($RFX#kLdfSM*c^D83fRj_FL0%GrJEhE5;jG0B8%dc`7eB_=hOb7C4f9W^
ze4EiRF{#zjH`CFXHT=}hr)!)zS*s>?e)Vn6%!f>O-U1GL%Z^I|Ptp9y;y1fsOBd>H
z_$jO6?UG&nclV`5IfD9WM@2G1W9Lqo-mtt9Eu
zQP|zlMx$x!ccTam~9xB)Rmx96zzUy^tXC2Q%yUZJrjf$*Z0RKN9^7
zKb2;rE`HjT>sYi(QX74DSkXTFPQ=}&!^=MV&uH^e-Gu4mQNu`s(teWF;k6xsiJ5d6jim8~c~=l#w8#!iDdD#SYVD-BOyhWTtnTt)>tmtB6I
zkmoo|9Xc!zMR3z^;@4R^0nU0^ANkg
zKdz(*xW6nxAn1-N5o_K^|E&U^=Tc{5v4S>e)_{2WVi0ciAdLTF9w+BI&@>(Wi0blX
zBN{s&53oX>@HQaw`;vG+lmfxDlmNYSskbQaeXvs2-_Ynw6E9*13rw3&aeGQq++atL
z;1`yxd-ULjC4?yQ7UCv0$uQiUhHAKO;2Y`768P^23Knl*Hl|B+xZ}ha;uoR(x$C9M
ztd5cN)r4ft_tSJFMmqWylCBK$Gn;Be=?>G7pDLsg`D?@&zoDfB8z@MTJNtf?*`g*`
z802C872%d`Ny;RosH}vW>`ID9aXl}u=8l^pHdIK}tMFGc6*sX&`#TfMw|@DK$#2zG
zw5&Weh(vc2&E#*x#q2JT%BH#($=Ue3z}c&FEx39=e>@vR*hYYh<_ibx*007M%EQm(v_*h(XEML{{oHIy__G(B5LHXN9oxXhKWZfeifOviHgihMIV^C#?FY_IgcTuMC0ZEQoL
zKeb34GQDab?1t!88GlzcyXV(0$=W#$X;V|FeVxCi6F)`u&Px&M~lo
zjdxS?e|ny(;+05VPh10h#KAMindG8vQ>Crq1aZth+{%_x)1M;5&*lU+H~
zjL)2FGQX~(F*$mpDLh-J>;5AR!_;_5cy2=MV~`)2y&Z^TY37H@&&ZK4mTD(0%m`)v
z+CMM{modY|G2Pn=oZ3TsgyGV8*liob-LXUE;_8gd&3{89r!E4IGl!}It&kIj&r^>p
zbE%CzYe!$gw;nfUf1h+dVmLBni+1qdCng`Reob#kf_ZiVWcJwhX3(b~yC}!@4(^N03d`b5-*1Sf&
z94t~G&;J<27djFhu8Jwhj_9qtN3u-aYeEeF>F9~fEI172*^wO@ySvRDkh@o|J;#2e
zcwEInzb-3jKMo*l+gLZf`;VeS*tpSWrE}G@Z7urL+oNS_LhP=qlI$#_aRsr2L*X&j
z`E`H6~6qJ^`ea7@!#X7$FPy*6vhV{f@=Io;IJZ-j1hroSfqMuGhXiRB+%NHJd%1(Bv5m69(+5Wk0T}A)cny
z#L;Tk{0~dA?$&Q#o_5R-d%OYn+jE_gxs@;bj}*@@ShTBHkI?b9hWMAH)5lk&n}^lY
z1r{)T@Ci8q2pR{HsNHdoKS!{<5RJdQ#YQG^Tsn(Krr_Lv`1;I@4bbBREA{{c)IoTE
zuf^1nKaHcrjv>1^B1-Lm993Wgb?_7i3VH$*y#geChLSiAN>itxMyNw_671ADp(W#x
zvhhh%Z1m`=Q*2IDy9Ctsv&Y;jWRI#RT})^>HpbZaa##X}c~xi}_M5FL^u4N$er&W;
z$B1H1jDQ5J3Qlls6$a9T{>L-)19em^jfp;WoImPo!&O+f<5)CYM?ej9aAN%WIQC8z
zw!p;nnIjI2OX*4-gTe`)PNR;s8dvKakS2?V!-Z#tvnn=$Y2#GlU4>7DL-;i@i!qUK
z1v?CLlt8GOAlzv}VuI)s7n-yhp<*KO`|4ZuYQlo*l_qr}b1tGvE*#=>BI{}=`)XpB
zbCNWTszMC{zeG?_B2l>pS#>p0q7zBIQ;`f8>D~nKVPaJ=0*7MA$rYMNHpfNwIPq^)
zgK}j;v2B9xM~W{3@%9wS==7lxQqrD^Q0Q|u@}s>7yh*b~XB=^SQ8AT)VtTzId)bGJKlZUGqt@OX@p
z`OK`iU@rIX@VM=g*}mX?(M;yn;HfX2;N!y+kA>LP4T%P(Hb`stFtv6i=)r_KFR$g9@Y_mb~>t!SB+W`q{3S}V^#N~jf2Y)wld
z8&CA`l4@c?^b!wtji>NyN?ci8WXnYeGA(jQBZ`GD%5f=L?jnih0z=fE-6TnX>m*pF
zJNxjYajwL^#!24SO2VcEDN|r0+!8x3Qtw?w_;{s{r=;=mWp450MDTgYrv>Hf=n^kw
zT&AToT&HwX#E7|tEw7|QuVk~TJ&y?F{|<4hrd_O
zntuO$MY)$EE6J^JoT7B@%6>a7m#j^Us8c2*&~%bg?R8Z*iV{7=*TN!@xz>J9NC11d
z(%9hDE>Tlg{&sPurKL5aUaqZS^ldOjTbqVJz1&gLt{!lRuc61MHy5YnLqH>`qbskY
zA26={rM?NxO^-)MPkda*?_0wMH{EbP-GfnmCO#A=9fM>Y9j_U!oO&%GsC)^ZA>2(U
zx?Xbu+n`p*r16_U=ZuLDf#LU8hdkfHPsEIA0fy0nj#=6asC~xl50?JHH)C+a!tl(8
zJXVui9iw}lv&?#ETe_}T#B0LtTx>nZiovgElJiL}dy5@Sbe?@Ps(>SbNjp^YxlPa^eY0TDcsn%%?
zea5pk9?TzYbU%l>_t?*V7GSmU(zWwwn8>{`&*8LDdm_Vrig>#eTKH~!qG8z&kBuQ5ZKgKVSi>5ZeBhqO?dlYqb(>70ut(`P0<
zcX^Le_BqE_S_OfghXEmE?Z&N^*VV?uF|={gVa|1i&B;s8ONX$~c+P{1+x?TCcep^6
z{jKK;hf9Wsm!1G!-keu6o1>zhZ{%EL%$zqmqgTD2U$aL>$F0jB4(~EO{{eyIQ9`$B
z0gpxxkGV#>_FKOpZr?v1-Up2#!?*rv?0yR#0R;0I%eNk(4F0J4!C-xtqq)FidLQES
zfa^Io^1A?K&Ok_dFoP#m_RxW|5Yp1zfZeuScDM8;kiN0SY=XJl4-i`xbWCKRjjEuO^dTh1L^^4@@^F+s68i4QedLr9G`HSaIs0}ib%NNkJ|ka{J0trbqfmA)^ZY*0Eu-KuBkwC(q4+C?uceToCI1;*g!Rym-&`c%{atOl
z!0ep}t#`g+=8phi0Y^(2Z%cteW{DqhG15DGaC5P|_mB6N#qsa3by`YUJ
ztTIbWyi32n`(7VUV3b+rA^fR}_{W?=sa@vJ-`>i<-j$7M6f}F6&$SqIJd{MMWDc~H
z?qr(&_we7TLdil)*=@_}@?s@KsyN)RYGC2NV?(}~jLK`n3XGk~cHtje-c@_TH3Fz5
zERTlQUe$O;@yRH*Rf2
z68O(Lt2JjS`+Zgu(^OOWV-vAqbHPJ!dTXntPfP(xTMKFi1+Jm0=gZ+nY;ddaeTo9}uH4BA=R`V{Bd
ziG5p~vIq5+i#!m^9lf5de%XH@t^FFLfey=q(Z2A+>_#8s{($Vy@Tb0N`QHYl!vfd8
z2S|O>M2E7nf8;Iy{4P3NX8ffhd$>ryuReQpf;4KnZODhGd?kCVR~G#Kr8<}_M#JW+4W`X=7OvmUlM&67