From 85e660423e086d872678aa20ae3dd40427b8b8c1 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sat, 11 Feb 2023 19:59:27 -0500 Subject: [PATCH 01/14] Add emergency message if backend is unavailable --- src/index.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 4b0d5cb..f174483 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -210,6 +210,24 @@ const Content: VFC<{ serverAPI: ServerAPI }> = ({}) => { reloadGUI("periodic" + (new Date()).getTime().toString()); }, 1000); + if (!usdplReady || !get_value(LIMITS_INFO)) { + // Not translated on purpose (to avoid USDPL issues) + return ( + + USDPL or PowerTools's backend did not start correctly! + { + console.log("POWERTOOLS: manual reload after startup failure"); + reload(); + }} + > + Reload + + + ) + } + return ( From b32c5c9d31a5779ff300dd44af18853cdedcca1d Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sat, 11 Feb 2023 20:00:07 -0500 Subject: [PATCH 02/14] Configure for v1.2.0 work --- backend/Cargo.lock | 2 +- backend/Cargo.toml | 2 +- backend/build.sh | 8 ++-- package.json | 6 +-- pnpm-lock.yaml | 108 ++++++++++++++++++++++----------------------- 5 files changed, 63 insertions(+), 63 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 9115d16..160d693 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -826,7 +826,7 @@ dependencies = [ [[package]] name = "powertools-rs" -version = "1.1.0-beta6" +version = "1.2.0-alpha" dependencies = [ "async-trait", "limits_core", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 72d737b..364f29d 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "powertools-rs" -version = "1.1.0-beta6" +version = "1.2.0-alpha" edition = "2021" authors = ["NGnius (Graham) "] description = "Backend (superuser) functionality for PowerTools" diff --git a/backend/build.sh b/backend/build.sh index f2fab87..94cd216 100755 --- a/backend/build.sh +++ b/backend/build.sh @@ -1,10 +1,10 @@ #!/bin/bash -cargo build --release --target x86_64-unknown-linux-musl -#cargo build --target x86_64-unknown-linux-musl +#cargo build --release --target x86_64-unknown-linux-musl +cargo build --target x86_64-unknown-linux-musl #cross build --release mkdir -p ../bin -cp ./target/x86_64-unknown-linux-musl/release/powertools-rs ../bin/backend -#cp ./target/x86_64-unknown-linux-musl/debug/powertools-rs ../bin/backend +#cp ./target/x86_64-unknown-linux-musl/release/powertools-rs ../bin/backend +cp ./target/x86_64-unknown-linux-musl/debug/powertools-rs ../bin/backend #cp ./target/release/powertools-rs ../bin/backend diff --git a/package.json b/package.json index 75e6fd7..ca2c06b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "PowerTools", - "version": "1.1.0-beta6", + "version": "1.2.0-alpha", "description": "Power tweaks for power users", "scripts": { "build": "shx rm -rf dist && rollup -c", @@ -35,8 +35,8 @@ "rollup": "^2.79.1", "rollup-plugin-import-assets": "^1.1.1", "shx": "^0.3.4", - "tslib": "^2.4.1", - "typescript": "^4.9.4" + "tslib": "^2.5.0", + "typescript": "^4.9.5" }, "dependencies": { "decky-frontend-lib": "~3.18.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e748bb..c42b6ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,8 +13,8 @@ specifiers: rollup: ^2.79.1 rollup-plugin-import-assets: ^1.1.1 shx: ^0.3.4 - tslib: ^2.4.1 - typescript: ^4.9.4 + tslib: ^2.5.0 + typescript: ^4.9.5 usdpl-front: file:src/usdpl_front dependencies: @@ -27,14 +27,14 @@ devDependencies: '@rollup/plugin-json': 4.1.0_rollup@2.79.1 '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 '@rollup/plugin-replace': 4.0.0_rollup@2.79.1 - '@rollup/plugin-typescript': 8.5.0_sbiskyiysxhldmns7rmnvoiszu + '@rollup/plugin-typescript': 8.5.0_bhcmvni67fkldpaxrtldxbogce '@types/react': 16.14.0 '@types/webpack': 5.28.0 rollup: 2.79.1 rollup-plugin-import-assets: 1.1.1_rollup@2.79.1 shx: 0.3.4 - tslib: 2.4.1 - typescript: 4.9.4 + tslib: 2.5.0 + typescript: 4.9.5 packages: @@ -108,8 +108,8 @@ packages: dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 '@types/resolve': 1.17.1 - deepmerge: 4.2.2 - is-builtin-module: 3.2.0 + deepmerge: 4.3.0 + is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.1 rollup: 2.79.1 @@ -125,7 +125,7 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-typescript/8.5.0_sbiskyiysxhldmns7rmnvoiszu: + /@rollup/plugin-typescript/8.5.0_bhcmvni67fkldpaxrtldxbogce: resolution: {integrity: sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==} engines: {node: '>=8.0.0'} peerDependencies: @@ -139,8 +139,8 @@ packages: '@rollup/pluginutils': 3.1.0_rollup@2.79.1 resolve: 1.22.1 rollup: 2.79.1 - tslib: 2.4.1 - typescript: 4.9.4 + tslib: 2.5.0 + typescript: 4.9.5 dev: true /@rollup/pluginutils/3.1.0_rollup@2.79.1: @@ -158,12 +158,12 @@ packages: /@types/eslint-scope/3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: - '@types/eslint': 8.4.10 + '@types/eslint': 8.21.0 '@types/estree': 0.0.51 dev: true - /@types/eslint/8.4.10: - resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} + /@types/eslint/8.21.0: + resolution: {integrity: sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==} dependencies: '@types/estree': 0.0.51 '@types/json-schema': 7.0.11 @@ -185,8 +185,8 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/node/18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node/18.13.0: + resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} dev: true /@types/prop-types/15.7.5: @@ -203,13 +203,13 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/webpack/5.28.0: resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 tapable: 2.2.1 webpack: 5.75.0 transitivePeerDependencies: @@ -333,16 +333,16 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /acorn-import-assertions/1.8.0_acorn@8.8.1: + /acorn-import-assertions/1.8.0_acorn@8.8.2: resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.8.1 + acorn: 8.8.2 dev: true - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -375,15 +375,15 @@ packages: concat-map: 0.0.1 dev: true - /browserslist/4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001446 - electron-to-chromium: 1.4.284 - node-releases: 2.0.8 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + caniuse-lite: 1.0.30001451 + electron-to-chromium: 1.4.293 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true /buffer-from/1.1.2: @@ -395,8 +395,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001446: - resolution: {integrity: sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==} + /caniuse-lite/1.0.30001451: + resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} dev: true /chrome-trace-event/1.0.3: @@ -424,13 +424,13 @@ packages: resolution: {integrity: sha512-2mgbA3sSkuwQR/FnmhXVrcW6LyTS95IuL6muJAmQCruhBvXapDtjk1TcgxqMZxFZwGD1IPnemPYxHZll6IgnZw==} dev: false - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge/4.3.0: + resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /electron-to-chromium/1.4.293: + resolution: {integrity: sha512-h7vBlhC83NsgC9UO3LOZx91xgstIrHk5iqMbZgnEArL5rHTM6HfsUZhnwb3oRnNetXM1741kB9SO7x9jLshz5A==} dev: true /enhanced-resolve/5.12.0: @@ -563,8 +563,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /is-builtin-module/3.2.0: - resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} + /is-builtin-module/3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 @@ -590,7 +590,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -636,16 +636,16 @@ packages: brace-expansion: 1.1.11 dev: true - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /neo-async/2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /node-releases/2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + /node-releases/2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true /once/1.4.0: @@ -763,7 +763,7 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 shelljs: 0.8.5 dev: true @@ -821,38 +821,38 @@ packages: jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 - terser: 5.16.1 + terser: 5.16.3 webpack: 5.75.0 dev: true - /terser/5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} + /terser/5.16.3: + resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 + acorn: 8.8.2 commander: 2.20.3 source-map-support: 0.5.21 dev: true - /tslib/2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true - /typescript/4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.4 + browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -895,9 +895,9 @@ packages: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 - acorn: 8.8.1 - acorn-import-assertions: 1.8.0_acorn@8.8.1 - browserslist: 4.21.4 + acorn: 8.8.2 + acorn-import-assertions: 1.8.0_acorn@8.8.2 + browserslist: 4.21.5 chrome-trace-event: 1.0.3 enhanced-resolve: 5.12.0 es-module-lexer: 0.9.3 From 0483ee1617541800eac7febe5c5deb5e5dc26630 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Tue, 14 Feb 2023 21:59:05 -0500 Subject: [PATCH 03/14] Fix SMT toggle always reenabling (fix #73) --- backend/src/settings/mod.rs | 2 +- backend/src/settings/steam_deck/cpu.rs | 1 + backend/src/settings/util.rs | 42 ++++++++++++++++++++++++++ src/backend.ts | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/backend/src/settings/mod.rs b/backend/src/settings/mod.rs index 3541526..115f42d 100644 --- a/backend/src/settings/mod.rs +++ b/backend/src/settings/mod.rs @@ -23,7 +23,7 @@ pub use traits::{OnResume, OnSet, SettingsRange, TGeneral, TGpu, TCpus, TBattery mod tests { #[test] fn system_defaults_test() { - let settings = super::Settings::system_default("idc".into()); + let settings = super::Settings::system_default("idc".into(), "Cool name".into()); println!("Loaded system settings: {:?}", settings); } } diff --git a/backend/src/settings/steam_deck/cpu.rs b/backend/src/settings/steam_deck/cpu.rs index 2fe0480..909b3a7 100644 --- a/backend/src/settings/steam_deck/cpu.rs +++ b/backend/src/settings/steam_deck/cpu.rs @@ -176,6 +176,7 @@ impl TCpus for Cpus { } fn smt(&mut self) -> &'_ mut bool { + log::debug!("CPU driver thinks SMT is {}", self.smt); &mut self.smt } diff --git a/backend/src/settings/util.rs b/backend/src/settings/util.rs index 83f032d..bb05f80 100644 --- a/backend/src/settings/util.rs +++ b/backend/src/settings/util.rs @@ -5,3 +5,45 @@ pub fn guess_smt(cpus: &Vec) -> bool { } guess } + +#[cfg(test)] +mod test { + use super::*; + + use crate::persist::CpuJson; + + #[test] + fn smt_guess_test() { + let input = vec![ + cpu_with_online(true), + cpu_with_online(true), + cpu_with_online(true), + cpu_with_online(true), + cpu_with_online(true), + cpu_with_online(true), + cpu_with_online(true), + cpu_with_online(true), + ]; + assert_eq!(guess_smt(&input), true); + + let input = vec![ + cpu_with_online(true), + cpu_with_online(false), + cpu_with_online(true), + cpu_with_online(false), + cpu_with_online(true), + cpu_with_online(false), + cpu_with_online(true), + cpu_with_online(false), + ]; + assert_eq!(guess_smt(&input), false); + } + + fn cpu_with_online(status: bool) -> CpuJson { + CpuJson { + online: status, + clock_limits: None, + governor: "schedutil".to_owned(), + } + } +} diff --git a/src/backend.ts b/src/backend.ts index f1bada4..801b8e5 100644 --- a/src/backend.ts +++ b/src/backend.ts @@ -146,7 +146,7 @@ export async function setCpuSmt(status: boolean): Promise { } export async function getCpuSmt(): Promise { - return await call_backend("CPU_get_smt", []); + return (await call_backend("CPU_get_smt", []))[0]; } /*export async function getCpuCount(): Promise { From fb6c31b0e883e6e52356367f9d131e54a1ba6a61 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 20 Feb 2023 11:33:10 -0500 Subject: [PATCH 04/14] Update Decky for NavigateToExternalUrl fix --- package.json | 2 +- pnpm-lock.yaml | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index ca2c06b..1854e9b 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "typescript": "^4.9.5" }, "dependencies": { - "decky-frontend-lib": "~3.18.10", + "decky-frontend-lib": "~3.18.11", "react-icons": "^4.7.1", "usdpl-front": "file:src/usdpl_front" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c42b6ca..64137bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ specifiers: '@rollup/plugin-typescript': ^8.5.0 '@types/react': 16.14.0 '@types/webpack': ^5.28.0 - decky-frontend-lib: ~3.18.10 + decky-frontend-lib: ~3.18.11 react-icons: ^4.7.1 rollup: ^2.79.1 rollup-plugin-import-assets: ^1.1.1 @@ -18,7 +18,7 @@ specifiers: usdpl-front: file:src/usdpl_front dependencies: - decky-frontend-lib: 3.18.10 + decky-frontend-lib: 3.18.11 react-icons: 4.7.1 usdpl-front: file:src/usdpl_front @@ -158,12 +158,12 @@ packages: /@types/eslint-scope/3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: - '@types/eslint': 8.21.0 + '@types/eslint': 8.21.1 '@types/estree': 0.0.51 dev: true - /@types/eslint/8.21.0: - resolution: {integrity: sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==} + /@types/eslint/8.21.1: + resolution: {integrity: sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==} dependencies: '@types/estree': 0.0.51 '@types/json-schema': 7.0.11 @@ -185,8 +185,8 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/node/18.13.0: - resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + /@types/node/18.14.0: + resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} dev: true /@types/prop-types/15.7.5: @@ -203,13 +203,13 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/webpack/5.28.0: resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 tapable: 2.2.1 webpack: 5.75.0 transitivePeerDependencies: @@ -380,8 +380,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001451 - electron-to-chromium: 1.4.293 + caniuse-lite: 1.0.30001456 + electron-to-chromium: 1.4.302 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -395,8 +395,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001451: - resolution: {integrity: sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==} + /caniuse-lite/1.0.30001456: + resolution: {integrity: sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==} dev: true /chrome-trace-event/1.0.3: @@ -420,8 +420,8 @@ packages: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /decky-frontend-lib/3.18.10: - resolution: {integrity: sha512-2mgbA3sSkuwQR/FnmhXVrcW6LyTS95IuL6muJAmQCruhBvXapDtjk1TcgxqMZxFZwGD1IPnemPYxHZll6IgnZw==} + /decky-frontend-lib/3.18.11: + resolution: {integrity: sha512-SLb3qWJc6CLNRqcbNyJsA8D6sXf7aix8/h6VqQTWjVmel6c3SkOR6b9KMvgFRzXumfRt7XGasBnZJmyCwH4BCQ==} dev: false /deepmerge/4.3.0: @@ -429,8 +429,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.293: - resolution: {integrity: sha512-h7vBlhC83NsgC9UO3LOZx91xgstIrHk5iqMbZgnEArL5rHTM6HfsUZhnwb3oRnNetXM1741kB9SO7x9jLshz5A==} + /electron-to-chromium/1.4.302: + resolution: {integrity: sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==} dev: true /enhanced-resolve/5.12.0: @@ -590,7 +590,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -821,12 +821,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 - terser: 5.16.3 + terser: 5.16.4 webpack: 5.75.0 dev: true - /terser/5.16.3: - resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} + /terser/5.16.4: + resolution: {integrity: sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==} engines: {node: '>=10'} hasBin: true dependencies: From 9da7de788eefb36267edcb15243ce63de568db57 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 20 Feb 2023 11:34:31 -0500 Subject: [PATCH 05/14] Add ability to disable setting clock to min-max on resume from sleep for SD --- backend/src/settings/steam_deck/cpu.rs | 2 +- backend/src/settings/steam_deck/gpu.rs | 2 +- backend/src/settings/steam_deck/oc_limits.rs | 4 +++ pt_oc.json | 27 +++++++++++++------- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/backend/src/settings/steam_deck/cpu.rs b/backend/src/settings/steam_deck/cpu.rs index 909b3a7..426497d 100644 --- a/backend/src/settings/steam_deck/cpu.rs +++ b/backend/src/settings/steam_deck/cpu.rs @@ -273,7 +273,7 @@ impl Cpu { setting: crate::settings::SettingVariant::Cpu, }, )?; - } else if self.state.clock_limits_set || self.state.is_resuming { + } else if self.state.clock_limits_set || (self.state.is_resuming && !self.limits.skip_resume_reclock) { self.state.clock_limits_set = false; // disable manual clock limits log::debug!("Setting CPU {} to default clockspeed", self.index); diff --git a/backend/src/settings/steam_deck/gpu.rs b/backend/src/settings/steam_deck/gpu.rs index 3253a8a..cf5e788 100644 --- a/backend/src/settings/steam_deck/gpu.rs +++ b/backend/src/settings/steam_deck/gpu.rs @@ -125,7 +125,7 @@ impl Gpu { setting: crate::settings::SettingVariant::Gpu, }, )?; - } else if self.state.clock_limits_set || self.state.is_resuming { + } else if self.state.clock_limits_set || (self.state.is_resuming && !self.limits.skip_resume_reclock) { self.state.clock_limits_set = false; // disable manual clock limits // max clock diff --git a/backend/src/settings/steam_deck/oc_limits.rs b/backend/src/settings/steam_deck/oc_limits.rs index 47e84be..3e64bf6 100644 --- a/backend/src/settings/steam_deck/oc_limits.rs +++ b/backend/src/settings/steam_deck/oc_limits.rs @@ -83,6 +83,7 @@ pub(super) struct CpuLimits { pub clock_min: MinMax, pub clock_max: MinMax, pub clock_step: u64, + pub skip_resume_reclock: bool, } impl Default for CpuLimits { @@ -91,6 +92,7 @@ impl Default for CpuLimits { clock_min: MinMax { min: 1400, max: 3500 }, clock_max: MinMax { min: 400, max: 3500 }, clock_step: 100, + skip_resume_reclock: false, } } } @@ -104,6 +106,7 @@ pub(super) struct GpuLimits { pub clock_min: MinMax, pub clock_max: MinMax, pub clock_step: u64, + pub skip_resume_reclock: bool, } impl Default for GpuLimits { @@ -116,6 +119,7 @@ impl Default for GpuLimits { clock_min: MinMax { min: 200, max: 1600 }, clock_max: MinMax { min: 200, max: 1600 }, clock_step: 100, + skip_resume_reclock: false, } } } diff --git a/pt_oc.json b/pt_oc.json index 3d30b49..36dba50 100644 --- a/pt_oc.json +++ b/pt_oc.json @@ -7,42 +7,50 @@ { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false }, { "clock_min": {"min": 1400, "max": 3500}, "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false } ], "global_governors": false @@ -54,6 +62,7 @@ "ppt_step": 1, "clock_min": {"min": 200, "max": 1600}, "clock_max": {"min": 200, "max": 1600}, - "clock_step": 100 + "clock_step": 100, + "skip_resume_reclock": false } } From b5a7cf591411cfc0f6c6d5cc6f11b1100b9df656 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 20 Feb 2023 12:04:44 -0500 Subject: [PATCH 06/14] Add pt_oc tests and auto-update json (test) fn --- backend/Cargo.toml | 1 + backend/src/settings/steam_deck/oc_limits.rs | 19 ++ pt_oc.json | 193 ++++++++++++------- 3 files changed, 148 insertions(+), 65 deletions(-) diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 364f29d..2deb631 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -37,6 +37,7 @@ decky = ["usdpl-back/decky"] crankshaft = ["usdpl-back/crankshaft"] encrypt = ["usdpl-back/encrypt"] online = ["ureq"] +dev_stuff = [] [profile.release] debug = false diff --git a/backend/src/settings/steam_deck/oc_limits.rs b/backend/src/settings/steam_deck/oc_limits.rs index 3e64bf6..21ca5f1 100644 --- a/backend/src/settings/steam_deck/oc_limits.rs +++ b/backend/src/settings/steam_deck/oc_limits.rs @@ -127,3 +127,22 @@ impl Default for GpuLimits { fn oc_limits_filepath() -> std::path::PathBuf { crate::utility::settings_dir().join(OC_LIMITS_FILEPATH) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn load_pt_oc() { + let mut file = std::fs::File::open("../pt_oc.json").unwrap(); + let settings: OverclockLimits = serde_json::from_reader(&mut file).unwrap(); + assert!(settings.cpus.cpus.len() == 8); + } + + #[cfg(feature = "dev_stuff")] + #[test] + fn emit_default_pt_oc() { + let mut file = std::fs::File::create("../pt_oc.json").unwrap(); + serde_json::to_writer_pretty(&mut file, &OverclockLimits::default()).unwrap(); + } +} diff --git a/pt_oc.json b/pt_oc.json index 36dba50..19665b0 100644 --- a/pt_oc.json +++ b/pt_oc.json @@ -1,68 +1,131 @@ { - "battery": { - "charge_rate": {"min": 250, "max": 2500} - }, - "cpus": { - "cpus": [ - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - }, - { - "clock_min": {"min": 1400, "max": 3500}, - "clock_max": {"min": 500, "max": 3500}, - "clock_step": 100, - "skip_resume_reclock": false - } - ], - "global_governors": false - }, - "gpu": { - "fast_ppt": {"min": 1000000, "max": 30000000}, - "slow_ppt": {"min": 1000000, "max": 29000000}, - "ppt_divisor": 1000000, - "ppt_step": 1, - "clock_min": {"min": 200, "max": 1600}, - "clock_max": {"min": 200, "max": 1600}, + "battery": { + "charge_rate": { + "min": 250, + "max": 2500 + } + }, + "cpus": { + "cpus": [ + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, "clock_step": 100, "skip_resume_reclock": false - } -} + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + }, + { + "clock_min": { + "min": 1400, + "max": 3500 + }, + "clock_max": { + "min": 400, + "max": 3500 + }, + "clock_step": 100, + "skip_resume_reclock": false + } + ], + "global_governors": false + }, + "gpu": { + "fast_ppt": { + "min": 1000000, + "max": 30000000 + }, + "slow_ppt": { + "min": 1000000, + "max": 29000000 + }, + "ppt_divisor": 1000000, + "ppt_step": 1, + "clock_min": { + "min": 200, + "max": 1600 + }, + "clock_max": { + "min": 200, + "max": 1600 + }, + "clock_step": 100, + "skip_resume_reclock": false + } +} \ No newline at end of file From 6d88d6e44fa63a6aeedad1ef4080382ceeb2d315 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 20 Feb 2023 12:09:51 -0500 Subject: [PATCH 07/14] Push default SD min GPU clock higher to avoid conservative boosting behaviour --- backend/src/settings/steam_deck/oc_limits.rs | 4 ++-- pt_oc.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/settings/steam_deck/oc_limits.rs b/backend/src/settings/steam_deck/oc_limits.rs index 21ca5f1..fd060e0 100644 --- a/backend/src/settings/steam_deck/oc_limits.rs +++ b/backend/src/settings/steam_deck/oc_limits.rs @@ -116,8 +116,8 @@ impl Default for GpuLimits { slow_ppt: MinMax { min: 1000000, max: 29_000_000 }, ppt_divisor: 1_000_000, ppt_step: 1, - clock_min: MinMax { min: 200, max: 1600 }, - clock_max: MinMax { min: 200, max: 1600 }, + clock_min: MinMax { min: 400, max: 1600 }, + clock_max: MinMax { min: 400, max: 1600 }, clock_step: 100, skip_resume_reclock: false, } diff --git a/pt_oc.json b/pt_oc.json index 19665b0..15f44db 100644 --- a/pt_oc.json +++ b/pt_oc.json @@ -118,11 +118,11 @@ "ppt_divisor": 1000000, "ppt_step": 1, "clock_min": { - "min": 200, + "min": 400, "max": 1600 }, "clock_max": { - "min": 200, + "min": 400, "max": 1600 }, "clock_step": 100, From 66f367e1d22335b0bbbe2f9acd70de275e3076d1 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 20 Feb 2023 14:42:38 -0500 Subject: [PATCH 08/14] Enable all-cpu governor dropdown by default for SD --- backend/src/settings/steam_deck/oc_limits.rs | 2 +- pt_oc.json | 2 +- src/components/cpus.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/settings/steam_deck/oc_limits.rs b/backend/src/settings/steam_deck/oc_limits.rs index fd060e0..7455621 100644 --- a/backend/src/settings/steam_deck/oc_limits.rs +++ b/backend/src/settings/steam_deck/oc_limits.rs @@ -73,7 +73,7 @@ impl Default for CpusLimits { fn default() -> Self { Self { cpus: [(); 8].iter().map(|_| CpuLimits::default()).collect(), - global_governors: false, + global_governors: true, } } } diff --git a/pt_oc.json b/pt_oc.json index 15f44db..3ee8234 100644 --- a/pt_oc.json +++ b/pt_oc.json @@ -104,7 +104,7 @@ "skip_resume_reclock": false } ], - "global_governors": false + "global_governors": true }, "gpu": { "fast_ppt": { diff --git a/src/components/cpus.tsx b/src/components/cpus.tsx index 778f821..6c94c22 100644 --- a/src/components/cpus.tsx +++ b/src/components/cpus.tsx @@ -238,7 +238,7 @@ export class Cpus extends Component { const governors = get_value(GOVERNOR_CPU); for (let i = 0; i < total_cpus; i++) { governors[i] = elem.data as string; - backend.resolve(backend.setCpuGovernor(i, elem.data as string), (_: string) => {}); + backend.resolve(backend.setCpuGovernor(i, governors[i]), (_: string) => {}); } set_value(GOVERNOR_CPU, governors); reloadGUI("CPUGlobalGovernor"); From d79ab91a04dd36f95f2f165221ed9d426e00519d Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Mon, 20 Feb 2023 22:16:19 -0500 Subject: [PATCH 09/14] Fix slider out-of-order jumping by removing extra set_value()s --- pnpm-lock.yaml | 12 ++++----- src/components/cpus.tsx | 56 ++++++++++++++++++++--------------------- src/components/gpu.tsx | 46 ++++++++++++++++----------------- 3 files changed, 57 insertions(+), 57 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64137bf..e182984 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -380,8 +380,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001456 - electron-to-chromium: 1.4.302 + caniuse-lite: 1.0.30001457 + electron-to-chromium: 1.4.303 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -395,8 +395,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001456: - resolution: {integrity: sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==} + /caniuse-lite/1.0.30001457: + resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} dev: true /chrome-trace-event/1.0.3: @@ -429,8 +429,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.302: - resolution: {integrity: sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==} + /electron-to-chromium/1.4.303: + resolution: {integrity: sha512-XaqiQhVsGO5ymf/Lg6XEGpv2h8b5AFqQDQ9fQckolNP2VtD2VL1pn1TIx1SSYsf0srfXVi2Sm7n/K3slJSX3ig==} dev: true /enhanced-resolve/5.12.0: diff --git a/src/components/cpus.tsx b/src/components/cpus.tsx index 6c94c22..52872bd 100644 --- a/src/components/cpus.tsx +++ b/src/components/cpus.tsx @@ -175,9 +175,9 @@ export class Cpus extends Component { set_value(CLOCK_MIN_CPU, freq); for (let i = 0; i < total_cpus; i++) { backend.resolve(backend.setCpuClockLimits(i, freq, get_value(CLOCK_MAX_CPU)), - (limits: number[]) => { - set_value(CLOCK_MIN_CPU, limits[0]); - set_value(CLOCK_MAX_CPU, limits[1]); + (_limits: number[]) => { + //set_value(CLOCK_MIN_CPU, limits[0]); + //set_value(CLOCK_MAX_CPU, limits[1]); syncPlebClockToAdvanced(); }); } @@ -206,9 +206,9 @@ export class Cpus extends Component { set_value(CLOCK_MAX_CPU, freq); for (let i = 0; i < total_cpus; i++) { backend.resolve(backend.setCpuClockLimits(i, get_value(CLOCK_MIN_CPU), freq), - (limits: number[]) => { - set_value(CLOCK_MIN_CPU, limits[0]); - set_value(CLOCK_MAX_CPU, limits[1]); + (_limits: number[]) => { + //set_value(CLOCK_MIN_CPU, limits[0]); + //set_value(CLOCK_MAX_CPU, limits[1]); syncPlebClockToAdvanced(); }); } @@ -273,14 +273,14 @@ export class Cpus extends Component { onChange={(status: boolean) => { backend.log(backend.LogLevel.Debug, "CPU " + advancedCpu.toString() + " is now " + status.toString()); if (!get_value(SMT_CPU)) { - backend.resolve(backend.setCpuSmt(true), (_newVal: boolean[]) => { - set_value(SMT_CPU, true); - }); + backend.resolve(backend.setCpuSmt(true), (_newVal: boolean[]) => { + set_value(SMT_CPU, true); + }); } backend.resolve(backend.setCpuOnline(advancedCpuIndex, status), (newVal: boolean) => { - const onlines = get_value(ONLINE_STATUS_CPUS); - onlines[advancedCpuIndex] = newVal; - set_value(ONLINE_STATUS_CPUS, onlines); + const onlines = get_value(ONLINE_STATUS_CPUS); + onlines[advancedCpuIndex] = newVal; + set_value(ONLINE_STATUS_CPUS, onlines); }); }} /> @@ -292,24 +292,24 @@ export class Cpus extends Component { description={tr("Set bounds on clock speed")} onChange={(value: boolean) => { if (value) { - const clocks = get_value(CLOCK_MIN_MAX_CPU) as MinMax[]; - if ((get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_min_limits != null) { - clocks[advancedCpuIndex].min = (get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_min_limits!.min; - } + const clocks = get_value(CLOCK_MIN_MAX_CPU) as MinMax[]; + if ((get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_min_limits != null) { + clocks[advancedCpuIndex].min = (get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_min_limits!.min; + } - if ((get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_max_limits != null) { - clocks[advancedCpuIndex].max = (get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_max_limits!.max; - } - set_value(CLOCK_MIN_MAX_CPU, clocks); - reloadGUI("CPUFreqToggle"); + if ((get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_max_limits != null) { + clocks[advancedCpuIndex].max = (get_value(LIMITS_INFO) as backend.SettingsLimits).cpu.cpus[advancedCpuIndex].clock_max_limits!.max; + } + set_value(CLOCK_MIN_MAX_CPU, clocks); + reloadGUI("CPUFreqToggle"); } else { - const clocks = get_value(CLOCK_MIN_MAX_CPU) as MinMax[]; - clocks[advancedCpuIndex].min = null; - clocks[advancedCpuIndex].max = null; - set_value(CLOCK_MIN_MAX_CPU, clocks); - backend.resolve(backend.unsetCpuClockLimits(advancedCpuIndex), (_idc: any[]) => { - reloadGUI("CPUUnsetFreq"); - }); + const clocks = get_value(CLOCK_MIN_MAX_CPU) as MinMax[]; + clocks[advancedCpuIndex].min = null; + clocks[advancedCpuIndex].max = null; + set_value(CLOCK_MIN_MAX_CPU, clocks); + backend.resolve(backend.unsetCpuClockLimits(advancedCpuIndex), (_idc: any[]) => { + reloadGUI("CPUUnsetFreq"); + }); } }} /> diff --git a/src/components/gpu.tsx b/src/components/gpu.tsx index e9569c8..a8fdd52 100644 --- a/src/components/gpu.tsx +++ b/src/components/gpu.tsx @@ -40,20 +40,20 @@ export class Gpu extends Component { description={tr("Override APU TDP settings")} onChange={(value: boolean) => { if (value) { - if ((get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.slow_ppt_limits != null) { - set_value(SLOW_PPT_GPU, (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.slow_ppt_limits!.max); - } + if ((get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.slow_ppt_limits != null) { + set_value(SLOW_PPT_GPU, (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.slow_ppt_limits!.max); + } - if ((get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.fast_ppt_limits != null) { - set_value(FAST_PPT_GPU, (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.fast_ppt_limits!.max); - } - reloadGUI("GPUPPTToggle"); + if ((get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.fast_ppt_limits != null) { + set_value(FAST_PPT_GPU, (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.fast_ppt_limits!.max); + } + reloadGUI("GPUPPTToggle"); } else { - set_value(SLOW_PPT_GPU, null); - set_value(FAST_PPT_GPU, null); - backend.resolve(backend.unsetGpuPpt(), (_: any[]) => { - reloadGUI("GPUUnsetPPT"); - }); + set_value(SLOW_PPT_GPU, null); + set_value(FAST_PPT_GPU, null); + backend.resolve(backend.unsetGpuPpt(), (_: any[]) => { + reloadGUI("GPUUnsetPPT"); + }); } }} /> @@ -113,15 +113,15 @@ export class Gpu extends Component { description={tr("Set bounds on clock speed")} onChange={(value: boolean) => { if (value) { - let clock_min_limits = (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.clock_min_limits; - let clock_max_limits = (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.clock_max_limits; - if (clock_min_limits != null) { - set_value(CLOCK_MIN_GPU, clock_min_limits.min); - } - if (clock_max_limits != null) { - set_value(CLOCK_MAX_GPU, clock_max_limits.max); - } - reloadGUI("GPUFreqToggle"); + let clock_min_limits = (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.clock_min_limits; + let clock_max_limits = (get_value(LIMITS_INFO) as backend.SettingsLimits).gpu.clock_max_limits; + if (clock_min_limits != null) { + set_value(CLOCK_MIN_GPU, clock_min_limits.min); + } + if (clock_max_limits != null) { + set_value(CLOCK_MAX_GPU, clock_max_limits.max); + } + reloadGUI("GPUFreqToggle"); } else { set_value(CLOCK_MIN_GPU, null); set_value(CLOCK_MAX_GPU, null); @@ -187,8 +187,8 @@ export class Gpu extends Component { description={tr("Force RAM into low-power mode")} onChange={(value: boolean) => { backend.resolve(backend.setGpuSlowMemory(value), (val: boolean) => { - set_value(SLOW_MEMORY_GPU, val); - reloadGUI("GPUSlowMemory"); + set_value(SLOW_MEMORY_GPU, val); + reloadGUI("GPUSlowMemory"); }) }} /> From 37f96a5cddefca9a8e7040dc6f0dd3775c71cef2 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Tue, 21 Feb 2023 21:28:59 -0500 Subject: [PATCH 10/14] Update to usdpl v0.10 and change ~/.config/powertools to not require su perms --- backend/Cargo.lock | 10 ++-- backend/Cargo.toml | 6 +- backend/src/api/handler.rs | 3 + backend/src/main.rs | 8 ++- backend/src/save_worker.rs | 29 ---------- backend/src/utility.rs | 24 ++++++++ main.py | 7 ++- package.json | 2 +- pnpm-lock.yaml | 8 +-- src/backend.ts | 4 +- src/index.tsx | 2 +- src/usdpl_front/package.json | 2 +- src/usdpl_front/rebuild.sh | 13 +++++ src/usdpl_front/usdpl_front.js | 85 ++++++++++++++-------------- src/usdpl_front/usdpl_front_bg.wasm | Bin 92304 -> 92609 bytes 15 files changed, 112 insertions(+), 91 deletions(-) delete mode 100644 backend/src/save_worker.rs create mode 100755 src/usdpl_front/rebuild.sh diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 160d693..1fc9ddb 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -826,7 +826,7 @@ dependencies = [ [[package]] name = "powertools-rs" -version = "1.2.0-alpha" +version = "1.2.0-beta1" dependencies = [ "async-trait", "limits_core", @@ -1375,9 +1375,9 @@ dependencies = [ [[package]] name = "usdpl-back" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2938cb40ba84ebea44658ebb1e4e0045fca54a562873bacab2ae094abab61ff" +checksum = "2d185cc6e3f5d305e6e97f1b5cadf1da78bac6b62ea3457802d250708c315306" dependencies = [ "async-recursion", "async-trait", @@ -1393,9 +1393,9 @@ dependencies = [ [[package]] name = "usdpl-core" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3904ca38aca189c68a6bc876cf73de7cc60003476b4e118012ae7eb783c1700" +checksum = "bd73bec3df5bed5862cab15aaa645d76c388e00128a14c372806907e2f331960" dependencies = [ "aes-gcm-siv", "base64", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 2deb631..b2c5933 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "powertools-rs" -version = "1.2.0-alpha" +version = "1.2.0-beta1" edition = "2021" authors = ["NGnius (Graham) "] description = "Backend (superuser) functionality for PowerTools" @@ -12,7 +12,7 @@ readme = "../README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -usdpl-back = { version = "0.9.1", features = ["blocking"] }#, path = "../../usdpl-rs/usdpl-back"} +usdpl-back = { version = "0.10.1", features = ["blocking"] }#, path = "../../usdpl-rs/usdpl-back"} serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -32,7 +32,7 @@ ryzenadj-rs = { version = "0.1" } ureq = { version = "2.5", features = ["json", "gzip", "brotli", "charset"], default-features = false, optional = true } [features] -default = ["online"] +default = ["online", "decky"] decky = ["usdpl-back/decky"] crankshaft = ["usdpl-back/crankshaft"] encrypt = ["usdpl-back/encrypt"] diff --git a/backend/src/api/handler.rs b/backend/src/api/handler.rs index d4ec832..1a59250 100644 --- a/backend/src/api/handler.rs +++ b/backend/src/api/handler.rs @@ -244,6 +244,9 @@ impl ApiMessageHandler { let save_json: SettingsJson = settings_clone.into(); unwrap_maybe_fatal(save_json.save(&save_path), "Failed to save settings"); log::debug!("Saved settings to {}", save_path.display()); + if let Err(e) = crate::utility::chown_settings_dir() { + log::error!("Failed to change config dir permissions: {}", e); + } } else { if save_path.exists() { if let Err(e) = std::fs::remove_file(&save_path) { diff --git a/backend/src/main.rs b/backend/src/main.rs index a1d598a..6d6bac6 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -18,7 +18,6 @@ use usdpl_back::core::serdes::Primitive; use usdpl_back::Instance; fn main() -> Result<(), ()> { - #[cfg(debug_assertions)] let log_filepath = usdpl_back::api::dirs::home() .unwrap_or_else(|| "/tmp/".into()) @@ -46,6 +45,7 @@ fn main() -> Result<(), ()> { }, Default::default(), std::fs::File::create(&log_filepath).unwrap(), + //std::fs::File::create("/home/deck/powertools-rs.log").unwrap(), ) .unwrap(); log::debug!("Logging to: {:?}.", log_filepath); @@ -55,6 +55,8 @@ fn main() -> Result<(), ()> { log::info!("Current dir `{}`", std::env::current_dir().unwrap().display()); println!("Current dir `{}`", std::env::current_dir().unwrap().display()); + log::info!("home dir: {:?}", usdpl_back::api::dirs::home()); + let _limits_handle = crate::settings::limits_worker_spawn(); log::info!("Detected device automatically, starting with driver: {:?} (This can be overriden)", crate::settings::auto_detect_provider()); @@ -227,6 +229,10 @@ fn main() -> Result<(), ()> { log::info!("Startup Settings.on_set() success"); } + if let Err(e) = utility::chown_settings_dir() { + log::warn!("Failed to change config dir permissions: {}", e); + } + api_worker::spawn(loaded_settings, api_handler); instance diff --git a/backend/src/save_worker.rs b/backend/src/save_worker.rs deleted file mode 100644 index 06b8a28..0000000 --- a/backend/src/save_worker.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::sync::mpsc::{self, Receiver, Sender}; -use std::thread::{self, JoinHandle}; - -use crate::persist::SettingsJson; -use crate::settings::Settings; -use crate::utility::{unwrap_lock, unwrap_maybe_fatal}; - -pub fn spawn(settings: Settings) -> (JoinHandle<()>, Sender<()>) { - let (sender, receiver): (Sender<()>, Receiver<()>) = mpsc::channel(); - let worker = thread::spawn(move || { - log::info!("save_worker starting..."); - for _ in receiver.iter() { - log::debug!("save_worker is saving..."); - let is_persistent = unwrap_lock(settings.general.lock(), "general").persistent.clone(); - if is_persistent { - let save_path = crate::utility::settings_dir() - .join(unwrap_lock(settings.general.lock(), "general").path.clone()); - let settings_clone = settings.clone(); - let save_json: SettingsJson = settings_clone.into(); - unwrap_maybe_fatal(save_json.save(&save_path), "Failed to save settings"); - log::debug!("Saved settings to {}", save_path.display()); - } else { - log::debug!("Ignored save request for non-persistent settings"); - } - } - log::warn!("save_worker completed!"); - }); - (worker, sender) -} diff --git a/backend/src/utility.rs b/backend/src/utility.rs index aed4673..7469ba9 100644 --- a/backend/src/utility.rs +++ b/backend/src/utility.rs @@ -1,5 +1,7 @@ use std::fmt::Display; //use std::sync::{LockResult, MutexGuard}; +//use std::fs::{Permissions, metadata}; +use std::os::unix::fs::PermissionsExt; pub fn unwrap_maybe_fatal(result: Result, message: &str) -> T { match result { @@ -29,3 +31,25 @@ pub fn settings_dir() -> std::path::PathBuf { .unwrap_or_else(|| "/tmp/".into()) .join(".config/powertools/") } + +pub fn chown_settings_dir() -> std::io::Result<()> { + let dir = settings_dir(); + #[cfg(feature = "decky")] + let deck_user = usdpl_back::api::decky::user().map_err(|_| std::io::Error::new(std::io::ErrorKind::NotFound, "Decky missing deck user's username"))?; + #[cfg(not(feature = "decky"))] + let deck_user = "deck".to_owned(); + // FIXME this shouldn't need to invoke a command + let output = std::process::Command::new("id") + .args(["-u", &deck_user]) + .output()?; + let uid: u32 = String::from_utf8_lossy(&output.stdout).parse().unwrap_or(1000); + log::info!("chmod/chown ~/.config/powertools for user `{}` ({})", deck_user, uid); + let permissions = PermissionsExt::from_mode(0o655); + std::fs::set_permissions(&dir, permissions)?; + // FIXME once merged into stable https://github.com/rust-lang/rust/issues/88989 + //std::os::unix::fs::chown(&dir, Some(uid), None) + std::process::Command::new("chown") + .args(["-R", &format!("{}:{}", deck_user, deck_user), &dir.to_str().unwrap_or(".")]) + .output()?; + Ok(()) +} diff --git a/main.py b/main.py index fc2d580..9f7916b 100644 --- a/main.py +++ b/main.py @@ -12,9 +12,14 @@ class Plugin: async def _main(self): # startup print("PowerTools starting...") + env_proc = dict(os.environ) + if "LD_LIBRARY_PATH" in env_proc: + env_proc["LD_LIBRARY_PATH"] += ":"+PARENT_DIR+"/bin" + else: + env_proc["LD_LIBRARY_PATH"] = ":"+PARENT_DIR+"/bin" self.backend_proc = subprocess.Popen( [PARENT_DIR + "/bin/backend"], - env = {"LD_LIBRARY_PATH": ":"+PARENT_DIR+"/bin"}) + env = env_proc) while True: await asyncio.sleep(1) diff --git a/package.json b/package.json index 1854e9b..d4171f4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "PowerTools", - "version": "1.2.0-alpha", + "version": "1.2.0-beta1", "description": "Power tweaks for power users", "scripts": { "build": "shx rm -rf dist && rollup -c", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e182984..59345b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -381,7 +381,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001457 - electron-to-chromium: 1.4.303 + electron-to-chromium: 1.4.305 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -429,8 +429,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.303: - resolution: {integrity: sha512-XaqiQhVsGO5ymf/Lg6XEGpv2h8b5AFqQDQ9fQckolNP2VtD2VL1pn1TIx1SSYsf0srfXVi2Sm7n/K3slJSX3ig==} + /electron-to-chromium/1.4.305: + resolution: {integrity: sha512-WETy6tG0CT5gm1O+xCbyapWNsCcmIvrn4NHViIGYo2AT8FV2qUCXdaB+WqYxSv/vS5mFqhBYnfZAAkVArjBmUg==} dev: true /enhanced-resolve/5.12.0: @@ -927,5 +927,5 @@ packages: file:src/usdpl_front: resolution: {directory: src/usdpl_front, type: directory} name: usdpl-front - version: 0.9.1 + version: 0.10.0 dev: false diff --git a/src/backend.ts b/src/backend.ts index 801b8e5..f8674f9 100644 --- a/src/backend.ts +++ b/src/backend.ts @@ -35,8 +35,8 @@ export async function initBackend() { ? navigator.languages[0] : navigator.language; console.log("POWERTOOLS: locale", user_locale); - let mo_path = "../plugins/PowerTools/translations/" + user_locale.toString() + ".mo"; - await init_tr(mo_path); + //let mo_path = "../plugins/PowerTools/translations/" + user_locale.toString() + ".mo"; + await init_tr(user_locale); //await init_tr("../plugins/PowerTools/translations/test.mo"); //setReady(true); } diff --git a/src/index.tsx b/src/index.tsx index f174483..a7ab4d0 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -290,7 +290,7 @@ const Content: VFC<{ serverAPI: ServerAPI }> = ({}) => { export default definePlugin((serverApi: ServerAPI) => { return { - title:
PowerTools
, + title:
PowerTools 300
, content: , icon: , onDismount() { diff --git a/src/usdpl_front/package.json b/src/usdpl_front/package.json index 1c18e11..15d0344 100644 --- a/src/usdpl_front/package.json +++ b/src/usdpl_front/package.json @@ -4,7 +4,7 @@ "NGnius (Graham) " ], "description": "Universal Steam Deck Plugin Library front-end designed for WASM", - "version": "0.9.1", + "version": "0.10.0", "license": "GPL-3.0-only", "repository": { "type": "git", diff --git a/src/usdpl_front/rebuild.sh b/src/usdpl_front/rebuild.sh new file mode 100755 index 0000000..5d6c8e5 --- /dev/null +++ b/src/usdpl_front/rebuild.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +git clone https://github.com/NGnius/usdpl-rs usdpl-rs +cd usdpl-rs/usdpl-front/ + +./build.sh $1 $2 + +cd ../.. + +cp -f ./usdpl-rs/usdpl-front/pkg/* ./ +#rm ./.gitignore + +rm -rf ./usdpl-rs diff --git a/src/usdpl_front/usdpl_front.js b/src/usdpl_front/usdpl_front.js index dc66687..012ee25 100644 --- a/src/usdpl_front/usdpl_front.js +++ b/src/usdpl_front/usdpl_front.js @@ -1,7 +1,6 @@ - let wasm; -const heap = new Array(32).fill(undefined); +const heap = new Array(128).fill(undefined); heap.push(undefined, null, true, false); @@ -10,7 +9,7 @@ function getObject(idx) { return heap[idx]; } let heap_next = heap.length; function dropObject(idx) { - if (idx < 36) return; + if (idx < 132) return; heap[idx] = heap_next; heap_next = idx; } @@ -25,10 +24,10 @@ const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: tru cachedTextDecoder.decode(); -let cachedUint8Memory0 = new Uint8Array(); +let cachedUint8Memory0 = null; function getUint8Memory0() { - if (cachedUint8Memory0.byteLength === 0) { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachedUint8Memory0; @@ -106,19 +105,19 @@ function isLikeNone(x) { return x === undefined || x === null; } -let cachedInt32Memory0 = new Int32Array(); +let cachedInt32Memory0 = null; function getInt32Memory0() { - if (cachedInt32Memory0.byteLength === 0) { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachedInt32Memory0; } -let cachedFloat64Memory0 = new Float64Array(); +let cachedFloat64Memory0 = null; function getFloat64Memory0() { - if (cachedFloat64Memory0.byteLength === 0) { + if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); } return cachedFloat64Memory0; @@ -219,10 +218,10 @@ export function get_value(key) { return takeObject(ret); } -let cachedUint32Memory0 = new Uint32Array(); +let cachedUint32Memory0 = null; function getUint32Memory0() { - if (cachedUint32Memory0.byteLength === 0) { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); } return cachedUint32Memory0; @@ -393,7 +392,7 @@ function getImports() { const ret = getObject(arg0) === undefined; return ret; }; - imports.wbg.__wbg_instanceof_Window_acc97ff9f5d2c7b4 = function(arg0) { + imports.wbg.__wbg_instanceof_Window_e266f02eee43b570 = function(arg0) { let result; try { result = getObject(arg0) instanceof Window; @@ -403,11 +402,11 @@ function getImports() { const ret = result; return ret; }; - imports.wbg.__wbg_fetch_0fe04905cccfc2aa = function(arg0, arg1) { + imports.wbg.__wbg_fetch_465e8cb61a0f43ea = function(arg0, arg1) { const ret = getObject(arg0).fetch(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_instanceof_Response_eaa426220848a39e = function(arg0) { + imports.wbg.__wbg_instanceof_Response_fb3a4df648c1859b = function(arg0) { let result; try { result = getObject(arg0) instanceof Response; @@ -417,11 +416,11 @@ function getImports() { const ret = result; return ret; }; - imports.wbg.__wbg_text_1169d752cc697903 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_text_f61464d781b099f0 = function() { return handleError(function (arg0) { const ret = getObject(arg0).text(); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_newwithstrandinit_05d7180788420c40 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_newwithstrandinit_c45f0dc6da26fd03 = function() { return handleError(function (arg0, arg1, arg2) { const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; @@ -434,15 +433,15 @@ function getImports() { const ret = false; return ret; }; - imports.wbg.__wbg_newnoargs_b5b063fc6c2f0376 = function(arg0, arg1) { + imports.wbg.__wbg_newnoargs_2b8b6bd7753c76ba = function(arg0, arg1) { const ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_call_97ae9d8645dc388b = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_call_95d1ea488d03e4e8 = function() { return handleError(function (arg0, arg1) { const ret = getObject(arg0).call(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_new_0b9bfdd97583284e = function() { + imports.wbg.__wbg_new_f9876326328f45ed = function() { const ret = new Object(); return addHeapObject(ret); }; @@ -450,34 +449,34 @@ function getImports() { const ret = typeof(getObject(arg0)) === 'string'; return ret; }; - imports.wbg.__wbg_self_6d479506f72c6a71 = function() { return handleError(function () { + imports.wbg.__wbg_self_e7c1f827057f6584 = function() { return handleError(function () { const ret = self.self; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_window_f2557cc78490aceb = function() { return handleError(function () { + imports.wbg.__wbg_window_a09ec664e14b1b81 = function() { return handleError(function () { const ret = window.window; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_globalThis_7f206bda628d5286 = function() { return handleError(function () { + imports.wbg.__wbg_globalThis_87cbb8506fecf3a9 = function() { return handleError(function () { const ret = globalThis.globalThis; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_global_ba75c50d1cf384f4 = function() { return handleError(function () { + imports.wbg.__wbg_global_c85a9259e621f3db = function() { return handleError(function () { const ret = global.global; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_newwithlength_7c42f7e738a9d5d3 = function(arg0) { + imports.wbg.__wbg_newwithlength_0da6f12fbc1ab6eb = function(arg0) { const ret = new Array(arg0 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_set_a68214f35c417fa9 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_set_17224bc548dd1d7b = function(arg0, arg1, arg2) { getObject(arg0)[arg1 >>> 0] = takeObject(arg2); }; - imports.wbg.__wbg_call_168da88779e35f61 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_call_9495de66fdbe016b = function() { return handleError(function (arg0, arg1, arg2) { const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_new_9962f939219f1820 = function(arg0, arg1) { + imports.wbg.__wbg_new_9d3a9ce4282a18a8 = function(arg0, arg1) { try { var state0 = {a: arg0, b: arg1}; var cb0 = (arg0, arg1) => { @@ -495,35 +494,35 @@ function getImports() { state0.a = state0.b = 0; } }; - imports.wbg.__wbg_resolve_99fe17964f31ffc0 = function(arg0) { + imports.wbg.__wbg_resolve_fd40f858d9db1a04 = function(arg0) { const ret = Promise.resolve(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_11f7a54d67b4bfad = function(arg0, arg1) { + imports.wbg.__wbg_then_ec5db6d509eb475f = function(arg0, arg1) { const ret = getObject(arg0).then(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_cedad20fbbd9418a = function(arg0, arg1, arg2) { + imports.wbg.__wbg_then_f753623316e2873a = function(arg0, arg1, arg2) { const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }; - imports.wbg.__wbg_parse_e23be3fecd886e2a = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_set_6aa458a4ebdb65cb = function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; + }, arguments) }; + imports.wbg.__wbg_parse_3ac95b51fc312db8 = function() { return handleError(function (arg0, arg1) { const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_stringify_d6471d300ded9b68 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_stringify_029a979dfb73aa17 = function() { return handleError(function (arg0) { const ret = JSON.stringify(getObject(arg0)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_set_bf3f89b92d5a34bf = function() { return handleError(function (arg0, arg1, arg2) { - const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); - return ret; - }, arguments) }; imports.wbg.__wbindgen_throw = function(arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }; - imports.wbg.__wbindgen_closure_wrapper385 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 70, __wbg_adapter_26); + imports.wbg.__wbindgen_closure_wrapper386 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 75, __wbg_adapter_26); return addHeapObject(ret); }; @@ -537,10 +536,10 @@ function initMemory(imports, maybe_memory) { function finalizeInit(instance, module) { wasm = instance.exports; init.__wbindgen_wasm_module = module; - cachedFloat64Memory0 = new Float64Array(); - cachedInt32Memory0 = new Int32Array(); - cachedUint32Memory0 = new Uint32Array(); - cachedUint8Memory0 = new Uint8Array(); + cachedFloat64Memory0 = null; + cachedInt32Memory0 = null; + cachedUint32Memory0 = null; + cachedUint8Memory0 = null; return wasm; @@ -582,7 +581,7 @@ export default init; // USDPL customization -const encoded = "AGFzbQEAAAABtwEbYAJ/fwBgAn9/AX9gAX8AYAN/f38AYAR/f39/AGADf39/AX9gAX8Bf2AAAGAAAX9gBX9/f39/AGAEf39/fwF/YAV/f39/fwF/YAF/AX5gA39/fwF+YAR/fn9/AGAGf39/f39/AX9gBn9/f39/fwBgBX9/fn9/AGAFf399f38AYAV/f3x/fwBgBH99f38AYAR/fH9/AGACfn8AYAd/f39/f39/AX9gA35/fwF/YAF8AX9gAn9/AX4CqgkjA3diZxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgACA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcAAQN3YmcVX193YmluZGdlbl9zdHJpbmdfZ2V0AAADd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAGA3diZxVfX3diaW5kZ2VuX251bWJlcl9uZXcAGQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAGA3diZxVfX3diaW5kZ2VuX251bWJlcl9nZXQAAAN3YmcSX193YmluZGdlbl9pc19udWxsAAYDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAYDd2JnKF9fd2JnX2luc3RhbmNlb2ZfV2luZG93X2FjYzk3ZmY5ZjVkMmM3YjQABgN3YmccX193YmdfZmV0Y2hfMGZlMDQ5MDVjY2NmYzJhYQABA3diZypfX3diZ19pbnN0YW5jZW9mX1Jlc3BvbnNlX2VhYTQyNjIyMDg0OGEzOWUABgN3YmcbX193YmdfdGV4dF8xMTY5ZDc1MmNjNjk3OTAzAAYDd2JnKF9fd2JnX25ld3dpdGhzdHJhbmRpbml0XzA1ZDcxODA3ODg0MjBjNDAABQN3YmcSX193YmluZGdlbl9jYl9kcm9wAAYDd2JnIF9fd2JnX25ld25vYXJnc19iNWIwNjNmYzZjMmYwMzc2AAEDd2JnG19fd2JnX2NhbGxfOTdhZTlkODY0NWRjMzg4YgABA3diZxpfX3diZ19uZXdfMGI5YmZkZDk3NTgzMjg0ZQAIA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAGA3diZxtfX3diZ19zZWxmXzZkNDc5NTA2ZjcyYzZhNzEACAN3YmcdX193Ymdfd2luZG93X2YyNTU3Y2M3ODQ5MGFjZWIA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hsAAEMMBAAsgBiAIQfCGwAAQwwEACyAHQQhqIARqIAUgBmotAAA6AAAgACAIaiEACwJAIA9FIAsgAklyDQAgAEGBCEkEQCACIAdBCGogAGpBgAggAGsQ4QEgAGohAAwBCyAAQYAIQeiEwAAQhgMACyAAQYEITw0CIAshBCADIAdBCGogABDfAUUNAQsLIAdBoAhqJAAgEA8LIABBgAhB+ITAABCHAwALQbiDwABBKyAHQZgIakHkg8AAQaCHwAAQtAEAC80NAgd/AX4jAEHgAmsiAiQAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQCYBEEBaw4DCQIBAAsgACAAQYgCakGIAhCiAxoLAkACQAJAAkAgAC0AgAJBAWsOAw0EAAELIABB7AFqIQYgAC0A7AFBAWsOAwcDAgELIAAoAvABIQMgAiAAQfQBaigCACIENgJAIAIgAzYCPCACIAQ2AjggAkEgaiACQThqELICIAJBKGogAigCICACKAIkEOUCIAAoAvgBIQMgAiAAQfwBaigCACIENgJAIAIgAzYCPCACIAQ2AjggAkEYaiACQThqELECIAIoAhghBSACKAIcIQQgAkGUAmogAkEwaigCADYCACACIAIpAyg3AowCIAAgAkE4akHgARCiAyIDIAQ2AugBIAMgBTYC5AEgAyAENgLgASADQQA6AOwBIANB7AFqIQYLIAAgACkC1AE3ArABIAAgACkC4AE3ArwBIABBuAFqIABB3AFqKAIANgIAIABBxAFqIgMgAEHoAWooAgAiBDYCAEGw68AAQbDrwAApAwAiCUIBfDcDACACQRBqIAQQngEgAigCECEEIABB0AFqQQA2AgAgAEHMAWogAigCFDYCACAAIAQ2AsgBIAMoAgAhBSAAKAK8ASEEIAIgAEHAAWooAgAiAzYCpAIgAiADIAVBAnRqNgKgAiACIAM2ApwCIAIgBDYCmAIgAEHIAWohBCAFBEADQCACIANBBGo2ApwCIAJBOGogAygCABBCIAAoAtABIgMgACgCyAFGBEAgBCADEPwBIAAoAtABIQMLIAAoAswBIANBBHRqIgMgAikDODcDACADQQhqIAJBQGspAwA3AwAgACAAKALQAUEBajYC0AEgAigCnAIiAyACKAKgAkcNAAsLIAJBmAJqEMcBQbjrwAAvAQAhAyACQThqIABBsAFqENEBIABBmAFqIAJBQGsoAgA2AgAgACACKQM4NwOQASAAIAQpAgA3ApwBIABBpAFqIARBCGooAgA2AgAgAEEAOgCqASAAIAM7AagBIAAgCTcDiAEgAEEANgKAASAAIAk3AwAgAEGqAWohBAwDCyAAQaoBaiEEIAAtAKoBQQFrDgMIAAMBCwALIAAvAagBIQMgACkDACEJCyACQUBrIABBgAFqQSgQogMaIABBEGogAkE4akEwEKIDGiAAQegAakEAOgAAIABB5ABqIAM7AQAgACAJNwMICyACQThqIABBCGoiBSABECcgAigCOCIBQQtGDQIgAkHIAmogAkHIAGopAwA3AwAgAkHQAmoiAyACQdAAaikDADcDACACQdgCaiIGIAJB2ABqKQMANwMAIAIgAikDQDcDwAIgAigCPCEEIAUQrgEgAUEKRwRAIAJBuAJqIAYpAwA3AwAgAkGwAmogAykDADcDACACQagCaiACQcgCaikDADcDACACIAIpA8ACNwOgAiACIAQ2ApwCIAIgATYCmAIgAUEBRg0CQeyawABBMhABIQQgAkGYAmoQugELIABBAToAqgEgABDHAgwHC0GAkMAAQSNBhJzAABD3AQALIAJBsAJqKAIAIQEgAkGsAmooAgAhAyACQagCaigCACEEIABBAToAqgEgABDHAiADRQ0FIAIgARAXNgLAAiACIAM2AqQCIAIgAyABQQR0IgVqNgKgAiACIAM2ApwCIAIgBDYCmAIgAUUNBEEAIQQgAkE4akEBciIGQQdqIQcDQCACIANBEGoiATYCnAIgAy0AACIIQQpGDQUgBiADKQABNwAAIAcgA0EIaikAADcAACACIAg6ADggAkE4ahBeIQMgAkHAAmooAgAgBCADEBggBEEBaiEEIAEhAyAFQXBqIgUNAAsMBAsgBkEDOgAAIARBAzoAAEEBDAYLQYCQwABBI0Hkj8AAEPcBAAtBgJDAAEEjQdyawAAQ9wEAC0GAkMAAQSNBlJzAABD3AQALIAJBmAJqELIBIAIoAsACIQUMAQtBISEFIARBJEkNACAEEAALIABBsAFqEJoCIABBAToA7AFBAAsiAQRAQQMhBCAAQQM6AIACDAELIAAQlgIgAEEBOgCAAiACIAU2AiggAkEgNgI4IAJBCGogAEGQBGoiAyACQThqIAJBKGoQhAIgAigCCEUEQCACKAIMIgRBI0sEQCAEEAALIAIoAjgiBEEkTwRAIAQQAAsgAigCKCIEQSRPBEAgBBAACyADKAIAIgNBJE8EQCADEAALQQEhBCAAKAKUBCIDQSRJDQEgAxAADAELQbiAwABBFRCWAwALIAAgBDoAmAQgAkHgAmokACABQQBHC5IMAQV/IwBBkAJrIgMkACABAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQBgQQFrDgQHAAIDAQsACyABIAEpAwA3AwggA0HIAGogAUEQakEoEKIDGiABIAEvAVw7AV4gARARNgI4IAFBOGoiBBDAASAEEMIBIANBpAFqQRk2AgAgA0GcAWpBGjYCACADIAFB3gBqNgKgASADQbSawAA2ApgBIANBGzYClAEgAyABQQhqNgKQASADQQM2AswBIANBBDYCxAEgA0GImsAANgLAASADQQA2ArgBIAMgA0GQAWo2AsgBIANBgAFqIANBuAFqEEEgAUHEAGogA0GIAWooAgA2AgAgASADKQOAATcCPCADQbgBaiADQcgAakEoEKIDGiADQZABaiADQbgBahCBASADKAKQASEFIAMoApQBIgZFDQsgAUHQAGogAygCmAEiBzYCACABQcwAaiAGNgIAIAEgBTYCSCADQZABaiAGIAcQNyADQcABaiIFIANBmAFqKQMANwMAIAMgAykDkAE3A7gBIANB8ABqIANBuAFqEL0BIAUgA0H4AGooAgA2AgAgAyADKQNwNwO4ASADIANBuAFqEIwCNgKQASAEIANBkAFqELABIAMoApABIgVBJE8EQCAFEAALIANBQGsgAUFAaygCACABQcQAaigCACAEEPMBIAMoAkQhBSADKAJADQogASAFNgJUIANBOGoQ7QEgAygCOEUNBiABIAMoAjw2AlggASABQdgAaigCACABQdQAaigCABAKEEg2AmgLIANBMGogAUHoAGoiBCACEI0BIAMoAjAiBkECRg0GIAMoAjQhBSAEEK8BIAYNCCADQShqIAUQ8gEgAygCLCEFIAMoAigNCCABIAU2AmggA0EgaiAEEPYBIAMoAiAhBCABQfQAaiADKAIkIgU2AgAgASAENgJwIAQNASABIAUQSDYCbAsgA0EYaiABQewAaiIEIAIQjQEgAygCGCICQQJGDQEgAygCHCEFIAQQrwEgAg0AIANBEGogBRDxASADKAIUIQQgAygCEEUNAiAEIQULIAEoAmgiAkEkSQ0GIAIQAAwGCyAAQQs2AgBBBAwKCyADQQhqIAQQAiADKAIIIgVFBEAgA0EANgK8AQwECyADKAIMIQIgAyAFNgK8ASADIAI2AsABIAMgAjYCuAEgAyADQbgBahCyAiADQbgBaiADKAIAIAMoAgQQ5QIgAygCvAFFDQMgA0GIAWogA0HAAWoiBigCACICNgIAIAMgAykDuAE3A4ABIANBuAFqIAMoAoQBIAIQmgEgAygCuAEiAkEKRwRAIAMoArwBIQUgA0GQAWogBkEoEKIDGiADQfABaiADQZgBaikDADcDACADQfgBaiADQaABaikDADcDACADQYACaiADQagBaikDADcDACADIAMpA5ABNwPoASADQYABahCaAiAEQSRPBEAgBBAACyABKAJoIgRBJE8EQCAEEAALIAEoAlgiBEEkTwRAIAQQAAsgASgCVCIEQSRPBEAgBBAACyABQcgAahCaAiABQTxqEJoCIAEoAjgiAUEkSQ0JIAEQAAwJCyADIAMpArwBNwOIAiADQYgCahCpASEFIANBgAFqEJoCIARBJE8EQCAEEAALIAEoAmgiAkEkTwRAIAIQAAsgASgCWCICQSRPBEAgAhAACyABKAJUIgJBJE8EQCACEAALIAFByABqEJoCIAFBPGoQmgIgASgCOCIBQSRJDQcgARAADAcLQYCQwABBI0HYmcAAEPcBAAtBoJPAAEErQbyawAAQ9wEACyAAQQs2AgBBAwwGC0Ggk8AAQStBzJrAABD3AQALIAEoAlgiAkEkTwRAIAIQAAsgASgCVCICQSRJDQAgAhAACyABQcgAahCaAgsgAUE8ahCaAiABKAI4IgFBJEkNACABEAALQQohAgsgACAFNgIEIAAgAjYCACAAIAMpA+gBNwMIIABBEGogA0HwAWopAwA3AwAgAEEYaiADQfgBaikDADcDACAAQSBqIANBgAJqKQMANwMAQQELOgBgIANBkAJqJAAL4gsCCn8CfiMAQeACayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0A2AJBAWsOAwcCAQALIAAgAEGoAWpBqAEQogMaCwJAIAAtAKABQQFrDgMFAQACCyAAQQhqIQUgAEGYAWotAABBAWsOAwcAAwILAAsgACgCACEDIAIgACgCBCIENgJQIAIgAzYCTCACIAQ2AkggAkEwaiACQcgAahCyAiACQThqIAIoAjAgAigCNBDlAiACQdQBaiACQUBrKAIANgIAIAIgAikDODcCzAEgAEEIaiIFIAJByABqQZABEKIDGiAAQZgBakEAOgAACyAAQYgBaiAAQZQBaigCADYCACAAQYABaiIDIABBjAFqKQIANwIAQbDrwABBsOvAACkDACIMQgF8NwMAIAJBhAJqIAMQ0QEgAEEYakEJNgIAIAAgDDcDCCAAQegAakEAOgAAIABBHGogAikChAI3AgAgAEEkaiACQYwCaigCADYCACAAQeQAakG468AALwEAOwEACyACQcgAaiAFIAEQJyACKAJIQQtGDQIgAkHYAWogAkHIAGpBKBCiAxogBRCuAQJAAkAgAigC2AEiB0F4ag4DAQYABgsgAigC3AEhAUH868AAKAIABEAQ4wILQfzrwABBADYCACABQSRJDQggARAADAgLIAJB4AFqKAIAIQEgAkHkAWooAgAhAyACKALcASEGIAJBIGoQ5wEgAikDICEMIAIpAyghDSACQcgAaiADEGogAkGoAmoiCCACQdAAaiIJKQMANwMAIAIgAikDSDcDoAIgAiANNwOYAiACIAw3A5ACIAIgATYCVCACIAEgA0EYbCIEajYCUCACIAE2AkwgAiAGNgJIIANFDQUgAkHYAmohBgNAIAIgAUEYaiIDNgJMIAEoAgQiCkUNBiABKAIAIQsgAiABKAIINgLIAiACIAo2AsQCIAIgCzYCwAIgBiABQRRqKAIANgIAIAIgASkCDDcD0AIgAkGwAmogAkGQAmogAkHAAmogAkHQAmoQSyACKAK0AgRAIAJBsAJqEKYCIAJBsAJqEMoCCyADIQEgBEFoaiIEDQALDAULQYCQwABBI0G0nMAAEPcBAAtBgJDAAEEjQeSPwAAQ9wEAC0EDIQQgAEEDOgCgASAAQQM6AJgBQQEhAQwFC0GAkMAAQSNBpJzAABD3AQALQfzrwAAoAgAEQBDjAgtB/OvAAEEANgIAQQEhAQwBCyACQcgAahC8ASACQeAAaiAIKQMANwMAIAJB2ABqIgMgAkGgAmopAwA3AwAgCSACQZgCaikDADcDACACIAIpA5ACNwNIQQAhAUH8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f0wNAiACQQEQ9wIiAUUNAQsgA0EANgJAIAMgATYCPCADIAI2AjggBCACSwR/IANBOGpBACAEEIUBIAMoAkAhBSADKAI8BSABCyAFaiAGIAQQogMaIAMgBCAFaiICNgJAIAMoAjggAmtBAk0EQCADQThqIAJBAxCFASADKAJAIQILIAMoAjwiASACaiIEQazNwAAvAAAiBTsAACAEQQJqQa7NwAAtAAAiBjoAACADIAJBA2oiAjYCQCADIAMpAzA3A0ggA0HQAGogA0HIAGoQPiADKAJQBEADQCADQegAaiADQdgAaikDADcDACADIAMpA1A3A2AgA0EQaiADQeAAahCdAyADKAIQIQcgAygCOCACayADKAIUIgRJBEAgA0E4aiACIAQQhQEgAygCQCECIAMoAjwhAQsgASACaiAHIAQQogMaIAMgAiAEaiICNgJAIANBCGogA0HgAGoQngMgAygCDARAIAMoAjggAmtBAk0EQCADQThqIAJBAxCFASADKAJAIQILIAMoAjwiASACaiIEIAU7AAAgBEECaiAGOgAAIAMgAkEDaiICNgJACyADQdAAaiADQcgAahA+IAMoAlANAAsLIAAgAykDODcCBCAAQQE2AgAgAEEMaiADQUBrKAIANgIADAMLIAJBARCbAwALEJgCAAsgAEH4y8AANgIEIABBADYCACAAQQhqQQA2AgALIANB8ABqJAAL0AQCBH8GfiAAIAAoAjggAmo2AjgCQCAAAn8CQAJAAkAgACgCPCIFRQRADAELAn4gAkEIIAVrIgQgAiAESRsiBkEDTQRAQgAMAQtBBCEDIAE1AAALIQcgACAAKQMwIANBAXIgBkkEQCABIANqMwAAIANBA3SthiAHhCEHIANBAnIhAwsgAyAGSQR+IAEgA2oxAAAgA0EDdK2GIAeEBSAHCyAFQQN0QThxrYaEIgc3AzAgBCACSw0BIAAgACkDGCAHhSIIIAApAwh8IgkgACkDECIKQg2JIAogACkDAHwiCoUiC3wiDCALQhGJhTcDECAAIAxCIIk3AwggACAJIAhCEImFIghCFYkgCCAKQiCJfCIIhTcDGCAAIAcgCIU3AwALIAIgBGsiAkEHcSEDIAQgAkF4cSICSQRAIAApAwghCCAAKQMQIQcgACkDACEJIAApAxghCgNAIAggASAEaikAACILIAqFIgh8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CGpBADYCACAAQQE2AgAL3AEBAX8jAEEgayICJAACfwJAAkACQCAALQAAQQFrDgIBAgALIAJBFGpBATYCACACQRxqQQA2AgAgAkGMncAANgIQIAJB5JzAADYCGCACQQA2AgggASACQQhqENgBDAILIAJBFGpBATYCACACQRxqQQA2AgAgAkGAncAANgIQIAJB5JzAADYCGCACQQA2AgggASACQQhqENgBDAELIAJBFGpBATYCACACQRxqQQA2AgAgAkHwnMAANgIQIAJB5JzAADYCGCACQQA2AgggASACQQhqENgBCyACQSBqJAALugECAn8BfiMAQRBrIgQkACAEQQhqIAEgAiADEIYBAkACQAJ/IAQtAAhBBkYEQCAEKAIMDAELIAQpAwgiBkL/AYNCBlINASAGQiCIpwshBSAEQQhqIAFBDGogAiADEHcCQAJ/IAQtAAhBBkYEQCAEKAIMDAELIAQpAwgiBkL/AYNCBlINASAGQiCIpwshAyAAQQY6AAAgACADIAVqNgIEDAILIAAgBjcCAAwBCyAAIAY3AgALIARBEGokAAusAQEEfwJAIAAoAgwiAkUNACAAKAIEIQMgACgCACIBIAAoAggiAEEAIAEgACABSRtrIgAgAmogAiABIABrIgFLGyAARwRAIAMgAEECdGohACACIAEgAiABSRtBAnQhBANAIAAQtgEgAEEEaiEAIARBfGoiBA0ACwsgAiABTQ0AIAJBAnQgAiABIAIgAUkbQQJ0ayEAA0AgAxC2ASADQQRqIQMgAEF8aiIADQALCwurAQEDfwJAIAJBD00EQCAAIQMMAQsgAEEAIABrQQNxIgRqIQUgBARAIAAhAwNAIAMgAToAACADQQFqIgMgBUkNAAsLIAUgAiAEayICQXxxIgRqIQMgBEEBTgRAIAFB/wFxQYGChAhsIQQDQCAFIAQ2AgAgBUEEaiIFIANJDQALCyACQQNxIQILIAIEQCACIANqIQIDQCADIAE6AAAgA0EBaiIDIAJJDQALCyAAC64BAQF/IAACfwJAAn8CQCACBEACQAJAAkAgAUEATgRAIAMoAghFDQIgAygCBCIEDQEgAQ0DDAULIABBCGpBADYCAAwGCyADKAIAIAQgAiABEOgCDAQLIAFFDQILIAEgAhD3AgwCCyAAIAE2AgQgAEEIakEANgIADAILIAILIgME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CyAAQQRqIgEQpwEgARDKAgwBCyAAQQRqIgEQmwIgARDKAgsgAEEoaiEAIAJBWGoiAg0ACwsLmwEBA38jAEEQayIFJAAgAygCCCECIAVBCGogARDwASADKAIEIgQgAkkEQCACIARB4IzAABCGAwALIAMoAgAgAmogBSgCCCAEIAJrIgQgBSgCDCIGIAQgBkkbIgQQogMaIAMgAiAEaiICNgIIIABBBDoAACABIAEpAwAgBK18NwMAIAMgAygCDCIAIAIgACACSxs2AgwgBUEQaiQAC5gBAQN/IwBBQGoiASQAIAFBADYCCCABQoCAgIAQNwMAIAFBEGogARC+AiAAIAFBEGoQeEUEQCABQRhqIAFBCGooAgA2AgAgASABKQMANwMQIAFBEGoQ2wIgAC0AACIDQQRPQQAgA0EGcUEERhtFBEAgABCHAgsgAUFAayQADwtB/JHAAEE3IAFBOGpBtJLAAEGQk8AAELQBAAuYAQEDfyMAQUBqIgEkACABQQA2AgggAUKAgICAEDcDACABQRBqIAEQvgIgACABQRBqEHlFBEAgAUEYaiABQQhqKAIANgIAIAEgASkDADcDECABQRBqENsCIAAtAAAiA0EET0EAIANBBnFBBEYbRQRAIAAQhwILIAFBQGskAA8LQfyRwABBNyABQThqQbSSwABBkJPAABC0AQALigEBBX8gACAAKAIAIgEQgwIgACgCCCIFIAEgACgCDCICa0sEQCABIAVrIgMgAiADayICS0EAIAAoAgAiBCABayACTxtFBEAgACgCBCIBIAQgA2siBEECdGogASAFQQJ0aiADQQJ0EKEDIAAgBDYCCA8LIAAoAgQiACABQQJ0aiAAIAJBAnQQogMaCwu1AQEDfyMAQRBrIgEkACAAKAIAIgJBFGooAgAhAwJAAn8CQAJAIAJBDGooAgAOAgABAwsgAw0CQQAhAkGEvsAADAELIAMNASACKAIIIgMoAgQhAiADKAIACyEDIAEgAjYCBCABIAM2AgAgAUGkxsAAIAAoAgQiASgCCCAAKAIIIAEtABAQiwEACyABQQA2AgQgASACNgIMIAFBkMbAACAAKAIEIgEoAgggACgCCCABLQAQEIsBAAuXAQECfyMAQRBrIgEkACAAKAIARQRAIABBfzYCACAAAn9BACAAKAIEIgJFDQAaIABBADoAFCABIABB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AEHY7MAAKQMAUARAQejswAACfgJAIABFDQAgACkDACAAQgA3AwBCAVINACAAKQMIIQIgACkDEAwBCyABQgI3AwggAUIBNwMAIAEpAwAhAiABKQMICzcDAEHg7MAAIAI3AwBB2OzAAEIBNwMACyABQRBqJABB4OzAAAt+AQF/IwBBEGsiASQAIAFB7rHAAEEEEAE2AgggAUGEssAAQQQQATYCDCABIAAgAUEIaiABQQxqEOIBIAEoAgwiAEEkTwRAIAAQAAsgASgCCCIAQSRPBEAgABAACwJAIAEtAABFDQAgASgCBCIAQSRJDQAgABAACyABQRBqJAALeQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBFGpBAjYCACADQRxqQQI2AgAgA0EsakHrADYCACADQbTOwAA2AhAgA0EANgIIIANB6wA2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEKgCAAt5AQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakECNgIAIANBHGpBAjYCACADQSxqQesANgIAIANB5NLAADYCECADQQA2AgggA0HrADYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQqAIAC3kBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRRqQQI2AgAgA0EcakECNgIAIANBLGpB6wA2AgAgA0GE08AANgIQIANBADYCCCADQesANgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhCoAgALeQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBFGpBAjYCACADQRxqQQI2AgAgA0EsakHrADYCACADQbjTwAA2AhAgA0EANgIIIANB6wA2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEKgCAAtzAQR/IwBBEGsiASQAIAAoAggiAiAAKAIEIgNHBEAgAiADa0ECdkECdCECA0AgAygCACIEQSRPBEAgBBAACyADQQRqIQMgAkF8aiICDQALCyABIAAoAgw2AgwgASAAKAIANgIIIAFBCGoQmQIgAUEQaiQAC2wBAX8jAEEwayIDJAAgAyABNgIoIAMgADYCJCADIAE2AiAgA0EIaiADQSBqELICIANBEGogAygCCCADKAIMEOUCIANBKGogA0EYaigCADYCACADIAMpAxA3AyAgA0EgaiACEM8BIANBMGokAAtpAQF/IwBBMGsiAiQAIAIgATYCKCACIAA2AiQgAiABNgIgIAJBCGogAkEgahCyAiACQRBqIAIoAgggAigCDBDlAiACQShqIAJBGGooAgA2AgAgAiACKQMQNwMgIAJBIGoQZyACQTBqJAALcgEDfyMAQSBrIgIkAAJ/QQEgACABEFwNABogASgCBCEDIAEoAgAhBCACQQA2AhwgAkGwzcAANgIYIAJBATYCFCACQeDNwAA2AhAgAkEANgIIQQEgBCADIAJBCGoQOg0AGiAAQQRqIAEQXAsgAkEgaiQAC3cBAX8CQAJAIABFDQAgACgCACEBIABBADYCACAAKAIEIQACQCABDgIBAgALIABBJEkNACAAEAALEFYhAAtBnOzAACgCACEBQZzswAAgADYCAEGY7MAAKAIAQZjswABBATYCAEUgAUEkSXJFBEAgARAAC0Gc7MAAC3wBA38gACAAEKoDIgBBCBDmAiAAayICEKgDIQBBlPDAACABIAJrIgE2AgBBnPDAACAANgIAIAAgAUEBcjYCBEEIQQgQ5gIhAkEUQQgQ5gIhA0EQQQgQ5gIhBCAAIAEQqAMgBCADIAJBCGtqajYCBEGo8MAAQYCAgAE2AgALcwAjAEEwayIBJABBgOzAAC0AAARAIAFBFGpBAjYCACABQRxqQQE2AgAgAUH8xMAANgIQIAFBADYCCCABQesANgIkIAEgADYCLCABIAFBIGo2AhggASABQSxqNgIgIAFBCGpBpMXAABCoAgALIAFBMGokAAt2AQF/IAAtAAQhASAALQAFBEAgAUH/AXEhASAAAn9BASABDQAaIAAoAgAiAS0AGEEEcUUEQCABKAIAQZfPwABBAiABKAIEKAIMEQUADAELIAEoAgBBls/AAEEBIAEoAgQoAgwRBQALIgE6AAQLIAFB/wFxQQBHC2kBAX8jAEEgayICJABB3OvAACgCAEUEQEGgk8AAQStB5JvAABD3AQALIAJBGGogAEEIaigCADYCACACIAApAgA3AxAgAkEIaiACQRBqIAEQVyACKAIIIQAgAigCDCACQSBqJABBISAAGwtrAQJ/IwBBIGsiAiQAIAJBCGogASgCABACAkAgAigCCCIDBEAgAigCDCEBIAIgAzYCFCACIAE2AhggAiABNgIQIAIgAkEQahCyAiAAIAIoAgAgAigCBBDlAgwBCyAAQQA2AgQLIAJBIGokAAtrAQJ/IAFBBGooAgAhAwJAAkACQCABQQhqKAIAIgFFBEBBASECDAELIAFBf0wNASABQQEQ9wIiAkUNAgsgAiADIAEQogMhAiAAIAE2AgggACACNgIEIAAgATYCAA8LEJgCAAsgAUEBEJsDAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQaCDwAAgAkEIahA6IAJBIGokAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQYiDwAAgAkEIahA6IAJBIGokAAthAQN/IAAgARDLAiAAKAIEIgQgACgCCCICaiEDAkACQCABQQJPBEAgA0EAIAFBf2oiARCjAxogBCABIAJqIgJqIQMMAQsgAUUNAQsgA0EAOgAAIAJBAWohAgsgACACNgIIC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpB7L3AACACQQhqEDogAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpB4MvAACACQQhqEDogAkEgaiQAC1kBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBqNHAACACQQhqEDogAkEgaiQAC1MBAn8jAEEgayICJAAgACgCBCEDIAAoAgAgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAyACQQhqEDogAkEgaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBiIPAACACQQhqEDogAkEgaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBoIPAACACQQhqEDogAkEgaiQAC44BAgF/An4jAEEQayIBJABBuOvAACAAOwEAQbDrwABCADcDACABEOcBIAEpAwghAiABKQMAIQNB3OvAACgCAARAQdDrwAAoAgAEQBCbARCrAgsLQdzrwABBsJnAADYCAEHQ68AAQgA3AwBBwOvAACADNwMAQcjrwAAgAjcDAEHY68AAQQA2AgAgAUEQaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBqNHAACACQQhqEDogAkEgaiQAC2EBAX8jAEFAaiIBJAAgAUEBOgAPIABBADYCCCAAQoCAgIAQNwIAIAFBEGogABC+AiABQQ9qIAFBEGoQkwEEQEH8kcAAQTcgAUE4akG0ksAAQZCTwAAQtAEACyABQUBrJAALSAECfwJAIAFFBEBBASECDAELIAFBAE4EQCABIAFBf3NBH3YiAxD3AiICDQEgASADEJsDAAsQmAIACyAAIAI2AgQgACABNgIAC2IBAX8jAEEgayIDJAAgACgCACADQQhqIAEgAhAwIAMoAggEQCADIAMpAgw3AxhB9K7AAEErIANBGGpBoK/AAEGUsMAAELQBAAsgAygCDCADQRBqKAIAEJcCIANBIGokAEEAC2kBA38jAEEQayIBJAACQEEAQeC4wAAoAgARBgAiAgRAIAAoAgAoAgAiACAAKAIAQQFqIgM2AgAgA0UNASACIAAQtwEgAUEQaiQADwtBtLnAAEHGACABQQhqQfy5wABB3LrAABC0AQALAAtWAQJ/AkAgAEEDcEEDc0EDcCIERQRADAELQQAhAANAIAAgAkcEQCAAIAFqQT06AAAgAEEBaiEDQQEhACADIARJDQEMAgsLIAIgAkG0n8AAEMMBAAsgAwtaAQF/IwBBEGsiBCQAIAEoAgAgAigCACADKAIAECAhASAEQQhqEL0CIAACfyAEKAIIRQRAIAAgAUEARzoAAUEADAELIAAgBCgCDDYCBEEBCzoAACAEQRBqJAALVAEBfyMAQTBrIgEkACABQRBqQcibwABBBRCFAiABQShqIAFBGGooAgA2AgAgASABKQMQNwMgIAFBCGogAUEgahCyAiAAIAEpAwg3AwAgAUEwaiQAC1kBAn8gACgCDCICIAAoAgAiA0YEQCAAEKsBIAAoAgwhAiAAKAIAIQMLIAAoAgQgACgCCCACaiICQQAgAyACIANJG2tBAnRqIAE2AgAgACAAKAIMQQFqNgIMC0cBAn8CQCAAKAIAIgJFDQAgAiAAQRRqKAIAIgEgADUCECACQQFqrX6nakF/akEAIAFrcSIBakEJakUNACAAKAIMIAFrECsLC2ABAn8jAEEQayIBJAAgAUGwh8AAQRUQhQJBDEEEEPcCIgJFBEBBDEEEEJsDAAsgAiABKQMANwIAIAJBCGogAUEIaigCADYCACAAQeCAwAA2AgQgACACNgIAIAFBEGokAAtkAgJ/AX4jAEEQayICJABBAEGkkMAAKAIAEQYAIgEEQCABIAEpAwAiA0IBfDcDACAAIAEpAwg3AwggACADNwMAIAJBEGokAA8LQaiQwABBxgAgAkEIakHwkMAAQdCRwAAQtAEAC0oBAX8jAEEgayIAJAAgAEEUakEBNgIAIABBHGpBADYCACAAQfjKwAA2AhAgAEHcysAANgIYIABBADYCCCAAQQhqQdDLwAAQqAIAC00BAX8jAEEwayIBJAAgAUEQahDdASABQShqIAFBGGooAgA2AgAgASABKQMQNwMgIAFBCGogAUEgahCyAiAAIAEpAwg3AwAgAUEwaiQAC2cBAX8jAEEgayIDJAAgAyACNgIMIANBEGoiAkGAAjsBBCACQQZqQQA6AAAgAkH9BTYCACADQRBqIAAgASADQQxqECUEQEGkmMAAQSIgA0EYakHMk8AAQaCZwAAQtAEACyADQSBqJAALTAECfyAAKAIIIgEEQCAAKAIEIQAgAUEEdCEBA0AgAC0AACICQX5qQQdJIAJFckUEQCAAQQRqEJoCCyAAQRBqIQAgAUFwaiIBDQALCwtWAQJ/IAEoAgAhAiABQQA2AgACQCACBEAgASgCBCEDQQhBBBD3AiIBRQ0BIAEgAzYCBCABIAI2AgAgAEHUscAANgIEIAAgATYCAA8LAAtBCEEEEJsDAAtRAQN/IwBBEGsiASQAIAFBCGoQjwIQtAIgASgCDCECAkAgASgCCEUEQEEBIQMMAQsgAkEkSQ0AIAIQAAsgACACNgIEIAAgAzYCACABQRBqJAALSwECfyMAQRBrIgEkACABIABBeGo2AgggAC0AFCAAQQE6ABQgASABQQhqNgIMQQFxRQRAIAFBDGoQ4AELIAFBCGoQtgEgAUEQaiQAC18BA38jAEEQayIBJAACQCAAKAIMIgIEQCAAKAIIIgNFDQEgASACNgIIIAEgADYCBCABIAM2AgAgARC2AgALQYS+wABBK0HgxcAAEPcBAAtBhL7AAEErQdDFwAAQ9wEAC1ACAn8CfiABQRBqKAIAIgIgASkDACIEIAKtIgUgBCAFVBunIgNJBEAgAyACQfSJwAAQhgMACyAAIAIgA2s2AgQgACABQQxqKAIAIANqNgIAC0gBA38jAEEQayICJAAgAiABNgIMQQEhASACQQxqKAIAEBJBAUYgAigCDCEDBEBBACEBCyAAIAM2AgQgACABNgIAIAJBEGokAAtIAQN/IwBBEGsiAiQAIAIgATYCDEEBIQEgAkEMaigCABALQQBHIAIoAgwhAwRAQQAhAQsgACADNgIEIAAgATYCACACQRBqJAALSgEBfyMAQRBrIgQkACABIAIgAygCABANIQEgBEEIahC9AiAAAn8gASAEKAIIIgFFDQAaIAQoAgwLNgIEIAAgATYCACAEQRBqJAALWAECfyMAQRBrIgEkACABIAA2AgRBAEHguMAAKAIAEQYAIgIEQCACIAAQtwEgAUEQaiQADwsgAUEEahC2AUG0ucAAQcYAIAFBCGpB/LnAAEHcusAAELQBAAtYAQF/IwBBIGsiACQAIABBDGpBATYCACAAQRRqQQE2AgAgAEGIlMAANgIIIABBADYCACAAQRo2AhwgAEGsl8AANgIYIAAgAEEYajYCECAAQbSXwAAQqAIAC0YBAX8jAEEQayICJAAgASgCABAMIQEgAkEIahC9AiAAAn8gASACKAIIIgFFDQAaIAIoAgwLNgIEIAAgATYCACACQRBqJAALUgEBfyMAQSBrIgMkACADQQxqQQE2AgAgA0EUakEANgIAIANBsM3AADYCECADQQA2AgAgAyABNgIcIAMgADYCGCADIANBGGo2AgggAyACEKgCAAtTAQF/IwBBIGsiAiQAIAJBDGpBATYCACACQRRqQQE2AgAgAkHUzsAANgIIIAJBADYCACACQf8ANgIcIAIgADYCGCACIAJBGGo2AhAgAiABEKgCAAtDAQN/AkAgAkUNAANAIAAtAAAiBCABLQAAIgVGBEAgAEEBaiEAIAFBAWohASACQX9qIgINAQwCCwsgBCAFayEDCyADC0gBAX8jAEEQayICJAAgAkEIaiAAIAEQfwJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCbAwALIAJBEGokAA8LEJgCAAtIAQF/IwBBEGsiAiQAIAJBCGogACABEHwCQCACKAIMIgBBgYCAgHhHBEAgAEUNASACKAIIIAAQmwMACyACQRBqJAAPCxCYAgALSAEBfyMAQRBrIgIkACACQQhqIAAgARB+AkAgAigCDCIAQYGAgIB4RwRAIABFDQEgAigCCCAAEJsDAAsgAkEQaiQADwsQmAIAC0sBAX8jAEEQayICJAAgAkEIaiAAIAFBARCMAQJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCbAwALIAJBEGokAA8LEJgCAAtIAQF/IwBBEGsiAiQAIAJBCGogACABEH0CQCACKAIMIgBBgYCAgHhHBEAgAEUNASACKAIIIAAQmwMACyACQRBqJAAPCxCYAgALSwEBfyMAQRBrIgMkACADQQhqIAAgASACEIwBAkAgAygCDCIAQYGAgIB4RwRAIABFDQEgAygCCCAAEJsDAAsgA0EQaiQADwsQmAIAC00BAn8jAEEQayICJAAgACgCACEDIABBADYCACADRQRAQay2wABBHBCWAwALIAIgAzYCDCADQQhqQQEgARB6IAJBDGoQrwEgAkEQaiQAC00BAn8jAEEQayICJAAgACgCACEDIABBADYCACADRQRAQay2wABBHBCWAwALIAIgAzYCDCADQQhqQQAgARB6IAJBDGoQrwEgAkEQaiQAC0MBAn8jAEEQayIBJAAgASAAQXhqNgIIIAAtABQgAEEBOgAUIAEgAUEIajYCDEEBcUUEQCABQQxqEOABCyABQRBqJAALSQEBfyMAQRBrIgIkACACQQhqIAAgARCAAQJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCbAwALIAJBEGokAA8LEJgCAAtOAQF/IwBBEGsiBCQAIAEoAgAgAigCACADKAIAEBkhASAEQQhqEL0CIAQoAgwhAiAAIAQoAggiAzYCACAAIAIgASADGzYCBCAEQRBqJAALSQEDfyMAQRBrIgMkACADQQhqIAIQ3gEgAygCCCEEIAAgAygCDCIFNgIEIAAgBDYCACAFIAEgAhCiAxogACACNgIIIANBEGokAAtQAQF/QSBBBBD3AiIBRQRAQSBBBBCbAwALIAFCgYCAgBA3AgAgASAAKQIANwIIIAFBEGogAEEIaikCADcCACABQRhqIABBEGopAgA3AgAgAQtFAQJ/IAAtAABBA0YEQCAAKAIEIgEoAgAgASgCBCgCABECACABKAIEIgIoAgQEQCACKAIIGiABKAIAECsLIAAoAgQQKwsLSgEBfyMAQbABayIBJAAgASAAQagBEKIDIgAgADYCrAEgAEGsAWpB2I7AABCnAyAALQCgAUEDRgRAIABBCGoQrAILIABBsAFqJAALSAEBfyAAKAIAIgEEQCABIAAoAgQoAgARAgAgACgCBCIBKAIEBEAgASgCCBogACgCABArCyAAKAIIIABBDGooAgAoAgwRAgALC0gBAX8gACgCACIAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhCEASAAKAIIIQMLIAAoAgQgA2ogASACEKIDGiAAIAIgA2o2AghBAAtIAQF/IAAoAgAiACgCACAAKAIIIgNrIAJJBEAgACADIAIQhQEgACgCCCEDCyAAKAIEIANqIAEgAhCiAxogACACIANqNgIIQQALPgECfyMAQRBrIgEkACABQQhqIABBCGooAgAiAjYCACABIAApAgA3AwAgASgCBCACEAEgARCaAiABQRBqJAALQAECfyAAKAIIIgEEQCAAKAIEIQAgAUECdCEBA0AgACgCACICQSRPBEAgAhAACyAAQQRqIQAgAUF8aiIBDQALCwtPAQF/IAAoAgAiACAAKAIAQX9qIgE2AgACQCABDQAgAEEMaiIBEJUBIAEoAgAEQCABKAIEECsLIAAgACgCBEF/aiIBNgIEIAENACAAECsLC0kBAn8jAEEQayIBJABBAEHsusAAKAIAEQYAIgAEQCAAKAIAEAMgAUEQaiQADwtBq7vAAEHGACABQQhqQfS7wABB1LzAABC0AQALRwEBfyMAQZACayIBJAAgASAAQYgCEKIDIgAgADYCjAIgAEGMAmpB7I7AABCnAyAALQCAAkEDRgRAIAAQlgILIABBkAJqJAALRgEBfyMAQZACayIEJAAgBEEAOgCIAiAE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NEEEEPcCIgFFBEBBNEEEEJsDAAsgAUKBgICAEDcCACABQQhqIABBLBCiAxogAQsyAQF/IAAgASgCACABKAIIIgJLBH8gASACEJ4CIAEoAggFIAILNgIEIAAgASgCBDYCAAsyAQF/IAAgASgCACABKAIIIgJLBH8gASACEJ8CIAEoAggFIAILNgIEIAAgASgCBDYCAAsuAQF/IAEoAgAiAgRAIABBATYCCCAAIAI2AgQgACABKAIENgIADwsgAEEANgIICyMBAX8Cf0EBIAEQCUUNABpBAAshAiAAIAE2AgQgACACNgIACzABAX8gAUF4aiICIAIoAgBBAWoiAjYCACACRQRAAAsgAEHkuMAANgIEIAAgATYCAAstAQF/IwBBEGsiASQAIAFBCGogAEEIaigCADYCACABIAApAgA3AwAgARCsAQALIwAgACgCAEFwaiIAEJoCIABBDGooAgAiAEEkTwRAIAAQAAsLMQEBf0EEQQQQ9wIiAkUEQEEEQQQQmwMACyACIAE2AgAgAEGEtsAANgIEIAAgAjYCAAsxAQF/QQRBBBD3AiICRQRAQQRBBBCbAwALIAIgATYCACAAQZi2wAA2AgQgACACNgIACycAIAAgACgCBEEBcSABckECcjYCBCAAIAFqIgAgACgCBEEBcjYCBAsmAQF/IwBBEGsiASQAIAEgAEF4ajYCDCABQQxqELYBIAFBEGokAAsmAAJAIABFDQAgACABKAIAEQIAIAEoAgRFDQAgASgCCBogABArCws6AQJ/QbjswAAtAAAhAUG47MAAQQA6AABBvOzAACgCACECQbzswABBADYCACAAIAI2AgQgACABNgIACzQAIABBAzoAICAAQoCAgICABDcCGCAAQQA2AhAgAEEANgIIIABB5JHAADYCBCAAIAE2AgALMgEBfyABKAIAQa++wABBCyABKAIEKAIMEQUAIQIgAEEAOgAFIAAgAjoABCAAIAE2AgALIAEBfwJAIABBBGooAgAiAUUNACAAKAIARQ0AIAEQKwsLJgEBfyMAQRBrIgMkACADIAE2AgwgAyAANgIIIANBCGogAhD4AQALEwAgACABKQAANwABIABBADoAAAsmAQF/IABBB2oiASAASQRAQaSwwABBM0GwscAAEIoDAAsgAUEDdgsjAAJAIAFB/P///wdNBEAgACABQQQgAhDoAiIADQELAAsgAAsjACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAseACAAKAIAIgCtQgAgAKx9IABBf0oiABsgACABEFoLKgACQAJAAkAgAC0AqgEOBAACAgECCyAAQYABahC6AQ8LIABBCGoQrgELCyUAIABFBEBB+7rAAEEwEJYDAAsgACACIAMgBCAFIAEoAhARCwALHQAgACgCACgCACABKAIMQQAgAmtBGGxqQWhqEEMLEQAgACgCAARAIAAoAgQQKwsLIAEBfyAAKAIAIAAoAggiAmsgAUkEQCAAIAIgARD/AQsLIwAgAEUEQEH7usAAQTAQlgMACyAAIAIgAyAEIAEoAhARCgALIwAgAEUEQEH7usAAQTAQlgMACyAAIAIgAyAEIAEoAhARBAALIwAgAEUEQEH7usAAQTAQlgMACyAAIAIgAyAEIAEoAhARFQALIwAgAEUEQEH7usAAQTAQlgMACyAAIAIgAyAEIAEoAhARDgALIwAgAEUEQEH7usAAQTAQlgMACyAAIAIgAyAEIAEoAhARFAALFwAgASADRgR/IAAgAiABEPkBRQVBAAsLHgAgACABQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyEAIABFBEBB+7rAAEEwEJYDAAsgACACIAMgASgCEBEDAAsUACAAKAIABEAgAEEEaigCABArCwsaACAAKAIAKAIAIAEoAgwgAkEEdGtBcGoQQwsdACABKAIARQRAAAsgAEHUscAANgIEIAAgATYCAAsfACAARQRAQcCzwABBMBCWAwALIAAgAiABKAIQEQAACx8AIABFBEBBhLnAAEEwEJYDAAsgACACIAEoAhARAAALHwAgAEUEQEH7usAAQTAQlgMACyAAIAIgASgCEBEBAAsXACAAKAIABEAgABCpAiAAQQxqEKkCCwsfAQF/IAAoAgQgACgCCBABIAAoAgAEQCAAKAIEECsLCx4BAX9BnOzAACEBQZjswAAoAgAEfyABBSAAEMsBCwsZAQF/IAAoAhAiAQR/IAEFIABBFGooAgALCxkAIAEgAiADEJcCIABBBDoAACAAIAM2AgQLFwAgAEEEaigCACAAQQhqKAIAIAEQnAMLEgBBAEEZIABBAXZrIABBH0YbCxYAIAAgAUEBcjYCBCAAIAFqIAE2AgALFgAgAEEEaigCACAAQQhqKAIAIAEQLwsTAEHw68AAKAIABEAQmQEQpAILCxcAQYjswAAoAgBFBEAgABBvC0GE7MAACxcAIAAgAjYCCCAAIAE2AgQgACACNgIACxAAIAAgAWpBf2pBACABa3ELEgAgAC0AAEEERwRAIAAQhwILCwwAIAAgASACIAMQLgsLACABBEAgABArCwsPACAAQQF0IgBBACAAa3ILGQAgASgCAEHozcAAQQsgASgCBCgCDBEFAAsZACABKAIAQfPNwABBDiABKAIEKAIMEQUACxkAIAEoAgBB/OPAAEEFIAEoAgQoAgwRBQALEwAgACgCACgCCCABIAIQlwJBAAsSACABIAIgAxCXAiAAQQQ6AAALCgAgAEEIahCaAgsPACAAKAIABEAgABCvAQsLFAAgACgCACABIAAoAgQoAgwRAQALDwAgACABIAIgAyAEECkACw4AIAAoAgAgARBwGkEACxAAIAAoAgAgASACEJcCQQALEAAgACgCCCABIAIQlwJBAAsIACAAIAEQSQsRACAAKAIAIAAoAgQgARCcAwsQACAAIAI2AgQgACABNgIACxYAQbzswAAgADYCAEG47MAAQQE6AAALEwAgAEGAxsAANgIEIAAgATYCAAsNACAALQAEQQJxQQF2Cw8AIAAgAUEEaikCADcDAAsQACABIAAoAgAgACgCBBAsCw0AIAAgASACEJcCQQALCgBBACAAayAAcQsLACAALQAEQQNxRQsMACAAIAFBA3I2AgQLDQAgACgCACAAKAIEagsNACAAKAIAIAEQWEEACw4AIAAoAgAaA0AMAAsACwwAIAAgASACEMQBAAsMACAAIAEgAhDFAQALDAAgACABIAIQxgEACw0AIAA1AgBBASABEFoLDAAgACABIAIQwQIACw0AIAAoAgAgASACEEcLDQAgACkDAEEBIAEQWgsNACAAMwEAQQEgARBaCw4AIAAoAgAtAAAgARBdCwsAIAAjAGokACMACwcAIAAQmgILCgAgACABIAIQOwsLACAAIAIgARChAQsNACABQeCRwABBAhAsCwsAIAAoAgAgARBKCwsAIAAgAUHYABAiCwkAIAAgARAhAAsKACAAKAIEQXhxCwoAIAAoAgRBAXELCgAgACgCDEEBcQsKACAAKAIMQQF2CxoAIAAgAUHA7MAAKAIAIgBB7AAgABsRAAAACwoAIAIgACABECwLDAAgACABKQIANwMACwwAIAAgASkCCDcDAAsNACABQfzRwABBAhAsCwsAIAAoAgAgARBcCwoAIAAgASACEDULCgAgACABIAIQWQsLACAAIAEgAhCWAQsHACAAEMEBCwkAIABBBDoAAAsJACAAQQA2AgALCAAgACABEBoLBwAgACABagsHACAAIAFrCwcAIABBCGoLBwAgAEF4agsHACAAENsBCwcAIAAQjgILBABBAQsNAEKRuN6i/Jvrr/sACw0AQsi14M/KhtvTiX8LDQBC54bFsIye5t3IAAsMAELJ4Nbe5qrapDkLAwABCwMAAQsL/GoFAEGAgMAAC/EPAQAAAAQAAAAEAAAAAgAAAAMAAAADAAAAAQAAAAQAAAAEAAAABAAAAAUAAAAFAAAA//////////9gdW53cmFwX3Rocm93YCBmYWlsZWQAAAAGAAAADAAAAAQAAAAHAAAABgAAAAwAAAAEAAAACAAAAAcAAABQABAACQAAAAoAAAALAAAACQAAAAwAAAAvcnVzdGMvMDQ0MmZiYWJlMjRlYzQzNjM2YTgwYWQxZjQwYTBhZDkyYTJlMzhkZi9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAAAAjAAQAEkAAABTAQAAGAAAAHN0cmVhbSBkaWQgbm90IGNvbnRhaW4gdmFsaWQgVVRGLTgAAOgAEAAiAAAAFQAAAC9ydXN0Yy8wNDQyZmJhYmUyNGVjNDM2MzZhODBhZDFmNDBhMGFkOTJhMmUzOGRmL2xpYnJhcnkvc3RkL3NyYy9pby9yZWFkYnVmLnJzAAAAGAEQAE0AAABjAAAANgAAABgBEABNAAAAywAAADYAAAANAAAABAAAAAQAAAAOAAAADwAAABAAAAANAAAABAAAAAQAAAARAAAAEgAAABMAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAA0AAAAAAAAAAQAAABQAAAAvaG9tZS9uZ25pdXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMC9zcmMvY2h1bmtlZF9lbmNvZGVyLnJzAAAA9AEQAGEAAAAtAAAAGgAAAPQBEABhAAAANwAAAEQAAAD0ARAAYQAAADoAAAAnAAAAL2hvbWUvbmduaXVzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjAvc3JjL2VuY29kZS5yc4gCEABYAAAAtgAAACAAAACIAhAAWAAAALcAAAAlAAAAiAIQAFgAAAD8AAAAHAAAAIgCEABYAAAA/QAAACEAAACIAhAAWAAAABMBAAAuAAAAiAIQAFgAAAATAQAACQAAAIgCEABYAAAAFAEAAAkAAACIAhAAWAAAAAsBAAAuAAAAiAIQAFgAAAALAQAACQAAAIgCEABYAAAADQEAAA8AAACIAhAAWAAAAAwBAAAJAAAAiAIQAFgAAAAPAQAACQAAAIgCEABYAAAAoAAAACoAAABmYWlsZWQgdG8gZmlsbCBidWZmZXJmYWlsZWQgdG8gd3JpdGUgd2hvbGUgYnVmZmVyAAAAxQMQABwAAAAXAAAAFQAAAAwAAAAEAAAAFgAAABcAAAAYAAAAZm9ybWF0dGVyIGVycm9yAAgEEAAPAAAAKAAAAGZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcgAkBBAAGwAAACUAAAAvcnVzdGMvMDQ0MmZiYWJlMjRlYzQzNjM2YTgwYWQxZjQwYTBhZDkyYTJlMzhkZi9saWJyYXJ5L3N0ZC9zcmMvaW8vaW1wbHMucnMATAQQAEsAAADyAAAADQAAAC9ydXN0Yy8wNDQyZmJhYmUyNGVjNDM2MzZhODBhZDFmNDBhMGFkOTJhMmUzOGRmL2xpYnJhcnkvc3RkL3NyYy9pby9jdXJzb3IucnOoBBAATAAAAOsAAAAKAAAAL3J1c3RjLzA0NDJmYmFiZTI0ZWM0MzYzNmE4MGFkMWY0MGEwYWQ5MmEyZTM4ZGYvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAAAAQFEABJAAAAJAUAABYAAAAvcnVzdGMvMDQ0MmZiYWJlMjRlYzQzNjM2YTgwYWQxZjQwYTBhZDkyYTJlMzhkZi9saWJyYXJ5L3N0ZC9zcmMvc3lzL3dhc20vLi4vdW5zdXBwb3J0ZWQvaW8ucnMAAABgBRAAXQAAAA4AAAATAAAAYWR2YW5jaW5nIGlvIHNsaWNlcyBiZXlvbmQgdGhlaXIgbGVuZ3RoANAFEAAnAAAABAUQAEkAAAAmBQAADQAAAC9ydXN0Yy8wNDQyZmJhYmUyNGVjNDM2MzZhODBhZDFmNDBhMGFkOTJhMmUzOGRmL2xpYnJhcnkvc3RkL3NyYy9pby9yZWFkYnVmLnJzAAAAEAYQAE0AAADmAAAADgAAABwAAAAMAAAABAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAvaG9tZS9uZ25pdXMvRG9jdW1lbnRzL2dpdC1yZXBvcy91c2RwbC1ycy91c2RwbC1jb3JlL3NyYy9zZXJkZXMvdHJhaXRzLnJzAAAAmAYQAEkAAAB2AAAAHAAAACQAAAAYAAAACAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAAYHVud3JhcF90aHJvd2AgZmFpbGVkAAAALQAAAGABAAAIAAAALgAAAC8AAAAgAgAACAAAADAAAAAxAAAABAAAAAQAAAAyAAAAMwAAADEAAAAEAAAABAAAADQAAAA1AAAAL2hvbWUvbmduaXVzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC4zMy9zcmMvbGliLnJzAIAHEABjAAAA2gAAABUAQYCQwAALyERgYXN5bmMgZm5gIHJlc3VtZWQgYWZ0ZXIgY29tcGxldGlvbgA2AAAAY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbgAAMQAAAAAAAAABAAAANwAAAC9ydXN0Yy8wNDQyZmJhYmUyNGVjNDM2MzZhODBhZDFmNDBhMGFkOTJhMmUzOGRmL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMAgAgQAE8AAACmAQAAGgAAACgpAAAcAAAADAAAAAQAAAA4AAAAOQAAADoAAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5ADEAAAAAAAAAAQAAADsAAAAvcnVzdGMvMDQ0MmZiYWJlMjRlYzQzNjM2YTgwYWQxZjQwYTBhZDkyYTJlMzhkZi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMARAkQAEsAAADpCQAADgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAMQAAAAAAAAABAAAAPAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGU6IAAA3AkQACoAAAAvaG9tZS9uZ25pdXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMC9zcmMvZGVjb2RlLnJzEAoQAFgAAADSAQAAHwAAABAKEABYAAAA2AEAAB8AAAAQChAAWAAAAOEBAAAfAAAAEAoQAFgAAADqAQAAHwAAABAKEABYAAAA8wEAAB8AAAAQChAAWAAAAPwBAAAfAAAAEAoQAFgAAAAFAgAAHwAAABAKEABYAAAADgIAAB8AAAAQChAAWAAAAAMBAAAkAAAAEAoQAFgAAAAEAQAAKQAAABAKEABYAAAAKgEAABYAAAAQChAAWAAAAC0BAAAaAAAAEAoQAFgAAABBAQAADgAAABAKEABYAAAARAEAABIAAAAQChAAWAAAAFgBAAATAAAASW1wb3NzaWJsZTogbXVzdCBvbmx5IGhhdmUgMCB0byA4IGlucHV0IGJ5dGVzIGluIGxhc3QgY2h1bmssIHdpdGggbm8gaW52YWxpZCBsZW5ndGhzWAsQAFQAAAAQChAAWAAAAJ0BAAAOAAAAEAoQAFgAAACxAQAACQAAAE92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgb3V0cHV0IGJ1ZmZlciBsZW5ndGgAABAKEABYAAAAlgAAAAoAAAAQChAAWAAAAJsAAAAhAAAAV3JpdGluZyB0byBhIFN0cmluZyBzaG91bGRuJ3QgZmFpbC9ob21lL25nbml1cy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4wL3NyYy9lbmNvZGUucnMAAEYMEABYAAAAUwAAAA4AAAD//////////3VzZHBsLWZyb250L3NyYy9jb25uZWN0aW9uLnJzAAAAuAwQAB0AAAAZAAAAJgAAAFBPU1RodHRwOi8vdXNkcGwuOi91c2RwbC9jYWxsAAAA7AwQAAwAAAD4DBAAAQAAAPkMEAABAAAA+gwQAAsAAABsb2NhbGhvc3QAAAAoDRAACQAAALgMEAAdAAAALQAAACQAAAC4DBAAHQAAADQAAAAnAAAAuAwQAB0AAABJAAAAJgAAAEV4cGVjdGVkIGNhbGwgcmVzcG9uc2UgbWVzc2FnZSwgZ290IHNvbWV0aGluZyBlbHNldXNkcGwtZnJvbnQvc3JjL2NvbnZlcnQucnOeDRAAGgAAACAAAAAnAAAAMC45LjF1c2RwbC1mcm9udC9zcmMvbGliLnJzAM0NEAAWAAAAYQAAABgAAADNDRAAFgAAAGkAAAAYAAAAzQ0QABYAAABwAAAATgAAAM0NEAAWAAAAbwAAAAEAAADNDRAAFgAAAJ8AAAAmAAAAzQ0QABYAAACeAAAAAQAAAM0NEAAWAAAAwwAAAEAAAADNDRAAFgAAANEAAABAAAAAY3JhbmtzaGFmdAAAZA4QAAoAAABkZWNreQAAAHgOEAAFAAAAYW55AIgOEAADAAAATG9hZEVycm9yOiBJbygpAJQOEAAOAAAAog4QAAEAAABMb2FkRXJyb3I6IEludmFsaWREYXRhAAC0DhAAFgAAAExvYWRFcnJvcjogVG9vU21hbGxCdWZmZXIAAADUDhAAGQAAAER1bXBFcnJvcjogSW8oAAD4DhAADgAAAKIOEAABAAAARHVtcEVycm9yOiBVbnN1cHBvcnRlZAAAGA8QABYAAABEdW1wRXJyb3I6IFRvb1NtYWxsQnVmZmVyAAAAOA8QABkAAAAvaG9tZS9uZ25pdXMvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMC9zcmMvZW5jb2RlLnJzXA8QAFgAAAA7AQAACQAAACEiIyQlJicoKSorLC0wMTIzNDU2Nzg5QEFCQ0RFRkdISUpLTE1OUFFSU1RVVlhZWltgYWJjZGVoaWprbG1wcXJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSssLi9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS4vMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL////////////////////////////////////////////wABAgMEBQYHCAkKCwz//w0ODxAREhMUFRb///////8XGBkaGxwdHh8gISIjJCX/JicoKSorLP8tLi8w/////zEyMzQ1Nv//Nzg5Ojs8//89Pj//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Pj////80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABNjc4OTo7PD0+P/////////8CAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaG////////xwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJCgv/////////DA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCX///////8mJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8+//80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ/////z//GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z7///8/NDU2Nzg5Ojs8Pf////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGf///////xobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIz/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wQREADEEBAAhBAQAEQQEAAEEBAAxA8QAEQWEABEFRAARBQQAEQTEABEEhAARBEQAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAPgAAAAgAAAAEAAAAPwAAAC9ob21lL25nbml1cy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4wL3NyYy9jaHVua2VkX2VuY29kZXIucnMAAACwFxAAYQAAAGgAAAAwAAAAT3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyBudW1iZXIgb2YgY2h1bmtzIGluIGlucHV0L2hvbWUvbmduaXVzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjAvc3JjL2RlY29kZS5ycwBXGBAAWAAAALwAAAAKAAAAQAAAAAgAAAAEAAAAQQAAAEIAAABAAAAACAAAAAQAAABDAAAAYm9keW1ldGhvZG1vZGVzYW1lLW9yaWdpbm5vLWNvcnNjb3JzbmF2aWdhdGVhdHRlbXB0ZWQgdG8gY29udmVydCBpbnZhbGlkIFJlcXVlc3RNb2RlIGludG8gSlNWYWx1ZS9ob21lL25nbml1cy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy93ZWItc3lzLTAuMy42MC9zcmMvZmVhdHVyZXMvZ2VuX1JlcXVlc3RNb2RlLnJzRRkQAGsAAAADAAAAAQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBkZXN0cm95ZWQgYWxyZWFkeUcAAAAEAAAABAAAAEgAAABJAAAAYWxyZWFkeSBib3Jyb3dlZEoAAAAAAAAAAQAAAEsAAABhbHJlYWR5IG11dGFibHkgYm9ycm93ZWRKAAAAAAAAAAEAAABMAAAAL2hvbWUvbmduaXVzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC4zMy9zcmMvcXVldWUucnMAAABMGhAAZQAAABoAAAAuAAAATBoQAGUAAAAdAAAAKQAAAEwaEABlAAAAMgAAABoAAABhbHJlYWR5IGJvcnJvd2VkTQAAAAAAAAABAAAASwAAAE4AAAAEAAAABAAAAE8AAABQAAAATgAAAAQAAAAEAAAAUQAAAFIAAABGbk9uY2UgY2FsbGVkIG1vcmUgdGhhbiBvbmNlL2hvbWUvbmduaXVzLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC4zMy9zcmMvbGliLnJzAEgbEABjAAAApQAAAA8AAABIGxAAYwAAAIUAAAAnAAAASBsQAGMAAACvAAAAJAAAAC9ob21lL25nbml1cy8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuMzMvc3JjL3Rhc2svc2luZ2xldGhyZWFkLnJzAAAA3BsQAHEAAAAhAAAAFQAAAFMAAABUAAAAVQAAAFYAAABXAAAA3BsQAHEAAABVAAAAJQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBkZXN0cm95ZWQgYWxyZWFkeWNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24AAFkAAAAAAAAAAQAAADcAAAAvcnVzdGMvMDQ0MmZiYWJlMjRlYzQzNjM2YTgwYWQxZjQwYTBhZDkyYTJlMzhkZi9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAwdEABPAAAApgEAABoAAABaAAAAcmV0dXJuIHRoaXNjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgZGVzdHJveWVkIGFscmVhZHljYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAAAAZwAAAAAAAAABAAAANwAAAC9ydXN0Yy8wNDQyZmJhYmUyNGVjNDM2MzZhODBhZDFmNDBhMGFkOTJhMmUzOGRmL2xpYnJhcnkvc3RkL3NyYy90aHJlYWQvbG9jYWwucnMABB4QAE8AAACmAQAAGgAAAFRyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eWQeEAAkAAAAL3J1c3RjLzA0NDJmYmFiZTI0ZWM0MzYzNmE4MGFkMWY0MGEwYWQ5MmEyZTM4ZGYvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc5AeEABMAAAAqgEAAAkAAABtAAAABAAAAAQAAABuAAAAbwAAAHAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlQWNjZXNzRXJyb3IAAAQfEAAAAAAAdW5jYXRlZ29yaXplZCBlcnJvcm90aGVyIGVycm9yb3V0IG9mIG1lbW9yeXVuZXhwZWN0ZWQgZW5kIG9mIGZpbGV1bnN1cHBvcnRlZG9wZXJhdGlvbiBpbnRlcnJ1cHRlZGFyZ3VtZW50IGxpc3QgdG9vIGxvbmdpbnZhbGlkIGZpbGVuYW1ldG9vIG1hbnkgbGlua3Njcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWVkZWFkbG9ja2V4ZWN1dGFibGUgZmlsZSBidXN5cmVzb3VyY2UgYnVzeWZpbGUgdG9vIGxhcmdlZmlsZXN5c3RlbSBxdW90YSBleGNlZWRlZHNlZWsgb24gdW5zZWVrYWJsZSBmaWxlbm8gc3RvcmFnZSBzcGFjZXdyaXRlIHplcm90aW1lZCBvdXRpbnZhbGlkIGRhdGFpbnZhbGlkIGlucHV0IHBhcmFtZXRlcnN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVmaWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXJlYWQtb25seSBmaWxlc3lzdGVtIG9yIHN0b3JhZ2UgbWVkaXVtZGlyZWN0b3J5IG5vdCBlbXB0eWlzIGEgZGlyZWN0b3J5bm90IGEgZGlyZWN0b3J5b3BlcmF0aW9uIHdvdWxkIGJsb2NrZW50aXR5IGFscmVhZHkgZXhpc3RzYnJva2VuIHBpcGVuZXR3b3JrIGRvd25hZGRyZXNzIG5vdCBhdmFpbGFibGVhZGRyZXNzIGluIHVzZW5vdCBjb25uZWN0ZWRjb25uZWN0aW9uIGFib3J0ZWRuZXR3b3JrIHVucmVhY2hhYmxlaG9zdCB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gcmVzZXRjb25uZWN0aW9uIHJlZnVzZWRwZXJtaXNzaW9uIGRlbmllZGVudGl0eSBub3QgZm91bmQgKG9zIGVycm9yICkAAAAEHxAAAAAAADEiEAALAAAAPCIQAAEAAABtZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAABYIhAAFQAAAG0iEAANAAAAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJzjCIQABgAAABVAQAACQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnO0IhAAHAAAAD4CAAAeAAAAtCIQABwAAAA9AgAAHwAAAHEAAAAMAAAABAAAAHIAAABtAAAACAAAAAQAAABzAAAAdAAAABAAAAAEAAAAdQAAAHYAAABtAAAACAAAAAQAAAB3AAAAeAAAAG0AAAAAAAAAAQAAAHkAAABvcGVyYXRpb24gc3VjY2Vzc2Z1bA4AAAAQAAAAFgAAABUAAAALAAAAFgAAAA0AAAALAAAAEwAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABEAAAASAAAAEAAAABAAAAATAAAAEgAAAA0AAAAOAAAAFQAAAAwAAAALAAAAFQAAABUAAAAPAAAADgAAABMAAAAmAAAAOAAAABkAAAAXAAAADAAAAAkAAAAKAAAAEAAAABcAAAAZAAAADgAAAA0AAAAUAAAACAAAABsAAADLHxAAux8QAKUfEACQHxAAhR8QAG8fEABiHxAAVx8QAEQfEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAhIhAAISIQACEiEAAQIhAA/iEQAO4hEADeIRAAyyEQALkhEACsIRAAniEQAIkhEAB9IRAAciEQAF0hEABIIRAAOSEQACshEAAYIRAA8iAQALogEAChIBAAiiAQAH4gEAB1IBAAayAQAFsgEABEIBAAKyAQAB0gEAAQIBAA/B8QAPQfEADZHxAASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvd1wlEAAcAAAAL2NhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvaGFzaGJyb3duLTAuMTIuMy9zcmMvcmF3L21vZC5ycwCAJRAATwAAAFoAAAAoAAAAegAAAAQAAAAEAAAAewAAAHwAAAB9AAAAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5yc2NhcGFjaXR5IG92ZXJmbG93AAAAFCYQABEAAAD4JRAAHAAAAAYCAAAFAAAAYSBmb3JtYXR0aW5nIHRyYWl0IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yAHoAAAAAAAAAAQAAADsAAABsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnOEJhAAGAAAAGQCAAAgAAAA77+9AGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUpLi4AANwmEAACAAAAQm9ycm93RXJyb3JCb3Jyb3dNdXRFcnJvcgBpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAInEAAgAAAAIicQABIAAACDAAAAAAAAAAEAAACEAAAAsCYQAAAAAABgOiAAsCYQAAAAAABdJxAAAgAAAIMAAAAMAAAABAAAAIUAAACGAAAAhwAAACAgICAgewosCiwgIHsgfSB9KAooLAAAAIMAAAAEAAAABAAAAIgAAABsaWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAsCcQABsAAABlAAAAFAAAADB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkAAIMAAAAEAAAABAAAAIkAAACKAAAAiwAAAGxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwDAKBAAGwAAAHoJAAAeAAAAwCgQABsAAACBCQAAFgAAACgpbGlicmFyeS9jb3JlL3NyYy9zbGljZS9tZW1jaHIucnMAAP4oEAAgAAAAaAAAACcAAABy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AQEBAggGCgIBMB8xBDAHAQEFASgJDAIgBAICAQM4AQECAwEBAzoIAgKYAwENAQcEAQYBAwLGQAABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0BJggZCy4DMAECBAICJwFDBgICAgIMAQgBLwEzAQEDAgIFAgEBKgIIAe4BAgEEAQABABAQEAACAAHiAZUFAAMBAgUEKAMEAaUCAAQAAlADRgsxBHsBNg8pAQICCgMxBAICBwE9AyQFAQg+AQwCNAkKBAIBXwMCAQECBgECAZ0BAwgVAjkCAQEBARYBDgcDBcMIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIbAlUIAgEBAmoBAQECBgEBZQMCBAEFAAkBAvUBCgIBAQQBkAQCAgQBIAooBgIECAEJBgIDLg0BAgAHAQYBAVIWAgcBAgECegYDAQECAQcBAUgCAwEBAQACCwI0BQUBAQEAAQYPAAU7BwABPwRRAQACAC4CFwABAQMEBQgIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAQAB20HAGCA8ABBuOvAAAsCaXoAOwlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4GMC4yLjgz"; +const encoded = "AGFzbQEAAAABtwEbYAJ/fwBgAn9/AX9gAX8AYAN/f38AYAR/f39/AGADf39/AX9gAX8Bf2AAAGAAAX9gBX9/f39/AGAEf39/fwF/YAV/f39/fwF/YAF/AX5gA39/fwF+YAR/fn9/AGAGf39/f39/AX9gBn9/f39/fwBgBX9/fn9/AGAFf399f38AYAV/f3x/fwBgBH99f38AYAR/fH9/AGACfn8AYAd/f39/f39/AX9gA35/fwF/YAF8AX9gAn9/AX4CqgkjA3diZxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgACA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcAAQN3YmcVX193YmluZGdlbl9zdHJpbmdfZ2V0AAADd2JnG19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZgAGA3diZxVfX3diaW5kZ2VuX251bWJlcl9uZXcAGQN3YmcWX193YmluZGdlbl9ib29sZWFuX2dldAAGA3diZxVfX3diaW5kZ2VuX251bWJlcl9nZXQAAAN3YmcSX193YmluZGdlbl9pc19udWxsAAYDd2JnF19fd2JpbmRnZW5faXNfdW5kZWZpbmVkAAYDd2JnKF9fd2JnX2luc3RhbmNlb2ZfV2luZG93X2UyNjZmMDJlZWU0M2I1NzAABgN3YmccX193YmdfZmV0Y2hfNDY1ZThjYjYxYTBmNDNlYQABA3diZypfX3diZ19pbnN0YW5jZW9mX1Jlc3BvbnNlX2ZiM2E0ZGY2NDhjMTg1OWIABgN3YmcbX193YmdfdGV4dF9mNjE0NjRkNzgxYjA5OWYwAAYDd2JnKF9fd2JnX25ld3dpdGhzdHJhbmRpbml0X2M0NWYwZGM2ZGEyNmZkMDMABQN3YmcSX193YmluZGdlbl9jYl9kcm9wAAYDd2JnIF9fd2JnX25ld25vYXJnc18yYjhiNmJkNzc1M2M3NmJhAAEDd2JnG19fd2JnX2NhbGxfOTVkMWVhNDg4ZDAzZTRlOAABA3diZxpfX3diZ19uZXdfZjk4NzYzMjYzMjhmNDVlZAAIA3diZxRfX3diaW5kZ2VuX2lzX3N0cmluZwAGA3diZxtfX3diZ19zZWxmX2U3YzFmODI3MDU3ZjY1ODQACAN3YmcdX193Ymdfd2luZG93X2EwOWVjNjY0ZTE0YjFiODEA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BGoiAyACQYABaiACQShqEIQCIAIoAghFBEAgAigCDCIEQYQBTwRAIAQQAAsgAigCgAEiBEGEAU8EQCAEEAALIAIoAigiBEGEAU8EQCAEEAALIAMoAgAiA0GEAU8EQCADEAALQQEhAyAAKAKUBCIEQYQBSQ0BIAQQAAwBC0G4gMAAQRUQlgMACyAAIAM6AJgEIAJB4AJqJAAgAUEARwuhDAEFfyMAQZACayIDJAAgAQJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AYEEBaw4EBwACAwELAAsgASABKQMANwMIIANByABqIAFBEGpBKBCiAxogASABLwFcOwFeIAEQETYCOCABQThqIgQQvwEgBBDCASADQaQBakEGNgIAIANBnAFqQQc2AgAgAyABQd4AajYCoAEgA0HQisAANgKYASADQQg2ApQBIAMgAUEIajYCkAEgA0EDNgLMASADQQQ2AsQBIANBpIrAADYCwAEgA0EANgK4ASADIANBkAFqNgLIASADQYABaiADQbgBahBBIAFBxABqIANBiAFqKAIANgIAIAEgAykDgAE3AjwgA0G4AWogA0HIAGpBKBCiAxogA0GQAWogA0G4AWoQgQEgAygCkAEhBSADKAKUASIGRQ0LIAFB0ABqIAMoApgBIgc2AgAgAUHMAGogBjYCACABIAU2AkggA0GQAWogBiAHEDcgA0HAAWoiBSADQZgBaikDADcDACADIAMpA5ABNwO4ASADQfAAaiADQbgBahC8ASAFIANB+ABqKAIANgIAIAMgAykDcDcDuAEgAyADQbgBahCMAjYCkAEgBCADQZABahCwASADKAKQASIFQYQBTwRAIAUQAAsgA0FAayABQUBrKAIAIAFBxABqKAIAIAQQ8wEgAygCRCEFIAMoAkANCiABIAU2AlQgA0E4ahDtASADKAI4RQ0GIAEgAygCPDYCWCABIAFB2ABqKAIAIAFB1ABqKAIAEAoQSDYCaAsgA0EwaiABQegAaiIEIAIQjQEgAygCMCIGQQJGDQYgAygCNCEFIAQQrwEgBg0IIANBKGogBRDyASADKAIsIQUgAygCKA0IIAEgBTYCaCADQSBqIAQQ9gEgAygCICEEIAFB9ABqIAMoAiQiBTYCACABIAQ2AnAgBA0BIAEgBRBINgJsCyADQRhqIAFB7ABqIgQgAhCNASADKAIYIgJBAkYNASADKAIcIQUgBBCvASACDQAgA0EQaiAFEPEBIAMoAhQhBCADKAIQRQ0CIAQhBQsgASgCaCICQYQBSQ0GIAIQAAwGCyAAQQs2AgBBBAwKCyADQQhqIAQQAiADKAIIIgVFBEAgA0EANgK8AQwECyADKAIMIQIgAyAFNgK8ASADIAI2AsABIAMgAjYCuAEgAyADQbgBahCxAiADQbgBaiADKAIAIAMoAgQQ5QIgAygCvAFFDQMgA0GIAWogA0HAAWoiBigCACICNgIAIAMgAykDuAE3A4ABIANBuAFqIAMoAoQBIAIQmwEgAygCuAEiAkEKRwRAIAMoArwBIQUgA0GQAWogBkEoEKIDGiADQfABaiADQZgBaikDADcDACADQfgBaiADQaABaikDADcDACADQYACaiADQagBaikDADcDACADIAMpA5ABNwPoASADQYABahCaAiAEQYQBTwRAIAQQAAsgASgCaCIEQYQBTwRAIAQQAAsgASgCWCIEQYQBTwRAIAQQAAsgASgCVCIEQYQBTwRAIAQQAAsgAUHIAGoQmgIgAUE8ahCaAiABKAI4IgFBhAFJDQkgARAADAkLIAMgAykCvAE3A4gCIANBiAJqEKoBIQUgA0GAAWoQmgIgBEGEAU8EQCAEEAALIAEoAmgiAkGEAU8EQCACEAALIAEoAlgiAkGEAU8EQCACEAALIAEoAlQiAkGEAU8EQCACEAALIAFByABqEJoCIAFBPGoQmgIgASgCOCIBQYQBSQ0HIAEQAAwHC0HAgsAAQSNB9InAABD3AQALQbyFwABBK0HYisAAEPcBAAsgAEELNgIAQQMMBgtBvIXAAEErQeiKwAAQ9wEACyABKAJYIgJBhAFPBEAgAhAACyABKAJUIgJBhAFJDQAgAhAACyABQcgAahCaAgsgAUE8ahCaAiABKAI4IgFBhAFJDQAgARAAC0EKIQILIAAgBTYCBCAAIAI2AgAgACADKQPoATcDCCAAQRBqIANB8AFqKQMANwMAIABBGGogA0H4AWopAwA3AwAgAEEgaiADQYACaikDADcDAEEBCzoAYCADQZACaiQAC4YMAgp/An4jAEHQAmsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC0A2AJBAWsOAwcCAQALIAAgAEGoAWpBqAEQogMaCwJAIAAtAKABQQFrDgMFAQACCyAAQQhqIQQgAEGYAWotAABBAWsOAwcAAwILAAsgACgCACEDIAIgACgCBCIENgLIASACIAM2AsQBIAIgBDYCwAEgAkEoaiACQcABahCxAiACQTBqIAIoAiggAigCLBDlAiACQcwCaiACQThqKAIANgIAIAIgAikDMDcCxAIgAEEIaiIEIAJBwAFqQZABEKIDGiAAQZgBakEAOgAACyAAQYgBaiAAQZQBaigCADYCACAAQYABaiIDIABBjAFqKQIANwIAQYjswABBiOzAACkDACIMQgF8NwMAIAJB6ABqQQRyIAMQ0QEgAkEJNgJoQZDswAAvAQAhAyACQcgBaiACQegAakEoEKIDGiAAQRBqIAJBwAFqQTAQogMaIABB6ABqQQA6AAAgAEHkAGogAzsBACAAIAw3AwgLIAJBwAFqIAQgARAnIAIoAsABQQtGDQIgAkFAayACQcABakEoEKIDGiAEEK4BAkACQCACKAJAIghBeGoOAwEGAAYLIAIoAkQhAUHU7MAAKAIABEAQ4wILQdTswABBADYCACABQYQBSQ0JIAEQAAwJCyACQcgAaigCACEBIAJBzABqKAIAIQUgAigCRCEGIAJBGGpB5ILAABDnASACKQMYIQwgAikDICENIAJBwAFqIAUQayACQYABaiIJIAJByAFqIgopAwA3AwAgAiACKQPAATcDeCACIA03A3AgAiAMNwNoIAIgATYCzAEgAiABIAVBGGwiA2oiBzYCyAEgAiABNgLEASACIAY2AsABIAVFDQYgAkG4AWohBQNAIAEoAgQiBkUEQCABQRhqIQcMBwsgASgCACELIAIgASgCCDYCqAEgAiAGNgKkASACIAs2AqABIAUgAUEUaigCADYCACACIAEpAgw3A7ABIAJBkAFqIAJB6ABqIAJBoAFqIAJBsAFqEEsgAigClAEEQCACQZABahCmAiACQZABahDKAgsgAUEYaiEBIANBaGoiAw0ACwwFC0HAgsAAQSNBgIzAABD3AQALQcCCwABBI0GwgsAAEPcBAAtBAyEDIABBAzoAoAEgAEEDOgCYAUEBIQEMBgtBwILAAEEjQfCLwAAQ9wEAC0HU7MAAKAIABEAQ4wILQdTswABBADYCAEEBIQEMAgsgAiAHNgLEAQsgAkHAAWoQuwEg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IAAoAgQoAgwRBQALrQcCBn8CfiMAQTBrIgMkACADQf8BOgAPIANBEGogASADQQ9qQQEgAigCICIGEQQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAy0AEEEERwRAIAMpAxAiCUL/AYNCBlINAQsgAy0AD0F/ag4KExACAwQFBgcJCAELIAAgCTcCBAwTCyAAQQU6AAQMEgsgA0F/NgIoIANBEGogASADQShqQQQgBhEEACADLQAQQQRHBEAgAzEAEEIGUg0NCyADNQIoIQlBBCEFQQIhBAwQCyADQn83AyggA0EQaiABIANBKGpBCCAGEQQAIAMtABBBBEcEQCADMQAQQgZSDQsLIAMpAygiCkIghiEJIApCIIinIQdBCCEFQQMhBAwPCyADQX82AiggA0EQaiABIANBKGpBBCAGEQQAIAMtABBBBEcEQCADKQMQIglC/wGDQgZSDQkLIAM1AighCUEEIQRBBCEFDA4LIANCfzcDICADQShqIAEgA0EgakEIIAYRBAAgAy0AKEEERwRAIAMpAygiCUL/AYNCBlINBwsgAyADKQMgIgk3AhQgCUIgiKchByADKQMQIQlBCCEFQQUhBAwNCyADQX82AiggA0EQaiABIANBKGpBBCAGEQQAIAMtABBBBEcEQCADKQMQIglC/wGDQgZSDQULIAM1AighCUEEIQVBBiEEDAwLIANCfzcDICADQShqIAEgA0EgakEIIAYRBAAgAy0AKEEERwRAIAMpAygiCUL/AYNCBlINAwsgAyADKQMgIgk3AhQgCUIgiKchByADKQMQIQlBCCEFQQchBAwLCyADQRBqIAEgAhBFIAMoAhRFDQggAygCGCEHIAMpAxAhCSADKAIcIQVBCSEEDAoLIANBEGogASACEL4BIAMoAhBFDQggACADKQIUNwIEDAoLIAAgCTcCBAwJCyAAIAk3AgQMCAsgACAJNwIEDAcLIAAgCTcCBAwGCyAAIAM1AhAgAzUCFEIghoQ3AgQMBQsgACADNQIQIAM1AhRCIIaENwIEDAQLIANBEGogASACEEUgAygCFARAIAMoAhghByADKQMQIQkgAygCHCEFQQEhBAwDCyAAIAMpAxg3AgQMAwsgACADKQMYNwIEDAILQQghBCADQRhqKAIAIQUgAy0AFCEICyAAIAc2AAwgACAJNwAEIAAgCDoAASAAIAQ6AAAgACAFQQFqNgIQDAELIABBCjoAAAsgA0EwaiQAC48HAQZ/AkACQAJAIAJBCU8EQCADIAIQSSICDQFBAA8LQQhBCBDmAiEBQRRBCBDmAiEFQRBBCBDmAiEEQQAhAkEAQRBBCBDmAkECdGsiBkGAgHwgBCABIAVqamtBd3FBfWoiASAGIAFJGyADTQ0BQRAgA0EEakEQQQgQ5gJBe2ogA0sbQQgQ5gIhBSAAEKsDIgEgARCXAyIGEKgDIQQCQAJAAkACQAJAAkACQCABEIEDRQRAIAYgBU8NASAEQfTwwAAoAgBGDQIgBEHw8MAAKAIARg0DIAQQ/AINByAEEJcDIgcgBmoiCCAFSQ0HIAggBWshBiAHQYACSQ0EIAQQYgwFCyABEJcDIQQgBUGAAkkNBiAEIAVBBGpPQQAgBCAFa0GBgAhJGw0FIAEoAgAiBiAEakEQaiEHIAVBH2pBgIAEEOYCIQRBACIFRQ0GIAUgBmoiASAEIAZrIgBBcGoiAjYCBCABIAIQqANBBzYCBCABIABBdGoQqANBADYCBEH48MAAQfjwwAAoAgAgBCAHa2oiADYCAEGE8cAAQYTxwAAoAgAiAiAFIAUgAksbNgIAQfzwwABB/PDAACgCACICIAAgAiAASxs2AgAMCQsgBiAFayIEQRBBCBDmAkkNBCABIAUQqAMhBiABIAUQugIgBiAEELoCIAYgBBA9DAQLQezwwAAoAgAgBmoiBiAFTQ0EIAEgBRCoAyEEIAEgBRC6AiAEIAYgBWsiBUEBcjYCBEHs8MAAIAU2AgBB9PDAACAENgIADAMLQejwwAAoAgAgBmoiBiAFSQ0DAkAgBiAFayIEQRBBCBDmAkkEQCABIAYQugJBACEEQQAhBgwBCyABIAUQqAMiBiAEEKgDIQcgASAFELoCIAYgBBDhAiAHIAcoAgRBfnE2AgQLQfDwwAAgBjYCAEHo8MAAIAQ2AgAMAgsgBEEMaigCACIJIARBCGooAgAiBEcEQCAEIAk2AgwgCSAENgIIDAELQeDwwABB4PDAACgCAEF+IAdBA3Z3cTYCAAsgBkEQQQgQ5gJPBEAgASAFEKgDIQQgASAFELoCIAQgBhC6AiAEIAYQPQwBCyABIAgQugILIAENAwsgAxAkIgVFDQEgBSAAIAEQlwNBeEF8IAEQgQMbaiIBIAMgASADSRsQogMgABArDwsgAiAAIAEgAyABIANJGxCiAxogABArCyACDwsgARCBAxogARCqAwuRBwENfwJAAkAgAigCACILQSIgAigCBCINKAIQIg4RAQBFBEACQCABRQRAQQAhAgwBCyAAIAFqIQ9BACECIAAhBwJAA0ACQCAHIggsAAAiBUF/SgRAIAhBAWohByAFQf8BcSEDDAELIAgtAAFBP3EhBCAFQR9xIQMgBUFfTQRAIANBBnQgBHIhAyAIQQJqIQcMAQsgCC0AAkE/cSAEQQZ0ciEEIAhBA2ohByAFQXBJBEAgBCADQQx0ciEDDAELIANBEnRBgIDwAHEgBy0AAEE/cSAEQQZ0cnIiA0GAgMQARg0CIAhBBGohBwtBgoDEACEFQTAhBAJAAkACQAJAAkACQAJAAkACQCADDiMGAQEBAQEBAQECBAEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBBQALIANB3ABGDQQLIAMQTkUEQCADEHINBgsgA0GBgMQARg0FIANBAXJnQQJ2QQdzIQQgAyEFDAQLQfQAIQQMAwtB8gAhBAwCC0HuACEEDAELIAMhBAsgBiACSQ0BAkAgAkUNACACIAFPBEAgASACRg0BDAMLIAAgAmosAABBQEgNAgsCQCAGRQ0AIAYgAU8EQCABIAZHDQMMAQsgACAGaiwAAEG/f0wNAgsgCyAAIAJqIAYgAmsgDSgCDBEFAARAQQEPC0EFIQkDQCAJIQwgBSECQYGAxAAhBUHcACEKAkACQAJAAkACQAJAIAJBgIC8f2pBAyACQf//wwBLG0EBaw4DAQUAAgtBACEJQf0AIQogAiEFAkACQAJAIAxB/wFxQQFrDgUHBQABAgQLQQIhCUH7ACEKDAULQQMhCUH1ACEKDAQLQQQhCUHcACEKDAMLQYCAxAAhBSAEIQogBEGAgMQARw0DCwJ/QQEgA0GAAUkNABpBAiADQYAQSQ0AGkEDQQQgA0GAgARJGwsgBmohAgwECyAMQQEgBBshCUEwQdcAIAIgBEECdHZBD3EiBUEKSRsgBWohCiAEQX9qQQAgBBshBAsgAiEFCyALIAogDhEBAEUNAAtBAQ8LIAYgCGsgB2ohBiAHIA9HDQEMAgsLIAAgASACIAZByNLAABDzAgALIAJFBEBBACECDAELIAIgAU8EQCABIAJGDQEMBAsgACACaiwAAEG/f0wNAwsgCyAAIAJqIAEgAmsgDSgCDBEFAEUNAQtBAQ8LIAtBIiAOEQEADwsgACABIAIgAUHY0sAAEPMCAAuHBgEIfwJAIAJFDQBBACACQXlqIgQgBCACSxshCSABQQNqQXxxIAFrIQpBACEEA0ACQAJAAkACQAJAAkACQAJAAkAgASAEai0AACIHQRh0QRh1IghBAE4EQCAKIARrQQNxIApBf0ZyDQEgBCAJSQ0CDAgLQQEhBkEBIQMCQAJAAkACQAJAAkACQAJAIAdBtNTAAGotAABBfmoOAwABAg4LIARBAWoiBSACSQ0GQQAhAwwNC0EAIQMgBEEBaiIFIAJPDQwgASAFaiwAACEFIAdBoH5qIgNFDQEgA0ENRg0CDAMLIARBAWoiAyACTwRAQQAhAwwMCyABIANqLAAAIQUCQAJAAkAgB0GQfmoOBQEAAAACAAsgCEEPakH/AXFBAksEQEEBIQMMDgsgBUF/TA0JQQEhAwwNCyAFQfAAakH/AXFBMEkNCQwLCyAFQY9/Sg0KDAgLIAVBYHFBoH9HDQkMAgsgBUGgf04NCAwBCwJAIAhBH2pB/wFxQQxPBEAgCEF+cUFuRwRAQQEhAwwLCyAFQX9MDQFBASEDDAoLIAVBv39KDQgMAQtBASEDIAVBQE8NCAtBACEDIARBAmoiBSACTw0HIAEgBWosAABBv39MDQVBASEDQQIhBgwHCyABIAVqLAAAQb9/Sg0FDAQLIARBAWohBAwHCwNAIAEgBGoiAygCAEGAgYKEeHENBiADQQRqKAIAQYCBgoR4cQ0GIARBCGoiBCAJSQ0ACwwFC0EBIQMgBUFATw0DCyAEQQJqIgMgAk8EQEEAIQMMAwsgASADaiwAAEG/f0oEQEECIQZBASEDDAMLQQAhAyAEQQNqIgUgAk8NAiABIAVqLAAAQb9/TA0AQQMhBkEBIQMMAgsgBUEBaiEEDAMLQQEhAwsgACAENgIEIABBCWogBjoAACAAQQhqIAM6AAAgAEEBNgIADwsgBCACTw0AA0AgASAEaiwAAEEASA0BIAIgBEEBaiIERw0ACwwCCyAEIAJJDQALCyAAIAE2AgQgAEEIaiACNgIAIABBADYCAAv0BQEHfwJ/IAEEQEErQYCAxAAgACgCGCIJQQFxIgEbIQogASAFagwBCyAAKAIYIQlBLSEKIAVBAWoLIQgCQCAJQQRxRQRAQQAhAgwBCwJAIANBEE8EQCACIAMQKiEGDAELIANFBEAMAQsgA0EDcSELAkAgA0F/akEDSQRAIAIhAQwBCyADQXxxIQcgAiEBA0AgBiABLAAAQb9/SmogASwAAUG/f0pqIAEsAAJBv39KaiABLAADQb9/SmohBiABQQRqIQEgB0F8aiIHDQALCyALRQ0AA0AgBiABLAAAQb9/SmohBiABQQFqIQEgC0F/aiILDQALCyAGIAhqIQgLAkACQCAAKAIIRQRAQQEhASAAKAIAIgcgAEEEaigCACIAIAogAiADEKICDQEMAgsCQAJAAkACQCAAQQxqKAIAIgcgCEsEQCAJQQhxDQQgByAIayIGIQdBASAALQAgIgEgAUEDRhtBA3EiAUEBaw4CAQIDC0EBIQEgACgCACIHIABBBGooAgAiACAKIAIgAxCiAg0EDAULQQAhByAGIQEMAQsgBkEBdiEBIAZBAWpBAXYhBwsgAUEBaiEBIABBBGooAgAhBiAAKAIcIQggACgCACEAAkADQCABQX9qIgFFDQEgACAIIAYoAhARAQBFDQALQQEPC0EBIQEgCEGAgMQARg0BIAAgBiAKIAIgAxCiAg0BIAAgBCAFIAYoAgwRBQANAUEAIQECfwNAIAcgASAHRg0BGiABQQFqIQEgACAIIAYoAhARAQBFDQALIAFBf2oLIAdJIQEMAQsgACgCHCELIABBMDYCHCAALQAgIQxBASEBIABBAToAICAAKAIAIgYgAEEEaigCACIJIAogAiADEKICDQAgByAIa0EBaiEBAkADQCABQX9qIgFFDQEgBkEwIAkoAhARAQBFDQALQQEPC0EBIQEgBiAEIAUgCSgCDBEFAA0AIAAgDDoAICAAIAs2AhxBAA8LIAEPCyAHIAQgBSAAKAIMEQUAC+4FAgd/An4jAEHQAGsiAyQAIAMgAjYCECABKAIIIQIgAyADQRBqNgIUAkAgAkEBaiIFIAJJBEAQ6AEgAygCBCEFIAMoAgAhBAwBCwJAAkACQAJAIAUgASgCACIEIARBAWpBA3ZBB2wgBEEISRsiBEEBdksEQCAFIARBAWoiBCAFIARLGyIEQQhJDQEgBCAEQf////8BcUYEQEF/IARBA3RBB25Bf2pndkEBaiEEDAMLEOgBIAMoAgghBCADKAIMIgVBgYCAgHhHDQUMAgsgASADQRRqQZiAwABBGBAzDAILQQRBCCAEQQRJGyEECyADQTBqQRggBBBmIAMoAjAhBCADKAI8IgVFDQEgAygCNCEGIAVB/wEgBEEJahCjAyEHIANCmICAgIABNwMoIAMgBzYCJCADIAQ2AhggAyACNgIgIAMgBiACazYCHCABKAIAIghBf0cEQEEAIQYDQCABKAIMIgIgBmosAABBAE4EQCAHIAQgAygCFCgCACACQQAgBmtBGGxqQWhqEEOnIglxIgVqKQAAQoCBgoSIkKDAgH+DIgpQBEBBCCECA0AgAiAFaiEFIAJBCGohAiAHIAQgBXEiBWopAABCgIGChIiQoMCAf4MiClANAAsLIAcgCnqnQQN2IAVqIARxIgJqLAAAQX9KBEAgBykDAEKAgYKEiJCgwIB/g3qnQQN2IQILIAIgB2ogCUEZdiIFOgAAIAJBeGogBHEgB2pBCGogBToAACAHIAJBf3NBGGxqIgIgASgCDCAGQX9zQRhsaiIFKQAANwAAIAJBEGogBUEQaikAADcAACACQQhqIAVBCGopAAA3AAALIAYgCEYgBkEBaiEGRQ0ACwsgASkCACEKIAEgAykDGDcCACADQSBqIgIpAwAhCyACIAFBCGoiASkCADcDACABIAs3AgAgAyAKNwMYIANBGGoQ5QELQYGAgIB4IQUMAQsgAygCNCEFCyAAIAU2AgQgACAENgIAIANB0ABqJAALyQUCDn8BfiAAKAIAQQFqIQcgACgCDCEGA0ACQAJ/IARBAXEEQCAFQQdqIgQgBUkgBCAHT3INAiAFQQhqDAELIAUgB0kiCkUNASAKIAUiBGoLIQUgBCAGaiIEIAQpAwAiEkJ/hUIHiEKBgoSIkKDAgAGDIBJC//79+/fv37//AIR8NwMAQQEhBAwBCwsCQCAHQQhPBEAgBiAHaiAGKQAANwAADAELIAZBCGogBiAHEKEDCyAAAn9BACAAKAIAIg1Bf0YNABpBACADayEKQQAhBQNAAkAgACgCDCIEIAUiB2otAABBgAFHDQAgBCALaiEOIAQgB0F/cyADbGohDyACKAIUIRACQANAIAEgACAHIBARDQAhEiAAKAIAIgkgEqciDHEiBiEEIAAoAgwiCCAGaikAAEKAgYKEiJCgwIB/gyISUARAQQghBSAGIQQDQCAEIAVqIQQgBUEIaiEFIAggBCAJcSIEaikAAEKAgYKEiJCgwIB/gyISUA0ACwsgCCASeqdBA3YgBGogCXEiBGosAABBf0oEQCAIKQMAQoCBgoSIkKDAgH+DeqdBA3YhBAsgBCAGayAHIAZrcyAJcUEISQ0BIAggBEF/cyADbGohBSAEIAhqIgYtAAAgBiAMQRl2IgY6AAAgBEF4aiAJcSAIakEIaiAGOgAAQf8BRwRAIANFDQEgCiEEA0AgBCAOaiIGLQAAIQggBiAFLQAAOgAAIAUgCDoAACAFQQFqIQUgBEEBaiIEDQALDAELCyAAKAIMIgQgB2pB/wE6AAAgBCAAKAIAIAdBeGpxakEIakH/AToAACAFIA8gAxCiAxoMAQsgByAIaiAMQRl2IgQ6AAAgCSAHQXhqcSAIakEIaiAEOgAACyAHQQFqIQUgCyADayELIAcgDUcNAAsgACgCACIBIAFBAWpBA3ZBB2wgAUEISRsLIAAoAghrNgIEC/cFAgh/An4jAEHQAGsiASQAIAFBmOzAADYCEEGw7MAAKAIAIQQgASABQRBqNgIUAkAgBEEBaiICIARJBEAQ6AEgASgCBCECIAEoAgAhAwwBCwJAAkACQAJAIAJBqOzAACgCACIDIANBAWpBA3ZBB2wgA0EISRsiA0EBdksEQCACIANBAWoiAyACIANLGyIDQQhJDQEgAyADQf////8BcUYEQEF/IANBA3RBB25Bf2pndkEBaiEDDAMLEOgBIAEoAgghAyABKAIMIgJBgYCAgHhHDQUMAgtBqOzAACABQRRqQYCAwABBEBAzDAILQQRBCCADQQRJGyEDCyABQTBqQRAgAxBmIAEoAjAhAyABKAI8IgJFDQEgASgCNCEFIAJB/wEgA0EJahCjAyEGIAFCkICAgIABNwMoIAEgBjYCJCABIAM2AhggASAENgIgIAEgBSAEazYCHEGo7MAAKAIAIgdBf0cEQEEAIQUDQEG07MAAKAIAIgIgBWosAABBAE4EQCAGIAMgASgCFCgCACACIAVBBHRrQXBqEEOnIghxIgJqKQAAQoCBgoSIkKDAgH+DIglQBEBBCCEEA0AgAiAEaiECIARBCGohBCAGIAIgA3EiAmopAABCgIGChIiQoMCAf4MiCVANAAsLIAYgCXqnQQN2IAJqIANxIgRqLAAAQX9KBEAgBikDAEKAgYKEiJCgwIB/g3qnQQN2IQQLIAQgBmogCEEZdiICOgAAIARBeGogA3EgBmpBCGogAjoAACAGIARBf3NBBHRqIgJBtOzAACgCACAFQX9zQQR0aiIEKQAANwAAIAJBCGogBEEIaikAADcAAAsgBSAHRiAFQQFqIQVFDQALC0Go7MAAKQIAIQlBqOzAACABKQMYNwIAIAFBIGoiAikDACEKIAJBsOzAACkCADcDAEGw7MAAIAo3AgAgASAJNwMYIAFBGGoQ5QELQYGAgIB4IQIMAQsgASgCNCECCyAAIAI2AgQgACADNgIAIAFB0ABqJAALkgUBB38CQAJAAn8CQCAAIAFrIAJJBEAgASACaiEFIAAgAmohAyACQQ9LDQEgAAwCCyACQQ9NBEAgACEDDAMLIABBACAAa0EDcSIFaiEEIAUEQCAAIQMgASEAA0AgAyAALQAAOgAAIABBAWohACADQQFqIgMgBEkNAAsLIAQgAiAFayICQXxxIgZqIQMCQCABIAVqIgVBA3EiAARAIAZBAUgNASAFQXxxIgdBBGohAUEAIABBA3QiCGtBGHEhCSAHKAIAIQADQCAEIAAgCHYgASgCACIAIAl0cjYCACABQQRqIQEgBEEEaiIEIANJDQALDAELIAZBAUgNACAFIQEDQCAEIAEoAgA2AgAgAUEEaiEBIARBBGoiBCADSQ0ACwsgAkEDcSECIAUgBmohAQwCCyADQXxxIQBBACADQQNxIgZrIQcgBgRAIAEgAmpBf2ohBANAIANBf2oiAyAELQAAOgAAIARBf2ohBCAAIANJDQALCyAAIAIgBmsiBkF8cSICayEDQQAgAmshAgJAIAUgB2oiBUEDcSIEBEAgAkF/Sg0BIAVBfHEiB0F8aiEBQQAgBEEDdCIIa0EYcSEJIAcoAgAhBANAIABBfGoiACAEIAl0IAEoAgAiBCAIdnI2AgAgAUF8aiEBIAMgAEkNAAsMAQsgAkF/Sg0AIAEgBmpBfGohAQNAIABBfGoiACABKAIANgIAIAFBfGohASADIABJDQALCyAGQQNxIgBFDQIgAiAFaiEFIAMgAGsLIQAgBUF/aiEBA0AgA0F/aiIDIAEtAAA6AAAgAUF/aiEBIAAgA0kNAAsMAQsgAkUNACACIANqIQADQCADIAEtAAA6AAAgAUEBaiEBIANBAWoiAyAASQ0ACwsLiQYCBH8BfiMAQSBrIgQkACAEIAEtAAAiBkEBajoAECAEQRhqIAIgBEEQakEBIAMoAgwiBREEAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfyAELQAYQQRGBEAgBCgCHAwBCyAEKQMYIghC/wGDQgZSDQEgCEIgiKcLIQcgBkEBaw4JAQIDBAUGBwgJCwsgACAINwIADAwLIARBCGogAUEEaiACIAMQhgEMCAsgBCABKAIENgIQIARBGGogAiAEQRBqQQQgBREEACAELQAYQQRGBEAgBCAEKAIcNgIMIARBBjoACAwICyAEIAQpAxg3AwgMBwsgBCABKwMIOQMYIARBEGogAiAEQRhqQQggBREEACAELQAQQQRGBEAgBCAEKAIUNgIMIARBBjoACAwHCyAEIAQpAxA3AwgMBgsgBCABKAIENgIQIARBGGogAiAEQRBqQQQgBREEACAELQAYQQRGBEAgBCAEKAIcNgIMIARBBjoACAwGCyAEIAQpAxg3AwgMBQsgBCABKQMINwMYIARBEGogAiAEQRhqQQggBREEACAELQAQQQRGBEAgBCAEKAIUNgIMIARBBjoACAwFCyAEIAQpAxA3AwgMBAsgBCABKAIENgIQIARBGGogAiAEQRBqQQQgBREEACAELQAYQQRGBEAgBCAEKAIcNgIMIARBBjoACAwECyAEIAQpAxg3AwgMAwsgBCABKQMINwMYIARBEGogAiAEQRhqQQggBREEACAELQAQQQRGBEAgBCAEKAIUNgIMIARBBjoACAwDCyAEIAQpAxA3AwgMAgsgBCABLQABOgAQIARBGGogAiAEQRBqQQEgBREEACAELQAYQQRGBEAgBCAEKAIcNgIMIARBBjoACAwCCyAEIAQpAxg3AwgMAQsgBEEIaiABQQRqIAIgAxCGAQsgBC0ACEEGRgRAIAQoAgwhBgwBCyAEKQMIIghC/wGDQgZSDQEgCEIgiKchBgsgAEEGOgAAIAAgBiAHajYCBAwBCyAAIAg3AgALIARBIGokAAvTBQEFfyMAQfAAayIDJAAgA0EoaiABIAIQ+QIgAyADKQMoNwMwIANB0ABqIANBMGoQPgJAIAMoAlAEQCADQegAaiADQdgAaikDADcDACADIAMpA1A3A2AgA0EgaiADQeAAahCdAyADKAIkIQQgAygCICEGIANBGGogA0HgAGoQngMgAygCHEUEQCAAIAY2AgQgAEEANgIAIABBCGogBDYCAAwCCwJAAkACQCACRQRAQQEhAQwBCyACQX9MDQIgAkEBEPcCIgFFDQELIANBADYCQCADIAE2AjwgAyACNgI4IAQgAksEfyADQThqQQAgBBCFASADKAJAIQUgAygCPAUgAQsgBWogBiAEEKIDGiADIAQgBWoiAjYCQCADKAI4IAJrQQJNBEAgA0E4aiACQQMQhQEgAygCQCECCyADKAI8IgEgAmoiBEGYzsAALwAAIgU7AAAgBEECakGazsAALQAAIgY6AAAgAyACQQNqIgI2AkAgAyADKQMwNwNIIANB0ABqIANByABqED4gAygCUARAA0AgA0HoAGogA0HYAGopAwA3AwAgAyADKQNQNwNgIANBEGogA0HgAGoQnQMgAygCECEHIAMoAjggAmsgAygCFCIESQRAIANBOGogAiAEEIUBIAMoAkAhAiADKAI8IQELIAEgAmogByAEEKIDGiADIAIgBGoiAjYCQCADQQhqIANB4ABqEJ4DIAMoAgwEQCADKAI4IAJrQQJNBEAgA0E4aiACQQMQhQEgAygCQCECCyADKAI8IgEgAmoiBCAFOwAAIARBAmogBjoAACADIAJBA2oiAjYCQAsgA0HQAGogA0HIAGoQPiADKAJQDQALCyAAIAMpAzg3AgQgAEEBNgIAIABBDGogA0FAaygCADYCAAwDCyACQQEQmwMACxCYAgALIABB5MzAADYCBCAAQQA2AgAgAEEIakEANgIACyADQfAAaiQAC9AEAgR/Bn4gACAAKAI4IAJqNgI4AkAgAAJ/AkACQAJAIAAoAjwiBUUEQAwBCwJ+IAJBCCAFayIEIAIgBEkbIgZBA00EQEIADAELQQQhAyABNQAACyEHIAAgACkDMCADQQFyIAZJBEAgASADajMAACADQQN0rYYgB4QhByADQQJyIQMLIAMgBkkEfiABIANqMQAAIANBA3SthiAHhAUgBwsgBUEDdEE4ca2GhCIHNwMwIAQgAksNASAAIAApAxggB4UiCCAAKQMIfCIJIAApAxAiCkINiSAKIAApAwB8IgqFIgt8IgwgC0IRiYU3AxAgACAMQiCJNwMIIAAgCSAIQhCJhSIIQhWJIAggCkIgiXwiCIU3AxggACAHIAiFNwMACyACIARrIgJBB3EhAyAEIAJBeHEiAkkEQCAAKQMIIQggACkDECEHIAApAwAhCSAAKQMYIQoDQCAIIAEgBGopAAAiCyAKhSIIfCIKIAcgCXwiCSAHQg2JhSIHfCIMIAdCEYmFIQcgCiAIQhCJhSIIQhWJIAggCUIgiXwiCYUhCiAMQiCJIQggCSALhSEJIARBCGoiBCACSQ0ACyAAIAc3AxAgACAJNwMAIAAgCjcDGCAAIAg3AwgLIANBA0sNAUIAIQdBAAwCCyACIAVqIQMMAgsgASAEajUAACEHQQQLIgJBAXIgA0kEQCABIAIgBGpqMwAAIAJBA3SthiAHhCEHIAJBAnIhAgsgAiADSQR+IAEgAiAEamoxAAAgAkEDdK2GIAeEBSAHCzcDMAsgACADNgI8C5oFAgZ/A34jAEEwayIDJAAgA0H/AToAByADQQhqIAEgA0EHakEBIAIoAiARBAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADLQAIQQRHBEAgAykDCCIKQv8Bg0IGUg0BC0ECIQQgAy0AB0F/ag4KAgMNBAoFBgkIBwELIAAgCjcCBAwNCyAAQQU6AAQMDAsgA0EIaiABIAIQYSADKQMIIQogAygCFCIHRQ0IIAMoAighBSADKQMgIQsgAykDGCEJIAMoAhAhCEEAIQQMCgsgA0EIaiABIAIQjgEgAykDCCEKIAMoAhQiB0UNByADKAIgIQUgAykDGCEJIAMoAhAhCEEBIQQMCQtBAyEEDAgLQQUhBAwHCyAAQQU6AAQMBwsgA0EIaiABIAIQRSADKAIMIgFFDQQgAa0gAykDECIJQiCGhCEKIAlCIIinIQUgAygCCCEGQQkhBAwFCyADQQhqIAEgAhBRIAMoAgwiAQRAIAGtIAMpAxAiCUIghoQhCiAJQiCIpyEFIAMoAgghBkEIIQQMBQsgACADKQMQNwIEDAULIANBCGogASACED8gAygCDCIBBEAgAa0gAykDECIJQiCGhCEKIAlCIIinIQUgAygCCCEGQQchBAwECyAAIAMpAxA3AgQMBAsgA0EIaiABIAIQRSADKAIMIgEEQCABrSADKQMQIglCIIaEIQogCUIgiKchBSADKAIIIQZBBCEEDAMLIAAgAykDEDcCBAwDCyAAIAo3AgQMAgsgACADKQMQNwIEDAELIAAgCzcCICAAIAk3AhggACAHNgIUIAAgCDYCECAAIAo3AgggACAGNgIEIAAgBDYCACAAIAVBAWo2AigMAQsgAEEKNgIACyADQTBqJAAL+QQBCn8jAEEwayIDJAAgA0EDOgAoIANCgICAgIAENwMgIANBADYCGCADQQA2AhAgAyABNgIMIAMgADYCCAJ/AkACQCACKAIAIgpFBEAgAkEUaigCACIARQ0BIAIoAhAhASAAQQN0IQUgAEF/akH/////AXFBAWohByACKAIIIQADQCAAQQRqKAIAIgQEQCADKAIIIAAoAgAgBCADKAIMKAIMEQUADQQLIAEoAgAgA0EIaiABQQRqKAIAEQEADQMgAUEIaiEBIABBCGohACAFQXhqIgUNAAsMAQsgAigCBCIARQ0AIABBBXQhCyAAQX9qQf///z9xQQFqIQcgAigCCCEAA0AgAEEEaigCACIBBEAgAygCCCAAKAIAIAEgAygCDCgCDBEFAA0DCyADIAUgCmoiBEEcai0AADoAKCADIARBFGopAgA3AyAgBEEQaigCACEGIAIoAhAhCEEAIQlBACEBAkACQAJAIARBDGooAgBBAWsOAgACAQsgBkEDdCAIaiIMQQRqKAIAQYMBRw0BIAwoAgAoAgAhBgtBASEBCyADIAY2AhQgAyABNgIQIARBCGooAgAhAQJAAkACQCAEQQRqKAIAQQFrDgIAAgELIAFBA3QgCGoiBkEEaigCAEGDAUcNASAGKAIAKAIAIQELQQEhCQsgAyABNgIcIAMgCTYCGCAIIAQoAgBBA3RqIgEoAgAgA0EIaiABKAIEEQEADQIgAEEIaiEAIAsgBUEgaiIFRw0ACwsgByACQQxqKAIASQRAIAMoAgggAigCCCAHQQN0aiIAKAIAIAAoAgQgAygCDCgCDBEFAA0BC0EADAELQQELIANBMGokAAvRBAEKfyMAQUBqIgMkACACKAIAIQkgAigCCCEIIANBOGohCiADQTBqIQsgA0EoaiEMA0AgAigCCCIFIAIoAgAiBEYEQCACQSAQywIgAigCACEEIAIoAgghBQsgAyAGNgIUIANBADYCECADIAQgBWs2AgwgAyACKAIEIAVqNgIIIANBGGogAUEAIANBCGoQqAECQAJAAkACQAJAAkACQAJAIAMtABgiBUEERgRAIAMoAhAiBQ0BIABBBDoAACAAIAIoAgggCGs2AgQMCAsCfwJAAkACQAJAIAVBAWsOAwECAwALIAMoAhwaQSgMAwsgAy0AGQwCCyADKAIcLQAIDAELIAMoAhwtAAgLQf8BcUEjRg0BIAAgAykDGDcCAAwHCyADKAIUIgYgBUkNASAGIAMoAgwiBEsNAiAFIARLDQMgAiACKAIIIAVqIgQ2AgggBCACKAIAIgdHIAcgCUdyDQUgCkIANwMAIAtCADcDACAMQgA3AwAgA0IANwMgIAMgARDwASADKAIAIQcgAygCBCIEQSAgBEEgSRsiBEEBRgRAIActAAAhByABIAEpAwAgBK18NwMAIAMgBzoAIAwFCyADQSBqIAcgBBCiAxogASABKQMAIAStfDcDACAEDQQgAEEEOgAAIAAgAigCCCAIazYCBAwGCyADIAMpAxg3AyAgA0EgahCIAgwGCyAFIAZB/I3AABCIAwALIAYgBEH8jcAAEIcDAAsgBSAEQZyNwAAQhwMACyACIANBIGogBBCXAgsgBiAFayEGDAELCyADQUBrJAALpQQBCH8jAEEgayIJJAACQAJAAkACQCADRQ0AIAJBBGohBCADQQN0IQYgA0F/akH/////AXFBAWohBwJAA0AgBCgCAA0BIARBCGohBCAFQQFqIQUgBkF4aiIGDQALIAchBQsgBSADSwRAIAUgA0HQk8AAEIYDAAsgAyAFayIIRQ0AIAIgBUEDdGohAwNAIAMiByAIQQN0IgJqIQpBACEFIAIhBiADQQRqIgMhBANAIAQoAgAgBWohBSAEQQhqIQQgBkF4aiIGDQALIAEgBRDLAiAIBEAgByEEA0AgASAEKAIAIARBBGooAgAQlwIgBEEIaiIEIApHDQALCyAFRQRAIABCgoCAgMCoggg3AgAMAwsgCEF/akH/////AXFBAWohC0EAIQRBACEGAkADQCADKAIAIAZqIgogBUsNASADQQhqIQMgBEEBaiEEIAohBiACQXhqIgINAAsgCyEECyAIIARJDQMgByAEQQN0IgJqIQMCQCAEIAhGBEAgBSAGRg0BIAlBFGpBATYCACAJQRxqQQA2AgAgCUGYlMAANgIQIAlBhJPAADYCGCAJQQA2AgggCUEIakGglMAAEKgCAAsgAiAHaiIKKAIEIgcgBSAGayICSQ0FIApBBGogByACazYCACADIAMoAgAgAmo2AgALIAggBGsiCA0ACwsgAEEEOgAACyAJQSBqJAAPCyAEIAhB0JPAABCGAwALIAIgB0Hgk8AAEIYDAAvVBAEEfyAAIAEQqAMhAgJAAkACQCAAEJgDDQAgACgCACEDAkAgABCBA0UEQCABIANqIQEgACADEKkDIgBB8PDAACgCAEcNASACKAIEQQNxQQNHDQJB6PDAACABNgIAIAAgASACEMUCDwsgASADakEQaiEADAILIANBgAJPBEAgABBiDAELIABBDGooAgAiBCAAQQhqKAIAIgVHBEAgBSAENgIMIAQgBTYCCAwBC0Hg8MAAQeDwwAAoAgBBfiADQQN2d3E2AgALIAIQ/AIEQCAAIAEgAhDFAgwCCwJAQfTwwAAoAgAgAkcEQCACQfDwwAAoAgBHDQFB8PDAACAANgIAQejwwABB6PDAACgCACABaiIBNgIAIAAgARDhAg8LQfTwwAAgADYCAEHs8MAAQezwwAAoAgAgAWoiATYCACAAIAFBAXI2AgQgAEHw8MAAKAIARw0BQejwwABBADYCAEHw8MAAQQA2AgAPCyACEJcDIgMgAWohAQJAIANBgAJPBEAgAhBiDAELIAJBDGooAgAiBCACQQhqKAIAIgJHBEAgAiAENgIMIAQgAjYCCAwBC0Hg8MAAQeDwwAAoAgBBfiADQQN2d3E2AgALIAAgARDhAiAAQfDwwAAoAgBHDQFB6PDAACABNgIACw8LIAFBgAJPBEAgACABEGAPCyABQXhxQdjuwABqIQICf0Hg8MAAKAIAIgNBASABQQN2dCIBcQRAIAIoAggMAQtB4PDAACABIANyNgIAIAILIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIC5gEAQd/IAEoAgQiBgRAIAEoAgAhBANAAkAgA0EBaiECAn8gAiADIARqLQAAIgdBGHRBGHUiCEEATg0AGgJAAkACQAJAAkACQAJAIAdBtNTAAGotAABBfmoOAwABAggLIAIgBGpB7c7AACACIAZJGy0AAEHAAXFBgAFHDQcgA0ECagwGCyACIARqQe3OwAAgAiAGSRssAAAhBSAHQaB+aiIHRQ0BIAdBDUYNAgwDCyACIARqQe3OwAAgAiAGSRssAAAhBQJAAkACQAJAIAdBkH5qDgUBAAAAAgALIAVBf0ogCEEPakH/AXFBAktyIAVBQE9yDQgMAgsgBUHwAGpB/wFxQTBPDQcMAQsgBUGPf0oNBgsgBCADQQJqIgJqQe3OwAAgAiAGSRstAABBwAFxQYABRw0FIAQgA0EDaiICakHtzsAAIAIgBkkbLQAAQcABcUGAAUcNBSADQQRqDAQLIAVBYHFBoH9HDQQMAgsgBUGgf04NAwwBCyAIQR9qQf8BcUEMTwRAIAhBfnFBbkcgBUF/SnIgBUFAT3INAwwBCyAFQb9/Sg0CCyAEIANBAmoiAmpB7c7AACACIAZJGy0AAEHAAXFBgAFHDQEgA0EDagsiAyICIAZJDQELCyAAIAM2AgQgACAENgIAIAEgBiACazYCBCABIAIgBGo2AgAgACACIANrNgIMIAAgAyAEajYCCA8LIABBADYCAAuEBAIKfwR+IwBB8ABrIgMkACADQX82AgwgA0FAayABIANBDGpBBCACKAIgEQQAAkACQAJAIAMtAEBBBEcEQCADKQNAIg1C/wGDQgZSDQELIAMgAygCDCIHEJ0BIANBADYCGCADIAMpAwA3AxAgB0UEQEEEIQUMAgsgA0HMAGohBkEEIQUDQAJAIANBQGsgASACEDkgAykCRCENIAMoAkAiCEEKRg0AIANBOGogBkEYaigCACIENgIAIANBMGogBkEQaikCACIONwMAIANBKGogBkEIaikCACIPNwMAIAMgBikCACIQNwMgIAMoAmghCSADQdgAaiIKIAQ2AgAgA0HQAGoiCyAONwMAIANByABqIgwgDzcDACADIBA3A0AgAygCGCIEIAMoAhBGBEAgA0EQaiAEEPsBIAMoAhghBAsgBSAJaiEFIAMoAhQgBEEobGoiBCANNwIEIAQgCDYCACAEIAMpA0A3AgwgBEEUaiAMKQMANwIAIARBHGogCykDADcCACAEQSRqIAooAgA2AgAgAyADKAIYQQFqNgIYIAdBf2oiBw0BDAMLCyAAQQA2AgQgACANNwIIIANBEGoQpwEgA0EQahDKAgwCCyAAQQA2AgQgACANNwIIDAELIAAgAykDEDcCACAAIAU2AgwgAEEIaiADQRhqKAIANgIACyADQfAAaiQAC4MEAgp/AX4jAEFAaiIDJAAgA0F/NgIUIANBKGogASADQRRqQQQgAigCIBEEAAJAAkACQCADLQAoQQRHBEAgAykDKCINQv8Bg0IGUg0BCyADQQhqIAMoAhQiBRCfASADQQA2AiAgAyADKQMINwMYIAVFBEBBBCEGDAILIANBKGpBAXIhB0EEIQYDQAJAIANBKGogASACEC0gAy0AKCIIQQpGDQAgA0EmaiAHQQJqLQAAIgQ6AAAgAyAHLwAAIgk7ASQgAykCLCENIAMoAjQhCiADKAI4IQsgA0EqaiIMIAQ6AAAgAyAJOwEoIAMoAiAiBCADKAIYRgRAIANBGGogBBD8ASADKAIgIQQLIAYgC2ohBiADKAIcIARBBHRqIgQgAy8BKDsAASAEIAg6AAAgBCAKNgIMIAQgDTcCBCAEQQNqIAwtAAA6AAAgAyADKAIgQQFqNgIgIAVBf2oiBQ0BDAMLCyADKQIsIQ0gAEEANgIEIAAgDTcCCCADKAIgIgAEQCADKAIcIQQgAEEEdCEFA0AgBC0AACIAQX5qQQdJIABFckUEQCAEQQRqEJoCCyAEQRBqIQQgBUFwaiIFDQALCyADQRhqEMoCDAILIABBADYCBCAAIA03AggMAQsgACADKQMYNwIAIAAgBjYCDCAAQQhqIANBIGooAgA2AgALIANBQGskAAvsAwEGfyMAQTBrIgUkAAJAAkACQAJAAkAgAUEMaigCACIDBEAgASgCCCEHIANBf2pB/////wFxIgNBAWoiBkEHcSEEAn8gA0EHSQRAQQAhAyAHDAELIAdBPGohAiAGQfj///8DcSEGQQAhAwNAIAIoAgAgAkF4aigCACACQXBqKAIAIAJBaGooAgAgAkFgaigCACACQVhqKAIAIAJBUGooAgAgAkFIaigCACADampqampqamohAyACQUBrIQIgBkF4aiIGDQALIAJBRGoLIQIgBARAIAJBBGohAgNAIAIoAgAgA2ohAyACQQhqIQIgBEF/aiIEDQALCyABQRRqKAIADQEgAyEEDAMLQQAhAyABQRRqKAIADQFBASECDAQLIAcoAgQNACADQRBJDQILIAMgA2oiBCADSQ0BCyAERQ0AAkAgBEF/SgRAIARBARD3AiICRQ0BIAQhAwwDCxCYAgALIARBARCbAwALQQEhAkEAIQMLIABBADYCCCAAIAI2AgQgACADNgIAIAUgADYCDCAFQSBqIAFBEGopAgA3AwAgBUEYaiABQQhqKQIANwMAIAUgASkCADcDECAFQQxqQczMwAAgBUEQahA6BEBBrM3AAEEzIAVBKGpB4M3AAEGIzsAAELQBAAsgBUEwaiQAC5IEAwN/AX4BfCMAQfAAayICJAAgAiABNgI8AkBBAUECIAEQBSIDQQFGG0EAIAMbIgNBAkcEQCAAQQg6AAAgACADOgABDAELIAJBKGogARAGIAIoAighAyACQRhqIgQgAisDMDkDCCAEIANBAEetNwMAIAIpAxinBEAgAisDICEGIABBAzoAACAAIAY5AwgMAQsgAkEQaiABEAICQAJAIAIoAhAiBEUEQCACQQA2AkQMAQsgAigCFCEDIAIgBDYCZCACIAM2AmggAiADNgJgIAJBCGogAkHgAGoQsQIgAkFAayACKAIIIAIoAgwQ5QIgAigCREUNACAAIAIpA0A3AgQgAEEBOgAAIABBDGogAkHIAGooAgA2AgAMAQsCQAJAAkACQAJAAkAgARAHQQFGDQAgARAIQQFGDQAgAiACQTxqEJUCIAIoAgQhASACKAIARQ0BIABBADoAACABQYQBTw0CDAMLIABBADoAAAwCCyACIAE2AkwgAkHgAGogAkHMAGoQ0AEgAigCZEUNAiACQdgAaiACQegAaigCACIDNgIAIAIgAikDYCIFNwNQIABBDGogAzYCACAAIAU3AgQgAEEJOgAAIAFBhAFJDQELIAEQAAsgAigCRA0BDAILQcCXwABBK0HsncAAEPcBAAsgAkFAaxCaAgsgAigCPCEBCyABQYQBTwRAIAEQAAsgAkHwAGokAAvOAwICfwZ+IwBB0ABrIgIkACACQUBrIgNCADcDACACQgA3AzggAiAAKQMIIgQ3AzAgAiAAKQMAIgU3AyggAiAEQvPK0cunjNmy9ACFNwMgIAIgBELt3pHzlszct+QAhTcDGCACIAVC4eSV89bs2bzsAIU3AxAgAiAFQvXKzYPXrNu38wCFNwMIIAJBCGogASgCBCABKAIIEDggAkH/AToATyACQQhqIAJBzwBqQQEQOCADNQIAIQUgAikDOCEGIAIpAyAgAikDECEIIAIpAwghCSACKQMYIQQgAkHQAGokACAGIAVCOIaEIgWFIgZCEIkgBiAIfCIGhSIHIAQgCXwiCEIgiXwiCSAFhSAGIARCDYkgCIUiBHwiBSAEQhGJhSIEfCIGIARCDYmFIgQgB0IViSAJhSIHIAVCIIlC/wGFfCIFfCIIIARCEYmFIgRCDYkgBCAHQhCJIAWFIgUgBkIgiXwiBnwiBIUiB0IRiSAHIAVCFYkgBoUiBSAIQiCJfCIGfCIHhSIIQg2JIAggBUIQiSAGhSIFIARCIIl8IgR8hSIGIAVCFYkgBIUiBCAHQiCJfCIFfCIHIARCEIkgBYVCFYmFIAZCEYmFIAdCIImFC9IDAQZ/IwBBEGsiCCQAIAAoAgwiBSAAKAIAIgcgAaciCXEiBmopAABCgIGChIiQoMCAf4MiAVAEQEEIIQQDQCAEIAZqIQYgBEEIaiEEIAUgBiAHcSIGaikAAEKAgYKEiJCgwIB/gyIBUA0ACwsCQCAAKAIEIAUgAXqnQQN2IAZqIAdxIgRqLAAAIgZBf0oEfyAFIAUpAwBCgIGChIiQoMCAf4N6p0EDdiIEai0AAAUgBgtBAXEiBkVyDQAgCEEIaiAAIAMQMiAAKAIMIgUgACgCACIHIAlxIgNqKQAAQoCBgoSIkKDAgH+DIgFQBEBBCCEEA0AgAyAEaiEDIARBCGohBCAFIAMgB3EiA2opAABCgIGChIiQoMCAf4MiAVANAAsLIAUgAXqnQQN2IANqIAdxIgRqLAAAQX9MDQAgBSkDAEKAgYKEiJCgwIB/g3qnQQN2IQQLIAAgACgCBCAGazYCBCAEIAVqIAlBGXYiAzoAACAEQXhqIAdxIAVqQQhqIAM6AAAgACAAKAIIQQFqNgIIIAAoAgxBACAEa0EYbGpBaGoiACACKQIANwIAIABBEGogAkEQaikCADcCACAAQQhqIAJBCGopAgA3AgAgCEEQaiQAC9IDAgV/AX4jAEFAaiIDJAAgA0F/NgIUIANBKGogASADQRRqQQQgAigCICIHEQQAAkACQCADLQAoQQRHBEAgAykDKCIIQv8Bg0IGUg0BC0EAIQIgA0EIaiADKAIUIgYQ3gEgA0EANgIgIAMgAygCDCIENgIcIAMgAygCCCIFNgIYIANB/wE6ACcCQAJAIANBKGogBgRAIAYhBANAIANBKGogASADQSdqQQEgBxEEACADLQAoQQRHBEAgAykDKCIIQv8Bg0IGUg0DCyADLQAnIQUgAygCICICIAMoAhhGBH8gA0EYaiACEPoBIAMoAiAFIAILIAMoAhxqIAU6AAAgAyADKAIgQQFqIgI2AiAgBEF/aiIEDQALIAMoAhghBSADKAIcIQQLIAQgAhAwIAMoAigEQCADKQIsIghCgICAgPAfg0KAgICAIFINAgsgACACNgIIIAAgBkEEajYCDCAAIAWtIAStQiCGhDcCAAwDCyAAQQA2AgQgACAINwIIIANBGGoQmgIMAgsgAyACNgI4IAMgCDcDKCADIAWtIAStQiCGhDcDMCADQTBqEJoCIABBADYCBCAAQgU3AggMAQsgAEEANgIEIAAgCDcCCAsgA0FAayQAC9kDAQd/IwBBEGsiBiQAQbTswAAoAgAiBEGo7MAAKAIAIgUgAKciB3EiA2opAABCgIGChIiQoMCAf4MiAFAEQEEIIQIDQCACIANqIQMgAkEIaiECIAQgAyAFcSIDaikAAEKAgYKEiJCgwIB/gyIAUA0ACwsCQEGs7MAAKAIAIAQgAHqnQQN2IANqIAVxIgJqLAAAIgNBf0oEfyAEIAQpAwBCgIGChIiQoMCAf4N6p0EDdiICai0AAAUgAwtBAXEiCEVyDQAgBkEIahA0QbTswAAoAgAiBEGo7MAAKAIAIgUgB3EiA2opAABCgIGChIiQoMCAf4MiAFAEQEEIIQIDQCACIANqIQMgAkEIaiECIAQgAyAFcSIDaikAAEKAgYKEiJCgwIB/gyIAUA0ACwsgBCAAeqdBA3YgA2ogBXEiAmosAABBf0wNACAEKQMAQoCBgoSIkKDAgH+DeqdBA3YhAgtBrOzAAEGs7MAAKAIAIAhrNgIAIAIgBGogB0EZdiIDOgAAIAJBeGogBXEgBGpBCGogAzoAAEGw7MAAQbDswAAoAgBBAWo2AgBBtOzAACgCACACQQR0a0FwaiICIAEpAgA3AgAgAkEIaiABQQhqKQIANwIAIAZBEGokAAuTAwELfyMAQTBrIgMkACADQoGAgICgATcDICADIAI2AhwgA0EANgIYIAMgAjYCFCADIAE2AhAgAyACNgIMIANBADYCCCAAKAIEIQggACgCACEJIAAoAgghCgJ/A0ACQCAGRQRAAkAgBCACSw0AA0AgASAEaiEGAn8gAiAEayIFQQhPBEAgAyAGIAUQXCADKAIEIQAgAygCAAwBC0EAIQBBACAFRQ0AGgNAQQEgACAGai0AAEEKRg0BGiAFIABBAWoiAEcNAAsgBSEAQQALQQFHBEAgAiEEDAILAkAgACAEaiIAQQFqIgRFIAQgAktyDQAgACABai0AAEEKRw0AQQAhBiAEIQUgBCEADAQLIAQgAk0NAAsLQQEhBiACIgAgByIFRw0BC0EADAILAkAgCi0AAARAIAlB9M/AAEEEIAgoAgwRBQANAQsgASAHaiELIAAgB2shDCAKIAAgB0cEfyALIAxqQX9qLQAAQQpGBSANCzoAACAFIQcgCSALIAwgCCgCDBEFAEUNAQsLQQELIANBMGokAAvOAwEEfyMAQYABayIBJAAgASAANgIUIAFBPGpBAjYCACABQSBqQgA3AwAgAUEANgIYIAFBGGoQsAIiACAAKAIAQQFqIgI2AgACQAJAIAJFDQAgAUEIaiAAELkCIAEoAggiAkGUt8AAEJUDIQMgAUGUt8AANgJMIAEgAjYCSCABIAM2AlAgACAAKAIAQQFqIgI2AgAgAkUNACABIAAQuAIgASgCACICQYC3wAAQlQMhAyABQYC3wAA2AlwgASACNgJYIAEgAzYCYCABQRRqKAIAIAFByABqKAIIIAFB2ABqKAIIEB0iAkGEAU8EQCACEAALIAFBIGoiAiABQdAAaigCADYCACABQSxqIAFB4ABqKAIANgIAIAEgASkDWDcCJCABQfAAaiIDIAIpAwA3AwAgAUH4AGoiAiABQShqKQMANwMAIAEgASkDSDcDaCAAKAIIDQEgAEF/NgIIIABBFGoiBBDaAiAAQSRqIAIpAwA3AgAgAEEcaiADKQMANwIAIAQgASkDaDcCACAAIAAoAghBAWo2AgggASgCFCICQYQBTwRAIAIQAAsgAUGAAWokACAADwsAC0HgtsAAQRAgAUEYakHwtsAAQaC4wAAQtAEAC48DAQV/AkACQAJAAkAgAUEJTwRAQRBBCBDmAiABSw0BDAILIAAQJCEEDAILQRBBCBDmAiEBC0EIQQgQ5gIhA0EUQQgQ5gIhAkEQQQgQ5gIhBUEAQRBBCBDmAkECdGsiBkGAgHwgBSACIANqamtBd3FBfWoiAyAGIANJGyABayAATQ0AIAFBECAAQQRqQRBBCBDmAkF7aiAASxtBCBDmAiIDakEQQQgQ5gJqQXxqECQiAkUNACACEKsDIQACQCABQX9qIgQgAnFFBEAgACEBDAELIAIgBGpBACABa3EQqwMhAkEQQQgQ5gIhBCAAEJcDIAJBACABIAIgAGsgBEsbaiIBIABrIgJrIQQgABCBA0UEQCABIAQQugIgACACELoCIAAgAhA9DAELIAAoAgAhACABIAQ2AgQgASAAIAJqNgIACyABEIEDDQEgARCXAyICQRBBCBDmAiADak0NASABIAMQqAMhACABIAMQugIgACACIANrIgMQugIgACADED0MAQsgBA8LIAEQqgMgARCBAxoLvwMBAX8jAEFAaiICJAACQAJAAkACQAJAAkAgAC0AAEEBaw4DAQIDAAsgAiAAKAIENgIEQRRBARD3AiIARQ0EIABBEGpBxMfAACgAADYAACAAQQhqQbzHwAApAAA3AAAgAEG0x8AAKQAANwAAIAJBFDYCECACIAA2AgwgAkEUNgIIIAJBNGpBAzYCACACQTxqQQI2AgAgAkEkakHtADYCACACQazFwAA2AjAgAkEANgIoIAJB7gA2AhwgAiACQRhqNgI4IAIgAkEEajYCICACIAJBCGo2AhggASACQShqENgBIQAgAigCCEUNAyACKAIMECsMAwsgAC0AASEAIAJBNGpBATYCACACQTxqQQE2AgAgAkGov8AANgIwIAJBADYCKCACQe8ANgIMIAIgAEEgc0E/cUECdCIAQcjHwABqKAIANgIcIAIgAEHIycAAaigCADYCGCACIAJBCGo2AjggAiACQRhqNgIIIAEgAkEoahDYASEADAILIAAoAgQiACgCACAAKAIEIAEQnAMhAAwBCyAAKAIEIgAoAgAgASAAQQRqKAIAKAIQEQEAIQALIAJBQGskACAADwtBFEEBEJsDAAuPAwIKfwV+IwBBIGsiBCQAIAFBEGohCCABIAIQQyEPIAFBHGooAgAiCUFoaiEKIAEoAhAiByAPp3EhBiAPQhmIQv8Ag0KBgoSIkKDAgAF+IREgAigCCCELIAIoAgQhDAJAAkACQANAIAYgCWopAAAiECARhSIOQn+FIA5C//379+/fv/9+fINCgIGChIiQoMCAf4MhDgNAIA5QBEAgECAQQgGGg0KAgYKEiJCgwIB/g1BFDQMgBiANQQhqIg1qIAdxIQYMAgsgDnohEiAOQn98IA6DIQ4gDCALIApBACASp0EDdiAGaiAHcWtBGGxqIgUoAgQgBSgCCBDRAkUNAAsLIAUNAQsgBEEQaiACQQhqKAIANgIAIARBHGogA0EIaigCADYCACAEIAIpAgA3AwggBCADKQIANwIUIAggDyAEQQhqIAEQRCAAQQA2AgQMAQsgACAFKQIMNwIAIAUgAykCADcC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AkACQCAALQAAIgNBfGpBAiADQQNLG0H/AXFBAWsOAgECAAsgAkEcakEBNgIAIAJBJGpBADYCACACQeyfwAA2AhggAkH8ncAANgIgIAJBADYCECABIAJBEGoQ2AEMAgsgAkEcakEBNgIAIAJBJGpBADYCACACQcifwAA2AhggAkH8ncAANgIgIAJBADYCECABIAJBEGoQ2AEMAQsgAiAANgIMIAJBHGpBAjYCACACQSRqQQE2AgAgAkGgn8AANgIYIAJBADYCECACQcIANgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqENgBCyACQTBqJAAL6gECAn8BfiMAQSBrIgMkACAAKAIARQRAIABBfzYCACADQRhqIABBHGopAgA3AwAgA0EQaiAAQRRqKQIANwMAIABBDGoiBCkCACEFIARBADYCACADIAU3AwggA0EIahDaAgJAIABBJGooAgBBAkYNACAAQShqKAIAIgRBhAFJDQAgBBAACyAAIAE2AiQgAEEoaiACNgIAIABBCGoiAigCACEBIAJBADYCACAAIAAoAgBBAWo2AgAgAQRAIAAoAgQgASgCBBECAAsgA0EgaiQADwtB4LbAAEEQIANBCGpB8LbAAEGwuMAAELQBAAvpAQIDfwJ+IwBBIGsiAyQAIANBEGogASACEEUCQAJAIAMoAhQiBARAIAMoAhAhBSADIAMpAxgiBz4CCCADIAQ2AgQgAyAFNgIAIANBEGogASACEFMgAygCFCIBRQ0BIAMoAhAhAiADKQMYIQYgACADKQMANwIAIAAgBj4CFCAAIAE2AhAgACACNgIMIABBCGogA0EIaigCADYCACAAIAZCIIinIAdCIIinajYCGAwCCyADKQMYIQYgAEEANgIEIAAgBjcCCAwBCyADKQMYIQYgAEEANgIEIAAgBjcCCCADEJoCCyADQSBqJAAL0AEBBX8jAEEgayIDJAAgAAJ/QQAgAkEBaiIEIAJJDQAaIAEoAgAiAkEBdCIFIAQgBSAESxsiBEEEIARBBEsbIgVBBHQhBCAFQYCAgMAASUEDdCEGAkAgAgRAIAEoAgQhByADQQg2AhggAyACQQR0NgIUIAMgBzYCEAwBCyADQQA2AhgLIAMgBCAGIANBEGoQlwEgAygCBCEEIAMoAgAEQCADQQhqKAIADAELIAEgBTYCACABIAQ2AgRBgYCAgHgLNgIEIAAgBDYCACADQSBqJAALzwEBBX8jAEEgayIDJAAgAAJ/QQAgAkEBaiIEIAJJDQAaIAEoAgAiAkEBdCIFIAQgBSAESxsiBEEEIARBBEsbIgVBGGwhBCAFQdaq1SpJQQJ0IQYCQCACBEAgASgCBCEHIANBBDYCGCADIAJBGGw2AhQgAyAHNgIQDAELIANBADYCGAsgAyAEIAYgA0EQahCXASADKAIEIQQgAygCAARAIANBCGooAgAMAQsgASAFNgIAIAEgBDYCBEGBgICAeAs2AgQgACAENgIAIANBIGokAAvQAQEFfyMAQSBrIgMkACAAAn9BACACQQFqIgQgAkkNABogASgCACICQQF0IgUgBCAFIARLGyIEQQQgBEEESxsiBUEMbCEEIAVBq9Wq1QBJQQJ0IQYCQCACBEAgASgCBCEHIANBBDYCGCADIAJBDGw2AhQgAyAHNgIQDAELIANBADYCGAsgAyAEIAYgA0EQahCXASADKAIEIQQgAygCAARAIANBCGooAgAMAQsgASAFNgIAIAEgBDYCBEGBgICAeAs2AgQgACAENgIAIANBIGokAAvPAQEFfyMAQSBrIgMkACAAAn9BACACQQFqIgQgAkkNABogASgCACICQQF0IgUgBCAFIARLGyIEQQQgBEEESxsiBUEobCEEIAVBtObMGUlBA3QhBgJAIAIEQCABKAIEIQcgA0EINgIYIAMgAkEobDYCFCADIAc2AhAMAQsgA0EANgIYCyADIAQgBiADQRBqEJcBIAMoAgQhBCADKAIABEAgA0EIaigCAAwBCyABIAU2AgAgASAENgIEQYGAgIB4CzYCBCAAIAQ2AgAgA0EgaiQAC9ABAQV/IwBBIGsiAyQAIAACf0EAIAJBAWoiBCACSQ0AGiABKAIAIgJBAXQiBSAEIAUgBEsbIgRBBCAEQQRLGyIFQQJ0IQQgBUGAgICAAklBAnQhBgJAIAIEQCABKAIEIQcgA0EENgIYIAMgAkECdDYCFCADIAc2AhAMAQsgA0EANgIYCyADIAQgBiADQRBqEJcBIAMoAgQhBCADKAIABEAgA0EIaigCAAwBCyABIAU2AgAgASAENgIEQYGAgIB4CzYCBCAAIAQ2AgAgA0EgaiQAC8kBAQV/IwBBMGsiAiQAIAJBCGpBgAgQ3gEgAkEANgIYIAIgAikDCDcDECACQSBqIAEgAkEQahCDAQJAIAItACBBBkYEQCACKAIkIQUgAigCFCEEIAIgAigCGCIDEN4BIAIoAgAhBiACKAIEIAQgAxCiAyEEIAAgBTYCDCAAIAM2AgggACAENgIEIAAgBjYCAAwBCyACIAIpAyA3AyggAkEoahCpASEDIABBADYCBCAAIAM2AgALIAJBEGoQmgIgARC4ASACQTBqJAAL4AEBAn8jAEEgayICJAAgAiAANgIMIAIgASgCAEG85MAAQREgASgCBCgCDBEFADoAGCACIAE2AhQgAkEAOgAZIAJBADYCECACQRBqIAJBDGpBrOTAABBfIQACfyACLQAYIgEgACgCACIDRQ0AGiABQf8BcSEAQQEgAA0AGiACKAIUIQACQCADQQFHDQAgAi0AGUUNACAALQAYQQRxDQBBASAAKAIAQYjQwABBASAAKAIEKAIMEQUADQEaCyAAKAIAQcfOwABBASAAKAIEKAIMEQUACyACQSBqJABB/wFxQQBHC70BAgJ/AX4jAEEgayIDJAAgA0GACBDeASADQQA2AhAgAyADKQMANwMIIANBGGogASADQQhqQeyQwAAQVgJAAkACQAJ/IAMtABhBBkYEQCADKAIcDAELIAMpAxgiBUL/AYNCBlINASAFQiCIpwshASADKAIQIgQgAUkNAiADKAIMIAEgAhDqASAAQQY6AAAgACABNgIEDAELIAAgBTcCAAsgA0EIahCaAiADQSBqJAAPCyABIARB1JHAABCHAwALzAEBAn8jAEEgayIDJAACQAJAIAEgAmoiAiABSQ0AIAAoAgAiAUEBdCIEIAIgBCACSxsiAkEIIAJBCEsbIgJBf3NBH3YhBAJAIAEEQCADQQE2AhggAyABNgIUIAMgAEEEaigCADYCEAwBCyADQQA2AhgLIAMgAiAEIANBEGoQmAEgAygCBCEBIAMoAgBFBEAgACACNgIAIAAgATYCBAwCCyADQQhqKAIAIgBBgYCAgHhGDQEgAEUNACABIAAQmwMACxCYAgALIANBIGokAAvMAQECfyMAQSBrIgMkAAJAAkAgASACaiICIAFJDQAgACgCACIBQQF0IgQgAiAEIAJLGyICQQggAkEISxsiAkF/c0EfdiEEAkAgAQRAIANBATYCGCADIAE2AhQgAyAAQQRqKAIANgIQDAELIANB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AygCEEUEQCAAIAMpAwg3AgAgAyABKAIINgIADAELIAMpAwgiBUL/AYNCBFEEQCAAQZCNwAA2AgQgAEECNgIADAELIAAgBTcCAAsgAygCBCADKAIANgIIIANBIGokAA8LIAQgAkHcjMAAEIYDAAumAQEBfyMAQTBrIgMkACADQQQ6AAggAyABNgIQIANBKGogAkEQaikCADcDACADQSBqIAJBCGopAgA3AwAgAyACKQIANwMYAkAgA0EIakHQksAAIANBGGoQOgRAIAMtAAhBBEYEQCAAQfiSwAA2AgQgAEECNgIADAILIAAgAykDCDcCAAwBCyAAQQQ6AAAgAy0ACEEERg0AIANBCGoQiAILIANBMGokAAupAQEDfyMAQTBrIgIkACABKAIERQRAIAEoAgwhAyACQRBqIgRBADYCACACQoCAgIAQNwMIIAIgAkEIajYCFCACQShqIANBEGopAgA3AwAgAkEgaiADQQhqKQIANwMAIAIgAykCADcDGCACQRRqQdi+wAAgAkEYahA6GiABQQhqIAQoAgA2AgAgASACKQMINwIACyAAQdzGwAA2AgQgACABNgIAIAJBMGokAAudAQEBfyMAQUBqIgQkACAEIAI2AjggBCABNgI0IAQgAjYCMCAEQQhqIARBMGoQsQIgBEEgaiAEKAIIIAQoAgwQ5QIgBEE4aiIBIARBKGooAgA2AgAgBCAEKQMgNwMwIARBEGogBEEwaiADEFAgASAEQRhqKAIANgIAIAQgBCkDEDcDMCAEIARBMGoQsQIgACAEKQMANwMAIARBQGskAAusAQEDfyMAQSBrIgMkACADQgA3AwggA0EBOgAcIANBCGoQhgIiAiACKAIAQQFqIgQ2AgACQCAEBEAgAigCCA0BIAJBfzYCCCACQQxqIgQQiQIgAkEYakHQucAANgIAIAJBFGogAkEIajYCACACQRBqIAE2AgAgBCAANgIAIAJBADYCCCACEPQBIANBIGokAA8LAAtB4LbAAEEQIANBCGpB8LbAAEG8ucAAELQBAAubAQEBfyMAQUBqIgMkACADIAI2AjggAyABNgI0IAMgAjYCMCADQQhqIANBMGoQsQIgA0EgaiADKAIIIAMoAgwQ5QIgA0E4aiIBIANBKGooAgA2AgAgAyADKQMgNwMwIANBEGogA0EwahBSIAEgA0EYaigCADYCACADIAMpAxA3AzAgAyADQTBqELECIAAgAykDADcDACADQUBrJAALswEBAn8gACgCCCICBEAgACgCBCEAIAJBKGwhAgNAAkACQAJAAkACQAJAAkAgACgCAA4JAQIGBgMGBgQFAAsgAEEEahCaAgwFCyAAQRBqEJoCIABBHGoiARDrASABEMoCDAQLIABBEGoiARDrASABEMoCDAMLIABBBGoQmgIMAgsgAEEEaiIBEKcBIAEQygIMAQsgAEEEaiIBEJsCIAEQygILIABBKGohACACQVhqIgINAAsLC5sBAQN/IwBBEGsiBSQAIAMoAgghAiAFQQhqIAEQ8AEgAygCBCIEIAJJBEAgAiAEQayFwAAQhgMACyADKAIAIAJqIAUoAgggBCACayIEIAUoAgwiBiAEIAZJGyIEEKIDGiADIAIgBGoiAjYCCCAAQQQ6AAAgASABKQMAIAStfDcDACADIAMoAgwiACACIAAgAksbNgIMIAVBEGokAAudAQEDfyMAQUBqIgEkACABQQA2AgggAUKAgICAEDcDACABQRBqIAFB7JXAABC+AiAAIAFBEGoQeUUEQCABQRhqIAFBCGooAgA2AgAgASABKQMANwMQIAFBEGoQ2wIgAC0AACIDQQRPQQAgA0EGcUEERhtFBEAgABCIAgsgAUFAayQADwtBhJbAAEE3IAFBOGpBvJbAAEGYl8AAELQBAAudAQEDfyMAQUBqIgEkACABQQA2AgggAUKAgICAEDcDACABQRBqIAFB7JXAABC+AiAAIAFBEGoQeEUEQCABQRhqIAFBCGooAgA2AgAgASABKQMANwMQIAFBEGoQ2wIgAC0AACIDQQRPQQAgA0EGcUEERhtFBEAgABCIAgsgAUFAayQADwtBhJbAAEE3IAFBOGpBvJbAAEGYl8AAELQBAAuKAQEFfyAAIAAoAgAiARCDAiAAKAIIIgUgASAAKAIMIgJrSwRAIAEgBWsiAyACIANrIgJLQQAgACgCACIEIAFrIAJPG0UEQCAAKAIEIgEgBCADayIEQQJ0aiABIAVBAnRqIANBAnQQoQMgACAENgIIDwsgACgCBCIAIAFBAnRqIAAgAkECdBCiAxoLC7UBAQN/IwBBEGsiASQAIAAoAgAiAkEUaigCACEDAkACfwJAAkAgAkEMaigCAA4CAAEDCyADDQJBACECQfC+wAAMAQsgAw0BIAIoAggiAygCBCECIAMoAgALIQMgASACNgIEIAEgAzYCACABQZDHwAAgACgCBCIBKAIIIAAoAgggAS0AEBCLAQALIAFBADYCBCABIAI2AgwgAUH8xsAAIAAoAgQiASgCCCAAKAIIIAEtABAQiwEAC5cBAQJ/IwBBEGsiASQAIAAoAgBFBEAgAEF/NgIAIAACf0EAIAAoAgQiAkUNABogAEEAOgAUIAEgAEEMajYCBCACIAFBBGogAEEIaigCACgCDBEBAEUEQCAAQQRqIgIQiQIgAkEANgIACyAAKAIAQQFqCzYCACABQRBqJAAPC0HgtsAAQRAgAUEIakHwtsAAQeC5wAAQtAEAC5QBAQF/AkACQAJAAkACQCAALQBgDgUABAQBAgQLIABBEGoQuAEPCyAAQegAahCvAQwBCyAAQewAahCvASAAKAJoIgFBhAFJDQAgARAACyAAKAJYIgFBhAFPBEAgARAACyAAKAJUIgFBhAFPBEAgARAACyAAQcgAahCaAiAAQTxqEJoCIAAoAjgiAEGEAUkNACAAEAALC44BAQF/IAAoAgAiACAAKAIAQX9qIgE2AgACQCABDQACQCAAQSxqKAIAQQJGDQAgAEEwaigCACIBQYQBSQ0AIAEQAAsgAEEQaigCACIBBEAgACgCDCABKAIMEQIACyAAQRRqIgEoAgAEQCABEKkCIABBIGoQqQILIAAgACgCBEF/aiIBNgIEIAENACAAECsLC4gBAQF/IwBBEGsiAiQAIAJB6LLAAEEEEAE2AgggAiABBH8gASgCABADBUGAAQs2AgwgAiAAIAJBCGogAkEMahDiASACKAIMIgBBhAFPBEAgABAACyACKAIIIgBBhAFPBEAgABAACwJAIAItAABFDQAgAigCBCIAQYQBSQ0AIAAQAAsgAkEQaiQAC5EBAQR/IwBBIGsiASQAIAFBHGpBADoAACABQgA3AhQgAUEENgIQIAFCADcDCCABQQhqEIYCIQIgAUGAATYCCCABQQhqKAIAEBshAyACIAIoAgBBAWoiBDYCACAEBEAgAEEIaiACEKMCIAAgAzYCACAAIAI2AgQgASgCCCIAQYQBTwRAIAAQAAsgAUEgaiQADwsAC38BBH8jAEEQayICJAAgACgCCCIDIAAoAgQiAUcEQCADIAFrQQR2QQR0IQMDQCABLQAAIgRBfmpBB0kgBEVyRQRAIAFBBGoQmgILIAFBEGohASADQXBqIgMNAAsLIAIgACgCDDYCDCACIAAoAgA2AgggAkEIahDKAiACQRBqJAALgAEBBH8CQCADBEAgAiADQQN0IgZqIQcgAkEEaiEFA0AgBSgCACAEaiEEIAVBCGohBSAGQXhqIgYNAAsgASAEEMsCIANFDQEDQCABIAIoAgAgAkEEaigCABCXAiACQQhqIgIgB0cNAAsMAQsgAUEAEMsCCyAAQQQ6AAAgACAENgIEC4oBAQF/IwBBQGoiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQSRqQQI2AgAgBUEsakECNgIAIAVBPGpBhQE2AgAgBUHMz8AANgIgIAVBADYCGCAFQYQBNgI0IAUgBUEwajYCKCAFIAVBEGo2AjggBSAFQQhqNgIwIAVBGGogBBCoAgALhQEBAX8gACgCACIAIAAoAgBBf2oiATYCAAJAIAENACAAQQxqKAIAIgEEQCABIABBEGoiASgCACgCABECACABKAIAIgEoAgQEQCABKAIIGiAAKAIMECsLIABBFGooAgAgAEEYaigCACgCDBECAAsgACAAKAIEQX9qIgE2AgQgAQ0AIAAQKwsLlgEBAn8jAEEQayIDJAAgACgCBCICKAIIRQRAIAJBfzYCCCACQQxqIAEQ5AEgAiACKAIIQQFqNgIIIAAoAgRBHGoiAS0AACECIAFBAToAAAJAIAJBAXENACAAKAIAIABBCGooAggQHCIAQYQBSQ0AIAAQAAsgA0EQaiQADwtBiLXAAEEQIANBCGpBmLXAAEHQtsAAELQBAAuGAQIBfwF+IwBBIGsiBiQAIAEEQCAGIAEgAyAEIAUgAigCEBEJACAGQRhqIAZBCGooAgAiATYCACAGIAYpAwAiBzcDECAHpyABSwRAIAZBEGogARCfAiAGKAIYIQELIAYoAhQhAiAAIAE2AgQgACACNgIAIAZBIGokAA8LQee7wABBMhCWAwALdQACQAJAAkACQAJAAkAgACgCAA4JAAECAgUCAgMEBQsgAEEQahCaAiAAQRxqIgAQ6wEgABDKAg8LIABBEGoiABDrASAAEMoCCw8LIABBBGoiABCnASAAEMoCDwsgAEEEaiIAEJsCIAAQygIPCyAAQQRqEJoCC4cBAQN/IwBBEGsiBSQAIAVBCGogARDwASAFKAIIIQYCQAJAIAMgBSgCDCIEIAMgBEkbIgRBAUcEQCACIAYgBBCiAxoMAQsgA0UNASACIAYtAAA6AAALIAAgBDYCBCAAQQQ6AAAgASABKQMAIAStfDcDACAFQRBqJAAPC0EAQQBB8IPAABDDAQALkQEBAX8CQAJAAkACQCAALQDYAg4EAAMDAQMLIABByAJqLQAAQQNGBEAgAEGwAWoQrAILIAAoAtACIgFBhAFPBEAgARAACyAAKALUAiIAQYMBSw0BDAILIAAtAKABQQNGBEAgAEEIahCsAgsgACgC0AIiAUGEAU8EQCABEAALIAAoAtQCIgBBgwFNDQELIAAQAAsLeQEEfyMAQRBrIgIkACAAKAIIIgMgACgCBCIBa0EYbiEEIAEgA0cEQCABIARBGGxqIQMDQCABEJoCIAFBDGoiBBCmAiAEEMoCIAFBGGoiASADRw0ACwsgAiAAKAIMNgIMIAIgACgCADYCCCACQQhqEMoCIAJBEGokAAuJAQECfyABKAIIIQIgASgCBCEDAkACQCABKAIARQRAAkAgAkUEQEEBIQEMAQsgAkF/TA0CIAJBARD3AiIBRQ0DCyAAIAEgAyACEKIDNgIEIAAgAjYCACAAIAI2AggPCyABKAIMIQEgACACNgIEIAAgAzYCACAAIAE2AggPCxCYAgALIAJBARCbAwALjgEBAX8CQAJAAkACQCAALQCYBA4EAAMDAQMLIABBiARqLQAAQQNGBEAgAEGIAmoQlgILIAAoApAEIgFBhAFPBEAgARAACyAAKAKUBCIAQYMBSw0BDAILIAAtAIACQQNGBEAgABCWAgsgACgCkAQiAUGEAU8EQCABEAALIAAoApQEIgBBgwFNDQELIAAQAAsLgwECAX8BfiMAQRBrIgMkACADQf8BOgAHIANBCGogASADQQdqQQEgAigCIBEEAAJAAkAgAy0ACEEERwRAIAMpAwgiBEL/AYNCBlINAQsgAEEANgIAIABBCGpBATYCACAAIAMtAAdBAEc6AAQMAQsgAEEBNgIAIAAgBDcCBAsgA0EQaiQAC4EBAQF/IwBBEGsiASQAIAFB7LLAAEEGEAE2AgggAUGEisAAQQQQATYCDCABIAAgAUEIaiABQQxqEOIBIAEoAgwiAEGEAU8EQCAAEAALIAEoAggiAEGEAU8EQCAAEAALAkAgAS0AAEUNACABKAIEIgBBhAFJDQAgABAACyABQRBqJAALeQECfyMAQRBrIgQkACAEQQhqIAEQ8AECQCAEKAIMIANPBEAgBCgCCCEFAkAgA0EBRwRAIAIgBSADEKIDGgwBCyACIAUtAAA6AAALIABBBDoAACABIAEpAwAgA618NwMADAELIABCgoCAgICzgAg3AgALIARBEGokAAuHAQIBfwF+IwBBEGsiASQAQbDtwAApAwBQBEBBwO3AAAJ+AkAgAEUNACAAKQMAIABCADcDAEIBUg0AIAApAwghAiAAKQMQDAELIAFCAjcDCCABQgE3AwAgASkDACECIAEpAwgLNwMAQbjtwAAgAjcDAEGw7cAAQgE3AwALIAFBEGokAEG47cAAC4EBAQF/IwBBEGsiASQAIAFB8rLAAEEEEAE2AgggAUGIs8AAQQQQATYCDCABIAAgAUEIaiABQQxqEOIBIAEoAgwiAEGEAU8EQCAAEAALIAEoAggiAEGEAU8EQCAAEAALAkAgAS0AAEUNACABKAIEIgBBhAFJDQAgABAACyABQRBqJAALeQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBFGpBAjYCACADQRxqQQI2AgAgA0EsakHwADYCACADQaDPwAA2AhAgA0EANgIIIANB8AA2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEKgCAAt5AQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EUakECNgIAIANBHGpBAjYCACADQSxqQfAANgIAIANB0NPAADYCECADQQA2AgggA0HwADYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQqAIAC3kBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRRqQQI2AgAgA0EcakECNgIAIANBLGpB8AA2AgAgA0Hw08AANgIQIANBADYCCCADQfAANgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhCoAgALeQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBFGpBAjYCACADQRxqQQI2AgAgA0EsakHwADYCACADQaTUwAA2AhAgA0EANgIIIANB8AA2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEKgCAAt0AQR/IwBBEGsiASQAIAAoAggiAiAAKAIEIgNHBEAgAiADa0ECdkECdCECA0AgAygCACIEQYQBTwRAIAQQAAsgA0EEaiEDIAJBfGoiAg0ACwsgASAAKAIMNgIMIAEgACgCADYCCCABQQhqEJkCIAFBEGokAAtsAQF/IwBBMGsiAyQAIAMgATYCKCADIAA2AiQgAyABNgIgIANBCGogA0EgahCxAiADQRBqIAMoAgggAygCDBDlAiADQShqIANBGGooAgA2AgAgAyADKQMQNwMgIANBIGogAhDPASADQTBqJAALaQEBfyMAQTBrIgIkACACIAE2AiggAiAANgIkIAIgATYCICACQQhqIAJBIGoQsQIgAkEQaiACKAIIIAIoAgwQ5QIgAkEoaiACQRhqKAIANgIAIAIgAikDEDcDICACQSBqEGggAkEwaiQAC3IBA38jAEEgayICJAACf0EBIAAgARBbDQAaIAEoAgQhAyABKAIAIQQgAkEANgIcIAJBnM7AADYCGCACQQE2AhQgAkHMzsAANgIQIAJBADYCCEEBIAQgAyACQQhqEDoNABogAEEEaiABEFsLIAJBIGokAAt5AQF/AkACQCAARQ0AIAAoAgAhASAAQQA2AgAgACgCBCEAAkAgAQ4CAQIACyAAQYQBSQ0AIAAQAAsQVyEAC0H07MAAKAIAIQFB9OzAACAANgIAQfDswAAoAgBB8OzAAEEBNgIARSABQYQBSXJFBEAgARAAC0H07MAAC3wBA38gACAAEKoDIgBBCBDmAiAAayICEKgDIQBB7PDAACABIAJrIgE2AgBB9PDAACAANgIAIAAgAUEBcjYCBEEIQQgQ5gIhAkEUQQgQ5gIhA0EQQQgQ5gIhBCAAIAEQqAMgBCADIAJBCGtqajYCBEGA8cAAQYCAgAE2AgALcwAjAEEwayIBJABB2OzAAC0AAARAIAFBFGpBAjYCACABQRxqQQE2AgAgAUHoxcAANgIQIAFBADYCCCABQfAANgIkIAEgADYCLCABIAFBIGo2AhggASABQSxqNgIgIAFBCGpBkMbAABCoAgALIAFBMGokAAt2AQF/IAAtAAQhASAALQAFBEAgAUH/AXEhASAAAn9BASABDQAaIAAoAgAiAS0AGEEEcUUEQCABKAIAQYPQwABBAiABKAIEKAIMEQUADAELIAEoAgBBgtDAAEEBIAEoAgQoAgwRBQALIgE6AAQLIAFB/wFxQQBHC2oBAX8jAEEgayICJABBtOzAACgCAEUEQEHgj8AAQStBrJDAABD3AQALIAJBGGogAEEIaigCADYCACACIAApAgA3AxAgAkEIaiACQRBqIAEQVSACKAIIIQAgAigCDCACQSBqJABBgQEgABsLawECfyMAQSBrIgIkACACQQhqIAEoAgAQAgJAIAIoAggiAwRAIAIoAgwhASACIAM2AhQgAiABNgIYIAIgATYCECACIAJBEGoQsQIgACACKAIAIAIoAgQQ5QIMAQsgAEEANgIECyACQSBqJAALawECfyABQQRqKAIAIQMCQAJAAkAgAUEIaigCACIBRQRAQQEhAgwBCyABQX9MDQEgAUEBEPcCIgJFDQILIAIgAyABEKIDIQIgACABNgIIIAAgAjYCBCAAIAE2AgAPCxCYAgALIAFBARCbAwALWQEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakHIj8AAIAJBCGoQOiACQSBqJAALWQEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGol8AAIAJBCGoQOiACQSBqJAALYQEDfyAAIAEQywIgACgCBCIEIAAoAggiAmohAwJAAkAgAUECTwRAIANBACABQX9qIgEQowMaIAQgASACaiICaiEDDAELIAFFDQELIANBADoAACACQQFqIQILIAAgAjYCCAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdi+wAAgAkEIahA6IAJBIGokAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQczMwAAgAkEIahA6IAJBIGokAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQZTSwAAgAkEIahA6IAJBIGokAAtTAQJ/IwBBIGsiAiQAIAAoAgQhAyAAKAIAIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAMgAkEIahA6IAJBIGokAAtWAQF/IwBBIGsiAiQAIAIgADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQciPwAAgAkEIahA6IAJBIGokAAuTAQIBfwJ+IwBBEGsiASQAQZDswAAgADsBAEGI7MAAQgA3AwAgAUGMkMAAEOcBIAEpAwghAiABKQMAIQNBtOzAACgCAARAQajswAAoAgAEQBCcARCrAgsLQbTswABByJ3AADYCAEGo7MAAQgA3AwBBmOzAACADNwMAQaDswAAgAjcDAEGw7MAAQQA2AgAgAUEQaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBqJfAACACQQhqEDogAkEgaiQAC1YBAX8jAEEgayICJAAgAiAANgIEIAJBGGogAUEQaikCADcDACACQRBqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBlNLAACACQQhqEDogAkEgaiQAC2YBAX8jAEFAaiIBJAAgAUEBOgAPIABBADYCCCAAQoCAgIAQNwIAIAFBEGogAEGMjsAAEL4CIAFBD2ogAUEQahCTAQRAQaSOwABBNyABQThqQdyOwABBuI/AABC0AQALIAFBQGskAAtIAQJ/AkAgAUUEQEEBIQIMAQsgAUEATgRAIAEgAUF/c0EfdiIDEPcCIgINASABIAMQmwMACxCYAgALIAAgAjYCBCAAIAE2AgALYgEBfyMAQSBrIgMkACAAKAIAIANBCGogASACEDAgAygCCARAIAMgAykCDDcDGEGIsMAAQSsgA0EYakG0sMAAQaCxwAAQtAEACyADKAIMIANBEGooAgAQlwIgA0EgaiQAQQALaQEDfyMAQRBrIgEkAAJAQQBBzLnAACgCABEGACICBEAgACgCACgCACIAIAAoAgBBAWoiAzYCACADRQ0BIAIgABC2ASABQRBqJAAPC0GiusAAQcYAIAFBCGpB6LrAAEHIu8AAELQBAAsAC1YBAn8CQCAAQQNwQQNzQQNwIgRFBEAMAQtBACEAA0AgACACRwRAIAAgAWpBPToAACAAQQFqIQNBASEAIAMgBEkNAQwCCwsgAiACQcigwAAQwwEACyADC1oBAX8jAEEQayIEJAAgASgCACACKAIAIAMoAgAQHiEBIARBCGoQvQIgAAJ/IAQoAghFBEAgACABQQBHOgABQQAMAQsgACAEKAIMNgIEQQELOgAAIARBEGokAAtUAQF/IwBBMGsiASQAIAFBEGpBkJDAAEEGEIUCIAFBKGogAUEYaigCADYCACABIAEpAxA3AyAgAUEIaiABQSBqELECIAAgASkDCDcDACABQTBqJAALWQECfyAAKAIMIgIgACgCACIDRgRAIAAQqwEgACgCDCECIAAoAgAhAwsgACgCBCAAKAIIIAJqIgJBACADIAIgA0kba0ECdGogATYCACAAIAAoAgxBAWo2AgwLRwECfwJAIAAoAgAiAkUNACACIABBFGooAgAiASAANQIQIAJBAWqtfqdqQX9qQQAgAWtxIgFqQQlqRQ0AIAAoAgwgAWsQKwsLYAECfyMAQRBrIgEkACABQeiCwABBFRCFAkEMQQQQ9wIiAkUEQEEMQQQQmwMACyACIAEpAwA3AgAgAkEIaiABQQhqKAIANgIAIABB4IDAADYCBCAAIAI2AgAgAUEQaiQAC2ECAX8BfiMAQRBrIgIkAEEAIAEoAgARBgAiAQRAIAEgASkDACIDQgF8NwMAIAAgASkDCDcDCCAAIAM3AwAgAkEQaiQADwtBsJTAAEHGACACQQhqQfiUwABB2JXAABC0AQALSgEBfyMAQSBrIgAkACAAQRRqQQE2AgAgAEEcakEANgIAIABB5MvAADYCECAAQcjLwAA2AhggAEEANgIIIABBCGpBvMzAABCoAgALTQEBfyMAQTBrIgEkACABQRBqEN0BIAFBKGogAUEYaigCADYCACABIAEpAxA3AyAgAUEIaiABQSBqELECIAAgASkDCDcDACABQTBqJAALZwEBfyMAQSBrIgMkACADIAI2AgwgA0EQaiICQYACOwEEIAJBBmpBADoAACACQf0FNgIAIANBEGogACABIANBDGoQJQRAQcCcwABBIiADQRhqQeyXwABBtJ3AABC0AQALIANBIGokAAtMAQJ/IAAoAggiAQRAIAAoAgQhACABQQR0IQEDQCAALQAAIgJBfmpBB0kgAkVyRQRAIABBBGoQmgILIABBEGohACABQXBqIgENAAsLC1YBAn8gASgCACECIAFBADYCAAJAIAIEQCABKAIEIQNBCEEEEPcCIgFFDQEgASADNgIEIAEgAjYCACAAQdiywAA2AgQgACABNgIADwsAC0EIQQQQmwMAC1IBA38jAEEQayIBJAAgAUEIahCPAhC0AiABKAIMIQICQCABKAIIRQRAQQEhAwwBCyACQYQBSQ0AIAIQAAsgACACNgIEIAAgAzYCACABQRBqJAALSwECfyMAQRBrIgEkACABIABBeGo2AgggAC0AFCAAQQE6ABQgASABQQhqNgIMQQFxRQRAIAFBDGoQ4AELIAFBCGoQtQEgAUEQaiQAC18BA38jAEEQayIBJAACQCAAKAIMIgIEQCAAKAIIIgNFDQEgASACNgIIIAEgADYCBCABIAM2AgAgARC2AgALQfC+wABBK0HMxsAAEPcBAAtB8L7AAEErQbzGwAAQ9wEAC1ACAn8CfiABQRBqKAIAIgIgASkDACIEIAKtIgUgBCAFVBunIgNJBEAgAyACQcyEwAAQhgMACyAAIAIgA2s2AgQgACABQQxqKAIAIANqNgIAC0gBA38jAEEQayICJAAgAiABNgIMQQEhASACQQxqKAIAEBJBAUYgAigCDCEDBEBBACEBCyAAIAM2AgQgACABNgIAIAJBEGokAAtIAQN/IwBBEGsiAiQAIAIgATYCDEEBIQEgAkEMaigCABALQQBHIAIoAgwhAwRAQQAhAQsgACADNgIEIAAgATYCACACQRBqJAALSgEBfyMAQRBrIgQkACABIAIgAygCABANIQEgBEEIahC9AiAAAn8gASAEKAIIIgFFDQAaIAQoAgwLNgIEIAAgATYCACAEQRBqJAALWAECfyMAQRBrIgEkACABIAA2AgRBAEHMucAAKAIAEQYAIgIEQCACIAAQtgEgAUEQaiQADwsgAUEEahC1AUGiusAAQcYAIAFBCGpB6LrAAEHIu8AAELQBAAtYAQF/IwBBIGsiACQAIABBDGpBATYCACAAQRRqQQE2AgAgAEGomMAANgIIIABBADYCACAAQQc2AhwgAEHIm8AANgIYIAAgAEEYajYCECAAQdCbwAAQqAIAC0YBAX8jAEEQayICJAAgASgCABAMIQEgAkEIahC9AiAAAn8gASACKAIIIgFFDQAaIAIoAgwLNgIEIAAgATYCACACQRBqJAALUgEBfyMAQSBrIgMkACADQQxqQQE2AgAgA0EUakEANgIAIANBnM7AADYCECADQQA2AgAgAyABNgIcIAMgADYCGCADIANBGGo2AgggAyACEKgCAAtTAQF/IwBBIGsiAiQAIAJBDGpBATYCACACQRRqQQE2AgAgAkHAz8AANgIIIAJBADYCACACQYQBNgIcIAIgADYCGCACIAJBGGo2AhAgAiABEKgCAAtDAQN/AkAgAkUNAANAIAAtAAAiBCABLQAAIgVGBEAgAEEBaiEAIAFBAWohASACQX9qIgINAQwCCwsgBCAFayEDCyADC0sBAX8jAEEQayICJAAgAkEIaiAAIAFBARCMAQJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCbAwALIAJBEGokAA8LEJgCAAtIAQF/IwBBEGsiAiQAIAJBCGogACABEH8CQCACKAIMIgBBgYCAgHhHBEAgAEUNASACKAIIIAAQmwMACyACQRBqJAAPCxCYAgALSAEBfyMAQRBrIgIkACACQQhqIAAgARB8AkAgAigCDCIAQYGAgIB4RwRAIABFDQEgAigCCCAAEJsDAAsgAkEQaiQADwsQmAIAC0gBAX8jAEEQayICJAAgAkEIaiAAIAEQfQJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCbAwALIAJBEGokAA8LEJgCAAtIAQF/IwBBEGsiAiQAIAJBCGogACABEH4CQCACKAIMIgBBgYCAgHhHBEAgAEUNASACKAIIIAAQmwMACyACQRBqJAAPCxCYAgALSwEBfyMAQRBrIgMkACADQQhqIAAgASACEIwBAkAgAygCDCIAQYGAgIB4RwRAIABFDQEgAygCCCAAEJsDAAsgA0EQaiQADwsQmAIAC00BAn8jAEEQayICJAAgACgCACEDIABBADYCACADRQRAQai3wABBHBCWAwALIAIgAzYCDCADQQhqQQAgARB6IAJBDGoQrwEgAkEQaiQAC00BAn8jAEEQayICJAAgACgCACEDIABBADYCACADRQRAQai3wABBHBCWAwALIAIgAzYCDCADQQhqQQEgARB6IAJBDGoQrwEgAkEQaiQAC0MBAn8jAEEQayIBJAAgASAAQXhqNgIIIAAtABQgAEEBOgAUIAEgAUEIajYCDEEBcUUEQCABQQxqEOABCyABQRBqJAALSQEBfyMAQRBrIgIkACACQQhqIAAgARCAAQJAIAIoAgwiAEGBgICAeEcEQCAARQ0BIAIoAgggABCbAwALIAJBEGokAA8LEJgCAAtOAQF/IwBBEGsiBCQAIAEoAgAgAigCACADKAIAEBkhASAEQQhqEL0CIAQoAgwhAiAAIAQoAggiAzYCACAAIAIgASADGzYCBCAEQRBqJAALSQEDfyMAQRBrIgMkACADQQhqIAIQ3gEgAygCCCEEIAAgAygCDCIFNgIEIAAgBDYCACAFIAEgAhCiAxogACACNgIIIANBEGokAAtQAQF/QSBBBBD3AiIBRQRAQSBBBBCbAwALIAFCgYCAgBA3AgAgASAAKQIANwIIIAFBEGogAEEIaikCADcCACABQRhqIABBEGopAgA3AgAgAQtKAQF/IwBBsAFrIgEkACABIABBqAEQogMiACAANgKsASAAQawBakGsgcAAEKcDIAAtAKABQQNGBEAgAEEIahCsAgsgAEGwAWokAAtFAQJ/IAAtAABBA0YEQCAAKAIEIgEoAgAgASgCBCgCABECACABKAIEIgIoAgQEQCACKAIIGiABKAIAECsLIAAoAgQQKwsLSAEBfyAAKAIAIgEEQCABIAAoAgQoAgARAgAgACgCBCIBKAIEBEAgASgCCBogACgCABArCyAAKAIIIABBDGooAgAoAgwRAgALC0gBAX8gACgCACIAKAIAIAAoAggiA2sgAkkEQCAAIAMgAhCEASAAKAIIIQMLIAAoAgQgA2ogASACEKIDGiAAIAIgA2o2AghBAAtIAQF/IAAoAgAiACgCACAAKAIIIgNrIAJJBEAgACADIAIQhQEgACgCCCEDCyAAKAIEIANqIAEgAhCiAxogACACIANqNgIIQQALPgECfyMAQRBrIgEkACABQQhqIABBCGooAgAiAjYCACABIAApAgA3AwAgASgCBCACEAEgARCaAiABQRBqJAALQQECfyAAKAIIIgEEQCAAKAIEIQAgAUECdCEBA0AgACgCACICQYQBTwRAIAIQAAsgAEEEaiEAIAFBfGoiAQ0ACwsLTwEBfyAAKAIAIgAgACgCAEF/aiIBNgIAAkAgAQ0AIABBDGoiARCVASABKAIABEAgASgCBBAr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7MAAKAIAIABrECsLCzEAAkACfwJAAkAgAC0AkAEOBAADAwEDCyAAQYQBagwBCyAAEK4BIABB+ABqCxCaAgsLLwEBfyMAQRBrIgIkACACIAAoAgA2AgwgAkEMaiABEGogAkEMahCOAiACQRBqJAALLgEBfyAAKAIEBEAgAEEEahCOAiAAKAIAIgFBhAFPBEAgARAACyAAQQhqEKkCCwskACMAQRBrIgAkACAAQQhqIAEQvwIgAEEIahDOASAAQRBqJAALMwEBf0E0QQQQ9wIiAUUEQEE0QQQQmwMACyABQoGAgIAQNwIAIAFBCGogAEEsEKIDGiABCzIBAX8gACABKAIAIAEoAggiAksEfyABIAIQngIgASgCCAUgAgs2AgQgACABKAIENgIACzIBAX8gACABKAIAIAEoAggiAksEfyABIAIQnwIgASgCCAUgAgs2AgQgACABKAIENgIACy4BAX8gASgCACICBEAgAEEBNgIIIAAgAjYCBCAAIAEoAgQ2AgAPCyAAQQA2AggLIwEBfwJ/QQEgARAJRQ0AGkEACyECIAAgATYCBCAAIAI2AgALMAEBfyABQXhqIgIgAigCAEEBaiICNgIAIAJFBEAACyAAQdC5wAA2AgQgACABNgIACy0BAX8jAEEQayIBJAAgAUEIaiAAQQhqKAIANgIAIAEgACkCADcDACABEKwBAAskACAAKAIAQXBqIgAQmgIgAEEMaigCACIAQYQBTwRAIAAQAAsLMQEBf0EEQQQQ9wIiAkUEQEEEQQQQmwMACyACIAE2AgAgAEGAt8AANgIEIAAgAjYCAAsxAQF/QQRBBBD3AiICRQRAQQRBBBCbAwALIAIgATYCACAAQZS3wAA2AgQgACACNgIACycAIAAgACgCBEEBcSABckECcjYCBCAAIAFqIgAgACgCBEEBcjYCBAsmAQF/IwBBEGsiASQAIAEgAEF4ajYCDCABQQxqELUBIAFBEGokAAsmAAJAIABFDQAgACABKAIAEQIAIAEoAgRFDQAgASgCCBogABArCws6AQJ/QZDtwAAtAAAhAUGQ7cAAQQA6AABBlO3AACgCACECQZTtwABBADYCACAAIAI2AgQgACABNgIACzEAIABBAzoAICAAQoCAgICABDcCGCAAQQA2AhAgAEEANgIIIAAgAjYCBCAAIAE2AgALMgEBfyABKAIAQZu/wABBCyABKAIEKAIMEQUAIQIgAEEAOgAFIAAgAjoABCAAIAE2AgALIAEBfwJAIABBBGooAgAiAUUNACAAKAIARQ0AIAEQKwsLJgEBfyMAQRBrIgMkACADIAE2AgwgAyAANgIIIANBCGogAhD4AQALEwAgACABKQAANwABIABBADoAAAsmAQF/IABBB2oiASAASQRAQbCxwABBM0G0ssAAEIoDAAsgAUEDdgsjAAJAIAFB/P///wdNBEAgACABQQQgAhDoAiIADQELAAsgAAsjACACIAIoAgRBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAseACAAKAIAIgCtQgAgAKx9IABBf0oiABsgACABEFoLKgACQAJAAkAgAC0AqgEOBAACAgECCyAAQYABahC4AQ8LIABBCGoQrgELCyUAIABFBEBB57vAAEEyEJYDAAsgACACIAMgBCAFIAEoAhARCwALHQAgACgCACgCACABKAIMQQAgAmtBGGxqQWhqEEMLEQAgACgCAARAIAAoAgQQKwsLIAEBfyAAKAIAIAAoAggiAmsgAUkEQCAAIAIgARD/AQsLIwAgAEUEQEHnu8AAQTIQlgMACyAAIAIgAyAEIAEoAhARFAALIwAgAEUEQEHnu8AAQTIQlgMACyAAIAIgAyAEIAEoAhARBAALIwAgAEUEQEHnu8AAQTIQlgMACyAAIAIgAyAEIAEoAhARCgALIwAgAEUEQEHnu8AAQTIQlgMACyAAIAIgAyAEIAEoAhARFQALIwAgAEUEQEHnu8AAQTIQlgMACyAAIAIgAyAEIAEoAhARDgALFwAgASADRgR/IAAgAiABEPkBRQVBAAsLHgAgACABQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyEAIABFBEBB57vAAEEyEJYDAAsgACACIAMgASgCEBEDAAsUACAAKAIABEAgAEEEaigCABArCwsaACAAKAIAKAIAIAEoAgwgAkEEdGtBcGoQQwsdACABKAIARQRAAAsgAEHYssAANgIEIAAgATYCAAsfACAARQRAQcC0wABBMhCWAwALIAAgAiABKAIQEQAACx8AIABFBEBB8LnAAEEyEJYDAAsgACACIAEoAhARAAALHwAgAEUEQEHnu8AAQTIQlgMACyAAIAIgASgCEBEBAAsXACAAKAIABEAgABCpAiAAQQxqEKkCCwsfAQF/IAAoAgQgACgCCBABIAAoAgAEQCAAKAIEECsLCx4BAX9B9OzAACEBQfDswAAoAgAEfyABBSAAEMsBCwsZAQF/IAAoAhAiAQR/IAEFIABBFGooAgALCxkAIAEgAiADEJcCIABBBDoAACAAIAM2AgQLFwAgAEEEaigCACAAQQhqKAIAIAEQnAMLEgBBAEEZIABBAXZrIABBH0YbCxYAIAAgAUEBcjYCBCAAIAFqIAE2AgALFgAgAEEEaigCACAAQQhqKAIAIAEQLwsTAEHI7MAAKAIABEAQmQEQpAILCxcAQeDswAAoAgBFBEAgABBvC0Hc7MAACxcAIAAgAjYCCCAAIAE2AgQgACACNgIACxAAIAAgAWpBf2pBACABa3ELEgAgAC0AAEEERwRAIAAQiAILCwwAIAAgASACIAMQLgsLACABBEAgABArCwsPACAAQQF0IgBBACAAa3ILGQAgASgCAEHUzsAAQQsgASgCBCgCDBEFAAsZACABKAIAQd/OwABBDiABKAIEKAIMEQUACxkAIAEoAgBB6OTAAEEFIAEoAgQoAgwRBQALEwAgACgCACgCCCABIAIQlwJBAAsSACABIAIgAxCXAiAAQQQ6AAALCgAgAEEIahCaAgsPACAAKAIABEAgABCvAQsLFAAgACgCACABIAAoAgQoAgwRAQALDwAgACABIAIgAyAEECkACw4AIAAoAgAgARBwGkEACxAAIAAoAgggASACEJcCQQALEAAgACgCACABIAIQlwJBAAsIACAAIAEQSQsRACAAKAIAIAAoAgQgARCcAwsQACAAIAI2AgQgACABNgIACxYAQZTtwAAgADYCAEGQ7cAAQQE6AAALEwAgAEHsxsAANgIEIAAgATYCAAsNACAALQAEQQJxQQF2Cw8AIAAgAUEEaikCADcDAAsQACABIAAoAgAgACgCBBAsCw0AIAAgASACEJcCQQALCgBBACAAayAAcQsLACAALQAEQQNxRQsMACAAIAFBA3I2AgQLDQAgACgCACAAKAIEagsNACAAKAIAIAEQWEEACw4AIAAoAgAaA0AMAAsACwwAIAAgASACEMQBAAsMACAAIAEgAhDFAQALDAAgACABIAIQxgEACw0AIAA1AgBBASABEFoLDAAgACABIAIQwQIACw0AIAAoAgAgASACEEcLDQAgACkDAEEBIAEQWgsNACAAMwEAQQEgARBaCw4AIAAoAgAtAAAgARBdCwsAIAAjAGokACMACwoAIAAgASACEDsLCwAgACACIAEQoQELBwAgABCaAgsNACABQeiVwABBAhAsCwsAIAAoAgAgARBKCwsAIAAgAUHdABAiCwkAIAAgARAhAAsKACAAKAIEQXhxCwoAIAAoAgRBAXELCgAgACgCDEEBcQsKACAAKAIMQQF2CxoAIAAgAUGY7cAAKAIAIgBB8QAgABsRAAAACwoAIAIgACABECwLDAAgACABKQIANwMACwwAIAAgASkCCDcDAAsLACAAKAIAIAEQWwsNACABQejSwABBAhAsCwoAIAAgASACEDULCgAgACABIAIQWQsLACAAIAEgAhCWAQsHACAAEMEBCwkAIABBBDoAAAsJACAAQQA2AgALCAAgACABEBoLBwAgACABagsHACAAIAFrCwcAIABBCGoLBwAgAEF4agsHACAAENoBCwcAIAAQjgILBABBAQsLAELys9u82+mRJQsNAELIteDPyobb04l/Cw0AQu/Fjf7k3bzN8wALDABCs7b38aLcov4ECwMAAQsDAAELC91rBABBgIDAAAu0VQEAAAAEAAAABAAAAAIAAAADAAAAAwAAAAEAAAAEAAAABAAAAAQAAAAFAAAABQAAAP//////////YHVud3JhcF90aHJvd2AgZmFpbGVkAAAACQAAAAwAAAAEAAAACgAAAAkAAAAMAAAABAAAAAsAAAAKAAAAUAAQAAwAAAANAAAADgAAAAwAAAAPAAAAEAAAAGABAAAIAAAAEQAAABIAAAAgAgAACAAAABMAAAAUAAAABAAAAAQAAAAVAAAAFgAAABQAAAAEAAAABAAAABcAAAAYAAAAL3Jvb3QvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvd2FzbS1iaW5kZ2VuLWZ1dHVyZXMtMC40LjM0L3NyYy9saWIucnPUABAAXAAAANoAAAAVAAAAYGFzeW5jIGZuYCByZXN1bWVkIGFmdGVyIGNvbXBsZXRpb24AGQAAAGZhaWxlZCB0byBmaWxsIGJ1ZmZlcmZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcn0BEAAbAAAAJQAAAC9ydXN0Yy9mYzU5NGYxNTY2OTY4MGZhNzBkMjU1ZmFlYzNjYTNmYjUwN2MzNDA1L2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwCkARAASwAAAPIAAAANAAAAL3J1c3RjL2ZjNTk0ZjE1NjY5NjgwZmE3MGQyNTVmYWVjM2NhM2ZiNTA3YzM0MDUvbGlicmFyeS9zdGQvc3JjL2lvL2N1cnNvci5ycwACEABMAAAA6wAAAAoAAAAvcnVzdGMvZmM1OTRmMTU2Njk2ODBmYTcwZDI1NWZhZWMzY2EzZmI1MDdjMzQwNS9saWJyYXJ5L3N0ZC9zcmMvaW8vcmVhZGJ1Zi5ycwAAAFwCEABNAAAAIQEAACsAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAFAAAAAAAAAABAAAAGgAAAC9yb290Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjEvc3JjL2NodW5rZWRfZW5jb2Rlci5ycwAAJAMQAFoAAAAtAAAAGgAAACQDEABaAAAANwAAAEQAAAAkAxAAWgAAADoAAAAnAAAAL3Jvb3QvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMS9zcmMvZW5jb2RlLnJzAAAAsAMQAFEAAAC2AAAAIAAAALADEABRAAAAtwAAACUAAACwAxAAUQAAAPwAAAAcAAAAsAMQAFEAAAD9AAAAIQAAALADEABRAAAAEwEAAC4AAACwAxAAUQAAABMBAAAJAAAAsAMQAFEAAAAUAQAACQAAALADEABRAAAACwEAAC4AAACwAxAAUQAAAAsBAAAJAAAAsAMQAFEAAAANAQAADwAAALADEABRAAAADAEAAAkAAACwAxAAUQAAAA8BAAAJAAAAsAMQAFEAAACgAAAAKgAAAHVzZHBsLWZyb250L3NyYy9jb25uZWN0aW9uLnJzAAAA1AQQAB0AAAAZAAAAJgAAAFBPU1RodHRwOi8vdXNkcGwuOi91c2RwbC9jYWxsAAAACAUQAAwAAAAUBRAAAQAAABUFEAABAAAAFgUQAAsAAABsb2NhbGhvc3QAAABEBRAACQAAANQEEAAdAAAALQAAACQAAADUBBAAHQAAADQAAAAnAAAA1AQQAB0AAABJAAAAJgAAAEV4cGVjdGVkIGNhbGwgcmVzcG9uc2UgbWVzc2FnZSwgZ290IHNvbWV0aGluZyBlbHNldXNkcGwtZnJvbnQvc3JjL2xpYi5yc7oFEAAWAAAAcAAAAE4AAAC6BRAAFgAAAG8AAAABAAAAugUQABYAAACfAAAAJgAAALoFEAAWAAAAngAAAAEAAAAvcnVzdGMvZmM1OTRmMTU2Njk2ODBmYTcwZDI1NWZhZWMzY2EzZmI1MDdjMzQwNS9saWJyYXJ5L3N0ZC9zcmMvaW8vbW9kLnJzAAAAEAYQAEkAAABTAQAAGAAAAHN0cmVhbSBkaWQgbm90IGNvbnRhaW4gdmFsaWQgVVRGLTgAAGwGEAAiAAAAFQAAABAGEABJAAAAhwEAABsAAAAvcnVzdGMvZmM1OTRmMTU2Njk2ODBmYTcwZDI1NWZhZWMzY2EzZmI1MDdjMzQwNS9saWJyYXJ5L3N0ZC9zcmMvaW8vcmVhZGJ1Zi5ycwAAAKwGEABNAAAAywAAADYAAAAbAAAADAAAAAQAAAAcAAAAHQAAAB4AAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5AB8AAAAAAAAAAQAAACAAAAAvcnVzdGMvZmM1OTRmMTU2Njk2ODBmYTcwZDI1NWZhZWMzY2EzZmI1MDdjMzQwNS9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAbAcQAEsAAADoCQAACQAAAB8AAAAEAAAABAAAACEAAAAiAAAAIwAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAJAAAADAuMTAuMHVzZHBsLWZyb250L3NyYy9saWIucnMWCBAAFgAAAGEAAAAYAAAAFggQABYAAABpAAAAGAAAABYIEAAWAAAAwwAAAEAAAAAWCBAAFgAAANEAAABAAAAAJQAAAAwAAAAEAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC9jYXlsb24vc3JjL3VzZHBsX2Zyb250L3VzZHBsLXJzL3VzZHBsLWNvcmUvc3JjL3NlcmRlcy90cmFpdHMucnOUCBAAQAAAAHYAAAAcAAAALQAAABgAAAAIAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAABgdW53cmFwX3Rocm93YCBmYWlsZWRmYWlsZWQgdG8gd3JpdGUgd2hvbGUgYnVmZmVyAAAAJQkQABwAAAAXAAAANgAAAAwAAAAEAAAANwAAADgAAAA5AAAAZm9ybWF0dGVyIGVycm9yAGgJEAAPAAAAKAAAAC9ydXN0Yy9mYzU5NGYxNTY2OTY4MGZhNzBkMjU1ZmFlYzNjYTNmYjUwN2MzNDA1L2xpYnJhcnkvc3RkL3NyYy9pby9tb2QucnMAAACECRAASQAAACQFAAAWAAAAhAkQAEkAAAAoBQAADQAAAGFkdmFuY2luZyBpbyBzbGljZXMgYmV5b25kIHRoZWlyIGxlbmd0aADwCRAAJwAAAIQJEABJAAAAJgUAAA0AAABjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAAA6AAAAAAAAAAEAAAA7AAAAL3J1c3RjL2ZjNTk0ZjE1NjY5NjgwZmE3MGQyNTVmYWVjM2NhM2ZiNTA3YzM0MDUvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwCIChAATwAAAKYBAAAJAAAAKCkAACUAAAAMAAAABAAAADwAAAA9AAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkAOgAAAAAAAAABAAAAIAAAAC9ydXN0Yy9mYzU5NGYxNTY2OTY4MGZhNzBkMjU1ZmFlYzNjYTNmYjUwN2MzNDA1L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwBMCxAASwAAAOgJAAAJAAAAOgAAAAQAAAAEAAAAPgAAAD8AAABAAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQA6AAAAAAAAAAEAAABBAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAAD8CxAAKgAAAC9yb290Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Jhc2U2NC0wLjEzLjEvc3JjL2RlY29kZS5ycwAAADAMEABRAAAA2QEAAB8AAAAwDBAAUQAAAN8BAAAfAAAAMAwQAFEAAADoAQAAHwAAADAMEABRAAAA8QEAAB8AAAAwDBAAUQAAAPoBAAAfAAAAMAwQAFEAAAADAgAAHwAAADAMEABRAAAADAIAAB8AAAAwDBAAUQAAABUCAAAfAAAAMAwQAFEAAAAKAQAAJAAAADAMEABRAAAACwEAACkAAAAwDBAAUQAAADEBAAAWAAAAMAwQAFEAAAA0AQAAGgAAADAMEABRAAAASAEAAA4AAAAwDBAAUQAAAEsBAAASAAAAMAwQAFEAAABfAQAAEwAAAEltcG9zc2libGU6IG11c3Qgb25seSBoYXZlIDAgdG8gOCBpbnB1dCBieXRlcyBpbiBsYXN0IGNodW5rLCB3aXRoIG5vIGludmFsaWQgbGVuZ3Roc3QNEABUAAAAMAwQAFEAAACkAQAADgAAADAMEABRAAAAuAEAAAkAAABPdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG91dHB1dCBidWZmZXIgbGVuZ3RoAAAwDBAAUQAAAJ0AAAAKAAAAMAwQAFEAAACiAAAAIQAAAFdyaXRpbmcgdG8gYSBTdHJpbmcgc2hvdWxkbid0IGZhaWwvcm9vdC8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4xL3NyYy9lbmNvZGUucnMAYg4QAFEAAABTAAAADgAAAAAAAAD//////////3VzZHBsLWZyb250L3NyYy9jb252ZXJ0LnJzAADQDhAAGgAAACAAAAAnAAAAY3JhbmtzaGFmdAAA/A4QAAoAAABkZWNreQAAABAPEAAFAAAAYW55ACAPEAADAAAATG9hZEVycm9yOiBJbygpACwPEAAOAAAAOg8QAAEAAABMb2FkRXJyb3I6IEludmFsaWREYXRhAABMDxAAFgAAAExvYWRFcnJvcjogVG9vU21hbGxCdWZmZXIAAABsDxAAGQAAAER1bXBFcnJvcjogSW8oAACQDxAADgAAADoPEAABAAAARHVtcEVycm9yOiBVbnN1cHBvcnRlZAAAsA8QABYAAABEdW1wRXJyb3I6IFRvb1NtYWxsQnVmZmVyAAAA0A8QABkAAAAvcm9vdC8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9iYXNlNjQtMC4xMy4xL3NyYy9lbmNvZGUucnMAAAD0DxAAUQAAADsBAAAJAAAAISIjJCUmJygpKissLTAxMjM0NTY3ODlAQUJDREVGR0hJSktMTU5QUVJTVFVWWFlaW2BhYmNkZWhpamtsbXBxckFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5KywuL0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Li8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsv////////////////////////////////////////////AAECAwQFBgcICQoLDP//DQ4PEBESExQVFv///////xcYGRobHB0eHyAhIiMkJf8mJygpKiss/y0uLzD/////MTIzNDU2//83ODk6Ozz//z0+P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8+P////zQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn///////8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAE2Nzg5Ojs8PT4//////////wIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRob////////HB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgMEBQYHCAkKC/////////8MDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJf///////yYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z7//zQ1Njc4OTo7PD3/////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBn/////P/8aGxwdHh8gISIjJCUmJygpKissLS4vMDEyM///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Pv///z80NTY3ODk6Ozw9/////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZ////////GhscHR4fICEiIyQlJicoKSorLC0uLzAxMjP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////mBEQAFgREAAYERAA2BAQAJgQEABYEBAA2BYQANgVEADYFBAA2BMQANgSEADYERAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQBDAAAACAAAAAQAAABEAAAAL3Jvb3QvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMS9zcmMvY2h1bmtlZF9lbmNvZGVyLnJzAABEGBAAWgAAAGgAAAAwAAAAT3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyBudW1iZXIgb2YgY2h1bmtzIGluIGlucHV0L3Jvb3QvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYmFzZTY0LTAuMTMuMS9zcmMvZGVjb2RlLnJz4xgQAFEAAADDAAAACgAAAEUAAAAIAAAABAAAAEYAAABHAAAARQAAAAgAAAAEAAAASAAAAGJvZHltZXRob2Rtb2Rlc2FtZS1vcmlnaW5uby1jb3JzY29yc25hdmlnYXRlYXR0ZW1wdGVkIHRvIGNvbnZlcnQgaW52YWxpZCBSZXF1ZXN0TW9kZSBpbnRvIEpTVmFsdWUvcm9vdC8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy93ZWItc3lzLTAuMy42MS9zcmMvZmVhdHVyZXMvZ2VuX1JlcXVlc3RNb2RlLnJzAAAAyRkQAGQAAAADAAAAAQAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAABMAAAABAAAAAQAAABNAAAATgAAAGFscmVhZHkgYm9ycm93ZWRPAAAAAAAAAAEAAABQAAAAYWxyZWFkeSBtdXRhYmx5IGJvcnJvd2VkTwAAAAAAAAABAAAAUQAAAC9yb290Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC4zNC9zcmMvcXVldWUucnMAANAaEABeAAAAGgAAAC4AAADQGhAAXgAAAB0AAAApAAAA0BoQAF4AAAAyAAAAGgAAAGFscmVhZHkgYm9ycm93ZWRSAAAAAAAAAAEAAABQAAAAUwAAAAQAAAAEAAAAVAAAAFUAAABTAAAABAAAAAQAAABWAAAAVwAAAEZuT25jZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Uvcm9vdC8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy93YXNtLWJpbmRnZW4tZnV0dXJlcy0wLjQuMzQvc3JjL2xpYi5yc8QbEABcAAAApQAAAA8AAADEGxAAXAAAAIUAAAAnAAAAxBsQAFwAAACvAAAAJAAAAC9yb290Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3dhc20tYmluZGdlbi1mdXR1cmVzLTAuNC4zNC9zcmMvdGFzay9zaW5nbGV0aHJlYWQucnMAAFAcEABqAAAAIQAAABUAAABYAAAAWQAAAFoAAABbAAAAXAAAAFAcEABqAAAAVQAAACUAAABjbG9zdXJlIGludm9rZWQgcmVjdXJzaXZlbHkgb3IgYWZ0ZXIgYmVpbmcgZHJvcHBlZGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb25eAAAAAAAAAAEAAAA7AAAAL3J1c3RjL2ZjNTk0ZjE1NjY5NjgwZmE3MGQyNTVmYWVjM2NhM2ZiNTA3YzM0MDUvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwB4HRAATwAAAKYBAAAJAAAAXwAAAHJldHVybiB0aGlzY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRjYW5ub3QgYWNjZXNzIGEgVGhyZWFkIExvY2FsIFN0b3JhZ2UgdmFsdWUgZHVyaW5nIG9yIGFmdGVyIGRlc3RydWN0aW9uAGwAAAAAAAAAAQAAADsAAAAvcnVzdGMvZmM1OTRmMTU2Njk2ODBmYTcwZDI1NWZhZWMzY2EzZmI1MDdjMzQwNS9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAHAeEABPAAAApgEAAAkAAABUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHnQHhAAJAAAAC9ydXN0Yy9mYzU5NGYxNTY2OTY4MGZhNzBkMjU1ZmFlYzNjYTNmYjUwN2MzNDA1L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnP8HhAATAAAAKoBAAAJAAAAcgAAAAQAAAAEAAAAcwAAAHQAAAB1AAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZUFjY2Vzc0Vycm9yAABwHxAAAAAAAHVuY2F0ZWdvcml6ZWQgZXJyb3JvdGhlciBlcnJvcm91dCBvZiBtZW1vcnl1bmV4cGVjdGVkIGVuZCBvZiBmaWxldW5zdXBwb3J0ZWRvcGVyYXRpb24gaW50ZXJydXB0ZWRhcmd1bWVudCBsaXN0IHRvbyBsb25naW52YWxpZCBmaWxlbmFtZXRvbyBtYW55IGxpbmtzY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1lZGVhZGxvY2tleGVjdXRhYmxlIGZpbGUgYnVzeXJlc291cmNlIGJ1c3lmaWxlIHRvbyBsYXJnZWZpbGVzeXN0ZW0gcXVvdGEgZXhjZWVkZWRzZWVrIG9uIHVuc2Vla2FibGUgZmlsZW5vIHN0b3JhZ2Ugc3BhY2V3cml0ZSB6ZXJvdGltZWQgb3V0aW52YWxpZCBkYXRhaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcCly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CzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDPAgqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgECAQMBBQIHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwADHQIeAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAcBAQUBKAkMAiAEAgIBAzgBAQIDAQEDOggCApgDAQ0BBwQBBgEDAsZAAAHDIQADjQFgIAAGaQIABAEKIAJQAgABAwEEARkCBQGXAhoSDQEmCBkLLgMwAQIEAgInAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABAACUANGCzEEewE2DykBAgIKAzEEAgIHAT0DJAUBCD4BDAI0CQoEAgFfAwIBAQIGAQIBnQEDCBUCOQIBAQEBFgEOBwMFwwgCAwEBFwFRAQIGAQECAQECAQLrAQIEBgIBAhsCVQgCAQECagEBAQIGAQFlAwIEAQUACQEC9QEKAgEBBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQEBAQABBg8ABTsHAAE/BFEBAAIALgIXAAEBAwQFCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFZAGgBwABPQQABAAHbQcAYIDwAAAEMhAAKAAAAD8BAAAJAEGQ7MAACwJpegBHCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4xOS4wDHdhc20tYmluZGdlbhIwLjIuODQgKGNlYThjYzNkMik="; function asciiToBinary(str) { if (typeof atob === 'function') { diff --git a/src/usdpl_front/usdpl_front_bg.wasm b/src/usdpl_front/usdpl_front_bg.wasm index 52c1584e18a0f4f4d56cbd7dbb96794e49186b88..625d6423066b30e151f5b5991577de4ce2c17d65 100644 GIT binary patch delta 22316 zcmcJ134ByVw)Z`CyE~n90*wR+2_d(eEn&^R016jHKu|=*K~x}1M@Wz*#PvCLK-8$H zNX5CRI7SB*eW=j{0Y%MIl;9u+jf#pIXV5_>C@3nUsNet8?e27<&b*oT`+!RARj1Bg z=T=y|&-p)ZIvYNx>_B#YetBkgAP~sSDak9y)Li-%C6^4CKOaBmmj|j#7tYVk&kGcm zmgHv@XO`#Y1mpnW&n_>?Db6h`&(AF^%___*DzT@f*wd;5S60t2&(F%u&n+t`%qqz& zDk{&E%S4*DG&iq2v#d0~tT;Qryeu@WaD39d2U{yO#1av!9YQ2R(WA| zL1tb-d467DuIA=-Q|(z-ELu{w^ose#nMHxp{QTTNR&GgFNnw^f#%GVYWbx9H;>G7J zT(n|-VL@q0Nnu`QetDp@Jg2y*%Ubrh`K5(<#YNe9MS=Y6tn!>PDv_`2DZ$LL;{5U~ zAgna2xFkOi!c++M6@lvcSq0hIxh17}xrJqAS!D$!n*NL9=K=u%(5b8>keQWVqB(g) z)bWeT08(inH@h&qIIFNYgr9+Yir^*ls{$*QF1|c4zq~9rv%D~`u&k)81hmZUO0$K5 zCG!KNd1WQ}WqCkKNp3-2c^67l^N4Z~DL*?WCo4aYU09G)+yxXqO@484ZeC$=ZlDA! z<&~Dqut$U#YFTmBiopDw;?knLlDw?)(wwa9vXT(EhK=+U)m4j@T(YSAs`;7OMa4x0 zMP=nB*r+(GKy%4lXCdXwOPxlxLj#^PExCu@*Xbg1P(POk4La!#x8_VDom@^$7vylG zguxog7n~z?haMxpa3#GP z!zF~%i63rP900)d7{RMxea)lAV7Mk+F=*hW@CSYPfnog5<^Oc2^hv7X+&RSB{ zy_q&q+26!BV%fWx@`S+LZ$;^wL6Ul%-l*S%#twR0H0bY${bGlBOn*#Nph^5)H0npi zIDM>8DXLrNZjZ-w;P1}6 zX%phX*nM;UAW`Pqq+gIsLB_b;q)kYUHQU|He~Tw)@f&iMociY-hk9m z;e7*JY2HV5zYc232l|gZH@p)NfPMVhRP$x!W z%p*2Fz}aDV88Z~Z3aL?x7N>&+JhFD+kf4V#?PgsCD#h9xqRGeF z1Ts!x?!$cMDiepa55|M+l4@gmGQEX;(pV1~lz4~Gfa7TPX?O)JPAu3WXmfOEmfK?h z9=9*vJdVA%?C{5_GIoQ?mM|p`L)|hO7meZ;dm`gGGF6dWeck4#{6fXIRcXFDcrTyYeM-U8-RtHSz zbZBi4RHRxjv?#;n=0z1;D8yAj!P)>ZlmH4~W7R1RInqc8#-9%Ih1d7RMn*F57-hts z$?VI=hy~#QWB42(8XI}l=MS4Pf6q#D5s<}tOH)S4&?*h808nA8X2e!ZOYtW#sd^X* zL8B+@VT`p+nEnfUC=_sfCSH{6MG4%2d4BM#rg+PUQ%(g~(^*l04J-Z3uHbLoWZ`jy z*LQ~37dCSRg^#5`$6~+>REFuUtf=4#HJ}k}Zw(XPNC23tbcLJ@@SfM`!469+$c$#Dig@)Qb3RWg=MLc2_2Xm5DHdv9>lr7LT2vFgRmvq8Jh! zpiBaTZ{RQZ4h#i=ZE65p?8Lx$bkYXPx*3s`6@Hg3g-}_xq$%Tqc1Sn8nM$9-JQlQN z#!$N57E$zS#adLkNJ;R+`9+kC=#%+GZ00I`T2#BJnXo2anR# zPUzW?tzc<_8;7Ggfn#_jPFog?2xEmc7fiBWX%E;_o2B4Ah0Kf1fwsl$98a~ecjN+-p9Cf2tT-)bF*EVLlegxiEdy0CEAaN261k3 zH_uqZJvI2j70xkCUN`hSS3Q^4%T{c$iHlt4F-=_ABzp}@4DR4!L#TaQbY&-3xP@ml zM_2Z6gj04*67Lsu5b(Y?2lApQ9H=B{jz@8(%>4Vdkuc@D9+8}p(%A- zsSWjT9vQZQD{DhNoJWRjfziT7R0ViT-y}t;yf~L2Ui+GJ)B2| z?c~a~P!H#kVSBjJ9O~gbGOUd&EukLHF)U~w`~cTlLtUIl#_f;p37MGgCIA+oi;0QY zEkEmBWk;e+j4~21F&a#aGYGV^$?0liMA*iJ9T=!Y48md%49x#k6T=rFJuKp^Ai^qnUAwGppvt=Fp`bo|36*>K^Xm z8@tg5aDTfV zgdTy*<$9Rnx*Jg0$@7}9cTzRn3|?$UJ^?vljGz$9x@XX}twp z7v0d_y`ce9)d)iaZhWx@j=PBzYXDu?lR*r_>3y8At@;c9CJru`VBXrVXlL_+Fk2b)5NFtAR#1dn zn2#1HVzTrxze3{`vb%)k%vxa7%=YqbOy8h)Tj(5E6};dhH1DyCd0$eAm%Yvt6?ayj&~mPjxgI5kT47}-Xu_m8Bi?* zDmZcX^T5GlcI-TW$6QI!D!RGaPt$M|-K&CVaJ4(7=_%}yE*AKl@=(D5(xtP|pTsv9 zwKt>z79D=9eIPl$uzzqh2P5H&vREpvahP43(*0dpbRgCb5Y#k4fS@YlIbGB_)WB&8 zKmh=Q*S)Of3?UO(9f%umBDkAN%0kVC5E7#lF9N_HsYX70yvLz=_%unWLS$_#ZL zigf;yy;K-i!NXz!xB;0tzQQXPpAyICy5f|Dy>5sXaY4a>>ei6C?3F!G#!nba4moAQ zu(>VZDi+I~oI`AynUm95gERvbPeQ6-+?apT`Nv4_C)~0}8NI?TMlZ8K>|~1tZNGfz6dAzy)<-S4*LkJuAm9niFeYm1hLw3v{I& z0ifYv#mJB~vr1$oU{0)5+lS{mLMn_0P4v6XD=T{7BbEkxfQHlHAGUQggU2<;MDJg5 zf8m-Pcp^}9T0*QMBZr;Bswc=83TY(e2%N^Y+Dxi253()z8@e;}Bp)uR8M@(1uz`Ul zWw5|re%!>_Qv2hg^;v8IHIR8Kip;(}gW;(qg|}!9kIrA{n|A$skf7 znR9Xi!>|pS#t8)mo^kkH96ct$<%{9_KH4-Nj==@k=uNyXCU4{%><0;SVzdhT+l~xn z2!PRmel{lfX&aXMpsKJLpUx<(BW$CFcpqZ)W32a8#fjLNWqBc#66-u%zeA!>vnDJG zp@xVNH4)PV4?&>-9+j_$neY)yMriDjV8jIf2IbTQKmg6mNJ2sJ^0R!B{Qy2TjCivZ zWMG8}V;E|SLk;FKJc4Psus{cMX%SAT2(!vIunG@g+CjWjjW@6-n=Ra+hbql>FX(PJ zc*I085e~58MvX(;0*o87eXva|Boiy;_)`bt7QdPC>aCbm!+*R=g3?7I`xxoM3$vjt zNj<{w_9r1;8jCx7=o&fs_$=38Cvaa#zLm9TRYJ@{q)6*sja|SREJNuc9_G+ictNN! ztici%X$vsyY#rW5<9$5J_Y_?wg5)}rh`ZWE z$Xemt%8W)^tLUg*QUBFI7lKFZngSPg8BVKt zL>@kUz)9=hVQW>0eq@=*j>uk9lVr}6`cuM#;nGDW@*+1xEplV1-0^G6EFKzOg7*uT z54`=WJ3c!#HKk!cBuag%1&U1Np?JRrSD733Hhw*IzN7yU+%};ArZA~O!8d(M0thcF z&m4ir74vFFy4o=Y!Is@;jyZ>KqZn?mhlT|^XLp9$RY)olmlAdq9Vq4aJHET}3I;G^ zUv$k5dB#~ObVQb)H3Yk@IV-Z;+M2{dFgpjcA|XNr7|-W#92^Wg#E_}Q7!p;&)$^!~ zn|UrBlk;X~4CUK20A|x;fD6<$91(TgvqMKwfpYoS%t^sOC9n{_jjK>FCZ35V6&2=d ze@~Xi8o_+cpe?Y2S{&KJNHZ7;7UFB9H;~-Zqee$Q8&XuPRyPR?acE6&XpI$bJmEO) zjmyt2anbXQZRbBvJwgDo@p6EP>gVJDLv3?{g~$1<{DUdsFk(2m$_V9XV&sbeTtxg8 z>We_=8-~2)f>T{5$2&a0dfNq=Nh;EyJ{&2cKpEIbl>_FMco?B<2M}wMH_gorGr>!9 z$I;1+KhIsGipCdLf1zmM zPhH+yr(&6S)vGkC@uRD@3vnIEyRSJHS>u=2{86OW3ceHK)4O@%*0AufW3Or|Wa30^ z!>w{la9I3<4sr(vX{J%>kChWvm1av!QLh$oN2>I@mBNM&(5vCS6(_kI=pHLaqeH_#W=@IWU^P^y3nOrEO4jf%^cySz&1$9AAg< z$RZJ!ACMoV0l16WrS)}+s%Tq{gXW7Ql#scRAs!>@>*Ocb73E=h99=<+s1Yur{4T`6 z6#x=}U7%FMNP;DXVo^2uUT{LRHiC9np8`VKD7&VcHd$$#qf`{BE!joWSOq|RsIWT^ zT%hU^m7t>S@^32#QoD4m8YO41KC^#QTeDU%O4H11;f`vAPqJ*LE6l_4+0}#TuxwwQ zfuC{LFT~Fk*Zc7E&g-k_aHIQ%dx(B$+<46)n1}!?b!pF!4s1T?^uY}=GUMc za!^mNFx$CY3n5W~Gqh!bIG%NK(VBO0e>(Nnm3&Ef`PM~g?C8RJht2wF3B+GAn=MQq zVRqarXWW*8p^Xb~+u)$@rBnV8-vnu7p>{xIWqjR*VsnRFRCiw2_T6q;0BGLuXA?XU$gGcYQXWY1;ZG&VE|ouXp>?*wc%t@XwEMxqe$?`duT4PL}80 zJqJG@yL(RB&RsZ-rsYG8@CC-)fqLkA4-j|B!S@s-A6Bv<%*`*eL}Y>wk>OHgejzWr zXI|l^7rHfniEjQ-1*NgVoUokZc8JhnVf)rJKy|h3mYxll)9rHAh9cc%^pr;*?A^bY z^22<}>2mnu*_jg)p)y?Z(+yJ-@ookIhy+#^2^B`na-S<+$Tjz-;j0^JmAEG$Tm+#~ zuT;GI1XL5N6TCAq?>!?GR0gxKXAhA_z(K{|;?=1QXX9V)try-y5nloVZXVh%*VW(V z-T*EFFC3TY_m34DK9ObjU&7gI_xpMr|2ydO632#hv;Gr#;{IgrNqS&bO8uuclS3K} zCoC*$Fo*e$(>(rnx%z<%T|d5#MSqr`JdiJTzb;e%G>VSP>3QdWs*a&<(B6Fr_M(SU2(w zxhph#7@Di;k8<_K47uUqeEIi{{Tu)O@Ie~&t`M<7XXsIyV=zACK;SU@R3F~kp~z^7 zF_%^N+$^<;kLNg;v*eV=XDF`H4G(jb2Z7k-h?olb#^Yo0;7C67IK)N9J~2kV{>X#0 zNM82n^R!z&w0RoK*pba+I5Qqo+1Zb!rP|j9rAy$Id&~pR0*M}PPdMx~ByWCf$l0uJ z;B?rLi_YQbhTU-TyDx+!%3;I< zrt|G$TKYDuYkLM7&SQ2~@m-cUJf?Xb5#$I;N27@l%;}A52Ea?jxrMpr&CpcaVK5vp zck<)Lq@EBPb`N0H9PAv(q^3#o-YsR}-IJf59ojv=bGzT%y@hwTT^S&dibN0d36q&z$dW;g*8(U@V_FQp&t9*X@NS4!%?bY;yEPm$l zKI&y3-`;(StC+L!=C9+KY&zJO_UwB!@@YZNpaCXKvPVGZP>E+}1kVkjqxsRH{U}D4 zgSX`bbv#*v+SA#40`s6#MJR4N8Q9UkARN@zCoro7!Y|K#{#C_ zA|R$~CbIv9Jx@=;lM?oNNEtmKI#kor)JwbYb342P1GEFw+X6Q4hC}|aZ5+PYe7_^@ zH~H`E=lZ~2Hoq{aD;G}oz~2MV>ieCkdG6`tX-F*qXZ^%)Ga>)r0pNgrL*5g@u!%6h zF-mhw+SR9@_fytu=u}^N>S1m;67QCIyAUT!Hq({L9i_$c<3qC_ zSwQhY^*{!r{6f8A#5}{70}tar98poK5zjA`r)+N8(yW>M zl>mN6GnX6Sr6`BZtmUfL?pn{~=BMSGFV*2*wQ%Q0V*m4U+RN9A1Fy)|mlNqT`N_*h zDoY*qsZpV7duYEd*v1rop>y_}kI9)V1A*IxNV%ac3!QpMMeLMz z*mzeWXBr5a+GF`%$3;MoPb+FXuCJSR4?)mi@9w_;r<2M1UL8Q6${nw!{@<3V`}3W> z9{LbxA8G!?*-kQFY?ovAjPTaJi)y;LpR@af`JKFM&qKzs=h!7=`n9SO6B!L|o1iVv zH;#L43(@)V=-x}@sjVII(!I;&?$@uT8)W9b>G8Gq@$4i}}`M>lMf zzP7n^uDqu0U3vWNH{`Il_sQ9Bz0vsUI}SmQ$k*RZrET)?yF%=PZ_rPFb47u)f@2Yjk_4r@h~Vyp68O=+z^_GN6j-Zn5zH-2ALyNs%mbu zhp0E4;9?k;UK+dDP8IOQ8wtA~i$c&h*%d@_F(|w`%$x^`BfoLfUml@fBD{H9<7a7@S?{zJ&DwRc?9<%4MHDNLysz&vR)@*VIIlEm?K@|CZ0s8)Xe)s?nV9punVTdm3`z8;OM@`qoK zr?X|su{4y&9jg$n+vUT@#{H5+JGRSjj^$y{h;PQyIkNm4o^ZoA$HnIBWzDyhbg%6A zcBs?rxU*T4o4=cZ7!+HDiIp5OF<1Wq99V!l9y#pb@_Gv-rD(@y$shViea$)w}2 zLv0>9K1QtFCHwzlB%P2+{}>=k{t--x+=s!1N{-vNhjyuxC;s7w$fkX7oNIgN;b8lm zF0pnNuk*UKguXw5NcjAS@2412i0iJsj0OkZbDNy?(?GfT`(#!qyS|^@yOxML9eFU_ zp{L}SACmAnTTcBU6;t`+HBVKyVYOJeMIZ_^N@LTlypk>(VIk#n+#&z;LlH0b!4H$L zWutN80!q1F`F2io4=$eh!mvHYBxHc8?#EH`?4NF=Kgj(*EgIGdIV31#sefUPTc4Jf z{CpvNz?XhbkNw-TAXzp(iQoBqx>A1ob4}cl>wsCl7~gT{w=}L#=S7FngRc}CoNeng zqCvmjwe@PEoeGD3Q-IRt1s?EQD(32& zt!H%dCq^NggVYM4))zV@_m08?Uc9k0ca?nU$Fdw1n5=26;lLz>(eApD1Vw%+3j3K2 zP;*d!XF~xrAGQh{bjGA@XflL~;-WN(Kb^4*@X{vtd42)%R}8Wv403JbzW^D;wt6{f za`F+77`I2WUJ;wkFspK8N33N|S`g`P#kI>e(~qkK}Y^KgEk_l_bV$= zwG|gbxeVBZ7^IwzfGLKo~ zV#()Kp9sjn3jvl8v@VXNQ$@{D>&aN^NBgbav6Obwp_lFBk&Q@1U#;(BX^2?+isg%= zGsJbR)}?WjBv!RrH^!0SudoFiF>}6Xh5``SIUH8myw=(sN2B}ARub-0!ifB&Nj+#Ia}9eT_;?Rz6}K1Vv-)!YUnB~@YJ!#|!bIoml z<9PsJ_QaJBg5i~XYuSkAuyr`V)OVgo)L@cK*v^Eg-b-)X(wn?@K1|7j&(IF5ur#z=lA2 zPky`ShHkhAO5_~tx<16wU+d{Uw1Bo){rb|>WOm@p5$2v(fK>JPCe*Ow73-?LkjXu( zw?5IA`qH>PFoSSbdb!jM6;~w98-+Mv5Wlv!g?<%*e@LPcqc^Q*$oM$S4#@EKU;wg~ zd$=8^ML7vCoxI3f@3AgOqACQFtk;rgR_|t|p%9U@=khZmE2}>h({!t55cRRHOQtie zNBYw`t2LRjt@ry=KWkhvjkn@cs8np)YAsKpzSdhQ7`h<^w_Ceq#MaMK=t{CSrP465 zd8M^4mHbvoDxJRd>r_f6GOdpisjnBmBuY9gEqiKe=bSY9FR}kwt09e26Ytv5+{rNQ zTxovJ`Z$e7i{_P9FN3b-&F(OuEbP3m)nR~((yT-uokoUrfsghZb+3hKe{fF-8&S01 z@R~KtPoGeSRWOLA(l|bIU+c|5lwn;rh>9E&phm3B-qbJI95Pm8EVbkH8FN7>Rs(jk zh7YC(CLe18mGPy3fMYJ(oWd@;%`k4yXsm_ct0J|ZNkSEmO-j1PV--qGqer zo=%yfZmV@t2Au=;4rEYX!CF{MctTM6TvAU-%{r8@h!0;*RGWQ#U?D6vo-Au$1`Y1d zpVuR8*$g&}zh>U^g4Js{)x|bEi4}9qrl+jOhvV1cw^4==2#bwpyk6OE)PsN zh=AvO4*TMhsCfqAXsqi)Svgy*f?}e7T zO?Vs-1ne{EtH$?ty#Lu9Loj?&%a-=nU%lb|H*X4Z?aP;M{psKbJ6`)5p)74u$w985yrfS#EV$(kEOxX-?}ZI{4>fIEnaL~v2f|)fKhT;d3m7f z_qYwEVAK$#F;$nXs4g8-UYb{wTb`AdpI?+;m|0$2kXe?UmsegKD9tG?&M7a+%Pc6( z$<55Oj3P?3mK9L!gpF8bI#&1!i4XlBt+a<%((n>>23Ghx5~KG&Sjm@g5f(WUlYPMT z2>PL+T*9%ZT4Jlj)Yiq-h zI#&p0DIx@xlrAj`fDY(vz+$tIKaFHW)wiO|2oLw4KzTq^{YR92QT5({cXYQp^Idp; zBKl*4Q4OAM6Sy8dApvz}$nXO3-THfWtJh=faHPvtlr394s=R9Hl4^C>(xpq51WKzH zEnPCY%Ec#cb68s@(CG8sPFn&Jkz*~bPblw;oTX&(Qv9bq3zx2_M)@?fF>q~o*OrQ$ zQ9n4Uo{KW08fzC#gaq1b{tRZZd@Msc3n^S*iZbsQuHT39(5U(!L;e3IW3g~m6<1v~ zW`#Aph~lh<9EufQm-TE8Wlvv>kA8lv%i`umc^dK?0R#)yzqtQ;XV^@&ma`$BaVjPO~Ra7_Aiqzt6tEEXeB z7>P8dwD_vUOP44{RG`dPjA`9fL>WbOfMOyBU5>;UW2RzgSoN|f;Tx%ziIjzujg*7L zjFxBpR76SEL-~{z91`nQbD?$>6~a)lE+|AQLMmTcb!l;Rb)d=!R8=jl(iUP4OBO@? zZ<3;u#j4BrP*!FUITWL%uEwgHllB-eVT|GHT5ZN4&4)jM;W<2^%MhbBut3&>S(VBtuZyw!JTsQ;X z#B@v!b0IGp=E74@o`5t_abXYs?IQJuH#DuL@iZpk1g5i+`h`j^3v{aF%y?TRzl({? z<>C5A-Rg(B)sJ?of8VXHi>~X%b3GWfL7#2|;;;Z~xiA2%qM60R^(@p`zlH0$s3%9& zr=rfjMYw-D>g-R1>+?~!#+*WPeANkF?YyX-jooH$vo@VV1^vSl@5NBIyy5x-*6~wl zxFhUwob2mv=Sq6mC_NXG7$VK8oj?OiFAr2zD>K-NeumsYVh$~>Dqd2#VqtMPl>Z6z z@n#@Vh0%;;%7 zVv^s#814Phe%fW1F6$hxX=^*jAI5lUu<#ojgA!Up!#mlfU-y$~+A$28wY6>%-4Ziu zeJ`&z2Pp|@zt^j+N1B7Qzb{fBq(r3NNGBm#GtQtfeNF{9tZ|r&Pebb5E97rDPfLQo zVI4bzCUjzWq76rcZU2ff>_)K0WMoZ73a@%P%2T?vO|^DRr$A)AEbHPKcm|MVRn8!T z=k4zA)yk~3GidnfAOciZNdW(yno(A@blI{%84!*!3^6CRLT4crFRls{mtAF)ECnU5 z2$ZpI;6LCc?QHAB3`*$}-NfKV4r@E9LEA}Pep%o$+dXPc_GjU^#m zXZ6fux`S{I+W3zG0Xg$u7;NVE*%5sXy!WpV z!n%DXZq@Vt1MS`G%G9pfd%iXGY#Q}jn@pj_|G_2+%LYbmVvV0g!wOo_WaH%DyGh(V z3r@%hOlH=56aRa>tx4yQuJ>A&##bs$yVq~Km7A=QvngXl zoVF7UjP-Ysv#yAEZ?Z^>UFeK%RmtN5_#HP_0E9)#8W8E@`j3FIpW3|IVm5#&)H_S3MD6d3XWwp+s zoVc2yKrE_dL#>1hXi@?X?a2Ab>$rueS zHFcQv+y!*btR;ZfK<{nHPeNXc#D93Xn~(;eo&PKtYedSs(S}9U*f2NUjQTA|Ypexx zDJ6lI2_N8AYuP+pus6)be^xah-Fjp$z1JtY|2B-h9cisSZu5oYIca2ueVxA=kPk%P z$P8=ug@_+lWLQ65NRu))pr65g9JwDkOz|ZFBe0~*!2fj`xYB4xI|Kf>weTW>91XX9 z`M$%gdoQ9|*SBvW5|U$OT?`j_;>F~$rd^ExRI}-AwC=OYFQ$xMMI&rUJPkR!FD+L6 z#WbRSHL5I!tB~{gZa~iav{(l(rg6UTtZis!pZ`PTZseaLcd20$=g}aMIMNEtqx{r~ zBf*nsW@E_CeYnn6B7N(&dGxTe3nuTd7MD?4m!@^r`Z5~UrAcn>D5H6LvgXM4DsGwp pV#eAZRy<apXv{GICO{+!c$QUBjp-8~GE-Tm$UKmWu^)vNQ> zt9R9_mgir0HXU%be#x>+%gc)jDl3aB^D45-3(9g8mwHXv!laTC{4J^U*Of0S$*lBe z<`!klWB<{=hmzL&c=VxbU7UmX~<`ntOVTtCjI{&qGC0SYdMHK~k+2!T= zMFmBfIpS(Q)RUQ4QIJ)bSx{J*o1IynnlZ$COfbJ9 zx1cC5GrzJRyF9K8< zW>*&Y3vvoeiz@Oea!g8DxYzpYN=ow!v$Jw5bMne_vkEFpixjoz_OtQ}D@qFs3kr(- zIeC@&S&EZ-gl)g5C_lThD5oeptEe)oFgw$v&k)*0aA8S}zqWeGN`FaFQKdhtpeP?} zWmQ&|XP$Xxi~P%QW|ak{dASw&V1%;D(uy-qqKPG)9>zoMut zzwj4?DXYw>EG#N3%C5*O%>h1&Q{*}eS)N$x)Up)^=%gqKz0?6t7h?`K(B)QDl{s)S ziZfni%*CCG$|6ZnhZR&A;g1^qb8+d z`X{~^Rs1M#Q~$;Vzlr~r*YhL%Nq(HI;?Drrw-tAOn|heP&0ptx`5vUbd>?<6@8|7o z5AVddm-q+#B)?VN%i7f2_?$P`LH>l=s&??I-?L5p2mUx#zMVIyZ?c^=oUcwRl1^oz5&o$ zYIEpXK;ve`8mfrW69QVSesV+GqCP6mTYIOilJ7Re*7)J^ zuWGz^kli>;(LGhZ$Yh02Fn>i?eB4z`kJBSPpK`CNd(46pxSBpvuKVgFBkI$R^@`;WKfSb&=8L@6n!7yuj9~MA` zr(Ruj=FA>Lm8)vZ^B(spjtS}nbd!}nRpT1cRG*sY<(fhpO7t>K5ssvR!4e#(x#_8~ zPBc0^t5j^7dp_hg4nEh!Scm4)uU)R!AIDa_Om8-^1MTcRMCc4%)RlEU*Yb(6Tw|#` zGDdZCprHqAb+%k%0oq=j4~$2%NP_6WNLc`S=G;C$8QTY#&tnMfe9Xe!auu-tjhb@J z@_c9$?1AR;yoQB5TU9TQabqc3`z%7QhZ)TuVq+3p{Inh@hndYETs!5kbFr&>47-_1C#A!@j?!!``3HFNu z7)gqhTv43}%q`LML0D$#L=_VFS&7)4N_F4~FT22xA~ zUDsRs37AiVNJomBhol4}Npe)F$#{&#d#J+Mm;|)73C5F_(7~u7l0kD2@njw7!AO3I zmmt59bexiQs>#IQb5mxBSLvu2kxdDjRJ2A#xHaGt3Fd3Tyi|7hoU#m*pl@i7&9ox@ zF-4y6RHh}O#oV~Q$!r3?-CuQJA1aQ@vl`+(3411i^eH%doRGc^J%cohG7S)W+*sG z&6)@iogc2K8N_e2366sUhW0KXDi8o7`fAnJ+p>VZ zURC;H5Q~JGNqeTTDviho&1Uki#sgCmeGzn25VWAyiXLI!H3DVG)vW%OYSQ5_DomZ~$p7Q*LmE z;5x7q5H?Q($3}<7pm%UKI0AxT3NW!!6@a&3X)w#m!3t?k)MGxV|0=IT-xM?@MpMXE zhYZ^!(zjR(E{x75$2vLMNV!^?4nT?2Lwby@>n$_vqG_-Q?Zzo>kZtm9I|Whpe!8Sw03G_mAUXeO8j z;t*O#4_cB3nh>pgwt}*jpjx;GmWsk0qz6spr1rDyM>uk%+AM?ZF!h2wJ)#%1Dy9M> z!5<}yfr_BRQ)+jI^>mzOC?(8ra2-P>LpjglT9}68-?Lg7$2aD)J= zp_Z<2;1~f^LoJ_&11AWe8ftNMOGxxdiAz68MS`iJ;cEa?LqL5v&`3c2*W#*_xns9c zxdnfy7v*}h1#Bl^iv>^~>b8r3R`Fp|9h7Rp22 z4im87YN1^36ju+Aa~+cP;)dbX!FuAnlU5hYSN>kam~>ckyf* zO6#&RjtX(D;k>Y8u7QnIPpzJ3GcW?%*os^ziAD+${RX3CsJ>ve)1L% zfc^_L6M`*vD~x%hzCQ%Xpg{(CBq z2TLGJf+@nGb85?^xgl1VlBcPu1-y|AF^$o?nCC&&Cr0HY#42Nf9#}{sD=y3_9^85q z+oeBgs^W_(X1^&=X_zMfQ*xhpBqt*X?n~vn7_Eg(beNj}_M5R1xr+z~z{IymD4%bl z9GhyU&YhqMJOCLJAkKB5BXs~)8m<$Hrfqn=~exPzAgR#xKpJGc2(mGM0*ksCz0fgJ+C88`qn8!1EWTw_~>%3|BW3 z5p16YJO{9(-ptH7EmDFIX=)J5HK9>+NZ)M}_1lbo@DXj2D>~@9mHMdT5c@+ORiLh= zjyREe3kHJvR-y-8JFOzI%T|+JA{CXn>57;Rm7fDbko`4T`SkDOBbs-#TH{Bz+-YFTRQwdn4;`)9rNvZD-t2=}`7kVE$ zT}RuWP@r~Tl2ksPPSW!zgT9I;w~6cRJP_1ep-Ee@j2eQrn2YkzqBL0tFHj|;fI%dq zKm~$PKmlN?AG^0h(X&00)8tt_Ed`62wDtUj!^hO?o6u>P-mnP*`aKJh1FU0ZoR}A< zu5UAobhN;LYT?7^r>D?xk0ve3JOlGNZH(m5;$#LE^O3tMQAB+hFEa$9pkhhhAW^Kw z=h7nr-iRPvb7E`{;&ZaUIz~}^k$UtbtOCzAO<@HJ-3N$W(-egOTxZ8BB=ZpGDxDXT=*bi@ad?Oar9|9I5)8^gpDAu1!!1>n#KijbT>8_V zyTy>genHJtVUS0-OYnOwx#D_iz|$akCz2wI;Gr0VHiu0kA*W>|mttLVE$xa_^f+BX zI>M)#6)J}4#2b+F^$x0?8Vj}HQHIkN+Ur4y{+_!jQmkl>u}U)?RTn4g1^g$we=9yH zytc3dj;ZJWkT!t`>w`#Ns`@4r6J!xx-&cqMsK<5?5$s9DL~&=4kFUK~v=zOnxb!58ug>uXL7oV(xe_Kchwic2qD6pQqx4-i zpWx)&4_eXPe?T9T^nD6dYJ4X*Qbb2~u3J65x?c`jhMVglZ0+si09s=78*j zrTu8MICkE+;2Cx;CS=zdNJ*K>K0ct!OTVJUK#5|4&y@fva#GYuSUHV1aJs82dNN_v zD20^RMA46+r)5RPLCQ>=DSl|`-YL2}XsX^r5?^e{(%qy$`2;S7;Slph=+_2%;mu5O zNohFD5P3NT>jbuUOz?b+yAMHT(25bmN6HhG8ox^#VlOGZBW6)rJIp~^Jg5acpP?;H z)x5Z=!y`c8LXsBSr|m#H`Vg`s6X1)owKjE}VyWoZ0u`#66LFd-hklz&8JIJEiH|Hf z9Up4x_z=UGVyRXghQ#YK6(iH*p$@1ESjgdvo`|OlloT(vONGdMJX)a`ozHhu4j$~F zTfY^RC1Rsr8V3&h(N2mUf1BiAC{02i%4`}j$aXX8jUJwd(KSeYJuibHRglP`FADe^ zq)2fmwshonTP4~Rr?qHE&p{7BCZJ4Up}g`^ZVlcX8vIX=3(<89fc-Mrc^4g1mjd_L zCNxH)0;!}?xP*WP;3_Tx!D}D z^=`?47V9bWqyeK3b@Q~u7lsZqQ-%2T`N=`2XB!bdK2VIHqN&6=Qdx&8Umey%;9l#*Shd2fPj(hM~3Dyv-o)>)>A7u8ed z4!4I=ce~vE##y_wse}3Mw}duzAokT(G_}Mr$a6*mjGe)rz@!pKl zE_!;>*NWaVGcLAnp&BDkGW4j2(PqSos9?tH?T8h$mD~cI#D~1M6?T*T=$5Om7fmx0 zS+m$SGX<-?HZ!!^&#MRI%V!UG_vi@aBhf;Uf|&FMboyc7^s|8*@mw)`)*QA;Y@U_I z){9qX4T`almeFzX?X2R&iYmgG*2lCm0*rhHs%Y@+0okQy=!)W3)FEhv1eI9DQ<2cy z-J2xu^wTB<&_wg>A#82i&e>%y_UE>QOP^!CtX0XLIP_-m>AW0lFyXRbA-y};4-W7h zBPdczbfdR|P;4I$Nfb4Zv3=`3LL9j4eAjrmlptEd{LFYWI6)(6DfxsasUphem$_vC zQAVhn#J>5t_8CT9K8}rVn|OJn$`2n9uU}ctj~x(&B^!9>>uvi=DqYOqmS6dnBf0~+ z2jtfe9Tfws&gJ`$ic71mqwKY+k<2fCteP`$Ke~WAu!TV|1Ek5RPS6h@6$_WV$B|81 zS`2r+flIpI7Hl_aCj7SG?mst3>ixGHU=&GYh|8JgbYinH;&n7umQ zJd7{~H@j1K?V1guoT zAqtGt)ZN3_d+J-SPEe;kL#5WHbzIhPo_2t>OfsXRy4cuk$#3D@# zG?H2u@T#~uAwrJ_7d*^I<0?fbuSJU&>N6P^C+mj{j-YG1=A^5GQoIVrr{h$8Bpfoj zKSzn&o05YOnsZt#IV6#o4`(AUP7&~bqTyHhqG`C>i>p(V=9r2n0umrBhI^aJCqQDN zDBOVa#*-F;Lvgs)K?qPvf*WX-PTnrr7j+HTNwKqI^t`&0#gV zIYI4X*+>L*k`<5V4KN9zq5coM7F}E{J9H^l04% z+Bb@O)+OTFvt!*R2m4XX5kJHnK5B}tgXD7l`pfyjqhja!xo6f7+;D5eL3Gs7_=gSY z{YiEqwWdm>XpKVB{^f>e*yZBkySK8n;v(ZpwnwxY^Wxi0FA;Z|h8@6ugNkEjC=0E5 zbo^7Yksdpn!y21+h>GTHY^b?;JO0kRXJEf0Phv%SgM-I^g38-=wq1MAD8|N%&G*j3 z-yiRtH}ud;z(`T@p*`p-q3;K5UDy%FdP&r6EJ*lVvIW;Wb`vw;UP8=}itG#V;>Ifr zcRkmm`b#v^GZ`eJRzGh!0%bmI789F+qa@jMxKmudX(hW^ytb)Gb!xrEhkxwXzmJqG zuk>{s-WWas(&7|je>bI{WZ76?=!?aJ?s8n`*%YNoK#l@2OY5-s3Z-4 zB0UE<1W$gn;38KVJWi1bdWejXd(~WROoROtlvYNjdeFIM%W*vK4HDn_{C_ z^}txZ|A=_*frXTfc+fkt^$7aEK=&V2KZr8zO7Fjt&IsQ*fZoA?o4yr7_nHSUN<8=p zx{Oia_A<>0D@k(f(BE?E9Y@6b4_@xNYadn;;=JGI^Y>mA*Zh7AYZMRtKACsFDqi{h zQmPxfc__P6%-=jpI3AwI?iW`)yija;WRQ68;Z4OS@tI)IaU-8#U!Z&{q<~ywU^S$QHitLUHcLQjj?xUh(^Q$iNa}d$;Q1TE*D)-=QW0uI^Aj9nzZigie z2RDgVw_Gn4JUmj=Jd!VtuW`4vJ@O6v?VlcEi^Ri!dak(p7wF)Aau#&BiB5C~YbT-O zB6PO@A%xEQExvffLOgVFJrj}LgouxI2>+u~!R{YE+E2XjXp$^tjFV0@-OqLA<)&yy z(gP_1B6y|^IoUWsM4Q}t_tT(|+tV8!t|n$amO>!}@QMsI*bX`7(xBAvbqZX1ocpk8 z_~r^!mF}_BD;jg}<2)+pw7!0GBqL}H+Do#>Le@>45rNp27x8)vbZN1FSPssKEgrPC z_-AEx@lC55#IZjP5>eZx6VIy}p4tOGcR+KY8+iVqZKJ^Ri?@vx2e*xm-NW&q4aSwZ3%#qrf6^Q<5|BY$C5eR*-vdq#uL{DNpCZBb_z-a-lSS7N3O=>G z2Js+8zxT;v@jzQSKfF)4wlAe@#rC1zJz#g!I8ty|KMmrwl~LGAbUi6#=N(I|F?pvu z{gW|@`vuyEX@l`vp?kedzOGE)xk2^m!^EdMr+_&!+kL6>a22WR$!1XOhU;XtaDclw za|Sg?PCULBJa^Yne9wF3uAHDF(dz&a97GW?NgS*axQN0DBuE^s0OO!)c_Qfo`q&Bv zTpCk1#~FfCkU_!X0!fNNexB%~!E_CvuOZ{;S-_(ylM(~cGa*ePV~toSKLwf#pI^xj zt?aL@=-W8VCg11DYr*9!YA5U=#EB_@^m(9Y@7G=JB1N*jqR>you}{Qxf6>Sa*E9JofnM)HF5cccgR5@Q@^Ys5 z<}V{Aja6dsMYd-$c#)QOf6q+8hD!-WLQF&-6hZUAx`Ank8;JoSmpGs;3>_R}6pwiR zx&A|eujf;W{ow5kx*RqQ0ccMP%rTyF)OhjLb6Qngf}Sev&={o;eF=vyabpzu)tXgw z>p!#Q`Y>WpIgY;DF+V=UB%T750`~C%&l-tRq?ZCtWO%JNC)*!%K%l5FhRt z<=J!yV5)wMvirGyyGYvmu(tMDa;}Kij_jfmF(k4`llcxm+xF4kCmEY7p8q02%-SC% z_P-h{I`6Y%=DPB1^pIt15zwx$s z@U7Rxfj19`pWk?`t?rP6v#sK~cLuYkh4IdCzW-zK=XbJQ9Un{n`Tm_*gDw8S!4Q{A z{z-7tIY|a8fA>KZfTwj-c3DgR?M-7I|r!4!+c zC+00jL|fN6Nd|Ez1Sd2***H1*-TOq$hmBI9q>I0Ncy7c&Fr0qyn27mkP{ek+jBf81 zqdyv5(EbvU4WC)*4bM?2Qs0f9Qe*1D>Cj^YVo}&pipxk)-*Zgd`O%QUd(55~OOCk- zKv4TA)UEC1k9M$M5_8YaHgRMy`}cga|C5m{u6-T0{t#UyTb!oWYgs3HeYQWY^K?U` z-O%>UXVEOCQ8Ed6h+w7qF9wJqUnIoT_pF?c%I;0H;ZV;T#3wHd7Vm!1SB(BrK<##X znag&xefMP+?`65G(sey`ROEiOP26^T2|sa%IC=cMUY63At++Bx{8~7-F<5)?*;iSS z&{}Y19g~E1JbPG%5;abNnBw9{`p`XAQ8Z{Ta0Y#g2cK@NBC3y5ysY=%lEsf-uW0M_ zw>&0lx;KgQzgfi_SBbxTlg$s^B!2kjlBDi6I2Z)|<-JlKMX#CUd*c>cstls`NX;78iUjPJ(%@~HN=i;dsqq0@oy#U4U(f@OjcQuOP-&X<4tdqmVf|Jt`qJdJxd$_bqr|trG6#&MA?DpTH+=NFhX_w3a z&wf8$`*#CG=gEDnK{Wq8gKvIG{Ppjnc@t%cqVGR~iJ^NVxK0Y_iFRv&Cb8`wKFH#} ze`v#`A7zJ!=fN$qLf3G8z}|DILiGQ^>kj!_?mNT{KMfIA{g41f@S7hl8QsuR8y|Tb zyK#6Bj)0ccaKh3OcvL5>$WK2E?kiU?T{p6Zc%Tv)rxN;xRsc^*<9Vl8aH@!D!Z=lo zi~GB$E@O%HGREQ5yIv)p)J*Rz9@)=|nDx^beg`w=I9SC9T`?J`V=ekA;2E7uCIUyv zH!`}qVGVKpPq(rS!twLs;ip#*c@DpD4-P&l*8hAtyH9lgoErTDT{kl6$#z3CyD6gi zRuK0Ew!zD;Wp^0E7#r8`3`!!tj)#Avma$=HYuNcm#(Fb$oAC_qITEkMG}5gy?aYx@ z!vvMxsofZ|h)g~ie@=$wsG> zO-wMK6!4raPn--WXJVjPIhD*CRvaxcJ(i1NY$7X4$`o4jSU@l_0) z$Jeel5FvOP`rL%OUZMOlcEH%#i#Fe{edX)$`1hW83rSvs+}LtAJAYbzRnx9^S2^GEJ>%Qn3g-!0HFQL~&y@90lc zt0X&}R5GRLsPXsSY;L~;zrd{2*y&-ThkKr*`)Y4^tq?MgpzG9GjEK>z4_njk#G{b^ zQPS?|EsvqRzSY>$hvo3DcH_N1Y>c)O+mNz~E7JC-(BUOIT$qYe1RQ?a7}=N2<=gK! z>ie=0Of$ChWwTwK8`0)8e(K9oLH7~;*o(Y%jd8pmn>C;UVRrlf7^K6*S7uEeiZMHm z)izGzsod5#(p15(N4Z>G7{F6rFaeFiKWa?<}1d>ad^Rg!bs`QF6+0s z8RLEC&i2rEAT9S8clBq@{NUrpr~zycyU3V0fFXoxTsMGS#da9)3}90d$ZOL_>0K{k zUHN5^Rk8m?WBfpt%TL_8vt}S0z{YjKNJ3WoxN!dm=fi9Cgpmp)!vD#&gPomZFT}G^ z>1)^1W(apWbY%E8Ckfd$gX*z0l;aUMMwmd~ZWu{}SPgJJ#6}qDJ^!E@eN@)Z_)24ywEQJrc0T3zdf7Q_h;hivE?`5A!9I2< zWy>D>q))zLkt6J+ThZ#-!j0L(Se%hQjO}6d#t*~T6eF07nZ_CQ$!vfzKbfVa>oIUJ zzQ>a_DGMrZB;%v%DPtAb26`IBh1v|kK+cT6C9?;6b+=)5#Nf%X>~1q2NMVC`_fcb4 z3QORpjv9wjSUy{8^d8RcjoB^Ffiw+H=E>o#KFJRB(djwrKo}q1nWF+&{qRxaq7m$h zzKhX2Cg53T-zVK;jE)f?b@I-`BiJMc_t8jBW8>H`@XflW0|~p zhw*M2yBO@6K9c1Xw416ITAoVMWzlz`L{@~$lEq!-Rw26JHFvIY??{&H)Q>>AjE<44 zKY#2wFVs|Ay%@AxN;llSkZg&bcMRYVh8pAu9Eq7VvuF-6W zUEYOq*=er_6F@ptL@uDxJ$?Es?qO%lV}HyR)~DD1qEDPLehky?HCK;ebFMh}II#*j z{&JT?tz|lJo~8q4q9W12>y_Q!K#EK{XlHM?wwRO7W<`=M1+klr+tS&CDc#V?pfvRO zJIIGMp3`=T1(oEeaCw+9=68)n>{$%+!_bTyKC^ThE{isJ5v8ohq!7n#hXl;$x|`j&t^*(yvy8jm37?hKsX0;7T?wW{)4AB9)0Ww{Ev4^ap#j=`(D1~-Pdmo z67<D_y+AU!m1iYn6+aEYYr6RK3Knm940(^w%iK=$D8-M4*4dlkxwW zDI4=x)Oph}%`{B$4HB`yKbh)Z&NQWbMNMsW4Nh_kW}A*#jv|rZ{5P{nVF@~%9%U+K zNOmd;k?TL4DPzgvvYOJG>oRKVDkQVjURRrOO=<1YjP&%370YT@Tzz$QO`X3YV{tXm z#{5@dy(^HDypT++KZm7F-j7P+U>lj?K<2+Bl6Rg5Z-6r}*{9Yj#27Y13`Thf(oiG~ z$%{lPVi;1m_+(sAUA|(ee_35^#=^yQV`}_YSJxV|$FnpI9h4~QG5gw_b-a*&?P{2)4z?~NupWqhj$VZ*=+(m5i1i2a@1qjiH{r~Af8w<{5-n9Bi zk1`8`AI2=Cl2X%564>-DL|qZmSmUL!aDK9kA?LCIssC#oK4Bai9D6~ODJfq-L-aDP z%xCGn&Om;=ao>3?BknM|jl@!CP>1xVrS&TOme%t`n_BNR;7sRk!-smnANGL1>;Zq< z13uLQcH(Gh{-C`;FRQ|aRSY0rv0(>b&@Tj!1WY1mw~ql#M7CiaFo}%~UjUd)iw(~M zOd=JpvrD}5;BU+gYy4f0!H*m3bXG9P9(y;sk|MF;jmG;r8|m(8n}+nTD2g&E#-#2X z4DMwFig5#IEM&2~J;vBr$kKmx4DG}nCy@gMq|&S&ndwF8Sw=|_8xU0XqK(K} zibP^+!;5>sR|B3I)?SS=VQlxmALZd;@O?enUjRHIto?w5p{2`fN|#mDE-J0W9xHlz zB%Q&XRo9`zwSb}Ql+tC_DQi(yQJ!91S}~Dq)L3n5H6(03>gn7c>}4DUefjoYhWmWx z;|F^g8RxSB(I-#0&pMwCVe!VY^VzVt!rmTb5QhCiK;n8F;sSJ>xAU9x+3gWy9DO{> zZjVQ4K)L|QfwUX#7Ysn^j}(X052-Jbv2_~DNIDm5kcuN!cHY_6vm6?i(mD_hjd9_0 zcHS=-OE+-}39WKzyvbL)Fe5SM1SESE9p&O4b>|z=GnoI3d7&z^v;AdbV3NjUrst&R zn`>11OY2tPA3n=ih<~)~V*m0L{@S`3rh_zbkVmO9-kHHh7FVFQrusT~1*J=B{G}Dw zO~!(@ww{9WR3xiOE33wFUE{B~5OwrJY%|Tca3)Jk3a^?vypv%aTu0OyA0jvhqnLU+O$3~gU_^S^NkxXVq^Zv zn!2JaluQ161J#Ob1@rHP=P8*%Kz}_?TDN%TRhI();447<8Kj4hnviZrszxe9x)kXGBrh=i|CEAqVhjjGF_=@%HcUB)g=txqwTX+EfwigZ1aefYmd`8P;6AQ=ZPW=TfM zd=?iSH{7H2LDk6=*&$ZqmgMhXg8!rr;fJz+dEtf80Z?iFGqy0b%gQ3_3Y}|JR8|7IKki3bl z$YYTkA6~((HM+0Bzb2{Zw;2nrWMf^OZ@>lr$k=oxOY5_Dq$ya3kkhyY#+z5NQG+5! znKpd@a>6qKIjyq5NGM_By!NQ+s3xDI206*l^~hba+sYC)jBgobY%F24iD}7a8Wm A761SM From fb577620dd02c88a8c48f1ea623d020b40c286fb Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Thu, 23 Feb 2023 20:55:12 -0500 Subject: [PATCH 11/14] Improve error information and update libs --- backend/Cargo.lock | 2 +- backend/Cargo.toml | 2 +- backend/src/api/handler.rs | 11 +- backend/src/main.rs | 2 +- backend/src/settings/general.rs | 8 +- backend/src/settings/generic/battery.rs | 6 +- backend/src/settings/generic/cpu.rs | 43 ++++--- backend/src/settings/generic/gpu.rs | 4 +- backend/src/settings/generic_amd/cpu.rs | 8 +- backend/src/settings/generic_amd/gpu.rs | 56 +++++---- backend/src/settings/steam_deck/battery.rs | 21 ++-- backend/src/settings/steam_deck/cpu.rs | 100 +++++++++------ backend/src/settings/steam_deck/gpu.rs | 138 +++++++++++++-------- backend/src/settings/traits.rs | 4 +- backend/src/settings/unknown/battery.rs | 4 +- backend/src/settings/unknown/cpu.rs | 45 ++++--- backend/src/settings/unknown/gpu.rs | 4 +- backend/src/utility.rs | 4 +- package.json | 4 +- pnpm-lock.yaml | 30 ++--- src/backend.ts | 2 +- src/components/debug.tsx | 2 +- 22 files changed, 304 insertions(+), 196 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 1fc9ddb..682bc22 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -826,7 +826,7 @@ dependencies = [ [[package]] name = "powertools-rs" -version = "1.2.0-beta1" +version = "1.2.0-beta2" dependencies = [ "async-trait", "limits_core", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index b2c5933..e9ed6f1 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "powertools-rs" -version = "1.2.0-beta1" +version = "1.2.0-beta2" edition = "2021" authors = ["NGnius (Graham) "] description = "Backend (superuser) functionality for PowerTools" diff --git a/backend/src/api/handler.rs b/backend/src/api/handler.rs index 1a59250..7d3e7f9 100644 --- a/backend/src/api/handler.rs +++ b/backend/src/api/handler.rs @@ -1,4 +1,5 @@ use std::sync::mpsc::{self, Receiver, Sender}; +use std::fmt::Write; use crate::settings::{Settings, TCpus, TGpu, TBattery, TGeneral, OnSet, OnResume, MinMax}; use crate::persist::SettingsJson; @@ -216,6 +217,12 @@ pub struct ApiMessageHandler { on_empty: Vec>, } +fn print_errors(call_name: &str, errors: Vec) { + let mut err_list = String::new(); + errors.iter().for_each(|e| write!(err_list, "\t{},\n", e).unwrap_or(())); + log::error!("Settings {}() err:\n{}", call_name, err_list); +} + impl ApiMessageHandler { pub fn process_forever(&mut self, settings: &mut Settings) { let mut dirty_echo = true; // set everything twice, to make sure PowerTools wins on race conditions @@ -228,7 +235,7 @@ impl ApiMessageHandler { dirty_echo = dirty; // echo only once // run on_set if let Err(e) = settings.on_set() { - log::error!("Settings on_set() err: {}", e); + print_errors("on_set", e); } // do callbacks for func in self.on_empty.drain(..) { @@ -272,7 +279,7 @@ impl ApiMessageHandler { ApiMessage::General(x) => x.process(settings.general.as_mut()), ApiMessage::OnResume => { if let Err(e) = settings.on_resume() { - log::error!("Settings on_resume() err: {}", e); + print_errors("on_resume", e); } false } diff --git a/backend/src/main.rs b/backend/src/main.rs index 6d6bac6..ab70cbc 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -224,7 +224,7 @@ fn main() -> Result<(), ()> { .register("GENERAL_idk", api::general::gunter); if let Err(e) = loaded_settings.on_set() { - log::error!("Startup Settings.on_set() error: {}", e); + e.iter().for_each(|e| log::error!("Startup Settings.on_set() error: {}", e)); } else { log::info!("Startup Settings.on_set() success"); } diff --git a/backend/src/settings/general.rs b/backend/src/settings/general.rs index 2279f4f..f88a05d 100644 --- a/backend/src/settings/general.rs +++ b/backend/src/settings/general.rs @@ -37,13 +37,13 @@ pub struct General { } impl OnSet for General { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { Ok(()) } } impl OnResume for General { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { Ok(()) } } @@ -91,7 +91,7 @@ pub struct Settings { } impl OnSet for Settings { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.battery.on_set()?; self.cpus.on_set()?; self.gpu.on_set()?; @@ -224,7 +224,7 @@ impl Settings { } impl OnResume for Settings { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { log::debug!("Applying settings for on_resume"); self.battery.on_resume()?; log::debug!("Resumed battery"); diff --git a/backend/src/settings/generic/battery.rs b/backend/src/settings/generic/battery.rs index 1555f4a..f2551a0 100644 --- a/backend/src/settings/generic/battery.rs +++ b/backend/src/settings/generic/battery.rs @@ -52,13 +52,15 @@ impl Battery { } impl OnSet for Battery { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { + // TODO Ok(()) } } impl OnResume for Battery { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { + // TODO Ok(()) } } diff --git a/backend/src/settings/generic/cpu.rs b/backend/src/settings/generic/cpu.rs index 2ae1f5c..873a98d 100644 --- a/backend/src/settings/generic/cpu.rs +++ b/backend/src/settings/generic/cpu.rs @@ -19,7 +19,8 @@ pub struct Cpus + AsRef + TCpu> { } impl + AsRef + TCpu + OnSet> OnSet for Cpus { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); if self.smt_capable { // toggle SMT if self.smt { @@ -31,7 +32,7 @@ impl + AsRef + TCpu + OnSet> OnSet for Cpus { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); } else { usdpl_back::api::files::write_single(CPU_SMT_PATH, "off").map_err(|e| { SettingError { @@ -41,23 +42,32 @@ impl + AsRef + TCpu + OnSet> OnSet for Cpus { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); } } for (i, cpu) in self.cpus.as_mut_slice().iter_mut().enumerate() { cpu.as_mut().state.do_set_online = self.smt || i % 2 == 0 || !self.smt_capable; - cpu.on_set()?; + cpu.on_set().unwrap_or_else(|mut e| errors.append(&mut e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } } impl + AsRef + TCpu + OnResume> OnResume for Cpus { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { + let mut errors = Vec::new(); for cpu in &self.cpus { - cpu.on_resume()?; + cpu.on_resume().unwrap_or_else(|mut e| errors.append(&mut e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } } @@ -232,7 +242,8 @@ impl FromGenericCpuInfo for Cpu { } impl Cpu { - fn set_all(&mut self) -> Result<(), SettingError> { + fn set_all(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); // set cpu online/offline if self.index != 0 && self.state.do_set_online { // cpu0 cannot be disabled let online_path = cpu_online_path(self.index); @@ -241,7 +252,7 @@ impl Cpu { msg: format!("Failed to write to `{}`: {}", &online_path, e), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); } // set governor @@ -255,9 +266,13 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } /*fn from_sys(cpu_index: usize) -> Self { @@ -304,14 +319,14 @@ impl Into for Cpu { } impl OnSet for Cpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { //self.clamp_all(); self.set_all() } } impl OnResume for Cpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { let mut copy = self.clone(); copy.state.is_resuming = true; copy.set_all() diff --git a/backend/src/settings/generic/gpu.rs b/backend/src/settings/generic/gpu.rs index 7e658a4..064e87a 100644 --- a/backend/src/settings/generic/gpu.rs +++ b/backend/src/settings/generic/gpu.rs @@ -69,13 +69,13 @@ impl Into for Gpu { } impl OnSet for Gpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { Ok(()) } } impl OnResume for Gpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { Ok(()) } } diff --git a/backend/src/settings/generic_amd/cpu.rs b/backend/src/settings/generic_amd/cpu.rs index 74f5c5b..8285fd0 100644 --- a/backend/src/settings/generic_amd/cpu.rs +++ b/backend/src/settings/generic_amd/cpu.rs @@ -24,14 +24,14 @@ impl Cpus { } impl OnResume for Cpus { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { self.generic.on_resume() // TODO } } impl OnSet for Cpus { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.generic.on_set() // TODO } @@ -97,14 +97,14 @@ impl AsMut for Cpu { } impl OnResume for Cpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { self.generic.on_resume() // TODO } } impl OnSet for Cpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.generic.on_set() // TODO } diff --git a/backend/src/settings/generic_amd/gpu.rs b/backend/src/settings/generic_amd/gpu.rs index ca4dffe..6d35bb1 100644 --- a/backend/src/settings/generic_amd/gpu.rs +++ b/backend/src/settings/generic_amd/gpu.rs @@ -41,25 +41,26 @@ impl Gpu { } } - fn set_all(&mut self) -> Result<(), SettingError> { + fn set_all(&mut self) -> Result<(), Vec> { let mutex = match &self.implementor { Some(x) => x, None => { - return Err(SettingError { + return Err(vec![SettingError { msg: "RyzenAdj unavailable".to_owned(), setting: SettingVariant::Gpu, - }); + }]); } }; let lock = match mutex.lock() { Ok(x) => x, Err(e) => { - return Err(SettingError { + return Err(vec![SettingError { msg: format!("RyzenAdj lock acquire failed: {}", e), setting: SettingVariant::Gpu, - }); + }]); } }; + let mut errors = Vec::new(); if let Some(fast_ppt) = &self.generic.fast_ppt { if self.state.old_fast_ppt.is_none() { self.state.old_fast_ppt = Some(lock.get_fast_value() as _); @@ -67,12 +68,12 @@ impl Gpu { lock.set_fast_limit(*fast_ppt as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_fast_limit({}) err: {}", *fast_ppt, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } else if let Some(fast_ppt) = &self.state.old_fast_ppt { lock.set_fast_limit(*fast_ppt as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_fast_limit({}) err: {}", *fast_ppt, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); self.state.old_fast_ppt = None; } if let Some(slow_ppt) = &self.generic.slow_ppt { @@ -82,12 +83,12 @@ impl Gpu { lock.set_slow_limit(*slow_ppt as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_slow_limit({}) err: {}", *slow_ppt, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } else if let Some(slow_ppt) = &self.state.old_slow_ppt { lock.set_slow_limit(*slow_ppt as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_slow_limit({}) err: {}", *slow_ppt, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); self.state.old_slow_ppt = None; } if let Some(clock_limits) = &self.generic.clock_limits { @@ -95,11 +96,11 @@ impl Gpu { lock.set_max_gfxclk_freq(clock_limits.max as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_max_gfxclk_freq({}) err: {}", clock_limits.max, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); lock.set_min_gfxclk_freq(clock_limits.min as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_min_gfxclk_freq({}) err: {}", clock_limits.min, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } else if self.state.clock_limits_set { self.state.clock_limits_set = false; let limits = self.generic.limits(); @@ -108,73 +109,78 @@ impl Gpu { lock.set_max_gfxclk_freq(max_limits.max as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_max_gfxclk_freq({}) err: {}", max_limits.max, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); lock.set_min_gfxclk_freq(min_limits.min as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_min_gfxclk_freq({}) err: {}", min_limits.min, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } } } - Ok(()) + if errors.is_empty() { + Ok(()) + } else { + Err(errors) + } } - fn resume_all(&self) -> Result<(), SettingError> { + fn resume_all(&self) -> Result<(), Vec> { // like set_all() but without updating state // -- assumption: state is already up to date let mutex = match &self.implementor { Some(x) => x, None => { - return Err(SettingError { + return Err(vec![SettingError { msg: "RyzenAdj unavailable".to_owned(), setting: SettingVariant::Gpu, - }); + }]); } }; let lock = match mutex.lock() { Ok(x) => x, Err(e) => { - return Err(SettingError { + return Err(vec![SettingError { msg: format!("RyzenAdj lock acquire failed: {}", e), setting: SettingVariant::Gpu, - }); + }]); } }; + let mut errors = Vec::new(); if let Some(fast_ppt) = &self.generic.fast_ppt { lock.set_fast_limit(*fast_ppt as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_fast_limit({}) err: {}", *fast_ppt, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } if let Some(slow_ppt) = &self.generic.slow_ppt { lock.set_slow_limit(*slow_ppt as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_slow_limit({}) err: {}", *slow_ppt, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } if let Some(clock_limits) = &self.generic.clock_limits { lock.set_max_gfxclk_freq(clock_limits.max as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_max_gfxclk_freq({}) err: {}", clock_limits.max, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); lock.set_min_gfxclk_freq(clock_limits.min as _).map_err(|e| SettingError { msg: format!("RyzenAdj set_min_gfxclk_freq({}) err: {}", clock_limits.min, e), setting: SettingVariant::Gpu, - })?; + }).unwrap_or_else(|e| errors.push(e)); } Ok(()) } } impl OnResume for Gpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { self.generic.on_resume()?; self.resume_all() } } impl OnSet for Gpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.generic.on_set()?; self.set_all() } diff --git a/backend/src/settings/steam_deck/battery.rs b/backend/src/settings/steam_deck/battery.rs index 5a7f745..e4c9574 100644 --- a/backend/src/settings/steam_deck/battery.rs +++ b/backend/src/settings/steam_deck/battery.rs @@ -67,7 +67,8 @@ impl Battery { } } - fn set_all(&mut self) -> Result<(), SettingError> { + fn set_all(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); if let Some(charge_rate) = self.charge_rate { self.state.charge_rate_set = true; usdpl_back::api::files::write_single(BATTERY_CHARGE_RATE_PATH, charge_rate).map_err( @@ -75,7 +76,7 @@ impl Battery { msg: format!("Failed to write to `{}`: {}", BATTERY_CHARGE_RATE_PATH, e), setting: crate::settings::SettingVariant::Battery, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); } else if self.state.charge_rate_set { self.state.charge_rate_set = false; usdpl_back::api::files::write_single(BATTERY_CHARGE_RATE_PATH, self.limits.charge_rate.max).map_err( @@ -83,7 +84,7 @@ impl Battery { msg: format!("Failed to write to `{}`: {}", BATTERY_CHARGE_RATE_PATH, e), setting: crate::settings::SettingVariant::Battery, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); } if let Some(charge_mode) = self.charge_mode { self.state.charge_mode_set = true; @@ -92,7 +93,7 @@ impl Battery { msg: format!("Failed to set charge mode: {}", e), setting: crate::settings::SettingVariant::Battery, }, - )?; + ).unwrap_or_else(|e| {errors.push(e); 0}); } else if self.state.charge_mode_set { self.state.charge_mode_set = false; super::util::set(super::util::Setting::ChargeMode, ChargeMode::Normal as _).map_err( @@ -100,9 +101,13 @@ impl Battery { msg: format!("Failed to set charge mode: {}", e), setting: crate::settings::SettingVariant::Battery, }, - )?; + ).unwrap_or_else(|e| {errors.push(e); 0}); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } fn clamp_all(&mut self) { @@ -181,14 +186,14 @@ impl Into for Battery { } impl OnSet for Battery { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.clamp_all(); self.set_all() } } impl OnResume for Battery { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { self.clone().set_all() } } diff --git a/backend/src/settings/steam_deck/cpu.rs b/backend/src/settings/steam_deck/cpu.rs index 426497d..97adea7 100644 --- a/backend/src/settings/steam_deck/cpu.rs +++ b/backend/src/settings/steam_deck/cpu.rs @@ -20,7 +20,8 @@ pub struct Cpus { } impl OnSet for Cpus { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); if self.smt_capable { // toggle SMT if self.smt { @@ -32,7 +33,7 @@ impl OnSet for Cpus { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); } else { usdpl_back::api::files::write_single(CPU_SMT_PATH, "off").map_err(|e| { SettingError { @@ -42,23 +43,32 @@ impl OnSet for Cpus { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); } } for (i, cpu) in self.cpus.as_mut_slice().iter_mut().enumerate() { cpu.state.do_set_online = self.smt || i % 2 == 0; - cpu.on_set()?; + cpu.on_set().unwrap_or_else(|mut e| errors.append(&mut e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } } impl OnResume for Cpus { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { + let mut errors = Vec::new(); for cpu in &self.cpus { - cpu.on_resume()?; + cpu.on_resume().unwrap_or_else(|mut e| errors.append(&mut e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } } @@ -221,30 +231,22 @@ impl Cpu { } } - fn set_all(&mut self) -> Result<(), SettingError> { - // set cpu online/offline - if self.index != 0 && self.state.do_set_online { // cpu0 cannot be disabled - let online_path = cpu_online_path(self.index); - usdpl_back::api::files::write_single(&online_path, self.online as u8).map_err(|e| { - SettingError { - msg: format!("Failed to write to `{}`: {}", &online_path, e), - setting: crate::settings::SettingVariant::Cpu, - } - })?; - } + fn set_force_performance_related(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); + // set clock limits log::debug!("Setting {} to manual", CPU_FORCE_LIMITS_PATH); let mode: String = usdpl_back::api::files::read_single(CPU_FORCE_LIMITS_PATH.to_owned()).unwrap(); if mode != "manual" { // set manual control usdpl_back::api::files::write_single(CPU_FORCE_LIMITS_PATH, "manual").map_err(|e| { - SettingError { + vec![SettingError { msg: format!( "Failed to write `manual` to `{}`: {}", CPU_FORCE_LIMITS_PATH, e ), setting: crate::settings::SettingVariant::Cpu, - } + }] })?; } if let Some(clock_limits) = &self.clock_limits { @@ -260,7 +262,7 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); // min clock let valid_min = if clock_limits.min < self.limits.clock_min.min {self.limits.clock_min.min} else {clock_limits.min}; let payload_min = format!("p {} 0 {}\n", self.index / 2, valid_min); @@ -272,7 +274,7 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); } else if self.state.clock_limits_set || (self.state.is_resuming && !self.limits.skip_resume_reclock) { self.state.clock_limits_set = false; // disable manual clock limits @@ -287,7 +289,7 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); // min clock let payload_min = format!("p {} 0 {}\n", self.index / 2, self.limits.clock_min.min); usdpl_back::api::files::write_single(CPU_CLOCK_LIMITS_PATH, &payload_min).map_err( @@ -298,15 +300,39 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); } // commit changes - usdpl_back::api::files::write_single(CPU_CLOCK_LIMITS_PATH, "c\n").map_err(|e| { - SettingError { - msg: format!("Failed to write `c` to `{}`: {}", CPU_CLOCK_LIMITS_PATH, e), - setting: crate::settings::SettingVariant::Cpu, - } - })?; + usdpl_back::api::files::write_single(CPU_CLOCK_LIMITS_PATH, "c\n") + .unwrap_or_else(|e| { + errors.push(SettingError { + msg: format!("Failed to write `c` to `{}`: {}", CPU_CLOCK_LIMITS_PATH, e), + setting: crate::settings::SettingVariant::Cpu, + }); + }); + + if errors.is_empty() { + Ok(()) + } else { + Err(errors) + } + } + + fn set_all(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); + // set cpu online/offline + if self.index != 0 && self.state.do_set_online { // cpu0 cannot be disabled + let online_path = cpu_online_path(self.index); + usdpl_back::api::files::write_single(&online_path, self.online as u8).map_err(|e| { + SettingError { + msg: format!("Failed to write to `{}`: {}", &online_path, e), + setting: crate::settings::SettingVariant::Cpu, + } + }).unwrap_or_else(|e| errors.push(e)); + } + + self.set_force_performance_related() + .unwrap_or_else(|mut e| errors.append(&mut e)); // set governor if self.index == 0 || self.online { @@ -319,9 +345,13 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } fn clamp_all(&mut self) { @@ -394,14 +424,14 @@ impl Into for Cpu { } impl OnSet for Cpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.clamp_all(); self.set_all() } } impl OnResume for Cpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { let mut copy = self.clone(); copy.state.is_resuming = true; copy.set_all() diff --git a/backend/src/settings/steam_deck/gpu.rs b/backend/src/settings/steam_deck/gpu.rs index cf5e788..fef4498 100644 --- a/backend/src/settings/steam_deck/gpu.rs +++ b/backend/src/settings/steam_deck/gpu.rs @@ -53,53 +53,8 @@ impl Gpu { } } - fn set_all(&mut self) -> Result<(), SettingError> { - // set fast PPT - if let Some(fast_ppt) = &self.fast_ppt { - let fast_ppt_path = gpu_power_path(FAST_PPT); - usdpl_back::api::files::write_single(&fast_ppt_path, fast_ppt).map_err(|e| { - SettingError { - msg: format!( - "Failed to write `{}` to `{}`: {}", - fast_ppt, &fast_ppt_path, e - ), - setting: crate::settings::SettingVariant::Gpu, - } - })?; - } - // set slow PPT - if let Some(slow_ppt) = &self.slow_ppt { - let slow_ppt_path = gpu_power_path(SLOW_PPT); - usdpl_back::api::files::write_single(&slow_ppt_path, slow_ppt).map_err(|e| { - SettingError { - msg: format!( - "Failed to write `{}` to `{}`: {}", - slow_ppt, &slow_ppt_path, e - ), - setting: crate::settings::SettingVariant::Gpu, - } - })?; - } - // settings using force_performance_level - let mode: String = usdpl_back::api::files::read_single(GPU_FORCE_LIMITS_PATH.to_owned()).unwrap(); - if mode != "manual" { - // set manual control - usdpl_back::api::files::write_single(GPU_FORCE_LIMITS_PATH, "manual").map_err(|e| { - SettingError { - msg: format!( - "Failed to write `manual` to `{}`: {}", - GPU_FORCE_LIMITS_PATH, e - ), - setting: crate::settings::SettingVariant::Gpu, - } - })?; - } - // enable/disable downclock of GPU memory (to 400Mhz?) - usdpl_back::api::files::write_single(GPU_MEMORY_DOWNCLOCK_PATH, self.slow_memory as u8) - .map_err(|e| SettingError { - msg: format!("Failed to write to `{}`: {}", GPU_MEMORY_DOWNCLOCK_PATH, e), - setting: crate::settings::SettingVariant::Gpu, - })?; + fn set_clocks(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); if let Some(clock_limits) = &self.clock_limits { // set clock limits self.state.clock_limits_set = true; @@ -113,7 +68,7 @@ impl Gpu { ), setting: crate::settings::SettingVariant::Gpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); // min clock let payload_min = format!("s 0 {}\n", clock_limits.min); usdpl_back::api::files::write_single(GPU_CLOCK_LIMITS_PATH, &payload_min).map_err( @@ -124,7 +79,7 @@ impl Gpu { ), setting: crate::settings::SettingVariant::Gpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); } else if self.state.clock_limits_set || (self.state.is_resuming && !self.limits.skip_resume_reclock) { self.state.clock_limits_set = false; // disable manual clock limits @@ -138,7 +93,7 @@ impl Gpu { ), setting: crate::settings::SettingVariant::Gpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); // min clock let payload_min = format!("s 0 {}\n", self.limits.clock_min.min); usdpl_back::api::files::write_single(GPU_CLOCK_LIMITS_PATH, &payload_min).map_err( @@ -149,17 +104,90 @@ impl Gpu { ), setting: crate::settings::SettingVariant::Gpu, }, - )?; + ).unwrap_or_else(|e| errors.push(e)); } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) + } + } + + fn set_force_performance_related(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); + // settings using force_performance_level + let mode: String = usdpl_back::api::files::read_single(GPU_FORCE_LIMITS_PATH.to_owned()).unwrap(); + if mode != "manual" { + // set manual control + usdpl_back::api::files::write_single(GPU_FORCE_LIMITS_PATH, "manual").map_err(|e| { + vec![SettingError { + msg: format!( + "Failed to write `manual` to `{}`: {}", + GPU_FORCE_LIMITS_PATH, e + ), + setting: crate::settings::SettingVariant::Gpu, + }] + })?; + } + // enable/disable downclock of GPU memory (to 400Mhz?) + usdpl_back::api::files::write_single(GPU_MEMORY_DOWNCLOCK_PATH, self.slow_memory as u8) + .unwrap_or_else(|e| { + errors.push(SettingError { + msg: format!("Failed to write to `{}`: {}", GPU_MEMORY_DOWNCLOCK_PATH, e), + setting: crate::settings::SettingVariant::Gpu, + }); + }); + self.set_clocks() + .unwrap_or_else(|mut e| errors.append(&mut e)); // commit changes usdpl_back::api::files::write_single(GPU_CLOCK_LIMITS_PATH, "c\n").map_err(|e| { SettingError { msg: format!("Failed to write `c` to `{}`: {}", GPU_CLOCK_LIMITS_PATH, e), setting: crate::settings::SettingVariant::Gpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); + if errors.is_empty() { + Ok(()) + } else { + Err(errors) + } + } - Ok(()) + fn set_all(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); + // set fast PPT + if let Some(fast_ppt) = &self.fast_ppt { + let fast_ppt_path = gpu_power_path(FAST_PPT); + usdpl_back::api::files::write_single(&fast_ppt_path, fast_ppt).map_err(|e| { + SettingError { + msg: format!( + "Failed to write `{}` to `{}`: {}", + fast_ppt, &fast_ppt_path, e + ), + setting: crate::settings::SettingVariant::Gpu, + } + }).unwrap_or_else(|e| {errors.push(e);}); + } + // set slow PPT + if let Some(slow_ppt) = &self.slow_ppt { + let slow_ppt_path = gpu_power_path(SLOW_PPT); + usdpl_back::api::files::write_single(&slow_ppt_path, slow_ppt).map_err(|e| { + SettingError { + msg: format!( + "Failed to write `{}` to `{}`: {}", + slow_ppt, &slow_ppt_path, e + ), + setting: crate::settings::SettingVariant::Gpu, + } + }).unwrap_or_else(|e| {errors.push(e);}); + } + self.set_force_performance_related() + .unwrap_or_else(|mut e| errors.append(&mut e)); + if errors.is_empty() { + Ok(()) + } else { + Err(errors) + } } fn clamp_all(&mut self) { @@ -208,14 +236,14 @@ impl Into for Gpu { } impl OnSet for Gpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { self.clamp_all(); self.set_all() } } impl OnResume for Gpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { let mut copy = self.clone(); copy.state.is_resuming = true; copy.set_all() diff --git a/backend/src/settings/traits.rs b/backend/src/settings/traits.rs index c2f70bf..304bb4c 100644 --- a/backend/src/settings/traits.rs +++ b/backend/src/settings/traits.rs @@ -3,11 +3,11 @@ use super::SettingError; use super::MinMax; pub trait OnSet { - fn on_set(&mut self) -> Result<(), SettingError>; + fn on_set(&mut self) -> Result<(), Vec>; } pub trait OnResume { - fn on_resume(&self) -> Result<(), SettingError>; + fn on_resume(&self) -> Result<(), Vec>; } pub trait SettingsRange { diff --git a/backend/src/settings/unknown/battery.rs b/backend/src/settings/unknown/battery.rs index dfc57ce..21554f3 100644 --- a/backend/src/settings/unknown/battery.rs +++ b/backend/src/settings/unknown/battery.rs @@ -18,13 +18,13 @@ impl Into for Battery { } impl OnSet for Battery { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { Ok(()) } } impl OnResume for Battery { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { Ok(()) } } diff --git a/backend/src/settings/unknown/cpu.rs b/backend/src/settings/unknown/cpu.rs index 16e5ba4..36c800f 100644 --- a/backend/src/settings/unknown/cpu.rs +++ b/backend/src/settings/unknown/cpu.rs @@ -16,7 +16,8 @@ pub struct Cpus { } impl OnSet for Cpus { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); if self.smt_capable { // toggle SMT if self.smt { @@ -28,7 +29,7 @@ impl OnSet for Cpus { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| {errors.push(e);}); } else { usdpl_back::api::files::write_single(CPU_SMT_PATH, "off").map_err(|e| { SettingError { @@ -38,23 +39,32 @@ impl OnSet for Cpus { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| {errors.push(e);}); } } for (i, cpu) in self.cpus.as_mut_slice().iter_mut().enumerate() { - cpu.state.do_set_online = self.smt || i % 2 == 0; - cpu.on_set()?; + cpu.state.do_set_online = self.smt || i % 2 == 0 || !self.smt_capable; + cpu.on_set().unwrap_or_else(|mut e| errors.append(&mut e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } } impl OnResume for Cpus { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { + let mut errors = Vec::new(); for cpu in &self.cpus { - cpu.on_resume()?; + cpu.on_resume().unwrap_or_else(|mut e| errors.append(&mut e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } } @@ -191,7 +201,8 @@ impl Cpu { } } - fn set_all(&mut self) -> Result<(), SettingError> { + fn set_all(&mut self) -> Result<(), Vec> { + let mut errors = Vec::new(); // set cpu online/offline if self.index != 0 && self.state.do_set_online { // cpu0 cannot be disabled let online_path = cpu_online_path(self.index); @@ -200,7 +211,7 @@ impl Cpu { msg: format!("Failed to write to `{}`: {}", &online_path, e), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); } // set governor @@ -214,9 +225,13 @@ impl Cpu { ), setting: crate::settings::SettingVariant::Cpu, } - })?; + }).unwrap_or_else(|e| errors.push(e)); + } + if errors.is_empty() { + Ok(()) + } else { + Err(errors) } - Ok(()) } fn from_sys(cpu_index: usize) -> Self { @@ -251,14 +266,14 @@ impl Into for Cpu { } impl OnSet for Cpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { //self.clamp_all(); self.set_all() } } impl OnResume for Cpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { let mut copy = self.clone(); copy.state.is_resuming = true; copy.set_all() diff --git a/backend/src/settings/unknown/gpu.rs b/backend/src/settings/unknown/gpu.rs index fecc4ed..4cec037 100644 --- a/backend/src/settings/unknown/gpu.rs +++ b/backend/src/settings/unknown/gpu.rs @@ -38,13 +38,13 @@ impl Into for Gpu { } impl OnSet for Gpu { - fn on_set(&mut self) -> Result<(), SettingError> { + fn on_set(&mut self) -> Result<(), Vec> { Ok(()) } } impl OnResume for Gpu { - fn on_resume(&self) -> Result<(), SettingError> { + fn on_resume(&self) -> Result<(), Vec> { Ok(()) } } diff --git a/backend/src/utility.rs b/backend/src/utility.rs index 7469ba9..cd1c452 100644 --- a/backend/src/utility.rs +++ b/backend/src/utility.rs @@ -44,10 +44,10 @@ pub fn chown_settings_dir() -> std::io::Result<()> { .output()?; let uid: u32 = String::from_utf8_lossy(&output.stdout).parse().unwrap_or(1000); log::info!("chmod/chown ~/.config/powertools for user `{}` ({})", deck_user, uid); - let permissions = PermissionsExt::from_mode(0o655); + let permissions = PermissionsExt::from_mode(0o755); std::fs::set_permissions(&dir, permissions)?; // FIXME once merged into stable https://github.com/rust-lang/rust/issues/88989 - //std::os::unix::fs::chown(&dir, Some(uid), None) + //std::os::unix::fs::chown(&dir, Some(uid), Some(uid)) std::process::Command::new("chown") .args(["-R", &format!("{}:{}", deck_user, deck_user), &dir.to_str().unwrap_or(".")]) .output()?; diff --git a/package.json b/package.json index d4171f4..8a73eba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "PowerTools", - "version": "1.2.0-beta1", + "version": "1.2.0-beta2", "description": "Power tweaks for power users", "scripts": { "build": "shx rm -rf dist && rollup -c", @@ -39,7 +39,7 @@ "typescript": "^4.9.5" }, "dependencies": { - "decky-frontend-lib": "~3.18.11", + "decky-frontend-lib": "~3.19.1", "react-icons": "^4.7.1", "usdpl-front": "file:src/usdpl_front" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 59345b9..c3a416b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ specifiers: '@rollup/plugin-typescript': ^8.5.0 '@types/react': 16.14.0 '@types/webpack': ^5.28.0 - decky-frontend-lib: ~3.18.11 + decky-frontend-lib: ~3.19.1 react-icons: ^4.7.1 rollup: ^2.79.1 rollup-plugin-import-assets: ^1.1.1 @@ -18,7 +18,7 @@ specifiers: usdpl-front: file:src/usdpl_front dependencies: - decky-frontend-lib: 3.18.11 + decky-frontend-lib: 3.19.1 react-icons: 4.7.1 usdpl-front: file:src/usdpl_front @@ -185,8 +185,8 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/node/18.14.0: - resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} + /@types/node/18.14.1: + resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} dev: true /@types/prop-types/15.7.5: @@ -203,13 +203,13 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 dev: true /@types/webpack/5.28.0: resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 tapable: 2.2.1 webpack: 5.75.0 transitivePeerDependencies: @@ -381,7 +381,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001457 - electron-to-chromium: 1.4.305 + electron-to-chromium: 1.4.309 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -420,8 +420,8 @@ packages: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /decky-frontend-lib/3.18.11: - resolution: {integrity: sha512-SLb3qWJc6CLNRqcbNyJsA8D6sXf7aix8/h6VqQTWjVmel6c3SkOR6b9KMvgFRzXumfRt7XGasBnZJmyCwH4BCQ==} + /decky-frontend-lib/3.19.1: + resolution: {integrity: sha512-hU4+EFs74MGzUCv8l1AO2+EBj9RRbnpU19Crm4u+3lbLu6d63U2GsUeQ9ssmNRcOMY1OuVZkRoZBE58soOBJ3A==} dev: false /deepmerge/4.3.0: @@ -429,8 +429,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.305: - resolution: {integrity: sha512-WETy6tG0CT5gm1O+xCbyapWNsCcmIvrn4NHViIGYo2AT8FV2qUCXdaB+WqYxSv/vS5mFqhBYnfZAAkVArjBmUg==} + /electron-to-chromium/1.4.309: + resolution: {integrity: sha512-U7DTiKe4h+irqBG6h4EZ0XXaZuJj4md3xIXXaGSYhwiumPZ4BSc6rgf9UD0hVUMaeP/jB0q5pKWCPxvhO8fvZA==} dev: true /enhanced-resolve/5.12.0: @@ -590,7 +590,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.0 + '@types/node': 18.14.1 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -821,12 +821,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 - terser: 5.16.4 + terser: 5.16.5 webpack: 5.75.0 dev: true - /terser/5.16.4: - resolution: {integrity: sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==} + /terser/5.16.5: + resolution: {integrity: sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==} engines: {node: '>=10'} hasBin: true dependencies: diff --git a/src/backend.ts b/src/backend.ts index f8674f9..0d7da44 100644 --- a/src/backend.ts +++ b/src/backend.ts @@ -29,7 +29,7 @@ export async function initBackend() { // init usdpl await init_embedded(); init_usdpl(USDPL_PORT); - console.log("USDPL started for framework: " + target_usdpl()); + console.log("POWERTOOLS: USDPL started for framework: " + target_usdpl()); const user_locale = navigator.languages && navigator.languages.length ? navigator.languages[0] diff --git a/src/components/debug.tsx b/src/components/debug.tsx index f76a7e4..dd6aa32 100644 --- a/src/components/debug.tsx +++ b/src/components/debug.tsx @@ -35,7 +35,7 @@ function buildDebug() { if (eggCount % 10 == 9) { // you know you're bored and/or conceited when you spend time adding an easter egg // that just sends people to your own project's repo - Router.NavigateToExternalWeb("https://github.com/NGnius/PowerTools"); + Router.NavigateToExternalWeb("https://github.com/NGnius/PowerTools/releases"); } eggCount++; }}> From 2b94298e8cc8875dfa5f9deda09d335a170e4533 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Thu, 23 Feb 2023 21:07:17 -0500 Subject: [PATCH 12/14] Rename backend binary and shorten V_INFO --- backend/Cargo.lock | 2 +- backend/Cargo.toml | 2 +- backend/build-docker.sh | 2 +- backend/build.sh | 6 +++--- backend/src/main.rs | 8 +++++++- src/index.tsx | 2 +- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 682bc22..ab9ac0a 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -825,7 +825,7 @@ dependencies = [ ] [[package]] -name = "powertools-rs" +name = "powertools" version = "1.2.0-beta2" dependencies = [ "async-trait", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index e9ed6f1..d202c32 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "powertools-rs" +name = "powertools" version = "1.2.0-beta2" edition = "2021" authors = ["NGnius (Graham) "] diff --git a/backend/build-docker.sh b/backend/build-docker.sh index 58ae2f9..6871fb8 100755 --- a/backend/build-docker.sh +++ b/backend/build-docker.sh @@ -8,7 +8,7 @@ cargo --version echo "--- Building plugin backend ---" cargo build --profile docker mkdir -p out -cp target/release/powertools-rs out/backend +cp target/release/powertools out/backend echo " --- Cleaning up ---" # remove root-owned target folder diff --git a/backend/build.sh b/backend/build.sh index 94cd216..3a20ec7 100755 --- a/backend/build.sh +++ b/backend/build.sh @@ -5,6 +5,6 @@ cargo build --target x86_64-unknown-linux-musl #cross build --release mkdir -p ../bin -#cp ./target/x86_64-unknown-linux-musl/release/powertools-rs ../bin/backend -cp ./target/x86_64-unknown-linux-musl/debug/powertools-rs ../bin/backend -#cp ./target/release/powertools-rs ../bin/backend +#cp ./target/x86_64-unknown-linux-musl/release/powertools ../bin/backend +cp ./target/x86_64-unknown-linux-musl/debug/powertools ../bin/backend +#cp ./target/release/powertools ../bin/backend diff --git a/backend/src/main.rs b/backend/src/main.rs index ab70cbc..0971965 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -73,7 +73,13 @@ fn main() -> Result<(), ()> { let instance = Instance::new(PORT) .register("V_INFO", |_: Vec| { - vec![format!("{} v{}", PACKAGE_NAME, PACKAGE_VERSION).into()] + #[cfg(debug_assertions)] + {vec![format!("v{}-dbg", PACKAGE_VERSION).into()]} + #[cfg(not(debug_assertions))] + {vec![format!("v{}-rls", PACKAGE_VERSION).into()]} + }) + .register("NAME", |_: Vec| { + vec![PACKAGE_NAME.into()] }) .register("LOG", api::general::log_it()) // battery API functions diff --git a/src/index.tsx b/src/index.tsx index a7ab4d0..03e8d4d 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -290,7 +290,7 @@ const Content: VFC<{ serverAPI: ServerAPI }> = ({}) => { export default definePlugin((serverApi: ServerAPI) => { return { - title:
PowerTools 300
, + title:
I'm a tool
, content: , icon: , onDismount() { From 7acff88b145e6d6cbbc6e327267aea7c0b5e3e6e Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sun, 26 Feb 2023 13:04:09 -0500 Subject: [PATCH 13/14] Only commit Deck CPU & GPU frequency settings when no errors occur --- backend/Cargo.lock | 2 +- backend/Cargo.toml | 2 +- backend/src/settings/steam_deck/cpu.rs | 11 ++++++++--- backend/src/settings/steam_deck/gpu.rs | 15 +++++++-------- package.json | 2 +- src/index.tsx | 2 +- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index ab9ac0a..83a7797 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -826,7 +826,7 @@ dependencies = [ [[package]] name = "powertools" -version = "1.2.0-beta2" +version = "1.2.0-beta3" dependencies = [ "async-trait", "limits_core", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index d202c32..af497d3 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "powertools" -version = "1.2.0-beta2" +version = "1.2.0-beta3" edition = "2021" authors = ["NGnius (Graham) "] description = "Backend (superuser) functionality for PowerTools" diff --git a/backend/src/settings/steam_deck/cpu.rs b/backend/src/settings/steam_deck/cpu.rs index 97adea7..28ab7a7 100644 --- a/backend/src/settings/steam_deck/cpu.rs +++ b/backend/src/settings/steam_deck/cpu.rs @@ -302,7 +302,7 @@ impl Cpu { }, ).unwrap_or_else(|e| errors.push(e)); } - // commit changes + usdpl_back::api::files::write_single(CPU_CLOCK_LIMITS_PATH, "c\n") .unwrap_or_else(|e| { errors.push(SettingError { @@ -310,9 +310,14 @@ impl Cpu { setting: crate::settings::SettingVariant::Cpu, }); }); - + // commit changes (if no errors have already occured) if errors.is_empty() { - Ok(()) + usdpl_back::api::files::write_single(CPU_CLOCK_LIMITS_PATH, "c\n").map_err(|e| { + vec![SettingError { + msg: format!("Failed to write `c` to `{}`: {}", CPU_CLOCK_LIMITS_PATH, e), + setting: crate::settings::SettingVariant::Cpu, + }] + }) } else { Err(errors) } diff --git a/backend/src/settings/steam_deck/gpu.rs b/backend/src/settings/steam_deck/gpu.rs index fef4498..b89be00 100644 --- a/backend/src/settings/steam_deck/gpu.rs +++ b/backend/src/settings/steam_deck/gpu.rs @@ -139,15 +139,14 @@ impl Gpu { }); self.set_clocks() .unwrap_or_else(|mut e| errors.append(&mut e)); - // commit changes - usdpl_back::api::files::write_single(GPU_CLOCK_LIMITS_PATH, "c\n").map_err(|e| { - SettingError { - msg: format!("Failed to write `c` to `{}`: {}", GPU_CLOCK_LIMITS_PATH, e), - setting: crate::settings::SettingVariant::Gpu, - } - }).unwrap_or_else(|e| errors.push(e)); + // commit changes (if no errors have already occured) if errors.is_empty() { - Ok(()) + usdpl_back::api::files::write_single(GPU_CLOCK_LIMITS_PATH, "c\n").map_err(|e| { + vec![SettingError { + msg: format!("Failed to write `c` to `{}`: {}", GPU_CLOCK_LIMITS_PATH, e), + setting: crate::settings::SettingVariant::Gpu, + }] + }) } else { Err(errors) } diff --git a/package.json b/package.json index 8a73eba..bb2ea60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "PowerTools", - "version": "1.2.0-beta2", + "version": "1.2.0-beta3", "description": "Power tweaks for power users", "scripts": { "build": "shx rm -rf dist && rollup -c", diff --git a/src/index.tsx b/src/index.tsx index 03e8d4d..25bdd22 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -299,7 +299,7 @@ export default definePlugin((serverApi: ServerAPI) => { periodicHook = null; lifetimeHook!.unregister(); startHook!.unregister(); - serverApi.routerHook.removeRoute("/decky-plugin-test"); + //serverApi.routerHook.removeRoute("/decky-plugin-test"); backend.log(backend.LogLevel.Debug, "Unregistered PowerTools callbacks, so long and thanks for all the fish."); }, }; From 5c8ea50d8332f555cec2027bf327318cbd453151 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sat, 4 Mar 2023 10:32:58 -0500 Subject: [PATCH 14/14] Update dependencies and version --- backend/Cargo.lock | 338 +++++++++++++++++++++++---------------- backend/Cargo.toml | 2 +- package.json | 4 +- pnpm-lock.yaml | 30 ++-- src/components/debug.tsx | 4 +- src/index.tsx | 9 +- 6 files changed, 229 insertions(+), 158 deletions(-) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 83a7797..22f4d10 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -70,9 +70,9 @@ dependencies = [ [[package]] name = "async-recursion" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cda8f4bcc10624c4e85bc66b3f452cca98cfa5ca002dc83a16aad2367641bea" +checksum = "3b015a331cc64ebd1774ba119538573603427eaace0a1950c423ab971f903796" dependencies = [ "proc-macro2", "quote", @@ -81,9 +81,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.59" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6e93155431f3931513b243d371981bb2770112b370c82745a1d19d2f99364" +checksum = "095183a3539c7c7649b2beb87c2d3f0591f3a7fed07761cc546d244e27e0238c" dependencies = [ "proc-macro2", "quote", @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -167,9 +167,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cexpr" @@ -186,12 +192,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chunked_transfer" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e" - [[package]] name = "cipher" version = "0.3.0" @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.4.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3" +checksum = "77ed9a53e5d4d9c573ae844bfac6872b159cb1d1585a83b29e7a64b7eef7332a" dependencies = [ "glob", "libc", @@ -261,9 +261,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "encoding" @@ -331,18 +331,39 @@ checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ "cfg-if", ] [[package]] -name = "fastrand" -version = "1.8.0" +name = "errno" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] @@ -374,9 +395,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" dependencies = [ "futures-core", "futures-sink", @@ -384,27 +405,27 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" dependencies = [ "futures-core", "futures-sink", @@ -447,15 +468,15 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" dependencies = [ "bytes", "fnv", @@ -503,9 +524,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" dependencies = [ "libc", ] @@ -518,9 +539,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -552,9 +573,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" dependencies = [ "bytes", "futures-channel", @@ -604,10 +625,20 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "1.0.4" +name = "io-lifetimes" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" +dependencies = [ + "libc", + "windows-sys 0.45.0", +] + +[[package]] +name = "itoa" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "lazy_static" @@ -623,9 +654,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.138" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libloading" @@ -645,6 +676,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + [[package]] name = "log" version = "0.4.17" @@ -693,14 +730,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", "wasi", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] @@ -723,9 +760,9 @@ dependencies = [ [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -733,9 +770,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ "hermit-abi", "libc", @@ -758,9 +795,9 @@ checksum = "7b2b2cbbfd8defa51ff24450a61d73b3ff3e158484ddd274a883e886e6fbaa78" [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "opaque-debug" @@ -826,7 +863,7 @@ dependencies = [ [[package]] name = "powertools" -version = "1.2.0-beta3" +version = "1.2.0-beta4" dependencies = [ "async-trait", "limits_core", @@ -849,9 +886,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" dependencies = [ "unicode-ident", ] @@ -864,9 +901,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -912,9 +949,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -927,21 +964,26 @@ version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustix" +version = "0.36.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd5c6ff11fecd55b40746d1995a02f2eb375bf8c00d192d521ee09f42bef37bc" +dependencies = [ + "bitflags", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys", + "windows-sys 0.45.0", +] + [[package]] name = "rustls-pemfile" version = "0.2.1" @@ -953,9 +995,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "ryzenadj-rs" @@ -980,18 +1022,18 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "serde" -version = "1.0.149" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256b9932320c590e707b94576e3cc1f7c9024d0ee6612dfbcf1cb106cbe8e055" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.149" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eae9b04cbffdfd550eb462ed33bc6a1b68c935127d008b27444d08380f94e4" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -1000,9 +1042,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" dependencies = [ "itoa", "ryu", @@ -1051,9 +1093,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "simplelog" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dfff04aade74dd495b007c831cd6f4e0cee19c344dd9dc0884c0289b70a786" +checksum = "acee08041c5de3d5048c8b3f6f13fafb3026b24ba43c6a695a0c76179b844369" dependencies = [ "log", "termcolor", @@ -1062,18 +1104,18 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -1087,9 +1129,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.105" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -1098,16 +1140,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "af18f7ae1acd354b992402e9ec5864359d693cd8a79dcbef59f76891701c1e95" dependencies = [ "cfg-if", "fastrand", - "libc", "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys 0.42.0", ] [[package]] @@ -1121,18 +1162,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -1141,9 +1182,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" dependencies = [ "itoa", "libc", @@ -1161,9 +1202,9 @@ checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" [[package]] name = "time-macros" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" dependencies = [ "time-core", ] @@ -1179,15 +1220,15 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.23.0" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" +checksum = "03201d01c3c27a29c8a5cee5b55a93ddae1ccf6f08f65365c2c918f8c1b76f64" dependencies = [ "autocfg", "bytes", @@ -1197,14 +1238,14 @@ dependencies = [ "num_cpus", "pin-project-lite", "socket2", - "windows-sys", + "windows-sys 0.45.0", ] [[package]] name = "tokio-stream" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" +checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" dependencies = [ "futures-core", "pin-project-lite", @@ -1225,9 +1266,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" dependencies = [ "bytes", "futures-core", @@ -1266,9 +1307,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" @@ -1315,15 +1356,15 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "775c11906edafc97bc378816b94585fbd9a054eabaf86fdd0ced94af449efab7" [[package]] name = "unicode-normalization" @@ -1346,13 +1387,12 @@ dependencies = [ [[package]] name = "ureq" -version = "2.5.0" +version = "2.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97acb4c28a254fd7a4aeec976c46a7fa404eac4d7c134b30c75144846d7cb8f" +checksum = "338b31dd1314f68f3aabf3ed57ab922df95ffcd902476ca7ba3c4ce7b908c46d" dependencies = [ "base64", "brotli-decompressor", - "chunked_transfer", "encoding_rs", "flate2", "log", @@ -1462,9 +1502,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "which" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" +checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" dependencies = [ "either", "libc", @@ -1518,46 +1558,70 @@ dependencies = [ ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.0" +name = "windows-sys" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "zeroize" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index af497d3..14072fa 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "powertools" -version = "1.2.0-beta3" +version = "1.2.0-beta4" edition = "2021" authors = ["NGnius (Graham) "] description = "Backend (superuser) functionality for PowerTools" diff --git a/package.json b/package.json index bb2ea60..deb4dbd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "PowerTools", - "version": "1.2.0-beta3", + "version": "1.2.0-beta4", "description": "Power tweaks for power users", "scripts": { "build": "shx rm -rf dist && rollup -c", @@ -40,7 +40,7 @@ }, "dependencies": { "decky-frontend-lib": "~3.19.1", - "react-icons": "^4.7.1", + "react-icons": "^4.8.0", "usdpl-front": "file:src/usdpl_front" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3a416b..34d216a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ specifiers: '@types/react': 16.14.0 '@types/webpack': ^5.28.0 decky-frontend-lib: ~3.19.1 - react-icons: ^4.7.1 + react-icons: ^4.8.0 rollup: ^2.79.1 rollup-plugin-import-assets: ^1.1.1 shx: ^0.3.4 @@ -19,7 +19,7 @@ specifiers: dependencies: decky-frontend-lib: 3.19.1 - react-icons: 4.7.1 + react-icons: 4.8.0 usdpl-front: file:src/usdpl_front devDependencies: @@ -185,8 +185,8 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/node/18.14.1: - resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} + /@types/node/18.14.6: + resolution: {integrity: sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==} dev: true /@types/prop-types/15.7.5: @@ -203,13 +203,13 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.6 dev: true /@types/webpack/5.28.0: resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.6 tapable: 2.2.1 webpack: 5.75.0 transitivePeerDependencies: @@ -380,8 +380,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001457 - electron-to-chromium: 1.4.309 + caniuse-lite: 1.0.30001460 + electron-to-chromium: 1.4.320 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true @@ -395,8 +395,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001457: - resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} + /caniuse-lite/1.0.30001460: + resolution: {integrity: sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==} dev: true /chrome-trace-event/1.0.3: @@ -429,8 +429,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.309: - resolution: {integrity: sha512-U7DTiKe4h+irqBG6h4EZ0XXaZuJj4md3xIXXaGSYhwiumPZ4BSc6rgf9UD0hVUMaeP/jB0q5pKWCPxvhO8fvZA==} + /electron-to-chromium/1.4.320: + resolution: {integrity: sha512-h70iRscrNluMZPVICXYl5SSB+rBKo22XfuIS1ER0OQxQZpKTnFpuS6coj7wY9M/3trv7OR88rRMOlKmRvDty7Q==} dev: true /enhanced-resolve/5.12.0: @@ -590,7 +590,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.14.1 + '@types/node': 18.14.6 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -683,8 +683,8 @@ packages: safe-buffer: 5.2.1 dev: true - /react-icons/4.7.1: - resolution: {integrity: sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==} + /react-icons/4.8.0: + resolution: {integrity: sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==} peerDependencies: react: '*' dev: false diff --git a/src/components/debug.tsx b/src/components/debug.tsx index dd6aa32..cdb5051 100644 --- a/src/components/debug.tsx +++ b/src/components/debug.tsx @@ -16,6 +16,8 @@ import { import { get_value, target_usdpl, version_usdpl} from "usdpl-front"; let eggCount = 0; +let now = new Date(); +let isSpecialDay = now.getDate() == 1 && now.getMonth() == 3; export class Debug extends Component { render() { @@ -70,7 +72,7 @@ function buildDebug() { v{version_usdpl()} - {eggCount % 10 == 9 && + {(eggCount % 10 == 9 || isSpecialDay) && { diff --git a/src/index.tsx b/src/index.tsx index 25bdd22..6606435 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -20,7 +20,7 @@ import { //joinClassNames, } from "decky-frontend-lib"; import { VFC, useState } from "react"; -import { GiDrill } from "react-icons/gi"; +import { GiDrill, GiTimeBomb, GiTimeTrap, GiDynamite } from "react-icons/gi"; //import * as python from "./python"; import * as backend from "./backend"; @@ -289,10 +289,15 @@ const Content: VFC<{ serverAPI: ServerAPI }> = ({}) => { }; export default definePlugin((serverApi: ServerAPI) => { + let ico = ; + let now = new Date(); + if (now.getDate() == 1 && now.getMonth() == 3) { + ico = ; + } return { title:
I'm a tool
, content: , - icon: , + icon: ico, onDismount() { backend.log(backend.LogLevel.Debug, "PowerTools shutting down"); clearInterval(periodicHook!);