From b727aa56c3b2e73223e38f8aeaed8de6d633f28c Mon Sep 17 00:00:00 2001 From: Jacob Stephens Date: Tue, 20 Oct 2026 06:51:29 +0000 Subject: [PATCH 1/4] Add built-in Console Themes and restricted look settings (#824) --- Cargo.lock | 1 + Cargo.toml | 2 +- console/package-lock.json | 18 ++ console/package.json | 9 +- console/tests/inbox.test.cjs | 131 ++++++++- docs/code-navigation.md | 1 + src/args.rs | 47 +++- src/config.rs | 6 +- src/config/console.rs | 133 ++++++++- src/console.rs | 36 +++ src/console/accounts.rs | 6 +- src/console/assets/README.md | 33 ++- src/console/assets/console.css | 50 ++-- src/console/assets/console.js | 12 +- .../atkinsonhyperlegible-400-latin.woff2 | Bin 0 -> 17208 bytes .../atkinsonhyperlegible-700-latin.woff2 | Bin 0 -> 17524 bytes .../assets/fonts/atkinsonhyperlegible-OFL.txt | 92 +++++++ .../fonts/barlowcondensed-400-latin.woff2 | Bin 0 -> 21164 bytes .../fonts/barlowcondensed-600-latin.woff2 | Bin 0 -> 22308 bytes .../fonts/barlowcondensed-700-latin.woff2 | Bin 0 -> 22444 bytes .../assets/fonts/barlowcondensed-OFL.txt | 93 +++++++ .../bigshouldersdisplay-100-900-latin.woff2 | Bin 0 -> 35436 bytes .../assets/fonts/bigshouldersdisplay-OFL.txt | 93 +++++++ .../assets/fonts/caprasimo-400-latin.woff2 | Bin 0 -> 20888 bytes src/console/assets/fonts/caprasimo-OFL.txt | 93 +++++++ .../assets/fonts/inter-100-900-latin.woff2 | Bin 0 -> 48256 bytes src/console/assets/fonts/inter-OFL.txt | 93 +++++++ .../fonts/jetbrainsmono-100-800-latin.woff2 | Bin 0 -> 40404 bytes .../assets/fonts/jetbrainsmono-OFL.txt | 93 +++++++ .../assets/fonts/nunito-200-1000-latin.woff2 | Bin 0 -> 39128 bytes src/console/assets/fonts/nunito-OFL.txt | 93 +++++++ .../assets/fonts/titilliumweb-400-latin.woff2 | Bin 0 -> 12344 bytes .../assets/fonts/titilliumweb-600-latin.woff2 | Bin 0 -> 12116 bytes .../assets/fonts/titilliumweb-700-latin.woff2 | Bin 0 -> 11732 bytes src/console/assets/fonts/titilliumweb-OFL.txt | 93 +++++++ src/console/assets/logs.js | 3 + src/console/assets/look.js | 94 +++++++ src/console/assets/themes.css | 260 ++++++++++++++++++ src/console/auth.rs | 2 +- src/console/chrome.html | 13 +- src/console/inbox.html | 2 +- src/console/look.rs | 145 ++++++++++ src/console/reader.html | 2 +- src/console/row.html | 2 +- src/console/time.html | 8 +- src/console/waterfall.html | 4 +- src/main.rs | 19 ++ tests/console.rs | 3 + tests/console/accounts.rs | 60 ++++ tests/console/look.rs | 119 ++++++++ 50 files changed, 1912 insertions(+), 52 deletions(-) create mode 100644 src/console/assets/fonts/atkinsonhyperlegible-400-latin.woff2 create mode 100644 src/console/assets/fonts/atkinsonhyperlegible-700-latin.woff2 create mode 100644 src/console/assets/fonts/atkinsonhyperlegible-OFL.txt create mode 100644 src/console/assets/fonts/barlowcondensed-400-latin.woff2 create mode 100644 src/console/assets/fonts/barlowcondensed-600-latin.woff2 create mode 100644 src/console/assets/fonts/barlowcondensed-700-latin.woff2 create mode 100644 src/console/assets/fonts/barlowcondensed-OFL.txt create mode 100644 src/console/assets/fonts/bigshouldersdisplay-100-900-latin.woff2 create mode 100644 src/console/assets/fonts/bigshouldersdisplay-OFL.txt create mode 100644 src/console/assets/fonts/caprasimo-400-latin.woff2 create mode 100644 src/console/assets/fonts/caprasimo-OFL.txt create mode 100644 src/console/assets/fonts/inter-100-900-latin.woff2 create mode 100644 src/console/assets/fonts/inter-OFL.txt create mode 100644 src/console/assets/fonts/jetbrainsmono-100-800-latin.woff2 create mode 100644 src/console/assets/fonts/jetbrainsmono-OFL.txt create mode 100644 src/console/assets/fonts/nunito-200-1000-latin.woff2 create mode 100644 src/console/assets/fonts/nunito-OFL.txt create mode 100644 src/console/assets/fonts/titilliumweb-400-latin.woff2 create mode 100644 src/console/assets/fonts/titilliumweb-600-latin.woff2 create mode 100644 src/console/assets/fonts/titilliumweb-700-latin.woff2 create mode 100644 src/console/assets/fonts/titilliumweb-OFL.txt create mode 100644 src/console/assets/look.js create mode 100644 src/console/assets/themes.css create mode 100644 src/console/look.rs create mode 100644 tests/console/look.rs diff --git a/Cargo.lock b/Cargo.lock index 7c5c9a24..a6f32db7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -200,6 +200,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "serde_core", + "serde_json", "serde_path_to_error", "serde_urlencoded", "sync_wrapper", diff --git a/Cargo.toml b/Cargo.toml index 80a69530..b29cee78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ include = ["/src", "/skills", "/askama.toml", "/README.md", "/LICENSE"] anyhow = "1.0.104" argon2 = "0.5.3" askama = "0.16.1" -axum = { version = "0.8.9", default-features = false, features = ["http1", "tokio", "form"] } +axum = { version = "0.8.9", default-features = false, features = ["http1", "tokio", "form", "json"] } # axoupdater needs axoasset's `remote` feature, which always pulls in `image` # (with moxcms and pxfm) and turns on reqwest's `default-tls`, which is rustls # with aws-lc. No flag turns either off, and features unify, so switching diff --git a/console/package-lock.json b/console/package-lock.json index 0e519e65..6ed5c888 100644 --- a/console/package-lock.json +++ b/console/package-lock.json @@ -5,9 +5,27 @@ "packages": { "": { "devDependencies": { + "apca-w3": "0.1.9", "playwright": "1.64.0" } }, + "node_modules/apca-w3": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/apca-w3/-/apca-w3-0.1.9.tgz", + "integrity": "sha512-Zrf6AeBeQjNe/fxK7U1jCo5zfdjDl6T4/kdw5Xlky3G7u+EJTZkyItjMYQGtwf9pkftsINxcYyOpuLkzKf1ITQ==", + "dev": true, + "license": "Limited W3 License", + "dependencies": { + "colorparsley": "^0.1.8" + } + }, + "node_modules/colorparsley": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/colorparsley/-/colorparsley-0.1.8.tgz", + "integrity": "sha512-rObESTTTE6G5qO5WFwFxWPggpw4KfpxnLC6Ssl8bITBnNVRhDsyCeTRAUxWQNVTx2pRknKlO2nddYTxjkdNFaw==", + "dev": true, + "license": "AGPL v3" + }, "node_modules/playwright": { "version": "1.64.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.64.0.tgz", diff --git a/console/package.json b/console/package.json index 79602d45..b8399e53 100644 --- a/console/package.json +++ b/console/package.json @@ -1,5 +1,10 @@ { "private": true, - "scripts": { "test": "node --test tests/*.test.cjs" }, - "devDependencies": { "playwright": "1.64.0" } + "scripts": { + "test": "node --test tests/*.test.cjs" + }, + "devDependencies": { + "apca-w3": "0.1.9", + "playwright": "1.64.0" + } } diff --git a/console/tests/inbox.test.cjs b/console/tests/inbox.test.cjs index caf7e08d..a5ba35e5 100644 --- a/console/tests/inbox.test.cjs +++ b/console/tests/inbox.test.cjs @@ -64,6 +64,105 @@ async function pageFor(t, options) { return page; } +test("Shift+T switches all built-in Themes and saves hidden sections across browsers", async t => { + const page = await pageFor(t); + const remote = []; + page.on('request', request => { if (!request.url().startsWith(origin)) remote.push(request.url()); }); + await page.goto(origin); + await page.keyboard.press('Shift+T'); + await page.locator('#themes[open]').waitFor({ timeout: 2000 }); + try { + for (const family of ['focus', 'plain', 'press', 'signal', 'garden', 'factory']) { + for (const mode of ['auto', 'light', 'dark']) { + const name = `${family}-${mode}`; + await page.selectOption('#theme-name', name); + const saved = page.waitForResponse(response => response.url() === `${origin}/theme`); + await page.getByRole('button', { name: 'Apply Theme', exact: true }).click(); + const response = await saved; + assert.equal(response.status(), 200, await response.text()); + assert.equal((await response.json()).theme, name); + await page.waitForFunction(name => document.documentElement.dataset.theme === name, name); + assert.match(await readFile(join(home, '.thirdshift/config.toml'), 'utf8'), new RegExp(`theme = "${name}"`)); + await page.evaluate(() => document.fonts.ready); + assert.equal(await page.evaluate(() => [...document.fonts].filter(f => f.status === 'error').length), 0); + } + } + await page.getByRole('button', { name: 'Close Themes' }).click(); + await page.getByRole('button', { name: 'Sections', exact: true }).click(); + await page.getByLabel('Show Done', { exact: true }).uncheck(); + await page.getByRole('button', { name: 'Save sections' }).click(); + await page.locator('[data-group="done"][hidden]').waitFor({ state: 'attached' }); + const other = await pageFor(t); + await other.goto(origin); + await other.locator('[data-group="done"][hidden]').waitFor({ state: 'attached' }); + assert.equal(await other.locator('html').getAttribute('data-theme'), 'factory-dark'); + assert.deepEqual(remote, [], 'Themes must load fonts and assets locally'); + } finally { await writeFile(join(home, '.thirdshift/config.toml'), '[console]\nport = 0\n'); } +}); + +test("every built-in Theme text pair meets AA in both system modes, including solid tags", async t => { + const page = await pageFor(t); + const failures = []; + const { APCAcontrast, sRGBtoY } = await import('apca-w3'); + const luminance = rgb => rgb.map(v => v / 255).map(v => v <= .04045 ? v / 12.92 : ((v + .055) / 1.055) ** 2.4).reduce((sum, v, i) => sum + v * [.2126, .7152, .0722][i], 0); + const ratio = (a, b) => (Math.max(luminance(a), luminance(b)) + .05) / (Math.min(luminance(a), luminance(b)) + .05); + await page.goto(origin); + const backgrounds = { focus: ['rgb(247, 247, 245)', 'rgb(18, 18, 20)'], plain: ['rgb(252, 252, 251)', 'rgb(17, 18, 20)'], press: ['rgb(232, 230, 225)', 'rgb(10, 10, 10)'], signal: ['rgb(250, 250, 250)', 'rgb(17, 19, 21)'], garden: ['rgb(246, 240, 225)', 'rgb(22, 26, 20)'], factory: ['rgb(227, 230, 232)', 'rgb(28, 29, 31)'] }; + for (const family of ['focus', 'plain', 'press', 'signal', 'garden', 'factory']) { + for (const mode of ['auto', 'light', 'dark']) { + for (const system of ['light', 'dark']) { + await page.emulateMedia({ colorScheme: system }); + const theme = `${family}-${mode}`; + const { pairs, background } = await page.evaluate(theme => { + document.documentElement.dataset.theme = theme; + const probe = document.createElement('span'); + document.body.append(probe); + const color = token => { + probe.style.color = `var(--${token})`; + return getComputedStyle(probe).color.match(/[\d.]+/g).slice(0, 3).map(Number); + }; + const pairs = []; + for (const background of ['bg', 'panel', 'panel-2', 'sel-bg']) { + for (const text of ['text', 'head', 'dim', 'link', 'urgent-text', 'look-text', 'working-text', 'ready-text']) { + pairs.push({ name: `${text} on ${background}`, text: color(text), background: color(background) }); + } + } + for (const state of ['urgent', 'look', 'working', 'landing', 'ready', 'done']) { + pairs.push({ name: `on-${state}`, text: color(`on-${state}`), background: color(state) }); + } + probe.remove(); + const texts = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); + while (texts.nextNode()) { + const node = texts.currentNode; + if (!node.textContent.trim()) continue; + const range = document.createRange(); range.selectNode(node); + if (!range.getBoundingClientRect().width || !range.getBoundingClientRect().height) continue; + const style = getComputedStyle(node.parentElement); + let parent = node.parentElement; + while (parent && getComputedStyle(parent).backgroundColor === 'rgba(0, 0, 0, 0)') parent = parent.parentElement; + if (!parent) continue; + pairs.push({ name: `rendered ${node.textContent.trim().slice(0, 30)}`, text: style.color.match(/[\d.]+/g).slice(0, 3).map(Number), background: getComputedStyle(parent).backgroundColor.match(/[\d.]+/g).slice(0, 3).map(Number) }); + } + return { pairs, background: getComputedStyle(document.body).backgroundColor }; + }, theme); + assert.equal(background, backgrounds[family][(mode === 'auto' ? system : mode) === 'dark' ? 1 : 0], `${theme} must respect the chosen mode on ${system}`); + for (const pair of pairs) { + if (ratio(pair.text, pair.background) < 4.5) failures.push(`${theme} (${system}): ${pair.name} = ${ratio(pair.text, pair.background)}`); + if (family === 'focus' && !pair.name.startsWith('on-')) { + assert.ok(Math.abs(APCAcontrast(sRGBtoY(pair.text), sRGBtoY(pair.background))) >= 45, `${theme}: ${pair.name} below APCA Lc 45`); + } + if (pair.name.startsWith('on-')) { + const best = Math.max(ratio([0, 0, 0], pair.background), ratio([255, 255, 255], pair.background)); + assert.equal(ratio(pair.text, pair.background), best, `${theme}: ${pair.name} must use the better black or white`); + } + } + } + } + } + assert.deepEqual(failures, []); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0, 'idle Commands must not animate'); +}); + test("Inbox folds, loads only its own resources and fits a 390 px phone", async t => { const page = await pageFor(t, { viewport: { width: 390, height: 844 } }); const remote = [], errors = []; @@ -295,20 +394,50 @@ test("heartbeat beats only for server-observed log growth and is flat when Silen await page.locator('[data-group="working"] > summary').click(); const row = page.locator('.command').filter({ has: page.locator('.subject', { hasText: /^acme\/widgets#202$/ }) }); const id = await row.getAttribute('id'); + await page.waitForFunction(id => document.getElementById(id).querySelector('.state').getAnimations({ subtree: true }).some(a => a.playState === 'running'), id, { timeout: 2000 }); + await page.getByRole('button', { name: 'Pause motion', exact: true }).click(); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0); + await page.reload(); + assert.equal(await page.getByRole('button', { name: 'Pause motion', exact: true }).getAttribute('aria-pressed'), 'true'); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0); + await page.getByRole('button', { name: 'Pause motion', exact: true }).click(); assert.equal(await row.locator('.heartbeat').evaluate(dot => dot.getAnimations().length), 0); await appendFile(session, ' growth'); await page.waitForFunction(id => document.getElementById(id).querySelector('.heartbeat').getAnimations().some(animation => animation.playState === 'running'), id); await page.waitForFunction(id => document.getElementById(id).querySelector('.heartbeat').getAnimations().length === 0, id); + for (const family of ['garden', 'factory']) { + await writeFile(join(home, '.thirdshift/config.toml'), `[console]\nport = 0\ntheme = "${family}-auto"\n`); + await page.waitForFunction(theme => document.documentElement.dataset.theme === theme, `${family}-auto`); + assert.notEqual(await page.locator('header').evaluate(header => getComputedStyle(header, '::after').animationName), 'none'); + await page.getByRole('button', { name: 'Pause motion', exact: true }).click(); + await appendFile(session, ' paused growth'); + await page.waitForTimeout(350); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0); + await page.getByRole('button', { name: 'Pause motion', exact: true }).click(); + await page.emulateMedia({ reducedMotion: 'reduce' }); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0); + await page.emulateMedia({ reducedMotion: 'no-preference' }); + } const old = new Date(Date.now() - 20 * 60 * 1000); await utimes(log, old, old); await utimes(session, old, old); await page.waitForFunction(id => document.getElementById(id).dataset.state === 'Silent', id); + assert.equal(await row.locator('.state').evaluate(state => getComputedStyle(state).animationIterationCount), '3'); assert.equal(await row.locator('.heartbeat').evaluate(dot => dot.getAnimations().length), 0); await page.emulateMedia({ reducedMotion: 'reduce' }); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0); await appendFile(log, ' more'); await page.waitForFunction(id => document.getElementById(id).dataset.logging === 'true', id); assert.equal(await row.locator('.heartbeat').evaluate(dot => dot.getAnimations().length), 0); - } finally { await Promise.all([path, log, session].map(path => rm(path, { force: true }))); } + fixture.outcome = 'merged'; fixture.ended_at = new Date().toISOString(); + await writeFile(path, JSON.stringify(fixture)); + await page.waitForFunction(() => document.documentElement.dataset.live === 'false'); + await page.emulateMedia({ reducedMotion: 'no-preference' }); + assert.equal(await page.evaluate(() => document.getAnimations().length), 0, 'an ended Command must stop the garden and conveyor'); + } finally { + await Promise.all([path, log, session].map(path => rm(path, { force: true }))); + await writeFile(join(home, '.thirdshift/config.toml'), '[console]\nport = 0\n'); + } }); test("a push keeps a Pass dispatch selected instead of its parent", async t => { diff --git a/docs/code-navigation.md b/docs/code-navigation.md index 7ae9c1d7..2bf984f3 100644 --- a/docs/code-navigation.md +++ b/docs/code-navigation.md @@ -27,6 +27,7 @@ Start with the issue's terms in `CONTEXT.md`, then use this index to find their | Command naming, Session selection, show, logs | `src/logs/reading/selection.rs` — resolution, captured outer owner and child-refusal target, Session inventory/selection and bounded latest events; `src/logs/status/inspect.rs` — formatting and log streaming | `src/logs/reading/tests.rs`, `tests/show_logs.rs` | | Console Logs page, conversation, log stream, exact log inventory | `src/logs/reading/catalog.rs` — current-layout inventory shared with `logs`; `src/console/logs.rs` — pages and byte-offset SSE; `src/console/conversation.rs` — Claude/Codex rendering | `tests/console.rs`, `tests/fixtures/console-*.jsonl`, `console/tests/logs.test.cjs` | | Console account, Console log, sign-in | `src/console/accounts.rs` — durable accounts, sessions, slowdown and account events; `src/console/auth.rs` — HTTP authorization and CSRF; `src/console/account_commands.rs` — CLI; `src/terminal.rs` — shared hidden terminal input | `src/console/accounts/tests.rs`, `tests/console/accounts.rs` | +| Theme, hidden sections, Pause motion | `src/config/console.rs` — built-in names and restricted User config writes; `src/console/look.rs` — CLI/HTTP look actions; `src/console/assets/themes.css` — tokens; `src/console/assets/look.js` — picker and browser motion preference | `tests/console/look.rs`, `console/tests/inbox.test.cjs` | | Stop | `src/logs/reading.rs` — `retained_work` reload by captured record; `src/logs/reading/selection.rs` — `Selection::stop_target`; `src/logs/stop.rs` — request, signaling and waiting; `src/claim.rs` — Stop endings | `src/logs/reading/tests.rs`, `tests/stop.rs`; inline Claim and Stop tests | | User config, Setup | `src/config.rs`; `src/setup.rs` | `tests/user_config.rs`, `tests/setup.rs` | | Architecture review, Architect run | `src/architect.rs` | `tests/architect_run.rs` | diff --git a/src/args.rs b/src/args.rs index bcb15181..8615a6cd 100644 --- a/src/args.rs +++ b/src/args.rs @@ -6,7 +6,7 @@ use std::iter::Peekable; use std::mem::discriminant; use std::num::NonZeroUsize; -use anyhow::{Result, bail}; +use anyhow::{Context, Result, bail}; use crate::asks::Flags; use crate::base_fix::BaseFixAsk; @@ -33,6 +33,15 @@ pub enum Command { ConsoleLog { json: bool, }, + ConsoleTheme { + name: Option, + json: bool, + }, + ConsoleSections { + hide: Vec, + show: Vec, + json: bool, + }, Status { json: bool, all: bool, @@ -256,6 +265,42 @@ pub fn parse(args: &[String]) -> Result { Some("version" | "--version" | "-V") => return Ok(Command::Version), Some("update") => return Ok(Command::Update), Some("console") => { + if args.get(1).is_some_and(|action| action == "theme") { + let json = args.last().is_some_and(|arg| arg == "--json"); + let end = args.len() - usize::from(json); + let [name] = &args[2..end] else { + bail!("usage: thirdshift console theme [--json]"); + }; + return Ok(Command::ConsoleTheme { + name: (name != "list").then(|| name.clone()), + json, + }); + } + if args.get(1).is_some_and(|action| action == "sections") { + let (mut hide, mut show, mut json) = (Vec::new(), Vec::new(), false); + let mut arguments = args[2..].iter(); + while let Some(flag) = arguments.next() { + match flag.as_str() { + "--json" if !json => json = true, + "--hide" | "--show" => { + let section = arguments + .next() + .filter(|s| !s.starts_with('-')) + .context("--hide and --show need a section name")?; + let target = if flag == "--hide" { + &mut hide + } else { + &mut show + }; + target.extend(section.split(',').map(str::to_owned)); + } + _ => bail!( + "usage: thirdshift console sections [--hide
] [--show
] [--json]" + ), + } + } + return Ok(Command::ConsoleSections { hide, show, json }); + } if args.get(1).is_some_and(|action| action == "sign-out") { let mut email = None; let mut json = false; diff --git a/src/config.rs b/src/config.rs index d4818803..b7f3009b 100644 --- a/src/config.rs +++ b/src/config.rs @@ -16,7 +16,7 @@ use toml_edit::{DocumentMut, Item}; use crate::harness::{self, Harness, ModelAndEffort}; -mod console; +pub mod console; pub use console::ConsoleSettings; /// The settings a User config can hold. Each is what a Run does when its @@ -793,7 +793,8 @@ silent_minutes = 10 # minutes without growth in either log before a Run is Sil port = 8711 # localhost port for the Console; 0 chooses a free port; default 8711 allowed_emails = [] # addresses that may sign in; empty requires --no-sign-in; default [] other_consoles = [] # http or https addresses linked in the header, never fetched; default [] -theme = "focus-auto" # Focus follows the system, or focus-light / focus-dark; default focus-auto +theme = "focus-auto" # focus/plain/press/signal/garden/factory, with -auto/-light/-dark; default focus-auto +hidden_sections = [] # needs-you/ready-for-review/landing/working/done/resolved; default [] [activity] quiet_skips = false # a skipped Pass prints nothing, leaving only its Activity log line; default false @@ -977,6 +978,7 @@ mod tests { "console.allowed_emails", "console.other_consoles", "console.theme", + "console.hidden_sections", "activity.quiet_skips", "spec.parallel", "pickup.limit", diff --git a/src/config/console.rs b/src/config/console.rs index 7269c2f8..87662974 100644 --- a/src/config/console.rs +++ b/src/config/console.rs @@ -1,14 +1,51 @@ -//! Console settings stay in the User config; serving never writes them. +//! Console settings and narrowly scoped, comment-preserving look writes. use anyhow::{Result, ensure}; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; -#[derive(Debug, PartialEq, Eq, Deserialize)] +pub const THEME_FAMILIES: &[&str] = &["focus", "plain", "press", "signal", "garden", "factory"]; +pub const SECTIONS: &[&str] = &[ + "needs-you", + "ready-for-review", + "landing", + "working", + "done", + "resolved", +]; + +pub fn theme_names() -> Vec { + THEME_FAMILIES + .iter() + .flat_map(|family| ["auto", "light", "dark"].map(|mode| format!("{family}-{mode}"))) + .collect() +} + +pub fn validate_theme(theme: &str) -> Result<()> { + ensure!( + theme_names().iter().any(|name| name == theme), + "unknown Console Theme: {theme}" + ); + Ok(()) +} + +pub fn validate_sections(sections: &[String]) -> Result<()> { + ensure!( + sections + .iter() + .all(|section| SECTIONS.contains(§ion.as_str())), + "unknown Console section; choose {}", + SECTIONS.join(", ") + ); + Ok(()) +} + +#[derive(Debug, PartialEq, Eq, Deserialize, Serialize)] #[serde(default, deny_unknown_fields)] pub struct ConsoleSettings { pub port: u16, pub allowed_emails: Vec, pub other_consoles: Vec, pub theme: String, + pub hidden_sections: Vec, } impl Default for ConsoleSettings { @@ -18,6 +55,7 @@ impl Default for ConsoleSettings { allowed_emails: Vec::new(), other_consoles: Vec::new(), theme: "focus-auto".into(), + hidden_sections: Vec::new(), } } } @@ -30,13 +68,8 @@ impl ConsoleSettings { "console.allowed_emails must contain email addresses" ); } - ensure!( - matches!( - self.theme.as_str(), - "focus-auto" | "focus-light" | "focus-dark" - ), - "console.theme must be focus-auto, focus-light or focus-dark" - ); + validate_theme(&self.theme)?; + validate_sections(&self.hidden_sections)?; for address in &self.other_consoles { let url = reqwest::Url::parse(address)?; ensure!( @@ -47,3 +80,83 @@ impl ConsoleSettings { Ok(()) } } + +/// The caller can change only the two look keys. Lock the read/edit/replace +/// across CLI processes and HTTP requests so independent look writes compose. +pub fn write_look( + theme: Option<&str>, + hide: &[String], + show: &[String], +) -> Result { + use std::fs::{self, OpenOptions}; + use std::io::Write; + use toml_edit::{DocumentMut, Item, Table, Value}; + + if let Some(theme) = theme { + validate_theme(theme)?; + } + validate_sections(hide)?; + validate_sections(show)?; + let (home, path) = super::home_and_path()?; + let root = path.parent().expect("User config directory"); + fs::create_dir_all(root)?; + let lock = OpenOptions::new() + .create(true) + .truncate(false) + .write(true) + .open(root.join("config.lock"))?; + lock.lock()?; + let text = match fs::read_to_string(&path) { + Ok(text) => text, + Err(error) if error.kind() == std::io::ErrorKind::NotFound => String::new(), + Err(error) => return Err(error.into()), + }; + let mut settings = super::UserConfig::parse(&text, &path, &home)?.console; + let mut document: DocumentMut = text.parse()?; + if let Some(theme) = theme { + settings.theme = theme.into(); + } + settings + .hidden_sections + .retain(|section| !show.contains(section)); + for section in hide { + if !settings.hidden_sections.contains(section) { + settings.hidden_sections.push(section.clone()); + } + } + if !document.contains_key("console") { + document["console"] = Item::Table(Table::new()); + } + let mut set = |key: &str, value: Value| { + let table = document["console"] + .as_table_like_mut() + .expect("validated console table"); + if table.contains_key(key) { + super::set(&mut document, "console", key, value); + } else { + table.insert(key, Item::Value(value)); + } + }; + if theme.is_some() { + set("theme", settings.theme.clone().into()); + } + if !hide.is_empty() || !show.is_empty() { + set( + "hidden_sections", + settings + .hidden_sections + .iter() + .collect::() + .into(), + ); + } + let rendered = document.to_string(); + if path.exists() { + super::replace(&path, &rendered)?; + } else { + let mut file = tempfile::NamedTempFile::new_in(root)?; + file.write_all(rendered.as_bytes())?; + file.persist(&path)?; + } + Ok(settings) +} diff --git a/src/console.rs b/src/console.rs index 67bcea7d..b39ff7e4 100644 --- a/src/console.rs +++ b/src/console.rs @@ -6,6 +6,8 @@ mod conversation; pub use account_commands::{password, print_log, sign_out}; mod live; mod logs; +mod look; +pub use look::{sections, theme}; mod peek; mod restart; mod time; @@ -52,9 +54,33 @@ enum View { SignOut, SignInPage, SignIn, + Look, + Theme, + Sections, } const PAGES: &[PageRoute] = &[ + PageRoute { + path: "/look", + cli: &[ + "thirdshift console theme list --json", + "thirdshift console sections --json", + ], + method: Method::GET, + view: View::Look, + }, + PageRoute { + path: "/theme", + cli: &["thirdshift console theme focus-auto --json"], + method: Method::POST, + view: View::Theme, + }, + PageRoute { + path: "/sections", + cli: &["thirdshift console sections --hide done --json"], + method: Method::POST, + view: View::Sections, + }, PageRoute { path: "/waterfall", cli: &[ @@ -246,6 +272,9 @@ fn router(no_sign_in: bool, changes: tokio::sync::watch::Receiver) -> Route (View::SignOut, Method::POST) => post(auth::sign_out), (View::SignInPage, Method::GET) => get(auth::sign_in_page), (View::SignIn, Method::POST) => post(auth::sign_in), + (View::Look, Method::GET) => get(look::get), + (View::Theme, Method::POST) => post(look::set_theme), + (View::Sections, Method::POST) => post(look::set_sections), _ => unreachable!("unknown Console page method"), }; router = router.route(page.path, handler); @@ -266,6 +295,7 @@ struct InboxPage { hostname: String, consoles: Vec, theme: String, + hidden_sections: Vec, cli: &'static str, inbox: Inbox, title: &'static str, @@ -275,6 +305,11 @@ struct InboxPage { } impl InboxPage { + fn hidden(&self, group: &str) -> bool { + self.hidden_sections + .iter() + .any(|section| section == &group.replace(' ', "-")) + } fn needs_you(&self) -> usize { self.inbox.sections[0].rows.len() } @@ -360,6 +395,7 @@ async fn render_page( hostname: crate::host::name().unwrap_or_else(|| "unknown".into()), consoles: config.console.other_consoles.clone(), theme: config.console.theme.clone(), + hidden_sections: config.console.hidden_sections.clone(), cli, inbox: status::inbox(&config)?, title, diff --git a/src/console/accounts.rs b/src/console/accounts.rs index 489c731f..3af97667 100644 --- a/src/console/accounts.rs +++ b/src/console/accounts.rs @@ -32,6 +32,8 @@ pub(super) enum EventKind { PasswordSet, SignOut, BlockedAddress, + ThemeChanged, + SectionsChanged, } impl std::fmt::Display for EventKind { @@ -42,6 +44,8 @@ impl std::fmt::Display for EventKind { Self::PasswordSet => "password-set", Self::SignOut => "sign-out", Self::BlockedAddress => "blocked-address", + Self::ThemeChanged => "theme-changed", + Self::SectionsChanged => "sections-changed", }) } } @@ -234,7 +238,7 @@ impl Accounts { Ok(()) } - fn record(&self, email: &str, event: EventKind) -> Result<()> { + pub(super) fn record(&self, email: &str, event: EventKind) -> Result<()> { let mut file = private_file(&self.root.join("console.log"))?; serde_json::to_writer( &mut file, diff --git a/src/console/assets/README.md b/src/console/assets/README.md index 4a135548..b13c5678 100644 --- a/src/console/assets/README.md +++ b/src/console/assets/README.md @@ -1,8 +1,18 @@ # Embedded Console assets All runtime assets are compiled in with `include_dir`; the release build uses -neither Node nor npm. Focus tokens and the font choices follow -`prototype/711-console` at `05b1b0a`, `themes.js`'s Focus light/dark definitions. +neither Node nor npm. `themes.css` holds the six Themes' tokens, adapted from +`prototype/711-console` at `05b1b0a`, `themes.js`. It is maintained directly, +with shared layout and activity motion in `console.css`. Press's light link +and Factory's dark dim/urgent text are adjusted to pass AA on raised and +selected panels as well as the page. Focus also has an APCA Lc 45 floor. + +`console theme -` and `console sections --hide done +--show working` share the page's restricted look writer. Sections are named +`needs-you`, `ready-for-review`, `landing`, `working`, `done`, `resolved`. +Theme and hidden sections are machine settings; Pause motion is stored only +in the browser. `npm test --prefix console` checks Theme switching, contrast, +font loading, and activity motion through the served Console. Vendored, unmodified libraries (licenses beside them): @@ -18,3 +28,22 @@ Latin-subset WOFF2 fonts, with SIL Open Font Licenses in `fonts/`: These URLs document provenance; the Console loads only embedded local files. + +Additional Latin-subset WOFF2 files from Google Fonts (normal style): + +- Big Shoulders Display, normal, weight 100 900: +- JetBrains Mono, normal, weight 100 800: +- Inter, normal, weight 100 900: +- Caprasimo, normal, weight 400: +- Nunito, normal, weight 200 1000: +- Barlow Condensed, normal, weight 400: +- Barlow Condensed, normal, weight 600: +- Barlow Condensed, normal, weight 700: +- Titillium Web, normal, weight 400: +- Titillium Web, normal, weight 600: +- Titillium Web, normal, weight 700: +- Atkinson Hyperlegible, normal, weight 400: +- Atkinson Hyperlegible, normal, weight 700: + +The matching SIL Open Font Licenses are vendored in `fonts/*-OFL.txt` +from `google/fonts` (`ofl//OFL.txt`). No remote URL is used at runtime. diff --git a/src/console/assets/console.css b/src/console/assets/console.css index 2c3437e8..bdd114c6 100644 --- a/src/console/assets/console.css +++ b/src/console/assets/console.css @@ -1,29 +1,13 @@ +@import url("/assets/themes.css"); @font-face { font-family: "IBM Plex Sans"; src: url("/assets/fonts/ibm-plex-sans-latin.woff2") format("woff2"); font-weight: 100 900; font-display: swap; } @font-face { font-family: "IBM Plex Mono"; src: url("/assets/fonts/ibm-plex-mono-latin.woff2") format("woff2"); font-weight: 400; font-display: swap; } -/* Focus tokens from prototype/711-console themes.js (05b1b0a), ADR 0018. */ -:root { - color-scheme: light dark; - --bg: light-dark(#F7F7F5, #121214); --panel: light-dark(#FFFFFF, #19191C); - --panel-2: light-dark(#F0F0EE, #212125); --sel-bg: light-dark(#EEEEEB, #2A2A2F); - --text: light-dark(#18181A, #E8E8EA); --head: var(--text); --link: var(--text); - --dim: light-dark(#6B6B70, #A0A0A8); --rule: light-dark(#E3E3E0, #2C2C31); - --urgent: light-dark(#D7263D, #FF6B78); --urgent-text: light-dark(#9A1424, #FFB0B5); - --look: light-dark(#B06800, #FFB020); --look-text: light-dark(#7E4C00, #FFB52E); - --working: light-dark(#5E5E63, #A8A8B0); --working-text: light-dark(#4A4A4F, #B4B4BC); - --landing: light-dark(#6B6B70, #9A9AA2); --ready: light-dark(#3F3F44, #C4C4CA); - --ready-text: var(--ready); --done: var(--landing); - --font-head: "IBM Plex Sans", sans-serif; --font-body: "IBM Plex Sans", sans-serif; - --font-mono: "IBM Plex Mono", monospace; --body-size: 14px; --head-weight: 600; --radius: 4px; -} -:root[data-theme="focus-light"] { color-scheme: light; } -:root[data-theme="focus-dark"] { color-scheme: dark; } * { box-sizing: border-box; } body { margin: 0 auto; max-width: 1120px; padding: 20px 28px; background: var(--bg); color: var(--text); font: var(--body-size)/1.4 var(--font-body); } header { border-bottom: 2px solid var(--head); padding-bottom: 14px; } .brand, .harness, .age, .empty, aside { color: var(--dim); } .brand { margin: 0; } -h1 { margin: 4px 0; font: var(--head-weight) clamp(24px, 4vw, 40px)/1.1 var(--font-head); overflow-wrap: anywhere; } +h1 { margin: 4px 0; font: var(--head-weight) clamp(24px, 4vw, 40px)/1.1 var(--font-head); overflow-wrap: anywhere; text-transform: var(--head-case); text-shadow: var(--title-shadow); } nav { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 10px; } a { color: var(--link); overflow-wrap: anywhere; } .page-title { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 16px 0 8px; } @@ -46,7 +30,7 @@ summary .count { margin-left: 12px; color: var(--dim); font-size: 13px; } .now { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .command[data-state="Died"], .command[data-state="Failed"], .command[data-state="Silent"], .command[data-state="Finding"], .command[data-state="Triage"] { background: var(--panel); border-left: 3px solid var(--urgent); color: var(--urgent-text); } .command[data-state="Slow"] { border-left: 3px solid var(--look); color: var(--look-text); } -.command[data-state="Died"] .state, .command[data-state="Failed"] .state, .command[data-state="Silent"] .state, .command[data-state="Finding"] .state, .command[data-state="Triage"] .state { color: var(--urgent-text); font-weight: var(--head-weight); } +.command[data-state="Died"] .state, .command[data-state="Failed"] .state, .command[data-state="Silent"] .state, .command[data-state="Finding"] .state, .command[data-state="Triage"] .state { color: var(--tag-text); font-weight: var(--head-weight); } .plan { margin-top: 6px; } .plan li::before { content: "☐ "; } .children { border-left: 1px solid var(--rule); padding-left: 14px; margin-top: 8px; } @@ -73,6 +57,34 @@ dd dl { border-left: 1px solid var(--rule); padding-left: 8px; } #jumps button { margin: 3px; } dialog::backdrop { background: #0006; } footer { margin-top: 16px; } +#section-options label { display: block; margin: 8px 0; } +.command { box-shadow: var(--panel-shadow); --state-ink: var(--done); --state-on: var(--on-done); } +.command[data-state="live"] { --state-ink: var(--working); --state-on: var(--on-working); } +.command[data-state="Landing"] { --state-ink: var(--landing); --state-on: var(--on-landing); } +.command[data-state="Ready"] { --state-ink: var(--ready); --state-on: var(--on-ready); } +.command:is([data-state="Silent"], [data-state="Died"], [data-state="Failed"], [data-state="Finding"], [data-state="Triage"]) { --state-ink: var(--urgent); --state-on: var(--on-urgent); } +.command[data-state="Slow"] { --state-ink: var(--look); --state-on: var(--on-look); } +.command .state { background: var(--tag-bg); color: var(--tag-text); border-radius: var(--radius); padding: 0 3px; } +.command[data-live="true"][data-state="live"] > .row-head > .state::before { content: ""; display: inline-block; width: 9px; height: 9px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; margin-right: 5px; } +header::after { content: ""; display: block; height: 4px; background: var(--activity-decoration); background-size: 24px 4px; } +#log-content[data-live="true"]::after { content: "▌"; color: var(--working-text); } +.command[data-state="Stopping"]::after { content: ""; display: block; height: 3px; background: repeating-linear-gradient(90deg, var(--urgent) 0 12px, transparent 12px 24px); background-size: 48px 3px; } +.running-stage { background-image: repeating-linear-gradient(120deg, transparent 0 8px, var(--rule) 8px 10px); background-size: 24px 24px; } +@keyframes working { to { transform: rotate(360deg); } } +@keyframes activity-drift { to { background-position: 24px 0; } } +@keyframes alarm { 50% { outline: 2px solid var(--urgent); } } +@keyframes cursor { 50% { opacity: 0; } } +@keyframes latest { from { outline: 2px solid var(--working); } } +@media (prefers-reduced-motion: no-preference) { + :root:not([data-paused="true"]) .command[data-live="true"][data-state="live"] > .row-head > .state::before { animation: working 2s linear infinite; } + :root:not([data-paused="true"]) .command[data-live="true"][data-state="Silent"] > .row-head > .state { animation: alarm 1.8s ease-in-out 3; } + :root:not([data-paused="true"]) #log-content[data-live="true"]::after { animation: cursor 1s steps(1) infinite; } + :root:not([data-paused="true"])[data-live="true"] header::after { animation: var(--activity-motion); } + :root:not([data-paused="true"]) .command[data-live="true"][data-state="Stopping"]::after, :root:not([data-paused="true"]) .running-stage { animation: activity-drift 1s linear infinite; } + :root:not([data-paused="true"]) #log-content[data-live="true"] > :last-child { animation: latest 900ms ease-out; } +} +:root[data-paused="true"] *, :root[data-paused="true"] *::before, :root[data-paused="true"] *::after { animation: none !important; transition: none !important; } +@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } } @media (max-width: 760px) { body.peek-open { display: block; } #peek { position: fixed; inset: auto 0 0; width: 100%; max-height: 65dvh; margin: 0; z-index: 10; border-radius: 12px 12px 0 0; box-shadow: 0 -4px 20px #0003; } diff --git a/src/console/assets/console.js b/src/console/assets/console.js index 05d1a3f9..6c52dad4 100644 --- a/src/console/assets/console.js +++ b/src/console/assets/console.js @@ -1,3 +1,4 @@ +import { activity, loadLook, motionAllowed } from './look.js'; // Browser preferences are conveniences; malformed or unavailable storage hides nothing. function stored(key, fallback) { try { return JSON.parse(localStorage.getItem(key)) ?? fallback; } catch { return fallback; } @@ -77,15 +78,20 @@ function morph(html) { document.title = next.title; document.querySelector('link[rel="icon"]').href = next.querySelector('link[rel="icon"]').getAttribute("href"); markNew(); + activity(); + loadLook(); for (const row of document.querySelectorAll('.command[data-logging="true"]')) { const previous = previousGrowth.get(row.id) ?? [0, 0]; const increased = logLengths(row).some((size, index) => size > previous[index]); - if (increased && !matchMedia("(prefers-reduced-motion: reduce)").matches) { + if (increased && row.dataset.live === 'true' && motionAllowed()) { row.querySelector(":scope > .row-head > .heartbeat")?.animate([ { transform: "scale(1)", opacity: 0.4 }, { transform: "scale(1.8)", opacity: 1, offset: 0.3 }, { transform: "scale(1)", opacity: 0.4 } ], { duration: 900 }); + row.querySelector(':scope > .now')?.animate([ + { outline: '2px solid var(--working)' }, { outline: '2px solid transparent' } + ], { duration: 900 }); } } } @@ -173,7 +179,7 @@ function items() { return [...document.querySelectorAll('main .group > summary, main .command, main .log-row')] .filter(element => { for (let parent = element.parentElement; parent; parent = parent.parentElement) { - if (parent.tagName === 'DETAILS' && !parent.open && element !== parent.firstElementChild) return false; + if (parent.hidden || (parent.tagName === 'DETAILS' && !parent.open && element !== parent.firstElementChild)) return false; } return true; }); @@ -221,6 +227,8 @@ document.addEventListener('keydown', event => { if (event.ctrlKey || event.metaKey || event.altKey || event.target.closest('input, select, textarea, [contenteditable="true"]')) return; if (event.key === 'Enter' && event.target.closest('a, button')) return; if (event.key === ' ' && event.target.closest('button')) return; + if (document.querySelector('#themes[open], #sections-chooser[open]')) return; + if (event.key === 'T' && event.shiftKey) { event.preventDefault(); document.querySelector('[data-open-themes]').click(); return; } if (event.key === 'Escape') { event.preventDefault(); if (help.open) help.close(); diff --git a/src/console/assets/fonts/atkinsonhyperlegible-400-latin.woff2 b/src/console/assets/fonts/atkinsonhyperlegible-400-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2e43c90d5456bbf449b5c4f8e119ae83d129abae GIT binary patch literal 17208 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 LDf^jF)&SPc?#=oh literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/atkinsonhyperlegible-700-latin.woff2 b/src/console/assets/fonts/atkinsonhyperlegible-700-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bc31903acd1b6772780b04b4f6f7e0e9f36021bb GIT binary patch literal 17524 zcmV)DK*7IvPew8T0RR9107P^E5dZ)H0GJ#A07MS}0RR9100000000000000000000 z0000Qfg~HHY8-=Z24Db#WC&~toD2~N3W3Q0fv*$`gJb{!HUcCAhe8A(1%xCAhBFL- zJsTs42iP`^nBVPS9A(tMRLn-$uyGLJ{kZzbKpqD%>eD3u|7RtYF*K=~6kw?8a6bf# zG98uLvbWDbYYjvDUTfKfEGWIx=cpB(&NP~EY2d;k9;>H9Eveys3XKgxY!-_pdX&g@ z&0iKP&>}~3dLwUSXlu{!5C3Mv3dZAv7McA}o+O@|TLi`}eAJwJ3F7xlXWzd|NAgeXas6_Be%#YR;# z*s{g_c{=s|e-|_j8u^+ONdXUH;i(v?j_Ot_BeIUHG_eExHhW#FI1AK?LDYNj9+3i~ zJgQV^XJcU`Do#{Z=F+*DbFRW$xc_gJKknLHM6NGt`v0#pyZ6BdNggJ9IDnu4`nd9F z78Ix2YU|*3HPzJ~>dcc&C>beW2OWAq6&SYZJ9b*ib9pKb_HXx+B#?-kB$0rUnh9cQ zzI>MWpzm3_nZH-oCwPo&&$lMg0ppRjb?dO)JbC&=HfKUJiMQ+j@6KE0Ktt-F{(C8L zIJdz8zA>6wOZ%=sU@3B>#`F12fnZVpUi25hKeWqNVQ!YpDZHq!u4dPGRJiet`S-c8 zn%`?P?LbihDKN@}{dNO%fV0{|)C8sTo{QQ=t*-jgVc_vy^Iw}3hLo}KKyE_C`g{I_ z9nahDzb>&f!L}Kt;aryiTGQ6JF+C9a>AU`&V>`yNL$Jh`9zwUjm9kPB5a3IoAI|m7 zH0{B>e}n>+Af7I#G>nt=lS37S7oCT3TxdEf9kaG3^|C7X%o{% zt7DO0A&sOqZ6X2qer;6e{h38rlZF-*L0yZ<5|4v&5z|TJ9#Ft%Nn?85p0E2#^^(g{bH87{76q)fd6`k7_-%K%?6jZ#OoP$Pb?SkOF&|6t()PDM z`^}d1X@R;thXvymoEr-mSNL6U8YaZUgYXFC*s%1Y|coo+b9(&6)=P3F!vxD>>Dcvou0za!^$rB#A(0)w&Brb>;R% zWFpbi+ZfIWJn2pw%4hNcGm1m&GDxa|Jn&msEWx+ zQ27trnC{4?tjV%0NM>dvDKVLt(HWZl>6x$u#49c_L>E;gu?h>5=)XVxY?}?fi;FL8 z@R9et;U%jrHQ#KHd(bSmWm61paFt7(XS&l&aH``S>0tXBWr%)y=%k&L3Po}e6Jhx4 zyDly2yz$HfcOu_yW_yrpE~r!tIg&0=9M67Gkk||gL!N>{n|cxzz$bd7U+8anhTNsa zl@aS-(ST_@jpX)Vi;@5hfoc2%_!#J^Xm_M$z$g4_3t>@QV-*crDR3)Y(p5FCP*p~l z@XHmhmEkIktPBD;1 zVce5IbwDIyAPZ!Pcu0W6NQzVl&vl19AAOLq&4O#;a<~xAhEw5q*aXM%5uf3HUZE4; zm7-l}J6exUp;M?Qj4J3P@^WHKxV{$_T)H4Z?MSUd$_nI9;R*AT1JCO-QhtSvU>3(x zXBO^OX59sE1s(&@3E<219rrsQdv?-d>?Yop%6$GgU&~Qdx|!dgN*H79T-j1Mc&!F% z)BGr0qm!P^g7R7ao=~~9wjatqYB%Kz)kvk|nVm1}#-h5EWgBG;4PgoC7US8kU(bcL zoF(*BZ{8ti6<3*EW2F>j$fpKug?h;&ay&NG@X+Yw9L{4F!PD^z`5}#@P$AK%A$@uZ zgN`1PJp&fUyDFPA7aVR?dA#|s;@?*wPzd2cK3%e&v{Lk8kg7jYy7^Lug%ZxDmyVKU z4{HaM(=)jt)IE>%wT!(uNMa;R%(1KprbWVZ5{JFSWsrD`^~Bl(BeA(lbUqT3FGoTl z!bl83lBHmYCPZQhm!d>Sk#&A1#bkkkPJ+){ac!+fhJTD#Q(s9I+AS8lN$F@|WBQYYN03%t^>ntVa;ZuvC z1p#wOUDWp@l2qp+4q6k5))NV>mlUCogw|J&FtAbtia-$%V>nXi!4Om%WZBA8H-fo;>Y-Zh)59f0lo_ZUEPRxklE7AXZTH7x;aI$}2LNjY+( zf|qMc&}de&m(dlt0Vc@x5>Wr0V;et&j|$YCN!h#VzyjL2~!*ON#g6vAOWpzx3a zX170cp@ezShyxBasQ~sjk&(R4_OKSy%uLPgrT4 zQvW*;q{Fms%g?qnxp+PO)YVOesKSqzf66FyLj;Av5y-+m>(nz$f&GOI1S*ruGiQ3YHXJvwY{J37CvZI>D3Pfuxl5 z%}mPjeyLgkgpmP_6*Di68PK4)oMd`;bGDe1`7BO0ZIe<^cIFPqc+|nj#0)OT6BGtV zAUo3uA>>doxxIKKyiY`;V&eC=08^W;f)`d@90PT;A?Zkm1ynL`G3#j~n?2i+UCO^U zX%r`vt#vgw^-~5hGBJaLxIuxz5y;L`0D!|`;cZce&?o}{RC#heuw`7E2@r{algG>J zGg~V=T>RG<;fvIGfUZMbf3*uIoC7YRb5s{#2%Li6?a3}vYK(8RXbg_ti9w7^%-}CF zm3W~BI7Y9`NG?Dp!Rz6uo}brtrAr14m)To$=5H>qZAP}~-9L7)>(FtebCg7TMi;80 z!vqT}TVdBYJfV1kmycf{;SdoOOPrE8mXwk%nO)fnrS*!WJ@C&zDI)qF1B^_};2`^; zz~Bhv(d8DZDr0HFT|F87YCGTpcxOzH>39E{6gB!?3}R$r1_#*(1qMeTkE<}DjYPX@ zJx`6=aoB*yIT0H``;Oe0?8nCk5fRa+5)6(&Mm)b*W4w*v*I=zWJi?;FU=S>_8T%1V zJx4=#TLL#D*3I;7#P9}QPO#}$D;>^)y=j|l4?bIH#t6FB>sj}R+QThIY%z5H^iRkf zaewVvx|^6$`zdnUCUpituY&4TpuVSNqyqjE$>-QFh{+j%^jHDyBVXORrA?Ofj{*@v zHKY{YzdVG73v!j|CO!71qW01_!6aA^(p1YW5((p?n?f|NHug?05H zHc$%~u{t7QcLEAxptfxNPQ50ry4V=xo%tGDETG4HTeEA^_qZ z9s^i;^;OtqH|2_#tJk_n!);c%+;)B2*QmyI&gRT8D17k6awNi{T3 z&ZG)(F23yefO{|m?Kp5(-CR%J07p@n!x^wel>Wa7-Y=B8ZGZ|8KeHdu4`DioLFOoy z$hiOBHJ#i_Bo2xze_;xgTCdlfGfJ3rqm{#QEidw_5J3`5YE3C94W*;(r~oR8qOG@d z0-d;f3796f<|aV6b;@)<);=Ozsq^Ac35e=|6(yroHT*v?_LmU#%+BiWkScl#f`>3P!);eu;C3sJH7D&&D1@Y>zY$E!l6D%JAj zvwC0{I|nBhH;vr4t zyJgjrPC4z2thEaiDpLI7R;p5Mj~i~f<+eNS+Ha?O%2u8Qr?CIe+ z4UiL)faw64WMr@?ojIwTUcQ#^{x6L=yuNMt4d4FvT=5Muqu-&=e5*w3*I+)ZLwx$_ zvE4=c5k{1ry#ssvFUyp)Lq0Lq0$u^Guq%LsK`J1itVR_u*s`s_fx0tp?OsnBIHV9H z!iQ zSMl1GVNua*K^oOADo|8KniN1^9q`Gb6$DUA;5~K(i8~%r639u6wQKEF1ySV~K_s%& z2w@PB4I={ihV9x_JA_bdn3Up6{6i!6<3sRy*M}Vw_tdjmC9o$C6h=1+J3Ff&0SX5N zu&IHZtR!IqysJduW(3rRAr&80KpZEV9A5L%cm^0{mEr}1yS^ZR(5%j6 z=qp7~aIY1-2j$?@)YK{5gv2PgT)zvZv@kfIGTb&}F_s8mun8e=3rr$Z(wQ+Q!;^uj ztzoP0Z3PP%4^HrPwylB(W7zYiGek+Y_Y4754asK^4U1te6g1a`^R1GF=MHkiQq zThA&?2k(+DZ0k0=SYGv>8ioX5Pohs<3X986Y&@MD1}nsjvu1!h?0^V3D@gV6HRhq0 z!6yeEGzqmZlfX#eDxq){ZuMcgcc&*JS^#cwpgOx#Q+$iv7iyDyWbg(O1Oft~fI%d1 zAQpI#2m(k25oCe{azO@#ptMZEHYf?PT0ihiHPBDM;HQ0tQQ?>USD#mm%0^dNi5|uw z>jt3u;+`OjjAK<~ zQeg$6WwL0T;{-?d!ijXF0kD?u;@O-y0o`O+l`QCb>p!Zbe50amAZy=(zH#5YLl2E| zLN^8!{Nz2?0RBHFvfLa`T_9 z71bOCGy&7Knl8>#Ohoc0Ch=w_DF=$y@4mOGM*#Q;MgzQG6os=cwW1mar)iOhX3_!F za@;`mntq6?cSe-(F|A~>2Y<%f?b3)uz8$M1+a8sanpu8c3P&i?XZ4WqUh_wFeVPym+r z3Op>NM;!@|OZ8*{SmtRVJ?lt#Ui$w6X8^s1cxlPWnGsx*w^I7}reH=0?T+ZuR=hPz zIzn2MEtD1VqM{>|WmLT3T;tr}+~VBf+~YjpJi`6P$n=ajCIc_nGgJ6IQ~VyyA%lZUGrTgq zGkjca1>h?J{6w_>QS8-i62d9UYIpA08mlS;7$16f#%Js|c%aT@2+D5b0KWk78HiQ@ zZ65-iF91~=fHDjiaRr(XtDxD3H;lL-hG;b8M4T_DIyJG@b#} z6m<~S(^w1X$I4?6skKNV5Qs1kel;=#h(@HhNVE`iG4K+Y;nB~#VY1GTZ$WO?Y!=Kt zTUk1{ijn<+xnv!EQN++Rh5KL|6WRHVuX)>XZ`y5aS##ugY74G;&H1fuz1Gr)A|ol~ z!s#e@4XxEW=s|wO6W!C&B9Zj9AvPQ9HrIzYyP0?Rt z1s~X}lyXjr)m2?P)(i7<$GuYDBXiSCynZbtK9p3nlXa8#d3ZH`$2Bu69*e!!8 zg~0s8QL972Y8kSqjOsq><)-UmKQjGvF61#4x#U4E+kLJ)6)4Yjmc_2)8jxotT#DCY zxd{CKlZ`1sIp*;HJ>-EjQO(dQt)<~Yo>+2(<#$wE{-~o}y!wfMm&!DH*1U)cB(wnD z*A#*{FVf!P%|}Dp-lE{ka!8lDj-)-wQO*H@PfgWR%=TN=Y-njxwC$v&k+FkEKW5DD zDqi3LLde}YTgY`kDwfHURVVqs5?0fwBkMYw+29T)F%qwBfJbABP;})c>T%m3l@c0B z828{pv3Cn}tJYFXJ80xaE1rGk8~Qgl+LtRXXj;+)5;9am<4MD-1*@OTzDE`|mH1^# zkzv%LbOp9rx*@4RPQl?5%q68|QK1@R53C~Q=B2k(nzi|+4b;?HnxRb86qr{P`@+Vm zvPtLVfaeq;s~{|-oGx}(QpN zn}#;KFR^C}lw-hMAy3pefE(eKq+X_S`tzS>C|M9$pAe7_zta0TNZ%p$Z~@&wyfvyH z+jUog7d5vuXUIvQw>wL_%c3562VuK}RZ8hxdr2aT;b#YjuXxHz1G)!Dn6oI6mq0fu zv;*_%7VvhtZ4(kR$*f1bqJE>0RZL9>SbEg#-eXfdTIyr$qOG-_RhK(qW>KY3odK&lyZvOr$}oXPe>Gpa+u*h6;5_;k0Ie9f;rG zmJ55K4IUE=f`VK82$J`wM?335WlW z5fkbukBSX6hkl&W<)v!VqPB&rR1d^(AktfgsE}=Sy_`C0o+C`Dyu_3gZkqehgFncN z!N8(l>3y2?9Y^nag5B6LigVpgn0`N(CGf1@PGk*DhFgsVF$!c%=ENPQ;I}rH_$}~# zs6t^PDdT|XHcYD8+zxxi?>oE0)qtUn4{B~87yg)ec1?`cogXP!%RT`Vd+}*?p0(Wv zShu^~!&$6iiMxrtg{mD1r3@R?sp4$5hsH)L*%U632k}-I2Fl^dTz~7CWzDU#tEqu< zA;&4&(T;YJoKiDHgJ!);G=PBX$C5|-~`zjC~x>>l0cId<)Ek^JOJ^&qjAJ%le)^}Y$jm_VTARO+G z#O*n8tN4E}DI#;U=kHj>lA$rl`V7y~z;xtRm0#R#hG%%1+WDOIyY3Z_DMC3{Ph4j6 zbHQP->d0wp;{9z2+x3u8gpYj(Dg1WuC);C=KGI9h*E!Gwu8qUqy|lgK)Os#Q2O41QwgoY5te> zI^q>vneSSg7(|B=`|yH{J6)oly7;kk-k^%kXGu(+N(ZLux0EY~{kdBY&?1(`qmn!=P%T2`y~=Kx2-nLo~;FUkLvB15|4MY*4=C#5d?fM5Kt ze@uOZI0?x*DM?ZoD}$WCNcA;m5Bn8j*geltP`*Lh4~Cl-OxCzMWm8UT`vwS4-nkTUcxW2X4u6;;R{2O1TRR zG@tderzwV+*JG_Iyf_*mH5ZjWH>pH*(pS1ZCQpa>3P6`zlqbdM1#`?alma9ItK*LadIU-o( z;kM??jCGY>KljM}aP*|)RQb(#$C{UIyBrmMzW}jKmUXRO65e`BSEGQtLRG%ASA&4W zX}cX7LYJgGuNjV5^98|B26vF%kf|)S{HndQsH0Wvn25_Evf+531L%&>mA?Tm7v!jt7fE|rb4M~%%Sin?J*a)wIYY*&taqBkcKTum@?SD?v!=0S9>btbI84|H)Q{i+-RmPxIQ*h^B7~){nn+$GM9VBz+R31M)>d5Kg z5K);`II}`E#JQ=afvg@7%(BOEYn_EGi1rOgxxa6a!!_qrri+*^w1!TX!$NT$3H4}W6GMglh1*04bGNxvl&jx_({EzE@fAg&lu5ERVwQm<@8^Jy8$l!{ zSZatTW!3T&RTh(>dOaVJqe?q+g*%FMxGgGQgUn*8K#K@<&gdA$M`iNPt%2LKz-0$q=Z`2w;U=p4C-z4Gtr+`p&K(K^Ct9oAn@j`#b|S6(cNY=93Y*Up^vF083Ei+w7*9+FHltgssxO zRZUY4i2hL6@>ymUT&(q#G+QW2%sD!GZ-~FXCQ+Z`=!a%zmpZz2r)Lw;2{duA_;7L1 z9V|Rt7zCfAeBG58`%eD4%?EH?OWw@vOwZ=+z|wS)k0NfZR%3czyb~K~xJNx&EgG%=37Q5`iU)sN+giJ#klVwQDtl^1K z4P)+%+#S46O|U4vFdIu!QayRG1%;5vAQp1WR*rWqS6Gpro2}f=yQLtpm^X1LyOTWe z1GcpqfT83I*w#FeH;wa6{JSH@k$2+>M%2EId!_=jTQ~{2PLZfOLC4uL8<^U(hy2s$ z(}yR1nEc_$7t@4ObJMehua&)axcs%k*JkIYPgK5L@ir~$nX^H4ZQ#b>jcebio;gi> z7RMH;kt_a>myd-Vh8O?GNfN#*Z(K1F+hrav8e!c=xtd9^9G2O&yGbRh1gRX{Pd$C` z20!AcZ7FJLz%SRYM%3F<|82)FtA=l=qAjaR(r9ag!BQ09qy!QaTV^I61x5mZyj&(~ z&CeHgl;7~HSttDI*I&gfKlTYEQr2{?SdEzINKGp`mOm= z8e&UPssnUjf4Z{XUmt|YFM&3UmRH{meZa%AXE>hUthRJvnOIh5bjcb^1U!}#yogqA zdO5hIt<##Z>Rq;8E`ngW6j8|KSGhA24^RVn;!;g*C37Nz)b$00%}}Y9;7bTaMWHGw zR34SWZ$*N|{@)&XmXA0n%J&P^_!q8#ls2F8WP+KQYR7oEGZQsOu3WhF+8g)_p#@DkDhXKH4HcP-dP;ssSVZ=LY#DTDloeC`?d}teU(J_I*KS(Ur(@ z=Y+h>O=-$e>Q0f~?ba-P>x|C4P6r4&QO0xZI0ag{`6XNgm_D@W z*%kLhbgN8ec~01<(wy&Iv)o4kML}IIYvaVZIF#s+^iK-|HL5q~)e!TA2MkJoa$Mq3 zcZ?S0(P#6s)zw6qHo(2y$E@WNtw8MgmFwa>u?|_b1Ti;I_{(+nCU|5`w+1JI_5S+* zkq%R!px|Rvgn^w=q@+(Is0X&LvBv) zPQtl1UYYu+)~oT-!piXRpN={L_P|kz%QxXs@AiuARQX(E1~HKuxc1YbQbDoc(6xuX zY_%~J0W!M6{`q#5b}jv5cEM!X=q6iQ%+$oLO(A7gEJ7PiA}?f-DUt=(wIHF8v+Pfa z19J+EIf+4E#-Oi=hpoUQ5Xqq#?-cL{e?6oJhVa?N{DI#N>%a*B7z7jYOm}eEyZD2H z4R^DqE^|nASG0e5vesh5oppjo-35)bX=r4|+Qw$Icn|;sMNJ>Lm<9+k!c52@b>`^` z0~3afUAPGpFgdDE+&2MTqQ(IX`iDO8o(2YTox#3J+x_P5#rf+)ZR}0Tz@9h87GD@$ z9DRcldw;rjaXMxHFyBWdw<%-CNSK)9H9pvx@j#Q#mp?;gVI#BcJ9ZvjsZG3xiB}w8 zqEKCmGTN@iU2mQldvnj?{@sha-<;q5=GY?dg6LtWFRYQg4W$hVii-t7omLQ(*u=ED zo*`@q0zE}l;tIOaNUso!>0WSD(DiZzy`Tb@FQT`)d7N!XILpK_WVK`U6~p+Eclhaz zYu7fW^L_k5XAfjRWLd9w1j|fZ1-1$>`R~ zOo``7r1OcG+a%I$28Cu3{RL|~_wOn4!swf$i@e7BQ+?OBrI+;7J{qi_&Fvf|8UAIt z@JZ!65|_kqe$G--OEibor2GvE=LueV~PU&?`m2*pC=MIty<~gON13k1-SBM zi`(Op75mWQZyrK4waM~YNDe}TO?*da{~Q#%#D;~r+>#}s2=&u_?@x={mF>#TReWq; zSl`m+6qa1Ox2rl;?c0A^^sc(}BpP>W{e`bTNJ-hjhE#-mgPc_LHoaHTM%Edm3Y|`O z_bE5h_#7AlzySd41c9!sZV>7{pnD7H)LooH55H5hyvS9hBJO&<=~F!EE2>st61v=E zZpKR&uMw9e;@1OuO=}0DlXw|MBj|NeV0r~WiRMeoUtZeU(~!M|5S3WE4JIzT(Io}O z{Vh5`(}o@xhXcdm@nGAl{wzOhXt;-WY>YWsSbE4AYNKFQOiwPGPQlN$)xPunVKNF| zbkW;#(YvGUR{1SjWM611L>-mEMu?c49G;AQ(y$6=e**k9e`y~4OYnT#61*qpxZiJI z^F4FTw`6jEd~XOn`~>|gMnVa_Tfq?6=HGy62nqfT@ilC~pq~=eeV5%bq>Xi&3s?6z zQ?)yIhoznS2GS5lj3ruF=u%SZ<6*Cl(uE#A-z^lS1s;J=h-E+|EQ|B4>5J2S_oqvD6F$aYE&|>Z z?#E)D1K-hu*nQ%e;dnMuL|3$KUHHfo{_(DUCmH2y_k;oGoi|A60 zlPSt&GsHzou&54B(+>Bc^rF5$f?LkMwb7RmamyB$l%pvP6pZ3&<@9`Wv#V+BU`k?1yc|i(s4k>Vd9IO}Ik+^p99hvuPdMuyH z*QM+$)^H{HB^g+2nyAuUS(K4#EzXeSHwNdW{c`a_=;p=Hw-60Z>EigOcqc3Q#SNMb z8C@vD{U3>qU9oR`*>p!u%=>|efR@&KbJ z4TmEHB#b%Ps4Rsr7a-ze(|Q=YPP8xYII)Y~ofeBH2KZTaEUZRK8Rg7wrWYzfV2vG{ zC8#<|+9pd+*p^U3Sz(g8wbc3awehofA9;mI>{f46xopzl*Ym*NP1moBd9SC={=TS| zt&KWiL%9-Jm7|weRY+d#h5FyeB-aqSp>Mqcp;`C;=xU2tTEeP93ENIDZAiyj^v35{ z1%*Xd=s*ve>FPJ6DF--55j+{N;qiYypX<|GmPD6nP8#IDr-9<5NC?#kQDLq zctVm2^d=M`4LNsYvTCiiy2k=ef#Ae-#*{YFxWTX? zhmu+z1TT&)vBt`-R>Q`ejpjqln9ZmZhJ<~qL?ID`Ih|jxZ`#1zaEm}NBqiI}ts(_Z zpPxx($(>2646a03Mic|NXa!rcfl2*pDb>Ws#YJ7~l4^+-y%=PxUQ|~SgyP%^Ms!7{ zJudk)u0gOV1%sUzZ9vi|($gmq421@doPw@nIl#+{uQRF3U0m%DGi~`yA*%q`ypGV1 zPD+2CDOr=oB6#pOJd~0mB`^q-4RIjgco-!sjgn9M87FcoI=0Gp@9pogiS)xiy8;y@ z*a>WjAX2XYA_FAFwPS0w8UN+7ArL-3xv&nY?S>tyS};35n;y&d3-fdIvXXjc%gPU@ z!biMq9}Ism=p6~~{4BTQ(63wXDS#J4VPj3~{prd3)5+9K+S2s6n7C$^r~gL*-n#-5 zL!U$^psV81D`-`~#n8!6h5*06&Ss&edE`gMkMm7+;kK|cTUhu~LRV37Q6NE?fdWkE zCvPo&>r93-vv4j()x>?azpwsvf=61NsjX9V;?jcl#EuvV+FM?d)M+DRWuuJT|*nOML0@dd}^{hV#qe za+@BS-tTiey;dyVNS2~OqSGB(Q$#+2CzA0e$VIHzP%bt+A7SGzYnh?cigd<7;1KtT zEwCnDQnCuH9VY3(3Rg2p%>~Kihn)g>-AS7Qb20XwW4uy@ozl{U`!0`ZYWCOW^c~ic=Rc1QwldTn*DDC?zN(DA>g$p|#yi9YJ#%7o?y+3pCUmvb(ejq!jIf5Mw(KzvnMIYs2^BMULHJNGFB`gj4gK&<3GyZ{ zIXO(aW^53W!pSZ_ZKQ0fQS8If&Evx{X^P#OHz;RKk%iM(hMzeRBPjoPD7mGarsv2C zX!@*_rpdlGXP=Fr2{9>30tM1!VlD&vxrhkXVwzr`q!Tkq+6-DBlcd>fbr*qyITw8Z zOQFfpn56im);VpCadERiXygT- zSXXoFcGjb3iumNpCY*HD&zCKA`Kn>xzC9+kg9kMFXa`tIfLOiNd~>VUnQiRQDE9={ zN=>eLvG=wyjECbqA5OvT3=}3LPnv3IjwbqQPd+u&zsZgtr?W z;lo>3-EW`D0JPbs?hmz=sYBsM$i|@xQH>6ZYP8>{XF?UC9??a;Z?%(aQIgNT7zqp? z>x3gdUj@+)(HFfe^R=x_AE9$6uj3Gd(YE2icH4u;#U4B&zVJeH0fn1&8zR?L{C`(m za;14!&I^hTgqOvx>b$F?!7-$VcIw!xo|+iGw-xB;*q5USm63Pw`yZ=&fI295D$R*Q z#AtCsMaKQE-Dib~pNUVzf--Z6ps1=((XYC!&*{&cI==fKCs4*z2E;TTUCV7-5GOtr zpI|iqbi`%VL1Oc*N~5G`lJvG53qXusV_AXNvBvTTF`Kq>U#cOH*mH8kVw$%^iUxwo zIUuHC+)<$1WL$U)Eeh>H^^zG6#&G3Wd@4RkHUl}S&{ILgj3x(;%V~l@nE>;Hg~O=H zy(atdVG$rtoG^kl1vJ8eaDX{7CzOf6=i9y!Br>i#uTa|GCMzEOLrbg*A{+ zNQ+7BW93jl?;85sfrstp8dJH|T>it~8hT`5VKoyMvxY1+2Lo~Mza+k^)9d<&R zduAm8kVFf~*33h-D<41(dAcNmU3_K>4kBRPK=>Sp-(#)t2s*rvfrf54e%)P)M=Wgz zLfwR-HHJ`SM9dr7_hu-f3B1irT3-bov8|LNPU6*Ext9^bx3WmB5G72|qPR7SFzc!Z zaESuNWJ!r+m!8>Ki-b?)N{u2l4WV!QEa?#IR_kK#I?IDhP66xKAm>%Rt3#D(;L7*{ zH+5B`2T3q{oZI>u(e@$liZ1Yo4r0JdZ6_(sKXjM z>duX{aaZSIz!e0-)=xmTiXesT;*pdP5huMMM)w?eG-zQP#Bh=Z!NH+2@ylkvP2(tV z2o#iW8aw~Y7E`1L1EL+;1ZlptjlF0E%gjDl-ytcN*w|bD7&kYwwXfQ|xhJ}K-AxAc7Hhj;&yX7!?rLP%~Jrm85=o)Xbg4mt9YG-q&!KF=Un z)paz1$~DZWfKzQ>D66a#YSbhOI_-p{f>{NQIavg4DZ3zrVld9}aC4h2Nl=t6F*_>@ z2m986`cykR(JsWtfq_p2q0Fnv3S^Blcpm`kbAf1~rc=cmDbg#mQ~y|pl!w%P-y@8()mfmo{tH2J7Ko&`7=gNEJyZ6uTM2%ftMjab{f_ zoZQWIAA=jFP`#diu}ln3nzbD+T5#XN12ctta&4WnMFlcq* zS3yNd?1;^xZ8DB)BxMHVXn>Tdh5zypS(!pdS6DQM&ghf$3>X|K{DEY1dzKJFS9dR0 zLrv*a143lG@_gq9xqr#530f<_n8+rwPM{&HjzWS8EGlmE z(P^>~RGQKZHP$>HbYk7EdOo9ej|omFF~T4qcQ8k*NiL>RJJC_HguIJWNiaC%Xt~I) zfR+=3AQ+#`Ol_OI5Qhdf&LFCk#FPbOk;a_TnDa=51Ln1Zqhe+5f4RhDLmIyS(sY$} znq}kKQBE6(gl3!|`cxkzXSQ~X&ZBc14N>gs^IugL=8kJZ`c76Lvh!foJoY)hGvj{f z?o{g`t!j>&kOb{Qm2^x(m~gNxqs&R5QAbPPpGBzdN{1>njPjB7bLKVrV3VWHdzV96AIF0~b;{+eM7$qJn?QsSy zDu>M|fQo6uv(IVc{sfUK%P0v6@h~p()fng0VzuBXLUF@%X~qk#uHcx#x;M@a_)C?9wMnRy=&Cz=vbe2g zAYX8%Db^iV_ns&Ld1XVHDU77|?1%RBFgQIVr^wK0ChJi)dm(u&uri@`Z<=bV`io|6 z%;nD?!tIyzXSn^c)PZ0Pz|V@1e*$?F(|bYiSda&}=?el>81oMmKn#57!~}0zI=TH$ z=D@dFArW(>r-(6*sTzAzfRM|H#=PPoJEF5A?fmoKF%tZ+;<`*A?4G-L*qso87>ryd z_{y0&znyi1qO-UP(IW=*b;cx^)wN`GXhGB zbrA=6nw`OJ0;nXUw_Sd3kewSU-O6-&ZW*yOL9JIUmd}1ajJk+w`ZE4Nl%H$4j!k=O zc#=H|Aczi_Rnb$qIySJ)EMfhF8afBh%f}-RKxc0)tdtVqi(@>kFYqqdfQGMpLt~J^Ad*xS11!- z*?msB69kXpvjC+4`Q|h^s~`MvJ6@q@DXV@5B7yxj`V(3 z0nAs1W6XW#&0JoAJe$8_)0bJ>BD(Tzwl^EKl2-j<-cI8|lP--1YsW4wWyf~>$LZ%p zIGy^^V6a81(zg;oqoS`GzePoBZm5I5O*3|wC+6q66#|3U7YW%N(=r9=YPIN`qG%T~;f9R@dA zaoLBvrSt*GB@NJ<%YYSsPZ2%5fBN6qe}~_e^LE7UWIIH2xPjlibxo8?i%n^IeRN+u zoUz3X!=V4=p1mG|JGwb+|+Rw8c2Cq1CQuHCa$v6A~-ORG`zQ zH2`r+9v!3t!CEtm*u9rNBe^@?FK_eo z_x@ng7I_?5QBGgyi%w!`*Ou;%cF#scXD-th;X~bj6444zRpa!SL%wa`by0sSzZicw zl99rPO^5}+hyE#+V}U)}xxeIu-_WTQmg8gI=G8Cr`8!8Xw{bCX1tXYhYuRw!3wHGd4+t#YAr=~v52wjKJBj0h6o3^Ryl8F&g4I(R_{uMB!uiZ`T*#Dyzn z(Za3xsxZXJS%}5-3StzIXozq z(Q!h&%!B6@9oq~+lW2>FbB1D@tC6))2F2vtNmlLZSO&G#?W3$l>Vj zC)|2!CV6Ty7BN25${ypxr&{(L+s9|_y$^i+628jaeD#xS6Q*$D69yxM1^RBohXWANQctyIpX0_70}H|fz3pklel9_Lmt(;n~A)ob0`R^V+3cYRE+99&Ch6}WsHn1Iv8zh`@1!|Up z0|xnb3Mq>plZcS)xZ0-C=g!)#DKOhtk7=PZ($~>P`JA{@vl5+&6!>!VR!yOI350QRk)DR)di+A`Yv( zF`f8SR|c-Wn|9($ChEjWq6}U*@x^cpw)UAxC194>0F}TLCF`QenF&?R$r|bcvkjtN z&g}UKW6=CUv2@!Zc2Qul1ycv!Y~TzjU2N|HN`$|(QN~P&Y2x&RC^{E$I^IDzR5k?ir(q_N%;FOn{76$ z0x#j6EzS6QrRZZt zo7T5~AcKEWi$HtYA4k*~{O90sk>Cset9}sx4gDIhd#L~bfkfuoU*DP4lVXGZnnyGN zyggtRY#%@G_v=TyE0ZR~)j<$C3=rT6h5YrShU0%MA+2HKpM?h=9gT*VynR!Zb2#S$ zuI&r46CiXJ$&CT*9C+2jD>I?i9lI7nD~o}81buU}x|Ol@c;J%~39nFc9Z zh=-?KMkXia(`KbZi>D@t6=QHzXO?&Zh7$_{p3PMwNX!)iN3$XhZc_vElj(;7c0IhP z#x{R3PG5mjRQv8f=o{~{wC)>VMO2BgZqUIN{hUEILix7T@_eA9wigp*Ry>gpGBSD! zpw8_dXCy%8Tt2G*a}0ChiFV^eG*Cw=r+eZ6JPbMpRCVB#Ib;AUVHV7UcqoKCsDR*6 zH47`tRcMHOH5Xe1m#*0O`VZij(N-I31dJhKFx2b4KvlJ9@F&2s-4t9 zG)$1i>b6p&w(dqcT}Q0aWA%kqCofOjun0}D3eEz;NNQ5?+_`YOdwc|jZh+z zmnkeu=6zTrem=o=LJyv<3SPK|2K{}!%0T6PyqK_XpjpV@$I~wm1rb052|^-b5>hg9 z3Q8(AY}v7AVC2A&6K5`5xpC*glNWD3eEIPgAW)ECQPecFbo302Ow25DpQJ6v^3Rw8 z>l7;Tp4Up1xuRH!t5!S9p9)Q07VCd*nWi`c;tr`A#~5dZ)H0KxbG08&N(0RR9100000000000000000000 z0000QfjS$hb{vUz24Db%4hVrD37i!X2nvFXIDzMA3xpy70X7081BgHbAO(aL2Z(kI zfmRz-tTlM^&?KRcJTee$8~~=>7byP!6OxWG9J3DqZ`wOV z1rd*ogy0dC4b4J*SKe9Z5+c+0F6?$3(%5D$!RZq|+#-SHWFjg|k{>4XXRINo`jlAx zB5k7~5=K^5G9khFdyTC4!*V28T>Wl{{BgoDaWWuVa%f;04bVYUY>_v^Yh#{ljQ#_BC0I`cxGKz0O%^ab$~EGPuqO| z3fh1c@kA^v!~m?sm^v2a!fK{0t99X6=(=5G!~ELn!HIHQBPT3CFdC=df9(3B4!6rD z#m9c2d+!HWB}&Etx+p-MI5s}Q#uzG$Z;h$0>Uh9M1>FC3?)?%>DIhL}ESTFL(kda% z8*Pf%R1xvv`E3UOKj8o8LShPt#0UNdJ{3+xB2^Sbuw&^qUAsuPd3P={F49YP*Sp>A zG8b2|T_pT77khlhLNZ$81P!MCg6*pHY8$&G3@573e{Ox<_aZND%vEdJ~^wd&cn^9Anuycasg8y^uga_bZ{K&=l4A|ERvsl4 z&Bqu%V~zIUo(CgwYW}azf3HseB(DO8KOxsphGj|Cc$Mr23<VNPW9Y=}GC-B@h5OR?YO_XmUuaSPZJGLxAYYM<`A_r-hP6X;1`1=JQ2 zctCcKCFB62gRTVrlA!-!cl;q|0UZb(uyIEwq_j&R>_T2_X4TtSZvS7-V!P?(tcIw5 z-?TJGd4%ITkk325W5g;Tr@mH5yu>AO2pRaN-_O)9XA6I~bX%60s?MqiSC&9R)kkOY zQuw(`^!FE05s+{-j?|JW%T*m;@Kw|?$T^MlsTMb}wMres73LJmc&MQ*FV&R##V zE&kAPss1pKy+!dhmc+#|rdBNWhwbkS#Wf=1fJ2U?zrJ^^gkPkjU?CkJBfu~Lf4gp;T{b5_TXLkhU8{1k7d<39zz#%x2yme3zs54Hg zuZ2jR9JB2Z>`iMLd^876N(b|>Q4rLSPxJCgOtYEzr~-lssT4EhQ7$IUnX9Ip^Q75w zCI6DKvB|3G|2NC6oz0Ngqyygvn1PZy?ewIZz8Qc5t$m=i7qqs6)<)1;9kiB)Q0z{} zw9-Z;4!?pzg7{B_fSP0FL7@KJ>Z60eAL@UrCuAz{K)0i>qc1DZ){{g%Vtn6+o^Q9O!;@8rrEeS1pm0`x-|hIzIEY5Vh}<5!IjsN#zi` zY!ss4LF7MQiu|Ep^c`{&`3(60c?-FUya?m#}|wOSz?N5BjJ(OX`oB>MCq!Y^dQCjo_1 z%?7BnKxGG}pv{;mD<1g5H-5h7mufN}!l+TNMD@3mvZYB7C0sB+DhguA&8)k1P=%^H z6)|JvjyHlP*L`PzgBPcxo-pU6duM~Fb2Ja zHE^~WI*J1~cK_g?T#y6Jx4Ij>=(F^&#@ThH8#@J*Ure?S`XuJuYn)y>2SMd{BYFRC zx#Me_C{Av+DojxIr)lVjt8sv^G-_hg;&F9HV(cWUm6htH|hl?yRf5;;+d z&qEaY2!o1OL~4GSMu1KONv?wBL@Q^Ze}d>4V4_6B#Y(}JCI>0^C7!&Y3BB~jQJ@^D zLZy*bL4;~?)QGEAuIh&7v9NN{Pk&4U4d!$RN(Dw3iD#4uXGHovgPD|I!%%F(w1{$9 zxT_*uGntreC?~nO2<6f|t2-yWGsKS;7LtE6H_(;zkmpy`-uRF7kK(%C{iOVY61mlK z4I(4bmGD+||BnNl=tE5k?Z)oMzXER!($&25d#wzeTkB)YyC&nul#9a6F0a*I zZjz4M@8g+aWIwUu#7mGUNwU;R__YkV^0a5xql~^@piq%wB}$bQldCGD>&is~4LWI* zGk$lK97_@|OvsGIe2Sr)oeI-TVOBAkU4|z8W`qH!DPf`jA#39;pbDE`j2Y7vm{V}@ zz>O6tMBtt;5+@lUl}rpYpbE^6FT=Eli6}FU9xy)ml*p}R;|Br^%8a;Snia8GvEGY~ z6Ij84;8pn#*1uLar-!5frl6Yd;o9}PbSK(xQ&iKl|BL>kjP*Bfg|GQ!6zdkCW|!7! zv6iWIt8{sh3eCRNQW>-r?W0nU6*R1LO};VulTqgE8AtPXjaFcbBdNOoIHf2mQZlB5 z^MGzGS*eYhZ=6F6Tdix{Q{L3~^czdO4kJW2T|v@){SiC*UnW}X0jeKomFn}hYTUOl z)e~?f*u3%*8aKl;{~5YiDCF#1nrB{cge(%1255eC>_t;e^Q1(X45f9vQ;0KwdTMOh zk2{?dRsYDaY0tuN2xasPY;q(Kh^f4LxS5w71?TEeeYu=0CdH$?My#HJgFqV6BStbQ zr+sDSryL4Wdn_0xjaGzElV^M=7)apb3=c7U#PAT~ zgkW)JyH;ITc0KPS#o4^tn+Y8}CDS6VGvd2qHsHX-HApN=4k(avhAJdJu`m*mq_yiI z*x)8o6v$Z`WJU=hBVjU8Fkqg{q7#Xou8hOT;z}_ud+^{D5hUkhFnQ)fGiP#`x%SwZ zoDO$}E-t+y#4a~S*lVZFICHJ}5Y+_o1(;aaxWkU^-*6$J=FNvMKN^981k;L=tCqz8 zL#`p4_%EEtBJ{q6tc1{55F<9E1w|ljopi+{L#8a*+R0I%P?2IKN|h<^n$4W49!0LL zgtg6UbBJP zMe0_wtkf6kHLycUNledG}A>t`XzR7fL?$T4E3=2He- zFS-~jt`vJ~oN=D&DhxQ#ZKy#G+i$mxR$FSek?!Yzf4q?fvnrI&3~@2u1QSg%*%VVv zGu;|%ZM4Z|JGFQUGhsthS3sr$wMFY&wt?j&R$)MP?g6qB07U2!3p0M;NXyos-EZB< zmMu-)t6(24RmP49(A4LgPqTl*#ZPWUZ8|)aHvg`_qt?i~sgBC~4|{1HAHU3xd#q;J zZ#r~rCI%-G9=rvK5Nk74sV-Mi3luH}CZ`fEcjqNQm}rbe;1W_$(a?!%#=>z3xbfsK zl(D%0!{$mZid@TpA7MaPT*&wep+|u3{|NMOCgmeoq_~%EjRm#pW%O!RT@A8b`#XfK zBDA}#-t?6fpsfpM7geM6tYk5BnO;s4-woE(qtWSy^oGz-6fRsz{hI;7g9`%^3>*Xj z75J{s3g(bzij%?MKIPuljVLZ{dV|N(k>gruG7BHb(b!#JKE_z>TNYVtiKUiVZiSUr zSsm_Vf?BMC@p)pM^)`&scedC%Rn?QDjTBPo_?|F_AUnFxV1va-9R*X9a|Um_w;?7P zEq9YgZIqxS=8SC^OunHoW+UNpR)3kO7+el?4#wwYk3MGAumMf#Xrt;r)}kUJY3F4 zat=x2D4|b@gEQcJ2^r_AAy8}S?>IP0?%8xhK!yHXlNIsbTs#yG`H6D* zkImI+1Ub-82&3T~sMVp^=H#@^y#rNs)msgaa0Rz;7acsr8%&{xKee^arOs7Gz>xv; zL(__~vQXx7&_fI0Rn>E`fR@sVkFTSRKcP_b9XJTkr~>}KXXp0O4toIq{rcg4fDb>- z+4JP1WwZLT3lFb9xccA%Ab{n-K5Za(wovcS&A!0g*la&lD+kTt9r09? zGa9wnYoFI%dgY)`2wXf)T!=|X$tZcCc~Vge6fA^RC>=cmqbM;>X?5Cr7vhSQDve3z z6pYm^JNaEt#l#D@bbP=>^#6P8gg;Jt=dNb=JaXS-e|?SPn=!6?>#Xnb{Pf0lJ7W6a zi$k$&Gu92e?Xrgr6N$pcz{0^N;z~fsotzs5XI}hx^P%DEIe(GDgo_X@NUcP1;w4Lv zBt^O$S+cd$RY#q4mZ6Ulg^H9Z_ChJEzUnm?q|#sk%Ki6`J<3(rTy)tLm-P0?S9gvV z^|OJ-UTrlYv$&Rs>cqew!Ye6I!y(0mwI(DQGE7p+% zntg8S>KWf)p1t+*X@D`*IsMIpW)_ z8UZ{q882a1TV18Y0-wVL^9+IqLD%+sum%nIuS`CFYXjY~Kk8H54wjtj+V{|tYx33j za`s@c&E>>AG`Uw445o$wYZMMiJ=WvHzgZX~e{VM+S9)@cC0|^R5&8u z0&(A2)-(-Em9dq>bdr)0?=DURX;*EMl7#9oK-WN>;?+?A`XKMA(a9KBf=Wpy&$vX5 zwVmneD58!9B2!{r4;tdMZJZ$26DidGh(fXa;E8N~eQ1>403n}OLtHUwO@pXakX;60 z#ygrpx8@iF6MWW!1{>nbCz2Ns_GTjOj!EA32xDc5B>U~CF;=w;#oqCb zB(#Z13HJR{8$Te6@nkEqq9nvklJ{s`neB!Ka~I{XU;`ID47Uh5kJ&v%vr&Zv>5L+j zC7=2yf?_ZEhgkk@$_G=$O1C~>8xT-M(bI@B$>EGi@k)ejDuGpV zk{izXzgX<3qmF`nRA5L13KE5)#6d~op)3htN+R4yF{ns!s7i?|ZXw}VkYb(R2!e{_ zIeYM2*`nF3H+-~jZ}u8KUr!d!Fd1%>2{#;)cVUu~sbNvaurVAA7sJEwF#?PRMibjQ zK%KtomXU>uuH15fcW2lnZ`O(7-X0=mEN`FU*at8~a8r^dq|Hwq#*7bOpuVSyHn<&u zi?Lsdpws>EQm4v8l%@epN5DJ#6GNQoX4uvoCkcznj;;v(AHdd6GEpM6Cj5FC0X2q` zh!DH{3&?Sd>U!-sVdy3Cm9Ftq6e>B6YKjqd_KeKt@4M;DB!nGPg~un~P83dGdCIvn z5c;?A3G#lS)RCgdZC#nqc5^2Ib)KM;c^H+{UW&HP69a#%G2_{J*yrtHXmloD+^Mg; z2PGoge7!PQPbso^S*(8QA~g@s*a!utW;OZ3G6sv4uOw$Q2}YL5GDs6fC~-jQ1=V%E z5rj!+iO*t4qJk$?k~T&@nl~ggD7sZOyOmKxSvKXhIb$jEE7$e}7&I35J0%_0107+I zF!3c;OB)O;W=#WXtx8YLXOWJZkH2PCX5LDeGT+O+181SOa1YKSTUIC94a^gU9Ez;i zV>pDMC#jwNA4ybJ6#;TKrE?gSOlZkJqDcMjyAvGQ4~ttTa>wZ+4YXf-rSAcqk!B6ITrIFXiW=vyglgKf(nCd zH=nsrh-=)U+_0{AMk}{OI}@@&$_b$wX${dXxo4Qh?J2- z<1=F7R=VKwD9kZMTxZ9=6G-#?`2nUD3123(`V#A#b+BxLy=~FGu^ZmBPw0?Xj-Q(26ddQ^ zxCF;_fNlxh6UzfN&og*l!SfED&j5WB`X#nMAb#Zw-Tx^rwtS~=JBT$_)jwmrM{a#( z@07jISrdX92PZ%V29$~BzOf&{#NPnwlR^0v%=sB`{dH*y7#vDqFJ!wR@GKHYqbu^V z1#ZalZp17V_Cg%i9=}aU$GsR0W|=NH@EtKM6ADz!GE( zq9)p^cGX=EDmW>$XK28S^JA0wq`E_Rw6RWPS78wd@&C|hs*)8`>dQG*4K|uqDq+9E za>>`zP|7{II1IFQYh&dRs-)wt9v3qq=4Kk!gm;w|=AZ4YaL>39ZIUrjBZM zsw$l%81sK}ch}Fzl$yqMEtY!t6(tYye5*t1|F_MZ<|r*|v{0}@=VvUTq?C94swAuD ztg5n0B-j=_Q%=gTqH)M9Zr?{z_*tF?0)3Mw<{HVZ!uAo^kgOS-hq7|uJ9*;N(uG{#Tj=*M^nZB!HCs4Lo!Jap) z=_{YcEF2-%jKPD5gKvR}h(L&hS^tj|s|eMp0U*n@4iORP+%fD?abTZr!)3u#Q6jk5 zpk}KRRjKzyz6c`K7~k(=VvR}uZVHT*WbPZGq(j%FgIGvv{7ngZKqA&vrPMV*9#ltjGD&`(v)OCarn&qR zF~X&%7x!m_o`}pqkQ^jY66^yuYqnJ>o-27z;HTm}moPH#p)_zXJ4~T>TDj2MS#je&r($y(h_li_s6;HtBJ(6){`@x&o=fKApgQZoeG1MUp5K z|5b@N=_Ou9EUZLpWw8#bpt7BDnNAm&el=7Wg=u7iN~4~_Y1t*-s2c96WG?zW9dzof zV-j6BZM%_XWXDy2KhbRNxE&K&*^uOB+jMd$w6W@y7Zb_`tJha4m%*T;dFo=JUWzT5 z@DeI?cHX6`YuJ}i6u7l-;-}vI`A{z>x>-i5*nDJ$gr~AtEbTNu)Hp025P*&U(Q^kC zCwyGK-8PteuRRs){IjebBXK0mh};m+!i5e)Iw=AB;V4{&Gj@)V?dzU^UP@@vk;b-i@X@T8`CH;744b5n zmZx&P`dv;{CaR{Fi(aXi4;oFKw2z-9 z$|IQDI=}WyiBSeQl(}g0+~&{4069@Cse^)Uo@n~wj;(u(z4LiDr{VDnT zN7QhWM;bqJb$fY_Q0IZ-1Tl zHvxly304~w+E$$7Ho!?GT$e$_Z0p%>Hymo=5grcfj^2XUy zm`38gBwyyigF0(x*A#4HI0afk)82tmUpNn|!wUICKZ1By4kHolu!@$DD5MSF zX~urP$ufwMpH-QsQYV@e9ggH%jj&A_>Nb6$u~Z20VbreYX-eMxt3uwc@douNyUHcn;&q-_T|W{(IqWH7Ua z=%?Fr+0T38WNdaNNlb% zEj%4lHGXE99K;*;@&k}Qe8-$9*U;w4&vtcKZRX}tc+YkWsP<%1q80Db>Im(eOe`UH z(8tJewTfk%-Ot43Y$%Y;PBl6pRGy+14|8x3gQz}?@!ZR&r~YhgqA16=ZitbQ&y=~& zxVQoqZjpS3Ucx)P3)^HDy@d?x>_M(zG)DT5@TpT`qwT7Qb&$PuknNc)8?xfelh!!v znzHEHQc}~Apb;GCi!f(FZrFYzM*3j+X%2S+V~zFEQbLIOaQ>CkHdZl-9XltaHb!Cw zC)c^m;|A>Rsw!L_sm5>fXS;meSCwz%%P=?>ZzR3UnIzA&k1B18#JGkF7c&L0 zG7eERa^%a&G_rih9I8oq+M;bKM-vJw$w;M`p(3qARF`OLK?8iE^;}Apm24O!su1m5 zWcDvrC{_#g$azW=&T05Syr2d-v=#B(0MM&*c&oA_ar;pE#cqw)V-fS`rLF#0*9ASD z9%x+Z%~VU~u^@OP0U2&qO*S^S-!=s{{#w;0Rj$3TS0w4^A~3UxEy(8D%Lkkk8(Tu` z3sv^m>^>>Cp^+IYU`HXgK~3lvDqbwUqN0;qLbZCu%(Luw@Y++ARkSK9oPxYmON2~o zD2P(-Y(t|}DU3SfmTTq3Z4>A^t=vxPg(g8(qYAnpluqZ+&tV!Nv@NX!Y~KT?g(K5eooFG;tS5TQ!7pP+y1j${;IivgJW+Bza3%1PZ zRt1bCa8%&gEO!ZK8S|!I7eom^wfZ-SNPeEuILnhKx%d0jjUqDpI2zrhg~04j47ZP2rP4udCQ1+9EC|z( zkNZdnjl6xq5m09vQp)`R2Pb#C=|kBRX_)LF9cmYwO;yBy2V+}wn`ao7<6bzdRO<63 znU{hV4@J3I-FF;^UP{4*tEu2)0bIN#xl& z*NMI);+#756yo7N2$F~aek4B8mEygQCxeNV$?wp z;6+)P!*$gw1Zmut=n+>8R?E(<^0CsKR7h_icmUB&=&p-bxRyCeWpcsZH>^6hxkhe; zp&UvK%A-0DhV)CN$&YZ}LeG@jc{+$lZ$Unm?J*l8t+#3a_R&#m-#;*E@wqZb&-@ro zbsurM=M0a63M@3ey)}zX9Gs9P?82&|zmiqE1F656g&D~&^G!Sa_Kxe-)4$`f#F5kU z^L@ikINCMbw5s3dhD$3qOpY&Gza(EihVe0*SfGYb#uzE(axW7zQK4`NqCg%@xO{*Z zw6Vfq`$-{Q1hJhb5gfO_J&qngL1Gv|kS*lE{>|Pp1iu2{kKD8cLb_=S0DnIED+qNz zIhFwM6vA^1QJ8}j5ok_QSQtXx*U#{fV*oJLTegMk3jXrpBkwx#^$xKfXw5{U3f}lUaX*$R1ybsdF&~s<@~^G2Iv! z{k?98s&czx)@JW1Z|Ka#GS~ZAzUNg?!_Z$0;sLiUXsiXGK;JP&lLcW30Qn5!!F&L; z{o&Tf!DM>8>^YQWaRI1h=;i6eJ!?<}EkAYb>a_U7D*2|o88(|1a2pU&$kPU17q-i>1T zRE)Z(3blD!7~uP8fIOx90k~n|F{EtC7;ZP@ZiOhy?Rl5vU}VobTolbcuV%-|IX9Vr z*?&{hG6t=O+i_#mI6%xOg9$YYZQo^99aM^K=QOt@W+krC@`{!cW98P0k4MadmJy?2 zsb$c-)S!27@~-E#k^qmGUqDyabHU2@Yqwn;pz+H?$>t!=c8#X3+YQYz5|hw_op2Z=$iiwE2v=h^FJ_`Q|uH7n$iA zs>_a`H2_$ppWgA3x@pyZSJN+MbVdQn!R@aPfq&Dtve6ZByIoOZy=^V0p)HXMp#?&L z!{MWKLpI{ju_=OWsuF8OU41NG-<~SUGZs7SKE0;EE}QlKGh-)YK4Yq>z0|p8%x4GI z0MMT%^3q8O#X(L}U(KK7s!W$NXfV2huF#M9bJpBfp$KT~A>n8vTdDwJ(~V4oIn5}< zompaMEC#0%M}?~a;P5p~EJ#iiVn!TG51`DbgB1o#+Sg{mgjJK7C{j5Y!_69PM6juX z$5ZuC40m8u4~_sNsrBxtkpzN_ls}g+gzYZB#4s8#Hd@CyajH$l1WYn1Lm5kL7+`=x zU0jJNppixXVrTM@ubu2Q!TWOn^>f2l`KBCZReikj{0Lf#$hp2!SF$*nX{$&^0HCZN zQqq&f5cadeXlW+q&3WYkQyPG%d9GD|MmaplDKDx_*F}p zoKy#uN|{fo3un@y#Sq>AAWr>C%AOt4^a~CPH&g^X=CJN5CYL#0sdYT50mlIF(zi+S zHtk*e%i)a#01@+$k$y~hf?~!~k@rGnXCtVeOFO*3~Oi}eL5<;kekfUIbhp*FD>FXrPP-F<@5M~usS45rD+d-?@ zL#4xhVuMZp7Lol%Ki18=5vnZKG`Ewed_S~v5Cylc&{viYy%#A<`P`*k z1@gXe$#vap^mR1}=+|_B>|8RJ-5%mA5O+5+awVLpipA1Z;VZ#Z#^?Cl%G&leUr{13 zvnemip8JfSSo1l7vN01oLp~Q)=9*cQKl2N~jg5QH1jYJY(>{mS0VvU3C*{x2(qLSW z0gIC%e-x8sIvtID3PMBU?_Q^a!0Qlp-KBMr({D`nuW~j*gC=~r55?*kbA~NtMgkH~$ zTOK7v(ais0{@+LDf0gqknbzqf(jkGp4U&|%vbHw=wP$@Yk5<_7(3sobc3^h4)82j; z!5geVIk*F-YNxP5u^ui8JxS+Ur}FWM41Y~UrJwT3Y-g0@qi)bgeu8|7jPskLvy8% zKSBGq_1gzHgTn&(@?3y-BbjJSxuJLCEYpnASLwu2ih942`hH%)6HNX?t^lN$(thMe ziwaf~0|jdlF5A-&)!%&jAN^>1>7eq54Jc}6u2v(8;(QX&SI=Dq%%MCqyHH5}N?&nw zeO2T~Cg|Iw{GnyZS7%cq=uc|=1feSeF>6*&&;f!dzO0F6GND25-rH1k_urEhp(s~U7Kkqasfe2cp&3H9{995rMu_hVCT1IBdS69JFqA0sq7WJ( zWD~EbROb}J(X@1BVi8?jSrT!2;O(Chy|J=PSB+Cu`m;Y^qw2j4_1%^E5NaWO{U;s` z1Psy5QV2;1rQ~^+#~jvDx`5|j2yLz(o`rD$tj1p$1|bch$UPp70zhRnr&c}L3h@Dj zN%=)jixDWw{W4q>iIsNtskC(!m0S-Xv{Sg`2Fk$;abadLf*|R|LVT1J7A(GwHbsgx z!oC||@kNJ5N`{2E!PrzX_|s6_7dCA_!B;Y~eq<&Fts0S2u;_apPt|3j9IOB*tM6q3 zW=fHG0c-rjA&7Jzx-TWyzTl`!-(8=nYfdu}=CW@Q3_2lJGmIce^{^1{XN3hDMcjaC zp^Zf-pqZn-GJ}aAPeW*ca1wkBSI^}kFJuI!UC;ejJGiLcoZ_<=s-SFh9vKiTVn&zp zmy~!I->%plIJHFJ5EnMYH;Rw` z2vHeq)7DrVtiNJOrMI%20U-`CdB$|3yK7{`g<`kE0%c9T@j5rz;}XSYqf)W<`<-5Pz57D8yi?4LPn zHd?E_Gh_CDDe^le385WA4KrTd6p3V76U~vqB44+wwxEOOb)3yxywIBr?@#FzY)I9Z zT^W#VU%kleee__z1b=%?cu&N+=5@vfy{QMO*2i)!d4`D~^G>~5IQ+i>LKy(}2{G?0 z;pg>`Ab0!26z-E)@7LyiNm8v?t(rDd*plih|49;k@;{S{#tHXs;ogE%$0DkR@E zf414Wnj0<-XNNSH9l|x3g6>=N0{|GmcNE;;V+u#mdp0z{ve3nxNU|(goCxE=*(OG` zqNXwCPdAlkEBqdqWd2B@`P;G%k#paCAkR}?0)52;3gh~LwK9KpMT^x`k(~(;=Vug5 z3xhMW7=#}Fahj$eY>Th|>N6su)3b!QE1{Sh2;4~qUGE}g1rA%Oi}#_!N8?>qE5kl7 z^3RB6i-nXY_`Dlh(ZHyFS*Lvu0Usl}8>R?bk|Nd9(LlvS{yFxi(*V zVs&HF5tC~znB+-Kr)_^*q6)+Cz*<@Hrs(m#I&+tq27R-2uC@7bpN+9ysAb-}U1kh7 zapr9fh=)bKEeG!oI_|4l@nv9k)Sj=?{9}D-RaVy=jn%HZsbs!3m|Q$mFjpKcoO?DI zDE6g72l|wqR~TJ3tT?`Eojv&6ffdpT$1SZyk~YX6%Jk3nx+`2F`x&48Lcz9PzSFQ% z+T8JU^BP{UeRgvq91JAWA&Le1Uyf#SDjMXK&$c>7`C)JDMOJM3tZuE+87dwNt(jCP zFMTytl?Hv|vx0r<7$aWSWSJSrlOOm*^FM@^wj4lFE*z2ApB`t0BEzSEtyxRd{lv)F?V1_E5$^g?%? zI;JrhW2AD#DX( zhhF`hOnp;nu-fMHm0I@$R1`!47w?%WFTtXz(vU9^nh@?&#aj3C5^ZKpdOf>{^5YqC z+Ol@dad~luv(NIjWuM7(v(Axg`5#EGiGbyre1cak4Z=+oZ!FVCWAP;Z< zL6igYFngUL9B}KUqd8MXC4AtIi7At7^!i$dOX<7oo(?7tSpuOD!ZGU?`((<+{dd$_ ze{@O~gi;9ceC@~-;(;EyEO1`Uv1YRX@k7K}F^9otbuU3h3x&EF2(s1P(*50m--uu$ z?+{{kl(23+xga<5FNG_zbjjOH0!ac;34zL0Cc54~s2~E>B1$8!*P6HnJkL3wry5Sk zWr_7F^-2vUPw*u_tMpr9832rxWS~>2nBNh&epIdM>9|9x?+nz)8RK=YK^rr1M7?`s z<*nf59Lh@~3hv%3T=|Z6IxQi(j>_f7%f!;)Frhf+^n^i2FN07!0CEU(AY_CgdO-XJ!l?*H!MoQ-M)~;VuRCkJbKMKjO|u!?q_5C zkyJ}kKl|41(>ocu*C1VbisFkm)a zVPmb*eH$QS0Xxu9|-WIiR_z#z??eO?njQM|7u4w^cVYGWJ2uu9} z6J-ZFix_}`jjWBnz@KAjFJ@S@5JItT$~ov|ft&*XbycHZ6+a6I&tSL$WI*l-fNpun zrvmK&8x#V)_aV!P(78*e@MhM{ZJf^!g9lCuaVx7I$9HfrXvKwh4$?g|er=DFEHi(y zWSQklD(=KAtO#FGL4Uqz0sWEU&zhu-yZW!#uBGNrmn^qjr%EOBqZ0II3pbWvplA?S zx$72k3g6dm+O`tY;48Lm)V@{7w%IPLi=Cz8hQX!TNcPa6;e|4%cx>2aQ7)wNmc4+6 zVCjzW(v8^Ig>Pv$Zd-wCu$9|3Y2Pp8*sP+3a5{v0-}37L_}f9lK;Ax$U?JR3sv4g@ z0ff^DS#IbCypBm_f4_10kVg*xki+}iodeYn7QlN);*1|M@1qp1WQBqC5g~4!qbvTB zEOFJ)7)U?QwXI_!hnf%laEw5Gm|fLP)(^)C8x%2Va+(w`k5?rSU+BOL()?SH^XN8) z-aH#I1G0ybN>%=MZ+Il+fQOe;EyAWh{s$5S(`LX7`3=+06qtwo3D0|Oe{#dv8Egoa zS>g2Y?=3vS=Os{J`}@@TJ3>Jedl>c35dFm8J(*Vs-awNX2(tf)^euec#P+@!n`6JCUL{&q zdkX+Y3CHWF445AaHAnwYT~omAcv_pclG==M0;#w!nr=#T3AiBl* zR-qdNpm4je(Lw<3YOL)kFDwgB_9NJw-w;fAW>{e`2fd>Ji~?bFrFoi3UsQ}~;4lCo z0ETTM1N><1Odkbc^#Gc$=BTn@A;M!Wt46WML4o#%tH^<$2AMo$C^&JdG$K%*q%Z?4 zqDmRLyX%hGv0DMy3ZZIUl8#X_c^B%2dV#e397go?5Un30hNr!29Q(P`ALrzJKV?NZ zbH|o{Ztva;zIVzGm=x6S<<3Oyz=CyXN37OuTnA=hbq2aGRuMDSA-81j_EWX|{K;(Y z?i#4XncctOL+t=q4)fiXRNm@;dd3x=aaYOOivyZp&bY9==unGLaP-ZZf$@PTT~cJ0 zTXo9@Dcpcl%Lh>ouEnV~-10;E8d7F30{8JIttWzW|XJa|<8`HG9K8^*yKScrw{{Q7Inx@k( zqBM)Nbf0$1-#x2B(dB8eZbDOIZzOPqAl`jmWauX zVNFn$$o1|77SZO!3a8JQ8Y^F0UONJ7HMwz5f3Mqbt`u+K0+#YOKEeuM9a494C=y;% z$8${R?mcv{wt;yU$CpMq!Y6XYA-6#2La>PBev!x)zxX{45F2n}j!jI!h*l^q<#m}v z(A&OD&Uc7Ui6eh|lpvTm%OSsBO}%59;_8oxhT%ZN<4u{mvAze_>v zqK#7=b6>$v6*yeW&--kZ#MG;Z`Ehj-%!+FYBq$e5JK)+K7TFuUfzH}Fu;SB zwXoHHQ@zzyo0xga;vXucJ|!dWEaGG);_q z<`bjwQ-l6TefmG>3+9c5f%`Irt65=zeq4y#`CG?y-uppSmd+wq+ScoQm(QSNl~E}Z z(EcS-J(H_k0Xry)6#hDFTv7b?nve%LxE*5pM^Fx~#;L+b<>|}?VO^3FMA*2T6A91Y zf4!J)*`gVuRc@!sGb6&$vPo4~l5)`vB2PK29qn7Nwe{u8J*hKe1{v1o5 zmBn(tw}bC|c?Oh2_%PJJ{m2+e@^>t_a^K|1Yq;FmZ`KU{IT$S}P^jN0awN*YEawWo zJoV(qxw(t=lgNFTDi>p*f#)QejaIphZA3N2aiSmQ688`21Dh`(L5Jj%?UmE zvMjE2E0?2-K*m&PF&gPCAw5f-W$-L_RqRPSfhl%s1u9G8 z(zbJ#wX9+N_89z0ytxio^50gz)kPcrw_^nV+dd*Up4+JH+{X4`Zi~AIb0%IiwWC+S ze?N`!TYUd5^X6+iPsGPFR>S|y`j)5Y82Rx3KVhy#7IF}U(dRg)l$=%Ba)u_KD@cbm zQF)qanDn<==fi6;l9l6!eA;yyd)>fy08H4z170U+bZiHKz92Uo!;M-KMbCW_nQC7l zdL{zmd%X-_6Qd6hu)Yrg)#oOspREUuarEnN)-g=fo?t~u*5ct3qGzIrtD)eQAD&uO zvB?@Iv9EF?XVwY%By~yx55l(}^g3Ev?}sdRzzx1-)}>)&h(B~pbVfCzz*O2AH*63@ zl$Z^9Sg@X60^>>r$P<`&>l|ZR|Hjb#iUfU_atsF3W$@es3HHHLh5UQv}W`(dS764)ma$c%1^H%9T z_S0j(z4QBkyMDBHmSnpJG0^B@4Z%acfEgQ*OI2h98URZ?)oM{0Wd#2Z`wQDKh!8|B zdJk@LTZM!cKu8pIBkqI=fDbR?q1)wz#J*aStWf{@2wtwt0f-UE?-WhHOBpR9mMSD~ z;eN|cTdYQXoZ#~3JPUJbOnUPw=L9!%1M?c-42?yT1WIf?G50QL%>`ZAT1cuGUKoHa z?o8SPSatZmB{GX0+^tD8TdK&}2WJZO+ZiK~e*i@owl%D5+aNs8BO3)EG=Gtbc&Gv4 zqo4Cc+c~_#fEC|WYjCcx#8Dx%D;&!-MrgDI*M8+g5QP{$1l+*@J z764F0A;Ns-tHo^VXe_f2~L`pp%?H#$VK z4Yd^ARcml#Vo-&SSH_%LlA1<@Sq+IT$Qh#Qe!4q6Sj?KrKcrL9Yx(!#y-CUL?80tqU*)M5fqRQ6I&+FYC$py#u^52c z!&OCv65tx&N;C!eFp%FycFa?{DHhH&3-H;h38%6u%9~4dN zFAvY)=Yfz9y@@>eaIXP%5{m6!Fv$<@kVGfj0R}=W46|Jf=uxDipA=|{cS?6$ueN(k z%Ka=SN#Er3okrs(MeanYjTEXzk}Mqnwjxr;uyD)f(;_F?tOx_c<;n|@qJc&8r4HMZ z;^!dd{*fxe{5;z{T(uV()gaO)I;!TQ?yIZaWVAei^&`qq&E~uzvN#&q7m!a5q=0oq z5+-P4)!sTQkw`W7->XZMdyDJDthV%>jh_sG+!%8KQJ}g!6|mWkMwUFC+$UW@7&e=U zq?#sVo7S2qS(}I;n`ZuG0Cm(tj@#Fye;?h;l^MK$VgM@6W3*C*(Jht-0?#3^8$G+m zGD-oIEoEi#2}2AHs%_Z{?P;y5`tYXUHKVE9r|hAmv@z3Hk|y3*PU#Ul%hsByy-CqF zV<-jCwzA5%E=nPJ;V3NpofD9O5SCKACwV&cO^|aE`5PSEg^Fp_pf5n=Um3Pfad2{2~Ta6I!kQ zgFlZGLZ-WG$dNAdt$RNckz1>r?n*sNW7eeatWsix2dV?CstNhyZLH*A0O#l&R`biy z);R+<>P^BnwryYdAv%zK->BromHZl}qD{qhdow8%XPe}_nOq|E_J9hML$WF7W{Tes zFWMTIuZ}jq=Eu#-Ww=rd$hN2Tbyp$C=7edIRIIdg{#b5W>uh! zFJ(l$WqD^q@)%N<#?f*W#Av(1VLM{WFd@)umC`s63jL^ls>jAE zDn8wr;&!jyWDoa-BAK?YY%#fYMHT4)+o+q%5kwd`bG(1xYUgcb5e|mOd)!2%v{=G= zVrRj}$hP|-Tx1(;HhCh$5wGIKjqA_UHEloK$?*Sil>9ilqLScNuKjx0K;GXqcCsC>CUmi*R!^GTygsCPltQZ(s9 z8AViv8)hVA2TM%Zc{%PFS@_K^hlExUt}(}f_Av}U?XFK4UsD(i6pQ4NRyiE*C{p)o zf~6KpoEx$am^O3g9DA{Td z0Y(p&J)8F+fC!yLZ=&vBf3LE4s7k43sH)PSROR8R2e6o)`lL(RvH&g|k7JX_-Ht&l z0Z@awNK2#}J9vc8;2uq4cs$%Tl^!tt1BnAq>dl>o;mVUSoJ{LQC?#20uN*eAi5~{e z!Q*33!r~!?*IiSWf&R!rdZqS0`r>VLpZbvVpZDi+ddPMTTj^x3O=KV_c zbC6-4twT!v7Y26UQ8bVxnS0UDg25Zjt)K@-B#*#UPe|=ZX{;A8%qej)3kYeI(13&` zLC$R%ATaP(05pk%z}ha9pVIn#O#3GZ`3UlfFPbHKQRm!H%feK4M8wLh+%72435yZw zqS}vd>*aZ;_vkzaC5cPhpb0&L3C5JPm_uY{^GMyZTfSTtul0W;ir40_6COS1 z+*ACuZx|IV&;edv?xKhAn#fIj60#5d(S-@3|6?_t9$xm-2mAeV%ckSH{A|oZ4XKc# z>leOcmHn8|W%7?m+LkV*o4Oi?4X1Rhnz+>nf%G>g%EL4!$y4eI#kUx(?3yKWe&xb_ z1Y>oo>(;J()wlMYCC0zHJCNeVVPWqTungO5?d4i^N`ZwG77x!n+1o~VjS%dNo2tp6 zAbES^qoXIUt!rTMx=9zV3osWF!#wrrXBswOiYi4u&KX4z_7SI9ecYO4iSsra$5EH` zTret66JCM-MmzowCD5}~xLl5vZwgj>dxhHnX6XO9A_Z~26Nd_H`M(wN!-SYC?N@`- zqo|tCZV$e~xU{{}PsZE}GtD7c3zJQOqJdweP@|F1*={XCJ_go_mkWxskTs+OFfEM& zvcYj=4{W=&DV7DDM8)$rhC3OrP6P6pr!uL)Od@WNqB+c00Xzcmx}yl=1rHMd?M5?BVLQlZy$AR#>s7b7Y28e0^Pu>DT)x6V8N7GOVsgo-u1^9I?W|KN6dLYo7c)|BXZN8l zu_09*adMT2rC9K)X-eY!Bu2IE{Mn!2{z|+J=sxX ztqh{6i2(7F$OSPa*wvG_@Hj(mnB(>#FQl2=*bigu@XjXdoNCMRLYhr#0D_0%?g6E~ z-_lHODjufvo^&EF(Chr!XE7Id?Sk+B@f=YT#0~tz;iV8y>I_h~%`_I2EeEuzMhX5w z{AqKEf}rbKEv6?m{ghlauE%ShmOua@o6n^aPK%+S!J^f2)39Rk{%{EK+P=4xITEEH z%6A@U%Tqh1V-wTCH@sY!Ix$O0w2<=bPGTI|mApL4b&uZ9AdNe%zq$Ys?5Yw^8+!L5 zBkVh7Hg402@aAy^dfCQa4YK-%@bixN3<4;g-;r2Ira#Y@(jUr=U%xzEj=Rmy_6Qp7U4ypR_1-2S4N0twNS4BS2CbrC^57b_s!RmTXDYZp z8QQ8yX%y^SOIs;!a_?=SOOM7dR;-OV5zKg*fnnLZVFFdacq`wwtHlY8_BMJvEm)A9 zCyu16Ibx8BpkV=WG<-!4QZ}rp`P03y9r^}()%Qr|`QhKk9*we$#L~8a$He{5Rk`4R zdDsR-->6q7QS=s{%k9v#u~O9kY74d-`-cY?PL@l@>Ti9Hv61&D@Vxe|Nve2gpZ%}< zHL<@AQ$hg-}52tJfIHYQ&cIb^mY-nK#ucirh*o`V2KboMm| zRa6`Xz71q(qkc1KqAuP~D$GCcT>GM)RzBt*U3Lu0bDP0$kLar)bDVNHEiux?RD>AP zMaSci^xB>j+{%mrnRG5cp(?3*MM@(|)R#~_i4qkg%oH}!Tz}EMAU>`Q+2Ot1Gxuh< zEc1PU*y70 zzu5)aKqnN6t8_*uksPm(a!&KR%=d_#@^p)Z;8bL#uYKLXmu)N${O9lAf5o?$wF7#_ z2$h5G#nk#^HDt(KCQrGeJuBb^4G|FnyZF(3rCEVKiti@UebvnAG@btXa{4?yP7m$C zd}I*!^U(J`n}p`Kd*Ifh#DVZK)Cx<4aQm7?mQ$|cW1A2^9Hno@XLE{|9&m#(9c zHZPiuPmCMl<9$n20j!gC+^*+W-c>mzYM}bAz5i%t7{l$z9~i4M$CA$nwbTHyDiOD8 zPtvXOpEC(1N)91U=!^z%^P<4;1mN&^x5c_Q)>d;&%$#iM{&Lt8d~;JeQBPOEwu=^; zDDD3lQB3L?A?Y2{1rqa4%N#nw7+3H+7@I=9E?R)_#VnCu&$+8-h$gKu$e>M2-1kGdbp;7}b}6{ipxkWt{yP z#(n>-Eq7c$p$l|i00Hx{2v$EvpzxHC{*nyTiT&>KGnIRB7cDQ~=QXAd(>Eq?F+KCo)ws2IGqGgzGqga<| zZ4wIb^XbTqfoK%y)J)it|T@a!2yXLDvG)4Z;%YnWI}*Bsh}L*G==WZ8rV z(9NxUTgbZ=#4QrhViDDnv|jjYRM~DJK#3>}1tBGhN3kdr=}+G;4ux5Sz7xeD^9R=l z0?u`JA1gxe=Y+6D=E##RmPKZpnNK+P&h#)}yZE>!ObgBQAtBCg12P z$fg~AIi#;dWq~ey(@*8uHn9hfX?_bGW&Yjd z*;tw*nZCWmgLA2r*efVA5T8j6{}9lOga7~WHB-?LGzc-QFcX4RTz^LVz2HbH;6oCMGl)|C97q~SgaVbKxUy9-TbSW;y z)=LRmLoX%C6<$gS7H;vUQE)2j* z5gi~|x6~?Df*MAP1u^G?W%{XRTb-HL`y>1~Ei{s+)G~ORiI$zv#qPgYM(fBdNjK3k ziPZGsAavYfP-1vl!lE=C=Z4awb!1dh!dKfo_3BjeBByAgeibiIFrTB-KE z+DfU?)JgY-i6sT!cYS5ZlqK6OR{aeK*H60$IdUWAX>TC2L53J=uvLcHrGpPMR{4RL zq>HYG8)=jgy6LWmeD5^t>8O^dbkdXFbS<--fRJe3FLcf<|F;$=ebX=fGav)Ga3vrl zA|@dvBj-lJostKdClxPh-hBA-<4+?Xn{U4R!G#ldN?Q=tP+9Gm33w>3;&E{G(np*G z&IPvH9!ZWnp;42)_Ss~!!;T=aGf!}19m2?h#+jcszK=fHkLJn49BUOwEHoxBEEA14 z#bi^BNhhq{UKK7vBs~M8DA8iXiWA>758O6gvNrd?QW_3Vxr=~NkKS@fB8 z{dt;svj?!YS!%5A>uH05+1=8&L!L2&h32%@6En_lx<1C*%`S_s)?KWrBZbW#^`yyp zrc_^cJfC&Uolc;$=!Qx>b`B}X)STxQ~TI%3yn)wP53?Vz4V zcClyWn#?^fL8Aq5&kt)ZC!bgU+$<$NIrNo+N1T3GyNjS3UtA({j#%NtE-*Gfjnu0=Pl5(_v5}iuN4t`nuAJpz- z!&efDrC?xx9A3x3))#J%&FHe4<0GLu-2Z3#W74lVfty`oZtdwe`9=1h{f%SXqdx7k Pn#O(=irbKK4*&oFr=YTK literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/barlowcondensed-600-latin.woff2 b/src/console/assets/fonts/barlowcondensed-600-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..da60c9a90e758f7924dfac415f24961ee74c59c9 GIT binary patch literal 22308 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 PKP}bZXI*N7khDDj=5*Dq literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/barlowcondensed-700-latin.woff2 b/src/console/assets/fonts/barlowcondensed-700-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3726e9dccc00171c2b54534fc148d5dc5dcfddf7 GIT binary patch literal 22444 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Ὶ`Gu>umyR$0Pe(ly?! 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 literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/bigshouldersdisplay-OFL.txt b/src/console/assets/fonts/bigshouldersdisplay-OFL.txt new file mode 100644 index 00000000..b5a4e0df --- /dev/null +++ b/src/console/assets/fonts/bigshouldersdisplay-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Big Shoulders Project Authors (https://github.com/xotypeco/big_shoulders) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/console/assets/fonts/caprasimo-400-latin.woff2 b/src/console/assets/fonts/caprasimo-400-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a1e50c3fabdaf5c81037cb4d88adc62ea730f65f GIT binary patch literal 20888 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 literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/caprasimo-OFL.txt b/src/console/assets/fonts/caprasimo-OFL.txt new file mode 100644 index 00000000..eec5a378 --- /dev/null +++ b/src/console/assets/fonts/caprasimo-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2023 The Caprasimo Project Authors (https://github.com/docrepair-fonts/caprasimo-fonts). + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/console/assets/fonts/inter-100-900-latin.woff2 b/src/console/assets/fonts/inter-100-900-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d15208de03cd1ad7c5199f0a0ce915fe841e4722 GIT binary patch literal 48256 zcmY(qQ;;}L&?GpvJ@Xsewr$(CZQHhO+qP}nHuwMC-frAwKU8*AMD|NXKXg{R$%!%o z00R7nZhrvO{{rAX{(l_wf9L)u|NjS8sP4bOMq%s~dp>bh0mUc_KAHc5E|@-_lCpqu zfGim)KnN?HH6jF5Ko@^N0Sa_D8~}Y_HZLG65HWB(1_(ZAC@pva2n@KE(@cV3_rJN@ zn;~mU`I0RJ|H+Cb#jiShU^cg6`%XnS7bCbgg;C{t9iDca{lng-mFvI%FegiD6m8pN z`_JD$G)3d@FJGZEOKh?vwFPSdW*2cc0wYxVV2D{tb@kF9Yg_0c?AmFTV}z(AIX2o% zbRV=fRtM}F;{$;rLcW}5?IlE|+b1%2-cvuD&UoawY`)@_X=c6RC(2%7q(kw8_;ocFmVabMzd#!`S#lF4}TNR1HVRdk&j$3c@!VLD?fRP8wTo&;#< z^>TZjk^$};QGy^-M1Xk%!mBnDHKrXwS7bP`v?pB3BdhmGchcQ{0boVeg;WVyqG2f; zY|1^n9u#lk&o#A9`t9rP_ixW`DD#QLQcmKQ$YKdgI~OjhE_{n8(pf-)GRUueoVcnv z$G7Tj(K8P3Wn(zmbquoXvEiRH@(mi_3jsYl+P+XFu2Di$qk6jMI=#UO{J$P(Ny9pC?Wz3Reo4FL?m`Cxd8oPci-6PtOleSE|_=_gHmg_&wdmz@LO8Qxp6rie?9yykM=cb*R2=4msGM zyaX^JNU>pmu{KJT{s0D%X!JHlP>g`xuz7+3V4$%DFs0}pJkb+T*ciuGS}7PzI=uoP z8HKf(;a6Ffm?R~?mZZ#*a`_Tkg&|`)J}<{DZxhpr@z7D}Pf^LC6CWbgmTgy;U2QaS zN^P%7OkpBE0Wm@tzqtIz1KZW#F)@FZf*rU&;GXHPz1oYmXG}OUpekb0h&Q61WKx;lXIUZ3L(l7M?(DVvqz!wbpx|_Q z_+M`KSy`*&O5bOl(`6eJr!q%BTs`pld=W6a4RKW-0H^v)>Vhl=&i;x8+cOC72p!zh z+iOb?6w1Cn`4J|a3VZ)rv=O#--vXby8Ken84ax!F>TdS5|`#IG001Vf{0? zk)InKeD2+tZ%&ldUj_k_aEd6TFs1MBP^r*j_?_*tDN?3|lGo4eE?nN($6noD$FSU^ zX{uj#a1Wc40-i;@b`z^0!Q7>Lv0{b0d2tt_v9*~pIR?iDbPPRAqF>zL8~ zTj`5Jyn-Z!z2a~Uy(x`UMQ~96-`}29rrX=+Rk2!zwaHDk-zdR7 z88wy=gejX2Q4iV7(o%}`?B=Sw{lQjKQ!t>_^-My~7ohti)$qngzx$^>sB)R4!s)a6 zZztTV%_ir^-&*fVjthK(thnK>c{ZGrTf0@b*E84SUM4h;(oymAl zgx>`4AnjyeQmcO>z`YSh=)=83Nv9o9v;Q8_0_DwbF5j30SAn4^MQRJ~a$t)oDD?wh zTW8xG0qcOZxP|(#%K#cIjbuJ;Y1g7Q_aMbDFmf^GEI~3q5(?7TSDcf@ROJJ00 zHJz8%1Jb#HL#C{-^5i^p*Vs#2mr3%1!QL&0*;y*#2EL+jV6gzP({8B69SA)B4&FAI zfbg&{p;&xk=b0Nx)-y&{MbMn%pVvRI^MK-x?$;?^t)PsfM(;6PbdE{-SRshkb%nrS z`PeQ!D+?JG*G*gfl|4WOf4sl(*%$Q42Dv}3XQBQ#gj0PiaxE6+Bgp4zs`459=P86} ze86Z?G<_fx08(M#e$m4~tSPi)HtlupWcrxMdhX78!O(ib(|TlYgEEjIT8WUAiC~M3 z!b|)RmxsbjWKjVScIPn4B9tKTIrA#U265APjv+zu%)N&S+wGE}$XdW{Dp$A(&&MW7)+d@!BM5pJZGT z`J7|{nx(%k39o0?nP?;bihzskYV!%IKEm6FhS85$cGgS-)6Mip`Rpux!o9185wC~+ zxcM2;7%&{TQUgNeXANpyEV&B}kWt~zj?c^mm)v10Pfomt3BIv92+}}8`9Q;b7_q@6 z1uqMtaO@JI$WbCEl*mE`EOaA1?5HXb%32vi2?r!O$tCmCsX`6vC^Hq0R&i*>Y`TyW zE+G+T6s2hgM??$%bm^p|Me;;%^PVsz?!Fuk(+$eB;Z)0Nf|RL>JTwv&5rP!usYbJn zu|d`(8ue9ycfa7;{LvRT6@GN%#N^bJw(dydvf!xJt} zRPt1rH0pZaCo6a7RoS_TkPVoD_XOKT)%v~d>tRL-j>biSMWW*t#dkl&F<8{9YTr9U zLYP_lmq&nnU(ZXK?x=ZBgRX9nhRqWCk3Are?z@E5$dn?$1BLr5l;FRIbw)q?LW)M; zm3ZmUYdVcDUlW6QX&rHMu8~9g@oe6vLLOadrx{6jmWY*|Yv?)E>1-t@LrpSACCk0) zw!a#vin{a{-j9t$-QGUh?enz~DJgxcDl&A%pCV2tv{z^Hi-)zHi`T7%HK8%nWS2V@6^F`g=EWY|*W`q)TbBYbqt$IjXcRrZWI7BV$Rmi(;jywUr> zQANO4BMD1kQ-Y3Fm4O$wioxXv&E0rS915#9j~Rjl6w&!{XqH0Z(^!P8 z5Nr4VK{gF6>cV`R3UN^5JjSMk>ik=nnu6qP?fIahU|g%_U7PbsI~y!DmJ(5%l@d6s zv#DlPP{?-M+trwZ^7_cb?n(X3i?O}${IAJvdNkYIX_JWa3a=D4R6>Q)a2qo<8!>U4 zLD9B`ksaIDy4PTh2)4+H%L6ugw)$JIrD*;l6IXSFta7%Sxyv)Jw$4g^J73wM4QvsR zCrpLHtyGcFl0yeCmNuKc9=P+i-w{dPS(FGZsvX0#VjnS!O;$>|$L3lJC+(YIBaZ1H zQtsql1ETsIH8r?ulNV%-wQIb5ZpeTC^%oOLcgT8YuezbCGK-`UJ4^ji*()!f5U>_U zn(64p`NTsvM&U@J**&P%+IKXYWhxjOu9T%v(FIkSpq)``TAw2HuJ_!HAT~D+U$M>( zNZqb^-_5f+$@`$}aEmt@nWcN_MY$(?Tt>gbbG8RfHB_ zJG=^2B(wBivHgl;cSy}9G zny_v6g)cY<0ri@ZruGd&f}C}aWD-Pe=EC9YSfc>#sPVAX(#;14R9f4snq0SuSL;t$ z;ua5UYn}OO8rkcmh{Vz;7e7tj0ezaH_eTbr)UcP+QrOL0ZtoggZwxAw3!K}D6j+NR zQX=|SrosJb)0&aGq8OTa4PzRVhLjBKY@$usD9ysfM!4L%Sz993`Jit^702e2mk5jU z3akwQ{^i8W6STs#9YVRJP4E)`+Sm6#1k2#$PL>8@uIk#W-R8A5Z%jrL9&M?X-w!_y zKInGdHkZ{QYxAc%rts^NrKJeieGBZA`4siAdx`n)7IUsP=mAlgBp1I(nFi8GMtACn zDfTNnbed)Av}P+Un#WCrg7fFJ&IiDZ_S|$qj+#6Z;)L9# zfMhFywxd!h90NV-MyxUWmS5sDC;%CF&WsR~0h3R4k{e#B$k>&7v%7dCCf^2x>vRTDj#RiL6|_c3r0j6Q=w*zmcPNW0hU; zKHPmI63sT8Jms$S1Lz}fIH~QEJvt91hYmvA7450dg5Pl*o!jtEc@CUVrhhhe_4hGf zNdm|m5;=x5c3b}_>dU;Zf#1~NYJyGRN-u?}IU| z0#Xc+xJGn^xxqd}x#|PMw|4-u?HkJG!i`AT;cq7CE#8ZWPvlH;Pvt%jmd#;3#Cek_ zGuU}7VS1l=WG^$Gh=BVcp_-(WDW#Wmn7=cQsb%Co&_I1^c;5 zg|rnwhr=r85iq7*s%;)PH2zN++fhREv3>VmUA(vg2i*#o>k555--j|}d69O!uE9km zn>NR?X(|fv;=V|H7(Up5;PlhJjmFl1-5k&}7h0g5IYL3zMUcct$1aCajZj<9pAe-^ zO>M0p5AOv#ZiR7bkvQ(b;HNXx<5)+kz|`HaLY|6d#4^f>fXivR|E+%6NPchhq}B+M ztARuTCuAG=*5tboz2XpQ01ISlsv4=>k3%Vev`_MLfIDRU05Af}r<~0f@+Ti< zAp7;e?OSUCiDIL&X?-h1`dMZ6N=t{7I>8EN$qyIcgi&bY{XEp8AqMUZ8qdYa3DpjxSoIK{q2@i7>MCZ(!R100F=&DG{r5cyJTP zs8#ZS9$F0XhGX%#5{*pEgCIp(yF^l39O55+#qSL=$SQe{yMP}<8ZV*u52TQ{zTxjv z9<*SKZsv3S=oa@N!d*Mp)1ELyG?5{qOJJpiUm5C?URc&Yrfx zU11^;N^f*l;y62G>!c{B?*FcweD*9Kb+9*%=%U=w4N|-_a{=sU2Cwl`NxIsSzv6bo z?_RT0)zNP6&JJQUzg245a<1f$jgbd1!3q_hsjbkbL!0T7gYL$(;$;y#D+cS1!t-L=ClH~jGnT~jOurKzl zC*$n#w)?K+hNB{8VD6w35(Q;w3G}c#Q3HlzR2HoVXgIhUYl<`*rxN8&Gw(EK+$X9n<0WC${ae8Zq zS(j72{eF4n3;9(a(}G2e)}VQu%3dmXWrl54lI8t(YHzqT6e^ zn!5uKFg;d{9#WwCwW*qjSPh<8iIqA#$4qBfR@n}mUAxqVfXFb<{u$ATe>B|N^OZ}i(nxgYk`)kE5{!zhKq%o zm{8_;nyOvLIP&^C5|Lo;(3Th>%r6D=u@bG^z;;w#krph@W=|%|s-|=0T$h!%y0y`e zf7ocLy4Got3yw+nK+#8lPw)DIK=h0t;er7Ug!<^K2GTN6$tU1vghEOhzar4YEjX;WAvyhIdGoScwym$cK;+cT^3wgg0rWSE{eY1+6Ke8RRqd$PQvjpBq%MPld4fdGwS8j@gvL=uR_o!+R@c=+NmifqGa=>86>8N|p`W@K zp-F$sO;G1C2g712183y1?<}ys2U&{LKtATqj!uzmJFe%(Qii-Bk05-!J)a*Q27QT$ zI%Sf%*L{VF^yD3OB7iy>LYuA zyWPN1`+HTo-yCBcKiAsfo6`;_cYm`PI|`{!1`-?)6vqWSRtoTr%|-?=3q~Mm^WahBx#TOO@zRps-c)nK|?fI4cax4 zE?L1$j$m)}3;%UPXeF-QWal5z|83t3B(6xaJs}Oi_NMT(9}M`zen4xnmf4-jJK28~ z39Nv(ZS`CI+{4yrO7UEYLKZnPxV>aRCXaUp@uF;-zmZ(y{M}Kj${xAwEuQ*%$?eesc_w3jpQBQVGOZ?mC1`3E^+R_}=!iMx!re;u?O*>9=0%@^Jdk8^Kr$wl+o0^g*2zg=QzBUZLw7 z(P(L3t;5W*!B(R^tP}e~yzbli+L`6XxlgiD=e;J$vs>Y^(*Kde3*GiaYow(3vv2rf9#Oq((-z<#oD56=V z`WgXGEtNa&#eRkF_ob$(O_q3T$QH9Sx~jap&D8Q#E3zD>D{VV@;2H1rHmWpNW}F1k zJWIox*;lfNtG5z%#kw6LZCB=T*;P?fKXYYx<+#h_0!FpZwru6F(_oP_(5wfPYZwQ; z@Urj9O{ZzUQUSi28`gV9SUTLj$-7fq1FdVO%X3<0>vUQ*9mA7Rv#d+|d#iJqRwYAc zeFIgl>Md<1uU1gb1WdI*l)8!uYGn%8By9QXJlHKnm*F|YXp_%mI&#G^8eH6m+Z_vA)PtARZs(s%7~n~q-nazMLj zyTSuh%S}&uErENEB2qhPbX^Ys+$0its=Q+=;F$F zTgO$e)4HM>t9bLjT%cPdc8xcNxeP5UVe;b~nsDX2=m|c;?wh+8@hs{4K-j(D3oGN0 zF?o;O6RYBp@mJ-&jzqB)h)W&Vyj5T7Hd+Oov5PP=BUovrO_o;#3Q^%P;cW%@*OMSx z3*PKU5h|F$?c`>|w5+z?i(=leby-~1Ivo-`Q@@0>p1wW=JPuhL@qr z>AF1ylfky}8GUZQ?f(VwgzL2Fvaw_s+py(U6L7=pb34*kU^rl;(Hpq)Z;TzSP$Yn) z)whG+47Q$x4)JRiHQ6ZJSRk#GQeurRfpykFT?@&1y@>*&ERAl!tj<((0GHcxUhazH zz$|2gJ2&iNEjb?8Wf~ zZJ>EWm%*QQ_Xh!NRReSf5AIJqmx^yBU>P(9_2fXTD{+Xr*Z`{B+gA-5-u@_P`fuT_ z0KauCG5r-wmdf-AD;-B9cQG+u^vIm>#Uw@0sN=y^RZ#O<B^iL=W2wjRcLF-^A-;|^rb{y zqL4{n4JYqZOVfc{@I5$E@Q+Kn*TOPoD_l4<^f?=00@xAR|`M3Q!8PcWS6hKokKx#Jbn3xeK z!}j3yciU@jSD?YX&t*=lMp7axdH%Jvqak~0ds|m(@!@^mDR7xFXVX1c9%=(VF*-#m@Sd%t{X|Si}y^@gk6@PkZvOf_v^pnbHtvklw=uZ5+Hk zXu=xOu2@q+#VFSI4gM4LhsFK+gZV%t1m#nThZVXg5A*NRX6WI@zBxHkuLH1QDZb1R zCuc;jLAOD$LD`777J(ylOK5|*boJ5|$w$2tDs2v{T94q}yP4uGV20Ntt1E>x8|DhL z!(8e@-HVyZA;i$$>)q&L=r7?JJl?<}v;!kMOQgvH4#7p%tzCf>z3r483oP4#$3AS| z_F7zhc@IFhjkkiAW$u{F7Ik#oLG0izb3jb!0Y5XHL|eOw+1)2pbH5FR*4b{t4~x~l z!`*M;!MXOoW=T9r$L4AH8#iL(g6`JNaEKS1y^!5M0ol5lk|2^}es(_i&V__)p4!B0 zJqe`wi2wSNgROu7rVcg6A0_u5O6M1CI!v+;Tz4vRcNf40kq;EaPdZ_MmJ-ZGE1IAV zNY#vNmBuedm>xGQc&0%QFe{P??UI3!nmNSS;+N15BQ~sIbTHn4HsJ~I}IVkD?K;7ERdEdDCq9$sjflWL<6y)l3nTR@czdNCJ_G2a%Wuk-%7bb!?i8+juRW z9DS+gNq3^-S--;OI(C|BLwJ5_hPvklyY;URKo5}Tp+roqkCeQxGx$W%v zfObE+c#}oH2QZ8?gJ;iKmFF%X;7GBdCZZyoApUD@bNokQ1wRu*<|#`%hK(fabH9Zft34Vq;}?w|{iZV>uO z>23nHM!!Vacg^HQVrFs4IWwh?m_S?=P?=FTcAhK%S&n7N#9n1Kufe{D%DqZ&5!%US z*gmqB&!v;z`=VMe??K&9tsLb66mXi?qiggM;TxL$;Qy9GrVKqp1;6j?jSZT(*BPd2 z&iOV&=5E%;e;8jJ++00jaOyW8ano#rydo%)t-47%0xDaq6M=OaTWSDE=>2`~F}?uP zzIppigJw*t*k&00o=yNiodahbaDA|*LGsih-n7iRNk)ZFA^)(H_y<fc0Uv?U;nUwAHnPqBN8FLI0(y`l`2Cda+-&R^HqVY7Ea zhLd(txXQtFwr$~YgA_cc_pImfWbsiU^WD$j{w=Bj)<;Nmhj5^v0e;|*MWc+jy;@*R!+9yS=*w;&$4|x%$~4h;Gi{yK@_*#;VMb!k!reN=g-olGk*V zq%k>ZC}9mH@=Ob@f>&lQOQHVYWLx>P%$M+C+inq1rmImrqxQH6HOi{KTO|UfXXR;U(-AW{z zB~ZYiE=g&LrOD|DCQ53Grph`CK~FmXbpu5dh>VJy7N4A$nvfF3U8E!*efPt#kXeX3 zbd>uRh~9H-Qs=&6)um)rR}glK;xSsBUtS!orVxX5q!XSAt{Av)J?PvQq;y{+)p}BKt;LQpWd$0r8Zyl- zuFfwJU7IK_cmd`qBwO-cx%)f{A*qTGk=m~&VoaozjiFQK(n-8B~#pzviqSp)v7R8$#+9{Rwr z7+HBq#nq{Au<3e?+E7%PU3i2>P?>asIZp9+yu9OGBBCObvZScj3(DO&q9U$ZAeYe? zR|br|#2SNl&m}8V)+M4q=X(;#WFdO9I^X0(!1na@yyY|WSuX7Z+T%N9^Igr!R2R+l zi0(WzW3ICM5bJ zi9$Gn#j^@(@Yux8JPdhRxJBjuhp?!Xcs4Ilw&!fpc1ckX5FViud_!A6EsulHIWymv zSKS6G5a!3Up@fVD+rH}8tYd{s$s$F&CR6+0-(1tvGPm{hcETW9!)36SJmdue*lnW2aN|y= z>JMIEGx5x*815ZUCElK&J~BaR7N8?Ua8x)w2lk6XIGDM(sBA!C@euv~c|){xwe>Xh zHMa7yIhLj@tu3xDuP>m0$KWGsIJq)0C26s`wgkN|$O}Mc>iGLdk%>C8?I9YX@g|l< zhD%fRv{mU$V^|7n!w$C0qmf*e)~!PAGpP=8c#h>)++2iM^Ta znU3JO&mHJ8)Czlr`b0_4E*l!900m3(I4UWBoWFxnFGC4x1(p)3v(68OU<0Fy?z=WWO&pP@hl)Dm3|vjccA<4a%zbiIY?Qc9(9Xi7Z( zwXM;r$8yW8TQ}rui#CVI$zpdmiCHWVgC_f&tg6C*@M0q=TSl;A&r+3nc;z^}N$}XV z{j=3khu#yEnpZJ+dzRB|U8?^Lb?F5*8OVrW!IIOO@_c?gj>uc-Jcse@gd2$Lu+Yrb zEfs0kXw!rYla{Uv9Yc;ImbSMh-Uxrf2ydTPD4OzFDn!R8*B*Kmnu<))AdV4vmk|5L zMN>gaRp3W4M6=KS3La1(Cjv3l3&19D7>VFPb*=YrZQ{W;f;misTFE$S>X;f#qpHRD z3D@C@iYID-HXISHCQ*0d2@<>r1K_}^2ZS_9=&+N86Fo5s+8F^oG5OOI7d>&X$(bnz z(%CCD`>r-p+XgQM9n($j^#ZH*S~p`ksB$&kIVUtsZYMKk2M*x2!1*W(}M6x48(F-gSaz z(X{)FhRTiSC)R^Ri~%_wJbIq#AZ^HrFe+yd8B#J!tH|Rlw?HXQ@1unOBw&N>lS)}6 zja&?!XwFo7qYL-NW%g+D2fs6rb7rkP-}L3Pf9p5gg8L4DTa4`#vnsSp2^>(IE1)jJ zcSp)6nmPZ*x@|d83#NPUX>*aOJw8T%r38txuHfwjQ2@Aj4S11wX_mQvd5#a_D0hE- z?at|`04oFF@cjyz`9!7ZSG*c2r;Yr5OK&)OV;CLaAc3baf2fDy{ry{Ff70lNith@o zO2H!(-O9s$$kQlE3A6M0M1jvS3{G83-V9>czHRu9_hi|;{h$)%614TVn-)(% zvV&9DkmA$K>8JyS8=C$b$71YA%vQYI@s6hOTINI)x}e7i1CEha%48aaN+J1yU`t*m z8$77D^}zg|vNGkmWUup)RQMQtwpZjhx-GYW_lHrldCJ*5dUHU~40M#*Vaj{%dyHYj z$W33^TftOrmxvutJ?h~^54h?ugNlC;q>u;}QtMcNod4f!%UE|$J3NmWZpI2?+q&5h zA<1X|d9ssCwRkyWBAgw4JM?4?aYiYwR&>8FWm8DDJp{^sxj5;!_5oh#kBKo)(_$j{ zfp&!x5Ef|*%+}JKC6k6KH+6s$AADD>#;@+d@!XL)wdwPwShGIAz__Of;Hb&(VT;=9 za4zqVs2sQ7WVw@b!87*P@*!#ZLdY%R6uA+WrDWv0oob48NyRB`SGVN{EH?*#4kb|aXi zAP_@nWRH34DNIS$284$ZG#NCe%%F{=QS+i$Y6`?qRKb17NV3v-0(NGvc?qXcn2lo> zIj{K~TbG)t>^o_)OuNhmr($pY)no=%jK4H|$#Cqt%-`zhDz&fWYD!cI+6duDBnk0> z<0KJHiI91|4AW!+PxFGzCu~#nE%iC5%JdmxsB!#UM3^O!Sjt1@0xyFz583M6!ytvr3|Pj4mBnwB^4D^L_`7!BmjimKXRST)+rA&O6t|`>1k;d z6%}FOU}6aX{)SXTCMKq)ZB(+%%F4>{a0rP+0RMkbwf}AYA3*(|5ovs<|HA+d{xAC< zg7ICf;hh(exGtfBX&~!~LV*WOLvgJ5az-j%{pQrI1}jP7fI=5^WMX#xC!+hy_uD7Z zSyfTi#gby80CIKewcaG7;ACTaou2l6U1G_hKJO zj>2=w{0*Op$fK!Df%*jP8{V8744`%IB`fYBt#UNr?MwJTAUp;b4K=xDdM|V zI?4zMuSH*~)+8ARa}l3{B!rI$^iMD#Owb)0=Yw6varoXy>?fqLG=>wBRI~R*s!FMJ zz9?1te63Qm!$8Neau_j!|2V&hke?_J9GbFtZhvoX;9wMD2+@FBT|d7cGU(go1y?6} zE4O#vwCah=SALY}tGQf-QqXZxI0FEQdiT9xfk0?nL6Z31NF*kko|avCA4H&CjAY2^ zjk#Q@O0mPRgRw-RmP2pXuE!Ulj*wZ`CA@N9QCWZd=v6~NA%Ng+ZNvwiZUkZf2-Pj* z9TJgHI2>Uh5EL4XIz8}zAehe|00as}O!gn-JoYvURq=Hl>7=9h1CEb{a&rm^XkVD6 zHd;C&2i2TN#SRRtswmjKdT-GwI)Gdqz^+?arro_;;qY-^E~7R3r*4#WPA<&8x9J`v z;%vp*b#{B)F$rrg6LCl<^I~18o!g`ug-R)o%7X-(x{SeVQpQr@-%F%i`-`1`82mSB zH++#tA3y<8-6UQ$?3~3MfbQ-RZ$jYtfMeKP+QkT0kP{tU7%7=Ni~MYB`}_zDRtO6X zFGom7mMawg%_}&ffVvi4GdJMiw5mMz`%RyYMu$Vxvzho|;=cldVZcG{Xj-h0mlPnG zpknIXa_39IU#k;p03kdBAj^XdFoPm);-{Ap4`Sh~x8Uo4L9Eh5*n11Nwh(7r5t(>F zE4uS4x;7KT9Pa!yg-8S|1+A$nJ7cUQs*woi7Z9LFu3ZOX4l$A zH#IOZ5_7VDy01JOv=^NxfW+s+Km-XfsNI1?;i+*HhCVzzR~{fk7(x;R5yoIH-aBbF zglSr0i@r2$t8EFfuf3yw1;K+5#{&5XG|PgRSM$%=L|Wso>=SNH-l@92RBAmrvX(Uw zEhZe9DC;_7UD1i_l}{=bEFWCQIY7iN61>du9inqjN%IP(!j1LjiVgCqA5(p@-ybkJ zwTOLw8e};mKM9ihgn+4>`EDnq!L~oWUkV7vRT*<@iSVtPn-e{M!MgaQK=wsm@V(c% zpiT1de&0Oh{~3N365^9mmBM@cU6uJ+8;$xkx>M1+bmz3Yf~I}Twcb6RSe`y|(uB|R z-G9FD`Y5w|+cEV@yYL*sH)|tpw!iY)=}fIEN}#IXTRVRIO~gZgJ!7-{>ATK*rQw@! zmlB5X^O`s>J!&_MBN$3bMYg#%)6ftT{@Y~I3Ewr&u4m776<#rb&EZa3;` zq2-{Vz5ZwB5~sHZ{$ioBq-?h9sMvAY?EHIyHVb z$jJJBhW9)i!dr89X-TTl-|I!>7vxEoqOD)^Y(>zC(dx>w_2|>T4K%Cb<4R$=TS)0* zqGR_;u1@Rm>AOdKCfb>ql?eANv;D5@&2ZEAGBk>!&avZd30Rw2ow-AvB&oF*`^W5X zS-H*@3-^9AaYoK7(q;MeRow{356H@w0$TazN))ijR4sj&{s)vA(+?=hf_l91yFzO1 zC0JWtC;yajcy8jZ{#}|HIyx>&s9O59;6p2;jCJ4{Gf_#AsmTEH~1Yybs zg+#R*C$Yk0;x&ysESaNHFs6yN(n%+%OOyLiy2=&L<(%1GO*=wBtt>~CXCFKSo-jEO z930So-|R{DKku`SK_?;g<*!O0zE|**wkxo*RFb19oR$mefxksEg{iJfwBOsh{};gL zus^_``URIT6yza{qoV9>^^s_|qLiA}ZfE;4JPzqyL*|R0Sp7wGBLcKKuOf=O_!>l| zkvcI+Qus20MFAkK`B124hTpWb6_^ijSE8U_tzcT}=9*QL2#C@9!DxoQCR=fQQaG{7 zUBI)Eo6w_{a4NcBKfX9#B5#`>$dkM_(8vw?pef0x7A;U(BqTq9qrOe6gY^puGrA=e zT2zoX!;ob0y7!GG31MSAXeSZqeloO+lY(naoA|sc4Dv39PNc2?htS9X?q5i=w0s|d z2NL1*xsDk~HpR3%;A&ohIwZx}J%`DvVYVFc8Gnse<{8AEs*ok9M0GLy_(mFqL<_rg zR%(eH8r@lz+f5y|x^U^$N!%+`8brJa5X7fB%Dvk@L;tVxSHfBIi&f(mPEM!K@%ZWy zvzFXOLv)JfXp8)t@0+yEt#lmk(>vW$8qW=YV`>Rz-{P`{>0%@Av~{cR#_jZ?;iqG9 zG)L)XyP3>i+TRb^uKT2(+{>F1ERW2P6D^;e@tN}}YHl~YG$Zqc<57O(T` zktAQuxs+os?Tr_sFX2_$qc7!$8Kqz8@0p_?!OwrsNyezA;L|ecdj0?Qa{=aX^F8(6 zZGh2$fX^kg+G{1QlwV48G<-z#wz@?7#vy{3dcW_@$?4H@$fbJ`C#20x$AvD3E`~yg zBHMq>&oJD)$u+n+GBRxW`f$D-U)#!lzc23m?!&US`o72JzAsK==YDV6{`{?Db|U=( zn2`TIZvJlB-|MpAaejAe+FW(~j$?`5u(|BL*B-9qt~nasj(5u5vNxPw`#QBgMYNX;^4n;M*8}aBW@ZD{~P$UBnFU|zR$}kxx{1=H9Nr*+GvCu zbETfGu|Yq?^TBBV+FyW=KqV-RAmciTQp6&Z2j}@!FvAm|DX*cs0R$A ztNA{^k%P&G@;!G;X$3)ZzxGj5nLz6Q`a_wJ*hlPGq!7_Eq2R+6v{rV9Seym`6qpCq z+7jCP__yY^`&n|gy;7WOgh7fWzR2A5oHN4YZHlw*C0YdsDY`^>&Nw5n2YmbcGB&15 z3-jJuN0!%@ajl*zn`+6V8wZ{;iC5BMmB4%OGr%pBFe7VtZS1rfvC=yqV#63&I+`gK zqYH3KYM<1u!A>*gNIE-u;-FAF_<1au^iYv9SDkp49tuL;pOA%=!Z309W9a|mUr2si zW_oHKtKk_=1q9ruwC;31FzP3ycO2%06Q{Q>L1ckH2gv(-ab(eYJ4Q=aOoxp(lS9Ot z`M1ywzc#-5ehI7Q_f5MAOLOO9T{v%r%bwk%yD;+e>hgm`|G6@Us`(%|QjQh2bLfeC zB}L#_hBu)VB^-`@+(8O;y1*8%Vfi)$wilx$Q(bW^#M>5pID3A5%KIJutZ$tFrBh^1 z-mf*9-XPUySz(iJJjN)_fpUE&-G6y0fBsDfPHKt;R zTls#^vQ@3@p@*BU;CwG%bs1lm9SaGA2Kkxe?%YKn;~U0+ z)_JpH(!d40zoWzb99^$0I2Vd8!srF=6-0oDcssETX^@W&a%OE5f(*O`4QEE%dpz4H zdt$BI&+$EzV|C=3JvO%e!D?eK;0g6}hc?RGuMSLq2RADGScx<#DhoZ-VN=XD}GUAU}~m6#oA^~fe1YU}=K5eB+THdLhcCv)$ zbyrexw@%vFL8dtAfu%rSsBxOnS>juutcJ5a^QFHG$IYEO%ZEXo>!5iCN3}S*7=Vsr zfW)1EF2t0TNqnK;Z`V_0+xDDtLX#{iS16y8F_#%t2qfzmwpf5HQbtJYa0@19yl+lbLe*Pzl|KmJG$M@H*syIzL-*XRTN~vw z{zLfOcC}c%W@4RJDG!#1VwFDN(z;i_^EbB>8Ce=&Ers(A+W4P!ldpMe5UcsQbMe}J z_M#^KLFPzI9b)@&n@$YEdjAM>noeVTi?1NwSY*sgU?8S(jX)?AWvGRHl7Pl+Pkwc6 zeLsq8umjhSD0|#mt(4cwa@gUOPz1j8Lk%}gnQY7VAm9G)8eP#D?_%7y{_eHVEe|wt ztoipkj=t(tUZwO)c@{ZPWITOw7lo!&)2p!$c0W&h_*Ud=v3{^1%^=-i zj}{?RJpj`8>oaci#QNP2+V1P3Gd8O9p8CA!TY1^((Knu+GD5NkKZU$H~!1u#oG zxx$g+(RncW7R!#Lj_me2SHq1r)IS*c+nJ;#X2BufMmgxXNk$%=ODGS%>dT$upSTm; zGH>Mf0`|K}G1)wCSrs%fnzGhO5R~ykOe>#nd*_V|k-hc}_7iP`Tq6FXtGJtK7;9`5 z@|B8i{RS7YaE`oq>r@lBriBFEOO^1rO&FMC5SzIzgsR)tj6&6&QkxPf(+k5_ZjEWx zO2A#!+rQ!#4Z3~kpbeZxu{P3(Gx7~3A%wWD5Qktf3eB54|1BVS>*x(Mg<~m{af{*|3m65Gn1>MFK2?yx6gQ5T_)*Lyjt zZ|s=Z*Gcm95uo7sAk;JB5?%qBG}I{L$Jk_n;M`=c)MDA<7;^{rp9&^W}l zo=`V|xY>4Gn=Mm7U@YR#1D`BDrNRf{hNkt6Up7B9u}ij8YN|DBG||@b!DP)S1KdX% zZYRa)l>;*6QDS1u>JxwDAsiC&4vYrmal(Oh`{1j^3^6s`6f&f;M6jz_k6)!G*xcNP z7>(SF+QRdn zi3ok%s!O}4m(qS8Ce>-TkUSA7?x+xTz{jT{A6Yh!+(~UqFcu~ji>o@!Qsx1iPfS>m4CMzRz|he35Gs562|g|(0Wem30U4ZyI?urs}t z4EpvXXAqNd_Y`<%8#SE=s28{-+Qu%!!+zK(;c9^C^1H9kFjzcx1zBb)DU=Po{xKTC zYDh#c!hApS+tKe1)*CAVdY9;uU#r5CsKU%;(E=41J}X_fOr z_J3Z$@V>mq^X1Y|NG1wWt-JsIJtl~JUSm3AqTkmUAX9Ho#R*C;oAi+c6Hpm(4d%PR z5G0x9(?rZr&?)hxLtIL61>X_JJldZ(g14+2=Oel2-_H}5y&fy>Dvfasg5VmX?Ae0) zY`KX8yfwH?3TrRI@~z(i9+T$Em!8QYb~8ORB?I@X8TEM%=$|dOjH;2wZmZ=GPNppe zz$@LdryLIxpX&d#%f=asi1a&W(g=F;UfP!?RU6#qzvf-|_Lo?q0ii8pXJN>L_cJ)i zIA1o2{4W4GK*qm>S7v|O(rUBceYNgg_uA{a-+sy6%Yn!16t=dt`XN@YJNESxsVt1q z(StLN`JtT1`MSElKm@KaeKXuNvmM>ooHgS%R-kC?`^@EYk9xjy2Q-GoF7{79x-i!D zYbV&0>LntSb#F9{oABn@$A~lATiuO>C@R9D&U6!5{Hz@tVtq1x&*{w$2b2QUy10&P zZz}WCnMIczeQy_U3jW_fCV$V z1i6WX0sBB^dh?ISak6)xM_C;|>>cOFqg5=0Ry+ovw8`#{^`+MB?P*Xg8t2+$F@0)J zrjoXN4QIP*vo~$A9GgKGb|5!>$?nv%4ZwdR`g2@Tl-5VJ%>JT#hl8H+L|Yhe+iqX} zAdt$)ZIA!EVYt`ZpZpI*3P0KS|Hj7eNTt=6wNzF=uuLQOORpYEVbq%L3*$?gUI{Y1}6vm!ihyRBi8*I^TzfqlM(cG6^F0aYIpJ3-Gf2=231jsQR zz5n(CsOQ-O@%>jmwD-4vy4_y~j5#seUe42Ww2!ufX<%$vv+t55elkOZQfEfO*FrE$ zYdC@fx!Flm_fy8>`-G#-nm8h{u!bl~>BQ4YBZx9`oL19B0lr_TIrk%jQ6D}IM!6rI zlU_h{6iKEnWV7ZZQcfmSvn^74yRvZk+-%YE+geSe#x;{dlA9A}*GVN)9mN-rK=V$& z;LxX<+@&*9a`5V*5k-IbJ?O+i((AW9l<+Bgu>lwxW`VIm!bxiTuf5vezyHVWivOmj z|NMVsEwcjn(JarqkM>2q|ET9-+tE4270iKB$)rWvf;EmPO`(^&Q_F8^3zyH&78&2I ztS*|9NEWm;$9u!NkM1{L*CM8OwgOTyn_jLL(hF>y+qBtYadz~|W7;gON>`sFU%QO{fvN85p}yg8gCy zvHreweoMSlj)QF8{h=}2N$wy%W!*h&4vY=Qnckq;sMJUUS!0RzuJ^3ima%BLIH$*I zE7RaC@htOcw8gKpF)CeBu|(y^jHmU)`T37>R1T%dnXz#td&Ryb<=)MJr~Ay|%xnTd z9Xp6E+`24t#qni2R|fC{PJ$tBh@NvhIvDlwgRPX2 zxD?ndc#jQI9z6xy>*&Ik{wy$QC+l6BX}Oq+g%G<;SwoT?4g>dNiVl z!$Xuc;G? zUj)YPv%uILWYpu!s~bM=zCC*(P1rjYt5S`|#`LCLn7zHb;q$U;z#WbUoRV)K(*6xR z>Kr&rjT~QcczFO^(ufVGA!nM`;T>A-_n6UbAoRPwwRO%mw`jft`L49UJGMIPSx9ZT z|H`!%51DFSSg$cWT(flCHrnfsvd+~?<7Qw|&A*4icBdRfonyl02c4lln6Oy?=>Lr^ z6dfV*!Q2bIZDLy2I$7ZFFH`Q{&h_Jdbh{VghVW;XD*-p&5taSG`idto28bqm7Rm30C);R=F*`?t_)oLD3yL^wj~<4{m8B!&LF^ zOc61!2))~Zyeh%8(Cn1ka%_MoIelVo*0$pOd;V%J=e1eN)F@Ys(E@rlV$8?s1seD*A7qQ4Tb2+7&rG4 zk5jd-3?`gY#!XDDB4gF)Sd4#M62LEC2)$#O#9rdqX9=M*aw4j?f_LXjO7R$hx8=wv zFg8qYgLt9%#kh>x8@ha>iOIaBH|lyjQ){!av$=B2vDyqtvMw2WM6Jf1td+2RGK5g4 z!3sGm(WdQ1L-Eq#vEpU%&!#qdgPVfFmRaM6eUJI!u+ZpD!PyOR%*pIb%!!7aY*>sP zKFE)FV#wEu5GBuJG`WL>jqYY$-qOj5e50E>T}Cku&9{SWn+C>)(GkndSV0M%+L@%2 z;7+R5*dw~+WJzrX=9oMeJ6o3xa%{TZH54rw9xgC`wzG{l98z1xyt$W{*tV1zoQWQ+ z6p6(R@kH~>!+W?%NJRcBJ>s*TSx|fk2iy~ddz$x{EeOBI@k^T!bU4!z=C}LCWfvxq zMZXN;Jo>ynZsb?Mld>>S)!T|A)gZ&&F{;dHsZ|DF@2#nM56@L2u1 znZu>prd(PvCQ<|1Uz!$zRX2n)qaZa>-$c!D>UE&txJ-a;dhGD9`|+}MmKg+KY?ubd z2J<1u;-Ym2fR(eM5PJ9gje$Rj>-h1Cicq|&b(fXW)`FR;Y(?v%fV>WGLYJ8eeDJXyZh7*=+drfD#Z2Uq9;nu=EP^Vo#TM%#|ty37epmR z=L9)J`Rbxki4&yJY+_-LBJJoxYDG_9kG!TjO}e|OymT-cpMr6+=>U%UT;(n++U* zQ;Iy<>H9gICA}p{wc)rN1_PH@3r{KmVY!w3t=<{Dt(Goktq-g7zwT?#`*LZQnx)>( zW~tU}i7x;3(X|0KUab!M{^zY_3iSN6>i^@F%^fMaI9yMX5I$3rpPgDGL60TJ?-;6) z0M=cwLYog(XhY{#?z}w^7!-Ol`t;1GXMp(GXPN_RKx`~mZQcsADTf(!J5^vN?<52` zSK+Fl(k<6N4nRhp504}^5?Kx{ElabQ0%`j*)&T$0aemF5q z>Ihez(q#N~1z#JH%}-CF~>OF5|POtd8u9`tXtJvpPB@y+{I@IlXVE3RvI2 zb=hxcdV1c?6tKU2YbU#@-kuD79o6LIEY(zBmtn|y>gw5(RFfQVy*cZlfcRTxU7v@nduR-;jB)}adJ`Cl_Nnk$*|@1f%4lgp1Xy5Ed^VwQYOUgg zb-b=zA?wy~|D85fXK|~1DJ3_HiXJuS3ST_awi!i(!^Qgj(dO6A5&Y^57t=Fl(Yb*f zfu8~y#b~J)2>A6}W~(5Y)}rG8z2EpN+26i(*l)aVXH@YPBC%OZS$%R&BXPWr-E$}3 zu3GT)&E1`rKYeFz>6%zoY@*^-lIu>su*EA)Uj&5m;?3Lb1awrZ(`M%Wv=&dk&~<0> zi@aEIl|yB#GaYRg1KU(A%q@ba!e#9voM^&>&BN>66f+qT2LpWGA@VVDfh_W@=0)Js0S8@o_-IbP=eJ1gOO2i z7R=wYl!$KiaI1#k#|{d4Kx8%j%n6F-S64$@5~9$qh;2L-2MbTk2u6pd`{I&~8MDg@ z6=SCain7_n)Crj~bx0KQTP@x(nYWsARs1A+)9Nbdt^_vPO@to?F3t=_dGX21ylTbx z-Am`hspC7sw~=vQ$HChAviUeMqR z5A{2L!l4M=V~+COyS%6eH$0^7``xN=1T160tk;4kFWeNNaWW|H?q}ZT0#~1>hzGAye zV7n`9?cOY0aAelqVXNm`>%min`gUyBVDxj1MyquV+!m?}?g+aF1l|z5=pIa^sss6_ zi)4$%rNlU`&d*y=%NI+Fjm<)l!*{Y)aQ>>YV8uaIUzn@Bd>LD!F7(SvNj$t%E4X|W zcwlWeFaN`(%YY5RlVDZz{`UsvlmkNpCav%K2Ks>6Bekr; z0-a~LM+rYASwk-#xF$>Y?hUHp1jQ03=-MkJQNGtI=(MsHl5jX+!=-yR0Gnyh?fhwi zA5S#iZamkjZ|4BD;Z?hqV}lW1QRtEf3s+gun|MBd8blga=G5tHtkg|uNGznm;OVa3 zs$N*>$6a?sB&0tp6WmE*95!Qg5||9F3>5jmVo59gmB{RDlrO9~jfv`7L$ z8BW8Jf4W3qd7OhwRLor(B!N@_Cn1F|TtbL+AOyh^q2_x#(4(MNm|&BJ1|>psZ+Xhk zxAqgSe&j#=0~{$e4O=~kD_q|+>A2#jni-9&!%TXtS? zI<+$AM zRVr4wOQpQ9QSk}?F;ez#S;fCs&DJ=Qoq`AtSX^Et9;Yz&c$QoUA&i@f(suW9Q}Pz%m8`zX4lBjtqQa`9 zLse4KSRGkb`$)m9=Y(60%FyPpGoA@qmw>IvrjlXTIZMJQkZPS~$ zH%4bzJuF~{3Xf^yMYjoJqIb9PV+49We|O06+w^70t^lT=A2R^zb*4Y*EdN%A2GCa! zmLIrX%dQHcNg1(8;{Be?mDH8-ChzQ)p*h4TP7*q_)5V@B6EwP!0`qJo5hy9&t2bv= zX(Eoer;n!<79LAWK3!gFR2)iO z&y-N0WmIZFc^Z|;NSSgPHCO422Z(!Zd%$+t_Y*E`r>!g(C-hbq6fplW)X`zPyJY!( zc_dw0-&Abg@q^6f;&6g!fM9zjEn{`uS4wYGYNdwzs*Yo;&r`YMfAjPAk{yVQudxz! zy4mtmB$+W%8a3E25*M&;efLk17@8Xv9-J*EVwO4~VJIoJ{_?@z?ui5Lt$J4nQFKz0 zD3u)<=tsZ@IIZtNxCoQ{r6D^)GLvu!W0&v6WIK+(Fs^!pV5WP@vqjU9ZksVDF4%Q{ zV{Qy*AYARRkN*btL8G1{yI0;TX}eYcRwR@aFin5{^{`b?OaunUjR@+M9ja>7PgkTk zSRez5;%ItkTjq)x9oW>JAK$TEn6d;jZj>k0!;BF2URtqWB0+YT5mU+TK4*LU5zc&T%- zO-mv)R8|w3Nc1nc%~e%|dayCU)APW=Rr4*KU1}gnH+R8@u)KW;0Y3gegL^aD)j6tN z4*2R)lvnCJ>O#!wYubO*-R=~AjYcItDVHbaBL0=lSfr_AJmoYV6k_EQQ2@8xYH;$H7X7iMeSK# zuZ7ieJ3uL4P!mE*Li%lEVz(bz)s9RI+kuNy2h(YVFkD@mq-Rps?#=#kD`(&EMhSE(%Mm$O`Z5v{JW90hvy9fnF zF$^h)(#elaa&ip6I+kUXrUcEkG0Ye%-HdvT+!!kv5dB=bATog=V2BOBl66ZvL9bRI z?GBtrnpnLSU%s?18vxgr`r4_?&fd=6e%GdhJ!Le|OVEX0$Omaa;?5Kc7zqqPWcpks z1JdT*je3pTeW_X1oJ(0sX_kMZ9(aRvI-r09!l*12i9fq_wg7oh=c=awx@38d)aiD1 znQcQ;OzF~I+7r;@#Fh$sQ|?)i`(#JAw|8MWydL4@)V?eB7r0C(4f*e2R&+AV~^ z`qi*Ct2Cu7{_iTY&X3`4*=y;(oss|dxjFFSQJY(V&{0mftYdara%sZfN(i_ix5qPM zRMP>*R(=?apCUAezAntIECtMStpXx@(?1d&043euFF6NmbB!iey)zklZ?bBtZWLHp z_TckSSSeQG*)fBUR1jnfQiWa^*yo{8JU&oE{PUkkV43)(3R~5E+ES;`MNqcDRuTum z9($@Hc-Yx_D41dQa;a}r+)_S?&dsFf1D}`Q*SptW)$1%S{%Ha7mi-CzCSkA%t?5;r z_`AftI2>QfMJ?TY93k0L$l=@r>>k{24Pk3J46x0dqYFK?9cz=GaZgQgi$o;qj^Tby?c!J%)1C8fdJ64i&$fd{!Lu&-)Lj{Yptn&Pb2pG)n4HA zI-c>T|3QNNy1VnY_Y-;5*I7Wnt_v?Tv~p!b3G!h4**|Dz1Xo%&0}pG0Dwz7ucq2@! zyA$nkhjwu!I&wP*4SBQp-C5-`XkRgnCK7qH$EqkS3fZ7p;sbkw9c|yLr2|_R zX=620Ef%zA`891Sg6hhp`mEGs?AbXkG_rH2X#VSJ#jZT!*^N-jZoT0M{~ie#@q1Oj zP>mLD07K!4DF@PIdRqv>HDDAF?Lf6Yoc6Si>TDeS;Rt1*rsB`SPzRyWb{4-o|9K15 zH(0~P9gnyRvLx-VX_k%Wn1FGb6+8-r0>vCcDCOm0AVe$&EtXehpk3N&6a7?Y#`K5o z;y`hb{`9x{FB20DIO+1N&b^Jp$dex&h-x(YVh5`ALDf}`QO7Ti?F})AuWRiJ(Jp+d zy;l>B9bG&1m6!EC$9qQrFR7#M}$^4xwK&nUOQ^T%rzbXa!X|xdy?Q68sZA!h@ zzpQLp66%J|F1Xat`bo~R!9irt_ZMVgy&{tTYQpl6hh&TM+~G3k394a*>M^ZtcmS1J z<7-S$Scp8?v>hJ;!owkPa*!y)IxZWU*gvd*>>gaf{wt!OO=EAPu@*W(UQ2tHFV=M> zZJFu&!(cHJJ3?WMif$2C_Z#m(B-FeDikfIq1kSE*Feks&kZ&@uYFNq__YZs0i`h_z zy4aE(#_N71(n!6Z9?oe`+xQ@*Zn|&z&{l)&V zR}rj0USGm@4R9#5q-knK;z%E5=9E6lni8I2mc|@~`SZaKtz9S5*5M8}J}5u?5FJ#H zL*3&jTCtv6J4HZfS01i)Q?|e#9|v8lFI1ydn0>|q@eu*&kX_#iofCdrI>j8vD&6*| zMoNtm!nl(#CGAYs=7AZ`Jm5Q;^a2;@(JhCp;frLWJ7Md2sCrc3V)u6%w64xtmF8_M&-Tyl!^VsNLTCG}7kKmGn>iokpdWyb!mD!LM_?33X@cIml%y4|-dJTa zfLS(HSd`^fE|KQWGS_!qa9|2gDz; zazL?zN*q$^urf!KJK8G_#`VhklF#dDD~iWo++G}h%WFFCuXjCTF{V+M9!+$5pX?uL z0dKIeg%CXO&?ApM@zgWVz0m4qk?2)k)){u#kO}K8;Bx)acISWX+CPfA`q)%3+&KSE zW8#SMbyS$|`2F~+RNvnI8z|JZ-(@{#-I#}EMXFLw$Bjs*n3Dj*m2xYf08 zRnlF9*hd)F30pze%9fUN-&l)KCY>7G($a}zajwmF1U{_c+&Q}IKQ0_@OLOx$= zSSLTp90W&r1kpX<8fYL&a;5vB2l(K{@QM>LQB;0$SM6oCW5?nha;!4fa!YJ6A=-25#x@(}^bG#Zh%^wU*S z@G9Dx7!uLYI2npSDIb(_QBPmK^>8%lm3u3G38c&x){am)XdPkR=mu-SmzFi}M(8sT z7xFG6zrgF6k4ywP>YK+jmWpB%jkioqPJ1bhB9gUJWD9H zun0626fGIF$Pwtq5q=5G-n6PiNY~~}78S1yZV$v{Mnl3F84{zG>-)9Z@=}q~D&mi% z?fdgbisXZAJV0CF5foJf1&8z4Tw7ObFxmxB{9#!(cwUa^)z%n@ewmhVbr+yHUqlcv zXY`X=ABdYLyP1M@<%=k4{wcm)6 zWOF<-Axwro08>LLLkDbv0g&!|fsKmj(E9V;E{^+Mq?{SUjd~O2TeXTzgIgZ$K#b6$ z_#ZK0u|@V=kFGhw544=9im<}+wVZsufY;tvq7995Lx60e9@%;(-5pI9)GdD2Ad-F< zbqbbPHo>8{=r-3|jv_(|5hl7-S9PDGpFUBqbv6U^ZGxVU3K}q)(F30E)t1pRSOFNp zTZn?KzynQd2jH1~BJ5e(lqgzGSVa`zlLRo-Hh{-MB|BRBejm;85*{{O{1Zk&sSxf} zD~w|93-_}j$&kt&<;5j?rui8{vP#(tZm&(crs+zd{a!Wvc|#NnXr1PO-Znw+MFsQifM3fO_*=Oh zwfG-u^}+pU zY13z`W&fj{<7s2(Q@I04_vsJT_c;u(KZJ!f23O2KD$a?X2Q3}~btt#@PZor)jK~K& z-LtEso8uVi;p)Nl-|_G4=l9kv=d11C3fiAJ-bK{3+?houWZiXqP78J%Te@ujN1a;` zirHhp3Ego6=!+XjzKes~MpB4yYor!V;vPY5FsQTqJmUI^pGC&4D$l>YV&V1fi!i^W$8WX8(HL9&e}t37i0$66WJ%(KXQ|G zw(FeNrLFrY|68%jf?^@CkXYnf)L67x^jb_?oL2mzc%=BC_>VHR475a9=2>bicUm5_ zoVGko{i4KLv8@uV2CNQSomDO>pQ>QiSZkJbg0QI|hrBdr`U9aP{Oi$>H?lCu-&YT;*Ni}&!W5TAvoUwP?V;f}?t<28ZGj5;r zuDBx?<-|_z%3au{-RV)!sBI>1rg?_unEf{UUG}fIQS)$=YeFldn^_6W)pAl;V`{RPI#g^xevHPIS(4Ryk{&>z(z^UCtxU z$DA)(Z&{yPzgUI)4;!dq309$lQ{X`gD4+tAV22Q7pcl}Wf8!nhdpt6}Jo)zIuJ7|@ zUf^^6$CV!jXcz)H@ParkI85RF76rwTHY zkCJqeBx=N5G{qbbqadb7b?l2hk&TsfBu{!sHR)`^Q#=)OW_g~=lqH{JK~B#*bI)qu z>g}r+2?YNNVf~K=ED!JvNDL^3;-F∾Na#*TBTU(!jF?9zmR-!C*+RdvGrd0&{`| z!nipr`K70{m0;mZfs++H&xu<;V;(1SE|+r!TRFhJOmm?gm8-v%s6s7Dh*U=6WlK&) zC>hc(wUUwchV19Gxwd(0Le0hY-uAsswcmCJy3hWX{bWBq)Wa7MBv?Wsi2sRLiZDai zARG`L2q+>PfkV&{v54&U=V}XL9C01-f7ubpIAjTO8u=7ug~Fk9sH^B8v-K?tH+E$tA{R|y7rfMm>)3O>5hn|XxGC5boX2=_Pot%TcGfy9LC3I_y~ z6ETjn6|x|L=TPnCWcZZJ9w9&w8g3s%v=2fS00<@u6cWy^Py{RrY?t5w!Jjm;{u0CO z6R%@5R>eQqFP3f8xPWJG`dtlPnnvc`7$0s2{&Vf>blg)Vp4wlw{Tt9EuaE_v@R0~k zANvIoOQL%88Y}la@W2bbGVuK-)=GTz%F5$oL1$nN+)6vc;bHG;{pA?4!)>uR^owM} z|98H-NSX}X&`959c2sEz=NJ7s0461Kr5c%rzYt6JF?6aopPF+&a{PxbPZV{?Y=^SG z9dJBntAABsR@l$4-454=YibT_2oQ1hErC2EO_IE*0CDf_wEk6rdR7gW_otm;Ns7!R zyK1XeWN@8VR*LKteIGU{r>@Yrw6De=4*kcQxBz|>XA3!u{c?Dhy+kv;I~GzPvgOCh z1#oCbKrm)zxMtuw7u}XC5Fy)i$*RDRv^mYBSVc&tAIu8c$0HU zdnPxrA&RngA6s*U-?`_k*u~9^*52^PMFyB*EvU72jV{f;)el$~rUXsyKh|ECWnU4< z^LC%vQ?gpf`!prC`kM|l0g34KLZsVFLp}7@K-a)o{QvN#U+lXdhqgYZ33Pu?RGw++ z6z&IpG*(IN3xN~OPlE+kKDH?SiN_S*!l>eJc!6R$p1=BKR<(#HPb_$Ifwc+_xOQ4o zOax7V1S!`c0(DkZ4(%Q|J@88lYtzl2?c9ass3^Ywhzo8u%gm{E4vXOy)7ewRwXv6E zIWoyZ*6(NHnxSFahjLh!j>NXoM(4&MkA<}XzS|%~82|kc-54u_ls!xC(QpP_J!7q& z-&}6@*U?P|eD;bHEP(G)nv1GciUVe8g{iZ~M9YCOYTUa%kAmlT-fkS;|qOb}^wqOIFnEBb~&*M3fbZE~b?e8n!TSNsx_il^~8#Xs=4B8w{( zS72S^Rjbm(EnQ7NZvzKJ427^$9JEy$X^X5x|7RD#CGqSr%IBljMX)lHO6Y8{jqSXw zBRY_nvuR;s!JHr>Hf6gJyHhxaa^&Z8jT9=A{?Ry@f?P_xKm;nCA;)aq5XBuR6T>v9 zt$V`nGVa^+!Rves5om~1ac=p)L$5U|AqsU^-D}e+sN!#rau)||N3r@}3gQr^imm=) zlh97Q&OZMB8!3U{w?q;xgfFJ*%E*cV^htt1l8O2!7rG+y8|}A=td4AqgP#?ChLMKo zD0Eop0O@AfYC(q}ngj@5j)OqP0X}ayJ@o!Wxdl+ws?xBv-KICSj51r;4X_I1UYI-+kute1`I!B2{wVdPt+Egjky9)Uxur5=7Jq#pSuxTQJ|riiE=$D0RmQyRzX>KUEdA zM18QdlJ{u0WwHp*_GnBAh-_29lfUM_dGPx)Prq`}%_$uOcoM_twG>3yppV}iL}R2D)F zFv(AGTZx9x&DaQajukV)cOSC)+#VZauI!3H-2bUlKAkM zrten5b+Fhp_U1&|5LhU3kcNObaa-{$;z-_W{YXANYZsUhXQKv;{&G0u1rP}#d6v3N z_^*L^bIxDx#$kj|eKsZuTMbLG6)i`mJ8W0K!8gPVjXB_MYsry4t>`IaOxj3}o_KI%r(_Vp=D7ik{ zf+Q7P_%PVE-;-dM0g2shO+W8~Tj4<)+lf5wa6P9oB`%a`YZC$Em>k_;BU#4G!&<{S z2X@PSSqlr%KJc1uF{XJNJGue1x(mi6f*{t5Vyas^NWR?@D^5tQN@S#%%Glm}or9Q^ zF$k{PHM6v%iHQ~AG~0_`Sa0tK`Pmllx}EnU2}G#hCE}W?Jr$;8Wij_T@69n^X_N>t z_Sm5F5q%O?Wow<)y>bvr!69IBM>o>OlAKrwcK%M_3 zpo-s~xB!ln6$J6!roCT=5UQYn`a(@c1+@{*ezs_vhJIq7Isw`x>e zyKBK?eby?N3i<)u$p6IyKs3=48|$}HKn*WDtJXY%=r*7)LeSFEZOqi#S^?D%>x1_| z75<{vVpRKCm+xUHl7&`d6bsekyp4uKXYuJ!55dJB@!98RbBeXqo3KWgwyuu)5F z9$2x}Tg!_!ixu&E9G1SZcHws8u|!R*Ri{}?&L-))vUkq&cl^G^x^RpF>LLWTFbTP* zTx}*-;9j3~{hig(*p&1g+Zq~oNLk+l`u2|(|4=EzpEPo2(4NU0f3B3K^V0EWt9W*M zYBW~5i=@Z1@pZ>-3^G6yC~3{@5`nQ5B<&J{@`z*$_@i{bEIyw?V|buP4^q2hv`zfi zk7=`6pfi~Jv4pDfjeYlbnHAV2xSP*N_Tc%OvOyU+Sdwxm5lvc6^C_u{9Zm4?`0XlM;J&ifbu zm&s3iXc`z$d=dp@YyK_8Qb{1bm_|`?kJH}ps9J4fpk-!B${LJM42OUmmr{$k?GWm3 zpkNa`WX5_bI2HeHv!`vK+Oo}fG}$>WelDrQ=?0i!;{}B!Mb@7R1f2HX==3O~a?xzg@35~^pTQg429Qm%jk>G|W0q|9!S^ot@EN?J!Zjy$A;)O}Iy^TLEs+!q6E24_PtEzQc1Wql%&C&b zQ(afeI-WnK>elgw>&>m;_HvjF{~s!2&%T4XfN)*K${w-jdg*0j?CEPsWI6iVCm})M z69DZcH%!BWth2Bi@mO4Lwy9i{V@FB&u$|6FmznzZN6ZrxDoOCR-lDv`=@%*eV5G%j zO!QJDUE6|dT2jGv;o|VB2V*5#VjUX@Xim$?*ppN+7zY1$4a&?{N`D(!lB#Ih z2ID54hzDFqq5Pnap$_hH}9goO(b8V-saSg27||S54H7^J+M<4Cm;Ha`Is0d?IKTp3yHlOy}ULZedp~ zNcGl+bOCbbx(gRY!0Pd4INr$6i;GkqAkNAMGb_$%@ z353$29tNB5BsRw0%tu`Phwx=_MM?kA(R31)@HYrRJ-VI(_8u9fjXeb|mxeCP*w%XU z?4sq!as|^)TuHRsLtg7!(UJ5Rd|PW#ZrfT>?JPw^=gb5plYxqC2rrMQt9InH=AGJU z8;1@Gbd%xC8HH=Qk~Km*|J7g{(`8)5z#?8av)mRYRwe}hw#PhDk@mFflFq>@F!UX*LjLobnk-nGU4hUN`ns;E zlU)-zY@~a|w_QFs3)&|&l@6E1a{R$3OfI`pzisOGgA8x3`<64XNwW{Y+LoeNE@mVd zWK^v%X$&P5TWor{Q+Llhm%zWa`WfUhMqQbm}b3g~d7Nuw1V+EexvRlqb~| z>z6F@?+OBTL1|9S(VNi}C5fNJ`$TYEe2vIfWt|8wJpkpYTH3_hOPd9G+k7k`eMPch zZfs%Ldz9Oe#tV6|@Ap=)pm^C7Tt%6Oi^H%R` zgd0RdF_c9nzKrGf{5bT5X%~e`jLV0VqADr`3U&<u{bOcD;@0cD5#KT|BLTf%w(! z%Auh_iVeC_O>G-&Jf*ftt;*@KT2D&kspZ_}fYDgdKO; zYlkwI>FNnDMa#6R6()?Kq|B~9(11;I-mz=YtKI1JO~YtjJ*SN{pBDV~L`FbWYBoP; z1B75kiarz2HLgsiQD+YNyzS61wm^fQ1dk-X!N5lXWRD}ojnvk+#I46@FQ0t`rm41v zkp#mlD3s{)KxJBdvvwfiNhSDFFqBvWssCPJ4Tw!C=vTR~Yd;MM4q4*C0pZNwDtKnN zpPtAN*x=*9j$54sABDa-Nm#D+pc~TA(d_H_sAx`H_Y)Zhx1{>{icw4{?#75>79UkS zj*AsHV|fq)VosdxoZcBYSd(6Ee=-a{8jnx13s&!F_${ztpElwD(Bt-YCSf=z?)8Ix z;;hfQ#0%^x)7~Hny8858lkRFIyMr^jX$kG~xcgyn zcJH0IrZ7QVZ9t*12M?_Ag-4;h)!J;nRI-zys1Oa3g-3^!i&(Fw&FzfF(R0 zzUpyXL})FjXhLSUYQ;LmOwnU){f_n%I)HibK-_)j-~$)K1nT0+emH=5+%CkW3wlJ} zLSokpx>cr!{j)R!d@C_)FrCVrd^E*~#aI$}d7lUExWf#$Pu;uwZau4Rsjm&{FntMP zc9pbDXl@LvIu3pbjU=?vPIIA`pRXauN|w=3@PR&0Ib>_7h6ct3%tRtBV&*OzUC5Xp ze=Rsxij#~y2Ux#T#GBF;HAQex{>|0;?90mZct3nv&<&DtrEa*mzZ-Rfv;tu*_{gK{ zEs4Qu{`|Nq##AVTRR&h?uvN?4U~>Y8t&n2*iZJ%@2P=>uKiKehsDwrBMq4-I*Q|zU zK@u5##kv~?N4)I#6c`d;Dl%DGMs3m(6YKEU|IRVFXGx7o0!#c$7t6`nOm2K@)|sM) zphFz{%&9j8+H8dDE*+T1z&O%XUh&8i${>*sNjY0e&4EJOq5lO zZy0nwkyBt#D#H)r8ZqeWfnXeT9~3TEz%IYNyckibxCl{-p`Ba)r$NgG7=j>uV&s<@pk6eHsRi%OQuxiu3 zhBMliOG{;~Vf!>kBdy8HlyjLtfRYfS=H^^Ry~)U(55x9zuvLkpU{1u5CH+=+fTvN( zwL18GFnOK6VlD%P_dwB%hfiPc6oN<}nj-bW$Wd$FZ3|mEKxl_)W+5>XUNiA~k*gbxBYJjKCx{omVe0kNzZVtcQa9TF&uZm>Nh?O8 zI;jY*$k#;<RxxvR!#M`BUr{MzUo~Z zT{lUrRkI*z1PZ(Iwg|^8;ImFBVMx~7$*y7?vTE0RP^sQJXN2H~h|lzc7~9fH^rxLnrjoxi=e)7g`G*K&qeGSBw57V;zx|E!nf)#@#x+ zQx>Q*K<{+so#aOI_grRmQAPjm3XY!1sc)O{Zs-;#Xp6QNHBb;|C!R=5g|T|FSto}V zlWCqz(&EE^A1>U4XkO>7^M79G)?(^}_I-g!x>2PJULc;VbmF7}1?%z8i@DU1sT_tP z4bqt4QWHL(9)x?|c=(%gzcyeRox1WrM6A2MP1Ow_I~152L2G(~K4r?8DVf(@>jdDgb0IG7ai|`$11P!RH@g^pn7xFq9y)BQ` zl(E^){%U?$Bby}!1F~~<972@5?bA|dV<1ezXUOl=fOF7cHkmrz*{F4gW@#8wQ#dj+ zTjw!XC=E7_gh)ENJ2&*!1hgmV=zlmE^a%P=w%Dpz)fe%iZs*Tv8L7Y zrWyafukI?c=z1|M`AuUm>6lu?Y4LKLwuZ}(ol+^Nq10zMtW<` zcggh*UzOe!O%qTgI4prgI@c$&*+LIm{Ykhx`8e*0!CSuteeNG(Qs|!dJsx-AK`u4+ z_1Z*lzZh$PE)3dnbBgy$^8eZ4=@lamMgLXunynLry}rJ70(TmWa6eqfWe%%h-s-cS zIfJl>2>ju!5Z$9OHoBBy4@>XjCkG?KI z1HXZQLNw<~0bnvAFI^E62Ys&$IbnC3&{TTgG&$zPgs;TaUX*183gysCVVI#G!zJV708N?(n?R0+fjLDZz6 zP3fSKvqEZoi)$_i1QRECxS>Lho37n0c*Pi={uwXqPA6y+gFifZw>5y5-XszUvrwRg zNC+aKu=j7$O0~{A?o3Dk1Gl{q`6p3DZlmBHN=6btcXPjk$Y>SyZ#Mn2Ex3Y|G55(Y z>NZ_@$TZ=KQGJ@`7qU2fg2$t}Rs_n5oV)Wv+vx8Tj4kvjk-l8^-CU7Z(Q^zE_jBlg z@zY{MvOFFz-@2U~(|yfgmzG-}>s)NWX34pc!ooaG95JMUKZ?eDyW(4`ku@5I8(~u^ zDcMuEA?|Wo>oWR_ie_X9U|(*`sN{_!k+3>b$wXo3>belxtFcV`nuE>;Xs5RMueFOFze2c$6Bd(=>`l~A8+cS-*hX<&=`et@73g~( zck154O4cJiH~Pc&!sM>Yp@2?F33Xj1b?Ca@@x{8@^sa>jC`n-hJo%b&Nh-hAMijo< z_i?9*BT2_aFyLw0l0VtSG zBA0J=oFJg_vcqKB?EbEHj-os}phFD4d^NZ%{(>dp8L=-SMsk4{fNP-|9zjwC!8W@yvJGKLJzLz-nGDS6= zwV68&9b^u($G*w6Nmy-$W|zKhuzqaG{#0ej}Xa z&Q$iP)6{+ID~-SXwXQ(}zhRoFyBhRdDvA`2`z|$Pp$=PIf#L5Cm`-`oFy67s=Sk;X zvaZ@;Ycgo%4`8&nZ?xH%8T<+6-!kN^I>&8G+B^;%5X?_;)!@P#u)M7phdzDq5DwMN z8(2hUU_-@~Y%6;#FIB_=d1>HdYbiibSMYWvaY{TyHa}JsVQ(0Tb?Eb=1;lU>lCvEI z9kK-)WdAvHC#!%6;K9G#7s2YLhBNR?fs=<~vOob5f{YMKs6R=+&6sWPvDyAjq235} z>z+;iVqAVF1Dg@Ne^yNLU@W1`2np!Eaedzth){^n-MCTlpaD%LnL7ukGoKp=LKg6O z5zuCVfDx|^O*Q(VYhaW!3@nyF+3iv?-}egBU=gjeSY*CxY|7+r+;v8Q4*G6054g=Mn zW`b<>cvqaQEUGnT7|2))ntG#gk2<;0Xjea7uVYeJbQDgIURdJs-h?V=FhodAe6`Y2 z6LbZxwEs2fKP>fd}gmst3ExDm-;EV(Rsf&j=Qr~2T~xZhlORnPNwA_3-3C# zk*Qm4{J`x~DhzbUp{ammj{~1JCj^nXI3Nn)8p&zPoh*gNl*--E_?^aue zyI65#tx*A`vg=)zBd*^|&8%aZzDNL%y;CSYj@lPjt7$bP0=!%tz0lOMwj3XdbL9E8 z#z2cgX+a;?Np+KkfgYkn2ofx`Co}gm4q?0f)OwReEwsMjUU-(mI}Bm4$g_}fFE&&w zP-PO!&$5#nRXUYQh7cTAnUzKQR2hAU0-b0&=N!zN7hF!|hX3$f;(vf&WKX9C^E=+Y>i9^nSORRG{Xp}hY z3%aGau80{*_*3%tYq^4D2Yb?h72v4Sx0^O(L+fToMuxx~-}MAasT@?m%uZyUWf*0D zPL_dDG1it=Yk&lQa66wA5BYvlJ2aT!_7ou7(5)iK zocHTDhyYFdYvV-20AI0J6U*>CJX}tM#`uQk7qKwO`^U=W);lNz2gPT=MRu6TW(1Qo zFm$%^%mzV4IdrA$B!Y+j_KpfQQw$r^q!1XDwCb2%F0`;tHQy#jOzBj!;#?2su^f-* z#qQXl_|pHxsKQ2;#>OTK5!+-4tvD}|Q71MtoZ25>$-pGdX!^WbX1sF={uLpEPzGW50 z099fr!vxd~cfdmqncblV`{HF;buXP86S9gYsjRBCzu>w?KOqyeLc3efWrqAwxk6Gf zcD;UfXOB$gXn&%2LNNL7_m4N3+OVmew~|g|L7SRi0BC?o67i}Tu>Br-W8|;swyZyL zWW{cpRqQx@&JHQSFur%EjJu-KnLKXIN-WdE2yTmQmcT&Y@=7aj>n&T%fNRaZ@gDEY z?&R#@`xXlh$<0<*#LDRe4S!Km_GQHdd?Ipn!lPLt4?|3eDcBb&Wb@}lbaRuu>z%Pd z|J0sIbR{CT8dN}&X`I{{j2GdjCOOjz(ZSS6UpcW#7IDj5Pj?*rIn=JGA`iDpa8IHm zb9NSX$}OIOl3qM6$QFhPOeNM-2?T~D^kMmN^CURA zB@h}Js*7ON%>-y|0SnxzNwnIpB5L(2lVzq}4#vcw$7ST1wD=6t^>y}55a6OBJQ(1{3nX*yzmnGJJNV@hzwiF*$*%+(6Lg(bdX)9DU;Odr_U z{hC=VXaCG!CWf&V6$fMo4w%N*v$*<1u5W7qbStx{=ZrMJ=gYCvJhU&5O`$6AlRUCx zoe^(YnSag^IrwA1@1LW{F)rw{{59CuqksDNv2T)cUZ#Am>!;8lK z_1+wc)05#qVQQ%Di%!!d*ClabHanNgWF(N@jn@4%n#tV6e49Uywde;%1#8xPyMrrE zRm|~B9k*O4a zHMHj*wkL^??clvTjQ?{nb%kPUAQ)eI$w7nn2_8RwtUXx3w_7+MZp^8y=?4BS+)QhL zH8>4PrN8ajdSm9mQ$hWJwxQfka5JqZ0$bBnc!O)3CFMz_VP2(loLB!=IFVfGll!{_ z$<&H_x{PW#1A@41aMilSMXoT+BUU9`8(e#`KJPv>qS4y+MkRECJ30OjTUud}jXzom zJ?I~J0zNdAXB+DKAtyo%-DB3veO}G`Lb^x~fe*e=FLeKRr^OQL2;H!22&+Lfd|5sh zff1>husg0#?3qi!G%SJp3ZIwF4P8t1>4r-ktf9Jsqrkq!>akHNG)m%cR?DqgT*ano zFgkr^YSs!Ch9)bRN~NhRqs9+1*cMOQf?TR^q;;dVxePq5+~+J^)nr!7WdiDVj?aw< z5s0$J7prym4+Pyt8X`BS>S2p!PJ>azJ5V{jk9PQs50ELa+PrL)2(?5cob{<;XtJzG zGI7vNYi*0&gDU489npu=JyLreR)m}m?Lw?>a<_9@hlL(aMW<3ptgjQ0%z5wn>{K=F z?L~QEUvBs=B=ztEC2t01CjRl>1<)_+p!_LBL4Qqu)XExu%^u$Lr~ zh62AhV<;Ea3l`Mta^79phzbZ_NuhK)@QD@uvubnpDrdGI#%>?`l@SJ-?v~VBu?#J9 zNqK1rJkkV*3b9{9&Diku1=hI@&1zVccV3L?iC)d4Vcy9Xw)D}4!+@<|?i+Ic ze`YGK4i|bwbU>cYC0Wv5BskNOXJ(j!lvj9Wa#o}^rG-TkOS*3V%!LHOSPM7t-toXf z1|@tD4%oeyy2_S0)G{enyXu<2PV4t;HB4>#NTXGZsY9Bh;~9}dc5EXu!)j>L1EO-FMKs^xne zl`AnMKrzD0{;``0`Ru735J%%$3#uli^$cV? zxql&UoH(8odyVJW_X-n_42>#)+nz+}IO^<&#rJh^TJe{S8s4|~=w+Drx9_(XWLkfY zVY-(XTK8F&SEE3IKeguayz!DGH0VSvD6Mq4MQxnVx1b{^dRw86(LM6Al$=+M?JX}x z8(pDx?n3G{lt}2Z_h1QZDe%5G*seE-ztU{ZTBkg^-MMJWzuuc3{qIF5U08j(`d&Ki z{9E^+#Wx5^)phwrm)tTE3k1RkSF@m*!KgZY*RX#s2zM@5qKev_uib6+$fi9dEUpwR_6LJ67{m@1!B3{tGZ8-Uly`^d4q<4Z=9Cfc`dYJGK>YsdZCg^9emp1^F@o-oWWm1^REAt1)>1-V@u9@ttiAxX8iOP3n zC%%b9PhAh2x#WuFqLR!pDaUXdlR}Xl(OMar)+7lf`wO)jXNjPWHH zUnm@=kpN2e;mtmq%K(SNpYZ#lS!Z#NMo})W^iioLEVWmI;8yOVe?JAf$HA9$*t{+nxCOWu$Cy_CnM#IVgEP z$yXKD4VP0mY~hDctM;2-_Ug;4re#H5>MOn!SP*Xo0yD)}!e_L7&C_ThuM6Bv>q>j? ze##@z6h_k(7Xk=*R9i9f(r^{51HWfr1Y;FhB!8E!d$PduBfEV(#{iTf;k@1UTPC~w zoz~mZvyS+G%stuMaP+T*u}2$oK7!b$^yA&bpT>W#)}K=-tbyeed&q~8YywEk=kYjA zTHWM)ubnZ*ii?edo&~8uxj42%THA91`&zbT*JZJL$!22U4l!OZl@b>Wz2*Z(R+_Q{Wi6rzP&UxlC+m~G z>08M;gf%Jx5#UY)Z`ukd@J)%(lqu^cL*Tu&%v_86d8BkY1NYtUc{J=FfO=mk^>4pZ z%=36ztHFK%`KjVuVqNkQQxplvFg_NjmD49gv%GEr)t%6*5AKthTWsq{ZQoJk!aRpg z&3F!E?B7=8sX3RqHBRlf)<0n$i{Rns538Q$AT=(6VLO+DNEJC8yVpVvxmE8L55TSM zzavDq;>~#=2u4>i+)<^_jmLY4_jW7C&+3+5nUgp`IQH@n9BEYw0SLw$A3l=}051Cc z1d-p!ED&47c2R(YAm3v{sCT&^-~ia$W$@A|TA(d@SBQuN_@35Gb-5rTHFgMr!2MV* z_eL1p&KY+5veNr9=B@)A_-x;F5B$p?7yFPRS}b{@@H&1QR5S!V>8aSV%@RS!M^l3^ z>-=hH@VOq}MiuDqL6t~Zbi7$F;AU}r4Vh9F45UF5{$rPxCsQ(QrL0&mEmCG zlOc=wlEBPt=x!}=`Ln{znR%I6o})@M-H~~GP0b=&p&bR0H3x!tBRysV?FmYbi#FV# zxoAR0Yc?R#hw!+Fge^alQ3^kW&1=b%!hno^Q{k zC?FKU{(sD*T{WhnivMoJAJ6(g6)_+xIlg2YhY1oxM+3rkiDy+y4khH1p6%;w!R=y6 z-hxzQ{m1{2B`ul!lS;e)vh64u1|`r7yGI6Els|U*xqAIWki;_u4)+|~O z=<&YP`5w4kkmNsU$()71{w+n8;OUmL;F+7l4u^+t`{(d;11kUhzW)x9tJPn;umcnp zM-lcgnw{y&BS#khlz+PR$QQug@z?3Ckp$#@;J(*@o??5OY|}@pKmMci*S*{BxUCNS z?uoCH=R9=p5B>&7k@$YW?xvDIUcc+_RGjMi5rRI`msEcmPv=X12zuqY90!oAyPzx6 zEW!70rMGO+_niB|6QJ_Gn7()YiyimAsYeK-iZn?Gk2EHHI;&H(zh8hJE4=iE_DXxG zv)$eq|MR~ql50J+eG4rIK!1JwPV^{zAySjEWOY_<V{|DNav){&#NPf&tN<_PF%GY#cc*Q|CE(jMoxOt3e=%1jNF zKO3HN%(4z8tX8{noLs486z=rW?kJYnC8?7|+P{H#zvAJ{O98j9xYp#$!Ym?j zaV8}PNG=w)pkR&-H*+8BEGN0FFfM1N*`7bl)Zq3L{uq#Am1 z&#ZoG2|bh3C(#1Xw}vR#ZdgUm4p+QaC|7U;fkvSKW%IqM^u!i z5qws)y`u!`nqM*Mse3-Q3;)UhwVImrjL%SAP1Y^5703C#&C$@+PHgV_D9`K1`G?(5(+%~N>>#Mp*#yN zUUx84Q+GwL#Rx*nOR6*}6dP}6_5QW6=464eFZ`qSmU{U2^fxW)ynw>LVQh*?= zy2@rn8ObEuz5@#e%UPJArVv7zt&t!|(x2gyLR>Re7Ik)ldAd#>kUGYsa1{k;j;{6; zF0jS_whpQmsnya9-zLZ^ho@u_d6aueIWGt;&4(s5bE{6vBalQE1z}Qfo;rk`2i>7> z(sRUjRH|5>eNN_Cg02!E0hR!JJxf>N_vhMe@6^d5ic-;Za!LucY)LOrf5eEu+ab*% zS+P39COQ`Sd)e-vjpUG!E{ZYrb$q! z?(^MR96;st04}HTu>>f59GnxJ(pK3Pfa;PPj8#$C~ug<<@!eoiBLJTJPK4w=q)P0mrxAdjCNLFN)lR4?)Tq>MAl#{ z9j-h>w!dvSi!zyPFoild=BkcfG8zLncHte?!8$WME+&w*p`qhFa?e@Pxh=qbAsbQt3gT{fPbTOh zY~psMz0uhgu%&k4mWs60TQZ_Sk@m6)f{7ET)PCZLSfNpFnrU}}SitEmE+L9iQRzxh z8&shx3K)CA99lvFxtLi?m@%&UD z_+ZjQR!FihhKjssd; zURv|Djn>6eIlS_?o0xC>TI1oK8JrzXX~DThc6)D-MKI z`y5w%5vD9XuSWA&q99c)q0*`>y*Gq|`JU-`>yN0~Z=jN95?2guVB;Asza zp`jG9Cl+(H+47`K%wanG=irMCe(aRlU=D`Qy$D+WtN>r3eQZFE_i3fr`yAJEbW<2f z=FNWSK3le=g$R@#6z0oW;}QRAWSKcfYhHz=@Qx@%DaG6G#2}sON|mq6M+EuH7q{Bd zqMt7}Xxu9L!?4x6cQxXSc;R@NUAT10S$Fnoyf1#fjikmpIwK{bu}XigJg&H+H+`b! zp(6di<$1$Wx&JDbMI;JhRx826BdB+vVlt&`B+HG$EbgBzBMYgi|1G57K6yZTYDh2P z%3Sc+2qY4VEXY{(SGUZNwwjYuJ;ji2drW2UhDk3+>k`r22kBfJ-_pHdb@@{*s|ChN zuT{%ZhiNX1O>e9$b#rLlce@T55q?;Ls?$(HS*(K{0~**Ba}UTZod*k?Txj$2}Bp{L*zmmxh(bCN|#D9n|xAg*kac)_Q6c?xsqy=g`prVh{rjyAo-LU zX^f{)!>Q_iLCfZA4Y>yVTA*LH(-}PstFo$9ZvI)nkTMrRYmxu14^nE-!?E%>o+Ovs@QW!O(&_SkaCo(#&oTU8}oasrn@ zGq8$Tm7;dpf_Z&}!3A{hIi<7^5bqU~GGr`>kSjc1jU|;33_Nz-9<}yh87yJ?jzuaW z{A2pmcu6gJ32I0Gl~c0^yz`7Z7mGsh=5zqf>%muLw}E7BnG%s9UK~Q|WhxZ8O|K!7 zLMM?81`)5vd5Gr)A)4U0cy21~FkZQBbDz*7Qm{e#bG>5jQi#oG2iuyxR)|TBw_V6G z7&|Ve6sS}9Mq$_QFDgX}*%cYIPLfZ(#1ah8m*woiba)Dc65Cv<5y=5ou%2_7q_XP_ z+3``8*~}3je%uQDm1o)k!w-~hv)PUT(HR(iH0wM=U+WPbjZ`TI9F#vqgJr3_%ZFKZ zzx!rf2GdPrR3yxVnM}(eBF__i)L1hhb;rS6(6Eun=6~52qHW=5)a#%r3blj!S`}O| zqUe9)N`r|m>rje6gyE}Qd!4uII0;2#sSHW4anqxma9>ft#foKZDRletGu(OAunBoa zjgMGu^oO7{wF<_XEg19!kxW|IDC^4Vl|$^Mh+56=MwK^*TwrqsS~f9@>?S;jqxoG8;4mUN0>s%UqJmDsrzmfs#|k@e>~%sq~kW z5%h?0{4Uo)_`0^NOEw$F?bYOgDOH?)K{&*AYY5guvsrYdLa3ThYZyjP5n{ok#&x2; zrY4b2$!!SV@JNDr=b$ve%N)|w6P{6L{h-hNQ(~4~<|9#_<+%ufcv*{5e_}@>d?Gth zetEi|%_?LJv+z`lmdznn7)Z!!Rk!MtQ_nyYa(NB|M5%aSDVjz|W3gzNcGH1H$LrPg zV2zSgC&?v4=P!2T1(6iKS7;gBu*`~4r<58NhK8c#Sj9ATZKFg3tJRuCwJoQ4M~A7Jg8tN<>W>sAvQn&|R#O$ppN7M(Nfk3O9*Q@Mq3?-LHx9E0 zcnjY=F2!P&Pav9dN~KEfkYITnfjnN_%DIA01KMxGi3axqLo6uWjUxqb$S3YEw2SCc zAb_RzY4m79l8>b^dwwA^&ny@C933u7xO_4eV6`M$tr+cg-z*86Q5N^B9a0j_sA-K> zJ%OZ-=QoF}N`-WQSE$PMp|m&Y2Wh9H?*J+Pecu1K0)F>3LnmqeropRw65=mgPc+eg z5%$5ouzO`iLHgDo57cG(XE%$R)X(3l>YYzb9y$d!WMcpsVJk`QeOe}S;xKD|0|fZ0 z@x>i`6MygSqm41l(efVB(Ot3D6O2)LfcyvW3zHaIjU$NkaR{sppCS9 z04oKLr2TNf9?rbQvHQ!1ckI*d@SUJIY()=@J;}#u#Z~wZ#XOu;oR9sA%W%D7A@(Y+ z#XX8Qao<(CUmX5QaRI)dxbTWzu7V?1=C5>@vGB~p7Y#dl|1q*P)qg?wshMPr@N}r6 zaOnp=`h(bhfYU9aPvq^`vr}N}*PXt#JAr@~m|WYZfk4{}8qo>1B(4IF;e6(Cl!T*H zRG3?RN00)(gLm`VuX+ed{KD30t&nUf(M96l4_Js)y`jM#{OimFtRzTf<5-G|N4OBO zX1NAk3aXHhWgFK<4V;%j{cbgifNDsKD+~R8D{F!|ii84d18emkMe`9>TB5Ln=!QppeM2f*b9m(_?HVBoT7`4!)4(D-PRV=2>Th;9uuLm=2zw*c zV^)0g1%1)h@tPYJ3pj#?BOEUCB-B0By~idK#C2~bi>PY1C!CRZUtpW}fPJ@kya0Z_ z9&k87&d(k@vM={z!|x49?un6IkAe`M;{UTga=oVVA>cs%P~cIEf+2z2 zmkA!*LyxKUxeI^IQd3ZPE_^mj(98_IwEKy=o0%2-mG15OQGZ12Pi^ zFe<>*uY7L1Ll<#EHD9B#1dAi*F$^;A2}35+Ls2Eorej211`9_MKW1bsF<$o_Lop%agnwS9}aQ#o<-w5!;WOu1>{kyB#6F#dh z=-w|XVY?A)hL?~K(+g}!#Cb3hUz1S7sFXJDsZ;R#F+l3M0MO6YSl>}XOGd{hC1EmM zPqslK{>aBKqY`zyBITl=&tnG+mtkI+R{qs+6nx5T){m@i&=q{ji%qT;1zIptybQ=3 zAycB%iF~;65y(vaUVBgM8xjeT0tgdKi|QQzF@(^NVACNiH6jA64IZX|pRX`lh6TfS zx!|ANd=k|D`h)()*az0QCLi18oe$foI!VwsIRPaC**7l9P&lUd#oUuXV6BVpD=Bs7humwD@aR2 z*Q$2GyQ$YqTk)4&(A(#t2p*f(^zIQszFoejXkqz)ztWOpHr5V;59FJ6 z9`xPIVFw@B6^CZzbz%MX5hJ8Dn*Vuui4YOFC&_rcT^FTz3TPFSc~A-k9#oU5JD}rU6g{$ za7MLyO-!G&9AxtOSP;@z6T9M>N(lvs3X@zls5a%od>CY)Myh|FFA$9lTsN}Pm_fSt z?1OiMP?1dxq^gTuI*^EuKJdwV3{u{y87?p{nLjWLu_597*S~y>_AI(QR&j0|)^6Dv z<(tyRdP?fYaKR9Ot?Drp6JB{DagF{R2v-09>8|$^YB#h9AuWOYD+s$}$&@mKb~e#8 zt^ZWhE2w(a&QMF0Vi&axHJf>T?}BRiPvyC4r|gp=t53h7Q09XHJ76IGfGF#uAC<_G zM&qy=)t*0jUSi1o5r|Lj@4G&aZV!rq1_?pf$-8j)-(&hLFA82>5EigQ@iLv@q!{Q) zFggZNv_9j21A`21R2X@iLbHz@99drT@G@`OLrcrb(0VtbLNPTSQx_&6?WEhc{QT~! z|5CD(BadhgpT|C4Ba3KsBT7zpyuE+fG&T#6LZsfJfsYWLo3!$s4fqr;f23ZA1{N#&kV+V&oTcZNAID}y`=C6H*g`BAjZP) zdA6v+D4~~*3O^&zAV9 zoUpdqK*HW{l1oI}Bbl{us}RvJ4e{A zE0rQXbF3K8_(gjz;xFQ!5O6^Wr8rAD{22rPZwy6eV@9Qs@bs#%ng5sQG%!{@M}r?e zUCr?BdpsJq)XhL0ir~)Lbzo^qt)5Uyq)*1Rku-9#F+vm}TgOwS{z2QOUhw22>HRRq zD?~qy&f9lmV4rNNBm?#y$A>mGqM^-R70-JRzD@>XUAf>!fejKI8<8l8HmikPX1V8$ z#6&kr!h*uPMcYaQqIlsBHHRn8c?b~KJz)2LW%xbT0>HqE9BwfdWgF1A+uF2uurp5! zzP&^ADTL?~x3;<#HeMw5^Spf)K;xf7%L+fKe^y2Un*yV}IBdgbt*7jaDgD@6Z`4Mc zU+)k@jN6WVCw^B?muq&sP>vGyZy$zaA?SXmh$}VHFBZ1`>vA`)Je!RIQFmPNF1hQ} zbNGvVwIgEf#86RI|vh8c~)PC~U}~{0j7zLYBzuhgE2~ zz!^gH2$952KyvMos<5hYu=>HpZA~wk%Z7EOG-seC%@U{Y<$nQO zl#FM>hi_jtIk$>5PkTDcqCn7s>=`7CnlYRq_tBh55RZY#bmv?XEJ55V4xxmBki#{3mVD@B*aZA2jN-KI-89 zPca5ud=KJmmehPz1>{bgua|5aa>rFMHA|k7=xd3@b8co)To3ulEiSyC}NuJS@jg} zHErc#oU?GpRWr9f>9??FF$#&#b|`sn$-IoaMmxnzvRUhDU(Mr`^|PEWTMQOnq}Z<} ztdknGyO&AuwWf4fM9g{&I}~di-bGG2kP%Q4XJ*E+H-yPJnVnpe(#}xypT9u27cd+jnt{=twju8qPvF|D@Udu@;#Z-)A z79M{Qj?Q*C%jR=L<`VX-a7gr-yb^CH99;@?JPA>cYV=dZE>=Yk)kAkWl6k`$xD2_l z1*#zrYPEcb=HqA$wnVr!3`C^@lxU`1GHp&rt3@~UPzMj8rt$h3b0V*D0U$**Gzoyq zBfBlNR^7QeExg{>1ux{_C`=+aM6O?SAd!wJM-<=Y)c-_T*qT zfwvRX!|}uHhqYHg6F>;~-txamDsjLAVbPTq5Qg#w9j28Y`wDi(}FR_%QRnz%BeZ**M-%2`Q#)|QA*DrPK zB2VgDayp7$m6$10Ded~zkY7ksrQdRxVIj+S~L72yn*_zZ@8v4>-N=Jf|t=pEmeb36f}iO zV)%XQA3nam_w;Jrey!Pse#s=Ni_d-3odyco=^IH&)XTCBiFYH*HX&I$cH%KrNfz6L z#=W#fVR$nZX32hX<(Syt@s(nMH{HLbP+h#Rt+!A+sj&u-F;=K_N~2r;XhlyNH1t8i z*ievI<(F}Zz}8NyY3b@jy+-@=fE`z}ebTw<2zl&jM|(B9-OlFv)X2-1hBkjAe$oZx zrh;y0$_!V1+t8^vK%$TlLdX zk^72^{wk$ZqUj}b_n(UiprB!3`@L%TW?N^2h$34b0kKFMmGl5|UQz1cZIdBBQSQnKWd`josKlvFhVC|w|JNI^nDuccrYd}-oO zx)3_$zWRhCRj!>;nV=}CsQVp}izH-K{nrLY0 zs&y70OO5}#=|*~n3>f)@W&dR5Z*}S&bKFQq9Ktu9&e><>DdqZ8ppBh_ldCeGX43C| z=`yILIH0&baJ!{7z{}UAh9Lq_K^R;}7||3VcJjRbJ|}s6fw52|ChFCvAJ?B|$@J7S z&%N}jl2j&FL^Y%&K>C{@E2^d&re!;>=ks%U`V`F3AP+$$`VwO$l%CpC|RzkC6M?s1e;;VpC5-Z zc9KwTCQ8Uc*_HjDgMjCp?y4F-|NE*gB_Tq1zGIypfmb~%IX*(fa<|AEv*A!^xkrL; z2VO%6n{JXefDoDQSs^q(Np6tHZ--qzG|gYYbHN91e+)jBd?W@F@Og-xpO1j+2{~|L zQ3^tY@Oa9_LfLtU5Xg+j za)YzLwdD;ucXk!yVAnUE9?CA@I-osM$AAv*MN)KIO0cNDJXPZ{tBq)Ma*M*NLvr|ggzT(k8&Diziw%}5!U%gf=bl;q6_Zs zSX-$O)h;HSDdB8Sqbp@anTQG(B@Z6!Ydum5O*5tvkz%ObZfpK$x;N#{v_fsKp4IAu z<+Qdi1ECN$uQgy>ghT!on{(I9ifOh+7Enu$Nn?_FA!Sa`=%d81yWRLK>}hLlWEH#@ z=h~bGADN%zNSgek=0iy@70JAx9r0SEx}&8SW|6k*F4_BT-+au1pb)VmkFzx&qYvuvf>RH45Rn z{T#+_5L&EKVz?A9Zuu}+k_Afu6vCx=kz>Q;5eBexV3$c4FidQqd!_+2mKSdT@tb^` zpal00K(GDaumnIMOs}y45U^9g003+NfbIck0B->CD{vLm$UQd6j|%Z-jLrS|$+2AV zcoKRRD#n#xY4Ac2Gegc0CecSM=6zow9U$}+WS-^`Wq21j)({W0zIbZCPvGa@T?O4MgT03=&6St#>snIr7UzT-&}k z>v>pU6xG@og7{IenU-t)AK{BTuc|ejZA%x*LUR&K(0^EM7~AFrThcz7;mW#-?oTFLTj(bCRieu&P`s;A7 ov+5Z$hJGB_FISZ`lH5O4PBqq<6^F{d-($z`vHZ{4l`jAQ04qY8Ob4S33%u?pm-n{qoyX?y0#0(R^L z*f@YTHeQ_l|NnVOMUG1AB(2%T!H;`O$%zQ$Qr1Vxu@@!nwdE?@f4I-Z4wMKl57o!!d)u+K%j2WD z?o)n{#|b%??resiJ8ic#8uv$r5r6o}9ZgthN+?2#4ALP@M2UlL@cTj_Ru!hp`#(Sv zAv3yZc$*b%^B-I3sG%cJ{RfXj|L{2{`P=DgF6#ih1^;4_GAzf_O89^HHtpOugAI5{ zyu^&UI$byWQva*^`v2(ly*v5x=>-koBohqv*Q|w7tyooCZM&z(&(qxA{aY1dYc|GU zb3~LNU;{=ICSWEdm|!=wfl-Cogi(|r?6$k%NjLwY@FAd70a1YrvPmFoUM_bTmraf% zfpClfi9lE~R9v*8b*BQQbJZ7R;b#IX-7*J!{2^NKR5~ zt>;=v#agjq-ESJiiYJ3uE7ppY*-u2Q1Q8Ky#kzx-PdwKK*F2;_g8SJe4Pt|Y>@Q+P zBuEemB4VxkiHMkcQ?0%VKp_+ff|N+vvfFm24KdyJc>V90gf^tp;h+9JNVe3Tg@jcRbRy zhsy~NcGvPI@@wSU3P`g52xkHSoT!RoXUywp5P)&Dki$JFF0E-Q>#EcPhwivY0}^UV zO*pk>DTSH=@G8~X{pOpN`2jz*Bqxf#Yy+yTdI}*2a?jK-N4Rpx|@p~fZRFHvp#mcb4DabX2_MNoaH8=LMaX8 zKdxmq*|$?5PRpvoe3?31HMo?W0)eY+9ik-E6^ai~0;#k1{Jv$)PCQcfhr`I-eONJc z*qXRQilKkig}L5SxDfpr16W)X5*dw<7yBOkWJ=@#ibRze?Rd4#Nx>@X&j zTM`q&{ph2}(TB(qf|T>!s(POGa@wVlrjWufA%qYly*cx@`#PYo8x0JRlXN$nZ2^A$l*6;mq+E42r8n^T} zNw;E0KtVwz3TE$a{^J#kTC0di5f7LSO{A(RxGj8q=G^@mYyR+9+wFe;ZpT$gN=izK zfPnZkw%bEEq@4dzbrVEB5kz=25KWqhtbV`%N5BwzU=$-Th8vj13(OD!mWlx@WP$ba zz(y6|h$F;FCrJwlFI6ZE+l4QfD|0~nw~Zk9UZ07A!!mJ0}u z{}2IT@AV#lK6a4+j~eaRfVbXGZ7c3VirR1izVxVDeriAyVy;+t5IJjh`+I;Lh6qcK z-ou1P3)`_0T_`?6TeGlGOO4rXE-R7TdN_9DV^^P+N3|3=mso~OCGkm)U}Q0K$tJh1 z;j_#?K>Ia3=y}*5&1p0UGOs+oTlnmZV-5y-q&;T@!4_ClJS%8PG*u^zo49n5eV*%Z zdS`j%7|S)$o*A`mcPFLoLiIkO9G4m|t4&L{(I(o~3S}hk_jO(nSaLc%?z!j$vWXMn z489hqfk2k&2HJLDXXuJJ^E~Dwtt`7k+Tyv3PcgHt<949Z5m{WgHt98E3-dkB5gX!33;;xrSqgEru1)Q|Jy9hKSF!{=9xi zc;R}L?pxg_I!Gt_!_uDB9)g!QqGf81Xx3^*sJr$%wbWrX!J!y@}#_N{E0tVQ~z^sLk_6-mxZ4j3#=?8f&}#Qb~R zzoOT9Pw+Ur$9DJ5_K(@S~Db1$@u!uj`n zHb>^=nd(e4ji&UpIt3@H>Am-8%#7iYZtNT)!}86j3-u;3r%1U<0 zy$71_Wx4c~j{RdXEBe2L!dKk;63Zufx0!|<`jO6#vm8&XP`UZPObcn&FH@R=$zihR z6e_gx!(ww5B}8(CY=0b&!!cdj83iL}1W5LOiG}{qPD^~s&$)wZS&Nkz%)~Y|H2qI` zRA!?S)sV#ZHz)!Tk?`{^UtioBCz6LDa4KVzA9VQLy=146EH1lNE|}!>^@-UzEnzysbSZbN& z;T>gAGw=bP#+G(W^*JCl8ZAkIeG>-+SLF!4-TZ{H+%b0!BVi0z_n$u_D<`j@sFdZd zT-I?L7sH8-waT+%Q3^EF4VQPMV4>!I)7eHH*s?~c`gNSL2O}-J3_?IfTr^#w{W3AacG><5u`PDV2D%k~d>4t)AFHer1!f}B z2U4dU$NEFa;@C0JG3}(WUO)ACx{)6_5Lkc$FfYaD-`eu2eOpHI``jS)hWN=iK~Zs` zl)ba;Ht^|o`SB@ZmHJbK4T$vy=j974_w^v^1<@X-QA13p@sp;G>Hed)N&o|~#X}$# zeAENs>+_%kj2x~hfr#IX!LBg<^{sXztT1j4-4JeA*QjrzHoB4qI?_*a?v?4Uj@}+4 znZ?TDA}jU#>QeflS$#d(zj6M*t5m%BvfIEg3~1Umo#219ZAG1+7qKnYleOl@w>f4d z*YoM4fWRBwEDmCcRa75DE2^h~zT!vR>1;Nt^gGxFh6T{|iSp&q?JiEHy13j7=a-Nl zZuHF*diP8{7%2l;U&5({{HzhulpU*Z@nwZAkg{ofa?@<=ZgUT{fn;N2s3%Lxk8hM{ zbA>ICv=J+<;Mi8QY6bB|Q5a(Sdv?^KX-mZ|5W$3p(ruJspMaaDMkz4fxurXF24MCmCj<4FL-4)DWsbMO4n4)Ds zc`z-~z!1~n?Ib!k?Wt%6olYnt(U65vfug43kc~#7vz{VlLFhi&#DB+=$m3^?AXq#| z!Ku&=?3?llDfGmaX{Eqdv5e};cxcC$KD47kJFsdnKnyilbSMVqBAN^_ecFyvn|4-g z2U;db7F7u$7nmldC=y1g=&a95A&|2_RYjc%Ia;d!`w`Qz=tJv6tNyZNR5T#gjAR-i zW;;yP2++l$S5F3!r{Rp>jLo9Al!D(@)eB)US74LOXFeVH)VH4*>VVZf|Cta*$W}ue zpGK6(B+aXqhqZ6^QSlTJyI<(12*thHKCP_2g;VSp zG4|n-GN!uSGDtx$Lv6S$k4@gs|AkT_Ge*7gMeiFXNHRig(-sH*X9l>^`h{Rb{Ord-2s@N(@xCX0lCva3SZRk)iLPp&-auJR>% z(lXF!I{XYckGU2fEgFhk*z)6@JBnha)meWim19mW9=r0SIqXaHSkF*}q&UZUHZnLa zU}|x_Y-=(~%cFgv4g2)^M+AT#()y5cOl>nSI$l{m7?PwId7Aq153nhuu~;lGD`4E; zOpvo)P6CGp$Ye$yiFnAySx=J^xX1R9_*+QW66q7ZZ$NDBUtWQJQEoVU2vLsThZz_fxdIJb+ zE&1j>76;mUKGi26?5KjTLh>zv+KnUkH4wq`1xBh-s}#iNcAfP;sQ~Iu9D0xSN=olb zG&CGkpe!ph(S1c50mU-IHu-pp?XaqR^wYNt{%a^@f97~oWOHV21E21lZw{IaQYnAE zx(eu1oHQ_@6CMZX!)5@0>y zQ3$J!ZM)WA0Hy8Qi0gGmoo@tWyv6FQyQ3{2u`+n0exM<~B}ibi{^ksq5th%)W+!aS zws(fTn72o6?8_J!fhlfb;!a#9lw@vd32eYu`OBh*>kv z?s)<5tX}XDAIgdHRj;$I zs4eKknvHYov7u&d(wAs1I|w(eyb2<0u`|#>9oV~N2Nhask9(~SE!XXW7dxh$AW0YW z*by_pjNJ-S%#65rX(-wRvc0S{<0)Ea@Gy27s#Z+RxF{aSD@|{FX^X&@>rBiph4>>= z-Z{pMpc$9`)=u4mChP#?)WWqpL#;Zf6t~uh-qH_sXEX^%@CTOwrUgIqKtbmxl8Ka+ z*nf7Mat#<{g9Zs(DBI5|Z2Jzes zD2+yF1mCd5F^c@m14xfYmUd*AWNeSpExPmj&yK+K&lo^*i&GhRw;^<(qEXP_06)^e zbP$*_l>;7Eczv=Y4xU|QJO4HAF-U-ET}%B;fynVatX^p zujAYvXT3t|6-qvDZCQJ5siXJ5E{VDiKE^6kW7nl)Sl+<$+ zPZ+0K_h5>QUcUHWHQofyu$V`_?gs##E-$clWT+xxH_pVJ#W%XH{WY8qbHaqkZlXtHqDhG8yuO(zOlD?3xvywfqhDfELWHhk zV4@cpF`{eZ0W^YEwAD5AL?+71#|xbba?Hu1K$0DV9WSy?pnt3{ncv{g8bcxX89qta zMOUDFkn5Zz^w8y~5MAc-B(9shbURLI&G|iifM@lRoEdHTK+r3r;8jk6w+I*-uA8*5mv6sjc9iS_kc#SHhqgIF7)5EAc9 zi}Ajpv*jHB=BpXQZxw=g~`QKGH!xR(B>>vf}9iy9ll;EoA?qDyaU~zwV+k-e`7+pS)&uf zFdlL`J?ui6}4EKVwJ}P8Pql481!> zCP(g|4Jel^*;ng95{#3N+6imbnXY*96|6;qsEvrwS`-Z{mepDiUKFRnD3Xdeoz&aV!F)wjf8r&J!iit>6es< zwWfBwg~(5$Ueu%I$fY@|%Rwt*&Kbr=CAA#F6QdjtdV?^N$b6IOCf2@05t>1w5>WYj zUz0B~^@3orNjex>ifk8xWTKnxlDSy@qi7M}X^J~0Y%gM_L0n^EL_Ak++KZZl)>^;; z7jeRb@2CJ7(}qW?0I@5E`)?XHw+_5~6F{C0_RC>p+P+!+W{((7T72s5s9uYc+lVaX zBaK**RQWh*qX^f>BSP}&`i^T#X_rEcNS9=3z4SLa}UNow?W^L zMm}qw$qAQd>^+)=_y~6VWwXqB)xT^9a~=5HEC|!ax$rsamCtLhLj~It=TCLBx>{>fVT-f!Ar3>hGrtE!b@iwBVF@lG&mOxE`omyB7Jjssu5?O?- zQgQk#*pUodZ8(7@Aw0M2vzi2(7g?Lof`S8^ap9PmZO}JasilaJWes%wz%4-9hOHJ^ z@{abatdbPpZa0OQDyxo5WV=cP+%klqxuB>TXbiX+)XmFjMB^e?;P^KbzQsDI4ak`*Yx6Ayf@%NTh00fKon{51EC>`t>OtR6Vlpa}H#_ArGj`PQT zqZ2kf>D=n3O$fq> zWPvVY_W=OIC@J^CJ<$Eo>z6)|4~CxsrL@oN6NZI4*WBd3EcNSiH6hcEoGZ8W&W&N> z(*p4E1|S*?f?5!%!5d!dwxjG-Y|3G=Fs-X_32)tCd@)ckEc&Pi3di-RrB-LwNvP6# z+V!?%2UhP~cncpC*c>WOOi2hb2s9B-JH2Fy4N&d_!yRuVlW)fbZn<$GyiXblpL>cM zkg!JX1j073p3y- zjskJBw3q6A*E|vgq2-3ruyy&bVF=;RxkgqrnAXdk)zyT{pSXOCmU_X@!KE8Sq@K}F zm9a4DdkzJ@+b~I8Q`42y)23wdt*1w zpp%2*7hZc}EGSeQ9Pxdyh>4K9W%(mG%p*ytez9}-+VD}_SSwmj=+H!mf^~|8XM`>^ zc8Ox5wQ~KJi&JO`7{jtAa|eav1Y3=#!l2Qa2j?n)QW9o_@wSIYwrU9M zZ~iWoTipO$GyqWu+`0vk3faJ^ew{IDQ_gK%1IBF7veqz59H&|o1lOL;oE#K5b`74v znkf|kGtAUay^`scK%9a8*fg@H_^oQ(R+~+!JID{tg*Ca#7bcBy@=-f@4W>Uf>Krbv z<`uu=3dS?msTO&|ab+Vd2YE%uJd8C^u*rn*`zvH@Vnd^UcTrLtqSm++h!_ zK2Yv3z#H^tg3!lNe;1Dg=v}K9#KA&uybfjm$`9Q%3!S^ZZ(F(_=AV+%54zdtXyGc= z+M`@cU3L*^x;}b|~fjUh6)GMKygmGT3x~4zc zT-1NSY6lo&8%ruXd2)=gVC$^2O; zZ5mW9m*-ne8Mtw%X~SbZN}z8?pLQv&aM5-vO>Z1mwUb2GVaT9!MiMUY;*T#!2^HML zLxO^HD%wuyNAG|1(T+Y?g7SkK*!rngA}5Is%ljQ9 zH~;g|sLB0AF8b)5!)|M8o&WYnV>e^Xl#(&UFj7fMcWJfB{pFu@ur5*-+_a#5^b}h( z^ec|tSJspE!!ZplX+&Vy|7*boANU~vK?s2dVTeE!VlrGPvJu-#q%yfesZ!f%wDvj& zy`z)C*v;hZ;_Bw^;pye=~cQIo15GP)Oo_gu6kG}fpFHw?Y z0}M3CU_%Tw%y1)&G)jt8Y0`~0##rNwH$jF>StgofvMHvTX1W<>nq{^*=9*`|1r}N) zTaH|L@-0@N&=N~6v)l?R6)CpLYHO^u&Uzbcw8>^$Y_-jHJM6T}ZhP#t&wdA#C{?Ch zg-TVb9dyWHN7Oj#nBz`3>6FvXIP0AAF1YBD%dWWUn(J=3>6Y8>xa*$#9(btMBac1t z)HBb$@X{-pN~io(kP1^#Do!P-G?k?mDU-@m zMXF3ysXEo9+Ekb7Q$uP@O{qC$Q_IvUwN7nP+te<#PaRUn)G2jNT~gQ7Ep<;lQqR;Y z^-g_4-_S4g4+Fx$FenTTL&DH7EDR4L!pJZxj1FVM*f1`P4->+~Feyw9Q^M3REldwH z!ptx$%nozH+%PZ94-3M=uqZ4JOTyByEG!Qz!pg8JtPX3!+ORIH4;#Y9uqkW~Tf)|` zEo=`v!p^WO><+oGJz*DwT^M#z*u`O&gk2hTS=i-aK#G7!pUT0tY3@Gd?1~LdGW>Oz zW;GwO$sqJMQmTu=%Rn&0up9kmec;ja$-D76&RG;(=-&S;u)6gJ6?~{i4?ud6`D)na zuUr7Z|Gy-G_FjBn>U1*-r{ucb4nqJE3y{Mt;+z=!tn59lK}T8oG>a2WuC8O9KKPVD zpN_K5rdY~vZ^5&4|6stWfa1(EaHPnc5J9~O_hP!Uz|ZR*@^{a{CcD~e0!YZaw4wIB zOS@!yoPXkk9B}O#`YTlXRf;IBb+yZX3AL5KkGr+E8*I}U93FQC_fwWcr_yP4dYw_{ zs|(S^HU}-+VO_h?QT0;te;EPrfrS?#>}4-aUIE}V9QZI>okC~#f%)iy6PMrae{=#+ zQUdb#axvctO8`i?a9>;v0RH@_wd!|&ZdNU-Q+fTzCS|Jp;`e{m1_FA4X?_88S7%MU zo2lz;4F9@x!1a#Vsy%`{UbM?@TbNz#fMVOMwkF`b|G6rjk>@3hfc)Q!uKuGn_+e;KFdTWGP9{k zr7l>~-eGU|jxI7;-7ScrX%;TE7CRNEs~I|!2~NSb(-mE;E|rxGEt1F*5j|+atSH-P z4z74AyF#y0w)yirNgeFHj()AV1B$w>(QGTK4U&|OJyXA>P_jl#8Sv85!B9g&ql;+; ztE5)+rcm{WrVD%n6zB%7RY_H8r1~-|QY98+8Z&hwKL24rg1r0Nh(lV_)&)eZr#PVj zG-&Q11`>S;41p&m&AMTyAFDuj8)tg^7In=-9BRHrtw|%-hRHpsIs{Ue51;bLD4>(G zSM~I13^X=uf+!4LXuAn-SE#!j>)SSoB%*Ohy1|gH27;qTfC_DLfiC~RrWB+n5XL~-ZiWMEf z-dj>f69el334z1|DURHmFDPR;gWPmS$^XwMy~!rqu2K0CFANIfVz~!DU+=dOr+WLG zVgfdplT_4W2O~ZI7Vq%Y!|NG9GF4*gb1ksxo3TQN~5vM>nC z{(10G5??$p%EAFj33MzOg>=ZrK}py+B7`030`V9nzAG|wS1oyyE3D`1C#)xw?#-D| zys^5doY&)Pb10=nB%e7SWSVY?Aw%CKPw*#gN#_dOU2SB}j8h}*(GHr}mWOn+UOd0G zcq2xSgqPBtjP2e6z_{nI8%Hir^D&{umjJDwThyBu#6Hg z$^iLm=-izrE?3rDU0KbuIw$KerJK6-hj!M=imWZD1|JbMxq_$*GdInYt#jRC+J$wq z4XNR?(V1t~brCf7z^4=kv>T8qh#F1+=ffqDA@q#~CM^30d{)?JI*{wLNDi`s1xTKI z-LJ5;|1#SM4a$+#vP!Vvc0emL<5RF@oRPQH#385zF`DmVAt{42KFV>$z$3DScY<8V z+-ke0!Ig8sLjS2eHN_X@YQBq`U>PN0`4os^bVy@{i5Ik*oy8B1wE6Qb$sJ*K1Gtd4 z;Vz*tb++^#AG%Qid||LmA)iQKEHMnTD8o)Ze3og7*Ma$@w);WlvWGad)uTH?J4ZK zWKn*~%gjfV>u{$puO62~dJR<~Vy#JvF2s<-pfi%{K z0pE0&`zEr&a~AVD*_vlXx(kkv7#S)9JVuYe1)gA^212!QYsxPBcF?AOhvi^0TqII% zw+X{1Ko_s5ycOS!0)td?`DJ)^sV;^a8t&Q?~ugH1FTZDSVTCQIo;#Un$as1k#=_fk*a zN**EH``ng$x46k9oKiF@$5zq}7P>z=h;^bacB_~*rc>-PrP{AWQ_;RBf>jc|vm}g= zXNnnqt&xYKRj#jQL_)4#sqYc z!6StpL9d3jwUOQ5VHug`mqDtev3_m4Qk0^6br}RE#+`TlP=s*Dnk))$Ul*M;jth+x z{i&%kl z$AfC#zG>p&?9(@%30DEDrP+5kg_=(&bhlrO*wCx*lrMH+F?T17o9ardys6b9t7wpP z+wXHd%?&7y5UQ?pJC5G44%(=P$J}rhMk^7fIoIB?3<7FP7DXCsAXifaysYc!gyN>K zNI9E8-1s%F`=~?(8r)>|<){|7`F9cAb6rd{uN~j8%>@qn@KNJzqj(uaHwtc5EF#7A zYl`uFPB7FFhR3au+-@HqGv`AUm0mRShxyTQYdE;>` zCXqAYnEHcZlJ3x`Qj(AFay`GesfqWt4O}Nhi^w55>W$Q?rce8MNj4q3XqaH2p_{hl z$GX5Ku6Vd<7k!*aGGXR}XQOPctd)(}6WmppOIMim;mP-N0`VF^|!%HpE7 ztc-Ypc+wU>Qy$Z-E0)bO9n0AV)a+KAhmTjt7pjTCQ7`@1@Ai2LzsbACn*|dKb zMIpyX!c96m7;`i9Q_g5hU8M(`^abikJKIe~GHp$@M)mt#ucA_?)7++bn!Yt)TIB76 zLws@K>SJ!!GN|W0M^^OEJW8ip6xa!cg)%2#vRq>h)r9og}S!u>n^LtsT2KN zg5PfHJqYMHbi`nwRd5zfkJOp@*m&eM!B9<|T}}<%h}M~zc}XUvys+SzFwax{!$h6<-jH%m3mJWD-iXOQ)3}UDD8&hzr^`)^TJqZj z#q{s#rauejYVTvAVn0C%EcPxpA+8UKhWq)qw9wkgw(phpneuXLUY|3Af$K3-_B>+W z*kLQS4~+CNAF+YTWJfDMz8g0eI7hs&EjBK07Z*Cn4=?ms^32e~>xJVFZS*kTqI{>a zkCGJ(w#p5|P;jUt_N56fp2fT-$Tt+q6{YhH_u_`rH%15##tVHzuvxyTf$A-tY@6-&+Ln5L4~G@O60>^ksa=}&(ht8e3LG= zpRGE*x>ei0F>c7;wbSZBdv+)R)V9QaenoXs;hQ(E?c&T0@`hD-b*g!38I);+@*MKK zAg%Wz<)~;5s!HOO+R|Mf1*k8CQS&Y@(0Sf@oQp~3+>U3o?M^ezz@mgj+fOI9h_g>; ztQU4D?WHfLk_R8o+AD=mzIxlg-?-y*EE&;a!Kik!u%a|v3KOdu$r%H`7`y#ig58}ipO@KQ)mok9Nlq)1Xy1`8zDR`uHEpGGRs_h%jM$i;4 zdOoY^vtxBxX!a&WmkCamC~Hd zOIWX8&<(|@j9ELIDNU`88cA)pSJOQ}46|f^YG9~OuYda0#acf9bglKX+sEBj7>!PL zlR$-q`dP6SuTcJ?X@;{EMk2e_Q&=8M^bOLKaTiGt8FeG^DfCYV+>C%MTinh*F8_XF zJq1U*f2&Fj_ltZng)}_+MTt^w94cWDyZ&Od_rFRskXo6Rv8xgHD4R?Mwb7QwR=^H? za!fv~tDMKbWv*6X^vMJERZm6bE^|q;z8%GpfRtU_(jJsL*4}4^rzWq7*j=TVZDH0O zv|Qha)u(2DYl-0vReexe>#|9s(MTDR7~*s~yC4U2>iB9yz7Z~Q*8Aa`qUC-_HJywo zyJ}&wnxxJMflPyDL}$Jgk+r6k9cIC-BNv)id%b0{e^-C0G+S>R7V5Hr?9781rymrH zFMJa`(9tK<1H)te85!~oYY5O*K3GZ|d%Ts{3XTz@t}f?YQI7kdMFUFv|39`VR3yuC zxOw<{D}6a4zaEws2PNkD_-v!yq=W2E^^q;+fTUP?H)ZL@U-jy-SwC>fd`Dsj4qKZ3T+`FXz zjIBzksW7w5no6o;tMrCUPKSww#^-+sP>!w%u1|B5f2Iug?;>0e`FZ@2E&>F{%zBQX!{79y{WK&`ZrDEM=r&jO+ZL7l}Tlk`(>qN z^p$|_LKA{{D6WT1uoI3cz0Pss_|AKh;W>+21y z7@R^Je!79!Fm#xp;4#dHUsJq-Kjkg*KLrooprrq0Y)GLBnow1_JA9T^+3lgBRJ_iiR}=&#XnAWb2#_iS((4elEJuu9 z57F(Z-UcV6E(%M*@a28PAknuN2q{%{O%+LG5~Q;lAiWhzB9kg>CxbVq9+b{{d&wrC zQjG~*n)$Z)^aIe4|DZsXJ`T=Gq+ZSCnA1xQ>6~20=+Rl4ahi0(|Df5xNp&d`60CZz zi39kznm?g{LTo4PIr#+mi&7X0xILjl{~opcGmRAGo5(nyh`jd(DzU0C zB+n?z{cny`D0&QfD6rCnKrms)oX+guSQ(jAztQf7c-mczXhxjEf!u!Qs&6A44~>yW z^&7ozlr!-|Ml_=qNp&;YIT1TOi3U+Kk3}tZaow48hznd4OP<}Bk`y8P$*!o`DJd}F zFz1IFg571Ih9-{|H6xt}YSyX|E8GbqRv@OBDy7OYw9}+4t(2OAt&>I+l59ky(OXUM zde~~#YY;7q98uUh3EUh_5M_J{-}{6)5pF2!4u%@?EqM+&B_(Qh7uionl2VL$c8*75 zq=>{G4UJ#OKtQont2L9%W<_P0%1FKSM_r=!b1y>faN%ugTV>6;H5NP~@id)NEJrYH zO_kQ_MciIAn~6LU!lQzUHxN?La=D_+*oi1gfuSC|6sagsUcQoA42qw_WSnIR&NFdP z#0ncwD@u(4@3(dlT|qR@Y40Yw>7%HB`kwfHE9g2(9289AV^N``MCd!K*OTAeeL##)hA+3(IeY`uKNYFNo*XRRs8xS zk!)lZFb)#H#Pynz?u%jsi&8WEk$@-S2oxF*vLk;d^V5v<$IM;!ovgtAe2@p6f$T?P5e7x>JvLaihvwgk8 z3z;m2PS(v3S!TG?uxSw-rIk26YoyX3_1^_=iMV`ZwU%n|=QBUNbaqGXN`d|bf>||~rGA;uta+B`D zs`}DQav};_blNWdT9p>7ftl~Q$PzSLpwzKh&+qk2z(?oWF=r`W#`Ojr+sLA!EUx?s zm-)eNM?zpU?y|ef3o1cLDl9K4lOae@pdcWbz>_P~6uzPul%+uhY9cg{71QY~s3AL7 zpnc85+q~gwC3V#b1K;WDE=ZI#$yO&b!i9;oQ;*hOvuj?>oOTo(K8oMHiibbQFF$KEp2gep zD-s_7l9bQLCRUN!8CC*J`Aj`>*?0jhO_?dPUY07q6I@yqonz+l+NG2DlhQsPmpUv)DyQNif{O$~%GFCj6KAEucB z({uEshX4$UsdDo3APp9a0XExoig;Meu#4jH=R*0&MDXE@$kk zVV1K>hj|f?Zzd8$j`M<((F;@R$+Mpa{_bGQ z;S?zg^(a>AW|xb4#pW!@GnMMOgfBABE6?$=ZDppSX*FT50fUvo9P6&2$jh}A88y

n5tqpU2O^MkT}1f(yqcwLBA8zpA%Ak6Y+!A!S}N>rRLBmj#SY@_2doQDk7+G}Ze7e!JMiJ%@o$|~ zD~2X|=rqs7?(R`(S{&XYyRWV#lGJ9cSZvi!|96o^3n|>U9Nu*<_d1Vr73|vXRn6^C z0pUi@mrUlD9Bv=%+{fAJNrImELY_8rW9FLcs&o?Jr@HWiExV|Un|MYhKXjSBe}iw; z@;u=aV zpv)KktT3AuO0$U;VKONdCNtYPS8sg|MRB$CBiA~XG5xdUr^S8{qJAV9=9!LZoR&)x6;0CK|^t>f2h1p+XrOO0j3yX_nLw<xzMpE?J$rCLMkpin9Hcc9BZc!$w5eFtF_ zKcN6ERIcZbYVOF0Qzps%_rm$jOl2`Ud8hZRnmf4n;N6IGaXG4DpW?7TW(SLNiY4sH z3Y|iy`agd0q|^*V|Ms-tyQ{X3#?ht&B$-q39yG_`7R?(Nq=idoV!Lx^|AJ*kvkBX> zR`Ra?S=fJ;{`#X6SbB}EovP>K$KT>7aM{Xt#I>^3Xp=hXF0zrA+{|An*t9GvA@T@v zRC}NuoBoudbrl7C8tkkiL;;EbH$ce0yRwpt$7>nb2V&lK4xy8~!9N>a^a1QcPh4EZ zkB*m0%JF|1ed`1I8;$E5VU#iW?@=z?b>cR*z~LWFbb(+qA8VPVIp(l7k4yRQ+xXGB zRt1kBGlly*aVAUHy_cF2pQ}!tx9$ZlNo}hQ-W5xVzDnzMI65ZMsB`*jYi?S9G>S^< z@Ji~NWzq%f6b?t7Qdemow6pJ0;f!=C zHDwYyd+>~o-gj=LaWXpP!j5$MyRkrNo!Xdr>O{BtbfuLb0ZtUVSyv4rO#sb~O#tJc zMa`NbY8jTRN*G|E;U|7NQrg?75ATT9 zUT6)ALiWKa;r;hWWhXzrxg&l;`#HTAZ0y0Ca2co{V&Ev681wkECtw%|yXMD|vGZLZ zJ>=53!1$#w1hYDBn;gD3O$7y|jWl{=gU|O3k^d`&&YJL>-~Xntu%VP@9LmqXMi9?_ zqtoM_`Fz00*^$oWrtjczjtJo(ghxQq(s`w^wKY+GQo6t3U;p{u?V#|=>ipObp?O4X zs2b#v;`q;gpZ$$n1EQv`FmB$R*kZ}Iba#DJ?-+e7MkqF7CxFqc8s_Jrd0~n2&8z)_ zOGTQ3deU!!)R5I?iob0psqaD`h^_!EWjrT+(UwQ?euZ8FiT zNbXAr%22&p_q&n~U%g;!k_ef0c6$qcRf5;xKtI|w;QDTzJG+dw+i%+q&$@mNKX)mx zx54IxtYshPa^~`7D_644q*vst=LkYv*Gku|TgqT|^0fB?;M<5F!1uq67YcmHR1hEG zI&v8sbuz%PkH5#+;`bk802#vcHcZFSV)y^REUmoBkQ6E`23})7R#<;n!}1 zH~+|d-=X<=lcQQc$kOqN`S_BF|S}Tv#1;xk&vo|_wX867M-5~M* zp(^CsqK&_^8PUh?Q#NctO{f{gi!cp%6NpCtf2}Y86J-K$8RYU&@!LK-u{FZ{mGMjD z^FmSo#-u1e?2%5f=4>Wu%<)93lpCOWeAzQW!wYx-%9~tSU-@s$m5IdN ztIJueUalkY?v*7>?(S3|Y;d>ejdk`;yRoiC@Afo*pyp;$s7NIBYdf`4Uy&GsgbdVD z{6-$)(^z1|TtzfB8uM6yrh~L}kUm%JG?0!e_7$Ui{*7L0++Z+mc)zIZJxhzqT2#*^ zlIJSbva_nRuhYU|Q-PLdRah1+v#A!=;F*&=OQ_UZ4`WhpjryD935taL+k9%3oKelc zm7mV$Cw~Kk7tDkgMWx?t$r}jl%OcB476_BG_#=h_VSf!Uy5vO}zu)Cyh6cRVoK;$_$^h#SpM<_)VMG?TOcnTuZ8#XA<8o$ck!qEE&w0|)6ASaf5!XpC)aqhM;YFBkK}e{{oUL_iThFJn>((h zJ&cJu8E1EKlt|94BPF($8-t^ObT+`E2Czd4kYvY#^(h=rs+B(p&l?*%gTo}_+cgWHDW9o0ISAAPEQq6w0bFI}5Z_W@W@a@H zlY@5SUT}HnDS2fmt#H{?P!6uZu26u3%Q3m#eM6C_oTntJUFzD>@(O-h;nphTD;y^W z!4RH_uf)&cWRpu$-V#{faxX*S?!3+FC38M1>Q4tc=p*XGL^EkFs%|s{|pjP9GhrNqFv zygF3%oaRIGS>6dIQo)s*ilw}3*C2nl$bMNwepI_M6v1mQ56RCD3-gEDDs;>M)0LqP% z$1;+xGvMQxTvKvSOdc55WDhMPyX_`Ga#6f5{hY8n72Ex=oWOaiF@W5z$b!f-&NDT@ zwgcAnnb!^F0{+#vV*`Ia)X!IXdbD*?>5MqvLHphbn^0u)1dzvM{itKEk8h0Z^kiOe zUhpEtQawa?Bb;l*8*q^qll;%=6*%A94Xq7w5m);Bl2&3c1P9#uQI-C<^|ABPOergS zla?<^=MUoR;_Mq+#8C2W^s?V*aBkV{y7o_}?W z+w#gvK@;EDpNDn+@$?U@2aUT;CjB&c(N}ww6mc%|#4G{z8Gj5zTYqX!$z?zEiRAD@J5RZnrDD4=mTCgp}7gYWhHy>y95 zf$0B^8+r>J!U9==SreQ<7ip8EXx9x+=}$In&td#AO7CR>DgSkIJvgubW3cslbwDhyk@+4oy44Z% zZjDNJ8Q5C(=EjF-%bwEL;;n7BXZr5(k37~mZD7qIne5?#g`ZhXn_k?o@!GyzrcCObB<`F~(gw5xZNj-m>e zPx%sEA{rfj>Zqg71mU-scfR(EH+KT%i{6wEh;MWuc7Pw_;v8kpba6hJ^r0c4(6px- z8Rm@%yTzl+nMruA0cVz1dpdor>j}=BG1a=-XUnc}y;1Yb2E852v15c0{6~F{U<HdQq>< zK|tuC497*vq|-ObQ2i`V0*?90}kxiswfc7 zpiyYTmC2ZIp$MA}JoZ_y@{3@n5W2Nl%|#9r*FY3;%BpxP`OZ86)jgWn!kC@bz64b8 z4SKN6Nz{kMkkG%{+F5U3U4ssyxnhw6Oa`bl*r!fJo$LvL$t2}hMzJ6>)Z0R%+zOhf zVjKf%7T;Z?f;Ii?tPL?{-Hp@@q@Y3Zk=WI>`k!s%o@e7*h-2N<@A!29KvS@a0WN>LI|`W~@fWWH@YX&8 z(RlzASRMp?0A$2ZJtO*#mTlc-;n{vISxRsr4m6VTzBk$HQpf@X_rpM_}a%-!&`&TMlD-c z0{>SN2Quz{gVC^Dtm=Oy%^EwYKSJ{`Xcq;=m>zq8&47=nG@J|T;VbqSJ42bU7ke`M zg|o=j)Oy@QBgkh|hdg1YWeuQ)X)Ai50c3vTrQ|I+l068=ev(f(WpGrgTWRW*1LZOwqiI|5$Uo|~L7wZx`AjSANvRbKi0uk0Wgkv%S zk!Dg$7tAgBl*>x0LuX*2_52 zPIPfUpxsvBJDd%t&=OouZQywUdtfen+0zM>hLzA*ScX>O1Dsc&-S-InfOEM#?w8Sfz)vO@;sfr3yp8iEdx^W+(Nj~Y=E>ckCr0zM4iN$=oKXiA!% z=1TLYMbK8V4eSqHMNgua@(+wqMnA?vMxj_Gwursr3RA#LU`}JsXRedqnXOEMMPu<< zGL}8-v}Uk-vX2|Y$>f|fH#iSDFFBvMBJK=ssXbzEa-VSDaT~c!+%6uS=fdm5o5{Pw z>*6DRAO2u|DnElioqy5a67&-62yMa`;cVesQJ5%g%rent(H>ES=&0!Nm{OWeAL^uD z`ZxLy`hUh17qUm}oPTQ@$K$-kr=dIicUX&lDE%(_WAvZsl3U}y#D9(d6`u>d`SJ+) z)bXbjOodqCr#Pj=ltQIOX;S(sM^9X({HcmbD@vQ3)}FRNwMlhAbyRgu^+5Ge)vW4L zBeg>9r;bl2)2F2`Q}0%vP`_2TNUt)IGQ1g+Gqz+rrJAWl)Opn9)F;$;)PHDkG%78f z#-`=a)HDN)&@n8G?-_%cMVUV{JzfvL0u>7K{<#f{4M1(VhkIw#mBD*U4cJ_;$>v3!d9Hk_{4WJn;ZQ74+*MMQVx?8trtDGvq!Oq~R3EC&tFEZN zQ2nFUtF7uf^=9=h^=0)NO`_%(8eBta4r<-HDBV?^UpHUZr_a^Dggnqo;M;`jVC2eqCoj) zt3oIg2hZm8vxpZ-$T^jVx2G!Z*X;DEHtUp}>D!SCD_gy@U`E>CJKOh(gGh)PUd@=I zLVeSS(Q5r}YKqlfW}b#b#x2-Tw=Bn!utOP{Z9HWNt9>gyRa5~k>XtMtPzc%TN-#aW zY<0dC_;}Iq!AhE%7Y9^1=hShph?xR!n`!wuXcZYS9%pb|=Db+wAVQ?6jl89ESF*gB z%D98KvI$WuK@tfyt31Ds%ZMN~BY>clpM+w)kKjgyl2|{E;L2Afv~I3^X+_Z=>!n%~ zTaDIEJV`sWOb_;vQ>*>fjhWo4;<%A3`cYgggm6_fg(ju*l`&m zAhx=LPz>qh@e@^pE?M)lqHE^k1W&m#1OH}NA^AEdG?v%>AE+=x%Qh_j z|0U@|4**>fx*aq5vwsEu{4S-jAw{YImjTBSE_cR^A9-*wA9H^?XGWL0(iye9dHM;E zUK!lhgmW<5C*5XRiZec2U5%B$1QsjS0HpQ?H*tpcrZ-C4Ef%w36o9V=G;eXt`PBU} z9yM0zIb4BoUt%jXkyVKmGUm6%qg@aLltwOFr`j zHns@={rkbcwx&O?8Mqj)z5APGQPjN-`9xRm(Nfr4Xj50W{lBBFrKLry{l?+))Bho$ zg(Z|{QWt19E*vT;E37QJsL*|Fo|fHHYVpt|_(3MJz~?CyI@rGDv`$P~ENM|u*V_pH zH?p&G*3`3cVSgCGxNH^Ub%Yf}fz}tn81jcnBesADi|QO@=?L0Bp(X6pv$v><4RI_K z_l$yV)QlTYur*)r!gdf{noziS+nso*$G9x?xJHnK2lpnZWZY8}qOuIf*6uCecM|x4 zVpjsURHlcqL2BKBiNk2-B7Gz`r$@uN^+f&Jd)WV>R~(Iy+3*dV&w_bOx(I=&M88C= z#6|jelpwRG)^mA@mc!SsSKI?{7ENo~WMM@y=0Db6ya{ee|3Wg(*@`q@1G(5KMb5NY zCzXl_4tjFO!@<6JGcrb|s)rzz$$=0?p1E*&|0Ih1y~JMj~YT=CXb9f_i3 z$4lgER^0$hSW5EnWgFr8NI(h4#diqq_Kk`4Ip^6WB2Y!$#q&8x{v8aVEEZ|R2xh?v z(cnTg5JZKs27LRTJnS1%EbBYylL+46?HoDItvAT9gA%?|d*;7Bdt{h<)xc9VR?57! z76AdcP|id|HTq+C(^VZ7335MtH*vsd!X8Q!;bv026|4>dxoxL4r2vM&P|qVtbMD_Y z^28q_s0^iVLqzvX?74&f;_7vl;Ki@Q59PH!~?az zJ}Oje(z#_%eT1~mODCNt@r%WQ`~RVx&*n&*@_7j(PA#VWrobMkN?uxO%zh91iHjB@ z#GA(M6nC<2M4ni>;&8x0oD`GD?02J)hi*YkYhd9bT%XSV#q2K%2SzYjg%l=+hTJr< zGj!k;)(Hz_0{2LY74s1Nb#`~(O?_V9SqdM`agOFn+$~cGfCyH1 zSBb{Sh-vx#0Uuj+bbD)2EN*SDl~>;>m3s8nr$b|S{MQe974%!i$f)h7wq1mLf}=wo zzwddf75TP0vC-nUzgR_io7Z~%vWhMJ)FCMJN?bTn@HHnwMARda&L5}~U z%K0X`4Zm*B6gNJ`r*T`!rD_*Kg!S|zxqmh;{`*DnsMu})^FPfW#nV6kYw(YspFuM2 z*V?zSEx#sbUK;iXwrVR$_KK{MAPlKmx(rC5IoEZvkdA&6!XrL#)IzGT@GR3!ZlTfe zi&O8_DDU88N)m`mxeNG1QwoWAxE~C0_DJ@?<7_X>{88|!$04>eIY&pLNR9-=^TF3)a-&jh z*+5kTvPm=hM-0($!zSwqamnkHX>QOH{44*cHA^PdapA0Wp>isF-*>7C0wQ0{K<&g4 zj_TPdZ80p@Pmgq#m6r`85*bHE{v39eyNR>Ns1XpzYAc_^u)plT+}l0 zc%<*T5{h>AEmchpHb>LB-KUxBas}Nvtqy8yNH~AqAl0#z9yTW^*u@Qufianjv(oeYT!pBgL{}O+ z5OP)Cc2IFno6+^b`sy%~vM_lQ>s&Z$-pkt!D&HTsDopiR794Dw>gZZhgVeifb3LO*bRaAErL6~Ndt?Jj>h;-5Xd!6XRn@FFo?yI z12AKvTGpEibHRXrlGm#o#c+ePjx$Jw(Wyd`3T?~Qx++;*&U0p{mQLgSYgYeNBV@>i zB%g=u8s2VSZE@XF35cB;-75;2tY&0Xu+e~5)x(($8V?sZO6*M1RpDfxht&ade^oS8 z?HK!*zjRaiA8FT0)0T0Tk@hvb-Avng;zz|stQq@?l5nv)4kU4TJAbIQqY3>MJ{iRk zHTWx=f~Z@r>lL-wtZa42;I>3HB}KSb@D$I~Vw!38Y0gk_T-PmaREd`wOC!25F`Vc9 zQ8gB}1=dYjB{+=(Z^wEYHZ>wOPMqSYa7LQ)<|*1RF=ckoV zQ@JI+S^3LQ=vwA{R@jsOX1MW`&$KR3hC_*IVI+)joEZKkIN%de8pqVab{t#D3S9RP z>*9fV#h#iOv;Pt9V z7>QhUdDqrmZ)&vq5Cmq-wK+E9Y* z;t}Eoy|O_LLdRhN*fN{3V_Bi_74NV!7%qnGDULU+gogp?&JBNRUh`gKq$)(tL?E4T zrj{ugZFDmNWt6pRaa_VH?*2<)WG&n9?X?rW{0H!51oRl4A;itg<2(~zmS*8|OBl4E zb$I5I#qz7}K5SlAQT*EsJ1;d$9K=t2POrufO+4DgIwm{Qg`^B?Q$^q(N|#4Wt?26RZ51EDt=v$Zl1wzIrCv2we-8g!qRwBRW0g(@e-A5P7k%j=XdL0{FFq%pIikT$%&ZV}*5 zicwDa+*ZnctHk5VfU&Q8Z!7^TxsXaJfUJ({MIpDiHx>*BFSAESem)8X!@T0mR+Za> zlWBpaQjZY^TZP#ZSSWC}=$q}8;v4o^T{pL~@MgR0zd3oKQl40j!_9$i^Lanunh6Lp z@^Rpl4X8j_Q1`E6l{T zmpF4^>oAV{)SZagf0y*dLA z6|!=qZh5wG;dOIWNP!gZlQT-B{6FNTXJw?2A6({?uUDjSd?T!POyIGSi_4L9%~_-( zfN1xk|7jj8_2+0}R*Fc1N>$B8U?`VE7j=aXp+3p_k=U=AYU_rrLIJ|FQNEL_(+`D@ z4KL`$1R)iO@>JJ$?-qzKn=r-&8n}kMACI1&Qp%aTy+zp4!_HIALuop^OO%2U(Gj9G z%RyEotewKJMS)xqQlYgl<>3xkRKh<v)4X zK0xKSE40KCe-P-q+B$G$8AgzbG=K-fV9ho5kgjG2-tlN`TdmpX9H&8qzoyg!7S%4jzgMHz9@D zV);L<03?JYvo1H3#^zVA<>Rb%kH_i3@LOJyQ}^3s_^sR=$L@DY`|jI64qL5MRp5zy zBZ18WHk{wdia_?lq?=&Q+?fOK!wAVXcR&tzOk5XsL@|x{r*)55FYj?35aPc#V*mae z81ysva4r%aXJ1?Et-ZEgf=s9U*cLCub|Wj$fJXO?>b(kO1i?kK$BrP{Uu-bJy!gNm z403p;LIlGX`^5&@yfED%A;0ZU!V9QEcYEOd@F(W-J}&YGIV=wHEq zzk3G#aUaGZOsIv^iG|T%CHO&5I1VKb7LO&6942GOR4%3##tKrM8KDT!l9P$>(OnI= zut9MKW=bZ8%{DW8h0r~$2;y!KLVGtj9MqlUQBO!hS_X(3p=`;4%Bqz53m_4Dq}%(Y zV8x?Abt^QD7QNJZZ*9R$10r2HTvO-`)+>5EN2n{|okAkP!fy1tgcxKP*dtI$Cq@6z z5}i40gG!(X49A0RJeHIjfJozBjas2Xl23y=_FXCiqCx^JMb;DEi3b2X&z6e_?-~JP z%}}SYN*~@W>-tk+pz}DJi3zg!2cYyzk>ZZ7c#Ch5ATqbl1M%sj`)=;A;PVNgfncCQ zfWI#fyVFxPEe_Ww1@FiP(Pj|ITIpq&?bD(j&)tB#S9KFLH;rg;io99H4&qXM6OQ7m=^tj6k^%wtZ`3HKh-SNPH7Bt-)nch(#NUyUSDu){YK7o zHqd|Kk%>8_+6ir>L&VmPcPwOsJGcLjSol|0Q2z{;PH;d4Vz43wrC5d_TAdSb$hXHi zzcovDf^`w4{fCSN;=8LNSvFrUNy~Nl9K=CFy{#FUg-bI@+*~Gvw*0%Qpq1J&P1gf6 z#Fvu-(fZE7Y2+!sM^42TnlGs83QQ&`my0cUuFzU)!XKo)db8{_ePwO=Nh*>gWJ#nJ zQ{Lpf=!HU=Uj3^$%vFo;P6Z`e$IAC=U4RA^BQPeEu;r8}zZTaAE5$oZTa_+AP zc?;aFThE`z9ux(pg{8*JfP@L)n#QEe}F2*zu?(HXMI)scw$ zlIyGVtwj~ajcU}*f(Fu0PbZcC$hV*Z9 zfXjphUliqOm#aN;0av=l=jmTTx*6Hm&>-*wKjhiUW#Xkk=P)dFs|u|JhJ!z)I=c4I zxGMYrd@Dj=Csdt|7Gw2sJjOwzIOJSf=M&}q-IVT*rM5iBv>1czc-LtNu@k~u)EAgR za7YTlMrji%4^s(0TCV2oD+{KwYY8;3oI$+G1?@%a_`a?mPY<;ng)5s6L&^L*LzRsT zEF_;YQ@)C6Oo-f6oNCk<;afgSG89Q86)<1|)0494O?^g#d2-i{QGj7&mJWe)HV>=X z(D2TRK@GLYq`@0j7}lNfrf=<8NFy)m*!ax4Y{ZQqRYrAkm~79;9~|ogbag z>A~z0b;2Ud*|kY*wrYCy5$Fxy_F{~bxc4Dsj~bShul%T|^AO5SOO|)?9!7KI^l=n1 z=%w_$SCr_^?GnGWFUf~M2u&phq0tiaSSn*Y)U*|1$paBvLJ-v=b%wga-28m8dpijB zoD}GSgv4DnFZBw!<-asBv2RVAoGIwBY$cGvo%@J>kcbo3jCW@M{W1bb6PD~UU14kO zy_T9Iq_^F<@e@a{{z&e!H)L)FGbyGde?Fe9Cn+hEtw3TH`XYq~d-)^h#^(<&+BxY( zzM3G`IX$GLFI!|gX3Y8y;}SLjhyk$*fXav_=RHbgNU74gUai#n>s2-R)(Sh0s?w^| zQLY<_h_(P03eL$Wd`F*dGi*x1XB(Fx3VFMArkDrB%jPRh2p9oHmg4y^IT}}hsbw-6W(A!nPH|c^&yu%ID$T}An1~pYR*DL1EHs-x?_wDQDi=1n4>0*fgugs zFs29V(~Fds)odXQBW_^9Kmdo+F<Qrp z$hOW$F+Zvr@!tae&X_J#+-7JjJ+VF0+zEV8aD+7DH0U;EVS9kRgEZxm;Bv^xpHRKc zEe5S9?}Yb$&d70h+pe#BuedUf>Yk{SB9NOtH`!JYT=#J^$`uUw*%QTBI#0D4aGXHe zC{vF^S_eUy@Wm>exZR6raUr;mINXeg58WW-(i^S9$kkCHmxtrxJFp`Z4q0B2ouWCm zJXE=OiimuDNlSXe!l_Pl-1kG!`OXa26xk_H@o22Hbu47O zT|WKWz`2UaH3Jb^p?MDjK$o|#ve3$E=*QFYd}7Es(?eeR+hHinNgXBQd%4PbWavne zM8*PlH5gu9Ag^SoL6Cu0 zC#(75F*O}I0kkb#?t=~4C|B;B5d!Z;5B{K`|#dVVWfcw#$F%y+T-L6j7g*Q7^74cI1&%a@?ekijM z_K625p1+6^=1`)<%qx`g@n#$HEmN^aL`=myidA9!ildOjE4F3mz~bJj23FYi$gn7n zDM42qX<>SO|C2a1pCfu{f`$E*Pg%GO!B$8i5jVo06W|dGIhz%esjUI+N6=|BQB^+A zh_aJnvw7NBeH|B^LLk;#g>dL6F=IwMufOy-8SyiRF{0$dlP1Ljml#eDt2jlat{uFh zBBrSNRkz65$<(Yo7&2E@soQpTfqSx#2-gS-kD^AU0GMwF>_JKvn>*N>|A^VVD&-f- ztTr%A&6bTU9wXwY$R`n-7(KP^*~HY#5_bU+5=v0Of-r2SSHyWZ_5piMaT>(uU#R9$l@ zFxw5!N6kj2 zl22meV=>jwSuW*gi`M`9{Uy!C2)~gUrvVp(~q^FfFR(L5c<2n10ybc+PsB}GW0PPzq9K6c*n_Mh( zRrjd{kyHt=)iU=J=g<#LjN#3yTyoRhva<3rv$>?Cyt1H>{pAZzXM;wqDu{uN*b?(M zmVjh0CTYpXKLAonS>?0(sJeP`IJlys3qh2WRaP&ruYa(eQUSrpw?$Aj`vgYD#B-t} z)V{7(j#aL;*J_;Er%$rRrbzKK(JC1jwL0*^>B)^7H>@X!wd*%+IcaIJ+^slq{@nSK z)w`WpkeAhWLLsBR9cI>`Vi~Y@A&#?0nXRAjte>toQXGpFVj*U9 zo?9=S!U2nMksLh6w(<21|i zN|a^dc1KU9rI8n*?qYC6vlulPj)$Pi`u5nxSbJtEV9DW)Z@$VxC3!eIm4YHJxj#Vz zHS3Lwuqx#Yr8Cc(w%O(AF**;A__uJq? z{;}JWO8RoOTD*7HcW~?arH8kg^>9J(fiu1zc-@*!!f?GLWhF35r}cD z)$iLv)jA{&1K20E`k|u4NwCmN537+6SL~7wv~(t$v60vg=OY?|=J^C)tMUdQBTZL@ zh!Sy|*7Ei)argWjtjzq{I5tx!v3XG2>FG9D9B5I*pz=#_1=o9lQ&D1NUQ$x+Ndm@q z0+t<&a+)xv1|X~QDpyic+7RKV57d))BZ&I)E9?^KRx%R`SFLgFM)!?(n%A&`aP z$3@`~4@;yE4sz9EdBk!T$zKS#KGdxyb>5A5m_q`Rs-(**e3xr(4{fJA7I_q1U!;4jDQsC z-msw#3p-xDRl}+RqP};Fz{T+~X7ncHPPh>Ti(zqaVlxQLex+|rbw%7fI`Ecpl!ixG z&v#Q7N}Nlw9|>xxYpdOQ>$`Z0_7jp;XWh60mmt-0^QX1}eDfG52*M{6T4BS(!=W?0 zTOO#8Rk}svPjTL$6)XOAHu6p=wSmUg3CO# zZ}cu=$!ySG;PL#O9diYdf^QyndO7NyCnB>UV3r@Z>QMa71&PhjhQ1iQXF=6cyHOd0 z3^HPwHU_kHBqElQ_!u-fXyVlw9m@9AqnRCos2kxD-%VLe0s8Wlb!$r|<@)+U1e;^nzpp5GK%SZeOlR>_%Z-!utr;EzUr(-OsSK>rB5w*)L zc3Mj-5-A4B9m%U~zXvfn)?uJ6^(yJ{jO(Z)9-?~1Q+`a7Dy>ncsOaf;Dz`-8H%u)MPkV;$R|7 z^cX-_Jwt3s4+uKF>nZsF0>Wrx1!8WiY2g*c353@|20GERLdK zWuBXsO*WVl%SZKqmad$x+`90j;pR^Mc`5tTxpbD#5c4I@j=H#*^7?WXMu8UQQDY*^ zxqW1#nll+TN36-Yjd2WMF%D|74K4uY@myp|pAAeKS!rI;()3RnfowBgl9jSR`-JR| z<$f2r3@cmmc%3f;)H@RK7$#4w13LW@Xd5Ga{gTHqz4 z@ Se^n^Q=&XYN|%!jDI-&84Vua+RZ6iKiYqU>%F9q*q9Fsw6^SAMo=<#1(KT9? zQg-RB$|*eVlrB&4@=LUg0V z3Ywgfy=~j&BClGa$D35>4Xy>8(7U&O!`4ZK>pYGYWmlr&eb)F%#)K z1-e_KYv2!4J0N(MZD!ygN1jR%%s7_ZFS+pU^zVC%-7?V@L{ zf0gJdUHLQ*@Bv3*$^X%jGvVk^6zg#S}Ad+2ZDcspN3p(_I^1C$ow(^}O`@!{PA5fRoqORYG)`-u(=cIC-VCeJ`v{Uq4nB6iBua%qusByJ(UpqQ z&^2&lPrFAt@)#{Ail$`#d?8 zwFflK4#LRJTdr#Mvc58sM}yXcelNYEC{{>WyS!B#2&Y8R)va)g`hWcWU;DyHk%lpP zK+Al#zV^^RN~(C`&Qs^-dnZQmt|yiqUJf%(5jZ zJ;l!1v8@LBPHdUXFjy3g-RTh-#n#p7q(uI}xioY0!rLY$BaB9(2OT|QGqOTf$qpNz zfWd3L4mm9@$b7FVnX6?J)hfV0Z1MpsAb)@)WTZ!W&H_7p&`gY&ykhy9Q`xvAbDy0v zzQ?%tTns-muzW}7n>^J#=f1kIt3%>R$*I0ZFBa*p1pIW@1x1s1nJW4&x{s$#*&U2> zBUCn=%FP^%33}**+)BNXZWr)i ziSBH_L5Qu4$oZhFNz!vZY9M^zCDE0{k@mN@0S~iB5Ck>F*$GLWE9z4)FUjYpvM5hx|{ikt%hXW?F)>mNXfQpm^n;<)ijxf$APV z3omS>l0CZikZzs(xs_&`cUJ@FzG}X9<-EvO?41C_NW4)Q6v2GwVxwFQrw3pz525`6 znBo5M?RpVCmCeTMArnvA66VO>^iN?2-*Wl2>ETz8Vgok5vje2f*#6}F)19M?RIg9(@EGoda zqAxxZ9LxH-8<%i75x+L@eUx3>$L*p_*Ly_H*S#QuJqxjLf%bs>XJUOw6n%8j{493W zC$<SW3XfEH^>TVNR?cqPPhawO#CT9r1q81&oQ;- zj2W+9$*NY2i+;Z^OtJH zXcmyisX?gMR8S$hFxAwAca5YRk=&AZ!fS2$^7l-|w0hzmUhB@q)2SIOXvoh3d+Iu; z%K*_96;K9bT1AU_G8^I=#6+Qykx>HE-jvXW8HC?p(kLtxp~#&e7v}fHd#Xj6fS9(0 z4r0J5N_3Sc%^Z1Y0bR(h7Kny41jQh>MNusQrP5uslav}6Wf-Q80=!ZiLTzBiaKsQC zW~&=>?!cR{WjUSJVCd{&JV~rn84ISYt$HS^0h{qeXEx$a7Ki-;T+J1==y;n_k`AP z;CE`>Z2|~+3lXo~!0l70>8ep{V4~P=mln03cloC!Nr6z4;40zgs!P>q>mMKlhjij4+`aR?6ok} zb#09D-6=ib@pCH=dOk%+>a!*bYcLkZX}C2Fj_&d(ERu_S;wE&;*>FfjI76Ijn>oQW zi0Mv2G-)(83>(v`7Qu_8bWo=ADm`~3mB34Vz(_|$HssPvq2!h)K^7Z6n>$cF z08ic))xc@*(H+sZ>5?b?hz8vOWW(I^E}roAIV&H1;x2 zYg^BP@7b6gulORyZSB>C@&XCtQ6ZiI0LAp~)IwQjrJXssj}6r}@9GUN>SD|9Mze6x zx=PgNU0NAsBlU+Ew{`hbPFkHUAf)VD(D>k;`3L$exF8{nU3=Bzw!FeM*JSfezgCPt z5)~Dg3Nz9JIn33Gs59}Vk*d~mP>u{^+*j8+g}idkFx2|f-F6(CDIKXc@MqmHq6F~> zp_v=FeQJ0B9+V4K#@F(AfL2#&V8l~;VAZzf*Yd5-=2GKU9B8y-i`plaTVsfP(@@8v z-R<{l+Rw#&e-m}ye3!Z`jjdvw>`-190#?U=IL-Zs2sr67mIpV?ImZ!phRH2(~QbqmB0snJn@U7A4}>d*gOx z5HB(Q9dR_R#zxlG)}f*6)tt=<=-42yvWSM`F)!eK;^Si~(#C0SfD{6EW$qx?5aMZ8 zym7lTpZZ5d`sOd8WqA2elm(WCHT&TC_85nklMCjQN)s>vUe4WYlk3Z{>XZCx+k~nw28q^b0uex5OS`nPy*p zP(lQghQ1?fMKVf^VAv3Edz@IIEGerw^_66){;Px(#W$Lakfy)7??Og->k|KqNEeKe zpaGg7z}QV203YySBZk!8xzJYzifxPl&!q#{Vvn)pDf~188A87^t1O1vsr~3e|Mg|n zr*9AE%H40j{niU@efU7QBR=&m0{YJ$p6*om#P^<2=>N^NxT|R=4Rk-w7P6!H-uj&` z^$z_K5qJviTH8T9Le0&ha9f3`X!%Hagkl#qHp3kmBxLU8**K<|cvL$9shtbsyTBWV ztip>;Axy?tG(jJGA8|OMM-u4xZjbRbHsXV!qN&*@B6mz=JywTE(L?|EH{vW~#uTC@ zr$vD6M9vcBAThzrYgCAD_8JXaa+~rPk(Ld+7mqB?K!#*bGY$pXn>$2@$7fgJZsmAc zkHN;6s%5vJ3*t<@r3+~RT4I7*FXnGxyBus+rdp0g<0wwn#DMJb9P6qL_qNz>>?0!DLeV!B-w!Ffu zM-&fql`DYW);YK(PLew!|0lZu`NL`XQO|%G@sui{bcV~WU+v6LOBh# z&qEnxn|cA7V~yB0A-G0`(YBI(6G9@k(4jS&8PDzw+)>?$TmJ}93bGrqD!MJ3%q>tcsIMR zsBi+zn29iqMTQ0h2!Zf3VzlENL98uXdwb`0)HyAHr^GPU?ilQ-bY4s;lp71}I$1Km zu%!Wa{_G@Mx*b9U-9tuJp>6$xq{q)ZVq9CE8=d2Muhn{Cle7b73%0#X2h;P(Y80|KFdFAxctZ`wRu z9qp%1t!;giE`nY*#Ytl`p1!|@O7ojW?r+OnBt$o z!OO`z^$X~?NDC}1EvD3&Kjh>;L;e3I`5#h;zM614j9J!9e%39H+PdWKP>IVbUts0B zbr;WS%DMz}nXR_a8rHwnGrT!jCi?4+oCC2M>1_sZ5q7GyG#3`5)VT#9*gkH}>8=+cdb4>ofoe92)R=&(THna0F>%`tJB`1M_7-y#dDec11z1xP#V7`izgcwGgvI!X!1a_? zTNswx`Uz$E>il&#`5am~ea0XCzs%sD5kMNP8JI9!d#NX1Z~uriP8x@rCZ*Bss^I{! zTO=iA*Gx3O z>8BGK=m6$~Mci^z`{1HyrrO|rx0U5@=zd|XJ~Bi14_K23ST+kM#m93Zqtta?SO+CZ zCC)%1<^1fmakWz#+Uw)gr9-De1U2Z;vjQ|XkJANbDu^(A+jAMa3=2~lo=-t7I`V?J zsGiT1mzxK@u0BVkZCUD0b{VFA#t(-lA6PMz>>3}q$h@xKwj%15PNLlQ@uJ4Pz=@Yf z>gzi(k#XOfFnps_te}4rH-m}Ds=tZ*8@oC4s|2HvHj4omdJLMXE56nA;{nr*Nle}yTS?u`B*hQ3@I;==cK%NttdZpb8wSmdwflT1LiF|9+j(!bh!};L`_-{N~4_bd+ zNrQaIX^j!p>3n$uacMTAp1B!yWMX4EO|-Oocb$UHyk{P8#4*gm=Xzey-HS8IJs78Q zW;I|TCusctNYYp*wMI8_VwCY{7x6Z)rTYUX&So!YN&ZMHbc4LzM60Pe*>Gu-N2!(t_7N`O1#Vs z>f$A_677U2%kSsPpVjMlo+9QWP2FIE_HoKg8PT902y*f757n<|^moupk zRIWBsyyny_&qrQz4>XUs*NjKyDMMx#qD}be-(aBC={X26rC@NnM8uIo&9Kqli7~$3 zZ#7Eo9d^50k(+m5#)RVw?tcRQju=IR4I5o?!$43Sa9Cqq_6w{-x7GQZlt9GGy5g(? z3-E^kD#t6vx&I9M{ZcVlY62)7o#TQ^TU8fSPUt`)B(mM_X(7(-yPON%NCnXpy9AUM z3ij^6DMRO8n}=K(pO;B%TUOd~yJ-bNPoU@(K~ZQ#`wkXd%mK@E8-)XD=d~chv@82O)4;bNc zsaP;TbchUT{zNTq<8Q}qZ*X)hV95NEsxQOPG(I+Rwtv2-S;v*sf(-7XL>2Ifhs4l5 z<0LWkp<`6;33cud24>69vA5bv-mBIYnMV5WYp&EwX;Ta%tgVvzC*(d#^5op()^YLj zLZ(8Mu6TuO2@&XY9q;|0AKoR-cda-Rf6dOqN4#R^{PTSWwGxCsyi}HRuGf7!;xo0c zdBiLQ@B-IFo@5d`BYjSIt0fZD(1=xR=rAwYzky5MHg6Owg^?^Hody(nmMB;v?7VhO z9E$({&s>1NQD^iIC}98oxh|3Zlwk5kSvux844NR{Qdfc%VI-LhXB|pjdpBW8zd! z_rO7`O-ie_NBx-2_c|H)p)Q63Ut^Bki6}5JHMGu&&*lMvBWWoOe7lA4WgUyuR?E>$ zN6(K@`?yzpuj__30#~q~_r_Rx5?h2-yt73S2Rv{t$IclWs4@qi(B%I zN2|T=LT9NhVuBo)QShO67*PfyQD$v1(W}KzV*gCEd4uBh{&+8JKt*Ng7Ze(jCmdl7d0>Dcoz( zJ9OmeVutp6_bh2M4;;!un=+oJJmUTwqC^x+%PT9r@4SKra1eV!bj77v9b7V^iB&FE z5qBZkj=d8PSP?xc8}>!fhnKi0=)p0BH7Q-ul5U!)aCQR8t1#KwXW=7k%Rn4m_3PZz zBXMr^mJ^mN_fGy@>2q`A z(}i!iae&W!M-)A9SXhHNW0%E3QH5R z0a}`hO%hl^7)GSiaQaWl94%{%CLVeJCGn8&M2=>NvKrlA@tc_iQS2^vGJjY!DrNna z>#twlR#jtsvEf*qi5Vf3z`m)Pu}k|hk9^Wml2lr&Q4{K=f>n*u&z%pp&Pni-T9$4Q zr)YvRtvuc6T6LKFttqf?nq~QzXAybO)rmvRNeB+*D<^|-Pg6Ajr+o=+9Op#{6Y2-d zr-UP`UFuj1r`DtMiIStF)bnx@0EL>EMnAPr9I9^lF)GFP_(_INi9_@>Uw)fy!-@_# zh4RT@gp?5VE)jG0LnJ&&BVt-@^DuEe*Vc_lK7buVZlnPYU2L#blCsb=+B88K>xX*6 zy;m8$594hrR5ooHSZX__JMxyr9|10!H@|u9&9^^khy%>H9|}cjR(UaxBJM*&pXzTn zc=H?3LIrF1&s%~97h<<_-ju^_>-nk-qAK25^;}1c$*VhlRr+iOZrmbP=n)=~z6q-0P`hhC!o3=(SwU;E5rV>I0VV-+<1F zB4eYiZy3*uh54eDi+sMbzS--#%FG7r-YnzlMx`sZuQRKPY3{SnX6|uYV4>DPojY~* z(v|oB_y6M`pFD4LdV@i)+v|I)-M*yhhM}93G24s&o4Y#A)a00upanLQX6^jf()_o{ z_YQx3B`U63lZKKkOFglD(Yx%lTFtX(|Nqx{M9(7(=6Zrbro zGZsiEQ%ki!)6~H5TA*JScgRfbIB<~HRHN_{;5PGV84lsBHb?TyR7gX5N9kmxP*Fw1 z7jP+L^6u81vy;=)v(7N98@LpsOBtLh!(Nf;9+e&7Qb{3%M7Lk;hq8pD4of{wsq>|q zKef9fhin?+eZ##j_N%+Bv}W&q2^c{}T!N15Mj{z+Hlr!9$bgcq*IlugDzuFYk--v= zSkO}+MJ{h2GjorQM{AEl-~)gE#F>8oat*k!hqF&bPv7@X!)h>NeeJ2ZO_P#HKUy+2 z*kwv1&CP8yyVp*a&ajjtLJE|AuD)HLXu7y)CHjw`0j z4ygEjfLuc<%tI@kPE%e(sQ+_gK~Eim-FZwg}3; z6K`6%)e>m=bjCg5HB{ec&_W01_A#!f3p=#n3@#&uOrbh`5Hcy8js>0a`U`mVSl%^K z$wm-o*89>pdknuwcQWW9Y>L`v>6_Dw>YL9-3mrMdDn?r^!Fy==^(Ng6WH%yKrUw@t z4dGr|&{?+RRHGt0=FlpvKt`znCio*uoO9e&FS_m8K#(1Ro2K-cDz;*_i!%K;PdxM6 zT#f|t?Crw!GW(SFE)@o|R@TxGbyWU5^Bc7RIDBUm+9eXIx!=dw-NXypPQoQ)klvi% z>idEKK)yWpTf0WA3ceS1wvh4)0KhLDvirsMytlWls4JL!PFqhc0D!>~7~(9iI<2O_ z)-@QgUwrSpf)$XVK(6D+pi#OWpoI8dVS)-!KZ-y(Tv~C9M6ZBYS$sOA@QA&mek>x> zM2=X%-!CebWc4Gl_!xjr1Jvh&AT&&$Es1NaxeXO+FgeNa)PAK#%9eSW1P*d?9mg)L z#4k%+$Jxw!EuxB+NaKM%%IpEs_h6wK>$TVSbcG`TrPMqdwY6ui)0xY{GynwY;Fl}& zw07Cinnb7l>ZD&I-dmZIBi(BKMU;jM(gtGeymwg|xta)j)+}pmS|jrrX-}HvZp3bm zn_DB3l@IpYO}BPBv3Hl;M7j-eVn5f ztl<_wa)7Bf2(gol3l^kMUx}2k@ApTdV($luicjQ7-NvIF@LuhFKFeX;SYLR(em%-J zPjx<6y<1AI&3E&EmX~d8O_zjBzU_aM<{saBmXi?081IHS?t832kIHn(lXPvF?CBq3 z2PV{uu9%#^cEZW6Zkc;w&N=xS%y{oo`}7faQk%2J-N322;=u8 zHb(~gcn1L4i$+fIoVlD>FV@r6Xk=*T7UNq$ROZGzwS=Q9Lc-nBAAdYGF#AL0W1pqRvbisB&TLdiSM2 z?L%a@o&tS!{S(Ly!8yv%EeVTiB$K-u ztyRkUrWtwbT5ov^{zDP9qM%}WWxGhc#pR3!&u{cv_Is)N)9)S z_kur3-<7Lb0%7*G>o@*Cv-I~%tH^HNs`kaIgNNj=71K<=@6O#C_q4ixE%ef0iLmbT zYBg%mWrdl{X3(z5kEVH2=zHDnPccnfT$;)g%s~Ak^GrvWVV2ou>TY*9-y0vl0*ea; zyl+m&2h&ntc=a)bA2qFYYdedznPd9@MX9o4V{Bz84NpV`pcoK~V={?}OOY!lO z(z`f?2oqtJux)*G6weEe>+YwIz2u}*PODVqlFR6L3M-vzu^)}dOlg+l+ zYMbqL*lCyD_SkEm{SGKms!X{Gm8x1T#x1Y?<|jYmnH zRJh4^HEKz!nbA}O^^ZFrvgfJY?bSt4fDUNwy*t%T>UOTJ`p3m&PZvgbTBy}6)gQg3 z14*lote&s$?q2L3Y-~E)19yK+)jcVt%F7gdc7OBYanN0}HDSG~r8+}jN!8BD@6Eh| zrrBb+QU?y#^FasGg#aB;6Y?g#4OiV%Kc!x;N2+0y{-YgatoPb#s=!pE+`LJ|3Orqy z=@d417`WubQ6nxk`OU-KFr7`Yn}wV8gVn?Nph4|jxAZx6$c2p(ZNSJTMqr~UJUlV! zTy$GU)|Z?2j@3WgI%%TBrnV8X_55J2ce>gUhkE{vttrvrp;|}@^mbOX=zUR%^>QG< zz;5%3&F!@Bth{>fzRMXl_l2Cgw9>>Xmzqo{hf~&GD~_OlG>JD#C6B-Ri@Q zN&>YW<)aS*Q$faN><%;rYiwgWt)GpyD);yc#c%87{J+2d{=qu&tH)EX=I_UNo()@9 zbIOV9%M%UMy>_j|eUGih+P^+GuovYXYuLjRf4*w8^I3oP-;(1OCAa2oBTBEv!JWTmfW4HL)ga{Z5#4I60*O3=9gat#sS+82A9Cg=Z%Xw$wjTgg_ z#~gK45vwliI*K3XJcXQ6QP%EjkS9X0zs2Y{vD2xEV8y0sCAypR# z9R23DL9`+ws$vg4Z&Ze4h{zE&IIxyde<^PPm==UO#7u*yt-M%DTpRwYBWQowc!z`axoWCfzwTq2nvC>c!7^N3xrAlFoLTn z0X7081Bnm>AO(m32aFpG2V28BaX_ZSf{VM?n^pDraLoUR6{=f0IqJ7-a~pCS`@BLMD2pzzdQ?LvKnBML9IIBs%R~=8EQ2jaugU zaoyW^@%0L2=%_Ia9X7l!SDR>VTyn&g@5l5!V7e#HuPlAVjw57FC3wue?=*TQF-MqJ z5J`x|Bu>aojyqnv2--TKNyM6&rq?L5pX>3WdHFnU9T1Prp-LoetT@m2=lQw)x%a)d zx4ms|!8XPQV?~ebiGUbIl-XF=d}NeG*@#)p3c@duMxp&1{ZYou9~+*Z&i_+blbf5Q zCXrf98&PW`O)6<>sS3rq6=(}=UJ6B}_?RGL_y*gX!5DA*|6wvW_@aC3O?7Wbk#J8W z7}b~^%ZdIWs^9N^z)vGex16mw=`WgmoHxW#DF^#K)|4GW+HO-M6@t7#5_g`l~5hr-@bp} zzAelx^ze*k@-rrKMTXdrAuB_E)LGvXkR=)8goi#bwbuew1Vx+ihw{4S>bnY%2X{A_ zfLVgi{lccDf$|EsaE!P!F>50JH)-YS8f){@ch!Fpk*F-NSvBGX(087Hxq_y1@5lG@ z7xL_EkJw^4<-m#m%c;%8N#T!Flr%*GK^g~WncRzYTzQuTB{r`EWS}4_^6Tlk!{@Y5 z8A5}Z&$LCRTf4`iN_1N0VG0=%$Cg2ePs{`FX`fNvJ{&hTK(yF^C`|)Y_zjBI2PCQ*P^bnax?0e1YY0Mtvb<$!>4};E4=05D0FkZ_ z$nvz(4kmL#OtLn`aNK;_+jWn7xvrJ_`8LUl0->y`S9vL1XnKW@BmwP7)!r76gbNNK zbavB;&ULJ6aP}=8xLlC=#N(YV#K^b6>Hvtc!jJlQ&an)+a?y77FWtHqh#`}i!vEX# z^5o@ZU)0w|2qBnnfpA?vDK(i6;%}xu|(9_)-nUZ<4j>z zq=1z|@bTN*OtzXm*Wz{|FJ^`3|1q@;?9Ju9)N71Pl_h)x6{+u_0;X$bFW6B3Y@Y%t zq+YVrSYg`Ux#{;MKlx!1LI|-IYaz>u%Q-Xm6#zm=06+?$4!~_(n3foVePxLhBqDko z*o=FD5ny^ljDap?%^*W(u{mrWU%(gfE-_1Vi5_{3JWkD0C#aLO zMccH)7FWRk>-0;=N#v3zv$ta-GK%yebw~-$ry>cLmW6~6|NPYbgy=_HLtH_eLA;LGh1h_2 z=~DU(q7RWkMDltbgbATQ@DWr5flJ9kK-t1vfBai-+j!D-_wsX(-Lq<8>-=PEVGPa1 zH9NH7;T_ob&aP$W9J9x*Qd)0(+uQ`-y_SMkt(yP&p|lkM5P#2WKzuhZ>^9wZTjvVR zj?JFgGNrR}7R>9J&ZT9}ut^w-0P}A>&(Vx*7y|I`ebpDe+18%xvDS8N7j*0c>`SagF@cq5?zc07{7FovgEFPFDHhJ&gdJ`gW z{2w6BnWdfn8M_{`v#3*eOaDip5Fx# zpHnt`oL~=`co$+T4O6L<5Xm!nt*IIs z3qcMy`d4d$kk&&ywP)>bCI^A*?iFou;j|rW;X=bkVYS4G?y16*JSB(6OalV%{C954 z%lCw>=Y_y$Z~I@%7Y?gKDe~E8Kv3#*csH+C0Df}-z_U9L_fY?9p71>dJP9^AMc7z7 zlN>dmG8ksHtxeZ?OshoXgeoifE{)4h0e>yF^vp^}FOkO|yUUox@DsJ4{QJOs8)Vtz2bl0gK8pos_`ssY^W2{yJtdtTBF_82CR-IuWBaZD zc);CxXL*$iXn1~oil7g`-%l5tF|l2oiJx#nG((dUUw6CC$dV?FF^#b>1igieN;J8OV^T-CV*2001}0OY`!S;&B2K%6#cDG z2IInu|A2w#eE}2T|C#Ui5G}xTp_fI&d@()KUGz$&s~qX0219PQKgU1yWRa4@buZ-1 zhi|&+)NV!jt+P)d%%rr8DNUAmdeO@@6}MVAB%^%PG$R|$yUXTNKbN3ut~=9CdxoSh zt#ib~0qy^QQJE-j2K_q%8A) zCjVYu%M0!~VC)U>zi&>>DgFXoZ)B-HTm_GWZ%v)|FA0wFA1-otz~1^-=NYr++%;JU=|7S-j!h*b#E<-DR(qqzdi8 zeZ0Rlw3!aqpv-tuc(xXeVaXr;$Smd5bw_>Gg~pkP2CVEMC}VQ3P1t0HCiL!eP>!?s z>>YK1Iwu?|u6=M&9@CQydxuOiB)FUC$2Ah?ob+@)a)`4W&`)NMmf!Co;@JJ`+j!X4 zpEc(i^(*kkNo&84r8Js&WxjkbW54+hp79m6n0aD511W3H{IbzXYkJ+)w2--{N3uA+Qa|p$Pq#gT9kLKsLiTd^H z@7Nfej6`$83}KIhj#tvEmM|dKHWAHA$L@q&VNb zeZh^(eUdTds$3iEjypIYPHd_xVK$5<}ui8DvaWTA!&>^mwH$Z-7YV$ zwYW!9!-hk3(jRX4*BiNHY zH3_S?BPkPSl67jHg$-mzPrR}QOx7=p5hhFBw^UBn1if|o2K14$Fx4-iygj@%GEonO zy$i(z3V99sdW<3DI?I)+bpv@LeV!vFY_8&>wr!VT*|80c4X^Eau6id+w>mJJxNpSup`>P>Q1+&$SE{}CaQ$ZEOi62}0nat;w6*y%+!kKsM{q#vwl(pU=Q(Gh59z_Jo#7*MXU8L~Zyafu%gHMb0aUVL~Q0nCU9TjOa`s;sN=qPinK3SbM$4Yid{#Wd)_JVX^pdp`e2)C*3%Bb z9SMR#`*|0GvN&FTIcJhzrhE{p>9pu$yZ4t+4L0J&!Z|sBl?k$Yc`9ei{Np*#UXKd# z)*R_~sUx6=tQ{OTz>6!cbfk2u4Q=ibUb`?q1gX^J;)ez=S5Tv#&fQv$_j2qKuwLQK zg&mA1$#td(j&M9_WYxPdWwq%T%fUzSM7j_lXy+h1UmpD*vBe;cG@uxu3AVvS>lryW5w> zqkx&>-Y@SYc&r+9L_rf_(D+9k3g<8_59P~ajk($2zdqkt${dtWhC%*r$JpK9W zp2xF4@UsJV>*uNqMq-ID8ZQ|!=dovBk2Xg?J$7VVC-x!i9d=#^d`pIJS?(ufw)-4c z;0@lKyK}bcFc(W_?J<7A6@morGFo-Jnp~mm!TB0qwwt9V>@aT8E0;>(`6+4nnflUi zhrJ8703o-bNmlM?qv&U0S9>0ZY{ZUuho9Sqsn8g<>3c_F4$R}7JztY`i?~NbVPPa#P zd*VCw-g@f-4BZQ`5tw~1YDy(H(5g)%6I`c~F_UC!(YQ?Gslp@?G9-p?K#dA)R->G3 zIK-3`d^ChqicUf3r67frl4iRCfk5-D-=P>r90kr7wRRG7$yKgnh;RWCro%TK;Cz3) z-?R(~!IDGB{v0G|VlhWvHCOQ$Az&ekz5*}ck2ky+1|Vl7*JhhK=1D>-P?wW(=fRr~ zp$P-bmr)6kky23xDtU%-B<;-QgHSL&LC=c`q5ZhU0#ov&IkauLvhUCorsyf`M2f-{ zy*c)Bjf#O}ZH*{H@nK?9DFG!0pk}^=%$ce!t`|N!%n6y|kQV|vK(;0^P{RTD$e3~9 z2M!~{3MID|d;(GUmY5r`9FRPZ3pg5HJ~?L+E&^jY7eRuBiy$)LuMHyw01zSLLI*Ao z#WIwZ_;_&UqZmf~5O#BYFM+Ys_9sea0zlKT1ZQrAEAm%H`Du-CIK1*iyxOyOwK|1? zbxtYg_`DDelN14!feq9D#wJ%VDzx!buH%AT zM(@Efx`8+GmWBD<3pg0bKcA;F^khN66sxd-T@g%;avOLPZ$&^o1|f#=D8YQp$9&Ak ze9Xsu%*TAp$9&9({7N!;&P$eb5%`Xt$Dy300a*qzNX2NeR4k@q^o9V8+Q{yv#}OKN z!c_BDe>Mb&+g3;@=)I?wmx}xAai9t02)50OkB%k|^a-0hr2C;W+BdVy7%CQUPGfZe zl$Sd^qj42X|91w@0|r-^1VQTx#|o%iFxND3%~lP7IT{lw0Mf`s9yl~5utdZR!UXZ& zDPCX3u`8XB8Ejuql!-0hXIpYJ%*uttJ<^2e)nwKdaRL;w-w?@^h7)*LN)-+h2irGK zp~wL%q)r1Uf_No5o7c$5^5w@}>ddh4@Dv&u#=hYC6&Yfd?N6P&>*C(T(mZ`?izXwN!MItQN zq=;K(7j7~*43d2rjT9-q2-1K<#3->lGb_BWt+_e_2Ym_(vW1xIGk0M>C;>T12I{P;el2&+c$)m8mZI&$K@A5Bs~Oh%o?;S4)UR zf=6fh*fI>E$noQpGm@f@tj{pqc!%dqU8Z;>!w*Oz0H#uPWLFDw#vSU+gzv}G9kFr& zA;Xsl<-_I3o&kdM)E1OdMRX&JN%#_NDWJ8^29@92NlYHVFrX34-~apI7yya{QzDcx(jmG;k2*HM7@CBCJ2bCsG=|%uKS7tYkaIL2*(&GzZO1^U%F?KV$w;9AH#1 zL##?xkR4%HaiZL6UJbuakPtKqo26ayKEX%(F4bKPWx=|%zkc(VZ*I&hd*#$*az9rzc0>i+0VOwe?prc zK$Ko?4aL!cm~s&FiRrA=i0J1K{FFSweiz$lAu; zf~f$$S|NXt3jK>P3QSs?+SzA)F^C`u9$|P!v}f9TTeVHwwL`mYkL+!sUZ-|hS6Io& zJWU;CANr=YaWD`a!5w&K%eH>zmOae=sRQN`{ZgZ{7OV-`%=ES;QVA$}0vywp(k^>)GY&VDxfooh^Dk+kCah zopaw+KYHh(2U@kc;%BEcvubeK8GriSA1>&FF!+Q-WaJbF3eTtEN=wh1i7&tOt3!nq zt?w^Nr$$}gXo*^^Bo;OfUOxUc;27ZhP&Tr_p-uFNYn8v$r0(6rDpX?l@q-gD&F0NZj083pga}{Xt4i$%zU} z$DM(ZCpW+Hu$oa}qKGG6sxR+8#C?iMNGr)JDC!iwUv1VH0U=Y^AIh|#Gb}MHZW0?Y zMDO1K*h0chw{+`uLl2Z|G)82&nAsOiC*Vgd@q;BdStp>g5iX+Ii&5jDF-70muH0N(JaX+XW;7F{0z@@odl zC#vl$atN@Z?H!7a-R`C)lB|5Bmp@FM7$zbo0<1GDNFbKh`DNcJI9b5E$ckYtmw6e8 zxV}y93Ir^&bvt5bqJd7gE}wL;qZdoEsDl~Dl6hxGew>yJlAt8&A0UVRi}}QYdZhX= z;PAVoP~Pm#5^S})ZIjfb2ht@2iR?1RdOB6 z%;5#RK^^)mxqxMkuq&6!<-wcV*C|P)8?zd|TZ|_at9+&wxZi`8ZJgaGCSgW{c)LA% zoT_kUP0kkfh+sa%X2Hg1VP4q1#dC%j@r#{$Jy{kN97kQ7bBLY0G+E$yuM0THCPx~d z!vc0Zf<7-FIYF*sSMW8)5fqNDk%~!7xD3O-CYjyGa$p;_DOS^~}a}UH`0f1G_GF zeamK5615wcr8yhai)hZ4)!LE>OklZOB5;X{lK7^lVaOKo&H*{Td;zNt02Z`Ha~!)s zF_!AMVd%OkWE{|J8(Hfsj}^ElEi2(qzm7}U!hozT#unb_b{=1CQ9YmZa9(fkK*x_R zD?nuvLy`(sxei;9`e($t>UNs#7RkQO z4-A9LyM+&7Igwh>RJFlnJnYF5^0ChLu1`s^#9~Qix`fVT&4KKDo9I1ewMTQ!HR$w9 zQbLBRDou<5xjSy>&MMiVD?odc=@*9A;D2s8Gzv#IjBJ->a`zLfKIK=8Btz>rkei&I zq2Z%jOw+P_e0uuMP?ouOrzU%uHk72{rsH&-Z9fKHpBM|pPH6q zE*RX$x_&pP1bSBmREc`TmCN0)BoLgxY*IHWSJ*1m#HfeY(Nd0Cod6Khf zdJR_T^?gi}EsUs76O`SaiZ+0$>q1o|H)GTDT+0B8vKQw4_ z)q$a{oHZ8E4yz$NUjUOA0)d*$8w!rRQPg$0prCh&4W4ro-#V~acn059k&gJ}JU7^( zHlZ(M9sHLQN{hQOP&T&4s=w~byzxE?YAP+6BSXi^#HrP|%b@Z^_dHubCO=;4X>^nZ|S;e($5@O;mF1k;Cn;9psONOVnbjA zMfD2i(#$VTVNJ;e8Hv&q?z1!V(2`GoZc@@yOBe% zx&{B>=oJUgKhJJW#scX)2>7RY`^})YlDZw8Z&`&f%Uv#iGkwVP6=NFs5*nKMUiDTbuM0;nRK$()*LKAhWM!T@&~D z`%Vo+0aH#O&|hpueJU6;BmG`Ge8e|})k$^RIPye|1~#3<2?1q9u9GE1)NPO{S&W`k z>RP4lDg5Cvec)~u<_C_6YgtfJKC!sF>{NvH@c2IbF|2tjW=8a*;Ui&#az%ELdMrFL zh+nWx8Bb)CD-au9!4E%>@$16UmQ)D7in(m#J%Ez%8XiP{gbr@Qrfxq|xkrxmLszrO zt-eeKbd9=(+;&T@|Aa3YdpGKcyiq80&0Lh-X3vL|STk(i+P`UkxG-%5e2!)a*KuJ-^_5f67MQ{mCI_ zZ*_GrzSV6$q6#m1(XA3En~$lLo{#x?!;2$9ar;4;O5uwBE>6eTTMr)uy{+rU+z8n5 ztq!SM8+wAymW|mr6ut&{wBYC|qz$&iL(-}nNcU5z(yXU^g>kRWZ87$s3>uB>(){Z2 zb}K2}R87h;F;yY|FP`R)bKmneBXx2sr@^kx1{?Nfg6&Eht%YFPrLJ+V$b+6HalWvX zd+9TDZqgpeA?Ghk1MY}?ViSGIQ_cTLrFTM-;v5kFjry5PmKKeoRKx`D)E~**$`ih?FVSzqr_sceh_1i&&hw)6mcJb~roEfG2DhTN7;L(owhn2+ol@fRmRtH8#V4b4Gy-1vm*SVz zCg*}2Gdi41+x9!#li4GXQ?^La>{yZct>o+K3QM2mZElbl30cr$176!pWMq;eHNF}kt8HWLgF*Md1 znQR_$(RC24Q!Vpw7xiq>Sj0}GTWt?+f!ix4Nv+D8pK6QNPL`7=h{T1y(1F2e*r{ieNKWw(~gyBgH2-8 zJe1X5Z0O(O%WgAoNFk>ywdLtE!+zq6r-NB6)&ILEkq*!jnGk4^Wx8HD_nv1{a6=gG z^G3Fn!Zd;V0*mHSl=5N`QoAhRLl-j%0Xdj9E?c-FThDc0NVHJ$cVgi%R^Ng4h8vBr zMyKs%K{^dklUqd@;;>EFBJVTa9!p|1)Z>uI2%;_$af9V&c{#)Pf$~M)|Drtr$LCd7 zyzjbGa9~!L zsMx)YsRI7qntRCQWmn#Z&3b>tqKD@G1Tb{yRw~fa(HoDv&;PyYwe-*a6Gs1?pFL3d z=we^QIEl}OI7xqW_AGpLyNQnmu3kKI;`KQs+uD#g>f8E#cU$|fzyI%_zd-AnB9UES zh2VY6^W#V3V_O4LYEY9KEg`e==l*mS&? zG0D<~kvTL<0V9W&x&Y3g8J;~F&Y{U&yY>tq>cY*6@V^Uf-GA8qa=V-zf;O z@`ZT=YNzI(%ku-=2A7#d=5*}ynl&@OK+FtbXsojMg{qn2y)blrXt8}BN3oPSIVav{ zS0>S_6wzRfLNT_Qg-|n6hLk{)S|?D@>~J<}@WE3Bgc9kAN3E5VloqbcfW^3E3wph8 zx%KvQc@x4xp+-}(RS?T6zVukp5)Zuj+<=;ZD=GJEM+aG zZPu7&!@|Cip5ES(g&UgfZ;PrH4Qqj$LVw{XT2E*0M55M8i#O&MZItdoK`U^yi(^!L z0k{-=()nOkaS)B#qj<2n=)roY-`YyM9pT|-#&HUxsxw}VhWx^*Y28M z8%du*La$kWu!(-KagPl-k(QiayQVfDn7O;0+Q{i;`Nz;ou0mgE4xEcc?^o~{&2v&% zI=aL)R?y3!&>A{2_R;tTm7Hs0(_H0!HmP1ix8)8kJ3GR5HcW=|SyC&d%&lg@>x1w; z+lrp~-J}7JXugxe*3l&$WBJ`23agHE|Sl7dCVwd zPJyA>Vgw8*95GBwKD_)2&?&_28pm5ii^m z%=TxYT@6v-LtElD47w{KSl;`FInmg-)nbUNgxzkJsHaY4po-n)j9Noub(in&M@NmZ zv8D@1Xmdg<>UGJ9(dYf8BB}@XjS20T{;2u#ITw~5e<9B$XpHp+iRUg)|7hBQHhts4 z0W__Tt3*96x3JqjZ-b@Y`Zs!LN_v62(0|pZn1;dxw7y;@YOz=(E#hru5W2}i`Lp90c59FMJ$=KFO+PnUO#|fOxTI4TCxC`{C!I%f?weiQWrA zd(mTu^FV2%xRLn0k)@d2QgPZ>Q0{bBdY8jD8*FA{y-L(!l@P$d@XU8GotG1nhu}X!)H`!2St)0BBSurN(J5SXieF8(Bv#^9Tg~q3S|1{> zEP^{uBd6i@a9c)MMrMhQ;a;;I%nl4+qjo8AGpO&sGCyf~>5mn3r=6U7mrhe1&P18s zDF^0#cYWwH7+Q-R20t0|zMd&w38CKEgStKM|MS2NT5Iyzi&5(W^b6N6f{-laK|{(E(zUTmh5d>R#dBvzf-Ke3rmc_MqlIvVXZX@0^O z+7MTZx?OT&Os4mil{X%fr!3DOcQNq}N$V%OG&cJD-<4_Kou0O6mNz@w*IngRg`}Kj zJ9a<1kJ9^_k`y#^MKZU9UZX@LYP+Ho6ZC$%e+z5a;oe}DKP$`A8gT{9HnXn6bMT0H z2fF5USDi{kggx=T;MdBg_xcUCj^ORnx!_i+ESUQuiRf{;t4zC8KjS;{w2>>k!ZvZr zwyTGkajgz@$$xPkK5Rz>g4Qf}J@}pG1`D4vvRISY#+WmgsyCIh$}Zsp+20%}XB_a9 zir7B<$sk)feWvLReI7||6tT8uD5|DG%JMrz0t&4gB?Ixb4!&*A&ca` z>o5F^oBOl;k?KPNEyj2GqZRi+@=m+klIh;oJ$7;Y^uCN@){kDLK_{l|bCrUB zM39kMY7>$DF<^y%Lb(+a&(Hcd<$1hbXj13yK_RA4sgC-WE#N;9>10s+Y7*8g#V)no zXphFdsm<(#yquNc^AN+W(}RB)|F7z+N99F(VbrAbt;+?cFH0w3cq&cy=Bq9Y_=Xo!%PKUujk7y# z!O5?1hrU>lwi^MxZrT2y^zHw#ybiT}>wz2D#~*o@LI=Od(AQ(R1YW(0T9-jHZOVD) z>L|1;=U`Iku zBCUz#%jZ@E{WfdF9UIRd?4+B`Ww+Nkt2%m`Th3ejxArBUrhQQ2w=}b5e!0<7_kNn# z$z?c28bPR*opiaduP%^!*2rWHBQk%KdCYk&F4zx)In;&WyP{%4s}Dj15eF=o_sJX6PkkP^U`4OuU+&DBqN7Q zGF+fLVc>G2_Ae~qRVx(LJZ^_V(E)tu!I3u(4~sXq`aMI#uN@r{Zvn(jPt9`(bcT15oS>nLqc+5tJimg84@fHafBDCG7Pe!2wKkO~oZx|7 zCO&~R2KXe5uuGixEw4k+3G}_XzCJj0YvA?8pInk@KgNIc)q1`M>X%PXI0uOU5a zjyIHR`OQq4ndn?|t~n=A%Ct7xMK5=CAw05Zb-7#@mr4?Pousi|W}u5a9JWs^Hm2QE zbej!qrx3f;vcN{dq~7y4joynw7D}xvr8B^Xc6G32L3KIJY32QlO2E2mbxLWViDfc3 zvIMSVmRY~MjIyG_b#`@$s-5kkB^sP=cY`BQ-{^ohrqLOX$bBT1forLAg@SRH#S-@b zpaYs&@_s#bc{TZGZu-XY2HRYuE9o;KGi z+t(D$!8dKd7&ukJi1-xIe-c%Jm9lJT9c-`5sgOTA_i^9E^SU0Y8?!k znB7PyW}2A(@eK`ihE~|0Sn=H|(a;)mK8YGTM=C2e+&$KaJnWK42A-Le~5 zQ^*p)Yf-6r61d@Y_~l=r_WzL%k7BAZf3UfD<@Xcj1|r+fEB}^Bc%d}-1~R`1em^JY z6MW>%9@O2HWz@|$7R~!N;9czSwbk2bjSi8xcLG`ueIeWQ=JoQQGWE z8vB!emWj*L!{HJoQ)S6bdG`WM3B%GzuW`&;+!6mMfOm=X&j%I5oIE+i)2@HLP_J?R9a-LIh zNV>z$K}$g^&Io2?R_f-W%nUJTPfy;N zNozg4BZHoGrHP)7wIH+QKEc(^*oeO$_SSo>bvI%XhX26c!eX>(YvJXoTOK8^CjIa= zcoKmaDbcR&hpxQ*WjMbFxd5hS8t7)mx!gN=fmxvzg-d-CKkSOB8}hd@lwuE=W#p6; zcIMw(!r-A6BDc~yA2v>nNN=;46qoJ$%Fq%}9K!;b{MVAKo5cna&n#1mVF^{QP<$i9tSHR`^`~nd_z$y0$%lTeE4~#7vNNKZ=Se~1QeT+gq!dlx5 z;o7nq27ZqYT!1hvXongHvf6AT!ROzSM=017PRIs<%z*(YY8XKbCm;O{7!>>*r}RK> zJ#-<0fd7k4iiId>#k1DWic9tpK8N8hB60Jnq8)@MPh~|rbK|IEVI*eJCWP}=T>8#< z*-^q3H2fT=c=ySY{qi~`U!CIraSF;k)?lZV`9J>nM}Pf2FXbMbD3ppAE<*O~h=^Lg;< zJYGN{q%b8PL32oGAM}xg37B`8`r0`J2UdhyotmyNk&-HtepSfpqvLyXAvVv_!0aq8rs#4gdU+Lz)$<@)~Pyr z6dn0a8#J}ObJg)3onh`+g+;EATGsWw9F_B(ftm`3tUsaG$SjiQkr=lm7hZ*D z0h|m)&Msr?)Z`v#efXu>il)B(4e_Hxi(^N3*Y*3JE}xprIFUK^?F*6@<_kPZPK#dm ztg_rI<sgFM+ zal4HZk9*GTl8ndeF&D`+$PY*OgJv^0;V`64<`}|S!8s~o6@iL+2kz;e6Sr5T1$SFaqw4A&K5ey}En> z>LirA3sXE}t-@azgLT%gu1isF5WTFndvd6p6a`d0E*l~Hl%7bU&Ii))0U@qR=%Qt<# zap2$I;eOh4?Cnha)L%B+#Tps?A{F=2?&bG$@hkuQ;L%RAE8i>qQKzF`M9X~BTjJ%@uT9RkBR@1kkZoqq_R_`rKiBQk;o~O{Fl)` zvkUCtb6W7AA%6t|xvo&ZDN^|2jYG_UB3*nHb6~uPu-KiOZ3yD__Vlzf8($_8o_(50 z;VgZ%20KZ&|74TVD%$4i{Jxo0fThb1vuF_h=CfIQt0~iax6TE(8uwE=X{}!p#*Th+ zKPRxnil08*b%3OGjDILxxoc4bn|wY zFRj+G;2D2n4z)c4K0O<@Vtvpo@~H+(Dr_)|m`sZZWk|L3&qwYn!1}^g@CkS>KR8#- z);mGR|9)mF2X75LIXxq%Zq(s*@%P{Ke|#10%!K&d81Bvn%vD?J>ilq*Pr_mofwxn{ zL)oR4Y;oafl4$6}tv!+pojf8vN(s=jd$VC~QnVepS<>jV69 zU~loWe*p8`K?(rS2%XXbHps*hLnL9QWqP1{M9QMT_66WTq_^l49Wg{ET=HiegdSXL zOpOfKC2pe2Wd+}dnHVAow}mMqPM6KMdruNEL?&!m&dS}!@5#NU33vbjp2*#%GcBxg z&g!7Ogm^sUSzhE(mTl=$WZGf=E+-!HY+fuCGY(w(@>(C(XX^`b@my&J z%Zpidx4~5cQouu=&5JR-ywpzn7p!-cEeU>2cb_)^9&%kX4-NnTN9wT&B1}!>qz#;@ z0BB-RB~?*1)zC)TM4M?#)z(9KsMPyXP{OP#r$SPoCU1_my0Dj+CSmo==dL+waGC(z z7n-ZWZr!aSz?*avZ_zEh8@Ou^-lKc?Ks`{oa2lO_)Q#Et$0>0QwO{-=zD~>if5XfN z2jI2Ifzux>{_)p-l{XLn=VJNw-KPN23h4?KPbXnw@t?qk-i`LaoB|ytYg>y`)c0y? z4QxNq+3nda@bhgkk-kHTQ)F$iSX$HycDnDcnH5po&IWt*XE|v_o zXMbX~#=w#o$eLP=HG=k~Vb)1cs+aTaVrF?x_ao>7ourRwFL$;NgtkvopFeDHp6C5Y zAL!(;A7!-K?_IZL{aPP(ZoR0J23eJ5-CxSp8o$UR%c!fDR`ilyx>B?QY3ZB&G}Fga zJ%wG`=km-!!;>=F_odYhvO(k9WzhcWrq;?Qii~cD$x$VyZTwU-lqk$G1HdFEWFi`! z+7>`61c@O#ctSdOCq`H_Y0gaT1BOxLSCsX$CAPX@2DA7jxp8*$qg9cY)1}m1+X1R_ z?V^lLMlK5lMvpx-=fcNb&px$gC8Z}#DOa!SqsbV5b6A{7{cy=LB(e6)sGREq!z)tI zy_>Wjh=yz_zck=uOZUt?<R^_ByN0!=ygA$ff>$`oDQqU-Yj5V&oWS-u$r= z)}mFqwyk5UVcDr^2iUL)fk8AOh7lhj05?F$zwRJ@LUND=NG4K+oJ0N!jfCDqsZbZ- zRJaOmhZn=o!&~9U=rH;e28F?6Ix*vzHP~D%4J*ewu{GFk?9*xHw8QCn>GbsJjPi`x zjQts>Gd{|=lj+X9mc_~H%i5fEBCe_Y!U=?kjv1{xkt55C~kt5HW*DB_1cf zPrO+aC|Y0izvA-Z4JGW7<)ta5W2I-y3}t6Y8Kem5RWhGELH?CePuW0CqmFzYeJAxz z>U-4x!8d__XlbuRP8*?}rWerJ^bz_6hJ|sF@eO|+G22;WmY=nRHOIQadc@9VYuGL9 zBkVso&v2jO+PIV4cetN(zvcnn0Nyg*3~wLr4!@Ak=EurQ%I^qRf?tK}L=MpdF;84A z?iSCAZ%W#vko1UbNcN|ErTjI;QwpA9f#RAHuM8<)RQ{oIs}`x=P!rT|ssGeeY7S|x zYyQ#Fw6)ru+P`%Ly8C*cepvsBA>UAKIApkP6dHStS4$24p@VEV=^Hcwa(mTt@E z))Z^Cb*uG(O>S$nZL=M-U9?@dJ+%F1=h<;~mOW|TUIKJbgaHq1W&mIY7-dc=0Xl#~ ziZT&S-1r|_6Pevf|+_lxwuJHMmPT~xfc{^O%Z;p?)+_npK@7j(KVD+97Y&ih9o zbzXv|9<+9{LiUCEW69yBO=;kJffSF-+OJ!5MjSih`DBQ}7tm7{_@^cDFTevO{?50Y zjT>jGprrq+QBbb`aplg*3S%(m*9IE|AKQQK0aQF=J!@%?2Q2tYIsZqXYF^@1?_A<@ z7f#=Q{7G0Mi2I0Iz@1hSethpZYBY8Ry>a`|BlD|-#rK_5k|d2oB?KXuW6A|bt|wbg zP-bbf*{E=~F(p%iPr~UGkFmBQGX?VI^Pu_UCk7lTC1#8=ggIYI-i3x#E^DvQQpgwg|@zU?!SR)J`Z~S>HBY5&!}34$h0T>P1wGe7b%6U*IezN_(V~ZXeMLsg4@CLbORP4mr+%SvLL& zokdLiGrRiYu-ybOvZ5_`-tK2UoZGVrDj+Kg6mlqYz<`q~+VHp&VQgI8qooYkm*JAR z9)iA|nWFG^{<_^8hGfR_fpqGyzPXw`R zJvq4qghBR?dVaH#qfgGnyScO(Rp$2>hXHXL*{w|l7dCD$yVEqG19m-ERcDc58ZN1M z?2cTo5z-QxYpl2n#33*uPdq%sQt9cam~%Q*e7aOesUQ+i?x)Z8khWaJ@b`(`+y543 zHQ3+4jxo|H!RBSItlfqCBu>^4fJIbbrx6A^WUgIX z(iH4DhoikSqwEr=2jt=SEu_GhGoEr=DtB)kHZoG{VsmVNP`=Uv-gc)i_gLu%eB>O* zJNHigVYux~8!XVgTxGTnN<@2EpFn1!TynC|uAnH8$CZQ}dCeq@Sm;^zSN2(fyej=3 zYu2jqd85#eZA(RQDEL{o>Kgx(-)2RBStv2ONoiUvguxntDKXK zF2M<9V7%q(II4T*6IQ^m(3q&~o*yH$o_ccA?G^!_SfTE}SUHFwDn*mpn((fJA9B+kdUaYxIP;8xUX9T)W+s<%tb-PRmb$?sG-^()7|QfgScpi9OD^y6Io^_ zL`@7pAi()vQvaUEeaEhyH;HMCDFp&BHkGIJ6FkC<+!hHsalnE(w_=!4z|3rYbUPU= zJoy&=WAV#DR^Fr^ttERVS~?qRY5P1>gV2Zt@Z)QJJE5hVgsuR4`<*WSr~O-`OLxZd zYf+g$P^z`(s`$_&ZQS@|^{>csM70=`qhEk8n`|8zSLl>O9M`R&9D(j)i4``yqzTB` z{Bzgr^0-&`XgR#p3o9j;(0e!f!qJZHw+f3t`(y%8ixEvEv^s=1Obj6{sI0DJz+&nA zO(CXoLs2m!+Cz3OyL>i|-0vKL8lZrRgjD;EL*TRVuXcQq;-X8RXUVGs{_pfC`vQe! zkl<&MT3lx$dLYGSwZ?%c;2!mYn_6_E-dWU!4(=lhwfGRnR;%V9NZi^qVjG z)UjtvV8S$e!K&i+trWxJYN02ee93i*nUuq%vLDCpE?SBN4>WeGIut+QR95WuMe8FL zd3+6gx4(L4t&s^bFeIe-&K`W@c}n$vV`zCPkHKZ^n^(@}^^=NZ}_zG_i5* z;nwZ(BFQU(o6ASvSeb2sJmmV_xg$?KXSGC;j4tONo~v(NPjZW zi>lEfSfG84s>xv6aPS1Mv38 zzWv!3J03xOujA?@>aK+{q5|`O)8$YDGtyGVQSdNm>BYnOeglCTaV)~Pw>(Kfe>(cmF zzcx6vHf;oQSDh~1P|Om{Ks|Spu*~I&yfQJN9G@Fbp-}$|h$o=hYm)N{r4DVPQxXi_ z!rFG6*qSPy3Z0Q7p5(lL$%Q^EkS8e9-`p|BC1aC_I=eHRi^j)C|ARs3i@&(z;1|zN ze6u$YI%K2_?DfJ47Poj1de<|H@6@rqYj6eA-%F4Ybgij1QC6;JuA!J$NwftX zwN6o{b+Qy=;)zh0bUuAaExbhKyuDl^F5GHAS8_hnRO^0TQ$59rCmuNX&C9U$E%J2z zsppNV;=z^TP)aF9`rE?Nw^LqW{j&)If<{>KvzEW@vWT=i3o?Vb==8XTE?&DJ7h*40 zSp=GPuAF4a@ht|N4`lkgoyAmf&$(L_+kf1sK|I8NPR{>QIb?~x^w~vq*7fQZ4{_+6 z$}=519u9BzN9$V2G|*I@>@66NX>4hlF=^o^y!G)}$ajK9Rx41bB$K*9Ayl-+g|o zt*tj)&#kEr{9jC#|MTAqG>!3>kfwfdWIUl&7=ki&B$JVqnaOBL)P@>*I-1}zckL+8 z!w8+z1ddT1n*)BxYHE4y0!$jztBF6<8K8LH7b`+16k4@a?Qe)vNv4X5YI|FTFo+(p zIgh7>*+bg4DY5oK&r?Mj!VZpSZQpf~IIgzuHpuv^7hz{xyS}H&bKC!qaMa zF8`*_Xbkvk-()V+-`SR9%=ul=;+OgE|HQshD>n2j#{dh8Lmt0(ckkAn&AoBz(}oME zp0Rt+Iwcse@52#hwLQkdDOWP-tSYOBtA%n1NG5wcit!9{1zW44b+n|8_Ce7ABs{I! z_h@vmp2_{5z5nm=NtP^W5ASOHM0Fplilw@xhz|UvVk2CK(2V8z{$TBFI*0MQ_ja9s zNE$;16Er=wvZxe36U-Si1!6LIboc2Eo^%4G)o z+^?`IWdHnQt=r;*%$%VB%CKb)Qr5D(m8#+>GCVCxE*_kbOAR@6SE96w3uXVc%0ULi zJV|=2&|Y6^swvbQ(oow{Dn-O*j431FQj(yR$FUH1F+BK$h=HaEPM!ssG z8fMUQ;Ffzt78dryBzpJV=NeFz#o= zr~YfNWb}6Md0ZB(4u>4 zQ&XP1%+jOXTL%-PdKg2ZRk)K!nIE?I>%RT}CqL{rKbd?f`>dfF558Dqd;6b4ipAw} z=im1>@huHBkdpEaJTV-#rSb`Ts8}td9#AfiJdM;AB@Y$U7GEr{jvqVSF*N#yR?Sfl zy}8OCBuxx~tM!INV|Lp=G>U_k*|D$wpBK*4MZ)I$Jp+J6(ZF5QTgUm|{_I7DX>`eS z^4%lPnH%5U7dDRm(fVFpP^^Q|SpjNjL1l9u{DJY?hbIZ%xHT`94UMd}7=VNcvi5Sw z{q#q2&PNI#+!M32p2?iqdHi?5ag^0AKHPm!o`7na2>3= z;uutO=wS(v=goja(bgY^*4oi{4x^8+CE0h|FwX=z8_{@NgAY)^33XYDY%SmgYrp{O zfDY8gfO}TK#uuIHvO#M$U;yr5oxlLBdOl<8ICjl8I;L#f(q_`{aal0Zo5wzgIi&Do zsbfMLCOxQ2FAb$;_!T;y_n^V0ATSZyHS@ih)i@hr)o_O3EXjL_6{r#%+S^~oE%BM? zx*N4%4pM_gF%rumLF}J-`dp8Zj1G|IdK0@o>G5)%>pc40)7qh?;-iIfvJhNoQ!B49 zmT|m@_Ww+6M&0LdT4pc3^HBtuo7`Yq-P1@oaz*?sb@9Tzc+Zb4NV>Sof-~eeVEAvk z9FD_@thP{SR9J>q2`D&B!IcdexC+CgG)Rz12({m0(P~h)$4Sv9F#r1Ik5?-$fN{Bw_% z0vh*_)T;z?DfMHZ+z|x3DP~&GF9g1tn1F(zth6(5tz1P=pM&WWJ~a;pWy`7Bq%8bF z{hs0Bm5*CZJyXv~i&P@Bdq%~lL}8E_3Y*Ig(3;N-$ClI{u;9`(gkRsS|LoI(VzO=( z>5Ig+;stKKKVDOhgq%$~LS@EJ z*9P@kTIXshAvBuB)@V=X@PU$f6`E+;vy`R3U?3jxn$1DMIU~r!xAY>q;7zH=#zgLA zwQubl9!2*va%;33KY1~~XtcW~8m-}C(ZZw2P4?yU!#`O#hYgrj^J=tMvx>f13E!VC z_k9$S!L4GbuYPpSR|0N-n5Vb+)mrUu;y#_Vl0m3%s8s3%uh_9;ONi8Squk%H(5l=J zKv^D|28Wakw81YVB8&^2SY7r-GRrR}a!WBr+925ULyKNIMqHkBp4*djY-n>VN?x0H z1_`}5Rh``1WdtQaU$?`4cd&}{?PSo=K{5fz^N3ee;G(i&kmGKX+Zo?l8Ir&aZR*|b z-@h{J-2okOpIGVE-(7|FMRNcd;?U%AZw6uDw?t7e7W5=AJGzBsVnNcMEI4bg%)H^Y z156DrY3^`l+iR;sA1yo$b1ynl6{&eum5}|tUEO(R`WL#c;Kl(rTD%M1+TWbscc$Oq z90tDDjY9&1QV-udo2@OaKH7AzmiMjTd3fb~Eve5V;6<85mKh}20+#!^{+Q|2@&=fd z7J@`og2B3?cGj*}^qX%65?6GEjdkh_Kxqkmp7ULu$-3meH#FWbifaeEyZ5&jiYYMo ze700Fn!{aQ2xVc@7$=EZDiDs`xAtRZCGXQn{a$mqT0Jfo%t-R%Qnl*Vk7T-(;61a8r@bS*t6T3mP3IFkhHr2_>f3S@%=#Bd6 z1(iW9^y_H*R3S=KDo3tLeJ<<0!2A6EL>S!>M6DN9YACb}dTA}EhB7{HJ|IO^E6Hh? z7u(xho2imRoEu9N?s=A3XfUvIMT+pw9LakMx!4elH^kD-k^5U7KVcJW%+kX*I!unz zbwvUOew`NRe99a+Y*ZU^Wt@eVa=xcZk4Gz?v(BntoijI7Xb!zileKK1n}sq`1N8r5 zdi(u>H9Pls-fGuGVG($0C( z!E$Bg=ItRP$8I(zFWHw%@(JRtTKW_#PdjzH<4Ila(l8EqAkFtL#sNh1*(3F1eOtA% zFBT9f8hD4NUD<0wr(AZW`R-&)0TqJ>=eP0%B6GryU1#=pmzIlon}T5!mS&U%){7Ws z%&Ev$-k^tM2@p%{*Bs?klH}40>-3n)gPy#m8MtE#DVqyUzI~W*MQ2J#I-=Sz>y|V-JY)%NO_s4hIAYy+IF~8MRt8UA4u<3C z@qD|Ji7VLt=n1L^&h(8oBvD7XwW5ln^$JfdUn@|)H#NHHp+cFEyKgh&QxBa%|8uux zaq-tHVJfuoVV;TkFE+aW6pEihafqYVW}|MeD|8#rMLo9OEcUjiw;}9$UZI9*pNyqq zmp`hPqSp6g4`~Jn)%}gy+FzNTnFc)~eZQwqyJr?ZA@nnB_PPS?@?oQ}C{sLq^jleN zFLVbA!1k1)HA78&s!NGr45CJ0aVqlx^0u$Qf~~LM%L65$oR;Uxr6&Vejm(r5k-|1r z;^q<240k`|zf|1U`udOO#6G%_?s0f)JTbx)*QAFhDHqp~L;hTJiQnE9Lu%@A7SNYa{yA|e*+WWp+PPZq41rNB0D2uQtDC7NBH`QO+ z-BV+NTnpb)Z{&@*yy4tC^pC8^AP6nE_BV;QD)Kw7G2v-II%>1~OiDQq*p853th$Pm zX*hf+92Hu%CpP4cB|rMdl0+g^>UYkpZ=i-MiZUOC(1_@+QMKK%qhW`B75>R#1U3P4 zc|*vCkr3u`dVRrw#~;kJ4e9I1iDr?<`aK>zQS(Hn(rTIrN4H)%;jDFImPcouIG$^( zI9E%WBSkO9QPYAhzq_?MK0d#&xjwtJzCkFjT|5jW2g%V;lVSBl=f|0L_iq*P#xV}> zyy&qW^7z7R!8xvgqKP{O#e>^e3Bk!JJXfyb!EJ)H!%3I&Vq=a~CH>T( zCky4~s#<={B2M1m?klqyBvX5n%9UJ1dz&n8q16VS7gJBlhCo+)UFA@ddjfCX%GKz6 zqt<|%tY`!{XD>#IYA#Tj0X#pg^88%5B!%tGS5!gn2;4Q1=DEMvtmZH+Zm+~WM$6k-0|GmuH zeNGN5S|NcYrnR*3AT3p@D}q5O9`S(IU2+b^{HD%Nma@LLt2d+}P$UYkYjjD$!Ui;f zD~d^N^{6wVmhq7jGlzza#Jz+b81zNtI36%rK3Oh7yQMY^FEl$%hRTHFa2@jexq?+?YVa~@`~kpA+x(i#V2W1r%i|USTRDj_ffq*>iAJr(gvWyfw3-r zd#Ts-e-5vZZ4y-`GnBu*n$QR8vH zp4RI1Z~kCyI<+a7&*_v$l!eWl35`U&>2RpNi_PQ2Qvcr3(b3W2&N57XICLLn9Gy`sncRXQ_G763MQ!+B4v6z|NhQK=xePo&jewcdoWUrzRgwg-;1E z8^V2-#lb`p6H2w!X~P`!afzBxWiA}R08>JKXE@RZg5-?OS4eM1(Y7r7bxn*T8l zdrj;Vbm!5-bxip(ZVA&b6x>(i&Umcf0Lng3Li~6}{R|_pJRtfin4{Pd*}r-~LSfi6 zz8ZcO+b@^+#SFBXKPshvc6O-XDx$UPri_eHeaD5_(Dm1s>WJV*#)@M}h~#VJv<`D< z$MLf~fQ9W-C&Y~ITG1kElFH6?OmE8+C`c@e2sIUrLqYVM^QvYkJRGFcY=-Hf$l03* zQoyJ8!%m>zez#O>Ym!1s@!GU0b-;2tuU_5tJ z@|cy3!AHc;ov!oU$8NYuQ;KLfGaXf-bErq4W?-2KkkM*r#sHgUk(>XSMx2h6 z`lnhQu`8zH&e(CisJcVm`MX`LocB(4#Gw~`e<{%kJs8?f?1#ELfQy<6N+}TCxhyAK z_)U_t3L=DyG;}>VqHo8DGtBY0vu?4vgQHxCK@B=sOQ_zgignUImm(G`;Wh+6V7L%>;S?%%&Qqod?iSV#CI8cKR*>>eSgQq&X=PN0C1 z=vUO&vJzmw~r);m?s4Q1*XiAVwG+Z>Ri!2aqk-r2xDsm;hp3v8G+yuw`Ov zY=DRZ&*;=tAU~5olM2y%tNw1?!%_@2G6oIi4`+M%?PM`~&TwhXWY3E4{mjQ5WxOr> z^Oy+We()`{-utyMEN6G9-8{O?-Du`*2Im{*GZiQx`A%nZ#lQ@2`&9J06Ir{HE9Arr z3&y{+n)6}Bt3^DRicB>ecU>TV9%GB-y&CP0n|^5>mu${>Qmn6K?D?%&_nq&|thaOZ zBD}xUS!p9V)i%oSKJE*xvF${}f8jXS(Rr`2+Dk*My<2}I|I%s%{@8owoA3RKAKgxR z^};tfPt=2*b!H9wJyr=orw$=mb->+1n8aQ#x*Y8`A$Ii4%Lgf+Cs^mdVV=f`b-!o? zwee-}d`W-cJZ)?Msr<8;*-mq#a=|70(`LopZU$rxZ^e8Teg}~7_rvHqqCWlPR`SE2 zSp52<*n^+*J(4MSbw`7K#a{$UPWt(4c%S@aQB&ldW)II$@f&_G{;-I?gw`WE2dgo*T&CCY>-I}^po%>syyw%aI-@P=pM|*qXHN12TQyGX zKja#$c7)SwpN;-^*I@p_1%R{j<)8*Nif5rL%+YWAw)0V=gg)L>Oobke03vgeS0Q;m zPp_ZuPJcaO#^fq_I(XMeWl*1L&f%`?v~PcVzB&Z$+jq7blcx1g{r}3z=_}~|J2&^% z+ZMh-eX($>(MRaF{EYdag$0(wI;FOp4kyhx>25mBOm!uP714Rcgi{ts%eI!|t5hz_EFm%H7D^(c@BDCPEAeoxC@ zR4dNi`|SCwPA6GA9d2c9ZEYC(P`p*BMpHp+%xE@5saP<#vDjD!24NGk_`oe&zO-?trzLF`4BH-reC zr{*IvuW@)I!Qn>CkM7TJ4p$9^n-gm{H4IOQ+$phT(xbdWr^KCOIfgn1f0i!?ZFyuO zHw@XPDoXK`Q58vdY_E@$CiZeWC^kUK7VzEYnytP0v65~@lq^!^PKS$k5}^8&U#{=k z7HEbYC^Cjoc_K)$6hFCAClX6+S>4vfbdSTiV!k6IcSf_AG?Qu!nqiF`h3-&ohA^~t zLMTa-aY4?Z70WzrPTx-r*6UG7y@{G~BtuP_3@Hk%sfk5$HZWky_nfzzQvuo=A89T^$0X9(we3aF2qvgqg3X}(}OKY zVbR5Hze11B8%Zn(B+)Kt%D9kI3t_lBG#)P&Vy4M}GM_lF?LA*D=eXnvMRsZ=S$4S` zl*!C+nZc2GLoqpxgbLst%_{*2VJJrcH9xMC$fHL>u=C6~MxO+7qNRnSZKepd{E&9F z_Pu@~Aen1<_MT{s9Vzm>$lo5QG1d{KRR(B41~NIO%#bA;^8t)XMjFFe+VZnq5lwNhZe-hfK%NwY78;TKo5Mb*Au2D`J8GAry6gyQePP zfE_XS*8T@T4?bC(4+TR6`2YDH5DSYbE=gXbggprFb&VdM&9gdgdkZ}_y>WMaDy6*> zVaQ(l!FUpuwA7;=Lr8t7&wU-ja1Q?L;I#E>;IJc$(W}?4s-ONC##&0vl#e% zUflE(;gr8-z`K}&%G#$csdy;lSH13k5>u<~VO5GFO|NaqT(t0Mbq%Bd$ZK^-&n zw9g5Z!-vnCeJaYh6O@An!76U43^kB>v0->mQ zIN||bnTZZCDI?#SU2vfpOv%8h<#)B`4&3F*x>Re%e8l5|HrEb>flY>4=`S7xpqa(hi8VD!3;EU#OBS(Jsk?f;L#fzW%WkA#@q z#^0oDF5vMmaDvB9 z??cNjX+&tFH3xt@yLQnXjE|%(SJ)#Sim=ofKk3$bDS`GoU|{Pv&2jmX`NIZ-CSdvT zJHy`Yuv;9>>2CF&x=^Q2{Jlc%f%nJMVQ~-O>wUdFeM>>CxJ4EPOlk@GU^pu&@L&jW zQ>y4X_<)6C09tIE4r6Hd8lEN#JVztQ$44CQL0su)D|D95SO66#SR}PHBvn}vd5FPV zj>qG=!TM;TCb66OQVFIKDk>FHO2=7GPx&QbSa(CB^1Kz6`5Pz$iH&FXVrXuUTO{>L z#97RWyTIm5m#uYgXI)=$#_jb05X>UT zMzvbYdj^JXZkC#%-rq0@@c$>7)CzU}p|vO*@Cw7)#tglmWK1~CP^d4nI4N2*UX`f( zn^il0XIIRA@!WuN9Im8WG-fpa@#(SgDR*;q6&Xc<{fl}+c#e>n* zn@sL?wFEuC8SVN{ie`_N6I9^!s>-KM+;INYHYMRNK0{?2gV(d;r{!P*Q+7;~q4jng zsWb+vN+H#GigO@zWCu6TWtMCK36TCo!4?sGa|I??IiiE?Qm#vf+hhHW`+n! zbcZN<)*zs!C1b&>mw$7-nqr`U#@liGz&i9v_@^%WmlMLm9~}6*-P^-6j+NSB-To%g zj9EIQ?-Vbdt`U2MHz+qcLl-jzw^qLMVCxZXtE&D1YL2f=oU#e zJ#-b3<~)9Wv<#4~G9X34h=vLUVi*I!{T;TlIk^m>l}O%^eZDD_e5MPprChiSiA#33| zisKtS@B%3pf3$c~Rxn}T^wUQMSa5OqGR+#2Lj9N!%HyMiZy$}nyz(?+;QUg97f4C} z*UlO_JA4=AfUlp8d!1js>#c9Cxn$_j1kH{42YH@3z)GEn{TN~$$xK@0%OrF|ySq)b z+(j1xRj08^ymUytukIY5!fL7=g-TGWoM}hKOxSQjtTTxIf+`>>nZl`rn{MbGAlSgS zI(K-{Iy);l?hDtFC}?j75-{NF*tJgAP(($iF>?ZIqP94>j86VX zIKd_kuF$eeCbq$bq0|J_L7n8}3twfS!W5*k(&e;F%>sBoa5bJ|7-^uLOd~`bWC@c> z!^Dwa_A6}y{4o$P`81Mc7Qz_i#KWr=g#rl~Ale$2s#_x}Nf&LnW54XrdNw#X9N#m_fA?~u;Zp>YhI#QlQvTv;uDl;8yL(&w_;S<*UxH@uM76rFA zlcFX4QA~YTFK(PWq}3eF@cpAZ5=wp}Q6aQIiyRBcy<(2z1Z%xOBFdy}`?)ZRR)Zn@ z?GtMoG=7>Q*+gCiF|tjw$+8P+gy%s<-K!Q`qPFD)XDzCUOFK$cnqjIast%8 zZ#V;}6LN`)TAmy1@-^kPfqSaE!};fcbbm~OYaz9hA<0nksWtp3D1#!z}N~^%DLXxVXg~qBz*PY z+GCgN06i8b&%90cd7`?X3XlLkMJ!Jx*>1&g-G6<~E5){+=4kO>B^h$=oXn{uU&I?8 z?o{h7hX;RPo+WUA1KRdMql8L`_CcqRiP-j`NI4Tw?u??U!V3_v)s!InG`yx9xZwr7 zih+yW#N@-y^iM&HN%Q}SEHe{2w5pKDv=@p7)9*=7dvy4PU}{pogkari-$HJr_q6E% zyV|Pj4mSbAU0oYdVD*33(eKRl_x$-`HoAJ=Q~=YW%&9#(RPu&%3e*ybu`)ji3-{gK zXkEjNe+!lC|Cdmd?)(a31tti0)on!qp0^2%DD#)5bth|CRi7kdGb7Com?I07LJus- zNHlln^SM9a>1rMj>fXe}5NryvjL(O4SS?K(EgC3LOiM~KZJhu`^Ue$Dp>NO^!Mk))(JJ5MXR%T$-6Yu$7^xR;f8H( zSvB)On>@F(DXN#r7weKNTzG|rLEu@Ioe^pdGlSZAOUcpj$SEUDXNyu}8vz6LgV9A5Ha!+&3>dvr3J0BZm>Vp+#|BahmUb&LgIx2yyrcz_09D#Ls?d_eAA;F6xz^+yQUceo zc97mPdX_(U1Mz;aHDWB@M-j2}D-rE&Rpi^_0>XxM&1@m$z#sJ=&7Z6V7riD5*uU>n zLmwhN3Ek*2O(5z?mY97rz7x8VVnCoD>#m9aXTNn5^9?+4%EF=cYiLohe9pGgDXaQdCSXG~53|iTCl|bcX=r-7tuk1Zs_UMqrlY`q~VF7aS zC`l*z?>(e!dryAv-fx_(gCTV=zT0|58=ZOYPOCZN)m-!&0w%^-h>8DmlyQMi%hdgU zpE}q0)>IFMH)q`KFWj5PPfQvMsynLZ6AR*`5DANnVN9y`wB{FQ}zZ=dYGe9 zq1rPCBMy&M!4X+`--7@{yW=&FZ+e(BO=#ZTIdU*E(;HF`vs3pti+MggX?IA=kk;0z z7aetV)3dH*l}N%1`rf8INqHKprAL{Z>7;V&WLq2;+b*3q2MK3XzudWj zR|u?BCIqsoOE#d?l27E6Flt3DEuG8=Q?(t|tQ^hzq~Hhuy4#YKfzh`%6vf5qR1IJA zo`%Hv3x2iY1VBk=iAWJ>R%WkfxK8E5F^-*MY=po_J(>IB9J>hXc)xM`&K<^*P0}Yq zst^jn^gkAULMXazim>2SR5YWa7@Oj@@_Q`!FRVM54hK)LeJjP}!0O^i%q|}Toy?Qj zIin3_TiVGfX6+7v^WcF2(VDU z0?k(YxUv1%E9wAUh-J0^Mk>@!>c%D^6!T`1GkbYDME2*`4*P zjdQ+8#t$nRlkIuox^6*44AhL#M}0j{fDxiz zu2;ZzZd43b8}wD$FtmMe{@`8|j-7-Z5TwHpbiy?S?^r;iL=gg!?o^Jl$k8~69&eI% z6r4=lXX2S&E}J&@FIzY~u(Kqb>S;ff4-X$JuCL4MWs-L+Q~kZPwnDvb+-%^w>{W#8 z=Y0OfP4b$n9dQ;EQ^Xz(b(T`%kwe@({BbXHl=-$6V8TT*9^ycBw27|YYGy`QrENa2 zr{M%(#@DAp30zm^%HV&mT^~xxhXp*&+aJT~_YeM}l6o=O*&;Udy7{m0<4Y^6O4#S9 zLOWb3y$cZ&dOGzK;0`dK(NIr1WY$5czNk045?)C&(R_P0AI*$2{)mfwRE^w3vZ2rW zV^|j$v(~sdtlat{(uQ)tv*How6rfwp;Bh?V_Czf}@YbL@UWGo@3?>JPmxZRrg zo{)&%oFH}e7Vg5f)01yC% z3$wMJ&Y%?WcwDWY5_g9)enVAtPPpAKef0y zee|ylHr6Gy(ZU{F|9jj;stlE6&$rOYdnaFNV{JvnyL5QoF9#-1iJQ)P;)V6w^GY&C zwzA&+3eXt&F6iDB0e}s>f6Q|{1%&mJT0iM4Uai;I;&T*-S1NY;Dwo(PD3o%#F9-=@;qM&ga6MQTA|r`6+bI z?Y%tilBoHFDM*;{C`&ao#3ymhfT1k1EDqwSs&~k_;<*k?VM?jZWgH17b_hko$(G?j zT*sDG4AE4FWr7V`oChG6V$mB|#u36cRDD=3@a7n{9H&>5kSWe@cMV(ZU9PTL0jD86 zo6wvRl$z`*>7oIF$T{`>kyc_R3u?63B+6zgE-jUHMnsuC^U=W6#1(j25)qlG3|(6n z!QyDuHG0j{CId|1Vm8Tnn$?@@Aq1LK9PjNBjzf(m)>m>@5tw`0yV%&w0@!6dEf`Cj z#1jhhS~r+c(Z7qXey_bbVdYjwmdi~ zKGrP8lGR-{`I=$#UbBOv@Rp}lnOtV?Jda%ezZOd*UmeeHzdv0w@QRRuoyVi|HnUze z8n>qFT!Um@O%nx&iajSgbj8+|9V+47F5gZ(370fm20nZVLMxRV2(rwg#!l7Epf?(Y zt@DCaKh>_AP_ZFoj$&M@n4PxE)E3n|CGOo($isb3d1`lqH<^-R2a2*nF;M zMq))*xDEf6coP8x*oC*6p>HKEj>T#u5dzuu*&M|NOp}d;mcMgkxb1`qERtAq}ub&CrEj|A~xu5|xQm!*qJ0#C8iFVrVJ!_LqMFKXXB|%HZK_5Su4xBGYmE0Q z!(l_~y9`PCghq03aLRPj_7LFp3?y~}L>rz{X&5e`a{;|z36f?sC;k_RD~1SL>y*SR ziH;M$muVm3pyrj!zOQolX-&b(966urOsVB2VW7|u_n5zjQVf8D-@KN59lel@$m4krpD1;v}wbRt9ZsnRn}3$)y;R79A*Y`?^RTMoT2xLaEO(g-GQ^eBRV(xmt@*)7gCJ zB=27ehniESrcbd8{0U5NITig}H>by-c>Bb*q*(hHdhhd1q}zK)NV0XoUvfz+vWS%h3Yktl(OFnlu*dSA0&ta#yf@l zyL;B~Y$7u|ac{ddWz>2`R|fWOsxO6d8Cl$0Rd!iuL-ylJNO9ePZIy2si6E1UAP2PGei| z2+{fkP$RS`qT3fMZBL7%6NSZ#_lyp-HLn)MEc^Lt=NahaA*)>4Fz>Y9731}CV4CBi zZim0%Z5wVA@0=WWB-gJ#b!i-sed%Ej_^onLn~6_Y@$tW1fu>U)eAn_!kKHSfTV_qH zs^T+$dj=~n+?~0Vp%6z;)_V1yuK+B8aj61x&9C!r+b;3eBbqVJQxi2Ejx1Avk(Q`# zYr0Jnwn}1e+@AU#C>p1Q0hJ^;OwrD2#x=1@t zs^xA=hm5g$RY*0P@aojSEi?zH(kBTgJBWEYsw<=nka6gMhdY-hwR|}Jmb10Fd4#r_ zxQhi%r2yPB1B-dU%bhR#mnDO&;G#4GN`W9&3UmTZ6F&x0;zTm9O9k1fA&>Kd0|tc+ zkoT~WJmzk!8uxV60bx2o2epD@fPzNpoflev)xSm9iSSlF6oC=6SXa z|L!PZfbY#R+qRve3vaw=pBUO4acR)Yf^mq`2XcbcWRl8ffMm;H@); zQ9I>xf<4cMH(qR@7zY`^D6nGd7%!Z_50bm%P=Y#+%fene}dZnM_ z-qIxTN|QC<_?wI)C%ZD$T5fPYoUp(*-_yeMVYfPqO%VAW(iJ#dg_5DknN)UF;&c_< zr0HPVF_DbEEQA|z+1O%A7o@ODl~x_AYjrwXkG8`2AK{$L*%*0;4%+qc$tW4c zt5ZW#Kr4*xB=^);_3X48t^XmFmfssMh#3^g~WoiA<`6 z(tD@O#tbd)aT?v7ZRoYVwLM#EA<+>kQfdOYkFva7CCk&JqJD2k46fD1gr7W??{>I`>4F3NMW zH(q}Bj4PIst8z{>a_`BaRKI`m+2E~4(*G-zN@yF8z+WXja2w> zfVJ*=5*kU%?>jcR6}Ma8aVr6a0?%*M9tNKA`jI4D=|F5HdGs#oDJa-Z@&3-`1tm#3 z;yYW(u)r;>JFmvy7T|<2n3Q8N)~d+4V!B#oeue+x{3IAG>f;L)h(FJNbZ;T&ZTv!d zy$amWxnG%pDW9!DGZ#Nd-Aakt<;+-0`EMgPw6)igsKtI(y$?tJVj7vb(5 z{;ycVm$Ftr--F3`@reFk?Z4?w38m(<&+gTOEucZQ_4l9D`p)SK-)ReL``4?!YWZwf zS-%njQ+~XMSI<246RKp|)P75SD#c8B?fWkJCAa499=z(9`}Y-D#wk}S2Ipf}xmd2; zF|A+vE7J8-d6!Ku9nEBTAG3;(MKM(|pNm)v<`})RA@sdg>?H3ePw{qQwaGIWkgE77 zjSw*3$CDyoB`nf&)kx4$+L9le z{q)t+lzIS+Sg3zL6hLy5{J`j^FOj%1@OWW*Un|Kga#R$n2#=@4DNU_9SQVSGp3$nt zjP>}|lUf3_p#4`4LZi$>di3|Run1>K3;6J{mAB#9n;8v<*zBKkT97e{+qnmr7Pdur z{#HS466v(724$%D|KaTK^fJim;?s7AI@y1EBiMb)?*{++p}YQeaCBaY%Q;Q9)2B4e zS6XdKv_AULyV1?sWmVAkcF0VsV}CYF9$!Xje@p2Cx??p>KnWSFX;1qEd-6trxpm zb86lQ4u%3>`pgtL|>;;fmG^~+@qO-O3HBm($g{4ZNF6h)0;BE(YyYl!N#PEOukfC zX3S)>3!lA>QYAh3@@9Frw%Zh$agcdDQ%cg@x-yOzycb=5jx45pRgdyz;?tsPYhL)( zi_(QZTCk|3DPP{@Xe;)xDI_<}lk4slxr6=$<;%Iz;=gI6&ymH(+4@Ik<133lf~{5Q zUV@mm(Zux(O2uhY$0|AGNigDAIdG^>BGUNobF^f~GMb)#YmvqKAbi_Ma z@o32iFc3YE*#8qpE}_am_z~mSrFc|5a23gjij5sO=I(Wg)jrO*mCLzJGPV!oIN=U+RTExprK@f3nEK*F@ymtfm9DXWT^-$Q zJVzHH+n?55+0g~^$Kvytc<8L>KD*Hy2=R>jmHi8^+-q-dZ`YaeFU{IA-rfC0rWEip z%!bhRnhssW;@obmqDzPVRAz-WfjQ=K3p-*;&b5#d7YvcfR#5A3%{Y(>IoA%LSI-1O z$pPZL(}oq1dg;vqb>1G@n@NHY5e0=&@?QN%-p2#=w{w zn)Y2M&1OGbuP;SN_)DsswFc=eaRDPiKo|}c!P*58GY7VJk>bwEDy%U*Th+qFD{P#i zTmI@M`K16w>-nrP7B-U!rCiG7K+}?oXYqV6%pTI8&%*!JnTXS)%iqA3s{j zp@-_3r$CKbW&TM?(4!jC;wf!shtiYEM~%W_%BiX_zG&yCtoW(nZMpKR(f(p5UL?msRLCP~%KTe=k&BrcIv0wr8-Aq|y+~)W!{nnovVCuIr0UktF>(Ym4~UJ}lbxci;lgJmYsQ1pwVnoCNQo zuPG(?K$T^YAgCY}%9(@xB!N<%>a>>1F=K>i2|R}pg-b~=m8Dx%@ilLoDLI)PPYJ7X z($x^#R>t{qv(ZZBB0-p7oAWr}w<=o@LtoOEp2yg%UWv*q*vh*QaXEY@ROm#9k7V=P zPr7Ssz({(IF!0uOAd_l}h$$2#Vwm8@z9RFWmh}}y$26O$>Qa?qIEw3>M!N{%T9F75 z4UK>rL!?Tle*!DQ$Hd`mWfe7|J_}=o7=_(NB7h|j9mE!E%{;8JVTCuAyke~zJaUF?Hx#~VN@r{KWy*9 z)noif#-Ot(F2JvQ(JqkXFM_L@Hf&g-?alJr_PZo{(*ljWP}X=cQ?VW0d^@MkC(o!Za>XSN zXL@dz^ZOA#m(Pz4-}RtpoY-NW?~}zf6sLZk!h0`zw2~vhO;#fES~*2tA8jf3U?N+n z2opKNKEVD~znf6287^D3kP`;uir3!A(KI_ic;Z{ybBzYTNDwE8S2bk_ zN>z+&u0L*^(kg@)0a43Jx$i%kPvSVu2)#$#2M9nwMO_q0XepYv&m-4X>u(Ui~+%2I{U+WH(2#jmM5ftNeu$TCRjmwCQ&BM{cB?26b%`1~5i(VZ&$i-D!K@)&Y{M=hs1jP# z&H82p&m=Ouj)T{hu^+%;UtlJQ|0lSzQz7Y4RWt^;@^6q*OreDciwgYzb&B!BYLA#F zlNG0z{yoIr5SaYCRr)x8vib)SL=!qNihvg>(5^N_BUje61S0j{O|Z}if4mGLFOZnC zE?d=6zAZowvY!D9SjU_tF~E;b_y;zG@FXT?NW3!sIZ2Z-(dg}F9s?I17hoybf8oRz zY~cP2_58}GkhWcc^R?Xm;-8Z$qHa|Bk5*ZaU#Q<&Aw^yJdNm*c$^4Be6UWrN65|QW zz^HH>H*#fK7C6kbqzWtLkfMD#R~8eFYZVc^wCeXCIC_UBCS1Ujpjx9)fGlaP2%Sbb z;J|X+IYGq5*uQj_Ki1Q3Mk-BI?%>(`+*q;_)FG87PS(K<>dIN3FbMH|2X-nCqzN;q zkr%bklc-XgtZk+2U6R_nr3$cuEj+ZhWz9?hp;J~C8CB3sQv?*rsFp<{By+H1+o@9# zNHo+D3h71%Py{Xn2vlQ`t}QsiBFD!|4^m_lY--v$7s75Ur6j1jTCC<=iNel0X%>Qo znAHKI<|<=RD8woaneE(orhK-9!F+g;y0BiP-}b}@jgDz+G&iV#*Fq`~@_p$PLGZ4d z4-(n7MrKfQ8t20oj%Vn?;KE)bzU@OFE32ZQCK``qMUu?38IsU^Jfej-P_FG2Qm3(A zHGGFHoL0q$S4s@ueG)B`S!C zmQbCDqgbXx-KdNm0~p>0bb_-*z790F2rN&d;I=ZyU&n>eN}sl81S5|yKpcl~0D;Cd za8zPBUGi$BmCT9C#>995xDFluH8-Fb& z>ADs{fIpcfyyf*UpL;er=ddVC{%=pH#$AQ95Tqess8!fC8tHE7;5y5eBG3P)TVb96Hxp(~)B`Ulfs5-AX)m5F(mbHf_i(C3wtBs$nV&-b{JhmN1ziB)2Pa zaD?DyO%@O)dNQ?bKM5VXD_K#kJsh`P+3=!u9Y^U`}^Aj*gI#E}?KnMMPX~ z1HU9e$ch@}D)o}#nn84AoYBmIEFRT#kJ}!S$(=Zm?~;Y}eYmewLZjXKxDN{=G=sb( z&xKb~JilfD&yYq9^NC9r$1h)auPb)(%$>sOs);!%qX5WCvMA*TC5AT1aFtC1ECV+f zKmpa@P_{6mP5~B>ATF?#5+DHjxx&;8V|ROFw$AG25r?a<^}(b*u<8!4@IWHYS1YkN zRwPm@J(mDR=Q=}W!w2kdU>Nv3`y_{Lo6axe#fFWOnPJbw37E0LjRldg?OIG=w}iJ| z6jrD|L=797OiouSbf*ohS_x$uk8D8a&ma63*uR32wsrnbrg5mUH2@3bkOmychK(d> zXzS%uvC4R)f7N%%LPwu zO#_^T)GZb3O--r>yhPf=I%aCgjPJXq_}gW&Fg6b%fM%NvX};9GN|NE0>I^X->hab; z9S)RCh(2$HvFR5fBK7ZNS`<|_9XVMpSg^tpH9-J^_)$Tr7Y12a5x|5rS#kwYAn-{X z5c@?maD6W>NZl3>810sLSwT`t^>W~>Mlvc(C8v=s1%(7T($Y&wiTPJL41o1k!>J%m ziA}>;IKLPLgvrvFw0w?6KF09+3rXE0-0CP*_asz65lD?qJ`rj{8r(-)#(PnCJjrZx zeHL=&%z2CFmUB&Z%iTTpvaB7Hbyypf_)}yIyI^`2j7A1CutQjj1(-sS;E9l`n)ehauObi;}XEWQk_QHn4p`E8?lQuu9_5mI6^oSo9GMfabCA zDvS{GRAR0EVz)=~I<8#cYL%9-q-R67#3RUsNC-aa6x6hOyOA|P-@TC19>$@D$8iaD zQO*`7n(f0H^#ntg$qty}pc-!6O-1u7Pt&C3d^s=Pe3;yH%WZcg4t@K9rW3g9o*Ay% z=(IC}{V7Bi(J!XYLo;0$DN3{$zl#llNJ!MGU57SZI&G1}qMOwdDSDXrFum*?oLoMW zZ^&>cSi&6+jF4nhjC3!)z(R|R+UhGur1?fN(2sLUmWU%4~}d*56*cLQBWhW|QpjBk(@55K}I-^)b!M^Y#9GfB#=&;}erp(=)Sk z^9zeh%PXsE7!c^Zfk7a#*J*vNvHgV%>d@0H#I{Apxq!m4QYs`4vf8XY)_bjuT7JjY zSV+{gNYqfFMv!6#q^rIwMyD+7-g(B_02(aKlSese&eZ}ut*PAg;P z1bLsyma1ChXsl{Ej>hlPm`2ItFIxj706+s%0u%xOD4~I=20(zK4tzD#p7xP=A+jE? zZ8jY>83#3lR8(2Ps9o1_5Y zXqqx>nR#tb-TzNlrA;B%-a9U!Xy;7!H`P6hDP*#Epq4B7aOjRBv6oI9`)Htou(q5Y za7)OCxQ&Tiut-#-xh`7iTx0Dvn~9RL6T literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/nunito-OFL.txt b/src/console/assets/fonts/nunito-OFL.txt new file mode 100644 index 00000000..c8210f08 --- /dev/null +++ b/src/console/assets/fonts/nunito-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2014 The Nunito Project Authors (https://github.com/googlefonts/nunito) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/console/assets/fonts/titilliumweb-400-latin.woff2 b/src/console/assets/fonts/titilliumweb-400-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..47501963c8fa18638ce1c765ca5a94415a9fb99b GIT binary patch literal 12344 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ท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 KP5s2o0RRA`mO5Af literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/titilliumweb-700-latin.woff2 b/src/console/assets/fonts/titilliumweb-700-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8672f69df2be86746b141240d4982466efb9f7c7 GIT binary patch literal 11732 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 literal 0 HcmV?d00001 diff --git a/src/console/assets/fonts/titilliumweb-OFL.txt b/src/console/assets/fonts/titilliumweb-OFL.txt new file mode 100644 index 00000000..4a44b9b3 --- /dev/null +++ b/src/console/assets/fonts/titilliumweb-OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2009-2011 by Accademia di Belle Arti di Urbino and students of MA course of Visual design. Some rights reserved. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/console/assets/logs.js b/src/console/assets/logs.js index ee388ee7..e7dde82c 100644 --- a/src/console/assets/logs.js +++ b/src/console/assets/logs.js @@ -1,3 +1,4 @@ +import { activity } from './look.js'; const content = document.querySelector("#log-content"); const follow = document.querySelector("#follow-log"); const status = document.querySelector("#log-status"); @@ -22,6 +23,8 @@ stream.addEventListener("lines", event => { scroll(); } status.textContent = batch.done ? "Complete" : "Live"; + content.dataset.live = String(!batch.done); + activity(); if (batch.done) stream.close(); }); stream.addEventListener("log-error", event => { status.textContent = event.data; stream.close(); }); diff --git a/src/console/assets/look.js b/src/console/assets/look.js new file mode 100644 index 00000000..87e02cea --- /dev/null +++ b/src/console/assets/look.js @@ -0,0 +1,94 @@ +// The machine owns its look; only Pause motion belongs to this browser. +const root = document.documentElement; +const themes = document.querySelector('#themes'); +const sections = document.querySelector('#sections-chooser'); +const message = document.querySelector('#look-status'); +const pause = document.querySelector('#pause-motion'); +const reduced = matchMedia('(prefers-reduced-motion: reduce)'); +let csrf; +let revision = 0; +let saving = false; +let paused = false; +try { paused = localStorage.getItem('thirdshift:console:pause-motion') === 'true'; } catch { /* optional storage */ } + +export function motionAllowed() { return !paused && !reduced.matches; } +function motion() { + root.dataset.paused = String(paused); + pause?.setAttribute('aria-pressed', String(paused)); + if (!motionAllowed()) for (const animation of document.getAnimations()) animation.cancel(); +} +pause?.addEventListener('click', () => { + paused = !paused; + try { localStorage.setItem('thirdshift:console:pause-motion', String(paused)); } catch { /* optional storage */ } + motion(); +}); +reduced.addEventListener('change', motion); +motion(); + +export function activity() { + root.dataset.live = String(!!document.querySelector('.command[data-live="true"], #log-content[data-live="true"]')); +} + +function apply(settings) { + root.dataset.theme = settings.theme; + for (const section of document.querySelectorAll('#inbox > details[data-group]')) { + section.hidden = settings.hidden_sections.includes(section.dataset.group.replaceAll(' ', '-')); + } + if (!sections.open) for (const checkbox of document.querySelectorAll('#section-options input')) checkbox.checked = !settings.hidden_sections.includes(checkbox.value); + if (!themes.open) document.querySelector('#theme-name').value = settings.theme; + activity(); +} + +export async function loadLook() { + if (!themes || saving) return; + const requestedRevision = revision; + try { + const response = await fetch('/look', { cache: 'no-store' }); + if (!response.ok || response.redirected) throw new Error('Look unavailable'); + const settings = await response.json(); + if (requestedRevision !== revision || saving) return; + csrf = settings.csrf; + const picker = document.querySelector('#theme-name'); + if (!picker.options.length) { + for (const name of settings.themes) picker.add(new Option(name.replace('-', ' · '), name)); + for (const name of settings.sections) { + const label = document.createElement('label'); + const checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; checkbox.value = name; + label.append(checkbox, ` Show ${name.replaceAll('-', ' ').replace(/^./, c => c.toUpperCase())}`); + document.querySelector('#section-options').append(label); + } + } + apply(settings); + } catch { message.textContent = 'Could not load the Console look. Reload to try again.'; } +} + +async function save(path, values) { + revision++; + saving = true; + message.textContent = ''; + try { + const response = await fetch(path, { method: 'POST', headers: { 'x-csrf-token': csrf }, body: new URLSearchParams(values) }); + if (!response.ok || response.redirected) throw new Error('Save failed'); + apply(await response.json()); + message.textContent = 'Console look saved.'; + } catch { message.textContent = 'Could not save the Console look. Reload to try again.'; } + finally { saving = false; } +} + +if (themes) { + document.querySelector('[data-open-themes]').addEventListener('click', async () => { await loadLook(); themes.showModal(); }); + document.querySelector('[data-close-themes]').addEventListener('click', () => themes.close()); + document.querySelector('[data-open-sections]').addEventListener('click', async () => { await loadLook(); sections.showModal(); }); + document.querySelector('[data-close-sections]').addEventListener('click', () => sections.close()); + document.querySelector('#theme-form').addEventListener('submit', event => { + event.preventDefault(); save('/theme', { theme: document.querySelector('#theme-name').value }); + }); + document.querySelector('#sections-form').addEventListener('submit', event => { + event.preventDefault(); + const options = [...document.querySelectorAll('#section-options input')]; + save('/sections', { hide: options.filter(c => !c.checked).map(c => c.value).join(','), show: options.filter(c => c.checked).map(c => c.value).join(',') }); + }); + loadLook(); +} +activity(); diff --git a/src/console/assets/themes.css b/src/console/assets/themes.css new file mode 100644 index 00000000..10af1e39 --- /dev/null +++ b/src/console/assets/themes.css @@ -0,0 +1,260 @@ +@font-face { font-family: "Big Shoulders Display"; src: url("/assets/fonts/bigshouldersdisplay-100-900-latin.woff2") format("woff2"); font-weight: 100 900; font-display: swap; } +@font-face { font-family: "JetBrains Mono"; src: url("/assets/fonts/jetbrainsmono-100-800-latin.woff2") format("woff2"); font-weight: 100 800; font-display: swap; } +@font-face { font-family: "Inter"; src: url("/assets/fonts/inter-100-900-latin.woff2") format("woff2"); font-weight: 100 900; font-display: swap; } +@font-face { font-family: "Caprasimo"; src: url("/assets/fonts/caprasimo-400-latin.woff2") format("woff2"); font-weight: 400; font-display: swap; } +@font-face { font-family: "Nunito"; src: url("/assets/fonts/nunito-200-1000-latin.woff2") format("woff2"); font-weight: 200 1000; font-display: swap; } +@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/barlowcondensed-400-latin.woff2") format("woff2"); font-weight: 400; font-display: swap; } +@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/barlowcondensed-600-latin.woff2") format("woff2"); font-weight: 600; font-display: swap; } +@font-face { font-family: "Barlow Condensed"; src: url("/assets/fonts/barlowcondensed-700-latin.woff2") format("woff2"); font-weight: 700; font-display: swap; } +@font-face { font-family: "Titillium Web"; src: url("/assets/fonts/titilliumweb-400-latin.woff2") format("woff2"); font-weight: 400; font-display: swap; } +@font-face { font-family: "Titillium Web"; src: url("/assets/fonts/titilliumweb-600-latin.woff2") format("woff2"); font-weight: 600; font-display: swap; } +@font-face { font-family: "Titillium Web"; src: url("/assets/fonts/titilliumweb-700-latin.woff2") format("woff2"); font-weight: 700; font-display: swap; } +@font-face { font-family: "Atkinson Hyperlegible"; src: url("/assets/fonts/atkinsonhyperlegible-400-latin.woff2") format("woff2"); font-weight: 400; font-display: swap; } +@font-face { font-family: "Atkinson Hyperlegible"; src: url("/assets/fonts/atkinsonhyperlegible-700-latin.woff2") format("woff2"); font-weight: 700; font-display: swap; } + +/* Adapted from the approved #711 prototype (05b1b0a). Tokens only; layout lives in console.css. */ +:root { color-scheme: light dark; --activity-motion: none; } +:root[data-theme$="-light"] { color-scheme: light; } +:root[data-theme$="-dark"] { color-scheme: dark; } +:root[data-theme^="focus-"] { + --bg: light-dark(#F7F7F5, #121214); + --panel: light-dark(#FFFFFF, #19191C); + --panel-2: light-dark(#F0F0EE, #212125); + --sel-bg: light-dark(#EEEEEB, #2A2A2F); + --text: light-dark(#18181A, #E8E8EA); + --head: light-dark(#18181A, #E8E8EA); + --dim: light-dark(#6B6B70, #A0A0A8); + --rule: light-dark(#E3E3E0, #2C2C31); + --link: light-dark(#18181A, #E8E8EA); + --urgent: light-dark(#D7263D, #FF6B78); + --urgent-text: light-dark(#9A1424, #FFB0B5); + --look: light-dark(#B06800, #FFB020); + --look-text: light-dark(#7E4C00, #FFB52E); + --working: light-dark(#5E5E63, #A8A8B0); + --working-text: light-dark(#4A4A4F, #B4B4BC); + --landing: light-dark(#6B6B70, #9A9AA2); + --ready: light-dark(#3F3F44, #C4C4CA); + --ready-text: light-dark(#3F3F44, #C4C4CA); + --done: light-dark(#6B6B70, #9A9AA2); + --on-urgent: light-dark(#FFFFFF, #000000); + --on-look: light-dark(#000000, #000000); + --on-working: light-dark(#FFFFFF, #000000); + --on-landing: light-dark(#FFFFFF, #000000); + --on-ready: light-dark(#FFFFFF, #000000); + --on-done: light-dark(#FFFFFF, #000000); + --font-head: "IBM Plex Sans", sans-serif; + --font-body: "IBM Plex Sans", sans-serif; + --font-mono: "IBM Plex Mono", monospace; + --body-size: 14px; + --head-weight: 600; + --head-case: none; + --radius: 4px; + --tag-bg: transparent; + --tag-text: var(--text); + --activity-decoration: none; + --activity-speed: 2s; + --panel-shadow: none; + --title-shadow: none; +} +:root[data-theme^="plain-"] { + --bg: light-dark(#FCFCFB, #111214); + --panel: light-dark(#FFFFFF, #15171A); + --panel-2: light-dark(#F3F4F6, #1C1F23); + --sel-bg: light-dark(#EEF3FD, #17223A); + --text: light-dark(#1C1D1F, #E6E7E9); + --head: light-dark(#62676E, #9096A0); + --dim: light-dark(#62676E, #9096A0); + --rule: light-dark(#E4E6E9, #26292E); + --link: light-dark(#1C1D1F, #E6E7E9); + --urgent: light-dark(#C4262E, #FF6B6B); + --urgent-text: light-dark(#C4262E, #FF6B6B); + --look: light-dark(#9A5B00, #F0B45A); + --look-text: light-dark(#9A5B00, #F0B45A); + --working: light-dark(#1F6FEB, #6AA8FF); + --working-text: light-dark(#1A5FCC, #6AA8FF); + --landing: light-dark(#7B4FD4, #B39CFF); + --ready: light-dark(#1A7F37, #57C97A); + --ready-text: light-dark(#1A7F37, #57C97A); + --done: light-dark(#62676E, #9096A0); + --on-urgent: light-dark(#FFFFFF, #000000); + --on-look: light-dark(#FFFFFF, #000000); + --on-working: light-dark(#FFFFFF, #000000); + --on-landing: light-dark(#FFFFFF, #000000); + --on-ready: light-dark(#FFFFFF, #000000); + --on-done: light-dark(#FFFFFF, #000000); + --font-head: "Inter", sans-serif; + --font-body: "Inter", sans-serif; + --font-mono: "JetBrains Mono", monospace; + --body-size: 13.5px; + --head-weight: 600; + --head-case: uppercase; + --radius: 6px; + --tag-bg: transparent; + --tag-text: var(--text); + --activity-decoration: none; + --activity-speed: 2s; + --panel-shadow: none; + --title-shadow: none; +} +:root[data-theme^="press-"] { + --bg: light-dark(#E8E6E1, #0A0A0A); + --panel: light-dark(#F4F2EE, #141414); + --panel-2: light-dark(#DCD9D2, #1E1E1E); + --sel-bg: light-dark(#DCD9D2, #1E1E1E); + --text: light-dark(#111111, #E8E6E1); + --head: light-dark(#111111, #E8E6E1); + --dim: light-dark(#55514A, #9A978F); + --rule: light-dark(#C6C1B6, #2A2A2A); + --link: light-dark(#005F86, #00AEEF); + --urgent: light-dark(#EC008C, #EC008C); + --urgent-text: light-dark(#A80064, #FF5CB8); + --look: light-dark(#FFF200, #FFF200); + --look-text: light-dark(#615500, #FFF200); + --working: light-dark(#00AEEF, #00AEEF); + --working-text: light-dark(#005A80, #00AEEF); + --landing: light-dark(#00AEEF, #00AEEF); + --ready: light-dark(#111111, #E8E6E1); + --ready-text: light-dark(#111111, #E8E6E1); + --done: light-dark(#68645C, #9A978F); + --on-urgent: light-dark(#000000, #000000); + --on-look: light-dark(#000000, #000000); + --on-working: light-dark(#000000, #000000); + --on-landing: light-dark(#000000, #000000); + --on-ready: light-dark(#FFFFFF, #000000); + --on-done: light-dark(#FFFFFF, #000000); + --font-head: "Big Shoulders Display", sans-serif; + --font-body: "JetBrains Mono", sans-serif; + --font-mono: "JetBrains Mono", monospace; + --body-size: 13px; + --head-weight: 600; + --head-case: none; + --radius: 0px; + --tag-bg: var(--state-ink); + --tag-text: var(--state-on); + --activity-decoration: none; + --activity-speed: 2s; + --panel-shadow: none; + --title-shadow: 1px 0 var(--urgent); +} +:root[data-theme^="signal-"] { + --bg: light-dark(#FAFAFA, #111315); + --panel: light-dark(#FFFFFF, #181B1E); + --panel-2: light-dark(#F1F2F4, #20242A); + --sel-bg: light-dark(#ECEDEF, #262B31); + --text: light-dark(#111316, #ECEEF0); + --head: light-dark(#111316, #ECEEF0); + --dim: light-dark(#4F555C, #A4AAB1); + --rule: light-dark(#DDE0E3, #2C3137); + --link: light-dark(#111316, #ECEEF0); + --urgent: light-dark(#D55E00, #FF7A33); + --urgent-text: light-dark(#B3470A, #FF8A4C); + --look: light-dark(#E69F00, #F0B429); + --look-text: light-dark(#7A4E00, #F2B53A); + --working: light-dark(#0072B2, #3FA2E0); + --working-text: light-dark(#00609A, #62B8F0); + --landing: light-dark(#9B3F76, #D97DB6); + --ready: light-dark(#009E73, #2CC79A); + --ready-text: light-dark(#00694A, #3CCB9E); + --done: light-dark(#5A6067, #9AA0A6); + --on-urgent: light-dark(#000000, #000000); + --on-look: light-dark(#000000, #000000); + --on-working: light-dark(#FFFFFF, #000000); + --on-landing: light-dark(#FFFFFF, #000000); + --on-ready: light-dark(#000000, #000000); + --on-done: light-dark(#FFFFFF, #000000); + --font-head: "Atkinson Hyperlegible", sans-serif; + --font-body: "Atkinson Hyperlegible", sans-serif; + --font-mono: "IBM Plex Mono", monospace; + --body-size: 14.5px; + --head-weight: 700; + --head-case: none; + --radius: 4px; + --tag-bg: var(--state-ink); + --tag-text: var(--state-on); + --activity-decoration: none; + --activity-speed: 2s; + --panel-shadow: none; + --title-shadow: none; +} +:root[data-theme^="garden-"] { + --bg: light-dark(#F6F0E1, #161A14); + --panel: light-dark(#FBF7EC, #1B2018); + --panel-2: light-dark(#EFE6CF, #1E241B); + --sel-bg: light-dark(#E6EEDA, #233020); + --text: light-dark(#2E2A1F, #E8E2CF); + --head: light-dark(#2E2A1F, #E8E2CF); + --dim: light-dark(#6B6250, #A59D84); + --rule: light-dark(#D9CCAA, #36402F); + --link: light-dark(#2F6B2A, #9BD480); + --urgent: light-dark(#A23B2A, #EC7A66); + --urgent-text: light-dark(#A23B2A, #EC7A66); + --look: light-dark(#F2C14E, #F2C14E); + --look-text: light-dark(#7A5200, #F2C14E); + --working: light-dark(#4F8A3C, #6FAE58); + --working-text: light-dark(#2F6B2A, #8BC970); + --landing: light-dark(#A0773F, #C39A5A); + --ready: light-dark(#5B8FB9, #8EC1E6); + --ready-text: light-dark(#2F5F86, #8EC1E6); + --done: light-dark(#6B6250, #A59D84); + --on-urgent: light-dark(#FFFFFF, #000000); + --on-look: light-dark(#000000, #000000); + --on-working: light-dark(#000000, #000000); + --on-landing: light-dark(#000000, #000000); + --on-ready: light-dark(#000000, #000000); + --on-done: light-dark(#FFFFFF, #000000); + --font-head: "Caprasimo", sans-serif; + --font-body: "Nunito", sans-serif; + --font-mono: "JetBrains Mono", monospace; + --body-size: 14px; + --head-weight: 400; + --head-case: none; + --radius: 8px; + --tag-bg: var(--state-ink); + --tag-text: var(--state-on); + --activity-decoration: repeating-linear-gradient(90deg, var(--working) 0 6px, transparent 6px 12px); + --activity-speed: 5s; + --activity-motion: activity-drift var(--activity-speed) linear infinite; + --panel-shadow: none; + --title-shadow: none; +} +:root[data-theme^="factory-"] { + --bg: light-dark(#E3E6E8, #1C1D1F); + --panel: light-dark(#EFF1F3, #2F3033); + --panel-2: light-dark(#E6E9EB, #3D3F42); + --sel-bg: light-dark(#F6F7F8, #3B3E43); + --text: light-dark(#1B1D1F, #E3E3E3); + --head: light-dark(#1B1D1F, #FFE6C0); + --dim: light-dark(#3E4246, #B0B3B8); + --rule: light-dark(#8E9397, #55575B); + --link: light-dark(#6A3A00, #FFA200); + --urgent: light-dark(#A8261C, #E03434); + --urgent-text: light-dark(#7E1912, #FF9288); + --look: light-dark(#E8B33A, #E8B33A); + --look-text: light-dark(#4F3B00, #F2C14E); + --working: light-dark(#2E7D32, #5EB663); + --working-text: light-dark(#164A1A, #7FD07F); + --landing: light-dark(#E08A00, #FFA200); + --ready: light-dark(#1F6FA8, #4AA8E5); + --ready-text: light-dark(#0E4A74, #5FB4EA); + --done: light-dark(#3C4044, #8F9195); + --on-urgent: light-dark(#FFFFFF, #000000); + --on-look: light-dark(#000000, #000000); + --on-working: light-dark(#FFFFFF, #000000); + --on-landing: light-dark(#000000, #000000); + --on-ready: light-dark(#FFFFFF, #000000); + --on-done: light-dark(#FFFFFF, #000000); + --font-head: "Barlow Condensed", sans-serif; + --font-body: "Titillium Web", sans-serif; + --font-mono: "JetBrains Mono", monospace; + --body-size: 14px; + --head-weight: 700; + --head-case: uppercase; + --radius: 2px; + --tag-bg: var(--state-ink); + --tag-text: var(--state-on); + --activity-decoration: repeating-linear-gradient(90deg, var(--working) 0 6px, transparent 6px 12px); + --activity-speed: 2s; + --panel-shadow: inset 0 1px #ffffff33, inset 0 -1px #00000033; + --activity-motion: activity-drift var(--activity-speed) linear infinite; + --title-shadow: none; +} diff --git a/src/console/auth.rs b/src/console/auth.rs index 8aebbc4e..5c1c1490 100644 --- a/src/console/auth.rs +++ b/src/console/auth.rs @@ -35,7 +35,7 @@ impl Access { pub(super) struct Viewer { pub email: String, token: Option, - csrf: String, + pub(super) csrf: String, } impl Viewer { diff --git a/src/console/chrome.html b/src/console/chrome.html index d7b63b73..efda6ca1 100644 --- a/src/console/chrome.html +++ b/src/console/chrome.html @@ -1,5 +1,15 @@

-
+

+ +

Themes

thirdshift console theme <name>

+
+ +
+ +

Sections

thirdshift console sections --hide done --show working

+
Visible Inbox sections
+ +

Keyboard

@@ -11,5 +21,6 @@

Keyboard

g, then a letter
Jump to a section or page; g lists the letters
z
Fold the current section
?
Show this help
+

Shift+T opens Themes. Sections and Pause motion are in the footer.

diff --git a/src/console/inbox.html b/src/console/inbox.html index 8df1510b..9193c260 100644 --- a/src/console/inbox.html +++ b/src/console/inbox.html @@ -40,7 +40,7 @@ {% when None %} {% match inbox.warning %}{% when Some with (warning) %}

Warning: {{ warning }}

{% when None %}{% endmatch %} {% for section in inbox.sections %} -
+
{{ section.title }}{{ section.rows.len() }} {% if section.rows.is_empty() && section.references.is_empty() %}

Nothing here.

{% endif %} {# Only the rendered, auto-escaped RowTemplate is trusted as HTML. #} diff --git a/src/console/look.rs b/src/console/look.rs new file mode 100644 index 00000000..6687940e --- /dev/null +++ b/src/console/look.rs @@ -0,0 +1,145 @@ +//! The CLI and authenticated page share the same restricted look writes. +use anyhow::{Context, Result, ensure}; +use axum::http::StatusCode; +use axum::response::{IntoResponse, Response}; +use axum::{Extension, Form, Json}; +use serde::Deserialize; +use serde_json::json; + +use super::accounts::{Accounts, EventKind}; +use super::auth::Viewer; +use crate::config::{ConsoleSettings, UserConfig, console}; + +fn write_theme(name: &str, actor: &str) -> Result { + console::validate_theme(name)?; + let accounts = Accounts::load()?; + let settings = console::write_look(Some(name), &[], &[])?; + accounts.record(actor, EventKind::ThemeChanged)?; + Ok(settings) +} + +fn write_sections(hide: &[String], show: &[String], actor: &str) -> Result { + console::validate_sections(hide)?; + console::validate_sections(show)?; + let accounts = Accounts::load()?; + let settings = console::write_look(None, hide, show)?; + accounts.record(actor, EventKind::SectionsChanged)?; + Ok(settings) +} + +fn cli_actor() -> Result { + let user = std::process::Command::new("id") + .arg("-un") + .output() + .context("could not identify the Unix account changing the Console look")?; + ensure!( + user.status.success(), + "could not identify the Unix account changing the Console look" + ); + Ok(format!("CLI:{}", String::from_utf8(user.stdout)?.trim())) +} + +pub fn theme(name: Option<&str>, json_output: bool) -> Result { + let Some(name) = name else { + return Ok(if json_output { + serde_json::to_string(&console::theme_names())? + } else { + console::theme_names().join("\n") + }); + }; + let settings = write_theme(name, &cli_actor()?)?; + Ok(if json_output { + serde_json::to_string(&settings)? + } else { + format!("Theme: {}", settings.theme) + }) +} + +pub fn sections(hide: &[String], show: &[String], json_output: bool) -> Result { + let settings = if hide.is_empty() && show.is_empty() { + UserConfig::load()?.console + } else { + write_sections(hide, show, &cli_actor()?)? + }; + Ok(if json_output { + serde_json::to_string(&settings)? + } else { + format!("Hidden sections: {}", settings.hidden_sections.join(", ")) + }) +} + +pub(super) async fn get(Extension(viewer): Extension) -> Response { + match tokio::task::spawn_blocking(UserConfig::load).await { + Ok(Ok(config)) => Json(json!({ + "theme": config.console.theme, + "hidden_sections": config.console.hidden_sections, + "themes": console::theme_names(), "sections": console::SECTIONS, + "csrf": viewer.csrf, + })) + .into_response(), + error => failed(error), + } +} + +#[derive(Deserialize)] +#[serde(deny_unknown_fields)] +pub(super) struct ThemeForm { + theme: String, +} + +#[derive(Deserialize)] +#[serde(deny_unknown_fields)] +pub(super) struct SectionsForm { + #[serde(default)] + hide: String, + #[serde(default)] + show: String, +} + +pub(super) async fn set_theme( + Extension(viewer): Extension, + Form(form): Form, +) -> Response { + if let Err(error) = console::validate_theme(&form.theme) { + return (StatusCode::BAD_REQUEST, error.to_string()).into_response(); + } + written(tokio::task::spawn_blocking(move || write_theme(&form.theme, &viewer.email)).await) +} + +pub(super) async fn set_sections( + Extension(viewer): Extension, + Form(form): Form, +) -> Response { + let split = |value: &str| { + value + .split(',') + .filter(|s| !s.is_empty()) + .map(str::to_owned) + .collect::>() + }; + let (hide, show) = (split(&form.hide), split(&form.show)); + if let Err(error) = + console::validate_sections(&hide).and_then(|()| console::validate_sections(&show)) + { + return (StatusCode::BAD_REQUEST, error.to_string()).into_response(); + } + written(tokio::task::spawn_blocking(move || write_sections(&hide, &show, &viewer.email)).await) +} + +fn written( + result: std::result::Result, tokio::task::JoinError>, +) -> Response { + match result { + Ok(Ok(settings)) => Json(settings).into_response(), + error => failed(error), + } +} + +fn failed(error: impl std::fmt::Debug) -> Response { + eprintln!("thirdshift Console: look operation failed: {error:?}"); + ( + StatusCode::INTERNAL_SERVER_ERROR, + "Can't read or save the Console look.", + ) + .into_response() +} diff --git a/src/console/reader.html b/src/console/reader.html index ee91b109..f482f694 100644 --- a/src/console/reader.html +++ b/src/console/reader.html @@ -5,5 +5,5 @@

{{ log.kind }}

{{ log.name }} {% if log.live %}live{% endif %}

thirdshift logs --file {{ log.id }}

{% if log.live %}Live{% else %}Complete{% endif %}

{# Only the conversation renderer's escaped HTML is trusted. #} -
{{ html|safe }}
+
{{ html|safe }}
{% include "console/chrome.html" %} diff --git a/src/console/row.html b/src/console/row.html index 7551504c..53bd88a2 100644 --- a/src/console/row.html +++ b/src/console/row.html @@ -1,4 +1,4 @@ -
  • +
  • {% if row.live %}{% endif %}{{ row.state }} {{ row.subject }} {{ row.title }}{{ row.age }}

    {{ row.now_line }}

    Run and Session logs diff --git a/src/console/time.html b/src/console/time.html index 7d8d803a..f354d7d4 100644 --- a/src/console/time.html +++ b/src/console/time.html @@ -26,13 +26,13 @@ {% for lane in views.lanes %}
    {% for run in lane %} -
    +

    {{ run.subject }} · {{ run.state }}

    {{ run.title }}

    {% if run.stages.is_empty() %}

    No stage times retained.

    {% endif %} -
      {% for stage in run.stages %}
    1. {{ stage.name }}: {{ stage.text }}
    2. {% endfor %}
    +
      {% for stage in run.stages %}
    1. {{ stage.name }}: {{ stage.text }}
    2. {% endfor %}
    {% endfor %}
    @@ -43,8 +43,8 @@

    {{ run.subject }} · {{ r {% for grid in views.grids %} - {% for run in grid.runs %}{% endfor %} - {% for row in grid.rows %}{% for cell in row.cells %}{% endfor %}{% endfor %} + {% for run in grid.runs %}{% endfor %} + {% for row in grid.rows %}{% for cell in row.cells %}{% endfor %}{% endfor %}
    {{ grid.repository }}
    Stage
    Usual range
    {{ run.subject }}
    {{ run.state }}
    {{ run.title }}
    {{ row.name }}
    Usual range: {{ row.usual }}
    {{ grid.runs[loop.index0].subject }}: {{ cell }}
    Stage
    Usual range
    {{ run.subject }}
    {{ run.state }}
    {{ run.title }}
    {{ row.name }}
    Usual range: {{ row.usual }}
    {{ grid.runs[loop.index0].subject }}: {{ cell }}
    {% if grid.rows.is_empty() %}

    No stage times retained.

    {% endif %} {% endfor %} diff --git a/src/console/waterfall.html b/src/console/waterfall.html index 38e4e83d..c08d8cb7 100644 --- a/src/console/waterfall.html +++ b/src/console/waterfall.html @@ -20,12 +20,12 @@

    Shared time axis: {{ view.start }} to {{ view.end }}. Tool intervals run until the next matched call in that Session or the stage boundary; they include waiting and are not measured execution times. Unknown times have no bar.

    {% for run in view.runs %}
    -

    {{ run.kind }} · {{ run.subject }} · {{ run.state }}

    {{ run.title }}

    +

    {{ run.kind }} · {{ run.subject }} · {{ run.state }}

    {{ run.title }}

    {{ run.span.start }} · {{ run.span.text }}

    {% if run.stages.is_empty() %}

    No stage times retained.

    {% endif %}
      {% for stage in run.stages %} -
    1. {{ stage.name }}

      {{ stage.span.start }} · {{ stage.span.text }}

      +
    2. {{ stage.name }}

      {{ stage.span.start }} · {{ stage.span.text }}

        {% for tool in stage.tools %}
      1. {{ tool.label }}

        {{ tool.span.start }} · {{ tool.span.text }}

        diff --git a/src/main.rs b/src/main.rs index eb83ef0f..3120c616 100644 --- a/src/main.rs +++ b/src/main.rs @@ -82,6 +82,8 @@ usage: thirdshift Run the factory on the iss thirdshift console password [--email
        ] Set a Console password privately thirdshift console sign-out [--email
        ] [--json] End an account's sessions thirdshift console log [--json] Read this machine's Console log + thirdshift console theme [--json] Choose or list Console Themes + thirdshift console sections [--hide
        ] [--show
        ] [--json] Choose visible sections thirdshift show [--json] Show one Command in full thirdshift stop [--requeue] Stop a live Command and wait for cleanup thirdshift logs [--command ] [--json] List this machine's logs @@ -140,6 +142,12 @@ fn main() -> ExitCode { Ok(Command::Update) => return outcome(update::update()), Ok(Command::Setup) => return outcome(setup::setup()), Ok(Command::ConsolePassword(email)) => return outcome(console::password(email.as_deref())), + Ok(Command::ConsoleTheme { name, json }) => { + return printed(console::theme(name.as_deref(), json)); + } + Ok(Command::ConsoleSections { hide, show, json }) => { + return printed(console::sections(&hide, &show, json)); + } Ok(Command::ConsoleSignOut { email, json }) => { return match console::sign_out(email.as_deref(), json) { Ok(()) => ExitCode::SUCCESS, @@ -362,6 +370,17 @@ fn release_summary() -> ExitCode { } } +/// A Console settings view or action, with machine-readable output on stdout. +fn printed(result: anyhow::Result) -> ExitCode { + match result { + Ok(text) => { + println!("{text}"); + ExitCode::SUCCESS + } + Err(error) => failure(&error), + } +} + /// The end of a command other than a Run: the line that says how it went, /// or its error, on stderr. fn outcome(result: anyhow::Result) -> ExitCode { diff --git a/tests/console.rs b/tests/console.rs index 308d0341..c24aafef 100644 --- a/tests/console.rs +++ b/tests/console.rs @@ -15,6 +15,9 @@ use serde_json::{Value, json}; #[path = "console/accounts.rs"] mod accounts; +#[path = "console/look.rs"] +mod look; + struct Console { child: Child, address: String, diff --git a/tests/console/accounts.rs b/tests/console/accounts.rs index 39f4b5c5..d30dfe1c 100644 --- a/tests/console/accounts.rs +++ b/tests/console/accounts.rs @@ -152,6 +152,7 @@ fn sign_in_guards_pages_streams_and_actions_and_pairs_the_console_log_with_cli() "/events", "/console-log", "/account", + "/look", ] { assert_eq!( get(&console, path, "").status(), @@ -262,6 +263,65 @@ fn sign_in_guards_pages_streams_and_actions_and_pairs_the_console_log_with_cli() assert_eq!(get(&console, "/", &session).status(), 303); } +#[test] +fn signed_in_look_writes_name_the_account_and_keep_access_settings() { + let home = configured(); + assert!(password(home.path(), None, PASSWORD, PASSWORD).0.success()); + let console = Console::start_mode( + Path::new(env!("CARGO_BIN_EXE_thirdshift")), + home.path(), + false, + ); + let session = cookie(&sign_in(&console, EMAIL, PASSWORD)); + let look: Value = get(&console, "/look", &session).json().unwrap(); + for (path, fields) in [ + ("/theme", vec![("theme", "signal-light")]), + ("/sections", vec![("hide", "done")]), + ] { + assert_eq!( + client() + .post(format!("{}{path}", console.address)) + .header("cookie", &session) + .form(&fields) + .send() + .unwrap() + .status(), + 403 + ); + assert_eq!( + client() + .post(format!("{}{path}", console.address)) + .header("cookie", &session) + .header("x-csrf-token", look["csrf"].as_str().unwrap()) + .form(&fields) + .send() + .unwrap() + .status(), + 200 + ); + } + let output = cli(home.path(), &["console", "log", "--json"]); + let events: Vec = serde_json::from_slice(&output.stdout).unwrap(); + for kind in ["theme-changed", "sections-changed"] { + let changed: Vec<_> = events + .iter() + .filter(|event| event["event"] == kind) + .collect(); + assert_eq!(changed.len(), 1); + assert_eq!(changed[0]["email"], EMAIL); + } + assert_eq!(get(&console, "/", &session).status(), 200); + let config: Value = serde_json::to_value( + toml::from_str::( + &fs::read_to_string(home.path().join(".thirdshift/config.toml")).unwrap(), + ) + .unwrap(), + ) + .unwrap(); + assert_eq!(config["console"]["allowed_emails"], json!([EMAIL])); + assert_eq!(config["console"]["port"], 0); +} + #[test] fn cli_and_allowlist_changes_revoke_http_sessions_without_deleting_the_account() { let home = configured(); diff --git a/tests/console/look.rs b/tests/console/look.rs new file mode 100644 index 00000000..6e10df3c --- /dev/null +++ b/tests/console/look.rs @@ -0,0 +1,119 @@ +use super::*; + +fn cli(home: &Path, arguments: &[&str]) -> std::process::Output { + Command::new(env!("CARGO_BIN_EXE_thirdshift")) + .args(arguments) + .env("HOME", home) + .output() + .unwrap() +} + +#[test] +fn look_cli_preserves_other_settings_and_comments() { + let home = tempfile::tempdir().unwrap(); + configure(home.path()); + let path = home.path().join(".thirdshift/config.toml"); + let original = "# my machine\n[console] # reader\nport = 0 # local\nallowed_emails = [\"owner@example.test\"] # access\ntheme = \"focus-auto\" # look\n\n[merge]\nalways = true # keep\n"; + fs::write(&path, original).unwrap(); + let output = cli(home.path(), &["console", "theme", "garden-dark"]); + assert!( + output.status.success(), + "{}", + String::from_utf8_lossy(&output.stderr) + ); + assert_eq!( + fs::read_to_string(&path).unwrap(), + original.replace("focus-auto", "garden-dark") + ); + let output = cli( + home.path(), + &[ + "console", "sections", "--hide", "done", "--hide", "resolved", + ], + ); + assert!( + output.status.success(), + "{}", + String::from_utf8_lossy(&output.stderr) + ); + let output = cli( + home.path(), + &["console", "sections", "--show", "done", "--json"], + ); + assert!(output.status.success()); + let settings: Value = serde_json::from_slice(&output.stdout).unwrap(); + assert_eq!(settings["hidden_sections"], json!(["resolved"])); + let text = fs::read_to_string(&path).unwrap(); + assert!(text.contains("allowed_emails = [\"owner@example.test\"] # access")); + assert!(text.contains("always = true # keep")); + let output = cli(home.path(), &["console", "log", "--json"]); + assert!(output.status.success()); + let events: Value = serde_json::from_slice(&output.stdout).unwrap(); + assert_eq!(events.as_array().unwrap().len(), 3); + assert!( + events + .as_array() + .unwrap() + .iter() + .all(|event| event["email"].as_str().unwrap().starts_with("CLI:")) + ); + let output = cli(home.path(), &["console", "theme", "list", "--json"]); + let themes: Value = serde_json::from_slice(&output.stdout).unwrap(); + assert_eq!(themes.as_array().unwrap().len(), 18); +} + +#[test] +fn page_can_only_write_look_keys_with_csrf() { + let home = tempfile::tempdir().unwrap(); + configure(home.path()); + let console = Console::start(Path::new(env!("CARGO_BIN_EXE_thirdshift")), home.path()); + let response = console.get("/look"); + assert_eq!(response.status(), 200); + let look: Value = response.json().unwrap(); + let client = reqwest::blocking::Client::new(); + let post = |path: &str, body: &str, csrf: &str| { + client + .post(format!("{}{path}", console.address)) + .header("x-csrf-token", csrf) + .header("content-type", "application/x-www-form-urlencoded") + .body(body.to_owned()) + .send() + .unwrap() + }; + assert_eq!(post("/theme", "theme=press-dark", "wrong").status(), 403); + let csrf = look["csrf"].as_str().unwrap(); + let before = fs::read_to_string(home.path().join(".thirdshift/config.toml")).unwrap(); + for (path, body) in [ + ( + "/theme", + "theme=press-dark&allowed_emails=attacker%40example.test", + ), + ("/sections", "hide=done&port=9000"), + ("/theme", "theme=unknown-dark"), + ("/sections", "hide=unknown"), + ] { + assert!( + post(path, body, csrf).status().is_client_error(), + "{path}: {body}" + ); + assert_eq!( + fs::read_to_string(home.path().join(".thirdshift/config.toml")).unwrap(), + before + ); + } + assert_eq!(post("/theme", "theme=press-dark", csrf).status(), 200); + assert_eq!(post("/sections", "hide=done,resolved", csrf).status(), 200); + let look: Value = console.get("/look").json().unwrap(); + assert_eq!(look["theme"], "press-dark"); + assert_eq!(look["hidden_sections"], json!(["done", "resolved"])); + let output = cli(home.path(), &["console", "log", "--json"]); + let events: Value = serde_json::from_slice(&output.stdout).unwrap(); + assert_eq!(events.as_array().unwrap().len(), 2); + assert!( + events + .as_array() + .unwrap() + .iter() + .all(|event| event["email"] == "localhost (no sign-in)") + ); +} From ed0ecd78528b5cccd7084ebfd2a571abcee58b42 Mon Sep 17 00:00:00 2001 From: Jacob Stephens Date: Tue, 20 Oct 2026 06:58:02 +0000 Subject: [PATCH 2/4] Fix reviewed Theme tags and time-page activity motion --- console/tests/inbox.test.cjs | 1 + console/tests/themes-regressions.test.cjs | 83 ++++++++++++++++++++++ src/console/assets/console.css | 12 ++-- src/console/assets/console.js | 30 ++++++-- src/console/assets/themes.css | 84 +++++++++++++++++++---- src/console/time.html | 7 +- src/console/waterfall.html | 3 +- src/logs/status/time.rs | 26 +++++-- 8 files changed, 214 insertions(+), 32 deletions(-) create mode 100644 console/tests/themes-regressions.test.cjs diff --git a/console/tests/inbox.test.cjs b/console/tests/inbox.test.cjs index a5ba35e5..dee6795f 100644 --- a/console/tests/inbox.test.cjs +++ b/console/tests/inbox.test.cjs @@ -71,6 +71,7 @@ test("Shift+T switches all built-in Themes and saves hidden sections across brow await page.goto(origin); await page.keyboard.press('Shift+T'); await page.locator('#themes[open]').waitFor({ timeout: 2000 }); + assert.equal(await page.locator('#look-status').textContent(), ''); try { for (const family of ['focus', 'plain', 'press', 'signal', 'garden', 'factory']) { for (const mode of ['auto', 'light', 'dark']) { diff --git a/console/tests/themes-regressions.test.cjs b/console/tests/themes-regressions.test.cjs new file mode 100644 index 00000000..c53f2ed8 --- /dev/null +++ b/console/tests/themes-regressions.test.cjs @@ -0,0 +1,83 @@ +const assert = require('node:assert/strict'); +const { spawn } = require('node:child_process'); +const { once } = require('node:events'); +const { mkdtemp, mkdir, readFile, writeFile, rm } = require('node:fs/promises'); +const { join, resolve } = require('node:path'); +const { tmpdir } = require('node:os'); +const { createInterface } = require('node:readline'); +const { chromium } = require('playwright'); +const { test } = require('node:test'); +const fs = require('node:fs'); + +test('state tag aliases resolve at the command that supplies their state', async () => { + const browser = await chromium.launch({ headless: true }); + try { + const page = await browser.newPage(); + const assets = resolve(__dirname, '../../src/console/assets'); + const css = fs.readFileSync(join(assets, 'themes.css'), 'utf8') + fs.readFileSync(join(assets, 'console.css'), 'utf8').replace('@import url("/assets/themes.css");', ''); + await page.setContent(`
      2. Failed
      3. `); + const actual = await page.locator('.state').evaluate(el => ({ background: getComputedStyle(el).backgroundColor, color: getComputedStyle(el).color })); + assert.equal(actual.background, 'rgb(236, 0, 140)', 'Press Failed tags should use --urgent as their solid background'); + assert.equal(actual.color, 'rgb(0, 0, 0)', 'Press Failed tags should use --on-urgent text'); + } finally { await browser.close(); } +}); +async function reproduce(mode) { + const home = await mkdtemp(join(tmpdir(), 'thirdshift824-spec-')); + let server, browser, exited; + try { + const root = join(home, '.thirdshift'); + const records = join(root, 'logs/acme/widgets/commands/issue'); + await mkdir(records, { recursive: true }); + await writeFile(join(root, 'config.toml'), `[console]\nport = 0\ntheme = "${mode === 'tags' ? 'press-light' : 'garden-light'}"\n`); + const stat = await readFile(`/proc/${process.pid}/stat`, 'utf8'); + const start = `${(await readFile('/proc/sys/kernel/random/boot_id', 'utf8')).trim()}:${stat.slice(stat.lastIndexOf(')') + 2).split(' ')[19]}`; + const began = new Date(Date.now() - 60_000).toISOString(); + const record = {version: 1, kind: 'Run', name: '1-fixture', repository: 'acme/widgets', hostname: 'fixture', issue: { number: 1, url: 'https://github.com/acme/widgets/issues/1', title: 'Fixture'}, process_id: process.pid, process_start: start, harness: 'codex', started_at: began, ended_at: mode === 'tags' ? new Date().toISOString() : null, outcome: mode === 'tags' ? 'failed' : null, session_log: null, stages: [{name: 'implement', began_at: began, session_log: null}]}; + const recordPath = join(records, '1-fixture.command.json'); + await writeFile(recordPath, JSON.stringify(record)); + await writeFile(join(records, '1-fixture.log'), 'Command output\n'); + server = spawn(process.env.THIRDSHIFT_BINARY ?? resolve(__dirname, '../../target/debug/thirdshift'), ['console', '--no-sign-in'], {env: {...process.env, HOME: home}, stdio: ['ignore', 'pipe', 'inherit']}); + exited = once(server, 'exit'); + const lines = createInterface({input: server.stdout}); + const [origin] = await once(lines, 'line', {signal: AbortSignal.timeout(10_000)}); + lines.close(); + browser = await chromium.launch({headless: true}); + if (mode === 'tags') { + const page = await browser.newPage(); + await page.goto(origin); + const tag = await page.locator('.command[data-state="Failed"] .state').first().evaluate(el => { + const style = getComputedStyle(el); + return {background: style.backgroundColor, color: style.color}; + }); + console.log({tag}); + assert.deepEqual(tag, {background: 'rgb(236, 0, 140)', color: 'rgb(0, 0, 0)'}, 'Press solid urgent tag must render the Theme token fill and its best black/white text'); + } else { + const pages = []; + for (const name of ['lanes', 'stages', 'waterfall']) { + const page = await browser.newPage(); + await page.goto(`${origin}/?page=${name}`); + await page.waitForFunction(() => document.documentElement.dataset.live === 'true'); + assert.ok(await page.evaluate(() => document.getAnimations().some(a => a.playState === 'running')), `${name} starts activity motion`); + pages.push([name, page]); + } + record.ended_at = new Date().toISOString(); record.outcome = 'merged'; + await writeFile(recordPath, JSON.stringify(record)); + const fresh = await (await fetch(`${origin}/?page=lanes`)).text(); + assert.ok(!fresh.includes('data-live="true"'), 'server now observes no live Command'); + await pages[0][1].waitForTimeout(6500); + const moving = []; + for (const [name, page] of pages) if (await page.evaluate(() => document.getAnimations().some(a => a.playState === 'running'))) moving.push(name); + console.log({moving}); + assert.deepEqual(moving, [], 'motion must stop after the only Command ends'); + } + } finally { + await browser?.close(); + if (server && server.exitCode === null) server.kill(); + if (exited) await exited; + await rm(home, {recursive: true, force: true}); + } +} + +test('time-page motion stops after the last Command ends', { skip: process.platform !== 'linux' }, () => reproduce('motion')); +test('served solid tags use their Theme fill and black or white text', { skip: process.platform !== 'linux' }, () => reproduce('tags')); + diff --git a/src/console/assets/console.css b/src/console/assets/console.css index bdd114c6..057084f7 100644 --- a/src/console/assets/console.css +++ b/src/console/assets/console.css @@ -58,12 +58,12 @@ dd dl { border-left: 1px solid var(--rule); padding-left: 8px; } dialog::backdrop { background: #0006; } footer { margin-top: 16px; } #section-options label { display: block; margin: 8px 0; } -.command { box-shadow: var(--panel-shadow); --state-ink: var(--done); --state-on: var(--on-done); } -.command[data-state="live"] { --state-ink: var(--working); --state-on: var(--on-working); } -.command[data-state="Landing"] { --state-ink: var(--landing); --state-on: var(--on-landing); } -.command[data-state="Ready"] { --state-ink: var(--ready); --state-on: var(--on-ready); } -.command:is([data-state="Silent"], [data-state="Died"], [data-state="Failed"], [data-state="Finding"], [data-state="Triage"]) { --state-ink: var(--urgent); --state-on: var(--on-urgent); } -.command[data-state="Slow"] { --state-ink: var(--look); --state-on: var(--on-look); } +.command { box-shadow: var(--panel-shadow); --tag-bg: var(--tag-done-bg); --tag-text: var(--tag-done-text); } +.command[data-state="live"] { --tag-bg: var(--tag-working-bg); --tag-text: var(--tag-working-text); } +.command[data-state="Landing"] { --tag-bg: var(--tag-landing-bg); --tag-text: var(--tag-landing-text); } +.command[data-state="Ready"] { --tag-bg: var(--tag-ready-bg); --tag-text: var(--tag-ready-text); } +.command:is([data-state="Silent"], [data-state="Died"], [data-state="Failed"], [data-state="Finding"], [data-state="Triage"]) { --tag-bg: var(--tag-urgent-bg); --tag-text: var(--tag-urgent-text); } +.command[data-state="Slow"] { --tag-bg: var(--tag-look-bg); --tag-text: var(--tag-look-text); } .command .state { background: var(--tag-bg); color: var(--tag-text); border-radius: var(--radius); padding: 0 3px; } .command[data-live="true"][data-state="live"] > .row-head > .state::before { content: ""; display: inline-block; width: 9px; height: 9px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; margin-right: 5px; } header::after { content: ""; display: block; height: 4px; background: var(--activity-decoration); background-size: 24px 4px; } diff --git a/src/console/assets/console.js b/src/console/assets/console.js index 6c52dad4..73a3362d 100644 --- a/src/console/assets/console.js +++ b/src/console/assets/console.js @@ -97,6 +97,25 @@ function morph(html) { } // Coalesce notices, but fetch again if a change arrives during the request. +const timePage = document.querySelector('main[data-time-page]'); +function morphTimePage(html) { + const next = new DOMParser().parseFromString(html, 'text/html'); + const replacement = next.querySelector('main[data-time-page]'); + if (!replacement) throw new Error('Missing time page'); + const selection = selected?.dataset.command; + const focused = timePage.contains(document.activeElement); + const position = [scrollX, scrollY]; + Idiomorph.morph(timePage, replacement); + if (selection) { + const row = [...timePage.querySelectorAll('.command')].find(row => row.dataset.command === selection); + select(row, { scroll: false }); + if (focused) row?.focus({ preventScroll: true }); + } + window.scrollTo(...position); + activity(); + loadLook(); +} + let refreshing = false, pending = false; async function refresh() { pending = true; @@ -105,9 +124,11 @@ async function refresh() { try { while (pending) { pending = false; - const response = await fetch("/", { cache: "no-store" }); + const response = await fetch(timePage ? location.href : '/', { cache: "no-store" }); if (!response.ok) throw new Error("Inbox unavailable"); - morph(await response.text()); + const html = await response.text(); + if (timePage) morphTimePage(html); + else morph(html); } } catch { startPolling(); @@ -117,7 +138,8 @@ let polling; function startPolling() { polling ??= setInterval(refresh, 5000); } -if (document.getElementById('inbox') && typeof EventSource === "function") { +const observesCommands = document.getElementById('inbox') || timePage; +if (observesCommands && typeof EventSource === "function") { const stream = new EventSource("/events"); stream.addEventListener("commands", refresh); stream.addEventListener("error", startPolling); @@ -126,7 +148,7 @@ if (document.getElementById('inbox') && typeof EventSource === "function") { polling = undefined; refresh(); }); -} else if (document.getElementById('inbox')) { startPolling(); } +} else if (observesCommands) { startPolling(); } const peek = document.querySelector('#peek'); const content = document.querySelector('#peek-content'); diff --git a/src/console/assets/themes.css b/src/console/assets/themes.css index 10af1e39..a4e26ad2 100644 --- a/src/console/assets/themes.css +++ b/src/console/assets/themes.css @@ -49,8 +49,18 @@ --head-weight: 600; --head-case: none; --radius: 4px; - --tag-bg: transparent; - --tag-text: var(--text); + --tag-urgent-bg: transparent; + --tag-urgent-text: var(--urgent-text); + --tag-look-bg: transparent; + --tag-look-text: var(--text); + --tag-working-bg: transparent; + --tag-working-text: var(--text); + --tag-landing-bg: transparent; + --tag-landing-text: var(--text); + --tag-ready-bg: transparent; + --tag-ready-text: var(--text); + --tag-done-bg: transparent; + --tag-done-text: var(--text); --activity-decoration: none; --activity-speed: 2s; --panel-shadow: none; @@ -89,8 +99,18 @@ --head-weight: 600; --head-case: uppercase; --radius: 6px; - --tag-bg: transparent; - --tag-text: var(--text); + --tag-urgent-bg: transparent; + --tag-urgent-text: var(--urgent-text); + --tag-look-bg: transparent; + --tag-look-text: var(--text); + --tag-working-bg: transparent; + --tag-working-text: var(--text); + --tag-landing-bg: transparent; + --tag-landing-text: var(--text); + --tag-ready-bg: transparent; + --tag-ready-text: var(--text); + --tag-done-bg: transparent; + --tag-done-text: var(--text); --activity-decoration: none; --activity-speed: 2s; --panel-shadow: none; @@ -129,8 +149,18 @@ --head-weight: 600; --head-case: none; --radius: 0px; - --tag-bg: var(--state-ink); - --tag-text: var(--state-on); + --tag-urgent-bg: var(--urgent); + --tag-urgent-text: var(--on-urgent); + --tag-look-bg: var(--look); + --tag-look-text: var(--on-look); + --tag-working-bg: var(--working); + --tag-working-text: var(--on-working); + --tag-landing-bg: var(--landing); + --tag-landing-text: var(--on-landing); + --tag-ready-bg: var(--ready); + --tag-ready-text: var(--on-ready); + --tag-done-bg: var(--done); + --tag-done-text: var(--on-done); --activity-decoration: none; --activity-speed: 2s; --panel-shadow: none; @@ -169,8 +199,18 @@ --head-weight: 700; --head-case: none; --radius: 4px; - --tag-bg: var(--state-ink); - --tag-text: var(--state-on); + --tag-urgent-bg: var(--urgent); + --tag-urgent-text: var(--on-urgent); + --tag-look-bg: var(--look); + --tag-look-text: var(--on-look); + --tag-working-bg: var(--working); + --tag-working-text: var(--on-working); + --tag-landing-bg: var(--landing); + --tag-landing-text: var(--on-landing); + --tag-ready-bg: var(--ready); + --tag-ready-text: var(--on-ready); + --tag-done-bg: var(--done); + --tag-done-text: var(--on-done); --activity-decoration: none; --activity-speed: 2s; --panel-shadow: none; @@ -209,8 +249,18 @@ --head-weight: 400; --head-case: none; --radius: 8px; - --tag-bg: var(--state-ink); - --tag-text: var(--state-on); + --tag-urgent-bg: var(--urgent); + --tag-urgent-text: var(--on-urgent); + --tag-look-bg: var(--look); + --tag-look-text: var(--on-look); + --tag-working-bg: var(--working); + --tag-working-text: var(--on-working); + --tag-landing-bg: var(--landing); + --tag-landing-text: var(--on-landing); + --tag-ready-bg: var(--ready); + --tag-ready-text: var(--on-ready); + --tag-done-bg: var(--done); + --tag-done-text: var(--on-done); --activity-decoration: repeating-linear-gradient(90deg, var(--working) 0 6px, transparent 6px 12px); --activity-speed: 5s; --activity-motion: activity-drift var(--activity-speed) linear infinite; @@ -250,8 +300,18 @@ --head-weight: 700; --head-case: uppercase; --radius: 2px; - --tag-bg: var(--state-ink); - --tag-text: var(--state-on); + --tag-urgent-bg: var(--urgent); + --tag-urgent-text: var(--on-urgent); + --tag-look-bg: var(--look); + --tag-look-text: var(--on-look); + --tag-working-bg: var(--working); + --tag-working-text: var(--on-working); + --tag-landing-bg: var(--landing); + --tag-landing-text: var(--on-landing); + --tag-ready-bg: var(--ready); + --tag-ready-text: var(--on-ready); + --tag-done-bg: var(--done); + --tag-done-text: var(--on-done); --activity-decoration: repeating-linear-gradient(90deg, var(--working) 0 6px, transparent 6px 12px); --activity-speed: 2s; --panel-shadow: inset 0 1px #ffffff33, inset 0 -1px #00000033; diff --git a/src/console/time.html b/src/console/time.html index f354d7d4..8c6e0d1f 100644 --- a/src/console/time.html +++ b/src/console/time.html @@ -6,6 +6,7 @@ {{ title }} · {{ hostname }} · thirdshift + @@ -13,7 +14,7 @@ {% if !consoles.is_empty() %}{% endif %} {% include "console/nav.html" %} -
        +

        {{ title }}

        thirdshift status --all --json
        {% if title == "Lanes" %}
        @@ -32,7 +33,7 @@

        {{ run.subject }} · {{ r {% for stage in run.stages %}{{ stage.name }}{% endfor %} {% if run.stages.is_empty() %}

        No stage times retained.

        {% endif %} -
          {% for stage in run.stages %}
        1. {{ stage.name }}: {{ stage.text }}
        2. {% endfor %}
        +
          {% for stage in run.stages %}
        1. {{ stage.name }}: {{ stage.text }}
        2. {% endfor %}
        {% endfor %}

        @@ -44,7 +45,7 @@

        {{ run.subject }} · {{ r {% for run in grid.runs %}{% endfor %} - {% for row in grid.rows %}{% for cell in row.cells %}{% endfor %}{% endfor %} + {% for row in grid.rows %}{% for cell in row.cells %}{% endfor %}{% endfor %}
        {{ grid.repository }}
        Stage
        Usual range
        {{ run.subject }}
        {{ run.state }}
        {{ run.title }}
        {{ row.name }}
        Usual range: {{ row.usual }}
        {{ grid.runs[loop.index0].subject }}: {{ cell }}
        {{ row.name }}
        Usual range: {{ row.usual }}
        {{ grid.runs[loop.index0].subject }}: {{ cell.text }}
        {% if grid.rows.is_empty() %}

        No stage times retained.

        {% endif %} {% endfor %} diff --git a/src/console/waterfall.html b/src/console/waterfall.html index c08d8cb7..8977c15d 100644 --- a/src/console/waterfall.html +++ b/src/console/waterfall.html @@ -6,6 +6,7 @@ Waterfall · {{ hostname }} · thirdshift + @@ -13,7 +14,7 @@ {% if !consoles.is_empty() %}{% endif %} {% include "console/nav.html" %} -
        +

        Waterfall

        thirdshift show <command> --json · thirdshift logs <command>
        {% if view.runs.is_empty() %}

        No Commands yet.

        {% else %} diff --git a/src/logs/status/time.rs b/src/logs/status/time.rs index 297bbb5d..c719b188 100644 --- a/src/logs/status/time.rs +++ b/src/logs/status/time.rs @@ -32,6 +32,7 @@ pub(crate) struct Run { #[derive(Clone)] pub(crate) struct Stage { pub name: String, + pub running: bool, pub text: String, pub seconds: String, pub usual: String, @@ -48,7 +49,12 @@ pub(crate) struct Grid { pub(crate) struct GridRow { pub name: String, pub usual: String, - pub cells: Vec, + pub cells: Vec, +} + +pub(crate) struct Cell { + pub text: String, + pub running: bool, } fn timestamp(value: &str) -> Option { @@ -100,6 +106,7 @@ fn run(command: &Command, now: DateTime, cutoff: i64) -> Run { }); Stage { name: stage.name.clone(), + running: command.state == "live" && index + 1 == record.stages.len(), text: format!("{state} · {duration}"), seconds: seconds .map(|seconds| seconds.to_string()) @@ -237,18 +244,25 @@ pub(crate) fn load(config: &UserConfig, hours: f64) -> Result { cells: batch .iter() .map(|run| { - let times: Vec<_> = run + let stages: Vec<_> = run .stages .iter() .filter(|stage| &stage.name == name) - .map(|stage| stage.text.as_str()) .collect(); - if !run.stage_metadata { + let text = if !run.stage_metadata { "Unknown · no stage times retained".into() - } else if times.is_empty() { + } else if stages.is_empty() { "Not reached · —".into() } else { - times.join("; ") + stages + .iter() + .map(|stage| stage.text.as_str()) + .collect::>() + .join("; ") + }; + Cell { + text, + running: stages.iter().any(|stage| stage.running), } }) .collect(), From 71a07b2d2b7f11cc204e70514a9b1f25a149b34f Mon Sep 17 00:00:00 2001 From: Jacob Stephens Date: Tue, 20 Oct 2026 07:00:15 +0000 Subject: [PATCH 3/4] Trim trailing blank line in Theme regression tests --- console/tests/themes-regressions.test.cjs | 1 - 1 file changed, 1 deletion(-) diff --git a/console/tests/themes-regressions.test.cjs b/console/tests/themes-regressions.test.cjs index c53f2ed8..c89468ba 100644 --- a/console/tests/themes-regressions.test.cjs +++ b/console/tests/themes-regressions.test.cjs @@ -80,4 +80,3 @@ async function reproduce(mode) { test('time-page motion stops after the last Command ends', { skip: process.platform !== 'linux' }, () => reproduce('motion')); test('served solid tags use their Theme fill and black or white text', { skip: process.platform !== 'linux' }, () => reproduce('tags')); - From c7062744d23db34ffc3847d3803d5c889187884a Mon Sep 17 00:00:00 2001 From: Jacob Stephens Date: Tue, 20 Oct 2026 07:05:11 +0000 Subject: [PATCH 4/4] Keep the complete Setup fixture current with Console look defaults --- src/setup.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/setup.rs b/src/setup.rs index 6099e6d0..780fe7c6 100644 --- a/src/setup.rs +++ b/src/setup.rs @@ -1054,6 +1054,7 @@ port = 8711 allowed_emails = [] other_consoles = [] theme = \"focus-auto\" +hidden_sections = [] [activity] quiet_skips = true