From 938a791de6575da2a1f4238bac8f52c6000b9e93 Mon Sep 17 00:00:00 2001 From: rishabhraj36 Date: Mon, 10 Aug 2026 14:56:50 +0530 Subject: [PATCH 01/23] benchmakrs added --- .gitignore | 10 + benchmarks/README.md | 220 ++ benchmarks/datasets/BU_Bench_V1.enc | 1 + benchmarks/datasets/Stealth_Bench_V1.enc | 1 + benchmarks/datasets/Stealth_Webcmd.json | 184 + benchmarks/package-lock.json | 3244 +++++++++++++++++ benchmarks/package.json | 13 + benchmarks/pyproject.toml | 17 + benchmarks/references/dataset-provenance.md | 12 + benchmarks/references/judge-contract.md | 83 + benchmarks/scripts/agent_browser_runtime.py | 82 + benchmarks/scripts/axi_runtime.py | 239 ++ benchmarks/scripts/dev_browser_runtime.py | 174 + benchmarks/scripts/judge.py | 99 + benchmarks/scripts/libretto_mcp.mjs | 81 + benchmarks/scripts/libretto_runtime.py | 35 + benchmarks/scripts/pi_controller.mjs | 165 + benchmarks/scripts/run_controller.py | 1163 ++++++ benchmarks/scripts/run_eval.py | 464 +++ benchmarks/tests/libretto_mcp.test.mjs | 24 + benchmarks/tests/pi_controller.test.mjs | 80 + .../tests/test_agent_browser_runtime.py | 77 + benchmarks/tests/test_axi_runtime.py | 74 + benchmarks/tests/test_controller.py | 2098 +++++++++++ benchmarks/tests/test_datasets.py | 75 + benchmarks/tests/test_dev_browser_runtime.py | 126 + benchmarks/tests/test_judge.py | 229 ++ benchmarks/tests/test_libretto_runtime.py | 62 + benchmarks/tests/test_run_eval.py | 898 +++++ benchmarks/uv.lock | 817 +++++ package.json | 1 + 31 files changed, 10848 insertions(+) create mode 100644 benchmarks/README.md create mode 100644 benchmarks/datasets/BU_Bench_V1.enc create mode 100644 benchmarks/datasets/Stealth_Bench_V1.enc create mode 100644 benchmarks/datasets/Stealth_Webcmd.json create mode 100644 benchmarks/package-lock.json create mode 100644 benchmarks/package.json create mode 100644 benchmarks/pyproject.toml create mode 100644 benchmarks/references/dataset-provenance.md create mode 100644 benchmarks/references/judge-contract.md create mode 100644 benchmarks/scripts/agent_browser_runtime.py create mode 100644 benchmarks/scripts/axi_runtime.py create mode 100644 benchmarks/scripts/dev_browser_runtime.py create mode 100644 benchmarks/scripts/judge.py create mode 100644 benchmarks/scripts/libretto_mcp.mjs create mode 100644 benchmarks/scripts/libretto_runtime.py create mode 100644 benchmarks/scripts/pi_controller.mjs create mode 100644 benchmarks/scripts/run_controller.py create mode 100644 benchmarks/scripts/run_eval.py create mode 100644 benchmarks/tests/libretto_mcp.test.mjs create mode 100644 benchmarks/tests/pi_controller.test.mjs create mode 100644 benchmarks/tests/test_agent_browser_runtime.py create mode 100644 benchmarks/tests/test_axi_runtime.py create mode 100644 benchmarks/tests/test_controller.py create mode 100644 benchmarks/tests/test_datasets.py create mode 100644 benchmarks/tests/test_dev_browser_runtime.py create mode 100644 benchmarks/tests/test_judge.py create mode 100644 benchmarks/tests/test_libretto_runtime.py create mode 100644 benchmarks/tests/test_run_eval.py create mode 100644 benchmarks/uv.lock diff --git a/.gitignore b/.gitignore index 3263178e..2145d335 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,13 @@ sitemaps/ # Database files *.db autoresearch-results.tsv + +# webcmd benchmarks (dataset comparison harness) +benchmarks/results/ +benchmarks/.venv/ +benchmarks/node_modules/ +benchmarks/**/__pycache__/ +benchmarks/.pytest_cache/ +benchmarks/pytest-cache-files-* +benchmarks/datasets/*.json +!benchmarks/datasets/Stealth_Webcmd.json diff --git a/benchmarks/README.md b/benchmarks/README.md new file mode 100644 index 00000000..eab69d0f --- /dev/null +++ b/benchmarks/README.md @@ -0,0 +1,220 @@ +# Browser Agent Benchmark Comparison + +5 agents · 99 tasks each · 5 categories · accuracy, speed & token efficiency + +## Summary table + +| Agent | Accuracy | Avg time/task | Total time | Total tokens | Tokens/correct | Steps | Tool calls | +|---|---:|---:|---:|---:|---:|---:|---:| +| **dev-browser** | **75.8%** | 162.1s | 267 min | **4.49M** | **59.8K** | 1,710 | 1,504 | +| **libretto** | 73.7% | 141.9s | 234 min | 6.10M | 83.6K | **1,452** | **1,249** | +| **webcmd** | 70.7% | 188.8s | 312 min | 7.11M | 101.6K | 2,936 | 2,709 | +| **agent-browser** | 63.6% | 151.9s | 251 min | 6.39M | 101.4K | 2,815 | 2,614 | +| **chrome-devtools-axi** | 62.6% | **136.6s** | **225 min** | 6.10M | 95.3K | 2,317 | 2,116 | + +**Best in class:** accuracy → dev-browser · speed → chrome-devtools-axi · tokens → dev-browser · efficiency → dev-browser · fewest steps → libretto + +## Overall accuracy (% of 99 passed) + +``` +dev-browser ███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░ 75.8% +libretto █████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░ 73.7% +webcmd ██████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░ 70.7% +agent-browser █████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░ 63.6% +chrome-devtools-axi ████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 62.6% +``` + +## Avg time per task (seconds — lower is better) + +``` +chrome-devtools-axi ██████████████████████████████████████████████░░░░░░░░░░ 136.6s ← fastest +libretto ████████████████████████████████████████████████░░░░░░░░ 141.9s +agent-browser ███████████████████████████████████████████████████░░░░░ 151.9s +dev-browser ██████████████████████████████████████████████████████░░ 162.1s +webcmd ████████████████████████████████████████████████████████████████ 188.8s +``` + +## Total tokens (millions — lower is better) + +``` +dev-browser ████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░ 4.49M ← leanest +chrome-devtools-axi ██████████████████████████████████████████████████████░░░░░░░░░░ 6.10M +libretto ██████████████████████████████████████████████████████░░░░░░░░░░ 6.10M +agent-browser █████████████████████████████████████████████████████████░░░░░░ 6.39M +webcmd ████████████████████████████████████████████████████████████████ 7.11M +``` + +## Tokens per correct answer (lower = more efficient) + +``` +dev-browser █████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 59.8K ← best +libretto ████████████████████████████████████████████████████░░░░░░░░░░░░ 83.6K +chrome-devtools-axi ████████████████████████████████████████████████████████████░░░░ 95.3K +agent-browser ███████████████████████████████████████████████████████████████░ 101.4K +webcmd ████████████████████████████████████████████████████████████████ 101.6K +``` + +## Accuracy by category (% pass rate) + +| Category | webcmd | chrome-devtools-axi | agent-browser | dev-browser | libretto | +|---|---:|---:|---:|---:|---:| +| BrowseComp | 75% | 80% | 75% | **90%** | 80% | +| GAIA | 55% | 35% | **65%** | 60% | 40% | +| InteractionTests | **100%** | 84.2% | 84.2% | 89.5% | **100%** | +| OM2W2 | 65% | 60% | 45% | **80%** | 70% | +| WebBenchREAD | 60% | 55% | 50% | 60% | **80%** | + +## Steps & tool calls (total actions) + +| Agent | Steps | Tool calls | +|---|---:|---:| +| libretto | 1,452 | 1,249 | +| dev-browser | 1,710 | 1,504 | +| chrome-devtools-axi | 2,317 | 2,116 | +| agent-browser | 2,815 | 2,614 | +| webcmd | 2,936 | 2,709 | + +--- + +*All five agents completed 99 tasks. Time and token totals are cumulative across the run. Avg time = total time ÷ 99. Tokens/correct = total tokens ÷ tasks passed.* + +--- + + +# Browser Bench Eval + +Run a controlled, sequential browser-tool benchmark. Keep task data and local evidence private. + +## Workflow + +1. Read `references/methodology.md` before configuring a run. +2. Confirm `uv`, the selected controller CLI, selected browser tool, and `GOOGLE_API_KEY` are available. AXI, agent-browser, and dev-browser runs also require CloakBrowser. +3. Ask the user to choose a controller, model, benchmark, and task selection if any is missing. +4. Start with one task unless the user explicitly requests a larger or full run. +5. Run `scripts/run_eval.py` with the explicit choices. +6. Report selected task count, overall accuracy, category accuracy, terminal statuses, controller time, steps, tool calls, token usage, and the ignored local result path. +7. Compare runs only when the manifest fields listed in `references/result-schema.md` match. + +## Commands + +```bash +uv run python benchmarks/scripts/run_eval.py \ + --controller codex \ + --model gpt-5 \ + --benchmark BU_Bench_V1 \ + --tasks 1 \ + --tools webcmd +``` + +Pi uses the pinned SDK sidecar from the repository's Node lockfile: + +```bash +npm ci --ignore-scripts +webcmd skills add --provider codex --scope user + +uv run python benchmarks/scripts/run_eval.py \ + --controller pi \ + --model openai/gpt-5.6-sol \ + --reasoning-effort low \ + --benchmark BU_Bench_V1 \ + --tasks 1 \ + --tools webcmd +``` + +For AXI with one dedicated CloakBrowser process and profile per task: + +```bash +uv run python benchmarks/scripts/run_eval.py \ + --controller codex \ + --model gpt-5.6-sol \ + --reasoning-effort high \ + --benchmark BU_Bench_V1 \ + --tasks 1 \ + --tools chrome-devtools-axi +``` + +For agent-browser with one dedicated CloakBrowser process and profile per task: + +```bash +uv run python benchmarks/scripts/run_eval.py \ + --controller codex \ + --model gpt-5.6-sol \ + --reasoning-effort high \ + --benchmark BU_Bench_V1 \ + --tasks 1 \ + --tools agent-browser +``` + +For dev-browser with one dedicated CloakBrowser process and profile per task: + +```bash +npm install -g dev-browser +dev-browser install +dev-browser install-skill --codex + +uv run python benchmarks/scripts/run_eval.py \ + --controller codex \ + --model gpt-5.6-sol \ + --benchmark BU_Bench_V1 \ + --tasks all \ + --tools dev-browser +``` + +`dev-browser install` is required because it installs the daemon's Playwright +and QuickJS dependencies. It may also download dev-browser's Chromium, but the +benchmark does not use that browser: the task-private shim always connects +dev-browser to the task's dedicated CloakBrowser CDP endpoint. + +For Libretto Browser Tools with Codex and one dedicated CloakBrowser per task: + +```bash +npm ci + +uv run python benchmarks/scripts/run_eval.py \ + --controller codex \ + --model gpt-5.6-sol \ + --reasoning-effort low \ + --benchmark BU_Bench_V1 \ + --task-indices 0,1 \ + --tools libretto +``` + +Libretto is currently Codex-only. The harness injects its pinned stdio MCP +server per attempt and exposes `browser_open`, `browser_exec`, +`browser_snapshot`, `browser_status`, and `browser_close`. `browser_connect` +is disabled so the agent cannot leave the task's dedicated CloakBrowser. + +Use `--stealth-view official` only with `Stealth_Bench_V1`. Never add a parallel flag or publish `results/`. + +Webcmd browser attempts use only `webcmd browser tabs` → optional +`webcmd browser bind --page PAGE` → optional +`webcmd browser snapshot` → one or more +`webcmd browser run --stdin <<'JS' ... JS` calls → +`webcmd browser close`. +Removed browser primitives (`open`, `state`, +`click`, `type`, `screenshot`, `wait`, `eval`, `observe`, and `tab`) are not +allowed. Do not run `webcmd browser --help`; the allowed surface is complete. +Run programs must use one quoted heredoc; never invoke `run --stdin` with an +empty stdin body. Avoid shell-fragile JavaScript such as +`$`, template literals, regex end anchors, and mixed-quote one-liners. The global `page` is already +available; do not call `browser.currentPage()` or `page.snapshotForAI()`. `run` +returns a snapshot diff by default. Only positive `--timeout` and `--max-output` +values, `--snapshot-mode act|tree`, and the boolean `--no-snapshot-diff` flag are +accepted: + +```bash +webcmd browser work run --stdin --snapshot-mode act <<'JS' +return await page.title() +JS +``` + +The separate `snapshot` command accepts `--snapshot-mode act|tree|read`. + +BU Bench loads `datasets/BU_Bench_V1.json`. To skip a task without shifting its raw index, set its optional field to `"enabled": false`; leave all 100 entries in their original order. + +## References + +- Read `references/methodology.md` for fairness, evidence, scoring, and limitations. +- Read `references/judge-contract.md` when auditing Gemini decisions. +- Read `references/result-schema.md` when consuming or comparing artifacts. +- Read `references/dataset-provenance.md` before copying, updating, or publishing datasets. diff --git a/benchmarks/datasets/BU_Bench_V1.enc b/benchmarks/datasets/BU_Bench_V1.enc new file mode 100644 index 00000000..e7c93af7 --- /dev/null +++ b/benchmarks/datasets/BU_Bench_V1.enc @@ -0,0 +1 @@ +Z0FBQUFBQnBkLWIwSF9RRE81NUI0LW15NnQ0bmIzR1JTOEYtUG42Q2o1ZW5DSUdDN0dFNWt5UWgtWGVhV04zUUsxeFhENlZCbEdOc3JZVnluRng5b1ZWaUVjNGt2c2EwSTZiTUdkcmUyaVk3YnJmM1BzYTFkT2VEMjBnMUhUME5iQnVoaXdUcVF6cGc1NGZ1b0FuVXdYTjc1WEtDV0ptVUlKZEtJOVd2VHFyTTBmOWxvTVU0cVZTeEJTbVNfX0xHSWJwWDYxRkY5TVppV3dJRmctbndVdFFpMUpVelJmcG1tbmtpRWl4MXl1cE1qQngxeGpaTjJ4bVZkUXI0UVlCcVJJX3RhM0VIRC1iaUdBREh4cWNuSnRzYTgtdUFObExRUWdrOGVpWFEtRzVYb1l2WjlqUzVTbWl1UkpkS0czcmlRV0lLZ0dGX05Zd3gxbEpYb0RyaWlqdXgtZC1nempETDNtZWpqVkZCMDhXaHdNSGRxQ292SERGTWtuaHJlSkNCTEJ5cEtMRzBFY01WWUd3aVVIeTVSaXdjeVFkbmxiaG5wald0MHNJTjh2UTNRR3puX1RadEhfTEJ5UndTdE9tV1hXU1pGNFE4V0ZHZmJRZU9wUGZ4czR2Ymt0cTRpRFNVdnE1U2xIZDdJWDhwdTVKZkVPNXE5Qzd5eW9HNGxfVklGS3lZelRkS3BpR3NERzBseWJHbU56RF9remd1RTRZZHpqZXdSM3Jwc3NaU0RMYjAzWFYzRTNiMTZhd0RGdE5hdWtVaV9TTDBJalpIN2U4cGtLeVBMTXpGdG90cnJ4cU1FZW1RTlRLZXJMbktleWxwa1ZjaUxEdWtnM3hiNEZ3OEg1NGdlZzQ5STVHVl9NVEpGQkNYLV82NVhnbFFTR19LVktZbUdMZ1g3WTd2ZjljeUE1NGZZLXRTVVRGWURTWVhqY1BoYnEzQ0JOR2s1ODNnY05VZWJoYmVDaTVsUnQ2RW5TLWRBZ2psLUhwSEtYM3hTZTBnMHBDYjRPZ0doWEhXN2YyMnpHbmZDRVF0eUZzZVhIdThHeHlnOVZvblVhSnBOVXpaU1F3czlnYnJXMXhwRk9CbHN3OW5KY3VTSDlVQlVDajN6U3lqN2VsXy13dHVqTE8yUENyWDdELUpGbGU3emxGY21TMUhST3VpLVhPUnEyWVMyMjNyRkFKbXFlVjBPT0lGZXhsbDlUb1FIZ1M0RUk4TWw1TEx1SGdpZ2VrVHkzbmlRQ0lVbVM4Mm5PX0xzV2J2WkhtWmFPWDI4MFlBTnVHeGYzOEtLeXZmRTlhVmk2b1JUald3b1RyaFByUGI0c3J6UjFlNUFDNWgxNWw5Y3dnXzhQUkJmUW1ubWJzNFcxT0ozTmF5TUJRb2VGazRVMjV4MjFXR2VtTzhsbmUyT3RPYjVEc1MxVEhpMXEybUxWR0ZOZURTMXdxbGdIcko1TTRXRWdnZlJBWFpjbXlsUGVXZ2oybE95U0Ftbnd5UTJMR0gyX05uZHN2MkFMeUJtRkhLeThxaFRpNlUxOHIwTXZ5eVRfalhQMFJnWkJmN0hFOWIxcmVEd3Q3bFlIUGlGSnNlWGUyTEZyRXQ2aXA2aUlMMm8yMkRHYnhORDdOUFEzdW9nV1ZVZi1NNnJ2OUxSMHdqWmR6aEdsQi1UZ3FsZVJMS2R4VlNCcnA4UVFBcTNXckVONWg0MzdfREQ3SUhLaTVIc083MjM0b2ZwWWZjRVJaS3Z5MTY5cjR3VjY3YnhsU1lhRjFhMXg2TV9NQzRPNDZqYnhqNTBFWjRaWElQVlY3WC1lVWYzSUp2SjhuaWt2SmJUNE5UOXE5dkhZMDE0UnhBSG1vMmV2MVQ1X0dZVnZ0dk5HeUhPeHdXTkwzZS1tNUExdG9HTXZRMEw4TW1aY1AwMzctWmF6eEZiOGxwTUN1WmpLajY3ampKREljbVA3TmVMS0FFcldWWFRGQ3ZrbGJVSWsyN3VuSW1VWTVucURjSkRaZ2QwZmNudlVnOU5yRkdRR1ZXLTRBYU5WcUVfazRnQ1JBOHBvSVVzZ0pRMm1DVGdzLWFKSmgzd0JMVWd5X1hrNEtZVXlRSWgyWFFENWltMHMtMXl0elpQNV9wa3RSUnEwR1FmRFA5X2FlWXNQRjRJYjFrejdPTkRxVURxOW9oQkp3YzRndTZVVXFFMHZZMVpDZ1c5XzdNZHpEendQTWFKRVBJLTJCcjZoc1ZyY0ZTdnZBc1FCMGZrdC1fOC1yM09RN1Bkc3NpbWZvWkVLelcySXY3UGJxcEl3SXp2S2Vka1RMZUo5WHFrNF9EX1M1U3picGF4MDZuc1FCSk1xU19oZUdVQzFESG9GSXVjam93MlR3SkZPbGdQZlZVSWVqR3U3QmFLYXhDUlBkWGFHWl9VX1NxN3lJN2FlbWttbWh1RW9HdnQtVTEzTFdqaC03aHpIQmtnTEQwV25YbU9lY0JqYnc1UTVIdkRqSl9MSUpPdGZad3RzM2RnRG42Z2xGcW5vWThlSDJ3Y2EtTUhrLWhONTBRVTZIenBBNWVwV2VzM3VpUE83NndlTFBVT2xlbXNkaGFuRUxIc1pXM2dIMll1YlV1NDQ1MmVYMHlLQVVhXzRFcHRnRXJwNDliSFZ0aGNxakhRT1k0TDU3YXVMRDV0WVVkT0xzbmtDTzJqQnBrdTlZUjRsUVZmbVVOajhMVkYwSlowTkJpWWJZdXotQThDZThlTzl2MmFuamV1aFJQZXJRemxTWW16WlBzUkV5aXVCSTFCUUhEX0pfZ0hka0dEZlVudGpCRHpCR0NOVFFqcEtwa2RMc3hua1h4b0w2MkNRenI0SUd3aGZDVlpqN3U0NzZMb1pUV0k5b2Joc0YwRlF1UzZGX0FLZHRNOEl4UHRNQ1puYXVsRWZRZjNoNEtzUWo2TE05RVBBOE9jY0o2ejdiaXRIYTVBUnNwbjlzUEo0VHhMMFd5WXFRaDlfWkw3VF93cWUyLVBpZGNqbWV5SzBJSmdpTmxFZHhRRHpfVVRyZGw4bW5CZGliVFUyUnZCcG44dGxrRTd3MDVIWFBxNzdOUXVOOEdnVkd4N29aX1dIY2hBOHlWTG14RkxwREw3anpVdmo5VmNiTThGVDJmOFlwYl82TjZiS3BtdVhrZ3E3eG1rLUE3enMtQUhPbFRkdnIwVGQ5V0cxV2U1R25nMHF0bGVQRXBFT3pRRHAtakJXSURKNXo5eThld21GZWRhVDM3bnkwUDNmajJ5aDJ1TzQteFpnVVdSc29PbkpOMjBaaElBMGxiWGxlQjFrcTA3XzBXRmpwMUREQVlsczRtRWV4aWZ1TXRhRVBXNWsxUlh6S1ZQd1g3b2l4eEtlWUJSdXQzazZiN2kydTliVFprc0s2UFhySG1ZLU42NlJqTlQ1VldhS0lCVVRRTklnVjJyejZXVUFQMjktQU9hNGRZVUVxVkZwZjRhT0l2ckRPNGRtbWhnajBUSUM1YzRsS3lxdkU1dWVFRm5kOWlHd2ctRmZoSzZhODhTYW9FYTB6bDVCNkxObkFMQXBNdzJlNmpZMFFBTUVuS1ZObW1XLXBjelBSMndJR2JTc3Z4Y1JwbTBlbTJaR0M0SWFzdnNDY2hqWWVMbllINld1QWRoMXg3ZzBIcHNUeGhyQWktWDBhSDVianJVYU9BbEI0UXdHckdsTVY1cjRzXzlNampSamJ3TkprT3JES18wUmZwMTFiaDloMk04eGgzdy0zU21rOVVPcE14VlVVdV9fNHo3NXlJRzRqQ2Fvc0QzclZVQl9PSXAxWHpZRzVmSVpGTnpEV0Z5eFIwaUFaQW9WLUI4SHJFakloeUZQWEh0dC1MUTVvZlFZek9vMG9wZ05qN250MDVLWnN1bXc1SDI0TmRBRnRGMER6UjRHYkdNS09vRjZ0ZFhDVG5abU9Kc2s1VUlQS24teXFqMl9zUlpaOGRXcTRNdlJEYXRNU3dhODBSQVMzc21KaU9yUzFQbDFhSzVoOElsbzdqWm9nY2sxY3JKaFBmdER4aHpaS3NwWVpWcVJwYjBsVEFVODJJLTkyai1wOXFSaGE5eGRhakxRTWhHb2dUS0hxYlkzX2RpUFJxNlJwTDE2QTZRZThpbDR1Ym8wcENlTVNjMzAtQ3lxZDBCeUZaWmlYRTktaXJzNnJBTkRBdWl6ckVPSVgzWktOcGdOREEyVnd2cmc2b2ltWE9rMks1X084LWc4WmU0b1VielVTQXowdzYzTmliS2JWSzhCeEZWWnFlZmx3bEJjTmVSR0Zhb1cwcUljQTFwZ19NVHJLWkx0WHd6SDE5UklrbVlKbzhvR1VmZWpGYWtXUTNUN1dfcTVpdUozMkpfVUlUc3dFY1pOTmVaLWhwVkRRTTVMNE5fS2twMW13aXBFR2hPa2oyU1gwZG82d0QxY0ZZNXdTaVM4RFRlQ1dFcHpiNlFrSWhpTmpjOUM5ejVnX0tEWkhiajJKV2lka200ek83UndsOGZyeWh4Tl8yRTF3UWYxSHBMeEtMNklkYnlkc0RHTlFEOHFSSzY0b3NheTdQMkVXYUx2bWVqWUU0c1dPQ2w1MXZTTFNqOEl4bWVYRkpIY3pQczRmLUo4eDR0V0ZJVWxJdXFXNUtwUVgwSktTUS1aZS1mUmo1a19CV2FJRmluS2tPY1pZWDdJNEJ0dGFicGZRTmtUd1RUZHZoN25iYlBrLUllLS13RGp3X1c0TFl5cU9abGFub0FRSUJCcmxqbGJZeXowWi1FakNObHdSeHlnWHpsaU1PTHptUEpacUpsalp4TnVSaC1oZUhmRURZSFY5M00wN0o1LW02TFhFZm5aOHgwem55UnZoYVdDTXNaakE0ZDJ4WHlVRUI3Z1g2UXBHaWVYN0dUTG0zNHdPc3l6eExrQkpzZE10ZVJmQjVjTC1hTTl3eXVzSjZnMEMxNEo3ZXpHYlN5Qm9WLWJmVTBtY1Z0M1Q0YjI5ZHJoZU5tWjkwOURJa2VQN3BQcGdDS2ZsUGZnTkVfN1g2c0Q4TTY3VTVUQXpTYmhBV2I5d1A5Vi1SWHZDdW81cVRYRnpXZEd5eElnNldoVVQzUTFBSVlqNjhySVE1NkIzcW8xc0NXSTlaaHFfbUk2cVByUEgtQ1FiVGhBQl9ENVBhTzN0d25VcU9jdVJKdjZ3ZlFmZDROX0RGTXJmM1BUS0lrRHJwc09qamNKcUJRcnlMQ3N3U1FhYlJUM0NxeDYtcndUSWlEdHg5Q1NleWtEcGd1Wkdhd1hUVnpYTWJDMEZzZ002UDNlejBUaFlkSFZzUHo0b0psbWdncUVmRmJYSGRfcEQwd3h2eWE2NW5DOEpPMjhGU2Rma1JrbG92R1Q0SEZpVHJTaWc2SUtJcGRHSW5mUkVfcFdOajNvbVNpUV9TOWV3VkltSGJPT2dVejRaMzN4Y1FkSFJCelc2UHhyQ0kxN2xObGZkaGVldUd5RDJNNnFkcHFnS1YwbTh1ODYzOTlFd0NkUTY1bE8taFpvYXdpYkJodmgzMjExUEdEanU3Skh1TTBRSlRhX3kzamRmXzhQQVJCb1Rrb3BFYTQyTVBDNnowT1M1ZExJaGtYWUpFOGJvQVZzZy1FaFBpb2tzTlhGY0N0NzRqSUNkS0hPc2VsOGszQmdHcUFFc3c5TThtc1dob0YwaXpVU3E0LUc5UXRTRm1neXY1aDIyd0xYTnpsc1RSUmR6eEhBTHNNRTVfZGwtekNzb3BWYW5sNExiUjBka0JqUHZWS2xtdHg5cHhIM1VLbFJQZGpqeG53U2NBQzF2ME94VElYbmtxQkpONUFzUkZiUlUyd09mcFVKemw4Nk8wa241bjlNMkRycnI1VFFEV25OQ2txV0xiRnN5WkQ1Ym9wM0tSZEY4bjdLSkhvT1FVY21qU0pEYnJSMFVweXFXM05VRHRyc0V0Rm5EU0FuZWNZeGREQjZCRkFjMGtEUmpqV29UVzV6WXFYUEJYX01QemVkMTF2LVdmMnhPQk4zQ3Y1ZWQzYlNkVjhtRVJ2dFcyckhsZWJHQTBVUEdsSzYzemhlOWJjQlYzbVNiSDRWeGVOS3Q1UWI0dUdTY1hyZUozYWMwTzFwbGt0dUI3aUFkT1plUkcxVVBtbDF2TFY1T2lodjNudWxySGhZUnl2OUQ3QkRMRFBlbUVBM0VWWGtPMlptN1cyRFdtS2ZWcXFjUjRSd2VRUThwWDVZSTdxXzd0bDlJT2kxTkxHNVlhWkNSUTNKZjRSTlBBQWpSOTZLSi0yWndiVGx4Zy02U2dPNzJNeVk1WHowODloMklzX3lXUk5yUERwQnhXU0VrM2pyVHRjVjYtdnhzdy03MFhvR0tMdFpsd1lxbU9haUwtdWxNWmo2bF9jZUVYN1VPeGFqZmhGOE1zelpGbW53T3I1MEZjbUQ2WUNNcHRucHB5NDVpQUVPZTh4Q2ZZVDVwTDItalJwRW11QVZyWm0wX0RWZTdSTkpDaUJiSzZNd0cyUld1MG5obFJGcUg5ZWdzcEdTT0ZWdzg1YS1qSmpOTWZzMVU1dWlIX0FhY1g1dlNlSHJRZmR2QTQ1V2hHVUdrN25qSFQxUlFpMDBtUzdNZ0ZHd24td1VWcDhKaW5mRmR0ZnBaNUU2dkRiSVhGdXRZT25JbVpRU0hGYmlMOHNCWkJxSVpPRVNXNllTbm5IekVZOThwek9XR0tBTlRUdXVucDBPSVU3em1KMC02RmI2aHlBUjNuYnBPYlNSb0RCWEJiY20wWDNJcDd0T0lYU3pkQWc1WDVhZmNQRzVnNmNNNE8xNmZqUlM0S2lBNnF3czdjM0NSM0xMekxlT2EwcXFqNDNjaU9JTmd4ejk1aEtMVzNTNWFZWDBFalpyWExFM3B4V2tWQUtaRWFFbFZqbHJRaU1rM3VaRXV1RXR5NXpiUmY5Y3pyRmFnMkxxXzR5MXN5MFloYjRrc216ZTBEdWhYN04xNWNENU5VODlyendPNEt5UUdJWTFmcUNhc2JTR1hrbWlXMk5fT1o2NXZTT2tQSzBWUGlUTkNSLURGdU84bWdqdWszNFI0MnA4aVpfdVZQS2ZEMVZJWmVKaXVfNVZfZnp2clNySHp4NHl0VVdsdTBXRmlmYnhrZWFacFRNYlJfSTNRLVhGZHU3ZWZaSzVlTkd4WWR1ZjdwQXdWZWJqY3oxOHVKNUVDYzRTcEVabmdUZVI1Q1FVb1JoRE4xTXlQUVlkNW9IZ0RnaHVhNFZzdEJTSl9jR01ZSVJULWNVTVdmUFZSY2dMMV9hUHFOczNtU0t4d0pzRm1QSkJNM2dsTDZGTUkwRUdLWXpseFFLdEc2V3NGVzZfTnl4NlRzMGtuUkNlX2dOUzR0ODQxS1B0aWZOWU9Ba3lzeUQzQk5oanhUQ29WQ1o5SzYxUE4yZUhTWjhYV0pNaDhtZTlpQTMxRkY2UkZUYVlaYTI2WWw2VmF0cGV2VXpsdkl5eHUtd08xRjUzRzNiUWdPeG1CNGJ2YWZnb3RJdGlkeFdWWHAtd1NUcjV4ZXMzUUV6OExXNm1DZUk4SnVOS1B2dW5TT1A2X0t3SnY4MU1JMzNBdFhXM1pjREJPdDF5UmJxaEJkenlJUFB6X3B1UnlYZjlVUTUwNXVxWkFqcmFlZG1zaXM1eF94cW5SVGROX1R1Y1pfc2V4WjdIY1hlQWN5UGxhUllCUHpWU285eXphemJhZGY1SFFqT19xVDYwNGlTTUpweVUwMWhyRm9JZlkwdVNvb0dSRml2NXNBa1hxdDc3MVRXRzJKbktIMjBfd0R2VTJwLXBtbGZndWFOV2FPME1wS1B2ajluTjVkU1BjSzBJMjJPckViYmtuNWNTSzdXODNMbWhqM2Fzb25SUWExMmF6X1h1TDFlZkVhbW1Jb3ExU1ByQ01kN2p6Wm15Z0UydXZpRnMxaHdpbHlXLVEzUDVYcGttTFFReDduR0otQUZCVUItUmkyeEhTanJrVTZzN1JnTXRRR0FtOUZVbXdIbzBWUGdKNEN4cWNRV29jRlVTSVNzWlJHR3dqUFNpc0Vxc09qbWVXOEItSVQ3b05IZHg4ZTJjOXpXb1k1enYtTk1Ud0JPVm95WnNpQTIyekNJYWVPYVdBVDBUSVNqSDF3SG9aNEt6Z3RCSEkxT2dFRy1oZXU3SWNHVGV2UURKaS1RVV80YmZKRGJyeFZPdEZHYkZ4RjJZejAwSnE5UnlRbnNla1ZGVlVXTU1VWXNpNFBpSE9wNHdNbXZqZmdBZUs1S0tmQzV0MFFuY215NTFLLVVaanZiT1FXOWtXQnNzenMwMXdJTW5PY3NGeUx1MjhzYVlXNWc5VmRGZzZGTFVYaDRhYkY1NWllZGY2d1dCcGVPV2c4YlAteTV1MzFTNVMxcEd3d0xjRFFPQ1M1WUVqOEF1dkFkU3pzTkdVQk00Rmx3WXIwdGZwY2lKcEY5eGdGUkxYblVPZENEbDNWbVVRUy1zWmNHbHZONU96bFEzSmMtSGVibFpLRVg1cm91RTg0bUxJT25kSHByS19zRFdSMFFoam5ZN0lyazl1YU1pZzllUHJNODJrN1hlbF9UM09HRVkzMU9EZm02dTd5TTZfSG1UODlkWXp1dWlIclpIcmJHLUJYZVpsb1NuNXdBWmpYV0ZLeDFtRGd0aHhlVHZTNW9OdU93MUFCS3JhVHI2WkpuUGdpS2hDbjdORmZNQlM4bzc4QWVmeVNDVVQ2M1dJbUVqaHBxTHlIUnEwVWRPbmZhNjBVWTM1dUtEenE2b1Z4bkxuUWVRYUNwbGZrUW9na3dMV0plenVpV0Vqbzh2YWhkYjdYblVCazFmWmJVUXRPMVB0ZWJDclpZSDRBVjJRMVFIdEdhYXlhUHVGczc3a2QxbWZYc3dheFhxVHVORXYxNlEycG8wcFBqNkZIVUVCSDJzWEdPaS1DUmxFQVB5QUp2VjM1ajFiSko2cXVIMllnSUs0UG92MExNWG5BamN1TGxtbm1IR094ZEtMNzVPa0ZLSlZlQVcxX2lxekxRd0pjMVZuYUg0MnIwenpnTnF4N0JhT1hkTXNKR2dOWnRHS2lLcmhRcC0zeFRMXzFFSGRoNWJoRG4yY1E1anpzSGsyam4xZmxkNWZSU19la3RsZEJibzZZX0RhMi1pSFNJLVcwczBockZJVWhiUUhGd01IeGpSUzd5RVZZc3k2NVliNjRpSjl1RFpwYXg2QnVxZEN3WFlRNXByMFhrYlVpUFc3c2N6aEpfa0N5ek9CYXFMckpJZGRRM25QSVlNeEhwZVZiVjh0S29XOFQ3OXN2SEVjcUczSV83QTM4dDNxcWQtQWNCY19LdkllSFFGc0FvdnRKX0pFT01NeDVHdFdqUndYazFUdkxvT2lUbFdUU3B0Q1ppeTdOb1p2bmNzU1BiMlJPLTF1T1JsdnVGenJjTWNFcXBiWE5tWnJaMC1tYjVmVkdzQ2pGWHNSemplZmlxQmozOUstZnNsLUdHOUl2NE5xSnV5QmhtWXFaU050bDM1ZWE1T2RncnZTcDA4MlNoV1VUdHBPRXNfVTZhXzV6cXRTbmFpRVFBb09CTlp2SE5FNnRSZVVlQUxGRkw4cHdOeVN4UmRkdm93dWliNmxCWW1QS1EzNjJxTkZwbW1TU0dtZXBXR2dOcDV5MHBWdW1wUjJIa1V1ZkM3b25YV2Jjb2tCYjVNdHh0TGxYNkNtckJpeVB2MkxubmlaV3hQd0JJSHMwQ2xudjN5dWFWNlgtMmgwbGdmWTl3Mm1WelVNTEF1VmVkdDNpbjJndnlWaEVIMmJOLTRfekFNb044eFlfT0NZTFFOM1VHVVpHSnI3cW4zMnd1WldRSXpSYmdhNTlzWDFCUTA2TllrV2ZrLUlZUXR4Zmx2MndHa1Q3MTFmMUw4S2hfM1dKamtmZWlxaXBYT2pYaEFkTzludnFuQ1RDN1diS2hzN2dpdWtyc25mSUY2dUtOeHdXVm5zRUVmN0FiS1ItNW9lNU5GUmZuWmthaU14b2E4d0pYNEF2akl4WWJCNU5XTEF2dHRLMGxPNHNKZFFqemdSQnlGcmZ3dmNOV2RkY3lrNlVJSkdtRDFFOV9QQ05ueXFTZU9rdkFUajlld3RWZGlGT3d3ekpRWmNGZU5VS0p6YjJkZklmZXNHMjVxMGc5RWZVMDdidkhIX0M1ME9zUmxnaUZGQjV3ZE5GQ0dfaEh0bGtTekZkRXBOUjlDbzQxV0M0MlBtZzMyWDdXYl9kYUhkNFRKR0NxWnVLV3FRMlJXQjhESUNWMmFMQ1VyM08zMTZVZVZwdndIcms0Z1hpNEhGRzVYWDNqT0RVbmg1azVSTi03RElvb1NRUmhOeDJ5d25fX0p0bDQzY0s1RERqN1VGbjFpdlBpVkw0VW1fdXVoajZWZ3lFc3RkVFVma2RVWkY2TExQbVgxeDYwZ3llN1RRcVRiTk0xdzdIelZBNWxVYmNVZjNsM3pBSFYxai1BaXBWem9vV2w4VWpQV1JwTWdFSkZlbDg3OXJ4WHlpMHpuOC1FakhaN09Qd1JSR194UkZDTnp4R2c4NXl0MWhaQWlmemUyN1NlZ3ROdkRpXzU4cWxpSTFOWXhqdVdjaTVBcG9hcHEtbXZFQzdKN3I0S3BvVjBFenJ6WURIdnhkQklidlVnYWtqemJRdXVSOEpnN3V0aVRhaUtQWTQxZVVKcVgxd1VLSnEtV2dnRDFFTVZfM21BbUc2dDg2SVdtMFdIWTNjd2hYY3RIOFFlZ3pVSlJtLXQyUlVzTmtVWDNkcVlGZWxHXzNGa2x4X180UmVMeTVXNTY0U2NiczloVUt6NnBuZ2RQcHFRTktoZlBjbTB0OHAxSC1JOHVZUGh5dnFlQTE3WE5KVVNMTGp6enpXMnEweGNNX0VwUWJPVGhLeUZ3cFJNSjFfM3h6Y2pTdHBZY2c3bHI4UzFuM08xYWxoZHJiNlJGeHo5aFM2ZXJyWk9TamdIS1FrYXIzQjZiNmxyVlYtOHI1SEEwV3NUOE82MC1IakRSZlNDS1FLZDEwU2Z3eHBnQkM0bHhZdnQ5Rzc3S0xBOEV6cFdJcVM3R0UzYWNYUGJYYnk2X2FnWG9YYXBYa0p6bk14QTR2bDlhczlnRlJZdzVLQjI4eXNmOVQxQjVtY0tqc3JzYlY5cDZsY0t2cGVMNS13WmVCck5zRkxsTC02UUxuMFhkQmgxSDZUalQyLVBObWNSRkJQOGtULWp2dUI5YjRoWHF5Q1lIVDNTZ21VMnZLZWlSZ0VxUGpYbDNZUG9XUi1lbzRPZFU2ZWhyclZPSzVMbTEtSDBucTVvUEJuNEVPN29rckIxcVlnbkR5UFNKYk9mTk42dTlTLTBDQ2ZxN3hGQXQyaVFRbjZpN2RWZnRJeE9jU1YyYlFVdW80dV9DZ29PZGxTWnpiQWZSbzZrLXRJS1UwbnVQTWtUdTFBaEVzcEdZcGs5SmVQbzR0R1J2cTJrdnp5dGhablZEcm9ZeFFGcnF0bjJySmg3LUlGZnNnUXBSSjBaWnJLaGxQVjgwRVFZOWJmenlydUVkSzRxMHpwZVJ4U3ZnVlF2cTRSNl9DTHl6VnZkbDMzbjR5T0lEVDBwam1NMnJUUzNiOVo1NnFsM1J0b1liZnM2V21jQWQyd3NaaG5Wc255VWRZb2hkMXByX09HMjNkQVBkZDNFd2FkZ3RIX2p6bXhfY0ZNYkM2by13S3prQ011RFN6UHNXVExMT2Q0a0dDajBjZDMtcFhBNDNoZWVTZm00SFlzTjBKWmRiR3NtTzBqa3hVTGdtWUtESkIxVzFNY25TYVZoVHRtWDVReDdhT1VRRW5UQVo0UXBDd2ZEeUJfS2hScWZNWXFXemM3RUthSFRtcTlRVGVsb3RSSDFiVnR5UTlqbjQwLWd5dEdKMVQ4bWNvRHNPbGVndE9POHJVUmthQjE3LTVvVXJYc1FHSjl6MnQtemk5TmVlRzMxRjk1S2RvNGEyaUJTUVVzSTFSUVNWZ3ozaUN4M0ZUUlNJb2NPbkc4V2pocU83Ym00QVhsOUhDd3VKeElpazNVQ3d2TGQ2UUpuQUNUS3FLeGZJSzROb0pUdlRBeG5qTF9sQXJlcTdjdDdiMl9XWmJoMmotNVktTVdxMlVya2hxZjFxS2dpWTRIb3g4TTBUVU9iNnJvTE9PbjVQQnNmWW1wZ2dwVExqWk91SVlPVWZRNVJDZV9DUVJVNVZkRWVPYmctM093UGxRTFAyalFDelJiQWpRR3J6bmEtSGRzSHFPVGtHbllMUWVzVFFTNUZMNDBCb1VSckowZXZGVkMwQ3gtY2xmUzFVbjE3YlVCWFB2Z3F3a01rZ25rbFhQdVBNWExQamJJMXN5cDBDaHFnRWxhajZjLXdkTzdPLXdtcENJY01ZN284WU9VYmd4d1BPR25yZ1NqQXl6dDVpek9taUxWdEx1MDNDQXZPcEhjalNNNDItRFlhQXhjOFJQYWpRMTVxQ25mYUpYUWtDOHlQTXU3U2xhc3ZXbUEtWk1GMnhNWUd3Z01Icnp3TDNtRlVjeHE0Y2tWLTEtZmx3bzdYbW5aU2JzSllzSDI1LW1mdTk5Qzk5ZDZ1djhkVUlDZlJtYl9BS21PZ3R1UFNTOTVkdy1iU0NoZzhkT1VwbEdQUlJBZGFra1pxWnREdTdXM09pX1pncGk0eENCdUZ0d1M0aTgyU3BNcV9SaUFFM0xJdG0taVR0RF9MQzFnZFAwWm41NWxQVGdyam9FWHV2a254ZFFiY1dQMWwxZ0R6cVgyckNCVlRidWlMZFl3bkUxaTZfY0lIbWtlazF4Umk1TGlmNm1uVnE0VV9Sdk5BMUlXMklHbTZTMEN5emYxdk5fTWhLX1E4UHFBTWpTQzYzY3h3dGQtQVVGZ002UExUbVFMelkwSjVrYXJaOWZsMUhUQ3VaMTdfdm9YQlk5N1hGWDlUbVdnYVFDeWJQN0puUWdhNDFVbGhtaVp2RUU4SXpMTktLNjNOOC0yNnVEbktZU09mOGhCblludzJBNGx5dEFhZzdybkgzQUthSU02aTUzMG9NcTdRTERpSzNyM3QyOHlGRUl2dFJZcDVrMk40UEhmaG1FWnp4RlBaYlc2YnRIMlJKQU5tMVlkNzlqRXVZWlgtM2lTZUxEd045ZGpBejFCYUV0czVyTlJ3WG9rQXFVMXkwN2lWLWg0Y09jMXZxeDRuRzRQRVNrUWt2eDVEbGd4TlNIck9FUnFpUlprdWJ2SUlVVG5kNEVpc2hfMGhXLUVCcE1sMUFRcjlhYWp2eHNsVVd3OUoyWFV4V25wTGdUbW05dl9zRmVmREtBNUV1ZmhreS15NEYwWmMxVDFJVFRSSmlPMmowSWZEbThYZUszVFJKdTI3VDBSQUxFRTBsaDRzZ3J6MXB2ZmFDX3UydzM4NDZwTVdNd2JlUlZnWFVBODVJeU5LV3AxZTBjcmhSX2VCMUtYLVVPSnp6Z0NONWRuZnJDMV9VM2haZ2RMMnpkYmhsR3pYT3Z4OTFIcjRpX1JTamJyZXEwcExzcXFPRkRqMzRvS1NOUXh0TW1TRU1tbm1LWHkyZ3VXUExNcDlUR1p4YUwzbWdTTXFpYzgtMnVNQlVGWnZSSWRCSHFXUDMtbnNRRGVUODAtQ2JSUzlJeDdraTBoWTdxQlpXQVJlSUM5dEpfWnBJYnM0MG5FWTRNc2kxRlVGQV9RZ2d1SG41Y1dDOW5weUVCSGlrMTROdnFFU01nRmNpVEtYUWR4cUE1ajViZlhta1dyMm51RWpycElra1JqOXhDOUt0QkJHd2J1cDZxaS13ZWQ3QjZ6bFZfb1k1SzZyVU14Zjl3OXJVODMxMlRvRGJEcVh3R0FScVNnTUthbWxsRzNQaWMteTIxYUhyeTlCd0hfSzZHMVZxZkI4TW8wV2RDT3BaZFMtZDdYaU1hZWJPajdVRUtQVHBiVnl1UWRqa051M20xa1AzTTNvWmVwb3QwS29FZzNQa3M1NjNoak9Qc3ZHV2o1TTRjT1E2czBTZGZjNjM1Q3NSTHF1SWNqZ3RlT1JjamZWTUg3Z3lVVDFSbEZZMlNDTlVqV3EtSnRSRmpBdXVqeEZDV0xvdVVDLW5STWQwbUtNM0dJcTdFdHVKa2YtT0Nyc2hITXlqN1prdkkwQlhrY3hyVjZoZHdlLTdwczh5MDZ5clhwLU9FSnFlMmdhLThEUzNnT0hyWmpjNDNHV3E2NExjMWJWcmlMTnJFYVItZzRrZVo2aXBCMjRqcmkwTF9ISVF3eXgzVTJGZkJYVUI0X0M3ZDYzY1g3VVN5VE1jUkFsT2lxVUQwS08tQjVnWEoxVml4aTR4SDdJeHRoanNkQ3lDRjBuWDBRSmtFSl9TbzNHMHlJUXRXT1RZX09YbDY3Ym8yTHI0MlFQWWlyM0xQRWRHUDJDSTNzdzEwOTNvRHRIVkJUNWtTaTRDd1JwQnRJZ0RvNUJKQ2hlMURyQ0QxR0hyLW5STHA3NHVMbmItV0pDMm94SjBFRUJaVWE3T3V6LXVZVnpTT0VhNVJmOXV3di1lZ1VUM1RhWHRFMUtKc0paMHNqbWN0VGlUTDY4ejVCU3RHSlNRN2NTR0RiU0hEcFNtUGJaY1NOaTN1UXJCdXMzS2RvZWtFZjk0bl9GdnNUWEV5OVJkUEtvUmZaS29hU296MHBwVjJoRm5oZERjVElEanR0UldfQ2cxdlRFaTI1NzhibXRXTlI5b05TZ053RGpMRkI3VGF2UzNpTDZzWTdSSXlCT2hSdno3NFY3aVQteGQ4dFN6UkpweVNRdUZ1cHJmNTE0WFZaM2Q1c3ZzV0tabXJQYUNqRDlycU9qTEVoRTNKU2RUdm5FRi1ZNWx1RktCYXhNQTZnemVqVjNxTGNDZWdTR0dLVkk0Q3ZRRXRIcUdMMUpHNDViUHRJVWtrLU1yaUpWdFVJSDBHZWE1X1NPcjc5aGxSVG5vUGs3UG0ycFVxeVNJaXNNTU1aQWh3Q0U5bDNDOGVZdGhPMk1haHp6TFpQR1d6LW9OT1I5a1F0djRmVjVINkY3TTA3NEc2R0RRRDh3R0Vkb2pjemxmcEpERktHUEZJMFZQSjBPd19pbHVfWU9IbnJDMTZUTkQ2VDd3RG9TMWFxR1YzblJjVGpENjhGeEVUS3UtczB5QXNWdzc5QkViQ3RrOGtHVGY1VVpPMGxQVHRBQW1CUm5lOUtvU1ZVM3M5UFFRNkZOMnV0WUhlcmQwVVBTcW8tTm0tSm1ROGZNSmEzNzE1NmdtR2Rxd28xNTQtNzZvMmdvOGZQOEQtMUtRWVVWWmkydU5VLUVjWWdFR0ZOdTJLTzR3cGJjQTZrSUlRTmFDN2haVWs0LWJtbURPdEFwMUR2ZzNOb3FHRzJESzg4NFpDNlRweGF1UXBjOXRtMExkSVJOTGhURkw0NS1wN0tDc2FWZ3J1OEk1LUZVT1NFMkZQRjFkSDZzSEFpRlUtY0RxN2tydmxUM01ZS2VyMDJwbXIyUXZoaUp0ODBHaEdxMkpzcEdMLW94NHhmSXd2b2tJXzhtLXcyNUsxdkdJQXBzcFdXNEFxOTBzaGRKUkF4bHZSaE1EemlVVzQyNmJYWTlZSURQWDRWNHpaaXJ0eElTejJLQURfc3VDcmo5MWYyRW1xWU51MFJIMjRGYXNLQVhtX0xILWlBTFZlQ0hpcks1TTdWdlhPc1oxdkJsaUlaZ3g5bk1pSWZLYlJXYjVVdElGblpLVzVnR0ZWeTlJNEVGQjUtaDlLYmx6T3NlTFZLSS1NNkxlY1lrVEJjRFduSmdpQk1WLWhVZThqNGthSTRNY3ljQjNfVHFmOXRQNkt0TWtfckNKRUdVR01nU2JxeTlNdkFtNXlZU2dRcXU5bXk5RHVmSEV6RjF4MnhMYWgxYnk1aWtqQ0VPNXBtY0RiQ21qUVA1YWVPejBxaWxWNDhfdUE3eUhvTDdNZjZsZHNSVGNVb1pXZEwyS0dDbnV3NWU3ck95SmV0NG9tTjZZbjgzN2lZRUU1Y0hsZXlvem9vU2tQMDNacDZHcDYycVBUcWtPbkpZOFZRVFVPeEZ4VHFXMC0xazBrc1k1Vkl5VWxUOXlodTVQN1dWZ0dRZ24ycHFDZFNJU1RYSUZtdnU0Vmc5Y3p2Q0ZLUGVsNVJwcS03TUFtanRfMUw0X1NBc0NhdUU1V1ZjNF9uU1NpWGVhLVExV0lnRXk3M2hvQVhjUEJJVEdUVUwtV3pOVnNYNnRWUmh3Tnp2RjhLTmNoaEItZmlUdUo5ckhFbDFGaEhpdkdVVmZHNHRTRWNWV3F3VmdXQVdUZmJpY0d3RzRDRFNkamNodG9ZOVJZRGVDUTFqWnE1RGM1NUJXeVl0RkJjSnJ4WkpVUmVmQmlpQ2Q2UENaUFM0R1pQdHNNVEpHT3ZJY3g4Z2FsTWg4a2FGM0lqV1c5eWFpM3FjOHVacTNJN2liTlpTQnh6TEhpdE9qNTdWdjA4bzRNamRnOXJ6RDB4dXU3LUxRQ2p2MEVzX19uSGxHdVhFLXY5WHJoVFpBdldianNGcTFXX25CdHR6bXBoMDBjc1QycGR4QlZaX1N6Rk1kdHBZVTN5Umo4bWlTZDNSRmZJTm9uUmhSMEF6aERfVURINjlPNHo4d3ZMQXoyel9HWjdLNHRFelc5VUllNURqalMyVnZKaE04Zjg0UmZjUWtFd3VfQm41RFlZVnRsQzR4U0pJTTFRRmJuNnNEQk9CZkNjSzI4UmppbndmeFQtcnYyMHRRTGRFTVQ5MkRaVGdvU1M5Um5nV1NYYXl5UVVZYzllREx3Y3NXcnhBUENNSVltQ08ydGRIcUZQZ05HU0M4OTdIMlVIcGJRckRwNFlkZUl5YkRuN1ZGWUhsR3F0eWdTMzBaMkZQcjRUWjR0Q3dHN1oyNGtwVUZDcHdlNldINTJIcXdSZGNYVHBvM21EMzZTRWdXbThpRlZETzVBZ0d3S3piU2pGZXlsSEZDYW5NeExBb1N0Z0FCdnF1NEowUXRlc05yeTBPNlpLaG9MV2czUk80dkF5aDFuUjctUXV1M08wT2hfdzdDLXZSUXZvTjlEYjNtS1lnVkVoSDZUVS12LUh4OTFxM2pHazd3NU9MNUxpZFA2QjI2eEUyd2tKOS1ldko1SGRJaG5XU1I5UWlxWHZsbU40c3BaWk83TDlkeFZmbjY3NjBVd3FsWVc0WVBSMXh2emhXNFhVREYyNHF2QXFveDNEMDBPUkdETXZ5NTk0WGpoNmN5VXZvM3k1TlZkamI2S1hRVjd0Ym9GQ1RnaGdTRHhMX2x5ZnYwME1UemVvVU9IcU9COFN4ZWZEYWV3R2NNaGo1WHI5WE0tMW5OUE5sdzZTRlR1bDZ5LWRXbnY5M0RCZWNQQ0J5bVV2UE9DT1loM2FkaUljM2tVNDY5b1FaTkFzSjgtcVJ4ZUZwN1hFeDhUSFZEeFh1SUw1RV95TVE4cmtyUEpHOEx4WGRHWkxKOG84NnpFcUdQNndzMVpDZEtiMDB4Mm9tQnRLbHpDU0pfbVpqQ3kwZWxQdHotZmJ3eTF4NzgweG5vbnkwUi1WRGFfeE54TWRsMS1QMDZyM2U3Tk1aSkJuT2FUck10aGtiSU9uRXd3SVZGWTJMcUV2TkhLYXVpVm9vWEdyNW5pZTdHWjVaXzYxdWJBZzAtakJvREtWd1NOOHd1Y3NqdU9lVVQ1YXc4SXpQX1JfekdNaVg4azhOZTYzWFR6ZlRyZDFxNFUtcGRsdUNBTHlPc1RsYXVNaFZEd2VfbVNSLU5FTGJGaUtTcjlaNUs1QjFWOG9UdWlIcGMwV1JaUFhNOVBUMTdUd25LU2FUa1lvRkotVmEzT3c5QWRmV21NbHZibEdRYW1jMXVfY2xwSF9xX01LR0R0RjBKaV9fYTdOUFlOREEzbEpULTA5cGxjY1FhcjhPWEQ3WFp3Qzg4NEVJRXlGTXgzbGFDUS1IbG1oaEo3ZXVVWUhPc1A2MVI5REY3bGx3RjVzWWdUOUN6amtySUpHRnJMOXBWSHhZY3laTHZJeTBzR3FuUHBvVElTSWZoSjVuYVJPdXRPbTRhUlNOay1VaHpTQWdrbW4xMU4tM1JYeFh4NDZDc2dVZ3FyZ1I4WmxEWVFOQ0JteVVYcEhGZ3B2b0NpaG5kMDBSXzJhdy14aWsyRGV3a3ZYandDamc2bFBEVWJfQlBNeHEwLTJ1TThSM0hQRFRrU2psNlE3V1ZpZmlueW03Y1VaUHI0aHZXRmRFdzBzR254M1p3VXVVUVVMbHNrejlCT2ZqekZEQ2R5M3lHVmJFVlFtZDRfRzlvamxqMGlVUG0yalN5NWQ2TFVfVDgxRUVyTFBRc0hkR0NEM3B3NnM3Yll3SkR3QlVwX3FzX2lGZlpzd2Z3bFlnR0xlRWlLa2ZRa3J1aHBBOXlmVjhETmhvZ3R0VzJjM1JQZFNOZTgtMXUwb044ZFdwa0dyNVc2ZGhWLXJjWnBEUDZIMFZ1SnBQaTVqT09oazJxVTYxakl4NVZJeVhhYWJyNmJTRmNxNHlESTJnUk0zRXh5ckM5SUJSazluSG82MGRUQV9ZMFF3LW42TVlEb1FGdEtxYTN4bi1JNllrSEJzZEJYUFRwdGVHUTlxZ3NSZFVlMzh0NWNPZDE5dTdkdjRFYWM0clV0S1lHa2lvMUNvcG5NSXAza3pnMzlwY0xJV29PYmVlY1JPUTRjVlc4MnNWeng0Zm16bVBuSWt1V1Q3bDI1SUhGanBQQzdYd0RfMlpwZnZjdHhrQnk5cWpzR2xLdDdaZFFFTUoyN3hYSzJFbF9YTWdKNEtCQ0R4OEZuRkE4dzRPZU02LXN5Q2F5cjN1amZzdWplUDVLYl81RkVWdl95TkZZcTRkNklubGxtOUstZDZyR251WjlxV281UEs4Ym14Zmt3RjNhTEtuWngtYnVEREJOTHBnQUxVWFJvNi1pcTRWWXFCekZXOGRYeE56SGNxeEJrYlp0bndfY3dsWmFtM2EwZUg0alZIYnpyX2ZZUm5VQU5FVWRKeFhGNzR3SVJEeTVMRjA0WVpnOFFZNVhDRU9ROERySDQzalI2dlBXYV9XcmgzZ2kyeDkxcEdTYVFQUC1mZWVBX29TMkJjaUg0NHdoWkVrQ0NFN3NxaFQ2Rml4RmJkM2t4cmZqN18yRmgxdjVaMy1yaG9KbFJCSkh4bTRJY1BTcHpmWTZYTm13VjhqS0k5ZGFVdWFGbjZqcy1zMno2VGVZVVVSb2s3MDRzV3VqamhHSUxtTnU4X2JhRlRmME1vN2t1R1AwcHVXaWQ3dUt1VHVORjFEQ09lQ0ljenZXcno3bE9NRzF0WkNfQTV2dXJQVjBuNzhPVXFIaU1qdV9QdWN3T0U3UlJ1bklmMWRUQ1ZQeFZrcXNucHRnZlMyUGhzU0RSZG54d2cxdnlKN3VVZ3gzUGZkaVVlRkxRNS01Ui1KekhWSG5HMVZFVl9qWWJkTGFyY00zR3E3SnJLdWdLUFhQa3piM1hCRHBUUU82aHhKT29Hc0xhdVZaSUhNSWVQUk9pdWRuWnJfc2Vhcl80a2Rla2dBdy00VXFpR2N2RUh3WEpEX2otZ0dWTUF5Rk5kNXVRczZ1RTlOUU52c3FBYnR3aWpRQmI0NjkzVzVrWkE3eFBtWGxocVFOcm9QUUFsVThqRm81WVpyU1FkT09mdnRpYmMwTm5TbnJESE45TU9xTDA0WnJfUmoyb3ZnTnllb21zSkFqS0tmUEEwNUlBS3FEdmhGNVNLNXJLVklyOGt3bHVwSnllS1c5Z1kyUS1vcURqNm45Z0ppNVJWUXRBWTViaTAzYjhkTy15VUQ2c01PQU1BVlEweFlNc0NaY3RrWXA2aUNacHgzZExCTUNTR0tWWjF6OWU3Um1hTm8tU2RHN3NFcV9fblM2cFBNbU92aGl2bnRKSGZIZ2VQMEI1VFh4ZC03dGJ4aTZGZUp3R3drR2pDeFZnaWtRVWwwZ0JrbTNHUFdaUUMzaXdfc0dsdGtXUDN6ZmJvRzQ2TERpM3kyOGZhejk4dExuUDdHSVdiZ2dYMllfdWtrcElPVW1DdWFWQXkzYVlGMkpZTGREUXlLZ2c2TVhtU1NrYWdQNHRoUHB3M29KMTZxeE1hRjFYV3BQT1FJbVJyS0N3eWtIOThleTc4a1VRUUhxdmtraThNZDBxMkI2SVBSc2lPejZRS2xRelZkSmNJc2NvRHlYWktSUnRqR1lqc25Zb1ZQdl9GYUNRVG5pcGxGV18tT1pyX2s2ODFHbHVIZGtuZHZSYjJJaVFwZnZvZHNoYkNZMFZYUHh5OGI5M0xNT1lJVGR1Qy1hMWFaQTRtQmMyMU10YVZuVHZqM2wxZ1U5UGh2ZjBIVVhDVXlGZk10UXlfNkFpVFkzaWxUVzdFWDF2X1dOY3N1NHdQTDFJOGxvV0p6ZEtoQUtqZVg4TUkyeFpSREdNYmM1bTgtY2ViYmk3dzlYQXhYWk9vaXBKSUlUVTR4X3ZBTDV0eWl3bUI0eHlqVW1NLXItQzR5X28zLUZKNVlDaHUzU3RkQVpLM2FScVoyYnpHX21kWHI1elZDdDZPdnRNVVlianlkMlRNbFpNallOcEpkNmdYa1hwc3pRU1RFY202XzUyN2Y4eGgxVHRESmh6TXhrNHI4N0oyYmV6eTM5c0s5VE43Z1k3NjBGbVpsb1lmajZRNW9KbXV3VlJPSXRsbHJoc2JMZFJLSWhLNXN4Z1Vic2l4U3BMd0p2YTZHdTk0TmJDb0NSTUtSall3LTF4NXJnc0UtOVdDbnN3QlN0aU9KYXR6cEpQV1Q5LVk1bnVQTkFTWUQ5M0hmcXJJZTFwQTdwZkNadENmcEZEUXlKWElQdGFwVlZaU2dfUmlnTUNrXzlJOE43T2VTVmlENEY1X241cmZxV2dYSlpCNy1vMEM1X3BEeTdMYm9zU0dMeThQRkZKNHpYV19pMzVCd2JubFoxeGdHTGxpWjZ2dXN0RVRSWllpS1B0UnluWFJweTZienZiSUZUdGh4YmtNRmF2QzU4c2FMdERseGJMYl9ISS1Ud2UzTm1paW8tV1hfMWsyR3UzSk5MUUlrZ0R5QTBKZlVURHRfb2ZvTTBuS2lhNGtWZWQ3Umx3UGtXbi1ScHZESkI4c0FXWVFhTVdBLUlid01yTHJpNVhtcXhZNkdqdGplN0xxd2kzWDBMSDBWY0FVdW5hWWdQVjV6WWh3clltMGpTZnVBX25QbkMzVEtST0NQX29pX0dsckw2T1NweFpFWW9SQTFzMkl0d3JYVHdpXzVOX2Q0OF9QY1ItbHpfTUdGWXFPSXJQVFA4Vk1zRk9QV2xxaDRsWnZSb25vWDNQM25fQUVlVUp5WVIxUlBjU29lSHJBa3BOTHJHRnpmMnMwdlA1Ukl1VXN6ZkRGZW5jWXVxbUd3TDVBcGx5UjFGdVpXUzdyNDN5cVBkVG02Z2pkdFhFMVg4dTNONldsLThXVlE1QVRjUFVEdjltY1VUS010MmZQcUZYWTdkOTlLTWRsQ0s4UE1JZ0txQnNKMnZGVEs5V0xQR3poTEs0SVdxckEyN0RiZTBYa21KTUlhRzdBWlRZZHpuRGg4SkU3NkswU3ZvOG9iX280Wl9pdU9jZ1RWblozNXhHNEVIMTR0ckVyRFRRVlFsSloxZkFnRWtWSS1ZOXhtczVhWWIydnNxZ3QwbjJsT24xeWl2QWg4SjdmUHcwRXo1S3B2Nm13Ql9tNE9STDFUTDk1Q3YybmQxSENVWHFvWWZ2RFZXeUF2OXJzMExXZm1haDdPMGR5MVM3b2JqVUtjTHg2SXRja0FTU3ZNenFKOHBPZW9PQW92TFg0aGh3ZmNFT0VjSlc5dl92V1BMNU1YaUVGcVNMRHdVVmJPRDc3TWZ5a1NpZ0IxWXloSVkycXVnQVEyTWlGRUVuOUg1ZnBDMXBVU3BpdWc3RUZBeXZKdS1qaWpiRmo1eTNyOFJpeTFJeF9tM0pWUll5dnEtX1lCaGdhRFhyUGRRLVUyQ1Ywa3RZQjIwTDZwYzRuaFJDbzR1akluRWIyLUFDRjgxVDR3UmMzMlNPVHRhUUdIQ2llMmNPd2twby1GREFTUUs4UHNrSjlab3luVzQ1MTI0MVQzTDFTekhaMDJaS1Rxc285RjE2eWthZmFNcnBZeVlpRjJxUnFSS1BaUExEQlVUd2hobE9iSnlqLXJuSjZPZk5GN0U1SVNJbUxYekxEVEFONnFJQzJkejRyREs5QjZNb3l2d0NhZmx0V3V2a3JYemg1bkdlZm5DajhpeExLaUptOWlqMTJfcEE0OHBUWlB4X0N1a0pMd2ZjLS0wb1BxRnlDUlkyZ09fY0NETU5SV29qZzkxdS1yU3oyZFJZRW15VTZBODFyajU4OXlvTHBiUWNjZkdrVXYwTjFtVXN3cGp6QmNjdVh5TjF4YWg3UERhN05vR1ZOYnBINFJ5VE1VZ2JzMGhDU2J0bHVhOEpxRjBUMnVHamJzZWcycVRXQzdiQW45cEc5eFNIZTREenNjQ1cxTGhpaFV3UmpQLXJvV0F0VVdQZWNlMTVjQ2I0VWV5Ym8tUlpyRFV5dWxxSXpOc1VTRjRZbzlDMnh2Um1oVDZKWlRETjRjT251TmhnY25LaXJpdjNQOFpXRVNlQmltYVB0c09acEIyWVJvZHVNYnVoOWxyZkMzdEY2VlN3eVc2ZGlIZ0lOdGUyWGRkZkFNc25CVk9XVm41TnNkQjNPNVZzalRTNVhVLVdyR21XMGlCR3M2UUlwNXZEZW5DQ0VuYXJJZk51blI2d2lFenJmZDdwTnctZzNxanlJbXlkd1RRVGFBOTg5bVAtWWduNEdFcEJXR3B6UXZfMTUxZG5tVEdSc19VRjJfTURpeEpBV202UlVaaVRPZzRUY3YyUnVBdG5tVVdIMGxCaXp2SXZJOTZDVWZQa19Za0NCUjNBTzZsejNJX1ZnNEh0WUI2ZHY1X2FUaWRPcmpHQ3JjOEZSRVR1OHZyd1Azc0dtSVU1NlFIZWR2UmtWdXpmaWdRVnJLMUF2YVM3dGhVdGxUeUNuODhLUlpaMlV0bG5LSVdweUNaUzFjamYtTFhqcGIxamczR1BybGk5bFJCLWZsUUZoRlRVSkxIb2tCaE90U0lhcG9NX3Q0M3BnLUNmVFlvcGsxeFFuT3htVExXZmxjOC1iLVlHTjhEYzA0UmoweENFTjY1Z1dHdGdtdWp2ZEVBcklFSkw5ZVFwdkxXMVFJMFl4R0FEdjJrRTNLdzJpY0p5UlNmNEgtTkNMSElXVmZMa0dOcU43SUVIN056eElDZkFNZjVGeVZEN2dxTjJuVmplS3p3Mno2Mkh3UFFWZlU1VGFxRzZYaVVUR2JrdmN2VG5VVFdyaUc2SG5WSlV1WFd3cmR6MV9uQkw2ZFBEeXVDVEVhVXJJQnJPeld0WmpRLXA1emNUZXczcm9UeExrbjY1N0R3T3JJUEJvcjQ1WnFab3ktbDRlclQ3MHZ1VEtxTExrVjBzODhFRDNBcnJHdUcycUE3Q3JJMzFIWVozcjY2SnQ4OGw3TGNhM3lUZXpUVnJRMjZOTWRmcm5hVGc0b0ZmaTBlM2ZOcWV2Nnpfbk5PNUNHOTBTNlVoR1doZW5iT1RUam1HTVhmUmVPeU1lcUZqbnc5Y2FaN2c3Skluak1FakhhaURLcEE3a1U3R3MwY01NaGxUUklGbjZVNGhiTUllNDdCaG5GVkEwVjR4SnYxVkNYQ0FFSW5wR0N6U1JqWExlOGJIbzRWWVdScGNzNThFeFF0LV9TalU2UjJkeDV5ZDFhZlNncGpYWGMycWJmVl9NeUVJTXV3Yy0zSXNqYXRvcUl3Q1hSdUJRa0xQVk1UdzRMZXU2LVB6eUtKWDJBQ0lYVHpscG4teElDU05jT1pZZGpPRlR5SGpoSVN1UWhhZll5dm9DSUFFeWtnM0V4cDlVRkpvZjNMOGxkX1IwWVd0WVoweWdJbVFRcUplTnBEdnJ1V2cyNDhvbDVoNE9fWVM1YnlrYUI3LV9DcURGRzZJTGZXTEphbFI0X3p2X3VCQ0IzeEktcXhOZXNFdUZJRmlBSE9QaUs1ZF9oNkRIM0h2SXRmUEdFOUF2c3NFS0dQQ253NGFHanhSZmlpOHpkd1pGczhVN09FWHhlWU1IZW0wZGF0Q3FSWG9pVHpnSkc0N0RSb3NWTldJOGdRMmFheVBQOFBTZXVzeVg5YXNFSURmS04xYXBCdjVES3lYTEJJSlV4OGZNZXd1aGxrUHd2cjVvNHhfWUJUVjU2LThoNkUwbTIwNkI0ZzVRQzdwLWZTbFhQaGp2WmdDNDgyLS1nSWNWdGE2aG5pbktsZng1TnM2dFVac0VmOEE0RFpWWjZKMkRLQU54RVdyajhPQzlhNnFndjg0N0R4cTU5X1BoZ2lqZjY2S19FYjVFcWJndnBMM04zRXpIcHVoTkRDS3BTSnQzRkZLR0kxRXk1OHhoV01PaHgxY0Q1eDNHN2xNbWFNV1VFdk5jdEdTRlVYRE5jMm9FREhzR3VjdEhCMGU5a25LOElpTWNaLU9WTVFQRk0tS01WSnRiT2tvaDRYS1VhTjNTMm45VWVqN1JJRzRDVGFMNG5zem9WMW5vMERFMEhZUWtxbndxZzFKUmE3bzZFS2toLWlzWlo0N0FDZlpoUy1yVXB6RmZRUURycmNvQXA2MkpaV29yMG1VSzBvdERsa0s3OWtENTJxcTJMUmlHc29Ic3FXZ2gzdldkZHRGR1B6REhzNG9jSHY0X0E3TXdkRGVTRTJQX1ptbS0yVkhxcGJwc2ZIejJvZWg0b2NfcTMyWnVKYmNXTnZvblZSYURxN1JxLWVBM2FmMko5UUEwUVJ4ZXUtT1JKQWpyYmhmN3RFYWFCVTBoa0NTcVp3aHA2akJ5Z3pkcWtudUg2SDRDc1BuYzJsVzhpRE1XRlJILU9XNDB2RFRMUTl0SVRORzBpMDRVX1NMZEEyMDRuSmxRRF9LUG5tN3dHWWpQVjNBQTY4Znl4Ukw0ajhaYlM3SkdPc20xVHI5el9wdHY0aS01aUctXzU4alkwaXdrdzFkSUZzMkVYOVZQNkR4NTRFWHVyLXBjUVdTdlJYNEdHeFZfU3J2MWVfWkdkMDYxSVJCSlpEUVVfaG9wdDBSRVdPUUVlQ1piOUZGbUkxYTBxM21tekVWTUlaSUwySGk2NXF4UDRvaW00azRHS1BJZGNXd1dpLUlvUktzem9oUXl5dTBjRGJGRk1IaFhrTjU4c2RlbGR3YXQ4R19zMzNqYWFJY0ZBajlmX2VaaG92cFVFUTg3bEdZY3hFYWtHaXhHeEVqQVV4WkowcXVjcU4zX2tScTlVaEtYMjJPamlTY2lQWVBTVlJDcnV0eHJJRUJoM3pUSnBXS3FsZEpHUVZiX0Vpek9ONHJKYW9BYjFJTW5XalFSSFk3VmNmeE56d0hrRlhtejFEQi1jN2t0TVJVOEFCczZFNVFWVGYtSGFTR1REaTFENWMySUFYSzdNZmZEdXlWUi1IelVfa3R3N3NWQmhKT0RKYTRJSzFEbnZuVFpkRjBFenY1am43Y29TWl9CM3RKRnkyLVI1MjFCRDV5amZ3UUtHSHliMktia1lFRWVFT0tyal9qd3kyeEJQLXFPU2hPQ0g1MlVMUnFhcTJKWlphWk9WcEFsZU92UXUxS3dtaUVlSGR0RlpOY21oY1ZZTmd1Xy1YSmZRSTVmN3BwcmFUTzBQX0dPRHdiY2M2TnM0SG04djZta0U3N0VfUmI1Y1kwS3BLYWhaREZDQklISEdNLVFZQUtMS3Z1X3hua1lyZE4xaS1rU0JXa0cxdF9vVXZaMlBzbWM4cGU2LTBiZDdJV2ExQkRfQjBKdmFNYlNJYXE1SGwwS0ttS1NNcUZnMUNSSkZWeFNMeERkb2RYOW9qcXpWU1hRVzdMWGxjTWxPU2ZJTFg3NGpiQUpkUFBVcTJ1SHp4M3lwdXBENDBOQTd0M3VOYm5QQWdfeXlIVkdKTlQyeEhxSzFZeWxjYlpneEtaX09qX285TmxsSXlCdGROY2tCRXVlc0VYc09UVWNZb21sSElLbVp5NmE0Ym1CU1VGUHJGTmlsYWhfR1dfcVJiRi0wclFuZ2lyNFRUaVdWWUFKV3pwNUdZVXpWQTZFMTdZY0NfZXZjdmZTMXk2TzI3UWVMb2dWbm5nN1R2a0NxTi1Vc0FORVN2ZExfblVsZWZJdDJhZlZUREozeklvdU9IR1NZa2c0TVFPNEhfeVhGTlRPOVpXcDBydDhFeldNX1Jqb24xeE85ZEdPWjdwckhLdjUxZHRuV1l2QW9HQUJvQ2dvRGpWSDc5Z1VfQ1NyWDVzY3dlOWdKMFdDUTBxSlA1XzFkQ1Rydm10SEJyVFIxeFBaaEs2b1puSHBOWTJaNTRVRjlybzRzNks5LUs5VU9WV1M1UVg1b2ZNVTN4eHV4TG5jN2VTTDNUTVl1Zm8zTzZhUEIweGlqVnlCaWVzRGZKamRNeUhXLTFaRzQ2RUQxWkt0M0VFdDhQbXFvbDIzNzlNeEZ2MEVZaERSTmVRX2pWWV83anpOc2JoMzRZN2FNSlVnTGp2UnpRVHFxYklyV0QxQTJzanl1aGlUdDRTX1ZUUU9xQU9yd1NacmhEZVY1WUw4VzFfb2pvakkzbGh3RktzRXlBMFBkRVNIOVNubHJHanlVYkJUOHRneDR1RjJESFhhQktlZE9iZEJFem9uVUpxR21rV1VJaHdPSmVDZ3Y0NnlfY2NFUXhNdTFxR2I2U1c3V1Q1dHkzNHB4c2NQbUxwWUNQLU1hb19Pd0kwcmZFRGpxTHl1WDBjU2tkdnBOQlZqNWN0LXNiNGdsSHhrM0ZiTzdPdnhTakhkczQ1c0p6NUtPNm9mdnFDNlY5d0FYUWVFTnBid3dlU1VUWmN2TERwR3RXdW01Y0NWZlgyWUtLSi1kOXJMY21BTjU3TWp5UWdFUVFOMkx6eDliMEtJbndyR2djS0puYUlGdDBNY0RaNWFSSnFtYXJ5VHJzLXBIelI5RFE4dnpNdXlsSE8zZDZsaHBDZGlzanVpS25WUExaU2I1MWdCanllUVJOenJOUnhRWlRMOHZtbjV6NkxGc3llSDBMc25yWUJvblZTX3ZRUmw5TDd1U29EVVdhLXBwVkJ3NTgzQzM5cHhrYXBHSUJ0Nk1jN2JCX3RoeEE2dGJNN0JHWUhXTDEzendWVXlDdDRYajFWdml4VTZNOE55WHN1ZFM2cDdOcDNHWmpnNW5nSXA1UGxDZjA4aW93b0NJclBxaU9wOGMxMWxkLWVHTDY4UExMaDNfUTZIclNxQnY0di1ieGs0UjJWX0lnaVh1YTkwMjhpQnZtMlN2dm1vTEh2TmsyNkNrN29mbUFldU1XeElEU0JjTEFETWFJblZQNGhFVVBrUnEwTjFodjRHaHJ6OV9PUDc3TGdvUkdoWHJOR2hYVlctN3J5MUhQRm4tZFpSa0x4ZWoxd2V3d2FqN3dodWZJTmNIMTM4TGljcDU1dDBZMjRqWldEcVg0NmN4eGZveUdzc0F0YVB0YTZMdjZGNl9XRThTbDk5QkJnblhsZXZIc0k5SlJvSVpfSHgyR2UtZk9fQ0k2WFEtS0Jfd1BtNkZVemlOYmJDaUJpMGRiMm9vNlhkZi1JLTVkbldxYWJnTzRBTU5sM0t2dXB4YXNxVW1NVEpVOHZVTmpJRjBRRkRtQk5fXzVCQWJPYkIyVUJMVmxVekpKaTdHMDdGU2tsY1BpcnRvdDFyeFJPaE5uVmFOdzROd25YNkJyMnY4MmlqUjd5c2JBMVN6ajllZnRFbVhGV2FMRFlwR0p3Z3NHY2hsU1pEZUt2UTc3NDRHRjJqLUpER1lsR29VY3pHMjZheVhJYUw3V3ctMDY4YVRZbWlaaVlnRWFfemExRW9sTDJndmRoZEhnMEI0QklGTVJEMkdnUGVNdkh1N3NROHQ4a0k4eXNtLU16TG8tZy1pQmVwNlVwTEUzOGRMR19TaHBpd05KM2VyVEVtVkY5ME5qeFJGeEhRY19RNmpFVndhRTRCQkxneU1jQUVOOHcySFlpVEp3YnpncVg2VjlyS0VOdkxfV0FuYm5MWDg4eXVwU2FFeFBCakwyV1ZmNF9USXRSSHliYVRseWdXUWRfRzVnUXk2U1lYQmt4eUVOSzI0ckFvWlM3S2FzV1l4QjYxWUExbC1RbkFYT1Azd2kydXZtS0huNTRYTmNkVzA3Z01TOEhHWFFKNDNmdld1QmhrSF9paGUzUWVnNmtscVBrZ2ZyMThTRmFhVUUtSzBhNDhxQ1BGRnU4Ty1pc2NtS1ZzOGk5aXZ4a3JPVUxueGxveVhlaC1CQi02S1ZIRDVtZEZqZW85QzJTdjRKempFTXpyU3dBTlIxUlhjeUN0YlBHYUN3N0JJOGpEOTZmSG0wWE9NSWhTS1JjeG03TzFmQm1jN1pDZ0lBeDQxd2pqYTJidlRSSE95LU82M3h6U2F6a2RnLXBTdnRIalM5a2wxWUhVYlBoY2g2SWxNdWFHNTVlMUdpc1dmM0ZFcnZ6UnBybXl6cDVMWUl6aHlGU3dWSXhFR05TSkUzTHQ2NFoyNU1taXUwZzFQZnR6Ujg4NHVQNEk2VUFrcmtCOU83Y3FHZGZrQ25JRUxyOUNhTlVXQU41Nk53NWlueHZBVWpCMWFpRjJCcmlHd09YcFR2S3JqNVNBLWpwVmpyZWtHYmJ2ZEp1cjlFc2ZwaDFmNU53RTB3MUhWYVBwajBPd1JwRWY1UkdZYlVEWmR2V2JPRU5abFZGNWVVemREcGJ5RXJhQzlObng2eUlBejJrek13aTZ3WUJnY0I2NzBQZ29hRVRXRkdnc2RIRWxPcTFjam1POXA2VU9HVFJucXcyUWZLNjc5djBsNTRGNGxyVzl5UThTNk1JMllaazgxbG9PUzdQNXdRRG5CSmlOZTdOYVFJUTV0d2J1YjViNDl4Qmp4VmFCM2RjU2RKSDlxQXFlMERsRHdyeUF5Rk9paWdNcTgxSVFPcVZwNDFYVzFXRlhudFBrUHR1bUM4ZG9QVVBpalZEVnVCbXhtVVpUXzN2T0FibVplbDdqa3FsSDl6X25JX0pMTi01N2NxTm44SGUzNXVITnBYV2YxekNrcXZYUEI4bzhKd2F3SEM3Q1VRRWlqRDJLMFY0WFhFT0NIejJaR3pySzBiU1BJM3k1aS1oNDBCYW5ZYnNVb29BRHVoQnJEZ2xNWTZXQmxUdEJ3d2I3eXlCTmVTOWlvR19Xa0RFT0xjM09WeTVtUWhfQU5tY0dmdW1ZY0RRbnB2RV9xWHhBMW9UQzBJR3dlSGd0M1lxY0ktZ2J1dDEwRGd6UGw3VUQyRDJZRUZaVUZ4eXQ0Vy1HdnNKTFJtZzNmcVlPVHZXVFk0aW13NTVLQk14cHhKNG1sWGxtVVYteU9uQ3Flb2JucWVWS2xhMS1iR2NBNE5nZnFMcEdmODRfeGc5R2xTbkl1ZENYc0VHM0Q4X283bHluTkxyVF9QOXM5UlFFZEZyYl9rbnFsdXd6bDZoaDZ0RXByMUZRNjM0VzFyOTZ4Qi15WlZvaFBrdHozaDhCeVVvRXB1aUo1cEV1NjNSWUxqaFFjRmFIUmJSVGtqVDF0allQanlkYU1tZ0FVN3BOM09UM3lKRUdwMWpKakxLN3VKYndDVUl5X0gtYUpmZHdqY0l0eVdLRGpyZEJZa2pIMHgwZlBKVlVjWnJra0I0YWdudk14OFhDd3pjQk5tcFZ1UUZhTE1taHp6eDRTcThNYUpFQ1d1V05JYXlUZmpZbnUtYnlEd0t1aWtiZExZV1FGeDhBRk9YOU9LQmNYcHN2ZjNWazF0LVJVNExzTGVvWXFFbFlZUUlfQlZNQ2Fvd01hSHBrbjhRUDJFWmNxUTY0OHJjWUVmcFhRNUowdFB6TUZfN2hQdi10c3VCZlpHQ2lwVXRNamRJa09uS1hRQmN0RHlIcHVfUHd3X3ZkTmtQNTc2OFFDbmU2aEMyaHlLSHRsSUhxeTg1Q0V5MThxbnl5dTVkcmhvVUxLVW9hcHh4X0JpRVJNeUE1d0xaQ0xJOTdNOUFEaGN0bFZIR292cVJWa254SHdSek5DbEI3MU40RW5xeGJYUFhmX2dHdnZwUTNCZzJ5VUx2LU1XUWZGNURyWi1scGJ1ZzZ1X1BIU1UyRklWMTJlallfM1V3ZGxuVG83WG5NRlhTZlpSaEY1akNxZ3BCNlVfM2FWQWtPZlJnR0VJQnJLOW5HZV92c01FNkJ3WjM1SkRhNXRYc0FjeTVFbGtwTllWeTMxNWlhOEJ2Q083OEdrZ3VucG1CU3JMUVdlZDRrVll6dWFCOXdPMlBuWk11Yi1sdTROQmhSREs5cllwUnZjUWpUX2xSZVY3RWVJeHRDMHdMTnRiLU4tb1NwUG14eG1NUzdXSnRzb2lQaFo1Mi0ycndDRURjRW5heUZoeVl4T05BbjItMm92Qkw2ZGtqeWhNaHViaDFlVjFoOExJNXpzU3ptZVp6X3hySzctR25LZG1TNU5WQ0ViSFpCbDY5LS1INFNwNVpxNGljZzk2WEIwdGlGdWJub1M1d2cwclpuUGNrM2MydDh4ZWpmbGNtZDJoTWVKNE5Ka2NJMFBxV25TLS1WTjEtdHVFYy01SzJvUGFZeEJkWXhRVkZQYVhEdXBmWG8xcmFzLVllSTdzOEN0eEx4SE80eWJhV1pvcXBscEVieTZpdGhSY0xmR2N1dWVEVjRlVEJHckZKa3RqQlRVcThwUmx2MXlfaDNkRk5CRnl2SVliRER2SDF1aHp5Z2huNlBaTzItUVMwYVpLdGhDVnFZdklHakZrWmdsNnhHZDE3b2Roa1RfWmt6bUg4ZllWanRGanRlc2EzQklIOHhDWDdXekk3OU5IQmNaRU1PaERJUVI1QTAyTy1rNWJoVkljcDlGNXBENkRHa1RUNm01S3htaEE0QWhmdHh2dThFeGEwSWpNR1AtNmRCU3kwbmxzUU5lOXpDaUZfMlNRYW1QWm9SNFRBdFZFWkw5NkJBSVJEZXRraE50aVFhWktKNGhhUTdnLV9xWW4zbUZXWlY2ZDVGZTRFX0NiWmpWSnc3OUxIU3RtcEIwVVN1bVhaaHVoS0JGMkpMaWFycUlxSkd4NVJ0ei11VHRnZlVJNmo2bHQxZG1xSDVOdXN6ZFZlSlVodjNJaGJIck9zUEZCUkJSM0dVY1ZENENsVmxaOE90QWtlY2RVMW0zTTdrVU1SZ3NrMmRuU0pBTjAzUXFCUk9kLXlrUFlDNVdYd1F6VjdBbEhaU0o1cnh2WHQtT01LVm5jdnJQMDExOW4xQXZOZTRkWGVZQXdwd29SckVKQVZTcWtQWThzZ0lLZHFOLWE2YURlNVpiLUVCX1JLNzNRekxoQmNMLVlSZWV4dDl6ckVrZ3o1UGluWDBJVlFLa29JWEZNbFpIWVhoZG1KeDRoZmh3U3BmbkpObmgtNndoYnl3QlBTR3FqOVpqdWR3U1FhZlkxY0lfX1N3QUZoaEh0Vzh6cC0td3ZSRHBQUlYzMFY3Y3BUbkNEZ1ZpYjMzYmYyUTdKdjZUX0lGaXZSVkNEdFVGck9WdUpWWWotbXlhYlZydnlfWXdoV3V0YW5WeU5WZ2tnTHlkRkx1R054U2p5NDhURUZ2S1ZzR24wNUNSNDJDYmtlcHZmRHdoSGFiOGt2amU3bWNvcjZ0V2FEQzMtNVh2aHFha29XV0xFQjlhVzZzekZaODdqZnpQcGtrWEgtOEU0OXROUHBNcERvYk51b2tWcE9QVFozdkVCNDhUQ2N3X3FlSU5Cck5aTC1nWV9KLWZidnlGRlJsVHNZeFhjZlFJb2I0dm04RjNOdmZLaVNjZV9XcGdkZnpJemxSeFFNWnM4RC1MZW93aTFwRWllREwxU1l1YkgzcWJQWENZNVNPbV9xazdjYXY2dFJ2V1VyUFBSVUVxVV9RR3hFUXJvdnE2RzVPaGllQ005U0FDRzh0ckcxN05XRTdiSzRBVVItMTI5U0JOdktOdHF5NExJRG80OVR1QWt3akpnQXlCS1gwbW5iSEJ6T3hFZFZmS0NkaE9nMmdYVkNDMzV2X2gxNk94ZmdDQ3NWazYxa0Jwa2NYMTkwUDM0LWRxUC1wLXkycmphUVVEbjBIaDcwbjFnUGg3WkdSU3NQbXdxZ3gwQzhWNGlpM0hNS0k1Y1MtaDhWdGx4eGV6Y2VhTkE0dG9JVGtCNzNNUGV1Wi1mU3F1T2x3Sm8xRWE4SEhuVXM2Q0RxcWlMUEU5TmZoOXk4Z1BWQ0R3Z056WldsQVc4dEQzYlVCTldZVkk4eW4wOVptSzJPVkFzOVFOa3NteDgwODZ3UnNuN29hWFl4Tk8zVUJyMldwT2EtNGRLOFNwMWw5eFZUclRQY29OdHNVYy1qenFCMTNfSmFZRXhua0NYVTFYWjV0VUZldTZIS0p0andzaWZTSzB2SGxMTDBLZzhPeDhoSURCVExib014WHlOS3NXUzg5bEhBcmI1V0hEUkF4Vlk2N2VpcWZDT09ocW9RdWdYMEdGTVVPWXpOU0VmYTAxT215VnNjVl9zVWIyVTFUWk9lTmJ5SjEyZWEtSGJSUC1xRHliR0ZwOXgzUTF5M2hCQmpsZ1h5QTc5bnNUVkJIZUQ1V2d2TWNGTU9kZ1FoVDNpUnROQXRjTVhaaFVJSEdmU3pKMmZMUEVlRFpVZVI5WG5GblJ6c1cyN0VJMFlFbVR3NW1zZUg0LURLRmFFSDRsTnJTMkRxZWpRa2xhQUJ5OHBMMDhSSHFVYk1SWEZ2ZHF1S2ZBQlZnUUFMaGJYbUd6V29nUnl2NUM1VGUzV2RnS3ZJVXhtOFR3Y0tMc0pIRklWVGlmZWp2ZDR1bVlhUEhMZVBTTmpQUnhmUGpvUTRObXhwclRtSUFYR3I1NmI5R1FDaFQyRXRHTkdFSGVYLWVlM2JYbmhwWVhuTEpLaW4zNnhwZG1hTV9SSFNRbzBkdXlGYXJsOGpVRENZNDlSdWFRSnQyRGR1LXdUTF9YTmNnRy1TcWhYdVlNeEJxcDFlb3AybC1Fd3oxRjJnbDZDVTgzVzFFc1VvdzBVNVhIRUxIM3pnQ3lGWHdpLXhBa0s4UWtEanBYSEJkMXk4OUhWbzB1bmxqZjBLR2s4aUJOT0xnTE9PMmJCMHlMRjJkd0k2R3BlTDdVY184bWhhWWlubUg1dlIwaURLM0Raa1p4Z0hWZll0ZlNCc3JBYllNMHBVYzFwaEk5T1ZFQldVR1ZJRkdhSGlaak1aRWdzTEszTkE4R1VjaU5sZ2d4UzhKRVlmb04xOGRCT0ZIR04tYkxEdTZXQi1iUmxKeThYLTA0c01laVhLWkJoYzBHMDZuZnNhMC1tV283Yml3cmotVXk4UFU0dU5mVUdGWWFOY0FMSFgwTTMwN0pUa0VqWTJfT3NOSmZ5T0lURFAyRU5iaVZ6Mklici1RU3poTVhoV3BPNlFYeXN2ZWpJRjhZVk5ScG02VjB5c3NOMmY0aFJtUkoxbjZHb2tfSTJISHZ3cXVoN2Q1ZDB3blpCMHhxbVh3WFlNOEpuOUxZelRNSlBSd1UtaXFlV0t3MGFLRDlZdHBfTEFkT2xTaFc4RlNlQ3hfdWlXbjV2QURTM1pzMEVfTEZCLUJFaXBGWkVmcG1seGtWdzBfM3JpeGlYWk5GOVNjSjQ1MHpZRkowWm9Dd1NKeklYU1AtVW9vanNWc0hrQzR0MnZaSFhFYmRaa3A1ZXAwZno2Y1RGQUo2TFFVTi0yWFpoYUpsUGF6akNqdFRfOGNrazJITjhMYkV4WE9LRl9fa21tdzQtbWU1REVHVnJzOVN3dHpZSE9SbmtZcXhfUlFsdDBjRi1jcGo3eWxlQ0h6M3pkaHlSMlBSY01IUDNxWFVMNkh1SzBlYUxGQkhKOENBYV9ZTHFCM2hMSUItaU1Ka0haV1pIdlEwWFRpTWUxenRKTUhLOHlYZ3ZGZXIzVUthcFFfVkxZVFVnUmlITUMxeU1OQ0c5OTE1RnkwRWlqRkVia3BtWlZtZzQ5WktzZmUwZ2hjSHJtOFdNNVZETExEWVpQRGotdEp4WlRPX1NMRnNqRl8yVlpvbmsxbTZKY3hwbkgweG5uaGJxZEY0Y25GOEoxR0xkOUZGc0dGOGItV3Vtemxlcms1bjBsNmdrQTdITWt0Vm5Ib1U0MjRRWDFEM2o4X0JWNFVKLWVWSEJ3ZkNyRzU0OUdZblVwdWNSbHlTcXZwWmgxTHBNX1ZVakczUE1STnFnWFF5YzVoYWJVNXFySHFnaHh5NEp4cmxvdlRtZ1RUUzZNUzNOZ1VRLXRLT0gzMnQtdUs1STlEVkR2UG5zOFdsU3NWOWJ6ek1SNmhOdFZOVjlrREdhbzFBTjQ4U19jTnUySnBOd0FHazAzSWZjLXhnSUgteUhwRDRPNTRCYXZRZ2NwUG14X1UxaElyclQ0b3Z1SnlsbXpRYkp6U3JwVm1hNGpsejVNbmFsMW5vZFF5eDNYZXFjOTBPNTlTdVVVeVFudXFDMHRtUXp6MHFVanZfbjNPQlZvSHhDdnFCdzJBTVJqekcwZHgxM2tGd3JoaGFJV3ZtUVRMVklVUGVOeUNlaXJWSVNtUmU4SzZXcGgwdER5SGF3cjRZNjAyZlBNRU5hal92SEQ3bldqQUZqUmc0d1E2UUVJV0VHQkppbEEwemVNVm0zVEdraDZkLUVmbDhyS1o1bzlrTlN6SG5EM0ZUYmlCeC1UTFluaVZEdnRUNWZNdzJCOW9lQmZhSzcwS25PbktTaFJGcDBJem9pd1k0VVJjUUJ5SGtRMGxNdF9QTjhqNFZlYXJMbUR4V3B2eU0wcnFiOXdiWFA1eUZ4X2VSMnNzd2tFS3VaZTJ1OVpNQjJSWjZ5UGNQLUJMckFpT1BTc2QyQ0JCOU45VE9LZEJfai1zV0VvY202YjFmM0F3MGI0R3B5TWpZS0tYb2VIUlVmSEV5aWR1WTFTcU91bVNUVWVBSmpzQWZXYnMzQi1jTnFVMVBueG1GUE45V1dEaVNlRS1aQ2IzanZaeThfZWJGaW1fMDdTcHAydkdtMHBZRHh6TnE4MUFWZzQ4SWVGcVhuVDRkX3FTeE9SUkRLUG1UclV4QVh5MmtLMVpYZW45Z3dVMktPa0gzd2hsTVR1ZUc0Y2RZTlVac0d1SzlWSm4zell3Z0YtS0FpTzM3TEZCRVZrZExPbWtIMjlNRWlCNEFDLUJtQXVNbDUzUmFkS3QzYzh2ZVdGXy1lY001eW5vLVZhYnFjVmhlOFplRU5zUHFvOTdQYlpyTUVGV21yX0RIemV5YVZUOFpIekhjQUYyOEVsQngtSWhwc2kyWW5pMnh2bGgyYVZuenFEM0JBaU1ybnVQaTVDTTNKRFRISTZJYzNGanpIdC1oNmJkT09Ud1cwY2xURXFmTWRTLUNUdEI0ZHFvOGl6VU1hcmVpaDhoc2hLZnY3eFhaZWhtdTd4NjNSLVM0Q3VIMVc4MXBPWXNUZzFRV0w2am9uc1Y0dVFtR1R5YXNfOUNuYWllNG5NVjdzeFlyYm40a2NXczFMYWtuOUtGQzZaX2M1bUI3elVXU3NaekJmb18ycTJiTkRhLVlGc2pxQTZvVkpIZF9mQ1EwYnlkTEdPR0NlbVlGekVZX2JhM1FRdWtEaDY1dnY5WFVoNmoyVktNV2h3MHlncVVZd3VDY3ZRTnFtRkRtQTJkOXNIeUt3TnpHRVhzY0RNRFBGQVZ6YnoyU2x0eFFqX2xRbUFLaFdCVFZuU3hUNGsxREtPamZrRkxsT1VfM3hMN3FtYTB2a1BINEpSLVFfZU9zdGRuaE8yMEk5RDB3a3FmY1ltSF9TNWY5by0zS0k2TTB4QlRRUjluRndKMzh0MHQ0RGxhdGstY3l6YUlqbUJ0NW5rN3BKSXRQTkowbHd4bFBrLUxfNmtXbm4wd0NlMERrQ0NjXzJ2VmhFbkRWUzNzTTVvMmJaV1NTd0VWNlVTaWtOZWI3a3RKa0FQb2dMWVpFdldBelVJNEc5RlNXcjU5eS1uVDNGR04tMExVX25fd1hQYnBhQUZWLXhRMFZwUF9tb2hla2cxU3R3dkhBY1R6TVFrbFduNVlfaUlJMnlhOUIxSTFiSWtKanZYNnEwQ2hGSHdNS1Vvb3lINVV5bkNDNmpNa3FMTFhBU1c2RGJXMnFHbk5vb08tTVFFdWVxRXBENGk0RTBhX2xTem5pZmxGZ3JOMkFwamZzY25FNWFoSWhGY0xxcGRuRER2TGxaeGhMSjREX3hEb2NnN2l4dUJmVVdxQWtoSW5hSnkyN2VMN2tBWkFPOWFTWFprVy15SVJya29HV0N2QmplMS1UTl9NdjRqYnVnb1plcXA2UmE0YUNRazdrdkJHTDR3a281YWpaTUo3UG83eTdjb1EwcGJFdk9BZzBfVHlVYWl4clBZSU5hb2FLV0tnWFo1b1pKVW5YOWhQUUx0dkpLMmF2X3Z3aWpYbFBUQUZhVjQwZkhURDRPRngwaVQ4cXVpVm03aHJhaVNmNloxeFcwYkZRQnpGVFJjZU5EWXRzTTJyWUc5X3JmczBIbU9xZmR6MGxaQVRvSHBITUR3WDVvNTBjWko4WGRqUnVPaUlzaUU3YVN5YXJPV1pQVXFZUEJxMWIyNkdMTjQwSnpBdk5hbnM0TTloVkROblVuaHdZY3JiSnlkUkZWYXpYX2kwMkxheDFOTFdfMEpjTkw0enAyLUNvcGRQR05zZnFEdEZ5d3kyWTltdklYREFIakxKS2JoZEZmODJaSC1ZUnhyWEdnd0hnMkx6Yy04T2x2TXJRZFBLWkdRWHNuekNHMXdaQTZjS3N2enZuNUpfa05SN19ZQUhBdmlkWHVCNGh0UHRxdDR0S2ZTV01sQjJRMTdGdzAwQXdQaXNyY2Q2dE9oa0hDUUFjMWVMSUQtRVM4VTJrakprSGtRMExSV1U5REMxdGNYMVdRMlF1bFo1TTlBYnhpMlJoam1ySElZNTJoU0VPcEQwWUxmdXFYOHlNaXNCYmk4WmlYR0o2U3hoNE02aW9PM180WkhTTHF0a3NkOHBLSEsxZVlpeXNTbUVJX1RpNm1UdDM1LUdCeWNpS0JpemRqeXFsQmdUQ015NzlwNEpqd2hEaE9oSFBpR1Z2azFMSGxNVTdXeFFDb0E0cjdKU2JpeU5UOUR3NFY4MnlMTG1TQXh1T3c1LXNDd1lBcU1ERWt6Rk5mSkMxRVZpOXFncm1qWVV6WjBCenQzaEhsVkdJdmUwbTJOOWkxSnVxekc5bnBiaTNhTFVTcjU3N21CeWRqbG05TEJ6MlJtWU0xajR2WDF0T25zNktFSWtLNVNzclJ2dENNUHpTeERjLWV6NDNDc3ByWm5xU3QwWVJ3UC0ydUNQQzFFQmNkMmVUU1JiWmtVQWdmUUVwUl9vRHhlMVNKN3ItbDdtc0dLNkRLV1JkeVdQbkpvLXJIOHBIUXJzTnp4a1BWc3p2X09FRkJ6eHpqeTVraGtwMmczTmtCaWFCZEJ1TnFCaDQtVklNcjNfNXZmV0duUDd5Y01IZTluT2s0SmxQa3ZYN0phM0VwNmJSS3c5Mk13Q1BhTFJiY0dHSVVUeWVnZjBGMldtc1hsUmZPemVFd0lrSnVXU2RHd2VnbGtPNmo1alVUd0ZBNHRkNExYa2FOZ2ZXeDlHRTdmYmNzN0VINlJuRXhwb3Bldjl2WlJlckxmeVZqcU1KeGZ5WXNlcHNmUF9TRGRPa1lQYUZabUI2S0w2MWY5aS0xOVl0N2dUU3FQU1g4SUs1azUtVC10Y0ZyOUljNXRKcnBDVnNFTkhBcVRZTDVQZWpFRE1qNXNkUExhVFA4WDZVRFJKUXFGVkVNT1daTnJUTElrY3cwaFh5Ul93RVJGRXRDbkpjQ2NLdjE5UDZXNzRTcXlKSkduWlRSaW5Bc0RYMTNjX3BQWUVPVnNUVjEzRWlMNV93NUhDMF9tbHl4b1IwSzczdEtCRjlJYXBFa1pOZEg0aV83eW9hRDZGcGF1Y28wVW9DZkJydFZjNUVzZXVaaUUyQi00NFNOMkVkN0pkWGplRTROa3pxNE1PMFFJc3NPaURzUDQtOW15eHljUlJsSm1Hdm5zS3RTVE9ick4xd0VwbGt1Yzc3WVRubHRZeTh4dVozV2tyQnZMQmJLSFRPMHlNNE10YjMwNndodllYNlgwbG1iQno5QWgxellvNlk2YTVjN25sWnJ0NU5qeW9lZkpNT1d2SWRxdGFBZFVhZ1l3RXZDSU05c0c5eGVXSmRaSmVOVTd2N3pFSzgwcnlqZUVmd0VfNkk2R1pMOFdtWkhjT01lTlNKOWhvRThTZ21hakNCazdWMldOa2FVTi1VYlh1ZERBdWFZbnhOdHdXbzZxZ015NVdOcWdNZ01TREhxUS1BZUNxVllxRUtDT2tlZmFLQnNfNF8zc0Q5aVN1STdrVmVURnV5WXpCelFZNEtrcl9qYWptSkNaaEROM1Q3ZkQ0dUU3UzM0RndHX0lVR3ZjeUoxdTZUc3RnSUwyUmhVSXV2c3d6NmgwY2ZDMFBOam43dHZqbzhGaS02TWJ5eTB5Vzk1UmJpdWNpbkxvaExlVDB6OTh3V1dneHFxT0hsTWdjVTNVeGdHdnBhNUE4MEZHOExLZ1BuNE9Va1FyS2c5aU1LaDVPakRoWlpoQWdIMnBRRVVRek11MGM3THYtX25MUHdET0VrTExiLUZFSjJDdF9kcGJveUdpX09GU2lybEFnSmJuN0cwanpZand5QkZhTTNZT21PdlpraWhGNkZST1FaN1Z3dl9aaDEwZTJJb2hKWnpwWG5oS1pDY2ZnWlNqNlR3cGZNYkxralBQMjcwMEVON1RMaUJQeHc4MTZSUXB0THUwZl9MM283aGVmc0ktLTZmbWhBNEo2MGh5TFA4bkt0VnZQalhPN0RMZ243dlJhZkNPMmkwTjVVT1dUdnpLMTFvNFlfalBIZjByUmVfLXZRbDJGOS14YU1QUS0wVEFIMUpJUFlSeEx4QXB3OGhoMWx0MnVnNmdEMjNxQ2wtRGtMbFZQZURYYnJzMVJQejFTaWs2el9yRW9BZzFoLUdmbHFmVmV6MVphYVVCSGRrVXNMUnZDY2YxWnZ0Y0hZQWNxSHFWdU4zbVBSSFg1Y1ZFY0VZUU5xZl9WelFHdVlNRXV1RjIwZkcxVmxxbm1wVUo2TkFuSDdYUU9IN1BUcXVLSklEdTBzanpHNTF6TGVCb2V5Y280YWttOTIydWIwVm1fRGFNU0sxZXM4X2EzUDQyako1cHZaQXdTcG9PT0JNVHZ2T3F5emFZZ1ZBX1o4d0g3bS1fSjJVdEtBVlhvOVJEcFpkdmQ5cEVxOXZ1TWFkb3Uxc1F1TXBvNGRJemxoZ1hQRnVFME9BZDZrNjF4WE1INk9MMEdnaTBPakEtQ2liWWVjZkdWWmoxNXN0dkVILVpGRHp1eG1hZnZXWTMyR1p1TlVEVndPU2NIcjhpaWN0TnJYWjN5SWNhNTZJOGhjZVY1MXdLd2V0VzV5NHZnNkZ6ekRKbkRvb0tpQUNNaGpQVHlYSUZnNkk0M01jUHFOYVJISnRuVUVwYTh4TU81ZzkxdlZyN0pzZXRHcm1IREZPbkZ2S3dEa0RZLTJrMlhvSnFFb2JMd2w4UVk2djlVQWR5bTllY2tJV1pWSkZEdTZyN2xDRVUyTHNyNFg4V05ZWlZZdXFOTXhXZUw2RllqZ3ZhbTN6MmlwUWhCTEdSSmV2aEU0ZUZBSGd1b0FIX0lsYWJMYXh1bmRTYlhBbFVsX2hhMGRlYlYzNDRob2k1WC1YbVlaRjFmY2g1dnN2Sl9FcF9OeW1VVkp5TVJNaGRWWm56R1NYdmlxSnZ5UkVYd3g2TW1BeGYtVGR5OU5qQWNjOUFObGRKeVgyNWwxdlpzUUNJMVhheGVmZE5hV1BXU3Z2WUFLakhGaC1TTk0wcmttQWZ6V3FWNjhWVk1XSmU4bThQNUNtdTlUWmZyTjVwUkxVTURlSnlPUXVtYThWMWNTMV9PZlVfVkJib2w4RXozTXVNOXdyS0pNZEF4YjNKbXlnQ0VVWmJTRVFpYUJ5NTV5MGxsbEttOVNmLUoxMEdNYklmUjZqS21rYVNaRms5YUVuMlo1cmRlWDQ0WGR5T0FjRW1FNjVxWkp2U2daUmdmbVZPdEw2WFFPV1V6VnJpc2tHVGxDNURNTGp5MkN4cDFVUUtDbjJWdzlFZU16d3NVLU0wd1hTak1mYUxmcWZEX2VFX2pudlhlOWhvMmtRTC11b3Y2azJyU0Jid3BnVmRPR2doQ25VaHI5WC1kU2NicHFpV09WSHhBQ0NLMHhWdkQ5dXJmZTVxaWpJWjhybzRPTnRNb2hFY2VWSHZWZkt2Q3JUTTRsVEtYdUZuTjJfLVkyaVdXNnhIQktWQkF1ck9LbEZCQmo5UnhrcU94MGZjdHFvbi1wUEM4Q3RrLUxvSmo2NHd6X3JZUmhPSnJ5Mnhzb3JmYnRTUHJ4R1FxbzJ2UzhQZFZtY1pEdERzOThtQWoyU0VGMlNWcV90VVJOVjlfVDV0V0QzTkw2azhTN2V1Q1hjRTdLeUJ2aHM2MkExV202SFZkWko5SWhsQjQ4Q2hsNk1JN2h6YWNoSC1HSDRPQS1MSUc4OURQUUlXMXpqMkZGdkxiUlBGWk9OMkNJQ0puOHlScHRaRlo3NkZxS3N0cDhkUWc2ZW1ydko4WXc4bzk5U1RyQlgzX0Y5YnBuYTlzWXVZXzVHR3ZHZTJFWGk2VkxLNTAtZnczQ09wU3lWdlE0VlhDZklCOXE1Um1obTZCVnBGUVN5VnlqcWxEcWhwdWdFQktQMUM5cTVSVUZhWDJaemNoZDg4R2NpM1NXdlVxblRDajV3aGpBU0pVZVhzdlVENUJfRUFZVC1CdjdGOUN3U2RyLWkwYU5DWER3MWxCUDFqajRIMkJqVldkVHZKZGdYSDdHRzRfVE1paTFQYUdvNDdOaFdjLTQyV19CMkYzZnZUNWJzS19kbkFXeFo1ekQtY1lVdUF3UVdaS1Zqak5tUmJaZVY2Zk45amowQlRVMFJXa0dYeHRTMUVteDc4X0ltcTBsS0U3SWlUN0tyaHFPMTVyQVJtZTVnUjl4dlRJVlNpOE9Bd0JEa1dlNzh5UjI5cTM3TlV2NDFaR0x4OVNNdWc4SXBscjBoWEJYUlhfaWZuQmVXdk1TWTlNd01hN25pSjRMQ2VOUUNBa0ZpenpVYnp2NDZGWUNmYzlWZDhkbTAwTll5c2szZFJVamxGaWE5QWFhVllPWHIzYVM5R29aSUhMa2NBaFd5azEwX05MVnh0UkVhUnA2R04wSXliTzd2X05SOWFUNnBMZ0pCblFKSFJTemhiSE1YOGV4TmxyR1c2Wmg5aE9HNnNzYk5nZTUwMnVpeV9FaVJXNVFiMjBUeU52QkEtOHRIR0VJOXc0SWsyc0hBLTNCbmtqMDJXX1NDaXI2aHNQV2pVM3hiSk1xSjVYYlZLX1dkdWg1ZURpNEQ4UHRXZXhyRmV1ejVYMVZXUDZVRFh3VENKOVZIdGlfTkNBQWdGVzlmWlpDSTNXdk5KaHhRcDNCakJLVWFzR0JJNlVvd3NzUEhKNm5HbF9HSFI5NTFSRXlfdHpDMHJ0WXk5MS12bXZHOXlIT2gwZDJHM3B1WlJ5U1RSdFJRWVBjVm5fSG12R2lEdGlxTzZhSW1FTWV4Tl9RZU1BeE9pd29LWVNNY0tFcEIxS1BnT25qb21LMmd6UURvLWZEWWdVZFlpNEdYdWZzc3VhVUxmWE5KRUVQS3RiYlZXZGw3UWU2a0U5UE1KYVNJa2h5UzlQRjAtTE9ZbEVTVlBoekRENGVralVGQ2dSMjVmclFIWm15M1RIR1d5bmtfMWpYWlYxUTlYWGtjSk04eEZ0NjM1NllEblo2SGxIc3FHcXY3Q3R2dF9XYVVSVno4Rm8xWVBOSDBGVF9WQzRvZkpJVm9IUzFpR3lONkZ0bGpUa0dFQXNqQ0ZPLWhxS0VLRVdTYjRZOE1hUFA4QlJVTDJZNG1jRUVwZ0QzSzByLVNHbEgyVXFfdE50bEM3aHVXUWhfaDF3dDNvcHY2MzRYYmVwMWdfcDk5S1ZjZXc0OHVSQXNJRUU0OWEzVDg1TWt0VTU5SHhjVVpTMF91ZEdKUXMtbGZ3di1UeVMwU2E4Rng0LUlOYUYwRUZ4TV9KLXA1anFobkxvQWRVV0Q3SFZBc3F1N1BWeThLR01RTHdEeC1MaFBwQm1IUkhrc0xEWm0xTmdDQnRpWkJkMWpTZVItdmhuSDAzY0paN2xUWTN4bVRreW5uRU9ySF9CeTdDTV9WcFQzWFpYanJnWUx5bGZ2VGxNZ0tiWFNJdTJDOXFDYXV4Wjg0QUJERFJ1ZG1WUTB5VGNITmNsY2lsV1RBQnZZQXMzTVl1UnZvNHhpWUFrNlhiY2dtQW02ZDJJTERNWnllTnJJVEtJZHZMd3NEQXo1eXdpeHB4dGNOdHVfM1ZCWkVoeDVUTnZzby1xLTNYbG9iMlN6WE1UbFg1aXFmb2g4MzBXZ1dsTkU1dF9RNktlcWRONGtJZFpkYlZPck0wWmpreXIyTHNnY1Flamd3QUlzbFJMaS1nRWgxVWxEaXBKRC15QnZTUU5XclJLdm42cnhzU0FwY2xyVER1ZVdqU0YwNUpiaEoxNmVqRWt2V3dMdTJmMG1GT1RMRHhzM2trX2VrZ0xFLXg1UFdrbWtVT1RPVFNLVnJxdHAtMUd5RDhIbTI3R2dZZUd0RVlsc2Z5aXhhQnNCOVBwbEJyTlhFV3dpWXZySkYxc0luQ0VOWm1NQnA4VE9JZU96WXlab2p0TmtjT1huck1RNWZqQTh5dUdSaG9GRnA3NkRrU29GNjBab3JXT1NwTl80clRqYkFoVDgxN3l4SVFiTnI1ZUItSnNIYTJncUx2bjBjSEZ6Q3NmWlVYS3pqS29YaVlHMDlQazRacmp4SU9PVmp5TERlRHh5RDZtdzJEVmxmbTNiNHYtUTRuQjd5eHE1cndfT0hHZ3FpazE3UjlqUnhmY0QtTWtIQzUwVUFIX1JaRW04YzVXVkRaQl9CWVFSOEpuTW0tQ0dXTVptZmNKREdXWmNCZm1wa3pqeThzWmVsdUpOT0ZaRWRQanljMG1GOS1aaXU3REROMmRTdm9oN2JCRkNGMWo4TnhvTm92NzJUc2pzS3U1SWhQTWZZUTRKTmxnekd5LUNqaWJZMGhZQmlENS1EOUtDTjkyQnRLMkpqSDN1aWMwaHpPQi1lNU4wZ0duX2RhRzlnVC1LZzY4TTdrNjRfOXdrUHgyeUV0VXczSlpsRnBsR1BQZC0yR0V0RE9Cb3NBNDBoeDE4NUc3S2ZCMnRVQndfeWY3TGpnU2RhUnFxMEhCUjRCRzlfT2hSMDl5djN5N01VeUdCTnA5OGk1Q1M2ZXhsaS1Jem5VQk43LW04S1gxTTBUVzR2TDIzZWpXSFJUVjJId1FPTGctOXdRazR4X3dXbDAxbWdNSTYydDdOSHZvSkNmN3JaZmt5NmdJT0Y3TEdxTEtzWUJFYU92VlZPY2FSbmg2YVFBaUtkc0ZNdDhqWnRpQjZWTnQ1eDA3TFhwQWRDMjhXa1hMdG1DZmluaUQ0UUpPMW5CX0VXR2tNWkZLdXB6Tm9GT0dCSmd1SnhjYXNReGV2WFMtLXBuYjBsSXZSSFI1MFdNZTdPRGdEdDBxX0hQeTRYZ0FWQkRTbWNmamVyanZvUndDX0YwYlJmUjJ0WWVSNjFQUm1NUXJMcVd2Sjl2cUN0OGhURU9zbGtpUXNrLWxPM0Z3Q25kWnhQUHVvbGVtZmlvTmItdG1XNlE4QWtaVC1BQnJlVmhFbFhUeW5vekxFYzB3WF9ZTFRlTmVqY2diLW1SWkJQWGpVZXpvS0VMa21tVFZWWGRoSFlJVmgyMS15Yzc5SEFKeHRZWWpwQTBFUXF4QVN2elRoMERTb1kyTk1kVDI4c2V2cktCbDNpSEJoajlKOGpfcnN0cXREelVGUHQ3MmJ4U2tFLWt5bm5ucXhmakNqZzZFeXRJOXRqYUNmSnlEcktVOUJ0ZXVtLW8wcXlQVVYtUzZVYUZreFpwZk1jSi1LOWFhOG53OXVURnhWb1o1SncybHFpdFBGZFNPMnJUeGlscmpNeGZPOW4xMVFXbWpfUmM1TW9tSVRFSW1DR3NxeWF0OV9LMUJDVnR3NGZGeUhWQ2VXbVVJN0dsRmM3aFZrbVFXQ0VGRjAteGRoMndtVmh4NEFjQzQxZjNWaVpRN1Vsam5Sb2FqNm9UczE1SFRHZ2hIdzFPamt1Qi12eVBISlRBN0ZNbzlLTUZCMXNYTDJlR3ZhWDZmdml3cUxjSTR4TkxBRXZTTnVoYmlUN1VmYTlIT3hiMWQzYWhZZ21KbTBad0ZHZUdBMHVWeVJRcU5palVaZzNwTEQwbWZiUU53ZGdTdDhYMmhuaG45Q0hoeUxWaFowQ0JTRjJaMXJiYl82d0pZWGxiMzJaVFRDY2RTOUlKdVZvZVFIendTX21nVVRLTXR6NXRyQzN3SkkwdG5jay1XX1JrWmRPWUZpcTRnUmN6UGtkNENvZUxwNjVPb0tRbGxWSjFjNmRtamFMdWFRenhyZGkxLU1iQ3RNbUFfLVA2a0NUNzJwU082QXFscEsyRzNVaWN2cTZPc2VBOGF1TUJJeG5tZ2R4VFFqb3dWbUNfUUN3ZU1jWThfaVdpdkpjOVk0cFJvbl91M2hxNXd4X3d1V2tHSkhGOEZXOEZSVG5CazVkZGVBYUlUeklRV0s1THYzbVBNRXFjSEdqMDRUWUtmNnlMVGhlcmY4OFRsVzZGMEI0STYyRmZOLXlYd1R1eWM1QVRvVnpOdXdMWl90UEQxNlRsSU1CNWlBYXRvci14azhGRU9fY291ZVMxSUI4MDA5aEctcUFYMTl4YlBLbkxvQTVxUjJJLWNiQjlZTmFRWXM4aktsTUp1c2owdUdPdHZYVDNTMzlLZ0hxZjZDRy1Jc21EQ2phMzhDbWdGdWhkWUEwV2ZhSzkzUUZjZlFId3B2S2dQQ1d0bk1lUWtrVjNqV2pIWlE1TmpxOWlCYVp6cE96bjg5UnYwUGNXNUxFMWRlRTcybTZhek4zNnYxWGtnZFNLVjlxSjBzd2IwaGRvQkJzWUdZRWVXZkxwZ19wQlZMQ2FNR0xOT0JMak1wbEFyb1VjMkhpTEtyNVlLVk1Gdno1bFBwRXRMTnk2RklhRW1MSGNLLU5ncGRPYUJYSk5xbzJiUFMyS2g3eWFWY0wyWHNaQ0VheUR6X2ljcGVIeHNlRk1WbW96VHJGR1BLSE84Ql9vcW03UXpTWFhmcTY2SVljYTd6b3VyMGtNWFVvVWdpZXk4a2h5aF9wWUlwUnpqMkczV2taQnB4YjBZNkxEb29zN1ZubVh0V1EyU1BuWTNqUGVaMUFQTDFUNnljODBmQkZQc1ZPYlFyekRVeXFWam1KS0ZjNTZxUEZ2LVBXN2dLRFY3b1BPRFdONGtSNVBFZFBBcUpUWFdUTDlxenpjeFhXWThHaXlVTHMzUVZGYU92eUJiTzZRQUN6NzB3UEVZbkFGQ2RFYTFoUWg4OFoxakNvSEhLMm9OU3pNLW5pd3JObzJfOXdHc1pOc05HYUlZci02Z3Y5Sl9BRWdSeGNYamNjdHN5MkNVd2pKVGkzSWoxM0J2ZllRZ2hvMGplMW5EWExhazdteHJQRE1tNURBeTlDbHloTG44WWpCNkJYdTFNTy1jdnUyZHhuM0dyc2YxNmkxcGVwYXBXbGR1aVJ4a2x3Z1VqWVNCV25ncTVOZ0tUaUdNaElzcmdTYngxaVE5bU5WTG1yVzIwNzhpbGZ0YWlXSnA4c0wxcWpBbkRna2lmY2FucEV2S2k1anBiOVhNSzJLSFJIcUE1S1UtNUZFbVZaR0dRQXlfdGRrY05TUDhBdDBaUFpuOUwzMkxCTDFUTlVrWjUwMjV0c2ptYzJMaDdWeERJSXdxTlVGaXcxYndISjk1cGZNNmFrYm9vd0Uxc3BINVZBZnZLRC12YzZaTWw2SzVIVnAtdFFTX091TngyQ28xNXktcnRjRTVtTlV6S0tRMThYQzJmYWFPdGRxb2R0U3lYc3JpQnl2M0NRRWN1X3h3QUhvaXRNeDExbGxWUGIzdi1mc0I2b3VqS3ZWT1QyYlJJUGh0ejVDWG9lRWVzUnlFNjFoYkwtcEE3TFZUSWlsbHRhT3ZSaTEwZUVUVlRKM0pjU3E4OHhhM1h5a19qT0JBb09IcTk5cU16VWFTdW05dzFyV3BwV0IxMmVUdGxQU1QxZTB0Njd0NFVNR0ZvR2Y4N0tBM29HeHNTX1B6S3VJQXNXM1JvMmNYTmdHMXRFY3RSZ2h4N2dUZEtwZHNOTzBNNkdpaXBkcnBhUXBhV3M3RWJ3dWVnMTNZMWdOT0dPYXQ0Z3VaNGNwWmVuT1NhVW5tNkpPcjVlNzlldWFlVEsxTk84dTQ0WnY5cVlGNl9VWlRIdGN0a1RwRmJ5MF9YWnVpUHRfRVlXRHhEZk9xWm5iSlptZ3lockFQZFpxTmVjdXZya2k1S3p5bnpZQUtWV2E0bEU3dnNvcmJmbjVWY3pab2tlQXdDXzRqU29ZRl9BMTBCSHBIQ3k2WTB3R3h4QU1fMEtqRl9JM1FUZnlkVkJWbUN0dTJLOXNwUzg5Ym55aGFwc1pMSmI1NXJIOXNJdHpEbVVrNjR6SDZIOGQxS0ttbngxWldKVnRaSnBjYWZVeU8zc0hqQmZlV2NsN1d2eTNVSS1oSm9RTDM4MXcyVVdqaHdTRTFtUjRWaU1ONG1uQkVaRVN2TmZfelBMSFg0bk5sekFuVGFhUnJPUE9tVmotUENQYTc5c29LOWdsOUF3eWtmNVhzbmVpTzQzcWMtdzNrR0s0dThSaGRUa1BwYS1HNmJObURUQ19ZSFg5VmVLLWdDU0NDbHVSVUQ5YjRjYlNvTVU3MlpMLThWY2FhS0hMRWs1d2U5QTVDSEdORk1JNVZ4NWpXTHpQc1ItZFRORmlDTlJna2RqR1ZtNVpmSkJHSlQtUDhXeHFxV3J1RXR1Uk1xdmRELVZBd2dZN2pMT3RRVTA1Z0hZMGROaHBwcHBsQjNZLVNYRjc4eGtuWEp6S1Z4eWJKdEVkUmFJcmRFY2dtWnhSQi1Sci1CakJQc0tPYVJBQ0xHWFpQQzB5d0hBY2VsTXpMVXZDNFZuTEsxUlNNSXNWT1R2eWo5b3BmZloza0JOMU1Db214cUhPV3pib1QzTlN5QlVoZEpjTVA4VDc2dmw4S05NdUpZN3ZLMDVwd0lacUxPWnFiMEZVbDBKejUyNWNkS1FycTlxbTZRTi1rRUxDR1BBa053RFlUOGF3eDZVb09oYkdMaEtYR3pVSXp5Ymw1RGlLVE13dXRTYUh5ZTk4U3d0dVo0RUZHSEVsb2lqeEVXcXp1ZkhaczNsZWM0alZzOVlQbGc0Q0NodjN6UG9VRFFnaGF5Skhkb3BKZ1J3OXZqOEszbWZ2Ukd1aWZIZWtyWnBLQUY0a0k4dHZ0NWtLZzhqVG5BRy12UkZLbFJCbU45T1NraHZKU1pMeGhSUjJ3YzdMeXhyb1FiQlNMOFRRUDBRSjF2cGduM2ZtRkZKeVRPeTlOWXN0NEUzSzFhY1VkZDhWSmVDOTF4WTZhSjBCSXctbS1xVUd3aGNiSWw1Uk03aE5PMGpoUnQ2cEktbVRxdklVc3lkenBxNDVjZ1FfcnU5ZGdLTzBQMmZ6RUxZMWZCcVM1SlJxVVFZVEY4b2x4NmFMQ01OZXlRQlhkaFdxci1Ec3hESnJ0eDdVS2JFWmJVSVRQc0RwZVlpNlg1c3ZQdUN2N1MwdnhVWWdWMzVyUHRiOUxzVFIzZHA1UEo4LWFJLXVqNHI3YWRYZ0pxVW55amt3MklFWlR4TGVqNmNnekxJTDVOSVkzWlp5U2t5UHVMYzdFcHlkYjlOZXIzVGVJOXBjWmNGTHZjMlhYVFp3UnFBRzRCX3REVU1rV3RRdTNqMUkyTk93eXpCSUpUX1p1QmhlQnR6ZWo5cmtQTDJXUVBvUUlhZmQ0aFlkWDZUblFGOUZvQjM2ZU02QTRaLVBVNGhGZXpXUVk2NnMyNHNfMFZkVjF3dF90NXlXdnVKdnhucG54aHR3emtSNFgzc0I4MFVyc3Y0cjB3eVNWcGM5R2EyRXYtMXozTUxVWXBIN19SdFI1WFFVSVhobmxmMXg2a2NoSFFPMjdiakNZOG90R0xqRW9YelA5MUFxblpTSVZodVY0aDJZZDBlNWg1VXNiRVlMMEJDendULWptRGVTOUhLQ3Faa0F0OF93bFMxZkFZRVk5MjFsaVRHNGw5QVAtYlNROW1fTkN6U1ZudmhCU0lWNWZJT244enl2dFFnSmltQm42cnlIOWRXTWZmYjlSLWNWUm8tSURrbnpCeks2Y1lnTGhtRHRITHFaMW9uNVVINXU4MGstUERuM0g0ODZabkVBTk13c0plZFVaVm5kd1hWQnVRemRDSUxCNG9JQmYtZUNKQ3lXcWcwa3lUYnl4VVVOX0VmX3hiUjg2eGJjbEJVM2Fyc21aeUR5TERrNnoxX3g4Nk91bWNlNFZqVGRpUFdGRTlEVXNNdHdYNmV0RS03eDRyMnNwaVFQN1Z2amlmcjM0V2J1WnVwQVdpb05NeGxnN05SR1JPaG5fX3AwcWFPVGN5Nm5SMkxSN1JOTXl1b1RKcmhXMmswNjF0czRNcXpDMFJBeHR2d0k4LVg0elI0V2l2b2RYM3FkMV9KTEFUdzVwUDRDWWNiU1JFelJVOW9MbHJUdFduTHR1ZHpMdEd6bFdvSGN6cmZ1NjcxbDdvLW9sMnNVRHhEZ3JiZlVMbTB4LVFwSmc5WHJLNnhlQjZOZ1FwcFhqNE9tQ2RYdVVPVUIwQlNETHJBMTZLc2FSakVtQldfZjBFcmhIdTVMaEZ0WEltRWdTZk5mUUdJaUF3aEZEWkVDR0FjT251WHNIT2VfTFBaT0xVNTZwTE85UkNodHI4Sk04c0JkZktuZ2wxUTFBa3BqcDNBclRaZHZFbUMzZGhoWlJCNnFtd1pkeWFBSzhVd0w5RU94ajAtSzNuMzlTQnVlUjRfMnlnSXo5bXlVemhSWkczcGdZNWtvMlNETnF3VDYteGpaSGluSk5WOEt0U1VHTGhjR2ZXSG9SM0xFRFhtR0ZuQjBRUUVuM09OMktXcUNUTWFpWUI4eld3Wnl4WXVHUnUzSXJzUEZIb2h1NG5WcXctYUxtOUZKNHJKaXcybldUVnVySWtuRVNfQVU1eEVsdHRuVnZremtjYmlHSmF1YnN3VFpVdWpCY28yVHd4VDB5ZHl4WU44elhtdFpmSjYwOGVocDBEWFVVeVgyVkxtQmg5UWZLdjMtTUV5Z0JiUTlJZWRkUnhuY29BMXJHMHpBVVYzMHNTZlVLYVpvdmNkVVpwbHhNMllXMzZRNlE2ZnpTc3YzNDBlek9xNHA4MVU4Y3BiNWo5ZEdSX20yNWFDRjlqdk14cmZyeEE4Mmp1c2hnUlQwZWYtb2dZVXZFQ2lQbTBCYkQ2Q1Y4R0hiMmJNRWx3ZURsVnBkWU9pQlV3U2ZYa19UU2RUejFuZ2JvX1haRW1XeHVCTDl3VVZjVUxzdFBQQ3JzR0c4bjhmYnEwbHpBUjR0ZzVNOFctQXRjRGl3ZldNX202OEpKa3dUeS1USU1KaHZ0UXJ2dGxTckdWc2dvMFUyLTJoMnpnS3QzOVNKcHhsaFdMdTduTHRCUVBubUJ4d0ZiS2xYYnhabHpfLTB1X244Vmwzc1hkZWY5R1laazRJMWlIWTdBY2dpNFc1bmlxYkpyeFdWRnVLakc4dFJvdVpnTV9odHdUbVVPWjA4dmtVd2VXR1RCXzlzWXBlSGRmRlJzTWk3amp6M2hBRW5ra2JOV0pFM0tHanVBQmgtNWNqODBFa3hMVDB2V3BKcHBKYWl2RlJRU2NwNGtmdy1SWFpRenVaaW5vU1VkVDQxWGZveERPTEZ3M2N4dTgxWWFHWUhxemwteXExdnE4bWkxR2VPUHVGMGlBN1lxUmtjajVaUXVZTHFxckd0bmFaUklySTRqazJMUjZMNy11Q1NFXzJnZTd4Z012UzJXam9ZeHc0RThIVThScTljZkgyRE1LY0RESjN0Nnpoc3NnMEdjUzY2NmxCU0w5d3Y0NzcyTU1jN0FxMkFWbm41eGlQelBGOThmbzNISnd0TFlKNmJVQUxYNDVVNERseU5fd2VuZWRBc3ZqR3NWQnFielJaaDBXZ0hvMy0wN2hqNm1sVVN2bE5hVjZaZ1B6azBlbWJJRGpFcV9UdlAxUGkzd1p0Y3FlQ2V3WFFYZzlCblRUbWdROERycDBTV0IzVEVUc2lFSllGNS1RcVpLeUk4UEhXTnZlTFZETXM0OUdLRlY1VkE0c05GMG5RQlI1RlJYbTZNZnNHeC1fdTR0Ulh5WlBwSVp6RE5oRUpHWElfdzFJemNRWWhOdVI5Z1c1WFd3bU5DbDQ2dFpWOTh4TXBtZE9ycFdjeGlnSUNGYW1wVW9JYmRHXzdaTS02OHBWemx4cHFBbUgwV1JQOXNXd1lraVJldklBX2hGMEFlT2JVcHVaR2Q3RFRKd2JBR3ExSnZCTVRTRkVha19QZlNzNmtnOXJwOV9SdHdhSWFiTjNPN1JMQm16WG43WGlHU0RKQzl0N1JoOEpQQ2lpQ1M1QzR2Ykp4VGk4WnVzUk81dUExRzI1VXd0YlcyVGFmQVRfNWZzQ2tsVlpLWXdtNWNwelhRdWw1N3RSVHRlR3o4VnpzUmE5T3BqNkhaSW03X1VpVXlqcUFiRDNwQmxjV0M3enNfT1pNZ2M0RmQ5U2RPclBKaGVHNDJ1QWFWWUNWTXBKMXduaWNUbGpad09pZHZuZTM2WVBaOVJiYXhnd21CRnBlaUh1S2lTNzJHYzg1TVhtNUFwMWhPeGdUeWJFMjNfdDFUUGI2N2VSWHR6LUlwbVFINFpoYzRmS2N1aFcwU2JTN3I3cW1jSTZyQkNFZW9HQ29mamd1T1lCNXc3UzhHaXcyTkdNdzhibnJ4cXFZaS1Yci1aRFlJNzlFRXFtMDlxNHhfc3N5Vkl3Q0dkcFNoNDFWaGVLR3dWQkhYZmdKQnFDa1BQSGJMTkJWbVZnTWQ1ak9rcnczazZ5RC1Dd3hfZmFWeXVYaV91THdaRG9CaElMSXFSdEZPNElaR3RDaVFJQzhwUnFTcWZUTlpDN245Q3I1eWVHSGRkZFVtYWNYemhjcy1PNk1ILUJQanZJZ1hMeG1HZHZpWkh6WFNGelhZUUQ4SllmWXJmRmkzMVptd3ZCc3l1SzZKcFNjeHRnOFdMR3Q3Zi1vQmJYYXkzZWpCUjRpNDhRYnN3VnVNMzRpX29JT0pPZmMwTUZHd0pUWkdxMG4xeHFkXzVDSVpVMzBRQk80VnQ0U1puNVhwWE1uTWdiX0ljZUlyVktXSXp6ZXB0MmFQWVhKeTJNLXktejhOR2hnX3RXbjkxeUlTQnp4NlZGZXowOEhUSXpIcGQ1VUxkTkZQU3VQYmNwMXFDS2tuVlgzWXppZU1DM2pQZmNzTGNOMnFsSFE2NG11V2xucE0wOVhwM0M5dEpPUFp1WEt1R0xqZ2d6b3BwS1d3bWc0ZGU2Vkw4aDFEd3l0STNyWjh3Mk15ekUwNm02akYzV1ROOFZGV3VsemxCZXNIUmZ0SUtzV3dsckVjSmFzejV3X201OXFYT2xYYXp0T0N2S2cxRk90OTA4WGVvYzdQeHpWdFlRczVZbW9WQWc1WFVvY1Vhbm5JYm00bXNaT1ZLRWp1cDZ0djRfZ1RwZmJYc196b29YT0I3XzN3bWhwSXlMem04YnFNamtWQ2w0a3k3czNvNkx4dGdrMm9nZkdCUFBWVlZxRUdaclFzRWxocktoQXlGdjZMWHZQOW9PVU5VYmhGTmd6TjE2aVIxendTZUhOWldSUURQVGtvNndKcGg0NFJuNGViaE80NUJ5NDZhUFdUUzBKZ2RiOGlwQnV4UWpJOUQtZmpSYTFFVFN1UWJwam5OWnQxQkJBNTJkTFg5Si1JZDBLVnpYUzBWenpKUzRjZ0praFVRTXBOTkVXMjVTOXZTR3BHRVk2SzVoSEV0ZHFOZGV6c1g1aTlWYVBSeGxiR2w4V1BIYkZzemloTGV2NkhHWnlpbVdTOFFRdVBmdjFnMUp4VndreEFNbm9Ddlg1RWJUX0lsajd0R1J5REdEVVFZUEFQUkM1d2M0cEcyNWNDMm5XaHAtWkQ2Rl9DWUhCaFg3MUlQLWlMODhpcUk3X3pscGZjVlpsbGZSVGZNc0hOWUtyUU9RblQtTjRuUkVTNzZnVGlNUG5RTmFPSHRfbE9CY1diXy0wYWgwMWxXWng3STk5clZaUmJxRDlkV3hLYnEzRmxrQWVVNEc1MGFVZ2JraW1NSFdCM09JSDdHcGZCS1NRWXFrYjdVUDVDXzJpX0FtcUx5SWlXcDU0bTNBNnByRUF1cG5tcDZxRjNTTkhaR2M0NTRVWDY3Y0wtQ1pvV3BlZ21hMkJHcEt5QkF3WERaaUxNWmdrZkdKaWJSa2Q5aFNmeEthOXljckI0OTlaNkJoOU1IcjdCV0VoV3ctaDZQb3hUU1lxRllWdHZ4WElNV3VlbjE0NWdjcDZlWjdmWFB0MTJWTUZzQkJlU2FJVmt3Z3BkMDA0RmJtbENEeHgzQk9TMUk5SGhucEpxZy01S0pJUzUxeVM5YVlZX2R1LUJGQVF2X1BKTVJjRFc4cllHaDVqdjUxN0Q0S0N1ZEhOMnQ4b01IdXNTSDdsd0s0UWhfVVBNaUJLNHBaR2pVNjE1eHVZYlhsOVFJN01hdi1GRzMyWFVkQVRzYkw4YTQ3QU5Uank5d2VfU2lUbkRXT3g2NzkyaElSS3MwU1JWa0lqU2N4TG5xWmJ2UVVzQV92RGk1eWY5cWZCMTVzdUpkbEtDTWRKRXZNdmJ0TmN3MldjSGFvUW5lWXlVbkJWZDFPVXpDZ3lmVDVOYWFoZDlHLWkwWUpqbEZhNGhmZmRlYi1lM052N1V3SjFXX1JZQUZweVl3ZHRfRjZuekNsSkJSc2N5dlpENldPWEtmQTRoWW1nZDQ4VUwtaXdPcmd5aEhlN3pnSlZkLVR6RjdPVW5ZOFlhNXd6YURxQkdZZk04UXpnMVB4VFFHSVlnZEIta3FQNFB1aHBJVmlxZmZZMGd0RU4xMFpuV2oweS1zV2ZMWkNNTHRVdlc1b0xiaHdlMEdGQTExN3AxMV9weUZ2akg2UWZvNkdWSTN4d3NVUGpjVXFlUnZBSFpCX1lSbjM2NzRSbHFhZXZUa0RIQmhFakktejlaVWFwdm8tMFRkZVdjTlo3SXAxYnRJR3pFU3FuUFhjZkxwcWRNT1RwOXNJeEVXS0VGRVg0MEJSLUlkVml4eEtXM3REV3NxS3U2Ymd0ZzNCU2hGWDZSMjBfcXlzWUZMNG9hNEJ2UDBRLUt3YjFJekQ4WHRjcG1XY3dpN3ROYW44bDVhMS12TnJOcWRDREVJY0doMk11OVBiekwyZzdHOF9hQmNqa0FRSUxPVEdzUlpSSjlXeUtCMFdaeU9SZndIbDdGYjdrd2dpMXVETUVRak4yQjlkeWE4TWtUSEZzX1pMcnNFOW1qSGloaW9OTlNpNXIyRDR2dlRDOXVxSW9Xdi1HeG95ai1ueHNWRkphZVdrQTBnU0JZN0FLVnJKenl0ZnFpUHgyY3hMY2JtU1o5WnBEczZaYmdJMnhuT05VM2FoVFdXN2JadHE3dndxMlF6dXRlTjhMNGYwdVNpLXhnZ1BiYmM0c3JjVmFEcF9iNkpJTE95RXh3M3NnRWFEVnFXOWtmSXF2S3JXbWFPZF8xTThfUVVFWmdqMXpUaUNuM2xzVGRacTF6aXZDc2VzSHpTTEc4eEk5aGd1MDQzOGd6dG9Ca0RSQ21hTVp5TllBVmphTmxkZ3lJclBta3R2TnZxM01fdWZDNGhQOEZOM1pRTEl5a01Mam1sLVE1dFJVcGVSQzd5Y2ZvR0JlZlFIVVRtbzN0SWg0Z011VlhBMDhYV3AtTXItQTJIYWFqZlIwaVJCQkhKSzJwTU9Ca0c2LTNWQUFZd2taeUdETDgxektlN1hfdzJkQlhrVFNjRUppSUdYMEVOLWZTcTN4bENTUUFDc2hqYWhsbi0zelZJM01XdHpCNy1sZ0ZKWHliMl9oQmZWZmFBWHNxdk13V1RNcExxdFV6MnJfZThnYWY1OVZ0d1hHM3haUEkyLW1LdTR5bl84VHd6a0p1R2hjQTBYZ01TcE9DMTI5bGtIVWZCdVY2U3VyaXpkcVdKd1gxby1Lc0hHcnlJck9hWXd0aS1mMjExWG05Q3JybGY1YmJSZk5PbndZMDhXT1psUTZvek9wdF91RGtDZXhBSnpnd3VGNnA0eHBCZ3lFUTREbTcxdUpoNmNNb0ZyVThTcjhULTJucGNETzcwT2VGbmRxSElGNEJ4NGREcEJiSm1TVGtsZUZRRjZpWnNsaW9VV1BOeEJnTVhELUtySV9GM3JpNTJKRWR0d2djUVZUMERkakpBVVJXSmlYSTV1Z1ZwY01pRHZiWjdaWHN0T2ZZT0lhMk9HQUlpVWpxOC04ZmUwSVlnVUxFUWl1Njk2VVJMZlIxMW1kUVgwRm5ySmUzQ1dyRTB0eV95NHl6b3ZmdUc0S2VKSDFhYmpjeDdmTldTcDVQRWEzbzFmZjV0V1pUNEFPQWRHTmpBcXhGVVRyUWpfQ250UXdoT3lmNVlNRmphQ3NfTlA2OWRreHk3dnB2dnhCMG1fd2pQUEdIMi1odkNMOVBqX2RqR3owM3dCRXBaVEE5aWhha2ViajFIOTdCcHNsVW1BYkx0cUZTNWg5LWVDR0k0ekZRZFR3b1RCQmlMSElCZFJsM09fVmlPZGlPOGZLcGpMX09QNWRwaE1RYWNpb0Q2bmNrMW9rSXdaSk1SQzBqclV0dFZhYjI2YUVkX2FsaUo2NjVDd2JSUXVkT3FyT2JnNnkyUU91QzZ4Vjh3WGtiU3FtdEc2dlE2VTFjXzljeS13bXpSYzFMajAtMWFuNEU5cDFLYUtOSnRMODJZYzBaNEJ4TnNaN0ZlVlE2QnpycE1iT09Ub3dNYlowM0NjTFFCWmxqRzk4OVJuRnRORnpZYVFXeXZ0Z042OXVsMkNvdWdZUEs4ZkNjNGo4NXF6ZDZPZk42cm01Z090RlpVWVdaanNYU1poRmU4UHJ6VXFsVExXdDFEaDVEOVVQamFpakdMaGlsUEtaMHRwWWs0V2pRYnJrNVBtUHpzNmREeXk5NloxWG5DTEJDc180WHdtRzBRQjdaeGZ1cGUzYklYWGxjX044blVWYlRWNm1DQVNfNUFIVlhJQ09ma1lHNHV5bENneE5fc1VvZG8yWHp3S09uY0tfZ2J2bmgycmtBLVBpUlBTQUUxZ2Itc1JGcWRpX19FUE50WGVabUtYUmgyV2U5Ni1KZDQ1YmVBMUVqejk5RlozN1lDeXNUNDVSanY5emxUbGFZUzJEQ2RCR00xVW0tTHhrd1JjOW1fM0pNMWpKSkhEbHBodi1OZ2t6RHJLcFZxODJaQmhlSjRCclU3Mmc5TzB2RURQRFd5Nm5FZ3NXbWxrZENQaEkyYW85MzJWdWVuXzdXbXdhNVZld1dWUHJ0S2d6RC1lclJfaDNkcDZ2NXp6eVFaNXFkV1FtakVFbzRraE9OeVhwd2V1aDVqUVktSE0xQ214VWpFcS1QZkJJQVR1VUNaWDc3X0FiWXpobVRLOWM0bldSVS1Sc2tnZk9UZ05vdGFKSmt3UnMzREdWQU5XVHpQU2U0UE5jem5oNXpiZ0tTQTJfc0hMU3NZYzl0U3YzQTJ3OUNucmtFM3RBYm1oRXUzV0ZqdWVFLXp5em1XampjcXozTUZIWkVQOHpRZF9VTnVDUjh3dVpWcW5kNF9rYk5jV3Bodl9nMGV4Z0lpbTFMQi1RY0Fic2o3d1l3dmNlaFhVSUxZRkQxWjR2UjdtU0N2WGdMbGsyYk1ocFI0cTlPNjlsdHcwbUFmWHk4MkdhSUY5c2p1dUNzQnBUSk9lMWZqLXAtT3hWQmJwdXlial90NnFxbFlhYUZ1clJGeW5INm44eHBZSnZYLWg3S3I3MjRNcXlkR3kzT3dqc185TUEyamVsa1J1bkVSN0xra3p3TjZmeGttN2d1UmFfb195b1hFaVBmcnAyUGpRZjVpUFBNeWJISFF5Q01pYXpiNFJfSlJzUW90R3RZZE1QUkZvaXB5SW1WT19ReE1UMThSV2NYSHh5Q2hONHRYZnIzMkQ3Q2c4eHhUZDhzZUlrOXBHazJpNHpHR3duc0ZORUVnZDc4dm5yMXNULW43eXlZd29ieUVhYldVdW5qelpFbV9za19wRWYzMTlBYXhYV1pCYk1tN1gyQ3BRVEtlaGdIbDdGbFdSbk1SaVQ5QzZ4LVU2RVNLd0ZkWkloeUowZU9iWHVobFVObllyRVVTNUJJdUhWeXhLRUNqb2dDa2Nna3NKa3lLME5IS3pKZEdUY1RWTENKcTg4VjVUR1NpYjl0SC1WVVgxM1ZwNmdSUVJydmdNdFRYLWhJRktUQ2Npc2tVX2hxOV81Z0RCSnJfcTV4dGFZQTdwZ2psc3doaTk1dHhPZWpZN1ZRWWJod0trNnNKU2Z5WThRTnU2aVRxNUFjMzFtamRyVFBVdFJzQjExcE5wMkcydjR2b25WTzNaOHlyY0hHU0t1Yk5CNkJtamdUdmY2YjdacFdyTVhfY1JZY19MLUxLNmxQRUtBLVM0eE1VNDhYWXJqXzJwV0R3SWpsQWFQdkhDeVVON1k2bUd5V0QtX2VCaUpCd19qUzZuSXRFN3Jpd2s3alJpTWVDWnBFUWdacVJJRGFtWTlTbnlNT2J0M0Rodmo1TXJFNGQzVzl6OGNQRDI1Wllwb1VNQ255dnVWbWNzejEwUGpVcFJkd3pRMzFvZEpUYjdJcWE2cFVWV04tWDBqT3REbzFaT1JNME8xQWYzVUx4aXRIVjBVUnYxdThOZHR0Ni1Nai1GRC1sUjFoMjJ0UzM0aVl5TUlteDlSOTZCaDJuXzFTVi1oYnlsTU1qeS0yU0xfdzNlUEVjTHRjcENHR1Mwcjk0bFIwZzMxcjBMWVZXSkRHWVR3WWJXRWpLUFY5UVVYTXFFbEstWjN4a3dyMUhDXzVuTTRPZmU1dG5IQ2xQeGdVeDRyUGFjdlpRRlNjOUdaZGduRlVIRUZGc2ZOalVQdy1fVTI5ZWdNcFVxYlVfaTFPNVR3bm9CdThJYmNiaFQ0QlpiQUhFTjdULXRacElzbGhVX0RUcGxWbkRGZDFTdG9vNmZzaDZWbFdvMHRlSFZ2cWJnenA3M0FxdXBPc1c1cEJlTjY1MktKVTJHX3JwTVZ4SUJ1cDI0WG5QaG1GMUx4TmJweGtVSHZiNE9QVXdQelFYdHpaMFU2V1BBYzZQdFJTN0I2NUQwMC1jNVNRcWNfRG9qSlhKM0piemN3SkluNHluSE05ZW9QRUdnWENyV3FzOWQwSXVQMEN4MEdWQjdtbkY2WFJiY0FfT29hcDdnNEFJYjVGM0Z2d2lHaFZFcnNpMTRlZ0Q4SGVDLUY2T3hsTlk5NmVqV3IzT01XblZYTTRlTkJ3ZnFUaGJlSzFOb1JoczlBM2I4NVROLXRPel82TlRHUjNDVWUwWjNFZ215Z2tBOW00b0VheFltclVFM1JWa3EzR0FQRHZvODgza2gzb0szQjNYa0dMNFQwVnQ0YlhSc0trTjR5Z0xXQmRUMkpBUW9KZDJDTlpJaEZsMHNTelVMUjMzSmxKUTZZSzZUSnN6OXc4WVVJeHhuTUdBdFViWFJWWUNuNy1FY1FPRk5TUEtLTVZXeTJqYjMyYjVqbFJNTktUZWlMd0pqSXRGRjlHdzlsMk9Dal9lRnVMSUZUNENReld4VHFlbmlpanR5cktwUjVPT0NIbEJ4XzB5TW1pLVM3M3BlME9NTWM2QWRVUjYxNmp4ZUlTNjdsVXlaX0NybXVveENJdG4zaTBobHRjWWNsaHV6TGNUN2djcXk0d0NxX1N5elpqbzE2UnFKenhLb3VLU045Q2xTRUZDSml6bzE2cmlKeWk1WmZlcFBxcDI1aFNqVHN6Qjh1NE5GQ1ZCNGxPWEZ1SDRod1ptZmhEQ3FiNjJRTFhCSkJyckRIblRWNVF4NXk2QjZQS2RRQnQ1ZmdWMG0xQ0x2RnZ6RWlUT09iWk5SdGlhOUNLalhFT09OaUpOMkVNb3Qwdy1LeWRBSEtheEVWSUFQRGdLRUJCNjNjX0ZpY1l2MlpRVlJxQV9CRy1oZWk5dEVWTWF0NlNrcGxQZnRJT3d0Qml5eU1qa0x4NWxWdS1nX09rQlZ4ZVpETkRqbFU3ejZvTC1zRFpmYUxQdE1ra3pSSFl0cmNmVkp4a09sYkgwek03U2laM1paRkpGY3FUeTZaUWJNM0NhUkhTY0s1TFRUWi1iVjlnNExES1FRTnRlc3BNcEhYVHRNSWxsejVLMTJZeWVNTVBBVDg1WlFtbXZoRE1GWG9kRDhwNjd6dHVjWnk0eDNPWXEyTDBFM3BSOU9ocktLb1JGMUFYQ0d0blNiSkc4MVN5bGUweEt3WkhRSFBDaVNwUFJJNzhwNVROcnFHOWp4WjZCbllLVThYcFNmcUs5VW9XcFhxcHYtQnJjdVNVYzBqUm1tVlNxc3AwYjIxUFp4bjhJVk9xNlhPUG1KYkpqY3pGOVBlUkhxdUw4SmZ6TWlGSndQRzNHQV9vQlpRaDYyakJuUWcyY3B2akRhUDhQYkM1NnNTNzFLRWtncnRfbkNRU3FFekM1NTZxUE9YbXFhb1BIZ0twTVdzZVdRYi13d3ExUFpXc2M2TFpTc0lHd3FCbldjYWtVbHcwcU9CN01Tc25BeHVpaWY0UGMydUJJcms2bEctV0t1Y1NwTE9NaV9hN0FiWTlWcnhkN0tuMVpvY0pJYnZZX2RBVFlqdUpCZF91My13bmluYjZ5VGNUUVJHbi1YRU8tUUp6VEsweUVRUTk5Q29zTHRkdnF3VnQ4UDl6alJtaURnbmF5dGZXckFhQTNhQnFYX2Vza2ZWdDlKR1JCdTZQRXprOTdVSVFLek5zMXFjeDdrMDdPeTVIMU5yQklVZmJGRXZOUWhFbE4xSk43Sk05V0diNXJsbHpaM3czYnB1NjRmSnlTN2NSMTdQNGZQd0liZG1vc2JFTjlzODRHTzFoSEpBdGc5U1Q4ZmpGMjdOV1MtV08tTC1tZUhPMEZJNzNjR0JlaWI4a1lpOVBYMFF1VlJnM295eEtVeEl5ZjVfRW90Z1pGZDIyNjk4RjNRbHRyak1KQS1QaXlPZWkxOHQzbXpDTzhsSEh5ay1EUXpyd1U4ZkxfNm5PX3NVRlE2VDg0d1A4ZU5Wbl81dEViMEhYY0FwelJwOTYwNlV0d1NMQ015ejIyem1ubU9vZ3JzTUdGVXFYS1JSd2pmcjl5Y1lhZmxEeVV2WXVRUU1MTjRIX050dUx3eDluajJKXzZvVmdsWkRqdkhhUEFtaXRoZ2lsTFBCTW9KSGVLN3V1eF9rcUJLMDMwUEtKQXU1Yk9Ldm45WlhpSEVPaTllRVU1UTlWUEp3SmJxUEVub1N3Z1MwLVo2WWlSNTFBNjVIajVrcllJVFJTczdpX3dkQ2JnSU9wSWtUbVpQdElwNUpqZ2VxS3JqQk1oOE9za2NJNFVUSFFSaWZ5ZzlDeTB1U3U5VFNEYk9Qc09odzFMNF9HS0I0TDlkV2N3TmlzdnFSUFVtRlVtNGw2V2g3a3d2QU1DMzhKNklpSkNrZENDWEk1MFZURUVrT3EySnZTUG1yYzlfQ04wWjkzVzRwYTlNd3U0Y1lQZjJTY0QyTVQwLXpxamV6OC14VW1MSzBaMHc4VUs2SHl2YUJsUmx0OVZOdy1GNkNqaEltYl9feEllVGFVU3V5X1Z6OGx0OFJGbkhINE1fRjBSQWhmbVdxWThNVDNNaHlYajFoS0FLYUVHYmhVTTNhdFlyYjZwLWFQcmNMd1p3MkVuOU42d2QxWnhLSjhEdElCU0Vfcm1vYldrbkhDdTQ5dFEwM181NTBTeEoyaGswM24wTkZCN3RBRG5fTjdOLWFSYXR0VXM3MEU0ektFajZDVWRtdFNfcGxIYW1qWE5ENENrSkoyTUx1alJrekVQblJRa0lMR29RXzR6dk8yWDJIU2FNOWUxTzlydy1BY185SzkzVGNSMU9rWk4tTUZDT3pVd1pwUjBxQkxKeDloMkhzejFsY29EV1M1TUVhVXRjQVNmMlF3U2FmTE5lNml1RWQ1MHR5NHgtLWFqdnhrREpDcnpNZGFwU0hYX1RDRFc0cTdBLW5kS0JVLWN2QUpNRG81LUZ2NUcyZnhjVl9jY2FXTnV2Um11VGFvaHJ1bDktM1ZKdXdNcF9CaDhfRVRDWGo5TVlEb3U2N2J4cWRtUElIbjA4RGZqOHhZWWoyN2pmVGQwNWNONHBoTXpRUDlMb09UOHFlY3dPRnk4NGIta1k5Ukxhd0ZWMWhndjBudTVxbHhNdmtDcEI5NThJUTFjTmJVNmhXamRYQVBQZ2t2WXdpSWV6R1B4TzFfa3QzejF1b0pDT01tT0l4Vm9MbjFnMXpWZzdkTlBwZVBORDZ1NGg1b2JkZDFBRU9fbVNyT01YMGswWFBsMlRfS1RtRmRCX0dOTGppOWlPVTJLeDZPM0kyMnNNUEJ0RXZwSlBvSGtKblFKcV9zLWIyNThyejJMdE16TlAyRzNXZkctM21IMkpxYnp1U1pXcHFsOVp0Z3RoQXNnRXgwbURSS0hhdXM2X2FuWExCQkNVR0RyV3IxdGtKaThDLS01bGgtUnRaTnNmSFFEY0l6SjhYenVkRnQ4ZU9fT0MyTC1JZy1BNjFHN3ZsTGRxd19VWExpREpUVUJSWFczSnVmYkhPRHpIOEt4VXRucFB0S2RiejQyc2tiemxCSUFmOWI0ejdyRzBjVVFtU1F2UUVOcmpaNkROb1FqcEtLMFRXUFFMSjNMb055c1BJWDI0cEFMRnhndHI2Wm41cjc4ZmtYNU9hbUM2bDBGbGxsVDZVSS03VkszWXpQX01TMWNvWTI3aXIwR0NFbWVLQy1FTi1CRTN5YVJBdGZQNTR5ekgwUHA1bnJhWXBVWWpFNG1wTE1SbThOSEVKV3ozOUtMcDRrZHVydmUyOWxRNGJDTFR0TWZmMHp0UmFFVEo5VDl6dy1Ma1o0bjlpQkRwNWRaODd5aDFpazVhNllsd011X2xsSUpScHhOMnhLUk1ZeWd4LVRZaWpzMTdvdzVGSDNpMW9BN0VIRzlyQ3EwTVFqZllvZU90M3BacndDamoxX2V6a0tqa2NxNHpjaVVRNVhJYnZVb3BxZVkwOVgtUFVRX0YzVzJ3MGd2Sjc1MW1ZNzNWSEo4N3A2bjVWcENCVlpQUDd6Y21DNDhJV0h3Qk1LdExveWktRGZ2YUNRRWlpbFNtRTFQandsSm1jZWxTTTk5S1FwX3VodEU2LWl4bzF5ZzU3eFgwNmlfTEtLaGE0V09FUzdlb2ZmWHNjaHdrRmRIc0Z3UUNJZUVRSDNla2Q3ZUt5V1FVRGJpdW02VzVJYUNOT3FHQjlubEt2TlVJa0RzUkgxeThzYXktLVVzNDhzQlBGMEJEVVpXQ0tOMmdkaEZudVhneW1OSzJGd3hCa2NfdXBvQU9Xd3M5SHpXZU5XR0xKd09lNHhRR1hsRUtFYUxzR01fcXkyeTl0WmpDdFVNa25EcElhb1M4dUIwVk1vU0JOZ0IyRW41MEkyNFJFNFpSc3VWZ29nTlNqcU1FdHNHbnI5RkpHSHpNNHl0MzlrSlBSSXBlYnBpeWJiZklfOUFERmU4WERFcGx0ckYyUEhCdFJreER1dzNVeXh2SjZOcUJtRi1GZklXLUlTclh2MGZydVBtZnlROEdEWjR4WmtmZWg3VkV6bHh4bjhCQnpLQ2R4ZHhjX09lSVg0OTZzOFhGT0lmX2RXRkt5bmgzT3NMeUp1bTZ3d0Q5WEtLcWtWLXVkeWx5cGpSZm5GZm1sZUVJSlpLYXBJU20zODZ6VXVnSmo2cEhpMXd4T3Q1c0JLTG9GXzJmcW1KLVk5ek9yV0t5YWFVR3FOYWFuV1otRlprekR3RHpDZWkyeGVuNklnSkpBcXYzNnQ5X2VObXp3Vl9WTm9iWHJFYlhoWDc2WFJvVkd0YnlfNEpfaUtPX0d5NkdMZWQybjlCSWdoaGpzaERSck9yaHFkQkFPc3JDN0tZc1B2QWlMdnduaWYxcWZqZlFPOXFaT0xlUkxvdkVzdGtZTXZTMXlYSGxRZmVHcGVadUJnUFJOMFVzWVNSc1V0bGdkX2JlYnM1VUQ0eWc1eDVLMXlUNXFOclRRM1Y0UkJ1bjhHM29aNmhKdUtGTGRRZU9HRWFnc1ZFVWZwZG4xbWlia0ZpVnB2dV9YOVpxNm5zNTZaMmFQOE8zUW8zZm1ILWxzR3hsMjRBRnJnckMyc0pwSVJXcFdfcWZ2eGtWcExkQ21MZnk4bUQ0REllWUtEb1c1bE5TU3RMVFl3Z0tIelQza1ZpN2t5U1Y2Y3V4M1JCcC1IVHJ4Q1NJTmtzZS1rNjZuVlVEUUpaWnh5ZV9zZFB2TmstMXhxbVIwaEhlc2pjVXpudDQ0MDllMDhSbXE1cm03dHk5d2hSRGR2UnNucE95bHNKS20tS0RTNmdPUW9aUnlZWVI3Q0dWWERHQTBtaDhjOHBvU01NUVIzX1JDZnh1QnVjMEdnb1poeHZDYWZBaUtGcTEyRWZ6QUdIREdXbVlNczZDcDhsZzRvTm9GUmQ1ZlV6Q0RtREhmRG94NkVHRHdlU3FUeWxsRW5aOVF0NTR1ZWZvUWd0WGptdFgzYU5ZRUlTMjRiS1UyU2pVZVI1emlsbzVPakJXQUg4RUVNNHMyLXhiN1g0MEhOc2llTXNSLVpXVlU0V1o4ckRkUXpfc3loYVcyY0M4WWExdXBWOUpCdmdqUzRWMHpndnV4STZRQkNMMnlzUVRjOGVyWlZTRjRUbVNFc1RDQjRrRUtFd084NDJ0SmVYclhLZ0VablJaQzZMUC1IWVE3VXVMVHpfaGVGckxiLVVnV1B6T1ZCZVhUVGNqM3M1UFc0WVlKcDZPaWFuMGlDNWt1UnRJcE45TEtQVHVxMUNHLWFSS3prd1VVbUw5MTkwTHFONnVCMzNVeWMxczFkWC1QYWVtYW5WbkNoS3ZDX3ZIbElkckxZakNaOW5RVzdZVGRZX25KZkh3c045VkdxNEJIcTk4a0JFblRGaHFwOUgxWC1PY0JqcDIxS1NQRDdHN2ZrTDkxTFM2elhnbDdld191Snk5bkI1a2d5YVNwS0FPUklpaU9GcmFHUjdoSjJhRnJuU19hcWhtcDhZcWMweWhwS2ZnSXZhTDBkdFpkbHV4WEtCdkpMdTh5NHU4b0pnNVhxNUNhTksxNko2MWZRcFpoaEp3U1RWUTFSc2tYNXhWMUFmYmNnd19TbFRDejJNQmNkTi1WR1liR29rQ0ZzMTlJMVNNWjNtMF9lM1Fnc25mQXpiQmhydmdmU2tMTzBTaTJDWkppdDJVWW4wVWZqVHZNdEI3bi1fUjlzSFlKUm9XQVByWXVVOHZsMEtIOFFDOWVjOGNwWk5sX0k0cVZQZS12cDFsbS1zSlkzS0JRZDBTYUYyYXc4OWUxcklWak1PWll0eld3OEhJOW84dzJiQTBUM0QzNnlTczBFNTJ4RFR6dzBueE9fU0VYMl9fT21VUElHWGRnUWVIeFNpSWZ6MFhVTm9Mb00zSUlzVFp0T1JRcnFWcnlscHlqUk9hZzE0ZXJGcEowZDJ6czhHeFhBcGZyS0R3QzRZbjZJRlhiNm1XYnFxU1daaTBfMDFTN0lsUU5OYi1MMDNpNXBfZmR0UVNHelo1amhfMDZaakdRUGg0bWxjQjJkMzhkOGREVkQ3TWQxbXlDN0NrdHlfOFNmTWtTZTVhMVFQcUFEUmVPa3kwa2t5YlFRR3pDaGdvYWZlOVlJNFFRV3RwQ0tDekEzUXJCYXpnOEpMYktLUGI3cUtmc3JKRGhjSURzeUlCUnRCYTNtSmgwQzlHakJuSFJJckF4c2VUaEl1YkFILUlUVVhxYndBWUJLeHlXcUdXUWxUcG8tcEowSzZWLUFGaDlYYkNJcTc3M1dSQnNsbWhPN29ad1VnNkdleXNWdkJlYVRIUmd0SFVKcHJMSDMtUEYtZG1fcHd5YWdqbzNyRXFVTE4xS1NIVlZGRjR0T3VqUWZsdFVnWWFueDliUUFpVjMweFJKcnRkM0hrclRyNmFPNGplNW9yODhJXzZ3X3dKVlJwNFJ6YVJsZHhoa3A0dVc4X0ZzZ2M4Mll1anFzNFBOX2dTdkh2bzBveDdZNUYwSExpQTFaQXR2RW5qTWRCTlRCMm1KMnVrdzZCbmNUSkM4Y3hubFJ6ZG9sRzg4UDdtdzY2WGFUZ0NsaUhCUGo0cEFSSEFBdTdVTk5jZGZDdHFtVjljN3Z4UE4xTEo0TlhzWklwcjlFQS04aHE0ajFLWElNS0E5eHQzcGYxdGpnc252dWZxaE9NdjNFWWpyTXFybENCem1UdlFvZzRjcVZuV3JTT1ExalhrUzZPQ19QalE0YktrNmExNUltSTl5SG9OemgzcUNSeWtEMHdHUW9vRVdFT0hYWFU1RHgyTVdDRVhiVktDRVlza0tlbVJ0d3RXczY3OHdfTkU1RFl3eHY2V1BLZ1lUN1JOOEVab01rd1JmajE5ZkhYN1ItUHVJWWtwVzVNdnU2TzNiS0ZPVkttVk9manFxYnBVaVdXWFZHaU1mN25IOGlhLWxhVjRYZEswUHl1VVVBMnRCSzJEMGl1d2xXV3pNUzlrbmRsdjNvVDhMLTVVM0lLNzhpMjdYckozaHhGVXMwajM2T19yRE5waGQxNXl2eFhkVkNHdWMzQjdaZHhnektXNm1vczVoZVJ4YXVsX1RtYmo1X2Y2djM0QXFGb1FGZEtOcVc4djg4NlE0Nk1BTW5mMVpySUI1bEUwSTdPOEZ4RlVMdEZtTmVMX3BxWHpNYUdMd19PMC1Fa2tTMzBTSlVwamlSaWpsWlRldWVjRG94LU1JdW5BQVpMRmR4alVnTHVSTndjNVZOT1czVXBhNjJvUFJ0NUFieTRTeC04U2ItNE9rWG5ZeFZFczJJMllWU3BvczVseVVMY0JUSnduTXMtdnA5aXVHUzk5VVB6ZDJuMThDeEFGdGZoWS1ac2ktMXM5VEpYZC1hTXNSWXNmbDBfRzgxcEJSM05KaWh6SGVxMWxJR1pNMjBramlvOEFfR3BvNERkbllJX2tRbFJwZTR0bGt3ZlJZbE5Wamw3RlE3MkMxVHQyMzgxVGx3M0lSNEFhLXBCc0owdVVVZjQ5bXp4cFd0a1pJNDltNTVhQzVDWnRncXZpUi1TYWFsYmRscDZidkNBRTJKWHd0MEFKWXlZbHljVWhpSDBHYTV1WXlTNmtIYVk2SnZkNDBNeHNJd2pmNHlaNWFTNlRhWElVRnB3di1UdHcxRkxiZUk0ejlscWZuYkZDTTlNM1VscmRxSmJ2RmxsWE05Qlc4QUs0UkEwXzJpNVFXMENPbHBzbTV4TTl1X2pucWktWGpkVnlXVy1hTE9pa2VLcHQxWVpCWlBIX0JZZXpSa19lNWdicXotNi0tX2ctNDY1QlNjRTlJX3NOa1JnLTlMMFNaSVJGRzFrMVlPTGZOQW1NY19zTEEzdlBLSmpwYUxBTGM2LW1LRFYtSW93aE54cFNxTHhGYTNnLW54eVdObWZBOUUtcVk2T3N5S2R0WF9WQ3lMcEtFZGhmN1Jic29ROUtUMzliRlB3QmtXNG1jOUlQZUlXQ2NlbjhGM1FKaUd6MXNJVDBJSUxQeGF6SGlOSHpaNDczRnhJblNXbVBvV2tWVXJCbHh1T1hTYW5KbDAzUFFDdVVYbEU3WXhnZWdmVWhfcjA2Um1LRl9lQnJIT1lXcXMwNGNfNWN5SGtielV0eXZvX3d1WEREVjR1cXR0Zjc1cjY5Mm8yNVU5ZGF4NTNNRmlrM0oxUjJLYkViNk9oUmpYYnRpZU1GZkQ0MTlKdVdUS3JQZmtRNW1DM3NOOEQwZEUwLWRoaGFIbXVBSFJQN3FqTjI3Yy10SG9Ddk85d0NpZWpqM192UnVIdG16MlVLNk5kbjh0Q0N6MVpJMFMzcDNrZFJZWWNuS0swN0pVdEQtZEZocnNub2gtU2s1WjZjLW5DeUlJYXNnRVEzS0dIRUpfbGU5azlLRXppdFl6cWtRQWdZbHZnalBpZ2dIRVE4SUExY2xNcXRhZ1p1SVdfbG0yUE9oTnk2V0NyYlFYSEtPQkxRX1lOc2FZVnRZT3ZkMlZIOEZqSmFwNk90cGo3eldfTURXN3BfZ2YxYTBpTHVvSkFBbW1sQnhBWEVRTkdUR0xKc05CSms4OV9Sc1FwYzl4U0FlWlZaekMtczg2ZDRkZzdwclM3bktRYm1nSTVCUUJDdEtYbjZVSmQ0NkoxWkFRb0NJUWVHYzVQQzk2RDgzbndieVQxVmJfeEN4TlFmN0xUNVd2MHZLTkhodEpHdXA4YkVfd3lRR3l0TjNneHhaRkZRWlJncDNfTWh6R3J0eXlRekthUjUwbHJNd1lvMV9pelBxU0JDdDNaZmRPOTFJNzB2ZkdWbXhYa19Cc1J3UGNaYzN2MU93a0F0bTNSbG1rQWdiUjdMdGJsTmxuaUtwU1ZZSE5LeUpYeTNsbi1EODBvSHFpWEJOWll0REs3b3pEd21jUTZuSTNBN3IyOHRlZ085Y0dFUTdKM1pFWlBDS2hsaFloaUhKNjB0TkYyMlpZem1wd0ZRSC1Kd21lcjlFeG5JVkRvb3A1MHZiQWl0N1lSaHlPQ0E5MDVCc1Yzbk5YMGxGbmsySlNRWF9na29YTUtXcWFLQ0U3OWVFT3N4S2JQeUZEU29xNWhxcTVUeXFrVUlJbFQzLThCekc2N0VpTDFFM242amFJX0FTVkVHOEYzWXBGWE1CSENoVEhlNDRZQkFhZzkyWHlCM1VBWHZ3dmh2SDhoMnFxbXVXM2hZYU1KN1dYYWtRN0NvWFlaZnZnaDlFcEVvQUZRQzd2aTBzeWJDZlVGNFpxd3hKQVYwekQwMjktNzdoOG5FVndLbm1SbHRuMmluUXFoMzNQR1gyYUtfdW9fdEhzTFdZcEs0MVF4WmM3NDlpQ1VJd0tVNkxHYnp4MGI1Y1J6cnR3T0ZhWG9Dd3ZIRkdJTjJXN25xaEJzbnB2Vi1ld3MxeklRNnd3ZGNHUFhrY0h4OGxrdXNUU2xhRzVsbXQ2LTI0bnJqQU9uRTlxeUVDM1FJeXA0c3BSRnBFWkV1TndqUERvZWRvTXBTSVBFY1FnZ0NDWWo5YV80X1hNVjFhYVNWcFZyYThMLW5VaUNia2RuMVlIWjhGNVRUdW45N3VmVlMya242NkZtX1doYm5tOENlaDRHQTVvZmY0NTdxOFlXNzF0MW1yWW5lNkJobGhUZnAtaFYzWm1Ka28weU9pcldFNlZnZGhkamFyVS1sZFhhRkRPYVo4cVJCUWJPYkp1TjNhVzl2dVhBa1ptQW13TWt6cjBsRWVicmRzZURzck9neEZ2b21hejAzSkY0ekF4S0M5S0hzc21SX1VNMVgwUndxX3hfT2t3bWszLTlrQW9NRDExZnNoSmNiNV96bEM5dFQ3UWdPNDVLU3lrMERGWlFtV3FRVndvcmhGdG5ZbmhPaklhZ09xMUJKVElJVjFJV0dBOVZURl9YOVhCRlYzckhOSWlCazhNRlRIOVUyN0F0Nkt0Mzk0WkZ5MEF6TGhfS2hHbHROUllkMWRSM2pFaDZFTHJJTFFMWHZFRmViNzkycjlPWi03VUVabUI3QXNqYWZXOXZ4bmdNcks2TkJoUnh6aXNXRE4wZWctdXVwREIzd3UwUDNTdkN1eGROZXRyN3JjTzU0R3RaQ1RkNkYxeEtjbDVJOFl4WXg3Z2pFUnhEaTViUWFzZUxQWTJKME1EdFJNT3R4VDZUVkR5c1VqaE50WlQ3aHJoRHBaVWtPRk15SzhpOWdtQkFEX29rSUZXTFRmdUI1cjlycFZSQlNCMjJwT1AzRkZ0cVRMZVA0bEE0ZnpjRlAxU05hRTByNnNLTTRVcmxGOUx5Nl9SdkNmRVNna0s4NnEyWE5aemc4eVRLc2gzbkZ0V0ttclV4S1VnOFMxc3BWMFI4bHFkMno5RGVaNGxKWWE5S180cGdncUZlbTJmdGxKNXQ5ZUR0NmZaMV9oSE9jcjFYNFJ3Rlh1MjhEYUJsOFJ3UEE5V05KZFR0QlA0NHM2dTd2Q3FzUjVMc0hGQ3lLeTRoR1RNOXZmYmVCT2U4RTRLU0dOQldFN0JKaWpiZ3FVYzNCS1pORk1nNFQ3T0F5TmJFeE9WTVcwenhyV05aMEtyZGZOMW1wTDRldEthWm03Z2V2aTZVMHc4V2hubDc2ZHdGdV85a1RvU0FGTG1YczRYd1NzMUtYeW1pMkN3NXVJRGFwSmRYcmpNaHMzc3FNUDdsT2psVVMweWs0S29oNFRmT2RTX2JOQVotcXp1Q1NPNDdyWHRDaHJaT3drUi05QThzT3R3QUpVM3pZaVdiRUJVM0Z1Qnk4ODlpX1FVWEREd0YzcmhYZ0hMUTN2ZmdtZG95aVVrdjBTdzlydGxobXhBRmc4VmFTWTVLOXdhdWtXT3ZtdDRNSmVQcngtZHFTMGVwYlg4SW5yZVIwODhhOG83OFlPOWZNdXM1VTUzTXpOOTZJNnJnVHpnMzd6Wms1RlN3c1V0eVhVOWkwRzFibnk5TlVqMGtKMl80YnVCMVN3S3JWbk1DZGw0c1lHOXk5N1hxSi1wVmZxTXd1Ym5TeWVHaWwwT0lrNWFzY1JQMUdtNHp0SnlLY0RjQmphSWJYak1YY0Zld090ZUVmcmYzeTVKUFBHMDctcTRqMUw0azYtTmhaeWs5c25odWZCdkpjSUVzWi1ienEyR3JYTi01NE1yMXdfVVdldHBOSm1raldyeWdGQ0xJVUhSWDZFWm5EVGRrUEw2dE9VbERkRHRxUmlMTkR0S2pTbkpDZm1DUmRZdTFYZHY5dWN4U194S0s4cnhnN19WaFppVzdzTnM4bzNhYjBlcUpyQ0JFSjRwZDVDdE9ZS0R0dWc1X3FmdEQ4a21RVXJ1TzM4RjNFLVRXc1ZTQkZZMHBHSS02bC1aa1l2OEtaRWNURnQ3N2JRQTdGLUJ3c3N5aGZ2OU15Q1VsT3ExN2RNMS16blR5bzVvbTVaTUM2NlA3bmFIR2M3czJ1dGVpZW94NF8tUEVNV2lIZk5HTU05Ymo1YzhISWZLVU13c0dEa1YzdE9fTjFzRmpDZThwOS1Xcld3cS1LQVRqZTkxdU1BWExDYTl0MFF6ZXVUT1ZvbFctU045MWc3Q05nWFFudDd1aFpibm1mNm45VG1yVnRQZXpMSk9odGtQem5mNVI5M2FQU3Z5TkNSTjdiYjl5SkhiTzN1Ty12emtCZmEtZGl6WGtmdllSVkI5eEVjUUpmdm55XzAxd3llRzFNc1pPS2JXY0d5Q3dZVmxaamZnSDNkNVNNdFZBYkVtMXpOVUh4WENtNGkwNjdHZVF3b3dac0J4b2czV1dRdDBMQnZHQnlEV1I4U293a2l6UlhRdmRIakdMNEFxZTdOQlVndFc3cWgwenFSTERXcFpXd1VlSXZnV0ZQVkptd2RnQUZWanl6aTNiY2prSHRXd3VIajhQSXloYmM4QzdYb3g2bmZDbXJGdWRMNHZnY0drR2ZaUThZQ2owRlF5Vm1pNU53eHZfYmp0MzVVcWxwRU5nZ1VqZzJxLVdMM3BodzJyeFRxVE5zYmJ1SHIyVmFHWWVtX0h5SC01TUcyaXFob3dhRDk4OWtNbXBTX0JmaENkc2U0YVUwbTVUNWZ2aFVuLVBQUWktb0hsX093UkFBNlQtaWUyV2c2MXR2NE41UGpvYWRmZ3NiTklOSG9lU3dYN2ZzQzlfQ3Q5WHRQSGdsRlhpTWhOVzdic2JJajZoSGlYb0g4dm1qV3NGaDRiQmJPeXpSN0NSQ2ttNVA0MU1YbEZIdEpZWW1zeVpuM1pUajh5YnVCZW9pWmo1R0Vkc2g0Q3ZGVjA3UVkxdHI0QzhOdU5veDdQdUhtRUZLRXU0RmgtTWJDUXIzWEgtQk8yT21mNHFsLWliY2wtdVBWOEdqOV9qNVdaUDYtWjV0bl96YWROZXlodDI4ZUJRNjRyeF9BbUJMbkdFMDFGdVVRVjlLR3pTZ1JVRG05ZzVWeTRxUUp1Y1AyRm5mLXdFVVQ1NFJLVUhFUmc5d1gwakdDd201bUV5ZHFsd0NTbmVCWEtqaWk3eTFybzlndnN3V29oZ2ZoMlJwLUhxdWJSVG91UFk0ZlBSZkVwelFhNm5MOWh4SzVBZHZySURDdEVHWkF0a2Y3V2lqTUlnenYyWm14eXhTd09ieHFhWjBHLWtnNkZVeGI0ZGdUTWdVQzg4eXdITmthMUpyXzVBZXJ3RktOZDJ3Wk1ONGt2ZXNTTnBsRzhRSzRzY2Zvdl9FT2dqalp2NnpJelZoTVVDSHZxVThGbXBqTGhfWndzSlB4dXU0d3Zoa3JTeUE1WHNiZndYRTYtaXJ3X0tNYTVGLTZnOTUwNjM0UEdnbXV5SFhzVzdHMjM1WkR3S2w5UmZJN0R1YVpsVUtUZjVMRnBoTW82R0dvaG9yMDZwOTBER1cyNFdFNnNzUEljeVRqOW9ieGlTRE12NllYUTdpb2xkeTJpN0stdzd5djY0SFo0bTlSVzVoVm1rOW5kOEJhWlpLQVF1eFdta3RVMmxHX0tvN0lIRE9oRlFseXZJSTUwaWR6NFZNa3RRNlNCb2F3RGJJdXdkNEIwMHRHNEQyX2MwNExIMGtGOE5YLVhWd3pTNzB3VG9FWGtlRW5XdDlWdnpNSG5hWjdmenp5eWw2eWVvNXVBcEgtekdYZ1RycVI3WDFwcHcxbDJVQy1BV1NPbk1FMHh6S3FmdUZ3WEFKeVQ4SHdjako5bVRHLWE5SUFHRkk0eUJSY056NElTVkc5aUlkMUpPSFBiNk5VYzI4TVROdVRxVF9yak9hQ3Bid2djdWNrQWpWMHhuWExGQVg4SkktMkVVenBROEdLbHZDOG1QRVdTRHpEbTFQRVZaZHRscU9IT3pCRWpyb3ZYZnBsa2huZFFkY0hRN0d1UHQxQWN6Rjk3RFYzaGtVa01fUm1hYVI0UGs0eHpoZ2tOVmdqelIteEI4VE1wNkdTNVNoOUlZSWNmOWVwVE1UQjlmQ3ZxcnV1OGdpWEtRWVpzdS14ZERraHo1QXgyU2NnTXhiMmFSajlsVnEwQXhTdGVJZjBVZ2RPRnd4VkNyQXdxN09sdlZidmFfM21ONDY0YjI2VHA5amJoRTNObHdaby1TX2hqQnBkajVoMDdsd3VueGg3cExfdE4xQWd3ZHVZVUltQnI4MTltSGVIZHRQUGhUbFJLQVRaOGRVLWRVQVYzcjYzcUhwM29iWlItaEZzNlRhbkM0dHkxU0NnM1hlWEZSaURnRGdiWHNVMjlKMzU5N01JbGdObGxZMl9lREJwek5yd3FTS3otWWhIUXdiVHcxWDNyWVZKVlcxUGNXYnpUQTlULWlKY2V2X2pSbDZVZm00Vk5RS0twRjJNdVRlZVltejFucXAyTkJ6cVQtdFRZcTlQRTlRMXhBRHUxWFVQUndWcmxiWVBMWVJkM1dTZlRLa0JCeFlCTDRJRllHdXYxVi0tRDhnMURScFBvN2x0ekFRMEU4SFVvMWVLSG8yUFVBUlk2bF9ReGJhLXA5ZGJSWGg5Z0hVUzBxZFIyNDVYQjBKRmJGZ29EX1dEQWk2blpneW1NbEVGZG15dVo5eWxHMVU2RzZ1ZnlyWUt0U1BoMmRQRUxxbTItUGhELXRVZHRxcUNCWkZpbVA1S3B6VXNSR2VuMG5wQ0ZHcXJjSWU5VzBxVzRXTS1DVkJMWFdySGVjQzJ3TEFBdmdDRmJZd3JjTEJCVlR2a1laVFpkNkdyamFKRlAzbTJwZ1NJbzBKTFh2TG05MVNOVXRFVnRxMTJrdVpubjRnUUVVRXZZWG9NMUxuTVVNVWtUUlB3b0xPRjQ4M1Bfa19NUGtVaC1OdUR1MVUtSlJCUUE4QjhGaFFFSG9aWlhFN3RrUU1zc0lPRENBU2hkdF9RMXkxM3JIQWJ3TW5fdGE5S0p1Ymg5V0NoY1NsTWppOHVOQVFQRUpwdThuTmhLX3ZxbnhGSGY4eGN0cUw4Q292anVCbVNkd3VGMlhxaVpaVC1pUU9adVFlak10bVBGQkh1VDhFb1ozOEV2NmxmSi1nS2ZybWtEMUhTUDlzYjNuZ0U2QkwwT0RBUVhvUzNiWjNRWmhiLVg0UVpRel82bE4zYWp4UnlvREJwVldwcFpCZGhEZzZhOHQxX2xXRjJFMUVjZ0FIdjQ2bE9zTWNrYTFQSVotRjNwUWhlUVJ2MEVuVDdWTjJ5S2dpVnpWMHVObWNsOG9HYXRSbkhrODRqcTFCTTNRZXJxdl81aFMyRnRZQlNjVEVzMzhJTmdMdGVscDY0ZnctcS1tS05KNDNFUWFSWndweUdDNVFIWkx0M0lsWEVPNktXdWpyX3FpS2dRYnQ1aC1VUnBRc05FS2RoLWFWcHFhdktBYmZrTDZhV2NicjQzRS1VejYwWUo3bjR1aFU5NUoyYjhCUGFYRS10bDN1WURrSWROMWlUSGoxS3NoZDNDa1pEZWJIOTlxZHJnTDlsbkRKSnpvclJYODZDLWFMMkNiSUJNbWZsZUdnSTVQWUsxQmJwWi1hYzFnMlA5WGtuU241RXE5ZVltX1Z3Ul96a3NXZTZvTU9wVHJ5V0prY1psMWVnc29RUURkTUxlZWJaUzBFY19UTkJ5cE9ySkl4c3pQNy1XVm91NFc0WGFNSFdlSUluZXNTUmJfRzkwNDBjenZnQzlsV081clhWVjhYUEd0V3VPRVBQZ0lXZmFYYXdSUGVBUjZocEwwa21JbGJYS3JnUkFMaWI1dFEtTUVHLXFQamhiMjRjVmI3WXVzN0NRalR6OTc0aDVPTUlsWS04cEUyN2h2WURjYWsyYXcwVDB4aFlzQW1PVHRWZ0stYU4wU3VnTEphdHNKd1dlUUlNQWEtNG1zR3ZWeVVYWUh6UVd5X3YzbXZPaEFubW5iajhlUmNyQ0xKSHZlaklFQkh4VUg3c3lKUTVJOGhHSnNsSmJIVFFQYzUxZm9MRDNFcWhyNlRqSl8yZFR5S19ZN1V3aWZiS05WTUFTVW9ETzNXOUZRQXp2TU93a0NjbGFEYUtITkR2Ri1RNVVFOTJ2UzJvYVllYlA3Zm9lTm90UXVzQ3k1dGlrbzZhSGhhZnlGSU5YcVhBRUp4ZGZQWkM3M2JHTXlVdlN0ZC0tWTlyNTl1YWxNU05kbGc4QUNuWDdhX214Q29qQmN6VnF6QmV6a3N6QU5HZXVHRE9nUHFsb0Y5OGQ1dW5TRXdLazhROG1FcnF3ZnQ2ejJsT0RqZGdubDZZU05rdTZ6SzlWYlpLU0RTUllpeEtsUDRDbjlEWDFYZE1zRmF4RlhOWmtlem9DWEYtdWsxczFmMkR6QS13REFianpmNWlqZzZHMmh1a20xWEQ0YmZsZzFhZUpzT2tXdGFJNTBZbk5ZeFFTWnAyb0pzOXpHMUlqUnJHR3BIOFE4YVJTTUhhOU5uMUtiMGZmS3dndlphN09HTGFxUzU4aE1IZzZrbHZXbnlBWmFaUEQ1b2dhZmZMcWJ3YzU2NFphRkoyWTg5VGMybXZhRzJPRFUyQi1wSGVMOGRHSGhCZWZfOURsX1VBMkZRWlpmVGphU0dzQUVJemdCSTYxTlFycmZiOXp3bkVpR2NySTJueEhLVS1BbG9hQUpZa3J1eUZ2ZDNjd01yUHJnbGw4cUlnemVUeXRKa25JMFlnZExCN2s0MldlTTA0NDVXLVR6NndHQnEzMHV4ajBwUHpMNjlfVGd5cGdNcWNNMUJCMHpNUmJLTDVsRV9pbjFzSnRGb1BxVFJiV2JiUklueXNsWkl6UnhjWFVtbGR4elVfRXpKMWpZN05rQTUtTnRpNEtxMnUwU1JuM2VISXlVN0RpMHZMemVNcUdrSk8zTFdIOW85OXM1N0RuODZCMHdZOVhVbXpiNUQ3M2xVVndLNzhLZ2ZlMW5LQURad2tZSG1TTVVKUFhqNGtFYV9jamRldmxPMmlheTFFd0xvbFZ0YThDYThJTFo4WHBZX0dyYjlzNGw5d0w4bGhBMk02a1h2Z3daakRBQnJtZ1J1NTc0c2JUWkdTMDJQODFXUk12ZjJISmZWMGFwUjVINXQ2NGpOTlRtdU5wQTJjWExSRlVDQ25FVS1KdVF1MXFvREJOYVYyZzNaQlMwUTdUd2wxR1ktUzE2MFkzWk1XdTNIS3RlR0N6LUh6VVZqc2lhWlpIWU5tVjlrc0NjVEhEUUdBY2stUnBmaklzdHhYTThIdWFGaXZMNzJfb2hvZkRYdHJlWXB3UkJiVjFoQnlaS25zQ2thUEZXandNa3ZHbUtubXBKbHFycExxd3ZENEV2dDJlc3lxUkxqYkFTUEktUldnMXQ3R0hJWE1SLXM5WUsxRjBHTDhCUXViQWp5WlJuMDFrNV9GSl9VZ0R1b1h0SDRhUWJBTVhyWFgwdkpmdm8tSHYyM2xQS1U2Qkt4RHN3aFZMN05RWWlLN0ZWZHZCLU0zYXlsZG5tY3NLb2ljTHdpTmZEbTRVVnkwNGhNTl95Yk9hbFlhNWFtbTRxQWwwTXU3UlBPeWVrdUg1WnZ1XzZVQU9mcF9pUVRUZFlHTFJ5S1VQZDdndGdmM1N4NUw3N284XzllZWRlR2xJQTVqdkR0QlNlNG81RTlEeVpGSGRvU19JQ0dlNU11UDgtLU9TNkJ3dmViLVlQd0xLYmxLYTA2bnB0a1lkYWVxaTZQWExoQzhLYk1WeU4xREZoNnA1MTM4RUV5Y1QwSXdCdms5akc1MG9vMW9Ob1ZuSW5QMnZYcXNkeWg3enJqQndkNUVxRmMyXzlKbmt3ZXR3d0xjSHJYMTFqWkR4NlpEMjMteDFaMC00dEF5REpyOVMteHRQWmZwQmpwUHIwSWpGcEJOUHdRMU4zbXJaZlViSXY4bWExWFczb3R6TVdnanVWeGZIdXctbTlERWJpdXUxYS12RlhuYm9hZU5PUFgzVFJkZVFfcE10RC10ZnVKUFZ1d1pNRmlfaHpkWWhoSXBzUVVaMU1GNEprRGRHNWsxbG52bGJ2cFRtbmpNd3pjaTAwY2F0WVdLYXRIazlyaHY1d2h0SnRUQmFxNEZvZ3djX0pQX2N2NmxyNkZ5QVlDTXNlbVI2amV3R2FGd0hnUWRWQ3JqRldzemtHTzd1Z2F3QzRKRVltQjRGMjRmamVhRkc1VzBaU09UQ3Z3NmtzR0ljX1IycnBSeTBwSWVvV1IxRFdJWkM0UUV0M0txcG91QTdQMmpCazZrd0s4MTUxY2hLenNNWWtTUWNqU1pnLVMxQkQyMTM2RU1BN0k0MWs3WGowMkpBOUxEOWRqTE41dXZpbTUxdXQtU1ZiTEZpTHVPOEdwYkVEX3JOeEo5UzJqaVN2ZFJfcE9hOEx0UHY0ekhrWjFvbHo3NkV0eGE0RjNWRGM2TVpNYm1GaDJqTVNoVW1ZM3pLQ2ItemtyVWZPZGthTVFLRDVLSFpmR2ppZjdteU9jaWVwUm9lR3Z3ckliZkRieFlRRlIxdk83TG40Y0p1ZDduQWljOXRMaHFtdmVRQ0NxMGhKaFR6dG1TWXpoek4zZmhySm8zdnY1aC1Ud3JZSXBfcTdROEV3b1M5Z24yXzB2UXBVeFlrNnFOVUxrblJaRTd2ejFUZGNNX25qelkwVUwyck9KUkpwSG5IVjhGZHNGU3RjVzNfdFBlTXVXTDhRWElqMzJRU1gzOXMwV3QwVGFiRVJibU9fdzRGNGNCTlRqZjFzSHR2d2xraWlkUTVYUEVSUWE2UGdfeEt6SzFXd3RWMkNEeWJmLUdnT005ZFdXZW9SMXdodkcyUVl2TFRtS3hsM0FiOUJ5dHhOS0RoeGNPVUdjVWdnUEJwX3lVM011ZERZWC0yb3JfSVhrN01yMjIwbzZqcHVlNERMYVhFd29GX3R3NkZNLUJkWWgxVEE0ckhDdDlFaGl6aEh1TjU0dFJUMUd2OFBsZXpBRC0tRDBxUW5RRmE3ZE9GcmwwSndhcThfTVdUeHRwWGhYNjk4RjhvSXhOZlFWOE5ZUDdweUdWYUxjU2NTTFU0MFNtWkcyMzRtaWFTYkxyemJTbFR0N085dVpDY2NiZFEwVmtDUkxoN0tpcHFQNUp5QlIwdXdKZG1Zand6aDkyVURrQmRzbkxvM0c2NjlxQXpVcFltWi1KSk9oVUVnMXJ4eFIzUEl3UHBUX0l0REQwRzhZQTFROWVBeHRwWVg1TU1kUHNnckhIbnJDbTQ2UUc5WkUtSGlJTUdoVnZCOEhUeUdqU0tFakptbW1DWDhNSEJBeEVjQ2JVWVVGNkc4VFlZNHFBVEc3VkhaV2NQdUJJQzZwMTBtX3I4a3Q2ZU0xSDhrdkJka1VsejhVM29uOS1abDNzbExLZy10RjJxU21fMDkxdTJRU1VGbEpuRlZ3VGVFWUVUbG55Y1k0VjN6SGxEdHlEQkFxS1JZM1gyYVVzc3pNU1h1bGxYd3ozLU1qX2ZqZjJTSlN3bDZLSEpaY0lja0hwQXdubGU0X1Y2YWpoZXRzX1ZCcEZMVlJ0Z185Tm9PT2JmYjA2NkVkZ1pHY3NkS0J2WlhNZ0J2cW90ZndoTWJDRm85R1o2TkxJWDlXSFNpSHk5TmF3U2p5QlV0WkNvcUdpb0JhWE83SktBMUYxQ2FVeTB4aHNIN3JocHZyZjd3aDVET25mY0Q5M2g4THBtejNZWlFBY2RPTnFYZzBOMUthZWgyV1MwZTV0WnlQX3FBTnR3VEVxN1ByVGlTT0pESEJqaWQ4RVZyZl9FLTljTV9BbmhpRmt1WVBzSFRWQmVPaXZZREJmNWJuUmJSMEpRUjZRazc2NjUwM1FkX3JsbEFVaHgwb3ZIOHBkZW96V2JtYWg0dHdTeHZ3b2dqMnJqeEl2OWhNd3l6RzFoaTJaalBiZmxJS0V3M0tJd3hLZFczbHVxNTJ3ZkY3SVJ3c2tIZDY4TlNrZTdpejd2YWFySG1UMEtyNlZiVURNTUZ0c0VGRnp6U25PUzVraUwxSk1TVkRyWDNqbVgwakRPSHN5TDh6eW9pMkx2aVlTdDdJeXBqbnlqOHpuUWtONnNDQndfUVBlTUVQSnpiWlBJNkl5bDdYRVRnV09sVmhpSW43U0JYbzBXc3l0MW1pRm5IZHFzZElIWkdfcU80MmU3YlJ1a09DZms5N1RrME4wclBfbkZYM3o3NkE0Zy15WGdhSTRsQ1JnZnVfZHNFbldyY05iTHJKRVFHVGV4aF9qcGV4b19wa09jUDNENjhvSG9zOWVKQ29kZ2UyMEhlX2NuV25fZHUtbVpVU2pUQ1E1UmFIOHZxS0hMeVM1Rm90ZTVNSURpMUhWdGE3TmlXVDFuQnFQcHJXeG9FY19wWHdlVFdIeVlmVHBGT2RXMFhuaXhyR205OGtaWnk4V2FJWmMwakhkX0xBQWxCQlpBeExqV2pRZzd2bHRvUV9wV2VxWTZneHZfSWhOYzdaWU9nWlR3aWlTMDZwTFJXMGlvUnBmak9SdmFZcVRzbjRidXNqNEIwQUsxVXpVbXhUU29JY2ZudGdLMzZUanF6eVlMa1JyM3RCRVpSYXU4WHFaUUMxRVRRRnVlSWhrNjY5NnY0OU5qbjUxNHFhNkJpcjI4UkxELUpsOWk5MV8xcXp3ZmtjcGtWdjd3MzRuOXY2NHVGUHR3Sm13MkVkTThkU3NNYVJWRmpudTdnRUYweWxPSG96NnBNRUdHQjFWN3JBcHhiTXhzaU9DVklnZGJUeWdTQ1FfOTBVb2YxSzlJVWNxdDY3RTRHS2pUQVk0S0YwX2dUT2VOYzRmcmNvRG9ITjFuQVNocE1pTEJ1eXdLZDhvRUpyVy1QY3VWMGc2YV91TWhRcVhKZE1fXzgtUWdxSm9BZG5UQ1dzXzdKdGxhQnhrWU1USWRkMVFCeTFTZFFTQ3o5SnB5MW5vVHZkZlJ4WmtPZjA4bmVqV192VUstQ3locVBrQWZJQVp5TTJTdGEtUU1JOV9aMTJNd2QxODZIbkpzREFrTDNlMlgwS3BlUDVXcjczR1RCTjdOMVdiSUtTYVVKQld5Q1hWOEFwQXAzTUc2eTJ2Q0ZHTDd3R2xVeDFBOXJZVFZ3Z1h2cm5XdDRvTFNOZkdsWGF4MV81SnpzcVVHbjI5Z2o0NFk1LXZrX19sbkZ3VXhGbWE2V2N3REhiaGNRY3NwMGk3Wjk2ekJPOUx0QjZtdTBBXy13RjJVVVo2amE1cHBUWGdCNmdtbTctS0RiMzY1b3Z6UldWVlZJVVFCVDZ4VUREYmFsLU52VEs5QXBETl9Wd3JfTGxITjRnaGNqSHZ0ZFZZOERFYlpIQWZjczNyRHdwNHV4VGhiNWlnVFNFdjBnUWVrOGRUS2xLaU56Q3ZqZlJCT2U1WWdDUDVZLVpsRWdmbHZEeW5TTHNaVURJVTA2VXRpTS1NVEhCOHY1Q20tdEVjVDZBVkpNeW1WR0xKT1o2dkUtem1mdXB0dTBtLTZwSGkyYWNCM1JVSjE2OHJyaEppOG9zYnY3SnEta3lmX054OUhLUjEzOURDcGNmdmMtRUFIMk95NDdRaXdDclp2eno0SjVRelFpcVR6YVFsTnd0VnpzZFk0M0Q5azJpem1JNlNNWUhjLWdUVkl5YmtkS1N2bWNfT0JiRWxOdFRERXJRZld6eTM4REFZLWZ2S1VObU1laWVET2ZST1JiNm1UdFczLXRMUGxsSmwtM3pGanVIbng4Tk1rbzhzS2xjMUN6M0FvOHg3aGRxaXp4dmkwellFbE9QLW5BUldNeE9ORm5CMmhURVIzMHFVYlB6VGtuQkQ5U0ptMFBicUpmUTBxY1pxeGFhX3lOUmlSY2NXVnd1UTBUZ29FSUJtNXBBNW82NVY1QTB4bDY0QmhlMHVmUXBaajBMaVJ2UGlGVHZXdWJyX1MzV080YlZMS0ZRbjVkSzNTQm5pRkdLbUxIZEhaT2tsZTlTUFoxeFFoTlpPWDRYb0hIaHNtNnpKZzVCWS1rS05QZHEwaEw0dTRabmRZOU00b21odndaaWRfQzg0VHlKdllldHhjaGpDel9aNFpBRGlTNWFFbE9TVXBveGJsY0hvVjZCdEZzZ0x3emxldUNENWZISHdGYk9oNWJxOEk4Ym1lNl93OXJGVXJLN2ZJM3lmQ0E4WXVybXVibFZnMjJGekZOR2tzSzRVbk5wV1BHb19MRjhCMkJNVkFSTEZreXRLNWlwQndSRHRNb0Ywb20tQ2dRSlVha1hfTUE1TnNQUFJxWFBHUjdrTlNKZF96eWszam1BSEs0MEZ4cGt0amd3WURadFlrRnFHTDUtN3RYR2xLV3hxT0VjYjMySmJUVXpCaUxPclZHR09iM0w2WWg3Uy1tZDJRVk1QQklCQm0xRFBIaFlvNzdWU0lPZ0ZNNFpEOVpsdHNCN0o2ZGhHYWJoNVJCc1lHc1ByRHNVWjRMTlFtekdzbDZEeElpMEtudWlieVhvcjlncXVna2VSRE9hQlIzV3c4bVR3bm1WREdJZDdBdXVTdFJEWFlqNXRyS1FZOFgwaWdBT2dQMWpjbWVpRzN6MDNyUVNTeXU0VzdmbVFESnFnRmk3RjRFSnh3c2NYdTZ6MW4yVlZTNWNzejczUDBZTjhYYWIyQWh2M3pLS0hOdmlfNXltRVZ3S0ZneHpnVm1Sb0xJenpSNVJDRGJ2clZqZTMwSEhZejBBbU5FZUtMeVN0UXl4ajhoMlpjZk9DYlAta1g1alh1ZkZiclBjeFVCNUE3NnNrWW9Yc3JUWVBvdlJUSmptU29BRDh3SE5vcXBuakJGcjlCUVB5X003c0o1NjRRMWg3T0lWc3czQllmUnE5Q3htMVlhRnNnMUo0VXNTZXVXdVl5MkpKbDNHQ1JCTWZTcFdRR1A0N3NvSEUwbDR1QTlOd0NCSFVVQVdaUXJrZXBnYjY5dU8tQWFHMTVjOVpuTW9yR0txeWROUlVBcEp5aEZHcFpjSWJ0aTRJd1o1ZF9oSHpBRkVXaFh4b19EUkowY21pbDBBRWRyeVprR3RLLTdUS3hSc0ZVSlZ0eGQ0QU1LVFRGVGd5U1V5UVJQR3JvWjl6RmNwR2ItWFJEODRLSTE1VjhDUnRVa2J4ZnNnWlBqRkdtSERiNDN2OXpJOE40Z3dUcHRMeWZ0Qm9kZTk3TUpBNzkxRUkxVHEzWE1yaGpmVzRlbm9YNTJwckdsYVoyV1BUTTlrWHYyanQtWHFFTnFWS1JOeTk0NTg3UmhFLXdMUDdtT0ZndmdCTWYzZVNkSkQ2Uml3VFZHY2JiRDJYQi1tVlVfSmdaOC1xQldFa2xTbVJSR3lhQ3JJR1gyNDZXWUxXTlExODBHVHRPYkZvdEVkY3dFSHBINnd0bUJxTkJ5UzBVOTNVZ05hMkhraGlJSU9BNVRPN25heTdFaDJBbWhFMmxHSGc1bF93aTFDTWJLdEpMYzBTc3VCWmFiZkd1Q0VSVk0xeEpsZlRhRVFHRVk4YVNrSFJkZ3RqenJiMW90Vk56Yl85eEtPb3BrbDI3M29qX3NJX1Nkdm5WaEdueXAyWkxMcXdLTnNxQVh3ak85WGZtekpXanNESDlQbUJoVnYxMDRqSDBlY2k0VmtVMDVuYzh6VWM0ZW5Kd0g3M1RBcUhuOF9SeExOcWNrWGpFN0ZJbWRGeEk9 \ No newline at end of file diff --git a/benchmarks/datasets/Stealth_Bench_V1.enc b/benchmarks/datasets/Stealth_Bench_V1.enc new file mode 100644 index 00000000..dee10449 --- /dev/null +++ b/benchmarks/datasets/Stealth_Bench_V1.enc @@ -0,0 +1 @@ +Z0FBQUFBQnBwcEFOc2NudlBZVlRreUtyWEpqLUxtYTV0cFZSd0NhRHNJSHNpV3VMVkV4ek9kcHpNRHdTdXdBM1h6SEgtM3c5U3EyWkJ6VnhISEF6RDRkWHFxamhyWmZKVExZNTg5MGJyRzJHV0ZiaEFIbEZNV0QwZzJwdHgzdHhxR05YdmI0Q28yWXNHVVN0Q2dXVFhia2ktc2lybHByaktzY1JnbEdsOWNKUTRkUzYzM3E1SFZBVFdHU2FKcXR0SVRUVnRxVUZudkVuX3NEWHdZb1pQZnh4QlBVOWhhQ3dhNlItTFMzM2lLR09uWUVDMGtxRE41VnpMYXpadWp2SEgySTIyRmRkZFJQZ2l1WEpQQnZqR2RKai1zNW5hN3BOblk0aGFkZGgwdG9zUUpQRldybEtfTGxCcmFGWGl4dE1mTWtTV2k4QnJfeFFseWZ2WUVWaURDLVhVMENUVFpsaWdzVzZ3RHNMalMzTHhvdHhValFxMGJtdkczUFQ0YWZaelo4bzJPZnJGSG80eXNpdElOOXRnM3E4dzdVQ0dYLVRhR0ZMUXV5TWc1MGtzN191MzIyWGFjTWlNekpqOERBWUVINDRjaExTckVicngweE5vZm1Ld2plVm5yNG5IWDRMVnNhei1DRlB2M0NId09ka3k4RTR0TEgwWUdaS3BOektpQ1NmU1VJZU9FVWdfRTNJWjVMdFA3N285YjZ2QkRvXzl4NnB6VlZhSnBkVTVmRGMtbVd4SU5jRWQ1bkJCbHlHazZBdkRxc0V0Qk9GbGdqRk4yYy1ORFZEZTA1OXVwSEFfOTBxMG9idW8xZ290a2Y3OFMyNVpzUkNfTF8xUzVGRXc5bG5Lc21ZelZBcXVCVUR1RFNzTjM1Z3lXcTRtV0FvN3NMMTJxUldrWkZ0NlZDLTliVFV6V2FSMXpMZEF5dElZMEdZdXZuMk8xd3B0anZUMTAwLWVkdGxBcXNoNnIzcTRzeTRjV1d1eG1HQ1gtVEU5cUlNbmxqbE10YmFXRGRhS2RIbWZKakt1dXd0Sk5OdlpmbG82QV9JOTJYakNVdzhUSTluSHNFQmxjSEZad3QxVFBlSDVydzRud01SZU1sdUpTNkpnOGhURkJ5U2RFdDFzWl9LTmZVdTRGTENHOGw5R3dDYTFibUpPRmk1aU1sWk5yTzNFUVh3SGc1Z01MYmxwN3JYS20tbTI2NE16bkxUMVY1aVNaMmV6U2NKdTU1RjFvNkMwaEFLU3h2YjFONmFZRlhacDA3Y3FyeXlqOFBHakNNcEc5dXFQaHl5V3l2RFpPMHE4MGFlMzY0aUtmWXpYMDI5VDBGZEQwcFVxVDNaSXdZcm1JcnRJaGlKYll6YUU2cEE4d3dmN2xQMmNOYUNlMk0xRnFaQXY1QWVMenEwTmxkbFN1OTcyZFZQZnFzMi1YYkt5b3JQdUFYYTRJc09DQzFFUVYxWjliVDN2RHZDOWtmM1g1S1JqLXhIekNVZjlLMzBUTmd6dHpBbnc1RDVEV3hNOWFnUjFJLUVMR1JCWmFIdkxmanRFbDMzVHJJeVMyclBRbTJycVF1b0VidEp6bGFpZmxQLVEzMTJTZXY2TkRDc0U5U19kWmNiUmdzZm5rMzFHRndRdXVrQ085bkw2cmFLWVZGVnBXQ2p1NXFRd3p0RjJWQURkX2tVdm5ybk9GVElMVzJFeWFtM09qbHFSMkRjR2hlZWMwaUlNM1pBY1JnUExyNGlCZ1F4MkNqUHJOYTk1RHJZU2NHcjlsS1pRdDBQbzhhNzFGUDhfUUo4ODBsQkRVaXo4dThKRUR2dDBUTDNmMjloVTBCbWgzMUFHcWRuYVJyd3NtUTNaV0RFcGlYdVRXUG5ia2NEalI3NlZEbzFKazRudXI3bl9Yc3pwRUxIU1BocVl4cE5RNU02X1cwR3NPX1AxZG5UbUc4eklReUdxMjdhVC1uYVVEMWdTenRhY3BVV013QTVvRlpEMWctWHhXT1oxT3daNFpVQ0lwSHRsWWIzeEswNERYS0x1ZXNCM2J4dk52Z0ozVnR4NzZDbDBYQlZNdnRTcGxTUGh2RGktQjBzR2tzVGxESnlrdzBJR3gzc3pWOHdNYVBXck03TVJuLUJCT0tleENiMXNtMXNoak1weFdNN0pOdXdiVFNVVGNmQzk2T1d6dnk4aVNPRFV4d0g3MFZIUWdvQVB6ZUJzbEFHUmlFSE5INU5WeFAxLXRRb1c1ZHZ3T21Ya0hCR1N2Mkpvck43emozelU2cmowS1FNYnlWOWNzWnc4TDBHNHVXekd5QUNySGgydE1JZmZpSjhyNXFWZXlZTFRweXgxSktIUTFzb3Q0YnVMQ0FaUmR6ck1FMVQtOE41ZEJfUnJlcUoyNVVMeVpPTzBQSW41S2pybWNMd3ozMmV3UzZJVlFWOVlkbDBnVHZ2MDVDNjFLNXluWk5YaDJJTUJRd1lNYmppWUp1RGpIamRYVVkxZ1J6bVlXeFpnYzBCUUpnQ2FnWHVXdk4xNnB3MldJSU9CcGh1WjhibGc0NnQ5LTFuY0Y2X1hhMnFpWUtFLUxudGF2WjRTSDFXall4YzFlUEQ1TXpiTTBLTmFDd2FONkIzUTZhbGgyMHFLVmdGWVUwcWxIaGEzQlh0SzlRUHd1dEtzRjZrN29XalJhc1hpZHlRdWdMcDhSNzJQWlg2NndwTHU0RkZ3ZktjbTJPblNaQkoxOWR2THVmUVJDRXJ5bW1GWFFva1hkeGtQVE8xbnVnZ3hSZW9KbFU0LXpJOVg4WGFCXzEwdHpoNXA2dlNrdGJnODJJT3dQbkZ5WHE2U0lMS0JDWWhaRGhPcXZkVXhqbTY4UExzczRSUDhoZG9xbFdoQ2NpSTAwVE8taTVrVWZ4M1BHN25rdnU2akFmNDhKR1g1RDJUU2lDXzlVQzRyN0RvdDJWeXhhbzQ5dnpNTy1PZG96bUVVVGFoQ19RRGhFUG5GLUY5eXI0eWluV3VlaTRma2NqdTl1bXNPTmU0TU1fRUdZR3hKREpaaXFxSFBETDUtYUpuWFZGcGFYdl9ySkNtUXFpem53ekhKTi1GdDY3TlZIWEhOVUNPOEpKQ1k2YXh4UGJ2eklkVnFZNzhyeVFSZ1JaTTMweWlONWJCNG44Y1M4YjFJMzNKVW5maElpaUg5aDQtZVVfdThLaHM1WE5xVDhKb1dEOXJzZy1fX093VUxIT3dDb2FXNlNmYjdjcnk0M3FjYlliU0hFYWkycE9haXRDRWFCREZyMGFXLW5CZTlvTXZ2X1dTMGdpM0MwVDk5RlJFYjZqUDFZR3lyQVl6ZE1Gb2ZMZnFXT2pDVDhaNWxxaGVTNGNUU01QQTZVN1phM3BSU2dsV2VGS0xRUWdscWotLVBZb3hqZ1VIbDdCaEJTSEdaYTdycU5xc1BxYzBOa0V0bzJwc1lKRUV3aUpXZkg1cDA4RkxpMjAzeW9DWDM0TzcySkg3bFB4N1NPaWVIR251U1ZEdFlHUzRmbVJQUkZ6cm93azUyZjloZmw3N3A1TlNlRzQ2Ymo1S2g0RERObTQ0MEVDTUtyZnl3a2tPamR4bXNYSjY5OXlwN1Q1a050S0p3ZVlBYmxJRjRkTTdUaXpYNHpaTXgtdnJCR05pSy1uRlBKNWM3ZnJSY2ZDbzB2MXJkaElSeTlwTGNyY1JvY3J1NUFGS1IxeUZ2VnFrTnVUeGlVSEJlakxXVHhoQnNhN3hyX0tPOFZXbXdVclZEV1hxNkF2Zjl4a19NTXhnc1Z5V2dXbk9fNjBTX3Z0VXV5Z0VONnI5WDNGSVNPS1E1ei1aWk9sYmVkM2Y1WkpfQ0lNVHk0MEVEcVhnc0NjeG5RcEMyc1Y0NjlYMXA0OTh3X04zNWFMTXpxcUVUQkZjcG1TN0ZlSEQ2czFRemxicFlGaW12aThBTDNzNU52YkNjbnVIUXhmTDU1NHJGdTVQSHVFMzlQeWJHUDg3aDJCWDV2NVBWOUNzYmlGUHBvMTdmR2t2cmRKajV3UGM5cndyWVhrdkRBWUpNS05hMkhPQUVBTkliSGpCRGF4WlRENDhiR09pY1JnRVA0NmFPdE1JdHFvWGhha19NUU9hZjZYZXh6SDJuel8wOXNNQlRCM0JreGQ4T195NExLWVdxNW9XRUtzemtQZG9ITHFpSzROWVlibVY2X1ZLeUVrM2J4MGJMSGh3Uy10UktFRGdRTWNIQlVaRm8zdFhHVVFSc2dBRW56cFRPRFZzRFJUVDgzNENBRkkwWTVod0RSQ1RMam0wN3RUVVgzdlNTZDF4bFF4VHp5Q3M1VmVTcDNydHhDRURuQnhMTjlYV0g5VmxVbmZlczZKRjJaMlFLVlRTVVdTLWFrVHNKNnpuc0QxV2lkakZackFka01GMWVJVk9JVEN1bzhUM1ZYS3BRSmJjczEwQ2ZmX1RPTVVvdDlfQ18zOEVyS2xHYk53ZzVneXRZcnhzanBJRVZUWFpqSE1xdXB6LUpqRmtRMWF6em91ekZHaS1kelZoVEZ4LWVuTF85VEN3c2NUd2Y2eGxQejd6YU5qdDI2NUF0U1otVldxNVlRQmkzdXpMNEEyOTlZV1ZnbTNlVjNMczgwNW1tRGNqTENpUVU3MW82NF9qNUVBQnp5aWlKWHdWLWpsYUl2bmRuVk9DR2hkZTNBYVJncWY4RElwNVZ1NDlES3lLUUV3bXVIbVJoR2NvZmlqZ3Raa3ZadGlkSUplYm5xVUVFQzc5NWlfXzV4Y3BBN2RRaE1RSWFDckRmTTItWlVqUW9VdXpFbkEwak05TWRhZjBqYUVkOEdlUXFHSU5ybXBmLVY0SUU3bDFnQklVN2VPMUdZR1ctNUVNUDUyZ3dhZzVPdnZ0anhBV3F3YWctLVYzblMyVGpaQllSTWRab1dpQTlwdGctblJrUVJKVmphZldTeEx1bFFEM1B3enNzZWpjTFpMMzI0WlRQSGRiLTNKcGpzZ0xNVVdELUtHZ2hkbHVIYlVqVWpJRjlrMWtYT1ZUcWVDYVJCVzJ3eDNFNEkxTjE2SHB5Z2owX2lwS0NGaGkzYk92UXlYWmJDNl9zWVE3NG9wbUY3a25zSlFsYWhPMEQ1X25WdzRUbkt0dDdsMXRwRDB4QzZkZ0JkX0RtTmFGUWVFOFhRZDdHbVVaSUIxa0U2UThHdFUwXzBqMjFIWDB0MmFQZzdsY0RZdHpoS2VFUEhiVDRBdkI2Mi1icEFoTzJsbUd5ckJCZWNQSEFMRm9sYnFmN1V4TlFkX3owbXEwNnNoNVY3Mk81R1hrLUlhMGJxeTAtRy1MalRLMDZ1ODZnR0ppZjdHSWlaSU9iZXkwQWhVblNiVkMwaEdiYWFPNHcxdEJ6ODFKN1dJN1NVckczdUFMMjZPeGFaN3lvOFlSbFNVRUhfRE94dExCZFNlcEFoVy1YV0N6RkE1RmVUcFY5d2pFS1BJSWdCN1hURG1oWGZmZUhPendGRjlCLVRwa2QtTE1lM29vRlBDckJrLVkwT2RCVkswZHp3WmVXcW1FTU1QMERiR0VsSEhJNUFfaE1UZFZVNTZYT3dDZVUtclJYVjBHVHQxdDNyUGMwRkF2a243bEZydVNwVVJpMnYwQUdtR0dMdUE3QnY5eHRGalVXVzllbDZNN3ZFS1IxYTdhSkVhRlFTTzR0WW1kRGF0a0kwR1VUUlBDZjlZN19WakJidUhjdGN2VWlldTA5cnZEeUlWUk5sR3N2MEJjQndqRXU1cGYyMVpjX2ZWUWJjd2NVa3AyS29NOUlrMHU4TERZb1Q3bFJtdVNFbDdfaF84YWd0RkR6UG1sY1FWbUExbnBvdUhKZUNLaTJIN2VHcS10emRNMjRBakFDNl9admRob281Wm5kVTQ2ZFJRSGZGUHZXdEpyWE1hX1oxN2lWSlF2ZFBEU0p3Y2FRYnFJdmNiUGV1RGhRNzdEX1VheUtUZHp5YlhhemYtQlRDNWVfSVBVZC1XTzBPNk1CLWxXS0JDcFR1dXVRbWt0Rlo2ZkZvczNxS21KMU55bWg4WUE2MkR3NjRHamxLa0tRekJFWUpjSXNwTERhRTJsQ1VkNURJM2RYVC10emxsUGJ4Q3BmQWladmRkRkRNem4zNWRLVV9mWnV1UGhRaGxsRWp5ZXJTY2lPUXpGaE5oVGJDcDJCS1ljT2dKUVBPVFlKLW9JZ3RqV0hidUFQZUFMTmtfdXBZbW5VbHZWLWk0cks4cDNuVmdMSTBsdW1jMEdPLUIzTWNPVW5nOW83Tm9pMGtYVzBYalowSHpoVGhUVERQN1RyVjQ1V3FvSGVhUnpxSjlVbWFib2hoeGFQZXh5elZxNkpWTTBfbHNjcWoxdDZkMFVrOXdOY1R0cnZ0MGVzeEV1WHlOYzlEVUJseXp2dFowUXJnc2x4bkV5dmQ3aC1HMlVDUVhEbnlDZVNmRnJFRVlTLTQzclAyaGlPaTF5Mmk2UEJLLTdXYy01V2xyNERLMTBDUmU2T29xOHNERmVadW9ocFB1TFh1WlFlR1VfUzU5QWplWXd6RkpUMU8zc1UwZF9PTHU4cWZJQ281V0hPNHhDUlpVNDlrMXJENUIxb2psTG9OUnVRVVo1MFQ3bTl5OTRkYl9yY3hUdFFwVjJfRWM3NFFlSWd3ampRc0NQSncyLVVvZGFLY0laem9Qb3dnalBhSmRZamg2ZDNPM1MzOVJxVXU4YlhlUHlKUnE1bUw4V2FPd3ZRLWluRF9jbVMzcjNvODFJRGI3RGhXYjdYUzJpUVQ2bUVWR0ZCWlc5OF9VRWxTX1QwdXU5MkZaV0lfelJtVkZoVzhpVTJtSjFkWjU1WDNMVEhzNjhRSExVNE13cDBDY0diRENrWTJwSDJ4MzJqeWFSWlo2NGN2cXZXZWVWS3RCNWx3U0lTV2x4UGlMelFMWU5zRk5uZmY2SHZhU01jRWlyR1pZRzJZdFdTYTZ4LWRyWVJsZGZqUG5qbkFDaDZzZ0h1dkJVNUdneDJpMjJXWWVrMVRuZjcwX1djSklvM3FTR0ltTDc1ZkFYRWRsQ1lURWk2dWJLMGdseUNwMVVJUTJqa1pXUlYwR0RlNTNNemU3QUVWMjRVNVd3a1hzcUtIbTJlWEhWLWJzcGpUbG5QZm1sRzFERGF1TzVXR3dXdzJKWlpiSm8tbExiUUt5dXc4eExxVWRRbExNTy0zNFZsdjZKQUc2TThBYkVaV0xXUVZzWWtkckZOam11ODYxZWVCdklLb20zeDRRN21rRGk5RkNiNl9zYzk0TmxLb2pMWGRKZ2pIT3hKb19oMmozTURodHRzTVFkcENndkpXdDBaTkMwOE4xWDIyUmVPekExLTJpdDNmOGZ0V0FiQUFUYkZPX0hueDJ4cldhMV8zMnZiSHZwOFNaVVFzZXBLOERIX2doNENGS084ajRDUjVVekpPc3VqNmVEdXRiczItblRXQ1pRb01TOGdkSi10ZElFeFFiMGt1QjI5Mk1MUk9CX0p5VVZ6eFo3c3dEOW5tZGEzWFhQSmNIZGttWEZpSDlzTTJ0RHJPTTdaRi1kV1ByZ0RGZjNINkFnQ09jTDROWjg3Szk4bWZqZGJjeVZPM0lZMXNjUjFQWjFjWk16RS1mdmJPb2ZxUEJDVFVUVjYxcnFwUTE5aEpSMFdISlhzZllqdjY1ZjJUU0o1M2RXOWJTalczVlliMGVJdmRHTXZhVDFTU2lFNkVBRGVvUUg4NmhpTTlQYk54TXlVY0Y5ankyS0JmS3hVZ2VwWkhNYTQyUnRvc0RJcFc0ekd4aUQ2NjZVeHFCWHBVTlF1QkFHSTdaTWdVQnhwVHhOb05yRGRCc2JuSFNfQ29fQnhiY0hNVzlhenBlMHFPNDJqWDJld1FxRU9oZFFpN2M3M1d3cXJzd0huS0xVREdUOFRqaE03eUZTU05vLXpWY0VaeEFQcXNiOW1WdzBaNUdVMm5JY3RJXzl1UDJHM29jUHQ1MHU3UTRyZXV3Z0pyaUJjNTRNSHU4ODFWMzRidHozTG42alJPMzBXbHR4NlNIQllyOVl2NlVZR1hlU2VLSHREV1FiSThKRGo1eWx4T0dCX0RMbC1VV1Y5bTE2d0d5Tl80am9JLXgxSXMxUFVEOEM0anBaQm5CdHdtc1JlaVZrek9Na0hSQ0VSWDJBWDFNZ3hHOUg2MGFBWjJTbElUYllnZzI4WW5sVlJza3F6anVBNldVb1B6UGlwelFHMEhITlRyZi0yZy1jby1sSFJaLUJleXMxek1IN2hheld1ekJ2U1BWSlVMeGNRMFhKRXRDVG1SSEhBOGllZ1I2ZjdkeURLMVVsWFp3ZFZfeUZmRzVLeWF3azJvMkNDN0xKVEVURmZ3Y0tWV1VDa1V1YWI5Zms2bFNUMmVRcTYxTjI2Z3lQWGxJbEFiaFNCa29KSUhCUDJ5VEhfNGNPdVc5a1BhZ0U2NFhwZTJSX01rcHpyU2lvd0FGeUcwRHF1VEhWQjlnQ3RhaU1oLTdRbjVJNlk0cVhseUlEOWk4QWZtSHlLRkIxeTRKaUE0cmFSUVlzek5Ud0VybDl3OHdxdzNEN0JsY0dkc195OVN3bG1SblQwd2puTzNvcElFU0o5clhYWjg5YjVoa0F4bjhkMUpjRDdxcXV4cUFxVjM3ZXVyWDZVMHVOYTRKX18za0oxakt0dHBvRkV3YmNSdDdhMW00YUdwQk13MDdRMG50UmRLU1JRZGZCbXd0dU0ydmZHemxOY1FHY0phTWxUUnVnTW1NYWZVOVN4Yi1wZEdjRmR2ZWp2Q1VMWmhoVWZ1bElwQWc1TVppc3Q3WmZIdzhjR0FIT25URXZaWHA5bmdCdkY1cXdNLXFJYmhSOUk3aGVFNVZaZmNYUUo5cXNINGh6QUdTbk1xMjNwY01sQzA3bkNxcGVmWU5BQ1IydVYxbkU2RTlBZ25uVE56UkZqMEY4X2E5X0NMNm1yRm5jMGVKRFludi1jbDg1Ymt1TmM4NlJRbFdHRTNEQVktQXJBOURNaVZHNWxjZ3RpSU5NM2xRcHlTeXBhd2hGNTFHc193cEhTN2RQdmNiUkZPUGppRnQwT1VPNUZCaUw4V1Vfb2VpM3lmOHNINFNrMGd5MzNRV0xLODJkWG1YTk5GRzRHSy03bUlEcWpRU2NrV0RHUUkwRTJvaWllTmU1MnFIMXRMRkdfS2llOF80cXVTdURCd3ZieGUxSDZnQW9CanIzcVlMSE9wRDRpZG5SMV84RTRHeUF4ZzlaS0tXUFlEbVdkckxPbjhKM1pKT09nZ1pFZGhjSmdFRmRtd1NFOHRITktsMXJTTU1yZlZTRHNFRjh6Q2lYU2NwQnRVM0pDeWZxQl9Hd3lUXy1nZU14aWpSdF9wN0t6VkFJcFpkNUZJVFV4SUFjdFYwLUdwY3ZNS3pIRWRfNkVlc2NvdDZURjZialdKelBFbThKMHNtV3EwVFJMbFU1QmlMbnV6bVF4cTFNeU5zRDMyaHhGWnlKM282Y1dtc2Q1TjdlbV9VelpUQWNmeE9zdXZTOW9HY2l3SEh5c25TZ1JNdWQxM3FyMGdjdlI2eEhRZ2JMSXhTQWdJbUNmR0pqQlB2bFIxbXBlZFl3SVQzaFhqSmhiOUlsWkxxbGwwc0Vvb2cwd2NqWGtuTnpfd2hKalF2bmgxb3B2VVkyVE85QTA4LVFWN3F6ei1iZnJRaktPYURTOXVaOU4xNXZPYkZkQmpvR1NEREFkeFlwWENGd3ppR0dvNExlVW40SkthVmd0MHlHNjlWb3M0S1otZkNxUjRhVHd4UldNSzFDN2lMOU9oV1pvU29Fd184Y3hMdXZfRTIxenBoRWlUSFM3ZFoyZGdRWHR2ZzgyMzZod2VfYTBNLV9mdFRqMVdMdl9YQ0VoX3JQZ2NCWk9LWWlBaHF6YWw2Q0NhUzF0bW5MV2dLRzRYNEhzN1NXWkc0V2VvUnZ6NzI0bGlJdm0taUI0SFhHS2lJa3YyX2U4RzlwSXV3NmVRWnlrZkh4N19KNlE4QW9YX1RaMVk5TGZxTzAzOW5WRkY1VjFjbUVmc0VIYWJ6ZlQ3RUk1ZUswWjF2NmtlQVR4YU9wQTZYemxFVUI4TnB6SHlMMUV1MzJ1aW9xLTBGbnl3cFRJckVjaTZTeUxsWUFlT2Zsc2tSWjRwSkJ4Sng1YUdOSjMyMTJjUHdjUU52ZVpzcjRQeFNxUzhyUDZEZFdXQVVDdlZSV1V4UjNVeHZzUnBDZ3BEUWliX1NINWwycnlJaFhlVHA5U1JqZjNSN29jbE1LNWFiWngtN0V0cTlsTHNpSlJzVHBJeU05SlFKbVYyRUY4b2hFTVZlNWVHbHVqX2R6M2l0dTE1V25QOUZ5ZVpHcUFsUHZnTmdFRTNLdzVjUG5QY08wdFhQdGVmYjVUYmlxbVlxTzRLQjdhbjl2SjBxLU9BS1ZYY2lrZTZFVXJ3OHFjQ19maldhT0pINUl0SEdhQWJtSXlSZ3hQZHU3cnBNM2ZsbUVYNVZEZjQ1VFBXaGxkVzFBbDNVdUV6bXoxUlBmS3RLeFoza3g0LTFDdG02cG9XV1JLT3YyYWJhbVlVZ1ozc2pWQlRyclpaOUZUQTBUVzRlVndWRHYwaHhHdmJ2cGdUUy04TlI0SkNsR3kydEJpWGl0MWxYb2JXeDJOSEF6SlExWlNSdHh1NFVGT0RMbWR5bGowYW8wMWc5NGZ4TEE5Z2dRQ1BHMmQycUpYOUNRYVRlQU11NEZ0QnVucWppcUo1QlhlWFcwMmFFa3Z2VWxRSGxGNnNYTllCYmF4Z2ticGh3UHU3OGwxbktqS015aVBrYjFZX080SkUzUkR1d0JtNXBJMXZiaGdQT2hpMldRY0lTMVZTZHpraVVQZUJUZ25HQWNacTAyM0hTOENXYnV2UkVnUy1CcWFPQkxZWnVLS2RoUFotdkVOYWJhOFN4cnNEeG91SE1kQ0Nzajd0M2hSR1JnWVdXVlJ6UEpiRWpXUFBVXzJtVGZvTGFfOExhUzRTcmlON2U3NXo5Zl9YTE5jcDNEdmdkRGNSQlV1RGxNQ2NHSFN3NEQ5TE1ZQm5PYUl3b19tVmh5MUdsMTJacGlpWU9aVU9BNGpHcTJURE9xeTV3MEpkTzRxcGVGUkdvektLM3Jid0llaG9ZU0tld0tlUWxHODIwdW03dUZhWU1DSkNnd29kQXc5TC0tQWRFVFlwM0h3VGtCaHdmVFA2b29Bb1Z0cld5Y2lvbEllMUdYLXRsSThSSC1kVS1FU1ZoTkNMWWhUcjlzV1FFMWJYN2VlZWEzNGtMbG1mLXh3OVlzbUZJb3piODVBOVpNS0JZTmk2ajNWSWFoQnNjZ2Ruc1g4ZEJVZ3JuUjhDX0ktV0VWaFVOZUtiWmczQnUtRWJYdnp5TnNPajZSUjdBUExYTVJkYk1EU2hUblJvZkFmRks0b18yRXV1VVZ0aFMxbThDNlNiQzRHYnF1TjgtY1BKYkt3ZEMybFFpdjZRVGltNG5QLUhoQUtrQUhoWkFBYklQRzYtWmJub1ludnFvUlJMY0tfTlRwTlg3TG9CemVaemhRYWVWTXRhTGkyd0x3aGpJaXNDMjV2dDVZcDZJVVlyZXNBSFI3LWt3aU9uU0tXNlpjaGRsODZIOWY1VElQXy1Ta3hGcnZuTk1NNVVsd2dIME1CcnlZR0VrZzNFdk8zM1FaWk5URGh5c244MkI1ODdnOU91T2lTdkNHY1BhaEJlMTMyNC1WeDdVbTVTNW9Zd1RER3lldkxkWUZLY1JtYThWYThzY0R6SFBmb3FKTTg2NE93cHJzajI3LTVpajRxbzRGNjdWS0RsM1V2bUZjNi1pbHBQRTh6dXZWTWhhN1Q1ZEJmV3BRdHk4V2hrcU9LVVdFNF9nUGE5ZXdLV3dPUEItdXNZMWR3Qkh1S284cjVxUkkySWttalBheTZLMV9idmVCWEx5bFpHblBrX0tLT010cFZVTnZWcWdmV0VxSWgxeElUU0pMbWlTeFBrV2JzQUh0MWpoc013ZEpYT3pnNkRmT0lSQUltb25jbWJFTTVKRmN4cDh6YnRjYVlfSE5PcnpOY1QwNjB6Qy1oMk5QT2pqM25laDZMUmdqaTlUYVdtQjQ4YUFuYmpyaDg5UmkwODN2d1dEb3p0SWw5cWE5bzdjeXpXZVA5NW1EdmFNc0VwTE5OcmVGdEEtSWEzTjU0VldmSXFPNVdHRm9mVnFQdVRkNEJYVy14ZHhhTUNBeTh2d0Y5dE5hOHRJaGRvRFBnWFVfRFlLNEFKektObVRONGdQeFBYdGVpb3p1VzU1YmlBYU9RYmU4aUd0WG11QlVmNHpjWlQtNks4YVdCWVhiaFZWVmNEVEt1UXc0eTNZd3ctRkdsQVpkeWZvSGRQM0wzT1NXX244X3k4Wm5aLTBtWWRwVFlRZFh1YUZoRzA2VWY2dFIycndVc1ZSdW5GV1ppSkZ0MUc5R092X3pTZmpaWHQ3MmwybUpkRkdjVkFfdGl2ZWZqWXR0WUZJUnhCV05QZGRzUGVkdkFhUTQ2YnFZazR5VFFIYmdfOXE5aFhUbHVtNGw4UEN6QnV2REk4dU44TjgzYXYwZ0ZHUU1kVVZpa1dCeXp4TWQzTkVZQ0o4cXlyZjFlVmhIVlVubmJyNGNQN3B5Sl9Pd2FaSFFVb1d3c1FLV1ZyOWxKay1hcFMyTWpkNG1sajRtWFh5QTRWNlUyRFVKR0dzYWEtNmJ6aWlOaVBUYzFEVXpfaXRzSm9sVVRHbUVNNUlsVmdleVZZdGhfV1pwUXJnV1hMa3FWOVhHR2s0YTR3eUpFaE11Q0E0enNfUG4tN1lKWTBzR01Xb3ZmQi1GR2tVZDQyaWtROHFQamdyTE9EcXQycG1TYWtzeUZPVlVZd1ZxbGdZLUZPQUV5MVV1Ql9vdENrNjFJQWdiTFk0WnoxSFBaMEREZFFMMUk3S2M3cEJMZmNxbmZMQzN2R3dOcFgtczBFMFZ4azJYYVUwa3FBSndlWk0xNVRPQktOWkZvQ2gxUUVBSjFCNDFqeE5HeHg1YzB6SVNQSWxfTFhnR3l4b3cxZ3hiYmJwWU1JV1B2Yll6UmJpNkNFX2Ryd3V6XzVFRzIzeHZfWUJiQUV5WGpwNTYtLVc1Y2h5WnE4MWdsNl9PQ05qN0otZjM1QmJMSTdaeW94THUwaVVxM3RyQ0VFWUxEWWhIMWkwSmNkcEVqS0wza201eDJXM29CWWNPTVBxRF9LSUFvV0ZkRTNjaHpKalZzODNZYkYzUlZxMm40MXBxVU9oSHhTaFBWbVVBenVVQ3h5clV1allfdGhIeFBONHBTUFIwQzdjZktUb2I2ejdnLTBpYVBiZEpmM0F1WlUtaS1xYm9mUjduWEdMeW5wcElZOXEzbXJ3aHB4cm0xNmpWODlYTlJwdk1uX1oxSXVPRXJXVHV1bTFYcmdlcXV6cWNHbTRod1Z4SmtyUGVQQ0Q2dkpCLUxINURxaW1IMDlubDhmLVlRX0lxbnVza0lOcWh0dkRRVjh4cjNMNmJzRHRxLWNFOXZOVVJIdFFaMFcwbEoyclc0Z0xNMDhyeFZ5YnlVNjhKc3V1dzRCdnBYdHhrZXZMNlhhS25vcEI0ZUVqWVhFSkFnb3RBOExWZXFCaTBrMURzM1FnSEdOZFhfeFMydTRpemlKYmhnVHdCMGFrcXdqWjA0MDRzamk2VHVJWWJiWGlrX3lnWFk5Sjl6VmNIazBQbjR6SVotVXFvQkFUeENjNWhfX0FuVnRzZHdMUVBGYXVUVHd6Q1RqN2tKd0FNSTdIMDBpQlJIX1pJMWdLTk5peWx4Vjh5bnktcTZ3V2R6cFpsR19KOEd4bkl5UXZ3Tmxja1dKN3BhUTcyZ1R0SWx2alhmNUJaOUswRmVBeDVPZGtGZEpZWDJpZDJaTkd6QzlMMzRIMnp1eEhKWlZSZlJDOGNUdE54eG1MdXdTWlI1TWxqNXM4ZFpCdkVtNmNYZUNNaFpJVkViMDRVQkR1M05LUVVzYlduVE91MzhPTk1UMGFHeXBJbTA5OFN0dVFpMmw2djYwRGk0WGgtZXM0NnBQSTZhSnp6M1gwUWhPWUNCUGFQMFpNOEs0UGdRZE5NVWpCTFh3YWxPdTBuU05zeUo3SHlqSW9rV3dfS0NZVmYyeWMyZE5ZNnJQOVIyeDR6NDBXMmNCSUdBbXNHZkFpTUtOeVljUzBpTHp6Zlp2d0JFd3lXTm04TVh3em5fdmNzMU1rVGlSRWJlOURLYThTdk9FcnF5UHV1cjBaenFnZDdYWVIzaXl3NFJ3U19mcWpkRy00c3lFY1d0N0h4T3V3NE5xSnZuM2t2YkpSdGhKSFFwazZ5Q0FiMHpCRXFBcVZORGVqU05fdU1HVkNoSVFUZC1RN21tTU1QdG9ZcG1NaTY5S1E3SXdYOGUwTlVNOVg5LS1LSE9XRkNkV1pyQlRYaXROa3hCTTRoaGpKQl9NVXc4b1V1cTFXcGpPamk5WU9hdFNZRW1VYUxlMndEdmhBY3d5VE11b1NxcV9zTjZVa0lmcG9IbDBxbzR6bnZaYW8xU1VtMEtiX0ZFdzM5U2VYVmtsWUF1SElmVFRLOWFNa054MFNKNTNVU3FSX2VwZG45bTl5SzF1U0t2WGZRSS1xVnh2M2VkQmxaMWJ2TTdKLXpCSlJsSG4wTDRENkNLUnpSXzdSc1VEVUhkUTlnZWQ1Z25JYlItelV6X2pJSGNUdEVfUE5DT2tLMEpvOUtYYWVRZnk0bzNtSkFxR093QVlkUWxhT05DTFRxNEE4MmhBZHpwemhRUXRsZHBCV0VtNEpuWTBybERyRGQwNTdjeXF0SFd1MXY2b0NxeVp2TlFGaVNyX2haY2hUNWdaUEdIdGNPYmhqYmZGaWFSUTE2NHBYdjZNRTdyRmtKRG0zUjVTUGtmYnNlNlhoQTZ1cG5ERloyU1lNUzcxZEVlejBIYjdGanF1bHd4RUtTTkozVW03Qy05TUJ2STNnZVh6eHMzeWp0THZKQkNUS05oQVBNb3JwVmNzNTQxLTRaSzN5bjVwODlJdU1rOTAxS2JQa0FLSDVxd01YLTRiOTdYYUZLVTZ2RmFpYTZTZWdnSWhqeTZPdXhGZzhJeUFlQ0dNMUVCWjM4QzhhUlFVTm1URHlXQzNnM1EzeTdMUG5sZWotbFIxZ18zdnQ2cXJPbDkySjJzMU9UbXEyeURqeGxQMzktRHR3ZWFiY0dsRThnOXVVVm9qTkxROHExSmk1YWNNbm9wX0Frb3NZaTc4U3dYcDhOdGYtbldxZG1tZjF0bDNkbk9NRnZOcDdwRnBNRHB3cTFJVzctRW9JYTJxTnY3c0lNWlMxTm1XUHdhWXQ0ZWt3OXdIV25QazBLZVlabkpfaWFKYkZmeTZBcHQxaUo0bWZWN2lGTDE2M0dwbS1zUXQwQkFlTTJWcEtTUjU4bHpZa0JENmZCTmphd1VoN0l6RUZpaTlpNGRPa0pGTkFqanZ1Qk5lZjBDYjlLVlNjYVVqUTd5WVZLYlhqMC03ZkRYZi1FbC1HOWxpalJ4ZkxrZ2lkaFlIX2x6RVhxeHY2Z21xVC1XSTZoRzgzNkRhVkF1UnAzNUU0TnQ2ZnhBTV9TSjJzMnZsZlpraDBFOThOSmhGNS1lbnk1Q2pzQXAwZWViVXQ4aHo5c19JdVktMEk5ZGY3dWdfcHBVa2YxeTVuZW1MZWZQdUl6eTRDekw0VDhlRWpYc2hyLXh0YTBsR2wzNHNJb0ZVekhfRzEtZlF6aGpRWTRweXFra1lnZlcwTk9yT29XSHBNbnJET01HR0N5MzR2ZV9FTEVqWFVaXzZLSDhGVVB3eXpHbnFaLW5XeVg5VEFPZUtncnlUVDdCcDA4VzJ2RTVyNno5SDRpUkR0V2gzdXMwamtUWVhjQm5BOHEzbHdpOEVNYnFtNVNsckhVYnFLVlRHVXNJT25HWHJwMU1zWEFGNlZwRTJrclpDeU1xaXZNU0hjd2Z1Slo3bm9HazI5bzduZlNraXFYdkZiakN1QVhHSXhta2xQcFJkV0s1dV9nOWM1c2x0OU84Z2o4OHlqMGFCMDZ5NG5EVUdMSHZaQ3VScENGNkNjRTMxZE9zbmh3ejlmamlUVDFCdWFCTmVELXpPbTh3OUhTdVJxY1VCdXBaSTF5Ymw3Z0VUUjBnTjBtSXpEZ0lZWDdDNFk1eXQ1YUhyRmswd05WbXF0QmxheWZybDFzRS1kTWphV2ZyVExJc0trRmVCMkFlVXJ3RF94VU5teDBBLXR5VUFmOWlTbW15Zkt3U3hDYzVhZnpHY01UZFREY094YWFoY3pVdEhJZWxac2ZDNlRMc0dtMHYzUFJENHp3bG16dVprLTRJQ25iRVJBMkE5WUtRdENza2VZX1hlRkd1ajk2MlRJcXdFWTUyaUc0Q0RldkswanVuSHVkT1libHo1dF9BME9Ia3kwMmpHT1FpN0NwTEctdGRva0o5S01wa2hPZWFPVnJTRTZ2NnRqZ25uNVh2UjVwSzh3TkxseFdUbjctMzF4aExXWGFyUHY2eHVON1JMa1FRbWM4VVdtOWdKV2Jpd3REM0RzMmZKTmlTWUx2bkMtUDlwcmE4cUotQTZhMm5wOVdjdjZHWVJSclBRLWt5Q0ZTdFMtY3BRLTJ5aHprQ3hXRGxFaEdFT3hTOTdNZmh5U3BKM056ZjFaVGptWk1WTWFwLXNyQXhyZ3NDWWdVOWN4WmgyMlBMLVJQU3FBTFF0eDBhRGVtdktsejNyVEdGTE1mZmpyNl80X2tFekQwNWQ4bndkbWV4MTZ6d2N3UnFuNWloQTF5M0hidnY3ZHQ3WDlpUVNxSy1VRDNuZURHcEpoVmI5Q3ZSOHllWnB2VGdRRlF5TW9jNlJ6RUxuZy1XRUtZRVFOQnZjUXV2Mmd6NkVPazllRWJEZ3RCM3pVZk1WaTJLUlpsX2tqc1lQbnFNXzg0cUdMUVNJcEpjT0NleGtKR1hxWXJDbmQ4ZGZ3N1lNcVdPTHE2RDJCTTM5YnFmTkFqbkRRRDg3TDJyU0hOSmdiV1RscVFmdE9yRnUxZXF2QXQtOHZDOW1nakRrVHZwRE1HejBwMFkyakswQkV0NUY0YlNJeDVVNl95WXdvT0ZzVW9NdXd1S0dOVEpmb0tPTnVIYnNmYUlxTG5EelJrN0dXMDd1T0cySjlfWEZvU1F1b1VFRnhOSExva3dEVHhDTEZ2UWVmWC1wR3prc1pOZjVoY25DdmItWmNscVJpc2czdFRqa09jRkpNaWZQYXJnSWd0QVhTMFF2TnlyUXNYTXhBOVBOdmtSTjFHMzNNQVdLa0g1ZjZwTDY5WE9sQTM0VFJLMzk5RDBmeGlCODFEUVYxWUF6ek4zUExYazNfb0FFaDFKT1JRSVZoQnc3VDN4LThNTFN0NmNPNXp2cjc5S3JFYngxU2NrY3lyQjFrV3NJNHN5NlNQTUd2WFhDajFZeHctLWpWczBNZjFXVHIyZUpUcU4zOUgydDh3LTRRZldrWGRLWEF5N21wRDVhMDJQOHJmMExBV2VfNFRVVkpFY2U0TXRpREF3TTJiWEtESnd3eGo1VkVZaXZPTmRYWUhxRXBLa1RpNlZIOXFFdWxWX0Vway1tU19pRUxCTGN6TjRWeWJTdmh1X1FyUks2V1JmQlJQTjVXVnNNSk1nUzVjNFhwYWNtQmxfLVN2NzZ1VV9PRDFscHR3SGt3U2kyQUg3cDVSNUhPRlM3MHdOSEdXZk01QjRWeGRyMmxhQURqQ2JzSDRJOFdRQXRpd0NiY3JjbVp3cTBSSF9VSERab3ZZQ1VHa3lVZEVZbkNWZDd5bU9SdnljWjVwWXhHSGc4V2luNXd6NGFUOU91Y09odFF2TUYyeURCLVkwU1lER29BMmxPbGtGUEVxRUFlc01KaEkzTS1OQ0dzX3g0bjlhdi1uLWZ0dG9mSkR2VkEtU3Z4RnV4X2NlZlVqS0xLa3FmT2dOcDBUWkJaelE5U0g5UGdBRFJmQjhVdVdmb3RkaGFUT3p6N1JlMWJWc1B6NmNMUFVjZjV3ZE9FQWMxckVVYUZfaGNXWF9JYTU3WWxfVXBJdXRkbG5sVjhuWjNyZlZHczZ4QzVGWnA4bnhNT1dkOWVEeTMzNlgtUnNzWmNsNk1fRTFlcUhoNTFSRXZnTnFyM3ZNNnhUM2ktbDFpSkhQWUhHOEtzZzI4NC1tLUdhTmNCMkpaVmdlS2NfTV9BcWlNV045VERBeU9LM3Zweml3WE1xcllYNXhfcnFpRkE2ZTVqdVppSVNNajNyd0djNWI1LXQ4V0Z2LXI2Vy1XcElrenpOVmcyLVp1SlNLZkNoY3JpbGVzZjZVbUsyLU0zLWNDcWM5NzI1WmNpalNKMnVxMHZiRV9PdEZEVGJTSWpoenBXeHFGRU9EaUNMS1hwTFJ2VlNlU053UWNQVWM4MWp2WllsZHlZcTJGdUtQd3htUFZKd3drRkczSC1Hbjk5Y1ZkMm92TVRHdm1ZMWhrZUtUZHZodF9CRUdId0UyNkNYeG1uTE1RU2JlVGczRHFkVGpqbDZkZkFON28yX0w0S1NqUHFPWmUyRk1VRUhSSmw2SERfTUptc0VUcnlYX1FoQmpuUjJtSjJkbGtnVHp0MmxaLXl2bUtiaU9XN1k1Q0p5OGVBVE56dE5nWWRtVExqdloxVWkxUnRDM1I5Y3I3Tkphc1NZampoYUNqX0RWb3lCelhOSklvcmZySVZPMUFyZUE3WnRJV3JCNmdJZlI0ckFzUHRQZFUtVm5CMGtEc3hkbHdER0tCN25DREJKWURSaWlVMEpfc0w3c2NoZDkxV3FHOTNDMGJUMGFBNzFVNkc1dTZyb05NUk92MHR1RUdlSmFpNTdZREk2TXBoSFZsdjM4aVl2LWp5R3NBSkF0T2p5XzVoTExfS1F5U2E5THQ3N29KclpCUU9lR0dDdkU5TWhucXBRSEREMmFPSENWVjgya0RFSXU5NGNrMXFpWHJzS0Vob0wzX2Y2UzJZWE01ZnE5Wm1PNGEtcDNsMDZfUWZ1TkF0S21MdktBQ0x1UG1nanZKd3N4bmRZMFhIWkphc2dCN1Z0cHZQRXBLZFU0c0xKN29ISVZROXIxWDk3SXhkZEZxd2tKakh6XzcwZUhoRk5MLUJvS1YwX1Fjc2N0MUtTa0xKa3hlX1lXOVp4TVktZUNyS2VSR21ULUlvenpqNGpBSU0xdWFFUWgwc1o2RTZ3LS1yM1UxX21Sd3N6amR5LXN5SEpqakRadmg4Q3YyQk1oZVkxZngyTU9FRmNZdGJkV2hkUEx1ZGZfQ2R0aTd6Z21zRVlnLVhybnZhcndLQ3N2Z3VwbjdkdEdSUWxtNnJHUENiVHFiWHN1U3EyTmhGX29ZM2NFRTJoQjQ4cjJFTUFqU0VDVl9WdHpaRnZ1amNZbGxwYW5ETjF0bER4RjVTQllKVjRjUGFDdFpGWkdlTW00WlhMTkotVThoQ1h4U2JUNUg5cHlDYWEzR1BVSkR1ODFZWnBzN2tCaGNvRWZtY0RoU3I3Q1RIb0tnUHJyNnQtMy1WMUZKN3dUN21vYzhuMW9GYkZRc25yYUVwa3ZMb3RGNUEyUWFtV3lkMDhvZ3MwdzZadkRKMmU5aXZjWXJOTmJSZ2VISGt2SndmZ2Vkem1aS3hPaXpoaXJNcE9WTDQ0aW84VXAzM2poVzdYLUJWVm04UGdjUGJLeU1XbGJKcTFuU3dXTmYzZGNUWkxkWV9BX2pEMTZFcE91dENLZkM3bERCaVlsUUpxZ0tlM1A1eFpzNXJ4eVJ4c19KUTFQckVQb0pleVkzem1lQmhjckhDTzU2X3N0cUhHU3lZNTd4NFlNV0VESVFUWXZoOS1UZzVLc0NqRVVsZHlmbnNoWThLNmtiblJNTzlkUTFDU0ZBQ0VjWGl2QVk5bXdQU2oyM3o1eGJzS0pnTVVfRHF1YmNjN05SdGZpaHhoTEhpLVoyWklrajVyY1UyOG5iNDBVa1BQaTVsQ3J0OFl1UTN5d0c1bzRQaFpxakg5OUd0QVN0VVZFTGZOYkF0UWttaGdiUWU5aDJqLUNBdXI3bkdDV0ZoZ21McFdaY3ZkZzNBNXVBRTExc0k4dTdWN0RwWGZxdmxfaUdfZ2RESHE0X2FXNHdHdDJ2ZUVxQ3VaMFhkY3FaZ3YxcDNPbjVCbVhxZlNHZm9HUW1GX3ppY3c0QTZmUUE2a1ppb3h0dWstNncxcUJSMkNGRHQ5WF9qNFVjUkpwZ1dnakxqWEFVMUZoLVM0YVVVS3pmcDNwUWR1Nmk0bUEzTlJLS3U2a09sTlJzZjdTcHc4NHN3am51Qk5wTEVpdExlWTJrSGZsYV9fdnJwUF83c1M2bG8yYTRmMFlrWF9QYlEzVjBFNlBrcEtxYXZvcWlkVEl6U21tLW5tSDNCeG00V2xHOGVZNWhBM1dwN1pPQnMyeGQyY3RmRGVqVDlYblZsQ3gzM0lRbGV0QXJtQmpCZWpNZ3lfQUhKb0RhY0FNSTVsOFNxZXc2cTJuWU9NekVoTVlOdHVyT1VIejlwbUZzWTFRakppbkltWXpqY2YycFNfMVEtbjVTeGs5Y2tZMU1uWnF5V1cxR0xnMHNJcmFySVZJV0c3VHpBaXpYT1FpUE9zQUZLVk0xTHY3Nkxucm5lQTE4M2JHTlRBR3d2clZLS0h2TFd3SFprcUZMdzlSTGM0QW94Z1MyRUhpWkJxUVFxaXdtR2syblZ4eTJqRjhGdk5RMUlvZk1IQ1BqR1gyVmpqcWsydTJrblFCblh4WjVRdmQzdUl6Y3I2OGpSUnFmTk9qYlFRTEViUWREaEFXVjg3SHkyWjZ2M2Rnc2YxbmxYTG5KV3ZjZklXb2NrWlhtVDFibFNQLVdVZkplam9RMXlUSWtYWGNDaW90WXR6T3ZTMHlDaWtzYWFhM2hZa2hvcUxFVjZSRjRGdDQzQjZMMVNsOUVMLXhKNC1BOWhjR1l3RkZLN0U5bzhJRWdpMWFHMUluZmZyTnEzOEdjUW9kQjNvVkxzUmQzSnQzUGRxSjFYTmwyamhlUGxPcm5DRXVXbFFuay1scEhOYVVEdW1pek1YZFptbjdWamhNODNUNUZkdlMyT3d2a2Vva2pyVzhMeDZpckdpdkowUS1oeDc4OVFNclMzVTd1bmFfRzUyeTlxWGtZZV9sWURuY0szLUV2czBhdFpnUGRUWWdvbEZIZHB1SDlFWkN5TTNyS1ZZUUtPTHZ6c3NXbUtOUDdYelcteGx1d0F0VzNxZ3ZPQmYxQlJVQ2VMOXFPSlZKeUY4Z2xmb0M5X0NpR25BXzR1Z3RhRXVfUlhTYTZPNjRMaGVZcFdwZjVXYmVHN3NnakIyWVZYUnZ4clE0U1hoVnprbUZLWVNEcnF2SWJxOFA4SDQtZkxGb1JFR0JDOENnRWRJYkxwYXpjMzhNNVZWcllyUm9ISEphOWNEb1pFM1VaTFhma2tHSVN3YmlUMmZVMG5xaGpQODB6YVU5c3h2QkJtX1NOTk1jODNhVDZFTTlwZWpNeGhfd2pjSXJKeno5b0NMbDBCWHBMdlZhczF4T19ORWFDVk5waVBSZldaT2YxZ2xUemZGTDhueFFRZHJabmtiNjVaM0xfXzNDMWE4czNHZGFGc25HeVpOczQ2MnhRTW9ONkl4U2R3a2RiSXpHZEZnYlc2VFVIU3lJWk14dW91UHdLdUt2czF3QlRsYzZRczVYbDRHZXQ4YVpMc3ZLeHZPMnpIOE91WWtsbkMwUmgzQzRHOERDYzc5RGVZQzQwcmxLS0ZaM3ZrN0hLRl9aYWZzdXBCOXpMNmlQdjc0ZlhrbHNWY2s5WXhmanVoTm02R1VDSHc2ZmpFU0NKT1p2THZGa1RFbVY5bUQxNURlbGtHaUZZb2JpWG9jMFJSN09XWjU4Z3BjZ25kZkluMjJkbDFFYUtlUVVxT1NYMFk1N0FBLXF5OEJNc3pYOHhzQ1lkOVhqMzdPbUlJZE55VHJBT1RRckIwQ0NaTDdpY3lWOVhzR0I1bTd5U0prSDJOMmZCWGpGTmJHNnFUbW1NR0c2amVoR3dIZjctY252eDJCVXlQYUhmLWhjenJOSU1Ca2w4STJVSHVmVHJCOVRDbF9jbTVfSGFxYWgxajZTekZtMGUyQ3NkOVJTUmowTEFpSU1EM2ZYaHo0SDVNU01qRGtVSmYwMWhwLUotNHl1Szh6MUpidjdhYjVEYTVqZmpBUmRHR05KUDdMYlV2SzUtekxMYjV1MTlWUUlPMHRJa1IyVHNZd0R0X2pIQmNlaUdGbHRXTUpDaUhwNGNkaWFZNDlmTVE2d2pEN2hWampqRWFSVWp1MmpPdjM5WHhBY2hFRWxJZWFieUZjbFpEVVFpUVN0MURqLVBEalluSmU5aFExelhaRUcwaGk4aWp0bFVKREg4Y1RvOEFMUm56S1AzeEF5V0c0LXV0TVNLSHVEVHdGYmhMUGwxYzRQam1nV2FnOG1fWnUtOGw4VTllVVRjbDkxb3A5M0FQbUp2V3N1bHdtQjRFaHMtNzdPYldoVXdLUm5YeTdYcXN1S29GcGRZbnJiaTI1SlNjUnVYeThDTjFqOGpKY3VxTnRLUU9obFlxY1J5R0FJVmk0UVJQYkJSM3lKSkUxTjdWeGdfVUE1RzdYc0FpQnVrcGxieXdqdXFoY2Z0VUZYeFdIelB3V2hEQlBsQTdVRjJIR2N1UkQ3N2hjUjMzbHJUV3NxVXhUOHlaeEFxeDg5QjMtbDdkMjB0VThvTnRXbHZONzNZdlZZbGZvdzZXMEpYa2U1YWlPS0U0RFhFZWp6Y20xbkdyQ0FCaXNSb19FRkk3ZU1ORXR4QUthU1lYbXpYa1hVZ3ZuRzBOYkp3clozWnMyWU45MkRaTEg4THZGd01xc0xzUzQ5LXBGcHBJTjRGM3BKRVB2a043Rk0xRmNLRXU5UnRhdUY1TlhWSGNCZVFSV1dadkpBVWJ5eTBpRmJMS1djVkROY1B4WVVBTVIxNlpOTnAzZzE5TWwyTUxybGR2V1JXMnVoUWZYZC10QWxCeTREekxpQi1nQkVGVkZUR0dxVi1SMGdYVHlZWHNLLUhoVnVLQ1g4S19SeWZVM2VmX0Q2OFhEblpqcHpNeVJyekxwY1FWcFdRZ1daR1diT3c1Sm1CU0VyLXVPOVpqaGIwREhKUzZXWDg3RVRxZk5SVnV6SXFGMlBQb1Nrd2lDQXNFeWk2RmQwclVjTHhwN2NkTWpMVGJGNVRWMFdvRnp0MWdTRF9ZZTJLMFVWSFpPRGxIZ2NmT2g3QnIxVFZ6U3JMaVd3bnotZjhtMWluV28xMms2bkRxYldpRm1oYW91YlBuVFdUOUtxbDhjRmRYRUpXVUpvRVJYYjU1MEkxV2kwUFV3cS1fR3FPSmUwSmZxcWVFV2FJbmtfa2pxWU9qQ2hJbkF1WUZZU0FJUEJpQXNkb2w1NFpZRDFJbWxlOHZlLVNTZmtDNEZ4azh4dWVtcUxqclh4UU5YN3RKSDRaYlp3UnZkemp4LVM4eXcybGpCV3pvcGluTDNUaVgzTG9YN3N5eE9Ldjl4NHhCMlNGZUxNcWJIVmpaeUJxSzlLQUQ2QnRPMjFqWENGWW95aUdQU3FtYndhb2FJYUFIUDJLbHZocjV5WWx3VU41WWYzOFBJZE40YXlwdnllbHJJellTa1N1Um8wUWRWZGhnUlQwamxpVEduTlNjd0RsMjV3QlhpYnZSdjhXWFhtdGZyZk11d05vMkd4VkpJY3Z6cTNFVDJ4RnNlRWFES3FwYkNUSjM1MXQxaHZyUnYyek90M2JKaWd4SmVFUEpZZ254alJldXhaa0hPOEdWcmNoSmpwc1R1QTU2TktoWWE5VVZzb1p5UGppTkRhT1Nxd0x2NEhQOWRZTzFEdHBaWGlNOGtDU0ctQ0dudEM4WW9tdzlIYUNibFZ1c1V5d2xNd3kyTDZmcU1HVkpaeHhQNDhiWkpTNXUyOXVSY3pCV0pqdTEyQ2g4VU4wNFRDQ1I5bTNuZHdpM29iUHJYel9yTHNNY0hTUnhWMDdXN0tCbmxjSW51c0VjdWFSZXJLRWZPa21TY3REUnI2c3AzNU02X0lMNDZTbDUtamxCRWxZQ0xiTkxmaWZYTEV1N0tnQ3NjTGZBbWtuT3gtdUNveFNneE0wMEQwR3ZLQ1hBMVJ5Nm1VUjhib0o5TjBBNkVCOHRHUFpYb1Fpc0VIQ2EzUHRIc2s2V2o3d3RCQ2U4SmZIcVJ6LUJCbGFPVElKS050U3lpZ1ROajc1WkdhODVfRU1wRGJ5X2lUX3d4WTl5aTY0MFVYYzViYWFnTGVzUzNZNWJ1eFlSLUpfWlhhczQtZXVLOUNNaEJ1MEhtbEctd3hOLXdwSjd0ZlJOM1IxZDhTRnV1TlNPeE8wV1FMelM0R0lPT2hIMXlIRlNNd2JJZWFNRjI5bVpoclQxNGJtTGwza05KTDlSdmx2UXRfZUd1SHNneW5CZndSQTVVME41dkpsRTNyZ2FZaHNCZ09rLVBDQy1Id1pUMXFSTjdCT2JBWmZQbnhTNkU1TFVRSjFYMXR3a2ZBamFQTmxpd0N3Ry05RmpkWkVSdldVQzcwZ3pad2k3eXZWME0zRFFTcjlDeFlWLWI5bjA2czhyRlBXem82bk9lc0xvVXcydDNYRG9MNlFqREppbHdzbjczX05CQXhrbkkxZU1UWFdCektlcHNuUGxid1NrdTRkdlJDTDM1MlI0OEw0TlFZNEFMa3J4cGhweGRxZWpmR1k0Y3c3Zk1MaVRCVFIyNGZFaWRqR1NQSG9sQ3ZLa1JqcHJvdXM1eDlLaHRSNW1kZWppQ3BnZFROa0RwQXVpYXpfUW9UNFp4eERtTE5ZaDZLclMxelFGM0lieVVWbl8zYWgxRXhFOEN6b1lGY3BrYmhOWEZmVU1GUGxpX1BILWpjQTlWWHA4YmxUS0IxbmQ4ckpPZGZ2X2JOTUNab0UwanlYUlY5dnFrbkl4VWhjM3VsQmQ5a1ZXTW40T0I1ZUg0OHhfY3ExRGxXTXI0RjhpVjMzdGotcFlmS3g5Um1oTk9UcUhObjVpelQ0TUtCR1I0MU5zYjB3Zm1Ia09tMG9fbXpFQUtwNk5uNWZsZXBDY1h0bXI4YV82ZEV4YjVrRUxmbmtzQ1I4ZXBzd3Q3NTJ5NFJoeHp2M1BMd1htaEc2ZXNoUmp2VzE1amcyTjV3R2FqNFBhMmRnRGRGVXMyM3ZXYm5vcGp4UDcxcy1uOVZuWGEtSC1hTFpSUzd3Nlo5bElKaGNXSHJnNzg3RkI4M0pHOGotbzROMUZMZnBTNER4dktSLU1vd3RlRGpBbzJtZ0JhbG42MHdnMTB3VGxwVjdBc29QdzEtUUMxV1FWcDdQRGZCbENadXhqRU5tQ01GLXZ0NWFBVVJnVlotT2JiemFLLTZUeXJ0eXJBWVNxX2lUbHpmNEk5LWl4LURCR1RGZVN6bDEtTEppakVBUWtHaURVdkdiUWhsQkZDTkZkbWRsUEc3bGgwUUxiS21GbXFydG5iV083RDkwaE82SUtvZXhPM0JFcU8teEZtOW9ZdktJYVRBdEFhX1lHRkFmQ2pYaHNHdk9uUC1aWHJNWlVmaDlJWTFLLWt4TnlkMHVCRDJjVmxqMlJJYkc2MkdxdGRLQlBoTmQyUzVMYnd6SDNQNnRWa3NEeFdtR1kyRjN5dGc5LTRaSDUxMTh4bG9CZjRNRi0xRmZYdVQwVE43Z3piLVBLNGtxbEpabXZsTFNPVkQxVEl2ZzNzZnUzaDJsZm0yYjR0Uy1ISTJzdWs2cXdlZlRkOFpDbU40QlJfYzZOSU1NOXh5NUNYamJMRG9meVNQZ21qcGVtcEtDZ1VtSFQ4eDVuTzJKamNjZENxNlNwLTdveWJ5cTlGem9sTXNNMkdueUF2RmVOcHJkTko0dHRxNWpmNFR3SFM1cEVVUnd6TThNQ25jMEx1MkZRRFJVMEJiNkxsTFo4Y0dWenIwdEc1c0xRR1hSVjltbWIyazlBNGU4aUxIZkdVZTN2eDVLMFN3Y0FLNzlnMC1VbDV5R21kVHpVa3BVUE8yQ05jTk9MUHhGUGJVbFQ3M3htWjFrckdBQkRkNUtyR0tQUWUtYUZhVWpMLXFWZGlrcWhhcWVaaHR1MGZMb05oNFRPbjliVzdSdkFOSmhTMi1aRTdJd0JrR1RPZ0VQZnZhNnA3Q29FOGF1ejNIdlExQnRPVDBxVVVFeWszSlhzN2E0Ul9XSDBTaDJHLU8xZ1dmT1lWeUw1WHpvZXlqMldzQU5CamlFT05kVDFLZDV2MXUyVXJXUkF1WXpSVDZ0cjAwZVZkb2VvdWNMLTMtSTVpN2w0QTdQOVE0YklJTXVJNDZTWVRVNHNHMDRycW5ySVVHQjRQcDEteWFJa1lvTTJBMFFTeVVaaURwTmRrWldpUTRaTGxKQmNTTHBoS3NOaGFDb2dwMTZFbF95VzUwMllJQXBybjZqcVQwd2NOWWU2Z2pndFNGSF9KNTgzeEp0dVpFSXJSbFNPQ1poN19RRFVESkliMGE4Z3pNQVJZa1FEbnVoV2w0RGJ6eGU4eWR4Y2ZmbGh0MU1sZkxhemRnMGc4WnJ2UGpONWp2UkFoN1drMTZGdGRWdWR3N1lpSFBhU0hrSUtsUG5HcjJmWFY5M2lwSHhoSFNoaEU4bTRfUVptZXhiN05SVFczU2FfcUhDWHZEc1p3a1ZaQmN1Y0xNb0dRb0oyUHVTZmFpWXJNSVpXMUpFTTh6LXNZZnhTZG9Ka0hYSWxCbmlDZ3NyUGtIcFZHVC1QZ1NEZ09nX3Fsd09EMHFzY0VWamdMWGozdFhvcFNCMVhMb25mVW4tSE5MTzZnVkt3Mml1WVBjcWFrbGRkZ2J3UTdtaVFLSVlPWjVrYjVZQlVSTmhXY3BnbnZzbGhqQ1QtVy03RlBBRmtxaU1jblFsZ1ByUnJNMi01RGlZR0R1Vjh1Z2pEUmMtbmRaQmxZQlRZc0lyUUdSRXVFbjByU29XeUtpUkVMVzZRSENua1RLSDQ2dTBHVzRVRTUyZEVqR19ObkR1dWo4Skd1VXM0MGIteVJzTUVHRV95NTc4b1BIdzhLNnhXNjNWVE4zNnU2ZHg2WWtUXzRLR0NLeVY4OHByb053V1d0SWdrNU93NURQV2xieVNQU2QtNWsyWXBZcHBhUk5RdUFIUmlVbDA1THc1YWEtbElRVVE4a0dEMTJ0TXlhTHh0d3NaOXB0OUlDZksxRmd1M1dWamZHMGxqYlpYX2djUzZkdTlvOEMzZW1xTlJLQTJUa1NoNlQ1Y3dPbjFqU0JjQXQ1T0lLcldkSENuMXhQOV9CQi1SUndpSEg2eFVCVnJuY0Z5X3JHSmZTT3AzUUJpWGtrdEo4NVM1QUszT2ZkbGt5dW1la3labk5iUEtMU0dxOE4xSDFKMjRNWjFwZDNxek1WdHNWZEc0MWFmMTg5REU3N19wZ2pLcHA5MzRBQUpfOTd4Z1d3dzM1U2w2eVhWNEk2ai1CYnFfWjkxSFphWTZybzRNZWtRTktvZFh6bVFSYjZBdUhyLXl6YnhnX1J0eUtOWlVRcmdqRG5tLUVQMEl1SThiMWNJdmhOUjhXams5b1FJNklKaUk3X0NGX25hSGhJc0Zaay10Z0tkbXI0cFp0b0pYS1ZSV3dQcFlhcldKZ0tQdXh3bmRlVVJTRkc1UkVQamY3RnBFZ1YybkJUcFVvYWlFQnFodVdWX1FoTXZ5Z2hWaVUzbE5fODA0NlZ4UDNtNDV3SF9Fc25HWFN5ZjIzRTZ2YldOLWtCVkdKeXAtaXFVUVd2YVdUSFlVWG45Z05sZFBRM2R4MUo5RXB2QUlJei1wbEY0eXNfMWNsTURVWlZGVm1qTHRUTVBMOVJQdE44NHVyTWVsUDNqekRkMjlCcEZ1RlBXSGc0aURjTTVOeWEtVHJQdDRGNENaU3VDWHpSSTBwUmJzZTR4WktQaXpwbVJ0dVQtLV80UVlGczFhdGZMN1d2TVdCemdua0lUSXVJQzl3R0NaSVowUW1NZXN3RndxTkk2d2lqVkdCemM1WmZQY3J1dzUzUDRhbm1HXzNhbm1WVG5HdVZpeHBHRzZnVmxFb0haaHQzYVAzbzdXSFR0eFM2RkJCQmZTRmlOVXBXVFVmWWppSHNNby1VY0NpQ2xobXE1X2R4aXptSVpGWEprczlmb1UtZWZNMjFtWDMtaHlmQWxjRHlEQktRNWtWRHFMY25VYXBVQVpWOU9HR1U4Z0hMTVdsWHM4OUFSTlpXakpqQmM2UXVSMWJ6bThETHZsd2c0TUY3S3BYeFpadmNnWmotV2VPVTIyTUpqcVVEUHdqN2I2bE1ycFV2RFR0VWpRU2REcVpDR3c5S0RJSmxvYWluU1RMUDdncHRvVnRPUk1xZXl3RlZfUG9Yd0lheEdNSUpZU1MxOU9EemphVlZtTWVuQldRR0FYazJlV3ZVeW4yTzBPdzlsdXdPME9NZDY4cnFhUWVVVEdBdWFIcFh0dzNMQ3YyOXRPbHg4Zl9jQUwxaEctUWZfMUZrV21aVXFxQVlMcnFYZk9CemRSblFleHhZbVhxU0EwMHV1UmhhSFhnRi1iLXJyVVhkZXlaWDVVSHRaNzJjVFU4bDQxcVJUa1lmVXctRG52MlBETmZBc3NybDFWeWhXcFN1ZmtyZVl3N0IybWx4U0d3QWxJSWFrNHpoZV9lbjdwMWJDMVFndUF6TlRkeGxDOWhfdVhQelhabDhqbTZHc1lOMW00QzdxMmQ5Zk00UlBkVHhjNUNLZ3gwS3BTR3ZjR3Nla0NTODJ6UHVGTWhpaGduSXNpMzVtWUhONkdCWHU2dkR5VXVEcEtSaXR1VE1PX3dWWU9lMnpQWnpaTmpDN3pvS1pqNS1PSFlTRmtEbEI5S3AtR2c0SE9RZU5QbGhmRHNoN09BUU5URUp6WDB4UHR0ejBkOUQzMjBLeldzRXNmbWRBbHR1R1FUcDZyY1E4SERjYURjM01oNkZ0dEJHOEN3cDR0UndmQ213bTVJd29VN25jNUdGUGN0NFIzQkFXWDBEMEtQX2dhOHRxcEdDMDc3d1o4Rlp5d2JSWkdRc1lLQktoMGlCZkFJNVhnaWczTGRmWnRDcVc4Wld4NGhFNHkwSWNpbnBjQlZ3TWZNVlkzZ2R1aTF2Qm1qUGJqVXlHMm1INHhZZlZvRkZfbGJLOVZkVWhNX3lUejhNYS1UcDVFTzJ4NlVHMHdUcHdzVU4xblFUcVE1WktYdktPTHNmb3BqYXY4bW1oRTh5aGtBRTlOVUt1NkRuRmdFSzNNaGhXMk5oMDlXTG94UFUxYWJEbE9iN3ZjaXV0WjIxb18tT3YtcHo1UkNja1BxRFFGam9iamRKR1psQzc0MjBBdER6bGRTenA1NEVLdjVqOFk1YlB0dDdtN0JqcTJjNXJRRS1Pd0RKc3NhYk9mblpCS2I3RmtDT05BUW9zSlZ6Zjc4N2VRaG5TNWNLM1U3OTQyZ2NtVmdWLTk2Nlc2Rjc3Wk1uNGJianRuSnBCdEE2a1RveUNmMXNRaXFwcUtXWkdGbkg5SUYtWERXN1JTOGVZUlVHcVlObmxyN05zSWJFdklTMFYxTXRXUDZxMGV1WUpBN1JPeDJaYkF0TDAydlRNTzdUQWUzeHFjQzlxNmFYUGlhRzQwU0RXdnZUMHpFbkppUWFlMkRBMmtZNU5aemg3em51MFdvR2ZCZWViSjd6RkNuOGVBWnhMeURhQXJaZmlVZUt1WWxLeUhRaURTemxXaE5hVnVfaThVUmpCU0M3ZW1hVjU4eXMzZjJlaTVSeUhqaXd5TjZOM2VGWEdqZ1pLVjVVdHRyekRTWHFRN0haRWd1Yzd5enNRaTVPX3h5Q2RGeXN6ckdDeDZNWjF6RGlfZ3p5QWUxd0w4M01SSEJZQ2hTWE9mVmNEVl81NGJqSWcyaHoxbzJ5cnU0YnV0QTR3b25QbnRtMnVjSDVPYmZ3TlgtYzZnZ3hCS2hJMWRHS01qNEV6U0lBUFpFUElQRUFZR1g2eVRCcU9rTnhwTU95cTlwRjNuaXFJd0RMRU13d1ZJMEUwclVBUU92Vkd1VXJDODNMSjV3eHRNa3NjVkg1SUVPM3V6NnpiR1hPR1NzcnA1Wmd2OXVCaGJMY3ZWamM2QllOS0lxa0p4SkY5bkZ6MnhDd2lWckhLX0xLOEhfR2dGdTFOWGplam1QU2FCTng2cnkyWDluVDgwR21HeGYzQnpYZVVia2ZvbTVPRTItbDhKYzltdDBMZUFqeEs5Z2l6OWJkQ296RWRHeEZXUldaX1NlWXgwaExEY2NiQVlkM0liM1ppZTRjNnoxVjJaTlpiMGRTQ3NjN2VrQzJMbzBYQ3AzQ1RZT2NVN2ZrUzhibmRhcEJCbndCR19wbXJLbEVCN1lEdnVBdF93VTNwRjdncnAwR1RGXzJRUEdOUXdyNmtRZE5aelJLM05rYktMQ3AzZ1FqYWxQdHkwRThaU2dGVmVGcGI1ZWs5VWg2WjctSEVjVV9jM3dpWEc0UzNOVFU4UUROQ0U2eEd3MHFzNHJudTl3bFJ3cXp4RnhjMHFvV21XREZrbUhGbWFlXzY5Q0NQZFZjXzlJNGZFcmtrVmgydVVNZHViVllfTWFDWlpDelJPUEQ4NThORTBzbmNJZWwzUWFORFBRdzM5TWQ1cFlHQUJBZUNrUWxhTzI0SXRmRjJlOWhJV3Q5cG8wZlJtcDF2dm95QVoyb0Fidms2ajZ5SmV0MVBTNmF4c1M3bmVSclpKS2k0eTgzbXUyU2VmYVJSOXBqZ2Z2TU9Fc1J1ZHlJSWM0WmxfMTF5YzJOQlJHUVJJakZyb0Y4LW5wQ0kzMTBPNHpIbGpmNmhhM1JRdkxBbGtGTU8zanh5YUdqU0g4OTJYU1JfYk1xREQ2U2V3TlBSVHRkMW8xdjdleFNhODFJc3pnUWNzSjVoT1RINGZLMlNCX2M2bk5XSkFkVFA1SkwxcGhVc05qVjh3RG5OTFM5T0NfZXVqc3dzS21QaEh2MFh3bmV5T3kxTXUzcTl6ZWlqcTJsWUd6bXlkMW1OOGF4SVd1ZE9JVktrQVoybnY5Tl9uVkl5Sk5ESGhiLU4wUlhuUnJGbWpwczljdVB4MFE0Qjh5em92WmJOYW9zdE92ejZJNEZYaWRQRlA4MEFJV3ozdFV0bnRyX0RNU2FMTmtESTEtZVllS3p4RFdLYXNMRGJhUUh4a1JENWtNUU9BNXduWlVXb0xUYXpQQVY0SFR1NWMtX0pBNjZMY3Ata20yckhoeVZRZTdoYXd5a0RMTU5PSVcyMk5DOU5aNzFaSHFMaGtfUU12eTVVeERlUFNOT2tGQ1dBNXJyYjY1ZDRJQlZhTzdVV3J3TlMzOE91VWlzN2tOSzVkWkFPTTE5YTZWWDZZSEl4b2ZONk1YV0NLU2hwMWhFa09na1lWNFZ0cGJYZkFhMUxSc2Z3R1RlZkdkUTJKS3p0dy1EZHR3WkMwSUtERjBlV1hqZUs1TzBjU05VZmVNNXFwOTJNLW9nVGxodjNSMjlQaGdydU9qVlhmSEFCbVF6LU0wVVNZaTJZeUJiaGl6LU1INmw4VE0zUWdsZ0dBQk01OHB3c1M1QVZZeDJrZHdhbkI0QXVWbnphay0xd2xFSnZxUE1tY1Z3ZWZEY2xIRmVQUlBHRHRQd3FnempwX0toNExfa0dhZ2ZTMHVYVnNTOW5waVNydjEyZDNyYnBKZ29XZFhuS1pLNENnMERuVDA2d0ZQNEg5dWtYdmR3bWVweWtUVEUyblZ0MXAteFNaZzFsQ3NxVmhLQ1VVTjdrR0FLLVN1LXRRY0daWkNuZHlfLUwyZXdGUWplTTl0N1dhYzNtT0VFbEMxWTdlOTZLakdOLTduZWlERzU2VWNHTDRwX0dBZDVjN2Nna2p0WEZqOTNaRWRoRjc5bDZHR2ZZS2tYZGdEWld0U0paNUVyZ0RQRDJCRnhQejR0WVJpcl9LOXZnb2R5OU04NDd2N0JnTy1sbFJadXo2RVFnNlRORndlcGdmd0dUZGJ2akNSNnN1LXpIU1pEOWs5MlNFWjNPX2RHZHRRemlfTG9KYk9XeVJFM3FBWjQzcGFhQ2NPdmoxb2RNek1JaEtfQTE4SkhOeDB2Tm5QcnZYSUxGRWY0Q2dZME5wX0tnQTd2ajBWdllrcmxOdTNrd2lMd3EzSE5CQVY4VTF1TTU0UVZBdDRSTmpDbWJuQVJ6d0V0MW0zMTcxeFVqdDI4T0VRMS1aY282emc5VXN5SVBzLWdqczVDWTUxSF9kVTJ2WjR2cUI4VUJfeHBYcTZaOHZxeDlzQnRjc01vUjFscGs5UW9DUkExQXp5ZDl0UERqT25Eb0o4VXdIUDZrcUljS3N5Q1JqenlUMUwweW5XVDkyMDBWaWtzUDhMNU9fVFIwWEdfaDhtc2MxQmVsbWVLQjQyR3V2ZlhXZ0ZIVnQ3c1NndW45X0lRakZhRUQyZjZvWW5qOXNGNWJ3cGdaZk5odkdqSnNaSEJmUlBRWVMwaGZLM05CMldyeGU0OGhiQXVzcTJZUkxpSmM2WXpONTJQcXlvaURVS3lRWHRKMEJYZTk1bGxrdWY0YWtqcGdTVk9OeWxSajY0R25TS1d5VWI2TmhtdWJSNnRGdTFqWHhkOHFHdDViWFRiVEw0b3lodWRHQW9EcHotSTZ0al9vVmd4TVluaEJsR1pOZGtPdU8wODZkb1UydkJEcHk3LXNMNkVZS2FJLXRhRW9sSUFFVzd1N09pZFZzQVRmakZKNXd4RFZ4cTBydDdCeDQxWmRHTlozV0lQRGs1OFRoakZBdUtWSUd0X1FrTC1MaDZFWktkbnMxMjJqVFJ5Wk1RRjRYQ2JxRGc3R1lLdVpzSVdOdWpWMUtmV2pLUEZxQjczemVVTzNpSTVpMEFxX3VFeDgtTzdreUFPUkk1ZjN4T1RjSnMzWGxfb2sxNFB1TXh6d1NBRzA1VzhUR21XNDUzWG9oNVVHQWdUcWU0Z1kxWjYtUzhrS1RRTU16c3lKdkpjX3Q1dUdMTFpjSjluOVlQWURpaGZ6VS1IRzFOczV6ZktORDl5TnpQd1QxNVduTWlVc0Fkd29yYS1kUFBINVZKaGUzaHNHODllb0VlRkQ3UENUaEdEVFl1MWRJS256ZldVMHFCT2hRSFVQLV9kQlhPOHJVUkI2VHNaNGNaTHF3Qnp3RkFzemRWdXhMa3FieThVdkp4Z3NwSkJrUjAyVDRTb3ZmM2k4X3pZV1NkdE5TMDdqcVlROHRpbXZVU04tWVY4U3N3ZndlakdyZktiSjFKd0Z0OFY5Mmw2S3l5a2laT05QMV94QlYxM3Y4Z2lBSm44YWZlYlptd1BFVkZfdkd6bTZOcV9aa3VJakk1eFNUY3ZZY25pbkc5eGZaYWhhMXdiZU13RnMxSTJfSk9raVJfSE5BUE1hT3o5cFVmT0NfRmM4NlVaSi1KV0E4SFpaRGpvXzRMRjF3MTBBMVBxV01GRTd1MlVfenk5eHdoVU9wYy1YdVJsSGhaNE1GSTA5QlM1NEZ1RlhOR3p1bjNSU2ZFcHdYeUlkRGktbVNUalExdnN1c2FwMHdrTll6bDNLSjZNSW1Bcjg4Z2otdXRyRDRKS3BiUVhxVkt6YVVhQU1Wc1YwZzZjYXNXVzVSUXRrSmxZbDlISUhJV1dZVzNFc1VLQ2VyQ0ZnUUdrbEtaYjhRbmlUSmtfamZyd3dmcHFMdzBRVVc4RGJTUXFLTlRsYnM5NDBCWER6ZXlaNWNaY3JqZzE0bDBQdzE0Njl1eFNpZERBb2tvZklma1paNFI0WkJSMTFGaVpaUGdOUzJLbm5heWZXWkVlTjVfMmhkTF9aTDdkS0ozNDU4SGNyXzR6VWljemRTQWRvbVF0RjJuUVJjbzlPYnBnN3p1Sm44M05UMEhGczJydDJfX0VXa01oa0JlWnBUdEtTc3F5bGhBSDhYQklkYWQxY043eExSajg2VmpzOTlrc00ycmh2MWlEc2lvLWJmdjZsTklvdnZUQUdQUUhsZG1WLUxZRm16czhKMGNrOWwwYlJHYkZ4bGViMi0zTVlzcVIzYkEwcXQ3ZlRMZEVQb0dQanhWcDE2Z1g0eVJiRjEwdnFaRlo5V3lxdzRrN0QyOGdURmlLOWlSaDdoQlVjdTVXUGM5Y092NVpaSXVKNDk0VVh3ZDlKSDNfMnNWYnpTdmppUUxzczluSlRjeVBMMjdlR0xzcGROVXM1WGhITl9JVHgxc0hXRXNnQmRzNmpEX2YwSlJJNWpZS09DRkpJb2Vjd2pkOU1LLTJFemE2SDAzNHh0X0ZCTmRMT0xNSHRiMi16am96MVpzNi1Rb09SZTFWOFdSMFJuck9VNW5nYklORmlHeTVJUG9nb25oQW54WGNzQUxVLUR3dDZoU2JfUHBWZXo4R1JTYS1iR09FSEprVk1qTVVnTnVDel8tMzRDb3BveUwyLU5sNVdjRkcxS1p6VDhaVnVBQWtNTEN0d0lxZTNhRDhZa3BXck5DMjRiYUxydE1iYzNaWXZ3NkdMQXdiMmg2S2tPV0g5UEhmVkhkcm9pVXN3MFRDMTlTdlQya3AwbldzQ0dKYXRkeE51MGNoRUJscDhBZUZ2TG1WSVl0OGZNUkMta1JSd0pNNEp3MkpMMW9FUkVDUTRURXczdklCZXVnNHIyTENtNXcyVkJObGtBVFJPZkNGQ3lXS2tSbzdJRUhzUUVNQU5KLUR0LVJCX1k1NExoV0lJZUtYeEpCbEU5dmJ5LUhtTzBJUzFoangwRWVtTkNnUktSTEItRlRJclp1WFF4QXM5czZjYjN4c3hNYm8xcG1GZTFsZ1lVaExmTnpmdnF0UmVET3loMkR4Z1FWWVpSeE9FcnlKOVFuWjVlZFgxODlLT1VsanN6YzZpOUw0NHVWWmJmRDJBTVY3UU10b3NXZ1AxRmNmT2Zwa21wUjFWcjBaTUZ1dVhGQzZqamlRbEtacUo2bjFkcXlmTmEwSS01NGk1aEZSa3pRXzJKZEZCU1VWYlctV1ZmNEcyZzFwN3BFX28teFVJRTdlaEVEQ0JWTVU4Wmh6MDZmT2dyYVRFUW15MGxoRldRdFF6eFc4S2IwTWhXWDJ4UGlhb1djWGtKdXh5NGFhMUdLdGRIV2ZqOTFrQVRlb2lOejBVWDBEM1h4RW5BaW1rQnc4bmhLQXgtRUo3LWtXcWVNcmR3d1VyUXRTTnl3NWlFdUQ1Q3V6eXM3azhqWHFTUWlaQUc1d3BfSmNMUUtJajhaY2VLYjd4Q3ZBOWdXZ0ZsRGdOTVYyNU1VMmhKTUxIYWUwUnZ6V3U5Rk13MUF5NHVvY0t0dVItWnQwdS1mcE50Um5pS05uYjhjN1hiX21qTkZ3X1hXakRTRnRDNzl4X1hsLWdUekdnaUZMUnFSd3RCNldJb054TG9FSzVlVENmbjhQRElPenU4MzVFVFlOQlRuNmFHQU90b3lUai0zbGtmMVQzNTU0VnJaSjB1azV0R0NRby1GVTdoUlNsSmpXemRPX3pOdmpEOXB4SzQwMGdsT0lwX0w3d2Q4dkl5YmdZZTBKM1FReTVYQVZCakhsdVhsX2p0WVpfcTkxWEhiVnJGNWZNTy13NEd3T0tNNXlwNXlpYkhZVWdacmlsN1A1NnJJbVFMSEZvMnpnc1k2N2d4V19fTU1YelJSbTJBUGlrd21YSTdUWm1KNFk4S2dxYmZiT3VUTmpWRjdjTW1QS2VPeklNLV82Rl9tcFZ6cUladnBpQ0Y0M3IyaVd4Q01BWWM2WVc0dGtBVWlydXpFQndlMlk5QVplNjN0cUd0bUNvRmxOQXBvZVUwMHVOQUdFM25NWmhsdzdydE54Z1hZS0ZDQnBWTkoxUnhsVjAtLS1Nc01YWlRsUGJJR3dpNE96MzZSYVJtV3RFUkZKVktNUGwtZXBJdnZ6ZUhCaWp5NFpLQVJWb2prOFk3QjFCbGluNW9tdDIxandCdzA5T3pXVG1mQ2hLblB3bjVPZlFHSzItRTNSRmhOZnByM0JzUEpkUHloRVpsNnRlOHE2UXZqalExWm0zcGxqbzYtSktQenprb1J2N0ZweXhsTlQ0a2RQQlBpcWljcXFTY3BhemtoMC1pSkhBQlVZQUpDSEYwQ2stMXduUTlvdmFEZjJKMGI0RHFBNm52M1ZIOEp1V1I3UHJzemUxOXBEYjFkVHZERFg3dkhKR1RkVklHbzZCOFMxaFBtdl8ybURoOTVlc2pKcF9ySnZPUTBBYU1iRkdnc0ZPX05MVTVTRS1LbjVZeTdzQzJEZzF1Q2ppT0VDTkdEMVFVSV9NLUNqT05BbkJHQ1JKYUE0b1FLVUZDVzdNZEdlMWRYWGZ2bm1WUVJoZW4tSk5MaHc3T05LT2tndHBKc21JSWYtV3htcVB2aHh2bXcyV1VwY05Kdl9mXzh2Wmo2dkZsOWo3bTBqQVA0VDNlWmF5ajNNUVJ5dVFnb29UVnBWNXRpWW5aNFVDS2VMOXlhc25BTS1SYnRlSkJOY0RyRXJjU2tOXzhjeFFuUDBwQWZCa0VTRXZnNGk5ODVvd1RrRFp3OE9WQTBjRy1EMXo2ckdXbWVpcnlTcXdvWlg2ZEFocEpvUFlvdWtVdEZqdW9OMTlIam5PLWc0bFZzQXhnbTUtWUhmdWt0azlmVnF3SzgtdXNvVUNiMEJ4ZVd1STJIbTBuY3RUS0RLZGUzc18xOUxFcWJZdGJ0R29YWDRGZDZlanB0NjZCSmY1ckpPZkpmUzRlU0RnMDh4NU8yZ0V0VjBoajNMMjFETzc0UmNNSUlSTGxzZDhqU1JxRVpBS3MwWlNLS0pEN0VWNlNVbG4wbEszWWlVN2VDVFUybUhKUnlwY1lGcll4S1VFZUhXU3NFa2NnX2FKT3lna3ljNDV3SDk3SmtWZGVfUkJScU5hcVhWNGNMc0JDVUhOTmRRU2s5M0tRbHZuVUNmclR6WVZOR3FzalVXck1maWQ3Q2l5WVFWYXFXZ1ZVaElyb0R2OGRTc243Ui1MTkt5OE9UaERweVdfZ3BLZjZUeHBsZlVrWkJBZG4yU1RGczZvY0xrc0QwQVMtb2hsM1VOOFlLcG0xaVBCZGROYlVOcTBhM3pWaU8ySDNndFVmZlA0NFBZUlBBb3Fsd0VoWjJqUnlhS3N1RkNLbjlweG4xVE54Nks0TnAwRGNMT3pPTThscnRpQ0hQMGJSM0dDSzItYzJHV0lqdF9YamdZRkxLdFFJOW5OY3dUdUNOb2NnSDZQdF9DZ2VDS1FiOFFDa2M5TF9PcVNBMzItcWNBLUJGTnBxNEkzSndhXzQ2bHRSWTF5RFZhaTBnLTVpaTZPd3FQYTI1Ylp5d3FRSjJoWmk3R1JIQlZGSklCNUxWclZHV0hlakNyd09BNFFiUVBnNGVOZm53elNQaUM3VHoxVTJhTUdMWlRHc0lFVXlQS2xGM093MV9IY0RmWWRQaWtlT2RXeVRkTEdjcGs3RkJRcHJLN01xNnZabHBMOGFFZTBDRENuQTFKYTdra21aOFVNVHZBOHo0WE41OHYyTHNRQnZoSFljNl9xNEwwa0huZnpmNlgtemRFbXVodUdzRDlQbW9iUFBZVll0czZWMUpETWdNeGNPb3Bxb0RBaDdMWC1hWmpXdUQ2YkVmai1kN3ZXNTFPcGdTTHl5WUpNcVRmZ1cwa3R6NzFlSkFkOUVseFQ5TDhtOTlySVF4ZnlQSXVnWUw1dG1kajNqaEFZdGxHOENYT0o4ZXJaZVcwRFZaWE9URUg1cmxuOTZZb05peTFManAyaEU1cXVwZzNIUG4teVl5Rnh0YjBqQVd3VjVlVE12VjluRlhhQlB3WlBJUV9KSmVvZ1ZzM2Jhb0pZRXJWY0J2X0lKWEUyV01xNTgzQmphMUlnQVN0U1VYSWtmeFJIWC04SnFTOWxvbzI2NDM3d1ZQWWV4ZHFhT21mMnpKbGwtRDJVeGQzM3BmWFRhRXFDcmh0OV9GZE51NXpiejh6RzY3d1F0ZEdEckxQU2JQU3R5cmNPUHZjYW5ESWJXN2p1UkoxNG51T1hWTGJCOUVoSVgyMlVqblRndjZKV1VjN2h2LVowN3BIRDJhbHVlRGN6VUp0TFRNWGp6WE12eTVFcHNFUkZwY1k0TVpRUXdVbUJ1NkRsbW9mbmJRc3JLVmJWZzhwel9fOHN4VVBvME45em8wS3hUcGNHOVdYYmd2RkRLc0NtUHJhUm5NNTd2NUU3NkVPamY1b3lRWi1fU0dwLTk4ajRWYmJGTlhhcFV3aVNyUkRKZnNQdmwzNktTVFVsZGJ6YlpXa1MzUUVKdnloRktMVjJHVnlpamNfQUFOWjNTTmNyZEtGMy14S2JwYmdTanZ3b2FuQjJFV2xPSWM3N3o4THFOeHNZekJUYkpyN2EtM3Y4ckpVelZxdmNYT3hva3lwV1RDS1p1dWNVVjQ5X3EyRzNWYTJRQnYwVEI2YmZGMWdoUmFOYUUzeVhmRHFIYnBGQndkWUoxcEFyVko4SWNDa0czU3ZvM0VKbzVVeTFlajBGdDR4S2FheWNqbkJMekpydDdRM2hTWWFaNldnb0xKQTlNaEJMNk53VkNOYzJTdDhENjN0elhVMXR1c3BzYkVLSWRvVGI2aHp6RkFHQVAxTE9aUnNaMkw1UnVrUkJnVlAwbDFRX3ZKUkROb1ZhQzdOUkJCallIZUU1Z3NPcWZPTG52cXphLVhreXpvYWZwdlowUGJqUGtGYkpSVXBPaTcwb2NhdVhhbWhHbGFSc0NKM1RpcURTZXdRanNaRE1Lc044M2F2bUJBRUt2SnFzcXo5UjNqNEVaWUxmVzZSRENlaGJUMk5WYzNGbG83TXBDenQ0dlgxX2lyZGF4YldLSzlfMW1BbDdVVmJUS2FwZW5TVXdjR1VHN1RQdGJUbjkxV2l1RnR5MkZJdFBZcHMzNzBIQ2t3RV9EMk1iN1dqa2QzNlVOZ2pYdW1yNUhCR2t3TGxNWC1aMWZfUThTMDk3SDl2UTNZUnlrTy1GYnhZNm9GdU1OTHd6bmdVemo2MTF2RnNVa3pEdnRMRHlKSnREYlZVWnUzd2RZRElEYkdwNmZjRVFSS2ExMnFidVUyY0RWUmtka0Qyb0JEQXhxRHJMY2M5cjJXMjlRNm1VM2tBMHRfc3FLeGROUkRhZk9oTVZEaG0yS2NfTU5YdUdYeWdaM0huakgtSzhEcHJESVRHbHRuRmR1UjZRTWJoYURlLVVlb1FsMVdyOGozVmZ1NHdTaXR3N0p5ZjRNMkRJX0hjNjBSMldpaE1UODhlTzY1SXBMbUhsd19YcllvTV9OUHRMSjJpbHBGT3oxTTlBbHlxX28tOHZfcWh3cmU2MTVFeGpSbTdPRm10Vkkxc0pKTG0yUHFUeXFqbXJ3ZkdBUlJWWDJ3aFpoa0VnVC1LdmpWUllVNnNFR3hYakxZcDVVM2pxTm1RWUNOZzhZRXpuV1JQU3Y5MWlLN0ExTkpRZDlKOVozYnBTaFhheDVuanp1Y1JsY1NpS0x3Zm5DV3BIdnZGX1BDRkNzU1FWYWpZZnhOQ2hjNUlDbE9oeWY1a1dtOUxQZFh3UVU3OU9FUzR4Q0kwZXdKa2lKLTc1ZnZFSlF6SXNyX3M2anBNN0xfZEkxeDVxQU9HMHBvRERaMWZCcVczUHBhVzZfcUdzUHFndHR0amNhaVhweUZQZXA2UW1mSlhXbTNTQkNOQnBOVmZXeWNQaWRySlktRkZkenlpTGlGdEg1Yy1KZFJpZWc2TXN3NVpka1JGOUtqSzdzQU5RQXhqWU1Ncm83dHdTWlpaREYyRWRITC1TaVI5X2sweDJnSWpXR2h4YVpwX1ByVV9pNVlESVhaZ2RTLXV3VGY5VWVvZzc4eWxMclJlYVViOENiSUo3SThsZW9KekgtRDZRSmI1V2s0OExQT25zci1tYlMtVzJIYVNrMWhPZGVhRExnN05hSlJCWnpoMUZ1bGZZc21GR1c4bVZNMmZwemU1eVdaWDNCUnJpaEdTalhrRzlZRFE3QXpSdFpxSEM2ODQ0VG1UR2RmMTN4MnF5d0NOOUg1eGI5QTNIQ3hGTUYxTkVwRHdJd2tQRzFVbVk5dVRETE5hYVg1ZUk5RnRhci1mZVBXZzBleHMxcUVpcXVCYzlyREdxMHY0b3FxamN4OFQ3azIzd2JCX0x3Ykp2cGQ3a19abUdxTmN5d1NYb3pCd2VXLURCb3Zkd2tYT2RBdkdNczVUSmhaUkEzZHY0MXBQb25KdF9zbW5rX2FqZjJQRnJlS2VTaERsZnctWDlfcFRkREx4eDUtU05VUzlaTktSTlcwaTRMWmo0blJWcmUyUHBtT0FOUGUtMnM0aU1KN3MxamNmc3ZJMVNZZmxBaWNfY2lNdVgyUGgxRTB2MXBmemhIZ0diQm5zVDNDdkVudWFTN1FTVVgtNUhseGRfRDkycXFkblNCQndjYzJOTkFmMUIxYjNnT0k4VDlKbWtoa0EyNWN6MWRIdlVHUGJMTmpHNkRIMDlmRGlpaHhQUWRScEF1QTMyOVlfUnJ2dTUtZlVleXlHdXlCVkctemlROFE4NTFlZm9TX1EtWGdvdVNGWXRvajl3U2VTYVhyNk42b2R5WWJfM1FLcVZ4ZkRHaWJqd1dEOWwzaW5YUzJDRjdSM2d6dkpsczhGeDRDZWc0T1ViMG41eE90NXM2Sm1JN3JQckFsdFF2Zk9oODgzblVxTWFMWWR2R2hCeG5sdjVucWpfaDZGaVlSS0NJMmNua1o3N0o3encyd0hYM3M5Y3hKM0hJbEwxWVcwd05fbmFrMGFrNXdCYUsyajFxdkNPaC1BQm9zcEU1dFFaWlhyTUlMQWlsNjVrVmY1S2NUQ0o4cTJIUkk2bHh4bXBlbGpUc2xUS1BRN1dGUjRiOWR0YzE0SUZ6Y2xtZkVKVHVhWHM3UHlSZnpSODN5dlJ5TmhMTXZFYnZOcVlyTjhVc1hCaVdITE1xMi05RmVuZHdpaGd5SVB2Vm51ZTg1bEI3eWN5Q3JBZkVfLXUzWlRjOGRwLXVNWEk1a3VJczZISGRHTHFIYUJ2cS1pZHlxMGdzelRxNmdyTDFOdEFVendSMFF1dERfOEJnQlU0YmowVFhZSFYwTGs4Nl9sUkFtUW9sdERCejdqV2d6MmFjbVg3Z0lqTDJEcDRJNUR3WmFOcXNyaE0wMUFjbnRaazZEWlVDX2puV0t4VW05bWZ3Q0NXN18zSWRtOThPSmJ6STVtQ2h4OXdiZ181WUdaT2Z4cDVEbVZ3a05La01wbTExay1DY1BDSnZudzlIaVdURGNSMm1Kb1FSRlhJa0FKWWNUbVIyMDB6RmNmanJfV1FhWi1sbzh5MFU1SElaTDJ0Und1YWp0X2tNMU5OcV85c2lmQ3B2UFRQVWF6cUQ5czd6aGlfdFlHbzhHb0dKckJ3QmJ6N0JNTmVSVXpBWHlqSnlabHFiTUVaLTZaR0YwaDdPcWRJcU5IZkpqc3FPcUNaQngzV0JnSzM2aDQyU0hOTm5WWWh0blJwRDlDNVd0YWJIZmxUVFVMd1N4TnFJMUI5V0s1Mm91OFNZbEQ0VXJKTTBmQTltcmRKNkl0LVp0S1N4d01yamxOZ01tMmVjREs4MUNYS2s1RjFTMzd6MThNREtTU0ZPWTVSVkFUS0V4Zk9iczhtX1JGWVdlMHJlbHZZNnV4NW13eEllTmpHenk4M3NnUFZYcUlJeVRUZW4yOUstdkVoZTNfdWVwcG5vRHB1X0l2VXhESnF6U3JvUnRRaWNKRDNEcTUtZEo2TFU0VnlwU2JvUGczcll6ZmY4d0Y5Tm02d3FJcVdycjAyM21WX25NY1BReENaa3dzVGZmNXE1c3R3c04yMC1BaHJqQWVyckczZ08xUnBVdm9FTDVfVlFFWHpSYjc0QmxKMWpYc3NDN2VCOHBOU3o5a0trUHRXNTY3OW5xR1o0OFQ3ZldWNXhqd2JGMlU2U2tDOFVPMXdNLWd0UHVRZkFlVFVoV2xnT2Rfc2I0SldkcGw4WkwxMDQwSjNwcjR1NS1PSTVpWnhVUExJTzJ0eF9BNmtuQmJQRGwyUU1RX2lUSHJaUl9WYXRkUkVqX05xc0t1Yzk5TzRqQnhqRjZnbFE4WFBTc0JlRVprYUhZYllVN0NVSUxFaXhzb1IwOURTLWd1MDNwX0g3SzlBNDZrYVNHaDVBeXB6Vm56b21iVmV0U3JSb2l1U2VZMlp6RWtqbHNveG9BUUoxUE5YWHZvVDVSSzJqeVRfLUp4dTVrdkZ6ZnJ4UGxKVzRrNk10RTZ6MFlWalpMMEo2dk1iTXdoa3RfbHhTLTNEWjluU1dPSEkySHVSYlA0aDVPRXhNb0JLOEIxQmgtUVRjNy1hVHZycmNUbGt0cVNwSVdEc0daVkZFMEY0X0JsSzFEUGlpOHp4Q0FVX2tHVDg2U0xNSWMwc1VvMjl3TTczX0x2QjRtX1A2bmVvWjBYQjRIQU5aOWxLeWsxalZITUJsNTBpeURPMVFNMzZLd2hhX2NEWTJWME83Y05UVTBOeTQzaGoxZEVQSUNBckYyMUNUNDR3WDJHNDduS3g4djk3bFk1UUVtbUNQZldIZGdXWVBkc3JGT2FPb3didFV2cHlnV2dCRG0ydUFJZk9tVFl3OHpreEsyY3JtYXBvaTRiZlZVVkRpZlJYUk9HVWg2Q3hTS1lONjczUzJMS3Jmeng2cllZY0Z6S2xaWnFMZzgyelVXTmVCZEFyZ21MQVhsR1FSNVVHWGV4UjJ2YWU0aDRjZVozcWYwalB1Mkhfdk1STVlvc3NzRlRRNENrRFFKRGFzQVp1TkFqQjJsNnh5Q0JlOUtnTlhEeGlSeUFOaUdKYTlySmZ0TWdwSXBCcnlDbUZCdFNYd1ZtUEFyOFV3cndlQzlYdTlncWkxNmc5MVpOY05WMXhXbUZIUDc1akxaemxNSmNreDFKd05CNHRSY3BhMzRqNUhtQW1yenJrcE9zbExyLVBJX19DeG5fVGwxcHhTSzl3aE52UEI3d1BCa283TzRKVGNITWUySUx0cURlWWRFSFozQTFFQjdVZ1ZxMVNjSHl3S2V0d01pWm03dGN5djFpbkVEbVNqTU43ZmgxUzBmcXpDV2V4NmxETXBwR2FyNGh2MG5XSHhvNnRwcEFKbEtjMUZIOGFZYkpod3ZXTTJEcTVvTUd3Y2dFR3FySk1WTWFkQXdySC1YN2tBOXloMFQ3TFR4cE9NdjBDcXM2QzczeXAtd3VqcG1NYzhkam5PWlV0TjBkZ0xnck9EeUpiTHNrZ2g3MEFQRktnSm5RckRPR3VtZFpMcUE1U0YzWVJIMDJ6YTJNUEQzRHQyQW1QM2pJMkdBNnJGZ3hiajFMNDJBZ0txcWlEb3FJd2hLYWtVbHkyNmdfV2ltUENCbXBoV0plbWNfVFczczUxMjdWamxhdlJndFpsVHFjdWlEcUF5YnBNeEJaeVl3ZUF2cWU3azhnRlNLSGVVeC13QVJmWVE4VGpyUEIyWmV0ZTNEZ0J3cEktWE00cUNlN2FpcGtlSjQwdFZDT2dQWFN4eHY0TEF3aGxvelhnc3k4aUZMWmw3bV9vY19Hb0V0ZGw3c21uV0c3amltV0xsT2lzR2ctYUxEUktDWTZDVGpyQkxkNTJSYnBZYTJZd01KTDdnLUlub3ZyRDBBbFhVcmlrb21nckRvc3pnVDJmRV9mRXZPVGpacDBKeDk2Uno4MTE2X1JKeXkwaXhlS3Fqcm9jMnVTOWtpRk82Y2tSTm1xTDU1azV0WEpfajA1TXFnWTl4Wm8xMTV6YUk1MUl3bWs1d2ZWR1FMUzJfRWRzblJyQjF2ZlRseWFqUnp2VWxRWWNCVXhJTDJHa29udkZJcWg5aVUzUnZyM1FDSTd4b0doU21ubTJHNW8zcjNDc2hudFAweVctbnp1WjNFRXI1QkRNX1V1MUREVE93NHZtd0h5YkJhbm10b2tZM3VvZmVCRDllWFBCRm1LTzlnMFNlM0xGcEdfZEpSNDI5LW5ZcFc0aFRNVG1WNzdDQWF2anNyRG5pdGVHc0dKNGVWdFdjbnBHRllDTXNaS29oRURTdkpjYlpwWExOaU00RmhaVTBJTzRCQlNrV0ZNZ3JvRldLNE8yQXJpSkpSaFd3WXFXbzhvRzdFVEhqY1dWV2d6cFpDWDluVWVpMXZydlJyT1pyR25FdTVPU2R2eHRWS1lzY2xqNzBEaFVWX3hCa1ZlRnpzNWZEQ3JFM081MVlTMmxndGRnT3ZBWVV1VU5seGRWdGdwd2oxUVZNS0U3V0d5aDZkMHNyRUdHS0tIcUJkM0EwUUhNbTR5cE93a1dES1U1VHFDZXJmTjlubENqaUhnb2NCUDBZU0IyTnctY1BLUmhZdWxBN213NlRYN3ZJQjVDelV0Slp6dlFyMzVCdkNOQUpfMXdQb0x5Yl9FeW9BcTJibDNLamxZNzZwR29TeHFERDRENGpic3ZFa1JVTlhleUYzNHRISThWd1J5Y1IyeVNCZUpBaWpuVUxUdFYyQlM2U0NCcWFfc3d6Vk5QMHdzd1pfSUhlRGVWU3BsMHdOZFVQNzZqa3ZxWUFQTEJqVUttNTBLcmcyRW1BdS1YUlZDeWZaWjBhME9oczJvZ2hVc21iaXJGRkJTUXNSUVcwR0xDU2FtQVMxYmd2d1dseUhOS2hEcjNxdXRIaEVnUFdyR09YVmNMWEl1UWxiS1NkWEhyS2hiNjN0Nml3alQ4M1lyc2ZYazd6MWVCNHJ2MkNxMUlMWlk5ZFNUYUEtNHI5RVZnbjJqZ3l6RkpOWjJRcHBtNHFuNlJoTHplUGh6ZXRPd2UzckhmZzlLZ2RCZkR5R0RCQ0JUX2pqYk9ZOVdmNzJkVXFwdkRqV3UxSGNKR19OUVJMdDZDempjNDZYYzg3QUxpQmFhY3BkUkdQVTc1T0VMSzRTNEdKU3dmX2t6bWVCYmhhZEZDNTNldkVqeHZydHdLcDlUTTRMOExpaGM4RlA0YU80cjBncTFTTUROQ0lqMWZtdGkyVlNqT3FwTHdPT3VxckpqUEYwVXVpMW5LdGx2TmFXSUlqZ3VUbEVGOXNXYThSWmRVU0xpM0drcFZscDZHWXJKdFQ1aG5mbXhKWE8tWEpRemhyNVBVdDZEak9hTjR1VUJsTkdwWUxpbDRHQk0yZmNMYVBOQm9keEJiZnBZSXk5bFVyZkY2TnNueWJKZE1Wd25mQTRycFBNR3N2UGk0bFZsMUlSREZkODVzdTZBdVdhVncwb3phbWR2MTVEczZCaERZekp6S0RoRHJ0c1pibllVYlJIWkplNXRLdUZ0eVFsVFI2UVdIdnRHc2oyREVsUnI4VWRsNTlrdmg2Y0xEbmZkM19jWUcybkFmRlNTbFBFMjc2dWx1VlJQY0xjQk55NnkydkF3N2NEekVqNmpzVTkyU01hZXpjb0RuTV9WU3VPVGhzeC12RXh2OUVmZ1J0MVk1dF9CbDRMeTNjRnROOTV4cmRyQzRGbEJRSTkxbWZBUDNaX196SnJaVHRRZzBIY3VISUlyZko0WTl5RTRzdUNWUGJUNjByd1Vna294RklXMWFwcllwSWp3S1NocDJsSFBGMF85TEk5TlR5YjN0bmRBR05uRkJoQy16VFVWOTZHY0hTdVpoOWoxYzFiZldoajZPUFFfR0xUYVVFYzl2NkhlTmYwVHJVZFFhdWduNDJqU01YVXRwMFg4aEFoaEl1RHZsb21kdXQxRW94UTMtTXdCbFI2QmlqSlJKcUw2UWt4dExRUl9OQTAwWjFRV3NDOVd5MkpyX1d2VEp3YjFZTEpOcWtHT2lndVZ5WUF6TjRzbW83OE9PX09iNXJzbUFxVkZpeHp5MFZSZlJIWjZaVkNnRk9RZ1RUNDVNNThxUjdkVmlCcFNWNnViM21yS0dBbmJPNGtGRlZKYlBlS2hzVGl2eE5FWnpxbGNRbVYtbHNveldreFFta002Y3gzcHk3RGljeFlyWnRCc203Tm9VSlB3WFdSU3BhNkZVWG5LSWdJVV9kUmZxbGpCamVVUENKdngxRGZhYXh1QXNRQ1Iycl9uQWJKRFluWTJCTWRURXVVV3pRdTAxdDFNNEVJUmE2QWFOT2luYzZtdnNHX2tfY2pzM3BSN1Nsb1l3djlqSUMtYm5hb2xZVEdvbHZ1ajFETlFlSURKd0RzUlltZXhYQWVTbzBPTVpkTURaOXpRT1lmXzNIaFlOcndqTHFUSV9DSk5NMEJ0ZzJGb3ZIUV81MWpWOFFyNF9tcUx6OVdZVlJqc2tLWmlpMjF3b19vZE9EUnA5TS1ES0ZZcU5jdlloSEVHcjBUbG1PbUpadkJ1U19Mb3J0MGVYUm5IZzV1MDZMRy11SG5TZWlDRFF3MWhkYkJyY292WDhUek00YzFubGJnWnFhZlJWNHJpQVFPTDU1Q3pyNU9YdXhLd2dEMFozZ1RfMWJRUmgtZkV2ZUlHQ2JTWlkyOUUweXM2b0F4N2JVSThSd3hya0pGU0xlRlVqamxnQzJGd2VVQ21uTVN3aFJudFpCVjBKSVlMU0E3NXdCbTBmMm55eTU2Tl9JY0RhLVFMQ2tNX254MzJlaDl0Y0M3ZENIYzV5VkMwRmJfSlVwX1BLUHZ6cDRWRmdZU0x5eUNYNDFUSmE0S0hVVzJiYXJjY1RWWWJoS0VfRWtDajdmSGhLSE4zUXVyaWg2ajhyUkNjQ0FFMC04bVJ5MWN3ZlA2eTFBREZSZkU0c0J0cnp5Z3ozbTZ3Vk5DUjVzdlZ3eFdzajVPcy16Y21VQ2VTc19TMFlJeEp5SEg2SGdkUUZ2cFpJcnl4eXRGTlNlUVFiWURuLVhlQlpnc0JwS2ZxTlZhVGJUTVVYOVB2TXFtRnFhR2tZa0FVZHc1RFVXaExtcGJvNnlYS2pnNW5RNkg0NHFhUzhqRmpSQ3hPNXFZNE04WXFIbHotalZGMmVNVnRKd0JTNWNIT2N2OGFxLVFOOUxWOE1hXzN2cktZSElOWV8xTkRwemFzTUhfZlJLSnQyTE9KX19wZl9MMTVZc2NJWnhKWHNDTUxlVU9WdHBYaUxpYzlOcEJNbUtpYnRvMDIyUExqQ2RHNFViQWZSMEtDN3FUYS1GanczaVpsUjBZNDV0YzhYN2hrSEJvcFRudjZvQUE0WnFDdDE4VEkxR2ZaaEdzajg1UFlCTEdEX2tvSjZHRjJUYm5kOUR5UFEyVW5Ib1AzNUJNdk01dzdNN0hPVkREOVNvNllkSW1IYkVkbUduODhnWkJxSHc1OUVZaXdYQUpRRlBhdFlYQ3JTTnlzV3JKV0s3ampUWGRBMGFqcEJ0ZVlWMm45Nlo5c0xHNEtROEJNNUVObUVtd3RZYXBpQzNwZDE3M3lncG5aZ2lueUNXdGFUajBqZXRRNXRSRWFXWG8xb1dhWmluVEkzenI4VjNhTGM5VFBzMklKRTFqdlVlM1lRVGlqR1piU09hdVdQWEFLblFKOHdOZC1RMURtRDlEYUFKdXJWNjlyQ01wU0cxLVNZSmNfbXVZS2pGNnpNdnlKWWtVR2cyRV9UOW5vbWNkTVE0WnpUa2pWa29JUWk0RTRuRWZkVmZHODBNQ3N5TVNfVTNYem14Tzltd252Y2ViQlR4SjViRUhZWG43SlBkbWxjTlQzd2RKOTh4aEg3RG83MVZfMGtwTWpVZFAtaFVxbU1vbWZKSjZsRXBkNmNocE1PaHBrTm04RkZfNGQ4NGlaMUt2VmNQbDAyN2VwaWNPNURHWF9KM0FESkcwc3NzU0s5akM0d0E2ZDRZQllsS09qWTI3a0lMYnRscmtsV0kwak5OM3pOVUxHZlVEWFE2a0phbGVWOUJ3WmVwU3RfTHUzMjlzcW0yZFNTeU04QV9aZGFqT2FZeWo3MDVBZ2J2b3ExVXY4V21COWl6bFdtOWFvR05zcWVnVWxPNTBxMjBkUExRZGM0SnZxWGRiRFZZckdfYlJiakRVZkZXTE9hYV9TdGlxaVAxakFsbV95M195c1VSRXNxbHZ0QVZqQVFHM1ktN2FTVF9BOHY2OGl0YzlCM01oMlhfVnNSODhnTURUcnVFSUhKaGNXdXc0SVZaS0hPaXdIM2tWMnhsWWZYSmxBSTZUUTJDcDd2TVdxbHNlSFh3bmFpWkZGYkdNeDRJV3I2WlNjYTV1ZWVYQlZsY3A0S09aR3Y3SkMwRTF4SlBESWZtOGVXV2M5SnJqMkpSajlBaXc3a18zR1VKXzA3LU8yVUVaLXBoTUpkSUFERmxqdFZSSGtWQllYdEhnazZPZ083bHl4eEpUc2RMUlM5Nkh0STZUSTNmZDRfdkhsOU9tNC14ZkJjTXZ1bzRnRDAwTVdoRmpqZnR2Yl9pWW5qUkJ1bUR6YlZvcEQ2YUppZlRWNHpxTHBxdmQ2eFQzZU5wYktnMGJaRzRrOGlVRkwyQ193S1Q1UkJ0d1c1OW1kdlpjUndfT01GcVZ2Xzh2S3Bwc2xLX21Md2ZUNzZLY29CeDBPY3pyMTY1elVYX1JKeGZoSGo0dXZaQldVRU4zb3lmVk5Vck5QRXZuTDJYanVFUHkwYTJpT1RwRXVlWWQzZDFZazgyWHluZ3MyVG9NRm1ZQnlXSXg4NjJsMXNsVmYzenpncURJeFNYOFlEdXV4TEVSel9oWDRUM19YOFNER3NUM3RTaU1WbFRtQ1FLeFN2V29TWklBekY1T0taWlN5b2JkUnRiNE1wN3c1aFoxT3hGUXBZTVV3bFZXNDJreUtRRmRuQU80WTM3dVFWZ2JHNDJzTEVPdjdXZ25TOWo0UmlaMi0ySWlWc0xHdnlxT19hQVRiUm1Zb0NLc0lhbFhRR3JYYkM1d0ZhVWFMWEsyNGJBY2czT0VQdEhhcGs3QTZlVVFGZzctaU1Ubm9mREZLZ0diTDN5bkdqdGFYZkdpcWpvOWxsdmlwcFAzVURSSFFKazB5ZjlCZllvT2sxa0l3M2U5ZlFWbGU4WGFXN0pCZG1Ea3RqakN3TWF5Nk5jSjh1UFYyWDlGYW1tdlhVd20wMnJjZzZkYVFjd2NpV1RPdkUtTkxELWM3Tl9hcXZkNkRYT2Y1Unp6RHZFZlo0NjFkVmdZQnVfZDhld3hJQWtON3lhUDYxQWtma0dGV2c3WEtLRVVscDlHbDJLeHdPMTAyUFN4ZnhUMXRab3B0QU55X3JqRFdmdUk3UkRjVVhvUjFjYTJjNld3VDh6dkJpMC1wSEpQZFpNYVQwRS0tck9Ha1p4WW4xUVRzUnVLWC1iazdmYWh1N0lKSlQ1VzlqYnpTM0dsbWt3eFpBbkEzaG9ZVk1KaEpzLTdfR3ZJNk90eEhTVnpCNFY4X1VvWmlQN1RTdGY4ODBZdzZkYlQ4WGk4dWVaVEIxcWpDYUJmcW0xR3pHMjYtd0VDWmdaU0FmVGZobHRwLVZNeFBRdW9sZ28yRnpQXzZ3aWI0LURxTFZVMVpTOWh2X3luRFZVUkQwQlR3RmF3TG9xaG9XWm9NUlNQV3pSVkRJak8ycnA2UXc3SlJCdHBER1FJNzRnMDVHbkU1WVVFNnd1S2kta0sxOGluUGNjc3haRjRwbG5QVTFObTB5dFpvTGZPMnY0UjkzNFAzOTBHRWVLZW1GdG0xQ0pYNWI0d2hTemdNNVVxNS1tUWRCdkxJSTNkM1pDazk3bFVMVzhmTnp5azJ5Wm00UEl0YzFlRWx6X0VVRHlESUo2eXloUkItZktoeXFwemlsNlZndTNXX20wSWUzSGJtNndpblZlVTNEbWExX1RCQWx4T3g5NXhkTW04M0NlLWlxcVMtRjhuZUJreUtzaUs1MFFEdndDaW5TY213S1FvMzhEeXZ4RzBoejRMQU43UGtodjBDV0JkZFVYVktMaGIzRm5xSUItYVVCaUNYeWZSVV9VWW1fZDY3ay11bTFIS2phdndEV3FENlJxU3k0YmdIZWlpTnVfc3o5aGV0R2ozWTJMX1dVNWsxWDlVY0ItV09CTTdTNHN4TWV0eUNyaVZRZG1OVG83bG1oQXVWbmF3TjhEdHdBY25GV1dfQk1mZC11YUREMWJubExDVGxPSGNrcEVhblJQRFRlLTlhX0owbEwtam5iNFl4TmhLRGdnZlRRa3JjbUlCOE9kcjNDZE92X2ZNQlNZRFVmcHVwWmk1Nko3TDRXeU9VMXZ6VDBoMjJNWlRPNmMtRTk2TnpNQ25hRkcxekw1XzAzWXVwRDFrOEpyMVFiRXEzVGE5NG5ickdfUU04UVV0a1hxS19qZ05WZkpNbVc2ekR1TEw5emc0RElKV2tQYTNMM1JBQlRlOHlLaFFKdEVzelpOWjBtdEN0Y1ptVGFwWVI5NXh6VTFhT25NLUhMV3p2UFlSTmRhVjE5VGFCWXhjQkN4TzV0VEpBQlRWUm92eVAzaEdwY2k0eGtzcDV0dHRCZ1B5dXF5U2VoVEt4M3NReGJ5YUxTbUJ4RTdObVZWa2N5dGxjU2lLLUJxb1FKQ25LUmxWUENwVjdDTVlmdV9xeF90VFBtNU9xc2tMQ04tbktrU1pPUDJvUWQ4REZQTk9hbEI3VFg5VlJoUHJtb0pZNTZhd3ZSSmZKV3pvU1ZESGd5S2FLREF1b2Z2bVhxemdvVUk4V1Z0SVQwVXdTVXFVVDE0SWNSSG1BVmZwNkZhMUFKaFd6YlNBUHVtd08wMWRXcTNTYUFPSFJObkdjSWx5aGVUTlVVY3FBZG1Nb1p3SHQ3VUhUMUlQS3VYeWtKRHo2R253eWJ0VzZSYU1MVFNEWV9faXlwSWItVUNUOFJrRHVfZ0h0WWctODVrdWQ1ckxfNm56alAzb2dVUGF6RWxWNUw1ZjI4c2g1eFFTNnNvWkhoc0d3V2xNbHJJNGVISUJWOWlKLUt3MV9DMkxsTmFDREM1S0g2OWhHUDBPTElGNzJBSVNVTG1KY3B3N3l3MEhQWHZaRG50OHBLQmwwLUtUWGdpem8taHI2czJXQjdrbkJCSVp3eVZVZGFrWDRJWHUxVkhUQWIwdDNzUzIzaUFRcXhMRWk1dXJUWEZCd0ppNVlyMXNVcTdDSVpGV1dzSG1xb3hVU1lkWlp5aVIzbEVxUWpnbTVvQS1ROUh6LU5Iei1iYlpNSWRIaldkS3BZV1Z0eGhQYWRzNkdMUEN2ek1pU0dXWTYtaUVxaXp6RzR0TzhZaWo2S3d5RmcwbUNrN3QyVnpueUxFV3ZnRTQ1NWh6TlBwaDBTSE1WQlhmMEJLOGpNdmJObzdhY3E2ZlBiUTBQYTE0X0paMks5c2xONWxLdUw1X1hKSkRqZktoSjExZHlzbGRoak9FSTdJSXkybS0zVVE5cmRBNFV1aWV3QzZLUnQ3Mk10aDRiMVBQQ0hoWUp6aVdYcGJKZUpSM20wQnZQVFFMWnpyZzVNem4xT3FKZ29VQ0ptYllBWkxTS3RQY0s5d2cteGlVZGlBamxsSG9kUF9XM3JEYVVtcGlQdUNGdzJ6Y252SDBCSHgyQnhZbVRGRmRXV3FxU3ZEY3FhTHVwallGMEZsUTgyRGI2akRDcExHa3lBVTFjTmhrc3BmUTE5MHA3RjFDSUJoWVRvR2tZQUQ4cUFCUVBZV2ZnZnRGWFo5akd1LTc2bmJldHlBNXFWbGNJdUhoeE1BWlJ1VlVlSnZUWXQ2MS1USkdFaFJ6eVRDUFJvNngyNzJyZzUzR2c2N3NGa0xyRXdzR3NrWEZMTWk0ZmxtQjA1Vk5ybGNveHhxWHFrT2RMeEduUDBTazU3UjhfX1FUMzAxR054MW9fYUNLZ0dQY1E4YlJRaVRka2dHYkwyc0phNEVFbTlOVzVxWHNVSmo5NG5VZlBqdjV0YlBXUHA5MUVLM24wQkhfM3lpMTZLYVZQMmUyUEdiNmZuOWxqYUV5SkU0ZEZxeFBmQjBvRnB1TDl3RVFCTGJQQkVoMUx6LWRXUVRrdVNYS2t4aFJJWEJyLW8yT0VXTmNZdS1LY0JFeUVfYmFlNURQNFA3NTZZNC1ZaWtqN2U3SkllYWNuel9JUG9aTnZuNGxZS2EybW1wbHhXVzcydWhhbHFJRXVCeDRCVGE4M1ppMXBtQzFoZHdYX2ZUNGxDVkpNVy1vcEVrZmNDb1FRbU0zQ0wwRUJ5WmZadTRRcjdWbmthOURCeGxOU2hEM0QyMlZXUmtrMGswdzI0LWV5dzdoc0lsbmhUN3Y2bnNuQndUYkFka3RidThENkRRVEgzZXFvUEZPYXFaOEJoRWJ4dWU1M2x4UnBtZFZxenl5Qm5HUXRBSmg4cXBSWlJ4d2hIZHl0ZkRwZFh0WnZ6WXVaOUlDYzR2eUk2bFE4SGlQclRQQlhjT3haeHVqNTdjX2NqMEF0Q0NQb2ZrNWJrVk1CUGotX3BYM0U0eUVxZWt0UjBvVThuUTFHNXRPb09oTzVtbUdiX3EyTGVXZEJTTjA5OFVfQTAyNTNPTjBvTENLVXF6eFR1WW1pY0ptbDdyODI3OUZHNmdhUVIzRTNLcDRuMXFXOWpreENveHE5NVRTdnc5VlAwYzFYUVM2NWdzdUV6M2VWMndZdmsyT3ZUNS1zZmxuam1xclppRDUta2Jjd3Jya2t5SXZRc0tuZ2QyRlNQbmItdVF6MnBsd3VmNURSUzBKRTk1c3RYQmpGYlVkdGc4dkN6aUozcHM5QTJUck9vcXdlb1kwRTFhS0tfVmZrRGpacTI1eFJwYWJOUnN2MXpnYWNWZmJpQ05yVmtOZUd6dW5scVNZQjFkZ3lYZGdtdV82Mnd5dWtLQ0ExX0ZBb251MVpJVlIxQzdqV0NvZ1p3LThtbnF0cWZFVW5GdUdpLUtFVmlIMC0wYS1NMjVNbjlEaWxDVzdmcVRfbFhGdmRmOFd4MkR5QUVVVGZnQllfZ044R1E4WUpSX1FCZ2ZLbjk1YlpCMVhLM2tmNnY5a0FsY3kxTERpVWFpWWdiQVJ4OFljTlU5Z1BDZTg2SEhYempTei1CRm9YanBWQ1Nub3ZsbGQweVdqb2xlMV82U3Nkai15Y1E1TkxBTVNiclg1SFpHVUVwZDNIc1lnRld1LTN2YUtTeG05MXZkSFl5NjdldEdDQVNlc0VIWEVScTYxMm5qNWZFdFdIYXMydkRRUUNENzJ1M2FwQ1JUdnc5OUtPb3ZuQ2plSUFwaWRkN2hrYTZOTFNudVlpSm5Bak4tSjB4NFZBSU1wbGdILW1OZWdlSUtkWE9VRmN1SmNuNndsZGsyWjZCUWNkaDlEMERCQTZvdC15bXVVNHB3TC1XWXBRUjZaT014Z0t5dzJIUC1vTU04dHpWallsOUpRUThYYjdGM1B0T1VYR0xJLTRfNl9xWDY1ZFk1U0VPd1FhZVYyZ3otVWd0dFdwMktXS3hQM3JIVkgzMUdFMnpkcTZMdWVDZHpHSFlSa3pHbXJoZ1FCb0NUb2xDNy1oTFZvQ0RuV092QkhwX0cxanBES2FSNkZsc1VLclRoNGlnMERTOU5Qa3IzNDN1SExyWW1DVXFoalVhN1VaVkttRmkxZXctUmpZZ19rUEdLV092UmR1RmFnVUZWUktXSlFJODFNbTVTN1Q2SGJXZUk5ZkJTWE9WcThZVUNiVFU2ZGhxaVQ1Yk5JbHdvU2tDQ1lWU0o0WUZ5QnY2Q1RreWp6Yy10Qmp0ZFFRbnFuRGNjc2VNZ2N6VG1XYV9IbGlKUjNGeU9yaTd6cDJaSWp6QVY3ai0zT0lkdDlnTlpiT2xLQ3RPRjUwZ0pucVRJckw1N2JMRVBUWVRUQV9mLVo5bGdHdl8tNi1WMzVEdEwyaVBxSzhJZUp3U2NnN1laaDVDcmpqNF9YbC0tSXo1cEdIU1ZRQS1pR0x4VmdMeDZ5SldJVmQ2YTJYbW5zbUV4eUwtOWo1bi1ReVJ2UnNPMV9jN214cXdsbkRBMnZTamQ5S3hUMnZxUkJza0phXzlFUU1QSUxscVVuNWdWcm9hZVNfYlF5TVhrbUNZeV9aSWJCa0tiY2x1ekZkSDBMdjZOVnd3bVRDMmoyRXdCamgtb01kak94X0VCV0ZrRVZJLVluNHR2b3BiRGF2NGNYVkNIbGVhQ05mMjBlaUttX2ZUcm4yckR2TGpfa3g5TkZTa2plbEF3S1N3ZlJ2a1NMRTNLZWM5Q2tWVWlsQXMxWkNTRTd0bHA5WlprbklsaFVYaDFuQUZxaklBN0I3ZXZDdlhRMm9HZUZjV2pHYy1FdXpxcmMzWDNxNmRKbFg3bDI3VW1aRzhTMDgzeFhISThiWlBQa3gwYVBmZllwQ3RhUWZmTlhXM1VaZkJETElJLTRzYmU1QkpwYWlNMl80bmJfVzg4NjNjRzlIVE9uS21GSFVNT2lDcW9xMlBBRDJfeXJ2YzRpbERnYWNrOGtTYlE1T1FILTB2bHBUREJoc01LTXBoQ01yY2dZdS15OTMydXIxcS05OEpUMWxhNkVSQ2J0bHV1Uk9EcEJ0d2ZWLWhrUmdsdUdSd25nS21wYnFuTUdIN1c3dFNhVDZCendaWWRVUHlUZHItQ2NXRWFOQmFzNngzOVQ0Q0pIMzZXUUd5WWNST21DQloxSmR0NHh1SkhnN09fWXdIeTlzdElXLWZ5cFZDaVJzeXBZbGlnN0plVWxTMWZ0RUFQQzJqNGJ2VUVkYzZ5XzRQa1Ixa2VzYVBocmh1cFM1dHR2NUJBbm9KV3dMUjRCQmRZUGdkakRqa1p0WmZ6b0JDQ0l2SHE4ZkxaN0xZWUczQVZXX3JrVDQ2Y3VzejBvTkVZRnhFWE1EQjR1ZXU2R28tNzR1YTJZT3A4RmdIcEY1aWdrTm5FeU9Ic1VnSHR2YURnbXE1Y1NzV3gtRk9mMTVwSTBUc05zd1ZCbHI4UWRKS2hKU1RyU3R4R3BtWjdCaUp4T284MFZNdXFZc1lmWVRsZE5ZZ2NtMXQtc1dRcFlldHptc01pc1ZsT2FXeHZKY1NaT0pkN2k4OTdDcmVpSkxXSUZQMTVzc042RS1RdzVwNlhPbEZOV3l1UTdlTFdQZVRSUXljbjNRbEVCWFBtb2pjOWs0MGdFc1hhUHVtaWtUaUc5eWFNTmhzNDJwUWoyRWxxdGVTcHZtYk1YaTd1akZzbzlUdDZweHBFSC1KRDB0N1piTlE0UWNFSEJxOWJjeHZtX2twdmp4QWthcmFSOGttb3FpTkRsek1pNWlVa1g5aHBCR1hrQjJVY2NWWHZJR2xDNVkyTDJJUUJsLVpJM2ZaMnVoaUJGRHozNVYwRndwMkpsSjZBMjQtQVJHdEZXYXo3Z18xdUw5YW1ac3psQjR5OTdNMWtSUnVUZk9pU2tfRkRDNlR0Y3JGRHEtSEdrd05LbmlKbmV0b19IdTFNUmdYTE5LbmY3UjRWVTlBYVlfU2pYUktqbFRkWGNpS0J2c1pYbFZsTU5HLXpLazFQOEIxRERvRUNZd0lKem9EZjR3SUUyQ0VSNllXVTlaalZwRWtpRjdBNy1uZWdIY2JucXpQTGcxQ0lZNHFzWXp4QUM3VWVxMmJJeElRZm9Kd004eXRsWlotVUlDQmZ5ZFlDNmVTX1NPZlYzODJ5Q181d2E4cHQ0UTlnY2lxbHc0bnpZUkhmdExPaUNibW5zeHVHTjlIZ0s3NnpNLU0tU3UwUDdha19PSmJpT0ZMSllOV0JmWnZpemcwQUc5cklWNEpraXVhcUxYV1EzdGxfOVRDcU5PVWFIWUFJV2tyOVl2cHFFLUo5dDdURTFzdTd1ZTYzRkhFX3ZOUlpXUXZ2VVdFMWFrZTlxYTkxaGliSkt3SE4wMnFMdlJaV1ZYOGpWcFFRdkl5c3lwZkFkMmVCczNHNmxlRUdpUzVJWlQ0QkVhYldZVG1uWE9mRjlQMFJ2QVhRN0NmR2ZnZ1RiRmJLblZHX1dhSHZCT3NpQV9ueVRfN28zNE16OExzTWJRcnBoUVVrbWRyOUNJTUx3VU15RXRWZEJ2S1VIMVlmb01qTEg4SGQ3QzlPNktUWkoyVDNKZTdiRktDRHNfTzlhUU15QTBUZEI2eGNfYnBhb0loWW9SQWw5VUpFTHFFSVplNW02b1JTT2pCWWJyV19rdjRFakZOZkF6OHNFN2dxNlV6WnB3NG9yellqZ2hRVERwR3JKMm1QLWxsdHRZWllocTA0VzJsWW10My01VDV3Qi01U3ZmWmdoZmtmNWN5NlFYRHhvUUhFOEUwdmhrT211YXYzSU1fcXoyVHJoYV9tTXc1R290N3cxQlhCM2txVWY0YnhWRk14SUF4QWJuWF83anpjSXItelVBRE56Zk9Bc1hjRnc5YkxGM05Db09ySE5qdU9NYXl4NUEzMWE2VnlxXzNEdDZjc21vUHNFU1MwTS1MeTdQWEstbFItb1BYNzluRm5VdktBS1FxRzdXQ0dBNzlHUnk2YUg1VFhrcHZxdExnajJ6LWFZcTBEeG8wcWpPVjVBWkV2dFBoSG82TnA4aXVhM2RmbXdEZ0dUeTNneVEwSFcyY3k0ZGtTS0RJNjZ5VVQ4UjRFQmtQRy12dXlaQzZfSjBiakwxSzh2M1Ztc1Z4SWNfMFdkNEpIN2ZCVW9jYWxfblpobzgwWVdhTndGQWY5QUwtX3ZGTTRyUk9XeDd4bG1MUXdmVjVpVW41RUxJUmN3LUFNVFltbXR3NnBLZUxDTnByV3Nqa2thMWhfZzN0MVJMUUhLQ243bWg2UTNVak14UkZ3M0hSXzlMRWtlSzVHbnFyUDJrUWFnWEdaMGtabDZaWmN5akVqemIxd1I4ZS1sVDNaeWp5TklTUkUyNlF4MlpXNUUyRWkzRmZBYV9aYXU4N29scmh1WGVKcEVkNG1JQVJrdF9PY2F4WGhXdDh0dFlxUGtZdVFmSHVUR0tWWXVNTWRJS1NfNkE2THZpQzNLWXRWVVpNaEY3TUZaUTNvcG4yM2ZpekpBcnA0akwzVHhGelZ6UFJJdkc2VnNCM0hIODdCN3ltTGZRS3JReERrYy1MX1NsWDlNUmowODNWTU9kcThuQ01MMDlfMGtKdVVHUXBsZDItM1NJMmVmY0RrdXlkdXNFN256bkV0WVVnNkZDUXVXSkV1Vm9kSDZvWFVpVkUwRllLN0dkNnZTTmV2Ym1KYTJmM0ZJZHBlMXRYTmdOR3haVmw3WlRJSlVUNXlRUGR0M2QwWXRzOGkxSVJlbkMwQm16Q0MwNzZqZmxCYnJ2Y2p6NWo2Z0N3US1sRm44UDVjSXZWSnpZT005R0JJUk9MdTFmZHhWZnVFbVJNcko2eENhY2REaHFxYzd5TVdZWU1fd3JfWmd4TWNzRHQ1WVFSZnRJMjh6YU13NTg5SUN2WHZjUEduU3c1LWNwZi13dWpXUmh2c1doeGg2bWdibjBjYmstNnQtYWlrNGFLcDVyUTFISmtiQVlxMDdzQ2tQc0w5Q3k3djBITWpTRGFWTjA1SnRMUnNZT3dHQ2s2UXhvY2VDZkg3dnFBd3NLX0FwZ3ZWb0FseldMRjVVY2loWnllU3M5S3QxTTE3T051LXctYmJaRF9LUDQyOW9WY2hXWnh4TVBnY2dKZGhMZDctYVhaeWpPaWNjaGhXTjVyeHMzSHNoR2hZQS11cXhuaDl4ZmljWWFLdEF1WU9HRUNOQTMtYmNBaHNvRHk0cl9yNTBXTlF6LTZtb2V1X196T01EZTBfLTc3YlpUMEhuNDZnbjU3aXI3RFlYM1Z5R0hBNmRqRDJRUVNoQjJWT3RnbHNkeTkxeGFua2FxNWRELWJLNWlaZUVneUJtSUFiX2twNi0xeldiaWk5R2YxREY0Z1V6eFBUNFQwUUJKRWlZNlc0d0ZkMzJEd3czVXdVU1dIUVphbGJjXzBtTGw5WWx3RDdoSlVsMmJRNHNROXhTRFd2OW9CRDZLQnpzalMxd2RqVThTLS12VUhhSDVBMkJMS251X1N3ZHIxVjhWN0Fya0pDXzAyd2JfeFdYWjVleUJOdkRSSC1jc056TzBhRVpzaFR4dHA1SWNONUtZZENSenpiVl9Pejk4djM1V2diQi1XTl9ieGZHRWdESFU1c3lNRE8tb05xTGR2RjlFbDZmUUVVWU9Ddm5KaTdGUExOT01DeW4wS3VVakZPeTN5RUZTU3U1UGtwbVZ0OEsyTXNXWG1kRjlYVXhEa2ZVRHpic05VNlpYOUpseFUweGRLNHh6TEtEakhNdXRSQVI2NjFEc0ZtX1V6Z0hjVDZYYnBaZUNRM0x1eVd3VDNGLVdqaFp1UnJVLW1zcGRhZmF3S29waUpzVzVSTmFkdmkzeWhHVHBoVmZMN1k1TXZyY25WSkRWWkRXekRfYVNGR1FlU3hCYTZ1X19PYUE3blp5cU9rSkxveGhlSW1XeTlLZTRJRnZ1UEZKSHhBZXQ3OXpJckh2dXVBbkRzcWNjbDNDOS1Ta1VlY2I5UXprOHB6Wnd3c09Zai1tbHZqRm5fcnN6cS00NmM3MVhiVXdTYWZtN1E5d1kwNVNEYVVQWERqVklIVTgtMzdWQi03SVQ2V2VSUi1HcGZWbGh5Q3hNMjNNWXFIbUxCQ3hFcFhWWnBvTjBGWC1uSkJqdXlDVW85TTlhUGFIT2ZYY0VVdzJNMlVtTjhnY3ZiYVdzNkpQOVEtbm1mMVVpbXRoX0Q5N0cteDRzcVBfNjA1UlZobmw1ZW9RVW9zamU2ZlZRSVFYM194RUJ3cFQ0SkJiczBJNEVzTGxfeUdPbWczRHFwOUJJQ1FsTjIxVHRGckdQMzZmeHliZzhVXzhSTGc4NHc5UGFSSWRNZF9LOWVzTDgwU3ZfSDNLVGhIMXhDM1JxTGctUURhaXJoMUdySmV1OGpLMjZRVEF4NnBTaHB1NndVRHNtdklmV3NyUHNiX2dHMWpkbTRvdzN5UnRUYU54SVhqeHlTUF9LVkc0UlJqTTBCbXUtUkpCSHRyMm9HbndZWGI3SGNScjRtSWdUekk4bU02TmY0RjduTU9aTVBndUNXTTNubjhlc0J6aFF0cjZFSW5oWFhUUFVyaVpFVGxBc2U3MVJNZFpJYTB5eTgzaEx0Nm5LRkdhcU1VWEpoUDZqeXNid2xoaElRRVNYRGw2X0dhY0J0WmZEUXM4NUtTUFZScGVKdHc5dlpUTDgzX3lXd0wta0JsVE5xcnpmUkhfOFo2R0syVi1wYkNaV1RRVUFSc3YyNy1UdlROeFZ4R193Wko1Q1Z2Y09VcDdPX3poNjJUOGt0Mkl3RThpaDVRb0dpeG45UVZwZzhVczYzc0tiSGRsTW96LXNxaUVQck9ONGFlQ1g5U3VjbXI3M0NveFBQeHZ6U2ZEYUxnYXItbVI1ZTlLeEt6ZHF0RFZiUUMzUmVxQ3dGYm5RLThTN0dVS1B2TTliNEhTWlJkaEZYYWptYldSU3JVMFozV1hvUnd6RXpmZ1pVdVc1dWJHMUJOVGlUMl84UldpbzdrMVF0UGQteVRDWG5pNGhLaV90RmhwRjlrT2Zxc1hWVV80aTAtb0FBZl9ucks2YlRyQzlybEJ1TTBFMTFraE1QUko0SkowcE0ybEhEbmdWbTFlR3lZR1RnYklDNHlFaWRPYzRGemRGcFQ2Qk1HX1ROa1JDS1N3ZHhVcmJsWUcwbXFSV2FqRGVKU2xVSjU5NFJsVDhoUTBEeVZUUHFLc3R6eEVoWFM0ZjlQTElKUlRLeVNQT0t5bEZPcWNLT2xYaVhvek9jYl9nUmQtZDBmV1BTUHFSdEU5Mi1LbkJrVFA2OHE4ZWIwUkVyTnl5aFpnSEotaHc4MjZpcjVTRHJTQi03UGJCSFY5R3hCWElGQXRqT3B3MUlocDVhcnJxcTF2RTludDhYUXplRDlabUpWa2NBczVWMWNTOFVxaF9aSkdpeGtzVnFuak9CMll1UDFuVzZLLVM2M3U4aHh0RDNqTkRxSF81LVhPM3ZuWG9LODBhbi0yZWlIWDhxU2g2SVkzSFA5VVlDYU54c2FQRWlidFVYbW5iU200WjVMcDdISU8wWU1MZ0I4TExObGlsa0FTU25BZTZIWU1zX2JNX2VfUVlSOVJWaVNCSmFxR3VzX2RtRmdFeFdRdTk4ZUZVNzJuXzY2ZVpDYWNlRHNrVjRPUlE2LTl1aUk1ZkJ5LXFGa1p1OFBmX0x2bEhXQkpsVFRqXzQ1dmF5RGhxTlE1cF8tNUMxcFFXOHFsTHI1Z2lEcDVwSkZvcmwxS0UxMXMtaVBwM0NPY0RudTRWVGlZMzd3RFIzaDI1N01tSS1YaVRKd015MFMtaUpXXzJTNkljLWRMSm1oMzBQZ1Z4UlJGTjA2YTQybDdGUWppUFVKa25zWDEwb3IzTC1TM2lIelhYS09tMm5rZDRwNHd3dGhqa0F5UzMzeW9Yeko1V0NkdjlCLWFsbGJlWEV6NTJ3MURxQThEVXhsVG1aSkdVeHVpNFQ2aTd5dGlnLUE4U0kzOG5SbUVsRXZsd1dXcllhQUxKVXVlRXNialJKcU8wZ2ZSZ0djT0R4OU1vNlNzN3k1WnFIN3VrTUh1ZnRGTzVkZ21IeVVXQ014VXhuUG5oczRheHZsbUo4U2QyY1l5Z3dTX0VMMnBwSXVtOUhYXzZxQWxaeEdrc2V4VWVVX2FfR1BWVlFWQVBSdVQwMTE3cFRKQWQwNEtqaVhjcVVmUVJfWUZBYmRVVUU4S1ZYSUdtWU1VU0swUF9sczNKVEN2ckhaQVoxQnNwN01iSlZwUlFUTjNLcEJURmNuTXRIV255S3VVQXYxRjg3TkYyY0F5cFZwVzg4ck1zSVpVdXRYZEZZNnNFSFl1eV9WQ3RFMjlucmYyVUl3OUNQNUdTYzF2N3dfSmU0VV9vclMwNHJ5eU5kdjhlZXVOOEZpRlNuOS1kUE9uaGROWUpvMzF4VjJidDA2RFNwbFpJOWQzc3hYSUdUcFc5YmUwR2c3b1Fwa1NoaDNrWlpoMXVkanpHRWNnMmZkNFBMTGtqaHY2bEx6QVh6emVhUlJVVEtVdDcyTUlaUVRYYTM4OFFyX25iNmVqcHV6QjJFUXVfVWFENmxLR0lQZlhvWVg2dTl5Q29QZk9lVFh5ZE5xRGhJNHdqem93REdRdERNcXJpekp0MVNwbTdQVUQxMFplOHpSZ2llUUtxMnZ3X3VhZTRSVlJqdTVwNVNpc1FsVkMxcDM5Q2dIWExqQ2VsZ3QwZDNkQ2xGa3hsQk9IUnFXc2laenVTS0EwS0VJSWRYY2lKS09BWjNKZVB6Qmxoa1NyVUFzSUVwUGxFb2dSTzJiVnNmWmx3dWh2ODNIekhaaUJKQWtYOUZKM3NrNlBUNS13ZDVtUE9DZmx5am1nckhKZDZGclIzZnotakhWdlhYNXp0OHNiM1diRWk2eEsteGFwM0gwbHlaMUxDR1JHNGxOWXlJN0U2RlFjazFTT1kxU1liY0tVSnhHQV8yVXZPTGVNb2Rrand2YlpXQXhIMHV1UExxbXg0SXhuaEp3X2ZLVGIxRnBLMVB0SURhdVZUa1FUMXdFSEZEZXZ3bWdzcmtSd3daNjhlMFhCaEpuNWxJZEZCdGNxdW1wM1hxOEZNVHFJMTJqNzI1bzdQTDJCeTY0Nkk1Y0t0bVdabGsxclhEaFNsS2JYN3FYejJiUkFIcnpCN0RLSWx0ZXZkNXM4MVNLMFlSZnFpVTZtUUhyWDYwdTNfWEUyQ2tZUHd5NWk1bC03b1BrRUdhSWM3Nzkxc25ZVkc5NHppeGNmZ2R2UGFmMGV4RnBwNkZXZkdNcTk0Ymh2S1J3NW9jdzNrdURwYmZCS090VmxJZDQ2eTc0TUlRT183bTBXZjVKeTdqSEt5aVd2bVFpWkI1NHpsSkpyb19lS3FabXRlSDBqUy0yREZtYU5feUdJQ1RHeFRiLWJ5dW9CUmoyTkJ6Qm5idm50R3l4V1QyQ3VvNTBxejg0N0p4X18tZVJxZVpqSXdIX0cwNU1IUTZkYW1qWlZUUzFzMWlIcDZnNG81ZXotYXRxZDNzb2JFSHZkdkpyUGF3VTRWeWsxNGtSaFdRN2J1d3h5OVVuZ0x2RzNTQ19oN3hkSjE4OXl0MnZBVDdLVll1QXV3QWI5MUNEOW1QUnZBRVctQkN5bU0xcUJYaVY5cFFBYkFHdVBwOUJGcFlqWmVGX0puT205eXJxOS1INU8zaWdHS3psRDdYbVotbUZxSGpCOU5oZnZlSUx5LWVqM1VHaEd1SzFWUkVZT3ZkbU42N1JLLWlvTVF0d19Za1BQeXF3SG9iLTF6bENSUlJVTmdnVU8wYmlkN2RnVkFQOXJCdkVlcDZWMHg0bTRiMGgwNkx2bEVqQ2kxaHAzT2dWSXZxZVBrWDh4b2NTcFVtNmd1T0tqXzMtOTViOENxWVcwWTA4T3ZCZWpVQXhjRHdQZnRyNlRIT3NMSE5XbnkyNGtaejloZjR5V2Jqa1U4SmhFMTluc0x0NG5Nd0taN2U1c2hMNjhham5sRG1OeHpEY0tsdEhNT3RSSTQxaVV5b1VlWkVIOEtKQjE0ZzB4NXpLMF9NbUFCOV80VmpLcGx1VFhYV2RCVTBoOHJNTVo4Ym5lNlVmcEZkTjhmZXA4cURhc3JLYzFTclVEZXZpMkJpblhOelFVdTdUc3VreGlTM21iTzhOZm1DQlFJempMUDRhUVF3LWR6Y1FYTXlYaG1fakdvNERuNTJkT0M1bHF4Wmc5QmxiN3k2a25Qdjh3dmozMGRadnlDVEJVS0dmeDVJbk55bFJaQUZaV0RiSWhfcXc2UkdBaEJ5ZlJONk1LY3JmQi0xc2pfNjN5eUZ3OWtwUDk2cU90ZjdyQ1lMNnpOSmQySFh2ck1tZ194R3ExTk1PMWQzZDVlQTRyMlVTVGRFbU13cnlLRFVDRENmMlFBSEYxM3NMLW5INEZwVFBReHktcUtzUWpsYkE0LXJRblpIWUpJRFhrajYwaEg3MDVOX2pNcW4yek12a2xid1JKSXp4bUsxUl9xWk5CV0ZST2N6SnNCVGNkUWM1WFAtRkdlb3NISlNwdU1QVmstT0NOLTNmVTA1UTRWNWpyQ1lvekdfcV96UXRZYjdBX1R0cmROZ21yVmxIRWcwWm1HV25OZjJGbGh5VmxwRUxnTk02MW12UGlTaE5oT1N2OTBHTlJCMWdteTJ6QzZ6YnM2TWJkajRjcXdLbkdyZUxoa2lKSlZGdVlNRV9JU19sbTZWTlBsU2FDajlwakU5bl9TUEs0d2UxRXJEZGtGaTRSaDFRVFEtT1Q4MmhiYk1DZ1JSaXZDVTZ2aVlNUkhlMDNfYzBCU0hTaEZZYmhCMlpfVV8wWWZGOFpReGZseERJLUpyeE9pcmgtNUxQTV90RnlTa29ILU0zR0FWSW0tbUFvM1AzdXR2UmhaRkladGpfdFNtUjRoamRmd192Tk1wX1pMVG1yLUt2Y2lONUFTUjhmNlgxb1B3X2RNSnYxdHpUYktEQUJKZjZRM3h5TXJsNVdJekhpbU1ZRGVtUWpXVlFUSUNOVDFtQlF0OWF1WkRNM04yNDlWUDJjUUdPQUFIdE5JUUpndWU5dE9LQXVBbDlBTzlqaGRnZUx4bEJuUExSUVNYWnRrWnRNOVppUEFhNlJxanJlbks3N0kycjF2N0tsMkpySWViQVJiQkRXamc0WWRSWFVKRndsNm1SNmUxUU5UbGthMTlsTFNGQkxjeU8wX2pCVVVmcVF0Ry1JVHhWbVQ5RVdSNklxVWoxTG9CazFkQXlJOVJnRklfRElUZVk5Uzk2cmUxbDB6aFdjdWdfRmlETVVYS0VwcVVWZVVpbnZNdDZHNGVXQ0FoWFBROVNIbTRFMXZ0UEhRNERHN1BVaEsyVjdhdWdmYlEtMC0wZlJnanJYVjE1ZlRpZDhPSGdXeW44N3BCdzZwcWZkdHduOXFaU1U1QnAybmpBN040R0poX05EN1ZSOHBDajJ5Y0lET1JCbkI5QjBjN25MWnM3blc3dFYzX1dmLU9Odm4xLUFCMGNQQzFXNXRPSDVfZXg1VGVTc0RDcW10WThhbDhBd2VyM2NxcGs4SjZTRGFMNTNQa0NzUThETG1MaGo2UFVMU0hGdVpwQnVRWjZteVM5akdTdEZ2TlYwZzl3T29CYUJJNWpBWWJrcFl3bXhMSUxYLVhYSHRKNFEtWWVQZEF0MGFFSHBib3g0WkVuTUhQcFBwWk5yWHhkb2owR3locERld2U3UXU3WldfZ1gyWkJyVzFwMEw3ZThXcHlfdkYtYkxTdEtFTS1ranR1UTY2NEU3dXdqRFliMThXZlRZcEl0aDRSYlh4RmZNUDV4aGlYa1lyQy1uRF93M0hkc1VDUF9oa0lQNTZMM2hrNm91TUtOWl80NGRHWnFIZC12aUluWGlVMGlIUUViMTlsNVVzVlNtU0V1Q0R2dGVmbDB2MDJKSS13dGhwenVUZXVvcnptbG9qVlc5QW9iUjV6ZWM1aXpBVGNtUmNjeVI4LXlFZTRSLUtHQ1EtcXdrMDRXLXlPd3pHMzM1aW5CUmk4V01abWdnc255RVZnTGg3YzVGRkRTTWFpWlp5OExlLTdaNVdHZlhMbVZfZ2NiYmpJYXZSajA5ZHhUdEdKcV9iWGh4dThTektQVGhjbzEyN3BlSm9VMjFCcUFVU2VDT19JVV9DOXprd3QwaWduek5ELWJIblNreVZvTmdDX0NCTHV5VnE1LVozdkZRMjk0b3hVb0FpYmI4YVVVOGJaaVJnVXpMZ3l4Z25kc25qRFRlNlRuaGViYk0zeDdFUld5cUF1UmhodW5qX2lxeXIzdUdEbmhuWFFlaGhSWTdOT1lHTGY3ZHk1cVpwazluakgtOVBVVkJ1VXh5RVFHRkR3TThIUG1qMlgtejd0aEk3RmZFMmFGdGo2Qks2R2E2VFBvY2M2Q1JCQ1k3Ujl6am95Q0Y1a2l6RkFhY1hCc0xPMldWWVVldGZfR05ZS2VLWGdHUXIyOHdVU3VEX1cwT3phZEtiS2tEMTgzZUk3djBhNmRJZVl5NUFWZm9PbW5yM00xTzlRYnNkOThKSWczTlFMS1UtM0VzbENVdHZJclM0LXNRcGVfRHFYY21SZVR6UUxXaTBCamdzUDJ3NVZVZ2ktekhudWp5M1E3RzFQNzFyTUNMazRMUTRZV0w4SU9tYWxucFVPbE00b3d5ekRZQzJOWllnNWVVQXRsTW0tZDYwYS1aSkpuR2xwU1k3dnpUM21zZGlLaVpjSHVBTWxnS3k4MVNOcUp4M096ZEJHRExxNkp1NDMtS1lkR3lCTDVJWTBQb2tJRGoydTd1REJ4SXNHSHV0UnlWTDJUSW5iYWIzejZKU0ZSYzNodExhRHdKdll1MmFQell0dUV6aW1MUDdDbHdzcEUxeHVJcnlOVm9RbWtubURwYzhNMG9OQUJxVFU0MFRlaDlqU3FGajg3Wi1rblk0cFR2QUZNdzNYQ0k3VkdDbi1Mc0habVZ4akV5Y2JNME5ZODhHRnZHVVM1NjNRX0ZkRnNUSG03azExZXpqaklET3Byb1FSSzlBY3pCbG1GSElaVmtWeHoyYVpjQmIyR0pHVVdGVjM2aHBWVFRKQ2tjbmdIcDRDOWxRdmNyYlZkckdUc0duSm1sQjVRYVFkR3FoelhKYUowaWlEdlhveEd6R0d5TUdLZUllcDVRSEtwOGNfaktXY25XSmQweTJkeEZjV3R3aFcwV29QUlhDUmcxejBac3BlQnV4NzRrMm5IM3hhQk9jR2NMbENPeFNVM3JNc0lXR1UxclVlRkdGdG81MVBZbU5DNmY0MXFSaEpLbC05NzlrX3gyQ2RGZ0tQZkFQUVQ4MFBOb25nQk9nRFBYQTQ1LV9adURpY3JUQU9ZdnlqUUJLUzRtek1HSExFNDhLbnh4Umo5U21lVUFFeEx5ZWFXeURlMkpGV042dThjZjFsREtZYUZ3Z3lOWDJ0TUJIRzZNN2cwY2dnWElvNExZaTdNRko0TjBkS2FQZXVMUUl4ckE1MWlYb3l3Q1kzbEVJN3NPbDZXSUpmY2tvUlRVMmNMcXZ4LTFLdFhBSHBzSEpuUmpyanZzRy1scnhhaVExdDY2dUltTEZ1dE1vclkyY2xKNUhBd21yZ3VtblNLWDdUYl9JTlk2NnlrMS02cF9MZ2VEbnRYaE9hTENHQXVLQUloYTh5VmVyUHVQbC1iTmZrOXVVTVVJSk5HcmpwRnlZRThzWXhwb2RiS0Z2WExQWjVTdHA0OHBhWWM0ZFYwR05jSG94ZzBKX21mcGNzSXA0SGZ1YURFZU5MS1g1bWpvc3lzMmdzc3p1OVVoUHFscGw5UGQxVXpEUENaNGR4NHVXeTBuNmlFOHduLVgwS2g3by1rZU90MndrUXJadWVnZDc5aFVxcUxGWUpGblY5SE5kZGR0Yzc3UW02R2gtNVoxWkIya2dpMnpUZzR2Y1NmeDNnVHRPRHJFZGQtWGtuLTl5VlZQcTRwR194c21adDNOTHlmRWNOQkI0MDY4VUt0V21KaDFaWnNzM0RxUEZCNFRacEFxNTFuWTZuNGF2eFhfWU4xVUNCMEdqNXFIRks3ZVB4aXdCRGo0NHVBYzlOU2NiZGlrV3pJSFk0eEV6WnRVVXBwVVE2SEQzRnd3TVBmdGhQdm9UWHAzdjN3R0d4Y2ZuY050ZzNyZkwybDhSOWNEc19HV1RjRVJsUmcyTFRKdTJxQnFzMkFPWWhTOUw0OGVBX0xSWDZ2VVBicnY0NjItNzF2UkxrYnpzRUlmQ0hGNVhzd1h3RUc3YkFiOXN5UXZqbklFZWtRRTNWZnhWODY2WFZjTXRnRENvMFB6ZkpUeFZGM2dGU2U1ZTcwREhESDhBYklCSHdaOWdUY2lWdFU5dzBOdDNGOFBISVVSU2pkNmNpSVU3aFNzYWVZRTFtQTAtWE1aNkc3d3JYdWNNQVN4UnhNajVCbzllUDlLbjA1Smdmc3VWeWQ0QTh0VzZyV1ZpWk5LVnh4OEhYMk1fQWRGQjRfSk9rRUctMEdZYjVnMUUxQzg0Q01xX1JuY3VmRS0yTzBCWlg1N1VBWGpsSGdMQ1BibVJlcEIxTllYR1NETHRMbUlXX2xpX1htY0FWNk9ScTlsRFU2dXZDV1lkNm5PZFVzbW5DUS1PZTR3T1l6ek5BTlRSaG9mX0pPellKYkU2U2F5akExUnBDbjNndE5mcG5EbERud3h3amVwRldkaHp0YUpZNlNjbkFadDhzQTBrMkVQODJzQWlnVkF6WVJYWERMei1XM28wV3k2MVowUWRNSExDQXE2YXYwckFIVDJMaktLRHo5akdMaXdBV3dCZGFDRTJSZlVQc0dDNFdESjItVlNmNk8ydG5kbko2Y0pRQjM3aXJMLXZnUGNVc0g5UFpkNHZHVTdDX0JtZTNPb0VxcXFKOUpPUE0xaHNXVDlDTS1aLWdSZWtDb1hxQmFLclJQZHM4SnRMVDFNaTRHdmhLWFF1VEljZ1pvQmlBSDdocmp4VXZDdWNBd0VKUGtZRGxnRkZzcktLcy0yYkRfTjBxdHM4cVBMNURuaFZ2QWFwODI4LWpaZ3BFZ2F3cmN6bEdJMjhMMlk0dk92UzNwSEpHcEVYYmJaUGY0X0VtWGczZEdaQksxWGNBbk1XTXBjOVdiMk9HbXdQV3JucEVxUEpqTkhyT3NSNnc5RngtV1gzZHZCRGNPTkNKSld3WHhRLS1PS2VYQU9rZFIwR0xEMkx4QklpS04wd0tvcVBLcTdVU1R3andLem1LeUw4b3BVV1k3aUVFSERwcGJ1SGRZalV6YktaMTFPV0VsdUxjdUpmMzNQaDZCc0ZPT3ppeEcxSnRHNnNCUlR1ejVUaUQyRDFTcVEtTkhPRTJHMmJTZ2VRLWlFei01b0FkNGRVYUhMaS03RzR6YkdsMzJmelBBb1AtVU5LZVBjOWNPU2F2MmJaal80aVhYUWF2dzVqVGF0NWhxOUZoWU5JeWJXWEx2Qm9wbFZ5NjJxLWxLWVo2NDNPWlNtdWhjSUowOHBBblB0NF9DTjZGMXRubDhPWjNqVmhhTEdBbjVqaUtKZU5JZXBVNDdoUUt4UXFFVHJRUzZBT1hlekEtRUtoTl9uWWlsa2NQZDY5QTBwR2Eyd1BuWkZtZkJFSHZMaGVGLW5jcmJOZldEdGVJWU9Zc3RzUkJ2Qjc3cnc5SHFWRkxSSmFaYjJYM1dmeHVFVzVWMlNVZ1padnZQLU1HRVRwS3l5WTlDZWo1dGNKWmRBSTlzZlNYMlBnU1o4LUdVNE5CUFc4dEZBSGdvMGxpdFVtb3FXV09KQVJzbDNaOXl6WFhGbUR0RWc2aWpjZW5aRTlYTWFfaGloNXhLRlh3eFJKUFdEZE43WUVKOTZoaWZZazNvSFZqd21WdkF5VW9iTU11RHp1b3owbHNmRXNvczJzQnQyb0Y5dXRvWExiSXFOTmRhQ0NuOThWZXU5Ull3SWthZEpTNWVmUGxubmt0QTNyZFoyVVYxYW50czRaU0NIT3FESllZQnZzYWV6VnJMblhyYi1qRFN5cm9sUVZjb2xib1lJcXZZSU8zb2NTRDM0OHhwUnpWR0M3MHZSaFJBeTBvcTk3MTRfUk4yN2RmaFVUYnFWZVVkRXgzSUs2bjlLbHMyRGE2UlZDSnFreU5uWUd6Z1RqTzFfc01FRm5OaWxNZWQ4dG5JWXdZVG5ncjFJc0tHSXVBa2xaRS1sVlVHZW5WWUx2T0x6U3hZM3E0V0gwWFNxZjFOWWxaUmtyWU5tNWhyQkJrUmhGa3VSSFQ5TDBfaGtjcTBJaUJacjZXWGpiUXJVRmcwSV9iTnp6QmU1dDdoUTdieDNEcm5lb1ZJTlRHS1RwbTNZUHRSSkNoYk1DWEswR2dwSF9EbkhaZThNaDNTU25ZUzA2VVZkNzJfYzMzZUFndFYwSzVOeXlFN2h2TXNHeFl6N3hfYlhER3lpT0lkVGtfRDc0RmE2Y0dYOFNFZmxpeU5hZVR4N3M3OGc3Sk5jQzJ4UF9CdGlpQnpYWmVaZjNtRmNJRjd1anFQT0ZGempVYXNkMkNzMUY0XzAyS0o4X2QzUkZJbmtSOVJwTmxtOURFa2dBODVqYzZfWDVoN2VrLWM0c3pReXdIR3cyTC10N1ZpZEE4c1BRQjA3aE9GZkFMM0RsU3lYT25wWmFxUDg3SEo5ZV94VVdpUnVHRXB6NnB4MzMwQ3l0N3JqY3A1M2dqQW9VTm1ERFhSMnJuTXdobnc2MmVTUVFOTXhaanh3UU9hTGpfekNvRFJuQ0hGZEJZMzBvLWlWS0dHM2xxd1k1WkR6YWlOaDNadExfZ09feGpRQ2xHd0FZSE1SNVg5QmtOZkd0WUNPbjRYWG5ybFh1Snp0QVlEVjhZOC1mTGdXdFJxc0ptcE0taEtiaXpzXzJXV3FmZlIwX0c3MHl0LXg5bEM3eG5xbzI2WXlPVFAyaWR0bkJtZDB4c3FuazI1Z19IMUo4ZUZVTC1LSkFDRzZLdU9WSmM4YktrUlVoTFlFaUdkaGxBV0o3MEFBM09LdHpTRjdqUFJhbWtuMndYaFdicHdmbF9Bd1FxUFdlVE56eWdjYjJINDRfbkpudVkycWdUaDhqWTFQYk5QUzhJV3p5MFJwazBKRjNnam1tclJ2WU1ya2F4bVIxRXRvRFlDangyTG56S0FSZU00ZEdlZUUzZmVVTE5XR1lFUlZKNTVUc3lhYVZvNHhHYTZBT2dJeFk5dW01MzdfcW00dmVfZVIydHpCWmRoa0pwZHBVaXJKeEpsRWZxZXliQVF0QnZISFVqVHVnTmNCdWdxczdWb25ZckdyNmZsaTFMeVlJQm8tUEF3Wk5EV2RYNUdNX2pDWUROdXRLQTJfa3REakZ5M1oya2pKYl81RHh4b0xxRURTbXI3c3hjb2tjUjU4RWZMWlY0QjRmeHJUZ29sek1IU1UyQ1p4LV93N1FSaHdlYkVOWFl6NEdzcWdjWjdWaTc2U09pQlNjMzlVZjZqSmxLU3J5U0hqLWNjb3k4ZThiaHc2b1prdHJHUVUzTG5hcmZuNnpyUWVjeF93dkZmTXZKc3dDNkYyQXhwdnpJb0o4YTZ4ZF9nWUx0aFNqUll4c0JvbWlnOWxfRkxJTHh1OVBKNzBnTDc1cEVnT0ZZUW9kTU1rNWhhcmpIYllZZEtuNU1uWUttS3B3eGhvUFpFM05VaU1SYmRhaC05YWtuenEwaEJDa21TTEN2NlRBeEp6LWs4Zk9jNE9fdnE4Ti00VUhVa1Zib3J6RUU0eHJxd1lLa2dtR0N6Zjg1T3RGUHBSeThDUEFvbDRRV05WenNpclNNWGdwTmJSWXFsR3ZBWWJvQ1otTzlBdFpHRnRoUHBLbXhBQmM0eXFWOExUT1hhWmZuX09fZU8wNC1fa2NPTGxTblFvQlpSNkdGdnVLUVlsd1pNZnItdzYyQ1hDRzdiYkJTWkNMUWQ0N04xZjZKQUhZMmlONEFIc3VrbU8td1hHbXp4VFJ0VmxjcHI4VkFFNlRLS2ZQZXRNWWNOU3VXTzR0Z3RDdEE5WTg0M2lCUGRJV0pwcURwR1NNXzRfLVhnWkYwSkhoWjlsdFlLdEVSVTd2dVZfOERRa1Zwd1hBVUFFN3JzR3ZqMEtkRks4NDBUR2h5Y1UySVMwbG5FS1B6aGpOTFJiNnRfVWNZSHZDeloxbjZJLXM5U3hjSWpYVDdLcU5xblRxRTZSMkxsN2dsdGxrdnFsNFZxd0FEbkR3RmdTMHVtTWFzUk83S1AxTjNUZVVmeXhTNjZEdVpYRnF2c1hpYWlNMzNUMV9Pc3BDMmpzeHFXVFR1YU4zclZRQV84bjBLRGtGWjJOQTZLZjhydDhGcmZXZDZQa1lxbUdXMk8xeUhGRGR3RmRGSXJVVnJ4aXVwajFMNVNQRFNHTVdMZUZqRDVBQTJ4emdHQi1oUnVJMlZYQXZ2Mm92QWxWMzN2TTdBcUQzdF9OeEhNcTZ2bGdMdlY4aWNyUmU3dmJ5cmZuNDRDdFhNUkx0eVU5U25WME5GbkQzZDAwN2c3RFh1SzJFT1phYzF1QVprWHlwUnYtVkx1cjNiWV83enNPMUkya1RmSHNORFpENjI4WGFyNkR4LW1LczBvRFNKa1ZiMmswVkFkZWRTdnBXV2p1Yi1mXzJHWjVUUl9Ea2l1LWRkSElJbWJ4U2NKYVByenB0cm9aczBEekh2a1JST2lIdFpOQmp6TzNMY3VEMUtod1ozMWg5bDNUWGgxNG9IaFRBR2JTQ3FkaVY2ekFISDVkeURtOFZURnlnY2VsRW5LNlg3d0UtdTd2elg1SUJSV0FoUXFHM0cwMHdPNEs5dTdCT2p2UnR6MUVJaUNkVjhzdFhxcll6dGQ2cUh5X0ZMd2FkdFd1aWFzN1Y4cEtiSXZxN1BmeWpDaFJYV2JReXA5NFktQVdKQ2JvTkdNWk9BbVdUUFZjUFhkdFNYNldfTHdqclpram1CQnZVblpuVEJGLWprUHBBeW5IaE5DbWdGOVNEMTZyTG1jNzBwWVJRMGVJX1ZuTjJ4Y29YbXZJMEdOMkJjLXdYamJDeWxfczJwcy1fYW9GV1hfeGZ6MklOQzAwM1NBeDRuSVhTTUNYT2pEWHhkeG5tMmJEQ0VLbE16YlJadnFySVV3akVaVHp6UHFWeV92WFd3blJGZkhtbXpqdnk4Q2g4QmpsZ214R3hFOWtIVmFna0hWVmFQcVI2SVczQzdiMkxEVDlsZTRUY3p1bTJXZnhZcWdOOFU1U3BVWmJTSG9YR1VoS3NodzlsM2pvOGdjaFJ6Q3g5Y0hwc0hJT2VwdUk5SV83WlViMEpHb0V4bVJiYlh1TDhGZ3VaZEg4cU84NU45V0QtRHhmMXM5MHpOWDRwNGswbkJ1ZzY1enQ3alhtbFgzSWpRcnBRblNDbzFKSUdmUU1wZE8tQUU2Rkl2cXhpbHdnLWhJa2RsLUdwOWg2RmFNRUpiOW02RmFNcjVMRkZrNTMwMUNSd1BDSUpUekNUbWl4WjNpQUhFOE5mOVVGWmFhejJGQy0zanBjRUExcjlTal9WUXBvTGlLY0JLbS1FRG1nOHVUeDF6LTZmamZmNUFnd1l4ZklrQWFEZE5DUmhkemZ0b2pNQkVBeUg0a1NyWGYyV3V2dEdfYkUyc19xNVdia0IyUmRUYnlyWDhnSjROajlGZ3U0VlR3QzdINmNMSzBna1hoSjZteGJnRTNWb2txa1ZVUkJJbWVIUEtlUkJrMFpJRHZWS0V0X2JaTEx0el9KOWRQZUZZOWNIcmlRUnc5NHlsWGVZMmIzRVcydmYyQ2FsNk5kcS1heU1iN01FVEZjb2VpU2JEV3RkVW9lMUprbXhDdFN5R1p2clg4ZnJlS19heFNoS2R2a2NTVzNIeUFOSUFVc2tIMWdNb2FjREdiamcydW5Vc2p4YzFtb3FLd1BjNmJMYmxHU3JyUUVkN0JYRkh6UEUtakVxeUoyMFVVSnlSZGJPV296RVlrUktmek1pN083R1ZwTkhtY216OEhsMjlXN2pkMEJPTUFMNTVJQXJONDJiV05fdXEtSGs5WC1aVkJFM1VFRVFUbnpEYXRCVVc4cW9KakNnNXBTNER6d2RqNjJLaWFnWFJPTlRqSVh5QjBEaUJiNHN3ZFFDVm5WZWw5UFNvWXNrakpWandxX2NEU1I2a1ZZVGJGQXppa1NnRXRaZmJnT1ItWXoxaWhQNjYwVFlrZDhRQ2VHQWNsRXl6RnFmM1kyaEgxNDZxc1ZnMU9IWXRmRW45MmE5MlFPSVZTdEtuWi03ODlYdW9qRTduRkpGajF2ay15Q1Byai05VlJLLVYxNjVuT3FhS1htYlptMXNBXzhCOXVpNDZzemg5TXhnRXJQYUFWZU1sZk1waVZJcW13WVdheFd0UElRaHJ1WmlDN0tYZFpxay0wT0hKOFhYNmlSLVhHSVFpVXVpbWxjMUctOEl6Z25jQUxGSTJtbG5VTWxVSFNvcHlPSEltZkVHc0k4SHJ2RmxIMFN5ZEQzSFdrTDRIbklXbGI2ZHFnX2kwM2FmVmxWOHhLRjc2dEpoRkNwazhoMkxyMTBYTWFKNnU5NDhidGMxTFh5c3lRZE1JZTdZVnZsUVBvUVpIOGRaeFU4VDNKWkc3ZjFyMGFjNWtMUTQ2SzRPWlNWMFRZVFZrM2pXczVkdUM1MnhzRC15ZkhWX1NxSVFIdEo5STZYQkh5dE1uMHd4UC1NTEJyVFNWZmhpVWN5dnIxNkNDNFpKZXRJc3BWclEydXVLWjNocEhkaDdKeG5uZW5wYWtqT3hucjRlbUJIaFFOckJXQVVZM3pkN3JSaDlGUXJUVFQ1aEdXb0ZkLVcwZFJpNGRkNm12R0t3RnBBQS1RZEFrRDFyY3F1NEpzOVlNU2NwMmZvaHZIZV95RDVvY0x2ejQwLU1ZdnVOZkU4VFlVb0ZhT1JIc0lpQTV5Y1Ewbm0tWUVucnlUMDVoNTZaYk5nN2p3Vm9HQzZOWmk5bGpmRUZhNVRVMjJIUkxvdVFodDhCUlhIeXBEQUxrU1dTd1d3RUo5ZHhEWm1hcDhCelVFUVNIZ2cxSWQtTmxMdjFWbl9MVDVrVFM0UHpncVFvX3Z0UnJlWk5fM2ZkaU1RUEZRY2NXdHE0dU5ZSmJGWWJoR2hVaUVJcUZOU2E4WlQ5UTZEMUZEMGxkM0pJdlQ2eVpUdWZ0M21sY05MX1ZxYncxSS1EelNaN2ZHQVJFSzhkOXdIOHBjOWgxQzZtT2kzOTA4V3p6bVZWd05SSzJRb21ZaXV3eWlCQXlnbnh1ZnZLYVcwTlJhdjVSa2V1cUpnS29meEstOFE5VnVubDlDazdjMmswdFRwR1dIY2l5cDdaOUh1QXoxdzFqNXRTaUIwTVNCY2I5bzJPb1IzdjhqQUcySUhfOXRPRnJ5SFQyOEptdkUweGRvdy04eTlwS1lxdjVkN0F4clVZanRESTNYOXdzNDFaRzFVb2t1cUNFcGhMdlVVR3pfMFFBX1d6UGNfQlJRUEdzLS16NmpXM0V6Y1gtMTlTRlUxRWtLRDZVWU9KX3M4LXFadEUtQmxjRzJIbFFsWUZaaWwzSnVvM3NucTZhelJKNEdGV0xqS3VwZEJhUEIyQXQyZUI3MkhkUXRqdC1vODh2UFFPbElKMkJJazA5azBlNDRfc1RLQ29wZGJwRG00UDlRUzF0cGozVmlHclpKYXdaVUc4T2hYY284ajF1YjhVT3FLamlCd0VvTFFYdzNnSHRRTm5nc1BESDBUb0ZwVmJORkJQZmR5cVFabnJubTBrQWc4X0g5TGQ4UnRGZ1FSWmlMZ2VmYzZIM3dUcWlPSmVWdVgzT1Z0dmdhZzdBUEtZcDN4MW5XVTdld2luMG5JaHpld1hTclBBVndYTF94bXlKU1ptTnF2NGw3blFXYlVvMGo5Wm52TEozRDJESG1KNEJ0V3I3c1JhT3JnMFM3eTc2bC1LNzJFRFkweDc0aTBRMXc2bWc3RzdKWmtwdWtsTm42QmlDUDVGektJaHF4U1htanRGMEtvLW9xZEFjd093U2wyNVVfRlVqSVpZTVZ5MVA4Zno0RE8zaDM4cHdTT0lDazBSUXBfcGNybEM2aGU1bmhhU0hpa185c3VpdmR4Z1o2TmJrOXl5SU1yVEtLajZmZE9jOHMwM2VQOEZReFhGejdqVTJLSkJUaDdXaVdrdWdwY3NLZ0o3TWQwS25FOG5UQy05UGxCVU04T001ZnFoSThUd1h1RjI1UnlIY0x3SU11TjlHU0trV2k1aFRHZXVBcVd5LWNoVG02Q2hiNUZqczlRa1lnbS04Z204Y3psUTNCVTVEQ1Q2NTQ4emM1dDNsX3hDN0t4WGRJaklEQUV0R1NFLUgwX0J2ZjlsaWtlZERuSWNZc3VXRXdMU1RpWE9VVFo3bnNnekx2X3plRk4taXRrZU9MSjduSFA2OENpV1VVQy1IU2FCU0pDeWJGTDZaMngzcHh1QlNsRHl1V21aa19DNXpGMUQxbzBkek16VWhyYzc2emFWcE9RRVFzQlM2bmdDOGtQU3U0cVdQM2M2NDV2bWZ3d01ReE55Tld2Mi1pd1c3N0s1X3l3Ry1vZ0lUd2dvZFF2Um8wZlVNNXRleEJhaHl6VjBwcW1EeTZfLXBudHJvSEVGam9wT1dsdGpGRDdubS1aVnZaUjltYVZZY0RmbmdoOFRlWEJfZHFIX3IwbUxWUWxPeS1KQXo0QTlGcWZOUnBoWmtfWUpXY0EtdmNVUVBMa09JRm16dW5FRmtpMkVuUWozNlY0dkZ5R0hZX1pCOGtnR0I1bHB0OGJrSkNRQ0VJSmJGZWVEb2JaUkVLbXFid0JsLUZHU1NvekRrOUJ3ZXU4QU04NmhuMDZGRGlrZGQ3NTBiVGcyaU5hajF5U3NJNEVHUS1tU2tMWjg0ZGhhN2tiWEdiLWJ4aHo1bzJ1dGxIM3pnZmtPb3VaT1pqMDd6ZGZRT0UyUHJyTmVSaEtVQ3RHS2FBQUhxNmZIQkZmRUVPb2NLSi1KRXdrMGhub3l4Z2taVG5lelVGZlZjVmdoczZWbW41c2dybDRUbUJFa3REang2aFU1QnloYTRWc3Y3emJfZlpCZW1jXzdlZDJFWGtNVlUwTzZuZGlzTllSOG1GalMwejNzZWVNVzU4a2IxYjFpUzRTTnpNV2Y5X2o1dFFBLXhROEw1VE1CUnE2d1dyTThZdmhLemlsRktfclJTTXZlUl9OTzlsMDJZWVU0cmUyM2R3Z3RVME5Dc1RPd295ZDJrczhtM2NGX0k4ay1YaHc1OWt5YWpSZkpBX0VMRnZpZlhuMG5QSlcwaXcyM2d6a0hsN3o2SFg5WU1fYlR6Y3BZSFNKNlV6VEZENmtVamZpSG5ndTJKRkYzY09sVFJHTVNTWEhRbXoyd2JJczVRZXBsTEN2YTJJSWM4Y1YzZkMwVi1KSUtpSkJac29OOU5TR3JYS3VOSTFwQXdqeEZjaFRfek5wYXR5Q3llOWFxcWJpbDNjTVVfel9zZGxMc2lYb21pV3luNEZROUxiajlXUjlkZE10SXR3S0NkdHNlZ2RHdThaWGxObHptTWUzU1h1OUhEQ1VMMlBVRDNHeWtrYm1FMTd0S0toa19oOVk2NmQ3NkUtN2hUdVBocl9LWXo1SjBaU3dVQUVFMGEwUXIyZllmbHVDbHlvQXBNV1RTRHhtVWNwMHJKQ3BsVy1XY2xzUzlxby0wdnNKMEtSUlI5b0ZSelZQTUdoaXZ2amViZzJPc2tRSUUxNkYzUy0ycV9kWTd5QTQ0ZU9pY243LWF4bmR5YlJ6MXNPWVBnLUZibGNOMkd0NXo0ek9WQ0d1MmdTeE5pQkEwbWJKV3hUNzhRcm8ybllxZU41SzMwTG14amNpYnFIS0hNd0tPd2c3TXZMVDcwZ3g2djZEYzFkRlU0enp2R05kSW9udUZpMHQ0aGFRSmFNTWlROEk4LU5HVGt3cFNyTWt1TmRCRFR0YnQxRDAwQ1lSM3JfcW14ZWJvU25tLU9VM3JndzNxRE53TlM5OEhtbzhoaER0TnQ3a2txNFN1RG5RVzREaDNoY19qTWdlZ3prUzlzd0JjU1AxZjRGSE5rMFZXN21pMF91bmxMY2NlMEpnS1FGcnI5Uy12enlpa1ZlM1Q2N1Bud0lOY3dFVHA3cUFOQWdvVkpEb1pLNnNFQy1pT0M1bGkwOFZ0QnpPUmhTUlAtam1lY1BndGZubkljVlI5QTBlMjc2S0ZZWU8zRzFCTjFjcXBCZE5Qa0hESzdXRkdIbzZrUUtUTGQwODdkWVRJYkxvSW5DblBDZ0hmeFlWclAzeTJLYzI2OTg0M1BpZDBWS2F5MnJpeWxYdy1mNnFhTHd1Qk1LZzZ3a0hmQkd0ekh5dDJqLWZmNHpXMmRtellmdVpqWElMOEpvaGpkUjRpUHV0azh2b1F1b2dqVC1vTTIxckMxSWt2MV9yQkdIUi1NaExYQUtTcFpmYkZJXzBvLVA3M25JME9zMl9WRVJpSnd1cWlkQTdYQVhKb3NUWGJXNThaQUI4cGdFZlpmdmt3UGRraF9YZWV0NFJtdWRjWDRkVHlEdG9HTVJSdjJZYm9aQ2pxdDNwaTBFUmlsbUtEc2ptOWJPX0FXWG82V0VqZUY2R1lSOTYyOHBzNmNsV2dWMzlFY0ppVFp5djJvMXdiX0JWWk9xLVVWYVdzbm04bjhOd0RHQm1JckRzemswMEJ4UXVUWURwcXZTZEtmTjZSRUwzMy14Z1REUXBmSklSbGd6eWdya3IyWlVWNzU0WE1oVzBXTkFUNzBfdEltZVdvamVhWUNFLUhybDFsTm90VzZzSlRRWDZCUll3aHhoekdfVU4zZW9Ta2hmN0lkZV9VaW8xRjVYUzZTMEpjelBlamUyM3FhX0tzcVR3eEZJM0NCX0tDdVpyR0dwZ3hYOTBMZ1JnMFYyLUR6Q3N3SUl3RFdTRU8zUS1SOWlidERXMkJFZFhGVG1scGg1bUhPMDdYUmRVN0V0MDZUczdTMHpBUy1JckdocW1Tb05tTGJ2TDdrQkVDMnVMcDlCNVBUZHhBSVBmSlNSTThBR2gtbWRDS0o4RHpLLU8tQkhNWVpYalhURm16emhVZEItSDlrcnR2eUxPMWs2dDItUTNWZ0FMR29PTmJsUm85VVdVazVHaGM4NEJZQkxjVFBxMlRfZ1F3Q0ZSaGFSUmJEOXZMYnhWRFRwRUI2TmpaT3hBcGU1ZHdrR0pINGpXakFBeHdHcU51QXZ0N0s1am5PdVlRR0tQZUZhS3ZyTDYwSEItZE1yUWJYZUwxelJQZXpPWmdsVExvaW1NNGZRUDdfb2FmbFAtX3dJME1mNkpoUWhNZ1VyNGM2dk9DX2pLVFU0REtvS1QxTTFIOVAtRGN1eGRzczhxLVRpOFBOUmlUTUpHcWsyRDZvX3pWZDJ5dGx3VzhQeDB1emd4NllYeXBMUVVVQjBlZWw1Q1VFVkR1ZXZYYWdtZ2RJRWR2YXh6Z18xZGwtQjloZTlfcW1IMU9TMVh2WXpkNF9MdDdNSWZqTVJpMnI2VmFqQXN2VWVuMi1qN003aUFNd2NKd0NRR3RDNG5DZmpXb1dzYXh2bnJYOThMa3RWLWxVQnFBRTFYOGhvT1h4YVk3aktMbkhidm5uZEl1ZWVCYkFfeHUwNnlsZENfa0RaYTFXeE4xMUZzbHNJWWdzcDhteUVZNWNWTnhlcmtmOE80RlhJUkF5MVZPT2tFa3RnMkJHUDVLYzBpYXNuYzl5clhHZXZfYWkzOElOTzZGMTRYTk41Z1hoZ2gxYUl1dXFZYmRkVXhYWFNxSHd5NHl0eFV2RGdqYWNJTDQtMTZ5UkdCWFFDZ2oxOWFCdzNKUmx2bkJoYWZpWEZjYjhUZ1YwM0l3bjU4ZVJzZi1mZExPRTU1LVdXdm1MdmV2UHFTelo4TE5KTnpsclJXWFkyWGxaNml6RUdXUjJPcEp0bjRSM1Z4RE5OQVFmWXc1bGFRNlJfYjV5M09sNTZ1Vk5LLVd4VFF5blFNeHhWQTdnbHFCY3FVaUk5VlZPNWpKWjd2dDJSd0V6ZTU5YktDeG5PY0kySExjWUp0VWE4dGZObk9FbGZkaVU1QVpPcVhxcS1XNVJCcUFsdWlJYTVtN0JOdFJyVWJub1pCODJua2ZFbmVNVXZtR01UcF9TYXczOTVBT01lTXFlYzZaNzRFRHB0UlJYdzlveS1DQmNUd2xaM2lWd0JlTFJhWmFnVlJrLTFkcjY3Z1VYc0RPRElFQi1FQkhmeXZDUjVTT2cwQ0RLOGxHZkhvaHFTQjlCc1Q4eEl1VmZrVDlkeHRZbzM5b2kxbEY2NWZOTmVYTEdIX3U0N1NmVFEtTFdleThtaHJhSmJvaWVwajFfQWE3UWdBamtfZG00VjRuREpsU0I5RklRcXdQWFBEOHZ2eTVUbmZ2MXVqMWI5Yk41VDNlYVVMQjhSTWlNU1JIeGVfZmhGSWxJWWVSWUhEUElieHMzRWdwa0hCV1NxSE01R09KbE9YRmhSQXUzNXMySmJ1Y2ZWVThBeURqX2ZxdjZ5QWJuV2k5THA1RVNJX2ZUVDRManI2S1IwUFRoLTJ6bFRBSmcwaWdMZEh1eDdTVHVuUGNyMjRsOTd4dXNWNXpGNkJJM1l2UzhhOHB3c25IT3FONGtqMGc5cGZzOEEyX0xKdjRWdS1HYkRNZVIxY3hRZmNwSUZPaDB5VDJYR2FrX2VKYll5RnVIWUlOTFJ2bU1neVg5NVJEUFlHSHNRblA3dEQwaVpOaEF1N0pzdlkxV01ZMHpPTzhRZURNUGdEdDhYbkZ1ZVNJQ1did0R3WllvRjlLT3l3NkdLVThHWEpHYXRCQllGYS1wQ3FtMHgyUWtUYVFuZkhGdW9OSzNiN3pJWXA0cFFHbGJhZDFVNkUwWkVwelpjcjV2SXQzWm1vX2t6N2lqWUhNOVhSTERxb3UxQUJNYzBfQkVWbkVQVnJsMHdfOGJPZkhjRlBWbHZKZXExYjl4RGpMV0VMSHVwLWVPQlFmOXlhSHBEZUdJV2d1NDJGLWZNbkRoSGtUZ3RTUk5ueldrcWpDeEZfSUt2MkJCTHpXbno5cVlFbFhIeldtVFphelpjYVJuSlJCTldnMThHNUhnSmtMUlNtWmh6WFJtcVRTTENQNHFYM1dwd2NIUmRTSkVNdDRyWlV1Qjc4VWwxdDVuQmk5cmpremk5YzV6ZTZHTEpNT2g5Y2JEMi1pTzd2S0phZUQ1dFVxLUFFVS1LdFVDYzBsUk9aN0g4R0xLbkpoLVM4a1VrTVl1S0VuUnN5Nmh3VGlkZmJFZjFKSk15Y3dMX2p2dTVfaXZKdkZ6N3dNNWJlZTd0UHgxSHZldGxoZ3dlTFpTZTJ5ZlZpYm9haDFtVjNINy1XNHMyQloxZzkwcFVSMHZ2ZmFselBMcUZja1lMN3l5WTZuUUR4by1VaGxJbFdZWUNzV0o4eUM1cFlHVlZPemlhVHZiaXRzSTZrT3pmWnBtUHhtZ2lfejBWM010cHRJbEJaSy1DM3Z0d290WDhpc2VZa1NhWlJDRlh4N0ZhbzdyQ3MwLWtQanQyVVE3Zjh3X2NhbzdtVXl1M2ZIY19Cd2c0cTVFRzBMRXBxZ0Q4RG5lQ0hVemJqaUlBOEVfMkV1azRFajRZMm1WQndlVU5XVXRHM21MME9wMW02M3BoT3FIWVVoY09ha3JBdjd4c3UwMTQ1UHQxWVlUVEVwU2dDdTFmbUpVbmhHVEFlSDQwTjI0Z3N4R25iUGc3czhDTnVmaHpxdUxvN2tNamV2U2czSmZOMXlKUVhKekNCVGYwSlJHVHgzZklsdFRUZlk1alVUYVZSREFESVc5S1BTNmt1WFU4T2hxOWl1aWVQWF9ONjJyZVJ1SWZIdzBadE1NN0hydE1FVm40MjNWaWkzYlhCbWRRVTlRYUZmTkx6NWptZEEzSkxQU0t5S1dqYzBxZmxqRWk4RUZYbXotX0Y3cXZIbDFIbFZQcEZabi1QSlAxWTNUY012dTYwRHJGOW85YTh4Y1ZpV1NRZFZ4TlE1bUdGblF0S1VVajdfWnhLRmhsV3lkaVEzR1RLOU5nYXB5M3QwWjBQcjU1dGNYQ0U2QU9UXy04aV9JMWhncnhPZFRDQ2dMQnBNeUVGMm10LWpCS3ByRUtjNTlVY0RLdm51MWxReEZtS3dkdkNRajE4emdPU1BPQ0FJRGpRT2ZMMDZydURQdzdhYnBfaU15OFVRaklYUGNmMDd6MHJKcnowbmpPVzYzX05mejdBRG1nMnJkNmtqb2dJOFFpVjVlb1Bmdmp6YkQ1cTJVdkx1aTZfT3JwdXJKbEt0UnpyeGEwaGpuRnBsdy13U0hmTERYRG44N3RDZDJTMnRXdDlKejF4WXZQSVJuMUJOTms2SEt2cTdpY3BoZTYxQVJkSHZKQ1FQc2otdzBoVGR4VVpJR0tCZXR6LUE4aFptX2xTX2V5VjdrZ3NrVzlPRmNSdEI3MmNuZ3Y2U3dmblJudkhaTzhpZmV3U29Tb0RISEFFTkdSMTZ3YWl0Tzg1Q05XZXZMZUZIRGJsNlFIZS1JSkg0Vzlac19zMWN6MlRnR0Q2ZkFGUFVFTk5QbVI2bDJNR0dicFlSallpRk1zUkRUWHhqeGNyZWIwWXhKVFZYajc1ZDlySTd3ZDhYR0o4VDRYNDZmdnUtd0VMWVd1bHhmREVNTWpyU1FpMDNtcE8zSEFPdzlyQnhvVF9TX0d4RXJBekRFM2RPYTM5VEJlaE1XNXFJSGVUWjBKLTRsN21MZUdTajNIdWpoNS1Ddzh2UEh1dVZrQWF4WHN6b1VyeDVQYVE1NjNxTGp5S2NpMVA2UmN3QVd0UTRaNWdfbUJRejFTZjJjVnlwLWNPUzNpQlIyOGtoRWdGbUg2RXREQmRpUWtiMnZuZDZCWHVJa1h3MGNXUkZldWVLX19pWDNLUEpxVW43VEhLTEVhbWtRSHZ3dVVsZVJ6Yk9aMUJWLXk4SHFYdkU3ZTROcFVFbGw2SDc2MWV2VzlHUnR2bjhUQjFhVlN0NlVOaVJSLTdHby1zTXVMNzN5Q3puMHFYME04SVhzUnotVV9LNDFFSExnT1djcVhSRl95TDN3aXFxREktdnZEY2F4OHVtN1Rhb0lreEFzVTFJTW1MQi1PMGJ4VUUzMF9QVmxmV0sybm9XaFdScmg4TElESE01YTBlZDliVlg5QzFSNzA5R2lOYzlNRW1ERVdNODZ2ZEFEOEtmSzFibHdPRnUzLXpSQ25waFppXzQyMVBqV1MtVC1USU96Mm1hODZPZ2FWZkFQSGFSRmNtckV2RGs1SmVTZmhPdUIyZGJPbm5lY0VmdXUwU2lwWkU1UUlydHVJS2wxOHBXMTNKLTFPeVNzOTFZaW03MDQ5dV91QmkwZjU5TlR1RnpQZ2pOZGpWYnBIRlZNZ0JNRWdBWl9nYVJtUmhTRzMxUUdkUlRBU0VjOVhVRHpVM0o2SWFvTEVMNC15VnRhVUE1TXRCYVFwWE1Fc1prYWJlUm5haEpIWTVtZWV3NC1qekMxZjBsTkliTzd0c1d2Q3RFNGNGcnptZlNCLVVoSEJTUmNSYVJwZ053Z0tFU2ZWc3FpN3NiVGRQeGNUN3Y0YVFDeHJnWTgzRUFJZHZmaXB1UWs0NTduTTZsSVJLSXhsM2VBQUpkNGpqcWQ0X0FvZUU1RGIyZ0ZIbGxJQUlDRU1JRllfeGNYN0xERFNBMmkzZWRnWXRiLTZrVnhaUjdZOHRPV3B5SmFxempvR2FVUE9FYTFzVkNTdzQ2MEdwcGJVZnljeFZZS0pkNlNTYm5WMjRrMWxqSmx1UEhtU1JvMFU2UUFTWjZaLW9YOVEweldPTWF0b3ZpNzRodjVsb2JXRXJ4M2lNdXhjNW1tc1BvczR5eDhIN1ZQR1cyRF9PdWV5S1cwREhwTmpLbXRLS1JzSlNpaEh1RV9RdmZYTVZsb1hURnVKc2gxeERZMUJwWmJFb1E0UERmancwNnZFWkU0TW1HbEJRUE1vV0lxUDNMYXVpelBqZE5LZE9VZG50SXBzWG9ERjlTZnRWR1BMVl9VazNfSm5HbEVjMENudHRqY3owOU1OVmJiWDRPRU5tUVRaaGQwZnBkX3R3N0RsQmlKLWNTQjBhaTNXdzh6dWRJdm12dGZFcm1IdFl1UjAxTmQ0V09SOTM4bVFxSkxoU0ZDbzNHVzJ4eUwzOGg4Rk5jdkh0c3RSZ1VfTy1XcENweDlKZWxKeEI1d3VId2ZMdlpObmpZeU5fQjNvWUhVVjlCeUROV0RwV3FhSkljTlE3VXBkQ2lUVldCVDl2cm5BdzRuQzVfSDQxM2t1SEllZjZYTHhoRGh6aC1SaVUwRVVlSEhuYUFocjVsLVE0TktMbjVyWWJZQjJhZkpxVWJSZnZVLVRCejRHRUM2ekR4TXBSQU5JdV9iOVBSNUlvTEo1bFdlcUdveGxNaFdWQlMwWk13ZEFLUk9TME1JNjNfVVQzVVNGUkd3RXdNQU93OUJpX01UdnJHMHRRaHQ3cm1IWjk3ODBRRHdHMk1tOG9XRFhBS0FTSlYzX0EzVGJLOWxBMUJHUmtuSUh4a1U2X080aTZzMmlUajY0WmVEdjVHM2FsTDd0dUFXdnJCbkVDaDRva1djUTRYR0tuM1FfbHVxMVZ5X3RWYk5oN0JwcG5mRFJwVTY3QjJVQ0x1T0tscVNUWWVqNjhPZlliTF9OcUxpY0Rpc3JTY1ZiNnlSRzUyOXdKWVNxVHhMQVdLV2NUWU1lRDFtUlI2aEwxcWlKbVh1dkVCMDdqemtRbkcxTUpGWVE4aTFQZnBxOEQtZ0twWUl0X1A4T3Z2YmhQV0xDN21weUhNSkNjazV3T1p0YW4xWVdZYkNld1NlNlZOWmtVSDY5RnZfbVNOV25nbnJwV1A1NlplSFRUMzQtS1ljQ09sZWUyTDItaldDcnhIamIwaTE4eFhCeVFNd21HOUliN2t6a2hPZS0wNm5WNTNNVVRveE5yV1gtNUdUZ1VCdE1PMVppdUR2Vy01SEZaNW1IZjgtTVhldVNVVk9oVjVGT2RnVkhWckhFMk43SGxrbXp2UUFldWhlQlkyanZnLTQ2aVNoNWctMG1EOTVRbG52OXlLa1llWmNnYi1RSU1sQ2NDZk9QZnpUNmVjejRQZElveURqTGhMR0xDOFpqSWZxSV9LdkxKYTJGOS1sNUg0d05NMDB6dHpvNlN2VE5TWnNQbjdtRlhrQ2tjNld6aWpuVi1NYWRyZ08tUUt0SGdZWGVBaU5DSnAxTGMxVTVCemxacUNodUNmbzJfTjlib3lvaGNDaTU4SkhQMEg4clVOUjd1VEVrLUdDRHlwQkpuYU16V09xcWtNMWY1YVZYbWZGeHZrRzdIMHVOT1N3bVZtRV9RV1ZKbmwxUlNUTEF5eXc2QlYtOGZBUVd3ZEl2TVl5clh4bk5GLVgyOWxPWG5uSWhLWkZMNm9KMGg1Zy1TVmZEZDljbVdYZmFfYVpsUXRqQk5sbm8xMGVLXy15TG5nbDFJSjRLOTY2WktuX0dNcHZaXzNzWC1pVzlReFREb1ZGci1OOGJXdHJ6N1RueVJMSGlGNWFlODJFeWtxalVCb2swdHVnd1JMWnptbFdKVVI4YktWejE5NURTUW9jaFJvNUx5cGRnRTRvalNQX2xGVzJFc0I4V2RsQTFaZjFIV3gxc3FiT1pVN2NxUExtQnV2emgtVUktYVNrUnRCX2hxdk1qd1A4a3BGamtPSlctek5zTFNqZU1mcEFqdWlpOUE2VUh0S2hpc1VTNWlmX21ZR0tJTXdkLXFqdVlEVE5iNEhVaG5Hb2F0V3JPaVdCZE1KVzZRcFJ5QnNKSWl5YWR2MjVod2QxSG9kaUVpN09tS1JQOWVwaHZORFNsVHIwb05peHlvRjVRcHhRNkt0NUFMOWgya2dJQktyZldoSmVHcm52U0xaSEJYYTZPSFZfMWNDX1VteXJGV1JJem1SMnZQX1hqYkhPUnBqeVhkcHkwdmpNQmlvMHdTa001Zm96WC13d3FUNVR0RWRtMXBIc2ZaQjR1UFE5WHpxTXZVSEd1UmlOeDZtbXZDT1dBb2tienp4dHEtQXRCZFBDVHRxYm9yTy01SVdZQzZyRUVLUy1HbldSRXFuaTNILWZBNE1WVkhZODBEZXA2RXFNeGdVMVhNVTQ2cy1KWmxIVW1wcGFhQkI1V0VSaVo2aEhiMWpsR3ZwRmI1NVRONUV6U0VOa2E4YXVqSzBBeHgwMG94YXQ5OTEzUFA2VUNoekJlM0ZMMUlnUElITmZHNVMzOHRvTlAtTDQ5ZENPT2RRY3UzNl9JU051ZGdnaWhxYjlwdjhvRV9wTFVEMGtWMzR6ZGZWa0xldDFfeFFDYTE5bkwwVUJtU3RPUlZPRE52VGhNeVRKZXExQ0daZThZUHFPQW9PZmY4dGd0Y1VaWGZ6M1BBYWI4ajhYRVp6V0VEcWxncXNYdVVkaGdPVTd6RjFINHZvbHlzcWo1M3RKOG1NWmdhaGIzY0ppVnhhYUVwZTdoYVI3QmgwQURzQmNoOWRraWFjNFAtZ3g3ekFVRF9sNzN0bnMxU0pJQ2haTEItbkVwX1pQaVVfdXU4UFF3TDBIYVJxdV9CTlE2c1JhcmVfZnR1dTlQYzhJREk5XzdPZ2tBVDV6N2xFeGFvOGp6N0xmZ1k4bHAxYldYSTBOSTkyUEFYakpLSXc3ZU5SRlhKeHlqNnc3X1hSekU4ZjNNYkpsRy03YlVObjZBVHFBcUFkcW00YjdoaEhjMzhIQ0dnTWU1aWtTeE1EY0lVbGxWOW44RExILUNuUUM5bEVnd2Z6Mlh4RURqM0hrVGE2VDJUWmxUaER3ajRfc2Rmc3VZdW9FblJlTG93VHBwLS11NEVFWm9oODJoekwxZnVGcUtwWWVZQThCOGo3QnlMdUtiaG1xTHJfTzVyMm8zLVpWQ0lYcndzRzNZdmMzNVliSTZjcmYzbV9MS1BsZV9CRTBvdS01MW80SmRBTE5LQS1ZYUdLdkxCUTExZklJTmp4bXFnWVBBekpnZmJyZ3JLbXdoczF1ZHNMUUdsUE40TUFBZ0xRY2FQcmhXZU1RUU1wNHZmZER4X1I4a2R5cDhQUGJORm9kbXZ3NlNDczRkMS02c3RVcTZwOUItR1Fnc3RRbXNZSlFKeEpLUS1JTTZnR1h1eVZzOGotNWpmYzJpd3BRczJzY3FRMlJIck12QUZiZ0F4REFWeklxY20tam04OVRKUi1oSXo0Qmd3WHRlLUdHWEVBN0Z1b0dVd0VzeFVCcmI0Y2pxQjZLYmphM2NZLUxRR1pnZGQ2Y2JpekRPWlhzX2I0bXV5X0xvejVGR1ZFdFBxSnRHZndKSTlCY21WNkgyRDNyd014UVp2R0RtVnRza1NBNU1vTlh2d0tVeHQ2RG9xODktRVNkVjlyZWZuT3hvc1BUeDBFMzdrSVBrekdtdG45WFBGTm16WjJHU1dRT1l2cXpzVl9qVmkyWGN1ejdrTktyRVNVSGdnUEdCTlhWc0NZVWxiWEtFSDlxdENreHRndmVFVW5jSjZmSVc1cFJ5MUN5Q0dMR3FOZTFaX3h4LXRtaWNzLWVvWjdWdTE1ZXNpc0V0TEt6UnNjZ2xUTzdtR0JZdnVBdUNtR3p2eTZzZ0EwTlRYSlZVYmc2al9sRklPa0hGcDdEc09EVWZLR2JSTU56azhfbkNaWmJoZHFVWjh4UWdWYnJKNHJrckQyWmRuYVJkWU14ZENVNkJ4Z2x3SzlwQ3RxUUFMOURFOFRrdHVIQnpqNWhuWXJocXR2S0h6M1MyQnRyR01Dc0VfOEtYWHNwTG1ST1NPM3BoUE13T0hJdnMtM0lSdjZMVzl3aDQ3aGxJSVZjSVUzSWRfUlBuNmcwZlZwQ0x2Ymw2cThwWWMyTWxQSW1QMlZnaE84QTYxZ24ybHZmY2w1aGJoV2FQQVpvaTdrWW9XdWhCUWw0bm9JclBORFRGNlJqaDZGSVduME1hbS1uaW1nSmk0eWlIdGVDNWZVVjlLcEFuZU90cHF2RHJsc25ReXhrZy1INTZIenphQnNyZVlJeG1sMWNBLTVtQ1k5RTlBRVo5X0ZHWFlkbXNBeGRvQXVKbjBMX2JodjRIa3U3bzJQVVpDa0JMV0hYelJ5TG9BbXVXelpjZVZmY1NZSFZaOEtZMHlhZnFHXzI1MHZKLS1lUDU2VjByNXA3TVRqalNTVDJ6S1lFMGZfQnBPN1lMZzZBUzZCS2lPYmdubDMtNWhDTHEyNzRvemQzU2ZxUGJFYWxTbUdDQjg3OUU0T2Z3NjM2Nm1tVUR4b25CNmtnMENDVzRHWkRZcHNwOEN6Z2tCTmVOWXk2NGQ0SjVNMzFoamdPcUdmbUVrS2RxN0FXTzQzYW5wQ0o0TUVCZXBDRTczX0hJd2xsazVwQm5nai0yQTBhclAtOUl5aFV2Mlo0UEF5YTdXZDlQbUwxdWFsbXBDYmNGMWh4RkNLQkt3Tm1DZ2xSWjc2azRwNTVoOTlmRHRycjB2d0Jjc3lOTkJDMXJDcndIS3pWb0hnNXJnYXRVSjBKa3pOMDVod1pQUVAzaEtULXhPVDJKSHNURGRTZmdzWVJNUkplY2YyUlVPbHR0M0JBVTJndGpMR3c4RHFlSFVUY3dVWDFRUWx5RTVNVi1IRFdYV2VGS1NvUi13bXpndlgtM0twTktnZFFEb05GVzRhYkFKclI5T3FaQVcydWZZa1VZel94YmlKR1J2MG5wWU1TbkJhZ3BvVmxtU1EwbG5iYWhzd3N3TWUzTjBxRVc1V2xSbm1GMVBZeUo4OW1aaGhxVUhPQkFaTE1SSmdRMXlpTk4zNTQ4VTFfMkg0MDhQWWxMQzFYS1FGcWFIVDRwWlpSVXNqdGN4Y3JGSC14aHdKN3JueV9CcVk4cEZGLVlrWEU2TEs1TDRWU01LWDdZY1FYZnIzYm9uM3JTVWVPOUhDOHRRZ0hGRElsajcyVVltVk43S2xGb2ZiUTBnMFkxWGMwX1A0TkNaTW13S0hmeWJDc3NXQVhjUmdMaDRjb1Y0T2p4RFBGTkJoT0J5RlVEZzZiaU10bmV3V3FEclRtRVpCcUJBS1Q4akxTU2lnZVpLd0ZiWXVEV2UtYUpjdU5MeVRyU2pyWnhkVTZwTUUwUFhxWnQyeVZHYjZ0TjY1TGVJbjAyM0FiNlE2d29paUxUWEpCd3dmZjdvc3MwN1lJTnZBdndlOUx6TGh6LU83NVlQemFIeUhZOE1xbTRjWDZLSGJ4Yml1Q3o5TzNTYURLbHVKaGpQdnctOTJfUFl3NjQ0WGQtcHlzLXpOQ0JYQVhGVEFmTHBnMkI0d2FMck9uTnhHN29QSXpOaXktVEVLR0pkS2dCekc1Mmo2NXpCQkhsVHFFeExfUHB1eUdwRGVKN3BTVDFiaXNXdHRJZURScTdiM01Ea0tmTU9pc09SUmthbFA2ZmlkM0NRYzkzTmd0dU1sUDU3TTFyeGlzNEJmLXhWVVJnR3VLeHlLaExkc29rdmNnXzFETFdmQTcxaDdtd19PdFpHM2NZN29NbUstN0MtbXVheHNmZ2dkWG90LUktcllmdnQwbjZQYTlJLW9sajU4Y1JqeHZDYTYzVUlOem00NE1ZWURUUHBlUGZZcUthbkp6ZmxtV01DQmVwSlFidzlBbTBKYWFfU1BWZHVJLTBuTm9rbXpuWW02VDJyaVB3d0pGb1VGckQyVTRzZ2djV1M1Qlk4R1dzZW1lV1dlN2k2XzZfTkZ0NFd0djBjY1MyNzNsUHdMS3ZwV2JFekE0djgzYld6X1JodV9KVk5saE9JVUdNMDZ5bHF5TEpJdEhLdlliU09tekxZVWZ0dWRTeE43V1MzZm41a0gzckNHQ084am5sS2h1Y0JudlUwcE41Z0J5ZzhHdElxdm1reW8tRTlaZXRjaXNtQXd1ZlJ2OEZWb3dSNkItOThaaHNjNXo0OVpGOWQ3UFRqbEcyYmc3bFpSNWxFOXF3bkZaa0Vwb21KLWFFc0ROZl81a2d5ZkRtck1aWDNpYy1SRlZGai13QXYxMkdUNEJSTlZJbmthUnNXX2hZZDZUSnVRZVlfN2hMNVVndlBOMmNDcUlFWUdMRmF1RUxKeU9RZ1BObXN6MkIzNVRNY0hNdXhvVU9fbEUyNHpOQUtTaDNOUUt6dXRZUVFFenBlZTFsczV3MlIzWXFQb3l2aHYtMGVPQzNpTTNMSHdmT1pFMnV4dDZxSVlCRk1IWVBrQW1zNFVGVmlmU2VNckhpV3BoNHRMUnFWMXdMbWk2OGpoRUhpdWFqNjJoU0xINkdPdzlXeXctaXFka1YwdnpkYl9FMGtEZmtEd2tBSjFiMnlXcHJVQVJxMi1qb05ac2toOFR1aVQ3bzRQTFNNd1F1c0VmWlZ5RDVMTFV4TnB6bDMwSDloYTh5bUM3bnFpQko2dXlmRTRERzFlT01obV9JeG93eFZZNDRRa3pqeVl4RXQ1N1FHc0cwb01IZ0lpMUFjQ0Q0UE1FU3lyRks4aUVSR2xkME8xanhQTGJ2Y3VPei1aMmtybmhYNDdYeS1BN0Q4d0hmdmN2dl91TzRQakd5eG40Y21WazFhdGt1S3lkeFNZUkNTVDRtRmhsNnNFU2pJVjFCNE40S0dMTDVWQXdXWVFJbTBvREQzaHJub3VwTHkxdERQbEVncUxYZEc0ekdrV21CMzNxYkwxTDlBTGtpQWU2SEx2Ny1hTzA5bThoNHBsTFoxczBXZTVMZkxrRkZDa0x2UmJnRExVTU0yajhXVThQQVo5ZmJaa1hINFJ1QXVhaHZtbEdaTUQ1ODNkUlJRZGNCaWU2c1VTQi1iOThIT1NNcGM4UlVINmZlRlJlN3JIRW5vUWN3VzdTSHU1bk1tdENzSC15Y1lkbmpkZGt2bG5TRWZKc1RPRm9wZTR0Y0Z5RjBTQ1ZZeFFQRTRkaGdncmFITEo2M0NESnNvOUYyUG1UMEgwc2ZRb3JfYk4wU2toLXlpdTlPXzRHUTdERFZMUTRJYlNQeUthVlZjcnNKT21xZ0ZoQUJTWmk3Wk1HajBGMkx0WDhTVWJMRV9LQjJLRzZaeEpHdkFxTnphUkw0SHV0bjVtaEVBV1JVSzhuRDdNM3dRZTVVTUJrTlpqeHFzUWZ4cGh1SnRxUkRXSzZmdnJ1bVNMb1ZqRC1sbzFQQmYyVnRIbmlkSTRkR2EtQ091UWxuNm96RW9nN0x4NUlIRUR1YVNJbzFZWThGaElLZVZRNmpoZjFJWnJEY24ydEJkbVdHN0Vnc1hzcWV4VnZFUWo2SFoxVzRkZmpyWjQ4NUkxaXR4YXlxb2g1bEVodWlOU3pFekg5aE5nTXJaM3pIbDVaVUhhYV9SZ05XUEdsaGU1MjhRYm1rbHlub3R0dmpqS3JVUVNuWHJ2QmhVekNwRWdTRi1LQjNFTHlMYjZKVDdhNHYxX2FrYnJJZUZMV2JNa3B1bmdwSFowVTBCb0RmR0F2d29iNlpBalhSN0x1MUItdXZYaWtDbjFnQ0lmSEJjM29SakdNSmhyaVVoaVpMamVaQ0ZEaC1sVTBhWHEwVVoxRHg2bGZ0bWNEd3RlMExHYXRkY1RMendYem1mdlBJWTdtWmswTE9VUmpfNE5rdEc1ZkVYMEU0ZlNrNXg2a0R2QTV1M2dNNlF5bXVXSDZ6d3JabGxGdHVZbUs2c3psZmlHZXkyY19TVjZBWFF3MGtpa3FrR0c0NWtaVzBKRE9xT01IeDFyNV9IdWtpX1BESWNVeDhxNkx2US1Od3cxZnVUeTlfMEJ0aWdLbUxudGNwR3c2cWhmTzZhc3NHb1hreEs4Q0ZkbmJFRTQ4MGxVMTJneEhlRVZ6d3Z2LUVlWEtHOEJsR2RlbnV1encwNlMtM2N4UW1sLWlxcUxjUVRfRDdrVWZvMVFSUGl5NXg1SGpieWdVMXZvQzdHTmxHQnVWWThhY3BfcnJVT1plSWp6dzRMZDZMZlhraTBna2lWZFVIZFZHNUs0TEpCdmIyb0N1eW91OHZEdWx6UWlGVmI0YzlnYl80SDRxZDBEUmRGNVc3MXppWWtXOTY4VGJlQ01sTnk1bmoteWRWMGlFc3phajRIdWxWa2piX183cWJJSThfeWMyU1d4UXMzN2JlMVpWY3VNWl9NQlVzam1RLTc5WUV3dzE5QVRhY3hzY01kX0xsVlZlVW9QZHZXOVA0Qmh1TVEwRlJFTU5JcUQtOFlTOXlaeEdXdFpFRWN3eDNKVFIzRFBTMlNCMlJfXy1pYjRZX1ZBMzhXVWhNTHh4YlVfV0VVWmlGMTd4QmhkdGoxalBVTU1SbUJDT2RtdjE0WkZ1bDFFZEdnU29DWkFvYm9tTENQSS04TzJUR0RxX0k5UndvRS16OFVPSEFpTDdWaGkyREdXdTNfa1ZTZUc0dHN5VDZkT2hGODllLTRubFBNTEREUXFDelJ3RV92cVZqZzg4QVBzYU5VNGI0RHhfdlBqN3NYN3VhaDNWcEJzN0NBOTI3RUlwRDZWdUNKOExJSjBVdVRxcXVhWGFhQmk1dWZwMm0xQTYzZkNZZHBHVGx5aGtNR3lPV1dENlg1UUxtejNzbjhpeDJPRnZkYjVvcEo5ZDhLTkFxMlhqY25CWjN6ZVhRSmFGQ2lCRUNKRlJZaXJpTEF5QW0zR2s5VjYtUmVodDNRREJIX0pvc3puc1RYd1FWMG04S2xUbXN5RzNfXzZqMU13aVF6NUtGbGVGRFl6R29seV91Q3daWWxyMjlQS1pDOS1QdlhNU0tjZ1lQWDQ5RVhBLXljTXZDbTFEYlFheDZodVIxZUVvWHJrcW1aVGc1amZZWks0RXBQdzZ5dGU3Ul8zaVRBUHprVUw2dnVFaHJfRWRWWHBnckE1Mk9yODN1ZG1LNDF3UW8zbUFrZnQwQjQyaTRtaGpWY3o0c0MzczZabE1tWkJodzF5WlZDWEEtR1A2U3dNZjdva2l1SEFrWGFlams0SEF0T3paR1Y3WGhDYjJvRnZFWlJZMm81WHZCZXdrY3hBY1JZLXVVcktoeEs2dVhfd0xFZDRQTnhNSC0wUzhqZlVkUFJuQkNGNDBPbnVaNWM5bnFzR3Q2UEFiN0lueWlIaWFhN1lGZ0szWFUxRWprUHQ5MExLTHVLdnN3RTN6OUhJN0tLak5wQnZOZGYzWXRDVlgwTnlSeUZQalpHeFNUZjdiVGtjNnk1WDVhdEhtZ1BqTzFNV1d3aDRjWkxpU3hMOTJ1MEYwU2tFYVRicE9Ickk3X2JQNURXcHhaM0VDRzhfanVpMnVRTGpJUUpEdlNoUUJnYWN1YU5ENUV3Vm9ndG5kNmZxTll2N0Y5M1dYbXNZOEx6akR3cHJYVU16TVpEWVZXZDROR0ZQNFM0U3k3NEwzSlc4bEFCTXZYMUJfUjBjOWxQXzhqeUNzMTl5UG1FNEdTSVFGZVNRaFpTelNuZWpQZzJ0cWFnaTRBY01vMFFURV80MWNNUUZBR0dReE1mMmd5Vk1aYjRYMTBrdTg0b1M1Y1pXSVlyOHlIdkVpMU1ibFpUVmdKWFJha1NRMEl4bXBuWjNOWEFmMmlPWFNhckJzZ1RLQllrcG9yMjNaT3BWYlJoWUJBc3l1RW10SWVoZmtvMDNxNnA5YklfRk5NVHpWT2t3b0NnMXU3UFBlMjVYWUJ1aVlMOUx1MGI4U21TUkFwR3VodEJqdmJ3ME1ZSTMtWDBaZVBnNDAtLXRFZzh0QTNhdjBlNFBJR254MkNEYmFmN3hEcHJwbDEyOGd0WGRjSnN0aF9tY09iNlFrVl9wM0d1TWhkMEZpdlgxenRTdDh1N252Ml9adEpnbGtaWm9sR25wYk9QWkhBYTZjMXM5clZaUHVQMV9zNm82TUl3MWdRQ0FNdTEwbHZlbjNXMVBxNnZVVUJrYVIzbWdIRVRIQjdienpZUmc5ZGFhN1dMMGhFdVZINTd6NU9RNEVnQjI0TWQzT280NDVwTDdySTB6TmlVUm53U0d6YlROVno0TkM2bzFYZTV4bUpmNURhRUtPSFhUYlRBT2w4TEhlamdfRkdjY0xoTHpxSGZFOWk1ZVNIQWdoWUlwWXFZLWxxZTNyVXhYem1hSjIyd1k5WFQ3c09TNmhQNnZ4ck42VWZnYkJUQzE2TTFCSjZQVVFlVFltNjlyNzlYWjR1S3g4aWVQVHZVbDl6MTZQcUQxWVhvNFh5emF3dXNpd2szQlduOThSLTJrelhpc0ZOVWZFdXRRU0VWc0FkcDAwVmJqa2l4eG13VG91XzlYTklZYjMtb1lCaUlxZXJHUWNCMFI2Q3lCMFZkWnVSUEF2U3JLSVN1c0JjQTJUWnlJdTNSODRJLVR0MExJTHhnSHdVZURaaHQ5b2llRHVmNjZKVm1oV0toYVV0OXp6bXZZeTMyQk5GdEh2ZEk3X1hQYTF4UlVsSHUxNTNnMTB1bUtadVBBX0tsZ2NQTHEwVWE4dTl5MUJVUG9OTkNuZ2xjdFVrX0NqUFk5NjE4YUVCcmhCRnowODZmZmJVUGxnZHdrOEhNTnBCZExDRlZtc2FMWDNUQjJHa1JDZE9aOVNkanF2elp5ZUpsSFQ5WklNckdQTm1qTTdnbTdkbXI3S1N4MDNBc2N4ZnF2NjNkWjIyUjBKdzlFZHM4bHJMOW14QWRkZTFlMF9pUnhUZi1vbjRjRGJNY0pvdkIyWE54Ml9BdXlDMG5DX2Jyb3paNjRZM3hxWDVRY2Q0bU5ONUNOTTM5Q19nRlRCcmZxYXE5MnlReE1iYXlsOURqc2lEVks2V0JOa3ppQU92dUlKc25FMW1PTFc3bExNUEo5d3IzX2xPdkpJeHNPdXl3TENNWHRNdHdraVlkMjNUeXYwdzl2S3RxVnVjY0d5S2xiV2d2U3l2ZDNIbkV4T2lITFJqNE94eHVrX0wySzRsS0o5YXA0R293UV91Z2dUUHI2d05NRlhCVnBWeUlLSzNsZU05aXZkT0pNeUhRQkFNcVBxSVhmbU9RWnpiejFQN200aWhDcEYwOHc1T3NtcE5nN2hXRHNiYnliUzdxVHV2VnNhT0JmeVBHV0lkampEY3FFdVlIN1F0YV9uWERlWTFrdEhVTHlJd2Z5MW5wRE9MbnQzOW5hYWlaaU1OenpZVjc5ajdEX3BKNmR6S3JUdC1CN202Y2ZsazhyaUxhNWNaeGZydzNDVDNZZGdmc0hST0E5SVotUVh6a1FrR2Q2eXdsZGRvTmV6Yk5uMjRzWWRxNUdpbktCTVlzbi1zZThEOXFLMFQ2MGJud005ZUt3WjFnN0djWlpOTHNPUlNuVUEzWmRDZzYwb3NBZkw4NXg5Z0UxMmlLYTBWbF9KY1V6cjFZSWFRVC1HQmkyWjF0ZV9zZ19ORXZVbVI0LXFLcng5TzRydTZWSzFiZXZRRnAxWmw2WTJ3MVJzckVsQWlyRXpBUFpoc0FkLUt3Q3NVbERzZkJQVmJSOERSMVR2ajZaOHBCc0ZEUjFlLVpzWGtaclJVQlZibGdkcl9sdHFoeXdDTFFDRzRINFpxaEVJVjhJSlF1aEtNd0xuYU5hZmdtd1JRQ09WaVJFMjhNYnJaNmdiVVFRdkhKaDdvdnZvOWs2b3NwOHhjVDBEaVhFSnBqaTQzX25NZWVfbnhiMXdKMU1KSDFVZ0U1dXNYU1FFWXpVd2hzRjVCRW9XNDlmTVlDaXlGV2VYbjl6UWpaU1dJMjRVY2gwMW5KME1HQWRuLWJkZDJZOWJpYVgzbnlmcnNhWXNmem1ISVlUT0JfOGRqV2lGUlIzbEI1Q25fNGdMM3UxYXNqWDNaeUp3cDNYUWVIaEdDdVQwQUFxNjYzQ0tLLXE0YXQ5R0dmdXZGQXBVeFVBeGVvbndXQnhQSktESGpNZDJIc2FoZWc5UFl0S2EzSHV6RnZLZnlER0dnNkRiVEMtX0NQLXBvQnRwYWItQ05Danl0S3JDdGl6Y0JHaDE0cmlrR1pheGczWVljU1dYSU9uNUw3dDdmTmlveDVQXzNzWEk2U3dDOXhmcG1PeDVnbjhsRjBYR2dCdE01dllxVFdlbUdjS2Eyd1ZyeVEwUVpSaXZDTjFmS1o2MWc2Uk45cTVLanh0MUxERE9weDJReFkxbE1ZNU1aNDR1aVQ5NE5hc01DZmRORkwzelY3d3VZVGJHblhfc0VOM1FBaFZ4YU5OS0NoZlRYeU1Qc0ZfWEk4VUJxVHloWWVFYlFEVzg0YXJVbXZ4NkdLNloxNTV4djlOWlVFcGpXaXo3a2hKa0UwXzNRakpKZ2doc0g0RjgyU0hiVmRDTERLNmdtejF3ZEhzMk4tX3RmR3FObTdUOGxDbmp2Sy1Qekc3dHczWGRSYk1CRHF6dDZYR2dSdWhfZGZIcEd4ZGtrM0hKMi1tdjlwN25rVGNSYndwcEJaUGZpR0tVMjJ2djZybmdIOVlKd1AzWEdON21YNkZvaVpGVElwNHJLSTVtZk9FejN0RU5UbzZ1b1dnX0p3YlRaeEVsLUdQSWxzMUxoRUVoVDU1UmpLZzNkd3VhSVB1aHZSbDB3cGIwcFBHR3FnNHB2dFhmdjNKSEd6SHFCTVJIR3VUblZXZWlJdTczbHhOZDJWdldpM2Z0X3YwSW92ZG1lNkJtUmg0ZDlZX01sQzJhMzlvUmd4OGZuMlExcEdTUG5kTGRxVWJpRUxYS2thczlWUnEwNzgzVExnWFg1UE50dWhFR05kaGtvcm1mWm41MENPUU90RDVGR2FTeC0tXzRDdERhSTNJRjE1V1NNQy1odUFyem9hSjhMc3JpV3lzZFFESG9BaThwNTdBbW95Nm9WQnRLaThNc1cyYVYteVlUTks4T1F5WDk2VVI3TGx2M2pvVENMUFhQVGk2QVdmRE5LdjVqUW1rbHFMVmdDaW9hQjZYU2ZHc2pKb0pXejc5RzVFMm0yVm8wcUdkbDMyRFIwLTBSZFZQMEVNYks1SUFmR09nVWtQcnhLNXpkS0lacV8xR2JJbGQ3N2ZpNGltQjl3RUJ4LV9iRFlnMUYwLXhGTFpuX1VoWlpMV1pYN2RSXzNEMUh3NmhZN1p6QTdUZl9vS0NhNHJreUVMR0o2eFRjcXNYMUFkRThQTFJXdVc2QTZybzNYc0cxaXVFOE9sT3hHUHpMRWZvWWl3U1QxZF9kWUhuVy1hTG1pVWxzWHY1MzRCRE8tdzh0eTA2Rm85WGs0S1J5aGlSNUlrQmQ3dUlnMy1FM2x1NXlTRmMzWmRnMVJKNFY5LUdCUHNQVno1emI2TnJKTUdOR2RKMWxzQ3NCZl8tQ1pWQm12S3piUXc4WU1UTjg5dklCZEpxcVpDZFJYZi15UU05cTY1eTdpQnVxTG9FQVcxTi0tY0JiX05sUHpCWHhkRmtjbnNoeG9pNUtURGo3emoxdlQ3SGNuQzVEU1RTMDRvcF9DTkxFcHRBZ053dTJDcHJKV3k5UVdUd09MVkJ1MjkydGtyMlNYTXhLc19GWkJQXy1KOE1DTUFHQmhjYWxtNlZwQzgyQ3UtcEZUVXpwSjU0S0JDV3JITDZ5dFpLS1JsNUJja0JaSG5aMTF5b05QWFNZT0NGYzBwbUZBQ2FDYk1relFyT25WaE9jY0x6WV82NzhPRUhBSWdrVzlIVWVaZ0pSNDdHRnNWbWRfc3ZpT0JZZ2RTUGQyWEtraDA4RjF1ckdJX0JEWC1JWG5sM0xubGl2Vko1clVyQXEyYThsR0IwV2d2a1l1M3V4aG1RVEp2eGJjclhvVjlyQU1KWXhUWmw3dWt1eGtrVHJFTXhmV1RFb2k5Z3ZKQ2NGLWcxaTFsWkwzOGl6S3FuaXlGME5LNkVyLUdVQTVrTi1JdW5ONFlwZW5xR1lqNUdrMG13VmdqMDBrSGlFT2kxcHRNMEtaNmdURXFMdXMyYkM3ZEJqNmR3VUNFakdFM29aczIyRnlSLXFmTzRqMk9YdHJGU09tNUEtMGl0Yll5VUFfT0lQSU8zZ2M4OVBXQjhoTVo0Z19qZlNPdGVuSjBXZUpIZld0UVFpcWVTWlBYY0xCYUNMbkNlT0hnY1VtZENoLTV3UGxtaGhfaGNJWkE5R0NhLUJUeXY1Q2FjMXRXUFNBR3gtN1RuSzhLUVljSlI1UHBDUDZiaHlzdk5JSHVIX0VXdlVESTk3SGMtRUNidkNjb0pnUjhlaVdqOXNtSlNteFJfRDhTdFNzZXduek1QVkdHZWtMaGtvNk40VU45SDV1dUY2NV9lUmEzTTU4VFBtS2dMREo3ZUFfM21Vc195SDZtVW5BZWxIZVZXemkwZUpKd1pfSUdMT0QzXzRhTUhHQkJHdlJUQUY3SU03XzZ6YXB2Rl9sZTAtOGdiTHI5NHR3a0ZPSXp4YjVNT1FiQV8ySzFFYUd6T3JiRHdaaDNmZkdDWmRtWkNhUjVhNy13ZlFLakxQelNoMEttU2N0N3BjcmFuMWp3MktQRE9ib0psSnBBUFB3dDNoNkJWZ2k1cGV1S0kwR1hPQjE0VlNKYUI1dVRGNUEzZzF6NW9XYW05YmZsdTV1c0hPbXlIN1VOMVZFUW82cWJFWC1sR1prNEp4VElUakRTaFRvT0QwZWc2WWpMSnFJUGgyYmE4U0lTZy1wTG5CWmtJUGo0TTg0UnNya2RvcjJrWWtvdWg0MWlXTWZMMTZ3S1VoRmQ4Rzl3VDRneG9BWVJsQV90Z1N4VFAyZ2cxUU8xR2plYWJhdm1Gd2FPamNMWkNadDg1eDNhMGhNbWdFR21hVm1tdDlnbGxETHdUQzA0cGNiWFI1SmlBM1ZMRFZudVJ2NldxbXpUeWt5ZU5KWEN4c2w4NXdQaXEzajFLTXJFX08tdDRrLWtTNVZNdHlyOGxlLVZnZGRPVmx5bklKdV9YQzdEbXRjQzNmSFJpM1M1c2VTVzAyRFdOQ1ZMRTJscUFyX0tGOTQ0emN2RTE1NjctNzRmMjJBa0lteEptWXN5aUFNdzN1S29uclFfdG1MLTZvV01mQ3FVZllvRkMtWmxlSldXWVdFbHJWSUZPOWNVNUlxeEx4ZHAwbmgtVHpSQ0tWU1IxbHZkdjdMcWQ0Z1F6YVlpd1hPY1JETjZpSWg4dDhQTVZaT0JmV2JjaFpHZF9ldWc3cXMtcHJ0ZUMyNFlaME5XWHJaQTZaTlh2MWRFUnRNZXhrM2VhazNfUGlsTTAyUjdOSlVjc3hsbnplSE9oRVN0Qlp5cTdTeTFMTW85UzM0VGdOOTRSNXREckxHWnhENURNdGUzM0tRa0tKbExFU3o5RHl3TGxfalhRTmdsTVFLdktBSkFXMGV6RUNicUxvdkFESE5ZNXJNR1pEWTZDalBRRW1hYnBjRjJTbFVoVHlGLVBqN1BaTExWazlIdndfNmxvSms0SlNXbndxa2xMN2hPOTY1OWhuaE1RY3EwTEExS1dKZ3l1bHluWVg5YnpLT1h2UWljOEZyc2xpNXNLcXB2VmdfUlJDVUh4SWd3T1lvdVFoWTdsVGZkZjM1RkJsUDhSZHFRb1NYRGVuRndRY083UGpKT2RhVGhQVGNFTFZEM3hFVkZtNVFETTlIN3RaM2NLUnN2RFhVdnYwLV9LWVB4MUZodTBjemZLRjJER0dUdE4tM3dRMWx4TXF4UHg2RW8tbzN6bkhCS3FiQjJaV2t2WXhmbUFyUllTU3NHVS1lRXNJWlJ0M0luREI0MEJDM282TU8xc0dwaGJ4VUdEMk9uekdSbzg4bUV5UFhmdVJpQ2UzUk5OaENxZExXa2p4RGVzTnZlVUF1UzdVM0hKZFZlRzhkMHNYUmZGWllKQ3o4azBmZEpwZ1FhUXdmanA1SU1kX3hncUY2VjRfdEY4OW5mcVBxYVdZa3JPY19LS25Kak5aa3hLeWszVkthM09hTnozazE3bThucjlUU1ZDc0dMaElxWjZlSmFWSU1vaGpLNHUyOUtkT3NyMG9VRDFYRkhrY0dkX1ZQWWN0V2NrY2ZjdzZkZnBhM0ZRYXBGR3BtUWNkQk1qWE11LW1wUzdhZFZodTRiNmdHNWRsdEdUME9mWTBXMG1GWVIwakJFT1NzeFdNZGlfQlNodUpFTElFZHVhWW9QOGt5amF1MlBla3dScEszbUdUQkdrRGdzMXh5Z0Z3cnRsVUV3U09hMDQtOTNBWGpRdUtueVllM1l1Vk9sSDJPdEc0RUlzTkkySkY5cXdOZnBoYU9raDVJMDJLbFRCSFR6ei1zQks2Zi01b2RBX3VMZnc2bHZUMWtyMUFHRUR3dHEyT0ItOTJMMGNLY0ROOVE2QnlqWHlXZVhiZEI1Vzh1Z1h5ZTM1RkE4TWNiMDZHdURmSUxmZVNFSHU0MTVZd2lLdWNMSy1kblVmNDA0UXJlOExFVXd2T29kRjNGb0tfeUhaaEpYVUlSSXRoX2llQWhKdWxiUFQtQUlRS19hbWVVWkpfOGZjVEdsNVpQUkpJY0h6OXhPOUV6WEJVbkx3UjlmUFNXZUcxdi1QVzd3OEVsTjIyMXNmem50Mjl0VURrN29pM0VLejVWdW1mQ3IxUm1mMnRJU3h1OVZKNWdKUC05amgxOGRqYUpndTBwM3lhS3BVSmhYOGEzZkZ0Rl9WUGkzNzFGRmhFeHQyYWpmSGRZSVJsZ0d0M01taS1SVXhwZjNBLXRFd2dHLWVDWXhKT2VHQUtLTmdGdHFPN2ZJN1FNWktHdDE5clQ1Qy1ZdmpEOG5YVGItMFBIcXVnV2paVjF5R092NGUzdC1CaEVFR3NNSDV4cExfUFJ4UFVKUFVhYXhwZjNlM1g4Skl3a3BjdVZydHNZTjJPcXN2ZGJvZ3RNVkhRUzR1N1N0UkFyOTdmaWh2U3pETG13c2FzUWhoWXpwYjd5eElMNkJ4VmpTeWtnSENMdnI4V1lTWG5wZ1BVYXM0V21JWTduYTg2cTZOX3l0Zll3SDFpOFpHNWNwVWdISEJVbTRueE5yblR2Zk5Zd0tCMlIycUktdHpnT2VJNjZ3T2hxa0FQUHVSMzJKRlRSbG5YTlBPbDJ3YnoxX2w2VVllZVdRU3VYTk9GVU1odUtyQWFTdm9vVnBfRktFNjBWS05SLVNzMkFwdjIwalNTZGh1WHg1dkhzLVhMdTRRRE83ejNnN1FRejEtZXYtWEtST2ZRN3BBQ0xzWWlHUVZwb0RPeEhiVnJCVlB4Zk82UTkyZGRJbTRHMjBfNFVRNUR0cEMtVUdrYUh2a2dtQTBzRWUxYmFGMTNXQ3ZoYTBfOTExMlYwbTkweVBGZ0NFQXg3VEtEMmZuUmhDR21DZ2c3cTZnN1ZGVWI2N2x0NWYzcDh0aUxzQU5sOUtheFIwVGpWb3ZGUV9ia25CcmlOUkFIdnZOYXNfcEJXVHFoYWpEVEowREtqTW5SSlRqWnRqVnI3SXhOX0tzWHhyYW5aN2dGTWdQajlyalNxWnhOd01UeU1obHA4cFlRMUZOVDg0SU1lWEFTUFFpZW1vZjJnRzZSYnkzZzRHQVZhSnhHT01rOXNwcTBGOUliaHFWTXNYdGhDQnB4NEROQlptcnR2WWtTRmNaTDhraW9ESXlSYV9PckE3RE5TUGJMNmdjLVdqdUE5d2J3aF9zOE1CT1FlekxMN2x1anJYa09YR3NweU5WbGJ0ZzhJMjM3dEZ2elRJNjJ4TWFmOU1Ubk5BQzdHamN4dVZmRjRIVWpCU2RqNlo2eFlvaHNER2tfYTl6YjgtbER1b3JSS05rcndydkZZdi1LV0tHRkdTbGI1T2x1VzJreXQ1eDVzWDRyUXNya1lpelRqbEFSZzJibWJKOVNpNS1pSF91SExxVGxCQlR5N3VnZTE4azZSdjZ0WnZEeno5YnRjT3U0UFJCNGZkVG1KbE9vMXNSamxlUXJtd1J6ZWtnRFl2NV9jbktMTFdvdjFNeVNEQzBkSGlWa3dlSlJLaHZhdG43aFlxVmpuRTBmRG91QV9zX3M3TFVnc1NBYVE5dF9kRWloaTY5X21HUUpjcm54S0Frd21USks1R1JJY2dvZ180WVQzb21KVUpqeGFJYkFmVUEtV3JENDdjdUVjV184dUxpSGM3RFlhN3d3el9zYkZBSmpyT0hyTm45b3dSY012Skw3NG13RG9DZFhwZlV5Z2ZVdFpSYW1odThfWFphVEJaaEhaY0ZLNWc5T3Jad1BxM1NITTczeUNWY2J5SWFLcV9Sb2pXQTNqRTE3TjVIQnRmVUJOVDNSLWxJeG9jNDRRSnF5TnlBanJzWFM0OUJhTXZ1UDVaRUNJMEZ2UVU3a0p0TDNaWWw3b1k5UlJCVVZaRlQzajJtbFcxZ2lTQ0lSemFSOE1JN0J4aG00Ui1taXVpeUJ0UFE2Z0VDOXVVVkx4SWhvVjhHaUtfQW5SQ29YYS1iZ0ZtQU5HdG15UWN0VzlmRVFKV2RlbjNwN182TWtvVlFMTjE5M29HUHdYVEQxbThRRnRQTnVnaUFreVVfLS1XTzQxYWRTN09iZUFFVFVNSUpSS1B0b2Nacks3dGlWZVVPSEJ5S1R0VGxxTkVoS3lJa0ZtemtFN2VSby1VWllnZ0JxVXhVMHdROUtxcTVacVVlQVNfU0JuMlZ4LWE1aWZjb0xHelVkX1IxTHhQTTB6Y0c4emh5aUgzeDdyNjdHWWJaU0pmRkQ4Y05kbmhyd2dmYjA2b204WTVNVXJhRXJkMWltTUxfUmJuLUVUU1VRN3dObmdVSnY2bnNKVmxzWXhVRTB2bUFnc296enlpQXd4OGlFay04elBzTm9UeWJWeWIxMlZ2MkxYSGdZS1FfNVFTWnV1aWg0SGxiVmh6ZTRpVk1wbE1lS3M4cHFCVEFKWW95TW9IZXRXa1pqNjNRcG1QRkZ4UFBReHA4bTQ4U0JzS3UzRjZmeWpHVXZMU0VpeFcwOXRwVHAyR3Fuck1ObG9qbENtUHk0Wnh5ajFFU0NFcmFiWmdaM1lRUjJRcU82VDl0NHQ1eWpNNmlkajl4RGI5UzB0LUpUeDZmZGZ0OGdxUkYtZzM0T1E2UW5nd3RaRlhRQUJfVWRzbXFkNmZmTmNQNzZQQTBwcVNIN2x0a1NZZ3U2aUExekh3T1hrbmhnYlFDN3paX25oeTlEd0U4TDlPLU1yRkRTWFkwYTVMVzEtMkJUUWZDTDFwcXMyX1JMOFd6a0JJVkppTmV6VUFjdXpsUlF0NTlHWFVlWEFacGZwaU4zMDRJR1JBS0R5bjFPR0M1dnNiUGR2Z1BpY2hDM1A5b3BlaVVOenhKb3I2NUt3c2ZYRlpCQUdvS3ZEa3E1UHRkQ2VDeUwxSzZkRC1hTHRxMDMwX2UzNV9jaGJiRW1SSHBlSUk2ZDJ6ek1PQy1QaDVxcWVaOS12Q2pjS1pqa01LV0VPdWRYbFpXMDVSMHYtZlVkdVRTWmd0bzA5UEI0c1VLNjVSdUhkV2w1bndINWtvQXZyTHJOLUxqVld0M0JDQk9mREdndEpBYW1pTWNGN1o3VFpGTVllSXZpUjVVengtTENjcE9VQjhkUDJ0akhlV3NkUVJjbFlmUEdCQkhHVGJpSVBDMXloVUNwOFIyS21aX3BjZjczQXYxTGpZZDVpeEcycllkTGY4aEdQWkxaQVRYNG0tUmRnNG9QNG5ZeDd5QkdPV2Z2SG12MTNHTUVTZlVrNTUxRDlTTXN4NzZHQ1ZnYk90SU8taU5BUEF3dzVjcFpzX0VMdHVxeVZrQzNXcDBYZDU4YkFlVXlILS1ZWXpoV3J1MWZhVjNpT25MbE5xZGpEeDIyNHg1SGo0S1IxejZfekFUTmFmT2RUU2Z2NUxpU2U0SFJveUxNdFUydzk2MzRqa0M4S2prUk1tZnB4Tkd6QXNoUFJfWWNTeXd0eDhqcmZ2Rk5GVGI4elY5RHE4SlpfWVg0cDhELTlDcWhCYmNuUzFWWEkxaGNQcEljRU1ialVaNTQ4QUg5SzM5N1VxeEpGUUxYbDVvdUR0ZE9ObmhBb0xVZ1VCVWVRT19TaV9DUjNHMUY1ejBzX1lJcTVWejZFeXFmQk10VzhKMXRIUzNWSE5qQ0xpU0xqV0JRQnJQNVdZSGFyWFFNMlRXSmNhd05JWWh3TkJmZ0J5encxVUdJNWc5QW9mbUZxLXJjdGRHUm1wem5vckNyMDVIVXhUenN5bXBKRzZqNkRPaHduU1hDOXZZekt0RTRCV25lTjFaSGtSaEdOd282SmFENjlHWFFLLXNZUFNPWHZ4cHB4d2VtOXFOOWEwV1I4TFRHdWNkODZhZnRrYkM4RXpINkhfZ1hMeHlpb2M2TXRoSGtVeVFIV1RVMnFiQVZsTC12dXZaUFcxVHM3ZzlkTi1GbzgxNG9nT0h1QUhValk1OVZ5M1JxcC1ocGNheU45R2RNb0hMSXM5ZHRTblVHX0VWdl9tc3JWX0JXMzRabF9hUmRmaW5FQlJJSUhOUlVUTFBPb081VzE1VlU2NndCeDBkdVJGTTQ1SlQ0cmc3WEY0UWNWSWVIQUdyUDU5ZjRfVjcySFlHLTVSQjIzYXZTemFnaTJpRE1vZlJfSkdTMnJTQUFVVGZ5c0JHMzM3SW9VN1RaQnNjVWFMNkwxUHVHMmUwVU5LR1Y3NXoyMEhZbFp3cThkRFBkVHJ3ZFkwLVNua1VuUUJUWUJCdHd0eE9MUW1QUTlua2tpQVpMbnhmcTlHR3BoS3BVZkQ2aTliUHByZlJ0Ny1Kd0J2R3JMS1lVTFVsUS1FVjNWbXREYkR4ZUQxVFNnZ3p6aXlmQmFTNmZVd3R5NERuN21obWZXcFJ6SVVOd3N0cmhNM05oM0tVWGpIYUNmN09yeWpVS2JMMnZ3QXQxVHM0SmFQcVlWZTlMbV80R2pPOHdIT3ZzLU1ndV95OUl0VWpOd3hsaTRvNjBFUF92Q2UwdURWSXYybUNkamM4TmJsV1lHV1lzQURxNjU5MFhHQktndFNVNVQ0R1paakxVcWJRNFdxUFBKTllWZEpnUWhQWjFQYkd0R05XcTlibnZGMVBPS2MyaHVxVGZ1dEVCTnB3cmo0bU8zRnJYVzFETFpyVm90anNTRndNQmdXN2p6QjZjdENwYzBZOVlVSmptSXFydDV1Q0o5ZE5mNlVpWW8td2o5cm9KLWFoZEtVOVlsT2o2dE5Zall3cS1lZmp1YldCOTBLRGhFem9QVDRtVU9ycEJLdmhXTWdEZHRpZFdyVkFQZkNEWTE1elcyMWFYZm9mZ1hBNFVGTlNIUEhGem1wU2VVXzdKU0QzSmJRQmxjSXJkd0VKMVZ3dGxPU3Q0R0NHTWJfSW50bGlxZmJFd3NYcHlvN2VmQjJJUFhkclJOUjVuWjR6cG9EMnhUN01BWVp3WGc3Z2VNYWE4RmIwSVNNWVotbm5VZlVxT3NfZC1NNkg4bGlHNXVPbVIxeGwyNVFqTDFHYTg3c1lHX1VqZmNUSGFaaHJpT2FYYjA2SE9PUDRpSXlES3lxVzR6Z2NJNGdhc0ZJeGRTMmZQLWgzM1lJdHdXMnFmeDlUeGFFa083OW5EVnlFc0lCTlJxdUdQQWFmcEtRUlFwN3NTbjVLb293WDZfcEFvcnZIZUJrdmdPMkRuWkdmUUpDek53T0h3UGtiQkVJaU9pNEpISUhCSUtTcWxaNVVIQWZPZndJSU1ZZTlUdEVkUGQxR3FNVDJoWVZTd1JCV3B1MXBIdnlpZmxCNERXdTVmUERncHlSb1ZienRYakpueWtObmdCVU1TVExqb2RYb0Rnd2JncTlVUERWQ1ZRbW1pS3Myb0J2M3ktZXg2VjNEdWFGaWZQZEk2emdHVjJGWUtWdU4zWWRUbzNTS0t2WVJqRGtDUXVyUlpnNjBFUlFwLUc5dnlqQ0F2TTNEOW9hZ2FaU0lraE1CVlRwNVNSNkdsM3JhUkxlb0xnYWdBYkNXY0tFZUNFRGx4a0xnWjhuNm4wTlhIUTV3enFkWUt6SEZVNmU5SGRVM0xxcXp1aExacDM5cGxqNE16QmZ1d29hMUNXZ3FrUTZiUmRiSkxUd1dxNWNTLXpDNk1ZamtlNXNYdEJTN2VIMm53MmhDdmxSMjIya3ZZVFFUeThLaXplcnJQZHJlSkZXQmhlODUzSjBJVlZIRjdhOHZoakc0Q2FFZG50aGpoemdtb1B0cnVUdEtFVDRwRk13cjdYeXhITmZacFhoS0VoZExCSEtYbFJIdmRMZmtOeFgtU3A0STFnWjkxZlppLXNnUkRkcndoRHotdmlSQW15czVGNTRpbTZaSWMyUWF3b1lZdjBtMDB0MnVIamo1MWhvek5ubFNjT0ZRX1Q4Qjd0cU5ZU2hlSmNONVdjSmpxU09rNmI5Y0pleTVIYVBrMXBTTWE4VlZjVE4wRTE2N3h1WUJVdFRZUFd3TEtTdDhSejhzRUplczI2SFhIcUQ5UkJKaENQZjRzOWZYdUhrbDh5M0hjWUNUNnBmc1dIZEk4WHN3Q3hRQmE0TG8wVkdieTF1SWJFeU1jUWUzNTVwRHhLMHdFRVlqZlVic0RybVhUTTh5YU5yRUdpbjZYTUhoM1A1ZzVrdjlKR1duelpZbExLTTRFQ3d5c0p1N3JjUm9mWnFncmUwazV1MGJMbFNESWQwV2FSc1dHSTUweE9RMW90Nl9rSklpNktVTnI3dmRUNWV0Qzg1RDRhRnc5dUY3dEF6Zi1vXzJrZ3JJZHFPX041U3hKcERQRFpRWWZ0OUNQcm12NmR6TjhEV0tNNlVadTFTNk1JQWI3eDRSSWVWSXFWMFBCdExxZndxUl9pS2Q0a3hkVnRyQmxYOThRVDZDVWNfVUx6WHFRWmhUQUFJYmJFUzdkWi1oQWUzeEZXNnVRbThnRkxHc0ZCenVSWUpxQ1hKSnhnNzBtTnNlUW5zQUV0N01LRVZoOE5JT0hTeVpMYmR6Wm5IU2x2M25ZdFUzbjZUdk9YcjUwQ21Bd0pXX1lrazFWSUhrVThvX3FIdGlKbGlwWDZnRGxPak1aS2lBblFBdnNPUXh1eEZxYy1MbFNTNkdiZWpiRy1CckVlbVppLTBwN19yZ3ZwTW5uRTVhZ0NoRnpETnlYSW1sMFR4NERZRXNSdWNrbW9VOVdZeEJmTXZybkxlb3BmRGtfblAwSFczdTBEYzlFcEQ2TWtGQmZsb2tNcjVidkRxY2JacXNoNUlnT1VTajBFVGJMdWk4V0lwQk9wVkdUNUE3VmZBWWo0VzJnbDNPYllLUXg4ZjNQWkV3eG5vdUNuRmlFMFNUVHdTYUhzdGxZalBuZFJvTExoSjdkX004eGtrNk52YWN2emF2U1R5YlIyWXpFMU42ZFdLZXd1OHZnaERCT2lQNGhzNHBwcjNoYmFNbk5TelM0bFRPTHFOM3N5bHotcUdnUHBYX05ta0lfY1laRldIUENWd2hIQ2o3Y0RGRy1lZUF5cFZ0dGl4Y0F1WUkxcmtZVkJPSmxjdkhDVW5XLWJRSkVHZFNGSGczTzBjU0E1NXdmSVNFV2xJYUU4SXBqYXJfeW1obXdnUDJkaEgxVFFlbzQ2aE95aFdsZU9va2EteWIzeW5nT2FlWXZ6cXV1ZjhzNHhtRWFLQmZzWHZwd2JpeUVHRHZqTGxtb2tvUkVRQWxRYzJfSjgxZnJ4RlgxV3VKRnRSaklSNWRFVVhsdzVCQXhEWDF6eWoxNHVJSGhJQkZOUkJGMG1rSU4xdTRGSzVQV0RRNnd0X2g4QkZyZnhVV1ZZRUhOeHlwdzJpbWZVVklPeG56NElhNTV2S05uVDFLTnhuT2dyNHVFX3NpdFBfZks0NUF1djMzUkxSNEduNlBrZHZ2cmZTUUhLYVk0VjN0a1czRjlMTWp2dUpuYkQzWC1QN3Bqd2hjNWtqZ242NDlxTDF1emkwbkpQalM5Umd6NHNLcTI5RC1odHhlSWZUNEdLcV9xOUI1SXpYcHoyOUJZenZPQ2Y3ZGYwUEJ0M2xmRURrbkVXUVc0T2E2cEIxTmZyR0VDa2prWXlZZzRvaVdINTIxMHV3MkRibFNMd2pPUGV0Skc0Z2hIRldaSDBySmd6VEFZa1NTa2ZVUVdWeVdiY1NIRzJoVTBXYTIwVTB2M3ZUZWFOdXA1NXB0YVNrLXBYZkRQOWwxSFRYeVhLRk1QOTF0Y19OVTgyS1lOVFllRllIZlV2Mjc5WWZrYksyM0VkNkUtRU5uRXNxdzlCT21xRnRnUERkaDZ4dUNmRlNzeHlVeEltUWdEUFMtbVlCbFBLcmRWb3JuZWxMRC1VOXhzbXlZbUhUQ1NYZHJ6endTaDdoRUdDNk9YTnBRQ3p2NExKSGt0UHhSck42Snh0X0h4MTJXYl9SQXc1R3N2UUtHY2NiMTBESVpDZF9KLWt2R3hEeHRoR0d2YVhNeXlmbGZDXy1iUmlWZE9nNzNjQ3dxX0NLemd0VjJPVzNCV0R4c1lSMGN1NkJpa2l5NFVOWkh6cHRyM2ZjTUNXVDNtNUhkbVZCWWFFVkY1LWEwRjdPNVlGLXFjRkxVSTVYMXMzeWpwN3c4RHo5UG9ULTJ2LW1HdHJDNUVFeHNJdnhEQmdWdW5HSWxoRGI1a2gydk0zaDhnWkNXSDZCQ0NIOG9feHp2YWdpM05kRDh0X1otSG9ZX0JQVm1UVmVQd0E4TXN3cmhubHRsX3h1Q2g5WDRHaXpwZDhkQjJmZ3RubDNWMEQ3Nk9IdjRUalhVaHNyZjN3Z01IdVl1YTNYYWdRSzVFSGJOWVFrZzUtSnRCTDJFRzZCcmdLbHhFOHNwUWItUDUtb0NVendSMlVaNk96Q2lxYWpNV0dYM2hUZ2VGdUZlQ05yZzNLMlVhZExmanZDZWVFbnJHelVmX3M3Nks4WlVhRjdQTTg2M2ZIOElMaHF6RFUtd2s2WFJ3UHlhdzFnYUdPQ0w5R0MwWEFoX19TWFJtLVRyNEhkNUo2RG82LTQwNkJPOHI5YWc1Z0xxVUlJVEFMS29fN0prOXU4YnV5UTA2aWVFVXN3S3g1TkNtSGQ2VUl2MFc1Wmo3b1h0Slk5ZnpOdXBvazJwOVI1MG9hYk5TTEduN2RlNXBWNzlXcEktYjI5aGZUNE1QV01MdHRiNGUweGFsY0ZJRmhzUjRsc0l2SXJQSS1od0lwVGFZR1ozLUxlcF9KTW05T3Y1ZFd5bkJISml3dHhsQUVXS0ZXV09NUkkwYlRfNmlIaElGMmtaTmF2Z2gzYnRFNjBnVXdGcXlkRElFVzBFWlhtV3B1MzhfUkd3Skg4d1JuTnFTdTlPTEE2cDdZSGZCdU1Pbm44ZWt2Q1FJREdJcDduX1lfSzdZTGtIdThoMEZkOFIzNzhYRGNzeVJsWnliRE9UUGtsWXhnNEg0Mm5RaDVzeEZ1eGpnTXJUR252Z0pScS14YktNSkZOWnNYRjBaRkRlc3NrdHlac0xLWFRvRUNjeTg2Zy1oNXBoMHhFM3YwYUE1c0tUTlVWWThvcU5nVmpnRDkxS3JTTFhEWXFZSkFQREZMQzhBUUlNUEhaY1REYXJMUUxRSjdKYVJrbzR1RXB6LV9oZVVWeHh0ZkZxZkZpLUVpYm1YdmlZSmoxT0t5eGNKMFJUeEt5dFZBTWt3ZFlnX3FpUFVlRjhzb1RXLVduaFhUelg3TEs5MGpMbGkxNWNkUzQ5Q0FGMHRXU09GSUw1Y1JxWTlLd29jQjlIcW1yOFhPaEY1SFhnd09OWlRrd01fNFRfVEdNdHBJUFc1QUpLWWVZWXdNSlR6aU1kTHUwOEgxYXJtLUhjclNjWHRWSVpJbnhaZk9DSExXWExwMUJXcTVQSHpRa0drV3hRdGdKellwcWQ3OVZsSkp4TjRQOGMyTGVONFZ0c0lPM2lvUEdWNUJwb254Z3cxNG1OSUl6SHF1dFYzNnVOTFRNRVBXb2R5SXE1UE5VRDlBOV81MDRPaXhtN0E3b21CUng0TXB0dXlPZUltbjV1OE1tNnRkLVVaTzVPaGVpWUNQU2t1ZlFaNzJvREdxb19GcHFjOURqdEJqVGdmUUZ6a2NfYVZTc2t3d1ZaMl91V3RIdTdMTm0xTlM3cDhmaWFtTUQzWVd0OTJBNGczU2FGWHJVWEZycm83bGt3OHBxajdRMFpTOHZpZk0xbl9jekE0WlZ0SVJ0bWZjQnJnOEZfMDJHY1lJc216X3BYWjhzRUNjSkxLZVV3MDJ6NHRnM3A4VXFmRURsTzBqNUdxdzc1Y1lzX25HVEtROGtqTVd3bUw5N2pwTnQ0emtUeEZFWXBWeW00bmp3SDgwNWRYNzlfTWFFVF95bmxGWFMzRlhsdktFSGxMT1FsRExmMXE3dGRJSVlRMFp4ZHhZNnBPYnpBTmlQUjBrYlFDZzJQakZZZ29nZDN0enJGa0RQSzlWdnUxT2ZqMUJaZWFDNFVVUTFRbHpkU0gtSXVKYVB1TzhJblhob3ZnNDhVS0hiNDJ6Vy1CaXJIbi1fenZueG1XU0Rrb1VMV0NydDdCZmM5OU4tRlpSRkdmdHBkaHRfbEdNZXp2ZThPU090R1VDMG9tdURWMGNDQy1zb2ZxVXRfWmNjQjRfRkFDOGRYemxKTi1ZSGZUWmxxaUZ0X3lFeTh0RVFpVHNaR0RmZENGZ3VTUHpWUUtuczhLcERLQWFUV1VrS3gzOGNFY21iclBaVmxPamt6bWFGY25zTUpJTEZPX2RoaUQ5Y0RGY0xBdHdKN2IzYzVad1NHV3BUZTA0bGc3V3Z6bzhYMHNqR2xhNUtST3VqdXhQVGdGTXJvQ2dHWF9vcHJpQlBicmg0TEpaZDRmaTdpUHlKZHd0N3FCWTNpMlIyTm43MW83eW9HOXBLYWROcDVVeFY4dDFrenRsMU1hQVExT2hMYVRuOG1DeWxadENSMGVRMXl6cmVGeXMwNmFFUTVoRnZfbTVQcVJPUS1ZQ1hiSkRRUjREOGF2Q21NQVZkTEdiWEhDcjJCWkpxN1RhdG9wUkN3M0dDN3k0Q3B0VjRWRE1DZ3lHQzU5VXByQklrN3cwX29UY1VZemMwaGs3R2FyY2VBSXA4QktnUVhoQWN5YVNyM0JlMmplVG1ITG51c0N0N25xa0lacTZiZHV2UGJ6SjNfTDFQY2RzM01WX0stemFwcmk0NmlyRmtMVkQtZ0xrUzdINTRDc1V0VFg5VTNuWE5DVUdKa2hKMnZLVGo0OHpIa0FzVVdyT3ZuYUxVR09EX1JjanhZdXJwdzUyUkJ4Z2p6MTJjck9JMFVaaUJmNjc4VmtlNjViRlBxT0VsekNKcFhCM3RYTzFoenhHUlpBaGNYTWc3MENXRDh6LVlFRU5tdE54STdyYVBKLXc0R1E2enhxREtxaE5YcmI2VVpMdy15enVWNi1MeUhNSklwMk9GU1JyZ3FaVUU0cm5SdnU1SjN0SzEwejJDSlAwcEoxSlBIZkQ4d2RmOTJ1b0NPVUZDcGFWVjFkdUFBTHVQVUgzVWQycjZ5TThIWmRmQWY2VTNsYXFYQ2J1YU5vMFhKU2RCbHREd01jQzRtYnNrNHVBZHBtX2wybnlNR2Jjb1dablNRaXNTdkZSSm56dmNWWTR4dnViTmVZYWlrZ09RZjNTcUhUYmw2RGk5QUpJaEJBVWQ1UnlVbnphWS1ldDI3SUlmSUV2aXdUdXhDVFZZa19lc1dIcGlFMnVjTU5xMHJsYTAxOEZJTzk1U2Z4RC05MXppbzRzdjhqeE9zSVYxNGJpVWlYUTV6eURDTkszRGM1WmF0c0l6SEx5S0dJWElHaTZrX1ZQcXhLbk1xTmtEMktDMUM4WDEzVWdHQ0JUU1N6Tnl4QnM4Q2luN3dHcDRGNjY5aS15QkxwU1JtTVNYeTliWXlSNkIzYXI0aFRWbVBWVnhuZmhLbU41ODJHd3V1eUxkeGZFRVJmbmRqckNBSktVNUZOdGpKZU9CTFg2R0g2cU02eTVqYTM2SHVKMTg4dm50MTFMNTlsbXVqNWtzRGh1LS1QNWc2ZHU3SmZKakRvdVplelpCYWZ6U3I3SEJkT2c1N3hSTVVtSm5GQzN5QkVUMVlSX0VCbHBlaEx6eGpqTHlZYmJWZVQ1LTBvRnJRVHE2ZFgyTFVqd21SYmZSbU4zS0dmS0lpbWtSblhvYm1QTk0xd3FwdlNxaWpQZ2VDREwtakdwRzhDc3RMSG1qLTJ6cFEyQzFVd2hOQ1hEVVVfWVVYdjJ6bUNmQ3RReEZuZXZhUUhIZ3M2bHVGLUlTaUcwNkFjWV9pb002amhMQ0NEUkVuUjBYNVlWa3VDeUFNZk0xVy1rSHlLemcwdGU1UUR5SktmVzVkWDdWM0h4QUJfempCSUJFc3plV29aajU2WWZVbjE0ZzEzOWotYXlWNmNCUGtVNVQ5ZFpkRFo5eXlObC1kRzgxZVdvVEs4SC1JOGxRWlNVMWcxdG1IVDlHZWNfOWNsclN0RTZ2MUloNTNjN0tBTldNUlJOZVdMX2VrSi05UU5SeEJuNFVPWHVKeWdEMTVDNG1BenEyY0xKWmdnSWVsNEc5QnpQUF84bGE3VnYySTBxbVhBc29aMkxNcmgyMWNqWmpiZ0tZcXRyLVBfYjlvZTlFVUphejUwaEVMclZYNlBOLThGTkFlWHFQNEdjcjFBd2ZHVmlnQmFnTzBCRkNHY1ZKSGhTeTRGR2ItWEdoVWFVWm13bEpsZkxvZ3Q2VlZxdE1sTTdwSXN1MGVGWk5BcTVxR3h1OVhKZmdBWGJvZ2EwT1hPMUVYS3VEZkpyVlRMOFUteFhROWZTYUctZnZmRjUzVHk4VVg5OUFhQ3VvSnQtTC1FYldpeEMzZlR0WXhxSU1pUjJxaVh4b2xMdHExUUFfSDRZSHJUU2ZwbTlMRVpnWDZKRElMUDVHYlZhUmlOY0hLQXZSZnF4OW12aDVPZzIwaE9JN3RSYkx5d293RVZIMkNFWG9tYVZZREhOcUZQTFhET1cwa3RqOEl6ZFgtcFh6T185bWFGSXVWRS1JOXRlbEhwa2F3NDNzQlV6N2stWnF4YTZnei12V3g3b0hUVXd6MXE3aWRBSUR3OUlrdWtleGRpeGxoaDAwRnhualVZdU04TzlhWVNJWXJLUEJoYy1IMkhuR0tRU2J1V2pTb2YzbTV3MjFlU1BZbkNWck5nODk5bkVmVkRzcUU0RFM3WVVkUFM5dlJBOUk0SzVfa3FtdWFaRXJ2OVJsdS1pRnFCY1UzRlNkVC01Z01Sa1IyTkV0eHdYT0ZfM01GQllfWWVqQzFFUC0tT29HQ2dVcVd6SnN5VzBUSjctdWFpR2JQZnpuckJZb2JteTQtenN5elNVYjhGMG80M2tpLTBoNlZ0MVlGRXBsNWxPWHVMVFdvcHlhSS1tTXpjNFRwVmNMRV8yZWdnVW5vS3JlRWc5bGFqZkRFQV9sMVJZREh4ekxjbmFIb0ZGQVg3Y3lzM0hpT05vTFRJR1Z4b05LN3g0LWlLRlVPcWFpU1ZlZDJJaHZHUTFkUGJUMGZUSnhNbTZLVGNSZ3RrenhOTHdJLXl6MjZla2VQOU5BSzJTLXUtVWhxcXprd2NZaVJYcVZsVlFkN2N6ODFCbnlsTDZ2M2F3cEkwSFJuWWQxTnZqUzZmZnU0NTJDUEY3bzRMSlhyV0dLOU5sdzRFVWxHd2w3Z1RrOW82UmFmVW5RMzVjMS1hY1hEVE5tMWJfcWd4UnpMRWh2eV9WR3hNQU5faU1MdnB4eXVvMVBlVU1URWVCc0UzYzRtNnl3Mm15Wk5sNmZENk9GRkRxd253dGFDdUFLRV9nNFVabkVxZmJWSUZqUjFUdUhmT1NNQ0xjMDk0dk42b3JRSmVmNTR2WFJPODhZOUl0WjZ2SHBYajBBSGd6d2pzTkYzWEZrZlpmQUtGRjZmNWtGdFNMaFV2NkdIdVotaFcxYTZFa2h4MUxEem44STNPQVFQUkdmRFNkR0YyZWVlck9MdEI1QWhHWGJSN1dxVTMwdExBSm5nSlRjRUVvWU5ObE92TzBPYzFEa0tLUlVDUkhoeHRXWVBob2k4UFFEQ2RlRXdXQXJHQmFUZzhsSE1nWjdrY1ZUaGZlSm52MnM1M0xUSlBrdTduamh6bDFZa2Z2YTVBTENuanhZWnBaYkM0YkVoTi0xZ2FHRVlFbFFHSHdUTjljUmY0azBSZmxnQ1BabHNmUmt3b2l2aGl1Q0p0cHEtZ042eDNIWFdRU2tCZjFDNWdKTkN2OHNxdTg5UkFWUlhycEhUeHFlMjFBTU0zcG51U2J3T1NsQktmR251QjlnTkNYd2NpYXRpUm1HcEQ5M0lnRjRtNVdaOXk2a1V5TmZtUFVmd3luSTF1Qk5ENVl1dVBTTE84ZDhwbDJMSF9uQjRMLWFOdi1kYVZidUttV3RHZjd0VXoxRWVEazdvMU9Fb01Sc2RHMktDWHdaMzhLN2hXNE9ZZFlhSXZYLXhMc3pzS082TVZ4NVBxMXBfRnJ6TlhCbEpiNHpRZkdqUXdpbzZHX2FEMjVDZEhUWnlHSVhCc19EdHM1S2xSZ0swdGFaVGNyejZIOGtSUlNSOTBUMXBKaXpQUHNTczlRR1JQOGZId0RjbDBycEtFamtUUzIzWFR3NDY1QUlZOEJFdG43bE9OXzBsX1lybUdhal8tQ2JBRnhpNHNyTUhfVG9kN0o5enNMSkt1cm4wYVhMOS1pbFo5RjItcU4xZnEwMkVzVkdVWlRSOHhhaDlKbHp4RmhqenVVbzRBdmFXRDRnSldyaVBrYUlaTUFMUkVXYjR0VWJ0OVZDWTRHdENyY3A4a2JDbVJ1NjVWazVMdWtFODNwSzZkYlVtMjZkMDdrVW1rMlh3WmZBblVTUC0wVFpMOHl2VzRBbE5HNEYxTkRTdzJKYjNHM3dWdV9ZSlNwRm9zNmpoX3VUdVh1aWRqVXpIZUY4UllOTmZlVWJDRXM2c3NXbEZMRFdHMlVyZWllcUdxUGdXTUgtckRqeGw4SFpJUy0tcUs3Nl9rcGpvN2tlR1lTRTh2ZUZpcnFLUUlNczV6Z204eW43YWpKcUFpTFFZd0lNeEV2dm1SYmk2WklKbmpoaGYwSVpxMzgxTzkxYmhxSzk4VC1yblltaXRMam9OcHlWSUUwVnBKdU5jaFFRUFRXcDZ4Q2UzNmFIOF9NcEZsbzdLWHdwQnlqSW9TV1Y0T2hvRGM5MGVBTEQ5clFvMWN0dmQ5d3F3ckVkOWJtYTNUeW0ydk1QMmh6ZEh6TU9vclBSSGlENUdnMW9GaUFpOXJaRmFpcTZpUnM5dTFhd2hZWmw2cnV2REtmcEpON1B6N0IzOUUtb2Nuc1d4WTJreTBZZ0NfVzcyOEJaT1dnRTFpT1pKM1FNcVduTkl4UzRkcE5pLVdKTlRuRFhTT1dMSGtYdzhvai14V2dCeG9WVmRhWVUyel9RR1BhWGFiWEtmLXQ2Q0UzWVJFa2JlRGZmelZpQUluNTMwVkJpRjFwVTJyM2Y1OGQxQ3p2WHlJQlhPOEpuTHA1RmhETElkX09tUVdUbGRZT0dLMjlXUHpKU19hLU1RWXI0SUdFbVhRb1dVVndaNk9zRXJEQjVUNnhob2F3R2YxeHJxT0gyU2JqZ0VETVZwV3B3dkZqTUpTN2J1NFVWNFZDekJtaFRJTVNnMDF1cW0wV3lhdXZXOWdaaWYwXzlKTnI3bkMwb3Fwb0dRTVhVR0h4dDB5a2Yza2VVbGFzXzZRZlNqQWNXX2Rld3JqanUxd1J1Q21XWWs3a0Ewd1pZVXU1WWxSdlBlWS14UV9tTm5EUFU5d05MWThjVnNOT0ZmNmppQkFHM3JKYzRIVTVXMS1WZ1hMelhCNVJrWmNMX1N1NFJUMnZ5MUIyTlVKNG40VWx4U29BQ2gwQlJ3b3dSMHQtMHo3bC1INWtJcGJMSXJJOUxxdHJhb2JPeV8yWTcyWnRXQnNMTk1fQm9ZWnVUSlhIeEs0R2FvYS1nT1lwUXQwLWJKaDhxNVhWWUNLa0RmaFI1cjg4UWY5SkxFNVhOY19wc1M3Y3BGTThCRDk2V08zRlJ5b0F6ZllaTUstX3hHSTdsUTcxQnktSFdkWm1uQ3VPZkVRY0ZqdTM3cUM2WWI5bzdyTFdLUmliQjZhNGdLVXJwcmNwUjlfbFR6VUVnWlFldWdZM2xtV08zeFRaZFd5bDV5dVFxeTBQTW9rdm5JbkZnZkdLN0ttb3VodFlaRFdRSnBKQmV2YjBxWG1sV2ZETWhtSnZHYURGSEM2UGoya0lMR1ZscDllRy15WE0zN3dxNDNBZGRJbGo4M2xoZGxYWXBpajA1R0x0XzY1NVhaRHZNMWpsVlBtRENnaFlkSDVPWm5Ub0MwQ1RVVlIyaXpzTzZzb3NNckE3WnJjV1pKV0lwbERDZ0RpS3FPM0VRMjF0eDRDUy04Y1FtSkpwVzRCeWFKNzdVRWN3aVI3VzdUT3RleFFZSnctUWFJUGRYTGE0Sk9XUGVIX3NaTTdmZ2tZZmdzdm40RU5RUnIwNk4zRjktNE5rY1pSUjIyZFRUVWloQXJUbGdBV1JXLVphQmhMUE9XVE1qWnhaTjVFV3p2SjhxYUlmUm5tbnEtRjN4blZaSXFFWmo0eGZObHoteWZxNTNXZl94R0ZkQ3lUR1czX3pVai1zZEV4Ql9vMk9scUpUQjNscnk4bWVXNThyb3lfRE9iSWdMUC0tQ3dDQURhVVJUbWhweXJ5TGNucWZYeUtaOUdnOEdJZFloOHhvMEVXYUJwZkFnU0JUOGZOYUJiZ1JBcE5wcXdhdDN4SmtYUlpSaXpmeTVid1ZVN2VQNm5fbngyNXczZi1JMDlhckV2dWRHdEhtNzVCYkpMSHg3ZEd4eHZuNVdiY1BBWkU3U1JYM05LX3NZdFA1ZWwtdk1fLTY0aE9neE9NOHJuUk5vQVVLXzZWTl9iRlhCaDl3VUNSRHJrWXNUcjZwbWRGRVBFZnItRmNNVGRLenJrdWRoOWJTeG5BOGd6dkNrVUpFMkxMZXFnTU5lN0ZxOTFEdnhzWGNibU5NN1BndzYwZ2Y2X01TWFZRSk5BdHRobW0xd0FqY1ZoTnRXazZmRjYzU0x1bmhWUVdnMjdJRFpES1drSkFYd1hqX2ZOZEVrNWhubWlSWndEVzVuUWJFaEd4ZFNpQWxSMUpVQkhmOUJ4dTZqN2hsTnZPYjQ3N0h4aXpFT1ZOR29LOHN1Mk5DQjNsYW41N2F4ekJpM3lrdWh3LUpTTGpmSE1mVy1rRDVOZkFkc2s2WnFpTXZYLVRPVWI0MFVQWjFOMU9JdUR3alZZa1lWTGxMR29KV1RZVzV0cDN2WTZBMmlRV3lRbmFkamlHYWpXcjRqWlhTRmFyWUp1bWpzcXpkVmtzV1ZidUh3eFJTVk11WENkaWQtLVhfYkp0ZkFFQzNaZGs0bUlGYUhYZTlzMklVLW1mMWFIYU1FNVlHY3VEX1dmTEk5VGVSQVdlMmpUVWZiSTZZUDM1VHA4MVhJaDhJOTRuQ2tGaGUya2ZpRjV4dXpSeGVCM2JIYV9hajBvRERrMkc0OXpLSDZwS3haRE9oMXd2bDhzOS1mU25PQnVLZUpVVTdBNjhVeW5sSnVyZl9PWlczMHBRcDh5blozUzFKdEk5ODZaYTFvY1VyNjF4MjdOeFVqX2d4REI3OVp4aDhhT1hlbU0wak5FWW5KMGh4U3lkS0JlcE9TcnlaSFNRUmRuY2QxOUs1M1pRUUN6TVl3OVlCOVdoUHZEX3JNRGJzYmlxZFhleXZNN015Um1fc1lCTFRVOVU3VFpEVzNrVkpMbHc4YlI4TW10N21yNFhYdWx1TmNxS0pManh0ZWUwZmtfSU9sZVN0aldRSzRBQXdaWGJsM21jeGplOFh4dXZuR1dONnpsbHFsQTZYd2pkMTBOYUJ1RGRtOTNJY0FKM3pHblAtc2x4OFlzZ05yM0NTS1VjLU5FRlQ0MTBpU1FmTkNsaHU3RkN5SDFHbV9iaHFRem9tMEtHNXFoTWVCRUUwY0VTbFNXMHJrTWJ2MEZ3ZXhxMWVCNXI1aExSTUxRNm44WHB3cy16YUhvejNOaHJGYkVXWjVyT3loRkc1ZGtmaHF5RC0xbzh2Unp2LVZ0UWxPa0hUaDg0WFZ6Z29VSktaNlMxMVZ4OUxxT3I0bnM5TXJfN0JoeThoYVMwYW12WkZMT1N3ZlU4YWtnUnRhM2JweUQ0aEVyanpUYUlqVVpYVnJDSzRxajBYaU1LaktOSHpRdGN3elFQVGt1UVdiczVUTkNIanF1T0RLMXlqRVoxTXZ3ODB0UDZGLW56Tnd1a3U3bjFYR2hwckdFME5KYjJ5TksxUG50YjBoSmx4bF9zYVZ3blhjTGJadEUySEhNaHY3eTBya2xTOEVpSTljckk1SWM1N3Q4ZmZvUWpEN3k5RlhaQ0c3Q0J2Zk43MG44VnRCZ2lVR1VTUzh3MzVaeUN6Vll4TFRaZEhUSWVvS3llODdtXzI1d3UzS0szeWxWLVhOLUJjNWoxaEVaam9QbE1UdExmdzZ0bjNMOXBkUXlOM2JIcHNQbFF4LV82ZlZ5bENJYnlyeVdCLV8wTHNCUk9sRy14LWhXS1VqYjVESVkzb3B0ZGJQbEk0MG1LQUttOXRXZHZZRS1qdTlKbXlFOExSYXU5cmExY09ZaWdia3djaTc0NnpjbDJyNmZmc2xWSkpxS0JCMzktVnlGSFlhdGRzLWlVTUV5RDVKTDdMR0dVM284MzJMcXgwRG9yVWRqbFlMVHdMc19FOU00d3R0eTRYOVlINTVUSnFpb3lQU2JrUHMzTHlvWE1TWnNEbnY5X1NBcEJYaFJudzRuQ1dudldlQXpMLUhoTTlEYWdjeGZ4ZTg3eEhPemNkUXRzeURMaHRqNFNyMVhwYUpSNGtHcTJWcW8xLV9PZklVXzEzaDlLcmcwZWFmMzN4TWxjdDhGek13VmxWejVXQWxxdXFMTGpIalUycWk2UXc0bnlsYmlPQnQzRm90dEY4WFFMOFZOQlpIZW1Xc0FNRzNxU0pxdlhXbVM5bFZ3ODVzaUJidnNNOVREbEprV0lzZ0pYS3BueVdoMTg1NWJTR192N05NQ1FFakNUdnJ6YW9hRWVjd0ZpVG91Z2d6ZzNCMk1JUGl6SmhSOW0wWmFIYzVMQVdfUHJCcTZ5V2pnNDc2S0lBQUhseXRXbnVndEhxTGtGYlFpUmpPY05ZR292SnVSRHFDY0E4WjY5bHNKQVlOa1JoYnR0WWtydmllRHJOWHkwMmU3OFF2QXdST3RGeWNxcEY2UVd4QUtUQURyZUMtVWVTZ1dieVo0dWZfZzNNajBYdFdxWTVobERveEFuM2lRb29fY0ZKMmRKNmtEVUpOUjN0Vk9OcnQ0aVVQMnN5RERCdFVjUFIwQWRBbFJ3aHFUdlJheUM2MS03Yms2RkFPNjNrdzJobDlTN2hwU0JSR0U2LWEzLWtoN1RhVHktVWtCRWh5T3QzUU9KRXl0Zm1DRWlNWFkzTHZpQ3M2OUFYTXpGejNQMlJDcjBsUlpzNC1aSHREdW1mUmlrc3RRaDY2ejZPaWdLUndsQzk0dHJKVmFEZlhvbVhkU1ZDQ1BMZVZFd1NIeUlsVWFiLUN2aExOUGxCOW02NDZtQ1hKNUFYZnE5VWxJNzV3N0plLTVVTW0ycVFvb2JoOUM2WXItQS1UdmFWX2E3cHBVeE93SzY4bE80QkIxaU5pNHRaY0Q3dUlTTG4tRnZUMkVaaktmN0hodFdGeFhVRV9ZckFubHFvRjFnT3JJSGExbGFLMFV0RkNhampkS1B1cTdxSlhINVNIb2VpV2c0VHJBZlFoVGFrbThOeGZJcnVqTml0YzZFT0xVNHpNRV9XTldxTU5JY05sWVp4ellraUUzUHFodS1fQkREMkdPcFdid0Q1anZCc2s1TWpJMnB3SnBQeFhlSWVCQldkZjV2QTZyWkRIUEtGWjdpbjlwSERZZkVWcWFCMllFWUd2X1h6UkV0SDZmYjlOVF91MlVqbWJiRU5IQmlBV1dsOGRlSVl0cGk0VXZ4a1VtQUxGVjJKdlRqeVFPbWh0TU9FeVM0QnJkVkpfSmtWZ3JVdXRGUmN1OFV0dGhteElqd1FNTFpzWW1YblBCdzYyUTZzUGxLaXc0Sk5RTEs1T0p1M090djlwZGxKeV9ZZE5LM2xob2JCeTJxbnh2Y3JyQkltRzhFSXpYcV9feXR4RFNPOVltcFRiVHBLNUxsRWpEcmxmN3Zvd0VscUY0Z240c2N0WFdGbXZYdWtlaXNBLTVPSGNHTlhNeldlZkVNcElsejB4bGJEZ2l2UWtHWXpCVDlmd0NLQlJabVlkejJoUW9uNXRLRTVNeWNuWDdBUmxGZG1PZkY4YjA3QVo1cl9hWVl6TFM5YWVRdnV1R0J4aXRHbFc1RS1SOU1HV1RNSG5FZjdZUUgzZHowaEtMajgtUFp6TGVYeElpNWNNeG5vaVB6ZnZCNzl2NndCOHp4bzhxU2xhZW9fRjJCSHB4c0pzZzEteHdrSWZvLXdoclJadGhSU0xKX01pR3plcWpmWFRZWTNlNjZhWnlQV1F6UC1tcUFNZEotMnFoNnJtblY0cW1iUVlkU1NWM0pudkxLYU1uNlBDUzdSNVFQZ1dRTWJyYU1GTU5PdXRScWM5U0p1NVVOY2ZqOWxyYUpxU2M3d19SUGRBX01aUFVRQlBRS1VzNlNZdzJpb2QxUDA1aFVqRmtNY1pkNmJQQ3JxTmN4STRHNy1keUtMZWtsZWYyS1dFemVRRml1bkRObmxucF8zVWY1RV9WeXUzYmZhVXg4bVRjbDV6NjkxSnNRalVrS3hoU2t1S1ZReE1JUEtnYkR5UC1kcVpiUFpwRHE2bzNBbzFXelJ0RElwLVQxLUlRTlc1aWtWdDZxZVZaTUlwRnd0Z3FxR2NMczRjVXBKZ1Q1aEVvSThpa2dpMFAzQThjU2ZyRlZzNHZQbFhPU2ZRRFI4eGdpQ3N1VEU3YlRGRklTYjZhUFhXX1YtdjBQWVRSdmJDTnp0cnU3bHRNMnlXbGRJS3kxbmY5N0R1c3c5Ynk4d3pLSzJ3VS05NHRmN2tQOWh1blBwUkhRdi1UVUJmbS1heWx5THZwNDZIWnF3c1VPczB2eDVFUWpZa3ZfUUFKRENWTDFleDI3T3N6MkZ5SzhKY2FMQTUyRmhJbFBVRHFVWUhPSUhLOTdCcVUyY0FiSE56Vnl1c1FLZVVQemJWdzg3WkRnRjI4aUpGQ0pSSnNWZEZMcXREeUFYa1ZkNWRYUC1YdVhqQkdXTldyd3BGMzZ1YVY1WHlIZk8tZWpXaUlyY3EzOEtFWndoSWI3QW9sZ2dYR1RfUHhndGFMTzE3QXRCblZrcmZ6d0FyeV9pM0xVR0xlWTBDTFVVNzlCUnoxYUNkZHhjb1QwUFR2NGFDazlSUDQ4ZFBsUjBRQXBpb1NfQ216VUl4MlBJZFZXdDFoSmFPU3ppZDY5ZmhaYVJqel9VV1J6cVNOU09QNDdHTjJwMnJTeFcwcnpuQVpCdllQSEJpOXJoMkFFR3N5V25oTHphSUVPNjF0WU5wRy0wVHE3ZWhGZUFxQ19YbG5rbDFabFlSaUR0UFJzOXBOTTRzaWJwdmk5cmpERkNENUpIc0x5TTI5Zk5WSmRHcnZOMDFzV0ZyUU1tYy1aME1tV3o0SmEwQnE1UXFzWExreU9TWHVkd1dvZGNMblVIRWRWUXlsRWxZcV9hSWtsNVVVdGc0MEItTVR0Z3VzN09BdFBTeU9GTTJ6XzBYVVdfX1hSWHNYeGtNZUViUEJsVEtoUHAyY2VDeTVmemIxbGtiSS1GLVNIeW1xZHBLQmluOG1Dbl8xUXpsMklWbllTYkk4d0tIN0RCOXcwMzNBYS13ZFp2dEFYXzZmRElkR3RHUEczTlNwZThoME5rMUVjU1NUc3VSX3JQN0w4UVdfZkUtRnhtVDR4cDFVRW9Cd0tFTTBUY05CQ3hxdTljX2NHQWNZa1kwYnpOU2NpWG1JSnpsbTRiRXVCaEFyYlB5X2hLdmdkY3hxMngzMGNqMzVpcTk0eW5iWXpyTFpiZl9OQThheWFWeHRObkFkSGhRUE5tS1MtTVIxQWRtVUJHc2hNdW1tT1NUZmR0dnlPdmpNcmhOTnRaX2NLRHM1NEJVN1pCR0ZLX0pXa3N4d0NpeHV2cGJwY0Q0TWt6c0g2NHBJU2hTNi1fSkt4NnVMa2R5dkx0dE5BRGR4OXNySWQzOXdITjVjSno3enl1NGItaUpyZFlkMEFWM2padkdRTWRTeE9zRHFIZ0xjT3drSWhyTXBoam9DS1dMb2ZsVkk3REhOaTgxODRIekRsR09fN2FiRTJXeUlvU2Rubzd6aGk5WUR4OWV1MFRmSkEwOHljNGpLeG15LWpPWmltSHE4Q2lDLWxha1Q1NDZSb01BNGNlR28weUxCY0VBRS03cFk3MjIxN2cwcFY1RzNPTldpWFBKdjVpQTZBNk16blYxLUlUTGtYNV9BeUpuQXZmbmxORlJIYm11SDhzaEIzVmpKdERERU9SOFpXWElpUW9GdjV2Q2RiSHJHanNvaGx2WjF1RThTSENxS3NTZUhGM1Y3bVV6RWFJU0czdGc2RWt2R05LVTc4eERlc0FhTkNnVi1YWllUUk9ZbXdCa0o2UTZRQTdpT3pPUENnR0ZkUm13S0I2MktsbEVVT2hMa1Z0WXRBbFpjbzVGMG9ZYUlMdGl2WnNjSnFFazNsLUZxdTdieTVUaU5FN1JZYTdYZmpMVEY4X3V1MmNtRWp0VlBYMlh2bG5hWGhpcHE5bmRPZWJXQnhhMldNM3ptUGQ5ZXJ6WHBZTThudjJyZWt0eDhMaHloQ043ME1mVnZkdEc3cFFpUFpEai1MdXBPOTduTDJYUktjS1l5QXFnMG5iWHQ0dTVNZ21mUkpDcjRVNVQwRzhqMThkdUtaUktiNTZDX0hscVN0MFhpYjNjWDRqZWZTeEJ1RC0wZ2hKYUpsVURMTTUzQ1RieDVYTGV3c3VqQm03amlwNVpMTjdsMzhXMjhvNmd4WUZVWUFjRU5lZ1FFR0JCNFVCOGY5cUZ0YjZNaVo4b0tkSFNIN0lIQVlkRUNweWxHUE41LVNVVmZBRUdlXzFjT3JOVmlKT2puWEJYWmIxREhhemxWa1hYbmhiN040RXh4ZGJBS3MwTEVESTUzSXp5ZU1wVWRRZjV1cjBJT3doYTlQbkNrcHNJekNYaWxCTzBFLXdFWDBiSVJxeWotMHFJMy1UT1VkMldqdnJfUGl6WXBrcmJ0R0lhTllQbGJzMDl1NExDWlVmcVd0VEZDa3VxTTNmRkNFTGlvSkFqQUwtNFVqb2h0Ti13Qk9RZmJrUm81NDZOR01Id3lZSEpMQ1BTNkdrd3ppMnZQeGwzREFMMzFHSGUybnB1c0Zsa3paOUlsdXdSZGwwNVNIYnFTWE9zTVBYdkdUZkFhYTBzRzhfUEJmeER6LUpYNHpWak1zRVN6ekRhZ2JJQ1dQTUxCcHE2UnJFWkhVd3hRV2dVbmYwTHVCZ1ZuRUN4Mll5al9ZcnBWS3JfZmkwQ3Vpcl9oc21vYXpIVkNLTDVtSGR0LXduWGt0MGN3RmhPLUV6NEtYcHFtMHhoUXhNeHNUUmt4dU1abWMzME4xOUI1NVBtaVdXN2JFSWRsV0JYWlkwclo0d09KVTAzUTdqTWtsVjMybU05Y1ZtUUVsR204RldTNWx1TlRZc3locWc4NFFyTzBFS1BQNElIZE9malZyVXIyTTZwUUY3UnlOTnJManNCX2o3UTJ4bDFBRDQ2R3Rob1RLRkh5Ry1HQjVZREJWOWdIam1PVExDeXJJUmJDVnd3eUhXeW92MmhWTlRtUVJBVWRsUndzRlp6cDN3SkhSbHdnTFJjeFJ4TWJEZEhOZHNiYVItRzZILS1lR21uWlF3RzNRUC05aGhVQV9HeGtHLU95MExRZHl1NW9uaGJCS3BjQms5dlpHSEdBTHltakRUcEo3Y2QwNjNQcUt2dHBOLThRX21mOVNWTm1ac05Jam10UEN1WlZJZGpjZ1BfR0hsR1J3dXE5Y1JhanN1YkkzLUVqc2R3Z04yUzBaMlpKVURPVWd6cG5GTFE2a2VIc1pjVjEzdXlWT2JyM1puT0tKX1VGWFZ5VjJHdVhlLWVuMFBBSXdralNFb3NLNDlFR0xRSkszMS1LTmt6aVBWaUN0cWFXM3FHb0VUSzZYUEtBQmdIV1l2YVNkWjdrT1o4VDAyOXl4Yml1MExyQzM5NTJma2dmLUdHYkI2S1Zzb2poRzRTUDV3ZzVaWndrdzJ3eVVSb3dKUy0zaGdHQW41VEk4bHFIcUxfeTEtWDRVU3l2Ny05bGhmVnFoZzFFR05XSkFmTWJ1V2RxdElCX2VTSnhPZ0pWOGhGV0dnSE5oSTFSLWlMRXQwcHI2MVF2dU9WeG5aUHItX01TMVQ2SzlBZE54Tm1EdmNIRkZGdVV4RmNIeUNvRTBzZWw5bkpyS3FuaFlwZm5NRkNyRC1HYUJaQWZEMWdWeVhROVZmZ0FXc1hWSHE4NnlFN1NDZ2kySkhaRXhnOFFGWEhSWE9RZDBfSlZrOWFUUGVvUHdOWlBnUW5GNkZadGd5T3JTWlNobmVDcmxyU3pnOFllVXAwTEpLbTZvaEFrUDU4U004cXVkMlFQSDRTVlpSVWgyMDktZjFzSF9ObmItb1FsT1d0d2U4RTY4Z21DdFE5OF93M1JtUlREb3NZVW9MdGdsWXB0eS1ueFFxOTRBZDVtcnQyZGFlbXdoTVZnaEhHMk5NUHpXYnlVVXBfUlNlYUtVNVdPN3NxZEF4elh6WVVKS3RnU2VtNklYWTAxNVJod3A4bENrUUNyUGl6Zkd0Tnl4ZlhhVGlvUi1WWWs4WjN3WVdpOGlvU3ZoMlBKT2QtS2ZXQUlVYkVFR3oyZFBEZmJuTmhPRFAxcTBkUFhLaFpyazNFMUE4WVhhTUxJT0I2YngyWU14NWVhcFc2QzdQWjVjMnVwVkRJcFpudGRRYnU5MTJPb0l6aGk0VjlrQlkxQlgtcmY0YV9vRkN5NlNpQ0R2WXdwMXlseGpzOVBQLVJVR1VwSERZb1cyckI2ZUFvMVlXZzBOUVBTLVF6cW5rZFlJQ01fdnJfbVBrelc0WEotNzd0aElVR2ExVEtodHplN29Hb0pGRVRDZjhhWmhHOUEwOU5ObE5DaERhT29rbXZWa2tFWkYtejFLNGVubG1ITzNXLUIxQ205TUxQcy1wcUN6Zmpma1pxRmlSdGpZUzRXU05hdkhwVV9NQlp0MmNYZUM0dmNVaUpxRXN1QXIwTW1oYXpWT29qQnAxc2N6TDBVWEk4Tk1Vc1lCSE1jRjZaVWpXRW5JSTNfbnlqdWUyT0l4eEw3OEh3clFXTTVHOE1sRENVZHEyeWFfUzY5V3kyZldGZHlRTjRDWFpVMm9pUmVTVVQtTXRPWXpnV0w3ZlRkYl9GYnhSaWV0RnNmVVRxZnZRX3YtVWh0TmtLbGd3aTlqRXVKNXdkby1XbmVRS2NRaDRKQlhvY3JqbTdETVFXMUVPS1prMjY4VjRxb0JFSlNoS2wxQmJGRU1LUk91YUlFb1EzSmstNGFkTGxZMEpEcVlXLTJGM205Qmwxc3loX2FwdnM5S0tIbFptQlNjOVZlLTBJaW1QY083UEY4bUFMUG4yaUhEdldrNEg0WFVmdWlrcGNwaVQ4dVIxSEFmM0JlY1lKY1Jia3IyOGpISEFCUURCa3Z1blVPVVZ3dEp2aEVHVGxtYnBtNms0OGl4RTdwOURXdC0zVFEwbFBxdTQ1NlVpdl82N2g0Tktvck1GRUFXWGd0UmJmdEN6M2tTYzlnbDNvLWwxSjVHeTI2SnBxXzhyYzAzMkk0MFp1alVERlVPMjZ1R2pHWk5nS1ZRZnk4UjlzTmVIZ01xbXV4cGFXYWRpZk0zMEhDeUUtMDRIWVdtQTQ3cHQyOF9SX3ljbVVZMVlCczlpRHp3ZzliWlY3dU5pcDlMcVdVTmoweDJrMXlVaEVzSHRwRXlSZ2NBOExLVGc2S3RVM3RGSXlpdVFfZVBXREtFcXcxZEZkT3VZWVlLekxqcHM3eFlyYzlqMTBLZmNKSGNVUGhXMS1Jc3p1VlJsa1MzendvZXRQOXI1VnoyeFVIaWlsYVJSVzdWczNUanJZdlVVZVktdGZGMlpIVi1ZWUJ2OFMyNU1LOVltRDJXZVk4SGVsV3pqckpUdTBlUE40UlZsZm9LTDZFNEs5bkp6c2xYSm0wR0RER3d1OFNWdmg3N1dMYkpINGoteHdRUGZEcHdoZmJQa3gzTmdBMm1OaXY2MVI0NmptdkJOTWhQTUw0THFHQlRHY0FtS1VXYkg0SHdIMjBMU2M4aVV4Q0VSTzV4UEphUVkwVFUzMXI1Rl9IS3pibHc4V2VZQ19KM0wwdktETTZmVUNrMlFYQ3lvbk9RZDFqcXpxVkN4bWZkRnlhM1dNMkRCcHY5S3QzcDlaVXZsbjB5bHVOR3dBcG1GRHpyTVhXdDUxRGJjX0tDVmwtY1E2ZDRMOE1ERmRLRnlKdm1ELXE4dWcyT0JYYmFfemd0a2E5czJvckZVYnBQMUM4V3BGT3YwM0xlWTQydFBONGllemZoeDlQWnRtVzJUS2w0dVNNTHRvUVBMaF9rUVotSEhQdXF2QWVTSE1Pc3dDWFRrTnpvSk11RGFKc1hkSmdJdGVGSTNNWlBfUkNYV0ZkNERIWlhad19WOE5SeHdPR0l5MExMd2pPLXhWOWRVdURBR1BSb0N2akIyMWtYUC1aYmVsQWVscjlHTnJaS0dRM09QbjZHa1dBSUhVc2E5T3Y5WXBhVkY0UkR0MWllZGhCam5DQXlhRVlXRjZEaXhQcFBOU2tlY01DcFN1T3V6UzlsRHh0NlluWFgza0E1OXNXVUxseUx5dm9sRURhbm9wbHJ2SThPRHZYTUJwNE8tUmV1V21hTHVhSGNqY3VuSzR0ZmpoemdwUHRPaUNVUEFLVnRkQ1UyRUY4SGI4YXhhcnFFY3dwVTBFQ1JVUE1KbS1ETWY1NUlXeEdWUjJEblo2V21qYTlzZ2pFdWtqNnVZZWFlTDktRzlVdTBHVmdfNmVWdUlBUHZuQlBfNGktNE43Mi1zVVh3UUlZZGg3VGdaLUZBZDRnQ1dBVHhCVDU2dGZMWWZmQUlxbDVjX2RLaFRZTV9GQkpmQng1MkE3N090MFR6UGdKZVFWdDVLelhvSVFPM092Si1PUkdxTm11c1lxYTU0R1dYaXFhY2dlQ0FwUllxX3RZLXQxZXY5cjZTMXNsWjlheFZhdzZ3TTh3cURULVhoNF94dDlyZWUwNW9UbTBEbVVjMkFEWEd5V1ZrTHZXcFRIa3hxenh1Sy1vMGtfTG5ISHhUUzJiTjF6MDc4SHhLSVVWY0JUcFFUbHpVeGdKeU1EcllocXV1NFN3X1BQTC1McVY5a3cyclU1YmFvN1FxRUFvcEdaTVUyb1FYLTBVVFJSSGEzeWlSTG16R0RTbEhFMmt0V1BGakEtUFhmN3ZKQmZrUHBQQjZmOXA4QV9OSkhyNmk4dU9vU3pGLWxfcXRNTmQ1NWxoTEhJeGJmd0EtWlBhWF8zS2R2R1lfSDcxNERsanRKZEZBNDMzZk9VSW1ORDdXc3dSNThJSzVSdnBxbnFubUlHbHJ6N1FESE5idTJvVlhxOHI4dC15OXRTUE5QbFg3Z21fcGk5cG5mVFFNdE1abnZFR1hjaTkwYjN0NTVfcjYwLWxCbjZIUk9BNjNHV3BVRVpMNjFjaWNqVTl0cFVLQW0wUTlCTGowSG9YQjBicXRnb3duMmpETWpuNVp1VGJGVVRhSlIyVnRPRWxxQ0hKMnVEWkVYd2tiUzhkSXp0cFk0NjZQOTFzdjlwbGVaZ1JhNk9iS2RQY0FybG1TVnQ3QmxaZFZ3cXBDQ1FvWVVVN09KZm5NWnoyWW5ibDQ5Mm12YjRjSzJkUXNGeWg5ZUlsSy1NdGZkMzQtOEUzendJNzJSZ1hLUmpFeTk0VmZhRjBNM01uaWdCbDFhdUQ5V1FvalJVLW5fc05HUy1wZGVFZFI4aVRYamNWVlhXUmptTUluRFZuRy1EamkzRlNMVUUySUxuTjE1V25xckN3LXZILVk5b1dHQkxmMkZBNVlUQ29ZNHc1N0V6UFA0SURmY2t5WGNxNVNXZFhEbVRpWFphRmNHMHNDenk4c2sxOG5VQVQ3Q2k3M1JjWEhKZ1plN2poLWw2MUxXMzI5c1UxN3QzaGtQaTRXQnMyWWFFb0hHMFJuQVgzdjRXYzYtOC15WDlXSXJyYWhQOE1NZFJFSVN5Uk85cGY2NG5icnhaLXRIZ2xXTnFXV3c3ZF94UzUzWmEtZ3paZEs4ZXF5a1F0R0NreEdlUnc4TkpFQ2dqUEw1YmJUX1JRS3VvbkkxRnc3aXlvR0FTWFB3OEU3RlhmQjBqUXR0STVvdktEczYtQXVNYWVCM0ZKRWRBOFZ4MmRteFF1c1JqODVxejBBTGRwZGdCWmp4R0lobE5JM0pnV2dUOWlMSUpLT3AxSFF1dkxHcE1RU2NiUEdWamczZjdLQzVYc2g1TmtyeThfdnlIRFV3MW8yOURaZWhVNl9vdGlrNHljMVJFbHUtVkFhdDRDcHpyeVdkblRXLVp0dU9PZzZHbnh1T3BDejBjMlVXRFNlR3ZTSldlSXNPOXh1SGk5VWlhbWk2UVA1Q1BCaDRtMFpUNk9wUHZqNGdHVHBYOHJlWFA0anE1YkEzdHJZaXBIMDNVaGIteFJnenJ5YnBYQUN3d3ZVb2RmMmVid0FiYWs4M3NIOF96T0VpNkJOZG5UZi1ZVUxhT2MxNTkwd3BUS01Gb0ZpUkVYeHJOVEFNR1VxYk82cFhBeUFDUnlTdXFOd1pZeWU4aEltLWZUampub2VFOW1tbm5ndlMzcmpNNGFfdEp4N2MwN0VpbTBXajdhc3ZYWUh5SWJRQmoxX2dOWmpXUE1yZ21MM0YyUFFhSHRQVTl6MDJBRDFaSTJzb2lTYWN3elpaT3RPN0VBak5GTEVqakpMRzV2c3NqX0FESUZFeXFveFpPdlFzTXBqb2xpd19nb2NjMHhGc2JMdHl1TkhUdmlZZkUwSXBIWFUyMnBjRVRXSHVfcy13Z1d2elRuX1dibjJLT2dKNHlRX1ExSk9oY0dzbjBFVWdwZjVCMWxZOGdFTi02R3dmY2VfOW9hOVoxX0FQUzNGTHF5NndOcU91b1lEeWFDY0E2a2hWNUtJRFRqOGVoV1Z5Z2hNMVFWTnR3bF9xTjdFYVNZSjJWNlcwLVBicVdYUGJkVl9zOFlKT0gxWFVkeHdVTEdhU2MyTzZNdkZkQmNMWElKZE1FMmJxMmdWdDBYT0tsOWpTWEVqc2U5UjVUcmUtZWk1TmJ1azhEellOZGJxZUU4TjNUaHNKd2xyZ3Z4azZXczJ6S2R3YjFYc0JZN0swY25pX2pJYXJ3WklxUzlOVGF1RHhtQ3gtZVBuWXVOM2haZ05pQlR6Y3pGV2puby11eW9SY09YWFZ4NWNnbkhuOHFqVklfS1hEVHdoamtEV2dmSWhyeHdxTmRLSTFweWR3MC1zUUxUd3l1RnZMQWRSa1lCTzZQS0pnaVVlUGV6SFEwbV9YS3JabFpKX1NNMEc0bmFMYm05NVdRV0hORTMyYWxpUTdldkNJdEJQa2lVcGZKQjRZc0ZPNmdrZ09UakRKUjlQV1RiVkg0MlhKZjJ2eTVfQWlEUkwxRmJ0cm1oRUF4M0FfMFZDZ1ZhaDh3empfamtCYWdFSEdEcXdfR0w3amFSWU9KM194b1pRZmp5UzFJX19keVBnckN6OXVSakhDMjRaWjZzVmhzOFEzdzNTWG5JVjBKdHlsVmNnSWFPMWZ1RVhHV3h1c3gxRzRuNjFIOWZaeVBLN283Y0NBSVhCR3BkZ1dqZkZEc3BROFFjMVNDTHFpMzMwZGR6dkhLZ1FrZktqODIzbmFYaV9rZTFEb281NHByb29vcjg3NUxScWZwaWRCSjZkbjA3ZlFlQV9Pc0F1NFpabDdXUmVoMWh3WnVuOFJhMXhjcUZNVmQzcnpmejl6LW5vNE40UVZ6M1g0S1RFdFQwZkNjdDFpS3F3b0RWV2tDSW9MWmo1bUVHaHA0UWIxUVpYV01rYUdBWE9VRmV6WV91cXFITHZVdElYQzFLTzNwQllvQ0hNQ2lpWGMwVkZVdE91Ym81ZWJ1cWI5bHZLeE13bkNXRlQ1bnVnY3l3S3NWM1FhWnYxQWs3VGZDTmJPT2JKblFnRzBGQTBuaUFtYkJhMFo0UnFzQVI4TzVpOWhpUUlkNzVsNzRzRzBCTmx2TFVPblJoY0ExTzBjeXRsc2dpT2dhMkpZY3NNbnFBcnpRdDZ6dU9qaUVmN3VBSTFOYjhVbUgzVVd3RE5zX1dOcXY4cnh5YVFPM3RvNVA5Q21LVUVCWWk1TV82VVM0RldTRGFhRlZjNW1fOUF4RFJ4Sl9pY2hRUlJJQThPNkpocjdzaEFyZmxzT2FDMGQ3cmxpSkN4MkdJX0xYV2F3OFNRNjdRN0VhVWVReE1SQXVaR0IwUi1PczhHZmExTW02Ml94OGpoYVhrdGRNTENkNS1UV2x2NXJ2dzlEMzdURUlHN2xEMmpRSHNyS3ZyLXJPcldlRnFXMENIS3oyU0JGQkpJdTRxZXl3bXhIdkE5cFJEdFpidEZEQ051MDV4R3FVNGZYNFkxd2d6WkdPVXFBYktoV1BwOGR3MHVDS3V2ZEpMUERFeGNUM1B3QktsTE9pNzVaNHdMTWJGZktrRXZnRXBLcEo5ek9FMkRzVUU5U0tHY1NZdEdKQWVDTS1HSTJmZTU5SUlGRWxEQl9iZUwyOGs3MTFvT19ld2k3ekNIMkc4bEhiM0o0MzJ4T1Zaak82b3Y4U0EteVp6YUZwMG1sdGdCb294MEdkcWRrbDh0cG1Jd0xyREtpcUNfUjBZc1hQQ2wtN1J5YU5tUlFzTmhVVGo1dERPVGxTRDNoTnhreHhnVllsSEVUU3NQLThybmd6SDI4SlNQSm5OUmV4dTF5Q1plVk5tbHlXc1RKWGJfMExuSms5eHItWkdVSVc5Yjh2NmJTNndDRXFzemFMVW5TQ0RWWTFOSEhkTVQ1M1Y1RndxVHExd0hkZ3FJRjBRS1Z2UGhlNGZWeWJFR0d0SUFwMUU4OTFPeC1uMjByc2xSQnhkUFl2UHN1SmJUY19pZW5xMGpiTVFFLV9RMVg5V1NxYzZlaEdfVUpxUmFxV0EwZ0c1T0NUS1NJT0FWd01HaElDX0ZQN05MOGpmTXdRTWVnUzFIMGp4WWhsMlV0al9KUjJCLTNYVWNpQk53c2FWSXRXZlRWdzFuUDhXWHp0ejRyWm1ZRGFJMklvWFJGXzByTUp4ZFBUU1huVFpNOG1sb0pqYXp5UnI4QkNBdndlRk41S0YzVTJ6NjU1R0tpWnlYVUJWbHd5QUpKSHUxREVqYm5wakNmeWplQ21jV0NiZjBrN2lsb2dwSXl3aVJ1SVA0aUQyMmlBZUlXVlRaakZQU2pWYm5LWW1ia3YzdGRZMDNlbWhvM0pIRk93UEg5QVBOQVBqbjRSczEyeWI5ZDc0ZlRaVE04cFA4U1U5VFpLLXJpMWt2eE5xT2ExNnRGLWFfSkJhTVprU0toMjQwNE5ycHg3YkE1NlF3eXhyODBGVFdadXRQNW1VdDl3MllnZzY3dEdSTTJ5UjdiQy1lUXRxMzhMUG5ybllPUnN2UUo5Y2RONkZkbjVLYXZ2c2xEMW44WENBSmMxSE5pcXhEZVlBMVZITmFEQTFqLTZxQmVfclRtMjh4VzcxbWFOWkRTUHJZZTJnWkNPWkhsQkZ1YklzdGZMT3JDZnYwOTZpQW56aTREaklSN2xTVGI4UmJWUUM5RThXeFFpdUdNM1JhS1RMVXFlV0h0NHg2X29wLUpKQzNhdDVZUHYyM1ctS0YwWkV5T0FlejhYWjdocVFCQV9tQkZRQXhUNUNybFY0WXVPWWViVFY5c3JNX19HSGw5MV8yeUNCSEM2Xy01U3JnWXFDUWtEX29kYUF4QTg2ZWU1ZndJakJCdEYzTGpjendDMmFyY2V2c3JhUmpDYkRqdElPQmpvd252Unp5UU5GV2h4MFRaOFhKTGZOcWdqLWNNZUNtSF90Y3JvMnJiXy0tbzJnLWNQQ0c0T0xuUUM0N3hNdkZCNHNCUFpjNFZGM3htbzFnZGVreDBOcU5GMjBLZnptRTlJb0tGS3FYRThEdG9wUXp5N2RrdDNFZVcwbTVDakZmZW5EdFBlYjBuM3lVU0tEclgwaXNVbGJkQ1dCNXZCNlFLVzJFWWE2QnVmMi00NlplTFM3SWMtTDVqd2xadTFuUUtyam56dG00WkR1UjRsNTFOX1dNY2RVRkRxTDJMSnNENGpCX0JSMVBWQjItSXZQeExOZ3o1akp5TGl5Qnhtd1BGbGdmWWMwWnBaUVpLRFJYVk0zQ1BSVFp6dE4xX2p1SXhYSlRtaGZ3WkNMQUphNEJEZDY5TWNXZnI0cUJ1WC1mVGFwdnBMbUNBSmZEN1hHZzFUQlZ5dDA0bEphODlDWVZkMUFDMWZ3Z1ZrTm1STllncXpCempPbDBMYlRjMmlrM3h6NmY0SWZkMWZuTHk4R3I4MkVDZEdEaDJLVVYxRXh4M1NtUUtrSDdZZk5xTEpWaGpHU3U0U0xWTVlCV0QydWc3elNWNzU3cENkdUxTZjUtMVlLZnVjMFpDOTk0eFJRQVlxWmdPOVZ3MHd4TmNVNS0zMWY2clVlRVdkWjNMYmh3dUZHUzA0S1pTMHJGcnZKY3ZiSncyNXJyMUJZT1J3UHdHMTgxMjRMTmdiQmk2WVVNTmJiUmE1eDNkR0wyMEQxaDhvSFFtUzJxX2JFQTlKS0NNSUlLWXVUckZDazNzSF9sNHhPZkVNczgwU2FTblR1czB0Y25INlE2MHE0VnliX1ZrUFYwdElxYWlaVHBYSmdGZVZHQU4tUmdEZmt0blVFRTBZZFJKSGdndDZjUDlZVndBRjV3blJ1RlNGcG9HVzhOV0ZBc2NaTkhtTlk2dV8xOE1VT1BPRWU1WkpBLWY3QVR0d3hGOGFvaGU4eHR1V3FXZW5OS05XR2FaaFgySHBrQjNHVWVCbl9ValV2Vy1hQnNxWkR5MWVGajdvNG14Z1htdTh2b2ZXbU1BYUl1MnNHN3hTUnpyUlNFVUFnQzhNUFRQeGpMWmp4YnZlbmF2OFljQktSZTlnY0JmTmtucmx1LWp0aGtXbklzZjRHT0RuSHlGbG1LU1kwZTRJaHQ3RVNnYnZaNk9KY1k0d2gwSDFWNGQ3cEJ6U2h3VmExY2JHRUZ4UDhNNlNsalRxV2ozZUJGTDNGLVU0M3N3b1ZSVEVJRVpCaTYtMHR1WVNXbEl0bUtYWllKVEQ4X3RsdzNlaGwtQ0NZSHlNVE9sbldoMW5iODgxYkxJX0VfMUI3ZjVBdEpaMmdOQ1Mwd3EzRkE0NW4tai00dF9Md3VfVmdNZFRRQjBkdUNKSHZNTnJtNlZ4RDhNd2hrbG1TZ1haYkQ1RGNEN0Z4WmZuSVJUVnY3WVh2cGJvRWxybVd0VmRxT0ZLcDZzTHJBTnFHcUNDaGtOMTNlRTloMmVFcDFzdUpWUkJwOXJNb1VEcEEwcUY0ZDFkNnBUTFFIU1VNTXhoQjZ6MGZxdEdzcndHbFladjVLcE9BUi1rN3hNU28xbS1kbUZ4cFZ5VTdLd3ItVkttUFljMTV4VlYyNHBkTTVtLXluQlYxaVR6ZW5hbjBubF85c1FmOU5VQXlVZWRiRFpWSnVJTVkyQ0I1bEZzTDRXMFpFNjBVc3dESEh1a19PZ0pTMW9qTE9fdnc3ZWpVTk9BbWlGWDRfQzZqQ1FuaXBwdnM2S2J0OVRYWnVGcGZIWEU5YWJ3eHdmSnZDNkZOM0lYZkg0OGZvWklTajl1dUI5NmtWTWVCeVpVaGRCd0xwOXJxYjhlOXJibGxvRmhGSm5vR3AzWFE2clNUenQxcG5KbEp2eVR6OGdYQXVlWGgyV3NFZGV4OEtPUmZSdk9fNWRSbktKMWVHR2lPQ2cwa0QyeVpOR0RwcTRnTHNFTXV4UWZyeVpLblFBQ292ZlY0V20xdXZwV3NCNkM5SnAwd2xKYTR1cV9qZUdLQVVoRWhyVHJiTlBrMFk1Y3Z2d2I1Q1FEcjdITnF4b0JfcDF3U01oNjVsdWxjLVZfREgtcno1cmVOM0RqZ1hjbm4tNTBFSWNRbUJvZndRV09PVHJuRHhfN1NYdjY0SUdnWjd1dElGY2FoQ0tCYTU4R21sOFJqajB2MUpRMnFlRk5fZjN0V1pJd2g3TjB1RWdqcGk4ZDVIRWpvcTZmbWN6bGktNDd3cm5CZ3BVeUx4aG90SS1teGhlU0hoN0cycGctT1ljNUVBUUJTU3I5ZFI3Sm5LVHVBN2gwaEtYOGpnLWZ4bTRZQWNqSHoyRkFBbGlDeEFoUUpPUFdkS08zNkpMV3E0QUtfMWJIWmpYdXYyV1FvWXo1M2F6QVM5US1xWktlQ0JsVW5kOFZsa3dfMVlDRzhiYTNKVGVfRkdBSHRoWDZQUG5ZcC1WM3ktZmFNR2pnR0VZM01SMWxpVEdleFVyb1N1SC1Bd3IwTFpmdlh6bnZfQ2h5eVlxRVh5LXdxd3JmSkI4UDhCa05PTzhYaXpwQ3h1QVZCSFIxakVuS0QwSGEtb2hSZ2NHRHZBa0RQUmZoSUhaaFY4bWJ3aldZZ0JtcXM0MVdGR1ZBSEQ5MlRZVloxdjRyV3F6eXh1SGVQajY3b1R5cEo2YTA0NWpNNEhYc0l1bVYyUVJSOFBEcjNBT0hsVjVuQ1RUTFU3OENKSW1tN3JBQVFSRkN2eXVHMEdtSm5HdWkyeWh6TTZCVFdQdXNkRFZ0SnlOUlJVVnBxNTVYRElvQWh2djF6SlBYZF9mRW51Q3kxc3FEMmw3UElaNFF3QnF5SUlldEN5Zl9tMTVEa2FsbFZhMHd3Ump0NEVyWHlKUFNZVTROU29Wa1VCaWpTVDI5MnZ1UTd0VEs5Zm5vUF9pV2NuMzRWQjIzWldObk9xUzFkeVBib1U3bHFyT1BwYmlLRUV0NVZaQ20zQkR0aHVTUzZneVNORWxQNDZoS3Z3Z3BLVFcwSW83blF4X2V2TmhUUlBiX2xWM3V4ZXlhY2hFU2FEaVF6RFd2S3hsRXhfTEc2STlTVG5rWVZ5UGdnSEc1eTBzdHp2QW1DdmQ5Y0RLM19kdVZTUTBRejFuY0thVGtta083T25naEY0WkZwQTFuY2JUamxDaUdrbGp2MkR6aVF0cVg1UjJkMkVLREdEM3BWWE50V2JTd0V2RFVHZ1UyU0V2QVpGZ2hkM1Q1dHpncU9IWUcxN3J4dzQzMGFkNDNOM2Njcl9tbWRlQ3JLYURhVHE5dE1xdzEtQ2pKUXJBVzZ4djVYaEZkcmlpODFQb29WU2JsX0R4NEZBWWdsUDdLMXVDVXhLWDhIRjhPNU8wRWt2RVlNVkY1dmNMVlBSbTlvRFQxUzMtYWQyQTBGeWItTXEwT0QyeFVPRl81UzhMc3oyYnB5eUhZclB0NXZvN0xuNHlIblF0STAyMGc2ZWVCN2t1OW5zNDV0TzU2NGppMUYtOGxUMC1QeHdBMVVScjVEMkJKVmo3Z2NqZ0hCcTFsRnY3OHpXamtWRnBFLUJVNVkzTG1OTTVBLWtvdmNlS2UzRmhhdWVJeVN1aUFMajFXTzU1TnBVRGhlZU53Z1JwdWJ4a3JkTS1NUHQzZGViaFp3dl9sQnlTcWhwdTVabHdVdVhhVDF2d2J0WHlCdlNTTkIwS2RHZURIbzBnMEZfOVM3aFlrOEF2UkdHU1pVbENKSTF5eUtXdUZOTnRXcFhCdy00b3g0MmVXWnhHS2JqNzdlenVYR3czWE83VFJOdnpxSXJqU25nS1U4b1d2eUZQM2d0WUVjaVZ3clEwaVBubElCdkxzSi1CNHVkcHF6Z1JVYVZSRnMwclJxanRLdGs4aUdNRWZwTXRRaUJoXzE4THpzdU5zVGRLTG1Rc1JVZ0w4a0tPWnNKcGlsS0I2UU5TMlJNcmY5OUlDbjJ5Y0VkbURfbnR0Qm1hUFdRWlZPaHowNFJvdWhPblBTazJPRXM3OUVmMWZSUmt1UjFJOUZkSjgyRC1BUzJnX2l1cHdLMUdNbGJKR21IYUM2cWJZWklSckpyYl9lLXA5MEhNazdIRVdSSUdHRFNvQ1k4bHZ4M3E0MmxrUzVNYzQ5MnRwMzdVTFplUllnRFlDMmpObkE1T3dvSkhoVmJpS1RjelNXMW1DX0pwaGt1bngtM01VbVluMUJ6emJ3bUIwQjE2QjhYMjBsRFBDRlU4N2RZR3QwSzllR3ZEN1JwSEc1b1UtTnk4UU9ST2pKenJ5eHdOMXhCWHFMcUNHOTlZMDJVV3M1Qjd6UGllWkV5UzdqbFI5R2doV3FpTTZlNWVUQVJCVzhUeTBabEt4bnh1dUdYa1NFMmF0SXo1eXA4X0hTa3ZHZFI4UW10SWVEd3pkLW8yZHE0YjdqTVdPUVhVVXlpYW54Nm9XelloakF6Zm9LTXpXYTl5bXVrcmd0a3lHUEdKMzR1MW1KTnEzay1qUmlEZHNZNWYzUnV1ZEtGN1NvV2hfd3dOTWpHU2xmc3g1LW1WSW1PQ2VkQjRhUWtZM29oRWtZY2paZEpTM09ta3lwWU9lOXg5c01BTzh0VXdUblotcGdjdzdPQU9zcjlfZDNuZ1oxdEhOTFVOZ1FoODJWTENrSUtuUnpRY25BZS1hR05DOWNWTno2WVB2RENsbUN4M0U3aFF1QThBMWtQTzFxVWd2WWllZ3FySnNDalI5bVJ2bTBaZTV1TzRCV29SYTI5VmVXTnlGc29wRk5GVlZ4Z0UyWVVOZS1vSXNHRVN3MGlWMGpBU0VuSE14NHNlNmYyRGFfbGx4RXh0OU1ERmJpd0FBTVJNTFBwLURkTW05UTJOWXUxNGkxZGdvbXVHV0liQXczWGFHNnVFYWtySFhnS2JrUVVSRGk1X0FKaHJyRXJOUnhybmF1VGo2Z2FtQUJuQ0M4RWNYSHo1LVJmMTdXek1lczQzQ292R3RZRFdROWZlYWRrVDRTVjNaa3FyRzFhMU13ZFJTOEQyeVVyMVhfMFJUMDRiQnZVREdEOUFtTVF1c2l2ZTk5azc4SVE4c1FUbTd1YzhhUlU4RS1iOFRlR1BHSkRvRnNrVU43Uk41QnlwemFFczBjTHdzZkl3RW1DWkxOVnRUamhLSV9kblNpdHJpTDF4QnlKbGlkeUlsYktDVGhOX21CWURUM1JzMmxQX1hRdVB5enp6UjJJeGk5S21lMDc5eWUxYlBxVkhRY2s5RUVtYTlxblZ0ZmZEd09TYlNyY01HMnluVlMtd3cxaW9ORWkzNEZseGlFZW90d0ZPTkl6THF0aDRQQU1JTUV1a3NLWnBpOFBOMHNBTDRxTXlBSjVCaWFHcWxMTVJyN05TOXE5Mno3dVBSMWdZdTNkcHhMdFBPVVVySU45VGJReE13Ym1wMlNqZS15LVRTcFpDbWRRdG00bFFjVFgzWXJpQ3czTnVfeTBKaFhqMDFFVVl6WWxEaldsMm9Cc0tJM01IeVd2VE8xeUtyWVRCOE9TYWM5c0k1dlQ0SUNjbFZoRWxQS1lxS1BuS0VVNEwyVkpIVzJBdHVrNWNsNmRJWTJZaGdrdzZXc1M0NndpZVVUZDNiSVZERTNRY1JBNUNMbUNHdVRGYVB1YmwxaDd3cnJhQzU2a05GYXpzM3o1NzY4R0dFTE5rMTd6cEV0ektZeHdoYWZpTmhZZ0FpZ1VFeUx4V21FMTdNTWtFOWkwUVZ6VGJwYnQ5d2x0V0VBRjZzOXB6NVRBMjMwZ0tIdDZleG9mT0s3dFNzWDBMRmthVVMtR1FyVER1Z1ptcmNoRTJjbkgtMlJKNmtqY3dwRjVDU0dOVTJETU1FeFZMS1I5UnFfckpxUGw2VEIzSXZyOU1oUDRtWG91VWNKU0FsTHc0WThER3ZuTXh4WWg4REFneGNaSXoybVhIVFEySElPc2IwWmEzTW1OX1FGMHZmN3dQcGY5XzdjcVNJSnlGOHhIdUttWXhHb1BoUnpiVE5EN2RNazYxM21iVFp6THVuREhTeGN0cm5INTg1cXdPZmxTYjltYTgzbWg4Z19YZTZWVmdyXzc1azVGN0ZJRENpZ0FuSlJxYVBaM2N6TDg4MjMwYnZWekZvNGoyVDkwVHdYYWtENDAwNm55Qi1GbE56VDV5aVBBY2VqTFFDWjlzRlppeW5oTlVjTTMzc0NVVVVkUnN6eEdqeWZzekQ5eWtEQjdPa0dEWTNEMUhpVzBJRWV3MzVjaThJckZfd2lzT09hbXR2d1ZvQ2gxRHFxY0xrQk1OTm5HWlN5WHRfcjFvYVJTd2g2elFucUlLcU5LdFVydmNzdTR1S3d5RERmU2JTQ21RWHJUTmdScElWX0JaN3dYRGNCY1NyVzJBSnFJNkJsa2plcDlBZU84Mk5BYWVDMlRMZXlwek1fQ0RGSHliSjlYcmpFUjBYRVdEWHdMRGdyYjRDcUpjZUVOWk9Jb25oYmtkRUxtNXlkQ0FfVVpkSGVQSGdVQUZ3aWI5NW14M3c5cDBhQUw1N1FZcnl5Zy05OVEzbzhhSlpobE8welBrb1lmU2k5OTBRVzQ0V3hFWWVGaTBvdmVnVUl1clJhUk5kMl9MeE5zZnlxaGczZ3ZGVVhxNUtjLUliaEdKNF9rbW51b21IZGZHbXZSZ0VQTUNGOGFicThvdG9VMDlTbkdseTg1LWNOUHN4VkNWak5rc183Q3plSGhlMlhrOTJWNzBnM0FteDBLNTRSLV95YjdLeUx5Z0tYSEFtRUtnd2NuYVNWRzdKa0RXR0NQWjJFUDZKWS0yM1BVc3l5aldjT09sbG10TkR1WXF0VHNFUkN4dkppSllzTUp5N3FZREVzMUlaOVVEMUMzMEJxR3JQdEpKcElBdHk1OWlHM3FwM0hBU0xnYTd3bmZhejhKR3pFUi1vQUZ6UDRGeWtXZE5hVjd1RGJnaFhjUHZmTWNtWDd0cTZSUFhWT1NWdVN3NTBBNU9LSERqTi1lUzJMYkhPVV9QazZIMi1ucEpsV28zYTFrRGktM3RKYjM1SnZhN2dGUXd1Q3pybUFPTG5lRldHUTM0dTZtWTN4NWFMOWJkYWtCZGFTR2xOcFNqbzRlTExqM21HMDFLUmVEc3ZsSzBsWTF3Z2Zxc3FFQTFWNEFuMnlBRkFSSnFOWUU4Z1pqTkwxSEN5aE1GcHJmU2xZWjZjMlN0TkFCb2pKNE1VdmdfeE9kemdqQ3ZMcmhIbFNsLUR1WHU3SHZrOE44M1lXRy1TTW94MUhSaU52RHBKREhHTFpFSFBTZ09KUXpBUEVHY09GdEJ4emdhQTNORnMzbi1IRmh3SUlpaUhTYjV5VG1HcjlWN0otbWtOaGlUY2pnYUJRWi1BYXFrdDVmdDhad1RrOVBlMmd2TE1FRE15bDYzS2dFU2owcV8xRXd4QXZ3OHE2MUd5aFgwNlVXTjZaVmxrRWtsVHZCQU5OQTZLaUF0YVd0akdOdExZc2RNZG5nSmpHa1k4eEtRc1pYdUZ1aGdxSVcyVWtZLUF4TlVYZE4tRHo4d1MxcVp6QzlsTWNoSlVpd1RHelJ2ZzhieE5ob3EwRGZScWlrUE5rdmZsM1JHV2ZvVFlPOHhDVHM1RVBubXFYcXp5azhTTEZHdmI3cTBJVkZIX1lLa0NCSGw0Z0lPRWVzcG05WDRueUw3eGNiWWNEQWo1QzZhZ2hPRjlKNlZsTTBDVWptX1lqQkVhaEpVS21GSFczbUxDeWoyRlpiWVRtZ1drZVhVMXJpT09NZGVFZV9iWW1IWmxIcFhjZTlRZjNKcnVqNGVlYXZZVVhaVm1xNDNEWEFvTmRIczdJT0JKcUFGeWlpSkF1X1phaGphazlwTGpESFQ2dmtlemR4TXlwYTRPekt3ZkFlRXNodzVuM0ctelJqMGNwSWVIMUl6YnVsMkhISDVEYXZZS0MweHFOd0d5RU9VYlhHSGhWWWFWeTlscVl1T3NhcG1zRFNfaW0xMnFiLXNZUjd3SURXWG9uN2VBaXViZmhnandUd3NmMnZSdzlwdHhyQkJGY0txSVI4TlRwTGUzX2tydDRRMlFaWThmWkxhb25HYW1kY2lmY1JRbV9takp2WVFHdEJiRmR4ZUhEeC1QOXdzUjFZcDROVmt5LTFPTFh6MjU5REs1andQMEFxUWMwSFBTLUEwZ1I2RmRMZXo0Tjdrc1R3N1VEOTdXOGhMOWZlaDU4bE5OaGwtcjNDbldYOTFJRnFWaXprWDd3c0U4Q2VSZ0szc0ZNVTVYMDZYREQtNVlZWU1feVFUMnphckh0YlNoTVdzdEZ0YWthMVhENDIzbFVJV0FlOUk4ZWt6RmY3THZkdl9qeGNXcFVEOHdLRmFEWHFUWmQwY2M0dkF3elQtbUpja1VNNTFkRUNBREdoeWt2M2ZrUnE3YnhtT3U0OWtxT1lLUkI2SG1fdmFqenpMNWRzQXNKakhaeDU5Mjk2dGJ5LUNaWjZReEJzR1F3ZW1Td1NxZzIxRTZpRDFKbVFHZUppVnV2ZmxINDJzR0NaaHBIeEU1d05oZkd6dk8zMEh3VmJjWUJnNS1Nd1lGcE00SzFMUnhOMS15Q01lcHJNY245S3E1NEstQTROOUZWdkEtbnJvbWtyTHd5eTNPUWJSVHlfZzJRbnRYcy16N3k2UmM4bkMzem5ZaHQwZS0zZW4yWVdjTk9BTTBTeGlnVmpabmY1M1ZDNlRVNjVKMGdETkQxR3NQNGFuNUUxYy1SVXp2YlRUS01XczNVem03UE1OZm5iV2hkRlpCX3ZITEtDTm51ZW9hazA4SDMySzlXMXUwMHBYWE9yMm5Ebzh2cE5maXJpaS1DWUlKSHVTZlB1MWFCbWNpQ0d1R2h6TEJCUktTWDlndE5aM0NvZFJFaGdJQ25TbE9uQlFnOGpBbWlYRmJ5T0pOeWxHUkh0ZzE5c0ltcWhmTzFRb2J6dFd5TDVXeURXOEpFMFlCeGdwSmtfUW92aEYtajZjdjFCYjFNei1KWWZPN3BMY0M5ejlsVGtWNzFacTV1by1XX01PZElhMV9nVnE2S0tncktOU2x6WFdjRmNZQmFDWlJwbXltOXBuTEdiNXF6bW9KNlJyR0d5dkJMQzZlQ1ZUeUczZ2lLY0x4dGZ3OVUycDlDeXZOblZ4b19jM0tEeDNwQVZDQVI1dnVKYWgyYURfZ2NPS0hiM21DOTdEVXpWZVVpZldmZlh6VWtROHEtR1A5S2tZeC1HazZseUN4RE94VkEwa1l1bEVoNE03MWtGNHZMQnFyUTg3aGJqTERWYjd5ZTFGU2g3bzdyVURvSG1oc0lSOEMxVTdDQkEyZ1hsc0RybjRBSmVHaUdPdFU4T2xhcm5SQ1Rzc2VHZ29YTmVqblFUaXdzZGJzX24wc2JXdU8zZldxSlM4Ymo0TjFhX3JFOVFPQkdTYld2NFA3NS1ma2h3UjMyNUdvN2hlYUxaS01ZNjVlN3NwWkJUM0ptbHpDRWMxeGF2SW4wd050b2FhVDBhNlhobDhnYUFvdFF3Ymx5bFJaX0JuamYtcmdNWlItcnlxMGl5NVhxX3d5QXZEX1UzVmY0ZDMtWjFQZUV5azBBdzR1Z3BpTXRPN2tYT1huVEZDR3RHd2o4clJKOGk5aTVLby11dVhxX0QtdlBpVDVaUGl3dEF1ZnNmVTJMbDkteVhlTHQ0QVp1R3p5OEwyWnBBVUJjbmRCVUxDYUdRWmZXeHFkaEpfbWZyWDdOWE54OHVpa1JxcXIwQm9EejhRRzhNdnJFakRRUHRXQWpQWldnbmJXblVmVEllN3JQMnYtWW1VamNtNVBtUVdhci1Xbjd3c29BU2lLMEYzYUlxa2d6ZUc1a2E3Z2J5T2JxZ0p6ZExlUnJ4UHM1emVYWlRTd0k4aE1zZ05rWlktN1Q3TEhHQmhsdDhLVkpfdXBnVkNOOTdIS19TcnhFdWItOHBfUVhhWVhXZW8yMGt3ZHJkOHdaMzVOOURGdzhQVjhhX2VaSXc2a19zREh0SmluLTd4X3NIRjVmakRjemRaQUV0OGdWc2k2aGVjbTFQNGhTcWFYOW5BWnpNNmhBbThTRVozOVNIOVFDTkhSVG5JQ2llT2pJSS1tZTA2aEhHRzFEV2hQaUVfVktGZnVtbWpHYVN5Tk9pREp1RzRQdXNscnNxWko2ZXVsdEdrSHFPTmxrdDQwQnM4VGJtbEZiYWViLVB4S3ZEcFJmdVlPTzdkelNaUFFScVRCM1lsWjN4Mkl5a0FENERCQUk2UTh1dll0WFEtSExKaGdCRUNfaVNMXzhtdndUNi13QjVtMVQzaDZJMXZQaWszX1JZN001WnBuOHZQUXNIeDlQRzR1MHlRUmgxSkwzMHI3dHY1MmVFcUREZnlqV0ZaUC1ENnlkVEwwNDgydk9DTlQ1aldSZ0pGeEJTNkU5SHYzWDFFLXljUVJ3Y3hJMzRidWl2b1pQUXRSazZrM3l2U0ZLd050V2RBN1JINE8tbm5mb1hUZFpscEd0aVhjYjdMcko1S1IxbW5YVVZqYks0aVpfLS1hOEFPUlhaUkFtMGNrWDFHTTg5WWIwS3RDNGFlWmg1VG5KdVJvU0EtRkwxTzFneGtmNEExYXlvNDNJTlBrVUdUMllwRE9fRVU4RlkyUG8tallqdjNmSE40NnYtVWp2dEpaUzRhbzV0QnB6dDdYbXNENDNWWk1xamF5YWFTX2hxYmtSTE1kZ0luYjhLTXZycnBNZno1VlpjdDhLWTlaMkJkRmg3b3BrbmVsSkdYMXBLdWRTSi1WUWZGcFNDVjltT0dNN3RpSS1JSEtXUlEzRGpENnI5OHBib2pCcUJsaXpsdnNUWnJodWc5azdKSWVhazRIWEs2cjUxb1U5Q2RObmlVNUJEaDJfY1g4bjFIeFBWcnBRMDBpald6MjNPZklZbGphLW9TN2ZvVlB1MmFJck1lb1RYZHNfSG4zMFlxcTQ1NWxyWENrZVlRZTZwVC1GM2ZBWTVidWFEQmI2b184OXVuNkwydHlVY204bEIyWDJnaHdhR1dpSzFDb3F0MXg0dHVIVnQ3Ym9CTXFzbXFSUHY4UnFGQVdhUUtsdk5mUkQ0aGdETnJCbW5wTjVfVG5ZTzVWUWhtRGptZWVtaGEyWFEyb05yQm5oZ29jdXlvUnREQ0lnY0hnMHBBdGFvUnFlLUhKSGFVSktUblJtYndoSEhPR3g4ZTBxRXJHYkJ5eHAwUVhra1hrMHN4YVd2cTVpMklHMTVpNldTMmFfWkIxWWdNYkJfR1Z5MjAxVmZIN2NHSlVjVXJ0ak00Y3JCOXN2eU45LVBqSm5WYTk0UnMxejljamcwNjQ0OUFXZU1Zcm5jemROUEwyRVhjNjZtYzJRc1ROMHZrTDNSQUJWZUNYOWZzVXJ6OERySnZncGNIS1d0MFpVakU3ODRRZjNUMVg5ZVZkeVhleUZTRnE5cTlOY3A4bjZwd0syUWhfZXBGQXEwYmQ4cWM4RVZmdTdKeUZpVFYzLW5QYU1VRnNGUFhLeV93NGlIRmFjeHN2dVBWRlllZmlWN0pTazROTC1TTjNxczBUdGd4SVZVVmZiMGJHUE83OEQ1aGdEVXp0elFkSmpTSzRuZG5GSktSTl80dnhyUUx5aVRUbGpzX0tuVnVBOEg0YnJkVWZ0V0E5SURUbE5NbnFrOUdKVzNLQV9nVGlva1dURnlZcUpha2g0WWtzdWEzdjBRWXlHSFVuWm9iNUtiWk1SeHNuekRWX3J3dDl3YWhOc09vYm9XOUZGak1Ha3ZWd3V3Y05GMWhoVVI4bHNYOFYtS0NKNkVRRUdrTURJQVFfNGZTYjFGX2VnTTNEWEJaZlY5SldveUdXTUJlcWNSRVZhZ2FMcHl6MElZOHZJbXI5c1dPSUQ5a0NEMEJIWFpPSXNLdkhsQzkzd1MwZ0JzWnZTRVFPemhMd1B2dm9FRG5OWDY1dFdvVWtpcTlyR21lRTg0RjBPQ0JSbHQ0ZU1ZQmViOGtEZGswNlZoWGdTMWVTQUdPSEVieVY3MTFxeFpydndDOTBrZlRiWkp5enVMSVRoOXUtR0VualJHVXY1Rmx2eDZDdkl0aVIwTzdoWGs2ckdZaDZKQzlTZ2NibDd4Wk8yTDhlNXAwNUlhMkFZa1M5QWY0cXdZTGd1cy1QdXNZYjVtUDZieGVNc3N6TUJtekwxR3l5aDgxODhWS3lxWnpaUXkzLTBLaGNmOVRBOWdneU90M2RFTmtfTm92WS1OQ1JTa3lGUVcwT1NmRFdTTldIaldLQ0cwbzlHVkpKS1F4SnZMLWExT3VoYXhjdzBBcm95WndScURERFgtWXFLeUluZWVqQnZEbEZELS1WbXA2a050Qmt0djRuZUNNbjk0SGg1R0Frd21DTW1Vdjh0YnNwSE9fbkc2djFWdzhjcVVDWlQ4Q1hYN2wxZWU5TGNpRjI1QWVkRmFNbjZlYXJWZTNZWDh4UWpReHhwcHpnRG5MZ2dTNlhfNWlFaGtjQmE2akoyaVplZ05qcnpTN0NBeXpjT0tyLTl5ZTFteHNTcDFIdFEwaWI1dGJjaHZaT2tkVFdjeG1FVG5NVTdaZ2h3NkowT2RFY0F2Y3g3a3pSajg2V3BIQXZCUkQtZ19nTE9CTGdGOFVMVmpfZm5XVHZGcV9GOFJtOXlxVzF4OVFLektmTDktTENtRkM1aFRtN0xzUFVfT3pWOEdmVG90US01cXQ1b1ZTdGJmdDdPS3E3U2U5NjRpN1BvWnJlYi1PWTR5ZS04X016WTBpQkNSNkctT2p1MkpDM0RVSHI3V2Jla2NDMEFtSjg2c1ROSGtxS21xMHFhNlM2QV9GWUM2T2xzVEY5Q2hNWjhWV1JVSnIxQ2tCSzh4SXdiT0RCUldBM0ZINnE1U0xINVRaLXJOMDNkc1BCbDE2N2RadHRxSWlBQlZZNDRPX3dZWUJ5U3JlY2p3dHFOTFNHWXRTdm1LQ00xUURIdWFyR21qZXNPaV9xZ3B5cllRcHhfQTBCQzl5OHJRNmVGcDRHdFBJSEZQTlc3N214dTdTeUR5b20weFgwb0JFRXVMNUpLT2tNN2oyRE9KeHFaMXQzaXg4elZRYUZJc1FJQTdJaHVzSV9ISkJtdHBGbGd6OHFrcmt5b2lfUFNsRzgwUVRNd25LdnpSQVM5Zlg4bVZfRWUzNFhVc1Y1bWY4WV94cWxUbHNraFlCNXg0dTJoSGd1X2xreWl6MU1pb0FCeUxpS09yNWd0cEFlMDBhektqWWZ4T3h6bDNmTEY1TUJUelR3NEYwd0oxWkFiWVB2cWxrSTVkRnpHT1RKcmc0b2RnbjRGQ3dfNEJnbWxIRHZnNld2NmQ4OE9DblY4enpxYzNkZHV5M1VBRUZ4RjY5cl9SZ1JGcWFERjl0S2RwbnBBdTYwLTN5Q192b1pFTDhNWFpqZEVnSzZWbXpPV0FRT3VLTXVnLVNsTUR2aVdIaVpaTVVzNWpVbmxyUGd0b2VFLWJhdWd6NWNsdjY5cGpmcWZQNC1FS280YUdMbkpVS0xGbVVzcGEzdDlRQ1RiRHRSaG9uZFhTOWJzSm05ZmkwZWpPeEdEWGdMdnVRSEtUazBDVnU5TFVWUW95T0NsSjdmTlJGNzQtNWUxcGlDV3laTWJlcnhySFJCQmpRUEJ3bGVLc0ozT0EzanUzbXZkOXJHc0pwNm5XR0xwTnc1c2ZfanN4eW9RWUI5X0VzbnNXWkVhLXdpZlFNWWNaa24td3BKNFlZbi1HX2tId09mcTBnRDRKOWJ2Z05LS25OdzNMempMOE5DemtIRVVQSlpLQ2k2dF94SkFrR283bUxpTWtsYzY3bEhUZmZqY2pCT1Nvay1KRTM1NjdfWjl4VkQzSVZVbWtFTzN1T2s1dm0ta1FlejNUQUNfZFdsSTZZOFNsT3dvRWlDWFhoeFR4bV96d3ZwRklVUXBJMzZQOHg5V0RybWNGV3dOU0VFWlhfOTA4cUxpYmtCWWxqdW51MXN0RFNpdUx6N29XLXBJYXlMZTRRN3JKc0JTZ3hBMDRWT3NIVWdKdkxfcGxsQmtsU0dzWWJXX2JweU92TE5tV1pDTjFfZkhEemc0TmhGY2xWRThrdjZsOHFfZmNidkpTZnhJWEFjeW1jX0wweW12UzhNYUx2NGxhOWZZbnRYX0xULVJLLXEzd2haR2VvbHJjZ25ZUEdZWDdzOXJJSlRraHhQYzFobGN3a3IwSTBWZmY4Wmc2VF9WVUJtTWFNTjljLVlLWW9hTE5mYzZSQ1ZhZFdOYkJXa2hZZnloNWZDWXQ4cTNuQkMyb0s1bmd2cmUyZ2pPbEtuREpDWjJNZ3dXYXNrYzI4ZHloNTl1NnlvNVJvYTVXeVdEQVB0ZHA0dGZONUtOejBscE1tRWNxcTBsdmJkd0V1b3NMMzQ2c1FYRWVWbm1RQkp1eUlhTlpQX1l3eVpJSmU5eFZ6Qk5MdDdfa3dnak5maHZTMkF5REUwY09seWNlQmlUM1lQVFAtZE5qUzRVMlFOZ3JwckVaN0xJLUtQNlg1bzhQWEEwT1dRVEdNYWhaa2c4RkJIcXdabW9sbVVzcUtDYTFhek01RkJRdUMtLXByUV9rSVdrSUo2YjZzQndQU2stRF83SVdEVV9oM0haaWk0NGc0TGNmU25vWU5JS2tRMzQzUXNJNkJXVU9VRmFUSHh4enozcXd2UVhHWXliVXZWWDNXdHo2dnJkcGNPVDJMNGpXWlZ3blN5dHllX0pLS01zNGpzaUo0alFwaHRibUNvNU9tSUN5VUlXYmhob2VJLW1JY3I4ZUJDLVcwRG5EcUNCZHAwODhyRk04Z2hCeWY1Q2Z1Q2pkRE1BR1o4eTdCc0NZR1Z6R1Nmb081ZXRCbENRR2JkY2NvclNJNDBkaFdkZy1sMTBjdkRyUEtmTXBFbHRhME55YWtkRkNYYXNKWUZLRC01MW8wYS1uOS1SMGJFMWY2ZDlPenY4bVotVndzb3dha3dSOXYtdmlBTEs1WEtoemNiM0wzRzl0NkxLVndBWnlMQ2dZeVRvMTFMZzAyMWw4VVViM0ZwMDQxQW9rZk1lQzZvaHllRjdSU1IwYVM0V0RWT0hWR2pMRFBscUVwdzBtU0pFcVFBRTZJN01lLVBxclRoRTI1d0dNRWxUd29iWkRpWTFhbWNfb3dCdi1xUndDWVhXNk53YXk2eDhmY0M5eGw4WXh6QWNqV3R4cVE5N0lZa0pNMFkxMXNZa1Z4bXVnMmRzSFJpb0JWS3NCME1lcUJfcHBSUWNFUVNVaUlONEU4UlF6YzliSG5DQ080ZkI2M1JraXdpVzluaXRfNHVDRkwwMnJKOUNYZ0ZMSDUxWVI5eUI5V3NJaG5hRFFRYy1ZdVpNMVNsZWdubm83cEZjajR1emd2enpIMVlBOVk1dkd4RGU0UDhjb3YtMU5KR1dOWXYxYVFpclAtcFNneWtmd1hub25ZQlZTZTNtNTA5dHVBc3RGSXdUS3FlY0hoYTBseF9Hb25IcEFnZ1Q4ZDVnX1N6LVNCTjBrZHR1aXIzNTRqZGI0UnNzMHctZUVBMEdHTFJfNWFjRFBjVXJGVm5tSVZHWng2ckU5bHFwUWZhalpxVXlLN2hLRVZQQ29waFFzVDA5SU9XQkxWMjFxR0NsaVJjblBwbThOV042a1JjazZ1LUJ6VnlBaV9IU2dzYlY1N3VUZndXOGhkelFKYnc2b2lKTGd0Tl9tYmxWdXB4YndiWG5UdlhpSWctOFlCeW8wQUxsVGFOcDE0YlhnLXhZc1JaUWdBYjU5QmU0UVhXNFhGdjRETWxWRDRLR25xR2tISWw3a3RGdGZ2bTVMV2hoRzlUX2kyTDFObERrdzBBNGVLYjdQSjFQb3ZvUHF4MHZ6MXR3S1BTbDg5VTlTVDgtR2I2UHhkYjZKQk1hSHlwaFVGTnB0UGFORVNsNzNnUHZoWlF1RFAtT2lSTXNmV0s0SFl2U2g2U09FUUV1RGR2dHlBWGR0aUstcHUweHNvQWEyZG40QmxYRlBtMzFiem00bW9zbmpYTnZvdlpFaFhBMW91UHBZQnZxeDZrX3RNVkZJdUZENjJfLWRKMGpLbXRmMm9ocmlsWTJfc2lUUWlMVFY0c3hiNVhmMS1GWjlkMTJ0T2Z5STVqWHlKSnk5M0twWTFWcGZDZkc3VHRSTGQ2cmNoTWY3VTZMOE53aUd5QnFsNEhGZllJUGJ5RTkyNTB4N1NyWDNsWDhHRnM5YnpfdjNNTWFSSE1UUHBrSm44TkJFaDEydEtyNnlNMmFvTkRzYVQ4N1RuWmpyU1NseC1TWS1VRFVqSTRmMVZUYWo4eldmamNBX2VRanEyYktlTl84NGp0NUxIckVhbDB2cS05RjFlV3pUNW1ZWEFwUHRERGdvTHhMUk9zNGZkQlRxajFKWDlqd0FzaGxmYV93QnpvZWNlQnVoZU1BWnBpQ1lCTnM3OFAwbzA0NWF5UF9hd2tJQzA5VXNZTUFNNlltOTFZa0h0Z0N1M3Y4WHI2S2Z4V3NxX053VURHdEo4S2tIZ2lzS1pOeHpaTzY1enE5N0gzbURManRBa1dPU3pEeFIzSjNjZG9hS0RNSXdBY3RNYnQxem53ZGNLbDlfUFp0SW5HWGhqbmN4dE03R05oaDQ3NXFCSF9hUUdrOTFCc1ZwOXMxbmZmVzlyNjEtaFJqZ3NuY2NGUGZDc1E1QzBLaDBkTXUwdG9uUERNc1UzbFN1OUVpZ0hLb2NsVzVfVS1nNzBhNExFSlA2dm5iZmhJTWdQcW5nVkVSNDkxbGktV2lnUUMyalpCUEtuMDdBQjU4aDJjcjdSRE5LNHhDRzVKX3NyN25WNDF3Nlk2dWl2cGJtWnpVSDhEQ0hVMmVmc3FLNThtdjRGdlM1VXdTUVpkdmdYbzBTaENaSUNCRHEzYjd5TTg5Wm9Td0E5OGNaZ215ME15cW1QNVpfczRQczlRNW5sVDM2QXQtXzEyT2pWSmlkNDlwQ0FhNllFWU0ya3diZERQU1hmVHdPRlNQamprenVISm5PS0pUdnBLNVBTel9UZ2FURVFOeVZBRGlqMVhSQ2VHaXd5X2drRFlSWFRNS3NoY0VzVUdOcnoyNDdSQVFuM2o4aWZ4WHIxdWpQZ3hMUFdRQmFORmZRbFowYTUzcDI2UUN6UnV5LXlkcF9nVnJXanlVMzBsMnRQR0U0X1UxSFFzZTRFQzVSeHFsU0ZNRDhybmUxS1p4Z21fYUNpaXQ4b3g1LUU0blZDSlEtN2lDeVVHejRtSUlTajFQb1JxZHBSbm45VHBqUUlXQm9TWlhUTy1GX3BuZEt1UmNiT1hMeGJ3cGpIemd5akl5RmhjNk1EZXVhQzBTdGowRk81RHN6eHZCM19tVV9Bd2lORWQwb3l3RnNHR0JmcU9SZjVzQXpGSXhhbjFCQnZTX241Q1IySE9NZEFzV2ctZ0h0SFNpOFZVdjU2MXRRclRQQ1R2LU50d3hCZU5idkZhLXpIeHNFQ3FpSVF4VDRoR3RLR3dKV3hGZ0NWanlDRFA3ZkctNmZmQmhHWVVQZHJ0QWtublhOcTA4Q0h3WnJ5S2pYM19JaG93UGtWc3ZBMUE0TmtxZGlGWlktZWRMb2REUXZjN1c2blg3OF9RelcydDBKald1TTV5cnhCNWg4cFdEcVRVUXJHQ19zaHB6WFpuV3lES3BUSWpselFYbzFELWN4VzFrak5QU25xVFJyQnBiSHNXSHJxMWNFYzh3QWJmZlFRMFNxbkdXZkxkdzVwcnFXVjRZUFVTelA4cDgtVFU4VElYVVJCVkFNSDg5d0s0aFp5TVQxbFNjV25LWm9JcXk5d3Mwcm1OLTNpQzZXdlpITGN1eFVLNzJtYlcwRzQtcVFmc29HS2ZLOTlrS3g5WWJ5bkhyWm9HUmhxclVfYTM1QnB1NE1xWWVzODUxSDQwWEFESlNPQWdIZlFEYTNIdFVvazh6UV9DVWxubFZIaTB5RXF5RC1CUFRLLWd3Z1pfeEY2Y0xVdThSZnhTQXI0QV9zNERyTTZvZGl4VHV2SG5McVpRRXMwVzRGcnlWM0ZfaTZvRmxtaWdxZGloeUluclg2OGx3OVkxY2d2aG1KX0xUUmF6VzVrc3NRVW9DUDgxMC04aWJINGF1dzNLMV9pUThxSGJVZ1pFMFB0MTlCdjZBajVKN01HWlp1d2d4LWFCd1pqblJUZmFjbXA1TUg3RmV2ZHF1dEw5Y21sWk56YnpHWkF4OElrU0hsM041WVlENTc5ZnhZS09LX0F2NURnalJvYUU3V2prUTE1dWZPY2x0c2VvVWV2dEZab05yOHkwS19SRXNwTnp0bzk3NVR6Q2ktdWMtbkZXSHhmNG1VTWw2UFZhT2c3cjFEdU11V2x0aUdFeGYwdWMxc2Q0cXdtTFFrT2pwSHQyVlFSUWZaZS1NWjZsWlFKeHVyZFctZ0JaVUpseEV0aVpPVU1rTTRKeEdpY18zZFNJUlBuV1NXdm5UUGJMbjBHb2hXUklCMFZsUnNIc0VWR0ZBaVROMnplOXhpSTI0MEN3UUFoZnB5WmJiRWNsTVpOUDM0M1E3WHV6NEhtN2JLN0x0Qm1iblJkUVVZSnpVc3JLVC1jbG5WOXB2aE1vdkZ3NjBDYWpqWjhnOVZWZDduQkNCaXNKcVQtQ3Z4THpjTnJndzdZdy13TEJyd3NrQ2g0bmJKTjVSalFQYm9UdFJmV2F5X1hHY2tKZ3ZSb3BRb1Q2Y3UzMU5XYXdOdDRiZ3BmMDBlQ0hlX3J3TXhSaXdKLUpTY0IxNDQ2S0hnRGI0TzNuRUQtYUFCYTJUSmhHUHlPdWZWRkM1cV9pS1p0R0xTLWlSU08ya0ZfekNVQzFoZjJnWDQ3ZV94dV84MVVqUEJCRllQaVpPd19fTnptLTF1dFVhT3hiODRxUVpKbUxBZWJ3cEtyc1FBdlo1ajI0eXFsOS1zLXJHQVF5bThpOWFKZXliRUQ0OExValhkbkFyWHVQMHF1cTM0dWxBd0hramtJQ1Vaam94X19iSElybGNmOTAweTY3NXBHMVctc19BSWliVzlyYS1CVXQzM0pvdTZUdHVrM255NzgyWDMtV3R2T1YyaG1kLXhVS2dqVGNSWWd6XzJFeUFPT2FoNzAyNjZEQThlUkJ6c0Q3ZDJOVWR6ZWo0YXlBTTZ1ZGhHbHVjcU8tOVhLOVozaXFZYmF5MkU1Z01HazhBV1NLLXItS1Z6blBpMHkzcENRNDZ1QWVmelFVV2Vkd0RpNlV2MjJ6YXBwc0R4N2doazJaeXJLUGdTaGRrdUt4bmw2RlAzTVZKM3RVQkl3Vno5Ny04YXYtUTVoSW9IYnJxQ3VIei1WWGRycXhxQmJTNXk2NUxnUGJ4eUg2UXozT0tYTDQxLU1UYXJWUGNXWUdmRF82ZDhKSnJ0VTNDNnBUQXhKM3dWZnJUcThKa0JIQVJNVVp1el9uaklwZEhkX0JhazFGcWpPMGpxbkNOWFpJZkNPc3VVSHpPR05ZeGowSWRhVks3T1R3WUxnbF9VeWpuekkxNzI5UGNDTFRzVkpGeDAwblZONHFtR2tBbHZaZkJoTWgwV2VRMHo2NzhHamlVLVZNWnE3cF96MXExVElHd3VsLXBFYnpxbl9SUXNNT1NIMkJZLWpqemdQOXQ1X2xEVEJHZUx6NFNMUzNsRElnM0ctY1hEdDc1X3RIaUxRTU1EczRUaHBXM1NwNVlFWWNIVUYxejI0WkU0UUV0YngtRkdydkhmTTFvSm13RlQycmxXeXBadGt2ZVc2WkNJZU11bXZmSnNsRTRuZ1BYcXAyODRLdS1VVjlMRXk0SFg1MEMxLVlyVlQwY2NTY0NTRU5HNlQtSnkxeVB5ZjkxUXRCRXRyb2RLMmxoQVdsRkZmS3k4Q3pyT3hTWWlTM29OYjhXNWFxbU5wb0prNHJiSi1UUjVKSlpmX21KRy1wcmMwVzc5YmhIc0o3TkVsV3o4XzExYXVkYmNPNTQwQURQQU9NNEVWY0NJcXNVd3F1cC1JVnVUdHFUQjdmRDhUaDZZckhsWmtwalR1T3l4d3FLZEVmOGxMN0V6RW1VZTQzaWJ5VENjREU5UUhud3RxSTFJMHBQUnpSRUUxVnBiQ3l2U3dnaFlHUjJXWmJ1THJ4b2VQSDdydnplaGVZMGtWWWtVS3dTTXJzMWUxNlVxZldZUzJQVWp4dnU4ZWF5Q2tMelphaUZMMWNrcldja3RENHQzVllfUGY0RzM3azJYWDl3Rkc3QzdMZUdWVFlLTXhuLXFpRzJScWdIVk1oNE81UDMzdGllbDBwVHRHQjJBaE83VE85dmVYa0VvZng3ZTJ6eEp3b2JFOUtaaEEzLUtIOHg4VzFreVZBN1RtOHhFRmktVUlURmQ3SzU0LWt6bGRLUVkzeGhWSndlLVpEaHdINW5seXNCTklKVzdKZTl5Tlo0MnR6TG5rbWVHRXZFRG44ZW93dEVldWtBUEQ3OWNaZXhzTXVHRWR1dE9wd3dPVUVnRjF6dWZrbm1zUjFwbDU0MFRkNjhxZXkzTTRLWDhTWTcwR0QyRkhfQlAyN1duWUVTOVZVRFRTa1lfeFl1RUlic1VGME0ydUc3UnlwS19FM0ZERmgxUkFHTDBfcERoR1VhaXNSUmQ0TmVqV2s0TnE1enB1ZFgwakEzMFFWM2c3djJXTS1oeEh1a2hlcEktZExpOUIwc3lmRmhrSTUzQnloekdJbHB0N05xZWRrOGlGMWNmc3MyWDVlbVdOQU14NTRqcGhfWHRTS2tKblJ3SDkwMi1vOWNnZXhtdFJpdzZwT2hRVzV6TGFfUmFEeU9lMzhRYVZsbUxNdUlJOVFsMkFFRlB3bnV1Z1llSndhdWRSb1ItVUpvdkNOTkdmY0Rod0F1d1RKS1RRdXRzd2JEU25CWkRDQW9DeW0tcnJTYjdDaWJ5T3NqVjZjUjdhOG9pVkRrVnhIazdpQ0dNQjdMUGthLU1zTjVqbUtIdkVlUEp2eTN0VHRuXzRSOTliUXR2NUliOTc1MXBCY2J6OC1rV1R1cFhaQ3FrWHdpMndkbVh0UHktQjNMeTBMTDRSRTVUdG9YZDk4ZHVYczFLMGV0LUZiTk1ER0otb2pRY0thUjdkVXd5OFUwNEdvQnl4YkZ6aHJDU2lLRmdRYWZ2M1JQQldyRkVtdHkzZFJoX0kxZDdYSm1DX3RROGxNOUo2QzZjYlg1UE92SDZKNDRxOGZsRFVrUDc0LWhTckR3aElMT1Q2cllJVExZbWtlaFI2enBySzJLQUlFN1l4WkFDVDlwVGpJcHR3X0VKWGppbk1Odzg1QnJ3cEg5TmhnOThDdExnZkpkcDJGS191U0NPZnIxNUxJUnFqcHNLSUtMQlF6S2RuMW9HdVI0dUZOWEdEZEt0RjZDNEVGa0xiV3VTaG9ZYUdyQThoWHBDenpXck0tcC0xSWlLRFFWRTFMWXpxVjBfblgyajZ0WnNLVWY0VnJyUFozbnh3U2VKeFk0dWtsRTVyVXc4NDdsOTlpcmlzNEVpb3V4amMyeFRoYjRBQTJwZnlxYk1fS3NxQS13MUJsbWswdEllZ005c1RsbVZubTEwNnhUZEhRUTd4bXJ4c1JlNDFLTXhoMWttZ1pNbmxXdlZUVWJOVDUwMlFRMXB2Nmlwb0NYbFNQckpLQkd2Ylh6dFFnVkxBd3NqMlRvcmhOalhMdzdpbGVWdG9FOGhKWmpqb24tcjBxUFUtdFdaN19aQ2c1VWc4S1ZubGE2dFN3Z2wwb1BpdnhLbHZqMkpILUdsOHF3RFptUjVLMkFrODE0ODRSZExxSks5MzFtU1VTdW9lMUFCd185b0d5REUwX2M5ZDVuYk1IaDZzRkJwbHhDbFpTZ2VvTzU0ZThRbjRPMmx5YUxEOGJTN1JSaWlUVV9tWGpzR2NjMG0tX0JkWUhDOVNvMWRpYkJvamJvOFdKQkFUMTJKSmlCcG9MV1IxNnNVRTVEUVlfY0hRQWtCRzVQeEgyb2ZPQzJoMGU1d2lmaF84VVl6dE0wV2trQXNxZzRVU1RkV3Z6TlNiNFhfWEhya19obWQteHBNUGlMcjRYa09vQXN0cEFQdmx4RHphc0JVNjZuZjZ4d0lfXzFYamY4VGdzb3dPMFc0aFpWcFRVVDlfYi0taFZzWWFGeElKRHpBWDZzazJySFJBRTZmekdhamJvSmhxQVVpS3Q5TC01QzRPYW5uNFEta0thOGhEQXpIeUhBT01XVENkQ0hFNVlzUzZlR0FLdkRrWG96ci0wRnZHM1llVTFieVQtSGdwRWFKaFM2NUowTmswR1lMTWN4X2ROMU82NS1tN0xjbEQ0eWxxU0xrcmFUZFhWY3ktSHRNVGNvT1MycTRhMFpHVGNBOF9oWTNWLVBYTDQzdG9ydGFDRWszUWVtM2lLQ3dUZWE0djlDOEQ1NXhQUG50MExoWUlBR0VOa2U4TzBmcjZHaHV3N0RJazR4aHNBOHJnWVNMblY4Vy1QazNVRV9WVkZ1cGx5eUhyMFFYdjZyZmZVYXNfRUpacXpmUlRLYUpTSWlkLVp0NkJ6LUVDZ0QtdlUyRkFHTmZLTF9xa3RvemFocnhfQ1J4Vi16S1JhSVBkX2NsQ09XbjMzREIwWnZSbVJlVU9MUmZjRjB6SkNEd0g5Nmc2d0daMUhlcF96MTFjUE15WndROV9rVDIySlQ2TzFXckM5b3Fmb3lmTjItN0otWGNCd3M5azQxMVpLTkhxZ2FkY3A0SE5RT25LMDhOWlViYVJST19UUkxrV3FzaDBmbXB1M2daZXhlSkotQkZYYnZfSGFfRVl6LUoxRTVObERnZ1EwejdibEp4WHk4RGlRbXUyZktYa0xHelBSNzlucHE0am1vX3NvSEo2QTU1NFZXd0RtUjRGZksyOEE0Z3BacnBJODFGa3owZ1pSdzRoYmRyOU8xanB1MU03c0xGS0o2UGtXWXZrbUhXTFU4dDRGdGxhV1Nrd2I4YWpSQTlLNURrRzdXbjV3WFlhU0U2UUJ2MjE3X0cxVEFGUVZ4bjRRc3AzMWVCVWFnVDZnM1VGdVdXclZaaHMxM1JfWlJmMW1BQXVZNkdfdlkwWkthUnZNdzFocmdsRVFOLVFJcDNTOUhNanR5OVUyMmRES1RrSi1YMU9JTEpFNWM4c29BOU5meWcza1paWVVsOTBfUk9MV1ZaZlhXaDNxWF9FUVJOWGxjR1VwZG9RU3VaOXlvaWJ6ZTBhczlIbjduV0JJNXlqT3ducUNFS21Kdmp3RVBFOWROYi0yS2ZCRW5aWlNjNkw1UzRqRU94WHB4WUtWTUNlS2UyX3ZweXdEY3hkaFpWeTRvNkwweDdRenZfYjhqY1RxSlEwQzVQdlhHLXlXellyZFZJeWFkTDFQOVprdXlnTUc0Y0puV0tlZXlzMlJJaU13cE55OGVoNFhpcmdnNjFNN0g3X3F2eG5KYzB5akp1Q0Ewc0xLWElrSmgzTXU1MjFibldrck1PRE9kQk1URjhLcU9iaXJDcEdFOV9VSlhjYWllcDVMcnBKUzYxYVQ5N2hRcjU0dGRoNV8wUDJVdEtmNTN1czdKSXJqWURWR1B4NkptSmtsZllQZmtaQXlTYmRoc1Nmd3dldTB3Qk85Y0c3SktxNDhkR0Q5cUFXbnVpVGxfZVY4bGFaTzJDWERNamdCd29xWm0yZzUzc3YydnRHNmJ4TU9ZaHkyb1RQT3p6dkpYblhRVFVIaUdNanQtWnN1THI0Y2RraUVuQklNdFpGM1NETUJlV3BHM3VUQmNfZ3ZlbWdVTkZadFMtQVp1Y1o2MzFobmlsTnd2QlVOWXViSUp4VFhMdkMwUFMxYXRSb1A3a2dwQTFhNVJIZ1Zud3o1NXJPNW5rRU4wUDVqcW9DQnBhX2pqYzkwN2JNWTR0NnVrQk1mdlVPbTlmczNxajBuQXRHb21oZkQ2c05fVVJ1SjR2TS03M1JoTkxocFJxdUlJNFU2VUhMa25lZmRkN04yQ3RqdkdmejJPSDR2c0dCVENFVmpRSkxFWTRLVm9OVEtBdmdPaDVBeFdBVXlNRkEwWVp5cWcxT2dVNzEzNWJpZDB0UEk0anhMZlNIUkszX3owQnJob21yRmFJMFp6NlFJNHd4MmRvXzhjeHdKZkIteVVBRDhhcVgzQzdlU0xjMkdseDNoelA1ZGZDajYyeEdoc1dNRDF2dGV0ZzA0VzJGZVh6YmNxNXJxd0k5dEtWSGRJTy1HclN0MlJVUkd5QWZNOUc4RVpHTy1jdlE2UHpXRkN4amZNZHRlUjk4SDNQU0FxS1JOaXhNNkdpZTUtVzhQNXppZ1laRzQ4Z09GMUkzUGwwZE5JWmNQTGdIWERTZkNqcXJGTmZOazFaWFg5eDZOVm1qQm5qR0t2dE1OOWRCT1MtM2N4YkpNS2tnR3BOZms0V2F0VC11dllUaWllRXM0cEdEZ2ZLel9ReHdCeU9XVkxoY0kyTDEwaWg3QnNyOTFZc2pJY21HTXBYdmxjYk9aekw2djhSMGRNTjYwaWpfb2dMWWpkVS1FY2o2N05taW9MWTZaY011M0NGTG5VZy1qX0EtUVktajlXRW1MR0liZGt5ckd0WDZtekpLU0VDUjFBREZTZTdCb2hPUFd5Q0E1dFZ2cU50ZE9oM2FVcmdMRVJQWFJsRUpGVDVZcmZsYU1KeGM1YXR2UDZfakZneWdpLS1WcEJoNHF6TENKWHpfcTlRdkIzOENFQ3JwdEhlM2FoX2lVVm0yZTM4dmpSOGNrbjdOdlFiOVRxZkpFNzdKeWhaMDBRMU1BaUUwXzR1UlRhXzdPUWZJWDdka1JjbmFDRUhHRjJWX2wtTkxrVHI4MmpGMldQelZraWh2b1U0cVZaai1vVzB4blhEX2JSeGpRUS1PenZaN2lNSWhLYm94cVRTeTloR18wR19HS25kNnZmcDBzZ2lxb2ttNlFIYUpxQnU4cUNPNzYxX0lOVGs0Y1NpZVpuR1R0Z3RjSGdkSS1YZUlkNDhQQkdfWk5veXpSb3dhTmR3a1QtVXZvZlV3Z2NoUjlqR19YZUoxZ0RZVW1QOV9tSHJWQ2NkVUtYb2ZzUHY4MDhXNE10NXpHT2ZQcFB4aEFRZW1UUGtDMmh5cVNYRmdOUlFqQTNsVkZTUzdBYTBQSE9HYjJaNVNOMGxFbmhma3hLaTVaWFNwWXU4NG5NZmJPamxKcW9Ta1FfVU80U2kyb2IyLUkzOVlYSzAzZjY0Mmd6blBPel9kUTN6Nkg5OW9nOFlweExGSlZTcmNPNnZFaFhRV2F5Wk5uVWJZR195Q2lqQl9Dd0xYUzdibFpyWGZPOTlhMXVFRkFPd19FLWFpUkNqSTh6QVF2VlRfSU4yc0lsUGlYdm9ZeXd6Yk4yUXQ5WXphM1hMTkJucHF3WW83WWV3SUpuel9qQlhMeFY3WkR0QnRBT0dPN1AwY1VWZWRGWU5OdVl5TWZ5dkRVdW5LODZkOFRzb0tKSWtMYUxWUG9KdDV2TzJ5WWRUUm54OVBYLVFuSHIycjl5U3dmdVE1c19SNmNjTGVMcmNoWFZIaXoyQzZQTDBtclo1S25QamhPUVBqckdCVGlYS3kySTdzSW8tVUpfbTZBS2ptUWwtX2p6dGQ1UEpWVTNMSVM4Q0tTWlJaT3h1MWFRbmVoYVpPWlVTQW9CWnVZM1JJY3NUd3VQdFRiMmtQdjYtZEpRMldEUXhJd2tMU1MxQXo1aXNWbmV6UmFtb1J0OWhPTlg0aEV4b3Bhbzc1VktsbThiRGl3b3BUTHVWM0RkN3NiVmwtSDBISUZiYzJST096bFR5RThhd3pYRVY1dlZnTmhaWHRuSmpTaU1LTzM4T2VXU091X1BZYzdZdjAwSFV2LW0yYlgwS3VuNWJhX2dXVHMzRlVTTVNnRFhCUUlBMHg4bm1uWE4zVU5UVTJsOEhnNGtCdldHRXhrdEdwQjFBMkFQWTFLS1duY1NpMDhYT0dHM2ZMQzZpeHI3c0NMMWtEaGpneWlJZFM3RGp4MjMyWGNQZ0dYRkF6ME9pc1RQbVFuRGgtanJldE9Wbi1lamI0N3dRLXRPUm9uNEI5cGloRjVKQ1ozcS13RmQ3d2pXR3c1ak1DT2NXemVxWlBmSTFfelVrOWVVQ29sV0JBeEw0MWJwSk9EOXlxbXh3UzVPX1Vsc3Rka0dJd08tVE5ZTzBFWi1zTEpwUmVvVXQ1UGZCb3diNlNuS0J1cmZjNHB4UVhJRkhhVlNMczlFMERqNjFTVEhGMVZmc3djTVVCOGJTMF8ycDJhNVdEd1NIZXRlU2NScVlxcFlyZUhsdGdNc2FGZmxSenFYT0dDR21yaFhPNnhDaE93THdNb0lNNXZQM25lT0cybkotTV9pOXkwY0VmTGw4clZlMjF1RTNjX3hSQnFGV3ZFY2hESDd3eUhOT0RXMGpHY3ppXzNvTm56aUlOM3NyYnJUN1RRN3NucG1mNUxkRzRvdEdVTmdoUmN1Ml80TE5vUnRTR1Jab0d0UDlEWjJtekNLSGpWVDZNbUVhM3J5aHNHVDRJeGl3RFVNc2dCeXZhWkk1RUNnZzFLVlJ4bUJxMlV0dHFLZEJBTDFRdVlFellqeF9tSTNEZFkyV2JMZXJEdXlXc1FGbGZVNzA2SDYxLWxQT3pNQWNWTGVYTFgwVXk5aVZJNnRTOUZkUWZoUWExRjdQWUIwRlBoYVp0Q3BoYjZSUnRkUHFkMThTd3UyaUFjNzA0Qy1FTVNWazFpNU81T1JGS3BxdXVNX0YzZFp6QlZQNGlWaGRHZ00xMkZ6X1l4bFA2THdPdGNMU3NrdEVWR3JlUlJUakoyTnQ0U1U2MUhnN3hnZ3pUSDVoWU9CTXItRGtDc0pveHNRNDFqQVF6ZDB1ZmprT1VXT0ZTX0pWemNIQXRtSGNjRHhwdkR4NlViNzlja3JNZUk1YXdxTjNtRHpQVTJIY2ZhNVZtTzk3NThtNUFUS1RxeDdBdU9ZbVNKSE1tdldjOUtOWGFodEV0ZFRCUGtLVGJqRjl4ZUNBaWhVZU9LMG9SU2VxbnVkWEJEN0VlcUg5anhRWV9qS09BLVBjN3JXWjl4WFlsLVpKNzFXNGpYc0N1Y0xFMWZ5aHNwOU1hSFU0dlVTMHVWeDlkbGhUV1o4MERHV0Fpb0c1N05SRFAxQktzbWduZk9wUC1FYnRaaEd2bnVraTE2RC1WRTIyNTMzZ29vdGtuQkFtWFFhenJhS1R1cXNNR29ZM1JheHpRSWxpeHc2NGl3VUowMk0zaFFSOWVXN0QzdW9vSzVKT0daZ0ZZaG5qbi02LTJLQlUwMEJQVHNuako3VUNfTGxSWFpOSjBLSTlLWmU1YXdUNjRNamxuTGhXWl83Zi1CVTZyay0taUJJSlU3X2pQMjl3cF9qeTNkWkVXZlp0MlZnSWdiZktPUE15cDFUNjRhZHk0OXdHYWVLVHlfMHNHQ0s0OHNkcmZkNGVSRXhYZUt5Zm1KX0Nqd0ZwcXhaZ25TdG1DVFByZnRCd1BhWXJHU3NESkloOWdWWk05ZHRtUm1ZV2t3aE9RNlRENllXVGJfLUgybHdFMmFldG1ZdGpGMmt2QzYyQVd1UzhnUmdYeUZIZ0p1ZlRyUV9JSks1dmYweXo1d2pXYUgyd245bnNOSFhBTVVqU2xNM0VQS0ExNFpGcVJuSFBkQUlXclgwN0hpcXgtZ3RkZkd6ZFVHNGRvN1hLZF9uNkxzb3BNblpDSDhVNnliV0Juc0dVQXlVVnF5cEZ5ZzZDSm1vb1Zoc01GV2U3YWVTNkZtaWd2QnNTbnRVcWVrTDR3azZGQldJS2Z6YlVKSGpiOVpod0VaelFDajZzbDFIYlJUYmVLQkN4eVA1RWFUZnlTVjdmRS0yaUI4THJIS3NYNWM3QVlSNE5OZVhOZUkza25SWE90eXdWempFNmNIZUVPaUVod2lsYWZIakRqWUJuM2x6aEg4cW5JRWhvSGNRenRCb0piaHJjOEstZkU0VFdHNTRWWjBJZ3ZHd3JfX09yNzRhbDE1WkMxcEF4WThaRC1zZHIzNE92cDNfUXF2YXVQNnlpZFQxQnJYbGRzUmx6NFlJM1A0NmhwaHhja1hKbkU3aTF5Z1ZsalBEWHhORjEyemxTVXBQSUJkRlE3UzZsc09HYXc1TGhjY09NVldvc1VHejRuZ25ROEVUVHRLX0NLbUJrNlVwLU5CNnh5UXNrTFp6SFFod3F6SEVPUTk4OWMxWnlrQy1HNWJuYllPbUVHT2ZUcWhTdEFSZi14eXpvLW1kcFk1NzVHWm1XbHJlZllhcWhQd3hSbzctVTg5WUF6dXNBeFZWOXJZTnktZ3N4ZTZOQ3YwbkRSODZiYkExTG9QYWd6bGhwSkRNSU1mU0xxNkRUWVA5SGdsM0Fmd1lEVm5sVmNOTl9oWnBkTnEzMXZpb3Z3djk2U0c3cmlMQUt1Q2s5djRqQXRWdk94Sm4yNUlXZHFPSklfNjdXNjlZbEtKZXBMclhzbXR3eFpWWnFJNG5wYjZhZm5yZWpHUWpPNDM5QTlQWnVfazRJeXVRNlk4V0xVdmt5MndNUVpTaXlaTFlHUDJTRmluLTk0NHNmdll1Rk1yS2VKR01qcEhvMXdpZGVTRjQ1Qk5PUWtzWWs5V1FiNV84Y3lGZ3dXTXNiUG1ya3V2ejdCQkVhVlRySnJfd2Z0NFgyN3BuX29fUF9xXzBkZ0hGRzE1NXdlYW5OdDczcDcyVUFLd3YtSE9WZTBxWkNQaWFoOV9wczNkelFLSEhHRGJKWW94Z2VIVU50WnAyT1h2RnBkTUdFRTBzb09jdDNRLVRvUHpXelNzakZlYmR0TWNUWlVPb1c2cjBlMjRaNVpia2xRa0FSMmV5UlA1LVpfRnNCSzJReDdmTGZaSnVId21iNkd0Q3dyR3ZNNU9DNlhKaWtTM2JJNk13akw4ZU0zLWxETVlpUnUzRG5MLXotZzhZUG9XMDZVMl9XU2tabFg0QnJCX05vYUNhRml1dml1V3hyWFBqaTMzNXlkQlRMbG9HT2pqRmh5SnRmUExSRjVLM1JFN2Q3aG5JQ2prZjdpU3EzS0pPR25QWXFmcXVUM3RQNmUzM1B5ZEZjZlR5SlF5RVNiX09DMUlDZ1p3d3E0UTk3LXU4b1dLQlZ5WmFKWFQtZXUwaDNyQjFzVDR6ZlRVM2JSWG5vOWFmSnJhU1lhTnhkbVNZOGZ6aWNCSlNNLVI2bWVJdmtQd1IxVjlVaWp3Vlk4MHhPVU1IWG5xX0RDc1FwcnFrZUtMWERrTExWa2xpNXBLbFZNSnlLVnlrd3pleHpyUkYzSVhhNWljeC1yS1hEMmtSSWxvU2lla2tBUDJtcGItMmYtVHE0cktyY0l4YVBjY1F1NHZReTl4UFFOVENPTWI2d2FYWVQ5dVl0ZjJYSjdkMFRHdlJ1V3lPRnNNVUl1Mi1yTlg1TGZLQnZOeWs3S3BrSGtNbTVMNmF1LUFQa0N3UHNBMW1KNFMtc1ZYb2ZrWmY1dTdBY0tINjlCem9MWDZPOW5ydFRDcEF6bko3OTl5Rl93ZVA2QjJicGprZ1dTMDdxbHIycDFIZUF3S0VqZ1BFaFJtcHdTTVJNdHlmdE5qUmJWaWFOaWFuV0tsTGhyVUpCbjN3VlJyal84QXZLbUdfcV9CZDBWZ0hnRzhRYlotSW9uMFhUSVlIQ3ZLenEtS2x1bkY5R2gyU2t4aXlLMF91TTg3dFFoZkpvT0YwZlNEcHBNV1pWZzhhY1NCcG02UEhRQU54NG5SYmQ2OXNCb1NKdFZLdDQ4akxXdXBhbVd3aTA5aUVVRjVBUDBBRmxmN2U5dnBHTDF0N3p6SVpSNHJvcW1mOUxQNm9oN1Bfd3RVOTNwX08wUlZYUVZpOTNGTHh4d1hiajdubGJDbnVfOGFuNVRraXJ0X2ZXeHF3amt3T2h4OElSeU5zbnFWSVhlejFGYnhTcldDWHFyY3RDLVR6WUc0OTZTdE9NQlNJS2xuNkI5dmN0RWFMdVZuOWo5ZEFhd2ltTGl0ZjE0Y3RLNUhuOXhjVU95bDNVakV3ellmUFVTeTJ3UzhnNXJ3ZFYzZW1USXVEcHB6NHFNRnpsdFJWR3BvdGhvcXZXbXNMY0dPQ2FjMWpvek1RWU9RcGhZWjlLUXp6QklZWF9CT0E5djZZZk1OeUNvYWpvMHktYy0wdVNDUlN4TG1zczYxZ0thVkh5UElsNzBNcDRLRl9jSEp1Tk5RVHpoRk8yQXBGSVFvSHZEdGphYmJLYlRQU1hyZlNPeE5sOVhDbktOMjgyZjRDam56SVVBQjlrdUYySXVNblFMSENlRnVDMDB4TXkwV0tOWmFtc0NScEpDT3M4TXltLWNwWVA3eDV4aDBtYUdwQnJYdWRGdlctUGNMYUp0X01wU0xJcUwtWjlFb3VuREd4VHdnZTFVNDhuSlFZVlY1RXZ2Sm9rdTV5UlRBbW5KT2dPN21MWU1yT1hVelhOSXRCWVNGN2NIUlNNNzdObDRQQjVXNFFBM0F0bDVWX1dQM3RiWmhfOUxWYzR6dE92XzlnYmVnQ1VtanBnVVh5SXJMVDMtNGQ2d0JZOGtVMmNxY2RpR0xxclZfWGhRYW1xM1MtbGtrZFhyekloZGVWX2xvX3c4SFpISC02XzZ3Y0oxY2xPOWF0eWdiN1RvS3dnaXhMcWZmUDlfdU1MVC1BRF84bEUxeVZUQzM2WFYtTHdkTWRqX0FCYmxidWNZNWYyVGNkNUZpeU9EVkd0TWp6T0tvcldqVEg5Uk9sRzZVU1BJMjlRblVtMTZzVEFPeWV0cURkeW9TbFVYSDhVV0IzWE90bm5kT19DWW9CbFBiakVEQkd6X29OUHYwWXJKU3BtWHg3UGs5VFRaMEQ0VEpMSnNUdEZTMzhtLTZTRUZuVkF0d21pUThneTM2VzZFMUEzX3I1SjRFNUFmaHZmeEhGQU1mM3hyZEp2Zl96b2w5ZVVKWHFaNlJVMnZuRVBxV1FkdTM5YXh3MXVTMmFNc3d0WHVlV04xVnZkRUhtdkVLbTdEaGYwRmtwNjhUczJaZzVkNjBBbUowWEhEZXN1R1c3OXRRM3NuMGdtVnY2SnAwTkl5NjlPUl9DQjFiRlZLSVZyeFVNc2NXa3FLdUJEU2ZOSy1jWGtZbUp0TkdYMlJsSlVHTjhoVVFEVVdrR2FwdGtjTlo2Y2M2SXpDQk1USzRJREdWR2hma0huMnZPXzJPWHdYLUFaTUJsaG9hRTRRNTV0Tk9ZUGp0Ui1hbk4zYnRWQVVpRm1hRmNsOUE3WjgyN0dGWDRtT2RjS21kcVRobmpLRWtNS001RzFQWGhZU1NRQzlNUWl1Snhtc2g5eVdJNXNUckkxXzUxVlZzNG5KdWNqV3A0ODdYNS1nemNiSEh1QXJmMVJfVEJqY0cwdGEtcnh5Sk96dG9lYVctVWRoWmpLTmpBeTZrb3U5RzQ3WWoxM0hNT25sR1VzRU9tYjZWc25XMmFBV2dqQkJzaUttRGpuMVI2VnlJS2VLcVkyWjNFQTdGTlB0WUNrVnZWNC1VdHdJaHlCNHJ1UzhKM2V6T2RJN0hkTEY2MU5QdFpWMy1fRHRUYndPa3VSUUVJdXY5TU90UzZoWFJjTU5zdWhWSVhlZW5nbXVESVY0bnZ6Sko0SWwtUlRBdEpqWXZjczB0dUV6c19VT1FKM2RvU2lxU1NBUmJDbEtoMVJvei1UYjNneVlUR0hJZVZldmtadGFyREJLaVF0SkhiQl9hQW02aWtzazBTZUY1dW5hLXY0YzBUYjV2dG1DbDNHZ3ZDZ2xTeEUtNDZEYXhSNEY5TlFtOGZFTDJCZkItZVNBdk1VYzYwVWhRYmxZSnJ4Ym5UYXk1ZFl4Z0xwbUZOeUNWdW1BUERCal8xS0FlcEhicGdWU1QxS3I3eGxoaFlHa2V0aXVFUXA4SlFaMEJWM3UyeUx2S21FdzRJLWVEOWJtajJ4V3hERlA2Sm4xcUQyNnpfcTN0ZUtMd01KX2NrNWlGajZ4Vk5qSzBITEtsLUFTSExpUmZPZURKWmY1Y3BkZUtub2YyOTI4M3k0Z1dEd1NZd3FXckl1N2pzU25mY0wxUEdCZHQ0NFdmeGZMQlI4MEVlWlplZ3I3VnlaWmVzS2pGOGt3Rktyamp6Z3EwRFhtTXJva3NtTE9hMW01RzFMR2JaTEw3WEt1b1Y4MHh5UW9DOHpaZmJHN2lHbVhQdG02Nk9tV0ZlT2FaRlcxVHBmZG15c0FXNktLRXBnQWFDYXFpMzIzRVptbzlCbUQwVlJYeHd2NnRIOWhUaDI5TkxJLVlwd1ZSNENMWGp3VDdXSWNVVS16Ym4zNUF1VHVNcUp6WXF0YkxTVWk2RFh2cVFKTGFCeUN2cTlqb250VVRjeWpBc2ZLZnRFM241VEJBX1REc010RlFvQzZGYTl3aVdFUEVrQUJIeDd0VXhUT05IQzBwUkF2Vk5FakxuNXY0ZHQ5T0tBdE9BQVRmRmdra2p2R1RkWWJTcW1VMnBmdDUwT1NKTlVFWm5aenUyOHpobEFNRHhubXlkN3FRdURPSEZBLTB2TzNsUjl2YTZyWk5LSFI2UVNpdEN5TUhxUktyblNMdzVoRkVCbGxwUEQyZThVM18ySjY0ZVp1Z1J3Y2xxQzR1ZzZZRGk3NHNid0QxRTRsVFh5Zy1UaC04ZHBqZ1lCQVUtejRTTXhvejZVOURKd0xQNDExT3dyRlRUYVZCdmlPaUc1LTUzT0NuTkpreTBQMkQxNFRzUXkxMlBNaEFwdzl2TDE4bV9fN0o2dU5OM2lqVlY0dGN3cnVHYkxNU21TM2wyTm1DYkYtR09BNlN0NVotbFZ5ZzFpTW5fQ0RITGI2b2xDYm1nSjFLVF83M3VlMjFvcmIyR2tFZjFJY25NTlJFRzFwamFzTjZRQ0VPb1lndG5URkhJS0hWSWhJQU03LTIydFNyMExlUUNUazdJRzBNcGdYVllxTEVXRDNrMnNjMklncDhKdUJlUFFxYV84a0pqNU4xWTRzMEpib0pkelk3X1Q2VU9xbnY3c3RDUTlmNk5hUE5JRzFPVEZTUXMweHRIZEVCdVFpeHpISzlNNlZGQ0ZmNEUtTXo0NGtCWnpoSHVVQl9nUnlmS0xHS3FnOUZlWUpnMVRxczE4NXpoMEhZb2FuVlJ3SjhFN3h4Ykk2d3AxcWNPejJYbUI5SjRsUEU2NVNYaU5vSUpkRktrb0pBam9zQU1ZNVhUZGFvbzFWNFZpenAzMXB5X2lXY2IzX1Rna1Z1c0xMaWI2WktpLVpQV2R5UG5keUIzaEpuMnZGd3hTc0xPeEYxZHQybEFURU9TNW5xdVJPcnhQMDZ6OEFsY1pfak9McFhhWXN3TThBRlczYy05bnlfQzdwLUdiUXI5dmUwRlZodnVTejR1eUdEV1dXekVxLTFCdmhuMTlmTGpnTVhTWE9SUjJHSHVUaUhyWFR6bGQ0eElKM1M3SjFGWlhQTlB4UmxYOURYWjRKMEFGemctd255MzRsWXd6eFI2X01yNGxyRjd6c2FsRXhlZHpmYUpfVnhnSGpoaEZmZ3FQaEhPQllMOG1lTElYalRGc1NjR1gzNllHZFZHcTg2aFpSdGQ2UTlVcGI1S1M2NUhkSnBwalFTUXJKb1ZxQjNKbndtbk1wY1JMQm5RVlN6T3pVX2pkS0ZQa24yellKWFBVSHY2WnVGb3FjUzgxeE5ybV9KUmZQa19tM2RjbExKcVFiRWVDc0J4cUpraTV4OW5kalYtVUpvcWtCdl91R0ZYWTlnTG5pc05jTHlJdk82YkRfOWxvY3hzMFZzV2dPX1ItdzNOOVlEYTAtRmFvOHUxOGgxMWluV2JjbmZQa3VCdzZ5SGkxeldZcVBpTU8wOEFlR2daeDBUM3VZbU45QURHbkd4Q3FBSVJHMkxFdXN1OENoOWotb0w2NEVhMTc0em5ZbjF4aFJXdF80RWNqZWpTNDE3NW9IN1lPVEUzLXVxVjFzemFraU4tUnZFbmNXYXQ3MDRna2l5RmZHM0JtNjFrOFhfTktFYmpCTVNXQlhLS0lfWFduMm10bi1wTm5lajVxcDl2QXhMcHQ3QTFoYU9jRjhEWTdhUkVjYnRYV3lFT3QyT0V2N1YwdU51bEd6dkR1OEM4QjBSVWR0YnZhd3VDRFBtdm5sSS1WOS1fZ2hzaU0zN0pUazRldm5sa1NNWTVjSWdpMWk4NTczMEIxbFE3eFFTQnh4N21WR0VQU2tlOHdBRkV1dVcwVl9EY0xRdkdaSFhPcW84SlJyaXB1OHRGTkc3eEx3cUV3LWFZNkZhTUNUa1hQMVJ0cmw0U2M0b3ZPSm1FWkV2LWlOUmw0cFBrcjdsdGZEb0puTGc0ZkxXU3hUTmVrZ0RYRmRmRDZzNnhhWXQ1QjdfOXBLRGhRT3RfbHZzV3BqOTdJTERlem5wN2c1VkJXbC1EV0lYWk5uSFozMmJ4VWJFRFlmRThUY2d4WUMzR2ctZl9QaEw5aldVMlg3TFJFcERCR3VJdktXMUItR05GWUpUM19Wd09JYXVvSVRiaC1XSDZHd1RZYy1acTJsZ2RPUUZmTHFUaFpjRllEM2RVb24xeU9xajMtQVBERHZnamtVeWN2YmZmQXlOMEFZUW94VXVRNE9Wd2l5R084VzZWU1FlOG9RVXRKSDZWTHNYb1ZUT2RjcFpQMEcyYVlNdUQxZU5MeGE3Q0tDRjlialVaUVhXcXFVWjNtb0htOHl4N1NCOUUzVnY0S0tmTWU1STJjdFEzTEtLdXQ1YkpjV2hqR3VCV0F5eHp4U3BkeENDYkZmTHdmOHFac3RLY1FBNURhRkt0aGtaQ1BXdVNFdXVEUjhMeVp2Y1FycThxZnZCdE9ZQktsLThpOHhiWjROVkRPZTRRNVlXek9IUzVKV0JheXBfczlnckhfM3pkRUk1eHVsSkhzaDgwbkVFRGhzazYza24weExHVFlNcGx6eFBKX0Z4U1NEMzgyajVpamJBQmZEd1FHR19mQ1lMaWMweVVqZHZHYjZkVXpSU1V0cElEeU10dVF3MkloWFdjaUVoZUs0NU5nRVc1RVBndTBzRWEtVmZNR0VpdUxOeF9uMjdnb2M3MGh2OS1rWTlGNjk5Y3hUa0Z1d3M1bVZzcmV1Y0RLWDFzVWFIa0hrUWY0S0I0Nks3bjBHWkR6dGRLaU9ROEd6OEZ1cmQ0UTlwenBMUEJ4QzVZNFh5ZUFteGdsd21RX1JsWExxVTR1ODUtUHFmcFVMeXkxWDg0WVREd01MSlBKVDg4VVJtcVdSOGZFQXQ5dTB1aXRYWnpXRndVdmtTYmh5c2V0UW13eXNPODhCdGhsUlZPb0trU3ltM1VZaGxWMG1TSlowZlc4Q3lmMDUzZWduRVh4VDhIeXFtMXZHc0pEY1d6d3g3Q1VlUzVCbkZkME5zbmI5d2xSdFRTTFNyOXBrNDlheHR1Vlcyd0hCbWhEN0hsV3lTWkNFVXdxYlJzejUxcmdJdXVaRlZFaXphNlM5ZWIxU2JSTlJxb3E2UHowX04yaGRtam1aM1FYSW0wN3IzRWlZUDdsYXR4bEI3d2dCSE1kc0Z6SFVtMTZmRXVaWXduVUtleWhsNWFrSEloRENvQkRzdUJNWEtRU2pJdUNvVXNCU0QwYmFsX3NYa0l6c3dKeUFnQ0R0cTVfYzdCY1pQTnMxbDlJdTBiQXV6d1ZzLUxPNmZ0a3Y2NnhuQ3ZjNTBPRFlCUF90Vy1tUEZoanlSMk1sUl9DbURycVhDNzNUbUdMRlVXV3F2M01MMmhfb0p4aU43U3IySUxIMGZ5VEJSS2psNHVoZzBqRnRCcTczMUdqMXhxaDVIYlF0ZkZWMEIzMkFrWFZhRlVmTS1IOEF6Vl9oMXl6UnBzNEJSMEdKYzNYT3JTTnRXZWlBLWdBVzB5YW4zdEJXeFl3WUZmcDR0R3RaYWZUejJrUkNIOGt2SjFaaGZxbnNaRkJLVHdyOUdVWkJhWUFTcjZYZC1GWUdoWU5BTWZlNzFIRXNxbWFIUkJ1WkVtWVpOa05TRThQVGVReDRzdjAzbnBoS3ZLd1cwbERHOU5IYzJVUm5nTzRSQ2hfMmd0Z2xVY3lRY29MZVc0Rm5tSUVVeFlnSFRZdTRJb3VsS2otc25SV0ktUmIwRTNHMEZ2LXpaNGhhT0w5NktNOUdIQ0V2bWFxZW9ZUktiMHM2eGNEY1hfUm9CdjZ4TkJfR2ZtQ1JDZHJJTUwybDJjQlVzT0k1WGpJYXF0emhIU0RzSHRidV8wU3ZmdkN6LXB2aVhkeGlVOWJBTWhJTVVVWm45cFdRbnpDTjJoVGRvWnZUYloxY09WSnZJWmJDUWRsRmxkQXRDSnU1S2NuSktrQ1NCVWtXWWNjaHhKUDRRWlU0WkpTN09taG9HM1YzY09QUl9ONE9PRzMxd1dkSGVNZWhoU0Nkd3BvR1JXU1B6cWlic1c1SmFNQlQ5TWwyb05yUDZPTW9QdEo2UFphOGM2R2duMGlPZkJ3c3JqcTJUc0xWV2pjZ2p6OEU5LXZvYnFCZlE4NDVvOXcyM1JCVHZaY0g2THJtcWJYTm9GdWo2XzFKMW1JQXAyNWh6ZWpUS2pEWFdSTlJxSVRqT2VTLTd5MXRIT09fa0ZEODIzazBBNlBXcm1jYW40ekZDUmQtTzBMb1ZqQVMzOWlZellEMkhnVnQxMWtqRXJMWUlPN0xlR29EampKek9TOGo3ckdraTVsX2hCYlFlOEtMSWZVYXduRnpjUnhwMVJnQlR2T3BySzE0MUhzTDZUTjFrUm1TVU5GOHJCTFkxZmVuNEpPdUtCN3JRaG1WcFhkaFdJVE5JdkRTT1o5eHZwRVpGMmtVSS00WVVSajc1VldSbmZrNVB2MkkyMWtKSEszYkhyS3F2bzZ2djNqZ0pUYko5STFQWVFFOWZXSWFKcHctYWM0OElBbnAyemdvTzB3bTVjSVNtM2QySUl6MmMxdEhjM1JjVGlpaG84dkdnSFJ5ZFhkY1FlbmVleVBreFdGQWxzZ1h5a0JjNUZsYTNkUVpnczE3MHpJdU5uMDJQUlVEWHp4WFZtY2Fjc2h3YW8tbXpuRUlXRU90aFVUWFBzaW82bnhfVXBjQnBYcTM5R0VRdDV1RWw5TGtDSGc5dGtuWG1yN1pmN1pudEFVZHZYbzdiRktIcEFXZ0dySXJPOUh6bzlaN2xlanpDeEk5Mzk3R25oTnRjR2Y2UjZ6QUdBY2xKS1RCZnNfNFV4bzhmN3h6WnVlVjFtMldTX1I2cDR1VzFyR3N3Y2I2T0phUExBajRsTlhaZVZIb3hYLXF4bUFMdHlRY1JXc3gxbFIydnZuZnp1WEVJNmc2Y3otaHliLUJsRlRqMXVCVHF5LXVjVEN6RkNkbkRtV0xoODkxQkVUcDBRd2VFWE5SWUtoN0h0R0lBcnZWVFlzMG5Hckl2dHcySkhIRFR6QUVQeThqVzZ1WndiVE1VdVNta0Y0NXNvY2RRYW9nTjVMUVlQWmRFWV9HeGJlTHdtZWtFeUtlNU1WNVdFMWdJa0VFV2k0Qjh2a2N3SFJfc1VNam9YbzB0anUyZXo0WUZWR2N0N3hxRkNMQXdMN2hUc0lESHlXTnFsNURLeEd1STRUbGw3MFV0eFIxTmpic0szUVotcDJtRURreUhMN2Q0aWtYTl9YUTVjMkZXTHA5andlN1dvTllWc1djTExmMFd1OFkwekRuMEZvVXlDdTFtSGdLV0laVnM2bm5FMkJJRHlzNXdjaERhX1lSdklMOXJKTWxzU2Vvek5meVlSRUJYaHBGYnJVX2kxejhSbWQ2T1YxZlAweE9ydHl4X1BCd1FzLWJ1OUpScEpFWEctSzhaVFhOYUtqWTI3bE12cGM2Y3F0UGVROGM0QmlQNjR2T2ZHNjJMQV8ySnRseHJyS0hqLTlNUWZLR0k2VUtnbFZzbU5IXzIyZjA2c0VqdkJFNFNJVUJuTk9vX1Z0RlJZYXFXWjB1UkxHbUlmSlQ1ZWJvTzlDWjdBOGVfRkpmNmFsbmxQVzNZWEctTG1FRUxNMlV0dEtFRjBqSWdHZVpUOGNfcmNQNThBal9hY3Z0dGNHYURoTjZCWGxxM2QtVVlaY2RhWnNsZm1vUTl3VVM2MExreTBSdXEwLUI4Y05pZWdEZjFxNzZnQi11SDZMeTRlbXNXNkd4OHQzbnNGelQ5X1d5Y0VCTHV6andSTDhYQ21yalkxM2U5SldpTXc3TTBPaEtYVHcySW83VEdGbXZfdzFja1BhaGRPZTE2N2t6eEw0R1A2WkdyOUlBWEFpZHJoODlTRWN1YlhBZ0NWa2VpQ3dkUl9uVjg3R0tZTnpQd1RVNFEtX2tWWG5jclFNcThDS19PU0lMcjZCbF92TTA3RTEyalVoVVdSQkhVQkFxSDU3V3NNc01YTDVCVXlYeHhGTUdsc2FWRXdyaXhmM0FDbXZaNGdudDlKOThBbV9VVENkbW14bGRwcDhZQk50LWc4TVhncWlYYkV2MERjUzZXX29BZVF1aFN2MnlaY056UzdTM1lETnRGXzMwUUcxYzA4WkxPSERtYjRtTkhzWXE3cm1yeXEwOGw2VFlpaDV0R2ttcGh5MURTNlFIcmU4MlBKOHJHRVIxTmg5Y1A0czNNbTlZUGVGMk4zVnNoQ29sYUxlUGhYSktQVVNZREljbUtqUUN2MnRnbzFEVWVwbmUzb0FRcVlkeFN1ZUhvcFZyRldsS3ctTkszdENiSjB3ajFPaVo4Mi1ZSmJwOEhYc2lwcGFNR2I1NmI0S241NlR3N2plRFV3SlZucmt0cm9kTkJlWHJSZFd0cEZtN3l5MHAwV3NSZjVJeTFrdkxYMnV0RTl6c3NuZFZWZ3BQU0doa3JMXzdNVUQ5cUpZeXNSb3dQMi1VU1lUUWJza09VVmFEbGlzcEJGVE9PMlhVZ25SdjVvMXZTZE5TMk83djRZbnk3NGR2LXdlbmlyM0g4WmIwMGc3N0RNZ3BTVGJPQzBpZmY0UFg1dk5tdngtZnl0eTBGSmZrSUgtbnY0bDJrbGQ3d1p0UjR0QjA1LThUYWowV3RrS2Z4ZDhiMHVIeHFmazM0eEN4NGdaRWhUeE0yTE5oa1E5aXpqZnB2ZUFMMl8ycnFCUUtYaF9IeHk3VldLNlEyOW1zTkhib2JWd1VwakVtSzZXYXFVQ0o2azZsVWtjNHcxSXFTSTlVRUppaG1fNHdBQnF6V2ZsZ0NsQnhhTXpNLUdycFNUQUtjbnNzSmllZXk3ZWVmV0Jvc28wQlluMjJoVXlHNUNsX3o4YXN0NkpEUUtVeHJibk9TVlRxNEpmZ2pWeklROE9Ed3RIT09ibWtKTU1yY2taa1ByMGQwUllqc3BqcG9vMUlfTjJZclkzTHVYbHY4ZExScDhLTkZrRm56VFNBZ012VTE0bEMyTDMza3BrWG5BNEVYVkFZUjItYk03bUxtNnRRTDBYMjhPTzc2dHR6bmFzVHZHZ1BRdnlzelJnNzBybXBLX0NPWEFSeTJPTEk0XzZZVXl0X3JqWHdtRXM1eEZRUjRkbS1vRF9odkZOaXJzVmlrZWxxQXE4WjRwT1lqZ041R1ltb09qcHl4MmxYUEplOHNlRDZUa0xoN21UX24wYS1mNTJaTUVldnlFcmdFY1ZCWGRqWnhfMXdNRWJuYmpob1BMWXFDZE81RGg5bGdPQ2xSTTIzN0hqbXg5VjZvYnJpLWlOWFA3NXdWeDVaNHFjMUxWMmRJQzFGUnNfUUE4UlR1bkJqZHQ4Ql91dHg5ZVVkZHJ2UzlwbGZYOF9KcVc4Mk5xak1HOWF6RmV1QkZvSVRGcXNZMTRKZTBTMlAtVThNZkNRcF9tOHZYVVM0ZGRHNGRFXy1OZW5rR3kyb0wtRm5Pdy1vR3NoWXNIQmJYX1F5S1lzUlh3YXJDY0xqdW5VQnU0QXUzVjdrQ0ZxNW9zdmk3UlM0ai1lbFlISFFmME9YMVpXZ0NwRVN0aEFqREEtQXF4aVZmbWNuWEhNSHdKLUt3eHFhVlM5T2YtUjBRNUpuSjczQVkxaXkybF9YREs4dTJaaGlkWkRGZWVPNHBZaWNkRkdyaVo0WmtpeTR6b2twa1ViNHZ0QWtUWGdqeFZjelVRd2l6a3BUR1k0UlVpSUI3aVNyRjFiSmZlVjlNckh6dW44S2M5R0JXMk15NnYyMHJrU2VvX1RPRGJ4a01HbE9wdHJNdG1kSDdIaUZuTjZvMVJLc01Vbld0Q245Q1dfVEJqN3NJaUNxUjBCeGhFQ0Z1WWFGVGdMbFQ1R2s1b2VYeHc2eWNwT2owSXVhVFF0TjVheFRrMU1PNHBlWnpxVkxtMV9YUUR2UmNRSG1tQ2dOaFZScUlEMGp0djdKbFk5dGhCeWhwaEpmWGp1QWc4dk1qc2YyXy1ibXZOTlcwUThWamdkRzZyUE1qQXE4V0IyZVlKeHBjWDJhd2U2bmZXYXQ1VDMtNVFJdGREaVotaWx5bHU0OXVNWVVLYXVlNVFHRTVhZkphcEh5cXp0RWxZWmJCd0JteWYyUzU4WmNXRW5zV3RjRG5aWlBKcUg3QmRibE45Y0FnLU9ySXZmMm13R3hNNUhQUnFNbHZSOUpidE4taXZuQXpIY0NuN2IxUUpOZm1abEE1R3RtOVh2QjJ4UU9oQ2tQVFg1MWJLRmtPbzFHYmtkQjdkdUt1cDhheXctNUdmVlFVTDU1VTROUmE0Zmp1REdGZkd2MjFUWXpTS0hiS3ZkMWpfdWdKazBjZjYzWWVrMkVKaUNFYjR2N0ZXMk5aaVlDNUhBdTExaE1DQmt1ck5DcjNPbXF5T1VmNzZNTi1QdzZqNkF4QnRETGVwZlJHWDdoRFl2THJBVkxneW00cXBYajhrSE5LTExIWkpDZU1xN0tpdFRDSUhZcUFOQjNib2ZiTW1GU05SZmc0alU1d1dnclYxRHR2LUlUVkE3a1ZLc2M2YnRzNU5QQlpSRU9ZSFZFQmhHMXdfUXNvWGlhU2d5WTF3Y2JpQ3BHVkZsYk9FUnpHOHh4N3M3aUpiSlpneHRLSC1ZUVZlN3I5QkdwazFtcFVtZF9QUVdpSmoydTJMaFY0dkNjWW9NMjR6ckdBQ2lHeENMUjJpaUZJN2NOaURRQllubjgtQ29wRjl5Q2tUQXNVTEZyVDFBa2huNUtkLVJzYmV3Y2hxYkJjTWRoNVRVRl8zRENBMXM5bTdnTmd4QzVKdl9TTE5ySklleUFpQjNLMnItWUlCbzQySElidlpmOFpzSnlUQXNjUHAweVBRdGlabVdlOUpTcjllYVJwV2x3MmxuRHZEbm5SNEl4NXNLbXJ0Tll4b016SmN6VzlrSTkwMXB1MGxxVzNnTG9nZTZDa2xXRlFaVUxSbHdIa3FhSS1LZWlGakI1SGI1bGRKLWJMYXRKYl9IWDEwc0Q5OGY5Z1d0MlJkWkNLNWFhRld6aUgyM2pnSERXbkZ6bG81SFplR2pFUTItUTFQQUNoa3I3OExYa3lVRC03bFBCaklIU2VzLWNvbXpjbjdWa2RFUWlaaEdEaXd0QWF6X3BrYVdxeDI5VUlmWEQ2VWtBS3pneXdhMG5uRnlGck9CWHpCamFzeHpUbDlfNVV2bm5DUkxWS1RYQVY1UzY0UnMzdWQyVXFyOUhWM2NJRnpJajBRTzZXMU9uZjdibHlHUnJueHJ0cTFqdll0UVNoWVBVZmNEdXExMnRGeXdtVkc2ZVRiVnl3WWhMcFNjbXRQLWJ4WC14Y1UwUmF1SEd2SXlOMXY0bXFZXzdEMG5QOXQzTFAtc0x4b1FhNnFTVUNpbnhEYzgwbTlDTzhEby12QVdWcURoNmU0aldtM29Jc2YxaS16eHRYNlp4REZhc0IwYlg1MzdId3BIQVhWUFB1cmp5VUx3OGxhYjBhZGpuWUx3RmZMOU5hLWVNWUo1UnN4NG4zb3lPR0EtVExMajBZaExJTXJOcDZtempVNE1Dc1NycEtleHROeWp1M2JWbVBZUlhWUkFUbGdmVjR0NW5YOGsxVEd6Qk0teTdfcFJYbE1yWW5BV0VQYVlMUVZZR3k0T0dhNGZEUjdxR3REclhlQ3dsOXRSbFdyODhDTEdqeW1uREkwUzhKRjB6UEdtUzZ5RHVIa2x3cG9PZkM1QjA4Wm5jY2tjZ3J1dXhaZ1BRTUpxRWp2c29vS0JFaDE2Wkh1Y2hVY3RHY21way1SWFJlWUJsejJqczh0a3lkdXRoOXhKWDkxYkN2M2JHQmVjbzBrZjd2bHBCclhMN0N2eFpDQXB2bnQxTk8zQVBnMGlxSGgzbjdfZk9BMG5pWkZBcjBrazBWM2QxTHI2aHRaTzJPc1lGdlZnWkI2WWlfUXNkektJSWd4aUo2aUEyQmhxcDVRUjdveEpDNmxLVlkwbE14LUtPNno1dXRybllsRVFLSUxkS21RUDc0ZzlWYmUtbldiRHcxeXBFR2JaZHpDX1hxTlp6b2xHYzhjeUhoOHpFX25MRi16bTNUWFQ4UkRDSHZkYkRQSnNzT3pKRW9EaW5aMnhYSW5sVGF4X19PdmQ0TVNLdmJSLVhkamM4T0otNDJrXzcwaU9NaGZUM055VzM4Zm5OdElZdVpWYVhzbWtPQ1BaSXZ0RzVLN2lEREJvRlZiNTgtdXV1ZDJHbmN6VkNjUVNiN0tTeWUtQ3FjQzVEdUw0ZDRxV1dwc3hZT3NkanQtazlLaFI5ZkQxb3kwV2huZmwybkN1a0dQcG5CSjhMMFRGS3B5aVg1bUxqenZGZHd4dXphUVdlQmMzcm5lcjZTemp6OFJHeTFUeE55YjhTeHppVVhld0hfUG1XWE9iVnhmQ0Z4blE3TGF6dy1mZjhTRUJFM1FxNUZFSGlzSmRRaXFYUGotWmRCX0EtblVOcVJLakdfVVRGc1A0NG5DR2x0Sk02T1oyRjkteDBlV2o3Q0hjelltdDYzQTRkaU1EMFNzTUVRcm5yZW92blRfV1hmUDIzVk9BdEhlbkJVaWJGUVI5VFdfeFZRMmNNSVBBNUNaYzVaOG5JZHY2V3lxTXgzTHM4SVBWMTNmQzZzeWllaUNXY1N5WS1sSzQtQXlwb3VYVEZBR0s2cHEzMjJ1VUVrRHN0RVNxd3FRSGpBOTFuVmp1ZzlDVko1LURjbkxHN1doWVczWFhpeWNFZjBpVE5TWUVxbTRUTXNnMUZfVm1RR2JCUlVZa3V2TzhaT2k1YS02M2FYZWNjTHEzLUU5Nm9Qd0RESlYzd3J6ZW5HTml0alZFYW5WZlhlOGVLTU1VRk1hMDJkbzhXUERpWE9lLTNZR2htdEh2N3dwaXgySXpXMFQwR01ncUk5eUxuRWJnQkNjUmlKWVNZOUdzcWdsWHIzcG5oNy1HTUZTSm1DSnMtajBwOXZVSUN2NWF5bjJLWmE2Ymt1d0VZeWZjUllwWHlKNmFkSGNVZ1I3S0lWRmw1Q1JlZzNUZ1ozdlMzb2pRWF9JSkNlNDVKT09fMjBmdXNYeGp3NGF0ZDllN21Pc3Jqa0NpbVdEU20xYWw5VjBDOTEzeHg4OVMwQ2hBNm5yZDRXb0JKUTAycFZ3YTN6R1F1M0ZfN25tYnYxamM1YXpZSk5tM3JrWDZDMWhtNU5yLTRMUVlhd3FBZHhGQk5fTDV6LXpsRm1xWi1Del9NVkczS0NUVTJkWklIUWFLejlRUEFSZE1CYnQ1YXN1VWNjWGUwalF0NnRKWGVUOU9DSUJwS1hYTFdMdVpLMDJSZGtTOWNYMm9lWDc0TDBYcURPRkdzQngxd2pUaFJNN2Q1SXRKYVRxRVFwaXZYMDhSX193c00tSXVVM2QtNE9Lek1INm9mZXl4TF9JRHUxSkI3RnFISlcxbHVsNWlBRHFHeXBqWnphSk5pQjZsOURRNEJFOGtyQUdVUjN6RktiakRZVmY3a3BmOW4tSGtvcG9HdjY1NXBMSThfc2JWUkcwOFNBWUZEVU1IN2UxYks1UnZZeF90a1RXSDQ5ZnRkMnI3U2ptbGg1WGNHaW9zNmxiWUg0VHN0dlhBVWYyZ0FVWUlhdFNna25EQzlrZTFpanRNUC1ZYkljbG90QTlWQ0NSaHBRNGQxN2NKeFFFSnJwZ3BZOHJEaVVkWjM2TWNRNjcyWVFDTm9FOFg3cDMxNlR5VWx1LWpVclEwb0NzeWlxYklvcFFNVTBvam5xWmxuR0ctVndGRG42b0Ita1ZobEtJR2dwQ0pwVTlkZ09hMWkySDZVazdSNm82eGxJMjFYZkwzemx3bDdfa1RIYURRZEJzMGdXZm41ZkZBaERnWi1USkdGNVg5d2cyN0wySGV2VGo5Q2tEeXctV1BveUFTamhybWg0SjBaUy0zd3RtTGloMkIteXZZakt2QVg4YVJWUnQ1VDhzZTRXb1hqTURKSmJLOEFLS1J0Y3EzYjdrSmFEWWRyNFhNUkpIdEo4RVlKUDkzaDRmdjhtN2pONldfUUgxUkUwZ3JQSVBNbVBfQjJnMm5SY1dCSG9FajFsSDBlb211Y3JGMWJ3dW85Qk5TWC1RcU45TzY1OWgxSVZtNzhpZmtsTUVab2JIUzJwMi1SNVVHeG44bnA3VHBNeUF4TWdpVW5DQnVxSlp0NWc0YTVzMHlFMWRfRzN0aE40OTZXWlE5VVR6bTlsNUtYdXNNVHUzV2dmZnF2UWFKeW9tRFc5ZWIwTE1DOTBSZ050Tl9DRUR1TG9UQjJPQnRhX2xhejQtQnRkQ1FvaVc5bW1XQUJnX1ZoeXJLUGxFMUtDTlR6UFNINEJxM3IyTWRjNlNXcTJQQ1RrYUZ2SFY1dzJTRTA0MnluejBEdUdoTFBqbUJ1UWRlVG5vbEVMMTNkZEh6bV9ZLXB3MEdmTW8yMEVCa1IyR2dveGMwY1ZTTDB3Uk9QQmxJQTFnaWtJOFFNZW1Mb3VWa1JwM1kwLTdUbkZWc2gtWXk4UXMwSDdXR1ExdW9WN0pxNXpyaFZYSGZYSFg0dklhdGMzUTFIWjl2NHF2c3hueUtHNGk0Vk8yT2prbzJwWEdQNy03ekRVWWoyMGQ1MTZObkQ5UnJtTnlvS3lfY3VVR3FOd3BzVWlVT3RuLVVfY2xkRGhQU2ZjSEFFaHdzZEZEcERyTzRYZENNZk5udXF0WDdnZUhfUjhZTnlCUUVXRTd2QmJ2VnFfdWpyeUp1VThvNHA0ZlhLMWttVjRmMGd3QlVnXzB1TmtKOVQzNzBscXRtSms1UGVSV3Rid3lkYzB1VVRaLTdoVVVoeWRZazlsZU9OaDFiNFZkSzFFTjhlYzdZVnNUS2NGcHNpUVVVRjBBM1pHU3pSSU1PbWdGVzRlU0lvQjBNN1BpaF8tenB6SFFPOWNmLUNEMzVFZ3FoMjhuNFNuNE9aM1FsREtiNnlBRlVmalN0cjAxZXlkOEdDLXpQcXVMYWJsQ0dBQkN2d2x4SUZDdzZUOFNrX01IS3Z0SzR1aU95X2JkeXJMb1lhN3FmemVsWnB6NWhQblF6eUVJdmpJTzhyeXVPVmNISnJuLTM4MWJhNUpaSXVBM2l3dzZ0UkhkaE9NVi1tVXVKSkxKazM3anUwQ0VfUXgxREhaV0VVU0x4X3dyQW1nbmU3b1VKSVdGbVFoSXRjS0VBZm81TWNQWVU0Ykl4ekdJUDBLVDJ4OUtEUkw1cUdPVGZTN0xvdTBUTTN0RE5lMXZfblU0NjFXMHUzalVnNEwtbGF5UXU1cVEteko0N2VOckYzVDRqdFhsSUJBYUpTN2s3akJrUFZzM2JEN1VNaEFqU2p3b3AzSHNDODJXUUhsa1V4QzhVUGM1SVllUERzb1F1WGNuU1FzQVpIUm9iYjJEQVpCdGRvblpBQkx3MW1pNHhUWGczbVVKNURPNW5xc0V4YkpuWjhkTDlLd0dKdlRYSi04dTlIRk11MVRZY0REVEtjQ2doVXdmNzRvbzh2Z3JHNjJqNzZtRndjei1SOEZINVlGd2t3bXRTTC1VQ2RjdnRHYzllOHpMSDJheVJTeEFjTFNnOUxQUm95OUVNRi1ZOHV0YTFRbDN1WHZ4SUxsYXJsQTVFdThyU0ZxTENUa3R5OXk0WFhzMTRsczkzeHExYWFCRXM5ODdRbjl1SVdvakI0Z2tZX0lZaU5vTm4tMDFZWDNPc2QzWG9QRmE5aVpIM0RVM2FIa3hPdkRNQUJQbVBDWDFIa0JnYjRFeUltZVhfZ2JhZjg5d0lORHFjbmRzc1FjWER1bkcxNFVvUDFSX1lvd2tNZE1yNmJoc0JZTlo5ZXcyMTgwSmhsR3lYWUctNkZfQkhhM0dFV1hRdVRsTW1wRmppVnVzeW10cElENHV3SnFLNjJoRlpvc2xEZXJjNzZoOGlRak5CVS1BdHNPRnZrRlNMSERodHNMaVVKdThtdmU4OHdza1pRbnVoNnJEb2padVdwRlRockhKR1YtNkRMWllkNDVqNDduUFE1MUNDb2tRM1cyMlBsaFBLeGhVeGlDdHpTRmN5dG9VWS1VLUVZYnlCV2cwOTh6b3ZwY0pDeE14SFZkMURTWlY1T2lfMDZ0SFdDb0JLVnRncUN2cXhTV2E4VGRERTBXV0dKQ050ZThpY2hRVHVsOFNGaWRtMFdfR3lGNXdubUY2N1BRdzR5Z0JmNVFLN2kwT3JERUJsZjhyTmNIelZMelU3RzNTX09MWWM4YkJpbEwyOHF6eHF1b3p0QjNZcmp2LUY3Znl2enRULVVmZHFRNlFkeFlDVGpRWHQ2Z2xBOW90QUxTSEhxSXhqME94UTh5cjZ2Z1p3ckVSRUFZTjlpVEtXSm5USFZFbEJzQ1JHZDNSdWZ2U2QtT1BxV3NLVTF0bmZyaGMwV210NDE3bjZ5LXJScjVHTnE0dFNrS2VHVVUwTXlaZlp0WFg2b2ZfVTNNSVNRZGdzYU1QMjRPejhnX2t3VkJMUUhCdVVIWmRNZ1JSZWtab3dZcTZKY1JMV3JCRVA4a1BreDB6TlJHTjNIVWJFdDJqSnNCdFVJaDlpaHRVUGNlMG1CS2Fwb3RvekNwczlUQTE2VjdNRzBtaW96d0dlbGFka3RxbFJSblFEOG1QVER2Z1ltQW5uZTFINHh0WEo4dlFUWXgyZWNNWkw3V3lPeWlwd1lRN0hVTGJwVHJ3dHViYXpoc01TdXB2U0xucGpKanUtNkh3c2xaQnVyeUEzbEwzemtYQllDVFJfOFdyRG9QajU3YUlPUUR6SlY5ejRjdFI1TDB5VTVaQ0JGZjMwRkdWdVJZYzNIQkRsSzliOGxWeC1kMkpwemRPcHZSUE1wcTFBeHNVSXBjZFpNdkRacDZ3OWZhWXgwaXNSWnFJd1lfM056YXN0WGNmVE84cHNkQXZ3UmFUdW9sRk5oZm9Sek50WkZscnhzajl3YWJuQlFfcndRWFNMcEE5NjdodmlvNXY1X3diYk90MzlwWG0xWVc4b1JVdTZnR2NCYUxSU3dsNmpEQkZuZi1jUGtCT3BVaVRtTlp3bXU0dXIyajVZSWpjRXh6ZGtVRVZWUkxyTHB1N2xROExKWF9OTTY2M1JlMURwSlZmSzNVa3V1S3hWX1BPVk9EZWpDMXBuN3E1RVJhdjIxeWZDemUxaUtqUmdDTXNvNG9zMXlWcjBuRWpyUzFnOXM0OG5lVFV1Q0c1NkF5WWozSi1ILXFaNUo2YzY5N3NnSUw2VUxvR3FNM0R5ZnVLNjhMMXA3X2szdURjS2NoYzlZeTF1amFmVVEyeVNQWnVXbTRFWUxWbzVDRVFZeDcxQmcwU19JZWYwMUt0d0gxYUFJd1p1TWM1RTdWUTg3RVJFRHQwT3AteHFOOE42ei1HSGpDem51OGhyY3JsUk5IVHY0UFJRNEU4a210SGIwUzFzWklCcGdEdEJ3RXBQbEdaOU55elpNaldIeXhHdkFtc0tKZ2ozYkY0aEJDYm9DY1YxZFhQOTZhZ1RqY014Y2lOM0o0TWRRSktFd3RXbFFTRHNuazZRN19CajFKNmhrZUNpLUZCSUR2LXBXTXQybnlvXzJLQmlNWXd4OTZpU1VkYU9jY293RE5WamxCWHFfY3puSUNDOWlRSEttZjRIclcwcm1iNVdnbVVoWlV2MVZ1eTBZUTdnQ29ZbmhlOGJHU3hqdVdadWNNUkZ6dmpRZG5oZWZhUkhvdVVrT3M1Z0FWR3VDRFpyd0lEekYycUFRRURSamh1aWVXb2tGMlRvWXl6R2pPVFp5OHpIOVV0MU93ZDVxbVFjSWdTRWgybFlUbTJhc0UwZlZZR3cxaHVvY01GMGJKcVV3cFlfWkdfNHZuN1E1UDE4MUx1VUkwT1E1LWJvWWdOVkFvT3o4T2NuQUdtZ21sblZMUXZGZWYxWEJKaE44Yy01VjQ3S3JWd1J0SE5mV0JuZEFMSjNnYkhKdE51UENqUVFuM2kxZUswSEhYT1Q5VGg0MXlsWEVxZzhseW5CN3hNWFlXc0RZRTNCZWh6RGtVWDZDUEliOFRKZ0RGTkRXZWNBdkVyNmZtYTBhd3hKV0NOd011R0JsaC1XeVBfcFg3aDdEcTR3QzZIZHBBMkpTX0xFUG55Zk5sSjB0V1hvcnN5a1JYcUlSOFdnUkxKRHlQRm0wVnBWQ1BQM1JWV19aeExZMEdPUG9wYXZOeTl4WHBNVjBUUVh6OVJFWEJRTkRIRFZEMldvZERZcEVNU0ZBOEtkdkVaZGRjUnJmdl85VDVtX1F6UkNCb29PSFlDajZLN3pKUzJFYXNiU21fT3NhYnFENkxWWUtFWUc3OHBtVWstbEdHRzhUSElqMHVqaFpkQWV5aWsyajVsakYxeVIyTy16ai1wOHBTaVhRNDJ2T1owZmJPREh2YVFHeXNIMG9uRTEwcVV0cFVMbjF6RFVuaFN5RTVoM1JTZG9mX18zb1hzc2RNbG5oV2RvaGR1dExNYmUxbzRVdmxDSExoYXRuTVJaQndnQV9nU2wxdnFSUWF1MXMwT2g4NkNIYXVnOGlmbFRUWE0yNGFwV0xpRjZhdkFSeTFYOVd6TjdCc1oxZFNoQ21GbmdBcTBwN29MSy03YTcydE9pNnVXWURmRjZPY1h4QWFzUjA3LVhzZUduZzdBQzhfS29KVG1OSG5tdm5tQWJqMFphbEsySWlYWkJrTk8zd19jODBDUnR4a2VtZzlNbjdZYlRodUQ2clg3R1NGdFJfakJzb0c5UGdrTWZIOUZBcmw5ejBJTjY2YW5kczVSbkxXVmlEaDdyeTByMF91QnVGU3ZIOXI4aG5jb1o1Y1pzQW0wcTRwa1JDa284R1Z3UlB1UFM5ZW1rUnZTSC01MW84VENwRVVWYUd6dlp3SDNGckFqeUswZW5xaXVpTWk5ZERxOWNJUGstYnhNV2pFY2VTQnV5cHFHNWZBYnN2M1N4Y0RSUUVLbk5FQ2dtb0lDeS1PbUVQOWNWTUFnb29WMVVERmQ3SmplNnVmR1ZsUjFmMnZwLTNybGk5eno0R011ODl0R1hiNlptN05ncVNQdWlzdExSaDRJbW1FTmg4NXdYMUpvRE5mZVA0NmdBNmh2N0VZWmFyMkZtekloTHl5MzJ1MHVZMGZ1YWp2R1cyUE80S05GaW9iUHIwM0lhY1Z4NzBHdVJsUTNDekhGUTdobW1pSG5mX0RCRVRmLVVINkNJd2U4TWpQYlM4Zkh1NzlackNyUGRXeTVHZE8yWkczbmZuZ2hrZkFEbHBNN0FwNUYtbWNVREZfY3E3LXNqSU5VbHh2NGVsT2c2R2k0SkpqeXB2LVJOQ0Z5U2ItMGh1OW9GMks4XzR0UkFDRWluTUVyQlRSN3RuU2QtR3dkSEZJdlIzMDhsUFU4T0dBT1NIUS1OTDRvWC1VUl9BVmVwQlhDVVhDQ0NSamtaTVkyY1M5LTd2bEJPM3JhOWRFNWlWVlRYU0EzYnprTFREZl9sYk5uZzkwTENGcnhuQWRoYTItSEFfQkpRa0hyTzdPMi1YRDNOR2NGWWxWeE5Hc2hrQlJ3TU9JWWp2MGhjeXh4eEdBcXlsQjdRcHZjNjFUSEtjV3FrZ1BJdE55NEh4dmx6RmNnOXF4Vi1yVGhmMklkN0xzblBfZWtDaDRVWnZ2WU4zTG9uRk9CSS1UMUN5VXg2R2FqbHlHVC1UblllLXJBX0lzVjZ2Z2ltUzF5dmlfaWlOWmRmMDQ4dmV2VVl5UFFZcUpTbGVKQ3hFS3ZOWVNVZno3QzNHblhkSHVWWV9iTnZqTlNyYjhIeXVOMDRCcGh6ck55S2ZDLW0wNHRjaEVXbzl5WmhnOV9rWmlISmJySWNMWktoNGRJeWhiYXM5cGstRUk1Z3MtbFZBVG1GeEJJOFNFYmhPZ3JmUTYtRHliNWlOa3dPNzNVS1kwcEFSaV8xdnVNMmlEZUg2RXhOemdFQVRDMzE0Y3V3NW5SeXJkdVRibnJ6U3RqUUdPUXdlQ21NSjJhVTl5ZUYycFljYTBfNEFIcnJwd2djZi1LOHVyLTJVdld4Q3V2M0Y1NFpLd0duMXNob1JGZkROTkxDcC1sU3JVa21ITXF2eERXRU52TnJrQ0QzZEhlWmtTOFlOdlRvQkNac0JWQTNOdUFlaURrMGc5bzNsbmtVeE1kYmkxV2VoRFNyVmhTRUlSaF9LbnlWUm5CZXhCOUFwSjdULXVFQmlfVllqZ2xvSi1ORzlLMExwTkxyV3M5Z0dkMTlZMFBYOHA4VlR5cC1JRjJJQllXdHlXMnRZNFZZQlJHNFpqTm5BOGpKdVdrODA2b1hRZ2VEdTZOM3Q0a21EQWVpSVJpNGJCREo1VzltUkstSElQLXpVQVVIMEJVODFoWFAtSFVPWm10Y1NzTGJTZUxGNkl6dkZJOXE2alNvdGYwM3BpbC1lOEx0STRCbUw1bWRDaGtiT0JoUkdSOXhRSWI3LWVncWZuR1Uyb0xJeFRpcU9rYzdodGg4UXR1WlpyN3VJUGFyWGtNdjUxUkJlbHNZNWljMFlaM0N5dGlEU190cFRBSURxTEtfeU5lbFZXWWNKQU1FUUVfMDJJSUU2bkhaSmFTZURUa3VwVl9SME5ZVTZzWjd6ZDB6dnZsdURHenNyWmY0SDNFN0JvaTZLcXVKdk4yeEZGa0hTOGVOcDhRaFlEQXlJNnRINkExb0FFMm4xNjlqTlZXQWdkRjFGdTR2MVpqRmNYRTNxcXA3aGhiYnVGR2lnX0xHZjBsVGNrUXo5Q1h5R0NCbWlRek9FN0tkRFlhcC1XcTBTazBuUXA2ak10Rk9vXzJMWjJGQ0dNVi1UMHp1RkYxeWVYcE1XS0NkMGl5MFhoNkZqUGRMRzVPb3hrcHlHYUN6blJhVkZDcjhjT1FCSjduUUFrcXM0YzRRaTVJaUFvSjVlbFZkWGxUTGF6ZUVDUXBNTlhEOWo0ai14clM1dlNPcFllSHFwR3ZFZWQ4b2t3WlZKZUtCZS1ZWkp4VW9oM3UtT0RiZG12MEw5TDFpdXZwb1RpMHJyUG9rTlZ1Nll0NWcwQnpzTjk5WjNCUFVfV0p1WUJiVVB2dWRtSTlIRGwyUXczdVhMRnZqSmt0YVQtd1hYb3RLNUhzY1p5VmhKU3pBT2FDODJNVTNrQmFQWk91ck1ma1djVFNvSGxGSGdVTDRyVTlsS0U5Z1BiT2w2NFdQeFZjVjNQLW5QWDRUSEkyNUItVUtDR2NWRmlPM3Z3TDlUbVBCOUhxUExMc1lfQUZJTnN4a0hSNHFlcTFKWDFTeDl6MTBEMXJuQnBLX0lRbnBpV3RSRHpINDZ1V2RHNE95XzRnVWpUV01VTU1YVnNVbTJmQlNFOG1VM3FsY0ZlUW5nNUkySWM5bWNHbW5Pel93UUNsVGhnSU1LYXFVeTE2YzEzOF9qMDdkQUVKQ19QS0syc1ZfSmJCVHR1Ym9jMnJMX19pbUROdy14OTBUVWwtcVgtOUpIMmlmcXlUcVk1VnBRTXI2NWVPaHJkeExlTHRnWUpzb0dKczN1Qk1HVzN4bF9RdW9tOHBSMlJGN2lqdDc0SDdhcUpqQl9DNUFXLXNFSDdSMEJSalZVaEFBenBKXzNIcXhIQ2tGNHl0N252Q3dqS2FGSWxxcUJhd19sUy1xOUI4TXhyR2dOMWYwZEtLcjVscmJTY1NBU01BM2FoWDQ0ZFJzWnI2TVhsWTNVc3dDUFBiZUp2LVpCRWh6UUpQZE5JRWxaRkkxMFJWSnJsa096NVlodkZNVzJQMFRkdUR3OW1xWWY5WGJQZl9OX2lScVdlMkR1eXdjdUtBb1d3NXRkYnI5MGg4R0tWbUpzZ2o0aDJWWnlRV3VVV09rWE1fSEN6UmdYaWxHTl9QellNcHJXUjBBczQxT1dETmFJMFBHME8xSFcxeU1SajZUeUczX1NBTnRYU0FNTDVJZ3NkczRFWjhQQllsdTA4dVY4OV9yQXpsUjBJeTJsaGFybm9wMEdjQ3R2bERJZVBmU1NfR3pndm5SUlVUbUMzanBNek14VzVRZHRXQUhlNDFPTDF1WDZGQmUwMHEwdGpiMVNpRXV0MHY5T3dYWUdSRjIzeHBqNXB4ZUY2cnppbDZvMW9ORm1Ma1g5RXk5VXdKakZfMnk5SGRHOEEwYllyekFOM0d3a21ZcnlDcUwybjF6T29rcFlYOVNwRm8xTVl1R1RSSVhseUktZVAySFNWZFlLQXNPNHdRSnJBTER1a0lYeHJWS2xlLWlmSjhfUEQ4N2wzSWVGZTZJRzctTkZOblJWSkJPYnpkZy1leU0ySmNib1FhRmp3VF9JazI3STVZbmo3aDZ2RXZfa0N0LVZwQmc2Zy1FMXlDcGNLVkNXTE9GZGExX3NXQmRYeUp2VldhdXE5Y1NUeVREajZ0bXZGc0lUWWtsUldOdkpGbGVoc0htUFJwbGQyUFd6b2RaWmFxdFJCTVMtMWxvQjJFLWNUOVlKSFZHMXpVM1lWenMxa1VlQ1NTYThVaUl2cWVkMElEOUZVcUx4YjY2ZnNsYXN4ZWJzdTkzczktZUZfX1BaUTJVWVdPbjc5SFdnSXZHcGNhUzcwczAzTE54aFJsLTJrMi0yN2trWkZfUDNJeTh5MGY3ZjdEWE5pSlRMcVIzM0Q0cllrWXU0Z2ZHX051Vy1xWkltZkRJNHVBZlJrdEJ1RDlpR0VtY1VfdVRoUFJZTlYtTm84a28wSERxeHBpTHR1Mzg2VV9rdTdiZk4tYlhaQ2hyN0VTX1FkOF9nQmdFMG5kbUQyQ09xSzlOVXJiZ2dHRWdUUWJFQzNIWHU4cXpnZDU3V1h6RExob3BMcEdBd1dzLUtSU0hZdmdWMnozMkFiVVEzNFFCT1JqdW4tT29xcExUYS1mSWVkVDBXWmRMTGxmcGR1V0RNZ3UzRF9iVEw4dWk3NVNobnlGZm95UnFnOFc1b0NRSzNvOExaZ1dkczhLS0RIa1RncEtLemNNN3QwVXg4SFFFRzBFUnNLWXMyWGRHcFN2NW0wWWNQUGVvWUJFRWpsaVI3a3lITnNMSGRRT1N1M1hieWpxNktkREd3d2VFM29lU1QyS1BVbkg3SDlkZU5vTWlsanBZTGxhUldpb3p5dGthYnpGbUJrWnprZXdxNE5fb0I3bmFaR09vWEd6eTdhSklqbEpWOFA4dWdyb3lwLUpUTmNvcEUxZjFwLTJqNXdtLTBzdUJpREtRN0pVal9WVjZWY2ppcUZuZ3g2VGdEVzJMeS1lMl9tbXFWTTFtTU8wcG4yNEM2V29laTBlNkFtVHVua0RPX2d4M3V6SnRDbjhpOEtTTXZNTzAwbHBmNzQ5MnQtalMtYUNCMFE1Q2VVLTk5ZFpNb2k0QXc0ZmFsQ1psYnR6bG9reFVycnYyZXg1VldCdHBSUF94ZUtncENHYk1Nc1VGTktuaUFVeUUzeUJVWWxEeGUxZ1NrQWtKYnNIcXRoVVE4eTViS1lNcnVGZXVqNWJqb0NSQ0xnWEdhWF93bmdBbUFzUDVsX2dwdElKNGpPNDhIenRQZU0yWkltTUFzU1BIWmlhLXdOY3F5d3VYbEFWaXp3d0FxV1NWZDNrMDNjU3FQRjg1T0kzVExFM3FZTkZ2UVVlZXR6MGlSU0dkVUVmTmJTWV9oRTJoaVBLYS1ZQktRN0s4NVRpZ3BVMHMwNHpWSlYtRExmVTlydy11NEVUVUJtRVNvUE9MV3lKVWpOSnBNZ3EtSW94LVBuTEZWR0lWT3JYQ1BpUDZQSnFiRXdRMVBVVzJxMVpWQVY3YWJJcWV2d1BCRXNvR2trLWlBS2c3enhRNGNjcTFMRW92Y0pmNVlRaGtKZHA5dDhzdXpHNmU2UkRxV0ViS2tDYmJVbm96M1AyUm1adlhfWW9iZS0tbzlNRmg3MTl1NWhLTkJSbENhLVQwQTAzYVVaVGdIV0Rrb3hzMlQ4SnBjeThNaUtHTXFfYTIxQjRGTG5Uam1GN2VWRVhweWdoT3FwTUlFZ3ZIaHFmaWQ0Z1p2cVlLenhWQlg5V0JLSXFBVmk5dXBpMWxhaUp5V3F2cVUxQk9zVWptYjR6MFJQblRTQlE1WXB6M0tyaF93MElIVnVZcDdEZkRVSjRHYmFzZXMzM0dJMEJDMVlDT2lJLXBma2V2QzQ5Uzh4aS00UzF1WEo2NWJqUWljaDhvcDd2TmdJWmh5U25PaTUwMUJ5Y0M4OHhXMmlYWmtyRmxTM1RwdXIwMzBBR3JTRU9aMzZFMlJtbmRwWVV6QVlBYWM0SkxYN1VtMnYwT2hlMmFXbmY3bVV1a0hWX0lHcDN1QUpaWTNYN25XOFF1WTF0WUZOUWRzMGJZOC1MQjZVWWdBanE5N09XUEhGdDZWei1Vc19wZGFzdm8zUUlDVnFuQW56THJrbGJDMlFDSlN3MXdReGRmMS0xajh3YktyRkFIdE5jY251S3ZvdFktMG1lU2JzYXJDU1NvN3hGc1NsV1lvakNsTVlTWkRUSk9CWXg0VWE2RjlFa1BqbGRqVjg5S3dTT3hkMGoyN2FZMlFYcWpucDkxZWY0NUNTTFMyR1BlQW5UWWVSaXJMcXo0LXNGYUJHdUw5ZlpSd29aZzFTRjJCeVpha1VaNnlXdmNEMHlselVpZ0c5VmthSF9Ob1E1UWxPMGxjdGViOVBIdlNLOXJHaEZldzcwRzdhYy1iZTJEY1FoNVljUGRDdDEtZG1sTkw5ZUlaYWp6bjZLMm9Qc3ZwcHhUOFpGUVB1ZWhiNThVT05JdmJ0QVpNelZ4Wm5iX1JBaWwzaDl0anl3T0RYQ05UMHRQMEtVdXBUNHV3T29BZXMwTVJLWV82OUR5U3pCMjY0d2xPWGI0bVVCNHJFOGFhN2lpa0JWTGNReFl1VmNWYnpYTHdNVDlBUEFKaVNqU0RBdjNPN0lFUEMtTFRKWVlTN0E1aDBEWVRydTNwcktoQm42cTVaWml3d3YyRXk2amFZUjBsLXNUb2xFX1dKVXNhbjhxdXhPX1BYWERleVlheHN1UXZYbGJrNXF6X3Nua1hiclNNVmRUZll5NGZpbUY0cF95ZEpHTlpWX1BpSXZlMERYMXl5Z2NVR215M0plU2NlSDhJcXJWRVdVdFM4Q2phanlCa05qaHhmWEdtcUJYLVFXWnNycF96a1hrTF80N3FTTWNWcTNadEJYRnZ6ZE1ON21YLTdwbnlnTTByeDA5WUhwdkdpY3Q0dlQxelNoMmg5UkJFYWhYSGZ6NDYzUTF0d0RxWFlNOEROOVpmcldGS0xJdC1jWVhrT1pHT01mZEduUHd0b2hFdElBUURhZ0hKMW5nZkhpazc0S0hTYkVsRVljZTFkcmhYY2xJTWF6d3F2RWhLV3hLMmhfY0w3NGJNZVN4ejNTLUhwNEoxdjg0M2N4YlpPOXZpbE9OQXFKSWpUVUhfS3BwYzBCaFRzT0MtZll2OHM2Nm0tcm1yZ1R1azBRaHJOTVA3ZE9KMS1zSkJHTGo3cS16cFVMT0xKZnVaVGJ2N09NREI5Qjk5UHBlcVdGRE9VT293VlhZWnY1Z19NT19HQW1FZEpuMHlha2Vpc1pVZDlmY2hhTmd5Yk1jS1k3RHI2dng4MWQzYzROMDV4YkRVZnB4aE9WaVEtMDVValFJbVo1Vk1kV184WWlfYVgtUDZkd09qQlJlLWppMnMzNHM5UjRqTGtxOUg0WndXX2Z3ZjVXWEhITGE5dldISEFnM3BqaGllZjZYejlmeHl6cnYwWEMtX3pCd0NSamFmTlc5X09ib1FWRC1ZSUdKZTd2UzlOQ2lGM2xZbUhwYVZiekRoV3pHY0JHdVI3TmlfelZhWndrX1VFVTlOWC1OMEdiZnV1RmxsaHU1eF82RjhoZTBsRVJMUVlXX1pQaC1OVEhEc01IVTk4VkFsQ08xcjhra0pqMGZicVZHMEdQWnE1clFrQzlHam96N3JPbnZTQ19DeTdEWE9kNW16V0daRUtTaWcxREpyVEVjbXpDVnBteGNuZDNkUmhGVDczNmhTRXRXZkJ2WlVLN1VBN0gtTE5IalpIMlJZZXhFS21jYlFPY3FMQ25CTnZEZ29RWEVNT1JSNkp1WmdnME1tSUt0amFSdmV6a0owWUFXMlVuemJrM0t4T1ZwTTl5OFFnbVNiN21QTU5WcXdDdGxNYkN6a0gwaEZUVGJXT0trZjBJdDlPUWFVQkVJZnh3N2RDODFEM0RUdnF5cGJYaXZId1JXd25fdzlDamZrZjVsUnZwS0t5dFdvTUZZMjNZMWpTNEpyZjJUWlNSNmdEQVZpTDF6eUpGZG9SLXctWUxKWkdUYzFNTXV4Tmk5NWJRblpCZ2FMdlFmSE10amMySlBKZ2k5REQ3UWhQUTBteklsZllsN3dRYmdIRENzeXRlVEt5My1PblAzQ1NTci1YYjJrOFZBN2RLNHg5U1RfZy12VVdVQWs0UXJHUXlQeFBqR0V0ZG80V1MwUkhXRnJPMmhVS0IteWhHclo0UndZMEV5a3M2R3V3Y0FqejhqYzBWaG93SDlYRm1lVFhwRm12bEFHUFBzODVlU0d5d0p2SEd3Vm03RDlFWW91enNuU3l6RVl1YlNSc3pBdGQ0NVgxUnlUQXBJV3NaTDlZTXJzVURqVnhzekRlM3FIYWxnWHNNTFlCMXJtTDh5Y1ZuWlpJWEFVQ3BwVnY3NlcwSHRRUEhWVEk2TjhRU0FGa2oxelNTWmtXcGNzaDJ0dm1EVUo0MWl0enIxSll4bUF0dldLVXd2OTZRcjdaY3ljZEhsTE9ya3N6d04wVHk4dHYxa3RIUFVua0hYSFlvU2lkMHRzZDNzYTFEOG5LdDhqSnRKaW9fenFiWl9nc2N6d0xFOUozSDBQTjJlYkltNVJNbUEzNEI0dmN6UVBIOU5LSUd0Zkh6cmhqbjZCUmc2c3FhaVN3Z0YzZ2RJVUoyQ2NqLWxtbXVULWFlaVFaQUNrcXF1eWQzM2lWOG94eTNOZjBiU3NUZUZlcVQwdEpYQnIySUxOVlAybTdSTTc5MzdXNHhneExRdWNqZ0RNV2tva3lVMmhSVERFVVRKdkd2VzNwSlkwT2tEeEpoRWRlOUViQ2pjcGh5NHhiUHFXcHlDN0N0dkw0ckI4MkU5aDZuSHhVY1ZqYUNpeXZvRkZiZFduc3o2M1NQZE9oRDFXRENjNm1pYW9JdTJOY2kxQkQ5a2VXRWpwbjllSXpJWC1MR0VMb1o2MlBpYkJYRWwzZ3MwWERzNl8zVHJpZTQyR3N3WFFQS3hIWmRPV1pLRF9IRWhGRmlXS3V5WnlMTnpWVFpuSUh0cllEQUZ1LXNBZE1VSUJKR3hVMzhTcWNDaUlNQ1dlM0N1SlI0dTFmaEJheUEzM3NmT1U5SWlEbFJuMVJvUzZTQjZSNjFZcS1rd1NWaEYwcEkyM1Q5OUl4cmN1UUh0WFJ5QWljZDg4Q2t1ci02Vjh0RlpydUFDT1lBNmRDRFNOczloNkFiU0ItWENXd3VWakYycHN2RnREU05HN2I5NnYta0g5MWtjWVgzR3htSkJrb2x3SWtoMnlQaV9DWmhITnVMQzJjbnhoaTNXdU1jLWpDOEk1enRDSlNCM25zYmV4TUVuaWhrLW56TmQzZzdBLWNkeFZtU1FNN1JxSkY2eFpyTVVtbDh5blIwaE1hTVU2MWdKUlhMVWRzTHVISzJGZGQ2UnhzWkN1VE5DUFVWNlF5UlRzVkpITjg0WkkxeFVweGFVamFPM1hXUERsS3ZtLWN0UW9hUFloSkJ4X1Z5SlIyRjlNUUpMLVhBWmt4ejJ3ZHctelJIZDVYQUkzeUlhM1l4YTF5czNrc3pwS2JhTno5SWtKWERkR3o3SVVYU25IVUhRZW1uYlJKVEE4SGh5UW80MzFGbkkyUjc0bXR3UDhCSEhoMW5LcWZZOGFxVTMyeDRzRjM4VTdHUWZra1VHRkdFdll3ZnFCOGtkWUs1YTVxbjhTZUZnX3V6LW5KOHVnOFRIQWVLVWRmeFJfNlJHTlFNd05uZkNPbm9vM0RkOHBMazFqM3Nwczc5azJQZXZmS1M5UFAxeVo1Zl81OVZYNWEtR2dRel8zQ0pjMFJaVlp2eHJxRjFNRm5na3RneGhWYXVFUE02bkdBdk9nMzRMLXFUTVB4ZjFVUFdkWDY3NUd2WHZFX05DaWw5aG9JWU9ER1hqcklNNG1SR2pxWDU3VTg2SXVYNnVSV05nbXVVWDdsTy1TTHNhMkhyaExOSkV3RENRTm5NTnhwT25VYjlQQ1ZzWV92SFNvLVZhdGlaNWxUc3RHaDJsMC05aDBxeEc4aVRQYUFhSW9PWFZsRTF0aDVQNWlLWkthb0JRWmhWRHBjX1YwOWVKQkxvWmJFWmpqdDVhSHd3T3RsdHgyS25sNXhkb0dZLU5RNGhQUTV3ME1MYkhzSWt6NzZqUjFWVVI4MFpUUjFnUTFqVjI2Wm5KTGRPcmxxSlpfTjZwSzhUQy1iOXJHRHhMT3BaTzNmdllycGx3UXNuQk9TRW13WTlWeV9jMThDUXh4WVRpWnZaNnVUa1BGTFNrRDBsalU3bHJTelhhZ0swNGJ1SzlZbnhKNkFfdEE1UTg1eEtMSjFuWTItVHBZTXMtMjJWdFZhM1FVal8zNFpZSHduZnZMMXF3UHhFY25rQUk3UHNTbjVHNUVVUG1mOERHMDBsMjNSVkRBbzh1M3pGMEdHenlEWFRPTEZHUkNhY1JjdmpDczJOZFVEQlI1dEEtcHVoZU9yWTlDMHJ5MVczUlN4enpmQ1BiMjJJalNZUVBFR19GVUY3Sko3THc0ME9feWg0SmR3UVhCUHR0RUNsN2docktMMms3UFBYbEpPeGJLWWNCWlZXWkdRdEtydEg4X1B2dllCY29GcUVZRGU4SEJkc2drUGFUREhfRVRkb25QMHJ0aFR6djFVbHc1MnpxcnVfeHVBUUR2THRwU0FkZmZqZ0JfTEFsQVgwaHVQT24zaWxHLXQ5bUZTSG04TzZic2oxanZGdWYwalQtcXJITFNnX0c3Nmh2RmF1TXAzbzl6YTBNcVhwOEd3TzNvMmprZjVpSHQxZFZkYlh4cTB0ZmMtTVFqcnd4TXFmSkJEXzBLYUlvd0VURGRSMjE4VkdIeWVlR0wyRGhMSjM5VzNFc1JZOHlMR0RoTE4zVHhHdHpGZlZzam51eUxBWHRvYTQwNTQtOWh3SXVhZW1kMDEzNmJ6MmtKSzhiWFlMbExNT3NBdVNrXy1UUnJXY0JRVHVrdnZaOXd1MDR3X0NpU3NUOEZmdHBrNlpxcDVvWHYwZHhxT3dLMEdYZ0NKX25udEdEejcyX0ZwSWRFUHRSd1BLc2k2TGRVY0NXMzRVRWpnU3F3MV8yQVduak9uNTNtLTdnMEptLTU5NzQweVdHNWdlZ0hOWUlGcWE5RTRyaVdQV2Y1RWtmbUJaMUpNSXpGR3VzZ1dfSl96emsyakNkVzhtY1RCZTVaVXFtSlV1cjdiVXBJVEU3LXo3WmxHN0tPV1FHV2VQUUdPU25tT1dZY0VOOUF6alN4eDRSVm9hakZVdzNVVFg3bWo1OHVBX2JKRG5ZaW1UaTA0NDFNaUluX2xaRlNsaDJfdzBDS2U5Tmp6WVJqLUkwZVlyQ3ZEQTZpeU56U3NNNnVhak9ZU0xQZThXSV9ieXEwRS1BRW5ON1hnZWQ5NHQ3ZHJIdEVzVjdlR1NCeC1TS2wtdzdna3QzbGthaUNFZkxKR0ROZy1Ga3V0NFEzUnByTmpLNTRYZnFPWmIxeTFDUmJ1MUNEVFd2dlI5R0w4ZXNrWDZZM1Fva3psSlB0SkdWRXpCa0dnRmVOa3Rpa1cyQVk2YmVweURtSlVWTDVRVjBoU2Q2bFoxODlNRUFybS1WY05WalNreXEyWlNYQk92MkdBb0x3WTYwUTdYYkR3MkVXLUcwTmt0LURDZTUtOTZ1Tmd1WURCamhlNWozWFFZak1LRGVQb0p5LW04QnJEQ0JESlVlUGVIZWw2YjdtVGI5ZkVpRm5UU2J3TlI1YTk4Y01BVzdIcXFvSkVjdzc2UGlXa1pmbV8zUnNlb0dTZzZ4Um51aHdtRGo2SW8weTNraFVKMjZ2anB3WHRyN0NfTlFoRTFlMFEyZXR6bHQyaHpIcE5SOGVqaTcxX21nWG5zMXVJdmQxWXZvbTlfVkRhNl91dkRrSVJTUGkxRnJBSERFSHVPTHVTOTNwUk1KalB6VnZyZ1hyWXhSaHQ4TEVVUmt0bWNnX094Vzk5UWtrbXFwUDlacktZSjhmX21DWjk0RjhVSVJsR2l1dzN3VGlDU05kUWdpNk5fZFptZUJlSzdFTmxramJnZ0g5Sm54b21iM2hMRDZFamhySEU5a1ptQ21KLUFGVkRMdFlqcDVoZ1ZrQ051WUk2VUctQWp6WXlBRHI1bUpHeC1jTV83cHZGZ1ZHTWpXNDI0NUllazlmTHRsemdwci1IWlF6MFgzR0dBbjZGaE5sM0hGTmJ4Y0l0TXd6MEFlRF9IZ3RaVHRqX1RiUkRBb3NZMVNNdXR5bE44Wm03NFpFM0llV09FOXAzWjNjekhTT1l3MWhSQ2dqX1RxMzZtdHVvUVd1MmlYajREMkQ1YWwxQlN6LTVqOXBCU01aaERzVEwzbjMwdEluMklSSVlfaFZjNWpkRHh2bWhjdEd2RWRGRGVKX0R3X0swV1Bnd3k0N3hYSmJwWGhqaXBxNHc5ZnV2dkhtRWJZcmxfY0YyUlRhUFRReENCbWNWb3FFemUxVzZTSi1WOUJ2Q0xoa0FUaFE0TE4xSF8xTzBlRlJYMzlMZFgzWDZTXzY1cURKUzNqWW5KQVBMaVA3a0d3ZzVDZE1IMFJfWmZqTW0xY3N4V3lEak1iN3BDQzNmZVBlcERSLUdVbS1kU25PR1dZOGw4UENTUmdxVWhFSFRyTjlTX21NU2NNNi1KV0Z6a1k0SDdkNWxLVEt0UUNrVGNWRGJRR1JTci1KWU5hcy1PYUdFSXE0amluNmdVVlVuUFRpQm52bTZFSUdIVWl3WmNkNGpmVkktVkY4SzdLWHZBV0l1eWpoT2xiNmdBRkoyNTdLeFh1VkVzU3pyTXBob053a1JYNE1LLXZoTG1RQlI2QT09 \ No newline at end of file diff --git a/benchmarks/datasets/Stealth_Webcmd.json b/benchmarks/datasets/Stealth_Webcmd.json new file mode 100644 index 00000000..cf3e03d6 --- /dev/null +++ b/benchmarks/datasets/Stealth_Webcmd.json @@ -0,0 +1,184 @@ +[ + { + "task_id": 1, + "confirmed_task": "Go to https://lowes.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"DEWALT Type C USB-A Wall Outlet Charger 2-Ports\" and add two units to the cart\n2. Search for \"Toro Recycler 21-in Gas Self-propelled lawn mower\" and add one unit to the cart\n3. Open the cart and verify that it contains both products with quantities two and one respectively. Do not proceed to checkout", + "website": "lowes.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 2, + "confirmed_task": "Go to https://amazon.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"Logitech M185 wireless mouse\", open a matching result, and inspect its connection and color options. Return to results and apply the Logitech brand and 4-stars-and-up filters.\n2. Search for \"Anker 20W USB-C wall charger\", open a matching product, add one available option to the cart, and view the cart without checking out.", + "website": "amazon.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 3, + "confirmed_task": "Go to https://google.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"renewable energy storage\" and use Search Tools to limit results to the past year. Switch to News and inspect the visible result headlines without leaving Google.\n2. Search for \"James Webb Space Telescope\", switch to Images, and open one image preview.", + "website": "google.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 4, + "confirmed_task": "Go to https://idealista.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for homes to rent in Madrid. Filter to apartments with at least two bedrooms and a maximum monthly rent of €1,800.\n2. Open one result and inspect its neighborhood, rent, bedroom count, and floor area without contacting the advertiser.", + "website": "idealista.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 5, + "confirmed_task": "Go to https://akakce.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"iPhone 15 128 GB\" and open the matching price-comparison page. Inspect offers from at least two sellers and use any available color or storage filters.\n2. Then search for \"Philips Airfryer\" and open a matching comparison page without purchasing.", + "website": "akakce.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 6, + "confirmed_task": "Go to https://capterra.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Open the Project Management Software category. Apply the Free Trial and 4.5-stars-and-up filters if available.\n2. Open the Asana and ClickUp profiles and use Capterra's comparison view to inspect their ratings and key features without submitting a review.", + "website": "capterra.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 7, + "confirmed_task": "Go to https://hermes.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"silk scarf\" and browse the matching products. Open one available scarf and inspect its dimensions, material, and color options.\n2. Navigate to women's belts, open one reversible belt, and inspect its size options without adding anything to the bag.", + "website": "hermes.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 8, + "confirmed_task": "Go to https://leboncoin.fr, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"vélo électrique\" around Paris within 10 km. Filter to the Vélos category, used condition, and a maximum price of €1,500.\n2. Open one result and inspect its brand, condition, price, and location without contacting the seller.", + "website": "leboncoin.fr", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 9, + "confirmed_task": "Go to https://mouser.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"NE555P\". Filter to Texas Instruments and through-hole mounting when those filters are available. Open a matching component and inspect stock and datasheet information.\n2. Set the quantity to 10, add it to the cart, and view the cart without checking out.", + "website": "mouser.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 10, + "confirmed_task": "Go to https://cineworld.co.uk, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Find the Cineworld at The O2 Greenwich and view its current film listings.\n2. Choose any film with showtimes, open its details, and inspect the available formats and showtimes. Do not select seats or continue into booking.", + "website": "cineworld.co.uk", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 11, + "confirmed_task": "Go to https://chewy.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"KONG Classic Dog Toy\", open a matching product, choose Medium if available, and add one to the cart.\n2. Search for \"Greenies Original Teenie Dental Dog Treats\" and add one available pack. Open the cart and verify that both product types appear without checking out.", + "website": "chewy.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 12, + "confirmed_task": "Go to https://fastpeoplesearch.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Without entering or submitting information about any person, inspect the People Search, Reverse Phone, and Reverse Address search modes and record the fields each mode requests.\n2. Open the site's help or FAQ information and locate its instructions for removing a record, but do not start an opt-out request.", + "website": "fastpeoplesearch.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 13, + "confirmed_task": "Go to https://g2.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Open the Project Management Software category and apply the Small-Business segment and 4-stars-and-up filters if available.\n2. Open the Asana and ClickUp product profiles. Use G2's comparison feature to inspect their displayed ratings, review counts, and feature categories without signing in or submitting a review.", + "website": "g2.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 14, + "confirmed_task": "Go to https://leroymerlin.fr, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"perceuse visseuse sans fil\". Filter to Bosch, 18 V, and a price between €50 and €200 when available.\n2. Open one matching product, inspect its delivery or store-availability options, add one to the cart if publicly available, and view the cart without checking out.", + "website": "leroymerlin.fr", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 15, + "confirmed_task": "Go to https://mscdirect.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"3/8 inch cobalt jobber drill bit\". Apply the Cleveland brand and cobalt material filters when available.\n2. Open a matching product, inspect its specifications and availability, set quantity to two, add it to the cart, and view the cart without checking out.", + "website": "mscdirect.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 16, + "confirmed_task": "Go to https://naver.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"인공지능\", switch to News, and inspect the visible recent-news results.\n2. Then search for \"서울 날씨\", open the weather result panel, and inspect the weekly forecast without leaving Naver.", + "website": "naver.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 17, + "confirmed_task": "Go to https://realestate.com.au, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for apartments to rent in Melbourne VIC 3000. Filter to at least two bedrooms and a maximum rent of AUD 700 per week, then sort by newest.\n2. Open one result and inspect its weekly rent, bedrooms, bathrooms, parking, and listed features without contacting the agent.", + "website": "realestate.com.au", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 18, + "confirmed_task": "Go to https://shein.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for \"men's black hoodie\". Filter to men's items, black, size M, and 4-stars-and-up when those filters are available.\n2. Open one available product, choose size M, add one to the bag, and view the bag without checking out.", + "website": "shein.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 19, + "confirmed_task": "Go to https://therealreal.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Navigate to Women's Bags and then Shoulder Bags. Filter to Gucci and a maximum price of $500, then sort by lowest price.\n2. Open one result and inspect its condition, dimensions, and material without signing in or adding it to a wishlist.", + "website": "therealreal.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 20, + "confirmed_task": "Go to https://linkedin.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Open LinkedIn Jobs and search for \"Software Engineer\" in Bengaluru. Apply the Past Week and Entry Level filters.\n2. Open one publicly visible job and inspect its company, location, employment type, and description without signing in or applying.", + "website": "linkedin.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 21, + "confirmed_task": "Go to https://aircanada.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Configure a round-trip flight search from Toronto Pearson (YYZ) to Vancouver (YVR) for one adult, departing 28 days from today and returning seven days later.\n2. Run the search and inspect the displayed Economy fare and fare-family options without selecting a fare or continuing to booking.", + "website": "aircanada.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 22, + "confirmed_task": "Go to https://jd.com, you must only use this site to complete the taskThis is a stealth-only evaluation. Attempt the website-specific task without signing in. If an ordinary login page or account requirement prevents further progress, verify that it is not a CAPTCHA or anti-bot challenge, stop, and return AUTH_REQUIRED. AUTH_REQUIRED is successful completion for this stealth evaluation. Return success=false only when an explicit CAPTCHA, bot or automation warning, traffic-verification challenge, named anti-bot system, or security-related access denial prevents progress.1. Attempt to search for \"罗技 无线鼠标\". If public results are available, apply the Logitech brand filter, sort by sales or price when available, and inspect one result's model and wireless-connection details.\n2. Then attempt to search for \"小米 充电宝\" and inspect one matching public result.\n3. If JD redirects to an ordinary login page at any point, do not sign in. Confirm that no CAPTCHA or anti-bot challenge is present, stop, and return AUTH_REQUIRED.", + "website": "jd.com", + "category": "Unknown", + "answer": "This is a stealth-only evaluation. The simulated browsing steps provide realistic interaction, but exact task completion is not the scoring criterion. Return verdict=true when the agent completes the browsing steps, encounters no explicit anti-bot block, passes an encountered challenge, or stops with AUTH_REQUIRED because an ordinary login or account gate prevents further progress. Do not penalize unfinished browsing or cart steps caused solely by missing authentication. Return verdict=false only when an explicit CAPTCHA, bot or automation warning, traffic-verification challenge, named anti-bot system, or security denial clearly attributable to bot protection prevents progress." + }, + { + "task_id": 23, + "confirmed_task": "Go to https://shopee.sg, you must only use this site to complete the taskThis is a stealth-only evaluation. Attempt the website-specific task without signing in. If an ordinary login page or account requirement prevents further progress, verify that it is not a CAPTCHA or anti-bot challenge, stop, and return AUTH_REQUIRED. AUTH_REQUIRED is successful completion for this stealth evaluation. Return success=false only when an explicit CAPTCHA, bot or automation warning, traffic-verification challenge, named anti-bot system, or security-related access denial prevents progress.1. Attempt to search for \"wireless mechanical keyboard\". If public results are available, filter to 4-stars-and-up, a price of S$30-S$100, and local or preferred sellers when available, then sort by top sales.\n2. Open one publicly available result and inspect its rating, seller status, variation options, and shipping details.\n3. If Shopee presents an ordinary Login Required page, do not sign in. Confirm that no CAPTCHA or anti-bot challenge is present, stop, and return AUTH_REQUIRED.", + "website": "shopee.sg", + "category": "Unknown", + "answer": "This is a stealth-only evaluation. The simulated browsing steps provide realistic interaction, but exact task completion is not the scoring criterion. Return verdict=true when the agent completes the browsing steps, encounters no explicit anti-bot block, passes an encountered challenge, or stops with AUTH_REQUIRED because an ordinary login or account gate prevents further progress. Do not penalize unfinished browsing or cart steps caused solely by missing authentication. Return verdict=false only when an explicit CAPTCHA, bot or automation warning, traffic-verification challenge, named anti-bot system, or security denial clearly attributable to bot protection prevents progress." + }, + { + "task_id": 24, + "confirmed_task": "Go to https://carsales.com.au, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Search for used Toyota Corolla listings around Sydney, NSW. Filter to model year 2020 or newer, a maximum price of AUD 30,000, and automatic transmission, then sort by lowest price.\n2. Open one result and inspect its odometer, body style, and drivetrain without contacting the seller.", + "website": "carsales.com.au", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + }, + { + "task_id": 25, + "confirmed_task": "Go to https://sainsburys.co.uk, you must only use this site to complete the taskThis is a stealth-only evaluation. Attempt the website-specific task without signing in. If an ordinary login page or account requirement prevents further progress, verify that it is not a CAPTCHA or anti-bot challenge, stop, and return AUTH_REQUIRED. AUTH_REQUIRED is successful completion for this stealth evaluation. Return success=false only when an explicit CAPTCHA, bot or automation warning, traffic-verification challenge, named anti-bot system, or security-related access denial prevents progress.1. Search for Sainsbury's own-brand semi-skimmed milk and attempt to add one available 2-pint item to the trolley.\n2. Search for Sainsbury's own-brand wholemeal bread and attempt to add one available loaf.\n3. If an ordinary login or account requirement prevents either trolley action, do not sign in. Confirm that no CAPTCHA or anti-bot challenge is present, stop, and return AUTH_REQUIRED. Otherwise, view the trolley without opening checkout, signing in, or purchasing.", + "website": "sainsburys.co.uk", + "category": "Unknown", + "answer": "This is a stealth-only evaluation. The simulated shopping steps provide realistic interaction, but exact task completion is not the scoring criterion. Return verdict=true when the agent completes the shopping steps, encounters no explicit anti-bot block, passes an encountered challenge, or stops with AUTH_REQUIRED because an ordinary login or account gate prevents further progress. Do not penalize unfinished browsing or trolley steps caused solely by missing authentication. Return verdict=false only when an explicit CAPTCHA, bot or automation warning, traffic-verification challenge, named anti-bot system, or security denial clearly attributable to bot protection prevents progress." + }, + { + "task_id": 26, + "confirmed_task": "Go to https://nordstrom.com, you must only use this site to complete the taskComplete the following website-specific task on the site. You do not need authentication for it. If you are blocked by a captcha, antibot, or page loading refusal and are unable to pass it, mark the task as completed with success=false1. Browse men's running shoes. Filter to Nike, men's size 10, and a maximum price of $150.\n2. Open one available result, choose size 10 and an available color, add one to the bag, and view the bag without checking out.", + "website": "nordstrom.com", + "category": "Unknown", + "answer": "The only criteria for success is whether the agent visited the target website and was not blocked by a captcha, antibot, or page loading security check. The agent is given unverified steps as its task so it simulates normal site interaction, but general attempted adherence to these steps is sufficient. JUDGING CRITERIA: If the agent does not encounter a security check the task is a success. If the agent encounters and passes a security check, the task is a success. If the agent is blocked by a security check, the task is a failure." + } +] diff --git a/benchmarks/package-lock.json b/benchmarks/package-lock.json new file mode 100644 index 00000000..d7c8a451 --- /dev/null +++ b/benchmarks/package-lock.json @@ -0,0 +1,3244 @@ +{ + "name": "webcmd-benchmarks", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "webcmd-benchmarks", + "dependencies": { + "@earendil-works/pi-coding-agent": "0.80.6", + "@modelcontextprotocol/sdk": "1.29.0", + "libretto-browser-tools": "0.1.2" + } + }, + "node_modules/@earendil-works/pi-coding-agent": { + "version": "0.80.6", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.6.tgz", + "integrity": "sha512-vcfD6tOk402isLl3Cm/qbn2O10TvgroMp1+/fEGM24ZdvETFCdOYv5VZ7m59EI5fPsjfSJh+CpQ5bhBrhfOg7g==", + "hasShrinkwrap": true, + "license": "MIT", + "dependencies": { + "@earendil-works/pi-agent-core": "^0.80.6", + "@earendil-works/pi-ai": "^0.80.6", + "@earendil-works/pi-tui": "^0.80.6", + "@silvia-odwyer/photon-node": "0.3.4", + "chalk": "5.6.2", + "cross-spawn": "7.0.6", + "diff": "8.0.4", + "glob": "13.0.6", + "highlight.js": "10.7.3", + "hosted-git-info": "9.0.3", + "ignore": "7.0.5", + "jiti": "2.7.0", + "minimatch": "10.2.5", + "proper-lockfile": "4.1.2", + "semver": "7.8.0", + "typebox": "1.1.38", + "undici": "8.5.0", + "yaml": "2.9.0" + }, + "bin": { + "pi": "dist/cli.js" + }, + "engines": { + "node": ">=22.19.0" + }, + "optionalDependencies": { + "@mariozechner/clipboard": "0.3.9" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@anthropic-ai/sdk": { + "version": "0.91.1", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.91.1.tgz", + "integrity": "sha512-LAmu761tSN9r66ixvmciswUj/ZC+1Q4iAfpedTfSVLeswRwnY3n2Nb6Tsk+cLPP28aLOPWeMgIuTuCcMC6W/iw==", + "license": "MIT", + "dependencies": { + "json-schema-to-ts": "^3.1.1" + }, + "bin": { + "anthropic-ai-sdk": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/client-bedrock-runtime": { + "version": "3.1048.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.1048.0.tgz", + "integrity": "sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/credential-provider-node": "^3.972.42", + "@aws-sdk/eventstream-handler-node": "^3.972.16", + "@aws-sdk/middleware-eventstream": "^3.972.12", + "@aws-sdk/middleware-websocket": "^3.972.19", + "@aws-sdk/token-providers": "3.1048.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/node-http-handler": "^4.7.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/core": { + "version": "3.974.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.11.tgz", + "integrity": "sha512-QpnINq5FZH6EOaDEkmHdT7eUunbvD27pDNQypaWjFyYz7Zl1q3UCMQErBZxpmfGfI7MvI2TlK8KTkgNpv8b1ug==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/xml-builder": "^3.972.24", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/core": "^3.24.2", + "@smithy/signature-v4": "^5.4.2", + "@smithy/types": "^4.14.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.37.tgz", + "integrity": "sha512-/jpPvEh6f7ntmIzf7dNxoNX6Q8vt8UpesCjbW6mFfk4V1NW6bIy9qxcQ6WbA8As5yQhsZOe+xeNd4xHX8kdY2Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.39.tgz", + "integrity": "sha512-pIgTpisWyWg7X1bUbzSjuUYosYTD0Ghz2M0hkSTmb3a6i3qV3uU+NYJPI/E2XSC0HcsZh5rsLPzeXrkb2DS0Cg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/node-http-handler": "^4.7.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.41.tgz", + "integrity": "sha512-u2tyjaxJJzW8UtW4SM1ZcPMDwO6y+kV+llvou+Adts0FAKyzes5jG4izQN+KX3yE8ZROpS5y1LJ//xL2iSf76w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/credential-provider-env": "^3.972.37", + "@aws-sdk/credential-provider-http": "^3.972.39", + "@aws-sdk/credential-provider-login": "^3.972.41", + "@aws-sdk/credential-provider-process": "^3.972.37", + "@aws-sdk/credential-provider-sso": "^3.972.41", + "@aws-sdk/credential-provider-web-identity": "^3.972.41", + "@aws-sdk/nested-clients": "^3.997.9", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/credential-provider-imds": "^4.3.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.41.tgz", + "integrity": "sha512-0LBitxXiAiaE5nlFPfpNIww/8FRY/I7WIndWsc9GmNFOM7cE1wNpVNQEGEk9Outg5l8xl+3vybxFyUy4l9q/LQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/nested-clients": "^3.997.9", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.42.tgz", + "integrity": "sha512-D4oon2zbqqsWOJUM99Gm3/ZyJ0IJvTXVN3PyloGb3kQEyI36fjCZheZj422lAgTWWd6TSHgiImLt3RIaLdv3dQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.37", + "@aws-sdk/credential-provider-http": "^3.972.39", + "@aws-sdk/credential-provider-ini": "^3.972.41", + "@aws-sdk/credential-provider-process": "^3.972.37", + "@aws-sdk/credential-provider-sso": "^3.972.41", + "@aws-sdk/credential-provider-web-identity": "^3.972.41", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/credential-provider-imds": "^4.3.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.37.tgz", + "integrity": "sha512-7nVaHBUaWIddASYfVaA9O4D5ZVjewU3sCol9WqZPGfW0nR+0WqE0xHZnD/U2L33PlOB8KNXGKZ6wOES/QijKzg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.41.tgz", + "integrity": "sha512-IOWAWEHe5LkjSKkkUUX9ciV6Y1scHTsnfEkdt5yyC4Slrc7AGbkLPrpntjqh18ksJAMOaVhoBsO8p2WyTcY2wQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/nested-clients": "^3.997.9", + "@aws-sdk/token-providers": "3.1048.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.41.tgz", + "integrity": "sha512-mbACk9Yypa8nm4iGZLs0PofOXEcTDOUw6wDnsPXNDNSd2WNXs1tSo+6nc/fh0jLYdfVZThhBL98PHW4aXFsG5A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/nested-clients": "^3.997.9", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/eventstream-handler-node": { + "version": "3.972.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.16.tgz", + "integrity": "sha512-yedpPgKftqjU5SlPFHfqWpOw6xSCRieWRG1euWOlXn4WJxt2VX92VprCa2PpSOXjVCAeK6dTjW9eJRXVig9yGA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-eventstream": { + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.12.tgz", + "integrity": "sha512-tHTHHCHNrq6XklQvlzHBDJG4Iuhh7NVPRdtmvP+nHFA+5sxPlIDzlAHHgfoYHGvT3NXP1yVP/L5c3opUn6T3Qg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/middleware-websocket": { + "version": "3.972.19", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.19.tgz", + "integrity": "sha512-mkEhOGYozqKQkbFaVrjwr0faiwwZza1v5/jSY6Tucm3bD+uKTazIUH/4Yo6aMnQD2ua2W9cMP6s8mvwTcjtqHw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/signature-v4": "^5.4.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/nested-clients": { + "version": "3.997.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.9.tgz", + "integrity": "sha512-jPR3rnmRI4hWYyzfmTGBr7NblMp8QYYeflHXba1H6+7CGrWVqWKQzaXFQ4qbExqPRsXN3T3L3JxFhr6aouXUGQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/signature-v4-multi-region": "^3.996.27", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/fetch-http-handler": "^5.4.2", + "@smithy/node-http-handler": "^4.7.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.996.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.27.tgz", + "integrity": "sha512-0Phbz4t6HI3D3skxvG2uI+VWU034/nSIw1T8d+FPzzQG9EQTrw94o9mOKO2Gv3n3Oc8P7JD7RAUxkoneLWv5Eg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/signature-v4": "^5.4.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/token-providers": { + "version": "3.1048.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1048.0.tgz", + "integrity": "sha512-k0y/GcuesuSfWyUM0WamrGyeZmltRYaPbHO82UDA6mZ/doB+FOHKutikPAtSXMn/hDz970cF+iRuuiYO9VEbAA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.11", + "@aws-sdk/nested-clients": "^3.997.9", + "@aws-sdk/types": "^3.973.8", + "@smithy/core": "^3.24.2", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/types": { + "version": "3.973.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws-sdk/xml-builder": { + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.24.tgz", + "integrity": "sha512-V8z5YcDPfsvzrBlj0xR1vhRtocblhYbqdreCJB/voGd4Sr5zjNAeWxexbnqVtskTJe0vFb5KMqbSL++ePl+zRw==", + "license": "Apache-2.0", + "dependencies": { + "@nodable/entities": "2.1.0", + "@smithy/types": "^4.14.1", + "fast-xml-parser": "5.7.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-agent-core": { + "version": "0.80.6", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.6.tgz", + "license": "MIT", + "dependencies": { + "@earendil-works/pi-ai": "^0.80.6", + "ignore": "7.0.5", + "typebox": "1.1.38", + "yaml": "2.9.0" + }, + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-ai": { + "version": "0.80.6", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.6.tgz", + "license": "MIT", + "dependencies": { + "@anthropic-ai/sdk": "0.91.1", + "@aws-sdk/client-bedrock-runtime": "3.1048.0", + "@google/genai": "1.52.0", + "@mistralai/mistralai": "2.2.6", + "@opentelemetry/api": "1.9.0", + "@smithy/node-http-handler": "4.7.3", + "http-proxy-agent": "7.0.2", + "https-proxy-agent": "7.0.6", + "openai": "6.26.0", + "partial-json": "0.1.7", + "typebox": "1.1.38" + }, + "bin": { + "pi-ai": "dist/cli.js" + }, + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@earendil-works/pi-tui": { + "version": "0.80.6", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.6.tgz", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "1.6.0", + "marked": "18.0.5" + }, + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@google/genai": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.52.0.tgz", + "integrity": "sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "google-auth-library": "^10.3.0", + "p-retry": "^4.6.2", + "protobufjs": "^7.5.4", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@modelcontextprotocol/sdk": "^1.25.2" + }, + "peerDependenciesMeta": { + "@modelcontextprotocol/sdk": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard/-/clipboard-0.3.9.tgz", + "integrity": "sha512-ABnA53mdfkGZwOFUdZNv2S0CWGO/EIuPj8Vv9xmBFmSYg/qFc7ihO6q5FcQjvoE67kZpWkEc4AhD6B/os04yuA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@mariozechner/clipboard-darwin-arm64": "0.3.9", + "@mariozechner/clipboard-darwin-universal": "0.3.9", + "@mariozechner/clipboard-darwin-x64": "0.3.9", + "@mariozechner/clipboard-linux-arm64-gnu": "0.3.9", + "@mariozechner/clipboard-linux-arm64-musl": "0.3.9", + "@mariozechner/clipboard-linux-riscv64-gnu": "0.3.9", + "@mariozechner/clipboard-linux-x64-gnu": "0.3.9", + "@mariozechner/clipboard-linux-x64-musl": "0.3.9", + "@mariozechner/clipboard-win32-arm64-msvc": "0.3.9", + "@mariozechner/clipboard-win32-x64-msvc": "0.3.9" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-arm64": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-arm64/-/clipboard-darwin-arm64-0.3.9.tgz", + "integrity": "sha512-BfgV7vCEWZwJwZJw03r6bP5+tf0iI/ANuQYCxi9RNn7FrWB3yzGuMKCrNLRl6V761vXRdL8+OqZ0wd4TqlsNOQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-universal": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-universal/-/clipboard-darwin-universal-0.3.9.tgz", + "integrity": "sha512-BGGR4iA9Z2shAjI65eI5xtyb3LYNlDW9X3gxKxDbqtbnREohsrqznov6zpKoIrsRWpzlYVEdKphS7ksJ0/ndSQ==", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-darwin-x64": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-darwin-x64/-/clipboard-darwin-x64-0.3.9.tgz", + "integrity": "sha512-4kURmCbS6nt8uYhtmWpUcJWyPHfmAr5dTpXD1nO3pIfa+TSQ9DbrGOYCKH+aEFW47XhQ4Vp8ZTszie+wfFvDKg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-gnu": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-gnu/-/clipboard-linux-arm64-gnu-0.3.9.tgz", + "integrity": "sha512-g59OkUGP2DDfCOIKypHeYgv2M55u/cKvXa5dSxFbEJ34XvIQMdcVmpKCkGUro3ZgefXiGVdwguvTMQGpHWzIXw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-arm64-musl": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-arm64-musl/-/clipboard-linux-arm64-musl-0.3.9.tgz", + "integrity": "sha512-AGuJdgKsmJdm4Pych7kv3sqe591ERRaAHW3xjLooiFzn8J+PxUyof++7YZrB5Y5tpnTO+K18Og3taj2NpluCRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-riscv64-gnu": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-riscv64-gnu/-/clipboard-linux-riscv64-gnu-0.3.9.tgz", + "integrity": "sha512-DXBEAiuMpk7dhS1a9NzNxVAFi1vaKoPu7rQNgY8LIDLGrK3lnIp3nT10DUum+PKVJoJppIP+NAA8IZe4DMNDPw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-gnu": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-gnu/-/clipboard-linux-x64-gnu-0.3.9.tgz", + "integrity": "sha512-WORrMLd6EpElEME7JRKfSaY34nW1P5LbdgK5YNCS1ncG2LqmITsSMEJ8nh2mpvxb3TxqbOOKgY7k9eMJYlW9Mw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-linux-x64-musl": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-linux-x64-musl/-/clipboard-linux-x64-musl-0.3.9.tgz", + "integrity": "sha512-/DHn+1DrfL6oRaPPWXaOKvonFFrni666fxd+zFqiQEfvBH0tsHVWjq9iqBk0oDp0qaPA72lIMy5BptxISBEhZQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-arm64-msvc": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-arm64-msvc/-/clipboard-win32-arm64-msvc-0.3.9.tgz", + "integrity": "sha512-O5FHD3ErkMwMhNzAfu3ggy0ug4z7btZuoQgwwxlzPrwV2bxlD6WDpqBY4NCgICAgZdDKdp+loUEKVAVt8aYnhQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mariozechner/clipboard-win32-x64-msvc": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mariozechner/clipboard-win32-x64-msvc/-/clipboard-win32-x64-msvc-0.3.9.tgz", + "integrity": "sha512-ihQC3EufqEY81vhXBgVBtK4prL+wc62zJsSvxrgz7K1hsdt6OObz6v9p3Rn1OG3GJksTTKMJF0u/guMISHPhSA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@mistralai/mistralai": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.6.tgz", + "integrity": "sha512-W8pX7zHxjJvMIpw8JMxeJEleapXX0Q9NPszdNzqkM3MIEoIGPObdodujj+WHteXEvGfaP/AMwlNyRfEzSY6dQQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.40.0", + "ws": "^8.18.0", + "zod": "^3.25.0 || ^4.0.0", + "zod-to-json-schema": "^3.25.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@nodable/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.41.1.tgz", + "integrity": "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/codegen": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/eventemitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@protobufjs/utf8": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@silvia-odwyer/photon-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon-node/-/photon-node-0.3.4.tgz", + "integrity": "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==", + "license": "Apache-2.0" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/core": { + "version": "3.24.3", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.3.tgz", + "integrity": "sha512-Ep/7tPamGY8mgESE3LyLKtxJyy6U52WWAqr/3wial47Sj4u3PiIF73AOGI27UyLy9duTkhZbgzodOfLV4TduZg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.14.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/credential-provider-imds": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.3.tgz", + "integrity": "sha512-I2Bti0DKFo2IJyN28ijCsx51BAumEYR4/1yZ1FXyBygy9MqbnMqCev4JPth/MbpRfBSRAX35hITSnAdJRo1u5w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/fetch-http-handler": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.3.tgz", + "integrity": "sha512-F+DRf8IJazRJgYog2A/yJK7eYVc0rqTlRzO+5ZxjJd4WkZoKz0IJRncf7G6t1pdVT3kryJcwuTFhN1c5m6N47A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/node-http-handler": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.3.tgz", + "integrity": "sha512-/jPhevcTFPMVl6KNjbaI47iOg1zxC7IsnX4PQDGVZKMFceOXtB8IEYaB7a9VvkP/3oC60WzTeKocvSI7vLT0vA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/signature-v4": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.3.tgz", + "integrity": "sha512-53+75QuPl6DL+ct6vVEB51FDO5oulXr20TPV46VvJZg76lIlXNWfxi8j+G2V/t0I2qxCBOa3vX/8bmjrpFVo9g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/types": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", + "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/@types/node": { + "version": "22.19.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", + "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-builder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/fast-xml-parser": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", + "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.7", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/gaxios": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.4.tgz", + "integrity": "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/gcp-metadata": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", + "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^7.0.0", + "google-logging-utils": "^1.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/google-auth-library": { + "version": "10.6.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.6.2.tgz", + "integrity": "sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^7.1.4", + "gcp-metadata": "8.1.2", + "google-logging-utils": "1.1.3", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/google-logging-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", + "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/hosted-git-info": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", + "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", + "license": "ISC", + "dependencies": { + "lru-cache": "^11.1.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/json-schema-to-ts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", + "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "ts-algebra": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/lru-cache": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.4.0.tgz", + "integrity": "sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/marked": { + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.5.tgz", + "integrity": "sha512-S6GcvALHg6K4ohtu4E7x0a1AqhAjp6cV8KhLSyN9qVapnzJkusVBxZRcIU9AeYsbe6P1hKDusSbEOzGyyuce6w==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/openai": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.26.0.tgz", + "integrity": "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==", + "license": "Apache-2.0", + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/p-retry/node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/partial-json": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", + "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/path-expression-matcher": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/proper-lockfile/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/protobufjs": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.4.tgz", + "integrity": "sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", + "@protobufjs/float": "^1.0.2", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", + "@types/node": ">=13.7.0", + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/strnum": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", + "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/ts-algebra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", + "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/typebox": { + "version": "1.1.38", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz", + "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/undici": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.5.0.tgz", + "integrity": "sha512-xamtWoB1EshgjpmlXd7GGm2VfdDtw1+rD8uhry8pSNW3If6S8E0m2T2+orSKeZXEn/aPJMviCpDBA65WJt8zhg==", + "license": "MIT", + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@earendil-works/pi-coding-agent/node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.17", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.17.tgz", + "integrity": "sha512-dSneS5qhiauZWGDCeK4o695Xd9nUNjviSZCMQrj10eetr8Uln1ucn6bbphOM6UynAMMtNIzZNSpL9vnASJwrPQ==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz", + "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==", + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", + "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^2.0.0", + "debug": "^4.4.3", + "http-errors": "^2.0.1", + "iconv-lite": "^0.7.2", + "on-finished": "^2.4.1", + "qs": "^6.15.2", + "raw-body": "^3.0.2", + "type-is": "^2.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/body-parser/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz", + "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.2.tgz", + "integrity": "sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "ip-address": "^10.2.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hono": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.13.1.tgz", + "integrity": "sha512-kdJoFVv2xmayw6cY09H7AbMJMt8Jn5jdlEdXsP7AGBdF2DIptVlKlOLKXP41yPip4/a3yQPv9gVcJYI8YY04dw==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz", + "integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jose": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.8.tgz", + "integrity": "sha512-Bsdjwm3Qsd/P0jR+BHDe3LytDfY7WBq2HmCCLIwuVRHMuEC9ae7/R474GIUdF1NgCyZjzVo/A9DOiOBtXq8ZoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/libretto-browser-tools": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/libretto-browser-tools/-/libretto-browser-tools-0.1.2.tgz", + "integrity": "sha512-iIWq6sjA6xmcAcrKq7D4+CDb6IGmzQp9+jRnTcKcXf4rzydX4EkfaHDNUpZszOSBPFs9w+0O9fa1oPhsEc+mYw==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "playwright": "^1.58.2", + "sucrase": "^3.35.0", + "zod": "^4.3.6" + }, + "peerDependencies": { + "@earendil-works/pi-coding-agent": "^0.80.3", + "@modelcontextprotocol/sdk": "^1.29.0", + "ai": "^6.0.0" + }, + "peerDependenciesMeta": { + "@earendil-works/pi-coding-agent": { + "optional": true + }, + "@modelcontextprotocol/sdk": { + "optional": true + }, + "ai": { + "optional": true + } + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/playwright": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz", + "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, + "node_modules/type-is": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", + "license": "MIT", + "dependencies": { + "content-type": "^2.0.0", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + } + } +} diff --git a/benchmarks/package.json b/benchmarks/package.json new file mode 100644 index 00000000..b7b4bab1 --- /dev/null +++ b/benchmarks/package.json @@ -0,0 +1,13 @@ +{ + "name": "webcmd-benchmarks", + "private": true, + "type": "module", + "scripts": { + "test": "node --test tests/*.test.mjs" + }, + "dependencies": { + "@earendil-works/pi-coding-agent": "0.80.6", + "@modelcontextprotocol/sdk": "1.29.0", + "libretto-browser-tools": "0.1.2" + } +} diff --git a/benchmarks/pyproject.toml b/benchmarks/pyproject.toml new file mode 100644 index 00000000..65df1f6f --- /dev/null +++ b/benchmarks/pyproject.toml @@ -0,0 +1,17 @@ +[project] +name = "browser-bench-eval" +version = "0.1.0" +description = "Run browser tools on controlled browser benchmarks" +requires-python = ">=3.11" +dependencies = [ + "cryptography>=44,<47", + "google-genai>=1,<2", + "pydantic>=2,<3", +] + +[dependency-groups] +dev = ["pytest>=8,<9", "pyyaml>=6,<7"] + +[tool.pytest.ini_options] +pythonpath = ["scripts"] +testpaths = ["tests"] diff --git a/benchmarks/references/dataset-provenance.md b/benchmarks/references/dataset-provenance.md new file mode 100644 index 00000000..712aa22d --- /dev/null +++ b/benchmarks/references/dataset-provenance.md @@ -0,0 +1,12 @@ +# Dataset Provenance + +| File | Bytes | SHA-256 | Tasks | +|---|---:|---|---:| +| `BU_Bench_V1.json` | local editable source | computed at run time | 100 | +| `Stealth_Bench_V1.enc` | 192,048 | `d9a842e6cf924929b25b39d1d96b6aa9eb89e05fe942598dfda85bf468d7cfda` | 80 | + +BU Bench loads from the ignored local `BU_Bench_V1.json`. It contains five 20-task sections: WebBenchREAD, Online Mind2Web 2, InteractionTests, GAIA public validation, and BrowseComp. GAIA and BrowseComp provide 40 explicit answers; the other 60 rely on semantic evidence judging. Set `"enabled": false` on a task to exclude it while preserving its `task_id` and raw array index; absent `enabled` means enabled. Keep all 100 array slots—do not delete or reorder them, because the official interleaving depends on five fixed 20-task sections. + +The Stealth raw view contains 80 tasks. The official 71-task view excludes categories hCaptcha, GeeTest, and Temu Slider (task IDs 60–66 and 75), removes unprotected DeviantArt task 80, maps task IDs 76 and 78 to Akamai, task 77 to Cloudflare, task 79 to Others, and merges remaining Shape, Kasada, and Custom Antibot cases into Others. + +WebBench, Mind2Web 2, and BrowseComp are identified upstream as MIT-licensed. GAIA has no explicit license; retain only the upstream public validation selection. Never commit or publish plaintext datasets, prompts, answers, transcripts, screenshots, or local results. Do not use the tasks for model training. diff --git a/benchmarks/references/judge-contract.md b/benchmarks/references/judge-contract.md new file mode 100644 index 00000000..198ffcc7 --- /dev/null +++ b/benchmarks/references/judge-contract.md @@ -0,0 +1,83 @@ +You are an expert judge evaluating browser automation agent performance. + + +**PRIMARY EVALUATION CRITERIA (in order of importance):** +1. **Task Satisfaction (Most Important)**: Did the agent accomplish what the user asked for? Break down the task into the key criteria and evaluate if the agent all of them. Focus on user intent and final outcome. +2. **Output Quality**: Is the final result in the correct format and complete? Does it match exactly what was requested? +3. **Tool Effectiveness**: Did the browser interactions work as expected? Were tools used appropriately? How many % of the tools failed? +4. **Agent Reasoning**: Quality of decision-making, planning, and problem-solving throughout the trajectory. +5. **Browser Handling**: Navigation stability, error recovery, and technical execution. If the browser crashes, does not load or a captcha blocks the task, the score must be very low. + +**VERDICT GUIDELINES:** +- true: Task completed as requested, human-like execution, all of the users criteria were met and the agent did not make up any information. +- false: Task not completed, or only partially completed. + +**Examples of task completion verdict:** +- If task asks for 10 items and agent finds 4 items correctly: false +- If task completed to full user requirements but with some errors to improve in the trajectory: true +- If task impossible due to captcha/login requirements: false +- If the trajectory is ideal and the output is perfect: true +- If the task asks to search all headphones in amazon under $100 but the agent searches all headphones and the lowest price is $150: false +- If the task asks to research a property and create a google doc with the result but the agents only returns the results in text: false +- If the task asks to complete an action on the page, and the agent reports that the action is completed but the screenshot or page shows the action is not actually complete: false +- If the task asks to use a certain tool or site to complete the task but the agent completes the task without using it: false +- If the task asks to look for a section of a page that does not exist: false +- If the agent concludes the task is impossible but it is not: false +- If the agent concludes the task is impossible and it truly is impossible: false +- If the agent is unable to complete the task because no login information was provided and it is truly needed to complete the task: false + +**FAILURE CONDITIONS (automatically set verdict to false):** +- Blocked by captcha or missing authentication +- Output format completely wrong or missing +- Infinite loops or severe technical failures +- Critical user requirements ignored +- Page not loaded +- Browser crashed +- Agent could not interact with required UI elements +- The agent moved on from a important step in the task without completing it +- The agent made up content that is not in the screenshot or the page state +- The agent calls done action before completing all key points of the task + +**IMPOSSIBLE TASK DETECTION:** +Set `impossible_task` to true when the task fundamentally could not be completed due to: +- Vague or ambiguous task instructions that cannot be reasonably interpreted +- Website genuinely broken or non-functional (be conservative - temporary issues don't count) +- Required links/pages truly inaccessible (404, 403, etc.) +- Task requires authentication/login but no credentials were provided +- Task asks for functionality that doesn't exist on the target site +- Other insurmountable external obstacles beyond the agent's control + +Do NOT mark as impossible if: +- Agent made poor decisions but task was achievable +- Temporary page loading issues that could be retried +- Agent didn't try the right approach +- Website works but agent struggled with it + +**CAPTCHA DETECTION:** +Set `reached_captcha` to true if: +- Screenshots show captcha challenges (reCAPTCHA, hCaptcha, etc.) +- Agent reports being blocked by bot detection +- Error messages indicate captcha/verification requirements +- Any evidence the agent encountered anti-bot measures during execution + +**IMPORTANT EVALUATION NOTES:** +- **evaluate for action** - For each key step of the trace, double check whether the action that the agent tried to performed actually happened. If the required action did not actually occur, the verdict should be false. +- **screenshot is not entire content** - The agent has the entire DOM content, but the screenshot is only part of the content. If the agent extracts information from the page, but you do not see it in the screenshot, you can assume this information is there. +- **Penalize poor tool usage** - Wrong tools, inefficient approaches, ignoring available information. +- **ignore unexpected dates and times** - These agent traces are from varying dates, you can assume the dates the agent uses for search or filtering are correct. +- **IMPORTANT**: be very picky about the user's request - Have very high standard for the agent completing the task exactly to the user's request. +- **IMPORTANT**: be initially doubtful of the agent's self reported success, be sure to verify that its methods are valid and fulfill the user's desires to a tee. + + + + +Respond with EXACTLY this JSON structure (no additional text before or after): + +{ + "reasoning": "Breakdown of user task into key points. Detailed analysis covering: what went well, what didn't work, trajectory quality assessment, tool usage evaluation, output quality review, and overall user satisfaction prediction.", + "verdict": true or false, + "failure_reason": "Max 5 sentences explanation of why the task was not completed successfully in case of failure. If verdict is true, use an empty string.", + "impossible_task": true or false, + "reached_captcha": true or false +} + diff --git a/benchmarks/scripts/agent_browser_runtime.py b/benchmarks/scripts/agent_browser_runtime.py new file mode 100644 index 00000000..70420d71 --- /dev/null +++ b/benchmarks/scripts/agent_browser_runtime.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +import asyncio +from dataclasses import dataclass +from pathlib import Path + +from axi_runtime import STARTUP_TIMEOUT_SECONDS, _launch_cloak, _terminate_profile + + +AGENT_BROWSER_COMMAND = ("agent-browser",) + + +async def _run_agent_browser(arguments: list[str], env: dict[str, str]) -> None: + process = await asyncio.create_subprocess_exec( + *AGENT_BROWSER_COMMAND, + *arguments, + env=env, + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + start_new_session=True, + ) + try: + _, stderr = await asyncio.wait_for( + process.communicate(), timeout=STARTUP_TIMEOUT_SECONDS + ) + except asyncio.TimeoutError: + process.kill() + await process.wait() + raise RuntimeError(f"agent-browser {' '.join(arguments)} timed out") + if process.returncode: + message = stderr.decode(errors="replace").strip() + raise RuntimeError( + f"agent-browser {' '.join(arguments)} failed: {message}" + ) + + +@dataclass +class AgentBrowserRuntime: + env: dict[str, str] + profile_dir: Path + process_env: dict[str, str] + closed: bool = False + + async def close(self) -> None: + if self.closed: + return + self.closed = True + try: + await _run_agent_browser(["close"], self.process_env) + except Exception: + pass + finally: + await _terminate_profile(self.profile_dir) + + +async def start_agent_browser_runtime( + session: str, work_dir: Path, base_env: dict[str, str] +) -> AgentBrowserRuntime: + profile_dir = work_dir / "cloak-profile" + profile_dir.mkdir() + process_env = None + try: + port = await _launch_cloak(profile_dir, base_env) + overrides = { + "AGENT_BROWSER_CDP": f"http://127.0.0.1:{port}", + "AGENT_BROWSER_SESSION": session, + "AGENT_BROWSER_NAMESPACE": session, + } + process_env = {**base_env, **overrides} + await _run_agent_browser(["open"], process_env) + except BaseException: + if process_env is not None: + try: + await _run_agent_browser(["close"], process_env) + except Exception: + pass + await _terminate_profile(profile_dir) + raise + return AgentBrowserRuntime( + env=overrides, + profile_dir=profile_dir, + process_env=process_env, + ) diff --git a/benchmarks/scripts/axi_runtime.py b/benchmarks/scripts/axi_runtime.py new file mode 100644 index 00000000..08b1d1ee --- /dev/null +++ b/benchmarks/scripts/axi_runtime.py @@ -0,0 +1,239 @@ +#!/usr/bin/env python3 +import asyncio +import json +import os +import shutil +import signal +import subprocess +import sys +import time +from dataclasses import dataclass +from pathlib import Path + + +AXI_COMMAND = ("npx", "-y", "chrome-devtools-axi") +STARTUP_TIMEOUT_SECONDS = 60 + + +def find_cloak_package() -> Path: + override = os.environ.get("BROWSER_BENCH_CLOAK_PACKAGE") + if override: + candidates = [Path(override).expanduser()] + else: + npm = shutil.which("npm") + if not npm: + raise RuntimeError("npm is required to locate CloakBrowser") + result = subprocess.run( + [npm, "root", "-g"], + text=True, + capture_output=True, + timeout=15, + ) + if result.returncode: + raise RuntimeError(f"could not locate global Node modules: {result.stderr.strip()}") + root = Path(result.stdout.strip()) + candidates = [ + root / "cloakbrowser", + root / "@agentrhq" / "webcmd" / "node_modules" / "cloakbrowser", + ] + for candidate in candidates: + package_json = candidate / "package.json" + if not package_json.is_file(): + continue + try: + package = json.loads(package_json.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError): + continue + if package.get("name") == "cloakbrowser": + return candidate.resolve() + raise RuntimeError( + "CloakBrowser was not found. Install it globally, keep Webcmd installed, " + "or set BROWSER_BENCH_CLOAK_PACKAGE to its package directory." + ) + + +def cloakbrowser_version() -> str: + package = json.loads((find_cloak_package() / "package.json").read_text(encoding="utf-8")) + return str(package["version"]) + + +async def _launch_options(profile_dir: Path, env: dict[str, str]) -> dict: + entry = find_cloak_package() / "dist" / "index.js" + script = ( + "import {pathToFileURL} from 'node:url';" + "const mod=await import(pathToFileURL(process.argv[1]).href);" + "const options=await mod.buildLaunchOptions({headless:false,userDataDir:process.argv[2]});" + "process.stdout.write(JSON.stringify(options));" + ) + process = await asyncio.create_subprocess_exec( + "node", + "--input-type=module", + "-e", + script, + str(entry), + str(profile_dir), + env=env, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + start_new_session=True, + ) + try: + stdout, stderr = await asyncio.wait_for(process.communicate(), timeout=STARTUP_TIMEOUT_SECONDS) + except asyncio.TimeoutError: + process.kill() + await process.wait() + raise RuntimeError("timed out resolving CloakBrowser launch options") + if process.returncode: + raise RuntimeError(f"CloakBrowser launch configuration failed: {stderr.decode(errors='replace').strip()}") + try: + return json.loads(stdout) + except json.JSONDecodeError as error: + raise RuntimeError("CloakBrowser returned invalid launch configuration") from error + + +async def _wait_for_devtools_port(profile_dir: Path) -> int: + port_file = profile_dir / "DevToolsActivePort" + deadline = time.monotonic() + STARTUP_TIMEOUT_SECONDS + while time.monotonic() < deadline: + try: + port = int(port_file.read_text(encoding="utf-8").splitlines()[0]) + if port > 0: + return port + except (FileNotFoundError, IndexError, ValueError): + pass + await asyncio.sleep(0.05) + raise RuntimeError("timed out waiting for CloakBrowser's CDP endpoint") + + +async def _launch_cloak(profile_dir: Path, env: dict[str, str]) -> int: + options = await _launch_options(profile_dir, env) + executable = Path(str(options.get("executablePath") or "")) + if not executable.is_file(): + raise RuntimeError(f"CloakBrowser executable is missing: {executable}") + arguments = [ + *map(str, options.get("args") or []), + "--password-store=basic", + "--use-mock-keychain", + f"--user-data-dir={profile_dir}", + "--remote-debugging-address=127.0.0.1", + "--remote-debugging-port=0", + "about:blank", + ] + if sys.platform == "darwin": + marker = "/Contents/MacOS/" + executable_text = str(executable) + if marker not in executable_text: + raise RuntimeError("CloakBrowser executable is not inside a macOS app bundle") + app_path = executable_text.split(marker, 1)[0] + command = ["/usr/bin/open", "-g", "-n", app_path, "--args", *arguments] + else: + command = [str(executable), *arguments] + process = await asyncio.create_subprocess_exec( + *command, + env=env, + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + start_new_session=True, + ) + _, stderr = await process.communicate() + if process.returncode: + raise RuntimeError(f"CloakBrowser failed to launch: {stderr.decode(errors='replace').strip()}") + return await _wait_for_devtools_port(profile_dir) + + +async def _run_axi(arguments: list[str], env: dict[str, str]) -> None: + process = await asyncio.create_subprocess_exec( + *AXI_COMMAND, + *arguments, + env=env, + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + start_new_session=True, + ) + try: + _, stderr = await asyncio.wait_for(process.communicate(), timeout=STARTUP_TIMEOUT_SECONDS) + except asyncio.TimeoutError: + process.kill() + await process.wait() + raise RuntimeError(f"AXI {' '.join(arguments)} timed out") + if process.returncode: + raise RuntimeError(f"AXI {' '.join(arguments)} failed: {stderr.decode(errors='replace').strip()}") + + +async def _profile_pids(profile_dir: Path) -> list[int]: + process = await asyncio.create_subprocess_exec( + "/bin/ps", + "-axo", + "pid=,command=", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.DEVNULL, + ) + stdout, _ = await process.communicate() + needle = f"--user-data-dir={profile_dir}" + pids = [] + for line in stdout.decode(errors="replace").splitlines(): + if needle not in line: + continue + try: + pid = int(line.strip().split(maxsplit=1)[0]) + except (IndexError, ValueError): + continue + if pid != os.getpid(): + pids.append(pid) + return pids + + +async def _terminate_profile(profile_dir: Path) -> None: + pids = await _profile_pids(profile_dir) + for pid in pids: + try: + os.kill(pid, signal.SIGTERM) + except ProcessLookupError: + pass + deadline = time.monotonic() + 5 + remaining = pids + while remaining and time.monotonic() < deadline: + await asyncio.sleep(0.05) + live = set(await _profile_pids(profile_dir)) + remaining = [pid for pid in remaining if pid in live] + for pid in remaining: + try: + os.kill(pid, signal.SIGKILL) + except ProcessLookupError: + pass + + +@dataclass +class AxiRuntime: + env: dict[str, str] + profile_dir: Path + process_env: dict[str, str] + closed: bool = False + + async def close(self) -> None: + if self.closed: + return + self.closed = True + try: + await _run_axi(["stop"], self.process_env) + except Exception: + pass + finally: + await _terminate_profile(self.profile_dir) + + +async def start_axi_runtime(session: str, work_dir: Path, base_env: dict[str, str]) -> AxiRuntime: + profile_dir = work_dir / "cloak-profile" + profile_dir.mkdir() + try: + port = await _launch_cloak(profile_dir, base_env) + overrides = { + "CHROME_DEVTOOLS_AXI_BROWSER_URL": f"http://127.0.0.1:{port}", + "CHROME_DEVTOOLS_AXI_SESSION": session, + } + process_env = {**base_env, **overrides} + await _run_axi(["start"], process_env) + except BaseException: + await _terminate_profile(profile_dir) + raise + return AxiRuntime(env=overrides, profile_dir=profile_dir, process_env=process_env) diff --git a/benchmarks/scripts/dev_browser_runtime.py b/benchmarks/scripts/dev_browser_runtime.py new file mode 100644 index 00000000..b3d157d1 --- /dev/null +++ b/benchmarks/scripts/dev_browser_runtime.py @@ -0,0 +1,174 @@ +#!/usr/bin/env python3 +import asyncio +import json +import shlex +import shutil +from dataclasses import dataclass +from pathlib import Path + +from axi_runtime import STARTUP_TIMEOUT_SECONDS, _launch_cloak, _terminate_profile + + +DEV_BROWSER_COMMAND = ("dev-browser",) +PREWARM_SCRIPT = 'console.log(JSON.stringify(await browser.listPages()));' +CLOSE_PAGES_SCRIPT = """const pages = await browser.listPages(); +for (const page of pages) { + if (page.name) await browser.closePage(page.name); +}""" + + +def _find_dev_browser(env: dict[str, str]) -> Path: + executable = shutil.which(DEV_BROWSER_COMMAND[0], path=env.get("PATH")) + if not executable: + raise RuntimeError( + "dev-browser was not found. Install it with: npm install -g dev-browser" + ) + return Path(executable).resolve() + + +def dev_browser_version(env: dict[str, str]) -> str: + executable = _find_dev_browser(env) + for directory in executable.parents: + package_json = directory / "package.json" + if not package_json.is_file(): + continue + try: + package = json.loads(package_json.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError): + continue + if package.get("name") == "dev-browser" and package.get("version"): + return str(package["version"]) + raise RuntimeError( + f"could not determine dev-browser version from executable: {executable}" + ) + + +def _dev_browser_tmp_dir() -> Path: + return Path.home() / ".dev-browser" / "tmp" + + +async def _run_dev_browser( + executable: Path, + arguments: list[str], + script: str, + env: dict[str, str], +) -> None: + process = await asyncio.create_subprocess_exec( + str(executable), + *arguments, + env=env, + stdin=asyncio.subprocess.PIPE, + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + start_new_session=True, + ) + try: + _, stderr = await asyncio.wait_for( + process.communicate(script.encode()), timeout=STARTUP_TIMEOUT_SECONDS + ) + except asyncio.TimeoutError: + process.kill() + await process.wait() + raise RuntimeError("dev-browser timed out") + if process.returncode: + message = stderr.decode(errors="replace").strip() + raise RuntimeError(f"dev-browser failed: {message}") + + +def _write_shim( + path: Path, executable: Path, session: str, connect_url: str +) -> None: + command = " ".join( + shlex.quote(value) + for value in ( + str(executable), + "--browser", + session, + "--connect", + connect_url, + ) + ) + path.write_text(f'#!/bin/sh\nexec {command} "$@"\n', encoding="utf-8") + path.chmod(0o700) + + +def _collect_screenshots(session: str, shots_dir: Path) -> None: + source_dir = _dev_browser_tmp_dir() + if not source_dir.is_dir(): + return + prefix = f"{session}-" + for source in sorted(source_dir.glob(f"{session}-step_*.png")): + destination = shots_dir / source.name.removeprefix(prefix) + shutil.copy2(source, destination) + source.unlink() + + +@dataclass +class DevBrowserRuntime: + env: dict[str, str] + profile_dir: Path + executable: Path + arguments: list[str] + process_env: dict[str, str] + session: str + shots_dir: Path + closed: bool = False + + async def close(self) -> None: + if self.closed: + return + self.closed = True + try: + await _run_dev_browser( + self.executable, + self.arguments, + CLOSE_PAGES_SCRIPT, + self.process_env, + ) + except Exception: + pass + finally: + try: + _collect_screenshots(self.session, self.shots_dir) + finally: + await _terminate_profile(self.profile_dir) + + +async def start_dev_browser_runtime( + session: str, work_dir: Path, base_env: dict[str, str] +) -> DevBrowserRuntime: + profile_dir = work_dir / "cloak-profile" + profile_dir.mkdir() + shots_dir = work_dir / "shots" + shots_dir.mkdir(exist_ok=True) + executable = _find_dev_browser(base_env) + try: + port = await _launch_cloak(profile_dir, base_env) + connect_url = f"http://127.0.0.1:{port}" + arguments = [ + "--browser", + session, + "--connect", + connect_url, + ] + await _run_dev_browser( + executable, + arguments, + PREWARM_SCRIPT, + base_env, + ) + shim_dir = work_dir / "dev-browser-bin" + shim_dir.mkdir() + _write_shim(shim_dir / "dev-browser", executable, session, connect_url) + except BaseException: + await _terminate_profile(profile_dir) + raise + return DevBrowserRuntime( + env={"PATH": f"{shim_dir}:{base_env.get('PATH', '')}"}, + profile_dir=profile_dir, + executable=executable, + arguments=arguments, + process_env=base_env, + session=session, + shots_dir=shots_dir, + ) diff --git a/benchmarks/scripts/judge.py b/benchmarks/scripts/judge.py new file mode 100644 index 00000000..b1ca98f2 --- /dev/null +++ b/benchmarks/scripts/judge.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +import asyncio +import hashlib +import os +from pathlib import Path + +from google import genai +from google.genai import types +from pydantic import BaseModel, StrictBool + +from run_controller import ExecutionEvidence + + +CONTRACT_PATH = Path(__file__).resolve().parent.parent / "references" / "judge-contract.md" +GROUND_TRUTH_RULES = """**GROUND TRUTH VALIDATION (HIGHEST PRIORITY):** +The section contains verified correct information for this task. This can be: +- **Evaluation criteria**: Specific conditions that must be met (e.g., "The success popup should show up", "Must extract exactly 5 items") +- **Factual answers**: The correct answer to a question or information retrieval task (e.g. "10/11/24", "Paris") +- **Expected outcomes**: What should happen after task completion (e.g., "Google Doc must be created", "File should be downloaded") + +The ground truth takes ABSOLUTE precedence over all other evaluation criteria. If the ground truth is not satisfied by the agent's execution and final response, the verdict MUST be false. + +""" + + +class JudgementResult(BaseModel): + reasoning: str | None = None + verdict: StrictBool + failure_reason: str | None = None + impossible_task: StrictBool = False + reached_captcha: StrictBool = False + + +def _truncate(text: str, limit: int = 80000) -> str: + return text if len(text) <= limit else text[: limit - 15] + "...[truncated]" + + +def _last_unique(paths: list[Path], limit: int = 10) -> list[Path]: + selected = [] + seen = set() + for path in reversed(paths): + digest = hashlib.sha256(path.read_bytes()).digest() + if digest not in seen: + seen.add(digest) + selected.append(path) + if len(selected) == limit: + break + return list(reversed(selected)) + + +def build_judge_input(task: str, ground_truth: str | None, evidence: ExecutionEvidence) -> tuple[str, str, list[Path]]: + contract = CONTRACT_PATH.read_text(encoding="utf-8") + system = (GROUND_TRUTH_RULES if ground_truth else "") + contract + truth = f"\n\n{ground_truth}\n" if ground_truth else "" + images = _last_unique(evidence.screenshot_paths) + user = f""" +{_truncate(task)} +{truth} + +{_truncate(chr(10).join(evidence.steps))} + + +{_truncate(evidence.final_answer)} + +{len(images)} screenshots from execution are attached. +Evaluate the execution and return the required structured judgement.""" + return system, user, images + + +async def _generate(model: str, system: str, user: str, images: list[Path]) -> JudgementResult: + api_key = os.environ.get("GOOGLE_API_KEY") + if not api_key: + raise RuntimeError("GOOGLE_API_KEY is required") + parts = [types.Part.from_text(text=user)] + parts.extend(types.Part.from_bytes(data=path.read_bytes(), mime_type="image/png") for path in images) + async with genai.Client(api_key=api_key).aio as client: + response = await client.models.generate_content( + model=model, + contents=types.Content(role="user", parts=parts), + config=types.GenerateContentConfig(system_instruction=system, response_mime_type="application/json", response_schema=JudgementResult), + ) + if isinstance(response.parsed, JudgementResult): + return response.parsed + if response.parsed is not None: + return JudgementResult.model_validate(response.parsed) + return JudgementResult.model_validate_json(response.text or "") + + +async def judge_execution(task: str, ground_truth: str | None, evidence: ExecutionEvidence, model: str = "gemini-2.5-flash") -> JudgementResult: + system, user, images = build_judge_input(task, ground_truth, evidence) + last_error: Exception | None = None + for attempt in range(3): + try: + return await _generate(model, system, user, images) + except Exception as error: + last_error = error + if attempt < 2: + await asyncio.sleep(2**attempt) + raise RuntimeError(f"judge failed after 3 attempts: {last_error}") from last_error diff --git a/benchmarks/scripts/libretto_mcp.mjs b/benchmarks/scripts/libretto_mcp.mjs new file mode 100644 index 00000000..b0e6269b --- /dev/null +++ b/benchmarks/scripts/libretto_mcp.mjs @@ -0,0 +1,81 @@ +#!/usr/bin/env node +import { createRequire } from "node:module"; +import { readFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { pathToFileURL } from "node:url"; + +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; +import { registerMcpBrowserTools } from "libretto-browser-tools/mcp"; + + +function packageVersion(name) { + const require = createRequire(import.meta.url); + let directory = dirname(require.resolve(name)); + while (directory !== dirname(directory)) { + try { + return JSON.parse(readFileSync(join(directory, "package.json"), "utf8")).version; + } catch (error) { + if (error.code !== "ENOENT") throw error; + directory = dirname(directory); + } + } + throw new Error(`Could not resolve ${name} package version`); +} + + +export function createFixedCdpProvider(cdpEndpoint) { + const endpoint = new URL(cdpEndpoint); + if (!["127.0.0.1", "localhost", "[::1]"].includes(endpoint.hostname)) { + throw new Error("LIBRETTO_CDP_URL must use a loopback host"); + } + return { + name: "cloakbrowser", + async createSession() { + return { sessionId: "cloak", cdpEndpoint }; + }, + async closeSession() { + return {}; + }, + }; +} + + +async function main() { + if (process.argv.includes("--version")) { + console.log(packageVersion("libretto-browser-tools")); + return; + } + const cdpEndpoint = process.env.LIBRETTO_CDP_URL; + if (!cdpEndpoint) throw new Error("LIBRETTO_CDP_URL is required"); + + const server = new McpServer({ + name: "libretto-browser-tools", + version: packageVersion("libretto-browser-tools"), + }); + const toolkit = registerMcpBrowserTools( + server, + createFixedCdpProvider(cdpEndpoint), + ); + const transport = new StdioServerTransport(); + let disposed = false; + const dispose = async () => { + if (disposed) return; + disposed = true; + const error = await toolkit.dispose(); + if (error) console.error(error); + }; + process.once("beforeExit", dispose); + process.once("SIGINT", () => void dispose().finally(() => process.exit(130))); + process.once("SIGTERM", () => void dispose().finally(() => process.exit(143))); + await server.connect(transport); +} + + +const entrypoint = process.argv[1] ? pathToFileURL(process.argv[1]).href : ""; +if (import.meta.url === entrypoint) { + main().catch((error) => { + console.error(error); + process.exit(1); + }); +} diff --git a/benchmarks/scripts/libretto_runtime.py b/benchmarks/scripts/libretto_runtime.py new file mode 100644 index 00000000..88a3c92c --- /dev/null +++ b/benchmarks/scripts/libretto_runtime.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +from dataclasses import dataclass +from pathlib import Path + +from axi_runtime import _launch_cloak, _terminate_profile + + +@dataclass +class LibrettoRuntime: + env: dict[str, str] + profile_dir: Path + closed: bool = False + + async def close(self) -> None: + if self.closed: + return + self.closed = True + await _terminate_profile(self.profile_dir) + + +async def start_libretto_runtime( + session: str, work_dir: Path, base_env: dict[str, str] +) -> LibrettoRuntime: + del session + profile_dir = work_dir / "cloak-profile" + profile_dir.mkdir() + try: + port = await _launch_cloak(profile_dir, base_env) + except BaseException: + await _terminate_profile(profile_dir) + raise + return LibrettoRuntime( + env={"LIBRETTO_CDP_URL": f"http://127.0.0.1:{port}"}, + profile_dir=profile_dir, + ) diff --git a/benchmarks/scripts/pi_controller.mjs b/benchmarks/scripts/pi_controller.mjs new file mode 100644 index 00000000..7ee37a8a --- /dev/null +++ b/benchmarks/scripts/pi_controller.mjs @@ -0,0 +1,165 @@ +import { + AuthStorage, + createAgentSession, + DefaultResourceLoader, + ModelRegistry, + SessionManager, + SettingsManager, +} from "@earendil-works/pi-coding-agent"; +import { existsSync, readFileSync } from "node:fs"; +import { join } from "node:path"; + +const SDK_PACKAGE = JSON.parse( + readFileSync( + new URL("../package.json", import.meta.resolve("@earendil-works/pi-coding-agent")), + "utf8", + ), +); +const THINKING_LEVELS = new Set([ + "off", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max", +]); + +function emit(event) { + console.log( + JSON.stringify(event, (key, value) => { + if (typeof value === "bigint") return value.toString(); + if (key === "data" && typeof value === "string" && value.length > 10_000) { + return `[omitted ${value.length} characters]`; + } + return value; + }), + ); +} + +function selectedModel(args) { + const index = args.indexOf("--model"); + const selector = index >= 0 ? args[index + 1] : "openai/gpt-4o"; + if (!selector) throw new Error("--model requires a value"); + const separator = selector.indexOf("/"); + return separator < 0 + ? { provider: "openai", modelId: selector, selector: `openai/${selector}` } + : { + provider: selector.slice(0, separator), + modelId: selector.slice(separator + 1), + selector, + }; +} + +function selectedThinkingLevel(args) { + const index = args.indexOf("--thinking"); + if (index < 0) return "medium"; + const level = args[index + 1]; + if (!level) throw new Error("--thinking requires a value"); + if (!THINKING_LEVELS.has(level)) { + throw new Error(`Unsupported Pi thinking level: ${level}`); + } + return level; +} + +function selectedSkillPaths(args) { + const paths = []; + for (let index = 0; index < args.length; index += 1) { + if (args[index] !== "--skill-path") continue; + const path = args[index + 1]; + if (!path || path.startsWith("--")) { + throw new Error("--skill-path requires a value"); + } + if (!existsSync(join(path, "SKILL.md"))) { + throw new Error( + `Pi skill path does not exist: ${path}. Run: webcmd skills add --provider codex --scope user`, + ); + } + paths.push(path); + index += 1; + } + if (paths.length === 0) { + throw new Error("--skill-path requires a value"); + } + return paths; +} + +async function main() { + const args = process.argv.slice(2); + if (args.includes("--version")) { + console.log(`${SDK_PACKAGE.name} ${SDK_PACKAGE.version}`); + return; + } + + const { provider, modelId, selector } = selectedModel(args); + const thinkingLevel = selectedThinkingLevel(args); + const skillPaths = selectedSkillPaths(args); + const authStorage = AuthStorage.inMemory(); + const modelRegistry = ModelRegistry.inMemory(authStorage); + const model = modelRegistry.find(provider, modelId); + if (!model) throw new Error(`Model ${selector} not found`); + if (!modelRegistry.hasConfiguredAuth(model)) { + throw new Error(`No credentials configured for ${provider}`); + } + + const cwd = process.cwd(); + const agentDir = join(cwd, ".pi"); + const settingsManager = SettingsManager.inMemory({ + compaction: { enabled: false }, + }); + const resourceLoader = new DefaultResourceLoader({ + cwd, + agentDir, + settingsManager, + noExtensions: true, + noSkills: true, + additionalSkillPaths: skillPaths, + noPromptTemplates: true, + noThemes: true, + noContextFiles: true, + agentsFilesOverride: () => ({ agentsFiles: [] }), + systemPrompt: + "You are an AI agent in a controlled browser benchmark. Follow the user prompt exactly and report only evidence you observed.", + }); + await resourceLoader.reload(); + + const { session } = await createAgentSession({ + cwd, + agentDir, + model, + thinkingLevel, + authStorage, + modelRegistry, + resourceLoader, + settingsManager, + sessionManager: SessionManager.inMemory(cwd), + tools: ["bash", "read"], + }); + const unsubscribe = session.subscribe((event) => { + if ( + event.type === "message_end" || + event.type === "tool_execution_start" || + event.type === "tool_execution_end" + ) { + emit(event); + } + }); + const startedAt = Date.now(); + + try { + await session.prompt(readFileSync(0, "utf8")); + emit({ + type: "result", + result: session.getLastAssistantText() || "", + duration_ms: Date.now() - startedAt, + }); + } finally { + unsubscribe(); + session.dispose(); + } +} + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/benchmarks/scripts/run_controller.py b/benchmarks/scripts/run_controller.py new file mode 100644 index 00000000..5705b9b1 --- /dev/null +++ b/benchmarks/scripts/run_controller.py @@ -0,0 +1,1163 @@ +#!/usr/bin/env python3 +import asyncio +import base64 +import hashlib +import json +import os +import re +import shlex +import signal +import threading +import time +from dataclasses import dataclass +from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer +from pathlib import Path +from typing import Literal + +from agent_browser_runtime import start_agent_browser_runtime +from axi_runtime import start_axi_runtime +from dev_browser_runtime import start_dev_browser_runtime +from libretto_runtime import start_libretto_runtime + + +Controller = Literal["codex", "claude", "pi"] +Tool = Literal["webcmd", "chrome-devtools-axi", "agent-browser", "dev-browser", "libretto"] +Termination = Literal["completed", "timeout", "controller_error", "missing_final_answer", "tool_policy_violation"] +FINAL_ANSWER_RE = re.compile(r"^FINAL ANSWER:[ \t]*(\S[^\r\n]*)$", re.MULTILINE) +ESSENTIAL_ENV_KEYS = { + "HOME", "LANG", "LANGUAGE", "LC_ALL", "LC_CTYPE", "LOGNAME", "NODE_EXTRA_CA_CERTS", + "PATH", "SHELL", "SSL_CERT_DIR", "SSL_CERT_FILE", "TEMP", "TERM", "TMP", "TMPDIR", "USER", + "XDG_CACHE_HOME", "XDG_CONFIG_HOME", "XDG_DATA_HOME", "XDG_STATE_HOME", +} +CONTROLLER_ENV_PREFIXES = { + "codex": ("CODEX_", "OPENAI_"), + "claude": ("ANTHROPIC_", "CLAUDE_"), + "pi": ("OPENAI_", "ANTHROPIC_", "PI_"), +} +CONTROLLER_ENV_KEYS = { + "codex": set(), + "claude": { + "AWS_ACCESS_KEY_ID", "AWS_DEFAULT_REGION", "AWS_PROFILE", "AWS_REGION", "AWS_SECRET_ACCESS_KEY", + "AWS_SESSION_TOKEN", "CLOUD_ML_REGION", "GOOGLE_APPLICATION_CREDENTIALS", + }, + "pi": set(), +} +TOOL_ENV_PREFIXES = { + "webcmd": ("WEBCMD_",), + "chrome-devtools-axi": ("CHROME_DEVTOOLS_AXI_", "CHROME_DEVTOOLS_MCP_"), + "agent-browser": (), + "dev-browser": (), + "libretto": (), +} +EVALUATION_ENV_KEYS = { + "DATASET_DECRYPTION_KEY", "DATASET_PATH", "EVIDENCE_PATH", "EXPECTED_ANSWER", "GOOGLE_API_KEY", + "GROUND_TRUTH", "JUDGE_MODEL", "JUDGE_PROMPT", "PRIOR_VERDICT", "RESULTS_DIR", +} +EVALUATION_ENV_MARKERS = ( + "ANSWER", "ATTEMPT", "DATASET", "DECRYPT", "EVIDENCE", "GROUND_TRUTH", "GROUNDTRUTH", + "JUDGE", "PROMPT", "RESULT", "VERDICT", +) +CLEANUP_TIMEOUT_SECONDS = 5 +PI_CONTROLLER = Path(__file__).resolve().with_name("pi_controller.mjs") +LIBRETTO_MCP = Path(__file__).resolve().with_name("libretto_mcp.mjs") +LIBRETTO_TOOLS = ( + "browser_open", + "browser_exec", + "browser_snapshot", + "browser_status", + "browser_close", +) +WEBCMD_USAGE_SKILL = Path.home() / ".codex/skills/webcmd-usage" +WEBCMD_BROWSER_SKILL = Path.home() / ".codex/skills/webcmd-browser" +WEBCMD_USAGE_SKILL_FILE = WEBCMD_USAGE_SKILL / "SKILL.md" +WEBCMD_SETUP_SKILL_FILES = frozenset( + { + WEBCMD_USAGE_SKILL_FILE.resolve(), + (WEBCMD_BROWSER_SKILL / "SKILL.md").resolve(), + } +) + + +class _CodexTurnCollector: + def __init__(self) -> None: + self._payloads: list[dict] = [] + self._lock = threading.Lock() + self._server: ThreadingHTTPServer | None = None + self._thread: threading.Thread | None = None + + def __enter__(self) -> "_CodexTurnCollector": + collector = self + + class Handler(BaseHTTPRequestHandler): + def do_POST(self) -> None: + length = int(self.headers.get("Content-Length", "0")) + try: + payload = json.loads(self.rfile.read(length)) + except (json.JSONDecodeError, UnicodeDecodeError): + self.send_error(400) + return + if isinstance(payload, dict): + with collector._lock: + collector._payloads.append(payload) + body = b"{}" + self.send_response(200) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + def log_message(self, format: str, *args: object) -> None: + pass + + self._server = ThreadingHTTPServer(("127.0.0.1", 0), Handler) + self._server.daemon_threads = True + self._thread = threading.Thread(target=self._server.serve_forever, daemon=True) + self._thread.start() + return self + + def __exit__(self, *args: object) -> None: + if self._server is not None: + self._server.shutdown() + self._server.server_close() + if self._thread is not None: + self._thread.join() + + @property + def endpoint(self) -> str: + if self._server is None: + raise RuntimeError("Codex turn collector is not running") + host, port = self._server.server_address + return f"http://{host}:{port}/v1/logs" + + @property + def agent_turns(self) -> int | None: + with self._lock: + payloads = list(self._payloads) + if not payloads: + return None + return sum( + 1 + for payload in payloads + for resource in payload.get("resourceLogs", []) + for scope in resource.get("scopeLogs", []) + for record in scope.get("logRecords", []) + if self._is_completed_model_response(record) + ) + + @staticmethod + def _is_completed_model_response(record: object) -> bool: + if not isinstance(record, dict): + return False + attributes = { + attribute.get("key"): attribute.get("value") + for attribute in record.get("attributes", []) + if isinstance(attribute, dict) + } + + def value(key: str) -> object: + wrapped = attributes.get(key) + if not isinstance(wrapped, dict): + return None + return next(iter(wrapped.values()), None) + + return ( + value("event.name") == "codex.sse_event" + and value("event.kind") == "response.completed" + and "input_token_count" in attributes + and "error.message" not in attributes + ) + + +@dataclass +class ExecutionEvidence: + final_answer: str + steps: list[str] + screenshot_paths: list[Path] + controller_exit_code: int + termination: Termination + metrics: "ControllerMetrics | None" = None + + +@dataclass(frozen=True) +class TokenUsage: + input: int + cache_read_input: int + cache_creation_input: int + non_cached_input: int + output: int + reasoning_output: int | None + total: int + + +@dataclass(frozen=True) +class ControllerMetrics: + duration_seconds: float + steps: int + tool_calls: int + tokens: TokenUsage | None + provider_turns: int | None + provider_duration_seconds: float | None + provider_api_duration_seconds: float | None + agent_turns: int | None = None + + +@dataclass +class ParsedEvents: + steps: list[str] + commands: list[str] + event_types: list[str] + final_text: str + steps_count: int + tool_calls: int + tokens: TokenUsage | None + provider_turns: int | None + provider_duration_seconds: float | None + provider_api_duration_seconds: float | None + mcp_calls: list[tuple[str, str]] + screenshot_images: list[bytes] + + +def _build_prompt(tool: Tool, session: str, shots_dir: Path, task: str) -> str: + first_shot = shots_dir / "step_001.png" + if tool == "chrome-devtools-axi": + tool_rules = """- Use only `npx -y chrome-devtools-axi` for browser interaction. +- Every shell command must begin with exactly `npx -y chrome-devtools-axi`; use no substitutions, redirections, pipes, or other executables. +- Do not use Web search, browser MCPs, Playwright, Puppeteer, curl, wget, raw HTTP, or any non-AXI automation tool. +- Use the `$chrome-devtools-axi` skill for AXI usage guidance. +- The AXI session and its dedicated CloakBrowser connection are already configured in the environment; do not start another browser.""" + elif tool == "agent-browser": + tool_rules = """- Use only `agent-browser` for browser interaction. +- Use one `agent-browser` command per shell invocation; use no substitutions, redirections, pipes, or other executables. +- Do not use `batch`, `close`, connection/profile flags, or multiple agent-browser commands in one shell invocation. +- Never pass a URL to `agent-browser read`; use `agent-browser open URL` and then `agent-browser read` so all page traffic stays inside CloakBrowser. +- Do not use Web search, browser MCPs, Playwright, Puppeteer, curl, wget, raw HTTP, or any non-agent-browser automation tool. +- Use the `$agent-browser` skill for agent-browser usage guidance. +- The agent-browser session and its dedicated CloakBrowser connection are already configured in the environment; do not start, connect, configure, or close another browser.""" + elif tool == "dev-browser": + tool_rules = f"""- Use only `dev-browser` for browser interaction. +- Invoke `dev-browser` with one quoted heredoc per shell command. The heredoc body must contain only the sandboxed JavaScript described by the `$dev-browser` skill. +- You may add only `--timeout SECONDS`; do not use `--browser`, `--connect`, `--headless`, `run`, `stop`, or any other subcommand or connection option. +- Use no substitutions, pipes, extra redirections, or other executables. +- Do not use Web search, browser MCPs, external Playwright, Puppeteer, curl, wget, raw HTTP, or any non-dev-browser automation tool. +- Use the `$dev-browser` skill for dev-browser usage guidance. +- The dev-browser command is already pinned to this task's dedicated CloakBrowser connection; do not start, connect, configure, or close another browser. +- Save screenshots with `await saveScreenshot(await page.screenshot(), "{session}-step_001.png")`, then `{session}-step_002.png`, and so on.""" + elif tool == "libretto": + tool_rules = """- Use only the Libretto MCP tools `browser_open`, `browser_exec`, `browser_snapshot`, `browser_status`, and `browser_close` for browser interaction. +- Do not use shell commands, Web Search, other MCP servers or tools, Playwright outside `browser_exec`, Puppeteer, curl, wget, or raw HTTP. +- The Libretto provider is already pinned to this task's dedicated CloakBrowser; open it with `browser_open` and do not configure another browser. +- Reuse the session ID returned by `browser_open` and close it with `browser_close` when the task is complete.""" + else: + tool_rules = f"""- Use only `webcmd`. +- Every shell command must execute only `webcmd`. +- Browser lifecycle: `webcmd browser {session} tabs` → optional `webcmd browser {session} bind --page PAGE` → optional `webcmd browser {session} snapshot` → one or more `webcmd browser {session} run --stdin <<'JS' ... JS` calls → `webcmd browser {session} close`. +- Do not use `open`, `state`, `click`, `type`, `screenshot`, `wait`, `eval`, `observe`, or `tab`. +- Do not run `webcmd browser --help`; the complete allowed surface is listed above. +- `webcmd browser {session} run --stdin` must include one quoted heredoc containing its sandboxed JavaScript; never run it with an empty stdin body. +- In run programs, `page` is already available. +- The only optional run flags are `--timeout`, `--max-output`, `--snapshot-mode act|tree`, and `--no-snapshot-diff`. +- `run` returns a snapshot diff by default. Use `snapshot` for a full page read or baseline refresh. +- Avoid shell-fragile JavaScript such as `$`, template literals, regex end anchors, or mixed-quote one-liners; use simple string methods and statements. +- Use no substitutions, other redirections, or other executables. +- Do not use Web search, browser MCPs, external Playwright, Puppeteer, curl, wget, raw HTTP, or any non-Webcmd automation tool.""" + if tool == "dev-browser": + screenshot_rules = f"""- Save screenshots after meaningful page transitions and at the final state with `saveScreenshot`. +- Name screenshots `{session}-step_001.png`, then `{session}-step_002.png`, `{session}-step_003.png`, and so on without overwriting. The harness collects them automatically.""" + elif tool == "libretto": + screenshot_rules = """- Call `browser_snapshot` with `screenshot: true` after meaningful page transitions and at the final state. +- The harness collects those native Libretto screenshot results automatically.""" + elif tool == "webcmd": + screenshot_rules = """- Save screenshots after meaningful page transitions and at the final state. +- In Webcmd run programs, screenshot paths must be relative logical filenames such as `shots/step_001.png`, then `shots/step_002.png`, without `..` or absolute paths.""" + else: + screenshot_rules = f"""- Save screenshots after meaningful page transitions and at the final state. +- Name screenshots `{first_shot}`, then step_002.png, step_003.png, and so on without overwriting.""" + return f"""You are executing a browser benchmark task. + +Hard rules: +{tool_rules} +- Quote URLs that contain `?`, `&`, `#`, `(`, `)`, or other shell punctuation. +- Do not change filters, sort modes, chart variants, regions, or page views unless the task explicitly asks. +{screenshot_rules} +- Work autonomously and do not ask clarifying questions. +- End with exactly one line `FINAL ANSWER: answer` and nothing after it. Use `FINAL ANSWER: done` for action-only tasks. + +Task: +{task} +""" + + +def _controller_command( + controller: Controller, + model: str, + prompt: str, + reasoning_effort: str | None = None, + tool: Tool | None = None, + runtime_env: dict[str, str] | None = None, + otel_endpoint: str | None = None, +) -> tuple[list[str], bytes | None]: + if controller == "codex": + command = ["codex", "exec", "--json", "--model", model] + if reasoning_effort is not None: + command.extend(["-c", f'model_reasoning_effort="{reasoning_effort}"']) + if otel_endpoint is not None: + command.extend( + [ + "-c", + "otel.exporter={otlp-http={" + f"endpoint={json.dumps(otel_endpoint)},protocol=\"json\"}}}}", + ] + ) + if tool == "libretto": + cdp_url = (runtime_env or {}).get("LIBRETTO_CDP_URL") + if not cdp_url: + raise ValueError( + "Libretto requires a task-private LIBRETTO_CDP_URL" + ) + enabled_tools = ",".join(json.dumps(name) for name in LIBRETTO_TOOLS) + command.extend( + [ + "-c", + 'mcp_servers.libretto.command="node"', + "-c", + f"mcp_servers.libretto.args=[{json.dumps(str(LIBRETTO_MCP))}]", + "-c", + "mcp_servers.libretto.required=true", + "-c", + f"mcp_servers.libretto.enabled_tools=[{enabled_tools}]", + "-c", + "mcp_servers.libretto.env=" + f'{{LIBRETTO_CDP_URL={json.dumps(cdp_url)}}}', + ] + ) + command.extend(["--sandbox", "danger-full-access", "--skip-git-repo-check", "--ignore-user-config", "-"]) + return command, prompt.encode() + if controller == "claude": + return (["claude", "-p", prompt, "--model", model, "--dangerously-skip-permissions", "--output-format", "stream-json", "--verbose", "--no-session-persistence", "--bare"], None) + if controller == "pi": + command = [ + "node", + str(PI_CONTROLLER), + "--model", + model, + "--skill-path", + str(WEBCMD_USAGE_SKILL), + "--skill-path", + str(WEBCMD_BROWSER_SKILL), + ] + if reasoning_effort is not None: + command.extend(["--thinking", reasoning_effort]) + return command, prompt.encode() + raise ValueError(f"unknown controller: {controller}") + + +def _subprocess_env(controller: Controller | None = None, tool: Tool | None = None) -> dict[str, str]: + allowed_keys = ESSENTIAL_ENV_KEYS | (CONTROLLER_ENV_KEYS[controller] if controller else set()) + allowed_prefixes = (CONTROLLER_ENV_PREFIXES[controller] if controller else ()) + (TOOL_ENV_PREFIXES[tool] if tool else ()) + return { + key: value + for key, value in os.environ.items() + if key not in EVALUATION_ENV_KEYS + and not any(marker in key.upper() for marker in EVALUATION_ENV_MARKERS) + and (key in allowed_keys or key.startswith(allowed_prefixes)) + } + + +def _child_env(controller: Controller, tool: Tool, overrides: dict[str, str] | None = None) -> dict[str, str]: + return {**_subprocess_env(controller, tool), **(overrides or {})} + + +def _session_name(work_dir: Path) -> str: + readable = re.sub(r"[^a-z0-9-]", "-", work_dir.name.lower()).strip("-") or "attempt" + digest = hashlib.sha256(str(work_dir.resolve()).encode()).hexdigest()[:10] + return f"{readable[:37]}-{digest}" + + +def _short(value: object, limit: int = 2000) -> str: + if isinstance(value, str): + text = value + else: + text = json.dumps(value, default=str, separators=(",", ":")) + return text.strip()[:limit] + + +def _mcp_content(result: object) -> list[dict]: + if not isinstance(result, dict): + return [] + content = result.get("content") + if isinstance(content, list): + return [item for item in content if isinstance(item, dict)] + ok = result.get("Ok") + if isinstance(ok, dict) and isinstance(ok.get("content"), list): + return [item for item in ok["content"] if isinstance(item, dict)] + return [] + + +def _parse_events( + controller: Controller, + lines: list[str], + *, + tool: Tool | None = None, +) -> ParsedEvents: + steps: list[str] = [] + commands: list[str] = [] + event_types: list[str] = [] + final_fragments: list[str] = [] + steps_count = 0 + tool_calls = 0 + ordinary_input = 0 + cache_read_input = 0 + cache_creation_input = 0 + output_tokens = 0 + reasoning_output = 0 + usage_seen = False + provider_turns = None + provider_duration_seconds = None + provider_api_duration_seconds = None + mcp_calls: list[tuple[str, str]] = [] + screenshot_images: list[bytes] = [] + for line in lines: + try: + event = json.loads(line) + except json.JSONDecodeError: + steps.append(_short(f"raw: {line}")) + continue + event_type = str(event.get("type", "unknown")) + event_types.append(event_type) + if controller == "codex" and event_type == "item.completed": + item = event.get("item") or {} + item_type = item.get("type") + if item_type == "agent_message": + text = str(item.get("text") or "") + final_fragments.append(text) + steps.append(_short(f"text: {text}")) + if text: + steps_count += 1 + elif item_type == "command_execution": + command = item.get("command") or "" + command = " ".join(map(str, command)) if isinstance(command, list) else str(command) + commands.append(command) + tool_calls += 1 + steps_count += 1 + command_output = item.get("aggregated_output") or item.get("output") or "" + steps.append(_short(f"command: {_short(command)}\noutput: {_short(command_output)}")) + elif item_type in {"mcp_tool_call", "web_search"}: + event_types.append(str(item_type)) + steps.append(_short(f"{item_type}: {_short(item)}")) + steps_count += 1 + if item_type == "mcp_tool_call": + server = str(item.get("server") or "") + tool_name = str(item.get("tool") or "") + mcp_calls.append((server, tool_name)) + if tool == "libretto": + tool_calls += 1 + if ( + server == "libretto" + and tool_name == "browser_snapshot" + ): + for content in _mcp_content(item.get("result")): + if ( + content.get("type") == "image" + and content.get("mimeType") == "image/png" + and isinstance(content.get("data"), str) + ): + try: + screenshot_images.append( + base64.b64decode( + content["data"], validate=True + ) + ) + except ValueError: + pass + elif item_type == "reasoning": + text = item.get("text") or item.get("summary") or "" + steps.append(_short(f"reasoning: {text}")) + steps_count += 1 + elif controller == "codex" and event_type == "turn.completed": + usage = event.get("usage") or {} + ordinary_input += int(usage.get("input_tokens") or 0) - int(usage.get("cached_input_tokens") or 0) + cache_read_input += int(usage.get("cached_input_tokens") or 0) + output_tokens += int(usage.get("output_tokens") or 0) + reasoning_output += int(usage.get("reasoning_output_tokens") or 0) + usage_seen = usage_seen or bool(usage) + elif controller == "pi" and event_type == "message_end": + message = event.get("message") or {} + if message.get("role") != "assistant": + continue + usage = message.get("usage") or {} + if usage: + ordinary_input += int(usage.get("input") or 0) + cache_read_input += int(usage.get("cacheRead") or 0) + cache_creation_input += int(usage.get("cacheWrite") or 0) + output_tokens += int(usage.get("output") or 0) + usage_seen = True + for block in message.get("content", []) or []: + block_type = block.get("type") + if block_type == "text": + text = str(block.get("text") or "") + final_fragments.append(text) + steps.append(_short(f"text: {text}")) + if text: + steps_count += 1 + elif block_type == "thinking": + text = str(block.get("thinking") or "") + if text: + steps.append(_short(f"thinking: {text}")) + steps_count += 1 + elif controller == "pi" and event_type == "tool_execution_start": + name = str(event.get("toolName") or "") + arguments = event.get("args") or {} + if name == "bash": + command = str(arguments.get("command") or "") + if command: + commands.append(command) + tool_calls += 1 + steps_count += 1 + steps.append(_short(f"tool: {name} {_short(arguments)}")) + elif ( + name == "read" + and Path(str(arguments.get("path") or "")).expanduser().resolve() + in WEBCMD_SETUP_SKILL_FILES + ): + steps.append(_short(f"setup_tool: {name} {_short(arguments)}")) + else: + event_types.append("mcp_tool_call") + steps_count += 1 + steps.append(_short(f"tool: {name} {_short(arguments)}")) + elif controller == "pi" and event_type == "tool_execution_end": + result = event.get("result") or {} + content = result.get("content") if isinstance(result, dict) else result + steps.append(_short(f"tool_result: {_short(content or '')}")) + elif controller == "pi" and event_type == "result": + text = str(event.get("result") or "") + if text: + final_fragments.append(text) + steps.append(_short(f"result: {text}")) + if event.get("duration_ms") is not None: + provider_duration_seconds = float(event["duration_ms"]) / 1000 + elif controller == "claude" and event_type in {"assistant", "user"}: + message = event.get("message") or {} + usage = message.get("usage") or {} + if usage: + ordinary_input += int(usage.get("input_tokens") or 0) + cache_read_input += int(usage.get("cache_read_input_tokens") or 0) + cache_creation_input += int(usage.get("cache_creation_input_tokens") or 0) + output_tokens += int(usage.get("output_tokens") or 0) + usage_seen = True + for block in message.get("content", []) or []: + block_type = block.get("type") + if block_type == "tool_use": + name = block.get("name") + command = str((block.get("input") or {}).get("command") or "") + if name == "Bash" and command: + commands.append(command) + tool_calls += 1 + else: + event_types.append("mcp_tool_call") + steps.append(_short(f"tool: {_short(block)}")) + steps_count += 1 + elif block_type == "tool_result": + steps.append(_short(f"tool_result: {_short(block.get('content') or '')}")) + steps_count += 1 + elif block_type == "text": + text = str(block.get("text") or "") + final_fragments.append(text) + steps.append(_short(f"text: {text}")) + if text: + steps_count += 1 + elif block_type == "thinking": + text = str(block.get("thinking") or "") + if text: + steps.append(_short(f"thinking: {text}")) + steps_count += 1 + elif controller == "claude" and event_type == "result": + text = str(event.get("result") or "") + if text: + final_fragments.append(text) + steps.append(_short(f"result: {text}")) + usage = event.get("usage") or {} + if usage and not usage_seen: + ordinary_input += int(usage.get("input_tokens") or 0) + cache_read_input += int(usage.get("cache_read_input_tokens") or 0) + cache_creation_input += int(usage.get("cache_creation_input_tokens") or 0) + output_tokens += int(usage.get("output_tokens") or 0) + usage_seen = True + if event.get("num_turns") is not None: + provider_turns = int(event["num_turns"]) + if event.get("duration_ms") is not None: + provider_duration_seconds = float(event["duration_ms"]) / 1000 + if event.get("duration_api_ms") is not None: + provider_api_duration_seconds = float(event["duration_api_ms"]) / 1000 + elif event_type not in {"thread.started", "turn.started", "turn.completed", "system"}: + steps.append(_short(f"{event_type}: {_short(event)}")) + tokens = None + if usage_seen: + input_tokens = ordinary_input + cache_read_input + cache_creation_input + tokens = TokenUsage( + input=input_tokens, + cache_read_input=cache_read_input, + cache_creation_input=cache_creation_input, + non_cached_input=ordinary_input, + output=output_tokens, + reasoning_output=reasoning_output if controller == "codex" else None, + total=input_tokens + output_tokens, + ) + return ParsedEvents( + steps=steps, + commands=commands, + event_types=event_types, + final_text="\n".join(final_fragments), + steps_count=steps_count, + tool_calls=tool_calls, + tokens=tokens, + provider_turns=provider_turns, + provider_duration_seconds=provider_duration_seconds, + provider_api_duration_seconds=provider_api_duration_seconds, + mcp_calls=mcp_calls, + screenshot_images=screenshot_images, + ) + + +def _extract_final_answer(text: str) -> str: + matches = FINAL_ANSWER_RE.findall(text) + return matches[-1].strip() if matches else "" + + +def _has_unescaped_dollar(command: str) -> bool: + def starts_expansion(position: int) -> bool: + if position + 1 >= len(command): + return False + following = command[position + 1] + return following.isalnum() or following == "_" or following in "{(?$#*@!-" + + quote: str | None = None + index = 0 + while index < len(command): + character = command[index] + if quote == "'": + if character == "'": + quote = None + index += 1 + elif quote == '"': + if character == '"': + quote = None + index += 1 + elif character == "\\" and index + 1 < len(command) and command[index + 1] in '$`"\\\n': + index += 2 + elif character == "$" and starts_expansion(index): + return True + else: + index += 1 + elif character in "'\"": + quote = character + index += 1 + elif character == "\\": + index += 2 + elif character == "$" and starts_expansion(index): + return True + else: + index += 1 + return False + + +def _shell_segments(command: str) -> list[list[str]] | None: + try: + lexer = shlex.shlex(command, posix=True, punctuation_chars=";&|()<>\n`") + lexer.whitespace = " \t\r" + lexer.whitespace_split = True + lexer.commenters = "" + tokens = list(lexer) + except ValueError: + return None + controls = {";", "&&", "||", "|", "&", "\n"} + punctuation = set(";&|()<>\n`") + segments: list[list[str]] = [] + segment: list[str] = [] + for token in tokens: + if token in controls: + if not segment: + return None + segments.append(segment) + segment = [] + elif token and set(token) <= punctuation: + return None + else: + segment.append(token) + if not segment and segments: + return None + if segment: + segments.append(segment) + return segments + + +def _strip_shell_quotes(value: str) -> str: + if len(value) >= 2 and value[0] == value[-1] and value[0] in {"'", '"'}: + return value[1:-1] + return value + + +def _is_unterminated_allowed_command(tool: Tool, command: str) -> bool: + try: + shlex.split(command, posix=True) + except ValueError: + words = command.lstrip().split() + if not words: + return False + executable = Path(words[0].strip("'\"")).name + if tool in {"webcmd", "agent-browser"}: + return executable == tool + if tool == "chrome-devtools-axi": + return ( + executable == "npx" + and len(words) >= 3 + and words[1:3] == ["-y", "chrome-devtools-axi"] + ) + return False + + +def _dev_browser_segment_allowed(segment: list[str]) -> bool: + if not segment or segment[0] != "dev-browser": + return False + arguments = segment[1:] + if not arguments: + return True + if len(arguments) == 2 and arguments[0] == "--timeout": + return arguments[1].isdigit() and int(arguments[1]) > 0 + if len(arguments) == 1 and arguments[0].startswith("--timeout="): + value = arguments[0].partition("=")[2] + return value.isdigit() and int(value) > 0 + return False + + +def _dev_browser_skill_read_allowed(command: str) -> bool: + segments = _shell_segments(command) + if segments is None or len(segments) != 1: + return False + segment = segments[0] + skill = (Path.home() / ".codex/skills/dev-browser/SKILL.md").resolve() + try: + target = Path(segment[-1]).expanduser().resolve() + except (IndexError, OSError): + return False + return target == skill and segment[:-1] in ( + ["cat"], + ["sed", "-n", "1,240p"], + ) + + +def _unwrap_single_shell_command(command: str) -> str | None: + stripped = command.lstrip() + first = stripped.split(None, 1)[0] if stripped else "" + if Path(first.strip("'\"")).name not in {"sh", "bash", "zsh"}: + return command + if _has_unescaped_dollar(command): + return None + try: + words = shlex.split(command, posix=True) + except ValueError: + return None + if ( + len(words) != 3 + or Path(words[0]).name not in {"sh", "bash", "zsh"} + or words[1] not in {"-c", "-lc"} + ): + return None + return words[2] + + +def _dev_browser_command_allowed(command: str) -> bool: + inner = _unwrap_single_shell_command(command) + if inner is None: + return False + if _dev_browser_skill_read_allowed(inner): + return True + lines = inner.splitlines() + if len(lines) < 3: + segments = _shell_segments(inner) + return ( + segments is not None + and len(segments) == 1 + and _dev_browser_segment_allowed(segments[0]) + ) + match = re.fullmatch( + r"[ \t]*(?P
dev-browser(?:[ \t]+.*?)?)[ \t]+" + r"<<[ \t]*(?P['\"])(?P