From b268dcf9782cbef565ddfcbd7ae911e99936c9a9 Mon Sep 17 00:00:00 2001 From: sim Date: Fri, 25 Sep 2026 13:11:14 +0800 Subject: [PATCH 01/10] =?UTF-8?q?perf(macos):=20=E5=8A=A0=E9=80=9F=20Rust?= =?UTF-8?q?=20CI=20=E4=B8=8E=E6=A1=8C=E9=9D=A2=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 74 ++++++++-- .github/workflows/release-tauri.yml | 44 ++++-- docs/index.md | 1 + docs/macos-build-performance.md | 53 ++++++++ openless-all/app/scripts/build-mac.sh | 36 ++--- .../app/scripts/macos-build-cache.test.mjs | 127 ++++++++++++++++++ openless-all/app/scripts/macos-build-env.sh | 20 +++ 7 files changed, 317 insertions(+), 38 deletions(-) create mode 100644 docs/macos-build-performance.md create mode 100644 openless-all/app/scripts/macos-build-cache.test.mjs create mode 100644 openless-all/app/scripts/macos-build-env.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b6515e726..27b4d8ecc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,12 @@ on: pull_request: branches: [main, beta] workflow_dispatch: + inputs: + platform: + description: Platforms to check (macos runs only macOS gates) + type: choice + options: [all, macos] + default: all # 同一 PR 快速重复推送时取消旧运行;workflow_dispatch 用 run_id 隔离。 concurrency: @@ -20,6 +26,7 @@ concurrency: jobs: android-check: + if: github.event_name != 'workflow_dispatch' || inputs.platform != 'macos' name: Android cargo check runs-on: ubuntu-latest defaults: @@ -166,6 +173,7 @@ jobs: --no-daemon linux-core-contract: + if: github.event_name != 'workflow_dispatch' || inputs.platform != 'macos' name: Linux core tests runs-on: ubuntu-22.04 defaults: @@ -194,13 +202,7 @@ jobs: # 一个平台挂掉不阻塞其他平台拿到验证结果。 fail-fast: false matrix: - include: - - os: macos-latest - label: macOS - preflight: false - - os: windows-latest - label: Windows - preflight: true + include: ${{ fromJSON(github.event_name == 'workflow_dispatch' && inputs.platform == 'macos' && '[{"os":"macos-latest","label":"macOS","preflight":false}]' || '[{"os":"macos-latest","label":"macOS","preflight":false},{"os":"windows-latest","label":"Windows","preflight":true}]') }} runs-on: ${{ matrix.os }} env: # 新增 shared Core 后,macOS 首次编译同时构建 MLX C++ 依赖和完整 @@ -226,15 +228,30 @@ jobs: cache: npm cache-dependency-path: openless-all/app/package-lock.json - # 现有测试继续用 stable;额外安装声明的 MSRV,供下方兼容性门禁显式调用。 + # macOS MSRV 在独立 job 并行检查;Windows 保留原有检查顺序。 - uses: dtolnay/rust-toolchain@1.88.0 + if: runner.os == 'Windows' - uses: dtolnay/rust-toolchain@stable + - name: Configure macOS check profile + if: runner.os == 'macOS' + run: echo "CARGO_PROFILE_DEV_DEBUG=0" >> "$GITHUB_ENV" + - uses: swatinem/rust-cache@v2 + if: runner.os == 'Windows' with: workspaces: 'openless-all/app/src-tauri -> target' + - name: Cache macOS stable dependencies + if: runner.os == 'macOS' + uses: swatinem/rust-cache@v2 + with: + key: macos-stable-v1 + workspaces: | + openless-all/app -> target + openless-all/app/src-tauri -> target + - name: Prepare Windows Sherpa static libraries if: runner.os == 'Windows' shell: pwsh @@ -284,11 +301,14 @@ jobs: run: cargo test --locked -p openless-core hardening_actually_narrows_the_writable_roots -- --ignored --nocapture --test-threads=1 - name: Check Tauri backend (cargo check) + if: runner.os == 'Windows' run: cargo check --locked --manifest-path src-tauri/Cargo.toml + # test 编译并运行 lib/bin,覆盖原 cargo check 的生产 binary 路径。 + # 避免先 metadata-only check、再为同一依赖图做一次 codegen。 - name: Run Rust backend unit tests if: runner.os != 'Windows' - run: cargo test --locked --manifest-path src-tauri/Cargo.toml --lib + run: cargo test --locked --manifest-path src-tauri/Cargo.toml --lib --bins --timings - name: Compile Rust backend unit tests (Windows) # Windows runner 能链接 lib test binary,但干净镜像缺少可选 native runtime @@ -304,9 +324,11 @@ jobs: run: cargo test --locked --manifest-path src-tauri/backend-tests/Cargo.toml - name: Check Tauri backend with Rust 1.88 MSRV + if: runner.os == 'Windows' run: cargo +1.88.0 check --locked --manifest-path src-tauri/Cargo.toml - name: Compile backend tests with Rust 1.88 MSRV + if: runner.os == 'Windows' run: cargo +1.88.0 test --locked --manifest-path src-tauri/backend-tests/Cargo.toml --no-run - name: Verify version sync across all 5 files @@ -338,3 +360,37 @@ jobs: exit 1 fi echo "[ok] 全部 5 处版本号一致:$PKG" + + macos-msrv: + name: macOS Rust 1.88 MSRV + runs-on: macos-latest + env: + CARGO_BUILD_JOBS: 2 + CARGO_PROFILE_DEV_DEBUG: 0 + CARGO_PROFILE_TEST_DEBUG: 0 + CMAKE_BUILD_PARALLEL_LEVEL: 2 + defaults: + run: + working-directory: openless-all/app + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + cache-dependency-path: openless-all/app/package-lock.json + - uses: dtolnay/rust-toolchain@1.88.0 + - uses: swatinem/rust-cache@v2 + with: + key: macos-msrv-v1 + workspaces: | + openless-all/app/src-tauri -> target + openless-all/app/src-tauri/backend-tests -> target + - run: npm ci + - run: npm run build + - name: Check Tauri backend with Rust 1.88 MSRV + run: cargo +1.88.0 check --locked --manifest-path src-tauri/Cargo.toml --timings + - name: Compile backend tests with Rust 1.88 MSRV + run: cargo +1.88.0 test --locked --manifest-path src-tauri/backend-tests/Cargo.toml --no-run --timings diff --git a/.github/workflows/release-tauri.yml b/.github/workflows/release-tauri.yml index 4f2f3a627..8f03225f8 100644 --- a/.github/workflows/release-tauri.yml +++ b/.github/workflows/release-tauri.yml @@ -21,6 +21,12 @@ on: tags: - 'v*-tauri' workflow_dispatch: + inputs: + platform: + description: Desktop platforms to build (manual builds do not publish a release) + type: choice + options: [all, macos] + default: all # 同一 tag 重复推送只跑最新一次;workflow_dispatch 用 run_id 隔离避免互相取消。 concurrency: @@ -34,19 +40,7 @@ jobs: strategy: fail-fast: false matrix: - include: - - platform: macos-latest - rust-target: aarch64-apple-darwin - updater-target: darwin - updater-arch: aarch64 - - platform: macos-15-intel - rust-target: x86_64-apple-darwin - updater-target: darwin - updater-arch: x86_64 - - platform: windows-latest - rust-target: x86_64-pc-windows-msvc - updater-target: windows - updater-arch: x86_64 + include: ${{ fromJSON(github.event_name == 'workflow_dispatch' && inputs.platform == 'macos' && '[{"platform":"macos-latest","rust-target":"aarch64-apple-darwin","updater-target":"darwin","updater-arch":"aarch64"},{"platform":"macos-15-intel","rust-target":"x86_64-apple-darwin","updater-target":"darwin","updater-arch":"x86_64"}]' || '[{"platform":"macos-latest","rust-target":"aarch64-apple-darwin","updater-target":"darwin","updater-arch":"aarch64"},{"platform":"macos-15-intel","rust-target":"x86_64-apple-darwin","updater-target":"darwin","updater-arch":"x86_64"},{"platform":"windows-latest","rust-target":"x86_64-pc-windows-msvc","updater-target":"windows","updater-arch":"x86_64"}]') }} runs-on: ${{ matrix.platform }} env: TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} @@ -79,11 +73,25 @@ jobs: with: targets: ${{ matrix.rust-target }} + # 在恢复缓存前设置实际编译环境,让 cache key 包含 macOS profile。 + - name: Configure macOS build environment + if: startsWith(matrix.platform, 'macos') + working-directory: openless-all/app + run: bash scripts/macos-build-env.sh + - name: Cache Cargo + if: matrix.platform == 'windows-latest' uses: swatinem/rust-cache@v2 with: workspaces: 'openless-all/app/src-tauri -> target' + - name: Cache macOS release dependencies + if: startsWith(matrix.platform, 'macos') + uses: swatinem/rust-cache@v2 + with: + key: macos-release-v1 + workspaces: 'openless-all/app/src-tauri -> target' + - name: Prepare Windows Sherpa static libraries if: matrix.platform == 'windows-latest' working-directory: 'openless-all/app' @@ -192,6 +200,14 @@ jobs: TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} run: bash scripts/build-mac.sh + - name: Upload macOS Cargo timings + if: always() && startsWith(matrix.platform, 'macos') + uses: actions/upload-artifact@v4 + with: + name: macos-cargo-timings-${{ matrix.updater-arch }} + path: openless-all/app/src-tauri/target/cargo-timings/*.html + if-no-files-found: ignore + # ── Windows:先 build OpenLessIme.dll(x64+x86),再跑 tauri bundle。 # openless-ime.wxs 用 $(env.OPENLESS_IME_DLL_X64) / _X86 拿绝对路径, # 跨 candle/light cwd 都能 resolve(Tauri wix bundler cwd 不固定)。 @@ -427,6 +443,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: openless-macos-${{ matrix.updater-arch }} + compression-level: 0 path: | openless-all/app/src-tauri/target/release/bundle/dmg/*.dmg if-no-files-found: error @@ -436,6 +453,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: openless-macos-${{ matrix.updater-arch }}-updater + compression-level: 0 path: | openless-all/app/src-tauri/target/release/bundle/macos/*.app.tar.gz openless-all/app/src-tauri/target/release/bundle/macos/*.app.tar.gz.sig diff --git a/docs/index.md b/docs/index.md index 073a576c9..d59ff8e7a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -23,6 +23,7 @@ ## 平台与运营 +- [macOS CI 与打包耗时](macos-build-performance.md):基线日志、Rust 编译优化、缓存边界与仅 macOS 验证入口。 - [Android APK / 悬浮窗计划](android-mobile-apk-overlay-plan.md)(实施中) - [火山引擎 ASR 配置](volcengine-setup.md) - [讯飞(iflytek)ASR 配置](xfyun-asr.md) diff --git a/docs/macos-build-performance.md b/docs/macos-build-performance.md new file mode 100644 index 000000000..959b3f472 --- /dev/null +++ b/docs/macos-build-performance.md @@ -0,0 +1,53 @@ +# macOS CI 与打包耗时 + +状态:实现说明;更新:2026-09-25。范围仅包含 macOS 检查和桌面打包。Windows、Android、Linux 的编译参数与发布行为由原有工作流维护。 + +## 调研依据 + +对照 `beta` 的 `d9113e0b`、[CI 35984434219](https://github.com/Open-Less/openless/actions/runs/35984434219) 与 [桌面构建 35989822601](https://github.com/Open-Less/openless/actions/runs/35989822601) 的完整日志: + +| 基线步骤 | 时间 | 日志证据 | +| --- | --- | --- | +| macOS 检查 job | 24 分 59 秒 | stable 检查、测试、MSRV 串行执行 | +| stable `cargo check` | 7 分 54 秒 | 含 MLX,本轮 dev profile 带 debug info | +| stable Tauri 库测试编译 | 7 分 27 秒 | 再次编译 qwen3、Core、Host,test profile 不带 debug info | +| Rust 1.88 Host 检查 | 5 分 03 秒 | 第三次编译 qwen3 与 Host | +| Rust 1.88 独立 backend-tests 编译 | 58.51 秒 | 独立 target 未配置缓存 | +| Apple Silicon release Rust 编译 | 14 分 16 秒 | 依赖缓存命中约 731 MB,仍重新编译 qwen3、Core、Host | +| Intel release Rust 编译 | 13 分 57 秒 | 依赖缓存命中约 700 MB,仍重新编译 Core、Host | + +ARM/Intel 的整个打包步骤分别约 15 分 17 秒、15 分 08 秒。主要等待发生在 Rust,而不是 npm 安装、DMG 或 artifact 上传。时间是该次运行的观测值,不是不同 runner、缓存和提交之间的性能保证。 + +源码中的相关因素: + +- `ci.yml` 的 macOS job 先 metadata-only check,再生成测试机器码;dev/test 的 debug 配置也不同。MSRV 与 stable 共用 job 和缓存,Core workspace、独立 backend-tests 的 target 没有全部纳入缓存。 +- Tauri release profile 使用 `opt-level=3`、thin LTO 和 `codegen-units=1`。最后一个设置限制单个大 crate 的 LLVM 并行能力;命中第三方依赖缓存仍无法避免 Core/Host 的代码生成成本。 +- `build-mac.sh` 曾将所有 `qwen3-asr-rs-*` 目录当成重复输出。Cargo 实际分别保存 build-script 可执行文件和 `OUT_DIR`;只留一个目录会破坏下一轮缓存。 +- `rust-cache` 默认只保留依赖产物,不应把命中缓存等同于整个应用无须重编译。参见 [rust-cache 缓存行为](https://github.com/Swatinem/rust-cache#cache-details)。没有添加 sccache:该工具不能缓存调用系统 linker 的 bin/cdylib/proc-macro,参见 [官方限制](https://github.com/mozilla/sccache/blob/main/docs/Rust.md)。 + +## 当前流程 + +`ci.yml` 的 macOS stable job 用 `cargo test --lib --bins` 编译并运行库及二进制目标,覆盖库的生产构建与测试构建。MSRV 单独并行执行,继续检查完整 Tauri Host 并编译独立 backend-tests。两个 job 均保留 `--locked`、MLX 子模块与两路编译并发限制;stable 保留全部前端/合同测试和 Codex sandbox 实测。 + +macOS 检查统一关闭 dev/test debug info,分别缓存 Core、Host、backend-tests 的实际 target 目录。stable、MSRV、release 缓存分开,避免不同工具链和 profile 的产物互相挤占。 + +`scripts/macos-build-env.sh` 为 macOS 打包默认设置 `CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16`,保留 `opt-level=3`、thin LTO 和 unwind;环境变量可以显式覆盖为其他值。参数取舍依据 [Cargo profiles](https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units):更多 codegen units 允许更快的并行代码生成,可能影响最终体积或优化效果。共享 `Cargo.toml` 不修改。CI 在恢复缓存前加载同一环境,本地 `build-mac.sh` 也加载它。 + +MLX 清理只比较含非空 metallib 的输出目录,保留 build-script 可执行文件。构建前删除本次架构的旧 app、DMG 和 updater,保留 Cargo 编译缓存;Tauri 非零退出直接失败。因此热构建复用旧时间戳二进制时仍能正确打包,失败时也不会接受旧安装包。现有用途声明、签名、公证和 MLX 包内容校验继续执行。 + +## 仅 macOS 的验证入口 + +从待验证分支手动触发已有工作流: + +```sh +gh workflow run ci.yml --repo Open-Less/openless --ref -f platform=macos +gh workflow run release-tauri.yml --repo Open-Less/openless --ref -f platform=macos +``` + +前者只运行 macOS stable/MSRV,后者并行生成 Apple Silicon 与 Intel 的桌面包。使用分支 ref,不创建 tag 或 GitHub Release。省略 input 的既有手动运行以及 tag 发布仍使用原有全部平台矩阵。 + +桌面工作流上传两个架构的 Cargo HTML timings;失败时若已生成计时文件也会上传。DMG/updater 本身已压缩,artifact 使用 `compression-level: 0`。 + +本地在 `openless-all/app` 运行 `npm test`、`cargo test --locked --manifest-path src-tauri/Cargo.toml --lib --bins` 与 `INSTALL=0 bash scripts/build-mac.sh`。`macos-build-cache.test.mjs` 实际执行隔离的 shell 构建流程,验证缓存目录保留、重复热打包、旧产物清理以及失败传播。 + +性能验收应记录一次新缓存运行及相同提交的再次运行,分别报告 Rust 编译、完整 job 和产物大小。不同机器的本地构建时间不与 GitHub runner 直接比较;构建通过不等于真实设备 ASR 性能已经验证。 diff --git a/openless-all/app/scripts/build-mac.sh b/openless-all/app/scripts/build-mac.sh index cb2d0de79..05306dcc5 100755 --- a/openless-all/app/scripts/build-mac.sh +++ b/openless-all/app/scripts/build-mac.sh @@ -27,25 +27,28 @@ fi echo "▶ 检查 Apple Silicon MLX 构建依赖" npm run check:macos-metal-toolchain -# Homebrew rustc 在 macOS 上对 `strip=symbols` 生成的 proc-macro dylib -# 可能报 "mis-aligned LINKEDIT string pool"。仅官方 macOS 发布脚本降级 -# 为 debuginfo;Cargo.toml 的全局 profile 仍让 Linux/Windows/Android 使用 symbols。 -export CARGO_PROFILE_RELEASE_STRIP=debuginfo -export RUSTC_WRAPPER="$PWD/scripts/rustc-macos-proc-macro-wrapper.sh" +source scripts/macos-build-env.sh +echo "▶ Cargo release codegen units: ${CARGO_PROFILE_RELEASE_CODEGEN_UNITS} (macOS only)" echo "▶ Cargo release strip: ${CARGO_PROFILE_RELEASE_STRIP} (macOS only)" echo "▶ Rust proc-macro host wrapper: ${RUSTC_WRAPPER}" -# 只保留最新一份 qwen3-asr-rs 构建目录:本地混跑 cargo check/test/build 会按不同 -# feature 上下文生成多份,各自带一份 metallib,会让暂存脚本拒绝猜测。 -KEEP_QWEN_DIR="$(ls -dt src-tauri/target/release/build/qwen3-asr-rs-* 2>/dev/null | head -1 || true)" +# Cargo 为 build-script 可执行文件和 OUT_DIR 创建不同目录。只在多个 +# metallib 输出之间清理,保留所有 build-script 缓存,避免每次重新编译。 +KEEP_QWEN_DIR="" +for d in src-tauri/target/release/build/qwen3-asr-rs-*; do + [ -s "$d/out/lib/mlx.metallib" ] || continue + if [ -z "$KEEP_QWEN_DIR" ] || [ "$d/out/lib/mlx.metallib" -nt "$KEEP_QWEN_DIR/out/lib/mlx.metallib" ]; then + KEEP_QWEN_DIR="$d" + fi +done if [ -n "$KEEP_QWEN_DIR" ]; then for d in src-tauri/target/release/build/qwen3-asr-rs-*; do + [ -s "$d/out/lib/mlx.metallib" ] || continue [ "$d" = "$KEEP_QWEN_DIR" ] || rm -rf "$d" done fi echo "▶ tauri build" -BUILD_START_TS="$(date +%s)" TAURI_BUILD_ARGS=(build --ci) case "$(uname -m)" in arm64) @@ -63,16 +66,17 @@ esac if [ -n "${TAURI_SIGNING_PRIVATE_KEY:-}" ] || [ -n "${TAURI_SIGNING_PRIVATE_KEY_PATH:-}" ]; then TAURI_BUILD_ARGS+=(--config '{"bundle":{"createUpdaterArtifacts":true}}') fi -# bundle_dmg(AppleScript)在 Xcode beta 上可能退出非零;.app 与 DMG 是否真实 -# 产出交给下方的新鲜度/存在性校验判定,不在这一步盲 abort。 -npm run tauri -- "${TAURI_BUILD_ARGS[@]}" || echo "⚠ tauri build 退出码非零,继续校验产物" - APP_VERSION="$(node -p "require('./package.json').version")" DMG_PATH="$DMG_DIR/OpenLess_${APP_VERSION}_${MAC_BUNDLE_ARCH}.dmg" -# bundle 必须是本次构建产出的(与构建开始时间比;打包后原始二进制还会被签名 -# 触碰,不能拿它当基准)。 -if [ ! -d "$APP" ] || [ "$(stat -f %m "$APP/Contents/MacOS/openless")" -lt "$BUILD_START_TS" ]; then +# 清掉交付产物,保留 Cargo 缓存。热构建可复用旧时间戳的二进制,不能用 +# 编译文件的 mtime 判断 bundle 新鲜度;Tauri 失败时也不能接受上轮安装包。 +rm -rf "$APP" +rm -f "$DMG_PATH" "${APP}.tar.gz" "${APP}.tar.gz.sig" +TAURI_BUILD_ARGS+=(-- --locked --timings) +npm run tauri -- "${TAURI_BUILD_ARGS[@]}" + +if [ ! -f "$APP/Contents/MacOS/openless" ]; then echo "✗ $APP 缺失或不是本次构建的产物(打包未完成),中止" exit 1 fi diff --git a/openless-all/app/scripts/macos-build-cache.test.mjs b/openless-all/app/scripts/macos-build-cache.test.mjs new file mode 100644 index 000000000..05d9f9b4a --- /dev/null +++ b/openless-all/app/scripts/macos-build-cache.test.mjs @@ -0,0 +1,127 @@ +import assert from 'node:assert/strict'; +import { spawnSync } from 'node:child_process'; +import { + chmodSync, + copyFileSync, + existsSync, + mkdirSync, + mkdtempSync, + readFileSync, + rmSync, + utimesSync, + writeFileSync, +} from 'node:fs'; +import { tmpdir } from 'node:os'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +if (process.platform !== 'darwin') { + console.log('macOS build cache tests skipped on other platforms'); + process.exit(0); +} + +const scripts = dirname(fileURLToPath(import.meta.url)); +const root = mkdtempSync(join(tmpdir(), 'openless-macos-build-')); +const app = join(root, 'src-tauri/target/release/bundle/macos/OpenLess.app'); +const dmg = join(root, 'src-tauri/target/release/bundle/dmg/OpenLess_1.2.3_x64.dmg'); +const builds = join(root, 'src-tauri/target/release/build'); + +function put(path, content) { + mkdirSync(dirname(path), { recursive: true }); + writeFileSync(path, content); +} + +function executable(name, content) { + const path = join(root, 'bin', name); + put(path, `#!/usr/bin/env bash\nset -euo pipefail\n${content}\n`); + chmodSync(path, 0o755); +} + +function run(mode = 'success') { + const env = { ...process.env }; + for (const name of Object.keys(env)) { + if (/^(APPLE_|TAURI_SIGNING_|CARGO_PROFILE_RELEASE_|GITHUB_ENV$)/.test(name)) delete env[name]; + } + return spawnSync('bash', ['scripts/build-mac.sh'], { + cwd: root, + encoding: 'utf8', + env: { ...env, INSTALL: '0', BUILD_FIXTURE_MODE: mode, PATH: `${root}/bin:${env.PATH}` }, + }); +} + +try { + mkdirSync(join(root, 'scripts'), { recursive: true }); + for (const name of [ + 'build-mac.sh', + 'macos-build-env.sh', + 'check-macos-speech-usage-description.sh', + ]) { + copyFileSync(join(scripts, name), join(root, 'scripts', name)); + } + put(join(root, 'package.json'), '{"version":"1.2.3"}'); + put( + join(root, 'fixture.plist'), + ` + +NSMicrophoneUsageDescriptionMicrophone +NSSpeechRecognitionUsageDescriptionSpeech +`, + ); + + executable('uname', 'echo x86_64'); + executable('codesign', 'echo com.apple.security.device.audio-input'); + executable('xattr', 'exit 1'); + executable( + 'npm', + ` +if [ "$*" = "run check:macos-metal-toolchain" ]; then exit 0; fi +[[ "$*" == *"-- --locked --timings"* ]] +[[ "$CARGO_PROFILE_RELEASE_CODEGEN_UNITS" == 16 ]] +[[ "$CARGO_PROFILE_RELEASE_STRIP" == debuginfo ]] +app=src-tauri/target/release/bundle/macos/OpenLess.app +dmg=src-tauri/target/release/bundle/dmg/OpenLess_1.2.3_x64.dmg +# Old bundles must be gone before compilation starts, while Cargo stays warm. +[[ ! -e "$app" && ! -e "$dmg" && ! -e "$app.tar.gz" && ! -e "$app.tar.gz.sig" ]] +[[ -f src-tauri/target/release/build/qwen3-asr-rs-helper/build-script-build ]] +[[ -f src-tauri/target/release/build/qwen3-asr-rs-new/out/lib/mlx.metallib ]] +[[ ! -e src-tauri/target/release/build/qwen3-asr-rs-old ]] +if [ "$BUILD_FIXTURE_MODE" = missing ]; then exit 0; fi +mkdir -p "$app/Contents/MacOS" "$(dirname "$dmg")" +cp fixture.plist "$app/Contents/Info.plist" +echo binary > "$app/Contents/MacOS/openless" +# Cargo may reuse a binary compiled before this packaging invocation. +touch -t 200001010000 "$app/Contents/MacOS/openless" +echo dmg > "$dmg" +if [ "$BUILD_FIXTURE_MODE" = failure ]; then exit 23; fi +`, + ); + + put(join(builds, 'qwen3-asr-rs-helper/build-script-build'), 'cached executable'); + put(join(builds, 'qwen3-asr-rs-new/out/lib/mlx.metallib'), 'new shader'); + put(join(builds, 'qwen3-asr-rs-old/out/lib/mlx.metallib'), 'old shader'); + utimesSync(join(builds, 'qwen3-asr-rs-old/out/lib/mlx.metallib'), 1, 1); + put(join(app, 'Contents/MacOS/openless'), 'stale binary'); + put(dmg, 'stale dmg'); + put(`${app}.tar.gz`, 'stale updater'); + put(`${app}.tar.gz.sig`, 'stale signature'); + + for (let repeat = 0; repeat < 2; repeat += 1) { + const result = run(); + assert.equal(result.status, 0, result.stdout + result.stderr); + assert.equal(readFileSync(dmg, 'utf8').trim(), 'dmg'); + assert.equal( + readFileSync(join(builds, 'qwen3-asr-rs-helper/build-script-build'), 'utf8'), + 'cached executable', + ); + } + const failure = run('failure'); + assert.equal(failure.status, 23, failure.stdout + failure.stderr); + const missing = run('missing'); + assert.notEqual(missing.status, 0, missing.stdout + missing.stderr); + assert.equal(existsSync(app), false); + assert.equal(existsSync(dmg), false); +} finally { + rmSync(root, { recursive: true, force: true }); +} + +console.log('macOS warm build and packaging failure tests passed'); diff --git a/openless-all/app/scripts/macos-build-env.sh b/openless-all/app/scripts/macos-build-env.sh new file mode 100644 index 000000000..a89c14676 --- /dev/null +++ b/openless-all/app/scripts/macos-build-env.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Source locally; execute before rust-cache in GitHub Actions. +set -euo pipefail + +MACOS_BUILD_APP_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +# Keep opt-level=3 and thin LTO, while allowing LLVM to compile large crates +# in parallel. The shared Cargo profile continues to govern other platforms. +export CARGO_PROFILE_RELEASE_CODEGEN_UNITS="${CARGO_PROFILE_RELEASE_CODEGEN_UNITS:-16}" +# Avoid malformed proc-macro dylibs with the macOS strip tool. +export CARGO_PROFILE_RELEASE_STRIP=debuginfo +export RUSTC_WRAPPER="$MACOS_BUILD_APP_ROOT/scripts/rustc-macos-proc-macro-wrapper.sh" + +if [ -n "${GITHUB_ENV:-}" ]; then + { + echo "CARGO_PROFILE_RELEASE_CODEGEN_UNITS=$CARGO_PROFILE_RELEASE_CODEGEN_UNITS" + echo "CARGO_PROFILE_RELEASE_STRIP=$CARGO_PROFILE_RELEASE_STRIP" + echo "RUSTC_WRAPPER=$RUSTC_WRAPPER" + } >> "$GITHUB_ENV" +fi From f89b767fbe1027d09ed40d406541fea004c4ffad Mon Sep 17 00:00:00 2001 From: sim Date: Fri, 25 Sep 2026 14:05:26 +0800 Subject: [PATCH 02/10] =?UTF-8?q?perf(macos):=20=E4=BF=9D=E7=95=99=20MLX?= =?UTF-8?q?=20=E5=8E=9F=E7=94=9F=E6=9E=84=E5=BB=BA=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/cache-macos-mlx/action.yml | 42 ++++++++++++++++++++++ .github/workflows/ci.yml | 11 ++++++ .github/workflows/release-tauri.yml | 6 ++++ docs/macos-build-performance.md | 2 ++ 4 files changed, 61 insertions(+) create mode 100644 .github/actions/cache-macos-mlx/action.yml diff --git a/.github/actions/cache-macos-mlx/action.yml b/.github/actions/cache-macos-mlx/action.yml new file mode 100644 index 000000000..c167b8eb6 --- /dev/null +++ b/.github/actions/cache-macos-mlx/action.yml @@ -0,0 +1,42 @@ +name: Cache macOS MLX native build +description: Preserve vendored MLX CMake output before rust-cache removes in-tree path dependencies. +inputs: + profile: + description: Cargo output profile directory (debug or release) + required: true +runs: + using: composite + steps: + - name: Fingerprint MLX native toolchain + id: native + shell: bash + working-directory: openless-all/app + env: + OPENLESS_MLX_PROFILE: ${{ inputs.profile }} + run: | + set -euo pipefail + case "$OPENLESS_MLX_PROFILE" in + debug|release) ;; + *) echo "::error::Unsupported MLX cache profile"; exit 1 ;; + esac + fingerprint=$({ + rustc -vV + xcrun clang --version + xcrun --sdk macosx --show-sdk-version + cmake --version + git -C src-tauri/vendor/qwen3-asr-rs rev-parse HEAD + git -C src-tauri/vendor/qwen3-asr-rs/mlx-c rev-parse HEAD + for name in CARGO_PROFILE_DEV_DEBUG CARGO_PROFILE_TEST_DEBUG CARGO_PROFILE_RELEASE_CODEGEN_UNITS CARGO_PROFILE_RELEASE_STRIP RUSTFLAGS CARGO_ENCODED_RUSTFLAGS CC CXX CFLAGS CXXFLAGS SDKROOT DEVELOPER_DIR MACOSX_DEPLOYMENT_TARGET CMAKE_GENERATOR CMAKE_TOOLCHAIN_FILE; do + printf '%s=%s\n' "$name" "${!name-}" + done + } | shasum -a 256 | awk '{print $1}') + echo "fingerprint=$fingerprint" >> "$GITHUB_OUTPUT" + + # Call this action AFTER rust-cache: post actions run in reverse order, + # so MLX is saved before rust-cache prunes src-tauri/vendor path packages. + # Cache only CMake output, not Cargo fingerprints: Cargo still reruns the + # build script and CMake validates its native inputs on every clean checkout. + - uses: actions/cache@v4 + with: + path: openless-all/app/src-tauri/target/${{ inputs.profile }}/build/qwen3-asr-rs-*/out + key: macos-mlx-v1-${{ runner.arch }}-${{ inputs.profile }}-${{ steps.native.outputs.fingerprint }}-${{ hashFiles('openless-all/app/src-tauri/Cargo.toml', 'openless-all/app/src-tauri/Cargo.lock', 'openless-all/app/src-tauri/tauri*.json', '.cargo/config.toml', '.github/actions/cache-macos-mlx/action.yml') }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 27b4d8ecc..2c2f191b3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -252,6 +252,12 @@ jobs: openless-all/app -> target openless-all/app/src-tauri -> target + - name: Cache macOS MLX native build + if: runner.os == 'macOS' && runner.arch == 'ARM64' + uses: ./.github/actions/cache-macos-mlx + with: + profile: debug + - name: Prepare Windows Sherpa static libraries if: runner.os == 'Windows' shell: pwsh @@ -388,6 +394,11 @@ jobs: workspaces: | openless-all/app/src-tauri -> target openless-all/app/src-tauri/backend-tests -> target + - name: Cache macOS MLX native build + if: runner.arch == 'ARM64' + uses: ./.github/actions/cache-macos-mlx + with: + profile: debug - run: npm ci - run: npm run build - name: Check Tauri backend with Rust 1.88 MSRV diff --git a/.github/workflows/release-tauri.yml b/.github/workflows/release-tauri.yml index 8f03225f8..68b66be60 100644 --- a/.github/workflows/release-tauri.yml +++ b/.github/workflows/release-tauri.yml @@ -92,6 +92,12 @@ jobs: key: macos-release-v1 workspaces: 'openless-all/app/src-tauri -> target' + - name: Cache macOS MLX native build + if: matrix.updater-arch == 'aarch64' + uses: ./.github/actions/cache-macos-mlx + with: + profile: release + - name: Prepare Windows Sherpa static libraries if: matrix.platform == 'windows-latest' working-directory: 'openless-all/app' diff --git a/docs/macos-build-performance.md b/docs/macos-build-performance.md index 959b3f472..38db0a8c1 100644 --- a/docs/macos-build-performance.md +++ b/docs/macos-build-performance.md @@ -31,6 +31,8 @@ ARM/Intel 的整个打包步骤分别约 15 分 17 秒、15 分 08 秒。主要 macOS 检查统一关闭 dev/test debug info,分别缓存 Core、Host、backend-tests 的实际 target 目录。stable、MSRV、release 缓存分开,避免不同工具链和 profile 的产物互相挤占。 +MLX 的 CMake 输出另用 [cache-macos-mlx](../.github/actions/cache-macos-mlx/action.yml) 保存。实际使用的 `rust-cache` [源码](https://github.com/Swatinem/rust-cache/blob/6323deb102c322ba6fcbdcafc7e3dddab59af2b6/src/workspace.ts) 排除 workspace 目录内的 path 依赖,导致 `src-tauri/vendor/qwen3-asr-rs` 的原生输出在 post 阶段被清理;首轮验证中,命中 Cargo 缓存仍重建 MLX 约 7 分 17 秒。独立缓存步骤放在 `rust-cache` 后,利用 post 的逆序执行先保存原生输出。缓存按架构、profile、Rust/Clang/CMake/SDK、子模块提交、编译环境和 manifest/lock/config 隔离,无跨 key 的模糊回退。只保存 CMake `out`,不保存 Cargo freshness 指纹,下一轮仍执行 build script 与 CMake 输入校验。 + `scripts/macos-build-env.sh` 为 macOS 打包默认设置 `CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16`,保留 `opt-level=3`、thin LTO 和 unwind;环境变量可以显式覆盖为其他值。参数取舍依据 [Cargo profiles](https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units):更多 codegen units 允许更快的并行代码生成,可能影响最终体积或优化效果。共享 `Cargo.toml` 不修改。CI 在恢复缓存前加载同一环境,本地 `build-mac.sh` 也加载它。 MLX 清理只比较含非空 metallib 的输出目录,保留 build-script 可执行文件。构建前删除本次架构的旧 app、DMG 和 updater,保留 Cargo 编译缓存;Tauri 非零退出直接失败。因此热构建复用旧时间戳二进制时仍能正确打包,失败时也不会接受旧安装包。现有用途声明、签名、公证和 MLX 包内容校验继续执行。 From 06e7e634b662c6af4acf85e3ba573215c239df0c Mon Sep 17 00:00:00 2001 From: sim Date: Fri, 25 Sep 2026 14:09:40 +0800 Subject: [PATCH 03/10] =?UTF-8?q?fix(macos):=20=E5=B0=86=20Metal=20?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=99=A8=E7=89=88=E6=9C=AC=E7=BA=B3=E5=85=A5?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/cache-macos-mlx/action.yml | 3 +++ docs/macos-build-performance.md | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/actions/cache-macos-mlx/action.yml b/.github/actions/cache-macos-mlx/action.yml index c167b8eb6..3fcc8fc52 100644 --- a/.github/actions/cache-macos-mlx/action.yml +++ b/.github/actions/cache-macos-mlx/action.yml @@ -22,6 +22,9 @@ runs: fingerprint=$({ rustc -vV xcrun clang --version + # Downloadable Metal toolchains can change independently of Clang. + # Their InstalledDir may contain a per-boot mount identifier. + xcrun --sdk macosx metal --version | sed '/^InstalledDir:/d' xcrun --sdk macosx --show-sdk-version cmake --version git -C src-tauri/vendor/qwen3-asr-rs rev-parse HEAD diff --git a/docs/macos-build-performance.md b/docs/macos-build-performance.md index 38db0a8c1..e9578cbf9 100644 --- a/docs/macos-build-performance.md +++ b/docs/macos-build-performance.md @@ -31,7 +31,7 @@ ARM/Intel 的整个打包步骤分别约 15 分 17 秒、15 分 08 秒。主要 macOS 检查统一关闭 dev/test debug info,分别缓存 Core、Host、backend-tests 的实际 target 目录。stable、MSRV、release 缓存分开,避免不同工具链和 profile 的产物互相挤占。 -MLX 的 CMake 输出另用 [cache-macos-mlx](../.github/actions/cache-macos-mlx/action.yml) 保存。实际使用的 `rust-cache` [源码](https://github.com/Swatinem/rust-cache/blob/6323deb102c322ba6fcbdcafc7e3dddab59af2b6/src/workspace.ts) 排除 workspace 目录内的 path 依赖,导致 `src-tauri/vendor/qwen3-asr-rs` 的原生输出在 post 阶段被清理;首轮验证中,命中 Cargo 缓存仍重建 MLX 约 7 分 17 秒。独立缓存步骤放在 `rust-cache` 后,利用 post 的逆序执行先保存原生输出。缓存按架构、profile、Rust/Clang/CMake/SDK、子模块提交、编译环境和 manifest/lock/config 隔离,无跨 key 的模糊回退。只保存 CMake `out`,不保存 Cargo freshness 指纹,下一轮仍执行 build script 与 CMake 输入校验。 +MLX 的 CMake 输出另用 [cache-macos-mlx](../.github/actions/cache-macos-mlx/action.yml) 保存。实际使用的 `rust-cache` [源码](https://github.com/Swatinem/rust-cache/blob/6323deb102c322ba6fcbdcafc7e3dddab59af2b6/src/workspace.ts) 排除 workspace 目录内的 path 依赖,导致 `src-tauri/vendor/qwen3-asr-rs` 的原生输出在 post 阶段被清理;首轮验证中,命中 Cargo 缓存仍重建 MLX 约 7 分 17 秒。独立缓存步骤放在 `rust-cache` 后,利用 post 的逆序执行先保存原生输出。缓存按架构、profile、Rust/Clang/Metal/CMake/SDK、子模块提交、编译环境和 manifest/lock/config 隔离,无跨 key 的模糊回退。Metal 版本输出去掉每次启动可能变化的挂载目录,保留实际版本与目标信息。只保存 CMake `out`,不保存 Cargo freshness 指纹,下一轮仍执行 build script 与 CMake 输入校验。 `scripts/macos-build-env.sh` 为 macOS 打包默认设置 `CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16`,保留 `opt-level=3`、thin LTO 和 unwind;环境变量可以显式覆盖为其他值。参数取舍依据 [Cargo profiles](https://doc.rust-lang.org/cargo/reference/profiles.html#codegen-units):更多 codegen units 允许更快的并行代码生成,可能影响最终体积或优化效果。共享 `Cargo.toml` 不修改。CI 在恢复缓存前加载同一环境,本地 `build-mac.sh` 也加载它。 From 06db7d2978a80e5522d9082eb81384284fdf539e Mon Sep 17 00:00:00 2001 From: sim Date: Fri, 25 Sep 2026 23:52:47 +0800 Subject: [PATCH 04/10] chore(release): integrate reviewed changes for Beta 3 build 20260925 Integrate Android CI acceleration, modifier-only dictation chords, Requesty, and remote-input generation guards over the verified Beta 2 baseline and macOS CI improvements. Fix review findings in signing configuration caching, APK validation, and modifier arbitration/recording. Keep Linux egui and its release workflows identical to Beta 2. Co-authored-by: HKLHaoBin Co-authored-by: leolulu <35873316+leolulu@users.noreply.github.com> Co-authored-by: Thibault Jaigu Co-authored-by: Ethan <257484394+EthanYoQ@users.noreply.github.com> --- .github/workflows/android-apk.yml | 412 ++++++++++-------- README.md | 2 +- README.zh.md | 2 +- docs/android-build-time-research-1103.md | 46 ++ docs/index.md | 3 + docs/local-builds/2026-09-25-beta3.md | 27 ++ openless-all/app/assets/remote-input/app.js | 19 +- .../app/crates/openless-core/src/api.rs | 74 +++- .../openless-core/src/cloud_providers.rs | 1 + .../app/crates/openless-core/src/lib.rs | 3 +- .../app/crates/openless-core/src/polish.rs | 1 + .../openless-core/src/provider_rules.rs | 39 ++ .../openless-core/src/shortcut_types.rs | 42 ++ openless-all/app/package-lock.json | 4 +- openless-all/app/package.json | 9 +- .../app/scripts/android-abi-matrix.mjs | 123 ++++++ .../android-apk-workflow-contract.test.mjs | 134 ++++++ .../scripts/collect-android-split-apks.mjs | 202 +++++++++ .../configure-android-release-signing.mjs | 53 ++- ...configure-android-release-signing.test.mjs | 71 +++ .../remote-input-audio-generation.test.mjs | 331 ++++++++++++++ .../app/scripts/run-android-tauri-build.mjs | 56 +++ openless-all/app/src-tauri/Cargo.lock | 2 +- openless-all/app/src-tauri/Cargo.toml | 2 +- openless-all/app/src-tauri/src/coordinator.rs | 7 +- .../src-tauri/src/coordinator/hotkey_loops.rs | 7 +- .../src/coordinator/native_dictation_key.rs | 13 +- openless-all/app/src-tauri/src/hotkey.rs | 58 ++- .../src/mobile_stubs/side_aware_combo.rs | 8 +- .../app/src-tauri/src/side_aware_combo.rs | 245 ++++++++--- openless-all/app/src-tauri/tauri.conf.json | 2 +- .../app/src/components/ShortcutRecorder.tsx | 27 +- openless-all/app/src/i18n/de.ts | 1 + openless-all/app/src/i18n/en.ts | 1 + openless-all/app/src/i18n/es.ts | 1 + openless-all/app/src/i18n/fr.ts | 1 + openless-all/app/src/i18n/ja.ts | 1 + openless-all/app/src/i18n/ko.ts | 1 + openless-all/app/src/i18n/zh-CN.ts | 1 + openless-all/app/src/i18n/zh-TW.ts | 1 + openless-all/app/src/lib/hotkey.ts | 22 +- .../app/src/lib/hotkeySideModifiers.test.ts | 30 ++ .../lib/ipc/mock-provider-descriptors.json | 16 + .../ipc/provider-descriptors.generated.json | 16 + openless-all/app/src/pages/Overview.tsx | 1 + .../src/pages/settings/ProvidersSection.tsx | 1 + 46 files changed, 1817 insertions(+), 302 deletions(-) create mode 100644 docs/android-build-time-research-1103.md create mode 100644 docs/local-builds/2026-09-25-beta3.md create mode 100644 openless-all/app/scripts/android-abi-matrix.mjs create mode 100644 openless-all/app/scripts/android-apk-workflow-contract.test.mjs create mode 100644 openless-all/app/scripts/collect-android-split-apks.mjs create mode 100644 openless-all/app/scripts/configure-android-release-signing.test.mjs create mode 100644 openless-all/app/scripts/remote-input-audio-generation.test.mjs create mode 100644 openless-all/app/scripts/run-android-tauri-build.mjs diff --git a/.github/workflows/android-apk.yml b/.github/workflows/android-apk.yml index 007564c86..014e4c3f5 100644 --- a/.github/workflows/android-apk.yml +++ b/.github/workflows/android-apk.yml @@ -5,13 +5,27 @@ name: Android APK (debug) # - workflow_dispatch → signed release APK when ANDROID_KEYSTORE_* secrets exist # (overlay install + user data preserved); otherwise unsigned debug APK (annotated, non-blocking) # -# Scope: full overlay/accessibility APK for ADB testing and tag releases. +# #1103 build-time changes: +# - Do not wipe Cargo/Gradle/target before cache post-save (removed Free disk step). +# - Bump rust-cache prefix-key so old half-cold caches are not reused. +# - Dispatch defaults to aarch64 only; tag builds all ABIs in a parallel matrix. +# - Optional dispatch fast_profile (disable LTO / raise codegen-units); tag never uses it. +# - Tauri still runs plugin-init cargo + android-studio-script per ABI (first ABI twice). on: push: tags: - 'v*-tauri' workflow_dispatch: + inputs: + abis: + description: 'ABIs to build (comma-separated: aarch64,armv7,i686,x86_64) or all' + required: false + default: 'aarch64' + fast_profile: + description: 'Dispatch-only fast release profile (no LTO, codegen-units=16). Ignored on tags.' + type: boolean + default: false # 同一 tag 重复推送只跑最新一次;workflow_dispatch 用 run_id 隔离避免互相取消。 concurrency: @@ -19,25 +33,27 @@ concurrency: cancel-in-progress: ${{ github.event_name == 'push' }} jobs: - build-android-apk: + plan: + name: Plan Android ABI matrix permissions: - contents: write + contents: read runs-on: ubuntu-latest - env: - CI: true - TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} - OPENLESS_RELEASE_CHANNEL: ${{ (endsWith(github.ref_name, '-beta-tauri') || contains(github.ref_name, '-Beta.')) && 'beta' || 'stable' }} + outputs: + is_tag_release: ${{ steps.mode.outputs.is_tag_release }} + mode: ${{ steps.mode.outputs.mode }} + label: ${{ steps.mode.outputs.label }} + signing: ${{ steps.mode.outputs.signing }} + signing_label: ${{ steps.mode.outputs.signing_label }} + matrix: ${{ steps.abis.outputs.matrix }} + abi_list: ${{ steps.abis.outputs.abi_list }} + gradle_abi_list: ${{ steps.abis.outputs.gradle_abi_list }} + fast_profile: ${{ steps.abis.outputs.fast_profile }} + release_channel: ${{ steps.mode.outputs.release_channel }} steps: - uses: actions/checkout@v4 with: - # Android 不使用本地 Qwen3/Whisper C 子模块。 submodules: false - - name: Disable macOS-only Qwen3 MLX dependency - run: node openless-all/app/scripts/ci-disable-macos-qwen3.mjs - - - name: Detect build mode id: mode shell: bash @@ -54,6 +70,12 @@ jobs: fi echo "is_tag_release=$is_tag" >> "$GITHUB_OUTPUT" + channel=stable + if [[ "${{ github.ref_name }}" == *-beta-tauri ]] || [[ "${{ github.ref_name }}" == *-Beta.* ]]; then + channel=beta + fi + echo "release_channel=$channel" >> "$GITHUB_OUTPUT" + has_keystore=true for name in ANDROID_KEYSTORE_BASE64 ANDROID_KEYSTORE_PASSWORD ANDROID_KEY_ALIAS ANDROID_KEY_PASSWORD; do if [ -z "${!name:-}" ]; then @@ -80,8 +102,58 @@ jobs: echo "::notice title=Unsigned debug APK::ANDROID_KEYSTORE_* secrets not configured. Building debug APK without release signing. Overlay install and user data preservation require the release keystore; uninstall before installing if replacing a signed build." fi + - name: Resolve ABI matrix + id: abis + shell: bash + env: + INPUT_ABIS: ${{ github.event.inputs.abis }} + INPUT_FAST_PROFILE: ${{ github.event.inputs.fast_profile }} + run: | + set -euo pipefail + if [ "${{ steps.mode.outputs.is_tag_release }}" = "true" ]; then + raw=all + fast=false + else + raw="${INPUT_ABIS:-aarch64}" + fast="${INPUT_FAST_PROFILE:-false}" + fi + matrix="$(node openless-all/app/scripts/android-abi-matrix.mjs parse "$raw")" + echo "matrix=$matrix" >> "$GITHUB_OUTPUT" + abi_list="$(node -e 'const m=JSON.parse(process.argv[1]); process.stdout.write(m.map(x=>x.abi).join(","))' "$matrix")" + gradle_list="$(node -e 'const m=JSON.parse(process.argv[1]); process.stdout.write(m.map(x=>x.gradle_abi).join(","))' "$matrix")" + echo "abi_list=$abi_list" >> "$GITHUB_OUTPUT" + echo "gradle_abi_list=$gradle_list" >> "$GITHUB_OUTPUT" + echo "fast_profile=$fast" >> "$GITHUB_OUTPUT" + echo "Resolved ABIs: $abi_list (fast_profile=$fast)" + + build-android-apk: + name: Build Android (${{ matrix.abi }}) + needs: plan + permissions: + contents: write + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: ${{ fromJson(needs.plan.outputs.matrix) }} + env: + CI: true + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + OPENLESS_RELEASE_CHANNEL: ${{ needs.plan.outputs.release_channel }} + OPENLESS_ANDROID_TARGETS: ${{ matrix.abi }} + CARGO_TERM_COLOR: always + steps: + - uses: actions/checkout@v4 + with: + # Android 不使用本地 Qwen3/Whisper C 子模块。 + submodules: false + + - name: Disable macOS-only Qwen3 MLX dependency + run: node openless-all/app/scripts/ci-disable-macos-qwen3.mjs + - name: Check updater signing availability (tag release) - if: steps.mode.outputs.is_tag_release == 'true' + if: needs.plan.outputs.is_tag_release == 'true' shell: bash env: TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} @@ -92,7 +164,7 @@ jobs: fi - name: Check Android keystore secrets (tag release) - if: steps.mode.outputs.is_tag_release == 'true' + if: needs.plan.outputs.is_tag_release == 'true' shell: bash env: ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} @@ -112,6 +184,16 @@ jobs: exit 1 fi + - name: Apply dispatch fast profile + if: needs.plan.outputs.fast_profile == 'true' && needs.plan.outputs.is_tag_release != 'true' + shell: bash + run: | + set -euo pipefail + # Override [profile.release] for this job only; tag builds never take this path. + echo "CARGO_PROFILE_RELEASE_LTO=false" >> "$GITHUB_ENV" + echo "CARGO_PROFILE_RELEASE_CODEGEN_UNITS=16" >> "$GITHUB_ENV" + echo "::notice title=Fast profile::Dispatch fast_profile enabled (LTO off, codegen-units=16)" + - name: Setup Java 17 (Zulu) uses: actions/setup-java@v4 with: @@ -152,26 +234,28 @@ jobs: - uses: dtolnay/rust-toolchain@stable with: - targets: >- - aarch64-linux-android, - armv7-linux-androideabi, - i686-linux-android, - x86_64-linux-android + targets: ${{ matrix.rust_target }} - name: Cache Cargo + id: rust-cache uses: swatinem/rust-cache@v2 with: + # #1103: bump prefix so previously truncated / half-cold caches are not reused. + prefix-key: v1-rust-android-1103 + shared-key: android-${{ matrix.abi }} workspaces: openless-all/app/src-tauri -> target + cache-on-failure: true - uses: gradle/actions/setup-gradle@v4 + with: + # Keep Gradle caches for post-job save; do not wipe ~/.gradle before post. + cache-read-only: false - name: Install npm deps working-directory: openless-all/app run: npm ci - - name: Build frontend - working-directory: openless-all/app - run: npm run build + # Frontend is built by tauri beforeBuildCommand; skip a duplicate standalone build (#1103). - name: Initialize Android project working-directory: openless-all/app @@ -202,7 +286,7 @@ jobs: run: node scripts/merge-android-updater-manifest.mjs - name: Configure Android release signing - if: steps.mode.outputs.mode == 'release' + if: needs.plan.outputs.mode == 'release' working-directory: openless-all/app env: ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} @@ -227,127 +311,167 @@ jobs: exit 1 - name: Build Android debug APK - if: steps.mode.outputs.mode == 'debug' + if: needs.plan.outputs.mode == 'debug' working-directory: openless-all/app run: npm run tauri:android:build:debug - name: Build Android release APK - if: steps.mode.outputs.mode == 'release' + if: needs.plan.outputs.mode == 'release' working-directory: openless-all/app + env: + # Resolve signing credentials at execution time; compiled Gradle scripts + # are cached and must never contain secret literals. + ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} + ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} + ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} run: npm run tauri:android:build:release - - name: Free disk before artifact upload + - name: Record cache / duplicate-compile notes + if: always() shell: bash - working-directory: openless-all/app run: | set -euo pipefail - rm -rf src-tauri/target - rm -rf ~/.cargo/registry ~/.cargo/git ~/.gradle/caches - df -h - + { + echo "### Cache / compile notes (\`${{ matrix.abi }}\`)" + echo + echo "- Rust cache hit: \`${{ steps.rust-cache.outputs.cache-hit }}\`" + echo "- Tauri runs plugin-init cargo for the first ABI, then \`android-studio-script\` per ABI (first ABI may compile twice)." + echo "- Do not wipe \`target\` / Cargo registry / Gradle caches before action post-save (#1103)." + } >> "$GITHUB_STEP_SUMMARY" - name: Collect split APKs id: apk shell: bash working-directory: openless-all/app env: - OPENLESS_APK_MODE: ${{ steps.mode.outputs.mode }} - OPENLESS_APK_LABEL: ${{ steps.mode.outputs.label }} + OPENLESS_APK_MODE: ${{ needs.plan.outputs.mode }} + OPENLESS_APK_LABEL: ${{ needs.plan.outputs.label }} + OPENLESS_EXPECTED_GRADLE_ABIS: ${{ matrix.gradle_abi }} + run: node scripts/collect-android-split-apks.mjs + + - name: Upload Android APK artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ needs.plan.outputs.mode == 'release' && format('openless-android-release-{0}', matrix.gradle_abi) || format('openless-android-debug-{0}', matrix.gradle_abi) }} + path: ${{ steps.apk.outputs.apk_path }} + if-no-files-found: error + + - name: Write build summary + if: always() + run: | + cat >> "$GITHUB_STEP_SUMMARY" << EOF + ### Android APK build (\`${{ matrix.abi }}\`) + + | Field | Value | + |-------|-------| + | Gradle mode | \`${{ needs.plan.outputs.mode }}\` | + | Signing | ${{ needs.plan.outputs.signing_label }} | + | Artifact label | \`${{ needs.plan.outputs.label }}\` | + | Fast profile | \`${{ needs.plan.outputs.fast_profile }}\` | + | Rust cache hit | \`${{ steps.rust-cache.outputs.cache-hit }}\` | + + EOF + if [ "${{ needs.plan.outputs.signing }}" = "debug-fallback" ]; then + cat >> "$GITHUB_STEP_SUMMARY" << 'EOF' + > **Unsigned debug APK.** Debug builds use a CI-only signature. Use `adb install -r` only when replacing the same debug build. To upgrade from a signed release without losing user data, configure `ANDROID_KEYSTORE_*` repo secrets and re-run this workflow. + EOF + elif [ "${{ needs.plan.outputs.signing }}" = "dispatch-release" ]; then + cat >> "$GITHUB_STEP_SUMMARY" << 'EOF' + > **Signed release APK** (manual dispatch). Same keystore as tag releases — supports overlay install and preserves user data when upgrading from an existing signed install. + EOF + fi + + publish-android-release: + name: Publish Android release assets + if: needs.plan.outputs.is_tag_release == 'true' + needs: [plan, build-android-apk] + permissions: + contents: write + runs-on: ubuntu-latest + env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} + OPENLESS_RELEASE_CHANNEL: ${{ needs.plan.outputs.release_channel }} + steps: + - uses: actions/checkout@v4 + with: + submodules: false + + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + cache-dependency-path: openless-all/app/package-lock.json + + - name: Install npm deps + working-directory: openless-all/app + run: npm ci + + - name: Download all ABI artifacts + uses: actions/download-artifact@v4 + with: + pattern: openless-android-release-* + path: ${{ runner.temp }}/android-release-apks + merge-multiple: true + + - name: Verify full ABI set and stage files + id: stage + shell: bash + working-directory: openless-all/app + env: + OPENLESS_STAGE_DIR: ${{ runner.temp }}/android-release-apks run: | set -euo pipefail - python - <<'PY' - import json - import os - import shutil - import sys - import zipfile - from pathlib import Path - - expected = { - "arm64-v8a": "arm64_v8a", - "armeabi-v7a": "armeabi_v7a", - "x86": "x86", - "x86_64": "x86_64", - } - arch_map = { - "arm64-v8a": "aarch64", - "armeabi-v7a": "armv7", - "x86": "i686", - "x86_64": "x86_64", - } - root = Path("src-tauri/gen/android") - mode = os.environ["OPENLESS_APK_MODE"] - label = os.environ["OPENLESS_APK_LABEL"] - version = json.loads(Path("package.json").read_text(encoding="utf-8"))["version"] - out_dir = Path(os.environ["RUNNER_TEMP"]) / f"openless-android-{mode}-split" - out_dir.mkdir(parents=True, exist_ok=True) - found = {} - candidates = [ - apk for apk in sorted(root.rglob("*.apk")) - if "outputs" in apk.parts - ] - if not candidates: - print("::error::No APK found under src-tauri/gen/android/**/outputs/") - for apk in sorted(root.rglob("*.apk")): - print(apk) - sys.exit(1) - for apk in candidates: - with zipfile.ZipFile(apk) as archive: - abis = sorted({ - name.split("/")[1] - for name in archive.namelist() - if name.startswith("lib/") and len(name.split("/")) >= 3 - }) - if len(abis) != 1: - print(f"::error::{apk} contains ABI directories {abis}; expected exactly one ABI per APK") - sys.exit(1) - abi = abis[0] - if abi not in expected: - print(f"::error::{apk} contains unexpected ABI {abi}") - sys.exit(1) - if abi in found: - print(f"::error::Duplicate APKs for ABI {abi}: {found[abi]} and {apk}") - sys.exit(1) - if mode == "release": - dest = out_dir / f"OpenLess_{version}_{abi}.apk" - else: - dest = out_dir / f"OpenLess-android-debug-{abi}-{label}.apk" - shutil.copy2(apk, dest) - found[abi] = dest - print(f"Collected {abi}: {apk} -> {dest}") - missing = sorted(set(expected) - set(found)) - if missing: - print(f"::error::Missing split APKs for ABI(s): {', '.join(missing)}") - sys.exit(1) - with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as output: - for abi, key in expected.items(): - output.write(f"{key}_path={found[abi]}\n") - output.write(f"{key}_arch={arch_map[abi]}\n") - output.write(f"out_dir={out_dir}\n") - output.write("release_files<> "$GITHUB_OUTPUT" + { + echo "release_files<> "$GITHUB_OUTPUT" - name: Sign release APKs (minisign) - if: steps.mode.outputs.is_tag_release == 'true' working-directory: openless-all/app env: TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} run: | set -euo pipefail + out_dir="${{ steps.stage.outputs.out_dir }}" + version="$(node -p "require('./package.json').version")" node scripts/sign-android-apks.mjs \ - "${{ steps.apk.outputs.arm64_v8a_path }}" \ - "${{ steps.apk.outputs.armeabi_v7a_path }}" \ - "${{ steps.apk.outputs.x86_path }}" \ - "${{ steps.apk.outputs.x86_64_path }}" + "$out_dir/OpenLess_${version}_arm64-v8a.apk" \ + "$out_dir/OpenLess_${version}_armeabi-v7a.apk" \ + "$out_dir/OpenLess_${version}_x86.apk" \ + "$out_dir/OpenLess_${version}_x86_64.apk" - name: Write Android updater manifests - if: steps.mode.outputs.is_tag_release == 'true' working-directory: openless-all/app env: - OPENLESS_UPDATE_APK_DIR: ${{ steps.apk.outputs.out_dir }} + OPENLESS_UPDATE_APK_DIR: ${{ steps.stage.outputs.out_dir }} OPENLESS_UPDATE_REPO: Open-Less/openless OPENLESS_UPDATE_MIRROR_BASE_URL: https://fastgit.cc/https://github.com OPENLESS_RELEASE_CHANNEL: ${{ env.OPENLESS_RELEASE_CHANNEL }} @@ -360,14 +484,13 @@ jobs: done - name: Append release files (manifests + signatures) - if: steps.mode.outputs.is_tag_release == 'true' id: release_assets shell: bash run: | set -euo pipefail - out_dir="${{ steps.apk.outputs.out_dir }}" + out_dir="${{ steps.stage.outputs.out_dir }}" { - echo "${{ steps.apk.outputs.release_files }}" + echo "${{ steps.stage.outputs.release_files }}" for f in "$out_dir"/*.apk.sig "$out_dir"/latest-android-*.json; do [ -e "$f" ] && echo "$f" done @@ -376,36 +499,7 @@ jobs: cat "$RUNNER_TEMP/android-release-files.txt" >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" - - name: Upload Android APK artifact (arm64-v8a) - uses: actions/upload-artifact@v4 - with: - name: ${{ steps.mode.outputs.mode == 'release' && 'openless-android-release-arm64-v8a' || 'openless-android-debug-arm64-v8a' }} - path: ${{ steps.apk.outputs.arm64_v8a_path }} - if-no-files-found: error - - - name: Upload Android APK artifact (armeabi-v7a) - uses: actions/upload-artifact@v4 - with: - name: ${{ steps.mode.outputs.mode == 'release' && 'openless-android-release-armeabi-v7a' || 'openless-android-debug-armeabi-v7a' }} - path: ${{ steps.apk.outputs.armeabi_v7a_path }} - if-no-files-found: error - - - name: Upload Android APK artifact (x86) - uses: actions/upload-artifact@v4 - with: - name: ${{ steps.mode.outputs.mode == 'release' && 'openless-android-release-x86' || 'openless-android-debug-x86' }} - path: ${{ steps.apk.outputs.x86_path }} - if-no-files-found: error - - - name: Upload Android APK artifact (x86_64) - uses: actions/upload-artifact@v4 - with: - name: ${{ steps.mode.outputs.mode == 'release' && 'openless-android-release-x86_64' || 'openless-android-debug-x86_64' }} - path: ${{ steps.apk.outputs.x86_64_path }} - if-no-files-found: error - - name: Prepare Android release body - if: steps.mode.outputs.is_tag_release == 'true' shell: bash run: | cat > "$RUNNER_TEMP/android-release-body.md" << 'EOF' @@ -423,7 +517,6 @@ jobs: EOF - name: Attach Android assets to GitHub Release - if: steps.mode.outputs.is_tag_release == 'true' uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} @@ -435,26 +528,3 @@ jobs: append_body: true body_path: ${{ runner.temp }}/android-release-body.md files: ${{ steps.release_assets.outputs.files }} - - - name: Write build summary - if: always() && steps.mode.outputs.signing != '' - run: | - cat >> "$GITHUB_STEP_SUMMARY" << EOF - ### Android APK build - - | Field | Value | - |-------|-------| - | Gradle mode | \`${{ steps.mode.outputs.mode }}\` | - | Signing | ${{ steps.mode.outputs.signing_label }} | - | Artifact label | \`${{ steps.mode.outputs.label }}\` | - - EOF - if [ "${{ steps.mode.outputs.signing }}" = "debug-fallback" ]; then - cat >> "$GITHUB_STEP_SUMMARY" << 'EOF' - > **Unsigned debug APK.** Debug builds use a CI-only signature. Use `adb install -r` only when replacing the same debug build. To upgrade from a signed release without losing user data, configure `ANDROID_KEYSTORE_*` repo secrets and re-run this workflow. - EOF - elif [ "${{ steps.mode.outputs.signing }}" = "dispatch-release" ]; then - cat >> "$GITHUB_STEP_SUMMARY" << 'EOF' - > **Signed release APK** (manual dispatch). Same keystore as tag releases — supports overlay install and preserves user data when upgrading from an existing signed install. - EOF - fi diff --git a/README.md b/README.md index 2666efcda..74f5f506b 100644 --- a/README.md +++ b/README.md @@ -207,7 +207,7 @@ Every item below is one more layer sedimented into a default — a capability yo - **Toggle and push-to-talk** recording modes, plus a **MediaPlayPause trigger** so wired-earbud inline controls can start and stop recording. `Esc` cancels at any phase, including polish and insertion. - **Cloud ASR**: Volcengine streaming ASR (bigasr), Tencent Cloud Hunyuan realtime ASR (Hy-ASR), iFlytek realtime ASR (RTASR), Alibaba Cloud Bailian (classic realtime / Qwen3 realtime / Fun-ASR-Flash file transcription), StepFun StepAudio (batch + realtime), Zhipu GLM-ASR, Xiaomi MiMo ASR, OrcaRouter audio-input Gemini, ElevenLabs Scribe, OpenAI-compatible batch transcription (OpenAI Whisper / Groq / SiliconFlow SenseVoice / OpenRouter / ZenMux), and Apple Speech (macOS). - **Local ASR**: bundled Qwen3-ASR (0.6B / 1.7B) via vendored `Open-Less/qwen-asr` (macOS); Windows Foundry Local Whisper and sherpa-onnx (experimental) variants. -- **Polish providers**: Ark (Volcengine), DeepSeek, OpenAI, Google Gemini, Codex OAuth, SiliconFlow, Atlas Cloud, Xiaomi MiMo, Tencent Cloud TokenHub, CometAPI, OpenRouter, OrcaRouter, Alibaba Cloud Coding Plan, CodingPlanX, MiniMax, StepFun, and OpenCode Zen — plus any OpenAI-compatible endpoint you bring. +- **Polish providers**: Ark (Volcengine), DeepSeek, OpenAI, Google Gemini, Codex OAuth, SiliconFlow, Atlas Cloud, Xiaomi MiMo, Tencent Cloud TokenHub, CometAPI, OpenRouter, Requesty, OrcaRouter, Alibaba Cloud Coding Plan, CodingPlanX, MiniMax, StepFun, and OpenCode Zen — plus any OpenAI-compatible endpoint you bring. - **Four output modes**: raw, light polish, structured (**AI-prompt mode**), and formal. Plus a **translation hotkey** that converts speech directly into the configured target language ([#43](../../issues/43)). - **Selection-ask QA panel** — a separate hotkey opens a floating panel that runs voice Q&A against the highlighted text in any app ([#118](../../issues/118)). - **Main window**: Overview / History / Vocab / Style / Marketplace / Settings. Persistent tray icon, plus a mini status capsule that floats on screen and follows the display you are typing on (multi-monitor). diff --git a/README.zh.md b/README.zh.md index c39339184..2e06ad3e4 100644 --- a/README.zh.md +++ b/README.zh.md @@ -212,7 +212,7 @@ OpenLess 只做一件事:**把语音变成可用的书面文字(尤其是 AI 提 - **切换式与按住说话(push-to-talk)** 两种录音模式,外加 **MediaPlayPause 触发**,让有线耳机的线控也能开始 / 停止录音。`Esc` 可在任意阶段取消,包括润色与插入。 - **云端 ASR**:Volcengine 流式 ASR(bigasr)、腾讯云混元实时 ASR(Hy-ASR)、讯飞实时语音转写(RTASR)、阿里云百炼(经典实时 / Qwen3 实时 / Fun-ASR-Flash 录音文件)、阶跃星辰 StepAudio(批式 + 实时)、智谱 GLM-ASR、小米 MiMo ASR、OrcaRouter 音频输入 Gemini、ElevenLabs Scribe、OpenAI 兼容批量转写(OpenAI Whisper / Groq / 硅基流动 SenseVoice / OpenRouter / ZenMux),以及 Apple Speech(macOS)。 - **本地 ASR**:通过 vendored 的 `Open-Less/qwen-asr` 内置 Qwen3-ASR(0.6B / 1.7B)(macOS);Windows 上的 Foundry Local Whisper 与 sherpa-onnx(实验性)变体。 -- **润色提供方**:Ark(火山方舟)、DeepSeek、OpenAI、Google Gemini、Codex OAuth、硅基流动、Atlas Cloud、小米 MiMo、腾讯云 TokenHub、CometAPI、OpenRouter、OrcaRouter、阿里云 Coding Plan、CodingPlanX、MiniMax、StepFun、OpenCode Zen,以及你自带的任意 OpenAI 兼容端点。 +- **润色提供方**:Ark(火山方舟)、DeepSeek、OpenAI、Google Gemini、Codex OAuth、硅基流动、Atlas Cloud、小米 MiMo、腾讯云 TokenHub、CometAPI、OpenRouter、Requesty、OrcaRouter、阿里云 Coding Plan、CodingPlanX、MiniMax、StepFun、OpenCode Zen,以及你自带的任意 OpenAI 兼容端点。 - **四种输出模式**:原文、轻度润色、结构化(**AI 提示词模式**)、正式。另有一个**翻译快捷键**,将语音直接转换为所配置的目标语言([#43](../../issues/43))。 - **选区问答面板**——一个独立快捷键打开浮动面板,针对任意应用中被高亮选中的文本进行语音问答([#118](../../issues/118))。 - **主窗口**:概览 / 历史 / 词典 / 风格 / 市场 / 设置。常驻托盘图标,以及一个浮于屏幕、并跟随你正在输入的显示器的迷你状态胶囊(多显示器)。 diff --git a/docs/android-build-time-research-1103.md b/docs/android-build-time-research-1103.md new file mode 100644 index 000000000..7ba32ae67 --- /dev/null +++ b/docs/android-build-time-research-1103.md @@ -0,0 +1,46 @@ +# Android APK 编译耗时调研(#1103) + +调研日期:2026-09-25。基线:上游 beta `d9113e0b03c0b5998079d5f43dcb33fb8bba50e7`。原始调研与后续实现记录;Beta 3 整合时采用 ABI 并行与缓存回写方案。 + +## 实测证据 + +- [tag run 35989822568](https://github.com/Open-Less/openless/actions/runs/35989822568):job 32 分 32 秒;Build Android release APK 30 分 31 秒。 +- Cargo 完成记录为 6m01s、2m14s、5m11s、5m27s、5m37s。前两轮都为 aarch64,第二轮重新编译应用及部分 Tauri crates。重复编译事实已确认,失效原因尚未确认。 +- [同 SHA 的 beta dispatch 35985550453](https://github.com/Open-Less/openless/actions/runs/35985550453)也有五轮编译;arm64 第二轮 2m15s。 +- tag Gradle 日志明确 cache-read-only=true;仓库默认分支为 beta,beta dispatch 为 false。不能用 post 为零秒单独证明清盘阻止保存。 +- beta dispatch 在清盘后仍保存约 171 MB Rust cache,随后 tag 命中同一缓存。这不证明 target 编译产物被保留:workflow 明确提前删除 target、Cargo registry/git 和 Gradle caches。 +- 独立前端构建约 15 秒;Tauri beforeBuildCommand 随后再次执行 npm run build。 + +## 建议顺序 + +1. 修复清盘与缓存生命周期,并更换缓存版本键,避免继续命中已有残缺缓存;验证连续两次运行的实际缓存内容及编译耗时。post action 在普通 steps 之后执行,仅把清盘移动到普通 steps 末尾无效。 +2. 日常 dispatch 可选 ABI,默认 arm64;正式 tag 保留全 ABI。进一步使用 ABI matrix 降低全量墙钟,分别衡量总 runner 分钟和排队时间;发布资产集中汇总,校验 ABI 完整性。 +3. 记录 Cargo timings/fingerprint 和两轮 arm64 调用参数、环境、生成文件差异,定位重复编译。不要直接绕过 Tauri/Gradle native 构建。 +4. 当前 release 使用 opt-level=3、thin LTO、codegen-units=1。试验仅 dispatch 的快速 profile:关闭 LTO、提高 codegen-units,同时保持签名;单独比较 APK 大小、运行表现和耗时。正式 tag 优化配置暂不改变。 +5. ci-disable-macos-qwen3.mjs 每次删除平台依赖后 cargo generate-lockfile。应研究保留已锁定版本的确定性处理,避免无关依赖升级及缓存键变化;stable Rust 也应考虑固定版本并有计划升级。 +6. Cargo timings 若表明依赖或主 crate 占比高,再审计 Android 不使用的依赖/features、缩小重编译边界。现有 openless-core 可作为评估起点,不能未经测量就大改架构。 +7. 次要优化:删除重复前端构建,验证 Gradle task-output cache,更强的 x64 runner、预置工具链环境,以及 artifact 压缩参数。现有四份上传合计约 14 秒,优先级低。 + +## 限制与官方资料 + +- [Cargo profiles](https://doc.rust-lang.org/cargo/reference/profiles.html):LTO/codegen-units 是构建速度与产物表现之间的取舍,不能承诺未经实测的收益。 +- [rust-cache](https://github.com/Swatinem/rust-cache):默认排除 workspace crates、清理 incremental;缓存命中不等于应用无需重编译。 +- [sccache Rust](https://github.com/mozilla/sccache/blob/main/docs/Rust.md):不能缓存涉及系统链接的 cdylib 等输出,因此不是 Tauri 主库的万能缓存;可单独评估依赖缓存收益。 +- [Gradle Actions v4](https://github.com/gradle/actions/blob/v4/docs/setup-gradle.md)与[GitHub cache scope](https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching):默认分支写缓存与 ref 可见性应一并设计。 +- [Gradle build cache](https://docs.gradle.org/current/userguide/build_cache.html):任务输出缓存和依赖缓存不同;仅缓存输入输出定义完整的任务。 +- [Android NDK host](https://developer.android.com/ndk/guides/other_build_systems):Linux 官方 NDK 使用 x86_64 host 工具链,不能因为目标 APK 是 arm64 就直接换 Linux arm64 runner。 +- [Tauri CLI](https://v2.tauri.app/reference/cli/):Android build 会执行 beforeBuildCommand。 + +下述基准是优化前的测量;实际加速效果须以整合后上游仓库的完整运行统计为准。基准应覆盖冷缓存、相同依赖下的源码改动、依赖变更,以及正式全 ABI 构建;同时检查签名、APK ABI 和 updater manifest 完整性。 + +## 实现备注(#1103 跟进) + +重复 aarch64 根因已定位:Tauri CLI `android build` 在 `apk::build` 之前会对**第一个** target 调用 `first_target.build(...)`(注释为 initialize plugins),随后 Gradle 再对每个 ABI 执行 `tauri android android-studio-script`。因此首个 ABI 必然两次 cargo;第二轮约 2m 是因为 `write_options` / `inject_resources` 发生在首次编译之后,指纹变脏。不要绕过 Gradle/native 路径;用单 ABI dispatch + 全 ABI matrix 并行降低墙钟。 + + +## Beta 3 发布整合 + +- 正式 tag 仍使用原来的 release profile,四 ABI 并行构建后统一签名与生成 Beta updater manifest;快速 profile 只允许手动验证运行。 +- Gradle 缓存回写前保留编译缓存,但生成的 Kotlin DSL 只读取环境变量,不写入签名密码或 alias。实际 release build 步骤注入凭据;keystore 权限保持 0600。 +- APK 收集器使用 runner 既有 Python 3 标准库校验 ZIP 和 CRC,并检查完整 ABI 目录集合;损坏、未知 ABI、多 ABI、重复或缺失产物均有回归测试。 +- 未合入 #1106 中额外的 Linux egui 测试修补;本轮没有 Linux 代码或发布工作流变更。 diff --git a/docs/index.md b/docs/index.md index d59ff8e7a..8838ee99d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -24,6 +24,7 @@ ## 平台与运营 - [macOS CI 与打包耗时](macos-build-performance.md):基线日志、Rust 编译优化、缓存边界与仅 macOS 验证入口。 +- [Android APK 编译耗时调研与实现](android-build-time-research-1103.md):ABI 并行、缓存回写和发布验证。 - [Android APK / 悬浮窗计划](android-mobile-apk-overlay-plan.md)(实施中) - [火山引擎 ASR 配置](volcengine-setup.md) - [讯飞(iflytek)ASR 配置](xfyun-asr.md) @@ -40,6 +41,8 @@ ## 本地集成记录 +- [2026-09-25 Beta 3 集成](local-builds/2026-09-25-beta3.md):最新 PR 整合、审查修复、CI 加速与平台范围。 + - [2026-09-23 2.0 PR 审查与构建](local-builds/2026-09-23-2.0.md):PR 取舍、客户端修复及平台验证范围。 - [2026-09-23 模型与云同步界面检查](local-builds/2026-09-23-models-and-sync.md):运行时平台隔离、Qwen 中英文真实推理和新云同步文档边界。 diff --git a/docs/local-builds/2026-09-25-beta3.md b/docs/local-builds/2026-09-25-beta3.md new file mode 100644 index 000000000..c01335b4c --- /dev/null +++ b/docs/local-builds/2026-09-25-beta3.md @@ -0,0 +1,27 @@ +# 2026-09-25 Beta 3 集成 + +基线为已发布且本机安装的 `2.0.0-Beta.2+build.20260924`,提交 `d9113e0b`。本次应用版本为 `2.0.0-Beta.3+build.20260925`;标签沿用更新器兼容的 `v2.0.0-Beta.3-tauri`。 + +## 新增整合 + +| PR | 整合内容 | 审查修正 | +| --- | --- | --- | +| #1107 | macOS Rust 编译、MLX 原生缓存、MSRV 并行和桌面打包 | 已完成四轮独立审查和 Apple Silicon / Intel 构建验证 | +| #1106 | Android 四 ABI 并行、缓存回写、手动单 ABI 与可选快速 profile | 排除 Linux 补丁;避免 Gradle 脚本缓存签名凭据;恢复严格 ZIP、CRC 与 ABI 校验 | +| #1102 | 纯修饰键组合听写快捷键 | 纳入 Core 仲裁窗口,防止普通组合键启动录音;录制时保留左右同类修饰键 | +| #1104 | 可选 Requesty 润色渠道 | 保留三种请求格式、八语种和描述符一致性;排除 Linux locale 文件 | +| #1110 | 远程输入停止/取消后隔离过期音频准备回调 | 保留麦克风复用,验证迟到回调和超时 | + +所有新增 Linux egui 文件和 Linux 发布工作流均与 Beta 2 相同,本次不构建或发布 Linux 安装包。Linux 既有独立 CI 失败不通过修改或绕过测试处理。 + +## 已在 Beta 2 吸收的 PR + +#1096、#1094、#1091、#1087、#1085、#1074、#1073 的头提交已包含于本地 2.0 集成历史,并经 `16c3f841` 整体提交进入 Beta 2。保留 Beta 2 在其上增加的修正,不再次用旧 PR 内容覆盖。 + +#1067 只有早期 Android 输入法实现已吸收,后续输入法及生命周期大改尚未完成此次审查与 CI;#1064 的内置 PI 检查失败,#1066 的独立 iOS 也不在本次已验证交付中,继续保留。Linux 相关 #1065、#1060、#1055 不在本轮处理范围。 + +## 验证边界 + +整合树已通过前端生产构建及 93 个测试入口、Core 1041 项测试(1 项既有忽略),macOS Host 493 项及独立后端 12 项通过,并新增纯修饰键仲裁、左右键录制、APK 损坏/异常 ABI 和签名配置缓存回归。完整云端 CI、桌面/Android 构建与签名资产验收以发布记录为准。 + +本次继承 Beta 2 的平台设备验收范围;自动化测试和构建不代表新增 Windows、Intel Mac 或 Android 真机交互证据。性能比较同时记录基线、缓存状态、完整 job 与 Rust/Gradle 构建步骤耗时,见工作区 `outputs/beta3/2026-09-25/` 中的运行记录与发布验收结果。 diff --git a/openless-all/app/assets/remote-input/app.js b/openless-all/app/assets/remote-input/app.js index d3ed74b01..a07ac65a8 100644 --- a/openless-all/app/assets/remote-input/app.js +++ b/openless-all/app/assets/remote-input/app.js @@ -1537,8 +1537,10 @@ setStatus(L.preparingMic, 'work'); clearResult(); // 清掉上一次的识别结果,避免新录音时还显示旧文字 + var gen = audioGen; withTimeout(ensureAudio(), MIC_PREP_TIMEOUT_MS, 'TIMEOUT') .then(function () { + if (gen !== audioGen) return; if (!recording) { // 期间已被取消/松手 teardownAudioCapture(); @@ -1549,6 +1551,7 @@ setStatus(L.preparingBackend, 'work'); }) .catch(function (err) { + if (gen !== audioGen) return; recording = false; resetRemoteStreamState(); // 超时多半是 audioCtx 卡死(resume 永不 settle),彻底重建,否则下次重试会继续卡在 @@ -1639,6 +1642,7 @@ // 确保 AudioContext / getUserMedia / 采集节点就绪并开始推流。 // 必须在用户手势调用栈内(startRecording 由手势触发)。 function ensureAudio() { + var gen = audioGen; // 不支持 getUserMedia if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { return Promise.reject(new Error('UNSUPPORTED:浏览器不支持录音,请升级或换浏览器')); @@ -1665,11 +1669,10 @@ return resumeP .then(function () { + if (gen !== audioGen) return null; // 2) 麦克风流(已存在则复用) if (mediaStream) return mediaStream; - // 捕获当前代际:迟到 resolve 时若代际已变(超时重置/断线释放),停掉轨道并放弃, - // 避免泄漏麦克风或覆盖重试成功的新流。 - var gen = audioGen; + // 使用准备开始时的代际;停止/取消后迟到的流必须释放,不能覆盖下一次录音。 return navigator.mediaDevices .getUserMedia({ audio: { @@ -1701,7 +1704,7 @@ .then(function (stream) { // 3) 建立采集图(若已建好则跳过)。audioCtx 可能在准备超时后被 resetAudioContext // 置空(本次 getUserMedia 迟到 resolve),此时直接放弃,避免对 null ctx 建图报错。 - if (sourceNode || !audioCtx || !stream) return; + if (gen !== audioGen || sourceNode || !audioCtx || !stream) return; sourceNode = audioCtx.createMediaStreamSource(stream); return buildCaptureGraph(); }); @@ -1709,12 +1712,14 @@ // 建立 AudioWorklet(优先)或 ScriptProcessor(兜底) function buildCaptureGraph() { + var gen = audioGen; var inSr = audioCtx.sampleRate || 48000; // 优先 AudioWorklet if (audioCtx.audioWorklet && typeof AudioWorkletNode !== 'undefined') { return loadWorklet() .then(function () { + if (gen !== audioGen) return; workletNode = new AudioWorkletNode(audioCtx, 'ol-pcm-worklet', { numberOfInputs: 1, numberOfOutputs: 0, @@ -1723,12 +1728,13 @@ }); workletNode.port.onmessage = function (e) { // e.data 是已转换好的 Int16 LE ArrayBuffer - sendAudio(e.data); + if (gen === audioGen) sendAudio(e.data); }; sourceNode.connect(workletNode); usingWorklet = true; }) .catch(function () { + if (gen !== audioGen) return; // worklet 加载失败 → 回退 ScriptProcessor usingWorklet = false; buildScriptProcessor(inSr); @@ -2035,6 +2041,7 @@ // ============================================================ // 仅停止"采集/推流"(断开节点),保留 audioCtx & mediaStream 以便快速重启。 function teardownAudioCapture() { + audioGen++; // 停止/取消也作废在途的 resume、麦克风、worklet 和准备超时回调。 releaseWakeLock(); if (wakeLockHint) wakeLockHint.textContent = L.wakeLockHint; try { @@ -2072,7 +2079,6 @@ // 彻底释放(断线时):停止麦克风轨道并关闭 ctx。 function teardownAudio() { - audioGen++; // 代际推进:作废所有在途的 getUserMedia 迟到回调 teardownAudioCapture(); if (mediaStream) { try { @@ -2093,7 +2099,6 @@ // 与 teardownAudio 的区别:这里 close 并置空 audioCtx —— 超时根因往往是 ctx 自身坏掉 // (resume 永不 settle),保留它只会让下次继续卡。 function resetAudioContext() { - audioGen++; // 代际推进:作废所有在途的 getUserMedia 迟到回调 teardownAudioCapture(); if (mediaStream) { try { diff --git a/openless-all/app/crates/openless-core/src/api.rs b/openless-all/app/crates/openless-core/src/api.rs index 0207a0ed5..6236bb468 100644 --- a/openless-all/app/crates/openless-core/src/api.rs +++ b/openless-all/app/crates/openless-core/src/api.rs @@ -3399,7 +3399,9 @@ impl OpenLessBackend { }; let preferences = self.get_preferences(); let mode = preferences.hotkey.mode; - let modifier_only = crate::hotkey_interpreter::modifier_arbitration_required( + let modifier_only = crate::shortcut_types::is_modifier_chord_binding( + &preferences.dictation_hotkey, + ) || crate::hotkey_interpreter::modifier_arbitration_required( crate::shortcut_types::legacy_modifier_trigger(&preferences.dictation_hotkey), mode, ); @@ -9447,7 +9449,19 @@ mod tests { } } backend.cancel_dictation(Some(first)).await.unwrap(); - let second = backend.start_dictation().await.unwrap(); + let second = tokio::time::timeout(std::time::Duration::from_secs(2), async { + loop { + match backend.start_dictation().await { + Ok(id) => break id, + Err(error) if error.code == BackendErrorCode::Busy => { + tokio::task::yield_now().await; + } + Err(error) => panic!("unexpected start failure: {error}"), + } + } + }) + .await + .expect("successor dictation should become available after cancel"); release_guard.release(); settings.join().unwrap().unwrap(); stopping.await.unwrap().unwrap(); @@ -12735,6 +12749,62 @@ mod tests { assert!(!saw_recording_after_cancel); } + #[tokio::test] + async fn modifier_chord_companion_does_not_start_dictation_engine() { + for mode in [ + crate::shared_types::HotkeyMode::Hold, + crate::shared_types::HotkeyMode::Auto, + crate::shared_types::HotkeyMode::Toggle, + ] { + let data_dir = TestDataDir::new("modifier-chord-companion"); + let engine = crate::testing::FixtureDictationEngine::successful("raw", "polished"); + let backend = + backend_with_dictation_engine(data_dir.path().to_path_buf(), Arc::new(engine.clone())); + backend.start().await.unwrap(); + let mut preferences = backend.get_preferences(); + preferences.hotkey.mode = mode; + preferences.dictation_hotkey = crate::shared_types::ShortcutBinding { + primary: "ModifierChord".into(), + modifiers: vec!["ctrl-left".into(), "cmd-left".into()], + }; + backend.set_preferences(preferences).unwrap(); + + let at = std::time::Instant::now(); + let mut press = std::pin::pin!(backend + .dispatch_dictation_hotkey_edge(DictationHotkeyEdge::Pressed { press_id: 1, at })); + // Poll the real public API until it waits. A companion key arrives + // before the grace expires, so even native startup must stay idle. + assert!(futures_util::poll!(press.as_mut()).is_pending()); + assert_eq!(backend.snapshot().dictation.phase, DictationPhase::Idle); + assert!(engine.actions().is_empty()); + assert_eq!( + backend + .dispatch_dictation_hotkey_edge(DictationHotkeyEdge::Combined { + press_id: 1, + at: at + std::time::Duration::from_millis(1), + }) + .await + .unwrap(), + CliDispatchOutcome::Noop + ); + assert_eq!(press.await.unwrap(), CliDispatchOutcome::Noop); + assert!(engine.actions().is_empty()); + + // A later chord without a companion remains a working trigger. + assert!(matches!( + backend + .dispatch_dictation_hotkey_edge(DictationHotkeyEdge::Pressed { + press_id: 2, + at: at + std::time::Duration::from_secs(1), + }) + .await + .unwrap(), + CliDispatchOutcome::DictationStarted(_) + )); + backend.cancel_dictation(None).await.unwrap(); + } + } + #[tokio::test] async fn hotkey_combined_edge_cancels_the_same_generation_during_start_await() { let entered = Arc::new(tokio::sync::Notify::new()); diff --git a/openless-all/app/crates/openless-core/src/cloud_providers.rs b/openless-all/app/crates/openless-core/src/cloud_providers.rs index dec6ac09b..5a52a88ad 100644 --- a/openless-all/app/crates/openless-core/src/cloud_providers.rs +++ b/openless-all/app/crates/openless-core/src/cloud_providers.rs @@ -78,6 +78,7 @@ pub const SHARED_CLOUD_LLM_PROVIDER_TYPES: &[&str] = &[ "mimo", "cometapi", "openrouterFree", + "requesty", "orcarouter", "alibabaCoding", "codingPlanX", diff --git a/openless-all/app/crates/openless-core/src/lib.rs b/openless-all/app/crates/openless-core/src/lib.rs index 10f82c8ca..cacf8e676 100644 --- a/openless-all/app/crates/openless-core/src/lib.rs +++ b/openless-all/app/crates/openless-core/src/lib.rs @@ -326,7 +326,8 @@ pub use shared_types::{ }; pub use shortcut_types::{ binding_from_legacy_trigger, binding_requires_side_aware_hook, bindings_overlap, - is_side_specific_modifier_tag, legacy_modifier_trigger, normalize_side_modifier_tag, + is_modifier_chord_binding, is_side_specific_modifier_tag, legacy_modifier_trigger, + normalize_side_modifier_tag, reconcile_hotkey_collisions, reject_bare_shift_dictation_shortcut, reject_dictation_qa_hotkey_overlap, reject_dictation_translation_hotkey_overlap, reject_hotkey_collisions, reject_modifier_only_action_shortcut, diff --git a/openless-all/app/crates/openless-core/src/polish.rs b/openless-all/app/crates/openless-core/src/polish.rs index 968a3b217..0d2e089eb 100644 --- a/openless-all/app/crates/openless-core/src/polish.rs +++ b/openless-all/app/crates/openless-core/src/polish.rs @@ -190,6 +190,7 @@ fn is_builtin_llm_provider(provider_id: &str) -> bool { | "mimo" | "cometapi" | "openrouterFree" + | "requesty" | "orcarouter" | "alibabaCoding" | "codingPlanX" diff --git a/openless-all/app/crates/openless-core/src/provider_rules.rs b/openless-all/app/crates/openless-core/src/provider_rules.rs index ce6a51154..089c1e168 100644 --- a/openless-all/app/crates/openless-core/src/provider_rules.rs +++ b/openless-all/app/crates/openless-core/src/provider_rules.rs @@ -62,6 +62,7 @@ const LLM_PROVIDER_TYPES: &[(&str, &str)] = &[ ("mimo", "mimo"), ("cometapi", "cometapi"), ("openrouterFree", "openrouterFree"), + ("requesty", "requesty"), ("orcarouter", "orcarouter"), ("alibabaCoding", "alibabaCoding"), ("codingPlanX", "codingPlanX"), @@ -601,6 +602,7 @@ pub fn default_llm_endpoint(provider_type: &str) -> Option<&'static str> { "mimo" => Some("https://api.xiaomimimo.com/v1"), "cometapi" => Some("https://api.cometapi.com/v1"), "openrouterFree" => Some("https://openrouter.ai/api/v1"), + "requesty" => Some("https://router.requesty.ai/v1"), "orcarouter" => Some(crate::asr::mimo::ORCAROUTER_DEFAULT_ENDPOINT), "alibabaCoding" => Some("https://coding-intl.dashscope.aliyuncs.com/v1"), "codingPlanX" => Some("https://api.codingplanx.ai/v1"), @@ -623,6 +625,7 @@ pub fn default_llm_model(provider_type: &str) -> Option<&'static str> { crate::polish::CODEX_OAUTH_PROVIDER_ID => Some(crate::polish::CODEX_DEFAULT_MODEL), "mimo" => Some("xiaomi/mimo-v2-flash"), "openrouterFree" => Some("qwen/qwen3-coder:free"), + "requesty" => Some("openai/gpt-4o-mini"), "orcarouter" => Some("orcarouter/fusion-flash"), "alibabaCoding" => Some("qwen3-coder-plus"), "codingPlanX" => Some("gpt-5-mini"), @@ -1341,6 +1344,42 @@ mod tests { assert!(llm_configured("opencode", &configuration)); } + #[test] + fn requesty_descriptor_supplies_defaults_formats_and_credentials() { + use crate::llm_protocol::LlmRequestFormat; + assert!(crate::cloud_providers::SHARED_CLOUD_LLM_PROVIDER_TYPES.contains(&"requesty")); + let descriptor = provider_descriptor(ProviderKind::Llm, "requesty").unwrap(); + assert_eq!(descriptor.label_key, "requesty"); + assert_eq!( + descriptor.default_endpoint.as_deref(), + Some("https://router.requesty.ai/v1") + ); + assert_eq!( + descriptor.default_model.as_deref(), + Some("openai/gpt-4o-mini") + ); + assert_eq!( + descriptor.default_request_format, + Some(LlmRequestFormat::ChatCompletions) + ); + assert_eq!(descriptor.supported_request_formats, LlmRequestFormat::ALL); + assert_eq!(descriptor.validation_probe, ValidationProbe::LlmText); + assert!(api_key_required( + ProviderKind::Llm, + "requesty", + Some("https://router.requesty.ai/v1/chat/completions") + )); + let mut configuration = CredentialConfiguration { + llm_endpoint: true, + llm_api_key_required: true, + llm_model: true, + ..CredentialConfiguration::default() + }; + assert!(!llm_configured("requesty", &configuration)); + configuration.llm_api_key = true; + assert!(llm_configured("requesty", &configuration)); + } + #[test] fn tencent_cloud_asr_and_tokenhub_supply_defaults_and_credentials() { assert!(crate::cloud_providers::SHARED_CLOUD_ASR_PROVIDER_TYPES.contains(&"tencent-cloud")); diff --git a/openless-all/app/crates/openless-core/src/shortcut_types.rs b/openless-all/app/crates/openless-core/src/shortcut_types.rs index c62c7b88e..f1f2d61aa 100644 --- a/openless-all/app/crates/openless-core/src/shortcut_types.rs +++ b/openless-all/app/crates/openless-core/src/shortcut_types.rs @@ -27,6 +27,15 @@ const SIDE_MODIFIER_TAGS: &[&str] = &[ "super-right", ]; +const MODIFIER_CHORD_PRIMARY: &str = "ModifierChord"; + +pub fn is_modifier_chord_binding(binding: &ShortcutBinding) -> bool { + binding + .primary + .trim() + .eq_ignore_ascii_case(MODIFIER_CHORD_PRIMARY) +} + pub fn normalize_side_modifier_tag(raw: &str) -> String { match raw.trim().to_ascii_lowercase().as_str() { "super-left" => "cmd-left".into(), @@ -206,6 +215,24 @@ pub fn validate_shortcut_binding(binding: &ShortcutBinding) -> Result<(), Shortc if binding.modifiers.is_empty() && binding.primary.eq_ignore_ascii_case("shift") { return Ok(()); } + if is_modifier_chord_binding(binding) { + if binding.modifiers.len() < 2 { + return Err(ShortcutBindingError::UnsupportedKey( + binding.primary.trim().to_string(), + )); + } + let mut unique = BTreeSet::new(); + for raw in &binding.modifiers { + if !is_side_specific_modifier_tag(raw) { + return Err(ShortcutBindingError::UnsupportedModifier(raw.clone())); + } + let normalized = normalize_side_modifier_tag(raw); + if !unique.insert(normalized) { + return Err(ShortcutBindingError::UnsupportedModifier(raw.clone())); + } + } + return Ok(()); + } validate_primary(&binding.primary)?; for raw in &binding.modifiers { @@ -871,6 +898,21 @@ mod tests { assert!(validate_shortcut_binding(&combo("D", &["cmd-left", "shift"])).is_err()); } + #[test] + fn modifier_chords_require_multiple_unique_side_specific_modifiers() { + let chord = combo("ModifierChord", &["ctrl-left", "super-left"]); + assert!(validate_shortcut_binding(&chord).is_ok()); + assert!(binding_requires_side_aware_hook(&chord)); + assert!(is_modifier_chord_binding(&chord)); + + assert!(validate_shortcut_binding(&combo("ModifierChord", &["ctrl-left"])).is_err()); + assert!(validate_shortcut_binding(&combo("ModifierChord", &["ctrl", "super-left"])).is_err()); + assert!( + validate_shortcut_binding(&combo("ModifierChord", &["cmd-left", "super-left"])) + .is_err() + ); + } + #[test] fn overlap_and_legacy_conversion_have_one_shared_implementation() { assert!(bindings_overlap( diff --git a/openless-all/app/package-lock.json b/openless-all/app/package-lock.json index 91a5252f5..e3867db7e 100644 --- a/openless-all/app/package-lock.json +++ b/openless-all/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "openless-app", - "version": "2.0.0-Beta.2+build.20260924", + "version": "2.0.0-Beta.3+build.20260925", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "openless-app", - "version": "2.0.0-Beta.2+build.20260924", + "version": "2.0.0-Beta.3+build.20260925", "dependencies": { "@base-ui/react": "^1.6.0", "@shadcn/react": "^0.2.1", diff --git a/openless-all/app/package.json b/openless-all/app/package.json index 34c2f4e17..6f8017770 100644 --- a/openless-all/app/package.json +++ b/openless-all/app/package.json @@ -1,7 +1,7 @@ { "name": "openless-app", "private": true, - "version": "2.0.0-Beta.2+build.20260924", + "version": "2.0.0-Beta.3+build.20260925", "type": "module", "scripts": { "pretest": "npm run build", @@ -14,9 +14,10 @@ "tauri": "tauri", "tauri:android:init": "tauri android init", "tauri:android:dev": "tauri android dev", - "tauri:android:build": "tauri android build --apk --debug --target aarch64 armv7 i686 x86_64 --split-per-abi", - "tauri:android:build:debug": "tauri android build --apk --debug --target aarch64 armv7 i686 x86_64 --split-per-abi", - "tauri:android:build:release": "tauri android build --apk --target aarch64 armv7 i686 x86_64 --split-per-abi", + "tauri:android:build": "node scripts/run-android-tauri-build.mjs --debug", + "tauri:android:build:debug": "node scripts/run-android-tauri-build.mjs --debug", + "tauri:android:build:release": "node scripts/run-android-tauri-build.mjs --release", + "check:android-apk-workflow": "node scripts/android-apk-workflow-contract.test.mjs", "merge:android-v1-manifest": "node scripts/merge-android-v1-manifest.mjs", "merge:android-overlay-manifest": "node scripts/merge-android-overlay-manifest.mjs", "merge:android-shizuku-manifest": "node scripts/merge-android-shizuku-manifest.mjs", diff --git a/openless-all/app/scripts/android-abi-matrix.mjs b/openless-all/app/scripts/android-abi-matrix.mjs new file mode 100644 index 000000000..e4c0b30cf --- /dev/null +++ b/openless-all/app/scripts/android-abi-matrix.mjs @@ -0,0 +1,123 @@ +/** + * Android ABI matrix helpers for CI (#1103). + * + * CLI target names match `tauri android build --target`. + * Gradle ABI folder names match APK lib/ layout. + */ + +export const ANDROID_ABI_MATRIX = [ + { + abi: 'aarch64', + rustTarget: 'aarch64-linux-android', + gradleAbi: 'arm64-v8a', + outputKey: 'arm64_v8a', + }, + { + abi: 'armv7', + rustTarget: 'armv7-linux-androideabi', + gradleAbi: 'armeabi-v7a', + outputKey: 'armeabi_v7a', + }, + { + abi: 'i686', + rustTarget: 'i686-linux-android', + gradleAbi: 'x86', + outputKey: 'x86', + }, + { + abi: 'x86_64', + rustTarget: 'x86_64-linux-android', + gradleAbi: 'x86_64', + outputKey: 'x86_64', + }, +]; + +const BY_ABI = new Map(ANDROID_ABI_MATRIX.map((entry) => [entry.abi, entry])); +const BY_GRADLE = new Map(ANDROID_ABI_MATRIX.map((entry) => [entry.gradleAbi, entry])); + +export function entryForAbi(abi) { + const entry = BY_ABI.get(abi); + if (!entry) { + throw new Error( + `Unknown Android ABI "${abi}". Expected one of: ${ANDROID_ABI_MATRIX.map((e) => e.abi).join(', ')}`, + ); + } + return entry; +} + +export function entryForGradleAbi(gradleAbi) { + const entry = BY_GRADLE.get(gradleAbi); + if (!entry) { + throw new Error(`Unknown Gradle ABI "${gradleAbi}"`); + } + return entry; +} + +/** + * Parse a comma/space-separated ABI list or the keyword "all". + * Empty / whitespace → defaultAbis. + */ +export function parseAndroidAbis(raw, { defaultAbis = ['aarch64'] } = {}) { + const text = (raw ?? '').trim(); + if (!text) { + return defaultAbis.map(entryForAbi); + } + if (text.toLowerCase() === 'all') { + return [...ANDROID_ABI_MATRIX]; + } + const tokens = text + .split(/[,\s]+/) + .map((t) => t.trim()) + .filter(Boolean); + if (tokens.length === 0) { + return defaultAbis.map(entryForAbi); + } + const seen = new Set(); + const out = []; + for (const token of tokens) { + const entry = entryForAbi(token); + if (seen.has(entry.abi)) continue; + seen.add(entry.abi); + out.push(entry); + } + return out; +} + +/** GitHub Actions matrix.include payload for selected ABIs. */ +export function toGithubMatrixInclude(entries) { + return entries.map((entry) => ({ + abi: entry.abi, + rust_target: entry.rustTarget, + gradle_abi: entry.gradleAbi, + output_key: entry.outputKey, + })); +} + +function main() { + const mode = process.argv[2] || 'parse'; + if (mode === 'parse') { + const raw = process.argv[3] ?? process.env.OPENLESS_ANDROID_ABIS ?? ''; + const defaultRaw = process.env.OPENLESS_ANDROID_ABIS_DEFAULT ?? 'aarch64'; + const entries = parseAndroidAbis(raw, { + defaultAbis: parseAndroidAbis(defaultRaw, { defaultAbis: ['aarch64'] }).map((e) => e.abi), + }); + process.stdout.write(JSON.stringify(toGithubMatrixInclude(entries))); + return; + } + if (mode === 'list-all') { + process.stdout.write(JSON.stringify(toGithubMatrixInclude(ANDROID_ABI_MATRIX))); + return; + } + if (mode === 'rust-targets') { + const raw = process.argv[3] ?? process.env.OPENLESS_ANDROID_ABIS ?? 'all'; + const entries = parseAndroidAbis(raw, { defaultAbis: ANDROID_ABI_MATRIX.map((e) => e.abi) }); + process.stdout.write(entries.map((e) => e.rustTarget).join(',')); + return; + } + console.error(`Usage: node android-abi-matrix.mjs [abis]`); + process.exit(1); +} + +if (process.argv[1]?.replace(/\\/g, '/').endsWith('android-abi-matrix.mjs')) { + main(); +} diff --git a/openless-all/app/scripts/android-apk-workflow-contract.test.mjs b/openless-all/app/scripts/android-apk-workflow-contract.test.mjs new file mode 100644 index 000000000..f66a63dac --- /dev/null +++ b/openless-all/app/scripts/android-apk-workflow-contract.test.mjs @@ -0,0 +1,134 @@ +import assert from 'node:assert/strict'; +import { mkdtempSync, mkdirSync, writeFileSync, rmSync, readFileSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { spawnSync } from 'node:child_process'; +import { fileURLToPath } from 'node:url'; +import { + ANDROID_ABI_MATRIX, + parseAndroidAbis, + toGithubMatrixInclude, + entryForAbi, +} from './android-abi-matrix.mjs'; +import { collectSplitApks } from './collect-android-split-apks.mjs'; + +const scriptDir = fileURLToPath(new URL('.', import.meta.url)); +const workflowPath = fileURLToPath( + new URL('../../../.github/workflows/android-apk.yml', import.meta.url), +); + +// --- ABI matrix --- +assert.equal( + parseAndroidAbis('') + .map((e) => e.abi) + .join(','), + 'aarch64', +); +assert.equal(parseAndroidAbis('all').length, 4); +assert.equal( + parseAndroidAbis('aarch64,armv7') + .map((e) => e.abi) + .join(','), + 'aarch64,armv7', +); +assert.equal( + parseAndroidAbis('aarch64 aarch64,armv7') + .map((e) => e.abi) + .join(','), + 'aarch64,armv7', +); +assert.throws(() => parseAndroidAbis('riscv'), /Unknown Android ABI/); +assert.equal(entryForAbi('x86_64').gradleAbi, 'x86_64'); +assert.equal(toGithubMatrixInclude(ANDROID_ABI_MATRIX)[0].rust_target, 'aarch64-linux-android'); + +const cli = spawnSync( + process.execPath, + [join(scriptDir, 'android-abi-matrix.mjs'), 'parse', 'aarch64'], + { encoding: 'utf8' }, +); +assert.equal(cli.status, 0); +assert.equal(JSON.parse(cli.stdout)[0].gradle_abi, 'arm64-v8a'); + +// --- collectSplitApks with a minimal zip APK --- +function writeMinimalApk(path, ...abis) { + const python = process.platform === 'win32' ? 'python' : 'python3'; + const result = spawnSync( + python, + [ + '-c', + ` +import sys, zipfile +with zipfile.ZipFile(sys.argv[1], 'w') as apk: + for abi in sys.argv[2:]: + apk.writestr('lib/' + abi + '/libdummy.so', b'so') +`, + path, + ...abis, + ], + { encoding: 'utf8' }, + ); + assert.equal(result.status, 0, result.stderr); +} + +const tmp = mkdtempSync(join(tmpdir(), 'openless-apk-collect-')); +try { + const androidRoot = join(tmp, 'android'); + const outDir = join(tmp, 'out'); + const apkDir = join(androidRoot, 'app', 'build', 'outputs', 'apk', 'release'); + mkdirSync(apkDir, { recursive: true }); + const apk = join(apkDir, 'app-arm64-v8a-release.apk'); + writeMinimalApk(apk, 'arm64-v8a'); + const options = { + mode: 'release', + label: 'test', + expectedGradleAbis: ['arm64-v8a'], + androidRoot, + outDir, + version: '2.0.0-Beta.3+build.20260925', + }; + const { outputs } = collectSplitApks(options); + assert.match( + outputs.arm64_v8a_path.replace(/\\/g, '/'), + /OpenLess_2\.0\.0-Beta\.3\+build\.20260925_arm64-v8a\.apk$/, + ); + assert.equal(outputs.arm64_v8a_arch, 'aarch64'); + writeMinimalApk(apk, 'arm64-v8a', 'unexpected-abi'); + assert.throws(() => collectSplitApks(options), /Unknown ABI/); + writeMinimalApk(apk, 'arm64-v8a', 'x86'); + assert.throws(() => collectSplitApks(options), /expected exactly one ABI/); + writeMinimalApk(apk, 'arm64-v8a'); + writeFileSync(apk, readFileSync(apk).subarray(0, -22)); + assert.throws(() => collectSplitApks(options), /Invalid APK ZIP/); + writeMinimalApk(apk, 'arm64-v8a'); + const corrupt = readFileSync(apk); + corrupt[30 + Buffer.byteLength('lib/arm64-v8a/libdummy.so')] ^= 0xff; + writeFileSync(apk, corrupt); + assert.throws(() => collectSplitApks(options), /Invalid APK ZIP/); + writeMinimalApk(apk, 'x86'); + assert.throws(() => collectSplitApks(options), /Missing split APKs/); + writeMinimalApk(apk, 'arm64-v8a'); + writeMinimalApk(join(apkDir, 'duplicate.apk'), 'arm64-v8a'); + assert.throws(() => collectSplitApks(options), /Duplicate APKs/); +} finally { + rmSync(tmp, { recursive: true, force: true }); +} + +// --- workflow contract (#1103) --- +const workflow = readFileSync(workflowPath, 'utf8'); +assert.match(workflow, /prefix-key:\s*v1-rust-android-1103/); +assert.doesNotMatch(workflow, /Free disk before artifact upload/); +assert.doesNotMatch(workflow, /rm -rf src-tauri\/target/); +assert.doesNotMatch(workflow, /rm -rf ~\/\.cargo\/registry/); +assert.doesNotMatch(workflow, /rm -rf ~\/\.gradle\/caches/); +assert.match(workflow, /abis:/); +assert.match(workflow, /default:\s*['"]aarch64['"]/); +assert.match(workflow, /fast_profile:/); +assert.match(workflow, /strategy:[\s\S]*matrix:/); +assert.match(workflow, /OPENLESS_ANDROID_TARGETS/); +assert.match(workflow, /CARGO_PROFILE_RELEASE_LTO/); +assert.match(workflow, /first ABI may compile twice|android-studio-script/); +assert.match(workflow, /publish-android-release/); +assert.match(workflow, /download-artifact/); +assert.match(workflow, /Rust cache/); + +console.log('android-apk-workflow-contract checks passed'); diff --git a/openless-all/app/scripts/collect-android-split-apks.mjs b/openless-all/app/scripts/collect-android-split-apks.mjs new file mode 100644 index 000000000..5fa8c2f8a --- /dev/null +++ b/openless-all/app/scripts/collect-android-split-apks.mjs @@ -0,0 +1,202 @@ +/** + * Collect split-per-ABI APKs from gen/android outputs. + * + * Env: + * OPENLESS_APK_MODE debug|release + * OPENLESS_APK_LABEL artifact label suffix + * OPENLESS_EXPECTED_GRADLE_ABIS comma-separated Gradle ABI folders (required) + * RUNNER_TEMP output parent (required in CI) + * GITHUB_OUTPUT optional; writes paths when set + */ +import { + copyFileSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, + statSync, + writeFileSync, +} from 'node:fs'; +import { spawnSync } from 'node:child_process'; +import { join, relative } from 'node:path'; +import process from 'node:process'; +import { fileURLToPath } from 'node:url'; +import { entryForGradleAbi } from './android-abi-matrix.mjs'; + +const appRoot = fileURLToPath(new URL('..', import.meta.url)); +const KNOWN_ABIS = new Set(['arm64-v8a', 'armeabi-v7a', 'x86_64', 'x86']); + +function walkApks(root) { + const out = []; + if (!existsSync(root)) return out; + const stack = [root]; + while (stack.length) { + const dir = stack.pop(); + for (const name of readdirSync(dir)) { + const path = join(dir, name); + const st = statSync(path); + if (st.isDirectory()) { + stack.push(path); + } else if (name.endsWith('.apk')) { + out.push(path); + } + } + } + return out.sort(); +} + +function listApkAbis(apkPath) { + // Use the same standard ZIP reader as the original workflow. Scanning for + // central-directory magic accepts truncated archives and bytes inside entries. + const script = ` +import json, sys, zipfile +with zipfile.ZipFile(sys.argv[1]) as apk: + bad = apk.testzip() + if bad is not None: + raise ValueError("CRC failure in " + bad) + print(json.dumps(sorted({name.split('/')[1] for name in apk.namelist() + if name.startswith('lib/') and len(name.split('/')) >= 3}))) +`; + const commands = process.platform === 'win32' ? ['python', 'python3'] : ['python3', 'python']; + for (const command of commands) { + const result = spawnSync(command, ['-c', script, apkPath], { + encoding: 'utf8', + maxBuffer: 1024 * 1024, + }); + if (result.error?.code === 'ENOENT') continue; + if (result.error || result.status !== 0) { + throw new Error(`Invalid APK ZIP ${apkPath}: ${result.error?.message || result.stderr}`); + } + const abis = JSON.parse(result.stdout); + for (const abi of abis) { + if (!KNOWN_ABIS.has(abi)) throw new Error(`Unknown ABI ${abi} in ${apkPath}`); + } + return abis; + } + throw new Error('Python 3 is required to validate APK ZIP contents'); +} + +export function collectSplitApks({ + mode, + label, + expectedGradleAbis, + androidRoot = join(appRoot, 'src-tauri/gen/android'), + outDir, + version, +} = {}) { + if (!mode || !label) { + throw new Error('mode and label are required'); + } + if (!expectedGradleAbis?.length) { + throw new Error('expectedGradleAbis must be a non-empty array'); + } + if (!outDir) { + throw new Error('outDir is required'); + } + if (!version) { + throw new Error('version is required'); + } + + mkdirSync(outDir, { recursive: true }); + const candidates = walkApks(androidRoot).filter((apk) => + apk.replace(/\\/g, '/').includes('/outputs/'), + ); + if (candidates.length === 0) { + const all = walkApks(androidRoot); + const hint = all.length ? all.map((p) => relative(androidRoot, p)).join('\n') : '(none)'; + throw new Error(`No APK found under ${androidRoot}/**/outputs/\nOther APKs:\n${hint}`); + } + + const expected = new Set(expectedGradleAbis); + const found = new Map(); + + for (const apk of candidates) { + const abis = listApkAbis(apk); + if (abis.length !== 1) { + throw new Error( + `${apk} contains ABI directories [${abis.join(', ')}]; expected exactly one ABI per APK`, + ); + } + const abi = abis[0]; + if (!expected.has(abi)) { + // Ignore extras from previous local builds; only enforce expected set. + console.warn(`Skipping unexpected ABI ${abi} from ${apk}`); + continue; + } + if (found.has(abi)) { + throw new Error(`Duplicate APKs for ABI ${abi}: ${found.get(abi)} and ${apk}`); + } + const destName = + mode === 'release' + ? `OpenLess_${version}_${abi}.apk` + : `OpenLess-android-debug-${abi}-${label}.apk`; + const dest = join(outDir, destName); + copyFileSync(apk, dest); + found.set(abi, dest); + console.log(`Collected ${abi}: ${apk} -> ${dest}`); + } + + const missing = [...expected].filter((abi) => !found.has(abi)).sort(); + if (missing.length) { + throw new Error(`Missing split APKs for ABI(s): ${missing.join(', ')}`); + } + + const releaseFiles = [...expected].map((abi) => found.get(abi)); + const outputs = {}; + for (const abi of expected) { + const entry = entryForGradleAbi(abi); + outputs[`${entry.outputKey}_path`] = found.get(abi); + outputs[`${entry.outputKey}_arch`] = entry.abi; + } + outputs.out_dir = outDir; + outputs.release_files = releaseFiles.join('\n'); + // Single-ABI CI jobs consume these stable keys. + if (expected.size === 1) { + const onlyAbi = [...expected][0]; + const entry = entryForGradleAbi(onlyAbi); + outputs.apk_path = found.get(onlyAbi); + outputs.gradle_abi = onlyAbi; + outputs.cli_abi = entry.abi; + } + return { found, outputs, releaseFiles }; +} + +function main() { + const mode = process.env.OPENLESS_APK_MODE; + const label = process.env.OPENLESS_APK_LABEL; + const expectedRaw = process.env.OPENLESS_EXPECTED_GRADLE_ABIS || ''; + const expectedGradleAbis = expectedRaw + .split(/[,\s]+/) + .map((s) => s.trim()) + .filter(Boolean); + const runnerTemp = process.env.RUNNER_TEMP; + if (!runnerTemp) { + throw new Error('RUNNER_TEMP is required'); + } + const version = JSON.parse(readFileSync(join(appRoot, 'package.json'), 'utf8')).version; + const outDir = join(runnerTemp, `openless-android-${mode}-split`); + const { outputs } = collectSplitApks({ + mode, + label, + expectedGradleAbis, + outDir, + version, + }); + + const githubOutput = process.env.GITHUB_OUTPUT; + if (githubOutput) { + const lines = []; + for (const [key, value] of Object.entries(outputs)) { + if (key === 'release_files') { + lines.push(`${key}< releaseSigningConfig); + } else if (/signingConfigs\s*\{/.test(content)) { + content = content.replace( + /signingConfigs\s*\{/, + `signingConfigs {\n ${releaseSigningConfig}`, + ); + } else { content = content.replace(/android\s*\{/, `android {${signingConfigsBlock}`); } @@ -70,10 +77,8 @@ function main() { `buildTypes {\n getByName("release") {\n signingConfig = signingConfigs.getByName("openlessRelease")\n }`, ); } else { - content = content.replace( - /android\s*\{/, - `android {${signingConfigsBlock}\n buildTypes {\n getByName("release") {\n signingConfig = signingConfigs.getByName("openlessRelease")\n }\n }`, - ); + // Create the signing config before looking it up in this later block. + content += `\nandroid {\n buildTypes {\n getByName("release") {\n signingConfig = signingConfigs.getByName("openlessRelease")\n }\n }\n}\n`; } writeFileSync(gradlePath, content); diff --git a/openless-all/app/scripts/configure-android-release-signing.test.mjs b/openless-all/app/scripts/configure-android-release-signing.test.mjs new file mode 100644 index 000000000..83569d991 --- /dev/null +++ b/openless-all/app/scripts/configure-android-release-signing.test.mjs @@ -0,0 +1,71 @@ +import assert from 'node:assert/strict'; +import { + chmodSync, + copyFileSync, + mkdirSync, + mkdtempSync, + readFileSync, + rmSync, + statSync, + writeFileSync, +} from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { spawnSync } from 'node:child_process'; + +const root = mkdtempSync(join(tmpdir(), 'openless-signing-')); +try { + mkdirSync(join(root, 'scripts')); + mkdirSync(join(root, 'src-tauri/gen/android/app'), { recursive: true }); + const script = join(root, 'scripts/configure-android-release-signing.mjs'); + copyFileSync(new URL('./configure-android-release-signing.mjs', import.meta.url), script); + const gradle = join(root, 'src-tauri/gen/android/app/build.gradle.kts'); + const env = { + ...process.env, + ANDROID_KEYSTORE_BASE64: Buffer.from('fixture-keystore').toString('base64'), + ANDROID_KEYSTORE_PASSWORD: 'fixture-store-$"}\\secret', + ANDROID_KEY_ALIAS: 'fixture-alias', + ANDROID_KEY_PASSWORD: 'fixture-key-secret', + }; + for (const template of [ + 'android {\n buildTypes { getByName("release") { isMinifyEnabled = false } }\n}', + 'android {\n namespace = "test"\n}', + 'android {\n signingConfigs { create("debug") {} }\n buildTypes {}\n}', + 'android {\n signingConfigs { create("openlessRelease") { storePassword = "old-}secret" } }\n buildTypes { getByName("release") {} }\n}', + ]) { + writeFileSync(gradle, template); + const keystore = join(root, 'src-tauri/gen/android/openless-release.keystore'); + writeFileSync(keystore, 'old-keystore'); + chmodSync(keystore, 0o644); + const run = () => spawnSync(process.execPath, [script], { env, encoding: 'utf8' }); + const first = run(); + assert.equal(first.status, 0, first.stderr); + const content = readFileSync(gradle, 'utf8'); + for (const name of ['ANDROID_KEYSTORE_PASSWORD', 'ANDROID_KEY_ALIAS', 'ANDROID_KEY_PASSWORD']) { + assert.ok(content.includes(`System.getenv("${name}")`)); + assert.ok(!content.includes(env[name]), `${name} must not be embedded in cacheable source`); + assert.ok(!first.stdout.includes(env[name])); + } + assert.ok(!content.includes('old-}secret')); + assert.ok( + content.indexOf('create("openlessRelease")') < + content.indexOf('signingConfigs.getByName("openlessRelease")'), + ); + if (process.platform !== 'win32') assert.equal(statSync(keystore).mode & 0o777, 0o600); + assert.equal(content.match(/create\("openlessRelease"\)/g)?.length, 1); + assert.equal( + content.match(/signingConfig = signingConfigs.getByName\("openlessRelease"\)/g)?.length, + 1, + ); + const second = run(); + assert.equal(second.status, 0, second.stderr); + assert.equal(readFileSync(gradle, 'utf8'), content); + assert.equal( + readFileSync(join(root, 'src-tauri/gen/android/openless-release.keystore'), 'utf8'), + 'fixture-keystore', + ); + } +} finally { + rmSync(root, { recursive: true, force: true }); +} +console.log('Android release signing keeps credentials out of Gradle source'); diff --git a/openless-all/app/scripts/remote-input-audio-generation.test.mjs b/openless-all/app/scripts/remote-input-audio-generation.test.mjs new file mode 100644 index 000000000..66991dbf6 --- /dev/null +++ b/openless-all/app/scripts/remote-input-audio-generation.test.mjs @@ -0,0 +1,331 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import test from 'node:test'; +import vm from 'node:vm'; + +// Exercise the production lifecycle functions, with only browser/transport effects +// replaced. Deferred promises and explicit timers make late callbacks deterministic. +const source = readFileSync(new URL('../assets/remote-input/app.js', import.meta.url), 'utf8'); +const names = [ + 'withTimeout', + 'startRecording', + 'stopRecording', + 'cancelRecording', + 'ensureAudio', + 'buildCaptureGraph', + 'clearPendingPcm', + 'resetRemoteStreamState', + 'teardownAudioCapture', + 'teardownAudio', + 'resetAudioContext', +]; +const lifecycle = names + .map((name) => { + const start = source.indexOf(` function ${name}(`); + const end = source.indexOf('\n }', start); + assert.ok(start >= 0 && end > start, `production function ${name} must exist`); + return source.slice(start, end + '\n }'.length); + }) + .join('\n'); +const settle = () => new Promise((resolve) => setImmediate(resolve)); +const deferred = () => { + let resolve; + let reject; + const promise = new Promise((yes, no) => { + resolve = yes; + reject = no; + }); + return { promise, resolve, reject }; +}; +const makeStream = () => { + const track = { + stopped: false, + stop() { + this.stopped = true; + }, + }; + return { track, getTracks: () => [track] }; +}; +const makeNode = () => ({ + disconnected: false, + port: {}, + connect() {}, + disconnect() { + this.disconnected = true; + }, +}); + +function harness({ worklet = false, suspended = false } = {}) { + const calls = { mic: [], resume: [], worklet: [], nodes: [], sent: [], statuses: [], pcm: [] }; + const timers = new Map(); + let timerId = 0; + let scriptBuilds = 0; + class AudioContext { + constructor() { + this.state = suspended ? 'suspended' : 'running'; + this.sampleRate = 48000; + this.audioWorklet = worklet ? {} : undefined; + } + resume() { + const d = deferred(); + calls.resume.push(d); + return d.promise; + } + suspend() { + this.state = 'suspended'; + return Promise.resolve(); + } + close() { + this.state = 'closed'; + return Promise.resolve(); + } + createMediaStreamSource() { + return makeNode(); + } + } + const state = { + recording: false, + startSent: false, + awaitingResult: false, + ws: { readyState: 1 }, + audioGen: 0, + audioCtx: null, + mediaStream: null, + sourceNode: null, + workletNode: null, + scriptNode: null, + usingWorklet: false, + remoteSessionId: '', + remoteSequence: 0, + finishAfterStarted: '', + pendingPcm: [], + pendingPcmBytes: 0, + resampleState: { phase: 0, last: 0, hasLast: false }, + wakeLockHint: null, + TARGET_SR: 16000, + MIC_PREP_TIMEOUT_MS: 10000, + L: { preparingMic: 'mic', preparingBackend: 'backend', micTimeout: 'timeout', ready: 'ready' }, + window: { AudioContext }, + navigator: { + mediaDevices: { + getUserMedia() { + const d = deferred(); + calls.mic.push(d); + return d.promise; + }, + }, + }, + AudioWorkletNode: class { + constructor() { + const n = makeNode(); + calls.nodes.push(n); + return n; + } + }, + setTimeout(fn) { + const id = ++timerId; + timers.set(id, fn); + return id; + }, + clearTimeout(id) { + timers.delete(id); + }, + loadWorklet() { + const d = deferred(); + calls.worklet.push(d); + return d.promise; + }, + buildScriptProcessor() { + scriptBuilds++; + state.scriptNode = makeNode(); + }, + wsSendJSON(message) { + calls.sent.push(message.type); + }, + sendAudio(pcm) { + calls.pcm.push(pcm); + }, + setStatus(message) { + calls.statuses.push(message); + }, + micErrorText(error) { + return error.name; + }, + interruptRecording() { + throw new Error('unexpected interruption'); + }, + }; + for (const name of [ + 'clearRecoveryTimer', + 'acquireWakeLock', + 'releaseWakeLock', + 'clearReadyTimer', + 'clearWorkTimeout', + 'updateRecordBtnUI', + 'clearResult', + 'detachHoldEnd', + 'setLevel', + 'enterTranscribing', + 'armWorkTimeout', + 'saveRecoverySession', + ]) + state[name] = () => {}; + vm.runInNewContext(lifecycle, state); + return { + state, + calls, + timers, + get scriptBuilds() { + return scriptBuilds; + }, + }; +} + +async function startPending(h) { + h.state.startRecording(); + await settle(); +} +async function resolveMic(h, index) { + const stream = makeStream(); + h.calls.mic[index].resolve(stream); + await settle(); + return stream; +} +function assertActive(h, stream, node) { + assert.equal(h.state.recording, true, 'old callback must not stop the new recording'); + assert.equal(h.state.startSent, true); + assert.equal(h.state.mediaStream, stream, 'old stream must not replace the new microphone'); + assert.equal(h.state.sourceNode, node); + assert.equal(node.disconnected, false); + assert.equal(stream.track.stopped, false); + assert.deepEqual(h.calls.sent, ['start'], 'only the current attempt may send start'); +} + +for (const end of ['stopRecording', 'cancelRecording']) { + test(`late microphone success after ${end} cannot replace a retry`, async () => { + const h = harness(); + await startPending(h); + h.state[end](); + await startPending(h); + const current = await resolveMic(h, 1); + const node = h.state.sourceNode; + const stale = await resolveMic(h, 0); + assert.equal(stale.track.stopped, true, 'cancelled microphone request must release its tracks'); + assertActive(h, current, node); + }); +} + +test('late microphone rejection cannot stop a retry', async () => { + const h = harness(); + await startPending(h); + h.state.stopRecording(); + await startPending(h); + const current = await resolveMic(h, 1); + const node = h.state.sourceNode; + h.calls.mic[0].reject(Object.assign(new Error('old request'), { name: 'NotAllowedError' })); + await settle(); + assertActive(h, current, node); + assert.equal(h.calls.statuses.at(-1), 'backend'); +}); + +test('old preparation timeout cannot close the current AudioContext', async () => { + const h = harness(); + await startPending(h); + const oldTimeout = [...h.timers.values()][0]; + h.state.stopRecording(); + await startPending(h); + const current = await resolveMic(h, 1); + const node = h.state.sourceNode; + const context = h.state.audioCtx; + oldTimeout(); + await settle(); + assertActive(h, current, node); + assert.equal(h.state.audioCtx, context); + assert.equal(context.state, 'running'); +}); + +test('late resume cannot start another microphone request after cancellation', async () => { + const h = harness({ suspended: true }); + await startPending(h); + h.state.stopRecording(); + h.calls.resume[0].resolve(); + await settle(); + assert.equal(h.calls.mic.length, 0, 'cancelled resume must not request microphone permission'); + assert.deepEqual(h.calls.sent, []); +}); + +test('late resume cannot borrow a new recording and send a second start', async () => { + const h = harness({ suspended: true }); + await startPending(h); + h.state.stopRecording(); + await startPending(h); + h.state.audioCtx.state = 'running'; + h.calls.resume[1].resolve(); + await settle(); + const current = await resolveMic(h, 0); + const node = h.state.sourceNode; + h.calls.resume[0].resolve(); + await settle(); + assertActive(h, current, node); +}); + +for (const outcome of ['resolve', 'reject']) { + test(`late worklet ${outcome} cannot rebuild the current capture graph`, async () => { + const h = harness({ worklet: true }); + await startPending(h); + const current = await resolveMic(h, 0); + h.state.stopRecording(); + await startPending(h); + h.calls.worklet[1].resolve(); + await settle(); + const node = h.state.sourceNode; + const currentWorklet = h.state.workletNode; + h.calls.worklet[0][outcome](new Error('old module')); + await settle(); + assertActive(h, current, node); + assert.equal(h.state.workletNode, currentWorklet); + assert.equal(h.calls.nodes.length, 1); + assert.equal(h.scriptBuilds, 0, 'stale worklet failure must not start fallback capture'); + assert.equal(h.state.usingWorklet, true); + }); +} + +test('current worklet failure still falls back to ScriptProcessor', async () => { + const h = harness({ worklet: true }); + await startPending(h); + await resolveMic(h, 0); + h.calls.worklet[0].reject(new Error('worklet unavailable')); + await settle(); + assert.equal(h.scriptBuilds, 1); + assert.equal(h.state.recording, true); + assert.deepEqual(h.calls.sent, ['start']); +}); + +test('current timeout still resets the context and releases a late microphone', async () => { + const h = harness(); + await startPending(h); + [...h.timers.values()][0](); + await settle(); + assert.equal(h.state.recording, false); + assert.equal(h.state.audioCtx, null); + assert.equal(h.calls.statuses.at(-1), 'timeout'); + const stale = await resolveMic(h, 0); + assert.equal(stale.track.stopped, true); + assert.deepEqual(h.calls.sent, []); +}); + +test('normal stop still pairs start/stop and reuses the microphone on the next attempt', async () => { + const h = harness(); + await startPending(h); + const stream = await resolveMic(h, 0); + h.state.remoteSessionId = 'active-session'; + h.state.stopRecording(); + assert.deepEqual(h.calls.sent, ['start', 'stop']); + assert.equal(h.state.awaitingResult, true); + assert.equal(stream.track.stopped, false); + h.state.awaitingResult = false; // Backend completed the preceding recording. + await startPending(h); + assert.equal(h.calls.mic.length, 1); + assert.equal(h.state.mediaStream, stream); + assert.deepEqual(h.calls.sent, ['start', 'stop', 'start']); +}); diff --git a/openless-all/app/scripts/run-android-tauri-build.mjs b/openless-all/app/scripts/run-android-tauri-build.mjs new file mode 100644 index 000000000..d3c918dde --- /dev/null +++ b/openless-all/app/scripts/run-android-tauri-build.mjs @@ -0,0 +1,56 @@ +/** + * Run `tauri android build` with ABI targets from OPENLESS_ANDROID_TARGETS + * (space/comma-separated CLI names: aarch64 armv7 i686 x86_64). + * + * Usage: + * node scripts/run-android-tauri-build.mjs --debug + * node scripts/run-android-tauri-build.mjs --release + */ +import { spawnSync } from 'node:child_process'; +import process from 'node:process'; +import { parseAndroidAbis, ANDROID_ABI_MATRIX } from './android-abi-matrix.mjs'; + +function resolveTargets() { + const raw = process.env.OPENLESS_ANDROID_TARGETS ?? ''; + if (!raw.trim()) { + return ANDROID_ABI_MATRIX.map((e) => e.abi); + } + return parseAndroidAbis(raw, { + defaultAbis: ANDROID_ABI_MATRIX.map((e) => e.abi), + }).map((e) => e.abi); +} + +function main() { + const mode = process.argv[2]; + if (mode !== '--debug' && mode !== '--release') { + console.error('Usage: node scripts/run-android-tauri-build.mjs --debug|--release'); + process.exit(1); + } + const targets = resolveTargets(); + const args = ['tauri', 'android', 'build', '--apk', '--split-per-abi', '--target', ...targets]; + if (mode === '--debug') { + args.push('--debug'); + } + + console.log(`[android-build] targets=${targets.join(',')} mode=${mode.slice(2)}`); + // #1103: Tauri CLI runs an initial cargo build for the first target to + // "initialize plugins", then Gradle invokes `android-studio-script` per ABI + // (including the first). Expect two cargo passes for the first ABI; do not + // bypass the Gradle/native path. + console.log( + '[android-build] note: first ABI may compile twice (Tauri plugin init + android-studio-script)', + ); + + const bin = process.platform === 'win32' ? 'npx.cmd' : 'npx'; + const result = spawnSync(bin, args, { + stdio: 'inherit', + env: process.env, + shell: process.platform === 'win32', + }); + if (result.error) { + throw result.error; + } + process.exit(result.status ?? 1); +} + +main(); diff --git a/openless-all/app/src-tauri/Cargo.lock b/openless-all/app/src-tauri/Cargo.lock index abe7e2a2b..af8588ee4 100644 --- a/openless-all/app/src-tauri/Cargo.lock +++ b/openless-all/app/src-tauri/Cargo.lock @@ -4257,7 +4257,7 @@ dependencies = [ [[package]] name = "openless" -version = "2.0.0-Beta.2+build.20260924" +version = "2.0.0-Beta.3+build.20260925" dependencies = [ "anyhow", "arboard", diff --git a/openless-all/app/src-tauri/Cargo.toml b/openless-all/app/src-tauri/Cargo.toml index cb0a768ac..8e20bc80c 100644 --- a/openless-all/app/src-tauri/Cargo.toml +++ b/openless-all/app/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "openless" -version = "2.0.0-Beta.2+build.20260924" +version = "2.0.0-Beta.3+build.20260925" license = "AGPL-3.0-only" description = "OpenLess — local voice input that types where your cursor is" authors = ["OpenLess"] diff --git a/openless-all/app/src-tauri/src/coordinator.rs b/openless-all/app/src-tauri/src/coordinator.rs index d560501a1..42246a5ad 100644 --- a/openless-all/app/src-tauri/src/coordinator.rs +++ b/openless-all/app/src-tauri/src/coordinator.rs @@ -1099,14 +1099,15 @@ impl Coordinator { if crate::shortcut_binding::binding_requires_side_aware_hook(&binding) { take_combo_hotkey_on_main_thread(&self.inner); self.inner.side_aware_combo.lock().take(); - let (tx, rx) = mpsc::channel::(); - match crate::side_aware_combo::SideAwareComboMonitor::start(binding, tx) { + let (tx, rx) = mpsc::channel::(); + let combo_tx = spawn_combo_abort_bridge(&self.inner, handle_trigger_combined); + match crate::side_aware_combo::SideAwareComboMonitor::start(binding, tx, combo_tx) { Ok(monitor) => { *self.inner.side_aware_combo.lock() = Some(monitor); let bridge_inner = Arc::clone(&self.inner); std::thread::Builder::new() .name("openless-side-combo-bridge".into()) - .spawn(move || combo_hotkey_bridge_loop(bridge_inner, rx)) + .spawn(move || hotkey_bridge_loop(bridge_inner, rx)) .ok(); log::info!("[coord] side-aware combo hotkey listener installed (via update)"); } diff --git a/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs b/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs index 7a1464453..d2d0b39f4 100644 --- a/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs +++ b/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs @@ -1292,14 +1292,15 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { if inner.side_aware_combo.lock().is_some() { return; } - let (tx, rx) = mpsc::channel::(); - match crate::side_aware_combo::SideAwareComboMonitor::start(binding, tx) { + let (tx, rx) = mpsc::channel::(); + let combo_tx = spawn_combo_abort_bridge(&inner, handle_trigger_combined); + match crate::side_aware_combo::SideAwareComboMonitor::start(binding, tx, combo_tx) { Ok(monitor) => { *inner.side_aware_combo.lock() = Some(monitor); let inner_clone = Arc::clone(&inner); std::thread::Builder::new() .name("openless-side-combo-bridge".into()) - .spawn(move || combo_hotkey_bridge_loop(inner_clone, rx)) + .spawn(move || hotkey_bridge_loop(inner_clone, rx)) .ok(); return; } diff --git a/openless-all/app/src-tauri/src/coordinator/native_dictation_key.rs b/openless-all/app/src-tauri/src/coordinator/native_dictation_key.rs index f9176f218..df8102544 100644 --- a/openless-all/app/src-tauri/src/coordinator/native_dictation_key.rs +++ b/openless-all/app/src-tauri/src/coordinator/native_dictation_key.rs @@ -47,14 +47,17 @@ impl Coordinator { .update_binding(binding) .map_err(|error| error.to_string())?; } else { - let (tx, rx) = mpsc::channel(); - let monitor = - crate::side_aware_combo::SideAwareComboMonitor::start(binding, tx) - .map_err(|error| error.to_string())?; + let (tx, rx) = mpsc::channel::(); + let combo_tx = + spawn_combo_abort_bridge(&inner, handle_trigger_combined); + let monitor = crate::side_aware_combo::SideAwareComboMonitor::start( + binding, tx, combo_tx, + ) + .map_err(|error| error.to_string())?; let bridge_inner = Arc::clone(&inner); std::thread::Builder::new() .name("openless-side-combo-bridge".into()) - .spawn(move || combo_hotkey_bridge_loop(bridge_inner, rx)) + .spawn(move || hotkey_bridge_loop(bridge_inner, rx)) .map_err(|error| error.to_string())?; *slot = Some(monitor); } diff --git a/openless-all/app/src-tauri/src/hotkey.rs b/openless-all/app/src-tauri/src/hotkey.rs index 8b57097b1..b10661e90 100644 --- a/openless-all/app/src-tauri/src/hotkey.rs +++ b/openless-all/app/src-tauri/src/hotkey.rs @@ -931,6 +931,7 @@ mod platform { fn handle_key_down(ctx: &CallbackContext, event: CgEventRef) { let keycode = unsafe { CGEventGetIntegerValueField(event, KEYBOARD_EVENT_KEYCODE) }; + crate::side_aware_combo::handle_companion_key_down(); if keycode == ESC_KEYCODE { note_companion_key_down(ctx); send_cancel_or_log(&ctx.cancel_tx); @@ -1570,6 +1571,7 @@ mod platform { } let pressed = matches!(message, WM_KEYDOWN | WM_SYSKEYDOWN); if vk_code == VK_ESCAPE && (message == WM_KEYDOWN || message == WM_SYSKEYDOWN) { + crate::side_aware_combo::handle_companion_key_down(); note_companion_key_down(ctx); send_cancel_or_log(&ctx.cancel_tx); // 会话激活期间独占消费 Esc(返回 true → LRESULT(1) 吞掉),宿主应用收不到, @@ -1580,6 +1582,7 @@ mod platform { crate::side_aware_combo::platform::dispatch_vk(vk_code, pressed); if pressed && !is_modifier_vk(vk_code) { + crate::side_aware_combo::handle_companion_key_down(); note_companion_key_down(ctx); } @@ -2153,16 +2156,17 @@ mod platform { #[test] fn windows_shift_side_combo_receives_pressed_via_dispatch_keyboard_event() { - use crate::combo_hotkey::ComboHotkeyEvent; use crate::side_aware_combo::SideAwareComboMonitor; use crate::types::ShortcutBinding; let (combo_tx, combo_rx) = mpsc::channel(); + let (abort_tx, _abort_rx) = mpsc::channel(); let binding = ShortcutBinding { primary: "D".into(), modifiers: vec!["shift-left".into()], }; - let monitor = SideAwareComboMonitor::start(binding, combo_tx).expect("start monitor"); + let monitor = + SideAwareComboMonitor::start(binding, combo_tx, abort_tx).expect("start monitor"); let shared = shared(HotkeyTrigger::Custom); let (ctx, hotkey_rx) = callback_context(shared); @@ -2172,7 +2176,7 @@ mod platform { assert!(matches!( combo_rx.recv().unwrap(), - ComboHotkeyEvent::Pressed { .. } + HotkeyEvent::Pressed { .. } )); assert!(hotkey_rx .try_iter() @@ -2180,6 +2184,54 @@ mod platform { drop(monitor); } + + #[test] + fn windows_modifier_chord_uses_existing_companion_abort_semantics() { + use crate::side_aware_combo::SideAwareComboMonitor; + use crate::types::ShortcutBinding; + + let (tx, rx) = mpsc::channel(); + let (abort_tx, abort_rx) = mpsc::channel(); + let binding = ShortcutBinding { + primary: "ModifierChord".into(), + modifiers: vec!["ctrl-left".into(), "cmd-left".into()], + }; + let monitor = + SideAwareComboMonitor::start(binding, tx, abort_tx).expect("start monitor"); + + let shared = shared(HotkeyTrigger::Custom); + let (ctx, _main_rx) = callback_context(shared); + + dispatch_keyboard_event(&ctx, VK_LCONTROL, WM_KEYDOWN); + assert!(rx.try_recv().is_err()); + dispatch_keyboard_event(&ctx, VK_LWIN, WM_KEYDOWN); + let press_id = match rx.recv().unwrap() { + HotkeyEvent::Pressed { press_id, .. } => press_id, + other => panic!("expected modifier chord Pressed, got {other:?}"), + }; + + dispatch_keyboard_event(&ctx, 0x44, WM_KEYDOWN); + assert!(matches!( + abort_rx.recv().unwrap(), + HotkeyCombinedEdge { + press_id: combined_id, + .. + } if combined_id == press_id + )); + dispatch_keyboard_event(&ctx, 0x44, WM_KEYDOWN); + assert!(abort_rx.try_recv().is_err()); + + dispatch_keyboard_event(&ctx, VK_LWIN, WM_KEYUP); + assert!(matches!( + rx.recv().unwrap(), + HotkeyEvent::Released { + press_id: released_id, + .. + } if released_id == press_id + )); + + drop(monitor); + } } } diff --git a/openless-all/app/src-tauri/src/mobile_stubs/side_aware_combo.rs b/openless-all/app/src-tauri/src/mobile_stubs/side_aware_combo.rs index 48cafa583..070c19abb 100644 --- a/openless-all/app/src-tauri/src/mobile_stubs/side_aware_combo.rs +++ b/openless-all/app/src-tauri/src/mobile_stubs/side_aware_combo.rs @@ -2,7 +2,8 @@ use std::sync::mpsc::Sender; -use crate::combo_hotkey::{ComboHotkeyError, ComboHotkeyEvent}; +use crate::combo_hotkey::ComboHotkeyError; +use crate::hotkey::{HotkeyCombinedEdge, HotkeyEvent}; use crate::types::ShortcutBinding; #[derive(Debug, Clone, Copy)] @@ -22,7 +23,8 @@ pub struct SideAwareComboMonitor; impl SideAwareComboMonitor { pub fn start( _binding: ShortcutBinding, - _tx: Sender, + _tx: Sender, + _combo_tx: Sender, ) -> Result { Err(ComboHotkeyError::RegisterFailed( "Side-specific combo hotkeys are not available on mobile".into(), @@ -34,6 +36,8 @@ pub fn handle_side_modifier(_side: SideModifier, _pressed: bool) {} pub fn handle_primary_key(_primary: &str, _pressed: bool) {} +pub fn handle_companion_key_down() {} + #[cfg(target_os = "macos")] pub mod platform { pub fn dispatch_keycode(_keycode: i64, _flags_changed: bool, _flags: u64, _pressed: bool) {} diff --git a/openless-all/app/src-tauri/src/side_aware_combo.rs b/openless-all/app/src-tauri/src/side_aware_combo.rs index ab335b454..b4790e263 100644 --- a/openless-all/app/src-tauri/src/side_aware_combo.rs +++ b/openless-all/app/src-tauri/src/side_aware_combo.rs @@ -1,7 +1,7 @@ //! Side-specific combo hotkey matching (e.g. Left Cmd + D). //! //! `global-hotkey` cannot distinguish left/right modifiers. This module maintains -//! physical modifier state and matches combos registered via [`SideAwareComboMonitor`]. +//! physical modifier state and matches side-aware bindings registered via [`SideAwareComboMonitor`]. use std::sync::mpsc::Sender; use std::sync::{OnceLock, RwLock}; @@ -9,14 +9,16 @@ use std::time::Instant; use parking_lot::Mutex; -use crate::combo_hotkey::ComboHotkeyEvent; +use crate::hotkey::{HotkeyCombinedEdge, HotkeyEvent}; use crate::shortcut_binding::{is_side_specific_modifier_tag, normalize_side_modifier_tag}; use crate::types::ShortcutBinding; +use openless_core::is_modifier_chord_binding; static ACTIVE_MONITOR: OnceLock>> = OnceLock::new(); struct ActiveSideCombo { - tx: Sender, + tx: Sender, + combo_tx: Sender, state: Mutex, } @@ -36,7 +38,8 @@ struct ModifierSideState { struct SideAwareComboState { binding: ShortcutBinding, modifiers: ModifierSideState, - combo_active: bool, + active_press_id: Option, + companion_seen: bool, } impl SideAwareComboState { @@ -44,7 +47,8 @@ impl SideAwareComboState { Self { binding, modifiers: ModifierSideState::default(), - combo_active: false, + active_press_id: None, + companion_seen: false, } } @@ -106,51 +110,74 @@ impl SideAwareComboState { self.expected_modifier_tags() == self.pressed_modifier_tags() } - fn on_primary(&mut self, primary: &str, pressed: bool) -> Option { + fn activate(&mut self) -> Option { + if self.active_press_id.is_some() { + return None; + } + let press_id = crate::hotkey::next_press_id(); + self.active_press_id = Some(press_id); + self.companion_seen = false; + Some(HotkeyEvent::Pressed { + at: Instant::now(), + press_id, + }) + } + + fn release_active(&mut self) -> Option { + let press_id = self.active_press_id.take()?; + self.companion_seen = false; + Some(HotkeyEvent::Released { + at: Instant::now(), + press_id, + }) + } + + fn on_modifier_press(&mut self, side: SideModifier) -> Option { + self.set_side(side, true); + if is_modifier_chord_binding(&self.binding) && self.modifiers_match() { + return self.activate(); + } + None + } + + fn on_primary(&mut self, primary: &str, pressed: bool) -> Option { + if is_modifier_chord_binding(&self.binding) { + return None; + } if !primary_eq(&self.binding.primary, primary) { return None; } if pressed { if self.modifiers_match() { - // `modifiers_match()` is the authoritative activation gate. If - // `combo_active` is still true here, the previous `Released` was - // dropped by the OS: we must NOT emit a second `Pressed` (that - // would break the pairing invariant), so treat the flag as - // already reflecting an active combo and swallow this edge. - if !self.combo_active { - self.combo_active = true; - return Some(ComboHotkeyEvent::Pressed { at: Instant::now() }); - } - return None; + return self.activate(); } - // Modifiers no longer match — this is the single authoritative reset - // condition. If `combo_active` is stuck true (a modifier release was - // dropped so no `Released` was ever emitted), self-heal by emitting - // the terminal `Released` now so the recording latch cannot stick. - if self.combo_active { - self.combo_active = false; - return Some(ComboHotkeyEvent::Released { at: Instant::now() }); + if self.active_press_id.is_some() { + return self.release_active(); } return None; } - // Primary key up is the absolute termination signal for the combo. - if self.combo_active { - self.combo_active = false; - return Some(ComboHotkeyEvent::Released { at: Instant::now() }); - } - None + self.release_active() } - fn on_modifier_release(&mut self, side: SideModifier) -> Option { + fn on_modifier_release(&mut self, side: SideModifier) -> Option { self.set_side(side, false); - // Modifiers no longer matching is the authoritative reset condition: - // once the required side-modifier set is broken, the combo is over. - if self.combo_active && !self.modifiers_match() { - self.combo_active = false; - return Some(ComboHotkeyEvent::Released { at: Instant::now() }); + if self.active_press_id.is_some() && !self.modifiers_match() { + return self.release_active(); } None } + + fn on_companion_key_down(&mut self) -> Option { + if !is_modifier_chord_binding(&self.binding) || self.companion_seen { + return None; + } + let press_id = self.active_press_id?; + self.companion_seen = true; + Some(HotkeyCombinedEdge { + at: Instant::now(), + press_id, + }) + } } #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -170,7 +197,8 @@ pub struct SideAwareComboMonitor; impl SideAwareComboMonitor { pub fn start( binding: ShortcutBinding, - tx: Sender, + tx: Sender, + combo_tx: Sender, ) -> Result { // Linux has no side-aware platform dispatch (no CGEventTap / WH_KEYBOARD_LL // equivalent wired here). Accepting the binding would leave the user with a @@ -178,7 +206,7 @@ impl SideAwareComboMonitor { // so the caller can surface an actionable error instead. #[cfg(target_os = "linux")] { - let _ = (&binding, &tx); + let _ = (&binding, &tx, &combo_tx); return Err(crate::combo_hotkey::ComboHotkeyError::UnsupportedModifier( "侧向修饰键组合键在 Linux 暂不支持".into(), )); @@ -192,6 +220,7 @@ impl SideAwareComboMonitor { let mut guard = slot.write().expect("side combo monitor lock poisoned"); *guard = Some(ActiveSideCombo { tx, + combo_tx, state: Mutex::new(SideAwareComboState::new(binding)), }); Ok(Self) @@ -213,6 +242,17 @@ fn validate_side_binding( "binding is not side-specific".into(), )); } + if is_modifier_chord_binding(binding) { + return openless_core::validate_shortcut_binding(binding).map_err(|error| match error { + openless_core::ShortcutBindingError::UnsupportedModifier(value) => { + crate::combo_hotkey::ComboHotkeyError::UnsupportedModifier(value) + } + openless_core::ShortcutBindingError::UnsupportedKey(value) => { + crate::combo_hotkey::ComboHotkeyError::UnsupportedKey(value) + } + }); + } + crate::shortcut_binding::parse_primary(&binding.primary) .map_err(|e| crate::combo_hotkey::ComboHotkeyError::UnsupportedKey(e.to_string()))?; @@ -261,18 +301,23 @@ where guard.as_ref().map(f) } -fn send_event(tx: &Sender, evt: ComboHotkeyEvent) { +fn send_event(tx: &Sender, evt: HotkeyEvent) { if let Err(err) = tx.send(evt) { log::warn!("[side-aware-combo] event send failed: {err}"); } } +fn send_combo_abort(tx: &Sender, edge: HotkeyCombinedEdge) { + if let Err(err) = tx.send(edge) { + log::warn!("[side-aware-combo] abort send failed: {err}"); + } +} + pub fn handle_side_modifier(side: SideModifier, pressed: bool) { if let Some(evt) = with_active(|active| { let mut state = active.state.lock(); if pressed { - state.set_side(side, true); - None + state.on_modifier_press(side) } else { state.on_modifier_release(side) } @@ -294,6 +339,12 @@ pub fn handle_primary_key(primary: &str, pressed: bool) { } } +pub fn handle_companion_key_down() { + if let Some(edge) = with_active(|active| active.state.lock().on_companion_key_down()).flatten() { + with_active(|active| send_combo_abort(&active.combo_tx, edge)); + } +} + fn primary_eq(expected: &str, actual: &str) -> bool { expected.trim().eq_ignore_ascii_case(actual.trim()) } @@ -594,7 +645,8 @@ mod tests { modifiers: vec!["ctrl-right".into()], }; let (tx, rx) = mpsc::channel(); - let monitor = SideAwareComboMonitor::start(binding.clone(), tx).unwrap(); + let (combo_tx, _combo_rx) = mpsc::channel(); + let monitor = SideAwareComboMonitor::start(binding.clone(), tx, combo_tx).unwrap(); let press_and_release = |primary: &str| { handle_side_modifier(SideModifier::CtrlRight, true); handle_primary_key(primary, true); @@ -602,11 +654,11 @@ mod tests { handle_side_modifier(SideModifier::CtrlRight, false); assert!(matches!( rx.try_recv(), - Ok(ComboHotkeyEvent::Pressed { .. }) + Ok(HotkeyEvent::Pressed { .. }) )); assert!(matches!( rx.try_recv(), - Ok(ComboHotkeyEvent::Released { .. }) + Ok(HotkeyEvent::Released { .. }) )); assert!(rx.try_recv().is_err()); }; @@ -686,7 +738,7 @@ mod tests { state.set_side(SideModifier::CmdLeft, true); assert!(state.modifiers_match()); let evt = state.on_primary("D", true); - assert!(matches!(evt, Some(ComboHotkeyEvent::Pressed { .. }))); + assert!(matches!(evt, Some(HotkeyEvent::Pressed { .. }))); } #[test] @@ -702,7 +754,7 @@ mod tests { assert!(state.modifiers_match()); assert!(matches!( state.on_primary("D", true), - Some(ComboHotkeyEvent::Pressed { .. }) + Some(HotkeyEvent::Pressed { .. }) )); } @@ -741,7 +793,7 @@ mod tests { assert!(state.modifiers_match()); assert!(matches!( state.on_primary("D", true), - Some(ComboHotkeyEvent::Pressed { .. }) + Some(HotkeyEvent::Pressed { .. }) )); } @@ -757,6 +809,63 @@ mod tests { assert_eq!(state.on_primary("D", true), None); } + #[test] + fn modifier_chord_activates_on_final_modifier_and_releases_with_same_generation() { + let mut state = SideAwareComboState::new(ShortcutBinding { + primary: "ModifierChord".into(), + modifiers: vec!["ctrl-left".into(), "cmd-left".into()], + }); + + assert_eq!(state.on_modifier_press(SideModifier::CtrlLeft), None); + let press_id = match state.on_modifier_press(SideModifier::CmdLeft) { + Some(HotkeyEvent::Pressed { press_id, .. }) => press_id, + other => panic!("expected modifier chord Pressed, got {other:?}"), + }; + assert_ne!(press_id, 0); + assert_eq!(state.on_modifier_press(SideModifier::CmdLeft), None); + + assert!(matches!( + state.on_modifier_release(SideModifier::CtrlLeft), + Some(HotkeyEvent::Released { press_id: released_id, .. }) if released_id == press_id + )); + assert!(state.active_press_id.is_none()); + } + + #[test] + fn modifier_chord_companion_aborts_once_but_still_pairs_release() { + let mut state = SideAwareComboState::new(ShortcutBinding { + primary: "ModifierChord".into(), + modifiers: vec!["ctrl-left".into(), "cmd-left".into()], + }); + state.on_modifier_press(SideModifier::CtrlLeft); + let press_id = match state.on_modifier_press(SideModifier::CmdLeft) { + Some(HotkeyEvent::Pressed { press_id, .. }) => press_id, + other => panic!("expected modifier chord Pressed, got {other:?}"), + }; + + assert!(matches!( + state.on_companion_key_down(), + Some(HotkeyCombinedEdge { press_id: combined_id, .. }) if combined_id == press_id + )); + assert_eq!(state.on_companion_key_down(), None); + assert!(matches!( + state.on_modifier_release(SideModifier::CmdLeft), + Some(HotkeyEvent::Released { press_id: released_id, .. }) if released_id == press_id + )); + } + + #[test] + fn extra_modifier_does_not_activate_modifier_chord_when_it_is_released() { + let mut state = SideAwareComboState::new(ShortcutBinding { + primary: "ModifierChord".into(), + modifiers: vec!["ctrl-left".into(), "cmd-left".into()], + }); + assert_eq!(state.on_modifier_press(SideModifier::CtrlLeft), None); + assert_eq!(state.on_modifier_press(SideModifier::ShiftLeft), None); + assert_eq!(state.on_modifier_press(SideModifier::CmdLeft), None); + assert_eq!(state.on_modifier_release(SideModifier::ShiftLeft), None); + assert!(state.active_press_id.is_none()); + } #[cfg(target_os = "macos")] #[test] fn macos_side_keycodes_are_distinct() { @@ -782,16 +891,16 @@ mod tests { state.set_side(SideModifier::CmdLeft, true); assert!(matches!( state.on_primary("D", true), - Some(ComboHotkeyEvent::Pressed { .. }) + Some(HotkeyEvent::Pressed { .. }) )); // Primary key up terminates the combo with exactly one Released. assert!(matches!( state.on_primary("D", false), - Some(ComboHotkeyEvent::Released { .. }) + Some(HotkeyEvent::Released { .. }) )); // No trailing events; a second key-up must not emit anything. assert_eq!(state.on_primary("D", false), None); - assert!(!state.combo_active); + assert!(state.active_press_id.is_none()); } #[test] @@ -800,50 +909,50 @@ mod tests { state.set_side(SideModifier::CmdLeft, true); assert!(matches!( state.on_primary("D", true), - Some(ComboHotkeyEvent::Pressed { .. }) + Some(HotkeyEvent::Pressed { .. }) )); // Modifier lifts while primary is still down -> combo terminates once. assert!(matches!( state.on_modifier_release(SideModifier::CmdLeft), - Some(ComboHotkeyEvent::Released { .. }) + Some(HotkeyEvent::Released { .. }) )); - assert!(!state.combo_active); + assert!(state.active_press_id.is_none()); // A now-orphaned primary key-up must NOT emit a second Released. assert_eq!(state.on_primary("D", false), None); } #[test] fn dropped_modifier_release_is_recovered_on_primary_up() { - // Simulate the OS dropping the modifier-up event: combo_active stays true + // Simulate the OS dropping the modifier-up event: the active press stays latched // and modifiers still "match" from the state's perspective. The primary // key-up (absolute termination) must still emit the paired Released. let mut state = cmd_left_d_state(); state.set_side(SideModifier::CmdLeft, true); assert!(matches!( state.on_primary("D", true), - Some(ComboHotkeyEvent::Pressed { .. }) + Some(HotkeyEvent::Pressed { .. }) )); // Modifier physically released but the release event never arrived, so the // side flag is still set here. Primary up is the fallback terminator. assert!(matches!( state.on_primary("D", false), - Some(ComboHotkeyEvent::Released { .. }) + Some(HotkeyEvent::Released { .. }) )); - assert!(!state.combo_active); + assert!(state.active_press_id.is_none()); } #[test] fn stale_combo_active_reset_when_modifiers_stop_matching() { - // Reproduce a stuck latch: a prior Released was lost so combo_active is true, + // Reproduce a stuck latch: a prior Released was lost so an active press is still latched, // yet the required modifier is no longer held (modifiers_match() == false). // The next primary-down must self-heal by emitting the terminal Released // (NOT swallow it, and NOT emit a second Pressed) so recording can't stick. let mut state = cmd_left_d_state(); - state.combo_active = true; // stale flag from a dropped Released + state.active_press_id = Some(crate::hotkey::next_press_id()); // stale flag from a dropped Released assert!(!state.modifiers_match()); // cmd-left is not held let evt = state.on_primary("D", true); - assert!(matches!(evt, Some(ComboHotkeyEvent::Released { .. }))); - assert!(!state.combo_active); + assert!(matches!(evt, Some(HotkeyEvent::Released { .. }))); + assert!(state.active_press_id.is_none()); } #[test] @@ -852,26 +961,26 @@ mod tests { // must be able to fire a fresh Pressed. Guards against the combo becoming // permanently unrepeatable (the historical #545/#468 stuck-latch class). let mut state = cmd_left_d_state(); - state.combo_active = true; // leftover from a dropped Released + state.active_press_id = Some(crate::hotkey::next_press_id()); // leftover from a dropped Released // Releasing the required side-modifier breaks the match, so the stale latch // self-heals by emitting the terminal Released here (pairing the Pressed whose - // Released was dropped). Either way combo_active must end up cleared. + // Released was dropped). Either way the active press must end up cleared. assert!(matches!( state.on_modifier_release(SideModifier::CmdLeft), - Some(ComboHotkeyEvent::Released { .. }) + Some(HotkeyEvent::Released { .. }) )); - assert!(!state.combo_active); + assert!(state.active_press_id.is_none()); // Fresh, clean press cycle now behaves normally. state.set_side(SideModifier::CmdLeft, true); assert!(matches!( state.on_primary("D", true), - Some(ComboHotkeyEvent::Pressed { .. }) + Some(HotkeyEvent::Pressed { .. }) )); assert!(matches!( state.on_primary("D", false), - Some(ComboHotkeyEvent::Released { .. }) + Some(HotkeyEvent::Released { .. }) )); } @@ -882,13 +991,13 @@ mod tests { // must NOT emit a second Pressed — that would break the pairing invariant. let mut state = cmd_left_d_state(); state.set_side(SideModifier::CmdLeft, true); - state.combo_active = true; // pretend previous Released was dropped + state.active_press_id = Some(crate::hotkey::next_press_id()); // pretend previous Released was dropped assert!(state.modifiers_match()); assert_eq!(state.on_primary("D", true), None); // The real terminator (primary up) still yields exactly one Released. assert!(matches!( state.on_primary("D", false), - Some(ComboHotkeyEvent::Released { .. }) + Some(HotkeyEvent::Released { .. }) )); } diff --git a/openless-all/app/src-tauri/tauri.conf.json b/openless-all/app/src-tauri/tauri.conf.json index a4d8652c2..9ae2c098c 100644 --- a/openless-all/app/src-tauri/tauri.conf.json +++ b/openless-all/app/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "OpenLess", - "version": "2.0.0-Beta.2+build.20260924", + "version": "2.0.0-Beta.3+build.20260925", "identifier": "com.openless.app", "build": { "beforeDevCommand": "npm run dev", diff --git a/openless-all/app/src/components/ShortcutRecorder.tsx b/openless-all/app/src/components/ShortcutRecorder.tsx index f5f368625..ac7ab4358 100644 --- a/openless-all/app/src/components/ShortcutRecorder.tsx +++ b/openless-all/app/src/components/ShortcutRecorder.tsx @@ -2,7 +2,12 @@ import { useEffect, useRef, useState, type CSSProperties, type KeyboardEvent } f import { AnimatePresence, motion } from 'framer-motion'; import { ChevronDown } from 'lucide-react'; import { useTranslation } from 'react-i18next'; -import { formatComboParts, modifiersFromPressedCodes } from '../lib/hotkey'; +import { + chordModifiersFromPressedCodes, + formatComboParts, + MODIFIER_CHORD_PRIMARY, + modifiersFromPressedCodes, +} from '../lib/hotkey'; import { functionKeyPrimaryFromEvent } from '../lib/hotkeyRecorder'; import { KbdGroup } from './Kbd'; import { setShortcutRecordingActive, validateShortcutBinding } from '../lib/ipc'; @@ -194,6 +199,20 @@ export function ShortcutRecorder({ if (comboOnly) { return; } + if (sideSpecificModifiers) { + const modifiers = chordModifiersFromPressedCodes(pressedCodes.current); + if (modifiers.length >= 2) { + clearPendingModifier(); + const binding = { primary: MODIFIER_CHORD_PRIMARY, modifiers }; + pendingModifier.current = binding; + pendingTimer.current = window.setTimeout(() => { + if (pendingModifier.current === binding) { + void finish(binding); + } + }, 650); + return; + } + } const primary = modifierPrimaryFromCode(e.code, e.key); if (!primary || pendingModifier.current?.primary === primary) return; clearPendingModifier(); @@ -222,6 +241,12 @@ export function ShortcutRecorder({ e.stopPropagation(); pressedCodes.current.delete(e.code); if (comboOnly) return; + if (pendingModifier.current?.primary === MODIFIER_CHORD_PRIMARY) { + const binding = pendingModifier.current; + clearPendingModifier(); + void finish(binding); + return; + } const primary = modifierPrimaryFromCode(e.code, e.key); if (primary && pendingModifier.current?.primary === primary) { const binding = pendingModifier.current; diff --git a/openless-all/app/src/i18n/de.ts b/openless-all/app/src/i18n/de.ts index 50583f25c..f095de625 100644 --- a/openless-all/app/src/i18n/de.ts +++ b/openless-all/app/src/i18n/de.ts @@ -1354,6 +1354,7 @@ export const de: typeof zhCN = { mimo: 'Xiaomi MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter (kostenlose Modelle)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: 'Alibaba Cloud Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/en.ts b/openless-all/app/src/i18n/en.ts index e604bb9e7..2a9919e82 100644 --- a/openless-all/app/src/i18n/en.ts +++ b/openless-all/app/src/i18n/en.ts @@ -1315,6 +1315,7 @@ export const en: typeof zhCN = { mimo: 'Xiaomi MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter (free models)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: 'Alibaba Cloud Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/es.ts b/openless-all/app/src/i18n/es.ts index 6275308e2..eea8bd8b3 100644 --- a/openless-all/app/src/i18n/es.ts +++ b/openless-all/app/src/i18n/es.ts @@ -1346,6 +1346,7 @@ export const es: typeof zhCN = { mimo: 'Xiaomi MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter (modelos gratuitos)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: 'Alibaba Cloud Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/fr.ts b/openless-all/app/src/i18n/fr.ts index 3e831549e..0030543a5 100644 --- a/openless-all/app/src/i18n/fr.ts +++ b/openless-all/app/src/i18n/fr.ts @@ -1363,6 +1363,7 @@ export const fr: typeof zhCN = { mimo: 'Xiaomi MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter (modèles gratuits)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: 'Alibaba Cloud Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/ja.ts b/openless-all/app/src/i18n/ja.ts index 480cefcf2..7dece6e8f 100644 --- a/openless-all/app/src/i18n/ja.ts +++ b/openless-all/app/src/i18n/ja.ts @@ -1303,6 +1303,7 @@ export const ja: typeof zhCN = { mimo: 'Xiaomi MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter(無料モデル)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: 'Alibaba Cloud Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/ko.ts b/openless-all/app/src/i18n/ko.ts index a80e3da3d..f91eab8bb 100644 --- a/openless-all/app/src/i18n/ko.ts +++ b/openless-all/app/src/i18n/ko.ts @@ -1295,6 +1295,7 @@ export const ko: typeof zhCN = { mimo: 'Xiaomi MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter(무료 모델)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: 'Alibaba Cloud Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/zh-CN.ts b/openless-all/app/src/i18n/zh-CN.ts index f90dff385..bd06ec819 100644 --- a/openless-all/app/src/i18n/zh-CN.ts +++ b/openless-all/app/src/i18n/zh-CN.ts @@ -1253,6 +1253,7 @@ export const zhCN = { mimo: '小米 MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter(免费模型)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: '阿里云 Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/i18n/zh-TW.ts b/openless-all/app/src/i18n/zh-TW.ts index 023ef50ef..b90190748 100644 --- a/openless-all/app/src/i18n/zh-TW.ts +++ b/openless-all/app/src/i18n/zh-TW.ts @@ -1254,6 +1254,7 @@ export const zhTW: typeof zhCN = { mimo: '小米 MiMo', cometapi: 'CometAPI', openrouterFree: 'OpenRouter(免費模型)', + requesty: 'Requesty', orcarouter: 'OrcaRouter', alibabaCoding: '阿里雲 Coding Plan', codingPlanX: 'CodingPlanX', diff --git a/openless-all/app/src/lib/hotkey.ts b/openless-all/app/src/lib/hotkey.ts index 94b8780fb..dedc5744f 100644 --- a/openless-all/app/src/lib/hotkey.ts +++ b/openless-all/app/src/lib/hotkey.ts @@ -8,6 +8,8 @@ import type { ShortcutBinding, } from './types'; +export const MODIFIER_CHORD_PRIMARY = 'ModifierChord'; + export function defaultQaShortcut(): ShortcutBinding { return { primary: ';', @@ -269,7 +271,9 @@ export function formatComboParts( } } - parts.push(formatPrimary(binding.primary)); + if (binding.primary !== MODIFIER_CHORD_PRIMARY) { + parts.push(formatPrimary(binding.primary)); + } return parts; } @@ -304,6 +308,22 @@ export function sideModifiersFromPressedCodes(codes: Iterable): string[] return modifiers; } +/** A modifier-only chord preserves every physical side, including Ctrl+Ctrl. */ +export function chordModifiersFromPressedCodes(codes: Iterable): string[] { + const set = codes instanceof Set ? codes : new Set(codes); + const pairs = [ + ['MetaLeft', 'cmd-left'], + ['MetaRight', 'cmd-right'], + ['ControlLeft', 'ctrl-left'], + ['ControlRight', 'ctrl-right'], + ['AltLeft', 'alt-left'], + ['AltRight', 'alt-right'], + ['ShiftLeft', 'shift-left'], + ['ShiftRight', 'shift-right'], + ]; + return pairs.filter(([code]) => set.has(code)).map(([, modifier]) => modifier); +} + /** Build generic modifier tags (cmd/super/ctrl/alt/shift) from pressed key codes. */ export function genericModifiersFromPressedCodes(codes: Iterable): string[] { const set = codes instanceof Set ? codes : new Set(codes); diff --git a/openless-all/app/src/lib/hotkeySideModifiers.test.ts b/openless-all/app/src/lib/hotkeySideModifiers.test.ts index 9cd898938..5749a2339 100644 --- a/openless-all/app/src/lib/hotkeySideModifiers.test.ts +++ b/openless-all/app/src/lib/hotkeySideModifiers.test.ts @@ -1,5 +1,8 @@ import { + chordModifiersFromPressedCodes, + formatComboParts, genericModifiersFromPressedCodes, + MODIFIER_CHORD_PRIMARY, modifiersFromPressedCodes, shortcutFromLegacyTrigger, sideModifiersFromPressedCodes, @@ -62,6 +65,15 @@ assertDeepEqual( 'default recording on non-mac uses super', ); +assertDeepEqual( + formatComboParts({ + primary: MODIFIER_CHORD_PRIMARY, + modifiers: ['ctrl-left', 'cmd-left'], + }), + ['左 Win', '左 Ctrl'], + 'modifier chord display contains only its physical modifiers', +); + assertDeepEqual( sideModifiersFromPressedCodes(new Set(['MetaRight', 'KeyD'])), ['cmd-right'], @@ -74,4 +86,22 @@ assertDeepEqual( 'left cmd wins when both meta keys are tracked', ); +for (const [left, right, modifier] of [ + ['MetaLeft', 'MetaRight', 'cmd'], + ['ControlLeft', 'ControlRight', 'ctrl'], + ['AltLeft', 'AltRight', 'alt'], + ['ShiftLeft', 'ShiftRight', 'shift'], +]) { + assertDeepEqual( + chordModifiersFromPressedCodes(new Set([right, left])), + [`${modifier}-left`, `${modifier}-right`], + 'modifier-only recording keeps both physical sides independent of press order', + ); +} +assertDeepEqual( + chordModifiersFromPressedCodes(new Set(['MetaLeft', 'ControlLeft', 'KeyD'])), + ['cmd-left', 'ctrl-left'], + 'modifier chord ignores ordinary key codes', +); + console.log('hotkeySideModifiers.test.ts passed'); diff --git a/openless-all/app/src/lib/ipc/mock-provider-descriptors.json b/openless-all/app/src/lib/ipc/mock-provider-descriptors.json index cbc02a6ee..c63c7bf6e 100644 --- a/openless-all/app/src/lib/ipc/mock-provider-descriptors.json +++ b/openless-all/app/src/lib/ipc/mock-provider-descriptors.json @@ -168,6 +168,22 @@ ], "validationProbe": "llm_text" }, + { + "authRequirement": "api_key_unless_custom_endpoint", + "defaultEndpoint": "https://router.requesty.ai/v1", + "defaultModel": "openai/gpt-4o-mini", + "defaultRequestFormat": "chat_completions", + "kind": "llm", + "labelKey": "requesty", + "providerType": "requesty", + "staticModels": [], + "supportedRequestFormats": [ + "chat_completions", + "responses", + "messages" + ], + "validationProbe": "llm_text" + }, { "authRequirement": "api_key_unless_custom_endpoint", "defaultEndpoint": "https://api.orcarouter.ai/v1", diff --git a/openless-all/app/src/lib/ipc/provider-descriptors.generated.json b/openless-all/app/src/lib/ipc/provider-descriptors.generated.json index 8cef02b82..cab5adbbe 100644 --- a/openless-all/app/src/lib/ipc/provider-descriptors.generated.json +++ b/openless-all/app/src/lib/ipc/provider-descriptors.generated.json @@ -500,6 +500,22 @@ ], "validationProbe": "llm_text" }, + { + "authRequirement": "api_key_unless_custom_endpoint", + "defaultEndpoint": "https://router.requesty.ai/v1", + "defaultModel": "openai/gpt-4o-mini", + "defaultRequestFormat": "chat_completions", + "kind": "llm", + "labelKey": "requesty", + "providerType": "requesty", + "staticModels": [], + "supportedRequestFormats": [ + "chat_completions", + "responses", + "messages" + ], + "validationProbe": "llm_text" + }, { "authRequirement": "api_key_unless_custom_endpoint", "defaultEndpoint": "https://api.orcarouter.ai/v1", diff --git a/openless-all/app/src/pages/Overview.tsx b/openless-all/app/src/pages/Overview.tsx index b43c244e5..cca505caa 100644 --- a/openless-all/app/src/pages/Overview.tsx +++ b/openless-all/app/src/pages/Overview.tsx @@ -59,6 +59,7 @@ const LLM_NAME_KEY_BY_ID: Record = { mimo: 'mimo', cometapi: 'cometapi', openrouterFree: 'openrouterFree', + requesty: 'requesty', orcarouter: 'orcarouter', alibabaCoding: 'alibabaCoding', codingPlanX: 'codingPlanX', diff --git a/openless-all/app/src/pages/settings/ProvidersSection.tsx b/openless-all/app/src/pages/settings/ProvidersSection.tsx index 77319b712..14ac7ad86 100644 --- a/openless-all/app/src/pages/settings/ProvidersSection.tsx +++ b/openless-all/app/src/pages/settings/ProvidersSection.tsx @@ -139,6 +139,7 @@ export const LLM_LABELS = [ ['mimo', 'mimo'], ['cometapi', 'cometapi'], ['openrouterFree', 'openrouterFree'], + ['requesty', 'requesty'], ['orcarouter', 'orcarouter'], ['alibabaCoding', 'alibabaCoding'], ['codingPlanX', 'codingPlanX'], From 6ebf1f1ad173f6a7c55f289903e6fb76f48aee87 Mon Sep 17 00:00:00 2001 From: sim Date: Sat, 26 Sep 2026 00:22:05 +0800 Subject: [PATCH 05/10] =?UTF-8?q?fix(omni):=20=E4=B8=BA=E7=99=BE=E7=82=BC?= =?UTF-8?q?=E5=A4=9A=E6=A8=A1=E6=80=81=E9=9F=B3=E9=A2=91=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20data=20URL=20=E5=B9=B6=E9=99=90=E5=AE=9A=E4=B8=BB=E6=9C=BA?= =?UTF-8?q?=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/local-builds/2026-09-25-beta3.md | 5 ++ .../app/crates/openless-core/src/omni.rs | 87 ++++++++++++++++++- 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/docs/local-builds/2026-09-25-beta3.md b/docs/local-builds/2026-09-25-beta3.md index c01335b4c..9c6608ffd 100644 --- a/docs/local-builds/2026-09-25-beta3.md +++ b/docs/local-builds/2026-09-25-beta3.md @@ -11,6 +11,7 @@ | #1102 | 纯修饰键组合听写快捷键 | 纳入 Core 仲裁窗口,防止普通组合键启动录音;录制时保留左右同类修饰键 | | #1104 | 可选 Requesty 润色渠道 | 保留三种请求格式、八语种和描述符一致性;排除 Linux locale 文件 | | #1110 | 远程输入停止/取消后隔离过期音频准备回调 | 保留麦克风复用,验证迟到回调和超时 | +| 本地 Omni 修复 | 百炼/DashScope 官方与专属端点的音频改用 WAV data URL | 标准 URL 解析仅匹配真实主机名;其他兼容端点保留裸 Base64,避免用户名、查询参数或片段误匹配 | 所有新增 Linux egui 文件和 Linux 发布工作流均与 Beta 2 相同,本次不构建或发布 Linux 安装包。Linux 既有独立 CI 失败不通过修改或绕过测试处理。 @@ -25,3 +26,7 @@ 整合树已通过前端生产构建及 93 个测试入口、Core 1041 项测试(1 项既有忽略),macOS Host 493 项及独立后端 12 项通过,并新增纯修饰键仲裁、左右键录制、APK 损坏/异常 ABI 和签名配置缓存回归。完整云端 CI、桌面/Android 构建与签名资产验收以发布记录为准。 本次继承 Beta 2 的平台设备验收范围;自动化测试和构建不代表新增 Windows、Intel Mac 或 Android 真机交互证据。性能比较同时记录基线、缓存状态、完整 job 与 Rust/Gradle 构建步骤耗时,见工作区 `outputs/beta3/2026-09-25/` 中的运行记录与发布验收结果。 + +### Omni 本地候选补充验证 + +2026-09-26 纳入额外的 Omni 音频格式修复,版本和构建号保持不变。补丁经过两轮独立审查;整合后的 Core 1045 项、macOS Host 493 项测试通过,Core 全目标严格 Clippy、单文件格式和差异检查通过。设置中的渠道验证仍只发送文本,实际音频链路需要用候选包完成一次真实录音验证,不能用文本验证成功代替。 diff --git a/openless-all/app/crates/openless-core/src/omni.rs b/openless-all/app/crates/openless-core/src/omni.rs index 1f39c07a3..3f08aa460 100644 --- a/openless-all/app/crates/openless-core/src/omni.rs +++ b/openless-all/app/crates/openless-core/src/omni.rs @@ -40,6 +40,17 @@ impl OmniConfig { self.provider_id.trim() == OMNI_GEMINI_PROVIDER_ID || self.base_url.contains("generativelanguage.googleapis.com") } + + /// 百炼/DashScope 兼容端点把 `input_audio.data` 按 URL/data-URL 解析,裸 Base64 + /// 会被 400 拒绝("The provided URL does not appear to be valid")。与 + /// `asr::dashscope_multimodal` 转写通道同款,Base64 须带 data-URL 前缀; + /// 沿用 polish 的主机名关键词,但只检查 URL 解析后的真实 host。 + fn audio_requires_data_url(&self) -> bool { + reqwest::Url::parse(self.base_url.trim()) + .ok() + .and_then(|url| url.host_str().map(str::to_ascii_lowercase)) + .is_some_and(|host| host.contains("dashscope") || host.contains("aliyuncs")) + } } /// 一次 Omni 调用的构建时快照(provider id + model),落历史归因用。 @@ -103,7 +114,13 @@ impl OpenAICompatibleOmni { ) -> Vec { let user_content = match wav_bytes { Some(wav) => { - let data = base64::engine::general_purpose::STANDARD.encode(wav); + let encoded = base64::engine::general_purpose::STANDARD.encode(wav); + // 百炼系端点要求 data-URL 前缀;OpenAI 官方等其他兼容端点保持裸 Base64。 + let data = if self.config.audio_requires_data_url() { + format!("data:audio/wav;base64,{encoded}") + } else { + encoded + }; let mut parts = vec![json!({ "type": "input_audio", "input_audio": { "data": data, "format": "wav" }, @@ -458,6 +475,74 @@ mod tests { assert_eq!(parts[1]["text"], "翻译成中文"); } + #[test] + fn build_messages_wraps_audio_as_data_url_for_dashscope() { + let mut dashscope = config(); + dashscope.base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1".into(); + let provider = OpenAICompatibleOmni::new(dashscope); + let messages = provider.build_messages("system-prompt", "", Some(&[1u8, 2, 3, 4])); + let parts = messages[1]["content"].as_array().expect("audio parts"); + let data = parts[0]["input_audio"]["data"] + .as_str() + .expect("audio data"); + let payload = data + .strip_prefix("data:audio/wav;base64,") + .expect("data-url prefix for DashScope"); + let decoded = base64::engine::general_purpose::STANDARD + .decode(payload) + .expect("valid base64"); + assert_eq!(decoded, vec![1u8, 2, 3, 4]); + } + + #[test] + fn build_messages_wraps_audio_as_data_url_for_bailian_dedicated_endpoint() { + let mut maas = config(); + maas.base_url = + "https://llm-example.cn-beijing.maas.aliyuncs.com/compatible-mode/v1".into(); + let provider = OpenAICompatibleOmni::new(maas); + let messages = provider.build_messages("system-prompt", "", Some(&[1u8, 2, 3, 4])); + let parts = messages[1]["content"].as_array().expect("audio parts"); + assert!(parts[0]["input_audio"]["data"] + .as_str() + .expect("audio data") + .starts_with("data:audio/wav;base64,")); + } + + #[test] + fn omni_audio_data_url_matches_dashscope_hosts_only() { + assert!(!config().audio_requires_data_url()); + let mut dashscope = config(); + dashscope.base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1".into(); + assert!(dashscope.audio_requires_data_url()); + let mut maas = config(); + maas.base_url = "https://LLM-EXAMPLE.cn-beijing.maas.aliyuncs.com/v1".into(); + assert!(maas.audio_requires_data_url()); + // host 之外的关键字(路径里碰巧含 dashscope)不触发。 + let mut path_only = config(); + path_only.base_url = "https://example.com/proxy/dashscope/v1".into(); + assert!(!path_only.audio_requires_data_url()); + let mut empty = config(); + empty.base_url = String::new(); + assert!(!empty.audio_requires_data_url()); + } + + #[test] + fn omni_audio_data_url_ignores_non_host_url_components() { + for base_url in [ + "https://dashscope@api.example.com/v1", + "https://user:aliyuncs@api.example.com/v1", + "https://api.example.com?provider=dashscope", + "https://api.example.com#aliyuncs", + ] { + let mut other = config(); + other.base_url = base_url.into(); + assert!(!other.audio_requires_data_url(), "{base_url}"); + let provider = OpenAICompatibleOmni::new(other); + let messages = provider.build_messages("system", "", Some(&[1u8, 2, 3, 4])); + assert_eq!(messages[1]["content"][0]["input_audio"]["data"], "AQIDBA=="); + } + } + #[test] fn omni_body_has_stream_model_and_temperature() { let provider = OpenAICompatibleOmni::new(config()); From 9731a7f0826467040560e1348fb11dbe0da7bae3 Mon Sep 17 00:00:00 2001 From: sim Date: Sat, 26 Sep 2026 11:09:42 +0800 Subject: [PATCH 06/10] feat(beta3): integrate encrypted sync and macOS experience updates --- docs/architecture.md | 5 +- docs/cloud-sync.md | 2 +- docs/encrypted-cloud-sync.md | 42 + docs/index.md | 2 + docs/structure.md | 3 +- openless-all/app/Cargo.lock | 118 +- openless-all/app/contract/backend-2.0.json | 6 + .../app/crates/openless-core/Cargo.toml | 5 + .../app/crates/openless-core/src/activity.rs | 310 ++- .../app/crates/openless-core/src/api.rs | 579 +++- .../crates/openless-core/src/cloud_sync.rs | 104 + .../src/cloud_sync_e2ee/adapter.rs | 248 ++ .../openless-core/src/cloud_sync_e2ee/api.rs | 231 ++ .../openless-core/src/cloud_sync_e2ee/dto.rs | 222 ++ .../src/cloud_sync_e2ee/local.rs | 465 ++++ .../openless-core/src/cloud_sync_e2ee/mod.rs | 102 + .../src/cloud_sync_e2ee/service.rs | 2122 +++++++++++++++ .../src/cloud_sync_e2ee/setup_prompt.rs | 61 + .../src/cloud_sync_e2ee/setup_prompt_tests.rs | 280 ++ .../src/cloud_sync_e2ee/tests.rs | 1310 +++++++++ .../src/cloud_sync_e2ee_documents/export.rs | 385 +++ .../src/cloud_sync_e2ee_documents/merge.rs | 416 +++ .../src/cloud_sync_e2ee_documents/mod.rs | 29 + .../src/cloud_sync_e2ee_documents/registry.rs | 929 +++++++ .../src/cloud_sync_e2ee_documents/restore.rs | 527 ++++ .../restore_tests.rs | 457 ++++ .../src/cloud_sync_e2ee_documents/tests.rs | 604 +++++ .../src/cloud_sync_e2ee_documents/types.rs | 430 +++ .../src/cloud_sync_e2ee_documents/validate.rs | 812 ++++++ .../src/cloud_sync_e2ee_protocol/crypto.rs | 393 +++ .../cloud_sync_e2ee_protocol/crypto/tests.rs | 341 +++ .../cloud_sync_e2ee_protocol/fixtures/v1.json | 129 + .../src/cloud_sync_e2ee_protocol/mod.rs | 50 + .../src/cloud_sync_e2ee_protocol/transport.rs | 2365 +++++++++++++++++ .../src/cloud_sync_e2ee_protocol/types.rs | 1261 +++++++++ .../cloud_sync_e2ee_protocol/types/tests.rs | 175 ++ .../src/cloud_sync_e2ee_store/capture.rs | 240 ++ .../src/cloud_sync_e2ee_store/extensions.rs | 50 + .../src/cloud_sync_e2ee_store/gate.rs | 1168 ++++++++ .../src/cloud_sync_e2ee_store/journal.rs | 136 + .../src/cloud_sync_e2ee_store/mod.rs | 600 +++++ .../src/cloud_sync_e2ee_store/native.rs | 477 ++++ .../src/cloud_sync_e2ee_store/state.rs | 58 + .../src/cloud_sync_e2ee_store/tests.rs | 1659 ++++++++++++ .../app/crates/openless-core/src/config.rs | 11 + .../crates/openless-core/src/correction.rs | 123 +- .../crates/openless-core/src/credentials.rs | 191 +- .../app/crates/openless-core/src/domains.rs | 62 + .../app/crates/openless-core/src/events.rs | 3 + .../app/crates/openless-core/src/history.rs | 139 +- .../crates/openless-core/src/less_computer.rs | 16 +- .../app/crates/openless-core/src/lib.rs | 4 + .../crates/openless-core/src/llm_protocol.rs | 40 +- .../crates/openless-core/src/marketplace.rs | 49 + .../app/crates/openless-core/src/omni.rs | 2 +- .../crates/openless-core/src/persistence.rs | 238 +- .../app/crates/openless-core/src/polish.rs | 98 +- .../crates/openless-core/src/preferences.rs | 222 +- .../crates/openless-core/src/qa_service.rs | 360 ++- .../openless-core/src/selection_service.rs | 64 +- .../src/selection_voice_service.rs | 72 +- .../openless-core/src/style_pack_store.rs | 637 +++-- .../crates/openless-core/src/vocabulary.rs | 283 +- .../crates/openless-core/src/voice_session.rs | 349 ++- openless-all/app/scripts/build-mac.sh | 25 +- .../encrypted-sync-setup-prompt.test.mjs | 242 ++ .../scripts/encrypted-sync-ui-bridge.test.mjs | 312 +++ .../less-computer-panel-runtime.test.mjs | 514 ++++ .../app/scripts/macos-dmg-bin/hdiutil | 3 + openless-all/app/scripts/macos-dmg-layout.py | 184 ++ .../app/scripts/macos-dmg-requirements.txt | 3 + .../app/scripts/qa-panel-runtime.test.mjs | 673 +++++ .../scripts/selection-intent-reopen.test.mjs | 76 + .../shared-backend-wire-contract.test.mjs | 2 +- openless-all/app/src-tauri/Cargo.lock | 119 +- openless-all/app/src-tauri/Cargo.toml | 1 + openless-all/app/src-tauri/dmg/README.md | 11 + .../src-tauri/dmg/installer-background.tiff | Bin 0 -> 2026374 bytes .../src-tauri/dmg/installer-background@2x.png | Bin 0 -> 1905273 bytes openless-all/app/src-tauri/dmg/layout.json | 5 + .../src-tauri/src/commands/cloud_sync_e2ee.rs | 246 ++ .../app/src-tauri/src/commands/credentials.rs | 133 +- .../src-tauri/src/commands/github_oauth.rs | 6 +- .../app/src-tauri/src/commands/mod.rs | 2 + openless-all/app/src-tauri/src/commands/qa.rs | 34 +- openless-all/app/src-tauri/src/coordinator.rs | 365 ++- .../src-tauri/src/coordinator/hotkey_loops.rs | 113 +- .../src/coordinator/restore_runtime.rs | 350 +++ .../app/src-tauri/src/core_adapters.rs | 530 +++- .../app/src-tauri/src/host_document/macos.rs | 319 ++- .../app/src-tauri/src/host_document/mod.rs | 2 +- openless-all/app/src-tauri/src/lib.rs | 335 +-- .../src-tauri/src/macos_streaming_input.rs | 626 +++++ .../src/persistence/android_credentials.rs | 119 + .../src-tauri/src/persistence/credentials.rs | 2210 +++++++++++++-- openless-all/app/src-tauri/src/selection.rs | 6 + .../app/src-tauri/src/tauri_events.rs | 31 +- .../app/src-tauri/tauri.macos-mlx.conf.json | 7 + .../app/src/components/AutoUpdate.tsx | 8 +- .../src/components/CloudSyncSetupPrompt.tsx | 214 ++ .../app/src/components/FloatingShell.tsx | 35 +- .../app/src/components/Onboarding.tsx | 8 +- .../app/src/components/SettingsModal.tsx | 11 +- .../app/src/components/chat/AgentBuddy.tsx | 84 + .../app/src/components/chat/VoiceWaveform.tsx | 39 + openless-all/app/src/components/chat/chat.css | 157 +- openless-all/app/src/components/ui/Modal.tsx | 12 +- .../src/components/ui/ToolWindowHeader.tsx | 50 + openless-all/app/src/i18n/de.ts | 228 +- openless-all/app/src/i18n/en.ts | 222 +- openless-all/app/src/i18n/es.ts | 226 +- openless-all/app/src/i18n/fr.ts | 231 +- openless-all/app/src/i18n/index.ts | 2 + openless-all/app/src/i18n/ja.ts | 224 +- openless-all/app/src/i18n/ko.ts | 224 +- openless-all/app/src/i18n/zh-CN.ts | 210 +- openless-all/app/src/i18n/zh-TW.ts | 193 ++ .../app/src/lib/encryptedSyncUiBridge.ts | 203 ++ openless-all/app/src/lib/fontScale.ts | 3 +- .../lib/ipc/cloud-sync-e2ee.browser.test.ts | 48 + .../app/src/lib/ipc/cloud-sync-e2ee.test.ts | 142 + .../app/src/lib/ipc/cloud-sync-e2ee.ts | 243 ++ openless-all/app/src/lib/ipc/index.ts | 2 + openless-all/app/src/lib/ipc/qa.ts | 18 +- openless-all/app/src/main.tsx | 7 +- .../app/src/pages/LessComputerPanel.tsx | 1080 +++++--- .../app/src/pages/LocalAsr/local-asr.css | 8 +- openless-all/app/src/pages/QaPanel.tsx | 1101 ++++---- .../app/src/pages/SelectionPolishPreview.tsx | 142 +- .../src/pages/SelectionVoiceIntentPicker.tsx | 156 +- openless-all/app/src/pages/Style.tsx | 6 +- openless-all/app/src/pages/Vocab.tsx | 8 +- .../app/src/pages/less-computer-panel.css | 1081 ++++++++ openless-all/app/src/pages/qa-panel.css | 596 +++++ .../pages/settings/CloudSyncSection.test.ts | 475 ++++ .../src/pages/settings/CloudSyncSection.tsx | 1254 +++++++-- openless-all/app/src/styles/overlays.css | 329 +++ 137 files changed, 37149 insertions(+), 2606 deletions(-) create mode 100644 docs/encrypted-cloud-sync.md create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/adapter.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/api.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/dto.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/local.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/mod.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/service.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt_tests.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee/tests.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/export.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/merge.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/mod.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/registry.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore_tests.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/tests.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/types.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/validate.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto/tests.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/fixtures/v1.json create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/mod.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/transport.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types/tests.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/capture.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/extensions.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/gate.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/journal.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/mod.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/native.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/state.rs create mode 100644 openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/tests.rs create mode 100644 openless-all/app/scripts/encrypted-sync-setup-prompt.test.mjs create mode 100644 openless-all/app/scripts/encrypted-sync-ui-bridge.test.mjs create mode 100644 openless-all/app/scripts/less-computer-panel-runtime.test.mjs create mode 100755 openless-all/app/scripts/macos-dmg-bin/hdiutil create mode 100644 openless-all/app/scripts/macos-dmg-layout.py create mode 100644 openless-all/app/scripts/macos-dmg-requirements.txt create mode 100644 openless-all/app/scripts/qa-panel-runtime.test.mjs create mode 100644 openless-all/app/scripts/selection-intent-reopen.test.mjs create mode 100644 openless-all/app/src-tauri/dmg/README.md create mode 100644 openless-all/app/src-tauri/dmg/installer-background.tiff create mode 100644 openless-all/app/src-tauri/dmg/installer-background@2x.png create mode 100644 openless-all/app/src-tauri/dmg/layout.json create mode 100644 openless-all/app/src-tauri/src/commands/cloud_sync_e2ee.rs create mode 100644 openless-all/app/src-tauri/src/coordinator/restore_runtime.rs create mode 100644 openless-all/app/src-tauri/src/macos_streaming_input.rs create mode 100644 openless-all/app/src/components/CloudSyncSetupPrompt.tsx create mode 100644 openless-all/app/src/components/chat/AgentBuddy.tsx create mode 100644 openless-all/app/src/components/chat/VoiceWaveform.tsx create mode 100644 openless-all/app/src/components/ui/ToolWindowHeader.tsx create mode 100644 openless-all/app/src/lib/encryptedSyncUiBridge.ts create mode 100644 openless-all/app/src/lib/ipc/cloud-sync-e2ee.browser.test.ts create mode 100644 openless-all/app/src/lib/ipc/cloud-sync-e2ee.test.ts create mode 100644 openless-all/app/src/lib/ipc/cloud-sync-e2ee.ts create mode 100644 openless-all/app/src/pages/less-computer-panel.css create mode 100644 openless-all/app/src/pages/qa-panel.css create mode 100644 openless-all/app/src/pages/settings/CloudSyncSection.test.ts create mode 100644 openless-all/app/src/styles/overlays.css diff --git a/docs/architecture.md b/docs/architecture.md index 55c6947b8..190e46ba5 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -71,7 +71,7 @@ Tauri 在 `src-tauri/src/coordinator.rs` 构造 Core,`core_adapters.rs` 组装 Siri、Classic、Typeless 三种胶囊共用 Core 的 `CapsuleStyle`,窗口尺寸与点击范围在保存偏好时同步。胶囊按显示器工作区底部定位,避开未自动隐藏的 Dock/任务栏;可见期间重新检查工作区。带正文的浮窗使用不透明底色,聊天面板另叠加细噪点纹理,圆角外部仍保留透明区域。 -思考动画覆盖转写、润色和原生文字写入,输入完成后才收尾。macOS 流式键盘输入在可读取 AX 光标的控件上等待原控件光标到达本批文字末尾,再完成写入和恢复输入源;仅读选区范围,不读正文。不可读、提交型 Return 或等待超过 10 秒时回到按键发送完成语义,本次会话停止继续探测该控件。目标应用的实际输入表现仍需设备验收。 +思考动画覆盖转写、润色和原生文字写入,输入完成后才收尾。macOS 流式键盘输入由会话内串行 worker 维护原控件和累计 UTF-16 终点;每批发送后不再等待 AX 长确认,finish/cancel 在已接收写入之后等待最终屏障,再恢复输入源。AX 仅读选区范围,不读正文;采用 250 ms 无进展预算和 10 秒总预算。不可读、提交型 Return 或预算耗尽时明确降级到按键已发送语义,不重新粘贴已发送文字。目标应用的实际输入表现仍需设备验收。 选区直接润色在捕获文字和原输入目标后显示处理中提示,重复快捷键的 Busy 返回不覆盖该提示。已有语音选区入口在松开快捷键后继续显示思考动画,直到处理/替换完成,或交给确认和预览面板。录音提示音的 Web Audio context 在恢复超时或音频时钟冻结时丢弃并最多重试一次,重试沿用原请求的取消和迟到边界。 @@ -86,7 +86,8 @@ Siri、Classic、Typeless 三种胶囊共用 Core 的 `CapsuleStyle`,窗口尺 | 服务凭据 | Core `CredentialStore` 合同,Tauri keyring/Android Keystore 或 Linux `credentials.rs` 适配 | | 云端 ASR / LLM | Core provider 目录、选择与传输模块;平台本地引擎位于 `src-tauri/src/asr/local/` 或 Linux Host | | 风格包市场 | Core `marketplace.rs` 管理 HTTP、GitHub device flow 与本地安装;地址由 `MarketplaceConfig` 注入,内置默认值在该模块 | -| 私有云同步 | Core `cloud_sync.rs` 复用同一 GitHub 登录与官方服务地址,按版本同步词典、纠错、风格包和允许的个人偏好;`cloud_sync_transaction.rs` 在本地恢复失败时回滚文件,凭据和设备配置保持本机所有。合同及边界见 [官方云同步](cloud-sync.md) | +| 加密云同步 | Core `cloud_sync_e2ee` 复用 GitHub 登录并交换独立同步会话,通过 `/v1/...` 保存客户端加密快照;protocol/documents/store 分别负责加密协议、登记与合并、仓库及系统凭据的受控恢复。默认关闭,凭据、本地基线和回滚日志不交给 UI。详情与验证边界见 [加密云同步客户端](encrypted-cloud-sync.md) | +| 旧手动同步 | `cloud_sync.rs` 和 `/me/sync` 保留有限明文快照合同;旧入口不上传新加密文档中的服务密钥。已注册加密恢复 gate 的仓库拒绝旧多文件恢复,防止绕过受控恢复;未注册的旧 Host 保留原合同。见 [旧同步合同](cloud-sync.md) | | 风格图标 | React `src/lib/stylePackIcon.ts` 清理上传的 SVG 并转成 PNG;`set_style_pack_icon` / `read_style_pack_icon` 经 Core `style_pack_store.rs` 保存资源、校验读取范围并返回图片 data URL。图标沿用 ZIP 的 64 KiB 限制,与风格包一起导出 | | 局域网手机输入 | Core `remote_input_service.rs` 定义共享业务,Tauri `remote_server/` 提供本机网络入口和网页资源 | diff --git a/docs/cloud-sync.md b/docs/cloud-sync.md index a1b852eb5..9d400cf0c 100644 --- a/docs/cloud-sync.md +++ b/docs/cloud-sync.md @@ -1,6 +1,6 @@ # 官方云同步 -> 本文描述已实现的旧手动快照协议。新的全量加密云同步需求与接口在工作区 `5-cloud-sync/docs/`,尚未实现;不得向下述旧 `/me/sync` 上传服务 API 密钥或历史全量明文。项目入口由工作区文档总索引维护。 +> 本文描述旧手动快照协议。Beta 3 候选版的新客户端实现及验收边界见 [加密云同步客户端](encrypted-cloud-sync.md),协议合同在工作区 `5-cloud-sync/docs/`。不得向下述旧 `/me/sync` 上传服务 API 密钥或历史全量明文;已注册加密恢复 gate 的仓库拒绝旧多文件恢复,防止绕过加密恢复事务。 状态:手动快照同步,HTTP 合同版本 1。客户端需要官方服务同时提供 `/me/sync`;旧版服务返回 404/405/501 时显示暂不支持,不能将其当成空备份。生产同步地址为 `https://apic.openless.top:9443`(与市场后端同一服务器、独立端口),服务端连接细节见 [云同步服务端交接](cloud-sync-server-handoff.md)。 diff --git a/docs/encrypted-cloud-sync.md b/docs/encrypted-cloud-sync.md new file mode 100644 index 000000000..7d4a5c91d --- /dev/null +++ b/docs/encrypted-cloud-sync.md @@ -0,0 +1,42 @@ +# 加密云同步客户端 + +实现版本:`2.0.0-Beta.3+build.20260925`。协议版本为 `1`,密码学 profile 为 `argon2id-xchacha20poly1305-v1`。本页描述客户端实现和验证边界;正式发布状态以对应 GitHub Release 为准。 + +## 地址与协议边界 + +新客户端使用独立入口 `https://apic.openless.top:9443/v1/...`。启动同步前读取 `/v1/capabilities`,核对协议、体积上限及现有 OpenLess GitHub OAuth client ID,再使用原生层的 GitHub 登录令牌交换短期同步会话。数字 GitHub ID 是账号隔离依据。新请求不回退到旧 `/me/sync`;旧四个 `cloud_sync_*` 命令不改接新协议。旧 standalone 仓库仍保留有限明文快照语义;已注册加密同步写入门的仓库暂不支持旧 `cloud_sync_restore`,明确返回 Unsupported,避免绕过加密恢复事务。 + +2026-09-26 的不带凭据检查中,正式 origin 的 `/v1/capabilities` 返回了协议 `1`、匹配的 OAuth client ID 与加密 profile,备份保留上限为 7 天。这仅证明能力接口当时可用,不代表真实账号授权、私有数据往返或生产验收已经完成。 + +## 原生边界 + +- `crates/openless-core/src/cloud_sync_e2ee_protocol/`:严格 wire DTO、规范编码、Argon2id、XChaCha20-Poly1305、带身份与版本的 AAD、HTTPS/CAS/幂等收据。 +- `crates/openless-core/src/cloud_sync_e2ee_documents/`:逐字段登记、11 类逻辑文档、渠道和凭据一起合并、删除标记、脱敏冲突与加密恢复日志。 +- `crates/openless-core/src/cloud_sync_e2ee_store/`:受控仓库、持久化代次、写隔离、完整恢复与读回验证。 +- `crates/openless-core/src/cloud_sync_e2ee/`:默认关闭的状态机、密码解锁、创建、同步、改密、删除、原生凭据库中的记住密钥与加密本地基线。 +- `src-tauri/src/commands/cloud_sync_e2ee.rs`:仅主窗口的本地 IPC;`src/lib/ipc/cloud-sync-e2ee.ts` 为对应 typed wrapper。浏览器预览返回 unavailable。 +- `src/lib/encryptedSyncUiBridge.ts`:主窗口中实际语言/字号偏好的受控镜像,以及恢复成功后的界面更新。 + +上传只发送密文。密码和派生密钥不进入服务器请求;系统凭据库只导出登记过的服务账号,不复制 keyring/Keystore 文件。普通服务 API Key、接口设置、文本历史和风格内容纳入加密范围;OAuth 登录态、同步令牌、同步密码/派生密钥、设备私钥、远程输入 PIN、系统权限、录音、模型权重、缓存和程序不进入快照。 + +## 行为 + +首次开启需明确确认完整范围;已有云端快照必须验证 AEAD 并展示恢复预览,不能用新设备默认值直接覆盖。密码按 NFC 规范化,创建/改密执行本地强度策略。记住密钥由系统安全存储实现,并绑定服务 origin、数字账号、vault、key 和设备。 + +共同基线、未确认操作及恢复资料在本机加密。网络丢失响应时保留原始请求体和操作 ID,先核对收据,必要时仅重送同一请求。不能将 404 收据当作“未提交”。上传中发生的新本地代次仍待同步。删除状态会停用自动上传,不能由旧设备自动重建。 + +自动同步仅在已开启、已登录且已解锁时运行:一次启动触发,持久化变更后 750 ms 防抖、最长 5 秒;没有周期轮询或无限重试。关闭与删除是独立操作。跨设备路径和平台设置以设备档案保留,恢复不授予系统权限或自动执行 Agent。 + +完成有效服务配置后,本机首次引导只申请一次持久化提示。凭据读取失败、配置正在保存、录音/输入/恢复繁忙时不申请;提示不访问同步网络、不启用上传。欢迎流程可直接打开“从云端恢复”,无需先填写服务密钥。窗口隐藏、失焦或任务开始后会丢弃迟到的提示结果。 + +短暂的本机写入竞争最多触发 4 次有界延后重试;网络失败、结果未知、版本冲突不进入该重试。后续手动任务、锁定或停用会淘汰旧重试链。同步连接遵循当前系统代理偏好,策略变化后重建连接,回环测试始终直连。 + +系统自启动 `launchAtLogin` 不进入远端文档或设备档案;保留接收设备本机值,实际 OS 状态仍由现有 UI 自启动插件管理,恢复不宣称替用户重建自启动授权。 + +恢复必须绑定 `RestoreRuntimeEffects` 的真实 Host 适配器。所有仓库写入后,在同一加密 journal、独占写入门和运行态屏障内等待绝对目标设置生效;副作用失败按 before 镜像回滚。只保存在本地 journal 的 Agent 开关、provider 镜像和录音标记恢复后,再应用最终旧设置;若回滚副作用也失败,保留 recovery_required,不能提前放行录音或 Agent。未绑定适配器明确失败,不使用空实现代替平台确认。 + +## 验证边界 + +协议测试使用公开互操作向量;服务测试使用 loopback 模拟 OAuth/同步端和内存凭据库,不触碰真实账号或用户钥匙串。恢复层须单独覆盖文件/凭据故障、进程中断、账号/版本隔离及排除项。通过协议测试不能替代真实平台钥匙串、两设备恢复与正式 OAuth 的人工验收。 + +发布遵循 [RELEASING.md](../RELEASING.md) 的对应提交 CI、签名和资产检查流程。真实 GitHub 授权及两台设备的生产数据往返仍须单独验收,不能由本地模拟服务器的通过结果代替。 diff --git a/docs/index.md b/docs/index.md index 8838ee99d..fe3f406d5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,6 +17,8 @@ ## 接口契约 +- [加密云同步客户端](encrypted-cloud-sync.md):Beta 3 新协议、受控数据范围、系统凭据库、恢复与验证边界。 + - [官方云同步](cloud-sync.md):可同步字段、GitHub 身份边界、版本冲突、本地恢复与验证。 - [云同步服务端交接](cloud-sync-server-handoff.md):同步服务地址与端口(apic.openless.top:9443)、客户端请求行为、状态码映射与服务端验收清单。 - [Linux egui 后端契约](linux-egui-backend-contract.md):`contract/backend-2.0.json`、启动快照、事件面与公开签名。 diff --git a/docs/structure.md b/docs/structure.md index 8d1ac96d1..26569f11d 100644 --- a/docs/structure.md +++ b/docs/structure.md @@ -41,7 +41,8 @@ | 共享业务入口 | `crates/openless-core/src/api.rs` | `events.rs`、`ports.rs`、`domains.rs`、`config.rs` | | 听写和服务 | Core `dictation_engine.rs`、`provider_*`、`asr/`、`polish.rs` | Host 的录音、插入和本地模型适配 | | 历史、词库、纠错、风格包 | Core `history.rs`、`vocabulary.rs`、`correction.rs`、`style_pack_store.rs` | Tauri `persistence/` 与对应 command | -| 官方云同步 | Core `cloud_sync.rs`、`cloud_sync_types.rs`、`cloud_sync_validation.rs`、`cloud_sync_transaction.rs` | Tauri `commands/cloud_sync.rs`;GitHub 身份、有限字段与版本冲突见 [云同步合同](cloud-sync.md) | +| 加密云同步 | Core `cloud_sync_e2ee/`、`cloud_sync_e2ee_protocol/`、`cloud_sync_e2ee_documents/`、`cloud_sync_e2ee_store/` | Tauri `commands/cloud_sync_e2ee.rs`、系统凭据适配及 `src/lib/encryptedSyncUiBridge.ts`;见 [客户端边界](encrypted-cloud-sync.md) | +| 旧手动同步 | Core `cloud_sync.rs`、`cloud_sync_types.rs`、`cloud_sync_validation.rs`、`cloud_sync_transaction.rs` | Tauri `commands/cloud_sync.rs`;仅保留旧有限字段协议,见 [旧同步合同](cloud-sync.md) | | Tauri 组装与系统能力 | `src-tauri/src/coordinator.rs`、`core_adapters.rs`、`tauri_coordinator_host.rs` | 窗口、热键、权限、平台输入与生命周期 | | Linux 原生接入 | `linux-egui/src/main.rs`、`lib.rs`、`backend.rs` | `audio/credentials/fcitx5/hotkeys/settings` 等 Host 模块;见 [交接](linux-egui-handoff/README.md) | | Android 集成 | `android/`、`src-tauri/src/android/` | `@android` 别名与 `merge-android-*.mjs` 生成链 | diff --git a/openless-all/app/Cargo.lock b/openless-all/app/Cargo.lock index c9456d7bb..d0091d982 100644 --- a/openless-all/app/Cargo.lock +++ b/openless-all/app/Cargo.lock @@ -114,6 +114,16 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + [[package]] name = "aes" version = "0.8.4" @@ -238,6 +248,19 @@ dependencies = [ "x11rb", ] +[[package]] +name = "argon2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures 0.2.17", + "password-hash", + "zeroize", +] + [[package]] name = "arrayvec" version = "0.7.8" @@ -559,6 +582,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + [[package]] name = "bit-set" version = "0.8.0" @@ -586,6 +615,15 @@ version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -824,6 +862,17 @@ dependencies = [ "libc", ] +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + [[package]] name = "chacha20" version = "0.10.2" @@ -835,6 +884,19 @@ dependencies = [ "rand_core 0.10.1", ] +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20 0.9.1", + "cipher", + "poly1305", + "zeroize", +] + [[package]] name = "chrono" version = "0.4.45" @@ -854,6 +916,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -1047,6 +1110,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -3243,16 +3307,25 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "openless-core" version = "0.1.0" dependencies = [ "anyhow", + "argon2", "base64", "bzip2 0.4.4", + "chacha20poly1305", "chrono", "ferrous-opencc", "futures-util", + "getrandom 0.3.4", "hmac", "log", "md-5", @@ -3268,8 +3341,10 @@ dependencies = [ "thiserror 1.0.69", "tokio", "tokio-tungstenite", + "unicode-normalization", "url", "uuid", + "zeroize", "zip", ] @@ -3370,6 +3445,17 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "pbkdf2" version = "0.12.2" @@ -3531,6 +3617,17 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" version = "1.15.0" @@ -3764,7 +3861,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "chacha20", + "chacha20 0.10.2", "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -4895,6 +4992,15 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.13.3" @@ -4907,6 +5013,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "untrusted" version = "0.9.0" diff --git a/openless-all/app/contract/backend-2.0.json b/openless-all/app/contract/backend-2.0.json index f8a0a8325..053fd4266 100644 --- a/openless-all/app/contract/backend-2.0.json +++ b/openless-all/app/contract/backend-2.0.json @@ -50,6 +50,9 @@ "history_changed", "vocabulary_changed", "style_packs_changed", + "cloud_sync_state_changed", + "cloud_sync_conflict_detected", + "cloud_sync_restore_completed", "download_progress", "permission_changed", "hotkey_status_changed", @@ -82,6 +85,9 @@ "history_changed": {"sequence": 1, "sessionId": null, "kind": {"type": "history_changed", "payload": {"revision": 1}}}, "vocabulary_changed": {"sequence": 1, "sessionId": null, "kind": {"type": "vocabulary_changed", "payload": {"revision": 1}}}, "style_packs_changed": {"sequence": 1, "sessionId": null, "kind": {"type": "style_packs_changed", "payload": {"revision": 1}}}, + "cloud_sync_state_changed": {"sequence": 1, "sessionId": null, "kind": {"type": "cloud_sync_state_changed", "payload": {"sequence": "1", "accountId": null, "vaultId": null, "taskId": null, "status": {"sequence": "1", "enabled": false, "authState": "signed_out", "keyState": "locked", "syncState": "disabled", "account": null, "vaultId": null, "keyId": null, "localGeneration": "0", "lastSyncedLocalGeneration": null, "remoteRevision": null, "lastSuccessfulSyncAt": null, "pendingOperationId": null, "lastError": null, "recoveryRequired": false, "hasCloudSnapshot": null, "taskId": null, "serviceOrigin": "https://apic.openless.top:9443", "consentVersion": null, "backupRetentionDays": null}}}}, + "cloud_sync_conflict_detected": {"sequence": 1, "sessionId": null, "kind": {"type": "cloud_sync_conflict_detected", "payload": {"sequence": "1", "accountId": "118526", "vaultId": "11111111-1111-4111-8111-111111111111", "taskId": null, "preview": {"previewId": "22222222-2222-4222-8222-222222222222", "unconfirmedOperationId": null, "observedRevision": "1", "localGeneration": "1", "counts": {}, "deviceSettingsToReview": [], "conflicts": []}}}}, + "cloud_sync_restore_completed": {"sequence": 1, "sessionId": null, "kind": {"type": "cloud_sync_restore_completed", "payload": {"sequence": "1", "accountId": "118526", "vaultId": "11111111-1111-4111-8111-111111111111", "taskId": null, "localGeneration": "1", "uiPreferences": {"locale": "zh-CN", "fontScale": "medium"}}}}, "download_progress": {"sequence": 1, "sessionId": null, "kind": {"type": "download_progress", "payload": {"resourceId": "model", "completedBytes": 1, "totalBytes": null}}}, "permission_changed": {"sequence": 1, "sessionId": null, "kind": {"type": "permission_changed", "payload": {"microphone": "unknown", "accessibility": "unknown"}}}, "hotkey_status_changed": {"sequence": 1, "sessionId": null, "kind": {"type": "hotkey_status_changed", "payload": {"adapter": "unavailable", "state": "starting", "message": null, "lastError": null}}}, diff --git a/openless-all/app/crates/openless-core/Cargo.toml b/openless-all/app/crates/openless-core/Cargo.toml index a95160f05..e58f79a95 100644 --- a/openless-all/app/crates/openless-core/Cargo.toml +++ b/openless-all/app/crates/openless-core/Cargo.toml @@ -9,10 +9,13 @@ publish = false [dependencies] anyhow = "1" +argon2 = { version = "0.5", features = ["zeroize"] } base64 = "0.22" bzip2 = "0.4" +chacha20poly1305 = "0.10" chrono = { version = "0.4", default-features = false, features = ["clock", "std"] } futures-util = "0.3" +getrandom = "0.3" ferrous-opencc = "0.4" hmac = "0.12" log = "0.4" @@ -35,4 +38,6 @@ tokio = { version = "1", features = ["sync", "time", "rt", "macros", "rt-multi-t tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] } url = { version = "2", features = ["serde"] } uuid = { version = "1", features = ["v4", "serde"] } +unicode-normalization = "0.1" +zeroize = { version = "1", features = ["derive"] } zip = "2" diff --git a/openless-all/app/crates/openless-core/src/activity.rs b/openless-all/app/crates/openless-core/src/activity.rs index 206abc362..474dbdd87 100644 --- a/openless-all/app/crates/openless-core/src/activity.rs +++ b/openless-all/app/crates/openless-core/src/activity.rs @@ -1,14 +1,12 @@ -//! Text-free daily activity aggregates shared by both desktop hosts. +//! Text-free daily activity aggregates with stable per-device contributions. +use crate::errors::{BackendError, BackendErrorCode}; +use crate::persistence::{atomic_write, persistence_error}; +use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use std::path::{Path, PathBuf}; use std::sync::Mutex; -use serde::{Deserialize, Serialize}; - -use crate::errors::{BackendError, BackendErrorCode}; -use crate::persistence::{atomic_write, persistence_error}; - const ACTIVITY_RETENTION_DAYS: usize = 731; #[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)] @@ -20,7 +18,6 @@ pub struct DayStats { #[serde(default)] pub duration_ms: u64, } - #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct ActivityDay { @@ -30,118 +27,291 @@ pub struct ActivityDay { pub duration_ms: u64, } +#[derive(Clone, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +struct DayBucket { + #[serde(flatten)] + stats: DayStats, + #[serde(default, skip_serializing_if = "BTreeMap::is_empty")] + source_contributions: BTreeMap, +} #[derive(Deserialize)] #[serde(untagged)] enum StoredDay { CountOnly(u32), - Full(DayStats), + Full(DayBucket), } -impl From for DayStats { - fn from(stored: StoredDay) -> Self { - match stored { - StoredDay::CountOnly(count) => Self { - count, - ..Self::default() - }, - StoredDay::Full(stats) => stats, +fn totals(sources: &BTreeMap) -> DayStats { + sources + .values() + .fold(DayStats::default(), |mut total, source| { + total.count = total.count.saturating_add(source.count); + total.chars = total.chars.saturating_add(source.chars); + total.duration_ms = total.duration_ms.saturating_add(source.duration_ms); + total + }) +} +fn read_days(path: &Path) -> Result, BackendError> { + let raw: BTreeMap = match std::fs::read(path) { + Ok(bytes) => serde_json::from_slice(&bytes) + .map_err(|_| persistence_error("decode activity aggregates"))?, + Err(error) if error.kind() == std::io::ErrorKind::NotFound => BTreeMap::new(), + Err(_) => return Err(persistence_error("read activity aggregates")), + }; + let mut stored = BTreeMap::new(); + for (date, value) in raw { + let day: StoredDay = serde_json::from_value(value.clone()) + .map_err(|_| persistence_error("decode activity day"))?; + if let StoredDay::Full(bucket) = &day { + crate::persistence::ensure_lossless_value( + &value, + &serde_json::to_value(bucket) + .map_err(|_| persistence_error("encode activity day"))?, + &[], + )?; } + stored.insert(date, day); } + Ok(stored + .into_iter() + .map(|(date, value)| { + let mut bucket = match value { + StoredDay::CountOnly(count) => DayBucket { + stats: DayStats { + count, + ..Default::default() + }, + ..Default::default() + }, + StoredDay::Full(bucket) => bucket, + }; + if !bucket.source_contributions.is_empty() { + bucket.stats = totals(&bucket.source_contributions); + } + (date, bucket) + }) + .collect()) } +struct ActivityState { + days: BTreeMap, + local_source: Option, +} pub struct ActivityStore { path: Option, - cache: Mutex>, + cache: Mutex, } - impl ActivityStore { pub fn at_data_dir(data_dir: impl AsRef) -> Result { Self::at_path(data_dir.as_ref().join("activity.json")) } - pub fn at_path(path: PathBuf) -> Result { - let stored = match std::fs::read(&path) { - Ok(bytes) => serde_json::from_slice::>(&bytes) - .map_err(|_| persistence_error("decode activity aggregates"))?, - Err(error) if error.kind() == std::io::ErrorKind::NotFound => BTreeMap::new(), - Err(_) => return Err(persistence_error("read activity aggregates")), - }; + let days = read_days(&path)?; Ok(Self { path: Some(path), - cache: Mutex::new( - stored - .into_iter() - .map(|(date, day)| (date, day.into())) - .collect(), - ), + cache: Mutex::new(ActivityState { + days, + local_source: None, + }), }) } - - /// In-memory degradation for a non-critical aggregate store. pub fn in_memory() -> Self { Self { path: None, - cache: Mutex::new(BTreeMap::new()), + cache: Mutex::new(ActivityState { + days: BTreeMap::new(), + local_source: None, + }), } } - pub fn bump(&self, date: &str, chars: u64, duration_ms: u64) -> Result<(), BackendError> { - if !valid_date(date) { - return Err(BackendError::new( - BackendErrorCode::InvalidArgument, - "activity date must use YYYY-MM-DD", - )); + /// Memory-only Host identity attachment; it never attributes imported totals to this device. + pub(crate) fn bind_sync_device(&self, device: &str) -> Result<(), BackendError> { + if device.is_empty() { + return Err(persistence_error("missing activity source device")); } - let mut cache = self.lock_cache()?; - let entry = cache.entry(date.to_string()).or_default(); - entry.count = entry.count.saturating_add(1); - entry.chars = entry.chars.saturating_add(chars); - entry.duration_ms = entry.duration_ms.saturating_add(duration_ms); - while cache.len() > ACTIVITY_RETENTION_DAYS { - let Some(oldest) = cache.keys().next().cloned() else { - break; - }; - cache.remove(&oldest); - } - if let Some(path) = &self.path { - let bytes = serde_json::to_vec_pretty(&*cache) - .map_err(|_| persistence_error("encode activity aggregates"))?; - atomic_write(path, &bytes)?; + let mut state = self.lock_cache()?; + if state + .local_source + .as_deref() + .is_some_and(|old| old != device) + { + return Err(persistence_error("activity source identity changed")); } + state.local_source = Some(device.into()); Ok(()) } + pub fn bump(&self, date: &str, chars: u64, duration_ms: u64) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + if !valid_date(date) { + return Err(BackendError::new( + BackendErrorCode::InvalidArgument, + "activity date must use YYYY-MM-DD", + )); + } + let mut state = self.lock_cache()?; + let mut days = match &self.path { + Some(path) => read_days(path)?, + None => state.days.clone(), + }; + let bucket = days.entry(date.to_string()).or_default(); + if let Some(device) = &state.local_source { + if bucket.source_contributions.is_empty() { + bucket + .source_contributions + .insert(device.clone(), bucket.stats); + } + let own = bucket + .source_contributions + .entry(device.clone()) + .or_default(); + own.count = own.count.saturating_add(1); + own.chars = own.chars.saturating_add(chars); + own.duration_ms = own.duration_ms.saturating_add(duration_ms); + bucket.stats = totals(&bucket.source_contributions); + } else { + if !bucket.source_contributions.is_empty() { + return Err(persistence_error( + "activity source must be bound before mutation", + )); + } + bucket.stats.count = bucket.stats.count.saturating_add(1); + bucket.stats.chars = bucket.stats.chars.saturating_add(chars); + bucket.stats.duration_ms = bucket.stats.duration_ms.saturating_add(duration_ms); + } + while days.len() > ACTIVITY_RETENTION_DAYS { + let Some(oldest) = days.keys().next().cloned() else { + break; + }; + days.remove(&oldest); + } + if let Some(path) = &self.path { + let bytes = serde_json::to_vec_pretty(&days) + .map_err(|_| persistence_error("encode activity aggregates"))?; + atomic_write(path, &bytes)?; + } + state.days = days; + Ok(()) + }, + ) + } + pub fn snapshot(&self) -> Result, BackendError> { Ok(self .lock_cache()? + .days .iter() - .map(|(date, stats)| ActivityDay { + .map(|(date, bucket)| ActivityDay { date: date.clone(), - count: stats.count, - chars: stats.chars, - duration_ms: stats.duration_ms, + count: bucket.stats.count, + chars: bucket.stats.chars, + duration_ms: bucket.stats.duration_ms, }) .collect()) } - fn lock_cache( + pub(crate) fn sync_records( + &self, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result, BackendError> { + let path = self + .path + .as_deref() + .ok_or_else(|| persistence_error("activity persistence unavailable"))?; + crate::cloud_sync_e2ee_store::gate::require_exclusive(path, permit)?; + self.sync_records_readonly() + } + + pub(crate) fn sync_records_readonly( + &self, + ) -> Result, BackendError> { + let path = self + .path + .as_deref() + .ok_or_else(|| persistence_error("activity persistence unavailable"))?; + let mut state = self.lock_cache()?; + state.days = read_days(path)?; + let device = state + .local_source + .as_deref() + .ok_or_else(|| persistence_error("activity source unavailable"))?; + let mut output = Vec::new(); + for (date, bucket) in &state.days { + let sources = if bucket.source_contributions.is_empty() { + BTreeMap::from([(device.to_string(), bucket.stats)]) + } else { + bucket.source_contributions.clone() + }; + for (source_device_id, stats) in sources { + output.push(crate::cloud_sync_e2ee_documents::ActivityRecord { + source_device_id, + date: date.clone(), + count: stats.count.into(), + chars: stats.chars, + duration_ms: stats.duration_ms, + }); + } + } + Ok(output) + } + + pub(crate) fn sync_replace_records( &self, - ) -> Result>, BackendError> { + records: &[crate::cloud_sync_e2ee_documents::ActivityRecord], + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result<(), BackendError> { + let path = self + .path + .as_deref() + .ok_or_else(|| persistence_error("activity persistence unavailable"))?; + crate::cloud_sync_e2ee_store::gate::require_exclusive(path, permit)?; + let mut days: BTreeMap = BTreeMap::new(); + for record in records { + if !valid_date(&record.date) || record.source_device_id.is_empty() { + return Err(persistence_error("invalid activity contribution")); + } + let stats = DayStats { + count: u32::try_from(record.count) + .map_err(|_| persistence_error("activity count is not representable"))?, + chars: record.chars, + duration_ms: record.duration_ms, + }; + if days + .entry(record.date.clone()) + .or_default() + .source_contributions + .insert(record.source_device_id.clone(), stats) + .is_some() + { + return Err(persistence_error("duplicate activity source")); + } + } + for bucket in days.values_mut() { + bucket.stats = totals(&bucket.source_contributions); + } + // Restoration is complete, independent of the normal rolling retention policy. + let bytes = serde_json::to_vec_pretty(&days) + .map_err(|_| persistence_error("encode restored activity"))?; + let mut state = self.lock_cache()?; + crate::persistence::atomic_write_for_sync(path, &bytes, permit)?; + state.days = days; + Ok(()) + } + + fn lock_cache(&self) -> Result, BackendError> { self.cache.lock().map_err(|_| { BackendError::new(BackendErrorCode::Internal, "activity store lock poisoned") }) } } - fn valid_date(date: &str) -> bool { - let bytes = date.as_bytes(); - bytes.len() == 10 - && bytes[4] == b'-' - && bytes[7] == b'-' - && bytes - .iter() - .enumerate() - .all(|(index, byte)| index == 4 || index == 7 || byte.is_ascii_digit()) + chrono::NaiveDate::parse_from_str(date, "%Y-%m-%d") + .is_ok_and(|value| value.format("%Y-%m-%d").to_string() == date) } #[cfg(test)] diff --git a/openless-all/app/crates/openless-core/src/api.rs b/openless-all/app/crates/openless-core/src/api.rs index 6236bb468..e47f932d0 100644 --- a/openless-all/app/crates/openless-core/src/api.rs +++ b/openless-all/app/crates/openless-core/src/api.rs @@ -1360,7 +1360,10 @@ impl BackendRepositories { .unwrap_or_else(|_| StylePackStore::in_memory()), ); let mut preference_snapshot = preferences.get(); - if sync_style_pack_preferences(&mut preference_snapshot, &style_packs.list()?) { + if !crate::cloud_sync_e2ee_store::gate::recovery_pending_for_path( + &data_dir.join("preferences.json"), + ) && sync_style_pack_preferences(&mut preference_snapshot, &style_packs.list()?) + { preferences.set(preference_snapshot)?; } Ok(Self { @@ -1857,6 +1860,7 @@ impl EngineProgressSink for BackendEngineProgress { pub struct OpenLessBackend { config: BackendConfig, + startup_error: Option, deps: BackendDependencies, clock: Arc, events: Arc, @@ -1877,13 +1881,19 @@ pub struct OpenLessBackend { preferences_revision: Arc, settings_write_gate: Arc>, cloud_sync: Option, + encrypted_sync: Option, + encrypted_sync_store: Option>, pending_corrections: Arc>>, edit_observation_generation: Arc, text_insertions: Arc>>, voice_sessions: Arc, + runtime_start_work: Arc, less_computer_voice_controls: Arc>>>, } +#[path = "cloud_sync_e2ee/api.rs"] +mod encrypted_sync_api; + struct HistoryProviderAttribution { asr_provider: Option, asr_model: Option, @@ -2026,6 +2036,75 @@ impl HistoryProviderAttribution { } impl OpenLessBackend { + /// Construct an explicitly unavailable Core so the native shell can show + /// its startup error instead of panicking before any window is visible. + /// This path never opens the user's files or a credential store. + pub fn blocked_startup(mut config: BackendConfig, error: BackendError) -> Self { + if config.data_dir.as_os_str().is_empty() { + config.data_dir = std::path::PathBuf::from("openless-startup-blocked"); + } + let repositories = BackendRepositories { + preferences: Arc::new(PreferencesStore::in_memory()), + history: Arc::new(HistoryStore::at_path(std::path::PathBuf::new())), + activity: Arc::new(ActivityStore::in_memory()), + vocabulary: Arc::new(DictionaryStore::at_path(std::path::PathBuf::new())), + correction_rules: Arc::new(CorrectionRuleStore::at_path(std::path::PathBuf::new())), + style_packs: Arc::new(StylePackStore::in_memory()), + }; + // All fallible external dependencies are absent and the only required + // config field was normalized above. A failure here is a code invariant. + let mut backend = + Self::new_with_repositories(config, BackendDependencies::unsupported(), repositories) + .expect("memory-only blocked backend is constructible"); + let denied = error.clone(); + let guard: crate::domains::RuntimeRestoreGuard = Arc::new(move || Err(denied.clone())); + backend + .voice_sessions + .bind_restore_guard(Arc::clone(&guard)) + .expect("fresh voice guard"); + backend + .runtime_start_work + .bind(Arc::clone(&guard), Arc::clone(&backend.deps.task_spawner)) + .expect("fresh startup guard"); + backend + .deps + .services + .selection_voice + .bind_runtime_restore_guard(guard, Arc::clone(&backend.deps.task_spawner)) + .expect("fresh selection guard"); + backend.startup_error = Some(error); + backend + } + + pub fn startup_error(&self) -> Option { + self.startup_error.clone() + } + + pub fn bind_restore_runtime_effects( + &self, + effects: Arc, + ) -> Result<(), BackendError> { + if let Some(store) = &self.encrypted_sync_store { + store.bind_runtime_effects(effects).map_err(|_| { + BackendError::new( + BackendErrorCode::InvalidState, + "restore runtime effects binding failed", + ) + })?; + } + Ok(()) + } + + /// Called after a complete journal target has reached its Host effects. + /// This resets ephemeral interpreters only; it never writes repositories. + pub fn reset_restored_runtime_preferences(&self) { + self.hotkey + .lock() + .expect("hotkey interpreter lock poisoned") + .reset(); + self.disarm_edit_observation(); + } + pub fn new(config: BackendConfig, deps: BackendDependencies) -> Result { if config.data_dir.as_os_str().is_empty() { return Err(BackendError::new( @@ -2079,6 +2158,7 @@ impl OpenLessBackend { let vocabulary_revision = Arc::new(AtomicU64::new(0)); let settings_write_gate = Arc::new(Mutex::new(())); let voice_sessions = Arc::clone(&deps.services.voice_sessions); + let runtime_start_work = Arc::new(crate::voice_session::RuntimeActivityGate::default()); deps.services.selection_voice = Arc::new(crate::selection_voice_service::SelectionVoiceService::new( BackendEventPublisher::new(Arc::clone(&events)), @@ -2181,7 +2261,11 @@ impl OpenLessBackend { Arc::clone(&deps.credential_store), )); } - let cloud_sync = if let Some(marketplace_config) = deps.marketplace_config.take() { + let mut encrypted_sync = None; + let mut encrypted_sync_store = None; + let cloud_sync = if let Some(mut marketplace_config) = deps.marketplace_config.take() { + let github_client_id = marketplace_config.github_client_id.clone(); + let sync_config = marketplace_config.encrypted_sync_config.take(); let marketplace = Arc::new(crate::marketplace::MarketplaceService::new( marketplace_config, Arc::clone(&deps.credential_store), @@ -2191,6 +2275,19 @@ impl OpenLessBackend { Arc::clone(&style_pack_revision), )?); deps.services.marketplace = marketplace.clone(); + if let Some(sync_config) = sync_config { + let (service, store) = crate::cloud_sync_e2ee::build( + sync_config, + &config.data_dir, + repositories.clone(), + Arc::clone(&deps.credential_store), + Arc::clone(&marketplace), + github_client_id, + BackendEventPublisher::new(Arc::clone(&events)), + )?; + encrypted_sync = Some(service); + encrypted_sync_store = Some(store); + } Some(crate::cloud_sync::CloudSyncService::new( marketplace, repositories.clone(), @@ -2269,8 +2366,69 @@ impl OpenLessBackend { deps.services .remote_input .bind_event_publisher(BackendEventPublisher::new(Arc::clone(&events))); + if let Some(store) = &encrypted_sync_store { + let weak_store = Arc::downgrade(store); + let guard: crate::domains::RuntimeRestoreGuard = Arc::new(move || { + let store = weak_store.upgrade().ok_or_else(|| { + BackendError::new( + BackendErrorCode::InvalidState, + "runtime restore source is unavailable", + ) + })?; + store.ensure_runtime_available().map_err(|_| { + BackendError::new( + BackendErrorCode::Busy, + "encrypted sync restore must finish before starting runtime work", + ) + }) + }); + voice_sessions.bind_restore_guard(Arc::clone(&guard))?; + runtime_start_work.bind(Arc::clone(&guard), Arc::clone(&deps.task_spawner))?; + deps.services + .qa + .bind_runtime_restore_guard(Arc::clone(&guard), Arc::clone(&deps.task_spawner))?; + deps.services + .selection + .bind_runtime_restore_guard(Arc::clone(&guard), Arc::clone(&deps.task_spawner))?; + deps.services + .selection_voice + .bind_runtime_restore_guard(guard, Arc::clone(&deps.task_spawner))?; + let voice = Arc::downgrade(&voice_sessions); + let starts = Arc::downgrade(&runtime_start_work); + let qa = Arc::downgrade(&deps.services.qa); + let selection = Arc::downgrade(&deps.services.selection); + let selection_voice = Arc::downgrade(&deps.services.selection_voice); + // Each probe releases its lock before the next one. Starts check + // Store's already-raised flag while holding the matching lock. + // Both directions are weak, so neither binding owns the backend. + store + .bind_runtime_idle_probe(Arc::new(move || { + voice + .upgrade() + .is_some_and(|gate| gate.runtime_restore_idle()) + && starts + .upgrade() + .is_some_and(|gate| gate.runtime_restore_idle()) + && qa + .upgrade() + .is_some_and(|service| service.runtime_restore_idle()) + && selection + .upgrade() + .is_some_and(|service| service.runtime_restore_idle()) + && selection_voice + .upgrade() + .is_some_and(|service| service.runtime_restore_idle()) + })) + .map_err(|_| { + BackendError::new( + BackendErrorCode::InvalidState, + "failed to bind encrypted sync runtime barrier", + ) + })?; + } Ok(Self { config, + startup_error: None, deps, clock, events, @@ -2300,14 +2458,35 @@ impl OpenLessBackend { preferences_revision, settings_write_gate, cloud_sync, + encrypted_sync, + encrypted_sync_store, pending_corrections: Arc::new(Mutex::new(Vec::new())), edit_observation_generation: Arc::new(AtomicU64::new(0)), text_insertions: Arc::new(Mutex::new(HashMap::new())), voice_sessions, + runtime_start_work, less_computer_voice_controls: Arc::new(Mutex::new(HashMap::new())), }) } + /// Hosts can inspect settings during recovery, but must defer runtime + /// startup effects until this succeeds. Task admission itself is also + /// guarded under Core's runtime locks; this check is not a session lease. + pub fn ensure_runtime_ready(&self) -> Result<(), BackendError> { + if let Some(error) = &self.startup_error { + return Err(error.clone()); + } + if let Some(store) = &self.encrypted_sync_store { + store.ensure_runtime_available().map_err(|_| { + BackendError::new( + BackendErrorCode::Busy, + "encrypted sync restore must finish before starting runtime work", + ) + })?; + } + Ok(()) + } + pub fn repositories(&self) -> BackendRepositories { BackendRepositories { preferences: Arc::clone(&self.preferences), @@ -2377,6 +2556,7 @@ impl OpenLessBackend { /// passed to [`Self::submit_less_computer_with_session`], or released with /// [`Self::abort_less_computer_capture`]. pub fn begin_less_computer_capture(&self, session_id: SessionId) -> Result<(), BackendError> { + let _runtime = self.runtime_start_work.acquire()?; if !self.get_preferences().coding_agent_enabled { return Err(BackendError::new( BackendErrorCode::PermissionDenied, @@ -2420,6 +2600,7 @@ impl OpenLessBackend { session_id: SessionId, recording_control: Arc, ) -> Result { + let _runtime = self.runtime_start_work.acquire()?; let preferences = self.get_preferences(); if !preferences.coding_agent_enabled { return Err(BackendError::new( @@ -2894,6 +3075,7 @@ impl OpenLessBackend { session_id: SessionId, transcript: String, ) -> Result { + let _runtime = self.runtime_start_work.acquire()?; let preferences = self.get_preferences(); if !preferences.coding_agent_enabled { return Err(BackendError::new( @@ -3086,13 +3268,37 @@ impl OpenLessBackend { } pub async fn start(&self) -> Result { + if let Some(error) = &self.startup_error { + return Err(error.clone()); + } + // Native status warms only through the already-bound sync gate. A + // pending journal therefore uses the Host's read-only loader before + // startup recovery/auto-sync tries to capture credentials. + let before = self.get_preferences(); + let warmed = self.deps.credential_store.status(before).await; + if let Some(sync) = &self.encrypted_sync { + // Keep Settings available even after a denied/failed warm read. + // The service records its own retryable recovery/storage error; + // runtime admission remains fenced until recovery is complete. + let _ = sync.start(Arc::clone(&self.deps.task_spawner)).await; + } let preferences = self.get_preferences(); - let credentials = match self.deps.credential_store.status(preferences.clone()).await { + let status = match warmed { + // Recovery can replace both preferences and credentials. Recompute + // from the new in-memory target after it has settled. + Ok(_) if self.encrypted_sync.is_some() => { + self.deps.credential_store.status(preferences.clone()).await + } + Ok(credentials) => Ok(credentials), + Err(error) => Err(error), + }; + let credentials = match status { Ok(credentials) => credentials, - Err(error) if error.code == BackendErrorCode::Persistence => { - // Vault unreadable (e.g. Android Keystore temporarily unavailable) - // must not fail the 2.0 handshake. Dictation still gates on read(). - log::warn!("[core] startup credential status unavailable: {error}"); + Err(error) => { + log::warn!( + "[core] startup credential status unavailable: {:?}", + error.code + ); CredentialsStatus { pipeline_mode: crate::shared_types::effective_pipeline_mode( preferences.multimodal_pipeline_enabled, @@ -3101,7 +3307,6 @@ impl OpenLessBackend { ..CredentialsStatus::default() } } - Err(error) => return Err(error), }; let mut state = self.state.write().expect("backend state lock poisoned"); state.credentials = credentials; @@ -3136,6 +3341,9 @@ impl OpenLessBackend { } pub async fn shutdown(&self) -> Result<(), BackendError> { + if let Some(sync) = &self.encrypted_sync { + sync.shutdown().await; + } let (active_session, preserve_quick_note) = { let mut state = self.state.write().expect("backend state lock poisoned"); if !state.running { @@ -3399,12 +3607,12 @@ impl OpenLessBackend { }; let preferences = self.get_preferences(); let mode = preferences.hotkey.mode; - let modifier_only = crate::shortcut_types::is_modifier_chord_binding( - &preferences.dictation_hotkey, - ) || crate::hotkey_interpreter::modifier_arbitration_required( - crate::shortcut_types::legacy_modifier_trigger(&preferences.dictation_hotkey), - mode, - ); + let modifier_only = + crate::shortcut_types::is_modifier_chord_binding(&preferences.dictation_hotkey) + || crate::hotkey_interpreter::modifier_arbitration_required( + crate::shortcut_types::legacy_modifier_trigger(&preferences.dictation_hotkey), + mode, + ); let (intent, reservation) = { let mut hotkey = self .hotkey @@ -3953,6 +4161,7 @@ impl OpenLessBackend { options: crate::SettingsUpdateOptions, runtime: &R, ) -> Result { + self.ensure_runtime_ready()?; let _write_guard = self .settings_write_gate .lock() @@ -12758,8 +12967,10 @@ mod tests { ] { let data_dir = TestDataDir::new("modifier-chord-companion"); let engine = crate::testing::FixtureDictationEngine::successful("raw", "polished"); - let backend = - backend_with_dictation_engine(data_dir.path().to_path_buf(), Arc::new(engine.clone())); + let backend = backend_with_dictation_engine( + data_dir.path().to_path_buf(), + Arc::new(engine.clone()), + ); backend.start().await.unwrap(); let mut preferences = backend.get_preferences(); preferences.hotkey.mode = mode; @@ -13027,4 +13238,340 @@ mod tests { backend.shutdown().await.unwrap(); let _ = std::fs::remove_dir_all(data_dir); } + fn runtime_restore_backend() -> TestBackend { + runtime_restore_backend_with_polisher(Arc::new( + crate::testing::FixtureTextPolisher::successful("fixture"), + )) + } + + fn runtime_restore_backend_with_polisher( + polisher: Arc, + ) -> TestBackend { + let data_dir = TestDataDir::new("runtime-restore"); + let mut deps = BackendDependencies::unsupported(); + deps.dictation_engine = Arc::new(FakeEngine); + deps.credential_store = Arc::new(crate::credentials::InMemoryCredentialStore::default()); + deps.selection_runtime = Some(Arc::new( + crate::testing::FixtureSelectionRuntime::successful( + crate::domains::SelectionCapture { + text: "fixture".into(), + source_app: None, + }, + InsertOutcome::Inserted, + ), + )); + deps.selection_polisher = Some(polisher); + deps.marketplace_config = Some( + crate::marketplace::MarketplaceConfig::new("https://market.example") + .unwrap() + .with_encrypted_sync(crate::cloud_sync_e2ee::EncryptedSyncConfig { + service_origin: "https://sync.example".into(), + app_version: "runtime-test".into(), + }), + ); + let backend = OpenLessBackend::new( + BackendConfig { + data_dir: data_dir.path().into(), + ..BackendConfig::default() + }, + deps, + ) + .unwrap(); + // This fixture exercises local admission only; do not start the network sync worker. + backend.state.write().unwrap().running = true; + TestBackend { + backend, + _data_dir: data_dir, + } + } + + #[tokio::test] + async fn runtime_restore_actual_store_recovery_rejects_active_voice_before_repository_mutation() + { + use crate::cloud_sync_e2ee_documents::DocumentError; + let backend = runtime_restore_backend(); + backend.ensure_runtime_ready().unwrap(); + let mut preferences = backend.get_preferences(); + preferences.coding_agent_enabled = true; + backend + .update_settings( + preferences, + crate::SettingsUpdateOptions::STRICT, + &crate::NoopSettingsRuntime, + ) + .unwrap(); + let owner = SessionId::new(); + backend.begin_less_computer_capture(owner).unwrap(); + let gate = crate::cloud_sync_e2ee_store::gate::open_for_data_dir(backend._data_dir.path()) + .unwrap(); + drop(gate.begin_mutation().unwrap()); // model an interrupted save that requires reconciliation + let before = std::fs::read( + backend + ._data_dir + .path() + .join("encrypted-sync/generation.json"), + ) + .unwrap(); + let store = backend.encrypted_sync_store.as_ref().unwrap(); + assert_eq!( + store.recover_registered().await.unwrap_err(), + DocumentError::RuntimeBusy + ); + assert_eq!( + std::fs::read( + backend + ._data_dir + .path() + .join("encrypted-sync/generation.json") + ) + .unwrap(), + before + ); + assert_eq!( + backend.ensure_runtime_ready().unwrap_err().code, + BackendErrorCode::Busy + ); + assert!( + backend.get_preferences().coding_agent_enabled, + "settings remain readable for recovery UI" + ); + backend.abort_less_computer_capture(owner).unwrap(); + } + + #[tokio::test] + async fn runtime_restore_constructor_guard_blocks_all_configured_runtime_starts_on_recovery_latch( + ) { + let backend = runtime_restore_backend(); + let gate = crate::cloud_sync_e2ee_store::gate::open_for_data_dir(backend._data_dir.path()) + .unwrap(); + drop(gate.begin_mutation().unwrap()); + assert_eq!( + backend.start_dictation().await.unwrap_err().code, + BackendErrorCode::Busy + ); + assert_eq!( + backend + .begin_less_computer_capture(SessionId::new()) + .unwrap_err() + .code, + BackendErrorCode::Busy + ); + assert_eq!( + backend + .submit_less_computer("fixture".into()) + .await + .unwrap_err() + .code, + BackendErrorCode::Busy + ); + assert_eq!( + backend + .services() + .selection + .begin_polish(crate::domains::SelectionPolishRequest { + selected_text: Some("fixture".into()), + mode: crate::PolishMode::Raw, + instruction: None, + }) + .await + .unwrap_err() + .code, + BackendErrorCode::Busy + ); + assert_eq!( + backend + .services() + .selection_voice + .begin(crate::domains::SelectionCapture { + text: "fixture".into(), + source_app: None + }) + .await + .unwrap_err() + .code, + BackendErrorCode::Busy + ); + assert_eq!(backend.snapshot().dictation.phase, DictationPhase::Idle); + } + + #[tokio::test] + async fn runtime_restore_cancelled_apply_ticket_stays_busy_until_native_completion() { + let (backend, _) = backend(); + let service = &backend.services().selection_voice; + let session = service + .begin(crate::domains::SelectionCapture { + text: "fixture".into(), + source_app: None, + }) + .await + .unwrap(); + service.mark_processing(session).await.unwrap(); + service + .set_preview(crate::domains::SelectionVoicePreviewUpdate { + session_id: session, + owner_session_id: None, + text: "replacement".into(), + summary: None, + }) + .await + .unwrap(); + let ticket = service + .begin_preview_apply(None, "replacement".into()) + .unwrap(); + service.cancel(Some(session)).await.unwrap(); + assert!( + !service.runtime_restore_idle(), + "cancel does not complete a native apply ticket" + ); + assert_eq!( + service + .finish_preview_apply( + ticket.ticket_id, + crate::domains::SelectionVoiceApplyOutcome::Failed + ) + .await + .unwrap_err() + .code, + BackendErrorCode::Cancelled + ); + assert!(service.runtime_restore_idle()); + } + + #[test] + fn runtime_restore_bindings_do_not_keep_store_or_services_alive() { + let backend = runtime_restore_backend(); + let store = Arc::downgrade(backend.encrypted_sync_store.as_ref().unwrap()); + let voice = Arc::downgrade(&backend.voice_sessions); + let qa = Arc::downgrade(&backend.services().qa); + let selection_voice = Arc::downgrade(&backend.services().selection_voice); + drop(backend); + assert!(store.upgrade().is_none()); + assert!(voice.upgrade().is_none()); + assert!(qa.upgrade().is_none()); + assert!(selection_voice.upgrade().is_none()); + } + struct RestoreCancelPolisher { + entered: Arc, + release: Arc, + drained: Arc, + } + impl crate::ports::TextPolisher for RestoreCancelPolisher { + fn polish( + &self, + _: SessionId, + _: Arc, + _: String, + _: Arc, + ) -> BoxFuture<'static, Result> { + Box::pin(async { Ok(crate::ports::PolishOutput::text("fixture")) }) + } + fn cancel(&self, _: SessionId) -> BoxFuture<'static, Result<(), BackendError>> { + let entered = self.entered.clone(); + let release = self.release.clone(); + let drained = self.drained.clone(); + Box::pin(async move { + entered.notify_one(); + release.notified().await; + drained.notify_one(); + Ok(()) + }) + } + } + + #[tokio::test] + async fn runtime_restore_selection_cancel_retains_lease_after_waiter_drop() { + let polisher = Arc::new(RestoreCancelPolisher { + entered: Arc::new(tokio::sync::Notify::new()), + release: Arc::new(tokio::sync::Notify::new()), + drained: Arc::new(tokio::sync::Notify::new()), + }); + let backend = runtime_restore_backend_with_polisher(polisher.clone()); + let mut preferences = backend.get_preferences(); + preferences.selection_polish_output_mode = + crate::shared_types::SelectionPolishOutputMode::PreviewConfirm; + backend + .update_settings( + preferences, + crate::SettingsUpdateOptions::STRICT, + &crate::NoopSettingsRuntime, + ) + .unwrap(); + let selection = backend.services().selection.clone(); + selection + .begin_polish(crate::domains::SelectionPolishRequest { + selected_text: Some("fixture".into()), + mode: crate::PolishMode::Raw, + instruction: None, + }) + .await + .unwrap(); + let cancel = tokio::spawn(selection.cancel(None)); + polisher.entered.notified().await; + assert_eq!( + selection.snapshot().await.unwrap().phase, + crate::domains::SelectionPhase::Cancelled + ); + assert!(!selection.runtime_restore_idle()); + cancel.abort(); + assert!(cancel.await.unwrap_err().is_cancelled()); + assert!(!selection.runtime_restore_idle()); + polisher.release.notify_one(); + polisher.drained.notified().await; + for _ in 0..4 { + tokio::task::yield_now().await; + } + assert!(selection.runtime_restore_idle()); + } + #[tokio::test] + async fn restore_host_blocked_startup_is_visible_and_never_opens_or_mutates_real_stores() { + struct ForbiddenRuntime; + impl crate::SettingsRuntime for ForbiddenRuntime { + fn prepare( + &self, + _: &crate::SettingsEffectPlan, + ) -> Result { + panic!("blocked startup must not run Host effects") + } + } + let data_dir = TestDataDir::new("blocked-startup"); + let error = BackendError::new(BackendErrorCode::Persistence, "local storage access denied"); + let backend = OpenLessBackend::blocked_startup( + BackendConfig { + data_dir: data_dir.path().into(), + ..BackendConfig::default() + }, + error, + ); + assert!(!data_dir.path().exists()); + assert_eq!( + backend.start().await.unwrap_err().code, + BackendErrorCode::Persistence + ); + assert!(!backend.snapshot().running); + assert_eq!( + backend.ensure_runtime_ready().unwrap_err().code, + BackendErrorCode::Persistence + ); + let mut target = backend.get_preferences(); + target.launch_at_login = true; + assert_eq!( + backend + .update_settings( + target, + crate::SettingsUpdateOptions::STRICT, + &ForbiddenRuntime + ) + .unwrap_err() + .code, + BackendErrorCode::Persistence + ); + assert_eq!( + backend + .begin_less_computer_capture(SessionId::new()) + .unwrap_err() + .code, + BackendErrorCode::Persistence + ); + assert!(!data_dir.path().exists()); + } } diff --git a/openless-all/app/crates/openless-core/src/cloud_sync.rs b/openless-all/app/crates/openless-core/src/cloud_sync.rs index 7b1865671..4a7a6c8f8 100644 --- a/openless-all/app/crates/openless-core/src/cloud_sync.rs +++ b/openless-all/app/crates/openless-core/src/cloud_sync.rs @@ -296,6 +296,19 @@ impl CloudSyncService { } fn restore_local(&self, payload: &CloudSyncPayload) -> Result<(), BackendError> { + // The legacy four-command protocol has no encrypted crash journal or Host-effect + // convergence. It must never bypass an installed E2EE repository write barrier. + if crate::cloud_sync_e2ee_store::gate::gate_for_path( + self.repositories.preferences.persistence_path(), + ) + .map_err(|error| BackendError::new(BackendErrorCode::InvalidState, error.to_string()))? + .is_some() + { + return Err(BackendError::new( + BackendErrorCode::Unsupported, + "当前仓库暂不支持旧版云端恢复,请使用加密云同步的确认恢复流程。", + )); + } validate_payload(payload).map_err(|_| invalid_remote())?; let mut next_packs = validated_native_packs(payload)?; let dictionary: Vec = payload @@ -627,3 +640,94 @@ fn validate_base_revision(revision: u64) -> Result<(), BackendError> { Ok(()) } } + +#[cfg(test)] +mod encrypted_gate_tests { + use super::*; + struct Temp(PathBuf); + impl Temp { + fn new() -> Self { + let path = + std::env::temp_dir().join(format!("legacy-sync-gate-{}", uuid::Uuid::new_v4())); + std::fs::create_dir_all(&path).unwrap(); + Self(path) + } + } + impl Drop for Temp { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.0); + } + } + fn service(repositories: BackendRepositories) -> CloudSyncService { + let marketplace = MarketplaceService::new( + crate::MarketplaceConfig::new("https://market.example.test").unwrap(), + Arc::new(crate::InMemoryCredentialStore::default()), + repositories.preferences.clone(), + repositories.style_packs.clone(), + crate::events::BackendEventPublisher::new(Arc::new(crate::events::EventBus::new(8))), + Arc::new(std::sync::atomic::AtomicU64::new(0)), + ) + .unwrap(); + CloudSyncService::new( + Arc::new(marketplace), + repositories, + Arc::new(Mutex::new(())), + ) + } + #[test] + fn registered_encrypted_repositories_reject_legacy_restore_even_when_gate_is_idle() { + for hold_exclusive in [false, true] { + let temp = Temp::new(); + let gate = crate::cloud_sync_e2ee_store::gate::open_for_data_dir(&temp.0).unwrap(); + let repositories = BackendRepositories::open(&temp.0).unwrap(); + let sync = service(repositories.clone()); + let mut payload = sync.capture(CloudSyncUiPreferences::default()).unwrap(); + payload.dictionary.push(SyncDictionaryEntry { + id: "legacy-extra".into(), + phrase: "must not persist".into(), + note: None, + enabled: true, + hits: 0, + created_at: "2026-09-26T00:00:00Z".into(), + }); + let generation = gate.generation().unwrap(); + let preferences = std::fs::read(temp.0.join("preferences.json")).ok(); + let styles = std::fs::read(temp.0.join("style-packs.json")).unwrap(); + let _permit = hold_exclusive.then(|| gate.try_exclusive().unwrap()); + assert_eq!( + sync.restore_local(&payload).unwrap_err().code, + BackendErrorCode::Unsupported + ); + assert!(repositories.vocabulary.list().unwrap().is_empty()); + assert_eq!( + std::fs::read(temp.0.join("preferences.json")).ok(), + preferences + ); + assert_eq!( + std::fs::read(temp.0.join("style-packs.json")).unwrap(), + styles + ); + assert_eq!(gate.generation().unwrap(), generation); + } + } + #[test] + fn standalone_legacy_repositories_without_an_encrypted_gate_keep_their_existing_restore() { + let temp = Temp::new(); + let repositories = BackendRepositories::open(&temp.0).unwrap(); + let sync = service(repositories.clone()); + let mut payload = sync.capture(CloudSyncUiPreferences::default()).unwrap(); + payload.dictionary.push(SyncDictionaryEntry { + id: "legacy-extra".into(), + phrase: "standalone restore".into(), + note: None, + enabled: true, + hits: 0, + created_at: "2026-09-26T00:00:00Z".into(), + }); + sync.restore_local(&payload).unwrap(); + assert_eq!( + repositories.vocabulary.list().unwrap()[0].phrase, + "standalone restore" + ); + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/adapter.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/adapter.rs new file mode 100644 index 000000000..16d826ab2 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/adapter.rs @@ -0,0 +1,248 @@ +use std::{path::Path, sync::Arc}; + +use futures_util::future::BoxFuture; +use sha2::{Digest, Sha256}; + +use crate::cloud_sync_e2ee_documents::{ + CryptoJournalProtector, DocumentError, DocumentResult, ExportedDocuments, JournalProtector, + RestoreContext, SecretJson, SyncScope, ValidatedSyncDocuments, +}; +use crate::cloud_sync_e2ee_protocol::types::{DocumentSet, Revision, SourceDevice}; +use crate::cloud_sync_e2ee_store::{ + extensions::{DeviceExtensionKey, ProtectedExtensionStore}, + gate::SyncChange, + CoreSyncStore, +}; + +use super::{document_error, local::LocalStorage, service::SyncServiceData, SyncResult}; + +pub(crate) fn build( + config: super::EncryptedSyncConfig, + data_dir: &Path, + repositories: crate::BackendRepositories, + credentials: Arc, + marketplace: Arc, + github_client_id: String, + events: crate::events::BackendEventPublisher, +) -> SyncResult<(super::EncryptedSyncService, Arc)> { + let origin = url::Url::parse(&config.service_origin) + .map_err(|_| super::error("unsupported_protocol"))?; + if origin.scheme() != "https" + || !origin.username().is_empty() + || origin.password().is_some() + || origin.path() != "/" + || origin.query().is_some() + || origin.fragment().is_some() + || data_dir.as_os_str().is_empty() + { + return Err(super::error("unsupported_protocol")); + } + let origin = origin.origin().ascii_serialization(); + let root = data_dir.join("encrypted-sync"); + std::fs::create_dir_all(&root).map_err(|_| super::error("local_storage_unavailable"))?; + let gate = + crate::cloud_sync_e2ee_store::gate::open_for_data_dir(data_dir).map_err(document_error)?; + let device_id = load_device_id(&root)?; + let device = SourceDevice { + id: device_id.clone(), + os: std::env::consts::OS.into(), + arch: std::env::consts::ARCH.into(), + app_version: config.app_version, + }; + let local = LocalStorage::new( + root.join("protected"), + origin.clone(), + device_id, + credentials.clone(), + ); + let store = Arc::new( + CoreSyncStore::new( + repositories, + credentials, + data_dir.into(), + device, + gate, + Arc::new(local.clone()), + ) + .map_err(document_error)?, + ); + let service = super::EncryptedSyncService::new( + super::SyncServiceConfig { + origin, + github_client_id, + }, + marketplace, + local, + store.clone(), + events, + ); + Ok((service, store)) +} + +pub(crate) fn load_device_id(root: &Path) -> SyncResult { + let device_path = root.join("device-id"); + let device_id = match std::fs::read_to_string(&device_path) { + Ok(value) => value, + Err(e) if e.kind() == std::io::ErrorKind::NotFound => { + // Never invent another keyring/AAD binding for existing ciphertext. + for entry in + std::fs::read_dir(root).map_err(|_| super::error("local_storage_unavailable"))? + { + let entry = entry.map_err(|_| super::error("local_storage_unavailable"))?; + let path = entry.path(); + if path.is_dir() + && std::fs::read_dir(&path) + .map_err(|_| super::error("local_storage_unavailable"))? + .next() + .is_some() + { + return Err(super::error("recovery_required")); + } + } + let id = uuid::Uuid::new_v4().to_string(); + if super::local::durable_create(&device_path, id.as_bytes())? { + id + } else { + std::fs::read_to_string(&device_path) + .map_err(|_| super::error("local_storage_unavailable"))? + } + } + Err(_) => return Err(super::error("local_storage_unavailable")), + }; + crate::cloud_sync_e2ee_protocol::types::UuidV4::parse(&device_id) + .map_err(|_| super::error("recovery_required"))?; + Ok(device_id) +} + +impl ProtectedExtensionStore for LocalStorage { + fn read_scope(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + self.read(&scope_bucket(&scope)?, "extensions") + .await + .map_err(|_| DocumentError::JournalUnavailable) + }) + } + + fn write_scope( + &self, + scope: SyncScope, + value: SecretJson, + ) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + self.write(&scope_bucket(&scope)?, "extensions", value) + .await + .map_err(|_| DocumentError::JournalUnavailable) + }) + } + + fn read_device( + &self, + key: DeviceExtensionKey, + ) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + if key == DeviceExtensionKey::UiPreferences { + self.read_ui() + .await + .map(|value| value.map(|envelope| envelope.value)) + .map_err(|_| DocumentError::JournalUnavailable) + } else { + self.read("device", key.storage_name()) + .await + .map_err(|_| DocumentError::JournalUnavailable) + } + }) + } + + fn write_device( + &self, + key: DeviceExtensionKey, + value: SecretJson, + ) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + if key == DeviceExtensionKey::UiPreferences { + let envelope = super::local::UiEnvelope { + schema_version: 1, + revision: uuid::Uuid::new_v4().to_string(), + value, + }; + self.write("device", key.storage_name(), envelope) + .await + .map_err(|_| DocumentError::JournalUnavailable) + } else { + self.write("device", key.storage_name(), value) + .await + .map_err(|_| DocumentError::JournalUnavailable) + } + }) + } + + fn read_ui_revision(&self) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + self.read_ui() + .await + .map(|value| value.map(|envelope| envelope.revision)) + .map_err(|_| DocumentError::JournalUnavailable) + }) + } + + fn journal_protector(&self) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + let key = self.key().await.map_err(|_| DocumentError::Locked)?; + Ok(Arc::new(CryptoJournalProtector::new(key)) as Arc) + }) + } +} + +fn scope_bucket(scope: &SyncScope) -> DocumentResult { + // Changing the cloud encryption password keeps the same locally protected + // baseline/tombstone bucket; account or vault changes never share it. + let bytes = serde_json::to_vec(&[ + &scope.service_origin, + &scope.owner_github_id, + &scope.vault_id, + &scope.device_id, + ]) + .map_err(|_| DocumentError::InvalidDocument)?; + Ok(format!("scope:{:x}", Sha256::digest(bytes))) +} + +impl SyncServiceData for CoreSyncStore { + fn export(&self, scope: SyncScope) -> BoxFuture<'_, SyncResult> { + Box::pin(async move { self.export_scope(scope).await.map_err(document_error) }) + } + fn restore( + &self, + desired: ValidatedSyncDocuments, + context: RestoreContext, + ) -> BoxFuture<'_, SyncResult> { + Box::pin(async move { + self.restore_scope(desired, context) + .await + .map_err(document_error) + }) + } + fn recover(&self) -> BoxFuture<'_, SyncResult<()>> { + Box::pin(async move { self.recover_registered().await.map_err(document_error) }) + } + fn baseline( + &self, + scope: SyncScope, + documents: DocumentSet, + revision: Revision, + ) -> BoxFuture<'_, SyncResult<()>> { + Box::pin(async move { + self.record_baseline(scope, documents, revision) + .await + .map_err(document_error) + }) + } + fn generation(&self) -> SyncResult { + CoreSyncStore::generation(self).map_err(document_error) + } + fn device(&self) -> SourceDevice { + CoreSyncStore::device(self) + } + fn changes(&self) -> tokio::sync::watch::Receiver { + CoreSyncStore::changes(self) + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/api.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/api.rs new file mode 100644 index 000000000..b01b5b66a --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/api.rs @@ -0,0 +1,231 @@ +use super::OpenLessBackend; +use crate::{cloud_sync_e2ee::*, BackendError}; + +impl OpenLessBackend { + pub async fn sign_out_account(&self) -> Result<(), BackendError> { + if let Some(service) = &self.encrypted_sync { + service.sign_out().await.map(|_| ()) + } else { + self.services().marketplace.logout().await + } + } + fn encrypted_sync_service( + &self, + ) -> Result<&crate::cloud_sync_e2ee::EncryptedSyncService, BackendError> { + self.encrypted_sync + .as_ref() + .ok_or_else(|| crate::cloud_sync_e2ee::error("service_unavailable")) + } + + pub fn cloud_sync_e2ee_status(&self) -> Result { + Ok(self.encrypted_sync_service()?.status()) + } + + pub async fn cloud_sync_e2ee_claim_setup_prompt(&self) -> Result { + let Some(service) = self.encrypted_sync.as_ref() else { + return Ok(false); + }; + let Some(store) = self.encrypted_sync_store.as_ref() else { + return Ok(false); + }; + let store = std::sync::Arc::clone(store); + let settings_gate = std::sync::Arc::clone(&self.settings_write_gate); + service + .claim_setup_prompt( + std::sync::Arc::clone(&self.deps.credential_store), + move || { + let _settings = match settings_gate.try_lock() { + Ok(guard) => guard, + Err(std::sync::TryLockError::WouldBlock) => return Ok(None), + Err(std::sync::TryLockError::Poisoned(_)) => { + return Err(crate::cloud_sync_e2ee::error("recovery_required")) + } + }; + store + .setup_prompt_state() + .map_err(crate::cloud_sync_e2ee::document_error) + }, + ) + .await + } + + pub async fn cloud_sync_e2ee_prepare_enable( + &self, + consent_version: String, + ) -> Result { + self.encrypted_sync_service()? + .prepare_enable(consent_version) + .await + } + + pub async fn cloud_sync_e2ee_create( + &self, + password: String, + password_confirmation: String, + remember_key: bool, + consent_version: String, + observed_revision: String, + ) -> Result { + self.encrypted_sync_service()? + .create( + password, + password_confirmation, + remember_key, + consent_version, + observed_revision, + ) + .await + } + + pub async fn cloud_sync_e2ee_unlock( + &self, + password: String, + remember_key: bool, + ) -> Result { + self.encrypted_sync_service()? + .unlock(password, remember_key) + .await + } + + pub async fn cloud_sync_e2ee_lock(&self) -> Result { + self.encrypted_sync_service()?.lock().await + } + + pub async fn cloud_sync_e2ee_set_enabled( + &self, + enabled: bool, + ) -> Result { + self.encrypted_sync_service()?.set_enabled(enabled).await + } + + pub async fn cloud_sync_e2ee_sync_now(&self) -> Result { + self.encrypted_sync_service()?.sync_now().await + } + + pub fn cloud_sync_e2ee_cancel( + &self, + task_id: String, + ) -> Result { + self.encrypted_sync_service()?.cancel(&task_id) + } + + pub async fn cloud_sync_e2ee_preview_restore( + &self, + observed_revision: String, + ) -> Result { + self.encrypted_sync_service()? + .preview_restore(observed_revision) + .await + } + + pub async fn cloud_sync_e2ee_apply_restore( + &self, + preview_id: String, + mode: RestoreMode, + conflict_choices: Vec, + ) -> Result { + self.encrypted_sync_service()? + .apply_restore(preview_id, mode, conflict_choices) + .await + } + + pub async fn cloud_sync_e2ee_change_password( + &self, + current_password: String, + new_password: String, + confirmation: String, + remember_key: bool, + ) -> Result { + self.encrypted_sync_service()? + .change_password(current_password, new_password, confirmation, remember_key) + .await + } + + pub async fn cloud_sync_e2ee_delete_remote( + &self, + expected_vault_id: String, + observed_revision: String, + confirmed: bool, + ) -> Result { + self.encrypted_sync_service()? + .delete_remote(expected_vault_id, observed_revision, confirmed) + .await + } + + pub async fn cloud_sync_e2ee_sign_out(&self) -> Result { + self.encrypted_sync_service()?.sign_out().await + } + + pub async fn cloud_sync_e2ee_begin_sign_in(&self) -> Result { + self.encrypted_sync_service()?.begin_sign_in().await + } + + pub async fn cloud_sync_e2ee_poll_sign_in( + &self, + authorization_session_id: String, + ) -> Result { + self.encrypted_sync_service()? + .poll_sign_in(authorization_session_id) + .await + } + + pub async fn cloud_sync_e2ee_cancel_sign_in( + &self, + authorization_session_id: String, + ) -> Result<(), BackendError> { + self.encrypted_sync_service()? + .cancel_sign_in(authorization_session_id) + .await + } + + pub async fn cloud_sync_e2ee_set_ui_preferences( + &self, + locale: String, + font_scale: String, + ) -> Result<(), BackendError> { + let store = self + .encrypted_sync_store + .as_ref() + .ok_or_else(|| crate::cloud_sync_e2ee::error("service_unavailable"))?; + store + .set_ui_preferences(crate::cloud_sync_e2ee_documents::ui_preferences( + &locale, + &font_scale, + )) + .await + .map_err(crate::cloud_sync_e2ee::document_error) + } + + pub async fn cloud_sync_e2ee_get_ui_preferences( + &self, + ) -> Result, BackendError> { + self.encrypted_sync_service()?.ui_preferences().await + } + + pub async fn cloud_sync_e2ee_get_ui_preferences_snapshot( + &self, + ) -> Result { + self.encrypted_sync_service()? + .ui_preferences_snapshot() + .await + } + + pub async fn cloud_sync_e2ee_set_ui_preferences_checked( + &self, + locale: String, + font_scale: String, + expected_revision: Option, + ) -> Result<(), BackendError> { + let store = self + .encrypted_sync_store + .as_ref() + .ok_or_else(|| crate::cloud_sync_e2ee::error("service_unavailable"))?; + store + .set_ui_preferences_checked( + crate::cloud_sync_e2ee_documents::ui_preferences(&locale, &font_scale), + expected_revision, + ) + .await + .map_err(crate::cloud_sync_e2ee::document_error) + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/dto.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/dto.rs new file mode 100644 index 000000000..30ea132ca --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/dto.rs @@ -0,0 +1,222 @@ +//! Public, value-free sync status. Secret document types never cross IPC. + +use std::collections::BTreeMap; + +use serde::{Deserialize, Serialize}; + +pub const CONSENT_VERSION: &str = "encrypted-full-snapshot-v1"; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum AuthState { + SignedOut, + SignedIn, + Expired, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum KeyState { + Locked, + Unlocked, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum SyncState { + Disabled, + SignInRequired, + UnlockRequired, + Ready, + Pending, + Syncing, + Conflict, + Failed, + OutcomeUnknown, + RecoveryRequired, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SyncAccount { + pub github_id: String, + pub login: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EncryptedSyncSignIn { + pub authorization_session_id: String, + pub user_code: String, + pub verification_uri: String, + pub expires_at: String, + pub interval_seconds: u64, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde( + tag = "status", + rename_all = "snake_case", + rename_all_fields = "camelCase" +)] +pub enum EncryptedSyncSignInResult { + Pending { slow_down: bool }, + SignedIn { account: SyncAccount }, + Denied, + Expired, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SyncFailure { + pub code: String, + pub retry_after_seconds: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EncryptedSyncStatus { + pub sequence: String, + pub enabled: bool, + pub auth_state: AuthState, + pub key_state: KeyState, + pub sync_state: SyncState, + pub account: Option, + pub vault_id: Option, + pub key_id: Option, + pub local_generation: String, + pub last_synced_local_generation: Option, + pub remote_revision: Option, + pub last_successful_sync_at: Option, + pub pending_operation_id: Option, + pub last_error: Option, + pub recovery_required: bool, + pub has_cloud_snapshot: Option, + pub task_id: Option, + pub service_origin: String, + pub consent_version: Option, + pub backup_retention_days: Option, +} + +impl EncryptedSyncStatus { + pub(crate) fn initial(origin: String) -> Self { + Self { + sequence: "0".into(), + enabled: false, + auth_state: AuthState::SignedOut, + key_state: KeyState::Locked, + sync_state: SyncState::Disabled, + account: None, + vault_id: None, + key_id: None, + local_generation: "0".into(), + last_synced_local_generation: None, + remote_revision: None, + last_successful_sync_at: None, + pending_operation_id: None, + last_error: None, + recovery_required: false, + has_cloud_snapshot: None, + task_id: None, + service_origin: origin, + consent_version: None, + backup_retention_days: None, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum EnableStep { + Create, + Unlock, + RestoreReview, + Ready, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EnablePreparation { + pub next_step: EnableStep, + pub status: EncryptedSyncStatus, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum RestoreMode { + Replace, + Merge, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct SyncConflictChoice { + pub id: String, + pub side: ConflictSide, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum ConflictSide { + Local, + Cloud, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SyncConflictItem { + pub id: String, + pub kind: String, + /// A fixed reason code, never a value, path, history excerpt, or API key. + pub reason: String, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct RestorePreview { + pub preview_id: String, + pub unconfirmed_operation_id: Option, + pub observed_revision: String, + pub local_generation: String, + pub counts: BTreeMap, + pub device_settings_to_review: Vec, + pub conflicts: Vec, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EncryptedSyncEvent { + pub sequence: String, + pub account_id: Option, + pub vault_id: Option, + pub task_id: Option, + pub status: EncryptedSyncStatus, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EncryptedSyncConflictEvent { + pub sequence: String, + pub account_id: String, + pub vault_id: String, + pub task_id: Option, + pub preview: RestorePreview, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EncryptedSyncRestoreEvent { + pub sequence: String, + pub account_id: String, + pub vault_id: String, + pub task_id: Option, + pub local_generation: String, + pub ui_preferences: BTreeMap, +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct EncryptedUiPreferencesSnapshot { + pub preferences: Option, + pub revision: Option, +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/local.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/local.rs new file mode 100644 index 000000000..64a791294 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/local.rs @@ -0,0 +1,465 @@ +//! Encrypted local baselines and unresolved operations. The wrapping key lives +//! only in the host's system vault, never beside these files. + +use std::{ + fs, + io::Write, + path::{Path, PathBuf}, + sync::Arc, +}; + +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use sha2::{Digest, Sha256}; +use tokio::sync::OnceCell; +use zeroize::Zeroizing; + +use crate::cloud_sync_e2ee_protocol::crypto::{open_local, seal_local, DerivedKey}; +use crate::credentials::SyncSecretAccount; +use crate::{CredentialStore, SecretValue}; + +use super::{error, SyncResult}; + +#[derive(Clone)] +pub(crate) struct LocalStorage { + root: PathBuf, + origin: String, + device_id: String, + credentials: Arc, + cipher: Arc>>, + io: Arc>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct ClientSettings { + pub version: u32, + pub enabled: bool, + pub consent_version: Option, + pub owner_id: Option, + pub remember_key: bool, + #[serde(default)] + pub key_preference_epoch: u64, + pub last_success: Option, + pub last_generation: Option, + pub vault_id: Option, + pub key_id: Option, + pub prompted: bool, +} + +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct UiEnvelope { + pub schema_version: u32, + pub revision: String, + pub value: crate::cloud_sync_e2ee_documents::SecretJson, +} + +impl Default for ClientSettings { + fn default() -> Self { + Self { + version: 1, + enabled: false, + consent_version: None, + owner_id: None, + remember_key: false, + key_preference_epoch: 0, + last_success: None, + last_generation: None, + vault_id: None, + key_id: None, + prompted: false, + } + } +} + +impl LocalStorage { + pub(crate) fn new( + root: PathBuf, + origin: String, + device_id: String, + credentials: Arc, + ) -> Self { + Self { + root, + origin, + device_id, + credentials, + cipher: Arc::new(OnceCell::new()), + io: Arc::new(tokio::sync::Mutex::new(())), + } + } + + pub(crate) fn initialized(&self) -> SyncResult { + self.path("device", "client") + .try_exists() + .map_err(|_| error("local_storage_unavailable")) + } + + pub(crate) async fn read_ui(&self) -> SyncResult> { + let value: Option = self.read("device", "sync-ui-preferences").await?; + if let Some(value) = &value { + if value.schema_version != 1 + || crate::cloud_sync_e2ee_protocol::types::UuidV4::parse(&value.revision).is_err() + { + return Err(error("recovery_required")); + } + } + Ok(value) + } + + pub(crate) fn binding( + &self, + owner: &str, + vault: &str, + key: &str, + ) -> SyncResult { + let binding = serde_json::to_vec(&[&self.origin, owner, vault, key, &self.device_id]) + .map_err(|_| error("local_storage_unavailable"))?; + SyncSecretAccount::new(format!("cloud-sync.e2ee.key.{:x}", Sha256::digest(binding))) + .map_err(|_| error("local_storage_unavailable")) + } + + pub(crate) async fn key(&self) -> SyncResult> { + self.cipher + .get_or_try_init(|| async { + let aad = self.aad("device", "storage-key")?; + let account = SyncSecretAccount::new(format!( + "cloud-sync.e2ee.local.{:x}", + Sha256::digest(aad) + )) + .map_err(|_| error("local_storage_unavailable"))?; + let value = self + .credentials + .read_sync_secret(account.clone()) + .await + .map_err(|_| error("secure_storage_denied"))?; + let bytes = match value { + Some(value) => decode_key(value.expose_secret())?, + None => { + // Losing the system-vault key never silently resets encrypted recovery data. + let root = self.root.clone(); + let has_state = tokio::task::spawn_blocking(move || { + if !root.exists() { + return Ok(false); + } + let files = fs::read_dir(root) + .map_err(|_| error("local_storage_unavailable"))?; + for file in files { + let file = file.map_err(|_| error("local_storage_unavailable"))?; + if file + .path() + .extension() + .is_some_and(|extension| extension == "enc") + { + return Ok(true); + } + } + Ok(false) + }) + .await + .map_err(|_| error("local_storage_unavailable"))??; + if has_state { + return Err(error("recovery_required")); + } + let mut bytes = Zeroizing::new([0_u8; 32]); + getrandom::fill(&mut *bytes) + .map_err(|_| error("secure_random_unavailable"))?; + self.credentials + .write_sync_secret( + account.clone(), + SecretValue::new(URL_SAFE_NO_PAD.encode(&bytes[..])), + ) + .await + .map_err(|_| error("secure_storage_denied"))?; + let verified = self + .credentials + .read_sync_secret(account) + .await + .map_err(|_| error("secure_storage_denied"))? + .ok_or_else(|| error("secure_storage_denied"))?; + if decode_key(verified.expose_secret())?.as_ref() != bytes.as_ref() { + return Err(error("secure_storage_denied")); + } + bytes + } + }; + Ok(Arc::new(DerivedKey::from_secret_bytes(bytes))) + }) + .await + .cloned() + } + + fn aad(&self, owner: &str, name: &str) -> SyncResult> { + serde_json::to_vec(&[ + "openless.local-sync.v1", + &self.origin, + &self.device_id, + owner, + name, + ]) + .map_err(|_| error("local_storage_unavailable")) + } + + fn path(&self, owner: &str, name: &str) -> PathBuf { + let id = format!("{owner}\0{name}"); + self.root + .join(format!("{:x}.enc", Sha256::digest(id.as_bytes()))) + } + + pub(crate) async fn read( + &self, + owner: &str, + name: &str, + ) -> SyncResult> { + let io = self.io.clone().lock_owned().await; + let path = self.path(owner, name); + if !path + .try_exists() + .map_err(|_| error("local_storage_unavailable"))? + { + return Ok(None); + } + let key = self.key().await?; + let aad = self.aad(owner, name)?; + tokio::task::spawn_blocking(move || { + let _io = io; + let file = fs::File::open(path).map_err(|_| error("local_storage_unavailable"))?; + if file + .metadata() + .map_err(|_| error("local_storage_unavailable"))? + .len() + > 41 * 1024 * 1024 + { + return Err(error("recovery_required")); + } + use std::io::Read; + let mut bytes = Vec::new(); + file.take(41 * 1024 * 1024 + 1) + .read_to_end(&mut bytes) + .map_err(|_| error("local_storage_unavailable"))?; + let plain = open_local(&key, &aad, &bytes).map_err(|_| error("recovery_required"))?; + serde_json::from_slice(&plain) + .map(Some) + .map_err(|_| error("recovery_required")) + }) + .await + .map_err(|_| error("local_storage_unavailable"))? + } + + pub(crate) async fn write( + &self, + owner: &str, + name: &str, + value: T, + ) -> SyncResult<()> { + let key = self.key().await?; + let io = self.io.clone().lock_owned().await; + let aad = self.aad(owner, name)?; + let path = self.path(owner, name); + tokio::task::spawn_blocking(move || { + let _io = io; + let plain = Zeroizing::new( + serde_json::to_vec(&value).map_err(|_| error("local_storage_unavailable"))?, + ); + let sealed = + seal_local(&key, &aad, &plain).map_err(|_| error("local_storage_unavailable"))?; + durable_replace(&path, &sealed) + }) + .await + .map_err(|_| error("local_storage_unavailable"))? + } + + pub(crate) async fn remove(&self, owner: &str, name: &str) -> SyncResult<()> { + let io = self.io.clone().lock_owned().await; + let path = self.path(owner, name); + tokio::task::spawn_blocking(move || { + let _io = io; + match fs::remove_file(&path) { + Ok(()) => sync_directory( + path.parent() + .ok_or_else(|| error("local_storage_unavailable"))?, + ), + Err(e) if e.kind() == std::io::ErrorKind::NotFound => Ok(()), + Err(_) => Err(error("local_storage_unavailable")), + } + }) + .await + .map_err(|_| error("local_storage_unavailable"))? + } + + pub(crate) async fn remember( + &self, + owner: &str, + vault: &str, + key_id: &str, + key: &DerivedKey, + remember: bool, + ) -> SyncResult<()> { + let account = self.binding(owner, vault, key_id)?; + if remember { + let bytes = key.copy_secret_bytes(); + self.credentials + .write_sync_secret( + account, + SecretValue::new(URL_SAFE_NO_PAD.encode(&bytes[..])), + ) + .await + .map_err(|_| error("secure_storage_denied")) + } else { + self.credentials + .remove_sync_secret(account) + .await + .map_err(|_| error("secure_storage_denied")) + } + } + + pub(crate) async fn remembered( + &self, + owner: &str, + vault: &str, + key_id: &str, + ) -> SyncResult> { + self.credentials + .read_sync_secret(self.binding(owner, vault, key_id)?) + .await + .map_err(|_| error("secure_storage_denied"))? + .map(|value| decode_key(value.expose_secret()).map(DerivedKey::from_secret_bytes)) + .transpose() + } + + pub(crate) async fn forget(&self, owner: &str, vault: &str, key_id: &str) -> SyncResult<()> { + self.credentials + .remove_sync_secret(self.binding(owner, vault, key_id)?) + .await + .map_err(|_| error("secure_storage_denied")) + } + + /// A non-secret, durable refusal to auto-unlock survives even when encrypted + /// recovery metadata or the operating-system vault cannot currently be read. + pub(crate) async fn set_lockout(&self, locked: bool) -> SyncResult<()> { + let io = self.io.clone().lock_owned().await; + let path = self.root.join("unlock-disabled"); + tokio::task::spawn_blocking(move || { + let _io = io; + if locked { + durable_replace(&path, b"locked-v1\n") + } else { + match fs::remove_file(&path) { + Ok(()) => sync_directory( + path.parent() + .ok_or_else(|| error("local_storage_unavailable"))?, + ), + Err(e) if e.kind() == std::io::ErrorKind::NotFound => Ok(()), + Err(_) => Err(error("local_storage_unavailable")), + } + } + }) + .await + .map_err(|_| error("local_storage_unavailable"))? + } + + pub(crate) async fn locked_out(&self) -> SyncResult { + let io = self.io.clone().lock_owned().await; + let path = self.root.join("unlock-disabled"); + tokio::task::spawn_blocking(move || { + let _io = io; + path.try_exists() + .map_err(|_| error("local_storage_unavailable")) + }) + .await + .map_err(|_| error("local_storage_unavailable"))? + } +} + +fn decode_key(value: &str) -> SyncResult> { + let bytes = Zeroizing::new( + URL_SAFE_NO_PAD + .decode(value) + .map_err(|_| error("secure_storage_denied"))?, + ); + if URL_SAFE_NO_PAD.encode(&*bytes) != value { + return Err(error("secure_storage_denied")); + } + let bytes = + <[u8; 32]>::try_from(bytes.as_slice()).map_err(|_| error("secure_storage_denied"))?; + Ok(Zeroizing::new(bytes)) +} + +pub(crate) fn durable_replace(path: &Path, bytes: &[u8]) -> SyncResult<()> { + let parent = path + .parent() + .ok_or_else(|| error("local_storage_unavailable"))?; + fs::create_dir_all(parent).map_err(|_| error("local_storage_unavailable"))?; + let temporary = parent.join(format!(".{}.tmp", uuid::Uuid::new_v4())); + let result = (|| { + let mut options = fs::OpenOptions::new(); + options.write(true).create_new(true); + #[cfg(unix)] + { + use std::os::unix::fs::OpenOptionsExt; + options.mode(0o600); + } + let mut file = options + .open(&temporary) + .map_err(|_| error("local_storage_unavailable"))?; + file.write_all(bytes) + .map_err(|_| error("local_storage_unavailable"))?; + file.sync_all() + .map_err(|_| error("local_storage_unavailable"))?; + fs::rename(&temporary, path).map_err(|_| error("local_storage_unavailable"))?; + sync_directory(parent) + })(); + if result.is_err() { + let _ = fs::remove_file(temporary); + } + result +} + +fn sync_directory(path: &Path) -> SyncResult<()> { + #[cfg(unix)] + { + fs::File::open(path) + .and_then(|f| f.sync_all()) + .map_err(|_| error("local_storage_unavailable"))?; + } + #[cfg(not(unix))] + { + let _ = path; + } + Ok(()) +} + +/// Publish a fully written identity without replacing an existing install's ID. +pub(crate) fn durable_create(path: &Path, bytes: &[u8]) -> SyncResult { + let parent = path + .parent() + .ok_or_else(|| error("local_storage_unavailable"))?; + fs::create_dir_all(parent).map_err(|_| error("local_storage_unavailable"))?; + let temporary = parent.join(format!(".identity-{}.tmp", uuid::Uuid::new_v4())); + let result = (|| { + let mut options = fs::OpenOptions::new(); + options.write(true).create_new(true); + #[cfg(unix)] + { + use std::os::unix::fs::OpenOptionsExt; + options.mode(0o600); + } + let mut file = options + .open(&temporary) + .map_err(|_| error("local_storage_unavailable"))?; + file.write_all(bytes) + .and_then(|()| file.sync_all()) + .map_err(|_| error("local_storage_unavailable"))?; + match fs::hard_link(&temporary, path) { + Ok(()) => { + sync_directory(parent)?; + Ok(true) + } + Err(e) if e.kind() == std::io::ErrorKind::AlreadyExists => Ok(false), + Err(_) => Err(error("local_storage_unavailable")), + } + })(); + let _ = fs::remove_file(&temporary); + result +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/mod.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/mod.rs new file mode 100644 index 000000000..da39dce42 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/mod.rs @@ -0,0 +1,102 @@ +//! Encrypted sync orchestration. All private data stays in Core; the UI receives +//! only status, category counts and opaque conflict identifiers. + +mod adapter; +mod dto; +mod local; +mod service; +#[cfg(test)] +mod tests; + +pub(crate) use adapter::build; +pub use dto::*; +pub(crate) use service::{EncryptedSyncService, SyncServiceConfig}; + +pub const DEFAULT_SYNC_SERVICE_ORIGIN: &str = "https://apic.openless.top:9443"; + +#[derive(Debug, Clone)] +pub struct EncryptedSyncConfig { + pub service_origin: String, + pub app_version: String, +} + +use crate::cloud_sync_e2ee_protocol as protocol; +use crate::{BackendError, BackendErrorCode}; + +pub(crate) type SyncResult = Result; + +pub(crate) fn error(reason: &'static str) -> BackendError { + let code = match reason { + "busy" | "stale_preview" | "revision_conflict" => BackendErrorCode::Busy, + "cancelled" | "account_changed" => BackendErrorCode::Cancelled, + "sign_in_required" | "unlock_required" | "secure_storage_denied" => { + BackendErrorCode::PermissionDenied + } + "service_unavailable" | "unsupported_protocol" => BackendErrorCode::Unsupported, + "outcome_unknown" => BackendErrorCode::OutcomeUnknown, + "recovery_required" | "local_storage_unavailable" => BackendErrorCode::Persistence, + "transport_failed" | "rate_limited" => BackendErrorCode::Provider, + _ => BackendErrorCode::InvalidState, + }; + let mut error = BackendError::new(code, reason); + error.details = Some(serde_json::json!({"reason": reason})); + error +} + +pub(crate) fn protocol_error(value: protocol::Error) -> BackendError { + use protocol::Error as E; + let reason = match &value { + E::WeakPassword => "weak_password", + E::PasswordConfirmationMismatch => "password_confirmation_mismatch", + E::InvalidPasswordOrCiphertext => "invalid_password_or_ciphertext", + E::Transport => "transport_failed", + E::PayloadTooLarge => "payload_too_large", + E::AccountMismatch => "account_changed", + E::ContextMismatch => "revision_conflict", + E::UnsupportedProtocol | E::UnsupportedDocumentVersion => "unsupported_protocol", + E::RandomUnavailable => "secure_random_unavailable", + E::Api { + status: 401 | 403, .. + } => "sign_in_required", + E::Api { + status: 409 | 412, .. + } => "revision_conflict", + E::Api { + status: 404 | 405 | 501, + .. + } => "service_unavailable", + E::Api { status: 429, .. } => "rate_limited", + E::Api { status: 413, .. } => "payload_too_large", + E::Api { .. } => "service_failed", + _ => "invalid_response", + }; + let mut result = error(reason); + if let E::Api { + retry_after_seconds: Some(seconds), + .. + } = value + { + result.details = Some(serde_json::json!({"reason": reason, "retryAfterSeconds": seconds})); + } + result +} + +pub(crate) fn document_error( + value: crate::cloud_sync_e2ee_documents::DocumentError, +) -> BackendError { + // DocumentError's Display is a closed set of value-free protocol codes. + let reason = value.to_string(); + let code = if matches!( + value, + crate::cloud_sync_e2ee_documents::DocumentError::RuntimeBusy + | crate::cloud_sync_e2ee_documents::DocumentError::SourceChanged + | crate::cloud_sync_e2ee_documents::DocumentError::StalePreview + ) { + BackendErrorCode::Busy + } else { + BackendErrorCode::InvalidState + }; + let mut result = BackendError::new(code, reason.clone()); + result.details = Some(serde_json::json!({"reason": reason})); + result +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/service.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/service.rs new file mode 100644 index 000000000..640ac19cf --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/service.rs @@ -0,0 +1,2122 @@ +#[path = "setup_prompt.rs"] +mod setup_prompt; + +use std::{ + collections::BTreeMap, + sync::{ + atomic::{AtomicBool, AtomicU64, Ordering}, + Arc, Mutex, + }, + time::{Duration, Instant}, +}; + +use futures_util::future::BoxFuture; +use serde::{Deserialize, Serialize}; + +use crate::cloud_sync_e2ee_documents::{ + self as documents, ExportedDocuments, RestoreContext, SyncScope, ValidatedSyncDocuments, +}; +use crate::cloud_sync_e2ee_protocol::{ + crypto::{self, DerivedKey, EncryptContext, NormalizedPassword}, + transport::{Metadata, MetadataResult, OperationStatus, ProxyPolicy, SyncSession, Transport}, + types::*, +}; +use crate::events::{BackendEventKind, BackendEventPublisher}; +use crate::marketplace::MarketplaceService; +use crate::{BackendError, SecretValue}; + +use super::{ + document_error, + dto::*, + error, + local::{ClientSettings, LocalStorage}, + protocol_error, SyncResult, +}; + +/// The repository adapter performs the protected, exclusive restore transaction +/// and verifies actual read-back before returning. It never runs UI callbacks. +pub(crate) trait SyncServiceData: Send + Sync { + fn export(&self, scope: SyncScope) -> BoxFuture<'_, SyncResult>; + fn restore( + &self, + desired: ValidatedSyncDocuments, + context: RestoreContext, + ) -> BoxFuture<'_, SyncResult>; + fn recover(&self) -> BoxFuture<'_, SyncResult<()>>; + fn baseline( + &self, + scope: SyncScope, + documents: DocumentSet, + revision: Revision, + ) -> BoxFuture<'_, SyncResult<()>>; + fn generation(&self) -> SyncResult; + fn device(&self) -> SourceDevice; + fn changes( + &self, + ) -> tokio::sync::watch::Receiver; +} + +pub(crate) struct SyncServiceConfig { + pub origin: String, + pub github_client_id: String, +} + +struct Connection { + transport: Transport, + session: SyncSession, + github_token: SecretValue, + expires_at: Instant, +} + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Baseline { + revision: Revision, + vault_id: UuidV4, + documents: DocumentSet, +} + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Pending { + record: String, + operation_id: String, + vault_id: String, + key_id: Option, + local_generation: Revision, + deleted: bool, + remember_key: bool, + key_preference_epoch: u64, + base_revision: Revision, + old_key_id: Option, +} + +struct PreviewState { + public: RestorePreview, + remote: ValidatedSyncDocuments, + local: ExportedDocuments, + baseline: Option, + vault_id: String, + key_id: String, +} + +struct Runtime { + initialized: bool, + settings: ClientSettings, + connection: Option, + metadata: Option, + snapshot: Option, + key: Option>, + baseline: Option, + preview: Option, + retry_at: Option, +} + +struct Shared { + config: SyncServiceConfig, + marketplace: Arc, + data: Arc, + local: LocalStorage, + events: BackendEventPublisher, + runtime: tokio::sync::Mutex, + status: Mutex, + cancelled: Arc, + auto_started: AtomicBool, + shutdown: AtomicBool, + auto_suspended: AtomicBool, + sequence: AtomicU64, + wake: tokio::sync::Notify, +} + +#[derive(Clone)] +pub(crate) struct EncryptedSyncService(Arc); + +impl EncryptedSyncService { + pub(crate) fn new( + config: SyncServiceConfig, + marketplace: Arc, + local: LocalStorage, + data: Arc, + events: BackendEventPublisher, + ) -> Self { + let status = EncryptedSyncStatus::initial(config.origin.clone()); + Self(Arc::new(Shared { + config, + marketplace, + data, + local, + events, + runtime: tokio::sync::Mutex::new(Runtime { + initialized: false, + settings: ClientSettings::default(), + connection: None, + metadata: None, + snapshot: None, + key: None, + baseline: None, + preview: None, + retry_at: None, + }), + status: Mutex::new(status), + cancelled: Arc::new(AtomicBool::new(false)), + auto_started: AtomicBool::new(false), + shutdown: AtomicBool::new(false), + auto_suspended: AtomicBool::new(false), + sequence: AtomicU64::new(0), + wake: tokio::sync::Notify::new(), + })) + } + + pub(crate) fn status(&self) -> EncryptedSyncStatus { + let mut value = self + .0 + .status + .lock() + .unwrap_or_else(|e| e.into_inner()) + .clone(); + value.sequence = self.0.sequence.load(Ordering::Acquire).to_string(); + match self.0.data.generation() { + Ok(generation) => value.local_generation = generation.as_str().into(), + Err(_) => { + value.recovery_required = true; + value.sync_state = SyncState::RecoveryRequired; + } + } + value + } + + fn update(&self, update: impl FnOnce(&mut EncryptedSyncStatus)) { + let status = { + let mut status = self.0.status.lock().unwrap_or_else(|e| e.into_inner()); + update(&mut status); + status.sequence = self + .0 + .sequence + .fetch_add(1, Ordering::AcqRel) + .saturating_add(1) + .to_string(); + status.clone() + }; + self.0.events.publish( + None, + BackendEventKind::CloudSyncStateChanged(EncryptedSyncEvent { + sequence: status.sequence.clone(), + account_id: status.account.as_ref().map(|v| v.github_id.clone()), + vault_id: status.vault_id.clone(), + task_id: status.task_id.clone(), + status, + }), + ); + } + + fn begin(&self) { + self.update(|s| { + self.0.cancelled.store(false, Ordering::Release); + s.task_id = Some(uuid::Uuid::new_v4().to_string()); + s.sync_state = SyncState::Syncing; + s.last_error = None; + }); + } + + fn check_cancelled(&self) -> SyncResult<()> { + if self.0.cancelled.load(Ordering::Acquire) || self.0.shutdown.load(Ordering::Acquire) { + Err(error("cancelled")) + } else { + Ok(()) + } + } + + async fn current_account(&self, runtime: &Runtime) -> SyncResult<()> { + self.check_cancelled()?; + let connection = runtime + .connection + .as_ref() + .ok_or_else(|| error("sign_in_required"))?; + if self + .0 + .marketplace + .read_access_token() + .await + .map_err(|_| error("sign_in_required"))? + != connection.github_token + { + return Err(error("account_changed")); + } + self.check_cancelled() + } + + fn finish(&self, runtime: &mut Runtime, result: &SyncResult) { + let failure = result.as_ref().err().map(|e| { + let code = e + .details + .as_ref() + .and_then(|v| v.get("reason")) + .and_then(|v| v.as_str()) + .unwrap_or("sync_failed") + .to_owned(); + let retry_after_seconds = e + .details + .as_ref() + .and_then(|v| v.get("retryAfterSeconds")) + .and_then(|v| v.as_u64()) + .and_then(|v| u32::try_from(v).ok()); + SyncFailure { + code, + retry_after_seconds, + } + }); + if let Some(seconds) = failure.as_ref().and_then(|v| v.retry_after_seconds) { + runtime.retry_at = Some(Instant::now() + Duration::from_secs(u64::from(seconds))); + } + self.update(|s| { + if let Ok(generation) = self.0.data.generation() { + s.local_generation = generation.as_str().into(); + } + s.task_id = None; + s.enabled = runtime.settings.enabled; + s.key_state = if runtime.key.is_some() { + KeyState::Unlocked + } else { + KeyState::Locked + }; + s.consent_version = runtime.settings.consent_version.clone(); + s.last_successful_sync_at = runtime.settings.last_success.clone(); + s.last_synced_local_generation = runtime.settings.last_generation.clone(); + if let Some(failure) = failure { + s.sync_state = match failure.code.as_str() { + "sign_in_required" | "account_changed" => { + s.auth_state = AuthState::Expired; + SyncState::SignInRequired + } + "unlock_required" | "invalid_password_or_ciphertext" => { + SyncState::UnlockRequired + } + "outcome_unknown" => SyncState::OutcomeUnknown, + "recovery_required" => { + s.recovery_required = true; + SyncState::RecoveryRequired + } + "conflict" | "restore_review_required" => SyncState::Conflict, + "cancelled" => { + if s.enabled { + SyncState::Pending + } else { + SyncState::Disabled + } + } + _ => SyncState::Failed, + }; + s.last_error = Some(failure); + } else { + s.last_error = None; + s.sync_state = if runtime.preview.is_some() { + SyncState::Conflict + } else if !s.enabled { + SyncState::Disabled + } else if s.auth_state != AuthState::SignedIn { + SyncState::SignInRequired + } else if runtime.key.is_none() { + SyncState::UnlockRequired + } else if s.pending_operation_id.is_some() { + SyncState::OutcomeUnknown + } else if s.last_synced_local_generation.as_deref() + != Some(s.local_generation.as_str()) + { + SyncState::Pending + } else { + SyncState::Ready + }; + } + }); + } + + async fn initialize(&self, runtime: &mut Runtime) -> SyncResult<()> { + // Recovery precedes all ordinary mutations and backend-ready reporting. + // It also handles a dropped IPC future without requiring a process restart. + self.0.data.recover().await?; + if runtime.initialized { + return Ok(()); + } + if self.0.local.initialized()? { + runtime.settings = self + .0 + .local + .read("device", "client") + .await? + .ok_or_else(|| error("recovery_required"))?; + if runtime.settings.version != 1 { + return Err(error("recovery_required")); + } + } + if self.0.local.locked_out().await? { + runtime.settings.remember_key = false; + runtime.key = None; + runtime.preview = None; + } + runtime.initialized = true; + Ok(()) + } + + async fn save_settings(&self, runtime: &Runtime) -> SyncResult<()> { + self.0 + .local + .write("device", "client", runtime.settings.clone()) + .await + } + + async fn connect(&self, runtime: &mut Runtime) -> SyncResult<()> { + self.initialize(runtime).await?; + self.check_cancelled()?; + if runtime.retry_at.is_some_and(|at| at > Instant::now()) { + return Err(error("rate_limited")); + } + // Capture once after recovery has applied the current preferences. Both + // cache validation and client construction use this exact policy. + let proxy_policy = + ProxyPolicy::for_origin(&self.0.config.origin, crate::net::use_system_proxy()); + self.connect_with_proxy_policy(runtime, proxy_policy).await + } + + async fn connect_with_proxy_policy( + &self, + runtime: &mut Runtime, + proxy_policy: ProxyPolicy, + ) -> SyncResult<()> { + let valid = if let Some(connection) = &runtime.connection { + connection.expires_at > Instant::now() + Duration::from_secs(30) + && connection.transport.proxy_policy() == proxy_policy + && self.0.marketplace.read_access_token().await.ok().as_ref() + == Some(&connection.github_token) + } else { + false + }; + if valid { + return Ok(()); + } + #[cfg(not(test))] + let transport = Transport::new( + &self.0.config.origin, + &self.0.config.github_client_id, + proxy_policy, + ) + .await + .map_err(protocol_error)?; + #[cfg(test)] + let transport = if self.0.config.origin.starts_with("http://127.0.0.1:") { + Transport::for_test_with_proxy_policy( + &self.0.config.origin, + &self.0.config.github_client_id, + proxy_policy, + ) + .await + .map_err(protocol_error)? + } else { + Transport::new( + &self.0.config.origin, + &self.0.config.github_client_id, + proxy_policy, + ) + .await + .map_err(protocol_error)? + }; + let (token, account) = self + .0 + .marketplace + .sync_identity() + .await + .map_err(|_| error("sign_in_required"))?; + self.check_cancelled()?; + let session = transport + .exchange(token.expose_secret(), &account.github_id) + .await + .map_err(protocol_error)?; + if session.account().github_id != account.github_id + || transport.service_origin().trim_end_matches('/') + != self.0.config.origin.trim_end_matches('/') + { + return Err(error("account_changed")); + } + let backup_retention_days = transport.capabilities().max_backup_retention_days; + if self + .0 + .marketplace + .read_access_token() + .await + .map_err(|_| error("sign_in_required"))? + != token + { + return Err(error("account_changed")); + } + let owner = account.github_id.as_str().to_string(); + if runtime.settings.owner_id.as_deref() != Some(&owner) { + if runtime.settings.owner_id.is_some() { + runtime.settings.enabled = false; + runtime.settings.remember_key = false; + self.save_settings(runtime).await?; + } + self.forget_unlock_material(runtime).await?; + runtime.settings.enabled = false; + runtime.settings.consent_version = None; + runtime.settings.remember_key = false; + runtime.settings.last_success = None; + runtime.settings.last_generation = None; + runtime.settings.vault_id = None; + runtime.settings.key_id = None; + runtime.key = None; + runtime.baseline = None; + runtime.preview = None; + runtime.metadata = None; + runtime.snapshot = None; + } + runtime.settings.owner_id = Some(owner.clone()); + let expires_at = Instant::now() + Duration::from_secs(u64::from(session.expires_in())); + runtime.connection = Some(Connection { + transport, + session, + github_token: token, + expires_at, + }); + runtime.baseline = self.0.local.read(&owner, "baseline").await?; + let pending: Option = self.0.local.read(&owner, "pending").await?; + self.update(|s| { + s.account = Some(SyncAccount { + github_id: owner, + login: account.login, + }); + s.auth_state = AuthState::SignedIn; + s.backup_retention_days = Some(backup_retention_days); + s.pending_operation_id = pending.map(|p| p.operation_id); + s.has_cloud_snapshot = None; + }); + Ok(()) + } + + #[cfg(test)] + pub(super) async fn connect_with_proxy_setting_for_test( + &self, + use_system_proxy: bool, + ) -> SyncResult<()> { + let mut runtime = self.0.runtime.lock().await; + self.initialize(&mut runtime).await?; + self.check_cancelled()?; + let policy = ProxyPolicy::for_origin(&self.0.config.origin, use_system_proxy); + self.connect_with_proxy_policy(&mut runtime, policy).await + } + + async fn refresh_metadata(&self, runtime: &mut Runtime) -> SyncResult<()> { + self.current_account(runtime).await?; + let connection = runtime + .connection + .as_ref() + .ok_or_else(|| error("sign_in_required"))?; + let metadata = match connection + .transport + .metadata(&connection.session, None) + .await + .map_err(protocol_error)? + { + MetadataResult::Modified(value) => *value, + MetadataResult::NotModified => return Err(error("invalid_response")), + }; + self.current_account(runtime).await?; + let value = metadata.value(); + let owner = self.owner(runtime)?.to_owned(); + let seen: Option = self.0.local.read(&owner, "last-seen-revision").await?; + if seen.is_some_and(|seen| value.revision < seen) + || runtime + .baseline + .as_ref() + .is_some_and(|base| value.revision < base.revision) + { + return Err(error("revision_rollback")); + } + self.0 + .local + .write(&owner, "last-seen-revision", value.revision) + .await?; + let key_binding_changed = runtime.key.is_some() + && (runtime.settings.vault_id.as_deref() + != value.vault_id.as_ref().map(UuidV4::as_str) + || runtime.settings.key_id.as_deref() != value.key_id.as_ref().map(UuidV4::as_str)); + if value.state != VaultState::Active + || key_binding_changed + || runtime.snapshot.as_ref().is_some_and(|s| { + Some(&s.key_id) != value.key_id.as_ref() + || Some(&s.vault_id) != value.vault_id.as_ref() + }) + { + runtime.key = None; + runtime.snapshot = None; + runtime.preview = None; + } + if value.state == VaultState::Deleted { + runtime.settings.enabled = false; + } + self.update(|s| { + s.remote_revision = Some(value.revision.as_str().into()); + s.vault_id = value.vault_id.as_ref().map(|v| v.as_str().into()); + s.key_id = value.key_id.as_ref().map(|v| v.as_str().into()); + s.has_cloud_snapshot = Some(value.state == VaultState::Active); + }); + runtime.metadata = Some(metadata); + Ok(()) + } + + fn metadata<'a>(&self, runtime: &'a Runtime) -> SyncResult<&'a Metadata> { + runtime + .metadata + .as_ref() + .ok_or_else(|| error("metadata_required")) + } + fn owner<'a>(&self, runtime: &'a Runtime) -> SyncResult<&'a str> { + runtime + .settings + .owner_id + .as_deref() + .ok_or_else(|| error("sign_in_required")) + } + fn unlocked(&self, runtime: &Runtime) -> SyncResult> { + runtime.key.clone().ok_or_else(|| error("unlock_required")) + } + + async fn download(&self, runtime: &mut Runtime) -> SyncResult { + self.current_account(runtime).await?; + let connection = runtime + .connection + .as_ref() + .ok_or_else(|| error("sign_in_required"))?; + let snapshot = connection + .transport + .snapshot(&connection.session, self.metadata(runtime)?) + .await + .map_err(protocol_error)?; + self.current_account(runtime).await?; + Ok(snapshot) + } + + async fn decrypt( + &self, + runtime: &Runtime, + snapshot: SnapshotUpload, + key: Arc, + ) -> SyncResult { + let metadata = self.metadata(runtime)?.value().clone(); + let owner = GithubId::parse(self.owner(runtime)?).map_err(protocol_error)?; + tokio::task::spawn_blocking(move || { + let set = crypto::decrypt_snapshot(&snapshot, &metadata, &owner, &key) + .map_err(protocol_error)?; + documents::validate_sync_documents(set, metadata.revision).map_err(document_error) + }) + .await + .map_err(|_| error("crypto_worker_failed"))? + } + + async fn remember( + &self, + runtime: &mut Runtime, + snapshot: &SnapshotUpload, + key: Arc, + remember: bool, + ) -> SyncResult<()> { + self.0 + .local + .remember( + self.owner(runtime)?, + snapshot.vault_id.as_str(), + snapshot.key_id.as_str(), + &key, + remember, + ) + .await?; + runtime.key = Some(key); + runtime.settings.remember_key = remember; + runtime.settings.key_preference_epoch = runtime + .settings + .key_preference_epoch + .checked_add(1) + .ok_or_else(|| error("recovery_required"))?; + runtime.settings.vault_id = Some(snapshot.vault_id.as_str().into()); + runtime.settings.key_id = Some(snapshot.key_id.as_str().into()); + self.save_settings(runtime).await?; + self.0.local.set_lockout(false).await + } + + async fn try_remembered(&self, runtime: &mut Runtime) -> SyncResult<()> { + if runtime.key.is_some() + || !runtime.settings.remember_key + || self.0.local.locked_out().await? + { + return Ok(()); + } + let metadata = self.metadata(runtime)?.value(); + if metadata.state != VaultState::Active { + return Ok(()); + } + let vault = metadata + .vault_id + .as_ref() + .ok_or_else(|| error("invalid_response"))? + .as_str(); + let key_id = metadata + .key_id + .as_ref() + .ok_or_else(|| error("invalid_response"))? + .as_str(); + if runtime.settings.vault_id.as_deref() != Some(vault) + || runtime.settings.key_id.as_deref() != Some(key_id) + { + return Ok(()); + } + if let Some(key) = self + .0 + .local + .remembered(self.owner(runtime)?, vault, key_id) + .await? + { + let snapshot = self.download(runtime).await?; + let key = Arc::new(key); + // Merely retrieving/deriving a key cannot set keyState=unlocked. + self.decrypt(runtime, snapshot.clone(), key.clone()).await?; + self.current_account(runtime).await?; + runtime.snapshot = Some(snapshot); + runtime.key = Some(key); + } + Ok(()) + } + + pub(crate) async fn prepare_enable( + &self, + consent_version: String, + ) -> SyncResult { + if consent_version != CONSENT_VERSION { + return Err(error("consent_required")); + } + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.begin(); + let result = async { + self.connect(&mut runtime).await?; + self.refresh_metadata(&mut runtime).await?; + runtime.settings.consent_version = Some(consent_version); + runtime.settings.prompted = true; + self.save_settings(&runtime).await?; + self.try_remembered(&mut runtime).await?; + let step = if self.metadata(&runtime)?.value().state != VaultState::Active { + EnableStep::Create + } else if runtime.key.is_none() { + EnableStep::Unlock + } else if runtime.baseline.as_ref().is_some_and(|b| { + Some(&b.vault_id) + == self + .metadata(&runtime) + .ok() + .and_then(|m| m.value().vault_id.as_ref()) + }) { + EnableStep::Ready + } else { + EnableStep::RestoreReview + }; + Ok(step) + } + .await; + self.finish(&mut runtime, &result); + result.map(|next_step| EnablePreparation { + next_step, + status: self.status(), + }) + } + + pub(crate) async fn unlock( + &self, + password: String, + remember_key: bool, + ) -> SyncResult { + let password = SecretInput::new(password); + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.0.auto_suspended.store(false, Ordering::Release); + self.begin(); + let result = async { + self.connect(&mut runtime).await?; + self.refresh_metadata(&mut runtime).await?; + if runtime.settings.consent_version.as_deref() != Some(CONSENT_VERSION) { + return Err(error("consent_required")); + } + let snapshot = self.download(&mut runtime).await?; + let encoded = snapshot.clone(); + let metadata = self.metadata(&runtime)?.value().clone(); + let owner = GithubId::parse(self.owner(&runtime)?).map_err(protocol_error)?; + let (key, documents) = tokio::task::spawn_blocking(move || { + let (key, set) = + crypto::decrypt_snapshot_with_password(&encoded, &metadata, &owner, password) + .map_err(protocol_error)?; + let documents = documents::validate_sync_documents(set, metadata.revision) + .map_err(document_error)?; + Ok::<_, BackendError>((Arc::new(key), documents)) + }) + .await + .map_err(|_| error("crypto_worker_failed"))??; + self.current_account(&runtime).await?; + if let (Some(vault), Some(key_id)) = + (&runtime.settings.vault_id, &runtime.settings.key_id) + { + if vault != snapshot.vault_id.as_str() || key_id != snapshot.key_id.as_str() { + self.0 + .local + .forget(self.owner(&runtime)?, vault, key_id) + .await?; + } + } + self.remember(&mut runtime, &snapshot, key, remember_key) + .await?; + runtime.snapshot = Some(snapshot); + if !runtime.baseline.as_ref().is_some_and(|b| { + Some(&b.vault_id) + == self + .metadata(&runtime) + .ok() + .and_then(|m| m.value().vault_id.as_ref()) + }) { + self.make_preview(&mut runtime, documents).await?; + } + Ok(()) + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + pub(crate) async fn create( + &self, + password: String, + confirmation: String, + remember_key: bool, + consent_version: String, + observed_revision: String, + ) -> SyncResult { + let password = SecretInput::new(password); + let confirmation = SecretInput::new(confirmation); + if consent_version != CONSENT_VERSION { + return Err(error("consent_required")); + } + let observed = Revision::parse(&observed_revision).map_err(protocol_error)?; + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.0.auto_suspended.store(false, Ordering::Release); + self.begin(); + let result = async { + self.connect(&mut runtime).await?; + self.reconcile_for_review(&mut runtime).await?; + self.refresh_metadata(&mut runtime).await?; + let metadata = self.metadata(&runtime)?.value(); + if metadata.state == VaultState::Active || metadata.revision != observed { + return Err(error("revision_conflict")); + } + if runtime.settings.consent_version.as_deref() != Some(CONSENT_VERSION) { + return Err(error("consent_required")); + } + self.retire_reviewed_pending(&mut runtime, None).await?; + let context = EncryptContext { + owner_github_id: GithubId::parse(self.owner(&runtime)?).map_err(protocol_error)?, + vault_id: UuidV4::random().map_err(protocol_error)?, + key_id: UuidV4::random().map_err(protocol_error)?, + base_revision: observed, + operation_id: UuidV4::random().map_err(protocol_error)?, + kind: UploadKind::Create, + kdf: Kdf::fixed(Salt::random().map_err(protocol_error)?), + }; + let captured = self + .0 + .data + .export(self.scope(&runtime, context.vault_id.as_str(), context.key_id.as_str())?) + .await?; + let documents = captured.documents.documents().clone(); + let (snapshot, key) = tokio::task::spawn_blocking(move || { + let password = NormalizedPassword::confirmed_new(password, confirmation) + .map_err(protocol_error)?; + let key = + Arc::new(crypto::derive_key(&password, &context.kdf).map_err(protocol_error)?); + let snapshot = + crypto::encrypt_snapshot(&documents, &context, &key).map_err(protocol_error)?; + Ok::<_, BackendError>((snapshot, key)) + }) + .await + .map_err(|_| error("crypto_worker_failed"))??; + self.current_account(&runtime).await?; + self.remember(&mut runtime, &snapshot, key, remember_key) + .await?; + self.upload(&mut runtime, snapshot, captured, None).await?; + self.check_cancelled()?; + runtime.settings.enabled = true; + self.save_settings(&runtime).await?; + Ok(()) + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + async fn upload( + &self, + runtime: &mut Runtime, + snapshot: SnapshotUpload, + captured: ExportedDocuments, + old_key_id: Option, + ) -> SyncResult<()> { + self.current_account(runtime).await?; + let connection = runtime + .connection + .as_ref() + .ok_or_else(|| error("sign_in_required"))?; + let operation = connection + .transport + .prepare_upload( + &connection.session, + self.metadata(runtime)?, + &snapshot, + runtime.snapshot.as_ref(), + ) + .map_err(protocol_error)?; + let pending = Pending { + record: String::from_utf8(operation.to_pending_record().map_err(protocol_error)?) + .map_err(|_| error("invalid_response"))?, + operation_id: snapshot.operation_id.as_str().into(), + vault_id: snapshot.vault_id.as_str().into(), + key_id: Some(snapshot.key_id.as_str().into()), + local_generation: captured.generation, + deleted: false, + remember_key: runtime.settings.remember_key, + key_preference_epoch: runtime.settings.key_preference_epoch, + base_revision: snapshot.base_revision, + old_key_id, + }; + let owner = self.owner(runtime)?.to_string(); + self.0 + .local + .write( + &owner, + &format!("proposal:{}", pending.operation_id), + captured.documents.documents().clone(), + ) + .await?; + self.0 + .local + .write(&owner, "pending", pending.clone()) + .await?; + self.update(|s| s.pending_operation_id = Some(pending.operation_id.clone())); + self.current_account(runtime).await?; + // Once submitted, preserve the exact operation until a validated receipt. + let receipt = connection + .transport + .submit(&connection.session, &operation) + .await; + match receipt { + Ok(receipt) => { + self.accept_receipt(runtime, &pending, &receipt.receipt) + .await?; + runtime.snapshot = Some(snapshot); + if receipt.replayed { + // A replay proves that operation committed, not that its + // revision is still the server's current head. + self.update(|s| s.has_cloud_snapshot = None); + } + Ok(()) + } + Err(e) => { + if definite_rejection(&e) { + self.discard_rejected(runtime, &pending).await?; + if snapshot.kind != UploadKind::Snapshot { + self.0 + .local + .forget(&owner, snapshot.vault_id.as_str(), snapshot.key_id.as_str()) + .await?; + } + if snapshot.kind == UploadKind::Create { + runtime.key = None; + runtime.settings.remember_key = false; + runtime.settings.key_id = None; + runtime.settings.vault_id = None; + self.save_settings(runtime).await?; + } + return Err(protocol_error(e)); + } + Err(error("outcome_unknown")) + } + } + } + + async fn reconcile(&self, runtime: &mut Runtime) -> SyncResult<()> { + let owner = self.owner(runtime)?.to_owned(); + let Some(pending): Option = self.0.local.read(&owner, "pending").await? else { + return Ok(()); + }; + let connection = runtime + .connection + .as_ref() + .ok_or_else(|| error("sign_in_required"))?; + let operation = connection + .transport + .restore_pending(&connection.session, pending.record.as_bytes()) + .map_err(protocol_error)?; + if operation.operation_id().as_str() != pending.operation_id { + return Err(error("recovery_required")); + } + self.current_account(runtime).await?; + let receipt = match connection + .transport + .operation(&connection.session, &operation) + .await + .map_err(protocol_error)? + { + OperationStatus::Committed(receipt) => receipt, + OperationStatus::Pending(pending) => { + let mut result = error("outcome_unknown"); + result.details = Some( + serde_json::json!({"reason":"outcome_unknown","retryAfterSeconds":pending.retry_after_seconds}), + ); + return Err(result); + } + OperationStatus::NotFound => { + // 404 does not prove failure. Only an identical body/op ID can be retried. + self.current_account(runtime).await?; + match connection + .transport + .submit(&connection.session, &operation) + .await + { + Ok(receipt) => receipt.receipt, + Err(e) if definite_rejection(&e) => { + // This is an older unknown operation: rejection of a + // retry cannot prove that the original never committed. + let _ = self.refresh_metadata(runtime).await; + return Err(error("outcome_unknown")); + } + Err(_) => return Err(error("outcome_unknown")), + } + } + }; + self.accept_receipt(runtime, &pending, &receipt).await + } + + async fn accept_receipt( + &self, + runtime: &mut Runtime, + pending: &Pending, + receipt: &OperationReceipt, + ) -> SyncResult<()> { + let owner = self.owner(runtime)?.to_string(); + if receipt.operation_id.as_str() != pending.operation_id + || receipt.vault_id.as_str() != pending.vault_id + { + return Err(error("invalid_response")); + } + if pending.deleted { + runtime.settings.enabled = false; + runtime.key = None; + runtime.preview = None; + runtime.baseline = None; + self.0.local.remove(&owner, "baseline").await?; + if let Some(key_id) = &runtime.settings.key_id { + self.0 + .local + .forget(&owner, &pending.vault_id, key_id) + .await?; + } + runtime.settings.remember_key = false; + runtime.settings.vault_id = None; + runtime.settings.key_id = None; + } else { + if runtime.settings.vault_id.as_deref() != Some(pending.vault_id.as_str()) + || runtime.settings.key_id.as_ref() != pending.key_id.as_ref() + { + // Receipt reconciliation can complete a password rotation while + // memory still holds the old key from the failed upload turn. + runtime.key = None; + runtime.snapshot = None; + runtime.preview = None; + } + let documents: DocumentSet = self + .0 + .local + .read(&owner, &format!("proposal:{}", pending.operation_id)) + .await? + .ok_or_else(|| error("recovery_required"))?; + documents::validate_sync_documents(documents.clone(), receipt.committed_revision) + .map_err(document_error)?; + let baseline = Baseline { + revision: receipt.committed_revision, + vault_id: receipt.vault_id.clone(), + documents, + }; + self.0 + .local + .write(&owner, "baseline", baseline.clone()) + .await?; + self.0 + .data + .baseline( + self.scope( + runtime, + &pending.vault_id, + pending + .key_id + .as_deref() + .ok_or_else(|| error("recovery_required"))?, + )?, + baseline.documents.clone(), + baseline.revision, + ) + .await?; + runtime.baseline = Some(baseline); + runtime.settings.vault_id = Some(pending.vault_id.clone()); + runtime.settings.key_id = pending.key_id.clone(); + if runtime.settings.key_preference_epoch == pending.key_preference_epoch + && !self.0.local.locked_out().await? + { + runtime.settings.remember_key = pending.remember_key; + } + if let Some(old) = &pending.old_key_id { + if Some(old) != pending.key_id.as_ref() { + self.0.local.forget(&owner, &pending.vault_id, old).await?; + } + } + } + runtime.settings.last_generation = Some(pending.local_generation.as_str().into()); + runtime.settings.last_success = Some(receipt.committed_at.clone()); + let seen: Option = self.0.local.read(&owner, "last-seen-revision").await?; + self.0 + .local + .write( + &owner, + "last-seen-revision", + seen.map_or(receipt.committed_revision, |seen| { + seen.max(receipt.committed_revision) + }), + ) + .await?; + self.save_settings(runtime).await?; + // Deleting the pending record is last; a crash at any earlier step replays safely. + self.0.local.remove(&owner, "pending").await?; + // This is an unreferenced encrypted scratch copy after pending removal. + // Its cleanup failure cannot undo a confirmed commit or restore old keys. + let _ = self + .0 + .local + .remove(&owner, &format!("proposal:{}", pending.operation_id)) + .await; + self.update(|s| { + s.pending_operation_id = None; + s.remote_revision = Some(receipt.committed_revision.as_str().into()); + s.has_cloud_snapshot = Some(!pending.deleted); + s.vault_id = (!pending.deleted).then(|| pending.vault_id.clone()); + s.key_id = if pending.deleted { + None + } else { + pending.key_id.clone() + }; + }); + Ok(()) + } + + pub(crate) fn cancel(&self, task_id: &str) -> SyncResult { + { + // The identity check and flag update share begin/finish's status + // lock. A delayed cancel can never poison the next task's flag. + let status = self.0.status.lock().unwrap_or_else(|e| e.into_inner()); + if status.task_id.as_deref() != Some(task_id) { + return Err(error("stale_task")); + } + self.0.cancelled.store(true, Ordering::Release); + } + Ok(self.status()) + } + + pub(crate) async fn lock(&self) -> SyncResult { + self.0.auto_suspended.store(true, Ordering::Release); + self.0.cancelled.store(true, Ordering::Release); + let mut runtime = self.0.runtime.lock().await; + runtime.key = None; + runtime.preview = None; + runtime.settings.remember_key = false; + let result = async { + self.0.local.set_lockout(true).await?; + self.initialize(&mut runtime).await?; + runtime.settings.remember_key = false; + runtime.settings.key_preference_epoch = runtime + .settings + .key_preference_epoch + .checked_add(1) + .ok_or_else(|| error("recovery_required"))?; + // Persist the refusal to auto-unlock before asking the OS to delete + // a key; a denied deletion must not unlock again on restart. + self.save_settings(&runtime).await?; + self.forget_unlock_material(&runtime).await + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + pub(crate) async fn set_enabled(&self, enabled: bool) -> SyncResult { + if !enabled { + self.0.auto_suspended.store(true, Ordering::Release); + self.0.cancelled.store(true, Ordering::Release); + } else { + self.0.auto_suspended.store(false, Ordering::Release); + } + let mut runtime = self.0.runtime.lock().await; + self.initialize(&mut runtime).await?; + let result = async { + if enabled { + if runtime.settings.consent_version.as_deref() != Some(CONSENT_VERSION) { + return Err(error("consent_required")); + } + if runtime.preview.is_some() || runtime.baseline.is_none() { + return Err(error("restore_review_required")); + } + self.unlocked(&runtime)?; + self.0.cancelled.store(false, Ordering::Release); + self.current_account(&runtime).await?; + } + runtime.settings.enabled = enabled; + self.save_settings(&runtime).await?; + if enabled { + self.0.wake.notify_one(); + } + Ok(()) + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + fn scope(&self, runtime: &Runtime, vault: &str, key: &str) -> SyncResult { + Ok(SyncScope { + service_origin: self.0.config.origin.clone(), + owner_github_id: self.owner(runtime)?.into(), + vault_id: vault.into(), + key_id: key.into(), + device_id: self.0.data.device().id.clone(), + }) + } + + fn active_scope(&self, runtime: &Runtime) -> SyncResult { + let meta = self.metadata(runtime)?.value(); + self.scope( + runtime, + meta.vault_id + .as_ref() + .ok_or_else(|| error("cloud_deleted"))? + .as_str(), + meta.key_id + .as_ref() + .ok_or_else(|| error("cloud_deleted"))? + .as_str(), + ) + } + + fn baseline_documents(&self, runtime: &Runtime) -> SyncResult> { + runtime + .baseline + .as_ref() + .filter(|b| { + Some(&b.vault_id) + == runtime + .metadata + .as_ref() + .and_then(|m| m.value().vault_id.as_ref()) + }) + .map(|b| { + documents::validate_sync_documents(b.documents.clone(), b.revision) + .map_err(document_error) + }) + .transpose() + } + + async fn make_preview( + &self, + runtime: &mut Runtime, + remote: ValidatedSyncDocuments, + ) -> SyncResult { + let scope = self.active_scope(runtime)?; + let local = self.0.data.export(scope.clone()).await?; + let baseline = self.baseline_documents(runtime)?; + let merged = documents::diff_sync_documents(baseline.as_ref(), &local.documents, &remote) + .map_err(document_error)?; + let conflicts = merged + .conflicts() + .iter() + .map(|conflict| SyncConflictItem { + id: conflict.conflict_id.clone(), + kind: wire_name(&conflict.kind), + reason: wire_name(&conflict.reason), + }) + .collect(); + let mut counts = BTreeMap::new(); + for doc in &remote.documents().documents { + *counts.entry(wire_name(&doc.kind)).or_insert(0) += 1; + } + let public = RestorePreview { + preview_id: uuid::Uuid::new_v4().to_string(), + unconfirmed_operation_id: self + .reviewable_pending(runtime) + .await? + .map(|p| p.operation_id), + observed_revision: remote.observed_revision().as_str().into(), + local_generation: local.generation.as_str().into(), + counts, + device_settings_to_review: remote + .documents() + .documents + .iter() + .filter(|d| d.kind == DocumentKind::DeviceProfile) + .map(|_| "device_profile".to_string()) + .take(1) + .collect(), + conflicts, + }; + runtime.preview = Some(PreviewState { + public: public.clone(), + remote, + local, + baseline, + vault_id: scope.vault_id.clone(), + key_id: scope.key_id.clone(), + }); + self.0.events.publish( + None, + BackendEventKind::CloudSyncConflictDetected(EncryptedSyncConflictEvent { + sequence: self + .0 + .sequence + .fetch_add(1, Ordering::AcqRel) + .saturating_add(1) + .to_string(), + account_id: scope.owner_github_id, + vault_id: scope.vault_id, + task_id: self.status().task_id, + preview: public.clone(), + }), + ); + Ok(public) + } + + pub(crate) async fn preview_restore( + &self, + observed_revision: String, + ) -> SyncResult { + let observed = Revision::parse(&observed_revision).map_err(protocol_error)?; + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.begin(); + let result = async { + self.connect(&mut runtime).await?; + self.reconcile_for_review(&mut runtime).await?; + self.refresh_metadata(&mut runtime).await?; + if self.metadata(&runtime)?.value().revision != observed { + return Err(error("stale_preview")); + } + let key = self.unlocked(&runtime)?; + let snapshot = self.download(&mut runtime).await?; + let remote = self.decrypt(&runtime, snapshot.clone(), key).await?; + runtime.snapshot = Some(snapshot); + self.current_account(&runtime).await?; + self.make_preview(&mut runtime, remote).await + } + .await; + self.finish(&mut runtime, &result); + result + } + + pub(crate) async fn apply_restore( + &self, + preview_id: String, + mode: RestoreMode, + choices: Vec, + ) -> SyncResult { + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.begin(); + let result = async { + self.current_account(&runtime).await?; + self.unlocked(&runtime)?; + self.refresh_metadata(&mut runtime).await?; + let preview = runtime + .preview + .as_ref() + .ok_or_else(|| error("stale_preview"))?; + let scope = self.active_scope(&runtime)?; + if preview.public.preview_id != preview_id + || self.metadata(&runtime)?.value().revision.as_str() + != preview.public.observed_revision + || self.0.data.generation()?.as_str() != preview.public.local_generation + || scope.vault_id != preview.vault_id + || scope.key_id != preview.key_id + { + return Err(error("stale_preview")); + } + let desired = match mode { + RestoreMode::Replace => preview.remote.clone(), + RestoreMode::Merge => { + let choices: Vec = choices + .into_iter() + .map(|c| documents::ConflictChoice { + conflict_id: c.id, + side: match c.side { + ConflictSide::Local => documents::ConflictSide::Local, + ConflictSide::Cloud => documents::ConflictSide::Remote, + }, + }) + .collect(); + documents::diff_sync_documents( + preview.baseline.as_ref(), + &preview.local.documents, + &preview.remote, + ) + .map_err(document_error)? + .resolve(&choices) + .map_err(document_error)? + } + }; + let remote = preview.remote.clone(); + let context = RestoreContext { + scope: scope.clone(), + operation_id: uuid::Uuid::new_v4().to_string(), + observed_revision: remote.observed_revision(), + local_generation: preview.local.generation, + target_device: self.0.data.device(), + }; + let reviewed_operation = preview.public.unconfirmed_operation_id.clone(); + self.current_account(&runtime).await?; + self.retire_reviewed_pending(&mut runtime, reviewed_operation.as_deref()) + .await?; + // After journal prepare, cancellation must finish commit/rollback. + let applied = self.0.data.restore(desired, context).await?; + let baseline = Baseline { + revision: remote.observed_revision(), + vault_id: UuidV4::parse(&scope.vault_id).map_err(protocol_error)?, + documents: remote.documents().clone(), + }; + self.0 + .local + .write(&scope.owner_github_id, "baseline", baseline.clone()) + .await?; + self.0 + .data + .baseline(scope.clone(), baseline.documents.clone(), baseline.revision) + .await?; + runtime.baseline = Some(baseline); + runtime.preview = None; + runtime.settings.last_generation = + if same_documents(applied.documents.documents(), remote.documents()) { + Some(applied.generation.as_str().into()) + } else { + None + }; + if !self.0.cancelled.load(Ordering::Acquire) { + runtime.settings.enabled = true; + } + self.save_settings(&runtime).await?; + let ui_preferences = applied + .documents + .documents() + .documents + .iter() + .filter(|d| d.kind == DocumentKind::UiPreferences) + .filter_map(|d| d.value.as_str().map(|v| (d.id.clone(), v.to_owned()))) + .collect(); + self.0.events.publish( + None, + BackendEventKind::CloudSyncRestoreCompleted(EncryptedSyncRestoreEvent { + sequence: self + .0 + .sequence + .fetch_add(1, Ordering::AcqRel) + .saturating_add(1) + .to_string(), + account_id: scope.owner_github_id, + vault_id: scope.vault_id, + task_id: self.status().task_id, + local_generation: applied.generation.as_str().into(), + ui_preferences, + }), + ); + self.check_cancelled()?; + // A local conflict choice can differ from the current cloud head. + // Use the same CAS/merge path to upload it, never claim it synced early. + self.run_once(&mut runtime).await + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + pub(crate) async fn sync_now(&self) -> SyncResult { + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.begin(); + let result = self.run_once(&mut runtime).await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + async fn run_once(&self, runtime: &mut Runtime) -> SyncResult<()> { + self.connect(runtime).await?; + self.reconcile(runtime).await?; + if !runtime.settings.enabled { + return Ok(()); + } + if runtime.settings.consent_version.as_deref() != Some(CONSENT_VERSION) { + return Err(error("consent_required")); + } + self.refresh_metadata(runtime).await?; + if self.metadata(runtime)?.value().state != VaultState::Active { + self.save_settings(runtime).await?; + return Err(error("cloud_deleted")); + } + self.try_remembered(runtime).await?; + let key = self.unlocked(runtime)?; + let snapshot = self.download(runtime).await?; + let remote = self.decrypt(runtime, snapshot.clone(), key.clone()).await?; + runtime.snapshot = Some(snapshot.clone()); + let baseline = self.baseline_documents(runtime)?; + if baseline.is_none() { + self.make_preview(runtime, remote).await?; + return Err(error("restore_review_required")); + } + let scope = self.active_scope(runtime)?; + let mut captured = self.0.data.export(scope.clone()).await?; + let merge = documents::diff_sync_documents(baseline.as_ref(), &captured.documents, &remote) + .map_err(document_error)?; + if !merge.conflicts().is_empty() { + self.make_preview(runtime, remote).await?; + return Err(error("conflict")); + } + let desired = merge.resolve(&[]).map_err(document_error)?; + self.current_account(runtime).await?; + if !same_documents(captured.documents.documents(), desired.documents()) { + let context = RestoreContext { + scope: scope.clone(), + operation_id: uuid::Uuid::new_v4().to_string(), + observed_revision: remote.observed_revision(), + local_generation: captured.generation, + target_device: self.0.data.device(), + }; + captured = self.0.data.restore(desired, context).await?; + self.emit_restored(&scope, &captured); + } + if same_documents(captured.documents.documents(), remote.documents()) { + let baseline = Baseline { + revision: remote.observed_revision(), + vault_id: snapshot.vault_id.clone(), + documents: remote.documents().clone(), + }; + self.0 + .local + .write(&scope.owner_github_id, "baseline", baseline.clone()) + .await?; + self.0 + .data + .baseline(scope, baseline.documents.clone(), baseline.revision) + .await?; + runtime.baseline = Some(baseline); + runtime.settings.last_generation = Some(captured.generation.as_str().into()); + runtime.settings.last_success = Some(chrono::Utc::now().to_rfc3339()); + self.save_settings(runtime).await?; + return Ok(()); + } + self.current_account(runtime).await?; + let documents = captured.documents.documents().clone(); + let context = EncryptContext { + owner_github_id: snapshot.owner_github_id.clone(), + vault_id: snapshot.vault_id.clone(), + key_id: snapshot.key_id.clone(), + base_revision: self.metadata(runtime)?.value().revision, + operation_id: UuidV4::random().map_err(protocol_error)?, + kind: UploadKind::Snapshot, + kdf: snapshot.kdf.clone(), + }; + let encrypted = tokio::task::spawn_blocking(move || { + crypto::encrypt_snapshot(&documents, &context, &key).map_err(protocol_error) + }) + .await + .map_err(|_| error("crypto_worker_failed"))??; + self.upload(runtime, encrypted, captured, None).await + } + + pub(crate) async fn change_password( + &self, + current_password: String, + new_password: String, + confirmation: String, + remember_key: bool, + ) -> SyncResult { + let current_password = SecretInput::new(current_password); + let new_password = SecretInput::new(new_password); + let confirmation = SecretInput::new(confirmation); + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.begin(); + let result = async { + self.run_once(&mut runtime).await?; + self.refresh_metadata(&mut runtime).await?; + let previous = self.download(&mut runtime).await?; + let metadata = self.metadata(&runtime)?.value().clone(); + if !runtime.baseline.as_ref().is_some_and(|baseline| { + baseline.revision == metadata.revision && baseline.vault_id == previous.vault_id + }) { + // Another device advanced the head after run_once merged it. + // Never encrypt the older local image against the newer CAS token. + return Err(error("revision_conflict")); + } + let scope = self.active_scope(&runtime)?; + let captured = self.0.data.export(scope).await?; + let prior = previous.clone(); + let content = captured.documents.documents().clone(); + let (snapshot, key) = tokio::task::spawn_blocking(move || { + let (_, _) = crypto::decrypt_snapshot_with_password( + &prior, + &metadata, + &prior.owner_github_id, + current_password, + ) + .map_err(protocol_error)?; + let password = NormalizedPassword::confirmed_new(new_password, confirmation) + .map_err(protocol_error)?; + let context = EncryptContext { + owner_github_id: prior.owner_github_id.clone(), + vault_id: prior.vault_id.clone(), + key_id: UuidV4::random().map_err(protocol_error)?, + base_revision: metadata.revision, + operation_id: UuidV4::random().map_err(protocol_error)?, + kind: UploadKind::PasswordChange, + kdf: Kdf::fixed(Salt::random().map_err(protocol_error)?), + }; + let key = + Arc::new(crypto::derive_key(&password, &context.kdf).map_err(protocol_error)?); + let snapshot = + crypto::encrypt_snapshot(&content, &context, &key).map_err(protocol_error)?; + Ok::<_, BackendError>((snapshot, key)) + }) + .await + .map_err(|_| error("crypto_worker_failed"))??; + self.current_account(&runtime).await?; + let old_key = runtime.key.clone(); + let old_settings = runtime.settings.clone(); + // Both scoped key entries survive an unknown result; delete the old + // remembered key only after the password-change receipt is verified. + self.remember(&mut runtime, &snapshot, key, remember_key) + .await?; + runtime.snapshot = Some(previous.clone()); + let result = self + .upload( + &mut runtime, + snapshot, + captured, + Some(previous.key_id.as_str().into()), + ) + .await; + if result.is_err() { + let epoch = runtime.settings.key_preference_epoch; + let remember = runtime.settings.remember_key; + runtime.key = old_key; + runtime.settings = old_settings; + runtime.settings.key_preference_epoch = epoch; + runtime.settings.remember_key = remember; + self.save_settings(&runtime).await?; + } + result + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + pub(crate) async fn delete_remote( + &self, + expected_vault_id: String, + observed_revision: String, + confirmed: bool, + ) -> SyncResult { + if !confirmed { + return Err(error("delete_confirmation_required")); + } + let observed = Revision::parse(&observed_revision).map_err(protocol_error)?; + let expected = UuidV4::parse(&expected_vault_id).map_err(protocol_error)?; + let mut runtime = self.0.runtime.try_lock().map_err(|_| error("busy"))?; + self.begin(); + let result = async { + self.connect(&mut runtime).await?; + self.reconcile_for_review(&mut runtime).await?; + self.refresh_metadata(&mut runtime).await?; + let metadata = self.metadata(&runtime)?; + if metadata.value().revision != observed + || metadata.value().vault_id.as_ref() != Some(&expected) + || metadata.value().state != VaultState::Active + { + return Err(error("revision_conflict")); + } + self.retire_reviewed_pending(&mut runtime, None).await?; + let metadata = self.metadata(&runtime)?; + let connection = runtime + .connection + .as_ref() + .ok_or_else(|| error("sign_in_required"))?; + let operation = connection + .transport + .prepare_delete( + &connection.session, + metadata, + UuidV4::random().map_err(protocol_error)?, + ) + .map_err(protocol_error)?; + let pending = Pending { + record: String::from_utf8(operation.to_pending_record().map_err(protocol_error)?) + .map_err(|_| error("invalid_response"))?, + operation_id: operation.operation_id().as_str().into(), + vault_id: expected_vault_id, + key_id: None, + local_generation: self.0.data.generation()?, + deleted: true, + remember_key: false, + key_preference_epoch: runtime.settings.key_preference_epoch, + base_revision: observed, + old_key_id: None, + }; + self.0 + .local + .write(self.owner(&runtime)?, "pending", pending.clone()) + .await?; + self.update(|s| s.pending_operation_id = Some(pending.operation_id.clone())); + self.current_account(&runtime).await?; + let receipt = match connection + .transport + .submit(&connection.session, &operation) + .await + { + Ok(receipt) => receipt, + Err(e) if definite_rejection(&e) => { + self.discard_rejected(&runtime, &pending).await?; + return Err(protocol_error(e)); + } + Err(_) => return Err(error("outcome_unknown")), + }; + self.accept_receipt(&mut runtime, &pending, &receipt.receipt) + .await + } + .await; + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + pub(crate) async fn sign_out(&self) -> SyncResult { + use crate::domains::MarketplaceApi; + self.0.auto_suspended.store(true, Ordering::Release); + self.0.cancelled.store(true, Ordering::Release); + // Preserve the account API's existing fail-closed guarantee immediately, + // even while an earlier sync task is draining its native I/O worker. + self.0.marketplace.invalidate_authentication(); + let mut runtime = self.0.runtime.lock().await; + runtime.key = None; + runtime.preview = None; + runtime.settings.enabled = false; + runtime.settings.remember_key = false; + let connection = runtime.connection.take(); + // OAuth logout is independent of encrypted journal/key cleanup. Always + // attempt it; denied sync-key deletion cannot keep GitHub authorized. + let logout_result = self + .0 + .marketplace + .logout() + .await + .map_err(|_| error("secure_storage_denied")); + let cleanup_result = async { + self.0.local.set_lockout(true).await?; + self.initialize(&mut runtime).await?; + runtime.settings.enabled = false; + runtime.settings.remember_key = false; + runtime.settings.key_preference_epoch = runtime + .settings + .key_preference_epoch + .checked_add(1) + .ok_or_else(|| error("recovery_required"))?; + self.save_settings(&runtime).await?; + self.forget_unlock_material(&runtime).await + } + .await; + if let Some(Connection { + transport, + session, + github_token, + .. + }) = connection + { + drop(github_token); + // Local sign-out remains possible offline; the discarded session + // also has a short server-enforced expiry. + let _ = tokio::time::timeout(Duration::from_secs(5), transport.revoke_session(session)) + .await; + } + runtime.settings.enabled = false; + runtime.settings.remember_key = false; + runtime.metadata = None; + runtime.snapshot = None; + runtime.baseline = None; + self.update(|s| { + s.account = None; + s.auth_state = AuthState::SignedOut; + s.has_cloud_snapshot = None; + s.vault_id = None; + s.key_id = None; + s.remote_revision = None; + s.pending_operation_id = None; + }); + let result = cleanup_result.and(logout_result); + self.finish(&mut runtime, &result); + result.map(|()| self.status()) + } + + pub(crate) async fn begin_sign_in(&self) -> SyncResult { + use crate::domains::MarketplaceApi; + let flow = self + .0 + .marketplace + .start_device_flow() + .await + .map_err(|_| error("sign_in_required"))?; + if flow.verification_uri != "https://github.com/login/device" { + return Err(error("invalid_response")); + } + let expires = chrono::Utc::now() + .checked_add_signed(chrono::Duration::seconds( + i64::try_from(flow.expires_in_secs).map_err(|_| error("invalid_response"))?, + )) + .ok_or_else(|| error("invalid_response"))?; + Ok(EncryptedSyncSignIn { + authorization_session_id: flow.flow_id, + user_code: flow.user_code, + verification_uri: flow.verification_uri, + expires_at: expires.to_rfc3339(), + interval_seconds: flow.interval_secs, + }) + } + + async fn forget_unlock_material(&self, runtime: &Runtime) -> SyncResult<()> { + let Some(owner) = &runtime.settings.owner_id else { + return Ok(()); + }; + if let (Some(vault), Some(key)) = (&runtime.settings.vault_id, &runtime.settings.key_id) { + self.0.local.forget(owner, vault, key).await?; + } + // An interrupted password rotation can have two remembered keys. Lock + // and sign-out clear both while retaining the encrypted replay record. + if let Some(pending) = self.0.local.read::(owner, "pending").await? { + for key in [pending.key_id.as_ref(), pending.old_key_id.as_ref()] + .into_iter() + .flatten() + { + self.0.local.forget(owner, &pending.vault_id, key).await?; + } + } + Ok(()) + } + + pub(crate) async fn poll_sign_in( + &self, + session: String, + ) -> SyncResult { + use crate::domains::MarketplaceApi; + use crate::domains::OAuthPollResult; + match self + .0 + .marketplace + .poll_device_flow(session) + .await + .map_err(|_| error("sign_in_required"))? + { + OAuthPollResult::Authorized { .. } => { + let (_, account) = self + .0 + .marketplace + .sync_identity() + .await + .map_err(|_| error("sign_in_required"))?; + Ok(EncryptedSyncSignInResult::SignedIn { + account: SyncAccount { + github_id: account.github_id.as_str().into(), + login: account.login, + }, + }) + } + OAuthPollResult::Pending => Ok(EncryptedSyncSignInResult::Pending { slow_down: false }), + OAuthPollResult::SlowDown => Ok(EncryptedSyncSignInResult::Pending { slow_down: true }), + OAuthPollResult::Error { message } + if message == "OAuth 设备码已过期,请重新发起登录" => + { + Ok(EncryptedSyncSignInResult::Expired) + } + OAuthPollResult::Error { message } + if message.contains("拒绝") || message.contains("取消") => + { + Ok(EncryptedSyncSignInResult::Denied) + } + OAuthPollResult::Error { .. } => Err(error("sign_in_required")), + } + } + + pub(crate) async fn cancel_sign_in(&self, session: String) -> SyncResult<()> { + use crate::domains::MarketplaceApi; + self.0.marketplace.cancel_device_flow(Some(session)).await + } + + pub(crate) async fn start(&self, spawner: Arc) -> SyncResult<()> { + if self.0.auto_started.swap(true, Ordering::AcqRel) { + return Ok(()); + } + { + let mut runtime = self.0.runtime.lock().await; + let result = self.initialize(&mut runtime).await; + self.finish(&mut runtime, &result); + if result.is_err() { + self.0.auto_started.store(false, Ordering::Release); + } + result?; + } + let service = self.clone(); + spawner.spawn(Box::pin(async move { + let mut changes = service.0.data.changes(); + // One startup trigger. Only a bounded local-busy retry may schedule + // another attempt without a user change; no network polling timer. + service.auto_sync(true).await; + loop { + let mut forced = tokio::select! { + changed = changes.changed() => { if changed.is_err() { break; } false }, + _ = service.0.wake.notified() => true, + }; + if service.0.shutdown.load(Ordering::Acquire) { break; } + let first = Instant::now(); + let mut deadline = tokio::time::Instant::now() + Duration::from_millis(750); + loop { + tokio::select! { + _ = tokio::time::sleep_until(deadline) => break, + changed = changes.changed() => { + if changed.is_err() { return; } + let elapsed = first.elapsed(); + if elapsed >= Duration::from_secs(5) { break; } + deadline = tokio::time::Instant::now() + Duration::from_millis(750).min(Duration::from_secs(5) - elapsed); + }, + _ = service.0.wake.notified() => { if service.0.shutdown.load(Ordering::Acquire) { return; } forced = true; }, + } + } + let change = *changes.borrow_and_update(); + if forced || matches!(change.origin, crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User) { service.auto_sync(false).await; } + } + })); + Ok(()) + } + + async fn auto_sync(&self, startup: bool) { + // A LocalOnly writer can overlap the debounce/capture boundary without + // emitting another dirty generation when it finishes. Retain this + // trigger briefly instead of losing it after SourceChanged. This budget + // applies only to local contention, never transport/CAS/unknown results. + let mut delays = [250, 750, 1_500, 3_000].into_iter(); + let mut retry_sequence = None; + loop { + let mut runtime = self.0.runtime.lock().await; + if self.0.shutdown.load(Ordering::Acquire) + || self.0.auto_suspended.load(Ordering::Acquire) + || !runtime.settings.enabled + || runtime.preview.is_some() + { + return; + } + if retry_sequence.is_some_and(|sequence| { + self.0.cancelled.load(Ordering::Acquire) + || self.0.sequence.load(Ordering::Acquire) != sequence + }) { + return; + } + if runtime.key.is_none() && !(startup && runtime.settings.remember_key) { + return; + } + if runtime.retry_at.is_some_and(|at| at > Instant::now()) { + return; + } + self.begin(); + let result = self.run_once(&mut runtime).await; + let local_busy = result.as_ref().err().is_some_and(|failure| { + failure.code == crate::BackendErrorCode::Busy + && matches!( + failure.message.as_str(), + "sync_documents_source_changed" | "runtime_busy" + ) + }); + self.finish(&mut runtime, &result); + let completed_sequence = self.0.sequence.load(Ordering::Acquire); + // Pause/lock/manual work must be able to acquire the runtime during + // the delay. Every retry revalidates the current service state. + drop(runtime); + if !local_busy || self.0.cancelled.load(Ordering::Acquire) { + return; + } + let Some(delay) = delays.next() else { + return; + }; + // A later manual operation owns its own outcome. In particular an + // old local retry must never reconcile that operation's unknown PUT. + retry_sequence = Some(completed_sequence); + tokio::time::sleep(Duration::from_millis(delay)).await; + } + } + + pub(crate) async fn shutdown(&self) { + self.0.shutdown.store(true, Ordering::Release); + self.0.cancelled.store(true, Ordering::Release); + self.0.wake.notify_waiters(); + let mut runtime = self.0.runtime.lock().await; + runtime.key = None; + runtime.preview = None; + runtime.connection = None; + } + + async fn discard_rejected(&self, runtime: &Runtime, pending: &Pending) -> SyncResult<()> { + let owner = self.owner(runtime)?; + self.0.local.remove(owner, "pending").await?; + let _ = self + .0 + .local + .remove(owner, &format!("proposal:{}", pending.operation_id)) + .await; + self.update(|status| status.pending_operation_id = None); + Ok(()) + } + + async fn reconcile_for_review(&self, runtime: &mut Runtime) -> SyncResult<()> { + match self.reconcile(runtime).await { + Err(e) if e.message == "outcome_unknown" => Ok(()), + result => result, + } + } + + async fn reviewable_pending(&self, runtime: &Runtime) -> SyncResult> { + let pending: Option = self.0.local.read(self.owner(runtime)?, "pending").await?; + if let Some(pending) = &pending { + // Once a newer head is observed, the original If-Match can no + // longer commit. Until then, only exact replay is safe. + if self.metadata(runtime)?.value().revision <= pending.base_revision { + return Err(error("outcome_unknown")); + } + } + Ok(pending) + } + + async fn retire_reviewed_pending( + &self, + runtime: &mut Runtime, + expected_id: Option<&str>, + ) -> SyncResult<()> { + let pending = self.reviewable_pending(runtime).await?; + if expected_id.is_some() && pending.as_ref().map(|p| p.operation_id.as_str()) != expected_id + { + return Err(error("stale_preview")); + } + if let Some(pending) = pending { + self.current_account(runtime).await?; + let head = self.metadata(runtime)?.value(); + for key_id in [pending.key_id.as_ref(), pending.old_key_id.as_ref()] + .into_iter() + .flatten() + { + let active = head.vault_id.as_ref().map(UuidV4::as_str) + == Some(pending.vault_id.as_str()) + && head.key_id.as_ref().map(UuidV4::as_str) == Some(key_id.as_str()); + if !active { + self.0 + .local + .forget(self.owner(runtime)?, &pending.vault_id, key_id) + .await?; + } + } + // Explicit restore/create/delete supersedes the old CAS only after + // review. Preserve the uncertain operation as protected evidence; + // never mislabel it failed or committed without its receipt. + self.0 + .local + .write( + self.owner(runtime)?, + &format!("reviewed-uncertain:{}", pending.operation_id), + pending.clone(), + ) + .await?; + self.0.local.remove(self.owner(runtime)?, "pending").await?; + self.update(|status| status.pending_operation_id = None); + } + Ok(()) + } + + pub(crate) async fn ui_preferences(&self) -> SyncResult> { + Ok(self.ui_preferences_snapshot().await?.preferences) + } + + pub(crate) async fn ui_preferences_snapshot( + &self, + ) -> SyncResult { + let Some(envelope) = self.0.local.read_ui().await? else { + return Ok(EncryptedUiPreferencesSnapshot { + preferences: None, + revision: None, + }); + }; + let preferences = serde_json::from_value(serde_json::json!({ "locale": envelope.value.expose().get("locale"), "fontScale": envelope.value.expose().get("fontScale") })) + .map_err(|_| error("recovery_required"))?; + Ok(EncryptedUiPreferencesSnapshot { + preferences: Some(preferences), + revision: Some(envelope.revision), + }) + } + + fn emit_restored(&self, scope: &SyncScope, applied: &ExportedDocuments) { + let ui_preferences = applied + .documents + .documents() + .documents + .iter() + .filter(|d| d.kind == DocumentKind::UiPreferences) + .filter_map(|d| d.value.as_str().map(|v| (d.id.clone(), v.to_owned()))) + .collect(); + self.0.events.publish( + None, + BackendEventKind::CloudSyncRestoreCompleted(EncryptedSyncRestoreEvent { + sequence: self + .0 + .sequence + .fetch_add(1, Ordering::AcqRel) + .saturating_add(1) + .to_string(), + account_id: scope.owner_github_id.clone(), + vault_id: scope.vault_id.clone(), + task_id: self.status().task_id, + local_generation: applied.generation.as_str().into(), + ui_preferences, + }), + ); + } +} + +fn wire_name(value: &impl Serialize) -> String { + serde_json::to_value(value) + .ok() + .and_then(|v| v.as_str().map(str::to_owned)) + .unwrap_or_else(|| "unknown".into()) +} + +fn same_documents(left: &DocumentSet, right: &DocumentSet) -> bool { + // Device/time metadata describes an export, not a user edit. + left.documents == right.documents && left.tombstones == right.tombstones +} + +fn definite_rejection(error: &crate::cloud_sync_e2ee_protocol::Error) -> bool { + // Only for the first submit of a freshly generated operation ID. A retry of + // an older unknown request cannot use a CAS rejection as proof of failure. + matches!( + error, + crate::cloud_sync_e2ee_protocol::Error::Api { + status: 400..=499, + .. + } + ) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt.rs new file mode 100644 index 000000000..2e42db06b --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt.rs @@ -0,0 +1,61 @@ +//! One local claim after a usable pipeline is configured. This path never connects +//! to OAuth/sync servers, exports private documents, or enables synchronization. +use super::*; +use crate::{CredentialStore, CredentialsStatus, UserPreferences}; + +type Eligibility = Option<(UserPreferences, (Revision, u64))>; + +fn configured(preferences: &UserPreferences, status: &CredentialsStatus) -> bool { + match crate::shared_types::effective_pipeline_mode( + preferences.multimodal_pipeline_enabled, + preferences.pipeline_mode, + ) { + crate::shared_types::PipelineMode::Traditional => { + status.asr_configured && status.llm_configured + } + crate::shared_types::PipelineMode::Multimodal => status.omni_configured, + } +} + +impl EncryptedSyncService { + pub(crate) async fn claim_setup_prompt( + &self, + credentials: Arc, + eligibility: impl Fn() -> SyncResult + Send + Sync, + ) -> SyncResult { + let mut runtime = match self.0.runtime.try_lock() { + Ok(runtime) => runtime, + Err(_) => return Ok(false), + }; + if self.0.shutdown.load(Ordering::Acquire) { + return Ok(false); + } + let Some((preferences, stamp)) = eligibility()? else { + return Ok(false); + }; + self.initialize(&mut runtime).await?; + if runtime.settings.enabled || runtime.settings.prompted { + return Ok(false); + } + let status = credentials.status(preferences.clone()).await?; + if !configured(&preferences, &status) { + return Ok(false); + } + let Some((_, current)) = eligibility()? else { + return Ok(false); + }; + if current != stamp || self.0.shutdown.load(Ordering::Acquire) { + return Ok(false); + } + // Publish the in-memory claim only after durable encrypted persistence succeeds. + // Read errors and busy/changing inputs do not consume the installation's prompt. + let mut settings = runtime.settings.clone(); + settings.prompted = true; + self.0 + .local + .write("device", "client", settings.clone()) + .await?; + runtime.settings = settings; + Ok(true) + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt_tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt_tests.rs new file mode 100644 index 000000000..8e8cf3193 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/setup_prompt_tests.rs @@ -0,0 +1,280 @@ +use super::*; +use std::sync::atomic::AtomicUsize; + +struct ReadyCredentials { + status: CredentialsStatus, + deny: bool, + reads: Arc, + barrier: Option>, +} +impl CredentialStore for ReadyCredentials { + fn status( + &self, + _: UserPreferences, + ) -> BoxFuture<'static, Result> { + let status = self.status.clone(); + let deny = self.deny; + let reads = self.reads.clone(); + let barrier = self.barrier.clone(); + Box::pin(async move { + reads.fetch_add(1, Ordering::AcqRel); + if let Some(barrier) = barrier { + barrier.wait().await; + barrier.wait().await; + } + if deny { + Err(error("secure_storage_denied")) + } else { + Ok(status) + } + }) + } + fn read( + &self, + _: CredentialKey, + ) -> BoxFuture<'static, Result, BackendError>> { + Box::pin(async { panic!("claim must use Host readiness, not require a local-ASR API key") }) + } + fn write( + &self, + _: CredentialKey, + _: SecretValue, + ) -> BoxFuture<'static, Result<(), BackendError>> { + Box::pin(async { panic!("claim must not mutate provider credentials") }) + } + fn remove(&self, _: CredentialKey) -> BoxFuture<'static, Result<(), BackendError>> { + Box::pin(async { panic!("claim must not mutate provider credentials") }) + } +} +fn readiness(asr: bool, llm: bool, omni: bool) -> Arc { + Arc::new(ReadyCredentials { + status: CredentialsStatus { + asr_configured: asr, + llm_configured: llm, + omni_configured: omni, + ..Default::default() + }, + deny: false, + reads: Arc::new(AtomicUsize::new(0)), + barrier: None, + }) +} +fn eligible( + prefs: UserPreferences, +) -> impl Fn() -> SyncResult> + Send + Sync { + move || Ok(Some((prefs.clone(), (Revision::new(1), 0)))) +} +fn reopened_service(fixture: &Fixture, server: &Server) -> EncryptedSyncService { + let repos = crate::BackendRepositories::open(&fixture.root).unwrap(); + let config = crate::MarketplaceConfig::new(&server.origin).unwrap(); + let events = + crate::events::BackendEventPublisher::new(Arc::new(crate::events::EventBus::new(32))); + let marketplace = Arc::new( + crate::marketplace::MarketplaceService::new( + config, + fixture.vault.clone(), + repos.preferences, + repos.style_packs, + events.clone(), + Arc::new(AtomicU64::new(0)), + ) + .unwrap(), + ); + let local = LocalStorage::new( + fixture.root.join("protected"), + server.origin.clone(), + fixture.data.device().id.clone(), + fixture.vault.clone(), + ); + EncryptedSyncService::new( + SyncServiceConfig { + origin: server.origin.clone(), + github_client_id: CLIENT.into(), + }, + marketplace, + local, + fixture.data.clone(), + events, + ) +} + +#[tokio::test] +async fn setup_prompt_requires_the_selected_pipeline_and_accepts_ready_local_asr_without_a_key() { + let server = Server::start().await; + for (multi, enabled, asr, llm, omni, expected) in [ + (false, false, true, false, true, false), + (false, false, false, true, true, false), + (false, false, true, true, false, true), + (true, true, false, false, true, true), + (true, true, true, true, false, false), + (true, false, true, true, false, true), + ] { + let fixture = Fixture::new(&server).await; + let prefs = UserPreferences { + pipeline_mode: if multi { + crate::shared_types::PipelineMode::Multimodal + } else { + crate::shared_types::PipelineMode::Traditional + }, + multimodal_pipeline_enabled: enabled, + active_asr_provider: "local-qwen3".into(), + ..Default::default() + }; + assert_eq!( + fixture + .service + .claim_setup_prompt(readiness(asr, llm, omni), eligible(prefs)) + .await + .unwrap(), + expected + ); + } + assert_eq!(server.state.lock().unwrap().requests, 0); +} + +#[tokio::test] +async fn setup_prompt_claim_is_once_per_installation_and_survives_restart_without_http() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + let ready = readiness(true, true, false); + assert!(fixture + .service + .claim_setup_prompt(ready.clone(), eligible(UserPreferences::default())) + .await + .unwrap()); + assert!(!fixture + .service + .claim_setup_prompt(ready.clone(), eligible(UserPreferences::default())) + .await + .unwrap()); + let reopened = reopened_service(&fixture, &server); + assert!(!reopened + .claim_setup_prompt(ready, eligible(UserPreferences::default())) + .await + .unwrap()); + assert_eq!(server.state.lock().unwrap().requests, 0); + assert!(server.state.lock().unwrap().puts.is_empty()); +} + +#[tokio::test] +async fn setup_prompt_read_error_busy_or_stale_capture_never_consumes_the_flag() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + let denied = Arc::new(ReadyCredentials { + deny: true, + status: CredentialsStatus::default(), + reads: Arc::new(AtomicUsize::new(0)), + barrier: None, + }); + assert!(fixture + .service + .claim_setup_prompt(denied, eligible(UserPreferences::default())) + .await + .is_err()); + assert!(!fixture + .service + .claim_setup_prompt(readiness(true, true, false), || Ok(None)) + .await + .unwrap()); + let calls = AtomicUsize::new(0); + assert!(!fixture + .service + .claim_setup_prompt(readiness(true, true, false), || Ok(Some(( + UserPreferences::default(), + ( + Revision::new(1), + calls.fetch_add(1, Ordering::AcqRel) as u64 + ) + )))) + .await + .unwrap()); + assert!(fixture.vault.secrets.lock().unwrap().is_empty()); + assert!(fixture + .service + .claim_setup_prompt( + readiness(true, true, false), + eligible(UserPreferences::default()) + ) + .await + .unwrap()); + assert_eq!(server.state.lock().unwrap().requests, 0); +} + +#[tokio::test] +async fn setup_prompt_durable_write_failure_and_enabled_state_do_not_claim() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.vault.deny.store(true, Ordering::Release); + assert!(fixture + .service + .claim_setup_prompt( + readiness(true, true, false), + eligible(UserPreferences::default()) + ) + .await + .is_err()); + fixture.vault.deny.store(false, Ordering::Release); + assert!(fixture + .service + .claim_setup_prompt( + readiness(true, true, false), + eligible(UserPreferences::default()) + ) + .await + .unwrap()); + let other = Fixture::new(&server).await; + let local = LocalStorage::new( + other.root.join("protected"), + server.origin.clone(), + other.data.device().id.clone(), + other.vault.clone(), + ); + let settings = local::ClientSettings { + enabled: true, + ..Default::default() + }; + local.write("device", "client", settings).await.unwrap(); + let ready = readiness(true, true, false); + assert!(!other + .service + .claim_setup_prompt(ready.clone(), eligible(UserPreferences::default())) + .await + .unwrap()); + assert_eq!(ready.reads.load(Ordering::Acquire), 0); + assert_eq!(server.state.lock().unwrap().requests, 0); +} + +#[tokio::test] +async fn setup_prompt_service_busy_is_false_and_concurrent_claims_do_not_duplicate() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + let barrier = Arc::new(tokio::sync::Barrier::new(2)); + let ready = Arc::new(ReadyCredentials { + status: CredentialsStatus { + asr_configured: true, + llm_configured: true, + ..Default::default() + }, + deny: false, + reads: Arc::new(AtomicUsize::new(0)), + barrier: Some(barrier.clone()), + }); + let service = fixture.service.clone(); + let first = tokio::spawn(async move { + service + .claim_setup_prompt(ready, eligible(UserPreferences::default())) + .await + }); + barrier.wait().await; + assert!(!fixture + .service + .claim_setup_prompt( + readiness(true, true, false), + eligible(UserPreferences::default()) + ) + .await + .unwrap()); + barrier.wait().await; + assert!(first.await.unwrap().unwrap()); + assert_eq!(server.state.lock().unwrap().requests, 0); +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/tests.rs new file mode 100644 index 000000000..625087e1b --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee/tests.rs @@ -0,0 +1,1310 @@ +//! Service-level fault tests use a loopback fake OAuth/sync service and an +//! in-memory system vault. No user's data, account, or operating-system keychain. +use std::{ + collections::HashMap, + sync::{ + atomic::{AtomicBool, AtomicU64, Ordering}, + Arc, Mutex, + }, +}; + +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; +use futures_util::future::BoxFuture; +use serde_json::{json, Value}; +use tokio::{ + io::{AsyncReadExt, AsyncWriteExt}, + net::TcpListener, +}; + +use super::{ + local::LocalStorage, + service::{EncryptedSyncService, SyncServiceConfig, SyncServiceData}, + *, +}; +use crate::cloud_sync_e2ee_documents::{ + self as documents, ExportedDocuments, RestoreContext, SyncScope, ValidatedSyncDocuments, +}; +use crate::cloud_sync_e2ee_protocol::types::*; +use crate::cloud_sync_e2ee_store::gate::{ChangeOrigin, SyncChange}; +use crate::credentials::SyncSecretAccount; +use crate::{ + BackendError, CredentialKey, CredentialNamespace, CredentialStore, CredentialsStatus, + InMemoryCredentialStore, SecretValue, UserPreferences, +}; + +const PASSWORD: &str = "FixtureOpenLess!2684"; +const OWNER: &str = "118526"; +const CLIENT: &str = "Ov23liyv3nEucG7oMHNE"; + +#[derive(Default)] +struct Vault { + ordinary: InMemoryCredentialStore, + secrets: Mutex>, + deny: AtomicBool, + deny_remove: AtomicBool, +} +impl CredentialStore for Vault { + fn status( + &self, + prefs: UserPreferences, + ) -> BoxFuture<'static, Result> { + self.ordinary.status(prefs) + } + fn read( + &self, + key: CredentialKey, + ) -> BoxFuture<'static, Result, BackendError>> { + self.ordinary.read(key) + } + fn write( + &self, + key: CredentialKey, + value: SecretValue, + ) -> BoxFuture<'static, Result<(), BackendError>> { + self.ordinary.write(key, value) + } + fn remove(&self, key: CredentialKey) -> BoxFuture<'static, Result<(), BackendError>> { + self.ordinary.remove(key) + } + fn read_sync_secret( + &self, + account: SyncSecretAccount, + ) -> BoxFuture<'static, Result, BackendError>> { + let result = if self.deny.load(Ordering::Acquire) { + Err(error("secure_storage_denied")) + } else { + Ok(self.secrets.lock().unwrap().get(account.as_str()).cloned()) + }; + Box::pin(async move { result }) + } + fn write_sync_secret( + &self, + account: SyncSecretAccount, + value: SecretValue, + ) -> BoxFuture<'static, Result<(), BackendError>> { + let result = if self.deny.load(Ordering::Acquire) { + Err(error("secure_storage_denied")) + } else { + self.secrets + .lock() + .unwrap() + .insert(account.as_str().into(), value); + Ok(()) + }; + Box::pin(async move { result }) + } + fn remove_sync_secret( + &self, + account: SyncSecretAccount, + ) -> BoxFuture<'static, Result<(), BackendError>> { + if self.deny_remove.load(Ordering::Acquire) { + return Box::pin(async { Err(error("secure_storage_denied")) }); + } + self.secrets.lock().unwrap().remove(account.as_str()); + Box::pin(async { Ok(()) }) + } +} + +struct Data { + documents: Mutex, + baseline: Mutex>, + generation: AtomicU64, + changes: tokio::sync::watch::Sender, + fail_restore: AtomicBool, + capture_gate: Mutex>>, + export_attempts: AtomicU64, +} +impl Data { + fn new() -> Arc { + let set = DocumentSet { + schema_version: 1, + exported_at: "2026-09-25T12:00:00Z".into(), + source_device: SourceDevice { + id: "11111111-1111-4111-8111-111111111111".into(), + os: "macos".into(), + arch: "aarch64".into(), + app_version: "2.0.0-Beta.3".into(), + }, + documents: vec![ + LogicalDocument { + id: "futureLayout".into(), + kind: DocumentKind::Preferences, + schema_version: 1, + value: json!("private-fixture-history"), + }, + LogicalDocument { + id: "llm:fixture-channel".into(), + kind: DocumentKind::Channels, + schema_version: 1, + value: json!({"id":"fixture-channel","namespace":"llm","providerType":"openai","name":"Fixture","enabled":true,"order":0,"active":true}), + }, + LogicalDocument { + id: "llm:fixture-channel".into(), + kind: DocumentKind::ProviderCredentials, + schema_version: 1, + value: json!({"channelId":"fixture-channel","namespace":"llm","accounts":{"ark.api_key":"sk-private-fixture-key"}}), + }, + ], + tombstones: vec![], + }; + documents::validate_sync_documents(set.clone(), Revision::new(0)).unwrap(); + let (changes, _) = tokio::sync::watch::channel(SyncChange { + generation: Revision::new(1), + origin: ChangeOrigin::User, + }); + Arc::new(Self { + documents: Mutex::new(set), + baseline: Mutex::new(None), + generation: AtomicU64::new(1), + changes, + fail_restore: AtomicBool::new(false), + capture_gate: Mutex::new(None), + export_attempts: AtomicU64::new(0), + }) + } + fn edit(&self, text: &str) { + self.documents + .lock() + .unwrap() + .documents + .iter_mut() + .find(|d| d.id == "futureLayout") + .unwrap() + .value = json!(text); + let generation = self.generation.fetch_add(1, Ordering::AcqRel) + 1; + self.changes.send_replace(SyncChange { + generation: Revision::new(generation), + origin: ChangeOrigin::User, + }); + } +} +impl SyncServiceData for Data { + fn export(&self, _scope: SyncScope) -> BoxFuture<'_, SyncResult> { + Box::pin(async move { + self.export_attempts.fetch_add(1, Ordering::AcqRel); + if let Some(gate) = self.capture_gate.lock().unwrap().as_ref() { + gate.coherent_generation().map_err(document_error)?; + } + let set = self.documents.lock().unwrap().clone(); + let baseline = self.baseline.lock().unwrap(); + let documents = match baseline.as_ref() { + Some(base) => { + documents::record_missing_tombstones(set, base, "2026-09-25T12:01:00Z") + } + None => documents::validate_sync_documents(set, Revision::new(0)), + } + .map_err(document_error)?; + Ok(ExportedDocuments { + generation: Revision::new(self.generation.load(Ordering::Acquire)), + documents, + }) + }) + } + fn restore( + &self, + desired: ValidatedSyncDocuments, + context: RestoreContext, + ) -> BoxFuture<'_, SyncResult> { + Box::pin(async move { + if self.fail_restore.load(Ordering::Acquire) { + return Err(error("recovery_required")); + } + if self.generation.load(Ordering::Acquire) != context.local_generation.get() { + return Err(error("stale_preview")); + } + *self.documents.lock().unwrap() = desired.documents().clone(); + let generation = self.generation.fetch_add(1, Ordering::AcqRel) + 1; + self.changes.send_replace(SyncChange { + generation: Revision::new(generation), + origin: ChangeOrigin::Restore, + }); + Ok(ExportedDocuments { + generation: Revision::new(generation), + documents: desired, + }) + }) + } + fn recover(&self) -> BoxFuture<'_, SyncResult<()>> { + Box::pin(async move { + if self.fail_restore.load(Ordering::Acquire) { + Err(error("recovery_required")) + } else { + Ok(()) + } + }) + } + fn baseline( + &self, + _scope: SyncScope, + set: DocumentSet, + revision: Revision, + ) -> BoxFuture<'_, SyncResult<()>> { + Box::pin(async move { + *self.baseline.lock().unwrap() = + Some(documents::validate_sync_documents(set, revision).map_err(document_error)?); + Ok(()) + }) + } + fn generation(&self) -> SyncResult { + Ok(Revision::new(self.generation.load(Ordering::Acquire))) + } + fn device(&self) -> SourceDevice { + self.documents.lock().unwrap().source_device.clone() + } + fn changes(&self) -> tokio::sync::watch::Receiver { + self.changes.subscribe() + } +} + +#[derive(Default)] +struct Remote { + snapshot: Option, + revision: u64, + receipt: Option, + drop_response: bool, + puts: Vec>, + requests: usize, + owner: String, + delay_upload: bool, + reject_upload: bool, + hide_receipts: bool, + drop_metadata_response: bool, +} +struct Server { + origin: String, + state: Arc>, + upload_arrived: Arc, + allow_upload: Arc, + task: tokio::task::JoinHandle<()>, +} +impl Drop for Server { + fn drop(&mut self) { + self.task.abort(); + } +} +impl Server { + async fn start() -> Self { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + let origin = format!("http://{}", listener.local_addr().unwrap()); + let state = Arc::new(Mutex::new(Remote { + owner: OWNER.into(), + ..Remote::default() + })); + let shared = state.clone(); + let upload_arrived = Arc::new(tokio::sync::Notify::new()); + let allow_upload = Arc::new(tokio::sync::Notify::new()); + let arrived = upload_arrived.clone(); + let allow = allow_upload.clone(); + let task = tokio::spawn(async move { + loop { + let (mut socket, _) = listener.accept().await.unwrap(); + let mut bytes = Vec::new(); + let mut buffer = [0_u8; 8192]; + let header_end = loop { + let size = socket.read(&mut buffer).await.unwrap(); + if size == 0 { + return; + } + bytes.extend_from_slice(&buffer[..size]); + if let Some(offset) = bytes.windows(4).position(|w| w == b"\r\n\r\n") { + break offset + 4; + } + }; + let head = String::from_utf8(bytes[..header_end].to_vec()).unwrap(); + let mut first = head.lines().next().unwrap().split_whitespace(); + let method = first.next().unwrap(); + let path = first.next().unwrap(); + let headers: HashMap<_, _> = head + .lines() + .filter_map(|l| l.split_once(':')) + .map(|(k, v)| (k.to_ascii_lowercase(), v.trim().to_string())) + .collect(); + let length: usize = headers + .get("content-length") + .map_or(0, |v| v.parse().unwrap()); + while bytes.len() < header_end + length { + let size = socket.read(&mut buffer).await.unwrap(); + assert!(size > 0); + bytes.extend_from_slice(&buffer[..size]); + } + let body = &bytes[header_end..header_end + length]; + if method == "DELETE" && path == "/v1/auth/session" { + socket.write_all(b"HTTP/1.1 204 No Content\r\nCache-Control: no-store\r\nContent-Length: 0\r\nConnection: close\r\n\r\n").await.unwrap(); + continue; + } + let drop_metadata = method == "GET" + && path == "/v1/me/vault" + && std::mem::take(&mut shared.lock().unwrap().drop_metadata_response); + if drop_metadata { + shared.lock().unwrap().requests += 1; + continue; + } + let hidden_receipt = + path.starts_with("/v1/me/operations/") && shared.lock().unwrap().hide_receipts; + if hidden_receipt { + let body = serde_json::to_vec(&json!({"error":{"code":"operation_not_found","message":"fixture receipt expired","requestId":"dddddddd-dddd-4ddd-8ddd-dddddddddddd"}})).unwrap(); + let reply = format!("HTTP/1.1 404 Not Found\r\nContent-Type: application/json\r\nCache-Control: no-store\r\nContent-Length: {}\r\nConnection: close\r\n\r\n", body.len()); + socket.write_all(reply.as_bytes()).await.unwrap(); + socket.write_all(&body).await.unwrap(); + continue; + } + let rejected = if method == "PUT" { + let mut state = shared.lock().unwrap(); + std::mem::take(&mut state.reject_upload) + || headers.get("if-match") + != Some(&format!("\"fixture-{}\"", state.revision)) + } else { + false + }; + if rejected { + let body = serde_json::to_vec(&json!({"error":{"code":"revision_conflict","message":"fixture CAS lost","requestId":"dddddddd-dddd-4ddd-8ddd-dddddddddddd","currentRevision":"2"}})).unwrap(); + let reply = format!("HTTP/1.1 412 Precondition Failed\r\nContent-Type: application/json\r\nCache-Control: no-store\r\nContent-Length: {}\r\nConnection: close\r\n\r\n", body.len()); + socket.write_all(reply.as_bytes()).await.unwrap(); + socket.write_all(&body).await.unwrap(); + continue; + } + let delayed = method == "PUT" && shared.lock().unwrap().delay_upload; + if delayed { + arrived.notify_one(); + allow.notified().await; + } + let (status, response, etag, disconnect) = { + let mut remote = shared.lock().unwrap(); + remote.requests += 1; + let owner = remote.owner.clone(); + let mut disconnect = false; + let response = match (method, path) { + ("GET", "/v1/capabilities") => { + json!({"protocolVersion":1,"cryptoProfile":"argon2id-xchacha20poly1305-v1","githubClientId":CLIENT,"maxHttpBodyBytes":25165824,"maxCiphertextBytes":16777232,"maxPlaintextJsonBytes":15728640,"idempotencyRetentionSeconds":604800,"maxBackupRetentionDays":30}) + } + ("GET", "/github/user") => { + json!({"id":owner.parse::().unwrap(),"login":"fixture-user"}) + } + ("POST", "/v1/auth/github") => { + json!({"protocolVersion":1,"accessToken":"a".repeat(43),"tokenType":"Bearer","expiresIn":900,"account":{"githubId":owner,"login":"fixture-user"}}) + } + ("GET", "/v1/me/vault") => match &remote.snapshot { + None => { + json!({"protocolVersion":1,"state":"empty","ownerGithubId":owner,"revision":"0","vaultId":null,"keyId":null,"updatedAt":null,"payloadSchemaVersion":null,"ciphertextBytes":0,"ciphertextSha256":null,"lastOperationId":null}) + } + Some(s) => { + json!({"protocolVersion":1,"state":"active","ownerGithubId":owner,"revision":remote.revision.to_string(),"vaultId":s["vaultId"],"keyId":s["keyId"],"updatedAt":"2026-09-25T12:00:00Z","payloadSchemaVersion":1,"ciphertextBytes":URL_SAFE_NO_PAD.decode(s["ciphertext"].as_str().unwrap()).unwrap().len(),"ciphertextSha256":s["ciphertextSha256"],"lastOperationId":s["operationId"]}) + } + }, + ("GET", "/v1/me/vault/snapshot") => remote.snapshot.clone().unwrap(), + ("PUT", "/v1/me/vault/snapshot") => { + let value: Value = serde_json::from_slice(body).unwrap(); + assert_eq!( + headers["if-match"], + format!("\"fixture-{}\"", remote.revision) + ); + assert_eq!(headers["idempotency-key"], value["operationId"]); + remote.revision += 1; + assert_eq!(value["revision"], remote.revision.to_string()); + remote.puts.push(body.to_vec()); + let receipt = json!({"operationId":value["operationId"],"status":"committed","kind":value["kind"],"committedRevision":value["revision"],"committedAt":"2026-09-25T12:00:00Z","vaultId":value["vaultId"],"ciphertextSha256":value["ciphertextSha256"]}); + remote.snapshot = Some(value); + remote.receipt = Some(receipt.clone()); + disconnect = std::mem::take(&mut remote.drop_response); + receipt + } + ("GET", path) if path.starts_with("/v1/me/operations/") => { + remote.receipt.clone().unwrap() + } + _ => panic!("unexpected fixture request: {method} {path}"), + }; + ( + "200 OK", + response, + format!("\"fixture-{}\"", remote.revision), + disconnect, + ) + }; + if disconnect { + continue; + } + let body = serde_json::to_vec(&response).unwrap(); + let reply = format!("HTTP/1.1 {status}\r\nContent-Type: application/json\r\nCache-Control: no-store\r\nIdempotency-Replayed: false\r\nContent-Length: {}\r\nETag: {etag}\r\nConnection: close\r\n\r\n", body.len()); + let _ = socket.write_all(reply.as_bytes()).await; + let _ = socket.write_all(&body).await; + } + }); + Self { + origin, + state, + upload_arrived, + allow_upload, + task, + } + } +} + +struct Fixture { + service: EncryptedSyncService, + data: Arc, + vault: Arc, + root: std::path::PathBuf, +} +impl Drop for Fixture { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.root); + } +} +impl Fixture { + async fn new(server: &Server) -> Self { + let root = + std::env::temp_dir().join(format!("openless-e2ee-service-{}", uuid::Uuid::new_v4())); + let repos = crate::BackendRepositories::open(&root).unwrap(); + let vault = Arc::new(Vault::default()); + vault + .write( + CredentialKey::new(CredentialNamespace::Marketplace, None, "github.oauth_token") + .unwrap(), + SecretValue::new("fixture-github-token"), + ) + .await + .unwrap(); + let mut config = crate::MarketplaceConfig::new(&server.origin).unwrap(); + config.github_user_url = format!("{}/github/user", server.origin).parse().unwrap(); + let events = + crate::events::BackendEventPublisher::new(Arc::new(crate::events::EventBus::new(100))); + let marketplace = Arc::new( + crate::marketplace::MarketplaceService::new( + config, + vault.clone(), + repos.preferences, + repos.style_packs, + events.clone(), + Arc::new(AtomicU64::new(0)), + ) + .unwrap(), + ); + let data = Data::new(); + let local = LocalStorage::new( + root.join("protected"), + server.origin.clone(), + data.device().id.clone(), + vault.clone(), + ); + let service = EncryptedSyncService::new( + SyncServiceConfig { + origin: server.origin.clone(), + github_client_id: CLIENT.into(), + }, + marketplace, + local, + data.clone(), + events, + ); + Self { + service, + data, + vault, + root, + } + } + async fn prepare(&self) { + assert_eq!( + self.service + .prepare_enable(CONSENT_VERSION.into()) + .await + .unwrap() + .next_step, + EnableStep::Create + ); + } + async fn create(&self, remember: bool) -> SyncResult { + self.service + .create( + PASSWORD.into(), + PASSWORD.into(), + remember, + CONSENT_VERSION.into(), + "0".into(), + ) + .await + } +} + +#[tokio::test] +async fn disabled_start_and_changes_make_no_network_requests_or_key_entries() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture + .service + .start(Arc::new(crate::TokioTaskSpawner)) + .await + .unwrap(); + fixture.data.edit("changed while disabled"); + tokio::time::sleep(std::time::Duration::from_millis(850)).await; + assert_eq!(server.state.lock().unwrap().requests, 0); + assert!(fixture.vault.secrets.lock().unwrap().is_empty()); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn cached_connection_rebuilds_after_captured_proxy_policy_changes() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + // Inject only this connection's captured setting. No global proxy setting + // or environment variable changes, and every endpoint is loopback/direct. + fixture + .service + .connect_with_proxy_setting_for_test(false) + .await + .unwrap(); + let direct_requests = server.state.lock().unwrap().requests; + fixture + .service + .connect_with_proxy_setting_for_test(false) + .await + .unwrap(); + assert_eq!(server.state.lock().unwrap().requests, direct_requests); + fixture + .service + .connect_with_proxy_setting_for_test(true) + .await + .unwrap(); + let enabled_requests = server.state.lock().unwrap().requests; + assert!( + enabled_requests >= direct_requests + 2, + "new policy must recheck capabilities and exchange a new session" + ); + fixture + .service + .connect_with_proxy_setting_for_test(true) + .await + .unwrap(); + assert_eq!(server.state.lock().unwrap().requests, enabled_requests); + fixture + .service + .connect_with_proxy_setting_for_test(false) + .await + .unwrap(); + assert!(server.state.lock().unwrap().requests >= enabled_requests + 2); + assert!(server.state.lock().unwrap().puts.is_empty()); + fixture.service.shutdown().await; +} + +async fn wait_for_auto_sync(mut ready: impl FnMut() -> bool) { + tokio::time::timeout(std::time::Duration::from_secs(15), async { + while !ready() { + tokio::time::sleep(std::time::Duration::from_millis(10)).await; + } + }) + .await + .expect("automatic sync did not reach the expected state"); +} + +async fn start_ready_auto_sync(fixture: &Fixture) { + fixture.prepare().await; + fixture.create(true).await.unwrap(); + let before = fixture.data.export_attempts.load(Ordering::Acquire); + fixture + .service + .start(Arc::new(crate::TokioTaskSpawner)) + .await + .unwrap(); + wait_for_auto_sync(|| { + fixture.data.export_attempts.load(Ordering::Acquire) > before + && fixture.service.status().sync_state == SyncState::Ready + }) + .await; +} + +#[tokio::test] +async fn auto_sync_retries_capture_after_local_only_writer_without_another_user_event() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + start_ready_auto_sync(&fixture).await; + let gate = crate::cloud_sync_e2ee_store::gate::SyncWriteGate::open( + fixture.root.join("capture-gate.json"), + ) + .unwrap(); + *fixture.data.capture_gate.lock().unwrap() = Some(gate.clone()); + let changes = gate.subscribe(); + let generation = gate.generation().unwrap(); + let local_only = gate.begin_mutation().unwrap(); + let before = fixture.data.export_attempts.load(Ordering::Acquire); + fixture.data.edit("user edit preceding a local-only write"); + wait_for_auto_sync(|| { + fixture.data.export_attempts.load(Ordering::Acquire) > before + && fixture + .service + .status() + .last_error + .as_ref() + .is_some_and(|failure| failure.code == "sync_documents_source_changed") + }) + .await; + local_only.commit(ChangeOrigin::LocalOnly).unwrap(); + assert_eq!(gate.generation().unwrap(), generation); + assert!( + !changes.has_changed().unwrap(), + "LocalOnly completion must not be mistaken for another user edit" + ); + wait_for_auto_sync(|| { + fixture + .service + .status() + .last_synced_local_generation + .as_deref() + == Some("2") + }) + .await; + assert_eq!(fixture.service.status().sync_state, SyncState::Ready); + assert_eq!(server.state.lock().unwrap().puts.len(), 2); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn auto_sync_capture_retry_is_bounded_while_local_writer_stays_busy() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + start_ready_auto_sync(&fixture).await; + let gate = crate::cloud_sync_e2ee_store::gate::SyncWriteGate::open( + fixture.root.join("capture-gate.json"), + ) + .unwrap(); + *fixture.data.capture_gate.lock().unwrap() = Some(gate.clone()); + let local_only = gate.begin_mutation().unwrap(); + let before = fixture.data.export_attempts.load(Ordering::Acquire); + fixture + .data + .edit("pending while local writer remains active"); + wait_for_auto_sync(|| { + fixture.data.export_attempts.load(Ordering::Acquire) == before + 5 + && fixture.service.status().last_error.is_some() + }) + .await; + tokio::time::sleep(std::time::Duration::from_millis(1_000)).await; + assert_eq!( + fixture.data.export_attempts.load(Ordering::Acquire), + before + 5 + ); + assert_eq!(server.state.lock().unwrap().puts.len(), 1); + local_only.commit(ChangeOrigin::LocalOnly).unwrap(); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn auto_sync_does_not_retry_an_unknown_upload_outcome() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + start_ready_auto_sync(&fixture).await; + server.state.lock().unwrap().drop_response = true; + fixture.data.edit("upload with a lost acknowledgement"); + wait_for_auto_sync(|| fixture.service.status().sync_state == SyncState::OutcomeUnknown).await; + let requests = server.state.lock().unwrap().requests; + tokio::time::sleep(std::time::Duration::from_millis(1_000)).await; + assert_eq!(server.state.lock().unwrap().requests, requests); + assert_eq!(server.state.lock().unwrap().puts.len(), 2); + assert!(fixture.service.status().pending_operation_id.is_some()); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn auto_sync_does_not_retry_network_failure() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + start_ready_auto_sync(&fixture).await; + server.state.lock().unwrap().drop_metadata_response = true; + fixture + .data + .edit("pending after a metadata transport failure"); + wait_for_auto_sync(|| { + fixture + .service + .status() + .last_error + .as_ref() + .is_some_and(|failure| failure.code == "transport_failed") + }) + .await; + let requests = server.state.lock().unwrap().requests; + tokio::time::sleep(std::time::Duration::from_millis(1_000)).await; + assert_eq!(server.state.lock().unwrap().requests, requests); + assert_eq!(server.state.lock().unwrap().puts.len(), 1); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn auto_sync_local_retry_releases_runtime_and_respects_pause() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + start_ready_auto_sync(&fixture).await; + let gate = crate::cloud_sync_e2ee_store::gate::SyncWriteGate::open( + fixture.root.join("capture-gate.json"), + ) + .unwrap(); + *fixture.data.capture_gate.lock().unwrap() = Some(gate.clone()); + let local_only = gate.begin_mutation().unwrap(); + fixture.data.edit("pause before a delayed local retry"); + wait_for_auto_sync(|| { + fixture + .service + .status() + .last_error + .as_ref() + .is_some_and(|failure| failure.code == "sync_documents_source_changed") + }) + .await; + tokio::time::timeout( + std::time::Duration::from_millis(200), + fixture.service.set_enabled(false), + ) + .await + .expect("local retry must release the runtime lock") + .unwrap(); + let attempts = fixture.data.export_attempts.load(Ordering::Acquire); + local_only.commit(ChangeOrigin::LocalOnly).unwrap(); + tokio::time::sleep(std::time::Duration::from_millis(1_000)).await; + assert_eq!( + fixture.data.export_attempts.load(Ordering::Acquire), + attempts + ); + assert_eq!(server.state.lock().unwrap().puts.len(), 1); + fixture.service.set_enabled(true).await.unwrap(); + wait_for_auto_sync(|| { + fixture + .service + .status() + .last_synced_local_generation + .as_deref() + == Some("2") + }) + .await; + assert_eq!(server.state.lock().unwrap().puts.len(), 2); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn auto_sync_local_retry_cannot_reconcile_a_later_manual_unknown_upload() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + start_ready_auto_sync(&fixture).await; + let gate = crate::cloud_sync_e2ee_store::gate::SyncWriteGate::open( + fixture.root.join("capture-gate.json"), + ) + .unwrap(); + *fixture.data.capture_gate.lock().unwrap() = Some(gate.clone()); + let local_only = gate.begin_mutation().unwrap(); + fixture + .data + .edit("manual upload takes over a local-busy automatic retry"); + wait_for_auto_sync(|| { + fixture + .service + .status() + .last_error + .as_ref() + .is_some_and(|failure| failure.code == "sync_documents_source_changed") + }) + .await; + local_only.commit(ChangeOrigin::LocalOnly).unwrap(); + server.state.lock().unwrap().drop_response = true; + assert_eq!( + fixture.service.sync_now().await.unwrap_err().message, + "outcome_unknown" + ); + let pending = fixture.service.status().pending_operation_id; + let requests = server.state.lock().unwrap().requests; + tokio::time::sleep(std::time::Duration::from_millis(1_000)).await; + assert_eq!( + server.state.lock().unwrap().requests, + requests, + "the obsolete retry must not query/replay the newer pending operation" + ); + assert_eq!(fixture.service.status().pending_operation_id, pending); + assert_eq!( + fixture.service.status().sync_state, + SyncState::OutcomeUnknown + ); + assert_eq!(server.state.lock().unwrap().puts.len(), 2); + fixture.service.shutdown().await; +} + +#[tokio::test] +async fn create_encrypts_real_data_and_wrong_password_never_changes_local_data() { + let server = Server::start().await; + let first = Fixture::new(&server).await; + first.prepare().await; + let status = first.create(false).await.unwrap(); + assert!(status.enabled); + assert_eq!(status.key_state, KeyState::Unlocked); + assert_eq!(status.remote_revision.as_deref(), Some("1")); + let raw = server.state.lock().unwrap().puts[0].clone(); + let request = std::str::from_utf8(&raw).unwrap(); + for private in [ + PASSWORD, + "sk-private-fixture-key", + "private-fixture-history", + "fixture-github-token", + ] { + assert!(!request.contains(private)); + } + let second = Fixture::new(&server).await; + assert_eq!( + second + .service + .prepare_enable(CONSENT_VERSION.into()) + .await + .unwrap() + .next_step, + EnableStep::Unlock + ); + let before = second.data.documents.lock().unwrap().clone(); + assert!(second + .service + .unlock("WrongPassword!9876".into(), true) + .await + .is_err()); + assert_eq!(*second.data.documents.lock().unwrap(), before); + assert_eq!(second.service.status().key_state, KeyState::Locked); + assert!(!second.service.status().enabled); + assert_eq!(server.state.lock().unwrap().revision, 1); + let status = second.service.unlock(PASSWORD.into(), false).await.unwrap(); + assert_eq!(status.key_state, KeyState::Unlocked); + assert!( + !status.enabled, + "a successful unlock must still require first restore review" + ); +} + +#[tokio::test] +async fn lost_upload_response_reconciles_one_commit_without_another_put() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + server.state.lock().unwrap().drop_response = true; + let failed = fixture.create(true).await.unwrap_err(); + assert_eq!(failed.message, "outcome_unknown"); + assert!(fixture.service.status().pending_operation_id.is_some()); + let status = fixture.service.sync_now().await.unwrap(); + assert!(status.pending_operation_id.is_none()); + assert!(status.last_successful_sync_at.is_some()); + assert_eq!(server.state.lock().unwrap().puts.len(), 1); + assert_eq!(server.state.lock().unwrap().revision, 1); +} + +#[tokio::test] +async fn changes_during_upload_remain_pending_after_its_receipt() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + server.state.lock().unwrap().delay_upload = true; + let service = fixture.service.clone(); + let upload = tokio::spawn(async move { + service + .create( + PASSWORD.into(), + PASSWORD.into(), + false, + CONSENT_VERSION.into(), + "0".into(), + ) + .await + }); + tokio::time::timeout( + std::time::Duration::from_secs(30), + server.upload_arrived.notified(), + ) + .await + .unwrap(); + fixture.data.edit("new text while upload in flight"); + server.allow_upload.notify_one(); + let status = upload.await.unwrap().unwrap(); + assert_eq!(status.last_synced_local_generation.as_deref(), Some("1")); + assert_eq!(status.local_generation, "2"); + assert_eq!(status.sync_state, SyncState::Pending); +} + +#[tokio::test] +async fn denied_system_key_storage_aborts_before_private_upload() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.vault.deny.store(true, Ordering::Release); + assert!(fixture + .service + .prepare_enable(CONSENT_VERSION.into()) + .await + .is_err()); + assert!(server.state.lock().unwrap().puts.is_empty()); + assert!(fixture.vault.secrets.lock().unwrap().is_empty()); +} + +#[tokio::test] +async fn review_rotation_lost_response_must_not_keep_old_key_after_receipt() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + fixture.create(true).await.unwrap(); + server.state.lock().unwrap().drop_response = true; + let failure = fixture + .service + .change_password( + PASSWORD.into(), + "FreshOpenLess!8436".into(), + "FreshOpenLess!8436".into(), + true, + ) + .await + .unwrap_err(); + assert_eq!(failure.message, "outcome_unknown"); + let reconciled = fixture.service.sync_now().await; + assert!( + reconciled.is_ok(), + "receipt of password rotation must load its matching key: {:?}", + reconciled.as_ref().err() + ); +} + +#[tokio::test] +async fn review_lock_must_drop_memory_key_even_when_recovery_fails() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + fixture.create(true).await.unwrap(); + fixture.data.fail_restore.store(true, Ordering::Release); + assert!(fixture.service.lock().await.is_err()); + assert_eq!( + fixture.service.status().key_state, + KeyState::Locked, + "lock must not preserve unlocked key on recovery error" + ); +} + +#[tokio::test] +async fn review_pending_receipt_must_not_undo_a_later_explicit_lock() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + fixture.create(true).await.unwrap(); + fixture.data.edit("changed data"); + server.state.lock().unwrap().drop_response = true; + assert_eq!( + fixture.service.sync_now().await.unwrap_err().message, + "outcome_unknown" + ); + fixture.vault.deny_remove.store(true, Ordering::Release); + assert_eq!( + fixture.service.lock().await.unwrap_err().message, + "secure_storage_denied" + ); + assert_eq!(fixture.service.status().key_state, KeyState::Locked); + let _ = fixture.service.sync_now().await; + assert_eq!( + fixture.service.status().key_state, + KeyState::Locked, + "replaying a prior operation must preserve later explicit lock intent" + ); +} + +#[tokio::test] +async fn review_first_submit_explicit_cas_rejection_must_not_stick_as_unknown() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + fixture.create(true).await.unwrap(); + fixture.data.edit("local edit racing another device"); + server.state.lock().unwrap().reject_upload = true; + let rejection = fixture.service.sync_now().await.unwrap_err(); + assert_eq!(rejection.message, "revision_conflict"); + assert!( + fixture.service.status().pending_operation_id.is_none(), + "a first submit definitively rejected by CAS must allow a fresh metadata/merge cycle" + ); +} + +#[tokio::test] +async fn cancelled_local_write_cannot_overwrite_a_later_lock_record() { + struct Paused { + entered: Arc, + release: Arc<(Mutex, std::sync::Condvar)>, + } + impl serde::Serialize for Paused { + fn serialize(&self, serializer: S) -> Result { + self.entered.notify_one(); + let (mutex, cv) = &*self.release; + let guard = mutex.lock().unwrap(); + drop(cv.wait_while(guard, |released| !*released).unwrap()); + json!({"enabled": true, "rememberKey": true}).serialize(serializer) + } + } + let root = std::env::temp_dir().join(format!( + "openless-e2ee-local-cancel-{}", + uuid::Uuid::new_v4() + )); + let store = LocalStorage::new( + root.clone(), + "https://sync.example".into(), + "fixture-device".into(), + Arc::new(Vault::default()), + ); + let entered = Arc::new(tokio::sync::Notify::new()); + let release = Arc::new((Mutex::new(false), std::sync::Condvar::new())); + let old_store = store.clone(); + let old = tokio::spawn({ + let entered = entered.clone(); + let release = release.clone(); + async move { + old_store + .write("device", "client", Paused { entered, release }) + .await + } + }); + entered.notified().await; + old.abort(); + let _ = old.await; + let current_store = store.clone(); + let mut current = tokio::spawn(async move { + current_store + .write( + "device", + "client", + json!({"enabled":false,"rememberKey":false}), + ) + .await + }); + let early = tokio::time::timeout(std::time::Duration::from_millis(30), &mut current).await; + { + *release.0.lock().unwrap() = true; + release.1.notify_all(); + } + let was_blocked = early.is_err(); + if was_blocked { + current.await.unwrap().unwrap(); + } + assert!( + was_blocked, + "new settings must queue behind the actual old blocking worker" + ); + let value: Value = store.read("device", "client").await.unwrap().unwrap(); + assert_eq!(value, json!({"enabled":false,"rememberKey":false})); + std::fs::remove_dir_all(root).unwrap(); +} + +#[test] +fn device_identity_is_create_only_and_never_replaced_over_existing_ciphertext() { + let root = + std::env::temp_dir().join(format!("openless-e2ee-device-id-{}", uuid::Uuid::new_v4())); + std::fs::create_dir_all(&root).unwrap(); + let first = super::adapter::load_device_id(&root).unwrap(); + assert_eq!(first, super::adapter::load_device_id(&root).unwrap()); + assert!(!super::local::durable_create(&root.join("device-id"), b"replacement").unwrap()); + assert_eq!( + first, + std::fs::read_to_string(root.join("device-id")).unwrap() + ); + std::fs::create_dir_all(root.join("protected")).unwrap(); + std::fs::write(root.join("protected/state.enc"), b"existing ciphertext").unwrap(); + std::fs::remove_file(root.join("device-id")).unwrap(); + assert_eq!( + super::adapter::load_device_id(&root).unwrap_err().message, + "recovery_required" + ); + assert!(!root.join("device-id").exists()); + std::fs::remove_dir_all(root).unwrap(); +} + +#[tokio::test] +async fn expired_unknown_receipt_can_be_resolved_by_explicit_review_of_a_newer_head() { + let server = Server::start().await; + let first = Fixture::new(&server).await; + first.prepare().await; + first.create(true).await.unwrap(); + first.data.edit("first device change"); + server.state.lock().unwrap().drop_response = true; + assert_eq!( + first.service.sync_now().await.unwrap_err().message, + "outcome_unknown" + ); + let second = Fixture::new(&server).await; + second + .service + .prepare_enable(CONSENT_VERSION.into()) + .await + .unwrap(); + second.service.unlock(PASSWORD.into(), false).await.unwrap(); + let preview = second.service.preview_restore("2".into()).await.unwrap(); + second + .service + .apply_restore(preview.preview_id, RestoreMode::Replace, vec![]) + .await + .unwrap(); + second.data.edit("second device change"); + second.service.sync_now().await.unwrap(); + assert_eq!(server.state.lock().unwrap().revision, 3); + server.state.lock().unwrap().hide_receipts = true; + assert_eq!( + first.service.sync_now().await.unwrap_err().message, + "outcome_unknown" + ); + let preview = first.service.preview_restore("3".into()).await.unwrap(); + assert!(preview.unconfirmed_operation_id.is_some()); + assert!(!preview.conflicts.is_empty()); + let choices = preview + .conflicts + .iter() + .map(|item| SyncConflictChoice { + id: item.id.clone(), + side: ConflictSide::Cloud, + }) + .collect(); + let status = first + .service + .apply_restore(preview.preview_id, RestoreMode::Merge, choices) + .await + .unwrap(); + assert!(status.pending_operation_id.is_none()); + first.data.edit("a reviewed new operation"); + first.service.sync_now().await.unwrap(); + assert_eq!(server.state.lock().unwrap().revision, 4); +} + +#[tokio::test] +async fn round2_lock_must_remove_key_of_retired_unknown_password_rotation() { + let server = Server::start().await; + let first = Fixture::new(&server).await; + first.prepare().await; + first.create(true).await.unwrap(); + server.state.lock().unwrap().drop_response = true; + let second_password = "MiddleOpenLess!3827"; + assert_eq!( + first + .service + .change_password( + PASSWORD.into(), + second_password.into(), + second_password.into(), + true + ) + .await + .unwrap_err() + .message, + "outcome_unknown" + ); + let second = Fixture::new(&server).await; + second + .service + .prepare_enable(CONSENT_VERSION.into()) + .await + .unwrap(); + second + .service + .unlock(second_password.into(), false) + .await + .unwrap(); + let preview = second.service.preview_restore("2".into()).await.unwrap(); + second + .service + .apply_restore(preview.preview_id, RestoreMode::Replace, vec![]) + .await + .unwrap(); + let third_password = "ThirdOpenLess!4829"; + second + .service + .change_password( + second_password.into(), + third_password.into(), + third_password.into(), + true, + ) + .await + .unwrap(); + assert_eq!(server.state.lock().unwrap().revision, 3); + server.state.lock().unwrap().hide_receipts = true; + assert_eq!( + first.service.sync_now().await.unwrap_err().message, + "outcome_unknown" + ); + first + .service + .unlock(third_password.into(), true) + .await + .unwrap(); + let preview = first.service.preview_restore("3".into()).await.unwrap(); + assert!(preview.unconfirmed_operation_id.is_some()); + first.vault.deny_remove.store(true, Ordering::Release); + let denied = first + .service + .apply_restore(preview.preview_id.clone(), RestoreMode::Replace, vec![]) + .await + .unwrap_err(); + assert_eq!(denied.message, "secure_storage_denied"); + assert!( + first.service.status().pending_operation_id.is_some(), + "failed key deletion must preserve the pending cleanup index" + ); + first.vault.deny_remove.store(false, Ordering::Release); + first + .service + .apply_restore(preview.preview_id, RestoreMode::Replace, vec![]) + .await + .unwrap(); + first.service.lock().await.unwrap(); + let secrets = first.vault.secrets.lock().unwrap(); + assert!( + !secrets + .keys() + .any(|key| key.starts_with("cloud-sync.e2ee.key.")), + "explicit lock must forget even the retired uncertain password key" + ); +} + +#[tokio::test] +async fn round2_refuses_previously_seen_revision_rollback_before_local_changes() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + fixture.create(true).await.unwrap(); + let old = server.state.lock().unwrap().snapshot.clone(); + fixture.data.edit("newest local value"); + fixture.service.sync_now().await.unwrap(); + let before = fixture.data.documents.lock().unwrap().clone(); + let puts = server.state.lock().unwrap().puts.len(); + { + let mut remote = server.state.lock().unwrap(); + remote.snapshot = old; + remote.revision = 1; + } + assert_eq!( + fixture.service.sync_now().await.unwrap_err().message, + "revision_rollback" + ); + assert_eq!( + fixture.service.status().remote_revision.as_deref(), + Some("2") + ); + assert_eq!(fixture.data.documents.lock().unwrap().clone(), before); + assert_eq!(server.state.lock().unwrap().puts.len(), puts); +} + +#[tokio::test] +async fn round2_sync_key_deletion_failure_must_not_prevent_account_sign_out() { + let server = Server::start().await; + let fixture = Fixture::new(&server).await; + fixture.prepare().await; + fixture.create(true).await.unwrap(); + fixture.vault.deny_remove.store(true, Ordering::Release); + assert_eq!( + fixture.service.sign_out().await.unwrap_err().message, + "secure_storage_denied" + ); + let oauth = fixture + .vault + .read( + CredentialKey::new(CredentialNamespace::Marketplace, None, "github.oauth_token") + .unwrap(), + ) + .await + .unwrap(); + assert!( + oauth.is_none(), + "a sync key cleanup failure must still attempt ordinary account token removal" + ); + assert_eq!(fixture.service.status().auth_state, AuthState::SignedOut); +} + +#[path = "setup_prompt_tests.rs"] +mod setup_prompt_tests; diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/export.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/export.rs new file mode 100644 index 000000000..39ca280b5 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/export.rs @@ -0,0 +1,385 @@ +//! Explicit source-to-document registration. This module never scans user directories. + +use std::collections::{BTreeMap, BTreeSet}; + +use serde_json::{json, Map, Value}; + +use crate::cloud_sync_e2ee_protocol::types::{DocumentKind, DocumentSet, LogicalDocument}; +use crate::credentials::{CredentialKey, CredentialNamespace, CredentialStore}; + +use super::registry::{ + credential_accounts, excluded_extension_key, is_device_channel, preference_field, + PreferenceClass, +}; +use super::types::*; +use super::validate::validate_sync_documents; + +pub async fn export_sync_documents( + source: &dyn SyncDocumentSource, +) -> DocumentResult { + export_snapshot(source.capture().await?) +} + +/// Export an already coherent capture. The caller must not substitute empty stores on errors. +pub fn export_snapshot(mut snapshot: ExportSnapshot) -> DocumentResult { + let mut documents = Vec::new(); + let mut device_preferences = Map::new(); + let preferences = snapshot + .preferences + .expose() + .as_object() + .ok_or(DocumentError::InvalidDocument)?; + for (key, value) in preferences { + match preference_field(key).map(|field| field.class) { + Some(PreferenceClass::Excluded) => {} + Some(PreferenceClass::DeviceProfile) => { + device_preferences.insert(key.clone(), value.clone()); + } + Some(PreferenceClass::Portable) => documents.push(document( + DocumentKind::Preferences, + key.clone(), + value.clone(), + )), + None => { + if excluded_extension_key(key) { + return Err(DocumentError::ExcludedField); + } + documents.push(document( + DocumentKind::Preferences, + key.clone(), + value.clone(), + )); + } + } + } + for (key, value) in snapshot + .ui_preferences + .expose() + .as_object() + .ok_or(DocumentError::InvalidDocument)? + { + if excluded_extension_key(key) { + return Err(DocumentError::ExcludedField); + } + documents.push(document( + DocumentKind::UiPreferences, + key.clone(), + value.clone(), + )); + } + + let mut credentials = BTreeMap::new(); + for record in std::mem::take(&mut snapshot.provider_credentials) { + if credentials.insert(record.document_id(), record).is_some() { + return Err(DocumentError::DuplicateId); + } + } + let mut seen_channels = BTreeSet::new(); + let mut device_channels = Vec::new(); + let mut device_credentials = Vec::new(); + for channel in std::mem::take(&mut snapshot.channels) { + let id = channel.document_id(); + if !seen_channels.insert(id.clone()) { + return Err(DocumentError::DuplicateId); + } + let credential = credentials + .remove(&id) + .ok_or(DocumentError::InvalidReference)?; + if is_device_channel(channel.namespace, &channel.provider_type) { + device_channels.push(channel); + device_credentials.push(credential); + } else { + documents.push(document( + DocumentKind::Channels, + id.clone(), + to_value(&channel)?, + )); + documents.push(document( + DocumentKind::ProviderCredentials, + id, + to_value(&credential)?, + )); + } + } + if !credentials.is_empty() { + return Err(DocumentError::InvalidReference); + } + + for (sort_index, mut entry) in std::mem::take(&mut snapshot.dictionary) + .into_iter() + .enumerate() + { + entry + .expose_mut() + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .insert("sortIndex".into(), json!(sort_index)); + let id = record_id(entry.expose())?; + documents.push(document(DocumentKind::Dictionary, id, entry.into_value())); + } + for preset in std::mem::take(&mut snapshot.vocabulary_presets) { + let prefix = match preset.origin { + PresetOrigin::Custom => "custom", + PresetOrigin::Override => "override", + PresetOrigin::BuiltinState => "builtin", + }; + documents.push(document( + DocumentKind::VocabularyPresets, + format!("{prefix}:{}", preset.id), + to_value(&preset)?, + )); + } + for (sort_index, mut entry) in std::mem::take(&mut snapshot.corrections) + .into_iter() + .enumerate() + { + entry + .expose_mut() + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .insert("sortIndex".into(), json!(sort_index)); + let id = record_id(entry.expose())?; + documents.push(document(DocumentKind::Corrections, id, entry.into_value())); + } + for mut entry in std::mem::take(&mut snapshot.style_packs) { + let id = record_id(entry.pack.expose())?; + let pack = entry + .pack + .expose_mut() + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)?; + pack.remove("iconPath"); + pack.remove("active"); + documents.push(document(DocumentKind::StylePacks, id, to_value(&entry)?)); + } + for (sort_index, mut entry) in std::mem::take(&mut snapshot.history) + .into_iter() + .enumerate() + { + entry + .expose_mut() + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .insert("sortIndex".into(), json!(sort_index)); + let id = record_id(entry.expose())?; + // Media never travels. Availability is recomputed against this device's recordings. + let history = entry + .expose_mut() + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)?; + history.insert("hasAudioRecording".into(), Value::Bool(false)); + documents.push(document(DocumentKind::History, id, entry.into_value())); + } + for entry in std::mem::take(&mut snapshot.activity) { + documents.push(document( + DocumentKind::Activity, + entry.document_id(), + to_value(&entry)?, + )); + } + let profile = DeviceProfileRecord { + device: snapshot.source_device.clone(), + preferences: SecretJson::new(Value::Object(device_preferences)), + channels: device_channels, + provider_credentials: device_credentials, + window_positions: std::mem::take(&mut snapshot.window_positions), + }; + documents.push(document( + DocumentKind::DeviceProfile, + snapshot.source_device.id.clone(), + to_value(&profile)?, + )); + + // Retained documents must be explicit source profiles or unknown preferences. Never let + // an archive silently replace live source fields or resurrect a deleted record. + for retained in std::mem::take(&mut snapshot.retained_documents) { + let permitted = retained.kind == DocumentKind::DeviceProfile + || retained.kind == DocumentKind::Preferences + && preference_field(&retained.id).is_none() + || retained.kind == DocumentKind::UiPreferences + && !matches!(retained.id.as_str(), "locale" | "fontScale"); + if !permitted { + return Err(DocumentError::InvalidDocument); + } + if let Some(existing) = documents + .iter() + .find(|doc| doc.kind == retained.kind && doc.id == retained.id) + { + if existing != &retained { + return Err(DocumentError::SourceChanged); + } + } else { + documents.push(retained); + } + } + let set = DocumentSet { + schema_version: DOCUMENT_SCHEMA_VERSION, + exported_at: snapshot.exported_at, + source_device: snapshot.source_device, + documents, + tombstones: snapshot.tombstones, + }; + Ok(ExportedDocuments { + generation: snapshot.generation, + documents: validate_sync_documents(set, snapshot.base_revision)?, + }) +} + +/// Reads only registered logical accounts. Each error aborts the entire export. +/// Omni IDs must enumerate every stored provider entry; None would read only the active one. +pub async fn export_provider_credentials_for_sync( + store: &dyn CredentialStore, + channels: &[ChannelRecord], +) -> DocumentResult> { + let mut records = Vec::with_capacity(channels.len()); + let mut seen = BTreeSet::new(); + for channel in channels { + if !seen.insert(channel.document_id()) { + return Err(DocumentError::DuplicateId); + } + let namespace = match channel.namespace { + SyncNamespace::Asr => CredentialNamespace::Asr, + SyncNamespace::Llm => CredentialNamespace::Llm, + SyncNamespace::Omni => CredentialNamespace::Omni, + }; + let mut accounts = BTreeMap::new(); + for account in credential_accounts(channel.namespace) { + let key = CredentialKey::new(namespace, Some(channel.id.clone()), *account) + .map_err(|_| DocumentError::InvalidDocument)?; + if let Some(secret) = store + .read(key) + .await + .map_err(|_| DocumentError::CaptureFailed)? + { + accounts.insert((*account).to_string(), secret.expose_secret().to_string()); + } + } + records.push(ProviderCredentialRecord { + channel_id: channel.id.clone(), + namespace: channel.namespace, + accounts, + }); + } + Ok(records) +} + +/// Converts a registered store's typed vector to secret rows, without dropping any row. +pub fn secret_rows(rows: &[T]) -> DocumentResult> { + rows.iter().map(SecretJson::from_serializable).collect() +} + +/// Convert all preset state, including enabled builtins, to independently mergeable IDs. +pub fn vocabulary_records( + custom: &[crate::types::VocabPreset], + overrides: &[crate::types::VocabPreset], + disabled_builtin_ids: &[String], + builtin_ids: &[String], +) -> DocumentResult> { + if disabled_builtin_ids + .iter() + .any(|id| !builtin_ids.contains(id)) + { + return Err(DocumentError::InvalidReference); + } + let mut result = Vec::new(); + for (origin, entries) in [ + (PresetOrigin::Custom, custom), + (PresetOrigin::Override, overrides), + ] { + for (order, entry) in entries.iter().enumerate() { + result.push(VocabularyPresetRecord { + id: entry.id.clone(), + origin, + name: Some(entry.name.clone()), + phrases: entry.phrases.clone(), + enabled: true, + order: u32::try_from(order).map_err(|_| DocumentError::PayloadTooLarge)?, + }); + } + } + for id in builtin_ids { + result.push(VocabularyPresetRecord { + id: id.clone(), + origin: PresetOrigin::BuiltinState, + name: None, + phrases: Vec::new(), + enabled: !disabled_builtin_ids.contains(id), + order: 0, + }); + } + Ok(result) +} + +/// Read icons through the repository's bounded ID-based resource reader, not iconPath. +pub fn export_style_packs( + store: &crate::style_pack_store::StylePackStore, +) -> DocumentResult> { + store + .list() + .map_err(|_| DocumentError::CaptureFailed)? + .iter() + .map(|pack| { + let icon = match store + .icon_data_url(&pack.id) + .map_err(|_| DocumentError::CaptureFailed)? + { + Some(data) => { + let (mime, encoded) = data + .strip_prefix("data:") + .and_then(|s| s.split_once(";base64,")) + .ok_or(DocumentError::InvalidDocument)?; + Some(IconAsset { + mime: mime.to_string(), + base64: encoded.to_string(), + }) + } + None if pack.icon_path.is_some() => return Err(DocumentError::CaptureFailed), + None => None, + }; + Ok(StylePackRecord { + pack: SecretJson::from_serializable(pack)?, + icon, + }) + }) + .collect() +} + +pub(crate) fn document(kind: DocumentKind, id: String, value: Value) -> LogicalDocument { + LogicalDocument { + id, + kind, + schema_version: DOCUMENT_SCHEMA_VERSION, + value, + } +} + +pub(crate) fn to_value(value: &impl serde::Serialize) -> DocumentResult { + serde_json::to_value(value).map_err(|_| DocumentError::InvalidDocument) +} + +pub(crate) fn record_id(value: &Value) -> DocumentResult { + value + .get("id") + .and_then(Value::as_str) + .map(str::to_string) + .ok_or(DocumentError::InvalidDocument) +} + +/// A stable per-source aggregate, not a sum of two already merged device totals. +pub fn activity_record( + source_device_id: &str, + day: &crate::activity::ActivityDay, +) -> ActivityRecord { + ActivityRecord { + source_device_id: source_device_id.into(), + date: day.date.clone(), + count: day.count.into(), + chars: day.chars, + duration_ms: day.duration_ms, + } +} + +/// Convenience for UI bridges; unrelated localStorage keys must never be passed here. +pub fn ui_preferences(locale: &str, font_scale: &str) -> SecretJson { + SecretJson::new(json!({"locale": locale, "fontScale": font_scale})) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/merge.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/merge.rs new file mode 100644 index 000000000..bdc8ac062 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/merge.rs @@ -0,0 +1,416 @@ +//! Three-way logical merge. Timestamps never choose a winning value. + +use std::collections::{BTreeMap, BTreeSet}; +use std::fmt; + +use serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; + +use crate::cloud_sync_e2ee_protocol::types::{ + DocumentKind, DocumentSet, LogicalDocument, Revision, Tombstone, +}; + +use super::types::*; +use super::validate::{timestamp, validate_sync_documents}; + +#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub enum ConflictReason { + BothModified, + DeleteModify, + NoCommonBaseline, +} + +/// No local/cloud values, value hashes, excerpts, channel names, or secret lengths reach UI. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct RedactedConflict { + pub conflict_id: String, + pub kind: DocumentKind, + pub reason: ConflictReason, + pub is_credential_unit: bool, +} + +#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub enum ConflictSide { + Local, + Remote, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct ConflictChoice { + pub conflict_id: String, + pub side: ConflictSide, +} + +#[derive(Clone, PartialEq)] +enum Entry { + Live(LogicalDocument), + Deleted(Tombstone), +} + +type Unit = BTreeMap; +type UnitMap = BTreeMap; + +pub struct MergePreview { + source: DocumentSet, + revision: Revision, + accepted: UnitMap, + unresolved: BTreeMap, Option)>, + conflicts: Vec, + active_choices: BTreeMap>, + active_conflicts: BTreeMap, Option)>, +} + +impl fmt::Debug for MergePreview { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("MergePreview([REDACTED])") + } +} + +impl MergePreview { + pub fn conflicts(&self) -> &[RedactedConflict] { + &self.conflicts + } + + pub fn resolve(mut self, choices: &[ConflictChoice]) -> DocumentResult { + let mut selected = BTreeMap::new(); + for choice in choices { + if selected + .insert(choice.conflict_id.clone(), choice.side) + .is_some() + { + return Err(DocumentError::ConflictChoiceRequired); + } + } + if selected.keys().collect::>() + != self + .unresolved + .keys() + .chain(self.active_conflicts.keys()) + .collect::>() + { + return Err(DocumentError::ConflictChoiceRequired); + } + for (id, (key, local, remote)) in std::mem::take(&mut self.unresolved) { + let chosen = match selected[&id] { + ConflictSide::Local => local, + ConflictSide::Remote => remote, + }; + if let Some(unit) = chosen { + self.accepted.insert(key, unit); + } + } + for (id, (namespace, local, remote)) in std::mem::take(&mut self.active_conflicts) { + self.active_choices.insert( + namespace, + match selected[&id] { + ConflictSide::Local => local, + ConflictSide::Remote => remote, + }, + ); + } + self.source.documents.clear(); + self.source.tombstones.clear(); + for unit in self.accepted.values() { + for entry in unit.values() { + match entry { + Entry::Live(doc) => self.source.documents.push(doc.clone()), + Entry::Deleted(tombstone) => self.source.tombstones.push(tombstone.clone()), + } + } + } + for (namespace, choice) in &self.active_choices { + let mut found = choice.is_none(); + for doc in self + .source + .documents + .iter_mut() + .filter(|doc| doc.kind == DocumentKind::Channels) + { + let mut channel: ChannelRecord = serde_json::from_value(doc.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + if channel.namespace == *namespace { + channel.active = choice.as_deref() == Some(channel.id.as_str()); + if channel.active { + channel.enabled = true; + found = true; + } + doc.value = serde_json::to_value(channel) + .map_err(|_| DocumentError::InvalidDocument)?; + } + } + if !found { + return Err(DocumentError::ConflictChoiceRequired); + } + } + validate_sync_documents(self.source, self.revision) + } +} + +/// Different settings/record IDs merge independently; a channel and all its credentials do not. +pub fn diff_sync_documents( + baseline: Option<&ValidatedSyncDocuments>, + local: &ValidatedSyncDocuments, + remote: &ValidatedSyncDocuments, +) -> DocumentResult { + let base = baseline.map(|set| units(&set.set)); + let left = units(&local.set); + let right = units(&remote.set); + let keys: BTreeSet<_> = base + .iter() + .flat_map(|map| map.keys()) + .chain(left.keys()) + .chain(right.keys()) + .cloned() + .collect(); + let mut preview = MergePreview { + source: local.set.clone(), + revision: local.revision.max(remote.revision), + accepted: BTreeMap::new(), + unresolved: BTreeMap::new(), + conflicts: Vec::new(), + active_choices: BTreeMap::new(), + active_conflicts: BTreeMap::new(), + }; + for key in keys { + let ancestor = base.as_ref().and_then(|map| map.get(&key)); + let local_unit = left.get(&key); + let remote_unit = right.get(&key); + // v1 never garbage-collects tombstones. A missing baseline identity is not a delete. + if ancestor.is_some() && (local_unit.is_none() || remote_unit.is_none()) { + return Err(DocumentError::MissingTombstone); + } + let chosen = if equivalent(local_unit, remote_unit) { + Some(prefer_tombstone_revision(local_unit, remote_unit)) + } else if baseline.is_none() { + if local_unit.is_none() { + Some(remote_unit.cloned()) + } else if remote_unit.is_none() { + Some(local_unit.cloned()) + } else { + None + } + } else if is_deleted(ancestor) && (has_live(local_unit) || has_live(remote_unit)) { + // A stale device cannot revive a deletion already present in the common baseline. + None + } else if equivalent(local_unit, ancestor) { + Some(remote_unit.cloned()) + } else if equivalent(remote_unit, ancestor) { + Some(local_unit.cloned()) + } else { + None + }; + if let Some(chosen) = chosen { + if let Some(unit) = chosen { + preview.accepted.insert(key, unit); + } + continue; + } + let conflict_id = conflict_id(&key); + let reason = if is_deleted(local_unit) || is_deleted(remote_unit) || is_deleted(ancestor) { + ConflictReason::DeleteModify + } else if baseline.is_none() { + ConflictReason::NoCommonBaseline + } else { + ConflictReason::BothModified + }; + preview.conflicts.push(RedactedConflict { + conflict_id: conflict_id.clone(), + kind: key.kind, + reason, + is_credential_unit: key.kind == DocumentKind::Channels, + }); + preview.unresolved.insert( + conflict_id, + (key, local_unit.cloned(), remote_unit.cloned()), + ); + } + for namespace in [SyncNamespace::Asr, SyncNamespace::Llm, SyncNamespace::Omni] { + let local_active = active_channel(&local.set, namespace)?; + let remote_active = active_channel(&remote.set, namespace)?; + let base_active = baseline + .map(|set| active_channel(&set.set, namespace)) + .transpose()? + .flatten(); + let chosen = if local_active == remote_active { + Some(local_active.clone()) + } else if baseline.is_some() && local_active == base_active { + Some(remote_active.clone()) + } else if baseline.is_some() && remote_active == base_active { + Some(local_active.clone()) + } else if baseline.is_none() && local_active.is_none() { + Some(remote_active.clone()) + } else if baseline.is_none() && remote_active.is_none() { + Some(local_active.clone()) + } else { + None + }; + if let Some(chosen) = chosen { + preview.active_choices.insert(namespace, chosen); + } else { + let id = format!( + "active-selection-{}", + match namespace { + SyncNamespace::Asr => "asr", + SyncNamespace::Llm => "llm", + SyncNamespace::Omni => "omni", + } + ); + let conflict_id = conflict_id(&DocumentKey { + kind: DocumentKind::Channels, + id, + }); + preview.conflicts.push(RedactedConflict { + conflict_id: conflict_id.clone(), + kind: DocumentKind::Channels, + reason: if baseline.is_some() { + ConflictReason::BothModified + } else { + ConflictReason::NoCommonBaseline + }, + is_credential_unit: true, + }); + preview + .active_conflicts + .insert(conflict_id, (namespace, local_active, remote_active)); + } + } + Ok(preview) +} + +fn active_channel(set: &DocumentSet, namespace: SyncNamespace) -> DocumentResult> { + for doc in set + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::Channels) + { + let channel: ChannelRecord = serde_json::from_value(doc.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + if channel.namespace == namespace && channel.active { + return Ok(Some(channel.id)); + } + } + Ok(None) +} + +fn units(set: &DocumentSet) -> UnitMap { + let mut result: UnitMap = BTreeMap::new(); + for doc in &set.documents { + let key = DocumentKey { + kind: doc.kind, + id: doc.id.clone(), + }; + result + .entry(unit_key(&key)) + .or_default() + .insert(key, Entry::Live(doc.clone())); + } + for tombstone in &set.tombstones { + let key = DocumentKey { + kind: tombstone.kind, + id: tombstone.id.clone(), + }; + result + .entry(unit_key(&key)) + .or_default() + .insert(key, Entry::Deleted(tombstone.clone())); + } + result +} + +fn unit_key(key: &DocumentKey) -> DocumentKey { + DocumentKey { + kind: if key.kind == DocumentKind::ProviderCredentials { + DocumentKind::Channels + } else { + key.kind + }, + id: key.id.clone(), + } +} + +fn equivalent(left: Option<&Unit>, right: Option<&Unit>) -> bool { + match (left, right) { + (None, None) => true, + (Some(left), Some(right)) if left.len() == right.len() => { + left.iter() + .all(|(key, value)| match (value, right.get(key)) { + (Entry::Deleted(_), Some(Entry::Deleted(_))) => true, + (_, Some(other)) => value == other, + _ => false, + }) + } + _ => false, + } +} + +fn prefer_tombstone_revision(left: Option<&Unit>, right: Option<&Unit>) -> Option { + let mut selected = left?.clone(); + if let Some(right) = right { + for (key, entry) in right { + if let (Entry::Deleted(candidate), Some(Entry::Deleted(current))) = + (entry, selected.get(key)) + { + if candidate.base_revision > current.base_revision { + selected.insert(key.clone(), entry.clone()); + } + } + } + } + Some(selected) +} + +fn is_deleted(unit: Option<&Unit>) -> bool { + unit.is_some_and(|unit| { + unit.values() + .any(|entry| matches!(entry, Entry::Deleted(_))) + }) +} +fn has_live(unit: Option<&Unit>) -> bool { + unit.is_some_and(|unit| unit.values().any(|entry| matches!(entry, Entry::Live(_)))) +} + +fn conflict_id(key: &DocumentKey) -> String { + let identity = serde_json::to_vec(key).expect("fixed conflict identity serializes"); + format!("{:x}", Sha256::digest(identity)) +} + +/// Materialize explicit local deletes relative to the last accepted baseline; keep all old marks. +/// Call after a coherent capture, never use a remote snapshot as the local deletion baseline. +pub fn record_missing_tombstones( + mut current: DocumentSet, + baseline: &ValidatedSyncDocuments, + deleted_at: &str, +) -> DocumentResult { + timestamp(deleted_at)?; + let mut live: BTreeSet<_> = current + .documents + .iter() + .map(|doc| (doc.kind, doc.id.clone())) + .collect(); + live.extend( + current + .tombstones + .iter() + .map(|doc| (doc.kind, doc.id.clone())), + ); + for old in &baseline.set.tombstones { + if live.insert((old.kind, old.id.clone())) { + current.tombstones.push(old.clone()); + } + } + for old in &baseline.set.documents { + if live.insert((old.kind, old.id.clone())) { + current.tombstones.push(Tombstone { + id: old.id.clone(), + kind: old.kind, + deleted_at: deleted_at.into(), + base_revision: baseline.revision, + }); + } + } + validate_sync_documents(current, baseline.revision) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/mod.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/mod.rs new file mode 100644 index 000000000..1a445493d --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/mod.rs @@ -0,0 +1,29 @@ +//! Client-side logical documents for encrypted sync. No network or UI effects live here. + +mod export; +mod merge; +pub mod registry; +mod restore; +mod types; +mod validate; + +pub use export::{ + activity_record, export_provider_credentials_for_sync, export_snapshot, export_style_packs, + export_sync_documents, secret_rows, ui_preferences, vocabulary_records, +}; +pub use merge::{ + diff_sync_documents, record_missing_tombstones, ConflictChoice, ConflictReason, ConflictSide, + MergePreview, RedactedConflict, +}; +pub use restore::{ + apply_sync_restore, prepare_sync_restore, recover_sync_restore, CryptoJournalProtector, + JournalProtector, JournalStore, RecoveryOutcome, RestorePlan, RestoreReceipt, SealedJournal, +}; +pub use types::*; +pub(crate) use validate::validate_scope; +pub use validate::{validate_credential_set, validate_icon, validate_sync_documents}; + +#[cfg(test)] +mod restore_tests; +#[cfg(test)] +mod tests; diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/registry.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/registry.rs new file mode 100644 index 000000000..5c821db5c --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/registry.rs @@ -0,0 +1,929 @@ +//! Explicit sync classification for every persisted UserPreferences field. +use super::types::{DocumentError, DocumentResult, SyncNamespace}; +use serde_json::Value; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum PreferenceClass { + Portable, + DeviceProfile, + Excluded, +} +#[derive(Debug, Clone, Copy)] +pub enum PreferenceShape { + Boolean, + Unsigned8, + Unsigned16, + Unsigned32, + Number, + Text, + TextList, + OptionalText, + OptionalUnsigned32, + Object, + OptionalObject, + ObjectList, +} +#[derive(Debug, Clone, Copy)] +pub struct PreferenceField { + pub rust_name: &'static str, + pub key: &'static str, + pub class: PreferenceClass, + pub shape: PreferenceShape, + pub reason: &'static str, +} +pub const PREFERENCE_FIELDS: &[PreferenceField] = &[ + PreferenceField { + rust_name: "hotkey", + key: "hotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Object, + reason: "device_bound", + }, + PreferenceField { + rust_name: "dictation_hotkey", + key: "dictationHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Object, + reason: "device_bound", + }, + PreferenceField { + rust_name: "default_mode", + key: "defaultMode", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "enabled_modes", + key: "enabledModes", + class: PreferenceClass::Portable, + shape: PreferenceShape::TextList, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "active_style_pack_id", + key: "activeStylePackId", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "style_system_prompts", + key: "styleSystemPrompts", + class: PreferenceClass::Portable, + shape: PreferenceShape::Object, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "custom_style_prompts", + key: "customStylePrompts", + class: PreferenceClass::Portable, + shape: PreferenceShape::Object, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "launch_at_login", + key: "launchAtLogin", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Boolean, + reason: "local_os_autostart", + }, + PreferenceField { + rust_name: "show_capsule", + key: "showCapsule", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "capsule_style", + key: "capsuleStyle", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "capsule_transcript_enabled", + key: "capsuleTranscriptEnabled", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "capsule_transcript_font_size", + key: "capsuleTranscriptFontSize", + class: PreferenceClass::Portable, + shape: PreferenceShape::Unsigned8, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "mute_during_recording", + key: "muteDuringRecording", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "stable_transcription_enabled", + key: "stableTranscriptionEnabled", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "audio_cue_on_record", + key: "audioCueOnRecord", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "silence_auto_stop_enabled", + key: "silenceAutoStopEnabled", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "silence_auto_stop_seconds", + key: "silenceAutoStopSeconds", + class: PreferenceClass::Portable, + shape: PreferenceShape::Number, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "microphone_device_name", + key: "microphoneDeviceName", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "active_asr_provider", + key: "activeAsrProvider", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Text, + reason: "selection_in_channel_unit", + }, + PreferenceField { + rust_name: "active_llm_provider", + key: "activeLlmProvider", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Text, + reason: "selection_in_channel_unit", + }, + PreferenceField { + rust_name: "pipeline_mode", + key: "pipelineMode", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "multimodal_pipeline_enabled", + key: "multimodalPipelineEnabled", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "active_omni_provider", + key: "activeOmniProvider", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Text, + reason: "selection_in_channel_unit", + }, + PreferenceField { + rust_name: "llm_thinking_enabled", + key: "llmThinkingEnabled", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "use_system_proxy", + key: "useSystemProxy", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Boolean, + reason: "device_bound", + }, + PreferenceField { + rust_name: "restore_clipboard_after_paste", + key: "restoreClipboardAfterPaste", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Boolean, + reason: "device_bound", + }, + PreferenceField { + rust_name: "paste_shortcut", + key: "pasteShortcut", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "allow_non_tsf_insertion_fallback", + key: "allowNonTsfInsertionFallback", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Boolean, + reason: "device_bound", + }, + PreferenceField { + rust_name: "windows_insertion_mode", + key: "windowsInsertionMode", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "windows_sendinput_newline_mode", + key: "windowsSendInputNewlineMode", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "macos_newline_mode", + key: "macosNewlineMode", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "windows_sendinput_insertion_only", + key: "windowsSendInputInsertionOnly", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Boolean, + reason: "device_bound", + }, + PreferenceField { + rust_name: "windows_show_openless_in_keyboard_list", + key: "windowsShowOpenlessInKeyboardList", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Boolean, + reason: "device_bound", + }, + PreferenceField { + rust_name: "working_languages", + key: "workingLanguages", + class: PreferenceClass::Portable, + shape: PreferenceShape::TextList, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "translation_target_language", + key: "translationTargetLanguage", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "chinese_script_preference", + key: "chineseScriptPreference", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "output_language_preference", + key: "outputLanguagePreference", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "qa_hotkey", + key: "qaHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "quick_note_hotkey", + key: "quickNoteHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "selection_polish_hotkey", + key: "selectionPolishHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "selection_polish_style_pack_id", + key: "selectionPolishStylePackId", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_polish_output_mode", + key: "selectionPolishOutputMode", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_voice_enabled", + key: "selectionVoiceEnabled", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_voice_intent_mode", + key: "selectionVoiceIntentMode", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_voice_manual_intent", + key: "selectionVoiceManualIntent", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_voice_edit_keywords", + key: "selectionVoiceEditKeywords", + class: PreferenceClass::Portable, + shape: PreferenceShape::TextList, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_voice_edit_plan_format", + key: "selectionVoiceEditPlanFormat", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "selection_voice_edit_system_prompt", + key: "selectionVoiceEditSystemPrompt", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "qa_save_history", + key: "qaSaveHistory", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "custom_combo_hotkey", + key: "customComboHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "translation_hotkey", + key: "translationHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Object, + reason: "device_bound", + }, + PreferenceField { + rust_name: "switch_style_hotkey", + key: "switchStyleHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "open_app_hotkey", + key: "openAppHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "style_pack_hotkeys", + key: "stylePackHotkeys", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::ObjectList, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_enabled", + key: "codingAgentEnabled", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Boolean, + reason: "local_consent_or_secret", + }, + PreferenceField { + rust_name: "coding_agent_provider", + key: "codingAgentProvider", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_model", + key: "codingAgentModel", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalText, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_permission_mode", + key: "codingAgentPermissionMode", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_workdir", + key: "codingAgentWorkdir", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalText, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_exe", + key: "codingAgentExe", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalText, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_voice_hotkey", + key: "codingAgentVoiceHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_panel_hotkey", + key: "codingAgentPanelHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "coding_agent_quick_hotkey", + key: "codingAgentQuickHotkey", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::OptionalObject, + reason: "device_bound", + }, + PreferenceField { + rust_name: "remote_input_enabled", + key: "remoteInputEnabled", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Boolean, + reason: "local_network_consent", + }, + PreferenceField { + rust_name: "remote_input_port", + key: "remoteInputPort", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Unsigned16, + reason: "device_bound", + }, + PreferenceField { + rust_name: "remote_input_pin", + key: "remoteInputPin", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Text, + reason: "local_consent_or_secret", + }, + PreferenceField { + rust_name: "remote_input_default_mode", + key: "remoteInputDefaultMode", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "local_asr_active_model", + key: "localAsrActiveModel", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "local_whisper_active_model", + key: "localWhisperActiveModel", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "local_asr_mirror", + key: "localAsrMirror", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "local_asr_keep_loaded_secs", + key: "localAsrKeepLoadedSecs", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Unsigned32, + reason: "device_bound", + }, + PreferenceField { + rust_name: "local_asr_models_base_dir", + key: "localAsrModelsBaseDir", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "foundry_local_asr_model", + key: "foundryLocalAsrModel", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "foundry_local_runtime_source", + key: "foundryLocalRuntimeSource", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "foundry_local_asr_language_hint", + key: "foundryLocalAsrLanguageHint", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "foundry_local_asr_keep_loaded_secs", + key: "foundryLocalAsrKeepLoadedSecs", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Unsigned32, + reason: "device_bound", + }, + PreferenceField { + rust_name: "sherpa_onnx_model", + key: "sherpaOnnxModel", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "sherpa_onnx_language_hint", + key: "sherpaOnnxLanguageHint", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "sherpa_onnx_keep_loaded_secs", + key: "sherpaOnnxKeepLoadedSecs", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Unsigned32, + reason: "device_bound", + }, + PreferenceField { + rust_name: "update_channel", + key: "updateChannel", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "update_channel_explicit", + key: "updateChannelExplicit", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "history_retention_days", + key: "historyRetentionDays", + class: PreferenceClass::Portable, + shape: PreferenceShape::Unsigned32, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "polish_context_window_minutes", + key: "polishContextWindowMinutes", + class: PreferenceClass::Portable, + shape: PreferenceShape::Unsigned32, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "start_minimized", + key: "startMinimized", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "theme_mode", + key: "themeMode", + class: PreferenceClass::Portable, + shape: PreferenceShape::Text, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "streaming_insert", + key: "streamingInsert", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "streaming_insert_default_migrated", + key: "streamingInsertDefaultMigrated", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Boolean, + reason: "local_consent_or_secret", + }, + PreferenceField { + rust_name: "streaming_insert_save_clipboard", + key: "streamingInsertSaveClipboard", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "cursor_context_enabled", + key: "cursorContextEnabled", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Boolean, + reason: "local_consent_or_secret", + }, + PreferenceField { + rust_name: "show_overview_activity_heatmap", + key: "showOverviewActivityHeatmap", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "stacked_row_layout", + key: "stackedRowLayout", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "conservative_layout", + key: "conservativeLayout", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "auto_update_check", + key: "autoUpdateCheck", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "history_max_entries", + key: "historyMaxEntries", + class: PreferenceClass::Portable, + shape: PreferenceShape::OptionalUnsigned32, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "record_audio_for_debug", + key: "recordAudioForDebug", + class: PreferenceClass::Portable, + shape: PreferenceShape::Boolean, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "audio_recording_max_entries", + key: "audioRecordingMaxEntries", + class: PreferenceClass::Portable, + shape: PreferenceShape::OptionalUnsigned32, + reason: "portable_setting", + }, + PreferenceField { + rust_name: "quick_note_export_directory", + key: "quickNoteExportDirectory", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "marketplace_base_url", + key: "marketplaceBaseUrl", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "marketplace_dev_login", + key: "marketplaceDevLogin", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Text, + reason: "local_consent_or_secret", + }, + PreferenceField { + rust_name: "android_insert_strategy", + key: "androidInsertStrategy", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "android_overlay_trigger", + key: "androidOverlayTrigger", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "android_overlay_activation_mode", + key: "androidOverlayActivationMode", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "android_overlay_left_swipe_action", + key: "androidOverlayLeftSwipeAction", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "android_overlay_cancel_swipe_direction", + key: "androidOverlayCancelSwipeDirection", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Text, + reason: "device_bound", + }, + PreferenceField { + rust_name: "android_overlay_gesture_actions", + key: "androidOverlayGestureActions", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Object, + reason: "device_bound", + }, + PreferenceField { + rust_name: "android_overlay_size_dp", + key: "androidOverlaySizeDp", + class: PreferenceClass::DeviceProfile, + shape: PreferenceShape::Unsigned32, + reason: "device_bound", + }, + PreferenceField { + rust_name: "splash_seen_version", + key: "splashSeenVersion", + class: PreferenceClass::Excluded, + shape: PreferenceShape::Text, + reason: "local_consent_or_secret", + }, +]; + +pub fn preference_field(key: &str) -> Option<&'static PreferenceField> { + PREFERENCE_FIELDS.iter().find(|field| field.key == key) +} + +pub fn excluded_extension_key(key: &str) -> bool { + let normalized: String = key + .chars() + .filter(|c| c.is_ascii_alphanumeric()) + .flat_map(char::to_lowercase) + .collect(); + [ + "oauth", + "githubtoken", + "accesstoken", + "refreshtoken", + "sessioncookie", + "privatekey", + "remotepin", + "remoteinputpin", + "syncpassword", + "synckey", + "synctoken", + "syncenabled", + "syncconsent", + "syncqueue", + "syncbaseline", + "synclock", + "permissiongrant", + ] + .iter() + .any(|item| normalized.contains(item)) +} + +pub fn validate_preference_value(field: &PreferenceField, value: &Value) -> DocumentResult<()> { + use PreferenceShape::*; + let valid = match field.shape { + Boolean => value.is_boolean(), + Unsigned8 => value.as_u64().is_some_and(|n| n <= u8::MAX.into()), + Unsigned16 => value.as_u64().is_some_and(|n| n <= u16::MAX.into()), + Unsigned32 => value.as_u64().is_some_and(|n| n <= u32::MAX.into()), + Number => value.as_f64().is_some_and(f64::is_finite), + Text => value.is_string(), + TextList => value + .as_array() + .is_some_and(|items| items.iter().all(Value::is_string)), + OptionalText => value.is_null() || value.is_string(), + OptionalUnsigned32 => { + value.is_null() || value.as_u64().is_some_and(|n| n <= u32::MAX.into()) + } + Object => value.is_object(), + OptionalObject => value.is_null() || value.is_object(), + ObjectList => value + .as_array() + .is_some_and(|items| items.iter().all(Value::is_object)), + }; + if !valid { + return Err(DocumentError::InvalidDocument); + } + let choices: &[&str] = match field.key { + "defaultMode" => &["raw", "light", "structured", "formal"], + "capsuleStyle" => &["siri", "classic", "typeless"], + "pipelineMode" => &["traditional", "multimodal"], + "chineseScriptPreference" => &["auto", "simplified", "traditional"], + "outputLanguagePreference" => &["auto", "zhCn", "zhTw", "en", "ja", "ko"], + "selectionPolishOutputMode" => &["directReplace", "previewConfirm"], + "selectionVoiceIntentMode" => &["prompt", "auto", "manual", "heuristic"], + "selectionVoiceManualIntent" => &["question", "edit"], + "selectionVoiceEditPlanFormat" => &["xml", "json"], + "updateChannel" => &["stable", "beta"], + "themeMode" => &["system", "light", "dark"], + _ => &[], + }; + if !choices.is_empty() && !value.as_str().is_some_and(|s| choices.contains(&s)) { + return Err(DocumentError::InvalidDocument); + } + if field.key == "enabledModes" + && !value.as_array().is_some_and(|items| { + items + .iter() + .all(|v| matches!(v.as_str(), Some("raw" | "light" | "structured" | "formal"))) + }) + { + return Err(DocumentError::InvalidDocument); + } + Ok(()) +} + +pub const ASR_ACCOUNTS: &[&str] = &[ + "asr.api_key", + "asr.endpoint", + "asr.model", + "asr.vocabulary_id", + "asr.advanced_config", + "volcengine.app_key", + "volcengine.access_key", + "volcengine.resource_id", + "volcengine.service", + "volcengine.auth_mode", + "volcengine.api_key", + "xfyun.app_id", + "xfyun.api_key", + "tencent_cloud.app_id", + "tencent_cloud.secret_id", + "tencent_cloud.secret_key", +]; +pub const LLM_ACCOUNTS: &[&str] = &[ + "ark.api_key", + "ark.model_id", + "ark.endpoint", + "ark.extra_headers", + "ark.temperature", + "ark.request_format", + "ark.messages_thinking", + "ark.max_tokens", + "ark.thinking_budget", +]; +pub const OMNI_ACCOUNTS: &[&str] = &[ + "omni.api_key", + "omni.endpoint", + "omni.model", + "omni.extra_headers", + "omni.temperature", +]; +pub fn credential_accounts(namespace: SyncNamespace) -> &'static [&'static str] { + match namespace { + SyncNamespace::Asr => ASR_ACCOUNTS, + SyncNamespace::Llm => LLM_ACCOUNTS, + SyncNamespace::Omni => OMNI_ACCOUNTS, + } +} + +pub fn is_device_channel(namespace: SyncNamespace, provider: &str) -> bool { + namespace == SyncNamespace::Asr + && matches!( + provider, + "apple-speech" + | "local-whisper" + | "local-qwen3" + | "local-qwen3-mlx" + | "local-qwen3-c" + | "foundry-local-whisper" + | "sherpa-onnx-local" + ) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore.rs new file mode 100644 index 000000000..c44dc72ba --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore.rs @@ -0,0 +1,527 @@ +//! Crash-recoverable logical restore with authenticated, encrypted before/after images. + +use std::fmt; +use std::sync::Arc; + +use futures_util::future::BoxFuture; +use serde::{Deserialize, Serialize}; +use zeroize::Zeroizing; + +use crate::cloud_sync_e2ee_protocol::{ + crypto::{self, DerivedKey}, + types::{DocumentSet, Revision}, +}; + +use super::export::export_snapshot; +use super::types::*; +use super::validate::{uuid_v4, validate_scope, validate_sync_documents}; + +pub struct RestorePlan { + desired: ValidatedSyncDocuments, + context: RestoreContext, +} +impl fmt::Debug for RestorePlan { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("RestorePlan([REDACTED])") + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct RestoreReceipt { + pub operation_id: String, + pub generation: Revision, + pub committed: bool, + pub journal_cleanup_pending: bool, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum RecoveryOutcome { + NoPending, + Committed(RestoreReceipt), + RolledBack(RestoreReceipt), +} + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct SealedJournal { + pub operation_id: String, + pub ciphertext: Vec, +} +impl fmt::Debug for SealedJournal { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("SealedJournal([REDACTED])") + } +} + +pub trait JournalStore: Send + Sync { + fn load(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult>>; + /// Save atomically and durably before returning. Never accept a plaintext journal DTO here. + fn save(&self, scope: SyncScope, journal: SealedJournal) -> BoxFuture<'_, DocumentResult<()>>; + fn clear(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult<()>>; +} + +pub trait JournalProtector: Send + Sync { + fn seal( + &self, + scope: &SyncScope, + operation_id: &str, + plaintext: &[u8], + ) -> DocumentResult>; + fn open( + &self, + scope: &SyncScope, + operation_id: &str, + ciphertext: &[u8], + ) -> DocumentResult>>; +} + +/// The key is a separate OS-protected local key, not a password or ordinary file secret. +pub struct CryptoJournalProtector { + key: Arc, +} +impl CryptoJournalProtector { + pub(crate) fn new(key: Arc) -> Self { + Self { key } + } +} +impl fmt::Debug for CryptoJournalProtector { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("CryptoJournalProtector([REDACTED])") + } +} +impl JournalProtector for CryptoJournalProtector { + fn seal( + &self, + scope: &SyncScope, + operation_id: &str, + plaintext: &[u8], + ) -> DocumentResult> { + crypto::seal_local(&self.key, &journal_aad(scope, operation_id)?, plaintext) + .map_err(|_| DocumentError::Locked) + } + fn open( + &self, + scope: &SyncScope, + operation_id: &str, + ciphertext: &[u8], + ) -> DocumentResult>> { + crypto::open_local(&self.key, &journal_aad(scope, operation_id)?, ciphertext) + .map_err(|_| DocumentError::Locked) + } +} + +fn journal_aad(scope: &SyncScope, operation_id: &str) -> DocumentResult> { + validate_scope(scope)?; + uuid_v4(operation_id)?; + serde_json::to_vec(&("openless-sync-restore-journal-v1", scope, operation_id)) + .map_err(|_| DocumentError::InvalidDocument) +} + +#[derive(Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +enum Phase { + Prepared, + Committed, + RolledBack, +} + +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct Journal { + schema_version: u32, + scope: SyncScope, + operation_id: String, + observed_revision: Revision, + phase: Phase, + before: DocumentSet, + after: DocumentSet, + #[serde(default)] + local_before: SecretJson, +} + +pub fn prepare_sync_restore( + desired: ValidatedSyncDocuments, + context: RestoreContext, +) -> DocumentResult { + validate_scope(&context.scope)?; + uuid_v4(&context.operation_id)?; + if desired.observed_revision() != context.observed_revision + || context.target_device.id != context.scope.device_id + { + return Err(DocumentError::StalePreview); + } + Ok(RestorePlan { desired, context }) +} + +/// No caller cancellation branch is allowed after the durable journal exists. +/// If the task/process nevertheless dies, recovery chooses the durable decision below. +pub async fn apply_sync_restore( + plan: RestorePlan, + backend: &dyn RestoreBackend, + storage: &dyn JournalStore, + protector: &dyn JournalProtector, +) -> DocumentResult { + if storage.load(plan.context.scope.clone()).await?.is_some() { + return Err(DocumentError::RecoveryRequired); + } + let mut lease = backend + .acquire( + plan.context.scope.clone(), + Some(plan.context.local_generation), + ) + .await?; + let before = export_snapshot(lease.capture().await?)?; + if before.generation != plan.context.local_generation { + return Err(DocumentError::StalePreview); + } + let mut after = plan.desired.set.clone(); + // Foreign device profiles are preserved, but importing them cannot erase the receiving + // device's own profile or make its paths/programs active. + let local_profile = before.documents.set.documents.iter().find(|doc| { + doc.kind == crate::cloud_sync_e2ee_protocol::types::DocumentKind::DeviceProfile + && doc.id == plan.context.target_device.id + }); + if let Some(profile) = local_profile { + if !after + .documents + .iter() + .any(|doc| doc.kind == profile.kind && doc.id == profile.id) + { + after.documents.push(profile.clone()); + } + } + materialize_receiver_fields( + &mut after, + before.documents.documents(), + &plan.context.target_device, + )?; + preserve_applicable_asr_selection( + &mut after, + before.documents.documents(), + &plan.context.target_device.id, + )?; + after.source_device = plan.context.target_device.clone(); + let after = validate_sync_documents(after, plan.context.observed_revision)?; + lease.preflight(&after).await?; + let mut journal = Journal { + schema_version: 1, + scope: plan.context.scope.clone(), + operation_id: plan.context.operation_id.clone(), + observed_revision: plan.context.observed_revision, + phase: Phase::Prepared, + before: before.documents.set.clone(), + after: after.set.clone(), + local_before: lease.capture_rollback_state().await?, + }; + lease.mark_recovery_pending(&journal.operation_id)?; + save_journal(&journal, storage, protector).await?; + lease.mark_journal_ready(&journal.operation_id)?; + if replace_and_verify(lease.as_mut(), after).await.is_err() { + let before = validate_sync_documents(journal.before.clone(), journal.observed_revision)?; + if replace_and_verify(lease.as_mut(), before).await.is_err() { + return Err(DocumentError::RecoveryRequired); + } + restore_local_rollback_state(lease.as_mut(), &journal.local_before) + .await + .map_err(|_| DocumentError::RecoveryRequired)?; + journal.phase = Phase::RolledBack; + save_journal(&journal, storage, protector) + .await + .map_err(|_| DocumentError::RecoveryRequired)?; + let _ = finish(&journal, lease.as_mut(), storage).await?; + return Err(DocumentError::RestoreRolledBack); + } + journal.phase = Phase::Committed; + // A failed/unknown commit-decision write cannot safely be reinterpreted as rollback. + save_journal(&journal, storage, protector) + .await + .map_err(|_| DocumentError::RecoveryRequired)?; + finish(&journal, lease.as_mut(), storage).await +} + +fn materialize_receiver_fields( + after: &mut DocumentSet, + before: &DocumentSet, + target: &crate::cloud_sync_e2ee_protocol::types::SourceDevice, +) -> DocumentResult<()> { + use crate::cloud_sync_e2ee_protocol::types::DocumentKind; + for old in &before.documents { + let required = matches!( + old.kind, + DocumentKind::Preferences | DocumentKind::UiPreferences + ) || old.kind == DocumentKind::VocabularyPresets + && old.id.starts_with("builtin:") + || old.kind == DocumentKind::StylePacks && old.value["pack"]["kind"] == "builtin"; + if !required + || after + .documents + .iter() + .any(|doc| doc.kind == old.kind && doc.id == old.id) + { + continue; + } + let deleted = after + .tombstones + .iter() + .any(|mark| mark.kind == old.kind && mark.id == old.id); + if deleted { + let native_required = old.kind == DocumentKind::Preferences + && super::registry::preference_field(&old.id).is_some() + || old.kind == DocumentKind::UiPreferences + && matches!(old.id.as_str(), "locale" | "fontScale") + || old.kind == DocumentKind::VocabularyPresets + || old.kind == DocumentKind::StylePacks; + if native_required { + return Err(DocumentError::Unsupported); + } + } else { + after.documents.push(old.clone()); + } + } + if let Some(profile) = after + .documents + .iter_mut() + .find(|doc| doc.kind == DocumentKind::DeviceProfile && doc.id == target.id) + { + let mut value: DeviceProfileRecord = serde_json::from_value(profile.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + if value.device.os != target.os || value.device.arch != target.arch { + return Err(DocumentError::Unsupported); + } + if let Some(previous) = before + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::DeviceProfile && doc.id == target.id) + { + let previous: DeviceProfileRecord = serde_json::from_value(previous.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + let preferences = value + .preferences + .expose_mut() + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)?; + for (key, old) in previous + .preferences + .expose() + .as_object() + .ok_or(DocumentError::InvalidDocument)? + { + preferences + .entry(key.clone()) + .or_insert_with(|| old.clone()); + } + } + value.device = target.clone(); + profile.value = serde_json::to_value(value).map_err(|_| DocumentError::InvalidDocument)?; + } + Ok(()) +} + +fn preserve_applicable_asr_selection( + after: &mut DocumentSet, + before: &DocumentSet, + target_device_id: &str, +) -> DocumentResult<()> { + use crate::cloud_sync_e2ee_protocol::types::DocumentKind; + let foreign_local_active = after + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::DeviceProfile && doc.id != target_device_id) + .try_fold(false, |found, doc| { + let profile: DeviceProfileRecord = serde_json::from_value(doc.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + Ok::<_, DocumentError>( + found + || profile + .channels + .iter() + .any(|channel| channel.namespace == SyncNamespace::Asr && channel.active), + ) + })?; + let mut active = std::collections::BTreeSet::new(); + for doc in after + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::Channels) + { + let channel: ChannelRecord = serde_json::from_value(doc.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + if channel.active { + active.insert(channel.namespace); + } + } + if foreign_local_active && !active.contains(&SyncNamespace::Asr) { + if let Some(current) = before.documents.iter().find(|doc| { + doc.kind == DocumentKind::Channels + && doc.value["namespace"] == "asr" + && doc.value["active"] == true + && !after.tombstones.iter().any(|mark| { + mark.id == doc.id + && matches!( + mark.kind, + DocumentKind::Channels | DocumentKind::ProviderCredentials + ) + }) + }) { + if let Some(existing) = after + .documents + .iter_mut() + .find(|doc| doc.kind == DocumentKind::Channels && doc.id == current.id) + { + existing.value["active"] = serde_json::Value::Bool(true); + existing.value["enabled"] = serde_json::Value::Bool(true); + } else { + after.documents.push(current.clone()); + if let Some(credential) = before.documents.iter().find(|doc| { + doc.kind == DocumentKind::ProviderCredentials && doc.id == current.id + }) { + after.documents.push(credential.clone()); + } + } + active.insert(SyncNamespace::Asr); + } + } + if let Some(profile) = after + .documents + .iter_mut() + .find(|doc| doc.kind == DocumentKind::DeviceProfile && doc.id == target_device_id) + { + let mut value: DeviceProfileRecord = serde_json::from_value(profile.value.clone()) + .map_err(|_| DocumentError::InvalidDocument)?; + for channel in &mut value.channels { + if active.contains(&channel.namespace) { + channel.active = false; + } + } + profile.value = serde_json::to_value(value).map_err(|_| DocumentError::InvalidDocument)?; + } + Ok(()) +} + +pub async fn recover_sync_restore( + scope: SyncScope, + backend: &dyn RestoreBackend, + storage: &dyn JournalStore, + protector: &dyn JournalProtector, +) -> DocumentResult { + validate_scope(&scope)?; + let mut lease = backend.acquire(scope.clone(), None).await?; + let Some(sealed) = storage.load(scope.clone()).await? else { + lease.recover_without_journal()?; + return Ok(RecoveryOutcome::NoPending); + }; + uuid_v4(&sealed.operation_id)?; + if sealed.ciphertext.len() > MAX_JOURNAL_BYTES + 128 { + return Err(DocumentError::RecoveryRequired); + } + let plaintext = protector.open(&scope, &sealed.operation_id, &sealed.ciphertext)?; + if plaintext.len() > MAX_JOURNAL_BYTES { + return Err(DocumentError::RecoveryRequired); + } + let mut journal: Journal = + serde_json::from_slice(&plaintext).map_err(|_| DocumentError::RecoveryRequired)?; + if journal.schema_version != 1 + || journal.scope != scope + || journal.operation_id != sealed.operation_id + { + return Err(DocumentError::RecoveryRequired); + } + let before = validate_sync_documents(journal.before.clone(), journal.observed_revision) + .map_err(|_| DocumentError::RecoveryRequired)?; + let after = validate_sync_documents(journal.after.clone(), journal.observed_revision) + .map_err(|_| DocumentError::RecoveryRequired)?; + if let Some(mut receipt) = lease.completed_restore(&journal.operation_id)? { + // New user mutations may exist after this receipt. Never replay an obsolete image. + receipt.journal_cleanup_pending = storage.clear(scope).await.is_err(); + return Ok(if receipt.committed { + RecoveryOutcome::Committed(receipt) + } else { + RecoveryOutcome::RolledBack(receipt) + }); + } + lease.mark_recovery_pending(&journal.operation_id)?; + lease.mark_journal_ready(&journal.operation_id)?; + let committed = journal.phase == Phase::Committed; + replace_and_verify(lease.as_mut(), if committed { after } else { before }) + .await + .map_err(|_| DocumentError::RecoveryRequired)?; + if !committed { + restore_local_rollback_state(lease.as_mut(), &journal.local_before) + .await + .map_err(|_| DocumentError::RecoveryRequired)?; + journal.phase = Phase::RolledBack; + save_journal(&journal, storage, protector) + .await + .map_err(|_| DocumentError::RecoveryRequired)?; + } + let receipt = finish(&journal, lease.as_mut(), storage).await?; + Ok(if committed { + RecoveryOutcome::Committed(receipt) + } else { + RecoveryOutcome::RolledBack(receipt) + }) +} + +async fn save_journal( + journal: &Journal, + storage: &dyn JournalStore, + protector: &dyn JournalProtector, +) -> DocumentResult<()> { + let plaintext = + Zeroizing::new(serde_json::to_vec(journal).map_err(|_| DocumentError::InvalidDocument)?); + if plaintext.len() > MAX_JOURNAL_BYTES { + return Err(DocumentError::PayloadTooLarge); + } + let ciphertext = protector.seal(&journal.scope, &journal.operation_id, &plaintext)?; + if ciphertext.is_empty() || ciphertext.len() > MAX_JOURNAL_BYTES + 128 { + return Err(DocumentError::JournalUnavailable); + } + storage + .save( + journal.scope.clone(), + SealedJournal { + operation_id: journal.operation_id.clone(), + ciphertext, + }, + ) + .await +} + +async fn restore_local_rollback_state( + lease: &mut dyn RestoreLease, + expected: &SecretJson, +) -> DocumentResult<()> { + lease.restore_rollback_state(expected).await?; + if lease.capture_rollback_state().await? != *expected { + return Err(DocumentError::RecoveryRequired); + } + Ok(()) +} + +async fn replace_and_verify( + lease: &mut dyn RestoreLease, + expected: ValidatedSyncDocuments, +) -> DocumentResult<()> { + lease.replace(expected.clone()).await?; + lease.reload().await?; + let actual = export_snapshot(lease.capture().await?)?.documents; + // Source metadata and capture time differ; logical records and deletions must not. + if actual.set.documents != expected.set.documents + || actual.set.tombstones != expected.set.tombstones + { + return Err(DocumentError::RecoveryRequired); + } + Ok(()) +} + +async fn finish( + journal: &Journal, + lease: &mut dyn RestoreLease, + storage: &dyn JournalStore, +) -> DocumentResult { + let mut receipt = + lease.finish_restore(&journal.operation_id, journal.phase == Phase::Committed)?; + receipt.journal_cleanup_pending = storage.clear(journal.scope.clone()).await.is_err(); + Ok(receipt) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore_tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore_tests.rs new file mode 100644 index 000000000..660140918 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/restore_tests.rs @@ -0,0 +1,457 @@ +use std::collections::VecDeque; +use std::sync::{ + atomic::{AtomicBool, AtomicUsize, Ordering}, + Arc, Mutex, +}; + +use futures_util::future::BoxFuture; +use serde_json::{json, Value}; +use zeroize::Zeroizing; + +use super::*; +use crate::cloud_sync_e2ee_protocol::{ + crypto::DerivedKey, + types::{DocumentKind, Revision}, +}; + +struct State { + data: ValidatedSyncDocuments, + generation: Revision, + failures: VecDeque, + pending: bool, + journal_ready: bool, + receipt: Option, + writes: usize, +} + +#[derive(Clone)] +struct Backend(Arc>); +struct Lease(Backend); + +impl RestoreBackend for Backend { + fn acquire( + &self, + _scope: SyncScope, + expected: Option, + ) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + if expected.is_some_and(|g| g != self.0.lock().unwrap().generation) { + return Err(DocumentError::StalePreview); + } + Ok(Box::new(Lease(self.clone())) as Box) + }) + } +} + +fn captured(state: &State) -> ExportSnapshot { + let mut snapshot = super::tests::snapshot(); + snapshot.generation = state.generation; + snapshot.base_revision = state.data.observed_revision(); + snapshot.preferences = SecretJson::default(); + snapshot.ui_preferences = SecretJson::default(); + for doc in &state.data.documents().documents { + match doc.kind { + DocumentKind::Preferences => { + snapshot + .preferences + .expose_mut() + .as_object_mut() + .unwrap() + .insert(doc.id.clone(), doc.value.clone()); + } + DocumentKind::UiPreferences => { + snapshot + .ui_preferences + .expose_mut() + .as_object_mut() + .unwrap() + .insert(doc.id.clone(), doc.value.clone()); + } + DocumentKind::Channels => snapshot + .channels + .push(serde_json::from_value(doc.value.clone()).unwrap()), + DocumentKind::ProviderCredentials => snapshot + .provider_credentials + .push(serde_json::from_value(doc.value.clone()).unwrap()), + DocumentKind::Dictionary => { + snapshot.dictionary.push(SecretJson::new(doc.value.clone())) + } + DocumentKind::Corrections => snapshot + .corrections + .push(SecretJson::new(doc.value.clone())), + DocumentKind::VocabularyPresets => snapshot + .vocabulary_presets + .push(serde_json::from_value(doc.value.clone()).unwrap()), + DocumentKind::StylePacks => snapshot + .style_packs + .push(serde_json::from_value(doc.value.clone()).unwrap()), + DocumentKind::History => snapshot.history.push(SecretJson::new(doc.value.clone())), + DocumentKind::Activity => snapshot + .activity + .push(serde_json::from_value(doc.value.clone()).unwrap()), + DocumentKind::DeviceProfile if doc.id == snapshot.source_device.id => { + let profile: DeviceProfileRecord = + serde_json::from_value(doc.value.clone()).unwrap(); + for (key, value) in profile.preferences.expose().as_object().unwrap() { + snapshot + .preferences + .expose_mut() + .as_object_mut() + .unwrap() + .insert(key.clone(), value.clone()); + } + snapshot.channels.extend(profile.channels); + snapshot + .provider_credentials + .extend(profile.provider_credentials); + snapshot.window_positions = profile.window_positions; + } + DocumentKind::DeviceProfile => snapshot.retained_documents.push(doc.clone()), + } + } + snapshot.tombstones = state.data.documents().tombstones.clone(); + snapshot +} + +impl RestoreLease for Lease { + fn capture(&mut self) -> BoxFuture<'_, DocumentResult> { + Box::pin(async move { Ok(captured(&self.0 .0.lock().unwrap())) }) + } + fn replace(&mut self, desired: ValidatedSyncDocuments) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + let mut state = self.0 .0.lock().unwrap(); + state.writes += 1; + if state.failures.pop_front().unwrap_or(false) { + // A first file became visible; the following credential write failed. + let value = desired + .documents() + .documents + .iter() + .find(|doc| doc.id == "themeMode") + .unwrap() + .value + .clone(); + state + .data + .set + .documents + .iter_mut() + .find(|doc| doc.id == "themeMode") + .unwrap() + .value = value; + return Err(DocumentError::CaptureFailed); + } + state.data = desired; + Ok(()) + }) + } + fn reload(&mut self) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async { Ok(()) }) + } + fn mark_recovery_pending(&mut self, _operation: &str) -> DocumentResult<()> { + self.0 .0.lock().unwrap().pending = true; + Ok(()) + } + fn mark_journal_ready(&mut self, _operation: &str) -> DocumentResult<()> { + self.0 .0.lock().unwrap().journal_ready = true; + Ok(()) + } + fn recover_without_journal(&mut self) -> DocumentResult<()> { + let mut state = self.0 .0.lock().unwrap(); + if state.pending && state.journal_ready { + return Err(DocumentError::RecoveryRequired); + } + state.pending = false; + Ok(()) + } + fn completed_restore(&self, operation: &str) -> DocumentResult> { + Ok(self + .0 + .0 + .lock() + .unwrap() + .receipt + .as_ref() + .filter(|r| r.operation_id == operation) + .cloned()) + } + fn finish_restore( + &mut self, + operation: &str, + committed: bool, + ) -> DocumentResult { + let mut state = self.0 .0.lock().unwrap(); + if let Some(receipt) = &state.receipt { + return Ok(receipt.clone()); + } + if committed { + state.generation = state.generation.checked_next().unwrap(); + } + let receipt = RestoreReceipt { + operation_id: operation.into(), + generation: state.generation, + committed, + journal_cleanup_pending: false, + }; + state.pending = false; + state.receipt = Some(receipt.clone()); + Ok(receipt) + } +} + +#[derive(Default)] +struct Storage { + value: Mutex>, + saves: AtomicUsize, + fail_before: AtomicUsize, + fail_after: AtomicUsize, + fail_clear: AtomicBool, +} +impl JournalStore for Storage { + fn load(&self, _scope: SyncScope) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async { Ok(self.value.lock().unwrap().clone()) }) + } + fn save(&self, _scope: SyncScope, value: SealedJournal) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + let number = self.saves.fetch_add(1, Ordering::SeqCst) + 1; + if self.fail_before.load(Ordering::SeqCst) == number { + return Err(DocumentError::JournalUnavailable); + } + *self.value.lock().unwrap() = Some(value); + if self.fail_after.load(Ordering::SeqCst) == number { + return Err(DocumentError::JournalUnavailable); + } + Ok(()) + }) + } + fn clear(&self, _scope: SyncScope) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async { + if self.fail_clear.load(Ordering::SeqCst) { + Err(DocumentError::JournalUnavailable) + } else { + *self.value.lock().unwrap() = None; + Ok(()) + } + }) + } +} + +fn context() -> RestoreContext { + RestoreContext { + scope: SyncScope { + service_origin: "https://sync.example.test".into(), + owner_github_id: "42".into(), + vault_id: "12345678-1234-4234-8234-123456789abc".into(), + key_id: "22345678-1234-4234-8234-123456789abc".into(), + device_id: "device-a".into(), + }, + operation_id: "32345678-1234-4234-8234-123456789abc".into(), + observed_revision: Revision::new(3), + local_generation: Revision::new(7), + target_device: super::tests::source(), + } +} + +fn setup(failures: &[bool]) -> (Backend, RestorePlan, Storage, CryptoJournalProtector) { + let data = export_snapshot(super::tests::channel_snapshot()) + .unwrap() + .documents; + let mut desired = data.documents().clone(); + desired + .documents + .iter_mut() + .find(|doc| doc.id == "themeMode") + .unwrap() + .value = json!("dark"); + let desired = validate_sync_documents(desired, Revision::new(3)).unwrap(); + let plan = prepare_sync_restore(desired, context()).unwrap(); + let backend = Backend(Arc::new(Mutex::new(State { + data, + generation: Revision::new(7), + failures: failures.iter().copied().collect(), + pending: false, + journal_ready: false, + receipt: None, + writes: 0, + }))); + let protector = CryptoJournalProtector::new(Arc::new(DerivedKey::from_secret_bytes( + Zeroizing::new([37; 32]), + ))); + (backend, plan, Storage::default(), protector) +} + +fn theme(backend: &Backend) -> Value { + backend + .0 + .lock() + .unwrap() + .data + .documents() + .documents + .iter() + .find(|doc| doc.id == "themeMode") + .unwrap() + .value + .clone() +} + +#[tokio::test] +async fn restore_verifies_all_logical_data_and_advances_one_generation() { + let (backend, plan, storage, protector) = setup(&[]); + let receipt = apply_sync_restore(plan, &backend, &storage, &protector) + .await + .unwrap(); + assert!(receipt.committed); + assert_eq!(receipt.generation.get(), 8); + assert_eq!(theme(&backend), "dark"); + assert!(!backend.0.lock().unwrap().pending); + assert!(storage.value.lock().unwrap().is_none()); +} + +#[tokio::test] +async fn credential_failure_rolls_back_the_already_written_file_without_false_success() { + let (backend, plan, storage, protector) = setup(&[true, false]); + assert_eq!( + apply_sync_restore(plan, &backend, &storage, &protector) + .await + .unwrap_err(), + DocumentError::RestoreRolledBack + ); + assert_eq!(theme(&backend), "system"); + assert_eq!(backend.0.lock().unwrap().generation.get(), 7); + assert!(storage.value.lock().unwrap().is_none()); +} + +#[tokio::test] +async fn rollback_failure_leaves_only_encrypted_material_and_recovery_resumes_it() { + let (backend, plan, storage, protector) = setup(&[true, true]); + assert_eq!( + apply_sync_restore(plan, &backend, &storage, &protector) + .await + .unwrap_err(), + DocumentError::RecoveryRequired + ); + let bytes = storage + .value + .lock() + .unwrap() + .as_ref() + .unwrap() + .ciphertext + .clone(); + assert!(!bytes + .windows(b"fixture-secret-original".len()) + .any(|part| part == b"fixture-secret-original")); + assert!(backend.0.lock().unwrap().pending); + let result = recover_sync_restore(context().scope, &backend, &storage, &protector) + .await + .unwrap(); + assert!(matches!(result, RecoveryOutcome::RolledBack(_))); + assert_eq!(theme(&backend), "system"); +} + +#[tokio::test] +async fn unknown_commit_journal_write_is_resolved_by_its_durable_decision() { + for persisted in [false, true] { + let (backend, plan, storage, protector) = setup(&[]); + if persisted { + storage.fail_after.store(2, Ordering::SeqCst); + } else { + storage.fail_before.store(2, Ordering::SeqCst); + } + assert_eq!( + apply_sync_restore(plan, &backend, &storage, &protector) + .await + .unwrap_err(), + DocumentError::RecoveryRequired + ); + let recovered = recover_sync_restore(context().scope, &backend, &storage, &protector) + .await + .unwrap(); + assert_eq!( + matches!(recovered, RecoveryOutcome::Committed(_)), + persisted + ); + assert_eq!(theme(&backend), if persisted { "dark" } else { "system" }); + } +} + +#[tokio::test] +async fn obsolete_committed_journal_never_replays_over_new_user_data() { + let (backend, plan, storage, protector) = setup(&[]); + storage.fail_clear.store(true, Ordering::SeqCst); + assert!( + apply_sync_restore(plan, &backend, &storage, &protector) + .await + .unwrap() + .journal_cleanup_pending + ); + backend + .0 + .lock() + .unwrap() + .data + .set + .documents + .iter_mut() + .find(|doc| doc.id == "themeMode") + .unwrap() + .value = json!("light"); + let writes = backend.0.lock().unwrap().writes; + storage.fail_clear.store(false, Ordering::SeqCst); + recover_sync_restore(context().scope, &backend, &storage, &protector) + .await + .unwrap(); + assert_eq!(theme(&backend), "light"); + assert_eq!(backend.0.lock().unwrap().writes, writes); +} + +#[tokio::test] +async fn wrong_scope_or_ciphertext_cannot_mutate_recovery_data() { + let (backend, plan, storage, protector) = setup(&[true, true]); + let _ = apply_sync_restore(plan, &backend, &storage, &protector).await; + let before = theme(&backend); + let writes = backend.0.lock().unwrap().writes; + let mut wrong = context().scope; + wrong.owner_github_id = "43".into(); + assert_eq!( + recover_sync_restore(wrong, &backend, &storage, &protector) + .await + .unwrap_err(), + DocumentError::Locked + ); + { + let mut stored = storage.value.lock().unwrap(); + let data = &mut stored.as_mut().unwrap().ciphertext; + let last = data.len() - 1; + data[last] ^= 1; + } + assert_eq!( + recover_sync_restore(context().scope, &backend, &storage, &protector) + .await + .unwrap_err(), + DocumentError::Locked + ); + assert_eq!(theme(&backend), before); + assert_eq!(backend.0.lock().unwrap().writes, writes); +} + +#[tokio::test] +async fn journal_prepare_failure_never_starts_a_data_write() { + let (backend, plan, storage, protector) = setup(&[]); + storage.fail_before.store(1, Ordering::SeqCst); + assert_eq!( + apply_sync_restore(plan, &backend, &storage, &protector) + .await + .unwrap_err(), + DocumentError::JournalUnavailable + ); + assert_eq!(backend.0.lock().unwrap().writes, 0); + assert!(matches!( + recover_sync_restore(context().scope, &backend, &storage, &protector) + .await + .unwrap(), + RecoveryOutcome::NoPending + )); + assert!(!backend.0.lock().unwrap().pending); +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/tests.rs new file mode 100644 index 000000000..b6c6fb57e --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/tests.rs @@ -0,0 +1,604 @@ +use serde_json::{json, Value}; +use std::collections::BTreeMap; + +use super::*; +use crate::cloud_sync_e2ee_protocol::types::{ + DocumentKind, LogicalDocument, Revision, SourceDevice, Tombstone, +}; + +pub(super) fn source() -> SourceDevice { + SourceDevice { + id: "device-a".into(), + os: "macos".into(), + arch: "aarch64".into(), + app_version: "2.0.0-Beta.3".into(), + } +} + +pub(super) fn snapshot() -> ExportSnapshot { + ExportSnapshot { + source_device: source(), + exported_at: "2026-09-26T00:00:00Z".into(), + generation: Revision::new(7), + base_revision: Revision::new(3), + preferences: SecretJson::new(json!({"themeMode":"system","showCapsule":true})), + ui_preferences: ui_preferences("en", "medium"), + channels: Vec::new(), + provider_credentials: Vec::new(), + dictionary: Vec::new(), + vocabulary_presets: Vec::new(), + corrections: Vec::new(), + style_packs: Vec::new(), + history: Vec::new(), + activity: Vec::new(), + window_positions: Vec::new(), + retained_documents: Vec::new(), + tombstones: Vec::new(), + } +} + +pub(super) fn sample() -> ValidatedSyncDocuments { + export_snapshot(snapshot()).unwrap().documents +} + +fn change( + set: &ValidatedSyncDocuments, + kind: DocumentKind, + id: &str, + value: Value, +) -> ValidatedSyncDocuments { + let mut set = set.documents().clone(); + if let Some(doc) = set + .documents + .iter_mut() + .find(|doc| doc.kind == kind && doc.id == id) + { + doc.value = value; + } else { + set.documents.push(LogicalDocument { + id: id.into(), + kind, + schema_version: 1, + value, + }); + } + validate_sync_documents(set, Revision::new(4)).unwrap() +} + +fn dictionary(id: &str, text: &str) -> Value { + json!({"id":id,"phrase":text,"note":null,"enabled":true,"hits":0,"createdAt":"2026-09-26T00:00:00Z"}) +} + +pub(super) fn channel_snapshot() -> ExportSnapshot { + let mut data = snapshot(); + data.channels.push(ChannelRecord { + id: "llm-one".into(), + namespace: SyncNamespace::Llm, + provider_type: "requesty".into(), + name: "original".into(), + enabled: true, + order: 0, + active: true, + }); + data.provider_credentials.push(ProviderCredentialRecord { + channel_id: "llm-one".into(), + namespace: SyncNamespace::Llm, + accounts: BTreeMap::from([("ark.api_key".into(), "fixture-secret-original".into())]), + }); + data +} + +#[test] +fn all_current_preference_fields_have_an_explicit_registration() { + let source = include_str!("../shared_types.rs"); + let fields = source + .split("pub struct UserPreferences {") + .nth(1) + .unwrap() + .split("\n}\n") + .next() + .unwrap(); + let names: std::collections::BTreeSet<_> = fields + .lines() + .filter_map(|line| { + line.trim() + .strip_prefix("pub ") + .and_then(|s| s.split_once(':')) + .map(|(name, _)| name) + }) + .collect(); + let registered: std::collections::BTreeSet<_> = registry::PREFERENCE_FIELDS + .iter() + .map(|field| field.rust_name) + .collect(); + assert_eq!( + names, registered, + "new persistent fields require a reviewed sync classification" + ); + assert_eq!(registered.len(), registry::PREFERENCE_FIELDS.len()); +} + +#[test] +fn controlled_export_keeps_real_service_keys_but_excludes_local_secrets_and_grants() { + let mut data = channel_snapshot(); + data.preferences = SecretJson::new( + json!({"themeMode":"dark","remoteInputPin":"fixture-pin-never-export","codingAgentEnabled":true,"cursorContextEnabled":true,"marketplaceDevLogin":"fixture-login","splashSeenVersion":"2","activeLlmProvider":"llm-one","codingAgentExe":"/fixture/never-run","futureAppearance":{"accent":"violet"}}), + ); + let exported = export_snapshot(data).unwrap(); + let raw = serde_json::to_string(exported.documents.documents()).unwrap(); + assert!( + raw.contains("fixture-secret-original"), + "ordinary service credentials must not be masked" + ); + assert!(!raw.contains("fixture-pin-never-export")); + assert!(!raw.contains("codingAgentEnabled")); + assert!(!raw.contains("cursorContextEnabled")); + assert!(!raw.contains("fixture-login")); + assert!(!raw.contains("activeLlmProvider")); + assert!(raw.contains("futureAppearance")); + let profile = exported + .documents + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::DeviceProfile) + .unwrap(); + assert_eq!( + profile.value["preferences"]["codingAgentExe"], + "/fixture/never-run" + ); + assert!(!format!("{:?}", exported).contains("fixture-secret-original")); +} + +#[test] +fn local_asr_channels_are_archived_with_their_credentials_not_globally_activated() { + let mut data = snapshot(); + data.channels.push(ChannelRecord { + id: "local-one".into(), + namespace: SyncNamespace::Asr, + provider_type: "foundry-local-whisper".into(), + name: "Windows model".into(), + enabled: true, + order: 0, + active: true, + }); + data.provider_credentials.push(ProviderCredentialRecord { + channel_id: "local-one".into(), + namespace: SyncNamespace::Asr, + accounts: BTreeMap::from([("asr.model".into(), "fixture-model".into())]), + }); + let exported = export_snapshot(data).unwrap(); + assert!(!exported + .documents + .documents() + .documents + .iter() + .any(|doc| matches!( + doc.kind, + DocumentKind::Channels | DocumentKind::ProviderCredentials + ))); + let profile = exported + .documents + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::DeviceProfile) + .unwrap(); + assert_eq!(profile.value["channels"][0]["id"], "local-one"); + assert_eq!( + profile.value["providerCredentials"][0]["accounts"]["asr.model"], + "fixture-model" + ); +} + +#[test] +fn history_never_claims_that_remote_audio_exists_locally() { + let mut data = snapshot(); + data.history.push(SecretJson::new(json!({"id":"history-one","createdAt":"2026-09-26T00:00:00Z","source":"quick_note","rawTranscript":"note","finalText":"note","mode":"raw","insertStatus":"notRequested","hasAudioRecording":true}))); + let exported = export_snapshot(data).unwrap(); + let row = exported + .documents + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::History) + .unwrap(); + assert_eq!(row.value["hasAudioRecording"], false); + assert_eq!(row.value["source"], "quick_note"); +} + +#[test] +fn validation_rejects_duplicate_ids_versions_dangling_credentials_and_excluded_preferences() { + let base = sample(); + let mut invalid = base.documents().clone(); + invalid.documents.push(invalid.documents[0].clone()); + assert_eq!( + validate_sync_documents(invalid, Revision::new(3)).unwrap_err(), + DocumentError::DuplicateId + ); + let mut invalid = base.documents().clone(); + invalid.documents[0].schema_version = 2; + assert_eq!( + validate_sync_documents(invalid, Revision::new(3)).unwrap_err(), + DocumentError::Unsupported + ); + let mut invalid = base.documents().clone(); + invalid.documents.push(LogicalDocument { + id: "remoteInputPin".into(), + kind: DocumentKind::Preferences, + schema_version: 1, + value: json!("forbidden"), + }); + assert_eq!( + validate_sync_documents(invalid, Revision::new(3)).unwrap_err(), + DocumentError::ExcludedField + ); + let mut invalid = export_snapshot(channel_snapshot()) + .unwrap() + .documents + .documents() + .clone(); + invalid + .documents + .retain(|doc| doc.kind != DocumentKind::Channels); + assert_eq!( + validate_sync_documents(invalid, Revision::new(3)).unwrap_err(), + DocumentError::InvalidReference + ); +} + +#[test] +fn credential_batch_validation_rejects_oauth_cookie_accounts_and_omni_id_aliases() { + let mut data = channel_snapshot(); + data.provider_credentials[0] + .accounts + .insert("github.access_token".into(), "fixture-oauth".into()); + assert_eq!( + validate_credential_set(&data.channels, &data.provider_credentials).unwrap_err(), + DocumentError::ExcludedField + ); + data.provider_credentials[0] + .accounts + .remove("github.access_token"); + data.channels[0].namespace = SyncNamespace::Omni; + data.provider_credentials[0].namespace = SyncNamespace::Omni; + data.provider_credentials[0].accounts.clear(); + assert_eq!( + validate_credential_set(&data.channels, &data.provider_credentials).unwrap_err(), + DocumentError::InvalidReference + ); + data.channels[0].id = "requesty".into(); + data.provider_credentials[0].channel_id = "requesty".into(); + validate_credential_set(&data.channels, &data.provider_credentials).unwrap(); + let mut cookie = channel_snapshot(); + cookie.provider_credentials[0].accounts.insert( + "ark.extra_headers".into(), + r#"{"Cookie":"fixture-session"}"#.into(), + ); + assert_eq!( + export_snapshot(cookie).unwrap_err(), + DocumentError::ExcludedField + ); +} + +#[test] +fn unknown_preference_values_roundtrip_and_merge_without_application() { + let base = sample(); + let local = change( + &base, + DocumentKind::Preferences, + "futureAppearance", + json!({"value":"preserve-me"}), + ); + let remote = change(&base, DocumentKind::Preferences, "themeMode", json!("dark")); + let merged = diff_sync_documents(Some(&base), &local, &remote) + .unwrap() + .resolve(&[]) + .unwrap(); + assert!(merged + .documents() + .documents + .iter() + .any(|doc| doc.id == "futureAppearance" && doc.value["value"] == "preserve-me")); +} + +#[test] +fn independent_stable_ids_merge_but_simultaneous_same_key_changes_do_not() { + let base = sample(); + let local = change( + &base, + DocumentKind::Dictionary, + "local-id", + dictionary("local-id", "same name"), + ); + let remote = change( + &base, + DocumentKind::Dictionary, + "remote-id", + dictionary("remote-id", "same name"), + ); + let result = diff_sync_documents(Some(&base), &local, &remote) + .unwrap() + .resolve(&[]) + .unwrap(); + assert_eq!( + result + .documents() + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::Dictionary) + .count(), + 2 + ); + let local = change(&base, DocumentKind::Preferences, "themeMode", json!("dark")); + let remote = change( + &base, + DocumentKind::Preferences, + "themeMode", + json!("light"), + ); + let preview = diff_sync_documents(Some(&base), &local, &remote).unwrap(); + assert_eq!(preview.conflicts().len(), 1); + assert_eq!( + preview.resolve(&[]).unwrap_err(), + DocumentError::ConflictChoiceRequired + ); +} + +#[test] +fn channel_and_credential_changes_are_one_redacted_conflict_unit() { + let base = export_snapshot(channel_snapshot()).unwrap().documents; + let mut channel = base + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::Channels) + .unwrap() + .value + .clone(); + channel["name"] = json!("private-local-name"); + let local = change(&base, DocumentKind::Channels, "llm:llm-one", channel); + let mut credentials = base + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::ProviderCredentials) + .unwrap() + .value + .clone(); + credentials["accounts"]["ark.api_key"] = json!("fixture-secret-remote"); + let remote = change( + &base, + DocumentKind::ProviderCredentials, + "llm:llm-one", + credentials, + ); + let preview = diff_sync_documents(Some(&base), &local, &remote).unwrap(); + assert_eq!(preview.conflicts().len(), 1); + assert!(preview.conflicts()[0].is_credential_unit); + let ui = serde_json::to_string(preview.conflicts()).unwrap(); + assert!(!ui.contains("fixture-secret")); + assert!(!ui.contains("private-local-name")); + let choice = ConflictChoice { + conflict_id: preview.conflicts()[0].conflict_id.clone(), + side: ConflictSide::Remote, + }; + let merged = preview.resolve(&[choice]).unwrap(); + let channel = merged + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::Channels) + .unwrap(); + assert_eq!( + channel.value["name"], "original", + "must not combine half of each channel unit" + ); +} + +#[test] +fn deletion_marks_prevent_offline_resurrection_and_conflict_with_edits() { + let base = change( + &sample(), + DocumentKind::Dictionary, + "entry", + dictionary("entry", "original"), + ); + let mut deleted = base.documents().clone(); + deleted.documents.retain(|doc| doc.id != "entry"); + deleted.tombstones.push(Tombstone { + id: "entry".into(), + kind: DocumentKind::Dictionary, + deleted_at: "2026-09-26T01:00:00Z".into(), + base_revision: Revision::new(4), + }); + let remote = validate_sync_documents(deleted, Revision::new(5)).unwrap(); + let merged = diff_sync_documents(Some(&base), &base, &remote) + .unwrap() + .resolve(&[]) + .unwrap(); + assert!(merged + .documents() + .tombstones + .iter() + .any(|t| t.id == "entry")); + assert!(!merged + .documents() + .documents + .iter() + .any(|doc| doc.id == "entry")); + let edited = change( + &base, + DocumentKind::Dictionary, + "entry", + dictionary("entry", "edited"), + ); + let preview = diff_sync_documents(Some(&base), &edited, &remote).unwrap(); + assert_eq!(preview.conflicts()[0].reason, ConflictReason::DeleteModify); + let mut missing = base.documents().clone(); + missing.documents.retain(|doc| doc.id != "entry"); + let missing = validate_sync_documents(missing, Revision::new(4)).unwrap(); + assert_eq!( + diff_sync_documents(Some(&base), &missing, &base).unwrap_err(), + DocumentError::MissingTombstone + ); +} + +#[test] +fn no_common_baseline_never_treats_a_missing_local_id_as_a_delete() { + let local = sample(); + let remote = change( + &local, + DocumentKind::Dictionary, + "cloud", + dictionary("cloud", "remote"), + ); + let result = diff_sync_documents(None, &local, &remote) + .unwrap() + .resolve(&[]) + .unwrap(); + assert!(result + .documents() + .documents + .iter() + .any(|doc| doc.id == "cloud")); +} + +#[test] +fn limits_reject_deep_values_and_oversized_full_snapshots_without_truncating() { + let mut value = json!(true); + for _ in 0..65 { + value = json!([value]); + } + let mut set = sample().documents().clone(); + set.documents.push(LogicalDocument { + id: "futureNested".into(), + kind: DocumentKind::Preferences, + schema_version: 1, + value, + }); + assert_eq!( + validate_sync_documents(set, Revision::new(3)).unwrap_err(), + DocumentError::PayloadTooLarge + ); + let mut set = sample().documents().clone(); + set.documents.push(LogicalDocument { + id: "futureText".into(), + kind: DocumentKind::Preferences, + schema_version: 1, + value: json!("x".repeat(MAX_JSON_BYTES)), + }); + assert_eq!( + validate_sync_documents(set, Revision::new(3)).unwrap_err(), + DocumentError::PayloadTooLarge + ); +} + +#[test] +fn tombstone_materialization_preserves_all_old_deletions() { + let base = change( + &sample(), + DocumentKind::Dictionary, + "remove", + dictionary("remove", "old"), + ); + let mut current = base.documents().clone(); + current.documents.retain(|doc| doc.id != "remove"); + let updated = record_missing_tombstones(current, &base, "2026-09-26T02:00:00Z").unwrap(); + assert_eq!(updated.documents().tombstones.len(), 1); + let mut next = updated.documents().clone(); + next.tombstones.clear(); + let preserved = record_missing_tombstones(next, &updated, "2026-09-26T03:00:00Z").unwrap(); + assert_eq!( + preserved.documents().tombstones, + updated.documents().tombstones + ); +} + +#[test] +fn scope_and_restore_preview_require_the_exact_revision_and_device() { + let scope = SyncScope { + service_origin: "https://sync.example.test".into(), + owner_github_id: "42".into(), + vault_id: "12345678-1234-4234-8234-123456789abc".into(), + key_id: "22345678-1234-4234-8234-123456789abc".into(), + device_id: "device-a".into(), + }; + let context = RestoreContext { + scope, + operation_id: "32345678-1234-4234-8234-123456789abc".into(), + observed_revision: Revision::new(99), + local_generation: Revision::new(7), + target_device: source(), + }; + assert_eq!( + prepare_sync_restore(sample(), context).unwrap_err(), + DocumentError::StalePreview + ); +} + +#[test] +fn simultaneous_active_channel_additions_are_a_resolvable_redacted_selection() { + let base = sample(); + let mut local = channel_snapshot(); + let mut remote = channel_snapshot(); + local.channels[0].id = "local-new".into(); + local.provider_credentials[0].channel_id = "local-new".into(); + remote.channels[0].id = "remote-new".into(); + remote.provider_credentials[0].channel_id = "remote-new".into(); + let local = export_snapshot(local).unwrap().documents; + let remote = export_snapshot(remote).unwrap().documents; + let preview = diff_sync_documents(Some(&base), &local, &remote).unwrap(); + assert_eq!(preview.conflicts().len(), 1); + let choices = preview + .conflicts() + .iter() + .map(|conflict| ConflictChoice { + conflict_id: conflict.conflict_id.clone(), + side: ConflictSide::Remote, + }) + .collect::>(); + let merged = preview.resolve(&choices).unwrap(); + let channels = merged + .documents() + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::Channels) + .collect::>(); + assert_eq!(channels.len(), 2); + assert_eq!( + channels + .iter() + .filter(|doc| doc.value["active"] == true) + .count(), + 1 + ); + assert!(channels + .iter() + .any(|doc| doc.id == "llm:remote-new" && doc.value["active"] == true)); +} + +#[test] +fn collection_order_is_preserved_independently_of_stable_id_sorting() { + let mut source = snapshot(); + source.dictionary = vec![ + SecretJson::new(dictionary("z", "newest")), + SecretJson::new(dictionary("a", "oldest")), + ]; + let exported = export_snapshot(source).unwrap(); + let docs = &exported.documents.documents().documents; + assert_eq!( + docs.iter() + .find(|doc| doc.kind == DocumentKind::Dictionary && doc.id == "z") + .unwrap() + .value["sortIndex"], + 0 + ); + assert_eq!( + docs.iter() + .find(|doc| doc.kind == DocumentKind::Dictionary && doc.id == "a") + .unwrap() + .value["sortIndex"], + 1 + ); +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/types.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/types.rs new file mode 100644 index 000000000..eb872e563 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/types.rs @@ -0,0 +1,430 @@ +//! Logical, secret-bearing data boundaries. None of these snapshots is a UI DTO. + +use std::collections::BTreeMap; +use std::fmt; + +use futures_util::future::BoxFuture; +use serde::{Deserialize, Serialize}; +use serde_json::Value; +use zeroize::Zeroize; + +use crate::cloud_sync_e2ee_protocol::types::{ + DocumentKind, DocumentSet, LogicalDocument, Revision, SourceDevice, Tombstone, +}; + +pub const DOCUMENT_SCHEMA_VERSION: u32 = 1; +pub const MAX_JSON_BYTES: usize = 15 * 1024 * 1024; +pub const MAX_DOCUMENTS: usize = 100_000; +pub const MAX_DEPTH: usize = 64; +pub const MAX_ICON_BYTES: usize = 64 * 1024; +pub const MAX_JOURNAL_BYTES: usize = 33 * 1024 * 1024; + +/// Stable, value-free errors. Never include serde, provider, path, or secret error bodies. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, thiserror::Error)] +#[serde(rename_all = "snake_case")] +pub enum DocumentError { + #[error("sync_documents_unsupported")] + Unsupported, + #[error("sync_documents_invalid")] + InvalidDocument, + #[error("sync_documents_invalid_reference")] + InvalidReference, + #[error("payload_too_large")] + PayloadTooLarge, + #[error("sync_documents_duplicate_id")] + DuplicateId, + #[error("sync_documents_excluded_field")] + ExcludedField, + #[error("sync_documents_capture_failed")] + CaptureFailed, + #[error("sync_documents_source_changed")] + SourceChanged, + #[error("runtime_busy")] + RuntimeBusy, + #[error("sync_documents_missing_tombstone")] + MissingTombstone, + #[error("sync_conflict_choice_required")] + ConflictChoiceRequired, + #[error("stale_preview")] + StalePreview, + #[error("sync_journal_unavailable")] + JournalUnavailable, + #[error("sync_documents_locked")] + Locked, + #[error("sync_restore_rolled_back")] + RestoreRolledBack, + #[error("recovery_required")] + RecoveryRequired, +} + +pub type DocumentResult = Result; + +/// JSON may contain API keys or private history. Diagnostics expose neither keys nor values. +#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[serde(transparent)] +pub struct SecretJson(Value); + +impl SecretJson { + pub fn new(value: Value) -> Self { + Self(value) + } + + pub fn expose(&self) -> &Value { + &self.0 + } + + pub fn expose_mut(&mut self) -> &mut Value { + &mut self.0 + } + + pub fn into_value(mut self) -> Value { + std::mem::replace(&mut self.0, Value::Null) + } + + pub fn from_serializable(value: &impl Serialize) -> DocumentResult { + serde_json::to_value(value) + .map(Self) + .map_err(|_| DocumentError::InvalidDocument) + } +} + +impl Default for SecretJson { + fn default() -> Self { + Self(Value::Object(Default::default())) + } +} + +impl fmt::Debug for SecretJson { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("SecretJson([REDACTED])") + } +} + +impl Drop for SecretJson { + fn drop(&mut self) { + erase_json(&mut self.0); + } +} + +pub(crate) fn erase_json(value: &mut Value) { + match value { + Value::String(text) => text.zeroize(), + Value::Array(values) => values.iter_mut().for_each(erase_json), + Value::Object(values) => values.values_mut().for_each(erase_json), + _ => {} + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum SyncNamespace { + Asr, + Llm, + Omni, +} + +impl SyncNamespace { + pub fn as_str(self) -> &'static str { + match self { + Self::Asr => "asr", + Self::Llm => "llm", + Self::Omni => "omni", + } + } +} + +/// Local readiness/test results and OAuth login state are intentionally absent. +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct ChannelRecord { + pub id: String, + pub namespace: SyncNamespace, + pub provider_type: String, + pub name: String, + pub enabled: bool, + pub order: u32, + pub active: bool, +} + +impl ChannelRecord { + pub fn document_id(&self) -> String { + format!("{}:{}", self.namespace.as_str(), self.id) + } +} + +/// Exactly one controlled account map per channel, including an empty map. +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct ProviderCredentialRecord { + pub channel_id: String, + pub namespace: SyncNamespace, + pub accounts: BTreeMap, +} + +impl ProviderCredentialRecord { + pub fn document_id(&self) -> String { + format!("{}:{}", self.namespace.as_str(), self.channel_id) + } +} + +impl Drop for ProviderCredentialRecord { + fn drop(&mut self) { + self.accounts.values_mut().for_each(Zeroize::zeroize); + } +} + +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct IconAsset { + pub mime: String, + pub base64: String, +} + +#[derive(Clone, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct StylePackRecord { + /// Full StylePack serialization; export removes iconPath and derived active. + pub pack: SecretJson, + pub icon: Option, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum PresetOrigin { + Custom, + Override, + BuiltinState, +} + +#[derive(Clone, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct VocabularyPresetRecord { + pub id: String, + pub origin: PresetOrigin, + pub name: Option, + pub phrases: Vec, + pub enabled: bool, + #[serde(default)] + pub order: u32, +} + +/// One source device/day contribution. Never export an imported aggregate as a new local one. +#[derive(Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct ActivityRecord { + pub source_device_id: String, + pub date: String, + pub count: u64, + pub chars: u64, + pub duration_ms: u64, +} + +impl ActivityRecord { + pub fn document_id(&self) -> String { + format!("{}:{}", self.source_device_id, self.date) + } +} + +#[derive(Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct WindowPosition { + pub window_id: String, + pub x: i32, + pub y: i32, + pub width: u32, + pub height: u32, +} + +/// These are data to preserve/review, never executable paths or permission grants. +#[derive(Clone, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct DeviceProfileRecord { + pub device: SourceDevice, + pub preferences: SecretJson, + pub channels: Vec, + pub provider_credentials: Vec, + pub window_positions: Vec, +} + +/// A coherent capture under the Host's write barrier. No directory/keystore enumeration. +#[derive(Clone)] +pub struct ExportSnapshot { + pub source_device: SourceDevice, + pub exported_at: String, + pub generation: Revision, + pub base_revision: Revision, + /// Raw preferences plus preserved unknown keys, before UserPreferences drops unknown data. + pub preferences: SecretJson, + pub ui_preferences: SecretJson, + pub channels: Vec, + pub provider_credentials: Vec, + pub dictionary: Vec, + pub vocabulary_presets: Vec, + pub corrections: Vec, + pub style_packs: Vec, + pub history: Vec, + pub activity: Vec, + pub window_positions: Vec, + /// Other-device profiles and unknown preference keys from protected local extension storage. + pub retained_documents: Vec, + pub tombstones: Vec, +} + +pub trait SyncDocumentSource: Send + Sync { + /// Capture all registered stores/credentials at one persisted generation. + /// Missing capabilities and failed credential reads must return an error, never an empty set. + fn capture(&self) -> BoxFuture<'_, DocumentResult>; +} + +#[derive(Clone)] +pub struct ValidatedSyncDocuments { + pub(crate) set: DocumentSet, + pub(crate) revision: Revision, +} + +impl ValidatedSyncDocuments { + pub fn documents(&self) -> &DocumentSet { + &self.set + } + + pub fn observed_revision(&self) -> Revision { + self.revision + } +} + +impl Drop for ValidatedSyncDocuments { + fn drop(&mut self) { + for document in &mut self.set.documents { + erase_json(&mut document.value); + } + } +} + +#[derive(Clone)] +pub struct ExportedDocuments { + pub generation: Revision, + pub documents: ValidatedSyncDocuments, +} + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct DocumentKey { + pub kind: DocumentKind, + pub id: String, +} + +/// Origin/account/vault/key/device binding for protected local state and restore ownership. +#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct SyncScope { + pub service_origin: String, + pub owner_github_id: String, + pub vault_id: String, + pub key_id: String, + pub device_id: String, +} + +#[derive(Clone)] +pub struct RestoreContext { + pub scope: SyncScope, + pub operation_id: String, + pub observed_revision: Revision, + pub local_generation: Revision, + pub target_device: SourceDevice, +} + +/// Exclusive lease blocks every normal repository/credential mutation until released. +/// After a crash, startup must recover a pending journal before admitting ordinary writes. +pub trait RestoreBackend: Send + Sync { + fn acquire( + &self, + scope: SyncScope, + expected_generation: Option, + ) -> BoxFuture<'_, DocumentResult>>; +} + +pub trait RestoreLease: Send { + fn capture(&mut self) -> BoxFuture<'_, DocumentResult>; + + /// Local-only side effects never enter cloud documents. The encrypted journal may retain + /// the minimal receiving-device state needed to roll them back exactly. + fn capture_rollback_state(&mut self) -> BoxFuture<'_, DocumentResult> { + Box::pin(async { Ok(SecretJson::default()) }) + } + fn restore_rollback_state(&mut self, state: &SecretJson) -> BoxFuture<'_, DocumentResult<()>> { + let empty = state + .expose() + .as_object() + .is_some_and(|value| value.is_empty()); + Box::pin(async move { + if empty { + Ok(()) + } else { + Err(DocumentError::Unsupported) + } + }) + } + + /// Validate native representations before journalling or mutating any local data. + fn preflight( + &mut self, + _documents: &ValidatedSyncDocuments, + ) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async { Ok(()) }) + } + + /// Replace registered logical data, preserving stable IDs and all history. + /// Do not import OAuth/permissions, execute device paths, or run retention trimming. + fn replace(&mut self, documents: ValidatedSyncDocuments) -> BoxFuture<'_, DocumentResult<()>>; + + /// Reload file-backed caches and invalidate credential/test readiness before verification. + fn reload(&mut self) -> BoxFuture<'_, DocumentResult<()>>; + + /// Must persist the pending marker; dropping a cancelled future cannot admit ordinary writes. + fn mark_recovery_pending(&mut self, operation_id: &str) -> DocumentResult<()>; + + /// Persist this only after the encrypted journal is durable, before the first data write. + fn mark_journal_ready(&mut self, operation_id: &str) -> DocumentResult<()>; + + /// Missing journal is safe only for a pending Preparing marker; Applying must fail closed. + fn recover_without_journal(&mut self) -> DocumentResult<()>; + + /// A durable receipt prevents replaying an old committed journal over newer user changes. + fn completed_restore( + &self, + operation_id: &str, + ) -> DocumentResult>; + + /// Idempotent for operation_id. Commit advances one Restore-origin generation; rollback does not. + fn finish_restore( + &mut self, + operation_id: &str, + committed: bool, + ) -> DocumentResult; +} + +macro_rules! redact_debug { + ($($name:ty),+ $(,)?) => { + $(impl fmt::Debug for $name { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(concat!(stringify!($name), "([REDACTED])")) + } + })+ + }; +} + +redact_debug!( + ChannelRecord, + ProviderCredentialRecord, + IconAsset, + StylePackRecord, + VocabularyPresetRecord, + ActivityRecord, + WindowPosition, + DeviceProfileRecord, + ExportSnapshot, + ValidatedSyncDocuments, + ExportedDocuments, + SyncScope, + RestoreContext, +); diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/validate.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/validate.rs new file mode 100644 index 000000000..0f51ec367 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_documents/validate.rs @@ -0,0 +1,812 @@ +//! Validation after authenticated decryption and before any local side effect. + +use std::collections::{BTreeMap, BTreeSet}; +use std::io::{self, Write}; + +use base64::{engine::general_purpose::STANDARD, Engine}; +use serde::de::DeserializeOwned; +use serde_json::{Map, Value}; + +use crate::cloud_sync_e2ee_protocol::types::{ + DocumentKind, DocumentSet, LogicalDocument, Revision, SourceDevice, +}; + +use super::registry::{ + credential_accounts, excluded_extension_key, is_device_channel, preference_field, + validate_preference_value, PreferenceClass, +}; +use super::types::*; + +/// Input must come from the protocol's duplicate-key/UTF-8/depth checked AEAD decoder. +pub fn validate_sync_documents( + mut set: DocumentSet, + observed_revision: Revision, +) -> DocumentResult { + if set.schema_version != DOCUMENT_SCHEMA_VERSION + || set + .documents + .iter() + .any(|doc| doc.schema_version != DOCUMENT_SCHEMA_VERSION) + { + return Err(DocumentError::Unsupported); + } + if set.documents.len().saturating_add(set.tombstones.len()) > MAX_DOCUMENTS { + return Err(DocumentError::PayloadTooLarge); + } + timestamp(&set.exported_at)?; + source_device(&set.source_device)?; + let mut seen = BTreeSet::new(); + for doc in &set.documents { + identifier(&doc.id)?; + if !seen.insert((doc.kind, doc.id.clone())) { + return Err(DocumentError::DuplicateId); + } + value_depth(&doc.value)?; + validate_document(doc)?; + } + for tombstone in &set.tombstones { + identifier(&tombstone.id)?; + timestamp(&tombstone.deleted_at)?; + if tombstone.base_revision > observed_revision { + return Err(DocumentError::InvalidDocument); + } + if !seen.insert((tombstone.kind, tombstone.id.clone())) { + return Err(DocumentError::DuplicateId); + } + } + normalize_collection_order(&mut set)?; + let mut limit = SizeLimit { bytes: 0 }; + serde_json::to_writer(&mut limit, &set).map_err(|_| DocumentError::PayloadTooLarge)?; + validate_references(&set)?; + set.documents + .sort_by(|left, right| (left.kind, &left.id).cmp(&(right.kind, &right.id))); + set.tombstones + .sort_by(|left, right| (left.kind, &left.id).cmp(&(right.kind, &right.id))); + Ok(ValidatedSyncDocuments { + set, + revision: observed_revision, + }) +} + +struct SizeLimit { + bytes: usize, +} +impl Write for SizeLimit { + fn write(&mut self, data: &[u8]) -> io::Result { + self.bytes = self + .bytes + .checked_add(data.len()) + .ok_or_else(|| io::Error::other("limit"))?; + if self.bytes > MAX_JSON_BYTES { + return Err(io::Error::other("limit")); + } + Ok(data.len()) + } + fn flush(&mut self) -> io::Result<()> { + Ok(()) + } +} + +pub(crate) fn value_depth(root: &Value) -> DocumentResult<()> { + let mut stack = vec![(root, 1usize)]; + while let Some((value, depth)) = stack.pop() { + if depth > MAX_DEPTH { + return Err(DocumentError::PayloadTooLarge); + } + match value { + Value::Array(values) => stack.extend(values.iter().map(|v| (v, depth + 1))), + Value::Object(values) => stack.extend(values.values().map(|v| (v, depth + 1))), + Value::Number(number) + if number.is_f64() && !number.as_f64().is_some_and(f64::is_finite) => + { + return Err(DocumentError::InvalidDocument) + } + _ => {} + } + } + Ok(()) +} + +pub(crate) fn identifier(value: &str) -> DocumentResult<()> { + if value.is_empty() + || value.len() > 512 + || matches!(value, "." | "..") + || value + .chars() + .any(|c| c.is_control() || matches!(c, '/' | '\\')) + { + return Err(DocumentError::InvalidDocument); + } + Ok(()) +} + +pub(crate) fn timestamp(value: &str) -> DocumentResult<()> { + let time = + chrono::DateTime::parse_from_rfc3339(value).map_err(|_| DocumentError::InvalidDocument)?; + if time.offset().local_minus_utc() != 0 { + return Err(DocumentError::InvalidDocument); + } + Ok(()) +} + +fn source_device(device: &SourceDevice) -> DocumentResult<()> { + identifier(&device.id)?; + for text in [&device.os, &device.arch, &device.app_version] { + if text.is_empty() || text.len() > 128 || text.chars().any(char::is_control) { + return Err(DocumentError::InvalidDocument); + } + } + Ok(()) +} + +pub(crate) fn deserialize(value: &Value) -> DocumentResult { + serde_json::from_value(value.clone()).map_err(|_| DocumentError::InvalidDocument) +} + +fn object<'a>(value: &'a Value, allowed: &[&str]) -> DocumentResult<&'a Map> { + let object = value.as_object().ok_or(DocumentError::InvalidDocument)?; + if object.keys().any(|key| !allowed.contains(&key.as_str())) { + return Err(DocumentError::Unsupported); + } + Ok(object) +} + +fn required_text<'a>(object: &'a Map, key: &str) -> DocumentResult<&'a str> { + object + .get(key) + .and_then(Value::as_str) + .ok_or(DocumentError::InvalidDocument) +} + +fn optional_text(object: &Map, keys: &[&str]) -> DocumentResult<()> { + for key in keys { + if object + .get(*key) + .is_some_and(|value| !value.is_null() && !value.is_string()) + { + return Err(DocumentError::InvalidDocument); + } + } + Ok(()) +} + +fn optional_unsigned(object: &Map, keys: &[&str]) -> DocumentResult<()> { + for key in keys { + if object + .get(*key) + .is_some_and(|value| !value.is_null() && value.as_u64().is_none()) + { + return Err(DocumentError::InvalidDocument); + } + } + Ok(()) +} + +fn optional_bool(object: &Map, keys: &[&str]) -> DocumentResult<()> { + for key in keys { + if object + .get(*key) + .is_some_and(|value| !value.is_null() && !value.is_boolean()) + { + return Err(DocumentError::InvalidDocument); + } + } + Ok(()) +} + +fn choice(value: &str, choices: &[&str]) -> DocumentResult<()> { + if choices.contains(&value) { + Ok(()) + } else { + Err(DocumentError::InvalidDocument) + } +} + +fn validate_document(doc: &LogicalDocument) -> DocumentResult<()> { + match doc.kind { + DocumentKind::Preferences => { + if let Some(field) = preference_field(&doc.id) { + if field.class != PreferenceClass::Portable { + return Err(DocumentError::ExcludedField); + } + validate_preference_value(field, &doc.value)?; + } else if excluded_extension_key(&doc.id) { + return Err(DocumentError::ExcludedField); + } + } + DocumentKind::UiPreferences => match doc.id.as_str() { + "locale" => choice( + doc.value.as_str().ok_or(DocumentError::InvalidDocument)?, + &[ + "system", "zh-CN", "zh-TW", "en", "ja", "ko", "es", "fr", "de", + ], + )?, + "fontScale" => choice( + doc.value.as_str().ok_or(DocumentError::InvalidDocument)?, + &["small", "medium", "large"], + )?, + _ if excluded_extension_key(&doc.id) => return Err(DocumentError::ExcludedField), + _ => {} + }, + DocumentKind::Channels => { + let channel: ChannelRecord = deserialize(&doc.value)?; + validate_channel(&channel)?; + if channel.document_id() != doc.id + || is_device_channel(channel.namespace, &channel.provider_type) + { + return Err(DocumentError::InvalidDocument); + } + } + DocumentKind::ProviderCredentials => { + let credentials: ProviderCredentialRecord = deserialize(&doc.value)?; + validate_credentials(&credentials)?; + if credentials.document_id() != doc.id { + return Err(DocumentError::InvalidReference); + } + } + DocumentKind::Dictionary => { + let row = object( + &doc.value, + &[ + "id", + "phrase", + "note", + "enabled", + "hits", + "createdAt", + "sortIndex", + ], + )?; + if required_text(row, "id")? != doc.id { + return Err(DocumentError::InvalidReference); + } + required_text(row, "phrase")?; + optional_text(row, &["note", "createdAt"])?; + optional_bool(row, &["enabled"])?; + optional_unsigned(row, &["hits"])?; + } + DocumentKind::VocabularyPresets => { + let preset: VocabularyPresetRecord = deserialize(&doc.value)?; + identifier(&preset.id)?; + let prefix = match preset.origin { + PresetOrigin::Custom => "custom", + PresetOrigin::Override => "override", + PresetOrigin::BuiltinState => "builtin", + }; + if doc.id != format!("{prefix}:{}", preset.id) { + return Err(DocumentError::InvalidReference); + } + if preset.origin == PresetOrigin::BuiltinState { + if preset.name.is_some() || !preset.phrases.is_empty() || preset.order != 0 { + return Err(DocumentError::InvalidDocument); + } + } else if preset.name.as_deref().is_none_or(str::is_empty) { + return Err(DocumentError::InvalidDocument); + } + } + DocumentKind::Corrections => { + let row = object( + &doc.value, + &[ + "id", + "pattern", + "replacement", + "enabled", + "createdAt", + "source", + "sortIndex", + ], + )?; + if required_text(row, "id")? != doc.id { + return Err(DocumentError::InvalidReference); + } + required_text(row, "pattern")?; + required_text(row, "replacement")?; + optional_text(row, &["createdAt"])?; + optional_bool(row, &["enabled"])?; + if let Some(value) = row.get("source") { + choice( + value.as_str().ok_or(DocumentError::InvalidDocument)?, + &["manual", "learned"], + )?; + } + } + DocumentKind::StylePacks => validate_style(doc)?, + DocumentKind::History => validate_history(doc)?, + DocumentKind::Activity => { + let day: ActivityRecord = deserialize(&doc.value)?; + identifier(&day.source_device_id)?; + let parsed = chrono::NaiveDate::parse_from_str(&day.date, "%Y-%m-%d") + .map_err(|_| DocumentError::InvalidDocument)?; + if parsed.format("%Y-%m-%d").to_string() != day.date || day.document_id() != doc.id { + return Err(DocumentError::InvalidDocument); + } + } + DocumentKind::DeviceProfile => validate_profile(doc)?, + } + Ok(()) +} + +fn validate_channel(channel: &ChannelRecord) -> DocumentResult<()> { + identifier(&channel.id)?; + identifier(&channel.provider_type)?; + if channel.active && !channel.enabled { + return Err(DocumentError::InvalidDocument); + } + if channel.namespace == SyncNamespace::Omni && channel.id != channel.provider_type { + return Err(DocumentError::InvalidReference); + } + Ok(()) +} + +/// Common native-vault batch contract, including device-local ASR entries. +/// Provider-specific headers/temperature/protocol representability is checked by the Host. +pub fn validate_credential_set( + channels: &[ChannelRecord], + credentials: &[ProviderCredentialRecord], +) -> DocumentResult<()> { + let mut channel_ids = BTreeSet::new(); + let mut credential_ids = BTreeSet::new(); + let mut active = BTreeSet::new(); + for channel in channels { + validate_channel(channel)?; + if !channel_ids.insert(channel.document_id()) { + return Err(DocumentError::DuplicateId); + } + if channel.active && !active.insert(channel.namespace) { + return Err(DocumentError::InvalidReference); + } + } + for record in credentials { + identifier(&record.channel_id)?; + if !credential_ids.insert(record.document_id()) { + return Err(DocumentError::DuplicateId); + } + if record + .accounts + .keys() + .any(|account| !credential_accounts(record.namespace).contains(&account.as_str())) + { + return Err(DocumentError::ExcludedField); + } + } + if channel_ids != credential_ids { + return Err(DocumentError::InvalidReference); + } + Ok(()) +} + +fn validate_credentials(credentials: &ProviderCredentialRecord) -> DocumentResult<()> { + identifier(&credentials.channel_id)?; + for (account, value) in &credentials.accounts { + if !credential_accounts(credentials.namespace).contains(&account.as_str()) { + return Err(DocumentError::ExcludedField); + } + if account.ends_with(".extra_headers") && !value.trim().is_empty() { + let headers: BTreeMap = + serde_json::from_str(value).map_err(|_| DocumentError::InvalidDocument)?; + if headers.keys().any(|key| { + key.eq_ignore_ascii_case("cookie") || key.eq_ignore_ascii_case("set-cookie") + }) { + return Err(DocumentError::ExcludedField); + } + } + } + Ok(()) +} + +fn validate_style(doc: &LogicalDocument) -> DocumentResult<()> { + let style: StylePackRecord = deserialize(&doc.value)?; + let row = object( + style.pack.expose(), + &[ + "id", + "name", + "description", + "author", + "version", + "kind", + "baseMode", + "selectionPrompt", + "voiceEditPrompt", + "prompt", + "examples", + "tags", + "createdAt", + "updatedAt", + "enabled", + "recommendedModel", + "compatibleAppVersion", + "originPackId", + "originAuthorLogin", + ], + )?; + if required_text(row, "id")? != doc.id { + return Err(DocumentError::InvalidReference); + } + for key in [ + "name", + "description", + "version", + "kind", + "selectionPrompt", + "voiceEditPrompt", + "prompt", + ] { + required_text(row, key)?; + } + choice( + required_text(row, "baseMode")?, + &["raw", "light", "structured", "formal"], + )?; + optional_text( + row, + &[ + "author", + "createdAt", + "updatedAt", + "recommendedModel", + "compatibleAppVersion", + "originPackId", + "originAuthorLogin", + ], + )?; + optional_bool(row, &["enabled"])?; + if !row + .get("tags") + .and_then(Value::as_array) + .is_some_and(|tags| tags.iter().all(Value::is_string)) + { + return Err(DocumentError::InvalidDocument); + } + let examples = row + .get("examples") + .and_then(Value::as_array) + .ok_or(DocumentError::InvalidDocument)?; + for example in examples { + let fields = object(example, &["title", "input", "output"])?; + required_text(fields, "input")?; + required_text(fields, "output")?; + optional_text(fields, &["title"])?; + } + if let Some(icon) = &style.icon { + validate_icon(icon)?; + } + Ok(()) +} + +pub fn validate_icon(icon: &IconAsset) -> DocumentResult<()> { + if icon.base64.len() > MAX_ICON_BYTES.div_ceil(3) * 4 { + return Err(DocumentError::PayloadTooLarge); + } + let bytes = STANDARD + .decode(&icon.base64) + .map_err(|_| DocumentError::InvalidDocument)?; + if bytes.len() > MAX_ICON_BYTES || STANDARD.encode(&bytes) != icon.base64 { + return Err(DocumentError::InvalidDocument); + } + let extension = match icon.mime.as_str() { + "image/png" => "png", + "image/jpeg" => "jpg", + "image/webp" => "webp", + _ => return Err(DocumentError::InvalidDocument), + }; + crate::style_pack_archive::validate_icon_content(extension, &bytes) + .map_err(|_| DocumentError::InvalidDocument) +} + +fn validate_history(doc: &LogicalDocument) -> DocumentResult<()> { + let row = object( + &doc.value, + &[ + "id", + "createdAt", + "source", + "rawTranscript", + "asrTranscript", + "finalText", + "mode", + "stylePackId", + "translationActive", + "polishSource", + "appBundleId", + "appName", + "insertStatus", + "errorCode", + "durationMs", + "dictionaryEntryCount", + "hasAudioRecording", + "asrProvider", + "asrModel", + "llmProvider", + "llmModel", + "pipelineMode", + "asrMs", + "polishMs", + "sortIndex", + ], + )?; + if required_text(row, "id")? != doc.id { + return Err(DocumentError::InvalidReference); + } + for key in ["createdAt", "rawTranscript", "finalText"] { + required_text(row, key)?; + } + choice( + required_text(row, "mode")?, + &["raw", "light", "structured", "formal"], + )?; + choice( + required_text(row, "insertStatus")?, + &[ + "inserted", + "pasteSent", + "copiedFallback", + "failed", + "notRequested", + ], + )?; + if let Some(source) = row.get("source") { + choice( + source.as_str().ok_or(DocumentError::InvalidDocument)?, + &[ + "voice", + "quick_note", + "selection_polish", + "selection_voice_edit", + ], + )?; + } + optional_text( + row, + &[ + "asrTranscript", + "stylePackId", + "polishSource", + "appBundleId", + "appName", + "errorCode", + "asrProvider", + "asrModel", + "llmProvider", + "llmModel", + "pipelineMode", + ], + )?; + optional_unsigned( + row, + &["durationMs", "dictionaryEntryCount", "asrMs", "polishMs"], + )?; + optional_bool(row, &["translationActive", "hasAudioRecording"])?; + if row.get("hasAudioRecording") == Some(&Value::Bool(true)) { + return Err(DocumentError::ExcludedField); + } + Ok(()) +} + +fn validate_profile(doc: &LogicalDocument) -> DocumentResult<()> { + let profile: DeviceProfileRecord = deserialize(&doc.value)?; + source_device(&profile.device)?; + if profile.device.id != doc.id { + return Err(DocumentError::InvalidReference); + } + for (key, value) in profile + .preferences + .expose() + .as_object() + .ok_or(DocumentError::InvalidDocument)? + { + let field = preference_field(key).ok_or(DocumentError::Unsupported)?; + if field.class != PreferenceClass::DeviceProfile { + return Err(DocumentError::ExcludedField); + } + validate_preference_value(field, value)?; + } + let mut channels = BTreeMap::new(); + let mut active = BTreeSet::new(); + for channel in &profile.channels { + validate_channel(channel)?; + if !is_device_channel(channel.namespace, &channel.provider_type) { + return Err(DocumentError::InvalidDocument); + } + if channel.active && !active.insert(channel.namespace) { + return Err(DocumentError::InvalidReference); + } + if channels.insert(channel.document_id(), channel).is_some() { + return Err(DocumentError::DuplicateId); + } + } + let mut credential_ids = BTreeSet::new(); + for credential in &profile.provider_credentials { + validate_credentials(credential)?; + if !credential_ids.insert(credential.document_id()) { + return Err(DocumentError::DuplicateId); + } + } + if credential_ids != channels.keys().cloned().collect() { + return Err(DocumentError::InvalidReference); + } + let mut windows = BTreeSet::new(); + for window in &profile.window_positions { + identifier(&window.window_id)?; + if !windows.insert(&window.window_id) + || window.width == 0 + || window.height == 0 + || window.width > 100_000 + || window.height > 100_000 + { + return Err(DocumentError::InvalidDocument); + } + } + Ok(()) +} + +fn validate_references(set: &DocumentSet) -> DocumentResult<()> { + let mut channels = BTreeMap::new(); + let mut credentials = BTreeSet::new(); + let mut active = BTreeSet::new(); + let styles: BTreeSet<&str> = set + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::StylePacks) + .map(|doc| doc.id.as_str()) + .collect(); + for doc in &set.documents { + match doc.kind { + DocumentKind::Channels => { + let channel: ChannelRecord = deserialize(&doc.value)?; + if channel.active && !active.insert(channel.namespace) { + return Err(DocumentError::InvalidReference); + } + channels.insert(doc.id.clone(), channel); + } + DocumentKind::ProviderCredentials => { + credentials.insert(doc.id.clone()); + } + DocumentKind::Preferences + if matches!( + doc.id.as_str(), + "activeStylePackId" | "selectionPolishStylePackId" + ) => + { + let id = doc.value.as_str().ok_or(DocumentError::InvalidReference)?; + if !id.is_empty() && !styles.contains(id) { + return Err(DocumentError::InvalidReference); + } + } + _ => {} + } + } + if credentials != channels.keys().cloned().collect() { + return Err(DocumentError::InvalidReference); + } + // A channel cannot be deleted while a separate credential half remains live. + for tombstone in &set.tombstones { + if tombstone.kind == DocumentKind::Channels && credentials.contains(&tombstone.id) + || tombstone.kind == DocumentKind::ProviderCredentials + && channels.contains_key(&tombstone.id) + { + return Err(DocumentError::InvalidReference); + } + } + Ok(()) +} + +pub(crate) fn validate_scope(scope: &SyncScope) -> DocumentResult<()> { + let origin = + url::Url::parse(&scope.service_origin).map_err(|_| DocumentError::InvalidDocument)?; + if origin.scheme() != "https" + || origin.origin().ascii_serialization() != scope.service_origin + || !origin.username().is_empty() + || origin.password().is_some() + { + return Err(DocumentError::InvalidDocument); + } + let github_id = + Revision::parse(&scope.owner_github_id).map_err(|_| DocumentError::InvalidDocument)?; + if github_id.get() == 0 { + return Err(DocumentError::InvalidDocument); + } + for id in [&scope.vault_id, &scope.key_id] { + uuid_v4(id)?; + } + identifier(&scope.device_id) +} + +pub(crate) fn uuid_v4(value: &str) -> DocumentResult<()> { + let id = uuid::Uuid::parse_str(value).map_err(|_| DocumentError::InvalidDocument)?; + if id.get_version() != Some(uuid::Version::Random) + || id.get_variant() != uuid::Variant::RFC4122 + || id.to_string() != value + { + return Err(DocumentError::InvalidDocument); + } + Ok(()) +} + +fn normalize_collection_order(set: &mut DocumentSet) -> DocumentResult<()> { + for kind in [ + DocumentKind::Dictionary, + DocumentKind::Corrections, + DocumentKind::History, + ] { + let mut indices: Vec<_> = set + .documents + .iter() + .enumerate() + .filter(|(_, doc)| doc.kind == kind) + .map(|(index, _)| index) + .collect(); + for index in &indices { + if set.documents[*index] + .value + .get("sortIndex") + .is_some_and(|value| value.as_u64().is_none()) + { + return Err(DocumentError::InvalidDocument); + } + } + indices.sort_by(|left, right| { + let left = &set.documents[*left]; + let right = &set.documents[*right]; + ( + left.value + .get("sortIndex") + .and_then(Value::as_u64) + .unwrap_or(u64::MAX), + &left.id, + ) + .cmp(&( + right + .value + .get("sortIndex") + .and_then(Value::as_u64) + .unwrap_or(u64::MAX), + &right.id, + )) + }); + for (order, index) in indices.into_iter().enumerate() { + set.documents[index] + .value + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .insert("sortIndex".into(), Value::from(order)); + } + } + for origin in ["custom", "override"] { + let mut indices: Vec<_> = set + .documents + .iter() + .enumerate() + .filter(|(_, doc)| { + doc.kind == DocumentKind::VocabularyPresets + && doc.value.get("origin").and_then(Value::as_str) == Some(origin) + }) + .map(|(index, _)| index) + .collect(); + indices.sort_by(|left, right| { + let left = &set.documents[*left]; + let right = &set.documents[*right]; + ( + left.value.get("order").and_then(Value::as_u64).unwrap_or(0), + &left.id, + ) + .cmp(&( + right + .value + .get("order") + .and_then(Value::as_u64) + .unwrap_or(0), + &right.id, + )) + }); + for (order, index) in indices.into_iter().enumerate() { + set.documents[index] + .value + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .insert("order".into(), Value::from(order)); + } + } + Ok(()) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto.rs new file mode 100644 index 000000000..2eac760a5 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto.rs @@ -0,0 +1,393 @@ +//! v1 cryptography uses RustCrypto primitives, never a custom cipher/KDF. +//! Argon2 is CPU/memory intensive: callers must run derivation off UI/async workers. + +use super::{types::*, Error, Result}; +use argon2::{Algorithm, Argon2, Block, Params, Version}; +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; +use chacha20poly1305::{ + aead::{AeadInPlace, KeyInit}, + XChaCha20Poly1305, XNonce, +}; +use std::fmt; +use unicode_normalization::UnicodeNormalization; +use zeroize::Zeroizing; + +pub(crate) struct NormalizedPassword(Zeroizing); +impl fmt::Debug for NormalizedPassword { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("NormalizedPassword([REDACTED])") + } +} +impl NormalizedPassword { + /// NFC only: neither trim nor case-fold changes the password sent to the KDF. + pub(crate) fn new(input: SecretInput) -> Result { + // Bound work before Unicode normalization, then check the normative NFC limit. + if input.expose().len() > 4096 { + return Err(Error::WeakPassword); + } + let mut text = Zeroizing::new(String::with_capacity(512)); + let mut count = 0; + for character in input.expose().nfc() { + count += 1; + if count > 128 || text.len() + character.len_utf8() > 512 { + return Err(Error::WeakPassword); + } + text.push(character); + } + if !(12..=128).contains(&count) + || !text.bytes().any(|c| c.is_ascii_lowercase()) + || !text.bytes().any(|c| c.is_ascii_uppercase()) + || !text.bytes().any(|c| c.is_ascii_digit()) + { + return Err(Error::WeakPassword); + } + Ok(Self(text)) + } + /// Apply local password policy v1 only when creating/changing a password. + /// Unlock remains compatible if a later release expands the weak-password list. + pub(crate) fn validate_new(&self) -> Result<()> { + let lower = Zeroizing::new(self.0.to_ascii_lowercase()); + let signature = Zeroizing::new( + lower + .chars() + .filter(|c| c.is_ascii_alphanumeric()) + .collect::(), + ); + let weak = [ + "password", + "qwerty", + "12345678", + "abcdefgh", + "abcdefg", + "letmein", + "welcome", + "administrator", + ]; + if weak.iter().any(|word| signature.contains(word)) { + return Err(Error::WeakPassword); + } + let mapped = Zeroizing::new( + lower + .chars() + .map(|c| match c { + '@' | '4' => 'a', + '0' => 'o', + '$' | '5' => 's', + '3' => 'e', + _ => c, + }) + .collect::(), + ); + if mapped.contains("password") || mapped.contains("qwerty") { + return Err(Error::WeakPassword); + } + let chars = Zeroizing::new(lower.chars().collect::>()); + let unique = chars + .iter() + .enumerate() + .filter(|(i, c)| !chars[..*i].contains(c)) + .count(); + if unique < 4 + || (1..=8.min(chars.len() / 3)).any(|period| { + chars + .iter() + .enumerate() + .all(|(i, c)| *c == chars[i % period]) + }) + { + return Err(Error::WeakPassword); + } + Ok(()) + } + pub(crate) fn confirmed_new(input: SecretInput, confirmation: SecretInput) -> Result { + let password = Self::new(input)?; + let confirmation = Self::new(confirmation)?; + if password.0.as_bytes() != confirmation.0.as_bytes() { + return Err(Error::PasswordConfirmationMismatch); + } + password.validate_new()?; + Ok(password) + } +} + +/// Not serializable or implicitly cloneable. Secure-store/journal callers must bind +/// exported bytes to service origin + GitHub ID + vault ID + key ID themselves. +pub(crate) struct DerivedKey(Zeroizing<[u8; 32]>); +impl DerivedKey { + pub(crate) fn from_secret_bytes(bytes: Zeroizing<[u8; 32]>) -> Self { + Self(bytes) + } + pub(crate) fn expose_bytes(&self) -> &[u8; 32] { + &self.0 + } + pub(crate) fn copy_secret_bytes(&self) -> Zeroizing<[u8; 32]> { + Zeroizing::new(*self.0) + } +} +impl fmt::Debug for DerivedKey { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("DerivedKey([REDACTED])") + } +} + +pub(crate) fn derive_key(password: &NormalizedPassword, kdf: &Kdf) -> Result { + kdf.validate()?; + let params = Params::new(65_536, 3, 4, Some(32)).map_err(|_| Error::UnsupportedProtocol)?; + let argon = Argon2::new(Algorithm::Argon2id, Version::V0x13, params); + let mut key = Zeroizing::new([0; 32]); + // The caller-owned Argon2 working memory is also wiped on all exits. + let mut memory = Zeroizing::new(vec![Block::default(); 65_536]); + argon + .hash_password_into_with_memory( + password.0.as_bytes(), + kdf.salt.bytes(), + key.as_mut(), + &mut memory[..], + ) + .map_err(|_| Error::InvalidPasswordOrCiphertext)?; + Ok(DerivedKey(key)) +} + +#[derive(Clone, Debug)] +pub(crate) struct EncryptContext { + pub(crate) owner_github_id: GithubId, + pub(crate) vault_id: UuidV4, + pub(crate) key_id: UuidV4, + pub(crate) base_revision: Revision, + pub(crate) operation_id: UuidV4, + pub(crate) kind: UploadKind, + pub(crate) kdf: Kdf, +} +impl EncryptContext { + pub(crate) fn validate(&self) -> Result<()> { + self.kdf.validate()?; + self.base_revision.checked_next().map(|_| ()) + } + fn header(&self, nonce: Nonce) -> Result { + self.validate()?; + Ok(SnapshotUpload { + protocol_version: PROTOCOL_VERSION, + payload_schema_version: 1, + owner_github_id: self.owner_github_id.clone(), + vault_id: self.vault_id.clone(), + key_id: self.key_id.clone(), + base_revision: self.base_revision, + revision: self.base_revision.checked_next()?, + operation_id: self.operation_id.clone(), + kind: self.kind, + crypto_profile: CRYPTO_PROFILE.into(), + kdf: self.kdf.clone(), + aead: AEAD_NAME.into(), + codec: CODEC_NAME.into(), + nonce, + ciphertext: String::new(), + ciphertext_sha256: Sha256Digest::of(&[]), + }) + } +} + +/// Explicit ordered JSON array, independent of object/map serialization order. +pub(crate) fn aad(snapshot: &SnapshotUpload) -> Result> { + snapshot.kdf.validate()?; + if snapshot.protocol_version != PROTOCOL_VERSION + || snapshot.payload_schema_version != 1 + || snapshot.crypto_profile != CRYPTO_PROFILE + || snapshot.aead != AEAD_NAME + || snapshot.codec != CODEC_NAME + { + return Err(Error::UnsupportedProtocol); + } + let fields = serde_json::json!([ + "openless-cloud-sync", + 1, + "snapshot", + snapshot.owner_github_id.as_str(), + snapshot.vault_id.as_str(), + snapshot.key_id.as_str(), + snapshot.base_revision.as_str(), + snapshot.revision.as_str(), + snapshot.operation_id.as_str(), + snapshot.kind.as_str(), + 1, + CRYPTO_PROFILE, + "argon2id", + 19, + 65536, + 3, + 4, + snapshot.kdf.salt.encoded(), + AEAD_NAME, + CODEC_NAME + ]); + serde_json::to_vec(&fields).map_err(|_| Error::InvalidWire("aad")) +} + +fn padded_length(json_len: usize) -> Result { + if json_len == 0 || json_len > MAX_PLAINTEXT_JSON_BYTES { + return Err(Error::PayloadTooLarge); + } + let len = (json_len + 4).div_ceil(PAD_BLOCK_BYTES) * PAD_BLOCK_BYTES; + if len > MAX_PADDED_BYTES { + return Err(Error::PayloadTooLarge); + } + Ok(len) +} + +pub(crate) fn encrypt_snapshot( + documents: &DocumentSet, + context: &EncryptContext, + key: &DerivedKey, +) -> Result { + let json = documents.to_secret_json()?; + context.validate()?; + let nonce = Nonce::random()?; + let length = padded_length(json.len())?; + let mut plaintext = Zeroizing::new(Vec::with_capacity(length + 16)); + plaintext.resize(length, 0); + plaintext[..4].copy_from_slice(&(json.len() as u32).to_be_bytes()); + plaintext[4..4 + json.len()].copy_from_slice(&json); + getrandom::fill(&mut plaintext[4 + json.len()..]).map_err(|_| Error::RandomUnavailable)?; + seal_frame(context, key, nonce, plaintext) +} + +fn seal_frame( + context: &EncryptContext, + key: &DerivedKey, + nonce: Nonce, + mut frame: Zeroizing>, +) -> Result { + let mut snapshot = context.header(nonce)?; + let cipher = XChaCha20Poly1305::new(key.expose_bytes().into()); + let associated = aad(&snapshot)?; + cipher + .encrypt_in_place( + XNonce::from_slice(snapshot.nonce.bytes()), + &associated, + &mut *frame, + ) + .map_err(|_| Error::InvalidPasswordOrCiphertext)?; + snapshot.ciphertext_sha256 = Sha256Digest::of(&frame); + snapshot.ciphertext = URL_SAFE_NO_PAD.encode(&frame); + snapshot.validate()?; + Ok(snapshot) +} + +/// The authenticated account and the exact metadata read are mandatory, not an +/// optional caller check. Authentication is verified before parsing any plaintext. +pub(crate) fn decrypt_snapshot( + snapshot: &SnapshotUpload, + metadata: &VaultMetadata, + owner: &GithubId, + key: &DerivedKey, +) -> Result { + snapshot.validate_against_metadata(metadata, owner)?; + let mut frame = Zeroizing::new(snapshot.decoded_ciphertext()?); + let cipher = XChaCha20Poly1305::new(key.expose_bytes().into()); + cipher + .decrypt_in_place( + XNonce::from_slice(snapshot.nonce.bytes()), + &aad(snapshot)?, + &mut *frame, + ) + .map_err(|_| Error::InvalidPasswordOrCiphertext)?; + decode_frame(&frame) +} + +pub(crate) fn decrypt_snapshot_with_password( + snapshot: &SnapshotUpload, + metadata: &VaultMetadata, + owner: &GithubId, + password: SecretInput, +) -> Result<(DerivedKey, DocumentSet)> { + // Validate fixed KDF parameters, ciphertext bounds/hash and identity before + // allocating Argon2's 64 MiB memory, even when a server supplied this header. + snapshot.validate_against_metadata(metadata, owner)?; + let password = NormalizedPassword::new(password)?; + let key = derive_key(&password, &snapshot.kdf)?; + let documents = decrypt_snapshot(snapshot, metadata, owner, &key)?; + Ok((key, documents)) +} + +fn decode_frame(frame: &[u8]) -> Result { + if frame.len() < PAD_BLOCK_BYTES + || frame.len() > MAX_PADDED_BYTES + || !frame.len().is_multiple_of(PAD_BLOCK_BYTES) + { + return Err(Error::InvalidPasswordOrCiphertext); + } + let count = u32::from_be_bytes( + frame[..4] + .try_into() + .map_err(|_| Error::InvalidPasswordOrCiphertext)?, + ) as usize; + if count > MAX_PLAINTEXT_JSON_BYTES + || count == 0 + || count > frame.len() - 4 + || padded_length(count)? != frame.len() + { + return Err(Error::InvalidPasswordOrCiphertext); + } + DocumentSet::from_json_bytes(&frame[4..4 + count]) +} + +// Two independently bounded 15 MiB snapshots plus transaction metadata fit here; +// this local-only ceiling never changes the remote v1 15 MiB JSON limit. +pub(crate) const MAX_LOCAL_PLAINTEXT_BYTES: usize = 40 * 1024 * 1024; +const LOCAL_ENVELOPE_MAGIC: &[u8] = b"OL-E2EE-JOURNAL\x01"; + +fn local_aad(scope: &[u8]) -> Result>> { + if scope.is_empty() || scope.len() > CONTROL_BODY_LIMIT { + return Err(Error::InvalidWire("local journal scope")); + } + let mut bytes = Zeroizing::new(Vec::with_capacity(64 + scope.len())); + // Separate domain: a network snapshot can never authenticate as a journal. + bytes.extend_from_slice(b"openless-cloud-sync\0local-journal\0v1\0"); + bytes.extend_from_slice(&(scope.len() as u32).to_be_bytes()); + bytes.extend_from_slice(scope); + Ok(bytes) +} + +/// Local-only journal encryption. The caller supplies canonical scope bytes +/// including service origin, owner, vault/key IDs and operation identity. +/// No journal bytes may be submitted through the snapshot HTTP API. +pub(crate) fn seal_local(key: &DerivedKey, scope_aad: &[u8], plaintext: &[u8]) -> Result> { + if plaintext.len() > MAX_LOCAL_PLAINTEXT_BYTES { + return Err(Error::PayloadTooLarge); + } + let associated = local_aad(scope_aad)?; + let nonce = Nonce::random()?; + let mut buffer = Zeroizing::new(Vec::with_capacity(plaintext.len() + 16)); + buffer.extend_from_slice(plaintext); + XChaCha20Poly1305::new(key.expose_bytes().into()) + .encrypt_in_place(XNonce::from_slice(nonce.bytes()), &associated, &mut *buffer) + .map_err(|_| Error::InvalidPasswordOrCiphertext)?; + let mut envelope = Vec::with_capacity(LOCAL_ENVELOPE_MAGIC.len() + 24 + buffer.len()); + envelope.extend_from_slice(LOCAL_ENVELOPE_MAGIC); + envelope.extend_from_slice(nonce.bytes()); + envelope.extend_from_slice(&buffer); + Ok(envelope) +} + +pub(crate) fn open_local( + key: &DerivedKey, + scope_aad: &[u8], + envelope: &[u8], +) -> Result>> { + let prefix = LOCAL_ENVELOPE_MAGIC.len() + 24; + if envelope.len() < prefix + 16 + || envelope.len() > prefix + 16 + MAX_LOCAL_PLAINTEXT_BYTES + || !envelope.starts_with(LOCAL_ENVELOPE_MAGIC) + { + return Err(Error::InvalidPasswordOrCiphertext); + } + let associated = local_aad(scope_aad)?; + let nonce = &envelope[LOCAL_ENVELOPE_MAGIC.len()..prefix]; + let mut buffer = Zeroizing::new(envelope[prefix..].to_vec()); + XChaCha20Poly1305::new(key.expose_bytes().into()) + .decrypt_in_place(XNonce::from_slice(nonce), &associated, &mut *buffer) + .map_err(|_| Error::InvalidPasswordOrCiphertext)?; + Ok(buffer) +} + +#[cfg(test)] +mod tests; diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto/tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto/tests.rs new file mode 100644 index 000000000..1cb43fc50 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/crypto/tests.rs @@ -0,0 +1,341 @@ +use super::*; +use serde_json::Value; + +fn vectors() -> Vec { + serde_json::from_str::(include_str!("../fixtures/v1.json")).unwrap()["vectors"] + .as_array() + .unwrap() + .clone() +} +fn unhex(s: &str) -> Vec { + (0..s.len()) + .step_by(2) + .map(|n| u8::from_str_radix(&s[n..n + 2], 16).unwrap()) + .collect() +} +fn metadata(s: &SnapshotUpload) -> VaultMetadata { + VaultMetadata { + protocol_version: 1, + state: VaultState::Active, + owner_github_id: s.owner_github_id.clone(), + revision: s.revision, + vault_id: Some(s.vault_id.clone()), + key_id: Some(s.key_id.clone()), + updated_at: Some("2026-09-23T00:00:00Z".into()), + payload_schema_version: Some(1), + ciphertext_bytes: s.decoded_ciphertext().unwrap().len() as u64, + ciphertext_sha256: Some(s.ciphertext_sha256.clone()), + last_operation_id: Some(s.operation_id.clone()), + } +} +fn context(s: &SnapshotUpload) -> EncryptContext { + EncryptContext { + owner_github_id: s.owner_github_id.clone(), + vault_id: s.vault_id.clone(), + key_id: s.key_id.clone(), + base_revision: s.base_revision, + operation_id: s.operation_id.clone(), + kind: s.kind, + kdf: s.kdf.clone(), + } +} +fn test_key(v: &Value) -> DerivedKey { + DerivedKey::from_secret_bytes(Zeroizing::new( + unhex(v["derivedKeyHex"].as_str().unwrap()) + .try_into() + .unwrap(), + )) +} + +#[test] +fn independent_reference_argon2_libsodium_vectors_match_every_byte() { + for vector in vectors() { + let snapshot: SnapshotUpload = serde_json::from_value(vector["snapshot"].clone()).unwrap(); + snapshot.validate().unwrap(); + let password = NormalizedPassword::new(SecretInput::new( + vector["passwordInput"].as_str().unwrap().to_owned(), + )) + .unwrap(); + password.validate_new().unwrap(); + assert_eq!( + password.0.as_bytes(), + unhex(vector["passwordUtf8Hex"].as_str().unwrap()) + ); + let key = derive_key(&password, &snapshot.kdf).unwrap(); + assert_eq!( + key.expose_bytes().as_slice(), + unhex(vector["derivedKeyHex"].as_str().unwrap()) + ); + assert_eq!( + aad(&snapshot).unwrap(), + unhex(vector["aadUtf8Hex"].as_str().unwrap()) + ); + let json = unhex(vector["plaintextJsonUtf8Hex"].as_str().unwrap()); + let mut frame = Zeroizing::new(Vec::with_capacity(PAD_BLOCK_BYTES + 16)); + frame.extend_from_slice(&(json.len() as u32).to_be_bytes()); + frame.extend_from_slice(&json); + let padding_len = PAD_BLOCK_BYTES - frame.len(); + let padding = (0..padding_len) + .map(|i| (i % 251) as u8) + .collect::>(); + assert_eq!( + padding_len as u64, + vector["padding"]["length"].as_u64().unwrap() + ); + assert_eq!( + Sha256Digest::of(&padding).as_hex(), + vector["padding"]["sha256"].as_str().unwrap() + ); + frame.extend_from_slice(&padding); + let encrypted = + seal_frame(&context(&snapshot), &key, snapshot.nonce.clone(), frame).unwrap(); + assert_eq!(encrypted.ciphertext, snapshot.ciphertext); + assert_eq!(encrypted.ciphertext_sha256, snapshot.ciphertext_sha256); + let recovered = decrypt_snapshot( + &snapshot, + &metadata(&snapshot), + &snapshot.owner_github_id, + &key, + ) + .unwrap(); + assert_eq!( + serde_json::to_value(&recovered).unwrap(), + vector["recoveredJson"] + ); + } +} + +#[test] +fn nfc_confirmation_preserves_spaces_and_applies_local_weak_password_policy() { + assert!(NormalizedPassword::confirmed_new( + SecretInput::new("云同步Cafe\u{301}-Vector2026!".into()), + SecretInput::new("云同步Café-Vector2026!".into()) + ) + .is_ok()); + assert!(NormalizedPassword::confirmed_new( + SecretInput::new(" Good-PasswordA9! ".into()), + SecretInput::new("Good-PasswordA9!".into()) + ) + .is_err()); + for input in [ + "12345678", + "Password123", + "Password1234", + "Abc123456789", + "Qwerty123456", + "Aa1Aa1Aa1Aa1", + "P@ssw0rd12345", + ] { + assert!( + NormalizedPassword::new(SecretInput::new(input.into())) + .and_then(|v| v.validate_new()) + .is_err(), + "weak password was accepted" + ); + } + assert!(NormalizedPassword::new(SecretInput::new(format!("Ab1{}", "中".repeat(126)))).is_err()); +} + +#[test] +fn identity_revision_kdf_and_aead_tampering_are_rejected() { + let vector = &vectors()[0]; + let snapshot: SnapshotUpload = serde_json::from_value(vector["snapshot"].clone()).unwrap(); + let meta = metadata(&snapshot); + let key = test_key(vector); + let mut bad = snapshot.clone(); + bad.owner_github_id = GithubId::parse("54321").unwrap(); + assert!(matches!( + decrypt_snapshot(&bad, &meta, &snapshot.owner_github_id, &key), + Err(Error::AccountMismatch) + )); + let mut bad = snapshot.clone(); + bad.revision = Revision::new(1); + assert!(decrypt_snapshot(&bad, &meta, &snapshot.owner_github_id, &key).is_err()); + let mut bad = snapshot.clone(); + bad.key_id = UuidV4::random().unwrap(); + assert!(matches!( + decrypt_snapshot(&bad, &meta, &snapshot.owner_github_id, &key), + Err(Error::ContextMismatch) + )); + let mut bad = snapshot.clone(); + bad.kdf.memory_kib = 8; + assert!(derive_key( + &NormalizedPassword::new(SecretInput::new("Str0ng-Other-Phrase!".into())).unwrap(), + &bad.kdf + ) + .is_err()); + let mut bad = snapshot.clone(); + bad.nonce = Nonce::new([0; 24]); + assert!(matches!( + decrypt_snapshot(&bad, &meta, &snapshot.owner_github_id, &key), + Err(Error::InvalidPasswordOrCiphertext) + )); + let wrong = DerivedKey::from_secret_bytes(Zeroizing::new([0; 32])); + assert!(matches!( + decrypt_snapshot(&snapshot, &meta, &snapshot.owner_github_id, &wrong), + Err(Error::InvalidPasswordOrCiphertext) + )); + let mut changed = snapshot.decoded_ciphertext().unwrap(); + changed[42] ^= 1; + let mut bad = snapshot.clone(); + bad.ciphertext = URL_SAFE_NO_PAD.encode(&changed); + bad.ciphertext_sha256 = Sha256Digest::of(&changed); + let mut malicious_meta = meta.clone(); + malicious_meta.ciphertext_sha256 = Some(bad.ciphertext_sha256.clone()); + assert!(matches!( + decrypt_snapshot(&bad, &malicious_meta, &snapshot.owner_github_id, &key), + Err(Error::InvalidPasswordOrCiphertext) + )); + changed.truncate(changed.len() - 1); + bad.ciphertext = URL_SAFE_NO_PAD.encode(changed); + assert!(bad.validate().is_err()); +} + +#[test] +fn new_encryption_uses_distinct_random_nonce_and_padding() { + let vector = &vectors()[0]; + let snapshot: SnapshotUpload = serde_json::from_value(vector["snapshot"].clone()).unwrap(); + let key = test_key(vector); + let docs = + DocumentSet::from_json_bytes(&unhex(vector["plaintextJsonUtf8Hex"].as_str().unwrap())) + .unwrap(); + let a = encrypt_snapshot(&docs, &context(&snapshot), &key).unwrap(); + let b = encrypt_snapshot(&docs, &context(&snapshot), &key).unwrap(); + assert_ne!(a.nonce, b.nonce); + assert_ne!(a.ciphertext, b.ciphertext); + assert_eq!(a.decoded_ciphertext().unwrap().len(), 65_552); + assert!(decrypt_snapshot(&a, &metadata(&a), &a.owner_github_id, &key).is_ok()); +} + +#[test] +fn malformed_padding_and_oversized_json_fail_without_truncation() { + assert_eq!( + padded_length(MAX_PLAINTEXT_JSON_BYTES).unwrap(), + MAX_PLAINTEXT_JSON_BYTES + PAD_BLOCK_BYTES + ); + assert!(padded_length(MAX_PLAINTEXT_JSON_BYTES + 1).is_err()); + for declared in [0u32, u32::MAX, PAD_BLOCK_BYTES as u32] { + let mut frame = vec![0; PAD_BLOCK_BYTES]; + frame[..4].copy_from_slice(&declared.to_be_bytes()); + assert!(decode_frame(&frame).is_err()); + } + assert!(decode_frame(&vec![0; PAD_BLOCK_BYTES - 1]).is_err()); + assert!(!format!( + "{:?}", + DerivedKey::from_secret_bytes(Zeroizing::new([42; 32])) + ) + .contains("42")); +} + +#[test] +fn rfc9106_section_5_3_official_argon2id_vector() { + // Independent published KAT for the primitive, not an alternative wire profile. + let params = argon2::ParamsBuilder::new() + .m_cost(32) + .t_cost(3) + .p_cost(4) + .output_len(32) + .data(argon2::AssociatedData::new(&[4; 12]).unwrap()) + .build() + .unwrap(); + let argon = + Argon2::new_with_secret(&[3; 8], Algorithm::Argon2id, Version::V0x13, params).unwrap(); + let mut out = [0; 32]; + argon + .hash_password_into(&[1; 32], &[2; 16], &mut out) + .unwrap(); + assert_eq!( + out.as_slice(), + unhex("0d640df58d78766c08c037a34a8b53c9d01ef0452d75b65eb52520e96b01e659") + ); +} + +#[test] +fn local_journal_has_independent_scope_and_local_size_limit() { + let key = DerivedKey::from_secret_bytes(Zeroizing::new([7; 32])); + let scope = br#"["https://sync.example","123","vault","key","operation"]"#; + let plain = vec![b'x'; MAX_LOCAL_PLAINTEXT_BYTES]; + let envelope = seal_local(&key, scope, &plain).unwrap(); + assert_eq!( + open_local(&key, scope, &envelope).unwrap().as_slice(), + plain.as_slice() + ); + assert!(open_local(&key, b"different scope", &envelope).is_err()); + let mut corrupt = envelope; + corrupt[LOCAL_ENVELOPE_MAGIC.len() + 24 + 3] ^= 1; + assert!(open_local(&key, scope, &corrupt).is_err()); + assert!(seal_local(&key, scope, &vec![0; MAX_LOCAL_PLAINTEXT_BYTES + 1]).is_err()); + assert!(open_local(&key, scope, b"invalid").is_err()); +} + +#[test] +fn maximum_remote_json_roundtrips_with_bounded_pad64k_frame() { + let vector = &vectors()[0]; + let snapshot: SnapshotUpload = serde_json::from_value(vector["snapshot"].clone()).unwrap(); + let key = test_key(vector); + let mut docs = + DocumentSet::from_json_bytes(&unhex(vector["plaintextJsonUtf8Hex"].as_str().unwrap())) + .unwrap(); + docs.documents[0].value = Value::String(String::new()); + let overhead = docs.to_secret_json().unwrap().len(); + docs.documents[0].value = Value::String("x".repeat(MAX_PLAINTEXT_JSON_BYTES - overhead)); + assert_eq!( + docs.to_secret_json().unwrap().len(), + MAX_PLAINTEXT_JSON_BYTES + ); + let encrypted = encrypt_snapshot(&docs, &context(&snapshot), &key).unwrap(); + assert_eq!( + encrypted.decoded_ciphertext().unwrap().len(), + MAX_PLAINTEXT_JSON_BYTES + PAD_BLOCK_BYTES + 16 + ); + let recovered = decrypt_snapshot( + &encrypted, + &metadata(&encrypted), + &encrypted.owner_github_id, + &key, + ) + .unwrap(); + assert_eq!(recovered, docs); +} + +#[test] +fn wrong_nonce_length_and_permuted_aad_never_authenticate() { + let vector = &vectors()[0]; + let mut wire = vector["snapshot"].clone(); + wire["nonce"] = Value::String("AAECAwQFBgcICQoLDA0ODxAREhMUFRY".into()); + assert!(serde_json::from_value::(wire).is_err()); + + let mut snapshot: SnapshotUpload = serde_json::from_value(vector["snapshot"].clone()).unwrap(); + let key = test_key(vector); + let cipher = XChaCha20Poly1305::new(key.expose_bytes().into()); + let nonce = snapshot.nonce.clone(); + let mut frame = Zeroizing::new(snapshot.decoded_ciphertext().unwrap()); + cipher + .decrypt_in_place( + XNonce::from_slice(nonce.bytes()), + &aad(&snapshot).unwrap(), + &mut *frame, + ) + .unwrap(); + let mut reordered: Value = serde_json::from_slice(&aad(&snapshot).unwrap()).unwrap(); + reordered.as_array_mut().unwrap().swap(3, 4); + // Public deterministic fixture only; production never accepts injected nonces. + cipher + .encrypt_in_place( + XNonce::from_slice(nonce.bytes()), + &serde_json::to_vec(&reordered).unwrap(), + &mut *frame, + ) + .unwrap(); + snapshot.ciphertext = URL_SAFE_NO_PAD.encode(&frame); + snapshot.ciphertext_sha256 = Sha256Digest::of(&frame); + assert!(matches!( + decrypt_snapshot( + &snapshot, + &metadata(&snapshot), + &snapshot.owner_github_id, + &key + ), + Err(Error::InvalidPasswordOrCiphertext) + )); +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/fixtures/v1.json b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/fixtures/v1.json new file mode 100644 index 000000000..4c6e42d9c --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/fixtures/v1.json @@ -0,0 +1,129 @@ +{ + "formatVersion": 1, + "vectors": [ + { + "name": "unicode-0", + "testOnly": true, + "passwordInput": "云同步Café-Vector2026!", + "passwordNfc": "云同步Café-Vector2026!", + "passwordUtf8Hex": "e4ba91e5908ce6ada5436166c3a92d566563746f723230323621", + "derivedKeyHex": "c96ca4c352b1f4812e6e79f31a0b47ad10de613cf9a31bfc54c0d31a2fd32c4a", + "aadUtf8Hex": "5b226f70656e6c6573732d636c6f75642d73796e63222c312c22736e617073686f74222c223132333435222c2262653430366361352d333766612d346232362d396139612d373463316161643438656165222c2237323530643162642d356133652d343262302d393164632d646630636230363038323231222c2239303037313939323534373430393932222c2239303037313939323534373430393933222c2265316438633332652d643230392d346535362d383733352d626336366238363834633731222c22736e617073686f74222c312c226172676f6e3269642d786368616368613230706f6c79313330352d7631222c226172676f6e326964222c31392c36353533362c332c342c2241414543417751464267634943516f4c4441304f4477222c22786368616368613230706f6c79313330352d69657466222c226a736f6e2d70616436346b2d7631225d", + "plaintextJsonUtf8Hex": "7b22736368656d6156657273696f6e223a312c226578706f727465644174223a22323032362d30392d32335430303a30303a30305a222c22736f75726365446576696365223a7b226964223a22666978747572652d646576696365222c226f73223a2274657374222c2261726368223a2274657374222c2261707056657273696f6e223a22302e312e30227d2c22646f63756d656e7473223a5b7b226964223a226d61696e222c226b696e64223a22707265666572656e636573222c22736368656d6156657273696f6e223a312c2276616c7565223a7b226c616e6775616765223a227a682d434e222c227465737454657874223a22e4ba91e5908ce6ada520636166c3a9227d7d5d2c22746f6d6273746f6e6573223a5b5d7d", + "recoveredJson": { + "schemaVersion": 1, + "exportedAt": "2026-09-23T00:00:00Z", + "sourceDevice": { + "id": "fixture-device", + "os": "test", + "arch": "test", + "appVersion": "0.1.0" + }, + "documents": [ + { + "id": "main", + "kind": "preferences", + "schemaVersion": 1, + "value": { + "language": "zh-CN", + "testText": "云同步 café" + } + } + ], + "tombstones": [] + }, + "padding": { + "pattern": "index-mod-251", + "length": 65250, + "sha256": "736a3902822ea691871b34455e9081075270deca4ce13a7c4da362121c02353c" + }, + "snapshot": { + "protocolVersion": 1, + "payloadSchemaVersion": 1, + "ownerGithubId": "12345", + "vaultId": "be406ca5-37fa-4b26-9a9a-74c1aad48eae", + "keyId": "7250d1bd-5a3e-42b0-91dc-df0cb0608221", + "baseRevision": "9007199254740992", + "revision": "9007199254740993", + "operationId": "e1d8c32e-d209-4e56-8735-bc66b8684c71", + "kind": "snapshot", + "cryptoProfile": "argon2id-xchacha20poly1305-v1", + "kdf": { + "name": "argon2id", + "version": 19, + "memoryKiB": 65536, + "iterations": 3, + "parallelism": 4, + "salt": "AAECAwQFBgcICQoLDA0ODw" + }, + "aead": "xchacha20poly1305-ietf", + "codec": "json-pad64k-v1", + "nonce": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYX", + "ciphertext": "WbAldhT2zzHbU8rtTov5M52mleQHMWHypydZqCFdplXlHlubHmYZiH_1DSntJ5WwicmswO7X48Tdro39WS92_nwxZDTo6_ghp8fIdDT05UTYTrMN_RRgXUBX9pBtLuqfo7p3bn1eo1KrQtNbuu-V0r7ba7mp_fjbgC9A3LBsVNQEBB5W3LtBqqFk2LaRyzDwZY3j0ne5LJ7q0QvhGgY21hzGqcGFvwSD7EVDVo25Rsy5FPFcpSJkL1ZnIat4L9h0vf_eY1iTeLVoG1d2VTaEVU1wasJfR2K0f_uS3KYl1oaBSJPLPTESglHFyzhVwhyrE6hxQlx42s-Afyfpk2hEBJnfB3APLM5pqO1jy5RLgZkoY3tPhWKSD7bgmMlfmQPzOTV8xQ1KqUCceILN65WM116USeLd3Vau6V6OpwWSA67D0k-pv26dNizI2TMu4zP7NW-g2W_N0wI2fwHvArFOMLaXpBE4uJreNT3WFf95bPpxjxSMjBXUrKPSoVHUgXbb2p3udZn51Wc_iouWJBJoEPzpyFTCxXVVuycLSL_-Owl0HBRR3r-BU9MjoHviO-vMx9NoxxlMd9-hDMITG3zqUjyIT6RxtRfH-1clMZDcEm0SDaeAdvXRvQFxxV4zX22HQJxVbSvP-Z1CS1IqoMvor-vJJ36fMrsHHuGxLyzyXwlxYW4lUSgmjv3UOZX_k9-TgjLQPq6Y4Pc81IYydtgwHSIdZQ7AAb5MxoR3xtVgM7cq8xWN97adNca2cGGWNJjvtJfk6hCe3GwUijvEJPKmubYRkqXeeihmS1tB55GkyegjlZlA9hsC8fXXRd9wuURc7qmao8cGrK9syInTSP8ozFSNvom6td5aJpLm-4n5567auDuVlfVXszgszjdDekEqwdXVkD0rlGXrTpAMRm0-RNUvHOaR-PiUVXPdDXp1hmaCJb5HHAUD0jIvwkJfwGloymNhBYJ9988rz8P9ainCPD8R31ZVoTjHDyzyBRKGC3Tyv5SJwCs78wQbz6KmLam4kKUbaMOLj0fxrhP_ZPajI5h_7JUmB-0jTpAE8ti38pLxPhFwlmEi94mbkH0V0PvYKa-d32nG7jBTZEjUURYSe-dPXx1jqmCHjqi7VgwrBTtnhQC3UumgMnOci8hmXcI4T6Bq-dpGuu4IcjGDq8Jwy3VjL70a2fslGQdnJ5_kbcrxy3KtEoODRW9iveyAaA2tZFMXlJxAoEG1Pa_657gj7-iEWsVz-rEU7M2UcAAibGJtkz9tsPAbHCinOoRqRg8lX-ndbOhCRmlxPOS8U97LGAiZw1htts-4cPXPuR3BKcILAtGrj6v8-DraMl54lVjz-6aWjkGHRfY0t2dlqG9jLFS1nJ_xwiX5aRxTxabOZU0_Wch0UPCjLAKa3q42sBTjTAS_zRC-4Q2eokKoRo8FpAAoKgv-476emu4ysHqnRJrd0pIUMgBrhKhgqjl0s89n47ccGJnES6ih9iKfqffmml7WJ28v8lrTnXMK4AiOluONMGnK0L-OHIV3FEt9x1IMH_WPGlydn6CqHNclDOWmr9a4NfMM6yeWzNXLFnYlkzidI9iyOFbhKHrT9rdxUihz1KzUxgxzprJspVrxA7sUk7dj7ytXYMuK-go7uuL7fviU_Py-vplAehvztKneajfnRJITUqr6BIvqrGJgZ050J1VzBuPoHgEFU247QbCSVF2zm6HT_u2Ebb81tD4fgvFV3pxRtbToIeQajbnmEVUYKHHq8BYetwX3O97_cLF2_uHNbooqS9cxEGdKi1nYuHOU_jlGWWEJ5SNzt3tvPI3jN2rNKJADPcblzsK8f6jy9ysOTgbGMYb4D2GM1QP5cyX-ye72umQqDAB30UpwNU5gDor1dMp-tybPiIIutszuleo8UhHVz3Em5GLdARmnEpxWo7NeN74pZ47lswUzDhWVy0bXOpHmeR-Q0YeIjb5StJioX-TnOgjhOkULEi95Tfw4zD__QMegdKhm4WNE_aQzefAMUMc49nn9UNGJmfIjm3P4aPq3hEvnjqvQa_YeKTsSqFiqpv5sIwFL1s98aPw0Qnr9VXSGGbSwzgQsBV8RR9yDPkOsI2Yc9ppoNt7LPEa_GVv947oTeeISWl4MbXaUaujSvQIudVJ7gIk4tovl5p2py4Z7fc_5KD-WuBS3tPkQxs2_H-U59KEUF_Vats8gdNKE6tvwLJ932erTj7qa1iDsIYoa-DTvs8-0xL4jt87AEC5lC1u1Fac5wicYvjnG3GJEIAv6Y1xgt781w4roIwXMNlYL4qvyM2dbQrZLVw_39K19FMPqWGbutv3uH_lPFYJMVN6_ma85SDt2OBtxcM9UnNQ_TF7KxfEGZGoo6eLo-fi35RWJcsqL9LQ4-TZZz3lzG8nurqOBpKbUmX9xu8L90oqQO4RqfODmT872mgJW98qjW6xNt3wdcSz7kk6viTFzw_WOESmpaKono_NL7hsPYfYnsbYo-R52q7kVNfsV2j2WVmmmCJAsS1RDDN2Z6rwLuLqxh9l9y_FfgOoczWWkp_ikDPP61hhjVXJVZ6wGHgHctcG-ai_gl7GQXxk-dWDb32quSzIB_uCOuBnG-Ap_6M_x7KMAE4B4Wx8DIiOrm5Zulb-W8ucVbFqVmSS4dGv2TblxjOK6FLk1-MnuI0AgIcegMXZ63MFRPvqSsYgNdsiIbNeSlyq7Rn_SdoerhkFOJiKzx6vPqsx_gJx3QcGgDgYMC39fuXhrrUphVu-5hB6FVyT14d-vDjIyHwq2zgZNHGtaMmwTxZJeRrbvO_hejh7TW2joeozpuDQlmBBseV4H4ICI7Ra2R9Hou8YrfLMZ6zmTQUeU3upxvCb1fggZAjwXX7biBsfhz-Ez5MZvdHm6O98tL7ZTDjZ_R-_IAGTLnyk22-I2UCexRc3ejpWVDjQkhy8UDFXoX2IcM8MOZ86X3szNVjyPhIBtXUQQVNPwpJ-QoZzoi3627XfDX7GA60U4RAdBGiL8aK2_gSGV30F-21vYTw3zIYGgR79M9xej3Qr4geLHx3c64Dr51arJebVpMviobCHUfO9OMgYOEX_QOTDIHAB1yB2QSFQaN6Z5O5VchRgZHqnqaMAs-OWo2qol9GbPR2hH3FlFL_fbTQAR6cL4dPNT1hqd6hLo12k7XlCoMqNHFaoASpNjGzwrXhcmYC-w0pdvtdmoShij39pp9C85DwLKURo4dpEnP89KKt4LxfhtePDv-5AFU4-EsCr0tTpHZXgscByYU1a5h1E-WitM6KIg_Dqxkidf3dpEY1fF5hjY81am8itK4P_FSWhGeeorFSeA4O__GK9l86GzbIMJd-iddV6Pc6jF2OUhwml3-OTm1irSeNxQYV1j1whF_LsmgdyIBxtx8XVHo1VO_5fuEk0h40uZA4fAQXY3Xe0xnYeZ6xOs9jRBLIICASRuAb0e4BYs2_c0djY3GYLaEj0lYlpELDdIDKfa4trR3EMInyQkMw2u7M7D1Zurd6FSMbdAyLHIAUv9LKl41JOh1-7Gkc772v12SM_BWogrIHHXOcqeHDm2m0Kl7h06cfO8axkk0eNvsOr48hYqzUbOzCOWF5InUNi9G9_YpOYiYl_lZsDWXyEK0GwbSK61EF9lycS5yr3dedMex9jvB1aKji8FgnZgSnZSqN5t8F9Q66adjNVWVa0-U6VU_z_IBLJT_LbY48o58YV25zUAOpUFAP27UtKtnCU70397UcjHtS3-x5BCU3koxzh3ZAapktf_3bNb8iOEmUSCCuV5j7S3DGDmuTzgFx3MUDGhclvZr4_JBiVgwZFHxD0IzdNMvzKnJzmZ5tmrXJZOObx7RMw5OV016eLcXNJ7uqNsxG8fjVBpWNiC82opwHOM1OPZUI-PG6XblKGPBFjEdO_d4f1my5olKPrGnPmHFL_t4aHTDyHwULTRNkK22-Y4PxNOyhdyqStFSi_iMYy7GI8ig7UsmBvp8PgEZig4WhX0mrPI5APXT_daiIwEk9XlpssI1SZNCBtqx7IctspZ9EqtfCEg7pM6Gve3njgx5teWoRAkOd-kczBmX-FQMbrBk5-MJ-WTTUNV8BqKIkqxioQ1tFEfgR7cKesdHk7ONU_If0sji3Dxyst8lfxBa8CFNPRzDTiNlYLT5iFhuJP_0otRoL4pjHFzCylX1DSb2zJ-bFCJtOmXA2pCdXyFQ6JxqbE5de6dnW02r_fjHf31sdleZcJVufhqGfzD5Px7SsOIkC2Gbp_-rsPi8FZOh6QFSbPtr01iFzVj2nGb7m5F6B4MFvkBky0V6nGoiURivPN4vEr2_G9CUK7ORfED3rBG9H2kv4_CMIDJD5NsOXdRwkW4CXXVuVwL8wSmCpHDVEEnVgbT7woi9yaijREvK7IMZENIYPVee0M1KczifTGZaRodpudq138HOtGP8Hb2ObhSyvNuOfBC26Oltd0W21Rf4fj-lQP0b56x6b3qvw7dobLqCDHa3TcgcJ1sUlmiCkpQTqfyr6Igpwqc3oRwTcgJO152XJlm-A6TW0AvbMts2hg8KKgpchUmrvWrDIWJTcRxoMz-m7zzPLLZty1euZNbffp4Wn4i8ZqsfLPhqDGK420wQ-n4aZEcW6woGpAq2FiVRzUn3QbUaeh9ykD900APu_xLG5dJdU074hN7K5bFGf_5zudznbfUjjRay0RNUgza75Qxt1OvFYzdBm-MclaXhvpAF1kyTRNAh6Vea_hU9G2z3S1zWylAMJBnQmBhsAMhjtdICZeae3nbW61ntvJiX-12AncrRm-JYG8E1_IuQMrICK0sugaQYzfiGxdgitU5M85hjSLkvDMVN23Z1EtNuSgZ479bGfA5x42QuJU2aMUaprLMOhNjaW2gWj5lImm9hI_Q6Tg7vF05CNk5cKVdhoNwEeXbEiPbWz_MoRz-6lnhElTxVJ6I0zb0nTillEMbDUlWWO-p_djISP8crmd0vTnxhMtYHtyIX_ZEOxPeEO3AhY1Bap1MwtUDqyYPVxlzUeshEo13xdVS4MCopGPoeR9wnSebW2cUu0oY8rhlJ1AyMC3fHC2G7yl49qzg4M-0hzi0jH89rVnarzjLXO6vkCBbK3EjZtPME7LzTMxrzUURz2m7rMw_jXMKaD5mIR_wpPBsCb8B5T_Zxbfbg7OTyLBDhLewn0Y0RtY7wO8TTIIiacdueArzNLOnY3MroZy6gzTdW01Iy8U75K_12xXxUa66HY6VHctlG8YFekfHwCf_i3lC1RkwqciLd2Z9-F3OEuaXrqzmcczvMUNTKABXhtXA40KyW3R70HRw_Prkam8iKF9jU-DwhGCxXUpuvMFsFbPG8ASVNQLfzX9nKasuBygE-PFy5LmlDmG-xDDLfeuEAib1R-xnwvPpAd0ZI1gZClH4qknynn_caKf5X4KrQPjEgu34BNZXBfcbVQsb8w5PA2lDgsi-OXI6ezZBsJ4P9tu8gxX3GIVlKKuva4QD-GbogNYxIgCk7nmaMIrvHKecvxS_ZZlJzHBONdUBTwi-AGA4ed8auWZbuZTAeMRx5yNm4FZIYgNcx-p8ZPtdZSGiu1tVypUiUZugN68ym-PolSHAZBOL_Ssp9LV2qWcYcV3M4Q4QV1zx_TJy782wqO6FQQQJyqQfWCKUhedSYRmXr0CtlTr6GYc1ijn1h5PlsWh_SzalhqkKTgRApIEJ_s6ghXIjzx-KmuHGIB7sxzV7y0KpQ8jqDtoPFnp5M5hzeZEO_7h8-LU7zNg-Q8tMiU85R0KnMWLJM65T5xWKykS7HZy7cjT-8rXnuWMj3s7wDl7HW1IqzquBK1vh2N632X0_nZP-XrL7iHc1H6-tmD5pKExH2oL1aMTeWVOvN8c7JdJmAYU7XLU0Zh843f11488NG8sgJysIhKcquJGwlmcHicEBtQfOuNU5I6bzZ-Q55aRm0g4ggjG32zDATrC4X3zABr3MBt4cKeFinanTWaorkh0Si3UCQKYrIBXmEeD6LEPhwuuLLsYfIs65YL9-bjCcuBrOBP_5ThemcC_ClHMQOeTTSiY-oKlrpdVx_kpXCHYKciOj-cGsgLe2tPhue8g7h_FQG7e-HlYpJOu0Ib457GE3p9uqG-GYY0jlsE4Jt6l35U9jpfGKfDE7bnPclYGrMr3s4HHCrD9yQg-CSjqlMmShb-uzry7iJDH04SXGxpps9E6_hNcqmCjV008Jj_vgW7iRaCercLezMjWKDIadDGgvyjhlfswhN86VFDxonIcIcBMXtnhGJ5i1TsAQm0FONqigUiBo92cp0afju98QCz7aQ7ZN9941JzON1LD_B0vklRWiK4RxstcdcXu9q3VIJmSTW_UMzfqiTADmiMmTormC1OvAVOaMKRpekXoagVr_Y21FkfAMB1no0mydDrW6oTMuZOfvJL_NWBNg_-XBekNNA8VKotei1Jpi8eJXA8MAF_gZyVPb7zaD-Fd44jUaQrZulmom_kYjP-Dt9Zsxa_YRFdvw_V2Uk8RiD5VrWpZxNn9t0ZYBnpB8m7JXGXgWEFLpSYrIXP_fBbDxF7q5TI_Cek4ljijVC7PfK0ocoOTHVoCcp5-ByKVo-g09zHcIhDnvmIO3PWL3Gcou-E6f5XinxzdLD1vYZA8b4yoz7E-R8CIsyjP2B_GJbSEXCJs14XBtBlzi3f4ILrDHgVDqVA84UTv0J2O8kSORi19Y0Y7yS0cxf8rwl_t-A1EdDH6gxUKZsk8q00ddadKoKLPW93AdpRMjVHFC_xM-L3XsDUsaCikY1beaOxbJ9B4Y5vv61-yBPee9g9pLuSV-sZdLDWlF4-1VsVk08DvUA4vaphAfN4WEOY-2QYPLjMXw-Keqh-dbma2-qnKpaBb1SDdf9W213osd_P12hehS6CSQB9GPUP0TqtMIdjG019Gfzm_WYOWrBk_E-twn9A46Ij_bz0ixpT8ujFxgKIdj1BslH-YophBeOWvUiVwMBtIB28MCq5nCKaEzkjSPKoxlBEoYGY9Gir-6C4r9kN1dwHRPTKIn_IPSSqdQqQuxodmHJA57_Os1jAai99LkbHk94iJrfSxa8MjXiaWpCv4v5B8PkqGqxkdiFlEFwqb6oyBS7x1IL4lmWjM2uViNlYf4kP13vaFiRsZsplAJImexWyj3Ohort0fnzOeBPq3We3kRctYG277mSrbqWp0Gav_sSJHLGqX4XTyC3BOao6MlgRdh3RLgcnMx6ITgw7QQhDgaywkvUeGR7CRcD1lWGqTW2c2gtLE10uUFjEYJNFQHcZQPSw2Bg5L_GYFTe0U8RJBXSNe6udyGJAXWLNfMwgelkZwNMn0bfy5azfCns9SHqzJ3-1HYF5R6tJHISi9ItT2UWRQ7eg-Ch-Cy67j89FdsvCRH5I1czMppOIvu5yW4VkrL0SiAgeYapODrsDVyVCQgDyQxUfNZuP82OZk9h4icfuhyCW6d-5OspEtiUrg6doVjNWeGCMbfMlYDUHbAfHFJPkyJLo-pmaSLk9VM7RzryH-Wc6RLThJDPlTa08BB3q3v67Rr29ZI03QsO-OzYlczjdh_slDJFAd8JydFtvLtbFdsY8Hxxsc1-tO0V4-YnLYT0MtYmnuxbIqtjjHDx53XsfkpRfEK79b2sB186oqmGYaBZoCJyg3Z51ADwb7PyT-gza_3m8319vhbNxYlTSCzDcC-qSWHArwWsgFrn9qp0eM48ZcogYy4LIlyiWCNa1Xv_qhrvDqPzovbdQcArDZhNuBJjM9lTTvdZ25b3-TQ5UVTk4g8lWXkjKHb9HcGcQVvAqVCk9TWw82kUY98sLa6THH2ji5L_lAQSXV6o5XAftBBiW8U3BLPpQvYi1jy8CrczdsZe-vdMUuP8KUWhdacbIUo3UZRGv2NPfc2p-mqADYcJFsvjvehVNrDYY4UAV3IVpkKCBMaf5tgK8b0HKqeLvFwHiJPMtA6sRS8tA2qfWoqKc_pJIwwA0bhQqYrx3FjovHPyaZpN1MV9aaOA0npDwWbLrOplkymexP_GT4etSDYln6CVYF4PcnLN4xKZKX578fF8iU2R_fcab6LDzLbYyPpC9iTuASF5fDpuS0pH_OIzmqyiZrrZcoHrdr3s0OvCdpf7Es-KOmYKFw07qFhjVDK_hkHXZHnr3NH3Ta0OO1FACVkfM171FUh684vGJeRUsGFgOFo_M1tFAAMER5deFPcaFQdNKIj46NeNTX1FftaWi06qVOz4nca2LlowjK1tpxfZaT8mQpwhwVNIHVV0BCGAsrArHuiy6mlPZujFB1k3Gt7Bb0_VSIg5yghbm26CzXVnNBad6vLAsvFLwvB_o9KG6f8I9ZFFrLhc6vlcFzC1Z7rV8WyTj3RGCLJHN-6nNZ_VhL3Re984pjnBUqnGuh-1ygKlAGbV4GnUXfahlFn4aeer_NJ3epy2n8Qho68vTOTHkoLNZij1e-qPRg9okoMi8mMr8I5gqIHVzNvBUSBXtOttZylRRBuNXayup7ilmmteVlHuCv432B9V_G4O9xVvwgzMMvI9Ffj0CJ0wghVfBwEeEi0kuwrrsQMuDdAYg7HU4QO2Z0g4gMyylgmaaJq8GiXL9YUbm8-jYdj4kDVabv7pc_Fgh0_vbZyqm8JvBW8V1xnQEIMmZNKeeDin5bDXSB52y88v1-mlEk0PG0nkbayFWk6tgj8eHdQnA7Ky_bkJgi-99VFH9oQQF7HN1fm3UduC1CohWj4uhf2_Edykrm5htZzdIRJAh3ni5inA5aK2CRpjQkpUv7leCcAkVRL7HYWV_yBE4QtSvpsaOJMiyYrny9N185aVz35AE2mRq0_7-EsadEkHVWiequru_SGWmPyQBVz_4GNKXYbYaV9NVXT3zOARWFZSZJA07aAttgJ6H7QK-puC33ynB8cArScAb2sPyARfsvEIM9TShskXK0uuVRWEZ-49iCQES7Nw9vdYBrWZTnpJuUYwCslWyKeixTNF_xUH-1JUWf3b47V5gprqk4LEYtvmabTD0patnlR0wlXB-h7zlpqtVTcb91apcDuMgVcrrMb12MPk4HeMlAbO9wp_Gzqac0klBfEcf4zOcuDPXQjf7AFuJSeQdVDMNaDzOP-qZ3bvr4ljaY1YfWJJ6ArXaW_85lRc9udR_VbFIZFtscABPDBq8FA7IyV23X6u9-oNY44Rnv6cx2pr6V3L-GsXscxB9QnHrGBghv0k7B_2UtpuZ13JnkYmTvg9ijZB46DSIdKHoitjui0Iq0U4y3NGsvH_6bXT0Xqxx8_IPUdHoWwqjKfzv44-HMWUZ2OzYNnlZR1rkl0ofx4J_N_w1FHZ633ibIzHdXkTileQwg140zYkMacHDD2hnfD1H6aG0SXM178B8KuJjRtKzIe2tNl0tKa1HM02uwTq7p9CXrJgl9umjT9f1Ahfeq8ju7IsUi1slksM6hj898EVp8iBdMe4PMS-A3NFeaFQjKJRlZ0Vl31TmMHhV2En83-6dUngd1KaWtZbf7RGmrPxCgS51CaO4FSSL-5hR5wkYdOQP4qMtWSPP8OWC2Xo1YG5LpxsjzviM4BuhfVKIaVX4zqHL8CH7x6DatP0q069WqYJjLqjIi8kYWdzjrLj1QP1RSA_wo_XLV2XoQAE0s69448xo3xS8cO0yDnSshcgd-2E5Gw6IPQj5hs8tJmPOfJU0phMOi_ctk5DD2zrseK1XjtTbVXhHMVgQ8kvDPhqWxw89sodfDHGbzdeiqEUS138xkfPtEdW2Gf1h0hdSAGwFWqpmL8T_kqFEzN7NxHILpVc5FZU2NDnhl_hxwcM6GFBnLBsIatTk0hkEUKn829zC-zDyGouBUbkZZ9GAFH5ikBSTGzSqsjkKsxXez2F0BWhL3oljWhBzrczIxIjMhuw3PAiPo40_6r4ubE8TnDS-4U-UzdSiU0YPgE5e6nGkrKyZTqueRdPT-MPNhPKdolJQ2uRZm_Qq6e3yR8oYJZRSItlx4nCKSMMBMpGrLGF_fHmjSVK6EJbnoVWAOmzeu0xxtRyZERCrhR4lklmqnX2BEv1NSh93G4lpSAVDbEkUiyjRU6nkweXGt_pJhxk9k3_0mHyODdJMphIZV_uoXEEM7dRRcj5V32VzunvZ7SJVBOrx9LMLKXyDiG-D97-GbqU6b0_itZljgrRhHaVQIMNJ6Kb8Eb9EZepti7nknGu1r6lFnuIM3BJislEKhfSNOqwG3B2ZvubZbSvszbeOT_e1GkyBTt8rdqpG4dFWTqZcH89jVQArGIcM5PlwI_VKak2IOTyWpDLpHrzngSieOxuG4nRMqlm8WseO7W0i-yCiwYqkrCjnNcyMIAvJJzsUG4kP-VGApThVw6QTIcReEtkoz-deSzp7AyLnMAKfjCJ_kZHPAx6FEWARJ3YXcF0Ng9QYLJ9hCoZNEWgBPhOsF4ouR6qzGMPgrSzDfRln7ssDSHKAYwN9IrqhSyoRb_-f7WQYyGEhX8g6xCJy-3jQiJYLHYiUbANTPsuQEprGrppWlAg_kzDU_Te1fZ_ni2zusJikMBgJyhtsCUvKe8DM1QOkzmTLPWAIXJrPphpSHG_uz5ryGZu0KEeoSNVmVOnBmEk88nE2PWPDOoAUwMwpVBQkoScnGTG-Sj8bVyp_fVdWANLUPqJQNinyWlrgIh_NBbsHcd-qkNWd-Q2rDWF5Uo3ELLJu3M9SQMCta5mQiEZ7IZhTjh7rwNvd7s2jXsfBEUH6wrpdQhP2-2OOCff2emgAm1AWeiq_rupEJ0h3DCIa9CmgLVwsu05rHEmSa7MMRDvTEzQImIylaVY2Yatl1C3hQgRGNmjXc5lZn2GGjAkeCZMguIgd_TBCJH5D6Lf7Hyz37wJ3ksQAuk2EofO-AxKwGuWqe_oz7UTkF78yq4Wu3fmTkUwVpPm8nH7e7fr0rdfoBVL1TLD9dmjZdcM_sfT8RqfQzxUgJ90b1rcd0UPlJLHvvWc9pi0Jnn0tN519LvEcBtO3AtJ1gJA0gBk0rmBQ9p_rGE2saabaeyHIrjBLBKnet3pNUdi8zpKCaA5jOlOIufJDWB9jnYiDMh4Q7JaSO_3ThQUAe-FbRplhKiQMdSZAU_A9c6ERAnffZhcEGjWAZqOZ523hiCrW0Y9CyjELTCLr2JFiis2CH12u47e-GhfZgwuALk46h_ns7RzXETiGREpuoahydBLElWOnlAETj0tHDOmsNoGytM9zYA6MPOgTPYu1Or3bON_s32HkrYp4zToYFx6_tu7Wf9-cImUEkX_7QFESoidlyPF5F6-udaYPNOLY6yDFwNIrUtHlbLa0hFKGVPNYzz2DOIln1Yad_RunL4hXJiK09VlrmrXqGiegMJrE6bJ791qvxcCod6nJZI8J7bzcfX3XdMATiJVqMus6LtS-EjHiTFwXeJR4IpgbYyp_KLtBEyFugrKdtJq6gf5qeIdPqLrgSL8BeLKkUPSMC5jovdSHegWv8ppa4xj9BtGTZrzEdSI_saL0z1tB_M8bojkscxUmTsy_r-NVhttIK7I-1nqF3zh3mdAXLhN5wyPWg1yODHppxQbJpZHxPQauhrxKVr_fK0b0lkOVG2juvroNG2Q3pfNMXvwg3NOiQykb-bsL8keXFlaabAhzetUCDX1yFFCanxHLj-iNtLst41f4AWj4gozbHtfhdivPZrb29z9hFXwYe3Of7wlD_qwnMA3QSEyc0FXqqAQP3SLFIHDYQvyKi2kSrpV_aYIxYSNa3VQzflZ0dF1LY7ZMTw-zl60dv5ecIshk4Stwc2mzzatGrkaxBhuH7RTaNR1gct-mBT4Mi9899Y9urAFeBr2Ed6-vRov6Kns9NE4Uahu7khvYRt006AY_CLO9OId9KNEa8DsJmCN-zyTYyljb4Z7YYb-7uMJII3-4fvnSzWjZm9h8A5bxiE-_k0l7s3AcDCNrcCL9pyey7sJADhfYiPPXAXzGg3jLhZbkqpZiFVSbxIABXGQuKjqeQmoo1KDS65UomvuuCcaAHJGmBX_xHo5D3PfFdJC5sc5IGUeYO21xkUslhoLR_MiJ_2ORHEtYh4lxKdBexkytcDGoWKqINIRiDljaZriVpqQqOr0uO_Wk35ozkLx0q52SxwSkj_XiejwtLwt4JjNWAysuiTnMcZkkO9CSFRgoXe_eI-m70CsnytabJtSBW5TB0FEaFgsPMZCcb15hpTc9pEO4P6iFLktedeTXtawmoFo__gSGY4k432KCnNBpLWNsNITv0DBYObricii9fG-Mug6cu98d5PJcFritWF7cXcOl_0oia8VO0_OXFebVNEfQbi5h4jLJ-q05HF15oARBAPRgO37OF4E3FCA9wd3gRG0zcr9De9HjsHRzDl5G56LoY95zcZsikFUZ9UnH0C75M01WVBB1Mwe4FloiBqrBZ0HpBzh6G0SVjTKYNVJu-ZMZYRCNWcqgyzDUUV0pv187teEWPOZS7uV6YBLh9_6l_vd8YZOuOo095gyY3w7GwomNjFuR5YrOJzlZ9MnUcto_WxlAwIGV_P9nf1a4pRsMsWQQ_ZM1SPSDeWUuO-b1C0gc1b3Fd2a8I9vNdZKimnawy1g9kVAzoGmTm2BB8HZG3iEhFmqZM05FXUYkLBLzBz4qRM6AKhabCgtwBeWAOJ7BHWD3OKy4qCQ0L_iXLHLsvl6bmRl96Kx13AoAOwdC2g2st_jZv0zSFV_y7A2tgBUCFCg43LLCQVtMbHofuA9kiCHkNNpNy6SBuH16micUheMn2npM7SIbFyA53MuF1EwRJZVwEppAhhbAIuo2ophso2SMRa739wEyWRgreZRPomgm9F_KMUpzvDJeMIRGZ97oZLWyDwzWMlPBAZL9sDiM-ejvI8f_njsX6EGCv2qGngtnzdyWu0atq7rRD36dMtuTEqgodz954pCQLEdiFidFboIKOCMZqTywQYXJQriw-zGhAWUWWlNfJhF-tzJhFbesLr2pQ14CsgbnwMD7CVJWb6dwASFCBy8GX7WXwFrtBu6Wkvvavz4koXp3U14gpkcJq1DX52OnrW0OA8vpjWbS8Gz2hozSjVCHizUWJq_a30y6VNPgRK2vIoolv4Hp3UuPAerzR24UnEbatYX6WdsmaI7sueKpOVn0EgenXsNdRodNa6TA6CyfDq3V2zq_Gu9S3g_NIPDObT9eNkD9mysS9VqEew08pTxcN3rWcRNrjWpex_9e10EEjibpmzORxCeTdn9MkHRzhOtQ7aN_hQLhTRjX51tMhwi1jVWjQY2W0N6WmKEsky57DAnrC5J_Ytxo8fIgN991c3crqu6h01mRXDyh_ImlVh6Utd9i1BDyPEDwb7ad9eeBnVx8J2irllibF7OQmlnizX-Cr1m8ivIJINwo_AaRgI08ErjnJOYD1i6z2W1GwoTyUo1sd2sNN0Hyk2C_ojtZKwxFzYeURuLwK-EYHpoo0GUm0sOEaJkSQAUhuUNJk8iaPsdpkHD1QlQFnh8lsN7RbFEwlFdODawkvWufFRXiFN9GUPjkPlVCNRXIXstXmoF0Uh5j0j3PZ3hAnz5a_-WqbwBtkOOmFEdn7Hi95UN5YyBM5qaCjvSaxE73IHJJgL64Wvv3oLH3rJubSVqucj1yFxxR41iKfgUHOBofYA5WARe2nzrm673szeCjOLplqjBb0n6bXBbeVSMPWUrug1e1UOZPkzMYru7dxJkF1sxN30dzOMDRMKGa2d0nB1YOnP006tK-eFRmK5tZIQNx5iKpIMQonZ_Gmbjj0QPnFQH5O4BXBOT5mUO-ORzIz0yrJJSH_WQJaJEVRq35hr8vL_B01qiYRQZvEiXanZ3z0Mt5Xf5yaiJxs5Jl6jjB2gaU9SFZBv1iYHt-NNP9zf0i2S7s9yF0_Wg3qNZDoUbA3RESZsM6Dz72VBs-APrqJepcKA1SDMFlyAqsuzMASZmQdfDg_axlU8hcVNPI1KxPONuIUWiqwBP4-JUspZb7p9sun18fnkFI3aH8nze_yQCI3R2_yQlgBUyDuHxFDTxchVMTc_LB3seUP7_jQ9wE7X5zHmz5lJN9ZhLJt4_EnFO6WoZQtpH2Vg7oXwFCQ4bFLbDEQIeA7iEOt-qX0gecMehrFCm3BlC1Lw9ssuGLX-EhjEWdQAc3M4DKeqbHouKjKiNUgBfWZaob8-V8g_OqV9hi6yGqB3mY_VqfpQ0cD2PQccVjEu2dKc01_tjXV4ubcrK3MIdTa_t25UUNPWyErjFVgZBVsT7so7pH9os935NsdkzUMze8e2LguKApI_xOxCjXvO3CE3aPK63B-C7LHYeS09v8aTMnrqp_vUHbpgj9Zhg0ena_aOxoWau0xYDDUcLG0b21713KYbfi3H431wbDIqsxOexU3KPzsUSP7MTyqOWQdZygYSlzcUZQjdpJIG7DeFGe_UrNGaAC4Pjzr-bwp6DdkPCfzVCeWupgpE3CHA4ZGLr6OPcbKnICmMWgei-e5bytWjIPQh9zIPWkNiev246MEb_XOnSeTyccJI59MeKK1_3ANf3kBmSP58ltSEqTKhv04npzbZ9QdrqdcY8xdLocrs-mt2khoRkEfb1DOcDjxbUjIGrB1jrY-dgNOZlhQqKCQYYbrg_E7gipRGv3YNtIAEBS7hDFeDeE20UrxBSsNj-0HJbiMitPT0HAAZXN_J_Ea1nFsPvPc-rxMb48Zs02o5qfGVZcAjz_AzDzw1-impv-2SRhUQCEsEBI7xInyg7NuuPNd0pAn89l9NkARhHGgK9GLhkJni9qsE2D_7Ge0v4BFSoXjOygU2BRmcxIzRyGXuUDmWqR0o0uzsWZEw31NI6XbTyQzKCr7pAQt__bxjhlEML9fTVsyocmrw1fwImGhU6h2RfJ-ub032PrYqgodTU35sJv1YFkRqEcvTyyWswmjdihq4DqiSs8ATiIRVpgyPFAqMpXrVn269NJEdXUSNCw4hRzWsiNlM--t3M_jaxDc9aAUSLERvScDo_3REne7sjM1pmUAJuxaPzc2hABrWr2H4q-z02SstiDwbu22cycDm8u3W13W-rmzwMISHHbelzdcEhJjRXGslDO6JG-DMEQOIsR5d0ASUtqrZz_L3ayz4YxkChD01dC5IOmLoe_S_pB55HhzxP_eifathvz8S8NIliHyqk5yXXRLfmqpZ_m45fLJI0-KDNb7N7-V7d7zvOoUcUc6Oot601YdU7zr7kyVsvuB3IhSZX1fmARJu7LUsnVlWLYxQvJHCV23JZ6b6AWnJJZjHPcjZTgV6FLO6qBv5iFkm5xyxEGm4I4ljs4DHPHInmvJbRgkUvMADsirF70VyBRERs0Jy3dmbWrhB8WyEZg_3NkzIsPLKMXwdvAc0tQZg_3er2AowaKb8NaDhyYEeTNdrgj-4wjgHrIC98iDsXG3VSxxMK3irdVOrpeSURnPQTLFiB0iwBNTBbQNX4GDC70ijDWAXw8JCy6ymtWzWyQiurM-KtKTiZ8koR-1ll4udLPPpPQGlIBkCo08FckIDjCZkIq3surCqNzjEQedBl5SvmHu2L6VgSmOl8GrycuIP61u8yfc5NFbDInQRofv2JMQU6txpUkzwGFMCD4G1BtZ9LBIAMhbDAFiVpvixIVsoaZgqP-3vpUf-1F-mqFhwov9CMLcKGB4pVjlaqf7tOh5sbB1V8gcnRk_n3u-jFy5EphWtJSWBZ2-7pDY0usINfT_1SqrxV9FRORrNF8zZ9iSoTbELyPRgjOWHa_yEccYfIoi8tyaSPO4YNGJTV9KJ3b-1umfOtgphSYRmyyc3vBdbS-ciAktD8oEidCeoofuPqYJQkzWP1j3c5PbvY_qp499--jIwhHICWD734_qAcZryIPfGD4TPEvgsUidWFelVQgvvo2DMUmoAwEmJfDvyk3_14wJaXuBz1cQOkOmyFMWstkh6x4HJ633fugLKTFZTfLmmKa0tdKo2pyWEi6EYn-sHRq8yAtBS-kwj_CUbBVcGIdZsj7trmYnBCJm11e-SRRPn-hpwX6QXEa77uDKYbvWecMYnSO_x004uewUXusaGKgaMr-dVxM3ETYxmX-irKbIhYQNSF0mwVG-ByA7VVHsuOuRH9eqeURt_gjCFUgyh1RKPpUeBLZoneCZMW2-aoeMasM4CfwGMe3XIwGunqwQ_JOsR4m51Ae1jWp5lX70N4n1oi_7iphIWxp_FndVhl7RgXuVs64plFafDHszDEOCm1Tx0qRDA-hMhF0KDvOdHbvNPPcttueqf0zR9m-nCbcv8bHZ0oZq1zrtmexJq4Di0Vuf4NksMYUpot4gfTt2qntuJDspQn63X_nRL4bcZe15FQk6cPae3WxtXb3m8dVnVi49ViQ2zsNaFi0V9fL6LN5mc2M7gyYKNWWrjtZ3MGA3KlA3B7jcx306qCpHvWyHjgXIDru562jBv-NoCg-SEiROCXNE0Ntzx3ZAnl9S4D9WVrF7TOKgbT0LAktybCzosNnY3FWwuhTQVgw2U8LhluGqnJf8NhzUXAvjB7fhr9QjxPU8zxKwmXAhTj5Aem33bVLh6FiZMTqHxIvDYj_mJlsEpGkBKpSb6bTq04u4mlBX5zGJPFX2HfeO97J_v6X594lsstjQjD33BOixXjWltWc8o2Lk21_SSRmroKZiH3P2cKAkJ1w-Iw0c6fpbbc_trKfw-q1qreF1pDCvVlU8MnvpfvWurToe71Tb5YLNC35jGcKarCMp_cBlb-qjBbYdfPb88Ke6RlOIVdhgdVGfDbZoVSgjOdck0T5i8NLkBlECH7YH3y1IECIawQvzfbfAmRncgKuxfFJqx99QZ4LyJMekiQno9gqGAD4z24287k0Wgc01LhQj3vWHsUVVeTSyaX9TtqBeh2uEt-JeipPKEP1USDaRGWBNvAoAHUKkyPTw0NYe4teHIxB2vc0U_HLCTO6DDDTQx5B7x9L82ArCMdQGaNx8Eu0MWUubYOoxA0aJawNpvz6Lw7mSlyarv9W2AQqsbd7A18CYOGX5dzvGrfpxeOncKWtYGZsAQtiy_7sPc5aZhJ7Owa7JIyswrBeLNNtLTM787JPCJNX1wqZaw7JJ5m6YJtUhr6vlrOAGXWk46sOn1YKUvXZW4pPX4evlUv1H5gGIt3a7iafiPBC1gqGUOpvRwVr5CB0HsVEojxiqi11a18ausHy5OOp0fn_XemnKxIX8AwCj-6oO7UYV7VgnbBgrKhGHHKn6oHXsZpatTfzrLwRl3RwbIuctj7ZBhfdgoy_SHAexXg3_Nu8mg3fE923VekKqo9skEQTjfN_NOH5iwWEjiv8KR9A1Ym56ZigjdJ5lHkfv4zL6gG_xncZ6zq6QjxbF3tGkStDGVsvwqWqe3udNHfIjSX-lFn-wX022PXWa1DIXoQLfSt--6nhfLHb8GoasMPcRTMd0jFXPLbsCupYElLJhM0xSQXVq010hnu5aCe7N78CKadWekhm_TrUEPcS9AigsPEEtoPG_HkyrH7oN0ePrxNGCBfwyks_QwqFH_mt4qyxJkP4wH8uU4yI1AfzpPOXkelOIMUPQpwbaZ3xQ8-NATCOk8pUYS9UeMifpxfv-kKkTaCeRHxnZDv1fWSZjHmmDrbBvtBNYp6_3eQaX8SCSj3sv2ijLDYy3T2clecLutRIe5V3zDEiZ9h_O4M2Bv12F_aQAiORCA1TVCuOlbCZU0XdsNs8sk7HaAQ_kcrRySwbxxvDNIkLST1anhnCqOr8KJayD-b1LgSdiyjBd9LMKBVNXP2kjy3cOdMxIwpN6zT6SEUnEoQKl0fgLLP7f_yGWxleE4GQcRRo7jvgag5r8EDb0PSAL4BiFEva4s5VdeJpz_TrQ4ZZEooEwrbQCXUng7qkCo52f-EWV_Yx-d2lvLc4ksEpNAhuACCbLfZgOmSnnR8s4Q5i4ZbsmiEOaQm09ERCwwkUL_LyJ3J2tarA_PKVMrGV5vb73V1XBOmZxhWKoVi9uMBNUO5q1b8TuqC-ZR9RMLtWf-su3lDq5PTgpWY_lgYZ6ijTAWiafeexzTQ1D5Sl6F-z6VsLt1-xK42mzwnzg3_A7FFwCNwVc8S_4FugsbOOpAandHV5YnyPwUkwIovw_aGY7ziGuiRP1VJVkQ38IypmNASfvpkay1ZcDwMrN6Nv7T2BHMJ9MRaR9unxDjkBihJEzC_GuhmJ1Bf3NGt1v3DN0riUiEIeCBpNmzzHccwgtz1cHM3HZvSgtEh2SrMAlx7v3w3xljHzY03m_aKJbTlF3shzI984kRjUcTrG4ZTjKnVlC2RWryoLkGTBurM8h2kzCSWPr7B29yEYGDpujzu81Xsw7Hn7rbB6UQxvx1r5DiV_LQ3YTFRIy8XqbosCe5mhifNftRApcTHNLxUwOyVjLjBWfOTQGZJUAKqZdyBYgXRwA-jTT2y_2A3aseGYLW1WWmRj6vKiawWnfvgWyJ-2WdKtMOPL68mjMysocqnUiIdUDpNcP3lr000VJVJTkVG-rnxCP3zgEhi4WIMrL7JTrs9UD_X6n2p0QSdPkOJg9YGb7YNJ03TKoz0FTYk0dF00gzmLzy6iUxl-RAbd4gyrtTJ9U1hLqXt3et_zeM2Byr2RIWzzWKduT4GU89DvbgQf0BDRy87vj2jURy1bqA-zmDEgMw0ZW_a7ohOVm6wQeJZfCKiqDbjTSSO622XR7oMSJodabZ6us-iYuACkQf7GPNsCddo5nNwXw3HHbdNDf_GfwBplUybtVtiej0QDNyyeWAd5tTpKgga0mDV884Z3D1SDYQ_3-G-r2EgISixYYdY_Pkg7T1BUcuBNAKcKBEhgepa_e7_01pvwFKHaO2cXl_p4I5z72b1Tpz3La9g1gh7x_h5LKg2L2JRTWREtyxUlooLscJ9PIXwNVfJKxPnniMDn-Kwu4jXIfrnAq3RzAOESzMgXz19rmMQmY7_pjfaVFOE2lb-04xXRO-58M6wQ5fRfYZul4IeUJOX5Oq5u_WyPPQSuadY7x4_mlI8X9_ekggziG_YynuTvbHbpPLuh-wkMJwCDKzCxWkcG25qHJFz0raehb200olhe6C5HUI1xTeRDuoge-S049_NZCGFN_BtD2ctbAW-uiFi4mfs5YA8SvuP9wmrnO49s0KvggM5UDY03LFf-IcLptCl7cx8Ipvq-0XUIZn9qVWKDHHCLZZ3Rr2pPILx8OC99U-l-6_SLIWe_wj2J68iYNn258FfPsQlu9FzDsjoPLnOIGpK5uy_VPoGQLOaMCjb5MZDssf80fElzbDNYgC2fU-xWz9VAoQch52GPd-7WU4fI_Tt8MTrFue1DRO0Y4S9Fb0f7W3LjEZv8A4hjmZWb2WqfZGI11XhDQ_9KO6EJtadMHQPvZUuE14besbC23kaGG6jAEo_oIMK9pf72FFVKCtMDZ1_ILHCQyjyI7g4gi85OSoxQRwt50ULdRo3a_HUS9rtv8GpMKmHTc1ATkFqrIZapQPltvmxQvLlgD5MGk_LZTe3yK4uEoNGF1l4m5NZPgLspZYq4sPAawNSBOCxX9z4KwcCPko3tWj7Rgw8hGbuHwSHmeN93HQGMdbiinmidEQePEExDREvxL4c1KlCmVaTs41PaUKOr04-8z8DeH5fxf9VO4NBGKvGHjevKCWidJJbwK92uLAJUSkvF2ncd3ZadQD1DE3JTZE3u9u9KZ2bKD_kbUj0tskiBC0uABJhyeSAtTPeaI8IRI4Cbhlo5N9eQbPX99dTowmZxQhx0zhRorQUXctGNKyoSQLSD0021rbPSwtQLXWmSLm8SmdfX-QIZpZkIrnEgyVO-L9uMjQEODvJX9hL9Xkl1KhC1hdnnJuF_YD5Nw9RYqz262F7keqIBi0-TYqsuLFEfoZ_pJzu4_tQWlreqeubx3aHks9Ni_UBPxVT-UwMh3XAGHDaGcosUql4d3zDWQLX61rRRq4dGObHxGUIjhq3JzET4EE9IoFvJSFEEVPbmDiI5YctYz5-kBQUMMk-37oUEOcdNzHxN0cOcS2EtENsxImkuCLhkJfOcIGGpt8xButgKePYkL6h7Ptgz0k8ZU7TgiNmlqUrO0Tzsw6tYAXEqCZwCRSPLjb9Rs3F7AACDlMyyyn5Ub0rLtUT-8esCYZPhF4XTNMtheObrXryJ4wJaHbLVxukArlptXPcyVhRAk65CjgJn8d89j4AY9yZBevPjMSZRHcA5xVsjlPy3ciWb8KteC3_YCScAwHz3HooRlndVdbOTz2z-Rq83paHveHn2p_Ta-s2LKiUQT4UeDqYJslwQ6qnOZuodJr8gA2iEqjRvbdGd2w40EM5522zcK0LrD4BhBniv4fwekjnMLsGdBUpwNV8MUBr6ejuB4huXsii22_1yjUnwi8qt5z-1ap4_DBMJex5bhv3b-U5_dV5BU13f_xlaBABHekuhJLEVJF0RQm858Uz9ve27cD11EjgF50FGWZw_ZQwMOMlCXg3WMPokXvOtGtwYD-ro8NGOoHPojlhwn9hftIfb8v67LOXPIUj1ttcxlb6NjubU0yuCaceLRNBRxuWFleTcsHulf9yQ09SpQ2kMh4555k0UckTLNd_qiXK8mOh08aYgJ-EenxWoMf7nSB92D97jtC-eEEkGGWEk9xrErIrLvabr9Ad0kxOmaD81COyEw5k5ZB76q4pDSETxiYryuxdYxUBOk4r5fj83YHgzTOh6Uz4EGJftQmJRR7HDS54O0ZwwTeR0wBRgfBUvXn7d07Oz7PKULlBDv7dvi7Wi-Cann6KjKHvb4T3PDo1A63yqmiElN0tEyP6dxc9PUXPD4n2BxDAGdFsdL5Fnkyn7KvJqDHjT9j6z6mKv090Q4OlvsH4CPAqPPQ6NpJz5_Z103mUR3jzFuBpNZV7pdTch_IIFsSelSBFm0kHO1Yz8-YD3rtuj3-xqOXBBn6lzN6r3RYYbvdN1s6tKxjwpywE6F-ryiVYQRcM98-g3lmF4DClSfhDKsMCn8YXvEhPVoTUWpPfwrfhgVBjgn0pEsr0JSnt9BWc1cjC7mz76ZNZPVPP5PUN0hSEoDQJXAs_QNsxHOjIVn7IU2ljiR_rEHePUkqRXhBUVF8hIj5mAPVEm8BJxy--V-WQtTR1IRRG2kUFC2NEbXiqic6AAUKToEJK7mDNrS-OjgZj8JtcShlGF-asoxAsIFART41IquQuA_BAFzhTeWDrpDrF30W7mdfTes92bULZkgDl5jmZeSeZfEynwaNvjoEJaNfAMtaeBVp2NkLm4oPB7256WZpALqXFr7arkpePXNVsmwWR6ZPIjCr9XBVkve3016blyUhJnc4c2O5QV2M8zy9JHFmvlerRomYf38XlLAP5HuwwuGdRpKpUgpPRmOLIEn0fJ_G_i5kvNbA3MhVWxDXwYe8wNK_O-JXb4pY_RidV9u0pvlWlDFUeWb5Bq0KBNHIHIeOvJ6H7FntVNIuTvBNh_395w7IkhOswlyqQAnMqhYMLmsho978ZIQ0PwNuzCzQESe3sos8YsgCk6602Zam5d3XkJvcSf9aJ825mPVKrUc2yKpfPtZobzinB9Q2PfzWM55KeJhVyLP6ctx_l1yQH5d6JmYnmYm9m1-UD9ij75Z6TlB-Enw4sq__aTTl6I1ebPMZk5aSq1mA2YkEdZ1YQy1uSefDNaLMpanDVXoZ3cm_lENRUBi8tcCzaDjfcXA3Qray8BlAfBERJb5M9sRnczkxOFXa0fUfKkc6xzKY_Ykzc1VP_ODPIFPJleDyb8QtBYrgVqpGnWdmnUc5IlUIQWVi2Mle6T6b4hldZt3fVWji5nP70Eyjpt_uawfwQf7m2gY9ToGKYKFh-D9ief_9_HiZfCCmwW3dD8LG1uCgUimxpNZbPadYhXF_FW2-9FvXlZsEb43aJbOtbP8NZSr1Qkt5HjIA-pWgL6gjtC9UEqUShQtuM14CDlepxYFataqeW0EwpkpHrdxYtFNGuuN1a-ptNXhbiT3pO7csK8d-waUKWab4QgfPReM19wswonuC_7R2giDzR3-CromJ0O2ujKL76qyfpmw2249p62yjGoi3yuQ7jAIyCTlUkZ-ZwllC-RV2Jke5SCJL1XQ2s0BiIIkDiK26z8P3VlYfN6yfHDkVF1VUpqII5c6SMzOHnAXwZ3rC_SkKaY2JTxGYduYlLrptGRXFR9TKvaCPT_i-LJxWe-K6f1wAuBjiHguEYEc7KhR3zL4cF2kjk-6Dvnt2TWhXygIOyyEw3iTX6vk0DJ0z7luOkQY0yuB9AXZIRSejjtaKobsQToq9TePj3rfURSfq5cNl_QoGctKRqZDnuk2_3ysAf9ipy7hH5VJWl65NRj-4swoo-z-nvML2uF5KYFA8Y4_9Fpu733v4LQVC_LMTXpkreIhEGQfS8WSLsQTPy-p2nvPw_ZthHDFNhafN58C4GfUDAYI4Cjq1g4vYvmDivKUC4dHlh-bvXgTnMhcH1wBPQ3DostPhJfd_mYL5ULZYYAQkrU4GQhHyxQPY_hCX8V4WlWRWpOXhsCON9scXy3ZxldEjAoU6fctxmE9X3ZyeS6I4HzRAbEf7i0w4k8lLrqPewMG3QzZkt7wbg55vwdna9CZQipreqlWUTDUbLYD-MM_yv6nr5fYb-0B8QaAKRdWbjqWe25nd-7i_wgCO7NKwXhsUmS7KvlI8qOOqG90gPdAaofevuPiPU2JlohVLgLuvpyic94mNf-UwAXCGqSppB0UGNrIMr7YC08QjNllKne3ltJXiSpkNifYUI6BKvukdBmVaRi22JvIL0VwALPPJlLD0mbjX4Y3UfdssL2SO2zs_dX5_5WvOvJ-w7-416YMnwKcPEWt1CvBdc5F3Clo9koLY448FgOpxqu4-3JQ-QuMRHnZMMFqMX6eGuuS-Ep_gkQSSO3MYFt-kZa2iPvRnWShXpafmVZftHNEr7gSNN9SN7I9X7bduojqNT44BE5YzpgJbRpy4NNfRtFd_vIGbuREgpdQLUqbM_2WrWegCfDMMca3tTfDzOpnTM2j_0NWsSeXsOOteCpbNoa9mRuZuw12dlHxSx9R0wbvRJukTOjmsMlkryJFbO55XQkwVwi-1iXgP1mDClOw-WTju5nl-vcPe5dKq82sp1LSjVVCxmaWh0FL4k5qviK865bt7bEAiy0GgtQ6n8OV0gnpZroXFewi2HH8aBktkR1Rfi3WORJpySwvX4QeHC6TJu0rSJhJTIvwg0pTuJCEzyOaircdhdaJrPg6LHAWVVwQTpEHXQUkph3uWwIf4x_Gt9gtTvTTXvr_Xoa_vtNrh4dL4EM4UvB3BN-Yia6c0tvljL07XUmx6PNsaFJuAl8ec35YvN8tXrRhbq2BJgqn2a_yZtejGV0XcEB0zNbkGVSykoaS_4EEil_8Il76PS5edh11TtbHHHRbh5JqZaBJ1w40K5RUJN8aAsIqMk5z9tnxeWU6ABTQp2shm3ozmYowOAi-A7777EJMUAZ1U_jyW72vxB12lVK-lKgilkz5k1ytS5wBGGAACZ6iwGdJOETfdxxS7xKSCVWHV1nle2TaXjs8rnuGbt1DdJvs8QiMTv_yTSUG8_PFhX9WfOhJLWgJHY5KFZOQgXdxuAFK1lI_hphriNIa-2JAmO7_OCsMYecivF5CiDR_5wKSbbjin58qp5hbpdqUNqHiMPNgxwpcFheCZBi1cTil2y-We39n0PuPS2xynsndjAxodn7Il9OkXjZJyD5zvxsdgXMHrcePO184BqpZD68gKksxdcJBfw6uhUSyUa2InOIvKttM40Wm1-fJOksn7Xn16w4-sPIJ1rlwgDf6b2vEUde32S6Apfg1ANlBftUOtzMUDSNNVT15rXME7kQ_96ZFhwO0aM3_A2OpumG5DO5AofAe02hnz-gb_E5Mgk826hsXoj3xYHnMSJMr07xnlqt0EQg-SaQyBfGbc2xoGAPfmzCdj5sBenrdC_F-POrd9Zc84GbJzSVonwhy95iYNvVvUMVjO5OXctfxUxGSfMVOG-lpHWaGrzOZIt_iZ7_XJjthAZMo_-vtupyF9VDhgG7ZG0Drmv3_i1NKtS7aFmT236Fs85X6i8xUO6wK6WqC2hqXiAQOODHeEKd7ajfO1sJ-PgKceK2lOA7NA2--Q4zjY6Nn2XUGdzNz08OVMr1FNX8aDhVZVAUSNdLUVK_9iFJ7Wo8tp9NErXqlHaROKxklLzQeDyYWyf1z3tfFxYGJfB8ANjIApEzepu57_gPAVIzJEA7uVY0BTGnPoKIOmhbg2CtaRLRTUkbnHllcPw8COAn4qa3i2j9yVeKwo5jaFZV0O9qIeI5FbhV2NjTF4Ui07480kL9btrz3z4HuQyguf0YfTIIC0S5QyWjh8kslHVdwYFwfwO9doo8PTGoHi8I4OtE7QtEVg20uaY_jM7bg5Xlv3ENMQkqYXvRZOmV319B60Z1crn-Yuqi1kYXLBPSTfDKFCrWQ8R8y4wYvUPzNalGs_4IiDihZSEV7vDUtvTLorf_8SfFAmaPpQnyCImIZrktiVAL2JBpZDm2jIzr2pSehvCiK1-RDeRVFCdzGKOKOCsEta4zmaWsIDSnQylSxTVHCLCFISpN4Zozbv49PHJ2kO5_G7v0Zq9sunsyOuqTy1AZq4HLGjXuX40UElZEz_LV83_-02f0Kon89yV_qh5O0knvt3WpbqCCJqteCSimK-gOFoyxGs6xw19zeWExQ3no-OTrwHHTspsecUhKBSEcx13XUVyh1cDokHZFFNdDM6ousEajmkAgTuf995gwDOmJDhRLzeXDPm5eylR6z3q8Mg9jlmbuT_PCeAJXw5K28jCIQX9xDudM83Twtepg_d41wvV6gqnhKFUQTm550Z7ybDkAw8U-MsXC7qi6clMaMEZNPGVgRxglH7-uYXv3YlxdseMvqDxxAQm4BGwjQFrwnS5MyQqnUc9hNvBpphDQXCM8t0PuSoWZLD5xewPviF6q6MlhY0gmNTv5kOByH9bVdfLT-YCBqHr5z1e-HFw_v3f_Y3m0FdI2Lk5cD9Q-Xmf4if05PADqOsO1MRUYDreN6GiDvT5AOj1QI4yHn5BBXKI2RGbwgGZA12G-A_Kph7Xf1CWqcwIRm-8yXVBvukktdtlRchl_x03feFVwQCzOMdtwS0pANWGd2YMtzcdqYKMfxeooFZ3OE5bigU2BbyQoyQrXXTBnq4HcLTP_hE3eS1E963ZmSsEnvXE1jFQk_Yfbf5dnMqjYWTFe8jaWKmZpupJiUxgteBr3-wZnc2T5xXmlGOaFdZCMVJ-ztpa0Xl2KQbFtty1uKGyOix5bSOuT66J0raWRtAjCjCVz8s5GDs11UK_1FsbI9sRbHbiSMhYo-SrdxH3wMp2cLu_snT6Pqo-4MGcqdPLYS7049u8pOX93Wn7QYHktn4OFrulBRnVfcubqFP-p5QfCB8qe7KEUjBWfYTjK9uMCTjGW5NwzUca3xfDOK3hHsYnI5IK_xOullQth1HvGSr4WUOaPC331WVexG2Eg3JFhwT3grLW1skgFlACZzSjZiTW5-ZvJNIESsk1zpwoT7mI9_gn6IVZy1-Myjy8WW1b9ZKBdTRSpxt5pQDYvmAxTxOcTpka6p1YtyzFC6vF4rd-nmxGgWwEHK5DgiOoW1tmTdYhx4DFKLWNyqmiak2gyf8kqrwNhfUCyRfD-Qy0re_Wy4dHtHhYdPgvuFRCtcpdX5zuy0kOd3Bp9Zd1ZyI210kN9FkQYZMDhbcKyEpTaM_Ze37sC2r5g5QHIvHql2F1ENf_NnOx0hQtmqWGLgmqA1kVtBc-e1U4-SLdB4tSNJjQ0PXpeRuXwvsAALNLcCe1wbvZyovox2Mj4zw3W2xC-KnD8o7CuaVKuRQ98u0kzvs-QMxOcc1jMCeKicPH4c3ZmYEMPrLA6tIWLJCHtxmVl1ZwnfdWWi0-TylsWRgUGCTUT1Ygx4MwWolj55CHy_V2XOABfHxmpk4Gx13oCJSCfLu7A1k3jY7nwaLOOnpA9NU171AflCk6sO0FbEELq8ycsIXOUViRI_JMHcR2bAGhUCIjjiw0OZvjxP1NN0mPYQQDTkMV4inQfM-9n39CXdjJA4iQWPBC617pbt8nxj2OFyix_-Ouqv1ra4dy50m_4AKuoZSXWHQb1tgfauT_Isf9AkzgF0Zh5u0ON70y64ZD44w6PYmWZCvPKiRiPmfRaDJUoO-D0ToBLJvhCchrFjmeMYf2-cF-QjL_9D_2p0mEieJu7d_afpiNJ0xt9WScwkRS5NB4yyC0egAH_MMZFIH0G7uEokNjIvSrEIlog6miS1ZOt7jGMlkV7mroeBA6rcYUSmbPx7kFFtC-Bzk_hHQbgkPvcbEY8O5yq0i_L47N6E3rKqa8_8uJEJ84Qe6uy2naCD9KVSCbyfeDW2vVcG1spDXEsxSFTy3I6bZ9jvxN8t7Dw4DEs91v2Ir2c4HQvxjLSrqlrMjjsKoLT7pKVMwcnonR475eaFU7iWn067viGDcEQ0jirYyLAWP9z---N_Ti8fdZuW5i9Y5NxENNiiir0vPWqpgdA7i90BUiZiJ48kptq5nOLrCKjtLiWtkTav2Zg3NTk6Qgogwcovobe2dMVg93jBDAGLpcrvsZp8W7-N9u5A6xKTC7PsR_mA303Bo_L4qfX_IzrdezAIqNoEGxn-jgfjk1RciA3O_vnorsa909cHIe-gISLpLaJWYxjORKfhthhH0pHzBHWZuRlJsjzGGZVHK63lEorY3v0PNTpkap9vdW9067cFmE6fKKaD02lGXUK3NLCuc2CVyCfXFw_ETLDfdL23PT20x6M1GFMxDoJQGEebwljgcqopBMb_IUTSD583mOq75-Mae9f_dLJidLLd2KVoSKMQcj3uAvetCjps419-ASKqJaM4VJPy6DraQwEeJFq9hJ6MLNYbIomqhSxmVXSeNWEfy3WzA_BgpqFXhlbTtK5E9ZdA4K0LcQVE1ngcbS_PQjmcSJAzxvO3JRN-YouDc1PGYGQX7k_nVJ188wpV3fQhBQGhpeRQqv9dKM25sw9i-QzcpjQ3MZ5YnyXRCm22fxFUoQW_9vcBnKjHtD3mN6OcBRxwAf22qTPnm6Z_PRtXLilz5aKyLSixOIQomoRzv5rBOIAVEn0ht42rlj6fp2eYYP66UYuNXtFZX6OM_YhR8EUmfSxlPowdBqSSOqn155SLFulbIaTHwHse0zHJPKJ9QZ3Hb8xHr4FsRPjsITYqOFAh8l27StrOYV6iu1nQ-mBU0uDyE5G_t5wQiV-kJ0Kry4cAqSBWUUazGBN0OAXAuAAqlJboUcNwPeTK5DPF2e2xJ5CNFBOTe2gpVUJRxEZ1k8qzTZ6NehuBbNnAlmrIBs9OaOvM2JsFpbFNKejG6dfCd5ZV0kzVlAGVwMEKHLrnw4CZDthlFN9m4m32eA-uYlihNUsv3Yi8f0seuQ5gY7JcrmNxq8yaOCECbLUbaQQlilplyxv7PF70jJgbhXSC00hHBZOrxrm6jBOA2OR_XWYBXA9PSwth63gZFUG4yroTkSXt7xmKyxcvzWc-jrAW3pSS8kBp2LM_nmWBYlI9hZ1ctRZKvlUX1PCvZ16qO-RT7sDXYFeqnM94iM6ctXJp1RWq9fiT9XBYBWHIjb25W7lpNKeQ_4qZb9b8wTaSIVViLtMG5HlaZD3VQpg4Ayndsv-Jp5uMYJfAiR5lc9mG3Wkrp4aZhslEbjpGOA5nL954BedfhUHzeRAjHc5BWS6OwoPIC-IDDvqzgKMF_So7NmZFQUvXstd1oSgWBuqhVJMhOOtnF0K8fpmlaKDu5v_ban6LxpwvNLcVMXgWIp8q1mH2bMSOlXru4k0crQ7y0FdaAiUP6ApF8vRnRsYwSUcA5c_OcA2ejk5I26dP6xTsVIds7GVCBPUTHPrsosGfqaj2h4LuP_sHF-5-on3g0lUAIdwiRmefQ-o21kGeVG8YvaNfV69z2YM7O8oTzCdUKpvKqvBFYO15Unxd9B4aUt18iw2K5g92DTThbQ3V1N9D0vk1FUhj1QbmYSJlXH6DydqfDFiyZQx1GBUo9UbdnmSzwdZpwnh9-qxF_DpZrbTDLEe4ydZDhPnIIhU4O502DEvkLVyV9KbYFUMbRakkv21xnLO9ylezWPhRyL89x_oNC9mJf0YzITMKW9VXApapR-mWV8kzs14XVkmTHPAqUDTnRjJGciVbsNbNLRhvb-sA8jU4upd1S1KuPa8r2xS4UYhjBOzW3A08XSE6Qxj4V7Zley-JdYIIhbmVF1B67-_yiuAmwUdF9Ms6Cai2YaPPmegYziajGETJHOGQKt3OwpS4V62EKcCWnQQ-9X_gbnR_vyV0d0BMKbZ8p3-kZj24V71CLpt6_WC74zuVuJQh8onMtZNeGGpx1g9qABh41QRLW0asz42cXeikWlvq4gqBlAtDZ-s7_aXIBgowrVE-iedxhperFEB9j5VqudZarWUtykM_Hy7-jCfdCG4_91M6UAeH8KpXUx5rJskqVnY7FmMoBqlKU2AM6GZr_00c4wGn425NxnJWZ8iUyb08UPOThwpPf5uGx_NgsQDci5aIMhcvKsiK5Bhuw7BMingnok62_SwWU_aFJnSmAnyMqk4NYe0KCIRVnMvzFVsPHQZN8bS4z6uCAmqyo4vaxQXtEoUpzbKMVz7m9SB9EaFTiLiOBpeHsg_nzyqGJvk1mWFtj2CQn7Y-udtM7FkFO_mVuZhaNMUSroLYbItF_D5Pnd-57inKwyITB8nRIWKQZWf4Tecf3bRUdYELyK0jvxb6PUWPTi1lGoajc6jQRG62qjr5oKroQN18CaVKVW_t6CK1o47VYJObNpnYu33uAgG_TkupHwAdNC2qwYSLpMGtfLgRDwhhj5ZblTEnf37iZyKJYomN7-t5T5IkbZoiNBlV-NYfJXFcAQsJaXEO1MtNwgdjbAbHGejUIfzUyc83z0fsVDEp_21usjdyFEHq_FjPDy6QjHsc0Njpd9ZCrnyvRc6EsdvA1AizdMJqe10CHkFdzysD2nqhJ7CJV5khoj_BbtuAGj6cc_xijlCVbC-meYYccxJJMtJezAeccw5PXvhiqxferNnZF-oOwVQG9b-xlhv6c8xj48YE2TtZiPdEbhBmCb36gtN_ZC68ThgPYDJpZU6cUfjJyyJcnLXf7aZSPXHVXxQ91u-nWG5ObAxDkV83kFadl6yv9Pz4trYuEqNx8PYAZsrXfihuzKzmDSmlnHK7o4L7-LngWKJ6vGrphJGTo8wkABEu5OWbmVS0vh5QBcgdyqnnQjNqaM2Nf8DHCRFVHlYJ7MFtpNbm_8T06wU1WZAtHcHDS79o86ETZNaiH4MR3LxfJyp5E8QPhhpYpIEX3Si7FPYYzvRCCFoL8Gy6EXqnNMXnYhDTYbpT2u0xNf8cbGkdFLJvFiaL1U-eCXxUjtAh9yId0IAHcdSgn7s23oAUJ4FXUDrJ7IcoudyUksIxEzIRxJ-6H5_Tm4Hyq05e1eSPMWuI8j_hOXXJt2-yg4G_UktzlLNIHTTwLDwavlT1mp6uBYGA-PFT5C_e1SzX4MbRhb7hH8uhA8o8X61jv2944nDdz6fiV_dF-aa-pKWKBA4Jh1aJSUd3eh_zHEyTqzpwdd3DvFtY59ycTm47DbO50WAHtOkaVshtuSSynUB9yfBaAw7DQSW4ew8eyHChzIN70SS2OcVTM90pTrSfkpefRrf6LxNkkx57g580KFBa6gWpGwpSIT8Ut2AR8FMNtv2LBMVPzNyu1YfCVj-3-9ZBNJFl3O8-quuTfY6wav0hkncA5m-nXEyTbnmuSZZ57mq5DkdzVUlN6dvDPx5YdAgEqakpB2_59bXbovmTOkhXKZ3CvbW7MvbuYflOfELqp9Hp34f25OWue6KtlEZQN5BKpScuu49wr3I1o9NiYDAeMHf_qXVQyhr9BzSaKv9qOS-DgrTfMSm4qHDIOlvARtj95x0UqqE4x-QmVv3Rd-GCPIzYIpmt7hwnR9h4frf9cpC0WT7Xo2uUdAbd3VDg24N50kyjsTyqeZ-4Tubt8F6Z_tsA4pG76apGUuK3S6T7znT7-6sLBzAYk5iP6pkeYPRb_Wrg9tQtEn5hpPS3lTvO8atxjhxJ4xliAwNNa7AqoAd2Ar1tRUrQHj3S7ZVcbcAC-llP57zg67bKnuObo1oPbtQFqj3WkOF1MZCgcuuP8MZgQzut-AXyy_ONfBS-vaWO_GDkO0XoaSqMzcwcsJqBC_wc4_1_zyN518ASfM5qN1h_FKVisv6_LH94p1LOoQkDyf5c3oYyK8fZBrIprz1A_h7TXcWqIllEqajlorVcfm-jClqqsZwUYUqAPt08yE8VJkwKHMEiY5SDINLbudBxq0FfOp5uUqCOvatD43mNWldDNW3g-AJu2TvFy5fkByBPSqQzk33BHXQCNcrXpHQMT5cnNQv60kA0bbtYPXM2Lyu8aTHfKUqMz2ac68OfkqpJEitcQ4vNT-UvN0R2yDw377HhC8sXS7krDKjp85J8pseu1QkGxWf5Q0tbWIRQgmokcfP4mAWNtfOlHm3bUspAGkBJilgeyi5A85WiUSMj6OQ8EAeQmZfDRUGK1Hxn2UMo1NakabYsA7fUClgGldDV9V71tcSOXYkiIj8cG_lmvE7N1kDab40t4YcweVxEBKVpedptbNPUB2JtYviEga5qQW2aMKAf_zPPv80cvGCd9FeY41GDC63t2Z1vnVDeq-15ndlbJO83wI66PhFSLX3dXK4jEwPSDHcwid4itsLOEXDDtvdFf2VCNCMzilFENfXSqVvsFHX455n6ZqMPLHJKZn4mQpp5c3EJSsgsjORmaovJSNlO6Bjy9K5VsWSP2MMKTYRiHon_HwJ1I0ImnZWMSAVYIHzGHRNkhiQobn1FZ523c-qyEX4aWvj-xtyFaxLgSK14kZFruw_YP6De5NwCjbLampYo85GrhXnAdkpg9cz5xQ_orzwx07568alPPsdXd4JvWSz-m-CSWHG6qduHkVUJ2aCtlb4K4tf0KM1lMkGD-LQ8oSQ3T9_daIG_5lXaNpERmgeFfHuHrDIEeaOP9GHiDqpZVHHSCi-c6Oqhx62dcb9UyymEAFKkbOIlB_gaIYIANlXVrLkDmNf2si_7gfeDG5UHLTt-Xlo2shZhrsxRG0KzZGPnQ6fc1C_4z9zGzrOAo0iP1ZFuOsLR3oNPHg9Bhv1gJgNseKEzZuLb3xRwO_NpC1yJ5B_TTr_XqtQOsoTFFJ2kJCX0SbBn3tX-swx62t7iO7QhqCd7gKewJmpBHVJfzDu7SgcDJ_dwE8CXIY-qb9Y_H2KDSYYlcOTRm4fPSx77uRVyUq3ex14_6fVPRnZZE_AWc6Y1fHdcXHMWu5z7CI0jXY2oqDePQXjdB8LKH1GeZzdXWq9lhaHQLa5gY2siggOuF48PQcD7CFTYXk-P17GjkPRHrgTsPDE8cY3vhoRDzNUWRyRhT1jXNtDCFg-N6ij2A65SJcmwwj3fneabl5vnnj4ahO4aSHh2aFZO1KbD8P8xVCHAr07U9HFTjvZu7un2eEWL14pm7t_Kdhyzb1qNqXAKhHgRmgCg6XOeR8056DRKD6DtPuLJwysX8TExMpeHch5AZ0UA2H9rUFKo5po9lFg5yuQ2RnfYttfvwPizBDFefj8A8ZAABpGEinZvVG0WB5bIPxHxgoDrCao8w-TJ23FkpzXJeuHc7tfHP6gNiWw5cbcJ4rgMVm8Z9O4A1NM05ClOfIFqUlGLbM-sk7ia8okuIVY6lqbMbYAfj7yJoNMEB2wefBB2YcZ9VWQ-lTzoOyDviwOmbQJYy5VwVHaiIEkZBzY34xxAq31vrK2EXW306ZYp9rwnyKx1luaWnznyoSrRh4mAMH_Vj1LZteWrCxS5dO6n54d3bkCGXEGVJ-ePQfeVpO13HVjmkAnhf3QJ3n5vFQudgKNb8VTmlqAkDfoMOoIcKg59jhRwgOW1JIAkdkFomR4-Jqgf06tG88iYMur2M3hGNMg5nmQN6fnmEuNPiFVzU-skJtDptBlJcbi0ijwn7gsMyqjJgaSh_7kx5ZxEFSrspiLUKnRzOzomXpnt98Kv1FZzXwjmFyW2_Bs0m9OALx7CkgTS-HO6gMHsjyo07s5GKttU3SkZ6tukWeeUTVmA1JJMUvek9ZIcmKY1ACgStJU1T_XruFTxWmoTpY5W2TDlSW9vlFVPChD8kaeB8048aNRSaVM81sOupUP59WrdWT7KTNdu60JorI_IKpL489iLgxs6oTLFSZAEnMP8OE8qdBGkvT51pzRd5FXt5hGIX3aCw6e10yNwAZEedE1X4nGurNzs47DCK0fFsAmBpuwQVxt_JNP2uJ-3blbj6Fbt-gsw0HlWBs-7_GJgcOLDFivcF_cciWTB9xSz38xOp47oPAh6E6vuJQ1YcZQHrOFl6-0aopM7o5SDoZgNwWrAnZBAfXXjkX67BtrFzf9f0cmASyx-0dt3dB1XwdzJR-l_eoQiuaidsm6iJLOLDtaN-RnZxfPSq7jppGZJuT9Gz_PWnsj8h2_ayS18cC-hQDYzN2gTTaxBZ4KxFGEzO5UeO6P9JKY0_Doj2YNB3IguKafcW9i8Fztv1Wm575O13-z4NYNIahJHaurF9bVVhZUwZkjnA08QNkV4mqgGVFC1cvY4VtoFpIk9aCjfk2ToMxHkBqaSwoYYOMkSrfWbTQFfQhIaF_lif_Em3aYKe1nW9hyknXLQ96KrpopT1NHYJsvuUe6HsEbuWU0fnSxfB3LPjnM-h5tF-zCsEqbbgP4joxAJYrUfKssqd1FztC3fNt6P99V7rY1Y8jzJ9hAPll-yCy2-HmzSWFJCoBEPZOfCnYmzUJ3gv6uaztRiFNrNYKGxNkvP_WgB3hDVppFG11OclQ-jruvhGKr-rPHDAYhiCgfwm50RjaCEuwgQdVSmZ5Yys9mlmkUTqXa_7LM4wUxjv_lSF4MX-g1kni6mbxT77_5lSBYKpAyOVo9W-WPOD8bsQSm_TroHLVSBjQNUOHUg7BFNrzFxKYbwc7whJ1wgdfBvsEHI5NBvyAbYGQwuG3ycJEnBvIPuCZixep9xh3YkMc_EC_jiNACr8BC_3f5k2edb8_N73Y21So27w-Nn79r8P6S_ihnlXHoYL8KRQYooxxUtt8aaKvzSQ4heoW8wOg3kO8z9Fy8JBMwK_HG7NFtc_gRYCRpIEK2wkNYVvU8v87uoXtthOIQsf2RyIH-FakHrg5cWuD52k5vyoHDHd5w3Csvd2bEMruuDPsk2ZPibMUHGPhiO7goz7RdpqcNYYMdfgWoIRWNjQ2MPIrd8cvzhL0n2wzZN-vcwQ6OwuJhjbkDJ51ZZUhlrUCXR3FHOZVz9O4bkzgoxB5De2LlOTSW7Vw971LRXZDoqhx1Olq9jUECre3lG-HawYh46cvHMoFpX_KsVu3ezIKruqpca1T1qQiuCGf4wLaaiS4VUawA1000p7Ms0pBuWn2a4y67t4AP5US87m_EcQ-K6jZ0HfhPw1jE-_tWtBaOkL-TOrum8AQdT-T4--VxaexGyYAuBu2p0kIWNm44zOcpk42nWXpLtH-WvL68l6ZDguBygHEACbnU-urJG8aWG6AijpeFdSyPWYSajVNX5hdpZf7pCe3VN2QvNYWVYFzf3Xf_YloNI08MG6ATnH42xkfKKSuL0--TB3fm_gPGFnjP57XojYjHbMo4QG2ppnt_NlGGs6GQ_WA0L10G4rLbdHJAP6vPIDoaRi4JoW5IKWX7FwTNG4NJY-nN8tlOlPbhunohEuvglzl2km85dNHtci0-6OhyuWsF5yHo2KrgOClN3jSN1YUpKSVVtGgsCgp9I2ecJqKXZkTFfWJKyASKNtpIgHR64hO3_uC_fzwzxwUYl0vzmy8ZtdjBjwCltPsyw384-_tMYBE2QoiADJ56AN5aez3kuo9XZ1fyR1x3zG9ne62flWtFl3y-3WIa3-rOEtNc6woOdZGR7Yl1bUv0iXqyM4rpgW9dQUa6BcQ37FIO8T2nmGXHbxzUr5pCjLdlNPntT1q3HYu8u3QyWtWLBr8TX8ug_whj8rxNNxdeE_DpwbpcvGfCedLFX17PeBfH5qKIOSSwaLKtCz_NoZjGHiqmSwxEbabTyoLwgj8132yN1Psf06jWfU4yrjOIBXT7ykLeCNUV8f5dHaz9lbEaFJnlK5uUGKsF5Qn3UGEJhBk9lXmrhwMnYF-P5a6_p4vcQ-xo_4NDROJmmDjbxDcvAx_Nb4-1-seFYg3t1w5wrJs5bM2xqe8HcVeISRc6zKPezdOSFAw3aK1BBBLSvI8h311sySEWayPiQx-wEXPdz9uWGFvOFSAdYNJmKswqIWhaVF70fqzSnw_zF_sBfJEr08zatn46memCxCkv6uA9jx67-hPXxMFfoeF8Azhq9QiHQCZ69ZThPx69XrSIkGQk9KSAVwqyurd7ePLxb3LD1RRT0442UR0oIy4yQRU0Ee4374f1bBl_j-UBgY1b0WSl7Prv0lHE84AU_kgQ_ZtW05dKEBXXDRzR5paEMbYC8PEM4A3cefQ1DXky5ym6DeTI6TDr0Yo1qmpkLKxq0xODVqmgMDbFT_2Ed0p-Ukup6tc84CuFBJnyPjZXluYpbhXQnmniq0LPxjTEGgy2QuWJ8BGtuoJ9vv8rggsIPWcRVXHoTuTyPUxK-AHSDfjpYzcqO2h5CICYgEx0O9MK5HmuhTYswioeqbd3PAT-Ij-xqO3nUPO6VVVWg9IYyBbSeNUYKCJ0_XSbtIYincViYKuJDx6h9EAYHeqgC5y9DfFtnTt2WCHSkkQh79_8aPanW-GR8ei5pKeAV622hf7pNO8OpxSz6nSPOFPw48aWAHecO6NiJbAFl_C4GCaZIW1X5T-tV5U8rUgwCRe5YrEBrWwsOoXpA5UKoGHRTuX1BRwsqAOV5-8SD64uRLe56NvOo7ILzR_eocgJiMB98Y_KSgTcxDyKhx5IRahw280_Pk4XG_QPJoiXAlR2QLMQP7DB2lmK84fA1TBZkfEX5snMUhp9LTXC9W63O5jY0CbI_EQ0a4htFiVuIM1eQa1h-iV5kkTT7d3UCalUTanYufqAIn9LmRVGw4FNGUKzEVSpcreM9CXSE_YJt-m1cz9u9Zn8DXhNK9wvTzEs2xM9VBgH_LJhIIPrqi1cSEG-BfnzccTY4mj_02-4EO3sTIH32d8DTsQSPxVuYRpw398NO0uhTSQontLe_huJhesK8YVkSa7whzsREREA7ZXljy3oqnJiA_PLBckiFwkSPumdME8cOdQ8VuPt9gnyyvObe2a4aWTywNbJplpkUJpqwf_8X68G1bJVXR9OGPr7_pW7Bsj1wspF_GzfOyGecxk8Oh_EDkgExb6zj1Kf74jneCTNtq159y5R_Q-kaRPH0ZggyncGrPEasMtv7QXNih8dmEAoYM5iYFgPiYXOnkA3Ewt-vU4qBI02FKtqo_kcCEJJCK1Eh8h3kwjv4kClHB2XrYDbHcy0nx2HLs8b2QrY2CvU9Umx1sK9oRj5PZmXUJfrkx70zGex1eloXloscC5hBiChTRql_l7rzTxWc6USkqdymhZdR6wjdWp48WGzSz78dS89bxuLmn6VvTwGkO-gmuQh_B19TwDAQzaUwD5o0RZbyLSh38hUMEnb9d130cfXbnjmbvi8sa_fiTIW5MArTGN1mwSM1T6xvf2cSkAZixnYyFNMNUobvYBBGoizSPdHT92vAt0OhOicUpVwb4bhotsDpnj2yqE9ulrI-UAkHIUspsq3bgnwmYwRu2lImdH6A2ktjrdrX-dZgc9IiGFnxEl-8rd9BzYtVxvhqcqr5_OsFDVvRnFYTVc_OaNhxCTJvwPILA4o5Rw-VC2F-ASCphs-Pmri61qk285uROYp7J3aVR9jVLDWLM5UnATxMrxUJ0cIanRZh3ugAq9e2Le2W1r92SK7kBZxi_yPYrH01aWdJZv3W8LRlZRcysG5Lj0DaIh7Sn6S8eCplfYxCZSWjNhXnwV_iSIK-ZyTOvodyPBsJbI8gotw5X-o_MjJ_ZwlMrHRndJSPlvb6kksjdKoqtMYEwMQ3kfu3zJd7ayohf8boEmBP-MJHp1P8YkH1kI9HsmFrwEV0GfH9cFlKqw7SvyL1P5iZ8nXyTU-a8x5OtI2yOk1Q9N-EQCo2t8lVKlcKh1iJcCFzztfVKF2q6OFaptmnZJL5-mzdk4Hns9j1EAXqvICBOj4jBuBMS081-xz5FZt4S5YiPWTeapY0QBNZFjF7u2Fc-6M-mi-eIS5QoXFQb_eYogr9-UKXSUz8YYAjDrwckIIQDWBPZzz3t1RsaT4FYovrqUxIDS1tcwbZ5qL7dOjnhJkhvq-jCHdQ8Pu1Nd4CmKdz_QI7uJ8H3LtaNEJ8dJtEos5hCB70owtnWxsHjCEdTR-WLmDwSz-aozXzbIzsR5uQ1YIV0Idq7xdGNigXJmEJgQDVHzcRrC2T-J_uOSKDl36A5ClCahJYH8GkC0DBfQzqGsw8-RGWm3CS2GwItfkms_a8umiuXgAXLgGjckYsoZizYXbqFNB_vs1p5XJBZYBRWCnunuySQHSedb4csy-MnjD0t4DquuyI0Gc_4YZg-SbcsVJ_xLJDpVc-J8N_N8tATLXYPNEVPUa4Ed5s3Ykk0NLGUOOebndP-9C_D4LXLOJ5u5GupoEusmSJZo5pj0rpmdW2r7hMyICVN9fg-cs0jBUihf1xh6rZpZ7pt858RJDwBRinrFZ_hO9ZdmP8klasOxcZveWFa9ceVdbmAaFL8PijKUwdgzjYeBN6826lL7qObgZgO1mhLzqb3vTNO5zUTFK29KpnWkqVgkLOejlCD0JRlRMETCGiZwqP-SlR1ypHSbYEaR7u9JpsDGiSbgrHF-f7rwEfU2AlWOPylmG0Hgq-3CkR-NsB0we_AHJ0Cql-9DqP1B7QN_-8d736PphQPYOUQs6EAVpGJo_l3hqL8b2i2T-EB9wQdiBOrvAdGCzKXkytUI5pu5RmzpmL8hPdfczgYMbBEQGn5uaqY4M_xmNZAMwmbrjLnazQ6lO0WM0IGCmZEfDo2RZ-sUp6SsyDfHHmq1ZPmJUBegB8TiI9Vle11py7NsofWRHO46Av0cAnNLYZEFxxfbGLNpYsVX7lys_bdwEuPuruIWrnickbRCZdvpZGxIJew2RU5VBYHGoB6PvauerxSa-dZWEQjb7O3f2w4RjgOcCtWS82Xm-Vnz7OeNVm44hCDi_zczgYTAj25NYVt7sHkfjXFVUuZFuGSbDl_kpwlUiAuJuE50Vt-kzQOGDV4i6yG8cPdBte1oEqRGOjqDdvV15GyldcCa_XHBH0Z4rFdk415TaLbKz--vfg41vPU_UCnpqL5Jm45lcN2sE4HupG1sunlSczKxdq68y978jmKAIRMAorjBkhbtLs9szFZGiHeiI_INi4OKKtpq7yxDiW4z8P7YBqOqhzpNVEapP-86uJJBMKxSiQ2IE48wpzdpIOshtQPBdzT-1q8RsN4Fs4TtsBsoodsZhUHrJ73iUY1_ZhcflMg1Astiev1xoIHHDZSS33wG8mHxYNfsBlD8o5SimrpkvUaM6VtIqOn7LYJFmGtJddzQ4SIzi9osOPxkkew3gcd3ZFElwqy0kmQCbxEnhYlrqJrrOlsO_6HWnb74T9XiL2z-uqbRe0dRTxYranjDv_jjM-8NSlaPt_ZNbM4ngzEDAPw558wvpSbYsmDUS2ymo5gpSkxZwuxnkVz4pn7m9L9dUGIR3teP94F08SLbVn02CvOJdtirqClqTywEpTCFf0xTou7g5NX9Phy-FyAR-Xom6y3mtE5G_P57mJf1a26IQN8p2dLDP0lac-a8u4ehB7ijbo--VCVO-q0Yfd7nJA9XpFnZGuORDFpZ0KseK3t0GxGpZgvmv7B4o5gmySFhjNvjjAYS_hhhRRzE8q3Q5RaIhKIasexuKaAPNpxuC534mWecsHNb2UCCz9TJvHJE9ALdQJRB6T6hWQTfwPhmEDuXsKRAlHni5amW5p28QE4PwoVYmI-AUcdLOMW_6CD-l0TwDbBFwFa5i7mev_Gjwd1HVDYHgCcd_5LKwH2_Ap1CtunGKny4cp2RWRbalD2tVkp-XErnn6LBifoN-uCtuH4fWmo-2ETrIO7mLOD-K76pX1WXBP7aWRx2bsDgkcHNJ2mz7X_yIb2g2jZYj0GtjkimMe_zbf_vyI8KKwn_U6OKaW2nGXFERd4uSnil_da7CMYcoKd7yR5wy30MsyBw4zLtT_1JhesZWdEit2wurCZMVA0chNMiwJOuIu2dbE12bvJ3LWtd9p1YQaS12w5AnmVTs9sRxUXxpFcBYdpyx2yEiQCqqwGVh313bP8LI20IwEn0ZTtXCtkSGc5CR7UYeNn5qq2OTDfrvN8s07HievXH5WU5wWqBgkfFhXNO5s9zkaAfHlkVqv4a6QaOW-j4vnmKYZNT8ylSpsq12yKu3lWOXgzfMpizmCR96vOVmkS2uw4Hu4sMoLvAXhAmmKgu9jAjHSBFukMIoVSCIhqqt4sk3z8tGGjqK4Fd9_4lsXk5c1XX0BffqXKcyhul_0FShPvM0PDyqAktrElGFMEDJNx59Z0c1mevEqgnslRvYdHKLV07n2alOpTHPcqMqERxtxhRDfKpUqMpkNQ0GteCwyWunl_8on4v942opRMXNrro4bSoNYmJF_SpFlqL8M9VOBnbfgRWTWxZZ67gjtuypKuKf_GPX1vGy8R80MNHdSyc6mAMRPotkbPShqKua6Z6CDzYQfOTia4wD3gok2rXCGQ4y7nhH0mjbK9Gr18wgAt-i32DnO2BGoiiNVPgvLBHTrqsOwsVXhaYoWRUgxuP9YkkmeSTec2OQbvN9oDeBGcS-br14_OnOxquhdaLl1smIs6mqpCoWhSmbIU4yn5uUYNztf_wTai3WL5u3aUNNvQBvShsyEn9KeE2JyKucpHHMn6SCkmnpuApwNoQ-xdkfn3avuZ3MHuJ2mLAPnIvFY9_7iSgaWlr-W1KvV3QBmk7176Ww5yvNYNii4UpJyQ_4HgRaoBNCHusbvGWwZwG7tm1U-LkB54V6Nuh6Fz-ABpcTgyhwd2jaIKd5OymUScKPuYIELOf4HqttI6dEdt1-gL3qhHajHfdKBIat-vXQBR9vyoyiEIWfQdzZkN5Tv4TMgGPT4Cuicg8jzIsuyR3prGh0PVEfHVFRSTOFOdfgDa6IF5HsM2pV8aJlljUiQIifjRWnWcSIUlh-hQDH9ydYnuTBk46y2gtTYYRLAalLFmo5Ut9hVBWppGx_j-FftdJZ7cL_Qk35xukguW-BkbWhjSW4bw6mVb1qlWPFMEGzL1lu9S4y1fsAjZZ6CvnQ0-gocopD2QnG2D8UtlGFNME5tNhlGoou5-2XA6k8usC0AFh-4pwQbWh7K9oAT7Pvzm_idqoO6i39SgOGUwuQtJG-1hidbglZvgruwY1hfrzMjYEzSwymhiBCrVJv6u6nsfMDFOh8XeWfCDAiR6QlZBmGhuF2BQtGOyXgqosLGlzuqQFFydQBVRTNupyq_nbTjcxi0t9HALq10kn7Q-RJXrQPeruSfHtI7F2Km2_2dJEYC_BseDWZmWTCf8ZMNTnXjxTZFwF_G0G9z9T39gIrutMIeJ9CL0y1jbvi9xUEAvtmIFmsSzm6pXOZSOn1_SQVgBm3Of5ctwiFu0y5FFb3mPcdf5uaFggirc9RazRW4p73SksB4Qd96OZ_QhVI-5w_Oino5HpgWOij3MlVZQ_O0EAQgL8LxCgDBo3OA-lXybPzVvrY35aLhLG6f4KTCBQlXCcBa_jaGVA5GJeS4UMVMO_DnPjdEaH2wy6Pzr7zx9njMl0DQN35KqofEaBGErjvSIKvtnWdPL87SXCrIxXnnow1hvrWfnMrP5-vIkyJ2BIuGdI1taubqzVaiXjf0la3ufHZvxNVhrcveXpdxkGOgQ4EUuAiNW8l_edYINPrkbkZJuNA_4SPEsKRBVDjkWjmdQ_N5IZY3nHC9lwQFnMUwrkuXf9Zyb4v6Ayl_iNANgtu8N4I7jLbX3kHTHvnPCWCJjX4R_Y-NUJ5HHx-9Ji6whz_6rvH1IxFquN3qYAgyiekanyPawxnUhwa16zUVw7IRNsSwPAH9cz1SiW5KMOBxmm0tCz0GiLocZJKVXaADTOFAPzm7B2-IgVl-m3QfV87k8w-mi5Kd9zyXv6uoHjPVu3RmGBt3ql00o9hirVZIKalSTQTAP4wEFVQ3znwTKfFneLgFk0ClZzED5EV5Qh5cUNRlw73pj8ssCMNOUqiC0lMTuHjQ088UeFPE_6bF3WZiKuI_Lf9wZ8Djf0a_iN14xBk6qOHagXtx6iVbX0xFyMikMSWfdaJGv_D2qTmmnFGQDX_xnzzbJGQ9w6sppKu1HFVxKFJ1NyoPpBv1Cy8qgwsxkYPbox7lPsmvKzUGkObCPjxPnhXCCEgI5MJO_0lT_5Y6bBllCOwYOtFCGsK1CHvCmE2LUbqhDOMrEbFsleJ4gFIdeL_ROPkaBkGZ5yen7eRB2KdmCae1XrDCmlPw9feP61EaN-62_PWkQidfWAcqL8HTRC49USb4Yp1iTLBxMPqkZZMD9UoV6mSZuzVVVSfCmni7GhvvjzH2N_gK4DxW-Y5ixspP5THZf2A13eqwqhw2RrgmRVCKI3FtbxC7gdK-qS3_gQ4islXNm8gNGz5GO-WdOHaV-3bdaBHhzlbD-eL4J7CCGsvATZA-4_wVedQVgbN813aBjkq4AhUmTtftortdBwiHsySB7-CmvejqNw8SuZRYrozCW--JFPB0Cgym0ZGsirWILleHJFOUep-oNZlAdcGjv7YIHQkmKouFVKPubeTUdycx9T30FcQBw2lxF88JmtFYRW_582wNJEGECwfTxb69CZvGgmX6ogupffV1LHTqutckBhH3iJwxik7UtcRy4UoHgifpP9e9X0LAXPvahko3RNtKbCApquwWZH-pvETFOuanWsMYhlvLjRsxPhkmas3fFlCe6ElPulAwpIYDiNlMD5nhaONXg-FEgNpEjc8qlC5KSP8imdx6OfiKsIVudH6d-ELeUU9eoTUa6ckoH9f9GtXBnItcs5alRaXKn76WGTKhKccEQyX9uc9b7lKDDBXIW4hlebojcDhtW7MqT5dmkyzBCgxdKIq4PjuK6GP71R52CWOMaba-M11tZySVf1FP7x79rlC_Md9mAgt69F7vdWMYCQGbKQKyr_miMdb7fE3xH6Ay60sDfIETtuPnkHioxd_w0FBZcNuwZaEAOII0irBBiCPVTK_Z7ZinVeONnbi_Ecszp0-8dIvtZXKTJCwDVBE1Fh9FdBEdXtH16CB6ablDtNASp4yhlxSGwExbCccIVqiLYFj2MUGHVeSXRkpUp2I0ttSvpIIYAnHwCEb-3Qi3lMa0FAGprSK-zGVsxtcgiCMYUad_4Yq-Bm0rX1BOuT5ejO0KnlUVJFvZ78Fan0-aERX5SdV-U6PQWiXaTOiwTTdgCY6iPdH5O7X4gFatr1nH92Bb6hQD0WEHmAF-ht5oqWRebYMEjZEX746RocOpEUkDx6Nd_dWqiSwS3Ko0dLy2MAypfF1IQck-lJS3KtoIvS3DLmNQet6xtw0wk_0HJQmIvS9Y51XuMwErpXrPrv_62OKlnIWC2m7Ju89MvpymozoVGlZQAbQkgH_KngffWLNx-MA0yzkcLJyjPY3prfbBC-7slrqHGoq-q1teGihVSGxb9ZKflfVR10WK7viC6m-817zBpUdyKIN9KmBXY4VbrMI2-OQ0cy-_WZqOame1zj_Y-vdhqCShWpdLaO-NNTbpn_kzgMgt_lgP2LIemj3YfzjGOjM712H1fmPTwKBuQ-02AnLbYaxV4QyHUkxzBaAnq9YweqMbZ9APlE452q4co_ovQg4uDIcHyVO7jBkA8ArZXqV_H-wiAmuFqtxQIlmvnwIdvKA63XpWhBUyxcAyXkSS_KMSwwSoI0ZxMIwJgNnfETGDRe2gGSBxNGkMCxdHoPHaVa-UK6GVVq6ivQB0rYPuOIQehQQSt68oxrdeF5nXM7w1xWr2nNr1vVv0dt_s5ovx9qCcbC5zGo9Hzr7BJz9NNVM9s_K1lbKRHvtbOGJl1QrQQ9S3hbYWaT_pWyIlYqHwfuXTnqPnR5zrpXlFBpV63gHLQT_UVqv1NZKa-Ig7z0ervV-dEpm1vJghxsQLX7D1ARBhgv-jvSAbuyD4PCTj7-NNItvokk5PxrfXSX1C-wxad8VwdJ8YpBOCY4xtAhAYm0_IXs0B6nQ9BVNF21of3O0C0CI0wOk2IjsdM501-RZg1wluHYGXxxqB8pYDL0ZKluM5JXn-WQEVF1tlrRpMnUjVeWBO7-SDfpOwZGCU4mzfSY4W_Knn4y_jEH-jzz2mcfja47entdWyFQEyq2wGPvWHfhmhDodozlY-6sFJ2knoWR6C1KaysbeKjq3jz8oJvQrX8p_rCEek93fOReGvMocExN9FJVhYnLYfKokZXxxsryATOuU3LleRnq_2taSf5L8XLSI9vswcHa9GFVRak09cx13x0du4DyzVToNROidpcchcnCaTQAdzUWxcni8yCDpgAY49tU7NoCdXcQtkX7WFsY9qPEC-0hcnOGoSO6tewKQFuxbWUCY-aWK6v1fNvkz2Sx28fZy4yykRsrFDe_Q_8y2QWcYSiOf_M4XEUee0jdS-oRRPa8fg2xHomfwFSWOlEapj6Pjt5tDFYBsXNc0bBdBsj3SwnK857oeVKjNa6YzjA_U4uN4STA_317UN0EYWHrcEdLtQcljCvPByPqWZpADRAyCqL5pUUGQ6RPNGl_NrtPtNssLXjWeXMl0AZRthCSb6t-7lNW4s_qmG3F_qqr_UL5-r6FRKq65qCn01ERkjZG6tRnMK_Y-80bIJqIYf7bXeNH-whsDsyKLi0d0C-riWWH9Dt4iBD1M6BcrjG4z4hTMlZZ7qW8kCOCfGOt_1iXpK3Mlo2WsyBGr1h9Ml0hz6LSl1ccs-MjBh1Tpiddg0ea8mvqiC5lzqPZ1yw8RTSwZJYrI5hCN22YdLBLeMKeLLux-wPSNYZ2c9KQKu1diigIS3nmO65FSveagZtazQamFkcK8mCTbzqonMh8L0TZVKT5MTn96u1Gts4mDnLRcp5_KkRESg-Eskbghf_etNIy2eBPsCBkDvVnu5-GQ0HHFlKyN_xDFIcpZB7wfWoJ0pDyL7w9wi3De5wabfw4kru3GKodTwDtSgizLQY_NxqH0qOA1UyMJQS6wVDnbe_zaJYroluzzPsHkehEGdG-p1D0UslX7zBSzpnbLcrRG4ma5pD5tnsgIflWvxnVyjTHazxwYMb_3HVVBjU_9jmo_H7WAvtQXwq047OYR3Mj_AbV781BVy5AWF-69miUJIc2sdo6gfxiunpIEM9JGxKkcn7H7wBeUfgFqJQJ3ZFrMlw4JLn_3cTeffV620ADw04HYShYJV36IUMxoiS_CzngDqY5p3U3ibeBKaa8QgsEqusF5NlewXrVg6GeDeMtNbJDZO4bb0QYed9VM4SdJdHgfBFotnCBST5AcHUIWCThRFo2rIw7-lTKRe_8a2ZLDbhYsBlqnozdk89udmeea20GEPPNBohefs-nM2_L_kn33rSariw6QgylMNG8sxNKETEihzO4wFT3HtniM00hsFOjujAHzvklwClihe_ow-XUjyNu5V6gD9NkvRJy4CXnutFe9JRZxAm8Yjfx_5EB-Icbi9-7nW-6lHRMJ87hz-HdQXgSkAL82f6kkEApyIw_fV-GYlPEx3CD0dkkaXH7BRnEwxoTunjjK39UoPs6jjcQk51rXUxv_r9VfPWgdFJVVHeUKg4IRqiOyQxl9z_ZB0GSV-nMPVPHgHK04Sv3vrXeyiYqzvjhZty2xSdosVrBXrD87Sdh-MqThjTKqBIGATA3g7ob4E7J67odCLMDYbc6Uqblq1_a3XIHSib1wm7q_ApBdc9spqJlIP7JxjNqXnq89csJku9qlxIme2HxIESNgLiUdeP6xo1TGQqdLjuVjZ50DkTxf0Ou8z1ZJU2Hf2pT_VhIgZI0rqm_s6IahZhYEe1j_LR6ijyYIAn4P4-Omg0SELJewGL1Vg_P4C9QKlKj2SqO1P9tMc4YZqNeDK--OEKOgvtjZp-Oyq-Gj1kxEnDxQT8JV-6tfiyEdLfvgJzfC8WnR6MCAvROpjjppTGI198Z2DVpgn0LvYGA6Zx9ZMwa9kkj5iQJZmEO2axG642E7ae0SyXgX0bAt-C58ZXiVggIApJpfNmjUx_VNTNMytheMNrBz9ZrNCgIFowH7QbhklFqZkhY2ABj3WfS7ZibFWqbEki9yq11X19tsqwnwd8uEx_cyfyTnZzwd-VyC3Qo9Hngaxh3qzhXJTY0mqM5-AoBiV-0Ufus7YEGoZR6bT9UMlKsCoFOFyPrKbt3o-kypR3zUyaL8tUbFAA8BbRNTQOmyu5_p7wsOJGK_ph12zz_lOrklCvtuXSNW_Q38Ytfy910z3tFp7u2MN4laNFiqBGTLU1v5vFARQZgjWRTR3DHEiV08dpIKdKMdBvUT4_qARYKXOXz09wxLQMMDFjDO4YlaIQDVCvjWbtvBsyduze6E-dm6DYRe7NUalu_QzzIZA-F8C46Xj84C-f_NBccvhXrbgrJG7csRGeEfy9ANsZooHNSmNnu5rcwM1k0cfVw9waHtzkqj7T-tTXcv2Y4XG-18wkG8ajQZU1OYAJQzmDCjGK-WVo85Sizkle4-DVlwZGGcXzDiQDbKNdT0hJWATXfAjQ8mL7wFvMsA7XbSgoEl_E1hqMlNwknTRg_qItZIab_DneskEbe2kmsMcOjtovg5NlXYOZfKWSPuxAhvNcxBWnyWnVRetVB9Y32D57QbW3-h-IaQceXJZ5TgXP2KD4OT7tLhhFs3c31m77rAftw9LicvvShgdmNyDqWRq-NqZpCm4kRRu0GbW7D4IrTAyFwV0HYfqEfRpwdLNVQt3-aRdsAzr9NwBwSUAlOZ40CWjkh5gVjTZMBWOKj9RFkVeNLuljH7_naZcSeP83Z7qdxRJxPoa6Mq70t-nFhR9CqzAhX6UKzSQfHjqfVEaT92mfK42ss7WYcznmiAmU1Dhqi_cmrZfTNiuJp1g9EmFGh-uyq9LjzX5eAjMpMgc2oyq2sT_ZBxZjBis96BCdC3HFHJeznYNauBLOlxefARWDxU_922fDCYwllMkZHphSwQLX72idYouE3K1ic7DTdh8lS2su8IUzXyaXd3HpeB4gMuLoJpQP0lZf9bPqGX5grzQljyKm1t532niHOsRJeCWWwED05G0NsO0ksqNKcj39h1ECca7k0xFs_-TpXIv0oQrzSQddtKgYr3C0fxj3iKOFhMVEUd8EWOb-EbcxqcyR9LABdv7YHRJ4vJIDZ7GcP9ekr0myxiOAFhMkeNANYe1N_vx9UaoAdVR7o5mwH68M8ztpMmYOCd85KYTKk4DmcRmFLwboT8vdc6NAeI_QuLJ6L1NMaHAo6AXAb-6k_SNGK9kMPMWSx_xjAG3zXhY91b6XF9aZuAhSjkXNZ3n32R4ERqwTNvhqHEqnDi-Zz7sbb4h8BboD3tdapW5phKpb1a2p9NG5CFCYGqpb5Qko2AEqwCTWyP1XexxWUKmqWJoDgbKrICHXoxKlJNalUy93IRArX_ZfrSvZKDkp0hAdyGQNs6vU0ltCVcsZ3Whcs10kri6wPhVu0K1tt8yy8VEUcB1att_X1UJs3e16L_ouO_baqCmlrVaj2NAnWh2wAhn9ilz0MZAWoyz16OCo9wQE_mDq-9fC6v9w4DQ12GAR7D5iJ0z4guORTmdKVuyt9TSWD2t9DUGIfcZqJGdKahx4aGcoH2SZrHjLfV78yyCm3AmhPGRk2R74efRVMOS2_ASII2NlEZRRV93lDsQqJXkYDHBRe315GJ9sKmUERDAso1ch3WeMVK1fukIYyWsyWQa5Ted_cRadpo_4cvU_xTon8sTYATafJ8oQLXMVpJKcqhq5xqziuOYhdJ2-VUyapqD6sL6yJ-NA-Xizk3wPwcoLGxe70xQcNAvbPQjuak_4QPScYTNiARqFJtzZf1Y4108-xV17TECZqxLIZg5dwCKNqBXNX2rhPMi8JCXMV8lGwu_xJFjafSHGnmlfVag9bWR2HCUG4sdYlHmcwU_YaCKi1z5tIps1JfrMlX2SbLSWRJkzNiIC1ei5J3XT2AwfxYLrSoAR1x2wSt1UIriRVruJ9BsQhS1hlOWsR1gwyq-RWU7PQK7x_22SXhVG_7J2xmubwtDWngorao_vB3se_ZM2fczX6kk1R6KfukkBUp7rmgWF9-AZQYMyOkUhwhq-OCdksoYOpJZ354CalafLeQsrzk0ZyKCSiQScMcHLVz4PYSF4TRF6VQofkumjg0PQVj1LGvu5qcm5Ptvaxr8Qo8MGImB67U_BpOsG_Jh0Agxk_F-jFb2Mh0t1Ppgl-FRZ52qq2IvSKKN8fPmOxMMxjaXEbGV3Ks-rox6Q5fAJhb3JnMq2NJh5IhAwPrIXCcIRJrp76e1Yra1L5_AvHpo4JAbIPmWTLs93CCyRNZvGeasZIic7XoMxRl5WODm-UH1HUQRPP8Y_R3OT-A8SMzMED8B3L10OAdsO3hIcR_DVtIzl6m5OqekZuLE08pgnrDANfHMZYW_Jfidx_-14K0M-xkvM3mGwNiMQfjD7cEdF7LksQmX_VD7fS5Ao_k9wxSMknifVN8A3CSFGODy_WgZXlqhQo3zSP-i_M99ymKNAIlLHtWY3kkh7ZrWzzTY_dXQ62umF5bV604BuAPSm-96PBfyRYVZMBKuY6rmI1c8mIvkHsvx1lQjGWTtw-yNBL_9KKfefVB4FTO0KukU2YuIyTCuVMADIbepdsmVfV8FKlNfZBjTXOKJk1IxAKMZ9DvftpJp_vQehrw6ygPpGIohpyVTBONVjnbyhsniHl5Io73vl3CLbtzKKNhmznKR2ZfaP_zTfP2X8ay0Hg27WxeJSUeZs0TNtCqbnMd_WunCePAY2afevtcmD4fw60JAXxPAjelF3i7hoYu0RzUt6rt9OHMZz-Rrbiq-h5w0kesuewL6p-XuFzL_b9BUjQ5qYMl39ZmPyQfdnupLppQXx4CIV_ZKKXDj56GXQsCymuBOjvwhcIXyEQPb5OliBI3xMg5fp017Px3Z3aupxjsfRB1AxBMGCMfFJn5HdnskYYK3a6WXq667YYnyvsnGqPoAsCa0Fk6jpb_yRcqJBQQKe8to-S5Ho2nk-r_vUZesVqoCEnU8_M5bMas4WEMQItwPS4OJ4lziB5zB3VarkAregiwtydjKkX5IqPdwkg_VdobzIvEY9ox1iWwQaCxi8pVYgOzmD_MdlpWBM2tztD6UP8ozKC2lsPk3qJIIPDNBjTBfFYOtqw8ocVCSls4UqYyjOgs1o638ZowQC56lvd1YfZwO8StTbP8XZeRkZYScG2AFHd8g-p8PuYF7Gjm-l9y240c_RfuJlXRtORkquqJBVg4ZkKCHgmvD-kIXWNNjclEvY2xvnJleJ-BBWpvzUpGrNz4EfuRaYy_9oqIVGjQCs2Hw3DFHbpUCHbnWb7PUYAz3pd9nWfqpPPgwRngSwv6ghQ2n9LIBr7x9oJ5-e7pIm1mfQG59q8JbLAb8XaZtY_ode7OEELmrnpROFFFqI1wv1fossJ7qYQ6btiIaJOtQ_keIVYlX71m_Rojwyu1qW8q89zlbJ8ZIVMUdoBKwe3C5wVxRU9s0dO0hmcJsDtCpdWaqW4qBjCY0VSp7eMTEyF_ZzDvAgBt-Vdby5wR3TMPG-qEnRpVnge3qf0e34TJmHJ5QZWOFHRlLBW1P6VqjTS7DUJkpKpsVoBKQXxpyWfMYcPmUdCOjCP6M0SWpKkzrzdS8j3zn3l7UkEMUKhos-d5amO2E2balmcmyroCPbWXFcLNI7RfRTge_YQKGA6bwsVm7Luo3KXfb2OxRacl3K4kKHTKPJXCqc8iGm-PRXGUkaqxds1O6kyU4x_YwGacsUYcf_Kfu5QFiCbPfSY6UEn_h6NVMPQB7NTEo5PS9Zjird-vDsimwWkeNWLCd4oCo-pG-Zj-_dA_fbf1gdY30-FapMi0DHf-TA8pxsHmLnqi8_0c7rlG0Few5WJvyAUzodFA5Ba9dqkmkn1u8dFoSifOudSQp64Re5HLj5K1pd88asKx4MXyBxnvMzu4RiJKpKG8XDgPhMYbtjW-QZQKbG9rdjNVos69h3ngGxfRzyT_JyUts5-KmimEyf7VHq6h7AmTTvdnIRmoOY0MW9cPq3_mQRQyEgAf6BqekOxNLvGYoqa0efivsmEghxB1AzZZljAQ7xBPWHo9ZfzfW68w-m9Y6wjNQHlM4JVBWfqzM-Qv15JeYJ-WriXSI0DkqSw-LlNfBveR3RII4r3ZCRWtdU0M9KP1CRCM98uhVQuzXzDumECBD8VPoTR2U0BSC2hpuPHqP5nEGwlkJKNZvs68qoeIHbCPyl27d1ElwA6QMxqpJ4UaW4nE2zH9S_HgUO9OY3GKK4c_ULEq7ePYMGyzxzKReawqsPklrJ52RbRQT_LmIltuvwTqg5iu8zLcBR4FLC3iAT3FTxsNFVe87nDwanxfAblLb4A6QHRmwXMo4BqRkFME9KiXkTI9GSnSy3sKcWAQ8EfEz9FkRCd82MkyBn4FovC0mUox8WIyV3149yzs0KlENP_HPDt3Up0AYHkNbLJHDgpcVrRlvz3Ha8CLURM3fpQqZ0MZgpTynnrH8HVuQmdf2uTKuLrm9E-2Us3So2RrSctmzbvFBTDYvZKBsxLczZrjLV1SB4nq_gW3AC3PtW-NCX_NtRZIZyE_ntZsOpUDoF_PUOVLHwelo7gAq139-mJSLmkVnm77pojVfuChnOZHj6_HDwH8JUTA6mg4_uMqhfd1z568fPgfLxhqcM8S2x0tLlQ2A6_TuY5dLnXEEoYKF0AwfbOlJsLpihqPsDPcZsKxBw1EnkUf1p7Ipfq1r47mNK2XIg21AD_e_3ZZ7fMAcY77_HENhve0LygItxz0MGXOUkMudfg7z-OlzdwPPKcSzQtDrYyaU-XOiJc5NyoE67Ydkqcm_kwH9eT1rdVRyyJ2cznIcgLT9lUNAVQ1NSJx-_gxq0SXXOf4FNret67cFmdjaIRcHzUuqTOgZBEUVlL-QILLjL219mpKx42jk_TXmuktW3uVDyoGdiqs0zUTFy0QsvjnOG_i0qD3rFL45dGpqyUH8walXpYvj53UnIU36mfIUH34ooOCOBnXN60PwxoY-0l9l9P3vRCn7wA2w-k97Ar3HufxXUL5TqTQ4hD6jxFib-ioAc-nhKVcVq2TrMSKshRflLAHudC8Xh9khQoS_DR8_xaqaAaVeMEw_8Q-aWs-ve8sy141fHT4mYuDq5KHE5VgM3OcHpG-S9s57dDmmglqWLOmSdYlEreUtPH5DO5GTVshYkdt536LODUoQNW8LzgLeMSw8MRnEF-PlzfvpSjbiBcDu5kD44fe9Kt0jNx96AC9kxCCXXLDjWFZn7bHQ6G9WX3Bg8V4DzW3N1uExW36UJ66nNxWUlP3Kxayn4LwgkjKK6745jOiwnhkKOUkvHsbrl-JVDQD85zOGPaV4VMXzL1Cpp1Z9GxMV5Ukmf0nVJM5PNsLBL9QirZutTAE0tG1JkZwAJ4cBDyHe8rn9QkNpgQOlPz2lUtbSuky524qJ5q43-QIWbMciSyGDx6ehx6ezxhytutFdzq9wJn5vsDpA0yIjX9p0pmxIs6czOgqWi0JIWfzFhNLft3BW8MOt9YPBWS-_-D1jQsDnIioI6gD9zFJ5tQMiPj01iiK5HPgOV3rZyErbqoOWH-GCa1S74O7rVZxGpYVdEUrJbE5NRsoW3VtTbunz8ehpDmak-wx2oHLv6s9mfXtgjwqIKqEWSKIZOuehVMQ27GFU7BpDX6emZWJj2M3CxO3fXL_NoRH5UGNvDaQ-bshkgn7RvmrEoh-gkxkR7g0tKlBqkmY456VvhltHQvjz3r2u95vd8nn32NOfqyg4rUqiaOT019hDP-JKXvcF88DlJaE_bZ1MK07lpDXbO1aGfZkzRYy1es5nc98KhdoD43lS3N9QT7_qnxuxFuvv-o3QXJOZL4dkIEv8Xt7rhjwPrzOh5HzBYdn4eQHNd_iYQYn_ngRq2EjOYj4ONLRTX0Giy9ErMm0l6FW5ZvHvVV_RdUob_Eqal9ItEQwaycs9NudGhiO6cjskhONU5IXjRq5tlH2ltTfCSNxauEZjRpBLtdZ-xHaFxs2NePGr9auctWLDQPr20ODcmiIUO7xqL6bVj5WoH09oIVrMHBSEeHiXUkjWm655Uhfx5PB4hFgmTEJbMEMp7We2sjHoUtGMay9rCt9VbvQFSeehW5EBiaoPnw_Fe06rMs_boKos2TQPfR4PcNMji-Xe_VrwwjRZUGBY1TD2n2s2Q1_g2UOrL4_byw5X61olFwWottLFXup9F5HtAlIqmoUQAwB4v--C_Nh7Xwg5RGF5Nc-AwKicpGbGhJ2lmfTK54t2M2zhCTbZqgDC2Zz13O9RXxOaFlkwQQk_I1BSCSrQ1KQMUfJSnx8DQRMsWmUNgjtpV-NZPRIHPoAO1IP1Af8Dctu-sgzFErQY5w5BtyFXkb63GgjucBrLT83XEMZ_j0fLkK5s8ZBsg4Zl54qnePiT7TAOXZ4NQzUiMToO5gsceVyF-ryWyflyr2-LURrhXMN887i0-f0XyPlvurrssXuu_0j5nG-6fva2-6cIV0axOyLblkZc4fnQ5vX1R317WnmVS_e8VG5GAq20aUkTssdEuswBPdJBFsdmFotxCwdyKJiVIh0j-o23v9f2Ow4FcdwpT3OJBTZsGj4F453-QpoCAxCvukDlHanchdbO0jjeRUJGDtSAjuJDG1UNPHQQRMDpbXBozLZFH_F1DT1uAu1YTcYMO_ORpd8Mknth71wUOUzybi8EHYPj1fICVZAHt5GNr7MjS0LthLh62t38Plygu4lGRKgJjJIWxMGwCXywKKazrHqqp3MBKMzuSY19jrkaz2fk20mP3WFNjs_CMYgIp2HUNMrYIsybaprNiG-O9nvYc8vaK5ug1KkQ0MJvzGd9X6wTMJoWtML6F2SRoHLsqv5YpAoi2jGXhWbenudV2BMMyHOFj5iJvxtuZ_PdI2L7Hx8xrw0NCSd5NVfe726F_FK9Vnk0vLlRvPlvMfrA6BaAzSifL6iZw8Sl_yF47xijm6svAdI2_8XoRF8j_scMtlSeYBmhdHL652_rG9_QZwyZvFHQ7s5i2aag8qUhYysZcbTYToo92QQJtrBuK37pXIg3pjAD6r2_X1w6SotfxEiQd8WnQL5epCkzBIQGxtQYYJsOwi8u3pUcVOQh9f6gAW0SbJ7qx9qMBbT3kLRcls6DMFsi7LCOcxmLovNfpoC7P2d1r5bt-XAWVrdpaeeBZlmqZBbnt2y8bYL3l8dCDwCNLqdkAbjVEl-PbKjpvJrSvRBdyzdVaDaEAF16hKjYe_NHNTNCtS1IgRlzveH-b25mK9UPUGsvp2L4haMvIqkIiHHtChZwXY5oUQc7tU7s5cqidUyX4SEfRJ4rUyD1QnqCm-uy5HMyS9f76ETteHuJ7WFUHQ1YDOPpXyKGlICu3ojE6l2Cfc2fOgwrzQZlh5OQTgha_daSsZIBeHOx2j3l8Cn-eW1LggDddUFgxZVD32-mgG5ARknobuoK2MW6HEr-McFm86ZIZUq2S1el8Cq6IDpKAa5YuASybgsWnE-bwsggEYvsLQ3caEHTJzciQBI2vE1CzBhe5XPqd3brKah_tXz5ZRxDtC9GtvR_U5pwFQrCU7vMQ3kPeNQC35EvHJks6mHezd58ysCvGr58g-6_P92Tnz7wJ6QVvnwqhYwiOtr4g9h9w7_lUaP4Sui9YVdN5_iPlJTfbc3TMwocv4usoqEIg5H8N3c_8hwjFtRBP_OQOqD6Lzm155jHeEF7ITnCBaMMjVwdF2aPybjwTstSC67T73-axigNfrDilbrSVvqfX62RryBOlVwDpeY15Ax2_u_jdpVmCZtRV6ZlXiBiWd1aEK5aMjRauqu3Vijm-_aYqOs5UIePjpy6zY-rzfxyMp96vRenHrdqdIuPmh69AURNt7X2rGoBEHROYB1UhRCR7DMEeFvjGtmLfVot7bYwacFa6-6BCV8j78mnKxuQaQahZFR99pHV4Li-KHkI8WBGsJSHITiwo3cwB04JfWSH-ubOvcaso1l5MBx5JF2Y0DMueGRraxp31eKgPjoY6np1zT8A5M0MnPfW0M-R7paS8m2pUXCk8xjrrC5GIp5xrDmXzoHlOcK0v5G3us64pcNGm12ncbFgqiIwsCnf_aB-tVAnGC-S-JQfNvyggUdWbUND2HExNWSj92zml80jk7uZOXjvT0Gp2yb4kek98NT1yd6NddKlQ2mxZhWx1edw3wiocHnfvq9Eq9wkRBzlb8scxLojIrtWfAqGJs0wl2PoxdE4X5ujxa2igae4riYxk2QupfUTOXTkNMdQqLGqynutcxYmJyJ7TMXr8HGbNVKB4hg2PdI0q_m0yAII9RzEThv6ImQRjWgDwAC8D9FD4WqBCwuf1SimVG_id2PdIwlA78FEF1V-ami0D_GaW4NEr9fDQMtF3lHjUkSp9TZncNA5izx3AzwCaAEtJVEWj6yk3ESf7ktDP7amdznTaiidL-fCl0eeMVYeY5_vvzEXxUOM9XabYeyDeyJlfxUhq0LQazVBW3Vxu-rDjBcASBL0T_xhXAFnKdB25B7S8Q3mAEoTk8-gOY4zpRv2ncZNIqmmZDoQsC1aYOchkWzpbKBmCcv-jEZCDzzYyjNwbSB1ODIyqChvo8AcrfGBd2TohZS8giNzjw1BsQj6bpa-KxVJhwi28z54RiTP7fQPR1J2M_DXGQK6StV7Bta-fL2vSiOjYlXy78qgJlsj0XWdUpC89Grlu4hqfLaKjpbCy7KKDl0P6q_v2YtGu8bk5uHU9iOS1b362LPLk_0_ZueIXNgh6BD6amCCH-KlJ1bm4N4y-_yowEzpd9Mt9lX5xHF7632RsiDIG3nB8452FrOeOQ28RjGByPbyJt3uHm_TOXKFjFiNn92ZTdhEgldsi5mSoAQ-Ya-Z8WkWGaaBOaP2UdV-PWW_Njlus2nVfkwq1QWIgJDV8KxFonzL01xu0YkUPP4vo3FsdOZ2G_6qS-wd3RYXaeAD08bu1PZNPJ8IDaSU7-gHNdMiK8OjS7RitP2xtMz5P5LBOQ9h1DcSFyfLRHEKzpbCYRoVTdMVe-EQqgASkR74tD4wDJkqry-RKZGFyjWA68TDWXlLXyj00025D8AQjiUfhT16n9BKoWa-XwTVhux_YgFBYD9ilKdwd4Jl-K1dG_saq5cgHsgQB37Y1KefAih-uAQAUc2Kgjw97sStj6OpjAhbv4GqckoSX4raW5KjYwv5mRzptB0OJHzE-q_Krem-AGdkO3hW8yoc2EL2wK578uKXRP2XQnq-lscoJEOjixWeSG3tl0MdbsFRg4HoV_KV67RAeyoA1fE93QQENVR8cx_cluITFTi0WRdO2UEyeK7hkCVPl4PE_eQB1Yv5rwj7QXE3EtEFzlYd5nvtTuyqYYudNdOk-Ll4icJhAItwfOMGHcbi7jm0i8OvedqAn-xItCVdnod_bBtSPdR0I9V3zV4JyQb6MOTdGSqIo_KEclSULxaUlWtSMil1FVQ_0hxwXd_CyPWXpDAuTy6Pn7-M7ItLppdoVt1hejkHt9h_zAICxNLafmn-d4EJjBsNDvsVSYFTls_zU6517auK-cISSb1yw74gyNy-SCsxebT2aE8BmXyyni4N1Bp-uI5ysT80nuLpQBSNBqsy85iicE54-tonjvu3A8Wp96QWrMz01d25cbTL0roe6AGyvLlbN8UTgXK52WiL_7AhNH_nLsfKItU-HRTnoASFUutPmiDcvTnIo6hhk5npUfi09UVnpApDi6ijaquLzHodq36OqYxC0uWvPOBEAWOc-h2EXmqoFyVtl9TeVwzrkkkgCatIKEzZnVe2-S8Z7bhGfGHeMyZKHHcwBaNbtGAyt4-4RPvjvqNghg9cfVWn4bclkqczEnGk2kXxMD7s7seRsV6F5MyXqfBmZdAu-GXdEY5POwPOoll_EIu78rZp8BfxPcmxhnETuvRPJMAtNpXdAZpeo3mYozb4lD0F6CIMDUJtoSJyh3kd6nAxlJKhcNb-vQ3IsGGLE8lF8R_pg-AdG2U8s0ncqit4dnuQPY8kIJSmZzPmvd90yph4vzIQqCwfLBqGnfIH1s9euvAUkFTcExAgoNROh9GDNghKe15rlWP3qLYFGVaPXDb2L_mJLSz3q4IZkwUYzkw8yPu9dNAS4bunLxi4BvmJC6zkaFtu7ZTqrQ4QAXg3BmIs4xCFM7ZJmhDskwr_gs5iCl9YI8ZEp1ik-8n-xcrXd0D58M5N1T2MDLejspI0zddyLBBsTZhMACzbD9fCg3SkohMjXni21wcgIJr92QRDxDUGXtcj9ZyDJonxKRsaj70RlUZvMSsoqgNLN4p8UhHmo8jorS8rOmHFO6M0aBtPjw4xgg1Y-tdjMtFWCMeyHnVupWIySAwMroZUN4_YG_XKWdDK02t-LRjRuAEXiOLRhCLfOPRqxo7b54Y9DeHrewpkkHQWa87fQCNU7D6cEjdnQj5yuDaH20wI0m4PckQn54kgGbakTv45uw8IjrBspDcWTdAPFF7InKRAqtlbAK6_u9A_qj1Vvrrvn5UVnFK3iqW2Y0_8hCbmUGF9a_SBilGwsP6xOeXA2nh3T1uIjZp__zvwph7B_FfAxfL4gsKXgmq-ZJS-GAlcT0aM_z0jTMLOF9K9z32jknGz0Bak8OleqwJXH-Dd8pvNRbwojwu84JHsI68op8Tt9zdcIyRFSSz240c9YS-saT4KpkayUNpG2gjQiZ83Bb7V364i8Osz8ca7PB0SyAf3i-yrbJvFrWkVuCuc619eDrimy288cpJfBzPzgpDS9qF-sA6MGpcJmA3P9LibxI6OOtPont__oi-ZpL2fu3eYtydipsuJd3SqAORzoFk2WGoo6g3Al10N-trhNPpaVw3GtjJi34khdNXMhjeLQj1HnbzAYlkpJHEJczY_HOxxY3aCL_6VH-NEED8j_O0o3XqNWEWZQHufRDdgt-Y_4on4IqtN2DFk2SJkqqrQvZynNX_NX0SvGfE8rWZf5-XtUI8p-_zTUoMHGjq1gbvjoYeXJciSm5kbVj56y022tL0i-ELjdbixWg-8Qmo4mNTrv7JLF8KOEHRdcBsjzDXdcXOrz3k-K2t0c1qM_JTcmuqYqa7u0fDdU9iwqHCdMhLsaxEXuu-9ShnwqoQHaMnCoHL0cVnl06TZ7ubceLPi0vPt8CsxtY0_KjuVDGLa9EsK-aaDVOfrDYQah6qTiGNR8ZOzaWIRgZjmLqW8o_LFLZRgOPeo0sfp5pLYShBH25l_k3Ncs71icRU6z2C510kcV1YBNMbqpfOVQhKDYIN1-8T6sdEjel4CV976IZOPLd-0z8U9qO6Upo9ri4uCr4kc-Qda12jwe3Lyw5hogdaMHyzj_Ye1gtGwqlojY0mlh4nAvbsmtZrLV3HFZIWKzC49iEHQ-drgD4riHkvhjQU1WL0T57uDKFC8icptSt4KFgsewe7b1dlFYFxic3NfnJvuj9bZM2wKRacV3bdErN5_-2wtJDFJNb9Zv4la3tfS8ajLqVSaezBxsbF8mnEIkNUB0G3zGwh9_9zpG4ZayQvLtMv14PKbq961ocNbVrOGTd4qDWU1sTOof6d2oTLfHj7kxZA_I1Xyp0q2YekjjqHn3Nk8I798cE9BPvU3XKowIKtwqfu79ub6DEVS8lz46MjfhA4M1DP1rDkWf-9fnG72U82yFiIjzmz53eDEdMdZq11vc--CPFiTyNVgnf-wHJneMVYu9qRlkXO1Y3oeS4M3kPSXNNxgfH6fZG-8we0M7-ZgxxFR9OzYy-Em1QQfBG65iy9tWDhidQyUi-cY3Eyx9pOnU-2QeaVgWnApbfk9VRbYbZkcu6GjMli38ixlFiOsGa-ZuEa5NiEQ6CxJpVIKtwgldnq-cdneoMOG4QJYJGJ8lhioXi6QqJEjuKsLOWSwu8Rkoq8TXvwmChLIXkQKAbUQy6RL_evDkTUoKeklIwCLR3uhUW9huR5xgFxYyHwHikKM2MHX0Y1TTUt_F-3Mc7lY0lw5w0azXNYpB3xO-JY1Z6R9-wJ2J78vRFYXWvo99MsX7EofzytyU83F_t6VcCbYBl3equ_ugEzpzDgXEMbi67p2q2urEip3Kav95Xd7x_jJ5QLhIa0EyZfSyOPZuNmpCorhRu18hEr9CqGndh9a0S_GWKmnX1S6iEcq86Q5xWzvCzUSYPtjkH7ww32hUQfYITsk1E9V8i5flPiZNGemATjz30YNvwFQAeBlOwWEcTw2lFWXfnVnCpDbOm4jU4qvZ1OwTSP5OO0COknJ4yzMYGmchKeayolXVGdkgOIJQ9EzAwiTDPV70evaYT8W0MHPgVKGSF_vKTvi6o3S_nhd2OAsX2JiftWVy1kRNB-zru1BtAxVsGq7pEiVE5kPogGwYuIQwDsU1SbZbGmas0ARz7UHYzTpezUW9H4R73twfNnAKwIrGrlvSBimDR6F0snyBhXyo76pNNQ_Be432Cua2Mh36vg5UYrK8T9qWF0PdccRIihwwF2zIEMkgNpWcjpdH_qvTTorhOcSe5XUIGc1vHEM4YdGcUjFRp-LdQtJG7wVoj7nHab3TnbFeEESOqWocvy2Ljo2j3TGlatT9t-_U1NB0F3zLcGSlCYIrH-7pw70KdoD6CbIcoL1X1Ll5jc6lfvMyvE-o2ygAVVwlkZ9cVrafYqpqjxeMAn7X3OVSXJHzUEUTAw_Gm31QEYULABNTbYg_gYfwRn8vgfqgDd5bBuU5Ob45KZ3HxVwhChi2L6yuY667BYiOCAN7d-2ou9OhL4vqVKoMwYdVBJAAYj-SZYd1SFlmJLwrg2z1y-8az0vezqUcDk9CZL72M2mKT4Jo_DaOlLV36GXe5zjJxNOvBB_JMEHc6KkHgXomqsmVLEyAEsLONnbbFqaRpTDlxCI41H_yhjuQRQQ8Y-50lR1_RCrUwbZxS3JmwUzLIwqrGqKTuGYPg-uGBIS7CgqfFDOYZZu9v6pSYjsCebj6dSyRoRKfRR05YVvWF9KGeNvRUT9uuJB_3nLSp2rPJk14eYnW4z0asxDqfWZh5At7px9ANpdZfmoIc5ku7Ztoat9nR9q_35_dC_n8JOq-Sr14WTcXRDdjPSOwrKHW8XdQMaMF38dez7c6Ct6ncEQztUkyowipqNEaxxsRLNZSOivf4Rfqm2N4UXP18D5Gu385QjbfmHfv8HtqYVUWXj42ZRx_jONfD2HWjPYegm05qte3oUNMnC7meJzob6D39WBkyJGHbMCzkvnvuh9NDo4UKMQVHHalQf8cASf2Wm5n-T2_lqnbshEeVAVevRhdIu1Un9iWvEdS4WHPjarRVz8-Eocj86xjebkvosZJ2y7OMVFJ_HzWUx-wuAJus3jGYS-fckLd2lnk_MEjETJ82W6pxS1LAfnhwOEBYQbEvCJ_HEZ0k2m2ELnGAunreqzQ6STGnfnpN0bv1qsodrMkgeyYKyO678nYLsIlw7dnkuaERUmt1HgMpD-Fhiu2fs4Z3FSFGRz2CExNjm7mWHIs2SrnhPCSE25oWQSSiUBMz4SliAOITobxnIRwpD1JDAziPc6WEZU-TEtBw4ksT-PcL7rb47gWseNAEcVNogFR-nXHygErIGmjuDMZSg_uIy43gmn5x6mBvBh8iDlrGZgDWjMlryjQN0XgFfjFKalwgSqYYElGXPr7xsS8aulTD2D0MderybfXWVfBKvr6kpx8IQr-Ait94ur5tmW8SEZhbC1Ne0clSU_XgBtZY3OuhwmQDnRNNUx0vi0H80-XfjU26kWAIKy4q1E68II3U2FrW1id7RJfjo9OqpMbUHomXgZsBNDEJ_6tcSq29LveayKyRJQvRmSR3bI1_iuN0NPVEcPIl0jnl1wRSoF85Yj9J6sGLeU73omTAGMISSFoPO6z2nnwpOSpBiDJ3U5SX6kDFkCkopbc6emD_6SbrDPliQYz51GQ9pBFQpzMjn7bmPjyiFZ6Xq4KL-twiUJRDGlXG321kZ92Nu-KP96vN1aFs7Icw8pzO87xMYmZqZEz5_CsHxxRATgB99CH4K4NfZOpN0qRCheizgzB4a_FxrjUi_LHsFHAWtgKGTcjVXVDMWuHXnSjhizu7rJhj_e-ZiJjHkKmmKSQRWQGoMVDe3J4_T9COOGdlOaHOrlLW_7oW0_2BE3WsX475mcGT7pooyGY8xDWCf1AWJSI2NVgUVTHeBhZYl-mGHk-5uQdtNQts5vv4h6KEVZK6cEWiA6FPB26OihRpOzieqIrxAqb3zzE5r0P_4BBx06nzAftS4uEA-ch5WUjVHaqv4s8wECcsusMI8XD_y5CHVX40ASUzcRUFKsZnQafl7upXgLG3u73Q1gGPcSMyxhK0UcAu90Qk-_4xfEFSbXMcSNxWgO505kGJT8eTXvSLfqSWJTEXtyb71Kw0WhNnicnCODumPfPyUNyd54XhogcqGePPqSBIIScy-ySbmvOhCtyVrmNPIw_ZBBZSR9kggBpkOKs9-2Iy1b6tA6Nbj2H33K7PK-GlofCs7sBpTY0jHBiM8y-JONpZuh1qA9mbH_T0AWFX-tYN2wkrHnD2gi4FtAK4KMSQzCiDuP3MIEWhjbExJHTlvefs-9djwdbdcP3D2V-2V2Jm-NQsHooW5hbBtxezz40rEQbT2mzV7ReaYXS37V53bim1WiY2Ech3SOrWAnoqIxfWNGbuxK3G1BDN2PnelkOCZqjUWFbrBrSoY5hgzeDuROXX3qJ1MMYY7KtW2N1CgI5k8LFxeBMetzKEaxX73yE1nQFrXUJ1ltbSAibFWLx_9OwHBiLO2V7pmj4aJsliMtyJ8R4FFNnS_lMC4yVMmfZEfzmbkie0jPUIA9MBMBBnjyodOW-l8EWP5-7_6ZtInAKUrkJL6itPfyT3mTnu2xhxu59COtkcW4KlWjlklLr-IOsTjm_fHaBq2srW3-0K7-sL_yVSwV2bzqv0mLK_ha-jdH-bA3syMmEAahCFZY6xz_2PBNQptlrbBvY8vmNEnK4PBCzjrNrYClieic2l6I4pFi24ayBNMjmjoDpAYxXS_ZcPuFBwIfCz_sVZix2lBTLRWRPJf8g5VLh5ctYr399nvVZItEgtbAeQKElOooz7V-Rdn3cWnqXG3gnzmzkEp89iVHHDILrS9ggcQ_9zX3Lw85E3T816GLPIGkF9PVmR7iInhaXQJpRduGMT2SZ76JijVyHcBxRXzS9EmakgJgJnHlsBdK2mtJ2RZSnkv_i9ZCB32qcvCLo1vYRDWEojUPxMW9-ZsLzNH8vzwcMQ-mwLCE_28WvDkj6BQ7u7Lr6snOmIYIhOsokd3WwJBdm8flqRSeD0vYv0C334eUVRCiydPJie20EiZ6BviATKKnYcGPjAxcnCKTxd6HQ1unFcnNDbBio8sWML1VoOdbIUwhtP68k9L30Nn9YVw2lhvKmuTdYUkEPo0y30tfKTG6mQpC49nFa6-ZU0RTBDlhIexz7tZabwNh6gdz9dJwk263hHgaIRCLEUZrTnImkzezKY-jnjNLY5v91mQFsGVbNh1fx2F6sUxvq-FytWjozQ-30bBax77gbnnCzw6o14ia7GNPcu1U9LdAwkYDy6fMVROdRAuz57i55ZvrYIut_04c3uq79GEQChSZt-GFRAb1OXUQzU2mnyg5MCCnTNmBUHs0N0MRPrSNWnJppJxb7xSu_J_XK2T7mZwPp3rpDbKLeaSjV80saj6yhim0Qb5KG095taFCUsO02vqzPKQV62eQsKVH6wBdsyIE4I1cXlmr3qeXM1UYTqKxMypBaO52MLkFzUwzU9tYr-3-PFOsRL5JV3j2qJFsPyL53hZTEnnIbpd3OSVupKcc46pOQg_pMzTHW-i5OFjidKMkFkKqqeA_Jewn_zq8G0BjSBHT679twi_fO89gwjyB_Yw5YY0gwoOemz9pdHRt9Xf_6iXIC5fPDixU4WYFAS17PYcrJLbH-mUgjW3U8stWfn0o8g3X024_S9IJe0B8aencLw5Pu8yXcnDEVt2MiUoXW1_6JC8NJObHjxI3X1cIBI-xHcXqU954tZb3gFxOPi0NPv3imInxJUrzk6nXXI4tL063RIm5a7kfnIIXcKuJVwEUpYCQE6uy2XqQUKInWUhPgXpMK6lJ2AgIeid3lfEkaUWyiVeiGuwmNlFvFnSYsVaYHV68TiE57jAlOjvp4CwE1mpJkr3QmHyn7PTqJPAo7RQ94TvIcjfC7Y6iNKMm3OK8Cunphf4P5AzsVWfWbf5TLmbgBBElAtC4X8cWPT8-eX-qRJroSkG7QNgMFKEoP-H2crbSnmHt-Tqnkrx6A5QE6QoOIR-ITNpX4zTI2B3906ooZU8ScjCOmbTeCe-2bNE1YLg_ipOxGDnyrt_tvblMpRz2NpHPbf3Kxv1SueilxQclZeuApG0PgtJtlCxMrO41Pylz2TG-2zvksfBWcPnNkhcSUkpI8zWVayS3Fyj4RIfWDP7C0XHtKi2X8Q_RDQhCnWXQmBrYPLYlseZTPi5rrAh38fYSTCxAxJHY4Qi18JO5dB010zWcQDtTLqJk9baY3vJk8hvDKUtX19yhyjPuYK6rEfiTAusrrzI08WFFMw_U-V4XxSDp6tviMPrNt33zRCXRvo7yXHLv65HRVwRyLj01mRvI952Tk6dfP25vqX2fPnpFrBmsmpqV5tmIp5Cc9_kaoyTqXU42t6rJ6iCYpYhUFkOopFUtT94oFYoAkgbi3smh15UCt_7m506NLF_zu7Y2AR78tJALWhPlcYI8UVUYf05G2SuVZeZKbyjcyDeX-i3HdX60ToJd-c4uC0Io7iF19Ds8Ecj6-z87-3AJphwqJW9_c0coI5Lc5Lp46Mkz389ToJiDMyT5JxDcfc_IuIB_rPRbVtL3uXVt--L2MamVnXzBh5kL0qjeH_bohNr0MBJ8v5uPw-r5oea3u9573XFemq1zSOg5Uy527ztPngMBR166h5If2qbY0iTf9a3PAX_4AeUfZl5GJVlbqZZsjpMj4y1pO-KRXsIUELaNP8aCoeGfeRy_sn9LeKjvFY7deuaj8sKfjjuk6DCPSeqeMNFmhpN4FfmxAmuHurUCTZ-_iEsIoLnuIAV1Q0KX61YoNmZtCTYB0Vsub8uRoxDsvHtReaTU78YDRUk_odOuJIl8IY6nDrz5Zs3jrNtbCwOxAvj5ITx-DY9tSzm94ICI9wOwDVm_9-tCcZmpK_1WKCXJABzj99UzFdrvkrgZI-io4N51NLtWemnPqIiP6Usjj7WITmy-NlTwPYVw-78yx50Uw_lYkC2w1UqxCwdqgk8eIGQeJLzo9QanEjHlZJdm8C2S-iQYXkL_D_fqId2Ihveg0aBfn9u-9g4m3_5bfW10EUtpM790p4obxNTx2IH85fFkG0cx6xxV4bPdjLck2UTkX-f4V1Oh4jOZUp7gFV1otFNV1J36Cmi5y2KvmfOq0fWAf1q-pmbI0yg2o30c-JW47gBhAxpW5v9o_3ZMb4FKeelM1f0_RZVGeagI592oJ22nzJLoYBvQzDS1UItw6hupBsoPiF9hMleC4_vtsHLPS0rjlpq39l0P6J9o-KuuwhChH41PGbq0bbctYXmyqfMD2fTreIeBKGby0WkdqIecbn1UW9TVlZLIi8KR002LlnBa69kQDmFYj_JD9UQihW-emhkwNqtAnQBb-m19IrBLggiv8HS9yB_q2sN0PD97yfimdM_4hpLeF7RgmcJ6_Xq0ODeyVkdCifhpqf39B78KBTxK7NSF75AEAOrPCHuqEvK7-5GfU8jhCvXHgHkmW9d2CujlGA7ThsJocuSmOCA5Eowlc7Z5L_yF0-SQ7yV5g_39wgC8emt1G-sIdA-1KG12eHz43xPVcWOE1LOE5_VNVKoKfvpPFraDTE6z1ITNxedWCJz9vQzsZVaXlEFD-aA-KBP8FuEFX2wAPXOLpIo_zqhzp_13NdqRXqzt8Ke_ZqgjE43MrWZmPAVNSgCxxlw8ZzB58FAmIHJLMS8JO09TFS5DVg-e3mDOWnvawidozCUG00vuZIHcEPbOOpJN3nK4tjUa03vGl_vtpJbEhDWwbEegbWmSyl93nHt-nYvuBCqDKB0n6boV0ltp3j18EVgDMkCTzx4n53YEM6bCNg_V6cJcCPR23ax_Vx1gDQrhNop-Z2YLTWJIyU0oTcuOKL5bhqtAZrXAp1TDlEjpt7ghe9ZiIJbL-YukDU2qMR_-avypKWEYTBlZoVhCtY_LHrAHMIcltgUhi-0nsCKagJpAh-2xFrNX-Uu2XpKQftJsp0JQeSkfD8z7SLWXJiiQjlkoqRIhYixOiX2aGgJGVmcLjoR2UmwRYCe0aNVM84QW5HUpKEmI6etwxgWDc8jkIkOZyP7lCEi0tIviePUjWOdv7tXMr-pLajW8bz0FAb7kRPatq_HTflWTU4BVSWaav8LmvHysQTWuJnXFlnfzj2aNlo_Nu0pX0guvHZMGPN0P2rkH89c-LqXnrQXbZrtCt7Jk_A17cODKGU--yvDdhXolX0vrfCoEGb8FTsDBkOIsRlYRXMV2Uyyrk62cEBBt6UMo_9w1JtsSFMQGD_6u9w7UDBJstBH7mFO4HcXtYAioyZ9obVZC6vjq5Hm69-wKH0_hF5peJnKcIYxt2CumCL6PLsyuiEJ21XlRyMqm4zibboMyvqv11EcPfhRROLTquxdnP2qjEV0tdUI5TOUKcKgz_F9HqkNAgjDOO62cnXt96J4intIdHbTCt_lNvU3kKVkX8J9ePt2rgA_pqzSwGj7_e4TLC6yU1A0CU7S8EfA4oLPli9YTSgcsck3Xu5AE4lOH7Y6v7v63Fj3PrQYzrMRzhzxNkKQVjP0PcC_yOT_shDHkAjbB1gvLl1P0BE-bU-CX6Bx5DzC-vmmsBCaacjxqtWY-BOzogsfRx2l5uneA3Vx4koxieMa1N5PZUrG_KGT1sGxtSMTMhTnEuZa0AVbfKnBWVgLOwkeSU0Bl536-BkXUo3KF9Ybfzrv57iy36R3i2-2JO7NZK4A_50_VXz4yYlXMdCsXY2-DmMqjqzlagaJY27vLhnmpHEjNGk0FfKOozs-4pVm84KLVPVXqYNyqX_qKOBrIYcL6ypZu8bWx03yiz7MBFG6ot3j-PWk8LO1bTkB3_YwHIq27PrY1qpd-tJF6U0qlQ78zeV0tgFvt-u6ILaKlkRyiJPYyabH28VvEa3wSaDTDJ90vUZ8lZ0kTVxx0OtczgK_KKshuulYTmlrdwEeukrfp5zPcNsPqIBYhJiAm-p2wFgfxPeWHtiqheVC4MYLdE_zj8jpSSjeGNw8Z7h0d7PHE8rieDkiAM5KENp4Pc4LIuK4s3EDcuYSCwULkZZqgGNOWamTDmuvv0ih8MyJBm6oOt8GqEEb2lFaWYZCQsIFZwzSUAkWFkwZ_JyiprFSvEXagi53OLX7jpeiVACyNrqo9JbpBKCID9WVMaAjrHrAHst3KvMnEZp9jECR7fhDLe_V-8RuCpX8A8rDqm2m_nYGTHTIe8hyKyCDiyI9RPMzslshN4TO4RK3c1Kp5ZDVGPPAdV7v0JY--VFzh11jyMZB3lB8LWFZZoVu2SQiJyr5nwv9r33kEsq9-PE7RKBbfkZPyeMzKzzfTbBmm4QS9QUMKwNEk6NRCJtBAno4cKJcE3C71IlTd5M6cLh5rgWo-BZ2fGuhKc02KgryLXPj8DfuveB9Vmum5iKw33Gexe0aDJz4Whxl-0aghCAafEufteUrFFTw8M-KH0KD9fiNiBW3nSfla6R_1s3WeyFxjc0ajrurAr4S3qKIN8HLp5STrXdmkDQSBvqXo-qNl7h3m9xMiHD9lKZYaRxXmjTkyjXC1CStEpvLc76JXoSJITKIogXtYbv6gmMxSBSRpsEGBDVYrq5pKVBrjhBBu1V-bD1GUx1GQ-CJ1y1nsYSltiKIAbtUALUCk5XGIYZk0DNEPFxs5HjljH_JFTeXwshxax4UBBwDCUym-lKjMBjsRo36ikaU9co5Ii3PaK0hQsyDob6OliRyN74Ou_UMAlDFuG3EDde4QVYUNsfePR8WlEirjKh5k2EI850hyuaHG3NIfcuXGhezJu5Dr7xHwQiBsO3lJwMRyZQ6bhgF7IGRmFDmdFywD_cr3_hXUL4RUUGeF0v3J6FmEucR2Cm6ILxg729giq6Rr39IbkoY9U0u-fJxZg5RpJewn3D8147pofjJibx9qiIfiCmKjfij9y8opzdC51pYM4VyOxdcZkti8bfDRPmQjcCAgvKPZp2geBUn9YqWfHw8ta86n1-CqV5qojtU5e3piTJiayrcEsWlMlESpV05POoivHuvigKPGXxocxn23RJ4X0wEVloc76hxhxbRalm2t_szlumUbOhAvX-aMo3RZJIBPLxZvOGZTrgFo5fjPrWr8qG2UPuNCQqFHQ7jOLVN0KMIUpTjqr8Jipa8L7wKFKmjjRbeYiKEQr-uh1UKsZzee4zhmFz6rHSoJ1WcUVfcQ5W4lx3RMqyiM89rZyhtRAtmxUEtzLij9-drApxNrrvm8E19OQo1iZ5neWBII32twUN4BcTLDLO4Q8Bsab0zKC3WqT0QrmhIgUxeehpLhKDJzYgogMRv9u6GiDDhMR6wdBYu7z5_8lmCAih6DxuDFAhyCWp-72RlKgBT4bIP1j1X5ZCF1y1wEd_1DUETMXkmsWuiyIVnyBb0dW3FMwhoahlwSGg1s-Q6xIx8A_4vBLi3zAYIQ9nyYRiv-xRCeUVUjk8iOucogMTy4PaJmqHgI4TCDRLq8pXYSZpM61COrIJS4UxmBhZg8hxJbovzAGSfCkIqDw1aEHzX1Fr7_QyefFrqA5oC8IUyd9dhkIAuhk7krwJfC3eacnciNsQjNnSXGrAccBF8Ip4z8u5hNR-ymAdYDbZW86ACZBl-h7BMngXA9d8FJYoE-7saUNcDc9UKnE7g5XDW76N5giGs0r3iS06eFi3s4fR8qSICLr3ffBf0MNkOGQjFZ_UiLbHJ-wNXfgJQRD7PYF8nXz2dgoJuKeXqnUyniPCoz2bdEAYUUzh1TJOgRfmo0HNED8CSrVr85nIw6nJiyKvso8NiNb5PRurduhJP1QBJn4CNfOuJ6EMSX61XB_ADJPt4jcyj_NlS62_sqUXLkoGjc0AfAPA_GZudnZH_KZAqMeK1Uf-65fwBJeUwzfv32lOM8vYxv5z5hLZ0O2Sh5CEKNrNqaC_UaQS3OmKhAB8LvPqHzqm9JEgTS3pk9BbQMWWy8XzkUvhMmOAIKW9PAVbZcuh8Xi_2Kha6co9OeemobF4AadiXXiEVVbPGWcgefWm5wT8xw-WfMJZ1D4QrQvgfJ43w78XllSE7tpfk0jWnXP1Xn_NcRY6mikvO0ckJ-wnfyVtg-YKiTPCG3GjJ9RS0xFx6wAnWjAhZkwLHfOVua_sqjjukB4qUAYdNhUkcdQt7NQ2j_pJOIBwGG8SYjECidXfVvqowFZRvv6vCK3rVGeuBC6GrNPGLeU_SYTTt5ikee8JmUTLwNV1TOi9bKWbKabqi3JZdkIKrSUsd7vsg2yFZCbGK8AnbF6svcdNINU0B4a0CRZsnl0ggr07_QqW6KG8bROXX6Hipz4vNKlxdUqpv0RvgvInTp7hoS26tIwO-OwhgpfsY4K-nR00gwJBcsYZtz02rVu9v9pbx9khgIf-DFfoCu1Tq6dwOg4kk5T5vAmGMXKUamb4xclYn8_q7jDFi7ayAbYtVGRjDbMc0S6KtqzTIqvqmwm-ztHjXmiOhZ_6PhISJBGO16j-fzYEy7UE0hV1rCRTK9JhgJQsxI7Ucnlh-pp0DcGLu4966GJZ4ot1QdekZZG4gp8R7sL3zeuto-FD5rV4YmqJBuEv-pcReH-EoJtTQqJ_M_W1vTFplH8tSh7D3mm_pt-ue5SSrDChu1XE8ZhuMipxmj7MqnMQ4rCItUvyFjpu7849nB7M4SgI60HdO2L4AOvJSWrXh5tzKYNZhpMPLk1sLAifVSksxZdqRbztDMTswyxL5KtPM-U6o-eRrWXQ1nCfZe2kcxt0x13CVtykXcJKf21_zjg1yKaSHW1cSGmMviYJ-Fy6jUDVQs5PJVgMUqHkFWVCJniswh7FwfhRwXCeqgsSGHTZ2SxHnBJiSq8PkZ_TUgQBem5Tbo0hqod_vE1fe5NmGJ38cT9CrhcEjSGMCfyjqH5Vx1Q1dBfnJvNfyjgiV0Kjp5B27UrzV3qsMI7n-6x4GJGw3cmOoUP7mY_C8KBMdT0w8tRRi9GaNAwmwvmNBznwQ7mpU5LkGTz8_GywK7HjevyEX9iNu_mqFbZcUXj3s6lQdICAYFh54ot6KUwRduftovjSgoYWkf1--4sm4qMfxhd_bH6NlMfMCJdGSC_tVj3Vmx6qo0PbjFeAB7SOm6ZQchoaZDXyRGKcRtvGHUBlGVXow0AWFwcAfmpa6Tmn373QITS2eFYhAHXzNrpLiinFPwifhZ1c-3DJ9GA6pD5v7E2_6Lw7zy-Rb7LyJYnnAJna2OZ7DUKekuQgJ10A6l_GVTB3tHacKt8Bnb_gvR2m7_auzBgjQ-U1kKQcH7iiyFASZUj-U4TjRKQCPpSYcClL-UwuScgnbCG7ufuno-WORA6E63vidBEfW6k1XWWacOenAwTThHQkoCndVTMOaqHYTfYJBgcCOiT3hf-Z2d3Ory8w-GqEpRXYF4hIMlXc7Y9zCz2qXpNCZxd6tmbtlEFivSR9Wp9IJmNiY3Lm7KmeCTcueXnHjPXwU2bazx9BFNlVQOg9q69be2vYSzbtOlc9YptVvm-TZml_ZrS732q7cqCRbyBntkA_mKdKDC7KZDfLknm-lHZE4EAbEPW3Q6AFS9yww8YhZ_YzTEziD4TUBNetydcVE0zz142n7REGNpM7NuEDKZbkf6WjOF3oma6p482VftJwCbuhdSG9xz95Wy3mkT7xwewW0cxWi9QQwBdXKkfPVWmaJmO7rsZqtDClhJVeMAqp20_pZFB9JrF1xz8BDdc65ZyCNT9PcYm9z30wFA6ysV0fCkK8lEcFjNAAL7sw2puE4hXfded9k6Ptz6fFVNF5ua5TCS1vPRGPf-BDU45K5HhmWsmJNm6VJnaNcoYmVr5J9oIv0eZPRmOO0be2mdCgQbboncbNXYuzfLP8Z-qQI56DtMlCoctV7mLyDpnE9u-lt8_U56P_nzs46hiaTKCDRD5NcBk4BhnnQ_89fHH77NY11SEfSGfvkQPToGWU9sd1mV9IKYKujnxKPjlhsgDJCi4areinrolfraWDMOnyFbSNEuJXRJNql6RfLRXFPteQvVNx4H3KhULBtbX-VVf_J20UHsb8FbBKq2sJkHQ_kYxh7fBd1RxULYJ_bxUwBLNZgqsQLJZmqwRAagrtsxbnBhNjXtMBhWfog1JOEijw0Zz8BdU6zmwyD--1DSNkK2d0srrmuTOalIsjEAjfNN810kMZAiElo8Px_J7Mk_zNi0-oZb3tap2IGQ69Iisp40xmOk-gyQ_YAWZQfdQJfsIZOq_RqyL0TrVz3D5S-En_BihqZd1Hot-ubxJ_LtXSaMilcn9_dMpfeJKJ7vkRcIWPjNlL68Dqyk6ysGdWpdzxG5YVAU538BK-V5LkD1vgDQm9rMv_qXbAT3KgYTE5d3VzJ5yQuIhp_R-LJtdd2dHk-UglNIO2epG0gP8X-SoZf3FdcIA-7IcnaoLLbCRjhUPWAqylQ9NwDLNGAAgJflD8AENH3UA0sgMt0hRz0cvNr_CLFCLKrEVtY-_O8QYrxth7GSoI5suYLiHG41EDeffwQJk_4dowgVEq2BLm2TEQyEGc0Oxf6Agdg-dV00Tl5ZGGTK_cKP_e49vSKU9ReaaRENHnXFN2JnIseesSynVgdThc2auxjth96i54KQ--jPl8oebuk6_c0BbQ2oa8-hpynfURDjujCuZ2TjcokkUr8K7F6-cVVCfgiDNteuqepPHtH2wqdtFJ0XlX-pvVIcIphwBCf6xqwTnQY_Og_ZN3DDt2s6ArPo14kWPjk2NCproSZJ2bpPUEfCxlaU6FUJQpeIjFHSwzp-gDuJDXM-lppr8kgb_ZUBUvA1fX3dHqZHXaoFrQoabzTIcs_o6Xuc1oohJX7M9tL9jFVjn4jxLS8qY9ul9Niqi2iUXov5HHFGHh6q0OJCZ87lozGWl_KX2DjDdUVEDopxQamXXW3aegHgTl-lHqUcbtIAvQiHDwjZhGNGDvGAymLo-hSlG8exDDdIecP688fGv2UiqmhHP7cJvip-puTTmNhUIAGflB8KOkbQAF2i8YOKkBfEeFJ54V5FnAWiYQv3Uu1YSJ02Vzh90vD2ZndyukFKQBYjmpVeqlWeGFpcpEff6dARROPAxBvIO32zAYPsEVVIYI81b8BbHWeqsUN21zrcJSIRj_l0AlORvpk881bhVVyYhw--WvXHvtLW7wpz9Ui0PZULXoXK6XDF3MSyYVrIgp56pJKLOZNVthMM_-SbgngfP5wacrSx8TeALAwKO0W6EJU_tcQvQgxJWCrgBeZ86WrgwQ3gNGrawIeB8meiYwy7yPby8vwtLbAq_Y0dLt2YVUtHMJmXqz3h0ppJDAoJF3nLnrNXQ0pmnkrtdpZnmcBXMl_ETD8vTtXrsq0qBbP-Lrb2KwHtsClfQjzLU6TDzJ4-k8T6dYTxWcBmBVbO_vnG2YF2uQwfvRBe__hVxhZj7ypdIdjTu9O9wO5MFoMZRvhM3xrLbHtt6oLc5u_IQGRVFvGMEYGhBmXhbTJbB_C70eyHWOTjMNaHfVVoev929MPtgmAo3bh0AED4spK_8E83VljQdIVl4WdQdMw7qKZzBsg1jBKtMKa1r3bsirIHu1x6IfDUZEKlwGPPZRyrrfrKvn0SWJg4wPsfrqhAKGlQSMpvZSX_1i8Nu-LgqA3oV3ZeeHxcmKMAK4SLD2EJKNjhdCtY1WGAFKacYGIOQSo6zTdxozJMR9M2qvQvmqesDLTMkyDmqe1gGdL1oH6Dmq3UCNOgzgeRQ2_tYIBBUKP_TYbZBnFrsnL9xeZqTQxCkWrN2Gcuz1TGuUUAXrlRa62fps73LaV1yXcHNedbxHsRhnBmx2zkF3eCanq0nCbhgVQekyR_USJRbm73Y2rGMgK0MrE_uu7D-3S53gbLygJY-AsRAJoX19G6tnuoctsamn0Tv_xxGrSV4NXuCLaUdjf2gwSFyqxTjcCnFgR7or-wZ5fXqBar3oNiCDOenY07k5Ft2YrqQIkOQ9j_fS9L-RivuJjQ4d3UfvyFjVi6FAILiVqpHfyBtT135BXURzLtmhhCnHT0Wj0oiYRB0gu1aCq8DK7OU7nE9Q86K1SL4Lqo67IZVnAKEjrBHrWZQB7wKLJoTkiGzbEVdEef6Su_dthXFwizQgQI9UsAbLOhdL1sdjG11d6t_KA1ljIODPHN9AAiW4vLM8V5guXhx6pdIlEnchWWl2S2QOh56z0szwdBGq1a1cQapqQL6NwZvi3Gyr_nT3Cn-t1a7mSt7L11hM2RONLxIwB3Q7zUFwkG5WGU_I9uCmsMPH36AtHq42Hdzz6Khac80UkQcV_qjL46mDQ6OtuCnZKUJUufv9ICcC4BBHfkHFimZzcOFl6EiGaDnbdSH3vr1f6M7ONQbdZXLDrBnwu5M9Uq6MbV8jixEh5JIUb1HDcFbyAH8iGLd7dRAFmpgRwQQV3ZBlOs2BSdp6GR26hFNb8PbcB_cL3ibiTmda0umxYpj8cGoAxC_yYcj-zF0kjrvcfk-jSDMveslk4zz6btsgHtU7JKmOjwMelJ_P-aPKg39boQn_r1XgbBEsZSjQFKiIVltgfuU3-Pv7H5Gm_pQJ8BeF4svsFjJFBfdNfH0yz8AWl8Rp_nIbjmHyE96xw-TBsJEdByEtwIqSy1FEpSTStOpmK5rrhWeNmudIKZTVCqFUf6txBrwZgNqbGSC3mbvwrNMIFCew4o-ezq-A4Gb2CUdCmDSeEpGw3D8C9__8lIRQkKCdt6Hykg7u6z-kEhGVajqjSua6QvEolpGu6LUwTs1zlwrf1JCuKqT6u_LfCG7XacSULhdW0Zv13RHlfAkBqAVU0VlweSEP7h7WySpBEwjM229NOEj55-FWMKb_se08CIhcODs7T5MQ5ny2MssGC5vVYCiqzGdbG14KF_fvPrEcE5gyA7SaHb8Sru9t8jvXTm0OTgQJfSNCvlJtj_4NnEMZiPkLEFWij6RJWWifKEwjdQQjSKyEcny7rbv0LkXPdS6jm4Gwf-sDXJf9AKMIgv34bBgw8HVAjkOTlHUbneRedvVPwhdYrF9HxfFKSff-Gg49h810bTudRId0vTZoQ0N0OkikcKxLB16xukAHWxlxtE1uMC9av0nAESNM_NJY13neifMm5RpIazg_YuixrJxIoqiKBR07VNwoH-0RzRVJjYPs_KnSrGEjHlMJ58GqtmZllXvvlobI24n20q49Sok5dotkmLiG7z8_KihU1tYtnoWG5SxVMi05eTodHfvU1fG4fxkSwmjpcVd3nXg45d7wcGDwzeyRh4hSwlCuxwuDz_P-EApZnswi2xoCVVznKfnasnJ0K3c0MCDVRfo4YnAkjUrW-yumCoafLWtS_QnlYc3hlH9CPfjpefFAOyE1boyHyokOCizh5FH4r-XFFv44C1BnAGmktclx9M2lwr13GXbmC5wQjXHuFchNxsNNS8Vpv2UNATRaUYD9qtADx4bnZ5ccm-KqChfDECCHZe_Zxr_fQaEI0EX0qC9oMe5tm5vHBoL0nRnz7GyHk8z-Qo3ZRjoL-_ujxifI8RSMLtTM5cSzpdWtNmOwkgKpf8mjnfzWubwbwlbLMxryjT1Td7hq6ftaThyhhKibbzYjfcpHGVKs7CEA6dR_3A0Lsh59UBiOd4n8006R3wRAoHwVZxW23jIK4DnJ5VpUJ9pk4eFQkYj-R69FRw2MIIaIyVvGPFGWDVxb1B8D7daMarvkWp87Tr9QiGMn8p3jkCeKJau7FNOYYvKvTfqnuppLpZw0j9UohlWOF0uwnw3Up19KkEkrE3Z9od9K_y7lE_rESl_tt49v9QCKP2FyMr2nRM-3vE133Vm193shsQe7VUw4U9K_Cn62ZtWmL6g1H8qRKOAbwP6-m2SNS-cmHmwjPn1xUnYLO7t6VF2ecmN3JNhyEumvm31U7RXB6CVNw9SPUUf8mcXi64j-OnCyeyJgR-AdghM_QbqXSmxTaZp9NKo2znVAAbdYTA0sEG7mELz9mXpnXnUO4E85sCvm-jqBQhuxK5kN1nzFScAbU7sx87jl9bO6wbvMX_nZqtrp078aK0nC0KJqQ09IvJF6zPn3q3kbYdRf6nOVQUOV0YPih4aqyTpdlNnp8Q7zAMaYWIsbeh35LxAncjNHE32I21Q2JKZKbQALxP8ZzqxRulXV8s932TxLj1GCQOJnw5nN-vjOKtDNBM9JoS82wvuBpUOltzv8dxVZoLRlyZ3hukczKJ0jMsuT9UC10QMTe1qQi83ZjbC8ACqzZhcRY4OvPv9kS2Uyrh4AMt1BMpUHcFpbosfHQycWRNx2svdemszwQnwhXGC4X-3uJrji-42dQmaB3niNWYRSeaa4YTK7znTenPG61R_rqVOYNjCHHDb0WspHBBU3L_pg1KoSrEOHHODGBBCAwXYh7GJileFEtAIhc23FMacF6T4NJjwLhJ4dBwJqkLUlnfwbCxQcTGqboM6ee3KsSJKfnWy_CZAA4bm5l31yOEOTpXVrrmOnemK_A2Z7G7WDpncNN6K4wlh-caKHZUsyOSUfxzqCIUMlnRFLwO-x7IdjdpLJg0LW-D_IgfWzp2fK_eVbOM-vSDCsS89-CRGda74pl-kTw9DhrdsWTeoTclucVyuihKlQD8xG-vwVzcEYcTSqffP9NvbPYsxgTnX9CRBZeBqgBMi_e5CsX-g2kzb8R8woy71P3psT8SnpUrJw7SIfrLTgB-9ljZIAx0OUkSVnlteg8GlEUYQtUBBPb9Vrr73w3ytg-1cHzoEcH_OAiXqlnwjyMutWu7VKNO3S72BbuujQ2RILNyKbcG9IFWFNQui0ZOKd4nRC67wFSw_cXiJq8WT3Oft9PW-9qLcTnjK6YC9-6DgJ70SgvAVoblUzX6WNaqhNeVpIcNEpt0NpGsIKUwLj9a8tkJla-MRPkUwB-VxbkI_IsLFU7SMsEkWOoSoR6w3gaILucJKHWYj1mY5z8TuDi3L0UdbsV-AGlnE-gnwJh-hSAgw-DibxR_S8QzRMHnbic9ZajGYjJz-L-Q2RH-dEK7gQnp0NeqaUdEP9DiTlTH4uIZMNueRHMcSi-altZo7PozPnYnCwrWuCKrs-n8RlKYHqQj5wqKuBnRjJwrSM1RhBui2Lsr_Tj-Cv9MOtwX7hWvy2ViLO301PTL41ZwOGeTXA7dBoJ2phSU-cxkzq0zTzesTsvadrOhVaUzgidLv_7IxdYEqaPSPA0SMd5QT7PXusQRvA8iZYmRI465sTEicRZk6Zib-WDrDuviEGBNL6MxJZbXH_ttQzodoRVUTkvcccI32CGjmTrBI8Mr7JDwirZoKggxQi6N7LYc56qHTPhilkyYzu2Oiti_HATmPcTx0o6lXZxk-EKkCkLFzgtjUvcGwfxlkxuMOZ9yussN_vTH6ZkO1wuY1YzEwD-eGey8yrfWqsvxSoYVFvn9fn53csuCTEQxD6b0eF-6t6O8QbY9-58bDxvEJ0wnEEPkU1XXrYHj4xDLLW-g6_tpcCcBiqR-81H8JBs5_oWzcZQ7MIcJavIBUMF1rvGOx6WxTU6jZs2FR9r_Tk3hwxRRn3M6V2kOZtYoBJBEA1-YWmlQoB5vfk_xm2pjkH9GY11EvIW9CB0VvTm-KW8I5_1S-zS6EpQVouEEOGdgPIgnj3nvSlBv8a7RL50sNwEByqrXc2EZ09yjI5qKvCaxx6wAF_nnk_eXWm0Q5oR3x7dgrbhXAgHafHPSa9dkGhwCVyKQhsUoc5rUjQqRfKfiefF2xtjoa0Tyac5Djfcpz5Wzs_Uu8OK2rvmvcR4Qi0K8krkixwsSXoDc863YuB1rjzRKlx8ywlAxJZZrYWB2eNCO277iwf2y2UAkOGLLY1X-tX7eMXqdIe_zO1_OzuLgDH15_aKX6LjgYDgSCwoSxh6P4swx1avoDyl2ME6KrWBe4I99ORLh83PwuVWBpulAmfXWOTgUuJYuljBwK1VrWvyBworKU2mTcDAvCTB0I0nhnecCtzXN7QHHJCEzGECLDkF5-6Da1hrOi22HGItMa4_GG81T6WRlqbecDOKccwYQrlalqtrO-XfRZjfx4dwC4UXODQu_EYRJykZ7siTiRV3fH_T220g7L3K7ahUR8qVsotPSSRSzB32Q4WOwY1egUhW57feSjmY6-NZmKiAJp4GxpaCOhp8zAyFkUBaCKiuF0BI6r14Ccif4e-0ye8SWrfJuy8fjTdTp_CR33S9OHKcEBkSFKWszidZSXut7NDNa-KiOiPLckDdXEHl-WLCPlGx8F2umnP_Rmee54YoCj_l5SVNxvsSu2DPssyifOPP0Dzvu1mkWIPDIDSctjoTrLuZ3zdev1nlRXx-naLgGiM_O6lsNDTZh0quZ61GoG0-gikQp66W9fiSeEOMB3BKQ262qMZDZ7NROQyTLPWaX6ev23fxxXIJB9fbm_ZDIGBKhSlLEerJcYFWDJA1WuepNZVtfVX4FeQBh5mNnOTFi8uLJMFT9DcM6MFYSZqy9pYu5pMff1CitFmN61zloDXJ4CYJgwZSK3rhVWAxo-cJtBrA8equcrcY142yuu9d5vrxHktF73DaO6vvZeZoiG4hZ9PGrjgQgjWveDzo59Y1Ac4baqdMqh7Evjq3tyzRCnXitRuHLhbUtCD8cy7RNjcOPVKsg6xtIV3a80Gkc2w_wmVgfsUgWfB7ju-WWE41bwlU3qf0b6R2IhMrOU2O__4oXKz7Y_U-xGU34bwy63I9TAbmi5H_CZ-IE2WNPli8cOI1LdMfkdw2ZEmu9MMy-pzngXaK1g02HDeRo5f6Fe3ko4ulD5HhN0Wg9CA2pG1hJSc78yJyCiYrY-8dPzQWiRH9H-5jiL9T_Ne_12LJBRKPkfM20ZW-DGocLNp-aWUoujI7wEAypGH2miYkfpTioejK2Tk_H3A_Uv8BgH2fM8awKM7EhemvmprW-zDT9n5lIaQDdUbZIn9Wk6vGzi96eoSEgvamJZCh2ZpkfVUxU7Od8wg0m7_CcHbhxG1W0o65NSD8ExhmBt5mfS6iE_a3GCXUwG5pB9Collmt0OAeJ6GWhR_1ChYw_KKyEl6shSEOor62JP7YcyqVuzZcn_cej7rbczTGkCj8yxuoyviR33nN-CJ-TXQU1rr-1EjuqaLSIe_BCIy9uCDW4b_bnjl71fJmXYZhV6SVkUdycudmIilTHvlZ7xF4C8RwnGgqlRJFU69b7Ic0uQ4C2wh2l322U4VuWx_TF8hHKM4mc8GphNr5EpW15ft-CnUOgDrf8ZkaTOc5L84jGNTtxQvetNAlEnR6HmIr3DWc9mV9UIskZHvR7uKsks8zVnUfLZ9r1WZl0K-L8ayrQx_38A0ZmhdGABcYmWMfOLPsPsPooOVLLqG29q_4WhUFN8aDiP7WkKBdK_9FsbM0jwGZbdUBqt0_zQbjDgG-JL83rKJp4cqDEYqIWNkostjZAz9bcBZL9kb0yMNJdiP3eNdf2Wumm1GuYAZURRIgczx5s9vclDoXlwmPJmJb-_6dVqi14W96Z1eoUi9PWW1AEv5cuV9CJn4Lh3m9tEDmsQb7V5m_jGwG1SSAG5WfergvQ32J93pWC4b-L-wn8Lt9QDtYWsDV1XLaCb21nWbQuwjsHIgGXshssXsu0xJEkMUOxfLF2j6wxC8TI4G-flJS0zeVkxL6qzq5O5LMJb7spu3pjCoiIRg96-TD02lwWMNmTgdtNY3DtH-VpcxqDSEvlOwq2cFQbnVpaITC_OQ_tKZ62mKumI1ZKJlJpCTAc6JyW-Xl82yloXoUp14IoEjbraEXfXYRdCXjd05qPpQorT9Pt6f5n0eiwzh1uYSQh9CDypLQC6fi4EgIgI2zYFM4jbB6PfcQxSCS4wkV2O20LL8fU4qXu-ENNB82sMVi7LEga2fs0MHCQW00rEK5YgE4f88XEqYrEFLj8kuygBI1biMeLfZFGxyaxo0CyoOiF4C8zIcEGh7JF6XjzqU3Re1vnEv9jA1pMmqr-uw0tAc14z9ouAd5s__kKnHl-4YUcxGBANRqWhjvwNljKzKJJTzzV6l3TedaIPJgi7yLfQsK2e0qW41dY9p0EcR9GqZdFt0PKUfVqA7eYCvjvX6KLZD7t13U4VXU2mJEyr-F_XSLrVpKjatqCuiSuoSEA6RDxLUOspNhkJcEHSZHOoHnnxCeV04swMWda10YM5qkmnse2_xxJ33rpQzCKeyF50RHmtwU40GGLEFVgu_uixRmGHNNitiAkSABpn3UGNmwmv3nCduZuhmHOcrHbTBBXqk1FmXRSLlE7WU27HAs5MYMBboD2Smspwp9wj3LlZkBICaIU_tz6yEWRIU39TLZ10eo5BEr7flBDhx30WcSWwq4vYqs90btwbPQFUf_HwWa5FG6QOVkSnLpGbknxgfHZmLH-LPqPUC8qaMUhIOJVn64cLWyXE4Tw0oMXEvm9emhGF1I01CERiazUiF2GI8ZvtAmVaYxGKxHEfJkd_7nKrke6lIIneqg69HPx-sa1ERhwAcRuKVUUsrQowK3wytjFE7ZPd59oxWn_7UjlRQInr8kK3w0exyIqzhLJ38aP3YWIhMNW1GrqldzPUxuuGC_oPmv1VrW1QWjeaTCcJNUfQ7nnsE2-CusoFOf4uhyYtXm7aE1TgRJiqkFYlXJcsq4fZl1toGOSml36TyNBOu3-kTivC9OGsfC49lJYzrOPJhAPJ01U77z3KYxUAu6MVfyZj5LL3pX9o2jFym-VuGm0magNd714BE1nWy5z9_xe-fZkpwrOR9KpDwdJ71jG7B86uv4pFtOgK4JWW0a2c1ZJf-YpxktmJslEf0aU9jcZbXrXPUROEHITTEhzxWvdAH56_39h48TQ1_4kJK6ygv9VRj38Oor7dO9YP7jcVFDqieQrQYmhazFQ3pTZJCC8GP_NkpbXZA8YUwpcUlha74pH5IXO_6EvM-OZSOxaaW_SowW9D0McoReyINzwwNL2bA74w-SIpLO63zzomZnp7iKO9DDfHEG0p25LbnIKp6pxay10xThsr6lvEZsCDIvJ52yEwsH_5YZ7KdMEvhuCvjud5q9iK7is7ek2I73gcEON4VAmlGccmm6oawGfR5EzlVNEVdXNfeLkRXc_TyY5uYmNrIZRC1dQwL7cOqNm5LxNhs4c7CnV_4uuBs_o08ClKZqb3Rm8nuXan-4Fpe43Ikh6-JpGaaMa7X8BwoQXvNwj5AAxVFZhI5YQHdCSH2HABRuByZibPaYEbfC9MnyxmMhQmhOpQXqVZg68pdpsvh36gnzS-NgHl3bT0laFcp4ifOsba3F4fDgSY7tKUbfl_NxcM9Ru_rB5VIWxJKRAbIEFWzEE1eh0fHp6A5DjLLBYpKOBUGs_W6bE_sqjbvVXi77zJXwtIm1S0hHNBmA2_i6WcX2SFildXas5ilb70U6AMS_f57XQhGOKoSk41AQd3SHbCbQeufTGSDS12E2RPSDBlxgqqo11wcuHlF5Wefn2B-tQ0Dg74e_sns3qel9kI2-6IVZXcV14Z3wyqnbwdRqzbmIOyZJ1sm6hcsHRdnB04FLXh43qrCFnkLs_JOFpco6Ix_WMb7_sBAwBpsyIaJDzmSy3VDvLEEsHpbCwICM1MaSvpT8r2Y59XKFSKS3umFgSqD3gvb0ELxyH17ZZAKIUHQBqNaALlXKt_Ag563dXWCGzbqjkMBl9ts1MwCWkd5rjnUVGF77WetD0ZhArvgVk4YM2Qv82PP8G4FGdSBYihsDIKADqXPxC23vluZZwvZmfiZGLkf2jVdrLzrU4m_XUQZ98HkPRDNL3RPr9Euw4RtoIWbjCs5gHRxATnHqfjm4C1hKOU4ck89AAw3LKQU0hLbTU9trH9Aq4-QLCe4Tth4US6H-wFxUTlhA4XQq-LXxzEJIk7yetY5YBIfO86H8au5qjAbhlhmnSuyP6dVp_sK2uNjhGssz5_X5WVpO1nq-ktRDrFjbn7Fef7NIv3dUY6Y37E-ZeQf6x86OvyOTnQUeIaVhBYJlx-VH0sE6Umd_8N20WuFJ2IazrEKe7Vr850vcwalBpSL-vIKAowbKSMleeyJW-66qQd5xoW_C2Dl7YD7P2QB67yH7ZLQFKYCsz7Q8-r8TGBTjDHggESjt4uOEEBgHZjqg7M865wA2AhScq8VmGlMOW-AOJaocCrN4EmS8ZvOl6KflWkcvdZ5Qlyz_PeS425OMj7CmR_voQMEBSqeLMa1jXihQIdOn7Hlz9HqbkLpf45mPCt9lEEqJ2w_-2C3z3llyvu_RJRA84cau2AMWOqkYR62PjYYoz1NJSovgnyQQVgPe_TZJETbkrY_aKjkWFAA85kqVBUYyChXaeqfUdikV6yzDubogwRRbwxF136MSkmFRAvziZwAj3TuvLK1qFX15Hbzn9pjzKFBF5ho5PqN--6X2Y-55KMqVKNIPP2IXAJun-oPYG2N_2-Dy3yp-ZM1oub3acjPAe6dO-P0flTOdTsQ4Y0JiNKPbnbcLloA8VJjVocRXuczhHHGO_bz-q2ajpkEu4Esppfz0NF8Wi__ySfVgGvx3i5JGOyaJNQhC6TglEu8vF0mtrwpcoMFF3KqfMQ2X80ekxQM5i_h0C1QU--cWwI6mUCVKqKJEGyKsHCy8Mhr-0NwOwilgWnxghUjRDU9hppQYIDN8iiLq3SMFgSuLcp6O65YLzNivBedmLHxCzUonx0YmvaNIpvXUyPCxFDe-BjW9Wc8L3vNqWBUoCVI0zHUCdDOLPqmCJlVWbxw7zLKG1zfNlPp9udE3zX_wlnr4Q27DxB2MdQ4onqGUDGfNeFN_jW7XbjPM0O6a6yQ700AjMdvcbcjYNezdhvdPu2VO9TaXs2cArslKvwsbTP-zeNP4M5FdNZT1xfgpxnThl2c0Nwmx8m-Tv0fBMdPKc5bGadxbOWDOOLSTRO6A1FOR7mX_lBH1U6qrK6YOsYrwwcaxhX_3FoRCeOWsEeQaTpLZ_dUH7AkfmwlvYPPKg0G2fupyrOnNZLzkb5dduAvDYBOoksEAe6fYRwVWVVlr5Rl-s-gn9vIlbSPq7Xc5bg2sw-_GlsJTTI2c67YDdUgC3DWdvFI6JiD5nyDDA_jik3n9WSFPvK0PImlYnBxO4XG7_i1G9nffNGgjIgav5LkAHxutBzAZCzkXUr8-RZNJV9MyQcvWEoel6g_wFcOmU0XLqyqhA3nlqvA_n5Rz4l9y14FWQjbwWHYCnHRowel_77b1t6_6662Cb2LCgrqjDWjmfP76SPlklULnCbhhmaCpYaLMFVWN_DDMXFnHPm5TzrnoLfrUi9oQTuOeQdgA_-7D7ovRvOgNU38DPac5LHdidwvGwoSFNWFp6et0aObdQe3rZ7NYCMTgAGFcj98T2zIokEdvAjKogkyHtzeksaEsG08BzLQB8mMiW70MIG9huG-onD_B27ENt-KiADuy81pODD0br23hX9GL3Hkazz1Q11HU8WgBPfFbEt-m900Szo54iYkDP7GKk3bw8dZQcjM1lqUrc030w1bEaz4qC8S7MnVcbe3VXNunPy6NHHI7mcNbrCyeGgYxo_4_DZx3TBeRnAwrZjxjWqWBFPUhyLKTrVO5gJoR-n0KtkqRoUdTXM32K7ECKxQR6EvpxKY8tsIusLUF9bLzfX2yea6ePBEJe4RFZ5h4aGXO8Rxp2b3PvKoP67hopheDTfxFDdWG2DO2bseOFD7sCXycJ-q3KitF0XcLMwZYIVVPSWVp2yVoc4e-qAHNMzszV9dYmvdjLSmqsaG58CK4JTZO2OOVZY-Ais-UHxa0ALRLf7FdAPzjH3pofCvR4UYdrdQxMa7qaiOyJB3RKfDFeIAOk_KalqRpdGXP06ekGorbyFjosm5WPYrAXlgZ9u_gUKpQUY3ubJQI2iV2N_QhfAPoeo4IjDg4Ed8Sx7ld7BRfMpQLVcYSByGSQviD3rW9Spc6zutc97g3_xBGHmF0Am7AObJep2s9oR35_1d3sxCv_YBzjCnt87YIF5TRboRPqSXNrOLTqU0MqUkRVamGh07bHwse9jiGurK_rwf2uokpwHg7wuPBa0mxuy7URgWQWWotKG6XKfLx_Qk5nArwcn6LlkEcRhyIfB6fdqNmoHf6CR32o_koT4SoCjbfT11inmrrKhgz6wbC7Zy4Q5qTGijKLVe9_161W_rgP7a5OZiimbxrunLlSHCSZDUW3VxLJMY5p5F3X6VrvvvzJ1kj3f1oTcQKC9EsLgrWvypCwNmO4XFG0icYFWsHBLnMPr-K3t3m2vWQZ9loBWWp-xPGWUf_D8z30y1vIh5iNcc4GMOqwyKZGY3WvS6jMbVQgCbMkL4QX4u8aIrNRxI3IH_MUoTZ2FAlgl6T6MhMwgNsYlvndymkY_P5e3KlC9FBA47XbCCb3J-7pWJGYVs1WxCj22Ob7Y5UELMt8Sm5ygkDWRjMWkUkl06Lv4ZB3lNIO0K_XkVSySPgE2kubFlMJIObRBzL5X7-lL4NGx64w8JrIwDFppc-vkCq3_20IlBC0sTFwZA1kKu6xOFovmTgN60_HOmwqQ4Cchs6oGiAd7F3V2c7ZZY4k3kZLAvp23mIvYMi_QclgBm0xkRfSvKIjq3RL4Ogb7JpehLlQPXGz4kAxHuC1O3dXVaPjK7zffIh7aIsZqqrq3B34BjEKOn25P2wyOPnMZ4SFOTTv7oe0rzZZZ1VqSxu88IaitOj6vC4JkaEUWQ33Xs1ZfYLsH-NuqKWetS1QwNzW6K1DbjNXTIdVxvQoECbBZkb21ey8_plhgWzkOv5DKbGmW70fFOtKjNFzXwZGsfFrRcwZF6YYfYHPqFFs_P8SFVe9-k-VOXpux1kvOOpA9nBCdfFLmbX6O2_7PO9zjcQRMrxaW-YdU0PE-sG6CtXaSWGjSQKY1LWQsux0wepH9KlG6lCZ6srxJ1FKhrPKN9gms5ytLoZIbqpRIy7ojSVvG-tOUA4VWkz7eAXSUvsDw6YutoO2X6zqI5EOQSscTKKskWNz1d3COFgFZYxz-r2hs4CLEph8qiQqri0w1EqWQ5OoZj0pxH6Pwo2qSN2mHLCEWzA1WcddNJMqNr5lf_8TcuhQnQa3L_hPaq7hycswqBxUHfYP-_pTSeRldT3rlNPWaY9QR7cnjz0EfPUtzZEUCv-RaGyQPET7O2U98HWSwl7TRWmEeQEBMAndEBoCQ4RIbW9A3UCE3feFtpAVB9iss8QU2i_wFXC-3t-RmQGTB2bqsl464ytbSH1pdToXAZPbumXsqN2FyK7fuU-JSCy7Om9D4aMvoUCPbFIbQwq_1VaOizUFrjZ16y2KoYV9ZioTklCew1xP_bgxe5QgWqh87rCTSxSOHnbkTwohN_ieSB796pcUe75ZihPF29nH9ixGvtyRvLVIT01ikheEvO9O0-XzHcUjqQbIbXridMI0j70ydBjl5s1HaPSzKjKKe_A7g1K5YZP73aYleNiW5h0CIjZEbj2uPTkL2Fi9INUtRuW8w0H4wLbq1bk82xf_43nfgVvAdc4N0UM17PsZ31Iiva6AQqGnNZzOKLEAoUDHG3PVdZLO1SuVQwlZvNOcoNjoUIo78Jz1F11LFpz1_CrN-U1Yfv_75RBGMb7v4vUw6bE_AbM2hQSbJso3BQXh_4kOFW2J7olDVaxuA641Q58CJFk6vAH_zelp5HGoptLjrQFOyok2LSInSMBJ9SPGvXy_pqQHmrUUnjsBQgB1GDlYazHGLsx0g378l04PRO7tUycC7iCJTRbJTejXHhKnhnO9RqypB8pAxsPiddhCGCG160V1bJ87QZKq2pHGE6EKuGy_pcbJgSURucQxES8qYcqhkfyOF5xIj7MwHYQwNS9nh2e3mEfmED5ETFZU_sbteclZX7_HDkVjdjWg6u23dUG4LjorQtMZo4bRFXRVoEQn7u68Dl13bv3YcyHd075HyM0SwH28XMA6NznejSvy83g5XMEUcB6NfjktGC11TXvgOeDjfVSFdE_SJqAUGvok6Qd47cJkJcgDebXsTha6mGyWbRrAjAWD23gplwdrTp7eDcjZjWIkR9hEAMaW7DH3fobY4M3OVqCluQ2hRKl-fOzoLrcEEBFUff4ULn-5uMOm4aLe8QP4H--tjC820Hsal7lo2k-9WQINAqpGqriLhe5VeUcBWyxWGAaWA2uPQ1N2afJ-vq0lkzZBsfgjcKuMH7IkhIlEgqemSax19DuCJXjJJzBjKEQ6BGdExTDfz8OcwaNs-zP3IR3QFztg1aWHMARoSaDhKhzfFXBfa7NhIadmRTI5Nrw7MJu6u8jyZVFMJ_xHs9yk-GdudsA4Fu6MiHjgHkO-nf1-spfRsoB04rtqNCN4Q1e1Xe6MA56qq53OrhELKIrUGu8So3-U2VVlQ4VaSayyrK-l-U3gq1Jt1FuYwf9QCCzvM4tBp15HcS668BEzxODeVCkErYuz1eXYTDQ4znbhMB6TnOhjQmhmdSovoavwxz3cftRnJjmVuxxQPq9cjHYSDeODkoFcG32srbMq1lLU1ZGRzP1-P7GkHND6x87QmWtMnqbE-akTCjnjpQXZ3NGIOCAT72Ubl03BtD6TUhFzh2Mhgw7lfrp813sjBa99ROhkj7bC__UpO6FZlq0eDMohJ8yYERP1FJm8Q5mRMKN9zkV4tNAfhSusFrkulfbU1vSOoDL32c7sRSkS38s_aUFYHdKO6kpEKoeXFrk6cRU21OVgclXHKWhKp6xXjc9tqB469PnMD1h3z8beY5zbRlL940riV_TK4YmWIN5cGRCKp9nhkS63RMS7F84XTSFLkxv0VBAdn_5U77FDGrzmqq5Sp0zCbus7aI-E2Ys_3wgTPdD1U32LB67ifVG43WmPvuITSooW32vAYdLjhDDAv6bsUAuqegjqKCkT8Br1TA0JMKOxtkwGrhNqM1LJFxE1Fa-TI7t15jk9_HP2Kr2Fa-XkP4CQMo4MHWBS3brIQC8f30ig6Ceo3c_o7lh_779ybGvdQJy4FF770bWqqfkkgytlywqrDwaKi4rr8Qg1MszGkF26vluZYa3IHYXEeVJmmqvFb5OdB2Dicdq_KHpQLNcauipnMPsL_j4veo8k77l4vBHuyeD8B_lImxArmpAFW5Voe5JsaYNk5joROIkijLy6t-laOPY50cA7T2DBMkWA-_PAa-9DEeJlLxf1Q8dC5tO8L1DzXzpmZSrMinIs0lmnOgk93bsAjFvZFeMK32T0MWsWNRXDDc0S3fpiYx5zZYFd_gsaX_6qykRDu51F28aIJLPy0QBA250uZ1QaweQz14cT1I2UbPmALaagTZjzD74G1mKKKsjaeDbiV1QXWzsn3jGiSTUuHC8E_i-HaltYWeBBDDeZvJp3-R4xZytqVhTzIUdeJiQzPTaWMsflM8z1NPcwv2f6tuhAgPYAvKMmdCK8suyQuNqPgtd4N1wDGaBFMaVrW_-ZgsOnDTkTUfbAzV-gaUMNVkpR1ZpAVQvWJJ0ilUHxxnoOVxVd3cvIOyMU5HVEcI3ls7P7KdWFgQk4uMx3tcV9YNMZToo0EKjs_keg8Wn3zi-3z5x1S25x7oVE4Vd-krsxux51t0Oys9hlrwHSmy0-r-q4Z27nLMdMplkpoEemuiR9PcNU6_yNB7r7eQk7rMNwd9J6Whk0ClvkfjJ3uQbAQQ2jxosafB4FD8F9EMj2hcSYYM_Zc-Jnr1YqC6cWeGQraSvWOrelpilt8scCCUaqNyuar3QCvMm3nPZHaV2qsVmsOaRFBxj6V4cDHa2dJyBaZrvXjYrsh-Im9k7l9cDC1ZQRC_eny-M7NFst1xslP4GbM3fjZE9YZC-I4UG40a1r_959IpO3QAsWCJTYFSvh1CSoUHrtiCbYxcPf94rg3HgvNE8FRvQMzbIg31CBZcM--ZTWsOwbLPndsvwkyO2xEduVtWsIzMzq8H9HuqITY1hEspZX6k4YZLMB1dLrVz79ulEe_0lv5W0vDUxVhMgxQlb-hq8TmEI_tZJ7PSHGTbyKoL3-wz6K842q4sUGsZHdgr-Td6T3MQSRi2GgKR2ABXo3Hc_XDEzsi6rHC5GdV6z90zMGk3w_DNQdqf7A2oGg_jeD4OSKPZhmdpewSY4997kNk_VQ-efWSNJ4c2umFGAcWJHre-1yxsKkljaU6GzyTSlQji7-f_1f4qeoJMXenfcchZJ-hysA3_l1oPnssSRT5c9XhUg18e4EENHe-kDtE3800ncUGOt8Pdvw3kkAZv_N6XPjMwZHEFnGbquZDqqVetBgASsf42HAHz8ULziPxULi3_h7_amC8F8z70HY2WJ3TiwltiFssnsel9THYOSoahRBrNJWSs7mzSRNFwxqVUlGFicprijVPVrgxrQA7USwIEceJJBnYjDdnBZecMhUuZeJCFX31k1DzZ6Ul89NkNRdD_G5_Pujgrz_po9y8ijRZ1h71QrP6rjs-4t8YLvcrqyAUOP_PsH9D7zLwUYfNXn1nTYONIAz45U7SiwySU3-5OM91qWtgBQWuk7k_3zPW6bUTGxV567PQTmV1P7r1gpSSAPs1mKhLY0IRI_NloL9q3kc7xCN0BVaCsu73AFu1bxrNl1_hiPky3eUtQZc25Pas9kf7niO5oZIOJlskLoDeZDqsmfrc8sikLqTB-T9n9bUnxjT7MDoOKXOfYEMIXBD-YWDvYE8vdVszjCNzX4JYiD_nycOuzHcaIBVRRHfLorE97B9lRCcXNrIzzU0BlwS5Nz6A28vj1av7TJ-WHbpqOBrMlpDfQGin42O7Xe-p91wAiNxSLvMrFx0kjtm2GUYxNTn1E7Cn7hcyirWglX7Xg0JmZRMNKJDgfn3ycSIsq3AL23Ncj7cnZDP0nBqZe_GBc9b0SYRfigcrN6sNeKM6sjHjqnEIJyi5VALEwaVeaNtlqj_DnfJKYdSQgT3p0_kz6yekRWLrC62ZP-A-ZshN5zy_nND65dgk752uC_YoNIdD0HtAnlbeotegnfZouEKQrXnyvPJXjvHfPENHKmAULl3sNMPA_rG9mG9ZlAuBR6ckYy96X-TguB-bmM67ZOVb9e2Hh5BGxjJdM21_krPKJCB8dYzYhafs_t0dvUZA5i7jrcI34G0i4oGYq9qO2QhyW1Nk6mbG2mC2s7nGfaEsulpKf36Zx2QASZ4UvRG20oI_tHbP6nHlfnjde3RLRO4jZDqUMECwOfquW6o9kD9XcMi2nTNaK3cmmALLifOji89L_QN2Vmh-jbQf-Ql9rMO9_lJkFJtAtji5mMHE5bRc2IgR2b4rEPsIQaecGX_DBXuDShb5H2m4CbjomYPex2ElERqywElxmIsgJkchRKBhjOR7xDUXgC0mewdb3OUJDJabc6MkEJzvpZb2vX2F-lljr9dIzXeE-8OT2gob5I6Cnx5bDZPlxU8V7GEPoC9y_2MugYOqaanZ_FO0nv6kBODirzrAQQCtASxT0pqM0kr35yWiM0HBsd-z4Y8V9hhwPxK6cM9AjfnmekVensj87MozySt0z_GUi12PWE3eVcCVNXkjIY-7t2BdIrGJJFLcV8QOLChyyb9wxN5mIrAZEC42u9F3X043MX9F8c69LfMsJ3Kx2I9Z7-M8VvebTZixeT80exkNBNBIcp4yu5B9wDQebsNl8N4gLJa3DlMAVhlzgT-KyWvGaxsDmKz0Fm5ysNab2rIzXDYG0a9jNRDdJ0ITM08UmUMYbKrhXh4sNMMtz5WX_Lh97g1kN8i2WJXBvUrS2_ofjSwGkTu5qqNuyYx_Heo2Wx67_rUCB_HI6oN-aBzgzYVBj4KZQ-P3UcWMcqWCZtPMPEr6Kn2XmE3bX4iwl25Kv_vBHPeld1g7sZM_mGZHcmOTxvq0GeWnac2tlgitXeNHz79-6keO7ydlGuUtUbSnoR21vVYSgyYsQBGTCx0hmPLsZAlKfMnqCfPBxlj1-4jfFO39ZfSjQgVXpTCGEberXepJGmLfpnCwZIaChrtJUgVFQ-tw0mhtR-_SBVUaGhKS4xvx38LT_12SCjpQJ71evHyMkBVeWlB49cRpy6M3uQ-AUWpvrB26ZkfidWFu2-b-kuJvnBY1b85fDbcOzWyVUkqfTD8-HO_OcXs4jBvJV8qKHqnLp1K889loP1bAFkM9esXmVfnyTTckzrAYviloUDuTUjyY__4u5asSbyHUaFD60Z_P7Cnn6DQal4uIM-1DQfkQmPhMSRQed8MMoJrLfIRxTagvSsRBE6irH57c7tGN6UR5LD4-fljr_itOvDcAFqNJ8D_Vqpm4LIPnOd1iululov8cEHqMUzV7g5pOZ8zP6SUmZ4F2h2FuV5nuOwlkBbLDD8BB-buU94ad-jzQth9QuTgZ7HIlH760Ulx9hIaPK2kdWuGGJElS3VJrR0UE6ciPgna4Qvqa_o_7FKhoMZgoCyyBkV8PGHquwhRzd3D6sSlVrn3Tvcu81Zu2pFQQPmPwNPKlJYYLzpLH8d1t4pG-Ni3qucazYgh0GywGgNL02UaiRcOMe49bTBYEGfGSShjng4CqJKk44l6SMpb9HQLsODXArHfIvhwE1hYuY5sIqOnRH40Ja2Em9Casxe1-WRLAMSwj9Iy-Jkg6A3DkLvqbE_-3t5pblhRVA4TwnVNCSL15a4prQUuKW3jzFlA2qceuVT659IN03TMkrr8SVzKOO4V3fXUU-xpNmYoWuezF3CYDwYnVdYg0wOljNcRoqHcKETO3_0AQqkG3UUSBsZ-lCDOF1LxNN7SW1rvF6l_VBf7FaL2ug0wCQyXXMNo47sgPHMkkRP_gPOfl-pS1Oy8sK68_1xlrVPZQCWvGoKKTHIpnsdj7mblEIjzU2XUgIVwsgAXGBP2UxSTvVi5LE3PAnU4d6X8k-ZFarUJDgQXsYGeX5hzqx5MGkzI-grnyKJ3FieCoymyL2zleT6VISH6kFPqqEi_K1E4HDis4RJHdXHlRH5N02zZdooLCwFVdJpirG9MdJLuSKStHFxYvx-88xjklcoSbbUhYDbDp10feuPc9DlENIeeLU6dJ3drK3esLNxW03OHiV-8LBCxGY-hN2J38f0ar7oPHEkGXFm9DD_10dM3Wyjh0leZtorFvpA7njwWQhz3igkTBvUmSz_yDx2w03w6sOQSQ_nDxCazJGJx5iMtFn3fVx1ZVavhmIHKBmMWFXztlGdyqySpMGNi_fhqU5GoW2n8ZXA49cHOEe5ImDc1ZrpxkJXizkYs3KBl2AHjnQl1KVY_RqgGnyqPC9RyahyJ1A1ImpT-wC05owPguM95lOREKVBBmUJcxjJQvgR-XXQrual_CTsFoE41JynPoXl0Gm_IyfcNaUvQahM5SVnnimcufkVnOpNZtUjccT89ljrP3znSA4_mQswVO7-PCEv3oRxVQclLFRxHKJ8G4x4dBNedbzgaPq4-UoOegUCsjpQuLcnaQtXmvzcEyysgYizI0A_bhL2V6tc9RnvzDtD2DHq45knO4K4BY8a0Z5FjdSDKg-cMr-1Sb8eTd9mTOleci8Hzy5XAHTHECZb7J1mBQWcIO_yPf6BJj3AOcl07Kq0gPhvggcxNnQRhujlnNJKrlkGXmfQAYopYk9lONjxRCTw6_2mmL3uIwTYAfX7CfP1Lz1mKi3IeBjyqcdTuJkHPO6GzzLT7097ueIGeiUc399kWQ02AffLIA5pJrvtIEwL0A-Jl0MgcLW6xyOlcWlbgbOeIcHV3GzU9m6etPdaDWBb-jrfQ56agR2O7h07TXBplDDzzTeIcVMzTK9LftlajjO7S6TCO2Eot7Q80eZ-F_5YtFMEdTumU1pqocipoXYEnU6tzgsQdUk_mZCoCltuU3dtqF8T7iBrSwD30dVDOEaOLaSLtltqKoQE3R2iwRbEkGws151i-9_dLrzBf8UNeaLOSpM3VRtERzIrNCCub-Jhv5zWX50qAiZf2REME", + "ciphertextSha256": "d7364b82b18e1eb36110f8bf494aeafbd168efb4ec042de385a374587e5561d8" + } + }, + { + "name": "unicode-1", + "testOnly": true, + "passwordInput": "测试A9-Interoperability!", + "passwordNfc": "测试A9-Interoperability!", + "passwordUtf8Hex": "e6b58be8af9541392d496e7465726f7065726162696c69747921", + "derivedKeyHex": "5028db15c37d656a05bcdb0766193a7f69e470b8c05cf37f2c5ec3aa0e204670", + "aadUtf8Hex": "5b226f70656e6c6573732d636c6f75642d73796e63222c312c22736e617073686f74222c223132333435222c2262653430366361352d333766612d346232362d396139612d373463316161643438656165222c2237323530643162642d356133652d343262302d393164632d646630636230363038323231222c2239303037313939323534373430393932222c2239303037313939323534373430393933222c2265316438633332652d643230392d346535362d383733352d626336366238363834633731222c22736e617073686f74222c312c226172676f6e3269642d786368616368613230706f6c79313330352d7631222c226172676f6e326964222c31392c36353533362c332c342c2241514944424155474277674a4367734d445134504541222c22786368616368613230706f6c79313330352d69657466222c226a736f6e2d70616436346b2d7631225d", + "plaintextJsonUtf8Hex": "7b22736368656d6156657273696f6e223a312c226578706f727465644174223a22323032362d30392d32335430303a30303a30305a222c22736f75726365446576696365223a7b226964223a22666978747572652d646576696365222c226f73223a2274657374222c2261726368223a2274657374222c2261707056657273696f6e223a22302e312e30227d2c22646f63756d656e7473223a5b7b226964223a226d61696e222c226b696e64223a22707265666572656e636573222c22736368656d6156657273696f6e223a312c2276616c7565223a7b226c616e6775616765223a227a682d434e222c227465737454657874223a22e4ba91e5908ce6ada520636166c3a9227d7d5d2c22746f6d6273746f6e6573223a5b5d7d", + "recoveredJson": { + "schemaVersion": 1, + "exportedAt": "2026-09-23T00:00:00Z", + "sourceDevice": { + "id": "fixture-device", + "os": "test", + "arch": "test", + "appVersion": "0.1.0" + }, + "documents": [ + { + "id": "main", + "kind": "preferences", + "schemaVersion": 1, + "value": { + "language": "zh-CN", + "testText": "云同步 café" + } + } + ], + "tombstones": [] + }, + "padding": { + "pattern": "index-mod-251", + "length": 65250, + "sha256": "736a3902822ea691871b34455e9081075270deca4ce13a7c4da362121c02353c" + }, + "snapshot": { + "protocolVersion": 1, + "payloadSchemaVersion": 1, + "ownerGithubId": "12345", + "vaultId": "be406ca5-37fa-4b26-9a9a-74c1aad48eae", + "keyId": "7250d1bd-5a3e-42b0-91dc-df0cb0608221", + "baseRevision": "9007199254740992", + "revision": "9007199254740993", + "operationId": "e1d8c32e-d209-4e56-8735-bc66b8684c71", + "kind": "snapshot", + "cryptoProfile": "argon2id-xchacha20poly1305-v1", + "kdf": { + "name": "argon2id", + "version": 19, + "memoryKiB": 65536, + "iterations": 3, + "parallelism": 4, + "salt": "AQIDBAUGBwgJCgsMDQ4PEA" + }, + "aead": "xchacha20poly1305-ietf", + "codec": "json-pad64k-v1", + "nonce": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY", + "ciphertext": "YIcww_6TeRxLreX4T3PWdQpYU6WzuUJhw4TCptzA9WtjRAu5C4XMiIGzASdcn-fev9kjthyLMLdUNutRSunjJnrIRDhQgC2D6hPDM9drcWCuWoliCmDJGOFSA5AQsCJaw0_0Z50yENh2-f9GfTiqduYvX-KZKgiCC5uSImT7gqlEqR9Jx58tr-rqiw1T4YCcDC_SfzB51jBX8ROiZR4W51uXLSLmGkdJmEnO_5sLUxhWE5QnZj_TN5ud2t6BFenXMzzi_pRBic8No87qSXDfpxcSY6jJ0A17w0zI0uWjgmZG39lixaDiVvWZx-X_LXgtC4pNZJeECyRKUzW__itZanEEwDAAjbZD9zLul7bQkJ279HBQ5Zkd-L1BxbempMf6J3Z7witUJvHJE3pxoA0DdiDS1HquOM6q9qoas3R1yfhzGFqG1UyXkwRVyi1_wpf-ZELIr0EOtDFC3Ie_llId3t0U5VCFYKgcW3BxBlEBy7qao5PZUbhpgIQxFvhJhL-rjTVekNalsZzVFqOCq-HHPbeJQ_gciv7Vb8MptTB8rY02gtxJ0cYGHpTmDmje2Uo4qQrAvwmP_6IhWDUGo0Lxkfj0haRsSEDCA7kA41lZs34Ttr3tmfkUqww9MOpT-_SVw0K5AdlsthQeNiZvjixj5refF0PTQR2yOTUbSea0Z31U67wvgxfQUtIWX2H9_TFzLXh6P7X1r4zP8e9f2V2ZKQdMOsF_1XKzkofft8C-siViEwzb2HGbVR7IR5BD6YtLvsqiW7jZVJedeET3u4SV1vKOp07xvj6EW_9OSuAhfZboraBnf-6KgErgK7z3DztAIJicnaCUEpisRi1l7_wd7P45mZx6gZ8azIulYkVx7sXHgt-37Z0DUmHDna6iyK_96OZkgm0rmAcgpdyLNemKjkJO2cSyHdBSZgAhkb3lM0GcgTBtCPuO_VRMPgf_tz1TKQ1OfWdoTq3n4ZuW3RVrzY1-UTgp4RQcHv9JeeBXkYF-h98yKFwNPvLdb5YJfbP5VdWKsFx4hECMsM3LyMVqE7LN4pSNq0w96mlixGef69ToPzPZaZSHHI5fxupEmlRjX8SMiUR1tjoP-5Z7SjpM-o7SpbPd0Z4EHzT0JE2o2LTa3ZZ2GjGlX3Ft6cQih4fxMzaVLepSn5D7HbIjKeIzCrv3KiJDijjJ0kEpE4Ko_Lx7mGUPCUZz1p9VIOk64MfwkwvGl9vGn0woL3RIRgBVckfxNVSYUEmY3oGkEg8RPbhEHusgkJotftRj-xkfnNOXH9U7UXrxsU1QfFcKvdyxYcZvXnmIayvFDUg-1n6L3sODqv0L--HnsJ5Iogv3BTLYVpj_Q-hErKcy6K0rqKRQRBjwPVPoAVHGylU5zwTtMemoVd7mOwehdDsmM19MHHgRXmxb0qT7vZU3mCTTqTI6UeDtrw-2sHolWOdoe7f9-mVkeVjPOEkHIalTtkLSUozHQ3d1POfAFFQPhFdez6keFm_iTlRNxhTHuxBf4O4a6gTdFQHaJave9xrSy_W3hdGh4EwxzC2IJZFRijQ7YNYxa44YJO9y_bLhEM_Co7yczI4AopIogMkYJ-B_jPr1EmG--74KKE3pmhe4cdBpeI0DXaWPiYWg8NFvAY2qPnCprmQ0wM74iAlpvDcD8eLRKpgjl71s-NUgMnIWJHk0_SNpbyRHXrRL85rBCqqJyPGNy0b8mtyhPwW2djyKU5auCYEs91gAEf3YLPuRz9sH9UmI8ZR18cNGj0vrYu7Ul5o4O2DAcfR4A4GRYMxc7aNmQGvMLMi5D7pcFelmPbMLq2hf1tda1Y8Uu90GMiOBK9Ccy3-sp0ebYLlacSH90HOmBHMhfqRLDc8Rk1e0VajLB5Tbfl-bvNG55ViXt37rCcK4JXxBO8FFdYD2Paq86NneSbWkFC8PLd3fIX8p3RZAsaeLOTzfO7NABhLLQpEFAVuE69sZ-LN95Q7TI9sOM-HrAcRb-UelUEG98RJjOY6aD6PyKy0ATkXp_pUSBjcbPkYZa-cHtNlMbvDnx6FN7yl9Y6CAoqjdA0xm_VsMp-qcVgF98TC1T-ddnhLua1pupLP986tye39F9YzmqgydkO4zbWh-fRuZXA_Bqx4M2VuSpsKCp0n2htNOcWS9KFPfAkWzeYr7U5q0eGtt4xchjYni9CFERV6el5gZa1gDS4uNLVuxY5qewuxiPFfNiAOvdPCjgQ5X2UKSxYbh9e5f-tSMZgsySly1DQSRGhKVZJLG3ETlfDh62L4c1TsXanf7o-cDuHOLzHm15IDOD-JFLRz2dwA1KUCtEflnhhggyHoaoeAoHQAsgK74WlFObqQ3rNAiu4FZqs7xp_jpc5H4F5Mp5NhNrzW-r5ElFv7P9r_irdvXWm81LIfCPrJ5d5c-XB61hCvuyO5ALW6dRb26912QVqiiDwG8zZrPgCrkero16LGhk4oNQxg8GAlLckSEk-OgauUatEq7I3AqTXy503ACatBbLutSbR593g2PcgaPei6r-SepbkmJOm8h2SU4bJwvOa1ARyGDQnuat_No-bN2FXp9kMc-bI8qj_U9m8aYrNhYdzDpmLStdGHjfy4hdU5lEr0BnTF9fnNLrd8rXrg7JfPuOvKYNVdfRs-o6iS9nrpoYIbVIgiKeQNKPdjM4UlxrI13spLiPwgVEdzE5QeGI_pNXM9bdEsOFiMaMMsWt-j6AxKg6Q8SQjNdY6a9mEc8BCAEzw2dYus9AsyLsgwOnCt_nS71NnOEv95H1TE1C3_NmoInpuRrplz7Km6_Az_4On812MJ_fu6Mf2M4nOh8Oxj4am9-0iRecDzWDmMsLwvFLvZBX1W0D85-stMDoRH3ycQA5YxCEHcjzlo-PHYqdtDHcc5K_KHRoQ5SbFiQAebV0GTFc1fooUiux4U-9Le1MtAuqOQwpGd4idSX7XephPGj54hOzUYJUlvAw58VIgsGLyt_dC79BRJllq8PcTiD3FwbOn3PdLsuxhIjY5yfncGZfjSTsEXLhaFowmfTwQ65SqS7mLtjBbZJh4-GcI3GB8KffAclisY2KNUB1ybvss4Z2R_IZLq-D7KYFiBVL4AUG94915NF9M1NEwt7kB6oCXsSE8Q6rjSHc2GD9elbe8dxFYwUiP5BmFAh4QUJQGfcbPUKjb4hvfF_cIfL7yeVVTCPwikvchLlwf0qdZTZn0K1qQU4iEIi8TjhgdKmrLjmlNqEKMPsog6RmqbBSe9dx7FJZzA2OC1u6om4La0LKy60jec_y1xxTKXpVjqN2iAg5_8YjYWLeYZESUHY-52i20801DcotvUiK20l099dlB_DP8RwMSYBInx7bljpnumrxRoaATkm3YqYsmZAbA7-PwkEYm7pJpCsWPQPre156mXin_7qbNG3Mzf1AxEk5GOVeZugAAFfsYFRCSKFoyoboG3TCUbUjc2udZG3krJ8iycwXqjBMx4iFtdgryxgKdLVNDnlWGXhKZkxAwtjqS7Nhulpb4oUPKt7OQZYp2J4NPGpPgXIvDHRjqQzCzkN05HqK1KMiUn1-aWO6aDNQW6oUzj_r2yfOL0g7NwdACDKG05ZIjS1_sbYQs5ufclkecsigAqx7-QsCe3g-0-aURiFSQbfgnOwGCa4sb4FmFR8DplPUjGeZw17ydWfmLG8KFs_sPaHSKNXV7nukohlSPUKElxnF_crSRBPHzdwCGnnyloqSVJy6NAIZ69FLd0I28exmN95dk9nIBHKL0FaX3xhOKa_MmkWKyw-rF2D93D7Ur6mQnSdO3Br6ixkKD2MUGVa-DGQ1SVwNK2H6oEdcWDlM4YaK2uDuNVMEkEgtP-PJBL1ib5cOI4ro0lI4v341QKI7L92IqLBfzz6gjhNvULMu5_dVdtHvaDQbJJnKf1JZ0ZdzpYEaoVzEFkpgy7-mPDGaPsYDoCExOKsZDL7lBdCbXZennrLIMUZeROgm9qXN75S0FKfqTMfSCJopbzZBI1Rk2kxYdl-_ybiXgUuqd2XM2GnEO1fmx_JeEsB3ndb368qP92XCbZN7DuyFHZQTMXnWkZH0HEYdrmofC0ptOA1wMWRHKGit0BsVrE6zNe1um3LnQ6HwJgM64UqroJrGBk0mn282L494rvK6QiuZjeB3eXPOwpIT_kG1AR_UdQKmM5feGLWMPlT0trz7F2mpk5sUoVjVJy95LASnCesHBE3dtvU43kCReAjHSLK_HvyQpW8MXEmnIbeEtHiKSKS4xh4To6MhrOnWqDrx8jmhzIiybMZGoZtLMnhhJxWSd_I6SdzgFMLrRqYdlY7D98yz07HmkncOf0aZEj_joAVVG1EXU3hAL01pV5EUBj2iKB3ElzPYzwlJylLo9HV3X-idgcghGpGGcp1gvAIQJCwkZU124WRZReMEG0vSb3xbVNb3XtSCNclwCOgkbSTqaXvzszVgxwXRpn8YbBHW7upN3QK8ADBGf6hje5WSio7TKAqplCBCXgPmtVeRRMIGd2EqyYXFAwjmyZ_IAlFRKVYq6-yu6YV_ZTB4Xf7nRzBlhhXCAGodjvF0r3u4bwBZsYAkv6IWLna9dl7kGjU67id-0Bdawz53XmmdPRVnJkEODCDYvFymOkwNsQKKKKARQ7UWyT7Ho71WibvWCnmz1Y3P5K4QBLzkW-zPzGihyPWd0a7YjbnrBKjDmiZBJPGk8B7jXSifWzkv3_A45eVzKjuuKj2VKU9bklZb-B2JGunscS_O2PXKw2wdXYszVVf9a2pcXkVT6G7s9Y6_69mnVkQYUiT2iKA4tvkO5YBQApfWP7NCbdSgwUR_z7MgE58CFirijDFKYcj8Tc-UYpGPCxCgKx2jeEKHDhB37qZt8Fm2veA8OdmwcmbjvnY7F5NCgw7R2zhHMfSYJHWNhX4bXrvuZvG8X0ODA8zlf1y8-JanfVcJ9QG9DsPOOuMY1ct_i0q-pIWPhgENFfbgaKQ_pvPnXgHBnbTJn0-wazM9wLTXu20qi8jOd7McwwbHOLd6QU9E6cAygRcYyUOZCvVo5zJphwoog6GFKI0uWE5rBNzb3dFhMSv8xf7DYKvD9BbUzv33PPicNxi3vfTHf5qpq-Ac4aKh9qA75dT4Qyh8VevKJnka3eMnN4o6X4d0IWHlyvoz-W_3KHFofHNPSpGEe2vsUyY_LttY6RwKclhb3PYVgMQTzrxjzWiyA54osp1Uvptua8bSTPakiXYuUPBsHMcsxSuRZnQfOuvdwyVEAiQQcf92fg_dPxZBUkuDkc8MLWbSMgJaMIgSN_UlFuAGyel0tBFnvUyKzZADE_3QKE-aa0YEz0WKh6a4thCP657Ohcg3RevMXPyCux2vLUhvwRNeLV5gffAOaBtskf8i6HWSb27sSAo9xMp-BJF_nGtQXX-Jpcx01ciqIWTiAVqI1hTt6wFUdmUTBA3dAOJCAI8Dr3ZxYHQ9UYLXoPx3dNtrm2Gggge-XTJXOZUfRDmb86sBoAkditWEnoILxX-ud2Y46vH21UKIybkrZ6N0pUFZRUTCULjqt0dYDRktiDpl7RBLiyrWvIyA8M5dwIKmST_t49_rQ2tAg8W4BZ1LaJynjPmu0pyeClV3httAuJJ4YZyhPzTvdIKBVNlURHBvG3-uwQv5gpqBpmXxRALopDvCKOMzfjRqntBpz4vXMWL05cKejPJB00Ob6LiGvtpCA60_4WEz8_zJxfZuxbT5nLbRma5sUyL6rBmD56wmW4aF06n6cJrdMh7y22dXSMe8gLgsC1TZU7XwIOibZ4sBjk8lx_xgoX8j-GNqYwN9fq8l8MfvoFvT_XwvWuW8XF6_3WnxxhdXgKGvZeg02QHZgLuo60DPcc_dyg1n2oHcWxIs3Vh6TZsyWyNb22uREVuqDtLJ5b6cQT7MQEU1Ksb4b6lpz5QA_fz1aLWnDLOqY6qyDLGXSADR55tllC2t6V0XeSWmfLIl8sjF9DnmfJBDuzoP-jLmGI0RdlZoKKM11yjZDrqVhAXh9hBOPTQR2ji9gWlOYYc9F6rJTJttgdx5u02HKulbuqyqy6SVPMJSyjAHPZ_j6qaAXoYLY9qejFhTeW3GE2RBMJP0KrUJsqvA4vHnrFVZYck4ozEvzSYJz7laippuxn0jpe4gjybFTg_WcU3588nS1CBFrHBjNnIhQ4vzlfpR8vfeI6wRFRwXUeA9xwBEg0-YQB0acBvra6jp2_8aZ1_S1Tgtz6PlBKjeXzBJo_kv3zvqR9CS4IRijT-x2zlU0hZUHOJjtmy7tt9-9B4Y9Wub6gtvtYtMo627zPuNwZZkosOucyYnJhJ_qzZ1UDLEz8h1P0xNFbkz-itS_X4FEPMEQMHycY55cnobeuSZ2AlxaJsHmioiSmCHl9axSTk1ETBP0tc0u1LvPI6upnfwwFf9hrEI97Fu3nJjI3xXysvk3eBCNSnC-AxK132HzfLygr26CDzkpgflLkU3uB97Nmg3s-UQzV-_NUtphEIkq_sYhxrz749tLMz-ySbspD2NkHS8QOek0m8FgekQYvPHkdfMVSfBXG4ZGARdC0r5a0rResHs9GM5H1djpJ3kVDJf2FW8irgcbmAMvGaFzEUhL1PDEA5358KiXYdzMNFdG8dp0b153Z6ZX6nKZm6n9MO9c66dWmrU_Z0fBZ3UPe3enGuKdGJx3Up4ZR3cpj8zO-LmNsVdi_YB98XYOZmera_Ci7l2Oq2qeFrUchIdZKv5QnCLBbsE0vuRouU72aLk0E_u4NJo4l5xeEzvYALhJjSjRLwju7WXMxynYXlZoBW-gVPu3MrDQS7A4Lj2Nf0s_JlvUishoaXNc53RYtwzRmJ-UREzhEz_102846sbF0xto7TYsxu-Wvp5eZ5tdCqfS5CYk1MrRDAndL9mhf0G_Go5vj17WDu-OHMimK5cmBn-nDqpZYVMPjJJ0nsLDmiKpexbwLPmxPCOfalSA_Pl_CY7lKpqQdzamigZHkDLdlLQzaZ_pqPjW65ijgvRpKCJa4oK-ZC8sDUitZb7r-GzwwZfiSDUhMv7skQT3svY5QvIroqOOATM6tmoDTTNPenMskp1ZCau_HXqO_OtRJO3D_SFjCw9hCBDeW4_qAPWkfacTAipih7qcrkkSxfas-tvsH2dUB7xDHtDb26IViVH-WH9hHKOKIsUd_7_cG2ErW-bsYody5pimMoCP1Mm5iu6phZtH6q2z409rV_eqv-p3o0foBs4QGcKNHOHYsAyHpPU6DaVHFz-dmD0CG3huoHb3l1Ly_N4V4Kk1IgSi2UpglO_KOKKnsL3bkBYwafyPhXlnTzSXA3IA8hWeGPoJNFsra1jwSKeNPT9wvhyz-UCuqmuvIsi8yCjmHfZk3ODw5FIStieVS0iDws16kjV_mnVgOGskn4R0ZkIAvh96LjJZaayDBL6oUoBeYPXCU_xPE9_OlNiNdcL_Z8UY23FG4v9iw5xpuplHqGQkMj82I01cowSyu27FbmTOpWyaPiF_MTckmj_Hky-oarnXF1faLZeazQrPd4eYdL6WOq2_FmCYLNhgfakjz5y-Hw7blGUrepHJiN1yj4nDw4ut13DaKSZKRsKLUBCY8JjHV2DuOwu6gEqnFVn6lDkfH_ItbjYiFZZMoDaMzodC4wNLNEwAsWjpmxel9avirxJZMXC0ZXVSsyp9wU4lZCXNsTto7hA_9rJDdVU9VuyTV5XL3NoFcZ_oX5jKFLOVP5wiDR_oy_YPW-5YJAHx5vEpUdqGSiCxbfGYGCIHiuDT5fgmuhHy0_td5H2EAPOmgmwePpDaiv1SQnE3YXzqhZWCyVWvKH9ra5NIlG9wEzedtL1k6gFRaJcFDpOpbKqG7KVzdqh3UieO9neqb6-6ZcpHckCpU7Z3r1qKd_AXbSx8RkmXTGuJdHGkIISeSqwHTCPFL7GeHftM7W7RFiz8r5X6WdNsCrc0RVaLVvpqS_3-Ld2CFi7k-pBfukWVl6RyJAnnSfo1L8F-clYSw2Ko9uZqaYNb4lgZlkRSmfpTdnzIHcJpjcP-XLIylEAZg1US5KWdHjZkOmeGMqLMKqvyyMnB-GBipVpUEV64lyz-x3DDuMu-kdWuJ8j2S2IV4M57Kda9DZuwT0IWM-pKGJT74k1l2TEOHtENcOYaoXEQTO900kxf6VB0Bocy65tAFOn3BoI5mRDtLe5gx-5cfztmtv6_bwwcZz-kN7AfToULmPzdxmdi96v9GNq0DZqYTY9qXaeTTZwTxq5orzYfDEDowm4VsgtKghkv8P0kvodxMcdnsnyvHAaJ53hjfvpGFWPcIl3NnKYTsV6ga_uVeU49lKOEFZdopMEtRI5_HCWY_71wG0V-JJKbEA7AsIgF3oCvmCeZvIJtPPFNQKvjm0fwea0kVhf3pmoXi5fU61TRqO6_Iw5URjRvU-4tgph341zyEg13cTrSRONpJWeD_PqtVEECGoizRN9Z2aplrIeoFxFd6QJorMXnKH5lCp7v3jhnl8bL4Mj8mknYQKagbSUxmumEDM_LVhLWWTQNCaRNp8zpArCLVy8z989X4uCMVyKo5cBPxOtZagcUfIGllyp1kYBy6bXtYLlX46l_Mvv9hKOorRhlXblZ7Ml7CAPtxyTM477mWxMGIF-w0s0K_Ll6Y3ASSdDcC4SsGXA2TvL4zGUmmHsbanXeOsclAKFzD9Clhw1ANsQeXExp-jOhVXZLlVl5UGPCor_F-rbUk5kYXVh6SalE3Q7u5wEIL6oAIQDriE-jy5r3K41OeFxxVxisvvyeCBxZ96FGmlM5fQH0CRle6Mp4a-J3YLl4BwAEyjjLcrr7w2X4y-ZcrlY01tIFBFCzhNAMu_MQnXNq1j6a7aRK9PKns90NZG_h0YN-qfWQ60J7vvVJCJ85aU0NY4gj8Fz7SBJdEVO4nmMbMs-uZgEjGmeCzVmoVVw3usnW7h67SKKjLsbV4Bgt1dLQCBh-MpDAX4RnBQSkfAJ234zkyWTWydvIXyJCQaZtLNLutUoYb5teHbwTJTyh3yi-9mqOM4noIK0rKbez2JF2_mdGJioKf1khdTSlP-rTK9jJsHMJnpi6Q5h8dSC1q6z5xQL6DQzEjrMKeqb3-v9XN5dw--StPAj02hZ15bBqlZqvkWUMNc5hSlZS6Q2vNKwkvUMmDjqJ9XoDSW_W7Woh4iruIzBjZr92PsIGrsAjPiIyBXQd9F887XqacwEIB2DSxHnFRWRvtGgIFhb_aVHacuUQ7yy2nYN4GrHdku_knu3zBarQv1zj5ofqOxzz5vLi-EkNXpxUvE_0Z4WCC6uY4geY72xRzhuMd1F3mP13h27GIEPpIo0j5QhHcb5QBQtyDg_c8STPnYYeLa6H7nG_7VNR6IHC72sTldCgqXcrm6ewL_6BrKKxsutEypmBp4HmG2IZ8UbLmN_VNE-zg-6SotjIkjwmi5SlU1nxpSgJTYpzq9yxzqmpKeiSZQgtklBWwzPxOV5ODP0p-u_fuifTlFBhNH0Wye7P7qWS5_ykj1sqFbRSzEw_DhZrFFtgaKm9jL5ItSwRPtswvViKk0-4z9I3Wco6qh002zDZ8_V0zem9r7qRK5nGMIQJrlaSo2wWZUizMMOXESWB3JmwZPF9C5hzOGkXGSHDaVaTWPbRrJyc-P5onRRXu7uOfEHdmQ3UfcDf15NKmO8ID_wHRKOEQZPww22k4V59HQlO8d_9ddv2se2nLoFSXgrc6Ekj_F_LRsWuuVo8QZ-mXorQTXHJX_JrZiTKhNm7VgIYFzxgIVWTeO0KzReI_n882yA9pKhYERY04mqLze5HiTyjmfXQXyS5yoF22OUGIKB_cdpebVQ-QQuDYZyfkQNXbtRqxHVKaTYTcAwCaUBZ3xyGmFAOsJOOiRFx1UIE__QY0NAKYBkPska23Mg9D1sqi7QDO36IAa7gfp25uau_e5IM6UyCU3C7g_Mis0UyDnwMELq4V0hA6pzK9wSzJISNtW_ck0pqasrji-0kPWpJKMVPhOvp2HaXcqdFwDwi1jJRRLor-m3EW6MG9Vgiul-S2kpvKJ7UUByDL_al2kMAN3A4ufNNqpiYyIJqwmODcQTCXP3s2uQWJYz61V5mkUykDU3fTyTUPCUvx8wwjd-1GeNqjcpzKHy1v7hat757I01Dq9ZcsYJ7-BuFQ70BatKz1CZ18VRRvIbDSlGKciDpm6TZeCjusvLs4HMfArCZe7UJ81fRJgl2vipjIcpaOoR796jwUfKYP50FBEF8sGZbQ2oMJCiXlgrN71ufCK55aN4hD0Vt57ONon6VQXNJlmcoToQUQLo03FnuQZ7-MMwOR3rE3M3M8ruCfW205PlO8jbGNSs56d9_-QitGhMtXeDqHWzcx4fXNI19RFX84QWu9vlSkQjkuIkJyP5lhawMO_GeYipzQ5Nvzi0Uo5-vDthrbo1pUhwm1UaK7Q280Lr4X1mCZtQqZ8nnKYMi1Grq8shrYAq2faUlAaaFdvCot6Lp2vWzO5Ou-zcm2mS_VUsng9xjm4M5MR_Yl4H0nObN7QZ0v4JnAhjRkgAFJDUEtl6LRAIXmy-3eEsidNTY952UdFlp5VSYVyqyzPfdUYERibBZl_alLhXIzOoFYonJ24fvtqVL5cJpsGNIgR2g2tL1nbzq_8siGmRYAazhsQakgPVG0peFiPzG8FU96WWxHMit2vzs_w7dWgyAxqj1_w_zXu5CI0-3zEd1zKWDE6QmKX-md5bh6tnW4iedLG4zIPKV7QEojsQMyQ6Mh8kdH2OZ7srVw58z1AvvlD99qROQwruyEzsXBREUuOe0pcxjgD1pmBPIherByZIBzizHMAn2kn29QCPrvwhLxiGuf78DJjv_FECBhMzSRqcj8EwwOHau4PuXPd1rEHNi05Y8FCQ985eGSM-1Dg9Pd0OwY8z-95LPSt-rWemPhXM6JuWOXKo5nd1K6FB1sibR6in2830sEv4MYVbfRmXYrAD1mnI7CkS_hthv5ysGGtwNfMu5GArtONw01pR2yHYye5zbJdapxLeRJQjtOhe9g-kQkvXBccyMrujfRoFXtJXU-bCJkmM9MAqWYZu4JpNW8_e6eQd8LVL5_Dpg58-qLl9IxPXnoDOZTU6PR4FqsRmEAfwLzp1Q9bOozAw5ct6AGQjc4MaVCvKqqf_dahJbmcNJsmzLBUuUASLwamASbGArS5ie-TktBFdoW6pVM1uoWTXfiOxu2cW6Tt26VYqlD8ov80RoNip-EksOn2a2-PTJNdhq-301DFwAdyqwLeUTn4QdlwRLaMey4mhxTaFigxWHcVoVGYaSs17NIa1eSgql4_GPFVmatu4ADo3w-ZeOShdfRbgKoI7_HcjxYlE2CAG01I4-xozjJVpI9V5Smubxc37sk8x7pNp6AcC05SpORa3RBAnfA6tc6SJATcxBJ_e2qBYFH4qS__ZlzmZ1aEqPrx6EmAy4-r8q0oHvRbE_c90D57XjuJVCwRgQ1gJcQ1-0Y5ILimBkYu8TkSGn2PWE1CBtmRrY64xDzdRA4W7_NKKmgaQ1YTWOwFaZDOFJ84URHks3Q5mh9U8RGocVMQ84XgSeNPUAlJ-R59FL-w6Y0jRpoUM-NAj0zc9GsI7m4qiOm6z5X-AJTFU1G5hzvs96_lBSZ9XWf3brUv8qhMIjr6bILBuP2KRAcoi0fxqJGyxx9mSKINRHQTbretI8RWQfEQQ-OMc5-PTIX-rUdnrX6jEaZF-qp2-dqWs2Z3SGCRmmKzOrC27OatUkSolcO6qOg14539yvMShLu1YXet7Xtr1eWfcsKGtua3lRxC2w3pACYMMLTv3Gv9fRfdA6-yWpjm0I1yTz4myd9sJmHIz4TBUTzN7s3ETU-ZHI7bsf2QDWU1E8Zsk0H6xEwVYsJY45iqwVc52H0c6eAnukMPnu--C8_a-1U2hrbAQh7vKW80PaRazUEIArhvvMJx4m7MGua-Z7Pk5Vn6gwNGlk0Nn-Bl1vp3HaPPyObMx2e9fUo871a4qfZZ9r555xc4PLF4b9i70uWeJDmQO_QLmQszdZ8u7AFCJnskN3Z6iYeyb56aTyYK44MFi-JqwVTdh2tHkjV1TJsqs53ErNKgq11MoPZ6BL9qkCBdE49oybOeolfEsfQmEAws3saSCcgDF6XW96-qCJzS6SQpnbIF0jCWBi4uhL6WmFmpJ3FYrl5_-utK_8cBTM-Rjlh6M-cZdbjOp_EoXlBU3Pw6uSULsUZuZVfBhQHVsnRAe9ZxbBoiFz4wKD_JegdqGVzxnuxpcfsg2nBoO90ppB17xAA69qUmu5W1ia_EnWaSg7qgxfmSIRUpySOTxdu7VX2XvnUH8LzVICR2ssHnm0VyBqj7BJE1IjO9saJ2b0MV_OXRRm2iKRIpEWQjW7OKms1QOJPb1cWTUUK-bsSWvbO6RDUshGVskE3ltTdutEhMPWILvkVLZhnCPF_iSsBwqf7TAj9qjT334hBoUxvnBH7heM6SrHV5MSKOHgkRz64EPaiq-9O4dB_t8x6hkEE4wHoOgzFga_cS8r_hib9Jun3zxK_LJfRg-2mOC3-7vY8OvqK_8UD1uUsX74ha2MekWFSuTHNcG8QnL-EjixLGAnOpoKMHD16wOxjNpuBtrJim7SmUlzQ8RcIabvmsDrom21QxMJrO8Fp61t661HJpNyfxx6ETC-ceCPmmOD3WHxtuIJL495fr3kuhUQp3p2Pn3RcXJUJJknY60l6P7ekdKMSjHbuHJrk5vWEAOxAWcFJVxGmgmCZfMHt6bJsxYeIDuamlPOovw16UYLMav0fnDLBbmiJYxWkFpyxEV9OL3GpxcNSsmMSCkdHu33-FaFAlbSHmi3126lthNgJN7Poge3HVPtHl8QDRVlx-H1kb-cl48p6XjVK96OuO0t5HeWxuYARUN3NU-B6ShnJ58003DcmJ8ZW719cXdpy7Am8Zhht8Ww6F21QxJc9ar0HUGvm8A2cd3J3eaD43wWmepZb4EmXFkJ3CeSKvz_87EqxkFbfKSVBvoWaZRFs2Zeufxfd5PSrVozgh7hAbAE-rvp8yHTzBNyEFUtuLwDV_AEqli27kToTpmgLEQ7-eX_uMufpgoJpbb7orxLoXrg7AaGuK1-SgWJzJuX1jo7EfyayW-ULr4yprW1Ityb18g3m_fyr9udhVKuXC5ikymIrlvQXqgugD3PdMXBL2e5mJuqKpXttK3TszPE5NovZMCIDncWNg21l5cezvDvY8d0ateiIBcty5af3p7kDfKpXPHfM-UZoxHscLAr52u9V0n7I1AfuavmgSCdO-IcIpoGPONeOxaVOSQj2BMsf3_uA-pDp3IjaF7KQuxFOJRvv9kf5Fneq5Zk6aUwtKUy34zIN7TKJry0bu4D6ivuXS70mjln3VSvq6qcCRRRcoVcy_CSkx_s2ARsdqMYwc-FgSTNZqSsP30WZ_4sSigv7e0slqWyzQQvZ-SVwO_BAdaefFtx9H8v2gfZrxHQL2XyYLQsQQ6Hs7RjI9jAPygW5trnxzoZzSLDyQAbTvwjqrvWGk3dPIXolMqnW_6yKUVHTUNJ93ia9ibh9Y8hrxkvVOEBZSY2VW9uynhZEn3E5te0C1Vd1wRu_TAP1mcw8eFWxmW2nFtW1VnvXak23fX5eoyHNCY7J-C0FRdKWLEmXjrkt8qQL0rPQBIaE2GQfc_nN3JueONocVZZt1mxTRwHomhW5Akhdo0o6EbX3TyFI9Z93ZEKg0uVMCa31D5Ya5KCuGFod0qKm9PWDFvwpEOlvo-m3SjsZSMVm1c2mJYo0s4JcJ3U3wDxqwsxX-O23AHzxEaqiXKNqnBUrjG_u7vxu_xJHtx7NuQ4ymPcbzr37D9CPDgJeZnImAx_DWBJBC8UiHSpJr_LzDaMKDBuxmegMZuVmOlW0kn7HP9UWyeILp_3Oqx8OIxeOFrcqJat9cFgW-7JFq5unUTRmcZucNZ4EruG7UEb_Qa3L4orhrBAQQSw_pdd9vkIXVVsJpitSKp19Gagco9hD_vdx1N81BwK2w9yTgKcy1TOI8w-nlV0-JSSTAYHxtN44LIiawsDzcaFZA4MTfaBO-NSAe2iLRj_8fYPNYybdsWmb9yM0nVXka1GeNeZrc-DdwjP2rukINixQBCMFmePB6q0EwuO7ioiD2G9myAQ085-ki7J9cIanCHQdhAVbKRVU_uWrrk67QO57vfgZnrGpkYx9cvJybUAYAglegnF9XYcKO1GdGckDOylTC2Owquq7BwSvJCLCTxMmW-ylGxyi9Q7MMCrmBnilNMEtipfFJ-nyvltTuY2425HdWtoFtg_fo7BsFlxCUFrUWraSt9nC87awlmHZw45RdRyuxbKv5IyWOmLhP8AzF-lsz-sZQtTFAFb_28xuwbRNc72Az4hgOutFzeEFH3r3YCllq1drQvxujzKjrDyng17gAIPV5KqUpE-QVdjnt0nCllAaPQMRFk1zJReO6GVgE98vA5B5dc95eN0REYFtzVWjYv37GwAsJIL9B53FY4RBAjri0XDtO8lv407YwIyvZLbnsS_BisG7B2Jm_84lxrX1Djitb8Ggmi_Z1zaaH02DCTzoC2tCTEpJxazRP94_HEP6V6CRr4qbQfiyAQu86gGJGsoRx-4cfRHgB9y7Nk92Fkzd3NXTeKJ2YlMbxcBmufom8cr_8-Hv6mbekEjcGyvi5GJTI_xk0dXTCq8hq7SgzdW17JWCh_NiZCuoBN7LT_3rVe4GJxt2jQ5QfzdZpJNT4w4mHtYGNEarXqz55eR5t_3dcUHMU4UmIEHM0PNJHvYNlyRpMQOJSqfvmP8_-T6W42ZoyQkypLBMhV8ZoFrr1mpz_ckAh9DyAbO_0mW85QeZzRb6FIloPCKBZ9YaVAaJL_T9oE2uigjKzaoDFg0VsExDdyhN4E8i-qFYdvKCdTZFaHS58C7bQY2SSFPZtFBzFQw-CP3cAL0u5KRMtUwaPDtg7vqlEo0aeFEszNZ6kBiLi6PxCvqX7e89MFtjbTdnh3JwcyJs9HS_tfpKVcEFK6eOJIzcdKtwBH-R0n1MueNLQBqyRI_w167Fu5Y8kXnwImtqy2cGIDlVITaV8S5T8-CudysSH60SjhRVR0dmg5cidGzHPCbMkrDstjfslHd6152kztNN-5iG3oeS2_Q_l1SAfEVi7CYlsPBeF_qfIgOMB7_OgBGQdDiqDxJ4pgCPsoVfXt9a5yCObINhCzGp6Y8vOnVr3TARo5IE16v28l8ZSYDCM5aExrSaFHjGje1-Kv1OQsfI5AE71bU2sbvP-IgjAd6G4EqLRzhM3ZKjigybHtjkxQ0aJPdWBCuPV7fyFseVwv42BAaoHyDOYj4W_tCiASsIn1ED1ZOSiTZ4j739pETRpO4ck0ssAcnKRjXn_4DC-KLnUw9rM0Khps4Aun_yt5qkXjZjc1AtWc3S7BVqZox2kNCN0KzV0DKo4HZV34GO2Zz0z4zV1d2CaqmvQRE7YAQC-JKxKyqnO7AZjSVTLvX2LK9lC2GoEnwFJFJ-SzhByM5ePj5XCDuyGdkAwDprfQtcZe_1WjS84Vzin00C5OnyE51rvU51jpOzFrbBAfjVH3KL0Y-rkfJ_oUnbjYdp5PW9czOv6KXhCwltwCGA3EMPv-jATsZ3XessnGOLfwUc6DM57_H2SrQNCsEi5yFES2TnRa0xN_k-BUmg6z6kKhBeSorN7AwqsjmIK-akFEt8vP4CFExwVKQgXkqJB0X3Kd1DtQl-ZUOchDzUmENJGLMEqtee-c1bX6T2n1x7gXc5VMFQ77RjiPq6bQf6uBdWwEpJGC8VRA6mR7WZ81J7iZ3tRSea6OJRDtpSqfdKslHxGHwbcmiEsEFFbzFoL77DXtRu4Lk1HOWxELo9qPqGCOGiB3cq5tchOXncHvqsqHAQdEbqyGTx4VJyQcqNJPdmOm6tQxDz6RTXuajkYOmx8aKWQq83pkDBIkvmVCcHZZ8iDrqHWSPmF5d5RFdVhUIf-hCygsSHRaFrajePTySAmhQdCrlXbPYcFkf6Vqo2oZP1WQoyn8LudIbv9qRhR2W_bljphmF4gEB4oEG65z2PtrlgkcqSEqDWe8N55CkCQGLqOsVvATDNzcGYCZ9cBZChNCTVnLtyrbUFRyALOVm6RJlke3D8CvGKFiC2HNVS4YHlJ8WbteQS-BtSMHaLFqh9xn1Jvzz3IkfpP6adUc5_bHpvVkm_BmGNPppdSrAUDFJ6fGQBoEXpdpflSHq4jg1mQC8FbZ_5cODkhN0Gfy1BRxegHAS6e21Nk9ST6Jyvyy63mIpkuBKIg-fulIyUXRz-Vy-C3BHOFDMZ3yEvp2d0njB_F_vO09GEAwGpcrKb4iMFbEsTuL--29PxLD-0ZBZm50-4XHDSbr-Kp83zzad6WgEHGSaaUJ-A0aW3UDB3rAWnFYxKBv3hTysZmnPPHprUR8JnJMJhR1MIW8lfyOzStk9vhCWLeEE8ERme1lSywtnopnp1kNAbNuA7WPtu0-j-Yn6YaYJ79n0xDPFDjwQNsjk7d0Qt-UHLfcpOx7udSPm64anEy5VPokGowVhkqT5_BWElcHMAtqEwEgXgBY2yEzICI6uJts40wb3z5fRSU1GG12ufOy1DO_-lSK9Gxmu_qdpk7F9gf5AuxXqLLLp0rPouRfEdTa4tPbJ3cLesGShY6tPIbhYCS8xPcUpH5sbcx_O6djQP6AFc6sZ1Oua9c2Se_MtcKMA5JkwURHQcJjHVaA3Ej8aALoRVGr6OUbjex-x5RwNeof04HC5b_Mn4eE8dxiCwmcSYXyfpAhS8cxxLaijdkHXrlMb_a6WLiyh77BHGaaWvD8s9M9hWAY04voDSlIcmjNjzDbcLQIdDkQoMShzj-Zo1kcswiytjrgX1WHD-9iQ71x794uHn7MQC1AaJV8ufB4sb8opei1D7r7N9aDaF3qmztqqPuIszv5ywlV2IlLbI5CiuBC49TA-siY3jk-xACINQwpGAuCTEBsB28CG2ffMA75U1xA4P9o7EpHpzJM8Gn9X_vKrUMTtr_-lv2dj8rLw9eHn2WIk44Y68EagdkHIEPaEQfuftKqk6V_6VAUoGimf_uE6VoVu1JDWcsF9J2A2t966_K4BHuQzzvs85z5lz_-jNM3ITLxdCkEiA0dB2ce_SyTCXC9h0yFfLSCDwA7NSIivZHntn8xiFcqEzv33gHZ6DrfryUwGJmhJ1anuXybss1X7abYk4GJpVz2Ney6d4Z-DXpKWEVLpaGsQp9q0cEk44NEaGT1lrcX2eq62DsKtwoBmFnMSWAXM2lBTLuYNz6CYFoek8ZCV07SZsqRZFCT-M7vd7UMzZRdwIG_1zl0JopXztSMVB1kautU6bhWdgcLE3LcD6bNdETLiMyfJtfN12LAjlS-Wh8_y0KTiU_6eHMzMqqCqZ0IpGyxk8rBf4j9KmYFpZOpSKs2K1uzDe06IqLSk8-PW2sB3Ag7ffY88_uQPnU7ONZ91ep0M_JCyB-PHfmuYdmvCA3ViTbKEPaWirnjZjPUmEz29KQsLBTaGrNgYyztLK92PZ3odxmV1r8NIz5C3qJZpzMHwPAkMyUAHThqjwQgfd46Z5E1-3TlOjOLf2cy9MsWEF0YZiJJNFd2KyTdoczF8ly9pn5GM6V4vFcX8SAEyRPSeziSXAbKT-ghU-GLQT7ZmSvMgiT7ByX5Fxna3BOLYIzMe2DERC7nCXDX0VAo3Dk8kL2UFl_dssX9vk80k3TfJStqPckPe-9WkACtiB93r4XTCrL08vq_g2kOpWBNZBqa_2lfIIWKmQSPsLX0VqLrsfQRTo95xJZ6gzm8c71kfyjTPRjfQA8zyZSepUDPXyZIhAA5GJfxsSBoRfv07YGvd6iXMcGCVnKZSJynLlvghADNCVuL_wt_57AecC2dKFEZpJC_pNrkhKS16wb3t13cDCWG2W_myPl_MFCnU6v3rXJ7NwawSPTeaRFdN-FMDOtAaYtxMd-sMRm7Uo1ATZpLVKrxaxFxXCzlKeEApxqOoYbXwiSl-N2KS0Gw_aOgB26Yw49nyPSGYIQR58HiaQVBdfqks4kG7b5tsB8rKJIfH1OZbLJKzIlK8oS6FMOoyH_E9VP3ykySBoUbN-bWOT2M9H0UwhL3Hm1lX2RUJlCqqS9vGot7VsXNFBZGXhOY3DVvEPLSB4DA11KaMkct_pglSXKBuKRCwhTHj3PeXkW77NEzyXYB64Owp5I7ASjHOc3eyko5OEigTa7grliVpw1INNfXS5qnH_CxjX_9MPqJsZgtGHdLlKZeAE68051J83dCXy6MIWjyZd8q34iGmpi_7N3E_nX8l29OeO3xqDEMWkVeqX-2S5OkMfM7n21EAAgltEQ5cPjuTHBQqB8GG6094OgA6uzyzkdM7WV4sbT0ifFTH5SEva1CwApfvXvK9a2Czc2CZG1cIvP9ImHVLYHe-18dAaGIhiVvAHGmlvgYepetL1oV17CX1Vqwe3FNkXTeNUUxyQr-54PEV3ptgu9XDi_TnBo_XEN_-k3g8zJPvk4IJ5biduk-vKZ-fzm5cNLGnFapdvrYkNIbM0vHRtf1AWliOcqnYhdINUDqiTTxmKXi40vmy3zyFOYh05BuQZXgx1zcb5kyfDEw8TiQuXW3BYank9fiG9lRHJy_vuqQXOXQGn5A_FWgONetRlUJaFPm_RYOx9JFhNlDRgq709Ob9WKNEd3-g0chahJfXq5FVrRGAkZIday2a47TxOOIFBy41j1t4Slw0tcVl9N1sPCvFd8lhp-sR74DU0bAtni5vt2qjES-73P1zX_OcWnQDZ5m4r0njL3ZhcYne7JztTSfEcyIlrV03UhYG7vest5Y-MPuAkdg6fV4-_LVuT4AfiYQ6muhF9Bmq35qFaHn4prfyINWcSYPFR4V3A_urc_R75oD-7fnFTPRSRsuXO05otTqBYC6Oc5cxW23nYZDDJ39AFj9xMxIAanbLW6DyVlLgywzPTLX2cZR6n_lQIziHB7BftXBgQaOFf7c77pW9RpCFPINB5yGX6wg1bJxBE08VBKIJH8agPjKyihIYdGOP1L0E2J53LL_bdBwo4Ek28KSO-qUhpSTsD6yGD0nG2v-jp7Ul86yCJXKPdzmS3WrUgxOoWoISx5HcAQOZNDbgzfZBnqgOOsUULI7RsLBBzsUYj5ZRQCbNFtgWcPTCQnGFYHUycx0f6I6-2n5SadrMT9tzcgUtIHeu-Qokj1R69B4RyZkr3K6W6GIHAATOsgBVzSNXLXKlto5nEOsxw5tveNgoc6XfOf43QxMvHtNV1h6rPNWlb7u2WJmYuTAqXathhD_QQ7te4o20U8ogiPmOS2dyAmgjeGFtk-inZKrRx3CRktMECGdBU6xWM7PA-FKk1SYeI3gMrubO3PKeNeolqXLrVnwyHgZysRbg62_Ch1TvBC4otsBa8fjY2sMKG2BZDN9_fpI4mHpZ2d5j2NFZnVEZFviaAw96MHOXfzZLOnwWK4RQgWz6V1UXZI3ag-zBX1vbo67Wld2uD1fSTnYYvvMXas_3d76ZhOyGo3su2PRuBmZenHCq2JLRlJOOlv6CC-0QhVCz-GPzlMl8lKAeQs3oLqqMno2iF8XEMEc_2ugZJf39s0psoERn6dYx0DxR4NMKZfHf1DrD-b0cmTbnSP0V-btE_r3mAYH1UXvK2JBuW4S-PfXRQkUGJcx6IlN1JB7L5RCP1p024VCy5pRnd0vKpKRXfxnE847nO1-hg24saWcDqZ8RUeQ6wM3GuQiA49E0gxfzkQia_XhITmejKxTAz_2HARPrWspm0ohOGX9tofcZGuyXzduPTQgDg2hld1ZzIPB_hk_A0wZ10cPTNfufDuoY-pnJ1bprLi1Ghg1Bq3zzjXTan59Gcbrja7JZj41TmSdnTmPeLiBUs5WAbzNGYhyTFoGW5tPFjhgcVLvvEGBk-vgYfRtZmBns2JXVP9URnHX1Vrh_z9tce3XWYHWQQcARf2AnYQehP-UqUOUkzW0TI7UptmMAfWhLT0UftshGgEoRbJjyEC0y_a6-pvOQRzh6a0DMPAwm761Pa7pDtkSaLrnJRiMyD1QZpEasoYBmMd_Lm11tVAeJ-yEKeGbCf1VzTTvwn8B892cQ60VjLM1ypTFVfPRDdKqxq9clTteSKNmo8wDOAErRrDkcCmiRfjS3KD4hKlD6Wt1YZSz-Reid97b_qE92m9AYWvDyAMYQ45yv7ABf2kCSm_GG-JsKVJSLUpHNib9tXgqlmRxZodix-SUgDBYZDF8_vZy3PEGTshw6oijQ9ewlW8mIArxtBY4haB4nLuvO26GqTKIuiQjH4t7mOKEzQh-z79d1XS_PstluayTeZ_tEvU-eMigLsf9p3y3ZsjRZwGa3Kxc5vq08dAs4PtNdp9c-uqiBGIgu42Bs6xiTEoVNB1NjIBDmC53wUkaWU1fEv1UisZ3JO9OHObnb0NVUH1mxm1VTlvilWToL9IVctOAYJZaKEJq6N3K0ZVF74LrOozQtfu8SmshsAhjMoFZV6heG49n9pTpPstrT5yZt0tHLuo4Ui5gKpp-2-o2ecoeWHhIDzwVC5unTeY4NgBkeZ9HH1yPQqSmj1wuFmP0X8V4SIWWXEE_bPl1RvEFCTsqZutTaXU-dG-T8iOxBTs0L9-DcH18bbQqzenmMLG5UZXGLLUoCTxnBGd5YPyF-2IC3vB7JD3teNfWIhyNjPhDTRCltyhH0_nE3KSfz0Dva-j0Mqlodo0HfVI96MI8xO_xAe5DyyKzJ3GevUk8n1OIalCXLQViLgcVpTQ0hx4GWJ575QJGRDfts65f7Gn4oYWUTH9A0N2JDP7PA9wDebQrwnZ_MEFm8N9qOw66Ph-YQxZxV342GJzkzrEIKzSnb6KrD-_AgsI9oi0nWZ2xwXDIUFQjCs3swxeDFkRQ5cmAHPB6a9OHxDwUCpjL8FzlMGOelptstCpQqe_He1HzY_Y6xeHyWO_SXQd2WfLe9nzOTOnNdHItXE_JKFfxd1BMhrAuGl3YlzKMcolsjBfADcj3IwzBz_9Xf4LS7KKtvOxV7LJkDKKEh6YVUqk4yP2BcMJOfScEMYMtEvKstksnVrf7Dq1urtn1ha65yDr3-73jSLIj_2FUV8otWfRtEoFJsRlFBX3sRsgdjLG-TVZoj4GHgsu7xFyBycNbxMWXBRmPy6jriHFLp13ypjHdHoK1PZShIOCAoTd-IPu4qiIFfbqHfcPwQrvzDaHxoQhxt4LvuYw2eo_LFpz1VA5-Z_drJlYVR-2M25v8CMRwtVu17r9PDILgFOWG-lt1UDhGJUHpPhjKnWyFnVT3zbwHw8-W5sVL-NJI6uMhnMpTV92mTNAWxbt63FNEoW3i4OA0VId7rvsR2aXY3JuGpcLqmmlZ_TT5rHeJ-30qLi_7i5KWXhCUsCDuZrz_i1WBpecwe3a5w9Gwi2jRolsXg-i4BwSASa3DXMkTqpcl9IvyWbNn3ufw9M3QKePzYmgt-SP7JP98NcGjRCkp-lNFKIvbhA8fyV_P106RSc0uSNwD8TBXRmmSqkunIQ0r3oV6p97fryGrSABcoBp4lEk8ZQ1XFtIoEGzmo0CuZWlotNMhjCsTSl3fEtQsB2Pl83YjT77WpydanWTNoqYZioULXW8ezEG3dpI-0oM7f-lNIHOu906-kbbXOJ-bx_lxowtpuD0aV676LBDBPGE817Ks52b5QirPf2G8xi2Mus88MZwK2YNsYC93hG6bPilyQOeh_o5mbiA1SwBdMiKMgOqfzHrQABS7T_PYDFfJbU5cPfQiWJUPfDmWoDs7PNdaOLMeKz63NN9zL6xebXPhV36CnNhfvas3zSG6LIM-igzbsdAo5YwsNEBrBaU7LylZTEQ6zl49zoJk0KIoSLGLSqPNmQ-PRxmlL1JYzV7xhLddGx59O4jI6d1jP2LULtMZU5FQ9qfkXzsPwCHK2oaUDuKEPcq7FrZwidKbQ5WNqvug4T7VA12BPrdYSSGJx4o-Fs-k6BKrQxTQo2l3Y-CFNbggk8lmeC5yIyFir32cQmoxD_YLRcDoDk5EhXf1bis3jKel_tEtEwiLB-pEYazR6vGrmhm25bmYas7ykIOFF_ItzHWTZzlhtfQpe8MSj-sZVUL-3PRyYw83Z2Jdm-cUzkjDelSw1Ck7WsjBnH4EjZG6lXhz7MUbjbekpdwwIKl8YrFfYPrwe3KaUJWn5sm7glMGw8ZJyhxFm2Rn4j3Jf5rvgql-9yRxll2n5tMHflCGJCF9K0cf4D189shWq6mN8BfsKiVpFJALqvagAx7NHKEd0viutQDuJQMoJc7pCXh_1wlWy2NmT0DdqEs0xn1Dp2mzzaPuJQQmefBZR_8tzuFAO6A6tgvfPSLl0liTs5w0UYvhZAC6ilo64SR2oTKrmjiNszFYtkK8Q_n6jdeHV2nm38uqQsI4AfMPKOFP0dhaBj175JDkq59Oi1qpTtzdJkJRY3ceSDAEutjnts-0sdaecY3YKXB5CMFPfrVMiiTLuEE5TfzR-JgV2ZThQoUuWFr6cDK1QhSoXLftoi1NwNpDBkq8IIa8YUCv_Lrvl-V7coGeHYHzX2w5viwkr8eggTaEhrDUuY638heSwKWGgxHludd0o1_uo89GUZOSR0-8-8F39kPchU0WaErM7ART9abPq1UPy_EpU11WuyHubDn_l86PF6N2JkCaO-y1RXeQrTJh1wHD3p_5_ljiFa037qLNh3YS0dn7oQpRuT6y8Z_6ZmZq9VCSlbb5Si-75I-RY3wZrgCO-AgPUQjBe6ciBSwPoafLXhC9G22GrK6mZ2_Ie-0hWkSCvyEypzZW8_leYxt50yKFt9sCYt1VrCO99yyvwYiN4xPP2iFoDrbUHhJRIk5NwtUvocIbn29YxxaQdFa8zvNP1s1a_6ZkP7Ck3QshRheH0hcruGXpDBo7uAVQ9Y-hAAA2Z1wRKJD1diz6FPg-rjreeH8MMfhCBUxqoAkaMOWD0zmrkekDNB1JDTIq9xNGUIW2Qxg2ZmLJ0vPNyqMqSEfELWiQEiSgqanQdEi9Qf9Zs5HsEdm5RemkZ3ejSVhdsp-dA5rFegR67_wgS6sKMdqCLih2GNWgQ6Q1UzjeLYw-b20PtUiJoVfMLod2hZKEWBmKQpt1Ehnd4WFJroezIjv1It4leJNDhNov3L4RO_6LrRJCgZkysUEScHcc_Uw8nPUMradyy8s5c4qk9aVKnxUGG2nwU916RXdLozpaahIW-TMgULUClMKJoXzdtS9_3WIPcp30ublMVyMJWJNhDQetK2I00CsoTVY8zENjvzlDtZDUzYhhFwh8mYiqCEBRlOQDt4g9WQPlWPADmOwy5McKr0312N3E4UMkO67jBAQrOR0f4XqZvTyJBf_oUg_QUn4FZFsf5iawPQ4lcy2Ln_0xMeXkzZn-bQaCjNy075YA4aTT3qcv1hjou9Yh2exuNL3mChO3splph5Ct6AJWJbaRZyOYd9EX-t5UDwT4NSImuJOeWyKcEh-JkHrBNTPSWFK-GbzvLIMz2NftniWNhjKvW7PemjY-NpbE1zFNmxTalcjT4oiEeNCaEdjg-F0cUOgxYhnnzs3fpAy5ZVp0JKspEUdAA_6mY1nt-4iSm9Xg0xQn5eCKALKX5wr2_eJdPGyb0nSfzSwj6EwswUm-OsAxuri2ympGKaBNOsLyKZkt_bg8QjFl0lhVnYOk0LdwbLW7GhfVYdaATSNyyt2av3kYotS9G_7qU8sfjkdeS9AigcHMKOdkxyeD5Q1sUsPTr8p0duvOY6GjxI7dUJJ5c0tsULxpMfwdDA3rHKfenHRHuwynmnMNUsgLZNlJMALFASR7otxgDJszDwmPXFgo9OQrM9gIInqzI51hyaFmIp-tk-Agn0yG1Kvfl-ZLcRrymENMnYwvyxgjPADw09RzljirQay2E1vd4cwOo623gRkr3ocHHOkp065b2s9FtL55fAVHtGkNeXstbozVahdmW7KBml_djf7356iAhnCQIKqqdbxWLn-4EHoOe1hmA_o7syP4rn7NXYISvvDORfuutzd8FR8KWdYSJDwN7a520iyrTW7JVWFjmRkDFCNM7VkqXiIumTWrdZAftxXFzQ0_PEyG_RbTCWBU5kpacVMSisxGWVOiBugtWaOeS_owruNDmEEOLzilREwI9FP2MwEuj-XyYwR7sRpZPsUXr1jCJOGpt05xC_qz-xmWMNhIQt9y8jxL0p8BLVL1ymWOvKonHO3FCtlv1QUy5wx7tbvMSanktBg8_rPE8sg0Ftej5Aaq55YfujXFvbtJWHFOKkN2PNX34R28bYroWR9WUeYKBtempY0XQY50IkgBbjVuCdzwvk26-dmZ3vig7NfoTNK6bhLy8ROT088UV5jDfd12gD6sVi0zeR28IFoiG1dFBYCm1uE5sOeJjJl3rTn3cwuNNNk1rAeQl6PbXULf98zR9lPPJHFOzr6EMe2cRFfP57jRbcbDqjpQvw64T1hMrByKPhmgEW_ZFVTUnIqm88hS6UtqM9JoM5O9UAUAQpzSU24a2_GDImDPrcs-uiOi4S9NbskF7ni0DONg7X9gFFYZlKat6D4rg9X8M3D7_Ccc_G05A7WGowSmxIez4FL47TC0hkh5PG7j3A-yawi_JagXXs_SDJrPslmK3ixlcBr9_QlxWXkU6f9YMlzUdiLnnpB9yfkiQVeiOemdWQp5yktPo2AMuey7OcYKJX9qVYwgLvsc9-uQLQ18sLxQ47WKDf7rV8H9UNNLMT-Katy48Kv-GUkYD7qtc379oMuQ3MZR67ajXryi61w25Qt3R81m34M81HUmlWpSIfaMutQi6qo_NS1qPKwqW2_3j3P1P0OT2VN0LRWyw3n4qJHg4uUM-sS6-nyQv3Ih7SytTHLNn83Ql4WNnbEd_9RcQUkYRrYA69Hm2cl4zAG5wW4NQqtKk_EFMimDFDUnTcmec-qgsMxzzCZkKb9AcRzr0qyPsX4Dwv8DkRmjk34l26CPQ084m1u5eZByOcR2j6GbwIrK-XixtUYKwZo-QkJ4lcJZxJydaB-uKETW7l88dHbhqmzWDt_9UMxn-G01jGJa2mGe7BW7c44xn0gzl0pwUCwwHYIu5zBXKD_tgiTGG6lyi6sdsDODwKzxmZwQmmbCgEwgJu9fUwzeGjSPa-sVFPKUEEZ59888Zr2cI8TwmkmYkNNWnJKPUUeBbTX28I4RlDqgkO_JU4oi0vK7vyyR2gVcfoCgM3Zkr4Wd2OTF3q_ZVbGGGGGHTwFFAMLXMcNuJGxGEU8gP0_gGwaRilDiPs7gHpkd-O0KdxRGJQJaLTvB1dWkj2ncbxyLjbEaI4dAFqO5jvvB-5_WDKyqbbJWLB4WS003Ff7GQusfplejI3KoO6X7V2kmoI6e_SysA7OtpxYf4du7yhMIe5aw3-APcKyXsE1uyvaqf5-v4Mu-K7q4IAv-6_H-lEf8pmRCOgjBx8fwdRdwVJ7R6SeixfhKjSNTd7AcgRyow3IslhHT7NRFOqXZYt4zTRbj7W81yJ9AyokJN43XMMho17Qk5l31z2GFxiVZ61wu-phxTL-K4WCcANpg_7uWHDj6xNxNAa8qgHCD22_BQ4L0AehaCOBF8KR8I2wvUfoNm1AM1YtWIg4X9fKZRGnQJo1YtZ3_TVtKO6aQM-RwHJhNhjThVZs3nYeq-MlxeLOsCZnNJ6JpUvxe6Sky03eeGGt9ZR13bCgxE0633KaOn6wga2Ws1y6LBzjA3cAcSc4kcGxJRE83sI9vCh20wK4rksKaYHHLel_oM0uE_sWYjSfh4Qh_3mBgRRSuJY3UPEMwGoAagiHG_yNAxxxlYRIPs5RGWuXyT60BaYHHSSbJbAGUsGoo2jEa8oynz-cUf0jagoJr3kdbnfrkIggKSz5AgxZUviyJ2viWa0e57x6pNb7IeVc2TNijts7QZGKL1ZVar-B7BbpfH4otKk_QXv9rjbKuNPh1CFrHPtckEW-kzIZYdwkZitRH8b_FXXh9N7sboJUumBn7iwbmeUbZSFdb88iQrfxYy-OIr6qJpgDKrs5BWMkT-L430QCOrpPXFlUq9uKK-PX_sE-Sk29UkBk572N-z3rT10r1Dxj-df-toXvrFXfSr24oXBuOFjnfmIAD78MEVRP2JHozHM8zuNE-Gf6WmLD62yWjs8N5pEELvtgRLvCpoAN28we-HpSXhckxcuaJzTzW1JYE9cFRZRkAKxKTuc5Od734wM5xBP-9NAahZ3yV_11rdHrCPbvbq-pJJx9NDKZ7rJUabR7-lgZI0zr1xv9kxArzbY-1Bd-kjZqjK3Zk5Q5bKaLLQfRk5a7ZWOMvNE6jByE87OPhWWDIT7uBjrU5g51o7yDAt_8ydTqhUkm_bU3e1noA-p2GHV0I-lDuijPn25k9sxLPfIE-UTp4nWGymuZe5ft3rgZCyqw1FCyN9ggsSRUEPqEWL132bkZ915LMAHVXKUzEUPnewJDoVubPLiWGeF9JXf6Az--Hx8TYHLJg2sak9X_rEVdZmK9IzsXDwGz3DFCvda-eEAUAvtV4z0RdgTs-ctDE1Swb-X1q0ntoAD-2fey36n9heEpT8nxYnq4izAQ2c85BVLCon4cqG7tE6c4Cc3DrNFS5dcppct6GrlGUodOL0zNW_muWGAxhpjlN4mt-l9NU_VUMyW_2pfzObDURG6qmn7haCUoAUYrwO6Nr025ljpbMyK-F5maRE_kS7tegCevwqIVc-CSgDuliRn5uJZSt1rvF1VT_y65HDnIPQA7PDsMtubG47UMg8bdYhJGvN002_ayi8ILcbYkUlTTB2Z_H14gVI4U6Xjh0XTU6prHLlsngmREVIFDdkXxs20Os4Li6Ir0rDg6EQ5KP8exXS9B3UcsUlH1OQ7HXVOU4acw4yk1r4SHRs4vjiZr4YFDsjCk3mO-hS9h-arKB9LntFSKdjQ06gDn3Laulo_gEwCcOyHbnJzdNNlgu7FqZpfxMR3vDwmD1f66GCXhfNjED5jh53uB-1Mqyo_J9yDsg_fxWZm6SBz0UQVzvL0cAsg_4Fz107X4zIi-oZFSTK_gEGozb6vuC0L348IpIC6bCz_ZDqcyPdb1Ca9YY4QFWPi3lCfW6dIhNBPIp9pdhXWDF0rQ51TsXKOVOaJwZBgo5PTqymfkC3gWiQXjoOvwQluNm2-0juJZwXuQaRoUKk6zbsvb_5KL7FlmFNIMCu7LfcLZw0Wkk9PQWh5B7cES9LbQwa0VRhX83sNAxUx-wiGrPwPEx4cjvU3fCWRUM-f23W0N02r3bOCUoZpH1_lTyLce3K3HivfXmwFZCU_0XGR8IGsENkpce1pzafepgoOP86bP_s4wwP8VSPf7lyPhK_Lxa5EIpdBIJahLJOLipUa386wjMQqz2jJ8mNTbUwnJ-xwCOQ8y7A056q1Y_L8fQE2wxMgoC2kzCyn8BnW0Jmr9njWbBZd6yVPErH-Rp4gZCDWYqnKAXuLT47gjL5bMhhP8KYWmArh7y2_AXEeeqPdj2fKmBAfNelPQ7eG9smevj9Y87GVbi5xzhNYkJpos0WQ82WW5BIap9sw0sO1daBubojw5ZjjU5IlzZ8BhFg3q6fZVdo-8IpT3OQlGh56e3HD6or2O8v5o0VvaVb3GpWZFuBQ18-SCycjaTMyr3DSVJRoWCI3lCR7pOge2fbX8_AA9iNUnUk1TzjDxZqi0iQ85qjCbySA0sj9x9DapcCH-U482A34ANL5jWV0dRYK2wUKAW2HIl9edqudqD8HAQxBQmJiIOzfulMMY6eS-JUjliZfwO-heAoaW6Q38V8XKBt-_Y3dpc_zFhWjDjTteJgleIzFeWE_Z869jHR5YubCPlPOHMTmC9CgF0IG0pDk_HQh_C0qsZ1PhJTcvKsvBPLNi_LfFSynS2mHrU2HahYyK3nLLtMhIMBXt5RutIJs8TDQ0279PVfQBsndSLt4CBByF0HimSOx3gqVxY8Dtp30GA8bO7l8V6Ez7SqCu14jWkZUmDrT06kPS3qlRKQwbMS3tBgqhGT-6zQANPhkqCSSzaNOREAFzQzGm4RD0uRh5V09VCLCcvQJ_4zOwy63uFqwB7YXeFLHHanT3EgukXFLheFfVruP9-eCUG_38SmbJl7oFlBw_8ZmNVFHbv4cFXdiSmKj-NG8a9vRpZaFgo2X5c1aT1IHYKMnSRf3K6Ae5TdpRzOpJUTheKvDD3xUlYh9E5W9iKz6QCyb_yMGNIgyayiapDtzpzW7fPYEuOXaIoU4QY50cdY9LalSGHKencKK5AAFjCcZ2haJzMHKUxcRyH7Wbl9BUUeqDvSfhmk5UvhrIgZERuIe1vFvyFyylf2ti0OwK0XpSsi0_6k4VoHyJmE0_HQpfOTZVQeXiKNB_T8sxH2Ix_IRgreDtl5bNTYPimQ4-PBYyYkx6EOj52NuZ0OTlELJrcjAd_0oOYYNMoPT6VR24XuQFOuNqgT05f-3h8_pIhZFikgxwEVjAKDCjWGg_uDh-pHWfpGmcz-B4b-fDvDWEkTjNyrtQivH5xkSbuR_ZPwm4bXHMbYhxm4yMtLOULCPzZ9c8Q7ZtIBLt2Jzx0zFH4aGVzxBIwnWZ5NPTRLRg0sw2y14n_CP9OTFneL_2hasgHOKzLdrVPJdz0XO-fONSwJDrcT2peSZdMgxW14x9IqHLvPZ_2JAfEFxm3L26SL_Sc_SqxRM9ZbiBOs5Gi49yK_xPQLepF9Pgu_Pzo6abv78wLAdQteYr5oblfg4LLSA48hyxH_6BCru0wVYIR2DVJsRS0KTTX6xgn6bJuqeNIuRUK8Dqm0jC8bh4sdJVanpoavgfWZzLSXbRY3ttz5-K5Ak777tBPimBCS_P6nmOdA_8X-wzWth8eC4wwlXJjzYneLpHeT6mQmXL4EuOHZ1byt8NorSUGyTteDMj-dR0b6gmrokxyM1gK2YTsyhu77qfrqNnNkvIebYMI8sgUlKVC1vOv6IcDhw6gVoKOdUIR0QPk5lQXYjMfCQhKA3rpAArgSE95r3ypGtFjPY1P0At1gyyAs_X69izZl44qCrdtyXzM8pWZPbDZGXlHFITQ5wJQDm61WkSP2FmN-nPxkUZH2_nF-3riDNHd3WvFVi-kOWw1gn66Dk21TF31moSiH1nQ8qrKTZTAo_nRpGL6JELhDslHe94HVGNBxnh5owls5DLCr4aYAUgZcscyoFnYVO3YxO2VkzB0lyzNdluSruEPYOGugEXUvMFYPwYRIO9hruY6nwUZogKkiBlPVzZCzzq0VakJ7jlN_34TOrNV-bmIC1ga1Rt1P_JoZ_cXppNXOXzqE_RqXp1goSBMP8FNVy7A518a-P6GZDLW1QBjWj7MLJ_LcqD3qTmut4OQ185cPAQtB7FbJLLzWvhYt9W9wjLZDxct2DMP0ldP7HYL1b0MUak6wAHQk0DHsa80t0dzUWF_WDWHf3IFO6xv--j9bPTNukciwqN3t3U5UbN579eB6ww6MdNAyek_2YE4CmTkZClvZ14LfyF0IvT44gDrtPN3eto9m-sDLO44bBbLMcOQ0T29UMoH8Eo5f3KC38ZlEWUnvmdkjhsajZrJjEBsGYmXEwrMPyINHZlfnTfhkIrarIAENyFg1YkzNW6oWjTJKniB0ehAyFNGEcrzyxWaIlWv1aLDejaWEsuhk1g3DzvhBvxuE0xiRfIuP4OEKk3-Xgfj7av3ZEcL-SR_z-j5n_1LER0FzYXi8gzbUklg3EKan8n-CXbuk_XkbM49T4snl6m0g12Klm9C4TVT_lVFYnm8tuJOz67SXO7yehYBa_QaF7g1VKGGOWB5i_CA-MMeeCUwuRK4R6lpXK9ZQvvbjvucB7I0pzYKINKrPNRxlDwOYCSwShqCNJI7XnfnBh7LiZDtXt8JHvV5fnuJn0Abw-6h0QJtoAruCMzfezyWQ3z3rSOB7rlmCbw-QzgsObS1_dvDuZQIRJ6_m7_CXGha1gxwzuvdIqjBDa6PpbdPMkQdf11nLc8JhQSpFlFfIMksyrH3iIY2tt9S2xgETjJXnA_UdGeTfpuLg-US-eETX-OzhGmQe2hSNzEvWaeTG9ppERiWXIgdAVWNH2kF8O_vDiijJ6GGDAPN4GSYxKt9MTySMeoaWQPOPMTzqrFNEBRTlmZ4_eT2KS2MsqtCbC6LMCjhko6yUzZx_zHatpvNaXQZqd_8Ii9OqOLuJmciXuLuhi_zKcml_0EcP8roxBlkDF66daUhiO24GTQN0N1-V0UNxjyJ0cmR4KxgrcAv_7MhbmLww0DHTvgfmnmKWso_5Q9Y_oaQKpKgjpjyDxE6glcP1E8KAVO_uCRUkBigp6zQxlz22xVn_c9CNqNtyTj79WlWQyqTQnscLwsAP4vx5gD64em1ZE4klM6M0FS4hKVG8LurehxMUwgeqSmcXRvLOj5n1hygy3JWjQ7C4FWZ-m91p2YvfdoJaxvDM-ESdIJAYD0-LdC5YVcF4IH0PHU-YIeSUtfb-FCMMvCihv_fPrctcoB9MWzFdcysfkVdN2yXBfPYayRGHpulSGXzZZ8sdubn0j4yLnh2pvX09oX-xJ1aSETIJIMfyWogBFR14aOytQX5BZg9OSb1EQ-05PB5Ih1dUdNsZB_6GAQnaTnqdd-TDEORS_-NSLbJ8BdbPhrn4W6g_7re8oGsanHvxGWht8REoj5piS9rJg4g5qx1W5YKAasFQOjlDwirVIgqbekkQBvAxoWuHDpg3VbFj0uWeNrcjFJ3WA1O6fenRYz-E7HBPPJTAUZEcZmJtRVYf4VfSEQB35l3EhaDtwKT9BF2Q2_3hZi6xBk2EOirq8HSpeGltTHY_Cmm15TYGHAx6RhNKwdJdBJp2y4RwjgcA7k2enkkC8OeN96ZbGCZ2v-jGDGy6AnEfDw68hgMuaweLcy_1ya4e3oaqVE8GAKkNEROSA2jc7Vgww8c08Geh8aB1RhIonP_TF9A2WBYbBZAfwbZm7iDxfFGtlyeXLD78ffAVCwyoCkq58EExBz_IGD3qBerPbs17DxVYPBMyxGm57bGzMJi8fMIPW4czA4hqszATCM9mhOVIAwd6VUQaG_P1P9kevFEJPtt-U-6y6nRGGPcutXk2LN0ylotvJJ1ejcN4j33THiww8vaycMtjZ6DL4SAWqPQqFOgZKeyO0ivMQXA7Xk-lGM65SMrBf-JbLf5K3Fh1YWeXD9QTnbUd9bt6lP4SNhylW5v786gQ63UIwkOuvGsVRbcwbPbKVHGoV7di948ooFFOIwrzwezxrIl11BiCVYCofUYpuxFYx3h7qoOWEPEULTcDFkd58aCR-wj3IF-RlVoNOkWBw29sfses4eb39Hix3Vj9ZVFvXhsv-bW7H06sXgLvFLe4DBWNdum_qXqUAwddlJusWHRVZC4D-KV0_s8F0xXF2aWQ0m5xuauZ0mdUk1EfzJ3K6saBAPVGmawmc0CHSFsSHcUISzar6mWIF1KNXWmxonXQm1hpLvsDSgk8m4VrUMHdegIs3Hv8zP93ZZZP0mH6UX3qHOg1VWrfIrEBc53dqFe8wd3SWcjFZcWMVJKy2K3CZgZP45EjHCBg0nA3Wr1ljZQLcEmYp_5SkFGPvCjJN4WzND57pTijHt5aJYpry5hNEVfu_gXzBjPHkkWStctZONioLB3ctg4jqx0mLKUS8yrtxPrJqn2YD_02zgBFyEHIWvtgoWeT_-u-E8Rdc9wkCqgwCZwrJ57SIoM5cUuMre-SLeeewTd7Cm36VUAsV-Gz0l3emzBPL_s7TfWzVYQI1lgKwMR6OYdZXq7zZyzslbYdzzKXA-06EOjUE2lFFqD6oQdhndOPlq2Xr6pgjAicVF4KlmOA6ghCF9p5V3daEeCtA_OuqIObyPv3Sxtsj2wKWMIyZFU89PyIwDw_gkIx5urUEQGcUL6-XCwG2TEFbEBTCxVbcM3X3D31RokN13M0q_LicSOpXUzVchoNTdk3o1z6Qf4aWpGANVq3I5M0z_7S4bl3MRbmDFn4fE0EJfw9uHSC6vrBF5LMMpWDH0FSMEQg5TwLztoHBMqFOl_Boey2JdD1DAyP2P7UZHbze2GPmhaa7_ETr7b1eLwLuTVpkBNnBI-5b1LrMxkKO5OF5KJ9InTS1K_fLBMy5QhpOVDHmLgIDCfiN1-YLXy0KzWWQKk3X9RDJ8-G9pE-M4BhuspETwsZp6tocqWCe-YyZvM5joSpbqzn-o16sS6WqE3fxkUYkpgRWjL89JG9JIbG-h_eoWMnqOIkOyhiwl-J9ez_3UfiAhsTYK1rvWFv457k4moIdl6xPJ_99oXaXUUfZhLpJ16fqP-M4tiGfwDakmZNQ4gjVzLWJ92y2ur7TLvFJ71GyFHbP5JQEElsYAsBxYj4YpyiM016tO4jWPYJ4MMUH0cmNPG9IKv8a-qD1vyMW631DwT_zLLftzJoSXIklTEAQSMqHRwBtHYuyOtG_6oyOTiWAaDbkdZrcyV71xZqayDhZaOKJr3SYyhdspwK_1c26lngRDn03SqfASRQ7B6GveZdy4L5tOWd0B-T7iVup1ERmV9yGXMn7_bnPhylhLQoFdGnRjn3N5tlhMfHKv-jP7wnwez6b3GfG9ktp8lnIU2X-D26gtiJVLm5WDcu_mg_jk47npaE14yfegEcxxv3rPzUn-iPhJZoKDSpp_s5IS9UrpsxVKqlxROSaZz-wHgTMKXa9gIm8fA030wdq9JuEUC4c3yPaqxyIJnOSpytBkKuqijex2f33BXuJUIR8uzO7P6dO1q_G5ExgY0xAjUCQXak7foV6uKzitQPEyB9kQ3uSE-1IG8wTxVUer6fZZu3i6jvojOPXY1j1UQexQJqmuXBbk82Bd6Iky3PlE36Ko82kZy_SE8StQrRUn8gPYPaQO0xOBppXwp08ibaRVDoe43HHJ4Cq01G5q6ydNROvq3t86b9dPfXeinyn5M5jhRIvavn_WcmZwdxGailHttk3BNJNXbStr0zhhOflfc9f_sxvFMD2hS2idTRIsTcA9c91zNxtrnJVGXiSlHdMw-iVXAymiwBV5wmKQerDO_CRQxLwNT4C6okBEmulgvUd197r8jHtyYOzYOccfV9KWqpw4MEh6P58Uvj6zerxwvDejQnTHPmdOZ_bzI9qyd-Q1pfjcm80zqQubNyEbb76VQ3VVXxYx4BtUymCLbi8AhU1EkwgkFKBp52Yh6vrGDycoBQ7JOdTFwapD0Ykw_EOjEmDL5F8Yqp6_gw5icx450lzKOB6oKRISINosSJX3AzEh8u3CRkXBUXybPMlGRr5L4H2qhig7fXW03_Hkj2eM2kAiBTdc1F60yXT4RyBlKUvpkxCiktNCyFi3R03bAhRSeqUAS_aO7oONdIjUouYv90jeDUPfAm941PTPTxiJxxSPrGj_2WGEjbTx8MjrgmNLlEpm7HCsAD4NR7KAKwyuE6UVY5C5H3uS6E-ZW-3kFUQT-rgoUUQII7cw1YW0l0EVq8p6WaqOa1QlpSgKweyrDlNT6YvKmnU3QkFzDOhj2VnuZ3y8TF3mszsDLFVGUNmafVN0sS0Qea6d3CmvJRbnk1CaSd7uHjk8hpojBMgbOGu4uakqMQw0-FciC3JHKpEMZ0_FDN5WPJRlfGp-N6t2w83Uyeu8cJO5_WVlt6avLKXms7hfrR2c_WcKu8VRpPvfaNo0tocddkOjluOV-rkNX1DyqvmNZHcmC6cdUsgcmS49RHAaQtgrwFVGGl8I5XZ4vIU9xH_ZqLBjUbYDcwQCfy7G2hyQCGWWIFnK2V6csX1INncHHFbSkq7WwHL1Ywpa-2jOxuzRgxiswXWQr_gWfHwU5NcJ-t97188ESPI_uyMU3sBzcgo51JXLVbMJiY9qk5MSVmot3QuIujOGicDHaKOhAvxnpHuugmVbzD9AQs9dPDoR0D0j04lyqBWtVFPRIOHlm8Tx8Y_PaDlsKF6zKASPJoiwFiTw805usjiCYdLO1fe3Jwz1h7K144uIPuXWZW_FvGKVHg40c2FfDuV0pyDjAEO4Y0DBPt9XkTEFtiAfLkmWsN4dSkMhVY-758h2L5cQ5G6ZV9cC6M80az-pyfRZQYZ4ZcU04ANT__Ycy3V5gH8crE-Zr5uz069QLuFqH-lvPEX_OgP0WUbzkTUjIirAbcWuJ3x3rGy2YqLOpC-COiMebW0jXo-KBKgBWT7VAnAu_nLndN9ODAI_afkzkIrWedx6QH_F_wN_ic8hzkrs6yASqO13A0440oH25rS86iY0lwK-OlNVJspFjnBlxTMRdAvhMwo4hvz-qUHHHvaJuNI8Ja4aOpW5f14XYJEyCsxi-I0C0nq9qPFXi-DrqQ95NQVWgY3EYzGBTWUPgTVwoYjyRtZU_Tui243jKAtD0LOsj7Scr0zAllAkhcJuWy1LwJgdUIaf2ny_SXvc84erICP0IZEDxKNSoGn2N1nCff9LtP1RNRHPeSWPByP4G02qPY4ob0OY5P-F_H1p2zG__rlQAdEcyHE9n5JATx72NN7bnSNA7b9Y0p_kDU9EhGcRhWhSxPpleRtMEbfeP4UyE6gTN4N3yLLXyyToN5t7_qcDX6O1Icc76nGx3RgJ4X2a2OpwFZ8aGP-XmdqXHNbzwjqmJc3KTm5axFWlcyyxFft3ipGAhYoM2sevrTkkGDONuQ_4o8eniEQxl8j6LFo-3mwUK0NY753JUQCvhxjQLhXzrBzUuG7oiSt7pMwkv4yzKS14q-MX2C8s1whpzX2gGYLkeIc95zMc--9n32Z-YF6QOuAOD5yIyFZK4dEIAJnnGsGNrJnbprn1Bg8geMAVmAe1i_olEKceLssIw0fr0dwXbM-Etw3PjvdjiUv4MD-aokIJSffMenIq7FNbDq10k9g_Egb1G-iQub8Hrssn__h7Nt0zSgQSsU-RFtEyC_ZicSNwP9Rmdvn0CL_qvkx7OZCqNHQb8xqyFreH681bNihvQ1tSK07Z6W01snJqI2NOQdtBJUByPy8FRNBZqjOHEBOzwoyvSgUDr32Ck2b2hJPM235kTZOkuGglAL2zg9T08nfbE-Iknw5p5BMYOgPgbWFJaG2FyTlHQu1FrrF4yLpA5suFzy6o9okMbH0TX0om7wVf4uulKBTqvbLQ5djN2GJaYVbZ2AdBhiGbyPdfNs6pzRkvU9JQoOEtx_TSXqVyFrqYEscghnxtil5_5GK9K6Lvv2dGXepJFNjzws3M_NptihePrr7HWc4XpY3vs0nIzx3is9sD3UTvH5PbTpY1KNR-YWDqZtaEmUJhZLxvxQKm3UrDvrUAz3V_ayECpLYNdOJIRCnnjtJIBK2ds4d4WN0Iv0ZCIaY_EHWFEuCM6uqM0QxwRi0v9CDnKuhUBVH1JfW0n8S57sRmbu1V7TdDqdoFUwUZblvb_kb2r8muqXeT6Q_5S_dPiPIyS2vetjyyqs8iFn0-5GM4ostQrTZgVN1N9gRE7Z0t7i97ew6HYQm2WTX0YOygbTH3wVXp9qi9HDObvBo0no3SARXFmVv0W1I_u3LT1kczWrKSbYF7uH9eMuqVuAzXlf8ym8uAK2quZhjR6t7YlYmkjIHRv70LojuKnqN5cNkBSAtmT3ptOLe02WjsfE0e2CBXG8O8TYw_z5FWb16Cag02eJ7asLM9WJYMoBLnjC9IkC-y8edfX-CYYrdm5s-dh_4ZNkPYYFHqTq1G8kSw7BPDubMm3NFXvVLsUC1S1BpeP6CEYhB-aZQWdl8wRCyVBGDmz2hrRh4AyfI1W6uaHgUdAp0Lrrizfm7dPfnUT7ioO2uK5J0QMrt2OU2G6t-W3ZTCLGDgRot7tj-uN7uNj4m-9Ykook7wkbNmWc_vv_KIdg-r7K4Hn0sT8a_e66Dme4NhLGQ8E0CT2v2WEBgNnIHBF7WjAYGYfMPCHw-HTPYAU81J2M7bijP_K9GbMMaDTLziqFB7HG7-GJqd24ep2-faYYL9GT_9DUXUTuL7KMMV4RBxnXmsJDSenBg1TG3R0CDd6joNwa_7vjtKEFV4m-l2n4H6EOrbW3s11ITp3M2khjBcJHokikCEybu6Bujyp7CzawGtsfGDPuoKqLYQip1X2S_ui1o0TH_o3j8PijRToboV6hK7Rnwqs53e3rnkug8Gm9GXoukCJoYZKJOnw78eDPFS2sKBEF7lhXZcs1cAR6xLOQc0sRSUnruunaBTNEr6RLesDs0Jcd30yfQpUifIdUsJ9ox9kzcE6t6lsygoL-8vvWMyABH6iVIp7j6dNlz8uLZqsSd1w2E-aOdEfSywNXWq_ufUXFyogaXpaZ2OnIdRymdDzVKrP86jSKmdTuM0-pGEHaiSe-1kaUaErMm6ONQ_ZhwcZYdC0gPSnOliwDvNf3YDT0oDUubES2LkW3r-tfULl6xrAzcs0w3EksHwVKj9bWyw0GNXX-jHrVqGY5rOeC_XzyIF4ZAk1l_LshqusFZ76ua6j3pUU9Gu4DSrGblILnyUZbM_TGa4i-Ey-isuraf91Hjs8_u95ZET87KMuRWmMGgtWVJ2sWOdn-N3aHkd-uT1eG0SLkr8y5t75U4d6jR2JOr9VzpAbsiWvybdOSh6hWs4ZuhL-PRnJ5xosht1GvaB-LAJkdX_R1GNVswKJt38irOI6aVk2ytDHjex7-k9Fc_KQNA62g9pD3B--XEBS2wxWAALAHhnLa7L63bx49SCVH1Xud3SDXFeJ3qWoDPTnrMagsAtMoseVzfJPFvI8prk1gbkN_FGHMcA7i2QAziOjL5LhAf6LyqssLa5NTPTCPNYFqAErjjKL_Ij9pKS28kcqQ1JPSf_c0Qm28-gkJYyfQ69l_keiwcsRYBAmNPV33xyBWDU32S6zvw0P0R5ZIY2U_SIWabGufr4SpRi48YNJmEYVtz--54egwfqPybxPPOs0VuqF9ZxMMQVFwUPHpvS2x0TYFTOHbm-C9Xcpv6INmg1dBMPmnD73QUyCv-Zf11llGJGKUJtTWnFLX4HeGZNXjbE6NwJqSn6zTVlHlO7ie7EOREXI0IzXqxxzRu_6a0htT3nvPagbqGES_3E08KhUTfZ7UU1DU_n0TOedX2nEPQYN7yYAeo74caVRKwumyglJnDMJGmD0fJ7rS3RxrJXQ38J5xXhKANL2wgh8bxCOcFmTtDRtnusoyl1ktJ94MvahaunNjpAm-g_OxBgNXmpbapMYFINkyAXya34ktqjxIE6rmjAzU_0E_AbXsXIUnPNXpJFX3CrFr1ytNYK76fnJ6fTDwOzkylmIuev2D_N6YjuTJcG8npJ9YFMln294ROYQYsS36hfyXUWuWJPsaAXyRcozaztdcCMVimHp6S3hzQL_RhvC7yGR4QJVggHdDwtdoxbM9qb1sS7PZvxyvPRTTN8JHWgZimpo2_wrRZZ55kbAQAlGkXuuvW5CcoKkMgWdaIJ8AiKW4LyzqukytIY_PSG2HWXWyRLMomNekrkyru8mBhe_GeU9fD3j3KgQyE4Lno0MF7jYWxmmJBEV616SblNi0C1tfVcwLXQThyhbmsau66ydLfWHK9OToHM72YJ3e9HDC65k3JlHscbJI7q0ZBEFF8VbXU1a1VPSM0nuDWtklwtHR8oGt7n5RXvvSt4FuTy45XX0wBY480QSz95dj1HKmuNSZc5dVk-EaoWRALCg_DbcoK9Su2ix4BB10AQ51UfOn_oLUgwhhGFhaTRo0SYM8DuACZi74ny_L2ZAKWMVKZi1e-hslIEObbO1dlUaWdLPHTuH8s7RslhOfi03Bjw9H-2mcBmIEDCo5PGrHLIoWt8HFPRvDT-vZKkX7eggT3QA0zWxw-4SgC3vjlJn6uvk_J-P71Dmr7XArrFkjsufeWK2Py8MGqWOtcFiJQtXSDhfYoAfzGZV9f1Z-V6JPSK5w1sfStyay9172ss9KAWMFlSDCB2uXY4t4Pb0kAho-5Ud0T8FqqhE1XbpMZaD8CYzMcDjYUCFpbZLXUr6lHeiMN_3Ng-CetRQ-FprVJ_wQVMhY81PvEiIXe1kq8BtmVPxXK_tFPgzOUTuF_O079IdEvV1XBX9mtGttNsUZPrLsZZcZ3p3tLwaowOX00k9QN9qNy_VQdbANg5VZ0q4zVTK1Hh2Shc6nxfA6LlC_aCt5T0vLVo8B1fbPwNIsDiipvH6Ojf0r7YbMTSCxsextAAzpJlXvYmyADdn65Hg-_4b-z9HaXifMCZRN_P9Cg-h7BvUfp5dFMUdIcTH54hMFyJOkBxh_WO1Y_7cFcevwm49V885szhE9c7XtByxp8SfrbKJ9-xYcwIx_nmZfnFr08IfW603lv7DHc0vHNWSyDoWLX5AFAsDv_mA7TmOVdikDhHXojxq2P5SjP-N3xqZU09-7VncLOHqKL6CbYLOC6kQ00p8dxICcNY7rc6sHCiSyCEKj15xpCJZ8I8FP33SjQLs2xQzDzVuxVBsD401XQRAagBn2zTUIrl8MIMpkh34KOpOO7nguchxRRc4TvNdEcCvraKR0RJHTYfW_N_LLvYHw52msohM_KySnwstzdWgAMPQEvG-AeL8iIiyCiI9NkMBvn0Um9x-zi26a5E42AFeg-pkEdh3ItnYyEIsMpKGQtfqkY4rkfKeTrfSTntDryzYyOc3xnCUmQSTSBg15ZTMtx4ZAmgROuMtCocuEQz-4MOrEm_7EIzrUUTX4_EZHwKOlCmh2rS2XdLJOH9tuQGECBtCkX5PqKXeAKqldAK_KhTSkIwuBDVqToqWidD7IjLat3DvRtWAnb_YFBQWzOa0L5Gwn0_0Y_WwMpxeONoNiNE_gAf9_ZHEf59PZbv9tO4mAVuv8OgYv25WeA4h9x5KcN6UNBqbA3OcIWwcmLm_214nz4K7gP9M9lyoI7cy-NcB8jYFyPEPq-e8lfvcsPXMjn2fw4BqXdIYCzwsLgXAHA0SR0CMiNtZyM2ehagBK63HCLUu3BcgPA-paBOFScdQcEoHOLN2FZo6O1ynbDauMc9mSvr28F__LfKTHeOIQjrhbZh17r2Scy4nsp1jvHSTj7BO7u2pXkYAHphONfxnp8e9eI-gzSGMUcFcDSyZH5Ft1Ab9UeOmpw923iYlDTdeeXuWJDQYEiRyaUiDDd11S-FTrJo29pj0WP-BZMqQ8LzSW_6YU4EGX-NW4riB7_i0Dxcfy3v15J7OhGY7P2ut_uFqWvIz8e4fg41N-jTk5XDxzFGlxpkBAWxSv3XwiyfudgTUqcYrscXBP8DbzDIHqbBcfGFEE8aVDrcOMZ1OTP4VlEv2xp4tVJ2GcFMBSAaF5qvZa43Xxuo-s2vXx9sf-KR0WiqQkkTKjh7hAr4Rj-FnOdWBJvqj470ETdfO8RD0lZqYJ8ENXcl1p5lNYAgARkF2P4Efv7H6_g2Ot9OBhbLdHpeZZSQnEO8yhPZE38aNJw0ii25Jpc4QY_FIMH2q53alc-UNktrZGgoCueF59i5RJljdeQtHu2hOdCjq0-dUa2q_QpQ70lE4EiE5KaWP3ewOxJnlkuJn61sh4JCviUO7XNfuf6IANxksOSOdFr2p1Khd35NHZwefGvKlNar4R32EFR-gxPRu-MfzKRd7WUIzG8yBoL1ksfyuG2gFTDb98BrgpkO9jywK6WGHysP2UQCwKkTN6eb3yA9JiD-BDM6t1MSzuw2LFbgC3_DYQPBAaO845SbXGEtD2kk4Q17yNvsDTsZHKva3fDG5VJu_-JHWQJN70HB00tbMDInDxXIKSi2YUhveWaukFskVSBZGWBehwrCgck3FYAUVakYMg8sA8rpqlQ08h37QzE8z2vC3wa98uDku8BHyut8752nYmBMYPdCdpG11zjFX0VvddqhwuyRzWzpLbFtUmSjS9_7OOGqqACON_I_AEooLm6WDtsl3sQOWiWmIshD_zWMjGHYLJ1ZCOJqhDmQ3bv-9r19adeq3NnnOh_0d59Db_Y7ORVZTiRrjASokRxj3nlAIPsA7LyfQw_vmm-qT4unKZnRZySv-HFAZIcokb7lJ6kyzSyRxzVtOwa1gArmwH90Gsa4qDBLPABn51Jq9pqcK7KXx5uAcn-FPMi1_qgbAJwqmihC1CJhPPgwY20ypVmK0_hjjwLXl92v8nwxpUzQkyraDP062Jj6yB62dB2wB79_c1cZLWrIJgKv-CG8dg3WmhUftWtatBIavMTXE98O2fEx1RfRwhuDQSoZvG4KZYJJxq3jxtNjNWHx_-0PsTLvg5xu4VHDeQNofm4dEJfzqvlu54lt8jIlnuKAimBuVOYXZ2CB8Dt4FilGtl2bLh455KNY5dn-6hLE-oFeuBQE6vdsRq-cc0WEhtpZxMwnLX70PdPvvTQcuV4KFOhnUwbG5sMuwIYJucDLx8uSBj2_wcM43ogLz-HKMx__QYGPgObXf-mNasQbPFrJIGad32qKla_Vw4sN6D2GLB7dgSFCHvh6kkbQdrh7T4fJ7lp3Si2hOK5T0wyybZ1Qt6--gA-czXpN9jvuMGHW7RFsY0RC0lPyrDGNHB_hGL7xoFxpDf-Xwx-o6nCq7aP2nj16_EBotYx19ZUrZ3jDezCr2u6B7E4xU6qSpRfIR3cd_z3rALpc0e-R6R-3Y0ArHiG83-SDMn-WnborGr3dO3u7wH3BHisJvCxN3aAAswl3ezqyCKIX9iFI4ASVsIkuGhUmUD941te7kclCoUkkaIR2n-zkr7Zr7afmLevBTvWplECmbSEIAzP_0dUb_6Xtv0eI3cp2hnCPf6L5C96wKisDRvF8ufcr14i5vqB-E-PMXptScK0bU_wU8gslZo_fpJlFpUct8C2Mln4DJFa4JEAUtVBXUPsTRdadh_duUYMAq1B5mcQ5VptGbW7qjA4Vk8lnnAI1ZVhpzM3LPB_e3YROFo9EqT7t5I5AbMt8RTsjVOp5MedRz7Kq9vP2HQPnl7uZDGmsZdLHnXUIpbzQqBIVk5T0j-S56HI1ozCBznCOhLXkTXAjJKlXZdImowKqe-U7hZ6jiuE_XKIhrm7NjYLzXsXQXMjapj-tqU3gqMKmKPa0E2cRr11VO_6546XgAJWHVA4wIGTp9DDW6Zi7RUv6PMbzfngP10REIopW7tPpUobFtaQbERgZMqoWPH8KizqItLiffNSCLKcnwYMBUhkzhoSxvxdwrmmkn_mr3tJKRTZK-3vHYmngNIrZCGwLZba4Y5Y8dk7GEHHOx4kRV3XibKuHUJPcIjDvGePFBZb-F-PbVkK4u3CJvvMIUXx8Ei8BAdmEKcoTfOQtGJcw2pCqev1dUiM1IOCTYorySOyHjTtjuTolRvGgV95rFY1lysFdxdQbuQhVyfikymrsJvgS8NWI3Dj4TzwW9UMpJCzXEzpZK8kbjw7UclOyHGcWgRpl21fg_VtIeyEEgK230qfCiTq7ZWd5Q3vPAh_aJPEIxmiL_b2JrerRFKrPRmrDnwGXexuRgHmXoi7bGGNTlNHd5L9LbqVYRn2LDuuM1VC9DSqLNBv1FJGn_sIQ3YsB8qU9rpg3uEaDkEQOsSLl-_7wsu5epF99b9mvt8FVWWxTRaBKYrvww_SKSRwtRo4a5tYuvhtsLTwUsBQdxrUne-7gwLFk1Rl63Od8P4-XMn7XuUYZ8MCI0XAbJfG8K5NCm5hFcp8EFOev9UGCcEfPCllazAXZWHTBuW_jOGN67Pky17Y_AXu5uI-dcj2I-0W1QUIx2TJDcFjsZaFw3lynGdKyimvx3GSPRCGVh-WUPvRg_LumqbjN2bkht_TPC_krg7GTJwO5BZS0kW889h0vGoBtE032FFJ3uFgPFRBF5LfcCklIOnABObOIo1NkLnptvVld2UtNSDfzJTkk6gYOGncCYQycIt5RdHzAB2GN-IiWWwPMZb65ehiJOjlRoyeIhveTKSJuGhnyRSHweTUDK8gfYhOFOJe4U0O1NN5CKUnl8JVJAPExkqhtsQd2hRTy5H7MUt6xKcCb1Uh9YSaCYTT-8ZFyKUhgs3gmQ3zf1l9-pIrpfjRoATxAb82_uwoXMyOLedV_vhFbqtFZjhKc3D3JbiHcUWrRm9YucEmdRb8SzyCI57jHVTlNu5M_jtR9KQdpI1LA6TU0u22hdWOtVm_gGa1aV7ADZoZLWuFbC9GSNtJhvBkXs3obNzPqCS__fJR2eBH_BpKSYh2J1rWBTQh-hOeiJNsVN2c6cJiggOElTIScRWh_WNEobCBGLpMx9C4buoOw4uvt0NCx1bJVMFeOnsMEfIxvaDhE_TCnluaVAROLZzRwxwvZRrOZZpxSEoo-uetN-BcAZGwuT4j-oTLPo0doB9BsQqABRSnQ6NPQ-BMctQE0aimgYZEu1IZaYDb_9Cqp7ujYWpFRi2pe2py93txSaRhbs55WJYkMMDtjXJL26Od5a46U_YuB0aFAaqluy0A85ir8Dq_9KWq3HrI1bwggpPjqJnORFitt3v-yr5pXDvXGaX5oDz0pfUH3KAlBLsjRvW_HCJM4goC3qgtArv_lhisp6jYXjbEKT3WN8SY86aWQJzdYKyuFUefKPCkuuI2dp1ucqST0L8SX2L3iyFBovVz4cL2lEVQ0i7fXYGK_gWcsSL6SI4QFdIYY5yh7avv0-cXDF8KMWAACHBwhmy9HXsPVIXkjDMj1OZxHjzBpwCQ2Bg8LllSzkeuGYDeM1FxhRdclgpCX5S1feARFUTZgGxVdx11LyEwmmQO5fnzu8S_i4_NDngpqqzvX704Q2ekKzJZc9wkrQ2gcvAe_tHY5Oum0zx4KG_TLpbr7WPr1PaF3LgMRs26WiEtzktda-ch3aJL5E8Y0B0q7YJP-YMAy1cuCVfpwj_cEK_TQiTLoQTgpCSqwiN4aZarciD3GUpAmmomMNRALg_pMkDWC7ZUd96goO2_84QpL8Gw02xkpQukqYA1lOwY_aYyhJ50ycXBjYQFazx-cXEC1nS_YkgbtCJS5tiZerecJT62V0HpWVZ7RCYGf4XE8X4FJC9GSGfCitjEn-JNZrcLUyJPjD91uTtZ7Yucrvr4rRLeoVLKCxqFYEt1UvjxhQXCf4ie51ncyf_mGxR_n8lVlOijiHqlgXZbzQR5cVX2UR77o1HlvZg7TZcin3F0abHNwlNp9HG6AVtROi4woh9DVqfIHvqhuIhkE9CREDc_gkV5E60F5rsUVudgpKnzqGrm_QhvK_1fmyTSMnvyqmCiBttN10nPvQe3rUy0X-nUTcQkEN2zfi4S2m53dboMiup30-1wQTdeiIEEQvd3CG2v11D64vD3V1zupx4W2_jBLzaJzDDvuacesH9Z646hcW4G7SMeYWJnEHfE5n23j61kbN842v7UV71aRtFBk6FFtkJckYREaVH8IK85A398vT-cT1sudspPaKFQz1SUl5PABsd1ppKhoWqlBgQbjJxub_vw0L8y4r_S7vBEow-wzlmy0DomIObzyzMA0Upz0DAGvjFHbKnxzPnvbpKVDEwm9uf_DkUjE7JQHNl8UW6t393LOgWdga9ToHGlCmtvjXfo0-DGAmk1E9A5hQ6nOjs3f9YpE9Zqe1WqCrFy-b3DcRKky1lrIhiGrorYxPZpaWt8GNCForqSCoo4R3G5Ky-JVBhjcfQJ_iy7Ihw_KNA7Ut8lSY3rnBR5xKKyCT0SoTI2szVIhUNQ9TlEPTAkgPTGTmUxW_dvVhACzF4IzEK-cFJKyuf_Wp_jPbvXujw6XFmSZ1OEwi4HxcmLsMljaF3aEvFcobIacbjd_2QFWw4MyS8Xxki975w7EGa7Trb_xfSUwpUafgoTkYK2emaVUNvyOOALTvfoKxHPXXPiPVGzhcL4IzEFD_wwlYdRWKCOsmjbA8bjfohFjk0T_19G3fxtl6VBZ9ldFGLxTkDzp7jGjfnBkDn9d33SqXEettOatPiPPSZIk6vuH7ST_Ppwp9z3reIxVH7aXITFYVaIq0b7Lx_R1rFs_utDiakOJ4DDTlYAZqbvdqrfEQgRspT7umKhjwUM69td8XhNn2RUq-nrp29gnyEkyGY0fqhCopMDhdqzHXTd9lLmpXGZLDykSpVRvorU38tg-5hOntZIt5XxNNalR3epgh5wHAoFngpi1XW4xbbtPzrl0FPYwlQAUSYuVywCpRaVyoNqO_KxergBQW7VvK34lOErjUYjb8NnaCl2dWMQ9cRiINVPiqF4LZvrBBzFVFK1fClie7ujixG7uanhbEEWgr1VNbbhpccqQK1XCKYwm1Ghv7NVT2E6ye1za_A2K7z7ihassEJUneQIMnVcD_ZgsI3wwtPFrVVqjQACws69v4tLWech6ppYE_V5L05VbwN7t2xYRA1Jws-mg7y8a4oSBYwsSRNW7yDQmtWm0KE0YtFe0XKqbg0zPFB0oPH4bAmmAbpVTQeyFyMJ2klZE9icqn7zXVne41e8FeGaBWnt1uebsyED2y8EAZmYZpWrEdf5q5rc7oMeBdzp3kDl8xdNJ44SAXZZuUMpKYU_oYl6a5_O82DFRYAQUw_H0LJ_9YiV7p1wWWcrknfd4weYoFB5MNjxF-wJo9UbEN3DI7PNbpCbCzyDu3OIvUdwk9_810a52_OV1uQgDYvanfLYfWViqGUKg6ICGArVUgg5qKoKrbVKk92ebsiT4HnjK4qWKx4nyIuVGPGO2m86aSi5CntjQq5kjjvLjRd8qAIfTd5snYFmHMQgxeuu636HkwkBNgRWwfKp2fQ5MH0y1x-Y_mborsHjYfoxRwC6nG-EqG2DZlGk_tLaRJm3aefOI6E9M9aorSG0Jy9eagetNios1fnt2wJ-nrXVGMmqP9aa5WkneA6evkf9BJ2wpzuwRyEBYdhM3eFoNrlyNfOq2HHOIJMgs08_yMZfW78_yodF6e_xw-4eVyEZ1sV28_jqCVOeQb5QX4q4e5Q3ITw0VbF6m1FyztGpZgBG-b873vyRPZzZmJSDaBlfTAq1MClNFYlPoO3W1RRb-9gsfLgZ749S8Z1GMZZUbs_zFnMvx3qEODVX_r9AgFPG9bNixWJC3BSNLwNcsS9LJoK8LTe_43BG27AX-wVR6G6P4o7KukLCAKOVV2kYYZ0Ngu99FJH0nV9gTk9KWDmZNeMtCaojrayGbm9E4XbrweagQO36opYKlsNZ0Tf0sZ9op3Mq5_6EXL4oD1RFlkhzoePPmcLLWiP0nXc7CQpTac5vaWXHKhMjOoi6vJ_XVHkAU36N7isDgaDPxmxYJqGnMQWHMbdMmSbC1xmWJ1cMsfDItucdR7ceqpTzHJRy1J60qqRb6mJ3dyZQuL2gd8hHKIjw7SNWQUU1mriv1NyVaIJJ3EB6TcLXyu7MCc0xipK1ZQIumLXYKUl1Vebo9Ld-_BDpY0iQqxSY9135824qmrWMd-PP6Coh7DhRr2OXbJ6MVn8tcUsBwa7GzlCB09mbEflzlHcRk8Yo18KYXsjtSy2w4Z7VBYGqfJqob4Ah914dXaiMoL9_HjkLW566fiUNlL97rlHVLycGEVqc0dPdrxODoguoXpRHZ9HiGo16uFnT9DAUgbOZd5a9aBwV5MZE10XmYcir1bNgg2crnxh4cM0ob0WQxQPXkpP4B5nmly2wprCAy9dyrLRtOXGYzuQqO54mY1UEjyZc4zgbpMGeojnyVWUW7KWfe9x5DNAAuvGoKLtdUu60qMTEADLptnpwu2yhIF6MDGvGSWEsOJ43v95VTq-Bhz1D9tDd9o_eyRa69v66XBILgV6Snf09uF8t8NZLp3OnGtKEuFjZluhHxBgAipKHSfkMrFXIqa8JWVYsxNYDgWuy3D9YDtZD2JikavId7kC_fmg6rPGAHxuYX1lDwbg79iyaHVqpCubeEjyKp4pLzUvZTeLTEBANZ9U_MdSZBEebAbb3H5xO7CuZQjJF8q1uNf38f2j-0idg6Oovn8R4z71Wq83RU0HmJMxHusfatKFAMWmqvFC1IkfX8jzlLizMlsZLlMyftvSrkqQQCnKCQ14_RUmWCGlNG4tTNMFHyK1HlBh4X7aHlHZrdXcbvpgWdaypeHhEF-kT3ylECSppvnhhG3zeC1qCU8eUkwlOLWmKLq16IvvXB8nmMi_tEF4PTijp1ds00zVtRGKaYLOhgA47g9j7q5W7MKgt61VGx7swjSCX31O5N41yRAxuoR4o2AfG8erFAKcnhsTYsssK26Obm6NjyPRBZDLkK54EF3wHoQDWfUZTJpyf-YBBiVRqBTQFizI8yaHwgYr-r3EW_Z-1zvXXK5eSmPDzVS2pN9ztiKLvySQQmJkyXif83XqtATaPFAn1r8GFF73KIK4Qt1H1PCDZQJYjOFVNeEElyKoouimi6FjovsN9tManN8R-Zn6_mlX6QkCaE96OZruT5ozlvqats-VBwkEhbNUqKiCUokvXGGCWFu9Uvu2_K1BmsOmvnGa6ejGW0UF-8zJ1lYmV4YG0KxhxIM1_GYeQlmDp4vTY2TH69Q5ejqPVAyF2Ub5-WsCQ-sM7L2JTtoelK3LpODpruMdX7vPXbw1mwhojeO6T1ApgOSDJAdLyyAbiG8Epc7UaT2-odYkoCJ4QUI3TAv6eeKATPZsuxqNeiBpKKOJwHCWVfnIOpuEy0QmP8-hwYmc4daFtQkGtoV83_U4DD857xx1va81S7TKM6cmwqtzZ3yIG7hGNe_LFwrPaSqGIqZ3iKH_CMhMaxKIl08fYEf92LeH990XAigNG6z7QeHlcoMuh4oK86FhWLXF-KlRm1GhwXRY9MHMrIbzGNN1uiQ47XzwjaRC2OChS0eygSvHeulQxhLKpGYOfcUErO3PknwB0nkUS2gkA8RLaBcVUxMxoICdekJ8YzzYsvujQSLR8C57XYGYsXRiKD3q8l9IFWPMeBw9p6tI2L7CubiZVVQqpi2adeLCD0ANpfOqIbpzEqw0yVk3ZeXeDRuTyX4RPgZ111UqicovkOU_79TtWlipgTWdlX7LEEDD8KmNwwdEaOk9UrJnO5AWFge-9-dgab2hICr885Q5XDkbCA1I9BTZwKalrJfzR8X_PP8gN9_wTmuCpYj0UWxX2pwx9xvNobKoGown0IP12ehWwJGOyNe627pAy8o-KJqw0p_hLNCQMyOc9i5ZURwzGD8PP--v3RzOsP57SA7deN-lHKq1Jl7_OMNrAloy2dKLJZ1RE4Xqk_GEj9C7KGKcWl-CunyL4NRx5KCo5wwL4sjdtGUC3Hq4Pi4jB6PIuc2xgCbB8nYs-ZeB9qGXSfLn_PQW550uEmgbOt7yLsUONQG6byzM95Cwdlxw-m78fO_CQQdm_5paoKc9hflyQRgAm803nzAEAojQdF0UISiKeWkkkDqFUsmQv_aWefobeQqWg5xxVmLyuiPvCDYg_aOL2bBgr9TAzd6rahSBcupIGJhjpRNsM3Mz01o_Pmz7Dl2eCwwA3DBZIQTnnA4qgekHUxtfItvolpSE9TfgIjkZIqFWLgGWoFIQPxpWmstb4u10jPIT-TLzDaNRa-7l9xfoZQYuHPPqVP4VcbwcvuHYdkTI1cpR53JHbprYPLr0YGTNC-7ObCfXV0aSvMk2By_qPz6AuErIhYdeL-eIN2Tnz6VZ5A1oj4V8pB5sfLtkw2gtik2Oo3JY2IzKtjrfo4K9FfcPZ1clNVCGnahUYs7JqS-d1aVTM-ms6TV-lD6Q8lJz-RMkZAd_CSf5-JhRyhGqA6M8D-Np139RvSapNAmorQVrn_9UPgD0dIRf5C_oxwGWmxKG0awCE3Y6QVB8z4camkWMvq-5kQcuXGV2_ep0vycv423NRh-chMRR2Ni1Sxma34Sgsgx_Bbq-2x87ot36qWJ2jRGvtivHqWPZI5o69Io5R-PEh8NBPnvRq9bFxqRUjfO5G1HsB4Urdj6U-E1r-MsRNKuk2V--kgBKyW-50BkoalXnsUzEbL5UMjL9Dr_G-u5Exq6O1aJi75o4HbBVhhVSL792ciSma-M4TJo6M1Pqe_45E1IXVpcmSEGEB3G_L9HsnuEpsxOa8yqIYNURYQOof_sJzG9bOYpnAYtUaHcaFIgxAzfXOZREaPH4rNMLnX_FVpiL1clmzyA2IdN7URZxp1onwrJvRNz86sfC14z9rtDDp7J9PPbkqxDjB6-OHRyM3EYA8VzRoFn4S9O8LMnFMK8VhenGWyNARbJdWCE4t0txgOJmYaIfReIZXigAhKGSEz-6jTBNLJ-KDTJUJWFM0hS5BPw56dXSt-TcwXkpJGDHgLkFNs6i7bozCn7M1mKKZciC0zY8iqyx0FYkTyyfhHLMUsJT_7W87n6quzdMUT0S7XOzzFjSCV0zwaQI-oxnzLICnVhh4lHMUiN8uWgE6OHDYgaFxCrI-reJBeGmm0uydh4yAJFwtfyouz_4z0C_T281lT79sP46T-9pHBxHYR8ns-qhArvk4N8I0V5huMJcAgx6fF-uAFhg7nq-uvYP-npVpvxtFYXJ4awpuC3XJWGidsbaN6-dtY2GvEMU9V42gN9XR0HEHjn99jHHtxIyj07HlDq7M78on7Wqp6zZPX0ktNyq2uctmi2F67NzG072tpjxPyJ33iGa655hxlXPQAMi6nsyizbscOchpw7kg7lZd7Ey44B4f2tsMe9g1G4amKx7fB4L25zo4qtMnLNCeXy5iMSJX5yc7B_-vn67tNAva9QVm-AHys9JIabG8lmgZhqGPS_D93C9nb5szg0ZhZryiqmZdjBWaW68s2pkY7Y22KUfVdzjZdtW_E6rCOKSBx1QvUcu-Ty7m50JuOQ1Jgcb1Q7jvjeTYQD6hNX2KMOQ3XqxgvYX8xukfTujW5MUuSQrZxdmkX7fdmNSdIeBYglVR8pX8iZJdXOxzXPfD0XskkVRRN7MtEZyxTV8LgpAJxbbSF7sPfquLDR7IvfHFDW_TGS_7lSDUSjfK0W99TKbj7pYAwdJpmrS_olt0JIJXJ8P_UqPNY0y8EnUsv3bzFw7IzqjdHljqamFxRMKMW1wXMKaPbaMeeSnEnxxK2PwbYzBBSt1lRNvYqDn7Ows0z5sxCoOA2nPlKDIxao9o5SW2mtxYv_xfGtk-HmNtJBxj91hPzZw8dirso8txN0ckT425JHT8Kx0nbBnTuOHsn5bCAALk3MvbSeJT6RkRUjOhZwDVzoBbK-eNFUhoaVKIncyQHDj_A5pmRkivO4JAKBc4W1F7W8tucnKtditIrPn2HFoY6Mccz9-SNnON8firt02HgtTG8atNWqdKQ2VIeXOeLi1GWVzj_UPQs0So4B6AlcDe2nig0u_GyJyWglfVX8s7ZVHlNiW9PzlQRWyU0CfBOyr8TD_VOarEnFASJ0zg2XEeWivCIyeNE4spu-sc9uU7-YtAcI0kzRsKfdEVN5QopuMp-hQ0dHjhAjjPmMJ94An4QsVViTvXQ29oCBiR5IftT1v5EtEU35upcreOmeKcRo517n-SbzNYdFIMKhS1TIdQ5NeSws3PkF4D-LfKBX2ebZARqF7Bksp4pY7mwP37KxQu1lYY5-ryP8fKo7R8Vd0YXNzo8JeznVzsFDI2j4bftp8vbAottd2iei9p4MGCetp5zv_Jnq4VnU1DDE6OCV6xwA0uvaFD5MJWTX7VyiRPfE6BnoU9nk8qyE2_olqKziRsmMTjUehjKHQ7lVZgU-jNc87xJYnFTt6KUbib6sVW750h1CfwMOeGqEeT82q6DFGeQsjl5DIKL1e3ZuCUOAjKX8CMXiYm7dlynBxKJPHm9TjP7xYCQgRWCIeeR2NLWAmUWtBgnRYoypQfkcegYbOEiRJpFznQ0RyzhnfR4yUsQWaR5VUAsC8F6bWGmIHZcqBufsmXppeGOTCld9PJ_LwmL8hIS5_BLtQbESvRJcmrF5SnGQQ8rHiFCiBhEEDh67_Hf-_Ib7atoT6yfV8HX2ft4sUGPCIwpCcK5M-JC-43yoBxcw-Rjy3PUo9wm3CYFb4zuaiY90BQUnK_Dq9guLxRqtTGX_7j7g6WzjNmifITa9h46wU0tUMQwQGl0d5IkmEQnWwOL9XR283-y3Bww20CUvYtngvPXnnk97L0kTrKjhjT4ZQSqBtjdMx2KBF0vmY2W8KEe2jgsf64KczsoeyVsrZ-8jkldMWf5QJ7MZI4t_qqO8MceWpJQk14hadD_Qk0C4DXz0El9YXuZkapI9SRrroWmFzRVr1G7ORR3P50W2yTG52XEsEvq08vAs8datlur4sLqb6s2DNozDjGB7V7pdl9_mNAjHml7_DJPP3YqNFtl4VtveFp8PevyNn77rWR9UThxEqbhgJYZF9ym-ZuCcDpZ8bujQvNfJnauX1ZDfpfvx5SXqjkBkRZOFIjWpyx7PnOSzW5sQ_PYMWhX_TxWjw22gVplPWAyRfepVYb8ju3Ih3W5trmkU2I7JGrTQ3r0vVRS5YoDgzq0MAY8PpoTlWFsZOgSx-JeoaqUeQ6x4zX6Bf8ker3A5JroE5w-fxh5euvlvCBtVs_geJoWYVgMhwjnMLptaBX1RbUA5XK5tRnG-XLoSRfpXaN-IgoSxh3TfEq23mppFicrlH4lESIdDmZvddzZsjitQ9uf2EL-1uf4JcQDRRLXQmMH-wBEiWpldY8Nsnstdctgi3Go33SL4Dty9xgopgk2iZwI2bz1z00mTszJ8iqznC3we-0PsarVaFhnaMQX-2WYoVn2-sevYAgGXBkgCEAIkYDH97EOWcWdWRKDJExpl1gAt-nrkQYmMDmfRDShdMAuNT5603VBlIIMxpXwU2_8EGUDNMFyD06khj0hok2TGhxxXVx1DNySbMqzaXivi_nhJ5gr22c6ZivOTeaKZF9qMHWB7zc7DFvfEeNmRFAlj2-UYUldU7NfAf7chbWXz9QzffptIcOmOc5EuWUd6oYi9xMb2UuumqfkpFrsGNi-thzLZAo0U0g8FRjvyxdLstClGiLXlwpyf_RrSaycGEQjwskXQM79ewkffN1JuTjHm34ycjqQeeQucDu8urxf1HQ6dL5rZ6tyl2jOOLbf1gWkVoIvwGXBT0SK_uzFh_AuGJPr25_C6yY_GMJ4tXxSnWbFY_orkkj8dy0KoUYcY7XjH5j_d6PzD0kVem0ZxINrZWtEzFzjBooIYjEJX2AS6P-bQZthShD5JceByEZP39n1zCDiXzcbl3lAyi9lkhB3Huf1idnmPLpjNFZUeqZJcsudAtVS8JANqJrsGLo6oaKNI2F8IFnlZeDgWvIoFQKUYIIjZPhjItB16U_NrisWiPYR2lIVnAG8Ko_YyiWpJr-bGwlxPm_yrS7pfExIaW_4Ym6nRk5lxtcDc29-JslTMGmG_SFI4w4AkipZO_biwUahXuVrK8SMZushftX2ItL7lX2pa5pNd_kE3jN6Fp7VA45Yp9xZJ7gjG72aam1FH-ZY7aNUv-t_P3OqhuGHCJAg0OsmFlzXP-6PB4nf5ipEX_8Rfp8qmMgKUMYtgxb_iXoSB4X4rWsiFvbNiEuX9z_wOoz227PJlwXIhgXYUiHHaqv48E3UorGOREXnrPWh3UbhyLrRxXpcVHme96SnlnsyyKKixl52eR8gg9pQe04XDjDoKT3nUP3LhXo_SC6zJjtgWj-dzqsAXtc_N-Rw0fRaE7nplmFdyYGi1PwRjTDXB3w3XVokFx57mAwTOeY5Eo4J8--WmRLj6F7_AsnlrGOrUjWwt09wNcDJIDDQHcs9nw5MXQHvnky0QUxTe_TZNcCbLA9V6-nr2q_0nQ-MEYp0xMk7SpoGkOJ8dEDlML2IJGpihxj88OE8TG2uP9n6-30mbI7Xk4n4uIxQk1EJfa6nnXYs2qRq7ESJkFowzfTdBFbUVIvR_GxbniE_mn4tYC4eCDYgfk0Rlyh7gQxBe5v8fO79bX2VbMU4ZZJ9mg8Pu-yqdEFwLnskqDfSGMJ35bzPonz3gqSWi3L4yikWjwOp_vzKy-FpRRKNIQyGtLvkqv19slWRtwFXlA_Myj0LeV6r7POtxejCGVn_lYEBaL4-wtXN-3QFKOtOCx7JUXb1tBm8hLw-uQ8hNeSPbMOGnNHMV6rrBe-K666GN2eaIWFSakbx93LHlm1WByRM9-jf40TdTM3ETCAX1GA7DUFnrwiv4XH-MJDg6xCnog7VUBNZesEnIgfLelYCrvCpqDdCH1dtvdjY-8MoTj4TUPFyeg25H_AA0u6BtK-T-i1lsA-gJ1fiycur7Ohvi8q3_AelisFMvAwHI3s2Q3eiPJzetkL4JJ01Sfp7I6GcZQ32BN6ACV57u5fXijCwQ6DekNnVJqOq6XjPpiAWvlaB7d7qbYzCWN0oCmkmK-m_m4ZtwrNQpCpUYCLdnGBzKdHsUTr7d7H4-amCQ1cnBf2At8tsflhfs8qebxs-XIDhYjinoXdfV7AikKuq05pkBzSZDSI6rJoU1oWhGC2DmKXb58ZlIn_HsN2idx9JnTlVAOjIyzyOz-Cp__x1bwlfLivJxKP7Sk7vSRorvirgKxzYpH4rXibF3w6jhQOv0rKBUEtDNijfMigo_5MMWhN1EKULSSdY0ybjR7rJTIlD8Szys7lhSA1DjjRDuUkixviPJxBjlf61hUBreizWrt7Trh3s-XVbrNqDg12CJshNSTlcgHnEjI-Iz-A_kNTX68PUbViASa3htUIQ-dNrJ6qONxm1OxeHJ_j1H_duNfYaAGB7hSJPtbl4Er1uMywoXc-SNFmxEC3kA63HNY7h_Xjzbx1f2BBar94whyeuLM2fN24Xm02E5QRrlkMTGhep69E_zrIOqTCSLFx-2XWvBPgUo_farZGzabNyDxlvWvffxitREfFED_s0L8dtrlD5rtA8wKv5cPxUbRxz75C4BpYb5Q-ICSOIJes4MHKwidZ8r32Duqm1CfxWfpkOoyWvOCJRi8A6RooRysyZ5GTwlG5Hg0FGZpxR4xnZBZ6GfYCzTsIHe8LPp8EJ8PMobLFszX0vvbxhF-mtE2d0SZ5JW7EiMyrfkkunriCq7SE895KNqRBprN_3Ho4vzcx05y-O66h43V0jy05p4fYrk1AO1ZwTS0djkj66pWFcMTlwky7EW6YlpUpcshixQBAMnJB6C7Nea_z_yx408JHzhffzG1Pw8iPeIBSI2018JwQzK-Js9duH3FIaw32VU9OyWSK4Q0kHe0qzrBNPC_q0BKPcbY71X8psK_8rryImdFkaxADLxOtut87IVj4Twcw3dBt3MgFTUp49Kzw6nOd6JogiUsfu1PA52OjMml2DZ0KMzPiNsaIiosgSYwPBrR4Fjz0_v_qiRWQK_lWY-uCiAOFZ5yL7dzool42y03Rbo-LmUOZVS4-TdyCibuHfuhFgWwjLjcsbEK-z6NiMKSYvpxs06WurY24tkToeVHwD1S1Vd4VjNHb0Pr659xkusRUmRPDdtgZQC21OuEy8bdjpQkuslr9TqimqEX4XsjoHbEk1ew8gjYmUxR3o4m2OgF7QIY-tp6oiUwpjilYnWjHc7grJlQMCfwWJ-t1Eh8JAHHc93HMn6rRIecnxzHmkPXh624rolmTPorK6GiTdZrr2FSyXoPPmhFcRcTQbcS4X90zIaIpLDuzdK5CuiYaIrnXAnDRcwlFl70N5Lk-AP6iQD_0EHgOARydgruvIum2oSydndCYQQpLEsisn9_KZCKGmmhhJkL5cjG3wjOAIWR5jP7naQp4UEXdEWlmh1b5mdHBNNhzQ7OBmphJ1Otd8iO53M-Ygcqa0qt5XSEx9WX604VM9v1_ahbVTleXabP3uZJGUTqiTkepVF_vtvW6_x7kZmx3Yurepgb3i9MYJSWy1lFwuwPZZtjW435o3isAsWcPQHdk4HMv1NuU2jTMcPgS2qqRHi1fTksB2E4atR8KF1hYkmAtX0nmm1yT3fulRYmhsRBcQIVmNpLVcqTz5lfDrejHQZwxhM5YO-BsaBCqJxgcSGiASopoJqfyVqlK5VhRSnW36Fubl_4qIz8QLZGnXfWg4IpgtMjLDRLPexooa2mHWGyNpnePIdH0kNfY1ryXZ6tFlrDutCuKEvZVa9YGC6WOqRVL4Wd1KUyl5Thgp-m0ge2LWwUP3Kjgy3UbJvcR0ATl7H7WAtHoRjUaFNZJKJkfRebfMw7GtndG9nr9umJDa-SVxPtgkcqUxZdt62n7Tz6QPPusBBf60J2Fl_KzuMOD40fDuOLU2ZGXfoOHMQwYyTcaY9t8f7Nt3fKiW2tq9zQEzbmdS98HvjuiGXCQn1uB3dRHY3Xf1BIQpXp79hEHD2HupiuXaW0uOYyX-a8zNCJ6eobf4bBdAhz1JLJ5lan1ggQDOBo1OK2HQV8VSCmV3s6KYLn8vl_zz5CvF8o3nI7PkyrHlYAFvdxw4AZKJF81tIiZVmNy7i4wzjugY1GdHTrWampVuiYovjV4QAXiMnQxDHZLJYtYZGhXaCnrDZOCo1xERRrcUWibawnnCS5SJOdJDCt_ULtdEnGr4n8hMhyL3EG2tezQgAXmIXMcMbGi9iQXWiyfOjoVC1XFCSOeyM0PsLcftgQ1QhN37ZMRGrG5LgomSLw5yQE6hoYgfQ0KvuZcR6d07S8Pw9IuiHznrRSGXJ_tcUflGvkHV-OlQDZB4Fv3LwxXGYvIhBRmF5C5V-lpAAFkGFg17osliFwHD6fcy07obYbVGmYJE3demRcdKiCH-II2zr6gwGxZOcC3ZCuqQJuKuCAO9tOE-MRXFbgHjPydh3ldt8yNEvc5IkkoJxVylEdO0B_vmLtMqF7GDetLGKHT8jz4EOIYheGvzUicetIY9N0JH4-o2RdRVj4_c1khkj5bTyNGDGgVcRAl-5aTRX5Etnj0lLTzWNng0lqLRkeLnsn2YtRj0oA9lhVBNCwoT8d05WRPkOMryF4LvhKZ3o9EbtMOYnesHN5jSLGj28Nocv8WnxIn5B5OOc4rCzWPhDxPo9EpTrXCL6Hl5ts22uMPQP5wx2q9-d47ZNdeEO9PsHRBtST_xC_emH15a7CWJBuhSey_7Ep_QIhw96eANxDrBcV0BXpMSLfyd3Ucy-aLbngk50W8dAj7f4XsSAaTOX_amW87edCBBT5rb3bBa22cwrp0azv8FPGDdMw1n5v55rzFJa4iXJYImK76vKyxemcWx-X2kPjcd8Pob3C9HA_Ms4obZeu9SUq7wCUY1noTTypHhEcdklm3IBfUtnc2NHlTFzDZFR2IMXvI80jxtVaVMOBW2fNmvmyow5X-WS-ZGIM5y2okxYuSA24TIPtaA0EE6UicaGBK4I-ijV-994HtuqewrQkPGUB1U4mISGL9Uk-tCIss_driH8auTqshPW2XvpJPVEusIVz97t7KXCoBymKtV8Ymvldx5SRjvRkuFw9uvtCYvU0on2bNv2gJd8OZa6mS5ceQB0zh04B29GVWUhzcB5pazCuoC1jBHHefmMo1zDmYMpeMED6TsOcU8F1H3QH2THvllvMwwMtsIM2HHn18wVVFj3rwqY1dqDHTDgBC-Pg35N8ou2gjtsosCeD-0MpnsM_fbJ69Udh4Gp5nfDrZsrY2F2-y8fTHQA8wJ_xsN6_RxCMV4-om_NWYCTzx5eOT-U3rx2TKlDD1Z2aPs10A9WRGJf2gvsVmEzn7HKa4BMMCIXCqOdec5GDnjm8UCQRP4Bn67JY15vo2Kldh7rl72vADhqxBP9YKOGoe1F9DZV1zH71SIuI2UiUSj7jgjBZ9DIC3aUodchJxAFCOAJLyDdDCyCxC0is1Ri_evjwtwIYDsJCJl-wAVJbQT7lfo_IyEC4x47LQSp1TsXMOqkFtXaEyozlupNMZI_3KoJH3NZBhXOmQatvtXUvFWaaT4R8MUi3qNWNdPP_-ExQk5nO5oxmxDCaQ3T5WBBRbUWwVDRYGmtHhs5qszcq_rkN5p1_gum3J31-lsqsiL0Ptu2Z4SNEhEkmaMzOynClyg_ujCyZUtw6OLgS4QuLxA7RUTBDPIuojJECWg4E89cVXR_bxmUqI0fevI9uksA7Hu1r-uC4FF7sAeDG3WAL8qRQAhBQJDvV1saeOtY9OK-mvkX1wlHH1XNsdrTgyE0KSeTBClQPVhXalh3Jlt0dtbf0FIYgoA6o23rwBrzvOwl_xxSaFlAqB-XwDfhFRWJk1IiDnMRG7VA4bFpmqKdCwrdsUTwxdOD_pRJKomXZ2214MQrTsVhbEYjBohzR-2oWgXFrV7vQyudDzimnUy07ddC6bjXxrj3_fYwPUtqjDLf6QvhltXQ8FfIyz25Zbz8ID7grtKj0OGi2y4ChSXTBeeiqc73mxA5uaDZaUj_TKlgcxJuA437vVLRiLeh1IQ_nvua0YwSBWoNDkzUwyy1wKeWteCRiPS0vcpuHFR3A2jD2fjBuawkZF7MmRK4Q5eO39gbGnbiDoyWZnxfsiYVqNX38suakrVXFznZkpDrS_qVpPnPA96HW33iZYn_R1jKDcnGevQRpWTifNN9G8aHImRkjb-AO_PnTx1dng5__tvkPT0oJhmtUjeKRHO_zJXAlx3foR7Hmr6B_qj4kWaLRzNP3gN-YIJVKM6HnDw-yJqx6j97ayOvdQjfJcX5YhZ_6KiIf-SftCc8P7m_xQDRMgN-T82wvkH34A-TgyY75KRepmIRFcEbgNPMEufKdt5wXRr8r0g8VKDup8vwtJIJFupgoayeoN5HsC5O3xoIfU58ooYu0s3jKWY9rLqe8R0hTCYCHuDUES2g5o-QPJp8UsD4Zo726Ycjlx2ve3chik4gMI252DXg-le1-h11c_h7hq0mVO0H-KBo7eFL76TgQg9iHU7cj4U5ht6QZJ0pDQ8lpZVZlXQBGewaLfmvcpFFQJ50c_jHzeSldrtmRemGSk0l0rKbb6a-e7Sz5vsFdhaQepyHDLTXIrMi1HqktHBLN1iW4ktObsnvibGoXAQqGxioMToOklM_ZGqaoH7_65OGOVyy8rTBwa-EzLg14qoqy1jwxGdw-GAzzR3v1bL_XnkU6V9Bb06Ro6ciGnUDxOiuW0QdvZuoyAA4I3ZYkxsOUw-yjuYfxpnrK9cYkJhLeP5ZDCWXkuFwOGzNDCuFuS85BWf5hy4N8YdwKNsWDI9ghcoYntvOirHXpHJ12RHTFdIC5YbJDfK0mj6ATrnKyWjGRaAxnofzFXoctBchtDYCvyQ_97yoOlKDw2hdPakrufWajcBRRNwcaBVOk-b2wcStXB-qJFAZiXUgGuL17HG_hmXHofjRAhT7CdNKjxgNpLwdelejXcgpwkDtEJ0_EZ61CjTMquF15L_I6JhJwmyak3FzCoYrcpCOjrAGqlZtUN9LEd8k96PVBmt8KM-ue2Y1rzA-bZKZyVwugb9I4Z8mi8GluMLcsME6eltWHoqnn4QudllLCbV2igivKy_xHUd2jToU6RUvIPjZvqSW4pl137pDmkCLptQgeVoA6fTUH7yW3zoQIQztSsj2OlFxwjD7Heikox2LeVqz2wXGf2fY1MkBbAiyPqB6gbV-ljp665Mn0kEy1OpgW33ZNG36T1hHDpeaLvpHbgjX1ZO1CEz0LBMU5uBFMYLLOVZytM4coiLhlQJneQmK4EpPtrcaObNS01-dD9shEOXlpQdtkYAOl5U283O0q0ZQzpro6IGhcbIgGRrcnT_HeL8OvGTuiSJJ6b7eBLb0h1HKKbq3MpWbZdfv1RbS77X5ZyVAMfzY2xnTzlEILXxTOIUEFGR1P1S8FH2a90nq63YqAF0JP-FqHG_JU7OCnanPeAcknPmtObhaZabCrkxVpCcTQO-glVdWUih75mItume27wzQKbBO7TKjNHMr3944XAVhkW4eqb1MLI4u5nxUvwks0rScZ4X3b5C8Xj5z6X8j64_PsM3KGMBNWmZBDhJsruzu1mQpXyrj9qqhbbTA4qeeOF9zGJ730KVqdTnYD8pmyUOclf3LeKjrKTsc88Q156UEhpMe9sC4u6ijc1Z-1Jtdun9yjDnRdVmsKv48Tep0-BY1lxVS-76ZjtA9GP-w2bbLCquox7ZKXkeSuSvMLEaGElzhOMs7AEtWnVl2_d3V0nfDB9duVLWgYM-ipz2rn1_vEpgvWkNUUpUHxJ5gTqLjqKhrd6L8lPqxsUSWjVen8QhiZMvqPWf48gTjQpydgpd4cgrWMl1PligB3Bgv-LIJxUndaaFnUFHGP-5yYFq298fJc19b5zefq9S0pozQnviVDeyUtMjcRD-rUlxuCRw4nBoiggNgtknRzV-rsOi9yu9gqVzWLo8KqEXZ3t-3u2ngAU-8YSUT68ond71mB7MJ_4pBi0Xq1pT1wFA-uQWjUFtTuzx1y06m9JSkskMt5qHFqP4G3IRMm-agpuqNJOvLB2KC3wcrx7KUGt7Vi85V8XGZO43qbb4BWNArDljdFjMKYnEwYGjlRR8PJpDK_8xnOnBJsytkqxweDYlrejLI0s6ZnzC4-zvsc36u7dxkWe0KnWkAJmjRnsls1egc5VnLo-pkMQkP-gjIRqHZXo_78af1L63iIjQ49ybXZvdIie1oSsMp_waQTqsnKADIu2nsLNhZ3jaz4FNFLY1RZAHee9crz5tn1bjPozCHNWDL0oo6HJVB-O93Vm1jTx347DrmPnMsNPThDbnRRo7K2UbPkEJ5idKTqjteyJ_H0Ubw-OiUHaXXUqBOj0dgchIZw1N-0XriEaTGtC_5rECuJTpBVeMdjZfc49ePxXdLg1Z616olRFTefWuTvn8zE5MKQ31D570kfjRlPwOwxzNaMEqBpmfVHRwMu4pUKWOIUognx4PRsbimrFN7GcICCg__-gSCvPXr1XNJFlN_Nfr7L-dV4YlKKsbmuaxu_oGS_x6gqpXfyJ0C9-5sl--bKgZChF40SgpebpANOpFs2dmNYHpzCIcGL0OpVe6o2ellhMYtTYDRgBxouO3uY8AajrinBWIIPvASAb0WyKuymIXDClyQ6huynMFS9MrNR3rfc0qMVmXgvfuxY9wpVkqYdVcC-rzfUeswOJCDgBiGmxrW-gmz-Xpgfsvtvj2ZO8h4AccVPBmMrB_zROgrFLSjYRs-OMHh3ahqrq-u2-8JWPomEx_JyYHyvtTjemWqMlx5EVJlx8TQtb0zzex1lStU0tHVe1s8JWrRkn80l8_OD4j11mL6M9nr64n3VknvqRO3hCtvO5A9XQtEnh2zbOOeKKQ2_oY-mSDywZajyU6aTnUVKk19uJJOAT57SedgHr4-hjT5xVqdCdr0x7URorhKKdRyCgQqXDjaMt5fmgjeH6jFcYl9boxZPUK38U8hL1H-AzxrcbJ9qLCLuEfn1E6BgfrUuszC8VvW3qq94HCGTc8cMC5GM2Z0gcRAOl6Um6kTIhIMDL7Uf_AtldsgwiXMbbukcFJH3cCNK7QEMrQRlCHVpklDN9CrYwuj1XXuANhLZg73pubCyj1xq4yd5-eDFioJj5yDHKmd-Dj8eLMAT58stHsKZHgKc7uP5O1qn5HIlSVxKvnRdegrsKj21FSSp73IjpTVbCO3x_iyQka7GdiWs5YQUWSNThYQ7ao6HMDeGmZPLxjyuDcSoA6m3QyE88dk-9-BCpx9M9fADzDbO1UdnmhQe-DLlNkI8gs3uD8J6jVgEW3W-0_JlYHra2xOYqZW1wY7pP-mCeZva1ovvBIwIQAIVxjdFkPkPg_ewGJ8BDFNpVScZdJXpxROyvOvYvlY2C2ScuS4IJ7CQyQ-VM6IScSORFkm_USvkTYvCSbAGs7ucKwISdnPYhOlvD90O1SZ_3OELrTS3-HJ9BZ-U0Kp1aDzCYX_Tzt67x_DrVt6N7RJMVjmyw3g24lR1x17-AW9UYpnGgHR7X-J_NZBteajF4DRYZ3VQKUtuiSxwr4XVlMpjEILJeQm2fa6jBNOTSSFV3L9C0JdFoQSS5t5atuoXmroIpbLz5z4eyITBZlMA447Q66gBs5JaU2BQ25uSNKceksf0Q4WTcra2Fg_uVsXbt3FthXSNJ9ZXjHWtZk4NvorsfrC7KcQncKlaE6pczqWfEZmrRLJ3kkE3BD7EVRWPHIwBYScV-6K9rgEenNnt-P5zZBqdySJ-r-XTopffmRlJviOQ5d5jb-f6vjoHoGKemfzPllinreUblCdH06tBQ9bLSINOWy4OD1bRrYNnvb4aYUS2-0vpLaNatAvLy26gI6enJgO7WkVkHdfNIR9wBRnIuWBLu2YQq1F1X-r6T4u3qREvCTqCKbUtXumuvGnsE8-7L4ySZmxjaic-nvLvltNUWWG2v_K4Swmgq7AD2w947owWwzBizTtJYsL3rTbTkozDuczlcxW27HFUVRneB9wf5_rcab5XI2l8unBnt3eKZuVAJpmi47VMy2xYPiQckA_EU0Q5CtIpFTB5ZdSdabBzB73mmDxmsagpZxebZdmOTSaJSIoyJe_2XHJsgqkonczb82aIs-Ui6neoTuPMHhWEiid6ULyQx6J_RrjUNsw0bzSukewk1gy1lEi0FrYar-eD3koRRvhrXvTYkCQe0AYo1CoH1iU5vBDp8X_tSo8bHGk9Db4HFWvv5k2Tn1tK-gWnYeGyMoSZckpImME3a903IqK77XP3QFikDcU_SfEoRqTJkGl0sz6ZXtpMReBrwr0mQIGrQFrcKUF7HExPAnyXK2vJM8Lxpi0qqSP9-h50P2v2dhR5dVMThDLrxD3r03-oDND1P0qXeXHQ7hSgX5TAGGBBmd2ZgBL0AukvdQMn4VtOcAcQHAu0FO2AWpXrcxodUo8BJVOtJ7F_JMMX7vhWXVQDPcSnvfkFw8KOuIk5pA-Rtc7WZzeIRMWxzV0fwBMPWk8ZVqEtLKdz-SO84URh8s06LoUcBpnh57U2pr8v8cvHTWzRLDfAhFDbiHu3FcDPYqN_cG4PiYPXW85hPoc_ykBDn1lzU8jdMSHPFZyw9LhIHOrN-vlnjZgWHNzeIKyGNjCj4n4m850hG7CQhgfHGjyTqxCmveX3OBi5u4oXqeLpiJJvujpLrPtaD1DZp8sJjd3DN2Mx0Ty5VQJ7BykRvEmayojF-knCbAZpVC9tt_2MwdZE5QqJDWYX8-xLQpIwmtyIGpzPW_-nf-zi2rA3I0C3h9dgRHFowyQaNrQBYKysp9Dx04T9Wy4SqwaqV7rJKAp4lnRa2slSEY8qpeD4ZXT-PlI1BSYdFb9ez2UOMKfobP03dXHjmddTQL0IQSYRREdT-1wXESDNCF9vg7q0X08jB82JxWzKr17cqfoHrc_51XIS-bjzu1x_44sO6asiqWPfV_XhhWs2jInmGyqsbOLWEDvajLuF5uMFgKFdN5qIqfpHeP1lrUi-psAiEjALKn-RNo20m4RDq1qJsg1ZET1Hw8G84xCOP0k5KF-bRm4O1uVtoPi1hHNjbtsu53PMt9RVC4CL-QvKvAp1xKN1PZYbxUFasjnzrCZXTVsE_OmhRj24JbOvlwdn4CYgUk682ZPm5h5IIvamXzyVDLMEG0a9uOcvyCoz3zDvN9ruGTaBm2zAy13Bc-R1tuQzETVXbLp_euZ_UskJbFIUCd_WAwPDbxJoPDkZIX6nuZomj3knqyLHMifPeetF_dW_qg9SPdi6-AIjSvdr_PmCZo6J635v5_K-Po_GNk6n-wosG1k0ng_rGkQe3510IbLhzZlHyudxDYRQND3vJxfyuuX8pQca416INDGjjYsFfbmW_Vrcy4ZcOtbRA_47YOKQANWknTTJkYMBNdqoHd3vBjZE-Q-rqFceAJfKTwpTzWFlPNlJQNfBO7OdsZuz-LOtTiAudE3L8yEHsAprSE_3UHHuQJj72PNhz8MLi7UGQWeM9svANU5oe9B9VmsXHZ5zvg9qjHnnnPDoUz7TL26khGkgT57daM1O7Bopvs8z2VtAZgxgXoNEgEkRn39MPOAFXTcts5BlOP53-TJ_ooOO51qCjBqCk2JFvROmtRG6AhyC796LGJzKD8vv1UrSajmgZSWji5VCfcU3KICRCRLoGn74VBMSNu0oO2zXOsNITdkmCPOMYelk_pVls4A9-7zbQk_X34Pnk8X-JS5e81Q_b3Azx_oh-ZAU66Ed94fhnI5Ev7NRssgBJxCZRMd6B78EvVkq6LQJm2FM3v20kDySbSkWfT3axHoaR4S-_S_Qy3yD4aQuCI8Vo6ytHECMJFlZdppXfuyoMQsFSIjcrGbo8XYDOL4WJOw0JdPNIlcp0DvPhjlVMU_3aBLgRG7jRgp_XNMifasdkKK-k4_T_1UW1UPvpEbnSYRykGzVdbM1wDadOSGSbFZNaTsbxnnQbCX3M3GNasEKdJSuuMtYAm5arZ1TBzSIzTwkNxxAf0OssR3H16moS1KzkumOmr6M6UIaidZ1ZW_a9jfC6jjAEYpDUleVdGNyfy1i8I1dodlNb-AEDXjukKsy79hpHLnCcg-k_tPoTvf0QKzFZga-7AQZNaTEYLbEwQRPI0nrOYZEESx-9ttLv6q6PNrJG1-QuZXsJVnldpaEAREUAgXN1Hf7DWaDID8XrzMZuXGG0-Ay4VnVt_0enFU2zTkcDvm9k0x9CbcAKdDmZvNwPRV7mGVsY2FnP5kHeA32qc2O-zz2OdiXjU6ubSZDU87a-o8MBbNaaUkOZp4BLQ4t3wa4BUmyhgJM72cebIe6osMvtANXU8lr5XJs9AWgwqsvE8Q3wY0WiZ_8-qZQLVEs5Flv8QiesRWH1OZ8zktHK_v7K_2Ewbb1erANre2T44NkyJ_MTcIe8kMOnIMx_T_nSQ2Mw3YKimaaqsXJf4uqVPQjBWtFHSeP6J6-D9oKY-pJ9_jZ8I7jqBF9AuqwAEpsfkzv-U3dX_zfd8M1v3ICEZbvz_FvtGQoUL2-kOmqwLTu445m5eCSQ88ImuupNDbp0aEl5z1767M_6810i1lUTHbT4qmP3nzun-5XEuza6VmU7zk_h0m9NWNY6_-2jHXXsPiwquzfIo_73JHg2OMWz1wToVB-ouc8ihcfIOwgj0nhEB9rLCG1ACd7O_YDn0njKVW-adVw_DRgSmpWPzC2x8RdMSsm0JJ8MUZTXP722HNw-DQcUFhqmHT7rK67kaS4zr7m9a8Ozk4A-jBEP0oWTynbU4r47COvXxB_dd_FbRYh_t4UXAZDTpVB4U02jNeLCrs17olOaz6K5VAXkeTxf3rnSFkbWABE8yT2z9n60G9dPYQS9D3avPE1O2qRyyLpCK6WcX21C5icdeEd0SQ_7l8uGhVMXylDc7FbNg19BaT9Bm-wACI5dc66b1jUcehwXazFP0YH-wNfq4aCBEhSCp52nCHQWuEmp-tZehqF5mWz9Yz_EgjjfXCqxUAPgPBKJMHb_p91rv-UrX-YYIS1RyDXHjYqsFeBJVA_HP3CGS7mqFQDxUCuKAxqGypILiRmMCdIVUetdm-6xEA-zJuuzOyk9WD1N4Xzlk9y3u8HRH046aX_FT52wSvIW4MNnEr5_JhI0bDxdJlRv2zaDaNwZIvxUiVkCeC4hqGqD0jIk67OStHlWEmoIHOsJctnSvXdBDY1gw-aHdm3STRxA0yQapNzXWZfDyMU_Z3_7WXlporQfApOqx-Sk8paT5T0YEEj1NM9LVjG63S6zxGhYi0TiM5gPQBLsT1FhNxUZkVHLFpYeAur8IcMXq-3iTUtw_uUsrTLdt7BGOAVbwI-SD5KhE0gNA5i0Uz-JjMTDAaFD5x_i8eN02FHWWShg3ORhm83Fw2JLXWBjRdrBzKA1h60fsSyRBApyrk5h91bnabs0yHqj4ECO5tVc02rpysDmXaueX4djYiVXw9ykUtx4eBvAVm67j1zoF2EzZNFMOXXM_deD1XBPYk-XXkVsZmjTbeWKfuLYfKoL4CUi-Fv9y_C8VC0eBibCHaLkLe9LaVHH2dPMm4Mzw7qc3lEfxxXWDnSYe1flOtwhKsMng4f_wmxPBkk1BbO4vVrbP2V3sWTTgPH0jWXFsdmXsuQrJOMbXNJfVhgpP0HZB-69tQ-gA4sqJFeltKRCTCsJBAU2XT1pGVJmFpigRWRCD-9i3mJyxNFztnwXWRouce70EaLmOXC0JFF9DyhEKTUgIbZ1LTHeaQNXk3Gue8B0I4Yx7HJo297GZX8D2hNy4330n4B_5pf1C9oghDIqqKmi19rL-jKpvj6tfWkhmmJw4fnjhmUVkItAcJnzICNeQZgA0AJ1VGcy42Err1tDL_IFXrPtH1XeWzmsVPgGokVG2WyYyKWShgSWtCgZG-s6QXaxK8Dr8ErLAeiQfosuxVdqX1-vOt7HDuxBRieMwmumEKP89clun9jhQu6Qh-j-x1Wfu7Qx_nRxbgledu6CDQiYHR-p7_IMGdOxYosHum3Y_ky-YVi93MtLmvv2ZxRjxlbycl9u3ejlIi_cszjl1wjQ-dL74lU9gwquipl3PaEkHI4wDCCeJJ3msJ1VE9SlRivgrUwGBvsShss6r59Jmbk4ElW94o9FyDRCX4sbGfjVB1EXir1joqBuX1_dZHWw3lBYNwB7UqtC5_GEKTBmVV5LysNbCQGAUjFWUJzLTbqTYBOfeGdr2NZYszMtP24LNi4Fu-EpV6eq-E9V2woUY6mDTRZNZ3zpSakdikdSOtXdSTLULtpzx_EOTqJjq5wgIUsMBdooDM22-pc0p2Mol_ZS1Q9pS7vSEE-0Y94vBlasfnCK8-yoDWJDAEcy5Jk5MRy7A5OZTdxcU1yW18svvq9TH8mNtqzMVVStcVhId2cV_GvukyV-xBgkAMfnKrgqaNh5iUyuiQ-TIPwZokuExAirO1FlXiHJuZ8Y984Vx1CvykD-fNo1iihSRQyNqkZIH4Xg5rCEPm6wWT-3J2eS2HKgNlIMohZRhRjC7MYXm_QbnGbdHPAeBfWkzgtfhSAklY_PVYP2IJ55SJyYrvXtsrfPxblY-OL6l8V7W8qy-stA3uX7mpqzmLpqmH5wk6nXItcrxAuzdfmLdjsXXs1h1Vdx1KTSA0lfRvpKeg18bfQ1ndyVLiNbQJLUURH2_hTg2jVcYVNhcfraN7WJu-DpPNy4qWL77HogFvdr-NelD3BB4gc4xCSeUXqXVu7LFFhcIsWQMWwl-83aIdkNmYanci_ilgcbwByK9f_lsp7iojyBbSloO_bh1_tjLsoSkdW231kQNrNcQC2GZLsadqHCYnQmGuw4SNAK5ArB5lVYy6Rinw3GeMAaZoqUgpv6nXRl2BfS5SPsjLMJCdRpvizOZkyrSFJ7zIu-CKhxlxQq9QkbHKKA7LJ1bF4hik_kiS3MUPNelRFTZDbX2IFVgQ_i2nKdQSROg9Qgp0KVGjoL8GM_wN3Es8pTIkdpP0ZPRarrzze8WvtDKqGFYWOci6VMF5QaGavlzUAATIc2MDEQDWXdiCEkLJ1fTTxURKiXERv327czH8LAlBN-ijthQ3_7jfs8iOM4ySwprJEWDMQBu_WPMhX8BHPT-eylR0Job78lWmJjbqLd9R2g3G-7dYFbyIYxRbdUjmckx-E1YE1CydJ4uEHmLl7WfGOHYalxT8ivJL7ibKGL1aiR3PWXcCX5YnQ14MMVkbyDk-GjiPuNJNR98cRS7Svk6fubmt3yy424txaNyXJNGRcxviCIHIMDyC1DrJO1oMBCQW2LRNyA_32YS1uAFnhuD5ZBxfihpHbErfyw7tflV0y_Qz5M9z8jqcWzct8l5i4yZmDGcNFUUGHTh6IaKuujV6YLFJFkLT9i4j7JUY8BvtQp9NdZdL5vZY8ZzfOgBPOs5HSK3FfuaKdroNRNZIwZi_x53-cVxKmZ7i8rH1GQShpEeIaqUL5YVEf44UmHXdumuYfCh3ClpVg1uVMXPAZb35iELYpk3A9aAdVvXybWE0_TlE8FikyoZuFYoa0PU3CgfE6Uv_OstT5n_3QB_0TB5EVcw5WIiCN2eF9JYcDFbsOjlFwF2QJSUQq7Ua2hvsgQHSpxLbGPHaL2B4wg0t4sX0RyCoc7ddluzRHd0G2ljDgAggyFJ_jAis_Iy8g1jIH0EgR7qZ657Czjx5cG-yUqmKbObjTzUIbC_Kwnbsh6tBKK5eTJsrxoGyIUS6PZJ5zXDLfGRtmOX66QOxyvo8E3Tj1rLW6acucmIkgqyoW5c8i1vSHoKVXMm_5mVkQ0N21ANvRYWStwHRmGrcMJXwZEsjZzyyPPzPp7LSP4Wl5ZPlq95ndfe2eKKXNua5JGQmLjpPla2vCwY5oYWjyPq2cPDGPvSBJ4hrLBhLPETj75ra1EFjy_T747Eg0TtgyK8Yid8HKmh_y4vH-ZLCfIgOjexUdDtbb-yq7OJEnW2lnJYInTJFEjyZZKwJ3r2PBKpEROK-wLd-vWkdC6RjeGa31WfKBFUZVWEgpRiCWCuuMn0sbfMGg7c1e0sAZHMIDAWi99T11GjwrVRpT6ZT19XzVZhyUP0CO9xKx0INRlkuJ5AdTSjbZAHAI98Xv1TbLygB74R87RjGS1-Dv1u33D-dAYm7agCNiOQm5NKwYI9EYqg4O0XaU61RSdkSmLtyBf48bZuaDL7qc_T6RN0Q3XDxyoMVpdFhBEuiS289zjssqFOfnxKg3dK1ppXSDTEB_3V4jfpNJypBuVBJOG3QcSLTIlWKuyls6wRDycae3VOMgnpX3xEoP6I_lN58y4dzoNXcJqea4LZDk76I0RKydV2-I5xJOgc52gItV0sMr360GQfAAAtmgC0yp2OLSgEsOlSsqY4UHD_SGB3Xe5_clkSpKswWdcyOqHdFk9WzB1bfc520wFaPt1olpFgygPz6EgrsIZqrRT9KMAZVOtklUbVgt6rmkYcZ-nkNVAk56wUjBgVW0FzDCHvZejdUdsq8LMTkM3DNonxUt_m_9vgUUAPP1Qorzz8J2dXHQkXifPgK1ygn0cPE2yxp_8c_9NpoIIBNE_ovTD6k68OfYfMwT_geVwzQgnbpT1jWjB-CbVA-Al0-QwhnD_u8cPtSOJM3tnvbyROLhK7_QBDw6O5NhfLplHeaxdrc-at6M2X8zgqAQs4PhLZ8NsUQYet4eQiSq3xojFwLLQjAwg57M51peyN4-cntLTBcCChT9ckB2j1pN4hsKWIlpdxMtzgHDfxwDQxn0MkrR75n6ZVRasEc7Kvh7ji3GVRNjl-Qv553hoKjmzjJ5MJFIVVwKMa8Au48RAD99KMu6O63bkXg5Ojro3negpNQ7xQ90vd6i6RXIDyPiBGZnAI9RQdZS0-Ur7sv_GRQc6VgwZjw8yWkkeijlrh3kYoY-vhhHQCFezDYt3SWdJ83G4XCrA0HK2UiQ_bMEg4C7D5bTd_AaI_FPfV0Yh-Jd1i8i60onHjohQQIWHqI3wkiJfi1yM9tEidRu48ExCd93iliPDxm1XHXabHkKFdxRetxNxfsbl_1pIyxn7Hz6R6LtsJb0Kzse-OPuSl970zKV3lSOGaUSyyoWO563_cmm7W1fB29zMi_rGKhK_Xn52GCqjzKnxz0rIxOrD9MTSgZ1PfHbe3CKHLifwYLu7yWWRYdr3OcEtEs3ScloHxpTEfIAbwAf27X3mf_HKiIqfPj_16gKYY7elNVhTTIFYnOqSNlAe6F3uh2BrHLxatvXdsJUimEVgA3iOD9BQef8Ghuk9nwJLHI2AfPHvzIm_t8x3zDcHGRvQfo5p1kEYLmsYf-DZhg5AdqjF7DNw3ne14XoFVIFXFUYcN9bDvkg5IrFwGb-9h63ybG3GwO829ZNSGbqzD0iBjs2hci7dC0fcZzRNOA26KlsS5vIk3PVmseeQFsi6wQdQ_atnxofi3G03FQ-7_qevlLom5251oQkoZLho4i5XtQR3y9cWS1OefU3x7QcBFZAIw0Tje0nGWEcPps7ytA_Tl00C2t8eviklbaNSz8jDcqVeqeUZZha55GE0IAjKMlRFrOlz1rZa90DsWnW1HmRz_aPO3-0dlKN7cvRiC4q0TYZC2flrhfLrts3DWoJwflZD9sfpN0q4KqHTIDROY2fDl4f-8gsvAtaCHxJmmpDQUWyRbGDa8WWdnxwSZKMt_XYMd1O6quLBqAx8Ku3iOythSHo5yHhHAzl3GNxnT0GlU0M3B-21MbMIKD63BbEAfPP4Z_48BlgXHcbHWwBBv5j_AL-DWWosf0zKI4UV07l0jteMnIjJzwtyBKoFgPB0BGHzYjzVU7a_GC3Bfup-nlf41zwj4_dKDE3Hk5WWKlWXmZVXu7Glgz73WNdub_jMtIi8Mnsr-UzYKwEao2YcVn_TgQED-RyUUnIlksEdmAzPSwkq_z-e73jugqNPqOmAlUzK9gDdUQfXHBTtkqoZIt0oKFE0xoi-xKlQV_K_UIQXmBVKlQPLi16HTDyHaKzn-S4bFf-lZkfe-y9JgPCFTI2OsMx3dJL1f58k17a0_p29Dqu13h9lPUIAG6I5wio2RnjQW_P7huZlCDeQXxzMe_2WUS6j1IGb-1vqU7Uq8PGNTmtLttbeky5h8e8dA6UWnBvA7j1WSfJMKMybkVwEGEDOVmJJrx9K6k2lQudp5FC8VEwnthninDy-aTz2pABv5JwtDZIiCAu1ylj-0WHPmuG8vmMh5fWn3NYFYM-zZYmBlsAaaiVz5VK6E-fFZj6wYzkJJ6UPSjsjiZte0A6jOgB_AMMg0cW_De0i2EYbXPAUVvCpTReRy5LZ_T3iA-fp5QaV819ppNWYMnsELbRMffMnQIdYz_E1BEbyjWf9dIOdwaaY0rsyv478mLbbZkSEWwiUBw38Y5SyXCKE-Kts_ftgVtWb-3ycYKoGh_4VIlofk5NjaRlnFTp2syxqQHtgAOSbv-443vr8kY09yA-e9bwPm65_eoDnKMLjeALVgPnuvgC9XMcDJQQF8SPabZpskKIH2CsTYCB1-vVOuSghqEXa4miOlFjLfe5rgEkXA1kY4zlxIWCaCiAMG-tHZNVAbv-BsSTSPKaNayISOdy2rI0mhW_qlcJuRunsl2wsmkYiy-ub60YMQPcz24O3kQ0lznRQLBdAtwYtHuBqBtYfhUpI930XsKWgFOf2tOwuDSYdZqFo2Hc2Dzlh97I1f2uVq-5SCd_CJKR5cjRSBuVkSLKXrR1Q8aXtKJVtQhYiO6IhF4bXl30ST_uum3FR-PAEH7u8lTLfzXrijei7wPcEiHSxbffbhg1g0PVuXyxQHSjtpKmSUNaYmEPnOT_oAgcSFLNWnChZT8FVtTLWnOhTxuUZwyIbE_VkwvCS25ssWV0UNWV3-RbmgSXqDmCHMTXoYH_ig3kgea0t_Nwp2Du60jTI5O_CCrK6yJc-aZL98IZAIz1R-E76Y0KiNv2k3rA0LrldNF8gM0NQ7wWRP74thdZYgBds1fdG6qssvnafQv5sWIBLRpIfnF18k068smokVCQanHEP1aPmgn5I3OHvH2pUB04oHMvkQj5nPgHAMh7SaQDkP025krpo6bkRtguR1z00gorPTF75gl5-W43WNDor5jwZhyWuV_75u2kLral05IETmMC-P5ft04thgxNc2uzPzXvSlCNY4r1SN9uMBCM6CVQnPzL1FM72QVSkx6nPWDPwVtLk9XlpF-Gow1KD23FpWP6cTYhETWCjCf51VKQnaRUC2qZ08ClMAgGF-i-mPYgEEtgTvx1jIVJ_Rki1I9Tetj3wp8QGIGWAuLOnZjvl36t-XR89t8Xka9xl2npX3sfnmkux2xrn3GviUkHcGe7eVIZmED88Gd0_s8J7Y4_KjJQjQlQ9FGik63dCi_lkHmnSJ9NJaIiTnBpxPP6TpsZ55ATT3RZCy-u2ooH5inbEoR5EM7yfdgMgIUG2IrtgDz79rp5p12guWPpxH7Rd8T9LGKHSnzZ4gCJG5QcI0u6qvcWsqCCWAukOTEWhcx3FctYjCMnweWrtCSUpTfJpE8iGw8tMkQt7XHVAh3TsEIu3mjUKCRb_yq_86GMiZMFeFtQZV85c1ugDyA0JT_WtO5Gj2IHpFFeNq4bk7KC_QaDEJARyAYxzKF8NsEXkU-C8j_Bxt4J4FyynIAsNXXEI2kKv5cxB6SOYqeCCcHe8nahlATrZ5PM9hUY407SNMffFynaaWGWD_J3G5RTpYIswio_CUY80MitoEsmXw1HesWwxESy_XsYBGKdr2o2Ad-ymzsIn7iTmG-O72hyoelNdYBjifNPbce4uDoI8AGgKwMfBA9NwPUMoSqfHbybXzoeDaa4xsrlv2T1Yxj4EKY6XiG_PvLWsGuPUR5mYaeCkkHUkr8WA5uXTtg9jONDGh6ro81QfTTFn8xNhsSTDszTYUBbjRlSJXFhytBroDhFM0sk-CcCfGsjRGuu7-qwnYLoZFwwMVAmYd8Wf75jMj2IPMkUrARqVGBuybC_sOueifMu9gQKB0Quxd-8jSYcz3pr7NuwZLPtFmUoa-NUZHLtrSI3ZVTTLSxJGVXdmCGVpf6hnYlqvrSSWFlwZKZ-bJornGSrSTzFnVXog-4CNNFuqm8Bvj27Uw5UGGgd-NWX8-GyNkW3-TcQr4oCC2GztGpDHSFbWSYPZ4LnrJR8xtRnoWpHsti8pP5eWoGy7KvaNhQKfrTOmt_bLS-9OQQFRqQc64PRNdoB7AAMNKaJPAPYQpt7oqJs7vA6dNsqIXjVUgopA8YOUGie-2cbvCcXgA5eE3TSzrRtcnql8E3j7BkWMMrj8QLPQWTtFO_c4dgwiBM3LxA8gUjbEULfv5lsLO2h-FtJUp8Xml_XIW0A2DTk5EV--_W8KHEMtD7-avusVLObcWgjMqn2zXmFBMABUICwG0khyfgei7SuUden7B2FoaGrW3cgXLCkDvialUh6NipEsbU2jZolqOmqNWuYPPsRO5jpmJbM0wmYQ0ogOn8Z59WQnOc9SRxelLtqHFubWjfOqZQ8MRhXYvhrgJPxDZ8pGro1O9gJBtSxYBFSVnG2Xj4_4zHxP1Zic5ZIE2yIVzNdR1booFlhioQ5EvqZy5MzXTcJv8_4c-W4rb6PWqtdqN5pUzE4vHUzj4uIkakA2WgbLxFx4aLYUxEI317zVwV6MGZMOL-YcN6hL_nuY91GigYKecUUtJYW4udw4eLWMr9qlaQB-W5BaE5Jb1i7I0IdS-WkqzVw5S17uzN1DyWDlIvB3o4rXdMsz6IrRNF8ol5YRfL16MkAVhu3rGIRq2B_KVh_Pl1rq0sdc91b1AsC40OdYidF_U-QVxgh9xyQwF9y2G09SDfRoTlJ3SPH64P9vnU6rN33PJK88js6obOhbDQ3nxvSY9Uuy_kpjCoodtuVF6kGiZFtGnTTjqbD-PMBJ_Zj6aHv3jkcqOnlDOS7snPg9ayCMfkptd_5UIEENXyuZ5Fbt5QBEz-0G88tNdUO4DlApPbBPVOFQglXEsdr7z2ZHBbpGXa8tFm4lxfgNpH0Yj6GiDjcJ040mUYDs1f8KhN69HO_FBTP888WcZK0IYy8ZZSuJMhZPQ_j8h5dQwg1NTuMAt5p4IrZBq3LEOZnVNxK-tH7mI2r8kCPiW43k0WcjfGaao85Mu0HXOTaVYL1JDRAfb5Ev-0EdwHeKCtmyek2hTFHf4Bf0h093aCca1sGiiwr7QXbK1bo9b0BORqWf_hlZCmt1Vb3IFrHmvNUerZoXMiaC0zMwtcmzSCE0VH78hZILGt7pjtc59aVN5foIz8XFPFFzAgWaTqCQ22A0fT9Js8czf0b4843h1KXVSEI-VZVPJLeeoPAfMTu66KNJc9cW1T4BUw1ZR84Fekk10CY6UVFJmwOG6URb9-wP-wfSXMBP89FEtHzosT0IUlQz1gUQxUxpR3i7kAvDkcoxKLRyp4DHwhfdn90mNeayW2kITBe4Lku_8ZypY5Qg9Bcbbk-dH7iYNQ5UbNp42W0L1b8ZLzaEkASK_IVMPWbLUYlhVdz963zD78KiyxuOckLJEZ25wykvpZ11Vh0MFc1jL3bTWg-v7jm5j-LHLmdt67_gi-oqeKHwWQzfCFQVN8D1ggiQf4_Yzc7bBgfN-wNy2TUgxH3hArpEnon6iLjVzvQUp0_WEz89mNya8R82mtYafbmQ9859jUsAPKM8fkOnIT_sDxNKTVyVV6Z295HcNt1R_RGvWPeephPd9iBxDdiJXbYzF91AmaZPBTnPAW4ad9bYrVugqNmlIYccMl5349IOL5-u8rEHYWt23ONnZeAuOsumMeshc-WGdyJMXmT8dqWvCnu8C4CMzq7q5fFSgHu5JozHx4ePu_s5U5bCO9bXMZmrzgq7bKiYnHEiSsyz923n1dl3L4Qy_5AjltLPGj5WZwSaXPycXs8jX0nG9Gk70ar80rRfjZgQrVzEZlqv-jo5cXioaITc0HFhhsimGjWyOZA80LwDT6ZOLXgY_rt2U6tA8PRGJ04TNpCBZ47GIMwFEY-lBfgzVXUzXzJ_z7q6Da-Zunz_xr81ACDv3WlDDItBDsUmbulY48JgvDqQ0zA3KxTA8gKAqR6SR68yuhPARm1LVrmPMpQK3uPwepqLPWiZpQaDBJ7366D44DRM8B_-kbth4SxV6_JU40c_xNYO0F6EcSRyRhSqf_AJSURoiy3DkR2vIaHBUAvJOE7hQHAPmHcMo0ncxErh1nVg7vlVoa2Lokcx1Tlo_cmOokxIvCix9ybt0GtUFz7O66I8WRyI8F6ZQAVcXfNt71RksbrhzvXptk3z0SuaWi9clUIBoAgLfSpUgWB9APLqN53NqFiO2Uelmit7EdKD_tlgyB_tIkCtN69Fi8brb7-TnEX03ZX_C07NIf3mrMJ3HJvvfZtD4yy5LYBF4jBYnPbV1YheuELwX20rL46J-NO0g72pZ4eNXTBsXJLF-KX4pebTIAxnpkuRJTQ8fCatUP4u_OVfWDTZOWoVeFmJxAgpO9o_foZVHgVGm-BHVwHLgifzsHWKVasCbzHCtaxo59c2Y00jcm-f4Pux1r8ZsT7LINHLdLKMnPRlXI2rIyU0YjKHHqpyoP50fUX7AKoPfDhJPQA4PU4N1lFMtNOZQ3PPFSd3gqQkwkqjOpfWDygeBpkUay_gnZPqsIvfi994SWViKa-AcvS-OddZ9zSLtcUWk6BQm9wCUuzniJk3MTXKVtsSiB5gpqce2uCoYkxDbNsh_0rpDP4taPXW9qVl0N2AUvXgdELNT7f159XS4TA-5n9UFIp5kvOmAjkmQqWbFhUa4eLE_uKw3iLrgTktZVJVood5wYOczRInGT-YUT7j82tsOwznsgnD9qFMmMbr_pQW96Z_o5uFRr5yKc1mXgf8iNd6oUiR3OiirujT71Lu3MKuXZrh6aV3pXyrofi_7_4_PGuQ2hGGEnQgvQgpfCj0EwN4p4av4g9b_x_x3A34xzV5b3B_iTKB0_zy2nbzBqDtpCBWDvVoGOIZXyHoEDIMqcSbJ9GkyAHIlC7gft1z8eWCC5wjm_Lt-TP2OfdIFStj-qzaquT7V13s94JuIbqS6Acy8hGDJPX0rOa-0KPuXnDD556L9gB8SbxZyCrsyEVFotwxYEvn0ZdNCumNZ8BMgP9VmiOg1-grEyE2W1vzkNA38SH-fO1wGxY3dnCpyn4PRpjU7XPGXnBtzRTgYyMJe9DUkTaxClKlJCb_5hTwM1w6qUPvoJFCigsJEMh_h5_O7UjUnQv_NRqnTQPYCVBSoaq42SoiR_D9yo0L8dbCE6gaKCAePJX7w1pE3sN7AdZdKkqd49-w4U4aLbjA2pmilY5qUk9DNHK4JeZ4tLyybP1CcmVt9DJR1swMxruHKPCkiKtwaTQV4WYb7A2Yoq0MgrGtinic3zRrPq8ZjUqiIn6NROSnBwbDvgLfW6hRzg7Cv9bK1w4T1T8YikOXg6afCpnSIUwW7-1smiTHoGwqalP15Os7hJtfIytDbJyAIABm3mlP2TCcsDJtlwRzicblsbh3inhuQyuBdTo6URcs6U_1tdp98q_fH1TuahI1la74XDeyoYIDD8lCkGE7Hj7nHE4OHcxebe9jOk3j0Jefh82zVpxvtaL80QEbhT-Vql6ivtKqR5Uz9TjYabtJTj3D_YneMkSHV1oPPqrBFE95btPskV3XbX1BCmnbyLJxy7RMTIjbbDq01kR9ULbl7qoUVbjXmO5mfCLq3ADpTdnrZ29P49nMP9I8PF-yg89U7bJjswYBmELpbXl7e9CpIXEbhsbo1HN4snELliCuY6qGMIsJik7geU4ionC0zTvtRX89eQJHIY1Kc10bSR5-mpOdeiUh_b7Tt6hJqG_yKZI5xTpDpAGI_HodzWBVAOEwfE8Y24oB1nHFPoQk-dxfyWQpYbl9YO5cuu6WSne0nWqOIYslO5B4Jd_OrQUqHBujVq0dhcLIO8_Ev8X_QLBa75ycTqTZTxXnUGuPDlq9IB9Ma5m3FM6rprs_rL-m0Ssn_JQOz7yP4YtFcyzuvYioyc0moy0Ec8KvsVDvI_CIxGlrmtWENkdzpl7DEES46tXPQrYvlp6M0Bwb3rqDyn3F1yuAVGlQwcVhw0S4yXzFQe_pJhd-R6vCZcK6Nif2FPWRBcaLBa9ku4OCZ8BU2ocMREMAfKIGRSI6Hq9hDtx4vWx2ROYLjVGLhRRmbHplRssDMfG5ZSpkk5RiShujytvDQtG74q1PbxLDjuVAed6BeHXDLh19Sbv502ZsX5g6bcgi-FKqB2igVMbVjiz2AvpAG7KqfVIyT9TRty6bRss8cYZxLxVdrbjVZvtX7hwJFspTIUr7LXzByZc42pT4-bpfu2J_4x9qwSz7WKHJuNOHgDbEsNuAxbpNfQHXqBNQd2xVuQKG9CSrjbbJKDW7STAqq60FJk6pw6Oo6VBtFtEkFsnzmdJTpS9sJ5tVr8rAz7bRt9q1OZ7n6t9Q3wJhiqiqcffK3E360oTiaYZjg4yhAiU6wqVP1quQMALIxycCFG86NSmF1nHUr28uktUIbFpzxpAc6QZWd2s9SuAlGpAezNB0JapCPCOwF0woYjNZpqyl2JTJKK277UCQjMp78tWb4BIx-ptv5HtyqeQHdGxXotOTc1LeyFT9LS9lnIfTvFMbD5PnF2bbcDBa2WrW4iHgMfBqVPtS7MRqb4cATeh_w1n6-eJRU5PkybGY-8kG3fwEFidWyX8WanigLmys2USrFGLC34vrPdr6SCPDbLyseCG5YX52D7wsFLHQZUDX1PwTpGCR37IYzok9XEgPSfNsGBw15hfc10QEMLV__ATM64Tdj1TnEu2_vQ2GY9Ix42P1hvbMvC77QU-P201YLBhD16K2pS7jEFderjpY8rwuRJeJCIibxYS74S4TvK5MlPX_vdpMOJrv7TyNP0Da9_2UenL42bcE0yQY3v5zor_g_Oy1ggAILYp5wbcd2NPtPgNg6xkq6qKxlBGnLm1ZF24AlLWYgFt2LRVuRp-VMdXxgftt5K7qoBP4f9IIEdpcXjIPO5hjEmr9j0aWcERCxhZGCvwCZPtEwJSgOx1kKIYO-e9HMe8jXZR0_Q4gH_4J3n2D9jx1XXPyfj3w7Sj_VQGLAOQxlrO-VKY9GFCqmqii1KFZYGGoaEUQAEgomJPCCV4wJBPCzceCNEPOWJTjrvM-ev6EICfQRIOkVWkeH5ynrTrcBSQFba_ErZBIbNnfN_bMZh92C2gJpIxGFIRh9RumoyJTQMyDmHaWoXhEZYXdlToyDKHz4KBbluIoJ9oFeNq36vewT4EvBAC1OY3w2kHDIu92jeL-N85troRQvI12MS2W5dhHvQNJuAhVGN8vBAe-2KFkP_RVOzyMCINTJyv12RPBA1J8t0ysHJ16hYqQMSRhQ5Fc6w4It0RneddvvuebTM5AojNVYnRtPATiAer8bptsGw9L_BYuiIcN2-4NeAWv5N8mkCmQjoGNKYGkXd04uDyudErXpQ1zwGa_GCUE_dn0Q4X_9SyevVSnIx5fNUBSJK5lIhrVK4I7GPkC6mmvp67KYh0UCla5rNlH52mMhce9UWmeu2POXs7sSPh2RstcsNeC3Jb3huuA-QqZWPpxgOfBvak_9dmBsAiV_Ifb5rZyOSsGlT5O0_tdrOnvx40CQ1xV2knWG7tpbehEQMMQCBLrUFk-a0crY7Pxjg_sCkznqWnO7gmIm1IhsIX4AAZj7I4Nuy7mKOMKsuWSRgIGYR0xyH0KtPExubewURTPK1-n0ECRQBS_xWUbrFeORui4YR1OuzNHwj-8vMda4-iKIyvcWlCwlrQOqCYvarnFH0zmBS4zLJh0kVc7QB9UGqGEw2KST8EB6Ml2idSeNEHW2dyNo5gbD7qxQL5ZTgDf7F_HgTV9mIql4eFFBu4NVn5ovNCi2BQ4eYeaRY5sZOryNzft7XGi9ts-XwJTjpUwgiaETk7GQTgJVrs9ADziqtVbCC-t_V8QojKNsIfnhdxPGLTWVURButSUhuBnlHkNuTiYC0FrtfgmQ-15e9E1xQx2JC6Y61GaF6dytMIw68ta35X0PBwaoi_yuE7ktP-BFZ8-oz3pec1fIGV5vDIqa3C1jcwFwH_VOjDx_AmecD6VOuSR6U2mJMGont8NTr1BLiIh_LQyklUC_jMdwA-z1vCbyDCfU5EFGjzOj16zRsY4uAVcS6zXXU4BCQgGKakqLzVb6hF--5iTAUuOympB4jYQSNk2pCRTCHsGtcJSa16zO4AGx3sQnYUdONFkJ3tVqhFW4LuaiNzo2RVrjmlIrNiqidwrWUpr1cWP9Pbp0qnaHXtPLOipuEh4_cDWpDAxqDsgYjOH_KFDrdwoELWmSBwavKUSGX6bj9rgUTsjvg0BwmRk10B7tNEJU9Ujq_x1Isz-JtJO7yQmnbaNxDJYC26AfGjixf6WNIs2uIUWD_Q8u_--xlJGKCAFtdMDCGG7oBRh9I82nBMIofvs3LNbw6hIdLxX5cRuQRiAvVYzqNK2oR3Ml_VYqvRAB_wDduj7ZiXY8eko1zY4stnyyJe9i6mdIVd2uY0Q6yQ-SLr-sGGdmCrz8W8AhF0Vf5eAzkgpzsIXhQTYTG1BB2sQv9Z-K_YO_WE3az7DRqOHAY_9jhoAOcqJPc8uAHpzZYTK6JHNiHMwMfe9g2S03I3HUpg0lI-6Iy23oFa9N1-zxmh61CZwhAvBZUeMnWQZrchTlia3VX8M8VVsvu5BkPAcXecf2qV0QBM2S9ZVSTjzvYAGYgnMIFkJLKVNnUJGSw3Ciom4K97NGgUc7U0EJGBKvhbd-uhlbUk7VhVOAz9T55Pzlzt5yAcqAeDhqy7-4aYed8PwEY-fFfg84dzM4puqNsxJJwyvlEdrC0izVL_IlGzpbMMAiNbJ7QutCSqgV_zjU8q5N0I-q0nbjmo-xGuqcePJgtbSZwDhbv1C7iai0kIHnemoKmlgOwnZVbPsE2VKDczbS0DDcFtVVWnswWPEKwLPHBIodeOGfnNGN1H1B5N-DIsFK7xSQnqFs0We0OU6pZTYeXKYDHMEqWVeR9sB9yrzlk_OxZjBoDvnxcfKnSO97DYwID9sEy6lmuAyhCmv1ez_sBhPBiN4MkS-TgSd8ixIVO6qPGGFmPMtLP5CBHeAQgCLs5QrEfpGN8Xc1sinncyuVkDrObFrc-3Nw-Hay9TTJkw2LrPwJY5rBw9fe9E6HGhOtA8lrH-AAy1HyySg0KhyYa7ZyH_yEB1IMiVgjKcvfcMJOT_vINnDTr3Iosb1fh96ZPuuqG08AwJ8N5p0vIaha5453sKbkY8Hqi4Tr4KwEOyETldjFzA7LmJo4dvxwN34Xo7BcQUuqnLLShRmtJONqcGNU4LeAOTAfijHB0hd7VPK7NxVUP6Cw-cY7GJQcmydQRTDGfhzTp151BZJBzFek4iTM0WJ2XCJ_wJ_NH8Ja0SVLsBSKXi7BAdY3RIru6BXTJfJZAD44gj_wC9is2u-KAPDZCHgf9pJ9wOxkNWtiLodbX4OPIfAb-rGx4fawGK1ytJoK2c9nhHrsfxoRW5LHd9kBrB_0nxOxOnDKqFzBYQmQs7ZeB-KiwLE9wJA3wYqC8WzwdOZ_BCPCWj1oZOmwBwQdV09eDPPw2-syIuFwXjSzYeWNkh8KdsJjhEsS4ndGaJHnEJDOhVZNGCBvwXGKFitS_vWC0dcpkMC6dljDcoI8X1rTVgPme0hCk7TxY-KN8uZ4Zzwcp2Gtk2i9YaH_1irAbpFbUCc_uGfj4olbrq0dbdRaO4L9rsIahOXYscYBh79L2Ifhb62zOgHbWe7KRtJfUdyJFgh0TFMgMZ5IN5sk_F05_5qkCFSEHFHKpEVWMIdrmVRGFK8Lh7vM2_n5K2ORL3eU9aB23uSqpkt3BLrVA56PUZAJXPc5rM6iF6KPQPMNrfA_VAQYICOeuYlF5-0LblULShE4YJZPIO45W3UxeB5DH4lgiRcGnpdY95rITRidDQ3Xw3nKU-2EWhtSYvrlLTZfSzbuNvQraMwmd87i5oM1KvGoKhKorVqcXRlQ1z4mBr5Ax8FV2A1ZB5cZmEfDf9o3r2VU4Q32B6-xF4Y0NKTtX4-T0xXtRAkHqg3WhUea5C5X-DNvebCSOEVuJHCJSYt6B35hGJuenNAZ70weugfNazOlcPQbRVib4ZPxPCam12VgUuiB4NIgZFnv2g9AlVDGoK1pqNxm7gRhN_hrQSWn9Fu8epoujg6pU2TKz22CCFct-TUcWUHkdvHg7empVvZKb2cVp_Igh3YpblU4KoNc7DoYWtkt8KrUqArM5vYH5fymJQnSVPQ1NgJpC5L4qP-CmMZU7vWUVuzyGgirWP5Sj9r7tuNA8Hf16fyxpuGrYqJMmxI5r6VE78Sn2lfAF4PG4cBBhfQQMKAPJDci6bzo6GAx6R3zqtaOdVbQpRNSvEV5vcKKRqNXoip_9Tt45XuhPPgysB5TikSPSKfaEoMXTKIcsOXTyFsc7uCrf8WSPeGSwbytBQODlL--wFlwQZGgxyD10ThCUJ8pp17MCSw-E6o-OIDWB4poMakkGzwLxKqK-axoG5CTzA2pY8ITV0ydhuN7Hx7EE7_3bVzeoDemiw5xYfLJQNskwwBaeSQDGTfGDP2FpB6C7UbqnvilkFdADF5SKULxEjS2jTEmLZDmYpXI_bZW8p8EIWE-7sCmTR9P1FPMQriMNY-cVUdJqBcm0u9xPQWIdHboMVrZLpYzTr95ZXFI0XEB13lT6UkiD26NMMbDGx-3F1aCmkPvsMBN7dhn7QIZq6xGqHmakqPpPS_QakzhBGHFLS5oEVWrZMljl1K32beLXcZ2Y6XLnJhlpLZRKCO4T8i0ZHUVo9ejMiO-eURxrMNIuBJGBWKq8uWxHxDXMM4Z-7MIBdaE5t4Dr03hg4KuR4d-x4EeOiJ4b15XnyHvRDUKq68wR6X8WggV9OHEbNx4FeiFJqXGyegvS-dDIs_qYPCcpOLs8Nu50KgyOsEfqiKdwNaAtxYx2AGZh8KqBbUfaewKfVZ07AXW-Ud99FZZwWUUIm5CmXnk7JzdDa4myrULkooHv5oJ1dBWgsi04Lfx71GzANanM_Y1uMh04_7t4AHJ-BJaQGxZkfL5S7gpP_6H6LyRQKNiK2ndOnC1jnSKTVIJSqdkvp2YmMoWaKC8khNqvcU3z7kb-e9sHn5TF6gn1QEpZdMXqARLJHJ6gLBpOJnDi4_4HmOcckjUNeGu9G2CUffKVALe7-Y2LTW_iCkVg5MLpYo2wLpOCg9m2dbPiYF9djrRalxRnIPenNVY9BvyZRpHoX1vUmbl-NE-z3WErqZ9EYiYjAnvWc4Es6E3t_cBQNRsibfKA-PNlYZoVxA7lofZsbEs6yyVWW0o6WileHKmuFCrlaocELkQcpGA0soJ_615WgI2XmGWtNmoFTIPIh_5UJA38IZ7n39kxTcMrQhAKCjLA5MiUTnGrn1Y2Z4XOYtm6qrbCniUn9YkXH0gttel96pDWAIVoDBA3au5xpQDmh1GCyG3_glxUm6W4Mrd-prXFt8PObshi8z1qvu-fv8qb0pZrfi5ifCuxPe1Qt7vYzGISpT0rFeICm6VLF4ISXpcm-OT_eDhnbXQKR-DwjriZuhWV198hMdxOWaWi0IADgT_F_D_-p7ZKg67Et7nQdJCCI5Xcw5TwHV1FCRDY_K0V1RKHU3iG5M2kN-e6B-0P7zmvdZzqpwVO2CTlKi9QFxS7TN0HPq0qrD863baVp9bqgrJEb5xjbFmLmpajl1PvVI_hl2y8IgyrwAEL0ewMJ3YwK9UttelQPX_Xw6iDLi_DfhCCa-tvrzcDlAuI_oisMcTZmLctcD6hWZcPEAX4NgLys2DOP6mGf3HFy7fPkEoYvJ0C1TFqONDlI1B39dWwVKLBaKeNWItS59y3b6AaCzXkWu2rAUyqYLI5citX7Ngu2lmjBmBhLsblqHk6Sh39e7amEMGT4W9wqMMkFiKG_MJZxHkdbb8PlX1Q2U9pF0qG3f0bGSULH7HJglXAhvA7rUzw1oPTSj_MXBEeq4feGnTaG3uVxUIQdtacxupqLP2UVFFw_uqH6hyuXVsIkIFX7BkKFZBusc7Nql0mNFHm5FcbPrvdqB16b1FO5CNiSJ_KdOn0Q8uYXNnEiQyu9N96SO3iWRgFUGsi7L4Zn1xpkeGjOzbTymyHMGcTJkH6Oktn7cnLyZQH67QLOYcIUAXZwXHQdtPRD241pJtTgNW6LdaZgbke_KIq2cZzADnxWxuROrnse1pqZ6p-1kjJwkXck-2rIiLrKXxQn3L5yLIO8TzfCalCK0P5y-9KPrZGvvrzJ6WLexBHSGWK44PJnY1-O7SskUmnusMNDtd9gS4ez6SM_YsViBeG_7PAeQDa_QmgW7N89zvfEfj1tnIkWRysAUY0yfoRdYbESabeQeEPuDfqkzp0Qr1nit1a4UOcNOlqFHb17dZKZGCVzwUoOM3XreNhCfkE7bpzINgbt47i7n5osfLlcA8QWZ1sYqTUJarVFFmkV2s5Ee3PWlEAC59kY0jzZoJOeD91TG9zIZCj0jX-pxfTj3l70xytolcmRHAFMB-tov5ZYulDYVs1LF7IGkVfO05J4A7cmMTQgwFZrqLTZRAXuwCcqDCH7iHSblbwF4lhrxV1S-4rrFrh2bIbTdrK_pWcW8Wt5WuwmpDScvMGnT8pVCGlPjXzVI5J3jEi4prfTHDglQHNhfXXwi04G5B6ENUanjAefd9fm59WmmHK3MeUIzzPUY8nVUwh2oKJve_YFshbt9De49664_TAPKZSxnOK_RHO-KJMmOcPNsmg8orQIprJp4wOpaPskELxunpRiasUK7wAbL0AbtqkjWCdJaKgBFXiCl_LMCcGMyEGyoMxojrM79Y66hV4HJv7HEYied_4U33M2InPvABbBN8pe48803SK9oMqnSCZQf_YlLINH5gBxM-fSfdBjBqqeD9k0GmalM7iHN1h4x2PEqIf6e0d2M77Ol7gSLmK00cEZ1lxsizxMX8OVKTMQkNIIaPpuKY-BJFORB_LfINotFXBiOqGd-dUW5bmmf9WqvnFeP0sHw3PZNlZAstY1m9A-IT1XEsdoJTCVk2moxZuS83xjr9F3tec7EAewxF25jIBlCEh9BZWJEa1KmlJz_C3rGZ5p2kQPCbNVIJa3RYeyJmYd7ZoU1Osf3tP-JKTYCUP9LYwLExl-6ubJRk_b1OT-zvtMxK5uPZuBOiiK-p9euioCxDHrEAcVvRLR3xL-62noRkHUyDDl_UZAxFN2QsShiVy4TwgzCFrfP5UY0C7D_piiS_qxs5fH5lAT20zqIVnjTtX8bf3m7iAQzjehfiQS5SO2qNePZ9SxCwhnK6anPskfwQfbvpZ2COMcsoy7eq4vV-o_ec7N2V29_MTiCJj5hXTxK8Kd8z3ZkId4mn9nZ56aLWRqtHt3oB1Q3xDA_P6rKbizQHrq5ht6Q1CwCRyMbFvvSqGse5QxykU4k6EH1KrjCRtFFbANYG9HNo4eJk1tqp0W5X6e4EijZtnZAGWFwVTiR8sYzkpbWpDLuq6KnRgU5MARHmZOkWWyKJeXzGNSFwu0NtRFrq7jTiHGrzbYxdMeS0GIyOq01877dvrO7ys6bpuErhT7TPNqWgwcitbuxMoHSyU6KOX2xsEf8pWov7cH1xVSGDYohLWUYv8d4ftKvsTg3BhHCRC6Zj3cv6BX0MW4HOOuAGT3n8N_gV5NT7BQwJiY98y8IwHWBaldUgjco63VLX5QwANrCE0rIALb0E6x7jQXP89vrWtbzgjfJKHCYKmDCdgDeSFnQzl0qEQItDpJLNbkwvSJuNWGXytxp8ch7mVYxB5DYP0hHgNjoQywiP_VILkIZRh9A2XIlRmIXzA661O9RD9UO2R3HP-nM6W4gW50iw0BhbBQk_jImf40IHnBRhiluUsTZCFeeX6pswcfVQ30V7kR0Pv85qBKxFDXsIOJBDtMlonckuW9cjVTKEbi6oM_68C10mIRQBZdxrtwkhRdU9w1bWXm2K54NpOlMDICl12sogNooTyhVYY_pI6hJEw9js3bkCBPbZTVxIGUCAaMWv4nV2EAVFSky3UG97qgXDAU30G57b7HbfB5ncLh4xaAMn-iigofzIpPLcr37BiheTpAnTvJIhvUP1fdgdTv5qFbA-OhBDbMM4AWQ5VmwFj84OxrMzEWTqDObDQ5IL11wwYi5sPkaSatlC8fEexXhOMFw-tGlVE7SdsHtbhPhUCcbY5xAdVDHT2a9zQFskvtVdgXtMDBA11ZzLxAEjIDvgGq90i9UFsmGqrx66zW6WAu8kwwBsBLMFn90CW43nTDsDGSnHWGln2Fgpvsj1dldRGKlBal1JWAHhC6qP6mjxCuPZMrbQGJlGeJyi41d14pog0cRSObiE2cSUiHKo2yqvfDdGp49FryA0V_653gUmwwYJ6pweU8tgD10OfM1N4bnH06e2IlidkcdRz3bhzT7GdmBdNDR4vENDB7KTRMoPK5F2oHChtB9SlN16r31tFTCjXeN3L7n47A2DaF-wrIhA9kUMRbAWPdvj9uZg1t80L_QsPz8Sot-eufKZoL1i8vfE5M8vef565Klzp6tXDx4l_os9LLG6_CcHrGZP2LNv_YTUi6ixZhm5OJO4t8ZN1kYlz0IT-yN3hISx9Puzt6yBmp8Cf0NwrBq0mO7C-lbzb8Hq-x9hlpfFtt-6Y9Oc-EP8nALUqOtKsNcz3-IQOMns4PHEeVWePBwljbHUYqhrL4rXI6DbO-NQTL2FqDT-ck7wBQsF4ehSxkfY_viKNTA2bVTqkX8mDtc4t-eI0nO2nBFTm4sCNH80IYwY3qh6P_sMcedTyREmZeESJuar0T16Kpj9UYlc_75WFz3dms3NNMtIdJSgryAnvly1zdzoCOEsZPApFPab_4ui6vFsewpOi3SV-vCgMiQCOZw_X9H-oj6xprV977Fyw1stySazc1WUHh78xL4XQLfY-XTG7qrb_sSK0JZoyl25tJ5BOHWA1AIxe7s4ha6BBnX2odj4ToYibPuzdD5f7JMAJKnjzOpuVO96Khu3hqC3XSBqoXP0wdLz0a0-Q43N0tl89lhoDzetfrM0sNLMZ2q_mLGxhD5b4WPaC655V6ctgfekXZGkt5srcfxJO2EMe_byEYBI6u1RvCNMfKmNbD7CQfM3z1oCj6SZC2rnoIdYpJBU6rBMXP5CpRHNiOJLL7H4m-TJtCjie237ZZvrh3S8P8gXibOMdm8oQZtgbiyR3w_UwUIiBBcGXE8REcbnuU1wLrl-_cvEmNkTIEQrE3PUHdBZQ7UHMullmcV6TqWVI-0tPDl1AFlZBVJ1Qxlns_QkUQD4l-5rIzkIS_fBituvOD23Ok52wGxV3xLkh3keqYMt4bKPGOvRMZ7zzbO27TWAF_jKAwrTR0-_wp9aBBEB7hN4dV8ARbS3BS-in3RZbjClW8BytAi5kI3_RHNt6A3PeyXbf1q0LoPbxfzFxVYe20TR38Fghms0e2S06Pnx-iWka3FaIfsv5vcL3QfGiMQ0VKQ46wE0T9LsNeJI6ZgAKQGLE3qfWQcRY5byjgiBglxekwMVee2NOYLYNKThfEZZ3MbMqdVcsJQGXzkCjB_qY9EYYT6PqSGUX7D1DEEmKbNhTE2ZdE-cNRZT1Uq87DSApyzt-c-RJMP_wFUS21xAoX_L6Vnyl2aITb1VeGv4KJPLvNaZMkBEyEYTBWyKk5-eNsE2ZtNrfD2ZOonWj9JQhuyOesZWXNrvhlOO_cK9DPajWyf1YcB7ysy0oL3qqfjYrnBEzNefhMAJkeO22OKGOTtXCIb5Wy__-ANXnsPK9P6yIr09RGOPrhqqhrcGCG0V2evm0ON5zm77kiKgffpnISuwhKX31zFwTLaTK-v_TCSno6ZgIn4XFgoF9sNVDevNwkiIm19nxEpscQh5ja5bNeTBqfC7Z2TXV9_4zQjAypJrGdH59ms8XunCLfOIwhR7C20QTcdtuBb4fXxpb4B0V7bww8W3pe6lDi3NYfoyxUn4GXeSfzVAaKo1LDdLlyNqG8PYgeSUdlLfnshTVy_JBiFQR8iAJIxgC1ulcM9zdj9B3pxaCRebimiia-B0SzKHErlLYNktZqhosSejMUQc79VosgToLhm5hXuyEDQN9AMpV6cYzhlJkGiVKl7nJCQauTh2kmVuPPX766OUSHQoDe1SpWVivMlOMWMvhyA4gPltW9mh26H2wG8LA5GnxHSi00t-XSgDFITR3FEwPPkEVHAwiTqaylRVqt7V3I0VoLT6dfo3YoN-lIyeeIQcO-s8hdGshFVnFsScUO3s7MQWYdVwWjmz0BdnxhXEhOmWBByIBA7PeghA8zFO1xjyKeL6SY1qeH2to5Jx1SdIh0fe0m6dsodnHppM1DzNx_iXFEtip0bVVey2UA83-aTZ3RMQa1NJiQkcnh9A-PT2G3svVkPIhL9FQvx0opx4qye3vCaakm6NAxvJq2DC1Y2sKAqKp4MlMR5X-LVQGGYHMjlvGqcxaVXQQ67dmoppwaK4dXjrmKoCOugQI3Q1nNVG-nGLlqvNncLFMo5LG82N3nqesZXhUxh20VHjprzXTBvUBbp0HKVahyN11UncaQSjM60RB9Jg7kKHhPI44eThItpxEJdlHC3OS7IABS6TKYywF1qzNqARMm-Ej64cpvZbND6ibs5xM3GJ_MeINgjHrv46u_RvFSWdPxHYtTuoJJ5rfr4kru4vZnZnyMCPFxDTSMQ9l-m-HJqWNHDaxaepfFomfmDmJK-yL_dwwsSHmjc-5rk0IDHCg5M_a_r0kt89gXZpeKj72_dWbjQNNi0lAz3q0OixsVlHiixj_B71yE46t5_eAmEODXdm6W7T97Xjdg9Oi1YiK0XGJk45CrA3cwdNHRc4j-vBaT8onM2msjBliaLBVeH6xxZAVSzW6c9Ketu8Ggc0qo37iA9rO54HtVvhUe8duOGp0eYFKw9INHdlckHEorxLOnwpslSJHMSKoBgE90nGUN9bSuOqsQUpGFRGrVUUgS1IHD0qyKOapoKZz8WD_fMIKPZV94fi0FimSc0r1scTKVFP7tMS8pLxVv0I30CeDKrER6-kt7AKboL1XomKvAv4n0vyMpit3oDieNuKu7UpFLJDeagND_0aZicyjzryjjLYm2usaueuGF0yxHyA6zDAYXL48EhoAUFnhvq7Fc5KkRdzIpGgTviHgeMJ9kcYvgZICA9-UN1zCtdOYar6so0hSboTHzcfkycypSMO9VHTtmqIsMLM1nA2v5mtspsHT_nupo_8sYWrbP20eNw6AEg5RFGs_nvAkPW2IQPTCwrKVMS3izgJXGbtrlEUq9Z4uLfSqlHyXogWU0Yk0ENdlNEnukR3kcpz9ZW0GK2TG1rki32c9QqDtsnT2f72aC_Q2YNWP13FZ4p0yiQM1o41mMmC6ZBoFbTwm0nwctdjEPmWcnVWWy4bLgWp1ySPs5eLtaV8wtIQJIsmZpfvHUYOSrxkyohWVmfq61-HNfdSJeFC5egM6HqhdOHYK1e4zSNyfR8e9YBY4UrqcfwtsnhUhbaRq8UYlrkvcBrdrpqetbJZCyNU1_QnhaRqIYsBTq6ZHhIw5gQCEpJ78W3FSxN7QgXbWTYRPsWIWKq6wdk_JwAyV0HHuNuN1WoGypCzjQoMoBEeTFhfMZ_r5hfNqTHfLpYBAJUIuZhhRwhmniv54KjzOhZDi1daEx3pm9etXrOIrHH21qOvLbDzBaY3blm03U6pcRtz4vNOUb0d8wLddyi4Z8FNw9fJPoqPqqsz0rOYuIv3O4P_A1sz0KPXiZsrl6AEsvkL9q5CnAT5QnL7PVU86YPNpmYZiPNNdn4KTHTcP0FHPUfZiw5NL8RxlRnk9fWJqLpvPjsuVxEQTN9ogbMya50oXF_DY6OoMTGi8vBNcI-jGJcto69A4nP9IGkMKD0brlXNpKB9F_K72an_IcLv6350t-gN9BEKHOo_Keofn9tIJs4UtxjccCtyk7Yf5HWEeqNxdreDUyaSrh__hdC0DQ4IOPduuO3RdM-EOowYleFfUnl68nzUaXXxupiurtvLZYwbYUTRaKn1yQhYjCj-9nvx-z-OKpvnGpC1q5iFRokD13zGD8cGQJcoxLhXi23wWvOTM1GYJkOKWh0jDACP9sw7ijNKja6fkWk4iD993XqWu0-KewbJSQlrgh7TyzD6XMF-k2Oi8rAb21Tbf9_xg9Uvz89O7VtDiZvV9tkLNIFrh-_54hOVu9N4E-dV0MSGYX9typwmawXaj5capi7oLEGB9IuF7OCRMPCfIznuNhMc4OYcKZmpMisnyRKc6kY_BEOvX8vvD1jSFR0-v50SkoIDZ7jYBXd5377ZhcZyqZo36NbFFv0RObbBTqkhrKPSWLMrYezF1UbEp2rd7ECOt5QHb62KUWPBrE8YZQCh0ZHHHj49JHqjLC4k6rPDflF3Tn3TX84RTQY9xTqMDzwdfzmXUcCLbMx-0F3_663Vwq-IB_H3dbZuQfArkK0G3Mit2nAmn0qQG9AZgONAdx4IcAfaqM8AY-udesmjliFcJEwISBYpEYcnaxiWH7F1weJNdGOVorISIOd8nWejYEqYI7_KRAViCeH0dijx3VWTOxsGNidVL8tGE9-Vd9xNFpOD2rCHUzWt-FO-5fbmoTgCtlTZprDsa5Swx8iLmN4xEi72yGGUg69YmuQ3BTYgxC1pTEL8TszZFuUBtcSnFBZOQzGSP8ld6ZPIk4_EFC_14b5xS3cMuDT5Aw2n1b_-ov-piFgm_GGKh0S2vGHG__DVkZl3J9ZRI3LHC-zXQ9AExlzLp1J05SfchCHVlsFHF0yckoEf41D6kFfnwBToQzzl9oO5z-MsnxuHTNjcpcS2AZlIm1xz1NpNYI4iwQDCNqckZJJnNpJXzKH6XpfcCSOErj9CpY_gHFHmwnBWaDh5oplOiYqOObu2ai7taz7Y1uMGSQnALALRlNqf8MOEyFNx0qhhNGY5J1r6Tmj6PXj_IeR8xZEG2cuWVedgn3e0QN19QiTcmCq3AXx_b2vASDkU5jq6Gg0AvVELIDJwMx2BVXBvvj9Y4PP4DNRhJIahTra0bCRlVDniLSRWXKQTELgOOT1EFAholaXkHBd4mJIAXZeGmlr8DiYgpnrYfLSxU1Pz3PCNMN0cU8TQB08Qi3vwvV2LUeGohRtjwjloOAhR3zM", + "ciphertextSha256": "2a443510ab94d3dfd75fec57d2e462ab91dead64147a5027361c75ec37fbe9e7" + } + } + ] +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/mod.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/mod.rs new file mode 100644 index 000000000..ea67efdab --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/mod.rs @@ -0,0 +1,50 @@ +//! Native-only encrypted sync wire protocol. Never expose these secret-bearing +//! types through UI status/events. Scheduling, persistence and restore belong to +//! the caller; this module never retries a write or applies a downloaded document. + +pub(crate) mod crypto; +pub(crate) mod transport; +pub mod types; + +pub(crate) type Result = std::result::Result; + +/// Only fixed diagnostic text and validated protocol codes may cross this boundary. +/// In particular, no reqwest/serde error, server message, token or payload is kept. +#[derive(Debug, thiserror::Error)] +pub(crate) enum Error { + #[error("invalid encrypted sync endpoint")] + InvalidEndpoint, + #[error("invalid encrypted sync response: {0}")] + InvalidResponse(&'static str), + #[error("invalid encrypted sync data: {0}")] + InvalidWire(&'static str), + #[error("encrypted sync transport failed; a write may have committed")] + Transport, + #[error("encrypted sync payload exceeds the protocol limit")] + PayloadTooLarge, + #[error("encrypted sync account does not match")] + AccountMismatch, + #[error("encrypted sync version or key context does not match")] + ContextMismatch, + #[error("unsupported encrypted sync protocol")] + UnsupportedProtocol, + #[error("unsupported encrypted document version")] + UnsupportedDocumentVersion, + #[error("encryption password does not meet the local password policy")] + WeakPassword, + #[error("normalized encryption passwords do not match")] + PasswordConfirmationMismatch, + #[error("invalid encryption password or ciphertext")] + InvalidPasswordOrCiphertext, + #[error("secure random source unavailable")] + RandomUnavailable, + #[error("encrypted sync revision exhausted")] + RevisionExhausted, + #[error("encrypted sync service rejected the request ({status}, {code})")] + Api { + status: u16, + code: types::RemoteErrorCode, + retry_after_seconds: Option, + current_revision: Option, + }, +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/transport.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/transport.rs new file mode 100644 index 000000000..85f21bcb1 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/transport.rs @@ -0,0 +1,2365 @@ +//! Bounded HTTPS transport for the encrypted sync v1 wire contract. +//! +//! A transport is usable only after its capabilities have been checked against +//! the native application's configured OAuth client ID. Mutations are prepared +//! before sending: cancellation, a network failure, or an invalid response must +//! leave that same prepared operation available for reconciliation or retry. + +use std::{borrow::Cow, fmt, sync::Arc, time::Duration}; + +use reqwest::{ + header::{ + HeaderMap, HeaderValue, ACCEPT, ACCEPT_ENCODING, AUTHORIZATION, CACHE_CONTROL, + CONTENT_ENCODING, CONTENT_LENGTH, CONTENT_TYPE, ETAG, IF_MATCH, IF_NONE_MATCH, RETRY_AFTER, + }, + Client, Method, RequestBuilder, Response, StatusCode, +}; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use url::Url; +use zeroize::Zeroizing; + +use super::{ + types::{ + parse_wire, AuthSession, Capabilities, DeleteVaultRequest, ErrorEnvelope, GithubId, + OperationKind, OperationPending, OperationReceipt, RemoteErrorCode, Revision, Sha256Digest, + SnapshotUpload, StrongEtag, UploadKind, UuidV4, Validate, VaultMetadata, VaultState, + CONTROL_BODY_LIMIT, HTTP_BODY_LIMIT, PROTOCOL_VERSION, + }, + Error, Result, +}; + +const CONNECT_TIMEOUT: Duration = Duration::from_secs(10); +const REQUEST_TIMEOUT: Duration = Duration::from_secs(60); +const IDEMPOTENCY_KEY: &str = "idempotency-key"; +const IDEMPOTENCY_REPLAYED: &str = "idempotency-replayed"; +// A valid JSON request stored as a JSON string needs at most twice its original +// bytes for escaping. The headroom covers the fixed metadata and bounded origin. +const PENDING_RECORD_LIMIT: usize = HTTP_BODY_LIMIT * 2 + CONTROL_BODY_LIMIT; +const PENDING_ORIGIN_LIMIT: usize = 2048; + +/// One captured Core setting and the effective routing decision for this origin. +/// Loopback stays direct even when the captured setting allows system proxies. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub(crate) struct ProxyPolicy { + use_system_proxy: bool, + bypass_proxy: bool, +} + +impl ProxyPolicy { + pub(crate) fn for_origin(origin: &str, use_system_proxy: bool) -> Self { + Self { + use_system_proxy, + bypass_proxy: crate::net::should_bypass_proxy(origin, use_system_proxy), + } + } + + fn apply(self, builder: reqwest::ClientBuilder) -> reqwest::ClientBuilder { + if self.bypass_proxy { + builder.no_proxy() + } else { + builder + } + } +} + +/// No caller-supplied HTTP client can weaken the transport's TLS or redirect policy. +#[derive(Clone)] +pub(crate) struct Transport { + origin: Url, + client: Client, + capabilities: Arc, + proxy_policy: ProxyPolicy, +} + +impl fmt::Debug for Transport { + fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { + formatter.debug_struct("Transport").finish_non_exhaustive() + } +} + +/// Native-only, origin-bound credentials; never serialize this into a UI result. +pub(crate) struct SyncSession { + origin: Url, + session: AuthSession, +} + +impl fmt::Debug for SyncSession { + fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { + formatter + .debug_struct("SyncSession") + .finish_non_exhaustive() + } +} + +impl SyncSession { + pub(crate) fn account(&self) -> &super::types::Account { + &self.session.account + } + + pub(crate) fn account_id(&self) -> &GithubId { + &self.session.account.github_id + } + + pub(crate) fn expires_in(&self) -> u32 { + self.session.expires_in + } +} + +/// A metadata representation and its opaque ETag, bound to one service origin. +#[derive(Clone, Debug)] +pub(crate) struct Metadata { + origin: Url, + value: VaultMetadata, + etag: StrongEtag, +} + +impl Metadata { + pub(crate) fn value(&self) -> &VaultMetadata { + &self.value + } + + #[cfg(test)] + pub(crate) fn etag(&self) -> &StrongEtag { + &self.etag + } +} + +#[derive(Debug)] +pub(crate) enum MetadataResult { + Modified(Box), + /// The caller retains the same account's supplied cached metadata. + NotModified, +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +enum MutationMethod { + Upload, + Delete, +} + +impl MutationMethod { + fn http_method(self) -> Method { + match self { + Self::Upload => Method::PUT, + Self::Delete => Method::DELETE, + } + } + + fn path(self) -> &'static str { + match self { + Self::Upload => "/v1/me/vault/snapshot", + Self::Delete => "/v1/me/vault", + } + } + + fn body_limit(self) -> usize { + match self { + Self::Upload => HTTP_BODY_LIMIT, + Self::Delete => CONTROL_BODY_LIMIT, + } + } +} + +/// Local persistence envelope, never an HTTP request. Cow borrows the original +/// bytes when exporting; deserialization deliberately owns every string. +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct PendingRecord<'a> { + record_version: u32, + origin: Cow<'a, str>, + owner_github_id: GithubId, + method: MutationMethod, + body: Cow<'a, str>, + if_match: Cow<'a, str>, + operation_id: UuidV4, +} + +impl Validate for PendingRecord<'_> { + fn validate(&self) -> Result<()> { + if self.record_version != 1 { + return Err(Error::InvalidWire("pending record version")); + } + if self.origin.len() > PENDING_ORIGIN_LIMIT || self.body.len() > self.method.body_limit() { + return Err(Error::PayloadTooLarge); + } + StrongEtag::parse(&self.if_match)?; + Ok(()) + } +} + +/// Immutable retry material. Retain it before starting a mutation; durable +/// pending-operation storage belongs to the native sync coordinator. +/// +/// Never regenerate ciphertext, an operation ID, or an If-Match value because a +/// request timed out. A missing receipt also does not prove a write failed. +#[derive(Clone)] +pub(crate) struct PreparedOperation { + origin: Url, + owner: GithubId, + method: MutationMethod, + body: Vec, + if_match: StrongEtag, + operation_id: UuidV4, + expected_kind: OperationKind, + expected_revision: Revision, + expected_vault: UuidV4, + expected_sha256: Option, +} + +impl fmt::Debug for PreparedOperation { + fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { + formatter + .debug_struct("PreparedOperation") + .field("method", &self.method) + .field("body_bytes", &self.body.len()) + .finish_non_exhaustive() + } +} + +impl PreparedOperation { + #[cfg(test)] + pub(crate) fn body_bytes(&self) -> &[u8] { + &self.body + } + + #[cfg(test)] + pub(crate) fn if_match(&self) -> &StrongEtag { + &self.if_match + } + + pub(crate) fn operation_id(&self) -> &UuidV4 { + &self.operation_id + } + + /// Export retry material without credentials, filesystem access or network + /// access. The native coordinator owns durable storage and its lifecycle. + /// Body bytes are kept verbatim, including JSON whitespace and key ordering. + pub(crate) fn to_pending_record(&self) -> Result> { + let body = std::str::from_utf8(&self.body) + .map_err(|_| Error::InvalidWire("pending request encoding"))?; + let record = PendingRecord { + record_version: 1, + origin: Cow::Borrowed(self.origin.as_str()), + owner_github_id: self.owner.clone(), + method: self.method, + body: Cow::Borrowed(body), + if_match: Cow::Borrowed(self.if_match.as_str()), + operation_id: self.operation_id.clone(), + }; + record.validate()?; + serialize_body(&record, PENDING_RECORD_LIMIT) + } + + fn validate_receipt(&self, receipt: &OperationReceipt) -> Result<()> { + receipt.validate()?; + if receipt.operation_id != self.operation_id + || receipt.kind != self.expected_kind + || receipt.committed_revision != self.expected_revision + || receipt.vault_id != self.expected_vault + || receipt.ciphertext_sha256 != self.expected_sha256 + { + return Err(Error::InvalidResponse("receipt does not match operation")); + } + Ok(()) + } +} + +#[derive(Debug)] +pub(crate) struct MutationReceipt { + pub(crate) receipt: OperationReceipt, + /// This confirms an earlier commit, never that its revision is still current. + pub(crate) replayed: bool, +} + +#[derive(Debug)] +pub(crate) enum OperationStatus { + Committed(OperationReceipt), + Pending(OperationPending), + /// Keep the original operation. It may still be in flight or have expired + /// from the server's receipt retention window. + NotFound, +} + +impl Transport { + /// Check capabilities without credentials before allowing authentication. + pub(crate) async fn new( + origin: &str, + expected_github_client_id: &str, + proxy_policy: ProxyPolicy, + ) -> Result { + let origin = parse_origin(origin, false)?; + let proxy_policy = ProxyPolicy::for_origin(origin.as_str(), proxy_policy.use_system_proxy); + let client = client_builder(proxy_policy) + .https_only(true) + .build() + .map_err(|_| Error::Transport)?; + Self::check_capabilities(origin, client, expected_github_client_id, proxy_policy).await + } + + async fn check_capabilities( + origin: Url, + client: Client, + expected_github_client_id: &str, + proxy_policy: ProxyPolicy, + ) -> Result { + if expected_github_client_id.is_empty() + || expected_github_client_id.len() > 128 + || !expected_github_client_id + .bytes() + .all(|byte| byte.is_ascii_graphic()) + { + return Err(Error::InvalidEndpoint); + } + let mut endpoint = origin.clone(); + endpoint.set_path("/v1/capabilities"); + let response = send(client.get(endpoint).header(ACCEPT, "application/json")).await?; + let capabilities: Capabilities = success_json(response, CONTROL_BODY_LIMIT).await?; + if capabilities.github_client_id != expected_github_client_id { + return Err(Error::InvalidResponse("OAuth application mismatch")); + } + Ok(Self { + origin, + client, + capabilities: Arc::new(capabilities), + proxy_policy, + }) + } + + pub(crate) fn capabilities(&self) -> &Capabilities { + &self.capabilities + } + + pub(crate) fn proxy_policy(&self) -> ProxyPolicy { + self.proxy_policy + } + + /// Canonical HTTPS origin for native secure-store/journal scope binding. + pub(crate) fn service_origin(&self) -> &str { + self.origin.as_str() + } + + pub(crate) async fn exchange( + &self, + github_token: &str, + expected_account: &GithubId, + ) -> Result { + let response = send( + self.request(Method::POST, "/v1/auth/github") + .header(AUTHORIZATION, bearer_header(github_token)?), + ) + .await?; + let session: AuthSession = success_json(response, CONTROL_BODY_LIMIT).await?; + if &session.account.github_id != expected_account { + return Err(Error::AccountMismatch); + } + Ok(SyncSession { + origin: self.origin.clone(), + session, + }) + } + + /// Consume the local credential even when remote logout fails. A validated + /// 401 means the credential is already unusable and is treated as logged out. + pub(crate) async fn revoke_session(&self, session: SyncSession) -> Result<()> { + let response = + send(self.authenticated_request(&session, Method::DELETE, "/v1/auth/session")?).await?; + if response.status() == StatusCode::NO_CONTENT { + return empty_response(response).await; + } + let error = api_error(response).await; + match error { + Error::Api { + status: 401, + code: RemoteErrorCode::Unauthenticated | RemoteErrorCode::SessionExpired, + .. + } => Ok(()), + error => Err(error), + } + } + + pub(crate) async fn metadata( + &self, + session: &SyncSession, + cached: Option<&Metadata>, + ) -> Result { + let mut request = self.authenticated_request(session, Method::GET, "/v1/me/vault")?; + if let Some(metadata) = cached { + self.check_metadata(session, metadata)?; + request = request.header(IF_NONE_MATCH, metadata.etag.as_str()); + } + let response = send(request).await?; + if response.status() == StatusCode::NOT_MODIFIED { + let metadata = + cached.ok_or(Error::InvalidResponse("unsolicited not-modified response"))?; + if response_etag(response.headers())? != metadata.etag { + return Err(Error::InvalidResponse("not-modified ETag mismatch")); + } + empty_response(response).await?; + return Ok(MetadataResult::NotModified); + } + // This route always represents empty/deleted state with a 200 DTO. + if response.status() == StatusCode::NOT_FOUND { + return Err(Error::InvalidResponse("metadata route unavailable")); + } + if response.status() != StatusCode::OK { + return Err(api_error(response).await); + } + let etag = response_etag(response.headers())?; + let value: VaultMetadata = response_json(response, CONTROL_BODY_LIMIT).await?; + if &value.owner_github_id != session.account_id() { + return Err(Error::AccountMismatch); + } + Ok(MetadataResult::Modified(Box::new(Metadata { + origin: self.origin.clone(), + value, + etag, + }))) + } + + pub(crate) async fn snapshot( + &self, + session: &SyncSession, + metadata: &Metadata, + ) -> Result { + self.check_metadata(session, metadata)?; + if metadata.value.state != VaultState::Active { + return Err(Error::ContextMismatch); + } + let response = send( + self.authenticated_request(session, Method::GET, "/v1/me/vault/snapshot")? + .header(IF_MATCH, metadata.etag.as_str()), + ) + .await?; + if response.status() != StatusCode::OK { + return Err(api_error(response).await); + } + if response_etag(response.headers())? != metadata.etag { + return Err(Error::InvalidResponse("snapshot ETag mismatch")); + } + let snapshot: SnapshotUpload = response_json(response, HTTP_BODY_LIMIT).await?; + snapshot.validate_against_metadata(&metadata.value, session.account_id())?; + Ok(snapshot) + } + + /// Active uploads also require their downloaded predecessor, because metadata + /// deliberately does not expose the KDF salt that must stay in its key epoch. + pub(crate) fn prepare_upload( + &self, + session: &SyncSession, + metadata: &Metadata, + upload: &SnapshotUpload, + previous_snapshot: Option<&SnapshotUpload>, + ) -> Result { + self.check_metadata(session, metadata)?; + upload.validate()?; + if &upload.owner_github_id != session.account_id() { + return Err(Error::AccountMismatch); + } + if upload.base_revision != metadata.value.revision + || upload.revision != metadata.value.revision.checked_next()? + || metadata.value.last_operation_id.as_ref() == Some(&upload.operation_id) + { + return Err(Error::ContextMismatch); + } + let expected_kind = match upload.kind { + UploadKind::Create => { + if metadata.value.state == VaultState::Active + || metadata.value.vault_id.as_ref() == Some(&upload.vault_id) + || previous_snapshot.is_some() + { + return Err(Error::ContextMismatch); + } + OperationKind::Create + } + UploadKind::Snapshot | UploadKind::PasswordChange => { + let previous = previous_snapshot.ok_or(Error::ContextMismatch)?; + previous.validate_against_metadata(&metadata.value, session.account_id())?; + if upload.vault_id != previous.vault_id + || upload.operation_id == previous.operation_id + || upload.nonce == previous.nonce + { + return Err(Error::ContextMismatch); + } + let same_key = upload.key_id == previous.key_id; + let same_salt = upload.kdf.salt == previous.kdf.salt; + if (upload.kind == UploadKind::Snapshot && (!same_key || !same_salt)) + || (upload.kind == UploadKind::PasswordChange && (same_key || same_salt)) + { + return Err(Error::ContextMismatch); + } + OperationKind::from(upload.kind) + } + }; + let body = serialize_body(upload, HTTP_BODY_LIMIT)?; + Ok(PreparedOperation { + origin: self.origin.clone(), + owner: session.account_id().clone(), + method: MutationMethod::Upload, + body, + if_match: metadata.etag.clone(), + operation_id: upload.operation_id.clone(), + expected_kind, + expected_revision: upload.revision, + expected_vault: upload.vault_id.clone(), + expected_sha256: Some(upload.ciphertext_sha256.clone()), + }) + } + + pub(crate) fn prepare_delete( + &self, + session: &SyncSession, + metadata: &Metadata, + operation_id: UuidV4, + ) -> Result { + self.check_metadata(session, metadata)?; + if metadata.value.state != VaultState::Active + || metadata.value.last_operation_id.as_ref() == Some(&operation_id) + { + return Err(Error::ContextMismatch); + } + let vault_id = metadata + .value + .vault_id + .clone() + .ok_or(Error::ContextMismatch)?; + let expected_revision = metadata.value.revision.checked_next()?; + let request = DeleteVaultRequest { + protocol_version: PROTOCOL_VERSION, + base_revision: metadata.value.revision, + operation_id: operation_id.clone(), + expected_vault_id: vault_id.clone(), + }; + request.validate()?; + Ok(PreparedOperation { + origin: self.origin.clone(), + owner: session.account_id().clone(), + method: MutationMethod::Delete, + body: serialize_body(&request, CONTROL_BODY_LIMIT)?, + if_match: metadata.etag.clone(), + operation_id, + expected_kind: OperationKind::Delete, + expected_revision, + expected_vault: vault_id, + expected_sha256: None, + }) + } + + /// Recover an already prepared operation after a restart. This performs only + /// local validation: current metadata must not replace the original CAS + /// precondition, and receipt retention/reconciliation belongs to the caller. + /// Expected receipt fields are derived from the validated original body. + pub(crate) fn restore_pending( + &self, + session: &SyncSession, + bytes: &[u8], + ) -> Result { + self.check_session(session)?; + let record: PendingRecord<'static> = parse_wire(bytes, PENDING_RECORD_LIMIT)?; + // The HTTP exception is compiled exclusively for the loopback unit tests; + // production records must have an HTTPS origin just like Transport::new. + let origin = parse_origin(&record.origin, cfg!(test))?; + if origin != self.origin { + return Err(Error::ContextMismatch); + } + if &record.owner_github_id != session.account_id() { + return Err(Error::AccountMismatch); + } + let if_match = StrongEtag::parse(&record.if_match)?; + let (expected_kind, expected_revision, expected_vault, expected_sha256) = match record + .method + { + MutationMethod::Upload => { + let upload: SnapshotUpload = parse_wire(record.body.as_bytes(), HTTP_BODY_LIMIT)?; + if &upload.owner_github_id != session.account_id() { + return Err(Error::AccountMismatch); + } + if upload.operation_id != record.operation_id { + return Err(Error::ContextMismatch); + } + if upload.kind != UploadKind::Create && upload.base_revision.get() == 0 { + return Err(Error::InvalidWire("pending upload revision")); + } + ( + OperationKind::from(upload.kind), + upload.revision, + upload.vault_id, + Some(upload.ciphertext_sha256), + ) + } + MutationMethod::Delete => { + let request: DeleteVaultRequest = + parse_wire(record.body.as_bytes(), CONTROL_BODY_LIMIT)?; + if request.operation_id != record.operation_id { + return Err(Error::ContextMismatch); + } + ( + OperationKind::Delete, + request.base_revision.checked_next()?, + request.expected_vault_id, + None, + ) + } + }; + Ok(PreparedOperation { + origin, + owner: record.owner_github_id, + method: record.method, + body: record.body.into_owned().into_bytes(), + if_match, + operation_id: record.operation_id, + expected_kind, + expected_revision, + expected_vault, + expected_sha256, + }) + } + + /// Every error (including cancellation) leaves the borrowed operation intact. + /// The caller must reconcile it, never infer from an error that no commit occurred. + pub(crate) async fn submit( + &self, + session: &SyncSession, + operation: &PreparedOperation, + ) -> Result { + self.check_operation(session, operation)?; + let response = send( + self.authenticated_request( + session, + operation.method.http_method(), + operation.method.path(), + )? + .header(CONTENT_TYPE, "application/json") + .header(IF_MATCH, operation.if_match.as_str()) + .header(IDEMPOTENCY_KEY, operation.operation_id.as_str()) + .body(operation.body.clone()), + ) + .await?; + if response.status() != StatusCode::OK { + return Err(api_error(response).await); + } + let replayed = match single_header(response.headers(), IDEMPOTENCY_REPLAYED)? { + "true" => true, + "false" => false, + _ => return Err(Error::InvalidResponse("invalid replay header")), + }; + let receipt: OperationReceipt = response_json(response, CONTROL_BODY_LIMIT).await?; + operation.validate_receipt(&receipt)?; + Ok(MutationReceipt { receipt, replayed }) + } + + pub(crate) async fn operation( + &self, + session: &SyncSession, + operation: &PreparedOperation, + ) -> Result { + self.check_operation(session, operation)?; + let path = format!("/v1/me/operations/{}", operation.operation_id); + let response = send(self.authenticated_request(session, Method::GET, &path)?).await?; + match response.status() { + StatusCode::OK => { + let receipt: OperationReceipt = response_json(response, CONTROL_BODY_LIMIT).await?; + operation.validate_receipt(&receipt)?; + Ok(OperationStatus::Committed(receipt)) + } + StatusCode::ACCEPTED => { + let pending: OperationPending = response_json(response, CONTROL_BODY_LIMIT).await?; + if pending.operation_id != operation.operation_id { + return Err(Error::InvalidResponse("pending operation mismatch")); + } + Ok(OperationStatus::Pending(pending)) + } + _ => match api_error(response).await { + Error::Api { + status: 404, + code: RemoteErrorCode::OperationNotFound, + .. + } => Ok(OperationStatus::NotFound), + error => Err(error), + }, + } + } + + fn request(&self, method: Method, path: &str) -> RequestBuilder { + let mut endpoint = self.origin.clone(); + endpoint.set_path(path); + self.client + .request(method, endpoint) + .header(ACCEPT, "application/json") + } + + fn authenticated_request( + &self, + session: &SyncSession, + method: Method, + path: &str, + ) -> Result { + self.check_session(session)?; + Ok(self.request(method, path).header( + AUTHORIZATION, + bearer_header(session.session.access_token.expose())?, + )) + } + + fn check_session(&self, session: &SyncSession) -> Result<()> { + if session.origin != self.origin { + return Err(Error::ContextMismatch); + } + session.session.validate() + } + + fn check_metadata(&self, session: &SyncSession, metadata: &Metadata) -> Result<()> { + self.check_session(session)?; + if metadata.origin != self.origin { + return Err(Error::ContextMismatch); + } + if &metadata.value.owner_github_id != session.account_id() { + return Err(Error::AccountMismatch); + } + metadata.value.validate() + } + + fn check_operation(&self, session: &SyncSession, operation: &PreparedOperation) -> Result<()> { + self.check_session(session)?; + if operation.origin != self.origin { + return Err(Error::ContextMismatch); + } + if &operation.owner != session.account_id() { + return Err(Error::AccountMismatch); + } + Ok(()) + } + + /// Loopback HTTP exists only in unit tests, with the same redirect and body policy. + #[cfg(test)] + pub(crate) async fn for_test(origin: &str, expected_client_id: &str) -> Result { + Self::for_test_with_proxy_policy( + origin, + expected_client_id, + ProxyPolicy::for_origin(origin, false), + ) + .await + } + + #[cfg(test)] + pub(crate) async fn for_test_with_proxy_policy( + origin: &str, + expected_client_id: &str, + proxy_policy: ProxyPolicy, + ) -> Result { + let origin = parse_origin(origin, true)?; + let proxy_policy = ProxyPolicy::for_origin(origin.as_str(), proxy_policy.use_system_proxy); + let client = client_builder(proxy_policy) + .build() + .map_err(|_| Error::Transport)?; + Self::check_capabilities(origin, client, expected_client_id, proxy_policy).await + } +} + +fn client_builder(proxy_policy: ProxyPolicy) -> reqwest::ClientBuilder { + let mut headers = HeaderMap::new(); + headers.insert(ACCEPT_ENCODING, HeaderValue::from_static("identity")); + proxy_policy.apply( + Client::builder() + .redirect(reqwest::redirect::Policy::none()) + .referer(false) + .connect_timeout(CONNECT_TIMEOUT) + .timeout(REQUEST_TIMEOUT) + // Keep byte limits meaningful even if another workspace dependency enables + // reqwest compression features through Cargo feature unification. + .no_gzip() + .no_brotli() + .no_deflate() + .no_zstd() + .default_headers(headers), + ) +} + +fn parse_origin(input: &str, test_loopback: bool) -> Result { + if input.chars().any(char::is_whitespace) { + return Err(Error::InvalidEndpoint); + } + let url = Url::parse(input).map_err(|_| Error::InvalidEndpoint)?; + let https = url.scheme() == "https"; + let loopback = cfg!(test) + && test_loopback + && url.scheme() == "http" + && url.host_str() == Some("127.0.0.1"); + if (!https && !loopback) + || url.host_str().is_none() + || !url.username().is_empty() + || url.password().is_some() + || url.path() != "/" + || url.query().is_some() + || url.fragment().is_some() + { + return Err(Error::InvalidEndpoint); + } + Ok(url) +} + +fn bearer_header(token: &str) -> Result { + if token.is_empty() || token.len() > 2048 || !token.bytes().all(|byte| byte.is_ascii_graphic()) + { + return Err(Error::InvalidWire("invalid token")); + } + let value = Zeroizing::new(format!("Bearer {token}")); + let mut header = + HeaderValue::from_str(&value).map_err(|_| Error::InvalidWire("invalid token"))?; + header.set_sensitive(true); + Ok(header) +} + +async fn send(request: RequestBuilder) -> Result { + let response = request.send().await.map_err(|_| Error::Transport)?; + if response.status().is_redirection() && response.status() != StatusCode::NOT_MODIFIED { + return Err(Error::InvalidResponse("redirect refused")); + } + Ok(response) +} + +fn single_header<'a>(headers: &'a HeaderMap, name: &str) -> Result<&'a str> { + let mut values = headers.get_all(name).iter(); + let value = values + .next() + .ok_or(Error::InvalidResponse("required header missing"))?; + if values.next().is_some() { + return Err(Error::InvalidResponse("duplicate response header")); + } + value + .to_str() + .map_err(|_| Error::InvalidResponse("invalid response header")) +} + +fn response_etag(headers: &HeaderMap) -> Result { + StrongEtag::parse(single_header(headers, ETAG.as_str())?) + .map_err(|_| Error::InvalidResponse("invalid strong ETag")) +} + +fn private_response_headers(headers: &HeaderMap, json: bool) -> Result<()> { + if !single_header(headers, CACHE_CONTROL.as_str())?.eq_ignore_ascii_case("no-store") { + return Err(Error::InvalidResponse("response must be no-store")); + } + if headers.contains_key(CONTENT_ENCODING) + && !single_header(headers, CONTENT_ENCODING.as_str())?.eq_ignore_ascii_case("identity") + { + return Err(Error::InvalidResponse("encoded response refused")); + } + if json { + let value = single_header(headers, CONTENT_TYPE.as_str())?; + let mut pieces = value.split(';'); + if !pieces + .next() + .is_some_and(|value| value.trim().eq_ignore_ascii_case("application/json")) + { + return Err(Error::InvalidResponse("response must be JSON")); + } + if let Some(parameter) = pieces.next() { + let Some((key, value)) = parameter.trim().split_once('=') else { + return Err(Error::InvalidResponse("invalid JSON content type")); + }; + if !key.trim().eq_ignore_ascii_case("charset") + || !matches!( + value.trim().to_ascii_lowercase().as_str(), + "utf-8" | "\"utf-8\"" + ) + || pieces.next().is_some() + { + return Err(Error::InvalidResponse("invalid JSON content type")); + } + } + } + Ok(()) +} + +async fn bounded_body(mut response: Response, limit: usize) -> Result>> { + if response.headers().contains_key(CONTENT_LENGTH) { + let declared = single_header(response.headers(), CONTENT_LENGTH.as_str())? + .parse::() + .map_err(|_| Error::InvalidResponse("invalid content length"))?; + if declared > u64::try_from(limit).map_err(|_| Error::PayloadTooLarge)? { + return Err(Error::PayloadTooLarge); + } + } + // Control responses can contain a sync token. Reserve their bounded capacity + // once so Vec growth does not leave an older allocation containing that token. + let mut bytes = Zeroizing::new(Vec::with_capacity(limit.min(CONTROL_BODY_LIMIT))); + while let Some(chunk) = response.chunk().await.map_err(|_| Error::Transport)? { + if chunk.len() > limit.saturating_sub(bytes.len()) { + return Err(Error::PayloadTooLarge); + } + bytes.extend_from_slice(&chunk); + } + Ok(bytes) +} + +async fn response_json( + response: Response, + limit: usize, +) -> Result { + private_response_headers(response.headers(), true)?; + let body = bounded_body(response, limit).await?; + parse_wire(&body, limit) +} + +async fn success_json( + response: Response, + limit: usize, +) -> Result { + if response.status() != StatusCode::OK { + return Err(api_error(response).await); + } + response_json(response, limit).await +} + +async fn empty_response(mut response: Response) -> Result<()> { + private_response_headers(response.headers(), false)?; + // HTTP permits a 304 Content-Length to describe the full representation, + // even though the 304 itself has no body. Do not mistake it for payload. + if response.status() == StatusCode::NOT_MODIFIED { + response.headers_mut().remove(CONTENT_LENGTH); + } + let body = bounded_body(response, 0).await?; + if !body.is_empty() { + return Err(Error::InvalidResponse("unexpected response body")); + } + Ok(()) +} + +fn serialize_body(value: &T, limit: usize) -> Result> { + let body = serde_json::to_vec(value).map_err(|_| Error::InvalidWire("serialization failed"))?; + if body.len() > limit { + return Err(Error::PayloadTooLarge); + } + Ok(body) +} + +async fn api_error(response: Response) -> Error { + async fn decode(response: Response) -> Result { + let status = response.status().as_u16(); + if !(400..600).contains(&status) { + return Err(Error::InvalidResponse("unexpected response status")); + } + let retry_after_seconds = if status == 429 { + let value = single_header(response.headers(), RETRY_AFTER.as_str())?; + if value.is_empty() || !value.bytes().all(|byte| byte.is_ascii_digit()) { + return Err(Error::InvalidResponse("invalid retry delay")); + } + let seconds = value + .parse::() + .map_err(|_| Error::InvalidResponse("invalid retry delay"))?; + if !(1..=86400).contains(&seconds) { + return Err(Error::InvalidResponse("invalid retry delay")); + } + Some(seconds) + } else { + None + }; + let envelope: ErrorEnvelope = response_json(response, CONTROL_BODY_LIMIT).await?; + if !error_status_matches(envelope.error.code, status) { + return Err(Error::InvalidResponse("error code and status mismatch")); + } + Ok(Error::Api { + status, + code: envelope.error.code, + retry_after_seconds, + current_revision: envelope.error.current_revision, + }) + } + match decode(response).await { + Ok(error) | Err(error) => error, + } +} + +fn error_status_matches(code: RemoteErrorCode, status: u16) -> bool { + match code { + RemoteErrorCode::InvalidRequest + | RemoteErrorCode::UnsupportedProtocol + | RemoteErrorCode::InvalidCryptoHeader => status == 400, + RemoteErrorCode::Unauthenticated | RemoteErrorCode::SessionExpired => status == 401, + RemoteErrorCode::WrongOauthApp | RemoteErrorCode::OwnerMismatch => status == 403, + RemoteErrorCode::VaultEmpty | RemoteErrorCode::VaultDeleted => matches!(status, 404 | 409), + RemoteErrorCode::OperationNotFound => status == 404, + RemoteErrorCode::IdempotencyKeyReused + | RemoteErrorCode::KeyEpochChanged + | RemoteErrorCode::VaultExists + | RemoteErrorCode::RevisionExhausted => status == 409, + RemoteErrorCode::RevisionConflict => status == 412, + RemoteErrorCode::PayloadTooLarge => status == 413, + RemoteErrorCode::UnsupportedMediaType => status == 415, + RemoteErrorCode::PreconditionRequired => status == 428, + RemoteErrorCode::RateLimited => status == 429, + RemoteErrorCode::InternalError => status == 500, + RemoteErrorCode::ServiceUnavailable => status == 503, + } +} + +#[cfg(test)] +mod tests { + use std::collections::BTreeMap; + + use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; + use serde_json::{json, Value}; + use sha2::{Digest, Sha256}; + use tokio::{ + io::{AsyncReadExt, AsyncWriteExt}, + net::TcpListener, + task::JoinHandle, + }; + + use super::*; + + const CLIENT_ID: &str = "test-openless-oauth-app"; + const OWNER: &str = "12345"; + const VAULT: &str = "be406ca5-37fa-4b26-9a9a-74c1aad48eae"; + const KEY: &str = "2b1889ab-7278-48e7-8d2f-284195de2484"; + const OLD_OPERATION: &str = "e1d8c32e-d209-4e56-8735-bc66b8684c71"; + const NEW_OPERATION: &str = "f1d8c32e-d209-4e56-8735-bc66b8684c71"; + + struct Reply { + status: &'static str, + headers: Vec<(String, String)>, + body: Vec, + chunked: bool, + disconnect: bool, + } + + impl Reply { + fn json(status: &'static str, value: Value) -> Self { + Self::raw(status, serde_json::to_vec(&value).unwrap()) + } + + fn raw(status: &'static str, body: Vec) -> Self { + Self { + status, + headers: vec![ + ("Cache-Control".into(), "no-store".into()), + ("Content-Type".into(), "application/json".into()), + ], + body, + chunked: false, + disconnect: false, + } + } + + fn header(mut self, key: &str, value: &str) -> Self { + self.headers + .retain(|(name, _)| !name.eq_ignore_ascii_case(key)); + self.headers.push((key.into(), value.into())); + self + } + + fn without_header(mut self, key: &str) -> Self { + self.headers + .retain(|(name, _)| !name.eq_ignore_ascii_case(key)); + self + } + + fn chunked(mut self) -> Self { + self.chunked = true; + self + } + + fn disconnect() -> Self { + let mut reply = Self::raw("200 OK", Vec::new()); + reply.disconnect = true; + reply + } + } + + #[derive(Debug)] + struct RecordedRequest { + method: String, + path: String, + headers: BTreeMap, + body: Vec, + } + + struct FakeServer { + origin: String, + task: Option>>, + } + + impl Drop for FakeServer { + fn drop(&mut self) { + if let Some(task) = &self.task { + task.abort(); + } + } + } + + impl FakeServer { + async fn start(replies: Vec) -> Self { + let listener = TcpListener::bind("127.0.0.1:0").await.unwrap(); + let origin = format!("http://{}", listener.local_addr().unwrap()); + let task = tokio::spawn(async move { + let mut requests = Vec::new(); + for reply in replies { + let (mut socket, _) = listener.accept().await.unwrap(); + let mut wire = Vec::new(); + let mut buffer = [0_u8; 8192]; + let header_end = loop { + let size = socket.read(&mut buffer).await.unwrap(); + assert_ne!(size, 0, "request closed before headers"); + wire.extend_from_slice(&buffer[..size]); + if let Some(index) = wire.windows(4).position(|part| part == b"\r\n\r\n") { + break index + 4; + } + }; + let head = std::str::from_utf8(&wire[..header_end]).unwrap(); + let mut lines = head.split("\r\n"); + let mut request_line = lines.next().unwrap().split_whitespace(); + let method = request_line.next().unwrap().to_owned(); + let path = request_line.next().unwrap().to_owned(); + let headers: BTreeMap = lines + .filter_map(|line| line.split_once(':')) + .map(|(name, value)| (name.to_ascii_lowercase(), value.trim().to_owned())) + .collect(); + let body_size = headers + .get("content-length") + .map_or(0, |value| value.parse::().unwrap()); + while wire.len() < header_end + body_size { + let size = socket.read(&mut buffer).await.unwrap(); + assert_ne!(size, 0, "request closed before body"); + wire.extend_from_slice(&buffer[..size]); + } + requests.push(RecordedRequest { + method, + path, + headers, + body: wire[header_end..header_end + body_size].to_vec(), + }); + if reply.disconnect { + continue; + } + let mut response = + format!("HTTP/1.1 {}\r\nConnection: close\r\n", reply.status); + for (key, value) in &reply.headers { + response.push_str(&format!("{key}: {value}\r\n")); + } + if reply.chunked { + response.push_str("Transfer-Encoding: chunked\r\n"); + } else if !reply + .headers + .iter() + .any(|(name, _)| name.eq_ignore_ascii_case("Content-Length")) + { + response.push_str(&format!("Content-Length: {}\r\n", reply.body.len())); + } + response.push_str("\r\n"); + if socket.write_all(response.as_bytes()).await.is_err() { + continue; + } + if reply.chunked { + for chunk in reply.body.chunks(4096) { + if socket + .write_all(format!("{:x}\r\n", chunk.len()).as_bytes()) + .await + .is_err() + || socket.write_all(chunk).await.is_err() + || socket.write_all(b"\r\n").await.is_err() + { + break; + } + } + let _ = socket.write_all(b"0\r\n\r\n").await; + } else { + let _ = socket.write_all(&reply.body).await; + } + } + requests + }); + Self { + origin, + task: Some(task), + } + } + + async fn finish(mut self) -> Vec { + let mut task = self.task.take().unwrap(); + match tokio::time::timeout(Duration::from_secs(5), &mut task).await { + Ok(result) => result.unwrap(), + Err(_) => { + task.abort(); + panic!("fake HTTP server did not receive all expected requests"); + } + } + } + } + + fn capabilities() -> Value { + json!({ + "protocolVersion": 1, + "cryptoProfile": "argon2id-xchacha20poly1305-v1", + "githubClientId": CLIENT_ID, + "maxHttpBodyBytes": 25165824, + "maxCiphertextBytes": 16777232, + "maxPlaintextJsonBytes": 15728640, + "idempotencyRetentionSeconds": 604800, + "maxBackupRetentionDays": 30 + }) + } + + fn caps_reply() -> Reply { + Reply::json("200 OK", capabilities()) + } + + fn auth(owner: &str, token_character: char) -> Value { + json!({ + "protocolVersion": 1, + "accessToken": token_character.to_string().repeat(43), + "tokenType": "Bearer", + "expiresIn": 900, + "account": { "githubId": owner, "login": "fixture-user" } + }) + } + + fn empty_metadata() -> Value { + json!({ + "protocolVersion": 1, "state": "empty", "ownerGithubId": OWNER, + "revision": "0", "vaultId": null, "keyId": null, "updatedAt": null, + "payloadSchemaVersion": null, "ciphertextBytes": 0, + "ciphertextSha256": null, "lastOperationId": null + }) + } + + fn snapshot() -> Value { + let ciphertext = vec![0_u8; 65552]; + json!({ + "protocolVersion": 1, "payloadSchemaVersion": 1, "ownerGithubId": OWNER, + "vaultId": VAULT, "keyId": KEY, "baseRevision": "7", "revision": "8", + "operationId": OLD_OPERATION, "kind": "snapshot", + "cryptoProfile": "argon2id-xchacha20poly1305-v1", + "kdf": { "name": "argon2id", "version": 19, "memoryKiB": 65536, + "iterations": 3, "parallelism": 4, "salt": URL_SAFE_NO_PAD.encode([0_u8; 16]) }, + "aead": "xchacha20poly1305-ietf", "codec": "json-pad64k-v1", + "nonce": URL_SAFE_NO_PAD.encode([0_u8; 24]), + "ciphertextSha256": format!("{:x}", Sha256::digest(&ciphertext)), + "ciphertext": URL_SAFE_NO_PAD.encode(ciphertext) + }) + } + + fn active_metadata() -> Value { + json!({ + "protocolVersion": 1, "state": "active", "ownerGithubId": OWNER, + "revision": "8", "vaultId": VAULT, "keyId": KEY, + "updatedAt": "2026-09-23T12:00:00Z", "payloadSchemaVersion": 1, + "ciphertextBytes": 65552, "ciphertextSha256": snapshot()["ciphertextSha256"], + "lastOperationId": OLD_OPERATION + }) + } + + fn next_snapshot() -> Value { + let mut upload = snapshot(); + upload["baseRevision"] = json!("8"); + upload["revision"] = json!("9"); + upload["operationId"] = json!(NEW_OPERATION); + upload["nonce"] = json!(URL_SAFE_NO_PAD.encode([1_u8; 24])); + upload + } + + fn receipt(kind: &str) -> Value { + json!({ + "operationId": NEW_OPERATION, "status": "committed", "kind": kind, + "committedRevision": "9", "committedAt": "2026-09-23T12:00:00Z", "vaultId": VAULT, + "ciphertextSha256": if kind == "delete" { Value::Null } else { snapshot()["ciphertextSha256"].clone() } + }) + } + + fn error_envelope(code: &str) -> Value { + json!({ "error": { "code": code, "message": "fixture error", "requestId": OLD_OPERATION } }) + } + + fn typed(value: &Value) -> T { + parse_wire(&serde_json::to_vec(value).unwrap(), HTTP_BODY_LIMIT).unwrap() + } + + fn session(transport: &Transport, owner: &str) -> SyncSession { + SyncSession { + origin: transport.origin.clone(), + session: typed(&auth(owner, 'a')), + } + } + + fn metadata(transport: &Transport, value: Value) -> Metadata { + Metadata { + origin: transport.origin.clone(), + value: typed(&value), + etag: StrongEtag::parse("\"opaque-etag-8\"").unwrap(), + } + } + + fn prepared_upload(transport: &Transport, session: &SyncSession) -> PreparedOperation { + transport + .prepare_upload( + session, + &metadata(transport, active_metadata()), + &typed(&next_snapshot()), + Some(&typed(&snapshot())), + ) + .unwrap() + } + + #[tokio::test] + async fn production_constructor_rejects_insecure_or_ambiguous_origins() { + for origin in [ + "http://127.0.0.1:9", + "ftp://sync.example", + "https://user:secret@sync.example", + "https://sync.example/path", + "https://sync.example?token=secret", + "https://sync.example/#secret", + " https://sync.example", + "https://sync.\nexample", + ] { + assert!(matches!( + Transport::new(origin, CLIENT_ID, ProxyPolicy::for_origin(origin, false)).await, + Err(Error::InvalidEndpoint) + )); + } + assert!(parse_origin("https://sync.example:9443", false).is_ok()); + assert!(parse_origin("http://example.com", true).is_err()); + } + + #[test] + fn proxy_policy_records_one_setting_and_the_origin_bypass_decision() { + let remote = "https://sync.example:9443"; + let enabled = ProxyPolicy::for_origin(remote, true); + let disabled = ProxyPolicy::for_origin(remote, false); + assert!(!enabled.bypass_proxy); + assert!(disabled.bypass_proxy); + assert_ne!(enabled, disabled); + for origin in [ + "https://localhost:9443", + "https://127.0.0.1:9443", + "https://[::1]:9443", + ] { + for setting in [false, true] { + let policy = ProxyPolicy::for_origin(origin, setting); + assert_eq!(policy.use_system_proxy, setting); + assert!(policy.bypass_proxy); + } + } + } + + #[tokio::test] + async fn loopback_transport_records_policy_without_allowing_a_proxy() { + for setting in [false, true] { + let server = FakeServer::start(vec![caps_reply()]).await; + // Even a policy derived for a public origin is normalized to the + // actual constructor endpoint before client creation and recording. + let transport = Transport::for_test_with_proxy_policy( + &server.origin, + CLIENT_ID, + ProxyPolicy::for_origin("https://sync.example", setting), + ) + .await + .unwrap(); + assert_eq!( + transport.proxy_policy(), + ProxyPolicy::for_origin(&server.origin, setting) + ); + assert!(transport.proxy_policy().bypass_proxy); + assert_eq!(server.finish().await.len(), 1); + } + } + + #[tokio::test] + async fn direct_policy_clears_explicit_proxy_without_changing_process_environment() { + for setting in [false, true] { + let direct = FakeServer::start(vec![caps_reply()]).await; + let proxy = TcpListener::bind("127.0.0.1:0").await.unwrap(); + let proxy_url = format!("http://{}", proxy.local_addr().unwrap()); + let seeded = client_builder(ProxyPolicy::for_origin("https://sync.example", true)) + .proxy(reqwest::Proxy::all(proxy_url).unwrap()); + let policy = ProxyPolicy::for_origin(&direct.origin, setting); + let response = policy + .apply(seeded) + .build() + .unwrap() + .get(format!("{}/v1/capabilities", direct.origin)) + .send() + .await + .unwrap(); + assert_eq!(response.status(), StatusCode::OK); + assert_eq!(direct.finish().await.len(), 1); + assert!( + tokio::time::timeout(Duration::from_millis(100), proxy.accept()) + .await + .is_err() + ); + } + } + + #[tokio::test] + async fn system_policy_retains_a_controlled_proxy_without_external_requests() { + let proxy = FakeServer::start(vec![caps_reply()]).await; + let direct = + FakeServer::start(vec![Reply::raw("503 Service Unavailable", Vec::new())]).await; + let address: std::net::SocketAddr = + direct.origin.trim_start_matches("http://").parse().unwrap(); + let origin = format!("http://sync.invalid:{}", address.port()); + let policy = ProxyPolicy::for_origin(&origin, true); + // Apply the production policy after seeding the controlled proxy. The + // DNS override also keeps a faulty direct branch inside this fixture. + let seeded = client_builder(ProxyPolicy::for_origin(&origin, false)) + .proxy(reqwest::Proxy::all(&proxy.origin).unwrap()) + .resolve("sync.invalid", address); + let client = policy.apply(seeded).build().unwrap(); + assert_eq!( + client + .get(format!("{origin}/v1/capabilities")) + .send() + .await + .unwrap() + .status(), + StatusCode::OK + ); + let requests = proxy.finish().await; + assert_eq!(requests[0].path, format!("{origin}/v1/capabilities")); + } + + #[tokio::test] + async fn capabilities_are_checked_before_auth_and_auth_account_is_bound() { + let server = + FakeServer::start(vec![caps_reply(), Reply::json("200 OK", auth(OWNER, 'a'))]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = transport + .exchange("github-fixture-token", &GithubId::parse(OWNER).unwrap()) + .await + .unwrap(); + assert_eq!(session.account_id().as_str(), OWNER); + assert_eq!(session.expires_in(), 900); + let requests = server.finish().await; + assert_eq!(requests[0].method, "GET"); + assert_eq!(requests[0].path, "/v1/capabilities"); + assert!(!requests[0].headers.contains_key("authorization")); + assert_eq!(requests[1].method, "POST"); + assert_eq!(requests[1].path, "/v1/auth/github"); + assert_eq!( + requests[1].headers["authorization"], + "Bearer github-fixture-token" + ); + assert!(requests[1].body.is_empty()); + assert_eq!(requests[1].headers["accept-encoding"], "identity"); + } + + #[tokio::test] + async fn wrong_oauth_capability_or_duplicate_wire_key_prevents_authentication() { + let mut wrong = capabilities(); + wrong["githubClientId"] = json!("another-app"); + let duplicate = serde_json::to_string(&capabilities()).unwrap().replacen( + '{', + "{\"protocolVersion\":1,", + 1, + ); + for reply in [ + Reply::json("200 OK", wrong), + Reply::raw("200 OK", duplicate.into_bytes()), + ] { + let server = FakeServer::start(vec![reply]).await; + assert!(Transport::for_test(&server.origin, CLIENT_ID) + .await + .is_err()); + let requests = server.finish().await; + assert_eq!(requests.len(), 1); + assert!(!requests[0].headers.contains_key("authorization")); + } + } + + #[tokio::test] + async fn rejects_auth_response_from_another_account() { + let server = + FakeServer::start(vec![caps_reply(), Reply::json("200 OK", auth("999", 'a'))]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport + .exchange("github-fixture-token", &GithubId::parse(OWNER).unwrap()) + .await, + Err(Error::AccountMismatch) + )); + server.finish().await; + } + + #[tokio::test] + async fn refuses_redirect_without_following_or_exposing_location() { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::raw("307 Temporary Redirect", b"secret body".to_vec()) + .header("Location", "http://127.0.0.1:9/leaked-token"), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let error = transport + .metadata(&session(&transport, OWNER), None) + .await + .unwrap_err(); + assert!(matches!(error, Error::InvalidResponse("redirect refused"))); + assert!(!format!("{error:?}").contains("leaked-token")); + assert_eq!(server.finish().await.len(), 2); + } + + #[tokio::test] + async fn metadata_preserves_etag_and_validates_conditional_304() { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", empty_metadata()).header("ETag", "\"opaque-zero\""), + Reply::raw("304 Not Modified", Vec::new()) + .without_header("Content-Type") + .header("Content-Length", "240") + .header("ETag", "\"opaque-zero\""), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let MetadataResult::Modified(current) = transport.metadata(&session, None).await.unwrap() + else { + panic!("expected metadata") + }; + assert_eq!(current.value().state, VaultState::Empty); + assert_eq!(current.etag().as_str(), "\"opaque-zero\""); + assert!(matches!( + transport + .metadata(&session, Some(current.as_ref())) + .await + .unwrap(), + MetadataResult::NotModified + )); + let requests = server.finish().await; + assert_eq!(requests[2].headers["if-none-match"], "\"opaque-zero\""); + } + + #[tokio::test] + async fn metadata_rejects_unbound_304_and_never_maps_404_to_empty() { + for reply in [ + Reply::raw("304 Not Modified", Vec::new()).header("ETag", "\"opaque-zero\""), + Reply::json("404 Not Found", error_envelope("vault_empty")), + Reply::json("200 OK", empty_metadata()).header("ETag", "W/\"weak\""), + ] { + let server = FakeServer::start(vec![caps_reply(), reply]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport.metadata(&session(&transport, OWNER), None).await, + Err(Error::InvalidResponse(_)) + )); + server.finish().await; + } + let server = FakeServer::start(vec![ + caps_reply(), + Reply::raw("304 Not Modified", Vec::new()).header("ETag", "\"different\""), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport + .metadata( + &session(&transport, OWNER), + Some(&metadata(&transport, active_metadata())) + ) + .await, + Err(Error::InvalidResponse(_)) + )); + server.finish().await; + } + + #[tokio::test] + async fn rejects_non_json_non_private_encoded_and_duplicate_headers() { + let mut duplicate = Reply::json("200 OK", empty_metadata()).header("ETag", "\"tag\""); + duplicate.headers.push(("ETag".into(), "\"second\"".into())); + let good = || Reply::json("200 OK", empty_metadata()).header("ETag", "\"tag\""); + for reply in [ + good().without_header("Cache-Control"), + good().header("Cache-Control", "max-age=60"), + good().header("Cache-Control", "no-store, public"), + good().header("Content-Type", "text/html"), + good().header("Content-Type", "application/json; charset=utf-16"), + good().header("Content-Encoding", "gzip"), + duplicate, + ] { + let server = FakeServer::start(vec![caps_reply(), reply]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport.metadata(&session(&transport, OWNER), None).await, + Err(Error::InvalidResponse(_)) + )); + server.finish().await; + } + } + + #[tokio::test] + async fn snapshot_is_bound_to_metadata_account_and_strong_etag() { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", snapshot()).header("ETag", "\"opaque-etag-8\""), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let downloaded = transport + .snapshot( + &session(&transport, OWNER), + &metadata(&transport, active_metadata()), + ) + .await + .unwrap(); + assert_eq!(downloaded.revision.get(), 8); + let requests = server.finish().await; + assert_eq!(requests[1].headers["if-match"], "\"opaque-etag-8\""); + for (field, value) in [ + ("ownerGithubId", json!("999")), + ("vaultId", json!(KEY)), + ("keyId", json!(VAULT)), + ("operationId", json!(NEW_OPERATION)), + ("ciphertextSha256", json!("0".repeat(64))), + ] { + let mut bad = snapshot(); + bad[field] = value; + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", bad).header("ETag", "\"opaque-etag-8\""), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(transport + .snapshot( + &session(&transport, OWNER), + &metadata(&transport, active_metadata()) + ) + .await + .is_err()); + server.finish().await; + } + } + + #[tokio::test] + async fn lost_mutation_response_can_be_retried_with_identical_bytes_after_token_renewal() { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::disconnect(), + Reply::json("200 OK", auth(OWNER, 'b')), + Reply::json("200 OK", receipt("snapshot")).header("Idempotency-Replayed", "true"), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let first_session = session(&transport, OWNER); + let operation = prepared_upload(&transport, &first_session); + let exact_bytes = operation.body_bytes().to_vec(); + assert!(matches!( + transport.submit(&first_session, &operation).await, + Err(Error::Transport) + )); + let renewed = transport + .exchange("github-fixture-token", &GithubId::parse(OWNER).unwrap()) + .await + .unwrap(); + let result = transport.submit(&renewed, &operation).await.unwrap(); + assert!(result.replayed); + assert_eq!(result.receipt.committed_revision.get(), 9); + let requests = server.finish().await; + for index in [1, 3] { + assert_eq!(requests[index].method, "PUT"); + assert_eq!(requests[index].path, "/v1/me/vault/snapshot"); + assert_eq!(requests[index].body, exact_bytes); + assert_eq!( + requests[index].headers["if-match"], + operation.if_match().as_str() + ); + assert_eq!( + requests[index].headers["idempotency-key"], + operation.operation_id().as_str() + ); + } + assert_ne!( + requests[1].headers["authorization"], + requests[3].headers["authorization"] + ); + } + + #[tokio::test] + async fn prepared_operations_cannot_cross_account_or_service_boundaries() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session_a = session(&transport, OWNER); + let operation = prepared_upload(&transport, &session_a); + let session_b = session(&transport, "999"); + assert!(matches!( + transport.submit(&session_b, &operation).await, + Err(Error::AccountMismatch) + )); + assert!(matches!( + transport + .metadata(&session_b, Some(&metadata(&transport, active_metadata()))) + .await, + Err(Error::AccountMismatch) + )); + let mut another_origin = transport.clone(); + another_origin.origin = "https://other.example/".parse().unwrap(); + assert!(matches!( + another_origin.submit(&session_a, &operation).await, + Err(Error::ContextMismatch) + )); + assert_eq!(server.finish().await.len(), 1); + } + + #[tokio::test] + async fn active_upload_checks_key_epoch_nonce_and_base_revision_before_sending() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let current = metadata(&transport, active_metadata()); + let previous = typed(&snapshot()); + assert!(transport + .prepare_upload(&session, ¤t, &typed(&next_snapshot()), None) + .is_err()); + for (field, value) in [ + ("keyId", json!(VAULT)), + ("nonce", snapshot()["nonce"].clone()), + ("vaultId", json!(KEY)), + ] { + let mut upload = next_snapshot(); + upload[field] = value; + assert!(transport + .prepare_upload(&session, ¤t, &typed(&upload), Some(&previous)) + .is_err()); + } + let mut wrong_salt = next_snapshot(); + wrong_salt["kdf"]["salt"] = json!(URL_SAFE_NO_PAD.encode([1_u8; 16])); + assert!(transport + .prepare_upload(&session, ¤t, &typed(&wrong_salt), Some(&previous)) + .is_err()); + let mut changed = next_snapshot(); + changed["kind"] = json!("password_change"); + assert!(transport + .prepare_upload(&session, ¤t, &typed(&changed), Some(&previous)) + .is_err()); + changed["keyId"] = json!(VAULT); + changed["kdf"]["salt"] = json!(URL_SAFE_NO_PAD.encode([1_u8; 16])); + assert!(transport + .prepare_upload(&session, ¤t, &typed(&changed), Some(&previous)) + .is_ok()); + let mut create = snapshot(); + create["kind"] = json!("create"); + create["baseRevision"] = json!("0"); + create["revision"] = json!("1"); + assert!(transport + .prepare_upload( + &session, + &metadata(&transport, empty_metadata()), + &typed(&create), + None + ) + .is_ok()); + server.finish().await; + } + + #[tokio::test] + async fn delete_and_receipt_reconciliation_preserve_the_original_operation() { + let pending = + json!({"operationId":NEW_OPERATION,"status":"pending","retryAfterSeconds":30}); + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", receipt("delete")).header("Idempotency-Replayed", "false"), + Reply::json("202 Accepted", pending), + Reply::json("404 Not Found", error_envelope("operation_not_found")), + Reply::json("200 OK", receipt("delete")), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let operation = transport + .prepare_delete( + &session, + &metadata(&transport, active_metadata()), + UuidV4::parse(NEW_OPERATION).unwrap(), + ) + .unwrap(); + let result = transport.submit(&session, &operation).await.unwrap(); + assert!(!result.replayed); + assert_eq!(result.receipt.kind, OperationKind::Delete); + assert!(matches!( + transport.operation(&session, &operation).await.unwrap(), + OperationStatus::Pending(_) + )); + assert!(matches!( + transport.operation(&session, &operation).await.unwrap(), + OperationStatus::NotFound + )); + assert!(matches!( + transport.operation(&session, &operation).await.unwrap(), + OperationStatus::Committed(_) + )); + let requests = server.finish().await; + assert_eq!(requests[1].method, "DELETE"); + assert_eq!(requests[1].headers["idempotency-key"], NEW_OPERATION); + assert_eq!(requests[1].body, operation.body_bytes()); + for request in &requests[2..] { + assert_eq!(request.path, format!("/v1/me/operations/{NEW_OPERATION}")); + } + } + + #[tokio::test] + async fn every_mutation_receipt_field_is_checked_against_the_prepared_request() { + for (field, value) in [ + ("operationId", json!(OLD_OPERATION)), + ("kind", json!("create")), + ("committedRevision", json!("10")), + ("vaultId", json!(KEY)), + ("ciphertextSha256", json!("0".repeat(64))), + ] { + let mut bad = receipt("snapshot"); + bad[field] = value; + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", bad).header("Idempotency-Replayed", "false"), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let operation = prepared_upload(&transport, &session); + assert!(matches!( + transport.submit(&session, &operation).await, + Err(Error::InvalidResponse(_)) + )); + server.finish().await; + } + } + + #[tokio::test] + async fn control_and_snapshot_responses_are_limited_while_streaming() { + for limit in [CONTROL_BODY_LIMIT, HTTP_BODY_LIMIT] { + for length in [limit, limit + 1] { + let server = + FakeServer::start(vec![Reply::raw("200 OK", vec![b' '; length]).chunked()]) + .await; + let response = client_builder(ProxyPolicy::for_origin(&server.origin, false)) + .no_proxy() + .build() + .unwrap() + .get(&server.origin) + .send() + .await + .unwrap(); + let result = bounded_body(response, limit).await; + if length == limit { + assert_eq!(result.unwrap().len(), limit); + } else { + assert!(matches!(result, Err(Error::PayloadTooLarge))); + } + server.finish().await; + } + } + let server = FakeServer::start(vec![ + Reply::raw("200 OK", Vec::new()).header("Content-Length", "25165825") + ]) + .await; + let response = client_builder(ProxyPolicy::for_origin(&server.origin, false)) + .no_proxy() + .build() + .unwrap() + .get(&server.origin) + .send() + .await + .unwrap(); + assert!(matches!( + bounded_body(response, HTTP_BODY_LIMIT).await, + Err(Error::PayloadTooLarge) + )); + server.finish().await; + } + + #[tokio::test] + async fn errors_retain_only_allowlisted_code_and_validated_retry_delay() { + let marker = "SENSITIVE_BODY_TOKEN_https://secret.example"; + let mut remote = error_envelope("rate_limited"); + remote["error"]["message"] = json!(marker); + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("429 Too Many Requests", remote).header("Retry-After", "42"), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let error = transport + .metadata(&session(&transport, OWNER), None) + .await + .unwrap_err(); + assert!(matches!( + error, + Error::Api { + status: 429, + code: RemoteErrorCode::RateLimited, + retry_after_seconds: Some(42), + .. + } + )); + assert!(!format!("{error:?} {error}").contains(marker)); + server.finish().await; + for (status, code, delay) in [ + ("429 Too Many Requests", "rate_limited", "0"), + ("429 Too Many Requests", "rate_limited", "86401"), + ("429 Too Many Requests", "rate_limited", "tomorrow"), + ("503 Service Unavailable", "rate_limited", "42"), + ] { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json(status, error_envelope(code)).header("Retry-After", delay), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport.metadata(&session(&transport, OWNER), None).await, + Err(Error::InvalidResponse(_)) + )); + server.finish().await; + } + } + + #[tokio::test] + async fn logout_accepts_only_no_body_success_or_validated_already_revoked_error() { + for reply in [ + Reply::raw("204 No Content", Vec::new()), + Reply::json("401 Unauthorized", error_envelope("session_expired")), + ] { + let server = FakeServer::start(vec![caps_reply(), reply]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + transport + .revoke_session(session(&transport, OWNER)) + .await + .unwrap(); + let requests = server.finish().await; + assert_eq!(requests[1].method, "DELETE"); + assert_eq!(requests[1].path, "/v1/auth/session"); + assert!(requests[1].body.is_empty()); + } + } + + #[tokio::test] + async fn snapshot_rejects_another_revision_etag_or_owner_before_returning_data() { + for (snapshot_value, etag) in [ + (next_snapshot(), "\"opaque-etag-8\""), + (snapshot(), "\"another-etag\""), + ] { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", snapshot_value).header("ETag", etag), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(transport + .snapshot( + &session(&transport, OWNER), + &metadata(&transport, active_metadata()) + ) + .await + .is_err()); + server.finish().await; + } + let mut foreign = empty_metadata(); + foreign["ownerGithubId"] = json!("999"); + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", foreign).header("ETag", "\"foreign\""), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport.metadata(&session(&transport, OWNER), None).await, + Err(Error::AccountMismatch) + )); + server.finish().await; + } + + #[tokio::test] + async fn missing_replay_header_and_mismatched_pending_receipt_stay_unconfirmed() { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::json("200 OK", receipt("snapshot")), + Reply::json( + "202 Accepted", + json!({"operationId":OLD_OPERATION,"status":"pending","retryAfterSeconds":1}), + ), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let operation = prepared_upload(&transport, &session); + assert!(matches!( + transport.submit(&session, &operation).await, + Err(Error::InvalidResponse(_)) + )); + assert!(matches!( + transport.operation(&session, &operation).await, + Err(Error::InvalidResponse(_)) + )); + assert_eq!(operation.operation_id().as_str(), NEW_OPERATION); + server.finish().await; + } + + #[tokio::test] + async fn error_response_uses_the_control_limit_even_on_the_snapshot_route() { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::raw( + "503 Service Unavailable", + vec![b' '; CONTROL_BODY_LIMIT + 1], + ) + .chunked(), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + assert!(matches!( + transport + .snapshot( + &session(&transport, OWNER), + &metadata(&transport, active_metadata()) + ) + .await, + Err(Error::PayloadTooLarge) + )); + server.finish().await; + } + + #[tokio::test] + async fn deleted_vault_recreation_keeps_tombstone_revision_and_requires_a_new_vault() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let mut deleted = active_metadata(); + deleted["state"] = json!("deleted"); + for field in ["keyId", "payloadSchemaVersion", "ciphertextSha256"] { + deleted[field] = Value::Null; + } + deleted["ciphertextBytes"] = json!(0); + let tombstone = metadata(&transport, deleted); + let mut create = next_snapshot(); + create["kind"] = json!("create"); + assert!(transport + .prepare_upload(&session, &tombstone, &typed(&create), None) + .is_err()); + create["vaultId"] = json!(KEY); + assert!(transport + .prepare_upload(&session, &tombstone, &typed(&create), None) + .is_ok()); + create["baseRevision"] = json!("0"); + create["revision"] = json!("1"); + assert!(transport + .prepare_upload(&session, &tombstone, &typed(&create), None) + .is_err()); + assert!(transport + .prepare_delete(&session, &tombstone, UuidV4::parse(NEW_OPERATION).unwrap()) + .is_err()); + let mut exhausted = active_metadata(); + exhausted["revision"] = json!(u64::MAX.to_string()); + assert!(matches!( + transport.prepare_delete( + &session, + &metadata(&transport, exhausted), + UuidV4::parse(NEW_OPERATION).unwrap() + ), + Err(Error::RevisionExhausted) + )); + server.finish().await; + } + + #[tokio::test] + async fn debug_output_and_malformed_bearer_values_do_not_expose_credentials() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let operation = prepared_upload(&transport, &session); + let text = format!("{transport:?} {session:?} {operation:?}"); + assert!(!text.contains(&"a".repeat(43))); + assert!(!text.contains(&server.origin)); + assert!(!text.contains(snapshot()["ciphertext"].as_str().unwrap())); + for token in ["", "secret\nvalue", "secret value"] { + let error = bearer_header(token).unwrap_err(); + assert!(!format!("{error:?} {error}").contains("secret")); + } + assert!(bearer_header("fixture-token").unwrap().is_sensitive()); + server.finish().await; + } + + #[tokio::test] + async fn pending_records_preserve_original_upload_and_delete_bytes_after_restart() { + for kind in ["snapshot", "delete"] { + let server = FakeServer::start(vec![ + caps_reply(), + Reply::disconnect(), + caps_reply(), + Reply::json("200 OK", auth(OWNER, 'b')), + Reply::json("200 OK", receipt(kind)).header("Idempotency-Replayed", "true"), + ]) + .await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let first_session = session(&transport, OWNER); + let mut operation = if kind == "snapshot" { + prepared_upload(&transport, &first_session) + } else { + transport + .prepare_delete( + &first_session, + &metadata(&transport, active_metadata()), + UuidV4::parse(NEW_OPERATION).unwrap(), + ) + .unwrap() + }; + // Simulate bytes produced by a previous client serializer. Restoring + // must not reserialize this valid, differently ordered/formatted JSON. + let original_value: Value = serde_json::from_slice(operation.body_bytes()).unwrap(); + operation.body = format!( + "\n\t{}\n", + serde_json::to_string_pretty(&original_value).unwrap() + ) + .into_bytes(); + operation.if_match = StrongEtag::parse("\"opaque-\\tag-8\"").unwrap(); + let original_body = operation.body_bytes().to_vec(); + let original_etag = operation.if_match().as_str().to_owned(); + let record = operation.to_pending_record().unwrap(); + assert!(!std::str::from_utf8(&record) + .unwrap() + .contains(&"a".repeat(43))); + assert!(matches!( + transport.submit(&first_session, &operation).await, + Err(Error::Transport) + )); + drop(operation); + drop(first_session); + drop(transport); + + let restarted = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let renewed = restarted + .exchange("github-fixture-token", &GithubId::parse(OWNER).unwrap()) + .await + .unwrap(); + let restored = restarted.restore_pending(&renewed, &record).unwrap(); + assert_eq!(restored.body_bytes(), original_body); + assert_eq!(restored.if_match().as_str(), original_etag); + assert_eq!(restored.operation_id().as_str(), NEW_OPERATION); + let accepted = restarted.submit(&renewed, &restored).await.unwrap(); + assert!(accepted.replayed); + let requests = server.finish().await; + for index in [1, 4] { + assert_eq!(requests[index].body, original_body); + assert_eq!(requests[index].headers["if-match"], original_etag); + assert_eq!(requests[index].headers["idempotency-key"], NEW_OPERATION); + assert_eq!( + requests[index].method, + if kind == "snapshot" { "PUT" } else { "DELETE" } + ); + } + assert_ne!( + requests[1].headers["authorization"], + requests[4].headers["authorization"] + ); + assert_eq!(requests[2].path, "/v1/capabilities"); + assert_eq!(requests[3].path, "/v1/auth/github"); + } + } + + #[tokio::test] + async fn pending_record_recovery_rejects_changed_identity_and_untrusted_envelope_fields() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let account_session = session(&transport, OWNER); + let operation = prepared_upload(&transport, &account_session); + let bytes = operation.to_pending_record().unwrap(); + let original: Value = serde_json::from_slice(&bytes).unwrap(); + for (field, value) in [ + ("origin", json!("https://another.example/")), + ("origin", json!("http://another.example/")), + ("origin", json!("https://user:password@another.example/")), + ("ownerGithubId", json!("999")), + ("operationId", json!(OLD_OPERATION)), + ("method", json!("post")), + ("method", json!("delete")), + ("recordVersion", json!(2)), + ("ifMatch", json!("W/\"weak\"")), + ("url", json!("https://another.example/arbitrary")), + ("expectedRevision", json!("9")), + ] { + let mut modified = original.clone(); + modified[field] = value; + assert!( + transport + .restore_pending(&account_session, &serde_json::to_vec(&modified).unwrap()) + .is_err(), + "accepted invalid field {field}" + ); + } + let duplicated = + std::str::from_utf8(&bytes) + .unwrap() + .replacen('{', "{\"recordVersion\":1,", 1); + assert!(transport + .restore_pending(&account_session, duplicated.as_bytes()) + .is_err()); + let mut wrong_service = transport.clone(); + wrong_service.origin = "https://another.example/".parse().unwrap(); + let other_session = session(&wrong_service, OWNER); + assert!(matches!( + wrong_service.restore_pending(&other_session, &bytes), + Err(Error::ContextMismatch) + )); + let other_account = session(&transport, "999"); + assert!(matches!( + transport.restore_pending(&other_account, &bytes), + Err(Error::AccountMismatch) + )); + // Restore is synchronous and performs no request at all. + assert_eq!(server.finish().await.len(), 1); + } + + #[tokio::test] + async fn pending_record_recovery_revalidates_original_crypto_header_hash_and_cas_body() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + let operation = prepared_upload(&transport, &session); + let mut record: Value = + serde_json::from_slice(&operation.to_pending_record().unwrap()).unwrap(); + let body: Value = serde_json::from_str(record["body"].as_str().unwrap()).unwrap(); + for (field, value) in [ + ("ownerGithubId", json!("999")), + ("operationId", json!(OLD_OPERATION)), + ("revision", json!("10")), + ("baseRevision", json!(u64::MAX.to_string())), + ("protocolVersion", json!(2)), + ("cryptoProfile", json!("untrusted-profile")), + ("ciphertextSha256", json!("0".repeat(64))), + ("nonce", json!("invalid")), + ] { + let mut changed = body.clone(); + changed[field] = value; + record["body"] = json!(serde_json::to_string(&changed).unwrap()); + assert!( + transport + .restore_pending(&session, &serde_json::to_vec(&record).unwrap()) + .is_err(), + "accepted invalid body field {field}" + ); + } + let mut zero_base = body.clone(); + zero_base["baseRevision"] = json!("0"); + zero_base["revision"] = json!("1"); + record["body"] = json!(serde_json::to_string(&zero_base).unwrap()); + assert!(transport + .restore_pending(&session, &serde_json::to_vec(&record).unwrap()) + .is_err()); + let mut weak_kdf = body; + weak_kdf["kdf"]["iterations"] = json!(1); + record["body"] = json!(serde_json::to_string(&weak_kdf).unwrap()); + assert!(transport + .restore_pending(&session, &serde_json::to_vec(&record).unwrap()) + .is_err()); + record["body"] = json!(std::str::from_utf8(operation.body_bytes()) + .unwrap() + .replacen('{', "{\"protocolVersion\":1,", 1)); + assert!(transport + .restore_pending(&session, &serde_json::to_vec(&record).unwrap()) + .is_err()); + + let deletion = transport + .prepare_delete( + &session, + &metadata(&transport, active_metadata()), + UuidV4::parse(NEW_OPERATION).unwrap(), + ) + .unwrap(); + let mut record: Value = + serde_json::from_slice(&deletion.to_pending_record().unwrap()).unwrap(); + let mut body: Value = serde_json::from_str(record["body"].as_str().unwrap()).unwrap(); + for value in [json!("0"), json!(u64::MAX.to_string())] { + body["baseRevision"] = value; + record["body"] = json!(serde_json::to_string(&body).unwrap()); + assert!(transport + .restore_pending(&session, &serde_json::to_vec(&record).unwrap()) + .is_err()); + } + assert_eq!(server.finish().await.len(), 1); + } + + #[tokio::test] + async fn pending_record_recovery_enforces_outer_and_per_method_inner_size_limits() { + let server = FakeServer::start(vec![caps_reply()]).await; + let transport = Transport::for_test(&server.origin, CLIENT_ID) + .await + .unwrap(); + let session = session(&transport, OWNER); + assert!(matches!( + transport.restore_pending(&session, &vec![b' '; PENDING_RECORD_LIMIT + 1]), + Err(Error::PayloadTooLarge) + )); + for method in [MutationMethod::Upload, MutationMethod::Delete] { + let operation = match method { + MutationMethod::Upload => prepared_upload(&transport, &session), + MutationMethod::Delete => transport + .prepare_delete( + &session, + &metadata(&transport, active_metadata()), + UuidV4::parse(NEW_OPERATION).unwrap(), + ) + .unwrap(), + }; + let mut record: Value = + serde_json::from_slice(&operation.to_pending_record().unwrap()).unwrap(); + record["body"] = json!(" ".repeat(method.body_limit() + 1)); + assert!(matches!( + transport.restore_pending(&session, &serde_json::to_vec(&record).unwrap()), + Err(Error::PayloadTooLarge) + )); + } + assert_eq!(server.finish().await.len(), 1); + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types.rs new file mode 100644 index 000000000..001525ac0 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types.rs @@ -0,0 +1,1261 @@ +//! Strict v1 DTOs. Constructors/deserializers preserve canonical wire encodings. + +use super::{Error, Result}; +use base64::{engine::general_purpose::URL_SAFE_NO_PAD, Engine}; +use serde::{ + de::{self, DeserializeOwned, DeserializeSeed, MapAccess, SeqAccess, Visitor}, + Deserialize, Deserializer, Serialize, Serializer, +}; +use serde_json::{Map, Value}; +use sha2::{Digest, Sha256}; +use std::{collections::HashSet, fmt}; +use zeroize::{Zeroize, Zeroizing}; + +pub(crate) const PROTOCOL_VERSION: u32 = 1; +pub(crate) const CRYPTO_PROFILE: &str = "argon2id-xchacha20poly1305-v1"; +pub(crate) const AEAD_NAME: &str = "xchacha20poly1305-ietf"; +pub(crate) const CODEC_NAME: &str = "json-pad64k-v1"; +pub(crate) const HTTP_BODY_LIMIT: usize = 24 * 1024 * 1024; +pub(crate) const CONTROL_BODY_LIMIT: usize = 8192; +pub(crate) const MAX_PLAINTEXT_JSON_BYTES: usize = 15 * 1024 * 1024; +pub(crate) const MAX_PADDED_BYTES: usize = 16 * 1024 * 1024; +pub(crate) const MAX_CIPHERTEXT_BYTES: usize = MAX_PADDED_BYTES + 16; +pub(crate) const PAD_BLOCK_BYTES: usize = 65_536; +pub(crate) const MAX_DOCUMENTS: usize = 100_000; +pub(crate) const MAX_JSON_DEPTH: usize = 64; + +pub(crate) trait Validate { + fn validate(&self) -> Result<()>; +} + +#[derive(Clone, Copy, Eq, PartialEq, Hash, Ord, PartialOrd)] +pub struct Revision { + value: u64, + wire: [u8; 20], + length: u8, +} +impl Revision { + pub fn new(value: u64) -> Self { + let text = value.to_string(); + let mut wire = [b'0'; 20]; + wire[..text.len()].copy_from_slice(text.as_bytes()); + Self { + value, + wire, + length: text.len() as u8, + } + } + pub(crate) fn parse(wire: &str) -> Result { + if wire.is_empty() + || wire.len() > 20 + || !wire.bytes().all(|c| c.is_ascii_digit()) + || (wire.len() > 1 && wire.starts_with('0')) + { + return Err(Error::InvalidWire("revision")); + } + let value = wire.parse().map_err(|_| Error::InvalidWire("revision"))?; + Ok(Self::new(value)) + } + pub fn get(&self) -> u64 { + self.value + } + pub fn as_str(&self) -> &str { + std::str::from_utf8(&self.wire[..usize::from(self.length)]) + .expect("revision constructor emits ASCII digits") + } + pub(crate) fn checked_next(&self) -> Result { + self.value + .checked_add(1) + .map(Self::new) + .ok_or(Error::RevisionExhausted) + } +} +impl fmt::Debug for Revision { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(self.as_str()) + } +} +impl fmt::Display for Revision { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(self.as_str()) + } +} +impl Serialize for Revision { + fn serialize(&self, s: S) -> std::result::Result { + s.serialize_str(self.as_str()) + } +} +impl<'de> Deserialize<'de> for Revision { + fn deserialize>(d: D) -> std::result::Result { + Self::parse(&String::deserialize(d)?).map_err(|_| de::Error::custom("invalid revision")) + } +} + +#[derive(Clone, Debug, Eq, PartialEq, Hash)] +pub(crate) struct GithubId(Revision); +impl GithubId { + pub(crate) fn parse(s: &str) -> Result { + let n = Revision::parse(s)?; + if n.get() == 0 { + return Err(Error::InvalidWire("github id")); + } + Ok(Self(n)) + } + pub(crate) fn as_str(&self) -> &str { + self.0.as_str() + } +} +impl fmt::Display for GithubId { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + self.0.fmt(f) + } +} +impl Serialize for GithubId { + fn serialize(&self, s: S) -> std::result::Result { + s.serialize_str(self.as_str()) + } +} +impl<'de> Deserialize<'de> for GithubId { + fn deserialize>(d: D) -> std::result::Result { + Self::parse(&String::deserialize(d)?).map_err(|_| de::Error::custom("invalid github id")) + } +} + +#[derive(Clone, Debug, Eq, PartialEq, Hash)] +pub(crate) struct UuidV4(String); +impl UuidV4 { + pub(crate) fn parse(s: &str) -> Result { + if s.len() != 36 { + return Err(Error::InvalidWire("uuid v4")); + } + let id = uuid::Uuid::parse_str(s).map_err(|_| Error::InvalidWire("uuid v4"))?; + if id.get_version() != Some(uuid::Version::Random) + || id.get_variant() != uuid::Variant::RFC4122 + || id.to_string() != s + { + return Err(Error::InvalidWire("uuid v4")); + } + Ok(Self(s.to_owned())) + } + pub(crate) fn random() -> Result { + let mut bytes = [0; 16]; + getrandom::fill(&mut bytes).map_err(|_| Error::RandomUnavailable)?; + Ok(Self( + uuid::Builder::from_random_bytes(bytes) + .into_uuid() + .to_string(), + )) + } + pub(crate) fn as_str(&self) -> &str { + &self.0 + } +} +impl fmt::Display for UuidV4 { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(&self.0) + } +} +impl Serialize for UuidV4 { + fn serialize(&self, s: S) -> std::result::Result { + s.serialize_str(&self.0) + } +} +impl<'de> Deserialize<'de> for UuidV4 { + fn deserialize>(d: D) -> std::result::Result { + Self::parse(&String::deserialize(d)?).map_err(|_| de::Error::custom("invalid uuid v4")) + } +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub(crate) struct StrongEtag(String); +impl StrongEtag { + pub(crate) fn parse(s: &str) -> Result { + let b = s.as_bytes(); + if !(3..=130).contains(&b.len()) + || b[0] != b'"' + || b[b.len() - 1] != b'"' + || !b[1..b.len() - 1] + .iter() + .all(|b| *b == 0x21 || (0x23..=0x7e).contains(b)) + { + return Err(Error::InvalidWire("strong etag")); + } + Ok(Self(s.to_owned())) + } + pub(crate) fn as_str(&self) -> &str { + &self.0 + } +} +impl fmt::Display for StrongEtag { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(&self.0) + } +} + +#[derive(Clone, Eq, PartialEq)] +pub(crate) struct EncodedBytes([u8; N]); +pub(crate) type Salt = EncodedBytes<16>; +pub(crate) type Nonce = EncodedBytes<24>; +impl EncodedBytes { + #[cfg(test)] + pub(crate) fn new(bytes: [u8; N]) -> Self { + Self(bytes) + } + pub(crate) fn random() -> Result { + let mut b = [0; N]; + getrandom::fill(&mut b).map_err(|_| Error::RandomUnavailable)?; + Ok(Self(b)) + } + pub(crate) fn bytes(&self) -> &[u8; N] { + &self.0 + } + pub(crate) fn encoded(&self) -> String { + URL_SAFE_NO_PAD.encode(self.0) + } + pub(crate) fn parse(s: &str) -> Result { + if s.len() != N.div_ceil(3) * 4 - (3 - N % 3) % 3 { + return Err(Error::InvalidWire("base64 length")); + } + let b = decode_base64(s, N)?; + Ok(Self( + b.try_into() + .map_err(|_| Error::InvalidWire("base64 length"))?, + )) + } +} +impl fmt::Debug for EncodedBytes { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_tuple("PublicEncodedBytes") + .field(&self.encoded()) + .finish() + } +} +impl Serialize for EncodedBytes { + fn serialize(&self, s: S) -> std::result::Result { + s.serialize_str(&self.encoded()) + } +} +impl<'de, const N: usize> Deserialize<'de> for EncodedBytes { + fn deserialize>(d: D) -> std::result::Result { + Self::parse(&String::deserialize(d)?) + .map_err(|_| de::Error::custom("invalid canonical base64")) + } +} + +pub(crate) fn decode_base64(s: &str, max: usize) -> Result> { + if s.is_empty() + || s.len() > max.div_ceil(3) * 4 + || !s + .bytes() + .all(|b| b.is_ascii_alphanumeric() || b == b'-' || b == b'_') + { + return Err(Error::InvalidWire("canonical base64")); + } + let decoded = URL_SAFE_NO_PAD + .decode(s) + .map_err(|_| Error::InvalidWire("canonical base64"))?; + if decoded.len() > max { + return Err(Error::PayloadTooLarge); + } + if URL_SAFE_NO_PAD.encode(&decoded) != s { + return Err(Error::InvalidWire("canonical base64")); + } + Ok(decoded) +} + +#[derive(Clone, Debug, Eq, PartialEq)] +pub(crate) struct Sha256Digest([u8; 32]); +impl Sha256Digest { + pub(crate) fn of(bytes: &[u8]) -> Self { + Self(Sha256::digest(bytes).into()) + } + pub(crate) fn as_hex(&self) -> String { + self.0.iter().map(|b| format!("{b:02x}")).collect() + } + pub(crate) fn parse(s: &str) -> Result { + if s.len() != 64 + || !s + .bytes() + .all(|b| b.is_ascii_digit() || (b'a'..=b'f').contains(&b)) + { + return Err(Error::InvalidWire("sha256")); + } + let mut out = [0; 32]; + for (n, pair) in s.as_bytes().as_chunks::<2>().0.iter().enumerate() { + out[n] = ((hex(pair[0])) << 4) | hex(pair[1]); + } + Ok(Self(out)) + } +} +fn hex(b: u8) -> u8 { + if b <= b'9' { + b - b'0' + } else { + b - b'a' + 10 + } +} +impl Serialize for Sha256Digest { + fn serialize(&self, s: S) -> std::result::Result { + s.serialize_str(&self.as_hex()) + } +} +impl<'de> Deserialize<'de> for Sha256Digest { + fn deserialize>(d: D) -> std::result::Result { + Self::parse(&String::deserialize(d)?).map_err(|_| de::Error::custom("invalid sha256")) + } +} + +/// Intentionally neither serializable nor cloneable. Moving an IPC String here +/// transfers ownership; all copies created by normalization are also zeroizing. +pub(crate) struct SecretInput(Zeroizing); +impl SecretInput { + pub(crate) fn new(value: String) -> Self { + Self(Zeroizing::new(value)) + } + pub(crate) fn expose(&self) -> &str { + &self.0 + } +} +impl fmt::Debug for SecretInput { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("SecretInput([REDACTED])") + } +} + +pub(crate) struct SecretToken(Zeroizing); +impl SecretToken { + pub(crate) fn new(value: String) -> Result { + let value = Zeroizing::new(value); + if value.is_empty() || value.len() > 2048 || !value.bytes().all(|b| b.is_ascii_graphic()) { + return Err(Error::InvalidWire("bearer token")); + } + Ok(Self(value)) + } + pub(crate) fn expose(&self) -> &str { + &self.0 + } + pub(crate) fn validate_sync(&self) -> Result<()> { + if self.0.len() < 43 { + Err(Error::InvalidWire("sync token")) + } else { + Ok(()) + } + } +} +impl fmt::Debug for SecretToken { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("SecretToken([REDACTED])") + } +} +impl<'de> Deserialize<'de> for SecretToken { + fn deserialize>(d: D) -> std::result::Result { + Self::new(String::deserialize(d)?).map_err(|_| de::Error::custom("invalid token")) + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct Kdf { + pub(crate) name: String, + pub(crate) version: u32, + #[serde(rename = "memoryKiB")] + pub(crate) memory_kib: u32, + pub(crate) iterations: u32, + pub(crate) parallelism: u32, + pub(crate) salt: Salt, +} +impl Kdf { + pub(crate) fn fixed(salt: Salt) -> Self { + Self { + name: "argon2id".into(), + version: 19, + memory_kib: 65536, + iterations: 3, + parallelism: 4, + salt, + } + } + pub(crate) fn validate(&self) -> Result<()> { + if self.name != "argon2id" + || self.version != 19 + || self.memory_kib != 65536 + || self.iterations != 3 + || self.parallelism != 4 + { + Err(Error::UnsupportedProtocol) + } else { + Ok(()) + } + } +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub(crate) enum UploadKind { + Create, + Snapshot, + PasswordChange, +} +impl UploadKind { + pub(crate) fn as_str(&self) -> &'static str { + match self { + Self::Create => "create", + Self::Snapshot => "snapshot", + Self::PasswordChange => "password_change", + } + } +} +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub(crate) enum OperationKind { + Create, + Snapshot, + PasswordChange, + Delete, +} +impl From for OperationKind { + fn from(v: UploadKind) -> Self { + match v { + UploadKind::Create => Self::Create, + UploadKind::Snapshot => Self::Snapshot, + UploadKind::PasswordChange => Self::PasswordChange, + } + } +} + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct SnapshotUpload { + pub(crate) protocol_version: u32, + pub(crate) payload_schema_version: u32, + pub(crate) owner_github_id: GithubId, + pub(crate) vault_id: UuidV4, + pub(crate) key_id: UuidV4, + pub(crate) base_revision: Revision, + pub(crate) revision: Revision, + pub(crate) operation_id: UuidV4, + pub(crate) kind: UploadKind, + pub(crate) crypto_profile: String, + pub(crate) kdf: Kdf, + pub(crate) aead: String, + pub(crate) codec: String, + pub(crate) nonce: Nonce, + pub(crate) ciphertext: String, + pub(crate) ciphertext_sha256: Sha256Digest, +} +impl fmt::Debug for SnapshotUpload { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("SnapshotUpload") + .field("revision", &self.revision) + .field("kind", &self.kind) + .field("ciphertext", &"[REDACTED]") + .finish() + } +} +impl SnapshotUpload { + pub(crate) fn validate_header(&self) -> Result<()> { + if self.protocol_version != PROTOCOL_VERSION + || self.payload_schema_version != 1 + || self.crypto_profile != CRYPTO_PROFILE + || self.aead != AEAD_NAME + || self.codec != CODEC_NAME + { + return Err(Error::UnsupportedProtocol); + } + self.kdf.validate()?; + if self.revision != self.base_revision.checked_next()? { + return Err(Error::InvalidWire("revision increment")); + } + if !(87_403..=22_369_643).contains(&self.ciphertext.len()) { + return Err(Error::InvalidWire("ciphertext length")); + } + Ok(()) + } + pub(crate) fn decoded_ciphertext(&self) -> Result> { + self.validate_header()?; + let bytes = decode_base64(&self.ciphertext, MAX_CIPHERTEXT_BYTES)?; + if bytes.len() < PAD_BLOCK_BYTES + 16 || (bytes.len() - 16) % PAD_BLOCK_BYTES != 0 { + return Err(Error::InvalidWire("ciphertext framing")); + } + if Sha256Digest::of(&bytes) != self.ciphertext_sha256 { + return Err(Error::InvalidWire("ciphertext hash")); + } + Ok(bytes) + } + pub(crate) fn validate(&self) -> Result<()> { + self.decoded_ciphertext().map(|_| ()) + } + pub(crate) fn validate_against_metadata( + &self, + meta: &VaultMetadata, + owner: &GithubId, + ) -> Result<()> { + meta.validate()?; + if &meta.owner_github_id != owner || &self.owner_github_id != owner { + return Err(Error::AccountMismatch); + } + if meta.state != VaultState::Active + || self.revision != meta.revision + || Some(&self.vault_id) != meta.vault_id.as_ref() + || Some(&self.key_id) != meta.key_id.as_ref() + || Some(&self.operation_id) != meta.last_operation_id.as_ref() + || Some(self.payload_schema_version) != meta.payload_schema_version + || Some(&self.ciphertext_sha256) != meta.ciphertext_sha256.as_ref() + { + return Err(Error::ContextMismatch); + } + let bytes = self.decoded_ciphertext()?; + if bytes.len() as u64 != meta.ciphertext_bytes { + return Err(Error::ContextMismatch); + } + Ok(()) + } +} +impl Validate for SnapshotUpload { + fn validate(&self) -> Result<()> { + self.validate() + } +} + +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct Capabilities { + pub(crate) protocol_version: u32, + pub(crate) crypto_profile: String, + pub(crate) github_client_id: String, + pub(crate) max_http_body_bytes: u64, + pub(crate) max_ciphertext_bytes: u64, + pub(crate) max_plaintext_json_bytes: u64, + pub(crate) idempotency_retention_seconds: u64, + pub(crate) max_backup_retention_days: u32, +} +impl Validate for Capabilities { + fn validate(&self) -> Result<()> { + if self.protocol_version != PROTOCOL_VERSION + || self.crypto_profile != CRYPTO_PROFILE + || self.max_http_body_bytes != HTTP_BODY_LIMIT as u64 + || self.max_ciphertext_bytes != MAX_CIPHERTEXT_BYTES as u64 + || self.max_plaintext_json_bytes != MAX_PLAINTEXT_JSON_BYTES as u64 + || self.idempotency_retention_seconds < 604800 + || self.max_backup_retention_days > 30 + { + return Err(Error::UnsupportedProtocol); + } + bounded_text(&self.github_client_id, 1, 128) + } +} +#[derive(Clone, Debug, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct Account { + pub(crate) github_id: GithubId, + pub(crate) login: String, +} +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct AuthSession { + pub(crate) protocol_version: u32, + pub(crate) access_token: SecretToken, + pub(crate) token_type: String, + pub(crate) expires_in: u32, + pub(crate) account: Account, +} +impl Validate for AuthSession { + fn validate(&self) -> Result<()> { + if self.protocol_version != PROTOCOL_VERSION + || self.token_type != "Bearer" + || !(1..=900).contains(&self.expires_in) + { + return Err(Error::InvalidWire("auth session")); + } + self.access_token.validate_sync()?; + bounded_text(&self.account.login, 1, 100) + } +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub(crate) enum VaultState { + Empty, + Active, + Deleted, +} +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct VaultMetadata { + pub(crate) protocol_version: u32, + pub(crate) state: VaultState, + pub(crate) owner_github_id: GithubId, + pub(crate) revision: Revision, + #[serde(deserialize_with = "required_nullable")] + pub(crate) vault_id: Option, + #[serde(deserialize_with = "required_nullable")] + pub(crate) key_id: Option, + #[serde(deserialize_with = "required_nullable")] + pub(crate) updated_at: Option, + #[serde(deserialize_with = "required_nullable")] + pub(crate) payload_schema_version: Option, + pub(crate) ciphertext_bytes: u64, + #[serde(deserialize_with = "required_nullable")] + pub(crate) ciphertext_sha256: Option, + #[serde(deserialize_with = "required_nullable")] + pub(crate) last_operation_id: Option, +} +fn required_nullable<'de, D: Deserializer<'de>, T: Deserialize<'de>>( + d: D, +) -> std::result::Result, D::Error> { + Option::::deserialize(d) +} +impl VaultMetadata { + pub(crate) fn validate(&self) -> Result<()> { + if self.protocol_version != PROTOCOL_VERSION { + return Err(Error::UnsupportedProtocol); + } + if let Some(t) = &self.updated_at { + validate_timestamp(t)?; + } + let valid = match self.state { + VaultState::Empty => { + self.revision.get() == 0 + && self.vault_id.is_none() + && self.key_id.is_none() + && self.updated_at.is_none() + && self.payload_schema_version.is_none() + && self.ciphertext_bytes == 0 + && self.ciphertext_sha256.is_none() + && self.last_operation_id.is_none() + } + VaultState::Active => { + self.revision.get() > 0 + && self.vault_id.is_some() + && self.key_id.is_some() + && self.updated_at.is_some() + && self.payload_schema_version == Some(1) + && self.ciphertext_bytes >= 65_552 + && self.ciphertext_bytes <= MAX_CIPHERTEXT_BYTES as u64 + && (self.ciphertext_bytes - 16).is_multiple_of(PAD_BLOCK_BYTES as u64) + && self.ciphertext_sha256.is_some() + && self.last_operation_id.is_some() + } + VaultState::Deleted => { + self.revision.get() > 0 + && self.vault_id.is_some() + && self.key_id.is_none() + && self.updated_at.is_some() + && self.payload_schema_version.is_none() + && self.ciphertext_bytes == 0 + && self.ciphertext_sha256.is_none() + && self.last_operation_id.is_some() + } + }; + if valid { + Ok(()) + } else { + Err(Error::InvalidWire("vault state")) + } + } +} +impl Validate for VaultMetadata { + fn validate(&self) -> Result<()> { + self.validate() + } +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct DeleteVaultRequest { + pub(crate) protocol_version: u32, + pub(crate) base_revision: Revision, + pub(crate) operation_id: UuidV4, + pub(crate) expected_vault_id: UuidV4, +} +impl Validate for DeleteVaultRequest { + fn validate(&self) -> Result<()> { + if self.protocol_version != PROTOCOL_VERSION { + return Err(Error::UnsupportedProtocol); + } + if self.base_revision.get() == 0 { + return Err(Error::InvalidWire("delete revision")); + } + self.base_revision.checked_next().map(|_| ()) + } +} + +#[derive(Clone, Debug, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct OperationReceipt { + pub(crate) operation_id: UuidV4, + pub(crate) status: String, + pub(crate) kind: OperationKind, + pub(crate) committed_revision: Revision, + pub(crate) committed_at: String, + pub(crate) vault_id: UuidV4, + #[serde(deserialize_with = "required_nullable")] + pub(crate) ciphertext_sha256: Option, +} +impl Validate for OperationReceipt { + fn validate(&self) -> Result<()> { + if self.status != "committed" + || self.committed_revision.get() == 0 + || (self.kind == OperationKind::Delete) != self.ciphertext_sha256.is_none() + { + return Err(Error::InvalidWire("receipt")); + } + validate_timestamp(&self.committed_at) + } +} +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct OperationPending { + pub(crate) operation_id: UuidV4, + pub(crate) status: String, + pub(crate) retry_after_seconds: u32, +} +impl Validate for OperationPending { + fn validate(&self) -> Result<()> { + if self.status != "pending" || !(1..=3600).contains(&self.retry_after_seconds) { + Err(Error::InvalidWire("pending receipt")) + } else { + Ok(()) + } + } +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize, Eq, PartialEq)] +#[serde(rename_all = "snake_case")] +pub(crate) enum RemoteErrorCode { + InvalidRequest, + UnsupportedProtocol, + InvalidCryptoHeader, + Unauthenticated, + SessionExpired, + WrongOauthApp, + OwnerMismatch, + VaultEmpty, + VaultDeleted, + OperationNotFound, + IdempotencyKeyReused, + KeyEpochChanged, + VaultExists, + RevisionExhausted, + RevisionConflict, + PayloadTooLarge, + UnsupportedMediaType, + PreconditionRequired, + RateLimited, + InternalError, + ServiceUnavailable, +} +impl fmt::Display for RemoteErrorCode { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let s = serde_json::to_string(self).map_err(|_| fmt::Error)?; + f.write_str(s.trim_matches('"')) + } +} +#[derive(Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct ErrorEnvelope { + pub(crate) error: ErrorBody, +} +#[derive(Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(crate) struct ErrorBody { + pub(crate) code: RemoteErrorCode, + pub(crate) message: String, + // Parse the required UUID, but never include a remote body in diagnostics. + #[serde(rename = "requestId")] + _request_id: UuidV4, + #[serde(default, deserialize_with = "optional_present_nonnull")] + pub(crate) current_revision: Option, +} +fn optional_present_nonnull<'de, D: Deserializer<'de>, T: Deserialize<'de>>( + d: D, +) -> std::result::Result, D::Error> { + T::deserialize(d).map(Some) +} +impl Drop for ErrorBody { + fn drop(&mut self) { + self.message.zeroize(); + } +} +impl Validate for ErrorEnvelope { + fn validate(&self) -> Result<()> { + bounded_text(&self.error.message, 1, 200) + } +} + +#[derive(Clone, Copy, Debug, Hash, Serialize, Deserialize, Eq, PartialEq, Ord, PartialOrd)] +#[serde(rename_all = "snake_case")] +pub enum DocumentKind { + Preferences, + UiPreferences, + Channels, + ProviderCredentials, + Dictionary, + VocabularyPresets, + Corrections, + StylePacks, + History, + Activity, + DeviceProfile, +} +#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct SourceDevice { + pub id: String, + pub os: String, + pub arch: String, + pub app_version: String, +} +impl Drop for SourceDevice { + fn drop(&mut self) { + self.id.zeroize(); + self.os.zeroize(); + self.arch.zeroize(); + self.app_version.zeroize(); + } +} +impl fmt::Debug for SourceDevice { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("SourceDevice([REDACTED])") + } +} +#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct LogicalDocument { + pub id: String, + pub kind: DocumentKind, + pub schema_version: u32, + pub value: Value, +} +impl Drop for LogicalDocument { + fn drop(&mut self) { + self.id.zeroize(); + erase_value(&mut self.value); + } +} +impl fmt::Debug for LogicalDocument { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("LogicalDocument([REDACTED])") + } +} +#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct Tombstone { + pub id: String, + pub kind: DocumentKind, + pub deleted_at: String, + pub base_revision: Revision, +} +impl Drop for Tombstone { + fn drop(&mut self) { + self.id.zeroize(); + self.deleted_at.zeroize(); + } +} +impl fmt::Debug for Tombstone { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("Tombstone([REDACTED])") + } +} +#[derive(Clone, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct DocumentSet { + pub schema_version: u32, + pub exported_at: String, + pub source_device: SourceDevice, + pub documents: Vec, + pub tombstones: Vec, +} +impl fmt::Debug for DocumentSet { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("DocumentSet([REDACTED])") + } +} +impl Drop for DocumentSet { + fn drop(&mut self) { + self.exported_at.zeroize(); + } +} +impl DocumentSet { + pub(crate) fn validate(&self) -> Result<()> { + if self.schema_version != 1 || self.documents.iter().any(|d| d.schema_version != 1) { + return Err(Error::UnsupportedDocumentVersion); + } + if self.documents.len().saturating_add(self.tombstones.len()) > MAX_DOCUMENTS { + return Err(Error::PayloadTooLarge); + } + validate_timestamp(&self.exported_at)?; + if [ + &self.source_device.id, + &self.source_device.os, + &self.source_device.arch, + &self.source_device.app_version, + ] + .iter() + .any(|v| v.is_empty()) + { + return Err(Error::InvalidWire("source device")); + } + let mut ids = HashSet::new(); + for d in &self.documents { + validate_value_depth(&d.value, 3)?; + if d.id.is_empty() || !ids.insert((d.kind, d.id.as_str())) { + return Err(Error::InvalidWire("duplicate document identity")); + } + } + for d in &self.tombstones { + validate_timestamp(&d.deleted_at)?; + if d.id.is_empty() || !ids.insert((d.kind, d.id.as_str())) { + return Err(Error::InvalidWire("duplicate document identity")); + } + } + Ok(()) + } + pub(crate) fn from_json_bytes(bytes: &[u8]) -> Result { + let mut value = parse_strict_json(bytes, MAX_PLAINTEXT_JSON_BYTES)?; + // Future document kinds/versions require an upgrade; never erase them as + // an empty successful restore. This preflight does not inspect value keys. + if value + .0 + .get("schemaVersion") + .and_then(Value::as_u64) + .is_some_and(|v| v != 1) + { + return Err(Error::UnsupportedDocumentVersion); + } + for collection in ["documents", "tombstones"] { + if let Some(items) = value.0.get(collection).and_then(Value::as_array) { + if items.len() > MAX_DOCUMENTS { + return Err(Error::PayloadTooLarge); + } + for item in items { + if let Some(kind) = item.get("kind").and_then(Value::as_str) { + if serde_json::from_value::(Value::String(kind.into())) + .is_err() + { + return Err(Error::UnsupportedDocumentVersion); + } + } + if item + .get("schemaVersion") + .and_then(Value::as_u64) + .is_some_and(|v| v != 1) + { + return Err(Error::UnsupportedDocumentVersion); + } + } + } + } + let documents: Self = serde_json::from_value(std::mem::take(&mut value.0)) + .map_err(|_| Error::InvalidWire("document schema"))?; + documents.validate()?; + Ok(documents) + } + pub(crate) fn to_secret_json(&self) -> Result>> { + self.validate()?; + bounded_secret_json(self, MAX_PLAINTEXT_JSON_BYTES) + } +} +impl Validate for DocumentSet { + fn validate(&self) -> Result<()> { + self.validate() + } +} +pub(crate) fn validate_timestamp(value: &str) -> Result<()> { + if value.len() > 64 || !(value.ends_with('Z') || value.ends_with("+00:00")) { + return Err(Error::InvalidWire("utc timestamp")); + } + let t = chrono::DateTime::parse_from_rfc3339(value) + .map_err(|_| Error::InvalidWire("utc timestamp"))?; + if t.offset().local_minus_utc() != 0 { + return Err(Error::InvalidWire("utc timestamp")); + } + Ok(()) +} +fn bounded_text(s: &str, min: usize, max: usize) -> Result<()> { + let n = s.chars().count(); + if (min..=max).contains(&n) { + Ok(()) + } else { + Err(Error::InvalidWire("text length")) + } +} + +fn validate_value_depth(value: &Value, depth: usize) -> Result<()> { + match value { + Value::Array(items) => { + if depth >= MAX_JSON_DEPTH { + return Err(Error::InvalidWire("json depth")); + } + for item in items { + validate_value_depth(item, depth + 1)?; + } + } + Value::Object(items) => { + if depth >= MAX_JSON_DEPTH { + return Err(Error::InvalidWire("json depth")); + } + for item in items.values() { + validate_value_depth(item, depth + 1)?; + } + } + _ => {} + } + Ok(()) +} + +fn bounded_secret_json(value: &T, limit: usize) -> Result>> { + // Count with a hard ceiling first, so serialization never grows a secret + // buffer beyond the limit or leaves old plaintext allocations after realloc. + struct Counter { + size: usize, + limit: usize, + } + impl std::io::Write for Counter { + fn write(&mut self, bytes: &[u8]) -> std::io::Result { + self.size = self + .size + .checked_add(bytes.len()) + .filter(|v| *v <= self.limit) + .ok_or_else(|| std::io::Error::other("JSON limit"))?; + Ok(bytes.len()) + } + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } + } + let mut counter = Counter { size: 0, limit }; + serde_json::to_writer(&mut counter, value).map_err(|_| Error::PayloadTooLarge)?; + struct Writer { + bytes: Zeroizing>, + limit: usize, + } + impl std::io::Write for Writer { + fn write(&mut self, bytes: &[u8]) -> std::io::Result { + if self.bytes.len().saturating_add(bytes.len()) > self.limit { + return Err(std::io::Error::other("JSON limit")); + } + self.bytes.extend_from_slice(bytes); + Ok(bytes.len()) + } + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } + } + let mut writer = Writer { + bytes: Zeroizing::new(Vec::with_capacity(counter.size)), + limit: counter.size, + }; + serde_json::to_writer(&mut writer, value) + .map_err(|_| Error::InvalidWire("document serialization"))?; + Ok(writer.bytes) +} + +/// Best-effort cleanup of decrypted strings, including unknown extension keys. +fn erase_value(value: &mut Value) { + match value { + Value::String(s) => s.zeroize(), + Value::Array(a) => { + for v in a { + erase_value(v) + } + } + Value::Object(m) => { + for (mut k, mut v) in std::mem::take(m) { + k.zeroize(); + erase_value(&mut v) + } + } + _ => {} + } + *value = Value::Null; +} + +struct StrictValue(Value); +impl Drop for StrictValue { + fn drop(&mut self) { + erase_value(&mut self.0); + } +} +struct ValueSeed(usize); +impl<'de> DeserializeSeed<'de> for ValueSeed { + type Value = Value; + fn deserialize>(self, d: D) -> std::result::Result { + d.deserialize_any(self) + } +} +impl<'de> Visitor<'de> for ValueSeed { + type Value = Value; + fn expecting(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("bounded JSON") + } + fn visit_bool(self, v: bool) -> std::result::Result { + Ok(Value::Bool(v)) + } + fn visit_unit(self) -> std::result::Result { + Ok(Value::Null) + } + fn visit_i64(self, v: i64) -> std::result::Result { + Ok(v.into()) + } + fn visit_u64(self, v: u64) -> std::result::Result { + Ok(v.into()) + } + fn visit_f64(self, v: f64) -> std::result::Result { + serde_json::Number::from_f64(v) + .map(Value::Number) + .ok_or_else(|| E::custom("nonfinite JSON")) + } + fn visit_str(self, v: &str) -> std::result::Result { + Ok(Value::String(v.to_owned())) + } + fn visit_string(self, v: String) -> std::result::Result { + Ok(Value::String(v)) + } + fn visit_seq>(self, mut a: A) -> std::result::Result { + if self.0 >= MAX_JSON_DEPTH { + return Err(de::Error::custom("JSON depth")); + } + let mut out = StrictValue(Value::Array(Vec::new())); + while let Some(mut v) = a.next_element_seed(ValueSeed(self.0 + 1))? { + if let Value::Array(items) = &mut out.0 { + if self.0 == 1 && items.len() >= MAX_DOCUMENTS { + erase_value(&mut v); + return Err(de::Error::custom("document count")); + } + items.push(v); + } + } + Ok(std::mem::take(&mut out.0)) + } + fn visit_map>(self, mut a: A) -> std::result::Result { + if self.0 >= MAX_JSON_DEPTH { + return Err(de::Error::custom("JSON depth")); + } + let mut out = StrictValue(Value::Object(Map::new())); + while let Some(mut key) = a.next_key::()? { + if let Value::Object(items) = &mut out.0 { + if items.contains_key(&key) { + key.zeroize(); + return Err(de::Error::custom("duplicate JSON key")); + } + } + let value = match a.next_value_seed(ValueSeed(self.0 + 1)) { + Ok(v) => v, + Err(e) => { + key.zeroize(); + return Err(e); + } + }; + if let Value::Object(items) = &mut out.0 { + items.insert(key, value); + } + } + Ok(std::mem::take(&mut out.0)) + } +} +fn parse_strict_json(bytes: &[u8], limit: usize) -> Result { + if bytes.len() > limit { + return Err(Error::PayloadTooLarge); + } + let mut d = serde_json::Deserializer::from_slice(bytes); + let value = StrictValue( + ValueSeed(0) + .deserialize(&mut d) + .map_err(|_| Error::InvalidWire("json encoding"))?, + ); + d.end() + .map_err(|_| Error::InvalidWire("json trailing data"))?; + Ok(value) +} +pub(crate) fn parse_wire(bytes: &[u8], limit: usize) -> Result { + if bytes.len() > limit { + return Err(Error::PayloadTooLarge); + } + // Validate syntax without constructing an attacker-chosen Value tree (for + // example millions of `null`s where ciphertext must actually be a string). + let mut parser = serde_json::Deserializer::from_slice(bytes); + SyntaxSeed(0) + .deserialize(&mut parser) + .map_err(|_| Error::InvalidWire("json encoding"))?; + parser + .end() + .map_err(|_| Error::InvalidWire("json trailing data"))?; + let value = + serde_json::from_slice::(bytes).map_err(|_| Error::InvalidWire("json schema"))?; + value.validate()?; + Ok(value) +} + +struct SyntaxSeed(usize); +impl<'de> DeserializeSeed<'de> for SyntaxSeed { + type Value = (); + fn deserialize>(self, d: D) -> std::result::Result<(), D::Error> { + d.deserialize_any(self) + } +} +struct SecretKeys(HashSet); +impl Drop for SecretKeys { + fn drop(&mut self) { + for mut key in self.0.drain() { + key.zeroize(); + } + } +} +impl<'de> Visitor<'de> for SyntaxSeed { + type Value = (); + fn expecting(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str("bounded JSON") + } + fn visit_bool(self, _: bool) -> std::result::Result<(), E> { + Ok(()) + } + fn visit_unit(self) -> std::result::Result<(), E> { + Ok(()) + } + fn visit_i64(self, _: i64) -> std::result::Result<(), E> { + Ok(()) + } + fn visit_u64(self, _: u64) -> std::result::Result<(), E> { + Ok(()) + } + fn visit_f64(self, v: f64) -> std::result::Result<(), E> { + if v.is_finite() { + Ok(()) + } else { + Err(E::custom("nonfinite JSON")) + } + } + fn visit_str(self, _: &str) -> std::result::Result<(), E> { + Ok(()) + } + fn visit_string(self, mut v: String) -> std::result::Result<(), E> { + v.zeroize(); + Ok(()) + } + fn visit_seq>(self, mut a: A) -> std::result::Result<(), A::Error> { + if self.0 >= MAX_JSON_DEPTH { + return Err(de::Error::custom("JSON depth")); + } + while a.next_element_seed(SyntaxSeed(self.0 + 1))?.is_some() {} + Ok(()) + } + fn visit_map>(self, mut a: A) -> std::result::Result<(), A::Error> { + if self.0 >= MAX_JSON_DEPTH { + return Err(de::Error::custom("JSON depth")); + } + let mut keys = SecretKeys(HashSet::new()); + while let Some(mut key) = a.next_key::()? { + if keys.0.contains(&key) { + key.zeroize(); + return Err(de::Error::custom("duplicate JSON key")); + } + keys.0.insert(key); + a.next_value_seed(SyntaxSeed(self.0 + 1))?; + } + Ok(()) + } +} + +#[cfg(test)] +mod tests; diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types/tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types/tests.rs new file mode 100644 index 000000000..2e08deb1d --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_protocol/types/tests.rs @@ -0,0 +1,175 @@ +use super::*; + +fn document_json(value: &str) -> String { + format!( + r#"{{"schemaVersion":1,"exportedAt":"2026-09-23T00:00:00Z","sourceDevice":{{"id":"fixture","os":"test","arch":"test","appVersion":"0.1"}},"documents":[{{"id":"main","kind":"preferences","schemaVersion":1,"value":{value}}}],"tombstones":[]}}"# + ) +} + +#[test] +fn canonical_revision_preserves_uint64_without_float_conversion() { + let v = Revision::parse("9007199254740993").unwrap(); + assert_eq!(v.get(), 9_007_199_254_740_993); + assert_eq!(serde_json::to_string(&v).unwrap(), "\"9007199254740993\""); + for invalid in ["", "01", "00", "+1", "-1", "1.0", "18446744073709551616"] { + assert!(Revision::parse(invalid).is_err()); + } + for invalid in ["1", "1.0", "null", "true"] { + assert!(serde_json::from_str::(invalid).is_err()); + } + assert!(Revision::new(u64::MAX).checked_next().is_err()); + assert!(GithubId::parse("0").is_err()); +} + +#[test] +fn ids_base64_hash_and_etags_are_canonical() { + for invalid in [ + "BE406CA5-37FA-4B26-9A9A-74C1AAD48EAE", + "be406ca5-37fa-1b26-9a9a-74c1aad48eae", + "be406ca537fa4b269a9a74c1aad48eae", + ] { + assert!(UuidV4::parse(invalid).is_err()); + } + let id = UuidV4::random().unwrap(); + assert!(UuidV4::parse(id.as_str()).is_ok()); + assert!(Salt::parse("AAECAwQFBgcICQoLDA0ODw").is_ok()); + for invalid in [ + "AAECAwQFBgcICQoLDA0ODw==", + "AAECAwQFBgcICQoLDA0ODx", + "AAECAwQFBgcICQoLDA0OD+", + ] { + assert!(Salt::parse(invalid).is_err()); + } + assert!(Sha256Digest::parse(&"AB".repeat(32)).is_err()); + for invalid in ["*", "W/\"etag\"", "etag", "\"\"", "\"a\"b\"", "\"a\nb\""] { + assert!(StrongEtag::parse(invalid).is_err()); + } + assert_eq!( + StrongEtag::parse("\"opaque,=!\\\"").unwrap().as_str(), + "\"opaque,=!\\\"" + ); +} + +#[test] +fn private_json_rejects_duplicates_depth_and_bad_unicode() { + assert!(DocumentSet::from_json_bytes(document_json(r#"{"a":1,"a":2}"#).as_bytes()).is_err()); + let root_duplicate = document_json("{}").replacen( + "\"schemaVersion\":1", + "\"schemaVersion\":1,\"schemaVersion\":1", + 1, + ); + assert!(DocumentSet::from_json_bytes(root_duplicate.as_bytes()).is_err()); + let deep = format!("{}0{}", "[".repeat(65), "]".repeat(65)); + assert!(DocumentSet::from_json_bytes(document_json(&deep).as_bytes()).is_err()); + assert!(DocumentSet::from_json_bytes(document_json(r#"{"bad":1e400}"#).as_bytes()).is_err()); + assert!(DocumentSet::from_json_bytes(&[0xff, 0xfe]).is_err()); + assert!( + DocumentSet::from_json_bytes(format!("{} null", document_json("{}")).as_bytes()).is_err() + ); +} + +#[test] +fn document_identity_and_schema_are_validated_without_dropping_extensions() { + let input = document_json(r#"{"futureSetting":{"secret":"fixture"},"value":3}"#); + let mut docs = DocumentSet::from_json_bytes(input.as_bytes()).unwrap(); + let bytes = docs.to_secret_json().unwrap(); + let restored = DocumentSet::from_json_bytes(&bytes).unwrap(); + assert_eq!( + restored.documents[0].value["futureSetting"]["secret"], + "fixture" + ); + assert!(!format!("{docs:?}").contains("fixture")); + docs.documents.push(docs.documents[0].clone()); + assert!(docs.validate().is_err()); + docs.documents.pop(); + docs.tombstones.push(Tombstone { + id: "main".into(), + kind: DocumentKind::Preferences, + deleted_at: "2026-09-23T00:00:00Z".into(), + base_revision: Revision::new(0), + }); + assert!(docs.validate().is_err()); + assert!(matches!( + DocumentSet::from_json_bytes( + input + .replace("\"preferences\"", "\"future_kind\"") + .as_bytes() + ), + Err(Error::UnsupportedDocumentVersion) + )); + docs.tombstones.clear(); + docs.documents[0].schema_version = 2; + assert!(matches!( + docs.validate(), + Err(Error::UnsupportedDocumentVersion) + )); +} + +#[test] +fn metadata_requires_null_fields_and_rejects_inconsistent_states() { + let valid = r#"{"protocolVersion":1,"state":"empty","ownerGithubId":"12345","revision":"0","vaultId":null,"keyId":null,"updatedAt":null,"payloadSchemaVersion":null,"ciphertextBytes":0,"ciphertextSha256":null,"lastOperationId":null}"#; + assert!(parse_wire::(valid.as_bytes(), CONTROL_BODY_LIMIT).is_ok()); + assert!(parse_wire::( + valid.replace("\"keyId\":null,", "").as_bytes(), + CONTROL_BODY_LIMIT + ) + .is_err()); + assert!(parse_wire::( + valid + .replace("\"revision\":\"0\"", "\"revision\":\"1\"") + .as_bytes(), + CONTROL_BODY_LIMIT + ) + .is_err()); + assert!(parse_wire::( + valid.replace("\"empty\"", "\"active\"").as_bytes(), + CONTROL_BODY_LIMIT + ) + .is_err()); +} + +#[test] +fn schema_and_errors_never_echo_attacker_content() { + let marker = "PASSWORD_AND_TOKEN_MUST_NEVER_APPEAR"; + let input = document_json("{}").replace( + "\"schemaVersion\":1", + &format!("\"schemaVersion\":\"{marker}\""), + ); + let err = DocumentSet::from_json_bytes(input.as_bytes()).unwrap_err(); + assert!(!format!("{err:?} {err}").contains(marker)); + assert!(!format!("{:?}", SecretInput::new(marker.into())).contains(marker)); + assert!(!format!("{:?}", SecretToken::new(marker.into()).unwrap()).contains(marker)); +} + +#[test] +fn control_response_limit_is_enforced_before_json_parsing() { + let bytes = vec![b' '; CONTROL_BODY_LIMIT + 1]; + assert!(matches!( + parse_wire::(&bytes, CONTROL_BODY_LIMIT), + Err(Error::PayloadTooLarge) + )); +} + +#[test] +fn export_checks_depth_and_limit_before_allocating_json_output() { + let mut docs = DocumentSet::from_json_bytes(document_json("null").as_bytes()).unwrap(); + docs.documents[0].value = Value::String("x".repeat(MAX_PLAINTEXT_JSON_BYTES)); + assert!(matches!(docs.to_secret_json(), Err(Error::PayloadTooLarge))); + let mut value = Value::Null; + for _ in 0..65 { + value = Value::Array(vec![value]); + } + docs.documents[0].value = value; + assert!(docs.to_secret_json().is_err()); +} + +#[test] +fn optional_current_revision_must_not_be_explicit_null() { + let wire = r#"{"error":{"code":"revision_conflict","message":"fixed","requestId":"e1d8c32e-d209-4e56-8735-bc66b8684c71","currentRevision":null}}"#; + assert!(parse_wire::(wire.as_bytes(), CONTROL_BODY_LIMIT).is_err()); + assert!(parse_wire::( + wire.replace(",\"currentRevision\":null", "").as_bytes(), + CONTROL_BODY_LIMIT + ) + .is_ok()); +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/capture.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/capture.rs new file mode 100644 index 000000000..dcc82bf4a --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/capture.rs @@ -0,0 +1,240 @@ +use std::collections::BTreeSet; + +use crate::cloud_sync_e2ee_documents::*; +use crate::cloud_sync_e2ee_protocol::types::{DocumentSet, Revision, Tombstone}; + +use super::{state::ScopeState, CoreSyncStore, DeviceExtensionKey, ExclusivePermit}; + +impl CoreSyncStore { + pub(super) async fn capture_locked( + &self, + scope: &SyncScope, + permit: &ExclusivePermit, + ) -> DocumentResult { + let state = ScopeState::decode( + scope, + self.inner.extensions.read_scope(scope.clone()).await?, + )?; + let snapshot = self.capture_native(scope, permit, &state).await?; + self.finish_capture(scope, state, snapshot).await + } + + pub(super) async fn capture_readonly( + &self, + scope: &SyncScope, + ) -> DocumentResult { + let token = self.inner.gate.coherent_generation()?; + let state = ScopeState::decode( + scope, + self.inner.extensions.read_scope(scope.clone()).await?, + )?; + let captured = self.capture_native_inner(None, &state, token.0).await; + if self.inner.gate.coherent_generation()? != token { + return Err(DocumentError::SourceChanged); + } + self.finish_capture(scope, state, captured?).await + } + + async fn finish_capture( + &self, + scope: &SyncScope, + mut state: ScopeState, + mut snapshot: ExportSnapshot, + ) -> DocumentResult { + let old_tombstones = std::mem::take(&mut snapshot.tombstones); + let mut exported = export_snapshot(snapshot)?; + let live: BTreeSet<_> = exported + .documents + .documents() + .documents + .iter() + .map(|doc| (doc.kind, doc.id.clone())) + .collect(); + let mut set = exported.documents.documents().clone(); + set.tombstones = old_tombstones + .into_iter() + .filter(|tombstone| !live.contains(&(tombstone.kind, tombstone.id.clone()))) + .collect(); + exported.documents = validate_sync_documents(set, state.observed_revision)?; + if let Some(baseline) = &state.baseline { + let mut current = exported.documents.documents().clone(); + let mut present: BTreeSet<_> = current + .documents + .iter() + .map(|doc| (doc.kind, doc.id.clone())) + .chain( + current + .tombstones + .iter() + .map(|doc| (doc.kind, doc.id.clone())), + ) + .collect(); + for tombstone in &baseline.tombstones { + if present.insert((tombstone.kind, tombstone.id.clone())) { + current.tombstones.push(tombstone.clone()); + } + } + for old in &baseline.documents { + if present.insert((old.kind, old.id.clone())) { + current.tombstones.push(Tombstone { + id: old.id.clone(), + kind: old.kind, + deleted_at: chrono::Utc::now().to_rfc3339(), + base_revision: state.baseline_revision, + }); + } + } + exported.documents = validate_sync_documents( + current, + state.observed_revision.max(state.baseline_revision), + )?; + } + if exported.documents.documents().tombstones != state.tombstones { + state.tombstones = exported.documents.documents().tombstones.clone(); + self.inner + .extensions + .write_scope(scope.clone(), state.secret_json()?) + .await?; + } + Ok(exported) + } + + pub(super) async fn capture_native( + &self, + _scope: &SyncScope, + permit: &ExclusivePermit, + state: &ScopeState, + ) -> DocumentResult { + self.capture_native_inner(Some(permit), state, permit.generation()?) + .await + } + + async fn capture_native_inner( + &self, + permit: Option<&ExclusivePermit>, + state: &ScopeState, + generation: Revision, + ) -> DocumentResult { + let repositories = &self.inner.repositories; + let preferences = SecretJson::new( + match permit { + Some(permit) => repositories.preferences.sync_snapshot(permit), + None => repositories.preferences.sync_snapshot_readonly(), + } + .map_err(|_| DocumentError::CaptureFailed)?, + ); + let dictionary = secret_rows( + &match permit { + Some(permit) => repositories.vocabulary.sync_snapshot(permit), + None => repositories.vocabulary.list(), + } + .map_err(|_| DocumentError::CaptureFailed)?, + )?; + let corrections = secret_rows( + &match permit { + Some(permit) => repositories.correction_rules.sync_snapshot(permit), + None => repositories.correction_rules.list(), + } + .map_err(|_| DocumentError::CaptureFailed)?, + )?; + let history = secret_rows( + &match permit { + Some(permit) => repositories.history.sync_snapshot(permit), + None => repositories.history.list(), + } + .map_err(|_| DocumentError::CaptureFailed)?, + )?; + let style_packs = match permit { + Some(permit) => repositories.style_packs.sync_snapshot(permit), + None => repositories.style_packs.sync_snapshot_readonly(), + } + .map_err(|_| DocumentError::CaptureFailed)?; + let activity = match permit { + Some(permit) => repositories.activity.sync_records(permit), + None => repositories.activity.sync_records_readonly(), + } + .map_err(|_| DocumentError::CaptureFailed)?; + let presets = crate::vocabulary::list_vocab_presets(&self.inner.data_dir) + .map_err(|_| DocumentError::CaptureFailed)?; + let builtin_ids: Vec<_> = crate::vocabulary::builtin_vocab_presets() + .into_iter() + .map(|preset| preset.id) + .collect(); + let vocabulary_presets = vocabulary_records( + &presets.custom, + &presets.overrides, + &presets.disabled_builtin_preset_ids, + &builtin_ids, + )?; + let ui_preferences = self + .inner + .extensions + .read_device(DeviceExtensionKey::UiPreferences) + .await? + .ok_or(DocumentError::Unsupported)?; + let window_positions = match self + .inner + .extensions + .read_device(DeviceExtensionKey::WindowPositions) + .await? + { + Some(value) => serde_json::from_value(value.expose().clone()) + .map_err(|_| DocumentError::InvalidDocument)?, + None => Vec::new(), + }; + let credentials = match permit { + Some(permit) => self.inner.credentials.export_sync_credentials(permit).await, + None => { + self.inner + .credentials + .export_sync_credentials_readonly() + .await + } + } + .map_err(|_| DocumentError::CaptureFailed)?; + validate_credential_set(&credentials.channels, &credentials.credentials)?; + Ok(ExportSnapshot { + source_device: self.inner.device.clone(), + exported_at: chrono::Utc::now().to_rfc3339(), + generation, + base_revision: state.observed_revision, + preferences, + ui_preferences, + channels: credentials.channels, + provider_credentials: credentials.credentials, + dictionary, + vocabulary_presets, + corrections, + style_packs, + history, + activity, + window_positions, + retained_documents: state.retained_documents.clone(), + tombstones: state.tombstones.clone(), + }) + } + + pub(super) async fn baseline_locked( + &self, + scope: &SyncScope, + documents: DocumentSet, + revision: Revision, + ) -> DocumentResult<()> { + let validated = validate_sync_documents(documents, revision)?; + let mut state = ScopeState::decode( + scope, + self.inner.extensions.read_scope(scope.clone()).await?, + )?; + if revision < state.baseline_revision { + return Err(DocumentError::StalePreview); + } + state.baseline_revision = revision; + state.observed_revision = state.observed_revision.max(revision); + state.baseline = Some(validated.documents().clone()); + // Do not replace retained documents or local tombstones: later local changes may exist. + self.inner + .extensions + .write_scope(scope.clone(), state.secret_json()?) + .await + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/extensions.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/extensions.rs new file mode 100644 index 000000000..5d9cdf1e9 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/extensions.rs @@ -0,0 +1,50 @@ +//! Encrypted extension persistence supplied by the service's OS-key-backed LocalStorage. + +use std::sync::Arc; + +use futures_util::future::BoxFuture; + +use crate::cloud_sync_e2ee_documents::{DocumentResult, JournalProtector, SecretJson, SyncScope}; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum DeviceExtensionKey { + /// Actual locale/font scale mirrored from the restricted native UI preferences bridge. + UiPreferences, + /// Persisted window positions, if the Host has any; never arbitrary window-state file paths. + WindowPositions, + /// Explicit registered restore scopes. Recovery does not scan arbitrary files. + RecoveryPointers, +} + +impl DeviceExtensionKey { + pub fn storage_name(self) -> &'static str { + match self { + Self::UiPreferences => "sync-ui-preferences", + Self::WindowPositions => "sync-window-positions", + Self::RecoveryPointers => "sync-recovery-pointers", + } + } +} + +pub trait ProtectedExtensionStore: Send + Sync { + /// Scope storage is keyed by origin/owner/vault/device, not a mutable global current account. + /// Cloud key rotation must not strand OS-key-protected local extensions. + fn read_scope(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult>>; + fn write_scope(&self, scope: SyncScope, value: SecretJson) + -> BoxFuture<'_, DocumentResult<()>>; + fn read_device( + &self, + key: DeviceExtensionKey, + ) -> BoxFuture<'_, DocumentResult>>; + fn write_device( + &self, + key: DeviceExtensionKey, + value: SecretJson, + ) -> BoxFuture<'_, DocumentResult<()>>; + /// A local-only change token, rotated on every restore write even when values repeat. + fn read_ui_revision(&self) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async { Err(crate::cloud_sync_e2ee_documents::DocumentError::Unsupported) }) + } + /// Returns a real local AEAD protector after OS secure storage authorizes its key. + fn journal_protector(&self) -> BoxFuture<'_, DocumentResult>>; +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/gate.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/gate.rs new file mode 100644 index 000000000..0ab61270f --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/gate.rs @@ -0,0 +1,1168 @@ +//! Shared write barrier and durable logical generation. Guards hold no mutex across await. + +use std::cell::RefCell; +use std::collections::{BTreeMap, BTreeSet}; +use std::path::{Path, PathBuf}; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::{Arc, Mutex, MutexGuard, OnceLock, Weak}; + +use serde::{Deserialize, Serialize}; +use tokio::sync::watch; + +use crate::cloud_sync_e2ee_documents::{DocumentError, DocumentResult, SyncScope}; +use crate::cloud_sync_e2ee_protocol::types::Revision; + +static GATES: OnceLock>>> = OnceLock::new(); + +/// Host entry point before constructing any repository. Reuses the registered Arc exactly. +pub fn open_for_data_dir(data_dir: &Path) -> DocumentResult> { + std::fs::create_dir_all(data_dir.join("encrypted-sync")) + .map_err(|_| DocumentError::JournalUnavailable)?; + let root = data_dir + .canonicalize() + .map_err(|_| DocumentError::JournalUnavailable)?; + let mut registry = GATES + .get_or_init(|| Mutex::new(BTreeMap::new())) + .lock() + .map_err(|_| DocumentError::RecoveryRequired)?; + if let Some(gate) = registry.get(&root).and_then(Weak::upgrade) { + return Ok(gate); + } + let gate = SyncWriteGate::open(root.join("encrypted-sync/generation.json"))?; + registry.insert(root, Arc::downgrade(&gate)); + Ok(gate) +} + +fn absolute_normalized(path: &Path) -> DocumentResult { + let absolute = if path.is_absolute() { + path.to_path_buf() + } else { + std::env::current_dir() + .map_err(|_| DocumentError::JournalUnavailable)? + .join(path) + }; + let mut output = PathBuf::new(); + for component in absolute.components() { + match component { + std::path::Component::CurDir => {} + std::path::Component::ParentDir => { + if !output.pop() { + return Err(DocumentError::InvalidDocument); + } + } + value => output.push(value.as_os_str()), + } + } + Ok(output) +} + +/// Resolve the nearest existing ancestor, retaining every not-yet-created descendant. +fn resolved_path(path: &Path) -> DocumentResult { + let mut ancestor = path.to_path_buf(); + let mut suffix = Vec::new(); + loop { + match ancestor.canonicalize() { + Ok(mut resolved) => { + for part in suffix.iter().rev() { + resolved.push(part); + } + return absolute_normalized(&resolved); + } + Err(error) if error.kind() == std::io::ErrorKind::NotFound => { + // A dangling link must not be reinterpreted as an ordinary future directory. + if std::fs::symlink_metadata(&ancestor) + .is_ok_and(|metadata| metadata.file_type().is_symlink()) + { + return Err(DocumentError::InvalidDocument); + } + suffix.push( + ancestor + .file_name() + .ok_or(DocumentError::InvalidDocument)? + .to_os_string(), + ); + if !ancestor.pop() { + return Err(DocumentError::InvalidDocument); + } + } + Err(_) => return Err(DocumentError::JournalUnavailable), + } + } +} + +pub(crate) fn gate_for_path(path: &Path) -> DocumentResult>> { + if path.as_os_str().is_empty() { + return Ok(None); + } + let absolute = if path.is_absolute() { + path.to_path_buf() + } else { + std::env::current_dir() + .map_err(|_| DocumentError::JournalUnavailable)? + .join(path) + }; + let lexical = absolute_normalized(&absolute)?; + let parent = absolute.parent().map(resolved_path).transpose()?; + let final_is_symlink = std::fs::symlink_metadata(&absolute) + .is_ok_and(|metadata| metadata.file_type().is_symlink()); + let resolved = resolved_path(&absolute)?; + // Root aliases must retain ownership even when a later symlink escapes that root. + let ancestors: Vec<_> = absolute + .ancestors() + .filter_map(|ancestor| ancestor.canonicalize().ok()) + .collect(); + let registry = GATES + .get_or_init(|| Mutex::new(BTreeMap::new())) + .lock() + .map_err(|_| DocumentError::RecoveryRequired)?; + // rename replaces the directory entry, not its symlink target. A managed + // final-file link must never borrow a different nested root's permit. + if final_is_symlink + && parent + .as_ref() + .is_some_and(|parent| registry.keys().any(|root| parent.starts_with(root))) + { + return Err(DocumentError::InvalidDocument); + } + let lexical_root = registry + .keys() + .filter(|root| lexical.starts_with(root)) + .max_by_key(|root| root.components().count()); + if lexical_root.is_some_and(|root| !resolved.starts_with(root)) { + return Err(DocumentError::InvalidDocument); + } + for ancestor in &ancestors { + if registry + .keys() + .any(|root| ancestor.starts_with(root) && !resolved.starts_with(root)) + { + return Err(DocumentError::InvalidDocument); + } + } + let found = registry + .iter() + .filter(|(root, _)| resolved.starts_with(root)) + .max_by_key(|(root, _)| root.components().count()); + match found { + Some((_, weak)) => weak + .upgrade() + .map(Some) + .ok_or(DocumentError::RecoveryRequired), + None => Ok(None), + } +} + +/// Constructors may parse in memory but must not migrate, salvage-write, or normalize files. +pub fn recovery_pending_for_path(path: &Path) -> bool { + match gate_for_path(path) { + Ok(Some(gate)) => gate.recovery_required().unwrap_or(true), + Ok(None) => false, + Err(_) => true, + } +} + +struct Observation { + gate: Arc, + wrote: Arc, + dirty: Arc, +} +thread_local! { static OBSERVATIONS: RefCell> = const { RefCell::new(Vec::new()) }; } +struct ObservationGuard; +impl Drop for ObservationGuard { + fn drop(&mut self) { + OBSERVATIONS.with(|stack| { + stack.borrow_mut().pop(); + }); + } +} + +fn backend_error(error: DocumentError) -> crate::BackendError { + crate::BackendError::new( + if error == DocumentError::SourceChanged { + crate::BackendErrorCode::Busy + } else { + crate::BackendErrorCode::InvalidState + }, + error.to_string(), + ) +} + +pub(crate) fn with_registered_mutation( + path: &Path, + origin: ChangeOrigin, + operation: impl FnOnce() -> Result, +) -> Result { + with_registered_mutation_deciding(path, || operation().map(|value| (value, origin))) +} + +pub(crate) fn with_registered_mutation_deciding( + path: &Path, + operation: impl FnOnce() -> Result<(T, ChangeOrigin), crate::BackendError>, +) -> Result { + let Some(gate) = gate_for_path(path).map_err(backend_error)? else { + return operation().map(|(value, _)| value); + }; + let permit = gate.begin_mutation().map_err(backend_error)?; + let wrote = Arc::new(AtomicBool::new(false)); + let dirty = Arc::new(AtomicBool::new(false)); + OBSERVATIONS.with(|stack| { + stack.borrow_mut().push(Observation { + gate, + wrote: Arc::clone(&wrote), + dirty: Arc::clone(&dirty), + }) + }); + let observation = ObservationGuard; + let result = operation(); + drop(observation); + match result { + Ok((value, origin)) => { + if dirty.load(Ordering::Acquire) { + permit.commit(origin).map_err(backend_error)?; + } else { + permit.abort_unmodified().map_err(backend_error)?; + } + Ok(value) + } + Err(error) => { + if !wrote.load(Ordering::Acquire) + && error.code != crate::BackendErrorCode::OutcomeUnknown + { + permit.abort_unmodified().map_err(backend_error)?; + } + // Otherwise Drop retains the durable uncertain-write intent. + Err(error) + } + } +} + +pub(crate) fn with_optional_mutation( + path: Option<&Path>, + origin: ChangeOrigin, + operation: impl FnOnce() -> Result, +) -> Result { + match path { + Some(path) => with_registered_mutation(path, origin, operation), + None => operation(), + } +} + +fn tracked_file(path: &Path) -> bool { + matches!( + path.file_name().and_then(|name| name.to_str()), + Some( + "preferences.json" + | "history.json" + | "activity.json" + | "dictionary.json" + | "correction-rules.json" + | "style-packs.json" + | "vocab-presets.json" + ) + ) +} + +pub(crate) fn begin_unobserved_atomic( + path: &Path, +) -> Result, crate::BackendError> { + // Internal generation/extension files must bypass this lookup to avoid recursion. + if !tracked_file(path) { + return Ok(None); + } + let Some(gate) = gate_for_path(path).map_err(backend_error)? else { + return Ok(None); + }; + let observed = OBSERVATIONS.with(|stack| { + stack + .borrow() + .iter() + .any(|entry| Arc::ptr_eq(&entry.gate, &gate)) + }); + if observed { + return Ok(None); + } + gate.begin_mutation().map(Some).map_err(backend_error) +} + +pub(crate) fn note_successful_write(path: &Path) { + if !tracked_file(path) { + return; + } + if let Ok(Some(gate)) = gate_for_path(path) { + OBSERVATIONS.with(|stack| { + let stack = stack.borrow(); + let matching: Vec<_> = stack + .iter() + .filter(|entry| Arc::ptr_eq(&entry.gate, &gate)) + .collect(); + // All ancestors need a durable recovery intent if a later outer step fails. + for entry in &matching { + entry.wrote.store(true, Ordering::Release); + } + // Only the innermost owner counts this successful persistence. + if let Some(owner) = matching.last() { + owner.dirty.store(true, Ordering::Release); + } + }); + } +} + +pub(crate) fn require_exclusive( + path: &Path, + permit: &ExclusivePermit, +) -> Result<(), crate::BackendError> { + let gate = gate_for_path(path) + .map_err(backend_error)? + .ok_or_else(|| backend_error(DocumentError::Unsupported))?; + if !permit.belongs_to(&gate) { + return Err(backend_error(DocumentError::InvalidDocument)); + } + Ok(()) +} + +#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub enum ChangeOrigin { + User, + Restore, + Recovery, + LocalOnly, +} + +#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct SyncChange { + pub generation: Revision, + pub origin: ChangeOrigin, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct GateRestoreReceipt { + pub operation_id: String, + pub scope_id: String, + pub scope: SyncScope, + pub generation: Revision, + pub committed: bool, +} + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct PendingRestore { + operation_id: String, + scope_id: String, + scope: SyncScope, + journal_ready: bool, +} + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct PersistedState { + schema_version: u32, + generation: Revision, + incomplete_mutations: BTreeSet, + pending_restore: Option, + completed_restores: BTreeMap, +} + +struct State { + stored: PersistedState, + active: BTreeSet, + exclusive: bool, + exclusive_lease: Weak, + io_fault: bool, + epoch: u64, + pending_change: Option, +} + +pub struct SyncWriteGate { + path: PathBuf, + state: Mutex, + changes: watch::Sender, + runtime_blocked: AtomicBool, +} + +impl SyncWriteGate { + /// An unreadable/corrupt counter is an error, never a reset to zero. + pub fn open(state_path: PathBuf) -> DocumentResult> { + let initialized_path = state_path.with_extension("initialized"); + let stored = match std::fs::read(&state_path) { + Ok(bytes) => decode(&bytes)?, + Err(error) if error.kind() == std::io::ErrorKind::NotFound => { + let directory = state_path + .parent() + .ok_or(DocumentError::JournalUnavailable)?; + if initialized_path.exists() + || (directory.file_name().and_then(|name| name.to_str()) + == Some("encrypted-sync") + && std::fs::read_dir(directory) + .map_err(|_| DocumentError::JournalUnavailable)? + .next() + .is_some()) + { + return Err(DocumentError::RecoveryRequired); + } + // Create a durable first-initialization sentinel before the initial counter. + // A crash in this small window fails closed instead of guessing generation zero. + crate::persistence::atomic_write(&initialized_path, b"openless-sync-generation-v1") + .map_err(|_| DocumentError::JournalUnavailable)?; + let state = PersistedState { + schema_version: 1, + generation: Revision::new(0), + incomplete_mutations: BTreeSet::new(), + pending_restore: None, + completed_restores: BTreeMap::new(), + }; + persist(&state_path, &state)?; + state + } + Err(_) => return Err(DocumentError::JournalUnavailable), + }; + if !initialized_path.exists() { + crate::persistence::atomic_write(&initialized_path, b"openless-sync-generation-v1") + .map_err(|_| DocumentError::JournalUnavailable)?; + } + let (changes, _) = watch::channel(SyncChange { + generation: stored.generation, + origin: ChangeOrigin::Recovery, + }); + let runtime_blocked = AtomicBool::new( + !stored.incomplete_mutations.is_empty() || stored.pending_restore.is_some(), + ); + Ok(Arc::new(Self { + runtime_blocked, + path: state_path, + state: Mutex::new(State { + stored, + active: BTreeSet::new(), + exclusive: false, + exclusive_lease: Weak::new(), + io_fault: false, + epoch: 0, + pending_change: None, + }), + changes, + })) + } + + pub fn generation(&self) -> DocumentResult { + let state = self.lock()?; + if state.io_fault || orphaned(&state) { + return Err(DocumentError::RecoveryRequired); + } + Ok(state.stored.generation) + } + + /// Optimistic read token; no writes or restore may be in flight at either observation. + pub fn coherent_generation(&self) -> DocumentResult<(Revision, u64)> { + let state = self.lock()?; + if state.io_fault || orphaned(&state) || state.stored.pending_restore.is_some() { + return Err(DocumentError::RecoveryRequired); + } + if state.exclusive || !state.active.is_empty() { + return Err(DocumentError::SourceChanged); + } + Ok((state.stored.generation, state.epoch)) + } + + pub fn subscribe(&self) -> watch::Receiver { + self.changes.subscribe() + } + + /// Public metadata only; recovery visits these registered scopes, never scans user files. + pub fn registered_recovery_scopes(&self) -> DocumentResult> { + let state = self.lock()?; + let mut scopes = Vec::new(); + if let Some(pending) = &state.stored.pending_restore { + scopes.push(pending.scope.clone()); + } + for receipt in state.stored.completed_restores.values() { + if !scopes.contains(&receipt.scope) { + scopes.push(receipt.scope.clone()); + } + } + Ok(scopes) + } + + /// Runtime hot paths never wait behind journal I/O or the write-state mutex. + pub fn recovery_required(&self) -> DocumentResult { + Ok(self.runtime_blocked.load(Ordering::Acquire)) + } + + fn refresh_runtime_flag(&self, state: &State) { + self.runtime_blocked.store( + state.io_fault || orphaned(state) || state.stored.pending_restore.is_some(), + Ordering::Release, + ); + } + + /// Acquire before reading data for a read-modify-write. Only commit after its save succeeds. + pub fn begin_mutation(self: &Arc) -> DocumentResult { + let mut state = self.lock()?; + if state.io_fault || orphaned(&state) || state.stored.pending_restore.is_some() { + return Err(DocumentError::RecoveryRequired); + } + if state.exclusive { + return Err(DocumentError::SourceChanged); + } + let id = uuid::Uuid::new_v4().to_string(); + let mut next = state.stored.clone(); + next.incomplete_mutations.insert(id.clone()); + self.save(&mut state, next)?; + state.epoch = state + .epoch + .checked_add(1) + .ok_or(DocumentError::RecoveryRequired)?; + state.active.insert(id.clone()); + self.refresh_runtime_flag(&state); + Ok(MutationPermit { + gate: Arc::clone(self), + id, + finished: false, + }) + } + + /// Fail fast while any mutation is active; never block a writer's nested operation. + pub fn try_exclusive(self: &Arc) -> DocumentResult { + let mut state = self.lock()?; + if state.io_fault || orphaned(&state) || state.stored.pending_restore.is_some() { + return Err(DocumentError::RecoveryRequired); + } + if state.exclusive || !state.active.is_empty() { + return Err(DocumentError::SourceChanged); + } + state.epoch = state + .epoch + .checked_add(1) + .ok_or(DocumentError::RecoveryRequired)?; + state.exclusive = true; + let lease = Arc::new(ExclusiveLease { + gate: Arc::clone(self), + }); + state.exclusive_lease = Arc::downgrade(&lease); + Ok(ExclusivePermit { lease }) + } + + /// For startup journal recovery or a strict full-store reconciliation after an uncertain save. + pub fn try_exclusive_recovery(self: &Arc) -> DocumentResult { + let mut state = self.lock()?; + if state.exclusive || !state.active.is_empty() { + return Err(DocumentError::SourceChanged); + } + let stored = + decode(&std::fs::read(&self.path).map_err(|_| DocumentError::JournalUnavailable)?)?; + state.stored = stored; + state.io_fault = false; + self.refresh_runtime_flag(&state); + state.epoch = state + .epoch + .checked_add(1) + .ok_or(DocumentError::RecoveryRequired)?; + state.exclusive = true; + let lease = Arc::new(ExclusiveLease { + gate: Arc::clone(self), + }); + state.exclusive_lease = Arc::downgrade(&lease); + Ok(ExclusivePermit { lease }) + } + + pub(crate) fn clone_exclusive_for_metadata(&self) -> DocumentResult { + self.lock()? + .exclusive_lease + .upgrade() + .map(|lease| ExclusivePermit { lease }) + .ok_or(DocumentError::SourceChanged) + } + + fn lock(&self) -> DocumentResult> { + self.state.lock().map_err(|_| { + self.runtime_blocked.store(true, Ordering::Release); + DocumentError::RecoveryRequired + }) + } + + fn save(&self, state: &mut State, next: PersistedState) -> DocumentResult<()> { + if let Err(error) = persist(&self.path, &next) { + state.io_fault = true; + self.runtime_blocked.store(true, Ordering::Release); + return Err(error); + } + state.stored = next; + Ok(()) + } + + fn publish(&self, generation: Revision, origin: ChangeOrigin) { + if origin != ChangeOrigin::LocalOnly { + // Concurrent commits can reach notification delivery out of order. + self.changes.send_if_modified(|current| { + if generation < current.generation + || *current == (SyncChange { generation, origin }) + { + return false; + } + *current = SyncChange { generation, origin }; + true + }); + } + } +} + +fn orphaned(state: &State) -> bool { + state.stored.incomplete_mutations != state.active +} + +fn decode(bytes: &[u8]) -> DocumentResult { + if bytes.len() > 1024 * 1024 { + return Err(DocumentError::JournalUnavailable); + } + let state: PersistedState = + serde_json::from_slice(bytes).map_err(|_| DocumentError::JournalUnavailable)?; + if state.schema_version != 1 { + return Err(DocumentError::Unsupported); + } + Ok(state) +} + +fn persist(path: &std::path::Path, state: &PersistedState) -> DocumentResult<()> { + let bytes = serde_json::to_vec(state).map_err(|_| DocumentError::JournalUnavailable)?; + if bytes.len() > 1024 * 1024 { + return Err(DocumentError::JournalUnavailable); + } + crate::persistence::atomic_write(path, &bytes).map_err(|_| DocumentError::JournalUnavailable) +} + +/// Owned and Send; keep it inside the actual task, not only its caller's cancellable future. +pub struct MutationPermit { + gate: Arc, + id: String, + finished: bool, +} + +impl MutationPermit { + pub fn commit(mut self, origin: ChangeOrigin) -> DocumentResult { + let (generation, publish) = { + let mut state = self.gate.lock()?; + if !state.active.contains(&self.id) || state.io_fault { + return Err(DocumentError::RecoveryRequired); + } + let mut next = state.stored.clone(); + if origin != ChangeOrigin::LocalOnly { + next.generation = next + .generation + .checked_next() + .map_err(|_| DocumentError::RecoveryRequired)?; + } + next.incomplete_mutations.remove(&self.id); + self.gate.save(&mut state, next)?; + state.active.remove(&self.id); + self.gate.refresh_runtime_flag(&state); + if origin != ChangeOrigin::LocalOnly { + state.pending_change = Some(origin); + } + let publish = if state.active.is_empty() { + state.pending_change.take() + } else { + None + }; + self.finished = true; + (state.stored.generation, publish) + }; + if let Some(origin) = publish { + self.gate.publish(generation, origin); + } + Ok(generation) + } + + /// Only for a validation/no-op/error path known not to have persisted anything. + pub fn abort_unmodified(mut self) -> DocumentResult<()> { + let (generation, publish) = { + let mut state = self.gate.lock()?; + let mut next = state.stored.clone(); + next.incomplete_mutations.remove(&self.id); + self.gate.save(&mut state, next)?; + state.active.remove(&self.id); + self.gate.refresh_runtime_flag(&state); + let publish = if state.active.is_empty() { + state.pending_change.take() + } else { + None + }; + self.finished = true; + (state.stored.generation, publish) + }; + if let Some(origin) = publish { + self.gate.publish(generation, origin); + } + Ok(()) + } +} + +impl Drop for MutationPermit { + fn drop(&mut self) { + if !self.finished { + if let Ok(mut state) = self.gate.state.lock() { + state.active.remove(&self.id); + self.gate.refresh_runtime_flag(&state); + // The durable intent remains until an actual coherent capture reconciles state. + state.io_fault = true; + self.gate.runtime_blocked.store(true, Ordering::Release); + } + } + } +} + +#[derive(Clone)] +pub struct ExclusivePermit { + lease: Arc, +} +struct ExclusiveLease { + gate: Arc, +} + +impl ExclusivePermit { + pub fn belongs_to(&self, gate: &Arc) -> bool { + Arc::ptr_eq(&self.lease.gate, gate) + } + + pub fn generation(&self) -> DocumentResult { + Ok(self.lease.gate.lock()?.stored.generation) + } + + pub fn pending_restore(&self) -> DocumentResult { + Ok(self.lease.gate.lock()?.stored.pending_restore.is_some()) + } + + /// Called only after every store and credential source was successfully read/validated. + /// It records an observed recovery epoch, never declares an interrupted mutation successful. + pub(crate) fn accept_reconciled_capture(&self) -> DocumentResult { + let generation = { + let mut state = self.lease.gate.lock()?; + if state.stored.pending_restore.is_some() { + return Err(DocumentError::RecoveryRequired); + } + if state.stored.incomplete_mutations.is_empty() { + return Ok(state.stored.generation); + } + let mut next = state.stored.clone(); + next.generation = next + .generation + .checked_next() + .map_err(|_| DocumentError::RecoveryRequired)?; + next.incomplete_mutations.clear(); + self.lease.gate.save(&mut state, next)?; + self.lease.gate.refresh_runtime_flag(&state); + state.stored.generation + }; + self.lease.gate.publish(generation, ChangeOrigin::Recovery); + Ok(generation) + } + + pub fn mark_restore_pending( + &self, + operation_id: &str, + scope_id: &str, + scope: &SyncScope, + ) -> DocumentResult<()> { + let mut state = self.lease.gate.lock()?; + if let Some(pending) = &state.stored.pending_restore { + if pending.operation_id != operation_id + || pending.scope_id != scope_id + || &pending.scope != scope + { + return Err(DocumentError::RecoveryRequired); + } + return Ok(()); + } + let mut next = state.stored.clone(); + next.pending_restore = Some(PendingRestore { + operation_id: operation_id.into(), + scope_id: scope_id.into(), + scope: scope.clone(), + journal_ready: false, + }); + self.lease.gate.save(&mut state, next)?; + self.lease.gate.refresh_runtime_flag(&state); + Ok(()) + } + + pub fn mark_journal_ready(&self, operation_id: &str, scope_id: &str) -> DocumentResult<()> { + let mut state = self.lease.gate.lock()?; + let mut next = state.stored.clone(); + let pending = next + .pending_restore + .as_mut() + .ok_or(DocumentError::RecoveryRequired)?; + if pending.operation_id != operation_id || pending.scope_id != scope_id { + return Err(DocumentError::RecoveryRequired); + } + pending.journal_ready = true; + self.lease.gate.save(&mut state, next)?; + self.lease.gate.refresh_runtime_flag(&state); + Ok(()) + } + + pub fn recover_without_journal(&self, scope_id: &str) -> DocumentResult<()> { + let operation = { + let state = self.lease.gate.lock()?; + let Some(pending) = &state.stored.pending_restore else { + return Ok(()); + }; + if pending.scope_id != scope_id || pending.journal_ready { + return Err(DocumentError::RecoveryRequired); + } + pending.operation_id.clone() + }; + self.finish_restore(&operation, scope_id, false).map(|_| ()) + } + + pub fn completed_restore( + &self, + operation_id: &str, + scope_id: &str, + ) -> DocumentResult> { + Ok(self + .lease + .gate + .lock()? + .stored + .completed_restores + .get(scope_id) + .filter(|receipt| receipt.operation_id == operation_id) + .cloned()) + } + + pub(crate) fn forget_completed_scope_without_journal( + &self, + scope_id: &str, + ) -> DocumentResult<()> { + let mut state = self.lease.gate.lock()?; + if state + .stored + .pending_restore + .as_ref() + .is_some_and(|pending| pending.scope_id == scope_id) + { + return Err(DocumentError::RecoveryRequired); + } + if state.stored.completed_restores.contains_key(scope_id) { + let mut next = state.stored.clone(); + next.completed_restores.remove(scope_id); + self.lease.gate.save(&mut state, next)?; + } + Ok(()) + } + + pub(crate) fn forget_completed_restore( + &self, + operation_id: &str, + scope_id: &str, + ) -> DocumentResult<()> { + let mut state = self.lease.gate.lock()?; + if state + .stored + .completed_restores + .get(scope_id) + .is_some_and(|receipt| receipt.operation_id == operation_id) + { + let mut next = state.stored.clone(); + next.completed_restores.remove(scope_id); + self.lease.gate.save(&mut state, next)?; + } + Ok(()) + } + + pub fn finish_restore( + &self, + operation_id: &str, + scope_id: &str, + committed: bool, + ) -> DocumentResult { + if let Some(receipt) = self.completed_restore(operation_id, scope_id)? { + if receipt.committed != committed { + return Err(DocumentError::RecoveryRequired); + } + return Ok(receipt); + } + let receipt = { + let mut state = self.lease.gate.lock()?; + let pending = state + .stored + .pending_restore + .as_ref() + .ok_or(DocumentError::RecoveryRequired)?; + if pending.operation_id != operation_id || pending.scope_id != scope_id { + return Err(DocumentError::RecoveryRequired); + } + let scope = pending.scope.clone(); + let mut next = state.stored.clone(); + if committed { + next.generation = next + .generation + .checked_next() + .map_err(|_| DocumentError::RecoveryRequired)?; + } + next.pending_restore = None; + let receipt = GateRestoreReceipt { + operation_id: operation_id.into(), + scope_id: scope_id.into(), + scope, + generation: next.generation, + committed, + }; + next.completed_restores + .insert(scope_id.to_string(), receipt.clone()); + self.lease.gate.save(&mut state, next)?; + self.lease.gate.refresh_runtime_flag(&state); + receipt + }; + if committed { + self.lease + .gate + .publish(receipt.generation, ChangeOrigin::Restore); + } + Ok(receipt) + } +} + +impl Drop for ExclusiveLease { + fn drop(&mut self) { + if let Ok(mut state) = self.gate.state.lock() { + state.exclusive = false; + match state.epoch.checked_add(1) { + Some(next) => state.epoch = next, + None => { + state.io_fault = true; + self.gate.runtime_blocked.store(true, Ordering::Release); + } + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + struct Temp(PathBuf); + impl Temp { + fn new() -> Self { + let path = + std::env::temp_dir().join(format!("sync-gate-fixture-{}", uuid::Uuid::new_v4())); + std::fs::create_dir_all(&path).unwrap(); + Self(path) + } + } + impl Drop for Temp { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.0); + } + } + #[test] + fn nested_completion_flushes_only_after_last_abort_or_local_only_commit() { + for local_only in [false, true] { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + let changes = gate.subscribe(); + let outer = gate.begin_mutation().unwrap(); + let inner = gate.begin_mutation().unwrap(); + inner.commit(ChangeOrigin::User).unwrap(); + assert!(!changes.has_changed().unwrap()); + if local_only { + outer.commit(ChangeOrigin::LocalOnly).unwrap(); + } else { + outer.abort_unmodified().unwrap(); + } + assert!(changes.has_changed().unwrap()); + assert_eq!(changes.borrow().generation, gate.generation().unwrap()); + } + } + #[test] + fn exclusive_clones_hold_barrier_and_rollback_changes_capture_epoch() { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + let before = gate.coherent_generation().unwrap(); + let first = gate.try_exclusive().unwrap(); + let last = first.clone(); + drop(first); + assert!(gate.begin_mutation().is_err()); + drop(last); + let after = gate.coherent_generation().unwrap(); + assert_eq!(before.0, after.0); + assert_ne!(before.1, after.1); + } + #[test] + fn delayed_old_notification_cannot_move_watch_backwards() { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + gate.publish(Revision::new(2), ChangeOrigin::User); + gate.publish(Revision::new(1), ChangeOrigin::User); + assert_eq!(gate.subscribe().borrow().generation, Revision::new(2)); + } + #[cfg(unix)] + #[test] + fn aliases_missing_descendants_and_escaping_symlinks_cannot_bypass_gate() { + let temp = Temp::new(); + let root = temp.0.join("data"); + std::fs::create_dir(&root).unwrap(); + let gate = open_for_data_dir(&root).unwrap(); + let alias = temp.0.join("alias"); + std::os::unix::fs::symlink(&root, &alias).unwrap(); + let permit = gate.try_exclusive().unwrap(); + for path in [ + alias.join("preferences.json"), + alias.join("missing/nested/preferences.json"), + ] { + assert!(with_registered_mutation(&path, ChangeOrigin::User, || { + crate::persistence::atomic_write(&path, b"{}") + }) + .is_err()); + assert!(!path.exists()); + } + std::os::unix::fs::symlink(temp.0.join("outside"), root.join("escape")).unwrap(); + assert!(gate_for_path(&root.join("escape/preferences.json")).is_err()); + drop(permit); + assert_eq!(gate.generation().unwrap(), Revision::new(0)); + } + #[test] + fn unfinished_mutation_survives_reopen_and_only_reconciliation_clears_it() { + let temp = Temp::new(); + let path = temp.0.join("state.json"); + let gate = SyncWriteGate::open(path.clone()).unwrap(); + drop(gate.begin_mutation().unwrap()); + drop(gate); + let gate = SyncWriteGate::open(path).unwrap(); + assert!(gate.recovery_required().unwrap()); + let permit = gate.try_exclusive_recovery().unwrap(); + permit.accept_reconciled_capture().unwrap(); + drop(permit); + assert_eq!(gate.generation().unwrap(), Revision::new(1)); + assert!(!gate.recovery_required().unwrap()); + } + #[test] + fn persist_rejects_unreadable_size_before_replacing_existing_state() { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + let path = temp.0.join("encrypted-sync/generation.json"); + let before = std::fs::read(&path).unwrap(); + let mut state = gate.lock().unwrap().stored.clone(); + state.incomplete_mutations.insert("x".repeat(1024 * 1024)); + assert!(persist(&path, &state).is_err()); + assert_eq!(std::fs::read(&path).unwrap(), before); + assert!(decode(&before).is_ok()); + } + #[test] + fn lost_counter_never_resets_an_initialized_gate_or_existing_protected_state() { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + let path = temp.0.join("encrypted-sync/generation.json"); + gate.begin_mutation() + .unwrap() + .commit(ChangeOrigin::User) + .unwrap(); + drop(gate); + std::fs::remove_file(&path).unwrap(); + assert!(matches!( + SyncWriteGate::open(path), + Err(DocumentError::RecoveryRequired) + )); + let other = Temp::new(); + std::fs::create_dir(other.0.join("encrypted-sync")).unwrap(); + std::fs::write(other.0.join("encrypted-sync/fixture.enc"), b"ciphertext").unwrap(); + assert!(matches!( + open_for_data_dir(&other.0), + Err(DocumentError::RecoveryRequired) + )); + } + + #[test] + fn runtime_recovery_flag_does_not_wait_for_state_lock_or_file_io() { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + let held = gate.state.lock().unwrap(); + assert!(!gate.recovery_required().unwrap()); + drop(held); + drop(gate.begin_mutation().unwrap()); + let held = gate.state.lock().unwrap(); + assert!(gate.recovery_required().unwrap()); + drop(held); + } + #[test] + fn inner_success_followed_by_outer_failure_keeps_an_uncertain_outer_intent() { + let temp = Temp::new(); + let gate = open_for_data_dir(&temp.0).unwrap(); + let path = temp.0.join("preferences.json"); + let result: Result<(), crate::BackendError> = + with_registered_mutation(&path, ChangeOrigin::User, || { + with_registered_mutation(&path, ChangeOrigin::User, || { + crate::persistence::atomic_write(&path, b"{}") + })?; + Err(crate::BackendError::new( + crate::BackendErrorCode::Persistence, + "later outer step failed", + )) + }); + assert!(result.is_err()); + assert!(gate.recovery_required().unwrap()); + assert_eq!(std::fs::read(path).unwrap(), b"{}"); + let permit = gate.try_exclusive_recovery().unwrap(); + assert_eq!(permit.generation().unwrap(), Revision::new(1)); + assert!(!gate.lock().unwrap().stored.incomplete_mutations.is_empty()); + } + #[cfg(unix)] + #[test] + fn aliased_root_with_final_or_intermediate_escape_cannot_bypass_held_exclusive() { + let temp = Temp::new(); + let root = temp.0.join("data"); + std::fs::create_dir(&root).unwrap(); + let gate = open_for_data_dir(&root).unwrap(); + let alias = temp.0.join("alias"); + std::os::unix::fs::symlink(&root, &alias).unwrap(); + let outside = temp.0.join("outside"); + std::fs::create_dir(&outside).unwrap(); + std::fs::write(outside.join("preferences.json"), b"outside").unwrap(); + std::os::unix::fs::symlink( + outside.join("preferences.json"), + root.join("preferences.json"), + ) + .unwrap(); + std::os::unix::fs::symlink(&outside, root.join("escape")).unwrap(); + let _permit = gate.try_exclusive().unwrap(); + for path in [ + alias.join("preferences.json"), + alias.join("escape/preferences.json"), + ] { + assert!(with_registered_mutation(&path, ChangeOrigin::User, || { + crate::persistence::atomic_write(&path, b"changed") + }) + .is_err()); + } + assert_eq!( + std::fs::read(outside.join("preferences.json")).unwrap(), + b"outside" + ); + assert_eq!(gate.generation().unwrap(), Revision::new(0)); + } + #[cfg(unix)] + #[test] + fn managed_final_link_into_a_nested_registered_root_never_borrows_its_permit() { + let temp = Temp::new(); + let outer = open_for_data_dir(&temp.0).unwrap(); + let nested = temp.0.join("child"); + let inner = open_for_data_dir(&nested).unwrap(); + let target = nested.join("existing.json"); + std::fs::write(&target, b"child").unwrap(); + let link = temp.0.join("preferences.json"); + std::os::unix::fs::symlink(&target, &link).unwrap(); + let _permit = outer.try_exclusive().unwrap(); + assert!(with_registered_mutation(&link, ChangeOrigin::User, || { + crate::persistence::atomic_write(&link, b"outer") + }) + .is_err()); + assert!(std::fs::symlink_metadata(&link) + .unwrap() + .file_type() + .is_symlink()); + assert_eq!(std::fs::read(target).unwrap(), b"child"); + assert_eq!(outer.generation().unwrap(), Revision::new(0)); + assert_eq!(inner.generation().unwrap(), Revision::new(0)); + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/journal.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/journal.rs new file mode 100644 index 000000000..1cf20dc85 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/journal.rs @@ -0,0 +1,136 @@ +use std::io::Read; +use std::path::PathBuf; +use std::sync::Arc; + +use futures_util::future::BoxFuture; + +use crate::cloud_sync_e2ee_documents::{ + DocumentError, DocumentResult, JournalStore, SealedJournal, SyncScope, MAX_JOURNAL_BYTES, +}; + +use super::{state::scope_id, SyncWriteGate}; + +const MAGIC: &[u8; 8] = b"OLSJRNL1"; + +pub(super) struct FileJournalStore { + directory: PathBuf, + gate: Arc, +} +impl FileJournalStore { + pub fn new(directory: PathBuf, gate: Arc) -> Self { + Self { directory, gate } + } + fn path(&self, scope: &SyncScope) -> DocumentResult { + Ok(self + .directory + .join(format!("restore-{}.bin", scope_id(scope)?))) + } +} + +fn sync_directory(path: &std::path::Path) -> DocumentResult<()> { + #[cfg(unix)] + std::fs::File::open(path) + .and_then(|file| file.sync_all()) + .map_err(|_| DocumentError::JournalUnavailable)?; + Ok(()) +} + +impl JournalStore for FileJournalStore { + fn load(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + let path = self.path(&scope)?; + tokio::task::spawn_blocking(move || { + match std::fs::symlink_metadata(&path) { + Ok(metadata) if metadata.file_type().is_symlink() => { + return Err(DocumentError::RecoveryRequired) + } + Err(error) if error.kind() == std::io::ErrorKind::NotFound => return Ok(None), + Err(_) => return Err(DocumentError::JournalUnavailable), + _ => {} + } + let mut bytes = Vec::new(); + std::fs::File::open(path) + .map_err(|_| DocumentError::JournalUnavailable)? + .take((MAX_JOURNAL_BYTES + 129 + 44) as u64) + .read_to_end(&mut bytes) + .map_err(|_| DocumentError::JournalUnavailable)?; + if bytes.len() < 44 + || bytes.len() > MAX_JOURNAL_BYTES + 128 + 44 + || !bytes.starts_with(MAGIC) + { + return Err(DocumentError::RecoveryRequired); + } + let operation_id = std::str::from_utf8(&bytes[8..44]) + .map_err(|_| DocumentError::RecoveryRequired)? + .to_string(); + let id = uuid::Uuid::parse_str(&operation_id) + .map_err(|_| DocumentError::RecoveryRequired)?; + if id.get_version() != Some(uuid::Version::Random) || id.to_string() != operation_id + { + return Err(DocumentError::RecoveryRequired); + } + Ok(Some(SealedJournal { + operation_id, + ciphertext: bytes[44..].to_vec(), + })) + }) + .await + .map_err(|_| DocumentError::JournalUnavailable)? + }) + } + + fn save(&self, scope: SyncScope, journal: SealedJournal) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + let path = self.path(&scope)?; + let guard = self.gate.clone_exclusive_for_metadata()?; + if journal.operation_id.len() != 36 + || journal.ciphertext.is_empty() + || journal.ciphertext.len() > MAX_JOURNAL_BYTES + 128 + { + return Err(DocumentError::JournalUnavailable); + } + tokio::task::spawn_blocking(move || { + // This clone keeps ordinary writes blocked even if the waiting future is dropped. + let _guard = guard; + let mut bytes = Vec::with_capacity(44 + journal.ciphertext.len()); + bytes.extend_from_slice(MAGIC); + bytes.extend_from_slice(journal.operation_id.as_bytes()); + bytes.extend_from_slice(&journal.ciphertext); + crate::persistence::atomic_write(&path, &bytes) + .map_err(|_| DocumentError::JournalUnavailable) + }) + .await + .map_err(|_| DocumentError::JournalUnavailable)? + }) + } + + fn clear(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + let path = self.path(&scope)?; + let scope_id = scope_id(&scope)?; + let guard = self.gate.clone_exclusive_for_metadata()?; + tokio::task::spawn_blocking(move || { + let operation = std::fs::File::open(&path).ok().and_then(|file| { + let mut bytes = Vec::new(); + file.take(44).read_to_end(&mut bytes).ok()?; + bytes + .get(8..44) + .and_then(|bytes| std::str::from_utf8(bytes).ok()) + .map(str::to_owned) + }); + match std::fs::remove_file(&path) { + Ok(()) => {} + Err(error) if error.kind() == std::io::ErrorKind::NotFound => return Ok(()), + Err(_) => return Err(DocumentError::JournalUnavailable), + } + sync_directory(path.parent().ok_or(DocumentError::JournalUnavailable)?)?; + if let Some(operation) = operation { + guard.forget_completed_restore(&operation, &scope_id)?; + } + Ok(()) + }) + .await + .map_err(|_| DocumentError::JournalUnavailable)? + }) + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/mod.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/mod.rs new file mode 100644 index 000000000..97829cd08 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/mod.rs @@ -0,0 +1,600 @@ +//! Native repository adapter for encrypted sync. +//! Complete logical restoration is protected by an encrypted crash journal. + +mod capture; +pub mod extensions; +pub mod gate; +mod journal; +mod native; +mod state; + +use std::path::PathBuf; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; + +use futures_util::future::BoxFuture; + +use crate::cloud_sync_e2ee_documents::{ + DocumentError, DocumentResult, ExportedDocuments, RestoreBackend, RestoreContext, RestoreLease, + SecretJson, SyncScope, ValidatedSyncDocuments, +}; +use crate::cloud_sync_e2ee_protocol::types::{DocumentSet, Revision, SourceDevice}; +use crate::{BackendRepositories, CredentialStore}; + +pub use extensions::{DeviceExtensionKey, ProtectedExtensionStore}; +pub use gate::{ChangeOrigin, ExclusivePermit, MutationPermit, SyncChange, SyncWriteGate}; + +#[derive(Clone)] +pub struct CoreSyncStore { + inner: Arc, +} + +struct Inner { + repositories: BackendRepositories, + credentials: Arc, + data_dir: PathBuf, + device: SourceDevice, + gate: Arc, + extensions: Arc, + restoring: AtomicBool, + metadata: tokio::sync::Mutex<()>, + runtime_idle: std::sync::Mutex bool + Send + Sync>>>, + runtime_effects: std::sync::Mutex>>, +} + +impl CoreSyncStore { + pub fn new( + repositories: BackendRepositories, + credentials: Arc, + data_dir: PathBuf, + device: SourceDevice, + gate: Arc, + extensions: Arc, + ) -> DocumentResult { + let registered = gate::open_for_data_dir(&data_dir)?; + if !Arc::ptr_eq(®istered, &gate) { + return Err(DocumentError::InvalidDocument); + } + credentials + .bind_sync_gate(Arc::clone(&gate)) + .map_err(|_| DocumentError::Locked)?; + repositories + .activity + .bind_sync_device(&device.id) + .map_err(|_| DocumentError::CaptureFailed)?; + Ok(Self { + inner: Arc::new(Inner { + repositories, + credentials, + data_dir, + device, + gate, + extensions, + restoring: AtomicBool::new(false), + metadata: tokio::sync::Mutex::new(()), + runtime_idle: std::sync::Mutex::new(None), + runtime_effects: std::sync::Mutex::new(None), + }), + }) + } + + pub fn generation(&self) -> DocumentResult { + self.inner.gate.generation() + } + pub fn device(&self) -> SourceDevice { + self.inner.device.clone() + } + pub fn changes(&self) -> tokio::sync::watch::Receiver { + self.inner.gate.subscribe() + } + + /// Core binds its shared dictation/insertion/agent session-state probe before startup recovery. + pub fn bind_runtime_idle_probe( + &self, + probe: Arc bool + Send + Sync>, + ) -> DocumentResult<()> { + let mut slot = self + .inner + .runtime_idle + .lock() + .map_err(|_| DocumentError::RecoveryRequired)?; + if slot.is_some() { + return Err(DocumentError::InvalidDocument); + } + *slot = Some(probe); + Ok(()) + } + + /// Install a real, absolute Host effects adapter before allowing restores. + pub fn bind_runtime_effects( + &self, + effects: Arc, + ) -> DocumentResult<()> { + let mut slot = self + .inner + .runtime_effects + .lock() + .map_err(|_| DocumentError::RecoveryRequired)?; + if slot.is_some() { + return Err(DocumentError::InvalidDocument); + } + *slot = Some(effects); + Ok(()) + } + + fn runtime_effects(&self) -> DocumentResult> { + self.inner + .runtime_effects + .lock() + .map_err(|_| DocumentError::RecoveryRequired)? + .clone() + .ok_or(DocumentError::Unsupported) + } + + async fn apply_runtime_effects(&self, permit: &ExclusivePermit) -> DocumentResult<()> { + if !permit.belongs_to(&self.inner.gate) { + return Err(DocumentError::InvalidDocument); + } + let effects = self.runtime_effects()?; + let target = self.inner.repositories.preferences.get(); + effects + .apply_target(target) + .await + .map_err(|_| DocumentError::CaptureFailed) + } + + /// Ordinary runtime starts must check this while holding Core's shared runtime lock. + pub fn is_recovering(&self) -> bool { + self.inner.restoring.load(Ordering::Acquire) + || self.inner.gate.recovery_required().unwrap_or(true) + } + pub fn ensure_runtime_available(&self) -> DocumentResult<()> { + if self.is_recovering() { + Err(DocumentError::RecoveryRequired) + } else { + Ok(()) + } + } + + /// Local-only eligibility sample. Callers recheck this stamp after credential reads. + pub(crate) fn setup_prompt_state( + &self, + ) -> DocumentResult> { + if self.is_recovering() { + return Ok(None); + } + let probe = self + .inner + .runtime_idle + .lock() + .map_err(|_| DocumentError::RecoveryRequired)? + .clone(); + let Some(probe) = probe else { + return Ok(None); + }; + if !probe() { + return Ok(None); + } + let stamp = match self.inner.gate.coherent_generation() { + Ok(stamp) => stamp, + Err(DocumentError::SourceChanged | DocumentError::RecoveryRequired) => return Ok(None), + Err(error) => return Err(error), + }; + let preferences = self.inner.repositories.preferences.get(); + if self.is_recovering() + || !probe() + || self.inner.gate.coherent_generation().ok() != Some(stamp) + { + return Ok(None); + } + Ok(Some((preferences, stamp))) + } + + pub async fn export_scope(&self, scope: SyncScope) -> DocumentResult { + self.validate_local_scope(&scope)?; + let _metadata = self.inner.metadata.lock().await; + self.capture_readonly(&scope).await + } + + pub async fn restore_scope( + &self, + desired: ValidatedSyncDocuments, + context: RestoreContext, + ) -> DocumentResult { + self.validate_local_scope(&context.scope)?; + let scope = context.scope.clone(); + let desired = native::canonicalize_native_documents(desired)?; + let plan = crate::cloud_sync_e2ee_documents::prepare_sync_restore(desired, context)?; + let store = self.clone(); + // Detach only the owned, journalled operation: dropping an IPC waiter cannot cancel it. + tokio::spawn(async move { + let _metadata = store.inner.metadata.lock().await; + let _runtime = store.begin_runtime_restore()?; + store.runtime_effects()?; + let protector = store.inner.extensions.journal_protector().await?; + let journal = store.journal(); + crate::cloud_sync_e2ee_documents::apply_sync_restore( + plan, + &store, + &journal, + protector.as_ref(), + ) + .await?; + let permit = store.inner.gate.try_exclusive()?; + store.capture_locked(&scope, &permit).await + }) + .await + .map_err(|_| DocumentError::RecoveryRequired)? + } + + pub async fn record_baseline( + &self, + scope: SyncScope, + documents: DocumentSet, + revision: Revision, + ) -> DocumentResult<()> { + self.validate_local_scope(&scope)?; + let store = self.clone(); + tokio::spawn(async move { + let _metadata = store.inner.metadata.lock().await; + store.baseline_locked(&scope, documents, revision).await + }) + .await + .map_err(|_| DocumentError::RecoveryRequired)? + } + + pub async fn recover_registered(&self) -> DocumentResult<()> { + let scopes = self.inner.gate.registered_recovery_scopes()?; + if scopes.is_empty() && !self.inner.gate.recovery_required()? { + return Ok(()); + } + let store = self.clone(); + tokio::spawn(async move { + use crate::cloud_sync_e2ee_documents::JournalStore; + let _metadata = store.inner.metadata.lock().await; + let _runtime = store.begin_runtime_restore()?; + // Recovery needs the same real Host adapter before reading protected journals + // or prompting for keys; unsupported recovery must leave the pending bytes intact. + store.runtime_effects()?; + let journal = store.journal(); + for scope in scopes { + if journal.load(scope.clone()).await?.is_none() { + let permit = store.inner.gate.try_exclusive_recovery()?; + let scope_id = state::scope_id(&scope)?; + permit.recover_without_journal(&scope_id)?; + permit.forget_completed_scope_without_journal(&scope_id)?; + } else { + let protector = store.inner.extensions.journal_protector().await?; + crate::cloud_sync_e2ee_documents::recover_sync_restore( + scope, + &store, + &journal, + protector.as_ref(), + ) + .await?; + } + } + if store.inner.gate.recovery_required()? { + let permit = store.inner.gate.try_exclusive_recovery()?; + store.reconcile_native(&permit).await?; + store.apply_runtime_effects(&permit).await?; + permit.accept_reconciled_capture()?; + } + Ok(()) + }) + .await + .map_err(|_| DocumentError::RecoveryRequired)? + } + + fn validate_local_scope(&self, scope: &SyncScope) -> DocumentResult<()> { + crate::cloud_sync_e2ee_documents::validate_scope(scope)?; + if scope.device_id != self.inner.device.id { + return Err(DocumentError::InvalidDocument); + } + Ok(()) + } + fn journal(&self) -> journal::FileJournalStore { + journal::FileJournalStore::new( + self.inner.data_dir.join("encrypted-sync"), + Arc::clone(&self.inner.gate), + ) + } + fn begin_runtime_restore(&self) -> DocumentResult { + self.inner + .restoring + .compare_exchange(false, true, Ordering::AcqRel, Ordering::Acquire) + .map_err(|_| DocumentError::SourceChanged)?; + let guard = RuntimeRestore(self.clone()); + let probe = self + .inner + .runtime_idle + .lock() + .map_err(|_| DocumentError::RecoveryRequired)? + .clone() + .ok_or(DocumentError::Unsupported)?; + if !probe() { + return Err(DocumentError::RuntimeBusy); + } + Ok(guard) + } + + async fn reconcile_native(&self, permit: &ExclusivePermit) -> DocumentResult<()> { + // No UI mirror or sync key is required to reconcile an interrupted ordinary save. + let repo = &self.inner.repositories; + repo.preferences + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repo.vocabulary + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repo.correction_rules + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repo.history + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let styles = repo + .style_packs + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + for style in styles { + if let Some(path) = style + .pack + .expose() + .get("iconPath") + .and_then(serde_json::Value::as_str) + { + crate::persistence::ensure_durable_file(std::path::Path::new(path)) + .map_err(|_| DocumentError::RecoveryRequired)?; + } + } + for name in [ + "preferences.json", + "history.json", + "activity.json", + "dictionary.json", + "correction-rules.json", + "style-packs.json", + "vocab-presets.json", + ] { + let path = self.inner.data_dir.join(name); + if path.exists() { + crate::persistence::ensure_durable_file(&path) + .map_err(|_| DocumentError::RecoveryRequired)?; + } + } + repo.activity + .sync_records(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + crate::vocabulary::list_vocab_presets(&self.inner.data_dir) + .map_err(|_| DocumentError::CaptureFailed)?; + let credentials = self + .inner + .credentials + .export_sync_credentials(permit) + .await + .map_err(|_| DocumentError::CaptureFailed)?; + crate::cloud_sync_e2ee_documents::validate_credential_set( + &credentials.channels, + &credentials.credentials, + ) + } + + pub async fn set_ui_preferences(&self, value: SecretJson) -> DocumentResult<()> { + self.set_ui_preferences_inner(value, None).await + } + + pub async fn set_ui_preferences_checked( + &self, + value: SecretJson, + expected_revision: Option, + ) -> DocumentResult<()> { + self.set_ui_preferences_inner(value, Some(expected_revision)) + .await + } + + async fn set_ui_preferences_inner( + &self, + value: SecretJson, + expected_revision: Option>, + ) -> DocumentResult<()> { + let map = value + .expose() + .as_object() + .ok_or(DocumentError::InvalidDocument)?; + if map.len() != 2 || !map.contains_key("locale") || !map.contains_key("fontScale") { + return Err(DocumentError::InvalidDocument); + } + let locale = map["locale"] + .as_str() + .ok_or(DocumentError::InvalidDocument)?; + let font = map["fontScale"] + .as_str() + .ok_or(DocumentError::InvalidDocument)?; + if ![ + "system", "zh-CN", "zh-TW", "en", "ja", "ko", "es", "fr", "de", + ] + .contains(&locale) + || !["small", "medium", "large"].contains(&font) + { + return Err(DocumentError::InvalidDocument); + } + let store = self.clone(); + tokio::spawn(async move { + let _metadata = store.inner.metadata.lock().await; + let permit = store.inner.gate.begin_mutation()?; + if let Some(expected) = expected_revision { + let current = match store.inner.extensions.read_ui_revision().await { + Ok(value) => value, + Err(error) => { + permit.abort_unmodified()?; + return Err(error); + } + }; + if current != expected { + permit.abort_unmodified()?; + return Err(DocumentError::StalePreview); + } + } + let previous = match store + .inner + .extensions + .read_device(DeviceExtensionKey::UiPreferences) + .await + { + Ok(value) => value, + Err(error) => { + permit.abort_unmodified()?; + return Err(error); + } + }; + if previous.as_ref() == Some(&value) { + return permit.abort_unmodified(); + } + store + .inner + .extensions + .write_device(DeviceExtensionKey::UiPreferences, value) + .await?; + permit.commit(ChangeOrigin::User).map(|_| ()) + }) + .await + .map_err(|_| DocumentError::RecoveryRequired)? + } +} + +struct RuntimeRestore(CoreSyncStore); +impl Drop for RuntimeRestore { + fn drop(&mut self) { + self.0.inner.restoring.store(false, Ordering::Release); + } +} + +struct NativeLease { + store: CoreSyncStore, + scope: SyncScope, + scope_id: String, + permit: ExclusivePermit, +} +impl RestoreBackend for CoreSyncStore { + fn acquire( + &self, + scope: SyncScope, + expected_generation: Option, + ) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + self.validate_local_scope(&scope)?; + let permit = if expected_generation.is_some() { + self.inner.gate.try_exclusive()? + } else { + self.inner.gate.try_exclusive_recovery()? + }; + if expected_generation + .is_some_and(|expected| permit.generation().ok() != Some(expected)) + { + return Err(DocumentError::StalePreview); + } + let scope_id = state::scope_id(&scope)?; + Ok(Box::new(NativeLease { + store: self.clone(), + scope, + scope_id, + permit, + }) as Box) + }) + } +} + +impl RestoreLease for NativeLease { + fn capture( + &mut self, + ) -> BoxFuture<'_, DocumentResult> { + Box::pin(async move { + let state = state::ScopeState::decode( + &self.scope, + self.store + .inner + .extensions + .read_scope(self.scope.clone()) + .await?, + )?; + self.store + .capture_native(&self.scope, &self.permit, &state) + .await + }) + } + fn capture_rollback_state(&mut self) -> BoxFuture<'_, DocumentResult> { + Box::pin(async move { self.store.capture_local_rollback_state(&self.permit) }) + } + fn restore_rollback_state(&mut self, value: &SecretJson) -> BoxFuture<'_, DocumentResult<()>> { + let value = value.clone(); + Box::pin(async move { + self.store + .restore_local_rollback_state(&value, &self.permit)?; + // Excluded local grants/mirrors are restored after the logical rollback. + // The Host must converge to that final target before the fence is released. + self.store.apply_runtime_effects(&self.permit).await + }) + } + fn preflight( + &mut self, + documents: &ValidatedSyncDocuments, + ) -> BoxFuture<'_, DocumentResult<()>> { + let documents = documents.clone(); + Box::pin(async move { + self.store.runtime_effects()?; + self.store + .validate_native(&self.scope, &documents, &self.permit) + .await + }) + } + fn replace(&mut self, documents: ValidatedSyncDocuments) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + self.store.runtime_effects()?; + self.store + .replace_native(&self.scope, &documents, &self.permit) + .await + }) + } + fn reload(&mut self) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { self.store.apply_runtime_effects(&self.permit).await }) + } + fn mark_recovery_pending(&mut self, operation_id: &str) -> DocumentResult<()> { + self.permit + .mark_restore_pending(operation_id, &self.scope_id, &self.scope) + } + fn mark_journal_ready(&mut self, operation_id: &str) -> DocumentResult<()> { + self.permit.mark_journal_ready(operation_id, &self.scope_id) + } + fn recover_without_journal(&mut self) -> DocumentResult<()> { + self.permit.recover_without_journal(&self.scope_id) + } + fn completed_restore( + &self, + operation_id: &str, + ) -> DocumentResult> { + self.permit + .completed_restore(operation_id, &self.scope_id) + .map(|value| value.map(receipt)) + } + fn finish_restore( + &mut self, + operation_id: &str, + committed: bool, + ) -> DocumentResult { + self.permit + .finish_restore(operation_id, &self.scope_id, committed) + .map(receipt) + } +} +fn receipt(value: gate::GateRestoreReceipt) -> crate::cloud_sync_e2ee_documents::RestoreReceipt { + crate::cloud_sync_e2ee_documents::RestoreReceipt { + operation_id: value.operation_id, + generation: value.generation, + committed: value.committed, + journal_cleanup_pending: false, + } +} + +#[cfg(test)] +mod tests; diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/native.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/native.rs new file mode 100644 index 000000000..4a30c0940 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/native.rs @@ -0,0 +1,477 @@ +//! Materialization is preflighted completely before the first repository write. +use super::{state::ScopeState, CoreSyncStore, DeviceExtensionKey, ExclusivePermit}; +use crate::cloud_sync_e2ee_documents::registry::{preference_field, PreferenceClass}; +use crate::cloud_sync_e2ee_documents::*; +use crate::cloud_sync_e2ee_protocol::types::{DocumentKind, LogicalDocument}; +use crate::credentials::SyncCredentials; +use crate::types::{ + CorrectionRule, DictationSession, DictionaryEntry, VocabPreset, VocabPresetStore, +}; +use serde::de::DeserializeOwned; +use serde_json::Value; + +struct NativeRestore { + preferences: Value, + ui: SecretJson, + windows: SecretJson, + credentials: SyncCredentials, + dictionary: Vec, + corrections: Vec, + history: Vec, + presets: VocabPresetStore, + styles: Vec, + activity: Vec, + state: ScopeState, +} + +fn typed(value: &Value) -> DocumentResult { + serde_json::from_value(value.clone()).map_err(|_| DocumentError::Unsupported) +} +fn ordered( + documents: &[LogicalDocument], + kind: DocumentKind, +) -> DocumentResult> { + let mut values: Vec<_> = documents.iter().filter(|doc| doc.kind == kind).collect(); + values.sort_by_key(|doc| { + doc.value + .get("sortIndex") + .and_then(Value::as_u64) + .unwrap_or(0) + }); + values.into_iter().map(|doc| typed(&doc.value)).collect() +} + +pub(super) fn canonicalize_native_documents( + desired: ValidatedSyncDocuments, +) -> DocumentResult { + let mut set = desired.documents().clone(); + for doc in &mut set.documents { + let original = doc.value.clone(); + let mut canonical = match doc.kind { + DocumentKind::Dictionary => serde_json::to_value(typed::(&original)?), + DocumentKind::Corrections => serde_json::to_value(typed::(&original)?), + DocumentKind::History => serde_json::to_value(typed::(&original)?), + DocumentKind::StylePacks => { + let mut record: StylePackRecord = typed(&original)?; + let pack: crate::style_packs::StylePack = typed(record.pack.expose())?; + let mut canonical = + serde_json::to_value(pack).map_err(|_| DocumentError::InvalidDocument)?; + crate::persistence::ensure_lossless_value(record.pack.expose(), &canonical, &[]) + .map_err(|_| DocumentError::Unsupported)?; + canonical + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .remove("iconPath"); + canonical + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .remove("active"); + record.pack = SecretJson::new(canonical); + serde_json::to_value(record) + } + _ => continue, + } + .map_err(|_| DocumentError::InvalidDocument)?; + crate::persistence::ensure_lossless_value(&original, &canonical, &["sortIndex"]) + .map_err(|_| DocumentError::Unsupported)?; + if let Some(index) = original.get("sortIndex") { + canonical + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)? + .insert("sortIndex".into(), index.clone()); + } + doc.value = canonical; + } + validate_sync_documents(set, desired.observed_revision()) +} + +#[derive(serde::Serialize, serde::Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct LocalRollbackState { + schema_version: u32, + coding_agent_enabled: bool, + active_asr_provider: String, + active_llm_provider: String, + active_omni_provider: String, + /// Receiver-only availability; no audio bytes or paths ever enter the journal. + history_audio_markers: std::collections::BTreeMap>, +} + +impl CoreSyncStore { + pub(super) fn capture_local_rollback_state( + &self, + permit: &ExclusivePermit, + ) -> DocumentResult { + let value = self + .inner + .repositories + .preferences + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let prefs: crate::shared_types::UserPreferences = typed(&value)?; + let history = self + .inner + .repositories + .history + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let mut history_audio_markers = std::collections::BTreeMap::new(); + for record in history { + if history_audio_markers + .insert(record.id, record.has_audio_recording) + .is_some() + { + return Err(DocumentError::DuplicateId); + } + } + SecretJson::from_serializable(&LocalRollbackState { + schema_version: 1, + coding_agent_enabled: prefs.coding_agent_enabled, + active_asr_provider: prefs.active_asr_provider, + active_llm_provider: prefs.active_llm_provider, + active_omni_provider: prefs.active_omni_provider, + history_audio_markers, + }) + } + pub(super) fn restore_local_rollback_state( + &self, + value: &SecretJson, + permit: &ExclusivePermit, + ) -> DocumentResult<()> { + let local: LocalRollbackState = typed(value.expose())?; + if local.schema_version != 1 { + return Err(DocumentError::Unsupported); + } + // Logical rollback restores the rows first. Require the same complete identity set, + // then restore only this receiver's original metadata, never a cloud media flag. + let mut history = self + .inner + .repositories + .history + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let ids: std::collections::BTreeSet<_> = + history.iter().map(|record| record.id.as_str()).collect(); + if ids.len() != history.len() + || history.len() != local.history_audio_markers.len() + || !ids + .iter() + .all(|id| local.history_audio_markers.contains_key(*id)) + { + return Err(DocumentError::RecoveryRequired); + } + for record in &mut history { + record.has_audio_recording = local.history_audio_markers[&record.id]; + } + self.inner + .repositories + .history + .sync_replace_all(&history, permit) + .map_err(|_| DocumentError::RecoveryRequired)?; + let mut current = self + .inner + .repositories + .preferences + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let object = current + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)?; + object.insert( + "codingAgentEnabled".into(), + Value::Bool(local.coding_agent_enabled), + ); + object.insert( + "activeAsrProvider".into(), + Value::String(local.active_asr_provider), + ); + object.insert( + "activeLlmProvider".into(), + Value::String(local.active_llm_provider), + ); + object.insert( + "activeOmniProvider".into(), + Value::String(local.active_omni_provider), + ); + self.inner + .repositories + .preferences + .sync_replace_raw(current, permit) + .map_err(|_| DocumentError::RecoveryRequired) + } + + async fn preflight_native( + &self, + scope: &SyncScope, + desired: &ValidatedSyncDocuments, + permit: &ExclusivePermit, + ) -> DocumentResult { + let mut state = ScopeState::decode( + scope, + self.inner.extensions.read_scope(scope.clone()).await?, + )?; + let current = self + .inner + .repositories + .preferences + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let mut preferences = current.clone(); + let map = preferences + .as_object_mut() + .ok_or(DocumentError::InvalidDocument)?; + // Unknown preferences have an encrypted home; never spread future keys into native files. + map.retain(|key, _| preference_field(key).is_some()); + let mut retained = Vec::new(); + let mut ui = serde_json::Map::new(); + let mut channels = Vec::new(); + let mut credentials = Vec::new(); + let mut windows = Vec::::new(); + let mut styles = Vec::::new(); + let mut activity = Vec::::new(); + let mut preset_records = Vec::::new(); + let docs = &desired.documents().documents; + for doc in docs { + match doc.kind { + DocumentKind::Preferences => match preference_field(&doc.id) { + Some(field) if field.class == PreferenceClass::Portable => { + map.insert(doc.id.clone(), doc.value.clone()); + } + None => retained.push(doc.clone()), + _ => return Err(DocumentError::ExcludedField), + }, + DocumentKind::UiPreferences + if matches!(doc.id.as_str(), "locale" | "fontScale") => + { + ui.insert(doc.id.clone(), doc.value.clone()); + } + DocumentKind::UiPreferences => retained.push(doc.clone()), + DocumentKind::Channels => channels.push(typed(&doc.value)?), + DocumentKind::ProviderCredentials => credentials.push(typed(&doc.value)?), + DocumentKind::DeviceProfile if doc.id == self.inner.device.id => { + let profile: DeviceProfileRecord = typed(&doc.value)?; + if profile.device.os != self.inner.device.os + || profile.device.arch != self.inner.device.arch + { + return Err(DocumentError::Unsupported); + } + for (key, value) in profile + .preferences + .expose() + .as_object() + .ok_or(DocumentError::InvalidDocument)? + { + if preference_field(key) + .is_none_or(|field| field.class != PreferenceClass::DeviceProfile) + { + return Err(DocumentError::Unsupported); + } + map.insert(key.clone(), value.clone()); + } + channels.extend(profile.channels); + credentials.extend(profile.provider_credentials); + windows = profile.window_positions; + } + DocumentKind::DeviceProfile => retained.push(doc.clone()), + DocumentKind::StylePacks => { + let record: StylePackRecord = typed(&doc.value)?; + let pack: crate::style_packs::StylePack = typed(record.pack.expose())?; + let known_builtin = crate::style_packs::builtin_style_packs() + .iter() + .any(|builtin| builtin.id == pack.id); + if known_builtin != (pack.kind == crate::style_packs::StylePackKind::Builtin) { + return Err(DocumentError::Unsupported); + } + if let Some(icon) = &record.icon { + validate_icon(icon)?; + } + styles.push(record); + } + DocumentKind::Activity => { + let record: ActivityRecord = typed(&doc.value)?; + u32::try_from(record.count).map_err(|_| DocumentError::Unsupported)?; + activity.push(record); + } + DocumentKind::VocabularyPresets => preset_records.push(typed(&doc.value)?), + DocumentKind::Dictionary | DocumentKind::Corrections | DocumentKind::History => {} + } + } + if styles.is_empty() + || !styles.iter().any(|style| { + style.pack.expose().get("enabled").and_then(Value::as_bool) == Some(true) + }) + { + return Err(DocumentError::InvalidReference); + } + // Restored executable/workspace data never silently activates an existing permission. + if [ + "codingAgentProvider", + "codingAgentModel", + "codingAgentPermissionMode", + "codingAgentExe", + "codingAgentWorkdir", + ] + .iter() + .any(|key| current.get(key) != map.get(*key)) + { + map.insert("codingAgentEnabled".into(), Value::Bool(false)); + } + validate_credential_set(&channels, &credentials)?; + for (namespace, key) in [ + (SyncNamespace::Asr, "activeAsrProvider"), + (SyncNamespace::Llm, "activeLlmProvider"), + (SyncNamespace::Omni, "activeOmniProvider"), + ] { + let active = channels + .iter() + .find(|channel| channel.namespace == namespace && channel.active) + .map(|channel| channel.id.clone()) + .unwrap_or_default(); + map.insert(key.into(), Value::String(active)); + } + let _: crate::shared_types::UserPreferences = typed(&preferences)?; + if !ui.contains_key("locale") || !ui.contains_key("fontScale") { + return Err(DocumentError::Unsupported); + } + preset_records.sort_by_key(|record| (record.order, record.id.clone())); + let builtin_ids: Vec<_> = crate::vocabulary::builtin_vocab_presets() + .into_iter() + .map(|item| item.id) + .collect(); + let mut presets = VocabPresetStore::default(); + for record in preset_records { + match record.origin { + PresetOrigin::BuiltinState => { + if !builtin_ids.contains(&record.id) { + return Err(DocumentError::Unsupported); + } + if !record.enabled { + presets.disabled_builtin_preset_ids.push(record.id); + } + } + origin => { + if !record.enabled { + return Err(DocumentError::Unsupported); + } + let preset = VocabPreset { + id: record.id, + name: record.name.ok_or(DocumentError::InvalidDocument)?, + phrases: record.phrases, + }; + if origin == PresetOrigin::Custom { + presets.custom.push(preset); + } else { + presets.overrides.push(preset); + } + } + } + } + // Availability is local metadata, never imported from the cloud. Existing records + // keep the receiver's own marker; newly restored records never claim remote media. + let local_history = self + .inner + .repositories + .history + .sync_snapshot(permit) + .map_err(|_| DocumentError::CaptureFailed)?; + let local_media: std::collections::BTreeMap<_, _> = local_history + .iter() + .map(|record| (record.id.as_str(), record.has_audio_recording)) + .collect(); + let mut history: Vec = ordered(docs, DocumentKind::History)?; + for record in &mut history { + record.has_audio_recording = local_media + .get(record.id.as_str()) + .copied() + .unwrap_or(Some(false)); + } + state.retained_documents = retained; + state.tombstones = desired.documents().tombstones.clone(); + state.observed_revision = desired.observed_revision(); + Ok(NativeRestore { + preferences, + ui: SecretJson::new(Value::Object(ui)), + windows: SecretJson::from_serializable(&windows)?, + credentials: SyncCredentials { + channels, + credentials, + }, + dictionary: ordered(docs, DocumentKind::Dictionary)?, + corrections: ordered(docs, DocumentKind::Corrections)?, + history, + presets, + styles, + activity, + state, + }) + } + + pub(super) async fn validate_native( + &self, + scope: &SyncScope, + desired: &ValidatedSyncDocuments, + permit: &ExclusivePermit, + ) -> DocumentResult<()> { + self.preflight_native(scope, desired, permit) + .await + .map(|_| ()) + } + + pub(super) async fn replace_native( + &self, + scope: &SyncScope, + desired: &ValidatedSyncDocuments, + permit: &ExclusivePermit, + ) -> DocumentResult<()> { + let prepared = self.preflight_native(scope, desired, permit).await?; + let repositories = &self.inner.repositories; + // The durable before/after journal and recovery marker already exist here. + repositories + .vocabulary + .sync_replace_all(&prepared.dictionary, permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repositories + .correction_rules + .sync_replace_all(&prepared.corrections, permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repositories + .history + .sync_replace_all(&prepared.history, permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repositories + .activity + .sync_replace_records(&prepared.activity, permit) + .map_err(|_| DocumentError::CaptureFailed)?; + crate::vocabulary::save_vocab_presets_for_sync( + &self.inner.data_dir, + &prepared.presets, + permit, + ) + .map_err(|_| DocumentError::CaptureFailed)?; + repositories + .style_packs + .sync_replace_all(&prepared.styles, permit) + .map_err(|_| DocumentError::CaptureFailed)?; + repositories + .preferences + .sync_replace_raw(prepared.preferences, permit) + .map_err(|_| DocumentError::CaptureFailed)?; + self.inner + .credentials + .replace_sync_credentials(prepared.credentials, permit) + .await + .map_err(|_| DocumentError::CaptureFailed)?; + self.inner + .extensions + .write_device(DeviceExtensionKey::UiPreferences, prepared.ui) + .await?; + self.inner + .extensions + .write_device(DeviceExtensionKey::WindowPositions, prepared.windows) + .await?; + self.inner + .extensions + .write_scope(scope.clone(), prepared.state.secret_json()?) + .await + } +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/state.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/state.rs new file mode 100644 index 000000000..3b743ef01 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/state.rs @@ -0,0 +1,58 @@ +use serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; + +use crate::cloud_sync_e2ee_documents::{DocumentError, DocumentResult, SecretJson, SyncScope}; +use crate::cloud_sync_e2ee_protocol::types::{DocumentSet, LogicalDocument, Revision, Tombstone}; + +#[derive(Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +pub(super) struct ScopeState { + pub schema_version: u32, + pub scope_id: String, + pub observed_revision: Revision, + pub baseline_revision: Revision, + pub baseline: Option, + pub retained_documents: Vec, + pub tombstones: Vec, +} + +impl ScopeState { + pub fn empty(scope: &SyncScope) -> DocumentResult { + Ok(Self { + schema_version: 1, + scope_id: scope_id(scope)?, + observed_revision: Revision::new(0), + baseline_revision: Revision::new(0), + baseline: None, + retained_documents: Vec::new(), + tombstones: Vec::new(), + }) + } + pub fn decode(scope: &SyncScope, value: Option) -> DocumentResult { + let Some(value) = value else { + return Self::empty(scope); + }; + let state: Self = serde_json::from_value(value.expose().clone()) + .map_err(|_| DocumentError::RecoveryRequired)?; + if state.schema_version != 1 || state.scope_id != scope_id(scope)? { + return Err(DocumentError::RecoveryRequired); + } + Ok(state) + } + pub fn secret_json(&self) -> DocumentResult { + SecretJson::from_serializable(self) + } +} + +/// Cloud key rotation changes encryption, not the account/vault's local logical baseline. +pub fn scope_id(scope: &SyncScope) -> DocumentResult { + let bytes = serde_json::to_vec(&( + "openless-local-documents-v1", + &scope.service_origin, + &scope.owner_github_id, + &scope.vault_id, + &scope.device_id, + )) + .map_err(|_| DocumentError::InvalidDocument)?; + Ok(format!("{:x}", Sha256::digest(bytes))) +} diff --git a/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/tests.rs b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/tests.rs new file mode 100644 index 000000000..73a2098d4 --- /dev/null +++ b/openless-all/app/crates/openless-core/src/cloud_sync_e2ee_store/tests.rs @@ -0,0 +1,1659 @@ +use super::*; +use crate::cloud_sync_e2ee_documents::*; +use crate::cloud_sync_e2ee_protocol::{ + crypto::DerivedKey, + types::{DocumentKind, LogicalDocument}, +}; +use crate::credentials::{CredentialKey, SecretValue, SyncCredentials}; +use crate::{BackendError, BackendErrorCode}; +use futures_util::future::BoxFuture; +use serde_json::{json, Value}; +use std::collections::{BTreeMap, VecDeque}; +use std::path::PathBuf; +use std::sync::{ + atomic::{AtomicBool, Ordering}, + Arc, Mutex, +}; +use zeroize::Zeroizing; + +struct Temp(PathBuf); +impl Temp { + fn new() -> Self { + let path = + std::env::temp_dir().join(format!("openless-sync-store-{}", uuid::Uuid::new_v4())); + std::fs::create_dir_all(&path).unwrap(); + Self(path) + } +} +impl Drop for Temp { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.0); + } +} + +#[derive(Clone)] +struct TestCredentials { + value: Arc>, + failures: Arc>>, + read_barrier: Arc>>>, + bound_gate: Arc>>>, +} +fn unsupported() -> BoxFuture<'static, Result> { + Box::pin(async { + Err(BackendError::new( + BackendErrorCode::Unsupported, + "fixture unused", + )) + }) +} +impl CredentialStore for TestCredentials { + fn bind_sync_gate(&self, gate: Arc) -> Result<(), BackendError> { + let mut bound = self.bound_gate.lock().unwrap(); + if bound + .as_ref() + .is_some_and(|existing| !Arc::ptr_eq(existing, &gate)) + { + return Err(BackendError::new( + BackendErrorCode::InvalidState, + "different sync gate", + )); + } + *bound = Some(gate); + Ok(()) + } + fn status( + &self, + _: crate::shared_types::UserPreferences, + ) -> BoxFuture<'static, Result> { + unsupported() + } + fn read( + &self, + _: CredentialKey, + ) -> BoxFuture<'static, Result, BackendError>> { + unsupported() + } + fn write( + &self, + _: CredentialKey, + _: SecretValue, + ) -> BoxFuture<'static, Result<(), BackendError>> { + unsupported() + } + fn remove(&self, _: CredentialKey) -> BoxFuture<'static, Result<(), BackendError>> { + unsupported() + } + fn export_sync_credentials_readonly( + &self, + ) -> BoxFuture<'static, Result> { + let this = self.clone(); + Box::pin(async move { + if this.bound_gate.lock().unwrap().is_none() { + return Err(BackendError::new( + BackendErrorCode::InvalidState, + "unbound sync gate", + )); + } + let value = this.value.lock().unwrap().clone(); + let barrier = this.read_barrier.lock().unwrap().clone(); + if let Some(barrier) = barrier { + barrier.wait().await; + barrier.wait().await; + } + Ok(value) + }) + } + fn export_sync_credentials( + &self, + permit: &ExclusivePermit, + ) -> BoxFuture<'static, Result> { + let valid = self + .bound_gate + .lock() + .unwrap() + .as_ref() + .is_some_and(|gate| permit.belongs_to(gate)); + let value = self.value.lock().unwrap().clone(); + Box::pin(async move { + if !valid { + return Err(BackendError::new( + BackendErrorCode::InvalidState, + "unbound sync gate", + )); + } + Ok(value) + }) + } + fn replace_sync_credentials( + &self, + value: SyncCredentials, + permit: &ExclusivePermit, + ) -> BoxFuture<'static, Result<(), BackendError>> { + let valid = self + .bound_gate + .lock() + .unwrap() + .as_ref() + .is_some_and(|gate| permit.belongs_to(gate)); + let this = self.clone(); + Box::pin(async move { + if !valid { + return Err(BackendError::new( + BackendErrorCode::InvalidState, + "unbound sync gate", + )); + } + if this.failures.lock().unwrap().pop_front().unwrap_or(false) { + return Err(BackendError::new( + BackendErrorCode::Persistence, + "fixture credential failure", + )); + } + *this.value.lock().unwrap() = value; + Ok(()) + }) + } +} +struct Extensions { + values: Mutex>, + protector: Arc, + key_requested: AtomicBool, + ui_revision: Mutex>, +} +impl ProtectedExtensionStore for Extensions { + fn read_scope(&self, scope: SyncScope) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + Ok(self + .values + .lock() + .unwrap() + .get(&state::scope_id(&scope)?) + .cloned()) + }) + } + fn write_scope( + &self, + scope: SyncScope, + value: SecretJson, + ) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + self.values + .lock() + .unwrap() + .insert(state::scope_id(&scope)?, value); + Ok(()) + }) + } + fn read_device( + &self, + key: DeviceExtensionKey, + ) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { Ok(self.values.lock().unwrap().get(key.storage_name()).cloned()) }) + } + fn write_device( + &self, + key: DeviceExtensionKey, + value: SecretJson, + ) -> BoxFuture<'_, DocumentResult<()>> { + Box::pin(async move { + self.values + .lock() + .unwrap() + .insert(key.storage_name().into(), value); + if key == DeviceExtensionKey::UiPreferences { + *self.ui_revision.lock().unwrap() = Some(uuid::Uuid::new_v4().to_string()); + } + Ok(()) + }) + } + fn read_ui_revision(&self) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { Ok(self.ui_revision.lock().unwrap().clone()) }) + } + fn journal_protector(&self) -> BoxFuture<'_, DocumentResult>> { + Box::pin(async move { + self.key_requested.store(true, Ordering::Release); + Ok(Arc::clone(&self.protector)) + }) + } +} +#[derive(Clone, Default)] +struct TestEffects { + targets: Arc>>, + failures: Arc>>, + wait: Arc>>>, + gate: Arc>>>, +} +impl crate::config::RestoreRuntimeEffects for TestEffects { + fn apply_target( + &self, + target: crate::shared_types::UserPreferences, + ) -> BoxFuture<'static, Result<(), BackendError>> { + let this = self.clone(); + Box::pin(async move { + let gate = this + .gate + .lock() + .unwrap() + .as_ref() + .and_then(std::sync::Weak::upgrade) + .unwrap(); + assert!( + gate.try_exclusive().is_err(), + "effects must remain inside the exclusive restore fence" + ); + assert!( + gate.begin_mutation().is_err(), + "ordinary writes must remain blocked during effects" + ); + this.targets.lock().unwrap().push(target); + let barrier = this.wait.lock().unwrap().clone(); + if let Some(barrier) = barrier { + barrier.wait().await; + barrier.wait().await; + } + if this.failures.lock().unwrap().pop_front().unwrap_or(false) { + Err(BackendError::new( + BackendErrorCode::Platform, + "fixture effects failure", + )) + } else { + Ok(()) + } + }) + } +} + +struct Fixture { + _temp: Temp, + store: CoreSyncStore, + repo: BackendRepositories, + credentials: TestCredentials, + extensions: Arc, + scope: SyncScope, + effects: TestEffects, +} +impl Fixture { + fn new() -> Self { + let temp = Temp::new(); + let gate = gate::open_for_data_dir(&temp.0).unwrap(); + let repo = BackendRepositories::open(&temp.0).unwrap(); + let credentials = TestCredentials { + value: Arc::new(Mutex::new(SyncCredentials { + channels: vec![], + credentials: vec![], + })), + failures: Arc::new(Mutex::new(VecDeque::new())), + read_barrier: Arc::new(Mutex::new(None)), + bound_gate: Arc::new(Mutex::new(None)), + }; + let extensions = Arc::new(Extensions { + values: Mutex::new(BTreeMap::from([( + "sync-ui-preferences".into(), + ui_preferences("en", "medium"), + )])), + protector: Arc::new(CryptoJournalProtector::new(Arc::new( + DerivedKey::from_secret_bytes(Zeroizing::new([37; 32])), + ))), + key_requested: AtomicBool::new(false), + ui_revision: Mutex::new(Some(uuid::Uuid::new_v4().to_string())), + }); + let device = SourceDevice { + id: "fixture-device".into(), + os: "macos".into(), + arch: "aarch64".into(), + app_version: "2.0.0-Beta.3".into(), + }; + let scope = SyncScope { + service_origin: "https://sync.example.test".into(), + owner_github_id: "42".into(), + vault_id: uuid::Uuid::new_v4().to_string(), + key_id: uuid::Uuid::new_v4().to_string(), + device_id: device.id.clone(), + }; + let store = CoreSyncStore::new( + repo.clone(), + Arc::new(credentials.clone()), + temp.0.clone(), + device, + gate, + extensions.clone(), + ) + .unwrap(); + store.bind_runtime_idle_probe(Arc::new(|| true)).unwrap(); + let effects = TestEffects::default(); + *effects.gate.lock().unwrap() = Some(Arc::downgrade(&store.inner.gate)); + store + .bind_runtime_effects(Arc::new(effects.clone())) + .unwrap(); + Self { + _temp: temp, + store, + repo, + credentials, + extensions, + scope, + effects, + } + } + fn reopened(self) -> Self { + let Self { + _temp, + store, + repo, + credentials, + extensions, + scope, + effects, + } = self; + let device = store.device(); + drop(store); + drop(repo); + // Stand-in for reopening the persistent OS vault, not retaining the old process gate. + credentials.bound_gate.lock().unwrap().take(); + let gate = gate::open_for_data_dir(&_temp.0).unwrap(); + let repo = BackendRepositories::open(&_temp.0).unwrap(); + let store = CoreSyncStore::new( + repo.clone(), + Arc::new(credentials.clone()), + _temp.0.clone(), + device, + gate, + extensions.clone(), + ) + .unwrap(); + store.bind_runtime_idle_probe(Arc::new(|| true)).unwrap(); + *effects.gate.lock().unwrap() = Some(Arc::downgrade(&store.inner.gate)); + store + .bind_runtime_effects(Arc::new(effects.clone())) + .unwrap(); + Self { + _temp, + store, + repo, + credentials, + extensions, + scope, + effects, + } + } + + fn context(&self, export: &ExportedDocuments) -> RestoreContext { + RestoreContext { + scope: self.scope.clone(), + operation_id: uuid::Uuid::new_v4().to_string(), + observed_revision: Revision::new(3), + local_generation: export.generation, + target_device: self.store.device(), + } + } +} +fn set_doc(set: &mut DocumentSet, kind: DocumentKind, id: &str, value: Value) { + if let Some(old) = set + .documents + .iter_mut() + .find(|doc| doc.kind == kind && doc.id == id) + { + old.value = value; + } else { + set.documents.push(LogicalDocument { + id: id.into(), + kind, + schema_version: 1, + value, + }); + } +} +fn validate(set: DocumentSet) -> ValidatedSyncDocuments { + validate_sync_documents(set, Revision::new(3)).unwrap() +} + +#[tokio::test] +async fn disabled_fresh_start_never_requests_local_key() { + let fixture = Fixture::new(); + fixture.store.recover_registered().await.unwrap(); + assert!(!fixture.extensions.key_requested.load(Ordering::Acquire)); +} + +#[tokio::test] +async fn complete_native_restore_keeps_all_history_order_unknown_preferences_and_activity_provenance( +) { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + set_doc( + &mut desired, + DocumentKind::Preferences, + "futureSetting", + json!({"nested":[1,2,3]}), + ); + set_doc( + &mut desired, + DocumentKind::UiPreferences, + "locale", + json!("zh-CN"), + ); + for index in 0..205 { + let id = format!("history-{index:03}"); + set_doc( + &mut desired, + DocumentKind::History, + &id, + json!({"id":id,"createdAt":"2026-09-26T00:00:00Z","source":"quick_note","rawTranscript":format!("fixture {index}"),"finalText":format!("fixture {index}"),"mode":"raw","insertStatus":"notRequested","hasAudioRecording":false,"sortIndex":204-index}), + ); + } + for (source, count) in [("fixture-device", 4), ("other-device", 7)] { + set_doc( + &mut desired, + DocumentKind::Activity, + &format!("{source}:2026-09-26"), + json!({"sourceDeviceId":source,"date":"2026-09-26","count":count,"chars":10,"durationMs":20}), + ); + } + let expected = native::canonicalize_native_documents(validate(desired)).unwrap(); + let result = fixture + .store + .restore_scope(expected.clone(), fixture.context(&before)) + .await + .unwrap(); + assert_eq!( + result.documents.documents().documents, + expected.documents().documents + ); + assert_eq!(result.generation.get(), before.generation.get() + 1); + let history = fixture.repo.history.list().unwrap(); + assert_eq!(history.len(), 205); + assert_eq!(history[0].id, "history-204"); + assert_eq!(fixture.repo.activity.snapshot().unwrap()[0].count, 11); + let raw: Value = + serde_json::from_slice(&std::fs::read(fixture._temp.0.join("preferences.json")).unwrap()) + .unwrap(); + assert!( + raw.get("futureSetting").is_none(), + "unknown remote preference stays in encrypted extension" + ); + let again = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(again + .documents + .documents() + .documents + .iter() + .any(|doc| doc.id == "futureSetting")); + assert!(fixture + .store + .inner + .gate + .registered_recovery_scopes() + .unwrap() + .is_empty()); +} + +#[tokio::test] +async fn real_files_roll_back_after_credential_failure_and_recover_if_rollback_also_fails() { + for failures in [vec![true, false], vec![true, true, false]] { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + fixture + .credentials + .failures + .lock() + .unwrap() + .extend(failures.clone()); + let result = fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await; + assert_eq!( + result.unwrap_err(), + if failures.len() == 2 { + DocumentError::RestoreRolledBack + } else { + DocumentError::RecoveryRequired + } + ); + if failures.len() == 3 { + assert!(fixture.store.is_recovering()); + let journal = std::fs::read_dir(fixture._temp.0.join("encrypted-sync")) + .unwrap() + .filter_map(Result::ok) + .find(|entry| entry.file_name().to_string_lossy().starts_with("restore-")) + .unwrap(); + let bytes = std::fs::read(journal.path()).unwrap(); + assert!(!String::from_utf8_lossy(&bytes).contains("themeMode")); + fixture.store.recover_registered().await.unwrap(); + } + let after = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert_eq!( + after.documents.documents().documents, + before.documents.documents().documents + ); + assert_eq!(after.generation, before.generation); + assert!(!fixture.store.is_recovering()); + } +} + +#[tokio::test] +async fn optimistic_capture_does_not_block_writes_and_discards_a_mixed_snapshot() { + let fixture = Fixture::new(); + let barrier = Arc::new(tokio::sync::Barrier::new(2)); + *fixture.credentials.read_barrier.lock().unwrap() = Some(barrier.clone()); + let store = fixture.store.clone(); + let scope = fixture.scope.clone(); + let capture = tokio::spawn(async move { store.export_scope(scope).await }); + barrier.wait().await; + fixture + .repo + .preferences + .update(|prefs| prefs.show_capsule = !prefs.show_capsule) + .unwrap(); + barrier.wait().await; + assert_eq!( + capture.await.unwrap().unwrap_err(), + DocumentError::SourceChanged + ); +} + +#[test] +fn every_preference_save_preserves_top_level_and_nested_unknown_values() { + let fixture = Fixture::new(); + let path = fixture._temp.0.join("preferences.json"); + let mut raw: Value = serde_json::to_value(fixture.repo.preferences.get()).unwrap(); + raw["futureSetting"] = json!({"x":9}); + raw["customStylePrompts"]["futureMode"] = json!("keep"); + std::fs::write(&path, serde_json::to_vec(&raw).unwrap()).unwrap(); + fixture + .repo + .preferences + .update(|prefs| prefs.show_capsule = !prefs.show_capsule) + .unwrap(); + fixture + .repo + .preferences + .set_preserving_current_style_preferences(fixture.repo.preferences.get()) + .unwrap(); + let saved: Value = serde_json::from_slice(&std::fs::read(path).unwrap()).unwrap(); + assert_eq!(saved["futureSetting"], raw["futureSetting"]); + assert_eq!(saved["customStylePrompts"]["futureMode"], "keep"); +} + +#[test] +fn unknown_nested_rows_abort_ordinary_mutation_without_writing_or_dirty_generation() { + let fixture = Fixture::new(); + let generation = fixture.store.generation().unwrap(); + let path = fixture._temp.0.join("style-packs.json"); + let mut styles: Value = serde_json::from_slice(&std::fs::read(&path).unwrap()).unwrap(); + styles[0]["examples"] = json!([{"input":"a","output":"b","future":{"x":1}}]); + let bytes = serde_json::to_vec(&styles).unwrap(); + std::fs::write(&path, &bytes).unwrap(); + let id = styles[0]["id"].as_str().unwrap(); + assert_eq!( + fixture + .repo + .style_packs + .set_enabled(id, false) + .unwrap_err() + .code, + BackendErrorCode::Unsupported + ); + assert_eq!(std::fs::read(path).unwrap(), bytes); + assert_eq!(fixture.store.generation().unwrap(), generation); + let activity = fixture._temp.0.join("activity.json"); + let bytes = + br#"{"2026-09-26":{"count":1,"sourceContributions":{"device":{"count":1,"future":2}}}}"#; + std::fs::write(&activity, bytes).unwrap(); + assert_eq!( + fixture + .repo + .activity + .bump("2026-09-26", 1, 2) + .unwrap_err() + .code, + BackendErrorCode::Unsupported + ); + assert_eq!(std::fs::read(activity).unwrap(), bytes); +} + +#[tokio::test] +async fn baseline_updates_do_not_erase_newer_local_edits_or_tombstones() { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + fixture + .repo + .preferences + .update(|prefs| prefs.show_capsule = !prefs.show_capsule) + .unwrap(); + let current = fixture.repo.preferences.get().show_capsule; + fixture + .store + .record_baseline( + fixture.scope.clone(), + before.documents.documents().clone(), + Revision::new(3), + ) + .await + .unwrap(); + assert_eq!(fixture.repo.preferences.get().show_capsule, current); + let after = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(after.generation > before.generation); +} + +fn png() -> Vec { + use base64::Engine; + base64::engine::general_purpose::STANDARD.decode("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO3c3b0AAAAASUVORK5CYII=").unwrap() +} + +#[test] +fn failed_style_save_never_changes_live_cache() { + let fixture = Fixture::new(); + let before = fixture.repo.style_packs.get("builtin.light").unwrap(); + let mut next = before.clone(); + next.name = "new title".into(); + let generation = fixture.store.generation().unwrap(); + crate::persistence::fail_next_atomic_write(&fixture._temp.0.join("style-packs.json"), false); + assert!(fixture.repo.style_packs.update(next).is_err()); + assert_eq!( + fixture.repo.style_packs.get("builtin.light").unwrap(), + before + ); + assert_eq!(fixture.store.generation().unwrap(), generation); + assert!(!fixture.store.is_recovering()); +} + +#[tokio::test] +async fn uncertain_style_icon_and_import_commits_keep_their_referenced_assets() { + for import in [false, true] { + let fixture = Fixture::new(); + let pack = fixture + .repo + .style_packs + .update_icon("builtin.light", Some(&png())) + .unwrap(); + let original = pack.icon_path.unwrap(); + let archive = fixture + .repo + .style_packs + .export_zip_bytes("builtin.light") + .unwrap(); + crate::persistence::fail_next_atomic_write(&fixture._temp.0.join("style-packs.json"), true); + let error = if import { + fixture + .repo + .style_packs + .import_from_zip_bytes(&archive) + .unwrap_err() + } else { + fixture + .repo + .style_packs + .update_icon("builtin.light", Some(&png())) + .unwrap_err() + }; + assert_eq!(error.code, BackendErrorCode::OutcomeUnknown); + assert!(fixture.store.is_recovering()); + let persisted: Vec = serde_json::from_slice( + &std::fs::read(fixture._temp.0.join("style-packs.json")).unwrap(), + ) + .unwrap(); + for pack in &persisted { + if let Some(path) = &pack.icon_path { + assert!(std::path::Path::new(path).is_file()); + } + } + assert!(std::path::Path::new(&original).is_file()); + fixture.store.recover_registered().await.unwrap(); + assert!(!fixture.store.is_recovering()); + assert_eq!(fixture.repo.style_packs.list().unwrap(), persisted); + } +} + +#[tokio::test] +async fn runtime_probe_rejects_restore_before_any_file_changes() { + let fixture = Fixture::new(); + *fixture.store.inner.runtime_idle.lock().unwrap() = Some(Arc::new(|| false)); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + let result = fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await; + assert_eq!(result.unwrap_err(), DocumentError::RuntimeBusy); + assert!(!fixture.store.is_recovering()); + assert_eq!(fixture.store.generation().unwrap(), before.generation); + assert!(!fixture.extensions.key_requested.load(Ordering::Acquire)); +} + +#[tokio::test] +async fn activity_restore_beyond_rolling_retention_keeps_every_source_record() { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + let first = chrono::NaiveDate::from_ymd_opt(2020, 1, 1).unwrap(); + for index in 0..733 { + let date = (first + chrono::Days::new(index)).to_string(); + set_doc( + &mut desired, + DocumentKind::Activity, + &format!("fixture-device:{date}"), + json!({"sourceDeviceId":"fixture-device","date":date,"count":1,"chars":2,"durationMs":3}), + ); + } + fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap(); + assert_eq!(fixture.repo.activity.snapshot().unwrap().len(), 733); +} + +#[tokio::test] +async fn all_eleven_kinds_restore_stable_ids_credentials_icons_presets_and_foreign_profiles() { + use base64::Engine; + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + set_doc( + &mut desired, + DocumentKind::UiPreferences, + "locale", + json!("ja"), + ); + set_doc( + &mut desired, + DocumentKind::Channels, + "llm:stable-llm", + json!({"id":"stable-llm","namespace":"llm","providerType":"requesty","name":"Fixture API","enabled":true,"order":0,"active":true}), + ); + set_doc( + &mut desired, + DocumentKind::ProviderCredentials, + "llm:stable-llm", + json!({"channelId":"stable-llm","namespace":"llm","accounts":{"ark.api_key":"fixture-private-key","ark.endpoint":"https://router.requesty.ai/v1","ark.model_id":"fixture-model"}}), + ); + set_doc( + &mut desired, + DocumentKind::Dictionary, + "stable-word", + json!({"id":"stable-word","phrase":"OpenLess fixture","note":"fixture note","enabled":true,"hits":2,"createdAt":"2026-09-26T00:00:00Z","sortIndex":0}), + ); + set_doc( + &mut desired, + DocumentKind::Corrections, + "stable-rule", + json!({"id":"stable-rule","pattern":"opnless","replacement":"OpenLess","enabled":true,"createdAt":"2026-09-26T00:00:00Z","source":"learned","sortIndex":0}), + ); + set_doc( + &mut desired, + DocumentKind::VocabularyPresets, + "custom:stable-preset", + json!({"id":"stable-preset","origin":"custom","name":"Private words","phrases":["one","two"],"enabled":true,"order":0}), + ); + let builtin = crate::vocabulary::builtin_vocab_presets() + .into_iter() + .next() + .unwrap() + .id; + set_doc( + &mut desired, + DocumentKind::VocabularyPresets, + &format!("override:{builtin}"), + json!({"id":builtin,"origin":"override","name":"Override words","phrases":["three"],"enabled":true,"order":0}), + ); + let icon = base64::engine::general_purpose::STANDARD.encode(png()); + let style = desired + .documents + .iter_mut() + .find(|doc| doc.kind == DocumentKind::StylePacks && doc.id == "builtin.light") + .unwrap(); + style.value["icon"] = json!({"mime":"image/png","base64":icon}); + set_doc( + &mut desired, + DocumentKind::History, + "stable-history", + json!({"id":"stable-history","createdAt":"2026-09-26T00:00:00Z","source":"quick_note","rawTranscript":"Fixture note","finalText":"Fixture note","mode":"raw","insertStatus":"notRequested","hasAudioRecording":false,"sortIndex":0}), + ); + set_doc( + &mut desired, + DocumentKind::Activity, + "foreign-device:2026-09-26", + json!({"sourceDeviceId":"foreign-device","date":"2026-09-26","count":2,"chars":4,"durationMs":8}), + ); + set_doc( + &mut desired, + DocumentKind::DeviceProfile, + "foreign-device", + json!({"device":{"id":"foreign-device","os":"windows","arch":"x86_64","appVersion":"2.0.0-Beta.3"},"preferences":{"microphoneDeviceName":"foreign microphone","codingAgentExe":"C:\\fixture\\do-not-run.exe"},"channels":[{"id":"foreign-local","namespace":"asr","providerType":"foundry-local-whisper","name":"Foreign local model","enabled":true,"order":0,"active":true}],"providerCredentials":[{"channelId":"foreign-local","namespace":"asr","accounts":{"asr.model":"fixture-local-model"}}],"windowPositions":[]}), + ); + let desired = native::canonicalize_native_documents(validate(desired)).unwrap(); + let result = fixture + .store + .restore_scope(desired.clone(), fixture.context(&before)) + .await + .unwrap(); + assert_eq!( + result.documents.documents().documents, + desired.documents().documents + ); + let kinds = result + .documents + .documents() + .documents + .iter() + .map(|doc| doc.kind) + .collect::>(); + assert_eq!(kinds.len(), 11); + let credentials = fixture.credentials.value.lock().unwrap(); + assert_eq!(credentials.channels.len(), 1); + assert_eq!(credentials.channels[0].id, "stable-llm"); + assert_eq!( + credentials.credentials[0].accounts["ark.api_key"], + "fixture-private-key" + ); + drop(credentials); + assert_ne!( + fixture.repo.preferences.get().microphone_device_name, + "foreign microphone" + ); + assert_eq!(fixture.repo.vocabulary.list().unwrap()[0].id, "stable-word"); + assert_eq!( + fixture.repo.correction_rules.list().unwrap()[0].id, + "stable-rule" + ); + let presets = crate::vocabulary::list_vocab_presets(&fixture._temp.0).unwrap(); + assert_eq!(presets.custom[0].id, "stable-preset"); + assert_eq!(presets.overrides[0].phrases, vec!["three"]); + assert!(fixture + .repo + .style_packs + .icon_data_url("builtin.light") + .unwrap() + .is_some()); +} + +#[tokio::test] +async fn deletion_ledger_and_upload_baseline_are_isolated_by_account_vault_scope() { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Dictionary, + "deleted-word", + json!({"id":"deleted-word","phrase":"remove me","note":null,"enabled":true,"hits":0,"createdAt":"2026-09-26T00:00:00Z","sortIndex":0}), + ); + let seeded = fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap(); + fixture + .store + .record_baseline( + fixture.scope.clone(), + seeded.documents.documents().clone(), + Revision::new(3), + ) + .await + .unwrap(); + fixture.repo.vocabulary.remove("deleted-word").unwrap(); + let deleted = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(deleted + .documents + .documents() + .tombstones + .iter() + .any(|mark| mark.id == "deleted-word")); + let mut other = fixture.scope.clone(); + other.owner_github_id = "43".into(); + other.vault_id = uuid::Uuid::new_v4().to_string(); + let fresh = fixture.store.export_scope(other).await.unwrap(); + assert!(fresh.documents.documents().tombstones.is_empty()); + fixture + .repo + .preferences + .update(|prefs| prefs.show_capsule = !prefs.show_capsule) + .unwrap(); + fixture + .store + .record_baseline( + fixture.scope.clone(), + deleted.documents.documents().clone(), + Revision::new(4), + ) + .await + .unwrap(); + let later = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(later + .documents + .documents() + .tombstones + .iter() + .any(|mark| mark.id == "deleted-word")); + assert!(later.generation > deleted.generation); +} + +#[tokio::test] +async fn ui_compare_and_swap_rejects_an_old_mirror_after_restore_and_preserves_generation() { + let fixture = Fixture::new(); + let old = fixture.extensions.read_ui_revision().await.unwrap(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::UiPreferences, + "locale", + json!("ja"), + ); + let restored = fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap(); + let result = fixture + .store + .set_ui_preferences_checked(ui_preferences("en", "large"), old) + .await; + assert_eq!(result.unwrap_err(), DocumentError::StalePreview); + assert_eq!(fixture.store.generation().unwrap(), restored.generation); + assert_eq!( + fixture + .extensions + .read_device(DeviceExtensionKey::UiPreferences) + .await + .unwrap() + .unwrap() + .expose()["locale"], + "ja" + ); + assert_eq!( + fixture + .store + .set_ui_preferences_checked(ui_preferences("de", "small"), None) + .await + .unwrap_err(), + DocumentError::StalePreview + ); + fixture + .store + .set_ui_preferences_checked( + ui_preferences("ja", "large"), + fixture.extensions.read_ui_revision().await.unwrap(), + ) + .await + .unwrap(); + assert_eq!( + fixture.store.generation().unwrap().get(), + restored.generation.get() + 1 + ); +} + +#[test] +fn preference_array_extensions_follow_stable_identity_across_ordinary_updates() { + let fixture = Fixture::new(); + let path = fixture._temp.0.join("preferences.json"); + let mut raw = serde_json::to_value(fixture.repo.preferences.get()).unwrap(); + raw["stylePackHotkeys"] = json!([{"packId":"builtin.light","binding":{"primary":"L","modifiers":["ctrl"],"futureBinding":true},"futureHotkey":{"x":1}}]); + std::fs::write(&path, serde_json::to_vec(&raw).unwrap()).unwrap(); + fixture + .repo + .preferences + .update(|prefs| prefs.show_capsule = !prefs.show_capsule) + .unwrap(); + let saved: Value = serde_json::from_slice(&std::fs::read(path).unwrap()).unwrap(); + assert_eq!(saved["stylePackHotkeys"][0]["futureHotkey"], json!({"x":1})); + assert_eq!( + saved["stylePackHotkeys"][0]["binding"]["futureBinding"], + true + ); +} + +#[test] +fn pending_restore_constructors_never_salvage_or_normalize_original_files() { + let temp = Temp::new(); + let gate = gate::open_for_data_dir(&temp.0).unwrap(); + let permit = gate.try_exclusive().unwrap(); + let scope = SyncScope { + service_origin: "https://sync.example.test".into(), + owner_github_id: "42".into(), + vault_id: uuid::Uuid::new_v4().to_string(), + key_id: uuid::Uuid::new_v4().to_string(), + device_id: "fixture-device".into(), + }; + permit + .mark_restore_pending( + &uuid::Uuid::new_v4().to_string(), + &state::scope_id(&scope).unwrap(), + &scope, + ) + .unwrap(); + let preferences = temp.0.join("preferences.json"); + let styles = temp.0.join("style-packs.json"); + std::fs::write( + &preferences, + br#"{"defaultMode":"unknown-future-mode","streamingInsert":false}"#, + ) + .unwrap(); + std::fs::write(&styles, b"[]").unwrap(); + let before = std::fs::read(&preferences).unwrap(); + let _prefs = crate::preferences::PreferencesStore::open(&preferences).unwrap(); + let style_store = crate::style_pack_store::StylePackStore::at_data_dir(&temp.0).unwrap(); + assert!(style_store.list().unwrap().is_empty()); + assert_eq!(std::fs::read(preferences).unwrap(), before); + assert_eq!(std::fs::read(styles).unwrap(), b"[]"); + assert_eq!(std::fs::read_dir(&temp.0).unwrap().count(), 3); +} + +#[tokio::test] +async fn ui_revision_cas_rejects_a_pre_restore_writer_even_when_values_are_identical() { + let fixture = Fixture::new(); + let old = fixture.extensions.read_ui_revision().await.unwrap(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let desired = + validate_sync_documents(before.documents.documents().clone(), Revision::new(3)).unwrap(); + fixture + .store + .restore_scope(desired, fixture.context(&before)) + .await + .unwrap(); + assert_eq!( + fixture + .extensions + .read_device(DeviceExtensionKey::UiPreferences) + .await + .unwrap() + .unwrap(), + ui_preferences("en", "medium") + ); + assert_ne!(fixture.extensions.read_ui_revision().await.unwrap(), old); + assert_eq!( + fixture + .store + .set_ui_preferences_checked(ui_preferences("en", "large"), old) + .await + .unwrap_err(), + DocumentError::StalePreview + ); +} + +#[tokio::test] +async fn restoring_history_never_replaces_existing_local_media_availability_with_remote_flags() { + let fixture = Fixture::new(); + let record:crate::types::DictationSession=serde_json::from_value(json!({"id":"local-recording","createdAt":"2026-09-26T00:00:00Z","source":"quick_note","rawTranscript":"fixture","finalText":"fixture","mode":"raw","insertStatus":"notRequested","hasAudioRecording":true})).unwrap(); + fixture + .repo + .history + .append_with_retention(record, 0, None) + .unwrap(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert_eq!( + before + .documents + .documents() + .documents + .iter() + .find(|doc| doc.kind == DocumentKind::History) + .unwrap() + .value["hasAudioRecording"], + false + ); + let desired = + validate_sync_documents(before.documents.documents().clone(), Revision::new(3)).unwrap(); + fixture + .store + .restore_scope(desired, fixture.context(&before)) + .await + .unwrap(); + assert_eq!( + fixture.repo.history.list().unwrap()[0].has_audio_recording, + Some(true) + ); +} + +#[tokio::test] +async fn constructing_store_binds_the_exact_gate_required_by_real_credential_operations() { + let fixture = Fixture::new(); + let bound = fixture + .credentials + .bound_gate + .lock() + .unwrap() + .clone() + .unwrap(); + assert!(Arc::ptr_eq(&bound, &fixture.store.inner.gate)); + *fixture.credentials.bound_gate.lock().unwrap() = None; + assert!(fixture + .credentials + .export_sync_credentials_readonly() + .await + .is_err()); + fixture.credentials.bind_sync_gate(bound).unwrap(); + fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); +} + +#[tokio::test] +async fn failed_device_path_restore_restores_original_local_grant_without_exporting_it() { + for fail_rollback in [false, true] { + let fixture = Fixture::new(); + fixture + .repo + .preferences + .update(|prefs| { + prefs.coding_agent_enabled = true; + prefs.coding_agent_exe = Some("/fixture/original-agent".into()); + }) + .unwrap(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(!serde_json::to_string(before.documents.documents()) + .unwrap() + .contains("codingAgentEnabled")); + let mut desired = before.documents.documents().clone(); + desired + .documents + .iter_mut() + .find(|doc| doc.kind == DocumentKind::DeviceProfile && doc.id == "fixture-device") + .unwrap() + .value["preferences"]["codingAgentExe"] = json!("/fixture/never-run-imported-agent"); + fixture + .credentials + .failures + .lock() + .unwrap() + .extend(if fail_rollback { + vec![true, true, false] + } else { + vec![true, false] + }); + assert!(fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .is_err()); + if fail_rollback { + fixture.store.recover_registered().await.unwrap(); + } + let prefs = fixture.repo.preferences.get(); + assert!(prefs.coding_agent_enabled); + assert_eq!( + prefs.coding_agent_exe.as_deref(), + Some("/fixture/original-agent") + ); + } +} + +#[tokio::test] +async fn deleted_history_rollback_restores_all_local_audio_markers_and_keeps_wav_files() { + for restart_recovery in [false, true] { + let mut fixture = Fixture::new(); + let recording_dir = fixture._temp.0.join("recordings"); + std::fs::create_dir_all(&recording_dir).unwrap(); + let mut expected = std::collections::BTreeMap::new(); + let mut recording = None; + for marker in [Some(true), Some(false), None] { + let id = uuid::Uuid::new_v4().to_string(); + if marker == Some(true) { + let path = recording_dir.join(format!("{id}.wav")); + std::fs::write(&path, b"fixture local recording remains untouched").unwrap(); + recording = Some(path); + } + let row:crate::types::DictationSession=serde_json::from_value(json!({"id":id,"createdAt":"2026-09-26T00:00:00Z","rawTranscript":"fixture","finalText":"fixture","mode":"raw","insertStatus":"inserted","hasAudioRecording":marker})).unwrap(); + fixture + .repo + .history + .append_with_retention(row, 0, None) + .unwrap(); + expected.insert(id, marker); + } + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(before + .documents + .documents() + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::History) + .all(|doc| doc.value["hasAudioRecording"] == false)); + let mut desired = before.documents.documents().clone(); + desired + .documents + .retain(|doc| doc.kind != DocumentKind::History); + for id in expected.keys() { + desired + .tombstones + .push(crate::cloud_sync_e2ee_protocol::types::Tombstone { + id: id.clone(), + kind: DocumentKind::History, + deleted_at: "2026-09-26T01:00:00Z".into(), + base_revision: Revision::new(0), + }); + } + fixture + .credentials + .failures + .lock() + .unwrap() + .extend(if restart_recovery { + vec![true, true, false] + } else { + vec![true, false] + }); + let result = fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await; + assert_eq!( + result.unwrap_err(), + if restart_recovery { + DocumentError::RecoveryRequired + } else { + DocumentError::RestoreRolledBack + } + ); + if restart_recovery { + assert!(fixture.store.is_recovering()); + fixture = fixture.reopened(); + fixture.store.recover_registered().await.unwrap(); + } + let actual: std::collections::BTreeMap<_, _> = fixture + .repo + .history + .list() + .unwrap() + .into_iter() + .map(|record| (record.id, record.has_audio_recording)) + .collect(); + assert_eq!(actual,expected,"rollback must preserve true, false and unknown receiver-only markers after rows were removed"); + assert_eq!( + std::fs::read(recording.unwrap()).unwrap(), + b"fixture local recording remains untouched" + ); + let exported = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + assert!(exported + .documents + .documents() + .documents + .iter() + .filter(|doc| doc.kind == DocumentKind::History) + .all(|doc| doc.value["hasAudioRecording"] == false)); + assert_eq!(fixture.store.generation().unwrap(), before.generation); + assert!(!fixture.store.is_recovering()); + } +} + +#[tokio::test] +async fn remote_history_audio_true_cannot_create_local_media_availability() { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::History, + "foreign-recording", + json!({"id":"foreign-recording","createdAt":"2026-09-26T00:00:00Z","rawTranscript":"fixture","finalText":"fixture","mode":"raw","insertStatus":"inserted","hasAudioRecording":true,"sortIndex":0}), + ); + assert_eq!( + validate_sync_documents(desired, Revision::new(3)).unwrap_err(), + DocumentError::ExcludedField + ); + assert!(fixture + .repo + .history + .read_entry("foreign-recording") + .unwrap() + .is_none()); + assert!(!fixture.store.is_recovering()); +} + +#[tokio::test] +async fn restore_requires_bound_runtime_effects_before_local_writes() { + let fixture = Fixture::new(); + *fixture.store.inner.runtime_effects.lock().unwrap() = None; + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + assert_eq!( + fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap_err(), + DocumentError::Unsupported + ); + assert_eq!(fixture.store.generation().unwrap(), before.generation); + assert!(!fixture.store.is_recovering()); + assert!(!fixture.extensions.key_requested.load(Ordering::Acquire)); + assert!(fixture.effects.targets.lock().unwrap().is_empty()); +} + +#[tokio::test] +async fn runtime_effects_are_awaited_under_the_exclusive_and_runtime_fences() { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + let barrier = Arc::new(tokio::sync::Barrier::new(2)); + *fixture.effects.wait.lock().unwrap() = Some(barrier.clone()); + let store = fixture.store.clone(); + let context = fixture.context(&before); + let restore = + tokio::spawn(async move { store.restore_scope(validate(desired), context).await }); + barrier.wait().await; + assert!(!restore.is_finished()); + assert!(fixture.store.is_recovering()); + assert!(fixture.store.ensure_runtime_available().is_err()); + assert!(fixture + .repo + .preferences + .update(|prefs| prefs.show_capsule = false) + .is_err()); + barrier.wait().await; + let result = restore.await.unwrap().unwrap(); + assert_eq!(result.generation.get(), before.generation.get() + 1); + assert!(!fixture.store.is_recovering()); + assert_eq!(fixture.effects.targets.lock().unwrap().len(), 1); +} + +#[tokio::test] +async fn effects_failure_rolls_back_and_final_local_grants_are_applied_again() { + for startup_recovery in [false, true] { + let mut fixture = Fixture::new(); + fixture + .repo + .preferences + .update(|prefs| { + prefs.coding_agent_enabled = true; + prefs.coding_agent_exe = Some("/fixture/original".into()); + }) + .unwrap(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + desired + .documents + .iter_mut() + .find(|doc| doc.kind == DocumentKind::DeviceProfile && doc.id == "fixture-device") + .unwrap() + .value["preferences"]["codingAgentExe"] = json!("/fixture/new-program"); + fixture + .effects + .failures + .lock() + .unwrap() + .extend(if startup_recovery { + vec![true, true, false, false] + } else { + vec![true, false, false] + }); + assert_eq!( + fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap_err(), + if startup_recovery { + DocumentError::RecoveryRequired + } else { + DocumentError::RestoreRolledBack + } + ); + if startup_recovery { + assert!(fixture.store.is_recovering()); + fixture = fixture.reopened(); + fixture.store.recover_registered().await.unwrap(); + } + let applied = fixture.effects.targets.lock().unwrap(); + assert!(!applied[0].coding_agent_enabled); + assert_eq!( + applied[0].coding_agent_exe.as_deref(), + Some("/fixture/new-program") + ); + let final_target = applied.last().unwrap(); + assert!(final_target.coding_agent_enabled); + assert_eq!( + final_target.coding_agent_exe.as_deref(), + Some("/fixture/original") + ); + assert_eq!(fixture.store.generation().unwrap(), before.generation); + assert!(!fixture.store.is_recovering()); + } +} + +#[tokio::test] +async fn launch_at_login_is_excluded_and_preserves_the_receivers_local_setting() { + let fixture = Fixture::new(); + fixture + .repo + .preferences + .update(|prefs| prefs.launch_at_login = true) + .unwrap(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let encoded = serde_json::to_string(before.documents.documents()).unwrap(); + assert!(!encoded.contains("launchAtLogin")); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap(); + assert!(fixture.repo.preferences.get().launch_at_login); + assert!( + fixture + .effects + .targets + .lock() + .unwrap() + .last() + .unwrap() + .launch_at_login + ); +} + +#[tokio::test] +async fn pending_recovery_without_effects_never_reads_key_or_changes_its_durable_markers() { + let fixture = Fixture::new(); + let before = fixture + .store + .export_scope(fixture.scope.clone()) + .await + .unwrap(); + let mut desired = before.documents.documents().clone(); + set_doc( + &mut desired, + DocumentKind::Preferences, + "themeMode", + json!("dark"), + ); + fixture + .credentials + .failures + .lock() + .unwrap() + .extend([true, true]); + assert_eq!( + fixture + .store + .restore_scope(validate(desired), fixture.context(&before)) + .await + .unwrap_err(), + DocumentError::RecoveryRequired + ); + let directory = fixture._temp.0.join("encrypted-sync"); + let journal = std::fs::read_dir(&directory) + .unwrap() + .filter_map(Result::ok) + .find(|entry| entry.file_name().to_string_lossy().starts_with("restore-")) + .unwrap() + .path(); + let generation = std::fs::read(directory.join("generation.json")).unwrap(); + let sealed = std::fs::read(&journal).unwrap(); + let effects_calls = fixture.effects.targets.lock().unwrap().len(); + *fixture.store.inner.runtime_effects.lock().unwrap() = None; + fixture + .extensions + .key_requested + .store(false, Ordering::Release); + assert_eq!( + fixture.store.recover_registered().await.unwrap_err(), + DocumentError::Unsupported + ); + assert!(!fixture.extensions.key_requested.load(Ordering::Acquire)); + assert_eq!( + std::fs::read(directory.join("generation.json")).unwrap(), + generation + ); + assert_eq!(std::fs::read(journal).unwrap(), sealed); + assert_eq!(fixture.effects.targets.lock().unwrap().len(), effects_calls); + assert!(fixture.store.is_recovering()); +} + +#[test] +fn setup_prompt_store_probe_requires_idle_runtime_and_no_active_writer() { + let fixture = Fixture::new(); + assert!(fixture.store.setup_prompt_state().unwrap().is_some()); + let writing = fixture.store.inner.gate.begin_mutation().unwrap(); + assert!(fixture.store.setup_prompt_state().unwrap().is_none()); + writing.abort_unmodified().unwrap(); + *fixture.store.inner.runtime_idle.lock().unwrap() = Some(Arc::new(|| false)); + assert!(fixture.store.setup_prompt_state().unwrap().is_none()); + *fixture.store.inner.runtime_idle.lock().unwrap() = Some(Arc::new(|| true)); + fixture.store.inner.restoring.store(true, Ordering::Release); + assert!(fixture.store.setup_prompt_state().unwrap().is_none()); + fixture + .store + .inner + .restoring + .store(false, Ordering::Release); + assert!(fixture.store.setup_prompt_state().unwrap().is_some()); +} diff --git a/openless-all/app/crates/openless-core/src/config.rs b/openless-all/app/crates/openless-core/src/config.rs index adf083ea8..096dc9fd2 100644 --- a/openless-all/app/crates/openless-core/src/config.rs +++ b/openless-all/app/crates/openless-core/src/config.rs @@ -51,6 +51,17 @@ impl Default for BackendConfig { } } +/// Absolute, idempotent Host convergence during a journalled sync restore. +/// Called only after the complete repository target is installed and while +/// the restore fence still blocks runtime admission. A failure must propagate +/// so the journal can reinstall and reconcile its previous target. +pub trait RestoreRuntimeEffects: Send + Sync { + fn apply_target( + &self, + target: crate::shared_types::UserPreferences, + ) -> BoxFuture<'static, Result<(), BackendError>>; +} + pub trait TaskSpawner: Send + Sync { fn spawn(&self, task: BoxFuture<'static, ()>); } diff --git a/openless-all/app/crates/openless-core/src/correction.rs b/openless-all/app/crates/openless-core/src/correction.rs index 910528aa2..1ad5cd142 100644 --- a/openless-all/app/crates/openless-core/src/correction.rs +++ b/openless-all/app/crates/openless-core/src/correction.rs @@ -10,7 +10,7 @@ use std::sync::Mutex; use chrono::Utc; use crate::errors::{BackendError, BackendErrorCode}; -use crate::persistence::{atomic_write, persistence_error, read_or_default}; +use crate::persistence::{atomic_write, persistence_error}; use crate::types::{CorrectionRule, RuleSource}; const NUM_TOKEN: &str = "{num}"; @@ -38,6 +38,27 @@ impl CorrectionRuleStore { self.read_locked() } + pub(crate) fn sync_snapshot( + &self, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result, BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let _guard = self.lock_store()?; + crate::persistence::read_lossless_rows(&self.path, &[]) + } + + pub(crate) fn sync_replace_all( + &self, + records: &[CorrectionRule], + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let _guard = self.lock_store()?; + let bytes = serde_json::to_vec_pretty(records) + .map_err(|_| persistence_error("encode restored corrections"))?; + crate::persistence::atomic_write_for_sync(&self.path, &bytes, permit) + } + pub(crate) fn cloud_sync_access( &self, ) -> Result<(std::sync::MutexGuard<'_, ()>, &Path), BackendError> { @@ -49,7 +70,11 @@ impl CorrectionRuleStore { pattern: String, replacement: String, ) -> Result { - self.add_with_source(pattern, replacement, RuleSource::Manual) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || self.add_with_source(pattern, replacement, RuleSource::Manual), + ) } pub fn add_with_source( @@ -58,50 +83,68 @@ impl CorrectionRuleStore { replacement: String, source: RuleSource, ) -> Result { - let pattern = pattern.trim().to_string(); - let replacement = replacement.trim().to_string(); - validate_correction_rule_syntax(&pattern, &replacement)?; - let _guard = self.lock_store()?; - let mut rules = self.read_locked()?; - let rule = CorrectionRule { - id: uuid::Uuid::new_v4().to_string(), - pattern, - replacement, - enabled: true, - created_at: Utc::now().to_rfc3339(), - source, - }; - rules.insert(0, rule.clone()); - self.write_locked(&rules)?; - Ok(rule) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let pattern = pattern.trim().to_string(); + let replacement = replacement.trim().to_string(); + validate_correction_rule_syntax(&pattern, &replacement)?; + let _guard = self.lock_store()?; + let mut rules = self.read_locked()?; + let rule = CorrectionRule { + id: uuid::Uuid::new_v4().to_string(), + pattern, + replacement, + enabled: true, + created_at: Utc::now().to_rfc3339(), + source, + }; + rules.insert(0, rule.clone()); + self.write_locked(&rules)?; + Ok(rule) + }, + ) } /// Removing an unknown id is deliberately idempotent. pub fn remove(&self, id: &str) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut rules = self.read_locked()?; - let before = rules.len(); - rules.retain(|rule| rule.id != id); - if rules.len() != before { - self.write_locked(&rules)?; - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut rules = self.read_locked()?; + let before = rules.len(); + rules.retain(|rule| rule.id != id); + if rules.len() != before { + self.write_locked(&rules)?; + } + Ok(()) + }, + ) } pub fn set_enabled(&self, id: &str, enabled: bool) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut rules = self.read_locked()?; - let rule = rules.iter_mut().find(|rule| rule.id == id).ok_or_else(|| { - BackendError::new( - BackendErrorCode::InvalidArgument, - "correction rule not found", - ) - })?; - if rule.enabled != enabled { - rule.enabled = enabled; - self.write_locked(&rules)?; - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut rules = self.read_locked()?; + let rule = rules.iter_mut().find(|rule| rule.id == id).ok_or_else(|| { + BackendError::new( + BackendErrorCode::InvalidArgument, + "correction rule not found", + ) + })?; + if rule.enabled != enabled { + rule.enabled = enabled; + self.write_locked(&rules)?; + } + Ok(()) + }, + ) } fn lock_store(&self) -> Result, BackendError> { @@ -114,7 +157,7 @@ impl CorrectionRuleStore { } fn read_locked(&self) -> Result, BackendError> { - read_or_default(&self.path) + crate::persistence::read_lossless_rows(&self.path, &[]) } fn write_locked(&self, rules: &[CorrectionRule]) -> Result<(), BackendError> { diff --git a/openless-all/app/crates/openless-core/src/credentials.rs b/openless-all/app/crates/openless-core/src/credentials.rs index ba1cab461..b74d8c65f 100644 --- a/openless-all/app/crates/openless-core/src/credentials.rs +++ b/openless-all/app/crates/openless-core/src/credentials.rs @@ -3,10 +3,81 @@ use std::fmt; use std::sync::RwLock; use futures_util::future::BoxFuture; +use zeroize::Zeroize; use crate::errors::{BackendError, BackendErrorCode}; use crate::shared_types::{CredentialsStatus, UserPreferences}; +pub use crate::cloud_sync_e2ee_documents::{ + ChannelRecord as SyncChannel, ProviderCredentialRecord as SyncCredentialRecord, SyncNamespace, +}; +pub use crate::cloud_sync_e2ee_store::gate::{ + ChangeOrigin, ExclusivePermit, MutationPermit, SyncWriteGate, +}; + +/// A single coherent native vault capture. It deliberately has no serde support: +/// only the explicit encrypted document exporter may serialize provider secrets. +#[derive(Clone, PartialEq, Eq)] +pub struct SyncCredentials { + pub channels: Vec, + pub credentials: Vec, +} + +impl SyncCredentials { + pub fn validate(&self) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_documents::validate_credential_set(&self.channels, &self.credentials) + .map_err(|_| { + BackendError::new( + BackendErrorCode::InvalidArgument, + "invalid encrypted sync credential set", + ) + }) + } +} + +impl fmt::Debug for SyncCredentials { + fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { + formatter.write_str("SyncCredentials([REDACTED])") + } +} + +/// Only two app-owned E2EE key namespaces may reach the system-secret adapter. +/// The digest binds native service/account/vault/key/device context; callers can +/// never use this interface to enumerate or read arbitrary Keychain accounts. +#[derive(Clone, PartialEq, Eq, Hash)] +pub struct SyncSecretAccount(String); + +impl SyncSecretAccount { + pub fn new(value: impl Into) -> Result { + let value = value.into(); + let suffix = value + .strip_prefix("cloud-sync.e2ee.local.") + .or_else(|| value.strip_prefix("cloud-sync.e2ee.key.")); + if !suffix.is_some_and(|digest| { + digest.len() == 64 + && digest + .bytes() + .all(|byte| byte.is_ascii_digit() || (b'a'..=b'f').contains(&byte)) + }) { + return Err(BackendError::new( + BackendErrorCode::InvalidArgument, + "invalid local encrypted sync key account", + )); + } + Ok(Self(value)) + } + + pub fn as_str(&self) -> &str { + &self.0 + } +} + +impl fmt::Debug for SyncSecretAccount { + fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { + formatter.write_str("SyncSecretAccount([REDACTED])") + } +} + macro_rules! provider_identifier { ($name:ident, $label:literal) => { #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, serde::Serialize)] @@ -255,8 +326,14 @@ impl SecretValue { &self.0 } - pub fn into_exposed(self) -> String { - self.0 + pub fn into_exposed(mut self) -> String { + std::mem::take(&mut self.0) + } +} + +impl Drop for SecretValue { + fn drop(&mut self) { + self.0.zeroize(); } } @@ -267,6 +344,56 @@ impl fmt::Debug for SecretValue { } pub trait CredentialStore: Send + Sync { + fn bind_sync_gate(&self, _gate: std::sync::Arc) -> Result<(), BackendError> { + Ok(()) + } + + /// Capture one coherent vault image without holding the global restore gate. + /// The caller must verify the shared capture epoch before and after reading + /// all repositories; this method only guarantees consistency within the vault. + fn export_sync_credentials_readonly( + &self, + ) -> BoxFuture<'static, Result> { + unsupported_credentials() + } + + fn export_sync_credentials( + &self, + _permit: &ExclusivePermit, + ) -> BoxFuture<'static, Result> { + unsupported_credentials() + } + + fn replace_sync_credentials( + &self, + _snapshot: SyncCredentials, + _permit: &ExclusivePermit, + ) -> BoxFuture<'static, Result<(), BackendError>> { + unsupported_credentials() + } + + fn read_sync_secret( + &self, + _account: SyncSecretAccount, + ) -> BoxFuture<'static, Result, BackendError>> { + unsupported_credentials() + } + + fn write_sync_secret( + &self, + _account: SyncSecretAccount, + _value: SecretValue, + ) -> BoxFuture<'static, Result<(), BackendError>> { + unsupported_credentials() + } + + fn remove_sync_secret( + &self, + _account: SyncSecretAccount, + ) -> BoxFuture<'static, Result<(), BackendError>> { + unsupported_credentials() + } + fn status( &self, preferences: UserPreferences, @@ -1024,6 +1151,66 @@ fn unsupported_credentials() -> BoxFuture<'static, Result> { mod tests { use super::*; + #[test] + fn sync_secret_accounts_cannot_reach_provider_or_other_app_credentials() { + for prefix in ["cloud-sync.e2ee.local.", "cloud-sync.e2ee.key."] { + let accepted = format!("{prefix}{}", "0123456789abcdef".repeat(4)); + let account = SyncSecretAccount::new(&accepted).unwrap(); + assert_eq!(account.as_str(), accepted); + assert!(!format!("{account:?}").contains(&accepted)); + } + for value in [ + "credentials.v2".into(), + "cloud-sync.e2ee.local.".into(), + format!("cloud-sync.e2ee.local.{}", "a".repeat(63)), + format!("cloud-sync.e2ee.local.{}", "a".repeat(65)), + format!("cloud-sync.e2ee.local.{}", "A".repeat(64)), + format!("cloud-sync.e2ee.local.{}", "g".repeat(64)), + format!("cloud-sync.e2ee.local.{}\n", "a".repeat(64)), + format!("cloud-sync.e2ee.local.{}", "../".repeat(22)), + ] { + assert!(SyncSecretAccount::new(value).is_err()); + } + let secret = SecretValue::new("private-canary-secret"); + assert_eq!(format!("{secret:?}"), "SecretValue([REDACTED])"); + assert_eq!(secret.into_exposed(), "private-canary-secret"); + } + + #[tokio::test] + async fn sync_secret_defaults_fail_closed_on_hosts_without_an_adapter() { + let store = UnsupportedCredentialStore; + assert_eq!( + store + .export_sync_credentials_readonly() + .await + .unwrap_err() + .code, + BackendErrorCode::Unsupported + ); + let account = + SyncSecretAccount::new(format!("cloud-sync.e2ee.local.{}", "a".repeat(64))).unwrap(); + assert_eq!( + store + .read_sync_secret(account.clone()) + .await + .unwrap_err() + .code, + BackendErrorCode::Unsupported + ); + assert_eq!( + store + .write_sync_secret(account.clone(), SecretValue::new("private-canary-secret")) + .await + .unwrap_err() + .code, + BackendErrorCode::Unsupported + ); + assert_eq!( + store.remove_sync_secret(account).await.unwrap_err().code, + BackendErrorCode::Unsupported + ); + } + fn summary(id: &str, order: u32, enabled: bool) -> ChannelSummary { ChannelSummary { id: id.to_string(), diff --git a/openless-all/app/crates/openless-core/src/domains.rs b/openless-all/app/crates/openless-core/src/domains.rs index b22c506ed..6fd1a3971 100644 --- a/openless-all/app/crates/openless-core/src/domains.rs +++ b/openless-all/app/crates/openless-core/src/domains.rs @@ -23,6 +23,10 @@ use crate::local_asr_catalog::{ use crate::style_packs::StylePack; use crate::types::{PolishMode, SessionId}; +/// Fast, synchronous restore admission check. Implementations must not do I/O +/// or acquire repository locks; Core calls it while holding a runtime state lock. +pub type RuntimeRestoreGuard = Arc Result<(), BackendError> + Send + Sync>; + fn unsupported(domain: &'static str) -> BoxFuture<'static, Result> { Box::pin(async move { Err(BackendError::new( @@ -398,6 +402,21 @@ pub struct SelectionPolishRequest { } pub trait SelectionApi: Send + Sync { + /// Bind restore admission before the service is exposed to runtime callers. + /// Legacy custom services remain source compatible, but conservatively do + /// not report restore-safe idleness until they implement both methods. + #[doc(hidden)] + fn bind_runtime_restore_guard( + &self, + _guard: RuntimeRestoreGuard, + _spawner: Arc, + ) -> Result<(), BackendError> { + Ok(()) + } + #[doc(hidden)] + fn runtime_restore_idle(&self) -> bool { + false + } fn snapshot(&self) -> BoxFuture<'static, Result>; fn begin_polish( &self, @@ -648,6 +667,21 @@ impl SelectionVoiceApplyOutcome { } pub trait SelectionVoiceApi: Send + Sync { + /// Bind restore admission before the service is exposed to runtime callers. + /// Legacy custom services remain source compatible, but conservatively do + /// not report restore-safe idleness until they implement both methods. + #[doc(hidden)] + fn bind_runtime_restore_guard( + &self, + _guard: RuntimeRestoreGuard, + _spawner: Arc, + ) -> Result<(), BackendError> { + Ok(()) + } + #[doc(hidden)] + fn runtime_restore_idle(&self) -> bool { + false + } #[doc(hidden)] fn bind_qa(&self, _qa: std::sync::Weak) {} /// Register the Host's capture/target cleanup before asynchronous startup. @@ -944,6 +978,21 @@ pub trait QaRuntimeAdapter: Send + Sync { } pub trait QaApi: Send + Sync { + /// Bind restore admission before the service is exposed to runtime callers. + /// Legacy custom services remain source compatible, but conservatively do + /// not report restore-safe idleness until they implement both methods. + #[doc(hidden)] + fn bind_runtime_restore_guard( + &self, + _guard: RuntimeRestoreGuard, + _spawner: Arc, + ) -> Result<(), BackendError> { + Ok(()) + } + #[doc(hidden)] + fn runtime_restore_idle(&self) -> bool { + false + } #[doc(hidden)] fn bind_event_publisher(&self, _publisher: crate::events::BackendEventPublisher) {} /// Show the QA surface without implicitly starting a recording or creating @@ -967,6 +1016,10 @@ pub trait QaApi: Send + Sync { unsupported("QA") } fn submit_text(&self, text: String) -> BoxFuture<'static, Result<(), BackendError>>; + /// Check the displayed conversation and claim the new turn atomically. + fn submit_text_in_context(&self, _text: String, _expected_session: Option) -> BoxFuture<'static, Result<(), BackendError>> { + Box::pin(async { Err(BackendError::new(BackendErrorCode::Unsupported, "scoped QA submission is unavailable")) }) + } fn submit_captured_text( &self, _input: QaInput, @@ -1641,6 +1694,9 @@ impl LocalAsrApi for UnsupportedDomainServices { } impl SelectionApi for UnsupportedDomainServices { + fn runtime_restore_idle(&self) -> bool { + true + } fn snapshot(&self) -> BoxFuture<'static, Result> { unsupported("selection") } @@ -1666,6 +1722,9 @@ impl SelectionApi for UnsupportedDomainServices { } impl SelectionVoiceApi for UnsupportedDomainServices { + fn runtime_restore_idle(&self) -> bool { + true + } fn snapshot(&self) -> BoxFuture<'static, Result> { unsupported("selection voice") } @@ -1760,6 +1819,9 @@ impl SelectionVoiceApi for UnsupportedDomainServices { } impl QaApi for UnsupportedDomainServices { + fn runtime_restore_idle(&self) -> bool { + true + } fn show(&self) -> BoxFuture<'static, Result<(), BackendError>> { unsupported("QA") } diff --git a/openless-all/app/crates/openless-core/src/events.rs b/openless-all/app/crates/openless-core/src/events.rs index 2d2e27c87..789edfe4c 100644 --- a/openless-all/app/crates/openless-core/src/events.rs +++ b/openless-all/app/crates/openless-core/src/events.rs @@ -377,6 +377,9 @@ pub enum BackendEventKind { HistoryChanged(HistoryChange), VocabularyChanged(VocabularyChange), StylePacksChanged(StylePackChange), + CloudSyncStateChanged(crate::cloud_sync_e2ee::EncryptedSyncEvent), + CloudSyncConflictDetected(crate::cloud_sync_e2ee::EncryptedSyncConflictEvent), + CloudSyncRestoreCompleted(crate::cloud_sync_e2ee::EncryptedSyncRestoreEvent), DownloadProgress(DownloadProgress), PermissionChanged(PermissionSnapshot), HotkeyStatusChanged(HotkeyStatus), diff --git a/openless-all/app/crates/openless-core/src/history.rs b/openless-all/app/crates/openless-core/src/history.rs index 37da6dddd..31f8efa76 100644 --- a/openless-all/app/crates/openless-core/src/history.rs +++ b/openless-all/app/crates/openless-core/src/history.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; use std::sync::Mutex; use crate::errors::{BackendError, BackendErrorCode}; -use crate::persistence::{atomic_write, persistence_error, read_or_default}; +use crate::persistence::{atomic_write, persistence_error}; use crate::types::{DictationSession, HistorySource}; pub const HISTORY_CAP: usize = 200; @@ -31,17 +31,45 @@ impl HistoryStore { self.read_locked() } + pub(crate) fn sync_snapshot( + &self, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result, BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let _guard = self.lock_store()?; + crate::persistence::read_lossless_rows(&self.path, &[]) + } + + /// Whole logical replacement deliberately bypasses both age and entry-count retention. + pub(crate) fn sync_replace_all( + &self, + records: &[DictationSession], + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let _guard = self.lock_store()?; + let bytes = serde_json::to_vec_pretty(records) + .map_err(|_| persistence_error("encode restored history"))?; + crate::persistence::atomic_write_for_sync(&self.path, &bytes, permit) + } + pub fn append_with_retention( &self, session: DictationSession, retention_days: u32, max_entries: Option, ) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut sessions = self.read_locked()?; - sessions.insert(0, session); - retain_with_policy(&mut sessions, retention_days, max_entries); - self.write_locked(&sessions) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut sessions = self.read_locked()?; + sessions.insert(0, session); + retain_with_policy(&mut sessions, retention_days, max_entries); + self.write_locked(&sessions) + }, + ) } /// Replace an in-progress record when its terminal result arrives, or @@ -52,19 +80,25 @@ impl HistoryStore { retention_days: u32, max_entries: Option, ) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut sessions = self.read_locked()?; - if let Some(existing) = sessions.iter_mut().find(|item| item.id == session.id) { - let mut replacement = session; - if replacement.has_audio_recording.is_none() { - replacement.has_audio_recording = existing.has_audio_recording; - } - *existing = replacement; - } else { - sessions.insert(0, session); - } - retain_with_policy(&mut sessions, retention_days, max_entries); - self.write_locked(&sessions) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut sessions = self.read_locked()?; + if let Some(existing) = sessions.iter_mut().find(|item| item.id == session.id) { + let mut replacement = session; + if replacement.has_audio_recording.is_none() { + replacement.has_audio_recording = existing.has_audio_recording; + } + *existing = replacement; + } else { + sessions.insert(0, session); + } + retain_with_policy(&mut sessions, retention_days, max_entries); + self.write_locked(&sessions) + }, + ) } pub fn contains(&self, id: &str) -> Result { @@ -101,35 +135,54 @@ impl HistoryStore { } pub fn delete(&self, id: &str) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut sessions = self.read_locked()?; - let before = sessions.len(); - sessions.retain(|session| session.id != id); - if sessions.len() != before { - self.write_locked(&sessions)?; - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut sessions = self.read_locked()?; + let before = sessions.len(); + sessions.retain(|session| session.id != id); + if sessions.len() != before { + self.write_locked(&sessions)?; + } + Ok(()) + }, + ) } pub fn update_entry(&self, updated: DictationSession) -> Result { - let _guard = self.lock_store()?; - let mut sessions = self.read_locked()?; - let Some(slot) = sessions.iter_mut().find(|session| session.id == updated.id) else { - return Ok(false); - }; - *slot = updated; - self.write_locked(&sessions)?; - Ok(true) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut sessions = self.read_locked()?; + let Some(slot) = sessions.iter_mut().find(|session| session.id == updated.id) + else { + return Ok(false); + }; + *slot = updated; + self.write_locked(&sessions)?; + Ok(true) + }, + ) } pub fn clear(&self) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let quick_notes = self - .read_locked()? - .into_iter() - .filter(|session| session.source == HistorySource::QuickNote) - .collect::>(); - self.write_locked(&quick_notes) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let quick_notes = self + .read_locked()? + .into_iter() + .filter(|session| session.source == HistorySource::QuickNote) + .collect::>(); + self.write_locked(&quick_notes) + }, + ) } fn lock_store(&self) -> Result, BackendError> { @@ -139,7 +192,7 @@ impl HistoryStore { } fn read_locked(&self) -> Result, BackendError> { - read_or_default(&self.path) + crate::persistence::read_lossless_rows(&self.path, &[]) } fn write_locked(&self, sessions: &[DictationSession]) -> Result<(), BackendError> { diff --git a/openless-all/app/crates/openless-core/src/less_computer.rs b/openless-all/app/crates/openless-core/src/less_computer.rs index e524aad4c..ffc27dab8 100644 --- a/openless-all/app/crates/openless-core/src/less_computer.rs +++ b/openless-all/app/crates/openless-core/src/less_computer.rs @@ -581,10 +581,12 @@ impl LessComputerApi for LessComputerService { .lock() .expect("Less Computer approval lock poisoned") .remove(&token); - if let Some(sender) = sender { - let _ = sender.send(approved); - } - Ok(()) + let sender = sender.ok_or_else(|| BackendError::new( + BackendErrorCode::InvalidState, "approval request is no longer pending", + ))?; + sender.send(approved).map_err(|_| BackendError::new( + BackendErrorCode::InvalidState, "approval receiver is no longer waiting", + )) }) } @@ -1167,7 +1169,7 @@ mod tests { } #[tokio::test] - async fn approval_tokens_are_instance_local_idempotent_and_event_driven() { + async fn approval_tokens_are_instance_local_confirmed_once_and_event_driven() { let (owner, mut events) = service_with_events(); let (other, _) = service_with_events(); let owner_for_request = owner.clone(); @@ -1193,12 +1195,12 @@ mod tests { assert_eq!(command, "rm file"); assert_eq!(reason, "destructive"); - other.approve(token.clone(), true).await.unwrap(); + assert!(other.approve(token.clone(), true).await.is_err()); tokio::task::yield_now().await; assert!(!waiting.is_finished()); owner.approve(token.clone(), true).await.unwrap(); - owner.approve(token, false).await.unwrap(); + assert!(owner.approve(token, false).await.is_err()); assert!(waiting.await.unwrap().unwrap()); assert_eq!(owner.pending_approval_count(), 0); } diff --git a/openless-all/app/crates/openless-core/src/lib.rs b/openless-all/app/crates/openless-core/src/lib.rs index cacf8e676..db82bf29e 100644 --- a/openless-all/app/crates/openless-core/src/lib.rs +++ b/openless-all/app/crates/openless-core/src/lib.rs @@ -13,6 +13,10 @@ pub mod auxiliary; pub mod cli; mod cloud_providers; pub mod cloud_sync; +pub mod cloud_sync_e2ee; +pub mod cloud_sync_e2ee_documents; +pub mod cloud_sync_e2ee_store; +mod cloud_sync_e2ee_protocol; mod cloud_sync_transaction; mod cloud_sync_types; mod cloud_sync_validation; diff --git a/openless-all/app/crates/openless-core/src/llm_protocol.rs b/openless-all/app/crates/openless-core/src/llm_protocol.rs index 3ba509524..be525f133 100644 --- a/openless-all/app/crates/openless-core/src/llm_protocol.rs +++ b/openless-all/app/crates/openless-core/src/llm_protocol.rs @@ -385,12 +385,7 @@ impl TextEventStream { } pub fn push(&mut self, chunk: &[u8]) -> Result<(), LLMError> { - crate::polish::append_utf8_sse_chunk(&mut self.buffer, &mut self.pending, chunk)?; - // 在完整字符串上替换,兼容 CR 与 LF 分属不同网络块。 - if self.buffer.contains("\r\n") { - self.buffer = self.buffer.replace("\r\n", "\n"); - } - Ok(()) + crate::polish::append_utf8_sse_chunk(&mut self.buffer, &mut self.pending, chunk) } pub fn next(&mut self) -> Result, LLMError> { @@ -769,6 +764,39 @@ mod tests { .is_err()); } + #[test] + fn chat_sse_preserves_utf8_and_done_with_lf_crlf_or_mixed_frames() { + for (text_eol, done_eol) in [ + ("\n", "\n"), + ("\r\n", "\r\n"), + ("\n", "\r\n"), + ("\r\n", "\n"), + ] { + let mut stream = TextEventStream::new(LlmRequestFormat::ChatCompletions); + let text_event = format!("data: {{\"choices\":[{{\"delta\":{{\"content\":\"你\\r\\n🙂好\"}}}}]}}{text_eol}{text_eol}"); + let mut text = String::new(); + for byte in text_event.as_bytes() { + stream.push(&[*byte]).unwrap(); + while let Some(event) = stream.next().unwrap() { + if let StreamEvent::Text(delta) = event { + text.push_str(&delta); + } + } + } + assert_eq!(text, "你\r\n🙂好", "JSON escapes must remain user text"); + assert!(!stream.done); + let done_event = format!("data: [DONE]{done_eol}{done_eol}"); + for byte in done_event.as_bytes() { + stream.push(&[*byte]).unwrap(); + while let Some(event) = stream.next().unwrap() { + assert!(matches!(event, StreamEvent::Done)); + } + } + assert!(stream.done, "recognize the terminal marker before EOF"); + stream.finish().unwrap(); + } + } + #[test] fn sse_handles_every_byte_boundary_and_requires_successful_termination() { for (format, fixture) in [ diff --git a/openless-all/app/crates/openless-core/src/marketplace.rs b/openless-all/app/crates/openless-core/src/marketplace.rs index 0b25e9f07..8a99c7100 100644 --- a/openless-all/app/crates/openless-core/src/marketplace.rs +++ b/openless-all/app/crates/openless-core/src/marketplace.rs @@ -26,6 +26,7 @@ pub const CLOUD_SYNC_BASE_URL: &str = "https://apic.openless.top:9443"; #[derive(Debug, Clone)] pub struct MarketplaceConfig { + pub(crate) encrypted_sync_config: Option, pub base_url: reqwest::Url, pub cloud_sync_base_url: reqwest::Url, pub github_client_id: String, @@ -59,6 +60,7 @@ impl MarketplaceConfig { .filter(|value| !value.trim().is_empty()) .unwrap_or_else(|| "Ov23liyv3nEucG7oMHNE".into()); Ok(Self { + encrypted_sync_config: None, base_url: parse(base_url.as_ref(), "marketplace")?, cloud_sync_base_url: match cloud_sync_base_url { Some(value) => parse(value, "cloud sync")?, @@ -81,6 +83,12 @@ impl MarketplaceConfig { Self::with_cloud_sync_base_url(MARKETPLACE_BASE_URL, Some(CLOUD_SYNC_BASE_URL)) .expect("built-in Marketplace URLs are valid") } + + /// Opt in after the host provides the controlled credential and UI bridges. + pub fn with_encrypted_sync(mut self, config: crate::cloud_sync_e2ee::EncryptedSyncConfig) -> Self { + self.encrypted_sync_config = Some(config); + self + } } #[derive(Clone)] @@ -449,6 +457,43 @@ impl MarketplaceService { .ok_or_else(Self::authentication_required) } + /// Establish the numeric identity used to bind encrypted snapshots. The + /// stored display login is never an authorization or account-isolation key. + pub(crate) async fn sync_identity( + &self, + ) -> Result<(SecretValue, crate::cloud_sync_e2ee_protocol::types::Account), BackendError> { + use futures_util::StreamExt; + use crate::cloud_sync_e2ee_protocol::types::{Account, GithubId}; + let token = self.read_access_token().await?; + let response = crate::net::credential_http_for_url(self.config.github_user_url.as_str()) + .get(self.config.github_user_url.clone()) + .header("Accept", "application/vnd.github+json") + .header("User-Agent", "OpenLess-encrypted-sync") + .timeout(Duration::from_secs(15)) + .bearer_auth(token.expose_secret()) + .send().await.map_err(|_| Self::authentication_required())?; + if !response.status().is_success() { + return Err(Self::authentication_required()); + } + let mut bytes = Vec::new(); + let mut stream = response.bytes_stream(); + while let Some(chunk) = stream.next().await { + let chunk = chunk.map_err(|_| Self::authentication_required())?; + if bytes.len().saturating_add(chunk.len()) > 16 * 1024 { + return Err(Self::authentication_required()); + } + bytes.extend_from_slice(&chunk); + } + #[derive(serde::Deserialize)] + struct User { id: u64, login: String } + let user: User = serde_json::from_slice(&bytes).map_err(|_| Self::authentication_required())?; + if user.login.is_empty() || user.login.len() > 128 || self.read_access_token().await? != token { + return Err(Self::authentication_required()); + } + let github_id = GithubId::parse(&user.id.to_string()).map_err(|_| Self::authentication_required())?; + Ok((token, Account { github_id, login: user.login })) + } + async fn clear_authentication(&self) -> Result<(), BackendError> { self.auth_tombstoned.store(true, Ordering::Release); let remove_result = self.credential_store.remove(Self::token_key()?).await; @@ -458,6 +503,10 @@ impl MarketplaceService { remove_result.and(preferences_result) } + pub(crate) fn invalidate_authentication(&self) { + self.auth_tombstoned.store(true, Ordering::Release); + } + async fn authenticated_response( &self, method: reqwest::Method, diff --git a/openless-all/app/crates/openless-core/src/omni.rs b/openless-all/app/crates/openless-core/src/omni.rs index 3f08aa460..171daff84 100644 --- a/openless-all/app/crates/openless-core/src/omni.rs +++ b/openless-all/app/crates/openless-core/src/omni.rs @@ -207,7 +207,7 @@ impl OpenAICompatibleOmni { }); } - // SSE 流解析与 polish 路径同款:一帧 = 若干行,`\n\n` 分隔, + // 共用 UTF-8 解码会把 CRLF 归一为 LF;一帧 = 若干行,`\n\n` 分隔, // 每行 `data: {...}` / `data: [DONE]`。 let mut response = response; let mut buffer = String::new(); diff --git a/openless-all/app/crates/openless-core/src/persistence.rs b/openless-all/app/crates/openless-core/src/persistence.rs index f0f67482d..b86d8abac 100644 --- a/openless-all/app/crates/openless-core/src/persistence.rs +++ b/openless-all/app/crates/openless-core/src/persistence.rs @@ -1,6 +1,7 @@ //! Small framework-independent JSON persistence primitives. use std::fs; +use std::io::{Read, Write}; use std::path::Path; use serde::de::DeserializeOwned; @@ -21,9 +22,55 @@ pub(crate) fn read_or_default( } pub(crate) fn atomic_write(path: &Path, contents: &[u8]) -> Result<(), BackendError> { + use crate::cloud_sync_e2ee_store::gate::{begin_unobserved_atomic, ChangeOrigin}; + let permit = begin_unobserved_atomic(path)?; + let outcome = atomic_replace(path, contents); + match outcome { + Ok(changed) => { + if changed { + crate::cloud_sync_e2ee_store::gate::note_successful_write(path); + } + if let Some(permit) = permit { + let result = if changed { + permit.commit(ChangeOrigin::User).map(|_| ()) + } else { + permit.abort_unmodified() + }; + result.map_err(|_| persistence_error("record saved data generation"))?; + } + Ok(()) + } + Err(error) => { + if error.code != BackendErrorCode::OutcomeUnknown { + if let Some(permit) = permit { + permit + .abort_unmodified() + .map_err(|_| persistence_error("clear unused mutation intent"))?; + } + } + Err(error) + } + } +} + +/// Restore hooks require proof of the same exclusive gate; they emit one final batch change. +pub(crate) fn atomic_write_for_sync( + path: &Path, + contents: &[u8], + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, +) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(path, permit)?; + atomic_replace(path, contents).map(|_| ()) +} + +fn atomic_replace(path: &Path, contents: &[u8]) -> Result { if path.as_os_str().is_empty() { return Err(persistence_error("empty JSON store path")); } + if fs::read(path).is_ok_and(|existing| existing == contents) { + ensure_durable_file(path)?; + return Ok(false); + } if let Some(parent) = path.parent() { fs::create_dir_all(parent).map_err(|_| persistence_error("create JSON store directory"))?; } @@ -33,15 +80,202 @@ pub(crate) fn atomic_write(path: &Path, contents: &[u8]) -> Result<(), BackendEr .unwrap_or_default(); let temporary = path.with_file_name(format!("{file_name}.tmp-{}", uuid::Uuid::new_v4().simple())); - fs::write(&temporary, contents) - .map_err(|_| persistence_error("write JSON store temporary file"))?; + let write = (|| { + let mut options = fs::OpenOptions::new(); + options.write(true).create_new(true); + #[cfg(unix)] + { + use std::os::unix::fs::OpenOptionsExt; + options.mode(0o600); + } + let mut file = options + .open(&temporary) + .map_err(|_| persistence_error("create JSON store temporary file"))?; + file.write_all(contents) + .map_err(|_| persistence_error("write JSON store temporary file"))?; + file.sync_all() + .map_err(|_| persistence_error("flush JSON store temporary file")) + })(); + if let Err(error) = write { + let _ = fs::remove_file(&temporary); + return Err(error); + } + #[cfg(test)] + if take_test_fault(path, false) { + let _ = fs::remove_file(&temporary); + return Err(persistence_error("fixture pre-rename failure")); + } if fs::rename(&temporary, path).is_err() { let _ = fs::remove_file(&temporary); return Err(persistence_error("replace JSON store file")); } + #[cfg(test)] + if take_test_fault(path, true) { + return Err(BackendError::new( + BackendErrorCode::OutcomeUnknown, + "fixture directory flush failure", + )); + } + #[cfg(unix)] + if let Some(parent) = path.parent() { + fs::File::open(parent) + .and_then(|file| file.sync_all()) + .map_err(|_| { + BackendError::new( + BackendErrorCode::OutcomeUnknown, + "JSON replacement outcome needs verification", + ) + })?; + } + Ok(true) +} + +/// A read-back of an uncertain rename is complete only after its data and directory flush. +pub(crate) fn ensure_durable_file(path: &Path) -> Result<(), BackendError> { + let mut options = fs::OpenOptions::new(); + options.read(true); + #[cfg(windows)] + options.write(true); + options + .open(path) + .and_then(|file| file.sync_all()) + .map_err(|_| { + BackendError::new( + BackendErrorCode::OutcomeUnknown, + "stored data durability needs verification", + ) + })?; + #[cfg(unix)] + if let Some(parent) = path.parent() { + fs::File::open(parent) + .and_then(|file| file.sync_all()) + .map_err(|_| { + BackendError::new( + BackendErrorCode::OutcomeUnknown, + "stored directory durability needs verification", + ) + })?; + } Ok(()) } pub(crate) fn persistence_error(operation: &'static str) -> BackendError { BackendError::new(BackendErrorCode::Persistence, operation) } + +/// Sync must either preserve every stored field or report an unsupported schema. +pub(crate) fn read_lossless_rows( + path: &Path, + aliases: &[&str], +) -> Result, BackendError> { + let file = match fs::File::open(path) { + Ok(file) => file, + Err(error) if error.kind() == std::io::ErrorKind::NotFound => return Ok(Vec::new()), + Err(_) => return Err(persistence_error("read sync rows")), + }; + let limit = crate::cloud_sync_e2ee_documents::MAX_JSON_BYTES; + let mut bytes = Vec::new(); + file.take((limit + 1) as u64) + .read_to_end(&mut bytes) + .map_err(|_| persistence_error("read sync rows"))?; + if bytes.len() > limit { + return Err(BackendError::new( + BackendErrorCode::InvalidArgument, + "payload_too_large", + )); + } + if bytes.is_empty() { + return Ok(Vec::new()); + } + let raw: Vec = + serde_json::from_slice(&bytes).map_err(|_| persistence_error("decode sync rows"))?; + raw.into_iter() + .map(|value| { + let row: T = serde_json::from_value(value.clone()) + .map_err(|_| persistence_error("decode sync row"))?; + let canonical = + serde_json::to_value(&row).map_err(|_| persistence_error("encode sync row"))?; + ensure_lossless_value(&value, &canonical, aliases)?; + Ok(row) + }) + .collect() +} + +/// Every explicit source value must remain representable. Canonical defaults may be added; +/// aliases are allowed only at the root and must be explicitly registered by the caller. +pub(crate) fn ensure_lossless_value( + raw: &serde_json::Value, + canonical: &serde_json::Value, + aliases: &[&str], +) -> Result<(), BackendError> { + use serde_json::Value; + match (raw, canonical) { + (Value::Object(raw), Value::Object(canonical)) => { + for (key, value) in raw { + if aliases.contains(&key.as_str()) { + continue; + } + let next = canonical.get(key).ok_or_else(|| { + BackendError::new(BackendErrorCode::Unsupported, "unsupported stored fields") + })?; + ensure_lossless_value(value, next, &[])?; + } + } + (Value::Array(raw), Value::Array(canonical)) if raw.len() == canonical.len() => { + for (raw, canonical) in raw.iter().zip(canonical) { + ensure_lossless_value(raw, canonical, &[])?; + } + } + _ if raw == canonical => {} + _ => { + return Err(BackendError::new( + BackendErrorCode::Unsupported, + "stored value cannot be preserved", + )) + } + } + Ok(()) +} + +pub(crate) fn read_lossless_object( + path: &Path, +) -> Result { + let bytes = match fs::read(path) { + Ok(bytes) => bytes, + Err(error) if error.kind() == std::io::ErrorKind::NotFound => return Ok(T::default()), + Err(_) => return Err(persistence_error("read JSON store")), + }; + if bytes.is_empty() { + return Ok(T::default()); + } + let raw: serde_json::Value = + serde_json::from_slice(&bytes).map_err(|_| persistence_error("decode JSON store"))?; + let value: T = + serde_json::from_value(raw.clone()).map_err(|_| persistence_error("decode JSON store"))?; + let canonical = + serde_json::to_value(&value).map_err(|_| persistence_error("encode JSON store"))?; + ensure_lossless_value(&raw, &canonical, &[])?; + Ok(value) +} + +#[cfg(test)] +static TEST_FAULTS: std::sync::LazyLock< + std::sync::Mutex>, +> = std::sync::LazyLock::new(|| std::sync::Mutex::new(std::collections::BTreeMap::new())); +#[cfg(test)] +pub(crate) fn fail_next_atomic_write(path: &Path, after_rename: bool) { + TEST_FAULTS + .lock() + .unwrap() + .insert(path.to_path_buf(), after_rename); +} +#[cfg(test)] +fn take_test_fault(path: &Path, after_rename: bool) -> bool { + let mut faults = TEST_FAULTS.lock().unwrap(); + if faults.get(path) == Some(&after_rename) { + faults.remove(path); + true + } else { + false + } +} diff --git a/openless-all/app/crates/openless-core/src/polish.rs b/openless-all/app/crates/openless-core/src/polish.rs index 0d2e089eb..7b8e37198 100644 --- a/openless-all/app/crates/openless-core/src/polish.rs +++ b/openless-all/app/crates/openless-core/src/polish.rs @@ -1451,7 +1451,13 @@ pub(crate) fn append_utf8_sse_chunk( chunk: &[u8], ) -> Result<(), LLMError> { pending.extend_from_slice(chunk); - drain_complete_utf8(buffer, pending) + drain_complete_utf8(buffer, pending)?; + // Normalize only after reassembling UTF-8, including CR/LF split across chunks. + // Omni, Codex and TextEventStream share this framing boundary. + if buffer.contains("\r\n") { + *buffer = buffer.replace("\r\n", "\n"); + } + Ok(()) } pub(crate) fn finish_utf8_sse_chunks( @@ -2170,6 +2176,96 @@ mod tests { format!("{}.{}.sig", header, payload) } + #[test] + fn utf8_sse_decoder_emits_each_crlf_or_lf_frame_before_the_next_one() { + let frames = [ + "data: {\"delta\":\"你好🙂\"}\r\n\r\n", + "data: {\"delta\":\"second\"}\n\n", + "data: [DONE]\r\n\r\n", + ]; + let mut buffer = String::new(); + let mut pending = Vec::new(); + let mut emitted = Vec::new(); + for (index, frame) in frames.iter().enumerate() { + // One byte per HTTP chunk splits both CRLF pairs and UTF-8 codepoints. + for byte in frame.as_bytes() { + append_utf8_sse_chunk(&mut buffer, &mut pending, &[*byte]).unwrap(); + while let Some(end) = buffer.find("\n\n") { + emitted.push(buffer[..end].to_string()); + buffer.drain(..end + 2); + } + } + assert_eq!( + emitted.len(), + index + 1, + "must emit before another frame or EOF" + ); + } + finish_utf8_sse_chunks(&mut buffer, &mut pending).unwrap(); + assert_eq!( + emitted, + [ + "data: {\"delta\":\"你好🙂\"}", + "data: {\"delta\":\"second\"}", + "data: [DONE]" + ] + ); + assert!(buffer.is_empty()); + assert!(pending.is_empty()); + } + + #[test] + fn utf8_sse_decoder_normalizes_crlf_at_every_network_split() { + let frame = "data: {\"delta\":\"你好🙂\"}\r\n\r\n"; + for split in 0..=frame.len() { + let mut buffer = String::new(); + let mut pending = Vec::new(); + append_utf8_sse_chunk(&mut buffer, &mut pending, &frame.as_bytes()[..split]).unwrap(); + append_utf8_sse_chunk(&mut buffer, &mut pending, &frame.as_bytes()[split..]).unwrap(); + assert_eq!(buffer, "data: {\"delta\":\"你好🙂\"}\n\n", "split={split}"); + assert!(pending.is_empty()); + } + } + + #[test] + fn codex_crlf_deltas_and_completion_do_not_wait_for_eof() { + for terminal in ["response.done", "response.completed"] { + let frames = [ + "data: {\"type\":\"response.output_text.delta\",\"delta\":\"你🙂\"}\r\n\r\n".to_string(), + "data: {\"type\":\"response.text.delta\",\"text\":\"好\"}\n\n".to_string(), + format!("data: {{\"type\":\"{terminal}\",\"response\":{{\"output_text\":\"最终文本\"}}}}\r\n\r\n"), + "data: [DONE]\r\n\r\n".to_string(), + ]; + let mut buffer = String::new(); + let mut pending = Vec::new(); + let mut full_text = String::new(); + let mut final_text = String::new(); + let callbacks = StdMutex::new(Vec::new()); + for (index, frame) in frames.iter().enumerate() { + for byte in frame.as_bytes() { + append_utf8_sse_chunk(&mut buffer, &mut pending, &[*byte]).unwrap(); + while let Some(end) = buffer.find("\n\n") { + let event = buffer[..end].to_string(); + buffer.drain(..end + 2); + handle_codex_sse_event(&event, &mut full_text, &mut final_text, &|text| { + callbacks.lock().unwrap().push(text.to_string()); + }); + } + } + assert_eq!(full_text, if index == 0 { "你🙂" } else { "你🙂好" }); + assert_eq!( + callbacks.lock().unwrap().len(), + if index == 0 { 1 } else { 2 } + ); + if index >= 2 { + assert_eq!(final_text, "最终文本", "retain Codex completion fallback"); + } + } + finish_utf8_sse_chunks(&mut buffer, &mut pending).unwrap(); + assert!(buffer.is_empty()); + } + } + #[test] fn utf8_sse_decoder_preserves_multibyte_split_across_chunks() { let mut buffer = String::new(); diff --git a/openless-all/app/crates/openless-core/src/preferences.rs b/openless-all/app/crates/openless-core/src/preferences.rs index 35a4b8156..113cea668 100644 --- a/openless-all/app/crates/openless-core/src/preferences.rs +++ b/openless-all/app/crates/openless-core/src/preferences.rs @@ -14,6 +14,7 @@ fn persistence_error(operation: impl Into) -> BackendError { } fn read_preferences(path: &Path) -> Result { + let read_only = crate::cloud_sync_e2ee_store::gate::recovery_pending_for_path(path); if !path.exists() { return Ok(UserPreferences::default()); } @@ -24,9 +25,14 @@ fn read_preferences(path: &Path) -> Result { let preferences = match serde_json::from_slice::(&bytes) { Ok(preferences) => preferences, - Err(error) => { + Err(_error) => { + if read_only { + // Recovery owns the authoritative before/after images. Do not back up, + // migrate, or overwrite a partially restored file during construction. + return Ok(UserPreferences::salvage_from_json_bytes(&bytes)); + } log::error!( - "[prefs] strict decode of {} failed: {error}; backing up and salvaging", + "[prefs] strict decode of {} failed; backing up and salvaging", path.display() ); let backup = backup_unparseable_preferences(path, &bytes)?; @@ -35,8 +41,11 @@ fn read_preferences(path: &Path) -> Result { backup.display() ); let salvaged = UserPreferences::salvage_from_json_bytes(&bytes); - match serde_json::to_vec_pretty(&salvaged) - .map_err(|_| persistence_error("encode salvaged preferences")) + match preferences_json_preserving_unknown(path, &salvaged) + .and_then(|value| { + serde_json::to_vec_pretty(&value) + .map_err(|_| persistence_error("encode salvaged preferences")) + }) .and_then(|json| atomic_write(path, &json)) { Ok(()) => log::info!( @@ -60,9 +69,12 @@ fn read_preferences(path: &Path) -> Result { .and_then(|flag| flag.as_bool()) }) .unwrap_or(false); - if !streaming_default_migrated { - match serde_json::to_vec_pretty(&preferences) - .map_err(|_| persistence_error("encode migrated preferences")) + if !streaming_default_migrated && !read_only { + match preferences_json_preserving_unknown(path, &preferences) + .and_then(|value| { + serde_json::to_vec_pretty(&value) + .map_err(|_| persistence_error("encode migrated preferences")) + }) .and_then(|json| atomic_write(path, &json)) { Ok(()) => log::info!("[prefs] migrated streamingInsert default marker"), @@ -76,6 +88,87 @@ fn read_preferences(path: &Path) -> Result { Ok(preferences) } +fn preferences_json_preserving_unknown( + path: &Path, + preferences: &UserPreferences, +) -> Result { + let mut value = + serde_json::to_value(preferences).map_err(|_| persistence_error("encode preferences"))?; + let existing = match fs::read(path) { + Ok(bytes) => Some(bytes), + Err(error) if error.kind() == std::io::ErrorKind::NotFound => None, + Err(_) => return Err(persistence_error("read unknown preference fields")), + }; + if let Some(bytes) = existing { + if let Ok(serde_json::Value::Object(old)) = serde_json::from_slice(&bytes) { + let object = value + .as_object_mut() + .ok_or_else(|| persistence_error("preferences object"))?; + let mut old = serde_json::Value::Object(old); + if let Some(map) = old.as_object_mut() { + map.remove("windowsSendinputInsertionOnly"); + map.remove("windowsSendinputNewlineMode"); + } + let mut canonical = serde_json::to_value(preferences) + .map_err(|_| persistence_error("encode preferences"))?; + preserve_unknown_fields(&mut canonical, &old)?; + *object = canonical + .as_object_mut() + .ok_or_else(|| persistence_error("preferences object"))? + .clone(); + } + } + Ok(value) +} + +fn preserve_unknown_fields( + canonical: &mut serde_json::Value, + old: &serde_json::Value, +) -> Result<(), BackendError> { + use serde_json::Value; + match (canonical, old) { + (Value::Object(current), Value::Object(old)) => { + for (key, value) in old { + if let Some(known) = current.get_mut(key) { + preserve_unknown_fields(known, value)?; + } else { + current.insert(key.clone(), value.clone()); + } + } + } + (Value::Array(current), Value::Array(old)) => { + // Existing object arrays have stable identities. Preserve extensions across + // reordering/editing, and let explicit entity deletion remove its extensions. + for item in current.iter_mut().filter(|item| item.is_object()) { + let key = ["packId", "code", "id"] + .into_iter() + .find(|key| item.get(*key).is_some()); + let Some(key) = key else { + return Err(BackendError::new( + BackendErrorCode::Unsupported, + "unsupported preference array extension", + )); + }; + let matches: Vec<_> = old + .iter() + .filter(|candidate| candidate.get(key) == item.get(key)) + .collect(); + if matches.len() > 1 { + return Err(BackendError::new( + BackendErrorCode::Unsupported, + "ambiguous preference array identity", + )); + } + if let Some(previous) = matches.first() { + preserve_unknown_fields(item, previous)?; + } + } + } + _ => {} + } + Ok(()) +} + fn backup_unparseable_preferences(path: &Path, bytes: &[u8]) -> Result { let timestamp = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) @@ -109,7 +202,15 @@ impl PreferencesStore { if path.as_os_str().is_empty() { return Err(persistence_error("preferences path is empty")); } - let preferences = read_preferences(&path)?; + let preferences = if crate::cloud_sync_e2ee_store::gate::recovery_pending_for_path(&path) { + read_preferences(&path)? + } else { + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || read_preferences(&path), + )? + }; Ok(Self { path, state: Mutex::new(preferences), @@ -141,6 +242,11 @@ impl PreferencesStore { .clone() } + /// Immutable Host-selected path, used to check a write barrier before taking store locks. + pub(crate) fn persistence_path(&self) -> &Path { + &self.path + } + /// Keep the live value locked until a coordinated restore has committed all of its files. pub(crate) fn cloud_sync_access(&self) -> (std::sync::MutexGuard<'_, UserPreferences>, &Path) { ( @@ -152,14 +258,47 @@ impl PreferencesStore { } pub fn set(&self, preferences: UserPreferences) -> Result<(), BackendError> { - let json = serde_json::to_vec_pretty(&preferences) - .map_err(|_| persistence_error("encode preferences"))?; + self.update(|current| *current = preferences) + } + + pub(crate) fn sync_snapshot( + &self, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + self.sync_snapshot_readonly() + } + + pub(crate) fn sync_snapshot_readonly(&self) -> Result { let mut state = self .state .lock() .unwrap_or_else(std::sync::PoisonError::into_inner); - atomic_write(&self.path, &json)?; - *state = preferences; + if self.path.exists() { + let bytes = + fs::read(&self.path).map_err(|_| persistence_error("read sync preferences"))?; + *state = serde_json::from_slice(&bytes) + .map_err(|_| persistence_error("decode sync preferences"))?; + } + preferences_json_preserving_unknown(&self.path, &state) + } + + pub(crate) fn sync_replace_raw( + &self, + value: serde_json::Value, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let parsed: UserPreferences = serde_json::from_value(value.clone()) + .map_err(|_| persistence_error("validate restored preferences"))?; + let bytes = serde_json::to_vec_pretty(&value) + .map_err(|_| persistence_error("encode restored preferences"))?; + let mut state = self + .state + .lock() + .unwrap_or_else(std::sync::PoisonError::into_inner); + crate::persistence::atomic_write_for_sync(&self.path, &bytes, permit)?; + *state = parsed; Ok(()) } @@ -171,33 +310,50 @@ impl PreferencesStore { &self, update: impl FnOnce(&mut UserPreferences) -> R, ) -> Result { - let mut state = self - .state - .lock() - .unwrap_or_else(std::sync::PoisonError::into_inner); - let mut next = state.clone(); - let result = update(&mut next); - let json = serde_json::to_vec_pretty(&next) - .map_err(|_| persistence_error("encode preferences"))?; - atomic_write(&self.path, &json)?; - *state = next; - Ok(result) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation_deciding(&self.path, || { + let mut state = self + .state + .lock() + .unwrap_or_else(std::sync::PoisonError::into_inner); + let mut next = match fs::read(&self.path) { + Ok(bytes) if !bytes.is_empty() => serde_json::from_slice::(&bytes) + .map_err(|_| persistence_error("decode preferences before save"))?, + Ok(_) => state.clone(), + Err(error) if error.kind() == std::io::ErrorKind::NotFound => state.clone(), + Err(_) => return Err(persistence_error("read preferences before save")), + }; + let previous = + serde_json::to_value(&next).map_err(|_| persistence_error("encode preferences"))?; + let result = update(&mut next); + let value = preferences_json_preserving_unknown(&self.path, &next)?; + let changed = crate::cloud_sync_e2ee_documents::registry::PREFERENCE_FIELDS + .iter() + .any(|field| { + field.class + != crate::cloud_sync_e2ee_documents::registry::PreferenceClass::Excluded + && previous.get(field.key) != value.get(field.key) + }); + let origin = if changed { + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User + } else { + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::LocalOnly + }; + let json = serde_json::to_vec_pretty(&value) + .map_err(|_| persistence_error("encode preferences"))?; + atomic_write(&self.path, &json)?; + *state = next; + Ok((result, origin)) + }) } pub fn set_preserving_current_style_preferences( &self, mut preferences: UserPreferences, ) -> Result<(), BackendError> { - let mut state = self - .state - .lock() - .unwrap_or_else(std::sync::PoisonError::into_inner); - preferences.preserve_style_preferences_from(&state); - let json = serde_json::to_vec_pretty(&preferences) - .map_err(|_| persistence_error("encode preferences"))?; - atomic_write(&self.path, &json)?; - *state = preferences; - Ok(()) + self.update(|current| { + preferences.preserve_style_preferences_from(current); + *current = preferences; + }) } } diff --git a/openless-all/app/crates/openless-core/src/qa_service.rs b/openless-all/app/crates/openless-core/src/qa_service.rs index ab230df6f..c7f5c733c 100644 --- a/openless-all/app/crates/openless-core/src/qa_service.rs +++ b/openless-all/app/crates/openless-core/src/qa_service.rs @@ -24,6 +24,7 @@ struct QaState { enum QaSubmission { Text(String), + ScopedText { text: String, expected_session: Option }, Captured(QaInput), SelectionEdit { selection_voice_session_id: SessionId, @@ -45,6 +46,7 @@ pub struct QaService { persistence: Option>, selection_voice: Option>, voice_sessions: Arc, + runtime_work: Arc, } pub(crate) struct QaPersistence { @@ -77,6 +79,7 @@ impl QaService { host_actions, events: Arc::new(Mutex::new(None)), state: Arc::new(Mutex::new(QaState::default())), + runtime_work: Arc::new(crate::voice_session::RuntimeActivityGate::default()), presentation: Arc::new(Mutex::new(())), persistence: None, selection_voice: None, @@ -96,6 +99,7 @@ impl QaService { host_actions, events: Arc::new(Mutex::new(None)), state: Arc::new(Mutex::new(QaState::default())), + runtime_work: Arc::new(crate::voice_session::RuntimeActivityGate::default()), presentation: Arc::new(Mutex::new(())), persistence: Some(Arc::new(persistence)), selection_voice: Some(selection_voice), @@ -103,6 +107,20 @@ impl QaService { } } + fn begin_runtime_work( + &self, + ) -> Result { + let state = self.state.lock().expect("QA state lock poisoned"); + if matches!( + state.snapshot.phase, + QaPhase::Recording | QaPhase::Thinking | QaPhase::AwaitingApproval + ) { + Ok(self.runtime_work.existing_work()) + } else { + self.runtime_work.acquire() + } + } + fn progress_sink(&self) -> Arc { Arc::new(QaServiceProgress { state: Arc::clone(&self.state), @@ -166,6 +184,7 @@ impl QaService { } async fn begin_recording(&self) -> Result<(), BackendError> { + let _runtime = self.begin_runtime_work()?; let session_id = SessionId::new(); { let _presentation = self @@ -218,14 +237,15 @@ impl QaService { } async fn finish_recording(&self, session_id: SessionId) -> Result<(), BackendError> { - { + let _runtime = { let mut state = self.state.lock().expect("QA state lock poisoned"); // Validate the callback's generation and claim the finish under // one lock. A delayed silence event cannot toggle a completed turn // back on, stop its successor, or compete with a manual stop. ensure_current_phase(&state.snapshot, session_id, QaPhase::Recording)?; state.snapshot.phase = QaPhase::Thinking; - } + self.runtime_work.existing_work() + }; self.publish_snapshot(QaStateKind::Loading, Some((session_id, QaPhase::Thinking))); let input = match self.runtime.finish_recording(session_id).await { @@ -261,8 +281,14 @@ impl QaService { } async fn submit_inner(&self, submission: QaSubmission) -> Result<(), BackendError> { + let _runtime = self.begin_runtime_work()?; + let expected_session = match &submission { + QaSubmission::ScopedText { expected_session, .. } => Some(*expected_session), + _ => None, + }; let text = match &submission { QaSubmission::Text(text) => text, + QaSubmission::ScopedText { text, .. } => text, QaSubmission::Captured(input) => &input.text, QaSubmission::SelectionEdit { instruction, .. } => instruction, } @@ -280,6 +306,9 @@ impl QaService { let previous = { let mut state = self.state.lock().expect("QA state lock poisoned"); ensure_qa_idle(&state.snapshot)?; + if expected_session.is_some_and(|expected| expected != state.snapshot.session_id) { + return Err(BackendError::new(BackendErrorCode::InvalidState, "qa_context_changed")); + } let previous = state.snapshot.clone(); let conversation_id = state.snapshot.conversation_id.unwrap_or(session_id); state.snapshot.phase = QaPhase::Thinking; @@ -305,7 +334,7 @@ impl QaService { } let prepared = match submission { - QaSubmission::Text(_) => self.runtime.prepare_text(session_id, text).await, + QaSubmission::Text(_) | QaSubmission::ScopedText { .. } => self.runtime.prepare_text(session_id, text).await, QaSubmission::Captured(mut input) => { input.text = text; self.runtime.prepare_captured_text(session_id, input).await @@ -556,6 +585,21 @@ impl QaService { &self, requested_session_id: Option, clear: bool, + ) -> Result<(), BackendError> { + let service = self.clone(); + self.runtime_work + .cleanup(Box::pin(async move { + service + .cancel_inner_owned(requested_session_id, clear) + .await + })) + .await + } + + async fn cancel_inner_owned( + &self, + requested_session_id: Option, + clear: bool, ) -> Result<(), BackendError> { let (runtime_session_id, conversation_id, host_result) = { let _presentation = self @@ -631,7 +675,11 @@ impl QaService { } async fn cancel_runtime_best_effort(&self, session_id: SessionId) { - if let Err(error) = self.runtime.cancel(session_id).await { + if let Err(error) = self + .runtime_work + .cleanup(self.runtime.cancel(session_id)) + .await + { log::warn!("failed to release QA runtime session after an error: {error}"); } } @@ -659,6 +707,23 @@ impl QaService { } impl QaApi for QaService { + fn bind_runtime_restore_guard( + &self, + guard: crate::domains::RuntimeRestoreGuard, + spawner: Arc, + ) -> Result<(), BackendError> { + self.runtime_work.bind(guard, spawner) + } + + fn runtime_restore_idle(&self) -> bool { + self.state.lock().is_ok_and(|state| { + matches!( + state.snapshot.phase, + QaPhase::Idle | QaPhase::Completed | QaPhase::Cancelled | QaPhase::Failed + ) && self.runtime_work.runtime_restore_idle() + }) + } + fn bind_event_publisher(&self, publisher: BackendEventPublisher) { *self .events @@ -720,7 +785,7 @@ impl QaApi for QaService { error: BackendError, ) -> BoxFuture<'static, Result<(), BackendError>> { let service = self.clone(); - Box::pin(async move { + self.runtime_work.cleanup(Box::pin(async move { { let state = service.state.lock().expect("QA state lock poisoned"); ensure_current_phase(&state.snapshot, session_id, QaPhase::Recording)?; @@ -728,7 +793,7 @@ impl QaApi for QaService { service.fail_if_current(session_id, &error); service.voice_sessions.release(session_id); service.runtime.cancel(session_id).await - }) + })) } fn stop_recording( @@ -744,6 +809,11 @@ impl QaApi for QaService { Box::pin(async move { service.submit_text_inner(text).await }) } + fn submit_text_in_context(&self, text: String, expected_session: Option) -> BoxFuture<'static, Result<(), BackendError>> { + let service = self.clone(); + Box::pin(async move { service.submit_inner(QaSubmission::ScopedText { text, expected_session }).await }) + } + fn submit_captured_text(&self, input: QaInput) -> BoxFuture<'static, Result<(), BackendError>> { let service = self.clone(); Box::pin(async move { service.submit_inner(QaSubmission::Captured(input)).await }) @@ -1067,3 +1137,281 @@ fn publish_qa_snapshot_impl( )), ); } + +#[cfg(test)] +mod runtime_restore_tests { + use super::*; + use crate::domains::QaTurnResult; + use std::sync::atomic::{AtomicBool, AtomicUsize}; + + #[derive(Clone, Default)] + struct Runtime { + calls: Arc, + block_prepare: Arc, + fail_prepare: Arc, + prepare_entered: Arc, + prepare_release: Arc, + block_cancel: Arc, + cancel_entered: Arc, + cancel_release: Arc, + cancel_done: Arc, + } + impl QaRuntimeAdapter for Runtime { + fn prepare_text( + &self, + _: SessionId, + text: String, + ) -> BoxFuture<'static, Result> { + let this = self.clone(); + Box::pin(async move { + this.calls.fetch_add(1, Ordering::SeqCst); + if this.fail_prepare.load(Ordering::SeqCst) { + return Err(BackendError::new( + BackendErrorCode::Provider, + "fixture prepare failure", + )); + } + if this.block_prepare.load(Ordering::SeqCst) { + this.prepare_entered.notify_one(); + this.prepare_release.notified().await; + } + Ok(QaInput { + text, + selection_text: None, + selection_source_app: None, + }) + }) + } + fn start_recording( + &self, + _: SessionId, + _: Arc, + ) -> BoxFuture<'static, Result<(), BackendError>> { + self.calls.fetch_add(1, Ordering::SeqCst); + Box::pin(async { Ok(()) }) + } + fn finish_recording( + &self, + _: SessionId, + ) -> BoxFuture<'static, Result> { + Box::pin(async { + Ok(QaInput { + text: "question".into(), + selection_text: None, + selection_source_app: None, + }) + }) + } + fn answer( + &self, + _: QaTurnRequest, + _: Arc, + ) -> BoxFuture<'static, Result> { + Box::pin(async { + Ok(QaTurnResult { + answer: "answer".into(), + }) + }) + } + fn cancel(&self, _: SessionId) -> BoxFuture<'static, Result<(), BackendError>> { + let this = self.clone(); + Box::pin(async move { + if this.block_cancel.load(Ordering::SeqCst) { + this.cancel_entered.notify_one(); + this.cancel_release.notified().await; + } + this.cancel_done.notify_one(); + Ok(()) + }) + } + } + fn service(runtime: Runtime, restoring: Arc) -> QaService { + let service = QaService::new(Arc::new(runtime), Arc::new(crate::ports::NoopHostActions)); + service.bind_event_publisher(BackendEventPublisher::new(Arc::new( + crate::events::EventBus::new(32), + ))); + service + .bind_runtime_restore_guard( + Arc::new(move || { + if restoring.load(Ordering::Acquire) { + Err(BackendError::new(BackendErrorCode::Busy, "restoring")) + } else { + Ok(()) + } + }), + Arc::new(crate::config::TokioTaskSpawner), + ) + .unwrap(); + service + } + + #[tokio::test] + async fn runtime_restore_rejects_qa_text_and_voice_before_host_work_but_keeps_snapshot_readable( + ) { + let runtime = Runtime::default(); + let flag = Arc::new(AtomicBool::new(true)); + let service = service(runtime.clone(), flag.clone()); + assert_eq!( + service + .submit_text("question".into()) + .await + .unwrap_err() + .code, + BackendErrorCode::Busy + ); + assert_eq!( + service.toggle_recording().await.unwrap_err().code, + BackendErrorCode::Busy + ); + assert_eq!(runtime.calls.load(Ordering::SeqCst), 0); + assert_eq!(service.snapshot().await.unwrap().phase, QaPhase::Idle); + assert!(service.runtime_restore_idle()); + flag.store(false, Ordering::Release); + service.submit_text("question".into()).await.unwrap(); + assert_eq!(service.snapshot().await.unwrap().phase, QaPhase::Completed); + assert!(service.runtime_restore_idle()); + } + + #[tokio::test] + async fn runtime_restore_qa_text_lease_does_not_take_the_exclusive_voice_slot() { + let runtime = Runtime::default(); + runtime.block_prepare.store(true, Ordering::SeqCst); + let flag = Arc::new(AtomicBool::new(false)); + let service = service(runtime.clone(), flag.clone()); + let text = tokio::spawn(service.submit_text("question".into())); + runtime.prepare_entered.notified().await; + assert!(!service.runtime_restore_idle()); + let voice = SessionId::new(); + service + .voice_sessions + .acquire(voice, crate::voice_session::VoiceSessionKind::Dictation) + .unwrap(); + service.voice_sessions.release(voice); + flag.store(true, Ordering::Release); + assert_eq!( + service + .submit_text("another".into()) + .await + .unwrap_err() + .code, + BackendErrorCode::Busy + ); + runtime.prepare_release.notify_one(); + text.await.unwrap().unwrap(); + assert!( + service.runtime_restore_idle(), + "an attempted restore must not break the accepted turn" + ); + } + + #[tokio::test] + async fn runtime_restore_qa_cancel_waiter_drop_keeps_cleanup_busy_until_drained() { + let runtime = Runtime::default(); + runtime.block_cancel.store(true, Ordering::SeqCst); + let service = service(runtime.clone(), Arc::new(AtomicBool::new(false))); + service.toggle_recording().await.unwrap(); + let cancel = tokio::spawn(service.cancel(None)); + runtime.cancel_entered.notified().await; + assert_eq!(service.snapshot().await.unwrap().phase, QaPhase::Cancelled); + assert!(!service.runtime_restore_idle()); + cancel.abort(); + assert!(cancel.await.unwrap_err().is_cancelled()); + assert!(!service.runtime_restore_idle()); + runtime.cancel_release.notify_one(); + runtime.cancel_done.notified().await; + for _ in 0..4 { + tokio::task::yield_now().await; + } + assert!(service.runtime_restore_idle()); + } + + #[test] + fn runtime_restore_qa_probe_cannot_pass_between_check_and_claim() { + let flag = Arc::new(AtomicBool::new(false)); + let service = QaService::new( + Arc::new(Runtime::default()), + Arc::new(crate::ports::NoopHostActions), + ); + let (checked, receive_checked) = std::sync::mpsc::channel(); + let (resume, receive_resume) = std::sync::mpsc::channel(); + let receive_resume = Mutex::new(receive_resume); + let check_flag = flag.clone(); + service.bind_event_publisher(BackendEventPublisher::new(Arc::new( + crate::events::EventBus::new(32), + ))); + service + .bind_runtime_restore_guard( + Arc::new(move || { + assert!(!check_flag.load(Ordering::Acquire)); + checked.send(()).unwrap(); + receive_resume.lock().unwrap().recv().unwrap(); + Ok(()) + }), + Arc::new(crate::config::TokioTaskSpawner), + ) + .unwrap(); + let start = std::thread::spawn({ + let service = service.clone(); + move || { + tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap() + .block_on(service.toggle_recording()) + } + }); + receive_checked + .recv_timeout(std::time::Duration::from_secs(2)) + .unwrap(); + flag.store(true, Ordering::Release); + let probe = std::thread::spawn({ + let service = service.clone(); + move || service.runtime_restore_idle() + }); + resume.send(()).unwrap(); + start.join().unwrap().unwrap(); + assert!(!probe.join().unwrap()); + } + #[tokio::test] + async fn runtime_restore_error_cleanup_survives_dropping_the_failed_submit_waiter() { + let runtime = Runtime::default(); + runtime.fail_prepare.store(true, Ordering::SeqCst); + runtime.block_cancel.store(true, Ordering::SeqCst); + let service = service(runtime.clone(), Arc::new(AtomicBool::new(false))); + let submitting = tokio::spawn(service.submit_text("fixture".into())); + runtime.cancel_entered.notified().await; + assert_eq!(service.snapshot().await.unwrap().phase, QaPhase::Failed); + submitting.abort(); + assert!(submitting.await.unwrap_err().is_cancelled()); + assert!( + !service.runtime_restore_idle(), + "error cleanup still owns native runtime work" + ); + runtime.cancel_release.notify_one(); + runtime.cancel_done.notified().await; + for _ in 0..4 { + tokio::task::yield_now().await; + } + assert!(service.runtime_restore_idle()); + } + #[tokio::test] + async fn runtime_restore_cancel_return_does_not_release_an_inflight_text_reader() { + let runtime = Runtime::default(); + runtime.block_prepare.store(true, Ordering::SeqCst); + let service = service(runtime.clone(), Arc::new(AtomicBool::new(false))); + let question = tokio::spawn(service.submit_text("fixture".into())); + runtime.prepare_entered.notified().await; + service.cancel(None).await.unwrap(); + assert_eq!(service.snapshot().await.unwrap().phase, QaPhase::Cancelled); + assert!( + !service.runtime_restore_idle(), + "old context preparation has not drained" + ); + runtime.prepare_release.notify_one(); + assert_eq!( + question.await.unwrap().unwrap_err().code, + BackendErrorCode::Cancelled + ); + assert!(service.runtime_restore_idle()); + } +} diff --git a/openless-all/app/crates/openless-core/src/selection_service.rs b/openless-all/app/crates/openless-core/src/selection_service.rs index 9bee92249..e205d0378 100644 --- a/openless-all/app/crates/openless-core/src/selection_service.rs +++ b/openless-all/app/crates/openless-core/src/selection_service.rs @@ -55,6 +55,7 @@ struct SelectionServiceInner { activity: Arc, credential_store: Arc, state: RwLock, + runtime_work: Arc, } pub(crate) struct SelectionService { @@ -97,12 +98,41 @@ impl SelectionService { activity: dependencies.activity, credential_store: dependencies.credential_store, state: RwLock::new(SelectionState::default()), + runtime_work: Arc::new(crate::voice_session::RuntimeActivityGate::default()), }), } } } impl SelectionServiceInner { + fn begin_runtime_work( + &self, + ) -> Result { + let state = self.state.write().expect("selection state lock poisoned"); + if matches!( + state.snapshot.phase, + SelectionPhase::Capturing | SelectionPhase::Preview | SelectionPhase::Applying + ) || state.reverting + { + Ok(self.runtime_work.existing_work()) + } else { + self.runtime_work.acquire() + } + } + + async fn cancel_runtime_best_effort(&self, session_id: SessionId) { + let polisher = Arc::clone(&self.polisher); + let runtime = Arc::clone(&self.runtime); + let _ = self + .runtime_work + .cleanup(Box::pin(async move { + let _ = polisher.cancel(session_id).await; + let _ = runtime.cancel(session_id).await; + Ok(()) + })) + .await; + } + fn hide_preview(&self) { if let Err(error) = self.host_actions.request(HostAction::HideSelectionPreview) { log::warn!("failed to hide selection preview: {error}"); @@ -581,6 +611,27 @@ impl SelectionServiceInner { } impl SelectionApi for SelectionService { + fn bind_runtime_restore_guard( + &self, + guard: crate::domains::RuntimeRestoreGuard, + spawner: Arc, + ) -> Result<(), BackendError> { + self.inner.runtime_work.bind(guard, spawner) + } + + fn runtime_restore_idle(&self) -> bool { + self.inner.state.read().is_ok_and(|state| { + matches!( + state.snapshot.phase, + SelectionPhase::Idle + | SelectionPhase::Completed + | SelectionPhase::Cancelled + | SelectionPhase::Failed + ) && !state.reverting + && self.inner.runtime_work.runtime_restore_idle() + }) + } + fn snapshot(&self) -> BoxFuture<'static, Result> { let inner = Arc::clone(&self.inner); Box::pin(async move { @@ -599,6 +650,7 @@ impl SelectionApi for SelectionService { ) -> BoxFuture<'static, Result> { let inner = Arc::clone(&self.inner); Box::pin(async move { + let _runtime = inner.begin_runtime_work()?; let session_id = inner.begin(&request)?; let result = async { let capture = inner @@ -695,8 +747,7 @@ impl SelectionApi for SelectionService { } .await; if result.is_err() && inner.fail_if_active(session_id) { - let _ = inner.polisher.cancel(session_id).await; - let _ = inner.runtime.cancel(session_id).await; + inner.cancel_runtime_best_effort(session_id).await; inner.hide_preview(); } result @@ -710,6 +761,7 @@ impl SelectionApi for SelectionService { ) -> BoxFuture<'static, Result<(), BackendError>> { let inner = Arc::clone(&self.inner); Box::pin(async move { + let _runtime = inner.begin_runtime_work()?; let (source_text, replacement_text) = inner.applying_text(session_id, text)?; let replacement_text = inner.corrected_replacement(session_id, replacement_text)?; let result = inner @@ -727,8 +779,7 @@ impl SelectionApi for SelectionService { // 平台错误(焦点恢复 / 目标复核抖动)保持 preview 可重试—— // 否则窗口被隐藏、busy 卡死,表现为「点确认没反应」。 if inner.settle_confirm_failure(session_id, &error) { - let _ = inner.polisher.cancel(session_id).await; - let _ = inner.runtime.cancel(session_id).await; + inner.cancel_runtime_best_effort(session_id).await; inner.hide_preview(); } Err(error) @@ -742,7 +793,7 @@ impl SelectionApi for SelectionService { session_id: Option, ) -> BoxFuture<'static, Result<(), BackendError>> { let inner = Arc::clone(&self.inner); - Box::pin(async move { + self.inner.runtime_work.cleanup(Box::pin(async move { let active_session = { let mut state = inner.state.write().expect("selection state lock poisoned"); let Some(active_session) = state.snapshot.session_id else { @@ -771,12 +822,13 @@ impl SelectionApi for SelectionService { let runtime_result = inner.runtime.cancel(active_session).await; polish_result?; runtime_result - }) + })) } fn revert(&self, session_id: SessionId) -> BoxFuture<'static, Result<(), BackendError>> { let inner = Arc::clone(&self.inner); Box::pin(async move { + let _runtime = inner.begin_runtime_work()?; inner.begin_revert(session_id)?; match inner.runtime.revert(session_id).await { Ok(outcome) => inner.finish_revert(session_id, outcome), diff --git a/openless-all/app/crates/openless-core/src/selection_voice_service.rs b/openless-all/app/crates/openless-core/src/selection_voice_service.rs index ebe2d4274..c7faea4f8 100644 --- a/openless-all/app/crates/openless-core/src/selection_voice_service.rs +++ b/openless-all/app/crates/openless-core/src/selection_voice_service.rs @@ -1,5 +1,6 @@ +use std::collections::HashMap; use std::sync::atomic::{AtomicU64, Ordering}; -use std::sync::{Arc, RwLock, Weak}; +use std::sync::{Arc, Mutex, RwLock, Weak}; use futures_util::future::BoxFuture; @@ -134,6 +135,8 @@ pub(crate) struct SelectionVoiceService { voice_sessions: Arc, qa: Arc>>>, auto_press_at: Arc>>, + runtime_work: Arc, + applying_work: Arc>>, } struct SelectionVoiceWorkflow { @@ -197,6 +200,29 @@ impl SelectionVoiceService { voice_sessions, qa: Arc::new(RwLock::new(None)), auto_press_at: Arc::new(RwLock::new(None)), + runtime_work: Arc::new(crate::voice_session::RuntimeActivityGate::default()), + applying_work: Arc::new(Mutex::new(HashMap::new())), + } + } + + fn begin_runtime_work( + &self, + ) -> Result { + let state = self + .state + .write() + .expect("selection voice state lock poisoned"); + if matches!( + state.phase, + SelectionVoicePhase::Recording + | SelectionVoicePhase::Processing + | SelectionVoicePhase::AwaitingIntent + | SelectionVoicePhase::Preview + | SelectionVoicePhase::Applying + ) { + Ok(self.runtime_work.existing_work()) + } else { + self.runtime_work.acquire() } } @@ -219,6 +245,7 @@ impl SelectionVoiceService { capture: SelectionCapture, phase: SelectionVoicePhase, ) -> Result { + let _runtime = self.begin_runtime_work()?; if capture.text.trim().is_empty() { return Err(BackendError::new( BackendErrorCode::InvalidArgument, @@ -618,6 +645,26 @@ impl SelectionVoicePersistence { } impl SelectionVoiceApi for SelectionVoiceService { + fn bind_runtime_restore_guard( + &self, + guard: crate::domains::RuntimeRestoreGuard, + spawner: Arc, + ) -> Result<(), BackendError> { + self.runtime_work.bind(guard, spawner) + } + + fn runtime_restore_idle(&self) -> bool { + self.state.read().is_ok_and(|state| { + matches!( + state.phase, + SelectionVoicePhase::Idle + | SelectionVoicePhase::Completed + | SelectionVoicePhase::Cancelled + | SelectionVoicePhase::Failed + ) && self.runtime_work.runtime_restore_idle() + }) + } + fn bind_qa(&self, qa: Weak) { *self .qa @@ -803,6 +850,7 @@ impl SelectionVoiceApi for SelectionVoiceService { ) -> BoxFuture<'static, Result> { let service = self.clone(); Box::pin(async move { + let _runtime = service.begin_runtime_work()?; { let state = service .state @@ -948,6 +996,7 @@ impl SelectionVoiceApi for SelectionVoiceService { ) -> BoxFuture<'static, Result> { let service = self.clone(); Box::pin(async move { + let _runtime = service.begin_runtime_work()?; let session_id = match &disposition { SelectionVoiceDisposition::AwaitingIntent { prompt } => prompt.session_id, SelectionVoiceDisposition::Question { session_id, .. } @@ -1006,6 +1055,7 @@ impl SelectionVoiceApi for SelectionVoiceService { ) -> BoxFuture<'static, Result> { let service = self.clone(); Box::pin(async move { + let _runtime = service.begin_runtime_work()?; let (selection, instruction) = { let state = service .state @@ -1067,6 +1117,7 @@ impl SelectionVoiceApi for SelectionVoiceService { ) -> BoxFuture<'static, Result> { let service = self.clone(); Box::pin(async move { + let _runtime = service.begin_runtime_work()?; let instruction = request.instruction.trim().to_string(); if instruction.is_empty() { return Err(BackendError::new( @@ -1279,6 +1330,7 @@ impl SelectionVoiceApi for SelectionVoiceService { owner_session_id: Option, text: String, ) -> Result { + let _runtime = self.begin_runtime_work()?; let replacement_text = self.persistence.corrected_text(text.trim().to_string()); if replacement_text.is_empty() { return Err(BackendError::new( @@ -1314,6 +1366,13 @@ impl SelectionVoiceApi for SelectionVoiceService { summary, source_app: selection.source_app.clone(), }; + // The native apply can outlive logical cancellation. Its ticket owns + // this lease until the Host reports completion, even if cancel clears + // the visible preview and the old ticket becomes stale. + self.applying_work + .lock() + .expect("selection voice apply work lock poisoned") + .insert(ticket.ticket_id, _runtime); state.applying_ticket = Some(ticket.clone()); state.apply_outcome = None; state.phase = SelectionVoicePhase::Applying; @@ -1335,8 +1394,15 @@ impl SelectionVoiceApi for SelectionVoiceService { let events = self.events.clone(); let persistence = Arc::clone(&self.persistence); let voice_sessions = Arc::clone(&self.voice_sessions); + let runtime_work = Arc::clone(&self.runtime_work); + let applying_work = Arc::clone(&self.applying_work); Box::pin(async move { + let _apply = applying_work + .lock() + .expect("selection voice apply work lock poisoned") + .remove(&ticket_id); let mut state = state.write().expect("selection voice state lock poisoned"); + let _runtime = runtime_work.existing_work(); let ticket = state .applying_ticket .as_ref() @@ -1414,7 +1480,7 @@ impl SelectionVoiceApi for SelectionVoiceService { let events = self.events.clone(); let polisher = self.workflow.polisher.clone(); let voice_sessions = Arc::clone(&self.voice_sessions); - Box::pin(async move { + self.runtime_work.cleanup(Box::pin(async move { let (active_session, snapshot, control) = { let mut state = state.write().expect("selection voice state lock poisoned"); let Some(active_session) = state.session_id else { @@ -1451,7 +1517,7 @@ impl SelectionVoiceApi for SelectionVoiceService { } } host_result - }) + })) } } diff --git a/openless-all/app/crates/openless-core/src/style_pack_store.rs b/openless-all/app/crates/openless-core/src/style_pack_store.rs index 767cfdb16..c75f7b87a 100644 --- a/openless-all/app/crates/openless-core/src/style_pack_store.rs +++ b/openless-all/app/crates/openless-core/src/style_pack_store.rs @@ -7,7 +7,7 @@ use std::path::{Path, PathBuf}; use std::sync::Mutex; use crate::errors::{BackendError, BackendErrorCode}; -use crate::persistence::{atomic_write, persistence_error, read_or_default}; +use crate::persistence::{atomic_write, persistence_error}; use crate::shared_types::UserPreferences; use crate::style_pack_archive::{ cleanup_style_pack_asset_dir, persist_style_pack_icon, read_style_pack_archive, @@ -26,6 +26,18 @@ pub struct StylePackStore { state: Mutex>, } +/// New asset paths have no live references until the index commits. Keep them only +/// on a confirmed or uncertain index commit; all earlier errors clean them up. +#[derive(Default)] +struct UncommittedSyncIcons(Vec); +impl Drop for UncommittedSyncIcons { + fn drop(&mut self) { + for path in &self.0 { + let _ = fs::remove_file(path); + } + } +} + impl StylePackStore { pub fn at_data_dir(data_dir: impl AsRef) -> Result { let data_dir = data_dir.as_ref(); @@ -65,20 +77,45 @@ impl StylePackStore { asset_root: PathBuf, preferences: Option<&UserPreferences>, ) -> Result { - let mut packs: Vec = read_or_default(&path)?; - let mut changed = preferences - .map(|preferences| migrate_style_packs_from_preferences(&mut packs, preferences)) - .unwrap_or(false); - changed |= reconcile_builtin_packs(&mut packs) | ensure_at_least_one_enabled(&mut packs); - sort_packs(&mut packs); - if changed { - write_packs(&path, &packs)?; + let operation_path = path.clone(); + if crate::cloud_sync_e2ee_store::gate::recovery_pending_for_path(&path) { + let packs = crate::persistence::read_lossless_rows(&path, &[])?; + return Ok(Self { + path: Some(path), + asset_root: Some(asset_root), + state: Mutex::new(packs), + }); } - Ok(Self { - path: Some(path), - asset_root: Some(asset_root), - state: Mutex::new(packs), - }) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &operation_path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut packs: Vec = crate::persistence::read_lossless_rows(&path, &[])?; + if crate::cloud_sync_e2ee_store::gate::recovery_pending_for_path(&path) { + return Ok(Self { + path: Some(path), + asset_root: Some(asset_root), + state: Mutex::new(packs), + }); + } + let mut changed = preferences + .map(|preferences| { + migrate_style_packs_from_preferences(&mut packs, preferences) + }) + .unwrap_or(false); + changed |= + reconcile_builtin_packs(&mut packs) | ensure_at_least_one_enabled(&mut packs); + sort_packs(&mut packs); + if changed { + write_packs(&path, &packs)?; + } + Ok(Self { + path: Some(path), + asset_root: Some(asset_root), + state: Mutex::new(packs), + }) + }, + ) } pub fn in_memory() -> Self { @@ -95,6 +132,136 @@ impl StylePackStore { Ok(self.lock()?.clone()) } + pub(crate) fn sync_snapshot( + &self, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result, BackendError> { + let path = self + .path + .as_deref() + .ok_or_else(|| persistence_error("style pack persistence unavailable"))?; + crate::cloud_sync_e2ee_store::gate::require_exclusive(path, permit)?; + self.sync_snapshot_readonly() + } + + pub(crate) fn sync_snapshot_readonly( + &self, + ) -> Result, BackendError> { + let path = self + .path + .as_deref() + .ok_or_else(|| persistence_error("style pack persistence unavailable"))?; + let mut state = self + .state + .lock() + .map_err(|_| persistence_error("style pack state poisoned"))?; + let packs: Vec = crate::persistence::read_lossless_rows(path, &[])?; + *state = packs.clone(); + packs + .iter() + .map(|pack| { + let icon = match self.icon_data_url_for_pack(pack)? { + Some(data) => { + let (mime, base64) = data + .strip_prefix("data:") + .and_then(|value| value.split_once(";base64,")) + .ok_or_else(|| persistence_error("invalid controlled icon response"))?; + Some(crate::cloud_sync_e2ee_documents::IconAsset { + mime: mime.into(), + base64: base64.into(), + }) + } + None if pack.icon_path.is_some() => { + return Err(persistence_error("registered style icon is missing")) + } + None => None, + }; + Ok(crate::cloud_sync_e2ee_documents::StylePackRecord { + pack: crate::cloud_sync_e2ee_documents::SecretJson::from_serializable(pack) + .map_err(|_| persistence_error("encode style pack snapshot"))?, + icon, + }) + }) + .collect() + } + + pub(crate) fn sync_replace_all( + &self, + records: &[crate::cloud_sync_e2ee_documents::StylePackRecord], + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result<(), BackendError> { + let path = self + .path + .as_deref() + .ok_or_else(|| persistence_error("style pack persistence unavailable"))?; + let asset_root = self + .asset_root + .as_deref() + .ok_or_else(|| persistence_error("style pack assets unavailable"))?; + crate::cloud_sync_e2ee_store::gate::require_exclusive(path, permit)?; + let mut state = self + .state + .lock() + .map_err(|_| persistence_error("style pack state poisoned"))?; + let mut prepared = Vec::with_capacity(records.len()); + // Validate all resource bytes before allocating paths or mutating the index. + for record in records { + let mut pack: StylePack = serde_json::from_value(record.pack.expose().clone()) + .map_err(|_| persistence_error("decode restored style pack"))?; + pack.icon_path = None; + pack.active = false; + if let Some(icon) = &record.icon { + crate::cloud_sync_e2ee_documents::validate_icon(icon) + .map_err(|_| persistence_error("validate restored icon"))?; + } + prepared.push((pack, record.icon.as_ref())); + } + let mut restored = Vec::with_capacity(prepared.len()); + let mut created = UncommittedSyncIcons::default(); + for (mut pack, icon) in prepared { + if let Some(icon) = icon { + let expected = format!("data:{};base64,{}", icon.mime, icon.base64); + if let Some(existing) = state.iter().find(|old| old.id == pack.id) { + if self.icon_data_url_for_pack(existing)?.as_deref() == Some(expected.as_str()) + { + pack.icon_path = existing.icon_path.clone(); + } + } + if pack.icon_path.is_none() { + let extension = match icon.mime.as_str() { + "image/png" => "png", + "image/jpeg" => "jpg", + "image/webp" => "webp", + _ => return Err(persistence_error("unsupported restored icon")), + }; + let destination = asset_root.join(format!( + "sync-{}.{}", + uuid::Uuid::new_v4().simple(), + extension + )); + let bytes = base64::engine::general_purpose::STANDARD + .decode(&icon.base64) + .map_err(|_| persistence_error("decode restored icon"))?; + created.0.push(destination.clone()); + crate::persistence::atomic_write_for_sync(&destination, &bytes, permit)?; + pack.icon_path = Some(destination.to_string_lossy().into_owned()); + } + } + restored.push(pack); + } + let bytes = serde_json::to_vec_pretty(&restored) + .map_err(|_| persistence_error("encode restored styles"))?; + if let Err(error) = crate::persistence::atomic_write_for_sync(path, &bytes, permit) { + if error.code == BackendErrorCode::OutcomeUnknown { + created.0.clear(); + } + return Err(error); + } + created.0.clear(); + *state = restored; + Ok(()) + } + pub(crate) fn cloud_sync_access( &self, ) -> Result<(std::sync::MutexGuard<'_, Vec>, &Path, &Path), BackendError> { @@ -143,49 +310,65 @@ impl StylePackStore { } pub fn create(&self, mut pack: StylePack) -> Result { - let mut packs = self.lock()?; - let requested = if pack.id.trim().is_empty() { - format!("imported-{}", uuid::Uuid::new_v4().simple()) - } else { - pack.id.clone() - }; - pack.id = unique_imported_id(&packs, &requested); - pack.name = required_text(&pack.name, "style pack name")?; - pack.kind = StylePackKind::Imported; - pack.active = false; - pack.enabled = true; - let now = chrono::Utc::now().to_rfc3339(); - pack.created_at = Some(now.clone()); - pack.updated_at = Some(now); - pack.version = normalized_version(&pack.version); - pack.examples = normalized_examples(pack.examples); - pack.tags = normalized_tags(&pack.tags); - packs.push(pack.clone()); - self.persist_locked(&packs)?; - Ok(pack) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut live = self.lock_for_mutation()?; + let mut packs = live.clone(); + let requested = if pack.id.trim().is_empty() { + format!("imported-{}", uuid::Uuid::new_v4().simple()) + } else { + pack.id.clone() + }; + pack.id = unique_imported_id(&packs, &requested); + pack.name = required_text(&pack.name, "style pack name")?; + pack.kind = StylePackKind::Imported; + pack.active = false; + pack.enabled = true; + let now = chrono::Utc::now().to_rfc3339(); + pack.created_at = Some(now.clone()); + pack.updated_at = Some(now); + pack.version = normalized_version(&pack.version); + pack.examples = normalized_examples(pack.examples); + pack.tags = normalized_tags(&pack.tags); + packs.push(pack.clone()); + self.persist_locked(&packs)?; + *live = packs; + Ok(pack) + }, + ) } pub fn update(&self, incoming: StylePack) -> Result { - let mut packs = self.lock()?; - let slot = packs - .iter_mut() - .find(|pack| pack.id == incoming.id) - .ok_or_else(|| not_found(&incoming.id))?; - slot.name = required_text(&incoming.name, "style pack name")?; - slot.description = incoming.description.trim().to_string(); - slot.author = normalized_optional(incoming.author); - slot.version = normalized_version(&incoming.version); - slot.selection_prompt = incoming.selection_prompt; - slot.voice_edit_prompt = incoming.voice_edit_prompt; - slot.prompt = incoming.prompt; - slot.examples = normalized_examples(incoming.examples); - slot.tags = normalized_tags(&incoming.tags); - slot.recommended_model = normalized_optional(incoming.recommended_model); - slot.compatible_app_version = normalized_optional(incoming.compatible_app_version); - slot.updated_at = Some(chrono::Utc::now().to_rfc3339()); - let updated = slot.clone(); - self.persist_locked(&packs)?; - Ok(updated) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut live = self.lock_for_mutation()?; + let mut packs = live.clone(); + let slot = packs + .iter_mut() + .find(|pack| pack.id == incoming.id) + .ok_or_else(|| not_found(&incoming.id))?; + slot.name = required_text(&incoming.name, "style pack name")?; + slot.description = incoming.description.trim().to_string(); + slot.author = normalized_optional(incoming.author); + slot.version = normalized_version(&incoming.version); + slot.selection_prompt = incoming.selection_prompt; + slot.voice_edit_prompt = incoming.voice_edit_prompt; + slot.prompt = incoming.prompt; + slot.examples = normalized_examples(incoming.examples); + slot.tags = normalized_tags(&incoming.tags); + slot.recommended_model = normalized_optional(incoming.recommended_model); + slot.compatible_app_version = normalized_optional(incoming.compatible_app_version); + slot.updated_at = Some(chrono::Utc::now().to_rfc3339()); + let updated = slot.clone(); + self.persist_locked(&packs)?; + *live = packs; + Ok(updated) + }, + ) } /// Save a PNG icon in this pack's owned asset directory, or clear it with `None`. @@ -197,76 +380,86 @@ impl StylePackStore { /// Returns an error for an unknown/invalid pack ID, an invalid PNG, an image /// over 64 KiB, an unavailable asset directory, or a failed filesystem write. pub fn update_icon(&self, id: &str, png: Option<&[u8]>) -> Result { - if id.is_empty() - || id == "." - || id == ".." - || !id - .bytes() - .all(|c| c.is_ascii_alphanumeric() || b"._-".contains(&c)) - { - return Err(invalid_icon("invalid style pack id")); - } - let mut packs = self.lock()?; - let index = packs - .iter() - .position(|pack| pack.id == id) - .ok_or_else(|| not_found(id))?; - let old_path = packs[index].icon_path.clone(); - let new_path = if let Some(bytes) = png { - if bytes.len() > MAX_ICON_BYTES { - return Err(invalid_icon("style pack icon exceeds 64 KiB")); - } - validate_icon_content("png", bytes).map_err(archive_error)?; - let root = self - .asset_root - .as_ref() - .filter(|root| !root.as_os_str().is_empty()) - .ok_or_else(|| invalid_icon("style pack asset root unavailable"))?; - fs::create_dir_all(root) - .map_err(|_| persistence_error("create style pack asset root"))?; - let root = root - .canonicalize() - .map_err(|_| persistence_error("resolve style pack asset root"))?; - let directory = root.join(id); - fs::create_dir_all(&directory) - .map_err(|_| persistence_error("create style pack icon directory"))?; - let directory = directory - .canonicalize() - .map_err(|_| persistence_error("resolve style pack icon directory"))?; - if !directory.starts_with(&root) { - return Err(invalid_icon( - "style pack icon directory is outside its asset root", - )); - } - // A new filename keeps the previous image valid until metadata commits. - let target = directory.join(format!("icon-{}.png", uuid::Uuid::new_v4().simple())); - atomic_write(&target, bytes)?; - Some(target) - } else { - None - }; - let mut next = packs.clone(); - next[index].icon_path = new_path - .as_ref() - .map(|path| path.to_string_lossy().into_owned()); - next[index].updated_at = Some(chrono::Utc::now().to_rfc3339()); - if let Err(error) = self.persist_locked(&next) { - if let Some(path) = new_path { - let _ = fs::remove_file(path); - } - return Err(error); - } - let saved = next[index].clone(); - *packs = next; - if let (Some(root), Some(old)) = (&self.asset_root, old_path) { - let old = Path::new(&old); - if let (Ok(owned), Some(parent)) = (root.join(id).canonicalize(), old.parent()) { - if parent.canonicalize().ok().as_ref() == Some(&owned) { - let _ = fs::remove_file(old); + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + if id.is_empty() + || id == "." + || id == ".." + || !id + .bytes() + .all(|c| c.is_ascii_alphanumeric() || b"._-".contains(&c)) + { + return Err(invalid_icon("invalid style pack id")); } - } - } - Ok(saved) + let mut packs = self.lock_for_mutation()?; + let index = packs + .iter() + .position(|pack| pack.id == id) + .ok_or_else(|| not_found(id))?; + let old_path = packs[index].icon_path.clone(); + let new_path = if let Some(bytes) = png { + if bytes.len() > MAX_ICON_BYTES { + return Err(invalid_icon("style pack icon exceeds 64 KiB")); + } + validate_icon_content("png", bytes).map_err(archive_error)?; + let root = self + .asset_root + .as_ref() + .filter(|root| !root.as_os_str().is_empty()) + .ok_or_else(|| invalid_icon("style pack asset root unavailable"))?; + fs::create_dir_all(root) + .map_err(|_| persistence_error("create style pack asset root"))?; + let root = root + .canonicalize() + .map_err(|_| persistence_error("resolve style pack asset root"))?; + let directory = root.join(id); + fs::create_dir_all(&directory) + .map_err(|_| persistence_error("create style pack icon directory"))?; + let directory = directory + .canonicalize() + .map_err(|_| persistence_error("resolve style pack icon directory"))?; + if !directory.starts_with(&root) { + return Err(invalid_icon( + "style pack icon directory is outside its asset root", + )); + } + // A new filename keeps the previous image valid until metadata commits. + let target = + directory.join(format!("icon-{}.png", uuid::Uuid::new_v4().simple())); + atomic_write(&target, bytes)?; + Some(target) + } else { + None + }; + let mut next = packs.clone(); + next[index].icon_path = new_path + .as_ref() + .map(|path| path.to_string_lossy().into_owned()); + next[index].updated_at = Some(chrono::Utc::now().to_rfc3339()); + if let Err(error) = self.persist_locked(&next) { + if error.code != BackendErrorCode::OutcomeUnknown { + if let Some(path) = new_path { + let _ = fs::remove_file(path); + } + } + return Err(error); + } + let saved = next[index].clone(); + *packs = next; + if let (Some(root), Some(old)) = (&self.asset_root, old_path) { + let old = Path::new(&old); + if let (Ok(owned), Some(parent)) = (root.join(id).canonicalize(), old.parent()) + { + if parent.canonicalize().ok().as_ref() == Some(&owned) { + let _ = fs::remove_file(old); + } + } + } + Ok(saved) + }, + ) } /// Read a pack icon as a PNG/JPEG/WebP data URL without exposing filesystem access. @@ -336,84 +529,128 @@ impl StylePackStore { origin_pack_id: Option, origin_author_login: Option, ) -> Result { - let mut packs = self.lock()?; - let slot = packs - .iter_mut() - .find(|pack| pack.id == id) - .ok_or_else(|| not_found(id))?; - slot.origin_pack_id = normalized_optional(origin_pack_id); - slot.origin_author_login = normalized_optional(origin_author_login); - slot.updated_at = Some(chrono::Utc::now().to_rfc3339()); - let updated = slot.clone(); - self.persist_locked(&packs)?; - Ok(updated) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut live = self.lock_for_mutation()?; + let mut packs = live.clone(); + let slot = packs + .iter_mut() + .find(|pack| pack.id == id) + .ok_or_else(|| not_found(id))?; + slot.origin_pack_id = normalized_optional(origin_pack_id); + slot.origin_author_login = normalized_optional(origin_author_login); + slot.updated_at = Some(chrono::Utc::now().to_rfc3339()); + let updated = slot.clone(); + self.persist_locked(&packs)?; + *live = packs; + Ok(updated) + }, + ) } pub fn set_enabled(&self, id: &str, enabled: bool) -> Result { - let mut packs = self.lock()?; - let index = packs - .iter() - .position(|pack| pack.id == id) - .ok_or_else(|| not_found(id))?; - packs[index].enabled = enabled; - packs[index].updated_at = Some(chrono::Utc::now().to_rfc3339()); - ensure_at_least_one_enabled(&mut packs); - let updated = packs[index].clone(); - self.persist_locked(&packs)?; - Ok(updated) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut live = self.lock_for_mutation()?; + let mut packs = live.clone(); + let index = packs + .iter() + .position(|pack| pack.id == id) + .ok_or_else(|| not_found(id))?; + packs[index].enabled = enabled; + packs[index].updated_at = Some(chrono::Utc::now().to_rfc3339()); + ensure_at_least_one_enabled(&mut packs); + let updated = packs[index].clone(); + self.persist_locked(&packs)?; + *live = packs; + Ok(updated) + }, + ) } pub fn reset_builtin(&self, id: &str) -> Result { - let mode = builtin_mode(id).ok_or_else(|| { - BackendError::new( - BackendErrorCode::InvalidArgument, - "style pack is not builtin", - ) - })?; - let mut packs = self.lock()?; - let index = packs - .iter() - .position(|pack| pack.id == id) - .ok_or_else(|| not_found(id))?; - let existing = &packs[index]; - let mut reset = builtin_style_pack_for_mode(mode); - reset.enabled = existing.enabled; - reset.created_at = existing.created_at.clone(); - reset.updated_at = Some(chrono::Utc::now().to_rfc3339()); - packs[index] = reset.clone(); - self.persist_locked(&packs)?; - Ok(reset) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mode = builtin_mode(id).ok_or_else(|| { + BackendError::new( + BackendErrorCode::InvalidArgument, + "style pack is not builtin", + ) + })?; + let mut live = self.lock_for_mutation()?; + let mut packs = live.clone(); + let index = packs + .iter() + .position(|pack| pack.id == id) + .ok_or_else(|| not_found(id))?; + let existing = &packs[index]; + let mut reset = builtin_style_pack_for_mode(mode); + reset.enabled = existing.enabled; + reset.created_at = existing.created_at.clone(); + reset.updated_at = Some(chrono::Utc::now().to_rfc3339()); + packs[index] = reset.clone(); + self.persist_locked(&packs)?; + *live = packs; + Ok(reset) + }, + ) } pub fn remove_imported(&self, id: &str) -> Result<(), BackendError> { - let mut packs = self.lock()?; - let index = packs - .iter() - .position(|pack| pack.id == id) - .ok_or_else(|| not_found(id))?; - if packs[index].kind == StylePackKind::Builtin { - return Err(BackendError::new( - BackendErrorCode::InvalidArgument, - "builtin style pack cannot be deleted", - )); - } - let removed = packs.remove(index); - ensure_at_least_one_enabled(&mut packs); - self.persist_locked(&packs)?; - if let Some(asset_root) = &self.asset_root { - cleanup_style_pack_asset_dir(asset_root, &removed.id); - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut live = self.lock_for_mutation()?; + let mut packs = live.clone(); + let index = packs + .iter() + .position(|pack| pack.id == id) + .ok_or_else(|| not_found(id))?; + if packs[index].kind == StylePackKind::Builtin { + return Err(BackendError::new( + BackendErrorCode::InvalidArgument, + "builtin style pack cannot be deleted", + )); + } + let removed = packs.remove(index); + ensure_at_least_one_enabled(&mut packs); + self.persist_locked(&packs)?; + *live = packs; + if let Some(asset_root) = &self.asset_root { + cleanup_style_pack_asset_dir(asset_root, &removed.id); + } + Ok(()) + }, + ) } pub fn import_from_zip(&self, path: &Path) -> Result { - let parsed = read_style_pack_archive(path).map_err(archive_error)?; - self.import_parsed_archive(parsed) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let parsed = read_style_pack_archive(path).map_err(archive_error)?; + self.import_parsed_archive(parsed) + }, + ) } pub fn import_from_zip_bytes(&self, bytes: &[u8]) -> Result { - let parsed = read_style_pack_archive_bytes(bytes).map_err(archive_error)?; - self.import_parsed_archive(parsed) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let parsed = read_style_pack_archive_bytes(bytes).map_err(archive_error)?; + self.import_parsed_archive(parsed) + }, + ) } /// Imports a validated Marketplace archive while committing its remote @@ -426,10 +663,16 @@ impl StylePackStore { origin_pack_id: String, origin_author_login: Option, ) -> Result { - let mut parsed = read_style_pack_archive_bytes(bytes).map_err(archive_error)?; - parsed.manifest.origin_pack_id = Some(origin_pack_id); - parsed.manifest.origin_author_login = origin_author_login; - self.import_parsed_archive(parsed) + crate::cloud_sync_e2ee_store::gate::with_optional_mutation( + self.path.as_deref(), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let mut parsed = read_style_pack_archive_bytes(bytes).map_err(archive_error)?; + parsed.manifest.origin_pack_id = Some(origin_pack_id); + parsed.manifest.origin_author_login = origin_author_login; + self.import_parsed_archive(parsed) + }, + ) } fn import_parsed_archive( @@ -437,7 +680,7 @@ impl StylePackStore { parsed: ParsedStylePackArchive, ) -> Result { let manifest = parsed.manifest; - let mut packs = self.lock()?; + let mut packs = self.lock_for_mutation()?; let pack_id = unique_imported_id(&packs, &manifest.id); let icon_path = match (parsed.icon, self.asset_root.as_deref()) { (Some(icon), Some(asset_root)) => { @@ -478,7 +721,7 @@ impl StylePackStore { let mut next = packs.clone(); next.insert(0, pack.clone()); if let Err(error) = self.persist_locked(&next) { - if pack.icon_path.is_some() { + if error.code != BackendErrorCode::OutcomeUnknown && pack.icon_path.is_some() { if let Some(asset_root) = &self.asset_root { cleanup_style_pack_asset_dir(asset_root, &pack.id); } @@ -568,6 +811,16 @@ impl StylePackStore { }) } + fn lock_for_mutation(&self) -> Result>, BackendError> { + let mut state = self.lock()?; + if let Some(path) = &self.path { + if path.exists() { + *state = crate::persistence::read_lossless_rows(path, &[])?; + } + } + Ok(state) + } + fn persist_locked(&self, packs: &[StylePack]) -> Result<(), BackendError> { match &self.path { Some(path) => write_packs(path, packs), diff --git a/openless-all/app/crates/openless-core/src/vocabulary.rs b/openless-all/app/crates/openless-core/src/vocabulary.rs index 6d8229830..09a030161 100644 --- a/openless-all/app/crates/openless-core/src/vocabulary.rs +++ b/openless-all/app/crates/openless-core/src/vocabulary.rs @@ -6,7 +6,7 @@ use std::sync::Mutex; use chrono::Utc; use crate::errors::{BackendError, BackendErrorCode}; -use crate::persistence::{atomic_write, persistence_error, read_or_default}; +use crate::persistence::{atomic_write, persistence_error}; use crate::shared_types::LEARNED_VOCAB_NOTE; use crate::types::{DictionaryEntry, VocabPreset, VocabPresetStore}; @@ -81,7 +81,28 @@ impl DictionaryStore { pub fn list(&self) -> Result, BackendError> { let _guard = self.lock_store()?; - read_or_default(&self.path) + crate::persistence::read_lossless_rows(&self.path, &["notes", "hitCount"]) + } + + pub(crate) fn sync_snapshot( + &self, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result, BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let _guard = self.lock_store()?; + crate::persistence::read_lossless_rows(&self.path, &["notes", "hitCount"]) + } + + pub(crate) fn sync_replace_all( + &self, + records: &[DictionaryEntry], + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, + ) -> Result<(), BackendError> { + crate::cloud_sync_e2ee_store::gate::require_exclusive(&self.path, permit)?; + let _guard = self.lock_store()?; + let bytes = serde_json::to_vec_pretty(records) + .map_err(|_| persistence_error("encode restored dictionary"))?; + crate::persistence::atomic_write_for_sync(&self.path, &bytes, permit) } /// Cloud restore locks every participating store before preparing or replacing any file. @@ -97,12 +118,18 @@ impl DictionaryStore { phrase: String, note: Option, ) -> Result { - let _guard = self.lock_store()?; - let mut entries = self.read_locked()?; - let entry = new_entry(phrase, note); - entries.insert(0, entry.clone()); - self.write_locked(&entries)?; - Ok(entry) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut entries = self.read_locked()?; + let entry = new_entry(phrase, note); + entries.insert(0, entry.clone()); + self.write_locked(&entries)?; + Ok(entry) + }, + ) } /// Learned entries are deduplicated and appended behind manual entries. @@ -111,111 +138,141 @@ impl DictionaryStore { phrase: String, note: Option, ) -> Result, BackendError> { - let phrase = phrase.trim().to_string(); - if phrase.is_empty() { - return Ok(None); - } - let _guard = self.lock_store()?; - let mut entries = self.read_locked()?; - if entries.iter().any(|entry| entry.phrase == phrase) { - return Ok(None); - } - let entry = new_entry(phrase, note); - entries.push(entry.clone()); - self.write_locked(&entries)?; - Ok(Some(entry)) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let phrase = phrase.trim().to_string(); + if phrase.is_empty() { + return Ok(None); + } + let _guard = self.lock_store()?; + let mut entries = self.read_locked()?; + if entries.iter().any(|entry| entry.phrase == phrase) { + return Ok(None); + } + let entry = new_entry(phrase, note); + entries.push(entry.clone()); + self.write_locked(&entries)?; + Ok(Some(entry)) + }, + ) } pub fn remove(&self, id: &str) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut entries = self.read_locked()?; - let before = entries.len(); - entries.retain(|entry| entry.id != id); - if entries.len() != before { - self.write_locked(&entries)?; - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut entries = self.read_locked()?; + let before = entries.len(); + entries.retain(|entry| entry.id != id); + if entries.len() != before { + self.write_locked(&entries)?; + } + Ok(()) + }, + ) } pub fn set_enabled(&self, id: &str, enabled: bool) -> Result<(), BackendError> { - let _guard = self.lock_store()?; - let mut entries = self.read_locked()?; - let entry = entries - .iter_mut() - .find(|entry| entry.id == id) - .ok_or_else(|| { - BackendError::new( - BackendErrorCode::InvalidArgument, - "dictionary entry not found", - ) - })?; - if entry.enabled != enabled { - entry.enabled = enabled; - self.write_locked(&entries)?; - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let _guard = self.lock_store()?; + let mut entries = self.read_locked()?; + let entry = entries + .iter_mut() + .find(|entry| entry.id == id) + .ok_or_else(|| { + BackendError::new( + BackendErrorCode::InvalidArgument, + "dictionary entry not found", + ) + })?; + if entry.enabled != enabled { + entry.enabled = enabled; + self.write_locked(&entries)?; + } + Ok(()) + }, + ) } /// Rename an entry in place so its id / hits / enabled state survive the edit. /// Empty phrases and phrases colliding with another entry are rejected. pub fn update_phrase(&self, id: &str, phrase: String) -> Result<(), BackendError> { - let phrase = phrase.trim().to_string(); - if phrase.is_empty() { - return Err(BackendError::new( - BackendErrorCode::InvalidArgument, - "dictionary phrase is empty", - )); - } - let _guard = self.lock_store()?; - let mut entries = self.read_locked()?; - if entries - .iter() - .any(|entry| entry.id != id && entry.phrase == phrase) - { - return Err(BackendError::new( - BackendErrorCode::InvalidArgument, - "dictionary phrase already exists", - )); - } - let entry = entries - .iter_mut() - .find(|entry| entry.id == id) - .ok_or_else(|| { - BackendError::new( - BackendErrorCode::InvalidArgument, - "dictionary entry not found", - ) - })?; - if entry.phrase != phrase { - entry.phrase = phrase; - self.write_locked(&entries)?; - } - Ok(()) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + let phrase = phrase.trim().to_string(); + if phrase.is_empty() { + return Err(BackendError::new( + BackendErrorCode::InvalidArgument, + "dictionary phrase is empty", + )); + } + let _guard = self.lock_store()?; + let mut entries = self.read_locked()?; + if entries + .iter() + .any(|entry| entry.id != id && entry.phrase == phrase) + { + return Err(BackendError::new( + BackendErrorCode::InvalidArgument, + "dictionary phrase already exists", + )); + } + let entry = entries + .iter_mut() + .find(|entry| entry.id == id) + .ok_or_else(|| { + BackendError::new( + BackendErrorCode::InvalidArgument, + "dictionary entry not found", + ) + })?; + if entry.phrase != phrase { + entry.phrase = phrase; + self.write_locked(&entries)?; + } + Ok(()) + }, + ) } /// Count case-insensitive, non-overlapping occurrences in final output. pub fn record_hits(&self, text: &str) -> Result { - if text.is_empty() { - return Ok(0); - } - let _guard = self.lock_store()?; - let mut entries = self.read_locked()?; - let haystack = text.to_lowercase(); - let mut total = 0_u64; - let mut changed = false; - for entry in entries.iter_mut().filter(|entry| entry.enabled) { - let needle = entry.phrase.trim().to_lowercase(); - let count = count_occurrences(&haystack, &needle); - if count > 0 { - entry.hits = entry.hits.saturating_add(count); - total = total.saturating_add(count); - changed = true; - } - } - if changed { - self.write_locked(&entries)?; - } - Ok(total) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &self.path, + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + if text.is_empty() { + return Ok(0); + } + let _guard = self.lock_store()?; + let mut entries = self.read_locked()?; + let haystack = text.to_lowercase(); + let mut total = 0_u64; + let mut changed = false; + for entry in entries.iter_mut().filter(|entry| entry.enabled) { + let needle = entry.phrase.trim().to_lowercase(); + let count = count_occurrences(&haystack, &needle); + if count > 0 { + entry.hits = entry.hits.saturating_add(count); + total = total.saturating_add(count); + changed = true; + } + } + if changed { + self.write_locked(&entries)?; + } + Ok(total) + }, + ) } fn lock_store(&self) -> Result, BackendError> { @@ -225,7 +282,7 @@ impl DictionaryStore { } fn read_locked(&self) -> Result, BackendError> { - read_or_default(&self.path) + crate::persistence::read_lossless_rows(&self.path, &["notes", "hitCount"]) } fn write_locked(&self, entries: &[DictionaryEntry]) -> Result<(), BackendError> { @@ -263,7 +320,7 @@ fn count_occurrences(haystack: &str, needle: &str) -> u64 { } pub fn list_vocab_presets(data_dir: &Path) -> Result { - read_or_default(&data_dir.join("vocab-presets.json")) + crate::persistence::read_lossless_object(&data_dir.join("vocab-presets.json")) } pub fn builtin_vocab_presets() -> Vec { @@ -295,9 +352,29 @@ pub fn resolve_vocab_presets(store: &VocabPresetStore) -> Vec { } pub fn save_vocab_presets(data_dir: &Path, store: &VocabPresetStore) -> Result<(), BackendError> { - let json = serde_json::to_vec_pretty(store) - .map_err(|_| persistence_error("encode vocabulary presets"))?; - atomic_write(&data_dir.join("vocab-presets.json"), &json) + crate::cloud_sync_e2ee_store::gate::with_registered_mutation( + &data_dir.join("vocab-presets.json"), + crate::cloud_sync_e2ee_store::gate::ChangeOrigin::User, + || { + // A typed replacement may not erase fields introduced by a newer app. + let _: VocabPresetStore = + crate::persistence::read_lossless_object(&data_dir.join("vocab-presets.json"))?; + let json = serde_json::to_vec_pretty(store) + .map_err(|_| persistence_error("encode vocabulary presets"))?; + atomic_write(&data_dir.join("vocab-presets.json"), &json) + }, + ) +} + +pub(crate) fn save_vocab_presets_for_sync( + data_dir: &Path, + store: &VocabPresetStore, + permit: &crate::cloud_sync_e2ee_store::gate::ExclusivePermit, +) -> Result<(), BackendError> { + let path = data_dir.join("vocab-presets.json"); + let bytes = serde_json::to_vec_pretty(store) + .map_err(|_| persistence_error("encode restored vocabulary presets"))?; + crate::persistence::atomic_write_for_sync(&path, &bytes, permit) } #[cfg(test)] diff --git a/openless-all/app/crates/openless-core/src/voice_session.rs b/openless-all/app/crates/openless-core/src/voice_session.rs index 83a7f4344..1a223d19f 100644 --- a/openless-all/app/crates/openless-core/src/voice_session.rs +++ b/openless-all/app/crates/openless-core/src/voice_session.rs @@ -1,4 +1,4 @@ -use std::sync::{Arc, Mutex}; +use std::sync::{Arc, Mutex, OnceLock}; use crate::{BackendError, BackendErrorCode, SessionId}; @@ -19,12 +19,30 @@ struct ActiveVoiceSession { cancel: crate::CancellationToken, } -#[derive(Debug, Default)] +#[derive(Default)] pub(crate) struct VoiceSessionGate { active: Mutex>, + restore_guard: OnceLock, } impl VoiceSessionGate { + pub(crate) fn bind_restore_guard( + &self, + guard: crate::domains::RuntimeRestoreGuard, + ) -> Result<(), BackendError> { + self.restore_guard.set(guard).map_err(|_| { + BackendError::new( + BackendErrorCode::InvalidState, + "voice restore guard is already bound", + ) + }) + } + + pub(crate) fn runtime_restore_idle(&self) -> bool { + // A released owner with native cleanup holds is deliberately not idle. + self.active.lock().is_ok_and(|active| active.is_none()) + } + pub(crate) fn acquire( &self, session_id: SessionId, @@ -44,6 +62,11 @@ impl VoiceSessionGate { format!("another voice session is active: {:?}", current.kind), )), None => { + // Same mutex as the restore idle probe: the restoring flag is + // checked before claiming the owner, without a check/claim gap. + if let Some(guard) = self.restore_guard.get() { + guard()?; + } *active = Some(ActiveVoiceSession { session_id, kind, @@ -120,6 +143,153 @@ impl Drop for VoiceResourceHold { } } +/// Counts non-audio runtime work without taking the exclusive voice slot. +/// Domain callers acquire a work lease while holding their own state lock; +/// probes read that same state lock before this short counter mutex. +#[derive(Default)] +pub(crate) struct RuntimeActivityGate { + state: Mutex, + binding: OnceLock, +} + +#[derive(Default)] +struct RuntimeActivityState { + active: usize, + abandoned_cleanup: bool, +} +struct RuntimeActivityBinding { + guard: crate::domains::RuntimeRestoreGuard, + spawner: Arc, +} + +impl RuntimeActivityGate { + pub(crate) fn bind( + &self, + guard: crate::domains::RuntimeRestoreGuard, + spawner: Arc, + ) -> Result<(), BackendError> { + self.binding + .set(RuntimeActivityBinding { guard, spawner }) + .map_err(|_| { + BackendError::new( + BackendErrorCode::InvalidState, + "runtime restore guard is already bound", + ) + }) + } + + pub(crate) fn acquire(self: &Arc) -> Result { + let mut state = self.state.lock().expect("runtime activity lock poisoned"); + if let Some(binding) = self.binding.get() { + (binding.guard)()?; + } + state.active = state + .active + .checked_add(1) + .expect("runtime activity count overflow"); + Ok(RuntimeActivityHold { + gate: Arc::clone(self), + clean: true, + }) + } + + /// Continue an owner already validated under the domain state lock. + /// Its active phase makes the restore probe reject admission, even if a + /// restore attempt has raised its flag immediately before that probe. + pub(crate) fn existing_work(self: &Arc) -> RuntimeActivityHold { + let mut state = self.state.lock().expect("runtime activity lock poisoned"); + state.active = state + .active + .checked_add(1) + .expect("runtime activity count overflow"); + RuntimeActivityHold { + gate: Arc::clone(self), + clean: true, + } + } + + fn cleanup_hold(self: &Arc) -> RuntimeActivityHold { + let mut state = self.state.lock().expect("runtime activity lock poisoned"); + state.active = state + .active + .checked_add(1) + .expect("runtime activity count overflow"); + RuntimeActivityHold { + gate: Arc::clone(self), + clean: false, + } + } + + pub(crate) fn runtime_restore_idle(&self) -> bool { + self.state + .lock() + .is_ok_and(|state| state.active == 0 && !state.abandoned_cleanup) + } + + /// A restore-enabled Host owns cleanup through its existing TaskSpawner. + /// Dropping the IPC waiter does not release the lease or cancel cleanup. + /// Hosts without restore binding retain their original executor behavior. + pub(crate) fn cleanup( + self: &Arc, + work: futures_util::future::BoxFuture<'static, Result>, + ) -> futures_util::future::BoxFuture<'static, Result> { + let gate = Arc::clone(self); + let spawner = self + .binding + .get() + .map(|binding| Arc::clone(&binding.spawner)); + Box::pin(async move { + // Claim before handing the task to the scheduler: the caller may + // drop its main lease as soon as this future first yields. + let hold = gate.cleanup_hold(); + let task = async move { + let result = work.await; + hold.complete(); + result + }; + if let Some(spawner) = spawner { + let (send, receive) = tokio::sync::oneshot::channel(); + spawner.spawn(Box::pin(async move { + let _ = send.send(task.await); + })); + receive.await.map_err(|_| { + BackendError::new( + BackendErrorCode::Cancelled, + "runtime cleanup task was interrupted", + ) + })? + } else { + task.await + } + }) + } +} + +pub(crate) struct RuntimeActivityHold { + gate: Arc, + clean: bool, +} +impl RuntimeActivityHold { + fn complete(mut self) { + // Consume the whole guard so async field capture cannot leave its + // Drop on the caller while moving only the Copy completion flag. + self.clean = true; + } +} +impl Drop for RuntimeActivityHold { + fn drop(&mut self) { + let mut state = self + .gate + .state + .lock() + .expect("runtime activity lock poisoned"); + state.active -= 1; + if !self.clean { + state.abandoned_cleanup = true; + } + } +} + #[cfg(test)] mod tests { use super::*; @@ -149,4 +319,179 @@ mod tests { gate.acquire(SessionId::new(), VoiceSessionKind::Qa) .unwrap(); } + fn restore_guard( + flag: Arc, + ) -> crate::domains::RuntimeRestoreGuard { + Arc::new(move || { + if flag.load(std::sync::atomic::Ordering::Acquire) { + Err(BackendError::new( + BackendErrorCode::Busy, + "restore in progress", + )) + } else { + Ok(()) + } + }) + } + + #[test] + fn runtime_restore_blocks_new_voice_but_preserves_an_existing_owner() { + let flag = Arc::new(std::sync::atomic::AtomicBool::new(false)); + let gate = Arc::new(VoiceSessionGate::default()); + gate.bind_restore_guard(restore_guard(flag.clone())) + .unwrap(); + let owner = SessionId::new(); + gate.acquire(owner, VoiceSessionKind::Dictation).unwrap(); + let resources = gate.hold_resources(owner).unwrap(); + flag.store(true, std::sync::atomic::Ordering::Release); + gate.acquire(owner, VoiceSessionKind::Dictation).unwrap(); + gate.release(owner); + assert!( + !gate.runtime_restore_idle(), + "native cleanup still owns resources" + ); + drop(resources); + assert!(gate.runtime_restore_idle()); + for kind in [ + VoiceSessionKind::Dictation, + VoiceSessionKind::LessComputer, + VoiceSessionKind::Qa, + VoiceSessionKind::SelectionVoice, + ] { + assert_eq!( + gate.acquire(SessionId::new(), kind).unwrap_err().code, + BackendErrorCode::Busy + ); + } + flag.store(false, std::sync::atomic::Ordering::Release); + gate.acquire(SessionId::new(), VoiceSessionKind::Qa) + .unwrap(); + } + + #[test] + fn runtime_restore_probe_cannot_cross_a_voice_check_claim_race() { + let flag = Arc::new(std::sync::atomic::AtomicBool::new(false)); + let gate = Arc::new(VoiceSessionGate::default()); + let (checked, checked_rx) = std::sync::mpsc::channel(); + let (resume, resume_rx) = std::sync::mpsc::channel(); + let resume_rx = Mutex::new(resume_rx); + let check_flag = flag.clone(); + gate.bind_restore_guard(Arc::new(move || { + assert!(!check_flag.load(std::sync::atomic::Ordering::Acquire)); + checked.send(()).unwrap(); + resume_rx.lock().unwrap().recv().unwrap(); + Ok(()) + })) + .unwrap(); + let owner = SessionId::new(); + let starting = std::thread::spawn({ + let gate = gate.clone(); + move || gate.acquire(owner, VoiceSessionKind::Dictation) + }); + checked_rx + .recv_timeout(std::time::Duration::from_secs(2)) + .unwrap(); + flag.store(true, std::sync::atomic::Ordering::Release); + let probing = std::thread::spawn({ + let gate = gate.clone(); + move || gate.runtime_restore_idle() + }); + resume.send(()).unwrap(); + starting.join().unwrap().unwrap(); + assert!( + !probing.join().unwrap(), + "restore must reject the newly admitted voice owner" + ); + gate.release(owner); + } + + #[derive(Default)] + struct CapturingSpawner { + tasks: Mutex>>, + } + impl crate::config::TaskSpawner for CapturingSpawner { + fn spawn(&self, task: futures_util::future::BoxFuture<'static, ()>) { + self.tasks.lock().unwrap().push(tokio::spawn(task)); + } + } + + #[tokio::test] + async fn runtime_restore_waits_for_owned_cleanup_after_waiter_is_dropped() { + let gate = Arc::new(RuntimeActivityGate::default()); + let spawner = Arc::new(CapturingSpawner::default()); + gate.bind(Arc::new(|| Ok(())), spawner.clone()).unwrap(); + let entered = Arc::new(tokio::sync::Notify::new()); + let release = Arc::new(tokio::sync::Notify::new()); + let waiter = tokio::spawn(gate.cleanup(Box::pin({ + let entered = entered.clone(); + let release = release.clone(); + async move { + entered.notify_one(); + release.notified().await; + Ok(()) + } + }))); + entered.notified().await; + waiter.abort(); + assert!(waiter.await.unwrap_err().is_cancelled()); + assert!(!gate.runtime_restore_idle()); + let owned = spawner.tasks.lock().unwrap().pop().unwrap(); + release.notify_one(); + owned.await.unwrap(); + assert!(gate.runtime_restore_idle()); + } + + #[tokio::test] + async fn runtime_restore_fails_closed_if_the_cleanup_owner_itself_is_aborted() { + let gate = Arc::new(RuntimeActivityGate::default()); + let spawner = Arc::new(CapturingSpawner::default()); + gate.bind(Arc::new(|| Ok(())), spawner.clone()).unwrap(); + let entered = Arc::new(tokio::sync::Notify::new()); + let waiter = tokio::spawn(gate.cleanup(Box::pin({ + let entered = entered.clone(); + async move { + entered.notify_one(); + std::future::pending::<()>().await; + Ok(()) + } + }))); + entered.notified().await; + let owned = spawner.tasks.lock().unwrap().pop().unwrap(); + owned.abort(); + assert!(owned.await.unwrap_err().is_cancelled()); + assert_eq!( + waiter.await.unwrap().unwrap_err().code, + BackendErrorCode::Cancelled + ); + assert!( + !gate.runtime_restore_idle(), + "uncertain cleanup cannot make restore safe" + ); + } + #[derive(Default)] + struct QueuedSpawner { + tasks: Mutex>>, + } + impl crate::config::TaskSpawner for QueuedSpawner { + fn spawn(&self, task: futures_util::future::BoxFuture<'static, ()>) { + self.tasks.lock().unwrap().push(task); + } + } + + #[tokio::test] + async fn runtime_restore_error_cleanup_claims_before_the_owned_task_is_scheduled() { + let gate = Arc::new(RuntimeActivityGate::default()); + let spawner = Arc::new(QueuedSpawner::default()); + gate.bind(Arc::new(|| Ok(())), spawner.clone()).unwrap(); + let mut cleanup = gate.cleanup(Box::pin(async { Ok(()) })); + assert!(futures_util::poll!(cleanup.as_mut()).is_pending()); + assert!( + !gate.runtime_restore_idle(), + "queued cleanup must already own its restore lease" + ); + let task = spawner.tasks.lock().unwrap().pop().unwrap(); + task.await; + cleanup.await.unwrap(); + assert!(gate.runtime_restore_idle()); + } } diff --git a/openless-all/app/scripts/build-mac.sh b/openless-all/app/scripts/build-mac.sh index 05306dcc5..69b4de823 100755 --- a/openless-all/app/scripts/build-mac.sh +++ b/openless-all/app/scripts/build-mac.sh @@ -74,7 +74,30 @@ DMG_PATH="$DMG_DIR/OpenLess_${APP_VERSION}_${MAC_BUNDLE_ARCH}.dmg" rm -rf "$APP" rm -f "$DMG_PATH" "${APP}.tar.gz" "${APP}.tar.gz.sig" TAURI_BUILD_ARGS+=(-- --locked --timings) -npm run tauri -- "${TAURI_BUILD_ARGS[@]}" +if [ "$MAC_BUNDLE_ARCH" = "aarch64" ]; then + # Tauri skips Finder AppleScript in CI. Write deterministic Finder metadata + # into its temporary image before Tauri compresses and signs the final DMG. + DMG_LAYOUT_ENV_DIR="$(mktemp -d "${TMPDIR:-/tmp}/openless-dmg-python.XXXXXX")" + cleanup_dmg_environment() { rm -rf "$DMG_LAYOUT_ENV_DIR"; } + trap cleanup_dmg_environment EXIT + python3 -m venv "$DMG_LAYOUT_ENV_DIR" + DMG_LAYOUT_PYTHON="$DMG_LAYOUT_ENV_DIR/bin/python3" + "$DMG_LAYOUT_PYTHON" -m pip install --quiet --disable-pip-version-check \ + --only-binary=:all: --no-deps --require-hashes -r scripts/macos-dmg-requirements.txt + CI=true TAURI_BUNDLER_DMG_IGNORE_CI=false \ + OPENLESS_DMG_LAYOUT_ROOT="$PWD" OPENLESS_DMG_LAYOUT_PYTHON="$DMG_LAYOUT_PYTHON" \ + OPENLESS_DMG_LAYOUT_STAMP="$DMG_LAYOUT_ENV_DIR/layout-applied" \ + PATH="$PWD/scripts/macos-dmg-bin:$PATH" npm run tauri -- "${TAURI_BUILD_ARGS[@]}" + if [ ! -s "$DMG_LAYOUT_ENV_DIR/layout-applied" ]; then + echo "✗ Tauri 未调用 DMG 布局步骤,中止交付" + exit 1 + fi + "$DMG_LAYOUT_PYTHON" scripts/macos-dmg-layout.py verify "$DMG_PATH" + cleanup_dmg_environment + trap - EXIT +else + npm run tauri -- "${TAURI_BUILD_ARGS[@]}" +fi if [ ! -f "$APP/Contents/MacOS/openless" ]; then echo "✗ $APP 缺失或不是本次构建的产物(打包未完成),中止" diff --git a/openless-all/app/scripts/encrypted-sync-setup-prompt.test.mjs b/openless-all/app/scripts/encrypted-sync-setup-prompt.test.mjs new file mode 100644 index 000000000..3a77fb328 --- /dev/null +++ b/openless-all/app/scripts/encrypted-sync-setup-prompt.test.mjs @@ -0,0 +1,242 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { createRequire } from 'node:module'; +const require = createRequire(import.meta.url); +const ts = require('typescript'); +const source = readFileSync( + new URL('../src/components/CloudSyncSetupPrompt.tsx', import.meta.url), + 'utf8', +); +const code = ts.transpileModule(source, { + compilerOptions: { + target: ts.ScriptTarget.ES2022, + module: ts.ModuleKind.CommonJS, + jsx: ts.JsxEmit.ReactJSX, + }, +}).outputText; +const tick = () => new Promise((resolve) => setImmediate(resolve)); +const deferred = () => { + let resolve, reject; + const promise = new Promise((a, b) => { + resolve = a; + reject = b; + }); + return { promise, resolve, reject }; +}; +const jsx = (type, props) => ({ type, props: props ?? {} }); +const all = (tree) => + Array.isArray(tree) ? tree.flatMap(all) : tree?.props ? [tree, ...all(tree.props.children)] : []; +function context({ native = true, blocked = false } = {}) { + const slots = [], + effects = [], + listeners = new Map(), + timers = new Map(); + let cursor = 0, + id = 0, + calls = 0, + response = false, + props = { blocked, onSetup: () => {} }, + last; + const document = Object.assign(new EventTarget(), { + visibilityState: 'visible', + hasFocus: () => true, + activeElement: null, + }); + const window = new EventTarget(); + const react = { + useState(initial) { + const i = cursor++; + slots[i] ??= { value: initial }; + return [ + slots[i].value, + (v) => { + slots[i].value = typeof v === 'function' ? v(slots[i].value) : v; + }, + ]; + }, + useRef(initial) { + return this.useState({ current: initial })[0]; + }, + useEffect(fn, deps) { + const i = cursor++, + previous = slots[i]; + if (previous && deps.every((v, j) => Object.is(v, previous.deps[j]))) return; + slots[i] = { deps }; + effects.push(() => { + previous?.cleanup?.(); + slots[i].cleanup = fn(); + }); + }, + }; + react.useRef = (initial) => react.useState({ current: initial })[0]; + const imports = { + react, + 'react-i18next': { useTranslation: () => ({ t: (k) => k }) }, + 'react/jsx-runtime': { jsx, jsxs: jsx, Fragment: 'fragment' }, + 'lucide-react': { CloudIcon: 'cloud', XIcon: 'x' }, + '../lib/ipc/shared': { isTauri: native }, + '../lib/ipc/cloud-sync-e2ee': { + cloudSyncE2eeClaimSetupPrompt: async () => { + calls++; + return typeof response === 'function' ? response() : response; + }, + }, + '../pages/settings/CloudSyncSection': { CloudSyncSection: 'sync-section' }, + './ui/Modal': { Modal: 'modal' }, + '@tauri-apps/api/event': { + listen: async (name, fn) => { + listeners.set(name, fn); + return () => listeners.delete(name); + }, + }, + }; + const exports = {}; + new Function( + 'require', + 'exports', + 'window', + 'document', + 'HTMLElement', + 'setTimeout', + 'clearTimeout', + code, + )( + (name) => imports[name], + exports, + window, + document, + class {}, + (fn) => { + timers.set(++id, fn); + return id; + }, + (i) => timers.delete(i), + ); + const render = () => { + cursor = 0; + last = exports.CloudSyncSetupPrompt(props); + effects.splice(0).forEach((fn) => fn()); + return last; + }; + return { + render, + document, + window, + setResponse: (v) => { + response = v; + }, + setBlocked: (v) => { + props = { ...props, blocked: v }; + }, + calls: () => calls, + listeners, + timers, + event: (type) => listeners.get('backend:event')?.({ payload: { kind: { type } } }), + async flush() { + await tick(); + const queued = [...timers.values()]; + timers.clear(); + queued.forEach((fn) => fn()); + await tick(); + return render(); + }, + unmount() { + slots.forEach((s) => s?.cleanup?.()); + }, + welcome: exports.CloudSyncWelcome, + }; +} +for (const options of [{ native: false }, { blocked: true }]) { + const c = context(options); + c.setResponse(true); + assert.equal(c.render(), null); + await c.flush(); + assert.equal(c.calls(), 0); + assert.equal(c.listeners.size, 0); + c.unmount(); +} +{ + const c = context(); + c.setResponse(true); + c.render(); + const tree = await c.flush(); + assert.equal(tree.type, 'modal'); + assert.equal(c.calls(), 1); + const later = all(tree).find( + (n) => n.type === 'button' && n.props.children === 'cloudSyncE2ee.setupPromptLater', + ); + assert(later); + later.props.onClick(); + assert.equal(c.render(), null); + c.unmount(); + assert.equal(c.listeners.size, 0); +} +{ + const c = context(); + c.render(); + await c.flush(); + assert.equal(c.calls(), 1); + assert.equal(c.render(), null); + c.event('qa_level'); + assert.equal(c.timers.size, 0); + c.setResponse(true); + c.event('credentials_changed'); + assert.equal((await c.flush()).type, 'modal'); + c.unmount(); +} +{ + const c = context(); + c.setResponse(() => Promise.reject(new Error('vault denied'))); + c.render(); + await c.flush(); + assert.equal(c.render(), null); + assert.equal(c.listeners.size, 1); + c.setResponse(true); + c.window.dispatchEvent(new Event('focus')); + assert.equal((await c.flush()).type, 'modal'); + c.unmount(); +} +{ + const c = context(); + const pending = deferred(); + c.setResponse(() => pending.promise); + c.render(); + await c.flush(); + c.setBlocked(true); + c.render(); + pending.resolve(true); + await tick(); + assert.equal(c.render(), null); + assert.equal(c.listeners.size, 0); + c.unmount(); +} +{ + const c = context(); + c.document.visibilityState = 'hidden'; + c.setResponse(true); + c.render(); + await c.flush(); + assert.equal(c.calls(), 0); + c.document.visibilityState = 'visible'; + c.document.dispatchEvent(new Event('visibilitychange')); + assert.equal((await c.flush()).type, 'modal'); + c.unmount(); +} +for (const change of ['hidden', 'focus', 'recording']) { + const c = context(); + const pending = deferred(); + c.setResponse(() => pending.promise); + c.render(); + await c.flush(); + if (change === 'hidden') { + c.document.visibilityState = 'hidden'; + c.document.dispatchEvent(new Event('visibilitychange')); + } + if (change === 'focus') c.document.hasFocus = () => false; + if (change === 'recording') c.event('dictation_state_changed'); + pending.resolve(true); + await tick(); + assert.equal(c.render(), null, `late claim after ${change} must not open`); + c.unmount(); +} +console.log('encrypted sync setup prompt: 10 lifecycle cases passed'); diff --git a/openless-all/app/scripts/encrypted-sync-ui-bridge.test.mjs b/openless-all/app/scripts/encrypted-sync-ui-bridge.test.mjs new file mode 100644 index 000000000..b1761ae7a --- /dev/null +++ b/openless-all/app/scripts/encrypted-sync-ui-bridge.test.mjs @@ -0,0 +1,312 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; +const app = fileURLToPath(new URL('../', import.meta.url)); +const require = createRequire(import.meta.url); +const ts = require('typescript'); +const source = readFileSync(app + '/src/lib/encryptedSyncUiBridge.ts', 'utf8'); +const code = ts.transpileModule(source, { + compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022 }, +}).outputText; +const tick = () => new Promise((r) => setImmediate(r)); +const drain = async () => { + for (let i = 0; i < 8; i++) await tick(); +}; +const defer = () => { + let resolve, reject; + const promise = new Promise((r, e) => { + resolve = r; + reject = e; + }); + return { promise, resolve, reject }; +}; +function context({ fresh = false } = {}) { + const window = new EventTarget(), + handlers = new Map(), + statusQueue = [], + attempts = []; + let errors = 0; + window.addEventListener('openless:sync-ui-persistence-failed', () => errors++); + let locale = 'en', + fontScale = 'medium', + rev = fresh ? 0 : 1; + let preferences = fresh ? null : { locale, fontScale }; + let status = { + sequence: '0', + account: fresh ? null : { githubId: '1' }, + vaultId: fresh ? null : 'v1', + consentVersion: fresh ? null : 'yes', + taskId: null, + }; + const revision = () => (rev ? `00000000-0000-4000-8000-${String(rev).padStart(12, '0')}` : null); + const event = (key, source) => + window.dispatchEvent( + new CustomEvent('openless:ui-preferences-changed', { detail: { key, source } }), + ); + const i18n = { + getLocalePreference: () => locale, + setLocalePreference: async (value, source = 'user') => { + locale = value; + event('locale', source); + }, + SUPPORTED_LOCALES: ['en', 'fr', 'de'], + }; + const fonts = { + readFontScale: () => fontScale, + setFontScale: (value, source = 'user') => { + fontScale = value; + event('fontScale', source); + }, + }; + const invoke = async (cmd, args) => { + if (cmd === 'cloud_sync_e2ee_status') + return statusQueue.length ? statusQueue.shift().promise : { ...status }; + if (cmd === 'cloud_sync_e2ee_get_ui_preferences_snapshot') + return { preferences: preferences && { ...preferences }, revision: revision() }; + if ( + cmd === 'cloud_sync_e2ee_set_ui_preferences_checked' || + cmd === 'cloud_sync_e2ee_set_ui_preferences' + ) { + attempts.push({ cmd, ...args }); + if (cmd.endsWith('_checked') && args.expectedRevision !== revision()) + throw { details: { reason: 'stale_preview' } }; + const next = { locale: args.locale, fontScale: args.fontScale }; + if (JSON.stringify(next) !== JSON.stringify(preferences)) { + preferences = next; + rev++; + } + return; + } + throw new Error(cmd); + }; + const exports = {}, + shared = { isTauri: true, invokeOrMock: invoke }; + const localRequire = (name) => + name === './ipc/shared' + ? shared + : name === '../i18n' + ? i18n + : name === './fontScale' + ? fonts + : name === '@tauri-apps/api/event' + ? { + listen: async (name, fn) => { + handlers.set(name, fn); + return () => handlers.delete(name); + }, + } + : null; + new Function('require', 'exports', 'window', 'location', 'Event', 'CustomEvent', code)( + localRequire, + exports, + window, + { search: '' }, + Event, + CustomEvent, + ); + return { + install: exports.installEncryptedSyncUiBridge, + flush: exports.flushEncryptedSyncUiPreferences, + userLocale: i18n.setLocalePreference, + userFont: fonts.setFontScale, + statusQueue, + attempts, + setStatus: (value) => { + status = { ...status, ...value }; + }, + snapshot: () => ({ locale, fontScale, preferences, revision: revision(), errors }), + externalWrite: (value = {}) => { + preferences = { ...preferences, ...value }; + rev++; + }, + unchecked: () => invoke('cloud_sync_e2ee_set_ui_preferences', { locale, fontScale }), + restore: (sequence = '1', scope = {}) => + handlers.get('cloud-sync-e2ee:restored')({ + payload: { + sequence, + accountId: status.account.githubId, + vaultId: status.vaultId, + taskId: 'restore', + ...scope, + }, + }), + }; +} +let failed = 0; +async function test(name, fn) { + try { + await fn(); + console.log('PASS ' + name); + } catch (e) { + failed++; + console.log('FAIL ' + name + '\n' + e.message); + } +} +await test('old mirror queued before restore cannot overwrite its native value', async () => { + const c = context(); + await c.install(); + const wait = defer(); + c.statusQueue.push(wait); + await c.userLocale('de'); + await tick(); + c.externalWrite({ locale: 'fr' }); + c.restore(); + await tick(); + wait.resolve({ sequence: '2', account: { githubId: '1' }, vaultId: 'v1', consentVersion: 'yes' }); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'fr'); + assert.equal(c.snapshot().locale, 'fr'); +}); +await test('new choice after restore notification wins only its chosen field', async () => { + const c = context(); + await c.install(); + const wait = defer(); + c.statusQueue.push(wait); + c.externalWrite({ locale: 'fr', fontScale: 'large' }); + c.restore(); + await tick(); + await c.userLocale('de'); + wait.resolve({ sequence: '2', account: { githubId: '1' }, vaultId: 'v1', consentVersion: 'yes' }); + await drain(); + assert.deepEqual(c.snapshot().preferences, { locale: 'de', fontScale: 'large' }); + assert.equal(c.snapshot().locale, 'de'); + assert.equal(c.snapshot().fontScale, 'large'); +}); +await test('prepare mirror must not permanently stale the live bridge revision', async () => { + const c = context({ fresh: true }); + await c.install(); + await c.flush(); + c.setStatus({ account: { githubId: '1' }, vaultId: 'v1', consentVersion: 'yes' }); + await c.userLocale('de'); + await drain(); + c.userFont('large'); + await drain(); + assert.deepEqual( + c.snapshot().preferences, + { locale: 'de', fontScale: 'large' }, + JSON.stringify(c.snapshot()), + ); +}); +await test('legitimate account switch must rebase the cached mirror scope', async () => { + const c = context(); + await c.install(); + c.setStatus({ sequence: '3', account: { githubId: '2' }, vaultId: 'v2' }); + await c.userLocale('de'); + await drain(); + c.userFont('large'); + await drain(); + assert.deepEqual( + c.snapshot().preferences, + { locale: 'de', fontScale: 'large' }, + JSON.stringify(c.snapshot()), + ); +}); +await test('rollback-only UUID change must not permanently poison later user saves', async () => { + const c = context(); + await c.install(); + c.externalWrite({ locale: 'en' }); + await c.userLocale('de'); + await drain(); + await c.userLocale('fr'); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'fr', JSON.stringify(c.snapshot())); +}); + +await test('a new vault restore is hydrated after an account switch', async () => { + const c = context(); + await c.install(); + c.setStatus({ sequence: '3', account: { githubId: '2' }, vaultId: 'v2' }); + c.externalWrite({ locale: 'fr', fontScale: 'large' }); + c.restore('4'); + await drain(); + assert.equal(c.snapshot().locale, 'fr'); + assert.equal(c.snapshot().fontScale, 'large'); + await c.userLocale('de'); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'de'); +}); +await test('an equal-value restore invalidates an older unsent user choice', async () => { + const c = context(); + await c.install(); + const wait = defer(); + c.statusQueue.push(wait); + await c.userLocale('de'); + await tick(); + c.externalWrite({ locale: 'en' }); + c.restore(); + wait.resolve({ sequence: '2', account: { githubId: '1' }, vaultId: 'v1', consentVersion: 'yes' }); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'en'); + await c.userLocale('fr'); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'fr'); +}); +await test('prepare and user edits use only the checked writer', async () => { + const c = context({ fresh: true }); + await c.install(); + await c.flush(); + c.setStatus({ consentVersion: 'yes' }); + await c.userLocale('de'); + c.userFont('large'); + await drain(); + assert.deepEqual(c.snapshot().preferences, { locale: 'de', fontScale: 'large' }); + assert(c.attempts.every((a) => a.cmd === 'cloud_sync_e2ee_set_ui_preferences_checked')); +}); +await test('a late old-vault event cannot discard a new-account user choice', async () => { + const c = context(); + await c.install(); + c.setStatus({ account: { githubId: '2' }, vaultId: 'v2' }); + const wait = defer(); + c.statusQueue.push(wait); + await c.userLocale('de'); + await tick(); + c.restore('99', { accountId: '1', vaultId: 'v1' }); + wait.resolve({ account: { githubId: '2' }, vaultId: 'v2', consentVersion: 'yes' }); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'de'); + c.externalWrite({ locale: 'fr' }); + c.restore('5'); + await drain(); + assert.equal(c.snapshot().locale, 'fr'); +}); +await test('a failed old-scope notification read retains the newer local choice', async () => { + const c = context(); + await c.install(); + c.setStatus({ account: { githubId: '2' }, vaultId: 'v2' }); + const userStatus = defer(), + restoreStatus = defer(); + c.statusQueue.push(userStatus, restoreStatus); + await c.userLocale('de'); + await tick(); + c.restore('99', { accountId: '1', vaultId: 'v1' }); + userStatus.resolve({ account: { githubId: '2' }, vaultId: 'v2', consentVersion: 'yes' }); + await tick(); + restoreStatus.reject(new Error('transient native status failure')); + await drain(); + assert.equal(c.snapshot().preferences.locale, 'de', JSON.stringify(c.snapshot())); + assert.equal(c.snapshot().locale, 'de'); +}); +await test('overlapping valid and old-scope notifications preserve a later field choice', async () => { + const c = context(); + await c.install(); + c.setStatus({ account: { githubId: '2' }, vaultId: 'v2' }); + const wait = defer(); + c.statusQueue.push(wait); + c.externalWrite({ locale: 'fr', fontScale: 'large' }); + c.restore('4'); + await tick(); + await c.userLocale('de'); + c.restore('99', { accountId: '1', vaultId: 'v1' }); + wait.resolve({ account: { githubId: '2' }, vaultId: 'v2', consentVersion: 'yes' }); + await drain(); + assert.deepEqual( + c.snapshot().preferences, + { locale: 'de', fontScale: 'large' }, + JSON.stringify(c.snapshot()), + ); + assert.equal(c.snapshot().locale, 'de'); + assert.equal(c.snapshot().fontScale, 'large'); +}); +console.log(`failures=${failed}`); +process.exitCode = failed ? 1 : 0; diff --git a/openless-all/app/scripts/less-computer-panel-runtime.test.mjs b/openless-all/app/scripts/less-computer-panel-runtime.test.mjs new file mode 100644 index 000000000..bd324db7c --- /dev/null +++ b/openless-all/app/scripts/less-computer-panel-runtime.test.mjs @@ -0,0 +1,514 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { createRequire } from 'node:module'; +import { resolve } from 'node:path'; +import { fileURLToPath, pathToFileURL } from 'node:url'; +const app = fileURLToPath(new URL('../', import.meta.url)); +const require = createRequire(resolve(app, 'package.json')); +const ts = require('typescript'); +const replayModule = await import(pathToFileURL(resolve(app, 'src/lib/lessComputerReplay.ts'))); +const source = readFileSync(resolve(app, 'src/pages/LessComputerPanel.tsx'), 'utf8'); +const parsed = ts.createSourceFile( + 'LessComputerPanel.tsx', + source, + ts.ScriptTarget.ES2020, + true, + ts.ScriptKind.TSX, +); +const names = parsed.statements + .filter(ts.isImportDeclaration) + .flatMap((node) => + node.importClause?.namedBindings && ts.isNamedImports(node.importClause.namedBindings) + ? node.importClause.namedBindings.elements.map((item) => item.name.text) + : [], + ); +const body = parsed.statements + .filter((node) => !ts.isImportDeclaration(node)) + .map((node) => node.getFullText(parsed)) + .join('\n') + .replaceAll("import('@tauri-apps/api/event')", 'Promise.resolve({listen: __listen})') + .replaceAll( + "import('@tauri-apps/api/window')", + 'Promise.resolve({getCurrentWindow: __getWindow})', + ); +const compiled = ts.transpileModule(body, { + compilerOptions: { + target: ts.ScriptTarget.ES2020, + module: ts.ModuleKind.CommonJS, + jsx: ts.JsxEmit.ReactJSX, + }, +}).outputText; +const factory = new Function( + ...names, + '__listen', + '__getWindow', + 'exports', + 'require', + `${compiled};return {LessComputerPanel,Composer,ApprovalCard,TurnView,ActivityPanel,voiceTime};`, +); +const tick = () => new Promise((resolve) => setImmediate(resolve)); +const deferred = () => { + let resolve, reject; + const promise = new Promise((a, b) => { + resolve = a; + reject = b; + }); + return { promise, resolve, reject }; +}; +const jsx = (type, props) => ({ type, props: props ?? {} }); +function nodes(value) { + if (Array.isArray(value)) return value.flatMap(nodes); + if (!value || typeof value !== 'object' || !value.props) return []; + return [value, ...nodes(value.props.children)]; +} +function find(tree, predicate) { + const result = nodes(tree).find(predicate); + assert(result, 'control exists'); + return result; +} +let active; +class Hooks { + slots = []; + cursor = 0; + pending = []; + state(initial) { + const index = this.cursor++; + this.slots[index] ??= { value: typeof initial === 'function' ? initial() : initial }; + return [ + this.slots[index].value, + (value) => { + this.slots[index].value = + typeof value === 'function' ? value(this.slots[index].value) : value; + }, + ]; + } + ref(initial) { + return this.state({ current: initial })[0]; + } + effect(fn, deps) { + const index = this.cursor++; + const prev = this.slots[index]; + if ( + prev && + deps && + prev.deps?.length === deps.length && + deps.every((v, i) => Object.is(v, prev.deps[i])) + ) + return; + const slot = { deps }; + this.slots[index] = slot; + this.pending.push(() => { + prev?.cleanup?.(); + slot.cleanup = fn(); + }); + } + render(fn) { + this.cursor = 0; + active = this; + const tree = fn(); + this.pending.splice(0).forEach((fn) => fn()); + return tree; + } + unmount() { + this.slots.forEach((slot) => slot.cleanup?.()); + } +} +function context(native, replay) { + const events = new Map(); + const keys = new Set(); + const calls = { approve: [], submit: [], windows: [] }; + let approvalResult, submitResult; + globalThis.window = { + location: { search: '?window=less-computer&demo=1' }, + addEventListener: (name, fn) => { + if (name === 'keydown') keys.add(fn); + }, + removeEventListener: (name, fn) => { + if (name === 'keydown') keys.delete(fn); + }, + }; + const imports = Object.fromEntries(names.map((name) => [name, name])); + Object.assign(imports, { + useState: (initial) => active.state(initial), + useRef: (initial) => active.ref(initial), + useEffect: (fn, deps) => active.effect(fn, deps), + useTranslation: () => ({ t: (key) => key }), + useChatPanelLifecycle: () => ({ enterEpoch: 0, closing: false }), + isTauri: native, + getSettings: async () => ({ codingAgentProvider: 'codex-cli' }), + marketplaceAuthStatus: async () => ({ signedIn: false }), + lessComputerSync: () => + replay?.promise ?? Promise.resolve({ events: [], latestSequence: 0, truncated: false }), + lessComputerApprove: async (...args) => { + calls.approve.push(args); + return approvalResult?.promise; + }, + lessComputerSubmitText: async (text) => { + calls.submit.push(text); + return submitResult?.promise; + }, + lessComputerWindowDismiss: async () => { + calls.windows.push('hide'); + }, + chatPanelFocusKeyboard: async () => {}, + ...replayModule, + }); + const api = factory( + ...names.map((n) => imports[n]), + async (name, fn) => { + const set = events.get(name) ?? new Set(); + set.add(fn); + events.set(name, set); + return () => set.delete(fn); + }, + () => ({ + minimize: async () => calls.windows.push('minimize'), + toggleMaximize: async () => calls.windows.push('maximize'), + }), + {}, + () => ({ jsx, jsxs: jsx, Fragment: 'fragment' }), + ); + const hooks = new Hooks(); + const render = () => hooks.render(api.LessComputerPanel); + const emit = (ev) => { + for (const fn of events.get('less-computer:event') ?? []) fn({ payload: ev }); + }; + return { + api, + hooks, + render, + emit, + calls, + events, + keys, + imports, + approval: (d) => { + approvalResult = d; + }, + submission: (d) => { + submitResult = d; + }, + turns: (tree) => + nodes(tree) + .filter((node) => node.type === api.TurnView) + .map((node) => node.props), + voice: (tree) => find(tree, (node) => node.type === api.Composer).props.voice, + }; +} +let passed = 0; +async function test(name, fn) { + await fn(); + console.log(`PASS ${name}`); + passed++; +} +await test('browser has no demo state and cannot submit, approve, open OAuth or control native windows', async () => { + const c = context(false); + let tree = c.render(); + assert.equal(c.turns(tree).length, 0); + const windowButtons = nodes(tree).filter( + (n) => n.type === 'button' && n.props.className?.startsWith('lc-window-'), + ); + for (const button of windowButtons) { + assert.equal(button.props.disabled, true); + await button.props.onClick(); + } + assert.deepEqual(c.calls.windows, []); + const hooks = new Hooks(); + let composer = hooks.render(() => c.api.Composer({ working: false, voice: null, t: (k) => k })); + find(composer, (n) => n.type === 'textarea').props.onChange({ + currentTarget: { value: 'never execute' }, + }); + composer = hooks.render(() => c.api.Composer({ working: false, voice: null, t: (k) => k })); + find(composer, (n) => n.type === 'form').props.onSubmit({ preventDefault() {} }); + await tick(); + assert.deepEqual(c.calls.submit, []); + find(tree, (n) => n.type === 'button' && n.props.className === 'lc-github').props.onClick(); + tree = c.render(); + assert(!nodes(tree).some((n) => n.type === 'GithubLoginModal')); + c.hooks.unmount(); + assert.equal(c.keys.size, 0); +}); +await test('replay/live dedup, ordered deltas and fresh session reset', async () => { + const replay = deferred(), + c = context(true, replay); + c.render(); + await tick(); + c.emit({ kind: 'tool', name: 'Read', seq: 2 }); + c.emit({ kind: 'delta', text: 'A', seq: 3 }); + replay.resolve({ + events: [ + { kind: 'user', text: 'task', fresh: true, seq: 1 }, + { kind: 'tool', name: 'Read', seq: 2 }, + ], + latestSequence: 2, + truncated: false, + }); + await tick(); + let turns = c.turns(c.render()); + assert.equal(turns.length, 1); + assert.equal(turns[0].turn.user, 'task'); + assert.deepEqual(turns[0].turn.segments, [ + { kind: 'tool', name: 'Read', running: false }, + { kind: 'text', content: 'A' }, + ]); + c.emit({ kind: 'delta', text: 'duplicate', seq: 3 }); + c.emit({ kind: 'delta', text: 'B', seq: 4 }); + turns = c.turns(c.render()); + assert.equal(turns[0].turn.segments[1].content, 'AB'); + c.emit({ kind: 'user', text: 'new', fresh: true, seq: 5 }); + turns = c.turns(c.render()); + assert.equal(turns.length, 1); + assert.equal(turns[0].turn.user, 'new'); + c.hooks.unmount(); + assert.equal( + [...c.events.values()].reduce((a, s) => a + s.size, 0), + 0, + ); +}); +await test('cold missing-user stream self-heals; completed text fallback preserves tools and real cost', async () => { + const c = context(true); + c.render(); + await tick(); + c.emit({ kind: 'tool', name: 'Read', seq: 1 }); + c.emit({ kind: 'completed', text: 'result', costUsd: 0.005, seq: 2 }); + const turn = c.turns(c.render())[0].turn; + assert.equal(turn.user, ''); + assert.deepEqual(turn.segments, [ + { kind: 'tool', name: 'Read', running: false }, + { kind: 'text', content: 'result' }, + ]); + assert.equal(turn.costUsd, 0.005); + assert.equal(turn.status, 'done'); + c.hooks.unmount(); +}); +await test('approval waits for IPC, rejects duplicate clicks, retains retry on failure, confirms only success', async () => { + const c = context(true); + c.render(); + await tick(); + c.emit({ kind: 'user', text: 'task', fresh: true, seq: 1 }); + c.emit({ kind: 'approval', token: 'one', command: 'fixture', reason: 'fixture', seq: 2 }); + let turn = c.turns(c.render())[0]; + let d = deferred(); + c.approval(d); + const first = turn.onApproval('one', true); + void turn.onApproval('one', false); + turn = c.turns(c.render())[0]; + assert.equal(c.calls.approve.length, 1); + assert.equal(turn.turn.segments[0].pending, true); + assert.equal(turn.turn.segments[0].decision, undefined); + d.reject(new Error('fixture rejection')); + await first; + turn = c.turns(c.render())[0]; + assert.equal(turn.turn.segments[0].pending, false); + assert.equal(turn.turn.segments[0].failed, true); + assert.equal(turn.turn.segments[0].decision, undefined); + d = deferred(); + c.approval(d); + const second = turn.onApproval('one', true); + d.resolve(); + await second; + turn = c.turns(c.render())[0]; + assert.equal(turn.turn.segments[0].decision, 'approved'); + assert.equal(turn.turn.segments[0].failed, false); + c.hooks.unmount(); +}); +await test('late approval from old turn cannot mutate a fresh session or remove its pending request', async () => { + const c = context(true); + c.render(); + await tick(); + c.emit({ kind: 'user', text: 'old', fresh: true, seq: 1 }); + c.emit({ kind: 'approval', token: 'same', command: 'old', reason: 'x', seq: 2 }); + let d = deferred(); + c.approval(d); + const old = c.turns(c.render())[0].onApproval('same', true); + c.emit({ kind: 'user', text: 'new', fresh: true, seq: 3 }); + c.emit({ kind: 'approval', token: 'same', command: 'new', reason: 'x', seq: 4 }); + const newer = deferred(); + c.approval(newer); + let turn = c.turns(c.render())[0]; + const current = turn.onApproval('same', false); + d.resolve(); + await old; + turn = c.turns(c.render())[0]; + assert.equal(turn.turn.segments[0].decision, undefined); + assert.equal(turn.turn.segments[0].pending, true); + void turn.onApproval('same', true); + assert.equal(c.calls.approve.length, 2); + newer.resolve(); + await current; + turn = c.turns(c.render())[0]; + assert.equal(turn.turn.segments[0].decision, 'denied'); + c.hooks.unmount(); +}); +await test('terminal cancellation blocks approvals and removes tool running indicator', async () => { + const c = context(true); + c.render(); + await tick(); + c.emit({ kind: 'user', text: 'task', fresh: true, seq: 1 }); + c.emit({ kind: 'tool', name: 'Read', seq: 2 }); + c.emit({ kind: 'approval', token: 'old', command: 'fixture', reason: 'x', seq: 3 }); + c.emit({ kind: 'cancelled', seq: 4 }); + let turn = c.turns(c.render())[0]; + await turn.onApproval('old', true); + assert.equal(c.calls.approve.length, 0); + assert.equal(turn.turn.segments[0].running, false); + assert.equal(turn.turn.status, 'cancelled'); + c.hooks.unmount(); +}); +await test('voice projection preserves session ownership and exposes only actual level/phase/elapsed', async () => { + const c = context(true); + c.render(); + await tick(); + c.emit({ + kind: 'voice_state', + sessionId: 'a', + phase: 'recording', + level: 0.5, + elapsedMs: 1000, + seq: 1, + }); + c.emit({ + kind: 'voice_state', + sessionId: 'b', + phase: 'starting', + level: 0, + elapsedMs: 0, + seq: 2, + }); + c.emit({ kind: 'voice_state', sessionId: 'a', phase: 'idle', level: 0, elapsedMs: 5000, seq: 3 }); + assert.equal(c.voice(c.render()).sessionId, 'b'); + c.emit({ + kind: 'voice_state', + sessionId: 'b', + phase: 'recording', + level: 0.7, + elapsedMs: 65000, + seq: 4, + }); + const props = find(c.render(), (n) => n.type === c.api.Composer).props; + const hooks = new Hooks(); + const tree = hooks.render(() => c.api.Composer(props)); + const waveform = find(tree, (n) => n.type === 'VoiceWaveform'); + assert.equal(waveform.props.level, 0.7); + assert.equal(waveform.props.processing, false); + assert.equal(find(tree, (n) => n.type === 'time').props.children, '1:05'); + assert(find(tree, (n) => n.type === 'textarea').props.disabled); + assert.equal(c.api.voiceTime(NaN), '0:00'); + assert.equal(c.api.voiceTime(-8), '0:00'); + c.hooks.unmount(); +}); +await test('composer IME/229/Shift+Enter guards; one pending send; RPC failure retains draft', async () => { + const c = context(true); + const h = new Hooks(); + const render = () => h.render(() => c.api.Composer({ working: false, voice: null, t: (k) => k })); + let tree = render(); + find(tree, (n) => n.type === 'textarea').props.onChange({ currentTarget: { value: '你好' } }); + tree = render(); + let input = find(tree, (n) => n.type === 'textarea'); + const key = (overrides = {}) => ({ + key: 'Enter', + shiftKey: false, + keyCode: 13, + nativeEvent: { isComposing: false }, + preventDefault() { + this.prevented = true; + }, + ...overrides, + }); + input.props.onCompositionStart(); + input.props.onKeyDown(key()); + find(tree, (n) => n.type === 'form').props.onSubmit({ preventDefault() {} }); + input.props.onCompositionEnd(); + input.props.onKeyDown(key({ nativeEvent: { isComposing: true } })); + input.props.onKeyDown(key({ keyCode: 229 })); + let shift = key({ shiftKey: true }); + input.props.onKeyDown(shift); + assert.equal(shift.prevented, undefined); + assert.equal(c.calls.submit.length, 0); + let d = deferred(); + c.submission(d); + input.props.onKeyDown(key()); + input.props.onKeyDown(key()); + assert.equal(c.calls.submit.length, 1); + tree = render(); + assert(find(tree, (n) => n.type === 'button' && n.props.type === 'submit').props.disabled); + d.reject(new Error('fixture')); + await tick(); + tree = render(); + assert.equal(find(tree, (n) => n.type === 'textarea').props.value, '你好'); + assert(nodes(tree).some((n) => n.props.role === 'alert')); + d = deferred(); + c.submission(d); + find(tree, (n) => n.type === 'textarea').props.onKeyDown(key()); + tree = render(); + find(tree, (n) => n.type === 'textarea').props.onChange({ + currentTarget: { value: 'next draft' }, + }); + d.resolve(); + await tick(); + tree = render(); + assert.equal(find(tree, (n) => n.type === 'textarea').props.value, 'next draft'); +}); +await test('native window actions use hide/minimize/toggleMaximize; Escape closes OAuth without hiding panel', async () => { + const c = context(true); + let tree = c.render(); + await tick(); + for (const button of nodes(tree).filter( + (n) => n.type === 'button' && n.props.className?.startsWith('lc-window-'), + )) + await button.props.onClick(); + await tick(); + assert.deepEqual(c.calls.windows, ['hide', 'minimize', 'maximize']); + find(tree, (n) => n.type === 'button' && n.props.className === 'lc-github').props.onClick(); + tree = c.render(); + assert(nodes(tree).some((n) => n.type === 'GithubLoginModal')); + let prevented = false, + stopped = false; + for (const key of c.keys) + key({ + key: 'Escape', + isComposing: false, + keyCode: 27, + preventDefault() { + prevented = true; + }, + stopPropagation() { + stopped = true; + }, + }); + tree = c.render(); + assert.equal(prevented, true); + assert.equal(stopped, true); + assert(!nodes(tree).some((n) => n.type === 'GithubLoginModal')); + assert.equal(c.calls.windows.length, 3); + for (const key of c.keys) + key({ + key: 'Escape', + isComposing: true, + keyCode: 229, + preventDefault() { + throw new Error('IME Escape must be left alone'); + }, + }); + assert.equal(c.calls.windows.length, 3); + c.hooks.unmount(); +}); +await test('activity derives tool report/approval/cost only; unknown API values and text deltas create no invented events', async () => { + const c = context(false); + const tree = c.api.ActivityPanel({ + turn: { + user: 'task', + segments: [ + { kind: 'tool', name: 'Read', running: false }, + { kind: 'text', content: 'answer' }, + ], + status: 'done', + costUsd: null, + }, + t: (k) => k, + }); + assert.equal(nodes(tree).filter((n) => n.type === 'li').length, 1); + assert(nodes(tree).some((n) => n.props.children === 'lessComputer.desktop.toolReported')); + assert(!nodes(tree).some((n) => n.props.className === 'lc-api-cost')); +}); +console.log(`${passed} actual-component behavior tests passed`); diff --git a/openless-all/app/scripts/macos-dmg-bin/hdiutil b/openless-all/app/scripts/macos-dmg-bin/hdiutil new file mode 100755 index 000000000..190c09929 --- /dev/null +++ b/openless-all/app/scripts/macos-dmg-bin/hdiutil @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +exec "${OPENLESS_DMG_LAYOUT_PYTHON:?}" "${OPENLESS_DMG_LAYOUT_ROOT:?}/scripts/macos-dmg-layout.py" wrap "$@" diff --git a/openless-all/app/scripts/macos-dmg-layout.py b/openless-all/app/scripts/macos-dmg-layout.py new file mode 100644 index 000000000..fc290a421 --- /dev/null +++ b/openless-all/app/scripts/macos-dmg-layout.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +"""Add Finder metadata to Tauri's temporary DMG before its final conversion/signing.""" + +import contextlib +import json +import os +from pathlib import Path +import plistlib +import re +import shutil +import subprocess +import sys +import tempfile + +from ds_store import DSStore +from mac_alias import Alias + +HDIUTIL = "/usr/bin/hdiutil" +APP_ROOT = Path(__file__).resolve().parent.parent + + +def settings(): + tauri = APP_ROOT / "src-tauri" + app = json.loads((tauri / "tauri.conf.json").read_text()) + dmg = json.loads((tauri / "tauri.macos-mlx.conf.json").read_text())["bundle"]["macOS"]["dmg"] + style = json.loads((tauri / "dmg/layout.json").read_text()) + return app, dmg, style + + +def conversion_source(args): + """Only the expected native ARM64 bundle can be altered by this scoped wrapper.""" + app, _, _ = settings() + folder = (APP_ROOT / "src-tauri/target/release/bundle/macos").resolve() + expected_name = f'{app["productName"]}_{app["version"]}_aarch64.dmg' + if len(args) < 2 or args[0] != "convert": + raise ValueError("Expected a Tauri DMG conversion") + try: + output = Path(args[args.index("-o") + 1]).resolve() + image_format = args[args.index("-format") + 1] + except (ValueError, IndexError) as error: + raise ValueError("Unrecognized Tauri DMG conversion arguments") from error + source = Path(args[1]).resolve() + if ( + image_format != "UDZO" + or output != folder / expected_name + or source.parent != folder + or not re.fullmatch(r"rw\.\d+\." + re.escape(expected_name), source.name) + or not source.is_file() + ): + raise ValueError("Refusing DMG layout changes outside the current Tauri bundle") + return source + + +@contextlib.contextmanager +def mounted(image, writable=False): + # Do not recursively delete this directory: it may still contain a mounted volume. + mountpoint = Path(tempfile.mkdtemp(prefix="openless-dmg-layout-", dir="/tmp")).resolve() + device = None + try: + result = subprocess.run( + [HDIUTIL, "attach", str(image), "-readwrite" if writable else "-readonly", + "-noautoopen", "-nobrowse", "-mountpoint", str(mountpoint), "-plist"], + check=True, stdout=subprocess.PIPE, + ) + entities = plistlib.loads(result.stdout)["system-entities"] + device = next( + item["dev-entry"] for item in entities + if item.get("mount-point") and Path(item["mount-point"]).resolve() == mountpoint + ) + yield mountpoint + finally: + if device or os.path.ismount(mountpoint): + subprocess.run([HDIUTIL, "detach", device or str(mountpoint)], check=True, stdout=subprocess.PIPE) + mountpoint.rmdir() + + +def ensure_targets(volume, app_name): + if not (volume / app_name).is_dir(): + raise ValueError("Tauri app is missing from the DMG") + applications = volume / "Applications" + if not applications.is_symlink() or os.readlink(applications) != "/Applications": + raise ValueError("Applications must be the real /Applications drag target") + + +def write_layout(volume): + app, dmg, style = settings() + app_name = app["productName"] + ".app" + ensure_targets(volume, app_name) + background_source = APP_ROOT / "src-tauri" / style["retinaBackground"] + if not background_source.is_file(): + raise ValueError("Retina DMG background is missing") + background = volume / ".background/installer-background.tiff" + background.parent.mkdir(exist_ok=True) + shutil.copyfile(background_source, background) + # mac_alias requires a canonical path to avoid /var vs /private/var alias drift. + alias = Alias.for_file(str(background.resolve())).to_bytes() + position, size = dmg["windowPosition"], dmg["windowSize"] + bounds = "{{%d, %d}, {%d, %d}}" % (position["x"], position["y"], size["width"], size["height"]) + with DSStore.open(str(volume / ".DS_Store"), "w+") as store: + store["."]["vSrn"] = ("long", 1) + store["."]["icvl"] = ("type", b"icnv") + store["."]["bwsp"] = { + "WindowBounds": bounds, "ShowToolbar": False, "ShowStatusBar": False, + "ShowPathbar": False, "ShowSidebar": False, "ShowTabView": False, + "ContainerShowSidebar": False, "SidebarWidth": 0, + } + store["."]["icvp"] = { + "viewOptionsVersion": 1, "iconSize": float(style["iconSize"]), + "textSize": float(style["textSize"]), "arrangeBy": "none", + "labelOnBottom": True, "showItemInfo": False, "showIconPreview": False, + "gridOffsetX": 0.0, "gridOffsetY": 0.0, "gridSpacing": 64.0, + "scrollPositionX": 0.0, "scrollPositionY": 0.0, + "backgroundType": 2, "backgroundImageAlias": alias, + } + for name, key in [(app_name, "appPosition"), ("Applications", "applicationFolderPosition")]: + store[name]["Iloc"] = (dmg[key]["x"], dmg[key]["y"]) + + +def verify_retina_background(background, size): + result = subprocess.run( + ["/usr/bin/tiffutil", "-info", str(background)], + check=True, capture_output=True, text=True, + ) + metadata = result.stdout + result.stderr + dimensions = [(int(w), int(h)) for w, h in re.findall(r"Image Width: (\d+) Image Length: (\d+)", metadata)] + resolutions = [(float(x), float(y)) for x, y in re.findall(r"Resolution: ([\d.]+), ([\d.]+)", metadata)] + expected = [(size["width"], size["height"]), (size["width"] * 2, size["height"] * 2)] + if dimensions != expected or resolutions != [(72.0, 72.0), (144.0, 144.0)]: + raise ValueError("DMG background must contain matching 1x and 2x Retina representations") + + +def verify_layout(image): + app, dmg, style = settings() + with mounted(image) as volume: + app_name = app["productName"] + ".app" + ensure_targets(volume, app_name) + with DSStore.open(str(volume / ".DS_Store"), "r") as store: + icon = store["."]["icvp"] + view = store["."]["bwsp"] + position, size = dmg["windowPosition"], dmg["windowSize"] + expected_bounds = "{{%d, %d}, {%d, %d}}" % (position["x"], position["y"], size["width"], size["height"]) + if view["WindowBounds"] != expected_bounds or any(view[key] for key in ["ShowToolbar", "ShowStatusBar", "ShowPathbar", "ShowSidebar", "ShowTabView"]): + raise ValueError("DMG window geometry does not match its design") + if (icon["iconSize"] != style["iconSize"] or icon["textSize"] != style["textSize"] + or icon["backgroundType"] != 2 or icon["arrangeBy"] != "none" + or not icon["labelOnBottom"] or store["."]["icvl"] != (b"type", b"icnv")): + raise ValueError("DMG icon size, label size or background mode is incorrect") + for name, key in [(app_name, "appPosition"), ("Applications", "applicationFolderPosition")]: + if tuple(store[name]["Iloc"]) != (dmg[key]["x"], dmg[key]["y"]): + raise ValueError("DMG drag target positions are incorrect") + alias = Alias.from_bytes(icon["backgroundImageAlias"]) + if alias.target.posix_path != "/.background/installer-background.tiff": + raise ValueError("DMG background alias escapes the installer volume") + background = volume / ".background/installer-background.tiff" + if background.read_bytes() != (APP_ROOT / "src-tauri" / style["retinaBackground"]).read_bytes(): + raise ValueError("DMG background does not match its Retina source") + verify_retina_background(background, dmg["windowSize"]) + bundled_info = plistlib.loads((volume / app_name / "Contents/Info.plist").read_bytes()) + if bundled_info["CFBundleShortVersionString"] != app["version"]: + raise ValueError("DMG contains a different app version") + print("✓ DMG: Retina background, large icons, window layout and Applications target verified") + + +def main(): + if len(sys.argv) < 2: + raise ValueError("Expected wrap or verify") + if sys.argv[1] == "verify": + verify_layout(Path(sys.argv[2]).resolve()) + elif sys.argv[1] == "wrap": + args = sys.argv[2:] + if args and args[0] == "convert": + image = conversion_source(args) + with mounted(image, writable=True) as volume: + write_layout(volume) + with Path(os.environ["OPENLESS_DMG_LAYOUT_STAMP"]).open("x") as stamp: + stamp.write(str(image)) + print("✓ Prepared Finder layout in Tauri's temporary DMG", file=sys.stderr) + os.execv(HDIUTIL, [HDIUTIL, *args]) + else: + raise ValueError("Unknown DMG layout command") + + +if __name__ == "__main__": + main() diff --git a/openless-all/app/scripts/macos-dmg-requirements.txt b/openless-all/app/scripts/macos-dmg-requirements.txt new file mode 100644 index 000000000..e6f74b5e0 --- /dev/null +++ b/openless-all/app/scripts/macos-dmg-requirements.txt @@ -0,0 +1,3 @@ +# Last versions compatible with the Python 3.9 shipped in Xcode command-line tools. +ds_store==1.3.1 --hash=sha256:fbacbb0bd5193ab3e66e5a47fff63619f15e374ffbec8ae29744251a6c8f05b5 +mac_alias==2.2.2 --hash=sha256:504ab8ac546f35bbd75ad014d6ad977c426660aa721f2cd3acf3dc2f664141bd diff --git a/openless-all/app/scripts/qa-panel-runtime.test.mjs b/openless-all/app/scripts/qa-panel-runtime.test.mjs new file mode 100644 index 000000000..b38591ca5 --- /dev/null +++ b/openless-all/app/scripts/qa-panel-runtime.test.mjs @@ -0,0 +1,673 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import { createRequire } from 'node:module'; +import { resolve } from 'node:path'; +import { pathToFileURL, fileURLToPath } from 'node:url'; +const app = fileURLToPath(new URL('../', import.meta.url)), + require = createRequire(resolve(app, 'package.json')), + ts = require('typescript'); +const helpers = await import(pathToFileURL(resolve(app, 'src/lib/qaMessage.ts'))); +const source = readFileSync(resolve(app, 'src/pages/QaPanel.tsx'), 'utf8'); +const parsed = ts.createSourceFile( + 'QaPanel.tsx', + source, + ts.ScriptTarget.ES2020, + true, + ts.ScriptKind.TSX, +); +const names = parsed.statements + .filter(ts.isImportDeclaration) + .flatMap((n) => + n.importClause?.namedBindings && ts.isNamedImports(n.importClause.namedBindings) + ? n.importClause.namedBindings.elements.map((n) => n.name.text) + : [], + ); +const body = parsed.statements + .filter((n) => !ts.isImportDeclaration(n)) + .map((n) => n.getFullText(parsed)) + .join('\n') + .replaceAll("import('@tauri-apps/api/event')", 'Promise.resolve({listen: __listen})'); +const compiled = ts.transpileModule(body, { + compilerOptions: { + target: ts.ScriptTarget.ES2020, + module: ts.ModuleKind.CommonJS, + jsx: ts.JsxEmit.ReactJSX, + }, +}).outputText; +const factory = new Function( + ...names, + '__listen', + 'exports', + 'require', + `${compiled};return {QaPanel,Composer,MessageRow,ErrorContent};`, +); +const tick = () => new Promise((resolve) => setImmediate(resolve)); +const deferred = () => { + let resolve, reject; + const promise = new Promise((a, b) => { + resolve = a; + reject = b; + }); + return { promise, resolve, reject }; +}; +const jsx = (type, props) => ({ type, props: props ?? {} }); +function nodes(tree) { + if (Array.isArray(tree)) return tree.flatMap(nodes); + if (!tree || typeof tree !== 'object' || !tree.props) return []; + return [tree, ...nodes(tree.props.children)]; +} +function find(tree, predicate) { + const node = nodes(tree).find(predicate); + assert(node, 'expected control'); + return node; +} +let active; +class Hooks { + slots = []; + cursor = 0; + pending = []; + state(initial) { + const i = this.cursor++; + this.slots[i] ??= { value: typeof initial === 'function' ? initial() : initial }; + return [ + this.slots[i].value, + (value) => { + this.slots[i].value = typeof value === 'function' ? value(this.slots[i].value) : value; + }, + ]; + } + ref(initial) { + return this.state({ current: initial })[0]; + } + effect(fn, deps) { + const i = this.cursor++, + prev = this.slots[i]; + if ( + prev && + deps && + prev.deps?.length === deps.length && + deps.every((v, i) => Object.is(v, prev.deps[i])) + ) + return; + const slot = { deps }; + this.slots[i] = slot; + this.pending.push(() => { + prev?.cleanup?.(); + slot.cleanup = fn(); + }); + } + render(fn) { + this.cursor = 0; + active = this; + const tree = fn(); + this.pending.splice(0).forEach((fn) => fn()); + return tree; + } + unmount() { + this.slots.forEach((s) => s.cleanup?.()); + } +} +function context(native = true, embedded = false) { + const events = new Map(), + keys = new Set(), + calls = { + resize: [], + submit: [], + submitArgs: [], + snapshot: 0, + mic: 0, + mode: [], + preview: [], + confirm: [], + revert: [], + dismiss: 0, + close: 0, + }; + const pending = {}; + const lifecycle = { enterEpoch: 0, closing: false }; + globalThis.window = { + location: { search: '?window=qa&demo=1' }, + addEventListener: (name, fn) => { + if (name === 'keydown') keys.add(fn); + }, + removeEventListener: (name, fn) => { + if (name === 'keydown') keys.delete(fn); + }, + }; + const imports = Object.fromEntries(names.map((n) => [n, n])); + Object.assign(imports, { + useState: (i) => active.state(i), + useRef: (i) => active.ref(i), + useEffect: (f, d) => active.effect(f, d), + useTranslation: () => ({ t: (k) => k }), + useGithubLogin: () => '', + useChatPanelLifecycle: () => lifecycle, + isTauri: native, + ...helpers, + qaWindowSetExpanded: async (next) => { + calls.resize.push(next); + return pending.resize?.(next); + }, + qaSubmitText: async (text, session) => { + calls.submit.push(text); + calls.submitArgs.push([text, session]); + return pending.submit?.promise; + }, + qaGetSnapshot: async () => { + calls.snapshot++; + return pending.snapshot?.() ?? { kind: 'idle', messages: [] }; + }, + qaToggleRecording: async () => { + calls.mic++; + return pending.mic?.promise; + }, + qaSetEditInstructionMode: async (mode) => { + calls.mode.push(mode); + return pending.mode?.promise; + }, + qaWindowDismiss: async () => { + calls.dismiss++; + return pending.dismiss?.promise; + }, + getSelectionVoicePreview: async (session) => { + calls.preview.push(session); + return pending.preview?.promise ?? { text: ' fixture edit ' }; + }, + confirmSelectionVoicePreview: async (...args) => { + calls.confirm.push(args); + return pending.confirm?.promise; + }, + revertSelectionVoicePreview: async (session) => { + calls.revert.push(session); + return pending.revert?.promise; + }, + chatPanelFocusKeyboard: async () => {}, + }); + const api = factory( + ...names.map((n) => imports[n]), + async (name, fn) => { + const listeners = events.get(name) ?? new Set(); + listeners.add(fn); + events.set(name, listeners); + return () => listeners.delete(fn); + }, + {}, + () => ({ jsx, jsxs: jsx, Fragment: 'fragment' }), + ); + const hooks = new Hooks(), + render = () => + hooks.render(() => api.QaPanel({ embedded, onRequestClose: () => calls.close++ })); + const emit = (name, payload) => { + for (const fn of events.get(name) ?? []) fn({ payload }); + }; + const composer = (tree) => find(tree, (n) => n.type === api.Composer).props; + return { api, hooks, render, emit, calls, pending, lifecycle, events, keys, composer }; +} +let passed = 0, + failed = 0; +async function test(name, fn) { + try { + await fn(); + console.log('PASS ' + name); + passed++; + } catch (error) { + console.log('FAIL ' + name + '\n' + error.stack); + failed++; + } +} +await test('browser compact has no demo conversations and cannot execute native actions', async () => { + const c = context(false); + let tree = c.render(); + assert(!tree.props.className.includes('is-expanded')); + assert(!nodes(tree).some((n) => n.type === c.api.MessageRow)); + let p = c.composer(tree); + p.onChange('fixture'); + p = c.composer(c.render()); + await p.onSubmit(); + await p.onToggleRecording(); + await p.onEditInstructionModeChange(true); + await tick(); + assert.deepEqual(c.calls.resize, []); + assert.deepEqual(c.calls.submit, []); + assert.equal(c.calls.mic, 0); + assert.deepEqual(c.calls.mode, []); + const h = new Hooks(), + ui = h.render(() => c.api.Composer(p)); + for (const button of nodes(ui).filter((n) => n.type === 'button')) + assert.equal(button.props.disabled, true); + c.hooks.unmount(); +}); +await test('native text waits for expansion and excludes repeated clicks; keeps a newer draft', async () => { + const c = context(); + c.render(); + await tick(); + assert.deepEqual(c.calls.resize, [false]); + c.composer(c.render()).onChange('question'); + let p = c.composer(c.render()); + const resize = deferred(), + send = deferred(); + c.pending.resize = (next) => (next ? resize.promise : undefined); + c.pending.submit = send; + const first = p.onSubmit(); + void p.onSubmit(); + c.render(); + await tick(); + assert.deepEqual(c.calls.resize, [false, true]); + assert.deepEqual(c.calls.submit, []); + resize.resolve(); + await tick(); + assert.deepEqual(c.calls.submit, ['question']); + c.composer(c.render()).onChange('next draft'); + send.resolve(); + await first; + assert.equal(c.composer(c.render()).value, 'next draft'); + c.hooks.unmount(); +}); +await test('send failure preserves draft and exposes error without a fake user message', async () => { + const c = context(); + c.render(); + await tick(); + c.composer(c.render()).onChange('keep this'); + const d = deferred(); + c.pending.submit = d; + const result = c.composer(c.render()).onSubmit(); + await tick(); + d.reject(new Error('fixture')); + await result; + const tree = c.render(); + assert.equal(c.composer(tree).value, 'keep this'); + assert.equal(c.composer(tree).status, 'error'); + assert(!nodes(tree).some((n) => n.type === c.api.MessageRow)); + c.hooks.unmount(); +}); +await test('cancel during resize prevents queued question and late layout failures do not overwrite reopened compact state', async () => { + const c = context(); + c.render(); + await tick(); + c.composer(c.render()).onChange('do not send'); + const d = deferred(); + c.pending.resize = (next) => (next ? d.promise : undefined); + const submission = c.composer(c.render()).onSubmit(); + c.render(); + await tick(); + await c.composer(c.render()).onClose(); + c.lifecycle.closing = true; + c.render(); + c.lifecycle.closing = false; + c.lifecycle.enterEpoch++; + c.render(); + assert.deepEqual(c.calls.resize, [false, true]); + d.reject(new Error('old geometry')); + await submission; + await tick(); + c.render(); + await tick(); + assert.deepEqual(c.calls.submit, []); + assert.deepEqual(c.calls.resize, [false, true, false]); + assert.equal(c.composer(c.render()).status, 'idle'); + assert(!nodes(c.render()).some((n) => n.props.className === 'qa-layout-error')); + c.hooks.unmount(); +}); +await test('recording level requires active session; no fake recording before backend phase', async () => { + const c = context(); + c.render(); + await tick(); + const d = deferred(); + c.pending.mic = d; + let p = c.composer(c.render()); + const first = p.onToggleRecording(); + void p.onToggleRecording(); + assert.equal(c.calls.mic, 1); + p = c.composer(c.render()); + assert.equal(p.status, 'idle'); + assert.equal(p.micBusy, true); + assert.equal(p.level, 0); + c.emit('qa:state', { + kind: 'recording', + sessionId: 'a', + selectionPreview: 'selected', + messages: [], + }); + c.emit('qa:level', { sessionId: 'other', level: 0.9 }); + assert.equal(c.composer(c.render()).level, 0); + c.emit('qa:level', { sessionId: 'a', level: 0.6 }); + p = c.composer(c.render()); + assert.equal(p.level, 0.6); + assert.equal(p.status, 'recording'); + assert.equal(p.voiceActive, true); + assert.equal(p.selectionPreview, 'selected'); + d.resolve(); + await first; + c.emit('qa:state', { + kind: 'thinking', + sessionId: 'a', + messages: [{ role: 'user', content: 'actual question' }], + }); + c.emit('qa:level', { sessionId: 'a', level: 0.9 }); + p = c.composer(c.render()); + assert.equal(p.level, 0); + assert.equal(p.voiceActive, false); + c.hooks.unmount(); +}); +await test('stale answer is ignored and final answer replaces streaming buffer exactly once', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { + kind: 'thinking', + sessionId: 'new', + messages: [{ role: 'user', content: 'question' }], + }); + c.emit('qa:state', { kind: 'answer_delta', sessionId: 'old', chunk: 'stale' }); + c.emit('qa:state', { kind: 'answer_delta', sessionId: 'new', chunk: 'real ' }); + c.emit('qa:state', { kind: 'answer_delta', sessionId: 'new', chunk: 'answer' }); + let tree = c.render(); + assert.equal(find(tree, (n) => n.type === 'AssistantMarkdown').props.markdown, 'real answer'); + c.emit('qa:state', { + kind: 'answer', + sessionId: 'new', + messages: [ + { role: 'user', content: 'question' }, + { role: 'assistant', content: 'real answer' }, + ], + }); + tree = c.render(); + assert(!nodes(tree).some((n) => n.type === 'AssistantMarkdown')); + assert.equal(nodes(tree).filter((n) => n.type === c.api.MessageRow).length, 2); + c.hooks.unmount(); +}); +await test('edit preview captured in old session cannot be applied after a new recording starts', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { + kind: 'answer', + sessionId: 'a', + messages: [{ role: 'assistant', content: 'preview' }], + editApplyAvailable: true, + editRevertAvailable: true, + }); + let tree = c.render(); + const d = deferred(); + c.pending.preview = d; + find(tree, (n) => n.type === 'button' && n.props.className === 'qa-apply').props.onClick(); + assert.deepEqual(c.calls.preview, ['a']); + c.emit('qa:state', { kind: 'recording', sessionId: 'b', messages: [] }); + d.resolve({ text: 'must not apply' }); + await tick(); + assert.deepEqual(c.calls.confirm, []); + assert.equal(c.composer(c.render()).status, 'recording'); + c.hooks.unmount(); +}); +await test('an old rendered edit button cannot approve a newer answer before React presents it', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { + kind: 'answer', + sessionId: 'a', + messages: [{ role: 'assistant', content: 'old preview' }], + editApplyAvailable: true, + }); + const oldTree = c.render(); + c.emit('qa:state', { kind: 'thinking', sessionId: 'b', messages: [] }); + c.emit('qa:state', { + kind: 'answer', + sessionId: 'b', + messages: [{ role: 'assistant', content: 'new unreviewed preview' }], + editApplyAvailable: true, + }); + find(oldTree, (n) => n.type === 'button' && n.props.className === 'qa-apply').props.onClick(); + await tick(); + assert.deepEqual(c.calls.preview, []); + assert.deepEqual(c.calls.confirm, []); + c.hooks.unmount(); +}); +await test('edit apply/revert are single-flight and send exact text plus captured session', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { + kind: 'answer', + sessionId: 'a', + messages: [{ role: 'assistant', content: 'preview' }], + editApplyAvailable: true, + editRevertAvailable: true, + }); + let tree = c.render(); + const d = deferred(); + c.pending.confirm = d; + const button = find(tree, (n) => n.type === 'button' && n.props.className === 'qa-apply'); + button.props.onClick(); + button.props.onClick(); + await tick(); + assert.deepEqual(c.calls.confirm, [['fixture edit', 'a']]); + d.resolve(); + await tick(); + assert(!nodes(c.render()).some((n) => n.props.className === 'qa-edit-actions')); + c.emit('qa:state', { + kind: 'answer', + sessionId: 'a', + messages: [{ role: 'assistant', content: 'preview' }], + editApplyAvailable: true, + editRevertAvailable: true, + }); + tree = c.render(); + const r = deferred(); + c.pending.revert = r; + const back = find( + tree, + (n) => n.type === 'button' && n.props.children === 'qa.editRevertPrevious', + ); + back.props.onClick(); + back.props.onClick(); + assert.deepEqual(c.calls.revert, ['a']); + r.resolve(); + await tick(); + tree = c.render(); + assert(nodes(tree).some((n) => n.props.className === 'qa-apply')); + assert(!nodes(tree).some((n) => n.props.children === 'qa.editRevertPrevious')); + c.hooks.unmount(); +}); +await test('mode update waits for backend and repeated click cannot flip twice', async () => { + const c = context(); + c.render(); + await tick(); + const d = deferred(); + c.pending.mode = d; + let p = c.composer(c.render()); + const first = p.onEditInstructionModeChange(true); + void p.onEditInstructionModeChange(false); + p = c.composer(c.render()); + assert.equal(p.editInstructionMode, false); + assert.deepEqual(c.calls.mode, [true]); + d.reject(new Error('fixture')); + await first; + p = c.composer(c.render()); + assert.equal(p.editInstructionMode, false); + assert.equal(p.status, 'error'); + c.hooks.unmount(); +}); +await test('embedded skip native resize, preserve existing parent close path and event cleanup', async () => { + const c = context(true, true); + c.render(); + await tick(); + c.composer(c.render()).onChange('embedded'); + await c.composer(c.render()).onSubmit(); + c.render(); + await tick(); + assert.deepEqual(c.calls.resize, []); + c.emit('qa:dismiss', {}); + assert.equal(c.calls.close, 1); + c.hooks.unmount(); + assert.equal( + [...c.events.values()].reduce((n, set) => n + set.size, 0), + 0, + ); + assert.equal(c.keys.size, 0); +}); +await test('composer IME enter, WebKit 229 and form submission guards; genuine enter sends', async () => { + const c = context(); + const h = new Hooks(); + let sent = 0; + const p = { + value: '中文', + status: 'idle', + level: 0, + voiceActive: false, + selectionPreview: '', + busy: false, + micBusy: false, + embedded: false, + editInstructionMode: false, + onEditInstructionModeChange() {}, + onChange() {}, + onSubmit() { + sent++; + }, + onToggleRecording() {}, + onClose() {}, + t: (k) => k, + }; + const tree = h.render(() => c.api.Composer(p)); + const input = find(tree, (n) => n.type === 'input'); + const key = (extra = {}) => ({ + key: 'Enter', + keyCode: 13, + nativeEvent: { isComposing: false }, + preventDefault() {}, + ...extra, + }); + input.props.onCompositionStart(); + input.props.onKeyDown(key()); + find(tree, (n) => n.type === 'form').props.onSubmit({ preventDefault() {} }); + input.props.onCompositionEnd(); + input.props.onKeyDown(key({ nativeEvent: { isComposing: true } })); + input.props.onKeyDown(key({ keyCode: 229 })); + assert.equal(sent, 0); + input.props.onKeyDown(key()); + assert.equal(sent, 1); +}); + +await test('session drift during delayed native resize cancels old draft', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { kind: 'idle', sessionId: 'a', messages: [] }); + c.composer(c.render()).onChange('belongs to a'); + const d = deferred(); + c.pending.resize = (next) => (next ? d.promise : undefined); + const result = c.composer(c.render()).onSubmit(); + await tick(); + c.emit('qa:state', { kind: 'idle', sessionId: 'b', messages: [] }); + d.resolve(); + await result; + await tick(); + assert.deepEqual(c.calls.submit, []); + c.hooks.unmount(); +}); +await test('text always carries the exact session captured before resize', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { kind: 'idle', sessionId: 'a', messages: [] }); + c.composer(c.render()).onChange('question a'); + await c.composer(c.render()).onSubmit(); + assert.deepEqual(c.calls.submitArgs, [['question a', 'a']]); + c.hooks.unmount(); +}); +for (const embedded of [false, true]) + await test(`cold ${embedded ? 'embedded' : 'desktop'} snapshot recovers initial recording and accepts its levels`, async () => { + const c = context(true, embedded); + c.pending.snapshot = () => ({ + kind: 'recording', + sessionId: 'cold', + messages: [], + selectionPreview: 'captured text', + }); + c.render(); + await tick(); + c.emit('qa:level', { sessionId: 'cold', level: 0.4 }); + const p = c.composer(c.render()); + assert.equal(p.status, 'recording'); + assert.equal(p.level, 0.4); + assert.equal(p.selectionPreview, 'captured text'); + assert.equal(c.calls.snapshot, 1); + c.hooks.unmount(); + }); +await test('snapshot reply overtaken by a live session event is discarded and reread', async () => { + const c = context(); + const first = deferred(); + c.pending.snapshot = () => + c.calls.snapshot === 1 + ? first.promise + : { kind: 'recording', sessionId: 'new', messages: [], selectionPreview: 'new' }; + c.render(); + await tick(); + c.emit('qa:state', { + kind: 'recording', + sessionId: 'new', + messages: [], + selectionPreview: 'new', + }); + first.resolve({ kind: 'recording', sessionId: 'old', messages: [], selectionPreview: 'old' }); + await tick(); + c.emit('qa:level', { sessionId: 'new', level: 0.7 }); + const p = c.composer(c.render()); + assert.equal(p.selectionPreview, 'new'); + assert.equal(p.level, 0.7); + assert.equal(c.calls.snapshot, 2); + c.hooks.unmount(); +}); +await test('snapshot completion after dismiss cannot reopen old recording state', async () => { + const c = context(); + const first = deferred(); + c.pending.snapshot = () => first.promise; + c.render(); + await tick(); + c.emit('qa:dismiss', {}); + c.lifecycle.closing = true; + c.render(); + first.resolve({ kind: 'recording', sessionId: 'old', messages: [], selectionPreview: 'old' }); + await tick(); + assert.equal(c.composer(c.render()).status, 'idle'); + c.hooks.unmount(); +}); +await test('a snapshot read failure does not silently remove all established live subscriptions', async () => { + const c = context(); + c.pending.snapshot = () => Promise.reject(new Error('transient snapshot unavailable')); + c.render(); + await tick(); + c.emit('qa:state', { kind: 'recording', sessionId: 'live', messages: [] }); + c.emit('qa:level', { sessionId: 'live', level: 0.4 }); + const p = c.composer(c.render()); + assert.equal(p.status, 'recording'); + assert.equal(p.level, 0.4); + c.hooks.unmount(); +}); +await test('old microphone RPC failure cannot overwrite a newer native recording session', async () => { + const c = context(); + c.render(); + await tick(); + c.emit('qa:state', { kind: 'idle', sessionId: 'before', messages: [] }); + const old = deferred(); + c.pending.mic = old; + const request = c.composer(c.render()).onToggleRecording(); + c.emit('qa:state', { kind: 'recording', sessionId: 'a', messages: [] }); + c.emit('qa:state', { + kind: 'error', + sessionId: 'a', + messages: [], + error: 'old recording failed', + }); + c.emit('qa:state', { kind: 'recording', sessionId: 'b', messages: [] }); + old.reject(new Error('old RPC completed late')); + await request; + const p = c.composer(c.render()); + assert.equal(p.status, 'recording'); + c.emit('qa:level', { sessionId: 'b', level: 0.8 }); + assert.equal(c.composer(c.render()).level, 0.8); + c.hooks.unmount(); +}); +console.log(JSON.stringify({ passed, failed })); +process.exitCode = failed ? 1 : 0; diff --git a/openless-all/app/scripts/selection-intent-reopen.test.mjs b/openless-all/app/scripts/selection-intent-reopen.test.mjs new file mode 100644 index 000000000..6112470f9 --- /dev/null +++ b/openless-all/app/scripts/selection-intent-reopen.test.mjs @@ -0,0 +1,76 @@ +// Exercise a reused native intent picker; only React/IPC/event boundaries are replaced. +import assert from 'node:assert/strict'; +import { createRequire } from 'node:module'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +const app = fileURLToPath(new URL('../', import.meta.url)); +const require = createRequire(import.meta.url); +const ts = require('typescript'); +const source = readFileSync(app + '/src/pages/SelectionVoiceIntentPicker.tsx', 'utf8'); +const start = source.indexOf('export function SelectionVoiceIntentPicker()'); +const end = source.indexOf('\n return (', start); +assert(start >= 0 && end >= 0); +const body = + source + .slice(start, end) + .replace('export function', 'function') + .replace("import('@tauri-apps/api/event')", 'Promise.resolve({listen})') + + 'return {choose,cancel};\n}'; +const compiled = ts.transpileModule(body, { + compilerOptions: { target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.None }, +}).outputText; +const factory = new Function( + 'useState', + 'useEffect', + 'useTranslation', + 'getSelectionVoiceIntentPrompt', + 'confirmSelectionVoiceIntentPrompt', + 'cancelSelectionVoiceIntentPrompt', + 'listen', + 'isTauri', + compiled + ';return SelectionVoiceIntentPicker();', +); +const settle = () => new Promise((resolve) => setImmediate(resolve)); +let failures = 0; +for (const action of ['choose', 'cancel']) { + const state = []; + const callbacks = new Map(); + const useState = (initial) => { + const index = state.length; + state.push(initial); + return [ + initial, + (value) => { + state[index] = value; + }, + ]; + }; + const component = factory( + useState, + (effect) => effect(), + () => ({ t: (key) => key }), + async () => ({ instruction: 'Question', sourceText: 'Selected text' }), + async () => {}, + async () => {}, + async (name, callback) => { + callbacks.set(name, callback); + return () => {}; + }, + true, + ); + await settle(); + if (action === 'choose') await component.choose('question'); + else await component.cancel(); + assert.equal(state[2], true); + callbacks.get('selection-voice-intent:shown')(); + await settle(); + try { + assert.equal(state[2], false, action + ' then hide/show must restore button usability'); + console.log(action + ': PASS'); + } catch (error) { + console.log(action + ': FAIL - ' + error.message); + failures++; + } +} +console.log(`${failures} lifecycle regression(s) reproduced`); +process.exitCode = failures ? 1 : 0; diff --git a/openless-all/app/scripts/shared-backend-wire-contract.test.mjs b/openless-all/app/scripts/shared-backend-wire-contract.test.mjs index 0cab6c6ec..741c01ec1 100644 --- a/openless-all/app/scripts/shared-backend-wire-contract.test.mjs +++ b/openless-all/app/scripts/shared-backend-wire-contract.test.mjs @@ -178,7 +178,7 @@ assert.match( ); assert.match( lessComputerPanel, - /reconciled\.reset\) \{\s*setTurns\(\[\]\);\s*setVoice\(null\)/, + /reconciled\.reset\) \{[^}]*?setTurns\(\[\]\);\s*setVoice\(null\)/, 'a truncated replay must reset both the conversation and voice presentation', ); diff --git a/openless-all/app/src-tauri/Cargo.lock b/openless-all/app/src-tauri/Cargo.lock index af8588ee4..89f711f6c 100644 --- a/openless-all/app/src-tauri/Cargo.lock +++ b/openless-all/app/src-tauri/Cargo.lock @@ -8,6 +8,16 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + [[package]] name = "aes" version = "0.8.4" @@ -174,6 +184,19 @@ dependencies = [ "x11rb", ] +[[package]] +name = "argon2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3610892ee6e0cbce8ae2700349fcf8f98adb0dbfbee85aec3c9179d29cc072" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures 0.2.17", + "password-hash", + "zeroize", +] + [[package]] name = "arrayvec" version = "0.7.8" @@ -486,6 +509,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64ct" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" + [[package]] name = "bindgen" version = "0.71.1" @@ -554,6 +583,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + [[package]] name = "block" version = "0.1.6" @@ -869,6 +907,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures 0.2.17", +] + [[package]] name = "chacha20" version = "0.10.1" @@ -880,6 +929,19 @@ dependencies = [ "rand_core 0.10.1", ] +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20 0.9.1", + "cipher", + "poly1305", + "zeroize", +] + [[package]] name = "chrono" version = "0.4.45" @@ -902,6 +964,7 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", ] [[package]] @@ -1266,6 +1329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] @@ -4243,6 +4307,12 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + [[package]] name = "open" version = "5.3.5" @@ -4337,6 +4407,7 @@ dependencies = [ "windows 0.58.0", "winreg 0.52.0", "x509-parser", + "zeroize", "zip 2.4.2", ] @@ -4345,11 +4416,14 @@ name = "openless-core" version = "0.1.0" dependencies = [ "anyhow", + "argon2", "base64 0.22.1", "bzip2 0.4.4", + "chacha20poly1305", "chrono", "ferrous-opencc", "futures-util", + "getrandom 0.3.4", "hmac", "log", "md-5", @@ -4365,8 +4439,10 @@ dependencies = [ "thiserror 1.0.69", "tokio", "tokio-tungstenite", + "unicode-normalization", "url", "uuid", + "zeroize", "zip 2.4.2", ] @@ -4507,6 +4583,17 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "paste" version = "1.0.15" @@ -4691,6 +4778,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures 0.2.17", + "opaque-debug", + "universal-hash", +] + [[package]] name = "portable-atomic" version = "1.13.1" @@ -4994,7 +5092,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "chacha20", + "chacha20 0.10.1", "getrandom 0.4.2", "rand_core 0.10.1", ] @@ -7502,6 +7600,15 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-normalization-alignments" version = "0.1.12" @@ -7535,6 +7642,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + [[package]] name = "untrusted" version = "0.9.0" diff --git a/openless-all/app/src-tauri/Cargo.toml b/openless-all/app/src-tauri/Cargo.toml index 8e20bc80c..fd27caab4 100644 --- a/openless-all/app/src-tauri/Cargo.toml +++ b/openless-all/app/src-tauri/Cargo.toml @@ -17,6 +17,7 @@ tauri-build = { version = "2", features = [] } cc = "1.1" [dependencies] +zeroize = "1" # Framework-independent business core. Tauri remains an adapter and owns the # window/plugin/IPC concerns; Linux must depend on the same crate directly. openless-core = { path = "../crates/openless-core" } diff --git a/openless-all/app/src-tauri/dmg/README.md b/openless-all/app/src-tauri/dmg/README.md new file mode 100644 index 000000000..77719933e --- /dev/null +++ b/openless-all/app/src-tauri/dmg/README.md @@ -0,0 +1,11 @@ +# Apple Silicon 安装界面 + +背景为本次 OpenLess 安装界面生成的摄影风格图像,不包含模拟的应用或文件夹图标。构图是浅色海岸、清晨日光及中央留白,标题、双语安装说明和箭头位于背景中;真正的 `OpenLess.app` 和 `Applications` 别名由 Finder 展示,支持原生拖动安装。 + +- `installer-background@2x.png`:1536 × 1024,生成图像的交付资源。 +- `installer-background.tiff`:包含 768 × 512(72 dpi)和 1536 × 1024(144 dpi)两种表示,供 Finder Retina 背景使用。 +- `layout.json`:真实图标 128 pt、文字 14 pt;窗口及图标位置以 `../tauri.macos-mlx.conf.json` 为准。 + +通过 `INSTALL=0 ./scripts/build-mac.sh` 打包。ARM 构建使用 `scripts/macos-dmg-layout.py` 在 Tauri 压缩和签名之前写入 Finder 布局,不依赖 CI 上的 Finder 或 AppleScript。最终镜像必须通过 helper 的 `verify` 检查;图像只用于安装盘,不进入应用运行时。 + +设计来源:2026-09-26 用户给出的双图标安装示例及新照片背景要求,由 OpenAI 图像生成工具制作。后续生成可沿用“浅色石灰岩海岸、清晨柔光、中央为真实图标保留空间”的方向;这段说明是设计摘要,不是原始逐字提示。 diff --git a/openless-all/app/src-tauri/dmg/installer-background.tiff b/openless-all/app/src-tauri/dmg/installer-background.tiff new file mode 100644 index 0000000000000000000000000000000000000000..e8494e20fa05ffa5e09414c14e502d4a855126df GIT binary patch literal 2026374 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
  • 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%0D&dv5-CY`f`0YNfLnrtRF1_K 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 |`=!zN4yU;cy^gGg1i2B`siTF6 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

    #KT&f`9;cA~RZ^25cMivsJxg&^Vj@=Yx)UkjY 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

    2;cM*?pn9iu@@w zJ%mk?M>#V1jOu!noGF4^E#`i{OVUlljrqD*l7vPsL-CXB6%f?7EZ&z@v}UEk&DS#GK@+KfGK>~3M;1Wqt|zz9CC&g6IQ7n!sW#uk9U&aK{zb3)Z%^a4B$M-XC(#Tlbu7Fc zE1B&gy1V%+oO-`(l-eaX^$cxeWGK5?8UPoq2!GJKO3OFDAH@ZEW)xxSUm6=Pp6deR z^NC1D`6$2Dweam#aj04tUq&58=-l%?J<>L$gsv?=nC|qEQB7J!uLX^$QKHvh#nSNI zb$=~uqouKAsDEQ6Tcl=|!qQJpwCze`f@SrzGiMU_Te?k|9wqIJ*2^&=#%)U*6uFx% z?4MW``tK9n9h4W|13PIL|Mfh!(;E3>T>J+9SQj#cSQNs?c_E($`95VmAzZ3 zA5l9FU?kH^TQ^4hfsJ`H+O0fn_`dNht#4; zuG!94-$!aV@wYdD^g8|AII}41t$lOdq%35ODQ%{MR9hfDNw_-`nMK(9KWBj$l_

    t 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

    `3kCaG(j zs^7+ZYenF+$ZD{liZYI~V&7Z^dQnu|ai7D?Ui-#rM{kifn=EN3UR$N`s0s0tUSvha z$0~lIZ+WV_7cobk;wzbtU9;&G~LvrNIyu3tf4W08ZzjtWlRTum=) z*jS0JH5kn89IaJ_-}~|BR{urpFwa}DzY`Gt+EbbA#(YWRx)VGR8RmAo? zP0!f&wSBiKonGZXc?*ZyXJFW3#4;T19M*U9_WQU7gAWCCQ-7fwyu~|@`C_dHt#d`Y zr8W0DuXL{OnaNt8=6stiVhy&x$(nlvz_PV5-ue9?7yr+2Hj>EY+vhgY-tS&*+*vVT zzJ~eZAqO_@w}716)U}I$TpuT={Li{LZs%G8=wgHSk7k}e}1Y`vwju1*) zgvt5ld)|!U8sS~pAJ02~>Q>BPfsTMCdVPHH%!~anpyYmbVW-ZVt(RPNq8saafs36) z#!F$fjv6@=Ok`_BUVD*6rn@dq=NZ#=yZ*G%VvmMTYZF)NmYKs#go~18$A9|6;9|Lc z0|0>IC3E>TD%l*50O3dje*y%6r+fbXz)mbZHmKljPJo$@!I!XJ{~gP#L<2SST zyC@?>QE_Q%wnuKhT+d#b@+j~{=Wjt2=NQ)nD@$v)qMG^(N95=V+w=0w^qA_yW3_%= zM#w6BXsjB^OE83%WPRtT`*xZ7d}z_muY$fpZpm(O*|sQKUZ)AIxfE6Y-^+(SLMj)t z6Fc_mvV=^x9(4O5Zkuu{PoQcsK*e!X(~cuiXa!ccxn?*}qNpeDWtpnfTz@txHC}Nh zZ-z_Ggx0?>%;wL%`6E^9#bqTq4xg32%HNr-!;@p|qSPtU@fxD)lh$y0(&r4i{kXW8A& zTv3TUy|rMr1F8_Sg4s2>wYkUdD;M^nsp{F0jlV@)d1iRL z80SThPr-_>0=qT0nN`x~y%6@szZtRFgYKu|Ly;d0-sm+jWB#nz;i^CR{-iu>p!-|A z;y3%Sv6S_lNLT()aI{I7+nJ9ePlAyjYXGyUYDo zoUz2@@Yb6J#rDNg*G*gRA4UoJPi?OhGdQ1OuiBms(&Vk?w$GMIL-ZJ&*_*5V6_lT;A9f!eVrb*? zoBvC@I{DQDgMSv+^>VI8j_24}6>7HfX`){2; zA`@U2h?K>C;Ha_OItR)K1)$KbFb`eYs1)8CD;k_@?A&hXF!oVZ^AZ0FSEbdEc|Xx6 z$pR1(k0NCENX+}OEc#x}ylY}CHSh1fuO0tRn6eH8!r>VDgUZO1XKs{vIIT)iJI^dB z&*6H!UHPj>{4~QIH%wD@slLO3BagSR#9ov z6)6A4JIV`l%a=2cWk7oItD$3Ng86e|W?NIfxu5;eolchDO9g!s#*2ul{5-iP)u8#g zMWsx)%QA1HN-gO&dy7@R3;IQNE_6IK zekD$=wJ^g5M&kX#N~$^+a>S&0TVxWer4`MMi|bD8IV%;_UOls8GGa2Feyr~+&&Dy& zwLKZrWe%C!>zaGvV8Pcer2bdqon|fae#U0dR~MR9v#H^~ozutOLHi^rd(QlE)@uX0 zAkai!^x}h!G&gBIwW+^qC)*D8b#_xADK*b>Azo`CZ(}cY$CM&ICV>{TDId9FQ}Q5F zMdb5^2Dpw4@;{yn=FzXmqi!O9l*{?K8=tY&nx`AYioFl~iRb9UO2vPZ3{}K^@otuY ztrfJn{nfdh6M-|ah37rB+~eAdlx|S(X3|}qxYv)s(FI;Vxdc3BXcLbyfA<5aYrcc{ z6&49&Qk1Kb*o19VnKd*pw7H4o^QL+#W*rry65Ae9Rr!YoZE?S`%C0aYJ4++y73c5l z9l=E4^gj#QO z3fGRf=gMv*RGCL*#hj$`!~a;oa3;nztnDfiY1 zY-iJIi%-l#sFZ38HTbI`Y-?v8O2kt&_QRHf-+HL%XeZ0byx-P3U{8M;ni}@t8HRO< z%Gc6(*WGFKy|oaJFBeWq<67X?#Q?p+x?J8zTfD$5VY=u>gYAAs-O59K}6Q0Y42lPrunetF9Kohqu~rD2O? z1;*_D=H}SBSP^7VV7Who$}8of1QJ%f;2GA0NG*MQW2P*BKw4=ohmw37OEA$pWmFN1A;~CZ7t(7|8x?{tH!g}52B?MR6mXh!f z+Klz##)_P63R8V9v*!2wY1v`y%E9?_${y@1nfGaLMwqhLm&l8c7_q!4%2n@fR5K)& z3Xh0p7&kbhZyAaI6g>vkxwNqo%|1E$GuDrbH!xYwr_T&E%*~llP})>&P{orU4~kLg zxKt-VqZl{%8zSrny`syX+I;+Or`%XQH>F)aoLMZq(3tm3N(o;esCT>SmMm9iQ>V=K?n6wL#uV?1$=qBuhP2nJ+P6L@RF(L} z#x+2?56U{uyd&Kke_5RGiM;B1#u(i6o{1+wVdaN;O|wk?@aON|O34c~FEE|w*`i^{ z)zBW^4_8$Ch|0j;sd0zaGv&HK=UEpfiL=z>f=$P=ukXs;hUO{CE_2_MwO-bb`-z&r z9NxVB`P@|1$+95rSpzW^roI2FRrIIk;D^D@)9L36h|;CTi7}+<;ZR~8R+2OoT z>-|kceY<2C7p#>OI^N<=2Gii7f@|THw*3AY_e3NM?wLo4xAt8>{S+~&`{mPbzPsts z!8f*QTX!-&HyrOfOC#c{*o4hgZwQ>`aDGs?jC`;6!XfKQpVF$w@|)=$cY;g7LHmfi z?RYraql?`0+h25)=_GS~BaF z8WvrU^(xc^#ivi`6=JBQb=Q-H^pd2y3^2?!W@Fn`*ta`pE1vXVOhH`|8TH_^=E)|t z#@?@fv5PV-@_X4L;Pf~9r5BkBqnO}<@i&x)$bqrjGvc`qVDY!6E+(>8&M+e3smQ$s zxhcwmIsFQQ(ezJQv2jOIhB8-IW`;Yij8h)b4Thl)Tw1bQsVQGVr-xks#VQ79QQhsk zVE-SLOXTKVCq2?7!)uZe6dl};2o&*6DTeN%bmIUpkFOkCOewq5HaB`3OtSo7b-)1S zVE$pr;SQt5%?I8xaUQObl;P)b6&pczbU!*?rZP{!N|XGmYREdA4>%9M5naC5yb`d& z`w2B$+@OuyO#Bi1$XU$xWnl>A<>xG&ufpmE^o_N<@yk&7cAdBH5xiuKU8}+L_a-Hk z$+LNn=sdG8y0l&2#{6xaWoDoP&Bv^v(pu$wroW^sZq%(YWtcGrksMGWilc*0_3ICJ zwl{~Vva^}E4Wj-^bVZNTGMUIDnxjmscidZIzxoop1D`d}IcJ%nav3I~rRhawJ)ryb z3{@8=K|nD#D@PZhsyW3WsNrx{F=`HQ7dJRSmNzVvQKm(Bjr+ZzlFCb{aFdS z&WC}W&TzR}OU!#}iO>F?NmC?oTcg9F=~DCMdiD^_jO9g+x(0NMw*~br$$aR*j=65` zo)IXhMUpA?=Xzm1tj)gc%sauCe0k1co^~R0UnLl>Zh4yGjqHcWkR`JFJ#@5! z)7Nu!-OtiT=7n}p{#f^v-dtD=nBL}mOUD_bcd4hGs-3OqW&Y8iKhL@CNzGa?Ci^*<{*xLjnzN%stPFJaO4T zY%6QezE`M<;;H#XV{tvQ6M!C(*X!WJ`QE=72TIQvh3*jzy>KJDQ=d|n^V-wpq!Q>d zKFMM@1O57dWKpT{?!nv09Jxs?S$Fvc)cuwe$qEM(x4qaMdvotgk)$q1nDJZpbK_}& zE;DVjw%|3fFw6nnTy7DM0w~#!0emJFqBr(EJv(%wDXPAlEB@+y?vCbuWT{l+eqh5R zk4GGnGAE;MuwfR)mYvWMA&t;lm}$P@P({u;_mxQK!4n6`IL?S$*Ae-lm5sNt-o=lg zoZfV|GvjjaWx0Q7T3I@}eBPj5*E((kKDpmmBD#OBo1MTw5U_Il>EWg=a)6}Z;bkxg(KQ3V|R=z=wiE^^~+~X!njP5XL$~a?*!99lU zL4SJDxo^y{DK&lH(loxmSxC8N9v#}V1s`hz4|%c|w@q^hqprb8X>Y~M=QO0tUDFM$ zj@m*KeOti9k+6mz4ZQ~7Bi`Lk*YA$jPsZjA7Mbqfk@2tjtalgN`Oei_D}u)RFauS$ zSk;z;xFyxlbpxzS8@-VnC@1HeYf9MrE^#w3(%ZV;N@PF&l{WH~5_cQyuOO+)>cHpq zt+22c+J0wq`z4l2_xKCCtqRf}96`?tx~G(w!Yt9UEt@N&-%LHB&lQq!oB6332xX?i z=DFmjrpcRD_^Aeg_b*1p+s*gqE|e~~OAWsPQ%bATye0M|Wn7UtO@Cu)+ddEXR4jGH zpTwCCR|>kKbw*Eb4$y7qLGd3#zoh;j05L$$zaI8!!A;VcLsiu9E+aY);coT1*wejS z)y&JuI&?~Qc*z@F$LS8~@I;9ZP?zNAP-{?4KYoVw6twQnlYv)`0P>H&0#e^0DYqSM zhOTXQVQ{ejElxG4w!01qfcSe#3srY4YC!QjUR8mBGo+U$TQ}(Yh_|>r*nrq7Zo0NT zZX#+dNRrHJj6)9@%KI}*?;`Ex==Ry{YNC- z80v%1-9~o73AKfIuJZ9|i81)rGnb5S?qWC!ZIQ|&i3u>urr3LVFw{osJmK(`*2u8p zX8<>j#Y8}pFsO?Xtt13HPWS&mmK!Z4HgbjcK#eTngnf(#$7Z<>#8+ndOPLcChYrIu z?QeToPybYfJv>5V7Ru2RNd(c;BNG_vV*?>h0y=Z<4y2>XtI!fIX6V+if=w_1oG+Dz z@FLGN9zYq)ap?7n^4gl&;-wW*_*azdDg!L*Wh|-wJ&wD7wMRHNUrEPtQ4jp3lQKaz zs@+42m#KP>P69JKR~-=#`A z%SCPm6uFDZoL9WC(Zis07Mifup;nm6cfpC>it?(OTgJUFzGQjL*a;>3e)1rY*Stg9$WYR03S{pns@U~^HhuJDe=y5SO zwM5Fnsm3t{cBexmr)N&yQ?QtaOSXe+Hq$!p(lJj`=WQKb?zI&%Bc_lT<&5YL< zKm)(267I9R*O4$Vbh4XUPr;f+PYjRpt?&buS%`?Os|fU)d0GU2Vl7;%XMFa(M_B~^4%bm*&mIf#V~t)ZSaviDr&aJ zk(zm)aq8Xl{kYaB=Xe}nsbzVlp{6yhXE67n^V-;V2XA;1?Drj&d~srgW3+JvKm`=u zw+#YE+o5Nn1{LP{oR)VlH2oalqm3^&Wa`%JdBAEY$jXN>{H8^<5X$d^b86zayBPPE z)pbd!S?0L1=m0LV)TkGpJC9sPl@{ZxKd;MhP$ZdKETv*hI3)vfG&lbXF*hvQnI5AT zAo5>ngK62&Q9j)!bVtY|q3=ajthKnd@-8z{7?XGkF67IN9hVt`FX?TrC82$5A|uHu zX@r=gMMS)O?70_c>burO6G41T)@Hn@NVIHPTEJ7)2n~Au>jT9bu#RZeq;-DPt-QtA zDW(b*ICb2${Rq#vhLUR+SJuN2u$-!N-lI=`=4wsN6>mZ8ytl>)#*%O05`tCzaE6TA zlYju>`TWi@tDrYn=g=vxJ*?S1z~qjM(jxF|nrpHWPWg{eNI6 z$Z4X-)v4}A>7@SYpo7jzHPQRJr(z>={r&)hL154z z3?Kmo0K;I=*d!_$4~4_wv4}(>DGZ9hqA>U*Mh_E#$iNV&JVHqwhD2bI$dslv36{)e zk}0I7Ni&yEC9)^{))PXKN+&Y;bVX9Su>S6o#!P}u2ZP_+vI0eV#8B%mOE6cM}gH?b`+Zq z9_zZlKd_diX3>`=8%(`r2K^Lm@_~SG+du4l8G{wO?$q z8IXas&r;f}nqNQ+r9Puo$yPp3w?6R)7Kd%{PL)}FF&^HCT&ugqHgyAbMn z&BJMm{KCS_V>;nGZgW>1x~wCCAhHo6+OEB;OIE7I@EnMt#!^%`m_TkauIPX;vfQAn zvWhUv$+G(qEVxiqODV3-BznoeYUAG2PqIQOD#&mP0I{#igar*YP252fI4>0$0<{$cU$Qlz*zR4WS_{VZH-11V0JVPo-?vyPF zEfnn%!mv){kg7j5>lX-D?t&pGC<$F-5yuGhXD+;QO&JwND0Dp*s%OFQe9HF}vd;h# zVqqDtloSbU*EYSX(%Lt3V){On4Ko`v7Lp2oR&bLPh|RTnV_DjY1D_Dc$pkC`QPU0^ zgkFrz^&8-K%l$@8jXUEiV>fd@5?2_+X0kqcGr=jfxqYoTM$J|gg-dI+KmkpuM30=b zS=&zbu9A{vp5ckLTjKKu{y8T zrA4{VCY7!0?o+1iUnlwftR%PGzg?!58zQyJvXjp9uQsy;)LxaXvnZ#{{;KnDYEx4< zY0h61n>Sj%(~RlRQZqoa8k=LzHIg=3qjEGwHL7p=%sU50(k=6mtMg`aq9ym7r9$s} z^}@2`Jr-8AzS@5v-epa5*;K@Rd)3ltmFo|M-}>#tG;0ojhQ(~VXNx&;j0belCtH2t zq(yXn47KMmE)7d)z9$d!J>FzbjX4w555UL_|I0ow5}xAE`9o)K<@>-ltkxZg@;d5q zsy}AFja~|4f(eE8o7f_4Ad;?ED<%i0mE7u&iUK|km3p3oT<2Lsw{&K4A(axAg2|ha zg)15nzV{B-8F_beZM~GYh*brOI~6l3H0d4HFrC<8vv2K{G(m;%>zQOuHY|;@wU|P4 z9t*8$EhzA%g3x}TJ9swCFvptGwE>grr(n*tfGK<}HgzpLXxJ2A|Ra{(z5iOV_D3H+Ol8=V1 zU0ps$N=DENEM|sLNhQaT5EH_>i;@ZkFJ!z;*}`;mFC|N-`5uI2W37NPURy|4R$$=4 z_cJ6Rp+o3ZDrIqck_k1W%Y%qR=6l?R(ZPnc^pfG3J0+A!Ik3Z|tkoo=jhv9;ER@*V z^Cm<`lM$TH7&c1DB_tnTQ3`RzSYI3$yRvBsrUWm#0Fb3YX(8+m0xbBjhA5OJgDSN| zP*P;vVMD!kO9Cmaa?ds$V%UDI+`p-)97Sfzf{#$8y2O?0s^eUMeyR3*uEuuFXv`)> z$B}}hnXZK=jEP1C9U}8YPJ(tylm7kS zq=8d(z@M}_q^cIe@kR$-G#&|GCfE^KBMdG6F_+a))}&BZ$fAs>6j270yU%7twCu4u zoZSf;?V1v`GE@27juSd`eC)~6wc?i;ozt6)H5L%3$6W;IM5cl0ijCIClN23$wI@Zf zS`cCGxsdYqPNeAG&( zO5WVb+hCto?JnH4YbdZ2j=&a%#=F?+yra$~rkJAHxpl)slA269kBMKNr8f~ztLne7 z8aJFr7ewJSmWXDNw5AzXLF5^uyiB?hV)*#_)Rl@%=P_Zu+M2r3wOng<-qRX17JFx2 zUUJVZ1+jC-5uk+4n2Yjd%lR7K(!nLaa#i?|d>u1h)cDI6G1(Suzno4rrlxRW&@Jn! zXc1$%ItmgkI4syoZSvcT`RvZSirDPV(tp#@e7fhlcWmSA0C{U0M=?ddWGTvrK?ZM4 z!@GA`+ANEbu$@h?`arl`<;sMPK5Vr1;gk*Y&P<3lQwigYXUSq z2=ZLE*Yir~Q_Y<_mg83Hx_=NHbIj`9H@FJ4s$Jz}tJrVzT#@6REOagvu}fZB1hW>yjetlmClrmJeh6}8%ZXqNR%SRjI9uHBq#2BB?< z$+ms|H3A#$eA>C6B2RZ|HU9rHfOy*Z@gi<-Y+|4DZcC6qS%8Q$?6m6Lp@HzUf{~PQ z6h2}NDWIjBu_z{+ETUkAK9ZC+<6Nt8hP2A5nR06&ffW`}X0EDWCE1y*n(>RNft#_( zKP(H1tCk{Z47{2_u33(?gVm(-4>9R{3c80Bk>DgDPQX+3zET0ZTKN--eVqCj014@h z2^gNL-6{eYh`DN{W7>cLa)-(ry$IwXikGb#IVIBJ!m1y(g9)LE5~4B>8JVdckl?+H zH7-E_89X+Z;d-bUv@=4$F_4X&(XA=E_8JQAx^m(|K=hST6_rT#CV|!*GO@6-uc*=C zyi$%n8t<6mQLh<2Gmx4rW6G`^J;6HvF7t|utLLI9@fiaV3MwnOWEzV~k*@Kdr6T4u zF!aUCvX+6qCs2_Z@dzr*RHkW=D5{Ddu<%8kQ$nl3x51aDS)&*u-#+osKcUMnI>D#P zl)1^wMN%;p1MjYE8$e_#LD`?M8Gt9d4!cuL2vLy1lrNqV2cmQYvom+Jv=5ybk}^bl zM?1T=f}bl9WGEouH(WIjN$bRlt1+7ULj({w+Wwqka>ttXJBmR?yaYaL`6oiv!vdkl zDm)dtX$=B=Ng~pX`^3kJB(DmBtP=+v;SZ3cm^RWvBa@7}qXed7NgA2ADr1tQ>R2@6 zJDsyjIcr`F!yw2SH>V_z7wcLi+Sezl92s$qJtR*Jq@+n>1`~Pz3zDap(sH>IB%rDE zuUj;?QOB~&Y?K>-8d;j7G2x+H3A@~QqEa%VJK&AUA4ntKwM=fXLC&dsC?U&0$N^L~ zD4?kFOU3E>NLrrCsi?=RgExuc7<@KLH6wXq4R%r&A@Q=?M4 zCt&s1;$IOkb<1WZsNv0vEJ~6;W`vn)2pS!~x6C+;1%GR}voF%(%z02D^ z)P9!};gz}EJ1m@ynio8~KTr$!r-bmUgq$8zeY|>)&-wZiEMQ1EJEC!*4cs!#X^CI!GA)?x~?Lju7`$%gOF(QAM>!m^ zq^C(c;5MYsqFq0`ypX2y$u7il!b6v{F{>rZoQnhOyumL?h=BkZ0tzGAITTGD)9^qr zsxXZm3ZaS1TUDfCj8mc%#U$ECt!ouxH!uj>sNqz>Scx8*AV#R=$^5+}Dz!xU%*lKY z(!pj?!@0EyAF?GzQ7XM1ohMU#Qi~x^m7HlWi#X45NJo?738}4^T-_sy@2*1eDKPyi zQv%X#ltQ8Gpc0bCK-Icwe@(2i8%#khq!|{O1UowN)mizMoN&8a?>k~l(=pl`O+OCO z%m`(COo)ckHJeA#Zz3xo&0+PusgJM?1{z{E+6g}k>njbqm`;RALi}tun$r<<0av7v z#uUAy8bhe1PpFNxJ;ai~!Q@dC-M)P1Pi$7d9h^EE^FG?iSRs`glsP}?K)q2el zJ65;aBg|W~7zKjcVlp+QBc+o;nTp_|jEXn%lvA>`m1|rRo3zk13B-G5uHf5TXwyC7 zbSE=w(aLHXRXqtQCMj6_%<{?6nfRv-+?~sWHi`5|RP@UOzcKP&J_^^{wcJ?|h)Rp< zxZ>B(8j#z9P^_|;zPdA5N>n5xT`Ume-fiiiJ=?D9JE5fd69PdzMAcGlwOM?Q6I=uw z`>sy9f3`gp7JFDsGZYp?<1rn{PR%bO$df%iLAy0sFul*TB)n4W5kfn@qXL6lD>+Xn zrdQQZQ}unH5-l=Xk{66RIuyGyomr^~)KqN1UNz=TOyEZnHL23ftn1^lCGwojRVxkW zrAi+^^*mEEgGpH@lZDh$gJqNPibCxNIMmOR)cVSUf4PzVzD$UgQ^Bx%r7%%ryqxVA zz`H(@N!GzJ!3&g2^YoWhhdQcSSUJOvf%L&6Cc2A33QEj2aY!gt+ZPL{F{WRSf+@-ZfHybHPrS2SYw)ryck>z*dQ={huD2(DXgBFTSUAlw~+7V-NxTUF3P2KVF~P_ zek;wS`JnR(RQ0f11ltQc`Im%Zy>-)C@pY`i2^&UZnvMcTYah%ZmZZhHC;UaJvMe7w zw^x+;Sn@5!G{GU8H9@I44Lki013t{dO)6A^#R{dmX#|QTYQsghrRu;N)I_iO#+D-$ zuBs8I%KX*c_q7zaFDTThw5VsQ^lTi0oc$p(6R3SP&Qz|YC8P~4nNvwy1m zqpyq9B|9+6S(UR@o}IR-n>N?SGeJgC@WmvqoJkXrKspX@ zJ^osm>N&0!mO$hw?ZUlFI+seqtKE*63;G4n@)BxdVNA^jx_QPN#Q#It5~6%XFENvn zrkF#Usz?phC4=ohzWyjhFfo0-MRrxE?Hla2e!tD+uZ}TkTcb~o-8ja_C?kls4)>_d z7$20$I$Ouc0YT2ixMCU;~i!nk%9Lk?;UKS$~nar zx*OxOM?q;8eFDx59|1F79q2q562vZ_4)5_ zqBTAS5gM)YBNlIl9O>G0JM>cU9OtJqV*GyCrtDUX| zsR%3q$uxAV{xS3$zu-l$%zl9689Qkl6kmZ5H9alM+XbaEGT&O!sJZ~BoMkG=erWQKONQF!%ys0t zYm-`&&MbNKjY*C#97nn-bBh&^d${MFC2zEC3>J6~w?vH5cCf2{QX&B`Zmz^BZ)j+o zsmV5NlK)l=&2&BU>|{#xHI*i_h@6LnwZ`=eb&7}ZezWW_^o^}j=V^9PADR+=AuBSO zvi{#sJj(sI!l|e+>V&{4oM8a*%Bg`tTYPS154GZDI{29wB(6bj<9nnO8}viZdFOop zn{ubeXs%g!a(S;CQ4qcs{HkKYg*H&T0_fRL2&R!sLLYmZC)}T*AXj+abo@Yh;U@#y?6B`J)^rE$2#K0gYO!e(;V><&30 zi$ta~sr1HSDwo6JbZAUQZ6Kq{C!iT6HlazKO{Eff%xZI1tHbNCbg1+zpIdV zgt|*oh|;GKTO8)^GNs~j*8LpfE>Lb{(HIBQIr=?Fbkdr(~kFsP z^H#bx&(rpSKuq*e4Z;s%IQTCMYHJ3zi}Gm?vCBHB$ThLFSkxx%3_6lR%v+M)Hp=3{ znK03c{N6_^Tvmpnk*f5QfKEJ2xiv~tP>M8<0@}~9O%f`hHPFM%vp920gtI?UtTP(3 z65}YcDrszsA}F%M=*2y6jC}jbZZtN;JdZgj1s?{@ZZppwJ5kiK`%985 zw!6;I!-GG}ZOg|4OObr%JHRZ&Z!$d3E4NI~3*)%>$jCIWKe?;*a-F2pGnDXGRsDl5 zw{UakL{BJ5{WVa^e1QSZ$=l@bK9F473RX`Fe)&L-1ZIsT&nrQzeevq7)z z44A^p?liqhSm;AtYe5ohO-)pk#E}sy*8TBLUiYDy3x21&sfDJn1 zS+7a-2GysF{qXe1ES@ubKd>G?hQsoWlY+o1qzr^s5bL)L%?lE-jlTEojX==MMSDUs z?@SSD-L3SdK;Ir2=$tXYnX zaQHU4^c7#Tw)0O)wzZsK_3KeQ1sl%verq(U6}ktmQFbnP?4oP4e#qw!F7AdOr`hzP zve#l~26HVep>{ZWOh(+h`|l%~v6>=^+GdNb@6;xGg|i7l_cgePFTE}#=vxZ>8%(~l@Q-6F>Hj?Qy5pa*DqaX3G`yGEL5(|$If_v5 zo%6ifAEG2*N?AEQ7x?p6YJy}=h1NPV=AaxJvMvWz$3P`Ob`BGff5@qew^d@U%medO zt4T91NK%OivxYK9N%T1c5?72t^>Jvv2qxr8ZJ}|5NiR69KQ%&NAbToY@U3yfmT2GI zqh5FGdMT&{p%@EdwJ3^CE|}IZQBo2rW3bHoIz{&N9s~Y*sTst=hgei&Y)vKWF+ixs zs?|^wGFYpI zOF^h2ubZ4-k)~QyGZLcAUc+s4&t?n37T(-nORjYdLA#XHCllPvw3qOPJvpWkFN_?z zO%er5%=Ie>B7?AnZ?y=rqoUVf^0!+N_ARtosF~oqjCZjl;=<{<92uLlZtmdrpSPf* zCyKR5PGt){m#+3Agzkrvg@Gy*_R7)wrJjuvH_Ju>_29{udhDUhEOk#l-;}d|kYxW# zcYi(N`71H&A_7k&JoR33N;6a@4of6iG*uazr1GH?#O1*tqf1|zihS7|LmW(9^PXFb z2*1$T&db=*mzQ*n_BUEg))BLymgNR$J~tUc8`36Dk?LwqV;f zdV_mQ=BKH-Z3tnU{VX#Q!P~2XqU>Wkm5_FH*y|BWYneT?kuia&>B8CA8v1{7QZ5zS z)gxG>QmF81xM5_aKoFfEVy&rcGSbj$s|%vEHgYQ@Cphhiqmv(0p7)y=&U>EZr)g)o zIl4JRBvbtdkTxM=D0Lc(l#{2k4EGqJNaRel?GYJHB<@Zjdt!U`YY{u^cr{;*OlV872hO zwV+H{{Nw-C}lg{sPrI$Z5_XOv9+OwPz z3&g3lao45H?J3o6mer-6XzY&k@f#1CxA>u+_Z3;d4W4D{5Q;PysbKNquS^j#PBO%u zBJ3h2d3o+aB=mEv3^KWDn$<}s71GSv?z~J@lUQOVH=?NWx@ubvc2qW5H_O_z%m{Ck zYgs#%H~KwDa91*BS@_}=HbOTLJFlvo%2o9P+q^LX*L5Do;nrN{yj#0lSi};;wz5m? zofU{WdQfD!)njx>q8PFW>e1F7?rcstV{8?(R^i@gao_0V-x?P0vY%l4eQarJU6iY13_zz4`?~YTCgiY;mORD_) z11PqOShcLOgUfzl>}Kq!M&0Om*X=ad&U%<-LPe&>054?L4#2>sEIm)~i4O$+1yWj& zEMbInvdJu?%ox!_Amk8oZO(}7>2O|6>bnP8F$^w)Y+~pvXlV*!ov2PiMdt6!rrnCz zjjQz6s7`OGaRx>9xkL_=>@vfuczfplX+^CH@Swp2Kr|3)vxoxmMn?@d&*_NC?(|5EqIYHFV~hAJ=4g)P{=W>G>8py^O1fxv-Z`X7vbO^96iW!}2+hWWNu_B#(>^{DyRo58!7aka$nl+{8XirwIKC zDC?>wc5rC2%npGjYI+J7WG33w&xVCD{?!SFow2?q!TcYknvid%@`?K&GB*gPFm%c> z1S`VpNWyHb^mR)4BrX7tad!cT>?BR%qKz_fC`L^ROll(s1g2(7>jIK&s`RQpiz+O{ zL`p1x|MpO@emB)`9N8)Cq*ztWerZ z`2tC(jxSb|GS?=^w;?ev38(WaZ=Sh~h=?+5ijsRO$fB`B$gfS*)RMIWDyaph_D)U~ z@a2G$(yrv_D8}Vpe=BmxYmD};4G}{!`)Vw7E&T?JlO?1rE>J@2tD^-iaTYA@WRi;s zaKix8SoYFf_lHvY@JxlMh{bafY04;Qvid)7#_I!b3655x>e(x3L~t^oN)ll)jJ&fk z()160u&$~}=1hnX-0ki-q0&Bpa<0>JRIpJh#fk>8@2IE6(=cdms3#=E*mFZ&45otf54%c)D)2Da^Ndij%GSZEeMU+|%F6DR z&&yCG`xc26SL*gVkYP!%dh9AMB6Lc=hM^6pSgw!!I&+p)Zi=C!yqFNW^X`UDWLp|$ znrn!kF*RCYwD@C8_Os`ZymEZqhTQ8ABJUy?ABQPM%Vd7UX<+TOA8@um5Lf^WlPm(4 zBy}NC($d7^A6`%vV2H#R_sH%kqbz)|xjdtU%@es>!c8K_&Z$oL!>a{sO!Cb3UN#746A{R-spyF; z*yB!PJW8o%0=A}SGi)#$F7@nz(r{X=NSUXbP$_b{Qj#%ekn)slXM*2oFYftm@a&fB zXS6P=1I|y=p$kih(~XHNh}r;90B!I8EH*t8DL99x;$4tqQc|A|=h(87%x+TBe(lUF z2z1l(CM{@+SJc)+uICt*nN2oTcuAK1h4`Trc8SjCANC2QyP?%j)GzeG+p~dFK}h z>NfbQmR&0^MMu>rcKr^vES$`-3Z|Vesg{9E@@u$T2-TZ5j@+k}OGK@g6sJQwZ#_0` zu?dbFgmiXMH+;E@-iSuOY84ndtMfcJ*FFU-W4AQtsZetAB-|8Q&Mz8(Oa!b%Q!W^N z80rab#mjQAi+T552}WU6PVBf6q}pcTgK$_>SaprqgnM)LHT7O8ggn_ObYP7Z=v6wR zOlKsxxMtB7VMu9u=&P8o*EzyCd$wv=$RIjEXl8`#|_k}n6F;rhtP}LZ4D}ims&r1le z1sc6MYM&N&n&)1-gU0}P>xpE67wd9dqTQFz`I8g3Q%-Z54os-#sIBU*Pf28U4@GeX zn{zP&o704_@a3RVl)RWa@1ul#%&O}wadV}3MaCRu>BWhG#k zsY8r0Of|sUsU%t@9~uGoC4=C6*66Wj?C6voR_UTlxUOamq)hbQ`-+~VddEr5r7+Zz ziqQ<>$pUhqnF^wubUxt}-oyyQAQdoB6;F?6g(5knQF-3DObA)0xqNgiFoz9A z(PnDr&1&RAmDzVRMn;lS|nAWTvs4yb}Vyoe=IH1yU|=+R_2ix zy>jwfmlU*ISN4DGw6(L>MAl)1$!fwj0G`xka!HM`Z)D))g73mJo78V|h(SL{2!`8` zc1S3rtk_ce1mgv>zOc1`7F%#DS3Rk(zcf)djIY2*49h5wh1YpKJ7+d)8kx#Ut2-jw zmEwjcyxhcgtWk`&u#8J|BEpky;5-jN%v#lH_ozmm-ipf;Dk-id&t%hkAb6J%_HSs7 zNNtvUl6#w=`rzHo(@|8*$XMMzn4+vUYle4`6U}0edg)?h3j2`AyT>3~dEr*1kvkJF zKW70ImW0_>I#rAnN)-({wfQ{?e=@t*J=18yr+1(OWVsU2GRtjMdicTApUqAtm07dT zEC?@BfeC!yS>+2{P*wyrdn8RSn-5h z|8#XDMG5ToDd)3$P1JOMa}8O!l&bxg>D0UXhl?em3>R<7+-_DuWtOq zG1dRCvMe8!4kBA`%57MvH?8aYS#qjjYUjv4A1kV@%e0SovJ>*` z5q=>}4}5owhM6d;(=MiVyCoOJlhGJmb-_&HG}ROEG)B{=Yzcwwk?q5j=f-Y(ST|c@ zC${vyemt=eH$gyVC;bgoQf2*?w#-CZk+vKq_WQ=)f&c*kKi}X8G#&{BgTa6>C|oKT z4TQm>5I_Vv2L+5m;jrKgDmxR4!s9TQBz6%6kwfCqD6~dD1BXlDk$GGmQ8<6jVv%@k zl1o39%cD`5B+^4jqEIIhx&(9uKb%lw(>NVADKv;pYShZSb}>SbR%x{9WP-&zsYzus zxgCaiDu!IA(OLB#uXK^cV^+FlcC&7u0Hjkny^_l-v`6f8Yz=xjQoCL+(_3X?pHjwJ zpjH@8c1J0?)}<7z?w&Jd#7i;vd*zlfCacgfa@c-Cd62G8W0u?Y9(^0a=w_SCF3y<{ z-0>zEem+{&J*!dKPAIIQYaq^pdRW}!4q+cwg(i)%)eIZms3@-gs3kqaga zR79`7Y|Kp&Loo^>o~}=H2!t!?v`Vu>t!s{jJ5Cf<^E(WTTLMM#B5a|)a7twZqKyO2 z&9ciQ(7ZWMgMA3WiwtQMKCVL;$i0#aIR-CLV)ENYQKTTHs?xk{$2t<*q?@q9jNquyS|Ytdsw;;GQ4Q@ht*lG~ z((67^M6Dgcbk#vGQ0wZPv`w#bD)`W`>x(bLO;l#POcXlbAyP4f5~8J$eP0;ZFT`0( zzcT~%7{RhsO*%SLOXlUd(ds=%*)k#usK?A)4JOM=)iqDNsCwZ=sFrmpBGGgcewj+H zYE5OnQ?gS8B@;~~kJQlA+RRe7RO4wZ>aD`{FR|*655+ZG*GnN1TFQS=?2{*X)KNp5 zc&O3SQutjea#2-QZ_{l#R+OB6s0_XS=@6%L_% zrP^OJCd0cjZ#p`*{}~WM)AU^qYLmh_1}b}&jl@XT6Ln=r2)d%uT5;T^j9K}u%HBCQY#JF>+&AU}0y~8KYd%wTgR_R?5#9s?}88&qC$IY|GYRMens-gTpN8?9nDCHcf zHo$Hg;;Vp;kmSLl9?4N06kBFt8oT4puaS%pRfOrlkVopS41%3FO*M%SVf_ab6dP*D zc^EVF+Uke~% z7AUCM)F0%GSP94hTd|?yGNfv}mFs_vX(An!=BE&$gL8_dc{-hlR&1cDd^(Q>cQux{ zkPm{lhVBg7ALC}xq-$+25QPV&GyDLgw1!O3RRbI6Qd<{#??Wtf`8hwd>vI<-D&(4o34 z(H>1lH&#U3TFsEIIRD23P;Q7!mUFVrfWPTZ{tm1ekOt(gy>wvurKy!nN!7#0NZx+h zLsgV0fzLJK3d)HO|nn#aI;5<+{e0j?r?q_Ry2zEOJTl(W0BV z?r2MkHdOA;T9opRqnd-@X$-D;qErfP)8ov0MwL6ssnlG384h5kSsySN?J!kAwpNBrT&wsG@Ui%O0Pu8US7SlCURO*WsxZm`_XBlpbeu@ zRta%Hx~U^hqtlvCPP&4#8E+ij>WZqfHfTTg?x$D1UzC;xX{{8UGTvjhTxlVi)*2-$ zsKIVyY2L_LI~5|}+efMea#f_Kt6AZNi#Lwt3ODJzdm?RASg~yULz=xH74p?Bu8!2& zMr40f{Z3pBfsfCZfkLT$7^jid_aTM5ZV(iaJhSbdQJJFRtQE*RjZV;9c{y`l+iSCJ z=7&~iUb9qv5v$a2{M(wDbPDW&h}T_|NlRO0>J<1~^U6;z$c8T3Ih^?oYk4E_hc(D`O;8SvT^c=rh)RGM#Icsti?+RqzPSUVC;=sg#6S`9fG|Wo#n&q(|JZ`ilH9f^H(*{|C|e-h;J!b zc=>qpDeS^RSgxtf_}d^W$sw!b< zRqW@ARI=IW0tFp>!%g{Nnz&qTfEc2*;-@6+z6ia2E*vX~SX2I6X)KIA*vp-)&K{oG zda&f1d}4LsXU2+SW%h%-`Q4K2P|ZaNI<_-4;RFNF@d}Tc{qJv={JQY-<(hT+p{gpR zXQtVqOwQRcmaU=yHBK)~%vByvt^#VSH`B7r=d4Zh2W)eRQ`~9SeIU+fZlj9_kir_< zrs#J^zZLbid-mxCJj>sk4(|Ux*t1%*ql{!k#_U&HScWzJ=s1b9@4M8KP)ziWtDN=& zK^pPr{fgJh9-<^RZ2q9=ZbPJX7Gn7u0n1oIcPYY_mw^nR34kUVc_RuJBil(D2|FVK zHa*&Qr8(NYW6_-p>np0u3TvvXdvm73TDBUWs?+X2L)Z%eIjb^A3_1BGJ7uB)n-OdA zI_vK>Q`(kf10QqSlR^PAI#Ql&4Y;uNl94fxD~1tir7+x6M>bU@(M7D7C$s5x?;XN@Y*804jTbg zE{f+R@uINX<);hxph_$$2#Yr2xfRh{Bpb`SdRwJ3LLM3NE!qB#@U%7ojIa|LoiMvR z$>1JZOf$)3E5t!G)I2aNXGAYGb`$D`)U@b#-rHnd9 z^JyzX1Hg$kwGe(QOPZf+DYOF?EMu!X%H0p)7d8r(l_YtZ^gcC_9FBYGLkY;EdZ#;M z6_zwqB@ss{b1$N@nzPbkKcezKs+%!_kcz1rqDnlAxJ5?W zm4R&x3x~&aZo*5s4w5vMz}h%~v`XROCY(tt63nQx%`~~e#KJ?4WQoMlk0sKIJ@Sp9 zs?t7qfg)43IO-F)lG?%p?a8Uzz>1o|WWAPCvz3Y$xiTHCg8iJ+X*2OX$+6q2DpaA1 zWfnZY6C%saq&i2;9k?tjIidt7^hz?j+9}d5O~Y9uBLWY3p)U+Ut#SCR8>bqn??GIb z7Ak8c8*!VeMj~6uJ29V0#D_4VO{cTlI_k$Wkvlvy(vOmQ&b*H{X@*JyH<=iQ4*}9B z0F4Xdph=9TG>oI6vLL*vfGK1RF#%Y}>T1gy{VsFTsY0-yBRip*@4gr8p|_b$4M)mwQHIvdK{GEFrK5=KeC&%ED$HES)J4juL5nS>->(Q7^#&N z&XkBxOfJc4F0?%f$5MkLDowP)`ABhu%*syPYcUtQ^0FJ5u&SgO!`nOiYTnW-rZJbHo+d+(vOPpmln zC_B~3gm=&sh*SjZne6%#2@bOa@EqG*J?T@G>X_1$C8Bvj;*1JX1(BoCrMp*LMH3E*+oLam=)+SjEvGOt2 zWlJZztV^i38YI@PI~F-itDH3(mKvzdk)yj+7c@F+tedncgbh(T*;D&XFBt1FNxA?9 zf4#!bORN}JTm8Yh`Ydvd6=C(W+6-3|p+fa>JV?RKdAPJqk1g$3HDdcvRgkn@l~T}- zNm`4=(-|@R#=a{|(LHCae^i5seF)9k_N<@YxbW74{yP9zx zIbot3+ydF*cd6+vuI+{qd$LdbM%Nmi4T3zWJODoR^0`?&u{=g2bOb3OFbN((m@s++rCm$aVu2Wo```(=rW7!) zlZK;1kFee-)Y7Y|H4-;NP~X_(FsBN%_J@yz8}Q7uKdji0WXws%ORwB1ptC zoVH&dajnTL(+1@Lpr_HQQVmZin9rv3c|Na83nL9ftlP-U2_@^>=RjAfZ*-;y&LNaFMJ+C*6?Re`YNZqY%Gk}7hVVm9hE7D62rn;mhfk-WKm)GuDcvSSICbw^D+ zjLQBy9$oRnTxG7o!D3BsRN%EZ{U_tHikY&R4?~c|BV=i;wHX8YTIMR*(8?UFm)F#+ zt&MQI#)@jAe#8c39`=1S>N7~0m6)i0>o&JQ&062I(mT?tK%Knf1`3({2ixVuN`gQ* zlG{JZrH>G$<8ia#ZU=2uD@M!KI9eOqqVO`5fLRXeSD}m50);6h%o*_1JxoJi!LSKL z$g)GHYa&5j6+ax>G02$K?Q_+_@=I#lTIOp!IgQHEt1I6n7ReZvA+5iy+kR&Tbe`qo zpq6h|c1qM60~mrzjCI>X~EE%)2o(aPr~^(@SUh-r_7q; zJUEv0O0>PR{Z!;!Zr*6Tixjf&IdArE=!-@c1svBMyV?TSa;4Cr>}^GcN4d#U%uU;=yp2qfj&F4)XvYm!NNkKo4YPBmoOWcwU+L;~MhDpi$d&yBubG)YCHtL+FIugl z5B8+p{Pey~sG!ykD&2RqWS>bRT2~}I3rwW&LQ%n`F|AGfqT7u1hC+HSO88WhpF49K|pM1j{ybD#NHq2V2-A za8PzbcBs*)O3Cokoq2p1GTP5Xtk+Ui;g+>k(#}{vmJilCrKb_?M?BT5ZIQ{fyG<(n z*u^PO!dB42vK)qKs!s|(TNN6rfFV79q$RwdM=YL-<>dDLM*Pn%rNCkWL*O&332PNonF7@1e|G3FLONl@o-|Nt6&}!cy#u>AyhQ> zN-T_6`P6FR09AJMR2S>#R>M>zl5jL`jZnfPbzkxu>t1 zuniCU1YkY;qk6t&`6Coe64n-i8*zz4;@xR7@_;fg$h$o>2-*6lhTWXqovoEadNYO- z`|MpGdnilQ3w?tfQ3@TwiyB`8tKX^;p&2=%kNlbL2k?MD000;p`~v>~K;bZmOfCNg zfm&zma*vwuzCxTPtU@25mu~3&oqjE`nekUr8L8kLZ z{Zhq3lUJzGcs$aDEvCpUG+GSqO%S@mD3m(o=4oG#TBy~U1U~PFxmuv}TFu&TF1F0- zwCJ?zwIRpMC-RHrE}Kn?M056wBzk9esMEC>353HnRh45XdTK5PqqC&VaQh1l!ga!| z-!W6`rjsXe+|nx;Y;#uo38FJH@3A@S5K-11GYed~b>OAvMC=){Hoi5VznNqUr%skUi412jU zN)#=3UPN#LpFzBlo7%m^78<=aPxd><0JLx9PX;X(lS-q}&rB|%*6Up95Lx!s$j-!! zixFg7Q7T-xEp;7*DY+8$@i?p%oW)W)2sM7OzA!S^U`O_(9?#wIJ#gkLQDomavMhqh zgg~iy-jzA(Nxkwc?RNSHg{kGWSgX&fi@z7Gjf z7CdDvH3{wFt)m)K?1!^jUKuLgnbci2TvV(}bhEb}sjsZ~#iN9`&^4!fUbsc6ugB}P zKZv<(v_+ZTOXvj}wT=WsfiP|k2`SH%#1DJSRUIo%$5mrI!?93mwJTcma+h@>j>iFyat82b9H^f)Su0KaD>d|GC>wFJmiT9allUDv+zFlb)sdQeNPloGd;|4DPPUTP&TFog1LT(UMOEV0HUr)cn* zaY1*cag!j|0JR|TSaxk;pFB1AOkJuhAdNWOp2FI7)5~{LB*dvT<4&`Yar#;+kl(2j z=@VFSfK5sfj;Tb@#hwzMND6V+zohJ(+%m=~F|lx)1FTx1c`J3J^!7lP4x$+oQ*=qe zm`C^v4OGJ|Q6$9M#YqOWP+5>eEvNw>hcw{Pk(q5pz3`ApD()PbMJ=fEPBs=0-Q>C= zfMnWC9>qfziG#Z|M{U`pCmP#QLo7kgIyf&BvT0BxpN`6!8>PgyYND)MDhxf~lnF%g zBvOz|P_<|u*?drwaj`fA^u;B$0~_3OZvYP>TEo=(;v+$*HLR_5N9i#TR!qh}uH}Ku zsaqikI{#LUdMcSEH!>U|b0LnAB2IEn@7`kYeOsIO?&El+>$pGxG`VLpm>x`h%>Iy(v=T4ZD zpFW3`y{MLs&fc_ZrOt90({rgxSK}^NC~2uJ_Ox9OI-HkmCSSA^o3=rk!X@0OdWj8&Dc z#?*RJEyh)o;9aw>87=sj+Ho3g^47!ew$8@sITM#%`nDK$vSezdLhqIbR!5AoquZxS z?QTrB)uS^p2wbHljHZ1p4j(Zj@htHjjknZyHq<)+X-5OHcvgZ`BR!$fQbt5&}kH%%a|T54VmBt5xCRjA$j z&WFZSaFo*o#jTxF1QY&#W}Pt~Aa+S`h)nQN2qfx{RKyJkYJ>Lx1$M-T zq{;^xtdEA*V#>GfQ2;M$dJ9;^2H57WVr;KUfuxvVD;{#|ILzgIWMt@MWt7eYy3lG8 zjfE~%4Jd+Ss@&^FudNF9?rOYfT4Kzp1&_>KW>UtZW~S^6)C{0}tTO`ZWcjUnOk|Rz zue4_bj%LCZv)iItSs=1pj(e%b4v6@FCKnw(rYNNYUdoUXt-#E zHn!v(kIZnokT#Yopg&_Ozz`y21cburT9FLw-p`)quJS(Y_O1-_Qb}aJ?Y@4dJbH&B z-O94k&ZbI-v~mc#pD@x^=nktZ0*h)6Uqg~EBe3IzYX#`k&5T%2?ohO8n52Z{Y-a-! zDqhQn)Qd@a{YYjvWL|AB2%OPYZ7HNf3nude{9LN56bN|VhsG=^s*KS_WQ;10E}T_H zj!zH<|LZ*gNU%7jJ}xYTY-axIv0nP^xI&6reMvrZ&qB`TRMklmUkK*{ZF;GQ6i)2P z5~pxm%eMcF!cVLaCv9poXMB85>Z;5fl`g0}=_&wC=Cw{0AY>jqFzn6k{BkX}e2^3@ zX5zD~o@;^zE02s!ZSH#RMqE*bb&4GFi|low{Rk(jZ3py&Cbny*d?3WoWA6-D}*Y{j6E7FvR9x4 z>QUgJEkHS9n1uw$fhR7ct78c8h|?^NkQ#AJWMWX#ow45%CFlSSDB`212<;4zk>b;5B&lw^w(QK3FiOR+ z1W4|cAgXrv#D;o<2A9v^)i3(%%qX`4n1FL;#R8H(V^t_5*uW%i!_b=d=!$j*{{-aL zn~BIO@5ZPu5?t(T$VJGT%((r`i7<=1Aqk?(j^gW6nLKNl?T_9+?TsxPer zf(kxuj<|*>^UUcnLss0144`A@B+>5Q2}t@Q5SR`YgJe`Q6Jg zM$ID}g+^c|QNm`b<318%Das(`Xk|LlIxp)`*XC?&jNqQ_-j)j#;jw(iaz4SVU~DnD zJ4_fPvjDpZ?ELKQLgy+~&3QO0wKgmW^t1?Xg2;0%@}%(Kxsyu=2yoL&m|t;df^)Mw zbRk02c=$?A%gl>0@DjoW_I^_GI_hk_FcC(@X27x9i>~g`GxQ5yHkIJi`e zB+8mh^Ms!Z%E_?|+;FtZZ}!*>zFR3bRr5_9XoPyK#XYUsbL{xHEUu$Xr!;a*@#`@( zQ_~-+kgkmEG>^LIG+k7PKJu$Jp-0;P4Zm42s>`oY0*Yp2C=?|tFF9(vMy#%9t9ep1 z_HcD}yw$YC4dT=8meNyFIB0V|@LJsT+|=YaQ%sK?73fz)HBwV_w^dwB4LCN_2Sk&T zT+4|D&|3mE!j;Tc;xQ_-=@eAx`$zT19L!w;s)bz)TxfHzMoiHEa$Oj&GM%tVQH|je zRaH~dcRVbk64Rc#%V583fW>qE(kV-1MLf$QFGx`_H!TXlEixsjPNU)!YBm{S2*((( z9*2@ZoAjLq?Y9EWD1CL(@aB&HX$ZKrG`MDRq!n3P?QC^6Wnu7;I988E)<_`^V#ejc z64SFmC@)8C!7sMXWlzUE^?<*%66T8ST4tDaV$&*hESGM}0JR({ORBihYP@kE;Y^Ja z($=W*16K5~O(bVRbrcP~>ET`8xy zq-fzm@vhj>TD_M>CV}`LVf3p6Hje9&N>T`1P;8V2o=Bz`RdWRDNAR=)(yUcJy6K%K z@rZ)Vy?=XbUi8qMLJ3YS;}QQjKP4ZMC1c#zitBpp+K* zH&TAw!*LPxUb0K2gHDDvMPPW?X-y8}e#r`aPj0`8`%(!WMV0FIcppaM#P$^~OI3m5iPM@M-pbS$A5 zT?IOtH7-X_jTk`-GaFBJ?T_zIUQF|EE-g?{qag5lVmC*6xb0Gt8A`)@ zk+mrU4_9u)YW5YncksIKw??rJu!ze&CU^SB%+&?yYXIGQn)7y~Yh{ z5d9D<#Y?SoE5)2{N?Pp}e_P6T2lrQBP|sCpN@37hb8qY*xEVM_*wSiwjs%W@m>F=< zzaR{NRONM(Sg6Q|X)9>gB5z84DX%*V6%`4WA5~yjQA)5S%yfojW-q}&ci7OzNg=iw zJ5Vh}2?TViM=JTV%C+bJl-yC`SOM z^PLssHN;_z5njOuC8{`yI~8zdkozU^n|85vd>WHt)9BXfjA2MT(HI9VLT4uIYgH>q zTLs}S8V!;4c#9^HGm{+ndSEhpk%&;(cTgp^SNz#(It~D|1xXAP52Ub zWwSE#D6c!Ev0YV_q z=sY456NK3a%&XqF){Rbrxv;2Q<6B*(B0-7pc;*rMwOfNynn%2nZJ$PQdGXYE zP?&B;IG`bjifE&yYy&LrzYPO$^0n=fI=rvXgFd39Y$D9Rye-;d|G|x_X5_ZX`g-F& zYb-|DH7lbo=sv3|WbnX{GtSPnNrVc>Mu}pq_%ciTvlX;!>bml>4dTHUzwA>C<0~p# zmgu5!D`yHml2n%}FfsgS;3R7-VD>jIjA1G_kE5>y%MRQQ|3xqwIF-t;^Q^)tk>YNT zwNo_4qYl(V2z(uLStz2q zsXCK$nZC_j#(9~=*rlCB+R`R>q{>|?dxj;tyt}b=GQ2a_<(BlV)5xwS;@3y@CeF1& zu->g+?H!jXBv%tJeH>Oc3Qe|Jyd}3uP89=nyTz5v8^Nv0TJNI(- z3Y$v(Bh^Ky?kESk^;UB|NRODBxi|{Pn&XCKiXHqZ z($J5TVzf*|Ag!L{{K`r)--B#iww;C2LDCzkN3AXlv!;@P8Y%fgZCx}fMM}{KVK`%^ z9dMxqv`vTL`X4LV3ZAkcYg$=4BuBZ{!vxf!mJ>=u>MfN$qHpZQ43>!2+a1X#eWDPR0L#ip^mY)%@|X$YH_X=0WYJT zciJLRF_94omG?Nv-7)e}CkcA5!XpR{0+V@Y(6+cJ#Lbcd`6}zB9WevgcVg<{k;?$C zLDk-cmLc;#My-YvBl=j`%xXjjt+Y8?b`DvDM1N=vq?wW}ft( zP03cLFJ3c~M-^(PKAbyzFVrWi=7*R8f|+`Dis8 ztqOXRxB3=|;^}rWFlAjA*Mlh+qReh<-F!Rq9_to~Q-9^vi=27eHypKzf;HgM(1#-r zp4$>@sg69QIZGaAoezmJ%@!4!ZCA<7jg##9zoSY&JW5;8G|j=3(MHyV8e4?3)Fy*4 zBv$~dWY#J%;?&i|aObMrluZgg7TOy?bsA&XlTan7+{xKm&CO?&XYOVxdKpQf(ipRf za^ow@rpxVGH$so5C9|`nZ(N$SPm@W7UI!stkkddx3~b%UwJT{`do*_!Ual{=MJQu~ zrJRP2U8xg2e9P6?UCrSJQ*{p{AazT$(a@*EDg#Q6Il`ed)$hI~9^llJ7BW-%Pst1= zh~bo4!L;r_HaAgLX4+tpcCqEQxEo|z%{M@)l-^W%6LjuzCvLbT$-ya0Feh|Vt+e6p zUBwJRp-wG~7b6hQS#GfAlY67J#lp6WHtriAi0Q2qc=}W$7Rw~z*wu=n%1dO^`LaB!1mRFR%wQfT6F}DGHvPM?7CfarB1vVha+d%^BBJaZq$ezmPj_>HsY0~Zk zWod&)vDwUS!dhAXDC2bEl3YBdR$c6C+b>J&ZV7EAv5`x+5nV9bBGV~Jk&q$vkh0wB zm^3M9Mz#%G^wKv#IXu!JCueI@t}`|7h|V_c&##?=Q6&>qlF!!FM770TiDm@ME>{IN zpfPjbso<-|y>T-tls{ckkjN`jL(5QqBx%;%*Ote!r?2U0T^0#+Z!84t$eg$5GB1m@ zMhwl-`|+o`g$ra$s!X5Ux7(#_m+7j{L(>U9hcZ$Xu@#WiSH+aVwA+|tz1*|9HO)*s zF#Tit%^E|<#cp9&1W2%F8D$5sYe)s0LqOfIt1-AC}Wk@j%Sh#$?zahw) zXX$?bq6qn;SKI)CvZBt#nvT=m=hx;SMAwPMkLug{bJIEZ8hAFx)1{tp^k=L`qSXch z!*iToDT!a8`;5?^+MgLEf>g#_-Zm{x5Z1@urD=GA=ipWEM5_-Z?Z)KOYhL%tR?N?g zJuEiHr;2M2towu5xaVrI4;20>@JFfITPSF)#SX`dV1^3%U+b8z$r^m;TzY1H|3YLv zXQ-oRivtKGyk`!*1I+p_%vVXIDXWlNZt8T*K85M{HwB)T?=;-QT#As4M+X9vL{OeD zX#=Wyh9qJ(X*`|DGJdXNo6v~Q$S7k>0P*7biI4(@@CJ5kY}pWf0p;3FD3q=bR@Dh4 z`KBIB#;$FKCS(aR;tvY-1#Hsq%IV7piQ| ze(Q>XMx^8hP2vd(IP%xsKodbjbmDyX*+ zv5yj}g#!k+6cPCC4R;LAcvZ0L8!;Gu&>IX5GP)>~TZbOy&%FXJP}XLY_mC)w@&^xb zBt)yYY=Z{15B&9rLQ;$DsK-Rz5ROPNp0hGu&CsIrW!grks=En5YN9}QW8lstvW%(9 zfP=#0tt^EII;cf_)6lY*hw7v&{?6;vY8o znz}8(j4oD=a0-Cp4$A4|hs$U-g}}V;EeD6B=i{F7$VO18`oT)jDuyPth-^Knh~2|V z&20v=tm7a~R;_Bc5+xwAWWMRFR^f6`;E4poi0d^=EZ|7MRIoB`>gyy1?DnKY@`f=t z35@n|Lky2fOHKgFaoW4kP?-q0Cu91%kXoE9w1oz~XAivAESihts$fpmujX1}j=I6f zB!!FyY%sd8lUjK1w4G^*EAV>8@*p{ zkU)EMWhC;6Fw2_2&)qWO7TJ-mg7TXv67=Snu<!>uVCR~aG30M(9qg-r-`3i|BLLT1xeovQ|arv)I54A_XW^VHOIZ{nKEAVS3ceTU04 zw0!um!9NknPm(6ok#Otp+f=TmRdC3JEmJikF5jhQ$!s+nZGPlN(?Im_K@&LX#U~{X z9@z2UDDf{sRg}KtexU0V*^F|q)sXd0@bC0!=dxDWY;J|d|=$neOPlwV>@7oq{(4-YWwq!{?sWjSjqdo6}ZMBT26LL6Z z`yLd$;l^EE^DSBF5gqKrl?lMsiB}jkIL-CE_R>h=r2;ZchL?wu-!)w*&k-&xoDvQRWe&}s8$b}=*q!=P=6B5mj`9=%$Dka=T@ulohxNr z>X%nYl%Estnz82ckxWn`>ZoJxtt0WBgIF15FZ#fjZ-q0pJ&?^GP*-_Op?}P@i;%N` zbD~>?;7<`cRCPvX0>+-RF7ok%El*zLW%!N8z|;(5b*tTT?JIZ5(N(kEgi-Er^~Us9 zJ!Z_02Vel|L=S?@epd(Fo)ru>M!w}NcUk6YB=0KRB1)rF(PPXqYk0#qsi5X4dmpFh zU<@yJ=5pgvp*$CDjo49NxGGv~n90*Zku)u82jyLNgyXR31n^LtZLLs714dBUB(gzl zRV-Pf0ZGNl7j1`;S301l9d%4t<&$9+QLhe)3w*~b9n&uCvaG(su@Gr8vkzV38?=6jtsK?~N$zVcA84`Nfbc9>#8w4=U4Rt3t0)MNY=b zfMsuuj}Fn$nzzTa-bR8_kiAh54I?n|2aSgCkIA60>q=BjFEvcVMzMoAhfl8p-Y=%+ z62)d_T-Q;8TlHB%dIx@&H*ObacPsItXU_j~nRJv%XiEP@lN%^E9VPH_n~cWBg{7TL z%L;P66*5Ye2EJ8ps&Lnl5@yX~l{{0+#fOqo$Kym)V^5e?##twnVpv6#5iVk{@ouRa zmGxVKvOA!OwI#-+H_9c9D1NqYu=^_Q8TpFUQ&tW9Xxz z6>gX^d!wof%`1I@1#O?1C2ZO;0&{Dwu|KP5t2G4!qbAL)*OJA@p7{(gu1H@O(WQZz zwDD9&GSMHY&`SraoWr`?P;JM9xAI_S-ZaVaX%!)58rv1A!(QnZ6^3I@b2P2)EfpC~ zC+YVh$+f0%*-WFFlNHwRO8|pS*R4ggziL*j&xD(LFFdmHD-eYu2Vs)a_Z1~~ZBKH1 zvVAH`%?C?*|L!x8HL7$ki5AY%&?ksWd1BN1U{k1EYLKv^`nrM_1WgG1c=;m`Be8YnIts{K4zWvPlkdaAR}LV`{h+J5ZHD z>E$eWYP}~%lRLwISI-#A=rJ~st29#p<|Vl0kCilN@sIkirHAI#Xz?ex$|P8 z_n8u$RVJ@9)s>xZWiN;_8lUqkq9?UYr&iQ+eL0(rmDOUXjjM3WLeF6W0@GnBDcj#Lr*9_D!@lw-dZMNHQ585)k$02eXZU zaC==vPVWQorAtE*UJ(-VGKF8=j?JpI-_6p{wV_oGtJCf@qBQZpl~{_}n!t8!)nnDQ z^9W)Vf0E}_tr30G>SlZpHge9i!Lv8yh27d&XpvYw5)J&#qMLiWU2f0T;r0dKbvS}~ zYf%b0l5+K;l*??+0oP0gsih}bn+l<5i7`)NKhN;95nf%DAI3+6!#R=O2E_=Kr2-iG z(Y9e@zGsp4NK{#LV)Fung?K0)pH%Vy;apwanp2m zhnOa^l;;xe;~6fv-*(fVLIR(INJA<)+Pf8@f^A7}{Wmf3x#PxfR5aAZUo+;Nxg!>7 z;VTPa)D<%+m2)B|Mg5+~OCFHU&^l`?v9^05jbo)tixAAD!Ft^^2|&J9*gf|vLi$k4 z8nSU8S$cV;diZdzhKDrSG|CYgWiV)(a&#aM_z(aB0e`=r&`<;l3k88c;XnwK5CaQ; z#NtqBylxv0iACbDX$T522aLxf@W^z66%~iW;j&nSx(O4G%A-+vw7O>>g~lQ>nery$GMy*)1{Z`ZuSL_E6vhQc=k z$u`U@!o#^r8>G52ti#aWug%ij@IWgw=LIe4GE)FBYGerHrRt;7hBC;LET|=^^Klb3 zFpJ{TtZM4Q-MQ(CaG){m>!yyzj!N?PzD!(n%d^oS0?95AQr5b%ibJ0Ev$6BqqsA-z zR{6S(jEx#J@srl=IZ~_D60NJ0CcP>x^X!tl@HBZTy{Y^MEHje3*&!|s)1u@`DXOft zEze_grOmSJsWnbg`r{a@io>rZyE2p5{I}|}gzqLZ6b`$?(#nx5Pb`H8La&Ks9Ob4G zB53zY>->vII_x+FBu|S%uLZs9B-2whQjI-FNRnK(hOY1x_)!OE~MUZNHE5_*b2|^}LTq48QlZ{t3+^pq8a@YyoT^3iYB@azh z>|*xOKXhALB|EE&@hweHlt)?5ldQ3OzL!0X9#xk0*0a`D%si&NH-0fMM^=-iNY<3( zX2;?8rY7*dOQev}&<`SMSwXL*_WDxpL$`rl*&EAh)tM8`R9!KJ{{vwwmGO;6)EyO& z%vVi;aWlE>`IzXK{e7OO7TQj(<RCGPwg6ac*!fJ@7gO^$6PI=>P^vi63WxsZr~Z zhKdz&KDX>|99v9-aip;jsJwUDD@r=bY~8QK=tB^qGJNmpo)xCvikph1QAIh?H)O)@ zOe_F_?yVfY*w|+YX{dZ}Efl?mO4gmiHjfeMJ+SyP`3?C9C#eC>HbwkqVX_Qi#<3;0 z;v_zY!1yl?CBnC768%ckNNh%cfhrCpRwD8na@+IxO0-d(`uC~?@Dx*&4ZUbICP z^9&O;F3&Q$9cnU^IkUW+Po5Y00vi zka_U|r)4u~)45c_+AO~*JdC346)I7<1sc%Nv!w>+andTiN2XzlL9l^ipc4N{kPDS1 zq(wowlUq)a^Z%MqG0e@DMI|U(!&zuy46`DfUz_s?e{{ZRxQc^b4{_J5=6+ARM9xH( zayq7S^(HFj(%BU~L@72f(?ywA0uU=tZ8F-LAlj<5&x1UN4F*#$S&KC+`?^uE-YnY! za|;tW6^=8OHCwv_1|AJWCGr9)#Pz=~n;j8UE;a77*|A+^af6AD?X^NePJLskJy#~Z zBHF74?UAa~o9(uWxbaMs;ygG}D`n)sdD6Qn{nqbVq_**7G%Bd?` zfwF~a8Y-&D5u72Sl1AN61rXZJqvAUgo;|=Dt8^~8`hzIdgU0&k!m9);n^;KP*P8DU znQRxLb|TWu>qea2Qn0E|VZ#LSl9#cl} zj&@%xjO`t{*|mi(uFeHJVy_%_Q*>$9wc6Q`3#&D2$EpJ27H0+>BgHQ7?W*E>_SR>O z%1c+V7oWtc|0Zrx(=j1jn&b45v;J9lSM{5qm?sl-w9C;(G3!M{!B4Ei5YF<}&rie? zZ8B`p%GuXdY1Yu9%xJ{j;h9Hd1=F+>NZ8$N9t`G*^Geb1O08lvJ&cmb0dvU_$Z1vZpHu z_+Lco+|%+aoYYo=Rdz|uPc?$X%-Y1au634c($_<;DtMMh#T#ApK8&wA3dzm!+86RZ zXw0e*vtTVxVN)L3fobaapK8CML zSuV9+{x;Xm3TEV9MO%xC;I}8re+N7BQzIDSE+>tf-)dyhio`t-Xw@6tEHO!o$>Ll= zb6uHpGz#V(fpTU$+Zt!eYw&f43cOhot}C;>0(Gi0@w~x(5{jUUF)kWN=o%SqB*Hzs zGN~%z^c`|MD~m@PQ9u_v9W()MExX5|d;6V0&%DzGJ?afFQNyyUdXa1w54(q$5qmqT zeHAIO9|5MU;Lf88fIQ1oIB`xD)1WdEhN248BKk9);UzZmE}~+Fm77kedJd!dKSEis zAkm|(5=@xN855D6tt$61`YAVa|G+vwzDzWzN;DaYwmt(}CvfGWQGTwZIhNy1C(^#W z`avH&FQK^zK|(K)+7P@ejV)m~6furCinXaSRIxKZkKtt@bO({aOuX>*qNB#6Ga9`U zA3SpI8H48+gb_r1O~UC69Wm9dTPqh@GpJ-47>T__f)5gu9K}N4wR}#TBqJhg4heB4 zr4$xBd1AE^P7>>tJpu5p)LorHYnz$U9@}s?0^grQN5LwXl#}|!b3C_1VxS9zy&>sE zITeaAuEJs6pn^?Bc`G`rkHVpWl>}Ly zdq-3@zC&=Ms^qULd5_D5I}-brsEM(}h`@SQKY{GMG437n`7itgMm%Goj4&#J3?v%O zk%P3U(|VpF=txt0D_MFSi%z}sO*y#6;h#({{8S(EPF?5yVNFan5zqyh`3h|Oj3q2Y#i*nw^T2h(J zN+Rn5JDXDrTGOeBfxgI(zVSbrf_cQE=AzQ|M+440%x5COE~)%wtIJQL@vtFb)Sq;3 zsuInoOehapZXgVqL*!jUvm*(VUq|uEp-E&tN*SnwA)Vv6MYEkc=$8-y^&BfTEb@A~ zsZp|&x)PhGq}0-&6t_cTdou8ehss&78yU37-zEZ=zOr4iOL)m7$r!Oi5=l*#OKCxS zV9fKSAIxG!Y%jElCNx@cIGha;!GefOm6bxYzfQW<1f5}p_ORBiL8gngV z@t#2;lhR2ZG}gBp6(5PgKGNTmJcc7vG*Gik&Vx@YffSO19T0hfNX;d(TECNP%1|Sh zG23TEr&9ftxs1mr4f}BJ2M*uOvk4SEL-b6PA4ubj z4%+R-cJNpa61L})k*4?{TW(bZ?il0dG_ z6E39uK}q%)1JnMVUv_u`rQVT)JJEA*o zO4Wp*QP8c#YOjMzS0Iw5BV8Jmnl2P`JzQ-_Y89=b9>w(gFw=VzO!qb8ms$izJQ3y& z)OS}hJ}U|Kr-ReAY#vstYgsz|n>%f*Bp0&z)T^DaJ9FsJse0P9#LiibRojP-1qV1q zU&J+Kra_jtEDF^UMY+lwIh7>YWaBkKjGntX+J%av1h`B2G%6iDA|!o3g4`)ICen2f zK;@CdNte={Dlmz?%fwJEy|z=l(>D9E+cQ%$5v&f83&&}s13cTY>dTd8(gj-6x%yr!p@#{Cyc)f!E@~PGvpWQqHGB z5I+eq*4aiq>D`F9+g{QYSPj%g3h><7fT1DiQ#&Y4(QH4YAE!ZZINe&^VXZG=Tr1en zzzsVtdlC*5?2ugNO1Zv~Lh`~5tS(hW*h`N&i`J60RtyN7sqz1gNVB@7tFj$uU^94{ zJ@+WG`HB$Y2f=nNYL-9bJszApQ*>!N<94)==Q>1|pY$(T9FEHK1Ic`PN~%^ZdX~Ps z0>F`4!QElBT1+#69>@I7L&Qzq*{ci8iW%H|JVF6pgec4-9ne+tO|+BG)j?vmA{>KC ziX*+s-99f92TNovU-R|E!(XD4Dq`*T#*5_6!YWs8eq*eQIhRsNE%L!5Mf|pW z49@m~)lsXVJtZSyz(%3uDdL$jI|)yMgrVe<90Xh#-c~*4K3%GzLv!FwCV!JOTj#w` zAk|`??ANcT^HJ$hTgcK}>_N67a6S~%u^oawJPovMjybWl(e_2g(S+ZH=$Q=gXlwl1 z{d7J?nCc;LS7xEPc1B4Ri|8De(;L9KW`Ve4bxCqgWt{F$m1YZ4Db4gRS@BG>!xzsQ z8&BHeSG^WOA%GMKf-?f9*>$98zLi&c?-w)5lkBjvL=#W)Awg1ZpyjbD`z26m*a|#I zDb8}>k`}20(=~J7?2SpmD=Nq>&z3yprY)ir`<<9wJuq38O1+mxyqahvO3ytP(o(EU zd^a@eYwD!$&QX-EO-3Jd9?Q1LB;K$s6FFfV%4oI3kYjecwJzwAhiHva%!O$^l&I`_ zI4G17CaygeUb-vd%~4hQnYk0NVN|ed}Y{H#KWw;u5p$)9ZS&@zMRJJ8GI^M zq3-8dRUchjaHZ2LgeqilO)5yVIh18qQT4-xNjWJ?rLGO#P7NJ7;HVuvHJ1CA*`{7` zqD~Nd(LP02iQLn!iNd_WwhQ+^K#@iIw;M&ryWwmbv_#pD7$Fpb)#19L3dlI7QCd9_ z+6d$EVQXh|3oeCfrSs!)dFbO}w&p~)!h9Rc`D`mR=|GLnW=Q5b5ZaLEBDZ?VTsH`) z6Io(1-x`pFCK9#Q-sq_kf7p_j8P!xTnG#H<>ekJxCk2*7^9H#Q6HF|HL#tuUgRqWlPa7SJ0?mLxdE^fhO zP3AjRix{SJr0_ZbbK=|R!|U%1JRYN69CAC8Bt|{71DcNO>M;(}yxLVB06Rd$zu{6$ z@K!Yy*-@BT0R@RCV9YI)CC43eI}kidf}`(Owgv~9{tNZq5#(Yz>wV0#&xg|U-di%% zs)RhTqBdE27+V&!roWJt`Km$yrJ*~P_Lo=p5+YLu5>w)DnlpEsE8`oA*yXz~S5;(L zZ*>`g3&~R8(nX+F_6?p@X6eEM1L!*tKf-EHIyf zPZ)w+CC;j(qO?ZL?(3p}U*`a0-rrg-Qw+dOi-_C)60q{#WO&U}7A(!F&g7R95D zJy&@9LhsoGS}Xf9(>VoPCJ0?gn$cZ?788nJ|A8ch&g&8iGd#te4ddO@F)cF<#;ab~ z?$SAbL>SufD@rJ`g`D%X0VbjA)C&jR#4%w$*;EJ5ncptC9Znpl9Y#)x(Se4~>bKAv zM(h0WLBWLA-D5V<3N}%kEzY%1Rz-7$#58*f6clc$t=~s&0P@Fg&u3BU3`okB(YQN@ zc>@)!AC;_h_h0H2-up0BCs45Y8+P(1EMI7d00aR4e}DimcqA4D34_3Z5NIq$9|nX& z;6NArItdMiLE>;YBw8N{i$tQ)=p3d`3y{JgQphZ>TN9W_y zoI$3NIxOBZJEKWw5qQj+ITL~ar4k8zk{ch2Mj|iw^=_X)l|}0jO9Z~XXq`qNb9$sY zQ9Pc|qxHEQt^EFlQZ9AaWg075n#%7stR%)YZI0USH9ADf?U0(>E)z-wCYN5GV`KP? z?NXa@m`gw)ENuG$jJL!rwRj!wDImOC<&>;7B6*OkQl|E8Rf|cSyWqFGel0>veAVXo zIh)@))tA=U;(#dya*1@?TK5&q_Ug@t%yB0@Dm51|sh9R@(#|hGQGLnHyMIXDyN_=4 zO`-|&V357+`_!wv&k`1YAj-1{?Ker_1qi4sN;0mo>SNaSwb0ZM$1*AcVF;mW5|sC` zN;^#tI#FA;^0ce$0EwSR$?)(jYO=V|wNcD-6ub%hit9%!`_kF6FSJJyMG@psjmHf- zH6Y1}5@_y6@|<|GN{Vbw(8-IWKhBS~OSHt%H%UAREK5?vf~T}{%+#tsEfXBG zE=$b0AQ}0?R^89ZbP&4G-^wIOQD^DozN6_Dp2p?Hayb@G|}9fBVsB3 zA&JYXO#6n;RO~Txyf~zLhbgu0MRZgxZeey^b-d4H&r%i5HmkNwcG|#;RN*&Qn3jh+ zJbEmLn$;BiZ0=jvU0YDc*=3cPOjNZ0Ls^=ZJ(|cD(>X;-b)|&Y#Oz*AL1J$8BP!h5 z4wb0amM(g-+^xHXbxe9+ZcUdHi<2%w0ES z5m7L`KXB^7+t!eqLcf!H!(4~aG?}+9-yKnHLh6aLJ|`A|pP5iUE-A@2cGl=tvokNv z9aX$Xw!#|IU~Q_6Zag>8>fdt9X)fJcq4-k@-(lo<%^9-5W6tqj5)Lznh|NAU)|4J= zT7pWo+Zlth=E_Q{TT0=ZyOcEQ*ecUosWttU$B^;P>CZ%MV6V1xq)Z|-ENV}JEi32* z{nhjsSxt<)M3yqaoU<`V>20a5*sh4f=$~3)4pw5?h@h_0^#y`?j@>*+gmFogWFEg^f&>H_Xas?bJm4tLw zdfb@JM5&P{w!Rqi&X94*J-O!C!3ZJ>i|FW}xI(nVTH#umat*akDd1rrnt>`w!P-Ps zXD3|~l_2L~>`3KQ;LJM!k|v$fMP!DK4q*pTvo+bYNPQTNp*%)|+^872vPIuJ$Xo1@ zVizL^1y9+YRR+}dAqW_}iwygOu?dq%BUct8Bm0DndP%uPy836*4?FLETNZR;j7_9j zRq{4vq$djrP{bu6P}Ur;MaGxT{E1?VNwzz+471kJ9$Qn;svN=-AYoL+S+S0rNGiQr zo?C2P1cq{(BXa-Ts~Vb9u)nMp?;9qQ&~eBZv71P#NSp!(ZPRKHDh3?3X5#g0E{M<( zlo-hh5-Ef8j;5Td?=BJpqp3y+;zu;^PE(9JKg?APo>|>d4rxX-63RF;19X`>FpdY>9MyP>Ft8o9nGX#6x>egY7-_abYVBRqbrUsk zoVAe&jo9TB?#!xOw`T`#`sETz(BE4sLzPuDs0&*%a5W^x6!w-?_5ZZ?@`=s zo!c3zt{blHa7_2T34#^v8F=P!!>=c`$@dha69dgsCP~Pu2UduIB^g{+xjGhs?H#i_ z^UGzCPWAxeTav{ols$OTmb01-2e1;AC34L_cHWnnOwYS5rp`Td+8HgxI@>A-bA z5YKtDMAM6>rz91@>Sq~Y?&U5^U9?d+Ai^roY|@b88oOl_Zg13z?U;H95AZ+zCn64$=QG;^N~PuG_h-JW=T zqe>>xTDm`$kSf?$?tKeA+K1Mc9V${O3yFM0=+!Kuct&~O3LI@CQ|j71$uG8+*!~l) z5~C^2%`qDOriu9oNH;95)eo-Isga42Vtpyh5%rR~U_F8Yf?q>HBHuS}4BLxhVg zf@WzxUMx)hC@k3m;=rv91ui7xuzZ3DcGWDxAWQ^yX;PLgtv z=#uGzF(@=k?xa{T1fwTzaR#n-h{(_+uxBt%&yR}(>k)IT$tky{texNM(`y({CuR@N&(H zveBiyA*=Gz2dFFM9>s*Bn=xGlEzV#EhUl@faqz_D4&>qx?w3f;&#frc5$ts)y(C4d zp9ygX1$4ZIjC!#12x{v3WDgI=?uX7x1>_WjM>trGP_V9J5iIKlC<;JeWeC(p!tEn?I% zNgU`T(NMIPGCK9;FA}EUUae+wGM3$KtkTHF`ih$`Y`jDeoKewMd(j+K=-`*CJhpGi z5X_355-kGJM#oEQAPW9kZv!s^CYp;0Ah9~ma?=RKPbkTNO{aqw%JU-2lLrV;4zNy$5R_?=6#9~y!i=#Zz-c(kU*o<^z3LwlWio8wW#d4aYu8@n;lXrjgz)Bc z-V!*83SO%a1eB1@U2+n)>Do`^B{cB87mhVDXGk&e4GS!9Gm={AWGre-w%TG;z)ZU1 zZiO&H9!6wqAMMoMk{CmRv_}aFeCtON%o>aDzZpl(HFNT1 zm~^7*Z2;CO`bxqPHbbs}3rK}4MCIbcG)t9gyzN+ z$q@4dER#PP(rhi00Wd>MH4RGe<{2|@rt3|@BL&F5R4FU3PXG`&lIY^?5`g>=pohsK zej*gIW~kKSvp2E!q?9b$^Yt{+BN42Yi0-If?-DXnt|SvhG^%=;=q^r)t{isH0U6e7Vc{ zV3N5{jzD@e7<%j(1PVTs&BC28s&G=wJ}%t}jRs}&|5??T`>FQisKa9C>u2w*d``}5 zbD;RrJZ;TdUeTPi^mi)Of`7%YAkA$il*-`tGapQ1vP;14P7KmbpImkAQ8FOgHnD7W z>ZK`cMe_k|6vl?+BBeG6@NdwziW6P3+S7+b;kMY2?lQxNJg`(~#B)rEPA>BUlH$}U zLvDO-CVYntJoZ-JGQCkYzaKXO{;uXjwp7}(%_*?R{Kd}pk!28Qn`E^{+%Pi5 z51URS>S=VdY4V>6gK;pH?5C?Ea8D(7q;!?muW+y15fn)=_cW*z?QN_s`pQ67jEgHX z_gdz?I5c|mi&(>`xUj0(8xC1Tl&F;UD!t15=}K1g=ItfwaX?32xbuRFQl(>e8Ak4i zRgrx-)PVqu=4CS18cF&j6%dvUk36N3Iti>@>Q-7NF$*wEf|55e?Ex~?TJOo^vG%=s z)OC5R^=&QsT~cb_Y*S)M-lW$CqE9^w3Og-TOw4neNQGqBizZI34H!2{oyvb~4k$3A z7fudf&{FDZA~`7(stHnf;vHnGPcg5+44I>RyPXAkWr*&A1;?~ zNgpXTdWo%lc9gvK5l%Jc2|K81TShSC>lX@Slp)kJ9{2NkhGcBW!DFZ*j*d*(aBeqh zp)0vb4=!jjC2dVA+;M2K+mZmpCf@)r#;xg7HdJ4abrhxxK{LyhJkfY*BidWA3}uc+ zY)rzeat9ZcL4C9^Kzhl5~h6Fu_8u4oWlnmP|)x9DPeh1Pmh}?58YM9u$C83 zddmB6EBR=xl;1Ca`nCyY8Ze&2wQuZ6Gz5fn$Tq#xO+nZk%4mXIt*2rc=7CKDzr!aD zxQ42kZ5jDXpGe_I$jKQ~VJ7qFj))SvCXUjXy&CIwgm_r(7eTK9nC9sXd1aIz==IHLu9MP?kBiG=wJ83~YYb+XEeHf=*9qDRsYh2+eG{ z*Q#9sKtJ5IbdIx&!X~E zMXF?U&B|bV$&b=tkozpp(J6$NwR7@R>DL86mk7tgW{HTdN6GWQM)Jcu0#{j^Fy{ZC zMLaUF?Wx(nj2Tg9^Cd*k-&Bv9sM`TKd*Ku3c570(Vh>RNbhlO~(WWrKZp~Y$2qNo( z3cxk#DDs)AGBFA1zcuB7MEFx=XbzGtZJUSrkGQAX{nnYg@z8!J(lu|Wk8M@;As zzvIJ(op7rx8hpHSY88=2WWJ%R60nav?p5!9+1;>u=BHGP%h~vh#%)cR@gprf!a6*g zdVhAe_nYs!013_A5{H3z=*&fea4oSHHl1k8bkoXVOP3Esk5N}gN^!+#mAO%=c3*(7 z9lzECF#Vyg7CD7Y`Ed0DXFdT49U$Y$&fPWUrAzNT+AEhxWq1VgqN(#zeE(C&EZ<0$ z$8!A_1kY8>AB^^wYTSjoz4K6bK>IMKeeEsSkRzs4tW9m2vC!iUNq9wFzg51csZhXW zI^2Ie%79O`GbbMdt#6TUJd@59N0dU&6Eaaqjc)A!ST^TEbp@6BjBoO3#dL`Gc>>x` z62?qVNlHS>9|q+DDE~$cWJc@6xHNk?2sn1vwfsuv8=87;YNT?qITt)jH=(qxFEn`6 z&dOZvpACW%8`6e%?)OO%y$?f{$24tWsOP~i(EdodTflS=w+IclhySkDdVkngiFnOe z+Mzvr_65 z$o-D9M~6%x^J&GxyAzYpuMv6NZi|8eMyYrT6*mcdrAhD>+$0CasfD?l=j9HkiIJYxxl< zE*g%*L22Up*S2p9?+`+WY%K684AXfTys9*2*0*YV8rnp#TK4R)Yg(qLz7NxMtwB(P zi613V0=ln1va}Y0E()s?E~G5%UYR|Lbi~O;s|6s^<>B@sGM zi=>S|Lia<FBq%P5DU@S`HKUNZx(t>SDH zZt6C+%*hhuIBWp{y?GSQ*u1EF-D1w~OrtGSxJ`RTMyShKUs$P&xUC3z@P&cN#0nzti`>H77a&953<82B5&krt=caf?U-ON z?q8)jQGQWv>FymUzx8sw`f{|hfVPJ4>>IK zdp94R=yxM?6-ySXm8W@GY&ugSE5+}=vgsh$c4S@2ywxT4omF1r z+kjd1gmulUo}cQ>v^2MEoCbpQ zU0h~%3~~9Q<%01R+#xlstv|LnYW`q*EIBTP+cnkrYue*kjAsGQI5uL9*@^9f5IIen zrf#IoL#I5Dh4d=eSr}M@s$Px;2SB(axmcQvj}l50z{vW~lp@QBM{TG&C^nj$T%k${ zV79}!)d>ru`z9@xJV0o$y;l3wQ_30qKSL1O4uqU!z$kFq_KyYD`UV$d7ZjZ9F@rNv14 zjL9SZT_-*EDG9vbn90acDUlU5Sl(qCQ@oqA!IMa-xT#Vp={E4LFg%mPIaw-!bZ#|Q zrY5eq<(o@YsyYU|xsZ;gJO*+{REkb`69LK7Wka&Y1-7;aBa%FTUNChmy%TzL)B}EK zay@cGmR5pH(&0C;rIf6vN~Wo7(>RSGEl_jR-szI>T+@(~x5v6p3Bik6@YLt6YROG& z5CDsi`8qrL+W!tD%z!SG^G!BW04U>+uH?<^D>Z7EWIQ%~N({8Y)5f1BOgf=$9u}>b zHi4G}R&9{L__9~;29xcce1=}cS)vAsWJ6W2KvgS2vZ_vx??P|ay`i=*q=)=ptWQue@ybbQrwAS zpTs$QRkH%36nS2hZW1|8X<~R$jZc*)9U{ZJ14))tA9~GQ{UkVSX&4k_IkV1^IBA1I zsnWk+&iS9ul{9x;NjY&Xd9=wC0e^`dI74MU*i5N+amvEzZA>C@OjbjCjjk4y^@9kc z1FT)-T}N=N2KTt!K>#g%r^jSqN5E{=yAN?WN%o_o!zQY<$|s%wPmSOc34xG(c-1` zR#kGou~=svIA#9}T1EnIv=MAPYcZk>d8>CgS!umIxucUhi@<2*<+@2fSm;Uph>=23 z$;ecRGXq>mCyg?)`8k9|T=KB?;P>&lmKhDOkIZNAoU7!73j9KopO7x$J(z8fU z>h`1H^9_b9R)e0pa{nBNibnDIK{SuKXC%6NeGkJwEbcjjq2@tD6Jhkdo8A8FtX};P z#AKmM?n-H$18)@?BZ(}}6waO-B~P|3YRKXfLIlSn;pSn`+A|GeIUxv=bd2PRZz{kP zF~br|GjisqNaI!Qf7g=p&`-V#vgW%mswwBrEk`}({9Bn=7CEjE;$zhPeB1caIL~il z#q~|VUbpsRir2GoUvfXNw!Vhb&S{d)TtA4q^In=+F<2jdPR6iJ;Dm+xF(q_q+%S>S zWLLSX@8&NG_>m^hSL;4ho5Y)|>6n3wCp^9D=^U72#KD+W^TYJlA@08)reyOUYmA+% zJjU;fCnalcdND7PLiHpM>7PL)CZrj9>F~2EnfWzU+B*|z+ilkzlDTQ%cRYK)-JzHC zc`{x(^gi#ZJoC zDGI^n!+@$AilfM*(Bq2Cy^`6H6$wlZX;HXSC8rpasNx!)Yb>XNjkSAc2%{*q^DB=M zdz6UnKS4y4i?+8(+dfl1y;DJpd;5pjeJm)>9SLqS>xG}Fi!U+M7LhuhN*^I8%Duyi z5F@}F0(v>n<)+e=p;?s(iwqMm+zomhAQ|y5dAvaJ&op!jpb_o1`;sc@?x=Dt78Du0 zE7d})1dgL1uNecsx=y>vm@@iaC&ARJOK!7LY(Fv~56Qii+Y60Z?`u~7FqbHg3c!Z$i@r!IOz8^QoNcSSIsaLTMouV%MfoW(~7Rv|HpR0K1aY6C@zMJhWJ| zSd=rPU@IgRGdpRi%FMR&=DyRInV^B20r(~%bu-iILZG)M#8C^F!>b%mHbJc|%u%U= zYC}NK#0pBqRAr;O7?KK9BpL`n0o5TnVjs*w49N4gi$IcMGODC=zH?9zBEB({Ju^ZN zM&b&`Oa?xX!n>fniDV*0+1a!LDYi1A#H#%*x?i5l;~3+1NE9WX!SEhDQ6W-NNL*nu zS#KnG(Z2*{s6quZaz!qjB(TZ5xQo`P6G)Y`A2M`Js9cz|F-bxDRF~4p5fqz4Br2~7 z^5kc(L*@ztyn^(Nrbwt_P*qHsdlnG9(gJd0#Y+cPaW zbge?`NP@~lduSFaBrj2~O3T=w8xSah*{RCeEc(_LWCSNfBAj|SJamr21L4F%x|YG6 z%QMFh+49UtgGQS$Dx7*7IQbon)(%kwD7i~U(on}_!$a};ncKaagGH!pybqd@Kq^kd za}u|7Lc+sUxg43ZViw1gB)^oHB+;3=xY|pKHm3_}tL$4&>e@Pi?8i~6#=5Ghk(oAI z=F4k?JtG%LbpX#)*)7Vycs&#H!=*hQV9H(v1gfLWu2qqPT`@oBjO3N@144V4?_*aGV7q?EKwO2BkVp5 zOD>Y*v^{Ix$GFE7xrsI*FOzdo)6Dju;odleamJ(LGYwF`3C)=y-#tOss2vo)WU(D| zB{YQDwFsoH`L>7@@0`+Zy&-N;Yc`ZpUtMdCw0lXxr)Yqa?jvfH=PY!NqUq9D5Y zqXkhsOZhXA7D*zkJ%kXt!s*RK4Jdp_nNi8iv(wXyb=2G6tXVpi`wT)c^OexkRLqo2 z$>3RRg1JH2S;H&V{U4Sb&C~l#SptNg9HY^ZPRc;EF2seIbQ#b+XF_CR5nTCBG+Z(b zEvU&?AO#4o+JL0%l}`Y$)%3`|6hx8hPuerRNBf~OjA0^Lg2Ke)$5Jb~+_$o6M$==c z8QN{r1X{;T7^x$8n`_58netUI+?IpEC(LlXf>Xy2UV8dm36j zeOFU+9;s?IySEamTBlW8t!*;6(q4%E3{XtE<4HW5i0N-L8Wb#v_QZjM6YguCL^~&^-;q zX??EAjm(@wMg?gpW&||KVxK%hG~L)J0f3PVt1e~d#SGZ7i(RFpo=@70S#j63t^k^3 zo7NKDGEzd`W8=T5`d)&kx-++_1#u&=l$`^-wNV|nEDff#iK$7qIyG_F*}TLoIJ?A8 zmD~v<%9M@#;3CWwT?C_EtxREqJjHc_t8ME)nvb+8A*Ug)#=6H@R71cCA>2W?9bF~M z*)K7?p`h$T%2Np)vrt*3;6Ao5B>T=$WKLK15#vgOpOYclF#H>u#yyL)%R^mFqJ%LE z{aqEJQUa>K-GC7G7dRQIj%1!u+LD_}E<6#fRw?q&_<}&mRI11UIfElnTJ1VpjY<7V zD0#1u!+Z=JCEk^>CTp)@+{%$!?VK`0OiKXaOg5jDqQ4B0L%UgHW%L)kOhR?=l}++t zQ1{HNw+i$ExXM1bDsek-g~2F%u#-w+S~^p*H^VGxV+8Q4^r;jgOv)l{7bSaGT7Dp! zKUssv!TVWJv?D{V49<&JD6Ie~t`(RhqP%35RjN%$dkwjZimnK&(MEw6hEp;PkmHh= z(Hsj^Q@gSo!V|PzJh6wTdY+P@Qy0RlD|~?yIpn}Q7{io;3!vtqeHFIdt4`WR!s>}r z*$bNu{$AT}twbo=lYfk|v}ZN5L2Z7<%m<+Z)M1s6L%IaVvL4rE#U=tpp$z0KY?j7# ztj}{I9SspoY~Ev}IAN+pIgBWglU1WbNVr&tCDFwn3H`hS1(8h(Y7)*R-aD!A>nV)# zk0fZo;bq7(SL`l~!~yK$bhR7^za-Ro>%==D6P(gSBq$wOu_8WA(xXF+YfmAP*{pKh zF!3}z(z)gIyzLE690qJ10a@|$S#-&!)>Bo9jb4dq?62&ikfV&tqtQ?;$}FF zu^BziCSIhd0@Z*HPcW;4WZYI6#&y5*M8j1OKAGR`+uBTg`$DnoJwfGHXcdI>>hVreaSLYTlr#VA!;$jzENEk^#7 z=CbINWuYyRZa)aK_FW2)PZ^Xo?0HfD&VqnWCn ziJlBJB9_U`1B^@d#p^!)>m6w9XBW^*JW*wHTN~b31+ujib(2o3ZPqkNdA~XnRnAL} zn~YbeZV66$oum&4w5h^s3FnrK=G`O1^2K9V{PY+m(p(nH$e~lMxdcWwQEaUYC+WV; zhY<+lwpQ9(DbAtP^s6NHUSp%%A2bHmbmv-zv$QSEOy2oI1bE*)(Q4sQO)?y=gPbph z!lt}U?8`>6>88#3?v^7_-5OQJB5|6#U3$DWrT@|8tF>JStTP$>!51+!mTqrPRxAI^uS~eH&adOsuc6jwG}fvN)02A z%oH8I7AZ%&yFz0znBix2bK5xUi@%#_GLlwODd|rj_`}*np`}FhAaKgV&+hAq|9z2q4R%M_sW*Hfy>2rnXqGgD< z^;p*($6w@lU!3a{5*!?Bki1Pr{cb)F(E8%MUh?*F=8PY^v$nCG<|6U&B~|Ydud8$W zTXzOBjq-lIW-<+9A7w>ImHrCEv!-HXP}5eqeZ4N$G9kMG=^@W2%Q;JT2hDilJJYQx zN8}*yf`eMQp-w7G)KMvOZ6{vx8X*gaL7~w2 zY+?lkfkt7_cs!0L1CdA~l1OAaGc1tCq_HUMGFcj$0HU&p6wV(wi$Wxjs66&nJ)q2> zw76t`EgqH7r_nkz7F#=!Nn&y6jar*tnpA1A_^oawK#R;I@k#x%i)*i1X>$8znuSEK zQEu`_^biFdjsP#TI2}F>f22&U^XnA8%Uhe!arGOfQe|eg$*h;GP3o-|kWwUZOHB@I zi_y?%nHgqkk${luV>V399`~co>NGXn{C)j4+(I_G$c3(Pw%SpovfX9s-ASQt<5>uO zGo8=1#CRB8?{azC#Zz}znwOI2&b;dSaNhq;fs(^p?;Y&tzr}@|Wqa5e=2B|FCJa)# zp0({0uFI>c`oPd9?CY@bw9i~1?<+0>z>78QlUDFPO_R!*x(`DNx;n}-s^Tv0tVZEM zX}j3MKM@=@_q{QSwE!+poEZi~3aaA?L+pxN$3@P2BIPe`OaA1(%nc?;~tCd~MKn_!b(vIatj1oU(Zf1=n~yHse)B zv`-NfX}x2P%F(Nrd5v!qEQbFn&nB4raGVQUXz}|8TeshKc4_6at}}~iEGm8_v)(?B z*z?&{hr=V-dzSQfTGK*s2vo~C7bbnn%41+Hi3A@t!q}3^b8M(hP`$@^SRIoUDJFsN zuol{OTZ2Y;g|&G&l@_x~V%KL%8LzCEOyLrA7Fb;T7U+5wJ2Bv2N3~Oe=behLgvp0^OQu08NUO}GaJ=-w;%Fpc!qKDa3#nE6OBXr;xk_O5u+N?1bY6vidz zrk|b*LrjuI3#_*)pqUglknc^~pNE8f6fy;Wq?n~W=C0--yeE87__QaPHqp{_41!Ml z+`vV(gXQs${m4<8y~4Xp$tt^!o)C!ofWX`Y6Rnc`86qto4NOeG+qWcegeQ~P&wIa!>wPbOKBKyvM&HAM+PbQ?3~bgZeL%}2gm zS=x$#GA+oZlz7}toI!@v1u9Aj9Nte8WP8$PC6xH-K@$YzG1O)KPg#_;P5m2ki4`L? z>4_m$%BejrqHVhM(4`^F&yLTEh$}Y8|4+>Mp$WbVJGX45(>mRXvnBs52NuvEJB3u} zh7p~)hdp2Ps5t~JhA(L}fnD)-p^M^CR0wu#XIu=7kXBtFSsPBI{7HCip_C=GwHh46 ze5Fs(iMT{H5*egEh*L?E9vY6~U?i=1lj?oD2Hc(?1ND`VA{WYsdVFDvO0AIn(KD2d zNTlrdjSV4$q)AB(W0Z!dzyXF(s9{765@29$UQZMSumg0ISiwg2&Jm75WjNv@!yscnSW4174e~-3b91n8oeoKP9O9M|>RdV89 zDDLmE1=U~~U0QVu%@oPwNL33RET&WzV_GUlbcs8sWRUXD)fv#E>b*d;C?4&-C{qbz zI%AiKV#}rzMCT~&mVjr~X`jdegp~!LPHd3lOvvLBp;g$073A{J1_HH=30O+c)s)D` z=7&$II)q1tgro9eM)AVbG7{=drP~m992-i*C{GqU)_o42tQ?&0X;Qh1^6;T^HlPz~ z1kp3wf+#&?KL#OqT;$)^_Ydh7SyEW8#ZQh#b`<^VW#v-#8ve^7B|z>dh~zeT_*=eHc^u-v@Lu zX?GQt@99N_e$rFpA`WtZUe&E#HilD>%QnE!bfFzsb3xC|%Wz`)gTNfL_E*v~K@vJL z+Z{9xoz|mRRtS~L2u?b?^&S377%;n3ljY_z7o!naX&Q02BVDW&4fAHeR~V5AjMh$k zDBUZGTV~$4=LCglN!8WJ+scxNR}r_U?XjAfQ=G7R%4EsRnqu3!;CORF9jh%v_Cg;! zvR6>39r>PIGB~CQ)m1)f`Pq1rG=b-_^knF(mQhCIVp*@i&fK$B)a*EXbfW^pHY2Rw zf;TsvGL)-)!5x}o%~}*Fm!pRZC9kKP*eU;w$Ud2vXXQG;1P(#=e3WU+$F5`*ml|ol zW@y;WH+sG!Yu~HSp6EA|&C-eMZf&?BKDTrKM}2eUt^K>jI8uiu@|S1Y=x=iCuwISI{$#9{p<`~y24=0V9NMiR1*Qny%lyp+Wcg35 zRIo6IO>Ri#EX6FCo)CUBf_5K^tgZ=QkE-O`5%3^rt}N;)ZI;W{+(m*((;S zMRJI(j#i|+=7L*IIsVuYtuI%HO_Gn~%&qDlZ+Ci&2LB{NRq_lf#nGM8h zu?iZ5X&g)D__9LKij3;c(7edPY~;#-v&Iy#V{|$tqFS+t^3v(I{M0)7hlIN7f zh}c6UDC!Zydhh60E1L|bZbXL^S&ztsG02ne+|J0p){&}7YG}>S{%p<^SqjQ6r5=|f zn1Urxd@7`b!tBNE?5E98x(&3v2~c<|Ue#z0^$#-KCRQ`ZGMQ&)->ycquWttBk|OY0 zZAN-jiV{%-vdf6N$f)RjhraD&sT(o)m`})6W}L3A1f-6C749zfX9Soo237_jmr&}M zO*0>>(CJR=BukXKOKQZiB33JYOwQPcamgpBAS;S=lzAf6=ul%R5OpUNWAkB9W z69S~_{UYrl6tGa~ioGPW??Dh;c5?F$G$t{z9Tg>v!>ibUsaY`*jU}ToOC$U9>47$PeyC`UPC)C#qHl<6roin&Yj*faz3peOg`;w1CW=#I)i3%y) zhN^z+qzGTth9}KRMDJK4OjhmB<2X|Am!dFk%!LkY@|q=O8IbIVDzOBypl^yaI`w!? z&44t9uxPQAo`#n{G}yNC)Yiq3Bof#YgNW>V-?fTZt^ktHQ%>Nw`GQqTve zdoM8=4eMELKQ?vjG)nY7R#^y01!tAhT+sfk^z^k$E{6{h5K<~GrF#30Zv+q$!v)1R z%F!AvV!;P!u2DcdPbm`#Z4ShY1)F`cS!gPmlkA;@4vOy%WI#ds$)r-dv%Hu8r zc!a1cD~J5>YE0Nk((e?PQLGUpvPSGpMC$~|XR)6L>q3RgD(cpOJ4;7ziQv}N(4*1r z=yG2x43_#ei2Ki9EO8$pbm=;Oxasa4KCmTsb-cBtYkB?nfF=j5BuE&PL zsj#(b+}TIa(yhYXPwjZ-{XC}kW@oho%x>ef1c&ZK@>iJxa@7{iaV?9s_zkfJ=sv~` z6gRLumvwP4k56YUUf4|K7{#tH7n662;OeCTLzR67SE}X)i5CM_llN9ncP{J$X8}zOj^@0Sp^Y zC{mzgM_V-oe^Ir0@xesqMwV&}`vtWAQI5rwL3WNAWyPMOj&&;67cWe%I}J!8Pb4)M zi8!_dpLOt5FQF6oW_hMOA~! zbN6RMCMLa4lCETTlI6DygM4nKJ&Y7!6#fU@}EpNTyDN zmSn_*A$|^OH%W08Gvq<0Y%&$V-#6niL`60({NEN}P)c(HWRM^rfIlB^pad2Q|Aar_ zpb!ii4Gf0>Ay9~nHXZ?l!=lkRq!a}ZhR0$tm^>~W8HPooF?f^yQyqrNpzw)IwjKbO z%Vp9SlrCitiOHsLsr1Te5T4NF6j{WoDLk3QW^-B0VowQ|%_kA5wAM>ao6#e4>fFYO zE3??Ek-GG*OJ}6prEv;;GT|8c(5M#~CVHo-tD0x>zt@^e`~Rr<=BvrKC&;IK~{y86J4VivTl3VM3FIL;gpv_2`yD$}G*Tg3t- zY_b^Gu4}XEpTH=})eA9jvlQerY%C`c#qX;X3BxLr@c$>TGkUkh3TiP7#&Poky1Y)q zMGh}7GrG3A3X^E2D9_7o;z%h3M9D%6bO9VoP~14^y=c0z8zYXBJ07d;Tzsy_>`d0& zDJ(omF3pS^1eDHklXQ(cu+!AnL$C}U@-gvi_}as=MGXBlNUMhUHtn=y4W-MvF2AWS ze8DvS>Px$d+Uqr`B-=}$`S^F-51FY1uHnq}=a6*;aTCu5VI~_En z?UWB{Pf#QFuGmfNnDjn#g_~Dh?)zGUvUjwdB`OI-`w2Od-7<|(SW}#}H?PcC_tmhx z*xAra>>9$jvn3l(P0VbF+;1)4F9Hrpzte>15$gMpJXoG{uQLtNRWt(BN7=6)vn& z44$gayHp_Z&V|Ftln*2(OK>TQD6IRUBc^e-gz`m@a3G=J*niR)aSMpgBSJpzKY*8 z^^I+2Ul*DF=)I1cw8c9Ubve0P^-iy9z`V_+mtU0sYa?@!qd8^Y3FJiKS01e(%1{tA ze~qNK?zehB({jA6S)R6$m)kmQDONvp*LL~ixk8$@9#b_iN5w_9zyLpN>@kopbHL;j<&733;No6T|!FM>37MXWqN%2>y#K9LEgcMw9dD6pE+VmNMr;Dp5 zF_bmAL61@B58;WZ0 zDR#(Mi51?Q*IDQx%e7ZjcvEX4lx6CGN9GR{sBHv<>`Dbt_QOZp30a*;4d~M+rwNvO z&6dTq%fF}8^Uq9FnMG;8(sO|cjX`IH<)KMVmW?E6J6xc&ngtZ5>jh=n5nz+8&^g%R z+*h-JSZ%>{Q>mW785x(6uVJ7n%B4`3lDUT!Jsg#hfwgipxKX45&#=FTT^>km1T#Dwy5LwN6b+y1UUU&a08lG?dlMSrtoE9-4Q! zxZ6~m>o92CDztEO78*xMn&FFgoA?^@DpiMa=zE}TE{X;=Bhg}rE$PkZ_FlI4Em3O8 z|1tUNCc)=R3X>DWd3gS`Pjio2O_F~1CCXA|1f+xB9DU;(5 zC=Sh9G^7Z9Y{>AN%_6dPZr%N_`xM%*ZneZGfpJHya=e{8Im;GZxldfy)T91fM2@m4 zD4OqtjuAKSvE(0Da&^t(YF0;295#_IwkY3GrgY{Gdf!J! z2XnGlZE0((njD1*-zY?KHnBqCB(_-xVIt-}O+_tG>2E)E1;I%zkD_CBffO>{8+{sa z`}Ihu%pTf>N@((#-AiKS$1k@HUU>i7H>^2n}O0DoyI7Rdf3&zcZre$n#P$}LyCsJPF}LeBGNA2 zXTx@~;^yHh%7>+-T>~Qm1Ym_Dj_u1(GA@+n4D_9d4Ek?=#11TPO0fA24*KK9#tK-5 zkB;;T6rdvFJOFgQbEEXTO(Nn0 zLiX+8wgiqXgU)bpjEIf76zA4fjL2@WX<&dTp>kh3bTe{hEtaLDH{@}}(B z8L5V$%_#Hc7Q<<~8l#ri>|E+gfUM~jU5;@aCv^?$OsbBiVr`ats}l0DV74*l+i^;u zNoM`gOgd;Lp0I{~s@nu_+WxHo^M=U%j9#&4T4je6_fHD{$l6W^gu~HnZv`;gOg|6> zyAVbv0V~9qu}VU_`*;K)g*l~auzggs5HX@XUCA8tCVSNY|fB6 zgAJN%3l`I3xN1zusqw1_ExNPmB*!uQ;SuvT%H)JfjE2nHHqo&I>~z7!MG%p8DC~UP z>jxVQD88_h0?CYnB$l))tVfbJCJ7L(EV67#%(Voh@F=R)albAiLi;CTD9H|*&@nu1 z6zJ)JH*QTMW5AiEXmO?y9V%#V&Rk7q-x~15h!8srYXU`6aJwaNfzNt{rkI%vO)m=e zmXECsi@v(!j>&G#07DTI1C&d0G*RW;hiolC%aFtAys2a`DZ}u(@Mw)D63=Sp`7t{I zZSK@*M%~FQFENsZ5@!-*?9YlafJ^%8EXL!jgB-55owRt0raK;He!3G4Q&ir$2&&F5w!Mx~IgMc`t|?T-Qc_SZl90OX26XbW)VYh6yRv4$(3+XX zMHf^2U=v!Na76<##)2%!%nneyjwL;guFnq;ZnHw^uo{SIxHZh&c2IO&jeb(oK%`LJ zDa6GTOnF2II(_inLrNHu&reAV&au_1{{pUsMCU%VD@En%mx`eZ=T^uGy(6xu#q(Zk zE!6?aRG2RCx=?o;bWZ0=^)qg)wr7}rjHf@Xvq4k7SLv9H^{Y;isHbvTU$ShB(}Lp9 z{(30{wxRzzDFwHp;NfH z3dI2SC}7syi*bf$O^$C;vcUGHnrY`(&X6xJvVZ4CD=wV0>g=5d8ql^LHHpBKg|bh? zxocJ=RWj1U#ldNW?s?3b^A5ZsL_seL)nQ_xZ&vniaF%*%nl93^LMMoh_R(AN-1EaI zlg1XGYkvx&1|KkXP4hJ1?P|Uf4-(Fp<<^Qf$_F8qTOW(9VGGSUWSBnF%RdKAc+k{2 z5MrBDjZKbAB<3k#Wa^N!=GZY~TF*9b&!-5+t5Xp?^^}OS28uMv;5L_j?2v4*w)!GT z4*Ii}{*_9Y@$XE;it}f(zGFc9?`DH4KWjzg?pN_T@r_520Y;>~a%=S1M~_@|15x!q zWz|b7WxpW}{CH{kU$y}`HB9fL*!qJanR3yFQqNzc)W2_BbG%H5PpNGLMTzdG^l4jM+08vI_N8c(W?-Tukd8| z=~IMene9a-#&;N&^2u!%afD)`id=2CdNcLR&GyiPaWMsW zvQm!j>NqN@)o!vU6Z*YNpQ&v?a(XY~OD@rI2{8Ds}|(Pm2M z_j{8H()w6{mXK^zN@X=^$!(4(ViDR8EjH zctdu0{5FPqh|3r>rE|_g_|iU~tMi19g!p)$NbVa#ksT575|?M86lRSm`2wx8PLPvs z`lsUfmD7CB%_7-?O7sYtIU1FZB`Hs#nXC?Oc1dZs?ViXC{w0H5W>VQ_Lf<$T>NEXk zlE08c(y}ohhBYY#keGD%%)QVaosI0kGHYvXp%^E$^(pM)6lUpfHB`fy9OPj;BOG&Q zaB#B0A}mBIX1?)MEeP@aat^_LasMWdV{*1-2ue#8`hB0;TrG3@k`U`V>>`|z_j*ti z>~nr~FIv*^a;+6kjS=a1GYzX^EhAK7#c-tfN0=m}z(f}_%#Dz-xU z5W2Wy_Sd33RjJr~w-X~;c!QQ+-Ewal4{ZL;6RGrrY)MA6L(r4v_DjRNcA?dwDo+t~<03iy5f$Fiz@+ z_0f#&e8cjh9|`K|)1rP<6g~3SKaSoa_hf(zN2o9`)Rc*EUGrR(u|@)*QI$cLl#{|*s`ZN z$mcD2_r~j~)E0qx^$w#m;GECusqy2O*9l0G*hDkP(pm8BP}KgB#VHlXtLsme+#I`V z%{Puhua@zV#x7~n$86R&TH@ILa_+tRUhYiN*O?6T#2?sA$;~rRv*>6-J5$sPd5AP7C%-Ew?nyGRzEDd#4}}Z( z`kE^-@s`)kEiC;AQL(kk9dQ9~S1)h1BuB$jk*}BXLA^Mn=Hu5h%SEIQn2!!gSb7_w z(0aOBk6cG+`C8&4Dy1&9*U#aD3I6lT4dFchyAw zfZm@Al@`ua(%QaEp>^Nt^z3gGpPIwj>yHOpE<~(nxIXXao&I+My~wLYVyv2n;Eg%N znOzty5!5mKbMFE*^Qq{teeZOoojs9k1Bll#ue1KcR~pyxNOH zlGq~FIaO+pT9wc3*7_x?TX3vRYu4)p4&!pI+$^&=tg5e2uVAqDntb9J3y50r()fMT z2`q%bfLWStmVI@m%<&T1%(}aJ$yn);Ydt^;*$0% z9DBZ=NezK-Xgm!i>kCBrJM04f_oQrdK-;>ggQUDF$=k;ErYejEvO3TUBC9OTJM#3b zE~6Nbt*RS{E*eOWU?zFUOTnxi6t^7o#EzY9sk3{K{ z?BOzs{CxW~FS?4RMXRKc!K?5)M36+NFa;LNZF~x($?`m2=)940WfH}ZBTS4#t)ztk zLP?`^^iE5B9^J6vCCTyuXBvzyw0uTIJvNna)8jcO?<4*x-LAL$Gj8NuO2q- z`i!wd(Ns}3K@IfpIMHh}gHOF}W8A;DD&w-0Br>EqOS}-QQyZdb>rD%$?}OUJ&b7ON z4N)!DeMJ2F}g1tgft^i2neuQ00pli|@u3v0~`3-s%|RL+;KH!Jljyg$1YYs(bwfYV}cuLpDTHs%o$S+fN6f8PKSks)e%da}4* z5Qha}^ee6i>^YPb0T$NJLL(c@^rcONWcHlB8PV=mX}P>j=9!mnn+?BodUf8hWWx!) z-w?tn#yj(3)Px4_bzKCZIq6g`8;h}MI#T9+Guyj;Bvu|u*@EIKj$B z3Cbm>K(kh=2z^VCwI_#qh8V)(F z|C+OACWTOZvEvN5SRy$r>-i8gvaG076X9=$p|P_@c<^6LCR(OU^8gqiOB-oDdC!4K zE+bybR9k3{Z4E=b_smBl!*P)Yw* zhh?9?7pO;M^LTwrxm+y;24YT;u|{A8oe$|4NX)r&F>!H^vdARkPt2o?j~Jyugkoc% zYeQfM)iWu#eBKfpfN!pbMI-|ThtQ;kC=rpxBlh^U;}fD{?hNT9xeYTCgkVSTB_fh% zT&X8}5|L;zeohiRpW+knQIC;sp64Qy-P-v#=_RMnY0{fgYv-3820LeR=woWAThKVn|_b%A};~E6;KF)1&H?}h)6xsW2Bu-o{ znIhU2bxxL%1t#l8?roc>Nt0Hn%6L7N_Kn)vxpHR>qmrh&R={{b zsTS1LgsKJrH3-UiZk?Wz_F8B$6u|YaC5oL^>O#1fD>@w8;j&2*k0{F|_KTI`SB#9? z)oGs~+H%y8rY7}2d69(<7a$dPMJAYIaNhYuCsM*Kxg`qXWvSlvZzKG9unR2)xt*Ij9LdL&eWjvmCfc9_jf9hVxYB^mC9TE8*rh^Y5{)m3Tb}CtX^#Ls&6leZ0@M64E#$qphTY z&&$qpAZjmth#tzcFS^D#Cqt{4G@V3JgKjtXB;%vJMtF=B`e9<&l_wp3LN|hKQ@eMQ z@8;4)kO5yBd3JMKwIyYG-uT=b_AXLM+eOBEnZ91{x(+_r45$iyDr;>sLT@sKOfUhPs5r9onikr&hI6-A4^(1mTm=pziR3zid4%5U1ZChjI_nPT=% z{fA~oT#4-+x#4pApLZSYjM^hDkabXEENsq3aC$E)vV7ejt$_FwA*w#v(Y&&*xntJ8 z0xh1heUFnhy-RqSf>^g}Q4jfYwCdj^BP%rnXt#;MpTcK5`&Bt&1QNr%uF`T8fu}EH zM5lrspz08%K@qJ9o})|bK5>nnak{$_mK^Z;n~EElvGACA4@LHmrvtPK<5|ETO2GYmpKGLO1z?27xZCtB*lkd!t9)jtXQ zKO?^z8zeF`0+&Hr8rrqGBQ!lZHn)@2u4)skYR)2yf35sp7o)!-6Jb0%w6Cj!J(Ea5 zsX3$zt(d`q90UZDqnj!^1vc?I71Rbm1UfTuRX>{_p_%`~=?FIjIW;1;vk~5v`Bs=x zV@Atv8q8KZQ&S>qud?fSC8Iht%w@)uJEsG)7GX%TBPT>L;j;60J}PXYJA;~R2&jVq zk(7!Z>>-vogBj9w9?69^(|(TQi^3cooWfU*sM@q+tRumRM2Up0Q5GN}x~ag#KB6WK z8#6x>ry!W zJ0nLTn&KjHtPIOUvTOdTxq?0TNL@qBNx2>F7J@G)t8yp^lz`^=3C0wSm%o-p|v%2D!kmDOofSkp8 zlbmaT6~KZyOw6X@l#(+BvfErSc^k#4Jr(f z46Gi+YqH?*wgm+*TR0{9o~V51yrR**A`wiX5;ls}y?kLCq`nv;gi5h`uw2p6EQd_6 zgtRf>Nvqww;XJwuO}H^%xB6a7k*BgnAR}4#pftrp8@RrLw@zH##v4hwq?}2UfJsW~ zzWpmmL|@73BeP2CGg;CtEVeTd%$}n(u4!$m6r@a_W{E|Ddtfs7qm{Z2di)?6IMcxm@ZqyOyjZ zzDZJQx~(=OrAi+17&nS?anF=XeQ<#ae*7PkFJ8)Jrvz z0W%wYD(g0rRbf4gR-~G-Pcl~$s%0nKMj%CDqYJ1!!P&zyaL}4Ki9&%f+uc)YJ(?>6 znypQmJQ+A4`cTb!J;|lXt!}905t>px#cSDFH9N`VNeaSEK_e%boO>;NERGY)%c5w$ z?LgWDtGVSoPMY{2H44;vgv9E9R;*2;D~6IfnVa))!yvS?%i#)IA}q|%Gqr27+O*5l zEV60_Hc2zlVtp^Wg2QEW!UF*aB+))?pwCUd6ZL8^LXGxPtn#JI-ci6VHiA(AFoyM!4_8?da>J&GeG zwV~G=91LrD*9%lnv(F^5nOw_TNjp5aQMnUBv>ls3nY9V2IEYC!574{lB2wQdm6N?O zdEL9oOxUxuT}4VI+g1ciuWV+Wq$4GS3z1?gJEZ_OYC0uS$jz01zXXJ_OWv3>t;ZvsFm!`R zga0*DeyxK5NW3ne;m3>I*i4x!noGP)yD(Y>p}M1QmMGyUWJ@s_q?~);x?)fg6@}P4 zc@2dw$W@Xve1Xz?0zVbLsI zKy<6rO;jGHGE76cxQQ{isTnW9S-%=A+4F}iCN{P6@(!O*(lb zVDujl1Z~U4JXYm_t`&N&}*L*Y|MLd4I$Vwlub`Z*Yk!ctjc5-H=Y!z8FsuTDNm^8%Y(;m0k3#yIV*W^5qrD?)r|W&+ws(L`9j7%$eM8GYN< zMv@ygg=%sdtfWScN$Zl46jfZ1A>5SuuX<;miP>g6 zXhwApUt~w)_ATcN=}LpI*Xz#HGb5l0Mk%Y|)LJwiRLZ(-07-%Pi$pg{ZJkt#4Y#SY zz5Z!Q28N-=kej{tN&%`LfFu<(ir;vTcmTE{W&{k(&)1yzvI=NOg~YaV%Yxl zGks&fcK5N|Zzt5ea1;aL%3y9j`RPE5huD0}{f0tyFj6^{835`zOkFqGKwULSC%J*9 zdnrE$3|GrpRS6qcCZM`KV8=z>*YR3!QJS34%{c`QZ$_5mKKED#YElu?-`jI)d)lzk zj1-v~h?8<&y}U9OJPVA+SPmwUie0=KRBqv)$mKYvkfN;Em?4nO#(uBP8vqI#kq--S zJe}dp)fVQ)@ZofV6!rgQd~?4ofvN#RBmU*DrLHHthX~bNI~w~qG>6tm$!xavti9sP zhcYBRZ7zG77PP}mUUg$${>DI<9%8G~Iqvc*Fk5afsv5Yd{7 zLZ%u!B9_Q85YMT^$um|dziOqPbvr%T;{I5iA&4_(qd*Ld-E8sE{X{NJA6qvs*o%Kn zO~+cjA~eoTaJG-#<||fN`P(lIker%RLb%n8-`#A_OH9Jr7YXR{X-4uatb+EQydHNG zs^1KJJsTY+w7}15)}gmnY*mq{cZJ0A^EKoTcp;TPwx7(DhH}j>PdzA`XLTi*!}BX5 zjr;h(u1!udztITjZBK`lKZwWB&s6P4I~0!X4+)M&Uut(@^%XwJhm4*MXjdh<(&bol ze^yF&ufcCw> zjR6yACvQ-jk<78vbE$IuHd$bPGtCxuLS(=no@|RbY z`6>Ft+yIc0w9c^Nf;r{f5{Lu-1Ob9TpWpxl5)lW3 z!XSVU1TrHCgu!5OXgn%25Q9Y`kqGQaWt9CmEf_q0nh` z4wGcCQ)Bh{Nv5#>k^#tIFjG@erhi`25V?wXjOzA|*Ogg}u>;><*iY?BE-s*0Hc zDs8jJ3O5nEz|J~pEAKkXOVqB5Pim9pB`t2-8wSJEDr%h0iyQ*~%nCFy5V6f1%`3+8 z!&>yr6!SFh!04VMk7AQYtyG}M~)KGak`H&s@59yNH*bX#?CUk{ET*~~ZX^Mq3j%Vya;lyt?5 z-;#YN5~=paXNo*8E&+T`E?V4|>2})B3f!w~D-5ytOgy?v5ikV|LT>Ed)mx}FD}2ba z6;U71_5{CtWzq&=NJ)AYa`W0)jl*SIP+NnWqj+saUguQ3wMpYOOKWFcyh^(GQwbC! zfV7v6`lv*^ZR(c4m#jyA#Cvq3AL?u6A9l99ye(|LZ_RSMC;Wy-VMZLo>tAvSgh{Hu zx0GSfG#D<))n&VmE`@ez;rhzmnv&b7>-%HSx6U0NDah6{Yol{vyH*0r-Pv39P*B%| zL%w&hej`TJou6FuU{A*{55?=GZKuqh-E4+UPgScPrA~%k8t!iFwQ?24YE_+MK67Vi z_7jz`-jXvyb4ft(D`mcQ%<_Caa0x&<_&n4Z8h(20IL)1uzO-L-9Y3zT_&E3@2BCr0 zg^*>OtOz9075dYCNd%!CCkDw7;_y~(4YWeV!l+J~iB}2rHp2Ckt{NH&ZH@gz8uXC; zTN$H*3MulpW(-~-f}MU1_`?&}K@N)%zERH^mO+J#(^|6TNaqO8t>xy%2*GA@Os#9Q zh2?e5DG}lHK1aE+J*JtZq!Uov(Zl5cM!nItWB~74!+uqc)xk=qw1J_b zoj|R{@I9)g7jC?;@NjD5%M0K~9RBCYSl8U#GSh9;J9!-hCB;lo^=1X2Px7 z0X(ayt`#21u>ukt_oyk-R5S8MVopo7b93zRK}r`^<65yWrJ`xEgYaCG8YV3>x~M-0 z=wj62C0r9N^q7WF!V^;^lBBe|9|e%-S(GbKM)=-CQ;^JTQH*3&-W@C06*!+0MwBYn z(J$$zN)T0Mlx3y*Ksn569nF%7uBkdig2fL>nICbk*&8^jqaf!5l5We9W~CFaD_hBd zuC?BED)JvM*4o@~s}U79x8($m#m|E7BJ!$~U2^OVn?aAoq^dM7h8dNev-d4pTj}QN zEwfm=(T=yLbDb_tiIhw#1(VntENsd3N|HDpqqnAbifv}-aQcvx9z|EYj zR-_S5F|+DsB|N8@DskF+Sz0_oiWw;+Ls@FjLJg_&!&_#mtEH^yy{fs1N+xCfoLH{J zNTfddqYM3zR!yktT&G&8B^cOcvqoXouAIxtQ%(vPjyd!FQSvTdYv_^LKUzhswiM6C zIjO2k$s^Z1z8l~n5mhGON-PRPfn##F!_Io+t!XW3_ zOKP>3cHuHfj|FkHx46lr9@F@czqXwMoytXLM>%a1P2A{9%9c}H;2yHULDc^T)U-BttV%X*fUFk0n7XhGMk>Z6omfmt};v!5>P6VT_-RdW_jPgp!i*?ekK--mTPgn!I^Bmnt5T?qQFK?95 zw{tm8qL*ayP8{aF`NEr-n6I{mPxy=L7s~5lWCzk$`FDhKOtNQeH!m?LzBEc$}sl(@n;(<1AH%;9%k~ zMsF_XZIu!jr2FvV*S%wyu|E`zoU@jC$MoYZO{$}pJmsJeg4dZq{Q38?h_sZ_6HJi9}BKZ+<-2q^W0z~$&_$(e*^bEXaj>Ls7V57%Ol(6{k$VQlso`#Rh6b(>Crl$JQ7GOhwlV`e}kLv}-0HP@_ z>5wLl2z<2(7CzB{;HWTD%?AGPNbSg?v5sUSgVqM5zi0jQa_sT5b06F*LIe~5Arf_Zi*|C zaiqBYj;H01nn@iFGSBTyAq090&l=sGK#%TP}PzEOGw5{ z4Pu_HK%bIsm~d+eD;|+AcK@8A9Q|_jV ziV|-zq)97ia}!kq>@P494keJ+A&ioANwj9uq~{JG&afQ6$Uhu%=!*mJMG!E}1VE+? z>pBhQkIsmzYj+l7?r?5-1C99C%k9I!F+nNH@HjF}LxW5=koGA`fP=?0h|4D@vaKKuBzT05kSajuF$&_1>o_x( zWlQ+n$?{%w*4|`vLeLFQui*LOPOTCXMaY<|MZGuhZ0sv4=}S28!8w4U%z3 zsZb8F$J@Z)IZ81vE?FX)`hAW7(P%QD!`fiM&U6h>2Z)01mBIv?Y$<>H0aidKukX-7C zG!ra`mH4y=eo%7Ivy?e%4T7SPI;?KWw<^zN@+m`ABtXm+WC*tm?Ko@9*uYSnjP``1 zv=XFb%6%e8naqVvwYDxxX);B2;g0-C^rZmFpfs?{OmZSqq|VLcPb`fWVunROi-7U@SrnoQ4~g~6h^tNh_?(>z%XPtFP@s^IP7gBcn1X- zY!I>(*hlSYW`&brOK_=m!p;UBNl;Y_PWyC~%M>l~V(==j?4GQsGWf!!X^L@W2*_5h z2ydVpI8?KQMFZMYpah z5#p1x9`2D=V=7)@myEaXhZ_?-FlVHX3olF&s!>+~E-+aCj5fovBREU+f)k`+in#AE z9D>H^oC!9jGRY**&lPpl^Go3WOiaBSbT`}Bca^Y=wDxi*e+`n9cO@MzljZs|;O zVDr6$p>+qMZB#9?!Huqv(+W8-lU`wG?XW(UVM zjz6t6^D|P0{V{v1#S4hB8#cCl|5g*B@K(DS5;=}=VN^nfChphrT^Pv@m8Y<$I@)6H z;$BnD6qbP%s!yg22YOK zLl!jxt@x{2m~dQsIhLsNGO2o3Z^F0vMWJS=Ow|W0xWloq2T3vcg~wkkRt81QERNIx zNH7;F*O=nec6Z3!X}eJABgnHiQpgcL#I0_BS|3|iyLMUMvQ$u{Z^^v$F8W)>BYVst zbZ1g;dMZLh{SSV#goLvc5{!dkk1yG)ypW2(03Uc*{Y@pI>QuszEeMAOpl&ZkSOr~E z|BrbHb*Ai>=vqWn1lJ8oAq`xc_xRUHmvEI9y0m7%=g0)Ji2_g=3`@7m6=u1(NnK5ox{s{QxeRlqTIlpMBS`({_p>K zkHG z!7MzI>>a3Zg-5t)G0Lvo_$MBmf}Rq+)_ENO z{UMJPpCDR?Vi}W-aJKPIGdnx?ndA<*?*RRYwsNSo%2Brs7=)R*Q(%z2b5P*GW1{ZJ zP-|XY%8~~Z4Drq=yu!9j&WKdi;OoOMK##4%)ez5VT{jCHSNI6sJ2maoPn+uvZm}4^cV}#y7PeYde#uGE zFE`UJz}#Lvo6-mCrz^t`TTfc8!Tsp+tDQa%1$L3K&U4!fn?4 z(?rQXosO&IrE5>Vu{j5Kji$j#^EAYrggnB%C>qmH{bE|Sn-8VdS79>DV6N@SH0;~t z^9dK{?egu}N6Xe*(OZCQTU?eWY?T2BHcv>475vG? z2?l{c;gLv84jT)H#$s^@Oga?>06(H~C`4W~0+B_c@d$LDK?I6NBeDoQmOn3!&0JJ%~)TUAE1-g|HxW?@;o6WLK6PQV>_gnp@kyy52sF_G*I%#~Y zP-bzci~31rx!vfw>_xjtNTp(CSsNx+ca5@2GIThI3bieiQmXn&9dC6lquzJY$)>Jj zcHrpo^c%H{1<0U7bQ4&Hx?Mo2!}ND}wpK$0t6VtP8rE{pKcrl*RLjRlgSnx^qN9%-Y8PwCaL9yfZ9IVz)zT`vlM* z%PJzVrA=Ec1h;RyF54-Q93axcP$QaypNG-%ti5Y$nCClBvikVBZ|btW$LR9tw#d;+ z2Cm3Vs%;*u@-r0*EpF@d#z>3fw%aRk8+8D?FC@CstIOKuAUR5Wtl~(pQ&Awu56r^~ z&N58Ip(9Ha$0M)H>wz7+iUdVFG?Sx(vrrG+3g@uST?H;t3Dl;g%@nfCv#{>f9NE$; zEa4O{>o|#NjZJRN+NM?X(WXL{%)5{h2SkR}`fpuu4`V2;@QR#bJ0yQUrp9zS7F6QDC){80b&ZBjZIzRbB@^(e(xT+_Y^i zlS1N_1NvkZkA7Q zR*L&oZ_2*pJGXm_KKFF<8FjA~5tuni9GiOXYIILZ*YK)B+IJ}np?`+{a zbO{l^7beSz%q(=Tfa6nEmgL8pg!hVS6EvZZJ{pt1V#03qGbuYRs(o%)Iwipt#dAE} zA8QHqAIas~<(JFkuf@~Isk)~rwJ6PdT)Q+d2R*5>9HyN0*X>Vdj_7vxaKdnyej%k% z9jnzk;&QGmpjWo6Vqn+7N7-Hi$<-G-gNvFIFwX<6(cC9x09LobhJ$U}b(7sRY z^Rewb+v1I2R)5;xFgum8jJTUuS*Kv!s_J!)xl=SmAm)on1zM_!6fpyG{>xJAZf3Q| zuEgx=8nY>ZjK%3cCw|jg(nx>KN(vk$I<}N^+(=Gc(lvz|*3Qe}E$fC8F!)Oe)oHRe zsVxRF_1=n}+uv0!=~1G_KJ-rt3UO$m+b5*}fmFj)M=mtKJ%>*e-jn+O%B7)uIH(f`C z-=B4}CQd7ph0P`KMn`H~63i}d@bOMKgG9<1!T(jPDqo!dRzRu0^rotOw5LV*}k{?5*EK=6JhW5>AG4^?|eZ^ycEBbU`y;$cZuEKY97uN(~ zk4Uk$qchN(PiZ-UE|~leh`reT5K@-sRnEfDWy^|$w7c3%5N|fC(DlqOBpohGl z)dF6ntIAzG)C&w^3H)8rt=G_ID#&Hz*rH8^5=V8u0BN*IXzhuW!K2t*lp|6;ikQ2u zcGz#rQzs}!N~tJRsTkTRA5^ea@ij7raGrM4%w8toj z3RJ3z=@b=RgI~*V@hi$SiDE&5c1nGIws?-_QaRMKlR{S_Ll;vKg%ve2jLK0cRbNa2 zOY=YGJy4@7kt6G^CD>IV58!iyn(cz! z%FCE%6Pwj?3SKbWrlV7>oNJDWk~2{$NX%NS%(@0D)tZU|@Y}U?kFPF7)RJ=h8%2bZ zm62H2xaDRNL$Qz4Z6L(dBP^1Prd(3)7Rg#PdDT>BHLZG%z4xlnVnTeSkFOp&3`(U@ zp#MIzQrajLoeC#pBb4_6hNeX44GPRPdoQZQ5yAZ<*>&n)I2m0_6dH$=FziE)>9G|n4y>R8hDAx7&Cibwfkp|*E@k79E5Q@jx6sC?kXqC65SqG~3 zff;M6O3ip1@unL6$!YjR(3okpqxbrKT$`1pQr;bT2o;Pp{7(4SbgZxGG1nhi%Lqfhb%=GmyjaYEeb^D614-UO>*~f3(pKzvv*Yqt)K#r8Tlit{%AJ{_c} zHM?WFt4VmEv0(X8Vz5an`-#%MT9WM)PpP9u3OGvgfRL1Ijvqs4w^cE8con*OVy=Cr z?iOyjiT9^phQDkQFV8Mbxiw!;uBsc3Kio5YTJ*H$__bypxF^3g{;7kEd;a6NzAiEf_!RaTOv>^jj z8{#&j;oKzi+lrX+uM0_|iA$PX89;-|FN0jb3%jNfG{7V77&5XxiBqFd1f47GwcGiQ z)2cA}3#KwazN3q@8et!bE51rCFhmcUn698u;-lJ2n<8?Xf^@nmy}6RDpdzOo(@mth z(;l&4vMIxo^7sqceXDC;J;{P1f*_Mh*uc9lznI0Tv<$9$-8UP5!3r~&`@0`1`Yt0V zl?iB)F_EZw!jrSAu}M@K%nPnGPBa_LHxcfyoA*1zx15vBLMfuVvcE1XaGFE|DRT(I ztCF*;Y#ch`JR)+XLX)aVn-`i!!%JT@u?Y~$86|uJxp2qCEG(kRY9K+qxN9651VBY{ zxty#0F%fG*du={EH7}DKFxu1`OAVqiNT?dEp-}KLIaxPiqcjs3rJ89EYagRYm>+>F zrMqn`D^f>s>9*Q+uA+mlb9l83eZc{;q8wkO38z8X=9?oAF*6o=j}lRXw_=nyBl|xqr9CgIm#Mro-}9{ zDnrXs%$>1DOCY5dqBKWZE<)4mpDaqJ;x-^DZ!!daJ`1|F^WUMYp0z@O9QtNHrJ8H_ti(1w$~7+0>JNNPoqTRSGS|wH{4!ML z4=e&d0iHz^f12tzy#i$$6Q3ShAf|MBANm=rTYSKT&&mnwoFsh5?9jg?Iwu-+!CKq7 zyQ8y7B0THjqSSUsf&aA=qni8y#0s{P${E? zn#*K4A452%jFLWFU%=}M6Us7*lcKY$M57_&&&7%Q zvkE3G`~9rM2b^j|szcSoJVQy0i7^S`Nb5BlhfIM$hb$4KoZ&yRSP! zI+2O(9An%jvHcjto+rqGqXE9tB5q2S0xIb zkn?qnY*0O0xJj}~Nc>!l6(}34v!vj|Kxwl%$hE@~peYp76BKNlIyknxDkSWqlj_4j zi+V4TcC7S`!BqQHr5hpSf3KMeUbdm*o>)UhkcQXGG>y=u4$XQn(JiJ2U%90fTWtXBc` z$DJfG>KYQ=IJ2wErkQ<5O>~yUCB`9*55sXs9ck8!xkg!EEPMEw5T{7$0z^!AI(<4V zYIzh*cqzSI*Msm5vj(Q!W}qh3cTazLmSq{9U-|4crcwr*IOg0D^t%APSA~O z(UIvT#kM&zV8hc5+((ULxv#H4iMzFPWBV;tnxVN&a6;m_uG!sxY3QF4>TDg=sL7NX= z`i_!<7T#@xFVqd&1P3Qzq7V!lRxPY4Q+`-6d8axK%XJFQ3FupCnOdUs%#es68LvEf zEjPhZQ}XKCEup!b=%U;*5Aeu6JMbs9;-qb}92=Y6JjBQI_q=gg4}I(_!v))H?!*n# zQgTQ`+I<^0?$Y*q!dm0cgE?(vBPYx@8?qm90$G>@SV|wu-)} zV1>3_k*Y|2ht&he2=qjq`Z_Fh(c}#w_8Zi#(pk+4my<-sG26Ec?%7QJ-qlVBlCRkb zc&aKBG+OeKZS@Hq0mCF*Nm!N*QMJQ998v#yFBw>g6t zl=0KsOVCt|Dte(1o43ieAfvP6H`4c9D8-6{C*gsp-Mom!eC>(8F{#~UvW=CcL^aA{ zT+sqR;A(9yyar*;CCtnUE?o<EKVh@i*Z+w#D4s)LI-f;G6bZW;x|H+l!Q1gSNCiIT2;NMI5xE(U-G!p?!#4 z{Q)z*p`hY&AkGMpo_j+kMCepb(j*QVF`&@2glV!xU`7a2zFWb}q8UL{CXG%;3Stwi zvm6cC)d7IzC3T-lH%3OP3JtI^OoLxTpW|*5EGzqEvFFW`Uo$%iP@#B&xw1buYvpQ3W8jQXRsUx!0}}vN;ny4-fNzr zI{??M1W-mUXgM{-kmROFws&Ge;48 z;6!(?rt7%zX(TSZ%8UszWytAez(7_#^E7(tPT%6qBDcwmHmoSe&oR5xk)FkWw_dGS3B<9>=|h~@UB0l{w7QhT zDepdST_Sx{QEXS(%nB1_Y&LFeI=l2dZeOICTsI5Uu5C1QOgFm= z*z`+hF@>mV?)0ZNCG)B;g`?d?#zf8QmHKq}#BIIlp2H;mE zUa}TbN)5)~=IkvG*5cjge)$a4D_T6n)puvP)8|N)Zm-u(&ACV~{AuF{aPyMX-woAX zVyd_sS?jCJrI#DNqB_QY#GY=}t!e)5(2Eu2US@TFX$6~E=8QXO*QMhB+nb)qrv*tK z&N{S_LivPg%!*g!+RwN#!~9zXj|!eXIR7&&Ox)F;$Icy@SNYC33jiL6 zrKN*`VW-$(!=daPcVSS!bIY%{Gybh39UG&)`8H%{({s>%y1h?i`kThfcR_5@+1fXa z;cXJpRE28MDEKAqgG?G z3hicVI)TFKv`S2J8y=lq>{RLO9^Tk_#>Y1A6D-CwFiP;KzK*kV20^iFQng0xV>1E(3Bzv4MUUcIzOU<) z0~|yxI)>c0Nz9b0y)uHR+`>tWdd4(wi>~XvZcN1QwNUHf3^{CT?w3FBjFRmz5afdX zDQ`Fd6E-qbZ3@B?nwX!;vfC8xJ}gv>^h2wpsQtS$bm;QKY78#ZPVW@5;VbGqK_^MG z657(A=h^anQ8B#O$4ZOLEa6o2r~>LYt94aFPL1N=_B~aNV((W@Y_7_-RZO)cBhzHE zxu>vvJ6=ll>@uS@b=rMc(u=esW+^jdEa$(-tc4cD>ZQ97#O9@95H8qRxleFzGLZxN;uV^~bPj#Wt+wwEVTwB<0qM zbz*J82bM;LhT93lD{p*)Bq>bCTY0fa)K zcp{9&ckfm9oaUn!)FGLfE=2Au#Z1`{W59`Wenv!dD+i`4iF~Z>nIJ`4wu?HKJBjH^ zufq2bR?^pY@QM_%soe((LVBE$5x+&ZsU2Qiy^OC3RLOV7SkpqlFlg19vgjj3Cedzy zlmd24tMq z`!>2@%2~yJo9!w!mh_zI>AhiKl)bLX<3Pb(Je`+_iR;eyi(`@c3waK0S3@^SMc0fr zG=}YU5F{3m%}Vlus2t20xw6FLjGDJ5iAGs>R$1SCVQ1Ajs;K0rBdEfKeF>209>~s@ z;9<5*5sb)1H!$&#{6H%-%As9{O%oM+cX2CD0n4Y;TGYwEyolmQAClH|+50+2Pfd%{ z$mFNfLq0@g5qHA$p?%@${Ge)4->}*+<4W}(bQg8E*{8gB8Ko?(XY~NilU~cKdFVZ8 z`aGz$K zgH#L$u65Pg9a&zcTYc7o@Dnw=#PXe>UTd_iNWoHP>2DN-|6g{JFk+Y$Vq0>nj5CH3 zs478n=ezZ9m1!znEiD$J+Jvl2^@uKHS!kTW@IZLzJJimgRr zb)9xh*4jt9MV`-`UcQLAw9eP!gUn96ZM1g3zAYmaiCU$HX9q;i>`te$F*DM&77|KY z-mo&n=E5w=_F4#()$nYpa!2C(>7C}xb1PP(Ched`^82t`-i>G~K_%@=YP;${;BWTt(T-dgcKV!Sv zc)B&$Mg=F1)}E(h&_LSj)!Tl^M7G_>E0HJJ=`swqx-gHI4JIFUeOKEAFwBAy#Lg-9lXh$~m>(yw}xy0z2h(ivxM=|m?>4WcT}bM44E zC97E9hQ%Y=Kqb;zGD)uZW;o@`bghpJVxjh| z!(7A08pH?c{i#reYC_O!ShK2*PHH@QCyZU~9@`A?_^f)hXQbe&P-q6&-HRsqO$h=h zesSm;nnfmg%fg9^;Moj>?gIF>P#t4T^IEt?zv4SlG1|r@B&gm*p zVg&Y92lim*ew^zH>ZS;TiK3}VB)gDQ@UCuyNdDW2Hg-=)ifCwyP{NZ45Soxs?&qrv z363f23UwnI?r0#R$;!m4cHMBCR)c(dYqa#Q(ss=>;xJOE5R6`qDt^x7J7vI8#$a9y zlzFJ$?GOq#OPcfM5bel}xbGBhZ^~+n3ebxhZwmybj57O8sE>xYtK)Pegl@bFYZMGT zfyvk`P?o5O%r7KO3`Yb{Citfdl3Yz_=_!_}11NfIs$eLB`2@0CNyuj8^AHDi(Ga@E zP9Bp-f|#kwb8Eb_C{*c-j~9o;_62(82+o-)mX6AC2aqgou|md(q~=g=m5eUc2<%$~ z-t5q~5=xLJN+}!gEfjB$6X)V(=Gxh@MGFYNf>IoYNA`+oAq2_PsIoN1Mx>)FzAX@( zB1U@VLlE@Is*sWvq?`f2n zYy`9^)Q<5$s7O$2NSe}Zi7Co{M~N_&kalxO5ge)^7G{+9s3c4;?6s<%HuD=60t?)XWCvmN6EqYe^u|+O1OQ7EUaP(6r;L#NN@& zfXq-Xuzw(Glz$QWjnJ7MORV1vw8Js>^CyOfQsTy@mUblcr01gc%j|>>6xD6==>)KA zDzdX~xiBp%l^{yyY1y>1J;tlYm^1)HXDH zVK5SQEjBl>8dQl2tOtg0PSmU{Ui;%`NUh-^4-Af@kl9SCbx%6Val+>U%=*T_>E#(4 zCW>QIP{)sl5t2wk@iP>NsV!3kros_Dg@oO-`nJnd#nVQGa1_i(YZ*~&n~BP8Dtsbw z27QwBg60AvYd)gmuL^9!ZUdhjbEe#HhH}Gk1Qix0F5^E`5>tivOYRX;jsr}CsOAZ# zXG+&2ZgAr@X!~>JD$VAyE!Mb@`A0&>N67a?GqhI;PIs~*W{>Mi5hEAN`6KQ4>PcE* zO%At$%%-I0Qgraq@gQ$CV25KC!nHcYEjEv(cTBP7HHEnHFt@nrcf#@*rLMrE1pb{^AarX z^_9fk&6yL-9+pm_RHh{JLt9|uq}56JP0VKh$CN|XMNDK4F(hp=bQ0+(ra+83*usDM!Ow<$8V~TL1mXgJ^HlbwG12z>D4M2}e zAYE>dS9G}`qpKdO#|Cq>hDu5`1E9oqMKy_XPu81NXW*#DfIE^!jIcVUd$+rcJzR}YkcT0r+ZQ%G)LUM5tLFD05wDVf65}k1g zZtC>ZNJBFcUgmN)3HB(+jsz-Ga}g`vxkv1YN5+mA4{C9ZV^40eDy3t00aHn*Yfh>( zs~kLIY-4Q%{i2&VS4VgR)KaoGqEljadV^b&qsp9m?q2S?KcM2g^gaw9B$?BM{iEs)XaqLp2?P9P51>w z2#0oYlY0+eT+Qg2kD(y$_m5M4^3>@4>tgVD=Z}J}*_QK8sa=0I?vK(^!bLYPE*)#x zB0~*|xpOw!CAiB-oJuVugGS?$nFN9hD2&GCQRq~%GZ&df zAJQNQ3STOe%H;GIJidz>ki%khYFu88D3VE`klK{qg9xEZ>X7NJI!j!y)~OW8ltOJo zj6#4?87%sl8lqULb*fZWn>CDZNmAd9)_c67?;ugyuPfJA7%Wd`9 zUaJ*z*k1P6x#u#ACX7z;b&IUuUrnRuCo?)mYd5;A<+657UayVWzV)|tShuq68;|IH zJLu71dCP{b=h#G?BWi z3dHv}aFdS=!>!ax!Y}W7n7lJFQpmVHuhd|$K(6CdnKaPUZst7idaA=iPO|3&yUn_+ zw8ycVI^#hMJewveF9Pa{H!dU6$Efi0@c=(+d*;PFNs8|0ymCY))5Pn9i!{qEBPO6t zlKSYJPIHngAVv~mmi#Wr7F8#rW6$iA+Hl4X?nQ-vt`L_H@Kf|hEkNykA+ zn3r&*5!Z&h;byfM0-V;{7jlpc#5=e)avj^Ve`qw=L33#lU$Pv0 zP1J)pqy|NzIooK6mGm*BfTf@WT5V@h)Va2%{2$rfM9`F)oieV})|y^7sC3}Q<~G8i z8s}$=o-3zfL}`rs{4uG(f5dZQy;Tf(bZy9*IwwB)&_ch1E~R-g*D)hi8z@!DefJsX zks%f2jaW>fs+^?M)tC{LflDeLmO^M_(!_K`PwE~zi7rqb92l1+c)3McF56rIS6|Q7 z*T(sE8jdpwE;7Ms$7q_qojFifOBsI0Sq}kWY3G`)1)`h@^IZ>9G6YOG}LJ8e_{QVz13?5`XT^rw$g6|}QiN}<~` z5hwK=$2o+Mzf_G?ax?OCBg8Oh3A06k(rEdh1*u#pR3R*AGQdWp?tf<-By-bZIx5N$ z1?y{fPAp<{zXj(qYSHLv0ry4vB|48OQj*n`wam2~YL+FDpGQpQE;MW`BJr;?5C8#Q*RA7Q3P=5+Nz=7gxG z`v`#N9%3J>-nq;)lEjNSv`&aUTx>zWc5F=+M=0jc$d%iPNN%Gydffk6o8(bR^7p~U zNc&S1ylIv7Z8_z_%4uxhuo*Vy)T(DB6so5thxu5lE9+`$d`ogr_MoQ8n~KgzXV7-sC3Dzkhc;ad}}=?qx6R~7PKTr!ZMI>lF7TMzJ;+n1BNUJWV#WcQ{bLt;ci-R0! z1+4FJ4yt(O){4@b7>LT#Wr4PF@JgAjaq`M_E(vZGEJ*A@ND%~nr!F_>)Rksr7TDd9 zaUPS@3r{ky2zJ@E7h312=qsj@cLh2r9-2nC@Wc&g$gZeTy?*Q-6N8p77d*RXd7qZ6 zja&$aU&u%3cWo8rF$q;Hrx^K7TM-vfl2SUMP7bPCb69$l6!PM{Fl%jVKvnF8A5;WU zgDBrnOl&s|Plz?VlS%h5lkZbfO;v^6%VT@=@-7_d;}58ObF4PXNyTC&Xc@0%z04;Z z_IG{1EG02GtG|1&O0T?iydi20s_EyLrH*#KBH?WY3fE;|v=;R9W!yzZca4cn9!^0~ zrj~wk1%z<-RqnbDG2*>DoWb(je@Uxe4$xh{CmEMxI5a7BYwPUO@*jMi(AocKovWT0 zH!q8p3gpM6NurX$y-%DkI9;awC*l$UchdNsVQ@6v#^)icz} z&wmq?v4XNNhV27Tj$waVf(=`Uw`mmgADhDEeq)e0uPn z&uN;!>>5Pk{Q<(B_D6u*NxEq7X$-D!1V{f1kJNo)=ILj;&Mvx|!|L&d%th+(+sB6rBYK(E@?}ei_gHxCE$FHR($KA`%q~53kI!a@ec1E zujtJ!IMQrMh#-9V8!pVfh=w}yks|3#S?E)BY#wy_}!b(o?_{bp6 zNoHz_PYMg|0EaMKP!g*r%3dfO#is`Tan%COmZ9*f{DtO(11i>!mlux+gK*NhjEf#- z4FnNn@9^N*qCV!4TN+G8Zb%xV5B&?tj@6JjU+uRD>niw5e+}`@lV-dhVe%fv*2d8| z*Qxp{BV3T=3VbH!M}k`ZgEpq+;{a^XyzFX>j0X!${+5pRv*!klik3hoB&oxCjj>XO zC+_r(s6m4RBF{ARE4tdG+LJJBB!_OLs2L2XX0>r>_|Fhzy5qG;Uy zB=H*rv@sECPC|OUi)^!xp0<&Ek%+Xd?yC-L2&(by+9|x=<;XtBfYu3XE>KubZ@!Pp zFkj40MyINRFCc`|4;C_L;fvNgMSQtZh>s9%{RyPP(`r+YzS(jVcJdTjFm}xA;H@s~ zuO>)iEhu#7p&M%fDF#@~F;3?tuGk7xY>+(dD`Oe2s`E=SunQEF+ zt0g}!jG?6f_rDt9 zQgY8`851!e<85N}VvyHqu23;yMh?kF3}Q%%Qsv2+F0;cw<_32UvYPX(>kWZY6Bd4n zVARbXsLJ<7v}YBydg<}r&y7-e&M{aiIag4~P3%89N-Z5~`lKq5$90gu<=q3RMvRTV zN&~{u)mFtVy4f|!E450@RmD02?>T0Wc(MdEaq5Rn$}gt)fhqDvqcuxYFq8#1Jchd{ zN~ax&p2|id{mBZWt&q6pBx^2%3l;@LwD@*VrvYi~tZT+pHVs9H$0bKD*U#G~Efn3) zxM~LU#0(un4V4ciGMF}GJk%Iybhyv6y8g5|MT<^&f=J@vw1HRBQoA+zWKNSv1ri}4`XFhv zx3r`;hA%Sd0)ArtfGD!->-}6Kiz%@LMbem4Wej*wjG5B<%&uz)s9aFXu#}EiXQgD3 zZ+fGp{02I=4&vGqoUK&?;`UW-6sKY%DD76pLfR(PL*KB+26*SY}W$j%Dudg`f!B7;8ZmK-_@5Vbs)OYY9 zYv$_UwpN^xu|)9WgLFQA-!q-By(d@MIP2kgd-tw8PVSU>?cu#trXltd#UAIi~x zONdxQlP3}BW4D^$^Sm}M8BFz~6RX=9H}0;m(LL@q*-pqJ7*;exBQR6Hf^&}t*0YKg zMz{7nuMX!>&m`+)2Oh+wT6TvhSBRmAoaZg!Yo}Fyb7t~#O2PPUxu?Gt(Ayjkcw}`8 z0#}YehM5s*1zL)9P=~gAC-UFcNRZWr%&J2r*FlPPrA(DPX%u%+HjjXln~Y6+js_bN zq=_)EGZHc~{?U7s>=xCTQ$dkMl0h0yL9U zTk!_5r1e;mG+X%u!x$}F)dFn!klRR2Oh(~Q>Zyn6<&990K(jfN7Xv;P^#rPQ0gg>a zR|Pqf!;}`oFonH9vI`Bk#|Z00yK+5qxMaU}`tZ*6N{w!|*+m7lBDWGl3~?PExQwa} zsOux4z1 zC9v0F1hm1a{47b=H#fxM)G|m8T1?8?T%-c*?}=(f)>Di1o+b|p$wdaOG{)7O$d6B_ z`IBh%?B(_#B;`S=(mOP?-6fdabGY7~YSOTh8&PX=WOhK~OqQ|NhMmz%B6vr7I@o*{ z5a(yjY%VfY^!;y=uWb=7Cl-{GPX=*nJyFnGrHYWbcS$PO+pdPU3AXKn3!J0}{IiJ} z63)$P&I<;SCY`#qsC92XEgpU>h(ZznE>M75v_h};M3WAJt|Wb9sl`=!3#rFrK!f%l z(tNuwr&oI9f{qB32|}?<2@WX=?zcXn)KJi7DKZwfrMMYl`85GloOw=tL}jxR^l=LN zZeq^utQFKoRD)6L9*fG2Juw4B4*_*;NSyMOyLOmX_b!hY+o*RqpQPPCicL{d#BJNG z&eG`7mM<3RFt_u(Cc-y&k*3zvR*CaUwCJ49WFT|t9mq}QIENu1u5XE)rAzW_LhMO@2^L)p zy>k&U1SUJa*HvJAf=q=lI#L+GrTG!8fl?TNmm0-K?3`*zJ6aeEU&*yrlb%6EwK4Wp zbT8FlH5(2oJrej^617z)Ep2Do)m(OYmSspfFwFH(s~6g^sx_>H6DO2V;Ye-WoXOL# z`Y~?$TWoqowH;ZSHoZqtfSSEA(35$!5Ot&M)qW7{lCvjjqFuDTNXyqV)=c@YD(1aO zw*eiVx-|Ow7i`%pcc>SzNN2m6v;~^8B;`TUq-cW z$u`cr(cPr>3sx+hL{YD_eMI*Y z=iQXiY#ni;`~kt_b(1z{%De@+o%fUr*|O3eJ>7L1iXcN7Zqx=f<&s+@v(9yt*Fe)9 zX4Ffjh-zPT#VdX)-SyE3J;y43FOekB$5)lpkP48mr0YxhBxSZdlOBfo?(a4uH!`q= z0wZwKJbV^Kb8X2{EiA@DL4FNhr3qDrzW;FymLKE}(JXM#`*w}n8$!%k6bcIqg2W*(=oB^n{(r*aP)KM7KM4RwpVBC_GD#4MMrE@2EE-`mn#|%+KopuC z4~kD>lPTmzK@5q-XVPhWauEuNL!^-SWfBudg~zJ2*&J#iOpnv6Q|Sc?HyWf=qA+_L zJ^K5j!KL(jEJl4Bp~b2bX{9PVOxnL@uUh4K z3Y3;b7qMq&^1K!M2cf-EBzWxI>idy~+%NLTyoW_-$?c|@SnYmyQpM};ntN4(OPamK zw^4|#ax+QE;y@rNY}Yk!)n|6RZ9aDur{ifeehv<6zbxv|sxyi7r(uHT)AJp?g@)P?SEPJ;1I_o0_+d2-D$g{xCgMyHv?_(0Tp=yePj3!DexQw|< z8)E~p&8$SKBuJW|jytQ1hOmD+ugglDtx!8N z4=nL(n*&Ml+bID?EzA_0DXHSLn98qnFzrYZy5jGtY2%qMvvMp)A3R7iUly#hJAC&u zku&(&HVqQxD9aMGpuEg#3LihqGBUpj#7YEL0!mVa zD#A35vTr)Hbh}qlz;x^DL(L6)=NC4W4Miw0D}t92&5!FqF^KE$@MJ}}sK|S`>V^>SC zyxj1?P~FE#F|bqTK{k}5LgYu)tfMU2vm}cPvRCDoQPmN27UxTDL~y^cucd<-ua!M< zGqtRYi3iyj(w#ous|DJ-*N;8IphJ$WQ)o)p(z7@}Z#yf1%{c?hWkWN&XPZnfddogV zIh2a#NtFZlp6L1GpMgVcf>%b{58Wr1YV>s%B(99krvBWCt4)Bjk^CKt+H*!_dPvsQ zv0>u59T`DSE^~dA*o>3P!0q||Z*0UXwijsOPVE%zQ;#Z?^IMuFDz4z|EyJ|umCIS2 zR+671j8^LlhKHpu{e>ID3_gchI9&Br8Q=Uc5hWl zpkUJ0mB7Yb^vv10ceOL6BHGg?VlDuG-_H0htGF$CG`zJ6)AyCx;hmJqWOZm+c2I`qO%O4%oU=75P)QMDDx!p$@7aY?xF;sz%EnW2g>9^4zcz{dnzONq-_y42XVGJbX^zb;)Jm$T zlOxJ{C8Xdtw3?3QG)i&jrEgmoHt%6IMo!iKlA5#pXNXZAT~3;nQHWI9tP=CGi4Ew3;3>|#b|6XDx1k#oY)$y*@k>XLYO z7y0!-jB`da{2-F@l~0*m^OGIjQ}vD1Dy;mF>zNnK0RA6yBTm#x8Fi1<%vtZE`Aek}Pm@*@ zxm8@8p2yK8c3n%-{EAR$eeYS|l?i^3S+_eZC4HG~N^|DO{60L_0QwI;+jM+}L|AHQ z>5Y3pF*>}(iK%QMU6eu;OuRhI=+==$@zzLhsLVLH+AETsJP#?roVcyeA4%AmxG#%q z+6g5v2S%0Xww$rjbmtReiAGalkI{L={d+UdiYUQ#zGzgQvsy{Z943yEmclq=!KBGTEaf&pe!>uW^!-~GQ zk~O6|DJkljunBh{siKlorm18=BCFk!Qa(9i&9wo)B%v8V>rcT$*}}U`F}a5<**p;R z06OT~xXdOL`R73lAt{s_!5ZM7B8eh{yBWkHJZkC>R4$n5)(XrJm?6zYQD_=~*C2wB zzJbe*^J_yJ;uTt$p>y3m%hC)SOsrvxmx!LZBJjogS{m9AzLX_E(Ka=lI6ul^Mk36t z@Z~^r;VMfWlN@TXBKM(@hC{qbKBs79_D zA|9@aDk<@0n(G`WTFR{q5}z5$l5sddDQ&ITmKsT+GJwmyTXjTx9x%ehCaY@3`z)*z zW508f#xlgF49PBf>mkw5NK6f|>Jh$~$w3o&t6DrXJE%-KYB>wrxx|Mwn&T{Rk+V3T zyffk_bKAm!BeU}5HGA1ENjkFZADbhxAxl`9sd*7Z6HWSg6|2S;k|0HrJ0xJtxMGl& zYoo2QezVx|H)~3j%o9w5SHxuT6$waA(`$?pI=Zv6l4LX}gxRmEgr5^GpD>jp`Y$R2 zVMn{H6O$=WgTT8R#vscpMfyE0l;pot0*;G^tLaP^i~}z#B9L^>ABrZ&Yl1Q$jkkPw zPOS?^1kA1i+s3h>H7ftCL;)_-F(}(RvXZf-`Nco`)>0Zlx;wh99K{^j-Uv&QCYlNm z^r*Vb!nc(s9|KE4V}2CXA*&SDJv^3>`kFA!12_#Y$Fd}9?J%RZ{QGDDxR4D`;RxgD}sPYqU5 zd$+CK7|JzZK=om;JAMn|`7R_swlf|VIaXG30=Q~QzA^bnlNn26f~3U@I*_kCi^q_= za?c8IMTKudD&4IjOTvoCqGYfb`lwFrRSH|fD9g#M^-m!~&`A;Kr(zwa+`_57Av}un zKqQzb^d^~ZUFk)kakCF!kXd^zl3O05SloV<)9@HhGI+#Hq0EJLk5 z9v^)u*@0(>`)s;=7}4u8ITKGVqbV@EZb++MT(kSFM695B;WjMlF!cYzYOoiC1xQI& z!2A0w9DqQ<%RChDk`bC#q)?`!8b%2bjWP?m1D)FOcaTKUC4rcw@VnDITQEFUV$?{M z!S$`;ADgAjG`Rxdadux*jc2+{CQ&)S6|NO`0+_OJ!7LC2Rx3 zll&w4fJOu6kbL&yo?PZ_{TD6tS6cdCDN3iC=j0hUxm9hIP06`6tjo!rV!kdsxfwasmVbw#)^n}d{WMu2?v3!Nsi&l^YiYN5l%l2Y5i}auMxMKckVj*!t zbeUyZ=QtdGmd%)}TM3uUeyHS*=L4-Ukv(0O6vI_Q$5|^^u?D{b@hpB2w(>DFdvL98 zX0bJ;;sM-M0`-#wRooJ#I~6=;{Dmkit*uRoBaq5j3&$`^nj~!qSv@ZhhORn}VXL-? zPtnMi@xD`53f`csrAo}A%UGp^D`z|mS*;*Lv}n7Uzb&L*Iog#J3no4TVF1rL8MTEosU|oDe*sEkDXto8l``UG{8s z9BdvS4|xjdWLfDPNSR`+;d7!r{yY*Lo+#WHOZG}`Od#eq#bP60Wdg$J0@2_(3^y%AW&D-R2p8ZrXg3uBK0hhe%yL_?dx0S3BQ zlx_O5O7^+vJ2Vng=;`ccc47s z#niyjyb*HzH19L}L3~}JZYJMvZ1;K8_=e5Y4)RGSN6F}_@Jjk9Mmuk!p}uvzQtAgS z_a!|Hblv5!be^KXHC}f2nlMa~Y6e+Om3c=U=<6=$=}Ldf?d%hB?bcGyui`I5eFwv@ zs`frTUlgk7b=|n4UiyAv-kd{Il(Tl;>0a{qYzLN;eLB$!t!Jm0o(03juU1w4hU|U8 zat#M1mu>Lzq*+DKK|Pn!%DU2agwL&mc-_!)Z%RRY4HM5&PFpeFERcqB9c)avd zcN7TRTy$C+Fe882HvQH-LY2DnqMJc*k2h>Nx~nr|c1G;4cY~omTT~uz znJX>TOQ+Iv4;?F6wD!RFWztXgv2{^6sz-Dtc?~gLCJ9#g2mk~D1A#x_z!*dM{Qrai zAkX+5MjH-_L_iRT6iO!ph(;mt7=%Iz2#3R9(P*5CFAR=FtH8|Z>D~0pg zZT@$-&FX!FwDmQK^QyZ$E9&Zvz3!S&xxVV_vjIG?D>m3J?W(AyC#)MDq_2>3e$%ln zx>BDb@6;CGvkn9psyPm0dZRy%{3NueYnrVR!Z0g@=%}yi?HRK%OJMOqX$#%~NYV>2 z7)7vTda^dlGa~^$Oya`sMR4M^DWq`ZlKsoD1Gw@$kt_h^wXBqeoUw~4xS1(wdR)f2 z?Ig;AyYsUMl@{6C+sB!AL&4|u76$Y_uGcEk+Zc|FsAxBS`_Mkow>3obSceMUTAXg7zIB(s58c|) z6Dd}x`Thmf_npP-LS0--ktoAm!_zH5aMw#>^Kxd-q4zmbbynXJ^}9mhFUF7K$MTh7 zs?7+(6x1a=&7)EN742)n{B*w&w&v4+7PHZY6^k?y=>UWkDURB#m= zvg6+P&|8*yO<@=)hsstG`m-*ioq4pjoY+u-a%v96NHwTJ{ZvEfbj)!rF$ad$P|C7; zME(Sz=0fmc1MhRDeio`F#(&YnsAg~3zBltV0asgve6MY6uJuevk0b|#XK12DBhcMZ zVcbG6392Y~F4&ui%~&n|0-Oh4pVr&?SrGy)uBHIoO(YIpXPo#c=XR1{bGC79`EaaM z;__QeNrGe!JS>Dj%AT?+X~s=IJqT`Sp_~3t4cMQ+#$^RtY<_hvp&>AsG<2Wqpi{7f z#=EulXVhF&SuY5VkJ0!(QruKhN4Z?O^Inx<(mqE_31_6p2=81xA2gDE)WwE~@eWEP zI!fh`M3dBW&tl>^v6dn|DCq5z+fgTmpN(z!h$h^};XrC$ag00kMWRcqPn#J_luvC;}$uj_-(ou^N za{l^>xtF7mA;2T%pt4LUSwAqvne=${ZvyYd_^6=LG!G14pP^oF}+Hd7QFiCdy_;BpxixqHq{CZ z1%%5T(=Y}!eki&aZnJ$MPFeR#ON8W6Y#NrbD&FA_Ep|PqSN{Ex;o7}AtAGRlLZsidSHXh3qD4#J&8D_c%!1iqOHpq-Lb1s=_L!6jm2%U zo2R)iUnLD`_SDc&MEvB=-A!I*zE7ufUp{0+)<>19;zXr~KrUlfq%YB7lLZ+PW)W|M zYHqDFm6Uo}LL<0PnwG35{$bgKzjG?y$zcYpbCA)>@~WM$ z;?HTx@=V%RglJ4!nyc_xLoUXiex^;{zV1f(RaR#6!-2i`C3(azZr{rCdfvbL8UV^xy+Na zF~llXDs!QTtpp;Od8PnZ29uF(bKzyH(mu|+qWqy|XgQVEI4t}bC2Z1`y-NjNkW7s5 z9AYVwaZW|rwhV#OgRjK3vN2d?iC3QXPRopbHjhu30;zmr|5R5rMLwqxI&t(j`iTOFUEX1dR| zSk;s>Ba1KEdyP}iCD+}~kMFL8of6faYvOGmbKSK^?rt#91S+BAT>8&;7SvmYOvdMa zveHw7MM8&37cs%fhpYO}aLv*+ys zwbtffVtbD9Wi7g|ptet;oMPEv?XjDc0yN0FTL4&dVX?G4GQA7Cm+#y0wKI-s#2dq? zZz=7#2|2_#)In07xPI>xY8Sf=xt_|2H(?|EHhFVQ<)v%9S7XG-jWqnS+wx%|SmVB@ zn!*ouxFdNTzR-x14J5TnAegN>bc$|Kx5Wl9+}g@qw$+ACQ}_DgX2$IAi9L$GKQ(qt z3v`cbeH&!nhp4b4edWP3rgVMnMn{0H_wlY}}^^^!!J%h0A9AV&ZM- zsK2Y$qXxECC4f9;T9}O-i|1-vj@n6P;8A2=MoW~Gi(;PVzGEYpvFXh5FaEZP;K!^o zZcgmX50v|_E?0@vtt`n2>)1j5coWX9`C6-fJ}R zN&HERru$re>cKh;;L2GQQ?!xa_j?g~$uJL4GF2I6uIS+0X0_4JsW*pAy zE^&wP1HB0RQ<6aV2;Zm3}~VY zY;z0fT@mJYvG|yVw1050Z>h|j%hd|Rvc*rr=Z(=WOsN&iIPdH;5iyqts4k;LZ7Qr~ z8qfSN@yeN~9FtOOF3a^5?$mOrWR`({6|@{-Y&gzHa!v0@UIuTw#Qceh@%mO-#KcFfN8Dm8xCNl01m_A9kninqEy>odjt12!4ukDJQ%%zA(Bx6bqYS2Al``7O zjN37eLg!9$Hw2M3Cyt*f`ef;pfHPvW?}U(szFjRZAFMv9$LBs`zU^{4pAg(x%sT{z zK;VbSMJ(XWC=|6cMKI%>5@EvC6~0PL2&SfugFcJ^t`FFQigIX;+I3Uz*KRDE z&j6(2ihZYENX(MtG&xU7$f}dl$z|@&uAL?_-B0qi-beXCriNX~VB~cQ<14D=v<(Le zNXYP%)JgbmPC)%iR|ZoOUx%*UM`aQdrsR@nTuwHu%s?;B_9krLm*}FIGn&qfhG{gh zQLC8ZGrX7(rlPdC`w+mvB5ri5*w`v!bBfNua{|`Uh;4BNSM*ZXP`vQ!<31L@dV_Wte8nY!k?mW#6Jj;`sq|SRz3M`R}tx1SvGOKXMhUT0LcHZ`C&6IHCIL9Xt{%XlP~fmU@yIxNFU1=g!oTDmi%DW->9^xS5P zKy}k5&j~yt61zxoq`qcCrwd0dRmVDx4uymO*G3_1V&J*r@-(CTl*p<}$W3I0v1Aj` za0`(gjH7BZQaE;Oc9jr&1(Kg}R@rdis1X93>Y~cky(8_e@XnoeleJW4Qql8bFA3)G zCytUbIQLDS*T&#uQcDHR{M8Ld!*g0a1JqR%uAAqOkTG6? zRwnhf2=PjTTxE!R)1ZwCK-o+^O6)Fx>;hUl?_2~p7j#(fe| zmwSzZ+r$kA)3;4Fm}E}3d+CblmG;*6`EORA8qS8h5ZynQ;zZM6_jj7_vCK!4aTsPB z3h@4U>D-HmD09@7L(N|QB_9?egK#s6JZ;3`57w}fr66ekWE3S^MGJq@u{TlW9Tqam zbs1h`Pe;&LMUQ)9Pzw-ZG(7K~yLdShi-M`Km5|j#Xllwx5|;pGYI(EyKBUqtj!%Pb z`-84Nm}{w(kduOG@sUXllP9t^b>~RAZ(H`)SjcY+vvUl27LCSpF2(VI?0fp_JGw_Uuk>(t6QNP0sZt zSdS1gMp&A8DOYP0g=-7s{}~sK!B7<&OthhAYgSj0r}BvVFCv|#S&Z07j1P|rSn)6A ztt)YmSK{=}x-m+}p%5CRRB5{uq8gWy^stXS`Y>A`NVTaWy&y(~C`a`m@D{kUp2HH2 zr_y5HKyT<9;+Koy4!X&IH~J6SDxfiY7;l2WRtRP<4Z_~iQl z8#t2G;HGzRnw8NbCgLbZ-7UAPpH}yS?LeP(Aj>ECqXbn?FG)=%fKl-8Mo9}4P3&)S zeOYS&;n8N*5x`s+a{1RcN-Tmi$P=<~Pfm`W;Hdpm*`<9FCUz#zhf5(Fkaxe3=<=x4 zy|dGT5+Kr$QI_(k`DD93MN+wHX^|U;F{(qj6tqLu?T32;jAyDRq4pmk?|gLivFWou zyF$ZL+So~!e=e}xbfTLT{^+@Ax4Aj9t)_G@6Dm>6?{~;XC1)oJyR#CbF0?CJ1XAN; z&i6P`q1Y)GgbjK(6fss_ohLf#dGRTt*@ezDnXM5J+&H^N%RCx1|C-`R99VHIqP2U< z*hmE?7aK721!HcwPCLqJSjz&nmuFUWer4BV)TFjEhV(bFN99O5DkQH(hG#`@yY$Og z@`pYHd@{qY8OAuv7Wn0C#`3J5=ADjs-s;ZwhUani(ntVrroJY*)lG(0~q>d?f`GV53+1oA$cns9(uNh%( zXlJY7Nl9*~#0Z)f;d00Acc+Ij&EUw@B?TEIx`;bRuj5g<0+d;W)>55T*R*g6wnBYL zPlwIpD$a6MU)St*-M8HUDEF4WSJ!X!*>d#8*M33mP@1`vj95!-TIs^Itrx@l*!L(< zOTfpRd6i6O0V%nUa397MdapSdl=E?in17g&RdLg&V^+yX(_L@dH!u&I&ZA1$o#jJ_ z&CMA{k5$yl_};Ra_se%QcU!#I-CGjlW1%%Qd?Nhz&JNi`WbRTI&k?ldS+3^!Fzdb| z=oBx5N|z^R1Gt>7vW+^zl`(WKe+=Bt*uI=yqc2gm0o45WsILYnEd$$=ev#4X8IuFw zu0YaoA&(b1QOt3ml~C2pImm0yc)Ev3;#1dF0mWK_z>P}#8(E;&M5ss4;X8?iBGKY0 zl(ut#yULYNy*Z^@b!#p;&i2{*Uka2s&{o~2;MGK|A^`sYK)?_12mk{Ag+d^3APgQC z2!p`k@R*Di6%&F%;V@WaMjsf8!s4(;`}!Rpk4WQkXrw9yADG9YQD`(mV1oDDp`RUP}#C`tY!{ z3v)o_H<4WT6-M(L)jc(?GiNl%s+<Wm8y@G&@8}Po&8z)^qcgn%TCL4;Ryw z`?}u3@@?RkNYI_*c_`1E3q`=OR3QIDH&tn6(W~``5^UX&luGGNUsSPc16vUS}A zovMtz(T`8l6f*j)X(cmZUN%$E+M{~B4+!<$JR>C_2s2B9xb>Wqbn_w{ak}4yuCa82?m5)H{X@=k?XPcWk88cj zY1UP>HbGP5*}~n9uJ-6Q*7k73-xeHAG)r>KJzFm{hIwwfF#ILMY@8QA&_fnAUw`D$ z9yW^2f=t#kXySv7{8 z;5IjMw-?M2`a*v^l%zz2Fc+_JEK|-pF)0eD%(>+fNt2=ld*z^mzogh}(tCzgg+b!I zR@P-!Qm|5F@ghA()?$;vw|Q*^ou%Y}UmK(AVrNLSCj<84*~2+a&#|t%XMX=(k_dCm z(Y-kJo`4@yr+p3t(Yu!1v6Z9eKnS5}w6=g?+X4h!h`t^o6@u6mne=*SP4cprK+#m& z$8u46377<0W#anlZV)u^6V`06n{)3A;C#wgXY}6YnF>qbM zwAJ3(Vl-Dq1SHb6^x$1nTqK53>IE%GUH}K!`5x%CjIriMei{ksS*bmt!_p*cNO%G= z$CKTjOEKk*kCW2u7OH@!VO%gvc_kNz? zY7{eXAsESs>j#ZW+K_LAsmwV64r2k!kIXeSBxw&1C8KVj3%r&VCFCqxo{1StLp^!FLBZb=_6qAUglIZ(5iC|OZibZh-O@bk5p)rxXk5=h!usODFg^jU2 zstb+os(AWv8|=iDaA<*30>M7&6#9+p@=T*>B||D3PFj_ndOhOKxC`m&3klgXj1DInNXTP5u3%$w(ZM;f~pV@jdoQmbUH zA0;DhqkCk4&E_Y)FI1;SvE>qRMATgbf)7;iT(?Y=Eu3YX zHR4T7tEg{p#QUt#=JC_$|9LRnoN1GTH?r2KYTHCbu*~hN!P^_juQT%47%@;M6EukGq zaP}E>A6?fkVPE3AM{|PgQmVw=(OK28@6r)Qauk~yeJ_J!merOCyzSJhRLicBzsxZH zSnZd*sPW;+nYls=wz(w8X|oN%*P4~9C^org`=KR@RjgT@6KA#FXu=D#AnSy1>U7($ zKiX>_ASro~@#M)|nGmdMm!&bLwIjocF5TJJeOpg97Kyq`eoyAT3@4t371NVt=|^0t8R{I!pGs+L^>|*(kVN0liCnNjc+f@#(L=?k7_;^ z8p=wxS5dM-{x~Qzm}n(&m2q;Iea#HgyJ|8(j0Ea2l}Xa%POrD|4c6v1PI0xaO^Yd& zdX>@W_9dh{jZXfb-i@Z%P=vVBpmRB+WYHn?RP^7cgE7K6a+y|Sx1=^rr8J}c)TngbiDGO%lJlq;w%E5j-> zxRw#qwu8GpsmZYb`j^n;xWnn1YIm&}!=HisnUf`~;+UO)*tD7no?)=1QPVGq(+(lE z8e!pz`^BfTZV7qCJIlkg6Kypjz@njyH&Smk10lD2juML}8nMEld=!eY<}6cVscSB# z+kHKVjgWIM4T4b)3I7z4ik0f!Im*ecSwEVBnLqRNEYuvp8!!<|0X=c+6H`8!^I#s) zIXOc%t+7Uy`}I3|@F40^yV-yyJHDxNj3b*^p2@`;$%CmQ>7}FQ6k{Dgshca~J}cS; zF`%#(GI=DSb;8qh7c2wBsjj#R4#Pp@!Bf4f^7*)1Bqan=lf+gv`JXZAxkUl98SDPS z8Bi($89eHbp&J!8vIeNMOSCeg!rA;TA;YBl>=dCE7;wxwlA%GND=blkn)?eyL-4`t z6RD|DH%qr4YBrN35hRf%JF9NGFqIrjQAI><4r^$Zxop1!)2eJuLkht|BdInj-=P#$ z#}Qx;;Ih9H%^b;7qAZ0S()>O$O|8-!JW6nqdY`VEwZB5~#ZyBQOkoxosxIOeG1@M} zGjmANWyHZcJzLx^S%bo2ILBLoL2~aTlhr9a4h}nhsw6BmGD90WVwuq$r?H_Uu@tln zEfvZRDEbXUn}VTaUA+qrF4Fle+-xB;8OG~Xj1x1&;#Lm|E=Jqku`+HigMlrXdo6?o zv(j`Qxst#FEGF!k6$~Li+X6~a2*MatB{y@8O$_iCF0YR=b-XC;Ios7=Ex(}pL=fZq1F0qp~ zOnx%EJ-_?<$&}49#1NtM7^Y;gt)oc{Qp3k{UaF)P!BYvbI*QHI>N^x7L+nM&NiVXi zNdOlDukL#Vk1dFAe2z0B-O3T`NVpxCNp3>s>-HxL?HDh8hfHo{Cg}yiXCeJOX-p~ z35?EC@kcz)MoIs?^fWRA15aHi7lJ>@{I8uA9kcSEEd2Pb%#hQ4GPKnRx4W;nLCQh( z63Pn-5b9CJqL&i8XU|(Hz*Qs9(bB0r7BACtr0S!O(~&fcufMzFJfzJ-ZEaOT ziNV~Ax3w-YDYU5c)2Ylo7IF(xyJbR2qDid43pEOq*{&$6henzxxb%~;v#L7G`qOJG z8>LH`q-ddoUdwQIxFs?Wj-OvRLs zg>I1)`kR=Hxoi9kgu%5^^~@unqT2J(ZDCE5p~{e?A+)ohp+KwH`X8+OP$XY1B&RV# zRL-Wwre`fMPAV3o1^QKtYk7wT^^>wzNCak z*Q0)y*wzf#j>yGvRigUF$*-Zyq&QGFrY3LEBov%QFntWEnsdaF+}3JYyrs z0l-WGPr20bu}vQl1QoFG>K_FZhxmSoQC-VBXQZm_AlLjs8Z&UsT{90C$BAmTT5+^DfBrSt+)CQjZ5gHlZrw5|6GB( zTkKZgmu(;o^9RZu&)}?yKstRhR^TTL=a)JA3=) zzs(|JJX2B@3oWyEV}m%rE-(<3&BLNrn|?gRw1-J4Xd0Y+DHN`rrBc1t5VIkCFeG3~ zjmkreoHyFo$;F?xf$_Y>&|fsdz>*O{vNbUa9aaSSMJzh4Y1cw*1lxS0NGv`~f(fLv zE2_2O2mRAiqy$ICdqX+er>wr%)nZ4!I^!~>H{>(nZA#2|!?<1*#oAK1&L6@_Lo)tO zT~wo0EO25Wu1(TxOzTE6dxl>`2Uazn#mrDkTSMTw7Fz}T!U(4o%eKGVI><8W)5`ZQ z`<{%I?K~}xv_eRo?q9{RQa4nxqHQW^R7$(UygqTkAqE?1Yty8LW>ktunL*1&CXJ4U za8oP;-~irCtEx2{8ISF`E|I8C{q#I$8PUNRB4iR5x`&?Pc`_^hFk9M7srexzUpuio zI>v3znxe055<^q?;}DQsGg>y3wfooQRNJ9f!x{GCl zwZw$!=32AJtDfD_;A*RMYCK$H=#$76*;YPKs-4+j(lgf8*j)y&J=E^#{=`2{d&Lo? zp@j|5@w?(GnCA=vYUwC$p_vl=Us_`0D1?3&8dNYrAr?k=#mmOL!vk-eTB?vkcF zi=rNibLdHriHs^j?jmoN+ao3#7t|M~&7zN!0M?W?Qr5*%DR#VRUln3??e(cpy*k3V zgulgjT;>!U&J_;C++qv&%(ux z)sgCiRLqhC>Wk+ri12{N?7;Tw8O~-RK`lbt5@!CtT(89EE6|G;Nhh*1deq7C}$D z5J^*U&n1UI#DG3gY+?*W95SR&F5x`e8@XF;s*ah)K*l+SE?mBstCc=9jO<%Yvgr zURq>bntJNmna#{QmfNUA`EklCCuNe_`2CT0Z*(~=&0`%%t9DzvmcK|IOH9i+q^*7- zRC?1P9Wbc*=WX4<1thwi75RI5;X)Uv60O)Sj(750#>>LNBLb^N5ZpcNZ~e<`B!@Q_ zaOvJ9ktr)UY&Ug&%B9_4+L}dRk&jiCP|G2|PvD!Nac7UhNnS@qsI+x5K+jkt$=Rl6+^tHXP{(_`O*$SkqD zy>=-L27Ncc>Q*hY1&zT@5$m6=L$cuO(~CtvJ3H3XY1J=noB6A}%Z=aMGj>~@roF|y zrZvaLSx?&Y=)sMzYY4TJtAE5!cMQ`4f&r^yp=M%NP1d))e)6mvS z$vFt}q+W8Rm~Gm^dHl!|G-Y#*mZppZyY`~we!L!huY z6jBEd0K{T(s9Y8y2!=x=FqoWLD;SZ*KoO{HK36J^$D^>=Jc2J4g~lQ0 zaOgCGbvB&KrV+|idO-r9(x{S|TwYTyp1`5tDx}h738K;^(RtVi1ssc5=FymK1`8*t zOe59WgwBOKt4rXu%SDn&EwIGxkt@{ZafZCoDz!UA{%azJL~c}kWg01NyVx<%H}-S` zW|ms1_dJxAzbC>-VRUQ_I<-R5QYU!o^j7ggqv`Hbd~T}eRKrao7`dIlH3y$?=ov}= zzWXu8&+9Wa%wFtIrBbn?Y$aeEf)SfnP97y>x@O#RKB1;@~2FB2O`kqHX0=VwOu_R>cL=D^$ zg+k7P2!B7%`_!mNki)3QH4M^Ny)$s!wE)8m+-TN1532<&M(jiB4krs*-yOv8oD%2F zkOa{sPLeBx{kIcr#Xux1w9^DlY$|6FM=OI>Moto}B_cjB%M}Aj>B5UDO|z2j^0V^< zVE(L$^fM9DRMhT-E0eqo$h#3VFzhxDs!tX_();^QQqCjRp3>Fi7`n4>v$X8YE%j>= zR;~4j(>F2`PfSG>E3FT)?hFG>^kfys<{2IYDD~(@IB|%h(RkEMTg89kwRGKlzLrblXT!BzXFS(9OlZWnjI$=DBkt_gSxYWn zDHAm~BavjcagF-_;aGEDl;xN#Co=5H1{(4{O-j<2=1xN=i}CuhbA9kJOp`I-aSCdM zVrdrg*GDic+KbO(wGi97W9du8mKFO5NkZ_j$lZ-dl}+}CS%by9SAmBpc$Ue!AeC)J z637!=BSA4z&Z%AOd>ZW<$z3eEtra6=Xl5OhDx~=Co_YN(t{97?bV!t68<}-1Y1Tfr zY+6cdIwA&m6&D=6UWJ)>c!DRHmQR%jL>8cPmNLvY&o99Td5l|W=7WWak5`D}u z+d61+U5?ADTgs)pwa5aa%+a-PkEQP!6(XZnvhI23MTwzeh?8Bxu5vKpg{bv>!i~G= zX)L)Q#l$xJ)sxqPg!P>=bjnvAm)zrZ=7v?ZYqM>c;v&So0H)4 zyGDUeqrpjO4V~B>qkB&x+Qd?@DaOLmn*wOl7@kmN(m7Senu{{Ho%8j*IJI1TblW5izaNrSA?4A zY*{^W^tDCzs+pZ3r-khC5J)Ac;~gVWS+OaDAV@lnP;;|7R-p$mOEV%Pl;4JJ)j~f4 zr6=P}w^B{bUQ_zL3{YK(gATUX#Uj}cR7p&HrHZcDNrd=hom5nGj+dGfmo23&2r{=m zqaRyt{i*83i0=M@*<@7)mtkVKh+e=Y>!mtSwTh`q3E!-#TS(7?lu!qP1r##@b?q`= zl2uMK$l4TOPGT^zi@dN+il;D^+?#@LjjKw=Rbbmxh{H@4I2@X^mKJ&@e%9%K+XdRr zS`7Wfh-mA#@`8^TeF~1%b?>HovbAD$tTrx!KSM`wWZSexsY{+;;;*S71t(P)7~Vk}yWDyh8S(sYlCB#tHKOYvn;{1Urw zF@s&)(z~F{7$rH~aTP4cm`g>XPOKLGWM_p@Z24=@HQ1!K`s`omMUaoI=DgyR`&+W( z#X|VI2BwVvn4v*`P4zKG;FlXe&D8AE6}?j(#qoG@W^ByUo+rGvtdY)sORZDf&R2Gp zbTh$+h&8!wG^QthuvRq8=nEM{2>8F`xunQ&@h094Fs@^sEMP@U&eJMeirk$xgvuHZ zBdUWC=3a*__Hl4uHh@1-mQ6Zl=E}I^e-E7l^ldAW{4V!)jc!xX-i||NT`6@t7lyvN z?J4tZCl?p=ME$j!W-V%G09;tK6|>H!BE-h_vmzw{h%->E-bx`__7pbTR6dw;iEyE? zhaR5ye_2^F#JVraX}4K5?{EYm0;_snmUD7o`pa`wpH>(vUGb8NDCt!(Ih zNAUgej=^i4P5ERHfeExk(+JlRL|N(Te0|D}JmWq_*mCSH^&M4hl<%yC8xygb(`$(% zZ>ZXKp3QxAaptTlzk>3b%fW0traPw;bEgV<2tzB))+ME`l$1=}tcHt<3<> zN`FpNP(~1$gqVwkmlH>>j00~Oks~ojQ8uy3pxGn1a3=qVoLSrs! zHpv9kg?w&nu#=2%OHgQjYYxxo{znSnbYoP=??Cv>j$qCRj;R>^=>Wctkjcc7e2QSn z#hm^Iu(TpNk|YF?Dc;T`tfI&UEH7S&0y6^YYXr@zQVr;Y5hQwq=BFh7i0SOauc&hF zK$?uOb?t!jNXGw*fc8cbL~h8DjvCDna^TD|lPA9Is&Ir!zH_ZIlqg`Cr1uHy-1(-Y zfKf>Z=we*3lxr!%ZU=72#x~N2B@kkWQUzF+ugs?>pdhM3Th1DlaKQ>^n+(VZ--jMx z?A*=Kw)}|7vCuOKk068#_*Ch9&_~FG!)o>@7KiO>$`F!RafKjl zfW0o#!2(*33>04OK9xsX6le-DE8;JP;9W?dDrgqtF@Rpt#FIuvAqi-a=v35f2z2Q# zXm1-Nh+dFzqNDJZxDEzfZ=nYw5}dA-)XG@L@BEr=dT#MFrAKQX2#XW&h_~?v1~P`+ zuw4c%+LZ);P^oTYi!fAUdc({rv=CZ3Nj)LwP)@KjC(XpJr>2&L0{iOZ!-Z2Hv40Y# zLnS95*F@sNZJ_1`TN00a@yiyDE4J$I_Y2FCk;L*Jh7G`Kk+A3GdSh+V4Gg0DDmxD+9NuiI z_6xX|t`x>-)ig5$4aw+wu?Y*{0v}=W9_RFItLD6Cz{*0GJqxN|MoP@)K@(^@D2<^z zE5`^C2v?+Vo@{zquUM&AmL6Q6rB6 zP;F@;Di%L&D+psagNeNoC19V9s>`&1>ys@gDzbzm=MgjhuMJrw^UBSzaA64aI?~k! z;2s+*CVBiduHX{iHhPpHZ6uXCqRL<<1Qrwp$V!TTe^vQ+gcHPXGP}nY~tZD zi0`V5e5KY=N+QCGvrOh49cy1(YyntI83j%Y4U-g1Z-y%J{~T&#HtTlO5Q8_5ZeNGv zU6hd)D*n*p`0b7alOjyyu6Bmc*hlgV$o3xmwjV@@=(y!}sc|5g)Yj~9ZnqAyzvHn` zbZIG7M!~Q6utRxTCZ&yIGlTSHEu%=qhYAdkx-B?6(Ca!7uG{ZT zH}#lxvR0oW43a5}UEgo=haMr~_prP&dSRGAD1XiAjss$|t~ z;Lz0(STam!3yn<0=7Y};uWf%h6yofEH?)f7p-^t>D z>Urp`Zv<4~ld&((4Apd(QYcu6XwfA_3whV3aMJcvHoUTIJ!&?_A!9pF258R{Fh$j{ zv#Pj8*bNU75+x!6fIi<(fCLl*0DrnhaVR{-0MOvg00HLfz!$0W*wIKM$Ix|ZZNj|>>&xsGF0zoo4ru+GBmTH5JDh+8zvu@ z?L%wIwBE80!;aN9X%i;JMX|IOAtsFj*6Fzmqu8jivHN7;KaYHf)=9C07R9G*!qU}4 zPy+E1LvVzh6Qj`j#WOR{@_QpjQnLn`%n?M`uR_w>2^YW+LkSc(5;7bCMln)|_03Fl zaHXXTGG!dhaU$C&!3u=|C%La2wKBymgqr~>bW`t5JWm_~;JQ&euA9D2jY{S>@S~|D zQWBE+AV$sgNcBMPWj^w;5c;z*P*Mu`mRJ%@R~17pb!lU;3FQr1%l2iU$jwhQXuqxY zEvIO=?Svz0IjOrKldwBJ-P4y`jA(Qf5V@=0)9*##liM1MNZt#o-iPB;DX z&p$XEeBjV493^Kp%q|&9CJ1C>fyoWjApPJFg2=Nntee_`s?1CMFgvswg)^`b1c$80mX6Jr^;QKXZn(+p#`ZnkpM z%O#_S_CuT5@hj}yrIZF|Vk}N269g&lX>vh{+}|ikaaaPT zy*7-}#Xf1Jbm+h?>u$19wvHO*ElwLVU1^oeuR6fnp;82})89Nr&{6u(Xg)Vf+nMaAA!o*Ni`wd)qm0k};EHbgk4H|B?%2 z0VeZb6cV~lQZR_El|y*e7b}-VhT1E~!=#`JbMj=b{vNwypD0Xv`*mx@DL4~Gw4QWr ziEO@Zm4m>Yln90*VqTE~WGOZcZ z)dbBc=9x-Hn9Sm&sSRvNVKE@d9?Kb%{+cV=LZNvWx#i(+L(BZcx~Fj6kL$c@GfCA= zg8udz2`yu!;$tC~EdC8FXKHi;O{3`cw5O|jTPuM}%|ztNr5a>(4MJ{~)`FO*^LcmX zh0f5(l}VMFS63$-l)eOf?NQASBdhtNJm=Xl6U!P|h8v>d_)RtH)Y(vt+OnBy%G6>?Xo5**Ppjo3 zVkkX7oUEzXoG7m5W~uLXNzyjYSw8NP9e`p?=~yKt8AR!wfu&BefjK7V(~i|kJ{A<$ zGMO_>@=%O9u3UX}4Cz((R&`B8GOCs%Ooy=szE_sfPX1%Rj zR3el=@>z! zl&+Hlo+43bVPeh7DsKYQ2xWy-RZ+jJ?(EXa1mRfnUvb9Q7-g2cohI`NmQi+1#z{uY zY$3(RXzPhObJLDwP%7$jGL<*8&ASes zX&E>fJo~3bQTkoFw@LB!*r$y0Q&5VyyQ}_k)2?+W*_`7pWsY`Amk&o`Z3f^~Ms}un zP984>CwHQP7=-5gL*aVcRGIaWO*y^I->Pb?sC=}yhQ2Q4*+Y}w;_G+}Yl( z43D|DAsnV0?x|dSkWT@o55fkn86xeVY$71D*h>?q-V8%ZKW&xQvg+Vg(>0Ol9x27I zQtm7dj^~kgCD)F`Bbjtq~`ywt9;51R@g9uDMupOwvtL&K3w>P$m%4CSTb2# z*V{iq%4+>KL?%GF8|YlH1-y=*}}?{WKj!Y&0B zul+u#>04j4urAKWWyM*Mu(!MS*k=VgW8Lnn7j@*Q_vSsM`^9Bl%=3r+x%v`Aa;>k& z#V^lvvs%z;D6qY3&QPURw$GBGBwSLa*6|O1_eiGukQCwQ!aZv)ut-My>a?rHmf{0C zB5T~~M5=EFME1q1N(GL0ivUTb0{6x!>SPS#g+_JjXoREr1}PjqCT8F&sNqM7|7x7L z1;8$aRQp6a&kBlC?ILtg7}l^vk*@ZnW-u&kRzzef|8NSQPLAd;aHt9p?h3A3NT@Ln z;J!_U(qr2EZBE@RfdvNGmd8GnPUL4JzP=6D4b4o834CwHXzyw4(hD|hrGBGIMlDH* zZAZHbFmnyWcyTK1|4`(?4cL>95LF}2bnK>cL^AwpXnSRR?QpXUj;e+&JaWd!>q)kF zkT9bt;wh(o)=>sDF0{)DkorU3T?kr%MV@T~Ow2B>t8Jj$5H8cq`xS=v{-svDFI^ML zEMQ8WrL25n3>u}(PN>3wEsR3~@Dy(a-i!${*Qwa@QIQ)5%D+%K3}vX==m!PI3{>Rd z7E6fkFvAjrgiz~jb@9U)E}H3NZoDRZVeTa22t^ws@`Q25-)#PPXOwc0Ljf-2M=>6B z5RVinYZ;2Npd*TfEvl;os|s+n0I`DOsRb3N?!a!;Ag07=Btk^c%&Ozmy$tgmY%33h zI$sQi<}gn5CN3f7I&9CBQ{*1ZjcW^D1^ zb5O2z?fD;P-j~K!{3(Kp@m|-F(DKNHgKmfQe#Kct&cQc2#(1|n$e4xrbPsNs!TKteosTvC`u|X z(um|L#E@c;kqmzNa0uY7FFfr;dFPVB0_v3u*n%+rNJRG6s;qh=rpRfsK1}+B4dVfj zP}XlGvG0Dt@&_oz(o}~^YV7b>$%uJQL%D!NV==5y7sANSfXB^h$E-bFZS+2@7MX0&*iXGe3fxP?2`h`lv`nDAj`;Cu^ExP~nbepmC`7U| zvlXu<&O=b)jCjkjr1z)5%n`bUZqqAeJUfTbSnLBiD zQ3ukn?P*JMLc~nn6iS*xjlQsEid55~2aT~h%y7QxeAp`228Rx*PeQ86K-YAo8;V~x z?g=~eV7@AL*si3-QZGvB=AunuPh;rXtcb4$;+0*z_MBS}m|F=wSHK zI%o2PF;jIKMO_k#%wWgwN{AfGG;q4r{t7F6;xnJ3rQ_DOOy=qQME{QAZ4|aSyt&8#nRgJ`Xeb)u#;0H zgh4i>SlJZ|JF-@%*1BX-PLP!-SP(r^1GGCe5ScD9T6N6SQNJXVCW}k1$;z0G#Ti7C z>m?2HP|{9~mVnvvsY}S3<1=?=FvCO1OtHz~095R`H4j(DmNLx1%#Af<3{KoLmvijr zGC%<;5iuqORJKcvMb92oi{#7k3S;irSrNLdP;_LJcyMqCTs5+4#sO6|{^HP-d2|pj zFwS={sPWK%;->C*tghS_7*<6JLJo?>3b0@?&Y95kW6|ix3!MZp+L6|L~=ciZk3k|NKVt6|xvEabTcLiiyb8)DCEt--wisA3%i*XAGvt2z8UxS#0gIC-z zl5)uGb!Vv>dV|}F%JS-V7jzWCd?!Zy$~#}~^9rv?d(U9DCWw2JKN-&Ih9+xwP8Q%K zru6TugOEcJluJjhEOc;ZfOT^sM!|G(33M$#ZBfe?YP*THq|4^uOzxo~Ch>GuFoeu0 z9O?*B6{%eZviZo!hv}InB}9cd2}?+j+*R^HD60muL4atdb!rcdH@w4&rH`@fV6rQ2 zG_{4eM+IkHEYDXBPtNr2r$B|P4x~QPEF8p-Z-Npm?9Q2w6cTF415&PM2yvp(_uqpu zSf9$~iSdH#Xm2|>#Wu`1{u7BShve(YL|VkjB{83RxpK-bzj?$%957#ht)|_wtgmwX z-;`^aFR1BPql~g5Za8HI@}-nW4Da}bAk+6W2x^^8p1_CHR4Rb^Zc_slHmS?PMRasl z&cbkty)AG zGlfjzq_~lG4nqOvg)`4zm8xc*kk*jT?p^IDCiYlvm7x{UKYA3*vBrr0u~8z7$B<|j zc-NN<=9r{w-!xj&Q>bd}waeqig{ZY$S=E)vY z?`Jy1r{j}z`O_U`i$i`h9ubS$pW}E}0dIsKZmDf{b06R}p4BzYT9>j&5g1 z0G}dNWrdAwc)VU~aIr*(ItTbZJ0Fgh7G7E0W-Ks)4C7($1WV}VaaZZY)MnG-*S7Qn zlv8(skJA{n!iSloXl@SmF|OD&%*8I)JPtR!%_26-tjIXUKQL{Jk9md-kbjRwSIW50 zn?(<6da5jf%XR?I#fq(}3Cq^wcx8TyRq#S%ywu5IM$1d0>5olW?%Ud?%?Z5RF}_xn zWzEl_IQT11uLS~7plD-mzqjjCdtEjJJy_KNlodmQ_We;zdA!u4bXE*U2tiDC{PCnG z80Kwv_JPT3=$g%G4_jYhme;b0;WxSFmeRtfME%EFi!lkGXSMx!9cj`}=4~ugU3>SP zl%pVKRC`gbkZw7hCq+?8JU@7?g?2wNcl`A%Us)2qv`H|$W(!wrX%DG;hu42oNj;

    h%jT|}`IFOvmku+~Rom7a<4<#5|bN|iH)H=4#+v8_~= zI2Ep^bWte`Mu4jpp|T-Cb8oE`aI<$HZ#`s#lK`)eg`$chMTZ2ZC)W|_xj9}pTrsxN z^uYlQ7iFXjsU7vbO@UMWv1?PC*zqbgrl_zT;iB}5cu=DY;{8YyD&?-@3$n~SHa(Q@ zG2858Rd>X^5YdzEN~ma;+f0W!nU@1N>&x?1hl*W>M7pKG4r}u2~B^>Dr4FcBfplydmP2dW7?x|BB9@;G>lS&SC9 za-F16Ezw(~<0CF^%hD9s($O`?zR~MFG2GJ@NV&l-2678S@a^F6ImGQ7FY!%cE`~!E z&J`A?LdGciAOHXi2mt?s0AUbk{0spEg216K_-qyj28qC-P=E|7AqaxPqR`mXG9?p| zNTN`|npx}>+hiVrNsrd*l4y*!&ndH4CDdp8 z>G1ZwLoL<_^s;#usl%c`EJcQaZ=>YsIGQa=pJK+dMsPM*7w3sAhg@e}&E#ZjB- z5+!OoGT^-NbHM?(uB)dOG0b!fsDaW$MS?Ix2?$HMyagL)6nW8 zZ@dj4t8H^g(lhTAMk?mt%!m?Em>N8S9g4r$-^KAi0kRza-Jgqd6(Wf;$G@sM3 ztP19{%hd#^FViIb7gnnh{DD={$~|98>GN!@zc&21rBC&}(L5?uoi{47v5gTBF;9C> zJ=YdI(PlP}(sM~ybDUv7PxR&=1}Qi!7WO`=eeX-a&*LSCVwM#hB4XC<9{xzVMoj5S zEmjioxVfDVOFNHhI_R(TYoI!Zz zs_e`&rY7sSnXPRE>nyd;j4711y6j2%hCP2qtm>ZlXu1Qsg~Jcz9g)BKRE=NTkA>}j z(P=`zT;|J7qloPEPQK9IS;e=8So5ti)Z=R%bg<@#Md=G8HK!YCGqw&W{-l?ty?{C# zg-1lWchqIJWO4<4K540<{`OBAa>rOdaKagJ?sOiF2|3X0MP$nyESlzTHsa$eW%p_r z{MFRve7bJZ<^ZTT>z%P4Tgo=*s`}VpncjKX{$C$9kF!%MXLi zZM3&UW_(N$t78x_q^_pse~mH}f-s$vq$6OA-^>gsY$4^UvR<-V30s0MMDZuH7ZFr6 z7%!=e?4io9-}%7}zB?nF&|1^Ec06w3OudpqET|YwCs| zwk6#LpYj%8BqW*|)s(gwlH*awwb--6_Z-~g!(}AMm;g3(s7z7UdV6V=he2b)kPY%~m1W&Q$0-22Nn$~YsKr=E*5rMj zQYUmq)S9Oy?%tyVV~MV{9Go$lsx@T!>j`#fGeq+PW!uD;gfYCm>lUvTsh*f-4z9K+%_6kc%_q zj;KP&+?ygsh%qJ&ywqt-ktEQJ#nMMQ@<4y!(R(CkqDmRa$1N2N50!N3qsrq{*B%4r!(+Qb&85*`kx=sitT{Anxg9%~gko`V=ve09wdmzMXs?U}VOo-2g!RkX`9 z(R^E-ubmjiqAx^XTO_A$C0xpyxUOW%(phJDI6Bj|pb4#eqy`-ADmvFr3FQfyvQii+ zIin{Yl}@tLbi`2^@Sf^<2RRc|hPsu3NUIg6AIY|?t@}$R+6#|fs})_VRNUvBRMVHM zi8~eLyr-U)fP(>Z>~ybR&dG71XgH3sArpHaf*GF8XD07Sv{Mg5O z@hVwxuXdF*z-ThUVYFaD4?rJHAnzV=0)H6yJNsdE_(M@tJ7sSkT*xk%*!svbAvTN%eE2xfsEvvyI zi#ai}CTVlwLppWoO#4n)Lnz{XvVKsGJlz+RSKZm-rb;dCo(FVZtQH)6SA@n;m8(<_ z0@y+}&fL^9EYDK|j)3=KuVX{fcB;MUtZ#l0L#%&RvO!{9mb&FzT8i~h>KL|J`abGx z^4*g>LT8S;Ho_*{o{ll!kql;b)0{(JrJMPQ1~iz*$abJ4c~ z?Nk!?BdWB2&H7*f=e2!s8iilE^nFIN$8^}=uHA194k9*)V&dj}EIZIHCczARU}|Db zEVjQXZt0A`W>vMe(sv&@{KGCOKC;;i6H}$k!G-IsrlP3Y9FyJnx71|L!ijvfZgwD} zYo%PBJBkN1jN=RV6}Op1%C#d_VTcQ6yr{A6y)_g2Ry3_**Ll}w5%f-bE{=@9dfmZA z%1ISmp22o80%8xb@;%iwpn7oT>#UTJW-AJ>kW9ZhsJlgctEv-f2#rW@{=a}TbPs*Z zRY*T1c*&SMh$n61YCon00&5}9TMvQRv2#h=qfR5m3jFEE%Gm#7>wJUgb(k;Sn+@C@ zZD?*yRnm#_WAmiayA#utA)Uu+v&2bR@xGQpRjpCzxx;+in<=Os?zAeKq|BWR+oU%C zMV+RNaU2t^HUBl>+E0ps z1qv7Kz!{4CB755}VMv~d?2eM67UEYJyD^PBHZ&S&pveq8_`Rf)Ni3L)srx0p zkcp_Hbg<*mom08Ek~5)V%PC8kH&D;D(?O_flspla8Y%OvL=zdf!3yyQrtxOJX=DjO zy|zfap1NNqqB#hAE+Je5q+)eA`RBkA%p>vsGqP{5+Az6El069^q7n1BGyb8(D+s~N zFdJg8IjSY2{2#0Fo2zvh`k_N=pqV@74Xhfcf-yb=+L)?d9%JwAm@}7lCP?X^jxjjCE*YFIinb=Y zcR^9|#ZgHu!l*=2-?#(tGqaU2V!Vihw8Hv;i3-3bNhT@bwLVJ!L<0&dWIn4iWud9Y zE#w~{;s-ggek{U@ry@8W6E~84RWb67>C7HOu1Rcm|iyp!8$?L|G$%RPj;j{c1ys1MGVs1$i2f}w%_zYD<1WHAh5Qm!fOic_XE%pjkMY@D;ljM|f;;*6(y zO0OcWkP=0<=~@yrwJcSZh{Y&!|sd7-dy0{i3rIgAew~Ka+2_LX~k{`QWGC{;M zt(z+ZLn^_TaNCIk^_%MAPHR;wc@@afzNq1etcd@$`qih4<(~@$KuqpQJCdj=)iXR_ zsk}pz6lu?jS-rX%jygyybdNBEVW<&*FQm^yQ5%`ug|usE9+7@TvSB{MM-(B`6l-wI zG%8P{Q@Ogcz6wz%<54Z!G0OU$JR-h1dPA*2Et-n}q_qak+XXCfbi=`7!5LUd=>;MA zN=aK9!eFwn%N~|IOQXYLN1GSVgrCVg9+{iCH~83^DyI?G ztoTJN4V@~lJDdE|Thl#PP03OBq9Q6$!V#~U zlQcB^&8+LB()OU74YNvkq7!+}%x^&XEs|NiA#y{eIrY&y3>}mD$5lhGd~QHN(3;t5 zvR!G(@ypgKbhnZ^o%wpqlK7S5ipA4+mZ1MU?3$<pV1Ctc&OzGV+s4UL{2gI9z%d zyi`HsoivOFmvp+lOhHbf30FIelTj3yT{B91$vaUsNy7S7Ofoo}pHp3eO{*iT!$~n1 z_Yp&C&eXA{`6bw-d9SJ*^TrTSX$IAy>3l zB{}M<%~hODP1)*Yrm9yRi(1BEpS2V!IdkNO=qk^&| zh^xnoe=Q-vr@enz^`z6gRLgYwS!ErIb3MzlX9;ssGrMvrWHv`^V7UAVlwsr|*&VB$ zC0WIn)K$VQ`R`Kn`!#~_&&f~9fSzLI9deDf^LgGrO(h+3LAoq;d;=oHh8 zDI&7PT*EC=moiP!7#k%!qAJ_;-6&{^uhU~NSgY1Etyj`IS>xZzq%%;E$VlB4&w&RW z*_5{&rySV2FlpB}J=EQ;Ijk!n&1J+cqwlb)*^b15tgCO$z_FropRjA;w_T)Me9oeQ z&9Ge-N_DCuD#cMkq_ovZrWHF2k!__yDEpEFY02vWLU9wcj zd1&DcudLFKR9Qinb;z4s5J6?FIDKnOghs{l3z7Bk%hMgkWvf7p2w6CqzS%yzbX&g_ z4a!6w8OlK#UFB2)=M0M0o$#$8741UC6+*lcLemx-4D3OXoXlhT$+Y7?EoZFh+nO{K z!#my6nTs)_q9ID{pR+2VDF(vQZx38SB@`&gGGd&OWyI8s!I?8sjW);y4?c+olM~d^ zglC`GF5I)+qXDO>wd}WMB_i^u;p)G{J@~4mbK@JTqKw>JtbfBI^VDnr&OBBz{z2oL z6pb8GNggsY65KC-C6v7uzp>;ME6s5ULelYoiF~lTF`6&_D@Uj7O-dfw&G_qo{$xP(J;N*j3 zBiWE616(WUzcu*0oUvy88CKf3Sq&1%=37Du!ebN#M5)7^j)dq!QdIJ=uA8#n1FRt) zbi0cCOp6o229wU_MHse{GJ2cPT#%#M$xwzYL(3xDL9$@dGibJzrETZI^*?9cnVOU| z;2Z%vNqj-+mdTBJG&Wc`ElZ)jD%P}_=(avEk-<}^`f!~8BZ%E+9mvD)1(^FCd|BHT;x;q_agwqCS* zc0>hw*CXLrd#^8XV`!Q1zPq7O+3BNGzhj=9QlXh?Rt>QeCP~~HV#C>>1<1PWAh?_b zFB^j8srW|jVrPo_=ki_=eW=HKxS08sCf2$$Y8WCI+|91O5KPz@>3F-|d&13A%u82G z%n8GM%P?{3L^k0(DtKx`Q$mg`!KUuX6l5bVm$2NaVhmY9{2OGN!fbI3=W3NvgGDD) zsAvTX8!6zx;yp$V#%8s@vV#9-0Pv5I{9LnEGD5saYo{J<0&n@~-sFRzBI`s2R{Jo|DvAHlm{?qIY35dMVhr>%fCETN6=a(%JM;U9(X0fjZKso*J#a&&^ zkwFm53bgYW4vsuAwOq{F5ZOqLwFa?Q73C)v9WEjUatdrE1z?ksg6+oG8&SLs+$%JU z56Ppr@@^tdmoyU=>OBW+e0P+^f)Q=T9%w;B(Osme$!&1h=^~gFg)uzD8 zDEz+CHQc<<95bezu1i1bMXKhO=C$7b^o5eM4@W0OYFjQ&%<66AB$R1}0#)B5%yK}_ zWlK!ATfjEC+1BG+_E+jw(WkQ_M75x_a!fQ0%J9TukAe)#ELN- z+dFL5w7!!T-HMshs-9j$=t2~3z>f26`w_$sIyBFuGuLo zBbL7@4jXk=n{ukKj7tQWuTLsOpR^E~^p&OWBAWC!s8ZhkLQ%4y zr$4cq#U8fMd*shGF9ZPzfJ%#k`Nc3Y_SGp;JId89O$<2zKZx45pr_QQgjT=e^kH>Hu1Pmt8W=EjMEVh z&a+|-C_r;mM(onG8^sniP+O%EPp_3d8Zrtz1uC*n{TAy{Pz^eW%+sVVJ2?zg64JE~ zv)Y72RkcSLOKq&;z9wnZSs%Xf%^3r~aI8%9sT72;(zwd?e(=K(G}gb^>B8LR*_MPs zXR6jV5aHD9>ZL2KYcm;o)z#eA(@f54;di=<8Z$&;7RoyCOi0yq%*?a%ESf-hG903` ztz>NItM#+bYO*@+^j2k5x}v7 zwH@2?wr6c&bLC{0;I`a|l4O`or>4QLOP?&Gx4jJB%6B~djmH`*l%&&c4FPuKw?0d{ z#Y<#t|LlAGUk_v$p6!B89BzjoNSSUG%B``~Kb$k`uNiYe9GmNk>v9#hqEz~h%USJH z_Y-~c)U|JWtdeV?4$qT49QJgvn^zsd@r{)P(-?mJ2V;8wQ<(HPj2pycRpv!=(mIwS z)$q5olNCP7XJC;-X!TUb@Ca;St$kbKjSwr;hHE6Tb z3Ut|lU|Q^TfHRV$tQ(_QVM@LHK4!kLnp+}$ZULAwWy0(d!k;JywI8u2c$(2cpi?Uy zkR}(l?$*okSd8&OAM_OnO=4zxi{YvxbR6|tJMVVO_2xkr651JrDO?Oe4?@R!!%x8~ zfH1v471kEsn@Wd)Pk|f0bN2ofW0zB_f)gBtM95&{xrA!mh$`0I2#iHUKsp=20}ASv`xDd4Z7 zD7IA^djf=oc`_739Pn4vUS4EO^%@pk9^!NPdT}KM5=TDtU+VrlqutjtwaW`)JerXz z?R+J;Z6J*7bC51^g2(h;)lN&zFQv7?v<04<$~sPZGVN_5*XsRNQSLc%d5=xy>U;6S^A7ZoSUd7wF_GSKPePZwba)2k3uX90&Wa_nViqOV+sO(3Z?a>|Xd<}LEp5<3-f^gd^A)fFN_cXdAO6GLlqDp!6GUh2U&&pkX zQOT{yltQE-tg2sdUK17;@^j^DkD4a<>=gBCsN~6stAs28IfrD6XWOY$Ng+SG+5}lw zQou54rTCiz0Dr2}He%1dBEDzTrB6g2hD$MIzzK}?r~}uC%8iPdCAEGkZ|gl5J|AjSXR2No6n1;oGk^u4OCde=uLE;7#_*wk<^;W~G|J zyd`nWOZ$Uj<`tYclu-J|G(NbY5zmZHNt?v$_fjm;*R{0DzfcyHAFY~BdG|`vFl*Yf z-L)uOaFvXtRj+U+D?WGXW^~*|zjq&P|F&nzhCSq8TUqh0rR;hmBsFU>T&^*Y?N$E3 z%cEVQyoz*{bz-cyr9viCkXmNlGu~3yUMb7Ybki2bHd3;Y>y1TXjpFqfD-&BXk}_fC zx|md(D<$sDTz>~zW0)Mp4W2CGYU}y5xswfvYvtdfSPg5G_1ukLN{l&<-l-Dwj}8cV zoFDo3Ho&xksBsO$UKGi>t}O9E)eYU63RJ4&IHa6vt28dFHeg+c2IT5=*2%37$l4db zogdHv(AEM;(m5t`&_E+H|5*LVq!>f{CR@+EMDx_@NuJZ6q=4d$$r$Qhi%5G87)q z2xogQ`HhI`z4dw77^vSDhp-hS&6Nz-AQ_8TV&sO8Pv;2E58}_CS&gNBZQd)o{mXT+ z7AlSuI`xVo4>Z73z211f0h!Mfu*$6dYg*Ay6wr7)o_|iPsoeXv7CdwX(h^ zudR|Sw*_-~kfSHh)kg&R7~xUTto@Hn4lts0AgoZF(&RU<4Is?5DlThh^Y|AbMMznH zuiQgbTuTS7sKS_%O#o7qhrh|seMIag9NYG$CiG8w<<{<=qb^Ztc_sZ=X*S)GB#t$7 z7LKpeC$4-83Agm@VR>!VRIoIcIQ+`e+A&|HUN#Zoevbi^UdAdtYOxK}Ex$YefwBK5 zI&JDIs=^A;W00_@a)D@eeXih@CKBn!R){C4V?{fkWPbTdh<<6f-kuOOHPOC zc?d^hdxml?!|2Hh!r@9L@o;SP&@P6r0I$miz{;@F$cC|N$ZQV%4#~n~W&VFA>c@{r z1LSQ53`amqupW!q}(;ID;odlW(58$`azO=LQU(>E?q6&-C!(=B!F?aZ3>yad^rO z?F#~et3@cd&4P!E+*^qNPEOj8B*MC=V&($EpK)rq=_s-Xl-Vw(%;%!)0^;7yFjEJF zk&c$mXwckIWYbVY;LkGar*>e4RK}&f7z}D!5zh(-=#31r;qXj_t+bBndhdj<9i-}9 zZHh=}gA8pvYYb5fPOyXnBB*c-pe_!w>`Nn0lFjTYgt01=>(sCCWMQlA4$x?U1jdsx zTGvO`Feg4xtH1Ns}v!h`XL#$zpe)^~A`=gdfW?s>-noRD7myjBSDwLZmqOPg7Fb<+m zs-SOjO#h2i!_xZuZ33Ul4B<^i^YaS5vJEe$oSDQG6sNLX2h7b_Gvcz`@sT{{pdl6zDAEEY_2{b-pmZwkx zE+usf5xjVfzVHXixhcSn#tAcw-#DfOGDa6H&wF2?EZq|Sw8l&>z- zVr@8+ym2K|C&cF#@kn>$<{=~FA|sORZ`@oU1XZT=(uCzcMF?OC%*v^tlyfT5$}CP4 z276MTS_#P;@E*L)8uMw+J1?~j1|01uPZK1VRk1*vlbX%N-nBkWpqbmgQ9I|ok9dR+kHEqwOxyNeFCpCzN8-h&5D51j*90Ycw+4h(Ke@?CJHzPid(bWWZR>@T}A>vNeKw z=G4E8kdbcIh9I3i;Q21ktDsF4s%?vR4@kl-hl5!S2rPIR->B&2F zpJr8+R%bt7Z=TyCg#oL-V~sxk=wi)KhiG*6e@sCFZS?EX`k)Re6E(9jE3|f%oN)$K z35cxc#zrATp&_q_RYNGCRI?z|=TTKa`KsQXy5$f6;5bEHLWtm}`pd1+5HH)R@5 zyw66X8CUgh*GitR6oA*BoD%6!Q2%96SSxV=Gc2mC=>KoW%PY+6y5;jY5LH#;MC_@D zB@wnVij4J&xwM5MKCv)PDkWYJ49M=j9LNVla zqC;&F169Hsg${#=*l$lNiCj;x$8n0plklT*>xTp5iGqHXN5?~AKaE0o`zf6n&73q- zh*@}W_eW+rDVqre6HE)3sjw(n(ZF3tw_#5`cMRW)Gc$;+n%l2rd9}eFA_qQCOD_tR zG5H~h&wG-qv{EWPBu}`2&1P5<+HU1hXymOgFs93CE0J`X$Ffg=_;hlM0|Z$_jE#g+ zwu?!zVRmrD@yPNpM1$n3J4NXaRKcLhkaU`INs55%Cp<4;m1| zFp`Aw5}Nc9?JSlPIr1>NkkGe8xqHk70$x-m%2)|_0D#7NU`D7lq zj}GH_k9n#5uQp^h*EZfKkr!wxy2+;1R9_*@!G~8IfAIo`$3~6#Qxx?Dk1jndZreDf zz<-Qdi~02sF<4}F0GVYumYRf}iqTfoCngmT^azEVk0Epu2wN5_tE?TO2d{LogO_HF zF?JU*4%Mhe`ocFz-1%)$xMvdx$a3?I6gj(qXpJoM^=XtBu8lt*TFj8nua{~6BZfmM zO21grw%V!%CXv?ELU4e{eTyF;n1 z2={1c&hV2K8RUqA`*FjobP|-A>}H6Z&%GSPJ9myNUww)bF8J$Yf9gwmJO`bf{$AKgLfZQZI1BsaN6<@ zTg_CUdJ{;f>#Xh zm$qF>8DUgB%(A-;hOX{e>}UEB9b2}qiyI``2glq3$azXoaK9X9K_iy)q8jh5l<5=o z=JD^3BKP`>I-w72LhP*mXf`Aw{5EE(@4tGp6;6^sDb_UhMM;%vy!D|cH14B3164Dx zm~I}}H*vYIT2vn`aF)P*2e<;w8Fw($@4b7hC;m~h?bB%d@CW9qm&u)SO>*cN_d!UkLP0 z>$#zlENYF3GFCpI%>YRX6~WcVOe~H+Iuwm^O>nns4_o!9_#FV;8>vcv6%>En?pr3~ zZr7Y4%_O-k3WhS=qr@5Y%+Iez+`ol&A=(Z*xpj7>bd_jrua@jf=of)k%O9wWuVJVM z1GNMuy#F?C32_%sJBW^rG@YpD7c170ni?%@m)8UOEUC_#yOo5uvm%`Pv%1p4^}T&w zkYeG}Kx}Tg1&Jjc(%Bcfe4_L1qB6k=O*3d4GTuA9vOr)8IeHW&UvKfsM2Wn?;^UlL;pX`UT z#DCx0|0KnhyPy`$U0)oHcFxXrk1rUFLAK)k?8Y2mV!{QOx5C$z2hDPIYh}2F$ z8j4BdpczCi2ML1AWRi)D%25c9L+23*q)H6~kx%6@$n=%{F^os4RJo-(FB7QI>9ER- zo@W<|R^b&nOp2{CqSPhRIV66$Op?^4lj;=u!BmpkCexZ+X0dFv)h7_@3}z!RtJLUM zdDVjp5sbv=H#tWmPPF{u>Id!KXQ!>~58tr`aYGyS7UwAAdigk{i@>C83h+ zrML{Fia$odS#`V1hF2-D!s#^l>D;b`ZG}JI+x&)>O=@x*q1A<{{h5|kgO;qeDBF0xdyM+n4i5-~CaZuTxPltP=y zG2-t7%S)2DmLX~4Cg!jZ%3A=a&a%}Vuku?Ol(|l`7{jMfJkIUTZ8V0LuWhWl{j>~H z;TgJfJm(lFj_hjV$q)?lI?of-V4y(i%>1&e^XlCBGjuFM!_^W*V)e%kY_Cz$^5oFS zO$fCw1UZxyM90YuEdG(Qvb5Z_&lIf7K{1ok`Cu;75^G~w)LVfLM-+s!P^cC%+Rs8% zH9Y-V)l8=qTohX!Ki6sm{JcUftSeT)S4;6erI2INqD@Y9xV6p?W2Fj7b&A(+)pR|B za!NKb(GJg(N*vr|RRTQ;Aq z?AR51L&X#l^1J|6)$?g!dw#QCRdXa3xLQs02ZhRs?)9Toc>7PP$a4L{%ct`sXPz;2 zP3@>WSLUggQTuIxrc(Je4Zq*Gv#Yr2kRNR$>2=yhpKLHn>EYpfWF3N|i)KxPaXdx8 z-8($Br=CS}C%oD7^j3$f_PSh)Yxdi&(|NC3ZVzzG%68-V_`CYC;mA5IgsW)1;*fbN zb(XTHeqtW7%|$Q$bu{<7@DlQ#YAYf8A-Am0PoqgLNaU{#~OoS<7*NH#f@hkRpL5WLUEkqFzv0OCVXVnB5siAkr4|9cB>l;JSy% zUQi4CYL3i_DYX#knkjWK=$Y)k5;XXtQP?akMFKT*fcKxv%QEVv_^9@jzMJ9dKF&dP ztQBsa927}Wk!eyX^DtwO+u(=J1oyxK{E=IffmKkQD8*<()|hkCXbp}SEcO(=UV&PX zQ1&ppvfr`EnBUn z^vM|#c3kd-LM{1{pyR{*UIr=MDWhvB+3IwQN=ik};rPayElh6GPjsy=WMv$8FRA~`$|*N39KACrHe@6Sl%|g> z)TyO@K2(>dYiUvTAm@^*K8TFoPjTTh>6OeK65~@WgZ@-Yxyr@Fy5wq-pm6e8G+BhP z3ogZMp6H(IU3=DX*Gg$URT^T{i)mIOITVpdumX8M;)WD> zt*pOAHIF-NJkLY;dQ`W3A9EOsc|Yh=9K-5l(~bFwlvb>_K-qY7Xu=>l)E0zgH+M|n zb7QIN-9Kfg+|X?EJD2Pd*u1F4UCyL4%I}WZ%=;GmnmtQL_svooEQ=NBeA3S+IdZP% zD>m-NCBspU`{nohYhrUWGSW(`vkB>S;T>L-?`rp@6HxJSY^Z){?QF7q)W6n4e!u#C zI=BN8`y9!4kr)=*#dxhD^DU{KcCj2AOIKj6&K!b-D=%s`B?I%5N3I8VE;-#Y*Kc0R z*=J`dAIrCg_J$^VO|r>Z%F0w)G)vaRVt+^33r~+0hHZ5Ah8MP!QjJ=XGfMJ1-$^-3 zl0MhSW|CK7GjEoprIV-T<&4r-YRXdLlR0)mH#|Lf{1&Y6Lk|M;uKQ;B?hAg_M;c?t zXqKK&1NG1d-XiFiqmwuRhNbtGL`E60T<;uezs&BXTSeI5riKHd&nAGZXBm+b9czGntOr0)TWm|_ZZPb3IB`_}BwE#mK@gYqJos-q%0)X4x9*YMH2mS{9P2dCbqw8SE=F=z*WMlDPV)7iPBxh?hkKi+B@xw6 zv`Y%+C)p`P(pV4e5#c)p5cTF>|gygJBKZof0Z)p_fvb}?^+@^=3 z&t6BQZQFjURj}%eNT0auQM;9S%&c)fUM*o8pe)oih?R3?M+k%??Y5pn@8u)Fqvv^Rsd=DbuAOO%f+Sy06-Hq!4w&%vD!RI zkdKnXoD2e@N@7H82{o$Zzxg|onna#zT|x9XzuB#$ddD|QcsD7MC@Q?f#3ZUhN;A{r ztHR2_@%^3((V;VcB6*g%%j-a@V<<5uBU90sYHuNtha#cNpYq-{JFi0vni8WM8tSB& z5mh2_vM@uqq!Tj@vr4x4{Ki{K#L~|videy`IYis`9TaXt;qEX(wnTHmxS|+DqoKc= z+(OCftPDV>JZK!5Nvy!!!ULy3OBEW}wLHOimWZ&7tK%YLH7?O%kyLA)`irXxxJU9; zA-g}PdW9UB-jvXjN1|>qdX2*r7D8$xxVhTBL`N38v9EKvCyK$Ua$uK&EHU9lBI+n1 z$t?=9qe|+===rdV2t*8AvIH#+l3T#3yeF() z$NW5(`H{M0u|u=PMr--BBXkaX-kixxOZ>*dL^>$qVYj?BH;l=rWV4moYDvp8lp1Iq znp~k=#x&)T04pO$u&AVxqD-7o-$YjErF*yk(ivw!~V)5|YtCn663s zaH_*wsFNwJ*;*iDrXsA|8-oF?`|8S4gEWJ<5n+BiX^F4O+(3*xLqWh5>52?I?Y^UM zPHagqyJ-^yvnIMele)UKdK$sV-c6#H&U+n98+jeunrU5+csB z)LP7JqaCtzN_(ynxPJ%SM2^(3%A>Oqve+iv>O4#vonxL2VDpY*{65fu4=9_96RL`G zJGxNL5b%bTyoyRXPB?Sqor3Wf+L+HtVWANaI3trJ+627w`?TF36=8d^(U2n&&xq;A zO}YEYimH*+7*6py69eW<(*~1KHkJ&QxlEXsWR|OQohXBeD?+;{fXF!$LBS-Rl3_|S zu>~+v<|q_;OL(@;bbXMKHnhNmtO2l3Bmh2RNSQq3lDb3B#HzPrT(d$yPYRPG+!>ZE z{H1FKE>wY!yJw?p*rjrEA?luu{RzFbFQ+qYuWQ|^^Q|9zm`6IUu&O{gTEaZrR=ev{ zB`b}Jt2ZQ(2%iH^v8is=B@DK zsy1bD7ZHH9Lk$mW0;JOo$h5w%u^J)@`%dX>J8C9Z+6@+plU9SiA#tHWG{wpwzl*H# zmf6oVAsGrY*+A`t8G86KC4LuTG07V%v+Wu{i_S;-%hnqp!o4*difIseEjWu+*0Y-? zLZB@vU_R>T9<^SgGXWn88^|Lr!-6ji?Ic-EM5w(#tKjt1{Abz8lp!kNIb~A8T(m@~ z=s3~tR+9Zk)cv8sLc6jJ&NY=aQ&5tXbSJH5n~a1z42;JKX2#jY9&BURk^DIoJP>?K zH3HVS&99=ZfmqX6737w(Y_&DmnJZlrx7$ssTk$A8mPTz)q5-}%_PKob8| zyF&{@wmPDjK1$0O!t^zTt4GZ=q+HM3;)xOY8cb!cMP-z}#nTbHCahV`4UxF*vSc6+|zJLtBJNM1&Uk84@$)&y~9T>>kK8WMANB_YU#+;IVW_B zSgpCdVL~y3X;$Ny(oy%U;eZE;ofwaPu2XRPlg`gmlegAw(b9wD$3DIBM63ZX73Nf<O%^Jdn>3pA7uNpR>IJAs>j9l&4^2cp;Tl?@p484k z15+|vT!HeIrAzGYjLy7`NoAF3TR^LxES$0w>|&C|94l_Q4pzGEDt!Cx!Zwq8tZaN2 zM)7E6*7`5Gy`Yi<7UYyh%SIhFUd+yXoaXRiS@`Whhz(uI!%|`j_APCZ?x@<{PEi=- z3ba0~mNglSI2Bx1ZwSnbM(!$F7Jf273UkTB1no;QvW}BQoI=@UDLFJ&jTTW%q2n)u z)2=4TxZ}pjt!QiFORsfAR9MUL7O$udS?PAs?yn$Mx+)M7^xbrK3bMc;=DgR%#n`DT zW}-pvfx{de>{}MiIjp)<>2bPrkHM9~8kz<$`l0fZpbj?bzlE-^HdI5qpKGCra=gf1 zo1-x!J#V!9Hp*FYrr6l*)*C_twT&$h_HD=;DZ2W$(@`E)XFQ<9@~xB;zJDB_hXkIL zVQ|`rpr$Y!RyF4Y1gW-HyhMKDMjjn0cVb#AUmpCQT8#)FGx6%W(MA4WQnr+F0PtN! zxFn}dB&gx@F}K?_nTV-8vg}XLjo^X{Pu*m_jV4(0dhS{#Fs$>*MbDXsOUooi(8X-O zTqlxExKyQCPq3k+e{{G}YRXB<*HfCnI%_b4fKF`_v@Kk!8=F_fRIluH!BOR;^mp1s zk@Ldhlx#ofFp*4Fp4DMoIGX414Gi7wL+T?0>}C!_c>U6$)zHdkWCv7Vt5amsPBn7S z8nrj1?G#pWjxi^0)w%4qcFoq^`^mPAAN0H0rn8TOZPatv#;zh>qTTj9el=x970dA` zofhyQ-8`ih;@>f_?!V4p$oLDqBY52#aV4UD9hZM6SKF_950OPA6k!ycvx>%Yj>=|C z58QpU>ehJf=^U^M>pzwE`uQ2fWnJI~J8J(T^b0PKM3T;8zdvNA)bV*mTfD_qRwA9J zy#a%2(+Ah;Mj=cY2vz---|;kAVpp--IYI(pguz~H)IGirGe*c+IGXwt ziY1+p+dVoPW*QYupl@=vOiaf)S>jlI-U>(RtedV2dV2ai3-jXIrHXo})U&PY6tA!D zqsaU`&(fHwG0Qs;@wF<8#^ADxiXh-SOS~5mGz+W|6TnDRBD|!j`{=7Pta?7_s!xg` z2FGlRvmQK2(`6Ytu_PG&I`Bdl3?)uV9Hqfxc;r64WD+$s~lX$DQpFb zxx1;IZDZ8$Lnkk>b|VbssY^QLKdaR&9cVzcY|(b3b=!++z)EzzgV&h!X7k$Dbjgrc zl7l%gShGd@npAZAcL1ku^EHfE?+RB7zOwUNncD8oSo7f!u0Jc^4dS(RX>pcvsYy>J zdv3@%CLw=n3VY!=VeYFfA22m;h-Vo1|4MP}DUhs|Q`;bac#RN}59>0agq2 zXln_GD|f!mP0`Cn%_VZQRX&H?%Hf3#Ou!w4RQI8aLpW>P&$6T3tQxENdXW){xn&B1 zi?h{Zsc{{ivkK2&^7?};5mpj~Sdo*VkYMdSudVjd>mY%0BuD+!KQyNk8jDMHEq(c< zC5+k@3t3#z?hKy?`vPUU zsc-Dbax-(buUh)rbnLM=u4L~d-z+ag6D;ParxIz_yHbJbj%==nsNv@9s$G%ZRk&q) z3!4NUKIsL_N;!zOSeoFFucArCXWJ!WT&Ixio*%W<7}6pXb#3lFYNEL{G-Lz`dM@%0 zIv3i(Cm9Tr&!yzRmgrd=Q_7UG`R2yRew}3_vv=%eb}>@uwG*F1(HQGciO9XYT!duXHExhrPgHX{~@v>2_f zPZb2|O;%AESE;-|7RJrb1mcp^6P#~LRdzYn7U)r&_ifF>s7|^nvJK|=pxshEpElC?|-z3j5$C>+nLD+2nJ8hBUR#~k7}r6kA9{ihYQoL1@{Dw&;BO)DL6_;E|h3Xi(1=qpvy(%U69U|>qDFU?LQhP7hzA2X zBs`q0V>Rr^+Cf9u<+oJZTR*=}$@nu`TCpm|SikBeAuUP)3Xv3JNjXA6wHGgaBF>4& zwORt=&ZHQx0)doL=(jcW-*W_xLFR>co;b3-V~>gcz8*SZeQL|tiU{LZD@2d0wq6sfZ@vA>gEDot=EIB5My5(!=JfQHBIgOWIW8_)yDQ~+FXUHrT10#*6JNk z&I~1`jg4d zmu(0*EViH!*F0JGUX{4Q{b^a{$aefpxk!IOrmOK;`0om2a4kI9p0;MI{Kc(p${L%T zf3&hVeIK^MQK@qmqG2TgYHOADrlkcrw~1@#FAO&$wk1t+TFG5Esnj8!+qLq~3_a=m z^GCpFjw_VpU%15qHE7-cmj?@a^iH{V9&8oC*#-ghhTyXHQiQb`!1e?c5gl}|l z%-oJ>Y}<;ms4pJ~a5S)Rj|b*fn8t#e&y1j`fMd?j2JfPh$=q2i=)CYR4~OvKV^+M$ zwrT_3%TZi?1<;6$8nonqWv`0~EI9BjM0620&1YcQ2_j_*&{j-3?Zr&ai-4)ID+6d? z>CiZNt29E+uw_u{x~OZWn((bC^zQmHh~&cWa(u4C8Ax25Ffz8tH2STKjtRu} zW}gbR4U4o!=oF5QF8L51foQnK@Unkw zvjfbkrZGhG@kGYawMHl_<@Mg z5a?WxsO2Ij2Ai%(mC0~c?*keU-qmL@7=#|uQN)*$e;&!A?Ph4_ioSYKGaymKiP0}5 zGKT39Ot~o&5VDM!X_k^_Se7PWfeg@kY?_-Va_Eudlt%i2v5?iJo|yG3U_j~Hj`B*4zwqP>^dn(m_(3FNVKu6%?&U?77L#_Gg#6H(7Xu7v=XY(^IB!& z3j*oo91j4KF;_86#8m4yH;`6=1{}_0Agb|;2krb-&iw`wYYjzWjgTuo&AT6@!rzZn z-j9&bQ!O!%PMhOe?x;5@s%1M3K_lsqlE&E?4!qNg-3Z6b-3EetiPCd3mkLvlE)tfC z@oxF-7<>m-KjwDa>aiZN(L$-)U#f-N( z)AKox29)e4FHb7e$>Q~jLSPg6&%*lbWkCk)t5nP=gsE6l4520OJcp!HK&rNRD5Sqi zV^%HMCDQp1=UhTc7QZuZ0jrWS$VztVhez-9UTgkiWwzL^Jl4b@-p!O|PvGM1IWmw` zz^?At2#k88UjyurOzA?rjClLdSlP4c_o%F(?d*qg=x}k`tF8P>@I^X@`q1Y<ue~64chh3El2!w~|do_%QBxZm`UfIm=0B?yn7Di}I zl5A5OF{(8NG(?qctWy=8YgCUHB~0vt^8pt7XobG)Zxd^?@R#hZO6dTzFk<#hcIfH0 zRrFxIvkM^W2VNFJ=hf`=hoV&wQ1mv}PLaK11^E#QH1)6KzOYs#hKN>H^0Ea5JnuTy zM-Xl<$h>kzGDII^cX33;A~dBCZWm1FOHBMIsD9U;P4ucoQ*1?q*Jo<0 zOxD6f)t=yYr8ZT_-%)dV(o1{s=(}x~Ca>;Ou!ulUZ0N6F4CXe|cW%meEpArDU=qPE z1PIuxD+W-`vF(PsY}avaMR2z1Mbq(*aJu+MY=zGE5p3~_ZFY#RNbXeCDF&Pt#8Bu( zC!$oii4#{6j_?225@HJ;^{<4@$8>4j?U_54$7C44P#CbZE^FY+}8F^+61-_}e& zNP6HBBq)cr_Zb+0@%+6H&i^adi03f`vhYLH{MzayN8$p2KcBCV0009806*Zccw90O z4~Riu@Thb`6&C=;Vlk+UP7w-;MIjN$j6yRNkV7Kyn0%%sERe^gkvOa_UpIrvAiya+ z!eJACzokGC7jY>atU;nM<$(6BG8zd`h^XLR-nKM9M)bu=YL8$9cDnQm>hNmHw;5 zy3^*g4BoQWn$P6)yUiUE*_gI)bG=C|_H$^y+$9|NwJLSr?eT7#{=C}5?dA2mo2ZNW zWf+5M_i?@T@6h$I&J*bAzK+9a$i0jkLir}mgUEz)cJG;3#i$(%Cm^i(>me zY!YzTsETWX^DHo8uG~NiThR-}kUFsvFU*Tz+_uk4$igY_3k<}n3mUZlq)2Qggu+i+ zWSqsYLwKIT5(I+$B@bL*5+m{JfZ8;wdaVaA4Z7x2u>hsE`FH)TPw?oUkhHYryWuRxCoy&XXFMI^6AY9Ue_AWE*cS z)}sMG)T}#Jl2FteOy#~0)nwM+lSB^9$oEUqyWT8=k#Ip+Ws_4%&Las9VKz0N0@|+R zYiUST^F;Z{jO-_n(o@s&^CT|)FJ-y$e0_dg@|IDA&kuWBS6PtC{fn=ejNhBb_>_Q^ z=XjF0Fh*7s<%8CbZU=g4&_c5LVGT{^RnhTF#YI>%ZOrF77aFG|Xsbp^ZME@2vkgYe z`j+Q5P$p2jy35k-A!~Nan*m1eg4GDPc~ldnZ211y7&}sJ{i|R=1MRKxh({k}<~ACK zgIM$vqPN!Ud_7P*FT~QEK2Q5iLM^Se^Jmc=GpPzznVzK4BzL6Iz z7bF3WJ~6JNozh7q_3I;@{fzbK}!o=43U!b_~Da*K4~be5#&J{RzPPRCJu~9iaaqh(9k>-5)BpKOCvLTAKs7&gT@_S50y#^!)_Qe{? z;W8y2Di@_jgdTg=d`A97xfd3y+)Ng1t}&6XsKDLS1Vwxe0T@37RIH{PNnu3wS*4Ul zzEC>>iIAaLzv&2f&SQ>=ZdN{$C=gmqL5yN5u+UBAqJARsEh#dxYO*B)iC-+Cm>u0ZQO)*Ans31WSS5%(Qtt05PBM`@^y+(frGE6fT+f07~IAt%_4r_A|; z30irwbGEu>+BsG26{Ly+!EMRa@lj@0W2s7$p%Gf6P*gOORB?k&2o@^ORyOF)s@|3gRSr!k zPNy8KLOhEdvAF}NyP?cel#W%P&xxxEUIVnQ>GjYZ%2x_Y0z-lgO@%i}Fq0bWEif}8 zo->tVbSZ4TMlAwG)i#LUCgW^}k%CyN_QhEdEL@lp1_RLN_~6bpH;ER8Pg1BVyrz1i zE6LdGQ=2lr4MTR8b@@iGdf`}WQYet~c*;7^rzEn~f+f(Qzg_4bJ?av5~f-Sw@lPC=uQK@L%(L2VthqBYr zoAQk0C4!{4=KDDnK!k2;`+jl4h(v=m0qhG+ZY0IQL_#rL=3%~;H3ETOi-@)4R5HG{ zj+@cABxWHjEO&4sOJOP1C!bV7!|QIAo~E$2q6_`2N<8wQ7yy0lW(j9&`cW&0V`!gl z5lb=ZygkaeB$fbl+28Lw$l1wbh<%t^mY)+YWN>7=Z&OarrHQQI zX4fdNvU*SGhFhDmC^X1HA7(tSsPQHj(-;2LGv@TnTz&;oq!fP-vF)6wR!F{Wb*OUx9IsgZHct11JmQ$_ zwk)`{9tycxM2%%+ehuI$Rn|a4;imBAMi1D1I0+G0`8M-tBDyasBkIy<5 zmi(FEoFr7Us3#R;?+|2!I{g$41o8oC_~;@o|6X5GTwlI-1#s(N2- zXnzXg*{6NL)>wh6nz~#GDP|#Fde84sF>PJNw%3J%v-1_fx-rf=LPXx>wl3b=Z_`I- zOCN?fB|1E@xnIPVz~9Xt*6~KO7qiGr+~B&))H?5jv;CEQD7)C7zETOfeF?aco3cf+ z?!MnT#^X;D8^Odz8Z{>|UDqPVS-dAyR?S*fdi{Peq zCTV@!QP2MdXYA&?tNRjL9;%U7VK)20Rziik(;7`_i1JLFRt;b}E!5qoHnT?>VQhMx z>k73BsJKl|{Rir;Z}kGGAgGNN$B!Pf>bA&bfN!hXMobWUE>85W=s_hIk*8Alhkopk zEXGNo{){;9)Oe9QV zuzGbUzBj2z{>;*r?he4Kd`QXQjizcYE3kA$kj;u}o=<$g=Tg%|ibD|a?k03=BKE}R zYQ-?XH^F4mFhm^64X!Qrs%g~ZnZ>C!g>bzv$>oAu7QH-fZQxXucK`@~V>MAC&nHZ<16RI5o z1LC4%wE9rcS1dMf@d|#Zn%qZf*eU@TLh3bdFx}A81&~l|?M(X1^v@33`%C(!ss2z# zh`*;=mL^o5W@=ie*!N>*z=l@;5DuGbG?fq_dIC1G>QxSEgrW2wA4XWPkO_I~l0A+~WaV#oWYGAdh83RT_xCc;PZZ2C4 z#;m6g6j0LM46w3Awqs3m8=^jygPP_={*6Y+D~Z@>Y8i2_rl_ivrZS*=XT!*Aa+s>wql17e?ULi*8OsHnH4@ij4;-|4zY|-Zl zE}SVZ4&Rc_&#wC&?(U)k6zB?M;t9?+q;7u)Z#W2*5+|1h(|sGI;Ck+mB2y;%?SM%n zFgWb|!>NTMPZcQcY~^dzr3}?EYNr;;%&spfIwP2bgnHbi7^=%XXF2@?LU|>a*y~m_;EBLqQgkXyo5>al)bAr8dH9`#Rl+8;YFm$A< zJgZ7*&`-9%Vl>yMOEPc6J&%^!RCLGXEl81|{AqJLlb#~PB`45edJ63vYkWLv+VnDX z`3WkNNkn7@Zc-zx_}Z?&-0+Dk~tLb#B{Vov@wd)uq?5%q^R#`j4A~Y3+~Ft zGTSS$84cARLa67I2q?qs>*SvpsTAt;eMJs5qv{t1jn?lJ%`nnzgmmp0vRKv3lDs4~ zxsN=X(vJX&4J>q0`;&HFX+aiKRNre$3)JpxGSIF}vkR?&&yq?Z(+dzzb3MvbRjjsE zY55HW)jiKnCz`qG!VLo*Hj{WEaPzbs;NJ5 zZ1rQ)4sE`56@ye#5}6AJ8w@am%o(nfhrjGVc02@%YiI;SQ`tQi52&n-1-oz6T@jk6gR zh~95~F%&Xg2@L!duy2WY(~h${bWdb#vZ8T-FC=3W^dDdqN?q`~BdH=Mj;2?XDprm2 zAS{DaM1+-(IETXVAVnQs>4iPAYI06Wax=FO5kn$1C~dbKw8P0dkM@+4(PRUOND+fU z6t18{{H}EwT?qFIOITNx1gq^Dt1jA^b}GO^6d$4V9?t1()iI?5??$)iBoAlGGmd?v7s=`3@VD5sa5 zFXDD7P;m!hf{Eh0F3;B|!`uKs1}xX6bugwx%H*?NE>osQ zV?dlR!!XWTiiVQrak)iN6B^F*Z5Lk}Xy+O3(HF8SesEAb5^Pb{-lywd2m;!RNY49Y z`&Bf#C5*O$meViD1y#4GvhdhYk#{#$200b*Zi%c@P|lf(;6L-;Vz6|^jRz2@wJmF% z3D?HlsWj5aFz#mN!$u)7^_?KeH!UQtxR9VYOUQj}dTSIMnD1EvuAciATNOf07AMV+ zP|Fo5%Ti8*H*SS@RV=tB3t~((;5BCh3czAmb~(|vWrl}Bh8ar}0Js@J9scOgM!q=Goq90tf5c^jV2C2H~@Id z4F6MpJK7-NlI1Oi*1~HhNF{9rCd?~$vhP`CR_T4y?2+ewnt@bszQH}oB7)%w9|pH73%PT%hy6CLe1rv6lZ+ZBA6c{qvWT2)>xViIncrjQs z+`c&qH!+W;GRL5|5>cY|FNxSjneV#^D$Z6w@I`XFZy8LH#w}s^A2Oo;8}juwIY6_C zHIBs4rK&zcguC{uI~2CmckPA7YW)_k8U;Z_sXoN0^S05*kW&Gh>@RF1NM7V9EBl2U z+I}|*hKCf7UTO7?gvBGm$cwdvEOdhCCN6IjQGO4KR*nW^bKiDW7@J8*a1(<`d3)>%)Stc*ACu*>}O*~!bf z%e)#+=rLmx`>?@MPi*yvyf>T2P>suwG>%6ttC=MWlzAkze&swsUd(}!NIc22trJQBG=^c$@MiSy(C9 z6$yzATz;>g(+pn?Z_T_0N!dk)9%uLS2 zsFv(hUFfU8Y@geBeC`CJ5ixT23=X*yJh9zHWGp|EFGaW$`?hnBqHpoh5`zybdwp$F za;ITNFO}pN_`$R_(ZCO&r3@dFCnkfsHU@W^FaD~r%|Fr%y%U`5^B zE+SeBD`Q-_%JFEd`iEPKPn;dQC>HF>X%Bb%BR!_4&U(JD7=d?p1997F>vacB4n)t@ ztI)FMZVfozQwqE-TVwU<*^Oj&4P{s|8E_jr#0z_zBv&B_^=fTnTI(4#bg$76fkbU0 z^i=UCm0)W(UGl9_GOo^N-ums?zKc86!TBc+)XI*4+=WVpzeOXtFt^}N;AKV2)- zqhTvp$J3EJkbYJ|^(E`G@llna+4|Z@nY}5#ENnd|5p`u^3itYN$kY|mlO!rU+*9o& zI&U+H5Nqi2W{81(C$*vKXxfK_;TZr!(5rAO&iY z#9`3;B&y>btJN(sIMk|wOWD{T7v zoTOT8w(J!?F8zGHt~Xl6Clw~h!|L_u6%K;_z0+rrm{a>9vBqOI^c$W}VG^m^adMm9 z_kps%U2$BQ{=*k*+07$Zt~W|a)W~ii_(~mC|FPxuEfX${_^mvFMb z8@J8>yz4GY0#f}u39DwZD$nW^^}EXhShqW<+oJ)iPdiezz0ZoOfxhqqjS0EUlA4{W z3NqsGK+h{x6g{rH$f&W*N-Y;g4xDEQugN?bz%nZn=K8%6jDEYi@kC_6K~Q2I?6i*C zzM&~@Ys&q;u@s3KE%Jgwue;J~c`HRyBqbrp(kkfyAgv>9G00J)*y^qE)9Q>Wa`UDl(-hpmG5SCB0UA5ODfuT;Y{Gl3hc>g;&OT2PXwCcxIkCuvO+Yg*Pw zPyH1$x9*)^IJYUiSw=gsW!9=gGEFB&$qPmwNz@h(-s)S% zL5y2-c0kWRS*Hl*Uep79v+ujT0h}x<((#ut2gaEn-~c%eWcVyaTC&{%{CW)e(>Z4} zOVKl4Y)T&b#ahJOzg8mdhSbv!WV_Y2sw7g5KV`m$#HchH+@EJV2!zEYHy+2R3N zim{0}_3Fag>B=ZdDh($m!m`)ujem-DZ8g(4KL^0|g>4O_!_-!6Ps2?)$8EYAl)S$c zx}0o@(e^oIY5+hHbwLl{_Ba=WWY0_gDv@2IG%}ePVQUm8CG4OPll=!@Bie}QDGC(j z)>Dak*xxa-mhw=-%u)tK zog0)+bV+oOF$}^_l@q}-oLMoFs0ExzcerEADdtV^A|c1u`x#2JDrwEt6-Q;}o)r3g zK#-{zo|a_Yof73hgZW4==P1dFoBK29LPgH98z58)S}sj#p_H|HTb@#>gDt9tzEb+t z+kqS~O$J38N($f>Yj#wzZ0){Rc?8hmmnrh_wJ8|RM_AnyaU^0K6mxqS9vgdbk&$FO zIZ-6!l5tdWW?3yN83GhRSx~Wf$`!cJQ_i(Wr|Fqvxy4ZJC)1*(F##Tzl%+q@b6T8n zWW1q63~kXxEu3w=XPB2JyAbOUf@nf-#Q6rhC)GHQ#)az;V+%*iL~35u!l}izzc3;y zSeOd&1JLzNH%o$pm}{AXKQo;--Go_?iZ*#0Goff~ij1dJ0(Lt{Lpx&8-X_rEp}hk5 z^5JrpTn@r6waL^`B^z~fXxXr*viPOfOxJSl76n+!&Q+&6J1Eb^=hD?N0OjjZqE--` zJ9L>)s4Vv=gh|8N8f=acBoJ*jYPiz+@ zVB@xlW~UWrh!%k)94CXFs6t__iw`(Z>f4AFnnaWAW`Y%*g%2dz8IrQL&K=2)fgT-_ zko97*U?*pVXXYt=GM>X{Yv5$Gx`)PbHwVSZeRt(l4Xy2F1>;>;ToEZO#MffPw-wDZ zbv3%rM-uJO+B{pbVb6XRfcQ}>E1a}_OQG6YOt34fsj&XXf0c^LjhX-3(l2!G<5-=K^*0@gSjS(a zPzq;Mm#S~;&MT?4L5^q`D`8zs7U>DU!__0J4RYJ8PL*y7KBtXEJIon$Db-tA&UWm5 z7BQ64lB#XLL+Ew&o{cM+XjR2E+t^#b)R-5VC40MT*P;93xmL~dI3;O}$IZYHuLk*< z8O|;Zn{!N|jv~q-oH?T!J{-np&qkBEii>GP7K(cut984=%9~rXuH#CFopR&`w0?x40UaZRy666YutIAgI67t)a;!ChRU6Ne`;pL9bg2m@8B_nr;;%sUBk1FzUFxvrwViM!gam zlMv>t(qSs|MW4(brwke@+c2l1>psJ9Bg`JU@x&X$+qs$5oGGKG!??ZN3qmY5!7Azv zV?v}N?ZVojx4G)NYe_Owt`Ea)LbIhTGVmYz!oPd+aNL{kL|OR$~L z&y*5)LMlP3x|^UeQ?SxgxN+RDgYFoEZLfk~ylb%?@-Lgof4jm)7;IS@npMPkSVl?P z5OK_za#2A_xgoomJ;X{S;t3qgI>GTClHi&WtA9K64zUAILeo!1+7`O7hzH~H!{J9oguF~!?eN1MM#JTf|=bC&^WsKN^>e0{ylgPg0O zJQQn^O0^gw6BP>{5L=*=`Fp(@OClMsK&ZMM(K*5rL^{b(MNw=m!T&Jv<2srziyzf}Y4* z;3L}@6=1F)8txa_8I8KcJOhBtlJ5xvl&}etwAw?dJT;~my%*b5J({nH)Fm79ma78r z$4XeCdu+XHV==>bm=Q}H`VNSLu)SmUN084RBZ))v{10gtN?}jVIu;+2HBHp2nES{y zxZkcZ>7~gdI8wg~!^9j2mW`r-3=tAZM3f|)3!iJskhsAju~9n|)r_-Vji=LjInc4!2$0&>jbW1Cda!pyc$HDQ~0d2-N{Ou zO3W7=lXW&S2(duSG~6sT68^yPYQxG&EpZ0Bv=Yj+VJ(Sy5t0898ojUcejc>#N65?; z5uKLG{wk!~u^dT|LYtw3ZVBtUPAdZ;^S2KBPOWr4MW9W`x(BI*P&dhl$V?kSJ9D4H%OiSl2(bS$e6XJT zU%1&~DGDhy+c~cLZ&TFM9FlD%Iutii8!&QS$$JOGRIRpBrcxpIRi!Y{Jr1R6PB&xK z&l=m7qMVy-qcy}#M^f>zxtO|KjX)fO!+4J_siHn)tDpKB4|~6_fXb{@6SMpZ&rFp! z-Aq3k;={pb(ql|kOlzLG+AV7LszU3!Q7sS?LRPG9L!4AjgZQ&(`b)}nr>P*=6IV_( z5Lf%0Af)iu<$_qvbsfDAJwoN)Byn;52S+NXd&HND?oL!x~8W;gr zJ(AbGk&4kBa@t6%zIhWyTrQqH|*{asq^x7vBtyblKOogvM8@5Jd z8K=7@4Q+f-wNOy|D9HoOHN68)`VW^%)xv{ju=8;?F;Ya;ZLbtb(Za_{;aAGzGbz=} zC?Um?+%()XVH=EbJT=p@Z7!%HxUFfM!foCoBm|dL3=;cNuv(2b!Rj}4AW40^Ci2GH zvilU>Lk~T}-P?bRtCxqWGZBP;t&6=@GgVidbTmkTPtrwSY-b^|-@(*MC7_bW3HGLV zvxp-4K(YX|ROwjM6wVRezDlbotc5=d>ruNZ92L4R zHBhioYMt!kx-us};?33CG)hW`x0+8rhoOU0o`W*yjx1sD7bifW} zGt+HuBAJ@WOxZ9wd`)Wj!P#fHsJH8QOt186b!7JM5_ElMH&>vvVh2V={eg^ zGY#$|0dE$(ULu8)zmelJBi&W9&c@;MT5Jd%WN}mzah^ISDkPuWd|6t-s!aqg!_%~= z8=S-zBQ&g4!%{!PGICkm03Ch6oHaj=HWJ!plD|FrqaG)q;JZMaqnk7a{Y|! zv8_6Zl`-?$`#L~HomY8>8mod!<7ku=heUe2Y8qR}gL}Q^3Sz@)O?G@$-Z9D)CtNk9 z+jNOCWkpMobf9qc%O-ZpbN}j2a-1|GAr(T|EjwU}6=@b@Jv@x-Hf%vM^u6w#h&H$JsK2_&N5G{LB~IWSzoS0r7KJz-HuR6&*?=3NJ2Z`l$^gHplDT);```OC7jS} zTwBEvW6ZZ%Oh*a5d}nIZqfBwWG3b{=?NA)+>&s|uBwB3{u-b&AL5z7wQ9!I)D^6-W zO18|=X$876rW!h9N-pC}Ju|eU)W__N<2;}+0gH>oM((auSxMV!u_cje)RNy;=` zL`fu$@7QhZMxzpw)y7DIxznADX{0x>+P!RX7>pu+V=aN}T%Bv=(c8`YI_%U_ggI-( zd?Cn#qmX*2T?s@f2hzKV;42qvF0?yT!Y1<5Z%zR`jq_V_21>ZU6osQG_@w|J2d#Dp zEa3r7)u-C3i0Cc3BUt&lO*Ks%>P<%3H-xI;I%A4H7Zstv&DO~o#!CEEc_c&X1Xu?7PL;`$GH|?>=33n|8Q!%8`9&?9GFBqYH^hq zQDWS$E@G>u@8ayjl=_LCS-jmt`OEO8cFV8mE?(NMI zCn@w)cF(3QO$k|{4z^vR$ytLF20vqr&_eD{f7Vzv|&xVJQi0>R^3?rY#BtJ55|hZf&}&2 zi?Jx2kmo*<{V~cSdr}C7Z$*Yh1z^(@IEwZTFm=snwwO^;38+d}Wv`Jmmb_rEf^XAp z#9X}-^rkYMBlmVv(@F&{eAaWK7{fPZRGv)cyw5gY4VljMdB<+uDdZ36wy9l9$#aI$ zhpU|PTh^Vl*$g>dXIJwMua~RniD=Cno@{(1`As9KYx+|jQw>(dqA(If6D^9OC4Z&c zRMuB8ih84K9iKd{F;fz@cZ8ZIeVXO6TK{#<4SW=G32VcB$reJYmanl2hy(lq0|3EbP%r=m{|kgd-|$cf z0v8a6LLo6296Bisi^OA4Xgo?I3Xw=5@#thiEeeUrqLNu;J~JGP#H29^j9L>Jg2rM~ z_-u9^GL6k)u*nSWcO#$4=Mh=#4gCI-&8AYgObVSJn8xPy8nj}Q9fVk^P)fCyk7WS> zsuAfGX2ULmORm$KC2~V8yicn2`Heb*WSv^Bb=gHOm3)K6W^-6@3JqnjOzd{}#vZwq zslTAM=;mg3P{YtJxtr9|dsDOAD)PDP=Cv@M%3!rh-Sb5ivDc+keXd%Ib<n-QqiEuD?o?XGrtbMNuzNH%#QI zu-hP?!_DLb%&gA??87TblJ=>pEqZjvIPObY%R&(AClI0#D~R#9s!OQv#}5Q3g+Xyr zY?UldqMF~sNmBN|KunTp3%pDsfUq?UJLMg@Osp>#%Wl-F?In&eIe9LCEVXsNcnFlxW?<>Pv$NP?N*i0ZTAsH4>!@ z+b;ny(LDQ7#>-1*HN~u3$8<-x1-@y;7`L_|*k^ zzc!^^hTSm+M!#pNo`*xUiDjEhCA4DsfZy3$p4>n%4VJ~JH0 zZ9Pwo@Y`0uD`K2ILFD87Qw1_$@4f>TXfu16l`a?j`AXU9WkF@-Q`f7vT06H6qg-5) zo6_;KW-}3?RV24H{n=en21Qz@y`JlCG1tHY^vG5!ze2>40;}cBv6wTGXz%%d86!Z+ z%ggORYCWO^Hm6mE%4;yhOX^%^Q$CkU~7zL!4s8mcUM$B9~+ zbfj>aDwj7&p~|P2g#;hE<$duPDW&tcqmyFYQ>swJz}2FZQ}L*Tjzs6O2zGFdia2a< zIi0bmQgBw=Bsa=^`YPlsP~D_wX;E$TCss=d8p=mkPZdo!=S-!VBnyhk$?dTS+|ixk zkbnqrBBjWV`y9*uhiKWe!#Cc8V7Q{*_8 z1~{9gi1bGvW0q+WU02HJ(KaU$YmV$e1)yjYj$Z`(KgCh)%ta9i)(Id_sY*Q&iZs}n ziiv3PEUdwLK9J1xF@m&V$I)eI?B=9_R*>2?CF8Vl=9&#&aQ0+LB2i1>)doguaZj9T zMHdU|y+S0`aW`rA711&Qb;glSv1SVV$r-4W>w*L=#^$tN6We-*q}QAo=5iWyJClV8 z$GPV)@Rs^EFh($ys};8r<71O^w9Q6PS{%?J!RKny7K=s+oboE1x?gp;uc*c5?H)QU zW-H~DQ+LM4s%`GGR=_Zv5DtdW`TY!Nmkm1JTuJKMv@Qz=nio z6**=%*0#lypV~RG&yastu>MFol)E21O z8&_N&JpL^V#z(SQG`Zw`+jh%9%}qwILsIhYJ1#1tJ!fRXm0Vj&#yxBvII#yAOtn8Y zuIVny!tY_7iMOWZRU0}m>8-6MC{DpH%p`)k?UlNPk%@&jCVvWV)GwCPUiPON;W$i0 ze=Ew&kKq`Qg9y>?Os$TnE7k1?WBbV|*EF(Fn?{hz^I*T_((1^niD9fZK722glth?0 zU8&mDdgj8RMFo9=7>0VpC%Bi9?6$%XHI>f(MFZxI0rV#T@6n~ zaTuZ}40`dW8H#UCB)l+HN2KZ&ERhB{=Bvq-A*r4zd8s1%Gnr$JVS?FHnLf!=O1+Ho zeeP$I)h;n)magv$>&&%EkgJP1JtF$7v5_S_$D=yBt#g}E^K8m!>=3i=TA5n4MM&V= z-oWFl#G(|MuGR$l!OOkIxmig~?u=)EZz4WyyO$l6W|^nsh7MutLd+g*`Dtj@DRQ!X zoNZcvma8s@x_M7cw0D)-4B2pv2P@jzFy^hoGo!qXc*P3krySOy zvoI<_sJthY9rd4|oNIEbD+tlCw)4~OII8O@)a7E|G%*bzu(sZHscjDN!B6b2o>`g4 zpASY_R{lv!vIbjC1?)#rXI8v7j%sannK{@yqUh#vN~iws)6!~vRgN)`4^xA;G!ALI zSS5cikQx*EMEa?E3(l`$bDy{je<%rKNW1*Z&fgUxI zmaW?yQ5Vtp002^`sJEEB_%MVmO1%fuD4VTJiaGp~wk_(Ra?#rNM~d z(Vvw@g`X%N1FE$gM7nh{RaLzGF3e9?C7N@}ZodpT72n+Qbm+4RTYc4ows7*D{7Tpz zv(%f0Z_GuI={~WG`6MAbX42Q2mGIkr&Krpa;&CF#(x?Xc??S%@(snFFL!{vUW)dh1 zpn6DZkAvcdiMWsqmct70jxS!AqU>qwc)*JJ0R^bB2lR!k=>+R8?PB2U*z#uBXK%FjML5HSx>GQCaI0>sF+zUh2L?qjOl(&DBtW+eWS|c!myMd% zaK#d?MFR}@Sc|^aWJMN_48^Lw4GQ9F=xBnlCXud0G;EUsgaF9yYY9#)I0;5*grH>Z zbpmk38l)=y5Pp`?h>B?tiip(E16pTHDFu&^+-FqGFL@IV-wR5PQwnw~CnB%!cL0c# z&k8u2E_oj()P6+OAqX`JDE5wvy8p@gt1Gb|@uK|eYEVwW6YPBiaJ?gMqF`mc8!c@A zr+$FVsLk%Ob11@gLu`o&BOvY#5O8YDPQ4;)9VF1{CCoZ?$If@DUSkqN3&%Q&C%F#D z3V-IK2hKQD$Jki1iftzf>Pvdr#gO7AoePWNJWO<1uB?E|qTmnH1VxIl#a1^1n$E+X z&2b>gYb=tHlrvCbRVA=QMTDQPku8QI>Mo%lMEv>CMtO3Cvdwtr#jd^(7P{(y)Tm7W zv0g$eu?CR)Ak2_w&Q{!#sSrnv)ITOj;u<>~mOdyv| zV0+0fIA-8`4Ej$9@c-u7D-pQ^=t3Hs^B%F&`W_RS_q$23B6*z#_Mk!qaI=(`retegrosY9S2tw5Y6_T7VGo&%af zafW$Q$aN+#vkOTTFs^qk-x}(8phZUy9rdDDaWAIXZ`It0Ua)QEweWgl6TA+T;}TGZ2$1+~&*0BL$MG;{i0s5PJa-U5Lnbrb7aW zk291JJX8}dgW%{Z^sY$(0P=$9ll+e`!!oHfrb9Olqtyh99~R5I3lhUci;%?8l&bYR zMGUy<<|^v*Qy>&lsi)$=?%uE~Z3Sjl#~%}*9?k&eW}7EY!|HS#{? z@fvs#2JbD2BF=Xkt2Yu(9`P}-*K-hw(zINW-A@kNMvajcYML)qT4ZT>g%E;hsigad zcT1?9Pn9BF^@BVsAxv%cM@Dl3<4R~NRP4i4dJ__i$t*8)W@}FDZ8h%#rV!Srri+ey z6%g1+ict46aE`GL7!RZ(bMnuOYBN7pk# zCZAI@+HPAk^*aO2br&`BN$qB=4=n#r=4jzxwqFNrVIkwCW-OHi^@7)MiX_X#ZE9GiiSarPpq*4DTJIvv zGAP9Ea^KBWGe}%(1J>B8H5a`NROwUDM@b_co)TXlbR~GU*0rnom9V86@DX$Jr!+1t1!A&!C zjp#CUW$si(GEgb7fpJX0?*6M|+|Q&2pfMU$C`|KdN*~kOW{;$Z4+U=(BU~o$78T%i zhapZ?qaf!&jI69-XYB9-lAIATZ#f;VL`FR)ox_R$y%&fvakUK32eZI$OiA2pog+$R0bVXss%=Wy zEQK!=?;P6LdGpma2-Ob_@f??yRL|>gwv_d`M({RZNM?ZMIheD`TL*EJX3uV}E7rr& zr&q;)8}UmA@adoN88Oz~L|2%JFI6;G5Rf>7xYDaLjsmRdx_(lnxVOQRxkZ|rR>4tg zFvrT#7>!r%%N2S_lh^kr?xN`ucC%`^Ga1m83W0$w>U3HWUwfyMD}v5OB-I+b3p3*o za5+Tq2O!gjBvFFD5?88HX?Y2fVyiT3g|fJ5?Qq-^xU)ePOlrTFCr|VCY7$9CS*beH zSzeN!+c$rwdWM-9j|UoK1N5)9Hwl)J(H2>oPEe%|CNCWE!YwURJZ&3^cwYVQzGivX zUhb&&4|{lsFJy^ffVQhfd>Ew}g~g&6AEER+23%0dl1uWH#21cQ5^}3*>c$J{vJT5- zEm)nqQdO^VoS6DmG$KK7j5O~~_-1;(!_rCf+lwL>J+-$!Newo636^6CR(IC)cNE*! z|9>_l{dH}E2Udk^+0AZmHlhri^qZP$frbUnf|b2TgNPv5r4-E0LHQl34fUZ+xQoIr zK7|95T~L$EJ3hNwDXGj{ZO-x(%WySnYH*Lua|aACAkdL5P_ckeYAHDP+tHW))YPpI zBL9*pu1f|qP|hZq7p2=SK_nUL5!&_2CK~cco>8adt;ABr);_srwaLwwU6lW8H;-AC zlT0UeSkzR(?UK`OT@BaTt&SpSa$eLHbj-CmCx+WV%ryH+H#clR(mhJtYQ)Bh#ncg+ z{bx$xHp`Ygz_v|}rN;ruujiN#N0&K+sV%QjY!e=+>8WiTMJ@Sho60Y()g?Rf+3^8h zcssMIf7%)2P*%5-IK+e!8iDd}n%m%+`)=F!#@3U9a{NcSEXMy^fu^jf;7-rux4F-p zEkJ%~?+l1FQeKm`M;{N%4iV>=kg|+ff7U%Q7j{lWCbpoW>7CNQb=zeda-p|zOL}9R zM42}jIYv9n!{7RBO}>L@x~b$htB0q^>Ha%%kv78}8%)rQ&vf+6X=0Z4P&sK#-K>XG z9zdI}Y3Em=dX{JKGsMITfYjQ&bk&6B@I9a#JKaOftku`^1N44!SvfuF=emB~HSwu0 z^E5|&j3cv~nQqoLdi_*sBQ~`+CyiFakjT91uckX-9_pFcP^s55dR5C+i3oE47@9Pp zn3Ex1oKmI(v)r-!_Y)w8=yQ7;QBQX}s1sea!T7dH)fO5X|mZ>4%>Et%Ib8CErxA#j0UQJTwRG#b77W0ki_@KtIA znki|WWv235{)Sgis$DKqie+n2fR^E_@XAe-4W^3ebkjV9-%oJKQEa#Du1@U;+tVyl z+m?qhe7osx8%`EVpCGkx^cwv~Hz!`mTC?*j%qlZ&)^2yyPJJ_LxV_38FA zGCKdWwxFp>YtEFcZ`=y%IgG=s*t!V|(8V^%B6NqbYOBc0JrJ_54XG)zAo#J38>--> zisHh@x@{{16gVmS!pp>~d>Z&Ss>^)+M92C(i9!o&9Q(ZwDpagM>a&*RyDOxSmLJE_ z>e&DX@<83aFajQ)FR1F{2{1A`=*ufias0338I^5TMKW@QUd^DN9ty~9=Gu2C{hF($Cw;Wmd}iY|d(y z)kSJd+4PG8Y}8t*Uru@!8I86vLT#j18{TDqKyEzYmsj?C=eu#4Zf>}*OnUJ%<*q}? zpw#l_>CQOH29-B6{SF;!@p3OcO=n!qFv;UI_fHd6`mOi6_VQMfgUbmX^KN!}-cP`A zjbBQxacvr5`nRg1Vr;=SL)uXAcF`#1Hf(_BJ-eu-h8vE;h+*t5@C&vl3!(opuvN(3tisi{9R z@SvA-oO(+=VjKpFU|j)o8CWd zNh+u%nJy4Zl3YcWGeyWI09$HkK5XFbqZhLR2rQY7ErAa$<^INCGjB-ES)0IvZweC9 z&1?C zCjm_tuzXWt zmqbJ1fK{W*J#+>4m5P9%VlhOk7DVJJ=LCE3vAQVK($}KNLbuo}H(M$K{={o=_*Tq5 zZb(x9A~W4gA3~l|j|og8N9RJDbc{8$(B%>tVnk&_?>CGZcrfOjIpk{*wRrj@#5=%W z>?Kg8krlYJwY-PTtS(+mvb#B~c+E2D;l>Bb_?Ma6gB_XbE%=ITT8qMMAkB)Acy}jK z6S0O-0?dNwLhrd4bB&fNQ298Y)%cc~&gepd4M z-nemsv3w^Vg9sp3f2#Ih4(@8fA z%o%*pmm2O6F%J=CtH)&~v$M*hJ&(e=SN>8s?HlbV!Y|h4w3e}u`1jYt(I#c1{7bwCsPXO|Pp&5W>~S)08#TkW z*IO!uu;vk~7ADb`Nj9en4Jjvs%!sQBX^N7tt($|B+q0M%=Nk(6G~&4#a(pv+#G%p< zm?>UA<7K82LYoQun4|d>k<<|r9jTDGiE^;FnjXFBr>prulOf3}Q`e(;_`zcx2`mbL z8Ap_O)xY^v7@QTIngYe*Gie?wL>(e4FvCKl8ll3__6s87 z9HZI535yETY?m@}yko&E>U*`~??Cxc3>rZxVDgY-Bf?6}!@A9#B zsre(pl%Wa6k_hiLT3I||#t5ZKWVJ@5M373<<7u&rRq-L_K+Af1zrcwwQApo7r z^9fM(#e7^a8#*zVs>o5I~fz{IQcgtA0y5953l`%p;L zewuO9BviN>%tJ~Gg|m4DCTzN^k?9{9GqH*E$-I8R%3`9yRjHzBCydm^^9jeIOR3!0 zO^eW|Lq{TTu0V5O86c#VbKe3)4}@*dGww1eD@?k}JSkoiY3eqtpe1KC_!#t`N2p0|32AO_Bnsm9sz3*}78HPAlVRkXy7r!?u&bI+v?9nQPs{ zn881z0-W6~ChUjPL--(5evRX+JVewr>mt1KH7X;=&kY+lTGt8@AR^l0yyPpey&_C zzXVM$l*u~EuDPv<#kxz!gJm+3u380%#*;Xt>h_^4oQc8A2!jMhOK~1f*HSsanpOO%B0#n5}m~Z)zWJJLmc5F!Z5Nj z3#IE?*Wn{2Yl;(L{*gO=&fA12if~suttG04zf`54=+vUSdK`q}mYfY6fs-$s01%7C ztdaQEr076IvNKXGL`tH}rKCwLJFXfVT*{={0-!o|wNl`tL0fB=d%(^`cM&byA`RZ% z1u?TNy-N#d%S)#^@V6p~cSa2WEEC8q{3JL;eKI_~Ty=XGsKZw5D#p8@(W>7LvoWvx zf~T}eOdX!NyP~Q+^D^5_OJp#!(h;5+=B!Fx8_Mknt#-?D5EngpkIWvTot0I+q%x(! zyPF)#wb!N9V=wf*U6PZx^|s$JR2wT^)|@}tb;U?JVzwK$FWet8jqNk3wJV1N6O^qDQ(?Y4V61e zVGUuEUg(o5`N81QPgqdyB{RERBGDw`U!bd1+IlM_0E81G!^~LIJ`264!qCgBV&Nno z;}IFulmRb>=tB6`U5>;dCt8%t!L2v?R5^>8cIl z1PAzjs$t*UY7HzsRn;^O2Y!e#L3nIJ`rT23?Udo2{~; zrhN#WIXOV8$0>d&v6Nqqt)HSr&#s|T8!{*_h2P<%jZE68mF8+o;8n%~V{4H>zMATFqm+-aF#C z&LsgCg@?VA=4gGh;Uu~r4ysm7WWroH>kh6F5gXlAx=F<5MuR?4?LMWoqFUM#uRJrq zjx#YkyUBbxQ#9>lJH}t$WN7r+Yhz%yd`};44`-zZBQ1|x^jK=DanNN8HMxb%Y*l2# zXN}6+3UIQ0E@zRjxyp}l} z$t_Si`?6f2#gPgRmdqX{z_pI3#*6XfE~#ApwHfiT8`hm`ll7rq3~1r!uACI_ZWH6Z z8sOO1S%bXA%3e#OuO@S_oc0ypeD69oP7+(sqqhj9bfVfirriuhMMNdBY>#8*1H=U? z&rU5;s#a!325Xth86Lm6Ht6KK)L_l^9l4a$>xtZlc&mw{4vGWK?fyG;hwX<#Z&Z zENnY3`!H`mFi{&G>fGt!)~UPVb)ZY=oh`(3{)hg`Y!2=*Zvwv44C8uDJ&9z?LtZo<8-T}shLa;XdKLmggT zkho41A<+FQKbADDWxAu>+sQLa zlAS7Vpx1ZhL6iL%v(<&A!M_@gXh}8Jj!7-|Y)(hEXvJ#;z-vqGnUKnUe$$ruOa7=I z^*bBJ;${ybLz+>t@)z}mn+QF2opOrbUxc=7{Ys|t!V5A?ee7zqCyYm9ZcC4vx>TC^ zd(w6mHI|s`Y$7^TQlbn$ZywGoWsl}fW4D*0%sZsPzbQA>@i8ub3_Am2r)e_E(%X5!TO&(a{)Kn9o#5#%FO{^gOgC@+7#3q14+y^+I)ca0(G~?dd zCpgkSb3xPKti@hgb$H?@e3(k#S4On${~jF|6)P@_vc@y1+X2Qn|t2z&R4u_it4 z*X}}`;j?3PtR->Bv@6~s`a5{NO&boDGNo3s+{LK+^vlT4g2L$Z>v_I8gAKzM$Tcy} z(2)foBB6b}25`CBx${WfGtqvpR&_Rc)WU6|B6Rr@W~9a z3mv1vD3h6FwjB?DKcX<%Jt{dsqR%H3>SQ*1RINxR)#n@tYYm+&whBGRg)bci4HQvo6v0-m@I4zRtZ^T2W z5!!8n?VXz3urh57(lK(lP4)6H3;Q9LpI@gD-?_J!>w?wMMrn6D;#j7EHW)iU|I>2pD?je%SeXC5}c^&s?y@KCQ>ma8A~U1Vp5jf z@U6*DU7!K{ejgFaAoZuHlTS6l7)6B&# z9^NAgjy#0q&I|zuuxqAWH?>U~WrsrufCK?buXIGf+jniYn5sxdQnR7<#&DmnDm>k# z=NYA|p163u)v3`-TG=&BN=(r;v(45`a3xjJC!A3BJh4biseCA~ERI`I2B4GnA-A_P zbCB1%D&>l=WHDO`;wv@M?tiw@16ZQY4tCPLSkfJh9@5bj4GAQQl_uosJf=N(agr;? ztf$jNpFgl!V)M2#F%D6dz){CtvLQ-0MWt!$^n~E@U9(>;`VGq>|)c?K+8BUhWYDDy;nzOzf}7}@nP^c zMQzm;-tnz+`%P!fMiqUyw;Bt@M^CXTAi|7$oGSctY%Ib!)-;^oA?AH;u~$A<=<=Xj zu`o?&zb7~-o0SXEXRl>uH3trrms!&{$H5}Lw{F_nOOkHPeB~y_=yxHD_W(dZzrT2< zjLIZu(86I-HEziS@~nsMb)b|pL5mgIIJf$EP>eQfNgbaNGp<@z$*x~Y-JQTfxa6GF z7H#Zg<}|cGnH;0vH0q(1zx2rn3({L(FFqAi4pigci$N$lpK_*LO4LRLmr{~w}Vfpp8zB_o|Q>`WJJm$(!5chB%O%#za+T`=)fuNS>{<#fGYKweB#91(Vq6$%s?FoKNl7~7 zDlT+M)^*0n|2qtmP(W+OXUO@#FkbV;p++Wn#K%6nrA-E(6A9r%siPXD6!W0Po^#KM z>fBr;U!qLzcEneXq8fvZUFyxlzQ{Kl@9PTT{ahG8wL)dmYyhz z6U^Cf7UwkTg|eyBNA^Ze%*s<`aPe6@>Fo>X^#?X+5gr*jPN3$at}bze@^&93nzcNuB_aYpSu;t0#-) zfw5D^(;FGXVn=S;HZfUD+{@(Hx-^DtfDi`U5~~Pr3~igEcUo4h>y(npn44asIV4}* z2ZqO88XA%pb=4aaL32vpnfmDmRSO0;5!J2TXpK`3Q#XCl(nsN`c7tlB6{@e~zojy+ z)vi-IU57!PL9{m)Vj|sE3(6ixg@Uu*%_T?6-X}f!$g*n!S;x!tu*IdMs_L8VK@EXG zF^~g?tu&9BSf9(w78s$p{IixR>7KiK{GfT?t$;LXGyr`TddIzqyItr;_Yr&<-b&V9QlNj)C z+^u_s0RLI&!c8<}V{J}q{vc#zx#eq+HIdgNt6Mx)>mFES>J0^Iwk4P|Bm#VSVwJdq z*8GuSXR&AAY{Vmq)-_|Jg;WwBxS26>rusy&xAB;?tvR4>48vZiaFkpGT(4}ArHy7a z)=nLIS*|14+}N?dP6)9GX|tir@0pTGCAqQn{c7GY(-fiIJe!sC^{(}{$G}G$KOU-5 zy=Q`BZX5BZ@=b?`jAcN`29UVe>#5yuv2a<`ofS5s;oMp3W-!|OZ!v4Ars@MC&ukr0 z&$I$NQkgNV{L>ZqNibMWCs`<3ytNxr4nFY5J3-swTsOR>hcPA%m%=j}4hjakqqE^AC=`r5e6 zhN^E$DHG|=Ev&hXs-X*u3A+Z}U$lS3I$f)QT;6h*sHZ@5B5@q4gR@RGcV97Va$MD1 zAUUiM`ofiEl)`-L6ykX0-V|@^IQl(4!m1pOZ<4rh)!KVB zlVjz+($kxu#$L*W>x-Foe2|~>9Y=b68+X`}(wr?9Xn8lB$L9JaB;quqr+9*Ud9dS( z&ELsmpnl$*?9XAuZz$j1L+6R`u9+nL{*B}InQWvehMKEnO4GwSQt9?Jrf!@s%1-Y# zJA-PnYXNZUUU*$#&QX?3Qe%6p94jPmdI^VH=I0tPVJKB^>mFnma1$tSbO!F=Va7 zXjIC|%c{;b=novR6$xt4Ne>j0fI?a zfrxZD?;R$^Pa7`C{ZCYkvR0$+4EoT^9nM1&D29?y+DSE%e3%=?CP%s_PVM@f``H2TQ*a@8ne^=$a+W>8n=LGM3D-I)RTPB~RrQ>g3+g?3St~ zJuzrED>)jf`6sYrIucxFi}xmNXA$qJ(h&|n30#ZfqJS=VUGpsh2>TVKXst{>s?z9- zF6^LiME(X6S=1Dt^5Y-`%$|)XdWJyQC4}Ts;WsdV&x2}#C&wtMJ1eU6vWi~dOa|-B z@PS1yJL2LX>i;({ZyE3VH-xh;aITm1DwS}8mCS0N#a$lDha71cr$bgD(yq zQR8f#ER3aWKPgi#)Kd09Y?AX2pnfRqx^C`mukgo3+Otsz{>x_{(g?6Ly(T68U@f5N zhnEj$Ot!09xlhi3a9GKuDu@Z?5`^&0^fp_J4uB{^)vNv^EIendPGe|k;<5X>wzaR`yHT9WE$u5%EzP;VTs7>5cq35ACEXuxDr z`3NP`VlPP{h8YtG8wtnSkqKa_uaxg+`o5zeh)!U7PYhI0YeEoGw<%cv@v4Z+%BjkN z*2Pg@O~}a({9n*0VTEG3V)rS>w6dydP7n-A!}CyX8DxwHMHG6hm3FC1Ll{bSEA!(w zM)fqZV4yE*Kb1P-aMaakw6n|{-S1~T<9h~8-q8gj*vuCJwQ@OD0Y?sf7Ov|ubj3fn z3j!)0R#5G5mj3t@4s-QiYOb<{mnfa_*gfuc(UW@<4y^m<84L!|Pps&L4``(BrAqdW=7d`_s%dW$AUwv1&VnaHvQbl3LVULeqf>8_24O+B{;y2;W2Y4^6o9imNJuL=sbXi4rlD#H zR!w&ht21GPNPI}pOOT?-h0ykm^&l?PnR7t(R7ol^^7}$70kI!JR8Q)*$S=?9GT{TI^GNv5h) zCx-HiX!y9qDEhUvABJeaIf({;rKp}uXlnMAjo0rVqwL-=XykKg1F@}zRBLQ-bmLTb z*@eGz*#g0ItspWB4t5glW?3OEjcf+j&*G3S2AZitH%n{IlJmR)ibIBei;UlLL;#V{6-B9lgi=psN||C5ST;c za9Own1v!~WWKlTO%5OZAN+YvsM4lZPnZjpKxm7ZkFNaDhkw^5hJsf{mW)Z1;&bKU% zS}U`uT|ReBx7Vl?ctnbMMYc(1aN0bU3<3dFCozdM%moF&(kygqC*bt?TD-*bjnXjj>VroD2;)2$I~l%D_r0#kDM%>(|sVU@`uSk2z5_ZgqntrAR( z#>)u9(q=lmwN7s#ob+<~ZZ)?n*3;B$R5-ogEl<2nZL?197RxNf)#>yethcF7rB6Nd zUtaeoNcZz|)}ODV;;SXjyLA4ctb5Gqy-ku@jWCVm9S5d}!YcqUOk4P-C~mrR^So=b ze5So{3Tn+dj2r^FxUa%o`@1QUwA`QW3@XyD&>S#@L5*AP@hfb@OrkEa#BU%eQ1gtN zF3$_2B(pEWmjJFz+yv|~%%Z;`GmB%xC!`6B`2{5FieC}EO!}nAFH;;Qg&)z|mf5PS zgCiukPiw^%!U|e;^}r5dX)i)^t7|7r4pV5J&ZI?GiMbtE{FuZD-Ga;#yI?*>pboDBh)w9c$HC5=^g9yPZ%wI&V zk~Bb+*pSqMs6p^T_cy+=BB2gOklKM0SG5auL&xlFM?uiE)nOz~>(yNrP7EDa4pEk6 zzZg|CeL~|-a}|=$RJ61GQC{`Cc#YNXWou@>4rBJQ%QBN|0$*?4%|%lSbU|Q44LxNM zLbqyhieL(jKASsk#s_r3@k3Q|)l^-XOgFSeQ*Ozv^uKuBw?&Z!<+&3vVMH*3$6LcN z(-{@S(wzvlWoT_XQ(JF@=V#KG-F)WQcmx@D=CXFH6h{>FKZrxq9UneB*}CN#TQ+iu ztt8EQaNTM)Mmp4C4tyyWuJ)aAufi2O!4*DBjq``Lc=p3s>)2EWIBz+ImrTO^emv>4 z7gObyJsiy5;=D0EYR%htQu80l8z&8b-x?P7)b32&gJC24tSXVDmX7UEKd|PTdBE5U z#jay5J>O$qZp{D6I8x6CGb8I=M*Voa#VuvvutyNCEcG>&h^yO`v1jQMEpt<9^)6tS zC+rOG6RJCvixRu|C3&YZo!$#5dAub7GRqz%l*d|6m)f0}!#i^ACFL8(YLri#fjXvrNHb)3#!(CGcW=1yno@8?lEVf+Zq68~ z2G-ghsh%S4q8K;V%$gaZNuTQF#GfkbjfC2hGhpMPhPf_Wk2g*ev1A!!P z?jbC<1W8^aVt6YlHXv8w1)SVsc+pX)M%b*@&aqi~3%OpybwGoi(IGJfVKug2RiXOH=H~wWl*g zyNa2UXo@MItz#!A7_xCP37mhA)1J~z`q_GnfUTGY%HIkUJWw(X&9o9SjbdbXEwEWx z7TF}AS}aK<31O|uv%tX6ln+~^`X;Efa>k`gWi-!~-5sOi_!e?{iHQBzKsgRs7vU0* z#qh_@IF41{bVZWM%4j5LSpN)@uZU;i7DrcU9bi(FjZtb>#p(KrOro1h@H%O-Hk^=| zBZ-wH`0Yi*Z8zhTj!cO8{fF~6)i zz;smYI(6zHG##YqwcsQ_Q_uoT&XoA^**mp6bB(GMQngDdWG!8;en3t0{S#a)Ky#|0 zj2kM7drYkqTEz9}R;1G+P+d@-h_*|+6e91WoOEqcVwSiW;skgu4Xly2)db4xG*gCdHS5SFSQ1Ga)q*SR~8@NRUF3q(@0E z*Cb}NOWJhC*t12>Ee4vxPOK1$bSuiTRuU~Htjbn{P=lu)sRPucjO}T} z1oqz0qV#iA-C4yuhc{idUqf+z8ePk1^Cwk%XA?D}Q72&7nmYeTZw)HfiCnmw#j?J~ zIqK5&u*D)GPgZ8iQB`?!W74vJh06XRMTqcUVANPRj7q_>i8SoaszrWqWgXp0y?JCi z>|?U|Fy5poU~ohOo3_?P+$x!V96QL9by;IiVya{$EAeAzn*6cJ?`_iY!?%lg<-7|Y zZ|XZ(X|%rLRyvbWl|6}XR{sUZDVV7#x;?qH?U+<*6JG4O(zS^BLKibR2Va|=jC0oN zPpH=bl5`x)xY;^C=yQ_iye*`5wz4p3+MVLfJ%}i~I~trjX`uzHo%OL@&&x_~ZRJeL z8G;((rw-iFB9ff+#roYek6oYzh?uEf)vhXP=4^vxy^W65RfH7k67Bw}j7Z?FdW9IM z7yvjlrSeJWhZ`5$QECh^xso^1s@C>%TO>zXrN)^R?ZMYAb4GKS)za*zwvBq!0#+#; zR$!FTnU0!83`4z-LF)7`!kL`bA^d)vwzKr4nndL@J+imm&2`)rPyp-8cCzvF*1IzO z=G+4pzo?W~&z3GooSa!IkIFg27ZA2Y@#=bZX4ScG;Qzi0Hw?&GqT^MYLM2(6i_-QmscZ zcSo5}S)+Au{HN6cgs~D)8F6IO%@Uk>Q6x9VB)3C>R zvxs;OzNGl%p@D5SY(Kvp2XKaKEiQ=%k_^t}n*1whjH)=+6t2tS4enHnnNBm-g{t=g ztUyrIvsw!2EDL%vdz(ANb7r83=kha+)6ZGWheFxoZo;^_y_Mb`9@SbOK!+G-uc&rt zPa)j}O&0|e`UhE*Udsq%+IL+QYNzoy_SL-g=d*JZ@RO!wv+p!Zg|<)baPWgNnkmrE zi}>BfW>3c?Q!E6FMNn4_nucZ2Uq$?ePAFI;q|M`;QF{}CephE^xp{*o(CL2h#t_7jRnYfzb!awiO~h`1nGs~cG}#CK_z+tOj$DvS zJdtVIfUiDIuhR1dNab)cn@&dbXP#ir0~Bv=uH@FtHcBB&>zf@?%qLq3D+(81{jgN+z5PWuawXr-%|e8n93W{{65Cj2D|MFl2& zidIGtVE}N61>@TI47OP>*4m}+L$C-xsxa{BP-E$cw5e2u>O~A|jIsuD((khjP=?;o zdUEarPYKGtCwPaCb~B}>Hwy?-@#4~F^kXDy$x3$cF-o#6tH4h=2)YpdT%}&&(i-{=__L1q@sW^K%&21O?nR2B4sqg=j~pjQoN;Ra zJ`)nkrtISH8DG3z)-gjO)=~)p=2%%&Ow+x1^!g|DvW}VDz$MKstuj?$c z{+DW1CC9$2M?9hjuNvvxOGg0IPF)q^+|V>Ymr+$2&l1nK%Tg}94v!-6nrH3pMQSBT4)#qc*E=seKn@nL z^zw>~6-I6WP$hjY^#wUeR>lxv01`%nOES{R9`Y&xpY%g8ZGj^Nn^4P++LQQjji9v8 zFGnaMyJ|NOGoGM|Z90l!60er8sXsU|GPlfaFvEdS&s7d*eHnkqPL1IldbgHE) z)z<_}YgEjk5q0jTMT=vKh;9jD)ib*FC78#|hU9P~SOl+3=aAN^I|pt%BGssn&Q?vS zxhGSYmo;w!v4qqW3_X%t1x;*sEaH|hRFduhR86^5_8f!M&ri|_^(3~=@!L`Hhj3-W zYX^k}wUV=qQ&f&L$j=*KM@vw);~rEMV9hkRb}4Sd^HL5_{q79 zgZ$)k%?&m~S_zhhtWgOT#&N2p63$Z8_8cWs;T}?YERjaZC*aiz?<4GMf_E_++Zb|T^Ymd^C0vZF;a3m}Q6RJ2_`P^2THaWRPOVn!KX zmR*BME-(w!A@a(AA{;xfAZtRkGj2GU;~P3C_ef)~q$R4Ka*$`yXlu<#dQxKl*RdXw zjD%2DoiKYF_cqmuiy+BvIAWlS@mScWWWg!UxF}@+!{}5~8$6?0@bY7b&ZM>jj?D|| zjmRj#1Y3CU--i(fnhvpjX83W96C!uC=EyX}3pEhNOK?~l4g*$9nxPLk+HRk?>1%TkydD>EESk_KG#PnSr24E17y6nIBVmW&Pe zA@_n)ktq}Jg8=MLVC>kF_7Jt%X@F)hU5J$!EFfX#fM3=U|1Qj@iC~WTE0`IZB9h$@ z2s}P<(^&9jB`kM$c!!n|UkXLQ{(0?{@;Xo1xo6e__RvXL^kqhNVLbTkN;r=V3kG>r zUV2cMk1xVz*mWltLdz0MfN}wTbklK_vUu6jbCD5`PPZi2_H$(%sHT@CCQ$*e$bEB6 zv?kcwR%HuLqTDSvgfUE>PNQ`l7j1asYPK0~ zZ%B|9_XIEOXz@iQMtYYNdqByK>C6X)t-B$R^?ubdYtR)^SBDo8X_-!&ojKX541%6i zI(37G3sul)Y^DOBttf=EedP!(uW&YWrMPS9yxdgHG#RgjQvJQAxb zcLe=K^$4!#Jj_*O=J3k;85<76jjA;%`0<;x9`q$6hZ;n96!j%bo-xPLpD>}K5fcID z0QnimnX-741ep5DRS@hE=2KxCHreX34s;I3l)faU1|?4(Jfl5Ps7Q{_u%;CATNcvN!oY{Jb!SEh}?wRzJYBcLUyEZQAc_gkQ2(gYM zb6)N5SC=t7n~S(c_UJo_PoXikIRdks8F@0))W3&lFr+fx{BBwXL5-NPlx1ovr_(kh z5O2%Jff8t=iG6Q8azjTxEHTeIE`;PP?9PZ#o;%GLY7S_C1~Ce#-NW^#5td?T!)TR% zxx0Xq#a+esLZx(%ml%e`%ZAO=g}36kZ#09CDa8@v;-;gWHCv zG@W@xzsxion%9)rX3#WuJ-wF;#fdXj;?A!+V8m6!VpIE_cpPvA8b9!{Z%t8~t8R2H z`1Q&K4P4lWt#wF}F=mGCTw1MZi2RO<(>MHCNU>4T*HWnxKO=}~mWTv*tsiO>Ex+_U z=vPR8(*QqC?5Zs_PU7KX@ck)kuGlD%ZdGr#m#bp7yHHcVBW~!o%u~#lYR`i@-zwm0 z_T6}l)kp_i$7N>uhD&nXbCE=e*%f zyjrITtJaS9aSt~l3Y#C?4&^my`9#svzKGf#1FyyDgHdkq9Us*5Sw#!RKho(WjY%`h zVX@0Q?hD4Ly0BFv|KDg!Vk#zmbDgQ17MwRX=8=DfZ$$brOHZ`frPO5-toFii4Cf2? z0k;pheW~Q|3FQ_pqqI#$EVGbnP_*>xA#@`bmzk4h>e@84)XX<)GR1={M^-g4v=BP# z6M+t$_|giYEti9(#M$bbO9)+dw7mr)9B)Edu}aZ_ptnuLF}8j9)n+pw#UXtDF|Qb-&3l_G~ORlXlf1=hZHSZJW|W*n7e#xH*=qI;E(VFJ+F>!WNpwd2QIcOT zlio##A%wecX;!$6cIO1HQ#Mq&?Hc0}e?K1dzJ9iYl;hQ=y7{f1p>EUJcXPRPp2eub z_2^a)o?3Tqo1<&PZUHqcGurYi=&Oc^rOXPf?kKH50|B;fv-0aSZ_E?5ouEy^h1o^~qA}%*icJL(=xWX-b5KF^+@?`ZDgCs;a9E zti<#?5nB-nvk>xG5;%*b4yU^<8YwwBvgC(pz|4$ac!gpEv(^o+wI>lgt%v?>d2 zExFL!7SlM$`W+~(u{4n`H_XZo_f)jY?2@~Zdg&cjPJ>>#Jxr9ZK+o!PH2Nhn)2$2F zaI+;uSW^WDSje@K>fhDWJ9R+W=v5_4B8du4wMtJVV+yrW%+$!oExi2;P77TvUt1G9 zR_371EV7*4%Phe!v`d9;amf$E9?sX*{Qpk9Hl=rate6H4k6ZNXQA1cYo%r}okkiL? zSvGZ=q&kwKi7&a#{Re5PaT9vbTKB}oM$yXKr#GsRI%^0vRn2WxW)5^6ZD!Er9WZ0m zJ}|&zaU_jy)AqFqa=KbB5rV{xK38Hq?CfseUem=@5`*vSe)R%2S)E``m1O&mJYKe=h~iG;PBBuc-Q)VQ{Jt#n{t1D^bbDyrr|vwI|9czrKJwdeVjw5 zKGa|VAIOr%wQ=GS7P{SNyH1SQDlZ;jqPaE}$XKiQXAa1}oVJXQ5|ZLsts#ptq?E!8 z*sxz>A@&l-T$NtCyhyFF zpe}b&7UHZ{Ymb&4Ik=c&-h54LYUsq16y*}#%OGq~sfjR09`N7U>@iRRGeNa3?N+*k zSL+>6!WC$a9Rwy(@XW!Q7(l$3y5~Qt0YIg*q;y|{q)aNM`?uC;hU61@Fc0CjD>(w1 zS@bn#FhyiHr`oxr#0Q5Afo7R`4JF=+ie7OPf3&r@yc`?uL=HK4zms_}S0Zs+CmINx zl#WW@+OCR6G~jwCY`N0W**}7s@Lp4R$ zB9^qNWNdaY=t`5Zg9L@9k&cWsy}=bdw_x~!{Vpliyez*fghs?3#@adC~wVvif#+h}PPVgxZm zVOZp&P$(B>u@gjAgx!)uR`Pn)Kp3GG&?H|m7n%$DwZ|E{5pZM?FB|A#$a3UckS~GfQDP9JVH|uwF9m<&&$l zGly-hy`&{H9K)!z^IEE|%2z+IBQRNZ3Y^|LA~XDuCwstgYR7(RKaIMUue1G?v8dLw(# z+VSCRJsKa8J~^`DJvAkreyda4#n^)mx)`wk&~_+}Yx+r$M9DB9O}odFdonsHlM0`X zBEuCDV&mG(a~C0Lt6H$1)x|bJ3}3=v@!g^)hfL;x5|s6@5#?o`R9q*D*UpxMIM!K0pIrd z*iAa7X?q>IpmB^C?U(EcwpypN+taFnPr)r;w{84MIPRjhvc*6z=?mJHdOwHg`e0X2 z0NE282~IlSAt^gA7V00*6JArN3!?b2#zt{_!!@iZ`_tToK9H2&?>h-tmHNylGwQn& zpz03sOfp!h?Np>P1*(aqXgTame&S^8`(n);L31;roXj-w9Go-f4CJ~Cq$NU-#{RF} zkcybguz9@vrH=RG#~6^M3EV-?8bSx@0?KHsN4up3*?XL zLoZ^@Ir;V;%e0lL<*Qr*xRH>p=`}bh!4TQaA-o4HnLU!a7LOAIrIDNo5lSj606S|c zxf0;E%Sf)$l);IDxXZ7-q8=dQ7%;>eJo^e0nrg2(-6DbjsY%~8#2}Z853mVrn*k@h zyImp-C9aeSA===-a{(lKN}8Ltsf(-<#1lS2NDHXZy-_1SDaV&tsxhdXKb!>$aegf- z_Nx({q7dE{>^&JnI~W2rqoNj;615?^gr~c>m&zX?>J%G^0}4Vcx@uA#iNy}ORU4!u zB@w{Asn9v(O1O*hjmkd3ss_AlEU#)1!2AY71AiT?10Va`l#|1aBQU_a7oKcQL9$Fi z5wS3|TaRPFoGMKf!R5H(LKq3T9CDY$8?L_hx!BPxqPL?bNxCAuVFMiY2NWK0|Cgc$5`K~fSNQb0SC#5vNRyJD{#Bq&1UZ?PmB zqR`+Z<6Ss{ZNw>hLL@+}iGsvR!WP+jGYfv8{0AM>N;WXrjv?@sw1z18aiJ^2ojfL_ z>ros@q#vS(yO9Q;doVvKZZ>nQzmrxIOiMM|%(XNx9vK;vWMxUypB@5~Kx!bHGgqzw z#zYgVzQOjSN^Le9=(u`9qWO`HNe8oeb3KF%M66yzM5-kmGDHFwle6waOIpb4Op|e* zB6~Bz>Iy|%hNs(xt4Q~!^P4?PQbDb>hmdvlp zv}B>Ga0klRHngFsL|DejNxdNqnJBMML^KoR1R+T7oB29K@?M;=fv=jM%1EXb=m7v6 zEy@ehkJ}a$Gw4d87$~f(OyItqB#)+T0>8BYHdO}4Osgj<=Py~rxP%}&jH*5A)hAMh zmN2*_5$zs3alfS&JKT{lgPJj9uCyQk(6S|*IITQebxKr8LqQxkG#r|Up{>G((9C`q zG;zFG&5i3lxFqMXBE2nO2)(PRmAKCoTnn)wbIyZlQ>-c?^irKW`?wi?o8xj+yA`&{ zlD~~vBE23Q8acK@L=B36yd1fhsN}AtZNq}4t7;~sRKzz#hpJh-Jqe4t-8oeg!$mZV zE?o#5imNvC@D>`-R4DgU-B=fLsKKP`jKYpFX-`s`>{hBz4EbWi^pHY~F4%g*J;gg% zU01{VqLw0O*tvxzZGaw2kO|<1nghh4%^k1=icTm1vf5!DwFOnOXw7@SBLxsY${i!S zk{%U-o5aPMEHBH1AjE@qG4m&-OfJ?_E+wi5q~)rg8rmN812B{9v6U_tw0E2UusVe6#w)Ez^t+XUK%wgSGVMv$iSV)=ag$wYRYkxC99? z!YMf9tsC4~G!oQT8Na*j1_&AY72$p&LkPHJy1~@{PitSJJrG4a>fI_#SrhS8W0+71 zt+bjxtxAQc&Bityd)@V6!X0Y1diIm6g)0m%&utf>V}%zCSx5R|N-I1{%clZ0`V~}VkTV>+ z=`O;RXfSddG*$C7W%)X=skw?=om+gI;gX=Jg-%SPPRlt-nLkY9eHRs%!TVz)3rN>m zz)(s=u!Yd0oz7ms`oYxAMS@+;8eC0{-&iaePKk#vy~G&l^jT`lJ%f}c^pam0n^w(! zuS=S)O95WQGFmCGwiNkb;r!W=pjOb}B(>QKUC^(hb3dh>6(l&$qe!&Emm30juZ&NZ zBSKUq#t90JVFi3z0IMeed%4+7Rzs;Ooep8bzZDr7z*%aiq)aTDGCB2rS}KJo0aY$k zlT+PgI}H9h3sp94zZ9$W$Eqt$`)Vn>v}9ZhQ9LY)#1h5Ad)8cglq;pWHbc6-J79L@7{wvlQWBfCUER>=>yTSD?8GL}j3n;VWF;Ru5NftuN?3#%z zmmF(z(vcxDPH5RIUOhSi!mf44UGvDJqRmyUo?2HN8f8nOk*B^r~wpJ^0TtElQj?C&K6U#`>!CbIRJt_{I6 z!b+MLLuN@k=BLHFV?~yIVfmkFi)n z_QARPXb=4ElbFHWYh>!`^T$1ZTy-$r?jA|>nv1i1uq1yMLAp0SU`;sBMMY@J^$AR* z)F`})qxP&GCXgDQ%*M*iu}v#fY+7gnpt56874|SCJlX9m(%xRVo=u`v3P40mWNJ0} zZLDUxBtg#e+`HsM=@cTC!)xqBHtMrZXcTj5Q4CDB&A`0(2-~$tZRe={)UMH@7LJ)a z6jD;Go6CNVKB5GeZ9^dK_=;BP3{t;Dqe9j<8r}rS2T^x2^ux3Qp=K zvXe3AptK;^MTe2f>EPDkCBaNPdUdd*Pz^UNW{%1(sHc8LPxmi_spnTW@8|UeYL-6sFwJj=N=A-&0N6 zFeXC0^L$ugk-vo*vR(t5%XS#vFSZri22D*&@TR&lz$dh zE}p08^xVYY(X0fotLP6Hv1P#(D$>jh<|P=OJX3jatR@RHN?W~rjZht2aZX1%6Ed6H z3Plx56Q+ez{PAYt7DnYR$O(p^jY&}pyke81Pgw-zMH;~JR88|R}ic}nBa+0*WNCjE8BLVSu78y9v+;jx;5Rk%C0xsQFG}-8!ox#Xw4BjcrkY<0 z>{9tzt4i4(XEVPs>HgZYX10q)v_U*w>-OBV$G->w1Ooqp000mm1O5#OgTlZt=u|2j z1%p80P$-lx8ybtkAdz@%J|hl#>{d@GmB}bGhx8T+Kc+|F^w`_}JujZp%G4#Skc|6`KxA615l~K@3V>~xm^J?6zM<<3U1aVuS#C8HHa4G;s=Oe?s_&DC@HtK@{Pj04qeQVgX{<_?tWE-D7sQ|wmm8%~j8z@Ju;c>q zMJ}5Y146IzQoXK9G!X{2@k^~DxbZ?=7Cfn3c-^tDv}Y2taP&(lKa(pXGE2=`$r>?F zV(~A-v2rlzuy2cxBefCYu&Ok2Q%veU}jmQ84n0`mG^qek<0m#qg zBWLV*Z;HQAccg#c^e-j_3vF8xj~4Q~j{?n9RyI|_MAWyh3dtEdy58n|2H~#zUoU;M zdml~FwD#FIv-L(lUgE0eSXTASt^Z5I$>i?;qJ1uRBRv< z)>w@_2|v^3!PG(Qg2?p}JhsHVic-K=s#z{3)6RlgvUPr@lK4D&_pWC%nem zNg#oa?TSFwyz&*>X({cU?@ETql49Z6k|*J1M#47h$4+B@fQvJMfwmcsqk3=fuWrJ1)!0+QI`34O@k zGb3iGxtDyHOEX?TG5OCsjJmLt&N2uVmj*>9d;W6qg}qM6wr<+dqI6PKO1`Ko6uT6G9(!70cQJXg)n)a(uJ=# z<%GJO%t6DoSi?$a1w&R7VBt4sTHX<16d%Lvdop<_MaUu1E=md5q!mKz%{u`n%=D=d z?Nyn-CWL1ETP%N3-*4txbHRFZ9ivxAcIPP|>evhZ3*Ywf?9cZBMR`)mA=RGPvG@ zqK4*Kb+Z}D)SOapOmv8ex#t%^pVY2-OQ@Nu#+>@zvM5LI)TNo3D$HI=Wpc>C>BCuK zqtT7gowLDzoM;qaU;6D%6uBKb_m3RZBoTxV!t=iyN{3+*c)h5~xm&u4Fd*@tXJ~@b zKorRflQ9E+mDrOo2SQ!EIt!K z76P`b=7xh;k)&ZJkl4+%TZnN|?R!SiQ8z~fpzb=*iC6%(-h#_#W=-*#ah_Y?)=+U) zqK=d3$ly|(Q!pDTQ%I2v^B+hKfvI|qpI9kIV%nn=BE&^8b5;`3XU}!jtv*Z^&Ag#h zwNB)Wat(iw_}L2g>&&5?t$y+$`pR zvxTiLB`CF)sJ38qcb0qK%O-}a^FB|QZ(fx8r=(IsTDzt^?J<_gC?idsJ;)O8Em@q5 z)VdocCPZwoiJyrp-g^*8^y7RJ1N8{Gqq1*LNNC!6-?|Z}a27x2ws^P?)o2 z91T4$>(NGy2M+GMFE$(UYR5Fu*qy}l#^VAwlz0YsK2+CK*=;Oyw#e1I>)2rKT`Zt{_MzgcF)ZI4 zIlcMOY%|J(79sa7 z0~AV%Z#7CWOReF?u#YfbhWZ333+%X5GIK*0mqT@IbAipIG2=1Pg2F@p*4E`1nsYxx ztI4Fn4zCuyTbU~K!;xEi`RSC#E&Ornx6brUzVLG|yl1~fC6sAp%4Ee}Y!n>3+3ha4 zM>C9OriI3{m!atFUX#Bv@#v1-cyKsc30G-7sBSMjRrAxUKd!gUBvlot1XXJm!TeNL zvQMg~CeLqHPO2L|wRl$DzkDq}f;I*l@}tCLim>SmD04)F)ygQ)VvuPnK8VVCt!}uA zChFj0YCY~GTLPr8&Y}QJK(oK92?AIvuAHgzs)sG=8D(Oq! z*2PZULaKizfL<(e)eo{%Bzjv6{9y$?_$)el&=_84z-#T^;Rpc9D&nl;aOf^#I&WsP zNepkWc0JF)gy$;N%5MW^25s#aV#UPGgV2*|Hr7jgjfM2wkX(}oqE#=-y9yGINHWKW zN~_NRstT6i=n#A(kqxRAf9K$^$Mdo|zl$UIL`mg|w z5h#BOmXDB)5G=A=%5t#;>Odw~ z#!WF0s|0+6ZlR@zAn!o^B~qGiqRDHHn5qKU2e8u-=5UC}UNNq=%s9%jE+dil$4R33 z%8Y#lm|;nnU4yb^9rdWV{;;BGM%u9ZEK$xk@~XB zLcPZJq7Ihm3LJuDAf<@GDKWlh?_}FAYE5nE(XMjYFkHl|;IwRLOzP%n=^p}cw3f$| zi>I3wZr+b;f|4lATSuJ#PV*rVc^T5iy=hk3>!gS~&?Bw}lzQjdPL z=vbJ7n9gU!pvI>CVf_{i@aBW$^Q6-avNs0?zaR>9N3OF2$>O3c`mqryG|Eg_Y|e8= zXlBz1CMg0}C@jb7XB(-^!SMXjV@95g9_ftIeToR2M!dfgH7@YN$jV|NrV@#YWeSmU zlV!ynrVK{09>8Yi)9*DF5TZ;ec&Dw%sEFc98icMfn`)zb}Yncd-b4 zMOwoWJbrS<>a8Bwq*U8Vs^84W+T5-t~w~{D@smCY8 z7aj^Qc2^)`%BTtzjJuzZ5*qEq5xyuRKu1@gQW9Jj}&u`AEERf z(>m)@0wPb+Z3}f73zs!)83Cip_7P%AO=j&Rj$x6Up^nlyW5QrBFnKN#*5dSPjg2KE zMzLpbvvAgNtCc(IY-b0yQ^!>*5_=B?)@DeQt!z?hPp=OWknFEmIIOPLOVWtaSr-M? z`3)HW4SJU_l_X23y(eVtg(kSjm^zM$M8ZmTw8cL$>ikHAe(B{pG;X@k-hN3!tSQ>a zGtVH>B}S%k87YojkZOpSR$pu;$RH`p< z*k!zRc7YA(K`xH&r%r8hHOCswmpueN#_VHiFb1k80mTTF+2Wb`}qe;mpy5ktdf zNW$Xl!X~B@B)1_GDr!#gHfk=&>&KB0mxBF5wR4C}`RWAtc8x~Ty%bmuQMPv@3xj|a zu>mGYXI5Np)s{CWPXAEnO*bDhsAmy$nQ3y|bBY+&t{*8Ca-LEN8LUEqrIQ5Fiu>&$ z5OgN&rWqZVGcT$@&@<0hH_C>1PJvg{fi@K20i!?0*hRJr% zX#F427V>X%AQd?9lLo6&LX)jbsB-8%t0ev=I=QS{Vury-PN`c3 zw45+SP20+k$j5b7^Mc5UBSGv^CVI~(<^r|NuS>{E|Ow*K`y zh?zk)iduabJ3A!2`qqbl=LJ?6a-PjXxvWY6GbT##3wsvyD%c-8X31^koW^59s_L^u z*2=gD1qcLqwNA)>i?r*Q$p!+X=4^blLdai6%>qgg?Mmt-CGuAc)obDu{cQa~#a#q) z2x!7?brB*ZkJhqD#zTqw66#cU3GE8iK(!E`64s46sHl2(GY`moU(Rzc4J4RZvk5iX zDh^1p_*Ff*{B0F~4^+Y}ZBliYGaQAhIqR(>GQy`4Kc8_sGjlhZkZO<+JV|ONIpTnI z4DU#ZzP2f}hpF(c6IBn*lcU+4f!EHkiU9lbO)xF=wEGI zF_)72sSAa-Eed0HbxnA}66&Lw31asHuC;K?E{g@Umg9DMfFnbX*`8t=ZtsmK%h+IS z$KS4L##pOej5Cr-6^b@%N;BISm75=ymu)9gNjdOCDN1sfslxhcf}?4@cXDa5v^Q}R zcURbBcoi#B$+4ynPRr1syma4*hS=C!YpWT7p{R9>ttV**y}GL1w)5d=v5Kh^RFz~2 zbL-ZxTO8>t%}p~#&_y3*RZ8;u&eTLNGqRtX)vX2;Lt}DzQIBf=Z`V6?Pb-^}T#xS1 zSx|I#8M<|^o!CJ#lbcerXNnMui2Cq_l^*-%Ej8$!Q+XaoEssFCvWpw9wdu1cQ_Y78 zfgLZ6jCxXLvDp3M^AEZfWYSk@ka?JN7rk|XUJ-#TxQ{iceJrM+O!)R)Tv;fWI~5bL zx65jlZFzRJ-qh81LYWZQdYun0DK)!VGIwJf=J_a%innI?=rTb!MY!Dbg6pfz57PU2f590 zu$w!_%Bnyy2i*lIcTcF{W3jK33rQu5$M>^H)SK=r4f_H(?Vm7PIh-jlJN~X z3}BbEX3PAG9)<;Uh}9e0tUh^9+M075cJ+i&8Dk@1uFd-~)Q!M$?nqa9QVJgp#;lI} z&NhMkA4N9C*RHJW7^+RNO{jS6WDfTooyq(T+De?kEfiGjkBh1kKFwq z&lNR%U~@UbTQ)&hYvtGtMYPlTUbYPla8zE-Ul-a1B}G(-3@{@4XOXe`fK~!DrF_WL zZzmN5%6_%AxUtQazsGM~4v8EjP0H@FUiC46(ekd{$RzNOpXV#pzLqq&*pTj7bWg8; zqS+lUs_>FXuDo1X(PwdWa`)8edVt9C(x@HovlEIqvpf#OU)^YcJi|{cV#ch zw90w$YAkuM{T^yR`7zm+NYQW2kxeyiD?Rky_pV1fxOI*pc$IVK~QiKUd1~r3k4>+xW-bv-@L3Kt@d!l-f?+^%0ljZmf48iZ~sRg=W0vADdhZ3~~rtaVt#Ld!~~$7i(~ z{X!LBjMpR7+Vqx{Hj>_`^+)vnnM#+?FET6K(x)=TN9fe+d}0%ejzcZ9XoLFygvU;w z;456tWp4p!@)cQ})^Y*A-!YY&E#5y+vQw}+Y{UBBZ-rW@u#FvBt%$%$A(MEF(s6a9 z*CmzhZ3CHMrO>swTpil?k-_sNn;z9;cUi*UBHdZWrzgU&Lwp;kK6_qstNvv%9Do+F2l|BjL#}XzigkH_4D~e3C zD=|aZ)J1PI&gv+TYo^f2Z~Vto)TZ2QAb%QZ8gp3=?jVE0io0}irGbpnv$Ezgr@1klPl=K-&>lg};7 zRmvv#EEIC38CEMaTQNKFj5k5YX>(UQPO?JAguNMO%GmK&Xox`Cw5zakXVgk zu#?hKGUsqOFPzJENEba+ipX-aL3=6ki=P^{FH^|HybT>ub3wIw61zn3b2(}^wQXwL zz}OPDi?cY@l*q7=Z1S`*5G^$#&xhIX5xEz1dVinHo>7la*i4kuLG>(44@7et?IpVG zl&G0jHqI5MA+Vxy0jcrhePUIUtGSxO_C{?CPV}rzCrpq1CiXDdoxK_4_Dr9uWb#!P zUcXabfh=6mN?^Q9)dZWns57pKx3HBAI(w6T5qv%TxA?W&fPED)&ORW#jXj6rt&}7{o!!%DhqT9ef>E=a< z+^W_I7kiv{s@__DE(V&`t!>H5x~qXS08F*^y%db^9LjklW_d0v$A0_ZBQbRBNrFBn z=Ka}2e|yETYBUzaso-H^KPx4KC5GP8nZe_34bBrHLvrbt(rZ;uA>upuWeJz!WkqZH z8@UzGj)`kMh0VB|u~fRYRWves4=vUwH{B5xWHX3p+5@Yo9S#{xPm0JXhOLH_?2eIe zUaq1azNIL%*cwZR%tWiSL%8{1x#2(X4ecTr9^Td)09R)YH@`<*f1oN~U-1caMTEF! zqM6oxCl(}_7xsBkgU3rv)U`Mn2%yfI)m{mO8pqiG5Z!cbaxxw)q4!L#5v#g_DQ*?L z*)71w!reGTbwqsPxIAj2q-5FR}v)Tu6=T%((cv0%4o3gg^c zs(n$px~_+;#bSwFem*xEF|cIT<> zNmS^V7RnP_}F7)bEBlR4pB@;Z84Q`$2+I?86qc@9u{;nS4P*PH&<){BcUO4b%7r&;3Vbg_QEyg5xGpX=0I4JnqwhU! zywh0PU8UD>VC5*HR%wJUQ`&Fuig0^#LXMtUh|(F%x}#0yVM{yEyHhJ!ahD2G&9;4Q ztP)#faHgGIw_c!@OU^fU%!6Y!f|Tc6@3zy$$q|=SeViS)ck*%_##I}R2-+2fN{nQ2{o$7w#^^cHZmPCCdI&J`_s?=q#^ z0e>`&U+Ij+KN#xx%nnm5-G}d2^fj1*lA)r~n-%oJth!KZaUEa{B-MfjhcR9YLm zmVa^6{6%S_!Tw!xMu$5K$B*?{*vPv5bf7sW7PdbNJX?gS>`k$rk)}Y08Hp;ex*){S zx;@RR&VU28!LcGM&~CR~9U78w@*LpHY(yL|4v(V~>hQ zezWJZ@TTR~WDSnyeG$hh6F$P?8xvKg$<6YNkdU=x#$HI7J=>QQ3%c>Gos8jh+pWQr?smF!pIaN})N?2>J2Ia~+$bs}EbeV4Cg zM}Wv6>GfziQYg?{RJ?vKD>+~p!f2=EUz!|U} z`u(g>(v+&$Ik9^bGy9Y)t-lG-J0r$3<6116LKzy3C)=sAE3Gp!kr;FZHB-SOyW0>E znWWL|kn9kOP``)qKaZ&tE4ZMkQE@jren9ZYmMV`5!s)K6y&kKCJ`!y>@h>@&>ImXj4Q#f zLFf|`@1>)E!fIWRTpNkYC>$EUiQv3M@Tac|CMQwh#bXOSA}FPLz9g`;jxvZO$>O2B zKPrMPK&l=S(ayF^SQmlpn(IugQ0A$^IykYPpLvq1TO37{SdQ^OBoqLMnAN))n;Sf0 zI2yAY%5cGwoT8z^#k+PB#2BZ7Wvy9ML73W|DuqD$?w)DFEE}4sbZfCHYq5g6FyoG_ zJ1-pjL_f41vGh?e>NzN*l(R#Kn909FLCeM(CNVMxsEmU~d1#Phd!G}TtO5n4vT3?{ z-xU3>g)N)ry;K6Y(zhBgi!#!^ zvb2r8BKEqZJ|?PkDXA=!Vw_47YoUsVBBTW>B5W%GV84nIKJpWzW6Z~ls;z7N!@QN1 za>li40w+r1C#(lHw6;d1j6>>*n>${mYsC@7ov3=(s0%d+TN19*q9DW6!LoQ1dP=Km zBP1Ext#o@RVM#Tqvow<2tZaO|l*_8BZZvd(z?4Ee;Kr)6Y)k^ztg_E3ksr*{sS;tH z$mEJe0O%l^f2q3^G~|&za^;guswUYOxLVYtVrP#+M<8TOC2~-XYurj}k0E=bq7=cw zn&889*d4sAxmvf&K}b!)SjR}sPHRh>{MIm1Y`P0KO+tZjXC$&QGqm4066Cb7o*_!SCZl?>s>GyPrqGPi(OZ2- zlxoG=qAls(Cz7y8k;oov*-*>lHd2GC>O#=$=qf2Q$r4ep4H+w9#n5c$NFv=3A_YfK zmyp6>C}kK(>lh8}g2bxOd(HYD&^&s3hXXVj2kBrIX|22{kTD znwQ6^rKJ#lhs-vp+@h9*37SlV%fO)$5-X58HA9?HtBoU{G|w>PXD-XPI8cbM)Y1*A z@*Wi)PlK+A5CH%f zuIWwFsJor=tq?hz%)w_ISg$@yx{4bT&7>F1+kCA;Q>kR@QhXnAaeglZb^Fd;2v@NmqRRJACaKsN6z4g|$5qp(#k$Ts%+F zz_i2D#1Vtf6eSD96Ci9*8U=sTY>5=xR!Jz>BMPiGgQ`1qRj#>NIdeObVboc&aurJZ z!{V{CD?7H4zf?5IjpL{~O+P3!AjOp{Mp=#+(KQxrkl5`)%>At~JP?taVJO{yN4*j( zycC_d-8PH#HTfh$vm>N~D7pi5shk}{iS#1zl_sPxouQeK6^)K7td7N`R8*Lgw7FVZ zZyk!}BsEqN8{jCLGrs$bRKWgHI`KWrP)y1*!VK67>AR^}Ivk9bx4iC&Nqn=?6f1nK zE`ci>9N!~T6P(&7O^xT+j$IScNegX>y)Us$Cb_f1k~@>wAvwoG7ujRwAHB1`fRGJb%o{+tCIvsd-NY@s z)T?ojs$-N=8ikuhf*(T8I66Qp-5^YBWE153FY~+J1G_nU6v6q~m>dd6p*zI$!bQ~N zFtwE?Drk@>)zzJ$&Ki=Wdut=mTV8{0PvaJxOv+)JRMy05GXZ28sea5| zxxk`3u_Lj;Gk}=(F|;k$7?uA_8$?FzStyLuzsYj0%7d`L##8xJvTSA_{tK~&1W3x6 zT{S{p9ttW<2sZ^tl&l+E0@DqJ_m*1`*`+*G$^YA0$S2Mv2|%>i!MVAzCSh@ zQOV?(`B_=z|0qK@$aFeRmL(nm20xwJ<X{*!w_^p$&P^leV8!6 zYNwjg<*E5<(lW;aS;CE7JY=9WJ@rNWTPY>cTa`*lFcrR$eH$(#z4jlOYTcS$rH>BD^(L?MR~=XmpG% z6W_&tS#i$gU3-BD*7`uy+(w#6OC-BDUj#C!mfl4Iv*X7_20x9Z`D$4U0`EY zbX?BPrLM*e4=<$D5)oA^9x>C-@NvAG)4o131XjKaSxS#ROQr(hV%XfaKbwa8oOs8m zFoK!04ROK?Y0;nvD_m<%ac+94W_J+HG1|zokME-LsU8HSOt&AUHqNw?blIi6roXD< zXdg_>^^7PtQ(}FNmbW5@#3_k+OhekM(zPUP*=u%U*ba+WEDVQ_KP8MiCy3 z4e+cfBlfYZ;``ZK3q8UJT?Q+y6bDFhf49rLg znZzATXWuTP6FVqF)}nQr)GB;lcp6CM5R}yw6yhc;b*uBCUS?j4f!h?UFFDk@Wzq`b z{ds=+3eeJSAqzF-0$icdSCdVlBkTDh=;aD=%S^BmPA`*jC`Rgf3f@WA-ZJtz17e1J zwar%AE$8Lh=K3D$o!yZ$Du7&yhpm#(k|Rg9yCe#u4B?!_Ub+uEHS*Y|KURbXBSSWw z-I<)yjA2{0l+5F5w*x-6d-RP*W1Y^tJ}Qi$fB;}m@Bjh?0RTZEP*^k>{||vf05G^@ z77q!3!Qt>oEOIpvio#;hIDCpP3yj2LvMCq}IT(}68v(8HH1iJacJ!BR|urc=`)%{PEAv()gyEGl&&i_j7nwE3Iv`*4xUz|bei1;btJY$ zWVMJzBDY<+#AnpG#5#R9tyCe^3w%mTU$Dxen5*5_1$Up;aPu4erx7BI-=) zV4$k)yDt#DN$R@+FHc+M@HWjGDv&7XYs~^KZ8EULs1W;b>L}}Tve8131LCHv5+m^Z zzwLW{6(KQx4cs`3L~sQa79)%*$qF}*tHk8D&YLjOMQ-em zG|Ef^F)&Rul+{VW%k<{&#mSSO3eI(laMPyMOlaY`k#r!hEYZ}DC`;9>4H&=)q`zg! z5FIZuF*HqTv@dK5l}A*`>ORIZYy00wM-6+^McfRl1tm-}ylB!m6vGJyQ;UoND@&2% z^*^t)WTzs&_MI_FNXttXM<4J*)TvnvjQ=Ptu|>6b*A1d=Sx+_`+?U9Yql~K0QuC2E z-wTd8CCqnvUxPghrF$r*^t6QVHPAxm9Ml%|<&@6Q{ufA0Z`*e};*c`ugC!MHSAIcQ z#IBg#DdV9V%vID)jl~f5UpmUH&;yw$XcAo$=4`}YYvB0yH&^8FQ}vv#(GCfuREwe~ zGwig(w(dx`Owi=R5HgN`LAzP}eICwTyr;RcZ9Tll^}DfV>`FSZ4mj+}6%uB8J`MqZ zZN8NAD9|SJQ$2NUdjzZ2B;43EZzFX1F0(QcezXVdH!f7Un^~`G=qtA&#%L;s6*Dl^ z8n&+!DkmSt{l{X4t&t^xEyNNWX;oFd3O!7;yn?*$JJ*{*z-*2>vtalB?BvBF*5oF8CmCTl3ylj`**mCNOvr%VLAC)(f`PfW*{m)-3J$(6nO`%!?!wSx|{k zp>u+Tpc?jcr{wP_HU_H=;gpFlz1BSl0FvQCD`!es@;-MQg3Zg9LT9nWlB*1#UzSSjctODQwuA0C1& zo9?D4D95~ENi=AeDggJ&N9w{;>%eJe`a3_E9DP`1b(CsmV$li|t>OH$p(tp}(D`JO z8|xB@6QVyw+2cT-5f7e-G61h9s*j)qvVy2B!>EQb{TbXmgA)Oo9b}&t5sd#YCo(cF zX;9XcxqoA>K1|N|;ZNfM)t=C?v#moqN!y{RiLGUHO6N3{DpBO6li8_K=Fc4{jCG8Y zS>v4=EkNNc@s%%Xe3e2}s%46PlT=Y*nPN6}&nwTFY(9_B*ZN8g6PSS1nj|_Tfb?U; zDTod#zC#y_9+w$Um}t6eADUwLYc!i|D#+Qud0N6KD$bzLrolf+c&()41v_+#i!`N@ zbeL3tgzMDQPG-)zlG;y9w362wxwLp!1Tr;{p3B>!ioBQFcvuW-wk+G117rNFb%pfn zJlOo?WJCE$iD~Xxm9-R;^bNQa5n|T(-4&>L3ta7%C!5re!t0yrsc-O*U3FxKtWBo4 zmx^kqXJW+cd?iB0fzTw?UeFW-XRxvPc`+n^Pl?Q_h%uDTI2U6GPaONZvCham>F}V7 zjYVr~eq*F7<0eJib%fV3`0xks@9V1EY)i$GFs~v zsTmBLPwM?BtDtc)TqKWZwjsFtxYp-E!l_92KRcG5i`iO-a64l|6C;qN9b$B4QL5<5 zt&vNxvy3owQUbjEEtkxN6*ewOzE63O+?y7#!|e6%G|GowWXjJ``-wiuUH@cH7Gxsy zaWJ#UlOysJ)zjhRkI8tGET{|HUwVQTYmG_Ri_x@m`%C2 z&rK&Y-KH`u)phRKr*)g+3Tm}0ZfckXc$Ts)#v5gY}=ECe;^l&T%8_ zSQN`a*!sU@(Pl4-#dGG|+Uh6Li|BNP;_J)7YL#AK^hkLC7n zCp%*m2<%>YaHJmB)JS6~;!p^l#R?Wg4TecCrk+dE{R0lODG17~@L}der3PGhFMc@B zZd62SIIr6N%xKlmVyG!jFi`wVfK<#%xGDmaCU%1?4*P_x z?B>wRa6J4AZotnY0L32DuSnU-2*@b}nB*$siX?5uI%!Z^|Aex?jS9_2P(@4pDhB|* zMEda1cJ&V2OU39{DIR3Tz?cx8M@T4q2tc{y6tWLd1ZqI(a4fhfJiX9yK4#xzC3}7kXcq=wjYUs!=^q?({yO0?8?jR=H%WavkwX;@J~X<4R~XN_UVi4lxPYlE1;yR`e332c8>n4PwuTLIO6XX_=JM3 zs!Ww+Ajl8KKd7u{tQymAnpbJR1V*}PCxjno3dALfP$fpHjw=uF1h{aN#lyyO#Gdd9 zz$T}`9EaMI%Lex1D70lDY=?X-Vt*bFh}f!3zwA&_tpwv`4&h?(!KT)kXVQ0(#!ziF z7@`u;VjgR&&RY(=#_U3j1FV^FJh+Ou$BLj@@vgUTobhT>01IYjss{M79K%qkvk@lA z>S}`Q>fj2Zs%k!&ZUDJ%F73r<7igCBPax~$N~~x`luN-02S`4rP?0T73{pT+PAe4U zu*EFScI&|tCnBaYYCLCQ1<;Qs@1ZJ6xVFs7#p^tiXR^G@SXhhn`q^Gh( z)3KVWlKQRkvh>Yv+A{9vjm1K=bP*t-=yU4vL$VEuYbV^I=&nfzWGw6XQ{CZ0M=??i9#_K>LLd1*Sed-Z2 zar*qyq*oG3jxISCQr9N#8#zi_L}_~n6o^icBD}M5^en(`Diua(%73dUlj}@$Ph&VI z4sh-Yx5wd4>b}*|&o5IQ63JYEY%+c*UjMO249j#+iPEUVQnT)rLQ_;)Ny8`7tg~u+ zQc_tbl-Q~7kx_L)8uO&>^1VV!!&MR6L&+&s(Ws=14>K~9&*!Hy^Jda-Wi%3HFH?&P zXw4HNwA46huu@k<^&^1Px^IylZBz#?E%2?vR;G z9Ny42(zR;iPk8~u&nQ$LfRbfninnUS2wRMdvjeo$FKA8_R(rA8InZJ%RX}ykyF`dg zZ*Vq^3)(EHAb_ZBuSidCg281ly)V`1&((7RbCXDO{Swd{JTA!jj!2M+F5#99UlmCB za;)ff2?c2aM{zKtG|=6s7@Fdmmh{Oo)0Jp90{#k0@yW!T_Ts7VgBNas*6Tn;DcG1b zx+4m+7|m}6kk~)XCRz!{4%LKdq^9|E9d4%7t}Raaa=fi;!njkJdTGLRF8ezXb1mkB zb`&a8Z6a)rB#rB%Ybxr)E$XbK;+l~wQBb&nNlkqQO5f%EHRIOsN?|_C>u-(cOT^`T zZAExRJADt7zp;|_H*Bq_2{=o`Iq=?$q#Z2NX&H01DkeiJpoo`RNKqHA-7wP}5H)LPSU zS#H^FSImE8$73@UDhZ;@BykULu?Mek%FNto6Xh}$Aw^fOdS{&R78@l?26HOqJE-p$ z2OIza`fiu`aBB5`cEt~kYM+$FhKst=hId@)6$wqT6Yorn_AQC07?&4_Y7V;YtGmvps>57K;rlNw&Zibiw=uD#Hu`JYWwy|%LLNAub&KzK%urpjGG|GK?=I087m*J#Z7T0~XWB+&*gs=14&ZoNqWK3d2p$T^Qj?`C$O58*GkR{SR*E)XJq-|1p#slW+#%g!LS*CP`6eolaoumTqn; zi0K$PlDX8^wsK(?{5Gt#-107@umb9|3u8}OoN4kf;sSs_UvFRt0u2X$!QoJc{3Z+m z0RUj22y6Z&6NN=#aQIwGIT(e*qcF)7DnTBONo3Km1Wq*#gG!~4pcFv9=v7Og0RM`yKo zbixY|08MPMN<9Lq{h-yUmg}4{xj2N(tu=X_+A$iTU?Db%9Wvi(kxAhcx<&SbVzE)9 zbIg6(l?At0BbH1iUkzi@=d*Z=E&?eoi&1j8IxJSh8J=Ha)A+s~b(EFRwAwrku4A3T z-8MG<2PRpJwqbVH>0F|Bv7qAgnhw@BCt#dcs#C2WZ=KeXYPB3p9~yx~&~Udn>CW$& zw68;B-#!+imD?+;Xr*C7*{k*FBwv|JV zibCeNFnc!>rK&r~`ZMlx5XL%gLtz2BN<2uzq4A5_)xys^NeDxXa|G1Jt5it=B{3{0 z<)n^70^~CAGEDWf%!}y3II@~pufVbczT7UUn`EptvHNWNxowkj#j{Yd+XuE1WFaWJ z(5!~5qa``9Hj7q{;S7qk zBPUc0xob)hb}fciHdD)yH27>@*JDm?r&ijwt=nMR$m~CYOL%1F&ZZFtJ%Gg%iuZy)IJ8@?=6%g(=yyy-h+Tr`UeAQD;VoVCG504cY^o4{g07lud61wclWk( zruJ}UKl48S6m#Z#@qQ!cU>5(myCtZO9Augjcs2~-m>C87?V1_ESP8iytrNIMm#b1k z$sHs(lxDu%W7RFIr9Lcl;|7Z>w?W0(W*ByyLCLXLNp8ilpmc)<4xj)Zqv(3JmzKd* zBoAo}hi|mu6f*h^ zedqmfxi!ZEp%Zjk3B4+w>1@f+IrL3Z;V~MOYJA#^D^E+EE6TJwOrr{}PR!W;L|2TO z;3Gh04Jn8;n8vH0B!i8wc|FW0&kEf+ep2wd9l{5M-A@TkXhs;i$+iOw3?!OKu=#@z z>8l5$QHpW0B{H|xkvQVi?~AVJkI%VHJKl=tpN%ouJc*F?o`Qfsi}EVPg1IkcL70&a zjpotEWT)Vq$(}B)<-!>8D5r`*MK3BvF9WSMrc!Te?U@SFxQzv6e zEHmj!nmE?d{;Df`rO=(6EceqgoO-;Pw2qoUli5`0bcU)?`NT)%Q6X1j7-v(>JgK+B z-Ie_6kumUlG21r0k4od9geH4dgP~(? zLGHT7;kec0tgh{|y_4xuslv!W-{P#-lgw3A*tKy8Sd{u-7N$|f7LQyAf*iZ?eaoHK z8u`-o&8zhGy~~7QCKCfteNw(TwD% z-`*r`6N#$KI`*aSRfMkBCpH+GMhWmIg)MU%qzAs24ks{6hZZCSK9?8zl&XTe2GQGu zs`e!8R2+cs>@#hCZ>rg|+F^ugF}lRe3M=|cW6VGxJ_pE z#LV(raiv{m>}+NQ(G~JoLOY<>cOn$p2r6$-%R3vM@d6&D3FNg|EWgl}i&D(BQZIrY zvnac)&1WiFZslykWu>J^>3>xo);d)v^EShXX~0E79TH;nT)*)Z&7AY@SRpPdgKfDi zZ7X@DiSH>QKnTdYd?fd+X-eS8eO9PDeu>i!!C269oHw;HjNSb?;U@D+W7veMN`?n| z?rnLj{P?qP-D7VYO5T)>A6KyFEyRwuC*;j*Zs;oxmnOK0l?V#m`r?Hq<$lCA)`)ag z$4P*Mrvs>{b4t0^L+sGAx*BrTJ4p%wq_cH%S32a0r#yOzs4a=Lo9D6E!piDSc2l{g z=U6$^;g;|>&YYC<%e*3~i2j?Rp|?MIS*D{%R%(gvM#S}*b6j@|J1=k>K`$p1J8ArC z-b{@bHEe|BHfl0hc*aV}S7k6XJq61~x3I6aRP2p8gFcr`Qkm%g9L?(w+k01;z8jMR z?H)B>=ZfRmt<-(x>N~u2hxYhf3S5!3YQ(v0ILZd{u?5$3h>|snw>(TSFL#Qsl?$1!dS2vT90bbiL5ur*nCG!>S-uyYj)CSP;`d0 z(`MwyLoECVVA!STA);)a3u=Ckf+B^hrvPBjUSb-f#}!>(DTDCTgxPddOz00&vD@Y5sU{ z;5Sgtxlj=TB*w4HVq)lseqdKFF>WP4O3v_6xCkF@I;$;5vaA5drzVym= zqf7p@km{w+K1vP3X~Z1H%DVU{RHCo&@})wCErdUMn&>-Kh=>;bt7mA$0=h*y+F7gV|4bd3}XBa6E&}zmWXs{Z`t3vKZ zKwCn@t&mq5uadnnZ2Siu4DVwO>$;~9{$ec3LoT*DP!yESfgA+887LG#tjt=g)@_Y+ zE-gB|gc8e5qVH_d-0X_LZL(JHka2C~*hZrurG&VV=+H4y7p8vX$D~s%0&mG?!Ofu~ zX7=#~1no~97R#dZ@RD+g!dl6i-RAD@rq3UZ)@RCUe#<@p4HRZ7NQDi`$W97(VgCE# z^zQLl3(_W;ixmqhuM|lV5MW^s>=BR$68B8!2JZ0 zmag7?=BVN_8qh6pKJq47Xj3 z$?Ud`M6S=sodV$83F@Vbo~cT|1;Yl8qhRgKlBVTkWo*d#O32Rd#=qj^lCl0<&Ss^n zB$mqRszaEVMD`)bQn`zqLlSuvqjWLqCfBolDXy0POe&pegtX*Fy7BgcOBk95z{{#2 zxzIE*!XYb?7=NQFG0J}tBZ8M`hAA$WA#OBaldR1MPcQ>IekpAF5m3_W4pu2%-mxIS zCt!r~4!ZA867nb{GjBHtIH)K>>L>WW>(tz7wGU4S`RcVBMY9+)lG(CMUnE*!YrQsO zHk50My-M)Yrmj~C9^Q}w+Hw^B3I4c6)X=X76AQf2kK&2$NOq0n$m=MivAZnjaPTX_ z*G}%RY$(DhqWQAm{pW6jB7FePg*dOhK*Pi;h-|V6%-#<>DG*r96k{q4m`W4hG!mM0 zg({}2mf3Hn-fE7dfymIZEGVHS zG-E0N$#lSwlG1PU$qRAR(1!X|>4>~-RIn)>5KGT24GR&hTPEPvFu zIO#)6>n_~$n68X}G-#t5!z)1xIVGtD3(>toiQrP=rBxGgMbxylOjx2PMqX>0%Lxl zE>8d`l~D%Aj}askn=_~CnT;I%Iwfl6&9u^olnTfsdS+CMfXNVOxTPvS4rtU z$tPYepFQyK*ORn|jta{YhMH2w&QOz4&cQWgruuV!LWgvrN+9qkHt|h`2W@u%O+d20 zOtO%2OY2eU{>{cyXY3n5iiGagbz^nBr*DMEP#IMc_U;VvIz`thCcR~eP}=l(!4zdy z^^r)!zR|2%O-Vs%X9o_FJjt?Fvv%e}?CxMB5MHP<;PJHRm5|smVI~ibKvq8(W)TVt z&Q4QBT+f#u@OGkZ>T#DY>rk;`r-s1QDPAw_6km#8 zFUY8I&_XuMM{e-(VX$cmH$zK|zD*VR5mk7`FT$a8;CyJI2P;!)L*(F$3qJK$-qI$R zLIfVqW@F_s6jt6js~+*|Ss#_X3Dd?S&^=AD*FM#3LW>WR-6I#YH}@61=N-1+r|O@@nI5aICM^f8~Wb=WtHg zjOxXKA886|4-aXwqaO#c0A=pztM4oC!lcrRC^0`t=q?5CR*WmMQ9y9{< z^T@LX&>Mn?^-M6GLn#k@IKN6#9L~o*7O%|;2>O_h#QAmNqz%&&u|ZXLpLs~~=_dq+ z_J>{24AK?8&-M9B3jj?v#OG&Vn9tPrIOQV_41mshS_eAxP+f7Tl?o&~1`W3!M}>RS zEk_tj2u7BDchx_zdTS?;<7ycVOmfE*&6Z`|4yJhtQMn8FixQ%he%?|f6Gw=T2RXO zs)bBF3#+w`B}`iqyQVe9xFgY;b5_4s4UbQmlq5|1uMrBBB2zqwT9$c>zEV;3+5u>5`?8f-lg;a#vMwhUYjxzR~E)u(iHdwgN z=dQXDH)HHtRmm6#3PN`;B;_Dp==8Mp<{?4)AEEC{6m@=Z`o@sU8Z`#ph(8Ut2TSc% z%%cCIrpK_9()?#*A~R0mE?l1(&}~^pavWrGabQk(%`hqLtvQ)$?eJ4VA^>0pAl!#1 zf`%WbcQe)6GBtO^1Z9NrD|e7!)ds@!<@dzP1%Q*~bC z!cKMO{GECmr8OJI3g&h46pJ+{Qf5YI3H&F|o}~7A^ez9a=keB9(_^oa=y_Uyi>E6p znYqMwSZmznY5?Mm$y=7HxfTsdYRERk{P^si{aOg8)TK!r_Vg(>`tSF)S7#@iLo)S} z-Xb%0JvTm;89)@HG#C7)eJqb1cE~i*AX+QTu}RmR^O~KCqq~~IP?1Z!`(c|9z=#I? zwf_8!VYILVYDR;5KZ>YJiA3erLEAvkdna? zpLmJ&5V_l$%G(Tu8*WH%b#!rkRZ(NGg8jv2Oblb$EEK?t&EQHawyT9{k>OH3mEYoB;sao_bMuNHg){4n6!cNB?^;mE~^!0UGve`guH&gZrT~* zowRx@qGtO}X@fPx3-R!HfNgclMUw}ajfRjhEf)4RL^P+|m+d4JtLsCrq#AVaYoz_N zlf!C1Z4O?q(Ro(Z)z)nRbdpQy<~eBJS1d3q@pue{*3(Jw9-nx5F60x9xj0a?L~|W^ zan1#*80BMDCp;?G(Zspr6^VUQFwZGD;`x7$)YrvLI`*B9=*q)q{ikDv{dc}A-VG(^ z7Wo>Y`%=aaXf9z{3`Y=IIj6pV)QeNxI3SEaB&leIxXyYY01yZP{{MmiArOcd1`P>> zzu|CLgbD`_hJYYYc(hI#1%$;T(U{y)2@r%u;PF{J78e+k!=bS$Bq{|SlE>swc|>Me zDuzO!)5vUAhZ2lUWH30q&J9h6N93`|yeI`fr${E!>7)JqL7L8_6RJFRy;hA*D3zMj za*YwK(WUb_q;_3xm0Ts)dsWH_Sf$pdR;xum@kGA>svBT&XE1lY>FtJo8^1BTVRV%MZ zYI@nm_T^56MmE(RF9u&Xmda-~iZy$sU+2nf^^Pq=PotyB-_OUtp8G_bSt z4JL~_eI=`kR5KF7in84ux@v1t4mS--q~tRXv;gtHErb}UDlYr^FFsFlNb@((ySnl} zXta3@vFSqo;I%SS!uHRLOG7l!Ycy{`$8p;2F|d=Q=R>y))XhXsjl3&5&M@?n#=ObQ zB_Yg^%9#tXl$t**zif3ILd#8DIG)opDumFdvIOfW#?QqaO}h>1V>VF~O&?%VPHTxo zIx`I$Da-5aaIr6y%>hkT6$8HFK6Y|fIM(u%sSi!^qLD+k((92$x~xqvbI!{`rkJsCYH>$JGpCN(zdx{X6utO+{kw$ zW~9~<%b`Tf>jbG~Lh>?gx7$d~Jd;#bQvm3c;SrgHK&4sIR7 z;M&vUR`Iw`7d+z4Md36=tb}cUEII_c$7~J$zTr;!GPgKf?nWzv>dhlDSln0s`7!pd zZhz9$*BsKc;!w9y0B$R~`^UnzR_|l@tkk2mWN|IQd_gp1QjO~G!pm9C+x@Q9;*HlY zz2ze5~I3ydX(VPt63W9er=w1`pG=!2Gw6es&tO&E4L*YWZe?mfe;-+uf^E( z9xGB}Dm>aG(nR{28JBEGF)lsVGOyaP*~MQ44brsPQ-Wm|wENY#F=*-q=` z?A~$ly_inOMLbwJGA9!_|H~s(h>8PaM1~?gpQBMP4j=+UvT9JYgcnVhVqid}UD3;P z&{tUu^?393PsMb8TVed5S8|ly%QIfb=P{F)WHCUWhGu6Z6APZOt#efqmsk?~t&(jr zN=_=VMB98NSu!yOA+jS$)tp0jwMnxdVt*T3VHAedesxEp5{(h6_b|*v&&oJ!RGG{A zH8n9D!RT^uAmbjV$QCoabt^Mrk^)(d^=nIpKKW(a-)YcX(#tx-D5q-waWUq#$oP=1 zPVF(K&RoI6^zPmriguCDn!}q5DEd}?KzMV`+oPrnA8Y*gM)48x7^QJ3k>ea#)j~DZ zgGR_#9Z-L#Y}Hry&p_*%7+Nn_xmv6Hi|6F)@t}(DvlAVHGv2t`xLdUfq9lFKPH_5&2S-V$xKp@7Dg+-PvXM*eYmmq z-%N&}U*Q6#mImMCTysD!>PSs(LWE;1O$O~tsz-=6R@0b@^*JF%MwG% z>Ncxca&*>4yl4#02Ewd%rsvmXYNsO!jyWRzDQ8mKiZC?^G&zl_g|>; zq#SawNi;|o8ClWDS6?k9th>4G>bj!2F*XXi+zj}xE9Aef&2qm_H*N4j39wKuQ$Ka3 z$G)KH6+mk2<6`w4CLk1N;LUclr{`C;(W-S;)H4r9?-^W>XCm+ozqKXQE`*Z`Eww#& zx=%1AN#{}*G8L)7JacJ5m-ZF5s5*2b$j4Q$w))(rOZuVe=c3WtzJaZk!d#;w-LmVHuTe20 z1A`)io*YT_AnRq6$!?b7_Y{*Enc0i2;W(ZfQ#HyZw1JaTfL|v#;ut&n~VaUT1z2fUM~2{!NBCOtR@~|r;#Ea zG4a}t8dfyP_B`UupIcSI!BfGc1(aeTIZDbSA!kA%U@1FeBq0ba8Dhf>2tpdv6tR@S z+6u#h{i#{49s$2U8j39|owecV!BQI^j4{B%JwU;;qH}G+DSjpS&L=6-!CEJxd-}rS z0J{PyK{|~7t3fuMF?zb=Ej?son&Ck&Sy#j{N5-JSF4P-3 zaJ;i~0umzCBRaQ495o%Y=OGL1DJp@93V}SLYnIWopjmUBaOWwrF~_s^Gtq&<)N?UY z@+Gp*A=!qp5+J3@OQE5qU(OTnT{cG{iKR#8yRRp1UgCE%cGJwHv9i88KWHN{w4Fw z6sw9pYE?%Rk;38szcC^*xi`I7jw&nq@}bK$C{QpL4r4k=_4G{!CGID8BnO~l%@mdj>K0ui!!Jyxy1r7FM{YLA-hVG zVjU8y8T0kOLM);?vcPf`i|E7^sLK@kRm4-F8Nq_6F?WcnVTY?z#YmezTC)(*4Y0DD zztccJ!fBffGONRNB-y9I{G75u%8x@Ok^+}T`CqEZZl99}MvF@t`o^<6_AMNT4%r&e z62yvGA1tukq^hqaDZMN+r$)kc$~!JT<3Xok-Z2SH zvimB@(Mmb_gS%pcol||Wd8SN?6g`zKP2jps;PS~aZy_-vqKU7rGE1(!SEYpstD^Z$ zAo0ADiVH*_vlPa(+62ynU6?XHB=XmuRBXF449HQ438~1QdyX736cd3BC{ub4q8dsH z54hA>#VT)~D44Z;F4PLH5cGS~JiM5LPQ8)K!t<7~L29(QY(I0fqy0C#4Gu0lkc@kr zqv~-D1B|nSLAH?ZFZ%`796~KhqZJXF&-ppMlQFK0AkyjaIa&>jVi(qt0kdn5H(|sw z81N`NA1bt%wTcGTggh#9UMY~ZjEhoK7`r$OyQdS-yObPPlaa6t5jumcwo9~AYY-TW zdpN^^%zJMQn5#a8Q56MsAUfLL}s#*QFMp*?rK_c8m6ftv0G@Ry9 zyVk|)G^3p<9W==>Y$i)uh*R5JSOcw8@@B5#zCzWooMJ9jaxJl;^gUE|H?@&hg>p3* z&8nJe(~5GNtnW9wi4h7@lB}A^Yb{Pm{#ir(+1<=IwcDJ-r>+gPPHNBE#nqgXC8Qh$ zKx5N7yNopw_z5%4R^upK#roUH^Ok+8!c!mM9VDFdc}^mufDK{PB*!_UBZ~wAKY9!m zJ+rRl!?-yX&SNPIdWS#DZk(aFSc0dRS$N>0*WQ&yLcuRTQJ|gGpb$;{ulo|3J@D6@ zy1FCO*ZcllGf6;eK1bTcDDthKyg@Y8N;Zu9zzl8Eb>PPKg)DuI# z4lq0+@7RKsJ2X1Pt(7QITAzW*h(ny@t35S68rPa=wbCJ+sbgNqz>s@bN?SS=>Eu*W zUAetZ!$Jy7LJUsxV^Ybdvcm;O^`uhU|F1yz6;eBhOEuV1#9@ex)^<0Zm94&ud%^5~ zz-uh9l9<6s`?U&7otlTy!)u~(F1bcm8jRFQ8HCSuD8Ca7$P55a)(AbR^{W;U=L$?6 z+aHN7M4_4D6+})sel?|e?96;n%ne&)MP^;ptjVFWQmK=q47fKP?H~l<$(_-$ogFOB za!X8JmSdY)oC3$h4WZGSTolk|lb1M7Yb;6Y;{4dyYMr|~1Th>js^(F&gdso$Yu8pu zG^{8~4gOe3`Nv%Z%hLv5!sbYf&!iS@8u4D+R$DC;(bSB@p&>{iiDXH&xXP}7p;9|9 z{C_SMmL6uB>cu+6edx8ao~GggBSn-*7P2IRfh2`A%gR?po-)h)EXUcTt30O<0fxk; zjYMM&roG4G+C6I1TsY4}dglr#>H+(l7Ssm|4&7MhF7 zR#L_2ky~DxbUA@}Yta%YW8O52b4t}4Umne&L!DEaPe#MM%&xjUwt=6bNxTgH(1nIb zEH~<5ph24LrhN&<&4W$I)(rKIYK@XEis8}ZQyvh4j81sNJzr-nM?X_izI&Rdn!si` zxJ1J);04?@>SPzDsj5;e+Kc#N;e5IB=FbIlLALZ8&Ogr7!D-b1S6+8CY@E(C0y|VM zKK5-VhTuk=p{|AB;I7R-vkc%8SHvev>)h*53J7dN(R<2&AOpkW{>6 zlX<`20^qU%+;W7?RU`2o4I91kThiD|1;Jdq(^($eunQbK>9X!d;O;*Bqmj4l5yUc_ z-%XbHpoU?RA12+i7_Agg4}-X&fldyRmsx~h9~N`ct5(5Eyp_Ec#H`-nginaRU%(C< zM(g`eEMKvO>O_P)B$mOv9k+14HNxi8;x=83ka*6vJ73@vQhZlgM zn%316H~Z9~tDy3#t^`wrMp{t^UC1 zVVsxJ15$GL;yH#{_fj78S1J>&Q_BUo)O|~e^6Z+Cm+i;2+qa8-(nyP1AboSA{E04# z5|s8Z(ot{j>-{F_%!*C#(no_T*x}$#I}PNL+s{JG3Z`{WDQasK#V6;&QOEJU*mHm=0H;Uu36XObK_RyS^`{vQLi5E8%Sf z7!*?!EG~zu*OPP$yeoepw=Lg%Z+xEa;;nMFzb#+Bd3nVVOM#5UeR99Xmc3*W?F%@!PIlN-8}Mr zqny9>IcSu!!K&3zYS@W2$6eOS(>j}3Mm`-d@t8WA}kP2?|r%0np&qEN)gs&$r zB7XTW%3_@NJ!-=2pQ5oOArVE(<67RO&$^7Bx=I2@x+U!5CVwt5Oj?LPuo?W&Ft2-V z^FVFOM6yHDGWiZhs2kd!tx)74Cq2%DK#;C-OtRlZY_!b`qbw7E>ccN=BQYp5EJZM= z?4oTnNvg}x*P_sic8(+N)Y~<|5&IbWrtfRK%TSA}Z79ys(x|063xo)-y)EOVC$VtT zc!Q-fH4jH0hpL#fw9cB>Eh7}BxZtUu^ zG6~}3^}O~%O8>2vR4XjM)zV=Ty;dYj%~p2&Ck|FkCBqCXse%lDAGPD=#K108q>))x z6=!bM@WpE@01AB9Y=9CH2_)Ds`)Gu8vXzjzLbrA_ z&C;#9?TX>9McF^JEWBNRK6yREGvO+fXOXY3%wF$bw2hkRM)+;Za4zpHX9Y!#o>??v zc~)Cz$+^x5>pCy=V)Z>sJ{yVD85N4vwVAF_kH zZWo@j8`nH$)aNG>%jsvsv9|fVbMT$XyJVaV#S7#Osj7(|oaFDN-%yX2HK8q>oiz~Pyy%;0rHjDg*vV%BZ zQWOYP%H?t+<_5~+8HQ@_HaaP`!w4X2Dprp5=c=@zyOwj3R;xBi$(Ww}93niCYkkii zS7!8#JGDt~o)MX-Ag0(G-f(68@3&J&6xsBsEHe60#&zo39xM||?|~9LBlKHf3XyVb zg-b@XHjC$CAVmc^M6<(0k!O@&U?mA4HuAPg)M8bAOjakj_wgBx%5Hg#QXabJVqOR+ z{xXNO|GDKG7tA~wVv)inEa;sAnG5hs#%6}WHf`aZ|850{G_8X|d>I8QO2pQid>Q{t9?h!tpP z#Z-kIrPm|PTmUG{#!$YPHuR-Ds51|4x*!x%wchDvi!<@DR5Y-=N%JW*hZ&2+2MbQ# z{KsI6oQ<$0&O~SdE?`u7cfXZ(vkg@-f69#Iy23v)4bw<*HGvID6O7VZZ>X;U!-^qk*Rp$$3Iw^ut1~&4Qb(I@3G>B!qfkRaHC-4Qc*ri_^+$=rHr?s95h4=xST zq}4rF(w2`f+4n(^G3G-0(W%+IqD8`nP{Rb@wHPG>^JxciBpF`Rgn zxfQM4rFBToAa`^6)HfR9!eWx_x|9vnt46Hkb96g98QOknCf>gG2kT5cqHQ;qStj9|$z8(@Xlo_pk0=b16nFLTd@Z%kb; zL@)w{SMIWQF>1zhDjW5?RYqhyOd(&KPBT%Za~8tdp!GCEGQul)P#lRWb8PiL-vJFI+|*&`QUSIUWth zbN2gA##&%!eOji_&sw&(?w5EhMTrjjd~uIGzc|9z%sANPcP^t6Z51QqJS+YN)rC_wexG=N*~xk0qi>;5Bamd5zUh z88;SCy`t`ElQSq8?Q-Y$_SknfBg@X@3*?M8>19N$?QZOCGD`0Dc23-3X+l6wKCO-r zZ~&Mu9{V? ze6_-0q$SYwPHfI9DpO0osDsuaO3*gU(n%%&eMWYuZKUt6sG?4gfk=e&>Cpwwj`S$> zL!~Z%tAhs3gvaW><84k>FGSdCnE43!q)@J0!wS{Q=3~l`NDvr}$q0(C){hEG_YfXL z5Xh9Mpj#x$aA$ZcCqktxtd=5@m`A43&5%NoDoRL_$?Y~QiRg>&*5Qu~nW`RmNh1@d z6us`A)G)-ioNL#|DPs2y62lNqToLR>dq>&_-Ih>CqIbWfwwJ{KSCI zYFv?owDiV&zYWyQhpci*qPwVMtIJfIYFQEL$Z4o3oNT1d5vYNP;))LE9S}@t3=E*o z{L+awb4_Urjyn>rPZa|cn8-4V5zJ%8{J9a~6^U%)E&`Z{WYO)yfXiBtvQ(6EArEOL zgkp-;D^y?6B$;U$6-lscLJ&^zpHj#?4B| z%VjGO7Zr+hy-1St(Bzz{f}v4QAy62qr6h%Klr+#`CapmLMec8GZ0+Q_g77~Oa-QGD zy1h|aG0i(7Od|rwj;Jb@xojSkf}lnaXy+-*Co=aVEFzgO`x8-a-*Uv9Mr3D{|!u zQ3!?nne5LeC$lWBo=!7pbF=p%$8wD%0LfB07s*D?lm#QwQxMOJ@Gbsn4rIy`WKS$& zoJ?;%%+CvoP9;j>^6^H{Pt@-7bwUi45Gqjh(o+@knwzuIvXjj%rLZuB2#xWH74VZL z$EPS~okjCzsguhfQS}XQ@^5p0Nb(mqlVHKjN=Z~b7>3e>kLxW>Jfl+EA||yHN(@?M z1nSYOiqL57^GCO=~p|6=#^)BGDgQbGXip@&P)g8 zOf>5~Z`nAEDN9qd(L;7TWvsK1KLK+zzY5Z}W%f@ed{>6`I7)W(!^R-%`7bcK{I~SM&mz@ z$4&J*@e^@9M`GP0_cm;EQ|G|_B#%9h&cN^tlM2l{(?0`dY**)yTIYWT4@)p_KI;+p zFOX{zOoD~(2U=7=9fJJ(sx~W;w)Ak^FwpQvuH|19-4_$Ki&A2QPWfMi=~Prj9g3oW zQuj5eaNPzja?lqZsQB_n0%nX4EDz4?)qP`69`{4SO>n_r?+qSK_Z>>T4@fFzCjfdh zR}V7I@a~H(%z`|U;^q%BFRq6BPyjyCCQk1JgRih$3BJX&a&3(rE|ZHhPgK;*$Zzwj zPq5}nYH1_U-rI|A*zW={uSVYQM2oG`bxgHU?MYmvHvlPqL+p|x&nBH|4!jDa?p3iV zX17H(a5Jz3{i|tLY>Nmh*yqVolPr#PCmM)M9zGCk<&6~v#Xl_7zeSOQIB`7@Og}Dl z(2Tb7kTH6Kgci!yCjM~UT#fQIj#*<(7Vv5I-}F?NWcavE%Ig%|PVC`N2-P=>%!-f4 zSIG>pm1=ddWho8Z;}Xy|txlhIzAy5HR;gw3ol->VmApRIze;NTZDu8Ti?~ioI<3@#SWhC@YPQAl*H{*0 z{g6!w7TbC?r8*4Da7P^eZ(#b@!8s8_PI9M0mQ37t;>JujaB28xwQ!qL9OF~O!!=eo zjU6aw;@}8CW*BP&bmb*aoRSc!hn3F{48e8vYeS2q=`b&1qNHF)Nl#YPl!iGXs2z4= zD}3puk0?V)O));_>e&RI`&Rh7Yfn9l)JcvUAjF6-cko=s%J6Fnmvv<=Z?SLD=Zwv@ zgC+t%81q|$ACFPN6svR~xV%dixYQ__EGTPlHt_Ip4tg$Aj~J7QiNk2NgD)}0QbOT> z7h>NMz|eTn02qf&(MNqX=R#Qtj5qppW)w<|yw+@Za?D|HYL{1zQEl9-FxHw-@iFsla*G8Dxt3)X~sxPZkO`EbYLo=BU2aLz+ zTRWBmXc8o@x^s%`Kzy@ywUj#kv>Peu;yT!pfV(QFQ4;dD*9m_cHG^quCz2=aNPN1;`cz>(<;^2o>W6h@vg?$C(lo+T_N-yg^)HiIhMr! zr_wbq%8aJ8Sjc!J$_KQ!9i_JP@+}oTkS;x-1yipB^sV=CVGVmGW!lef>LNt4R`zqM zg#5Y5YNfqmChyE3Yvx`KR^8d_-Q@+Tyl+zW8^p=CI`7G-+1+~agLMqEhFhG6kWVcd zLU2WxqKJ0@qY&Rn`zn%KB8?z88ut0Ec&d7+nYZr!&u;ZoT}Msz0F~epT8yq2gInKDRvG{K90`|9V(a>$rGNou_e{=9+0@+4cQ5SUSdzbo~Vqx-BmM zcq0&07Hx9}oeh@F`pzQ#?`=uD1pT?6hBalr{A1J$U^MP=48N0%(XM6;|WbpwJii+}t;o=z6qg>ZkmAL&p^Cp~)i!J5a8Dgz?eCFWh^tN?L zkjAQWNTp(naIsJ+_d0dP`%S#vZgdF@>SIBPMlmuP9D+F%qFU`Wt36)LB)VcPQd-q> z4W6*Wv>3P?LNk!J(KGTnE*gRQjJqiFJBljq^TP`>TA(8^ zTC)E{Z?s6$u<+ZA*Qtxb#{sXclw9&cErRT(qRW#axx#FN>i|E?BIxR+&eEXLM6P@F z0x65S;?TNlbTX5?a|i8bv#5s6pbCnll;p3zVS1@?72^i;V&SmlbX`GY1}nSxUrM+-X%0V z!0xON6&kX)aFcH)NsD?+o~}sjIK(MSWFbT`ll65Cx{KviBF0jp^$)YK8j{9OaT{Aq zJ`Pka{mBSBhT6#!dQ6zJm2^D}y=&yOr_su!olGUK)W)T_Z^HbxLGKde@63(uvkBHf z0<3>N_Z765rWV7?I6g3ggpS5=H5ESAsGa8PJdidF=slKfK#HGdqYB2Z)s3k3-i{2_ z4L*@>GVR9g9vucKZ4|L;NwsYYZ@KGSEQr+dtkVsu(A*Voxh;fKL|F|G15to-&Cc6M zE!#4hAE-uX=GhX3v2{Yp3H_@+a*NvQNO>xL^U7AWfXV0EGqHELi$tH2b5`$+OK-!?dyEGA zFmC1KsB4>4)4pXK#=zTc*4}slQ1t&E{MCqkZq(%3JY6Ac`}M8TGLc-%pmI#cUDDpz zYxOW|^(Ot~_ndWw(y#gpEZAvvYctEinm##xu|7^o#5PZt!S8RL`!%>kw>_UnZdBr5 zwlj6dB_sK+I{5cqyUz=-d3xDfNpBR{k#$I^TxsKFji8hpr=0+avdnC66&NVjf|goa z3t%j@vMb0qW|G@zZOX<0I`y*UUenBl3w0Df$98g4qxMSN&6qhxMR}mdo)e46f&Wa$zf$eu?Gk#{#_8n9;mfu>E_hcyeN-3u%$@VbQa6 zcH|BtkaYU~;h=0lCze&fO z&>56&p4@SJJ}=StFV}A+V3hxhZM@jO!|?y3ifc`$0q4SKYMH1zxFm&G=F8b}7EYPn zNYm~6Na92i+kKk^zJ5QP`>#ZrZ4QCM!$eu*HY16yl4DX_MfGHHtPy zsL{ckY$YL6$GrIC=?$Y(q@T}M9@-S7SefX?6(uwaM;|;vfv}l)($d2}mc%kwiu}w! z<-09W#Y8$w(py$n*xzInzG@|Mpwm(XMxHYgtgX&~E?BmDiZuXd(29u5c$EX>bTnxO zzCe=J$qDK~rFYR-f&eB|RoUxnlTO6KSEdOG;Jt`Im3EsL1YZUnlz>UJHnK(9tutlu zlXj2ZL8rHT=b1X(dX$z(uW|G|(Hi%OE@<$OX+q@=rCd=fP`JlxM!;F}fs4%j#zPdt zWD~;?i3%it)JCvr8qIsQ_DtUqD>*e${T5v$UCgss5M!WY__J+r=NT&C&g0D>S53v< zGY7>G6kD3R?IHH2D`7NI#dsiY9PLrY|8w1~PM*uuy024HWRbh$N+(@ew<*6MiaV{2 zla;YZV;@<71Fo%RJe*!tEQ(bf$~X7bh1INKHBed(J4EG6LaAj)?QM^Us`dh5ia~*` zW*kTb2?Qi#BBfYUjJgK?4o;@vyKT|tcg6)qCz8cgqxtM-tBuFwo1rFVItE?YwT)tj z;;k{gNyqbz5YBv>u?_9VJ`X;2rg^0*CY+vDt+n~)^N(VZsy;+nUY^0@kwDbk6S-`( z_Y@j?O>4>mLFH3PE@do?Ya3&#@Xt!B`0Y|<%(gVJWJ*tIjh+jfLzd*JIrOZ{0%=G0pq!O5ZJ8!@5JDXZjIG6Ta`kGfKxJP9 z3&VS{YO+0SW^H&WmV|W_b)j540Y0NEF^Cvi%Tn^t4CcCTX#bdUOKbGX;FnkiBUAJrJ3Z{ zteP*F`h9DbqD@S7NHA1iOxSyxNl?EJnag{U`DL+}3+(s53b_r|^n6VSNjDezMQc(@ zeo4-sr9*+rZ z>6KA+>EI)UH}tR1IJc{jEGjiKtXWxsC-AwHI@g#e{j`AkKpR#asW-SF0pQTZauc?+EP?bJXYN}AWGYik5 z8pJ#-IXF@aII2r0oBWV!@|w8|GD5qt3dpc2(u)%wrcvgvq9Gv@q#WW#FA&)_S|PMk zw6J=-Gm@VzLeZ&m9ytjfplOOYk~cyDkSvm6m7(nsN=z9M+qz+6oP&6nIY|!d2`l2# z4-;XoSlp#^vZ`{C925_~Vp5^Gag!oIs`CAt`_&%W&yn!Pk(*B*KbG96^ zsIvNmMx&TRje|i zkYX4q^2iXAjzKbnv(eZ#LG>-79Io1v#FNIx6Zk`PDyr*AxpaHVV6rqS97==rq1n-TLusw4D(o*5Kqe~6Gy&|J)ElGpk+gDyt4koHQ;)@|l0@87 zEi8UGJf1i~$P~M{No(-QTZ%5?MZjFTG^CO=Y9Y(w^($f|s4=q@@nIhXpES(VD%=qm zMAu7F*(k)KpCar$%U8ksR+!0+wW+x$V%0Fh1h_QUN&3F0L&&yDWV%{3 znOq{I@=3_zaY_8+D&WA?vP0V#WV?sx ze20=jzM=KYOl>OMG&tlc3946^bkvASsX6-aoq@=p^)9Y`4LU))x47a#A!r|1e+TIU zxAXl=(~2`H7qig;G1@pSn>R~+DKY|>pjuJ2$&nXo&l7odl_`_NAf%kjYE0psxiE>u zHA@Xxsg_$2$mxzGK)5s{a+Bk@Fu@%jypPue4#ug-*DP4O8&8U?L?gsNt1U+}1$`mahRl)mGuh$N+>9?8Xf4cfM(PGKtUFG1Y|tty zygh_61Ad<4FbyHq8A8jJlwdp?Unkvz4H&b(0ovIt*%7jyHKk-r8muy;6GaT6Ez?yQ z8E>IsvYXW3OPMX$llNLZ85xXwDxvP09gE4_#;!}HQ(9U(ts&3_mDXt~Q5iiKeQZhr zbUtEIyW+Y%srI5dpsklRLsKnJ;@JISry89gc!u`)>{wL6~xFoEWr~J zS8Z?EitM1v-4o&xJ?ZPM)y=*FZn(iX%nPQ!JBlXqstLLZu2fIg)ku|#z_0ua%uR`) zT)3S1VpB@=+7u$KBR^O)SI{CKv)u)k#wRQvCm4P{xO`7g6;SEXnb z%nl@(ZC;sNRJ(e^8Q{5l{53m`(sS|F^X@@q{;JD|kFu6mOV`O`pw49PS-Q#5^X3(og^7I>+Os(OURqAHqph)W1BMb05*$v zpS%7Uk-*Y?^EY#^mg5(>R#Cl*XFzQd;#Ik{v@??x(mysrEn!c*u_$B8(!z2;sscxz zh3mG>{u)thrDH#e0~@|I3BJ`D;LY(nF$A+APvTqrT1-POk_tFtauW0p&DsvR({N<* zrCAcww^K+_`ogCKY z>94nG`CcvKO~Ff7DGC<~`L8mS4zPwnB?{hE+Q}UOC>d?sJL92FmYvpU%%QpCMBgMO zfY1uW5n5_EO#q-xQNx+#>DAAu^r#&ntQxUj7xeSZ27B77a-U>e)Lfc5JWs3?STvxv zMe;c^QP{KYsKwLEJz~`{bluDpgwQ;CPHN>utkqHtEKVwL&_J?B+-pa*5jl-dwG+Ka zUL8l2<7~X`$_!abo$TtKZ@w0T#PyxYS&tg%`LeuwyTZp#9-UgD2##|aTJVpE`>W))3lq}^=GMazVS8m4?nX5{Ye4Z1$+&~G$IDp)*4 z{8sjF}vzu1Kp+z|8)P^N1lEbt=wKS_uX6+w*)e|-K_P$8Tm9%pu zhVj2~cP9p@oI9eH@w)z*K*Mv($@<-`NvsL}o-`Y}=QQ&S&1m%$)y4L2k5_LxwW{|f zII-xL8$(qnc_?{8WfO38i%!()XAO0~RYW>T^6!sPV9fT2O7tJ1G=FL^jp1&qcj;;Q zqdMzND|9p3Bl5uGQS`~Qi&>n))PWxGjRx2g%H^*ZAInJ93MuRvnW@70i5+#tU6LP( zye8@Ys@BTrsZ`+GXE*1Ia_f9Zrrx!7MdI`u7OqV8pv&t`a#sW28N@WU1%zZ>*Wo@4 zotJ~*(Lm+X0dk#BXralEf1G%=w$^L!cIr5#Pe((6&$}ZyXajxu&%jH?G+D*lT$fUF zG!)uv>N6X#T-({@AxHbUu-oEY)a3Ex8}+GAAVj)jNpHhQ??@_J4Om`u;KBWS*UciW zkUptrCQ&TKnt?m+RAK+2oFlD2V<|J?hvo^B3?-rcGXTG%_g{5nHx5GR6m->lPcrqZ zN!Lm8-c8?E7yGOL-Uj7&EHWX@SXp*}w0O%T5P(0x5I7(N0S1FW-|)B?1`P{`LSRtX zlolBUf<|Is2;3eC6Nf;cQ5al|0}O{kqcXVUwo@pOzv8h;REk#!l}=$3Xv`)LCzj18 z(fSNhOFxc8y#dCbFEtQR-LxLEhfQQD3i=B zGb7F9YpR`VLPMVX@e6vhA(ArQwR$@^G%dBJVVtKfpi`6vEpx>v*u3 zd*>H|uOrT*hQ%lg>y-Pdt8=K(JWWfo%P%f86z!+bTJE{P4eTQUItfE)@~rS$YSX}| zL>~>k>KXihpV2aO!z6E;sQW-mJU*efZ_{w|uxU!i5kxTZFxEYZqu8=Y@WV{$M$RI3 zyTQ!@aIQ2k3|PI66wRF5AlYeNlqR zl9QWKBrNTm%t+EK6tthG(dRlPm77;kG+J`~p);&Z-3BRf@C3L!nc9@fsjVX@zrQ+_ z4|ZYJrApMQ5G?sbZ3srr!rD@5mt|EvBbiX^5gYYPJ~$fDwBxXbGc9PY9gU^TjPw?{ z?laYQf>^kHz@;t9t?4^Z_@42UDQV?HAx#|DQ@BX4q(0;8*$%LgU(br!tmhkhc`J7L zy>rY_Y{co+*xF+eapsH5QLQ2tV`nz;ljJ*v$bGJfvbj){2Bp4oU5v#_4dV+z(OPbI zo3I>JWrAFi-eQaFy6i7<>2a*4m>0WaVDHhmJ`!~59%@;64b^ue2n5$$leJJ#MGZRm z1Xf!EVNEZYuQjH;t|0PUYif0As0T3Xiu>McXWc+B*Uryhd>V!;vIHgQK9HUQ?t{-w zp*KeGo}5c$T5uVAxh4S7;yPegTUHA1aKzrA<7-5^XI zGz_tWyceiR%DQ2PW`x$ml3ZxsTTW6>HZ{B`Qo7LWC3s2HtHLD6bRv{)agc^TE@l}C zpz0J%F99Snr7IX)+z=!Z5u7=+zVT8^$Ze3e54UG!4b!W%VXx*0A^2)t9$M;la%L^V z7}Y3UD z&NZaBQ34km#{*%@ z9DjxS~fV zIh6annr0<3mH8hzW+L7|&kk!q)1u>NIyZ7~c9Tlx)k5F0)Qk_pG`wYUR1F!Khw|+E zC}|G0Y1|Zp3(agWwl6}eeFcWowXf4y@PcLSB41~2b(zX+?cI$2G*xPG7ZpcC7adqv z?tXVIL!#W1tK6qb(BDL21o>#yMWb!KR+{!M*JDg%uXP4*OFFJXSu}QG>B?h4xE&4M z{2x#8v5_&iSt;OJoQm?2pEV{)5Myk$X%L;H8PtDep<*ncsuDmlC^;1A;hsHn!WFXQ zJ!VurPL1?NR@mpLX5g}RYf4RFN}|f{rX+JwRNVFu=FZMij0LT-PG_q2IN4>1oTQ{Z z6`xC4{p~;y*{o@=8Y1T9|brizsEx zxz}a%*A+H`DxxMyR;gvwdgj4VV#;(rygjn~gme^*VRe6@_YEziPg&tZYDqRsdp4-m7ZqW1$curgNFJzS z=%(n|Q4~?-n*r3i;guJeJ%$acB~^zn3l8h)Pp|GJEvP)nZB+uO(KO`Hj3G0rlp9+n zq{hd2FD0$pse=z;sVf2{Hdgumt>*1lD@FQ`RfPs;D(Wn_jM$emn;M`G$pA729?qbu zlO_hvkj=JU^pY~OHSIx$8~QUZ72!W@_ZZ#j^UU6-spNZZR=L|@GH)5${%hwRh%J>fixSEz!sz8HjCOy+7QYwjHJgxEuWL4-@uY~WXfiuZbUeOE;vV;=H@7p zt&Y*n2zX+k+6++OBzC!rYO8}>WMlY-iwK-fK$eXDX=;A4=k9nYB<@L$<)ti`C}dHO zfQlw8gO6;~Cfcr~CiU%1EvV|(PS(VV1l7dUL=Zx24RqLtkYX)HucT(>3>?S2 zVGqX&MG{$$JeP!g=%p;PcL>~ddf@-F(4o*0vV~CjxgfZlLx#QyLNf@b3 z;)#qLgvV?krvCa$9Kug%gKz5v1YFvwBy&vYr!f|B46un}M#SXIun_8%Wsbpx+~w&y zqfV@)h$j8Z8mfu%CnXY%i|oA-4$$xLkgMPzYrd39wF$157!3d=rIMr2zA1|)Y(qFy z>EvsP5|Cxyu~0^zY51(^{}AJN$I*1EE!O!1;KD|lrEo^LaCq{sFu*X9&1z8i@!pLJ zEOLzqf22^I1_+9$k07fS@lF=Ih$7R95-drSx9Bo(P(wv+;Y-}=BDQANr>x^ zSdLPuEGbCHXTU^my0eWmk7s0;%=)3F#GOgN`|{N2h>*l9;#5mbC5@))s${6L`y;at z1yXYv@rtl-EdPkP7%Fio=|DyC-6yIbs4*iZX^$2r>nv$K3GGgT>mr7-II%|J>N3`n z47Q#t`flY`wklLjNZfY@Ue;)L1WW|#X)dV4KEzF6xFDNtU%Q_!fb64C-bq2uVAF>ZUU{{t?lJn>1=3)}Pc1XduIwo!)G}NLQ$;UQtA+4UCri> zqHo%8P&AA!HrNqWDpdIuw7`Jk2@%naECi5$5ymo$x>bc@(~x0JP%_e|;{lC(0dBNz zXU2-nEQztURxDJN%;3F+7S(2oDC{JHZ;4GWx>SY4Z|BNdP^kPhz~bpt({%v*3Rgkq z^3@FFfr&EcF6N>~1wNC>03xnvBb2(wE2`ZFhE#mO@f&3q$G)1jR zE|4EmY7pV@{I||!D+4c1lbSX%EM5>!mc!K_aGak)NdObp#{wK!MLRV^{Ja%9Z;PzY zuu3y#xc;g3ZsQA#;;Au62&()JZGPgm8K9}txOA6Zw(fD07w1c#)@tPE=E$x0ErBq#L}t|?j@xhlFAfSbTQO_4>9J)vMgVOt5B}=duz^WGG7CYn$6B6gmIwOE5g5H z4OU5M2dcqXF$Z$+u@G*rV=LBo)jEYP9c-!sRLwhdQowhlBU+76^pV1WjL`LGJvNdj zOA~!(ubk$TnSYiRTvdFcHL-DYn1B!wFpuhTCQe`1oK=k!iKg!SH?F<0Al9G*X;dR| zQX_JQVIK`IJF5i!Fve}E8#a@|GKjBcvgHo(zl7}cmo)5#Wddc6cHU`wS^}n7EHs$b zmg(kybccORvr&hYuSD@_OipJ;XH9Dsw2O^#I*>e1(xl6=HG;U7>I76FWtm>jU5N=5 zLlL(8cAELu;=B&CWR&M(S9gbxSeQ~@MlB02>V=H*fo-S*4Jme(*X4rIzUi3FUTaWV zs-rbnhbpm#(8}O|rGFfXmVT8BBXn_w?>CZd$c8y8$19He&w*MDZEF-$Ov1$Kf|XmS zM-?M(_(^(?3|NR~{bH~OY^olWm?F>9uK?LUl4|{i6};5<=_H9OQ1Tdv@Ms0#eeedVKwt_cUUW}8kwvX_s@r(%L<9&$VOGW3$gI?_e*DO z?jUqCMa|8I)D>@U)jQGdRM#Yxxv7B-kB@|P9gRyq3AC;#a<2{Moe}1;5pKS)Qy%xv zn}zD=2G>Sr23{wAPr1vB?>O&*6d)jgKVL5}2m%cSf5Jd8ummOz4~Rox@Yr+~B@2Im zA(5DbVf`74LE(`Z3{p7}hsoqpSd1nA1(3+#(x~K?5g?R8<`Jn3s#6n*L!uLk1d1;* zn#QA`DMX%yNu^0+H9A!`TNIQ=fKXawVk=mdOzN}x8~P1qe_5i`DV)MtE}}%{)0mZJ z?RK9-?Q}Wx?!jS>!YY|drDz0P3%d*Teg48&S$~wy>>&ytv!B28@`6I1LfV{wJo7%WJ&&(4Iw<-JY5kF2F z^9w9aLd6XsjcZ`5F6rx3tGsNoFvPv;#9ZJ=5u;%8#E~?%z7 z%1-<%07WUgR=vcqlT4Jkk+bh4#i(n!0=TL>#FVh^tScqQl8VUhPHHRN49-(LqT{HJ z+m$jek>lk6E%QU*-T(}v5V5&0yUg&+j*{gQCoao|@i@|44M|TFTnS99NxZPE(5?kQ z;IPg$O2Mk}`tahW5KL_n!p^I#{;D&(vfevQT&r3(P}9{gFfH=xox0Gi7h%Ja%soa( zHQgmHLUC=4SjO@CX**ZdV+71jPhE30$TEZ%XgZb>CrqeI_1gp2He6FuFjpfA-Zv9m zZ(u)4O_v_qwuQv6U9!|;2Ug63MS(`RBj-)U_jAbYy!7*Qr%c$40PspRRiy6Uj|HD| zKsYN|QQy<;iDBJpwgD?R6hwzwFp(N_f=97+q{LhqRv9Tzn0rSiPm*L;N@Z!bX7j8H zyMHYux*7ffYL+`sezuc+eVbDdJ$m77Ue%bk=v4zcUr!R& zkKd3D4N_j)o|RNCRdg2e=F;>r8Ps@oyY z8Om{9T!;PF4+7}uT5YNqQBQUbag3q zDAp%L@2Ut|nCt121>XAJ`yX#dy;(c+bjsUXxeO>tE``0WIn`3;&oVGl z4fK*a5>};>J4I}g~!n#6Kahv@hoNMyyHmN4ed z3GZr5l$W(tZj~33M`7*S0Vc*ArQpKyI_0>nG?P+&OCvpM$dTx(NFJMs;g4m;d3Gy; zXn)AN4|gfVh#D7W?FZ_6ByRZpq;v%B6=4)+rL4EI^4ioMThmHwjrPaJBD9-}{#s=9 zUa>_^?ik5jcg`K`Lufjz{^8%Qp8AYpM159c4z7P|P4m(|RaXS?4m(QE;G&8Fx3e{?u2CgF24Zm#kKR z+Z|!gpv%&3wRFck&y69X(0vWm1>}N|6E|;WZ0bt6wMZ4)(>C;RFVXm5_z6c36&-@`? zE4EwHHESN3#Iv7KZh5Y#hbb*vD@Ca};XPL`6rQB3ri?NI5%kY4)SM@ucW!{EHd3RS zlucr;Xy@3sKE|%wkgrnypQ`E=Id5Iqp^#BMNte?P<)u5W)@E-*Zs_u>JX@(F`uNhj|t!l^BG> zo;Asvmpg$jr9Mxb$BtB{D#u`o3_Jc=?=YiY=5R*7q;i+mnF3H)HaB(^lOZ`Vrn>#-UV-87tH0P86`WxH7?1ZmD*(N#mF`rRLC}q zQ)-$zY}*94PZAyP%NA*gxEPBxi1w&JuS)h-8**eWE6dbGB!3T>cHp06{C!EQTOH^s zgBVW8R4|TwGDa@2F>`!xye?s&@`UXd+^;1Cb}Bez*Tk2>q2L#Ixj(XugyK<8;Ey2{ zMN;%*_zJ=$!}{*1b|n95gch7e0nE~z#O|QgI9MocPr!OKp&-)0U7CY{8ylukaItgh z+SiR%4DkRO-ss5C*vs8@!uQzG^gyd>m(=Jzf;TLr;fi#))Enfv7M|zmJX2dMYWpRV z%Jt2x|BD?weEvDAINR7eFXXL+!nI{Ef*vi~x0x+~Rm#-aw-a+!4mkhg%iG(o1#U*Y zO+dJVrSVENN%U7*O7dac>Zn~+^tw`^X$KNqsRJpYI3)o)Em5OOosD`JIM5)g;9n~} zDkf#O8xsDl?ijy>cU9+EW0Go-^}p4mA8RYVJN!YKCM-UcTI#w-%2k|&W%PQNkUC=F z)PI`-O;imUc&`0sm229rilp!9U|8>-Eu`@Kj{5g+O8bRQmZ_%K2U5CdP?|3ULWdFk@cKkE)ES$lI^(k185t1*lW1 zHdp4zStzWwQt{3ZSF*o2%0fCiHDCLky5oDzDULjkxyf zEbz~v3d*ATrMSRR6fkcv>IgDh29V|tAgGM)-{X3HX6C$PBNC1hmr*_@gW5ReUY<~R z`fqs*&z}PieHNt9c8My*Ejo}3&hF0EyC}yDsv8AR=H4f|-tb^m<JKwQQY>~4cVJFcogUYc|@FOIQNh-M`iXWp%FGJ|+0x0K_dey8M18^>EaY)8+3lu7(#c%S+>R>~sOC4^B z9&9*%C4RZ;+bZ#_vW=Ky(qOG+8ph-xPw@tu@9N5`9BpoJyE8mlrx?pkeon=(Zw`Eh z5vG+*(JIe|Xvq;PQb^HDKAkJM0D_*Bvs%6DDwK<4qN~)ajiWW_t}`pHVaa-zjr7Ed z?6Qq+G|isB4_e}KwAxQh(rjF=a~^C2o-VTFP>baRh%Xq*e#Fw4fUw$6Ey}X$+a%^r zyh~=*tFn?x2QUGF|RF2Aejrs&jYl@u<*1IZl=qmMyLeS zi(dQ?__+vDUhRI@ZvtpED+|&@bZW@PvXKYN8yAwvG~%@92+=RBuP}328Zh)rjf<6#bWla9blA^i|Y_`!(O;$YVT97Run%ar0-yryCqUk`3s7FN!Ed zGHkPT>uBsNRFWR?<&i9M7gT6iH)r2S?I@^e$!n=tZ30C(bjqJ-(*200yG|oy@7iS3 z^sXtkhH;%m_AP76g4}beJ$0_oRE{;J7?;FW-!6`X77omleGsqKpGY$biw|w=0%}a^ zvKE0LkSuuwy=|-)GO9xPiE}JZ%CSuvm{YDvO7%dKkk^ujB)4d3!p@8&9_$f|Dr=Te zE+&@-Z0j&{8V+D@mP+CA&nfl>SIDTF1Q9r^_>ae|lZ2HtR9wQkX!T7JVrJz| z2?WBTj-r5*BBqWaD|>`cIs#2M<LPOknso^c0%xvMk91848-H*< zrMJZhX)kHfI|8g9TW0tk?y)e(vh%Aj;$fqpWMS+MEPKC8ga=RX{ zg&**JPeijZMZHz>!&?xZ;r4%p_mG5>#|rL%c`UL`rp|iT+XK-~kF;q9r_qI!eOpHI zQ}r5b4_61VEN&6%$q1IkjA4MZmmXLNLocx37@trk{Qu2gB@bNlkEEUwp81itUAP;I zQ~@#b-bhB@2{7YL?ev(DgNrZu5i#v2E}bJqF#d>X3KqYAP;&s7A&Dx1lzCV=32Hc4 zQ3Y&TjEFCd&68jf2VGfMMh+~Sn1_T&UjG%8z|8KZ_}+zg{Yo&jF@J)s8?AaHD z1uYn9QFRYYjVc-W#CA}J5NziFyIFu#BbT`@M1n9t}!4w~%lqn)`Xc$n*n zgxx156zj}ZjO1M*sQldvca0gl4w&z17>`j^&LIZzgo-N9v2S_N=Q)wZPqSTOh#bK+ zwU!G|uaOj(SZPZ&2>4Fmp7iC6@*kNo+S}!me?!7#Q^jzXyOho$CyBv(k+llYmy&tIJz$2KxRLbH@_@~77@H0yQ;-l} z)T;U#OI3L}Krl|Jqc5$o?r|%JhQ4cXY(_AWvL`*2XjLCk zd|{U6ZO@2KDkXNulJD5lKM1tUP1!}zpRBMcR+jG~@V|H{c=>c6Mp0h+V@BG$4zSA> zrz2}_Hzj0mprsD(k&wx!ttMZHNqTz6q!OP251O&jj`*|HOc6k93JhR|sDE{;(N;4n zgR*L*jgpQUa1Ujd5B-IN2^ox(+euET6nr0n@E#^vV~gQFxGzR@Qv|KrvT|K-b%e(i z{RIs2E^=@^g+Qh{2Y%!lUFljbSh26fOAD8i0VI7Q#67+g*3Pb7zbe_LtbNKS&K zFbVDeKnHxKJ3yDR>u?C!C!}35k3|`bQ+aJXEe_{9n;cVI#NtmjjrjZ+HJys@Mf@t} z(_YRen-1GGk5FMUw*Ywjw_A+r3ot`AL(zb*>d*_BBXx!Ep&0uW8>w83Zx6BRNX@ zM*Eb^Dm-wKZ)WG|NErONTro9-gsziY57lg9Bf=6WwAr@1wWxGS z&e%z`hK(|=)>)$!@^Fg6-qNcDcvho4@X55=&E^|0nNerFsJYywn6bQUgk`lF)He3> zj*9N`tzk~sRhb$cgH{4@7m0>d5exGlIU1F#m_ZhHV5lt1exxMUGs8MM%Ja_%jFwN= z#nQ$*i2x@?i(REV&C@E4Wck$Mb}BH4Q3=g8*_O45lr<$`NvQoO_@xX}inRrD5k8Br ze4^+~{_v#y@_cw`I>%kDAXInRGZ9eK48lg2L)WT$Y9hWh57}!9!WN?d%@frRfOZO- zk{svPFRff0KNfe*UYi-rS6eD;ebq0L=_a<9B zrO}_#dNs*hvH4b?TS1VP>?!cxcN1)`N%XP=u?S1;l8TjGvxQ*lCnN761)7RCyXc%v z=8Z>e_E0eY66rM_iz;~StTf+=^oog&SxVinZpqTL$%izI zqJCs{Q<1W(TXD^X%&jOh@>5u@xZ-~sJgrbkP1$L7Q{hmZOf)f?RFmQ@l-NCo*b7wt z7Iu&`u(T(=o;J+G3-F5#9Nj9#(%e57P~}>drEK2)-l895D~lmByg^?Y)Z5=Wca`>y z+TI`IWp0VPuB@91@opRF_w_;`00fQHfkKIWU^aBXWp^ z0%;ABN+}b$tUiM$gh5}gmz2(_RjNs*lj{7=RbYhJ?2}o&4ryJLTjtcLY{my@smbS& zDP)%IX1CgJ(5c`&&&a*{9)qa66G z>HF^cEUYXM0zR$6y6!J83T%qFOT#MwyD007iVj-u`Y zqUkwNQ*P+Ri&H58tZgJnqAU^OlK8esa~T1*3p`M#I*n3t)vZiyUamjsG@B8<(5#&G zzOd^a=EKYjF)6a~g0C<`akBp6#cSh|qDag7b1puT>wM}%NW=X7#uLO3EwD>_zd1lt z%wZC+FI0;XzO&p-Brx;b+WkMMJVeb%QJlj@MUZow9xxQk)c?hC#S*ki6l?m{&MhoK zRZcX!odi{qElVy)bIiokyz3lJ<*86I?(eeiYK19DGLu%uJ#Ql$EW0#AIZ;^f{1&yt zHeFjS*>v;S1=w*Fhd02|%|{TtHMH!(DfBD(X;+o)gp|y3wbOT96M}rmF_(jwxv;Gx ze+Sl9g&fSrm4nS4!tfjW6xpq0+j_9A)NGW{Gt1wKEAZ44W7U*AT8q4t4GD##PUZ6Q z()I-TKr`}M^(#1YBJ|(WQcT@}K`w@IbmLx$?uzDo}4%an})0EQM z6CaM&(8V&~(kdO2$hy*+?%2NgEC8!0Q5J0))iMO-U2C;;yurt)G<8ZoYX)08&lDP= z6ws*Kw4>yZmdy`E5)G$yPwMrd97r3cRl=owe)N)97}SeyIWwao_{q40((YMVGq*q2 z_;qhTZu8a^2PL(>B|6rQcELtdb&WBf=GgBMD!x*EDbQCp{_ujj&&2V9-Wy&igu(1L zX^J_{B<~aXoIbt5W+}eP!{%y^{kiBhcCAO)i=U_6!Zb!E?cI=+U0F|<-M49S9UE05 zcN_|<_ezlN8}GL>%z4}z6-jN?xS8cxd<@FoTn{jbt|bzgQ(Co0<*}u@#9EL@ia|Qa zQIIRuMyMPk&0%WHqcJnwnxE2`w5B&Wii?TCR7*|&pa*2?-g~xt=wU0dwYrBJGbVnlP^^y?Fvb^olrW4=EWl_4 zk<>%0Z%$bzMump28LDtzEU2=vvVhT;V_1Nyk`kv?W@%mu3MFVzh!j|mT-~v+bf>)8 zs3c6&48l=>OO%&9<5djQf~`9Zm1LVzLWLhwx-~?A#hA0(4o}OGZ;MeJLW1K4+ymV% zP-+%L=@|YS@gGYC;$JwIKD}I;ZZfU`8YKhOEzl%5Es@R5vN@QSU+gT3QO0UL*MwTr z6X-DwQf9*#UUrotId-#b@yitnH61iWIgIe0FgIMcT+?-O1nritg*MV2v!|I0*#8ko zo{*Z%lPHqK`ykT4A(vrOfC(tZ*>$c~;}+d)iYIc_mJUTwmq1Jt1$bvn`}*{Tyu_ zqf1^7v`NVvUh?#au6xQnLix!h^X(zggCTmgkI*qP2A|48yvsHQ*aZCn`OFE9* zk>9eQZ24W%0$`Zh+#BAFgy2_lWF9%t}jNQy_x3SBjYSG4?1K} zczC<3C3bJ?3JF&^w>W0{1wgFm4_O=^7Zk$M+2EB`T&@7hU!n56!e%jxUjVJuRxFSdu(3$1h{k7pnUhHF$-U|DK*;$1Bu66j zPLzWg=av3nake?zH*0ej6X2*=6ogL#nLCWzqM%mAbjK=qvIqObyN?GCN6X6-nX{2+ zD?NfKTb|z8)^p(sfaMS zb7lM)tt88raeA%U(wuWe^c})=xBB2$=Rp&)%btfdob7S#YvpBJsC?lZOIJZlcqVH)g z;Y#sahqa26*Ne1AWc&lC={RX~Y1&$wF2fR}&DKNO=QW_F*1uNHn~AS-N=sNk`%9T8 zdEcK|s<5jyKYre7a$ksWF0g|gVkb^zv^$MRbICgFV}z;R3D&#OqFEwwdcEv)U1!NHWRs_4V0u{V~9=sr^Z!qcjed#p2B zB{+H(p&17~fqTM(2PJAExQdUFx(2ReI=~z-k2|^;11T*Ex*_$k>b1%)yQ&+v1UEi`N5ae-#CxEp0%JnE zIT@0`LXx&9%y2`K?yE!0GdZHSYMn5AT|m?h6f*)c@dmAU#**sUC$a$|iE=3On=PwF zzlTfB;g&N?Ly3&lwWHC8PRXZ5ICHYxJRFgX#%&{Pxi4+Mpk@%qT z1P!scK2wLW$-64h-iX3nk7$vtan3Dj*_sS7EHZ&DBw3&11t&TT9GT3fOS&%16D|`c z8gt*LV(XzQJu~Xr6HGr&M6$NTQZ}n1E6YY96N0|!P!E3(I&(0J@H4ml5ZSh zbRLSgi-f4G8(_=nI1+**p7ZR$45^922{%acwVJ}D5pX_pJwCy7G;0}7k|!VAZ7ft+ zv=pYzi%TBkyP6t2PV+Ff!E>b4PQ6h3p3;1t!*r}vinr99B~&%Q>|+}0ohR+RVo!b8tpi$OnuV| zvLzeaN8-tq^vSz|k)kY0Rgt$#D`K&HhRQ&=RO?SH-3h+KRWQU<%gHaj@ues=X;V5h zzcpi0BRVELL9f#wt>bQsg55k(l*1D+A5`uiisum4q=QB+z&k&1jqusEIbXGbOkL;EItbn z)q@_eslTHeN2fcl8SRQO;@i$tgSPa?2zwQ=X=XJOsu$pQAD}Ny^z=6UJa`ZCN(8H&btr5o6HZs7T??qHNE7S=!;FGlowO< z!^yTClyO7792~16&}FO&_ z2}aSSR)oJEd^OK{VK=TqyK$5k{FTTOH@^Z{wSGX$yqFXev&5pRP+;&C2}?&a{v5GX zlMQS?gtsH3J-AL*JS`32{kWP+;tF;NK*@h(^sYuSk4R(R!=lIAI=0~JdO1l0$>CPD zq}*9FY&qnDI6^u+TbbAj&_t`L%KK^|J-+6QL&}UX+q^=^{8iw6D$1N0#v=QoZV%ME ziDQC7OGMY;QJLksJEbMKn9&@=K+YeGSCJiP!>QxK65nG|u~5B-l@3TeE`GlgimL`! zQ>5=7n=fE2&qu>c%>y}}wCvQrG(3Z#JaMMJWB+LiDZ%6U(Y|a9e1E=6cp4I5q@@=_ zxoTLsO-zIx9Y${|{s=$@H_>K5J!5&ZC2HJxu%10Bv;?UjwjB_Sh|2V=RIZH+MXO|4 z%dfJ*%|t6itbOHl*Kvm3!^)-FjMv6tyBKhib~SpGoi#ChkO`6Jd~ zC#G#eL`W93D#SJ)Jo|Up{sPkl$DVzr+zQXYvChJtU*y&uIlGrN%6=fsL&hG7+>IDF zhN?8HndxK2=#vkj!rVW;W$UzY#6?sYd$&v+R}SR_yNl4Y-O@&x@XLVXX{q5qowKd9 z*VLq|>hYgQ#YZ_-Dl`rzmO;H;t_F?C{m=T>!2Fq^e~*+c>0X=(Fjq5chE@5MnOAofS)_NuZP0hFV0-{aN2 zgM8yz<67095+kaL$appa;JFDT(kuo}#HmSDTiR>ILGj;XsZ$|UQCL0qvVHa=R5IMr zRntVA=POlJoX+D=lRE`YrjYZ?%c5b4+n=I%I8vgF%`(n9vnOii^gJ4d08aQR1#sCPL**p`v7~Tuq6?0sAZpS6sB2^IW^!+Mcg*=+(`# zs9L2)M)+N3b3BrHOqHM2K8GoytHnTpOUnp#Cm}USTevmKyB9KEEexM6hR}qL+QooY zH#KpUJ*tG`Em2Nqa^Q8L@RWwE6<;HD>xj3kCrkPoJG(jV|34~3tEsf@W?gRSVsP%^ zPh16nU0MPugK4wPKP94tE>hCbJ-_5V`Lbi%oQxn+V#}~|#@d$TTO`KkFIj4zL0lx; zL}PQPgjYuGfkl~ z1)otm>{NNYx-H4aSpYjg#J`4E!vNyGJKCJX9$9vdI|U*4MW*LqCTVjr48`n{-=ngq zvqlEQ{H8m7z-X*i@qsP1;Y%Y$Ua(HP_zaQT!`k*wS}~7?oe^Kk)Y|7X!tnZ@?Ofg! zrPFD0HK1*4wiXX%%$I2Qcl!1nu+OgEA57KS7RlXjY7SuQ$>G`?C3O_>WE(Mc71gZ^ zSW``P48_m%DUfyIh+TSTdOrAU%HCu@xAu|+iUXN*e`1yZ`P@x8SC%$T!+Xc}4lp-; zW{mnp^33lf?(p(`U^fik9g21D?7^dRdwWx9Htuf=&7_IyB5vMb)N-)RFag!)DEM5r& zh=5{|SWIFI3WLU?5*TbgQxb&9Wb#QAep?=q%c0V!RK_JM0Y&0*h*Uxi4wuHHvAP_3 zV=0GIWRhsi9!C_KQR(t}l-6-ijz?rMhx7V(7KTXTv*^WI&kvwS;TBnJ>a%W*NT%~j z{o17)rr9VHnN#}LZJ=5u)@uCPe`mkU?-O}^-pf?E;pvpDwZ{o9s$cC>`IXlrB*oR? zHH)pDAvDg!Kw7(;f(ZVMfB;tu&A%6if?uLHtL(=mjE~HxGP^a7eTdIL_LqJvP7kk; z&8)d;EpI`6%*Zyjn@36n{e3(p8;o>sm(0`ZZ#0iR^3}NAd;RsS|FdPCzh1q~Lh{bP zZZra%zR)X9puOv2-iAP^qK4C|jk^+*D~J+$mVj=Y475VdGzA30Ff)X}DbOQ~?5qj- z{C=`da=N3kjMOH;J5B>UwlYh4>iVi|5`v~K&Ld!iDNlq((z$SyPbR)GdQjr5iZo*P zNO9_L`L0N+8z3U_>+a3CF#G!h%+H(&F*>qjtouXJB;d5c%%XPTv~y(JD@kxln-IXu za=xlR4_cilrgRMA_Nb4<`o2wS?4HK3uxtG@P%caVHK{Gz;NjBh^l3{zP;)g4KJ%p! zF}So$om9(}WK69}F-=U6L(NOK6EF;;nOavBgfCgnHKcJQ!EBY5_R^MRml96$B>zuBwG|MfuNK=UXiiX*`x(MXTinqjl6q?s-OH7K5Z*L$ zn8Z!=JtcdqQ%wCnSn@m{U_P`pe)PWAt@%Mi7JaoZzK{x{(JqwD$pgSuT}vz75*5_{ zR~Ln^ZYNA+5st}JEOez{s!P#bUUzGcVWn-8g*MO_MnRlpFOx!|XPA=W=+qN-fj~hh zvfR?is+?s`>NnEKjCAAd~E1XYYnOGK{^FcV2sm@(CZwGo#(hob) zc=WaPPuq2uF;eiT9V$21jI0!rpBLL{WUisdz{Lvx(+M(F3_16@_O5>2 z>)%ohwg{xce)V1&YDxq#s5XY^q9D4YOsw?X6e8~USE{*Y3~BVT<~D9ji4u1%mAk3c zZ1$RSoOI5KCO;IeYgBoYTFD(98wV!P-LwF0j+Hc;mZ((DtTAMf0Q4(%F3r%P>S1ij zITaVIp45x{V+$!UAJ>$)OM+j3r}1G$Ok0{rgmvOH z1sZE1+s|mL22K-XjMCP;GAZX;Z?%Jl>mHjTW=7E%6tf0nkNHuT2Ju1?cEX4d;N)ZSHNpyJh}M7+ceQ1vtS%*8ZI1VLo0dfB+-~Ci2t7 zY*A`@UYS!XCSK|nl@n!q8`rX)Wg*I)kvaRAl8W;eQgudbWdJZW{T3im!G^L4TN}Dn zCuy`gY0kEhnAXtGXA0jplg;-j2A;QJp)g(*9IMm`pC(krT2!lTs4e-F=_uQSXKh+I zEyJR%kYn9M3yDXX*L=yMB?u(R)QdnBcz4n)nl+XP%bKVzVh#E^e});$LWVApXK4bS z4B`=?_yJvLoBM@y;Vd>*rBeu!J#KO0k6D^pcaM{!O0`uKN@T}OkBR^-Hl6LRI_BkL zL(Mocb%rI1bgd@JlsWLlCseu*79g|IfovT?!-%sADYZL_78bD=N@q%*vrMMu=D=0L z_e<1cFQT=|Sd#VYpsj)b~+w$5TqlaRFG+A*KX34WY-)fAUpO1luQ zuiz&t`_9CQPv`KhqWIL!?206P6;Ars)<<5E8Yf+*8Q3~%(6?#Xq^NOe1e-#{08pVq z09d@pnzgXi4K&zd7UoDiMlgRYW*L%l#T3eQ`n~A6iX+le#?pG(U8@bvk`YoK#^u9B z*gEN%b-Kn`^@EY^90qXDF`3ksw=poeEI>zh0bQv9gIqPrSGQ>(<7Gh_72YLTb4sib zS>Zu&jCD&ljfzL9!Bnu_`_5HHF1Q)7XcQZK&6fFF!-`DZvva$=1+Bgunf#pb?gL&2 zT3o@iY=&QaF3yfJ_c^K$IA?O-!1;+oGi?JaFL7<38TL{mLw#6Y)&|0PT6a;#KYef7 z;@5aGb!2m|sdWNyd)U`oD%qzwBiUUw~^b zvzqlo1oMBRMb*EX)yoyU8_B8$-<^rRq2MQl71Sme=%)08mKi}?A{~Xe{RS7@7B@Aa zcPnVszeCmRPg#%}CT3M!vFa^}z49Lgc8@sc54mZ7Aba}6b_%Ua9pK)d97kZe12vQ&%6

    =h)h_5pbm{s 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%0DxDiYQ3%c$_lk>< zV4NWTD9t)uoTz*bu*(vTtmcW9$p&grt_yojIwMR0E>}ZQZ`${3hAV<1BMhs6l7Z(~ z7|a~bo2oSPAYOrDS!KO(#+5OYR-+`JGNygRD^7`;vKAXV?Zj)cBv<<;LzFo^ zi1RNg&HPpx>?;S2X$f3KI|-kS4KoCLZ!ByF)iLBbHx8q=EniLn}QX-<4#T!7o9<0divunUagdo*aJDnqci}mLVxub1AjS z+MlPsXrMz5zB``I3|Bn1%s!Yd!?uDtZJvxiEqx~sJaa<`)ih6~o3U3un5~0mM-x(x z%5|&!vCD!VtAtp3Vu4C^RFIdP=CF6Ri@AN@!jzJW)E-F)@pwK~E8Q@BZxdd<8)lAj z!>w)D1YI;7=NkGmAe-(L)ju2nqCs|Ta5nJSve9f;=e-3XZ9(e~0Yo`0M$atoF zQe8%Jc9ETlhp1KKTb@0JkwdJdOzNWZ?BBjo!nsM}l~^sS($2SR>UVkd8oZB(yL5Vv z(%v1YkUH?3WAH7MtP+E~SS4zRrAM1JjwRJWvqC%ihm$QCs9k-#n}FFFH?wU!ziwUq z*3r0RAD@Qw1N1*MsHl_KzH0VmcyYqRA1|ghHFDhOCI+v6ZA!w%XoPu}{ia?X{d)Jm zap%Iz^KV+TR{l&a#NYIi-FP-;)ZDmVz0LCnbod!q5I*NlWYd*Nk5@R z0BSBC@Zmq~J!x9-JyN*Bzk5+6feS@EIWw^KMX9JdH!P+=TDdIe^zE;N^JbN)e4k~h zQW9@rWi9+4o|7+LUpk=hJzG|2(wypL`YoICn0M{xoN1#rq zHcdp=Y3D_RrA9u+L{1c#sbBXleavTk7pzaND~^w>=6C%ehx>4Sm-5zj=Dch9Px(^T z;itb3S76vlMeG_bGVG1G(>HC*`>Ea@t>|y)ZwB zM@-8YIGg4DqHObc4sl<~ocbWGH2L97s5w70rsa@j_*WR%AG~Op7QQz!yg0-W$he~6WwY*n3#np;B=RKpYPwt# z3ntCGG8LTC45*bsCxRD(LbEk9+%0-gq#7UNo+zJS#ELo>8oTgF-_t$Z+_aM7By#uh z_+}qGbG5(Q6vo9<7Y}A=`x@OghD7TrL=%8uEumQSM(ay$09v;((j`4LyT$FSONbvC z#n8te0Q~X*3W5GQ+%VmI%V^0BoPoLVdchk*a!3r|7C_!Snj<$;Jc-&pG;5;jN=fqs zSqi_=Mz(3>wTr($+8*%(TgVZ%^2;k3e%hLa>5#jO+sn1STi8u=W ztx5gh`PQ6l%<i%8d z-#>fopFOVYvFosF@6Yq~e66*0VFYqlLf7iALWGznB+Kl^)%-w100)Hb(H}E5IBMhI z8kl?hk%bKBboALu&M!@Vzgw`C;cO}gz!;9V!)iJwlFVXnfPQd0&^Q!s*syA&zsa0o zS=DQ2uDP6QyNWX-_AszAbcylYADfVNN*?`#zZiY#fOa36P{&{3YsZmMCeqM#ql*P* zC~A;{TCnAn56!-x`Sj5#Z_1pf=)T?H+kXU8UYy_T53lK{utdYlco^K2=`UkYoF`g- z7>3e2CgqlC`#UWG@R{S2m3@%;dWMm46*nZPU59h)gaX^aGmJ)UHF&@8pYr)IfC3{m z2t$7#C0m>I$#^6?*4WtjUP;>ZNA8tnz{(}Pa>beo(Q1Z?nPDN0%S<#$T6M44?qY?p zM5C-`-k|crnlTnoUZ7==qtS6%BYQt=FGJMIVS*g7QYrm}D1p=ovh9!x=Y4bU0}zJw z>ZrX2UvhgoHiV+q2;L_J{Y50|f)E|d3UsREy+|S%js4XJ-_s37+(xI(DyjifgPo8$ zqJl@SJ_nY+)9PrMl9+De@iFX^j1Gk!=k?yr=geGU_1OeKu%Kt~K-aK=F45mS_7{RB zC;3g*-9&SAGD-@s`>Hp+9*^0A%l?>3MwOk1g3Fk4PGxC z3`Ve7h~Q=*F&Ic1rzfO=Y$g)W&NGnd2;?g|UWRi1I?G@MvO6+S1OyG~3Wip47Nqlc z{E}aT6&?;9-MWHq9YK?h>lYByK;P%12M+07{ICkq?!us7N*ZRA-_hCoOqcTj433m4 zOtuSVkPJHnYELFZLkWn)@T^e0Z8YMu2&2{8JLYsc8g(nd-TPO&pJMIix*e1$>5MjN zcO=ljXp4JqnbljnjExZag#8dcL5A?CmLX&s|KrHZ<+|m=dZQC`nLnE0hk{&CJ{m}@ z*BSu7N`hO)^tCyu^dtZEz8^qz(A=6T7`hrdGWuc5q2GobPfmh=Z4jnG$Y47O3BfZ$ zsGZpg{?y?#>hK+Kyb5K=G;m6y_p#jCb^o8qf@neix1c*ZIS0 zEcNhAkPMSk*F^fGZ$oeP07(N#!+-V$J<$7r1-?Gh*Khzv;UK}pi4S}SgbDpR6)>Da zpsV#}V`zrK$F_#AQg6}`NOg>>^|ucdWgDrRyxC{cp+-O%uxzc;J?b?4>Hut$z}$s+c1h z)N6M%!_rg=kBj0ta|EA@?ltcze{CRBGgX-E5=>Z(3?wq-eQpqfu|$MsxIC<mF(* zA_+)D**rnk*eFoIIgMx|2pp}|?r2hFza=nuXxT0@s7(CUo#nYJt??bLqe8o*@s4Z> zrSL1|n~f#Hok#Arw%XtUQ8ZFOWbbEih9nh)d--AjdQ~)zOAsf%=juB4b|XN-#yW z9(k5T5)jC~GI* zhCzIr_lzT$SpB4bzkDSVA}kN;RArB-Dx}IlRTFRMpYkui5_EylU`>N)B4dX5@CpgY z#6t1v<@+>7(YKw#l+&E>JQ`@IY)CWHpWy4lmkBVe%6_e+IHDw(gToAnRc##nG(FU? z-ZVm*YVtF;9BBE?ME!klen*qvbWR5O{ z18H_7P&w{urPLP{`x-bEgx3yus0Yt(R^eUKMrwl{VXr!XtBU6Xj9V(u^_$O*?aLOK z9JoCK{D>I+a=ioRI#^eb&A-as&i>h>E1QGyeJmp$^PrY+gPRaU9nWajtRJ9kHAkNK zqHngFCZm!Ju%z;8?ef~EdN9>xONS-*8BPy*blPEmBHrlc{kWS4do((ZX^hgzqq-`) z)9{K%_@MW6@S}F818{9_PV&{)aR)J}1c6?lE8fpRM*_e6Rh_Rg;OUZs=oC&Stz1kF zQYNw8Q4%+u(L1_&?u7i)NZt3Oz3JddEPb-sy}VgR&|(AwwO{!wIkOQ4FA>yR`x!=C zIq#fqyXXOnMCd14wgde+n4sioZ0Oo0`#EUvlPsW+-T865m$XLV)Cz)RpnRK=qawSd zVoRV1SZbVo*ExoxSy;5er=v;7{2=n)pw|T1G!b$Ph7XhMgSSLi$Dm0EdQ0F`@oV>yKITL@5t%pphsqmtmu`li+Ugx3nA(h9CF zoPQjg7qt#y+9tJ3zL=_!`_kmxVrGK$1IkY#`joY}BOh%2vE-?hf4r(x>{2-SGm|?@ z+M)3?b;s{dZMByOf1;xq013GSfFQtwuy(jb*!}q)wkFWg=(Foa2l;_Yb}&~8vF)nN zm6zhX-jkj$VUhY-J;t+qU2|1RelH_CFwaXBQPKsD@*oX{#I9Cb>3a3Du+ zv1kwgcz#d|#S&WnmiZUB7|(cBE=HU>?=Q_Q&ex7O(EO$< z_fo#{Q=fz#SJv1)eA~CJ=P4Ut8B0+p#5P8&#rWJwa-nb4k3$>Mf}ks0$%|;}^sMfn z|767ZQ&xIc+XGi>%0K^2biW~MTCEpSP>g=t!;Gl4EqlRhdwXSdztaZCO_y9gIgUKv zs{S(lg6RmxsI0eqcAJ3BqvE#ld~>h} z#)+Be3)InXUS$BAf&wLh8n7Zj3L~M9r7G5qp$WQYsvhDNqMvLrc;{UvI{0r~*;S@e zoq*!|UP&O^Az%U@qh3ZDQdG5K^n{yUN52cdH2&835}>P$FvBY25Rin5exvpV&4l_! z7gOm!9VX9gQR^gSyG(AHU3GuM67$KZ+D{6?{3bXD4`t6e*5c zCGRi$b-}*lPe|Fv*F2!VKG!m?>SxeAJT1=Ic%yDeL`d7!)=16s{dhV0%tqe&x9Ho_ zL%t!ehL-~3p&ZYN=(1PfcN=~9SD@DWW9xVCGBec@q<|qd!99l9x=MmJ8P5Dk!8+4W z_=Z714oCv2iGz6|voWrlD7O)eKR<_V>|VX`@DahPN#N&#)8M|k+wfG9WmUg4ST220zd;v=a_8RJL;7M zk9uW{Uv$?OPpK56FEY;n0N!;V=!=s_Yr+08MKodXnM1Gar#@S%nV_Jd*o{TPS#%a!eK{7+q%cHH57t|1V zM*8wR38G{{67^Y zA0Ff}(d?XWVB$a&F+X}8RWVP0a0K=Rz6BvaIDXq6O&OfOFPk(#^0Y}UZvM_D*y%7= zcr)UaUt}ye?yjCrRLdZq3!Kw)tvX2n=%^BH&LKc=y_AQ&!L}oTiuKqw(?e@L&Yh$W z6!!vK8b?THZyNJ#u|Q3(2EbNFve&9)b-Z`*$fp7QdC`#C3Wmq)6p-fzFPi*Zo6q|% zNMYu>dSt@>g9~3@;)a7Jx&e01Ya@3v85Ag6_rGNJ-252?;DUh^bmU%fSVo7`);;|> z-8~R!nVo|#B^AA{su*|;1qs@jBa@oqGs!J>y*Wi$JUmX;=?v_xd*#V)pe6eGt0rKT zc6SY*%KW(8Ht)N){<6qpnN5mU<%ia?jq6j0BUbC&x%V`?!jEQ%H533BeIzXj*vO__ zfzH{U1@N&gi|zJLL6ZPr7anA-R+35P^b$u01b%F+Y({+>QXWmrokEPMFQ@Nq4^thy z1y6xBkrEM!!0B;Nl04E@w(chj=62)7Dy?T5@PdosC{ZLL#EZaE1q*CEXydv-I1$0x zubKd$PSz>KLq1vFvKRnjeXDT9Zb9@I7da=l`mNXF3%d#6hGCbjN? zv_g?;4S)Qaw2X*>rzlXcl%5YAb?KNy%M@ff@^)|5iQjgzH>%(jr#QmkkmK$mv;{W9 ztkqz^PRRI9-zz00Fx(JOxE#s$XJ=VITGPwLfir$+8&tfLF#7#@Ss)&oeP%D*s{%42 z$zZ;dvxnUWJqcwOC|<3!zh&aqSUUdoHHD*g;5_|iC=U2gyQW9_%Ai5}IGFlY37Ay( zST=uD6>Rw^qv;_P$Jkk%ZaeqI)lLKqBHS1jn*8efw(&agZ`+YZbn8ji`2rNp^ z_7m{#Z~FSw_6Ow$sT>n$q^K$y>)+WQrO&DfO)2ze`jCdUzx1?i&w-3&;iTu7(f!pz(?3%oyb}RVo4yd9>r$o zR`A!--iV}U3}wia$rBiweWKhMzKWq1ca$Bc2|_J1``Y&6!x|vLAUYvYx;6=MAA|gc zf>~09s#4&Alt?=yWS=0nL^K&B9y)+2Dj*NULqXw53cqCLmgK-~$c1&tp=AQTU82OX zz9Cc~)e@xE77JnuTh35Kh!p7&B}F*K?^F`o1qHx~IX3kRh8g6QP zz#~Y3L>=@~W3muBK-`*8pCq{-I&>Ra1Y8RGjU&G_{N`lI~Zl9<}C3{rChHlc!Qf$?<^DyhLc zX@IAM4N3}xQ-(xfQdOW1&%ekEF;0N|F4;g>^|tf8hNgp#(;|96_lz*kF$ouPy|l ziUTo8e(p)4eJSjaBsM1rpup%7jEkiNu7%Te2)qIrX_pxKQ^bAQLYAs{QVaOmx&S|= z=wJ%=pA=>&h7p>3$)-epY{P2>0+omiN>lM$3s3P%iae6|?j)wr0z#)i2bD@5qG%?F zKw~6coX?I$&TvrXYDqkI)Jig7|ISV!NN+(r4E0D^3PO?AB~E<<6fi?}D6z;fQN}_n z@enO$!fP9qwWI*s4Ylh&yn86#dX)7}NctezZ!0=-BWh+7$RG=7ngWpqm!Ttw)DZCU z?n|%OkA4%i$<=h~+WCWGhKxYEOCVLZ2YyVgj3dEBRKv7=pYI_s(gyao^6h)N^LdE=9N~Ab!AEmoo*XuG3wG}DLJF} z9d};5l{k=bI5*2&Cgx_g;7nA{#tbKR;(_ZK*R0p(VH6b5eraoCOlI7boW&@VVRbPB>{ z=D+9KcHRu&{#M=O*w>JhfpaK1yDO)7K94LM0?nUYe~}s*U!fgfHt@5|A=;QMbp(sC zS`2ULS@o#(ZZ;-3*Br3|_8&*oy-dvwd`daDGTWEn#d(M+*|9Y;li2X>g7+MxvjYfD zUFGs8PZ3>er*sbn>pLT@c*<20EdCN{85DbdxR*M}&l`OV*<}GpjhmG-rsC4P_pDrY zYsT6aInt)*19N$bC?V~*(i{uZI-&9ANqTz6uG+M6R)nU(+R9HU8lHsI!23e(X-pX7 zyui0PcrC=ozP{JHWjjwd=!5D4@T$BEJCi5;-I~RESvKVe!OS1LX3udZPofJv51EWC zwt+L4May;8ZOSit0OM{d_P(;#evQMW5bCfd5a+~uqpCP#0?P>FK4qQVC5k#yP(jv= zM8i;iA!>Wx4}o$^)|x+Z?CgzlF4D>FTl1z7X5`q}Lr>ou55eddWy-yB_%m z6KfZp*Wo~Ii4Y1-YHdGeeMqX4bdgyNDTjU5r>Jt z_5v_iB`$t(QHI8{&R~vs@1^=fT#&4o@UC4i>|@ea3NMlb*~~M!Q6eGtWJf4Q!uthj zMF0l_mRY~K9QR+jq~xr1KENHw+rt)ZLTFC{cLRf!7LF>l?t*NYfPE-Nh5)!oLofj| zgFqBnCN!vlTn&t0xG@|*IQK+p)<>8um3XZLl(T@KYdeCT;^0FJbN|=$umXQ!#rkGa ztlsJjeK_slhY*II!er}W z;{4hfc*d{+6n`;=BGE#2m@qOKpur414%1T&Xf0IuVKG;_4YkgZxd=&Zsu%Z6Rhl!j zwN%(3G|4fv5TS(pQ<#Ge!rJQyKO=;l60Fcp7H>_CJX$Bm0--2eB(l`~HKzI%FhT%i znQvJqvZ6N9-nuJS6c(t%Cw!zVbCbIDgvMF0=XI*l;5f?yVy{6K-jW4KuURMW|W?@4=NfX z@&Tb;xG)l?goy%~zM#_vv#=|7sh_^R|5iC6XbtR(@h@^mg&4N2qFFn_l=Cp+LNO>|nsieGhQP?*Dl zm#}IsnHMgdI|{&SI#HORNFawTr;c7PHX|gCZ43;86lqptT#i76Z{p0vZ7`*hnpk1|a29dd4zo zOje?~5l?WMr4I6GRtiE%wmNQ=ep-iR{*N75KMv^D?H?}9SbKDbzpTYS2<4>b=cMvt zd*tIS9G%q7#jS*O**de&#gc%r>dZ9>Yi>JiU|niGd1`3y(QOT-4)K~VBBj}+va=t` zH zFOxSa8W~$t+C-EK_Fcgf2XRi4hl@7VJD62B7X%KB^J%0^y_vJyi>AjY9pooHx7O>o z_(tp~MyFYmw?YqZpN)}kELGj&I*iwHdU!0R;X-<)M0E5}DzDM=W<|`#yx6dnF{haR zGZRG3>#8bphqi&27cRZnnYwMw!!4)W{lAM_4z#wOzu~a6Bc!OQO)S5#YD4B9grofO z7PcaG=67loRLDgqu{=;P8!CD84PNBx6Ft zx20x!RTo&Gb5>E3XzA#y5!Z*|exW`f>%jH#{zI!o-7dCX21sTMv`@k!;er3o18jiJ zz|H*|cm7fDP48HS#G_rY;pTuLQR&)? zBVEPAQ@fWJs_wt;`gD92MiMtZ|30s-x1uXLHqS0C zUUCk#!z?YKP-wUGiOsYUA0xKGCY6hwUrn;ymC-K3%E2iNDna+rHnWzIP=jo2&y%3@ zh@}(uyG?R~+B4k^OMH83x<1cX~n6H_+H*y4zkQD*v^)Y?(y9$j* z!}n;Wyl4(Bt0|sjU`9vA?Nucw-^T0LBY``;u&k9{#Zw83$v_6a79^q$YQWM>HvU9w zWy=>QVPnydE&jl8!^{N*kBU+=nspCUznJQ)iS1>WyB^&Q({-kQG?1kq1#c-yE~+mn zxTqVwKuTi&o`|BmHcUB|2T3RGReL+8qh2#kkmie1Hl1_b&0+YEizYn9>)5yfEP!9wF}M|6Z>%j;2(W(F3K zwRh%UsLU;!;Zem?`x3v49aP3Y=Q^{*POab-*x(ZhsK~5wGCpp6+#2hAU*Z(C@#?dR zT13wHpj}9DPb#pE$O-hPX!V?^awNJcx>@OlGAXmlv|fz*53jdeuFEfpLt1INR4A|g#FcYiqF*<+2!uA8luX=DOcE;BFWkjAwpOr8D zH_k9DTgIa{<+$FS^EhOBm6-b3^v-`Nr8Rdp-k6!bvnG4ACSRp1cj0%eoCa)&(zSd5!}DmKouq6tzEZ$vEV}?T>2BSF+w!(FGf)$n9gDHJaI@hrX20EW7Fc z8&a8!NfO6jUX!#$cYGHg`t`rNF7A_~R2L^wH2v<)*gx;6DrbC3f4B&*{CHc*G8w>r zyTjd#;n{SV*7g0{x$P?12do5+w}0zo=B%UV_J)`W3LF&(_{Ot4rYirZQ+41>T07*i zNiwr+{tO_A8H-v`LGGHQWmeegXFNtPc159<=&#;q9!LLd`#2*Fq3+6PFqrLl{)(J| zoJy^lX4BQH)@>Tx3S0y~-H51LesS+iAxVAWc7%Io-@LZiEqkMPaHOY}_reZgJgrgm z0cX=vQ~HC#%?I#tHRi z(P{fhU|h{YjOIeU79z!rkccGSFsn2??CyZee@DBU&259BJoVdGM{1 zweiN=A(zw@0N_4zYDkWYaG|FfLnq~Ti>vp5A-~t^+y2Q@Pg1Ivrt8Lzbw?64P)>b{ z|29E}Wt$dl`xRUCfojwliQQZ2q#OfGi{ozFIDZ%3UgtOl&wGQLw+?>d2*xurp#y2N zpW-%wIBS34;OQr99gAq=LwYhhw(kYbYJJz&k2e3{Im4+bdb1gnwNkdW{+wNS;sOY4 zmjZe+GAOe{XFaiV@(7)-s2uNjPQsoR%5gVjc*OH3wvIyn488Jw?~@;}Kk@Qy#5g`W zM=;_jW__p2SQwxy5>aMzwbA3CE3xa7^KwY(f&`W^oJx2-l?)di8pY+=VUA5sVk~^h zFqP*jS|GLx$g`f@4UsmK+}I-wqnNq3@xXmrZ}xRhUTAv$GmA%t3(kkeHYDC%zqQzi zA!A0pI{57$3$?1`Wh0SUduO*n2JJwzBKEP_)O`BDf0e8G=bKRMbqB|uK(jt~8k6)MA4Tv2)|Bt}nsvUueD&IMENlUORuItrfv=VPse03fjxw!K_oF>P&41CC!HVH>xRPFslywn;191X=q zhafHGUKyr%lqmirP4d`0(gcP$O&O>T=)||Zk0rn9J>!3%Ih4{7zfU`{ZZX#ro}r-3 zLj4shWxF79Rqwss@MAhUb9UIFmo={2GlK#Y3>5kOQ=oA&o=`sI;GuC3RJh>~ie327 zN!9wwF%;1v7?2fdz|G*GmIQ&oGMAVkK9NK>JObjX0y107&>~{p{EaLllQY|(TQ0zS z!y>z@IlWA`;yz&Rvyo>MMVOs>)nFw@sII=fJ?R(#*eTx?ou0{>IQM~#AnP+osF!V_ z%kPP=Jw~>pw=Mg!|MA5?hlB78IKzkSV5%V$oBV-`p~r+HKXenJlNSY_t#C8{>Lpg4 zhIW5w!%Vb+$tXmRjp_i*8yK7C>I?ZKe&4`!#UB3#GM2tr+yj`r*` zJ*|jSfAw)2RHTMr194g83Y#AGVhe+z1a#g)YzbA-OKgf#&2F$`YkM0jqSnF{EnqgV zh=6wCy7L{@dD8EKk`+BWPhTlKh_kQLc{|U38hGe*bSqfz&5UE_o)_Y6r81-k1s0d)?7s8w5 z&%y!9hhN;wj@LdMWb13u_ulh`_KXe>1)_}fc1dCcKVe{6$I$A-g#!?nf)TEwr-Xu| zKSv=#tKqSr@|h9NTQ_hCWEg@XTlz-8$s+U_r&^nHZc9*J&F5pT@9|eTGy0GbLdFEW zovXT-x>eJ3lh**CjR17%9dGFh2juZ~ghCe~vqFFmbUPHf9Rqr!aQnOhAu~s?k6{>m zSGJQc9Q}k@0U1vT;-TQe&`}YsJWY?&uP3uy%iDnF?MEuMqW5+Jp@#InaX@tuZbLK` zG{S*VU5-qL=L}cgBPDJqcq=?}J$R!b3VpV21Vd?5x-VpEVJPS)$kQD+=3cnmu7A-T z*f$TZc&R5&qLcmx0@T2|PJM6QVSKYCAq^p+U+h>K>X`lw5$K!|BbZv-v{LVw_Bjau zuZ;Nupf?HLTDZ11gD>@hULqOJh#D!tnTK&kJzt)giIOLzG!!(!4Ek4FVT_j1bUE$1Jsb2T zYw0{~SoUlS+oEBonnfeLq=t}Kfec*`gxy+?^gy|;VEXg%UEK`ApGQha@-r-K-)wM0 zbcdZ0akE9MV=`dIZC<$lifP@Ftzkoaqf{n$PW_AuL7hG?Kawx)j@!>GHEOz;w#$R^ za`OZ1MJ(!ASG%ipb+!1Vx%}7nx;KUX}6SV5U9z)qC*Emt=~WSZ?y=RdnQsr~$-G1aH5nYsNT`m!Y?UD zVE{$Ze?a0ykWCOUp&&f23G#!-?rOmU#4CQ7521QB)hr%O&)}J!tQ*f8SSH&6Yd%SE zk8cHB?lycL2k1*Q0u5-CAS?9_o<@SMDz8~tQML4bA`G&wNr<*vfG zq6|Gc-NlaVa^GRXt21<8!RU{aOgTgV4BVN4Ig$Kv)`$O%fcG?Ch zG%$%s9m275aHv3fLOU?wOybTpsM*d`v|xzp99PDarY2C6C)1YX=B-q4YI?!ah( zIww$Vl&v*{NVSu5 z>O&{lfJPoIf#Erl06~<&94A}*8_HL)@PfCC2Tfiu8@5PuHviyLCsY2%#9=!i#sWzy zvTl{&TN~Ye>I60Fuota)`;~xwJjtXJxWLy8CMy0mmA{5XzZ6USqqDEU@-l5sHSuC5 zPEmq`23DaJ^bkLCdDm%y2H61R$~L8{ol8=&i8o;Aa9VUmQ6%8kcD9R_phz2-^<4e- z1Psq1!|CZ&g$e>Gh(P8@wae?tK_pUP52D8XDxgZ4MbJl|=?UJ_j3|_HbIQmuWne^A zG8i{hpT?9xeMOOJ)GW-SQst3+Oz+x{JxO1QwjUdM`CqM`4CLC#vii2!Vs1J!pIUOu zih8HSTAnU7sg`E4I=+Mo2uYb&*A>YGEG+& z7iHvXvd#V`ue_c6q9Cr}p^fyorI~lhFwv=J>jkwl=JNgdhF5YwrWe>Bv9L)fVb&(J z-pPG}Jzs}j;eUDU=F`PC8X|jik>`@=$&*z!?io?%%S0oh$pb5}`_DQUihbg&eWNeD zXoRju$92H|5}{7VQX~Es_Rzgi*1VJ zCFPq}I9>mzB*5+LW>itlNYeG&k~-@$zF$nP_yTshlT^DT?9+K;r!09(!L1N^czGyC1{{iXOmDHk7Z~NSWZXxr<(B$p->%-1{Dm5YG;o*m&OqM}PFE5pkF6x1CKDr|G??0fk2UW9Ftb z2hW5^{hR%Cd}}5^Xa=z6J0I!$cGGK}%iPahO$0EX4T31hL>U8g)wdoN9Acj1y+^oL#}Ud7oTvy2>)TH>|W1YG>Q#~x>i6R znq<_@8GSZ#pUqoi=t95gTq8WKf7Q)nqekWO{y?*co;k(l`&$aI5<7-xx%RUPxJRZU;&2+_Fp>cjo28{t~>r99+yOm1^D zRw%lEYopmJwa~mn;3qvvsrFNp)#DuZ z(Vxxb?_YH+AyZ;Og%JX+CjU$c>7NF*XCLM>o*o*~yOyNi2~Xi|k;;uvgC_Mo8chxU zn0AF-BJQB4#-BSU7G2v(@$t6D(t*QO`c(x$Z~E;i$rxbC2bnJQ4PL={Y z0U9Sov*Vl=m=2`9H1!G1lo@@MtVRs^n0*x^d_9k(#E>P19kBG2$5>RhP?Z6Dz^Rd- z0ZvD=F*v5hnOm#SFgo0XU}z419@2yF8=ph<0r)8y4-Pqva1=UlQG3QB(7;EWwFTaa z!7HQMr3bcmd2Mw42{Ev6W#^r<=c0RO z$_maD0BLC(D9qEw=>{+LN>H+?yj159jKT>e2|&nP(1u~Ad+k8PGy3PF_ck^)Jx)w# zEPoBDpz4~ybgXIl{EFj`^aOHP;Xe}eNN;&ko8jV7nQ9jT_#Wk~|LxaU#+|W~w{|`H zc(R+Kf`Wn}KPI^ND;C)S)x4TVs46GEC2AI-mk?n8dc$%%OI^&dH6>ZSGk_5Rvs&k9 z&HWcY^+?!m!yq<^LQz5rve_h(GBV-ro-ED7%QJhxbuuKmL8gRM5&+*xeuhjWDv@&> zbNHoP34ov#zrO#O`4tCt01-cy2$-|a0Yy>i+atfjTXiKo7FAab%Yhgy22vSy<}N#{ z=E)KP5B4y=J~#H!P(dL;NZ9sb)*QH{du2e%x1wT`cBwx5U`f}bh~6D9{QP6?_sP~0 z!cCjfk0uo5L`F6Jv4L>6pXO47#~7HD!8RF=#U5jSn(*$S2ldEV8U^~ z@s{|j^AzPPjO+E2R}3KlbQ`3GXmU3+<*Pbu%Dt%0-Sp(L%KFDmRli*<&i?+Jwo+nv zas7pr*7NZLxZ7?CkLEjJ`z`La=BA+{BufPlre>tP?3 zIXw>d`Q@-RFGTh5K*2+kw&A9)myh_X8?SEL-t>^rG?M$W^Rrc6-2E{BfIxJJ|IK`_ z)}!YaC5)d(yOaIVU)x^o?NW*4>Grk6TKQ z?rd3zTFe^GH%|4wP`q4oYxVbw=ks)ZGE3GwC#ymKQ z01}ISI=cw%SzL;0AU^JcFIRh)W;Ic?PIb)hkuARS_sHo|c9Eg-&k6YPH!GNypr484 zJ;TB{ZqEL5NJ!y`>kQ3dXH`Ckj@54pN&#K=ZAde4FzKH0z?S3J2^BNh9@h@;d>9o0 zRpM=wL{Es|3`eKI$N+_nRzkJ>uTEW_e&Xe-y)3>eV^P1GOaT#=ZlVAP#pYzukfdOY z;xD7a&m3(?bZtZj37rH{fo>uJ3MCVh$(>xUv{4@X*$gtYL`Rv=fU?W9Rlc2uW|>Sl?DwYx&KE+8yjMQe6|7{<6B zsBjcY5=aTaK73HpV`9F#gWF^|wNoCbVr^^EEv6w9fvpgy%vMQsicmgoi5A!EBnBQ@ z-__m=Y$~x;g2D(OJOJ~9=&q8J9*K(B;*WO7lovL{V-sru}G$eAHtY9fj1CYC$PC#H^vzfdMUn`r_69; z2rDaH%tU_s;gI+|J@M%ob%0=sTDYJlra5B##>t%wx4_`0ZOWtW%=IK!Y&mvyie!Yx zUhb&RW}<L)<3GdA5?2`y%>XVg&NOSYtZtfwM)o=J&=LEaqcs+4;VNfHqS!J5%?O?-zy zu38X|q8Obs|EP5MnI?_6uidrd7^%X@J)@+^5XDNY1Og*+HnrPf07IlC{HK7Sw6|{n zUl??&G;3628OpPlKBewm-~6m=+fZ?6|EOQf#UtCa)QBrSOPXpp{i#>j11f&4 zB@uu8pGUVmZL@b@v%KN?$oUYPL+JjSM$_F}53BoKSyg+vXaC4n*NqROzxqw9O3pW_ z1Pm5mesI)n)Sl`}9yok5(k!{N>g02iM@LThue35**ZdeYVD|Oy>U%%0ttK>m$kd8& za3}XXcS#&^+f+C4!@T1B1?^4gtu$K&M4YbPAMQNF`qv}zyEDVn<&>zR=3D>zO*hk* z3Vw%$ulB}2CJz31yQcc7{?ykipEcfGm)U0ye;RmyvGdDR^W!s?4s8eP@}}2A7W+4) zHN`hjwlHbe&TmkeYh7tFam}&6@u>=F@UjN(!L1t`?EbcKe-CwBNFTO3Wb%!ccTNCuz9~47G$M z*BBgw+pL7;{*c$8GEb?61mt?=U}hhgVv+cUd^HFlGUC;P=(vTLE@m2G@R7-;IEZ3| zX$Zq$!#I;sGEp3K&_FbaCW|rY)OC5`u`f)s6+~hH5Th4bYz~W8++0J^l zyUJ8b)NT*%&|<_>Yg^ZVu8`gJ3ekUf7E1K_K4hQoI2cTIY{_&A%uNl}b=%Mirrt^1 zt>t${&D$CC`?OZw7Th)8cI`0TCjrVy$kf1uLf*snRAQ_0rn|C++l~%vNN19kZDe7hrdG! zmg*NJ42=>h5>gugXaUxFu7{X07;*Gv#Y5$h2n_pli2_B1qgmSz^~8!jvC){~wHa6p zRjCXhanxse?2$#8+8A+@^ZOUbB2_MxYWPRs}|@F#MAk)(H%7d}Yxo_>B-=PDtGX zaGN|L9}4ABLMR3js{l}huqZmE<%rN|HNYr(wI&GM#e}Eu{8deEnN5UW-JbSMdAyt?v zfD|^!;!NT55E5d>v5#@I3^g~*EWM8v2~a1Y&^G`R1?;@&ZFh^%^f&!?QE_CvuxLp* zKb#jB=Mn3KQJe)haS&5Ka-`oXwdX0m4X94RfS6NK$3A#`msiCVPoVo-sVuVK|5Gl6O(l@uI zT`1wFKnGIb*9N72Ch{fCU3T7Uhh2;o;Np zcC&y}m?EWAc@0DhO&K`hJ5veL4yHsN#4f}OU>R)-G7Z`f1H>3sSjr3mW}PW7uHN|y z2$&imhbjDk1UNe|MG?XqNPyKYEDB3mIN`&t&b>v!v`BqI&jdz>`f}q0MGS#-8pv3O zDcY~Z4HiQ40_`=zgH%1z{`CV$U<41$r~oq*KN>dI$4@vJEle8e%X=*J*#W_VQi%3H z9IfvW5MU@Q4sr)hV_2slHU_YLAT*#0i-=ZS9IRC?rR^7mM(7`1PF-$AT7qkiRRFmv zw%$FBCl|0aLBBhI&p$T(@y$h7sNlN%?_GtReudjl-xxffcXk7f%)RkygJ$dD;x~gj zo_+sE(Rl_W)v#gs9JYviF9cjTGjnSSP8^x5QnNxWGc$9P+X5G^+Vy`~K{>;2C67tS9zz&Sk6bze88<{0nqdygpBn?gwwofM9zZSL}?l6WOR zwN3C_qftRXdPdri2v;V&sdVsSaeJ~kF0-{tlGKZ1D;h27c#_s zo4Qq-x_M0=muBn2AN3*58QgL!OK%;O<@+hQ6;T*#Y+c^pW9NFZCQbMK z2bm);Bt&Y;RcrJQ?G}tiTJwG=<(3Lg!9d-AR6 z=GzMK61ig%(@AAKLk%ci(Qo!AU6PGeuNCKd8X+H*qTuh|TrEnh?~`J6cX}B2$LhZJ z^dJ4pdX5mu^&t>JDN6iK$PaQ|AT}{~5f=#Z&rDXZ{8xniq@E&snCZwM1 zkd#WZu(9>Uh)v_XJ+e1&a> zvYT9nteF%A9@^Dpwpa43Cj{10rmUHt_7VpUOa4V<-J%!uz^^$UNsjVLns7qGP5~)q zunuW3Rl<7Qfz@i7qV0i<@+dTf!8=UgF%OxUhtQoffajYOj8ziNR>GA48fvN%a6kty zTKh8EK`@zq8bvu%-=W_gLNcW%vdCd=30LF-jNqyI`GyiSO1$>Ad(!q{B*ucUK_VZx zmjuOvL;O&Zeo2N_Ns=NX?~9$uaKACP#3&=?EFRo8NDR>x*Rf;49N;~W2u8kPcE4Sr zU9pczp>rI-Kxd{x6_4pj+pe9!0WwV;#wJ&Ak*nlz_%xPx6@g&Wl03SBfTPK&ULON! z$|b4^v+4<)W`OLT?0h6?)ftH~?Yz+h3-QLMS|TVmm8&WViM-bZktnlc*GtS{A<8g1 z6az3Id-~_wm7ioh7gu-=ch-Z4V3$Lz5r!6+uB&LnOYjjB_?Qh0x>92LSiMdR+C!wI zTe8Q|56+H=5gIU-d2pHsHM*0?mS*-yH!}8fi)sNMrzEKtDFC!y(1cBBz)pHLT6{&V zx@d1)gk;`H7${~S<=-6Bj=0e8@T}7L3*eZ;>M^WVHUM&<#EV6RyY>Rmf-PBwl==vQ z6~fRLMfOWd*`jfU#pqWNlGG%dU6i)a5iTUnRRN*1Sz`h@eNmE!J_PX3=Jmig(Eax< zlPT`WG_T|wuaC`G28RzAQHM3FX;Jv_+=!$$B#IM+8lgg)1~5d7Nq=F|`R;m&8Aujk z(hkBqjD$vFbfC94gqFlUhe}w2Zy%i6<|#0QHc`GwQ8YxJJd>{5@LCDz2v(k;)lS1% zbP57v%7hkS3d*QAlIj~0WZFKPR3K%lIyvA7l3tZE0hxt~@UHUwT~CGwQjP6^0#2m> zRu}UWaHX}-Pde~Op`+yBx*(L1(18o?t8l&orBl#0JBUy+I#mZw*r&WIRiYi-IN^+x zbp5}xT+IOLe1h|M5Vi485-5QvaVjdLs?P3HD!Yx;w*ncrQv) zyNpz$PDsQS+zN~OmL~o?qvFByUK_kjIKw9xacVGLqTBD3-NUB+4C&kpZyNXUvzN;~wPoNghc4ZS_k zBE~ybWRm{Cr7~s+Aw3jwQe5kJ_Qfj-8~B6d(+T7j4d_X(I<+<=o}^#g(obNTEE zf*=Y681fhY`TXho9$@7I02mAs39|+Shqu1{+`IaynyW4O|HM5*o(qWPN&d$)Crypq z&fyWe=1BZ^$J-{Fn8Tn_Iw+D@WR?>Vkh0uW5z81Q%?xkt{E|;%oC$yZT@mTUrq${j z?X?O6xvuYpMow$pRRj~5l+=or|B!i)8x77reY<6zVt$HCUch?6`|WG9*A;#uwqqZD zzIgZPr+;%I`|tvHr&oAvk%?eL+Dh8`&zOTJv(-OyCHavf6rfB_me*|LVD-go%dgkq zuwyHt+6VXlX9Ii8U;>Q&|KT2+6DRI2k1lP-p8?q%XPTNQjM*;>=!P{dZa!l0pS5gR z*@}9If01L(GTwtF05@4}YhD=)*0v~u@nsf3!3eQAs00A2JC~*W|IR zXEn6?Y-h0@u~zw`=hj*aYeQz#Cdq-?{9L8x1NGVahwp2BtZwc=%$d?LC^#p50tP3K z=-4M}aMZM6Hwif7f{|=D{uVU{H4<}7<=gi-`P5cUf3M?ieUf%+hHOEnLu=7(#nnlQ zLtaBU)PO$7Ap+nH#X96chKDN?W_BL_lv= z7}32-!6KO93<5fVQHF?bcBVh_uBLksFpsw2 zE3u^EHU2AAFJfA+TCnYdVQL>Icny`rjDDl5?K%XJj2~98_|YfbCyI(j!$hk8cb{vq}Jrk%vCOr1)we66ig;5~zMQ zz^t?-4qbV9Hgq8Z0ZP)uP|Q`b03x6s)`n+=&Or(K&?liXO)k$vWl@toiPb9K)~>+& z0Wzz)k=Yu|pofSGA%Gw5S8VMqtFg?>-o5}Mt8*#1LIqri#DkI)UO1tL5N}2&2mm$c z+|^`dN{Ke^5rvMbg8^*9wQhQVa7^XLMh(m=fvwAzNYIbzVWxNMf0Hko+gDdL{Gc)Z zHdnc12G7}d0(vnm^U>!gO@^3F7a;)rF^e&L6l z^KyuLy{xf15HTO$9XjR!kOg2A!{}_{3d{C46|Acd%{pyt&e%{v0J!@vYUXrp0!DQy zf?_bPtMM>>U2+*Xqd-7lT7<>mLhEq?mLCq@)Vk5VLGRJm*e&o*{o zxcOXwV2ELCD*>EQ8g$C+#x6IK#tDx_>8R`roz+g$R`CiQ{AP|VBFc)~G>QDb zS7&;K93SUBEZlrJISMj0hMw7yg-J)og>Nb+Q|=XYJ#iiLG+abJq2GzUrBH znqh)N%;@#!YG)jiJl`l6@*-bm=LOw6SI7_XKjC&_gmaZ@j#{rZ0{b|VSzq;V}TcB1zWF&=yBxO>_EDefuJxFhXN zKFb5D-}?2ApLh%FktUs^c5KudApH|MTBXI2xGTOg{W9ZQu!%>xDNUpf=$Z;ZFwh>cWnL#JR6Cic!K!+<9#1Y_|rZp4M z2ecVDV>D;au+6zxIDv*LKG2nFR|gk|4SA+hoz!#{@qkDWDk&sKD0%h1#CmER2H3;P z=Eym51cM-Dsp3#avGj7lg>pc;vh_ZWfgkajS0zNa>1s2&*EIo|B z=Di`{*8@BBJ;v#D&oGjEPXadUh5fb?%j2SZP#9;EWL50ZWc!TCS-!itq&X*(#ACG-PC} zt%@Wx8>0mmAo;Dh!iuF)Yc!`KZ~HW^pN-WN!Yd#gpvVRn>dyHfX8}+#V7+ciEW?b~ z$QoD*I*cVARZEU45%Hx7GB*ru$%5NL7Gzo|HQke0qKhJ~n4-;bV9j$#RwoQ93o{F( zm}M|P8XO4*d=}&um*50_IQ<5e+m4|mpqIq|L3}3!NyozY*A_h>H`p#H&c|NjCye3f zJqGIbq(MLlkV5(Ri!(!nh&Umj5zA@By^tkwumXp?J*cmcbT6b2#4Q!sFvN-dn{tqd zOLYdpeS%{TApu9kXNJ6046x`b=5th>cv75lo0rlh^_(uf*db%{9i+~kdlCauI5@&X zOoz5Xah>S^&BZ*h>W z&c#4ZOmOt497h?((85w`v4j8=;8AE9B<9>N#`J#0med4)W`nCx@hh@s5&YB*zW5+G zU@!lCPU@?#Fa-bktg$Jw&{hh^p1?5}Xil7TO@|Bv!p>e{IUQK;6pqa?qppF-EC`>H z?ze(ER%8}OWFc07tp@nI%Ym=t*a{+y7Ewkjh7dzc+%P3pt#kJTsTf}EabBRF=Tk}e zXEjSIO0Zu%m)Rji6cnWEhTUitVVa8iB>g04z^pV(vf?1D9?rG+#vVZc6u2+Ke1fjH z6m#diuDzeV`}#c>N3UD35rsoQf2OE0fm3}EZ6euO>cR6|w zXg(qK+it6jQx<~9MtFxFIOGl2 zo$kp?dSI1q>FC>ATh$-b=Mwa8pGLhKl04d8@M!Ad{>*|Q5%=4qnN#QbRq|aG)`ji- z5O$ld)bnyC&I{;cMaXoR~*Mls<%HqpuVbVnR#E;MYpa>^ML7KMxkNb zEX^-bdnxQmMn#_=`-Q`5znjyU286SNa_{uLeydicGoZ=R^GEAvRP#jk9hfxJX(qWg z9n6eVUA9*~-N?~7Js4zoE9iyh^pbtP!oGH?ecy3IR;}Kda6J*2%i+wYdC}C(nTO|J zsU=F@c1!8c%X=Ym+9fkn2{z*FYC_A+^kS=U)fm1*U zs=)cb)QK7*+m)8$ZUss2(-VHMW&A#2VdRq2!9y^`TK=aA!rG)4@@}LfFq*@Xlg^-) zW$hU^3on)TvU7exUr%pz!`UVzigsd`k|wNk>Dnr_BcWAtiAc`JH0YYG;3f-ORcaUjmbdrdn3I0p(@7B^Y(+QKMh`vkK3o@|ZYm7s zOeCL%Auc(=Hk<|nJoyoXR)qIRmKnI#jf(NCk96bx`|RnI?fFYUE#vXUK$pQGNF)BW zpq8-Iesa*<_;it`&#oy62iTx&eXl479qm{TQT5%>2s)~=B8+km=4m&M> z2Bi!D3dmhrL~svOD5fwJV&SOhVhH;4%M<4s#kRr3(&NiLTQoQGi}BaqR0Q zh%v1>96{^{DS|p#UZ6b*tov^GH47X|(V~dw_wNXBA-7NgMkO6z!;v9&zokf?TYM`- z?K#UPVAus14gtod!1!hk(ZvrP^-!|m$Jfj0c-2m$}fQ77;|TPYk2C@!nRb2 zM?eZc#b*v$-;=rgNID&ttjJd2K}g@Js! z+@4loSp(lcAXCG+n{qoI^%FtRJxD>x_Rq)-5mJV@`2-b_BwN{M>aKfUXb(YmI1ph*)TZ46pro&hMeWu+F|D! z#G#fI0tpUvf-^VwlSs$JX7Eg|^kThq&6w=s6S#KL#KdDE2 zEUWK$h;fJA21cNY>W8E2+6bVPKI24@7bgo?0Qr zydDOA51?ouDDDV@)H>!r^;}XB@oQMNAyusauIelA(H3HCV^v z#2v)iMJCGT)^uHGPB$@(;fw=?Y%}nKhM(mCP;b_aD6>)IcWvww-q27|?3R7$(%!8d)@!B#C9H~FEi@^nAJl3$_sL2g zJS2W}CUfBEE6pIG0}ef!ZZ%K`yjmq_rTA0By;C*FPhI1^Bd^%g^Q#I8i%;_nDEWdF zh^EL4???PkwKmMvW?VVR3M%d92I{8jIu9oGo$pN*Y8AP>@-=qT2zmr7*VlEhzqRBz z{ccWuS#Ii-jYFws(6?tnTRv_5F0McOpFYy`y}f^$t_7w`fjKgZeX{V0W2d!1u4Wj= zssqqZ*K5>^3Nlew?CLL(CN|>XH_-gLMo5h1CwDbs*9Dg$>488LHxNakK}nnWMK)w? zm81Kj=za@y<=%h!cxt}OcZz0>6leji2<{<4K!=Yq!N=Cx{=b+LXE1E;e=+dI3FIKD z{t!ciuvk~8{Yu8u44>8waw%}GxftNQ!I6ae2S|3DvusI;uh7H+AxLjsdA`mYogzsb zKggN@8Qw^)cOb<=2PwFJC{;E3r37(7vT{nMrcdU&EXr&HO^-l*UrHcxrArSl6X$+W zoVM8bX{(g*{#EgsKnax@h+IJv0xf+;>n{3A@yZ*AZPnLDXaO|Hdy0U*@{b=T4ydmZ zo24LQuHMi`iZ=Qb38B1OM*X5c6i8j%*r4Vw`g9LnH$}4jQ4~5YJq~{d27Ks~Tg;Rq z7Rf-;@u!ExIo?nj0abtQSWB&aLKDTeVzAOns$(*U?Th4kkuE;^0WX1J0mN4i1&b{q zpLSWbng5${6HCDL(93N85B<*xIDHwh58q?4NLVg=-0RO3bILb~wwJ5pXLV(+J=xmX z+Y>;;2dV54Wns+0cLJ%g+i1c!^^)@=8%RExGN>J5 zO4u%Nl;<)iO73k()wP=xm_tW3#kxF$?w-FhFZ2+Hf=$eZ= z^=D5RB1AjB5QNy1foJ5F`km_~ama_&het;Qc??2&Dh?^I<4sj%~(fjq~?ZAAG64f!^iZa#wq=lxI@C4sK&+=PWuBwh@{Nx;R+T)fUnr_Xf zDE&LM0@S5@{%6v_7X4&2A!2-nHhKGmWP_@ESOc}?!U-9J3ALn@Qf00rrs&C$L+&kV zcGvtoo^SQdesR7y_o2bW?T_7|XMy(hQ!Vz6+gYYBv8B$lA3r~{eC`(Xul~dZJsvC1 zmUvum!W6?MuBb5?22Osuuh}{W*Nc{&=)%Cv(STuE5&wtm8t7=bewj(ocS&6+2umthPjeLDe83iBiq1)mHA+v{Ho=@-6M4{ zNB_Clp%-^%3r>c%`Csrqe8Ke9g=F8Qxx&e$#&anJy~K}SJ)MG#`InE?%(oU^Tq?h2 z6tN1RJ|8)AE~fR$=h3V}N!43fZvC#W7JB2p=<4qiR{C)zgV8Fwie^j~JyEdub>c0f zY5LE5`ree(<*V1jekpqaTV?MHgOwtTjY5@mlk#KB;%(-Pk6tj=&@df;rC!a8Fjr|EGSY zOG5636jAu2yE7qfuj|9va{D{Nya0MF-1I2o!^oL<%2o=;sP~$ znSd28*m5>H+hx<-c7}@gTN5kn-0ZLFtziW=!-1vLOoq-qnqy8~HuL8>fJaD$z;~id zFU9dyz)y8rUmR2$ZTg%5vscEU7%6m^qK`lAtS+Proinv%{Cfnj!T_@XXxsBc-6r07 zFob^_5HeCySZ~PLJcYp4yfJB)1Qa(!Ln&&R_@P4v^350F;$xYvybllLeEVt2O5HrL zyoNkrIDWP;?IXqSi<&G-%T0lRv|<3afCMiP@W6p=O07MC|14`#gp`XZ;JAFfaabFu zqHFWmbCsyiR(UNcim=L8{y>xApF?AWNs4d2f@=;^H)nO?<{3ypx_d?;@rR+fUyo-~ z39tG2k>-b8rz6O<=PH#`(hqFFl#_CDPABdyLH%}+#w||ac1cz?bNyg?gR&k2&yrZ& z^km51k{3fjQ)mJLy%&bJy3Yo%T)i$v z{duKM5+?tW5I3=bJFi;dnkyuYp~6%4SnD<#s+ke|xziVheG);6H$OA!&4CLQr|8_=IJ ztWjWO{^01wH~jK?OoE^xl92;7L`8`t*a1jRDFNVUpq@|!oE4=GUsKqQ7oaW}vIyVg zR<^_WL!@+`Z2)$bt6^EprI15HzpgCjgl4roKgprXz}cR^b5>}lhsRHW9LPMxkg>33 zZ^;Kjcr>^HgT!DtfQBGAVS(VVg>~U85UJdEaI(coo}rBaVnt28*SCPXt7s*jH6*9~ zH1NtDX_F_L@qR7>Q0SQ9UrjJ!d2GV~QzVHaO|@Wn~mtx4GMz`!@pH z8XI<}ONT*$nO&p*lC=y8&DJeAJZz^buS!8DxJ4i-6S5%3od=K{Dc#KZ7DdPY7T7

    #Bn%C#o5a;(LF6df@2uZt#hRgXo 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 z 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 fXxq;G-NN9rXnTQt$CrDX;i5f<0d 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μ9)ABNO{(q_HuDr9h3Yo2n z8EH*yaXkrwu&^zXC>wnrZ3{~xMb4%giR<@ z&iE)Cu%coAn1AFxEQP*_W9y}AlsKNc5*{#bwH~?I_hMfikVf)4BiCfZWt*-{QYrr* zGisjA@cpewNaG)VIA2(UYk_!Dqp|l3ACErL&2M!o=w3*)!j&$+nWC2k`ZY5h0%>y^FIOFDDydScVINwtUpM?%H3$T)bXZD>z((r zzlnH3jho!ZkdpKmvz*=;BIKzE(@~>EG7P2Km)YEZG)Ym!2^L5m)6n{Mb9{}!O)wB& z{ci9;A`VRIL)VRZCX-K{CQEB)|Cpv%*DF@{7 z^!;mx6w_Jfzrz==_)e4GwPidmOb{hU5YvrYAvnVbx6b#8>M7 znIDf!eyTQ}BV});kKOjHX&lC(b9qo`CEj$+MwrLNACluAqpNi7RYf4_1wSQ!WKyPG zcnlC<=@%dOJmelG^3r=Xhm|ndou&Yb9_(%7Y`@3uPbr>y(<5hJY3^C7HqUGpJt=Vb zrNz^#!{U@$im$9B4OxCU4bqmGy+V^sQu0)ly(9`$UpKSZ4f9bnZ z2ebgr;!AfrbtmXtt=;y#K*J1Rf78#vWH(N#d&j4#!1w2VdV{d&$f+NyjSZ(OOuKiw zMItL_DJh*MZvtzxGrd1=TN?7_gLz)fjgBv;7TlsH54dT7vcQEJss5u~O>->O&F+9C zBCVG$Z8q2+5WIJmxH3B=S!HCv7Rj1n5Qh?*Yh5wASr?bN)bi||k4sf+7Ma50WRAvf zn^xY}HJfkmyou`Q{QbIsnT{D>qvzd+ff9<$L%r8_cem@DFu|}oZ`=lH^ zRyI>1r6|B^f%{NNiG}MQhDmZV?xe#FYuCt^I!4V;P?ThcM1Hy2zN>|)Pq8~G5Ut*4 zmx74q84f%PVpv9eQw_!54V^8-_1-?s)v#fzDKJ2;20W`6up!|4iZ3BCd3XHRDRI9g zA?_Ne^V|awgp}`LhiMG$#3HkF7-yC=1Q-;OAlmU_hpy6s_ zRp^O29svCQyWo@czNqc?V>2w(VA@AO4+JN|uebWuK6y4qt)AmQ#j=)j+Hrrhb9%@dsb|pV#|q znMzdi8ll2(X0$YZ%cp6TG^!IGD?w7-FI)}OS2zaj!mebs73Q{lw02svsYU}7vHo94 z6rn6>SrE2;+vz&IUsVpy0gs1nA5RfOWB#!##mly$_BMd;O1ePOgrD+~*Y=EVSL(C1 z)f*32zWwCB+pACt2<*GDWoU*(AL~?rB55C` zERD5leb|=9@<3cOpQ$&WSah^uzgye_cun61Y7{@VKKe;duZ#EgOj(EA5HS73sg&6j zJC~DvnZT4-BAK<%FaCWuT^gV7T$L;fFvd%(G}G!DaLdI*I(nfu^MNVC6aUHrexJ~p zwD8txp?!$?1%uKf&yk)C$bfhLo>4y}O{izaEVcrBVa6G~+k>q`$tEi**Ynf|pbc4Y zQQGs8XAAz1SDgzy9mH|kRDP_wvKXok{O%tz0CBCp-D5O#xa_a`&9u3gsmSIUE)0!! z?!_vF9ex$R*HV3!q!w5^tPOf-6(Pmw@ul}xzg&>M`rp-jN^-6y$Rl&7`DpIfNqP=mceWOp-zlp>%azhdt z9A5kCagcOux549-Y`AwyC89XJ|9mcNSnkdIIKv2v>N;voF@Ts}N2_+3cY zxH@op&|#hy*w}Nx@2hM!CflSOmtmp+TZasv8f_qAsY_N22^6OA&4Z!2%2t(?6}!xv zI%p$J_`pV;@nI&*6tiBv)602_Rji=;?sDQLy(eq137126Av6KsG{;1zxVKp#m_vUN zz7=IFiLEwcxS?)sFdqJFGQP9b=5D&FOJ*b^TiZ)Y_D;Ky2@TTOEy;XvyQbKKVx;0) z`7LnX;(+77jWG}~!%C_~Td}>l-Sgm>H4~BBoW8q{%px!%6lQUu2}XoEaGa{p zn`0^kFdW+;XIJNnT6iMYo#pO6rrxzNlY1rQSko>rGE7%zY_#w**`P8B%x^l$k6wk1 z-}*ZT?S}vDgwyviTOt|k1|3-)P1Z)UsD;D<{ctf{H4OyA82KvtxAM$}%GhwTJktr6 z=h1uQnj$&K^VO`GyHq$~yX2U9DyV}0M#W6s_u$?!B|{Vf%* z7aN)7jX>6{<8V)FL`0n|(ZNwa@nJlsuG|=lJAMFX5yBL!Tx;_GE}5o{^wRWV7%cTV zoby2VGYGF?al#SD0=57y^*MRLLq-#b!0Q{fm1@fpx9sY6z|=f|qojkz#PJl1=;IBQnd z`3_;^Hv~7@iuE@I4*d`eudiF?nEuhFkqT7M(V%$|3vQEBtS2ipKbEGerRClZnaox> z;8bhZtiKsAJ;0urzc<>cUeCtHZpf+?BRZ? z?(Iw6ux=O7ZGkK^3qS3ukSb{ecgo;Srb8pfVrm7JXyN$~YlHeU0}lG-BiDusLXsM1 zlgVbRF>bhr;g1E^F79iS#3iOgRpzGS{8HEGnTJm z0qa7j*3!U#4cHA9d@FY|^_5P4?E9>~$E+J=k>lDV z)rK=9wkA7XOBNxXJwav0OMiHEm;c+qMY^DK`N#sJ!bEB!raN@ucmagDVgmf+SYGrQ z4Qp0*7bY5f-Tc^1PFrND|JG$C@2AY_HZTR#edGF*MJu^IY5fLq_^&<9C5Ma%un@dgo? zQaU}l6Pjf5?eHhaz9B`n4pW+f5KT$JfqM}U8gXA5jfhiVu?_C>F`X|aVwQP#tS4=x zg*IXF$AqF4=5EAL%a`T!<&*RX>~_s0i3{#JM{nKMmLrmZ+hPkF)F4Kz0m&&pVa~?!dyGn-gV&O5ow82fgl9fc?>t?A zQ4Z8tNRuRKj)ct1CW+#3;#fCe_t723Z}2r?#Q|f(%P>oO<&}PprsX8ih|6tWnLlT{ zGQ@QBazneNy>Z6GnNs)p2oN~fQ@rmT`};~hsg=crtMEGST6F$(1D67z5=Yawu0S`x z%89DW)1>$KOakgAmWB@dvd*i1AJojLk;AQ=W@cMLTlXid)c7_VOvXIB&v?LW$Jfz~ zOy3X~`>JBsMa+}Q&0JJ8Y#qxi@m9)=)IQ*F1Jk9!2%68Gh{m+uGF7L6f2MO-T=*vF!UT%AnDa@dl91VvNr) zg|LOFeZ*(fx2ipXQp}j@UiZ~B|n+6=CB_( z-3!LIS4QJlrl!X|*NYioq|d=HGAO$?oKLoY_afDix^>`k(*0)lw9@s~BDl-iLQdpd zl?c9x#r0mA-14xbUZa9C=xtLoD&T*y29 zEIY|eI?Z&wk zG9Bt^iaF)+>Ub}0_=tFdSfM0$K7(qz9GTk>Oqx3}_L(sZb@u7wQ)OSTh?g6r zpJG7O+Omh|*)t~w&OnKyDQ|y6dWlI~eLBTZJi+M-o+E(G_#5|_{ACx9KYA1vhvW0$ z>Z=`@1J)+ujkoHx9Zq2}0Bu?EA0scf@$C?)h$Ir@%)M{zGiADL^mb`*Ts(8TJ4i=R ztuv<2Wa)$qIMW~2rR~k)H#Mp6{A44w@tvHtkg812@8Ujq7Fp78HLQl|KMIsL`E8$W zaQYT2_@F;>mp#(e9bpagnTHjVT=Lg6Jkd5HxG%SgE4EQ)UCCUdlKCs`t7FErtM4vz zpIz3Zj^!(_5ZVJo;}!c%07!osQ$8!w+Y@RRZ4W=ba7()DFaP4p1BZlN>l+s;MsGY% zIuK`eqGDtC>&kMG)h^R9ugSfA=YCQu+gpl)J0{-Ny{^dI^`h~U2W|~eG^_}CK4D!E zGF%emZti>I5B6~EfhG!kJi4}|Id8qCq_Ru5t;At_u0Us2Yc4^O3=ktqe#4RX|33Wg^OuDm$*@d(<$U`T$OI@h1mJTb)?Sc}h~A9I zKjUHEE#ZmB(_a(P9Y$CjbL!he_fV-1Zk_J|X^C#mL3J5=82rc`1@W<~tB=*7IhnE!%kP!H8$xYv?zI|#+gv*=m zS6uDI<1mn~JNWg`>}h+R{9+`J`a5|&%4LzrMCh;er7xb>;Nf4#9@1~dK1-y&*T~6e zEC{{&{cHRaM&8$=#}mp3?w?y%n!@V-h9H5ifPZmjE>R$ruen5+{hIjK@Q6sdvvU5A zTLC+HB$SEprB;e%$T=+Td}RQunl}m?PG;Pk)F7fC3+9eJ0?XZdF-44&tBY|B<8Hi*W5222y5+PHO zry8!NeHa3Ab5k}o992Qk8s8gx8Kt!~dKV0+mhHOI z=$BGGm9!slU!b#Ze1GWRxknGTB`ON-xbAK8p`zW_DWs@)bFL-XW^p$ ze7e-(+bt))<4xjCq*pVA545MjQ@4fVf7XNsKTIkkuWedL?_V2N>NyzO)actdg*R3}tFT5@hzQpNnyygPmCTIIjCrvC)%_%u~$(iP7;wQMDYGzUneKdMr6 z%iTm%hKqtD>bPz_ifwog_tvChkv56PV=&eVIj9c{ph2jcUg@wKh2u}x^Wia;1-pE>zj z=TJzEhkU7p2kEy*u>6P$yGLF7Q#>}>iG2#S-4zZpIr~K_1wJN3aN|6)SKAhw84|M} z9JKOf52*_3SG#tcVN6~Cd4f(`RldRw9vA4|ZeH`M&&TBd-E%%B>yfr!UV7i&sk$X$ zQbqMGVvW9hrvvNT6TCTmZ$y@9uxK z2X541o#2}n9|zardGSgB#d@^FiUuB;YOW|Kw2%2zbw z)yp?IWQuyUoZR>2jzxohpCy;A74jjTC4#;mgY>2oRg0=^GToc0xa~nSXyG{Uu(}3J zG2U>;Io3^5mDm*HPgg0pabD}-ypxt-zgY*^>2#;6*be{5OK5-!EUnYR8S{vL&y{hN z75Y@iZ4UCl2U=6LdR`k5`ukZD(9jylSF2l{`4T&_PHCk1%@cZfN-%F1sqTx-@I>(> zQ?D-p0){vR_g}OoQB0#``U@{oA>pQj4bZE$YxjJ;PHcY0GMKVEhxCKnxiNJT0YW`O3>^!I%v^FQ?jSScv z>;$k>_dXcEkjS{SbL#;KB_Dcok{7&|>3KT0GOcg@N4Y9r$tUUTLfX;RDhe#NiqCuc zJ6{?{#i`6HU3U0sD-3wY{HAdY-8vt7e&7dlqA*ARSm%@*Irhshy9Js~-uXlN>u7%c zu{_!EgxfVkK-i|LaVC0QS!HIz6V*A9BiWlhYq8L;O9fvn#BCkza*8KX;?!sJmsBW+*BkD zcw#f%jXvJ2Tj|Ql|M@cYK?blgwJR|3Y!mFmMn{nPOs3W-1 zUipFHy3KNpmH!IHP#5vvz~{S1FdCuUz8O~=pcB+2??Dd`@l%2WJ{B66Y?t1+>-I?P ze(>8^l% ziC!P});IbN4!Gs9Mhv^Jo9r6|@}42X2dc~5lkDP~^1uSBy%imFLqfL@c>YDJ$du6c zNWBuMQb?P%Oj{%Yxe86GMi|v9zMv$0Nm-VKI8fp<}kl6NONY)~08iI%rySZsoaz9Ob4>Cstii@Hus1`zqro z#mY|tz{fwBBx+*{nz&eD;Z49>6m73IzitLfriDI-h|)vC5^XR*LF1yY%!U)Chi%Fm zg&%A{z!CvfO`rES;Km`53Bt6{nsyh+cK`)3nD-7OoD^{17Vii`15$;$se0^>!X`Zh zZjta!E9!A6CqNO+F%X5VE#NIkx`A+XDT#kPmzs>YM`fF206wXh9eq8LU_c_P3=kD~ zi3sJ8kQADUF#+!TGDDvTrF4Om1_v0V@o{J*=??$sJ@l|rH;hhQ${7IUCr86P_HXv>O$M6@y*WM~+;6RnC9R!b9!Rbkji!x&#m z0C6o})u33Sp>+%kgMjjMhwj6fBNv3lN|kqh2T-XFj!^y{xs#__{HMmZ8>V86(QGMi z9|oA9MM~0tFpjF8}yI+*7G06iM}_s;C_ZL5fqotCXX3rp zI;e(`HuvaG6wvq$VyT1o$8Ts|zxd#h@~0Z4{+KZ9qrRG% zGDqP;TT(R_Cvq6kGrmExK#b zy8DP0OMx?RX<0Bg6_;(=FA#vIocIPfjTiZlme24x3uV-JADS)}Ea#x$P-ffVTnq(9Yul7n z);Lt6AGBPYXSOWo23VvI z=IyTy(}zw{A>Hrh+1x2%4F*}htTnKPy!6q7n<(hwNfsVl`{s4r75Q)mh`tHSe`H3U z$gB!?2+4VTeL=w26a;7jv9c#A1toPOVV%N(0^#N$bVVUpl%bp>SFY0r$7}BOSWy&ZkNmad>+No%VV z6;OrQs0SsbvT?=vtOb?XWVz=iX4t_jUX-xyEZS>@jlv=R;E5lm?rjjF0}+c4WOi2? zh>sx!YfrTOS^Qafbw!(7K*=@>{9RtE)i+aJ&gCWTg37_AuH0Dt1C~g^esHK5M9!R! zN<6XsMuD$t0rxS2H!TV{deJ@kb<#XoR1^U6U;1~HZ$A~b+W=mqimR`EmNLSMKrDTL zs8RSy1E}pq4`tsnj}TJll&KK9wh;9CYWXVY)Ew*a-+`bp!bq)rt{IMGP8lHRa&fCk z$*V$RdI4Ggy0K6it`rfSUB3i!@ac+6?p$hSM*Z;T)z0ISdx$_6=IElYT@>((WE+~= zc6+*dIl4-|Me_b-O}r*66q;p19UY)uUb^`8w!MFa&s~#C@t5NsVRb)YvcE3OO(KJv ztN-4DKu@3=nxI&MuHZC#YF&>~0q)TV>BtiIIQ2Gy37@j$`y%Suh15i3%A+%D4if*~ z2JR7@JWiPTXzk&~6?zfI-H*`%KAkq(UDd6i6%bdB9(}yw7)UyB{w+&q6wWms*I0xY zY8O;0QixZ{!cZ-Nhz6>%x)uD8CT~!s0_qjDe9m4n@j)woG`CwoED9J?0GszAu0h~$ zj2N2{R>cZe*eaR$p`PY0kr{|j1aUw`fJMf#Xi(3esA+&OPJvf52y9zU4IF*j1LfB! zRX)%#>pmv5-Ax5BllJ!+b==aC)HN-8t@(-1<6Tcaexir-2cayO#k@LllJb3pA*Ubp z{DssCueh&ex;u1xn&*~f7+8H4E?6rMqq{(F=mUi&s}L&U#dne5%MC1j!T3|+}Fv+ z&IpQ>M>Ptz+oP0Jgc>Q-PC$6e1gIv|hUp0&0ZR_s;`Fs{oKSn;?zkgxmSLKiF>gDP z&ByD6!a@u{%ncSOhusYeQcVqE48IhRyL-{gXir|MdpL*_cA$;u$c>F=GK zB&8$nv51?c?so?%S5g*wYWwYc1?lsWc3*vkfl?kesA;F!+-Bdtk%zC-`Yb~NdVu9` zP$LJ%rx8)nY6pqg+KJM*I!e*%a~-!Yeh)fn=~oy^D7l%e;FGvi4ezD=W@q+l`Nd!7 zPsB-{rq;LXH~EfAUbd7`lg)WV?1;x;Ny zZ?^*Q=*t(sda@N=#VJAJ^$WPENLFl)0#(sHp7M3wYAN!k<0c?}D@aty90)&1IYcbK zjl|)L#Lq8(Fw`A%MbJcLbNrQo6tiBDrW-5w-;4gS#t=tEK%oqWP6@N#v^zz2(Dj4lhspDcKCDvT-=|66)>|Di^X(D=_L6lqhA zTE3`=-njN56S>~$M`zw~K+3=+^FfAEcxlOiNHA(Le6qFCdtE0lDlqg%%;+@vW)%KohrGuh@h_)^?Z zipxN8nBoaMfANbGb<&^7bVt(QoMXxK1bv$pD3;JoP!j z?vLv30DW~W3ef?Gf@K4r04V#|`evSj;Bbu&$g{T#(=oQpl|rexwzA^!bRhO&DB_4X znS_N!{cy13-!}}VzBLXXau>+>RV#+4Vjm85wJt)xO{t1$BjQ<(CMC&ZSG5uDk88b0 zAO1l(R%J({T*$z&Yo^;)^Ke+uK3=q8;@@M|+9%zLdIpt=aM_F2&(GiH$J-qc1CgJV zxsEa_~8t<{g3M%MBOp_ zxU}O=Pz|4_{Wbov4DfKb``*Sqx`@{J82tL@=p*_^;iGANssf04u_m!k5rNhX-^%_4 z$b^}+n1_)8?8!KWSkEV0zzby|rHID>41}{9IEWRgiHVHDE~Dwl4O9P^+0B5c@c*WbmYRWERhHyJFdu@jck6_4QmTL|UZWf(j(x zQ_2pp05<)5WZi@E0Q|9RQz198^u0Mv0cvfZOm>v(#3ZJ9$Q5y`fjK^*6cMQt>NryY zaaf~I2>iBAmkO3xf@^lrWkMtddm z(0VkB^;Mv5v6#pZ7UQQdAX_(C@5<|iRHj?cx9zCtdeApU>$#~HUhc0LDL0G;X_*2Z z51-21_w8Po_P(eKDmZk}nv${ggEtI}PAC~YAz-etjX^(h` zQInJkCozO~B0tu-J>2eAhDLBsFpi1H3hAKl)HgKR7z{@(&$Lzdi-z)h}M%MrAFsQ6B%C?u{8SjYr6>T zwZ@;R7v9&9$v9TFIJ9Kq^}WM5UcLFUOel_70k&oQvzm#F@*q#-%^kqlAIU%js*{RQ z7mSR5J$k@j)K-LhEBMJwG0GwFcRsf81JZEAr?(@o2Yf_HBi{u;%z;yY(YGIGN;iJ{ znKW~cXsaY}8)`gy;T>;T4o{w-k_eP_W^k9JNBYu$*dXzbzOAn|zDRT%dkA0U-KQm# z3JW4k31KuQz^9=60A+_rZNuf}$r{k_wFqT=xs>)1WiPCkvwkwgYmrk}527@Vyp>o$ zRFSmUxV8Oc{y$01{{5t#^D|xw2;dza5?4Wcf`{T&V`qR4rix_+kaI0^EnMm!EHjx+ z74S@Ouz0hAv{EPiZ0R%M;v&Pjl8DY~+6f~+LBL%Jt>G%>hK}pNX*byy_E&Q411l(iQRJjWjOO)_DIc-^<#aX1w2nB z$owOnRGcU-=&+GD=fJ=;sXVHGt=j<#*b>@xOZOgOw+~?JHG1dQrT~p%qOD%fqx{d} zb&Sa0j%1Dae32=FKFESv+Y(Rv&K+&_t7kZw%T)yZHUgB7HnRgOM(d!+G*aG5Z~Ftd;$QA(bQIT}7af_Uw@q82^vA2>#@M%zSBStln zdft8V8y$zn0=Xe!SpdCIOwIwPybL?}zby7Qz$%{x?ONv;Vt$e;^y;fh4rXBxD;c3* z3&YwLr|3?yBdSo>S~t%sCT8k|cs>e(dDe34Hmn}1c8B}dE$!g? zzT3kW_sAFbH1+;tZ<2UsOB?}yYTnGOtZj4~mbh2U#^sau-9U{`!GNPm^Gd>P9l7l( z)+d3Y-|GLwf-bW}B(x2|g=~Ln!qr0iebQAP3^9ISshmQ<+C6x#xhdzyYk=$G-!xohv`VlaEUU67R9p|t zJCs8JaTGtG?56s)D5c$`cy-A6)xhA#3ZtUafTKZhl6}^lRzJLlMQ{HiGE75wGkV71 zJ(qGd@2JOpW@x+5X}`vNRiEAl>Qx=dlMUFq`TRq}#hX)3R)-<8U(Om!3D8i-W2v1n z^STIIyK#wHHDu#483cl&aSz*6*95=U)VBCF_`I@>VH^UbvE0t-s9gfiKKMYq$$B-; z9Mm1{oj=)zS3cnD)U1EZu3&CW$@}A5T879_yOtOFhULN6+L-_LyY0!WMNkxqhcHF2 zLC5|vr!U&z|17XYKEps1tu2BpB;Wr%K8=6~;{JJPq>JXzf6Fyyh=u=PRJ)}yApB`U z-}u8Tl6gkv8LFTW198>}eiE^UQ@K@?WbrzI1;i#b#BoNOE7YVOrfaj#y8a}LO%@7IVhqCFPy zual#(g2e}|ZEM)GfzEb%qWV>P8DPZ}=pIUx(^gg1nOwQdc-8^*D@i;S<33!=sKkUUx52hK7YlEOr{Yn1f6Pouf

    w{Dnszezd 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 YzwZ79e=Gm4{k`Ld(~pUt;Xi-=FCw|iK>z>% literal 0 HcmV?d00001 diff --git a/openless-all/app/src-tauri/dmg/installer-background@2x.png b/openless-all/app/src-tauri/dmg/installer-background@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..60fe5c3b827d4eccf11fff56fd21b66daffa1bb9 GIT binary patch literal 1905273 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 VFF=_mAO-&qS|dMinD{AGLv@4d|Ad(LNJD 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�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 z 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�q$Bd^UcZsXnKd;T{nS@--yyT1P9{QLjRF8$!p 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 z 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

    S85~?0-7UE|(>9qRB^8|njv;(aYG(k>lnKZZk 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∋B*vmqAuFkM*J(;ZhL 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%0A2|b8~xP=C7#IE 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 Ho|LjEp?kb^xFn+-cuMxBrH6m%&?lt#tp?zNv5L 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 z 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 _}5{4$CUd1zUrwZV* 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

    PU1CZ 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 ~4UHeY5u)U9uNm4wW;{ z*y?8BXUF=Z%_E%Mu}X1F$crF6$;>KqtaX2qA<50QNNNQ(xE#VJPWT(_F39S9`Tt1&-@A52s1hFSshEm`6Eu= z^7+-;=k}mAhre&1tS$wS1rdsJox)PU_so-R$v8ohX%uxp1&dI+UZ~}OhpR$FGO-n- zzjnZ2%ucs_f5Cg7G~eSiB_SvEi_kWB|Et%j=npR^4Wk$lw*@E;Qshw(cWGrH6qd-bI@NWa=ZNF zr3UIAEsXBgT(n%MYqDT9q^4aCMFKFEl&NhJF_EccluMnl^^1)icjj2aI%e zlYi`#X09iml_y3H63J-b=d`-YXXJogRRw->P~HNCKV*o10=VGa`}*p17SjBPUWGl| zT(dweflP&6gIfeLRP*MC^umQHo{UwH;)z|cak6Z1b@YYed}^AVaWGvrMTQ@gnBf38 ziSy@X^*Nn}x1_VV$_ZA7W!^!Nmm-C^%(3p`ot?496cuB+sU8S+tMM;;^z7CgYGbCiA4pcqBSW_owXuZB zseGqt-dmDw*c<1+EqM-gh2Koop^~7K-u0(wfCS@fIKUdQ67%=NQFd9IP|S5mJPgi5*CV|>QQ?>^4)TiQk!YfgD>193*_E1nnmSq^?> z*JxoYa*%kQ9o%?G%=?w!_9(x&dD6X080O|4rnC@k+!6Rkp_vZ2+`lK^nVf1%PA9uY z+#3j7g|*Z`%hFSaodL5toyu+2h04E|=HVAwuu9l32$wzxPjfC3Wvdm^oKyAXUwxWA zqM3?#vVW(7pn`Gx)EiG|5{}cOX8JA z#XPgDg|xU%Og9Ft=LOLNxxd%SL)?J2&CD<2-Q6*H+P~M5|KHQ!BP;+qaLd#X6bhdO z%4LAqi)wDrk^`Kqt=k;&Mr@IfUavnP$zy}aHg{ve@+92^Q)>cfq?O@5&shmz-oQj( zFE9*|_8n6b?e>04@oPF_)IOk6bktbhBe%Pyd-cLol|=d!(d(i4O!2LM14{!Kb6A-+ zH+$Y#j(-QIi-OHS94xzYVxzcVPlS_hK|?`Sj`JWL#Cv&26w)0cy>3ERN0n@vIoFa{ z&hLp(GY>F?-JR`ZAR+17zxWE3{ReRA>PkM-%J{qBAG6aGaDQY#>q z6}^qKJS%Y_Vv`+YSrU;hFRX0M!6}O5-n+i6c?jOb|em@;KEpm zCbg#L{KKt05aYR|-MHW>o9Gqpz9}1Xq71WGd)($A`Fx2b_M*$i$6|~AK_`m?sUeSU zQtm(hbWYspAFUE&CH!)6{_Mpl?KF-t+ZpT9PAI()`|n9!O8k{1A#}6xR~2>K++tM{ zbr8&tvrWx3*;a)yZEsTfoO&4}S?qr{=#DmIn{`f$#hEJMwt>k6fKM;9gXUl4o0hQ_ z7k_y78=3eG^uIj1>NBEULO>BAJrBcdZFyQ9D@`2PuM6maXyJgAK%Ya*iG>BTUl5{4 zmpy-=@TUjt4$_x{G?P7OqU@Qb)AAXQg@?V>VeLy{o2(pv3TkPE z9)pas(9}oX$2V4hJt@f}n=H)buC}yjSV*+|6@;sDf*{Umg3%cnH|@L%Z+CPV{-o~Q z)l+V4ieH24-hH;`+9VaL0*1hPavV0!ls(=0m)d?^lUfg@YnWJ*Ij7;B?PgsGW%mzj z;emq4Qf~`+`O^rSBNr((In^IG-bFfvJFeDLor{_LKf(Q;um64_(uQ0!dgtz|**Rxl z&N{**KmwWT$&Y?oeCT2yZpLfzUA_H%Fxa<#X(N7q^_wT;>QBxEdCAZ4O`oSGx*qs7 z^@B?v96Ct(SHPoqUce6FM_McU;lD`Tq=BvZp(|&)^aSzNYcq-o_Y8$$U_#(R+3Ev% z$mL<{PeaD`4sf4JJot^?pStv znsec1X?-QA&nKw@+s6L+InOmbM%-IipuQ0;{WN-aD0+Q%<4~t&)3`{}s~T7qGZ{Wm z&57Ecj?O1W7Hym4fS_FEQT(6WV55C@hI4jU<`C}wb8dsh&w7iWVXo6?R1&Ihus>^Kx5HkLT1QKxP)TSlq1@Zs`{a3l@|Kf$ z>uzIXpn7aiEEqRdcSu%@aWL{yNH97Ed^0^3uNmhPYpF$XXT9d4Z4V#Y8EW3$v$|5B z*0;CVh15b*cUz{6^bTEy52LINY!tYl)4_RbEXB%jBqqWcRWLE0h{ZIHj8-W4+wIEc zNQ(&c2-##jvf!n}i)@Ei4fD~uMrSe=AXU?IDx^?-2OB(cLQ!-$XRvsFlCS4XzmyUA zLn1JNs>u76wSOF9&MIkzs;vi&pqHF>1=1o=3q_ znx1CPZfRNid4H`Dt|mO(Ob`x#?FQ#U*^kFr9U2lWGVx?olA-J5|HUWCgnYFL%pFg( zNB9T2WiK4brACl>9F-;bIso%RACSzh8Ee7PLFCm1Uii-CKv~Hp*JG@XF%wb|EMM|- zH~!zpUyssf2j-`ozjG6qVQYs0bmLt8+LHeU5Zo>EL=KC67Wa~#*)r;m@8#aJH}?4y^(w|ulu zp%rkvHct2t?$vSAHLUL9g+*4RKO=<*_|#cv*NDj1MXQO|Xd=?c$CXbR3{A%Q?_7M# z;<9^y+{fR0F~QJ9-Vf>wD~0lfB|)cj8_XU{XdD+jxnGy*N+F>(k~}irY_&@?zm+L# z34?Iy!x;$~zmW9w2c*#>GXkB5rb+^bFebn0IOSE$Re?OT43fzkqJ55;I(>V#; zObX3t`pxa`ZQ2@5 zv>)3UU-R7XtV{ylLY+{&afsdPNI|VSIVK7OGh>P07Ozh3**9f*f5{FKU?fF3ym5C{ zD;i5~1_nN)$rO@YQF3>CsJB&owzIj?!qzbn?&13F0#6ku+WqycKliv(Zw+&HY)!i{ z#)onEOyTCli`J!u*&IcRStdFP9#2-ZD62h9^qv76*z{FdnbAc{3&Qn_^C%Z1IchC3 zrAuezu|!mC=O$-oof-O{bHU!7gl_d5+yPD1v7fYkUR%})Xy6F{&gl@`xUnq+8f^h> zDrsdfpu!oZw8I(k)MK9KYWIzRSOKj*F!PIC4Y}OhXS59EGYxcY>7bEDOC8ih$cSFl zcTP8x#^@$m7V+Ld`PQRucDko%oW|H+b`2yl3FI944H(9fT|*ifss-gd?Xfn;WdJ?4 zaLueWXGWZ*=+D`w_a@;h!XMpI-Y1y9 z!j1)0MKnb+Mq3Dx)naGaMqqodlg#B#s`;m@7ws#^r(6!Cn#)gD8kI4Yo~r(8%04UD zfyTu^c@^6U*e*ID7NgiXXT)`;@E_SZJST5IVy2pxW|;-2>KB1(jzUVET~_IHV^=@1 zu(16CI{eOf%y^^3vW)*o!sshzTlA)F*`GD)WHK4qs}3Km6h8*@_Aa`%FOXVZ6qsW*qGRa|n)Vgt}%0~CI_2aCuuMy6N z%PWd_{L+At*f_M??bBbh5f4avEK6e;w=+6Uj_UcbDfFs2F*UMxeqk?a1Vwcp<$;#l zQ;x7QeDBvRi5#}lxD&twsNKsUZ6G*AU>)i~Lhm_ zTRXEJJtwk@bjd?tDU2g*h)3c*VP5iNk=wLetp@HtRXc~rD<1mR+FEwayw?UVA&QsZ zYHumVCbz+8ZN#0rcTP@AQ|MTZ8$YJ zm*T!~4QJ8zY5cGEzPRQyc-CG46!Rm*HLxJPudhX7AMw(hBbq%h%A~^8$w)fM)WsJX z=o?k_F%3d0k}1cNuCKnBJ%eD(gH)Tq*EMC(wLd)UFtMqNOh7~xVq)y@adW|pP$1ryM8kYFFP{5Ii>ub?XwX%r``=9k9AofSwdg5}fCB7RYT@9>i~dZ<}=R=~kl zFO2e~41Oo&air}6@?aQ#24cxZMrHOhqTQf$opz+9W%NnpvHM^7a7SGnz9Cbfpgl-E zURaICSG1JO$44oTrRBdVdADHqPBuWoMD^<~D5?*A7FbbNp2izLY!=TjJ#0qWTVxTd ztP#QPzIysT_4}sI@#TG3J=-r$SMGPMG`@apr(q`fo;UXeA4(KO?83OcrOfPHgQnMg zmu5yA_{!nvH<-wcBdxgU%#I``!h(#Ot2O=c_)3DBHesPue#|{n$!#^vU4!I(UpmoY z)T#Fd#mKnw`xGf6j`Rs`SxM8s+}_{WB7Za<)|M7!QZHJcEtS6ImH5v*km>31;(w86 zA95Tld5snK8-Kg;$XsZ^KpDdDdzt%H?)_!eEkZ-V`l;u6xA}*ED*IP#YFch##s<&L z$Tq4!HyJZbtPpPAtmPH_WiDfWA)^mUKg&X(0(CAEY(?Hu15l2y*1pTG7^*+oB7 z8QT$YtHrSNV(p)BHC^eY!|HB1Qc?lsv`V^GYrIpD*FGzW9+RaKJ(^Wn($l~4UBki*V3cHI+{9tl;ntGR z{@Nt`YTB7T|vHx3=&E=U?zq?UQ%|^CQ&8AZW+L$VSRl9#;T(A4w zMG%Y5em2;z*1DZD+@$o!7(HX~Z5;JWvtCO)?A83Z6rv~@jTTQox4kASU!jNoQDJX( zJDGuvzNC77(9CUdLVK3|4->dB`9N${_QII9aV+X7(jvXq_DfIK*~_V>;n9^rSZ`A0 zK2ZUe2=W{1yy-tvh0zBfEXAUP*`R+E&d!C6#;U|6hr&e<*y7B!oxo)kwJ*Z5(%U;* zsaN)OH_!PnrkKMETjZGrv1bv0`f6yi#XETTvAFCr;>{;!r9S&;J(#T5WBv^%)K%pv zPRS1mA7S@ZQ~HX~MT!=Rm3?!x?t6NDsqAq*=EIoNndV^Ek-Sh|!^g{KuWT765UyC| zB!bb<)-VP{0Y_XV4`2$4vwk*Ue;*4-siuWY4fRxp1<6;1Lq2eT$QpaVJ+{W;A@iIc z_e2o@2|b=LQM;N%Exuc8tMH!EAjl}BqvYf@a#YpG!)ErgFe?jXD;1CcsP69i1{YL9 z1oq;8&k5&N9&MGUWxl#JY9i|Lvz5Mh&6CE)<;dFPXPIaIXWz2jle_^^;IjINb?@1u zrAs?abWWpN@%%~>naq`-mY;va9&d0hl+ET-#j_3R>CqU`qP=zZgUsjs3(W zosn%*xWeiQKF5(Z1f%VtmZ-elEgsUd__bzcreX-L1~r{adx#L|ZvUI6nT0}*Xjtnf zn44SQNiz*Qaq!ox-~U*Z{O$j>2g^@fp#1VtX^clg3itfy-yy;ON(z;Xx4b%^kb)<7 zk&#GbW#`!o*M7v-g_(t)xP24VSZG5=G-MtLry%)VoD@XIwF?0WrH|xaRB&&eu<<$A z`uml(xtqLmsflg&;eOonb!M@(9vpmkaw^~DRGp>xp6o`}4F~#Ys zjFgso&3A}$SM1x1X#+Yfwn^L5-sGIUzQqCd)$iU-uEe~ZS0`?Cdwzi*^Nv(LYf#g#vnvH`_;zOTo1BKI63(GfEj(iK?y{u}_;S z8LD*%=z;|rF7-JDSc;24AZkt>ZDSRnDTRncYS_3_=T1clgYli$;xEQUN$$wAk`POa zROEQQhwO(FG*?MP#2^_3`j-K8fqs&|UwS^Ocx}$xefJtDlDW1~eYLTXEZrETePx$9R>hyVk8QnN55N}ITR>A`f|j1p<2d9~4~)-~3*xnuX56!vDVyy>+! z@GAwhnpmFRubt{R1Yk@w_7@<*znBoikqE-oLZl)9;<*kPpeNEu&`nffdZj;o#${{Mj|u``QoT99uq+g zBb1`k=FkMk)y9(zCv)>BWDCwHdE-{>=}3Aq0nzl(Wq$bAfYCW{P<`Y1wx2 zN-IKAI{;&5Bjey-VY3D~9aLtDdl*bn={)Ad!~~SHsN`NMmFm(JmPO{Q$sp$Lhgq1_ zcrSA-*Bd)0A5^uMBIS-vUcFvRJyCdl09@j~#2+1jL-$@%2;k{NFhxlye?ZGrHmN&f zviDxX5XXCr3skxc=ZMIVcYib!tPHQ~;nIOrzb&AK83#7?%Vy)EcIVsuEC#cb5vzAH zc^I&WJNYKhgf=tJ8+nVma08d*HFSM-$olBHtgQ3ZdA+lBwE=?Mto2uZS?Y)Q_3X&? z({?tU_S_k90U}S&H@-PWmt^RMfP;8cWoPOVjCrlBp9(!3=qh~N6#-k z{=e(`u*2laIBqrfgC;v!yyHcD^Sua*j_SafhA4%VLZ!e-9}_wqzGEQ=NTk9v4Cek< zFMr^-B9>oK+W$`dsUf-jrfa9mM_@;YoEfW3y*%@;yQe!oxq3Qygi*qro0&Wj>6dDW zUHl@grhOC+#oK>+3wt7L*&P<<1SkJA$;KW1qiR%$;P#VRqguVUoSW$9sh!7Bmtu@h zMZQ-TRn0`96$hM@(S5lalS6tXBX^mqDJ>ghxd|vFbl*>aijhLOnVTi|Q%viNe*_mls7TPXBNA*=C(hyW?H{)xO_>feTLx zZoPczB-(rq@zCa5@D9Us`txm|4osnQ$(`S%Haz;N<+O24<$otT+EuyCx;-U#mBsLe zepc5y_Byhr&qL13A;P&hIjdCB)Nt5=sStxH6 zqvIKo%x?o`T!Kf?2!#qN)lQ#fOj*patJTjv!w9ul?#|@qn>We5o>C6vQ0#Y$? z=o3Kh_M^0ve7YGM*K$C!=wMBun9!HCrJB3BDT&y0UB-LpWcqrOR|s-U)W&4AWcP|^ z#cMkucE%vra+2IvHMrkcLq<4taAYK=h{^Lm2vR3F$@yAWHlN5w_4N|qzu7O8t>q@1 z1MjW1Lw%V}s^#$T!rqA+ZPRCr%BloCmbAQH2E!qIv_Z6%v`%}P=VWfH>Q_)8;p6%C zAda#6!nmu)wQp;x-D9AyN_EizNCLt9IIt zmuZvGiuKCN*ZmYrV(diGGfP@Gc9O^x^bx-%S28g#c7W*M>)Ger1oogw<+hIr z23HwmR*(MKNEckw>$se#g6rHaRnchiq}J9PjKb7&jD%6NUAxfP^QbhXvN02)9#(w+1eW=IYW_NZ`M} z1@4q)a?ds{r_lS=UGDrIt(v0w?a&EPHk;3EVGyDl`jw@clW=x`xsPz?%?kW47CX$+ zTroMil_Up&FwGa<+MZoNPeVyS*($NXlrBI!FRuU%*(sag@!ZW+eQk}C=T;5AF%Ba^ z5u0@o0Q|aFlD}Lyg2v}X9Jn^zs@A98KGg1CGs>XbA}zyDQxa1FwS788)Tf=3+rowk zt5d$v_7TY_tr!cX7JwQuhi?$?*S3@}P`?jpS!+q7lqQX#!+yq6X~&-4`Ew;>Id`zQ zNcAK~tx%wKQ9X%cSum=?Y8MBwtV8ei{=ToQmO#}IYV(JJg`Rnl@dwMd&l7u{(o)BR z-#6{wO(J+C7tV$FxU++~lI^Xq%CqJ8#zWy)`p7gQ#5gtYlf*PQY%OkR=3m>%0-s08 z3OEz_kpUv4eSQ1c76iJbnU(BZN8@)zpDvx=BnXtDsz}$ug;}UYXmvS-uJBRQl%{W9 zfiyi3QGz8YkV+jTCq4(aUc!MT=Z{8EMB+7*`lp8KD7)bD3Ob}JRYLxLH+k~FY?R&A zCm%nJytQI%mluYEi;61QKXGP{ca76f+ENEvFg3*ey(r(g`Dvs zm5NbLDu-H@{@lwjZO`dJLN=epVF8-HWg4h=U288H`tbI(f1j(LPCIMHo^PU$r=}4+ zwx>Gq1F!PKB!x57>AOabj(R5ZVm7(THXLDDMl-Im1HNYa0@@u5K_Fl zGC3b~%Mm|ZAa#(e9Oy6;@raqbf8EMSM0{-d-9P;f9(`FQ3NQq1)jwh97#*K`@$=w2 zLo{9YnZJNPm%kDhy|(p5bVN{ngcB{o=7y{0-WE}g>&!`Qtkbx3p~4)w!=GLp`>`PLJrO8GfrhDwB$pBL9L(2w`}H`3cwwoy=?nh-!(4 z%tino(^~G2eJO<@VP=YcHkO!s%iHToyd{A(Ha7OK!mQlXCtL0A3{Ll*q%fS^ASx>S z-p5Oq+0wHua|HR0Q-qh>0Lc@>X5ikD^l5`IO?6P?1EGTdk}pUboPX%lNL_kZUT;+w z_oKo%2S@XivD0pvPDTx$O&P1)Mu70n&&5`!%^7d%{G%W)rzZ@8`QnNBf3(`xNT)Ip z5&b=0zEXrslQY@AXZ;C$>5Sylud@v-&ZDU`)k0=n9r_4v4ld=7PGQ6VUGdR>=Xr=N zJTo`jaLjz&3et>W?p-|TUG})SzkKp%LvqOYa(Up4g;lU(T~vmpV==qa9@c~h#>~wm zmj-AFw^(Xo;cLz)22XR3drqcwk;9T{Sugfrj$r?aHJeSY$*a{WCwAUU#u!QApFv(F zgsZ+%)9Tx+PI6}t*S~+;jwUlAd~MiYwvu#;Q~j7TX`@aQic@7}X}K;+7=o-W%2`;v z)dCzO=Pn~&Ve5kCnV6w#%BvX5izNT@M|I9J9&<-N{Xou{a`j$X(@W|hC3x*z5VFs_y5=7V0Ks?ijPNpcH@}KfPLrZ|La{Q z-@fA1<)K1+#eI7Dr&rHR56)h@&-(jcI5JccS#|hW-GjChT>13f#xJg4z4rTqbGPQE zCexD7Pyn5!LR8<4MA(G<9^@LHa;*GC@&&)R>zCS-9SHDdENpUaqreArPE1U3G}3WA z=k4BQLSo1DGr^x9lcUYucnb4+D}{{-TMlaNEyL$_7Uq>B8m47loJn@x)Ew1-$8Wdl zjUJp>0gOzHi%qoJSDciH1>&<>w;axnT6Kt$w}o5gzi(?4z6Z+#j3~WutuXEZJn$;Y zI^zH&=8Rr=soeW{KfPEtjkYL}K|(fUvc*zJ@Q`zXjJ$&@?A7&HdU}zQ#qb8{dBx zJ@&Ev8pM*w9QEF-RjPLl-CHLt6j<~&id<0&-bRXY!0-}sW~9)F{*2t*K4oIIIeWi} zkzJG9AeBl4N$*R3`G;OxL|g<;I;37U#NSIQep%;woPh!|j~2OoP*WvU{|IZ66`O7hus zY3_!QuukaKiO>&mV<6e1yyoqb-^$78EAHuCH_0AGmVr|mCnx(R!!Y+L05_Xad0bIx@Y%or>OTQm-MV0(>5fCvu$$!Eqy3{(T+rtoTSLU--R!ezuD@ zmY4A?;sEo-{JEoTqs*lM)|H2&A^5-f2D-gz^#Q-Sd}Oi9*8IRyj8EJ8*%=uPBZSH8xxG=-e6NNR^6J+BI9Pn<{0@Lm*1w>+%5dq% zcuAFzh3<9ijRqvhdY!%Xcr!qI3U!e}f!Eb5*2@?jXwky03e;qs7~-F3@A5|9=@1Ki zspj>#d@bXKIoz$x(0R|4JA~#Lrq9Swj#qs)fazEJ8Pt0%91&(7xouNAKe^9C1pnms+ng_o)6z*&i{fIWj;Me%8O2H_4R!?TJs>#tda6r>5cjx zD&y-6c(~9ezp4bFdgsz&kPqLJDqDqkmN zLCL;h{IDQ(Vdc+fOCeW9E)?=?n6OY^SdM?d{SXm+^|fYdU`wq`Qe_mYVo$i{Kuv^* z*W~}z-B&(M%Y%)$IXr0R7q%bGdQu$xY@YsvGcpDj6{OLtdE@d-^Y^c4Tx$C11aGW< zq~+q-=>QmbtnY-{8@f&#Ti>W{`L&R$;y|-RUO5)$hAUc+ODlR^0U{e`_r5IP7<9I- zO^UZmN_;jCK!qGRac|(8CqF8DE`3%yt-UpNd`8tEr0FWrBTG-4ZQ4+$BZFy^ zV>Ch!|H4T8t4{y}jKH5sRU%#eRqIGa!>nalOdV@F^9WB4iap-{N70#wC7G}P|9e(v zrb(xo$#Ol@Ovjp1TXEMjQ|3&jW|kW+siUUiE~4Uc&NN9yYBQNyxJ;RvDJUVhAowd1 zD@9Y3RbbS_1pyU>gtXt?e_dByrtTNSBGsgnE#LQ$ z$RDJ91SocjZS?@cO|MF{2K)zS2Km^^!YUhIe^87fL#_JRv#1?-j*zV-3-fJk+RBQd zep%?R@Sj^Qudg2&5>-~@PQ6z-ZV#^k;oJ*$e&GrePhq+ga8^j-kT!^rFF+T?q$y!& zgZHrfsZ|BVGn`mj;f1qB9-MvGJo9mNmyIh7bfCo#8jJz0_xEqEZ3IFxmC`BG-s1ER zv$cVJ^8;x71!KE#vp|EXeS`%+IVnl=;v^rHY-wIR5uHg3<40XFhuk&u=wTeI9)B}? zdWdXcJ}gqaTZpk=AF~&846NB&!od2Q^;p;nDSIwFR1B`B-F?M_H6lTiOYCU&A%DP=0mU$x^9cq$n#%dXKR!0`lm}eO zh?fZkS&lNn?bm?)l0V1IX-+fZk;lwYxwNzwEuR5mesOZvmK$vptn9=mkMKCX4+I*k#1hF5U~Gj z(u^RmQfp^PEQ2nBer+MCv~IFGyV1D??x%1M%&)KG^spq~JZ@mO28u^L8~*#y}m2OaN8}N+>elLAv-9b8u&Xtd^#5DPZTq6xeU3wltyk0ui)H8KO z@koe!<$(hkjS?g&YD#*n(jhU%tB0XTWQ63 zuJ!)EjUb+TwpduNJjTI9J|G@##t(2va>}OIi3P>1D~B34r=&K%rs~k`@D-4n<9H)R zaMr-fgf7FU7>_AGQtr$8IeYEuo2#*p-MDY7mQQEiGrcV?A121wAj;rZ)kvU?R3}{h zo>&5MID?(4jQ5#3LV#Q9@%_th4JYQ(+A*UaJ)c?>#mdt10SrCA{;6hUf*fH2mv~~! zSNr*_p0&)gUkfJh#cNIo1CF(rz=1bt*D!;6E&nbGSA=B_*GV)71g02vsD+ zGV>$%R@N#}sdYWsOlkqBS++(;p)zMS)Dt?lDF_`>OpUJoIktMG=s-9S_n_f(V3!d* zvQFrqnK0Aq*ZiY(&kK`;oU;d@1I|tUFukJ&96(kc6iV*xwwtDjt=YRz4cAX8YlGmzS~a#1{jRWrM+GFLl-*IKY6JlOL7Z~57ARjn+OS)zP< za)1x}|Cl7!N&r%1(z=VkbPmE#*(+lkVj!zdjUEd?4s@Cl#KxVY_>I=cp?|?!zR=9X zp%do8E(9b#MOt~`RoGCxQKjAE?4!sI6fB6{b+D&`PluylTQB~m4cpm_Wi5ayU)qNS6*Kt1;UR~ z&UCu?&}Wz3@QZP?mWuuRercxOzF76|A6;y#Y@H9bj~QP~++%bhs43xoXyftYl#uo? zlm8t2`uZ1VE{Oi}-+f>Fg7S?&eE|7sYTZ1-F-#@N)DFj6h^u5<<**}tG2pYyt3-o6 zwJ^wD5jJerlLG1^i9Ep8>``T!>FjFiQaLGo8j^V%L;kGHF+0sMl*=X`yA{*-=8yUT zSM83r)x5SsJ`naE4@|y~wl|mo9;Z?ubNMiC1E_uIAJf&$^}JvU*~-t}u~Itw&sUDE zx32Fsm{vm00qLKkg?xeZ{gKfx(7DyCi?AM4(>iQ-->DPf-E z`-Ee-=oDd4X*hOil7Xcj5kGE7jUTRtrsm-|3gRt0Q0PtuTRXW(CY5cjABP{8MjDPI z9FKDX>W4`P@#WgLHB7BwgRTaAW1arRfJd`W(!Pt)ndBS}AIm|eXxLfdJ@^H>Uor$qA59g2?rdjrKeYbQ?<5w`vZR^%9kFVQ!uM3O^ z5)hv&r>{K)6zkqVa39sh(5Id?DcJ96HWHP^594og9G5JYEX_L|;>9uMrGefD=^>{t zT`Z0|i_vgup+YaY@NF;(@-=f*HG5W&R$N>$IB}a;!g~C#FAHS+ogWRNr5Aqg8NZ)! z*@7MV7Fit+2STHr65;@4` z-D2JvY*xE)3}kjU-T+Pn&|9N2v#;aoul1A=V;&8hq33M8NC<^t3r)$wq!s zyyAWmtrR@yluQ)E>Q|kvv=~6pxRMh0v&uM$bZcsBbymU1n#d}0r z^HQt>M3bQ7qfo<^!!MOYh#hWs8fV^CUSUA910b6(WbZkyO*$nPNv? zfAri}5gT9WiNXx(t;bDm9))u?bL!r8TA_5Ltj-LF?mR$E%f|wQ7Uf1{BSazerv<1? zS2G{2riaXMER0s93F9Q%dMnNHAJ=~0ckt5RIy-Fd=Gsp@M(;7=DGEm?Qb;88dntJ@ zIg*t-kAJ+m^Y&2%353(T>hh3524&2Em3G;vu1`TCmN3`)gTHp!|I@$to}I^0Lx{Y8 zq?`)BSXOF0GyCkBqj3ZOpA`79W^5dWrI}Mw7d3oMz{|`QE8?2$H(A#qQ2P7i7~SLY+o%{%bBfQd$5{<(LsFaDUQhQ= zKk2+p0S68;DLc;Fv$?=J+N|-yxbC-rOd2%xPQ)sEjyj60A+Wbvs$MSL-;?g<`P*F_ z7B}N~^O$V%acoL-;@)URXxWUT@ywCWA;AaW%9}mtCC9yIi=$2+=2I1ZbxsTl8kLz; z|HR4#ec?X1Zudf0_d{B6+bN*<{$KILza|Qqjs+5G@^>v0W}OqG|Ba4`FKow_|17&( z9U3{9*KJlDg`Ins&-};P_)mc;51cQp&dwMZ8j0wftgNiAT26dJxu_BZ@vD%MTKT;i z#P7j0Az*T}*`<4L;o#P-%f`)S@J7mNoP_Jmq5MwS}xB&N=Qz% zx0}SILy!4HtJqNmD6EC0eo|7hnabHN~-|IBq*rv3HK{j&P7eA{t%>@ch*TxDaO-uY5VatWR@0 znW{Ye9L6qVi&sw8jbzg>R$Gs8wJ^P?!X&%-vU=2axgFS)wmNU9Ndok{Q%uXn>pf)=NDfF6-8|MxxW zW1nPdSZPaCu(79TvU)^M+FqMFEUMx<{)LijAI(S!k4&-!de3u55)_qFt!1?r42Dz9 z;SZxA&=*$y%Dk!c&Qa2t#&kzlQD0g@LC2Z@-Tb8jRwZyKgfc27Rkt(XyK&CzjG`*` zPiBEem0S9e4|+J2fbB7-8RxOOBe{x)Q$U*z{%2NKm`@BLd8pw#{`Hg?>^Fp_PiIJN zGe@XVONm(&6?o}5yTQWy5JanK>i;K9RI(4A4T35VxBcd#WLrxLZFXFURj)WgJ2<6Q z5NdtP9KSJqV;4Gx#d)g9tM1agQwP4mXfeepMY!)iRtv)->YhxvT&ooKG2r|MLO zDjt9y!)#$ilkVvF9Rp>pv_GCd^}b4$ zbwWp1UTki)b{mIMqdcQ>yHs@>GlUoM80>O_fZ!LLX0lOIge z=j>p!EF`2bXQ|RzM!ZdmnYL^!w($Kp`<22kqDXVnq;UD9gU7oU3rQ)3K%g3WP!3@+f;+rqY)0I{&qU>)Y>fbh<9wm0mQJ#^_Vc#e$fWiQp3&Ulk1M%2!ztg<)YRI(_76dD zsq`6IY?Mm1biD(>99S=0<<>h;l8$W6+t;qF+0=dHsJpE!Kxw$6J2PML?$y<+QK_j^ ztEQfLW8;C%`iYE_;M;?b>%T)!MG{(ZnSmnaR)>Dsnf_OkmIt6Xf)?4CH|*@JE}HA- z%H_2GI_5?vA-G3CEbRPnNxglh95^mmY)rw4>%RvE;l=v-G3n^DsPJ+I{?JcW12~WO z#fmn`L9-DVCW?ALaSfIdRcuGsV5mx+eUax>A@Wj|)j3xXePTi*+6E+eFPv8kWAkc) z8UK{nBaGOD5Lc@s&5VsJY(?FM>`KM6OQ!Y~wb1-ILWE9qw=g>>etoR}Y66OtSFrHB zHc{yS4{Df&`O8iv5UD1F2PFm3pY%tkPwSIPBa0;ZwA=HDxvtzj`oip``-;xtuwAh< zfv|KQnVA(E>;rI+*|c|$2Ha+0@HSE{bnnetI9P^FJV2u%GVXue1*MDL!b0NC*Dou= z54s@Dk>(U%k#wnXcB)_`NB?XiesW{nW|L#RIi)>Z8i}2rfA1+u<0~xeb-44SOh)f;s9SG1#J%m5#~fX!9{B9{JI%2RiT?)6?T=OGvkE@_ z>i6r@-x4dVnh>{=_cX1;mM&pWQ-v^8G%QCnBws6D|H4T*Qi_Nu}(!!lRMouc;dR%4*c9O^_T>! zi@38GrkL%3L{VL(H{HvqlIL6FOgU*$LiE9!8qbBt4$%M-rETeb-_m=*7S8}?#3VL7 zCO-cDJBr6wJXtEHH(>x#3NW?wcgY3&?wRDOgkU zmwT0aM?NvUSlI=K4yt<<51Z5vqytyi;7IHsn)T%K7V>ZgI_=%~fXAsC$>CtjFi~H- z%dJxf(dZ7TGwo%9GaT_cFu~3xgAZCDY!%^PK{Pforp%t0)!x|H>Sj%h?xZ&Rbb4%R zp~RGl@_O-X%6}*t?Kl*_sp@9UKFe8p!EO#fg6L3EFjp`)Tr-j$I)sQDy|-|=C>ORD z@de7WbmDFQCNM$=l*(L z7!e0Alvm4o;vQgxCSIvvqs5F4Oj;H^rTlLLKs3diEf7xbJQ;n{@S=!H3JpHBc--tK}L}}jT#m! z;!r}AJ(TYi=osn5O#rI}+EUJ27N0xO+Qg7tWx)<@ z^!07q&Q1pseG3{6VTNTdk7>Pmn=BaBd5~6Sd$xqdT37XNe!l&bl`S70sE3EMBjXy% zLn0Gu8_B#eUCo!+%FUZj}{uo$2LhW@(5>QFSBeiaI_iTK_c2NOei!%&^HfIxJ!`~LcPmD^_9r2=cdBuq z_uV(8si~NGSbL52ORy<)4g87LB+FiW@ya}f>HENY&cwK^m^FKQb@j4P2aDi5r<4?q z+?;_F3HHukPCb|a1x;?9{#O4(5A>p7b*yK+OIMpY^M+=sQM9>8jQI@$;`(Q0+-sEh zzkT(pbRwgm%i^#4&xE2k4|6Qovl#_x36NTv6icwnS5pg{EAxi5Y*5=2F+$ZAGQb;J zAG4x8vg5Oo{rZxeZf&-HKKRpjFOf(B>vpF!TbE(hbkf{>+nttK=Y7YH|1vxE=OfvH z2YZ4-=soUXe7i4!A2M+Pa2|=y)$;J>9YDv`+FOu}1Hl98gBMA#1Hy_KRX=Ms4~E5m z3=vX#+oSlTq1CZEmB#*I&IFB9p!QgJ9@C(~L$t@|X(!*a-F@Pm#c|`ks~NW<2BQ6F?|6 z4kE_#gF=W6`x={l0_5ZDs8Awrffh>Qu|7$OG3NfgqvGc8?40}efBUt>*7LR$Y))Zz z+x9;ap{ZE~&i+VC;_o~@Om#Fco(;ksx-pUGM8plz$c+Epc;i^=JA!a1wG^XHkpjK^ zqsa`$B{~Q>t{LpE#~m3bwH5GvxFNuU9*?LY1$VeghUC^B2M07`P{@j$kR-h#A zf*cwjHns$p0XSE|*t?c7!~8f~?#G+%rUTUxwDwsm~4NlzCFQ{U#N_IM`;RUQ?#piqe#ULLgG$!~X zAd&}s{k48drLjq|W=^&1cStB}g8MQT#v15qp}?&uYe^t)59Rc5Hod)^RJJAjI3=9!R=lY_{91D7zpdf`!=Q3^4TEz}b$7N=mf`rYFY61*$?%ZsZtdxsfvtXq1mEIKKb_T8&73MX$C|== zSIuNyy;_KHNoSEuW(YHT;0!LS8ljo?Bhi7CI8fWuv)-@$bR(+UtP<>ji+8jpx=sf_ zha}ojq$PCXPVxHz=uD|dVea5npug~ZonSF6EvOS+e7+!e?#n4mjZc!=PcJWDcI)5} zXZ&ABOO+ONm;%fQ5$l&f9k4ZZ!_NtuqP{Xg>IP@%aXybT(?T|;vu;a)eS}^dUpa2` z+2)O1O{mI!&i_g;4%_#~-uNeV{4|%Y4q44*;(~x&W8}6b-<`L}RlmaxcuZYkRHrUk zaC=L-t4m!=z=M?t;e5HK@cxO0ri8Gy@J=^E>M+Z!xWQE$Yen^4;5F`)I(3tsT|+G` zN^DKECUU&;`jaQ3yVcW|)$^0rD6kOM$29F0Yr;0BpRKCscIQ;S)mEi7jtvr&kg1XO>cL9OOqbt>xjspk9a7kWHHA%>9sT(oWZ+`QY z>D@bgix%`sXORKpm$w>Vwcc*z6R?Ze(m=4?&6obs|EcRi-`kJr!^N&Iw_z;YR#L$` z9!>=ttNgf00jfy<&otahKX9UDIPI_B z{oj}0oVx#L&+q9Ao0LHcCM7wN0u8Cz7a)Vw{gx4CLO;Y!JZEHTl5{Vy(-Odv_tirq z(oWsmrb(=0X>&@l1K68PaJ{EAgx?sz46%8h0GY`M96{Vo6b4) zKjDpB^MRq4M?bAj=$r@36g^E1+$_Lqc)4~Qrit?I(te31^=--FBW-iZlJ4Swa$9;3 z4}e48VSVA;JGuO?VTo^#OkCd*usiHlFPh?0GLy`_enb4^;ltXx=1m7`GDdj=ajr<~ zRg^ix(8b9EYO@XZxHjP$sZBKlDk!iTPS2#fq)X&kN9=H~8UhZY0}-8b1RFV=xmc{& zd;P0v6S@Lo13qs_q?||;i3vbY*)4&52cZ$-QMH9z)A>i+!Wjz{NqPSm%jX?!p$71E z2D%q|^m~A5L#C|o!}QklyXsKyHewCO9f|;^-}=Il@7WYsYUlqPBMmew6wz2FCTh}^ z>=v-4jC{Y@4_q2oDq3?Y#T}dCm@YX9TbblzhYITM2{a`jqTO{fxUD#=BJ}*}8zsaL zPD)qmWM5Zx>d0^PXdF3V|cD zDs{O2j54OGc;)gXbu5sE-`yzTC_{p_6?oX1%n|yNogJ}=fvIUBzU1iyFEak zOsI>PxgJJ7M^XCHvN5S@pyb$nMGk(-YLr*yy{mxJ*|3HKD@@e@ej|U_qZZ$SJR{!K{DE~P;69}pg=@s zc^P@1aeL>_x3W6tS2&j3w)&)P?RWdl=~FO{o~VdvoFi=WY#J+xaX#V8N%-N{(+7Ta zt4lz%aK{@D5;ChpMfb8B@%Vk`|GxA0_T)o9)BoCZk=vZYHNpEE#6ox zU?)kuOSZdbuElnq|FXfd#w19Qd(Xa+`QA@inPZOV>TbHOsl?*+nuXy<|JhH zQ24O)5yH%%^ARL-OUB4iDi z_PNX3O-HQnPItjtzgq*)UV#(SatHO0ct8%Ym~M5g_m9AV6gg2Dn4E)yJk-%nalZ7c z4ht^z=f^(+x+o>ZzK5is11OT8VkN%EY3bRb(N$t6Ce_KKaOoX6iA2|?eVATI@=Hls z<7WInpZOv5z@m#*Y2vr=>4;oTk*lEb>%JIP#i zjfB7h*0;QWTP3KCm-3JH&1hY+X`P0C7-jfbTA@%&Su;}t*JRaX7CfWVAtmh5vkdp= z7d0`+aG7P8v*TD-X8v(!Gi6$LZwEG^su+$~&P`l?-H(3#N?^#TBPS1u@g*_lfUQZ8 zK&(?^0F%I{6l#J!T1Gv~qtiP==f1~3yf6rXdnO4N1srVV zaahdD;0f8wA+kux)5blV$OyKBh%Y<+sT)B@GmwVm;h|$YbD8tNd`om9;S#Rg*w-Uk z59fn#u|izc-HCOiefydmLjVLt|CvtbP|p|VU#>lCfEDQcYe!$jL~u)KX=&qw{V7-@ zB!O_U1GBI*uv~N>n(3vJ9?qgL)Y204t%vl5Fehn9fEm9rJIVrgRCxeM(y@uQo4tqp zCs(hW%#L+Mb5;PkjafMl7A)y{!RZiU;AZPs+Msd80$@J3@h&m^L2`| zJraBv2;1D~%%nZpCR(in0_vxnbw{fuyE%enc!kr?JC}kp7@%<_xc{l#98Xdp+en6=Dn_xNi&DSEQZX2+ExeI$)lz9nP%OmW|(a$k8~o;)xy~?nZVr!SLFA0(~LH zs>R4uC(7c#I&QO@u&x@YDR{ptRU-3%nQRpMe9I-4D4_IGBG=jZ>}Y-jZMT?!JbuM< zZ}`gXnf8A(x*5XMN^ym&y(nGBYm()4VF0E(>>#HweOZfw z8zttc-A8X88xS>T^3k#X?HEW1wQ8k{bebRDj!H!fRi2ICJk|C)L6O!?nb4UGO#jrB zI_B29Z<>rGfFn}I;6qHE5@y~u+MT0vr%s%0Xs!Y*;|(JWxo}arFvRO2-Evyj0Q`{G zQlH@5le4n)jrC?#P~o-8dz`#$;JKd`v{&m%JkQGSls`N<6y9Pk-pnYvWk%VHCzhNm z4LoG(dAjfMPY0=c^tm>Bf`~(}yF#};a&FDoQ@keVHSPhuAmHN4+^%FYADgPBWrd#p z9ttkmk?BUyI?{?GSmkq1a??7BHlra55iUd95*kX(HSIdqa>1I1pLLvXcp|AR;ekkP%5`#qLm3As)R@(I1Nf#TxbBgBdlly?% zeBxZNroUI+b0P5n0%01y0MleJN=qGm0Ro7No0;EWPcASd1;JW$E~*q zqj)LIg7*Rx6a9W|CF(A>+#E@P0b^uuJ3t_Z7q8?lJl~QJ=ZE^ixs0O#Z3@ZW9M2)u z#r9}nddq#Y?{;rQDOC&L2dO}K?@T8eX&baKby;`8ytpv1eteTL!Db(JC6;B|!#VQL z>5Xc3DC~HF2m^Zu+I-JV*Kk*C;U2J=q-ozX=1MDOUI8D#TI|%-;ozfu3(Kwk=z=a+ zFsK?~D--#EwCs7J?nw#u+k9BZgRoK~VPaOAG567@7C`|{j#MfTi<9de956ILRcj@; z%c|iKfTz4?+Fe}*bx)m=fO}X5Xqu=el4y5X701~H(b)+F*7Oj|?X;!@w2DbrGZe%1 zSL^$=ac?GedJVE9-j!p*f5IDLSPw~TiK|_BZ`RgQ|B!zQ2$ozQb24t(KJG0tOUrF=f;18IzL{Zw0{5a&-<> zsjZ_^haB39UV?a@@L3&QH@QKXi^Es36M}tyWj`nh*y$`l@Pf(Tco@&D z1PqLXfzRQN4WFf-?v?->i1E(5Z-}ieedv;{A6ih5VlUp#5W5x00A7)|@cth&qID-S z<9N$8SmfVGce@vc8lR9pE5Jz5BjK2E$YEcmUbyg$KElXgM71xl#bJ$1fePX*l1bb; zI>_^l2~_OXd+D`pu;#~e3WI$fgsIdp2dl-;*=fyd9-9-8ta(!11e5aVZ}$}IJryZt zlrNL(M6TJ4jzqD7@JGa{39@fSBJwi ze}b3VpD)cB)HZXQ3txkgN^Dc+jZZiXSvGu0Nj+-^cSPZMZm|AjHs5r4bn7#J=foXC zHjSB+jjWVfUKD3k3OHpNcFSa{KkJZ_~oD?k8kittILnIFdDI7Vv zplf$`6{fa|bM}of#@>eoHwSMZ$o&UtX(v8%*u(_vxK?3$A?o#uFV0}f}@D( z)P}@EY-1#xZglD}A+W@oJ{UbRR}*E%o}F6!b8IWIz_H|S0f&xq;-ml^?%Pm!U{?cb z%|=H|k%@0l+OL`&M3M1SAA|@1oa#~Aq<{VFo@^W9JAv3 ztA883xi5d=dBc!v_G(r5Q({t-ZgMm_CZ-^58Qb>(3&<&}wLi?CUi&@9WfLH}4u0XM zE~;x{auK@W`mclNGX;LmJ#)=FCGzb9)>}^pBA4#c&8@EXR3$(DdtwAJ)9v(+{;Ojf z_2RmtR!e+lgmY0^PW%0TL!YCeqYq~LPlrr#gG(@IVz;(XCZ3I_R@7ge=o%)em%jXI zkVxbtrS`-HJA7rSY=g-90~&?0cZ$Wh3R7!TMEb25;GuhyGc&N*_&YxzRbPesM!}rg z&7&2^U~F!{`^$$vGKV|`XqVZlCX(b{ozv`k=-24XD>=3&FYYnF@ol+PWyi_n3+AGJ z4eSQGwt6>nWlbWl!6tN#(?!gLOBBdfzHU+T!!&Z(k8ox)(%*HiowNxP!<0ilh|g1M%c<>=}4i)9V8^A0j2W z;+!cO!$qB_xcf8Idd5c*$G>2I3Pd)Rpu*_R)4PZ~)Tpg*7{=%LOozyW?h<);w@vAB z-$6X?bT=3_`luAsGL>7Whj=ot1(P>WS-=5O^%_~IJ<0v9Dg84jWZ>#2@~B~!7L%BP z0$7FIVvQ<6$F|_dK!=e!=L%eaSENLwOd^_R$-!=9f&%cPQ~zkI-40EN`sQO@T8_`RkBUdF>cL zU3D0HJ2_yVkuQx5E%n|I>&1C_VTniWGReZ!lp$DwX`B7>#vDt`352h0O)3WKXI~v3 zNCf5`8%%0XM%OL<^f;Ru4=k+TcER^Ec+x?ZF<5UU`Zwqie5*flh(3%>UBhNKB^0c_ z;5B4=u^cU3$j6Dtk2_!hUyHvmDCfzeGb55LEL$s$6rnNXc`d}X1^{^bza|s)lcD-#1(%u`EV6ON3avGnYK-BpCHIica+dExjOXDta!~-`rTYuTpV! zGgB8f3GQ<%PX~Z5UCBLhCbGDKbM)VIY|=zem`T9#oVjr$7g=Vq8cE zXuQ+_^_T&ggYOb5CFO9UQcuF4=if~~>B~A&0$a#uZ1!{`GDSG)nl35fd#vt{SbbaK z5Z0p}Yq$6zU1vEr?;IA8od8TV8I%_R5|PyfttN{gmSv}`aP_TrMOgwv$j!@YCLWqr zVxpgmzyp%)(Iqz$l!&{JZK+n`6SGHrLE02x4ws_WwTF+(=X*lE%dayJQ7d-(-#q&% zO1$Idd5GU2gIq1c^<0^Oi*4GZ)nGa5s`%AiA1wv@)Y0^ zY9>NtX#Y~n{zDGu|KS8^`wv>cx&V zed_0@tTG0Zn8QgERg(1%Xm5xu2WRyptXd2oR~_1b+O4&IEpPbMF2!t@b67+#RQ|Eq z4yCDw5vK8KsWt4NUd;#~a{pd$KD?y1lwwB;JU_e3*k(lW1f1cVxM0Gry2Sh3IFp6!M$h*$Jv1*TT5M5hWzh)M}-=hK^0u z2*~r(OqUT$tEEE%54vmiqJSJ=!~WU;FhyC9@GW^zt~Zc`?e z-a}I$QCX;e*D4dZGml%)CNe~m_o(X^&wjWK&W~r1yjXV#tE=zfq&R|N{hE@<*|_&{ z!_T_MDJfx4j95pkTo{=h9u_L#W@Nq>XnEJLc26pz++T|YF; zW}gY_iLr4wCRPb0v#WnDU!E8-9q>cN&s;7F+4tr3$5aBx08$z^j8?ve6PrIp9D&u6G&U18x{;!)S zWL2MTSL}G&My=yC@p%V&7giE3OHE0AnentBADT-w%;C~H$3o?LJYqK`O88}i zaIii~_xv~geWKgKjghYP15Q9ZbC%w*QT}z1zX1*qn#`n45)|j)Hve@? z1D~7mn(V{%0lK@Y7C)1?VN#^~RjlfYR}Aq~szU#w_v0(u<}mi*BJ-y8Zo@GB7HoTr zwI-FgN?%KH;ZRKE=Lf#Oo$`%fTqxI`@a!ZfR3iM7O#OBC5R=$qCY(%BSr;-Y)xL9NJK9@?@teA^doy$w)5+lYOTw#1Un^4@=Hxl^9K90K70OC`BT;XCmV+8G{e{w9psDHAJWJ}bk=|BM?PVmPW@1l>k(N_O0kP;U|V)d7~KMh?Raau%=Ufqs=3iIo3pSn z%sbJ6D1j3KcRVzS8iZ`Cgg*j-UoC@9h)M3ttJ1d|*%fkkde*{q)L#bS2ojx%fUjv` zNlNY8RI%#oMSP3UUwfF5mLxh!rBa1=brJS9wK?tJInoY1ayyJW(9hXnRaz`;EqZe* zrFWsi96FzQi?5fSnJ_jQB2@j>+Bdkv`VFmIeosN7Z&VOWDMT-K{S;C>khBnIj)x9% zvxWm?tQ4O+1*+#;FvD+|{f{l{4`%`=PD89A9ym#0^TsP7Iug2lW(poY({fdlDnVm{ zTXM>9XZCKquvbmr)l_P!BI2S@3m0n{b7Nc2zT0>6%dh{OzbtHQePA(g;meoz8qNeM zqBGqU-Za-qvD5G0|Eqc0>7O&pom&T@s`mYGd!d6%V?>xJCPc$9Ig1iZ zM!=nPX1tO2M0x#j_^qVD@e7@Z-QW8rn>B@56S+V;zY;?zPVbJW3_V|*m6Mb9mR8iB ziY0fStXmIwSvr5On0odvXsE1vlpLq8hnFb;M8r`N5oZXY9`^n{QH%_;B!*dqQA>hZ zWBSeOGfkaka193<CvhFiK&PnMZR6t)9tnFpIu!YF;mi8_p#6wUjh{TNOxgoOpM~~ zDJyg$`KU}LQ968Ne*ihlEuODf5xfdOifyuet&l3qGaQ0-{-EPIkbBbUb8<}$N$p*7 zr-`P+RC?hCYig7`cZ~8$r46&=XV@2(DvJBr(afXpQjNS$bQ-^|RQM*NP}lrV6Q4A+ z_#bO5Ar|Il<$$e6lCI$5)~B>`Eg<)9rB6-wdt)n~`ao8eNQa1g^>A&Cj^K|wh)cg8 z_%}fHD0>6It!Nl1q0a*!W=Zm?oC6aCM z={=DlWQUoYiZJVR=(JwFjigd-M&%M>IF8>MfhUpE-SU+@Hm2-pv(+87cMjH4A zLDCgD-9TC}1r9A^lfg*uexeaZW67AUE2)^&+^(g?rL|XF$R(F)%V>aPagY;`1TP~M zK!nxCWm>+Wg_i+iTXIbe@s7=Z;?><4bXQS(pMyM05l{yhUFt0qj*jKF<|XoFX-fEa z6riY5hj!U~ydR=Qy<$S!Oh69;0P(dZlNnGuN{$d>3B06%Jc-{=w*TnaI8$fqR_bKc zk^Ke@9v5>uSeSY8uCRY{f7XX!+Kc{txxrhyf(8-Z{kAd@W01TZW(6mxHC*JY^GTh~ z&b@Og`asmBeNZoJL^HBf)6M22$s`Gf9VBJXjf6u2I*XDw_e;vax!0Ii+1;L zru{lKwz2tm6NRM{Y|pB(sePI@Xor}+8D`d}TH~?nB!fVQK_H^})^ht5H0;4HrF2LVN1BwSaCRDZY~!CHc}hTR)!f z9tpSFh+ZI%Fs??C{hOk$urgw>fl1X8H$ZD(L7+?Ag;dl}jcsk6Q7c9)e)?O;aW>UYG#xdh(F<^)OmS+9=S_6Tb$r8g4E%InH`05rGrF3HxiiwB`PqSd%a*l?H6 z9mjhlGQzfFjnL%f6aB54oN~I3Xdh7>XteoWu%tIiO5d4Q`tw8fiKG88r#z)R8=pO* zzl;fu|I$)|RdZ`s$HC)H!@13~H}OV|bouxE5gKCp`64NPk{*njTz!MHj&t8Q=tl_5 zok2JGxn@D<$uDPF&f~GsO$y#olqghq0{NymJLk9c?=N<;E{#u5?D)>yg|MluFnA8d zWxnnRvkr4!b{xN;@6VUEq}Z`%0TVKlci$e74Le?pZ<$f$qx8@=1E=u*Lr5@OjnMQU z&$>=esB#yRF`E;>*U!scn+I0u3-SzRlQpBJD@k6=Nx9a?hEIp`Y_>{8hg;|=Wlv3w z@W{DN}*)LI4g-++#I(P+zlx>nX za!yo)nwr#N%5ul2HW=T^H6bLEK*M1FjTmlXZx%%NyJi+_{K6ePvh&^EvWIURgz`1L zD|oHRw?^vH2ZKCokE7N$I&*Z(kb$F0Q>UR{-UuK#NHRED?ey}M#F-8T<9J=SR>FR0 z-LxQBsbQ{dw$`zi5n3JVZ&JT&V_EmQt;=e$Fw11^@Jqin?0q-JAe*(0*8 z*+{i@7zmQB*8en;Jp}-~>NCx78IPvTE6~kdYSx2Zqy4cE>q6>;RKJmQ~ zGR)jYQmX6B_?8s%MTMc^4v|)twuty0!ejO3{26I7KyPb06e*6<5q&-Dpf{!qaa4iG z+xKt96$Wq09o!goe5N{nb6ODna^av~9{ZYRuGCuWo~~?Ga&6Q(?Cx2;O0Iu{bAR{D zgg$%UNRp zSgSxRN%X(QTUeFwrD*`nw`k0N6_hjU#S{$I$~+Q%hw{21h`sYK$<#BCd3H7bcV^$s zAAYm_-|b7$7H9tASnmH2i7F@ANqQ|(3*W5scW*6?)a6f2!*^LTAX80a#yw0=FgPyQJh|;hP2iZoRj)tx*Jxg z^ttET9jcvZ6XDM463+Bc6jkKxPU&zC)lxzn)U2iOuAC8Nd`)%lR&Ys*vzc$5d-l@1 zMp0HfKvbNs(789D%^1Q*u;Dh}Xbv>&iG>@1s{6m`w))v3Zo zeVaT37pL>2FmV?1~TCt5mjS6<%J7g!}CDrJj$Ff6}kb;jc({&(nD5 z@Ji*CZs#s_G@rk799Vzy2KMUZ5QE6RhbLORLJc*64y4HmEF*NgVm)t45F{j9yS4JBxV#+d2t?U2ZuT64c)U|vh-0j^PCAf#YA3r zsE;jxxW|Qo82#D}lA>|lk$@52f0bU!X5>vPr1(H$3W zpzNq?;Wt8yA55SneOc{AXu9#UTA!$h$AGD+^Y<)?5fqr86IorGIE)2^1fLZ5eVnv2*jV`9HjZ z7-2OY7;Od8YV8fqBjaR8PgTG^-1l0?TZ{KNE>j#1oamxIEHBs6)dg?st$Qwug=_#W zmNXple-zqdw%OW3RnQ#v8u*(F*850$Q)O%;se^0Uf zrTQsB7cT4M^)QVU&E+pExQW$`&Y0}@bzuor7{#kEZ>-~PeUeD*_alhxK zp;_UL+Z`m+0)$k@EJylhH=p0P1x`-*#DT)5W^!L;vId)#VcCW~^~iatz#2ro3ui-z zXY08GgA4G=tJi5&G-{m^^s78zrw|yu%xZ8zBGVO-yj5k;~W-Zl|IXRe_y4qH@;`ySZY0@d_ zgNIM2@A>GQX$4EKP`aYLbVda%Ea=Xl%L(th})Jv!(JP`{&mp)MER zhoZ0BG=AWEaqQmHu#rC{CnaP5_L9@9MV2TL7sE0APGk3ucrf$!E99Pduo#I?oG-ZNY(rsLA- z&D0K*(-iBbw95yI9nrRXl{aDuZN$9L3(OA0alLa?lJG=J11@B0czf;lzZORgf!=!3 zH1FCHGHfJidN52>)i@uKlD%@K6VgF*QRkVAmXfbNZ4Ev4*llL>0W~v>A^k)t!$5Znfvol4&(8V2bb&;i5n!LI-So_M@hp1> zP9JKC5~GpU5l#`vTH z2Jq^!{`nIvk0uhwVXK_gA@L@fN{~2iMxv(QB6|WvC!j3Ph8}mcV=2`$I;jr@R##4H zlLusp`Giiu_>-~j*rHl9gTCneZ;JViH$lgftA=k z7S)}F53|dv`f=kbF{P>j)loUc<3h$VkK}OZ935L6P|$|MBBB%4+MN%*d~%Qf`oXU**E z-qE3Bbf1>gvT@#7HZyz@+n1nfqN(J(m&TqL$HrKXO!8J#i+Ko4madB?t*)hW0-NjR zU%yV(eD-LKCI~?@kQmQ+-2aQk~n%>K^?)p9D@88p(i*Ao*empkX zZPU2af9d)aC#iec3Mq)}U+ozjBs(xfZ`^v|bzqR!kG_kFpdBpzbutyQS5mcv z1GfaVU2;!`9v&9h-f3`kHpREY_d}%mk*`-(+-!^_>Z{LPk5f(;7>(aywu*Kp;%wG4 z`lb&@+ui)Jz7Y$++&6uU^23!<|+Mej#a!gfR6SUNSJ=(0NZ-onwPnKc%XJT5l#>Wahd8FtT4 z6<>(qS1TJbvJC zLYZ*rWo})K`z2!L1V6-Z?A(8Qvea+))xOzEn90!($hI4T$|lh3I_fODuzvVFH`L%F641i%uSD%zAz2km`w5_Xit$WO9iux{I^xY4=gpvAFHMZx94+u!)%ab ztW^QG2(;`QTicEQY&e8*{F9Q0Fn2s@=#8*1E;J}56;Srchmt6eUAm0)eM6<*Z(S^) za0w;W*=_ef43#8Le*f#zH#ltaOAx`QV3R?(0>^~%=ItErT2hoPtkNOrpr>-P=Erl$ zf66w!&8e?^6zc2iUNxwAL95-Cp8#9{mzU$7z5BzfvHrAl$T+LV=f|E1*3@jSX!AYZ zy0=d$NS9sEhJz>Iq=u8oeaq>4Yv?l=^217b_k)K9w@>UnbLb1Ni{Z-*hCb4&;83E$ z0QkebUo5M+i;vQmLt&D@*wJmEk;tJyTifHpO;!J*3s>EZOYn{74KlfNeI+P&!^`ubj zQBR?M@D(+9&j&LN4&Ni#%A~1{Ux$1*N~9W@NBfPJ1AELeuH|9z8Sw3xsFE($O}4c& zjzk>{4R)Ze^XlM4kaOzdB@W)^q%2=lj>OAYlg z?^FcgG49Le*;JJy2N0Os2Rr!)L`v2he(-9|Mj40RH$TYbZPyy7V``E48^8#_Vef5^ zZ7x83P`Ccf+YiJj$vDC#SYGwd*VobHT8Mj^*1sg+Q&Yn@P89f%=b{nDO^Z^>%1dJ65fmQ0J9@bKHs0j zv_Y}()dl!!p!U;fD{J+8fX?JTSAFLR6NgPHL;Y)yLfiYOSA^!Fz=hv>D3euUJGb7wruZ0aRo;g_`gWiQercIeQtKi1Y|+Nrx3cAxlDTpl1)mtdbd7y8o;jl!-kE zJ?AaI#6tQk*25z&=a|_jT#QA7?u(+0VuZr|Y5U|99Z58e-z=)YW`Zj^d-M5=U?gX` zqU>msCV@m6HuK&rI2SdOCf{3{Gx9}HG|`APECRma<=FhzV?STTRsDkI-K@RZp1!{I zd^MN?{Ap-~tcjawkJ3hMmp{>!H7{*KiwcYpL+V)&4qE~&Cn=eby75feqiB|;4&SJh zn083uhwLN2z0yZM9`%LiWXfwe%^{}F>!?XnXX7aVp-sMypY};5wYiTV=K~!0w-EO$YD3y z+om!$E4Srlll=S)|oR_skDsAa;DPK{S{MfYEB0Hb<(~*THX*;}Pjj)GZ8f zZ@?$Tdz)PLt$AI~?5t?4{)Rz~G;FrM`N<+@qz+!BLi3;h$C0J@5f9`qI1&Nt%?BCy zm!!}sKX~zNtfkUE2F>LhfAWXQQNv_^PC8n<6tjBG9-uRz&)kahX|Bg&oj~0MhL_nq zgDp|5Qi1IG*Tp&0fE=6$5K&WXF&j&DqW%oi!T`V;1$!(l5+aP?)q-M7|3Fa%pe~R^ zz0THVoz~s!^L8FCHC4*}*4E52#Kj-?EbBA%naz0hmpn-k3K%=TI`!`Kq?`>y`XVwg+m8;>Njuv`EX9;^-i9gQV zs!E_#XD@8&-1q(juM?M+^07%OKbTD2%X>A5PYUj~UANDSQpLANx0V|W$yRQe2m_8q z+;~RT&oaC`pVKtIR2Rg)`~4~t+$R{!o}P4Ux=$_B26A(}PmUEbts3|={>M-PGTz_~ zh!ht~vtAFr-D0}UP7nyN6W!g($$rIug72#wb?e+6D7THWgy?s%Tm%&?cKb(64QJ<8 z@X-FEfsW|e?FkOhjydV;;+DCUq|kT*ZlC$i%2i(~AA?e_udi3ngxlI>RUYxo-0WIe zdZ_snm>uFu0`p253QlwCXFH@&KhphVLPzhnPB1gA<$K)^vB5IkHi>h|{wO^P|= z@}b;hik%u2$g+okA<+yJs+|A^PA+ajGm3Zq03O)C)p{|>Yg;a*ayF~_;=}fj&yERh z$%_VhnDE{H;_&}JkN2Rz%<=MqM_X-pc9SGkO* z%aW;WcN<&th(aZGpVaYSVdnax&b>qO>FcCZcD6RwFw04(5_az#HcJGL#wWG?m zNWMa=w9gIr)zEu(uivy6{%wD0?t}o48;U@T9P1L{*oYs=`-mKxz{taBt2{N3P=l@N z3A*UlpeT-Tn`|w85lm?|eivc)m{u)!Es;N{mM9<=2{+>#iKwC9Rr`j(U(gC3>-ldx z&{E{6d%kj~u8yXn_SUwB9*wdsWPbm3c{t6Q@+oS{@0KSmF}m{-vl;z(f81b80=H^+ z2TNZ34{mHORY>4e=%i&Ijdbprr=Q>Vjezj9Ig|j#Rc-F0G zso%Y%CfV@`DDD3tWQ(hLf-zHnTlHs#Y#I~J!o*XbANg}4t34aQ{{^w+w-bR)BzYME z4j~yv_kTB0mqw1C)4~U%Hq0587;-vf`>a!DY6|c+p$3wnutL;4Ii|qkcXx#h^wf{l z1B!LAsa;f>Ggs{1-f8*g_Q2^K?& zeN*=Kr_?d1)_11YbdE;K%>w305e@gF3u5=5bAbAIDQNKT^X#1SaE3L-IHG{Y2bptBr=2dekU77x=XO zHM$9;x*Ld3bD7KYId3U_Z<;A7U5b(jjo{T6G3zeD;a(f|rrq(Ih9|pF`a4hol$IiR zTSYDN_YGM}rEb2P?Z(`MYcowxi=JTJ#k3a3rtF7^6@Z>dS%4${Pn+=^q#deTQ*mBD@(M?qcvg=y!;04JVF2L%kQ^OWFLkV zC{!+c=4Pw>KKQO6Jc?cjgzF;iOaR1X|I;N;d~foKx`x4lfM_{$RP*`%2y5OIcrtOy ztfmL!)kWt*-xD*A{GD+w+>ZX~H%C~xZv;KNvR&Xo3Z`vO6sIWpd z)yvF$7aN)gvKC~zVj|9E_(3gU`t(sPO&<07_Tjm9()_}F|GZ$sos{vdh2eZC6&HLq z&||6cm;I>Y6>#RRp5tVx#_r#RIuu9VKRX5lW3;)f#m-g@Irc8Q5G2g^TRrd~i~%xH zv$OGrU7B|FF0#JNAgG;-X*~nKtq$kdsiOnEtxrxlFN$udZY*u86J~@cBw4l^JSA`o z#F`8Gv*FI{o#0G$=bo~m1IOg;;_7>Sl4nR7FTlgoOMVZU4>5E~_9}*3)wT zmFwQ>m>Htt);?s>PEUrhs~T<-E35>ii-n$>o{M1vzmJ6!^T*>c@&+e*j_^)C>cf0cQMq_$m1tN2_+9%fD$eVj7 z+kC*C!2npQS1?R-vYP=Vr%jjcVM0l{YL??nWp7Np2rfbjqWmREge#ogtwvd%>^_hU z(L)JE^q-rNH5qPX8#{AtF@J<#e6DoDp2D;#H}f09c|k{`(U~eMjEwfYF7G}jyKfyN zNT4Vu-D#z}xICUC()h^N^T4EDl}gU&`rj)ZNq&s*cMGL?w>TQF{Ed~ksev{d|LfZ4 z@ifUCH$%9$(+g_WFid#2@X&1&*3dO4r)tDA;=GXnt{Ct}>52MrHUpyg8N#2>eF=#& zHw%4;FwF~}v}Z`vzO$Q}4bBe7bi^^rVYk7=%R)tF>t$U2u5CqTY1PnV&c`|TL$g-h z@`v3>ulR1$)1ztm=#+O?pVUjeW*sYdidD4Gy@8#fdvyQTu2qHdei{ZXf767%B!7MN z^HAnpNKL}H*|YtWeFH+EfI1DO2w-|GrRB{7gI>S(I{%F}#XE69`D%XbX=Z)#eL-S% zHwwCaa`*b=c9i*r50(A*KbrXQ$ivG&{_NV~_h*)_v^*-5M~^z-7>Yi!F52GSx=(Fq z-r(Nb|C>6V@t9yEO`24sgW2}G0LnPx5~_rkgDQrL)JK=gzNYj{625#SczG7oBRkNk z?o~tUP|s{Wx%_YBC*+ufDAjIdK}f)T$LG1aDT zD_#o+$~6v7WdCd9&LGx`%VdlZ7+Ow62=BBL#29P6dbukJON-cc?-btI+RmBWi{WKY zT}bVgq~FNI8Fr;{`ip4O5-11!GaUj+a*HHT7->x4uni0?aPcIES-vCR9U4w9J}ue`N?Tn?;B+kWLY^ZIh@>tC`vtXnK8hK??J4+xWHZEDny;7fZi{ECEt)_0 zWL|Y{$|0hA|IE~Oj_o7m-;x-CjPR)A@yw94QzgwxoKL!unZP0{lyyr<9)dv}go3Iw zOGU$SWPcPOX3nhGVYF*l5Y?Fp;MwCzA+hx_K_aB zq;!vOK4`6_7fnC1ztHsM`rqr1!Bk_nSI3ON^3C;A(B|ZKqqcq(dmc%n#NrBj4X`%mj3Gq4#>fo7#o~w6+9>>CFaz`-F9&7s|0_qeB|X zoBxV=Y*s?|Bbg;v9r28`yEuI54$r+KF^p!>uxHjIU6zYEIW#{rolcy=>u=qaGA_Fz z6px+sB}t*Dr$^(p=io5hR1XTaC&Y5xB~0x>S<7{HG)+XimRW;3#(YwSZ91Yo=TQIn z%B#3`u{iAChzqLIFRhM}znu8`itt8~ZG`4Q9 zqrX}c-IJ>O-}zo8{N&k4AtuJPfdlvW>Q&;jV|TAcAWP3=My6oZSX<;JPPlJG1|!_M z>d!iW)b0hqXO zb%je$_wU!@vfJ|2YNVGrjBZ)Y-pMGtNKX>vnrHKrfbtKwr6CaenO9yk^YHCs#IYM` zFPDHk*D(Dk#%U<_H>~Pvetx#A6M_{OL)sPVUZA>R)kCE^E+%*_tuCuQI83&Sx$>~j z23{{CyIq8!{iGhUMuJiFccNjX#0?I&w%>`W(+*Y`p{%6b0-zE>E6fI z(xMvynES9xnDQG28@l!xy9l;#Zr*R^(P>?sAwT@MCxKXMUSW)b#v(?)9*wDH&r5c& z?WDPAH)nYp%E$~h%)>yBmOaB$~k6z8F?on1{Z z?q2s+e8Rk-M9@)gnxL3`&zWUcXy?wItkEq(SgHv;*?xvX9NQCqT?-KRG7~)sa2uw3 zcq_Z}L;+7vF)N+-zpny`#Xcxn3fyR+bdWgA4TylgHyYXe9R&cgD2Ee}lz8o`o`iHj;IsmXj zxl}34N}bOQJa!KLlz+`i(f`&opnJ6CnLlcBW$wheL>v$C6S^v}B1eQmxQI`JkAu_c zz%Kw6SvV=yM}@BShz5G@Hu8)C96i-nGNtc;$H+A}aiam06GLPI< zUGOl2F%XA=0QbiFK(7Wy28q{`D|dVUiL$5rUkb$pPW-%%XJgULQFEh)#OuN~r&B*& z;iy-xRyyYVYq$>2s%#CV74QAmufijevgSI1HP9u^ElNHt!4cduPG00CX=c>(Y8_7qHID?}9#8F?k?LIm17C5vV6M5ctOwGDB*1A>L??*Ij5QEuZ(6yq3~N7kN51m=Rc@qH z>EM;XGr<#{&4496`%OoahxcB268kx{YJd9dPxpl<2;@)y$E>3KZ`+LNQ*P1u3nQyM z;M)O=pYV+KPv)GsGUa%~p~Bb}vi;a{SrLCHEuXOQRy`P!zxuYmj<>`nWfB9E`SC{6 zPQZ)QRMSkZ$YHnA9z(0VykA$Y>mzG4V5<}E-Yy*7pD(d6`UcVQEvRy}xyl_R1=9Z}w!F@%_$53rQ% zNT)0{2b^ZIS6>8mzaJ(`eT~DA_zJFh^SqJhQsa@?VuxIEkX$bfKJgox)6qFA1C)@4 zB^78|3%;hLP{p{rL+!LeR*j^8?Ei&YSWGoQpbw*ZCR=WVa!b`6bcx)wQ&b_K#@MfG zYPhKxSs8jNynIH$h3lPF<2s&$JsKizM2DP-9V~j+PjmONZeU)-u`-OE=xOadXh<~0&wrzO6v4B z$`&vX{WaxghI~V4KEx@#KZZK2d$E>}^V$+@P-%RVSmcF$8s*tHHHb%*0@qLee*%GS zyK^Q(F#_1ARNzWSPK_c4m$G2@Da&4tGWa#qsB*Amr!P!^lNEOHM*KvRaOhmi6#W$V z)duT$_5PjWXd4yHLRbE(A(ou+>a+dUOvlE&-Y~3Vh(T!+F=zSb`;Tt^N>desDqwX1 z=c_4vrf17x=k{{2;;gUfUCAvjB=@!{ZY|D9h7pHYq+4yFrF4plHKF%yr z#&WG1T|QlhE9+>K{?GWeMFC_t*d!vv+ifJEvgD&F+T!T}hM6Om5SKp7hatO$tzTDl z%J2(|f{UGzL0vV&z_E%IpjLR5I|~nk-FaoS0SP_ zC8H=WKLwbaL5_upD6h_ne%I_?ao0|H1f8n@fuRSZl5e4}xHdRV62MQ9L^2B=ck;&D z`PqTG080yH%f~au+Z@;m-muG+$GJGy(?f!-8AmLwWiWi2H+^I6*V+DWX*Dn-ob;gv z!#BYSclw`BJ#!5BEjX|lk7%~Gra-z-b>BL$x=Z2Wye$UK)K0f`%6dF=f5q_*7MHMo zsWf{8V(Sa7JD#m@M)%o$zA9fH)mZSv1?>-Rz)sy@MlJ?n_Muj-XR9$jWn+KqPELyJ zoKK#PUbN5Ug2(LhZ=7vUUtb*Nt`Aeis2TiFGSr`=udz_Y%{)-C!XUbMV7&yXW*c>+ z%)n&gcgt!CS2qHh%V`G@5V`9~n(pNij!4O^;|5$OnACgxOKK&8LHHMz#<~~`Z>4f< z_KvqqH_>Pz-2Ht#Yhf|aac1W>GGe$`MT^DCf2J{GJ>oIJ!;@o=pMe|x?T)cr;*t6G z&FVfF@)|hG5A1De4FpQLs=#{GMk@I>iTnytGJ5YlQLSe&pzqBWcE(pQdDfqDs^Mhm zO0?uDzS}PT!X5J5Xo41uXoyZk;p9I{3>7*~w(oJXGmd4iS~TU*_nV);g&{7|MbpFF zg@C@TB5%-K(ErOK;)vwbiF*%LSP>dF;E$7-^pnNBUC6=1GVmmhqhcX(9OEofV>iWX zI*E)xO11oA8Xx{*L;WYwR#j|_gOyq{?^G~HR|V5w#JNEEfsZ}{p3uz;EWAw!I>*y9 zk~NZ8)i9EXWeshYIbuSqYX;-9y+7o+@8wNEDax_YrT*Kq4UO%8fUa^21d7ekl!lPq zB$t-+_Xh^CF12H>6aWQ4AIJ^F1A#SOnY&vXDtMLfK_^pc?~7lDjG+8*iLEalNW_jn z$(e#SXtLA(=^4o)Hfqk1wJi3y7Pz^40YgnYNIv4=518vAHexU=;|V~@qn;9sO=r|XZ^i?5q>(_BM{CA=*6on_K8+qYGT045(rC%{o^BD?gT7 znIg*)HcigXo8afoppLY6O34+UAqLj;XdODE0k!jKjB1JU^47k?5>GIa%}XdjnwT(e z)#_-MenGvHZuXaJfU`S2?ByA`FXJb$@_b>p`@k)`xie#!We1mZMU!yVlP+Sm61{iu zH0Hp@-Rak5R_2=S?L=XY7c0G`))AF{wyWO%aXDf!=af!+R9V9jM0a(~@#8yI50z&9 z(C8466InsGtk>PdLNYFV4T1O}y(*+I;M~MO+)Tvx4ppz`>v_hais+3`qjlm_jgUsP zQ>paEM;E6HVk6D{{Nz|nuV-XbH!;O#2!nH<$3k&hC)IS3d?>!~`)fWnIKu^#BL67O zXxdZmI)4V6y;lR1OE@>8hUFuYsD4Y47AoT&<& zOZB9YaL53V`PPypcWYb%Z;TKQ2lc!>#$EivE=Oxp&y)2vrKmejHQb4>IpNe%MW%8; zLGvtj>YQ(_tt~u2PEj)vw1Qu4ZRzmzQ_&3mbZ$G)fU8c*(|$|L-Mw3r1AIXBKvBo) zpfZrPofAg?mXi@{5yU+IfvugL4B(UC5!RUc`v>-rcu6wJL_>Kns~qysTvVq6@WLFY zXw160Yo7lVr4c$p{&O|;Q6`-7|IO3W)7@(Zj?vCh)3Y8d@yx&WJsePA5v|RWpvO)0ruz11e*b+zp%W-{ z@c}_~mXwpNKc2hbasFpN+%y7SAPBdjwfW7<=oTj2dml$l&#ZkbX}%n%d|u!sOP``C zCn1ab%@3(Z0h~^wQo{-!ag=IKg>qxC(Cf{Y(Yx1x`P}>owhUI2!RErW1C95nA2H9a zB9NE<@f(ZD9UFBUBpj>9CBw{OF=W>yv8K=Y;ByZQ;txD(1F^52+P))^>m}JU<_rb@ z<;~X%;CoH9s(W)iMarzx8aX0q{n(;Ih( z&i*PLn}3=K4bliefsJiGU!_90_>9)&SMeN2e4V!mbXyWt*iPNo7^o7@a#Bxx*ev?W z(px2xmXy?_ZY;1*CIkYgV0YJSu5u)v0lDF0mk=z=gxq*^I$|y|vP*yUz#v~$4B97C z{SEM;z&8QH>h%+!UH)!a!#?q$@?r5%t9QC;+rrZ;5^fUjr=8P1g9`BmUnMVEnolBR zd_uk6o}ZTzjj4l#+O#a)GNPm+)0sL~99bGgTOO5hh;5yO^*5mVS*!xBMJ2y+qW!KE z+E!3QCa;a$2f+|8X~j*snM%lL!|j7h_k**m4@6?17cIt-NblYbz()wS%poVEJUKBO z2rUEGTIP;lpAZNXae;ITbCDTfq}s`G9v4QG?ZPRbIFItNW&+grex< zil4>_43!-Dcj6r0&${4pQr`+fn#+wNbj^0fpBX`v+Sg7dq5)dkecNM(q@OM_Bv?%O z!9acT>9%$HN5=D$lJ9XLn7R7)3yWhp-j1dIst_g9h9cD#)3W(r&#j!}r0T}KiF0EG z_+{~6E}E5;46dE{`eLD|osZCVwJ?hLy}_?`!~g49(wyj7HEN*o2e4?Dx!Fp|o%Oug zpu0oeX(boh84M5lRI<%Kn$Nl^1E%i2;)ti~kC6p2n{W zxHpzerhah)odWp2Rnyu0I8L!ryXSsZ8T=innR{d#?;D&VyP@!2W9s0z1x-LgrH?kh;NCI>vpe(yc3JmID5qjgAu8gI z)Rolw9JH1SCKndZZ{aKj<2rLqZvwMZ;?D4pdivN+(&P!zrhaE@V^6VA7ifvfCOU;m_D&4uamlE>9bEuSzYex6c;d z2!e%Q(#vbCb<(a1Jr(2oVf&9yby@0#to2{*^R&fqMUH(pGhmboW{tOzP09Hw*&TLH zkrKx-bB(O|8h(95bW1KRv=q!_FAGyRD$$V7<{dX#7GHO3pPMZAj9U@cxIK3B#)S*6 zLA;-Z?o8~_WY!VzA#IME;7e-RebO2RUCFrQ#TG2i$$tW0o#|Xn(c4H@J6Z9=pPnfh zD)}y9ohn1(L2fWcFrHWKk3do^^28T~?k%CgP4`|64nCr7u1_--e}4hyz}VLt7zEq~ zOPpxS#ugorXwZ$B<~rSAEVF&Ad15*~`EF-P@_2>SxbBhW8ScwZ>ZP7cs@%O;Ui)sf z*3QnZXHeOr1L%DOB_)&hORV=rp?LCJnqa*h$%`L!Bp^a zma5GmnGrHv1ndR(#~pYZfSm_fKN(S+6jWD2m&AAN3ad03%<8?Gb+!~_4-LYpiG&NWIY*5iN(!@wh?dVR$b?!wkcfWi{*$ys&TP5ImB0O*L zCfmGvTw_KWCQsCE1K&@31DE{@0_Fj&gT}sHZJ#%XG$$MF(k^f6cFd1z8Ps#IH?7goHswfMd;YZ~qYgM=Zi^)2jR z*8_YPT}nT`v|npeu+%?boszwEbB|@HGS+9xn>Y*Kv|MQPZT{kHS~yJS`mh2!m!c!+ zio-$sTt3YC4UNmazD2M z8jiD$NxC1JvjHj*byHA}N+4CEfFwts_VBbKmN-N9cHvg3l=M=l=~=EZbYI@QDxO)T zlQ-bHJij$IYoZcs>a+sI!d4R%)9Ra@<;r?>vL-LHvb=s+2#<`qTYiT1D(s$o_e4cN zyVYQwe99(0Flfhcc!o4L4QU%RqSU#(P`N$!;OH;->MLLH&R~YOJ8HhFNHg-MY7YjL z$}@z;7PCk(`Q^TvrzrdS&8vhg8Vn;O`yv@#ih|%FxP|s^NWdwc$m|6JNV^9|*G=8d zVUwYJlJL+Sv>{#iM;AQo>=bdxOrixi{^r~rQ{36^2r1My0?^h8mxf|db~L!dwBMyL zJY#^L>5(3n4ekULvBn+Yo0ofNP1XrOJ}%M6cyL*A#ed3PItM5I4yma>x^G2qUJ}Bw z46#CWoSx%ziupdYJ(iZi+f<*!;O z`l89Cf0C>k5n~P5*wWw_rAQDbnz~`E+ldqL{r~yza{6uZqaXhseIdB{Qif`^oeBAY zAMQfns|`gP+D=QwXu}=r%N|TTMbU>6pO;3Ha|R% z#cnaOO98!JEfTsC7~Oy+y}un*c3>zGE8M(Jm|swL*&%kxA*XbkPzFx;v0W-F`? zm)a`#%f|YjOnm(B-vG0s33|8a>`d)z<1)dN4Q{_%ezZZnM+^9)BDRbhCy|Ker6;u& zu-dCErcQU*X*l}oXU#n3OrY<|^ZUXfmV(j5ted>l#MH@h8TJ*9r|ZjM6laa=)>R1) zHxiC9f0>?CL%0|b2z82)VpvZioFiwPPbFAyHwE<)aKtTS1!MJ{E3$U@miOC*saPb3*-@-ZwLW7Qy;5}g-?C*9}o5gcJE zncS1o84p$;=}=)^CI1YhxZEy1ktA_FyMAcci3_OwmKD%1ICN|=9@TL-M_-i#({-*T^UPjhC*iKWeN02&3?&jS;m z_5TcuMKxEx4sWE5O3QrLIF<_~L|Kle9X%IpE*I~G54ByCm-)p{pEM-?m9^Vj?Vh&@ zJu*MoooZC0%il%iPl1~BFW^&(K(ONV)ksY*4z~@2u-c6+PIqtcYB{gV3ze)MIl1|- zpxi-kaOY*@<+D*bC}&Sg!e>%ttCUub0!S-c9XO?t7dt-I)JsVggebS`wLnGLjTZj8 z6OV@g;;YeRo@+yJKX!~(QW7HET;GYsv=es4J+<4#v6{C#N0tti=KeNjsz+OEq0c;2 z;v85jiMA`&(??6?n{Pqa7AH^TdU|>NZ&GOCc86VP_JscjZln97o_wfGOhO-)xLzuH zF_}ZiN}ZTQB}6$jB073C3JT+|*Dyejj`}CcBAFdoFC#`x9Jx$s==O5|)3WP-{jZ00 zeyrwvO#}Mjqq9>4zDJ-kF|K{uq8T4~@t1h;ezjl1#3Y=GC<5+f+aKe?ij_;ACn@N5 zc9?S`{n$sxEzF%~h_P%*gsm+jhDVBFx1=dV^h`l52Y)h2e;?~B8 z_tx;0SN{HYl#2G{qjDUpQiQ(e90jfTn+8aB7Z2nzNAQ}*`!hANn~BSB2J6$oWgF9D zJlJV#>o|mP_&kE8NKDcWQ@)w zcHf1XR25H}KxCV2Cl&W)WuzuDqv<+lwRH;CS(mA|urQAZTl4G3WJuG3QI-4hj}J^c@ISlwD}{9TDTb-aVm@hTscM)7~sQ2s=1i#F5f^o zAcHrbwr)Lf^I7>u__H=Us@3eUHDezIY3!fvA2X$C#qq3-f0gFHoMz}*B34OCpdUod zH$bXmk+;IL-+E0+uT)4RNvGL5c$|@$ zYZ(pzo*bPa!kfGg~y%_-ERTwq@gj@R03Nr~PPXn^wQi95-XZleI4u)M zq-7_l83EUpnd5Hb9CaWq30D7M@z&;uQvNx&Xo5r0m!a% znbN&eREeafw0Yz8b<{dGei(n`j{ijf-N8w|UNGd46bdAqukWsO4;(Maw9tog$OomB zLr|$n!TGGRNQlmE9!H;Pm$CkO+`W3MoxkJy^fr6^ET zBx}|+v<8NU!^FMJA@bqCWPlfM)#u-`BrU$6@})}e_5+1=+c!Cx-))X_;bBpy)KoSt z4K&L1ZGJvLa>;r1MfB-oq*uNeu*Nyw_ac3AGI}uZy_lm;WXK2!~#a;O=89x-ajy6sVxZ=Pr)1 z^CdTIUCZwB>}q2*UMA~p_0eLOLP3kIdd|B&UDkf`aNOTQJjt?+@R-a|mAZzjeSXUX zRA{Pac5dG0n>pivymsq{Mou#z0?EG8Fgx4m9(k`yuHA`abkJDQ$v9`pSXH8x-^CJT zU~RSJOrBnEx=udPyFT2vC_3MUOZHaPNRjEP7u11;R3i001!>*+jz^YZJ@fd2M{}NC z?t%oy(rgkbA-%VWK1e324kklrQhpXgoJ-e(LDn$+cICSGf&bWfJ(-)DIhEPzVGnSs zfomDePxzMF!~^)>dzJ-7%IyrkV$gK6t|@W(d2U$X-xLwnj0+TAfZu&#yHM&!Dy$GV zAHD~Fn5IiEklHZLG))WYqBlP*6y8kd@Q!u{;xtiW<)_M}oXAor));REABLoIMcRSE zfC_U!M(jM2atK&IIcZ1CjI#o-PgUfv~ zomI9fXJyNAXIosdehMT48@ne{b`U8p#qub)JHNi3kDZ;FhCbIgdk_4y>KFJH?A66v za`I}??%h3)SjDOx^@J6Wu(?$w=HlqcBKPi$3F7wi4eEB==Btw08BZ_wt_=0eU@oZ8 zp{vP!e2IW}+$}l6tK@(l-fLq9+;^uE1Te2T6Rjl#B8LNd#)tXDk~_jA&DA77KaSrT z$IN?u%-NJSR52^|A_8{=)d`FYtA!+8-f< z37tENGW~uWkc=HQcT&qtucSe>p7Tw8%d3{%(+kg=Fb+s*kq}Z-W7{B?2Yc-)3Ss!h z4J!36Q?qPb5J)v)r8{kYUXN|N=T_`DUt15K@L8Q@xJ8mwMcnlO?}a-SlVt!bq7`bF zb%8Zq+XwYN#@2V68eFewVcV_tzL$)oze%cj(*^i2KfmEd6EFCyNo#wAuS6!BgWZ*# z?Ygav+EL~OThqxl&jVMEOpHWER~6u8{NbE)n5qK0bf!l!s8Vh=6#A~USLmF)=Tl7c zO{IMd;l@w~ZMEyWI(K)DE;z8d0|2R6+xTf#4 z-Jh8=&qG@)jI|>w+o`SN3W&0=r*&Z}1u9fTl0boxEny8IKv?D(Dp8SOE3$>9LIDvH zh#^1{5=JA5$|hSj5+X#x5)yxkQf%~T&)cMl%21f9175Z zndb2=O0fLERD`+iP;tEc%L=5`UghQ7h>A9dwu5V*sF#HM(Tw>um=m)*GTwOLAMKGqgdhIs;nRyd9JLC!+eCwu2bML*z0?5rxaJ(^*qMG?pfPDG`CkfPC)z^t)zTi#~FR}WK1+Q-w=vm#l8sddkq;S!wTyh2HA zFXN>_2K&v}Q;c`}RlGcJp63kkiWkS7nkMhWFFD74Yf&DInXnwHIF`}1!qIfWQFW^M z&+|*~9%Y~^CuepUvHhEvkXVLo`3+&@NY??$o$~03vwIVf{=95|9n=W_;U<_|8q>}U z4+}dFLp(nb=j@TUmTBQ-8BlI#`L0cHUH#yM8q{+Ssshp>jyt zn98tJ(eu3S`Vv~HD{Sh(gkxg^FxJjeiK#UVwJ@69!R`yQo?g30U6*I)%adE2NTwkm zO)qHpcKgGdIF@pFj|dW^DabmwBLJTLWG=)#;JgHs^QT$}t6f$5@;5q>Uh5C6Q6Pdv zNsEGDi5r9t7-!OB@%CDZY5Bt<8Ys?IXQ6U`-eGE?oTvumG-9eK@}Q}i2$sZWv5dY8 zmf`NNuIDQmu_{J5Yem*5_ap1L6Ox&k(dnl7|;cqQ<>WJ1ddFBNK6`;dJKf5gN54#+ePz*$|*s6-P$b5px0@; zVr5)HYSxf2##e&G*p>WuEbp^PG$cFIJY8YfYrfrU?U8i^07=h>d#YI6w!#n=oYi1) z==J%%&I;RCe7@&>XZ5E|8(#)VQMPvbF2X{2lA3`++mgRNNPOsj2z97A1pPMQ!o;9+ zaWKdzjnr1<#7}pQd=eO}W?k=d@bPpHx^m@q&~KJa!Vwps`A*}u*WxOZ)RV8T>n2qNHN$gh)oB>0xyi&*Z=7n7FU;^!A31WQ8h&&7OMQ>V?@f(&gb$yG zXOw4Fj02)H-V$=dsgHC2VND8I$^l$lN4K}Tr==hj;@q;z2={LDKUuSCkncE)}kg!)$2^CHgrBKVklJK>T12iRu$J>k~Ymb(F$R1P-E zmo#>9;uFs{k(vjDSgo6<%w^h>`?qoUg3!oI469|T3OD&p32mf8YU}n7Cgq^!tUkxv z(SBPh_UvLXIW(EYC#MQGa|Yvk)02{!QuJMV|D|hw=&bn~{6t=!2Io=(;eL2jAGH7z z6R_DLnc7%DIlv-Ou7vu7YMe}$>~*O-B-ohVH33`fi=1~YZk_C*G5+x=_paMrN(5%< zxs#y1Z}rlHVs#R0hor7+iUav+Lm6Sk4WC|dtldZXJzkb=OvHODxpc$d78e#Cm7a|l zOz14WXitN_;b{3MlaTYyGdxSc!umB$w-DE(Zz96_RTZD+QZ!_>FG0e0mKiz;V17QN z?3sow{%B&dc93^BF$m`K)t*?*Zh=QyX=IlN)a8w#@Sf2Gg0Vkh?M8QCbxTopdS>cD zVQ2s=%is3|9i8kBzoh3FOs%V@46#?;uPP*F%l%^mYTR;j2+bJ}szU|}*xJm;&wE$8 z0--6$^dcvgx);R>NQPG4b|2x{{o2)uW2N8up~QVFRq7;n+|UMCbh_Lu%Ajz^WY*2C zEsO!_NTs?&`Clf!zC1C~2zT#x&SDkWIxX13sm`AN^oDR{FxJ<^H+cNaS%qYo6{@8? ziL(qzta3i!^?s~>jxQ7rfBN7>9{-<-b)LfH({|PDH!mcr|9(8~_?y&=KyxcGEj%9F zBO{D(h(r?s$tq&`G=HNsnmn{L`}`7lVJmycDYkG@+vrzbKj@s%b<8-%4HLn~?%Wqi|3nn4mp%B4_f!oiLK?nJA+9P>Unlvtq=v>L z&Hh>RqvrA_e)N7%?8MBK2^NiUo`Uc8-|{U_0+^*}vnUowSj_y6$2T&TtD+hF$B0BrMClmCGz5hz ztu!l13vDkCMp!Ds0}s(j1z(pOdblZ!!mmVK8_1hd$R3YZfXxaQuI@!x`A>NiC56YW zTUa1=VTwH1E1y@VdLH%-RQ_lTGry6Q`6Ie90Xg3jFe#Qvke!>^UV3_7bTry~Wkf+x zP`bU8(0bp0EMT2}xPJXcG#bspr;Dsc782YzI8EvGbH?Jsjc;DQI{wAC`{1QtBcBe( z1dyRfr9|PUy-kT0WK>rq7VZ0|wQR;^BrD3(pUGs#jc4OJPUnhBwr8droew)Is>`_^ z6(Q_-_>v+yJt?FW4juqrx3QCIH{~#;H9`u48%}k}*y;*T)}FRDz9Vv%PjS~?nkZ%; zZpKNHuU)i;X@71uJ*jkY?B+(cH1l->u>mvgia7mOYg1|F>bqq(Gh;bOXbR2qPuMzN z2|VfCl|gL}u?$DzbrLB@YtS`bdJj^bYq*KCh_TzwnI5`4!NSjg zZ4{UDwLGMip_&`pZ-^y{&J+R+dV$U zRv)9fFT!?mgDgTR0&1(x2CiDST9C)n3|hkQUa=l7^R=T72 zYD=IMg1y>wA4s#KkI6%)jv5aSs(g6~>i5DHa)5#`KW^u>IDIbGuErIs$?2kn(U8=w zFkxa<8u(kDL=4KrUitB_at8gpomrB!xW>ChLs`yxLka78O(IZ&`j=8}-?j_O=2Y=F z(wEn7OXHn>kT%xY!^B^`@zd7ALA3!ob^BHUSm`qif#mTN=FF zHVVn@DC_u-&!%(Gbh043l2T01LSgErrEXk!s^J$OsnLkNrLOK_ArFFM1A0=@Q~rTQ zOz9qx=SQ}dIrCVIj$7+S$EpT#tpd-j#cnUn*v`?579pUlkNgKrd*-vf6k^Y;1Ok?T z#>Og_QL+0yJR{OW4o&@JzMX48-c9*CiV{D<+We9J(*p_SOdwmM1vQ`d>^?Jy1)*(r zDu~^Y3?!ol9q?)#*qqj;h~@xj(M5?pURc`IPI2Z*Q^~o~alPIS=*yPW?R$_}UdQbk z4PX56(}ALMY;*gIrDG3@smOf!?L07wxXPqqNLEioEUvmxwaBIWQv88S4p_#>bU814 zxrykl`jwt_G)2|X&Bp7wMlBci$+5<_E%8=Fq8dOe5V|G#ncJT>7@(b-6}ggvot~^1 zA`J~kh!y#eMEO~gs8@eAKW~21H7^Z~>(R!{E&R+3Grf~Nv~lbQ=8mdHoz$ycc=Jxy zc)s2zYYEOK%WV;up)Lpzm;n=2Ib^28ME{AaeHyL6ADwlup8;lFO3j8yk^c886@r{b z@-;EbAB--k;{vIpqJMN}bZ3W4uVwDAAj+g$@GIHeh}bD+Ljj6~2rwfKGlo|0D=9oz66`B7_7wY3Ije(9Kg+}m?QZn( zrZlC0bJtd0Xgk1@e!p+7*XJ8WAJ=WH4fA+;?g~yMUzxzP_IIBrFhCP|Ek28d0BImBM#KXtVJX~nK z)n88@Ir(!e#&#^pmbk(4;pSpuqb;W#ot7h={&D9u#`_fG!t-pmZzTBb38`ywWoeM{ zIzAm5QSsG6^&T}r;P55b7T}NSSb!z0&tr5+obY00r)R>?u^xE|1c%f2NT%0#XS!6M zKo$&|2s6*}6c1oq9RA~^tG~f>``<5jV;^uXTHOl6X{q$U{H4SquJ`&wmqdGK;r%~c zv$hwztcPpInOO6mrJT&2x3@J)vV{oFX#@Vp=BLQM?14{KY86gWH|BjeYpb@H-0sjp zNCRGBXRkU;SA&c%hSeA6qRX3Q7`1Lz_MBhs)0UASV8bif?4Ea0y9Z^)YI!9{l&pEGR($qRH^ z=uOMcvB~2bDJwraop$MRp2SI>0OZKh3Zz}#G`ZOTErg$XtG++P2eJMJ(?xcwVZkQJ zIvsmrnzM~0uf1i&HhpFD@qIHqnRl)`B0xT59<-Z{EF$V;nhHxcaQI$YkKbDMPKtd_jS)=d6kn z>|ws*W%K3!{|NOYm9H}4o68E^!-JxM)aozksTEC4@tD2#*ILK^7C8R&s~`*}>8|ql zMRYNcnPg2tf4vbJaD7~>A_FQng+%A7V-F*uj{KWys=k`V?#@yNCHT}yM#IXu87Pz$ z#ne<^{3W9@wfYyo6K->7ez@W6ld<-L&(vM0&7UqQ8+T;1;27&gTCjWqrr=NvnJj^R zEIe6xJN*sm0m>i!0P4F0JMDi`=<%;U+2W#ug;_43Pm;tGapCZ=DgPl^YkBOM8^zR& zAGsWJ!%{dL$%GOe$3QJBmxcLhsy!piHxib%SmHKwtvlP3l>!oZIF780uHC!!-7+Q_ z`0wd+@8Y~nC11QArbU-zEe}}xi@1a>Bg4TTy9^Cu!E@Z5eYZD`OhiNFEBzd$yyM{D& z$D}S*Dc=CR*9fdQ>g%S}*-hZ(YB%WpI1rIFk!?CTG&&f;Be2^%>(xj5n@8?`edW5f zEwmU`W_F&g?ng+Zxp=u3X~5ZOM(WU&F(XSl@%F{0j!h`f`1)TRpcr{pVw`{#^GZ>Ru z1&o%f5HxZu_D)?AW4saVO&TSzjFQXGvQ>p9d(SV2d)^8A55ZhdjPx?~#d|7Spuu)dNR%CFs2fUpJ;m(S8D(6N9WD2am8J*XS`QA%h(dFRSEOia{(N_d#+8YZG9 zSx<#o6~i6>YJ=L?u>Ej2M&8Cd93nATfSht0=MwIrp3n8MFfrr3UvKu=Tnx;WCb$i% zpo7)8U1Yx7E1Z6m+t=F(Z}cgMTX@u_8iC1?t*PxxUy;Yg7UeNKrJNp@AG~ul4Dl{S z6lOi$c;|nDIaN}?gFg)_z)R)6cXILWnJAWyT=~4I9~ zw`IJd1sQS}i<@B~7_OFj=Vhy((|DW>5QJa}4yH;8!Txkfh#X_xXlF)}ro+V^e)C5| z3Dr=T7I_N?Xlmn+EmzeA4b_Fw9u{tMu0H@CZUwu_`GrS8EY5EdQ+7c~6h z{CL@M!L?lN4;t1K$W#wEZ}w8lff_b?rj4ETxjKZM)lCDnyw#O2!DbIo?v0aZQ3Mt| zeqQgtC6trwP@XT!$R1?#VQUy8NJgNmP2}}Z>HUBd-3J;JrycQQe4SM9N&y1^Z77iIMzr-Aa~POkCH0v54en2cpFATNz2-j5nnYDd+~pM@}QIm zeTl7+j3ldjnZdDAml8=h)^oEc_Zf!!hPNLU`vYMLWzV`!tk|{;I z6G>kVO-q+7b+_y4?}$h8Y<$Vg@79XLded0J$S>eqyq~nq?wjhJiPYT}m0wpR4(gNh z*Cc%(=^3je&z`>~!1LFVosls#v~(b8C_31O_=MXD7hX)phtG#68?gq@x$p5_@UQpw z@Z{59Uq@kSuBkcmZ&%e+F9yTS$NezBS{H$_(C@2bt_1~f8JT!Gt*>(!j3Zr=F-#Sdv?BRE}Yzgp5DvXkQIl8qJ@r`kd7$Y z_EU3;j3^(EtfjZvHS;U%PTYt0{$|iMi>etz~z*Tb|?evD;9670Ix|c(*m&tjN+Y10vszjZaC3nVb&*KvLID zj7Ip}E8`E-G(ezadWIE4O;|%BXnVJZJ(Afg)5a#1h*02?IV8$v4E0}%XjmCYFuZ$z z>Ej!6fam&*O8}8K+E3WgwtrNu24-FoY7o||w~pTkvuU%l!VJy#^E823OPi3-6KhGN zveN55fJ|GfN{YUJ+{EO(X3NB9y~%>w7ZVbVy^=8!jZtYE-1cEAg$NhtrTU0Az_3E4cz3oNMyXFPqWI%v_<6|}@vY~B9uW&sB$8c7iB^yhxJ`vLC= zb^6<-wi-(zk7=|k9?x8xfO52dlV@+{mk(jSIIp`d!V%cUXbAlhXs0%=*ss3W<&8#& zQ8sM>DC`FoY{K2LKD@nM%-chxU$4QBxsC!P)sh(RWo6ao+^zc4Vj(B=beFSBQt#X# zG-2Do#cp?CTPUnA{XJDBJ?Ao=bKa+}y?h+*1B{Kev72yF&s1!(#Oc7GwmOm1lb^m* ztNR7+1kNtqP)$##Yb;=hQl7~ycY_G#o;Ny`={Yb@|#-4!F}FmSn#F+QumM_16Ci;l)a2+H=a2oF#?VjLpu@_Yg33B`*TD zMG}<y>31Ce{Ouu`B*llz!eqbqNDbN@gsg+Op9L%t%{KUYeDHnd`bhDo`nO9>U zOpa!E0ndl$#8B()fSd!F@&+ias)dLZw=8)}!`C*JdyfUwSvF^+^k~iLbJ;RQL_|-@ zL0zaFQC>t;KTNcmnik9K=vgOjRQHC@0ma2FuU8?f{s{!c&!?L4g&Uoop~Z<(v6QLb zLKEY!qP;vlv!5yJQf6i^R?4yP-kNj0+YGj#yfihJZC~AoZy%1yjVRmQwtVfoZUGdJ zCvX2q$A$W<=R(o=58_pGLW^&$dq#b6aNm^>qwjVbkW%~J`}K(jI3EVQm%nnMmXs;i z-T}A{UPeBfT*6A2wMLGc+Jp{Rj_!F&v`ct*gHT#Q*KDRSy~SRZVQLk?Lajs8AkU`x z&ugbO&g_lR^r4sMnnx^sdQu#zh1?Yo)AEW;jOC=R68p16j?O%pv!RE!^E?;JZfK5t z2Qa|3D%;nMd)SH9AXT1CW4NcLoiCnD3q5@RQX-jvl-)aiGFYCY1M#_iSevQHwiy`b zA7|I%+)BfKfzujbTUMsrokvEK2F;-|Sqr7#gH1!A^Pu|VDsp4%w*Ek*3aM>n=O==U zc7Ft2)ay!8n z6>1tx4zrl*3~RsEI+?}{$Vu;!PWeEPu(9w$OxFp&+uW6Z#G?0|90Qw6g`tQ`9x(<* zS^hmmB)Wc0MQ4Q$!W9>s*)A>zpisQE@EImCvDPyS1B#RQ3LS}c|xXFx$%6OBM1$cteA>;;(|ker3BPH|i&@JdLg z0%7_ZWcZ5vwc1S&@PTBetlu+Hq+nVVp%YNPgM`yR2c8_~CH%+DlG0>J+;A6k(Ig^B z4aLYC_xJ^q>fAGi7|pWTlzb*Te-Ut#(OmKLbb3OU16H?{V#}c&($(9X)-9P>(*2<+qlg1qg)S$c zlihPM=;-K>Qx+ETl#cAT1<6^JUM=2w%GRU*Qe(@kaMnOuRE=4#sLVLoSbD$>{g`dipdCs zCdG%?ka}=yvwk9p%S>rHTYOoB_^&^19e1#%>LI2o=A2oHwb##S^4yqqh>-*}lbU4(#IF>|JgJmspL z#%ItRuBCqlljCQbSaZ0941qW6LN#Xv4661Ux=KWwNQntSpb2b0nBK7`XT&&$ek0}M zqZL+pwxqnu{s3exL?Z(*4@yu_LR#T~W$lr%9BJ0K_+HP~uL2(>x1&!cuIi3wrDPb! zZvO8(wfa(a8I&z%f`rjFSvo)h6j0q55>m+B;A?1fIA+&M9z4*nkuvjaXLN>jgDO%N zaCnoWm!s6;7>%C-&Fu4Zl|=xaoT`qMJE}(0IN{VIJt;f0&?uI>fkzD|qBQrahv_gr zTQAyyKny?trmWKkhM=cGA_iyALo*jL$o!2Cc)W2P>XO%6C&hS%gi#b(k+4`2K>!kV zG@N7s|Ag!=yD|`k<$8x&$*`FUj^QpZ6F>)0#1jteUVs6@5jig=IiA9SDxDJwYr`zL zP#A!&eFAbcM>}&1xLgRX)=WqpzXy1=kXvW(e%4H{Kj*7_bVD3r2BKV|ImoYB;dHJ~ z*6i~fwC)V)ImVLYX*F~JM7uMa@}h5ao6FC82UPAQbc4ov+16Z_M04T1X@Dn9&_=zczg>O(Z?;lYU7h4uHI{Rd@#XnNB((h6H$14)WvSopa zt?h-~?Td#GuGjD#oLQ6_$xLL;2zyi2_Iz19d^@-~u*Ner+Zc*TN(y&p6V&_bpn)&- z?BaA2fKT%AX$h0*e>eJ6u6d(HT7_ecYt|Nvoa~8(NAWh$`FFA+E7L%S|=Hsir^5E8f{&!k-)6H~I;R)j`P2q^UcZPWCm>`G=;w zp^BWG^PXp|yGQiNp)p*g9*0BD$6(Kxjz?krO69upiNDPNvPOYC-IeU>6fsDgW07r} zX#TvE<%!je>|AXvRy~=3CcxJU&YdX08WDmnHl;tu8GLeYKIED=r^-B;70GY=jdn8q zTP)vxXRL&yFGM&)E0Ifh$Frd!?LllY0w@<+O>wa%TKxcKfaxvghGIOLNw+iLzC+mF z91Uv^`?^Ub#gnIsfYSUrt@oz-|N%z-P-95l+81iKLpe1!wEzELR#Vpy}fln@LlDPmv0|`!?mXmWsxWu ze6=Kp+v`{fp}pDR+tI)ItpZ)!Ptaws*Z5Z2I)fQS_XW-?;6}sn!16Pu&S(+~O3~qJ zu708t9i!V!a0*CdKe{`ffb3310{0($72VDmxy_*2^ZU!IwzZc^5E19hKi6;lT+uYS z_Vb|(VDxmUYP-~JNf+Bf*u2h!U=r^;?E!?vNy}xew#MVs<2xZl!WESa*5_6niM= z$7cjoLr35y@G-32s7>G-cqKPz>{v<8br(t| zq!F$?N1OH^bHVSLFsM|{92}cW4F*u=f!!UGIH}ohK_-*wLw5>!+wx#h-EjtVNeSAX z4HCjSdwfF_em+LAAqf2PWNX7lBh(3 z`}!)Wj;j^xW7Zqh13gtuEsWIO^hiU>$7i%?>=cpM+E(+}Ph@MxPmL1TBDFv;Bgll&f z{u>+$*A=#GSN|8XG&CKcK*8G*S=Rvs4H zPO$+nbAi8I@Ii;26o2U zKLF-!X7L;%`Q4@VyboJwX(Nh&OII*8(d7A$+TqQYXrt2X75otLXZN#)f(6!VaStj5 zMI|4%6*~=z_wuY0zUJCI#kqFejahs+IjB$4;~pFEcy295bw#uH|Y(@J}XWJ%8Be zYcj577Qqj}0yTb6Iim%7@jyRW5ZL$Xe7J0z7VJ`;$-iIs!6kpq+~7a%Z^n9Y9xK>L`7n5UQ$M^Z--DOq zL@m(*AZ+ssctZ_5jxYDUpEo$5*53<0CVuQW2ABzr-iad%Gt~_}L6$(Z;cyecAe`|r zMg6LNqp8YbW1`ZZZG{Z8?_%}GOmICsU6Gh!GrbUg+Qqg=KU4R|vNKd^2)<1srOf$v}M|Ve*Za8`alyCQh!>FrsKX(cR>|Qxe5UZ2; zyCCuL$-rA(;mpgt#uff0d2hcC-<%6i2yHKkz-DtfPFB_@n$&@H-_hKWrs~v$YB%hM zS?x5Soo4$BsL#Po^h&rPrvXm_QS`|zKu0(z7VI>T0oI79@EA$%o!hb?)k%gUU$oeg zY<$FCJ=^i~!_aPk;?Q45yCW--*DKvf@JX2v9gBsP{;>9G4nbS?cm7u*@R2-V?N)a9 zpkOs1Jb=8>ft$?~;RS&;70GvxLM6&!O4^$;^YdYWq#le!!Zh{Ut~U7jJI>MWTNq>Q z6KjyaDESsiFO$AzzpC#`iOm1_<~xh5*XNT-QU(o{I?ov{`1?JY@9`0=lz3)%Eh{OO z;GA5ni!~ge_YW^>7L3MWs{~m5%{NoMt}nG+nCe~4{AIWnRyV6DwAAG)GPQ4oq>HuJ z7`uY};?q1_C?d5as@B?I?{8vWVrnR<7x6o2G6X>Ms&Rmeg@PHTi-TRQ-ShmUU+E`L z;8d?rpiDtFvv8)rBOI)W8!&!KO3sIKTk*i$PNKo`!rPgdD?U&JmQ4e-(2D_Ffmq$e z(zNuBh}c{h@?Jx{{NxA&+zy2s|K53MMtE)Og0i{O-?BO6QggUDeg&B2!~Y#!+pB-S z7B|sTTSh>2hg+d61$VV#2-NjxRcXosDmi&Q@dXxNTNBbs^jhEAT&)3A8l<*uxqjz%mW zwb^3#Z5T&-=Ba%jjmL)Pb#OT9{44>l;@{tHEBfN$6VK3OnMyR`dYMqEbflD>y7^=-XLKZXdskGxah_~yTB7wLF32ePR6qInz^rrE`SJwvg5=R=HmIer8us-5N-VOZgsl{W7b zq5GTG4ZpLR|M8DV*J^3X;=-F@_6Vf4LS8N2hpSEo96%sm*cha@UsmYv66}y-*z8qF zWU?M@6B^%jVBB?so`>uC;=Io(`bGIJN6)?Ea=QHK%;-`aJPU?rM$>ZRIbtM|z`NZr zHv=}myQ^^($s-v7$zI#H@yOmzT&Fb@*0fr?k~G##;ka4WYbb=71QND5L_+KSSmzS2 zw_EUO{4nOb@eWH?5Nu+Ponld~G$StaF#7&ADdflWbB|dU`)IXwK0T$0gP0}uK{Dd; z@kj~tkil^E5Q|k%s zn`5D9G5g91)bImybyo4hgp3xaIB1xW<$){E1C z1x?K6(Yzk4 zw)(!5WS-Ece3|K>d~>5+3G1l*zW;Xqz(It5k1;*m=v7OC=0~1`uCoLE1 zUnX{4fhhk`Kh5)&&4T3KoqaA5q6ex}ur3`(oj>X1SJ9&+5r!jVUSVd7Pp0M9zB=a; zlZ$qv3M`3--SeUdRiwg5r_WpSLeQGak>2D8Rwnc!MdN8+#Xvb6f&01XRWW>);P>;>v1wTmm-QK|SzeLuvgNyw|3tq_Ns2q2cOtq3{yr2Q?$532i<{QOw#t zVN_S0Yq&>&o9>y<8%tq7i3|){*9`|l|9GE!-qJ*y;&*=l1x{ zVGm*JT-yrlDod=U4wk7K3g%pkFJ!*rs;L}3>sscVDD%bF;W=3KKVhC8AsUFx>ii6b z0uffGWnbPnT>VJ>7~vuFIVc>*U}vr{b`vBHY8DUfoul7gfQPf{?aTeBQu!WpyG4O8>6Gs{d?Hv!x6nJNRm3Jvya_JSR9+)iM+CF_~mSt5yg{~ z8RxyhrByEz+`u8vll#qU|3475LfFciSy)J6czWjVz^DO|DLc>3w8a)_KXA#0p#FDl-F`MVo_=DXLdTksYww<{V_ zes(*agVcn}>i7@;0yB1ljDxRprQt9H;|EF6z$8oU68@nvTnkwD)9K2DM@~xsR4UQq z%}BsO8wiAlrK9&f2f*y+o+ zU8O!jodpFv;VVommVp_r9~*LU4uH4bvRLmJ5Cn#0d4YAtfNPBNkpvNro@IU~((Q9) zN_xjHFN@==emPqH`!9gc5c9jRYp&PfRI-uP$zE|zOoDs4OZ8zQ5>qNS4#S&2t!t2# zx|}H*Y1&BX!0)P|`9i*GSU>vIkvv(C)Y=3nJ7}CZ+o^jQG33i{2CEB$egZm|(U~zh z%4)2-algYI=|BFL(x4FE;4g}XBp{;7|KOXSru}deo!pyctU{ZarZJKp(=Dvm-oTw{ z;Zf`41TMGB0aMsTyIv_&rhR-SAxxdABKkPk>Gr-cche*F~%J? zwd~=rjVg6=I7K3s2E1}*KwE|HbHFR0q_W_-;rUbsUN)Y^UVDsP3c}#_L9=n zVCS{)Ae=qLI#AfW!!Ox>nY=Ula$MAQeNVW?RzYLy_f^)&uTR=G9DK=3aCfb+vs#wt zhJ+_3+f&)ADn$5lKPe(#$6uucvE^(n$3SA&?R0w7uHJ@qG*=W)SKX@cE&lXB)>? za@G_I>Jnt3bq1t+hK3e78RC223PhMqEdVi#q-C|KyT_)*i^PVq#M~KKE(kj=^{!()0 z+S}V3GkvTxbgSy|(@^}?6vz*_D@h4^e6=~79s;^L=pcHl>9PMAU8agL=2D(?s;38R3x zODnHP(Cwl^nd@PFPPSS9eRLC_ulohg=;yBg-Xr5b(n>;&J!8j%Fm8R1JTz>=S?6h$h+>i43 z=;YI?fr5v{ODY_?!J-`K{S42rT9!(@mXiBnP%rTq&e&Fg%W4!*!Of}A?H`uoXyl=c zfZ7FPo~!#|;qIp=)QIGCqrB~Y&3TJUq#92qHpeJlz4-eP!r?Na?-T+=SMSS+&d07W$`+Utc`*_d52KS7}!+F0+)t9yo!8E!xbeqr=_!dB@LRWn`v^o8q%vG0DkE8VvN)qqt%zr(;>A z3l^ae^@u=aE;z@t1WX5PmjgQ!M9^`alIieYP;{u&QLQZy}VY4G;snbT(1;4iR|;2#%i3Td>V7)He4 zcMepCG5a>bO|Pr`Ioa^&fQ=8AfdtBoYgRT5Nis1KKTE`5PCIueXTK=0 z*?HmX11y6nsdw%NR`5}05H4d?Tk5W^fNHL4t32msIZMT|2&i+%&O%XJiC_++1M6}I z8*E^#?!ijGr(T3mLErL#r|Mf56n<#0z>ym3rEcJLS-Zs2WD3r9e4rOpY)~Vad^u$Q zKFv4w6d9&#B-S4mh)__m1;EUr@_ zA?J2`)%ncMn6c*g7S@}O$n1BU1bn%#+5!mnO$$f5onu6bv>2iN*7fwsd%)*Ts^<4c zDPh%^_5Qp~&eGeKhK7v^K1Y832(&15Lx&bQSi;Gu#L4k!$x~?H& z)`1zsh%I6vDFzsmL>?}rm9aQZ`CIqvR-X%eT7LBF~vU506(3 z86_A1LdNK*!Y_g@TzK^529RZ;Jcxv#<>>=-=q6pq=ft83(cUX84W$@1(k9m%g@uJJ zw%0&&=46D(D$;D+@gj5vd(}%F)=wILIY+Pj(a%hop5Dp7@ZdY>HaEABhgj6s#=j;+ z>lsrLiC6|@;L}ia<8l~It+^DGhFt^-j&P|Nu*CZLZDd^Q+`Zsajp_6xoMT%#ucJ!n zJ22+!L*8}8-adCs^ABT6J_vVJLX1N@kqu9AScu%ET3W+=!1(N@93BomD~GxjjQq}S znaAUo&~2}J0tYXTVL3jJ6GkbVoZk8B(G5My#5#nx3B0sgHUPJ1(Xb~FI*ID;gj_DZ zSE3J5Po9}t2!TF|o9VdgRJE0s@{{u2*vaO_w@!#e$Oux1s>!7nZy})XPIK5hJ>?^v zngYS#8Itf1KsS(t^ouk&q4&L^pesyT7E<-ddtk=t< zqVJ#XmglK+xLK-)CBJ5Wd8g`p@TdMt6oB;g%MwBFd%q-0kJ{+p%D!>wc8D8adv_b$ zXu)+K92>s4L4fXvQQWp?G=yNh!pg&*3O-vqHXa&tZtTjPJH6I(u-L-mI;CzPLwK&w z{+RL+bh&%X%@O3pJ9DG2?g=5iqZGItnVP;Shei7_)s2sD;MHOoqKuB1y)q>Tw9&M? zkcOaKG&60?AgYcRA*^%mH!o^Ew3T7>+{~VD&h)!B3k_H96m9@BOIUw+_bNQ@SnZm6 z*5bD^Uth>hlDFH!UGqUw!L~gYXgyVXQR89`7};av6Q{o0br3Y}8PF&#CSfErw&5c0 z&DyG(+)3bAm(;jhT`Bj4s1gJyW4mZyV>^*n6#m9P(6vMAC~T^B+V55;abu!MCe~gv zf%p4dwDsn0&PPDS$xtJ+)g|^^IIEF<$Cp|FZ>Eu?K5|MTd%sbj+X}Jy|RK9 z1&ce4U&-s118VGpQ!}aWeS@{^<#_h1ve^21N(<{8GOLC7)10W#A4%e#&J zgO{%vuUir0b33ht>fN?^gGKWyxR`v2#BEHitp*SSJu9_FFmW6!;iYU%IEj$>uOAk0 zII!WnY}=?Fo+jwu4-Xe4^*RV}dr_Wjw!5@0G2Li{=UrQ_WE#1w(X42-z9;0p9-hc{ zXfROC?7)#Y6J_hEA1%p*VPLg)SME0M7#<9|n2fde`lwMeUv>Q9D=^LVy35NBwTAYt zr9e0mQ&gN4;AX1KX27=^=67M@li2JkWWtFnO_8t47^THE{j_TZHb{ z0?wP9QOK}X(!}EZJhpXIeD;FF}gnL>K_S~b#ogf$eTjF7U zP!ZO%C%wg=7v()A3vV+Ol3?0AE7S|u;=CdT3){$2&%6)MF<6=>G8_-Rq<~tjd1^;@ zpCvI8_l>DweEsrfAu^X}|K};EECF z)0zlrgpFlW`Nd$(Rbw%5l3S|#M59+r-AG4|#DioO<537!=`_qhJSVKN`FL>gzXgx{ zFaDlResa+z|7CgZO#y5*FiG}hzUYl@aA52_olampX4uom%4{DWajYAfN8~Ct5~~wz z8x!*J`Ig{>ex#Wu#E*4|!$1~X;))$=aUk}?UeHOfC~TImt~Yz#z(#|$pvgL0$z-p{ ze0o3$lcFjMj$M&>JRDOrM7i(bYZ9ywrJ~<~ z1mOxPktQjp!f&}zSaZ%pcMFS`Uw4F8Qts%b;;$=?BwRt5@$|Q&qsMcwwUS#EiRpp> zD@dOG6y^a+sM+<~RB}1D_4^CI9=SXr1wF$64GB&&pd#WX%D{RgI(d7$$av-p30{uD z(jSu_eD7Y>HJ=+HY~^gWkw?&?tAvFZ?1SS^`H-kbM>~_*#kL|y1jAaLe$mBWU2SS= zXNSHx8XKcgZ^g++5(1PnJ9*EqP;fL3GmO$)bbEnCErShk{z^yPh)YHnabsWCcl04{ z-AMELNl|&3FEM(YU%zfq6pg)|S}namNu)WbJ(zQADF;KMZBf@V8F)u(c@(^&Cot2D zi5%fxoxA@)Wo$|AdQtfoctw`+4Czv0BZpTo*%KBxUK!l1vOvMZ7yCa=Q144$U1n*Pi|ODhV*mbdPUEXgBkpzSpH6L~X`kZ3Q-TD-H;s~Z-4t;YvHKCLd=k1Xvuks%69f;5B2!r{pdhu=L zezRKZ^$J1nIxV<4h*F6e&(3nRy(afm(UUlyry1;&$o7pJO7U%X#Nbx(CciD+D$bI_ zbcn#LkKcon=zsmvDV88@Z0|dNejeRXj?y@HA7~62{prh_;|RFF<41#BR{U=NDM9gY z!TjpYFv&rqGmXjI_f=%QTjuj{@tx;Y{)Lf`7!!T!bFFFuyo= zNoVpz@y7L4pctqk3GWusLi3fJS0mel2@pH6-<}0;dka}E z^U)1@k^^?q@rFw~bPR+8?mxi9TEivZJSbG3ATC_4967rtB~x1gMM=PdKnxRou(@o1 zCE#;&eSKp`dMANDEij+DF6OcG?j5-5w;*1Q(jw{<6rB!e>Ht)ydf%-Dl+fn?Zh}xOM)iK zaK#uywF;(B@5Ci_0)JX*Q%8Y9*sLB{di{dvR%&dEWGLuYy@sL|oc8CZnO<4FdVG}{ zInfC#L5RUsyAqdjjpVn06g55;w_v(jy*I2S=SHI)(s@BCJEiOhl1iKW|I8Tmm`~_e zP(LrMb*GCZPp?33cXEAI5Jzl}C@@mQ$z*ST3-VXnnQ&JzrMyZj2Gq95J#84wxk=4S z80`KPWdXJ1i`9YF8)3@;Ixcj4c-6~TwQ6c2!*tcY>mnCIrK?X8S-Y?V(n%hrAofkk z0PkZIy#$1Lrg|oI9|Qqv_U7}l(oPlszK*5?^Sv-1=qxkSy-cImTyy`3WF=!S8ZPWp z5lFGri>!H@NK73~(vB~QU-BmX^`+T5bpO`3{p4+0Qv!SAje}FomSNBXpPjHCXs7?R zD7_r^ngj2)Zg%RYI-z^lBaz5hU!2b`*b7q^9m!6uwF&9e2%EezD{?>12oyX~HQe~G zL~dV+*gPDu#Whc0Yr%EFn{+OKDN=R6VfH3@q;0S&VYGJVm!>N)I$wTYu7J3Aq;Uk+ zn%rBO*{g!L%hrG|3Tj%)X^rdBa!e>7{D}OV1W#CdCVogn7zb?T9i6YB45Snw>Mq<~ zOzfQwv(*GO|?&SJV_J>(ut?)*J?Z%)zul*2|IFR6n-^XF+}w$&q9Q zbnOYdO-H}5{EZHjd8XQs<`f-f2e~$L;ZRmEV0w*=41-11D)bGDFiiQA{X_>J(c~8$ zt_Yvu{m66W+~Yrp|7EzUX2k!xf3>3gkiaa~HlmNP`1)Ex_GBq!->yIE9sbE@@v|dg zVbnaJ7H!nk>bI2{r&X9+Q64GC#d#Wl+c<(a2P-QZlP*Hz-ygZEjElHm?)m=QUC!eJ zN!>j3c7~9MT&%-th7D|3uTuuL#-Fp#g20L;+h%R&tpCZ4!loP#yiM5~#)yY$NK?JKEce+%!!W0MUN!M!aAi&o(n&td-enN5jzWSUQ#qOB*utL?HzuXFzapqHUbUtIEG3pD;5lxV zM~C;I13G)=HTg{dE@eiqjz4cF#~z&7Xq7s%57^Rf1v26*gt9(6q=nmQO70^UyKqO}lyp++T+K>l6V@3R>iq||!iyS&@xpKS?H~D0<>Ot5 zS|tD1uW!d1d<{mW@H9M=Pg;r2s(lYGns!nYQXqga3lOgs&HV#xa_0y=+0JuaP|L?B z;djPuA;#S`xAap5!}ji(%TMbFB3Y`R=;2IEndH`G-(k}MD0y4e^eE5mqvSc#n&%$> zWJ2B(KYiRIZ!!(6qhxd7gTUL9JXDTrM8m;v{VtxUeKwInOkG8oHuRFWWzK?E( zom9e0So{Cnw+JbTo*mZ!i0yhuh7ElOh;3L(&QJ!GPb6t(vWB7Jk1!UfERGeJFvsTEo<^ zwXd&jwCBke#-K*a4x9LYv{m62)KZhIw+=;FFV3PfuM{43J?3}%NU6?5+oNJ9Low#l zXFR3le>Zs?cW*6iX@4_5cA@3O+y*xTSQ_o_B+V4jN%n;;6V&tliMqFm+4QoblXgCs zAYT#th$dPFwcJ%oK^d{(rUx&&A=08K&4rBr@MLkefrXw*AGG(sNw}ZCcIV#CYlY^6@T*8@xLM?^91R%a6iRs;U*%VKuAqp`F$Yv)rRuIIVa=Yx6JYk z-nb;MN^9VK4Su<2`}%Z6cXweefP@{*>Pi^I zc6M6QB8xspNhOohVi5eiSu}^5xVhC<`vZ|@Ps(5gicRZqwfLum^qsfSP^>I2@?3fD zP{s_s=!wcP7%pl?_cuKRF6!VgQ}rOr#G<$4rJ`bYW?I{Ty@xfQrcDU41gxi8@Mk z$&~GGYU`)A>>2`E0$7nEmQBscOw}(BL{&@CVfodQ=`Nnz$47e-XDk*e>b=*a11@np zNiuSK_C5bAmX;Q_CZb@NrAsuCt3 zcum$YP&D_d+{L#sG+OeOAVRe}V&_W4;fVlMhwhbQ4NPi3N|#RYz=Kf+Sp*Z+eb_u+ za6~JWLeLXM*qA^hwvcb{7v#Tt&zF%CSe%vR=jBgnQg?QT zr-g4bFhZ=|@EPGWd}vz;#`ot&iREaIVSHfMb%ffw736rltOFl^3nUHO@aiIjAX9t# z`xd`i$ZA}kA#*5^;R z23<<=UnV4KsBW-Ri$CdDSnGUvekoC)KLN>cHDwU`xOB05hiqN8bj^WUY6PPKJLD^< zg}dS2_QW?l)vDU#%kQfG5z}#6yXkrKM>lnB9j(ssWT^s-TlE9iFTt>(U?VZLeM;Km zaJH9(_X>j#akyR66QpQBvyuN3wSRGc?~u?~XD7>?uSPBcKSO%zVN8p!L6Kg?Yk7b@ z-I@nhYb)w6A>KpBT8khUkrc;|a{#7a*6GoG;~8TCLG+gmZ7P9%0cGMlKfe7OP@+~J zA9cqke0V+FtO}^^i|Sy}I%tze(Dka#Pl(9W@r+~zC>b)nOwOPCTRlJ9>Z@A-=>=ZwTrn*m&T33#K?L7v3$hNds4Q+Wan*wiAjjdZnw%#JPn~~gDKQs zd8BAQ!xD)gc0LoA+3EALrnMGsG%-99XRVVs94j5f`azoPwI*IU(*(*=R)<(Jd7y-^ z6wXE!rHXT`H~-A#{wvV8xq}pyMj%{k%vsILFMvtV#wwYz_`ON?3kXT4*~3eJGGqT8 zi%#w4Js35-i#fQ5CX6ccDc<(Y(@o^=sf#4w;`Y!+7z4__-7c-%PXuO)q+?6bU=i5s z#((u?LriARXA-3_BlKWexQTOeoYXuFdM%>^$)?sDPx3-Q5yfI{!vKL0Y^@V40fj|<6XsJH=@;bez;JRQUF?D6Xfrn zc&|$bMc!v8rg^rVf~Tq!e{KdQO)evOY>$}7_X-z>=VmsTDOyIR;XQP5x0H%O#|X{t z>7VBxwf&bv(4E=!eXkbWh-cjYQ#@2pC&g+D(N#!@ThjgWU}f7 ztqJWW-Bv2WJzHP@uP@#$U8AhUX%kU!;%{x)1$MTqyrz0dBYOf9kYFwUgd&NKgn4rr zu=Et*M=Hu%uD5#k*686ei2tUrYWC;%a->c4+MQx13<_fvo8z0q#KHaMG638+lE74KY(r4D&lyMrk(B%QK}2@4zexSo5BrI*yO2B)W02eK<~T33ZK6R zD@WWiw)-DOrMX#TtKkr%$qUu4$;ui?*v(Trp=v^{nc%KUD|N;i*jhWG7m0x110^0y!pQeTbsR zb|f~2Y-lOLrP=R3n}2IP-JL848T<^GuF0k*reVqFUC5&YvR&j=wp_AU9c%+H5!|qf z>O$m|tLuFY{H_Rq7>%VLXr$&R>(!PP6ix5yay2mD6Bn2WcZ)h`+zd2PYnC#O} zNdC0dXzW6U)TpE9j?+|5$|nF-Na_u@vOr4Qx@H%i@SlbV*-dkJw?bp% z9uHnMDVZ+WGvf`b-inDM$%!*h>^g{X%t{jdrTdiI*UzBvV95mi^ty9IUqZG!!j_H> z8|>DbW!e{aCE*r{3BvceG=IbJ(HjUnWf(cSZMb-9a-xR@iZnm7V_yMT8*~WD|;n|#xRT+fbShK z#Y&YUO>dptW0)^mx`-zI zonP#pCeK@%WWHI4gIE-;PuY0J{Ai&z!o5}5VYg8R*N;okN%>zXOo~W&{cKRpT5*&6 z%BNPVhfI2BKzQqN$?y!0e9Y9vMaXK%x7Xz`y6`X`&l=M9X7D9^ zqT!ieEEv!&@|%ikou^ATz&a5*J7+~!PL#t(DUJ71oznI6VV>ufa<3a;oD!_u*#G+w za;@Sx-O}5b-s~2yM_$mp?^pT=0lJ`0+XzG z?1(b6@?A^JdFM~7mA28cH+NZjLp0QCQ=3WW0&{#YQOG<1am}fIe*B7c><;AijGdy&5S; zsWqC~etn?4)Yf&pGtEU}Z73LdsTs)O%>DLd{=oIjdtpcEB>#9cY!I>tJ!Zi+Jdl`N zjybmWrQLd9n?5&TGdjUQcdByDlm^ACHVYt%vutezB@`LZSSV6yC4Ve&5C{D^h`aA? zs{ZcxA1ff2Y#^hdzOmMf3GiBYR5Shs@{rn*hNn$MPA7|4L6wdvh24QQn-kJ#B#BcX zy2f+(LHpR@Jx$8GO=cVu3DY=q|f(Bnb!k7Fe+iEYy>WJYhu*xREs9Qg|;5W}zzPqL$Z+=jD@qs9a-mG2PjB#}iA90!|mj;`T)-siAw>N|xQ4bs1 zS_F(2pU*D$A|FmFg(;Qa-AS>t=xRKcq}+^|64wZB(RJmRfJhR@0VeUjY2vd9X%qP# z*TYRn5K2QZ&p62*yJ}&S(dP+NmjvPD^6xiUVF}D_t@VdDoqFVfK_Q8#pE?|()0G4+ zDjyz7V8f-I>M?^)s{16!R=vA4#UvMBfg8?)7?r^6>ySJZzHEGduWPtJ=M!8<8Kp2c z@Z2-9ZniU&w!Y6RNDYLCd-ngGA#~V{iO5oU9y%XAe(< zuj!M>Wi=Hn3at6*WTt6RoM?B;Bfkmi$s!^D&;P{pZ^AtAV{EIwiW?T+6JKw4v#*PM z`%CH3!un?m2KZvla{TrVk8&PE$b>6$oVu>0d1K)ku1X;ub*;oZ2+U}-;Fh{`=6jn} zm~)@2n*H`Re6Ff$Jnr+UKwZ6&fja#;2V!N8e&%4}9Kf5m3x z3;YColeG7o!FA_I!caY}E?$d;{66kg2hFkY0r1x)FF=EyPFrw%-0Ja)(eIR-guIMV5b)y@%j9E)nhsf~U% z&?eNqe~D_jQOQFGt+vNW2YtKCylpOB-n=()WlY(*5#y&gHL;+qwESan<3c|k8-a3^ zmkljPf`rQWlpoH<1xNn1j4N!!tHi+}^I=DeMn{Q{g6}X8$**>P2F*0AYkU^Z#kv5N zB$kYB8rfWrqeT=9RgKg#NeDY8#-FD&69&=g@u((UplkqlRR0Zaswp)Q|muN9Nu>;|6p;xN8&TmS~80F1D;c&p+%g)3$6A9`rzf9YnYn)) zgs^4G)${#NRDwqxL*mOq_}GQYNpNhLAF;MrhN(qGp8G;n+lr)3|JumwX|3Kn4>Rt~ zZ1IKOL|>|{&sBiH#oIv31?5@T5`~C#CZ&Y>QRcc_q;j{`D+=f41@TLTo0}9!FhLjt zIWK_x>WqIRIc|CsT?s3H9F7G-C~LRi=s5@u#b^^*7AlAdoh-EM-#KKbd&^Fmr*vC} zGYE2)Y3_3v2w2LLGXsbI> z?GzA^j5|KYjXEHLl$362zyRN3M|CpD#j)q2oOHB+!nlKcN}9*%spL_a8+;U;!sLK3 zf4wy!lpdvj9B#iI|LuC+|9GZc_bl*a5RNrYwhk*BROwgY^w(OM00yQc*8F%QpuT2$ zF;p)Y?S0aSDCas#Pq+*ux#(y=`)7)1j*!m;(!jJ%3IC=1QgLCQO7PRZ!*wGJ#5e!O z;##zZ0ryHcAi9cNTB|hZ;uFm!b<_)9`8lg_*RZwl>MdIbJK*1oj7w>-msPI05|ww8 z!%uEvyBw>5CxkaEtaTCU=ia_fG!vaaKZa06K}_Z{I`f6{_cs$sRa_yEUODZ#@pZ>L+Y4JEa?0hlb{-TQLq@C)c(O4a{UQ!~vHq9Wu8;D-LdakSEA$6^DCq{ek z4IDk7rliVw__c>>b0EWm-n{$cm3Ky|`q8nw$ib-vMlC0SOqKnHV{3^_-F%SX#g^KZD*5g=kM zp80*6RgiLOHx$3D++`raYqnh0OnXoa)tK(&3dYrhdu0g|lXXvh1pG}P;}*M0ou?C) zpDaw+nEa6bLiSNvqb5z`M-zMMY9HQm%|C|hzf@R~COxAmKYy-&5fEXk>SvRq(ZNAo zg7n@9s&Bz$T@XB`5-;bf#^#SK`TNa+8HVsn;usEB>`yBp7IK^k1e{-C&IH2z#Q8hN zB%#B;>8Q?gV;hE%HsccMVDzOb&crDC-Twif%htxfIs+{9CkvIGUk5ZO8+=XmdcD8r zGDPz7$=%Z(`0Iv=^1UbwvP2z}4_Up2oE*3rTTvP--TaZH=&E4&$Cq}hE!=|9KSvXu zG*k@IJ;@quzt}k|Q;v(ja45QyJ>vK9cg1tzZYTCuSWTeZdW!U?8diqb>h$;D)_?Yu z@o%r=d|o`hr+jp;v{W*d>0N4D$bbLF%fKYpq!_T%93F;tY(vsvJR*#}rw* zLDl+*5^CJp;?NgZx=ggqsh>;g?RAK>F5I*7r}s4Bon$Y6C!)Ws$~&(#SSrn@PlHd> zS6w7eTzbzFd58Rw(J}YMw)_6dKi4}q2J($sV!LgZZWo{~Ev<{Hv$$QAXPVK^}9{-6b{j;*mg6*JZu}=I1qiZ=+(=h!Q9h%QDz2r z(xArvEfgHyh!-Cm^;Zx3ST+jmsg8z%2S*)0c(QV+f9hMn>fZ?zzbFUbV6f^@ z?fRwb7J~)gkF2)2^a*eOjjU7l%TFgSI2HCT%)1Q=Y&N%L4YK`GRvdgeB|5nyRCj`N>XrWl6?4`qTpVDS-PqnMvTVs`n1v|by%s}ueuCS4 ze}1I4Y2#WZ?ABX$^D~z8`V#Xnb7RrK_3Q*BQvx4XS4gwEpP0{T8l{@vHo3SbD;YCCu@awf z#qeDLF5Cvas#)WSG!}Aav%$GI%Z9a8_P*UJyie|>?biOq;oFm3Wdmytd~Env+hB-l zDryUx&YaJb4(=Dp6El*@tBKmgS5V7p6Y(?1-#*p4kslG%uV2s3Jdf+O3W1*YO-?mx zTh~F!ikKkgqrz6%=Efz1qu8G>lRsQzr7uN##!u@-HJ*4Gu=i30rATTp9MNR;B6NaR zh+{Hs`hy|c*)>};a`T5r{O&4tJ2~C~JC$spILQ-v<*EQ{x5>(XRkUyf&jDk}%87C~ zxnHIea%VgngaADQfR?h^PtjF2s7!I0@`z+k#(8)s4w9xaM>D@dlK2kZrMcVNzGQxLHdnOP7EjLYt9Hgi6B7V@{Tgm1 z$Q`y`d}Foon#XSvF%2!-f{f&uDxJQR*O9#RV&rA@WZbRUsF;tGmK0urCys1~M{i⁣mF9@B3u=du&8UQ^+=PgX7#@4HU_~*V#^GrF3{*_rU>UVoTjx&5_ zGCT?u&VQH4-NGq6@QMSlFx}XaWc=28}5YxR&r$z1C^k2@=!nmSf3b+)v!5~N+lj_U1N zr`~bHtlmW@YzUj;vmQ4^edQvbMpTK#j1}>24kRLUTMe-mVOMMAZeZ5hmVImO7F1Mw z_YujwljI3&c4v zO7z^wlIccTC&W_~cJyuxCCt>APM?pnDPrI&xKSSRCEuTI*t*;xc$3|5)aKGF8uvRe ze$!Pn{>tMl#RwDHiiBT|UshpTQTnsxtk-7GhG-Yy;nPCw2FWAgfWV>YU9ewfGlor=RAVXGht<6P|4HhPcG?%e|wU0!)(yVW1<=3(eQylN>XrC_BeINdC>+x#Q|_c#@k{Ot)N zgEzBu#B0aeDqBr+(!&PAF%qnRQ&SbzULAbit70Dsw$pmFkR&HVxThG>48uy~g}T5y z_mV1pjSl>Y=^86x5j2~aZWCi;4O6cHwa}l}(HLS@LJThXG}_EGKM*bZS;!$oWw(7h zMwEU0?X{ItCdNmj{SmRK%2$hPM<5B zqn#>!ZMDN%3R%&S0W5GWs9YF9e7!lz1*0)>dnv|acW=b* zOMnRNcSUHl$O^k9z|LYRmzS})DjqtXi(|Q)0ru4c{;;>HDXk_Z!l5e@wm#ZnxNK?F z5#cBIHw+6~ntf!g30J=|NA?o|%f*Ptuug#Sqa7**_+AToQMF`Ba>)Lq_rKJFv3s$_ zic=QhlEF#+K#W=E#Ai2>lfP*aN|vsX^s~LIErP7$3_?~yXj_;uh!@NGAK!XE^^0Lj zf**k zEVWaHA|#V0O8bLjO-C3*1qqUDv6(9pK zmF9I=OQ|Pb`DSMzM<{Wo8taW4o@HX2id|d7yi|`q$COf~q1d&|atLgMQ;b8L4W7C6 zAQ0~^N=U0}6ny`Lw^_iWR8xR#U0JE9nB-#3f=>LvX|LkqEkrFG4sb{_D>8TvB2q&u zjFcUKifPt#u?QtJLxynI(?i?Z_Z{{*m@902SvdJomdT7|nZ*^XC*h=xLSR+7xVVN- z#(#5kr0W0Dp-eC%9$7KXUMY=v@C-0A`97GdUvmW$&uCp|U^-qQc|OemV%=!&dhul4 zxk`JvB(yCzwk(&ZGF_#%1Z2PBLkV0H#d4+hZv1H!*@AZ_$zgXh3O7pFl;KGec>R{9 zx?2`zpneNe$tkF?tDT$@vfk#Pw}miqW)ePu^`U{y)EYXywiR>j)2{4~_mgg`#=T7` z@SDTl*x#Ic9hFRXt@sYbE+fAI#(HNpB{sX;QcWS*#aUd&TyUa#6bu(ti(S~Aq{Y_@ z*X{-~uUZE8x`%`EI7M#^QQ108q;va3qceWy?!QAt7`e}2R zxvH_}D;i@vI`KVD#fa`g+(lmzRb>kLqoh#VCcML4?|BX5pAOQpT88qC{eXQ}EaE<= zVV5ba(POc97`-%?-5mQ?5%em@p8YkS?KUMf8R+{q575R_MESrf^JnNwPHSdfo*4wD zTLmY-KQSG;sX-5n!Ua^^toL(Th&E{LsJVJZ(5^ zM3Qd~_8W@5K0sx(%_U25wwqogfB#!v#Omw3+O#*{>~Cs27;GlIWZ+E-b--ZE{`d<_ z&`;<0BCO<^fLc$wB#dGUnr9fkw)LlwlY{2(%G2{|egd^^|6ad<<0}@EA#ASO>-$~2^0EN18JfQC@Se<8Tk@LYE z!s=P;XC2~$O@JwDQ^oxUh*tr719?i8j57zn2}vWcXWhEHNvT^Cx|xO>pW<+K(V5vj z-P8uRtfYBy$9bwGvE4#s1if5QA*!iJt)`$8*ooYJkK-4!Fuh^>Lh&580eob;17x3{4eWKeZb zglPollchN~id9j4iMs!-hH4S;??G1;epx`RFW#03dMdsS#g3F14MB)U@LUq_LIVf4 z>a_2bFh8rHpj~aG(Hir-DD0A>VLLzXO;=_{{(V`#A-|xYd0;Fl{SQw3Rm+0@otFL- zSkVi*dlK|}ge+2WvZrm>B9nruY~h^#j5A?eBn(o*pL%6>rtHF{ z%U@kV%KE!pr@UUh%^-J{kC$%ex3GMN0LGM0bBU9=D{{U z-TqE`YZoc-4xFF}_TC^VaO5~N84`8ea2f(XT=>x9&054)}E4-M?z3Hb!TgAdS-)c7YN=oRX9w% zb7;_lp>F3{^m`1OgjygbPdRVPa7w zWi`6TVcMSUng=3l)ux8tBx8HJPKm3$7M?q?-sgMhI_!3yfZi$!wy|(m?b|tI0&~T% zc!qMgJk6iQtHwno(iQ%QoAf3 zd^%DscO#{cF2XDSGa}Qp^shLm3=}e`HK5|gvNMM`@qiF@f9yMoxd^=2vHMNy+8v$N zYdaRoy@h1h&Ps)KkFa4wy?tl9pFf3Iiy)QIijH_@BUNt?PndQrPEcWgNa?!3qyVB5z==M zue_HLDNkAW*`V8^H_53W9W9!kTf8nbNjY~P{KcXuo z(E7{8TQpuU&x@@Hydz8sE&BAxJud!Pacr3XcQXCqbN-ZKvz}XD^L!?!E3{Y}Wu{k~ zECbj_$Vgu~>HO(R;-1rC!}G8UL3M!B0I0X4Pag|rT+cKC@^OjrEOZTN<8XO-ps(b= zdH)``?g*psZl}1AO?J0KrJj>?=O=lHnM!bNUW|CfFPjlhRat_?v6R|22ZcBU6H1!^ zTO51-XGN0`FtRhxlMYCs#!Ry)@mApl40bI~IaH4iJu*Hswh4d9-@KA#U#Nt>}bkU%w8ThiVawDh0fO z9nDOS6$$oFwPK5+#^JI?$5w7^OhZ0iAk4eEgiTJ)xqn7fwGfxx!_>z1c9WwH2o3Wl zCZK%q&a0HJnz!}qJ`Kot6}dGh51*2Gr7gd3aFYEjn29+#z<;*@I2*uuZ0&aP=&4Nz z%&+kH+{knUZEnblSX$nK_CC_tIaA3fai94VR=*EwvS#1khP2rC@%&S7u*uXfTUeZY z^r+T)If~oyknIIU{S<7=eVH9S-vR{Sw}ek5z8RN_TR>r z35ST47an*UwXDZo@mX8_ZZ|)!*VZ8^PLbYK^`M)S5?5~0(yaO>j2d!wD5bqW!e($d z+%6A#ntP8H3Ctied-%k=cikDvi(bVowk#)fu7pTjlME^jVr zH=KHkaC~={tgb)+prk%oS|t1%W~Y5Z^12x#px6xXspfZz{4rTHL)A?to{ zwDd~GT38+iZH(}gO0TcE1;&(O2*$j5je&l zjI)^s8n1q2Pn-lP$2~n~(=sQP*i(g|4b_9$0Tz=qCt2#d3QVatpBvpxiiH(g!pQxm zDq#zLHMBo711%gCwtRK5p(OoX8l#@Y7c>w2>e4INn8`Jg( z>jE3?iKRNMRUWOH(_WJ>ynnmTPw_83OiswOh#F^NIxH3G@PxzJ9-*Jf z<)}a5a2OM4g`L27a?6eq+U%E_+cY)1Sawoh10eXKBPqq-!mUwaau#6!CiC_*&<*Es z?o#10)ry2k%amIx*FFhu6YFs|hcXoBzG-qahBRqX0u50sWs$>^mL(_^XAa0I1SE^F z@=16c5)w8Rkv~@k5A8p%uzxH|SVOA)Yu*2H(WUOo(<%e6j$Lw9#j@(`UCURa&{Tk= zzq!p9dA^ABO{Lc4K0sTpb90E%TOo*vsq> zt3<~;1Dr4R%EN0!;O(x=PVO=?FmV-($yRMNw4IW--gKxHQqxf+qHQpzUZCqJ;KP?T zW_6iGa?OKo#frp8Mp)VUJ`BcbMA#qx<^Xt&#z?E;C00H}yo}KFZh9flSYOhzp2WUn zI_OwB#Oc&m<$v){$b^iHyhJq=1Bx4l-_5X#^f#BbV^;?*G#{>mra!n6U(U@yzZmS| zIpiktAU#{_p*O~zQk;VIb8Nv7#{(1ib1@sL5%BcaIy+LMVezYlN>y6o%=JZLV(f>B z<}+ZBPhIqxKene65uI$TE8;Hx(FKM5nVWOYRv@u5Ke7GwXGA^w#sqr=T|W5-zQWN_ zDeL>jJ`x))@ql|7j2n8UB9FMx@o_jI(L8LI6d4j1a_f)dgV0$BrwsO#0Ltn5y@r%Ly$ion`!2Ya28TyA1BPCvT-_Mh+5>T^0__P7l|Da4hh$3s<L&Q|g>Gf9 zq9^X)YBeu@Kj0Tmn&>K<#!Cz04KUx!l;8r`x-}Z`+&0w|jmE+ji5*$qjDJhed!Rw0 zkkYx4k+QQ4=pKrW)nB;hyVes^2?WAIRDz?XRDt%H?E1@j zfLL*CM7tH$wpTLCgN+pSHl>`5Wc)kH1013)m+t?dIITZ|;^yOafKFlz1V?_>>puoB z=V}tJs)*l(usNI`qu6}ESRHFoE%Btw5{7+3Iv>WmN?6+8<|cS?bx&w2-(yR#--43s z*&kyX1=miC(ywX915rbX7lc$VqMF9XBvgVpHRZl9D;cskm1L^S8X1EfA|hC+;1$fq6VL!Ch%3D{j68@88NTXkO|2F;rGIW|MV{=4~2W7)vBL*Ul+}?atr#y?w=gy+&`Y$BsmYnQym-S=*w` zlTS}hB@fHc|X%sO(Yfp_ZzfN5}-LM=X=~vO2cIwEC zxAj)Z+q*?ijwOHeSGLThTSx#U-SI!;khQTb1>Rubp5`1NbTQGsk(R4Z;P`gompIcS zc~Q51oT8^V4hrJWS@i4P6cqI|%f;bVnt~Q$^}YxmX= zh$WxVFcXhE(jzp22qH#U>ypekr?IG%rj5$<#+-EhY?N1}_wnsM+flpnMv$Jw#UaT5 z|K%mtOmqn@55rGAX150NNz*B#+Hwo2dm%7BQeCJ2u6rpq1-Hi;P4P$&`e1HX+Vy3Ar4ksKhb-eiK z*AWUTKlZ8Vs2cFXP%UgP`A%L@bXQ-E?EVKNTalnbkeyb`mY?I`P5%{fRea=MGT~4xyEFCe*#zgb>lp3Z*WiNV z?){*%{-_1rq~_MC(2$rV=JTLlMT@Ulx-EtvKCrTV34CWw#FSU|&UKMDg{a+vdT^1A ziFeby`B&YjqunD|n~@qR$XmcTE9(ZP4=p~P$8{`b`{TkXgDlQ^MlgwvZlYFqR{?*c zwOa~03j!$Biu@FBN!c6vBJw+aQLTG$iDL1AjMhX4hikCn+6Ts@4jW3*u(v%!tV7^9 zmJWDl_iW9UjHG5z1FAgnvlV+e4IEhLRmp30ChM-Ct=iEo{UCQ$^(d z{*Y7894w;XdB9Z|+iF5$F_;VA$;F`-(i$QWa?(9Dg_iONt#!$lgK(8dain}l^$x(% zC)_6?{s=0EF?}aB414lk?juRLzf%$a7K_z;=%MmR zEX@qj_yet&T1@?x@9bw|x2!Q*Vk|JJ6SnCEEqgKuUE^b})hAN1;lr_23~Idk1IvMlu`)O)7E7eRr{%*z$lN~cmwgak0UemFg2Zp)iY_dpz^sSG1Q_!a2Cx3JbBlKuwo;`#2d6^$%HbcYNe-gDI}z8sAy-Q#-K?jguOg;_@A9~Pi_qe|5hI8-+}f!TI}Dn_A{f6}fiks2rgM?qZK9T|6k?-AC&gH=vx8zQRdiMcm8pvj zza2nCxQ6~MZK+}}TI(V|(v}yiefu9;gDip2papKDRkCKbA)b9ov+3F@THOflb|Hn? zIc^RJf#)^=__epfMHF~7TmhiIB!2gkB8etm){_9{O8a+|1<3ST))_jPv;POP&xA_-=?enN4FwSWp)!7(uUdk1UBQ0yXvp=1y z)_;y7!_MilQ#6kDYVA6zGaj3=$|hiS`Ript=G>fMpYAe!=VS(==-0tVf~)-z1uDU_ z+B{K%b_tIAt99h^qy)T8``( z45PPubnOv90=o$%Xuz1Z7D}#@$><1CO9^H2YIwbHAEbW|YfM+;r;E;pQF4bbKV&e> zxcN*_8z#ql&?UU4m&EDy8`N7=yUFponNPlc{M&Dnt-n4^y3LCU2PLhH)9#MX0N4C} z0NEqqCDh~}kBi6s(nKxJHyCl8&D!!D{Z$GT(VPp#|L*LbyI1?W`|N}IX`ROsRvHr~ zj)o&>Mq6x7MbOQOd@6|=SKgfJmR-E9OdFq@T1ivfFu_+#j--h8AP^lA@61LS5h8iIwQ7P!{dn5_;#d?|Tsv>S|u^m(`pkb;JWrK)YfeK1-Nx3yDSt##VQ zb(1wuQecBP6;%6fA}2=%-mzkKYl-62+}QK!nVo0FuJW?B5(PFHaCO(tgsrVoCX=#d zM-nXM448Q~z3lc>=w!a$VMj;ZA*!%*+HPY!tg?xbrGi~4y!eVT-h!Pd(C)(>lQeO@ zm-2AL(wc)4L6&gY=c?yN>X;g( z>SMJ{Ot0Wpv2ixhyd7A%4Dn!VfX|B zOhErV-(wcnjP!~eHnsoy@4YHjoWscwMfw3py3>Ahshjj@8*_(IT}}D8IRt1dkjMhE%jJP$Ce)Ejdd|T5CecddQziQ*cS|__W0!C@F)}`08 z4Y96$+7Y+h_2)CwS;v(5)E*l>{1q`?VQqtu+83Rr2J`KEQ;3eWYB++aH6lcu(>G`D z4{g^=M8m?y;3ceMB`Na{&ndTk#$Yl~*SLkbnhZ6kd_E+2uAzGT;%*FTpSvxB#I7l^ zwaMKYORfQA!{1_?>qOZ z;3dN^-o^%_R|U_`-(GmtJ|aADq)vwvK{oMP?woj?R?I*Y!n^C#MTmbl0Dzv=(R;8O z?4~=)TufW`+nj`hgUx=!j+^W0aVV7m;d{8QIMmYkQeE*MFJqPFtBF63@zS0C@zmj$ z#z(y9PTx}7k3<|<1VL0SL8vVY6q^9PU%d*@h#SEV@vpr5#T@GlzF$Db?|TQESxcC{ z&6h!QPS>+r>58|o0V2;xAI`* zTbdUnU#G<&3eQi>S_t$1eNnDYGSA)a?3OcJ$%BMN_P~@nMo{7lqdlsvy3JT`k{6ps zNQANZ-5>VAw+PHHI?;A_ZRYa}uFCy5?XCzr$NlD&`Bh1Xf-XEJxn%F1Ks0ojsKzBF z7%#B8EHfDHq3fOFqXzu7`S(ZSIb*Mati0eOQqHd_3s$k)!lbaiomske#bwJU zf1dmP{jSR@tp2@{8BUaWw94diaSgj1QSo6@`=JZr{z<AV{=RRu%6b%LLd-({o5}zmNJ{(Y&iI2u!|J0b(Q&V0$Ee5 zuU#{|JsJ7G=wvcg$bf7wJGccmis^Fq!)J&=`NJo5*JX%kC5ttAyM)w?YTcrRxr$K z%EqghVGbea49#k6R6zrozU>m`;~8V;1#&b)5!l_+j`iw*{gSij)C63ipxKQeyN&K0 zvsh&#uQ$edn5$ByIKgc;3sbV5o3;E|Bi^d!HvqCe3R2=VbU^s2;Qu7K#m9J-bocZe zoW@%@zo$aKoBT?ZROEs}Ii-|uXW{N}heK?YfwA@^6Z>}#uQ^v)lNz6zP_?$uTY7#Y3~yyk^~0!cXmQQyycIBgJkLpW zX04_V3+gX1J(`I z;1DV)hofln((GcAa;QL?e?_&~Q6}q0jG5vI| z2scZCx%Td6mUgTA_D&@2Xspeuqam*{N--xx=A^Re zKAQ9rh4EzH%vH`c``iqSlVxQo=DSySigSFS7+_6iE!WLmfqYV=sfBE3XORk6?}4nj z7w_Ku2qz_Vb+ldf{L~G|g|{%=*+IFPYPUUYnh5+3f99gW61)Jzz_B8dy|8oho7zPj z@gBAf5bn!1Mft}vnrFOAX4OTw_&Uc&lvqao@=Vd<{cNc#v5T&EKMc8wwJUVB6*h)& z6TpC0&NkoENF>o9(>cx^pVs3Vt+qcNYyu{dr9Pz5-F)8JBrF5bbA6_}uN~RK$_3Zc5?^x4iLr2-%`U{Zk}dQmcDrCbf7aG; z)Y1UUP|CEe3eY2P+O|`vu7^`UfZnwdQvjgyIQX#D*DJA)@`lGy%}njHSX@I!KEPdF zsQ#?CoRDU3_|0DT+m`zciS_Tl8EH{b`AmtAG%qNEQ43H!b0GH_N2nU1BkId!>fEqc^M5{bM3h^q7ndMFDie8wYU3Ln-KJx`3=Ry#KXxOox6t+9u^h8F?1 z=vdi)TY&mx_+(Sz;;dOU>$7$vWLq*&Fr(_5#V$_{4u(fCw|@cM)scaf4)*KvfvIxV z^Dof!&7pKMUH|?c5ZvOzT72XW`+UtWLf#u6vTgb*9ZNCrN-w{AsiW+g4kepi|0BH* zQFuZyGM(Q)6Elhk9H1UAd2BY*u`hIYZ2YMY&#NB&=d05%s>5j0$VjLP_>a8EybB59;Hju~mmu1H(!od6 zmq+&i4#9i3OU-|}y`uoKyY^=3N<%xQAzYb2k0HFb!%m3{ecpqnENkA+X#JH52dN+R z3=E)dyU|jh1ogQa0))bD&|KNA3q`nDnV$d}$^wdrca>?WsY&Tf`v{H;;)bYmEJYiZ z3UoCpcvgv!@}p6xJ&{NAU}=Cu^ySfzf+M;8eYaj2ued-IHZ@iS@v@9FLBBtDq6{8w z`Tl&NxbQ+K!a&JPPgjmoiB-vwZhtwfyf{(~756=6q{rEZ-~vvekgE&lr+U64#rk;e zHImDN!-8Qsv@c3^_)6X5DMk$0V5sSs?xs`e1*j1&?=bwX{L4(lN_5q&BqEMhiMIFx z%swe~PoR>iR}5X>X=Sji7@Nsz*BFzchf^qLa?RPA@6O?7@+8-DtTO2fPtA%vV1Mn{ z;VKmRrs$qg`2fL5NeAF7BYzDZuWzLHdZ5ZsuUwP)MB=Dg^KJv~4k4L(eK-?QceJD-q1ADyC`^4w?& z%HZl{!ykZAM)KZHI-7oVfKpty+n8Hw(JaZrVig*jx=oYQs>a^V)=@Bmo%KI063Spp zF$s%il%wj)nf7o`TeYeYu*42NYisZb3TgDbn-Up>4IjF^MLA8LyR~+qgnQ+U7QQ4Qfyz0bFDK1 z*r-rs(U;@PD4SaVVc3XW%vG7VB!V*2o5g~U4Sl+Fq0l4O?EQ5bI5*%ng14{`@UC=F zF|Hs?n>ZW*=R&6@A4!dPl7qB`?^&U5M@A&HinhU?H>~|yc zttDC@^V3aZr{Zv&UA(AFQeHAE3I;{Hf(RI-)tLJ1QgxZ{+bbTvx`%z-J=Q$Wi@lMf zjep~h+^ahO7mqUCD+uL1I1uSwmGto}y*w}g%cT)F!6#;e>@OVXy zK%K&DE_clF^qR?$kV5b)w*v@Z6hb_|>N}uOo7u`e(c0qBPm+(%&diA5eOqBs{d-62 zCwf?-qcR=f`BArIB_r_P!k zALhpXU(=;{V|G8T8^(M&i|WQwUE*;KG)_jz<=AxT(V^*y*pQ;3&2pmT#M9Za7_qx4Xkk%mTgwP*54)ttS)CEH)$*q2BPjj*y9pT+gWk221HJHZ`d zdd%G1ekYcqo)UxiIR{cqZKCtq`G5M%-Kg}7vH$j~=T}3CG-{B`Z(Q!lS!7}P@L ze6$T>1B>IS>Exh!=s|7rhfoOXcHQ>iLT?<}RzjwT=F}5UpCaEa{cfKB#d)nZqJSj8 z11Ez10~)_V3LANloWur}am$e!ptz93<;VVKlu@`UOnC^L-mgxOiI9t=T(TcKo}H7f zn0YwTHkCIX=Uu!4ZZe6ym+D)0YzMQ<+}Vsi{Q!=!bC(Uz5+@oNivH-=wZQLg7$W+q zmI1_|Hy98KYq*EElL(jY`uBHy$om-{SN@|bYoHd%LqGx*)l|v3(2|*fR)J8&&KBai zCN*S2VsUp~0llkaMV!8Z%3GeXd;8qg0W>|3Y5dJ*)xPT2`+W$6mBjj9q(OOT81z`S zb~eea)sy4Mhsg!qE2&zNiXbP_35KKV7^?t?EnuM z*fif@1$GoqWY{;uC=hP{Wz*a1mthBE+;_m~uYYqwG(jt`8ro(cq>sLn_`Rsy)T{Y5jFy(1*)e_ zaI^c`Z)G$6Jsty^Ch#|?g5>}Cv6l6^+$RsuuEoAr3>#nf+=3K%6LWEEBHNFte_oRR ztRK94t55jptbLdbtCEekt<%UwA?O1YiXpzEW#P}~sc)aJ5u#cNVJ|%E1?;4PZl?E) zcV1y!-yZAo^Ee{Y(1a1l1`}%Sa@U#~liXnE-4jP{pN7d%+d`qcxA)PnmcbThld})l z@qo3=-@0()L0i?@72As+?tT)Pt4-`n&}@n1#I9z?lrZD5it{A;nf&zhq5_EPwUxaW68QRGYc+@1$kkZxv;JE5Ce7Nqcs<^ug3-XLRM*%uHm} zO0g^>a}^AQ1i3q@Y{o-2j##8#DeB!S8z{J%OM!GDM4rYwhZi=PYG150?amV8l1JVN z1mMt~WcuSQ4L%r+TC(WnkV3Qz-Q(cmM@Tu>x3KbOscY2gPpoa>TG_zck@3v_f~dv0 zHcn1u$z$f+GwGt_Dbld&Bar5Dsct@<9XeUb+p>hcA-=Dl0*HwOA#g?Y%IJfsfX49( zjSawRNR=gDkK8+Gw|UbU{sdDFW_a)ZOH)JZ?b_z=NI(0!X73biK=U=}_@A4@E{(64* z6OEdpRbBcqZ@jsNid#+`IH@t!qIJAu6&$3EOHk5?4rm!Mue%{8;Z-}N>yg89UtqGr zC6!RI+9B6enuev!VnxX?k_>|s7b57PLK?GQ2y>+3s~XYAh@<7Y4iy1%y~K>(65dC%ao zl6K$or~qUNCQugZrf$Hq_b&{WKy*t7E^kicSdt`q zVMy`bQgu$eO!EY#Lc+WG#Ieq<*6_qnE_&Qz8sZ*2k`AG4EUIftbqP*2Je?b=iM>3! zt!^_*%WIru)+=!<$#KTe%7Q69N*3NB0s2QDv{1HJy0%|$+(?gGo{ryai`O53r`?y2 z6xvKyOdeJHqLdKJ*an0woYa)9a~rzUI--<`v)8}cA>H_+9%nE>3tB&4WEDb|TSoMq^4cHR?ho`8%@V40~VkC+f; zQ@zLxdpUwe#;kc6d=rdYH#^EVG?`qt|-nh#5 z%cUTyDC z_EUbF+siUQ5k!lyXbM>#$TQ4;}@0BGASl-6va3M@R{cP=|!&&2| zLj4q(51kZI9jMAP&Je)0icwLCcM6u@EV1!Uzpt*MntXFmMZLb>?qHia2|E^4#!=cH zfQ5}r_uG}Bn)u2Tdr~Qj)mm<)2Y52HmswmA_lXK5rF3-6B42+srYn1Di2t|a9z#m9 z*U1jE(7k|j0}|T#(kJjY#^auRH(tX%GvLn7*`8O6@D)xoEc`efAJWhdN7rD(0S2K? zp3fb-Ar0JN<<$6&+Wd}?G`z^k&E*jKV(`Z2YhlrFjDd06<$`>dqa)eqg6$?|=70`? z)s;qP=5I#iKivD@3CovIT;~}m*UHOI3ZMhTtP=G3U~v$AB#q~bW!JA^YBT%SrW9+J zZe%7AH45{wb8sD7L`#Ay&rs58ALSawJU5@E_K$~YlBs}KLp?VFO?a^5E{}O-T8EE_ zfy_kOYf^>P*9)!yTFtQC78tgS8%nE7S$O?W4q>^NR&$_Lh>aJ$cKj03_r+zvScDlZfTj+D&2PmpTfi>-$os~Z&)LFd0 z{3bJ|zW;;TrQ>|4HGq2p@KZCJ z(wxOHL#z)3_jwMLHNMpx;~Vz1DC8mOt1rDIRXfVcD56zGda&T5dhHotZ(aQDqm_U| zUe;A`+p%%LB?1HCq^Z@g{ASB)9D(kJP#H-an_{m!GG-C?GjmAlO@m%IEZ zE@aKfgfkw+SNA)E%z1{@8$+tBD8(GNwX@9t$(9JjodyN5yD$esvp51;&aPItH$*4TOLgS1}1xHz!H8k^iJA> z5Qjx{O-_9o4+T+FDjqZ#PBldf!ZpVbQB?i-$i#MBdK}7*xjm$$?J*x~lkBy-j%+;h zAo@x{Kl8Z8%~QJdo6_!lX7TUW&=;(*CFf^VjXn^v_m)E{j;RnT3ektMfoAHa$au+b zC!O?atMA)zsYss|4;E7Qg#-HFLH&_v>u@Cn_6xHjeAmF55vuhb0iRU-j0B=eTyiMV zeoTasu~-z$!=YacmlACO4be|Yf8#WPdEp-C(hL@fJr`*Y`aF|wBw z1Oh#MC5)8p1uTIi4! ztAY{g;+=0P5OnR#Y@Sh{-y?tZ(u-}D=!z^~R+9+w?#zsa($8O{HMAdRiaPbum8{PW zy8iDD(@3u8r{NvBna%FU<5&L`Wk;^4uz>wwY8X=Lfk{Mu_ryDD4p6E{d9EHzfiQh& z^a!$oznV^F!jDN400c^di<4!zmM}*64a|A#!WUtAHJ=vwMO>+iqVaX`TOVEo*+g*D z%?JAd1_RM#KJ<<`g>^#@gOYZuVxwqN3jSFOPMb6k66t#+C-0@*Jn0taSK;XyiGWpO zG7TYVSh$bbJCqjb7}1s+J&a4C3>JD+RkU8a7HE}s0IutkSa_=P$H+^qbp$n-;PKxzW+Tkauh9+fZZNpb+18RJpP z$vUSdNK`#*({(?JwcYW!heZ(?%yZkGcXr^*KqtiMMv_R?rx1qNpFJurDUy9|HT}J} zhrYz%LIHqtY$nGL3;U9Nm5-hFPzdUImQ~aC2C*{Zz#u9|`5|Dx^?H6G-5b_hd!)U2 z76q$Qd7qa86B;xi-Pu*s*+@qtw~_QQv5U1fhkl!a))~ zKL4_gX{1l^DeKa|XJllInxKK)7~F?ped%IxDjusJW5OoO!Cn>n$b7EKCa0i34mI5( z9@_Jg!)iT56~cw^4u=Jy1V)lg1pF~@7e(1IIjb8z>?)`h93RH02qe;=LUDCs*N9Gi zoi)9F#Uvb3=*Qf5EoyusAQ`fIwaIH{*6*?8YUuDZ7>sZl0F1L(&=Bj=CnqIMa6JP; ztK{&RmWX7`eteo{Cbn<3Cyp>2(inrvAe;&aHLXk)La^%ShxK0d8Hq6qe2`l~gn$LN zUj#A7}~1(C0*qDa`ICEKn%hfwg;+Fvi{IgWDNrdXN8?-Bnhje;foNDxt*7vv})VBlpDd`;tP}DRMI! zy{mQj-YzA4j_W;x5?ladpq-n`_MuLWhyE27_!Sj=?oou>{op?x`(PI)E34N#MrVyJ za=HF;Y)lVvv(T0X&zxtD0Kp>=3g)5c{*MEz4~nc}@3ya|9{6)Tf5}*kR4b%NkNw~N zpAVC%O-=eL2f-hoTNb|2xy3~&pOl{&5PBBR=UVTr;KRX?<0_bmM1s;~QDIg*Oee>Z zhSN|}?hyF{vs78Ao571aQkzl3f8O$W0(zO4TmRz0zTQ%MlhJ zE4@1L$sm%dPL=8(-p0!J-hNM;zLaV$86GowSQaTggVd^~z>_uG|F~IRA(5a*uZs z(;A|p!c{L({J_u@nDZWZ1>kKiLrx5~joFt{&aNM%Go54l^Fv)*ltZ6KjNEIU#`s*$ zXcT_^OOPX_8TUE;p=QLz!ej;99+3*vxte#tTQDU$=NZN65WX)bZ1zL?v;JPB<8YOw zvtv4m%3JTwK-+s2sld!M9#g{G1w&mx{6Ys1qO>LJ4kdL(m zS^J!2cgpbff=0UHb2wd&>>3VfSVE-6*%f&Hrn0bV!p!lBo#V6C8O>|2I(*t$W|P`y zCfb3*pq@PAGl0*}6@FyvMfK67`j24Gf~l{+m&OQ74F(=wPAU%6DV2?)C|kn+r`cmu zzqV0pEd4u*ee0t#QQS(4a3H=OinAj#CL7)9*tPd3HmlU=a&}jy{CdtJyhQB<{^i_3 z6cpDC`JPZ5ha)JQ$nPN3syLXQL5^n*l*_YkUnz&N9`1YX);_8f&4@g3vzts!|6(1$ zI@G8J*5XV?pKnqLTJubFt;|;u+O__&tI#NP#Wk}QE4SZL#OW((EslnWHYDsvEW@EoevQSE?z9St$M07`>f$mC zg>u$bL#yiU9`N1;cJ-Q}xd&6;LZ28|P1-i2M_>BjWNi%*OjTxCCCXcKxO z&+)2W=+{Uv;(rP^Kz!2i<^}iOge9Z9(92sGZ^2`nei}gBUzZcv1=D3Piqt;NKph2a zLc%_=OKgeu;l80VrH`ABf!{qBr^DO4S@HG{BXWQNvAUE%|N%N?$(IKB0 zn##3j`l$5dB+1wfl`_-)i-0@f;4}62$IZT9v6{`-I4llF3x5O^w)Id>Yw5TMpJhkO z0ZeKtP~u${SvVEB6nK`cXZyUb0PKJT?oZkF_QXUs%0m+Qfj@+u=L%Wgv@jp?C#spv z97wM27+HW`Jx(jkYnzIy?l2FSMg|zVZ$m`F+B=tONWNQxcE^tn4;V)V0v3+2Cyzke zpz`XgQ)J1kPp4KrubwNsB7wPbpBvFN+5u7RuUfhS!PoRuymmQ+C3oI7uEA%MI9oU@ z4H-~11zPD-wG4>pMvlVhn9nB#k%CmuSXRtSK1He*w~27MqfL||KHzo70f-w%>w^zV z%dRhDQwO{8+uv#Xp$GToN`YD?JroOv<2W0YV?>Pwx*wC8-Z5a%o2uWtJhS7x2i(X} z(gujGbJ|iR<|15kG&%fc;o26+$Qz5EecY5aTVzFMZI{**4c6dC1HIQTYnI?wVQCTG z0b7ZhCjD#TEPjzC@zR!gZ_Rb-JiBziS%b@Xu7c=`b&tVKfERaGD)De-Ld)^p`uKK& zv~)W6ty{@Obo}Vc6 z`Q|*hw%Ze)eVM~vN})vUrk-^S4e0Ip_M55maOsP{5Gr}qMRd~FFJK|@WeV6%mV^OHVev@INW;#^;h+!9J5(h=-N3{ z?At-z{lY2QE84@OEH}l^87@*l6A^mVg@-wwc7(IL-Kt$2-u&>VZ5Yc~S!*vfzK5k< za;yX)WpSF}4=|=28*&vif~HP45&CafJ9415@6=Et4r{uK!kac;gz;Qx)ml=}HOem@ zD*K>}quB7kSx4i?slnc$J@R1Wz8YE^r8;CIckDRw!@>keHtNto*9Af|emKOgD><(> z=H`PoD9TmCQ^4Op4Z7o_r|dTWb^gOB#~tTLJ-#u7Q;;dEEnQ9vDGVSFks8nJjxCX6 z>41r0zV3gL`=-jlZ}~F%-NxN?;>5_bkekwhmCX7fzkg88ws&x@EPWV6?Z`lVuMqD4 z_b0D<#=JBDVA1_v zHaj_IL(#k1a>RGPrA=oSu;05X6EEKx7Nrn_D!MU-5 zy43RRH(9YQC=Cj(CG=}%U1IvZgPG*Eqm~s&E4P>uRqs9vON*g2+qtxt7+8}6HOd=` zoU=mlS&*_r`33K*3c&G#1Rso04~4?&cID0Gj47^C25rHo-8ol>MWq~Uyz3Fr_EGlS zL4A5}j~zcLJ?zk#d*rEm$;*%ac{l9B-zzz<+Ect|#c(MCdlh_fUZm5kqU*n{UtfCj z>@efR>`W~>(+Pnno$j@(-b2}(fmLr*m*4>C{3ry`jgzT%=0s<xr_vzDZwaYmuwtqAc1%TU~XX@+rl#>RB z6rmNNz-gV%e);02`Z9W;I^0wYy_WajHFM`k+Jo4>ff9G}aDva_|M_sz-7{xJaX^x< zR-01lq3CLT9^i>SR?ad!AbS3e{-8XJ*d>~goepI%dg%9l5LohW#_ERdtC$d%?mCVUA-bai(olM(SiXBtyLLZ7n|F3-mH@8gfa z3_>pPg0PVp#eaM~cYOnM(J8L~{`WaKw4%iH63t{-^TzWu8|MZeKh4UTGWZZAOwQ5k zvcGvETxw6iLWn3d$!W7LJ!Fa<cj5G9D&dmz7&NlPfGjy^6VO zX01OixC7$!nB`~JA?*mKyxx}1h*Qfgq%t!n0rFE5>jy8mRgMQtuy8WG8ghC}6Zw$# z^F|Ab|0qZB^UIcPcFexqe$P_t2F|4L%*H@gc04!gL0vlFeA(hyOQg7 z1bf`e)16_`n_wB#==_pD2KcHmkV((YRY=rNGH-4|<#;F&(CzRMFPxM&_cC#FQxAES z`L6@3_er1J|5Ip-{{3BXG%!9e;$pz8?wP!s-HYGO(oFW;juy=3Yemd)O{_OAzjqbc z*EGaUl5ieLi%hBz{5+4=*Vl&#iF^065-=max)&kdc*FHg?_gH}35sV4^BbCI@NO2*++a(HYS^odezl^(qT4 zw#?0~I_nTeDC-DOuxVL&0BS9WIb*QiX?Zla<-wUtD^JRQ;&7(nSOG7|Sq~OAw;Kw2i8&InC!3msGQlX4 zUU8WfHJ*BMvdGUqm3#C1eNr+@ZHy?I7OWOJsnm(IO50f<+*j1F(5mlF-v9vLB=Dgo zo^IP+S$sRD=(+wgkLujkk+JVW;I1|~=ou{Wudj6g;cxyPfO28v@pB?RU50Dp1G)sj z1dg=4Axwexnq5r5-789}+j~S+Q6al%b%t(c!)GX%xE}IubsQ2HBdo2!%otqueg@eI z5%W)Kj-odvs0?4m>u%zX^d#-H$W{vZW6Qkco;SkqnrcE?PtoesvXY`amD~?$y^;i1 zQjJpQPWy7)jTx0>b0Xl=$JE~!j=@ZT8)V5YNW$k7b=Nt1o-pm>W%Yw`^37!CY(Y$j zb+q6d@B85!Cx;_Cu!^Q15^7VT>#5~nn0l&)$~b%CYC0!_^Y)L+ml&CQE5CNZk9wCR zlr+4&nnZh0&e~}O`trdg`Nf1Ijr+1LI0ySaVQ$~!e~{wwX{k8kg-7zT;&^?>=*tiEmKGXj?xJ+Z zqP}vEgCaSsvrl%`yvxbOqx!g?;v6 z)g`Zf({hR7ZNffu|6KdWmh4}OlZx_Z)vsi44Z#Hmpku+HjlVdkoTtDimzhe=`AqT1K$cpM`u-r6!ErxO;ld-jFH;JRd> zuO#0nwzk76-d;WKh0~}H#^Og#kq0(E92v6T(rcu}CR=B1fU{}ddHV!Z6>J*l+354=!;jtE3Wqgd?6g#3U}LiAnu7SspV z?6-dQhfDFUJ|9&DOcf26(VKsi$y}NRfi)H&l2%{A=9)-2YkM#D#Q?Xq5IZl-{6^2; zGYj76@ObNyRx?mpooTd80MWs^wV=_~D+j5$tXXX1grNqSVFZzhAdi503FsL$P>+N@MSBh(UMM6z8s`j4P&Bgoro_4v)N{F2O7bAaAK!8>gC_LQ{=T% zyIf5W{HtAL$?#mO? zFNu6Sqfn?A!yol12h6Ox(P}(Caujc))ZOPNzxt<@lkFqt;b3&*fVOE;aNZPXP;sry zr8^ij=C|7AtWV&WA4}(sRLuMt1PsK4dCWHhw%zB+m+;{{n(3Q-nr;z6pcLDNYX$IgsJhgwrR#KLo9%#NbXlTdX_j#f)};&A zUhMFD`+Qrynd-fEC|a8@ZOFtwE#lxaNyi1B1 z)jJ;Vo~ne~b<9yj4C7GeqaMP=1CLsEdwtx;A4=Od{9?H$=c=6Pn+Ns2Py8=i~j zKVUOJJQey`0JIZ+zV(lwq}wipu-zUReQ7pgcN<$rVp?5$&*>K~EmgJSsV+6=6%#b`*KZa zGwcnuou}KsaE61O#IF%Stz}xKl`*QaaWw>}wgbI*wQQ%hpig+$-b=j9WKcbz(V&tv z7iZF=fHjA|Wk;_?L!=-wLJqyp>?rP@BEjzos{5lzi$g6+1*P#iLo`7TELrz2q2+8n zKk{UC5`+N|_4c5oa-U}V&VOhruH}B=FzU{zI3KD~x-1|)K2YA% zC|fj(uqtui+bEGTvl28-6lU0(YlTX(c`e#$`25cKh>kC&zat<{9B9jX5F{7sVpXY!2Vb(g9?3)^ z&mv@Y%;6$8MEHpASdM6kHnP=}IzuTals~m(7bD`U`ts#&&*PkHGHjkA4!|l!a6WyO ztB|^XZ%z513>(-)g^y4#Fv!t%tFy*l;vF%h6n%G*cD25E#1Q)CtuWGSOsA|*{FAwe z8%|hd96m{X7!;<$huq>_2oU-9gatreqT|}a#Kc6m9WzrlZWTIW?4A>I@uFZ$<-MS= zLp^a7Bdu+euOtBc*%C1=_0DZX)Lv|?Dn;u4@0%nDop}vc`$KsMCpqQ>e5zA@)nhTX zgto)?TRF+Q3nu&brIu&LKwZbOUH9PYdNGoE*vG%7qNN;ht7Z&v%eaKSLu5XNH3K-u zNP7?$MUMuKB7lKG5xL~sQ1U*Bbawcb`h4YzYv=I!5&hWM(9jr){rhTzYs=`O_P3)n zTIm5QAJJ*)tm-P$p?on93C=kHWh04ElmGc) z-Uz1P*n#?sIx9;PSnOUV(>pT5 zZkE2Suznv0{lAzi!xhb*nDyL<{1v&~yS|c5=nd*!9s_}XS&3%ovr0ZY)%H!49jPoK zAa!}A`z3-#K4R`9SMmY+YN$x{PKt5KW2Kqz8ghrBi=Z>}$Hl%a{w{del3)?%elA={Ls&*P;-J{3>q>k2^$khh- z9#G%aZ|DSLd!j)V#!VeYxHWA?Ej7+%l-RD7A3pIVoR^UNMyA??q!Zc3c+B9Vs zX=!4q)XO_cP@I%*iu|#C=xR@aadbJ#^wST=>q-@)X}tlR0{P07C55!xuCjtZ9Bd`Jvh8DkVZsk$Pc%Dy6Z?{qk~93YrB zm)9WnXd&5yaA;BDg6*8Kd_lHehNoQ0b*!#Yo!rIwEKJsDM|0rAU%na%JJw5A&T$c}Dmt18FeG7g_ zi_|o+w0xo}R(P?BARiu1E`2Xn)TM<;q^y2Q&dTe%=|g8O_O_nqQ6Pw&XM z9HSA6hvcgNeL0HpsasQfp-blFb_2M%8GU$P58ZW_8D)BX6|cOE_K6-v#={R3Ihzn= zZNT9oMzAU)yP2BcLp~clk!IME$p%^Cw1WO9R7NvHKRWUBrGBcxk;!iU5=Rk_8xby& z1H0!qfxv+n$L>=X4%zZtythItz4Nx}Ft4trw-S1Lt)ruJ+`4L#8t>>rKZ3XjKLZu+ z2%Yw7iOZ@CpMb|tIH$-N*cI5Vpx#YBb~V&%%NMJQmKE9+%q0d_&G5g&RW=mS-b_7z zuyWAWF~|L7TCV<>9k2w8LJGy#%gY=S(ddBnEX|vx$*(wF+n!xH>t9)h9%aRi;}oGS zvqH8)Q4f~FIjY8_vZV(xaj^_jQ^M;%jv0Ulti{tyx+i+T93vqAXrV8=fNkt!V7mX= za`GhC%~F7+hwrg~MNI3ACmY5ozV4CgCW-SMf(T|EPUqygVEtO3EKFi!RyJ;Mxr4H& zUs-I{*5r@EE%XhS%Y~4c=}<^9vfWe=YfHk7t3xM`ksU%lRxLgANhM<3i{~S)y-5PA zvBskHkDI|Qn)-QW|FSXRj{NbRpOPHhsyysSQt>eox@3s%rSbNfZHRXt*w?n*cP8$@bm2S6OtUri4B?rWfJ$ zLzu%CZ^EppEps9;%HD#SwcSMN^ON&qEQwt{$1RFC$_L(Z?6tqMc8-v19+ND>!BB|PptugkhKrivKv$C zt40+EDb;BQ6O#&Z^A+MS;B0-7BHj8U3-t1853$!_io0in!mE6GqQ7MM*bmd$uF*#` zi(ds%&iK`1%Que_QI5D^6j>iJ0rzMXNp#(7+_6$0aM$RRorpN{YdbdJ`xfyXvW4;= zVP8i_TgR#Zem&DBm2QTYY;qNi$(J)zUpq%uDf8&&d)TY0q%+p&U?I3T#xQg0gwVC|GU(pSQPaa zn=k8>oi=Ln#g+NziF_RVEKs+N1cG=v>eLxv3}^2hZ ziLYr|>-9pRo%Vd#Q?mBWFSN30ciP!22xX<}=%XwJ01-u3^Sb-k26cIC#CU^;uZ8MG z2wU|qgsGdne(j{7@vdN7Tp#Qlq58Ix*}Cz|Ya~_QTevQ7!l>DS4#6lx(X1gkW>}yPrBXyP~h99l%^LR)P*~Tk>>H4d(0%S<>Oc;3Oy;qM{ z?yb%+$SBgQG&?bnPNY5q%|E|bd4Pr5t4&pMPC9!@`B3h4z~uuT+}WstW|>IrNoVQ0 z%VhbgyB}-WofdrIhfPBOWD1Ok)^^vGPXGNw>S+QDO(4+c?j7Y=BS-F4SQpiw4`r|w zS1uoKc1A3Qj=&LIP0!k16;Vc5t(U3_{3PO~t^xJ)!JHa3V{vBt>Ekh`nKcc%T=+p& z`;$tUXC7kpP@-9%bT*&w+PLXlVqQ)MhNU6TAa~A8s6t=%bUT7@WRCCd z8FObJZ&JINi0$vPsTrAW+gU@y(U8kN>DTTO3oVO!LNTHhB(imCeGYa2~H| zqxX`^4!#h(|4M^s*LM>xy_w;}7qlz%KBnPE2X7s^`OVwt=IvWB9ckwYV&JlY9y{=O zVOz~^6JsF}3Fp)^vzoXWr781xy-H=r4<5PJqcrg&oy*8)1v`Gd=-eo2=KF)$Hn1#K z02Lu1g~fRS9HNoS1@f~>(>UvqxAL6ZcX|RU?p`aONMoUPvHWcN>CJE_zeFB=|ooKsHUZr+$8dM_-4N{>QZcpAFfaz_Vd zFJlm8dd_z_2l`_)qM6GWJa!9S-}PJtygsFMlu%^j-^TY89ZHTQa0=mKeZuwN)2!aQ zp*1yL4Jp6A+Zi$l-ErL(l@~!O%J#932unZv3m{-h*5-@-lt11-adbE{Tu`R`%-;Aa z8nMR=z^3tLmP_#Rxt$UdcnUzmSg;%+&rkOVN}{E)r$dy-iT{WaDBt|?8+D?)2$dca5;`?* z8sxVSKK{P`>|IzCt^bi_*t(up$0&xcLDAM!uwxrF+;sjCzhnA3ethoRgfsAM`)5c7 zfe4tbX(T8%GSx@LRsSPuPhk0adL!kLE&bHMn!Fl+e^7l{dqwv{!p%vMbJ?eJc>2N1 ztF6|8Q-T`UDnf5;HAVOKZrEqnjh6`DxplQwwO(65M%wvdW?sAsm%D73SEsP4h(1KR z%B_zksWP{qJqSGbLAdWq+RaUwUhWQ#!z=2n$sMt~6MN{FOqc!vG91NOQjrR&O0?lq ziPiAL&`wcPgPT00<8G$R;?>u|q~v##PVPC6V~~)HuAX$>Q(nyfysPXfq4DGT@-xo+ zxkJI|J{HTohcmd-O2d$=iL=HH%A#5{>sRaeeodQ@lQiLdXuiE{CRfgNqe5i3CHH2O zjT9U}>%Tg`dkM>kuB%%cRPAPqt3!ri9z3AVa3OjA0@$bomE23a+1aHNJ|q!H1dPWm zd6rscf>y3$e2)1cxf-SlgF6=uutb<)x=5zr=3m#ym=i;Cp3~dI$|~H;2aO0otO3uNQ6kwQDK@;T8a*Gl2BYKWz&f zOQRiZlV3*LwyC1&Y&kghd>I(bo2cWGT1Q$c6k1Yp?~UddWPP}`c~oo3 z>vBKi^M_$y!n^5Ht1*oe0$0)K8Gf*>(5C&TC}So z&QL)`pdA!suP}fJ3B-^92?+-yM1=$q$V!M92unyJgd{=${}<P)gt1~C^7IgB#5>pdr+8qc18;IE zL-m+dXPUC1fv7H?na{)=rQBzxrl7(H)AzWzRI#@U(5qHywJ9RcA>W13=z?w9RG3(d zBsfN+affcDdL5Y7&rJPo5!h{M(+LBVR_*Ewm_>p}_zq7!&$ z=|g%*>yNJ-uG~qv97GQR4sKR3=!vm3n5~i^u^f|(WSR0DVk{BUgUxtY+){MB+&qn@8rSltoBtF~UEKInykCGaI`p7<7+(JOix+I2 zVE6AkwY|&?Ybww;^ub`JF|qz>*^JDA*eS{czR+h!+Wi~z7FrO4WHR8MT`OJX`7L3< zC+(S=6?uTq3VZ>_n*%wf=Wf{{`#%H~YL}pBZjfKnKlbs=VG2~vemp=2O}bk?a-xLN z-&Ei3PggyIoM-3EB)qfl1hCQdquQt0t#uQDo!X5A*UvhmDD}k|GQlWxrDD_lWPiCX z#a_E{`TIkMB!i#)y^^)@_Sxj*E%rx=3~RS0-FR)3qN@M@c1KAzhlEd?9uU=kyIdC2 z?)Kd98}(5oHs-1wG3+!CN->zWN3|}QAK+>S=9`U4 z1-Z}Pu;gG|pw#iiN{pPSku9Ih%BU8I7? zpz&U)ib``;Mwo>zr`Lq|R=GW5v_uUwo=tF_F(Y$qpZxt)F;o4$ae38b;*#LfO&E(o zqT6{kT|#PTP%4!^9;=T4GSPOsYD$Tf%=|6Pcq~>Ko69i6mfQSu{VkvYZfP`3cQl6^ z9av$k2dB6Wm~~G6VeBK;6*h6lolNb^OEg~Sqe<+&;k_+MDWDY^aJaD%Zd-EhbWB7h zPVpQ#M{OAT`mnQhceKWw=$R4C=0f9kZu55|b-gGf&buxW4R$X{mSlcj&=$oz=htby z%L*_y(U(LeRhD4Hu9V~U#$PYP(;I02jzBPCowwTUfqm6XjTf|tIfge6pbYG=fP(od z5Zvk^|91coF5nmA#I@c|1ir2~I4j9jyfzvo0&de0&0#P-!fU;Z9~rit-H-k0-2%mW zJH)a|0acHI*`fYE!Chhn3w%eu)e)-2NNur^#O3PwU*O2=K-mY>b|g>C;@Egr&uU9o zkkJcsacN?$Epj%DSl)Ie9sm!|p}b+E{jg$Lsk!J}#_6GWdb_#w>xsD0D3@%``hFb` zv7?Oq7#p_4>6<;%#D}WLE^9`vbE<`$u1LhW%m?EeQEezYSXbn0bS>uNJFjO~cAK9J z-#5u!xZ3Bj`6Y5C9!;no1BT#Cl-P}Q?8y`@#Y(D*Yq*paCHMGOGo*q{}1jogI2E5H#WzG@pMLx^Pji1Xb3zO^03!%lupSw*Pt zD0Tx855AjrK}%pN=|XljO?hy4@dv`4&7Q!2(^6fpRC5u%+Frq2u!XcyjhYU@ z=0vGG;9^OnPm~dUc!k1CZK#020^ScjZ3z4E-SFJ-eBO)0*4YqISc|)6pcS66Kpe#R z_{7dBmEBx0c48+kjdqFHDyyN7iLwyPG@#wD zQ6NxJE1G7*Q6^JK*xVnJgp3|suZLMV&u8DJzPM0RrqS1@!R6`}xpT4Ay|F+sLdL3~ zDY^1)D+=!tw*2K)eHlZy{nWp?%i`2 z-M1!s!^qzyygLoIEldW&(9OujMTF)>NjO~9WbAArLuWQ?Cd2FNEzvF>E*@?odM`GE zdLqnyx5q4~WQ+_|e||$>8SC2p4H%Vf(qMVEJzDp#bf<+AqyaL1swfp^<6%2Ox>Y)}iR`{!m#O(M*eMz1gPFEuTs!G@M4|M}MC zgMXyh;Ukl!GsGZ)dg))?(6EWST^I`dyOy`R}P&5S_0Ild)37L$_&gSM=G3)m7w zOdQd`!pEK6_cV4TI=HOn;I-}lN?OUV_$|&{lR9}&fl7JO09m1ZpWgqSEtAn`-1%R= zN(%bwi|c&sO%#e_V1D}LtFB&q-wQS(Xx7fo)pHD-2F{i|nqmR>;%qzQD<_U=>-4W# zD4YiLS`BXa)6MsZJU<}q+m@V!ZDlxupaV{wu?ZWFjnr@=n2`2VhaT%hvyIr+#sS^) z%v^^qpIb>b?$%C*&nc@3l(i+Y6SO`jr`sUfJgVzDTgP!OZ}2F9!qijr_Rr;nGLYF^ zCfxn5Bi6pMdHOE-7tkSc+Pmp0AQ}}&J@vV-LR+rN@*LNcmc3Q*+&)qoLR|+-m1A`6 z=+-EVzy!O4Rc5W7*L+W!filLicQb#ogOKD>?Ykf%yM@y-Ih1xt%*=XYQ>l|kn6+Qv zi@~L!n$Dkp2AUY=KOd7t)uHF#O%~qyYRbnqd%${~t+}{R+4y0> zUCqQDEe;h39;)lzoUW?k@NwvKhw9i)=%j$LD2rEJ3(G{iYv)gVihM55cOn{NvDj(_ z=GCVcxbnX)tsHJgXdjnMILV=dF!;bf6H&=s}MSc%U{*l&0jA65}+B0a~3yhVc8UHNdPK`os%nDGXfnjW{(EoA&X|Tq^_QkXwVDlh8l_LA!sHim6~~ zlRPpurgd`O`jq?FVxIb4l9#*gcc87bMy}uNtB90_*3`C?7BN~RhHT&1r3G#@ntt^g zWCs%4>;1iGw)UWp4At^R1kS-Ku&B)gvXMK718)@b`Q%<^ZdQN9LFU?JM90@*$ho0i)J%=7OzGPP{OJ{Y})oV;c(qp(aFm- zb^tQ>JV^KghN!+Lf4o6U<-uNt1n4igjWOH3R}#bON`<3=ad$pvg_1cV`7tdABT(G0 zS6%vbWNqGEGet|r$G6Mx6Iz$CevP$hsf3`Z9vd>mO^{G60(E zTz4>lt|_O(@zb&j+Q1e=z4RduIJ1}2eOIh>0-w}0lsTa~g@;WDRRPYT>yPGPWV8Pa zMcF|3U}n;cs_~)V7 z$m&MzB&}?KLV=WKNBw0f_IR|1*r``QcJdMM{G!CI>QM z^G6AxOT7qqjju)09O`VG`pP+S&8{!h`O3FJL}4rXwUgCCEM-YPxf|$n{zrHzX5?Xd z?)_-~RITW-XeH_>idX3le=^O?U3nI{D{PWxOfXu*>IZejkIlo_6*d)_B+BHdQ&~V9 z%1W$CK2{!BXHJfC{B^Tbm^YAmUJ(!Nz#cPNgzFi{;;0voU=}|zNKc1TMZCE=;noei z2oE>6dMB#sq1MxGck$4g>+qKVeIHh9Igp7j%$Xf=S4UG&MmW$a;8$~|)_&r6Vw=4C z`)8%@U6T>(i;=X>-1TGruxT?X8MA=-6ci@9y#3}Z?V?XdKxWU-oH)$sDR)&h((>Oa@7}+8qKNTQ>ulEu z#wCZ_%L#A_Hr3siz)2kIsIwy^-H!pQYSXOHvk$kvHju#>%qh@w#VS{i;FHaD4_LlF ztyLLEYyOc5CLvt5UHIvF4k!1F1kaX$mR)7lH-PZ_>01An}nR1mC3atZ? zSHfCP_5);W#$ID7-Kn0&Df(v-D>1qKWv^Y#|<=A09bC2lC>t_O>R~V0@JISBckU*2&}DjFst?bL_=j@38SW^hFEH zE-KX-YloOA+uD9iFfJy@_R;%B)yBqvwzRN->vDpPnx2gHyeFzBvu%p-CZArFxgX-;~14i!F z@-azE{UC!JJicAP!+;CVMfbWyk}2Q3!)gI|$9&SmY#<~Ocz}F{ZCM_iOEOSh`%SZV zo>=6SRu&}inugNXkM&7zF2O}*yw9l(Q=D`Vqsdh5>|g6_sHXocVrcJ}XIJ^KVDz_B zHeW1;Gl1g1}XJw~nK<;Kgo-1d2$w!Fvtw*uE1`muZd2r7h0UK{dU!gdlkqYNW z&QdiO36zhs%4c|>Pht3M?wy8=Gk++q!b>^v_;Pp^&{Dl9iMcsH`U;0~etG&!n>M&5 z%P|iBy@kpK7~G^>N+U=v|8%6(*s%N-Xzuu4Gczv;`47)cZYMBEj_0qircoteV2VT# zlFAnMRt0yI$=w6l$uWv&!*D=v6we9V@bXO|UFU~H?*MtT-CNs8)~{usLk=ztE=<8a zeW>T}b>ehs0~X%$6a8wYyB<5yU16*q*qsa9;I+@8=VyhmZ>fhnxFvQLyR+~zC}*TP zXWeHulLOmeswr^T;gqMc_T2lS4<4_#G)AgdXKtA*v`?mm@D+Mrmo^wj85$~_f727e z2UVh^1K1+kOvcdckZc8eXi7D(J2O8C1(8;Rai1UR-ax^|;l@0+C3dbr+)yNzVCy|` zY9V}oc0A+NbOrMf0aP4oYRl8rog8JVdPfz|lqZHQT0ZGv8dt8#oL5O&T1ZV=XcvUO zhhLLdXj+PmlVRklGxD5t4Zc7?d7s<$Enz)H;yCMYSC^ZUoqCCO|M4=`!!pm52jYR=W=Th9sSM~5m>bP2B zG&Ykdd3qH(g*wfrGkN*(iVq~^R6E>7bKgyO z9B%hRagrK1d4C=Q?@>nZfi}z-@9&UKPUAW`^~v`|I&oi?TZv~MVkuv|&UEeNi3CrN z{Qv>R`ZiRJq|4nSJi<)?Z*Ok``}40D5#1$G7J)G~7={IV=GT-g-*J>z#h==`Knn&V z+gkxLw|FvBvFdOIX8_-+j^8=_W^yYTH>)hs)VH9_~Y6(YN)XvUsQd<^~B1CL9$v+Dbf5uj=k7{D2SG#)+|R{P0V=_xifOJ5Kk^kzc>&M7|%NkcI91!+~Jg2h4E-h5umAcc5CneAu%Z7#>fP8ps{WEKWX^w=^O`D zlUOW~G}vul$HmtVs{S1S8s0<{(&~6LzPIW`Lb&C@&Y}!TBd56&IGycIuIv`ZE+7mQ zRCkq&Td1y8{BQ!6B2O8JZNGMZmB+%j&fXtLCQVq+8t$wo-Mu`Z;lY6=9XqN%jaPsM zvrg?85>l4@xsftU*k$M(-SdziK)({y3U#kAEOX&Z~XRxBfqgfN0pwWOc)5Y zA{s(d2UfOyyf=oSmfltYPnK$1YWc*3l#b(DF7ah9O2TZN~;S5lsebP(j@?Y#-WySY%po+_bdK%G8bNk2yZF_p9P(2Y#MdhRP3%e zj+9yw0kAP2GLEn}5Ee^}c9Se(!|6 zZHb%Rv#I~J?3>F=&jGFvz+A*yJj}gF5g@U$Mbi3VTKMD4@CYNI-JfF$0qhDZON5pp zbxq}cSFGfj4|wTy$z19<3pq!oYRm$v&u>zVS zOmx1C8xQ4TB~<2OA76%4AqBl57|oxYfOLQ>K4(2$|E3k@DyCfIpu9G@y+b?cy?m&` z1uZWQ;7j{4?*#KvuUwlrf30!F;QNBd{Tkh<9u^*TJ}#GEWoP#EecDSQXauo$w%;$Veqof>EgPBkstcY9E8Fr~7PqiuPW+mkeZ4?;85N%M#bN3k(Z! zai=J!O>DVKr5$B;Vdx4dYYE*ja)`XvyHN1ykW@EtVNhrXUkM;Ek2K#;mA%6+6-R}{ zpL-A*S2qUzD*PNb0M2l#w*9~}w0Z&dW}BDLPIM*X^Kp#YDn%m0YhyC22m9Ja{+fc8 zO>XpL$1Z*7ILAj$@y|BtJ7-ppP2`Mb7GhweuW2f)*K9i%gzHNaR zO#lmRON+0pzxmS12on~hjx|MAp`Q0cMGnutAFm#pJXyz45`N&KSa~6QpG$zcPxNer zq0dw*zIOW!ym?L7PF>hkVQpJN0K$?eF9qq*@m20if=Ewk>V`-LVA^|Ba!mp0uN3um zDw+&WY720cyOuRhERB+x=mbnZf_-v5$s#%E2goIFHQP~oc{-ErsNCO)Ez=xMOeJ~5 z;dBMG)?dR<0>c!VZCrzUS!ED_nqV#MYH=^7ZoWt{t_9h8R-hx)C42C zMANnG!N4P z>sgbTxjlVD5T`!;Aj-lNKSc8M7DWP66JFQ-5#5!usv5n#U^mD%rb|W zfJpFS>yopy{yxiV_c)&D zs>$r$+)x1_`qf#n3)PcS_0pxR#B~3Mj;jM_?8HCTL=Tv1P%r>f8>Zf)8HC@PChW-< zou%QQb+(MipVb=cieYq@rD)zPWj0~Pe8+m@OGA|O$F14Fkx7c=NCSXR`oc+t3r60$ z;I%;Bo4b zDXGuf z)wKJkn7`0ASBx}Yk--QNTFA*cs2Bt#R0iyS|NJ*Hc9cuTPEMJV^mfb4|J*-xyg}0S z#aZ*+L0-tQubXt!?%CA%&c*G`ni%)?a)8!*6fOx#+b{ixv~TuqIbETA0boP+0iYr* zZjYK<4GM&>TeYP_o2O7s9y86ScGt$s;<*y^{ASJJ64NTs#-{<6)~TfBO9HU_ZOWeLPp#%Q zC=E zC?jc0I#!Wy34b=9Al`oaPBnMyfV*|}cPUKrqtxw^q5OBArd&%gQw}m6TTfweT+}wP zuDtkbWupiAT5{op65HTiIKh+a)+^bDf=hWZ$yKhLBM(jh9uWmJxr%OMlantNm*4&r z6GIxp9c=}k045Hz!ep=*2hQ5);9f zYDTq$3fwc#KB=c7o}Y%1-O}i1bJss~$ROhxvlM*i#7*-sb8A0!_+VClIN`6W$&7XR zIZdwmXR51rc%y2Y`;P`V(Rx8uDbWL7v!?=1I?|YSIp~-Odgk8jp3v7QW#caqr)ew} zW+-I4Y=jix4tL&258V1_HBAnvYRiaObDqMBrbrtYwM5!TP*gk$7gz$9d3b zN9xGc1zXjw7>?uA!`)_gd}e#7YL-Kj94P(1e(lDkA*W{P!b_e7Niq92q+ByL(9tdqh1>Qy9bx;WE;fIy$I-Q5<3WKqroZ5D6BAmT>_t1T^3xTbKKXe~DKT=)`* z1k#Jot>PI#F8GfqH3P{o+FlQ-Dx;i z(N9fHHBkU17wfglEofnGCU}~0Puc$Dt zs?#vJ3yGlzVc|wyRx>oJ2AQfaj@}m`sGmqu(n1@?aH@X0yP0mUX3|$?TW1^^-Oicw zWb$<(#@RB=*rD6m8Jo&f2~yiLUWEj;Wr)h7aED52t*%s$X7`wF?BGeFF!rSZpqPop z?%>&gCx4vhrxa3378u30i3?{IU6iPl&q-3g6LlZc2(%LlV*m{&8n(YhC(`CFK$-3- z*My};J|%~mAvke7uCvAda#v75$8R<^TW5R;zZW1&|EuE*Eu|?%`^~kxIvr$|O%yz> zy&@?{@vw83!P6pxk}qT-Q|>zX{TAz_xV8?;BNzB}qd+(jVqwW0by7AC-A`SbXfTO( zD!u5XhcL;&{V%5;_bsxk8qo`AtiTw_Mr_NQEE6)Ev61oj(z*f zaH180_}3>l$xJ&4f?2fNClbKKE2WGtwmw)Njf+&=naL!=M5BMRRq^!~c*2)utRBHK zJtT4l41Y_zT~|YJAc^B%xeKP&q9SdySHMkgwLDD26OH&9^-1zf9uZSxHp%3VIM2VL~ z+wdLhu`gW0ON`pN^(e(@qw~Kj8@8h95VC$h&Gyb9Egu1rqL1T}yXKsayTk(sc3QF- z-p;P&5TY;J2@j?Vu*vv8(sA(15Ljd@sx32Y<9TIqhg ze57x2ShaTxM_p>QWK51i`F+~k=q<3OLz z#WTE+@cy1YGNbi2gVlmw((QwrIZ$7Iipk2lP!{TVYOyVh3(V3%t}w7r&7kWW+_5?) z+N9vc)ry>D8(=m)DVrMJl6;;NqGG7?vBSHAiX`N}5$mt(p7ajP*i;mk(tTjnd)1x5 z>~1?g5N^^Lb@fq)BztL~vfbIStIsYq72>mg^&#;#WYzPRm7N`qoMv8CNRnsa{CCL% zbnMDcxejqUaskR$wwToFckL5V58~|c#N6J~j!qRRufC+6cia~0XO}1TwN?08<^A=ZVBVnWm_`2x2|V z_$=C>?$pp4lmz<2Emc;QAh=s!+gLtx;m-#_tmOhL860f>U}C1Xv``^kaM@V>Gq`4e z2l-AwJOm0{iPtVj^(j|Mj)0`bi@pRMpFtTlkue7-O1JFjTo;`t71MjN6NX3(4w-j0E&lo`a&urUG1|LU~-> z!?wiWzA8j{F(8u5K`&JESqw~-ZmsgTao!5RQ9@M1!|X=0;&QT(IC<$#JIO z(32AoLPS_v7%MO<(cyi)auD^#s7{kd@@xO$UOh(2h8XbA<+7yNS(P19!05$wfSPQa za<|M0bTJA;ZAzxx0WzG-bk)1)PFsBtz~fFs+-l}YUCL=EY}fz3^`P})6VuWdjoCox ziPGMS_rMo^d=t&gn7RrVy4>v#9Wk!2Dxum*>x^YIR+SWex}OA-^X?GUl6T_=`4gtr zMBEFT)^RMW~ONdm28jG!+jcpMG z{uC+#zyyd0!H^oR6f~Lcx&cs&l_^I}K&4dRBpsM2Ibl7&R`zw0uyzEl#%{Op*WA&>uG3^bjZ4Hq8uobiD}iRK_gYqlc{b=LTQkLB3@`Jhk<6jONPhv!I*&9+-Yism2^&6Kf2!l zDYjpN)O#2^p1cp7y5;_-AHG?Q#}mj~(TY(c$sl@XI+{6|Hr{Rl+XW({w0bo0=zgyN zic3S%dhnSQLkMX8TfU{r*l)sgcQyTwFk*@czxvN#!T6d%5zU5fN<40anzt=JZJKD1 zppM{{CK`v-sQbdJCIuH7Qtp9nljIQ&eJ4D>B|9rUJw2m4Ykz4{Zdn={ICib|gv06f zk?3o*)Z8;V%~MdmH0`c5&28Urw-gKOwdUsTVob~@e>`(=YJT|a)OCK^=`YCF=_9=S zdeMNUy7(r-9g`P>gA{1<{oBE(<65gw*Z+Jf$mf&)T+t@sLI38Lvf)4hJR1~6GG;E@ zXgImGi}Plk_l2X}z&|V1>Lzb&0ZB;7pkNb$KcN!4QiZ>D?jkcC%TDBJ)%i*=B3$*x~qc8xuaHpKk^=t3me-Z6w~EbM5uv zBF`U{us=xg^`6i0_Xs_RY)DJ7qcKfrWlDn9t=)b}lWMQd^yI|36>NNX(lrdqlZ=B_&K)uN4LGU4(Ow?6h+kCi>?x zJC`NWb&Cmwj%9@V-}?h}#zWu^CsnW^YTl>cxO0N!1?ag4b+8G{#!H6MZ^X5hrI;}& zWXVMQkJ}d`X>LSocQUL9KR^yzMUxRpTK??DuVu=ZLkvqvSI`s1_SPjMM0IBrrgv5< z6@_k+^RjwsM*}ZUzwfV2iY%F#F807kIur=qnO49IAuvefiQw+`t!Uc^491N7juN^} zM^DDiVP&c(ry5gGSrE<${mggo@81$66BJrgc%adgaYG1t|-A~r!mRjqxa^} zpjxr9#%>?zlPcvjVUv4d4=$t7liCKuWa|i9AOF?uhoe=A9Tqn1DAb+N$bXZyw3nw_Pm5Yx1BaAPMxfVKs1Ws;Zdj-{;ki6zV%g=0m30hB?hAu zvmSu$axRwvVe?6YXxiAs1pbZ0Yf~Fw5Y0+gH6Hj?`O9TW?s zMzB3Q29sw!#yO&J?E`mDb&b!DGRvM&>CG*VX*is%(b*aSdthD!(Q#N6LH^e;?Pv}CXYL#}8y&N6Lr=8=ncuXcP!qmEdTjNlN5bl4g62y>24OTcv^&U% zg^DPxDUNb;3(uN_6aTBI@hA$M=je?Y;*ruNdZ>IipJA4Xa%Vg3kE)D(213&s1rf@K zL2V+$8rech|8C;a1adG-t(t?|t>NEn&oUmoV)H_;DsDD1*Ejb=FC}K)8lN6 z4e*hH&6!CF=RaHh=^%(^TwTiP9poDc`=5v4O>2KO3U&JK^hNC20<0q7z_L&!D?8sv59&OBRWvK| z!YjejJOoD>&$Z{E7Xz%KKs4(L95l?%A<%ts07~ejhM+pJWCs4q4vVU-B42}1X#>GL zwLi+U3&I_H!@ah>u3-Sxr?4io#00ELshr%XH3wiNOWUeed$gWksO57=w<_*qbYbH9PG3*er%=;hmBp_yPkr!ar^NNf67iy&SNm zDp%aZh=KbJ8~R%C|I-bxwfsmlDp@gohodYLHg{`6{ZV%1X^=hQ_8pPDtb~13Df|cc zT@0#30RRu^7~1w7+L^ZYB3ar*0;3zFDM};8QiD(XMWR=y*BdSdC8bzbq#$t{AJ${) zK&AHmr>N8{uqM0Lm5!XgJ#wj!!nl1R1-08{u|^n8e1be$rWh9PH=67fw0|-@f_a}G zf0kn=I#Uj3^>!ZT(;SO1zm%iJ5YE^wYB|ZSe@gk{=j1SP>FqbgiAjng7?QNGI%1_- zxKYJp(2&kfZpp^~g$#~|hpi`DQ}?k=O_3_Rj8g`*_bo34VeR>>QHO~OeeLW)z5EM_uD%YWmSOhu#Z z)$wd9*00G6vnI$+R{r!cy}oU6KGR7J{t^H^fuAG+qB4{}LsnaEI z;2}6?J`uCay%**ya^ANf@H^v}%CS9FW^Ef-*XWIT253DTPijzyqd{upW7KllLMj|5 zaj5Y>n^&EBbeP{*1zKa~RRYgN;O&Bii|XEFhr;iOcC0AsC=X_93q+jCybTgDm5t%P zKn-rpP@Drwkgsy7t`v&F7NY*}G%NAxC;C~ux|PKOlTMlvHHYIf02>7Mgg?mB3mN!m z+|hrLuF7al4>Vw2Vrq8s?K>%Jb9Cv1uX!=-c(Ss-=wX~ombrx82e`g%gVd6*$nrZM zhRXULbmvpD$+=d8s$Vm$dpB7zxU#9!QQ9lK<)n&yVNm`GC?viIQp)zbkrRaJ)LaKJ zQ@D7%VijqV!ae7$8Z)D?>V4ii^FV+(v>x0=kxc`83pG=0erNXj8`S{1y1eQ<9~-ZB zk2Dm7W^8P(mt7pfNryf4^$^Bp&aA$ltSI;}#@s2jk_t~hkl^gD1c+T3`1JmLxx^OP zNNi1ob6kE*44PyQw~V2yx&7fyjQ$~d-zbShhO&1eNUnf}ZA9Tu4(H|e5|I{&H7m=5 zpet=0*egy>8_b{%+$O^7N53}U+Y&o6IoyvyX%<$dtRZ}~Ub;v*4)_dxE+vmO+Id8QMR)n2z!`$7knSzgdB2JV3 z)5SZ>(Vq7}t2cE9gZ~rwlc)Lta}ViOR6>p^lm-ou zOVjP%vU0Sk{!J~!qYJ+Nui8GiLuao(6!&81->fDG7+Ef75aFTathY|H=^RIKX)g8T zRU0H9gBYFJGN{apW0kLX^7ZROy|ZZ!szh_W~LczTc#9RbRboP{Ac#1r4@*Vdb!5<_{@pg@s2=+B2RYtzEy7 z(I~?MLaQ}(6)a2Hu+dS)G` z_ASYhPT0ecN{__O8t1Y&?bHgbUQ#fD#LgYNRpPz<8)!sW)0x>xB)8dy;)qsS6~ou4 zb0#lM{p*RlA!V7nHtaO!;+Me1I??)YRwP87esd+ zlttUq9h4O@2+MGh8f$o% zLBeb-aICu-bKfWyA9I-5k6wd5x62#f+vl4=39Ww99XJM0YUqAnZ~dY15}=*!pXj;xg#B|0EF9PRJ?U*7P@? z>u(N&QD$%LC-v_Nx{>GduqKz?Yr!*uiC3~hkdJn6Ph?KE8ucCO`x1h|%|G8?Gcd!( zKh9erB0~fIeo;S%kCKc=ZRqy7a-=Ee2>0^SK?;uYAZAw^CT{m{TDz|M{TUAgU|b#K z94C|h`m@qNjJ!vHF{;N^Sx;kCK$4q>3vFw-U4bHZQ+lI?x!Xci425c3jU+U}93{W#GW3zr=Rq&^ss?6sQvzP{Z8UZc zyZU^6Kf7ny4swRvjqyMwF5pPm{l~?qW0dJos99ZRZ@gXp38rQUU*+~z7XUb)H2+=3 z<2D~m{z)TtBlxw2*na3(*wg<*&~})pE@2UEV@t=gHN4Xmv@PUb0^3J7R8^3y9HmeDIFOHdXWygLBYvWp777hOXgAX z`Wv}TVl|z~^=J~6WB z%?wrRNxZMi$RCx!qeCjHwTUwaiTFPlp-L;8Am!`` z<7{bA-mM@IOs-)+zV|l`6L-IV)lDOjNzDF2R6P4kSvV?&PlGTwaQrki@fzWPfoo+` ztw=l#=!7*@mzv+1VR){C9Ommqjo2fH zN(nvKITIa|>=e0KXAWvHzE+dhi#xLhNWNLufpbK*1dW?I!#RR!p7AR!Q>9CdKw*D2 z4cLYTgAqM`0uE6EUUq}tcH~%Y59Gy+(+1=;Xj-nnP1nBm@k}s$(3<24Y_6RP=xm8i z9+-`6e|qpLYym&%JPF0Y>3mWMZ8`3bg5cBr|7fpjt+Rv+VbesAL2>=g=Nu&@GW^e< z7fv|$RY0hu;)bt8aF4@b*|)dMa9_$ygrW>tI`j}$b?arqXi|hRyp`su1A>1&42W#m8$OO^Ad+hc)jmL&Uh72|a)pEP4+A*68i@XfTM_TU zQK^gfqfJWEzkpn`T}C5C-CoSJWEd_68HmzldSdq8>=xl*15@>U_}d}3P_A>l0$jVp z8-NcvVii8W(~%y}5PLf5vk%AWB^iPRZ23ZA##InSiK%5#l7zf`sp z3tv{}-l;=uzD65Np}p}H9KRl28UTzmNkex=x``f6#F^jR$mt#I!KN=Mv6gGfsWu~N zrg9~D;=)PRzlDR5n3O`-`k|$F(`}XQeXqJ2hp>e+Z6JPX1lyHJ;SX~z9dQ?&w;sl& zW&Mla#uLR}AVEi>*Walsd3_VqI1m^^`5~-nbJKcn*ZZ_Q?>P&Ry*l1u;6@4{c|C&T zrmDuv)6%XOeBg+X%-kNskhw3rIza)~8{u>RY^RZ_$$1fky6RnXd$2hx?;yDT^lFM( ziPj;TJOVKM=7%Zcq9n=9tI+w^4v*}T^>f7JUHA=J=hA=BWFa}sph%chMd)YYGB%9vTP;eN2hSfjmp;6~k_ zm~>AGfF3H#tQYl!mziR*l0gc2V1VJ$pOdq_Ng5f=$Lil6^QXr+-WzMdc&k$fS41*# z*rda6Mn*=vgOTt+W3B4kCm_-tZ6O}<#lcOm#AD&w{NhLvqg|4x|92F{<2y{?n9ff+ zy6R+Msp8-8WAQE(a$d^Vea>j0j;aT|KUNOi4xYZaayxbMRFAsYzV58|7?`R`nG5nIk3=h; z11tyrztR5f+^7XWcU~W4^pU2^X`C2#AK0P29YUsvO#hvT0yjY6 z#{}1V9QdAN9ue(s9ToK!uDm`&1V9iy6>b(6h^ed&M?O0}t)&0Umj9}O@7`Vp-0Z-M|_HJ&tL?W5pUeu&UHQ*@+8p6XUb*9 zmbNS>7f6c#Zxs=46C|u{4>yrHWNa^R-z`KN1c6dLMNtK(P^iEX0!z+kxnYzmXxL~5 zqr%ZC#1gG)q$o-PAl~SfF*zv;Uft`^PK<|)T>W<$+oOkf^O0w_$V4K9X-jPAd8#WOtPgBH)G;R@TP&N<$?dU^AeQk10Wg&oTrT`RdK~ZlRE&hcgn2H^W4E zd^qHsnwC--Z^8#^lSikEOF>@gUwWY~FVXSZ9)R5CfWE%)1uHFo`fICfFaWrzC!~4U z6TaOuXFRm)eU=3FW>0Rkm#b>f@Rj^C>uj!tRiMH>Z76=A)~OFR6I)4+KcBLxQ-;Qp zf-iJvW;T9uQmEW;dI(nH-k(pa)o1i$e-E`?voqln!Zyjdg*p9m-X67qte4RBUGMRU z%S1~;Smw+Rp89IpUn{&mhW zsILG;oC#6rvY0r{sC1$6yd1louz*NtzY1cO#{;Oz`u- zDE0b%r*c`|iJR57;jhLaxF`{b>eEuoJF6-I?HRh72PD5F{aS839mfCCUG4uP>D}X! z&eQ(?d-vYG-PtDHrY0MY+q7jTHB0fV_iR({WZ9IH8Hi?1p1=btq9FR%b<$}}otexN z9;O^MQ&2)wK=A93S}8h;0*YWtii&`SK#JP$^8Wodk9o|Y59x*)GgP`(OwD6aPKYmv_OUi*Q+{co!u zV$Y{hbl-d61#7tP<7~y#Y1>eQ8?BGSs9xwTSdUAddm#zrp8#4aOdyMGJ3nmC?5H8g z=Ppl^<=UkPvqYrb^l_%{d}0_D+nLw$uh+5 zfmBFx4xs8QlLSd!^TdmJ6FV%9Hq;roMo`Yt?A*bat~sxLf^xV@D^tgQSbe*sj+2QL zX=_`D=^5{%>{DUMt(a<9Ve>A*navMcNU>Mkr`LahSac7E^Wj0GZvq#|{L0&*ctq)q zmWA5Q(;p6;M@PhvZ<-sOWNQzkV%3D37|r3Pu1u4aMuXx1CAgudfWH~1EzS3t`^kA{ zQUBa?;CKSE&{S3$Yf}oJ%Y2XH`+k^B=Hj!CG`NV0t-(c2hSLN|p8-dPv#JmWJao3d!ESizS*$RgiNuBhFU@Pzc# zKm8$F4sjbRe=`xy=oIZO}A#1OP9+a!{<#u-!f%(kf~XRfzb zzM+e84xd65Ix>6~Bi(C#Qlo9$il|RftxQ%bAad!M{uq85q&>kY)|aJv@oGN=$z{4S z^CG9-70LZ`aL24IjcSbZKn4lFHW4%0G~St324gy`i|ja8atTEVAP=ndB|LW1+RSu= zZ3o8X@$~WlP?pBqq_ThnakQNC@$HplINT%R>Yv8A_dN`IBpzt6XH_GH2 zfrM*Z4c!ZRZThItwJ0ix50IKvwc7wCp*cv{mE9;yw z{p#T3k{W7n+myj{Ptc~lU0xv@eL&D$8%&b$?Q7t2Z0+sP*@)}Tn9+bb`;HHw5RQ@+ zg$}P<;-atd6EFY`r}hw zIXGi%4#7h*fVGv{^g{;kp!GJ3G#u_jO5Une(K3G*G~e~AtDTsllQdhfGloMsR=B3H z=Es9?s9J%_hxS|wWcWEMgSUpatr1W+Hb~AI`xT8gygOrL1Cu1F($5#6Ae>PH_$Zy< zzU>ykLrm%~6=&QZz+w~2o?4D*Md7e*fYJD|V#7@+GidKrPQejg1b4b@tjH*gchzia zR&U?He4ny4^wlv|X2`n0Q(z-JD!)i;5)uYj^193yZg9M!YMDOzZCO|uF&5B(nT`!mi)J zyG}qqhv9aGMZzV8T9C#2hpS3S%~a~-ozxC5t1?I-?!?22Rw}=){`EM@VN(!=hoVJx zOFB*?FEGmRxDGmbZoNXSuBMIa7ZuQ{WX~^PXdJ_0veEg&Y7%&(re{+!m)F;zvN`}9 z-KI$cwyT|FFmQllp#~I%G6BHUqrJU#;ae{5zAL@5mUL@|O&*-$Ij|^#Er4Nqa{Dwp zEjuU2_$HP)E%Wc%{w&6#thrFIBQapZXwKo?XRavf>qp@@pcoGQp9VbtOfAViq~OB?d?M9-Iy@{pWieqPNsyvK$# zmR6=1f75i?Tn$V89 zETHiEYq`7^?4xCG_3mK=HLxcDKg48yHUyfX=affZ0yX=ane-7`TcGt-m*6pqUm0+g z(DZyz<%GtBOSr4w4a~6dDcK|Ez$#@h(O9#)1x5ry*_h}7pNqiBepz5X{Ad%wlxt79 za1E1yG)KSf@+w)1!5il^WP*$YG;J7sxjc=@(3wek9Sh!r?j_b9`jK8jUprPU1~N1$h^;VO6ykv{Rj*b@K+ z{IBokSTe+2q8Cmk>Z$<6v%cu-$jnsBJ!6+RtAW`{cMCG+*cI~|K`UPoy?z`qWP;NV}8n_E{m zpJMZz1#aOUkozWmfb;+DB<*cq8W5wIR(ZSB=<$X;h!S_a8pgRf-Q<_3-`t*9p@np& z4I+YsUEy|iHenKsB0kK%aB!Y3D1_;iBG)cWc*K6~N5};1K-GjjUuq2^Hy)RThjan# z5g{uBYwL8cM{r?2=!J)LSxivRizxf;#Q?v#Qc99f>cV*cohaX~k}2l}Ds!8AzL^@L zaJ|Ab2t7a+mHL{dwX~+7q!9ODX%;AUTdM(nTcx1p8h@pN)St?-0E>SeTI^aj3831w z>PhUy`@m_3&?bEQM}j=r*XlS6n?iS47XOYPL3z@2v7=Uq)pM3Rp}Y+uMsd~^V9Gw z)7$$K8ckcy*QV<+fLlOM`y(T!QIBrrn5f2Z*m{9s-T#BG2gpP<&pSKaLF;E}bXw8G z08i&MxQ86;^8R^JE|vLD`7aaM;UM9oiUIGvQD?ul3ZaH!!@F2KM9yR2Rd~z2LpVgEqnon*b>F4xI1l{75E{oU4qw zYK3>4tt~Ae_%(cMQ$t&U)Dxo&73=v#{N_-_RMLs%oqF)R`dtOPPd?-wAywiDlMbiO z0weH<4N|ditRm%9Z~v1V7__GG^^IVi=D%GuSsi`y0!-j0Nziuy06=sSejz3=9fY2z z=Kaz+ya;}sYj57PC1QPnl3x}|Eh;jUiR69cP==jJSp-P@xahRvXX44>#l_ML&{#oM8Fa>7+R zJG(pJ{3SANM0KNCJQkg?7$bA-fUU;Jv-o&fx^q=Tv5G&Ra%w=|W|gPckWEo2H;aK` zn_7YU0!0_eZnM#iY3euFDkXYpd9)V<%6o%P;7#w-kBd}a97Pn}cw6`1zTkWDBWUCo zW@p1sW_&hdcPW$kH1g{#Fku^(KbEdj{JTl*ni-ye~*YW8mfb?_n1-4H0 z)PW`qw-AonMFsbS!uGtO~+7aX!i+A{67i=6yv}{Wsn6FzkBc$qJa13~tZMAe;n9NPAn2tv8balb91%*(g|O7Jm455`a34-XnV}r8couKFhyz?X2sq#XNd}0`MGSe7pExOl9ivn;<%wGXO08|#P|UW7 z4$&ttdna(Jpa-(0@jU5`a!^VsXh)cwEx1ZUhfF)Y7CA5J`@NxSm^a`1?hU*|#_lmJ zq4QJYjCeOa`fhaM-_9Y6Q>6$V;wQ$0!pY4aA)YL^b zMg_SA`nO*DNv20*g2$h_AqWW3pj*0o>-V_JzZ?);vj0N;`GM^x)^8)N;>FyRLEcbZ z_=*dqVCT)&1`Zz@co_mC)6=PO};H_ zJdvE7mW9y`=^NR!BXAh6=}wOc*{n|Nz^`On`;ir98{}ETTUcM)-^k(R=?+_Dew||< z(9BPhPTs1Lf}C*nXDQM2egPZRoSA9l8bSArW@O@oO!tTx{asI+eIT@wq;NqIW2kTG zuj6Puk>&|$!w0Pc%v4q`GgTyP;r(&qH^Ds|!fJ_wU$)>dioO1sxc#Rtml?lrovbWxX*!UY`SQxutk*NnMswM7 z%8A#rJM}utk!qMi`+`0uAwjknbkb@72g@%*1C-|fA$5hdY}(1GGkdSTH#LHGjiaQX zEV38*H15Izsurh8Ajl!$1y&p9ou8fPE?VgIVPb;6$1-lIEg7P2J9v`Kdwh(J2uif0 zAnV?;I8G~C3!T7=X3(5P9TYtj+nOEJ6dUR%xEc{>SHaTU#*_7G8Id+MaD zMZ55feE-(?q|X5uOdwR|Fx9p@eN(|kt)I6(H?YkmzmoaH7pkiZCy0lv>z$sjE8a#m zb{dSjY1tr8z^j_SUGX6>2*(RY-xdF!DePP z-kM^a@a_z2Xc^?>l^AB~50hCojkwB95G$>{s1Q)qa1s06naH_tA3E)Z*bh(BIEoTg zWI2HWqYfb5$P-;={IZGh29`1OOauu8f8!2 zd|I4+9|aNT`_&4N`kZfN87gJo8jVv695bd|6AvV2NSN+5@@Ws)BA>TAz_h91{Oz%{ z2B)kBuaOUL;}5~T&>x6_`&GHz zSzw#Wp8cftI z(^Efe_1|xrk83U&MLnnb?$w9HQfCXh?vAl!LsY!7VEl3oKNPvZ>#n7 z2NjPWe?nz$^mmIqNFy3wrBhK9kl*hMs%@KUp#G-y1>lYceMBG;>^nkG`gAfUF!=V{82I zvJNRREGA92$I=i~H3?$i%%wN6*HH>^MJwP|wQSm1jb*y8_|Jc3EK)4Lzz>Z0ZEIjR z0|9T`Am2V4P|B-Y_c)0?>bDia4m3}^_@TB-N7LPPk&YXl?85DF1le8-FX6~?MwcI1 zPyz8w^wbP_S*RU4F#r~h4scHyzMH^*>mC2!3SwcD_V1Bs6R$KbvyFqa$1~zW2OerN zi0;BVyR{z!e6~sj7trRy-ksUezB;SZh}UoR^<0KQzCkiNsqLz|7bGd=(Tu_}^5g(O zQ-GLM?4;R$SC?_s>X2BKekLf^G`_YiJF*|hYK&rIL-TU?Y{YzeSX*P{An8>fB3 zat{WRr$Tfnsmw9_wPmbdEBa69@yK$~zn_dBzmX#T^uI7XPY0%*)t|pU!5m`0aCz_> zY%Q!CVF};iM!~D*fhSm>`?Jtv2;mO*<~%BJRQIEV@i+dN{y%`U(}=TDAg~mf|Bpn*8TYYkadOO`|MF%a+WtX8zUlMM^yqqLGqXWaKfTZq)gFR&FHUH=IT+=D z2twyzWyv8hprnQ{ae-l7@Vb+qD!eykNL zXi~5Tb45j84|gtpeHwc8eWLW>6I@76MW_6C;bN>Wz?tu0gnzqs&>MAEUWSDBb%J)t z0ef*2fOj3g(vCg6wloMaNDu=iXs{1dkr+}co&LY2$B$N?X#KF<>O)PnX#^shyMOxJ zhFQ)m|Liv1R^lQ%42zz@E$#PiMiL^_D6y)Dj6W?$WQ!y?S zJS0XH$5Vh@kGw=h&(!*miK(V?w5T}_L79Az0Nt|50stHM6ViP@u20*?1}Ge8#uMYZ z+d1AX`C#Yht)GX=tEhQi-shW)Kz<$=(vW|HlC*x|r^(WQhX)D@Gf~AOAUlPbY5=Cn zE4ATi#1NsQsCwlfqb~Okoj6~Q6U=q8@AOPh+U#6B^ECOEZ4sE{^7PAq(u_P*moAoN z1ji=+=X+fFl!pdAC7tno-kzF5!j}}lNklOKSiT~D#>!h>hUx)Vh|>_QvRk3Op<2#G&jM-f%cFZ`dklf2uh*W!=OSHALvzv9YkS zsY(J-h}kX>>nLQctn%kacj|$vt{Rrsx)ceUg2g3Mts(s0ozZ$3_b-vix^%a%$DjLz zdEUaVE8>jLOkenm;~t9|r6%-~?4*qVR+denr5PBv z1W-g5QWKd~MYf!U7i&>qR*0Dod)^6A>%2@ZC=wTfwKC5rIU@*K%_5j zY3}tGCC`z}MVDGaQ3u_vxmQCr+WI5B)75Sn67pCClW|qEMpq?P%_N`iNll5u zkaX+%0dUs9OfiK8+Q^@Od(}3~(_XsS(4-EZrt~+}5+{w+pqntC3l-Ym5;Jh+ZyVz!!bGQ137=xzpb!7 zfd{}Xz7(1K`UxxDDz8+)D4cAwc~&k`h(!I^kYYnI0%4j+`2^p=iVY^l3(wf7TQ5bx z11{Os*4A7{t#D|o_wfp~gTKB7j}Ls>(i@solm6-U7LQ~sRXx534JK`@n~ijGIi5U4 zHP(1{cCr|gd4@M;wek68irJrWpWXc<+J|svrqbS)8J9w37ADXa`(4C?h-TTsMN7~5 zlHfspUF0RL*0C|JTt8J_wiY{&m`)w>1#l-k=2cUG#=btDCmI?}d0DFPm{KIW+Jt#k z>RqU%FkREeyA2@@E=i;)sng>)tgMBw3?{_dNAtb$TqJ>!`DNzv{+j>jBuxp$!WL(f zC82h0U21SbU&2HwLj9%7@k2`4B#Gc$!wEI*z>GO<>ph$+167bc=g;pppeN4YWrjfB z%HWkjgISLe5~cahrgyEx!CZTGC#jtUAtB^Tt5Q|ncHPjl1o>bvuJV7X+%Abnz-@f? zo9cE%A%FHBN#h5mGMcnDJFSf)_kP*o2cgldZ16mvWK!?|fPez(&i#FQwsq1mHsT7) z&giVMbG+$5;~rh){Id{HnP4_V-vjDTDaj0~g7CZRSS&RG?O9)efrb@B{|sM{2rbkW z)zyejt`Aa!?)sCWFV)PXnvWN(1-tt!9F5pKT%7STxF!wr)bIUc3lweIXuXY9!EDaP z9|xzgR{+0WGF?!!BPYJOli5D)o%6RpH^K`i0Xw_^ft7eg33}#g)Io_?$G*q&y}uv3 z8a#ZE0kw{`*k|Ypy=eMn>IFmq5qsUMOU|tPrD1AMmxJI zk8~_jsks+ent#{&Vi`@fNlf$5g!}kR`;V8jBX;9xZ?LKxP6$i1yB2Y|*IK=jN^0SIGzPFxZOqu5uR_40`Q?ln0@w$KuM&Iw-^6ik`W zOkskCEoEIuapuuwvN1fX|D47Ld=UXXFY1N?lnD`IScI#qWrOSe3t>Ox=1#aisQ98} zes=k@t6Z{8W1(Q<&gkBJ2m`@&E-Nag(T%{63jzX~ak1V|5e+A$AW+!E)6eJsf9m*| z7Sv4Nosdgux(#e-v2sK!gDda1FxrHZ4iW;5-sxNG6%X+)DBHsNl8N{#tNeTne#$qe z-71f!8lK^JU*QuygH$*SBS`^48EW2%*@fV2q& z+kBPIc7*}ZcxRh5rlJst0BkQl9I#aMPMS1qZgX&irDrv@-0BU&M;_7XH$>1tO0u)Wc0Uy}31ZI#JC|jyA-C_X8WlhuqzTizVi!Rgm zqDQ)vt7Gy7Q5Gh(Sv9z`vw^D3k{Y5Trp?nWXso3N1Jj(gi0G*qRAF;dUfvCBO5;mZ z5;wUm{LxraQo>&Y-X|OX{@3fLEy@To;y`_YQVdBq)Kifa|6Qzc1rWCAzhw%qbOOhm zH$2!ase=qnC1?=m@$xr%`RWz zbe4mtE0SqbdfvK`SB!;>(Tw-Us`=67IaZ+eKxaR0+akx*r4~>jy?rx)5B+va^2{UT z50~#Rf+Lgi)vvn6ShtS2Ljx1>&(NRc#~nKMYoxC^zugCUl;st6H8`k(sph`~CHJYxE6e0jQIdJKzavohG745gR=q4>uuTm zX0l|uyxNC>J|2*ttDbDJQ9G9f3`VjJhTFDurf(J~ovJw6EU_MCZC(GT*C2J)u=en~ z%tMEkmv4I(B}AoWYd~0$$WgvsI%mz;Sm=(xigW~Ym1uA%j$m9}EAAn`goiM>4akIQ z_0HVJHdt;Zi0G5h!OblgynX}I0uj#~bRZxX6(z?;WQ3isKCE`#Bt5!G>=S3$77OPj zSwJ!EZlCtb?k+i7B!_@_;5(`-WY;0_9tfAbrg#cV3pWa=-Jk zc(eF-DBxBG>GVG~j$rrlSH~Nt0m^N^QJ!D3``o5#xGGu{%G+C9g$(a5p$dwUs6`>g zIn!!L@z8G^Q^IvjelPbdl!TmxVDh?j;4Pn9&z8)fA5Gc%+`8|H{gqlcO2n>Al&=FI+5a@|tq+KzMctcyqs4agsq z!K_?H0CtleO;~wxU)Tuji*0=Uvc_9me-}0kTQX%5P%OLwApZ7Mutl~cH)gv<8xsSR zzc*vQH;D8yqUUFS5RT_f#B1j??-p;vxO4HGIGh2P<*<&YN8_D;d!^BUlvQ?)k`$h^ zjTfFF#y1AlPWfb?egPk2*xvu~DHE8~*kO0To)!ta!fs9xS-{VcaMHSR+ChR;aB}`V zU14jk%p&=0pQ@OK;jMF~l^98Df35RE+zI|k`WjEtD+`f)imYu01e-*p@jfa z{(e3@=zVeTDruCYS_x2a&$K}8&k&pB?EC21C zYtmI3Oe=bE>~Evp<7HwIu68zLdWZCP9N9^>~znac*K75X+T2Ku(LYcBg{Tsm)JZU zO`%whgm))vHxTa^0>T4CSY6b>)#2!Kg9U>aG|F&0bN9CSe1+5j%HI<(swoJ7IGooMJgF10g2!%o zK!j1hdDD#wBk1-zv~r^9^iW$z_m0=`<>t`9oguBQ>#YZ_YCq;*JLtBtm>gzX#E)nC z&wD%oMxA78a?+FMkuy?16{nMkX6q-Qt)muXekqeoAIis5`ukvp4z~bfAQgPE>~GW& z-DyVK&bTn!l?Y(_wISh$UX}0y3=>G(FEE0D!A~1PfM?G0@mY+y%un&t9yKz+aHZJJ z!c7-!82UG3S2lSDP?D!7&{^fj3KlnMB6jEyhgazn3#zn4rv)AL!hJTf^}yLt!RFT= zEz{Kxr4E)cTGp8$mZZ|&JNw;n5 z&P)-BX|22D1pgNCUt`#5e@G8v7L2OL>d8qdTkk(-P{n_22E*5v)X|Y=|75oAJ5;O) z{cCW86sBdx=H`fK8-Lbl3d@cXTQRiolLF%CeYj~9)~3_JyDk>Pb1BS?BCh5pdFISc zKdjkY&#luBM-ya)ji&1y8g!V0s>&?_uq&raO@k9VI{>CAT*X5M<=u;>6X@T_0S8X$ z-Vf9D_~z@L9>~3lU*`(deny#KP?X-o;^J1u?{_4^iX@QACvtBEQX2ZYhc}5Hg~37f zcq(&#^ChXQWc!;A&INH^)67$35c6^YHQNfI1?&X5jeE_M{z7x^YzkltUI~#^4boTq z-UpLj-OC59T?&8$8Cs~~=RUghr^%N%7J$NOrKet@P}b_PF8m$8mUg+nO)8hL^h7JUH<#`R+b^`qqmjN}`Vo^&$yrzqkGrJfp~ta5c^fF&dp(ZURGj^~Xec zu>c)``TOCQqSq~2%lTN=GqkT4^4@*gFyvZ2bqE$~ zhw6HYN>k1E_G*Z3=4AiWYbUGE2Q`n4j$rD(j7S~gY14z&uhkibEbCPV`l7?^sY#?M z^Z;Uff(SB*k4dBe4rw6B>ENFEf4D%ll^$nntm1zC{83-akc68N=W?pKu6Oi;WkGg& zmz^yyt*f#jByRUbC6ievWQBFv?;phUA zzfi#CF^{#!z5f2Jxe88P^oa}i^(lx43as7HXjqcakr(`h%gNK+wg}FNX9dfzFhLO? z-e5uk^8FAGL+#Wx-Z_Ty;+g;FW=1lr5V~Fl#_;oQNsa&e*-mUif;>}79h~n4lo0v% z+@$Na7mE1p%)0E5a|4szt&BvTTM{O?yn#NBjM;9p`G3*@M4-T=@#{9pQ(++phH|_+ z_J&22wI-`y7z9?Y_e^oeef~BdDx<(4>|h9;5iukZACAn(g_6t_;4?QC6Y5VJjU)2Z z$WVLz_7l`;@CHnF`-f?bse{c3C-ER(TFdr<71t=iTa0Zj4uUy}%wqE1Biea@Jf+VV#VPEq)RK4*6WAeO_6RT$FF_X@CuOqeyHHP7!tj- zvnZ*TJ+vu=PL`?KD4Oga8AYyK@l9^kNGXb3n+@v z)e*|`XByOzJ_{)VNB2IgJnu&5qAxA=5ImZBT!-*(t$feJMvhkIsN3Ojw5SNLtVOCj zcdVKBKDahzWPk1YgL!ZR9yi6@1p3C4BN02FhR?ABW}b{)$>&&VIE|E%y1L;;DB1Bq zMr347$iJ~&TW|EQt9^uN{L2%qKq}%b<3Q!?_dgSoDV-11fY-M3SofK*grwky(nFi&o19)WlaTZmoKpvrl6aV z@$)ME+y!9#h*Ys3;szvTdG*;4DTv1RKcmW&V z^7b<_KQk{iGc`-0z*m#XQGFFd^XD-`0qz08mKu1uPkQ%oLWhbB#ou@}*?QAwSI=At zFp(ao09mvo7;}q6V8jYtTf}hN=|H%r7r{A-+>Ug-i67OXeL@`@g<{)O3aG_SA7to^ zYEkAbTPj!7gz2!b$meJz)_I37t=QY`ZN|Hw5{D69e11Wx z0j#ma-nK;vRC40PO`t_o%+KC~281b=?15elu1)V4-V`Ww&zWz6W=OMJu&7BS{_Y4T zF%4HaJv;h^nBcr~z1Ro8EV2KvRJ)h|y!qOu)gAEOMYfi_{B4EpBM1K_sCQTfR)C0oEO||C>OgGncZkVPIOH6}$v4x<5>s8IJ{=M- z78wUaNuY&E)keP+8mBnvG_7ZL$m3!)L4~I{vUllh)(+Prjo=9ziuTABtWo!)7)Y_I z0SiS5@me+2jJtU%soLYH=cOf1VQ|c@9n6BaJxt10&e_ZGJ2XDZqFFYTv6&ZToF>i8 z)(1jv!f~m3k5WrX8s~23^0#k1TyDW+wli3x{d!>{X>3X8jsB@Vl9}kpxgLLiW4NLH z1}E{*02a_&vA!++xM$ZI;wtsz6L)##040j|G>`f&zwWUJo-k?5y$@}-A-%fBLs

    8cBk&2@*>)ek8!*h|Nza)#$lT;=Isb;{EXTa)69 zjk28kWyH%bR#t0FnylAcrLoAoOqepUpd$i$IiUcWA+?^V?~;Ah_I5J-z`o~d@C5o( zY=eTWQ|aX~gHRvfeLvTmuoOnkR~J^Z7qvX?*14L^cKG-tCW?^b$1X&K4Bq`c<@Ir^ z{5b6x5sC;qy>j_ZFH>B@n(e0)X>CsJBhQQw^F#-&buf*{uIw+2Dllny9(SD(9K`(2 z&TdCM;g|1Wl@u4+{Iq#{xT*Tqj5@;SWnBl8If?(`*Of!ZzJls)5v=4b%t!&`YPcYY zaykF3HbNv4h(lGzFrQ9$^T0pXtNIZQ1ILfXgCUb^7fUa{DtiL!pLJ_|R7_M)JVBl5p^S`-Pa-OX>MaHu;+SNP4nyA}e(?A#vyuSwdHQJ|#)X9RIZJ zR^d^p_nv6kH~1NHFp2?_I#FN0;SMXDKvu`d+Ff6~QWdGSj@oWL?*>YbX3gfA?K+ew z(t<#vUD^$bG&N-<=CDzj&TW4RY_e(wJ<)g$8tFe&&M@Ww|kTIWE zRpjRfM*a1gYed>>-Y^^a+ftlwJJy;)**A2M!ROW?I$$YnZ+bd#xj7Cl;sZf&MpP;_ zTmpB>pR9Iy^nTFaM7cEsJUJrMF0khsarx`{qFYT2c38(>o@7WOU{Xyoy}y&{{m=SO zj!umu5SEH~GT@u+s737TgXsFg*H3@WpB?Ml(;UfVG3a&|^*E!9Q0oU*rzB4gs3lnS z$3ZHus5;cf_BmNMe8qzJ`+cDU`?JCAiL|)-?C@|SaIi1A&rC0~GkePIZO!XTHd+R; z`S}4VeQ5lQ0P)L=#4{wO;CrXz48ex$w>LSoQbfnsw*c>lhlPHqbADu4YX~q`%V2j3 zCQRm#x>}7(IDzQ2WbneewbOljl;#%ZA%l-D{n=LC8c+TAJ@Meu;3JC!dcgmcQw5mB?l{CuxGgOP zaJOAK#sql&gRKy&or^4yOi#w{AI!bseu~Ph+nyJ#se!em(U1VO^i2e!Mf~5 zYGse4^oQ1eF-xxK5UqB`SWm(K#o}M zxmE=1S%aY;*HUkRPaj^`Hh>2%iN{h|^1X!Dsiv|J{_juvXXPn}8YWT_2KpDK1@$jR zAsPq4VwPbOvCu2;lj)S5>98f)7En-9odC*a#zb{h22)G~+<7xIy{)G^4M%_&B}6e< zGZ2H0VMu&?NVC%{NV!26-e5HUx@d5A^)?=^zSCQ8@&yZ08CKMgp3&um59hGX9a+Y^ z%i!<(Kcm?59}LbGp^|)a4Dw$%h6U>b(*)B!Uah@13tDSk#$hntslk5*Umt>kf3=2n ztA01!H+GMotr$NNvHYps){psnn;*{;Z3YAi>%rW|!w1nlvXO(^Ss~{YqrX~#P6ERC z27^;k0%U>vo~q|SK=VF-V1}TTJqDcDc)wu*c>S}Zv-0}D!MX`7=m^rYl#(XEJ3M!3 zIrjV~A?$Pkt%0D|e5ND%lx3@IyHI1g3-)zo>9WY5)B6S$SViPO^ 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 literal 0 HcmV?d00001 diff --git a/openless-all/app/src-tauri/dmg/layout.json b/openless-all/app/src-tauri/dmg/layout.json new file mode 100644 index 000000000..29111e9e4 --- /dev/null +++ b/openless-all/app/src-tauri/dmg/layout.json @@ -0,0 +1,5 @@ +{ + "iconSize": 128, + "textSize": 14, + "retinaBackground": "dmg/installer-background.tiff" +} diff --git a/openless-all/app/src-tauri/src/commands/cloud_sync_e2ee.rs b/openless-all/app/src-tauri/src/commands/cloud_sync_e2ee.rs new file mode 100644 index 000000000..075acfd2b --- /dev/null +++ b/openless-all/app/src-tauri/src/commands/cloud_sync_e2ee.rs @@ -0,0 +1,246 @@ +//! Main-window-only encrypted sync IPC. Secrets never leave native Core. +use super::CoreState; +use openless_core::cloud_sync_e2ee::*; +use openless_core::{BackendError, BackendErrorCode}; + +fn require_settings_window(window: &tauri::WebviewWindow) -> Result<(), BackendError> { + let allowed = window.label() == "main" + && window.url().is_ok_and(|url| { + let bundled = (url.scheme() == "tauri" && url.host_str() == Some("localhost")) + || (matches!(url.scheme(), "https" | "http") + && url.host_str() == Some("tauri.localhost") + && url.port().is_none()); + let development = cfg!(debug_assertions) + && url.scheme() == "http" + && matches!(url.host_str(), Some("localhost" | "127.0.0.1")); + bundled || development + }); + if allowed { + Ok(()) + } else { + Err(BackendError::new( + BackendErrorCode::PermissionDenied, + "encrypted_sync_settings_window_required", + )) + } +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_claim_setup_prompt( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_claim_setup_prompt().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_status( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_status() +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_prepare_enable( + window: tauri::WebviewWindow, + core: CoreState<'_>, + consent_version: String, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_prepare_enable(consent_version).await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_create( + window: tauri::WebviewWindow, + core: CoreState<'_>, + password: String, + password_confirmation: String, + remember_key: bool, + consent_version: String, + observed_revision: String, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_create( + password, + password_confirmation, + remember_key, + consent_version, + observed_revision, + ) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_unlock( + window: tauri::WebviewWindow, + core: CoreState<'_>, + password: String, + remember_key: bool, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_unlock(password, remember_key).await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_lock( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_lock().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_set_enabled( + window: tauri::WebviewWindow, + core: CoreState<'_>, + enabled: bool, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_set_enabled(enabled).await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_sync_now( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_sync_now().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_cancel( + window: tauri::WebviewWindow, + core: CoreState<'_>, + task_id: String, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_cancel(task_id) +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_preview_restore( + window: tauri::WebviewWindow, + core: CoreState<'_>, + observed_revision: String, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_preview_restore(observed_revision) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_apply_restore( + window: tauri::WebviewWindow, + core: CoreState<'_>, + preview_id: String, + mode: RestoreMode, + conflict_choices: Vec, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_apply_restore(preview_id, mode, conflict_choices) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_change_password( + window: tauri::WebviewWindow, + core: CoreState<'_>, + current_password: String, + new_password: String, + confirmation: String, + remember_key: bool, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_change_password(current_password, new_password, confirmation, remember_key) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_delete_remote( + window: tauri::WebviewWindow, + core: CoreState<'_>, + expected_vault_id: String, + observed_revision: String, + confirmed: bool, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_delete_remote(expected_vault_id, observed_revision, confirmed) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_sign_out( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_sign_out().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_begin_sign_in( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_begin_sign_in().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_poll_sign_in( + window: tauri::WebviewWindow, + core: CoreState<'_>, + authorization_session_id: String, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_poll_sign_in(authorization_session_id) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_cancel_sign_in( + window: tauri::WebviewWindow, + core: CoreState<'_>, + authorization_session_id: String, +) -> Result<(), BackendError> { + require_settings_window(&window)?; + core.cloud_sync_e2ee_cancel_sign_in(authorization_session_id) + .await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_get_ui_preferences( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result, BackendError> { + require_settings_window(&window)?; + core.cloud_sync_e2ee_get_ui_preferences().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_get_ui_preferences_snapshot( + window: tauri::WebviewWindow, + core: CoreState<'_>, +) -> Result { + require_settings_window(&window)?; + core.cloud_sync_e2ee_get_ui_preferences_snapshot().await +} + +#[tauri::command] +pub async fn cloud_sync_e2ee_set_ui_preferences_checked( + window: tauri::WebviewWindow, + core: CoreState<'_>, + locale: String, + font_scale: String, + expected_revision: Option, +) -> Result<(), BackendError> { + require_settings_window(&window)?; + core.cloud_sync_e2ee_set_ui_preferences_checked(locale, font_scale, expected_revision) + .await +} diff --git a/openless-all/app/src-tauri/src/commands/credentials.rs b/openless-all/app/src-tauri/src/commands/credentials.rs index 497f672b8..31cf88702 100644 --- a/openless-all/app/src-tauri/src/commands/credentials.rs +++ b/openless-all/app/src-tauri/src/commands/credentials.rs @@ -104,6 +104,82 @@ pub(crate) fn active_sherpa_asr_is_supported(provider: &str) -> bool { } impl openless_core::CredentialStore for SystemCredentialStore { + fn bind_sync_gate( + &self, + gate: std::sync::Arc, + ) -> Result<(), openless_core::BackendError> { + CredentialsVault::bind_sync_gate(gate).map_err(credential_persistence_error) + } + + fn export_sync_credentials_readonly( + &self, + ) -> futures_util::future::BoxFuture< + 'static, + Result, + > { + run_credential_task(|| { + CredentialsVault::export_sync_credentials_readonly() + .map_err(credential_persistence_error) + }) + } + + fn export_sync_credentials( + &self, + permit: &openless_core::credentials::ExclusivePermit, + ) -> futures_util::future::BoxFuture< + 'static, + Result, + > { + let permit = permit.clone(); + run_credential_task(move || { + CredentialsVault::export_sync_credentials(&permit).map_err(credential_persistence_error) + }) + } + + fn replace_sync_credentials( + &self, + snapshot: openless_core::credentials::SyncCredentials, + permit: &openless_core::credentials::ExclusivePermit, + ) -> futures_util::future::BoxFuture<'static, Result<(), openless_core::BackendError>> { + let permit = permit.clone(); + run_credential_task(move || { + CredentialsVault::replace_sync_credentials(&snapshot, &permit) + .map_err(credential_persistence_error) + }) + } + + fn read_sync_secret( + &self, + account: openless_core::credentials::SyncSecretAccount, + ) -> futures_util::future::BoxFuture< + 'static, + Result, openless_core::BackendError>, + > { + run_credential_task(move || { + CredentialsVault::read_sync_secret(&account).map_err(credential_persistence_error) + }) + } + + fn write_sync_secret( + &self, + account: openless_core::credentials::SyncSecretAccount, + value: openless_core::SecretValue, + ) -> futures_util::future::BoxFuture<'static, Result<(), openless_core::BackendError>> { + run_credential_task(move || { + CredentialsVault::write_sync_secret(&account, &value) + .map_err(credential_persistence_error) + }) + } + + fn remove_sync_secret( + &self, + account: openless_core::credentials::SyncSecretAccount, + ) -> futures_util::future::BoxFuture<'static, Result<(), openless_core::BackendError>> { + run_credential_task(move || { + CredentialsVault::remove_sync_secret(&account).map_err(credential_persistence_error) + }) + } + fn status( &self, preferences: UserPreferences, @@ -192,10 +268,10 @@ fn run_credential_task( Box::pin(async move { tauri::async_runtime::spawn_blocking(task) .await - .map_err(|error| { + .map_err(|_| { openless_core::BackendError::new( openless_core::BackendErrorCode::Internal, - format!("credential worker failed: {error}"), + "credential worker failed", ) })? }) @@ -420,10 +496,18 @@ fn invalid_credential_key(key: &openless_core::CredentialKey) -> openless_core:: } fn credential_persistence_error(error: anyhow::Error) -> openless_core::BackendError { - openless_core::BackendError::new( - openless_core::BackendErrorCode::Persistence, - format!("credential vault operation failed: {error:#}"), - ) + if let Some(error) = error.downcast_ref::() { + return error.clone(); + } + let code = if matches!( + error.downcast_ref::(), + Some(crate::persistence::VaultCommitFailure::Unknown) + ) { + openless_core::BackendErrorCode::OutcomeUnknown + } else { + openless_core::BackendErrorCode::Persistence + }; + openless_core::BackendError::new(code, "credential vault operation failed") } fn require_readable_vault() -> Result<(), openless_core::BackendError> { @@ -889,6 +973,43 @@ fn parse_account(s: &str) -> Result { mod tests { use super::*; + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] + async fn cancelled_credential_worker_holds_restore_lease_until_it_finishes() { + let dir = std::env::temp_dir().join(format!( + "openless-credential-worker-{}", + uuid::Uuid::new_v4() + )); + let gate = + openless_core::credentials::SyncWriteGate::open(dir.join("generation.json")).unwrap(); + let original = gate.try_exclusive().unwrap(); + let worker_lease = original.clone(); + let (started_tx, started_rx) = tokio::sync::oneshot::channel(); + let (finish_tx, finish_rx) = std::sync::mpsc::channel(); + let (done_tx, done_rx) = tokio::sync::oneshot::channel(); + let task = tokio::spawn(run_credential_task(move || { + let _lease = worker_lease; + let _ = started_tx.send(()); + finish_rx + .recv_timeout(std::time::Duration::from_secs(5)) + .unwrap(); + drop(_lease); + let _ = done_tx.send(()); + Ok(()) + })); + started_rx.await.unwrap(); + drop(original); + task.abort(); + let _ = task.await; + assert!(gate.begin_mutation().is_err()); + assert!(gate.try_exclusive().is_err()); + finish_tx.send(()).unwrap(); + done_rx.await.unwrap(); + let permit = gate.begin_mutation().unwrap(); + permit.abort_unmodified().unwrap(); + drop(gate); + std::fs::remove_dir_all(dir).unwrap(); + } + #[test] fn omni_credential_keys_preserve_the_explicit_provider_scope() { for account in [ diff --git a/openless-all/app/src-tauri/src/commands/github_oauth.rs b/openless-all/app/src-tauri/src/commands/github_oauth.rs index 406514b60..0f1f20ee3 100644 --- a/openless-all/app/src-tauri/src/commands/github_oauth.rs +++ b/openless-all/app/src-tauri/src/commands/github_oauth.rs @@ -75,11 +75,7 @@ pub async fn marketplace_auth_status( #[tauri::command] pub async fn marketplace_logout(core: CoreState<'_>) -> Result<(), String> { - core.services() - .marketplace - .logout() - .await - .map_err(command_error) + core.sign_out_account().await.map_err(command_error) } #[cfg(test)] diff --git a/openless-all/app/src-tauri/src/commands/mod.rs b/openless-all/app/src-tauri/src/commands/mod.rs index fb485e92d..c6ed9b431 100644 --- a/openless-all/app/src-tauri/src/commands/mod.rs +++ b/openless-all/app/src-tauri/src/commands/mod.rs @@ -49,6 +49,7 @@ pub(crate) use crate::types::{ mod channels; mod cloud_sync; +mod cloud_sync_e2ee; mod credentials; mod dictation; mod dictionary; @@ -79,6 +80,7 @@ mod style_packs; pub use channels::*; pub use cloud_sync::*; +pub use cloud_sync_e2ee::*; pub use credentials::*; pub use dictation::*; pub use dictionary::*; diff --git a/openless-all/app/src-tauri/src/commands/qa.rs b/openless-all/app/src-tauri/src/commands/qa.rs index ab24c5a5b..64e836cb0 100644 --- a/openless-all/app/src-tauri/src/commands/qa.rs +++ b/openless-all/app/src-tauri/src/commands/qa.rs @@ -50,12 +50,34 @@ pub async fn qa_toggle_recording(core: CoreState<'_>) -> Result<(), String> { /// QA 面板键盘输入:复用语音 QA 的 LLM 管线,只替换问题来源。 #[tauri::command] -pub async fn qa_submit_text(core: CoreState<'_>, text: String) -> Result<(), String> { - core.services() - .qa - .submit_text(text) - .await - .map_err(|error| error.message) +pub async fn qa_submit_text(core: CoreState<'_>, text: String, expected_session_id: Option, enforce_context: Option) -> Result<(), String> { + if enforce_context.unwrap_or(false) { + core.services().qa.submit_text_in_context(text, expected_session_id).await.map_err(|error| error.message) + } else { + core.services().qa.submit_text(text).await.map_err(|error| error.message) + } +} + +#[tauri::command] +pub async fn qa_get_snapshot(window: Window, core: CoreState<'_>) -> Result { + if !matches!(window.label(), "qa" | "main") { return Err("qa_window_required".into()); } + let snapshot = core.services().qa.snapshot().await.map_err(|_| "qa_snapshot_unavailable")?; + let mut event = openless_core::events::QaStateEvent::from_snapshot(&snapshot); + event.edit_instruction_mode = Some(snapshot.edit_instruction_mode); + event.edit_apply_available = Some(snapshot.edit_apply_available); + event.edit_revert_available = Some(snapshot.edit_revert_available); + Ok(event) +} + +#[tauri::command] +pub async fn qa_window_set_expanded(window: Window, expanded: bool) -> Result<(), String> { + if window.label() != "qa" { return Err("qa_window_required".into()); } + let app = window.app_handle().clone(); + let (sender, receiver) = tokio::sync::oneshot::channel(); + window.app_handle().run_on_main_thread(move || { + let _ = sender.send(crate::set_qa_window_expanded(&app, expanded)); + }).map_err(|_| "qa_main_thread_unavailable".to_string())?; + receiver.await.map_err(|_| "qa_resize_cancelled".to_string())? } /// 划词提问面板「编辑指令」复选框。 diff --git a/openless-all/app/src-tauri/src/coordinator.rs b/openless-all/app/src-tauri/src/coordinator.rs index 42246a5ad..e791656ba 100644 --- a/openless-all/app/src-tauri/src/coordinator.rs +++ b/openless-all/app/src-tauri/src/coordinator.rs @@ -37,6 +37,7 @@ mod hotkey_loops; #[cfg(target_os = "macos")] mod native_dictation_key; mod qa; +mod restore_runtime; #[cfg(all(not(mobile), target_os = "windows"))] pub(crate) mod selection_voice_session; use capsule_focus::*; @@ -355,6 +356,39 @@ pub struct Coordinator { inner: Arc, } +fn startup_storage_error() -> openless_core::BackendError { + openless_core::BackendError::new( + openless_core::BackendErrorCode::Persistence, + "local recovery or secure storage is unavailable; restore access and restart OpenLess", + ) + .retryable(true) +} + +fn startup_sync_gate( +) -> Result, openless_core::BackendError> { + let directory = crate::persistence::data_dir().map_err(|_| startup_storage_error())?; + openless_core::cloud_sync_e2ee_store::gate::open_for_data_dir(&directory) + .map_err(|_| startup_storage_error()) +} + +fn startup_store( + startup_error: &mut Option, + open: impl FnOnce() -> Result, + fallback: impl FnOnce() -> T, +) -> T { + if startup_error.is_some() { + return fallback(); + } + match open() { + Ok(store) => store, + Err(_) => { + log::error!("[core] local store initialization failed; startup is blocked"); + *startup_error = Some(startup_storage_error()); + fallback() + } + } +} + fn shared_backend_from_stores( history: &HistoryStore, activity: &ActivityStore, @@ -366,6 +400,7 @@ fn shared_backend_from_stores( native_asr: crate::core_adapters::TauriNativeAsrDependencies, hotkey_status: Arc>, qa_context: Arc, + startup_error: Option, ) -> Arc { let data_dir = crate::persistence::data_dir().unwrap_or_else(|error| { log::warn!("[core] data directory unavailable, using fallback config path: {error}"); @@ -375,6 +410,21 @@ fn shared_backend_from_stores( .ok() .filter(|value| !value.trim().is_empty()) .unwrap_or_else(|| "en-US".to_string()); + let config = openless_core::BackendConfig { + cache_dir: data_dir.join("cache"), + data_dir, + home_dir: std::env::var_os("HOME") + .or_else(|| std::env::var_os("USERPROFILE")) + .map(std::path::PathBuf::from), + resource_dir: None, + platform: crate::types::PlatformCapabilities::current(), + locale, + }; + if let Some(error) = startup_error { + return Arc::new(openless_core::OpenLessBackend::blocked_startup( + config, error, + )); + } let repositories = openless_core::BackendRepositories { preferences: prefs.core(), history: history.core(), @@ -392,23 +442,28 @@ fn shared_backend_from_stores( hotkey_status, qa_context, ); - dependencies.marketplace_config = Some(openless_core::MarketplaceConfig::production()); - let backend = Arc::new( - openless_core::OpenLessBackend::new_with_repositories( - openless_core::BackendConfig { - cache_dir: data_dir.join("cache"), - data_dir, - home_dir: std::env::var_os("HOME") - .or_else(|| std::env::var_os("USERPROFILE")) - .map(std::path::PathBuf::from), - resource_dir: None, - platform: crate::types::PlatformCapabilities::current(), - locale, + dependencies.marketplace_config = Some( + openless_core::MarketplaceConfig::production().with_encrypted_sync( + openless_core::cloud_sync_e2ee::EncryptedSyncConfig { + service_origin: openless_core::cloud_sync_e2ee::DEFAULT_SYNC_SERVICE_ORIGIN.into(), + app_version: env!("CARGO_PKG_VERSION").into(), }, + ), + ); + let backend = Arc::new( + match openless_core::OpenLessBackend::new_with_repositories( + config.clone(), dependencies, repositories, - ) - .expect("shared backend config always has a non-empty data directory"), + ) { + Ok(backend) => backend, + Err(_) => { + log::error!( + "[core] shared backend initialization failed; exposing blocked startup" + ); + openless_core::OpenLessBackend::blocked_startup(config, startup_storage_error()) + } + }, ); *backend_slot.lock() = Some(Arc::downgrade(&backend)); backend @@ -448,6 +503,7 @@ struct Inner { /// 串行化 Tauri 侧“Core 设置事务 + 宿主 effect”以及风格包删除 effect, /// 防止两个命令把显式 runtime target 乱序安装。 settings_host_gate: Mutex<()>, + hotkey_resume_started: AtomicBool, overlay_qa_handoff: tokio::sync::Mutex<()>, inserter: TextInserter, /// 建议卡片是不是正占着胶囊窗口。 @@ -543,48 +599,48 @@ impl Coordinator { #[cfg(not(target_os = "windows"))] { - #[cfg(target_os = "android")] - const PERSIST_DEGRADE_SUFFIX: &str = " (Android 禁止 /data/local/tmp)"; - #[cfg(not(target_os = "android"))] - const PERSIST_DEGRADE_SUFFIX: &str = ""; - - let history = HistoryStore::new().unwrap_or_else(|e| { - log::error!( - "[coord] HistoryStore init failed: {e}; 降级为空历史记录{PERSIST_DEGRADE_SUFFIX}" - ); - HistoryStore::new_fallback() - }); - let prefs = PreferencesStore::new().unwrap_or_else(|e| { - log::error!( - "[coord] PreferencesStore init failed: {e}; 降级为默认偏好设置{PERSIST_DEGRADE_SUFFIX}" - ); - PreferencesStore::new_fallback() - }); - // 启动即同步系统代理开关(issue #869),让首个请求就按用户设置建客户端。 - crate::net::set_use_system_proxy(prefs.get().use_system_proxy); - let style_packs = StylePackStore::new(&prefs).unwrap_or_else(|e| { - log::error!( - "[coord] StylePackStore init failed: {e}; 降级为空样式包列表{PERSIST_DEGRADE_SUFFIX}" - ); - StylePackStore::new_fallback() - }); - let vocab = DictionaryStore::new().unwrap_or_else(|e| { - log::error!( - "[coord] DictionaryStore init failed: {e}; 降级为空词库{PERSIST_DEGRADE_SUFFIX}" - ); - DictionaryStore::new_fallback() - }); - let correction_rules = CorrectionRuleStore::new().unwrap_or_else(|e| { - log::error!( - "[coord] CorrectionRuleStore init failed: {e}; 降级为空纠错规则{PERSIST_DEGRADE_SUFFIX}" - ); - CorrectionRuleStore::new_fallback() - }); - - let activity = ActivityStore::load().unwrap_or_else(|e| { - log::error!("[coord] ActivityStore init failed: {e}; 活动计数降级为内存态"); - ActivityStore::new_fallback() - }); + let gate = startup_sync_gate(); + let mut startup_error = gate.as_ref().err().cloned(); + // Keep the registered barrier alive until Core adopts it. Once any store + // fails, later constructors use fallbacks and no real repository is touched. + let _sync_gate = gate.ok(); + let history = startup_store( + &mut startup_error, + HistoryStore::new, + HistoryStore::new_fallback, + ); + let prefs = startup_store( + &mut startup_error, + PreferencesStore::new, + PreferencesStore::new_fallback, + ); + if startup_error.is_none() + && _sync_gate + .as_ref() + .is_some_and(|gate| !gate.recovery_required().unwrap_or(true)) + { + crate::net::set_use_system_proxy(prefs.get().use_system_proxy); + } + let style_packs = startup_store( + &mut startup_error, + || StylePackStore::new(&prefs), + StylePackStore::new_fallback, + ); + let vocab = startup_store( + &mut startup_error, + DictionaryStore::new, + DictionaryStore::new_fallback, + ); + let correction_rules = startup_store( + &mut startup_error, + CorrectionRuleStore::new, + CorrectionRuleStore::new_fallback, + ); + let activity = startup_store( + &mut startup_error, + ActivityStore::load, + ActivityStore::new_fallback, + ); let app = crate::core_adapters::app_handle_slot(); let native_asr = crate::core_adapters::TauriNativeAsrDependencies::new(); @@ -601,6 +657,7 @@ impl Coordinator { native_asr.clone(), Arc::clone(&hotkey_status), Arc::clone(&qa_context), + startup_error, ); let host = crate::tauri_coordinator_host::TauriCoordinatorHost::new(Arc::clone(&app)); @@ -611,6 +668,7 @@ impl Coordinator { less_computer_voice: Mutex::new(None), hotkey_runtime_target: Mutex::new(hotkey_runtime_target), settings_host_gate: Mutex::new(()), + hotkey_resume_started: AtomicBool::new(false), overlay_qa_handoff: tokio::sync::Mutex::new(()), inserter: TextInserter::new(), vocab_card_visible: AtomicBool::new(false), @@ -664,33 +722,48 @@ impl Coordinator { foundry_local_runtime: Arc, sherpa_onnx_runtime: Arc, ) -> Self { - let history = HistoryStore::new().unwrap_or_else(|e| { - log::error!("[coord] HistoryStore init failed: {e}; 降级为空历史记录"); - HistoryStore::new_fallback() - }); - let prefs = PreferencesStore::new().unwrap_or_else(|e| { - log::error!("[coord] PreferencesStore init failed: {e}; 降级为默认偏好设置"); - PreferencesStore::new_fallback() - }); - // 启动即同步系统代理开关(issue #869),让首个请求就按用户设置建客户端。 - crate::net::set_use_system_proxy(prefs.get().use_system_proxy); - let style_packs = StylePackStore::new(&prefs).unwrap_or_else(|e| { - log::error!("[coord] StylePackStore init failed: {e}; 降级为空样式包列表"); - StylePackStore::new_fallback() - }); - let vocab = DictionaryStore::new().unwrap_or_else(|e| { - log::error!("[coord] DictionaryStore init failed: {e}; 降级为空词库"); - DictionaryStore::new_fallback() - }); - let correction_rules = CorrectionRuleStore::new().unwrap_or_else(|e| { - log::error!("[coord] CorrectionRuleStore init failed: {e}; 降级为空纠错规则"); - CorrectionRuleStore::new_fallback() - }); - - let activity = ActivityStore::load().unwrap_or_else(|e| { - log::error!("[coord] ActivityStore init failed: {e}; 活动计数降级为内存态"); - ActivityStore::new_fallback() - }); + let gate = startup_sync_gate(); + let mut startup_error = gate.as_ref().err().cloned(); + // Keep the registered barrier alive until Core adopts it. Once any store + // fails, later constructors use fallbacks and no real repository is touched. + let _sync_gate = gate.ok(); + let history = startup_store( + &mut startup_error, + HistoryStore::new, + HistoryStore::new_fallback, + ); + let prefs = startup_store( + &mut startup_error, + PreferencesStore::new, + PreferencesStore::new_fallback, + ); + if startup_error.is_none() + && _sync_gate + .as_ref() + .is_some_and(|gate| !gate.recovery_required().unwrap_or(true)) + { + crate::net::set_use_system_proxy(prefs.get().use_system_proxy); + } + let style_packs = startup_store( + &mut startup_error, + || StylePackStore::new(&prefs), + StylePackStore::new_fallback, + ); + let vocab = startup_store( + &mut startup_error, + DictionaryStore::new, + DictionaryStore::new_fallback, + ); + let correction_rules = startup_store( + &mut startup_error, + CorrectionRuleStore::new, + CorrectionRuleStore::new_fallback, + ); + let activity = startup_store( + &mut startup_error, + ActivityStore::load, + ActivityStore::new_fallback, + ); let app = crate::core_adapters::app_handle_slot(); let hotkey_status = Arc::new(Mutex::new(HotkeyStatus::default())); @@ -712,6 +785,7 @@ impl Coordinator { ), Arc::clone(&hotkey_status), Arc::clone(&qa_context), + startup_error, ); let host = crate::tauri_coordinator_host::TauriCoordinatorHost::new(Arc::clone(&app)); @@ -722,6 +796,7 @@ impl Coordinator { less_computer_voice: Mutex::new(None), hotkey_runtime_target: Mutex::new(hotkey_runtime_target), settings_host_gate: Mutex::new(()), + hotkey_resume_started: AtomicBool::new(false), overlay_qa_handoff: tokio::sync::Mutex::new(()), inserter: TextInserter::new(), vocab_card_visible: AtomicBool::new(false), @@ -758,6 +833,10 @@ impl Coordinator { Self { inner } } + pub fn startup_error(&self) -> Option { + self.inner.backend.startup_error() + } + pub fn backend(&self) -> Arc { Arc::clone(&self.inner.backend) } @@ -906,7 +985,60 @@ impl Coordinator { self.inner.shutdown.store(true, Ordering::SeqCst); } + /// Call once from RunEvent::Ready, even when recovery is still pending. + /// Installation waits for the fence; sleeping never owns the settings gate. + pub fn start_hotkey_supervisors_when_ready(&self) { + if self + .inner + .hotkey_resume_started + .swap(true, Ordering::AcqRel) + { + return; + } + let weak = Arc::downgrade(&self.inner); + let fallback = weak.clone(); + if std::thread::Builder::new() + .name("openless-hotkey-resume".into()) + .spawn(move || loop { + let Some(inner) = weak.upgrade() else { + return; + }; + if inner.shutdown.load(Ordering::SeqCst) || inner.backend.startup_error().is_some() + { + return; + } + if inner.backend.ensure_runtime_ready().is_ok() { + let coord = Coordinator { inner }; + coord.start_hotkey_listener(); + coord.start_qa_hotkey_listener(); + #[cfg(not(mobile))] + coord.start_selection_polish_hotkey_listener(); + coord.start_coding_agent_hotkey_listener(); + coord.start_combo_hotkey_listener(); + coord.start_translation_hotkey_listener(); + coord.start_switch_style_hotkey_listener(); + coord.start_open_app_hotkey_listener(); + coord.start_quick_note_hotkey_listener(); + coord.start_style_pack_hotkey_listeners(); + return; + } + drop(inner); + std::thread::sleep(std::time::Duration::from_secs(1)); + }) + .is_err() + { + if let Some(inner) = fallback.upgrade() { + inner.hotkey_resume_started.store(false, Ordering::Release); + } + log::error!("[coord] hotkey resume supervisor could not start"); + } + } + pub fn start_hotkey_listener(&self) { + if self.inner.backend.ensure_runtime_ready().is_err() { + log::info!("[coord] hotkey startup waits for local recovery"); + return; + } // 起一个守护线程,反复尝试安装 hotkey hook。Accessibility 一被授予就立即生效, // 用户不需要手动重启 OpenLess。 let inner = Arc::clone(&self.inner); @@ -1384,6 +1516,15 @@ impl Coordinator { } fn ensure_modifier_hotkey_monitor(&self, binding: crate::types::HotkeyBinding) { + if let Err(error) = self.try_ensure_modifier_hotkey_monitor(binding) { + log::warn!("[coord] modifier hotkey update failed: {error}"); + } + } + + fn try_ensure_modifier_hotkey_monitor( + &self, + binding: crate::types::HotkeyBinding, + ) -> Result<(), String> { if let Some(monitor) = self.inner.hotkey.lock().as_ref() { #[cfg(target_os = "linux")] let plugin_binding = binding.clone(); @@ -1394,7 +1535,7 @@ impl Coordinator { } else { crate::linux_fcitx::sync_binding_to_plugin(&plugin_binding); } - return; + return Ok(()); } let (tx, rx) = mpsc::channel::(); #[cfg(target_os = "linux")] @@ -1406,6 +1547,13 @@ impl Coordinator { match HotkeyMonitor::start(binding, tx, cancel_tx, combo_tx) { Ok(monitor) => { let adapter = monitor.kind(); + let inner_clone = Arc::clone(&self.inner); + std::thread::Builder::new() + .name("openless-hotkey-bridge".into()) + .spawn(move || hotkey_bridge_loop(inner_clone, rx)) + .map_err(|error| error.to_string())?; + // Publish only after the bridge exists. A failed thread spawn + // must drop this monitor, not leave a registered dead sender. *self.inner.hotkey.lock() = Some(monitor); *self.inner.hotkey_status.lock() = HotkeyStatus { adapter, @@ -1413,11 +1561,6 @@ impl Coordinator { message: Some(format!("{} 已安装", adapter.display_name())), last_error: None, }; - let inner_clone = Arc::clone(&self.inner); - std::thread::Builder::new() - .name("openless-hotkey-bridge".into()) - .spawn(move || hotkey_bridge_loop(inner_clone, rx)) - .ok(); // Linux: 启动 fcitx5 插件信号监听作为热键源。 #[cfg(target_os = "linux")] { @@ -1445,10 +1588,12 @@ impl Coordinator { adapter: HotkeyMonitor::capability().adapter, state: HotkeyStatusState::Failed, message: Some(e.message.clone()), - last_error: Some(e), + last_error: Some(e.clone()), }; + return Err(e.message); } } + Ok(()) } pub fn update_modifier_shortcut_bindings(&self) { @@ -1771,3 +1916,43 @@ fn schedule_selection_polish_capsule_idle(inner: &Arc, epoch: u64, delay_ hide_selection_polish_capsule_if_current(&inner, epoch); }); } + +#[cfg(test)] +mod startup_restore_tests { + use super::*; + + #[test] + fn restore_host_denied_store_blocks_later_real_constructors() { + let mut failure = None; + let first = startup_store(&mut failure, || Err::("denied"), || 7); + assert_eq!(first, 7); + assert!(failure.is_some()); + let second = startup_store( + &mut failure, + || -> Result { panic!("must not open another real store after failure") }, + || 9, + ); + assert_eq!(second, 9); + let backend = openless_core::OpenLessBackend::blocked_startup( + openless_core::BackendConfig::default(), + failure.unwrap(), + ); + assert!(backend.startup_error().is_some()); + assert!(!backend.snapshot().running); + assert!(backend.ensure_runtime_ready().is_err()); + } + + #[test] + fn restore_host_healthy_store_does_not_use_fallback() { + let mut failure = None; + assert_eq!( + startup_store( + &mut failure, + || Ok::<_, ()>(11), + || panic!("unexpected fallback") + ), + 11 + ); + assert!(failure.is_none()); + } +} diff --git a/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs b/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs index d2d0b39f4..f5cc414d7 100644 --- a/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs +++ b/openless-all/app/src-tauri/src/coordinator/hotkey_loops.rs @@ -86,6 +86,13 @@ pub(super) fn hotkey_supervisor_loop(inner: Arc) { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + let target = hotkey_runtime_target(&inner); if inner.hotkey.lock().is_some() { @@ -105,6 +112,7 @@ pub(super) fn hotkey_supervisor_loop(inner: Arc) { }; log::warn!("[hotkey-supervisor] fcitx5 plugin unavailable, retrying..."); attempts += 1; + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); continue; } @@ -194,6 +202,7 @@ pub(super) fn hotkey_supervisor_loop(inner: Arc) { error_message ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } @@ -202,23 +211,40 @@ pub(super) fn hotkey_supervisor_loop(inner: Arc) { // ─────────────────────────── QA hotkey supervisor ─────────────────────────── +fn take_qa_hotkey_on_main_thread(inner: &Arc) { + let main = Arc::clone(inner); + if let Err(error) = inner.host.run_on_main_thread(move || { + main.qa_hotkey.lock().take(); + }) { + log::warn!("[qa] cannot dispatch hotkey removal: {error}"); + } +} + pub(super) fn qa_hotkey_supervisor_loop(inner: Arc) { let mut attempts: u32 = 0; loop { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + // 用户已经把 QA 关掉就睡着等 runtime target 改动;改动通过显式 settings effect 唤醒。 let binding = match hotkey_runtime_target(&inner).qa { Some(b) => b, None => { - inner.qa_hotkey.lock().take(); + take_qa_hotkey_on_main_thread(&inner); + drop(registration); std::thread::sleep(std::time::Duration::from_secs(5)); continue; } }; if crate::shortcut_binding::legacy_modifier_trigger(&binding).is_some() { - inner.qa_hotkey.lock().take(); + take_qa_hotkey_on_main_thread(&inner); if let Some(monitor) = inner.hotkey.lock().as_ref() { let (qa_trigger, selection_polish_trigger, translation_trigger) = modifier_shortcut_triggers(&inner); @@ -228,12 +254,14 @@ pub(super) fn qa_hotkey_supervisor_loop(inner: Arc) { translation_trigger, ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(5)); continue; } if inner.qa_hotkey.lock().is_some() { // 已注册成功 → 不重复装;睡 5s 复查( binding 变化由 update 路径手动触发 )。 + drop(registration); std::thread::sleep(std::time::Duration::from_secs(5)); continue; } @@ -243,7 +271,7 @@ pub(super) fn qa_hotkey_supervisor_loop(inner: Arc) { // PR #119 第一版漏掉的关键步骤,导致用户按了 hotkey 完全无反应。这里通过 // run_on_main_thread 把 QaHotkeyMonitor::start 跳到主线程跑,结果再回 channel。 let (tx, rx) = mpsc::channel::(); - let (init_tx, init_rx) = mpsc::sync_channel::>(1); + let (init_tx, init_rx) = mpsc::sync_channel::>(0); let binding_for_main = binding.clone(); if inner .host @@ -253,6 +281,7 @@ pub(super) fn qa_hotkey_supervisor_loop(inner: Arc) { }) .is_err() { + drop(registration); std::thread::sleep(std::time::Duration::from_secs(1)); continue; } @@ -262,12 +291,14 @@ pub(super) fn qa_hotkey_supervisor_loop(inner: Arc) { let init_result = match init_rx.recv_timeout(std::time::Duration::from_secs(5)) { Ok(r) => r, Err(_) => { + drop(init_rx); attempts += 1; if attempts <= 3 || attempts % 10 == 0 { log::warn!( "[coord] QA hotkey 第 {attempts} 次注册超时(主线程未回执);3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); continue; } @@ -292,6 +323,7 @@ pub(super) fn qa_hotkey_supervisor_loop(inner: Arc) { if attempts <= 3 || attempts % 10 == 0 { log::warn!("[coord] QA hotkey 第 {attempts} 次注册失败: {e}; 3s 后重试"); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } @@ -324,6 +356,13 @@ pub(super) fn selection_polish_hotkey_supervisor_loop(inner: Arc) { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + match try_update_selection_polish_hotkey_binding(&inner) { Ok(()) => return, Err(error) => { @@ -333,6 +372,7 @@ pub(super) fn selection_polish_hotkey_supervisor_loop(inner: Arc) { "[selection-polish] hotkey registration attempt #{attempts} failed: {error}; retrying in 3s" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } @@ -613,9 +653,17 @@ pub(super) fn coding_agent_hotkey_supervisor_loop(inner: Arc) { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + if let Err(error) = update_coding_agent_hotkey_binding_now(&inner) { log::warn!("[less-computer] hotkey registration failed: {error}"); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(5)); } } @@ -1273,6 +1321,13 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + let target = hotkey_runtime_target(&inner); if crate::shortcut_binding::legacy_modifier_trigger(&target.dictation).is_some() { take_combo_hotkey_on_main_thread(&inner); @@ -1311,6 +1366,7 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { "[coord] side-aware combo 第 {attempts} 次注册失败: {e}; 3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); continue; } @@ -1325,7 +1381,7 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { let (tx, rx) = mpsc::channel::(); let (init_tx, init_rx) = - mpsc::sync_channel::>(1); + mpsc::sync_channel::>(0); let binding_for_main = binding.clone(); if inner .host @@ -1335,6 +1391,7 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { }) .is_err() { + drop(registration); std::thread::sleep(std::time::Duration::from_secs(1)); continue; } @@ -1342,12 +1399,14 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { let init_result = match init_rx.recv_timeout(std::time::Duration::from_secs(5)) { Ok(r) => r, Err(_) => { + drop(init_rx); attempts += 1; if attempts <= 3 || attempts % 10 == 0 { log::warn!( "[coord] combo hotkey 第 {attempts} 次注册超时(主线程未回执);3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); continue; } @@ -1374,6 +1433,7 @@ pub(super) fn combo_hotkey_supervisor_loop(inner: Arc) { if attempts <= 3 || attempts % 10 == 0 { log::warn!("[coord] combo hotkey 第 {attempts} 次注册失败: {e}; 3s 后重试"); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } @@ -1412,6 +1472,13 @@ pub(super) fn translation_hotkey_supervisor_loop(inner: Arc) { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + let binding = hotkey_runtime_target(&inner).translation; if is_builtin_translation_shift(&binding) || crate::shortcut_binding::legacy_modifier_trigger(&binding).is_some() @@ -1437,7 +1504,7 @@ pub(super) fn translation_hotkey_supervisor_loop(inner: Arc) { let (tx, rx) = mpsc::channel::(); let (init_tx, init_rx) = - mpsc::sync_channel::>(1); + mpsc::sync_channel::>(0); let binding_for_main = binding.clone(); if inner .host @@ -1447,6 +1514,7 @@ pub(super) fn translation_hotkey_supervisor_loop(inner: Arc) { }) .is_err() { + drop(registration); std::thread::sleep(std::time::Duration::from_secs(1)); continue; } @@ -1454,7 +1522,9 @@ pub(super) fn translation_hotkey_supervisor_loop(inner: Arc) { let init_result = match init_rx.recv_timeout(std::time::Duration::from_secs(5)) { Ok(r) => r, Err(_) => { + drop(init_rx); attempts += 1; + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); continue; } @@ -1477,6 +1547,7 @@ pub(super) fn translation_hotkey_supervisor_loop(inner: Arc) { "[coord] translation hotkey 第 {attempts} 次注册失败: {e}; 3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } @@ -1523,6 +1594,13 @@ pub(super) fn action_hotkey_supervisor_loop(inner: Arc, kind: ActionHotke if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } + // None = 用户主动停用:反注册后退出守护(由 update_action_hotkey_binding 主动路径重装)。 let Some(binding) = action_hotkey_binding(&inner, kind) else { take_action_hotkey_on_main_thread(&inner, kind); @@ -1542,7 +1620,7 @@ pub(super) fn action_hotkey_supervisor_loop(inner: Arc, kind: ActionHotke let (tx, rx) = mpsc::channel::(); let (init_tx, init_rx) = - mpsc::sync_channel::>(1); + mpsc::sync_channel::>(0); let binding_for_main = binding.clone(); if inner .host @@ -1552,6 +1630,7 @@ pub(super) fn action_hotkey_supervisor_loop(inner: Arc, kind: ActionHotke }) .is_err() { + drop(registration); std::thread::sleep(std::time::Duration::from_secs(1)); continue; } @@ -1559,12 +1638,14 @@ pub(super) fn action_hotkey_supervisor_loop(inner: Arc, kind: ActionHotke let init_result = match init_rx.recv_timeout(std::time::Duration::from_secs(5)) { Ok(r) => r, Err(_) => { + drop(init_rx); attempts += 1; if attempts <= 3 || attempts % 10 == 0 { log::warn!( "[coord] action hotkey {kind:?} 第 {attempts} 次注册超时;3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); continue; } @@ -1591,6 +1672,7 @@ pub(super) fn action_hotkey_supervisor_loop(inner: Arc, kind: ActionHotke "[coord] action hotkey {kind:?} 第 {attempts} 次注册失败: {e}; 3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } @@ -1640,12 +1722,10 @@ pub(super) fn handle_action_hotkey_pressed(inner: &Arc, kind: ActionHotke ) => { backend - .stop_dictation_with_options( - openless_core::DictationStopOptions { - quick_note: Some(true), - ..openless_core::DictationStopOptions::default() - }, - ) + .stop_dictation_with_options(openless_core::DictationStopOptions { + quick_note: Some(true), + ..openless_core::DictationStopOptions::default() + }) .await .map(|_| ()) } @@ -1828,6 +1908,12 @@ pub(super) fn style_pack_hotkey_supervisor_loop(inner: Arc) { if inner.shutdown.load(Ordering::SeqCst) { return; } + let registration = inner.settings_host_gate.lock(); + if inner.backend.ensure_runtime_ready().is_err() { + drop(registration); + std::thread::sleep(std::time::Duration::from_secs(1)); + continue; + } let desired = configured_style_pack_hotkeys(&inner); let registrations_match = { @@ -1838,6 +1924,7 @@ pub(super) fn style_pack_hotkey_supervisor_loop(inner: Arc) { }; if registrations_match { attempts = 0; + drop(registration); std::thread::sleep(std::time::Duration::from_secs(5)); continue; } @@ -1849,6 +1936,7 @@ pub(super) fn style_pack_hotkey_supervisor_loop(inner: Arc) { attempts + 1 ); attempts = 0; + drop(registration); std::thread::sleep(std::time::Duration::from_secs(5)); } Err(error) => { @@ -1858,6 +1946,7 @@ pub(super) fn style_pack_hotkey_supervisor_loop(inner: Arc) { "[coord] style pack hotkeys 第 {attempts} 次同步失败: {error}; 3s 后重试" ); } + drop(registration); std::thread::sleep(std::time::Duration::from_secs(3)); } } diff --git a/openless-all/app/src-tauri/src/coordinator/restore_runtime.rs b/openless-all/app/src-tauri/src/coordinator/restore_runtime.rs new file mode 100644 index 000000000..a5961b90e --- /dev/null +++ b/openless-all/app/src-tauri/src/coordinator/restore_runtime.rs @@ -0,0 +1,350 @@ +//! Journal-fenced reconciliation of actual Host state. This is deliberately +//! separate from ordinary settings persistence: credentials and preferences +//! have already been restored under the exclusive source permit. +use super::*; +use futures_util::future::BoxFuture; +use openless_core::{BackendError, BackendErrorCode}; +use std::sync::Weak; + +struct RestoreHost { + coordinator: Weak, +} + +fn failure(reason: &'static str) -> BackendError { + BackendError::new(BackendErrorCode::Platform, reason) +} + +impl openless_core::config::RestoreRuntimeEffects for RestoreHost { + fn apply_target( + &self, + target: crate::types::UserPreferences, + ) -> BoxFuture<'static, Result<(), BackendError>> { + let weak = self.coordinator.clone(); + Box::pin(async move { + let inner = weak + .upgrade() + .ok_or_else(|| failure("restore_host_unavailable"))?; + openless_core::reject_hotkey_collisions(&target) + .map_err(|_| failure("restore_hotkey_conflict"))?; + let coord = Coordinator { + inner: Arc::clone(&inner), + }; + let work_target = target.clone(); + let work_inner = Arc::clone(&inner); + // Ordinary settings transactions take this same Host lock and are + // refused by Core's restoring guard before preparing new effects. + inner + .host + .spawn_blocking(move || { + let coord = Coordinator { inner: work_inner }; + let _host_guard = coord.lock_settings_host(); + #[cfg(target_os = "windows")] + crate::windows_ime_profile::apply_windows_openless_keyboard_list( + openless_core::WindowsKeyboardRuntimeTarget::from(&work_target) + .openless_language_profile_enabled, + ) + .map_err(|_| failure("restore_windows_keyboard_failed"))?; + #[cfg(any(target_os = "macos", target_os = "windows"))] + reconcile_hotkeys(&coord, (&work_target).into())?; + #[cfg(not(any( + target_os = "macos", + target_os = "windows", + target_os = "android", + target_os = "ios" + )))] + return Err(failure("restore_host_platform_unsupported")); + crate::net::set_use_system_proxy(work_target.use_system_proxy); + coord + .inner + .host + .cache_capsule_style(work_target.capsule_style); + Ok::<_, BackendError>(()) + }) + .await + .map_err(|_| failure("restore_host_task_interrupted"))??; + + #[cfg(target_os = "android")] + match target.android_overlay_trigger.normalized() { + crate::types::AndroidOverlayTrigger::Always => { + crate::android::replace_android_overlay() + } + crate::types::AndroidOverlayTrigger::Background + | crate::types::AndroidOverlayTrigger::Keyboard => { + crate::android::hide_android_overlay() + } + } + .map_err(|_| failure("restore_android_overlay_failed"))?; + + // Enabled remains receiver-local consent. Its restored port still + // has to reach the actual listener; configure owns stop/start and + // exposes bind failures to the journal's rollback path. + reconcile_remote_input( + inner.backend.services().remote_input.as_ref(), + target.remote_input_enabled, + target.remote_input_port, + ) + .await?; + // The presentation cache enqueues a native refresh. A final main + // thread acknowledgement keeps that refresh inside the fence. + let (send, receive) = tokio::sync::oneshot::channel(); + inner + .host + .run_on_main_thread(move || { + let _ = send.send(()); + }) + .map_err(|_| failure("restore_main_thread_unavailable"))?; + receive + .await + .map_err(|_| failure("restore_main_thread_interrupted"))?; + coord.backend().reset_restored_runtime_preferences(); + Ok(()) + }) + } +} + +async fn reconcile_remote_input( + remote: &dyn openless_core::domains::RemoteInputApi, + enabled: bool, + port: u16, +) -> Result<(), BackendError> { + match remote.status() { + Ok(status) => { + if status.enabled != enabled || status.port != port || (enabled && !status.running) { + remote + .configure(openless_core::RemoteInputConfig { enabled, port }) + .await + .map_err(|_| failure("restore_remote_input_failed"))?; + } + } + Err(error) if error.code == BackendErrorCode::Unsupported && !enabled => {} + Err(_) => return Err(failure("restore_remote_input_unavailable")), + } + Ok(()) +} + +impl Coordinator { + pub fn bind_restore_runtime_effects(&self) -> Result<(), BackendError> { + if self.startup_error().is_some() { + return Ok(()); + } + if !self.inner.host.is_bound() { + return Err(failure("restore_host_not_bound")); + } + self.inner + .backend + .bind_restore_runtime_effects(Arc::new(RestoreHost { + coordinator: Arc::downgrade(&self.inner), + })) + } +} + +#[cfg(any(target_os = "macos", target_os = "windows"))] +fn reconcile_hotkeys( + coord: &Coordinator, + target: openless_core::HotkeyRuntimeTarget, +) -> Result<(), BackendError> { + *coord.inner.hotkey_runtime_target.lock() = target.clone(); + let trigger = crate::shortcut_binding::legacy_modifier_trigger(&target.dictation); + let binding = crate::types::HotkeyBinding { + trigger: trigger.unwrap_or(crate::types::HotkeyTrigger::Custom), + mode: target.dictation_mode, + keys: None, + }; + coord + .try_ensure_modifier_hotkey_monitor(binding) + .map_err(|_| failure("restore_dictation_monitor_failed"))?; + let (send, receive) = mpsc::sync_channel(1); + let inner = Arc::clone(&coord.inner); + // No timeout success and no abandoned queued registration: keep waiting + // for this exact callback before the journal can roll back another target. + coord + .inner + .host + .run_on_main_thread(move || { + let result = reconcile_hotkeys_on_main(&inner, &target); + let _ = send.send(result); + }) + .map_err(|_| failure("restore_main_thread_unavailable"))?; + receive + .recv() + .map_err(|_| failure("restore_main_thread_interrupted"))? + .map_err(|_| failure("restore_hotkeys_failed"))?; + coord + .try_update_selection_polish_hotkey_binding() + .map_err(|_| failure("restore_selection_hotkey_failed"))?; + coord + .update_coding_agent_hotkey_binding() + .map_err(|_| failure("restore_agent_hotkey_failed"))?; + Ok(()) +} + +#[cfg(any(target_os = "macos", target_os = "windows"))] +fn reconcile_hotkeys_on_main( + inner: &Arc, + target: &openless_core::HotkeyRuntimeTarget, +) -> Result<(), String> { + // Release old combinations together before applying an absolute target; + // this also permits swapping two bindings during a restore. + inner.combo_hotkey.lock().take(); + inner.qa_hotkey.lock().take(); + inner.translation_hotkey.lock().take(); + inner.switch_style_hotkey.lock().take(); + inner.open_app_hotkey.lock().take(); + inner.quick_note_hotkey.lock().take(); + inner.style_pack_hotkeys.lock().clear(); + inner.selection_polish_hotkey.lock().take(); + inner.coding_agent_combo_hotkey.lock().take(); + let trigger = crate::shortcut_binding::legacy_modifier_trigger(&target.dictation); + if trigger.is_some() || is_unconfigured_shortcut(&target.dictation) { + inner.side_aware_combo.lock().take(); + } else if crate::shortcut_binding::binding_requires_side_aware_hook(&target.dictation) { + let mut side_slot = inner.side_aware_combo.lock(); + if let Some(monitor) = side_slot.as_ref() { + monitor + .update_binding(target.dictation.clone()) + .map_err(|error| error.to_string())?; + } else { + let (send, receive) = mpsc::channel(); + let combined = spawn_combo_abort_bridge(inner, handle_trigger_combined); + let monitor = crate::side_aware_combo::SideAwareComboMonitor::start( + target.dictation.clone(), + send, + combined, + ) + .map_err(|error| error.to_string())?; + let owned = Arc::clone(inner); + std::thread::Builder::new() + .name("openless-side-combo-bridge".into()) + .spawn(move || hotkey_bridge_loop(owned, receive)) + .map_err(|error| error.to_string())?; + *side_slot = Some(monitor); + } + } else { + inner.side_aware_combo.lock().take(); + let (send, receive) = mpsc::channel(); + let monitor = ComboHotkeyMonitor::start(target.dictation.clone(), send) + .map_err(|error| error.to_string())?; + let owned = Arc::clone(inner); + std::thread::Builder::new() + .name("openless-combo-hotkey-bridge".into()) + .spawn(move || combo_hotkey_bridge_loop(owned, receive)) + .map_err(|error| error.to_string())?; + *inner.combo_hotkey.lock() = Some(monitor); + } + if let Some(binding) = target.qa.as_ref().filter(|binding| { + crate::shortcut_binding::legacy_modifier_trigger(binding).is_none() + && !is_unconfigured_shortcut(binding) + }) { + let (send, receive) = mpsc::channel(); + let monitor = + QaHotkeyMonitor::start(binding.clone(), send).map_err(|error| error.to_string())?; + let owned = Arc::clone(inner); + std::thread::Builder::new() + .name("openless-qa-hotkey-bridge".into()) + .spawn(move || qa_hotkey_bridge_loop(owned, receive)) + .map_err(|error| error.to_string())?; + *inner.qa_hotkey.lock() = Some(monitor); + } + if !is_builtin_translation_shift(&target.translation) + && crate::shortcut_binding::legacy_modifier_trigger(&target.translation).is_none() + && !is_unconfigured_shortcut(&target.translation) + { + update_translation_hotkey_on_main_thread(Arc::clone(inner), target.translation.clone()) + .map_err(|error| error.to_string())?; + } + for kind in [ + ActionHotkeyKind::SwitchStyle, + ActionHotkeyKind::OpenApp, + ActionHotkeyKind::QuickNote, + ] { + let Some(binding) = action_hotkey_binding(inner, kind) else { + continue; + }; + if is_unconfigured_shortcut(&binding) { + continue; + } + if is_modifier_only_shortcut(&binding) { + return Err("unsupported action hotkey".into()); + } + let (send, receive) = mpsc::channel(); + let monitor = + ComboHotkeyMonitor::start(binding, send).map_err(|error| error.to_string())?; + let owned = Arc::clone(inner); + std::thread::Builder::new() + .name(action_hotkey_bridge_thread_name(kind).into()) + .spawn(move || action_hotkey_bridge_loop(owned, receive, kind)) + .map_err(|error| error.to_string())?; + *action_hotkey_slot(inner, kind).lock() = Some(monitor); + } + sync_style_pack_hotkeys(inner)?; + if let Some(monitor) = inner.hotkey.lock().as_ref() { + let (qa, selection, translation) = modifier_shortcut_triggers(inner); + monitor.update_modifier_shortcuts(qa, selection, translation); + } + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + use openless_core::domains::RemoteInputApi; + + fn remote() -> ( + openless_core::RemoteInputService, + Arc, + ) { + let runtime = Arc::new(openless_core::testing::RecordingRemoteInputRuntime::default()); + let service = openless_core::RemoteInputService::new(runtime.clone(), 8443, "en").unwrap(); + let publisher_owner = openless_core::OpenLessBackend::blocked_startup( + openless_core::BackendConfig::default(), + failure("fixture has no external adapters"), + ); + service.bind_event_publisher(publisher_owner.event_publisher()); + (service, runtime) + } + + #[tokio::test] + async fn restore_host_running_remote_port_and_rollback_reach_the_listener() { + let (remote, runtime) = remote(); + remote + .configure(openless_core::RemoteInputConfig { + enabled: true, + port: 8443, + }) + .await + .unwrap(); + reconcile_remote_input(&remote, true, 9443).await.unwrap(); + assert!(remote.status().unwrap().running); + assert_eq!(remote.status().unwrap().port, 9443); + assert_eq!(runtime.server_start_count(), 2); + assert_eq!(runtime.server_stop_count(), 1); + // The journal invokes the same absolute callback with its old target. + reconcile_remote_input(&remote, true, 8443).await.unwrap(); + assert!(remote.status().unwrap().running); + assert_eq!(remote.status().unwrap().port, 8443); + assert_eq!(runtime.server_start_count(), 3); + assert_eq!(runtime.server_stop_count(), 2); + } + + #[tokio::test] + async fn restore_host_invalid_remote_target_is_an_error_and_disabled_capability_is_explicit() { + let (remote, runtime) = remote(); + remote + .configure(openless_core::RemoteInputConfig { + enabled: true, + port: 8443, + }) + .await + .unwrap(); + assert!(reconcile_remote_input(&remote, true, 0).await.is_err()); + assert_eq!(remote.status().unwrap().port, 8443); + assert_eq!(runtime.server_stop_count(), 0); + let unsupported = openless_core::domains::UnsupportedDomainServices; + reconcile_remote_input(&unsupported, false, 8443) + .await + .unwrap(); + assert!(reconcile_remote_input(&unsupported, true, 8443) + .await + .is_err()); + } +} diff --git a/openless-all/app/src-tauri/src/core_adapters.rs b/openless-all/app/src-tauri/src/core_adapters.rs index 4b0a3addc..ecedfc216 100644 --- a/openless-all/app/src-tauri/src/core_adapters.rs +++ b/openless-all/app/src-tauri/src/core_adapters.rs @@ -2826,6 +2826,130 @@ where } } +/// Worker creation follows an already completed TIS switch. Roll back that +/// switch on startup failure, retaining the original error if rollback fails. +#[cfg(target_os = "macos")] +async fn start_worker_restoring_on_error( + previous: P, + start: impl FnOnce() -> Result, + restore: impl FnOnce(P) -> F, +) -> Result<(P, W), BackendError> +where + F: std::future::Future>, +{ + match start() { + Ok(worker) => Ok((previous, worker)), + Err(error) => { + if let Err(restore_error) = restore(previous).await { + log::warn!("[core-adapter] restore input source after worker startup failed: {restore_error}"); + } + Err(error) + } + } +} + +#[cfg(target_os = "macos")] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum MacInsertionCompletion { + Finished(InsertOutcome), + Cancelled, +} + +/// TIS restoration belongs to the terminal effect, never to an individual +/// caller's future. Repeated finish/cancel callers join the same result. +#[cfg(target_os = "macos")] +#[derive(Default)] +struct MacInsertionTerminal { + started: AtomicBool, + result: std::sync::OnceLock>, + ready: tokio::sync::Notify, +} + +#[cfg(target_os = "macos")] +impl MacInsertionTerminal { + fn settle(&self, result: Result) { + if self.result.set(result).is_ok() { + self.ready.notify_waiters(); + } + } + + async fn join_or_spawn( + self: &Arc, + effect: impl FnOnce() -> F + Send + 'static, + spawn: impl FnOnce(BoxFuture<'static, ()>), + ) -> Result + where + F: std::future::Future> + + Send + + 'static, + { + if self + .started + .compare_exchange(false, true, Ordering::AcqRel, Ordering::Acquire) + .is_ok() + { + let guard = MacInsertionTerminalGuard(Arc::clone(self)); + spawn(Box::pin(async move { + guard.settle(effect().await); + })); + } + loop { + let notified = self.ready.notified(); + if let Some(result) = self.result.get() { + return result.clone(); + } + notified.await; + } + } +} + +#[cfg(target_os = "macos")] +struct MacInsertionTerminalGuard(Arc); + +#[cfg(target_os = "macos")] +impl MacInsertionTerminalGuard { + fn settle(&self, result: Result) { + self.0.settle(result); + } +} + +#[cfg(target_os = "macos")] +impl Drop for MacInsertionTerminalGuard { + fn drop(&mut self) { + self.0.settle(Err(BackendError::new( + BackendErrorCode::Internal, + "macOS insertion finalization did not complete", + ))); + } +} + +/// Preserve the existing written-text outcome on TIS restoration failure, but +/// always restore after a failed delivery barrier as well. A barrier error must +/// not cause a second insertion of text that may already have been posted. +#[cfg(target_os = "macos")] +async fn finish_mac_insertion_after_barrier( + barrier: B, + effect: impl FnOnce() -> E, + restore: impl FnOnce() -> R, +) -> Result +where + B: std::future::Future>, + E: std::future::Future>, + R: std::future::Future>, +{ + let result = match barrier.await { + Ok(()) => effect().await, + Err(error) => Err(error), + }; + if let Err(error) = restore().await { + log::warn!("[core-adapter] restore input state after insertion failed: {error}"); + if matches!(result, Ok(MacInsertionCompletion::Cancelled)) { + return Err(error); + } + } + result +} + impl CoreTextInserter for TauriTextInserter { fn capture_target(&self) -> Option> { Some(Arc::new(Self { @@ -2869,7 +2993,7 @@ impl CoreTextInserter for TauriTextInserter { None }; #[cfg(target_os = "macos")] - let (app_handle, previous_input_source, streaming_ready) = { + let (app_handle, mut previous_input_source, streaming_ready) = { let app_handle = app.lock().clone().ok_or_else(|| { BackendError::new( BackendErrorCode::InvalidState, @@ -2890,6 +3014,36 @@ impl CoreTextInserter for TauriTextInserter { .await; (app_handle, previous, streaming_ready) }; + #[cfg(target_os = "macos")] + let cancel_requested = Arc::new(AtomicBool::new(false)); + #[cfg(target_os = "macos")] + let streaming_worker = if streaming_ready { + let (previous, worker) = start_worker_restoring_on_error( + previous_input_source, + || { + crate::macos_streaming_input::MacStreamingInput::spawn( + insertion_target.clone(), + context.insertion.macos_newline_mode, + Arc::clone(&cancel_requested), + ) + }, + |previous| { + let app_handle = &app_handle; + async move { + crate::unicode_keystroke::restore_input_source(app_handle, previous) + .await + .map_err(|error| { + BackendError::new(BackendErrorCode::Platform, error.to_string()) + }) + } + }, + ) + .await?; + previous_input_source = previous; + Some(worker) + } else { + None + }; #[cfg(not(target_os = "macos"))] let _ = app; Ok(Arc::new(TauriTextInsertionSession { @@ -2908,7 +3062,11 @@ impl CoreTextInserter for TauriTextInserter { #[cfg(target_os = "macos")] streaming_ready, #[cfg(target_os = "macos")] - confirm_keyboard_delivery: Arc::new(AtomicBool::new(true)), + streaming_worker, + #[cfg(target_os = "macos")] + cancel_requested, + #[cfg(target_os = "macos")] + terminal: Arc::new(MacInsertionTerminal::default()), }) as Arc) }) } @@ -2931,7 +3089,11 @@ struct TauriTextInsertionSession { #[cfg(target_os = "macos")] streaming_ready: bool, #[cfg(target_os = "macos")] - confirm_keyboard_delivery: Arc, + streaming_worker: Option, + #[cfg(target_os = "macos")] + cancel_requested: Arc, + #[cfg(target_os = "macos")] + terminal: Arc, } impl TauriTextInsertionSession { @@ -2947,66 +3109,47 @@ impl TauriTextInsertionSession { } async fn write_chunk(&self, text: String) -> Result { + #[cfg(target_os = "macos")] + { + // A write future may have been created before a terminal caller + // sealed the session but only polled afterwards. + if self.finished.load(Ordering::Acquire) { + return Err(BackendError::new( + BackendErrorCode::Cancelled, + "text insertion session is closed", + )); + } + let worker = self.streaming_worker.as_ref().ok_or_else(|| { + BackendError::new( + BackendErrorCode::Unsupported, + "macOS streaming insertion is unavailable", + ) + })?; + worker.write(text).await + } + #[cfg(not(target_os = "macos"))] self.restore_insertion_target()?; - #[cfg(any(target_os = "windows", target_os = "macos", target_os = "linux"))] + #[cfg(any(target_os = "windows", target_os = "linux"))] { let chunk = text.clone(); #[cfg(target_os = "windows")] let newline_mode = self.context.insertion.windows_sendinput_newline_mode; - #[cfg(target_os = "macos")] - let newline_mode = self.context.insertion.macos_newline_mode; - #[cfg(target_os = "macos")] - let confirm_delivery = Arc::clone(&self.confirm_keyboard_delivery); let finished = Arc::clone(&self.finished); let written = tauri::async_runtime::spawn_blocking(move || { if finished.load(Ordering::Acquire) { return 0; } - // CGEventPost returns before the target has consumed its input. - // Retain the original control before posting; inspect only its - // caret, on this blocking thread, before completing the write. - #[cfg(target_os = "macos")] - let delivery = if confirm_delivery.load(Ordering::Acquire) - && !(newline_mode == crate::types::MacosNewlineMode::Return - && chunk.contains('\n')) - { - crate::host_document::KeyboardDelivery::capture() - } else { - None - }; - #[cfg(target_os = "macos")] - if delivery - .as_ref() - .is_some_and(|delivery| !delivery.is_focused()) - { - return 0; - } #[cfg(target_os = "windows")] let result = crate::unicode_keystroke::type_unicode_chunk_with_options( &chunk, crate::unicode_keystroke::WindowsSendInputOptions { newline_mode }, ); - #[cfg(target_os = "macos")] - let result = - crate::unicode_keystroke::type_unicode_chunk_with_options(&chunk, newline_mode); #[cfg(target_os = "linux")] let result = crate::unicode_keystroke::type_unicode_chunk(&chunk); let written = match result { Ok(written) => written, Err(error) => error.typed_chars(), }; - #[cfg(target_os = "macos")] - { - let delivered = delivery.is_some_and(|delivery| { - let posted: String = chunk.chars().take(written).collect(); - delivery.wait(&posted) - }); - // Unsupported/stalled controls are tried once per session, - // so a missing AX caret cannot add a delay to every delta. - if !delivered { - confirm_delivery.store(false, Ordering::Release); - } - } written }) .await @@ -3148,6 +3291,56 @@ impl TauriTextInsertionSession { } Ok(()) } + + #[cfg(target_os = "macos")] + async fn finalize_mac( + self, + final_text: Option, + ) -> Result { + self.finished.store(true, Ordering::Release); + if final_text.is_none() { + // Separate from the normal finished latch: normal finish must not + // cancel Write commands already accepted by the worker's queue. + self.cancel_requested.store(true, Ordering::Release); + } + let terminal = Arc::clone(&self.terminal); + terminal + .join_or_spawn( + move || async move { + let worker = self.streaming_worker.clone(); + let session = &self; + finish_mac_insertion_after_barrier( + async move { + match worker { + Some(worker) => worker.finish().await, + None => Ok(()), + } + }, + move || async move { + if session.cancel_requested.load(Ordering::Acquire) { + return Ok(MacInsertionCompletion::Cancelled); + } + match final_text { + Some(text) if !text.is_empty() => session + .insert_final(text) + .await + .map(MacInsertionCompletion::Finished), + Some(_) => { + Ok(MacInsertionCompletion::Finished(InsertOutcome::Inserted)) + } + None => Ok(MacInsertionCompletion::Cancelled), + } + }, + || session.restore_platform_state(), + ) + .await + }, + |task| { + tauri::async_runtime::spawn(task); + }, + ) + .await + } } impl TextInsertionSession for TauriTextInsertionSession { @@ -3186,37 +3379,254 @@ impl TextInsertionSession for TauriTextInsertionSession { ) -> BoxFuture<'static, Result> { let session = self.clone(); Box::pin(async move { - if session.finished.swap(true, Ordering::AcqRel) { - return Err(BackendError::new( - BackendErrorCode::InvalidState, - "text insertion session is already closed", - )); + #[cfg(target_os = "macos")] + { + match session.finalize_mac(Some(final_text)).await? { + MacInsertionCompletion::Finished(outcome) => Ok(outcome), + MacInsertionCompletion::Cancelled => Err(BackendError::new( + BackendErrorCode::Cancelled, + "text insertion session was cancelled before completion", + )), + } } - let result = if final_text.is_empty() { - Ok(InsertOutcome::Inserted) - } else { - session.insert_final(final_text).await - }; - if let Err(error) = session.restore_platform_state().await { - // 恢复输入源失败并不能撤销已经落下的文字。保留真实交付结果, - // 避免历史误报失败后诱导用户重试造成重复;无论插入成败都记录恢复错误。 - log::warn!("[core-adapter] restore input state after insertion failed: {error}"); + #[cfg(not(target_os = "macos"))] + { + if session.finished.swap(true, Ordering::AcqRel) { + return Err(BackendError::new( + BackendErrorCode::InvalidState, + "text insertion session is already closed", + )); + } + let result = if final_text.is_empty() { + Ok(InsertOutcome::Inserted) + } else { + session.insert_final(final_text).await + }; + if let Err(error) = session.restore_platform_state().await { + // 恢复输入源失败并不能撤销已经落下的文字。保留真实交付结果, + // 避免历史误报失败后诱导用户重试造成重复;无论插入成败都记录恢复错误。 + log::warn!( + "[core-adapter] restore input state after insertion failed: {error}" + ); + } + result } - result }) } fn cancel(&self) -> BoxFuture<'static, Result<(), BackendError>> { let session = self.clone(); Box::pin(async move { - if session.finished.swap(true, Ordering::AcqRel) { - return Ok(()); + #[cfg(target_os = "macos")] + { + session.finalize_mac(None).await.map(|_| ()) + } + #[cfg(not(target_os = "macos"))] + { + if session.finished.swap(true, Ordering::AcqRel) { + return Ok(()); + } + session.restore_platform_state().await } - session.restore_platform_state().await }) } } +#[cfg(all(test, target_os = "macos"))] +mod mac_insertion_lifecycle_tests { + use super::*; + + fn spawn(task: BoxFuture<'static, ()>) { + tokio::spawn(task); + } + + #[tokio::test] + async fn worker_start_failure_restores_the_previous_source_once() { + let restored = Arc::new(Mutex::new(Vec::new())); + let error = BackendError::new(BackendErrorCode::Platform, "worker unavailable"); + let result = start_worker_restoring_on_error( + 7, + || Err::<(), _>(error.clone()), + |token| { + let restored = &restored; + async move { + restored.lock().push(token); + Ok(()) + } + }, + ) + .await; + assert_eq!(result.unwrap_err(), error); + assert_eq!(*restored.lock(), [7]); + assert_eq!( + start_worker_restoring_on_error( + 8, + || Ok(9), + |_| async { + panic!("successful startup must retain the source for terminal cleanup") + } + ) + .await + .unwrap(), + (8, 9) + ); + } + + #[tokio::test] + async fn failed_barrier_skips_insertion_but_still_restores() { + let actions = Mutex::new(Vec::new()); + let error = BackendError::new(BackendErrorCode::Internal, "worker stopped"); + let result = finish_mac_insertion_after_barrier( + async { + actions.lock().push("barrier"); + Err(error.clone()) + }, + || async { panic!("uncertain posted input must not be inserted again") }, + || async { + actions.lock().push("restore"); + Ok(()) + }, + ) + .await; + assert_eq!(result.unwrap_err(), error); + assert_eq!(*actions.lock(), ["barrier", "restore"]); + } + + #[tokio::test] + async fn failed_final_insertion_still_restores_and_preserves_its_error() { + let actions = Mutex::new(Vec::new()); + let error = BackendError::new(BackendErrorCode::Platform, "target unavailable"); + let result = finish_mac_insertion_after_barrier( + async { + actions.lock().push("barrier"); + Ok(()) + }, + || async { + actions.lock().push("insert"); + Err(error.clone()) + }, + || async { + actions.lock().push("restore"); + Err(BackendError::new( + BackendErrorCode::Platform, + "TIS unavailable", + )) + }, + ) + .await; + assert_eq!(result.unwrap_err(), error); + assert_eq!(*actions.lock(), ["barrier", "insert", "restore"]); + } + + #[tokio::test] + async fn restoration_error_keeps_written_outcome_but_is_reported_on_cancel() { + let error = BackendError::new(BackendErrorCode::Platform, "TIS unavailable"); + let completed = MacInsertionCompletion::Finished(InsertOutcome::Inserted); + assert_eq!( + finish_mac_insertion_after_barrier( + async { Ok(()) }, + || async { Ok(completed) }, + || async { Err(error.clone()) }, + ) + .await + .unwrap(), + completed + ); + assert_eq!( + finish_mac_insertion_after_barrier( + async { Ok(()) }, + || async { Ok(MacInsertionCompletion::Cancelled) }, + || async { Err(error.clone()) }, + ) + .await + .unwrap_err(), + error + ); + } + + async fn assert_terminal_join(completion: MacInsertionCompletion, drop_first: bool) { + let terminal = Arc::new(MacInsertionTerminal::default()); + let actions = Arc::new(Mutex::new(Vec::new())); + let entered = Arc::new(tokio::sync::Semaphore::new(0)); + let release = Arc::new(tokio::sync::Semaphore::new(0)); + let observed = Arc::clone(&actions); + let start = Arc::clone(&entered); + let gate = Arc::clone(&release); + let mut first = Box::pin(terminal.join_or_spawn( + move || async move { + let observed = &observed; + finish_mac_insertion_after_barrier( + async { + observed.lock().push("barrier started"); + start.add_permits(1); + gate.acquire().await.unwrap().forget(); + observed.lock().push("barrier drained"); + Ok(()) + }, + || async { + observed.lock().push("effect"); + Ok(completion) + }, + || async { + observed.lock().push("source restored"); + Ok(()) + }, + ) + .await + }, + spawn, + )); + assert!(futures_util::poll!(first.as_mut()).is_pending()); + entered.acquire().await.unwrap().forget(); + assert_eq!(*actions.lock(), ["barrier started"]); + let mut second = std::pin::pin!(terminal.join_or_spawn( + || async { panic!("duplicate terminal call must not repeat effects") }, + spawn, + )); + assert!(futures_util::poll!(second.as_mut()).is_pending()); + let first = if drop_first { + drop(first); + None + } else { + Some(first) + }; + release.add_permits(1); + assert_eq!(second.await.unwrap(), completion); + if let Some(first) = first { + assert_eq!(first.await.unwrap(), completion); + } + assert_eq!( + *actions.lock(), + [ + "barrier started", + "barrier drained", + "effect", + "source restored" + ] + ); + } + + #[tokio::test] + async fn repeated_finish_and_cancel_wait_for_the_same_terminal_barrier() { + for completion in [ + MacInsertionCompletion::Finished(InsertOutcome::Inserted), + MacInsertionCompletion::Cancelled, + ] { + assert_terminal_join(completion, false).await; + } + } + + #[tokio::test] + async fn dropping_the_initial_terminal_future_does_not_skip_restore() { + for completion in [ + MacInsertionCompletion::Finished(InsertOutcome::Inserted), + MacInsertionCompletion::Cancelled, + ] { + assert_terminal_join(completion, true).await; + } + } +} + #[cfg(target_os = "windows")] fn windows_unicode_fallback(context: &DictationContext, text: &str) -> crate::types::InsertStatus { let inserter = crate::insertion::TextInserter::new(); diff --git a/openless-all/app/src-tauri/src/host_document/macos.rs b/openless-all/app/src-tauri/src/host_document/macos.rs index e1b282e8d..acaa75390 100644 --- a/openless-all/app/src-tauri/src/host_document/macos.rs +++ b/openless-all/app/src-tauri/src/host_document/macos.rs @@ -381,12 +381,12 @@ unsafe fn copy_selected_range(focused: AxUiElementRef) -> Option { (ok != 0).then_some(range) } -/// Confirms a posted keyboard chunk against the original text control's caret. +/// Confirms all posted keyboard input against the original text control's caret. /// Only metadata is read; the target's document text is never fetched. /// Create, wait and drop on the same blocking insertion thread. pub(crate) struct KeyboardDelivery { element: AxUiElementRef, - start: usize, + progress: KeyboardDeliveryProgress, } impl KeyboardDelivery { @@ -402,9 +402,10 @@ impl KeyboardDelivery { let GatedElement::Ready(element) = focused_element_passing_the_gate(gate) else { return None; }; - let mut delivery = Self { element, start: 0 }; - delivery.start = copy_caret_offset(element)?; - Some(delivery) + Some(Self { + element, + progress: KeyboardDeliveryProgress::new(copy_caret_offset(element)), + }) } } @@ -426,38 +427,48 @@ impl KeyboardDelivery { } } - /// False means this target cannot be confirmed; stop probing it for this session. - pub(crate) fn wait(self, posted_text: &str) -> bool { + /// Account only for the prefix actually posted by the native typer. This + /// never reads AX or waits, so another streamed chunk can follow immediately. + pub(crate) fn record_posted( + &mut self, + posted_text: &str, + newline_mode: crate::types::MacosNewlineMode, + ) { + self.progress.record_posted(posted_text, newline_mode); + } + + /// One terminal delivery barrier, on the same thread that captured the + /// element. Unreadable/stale controls keep the existing posted-input fallback. + pub(crate) fn finish(self) -> KeyboardDeliveryOutcome { let started = Instant::now(); - let outcome = wait_for_caret_delivery( - self.start, - posted_text, - || { - if crate::unicode_keystroke::is_secure_input_enabled() { - return None; - } - // SAFETY: self retains the same control throughout this wait. - unsafe { copy_selected_range(self.element) }.and_then(|range| { - if range.length < 0 { + let outcome = match self.progress.expected() { + DeliveryExpectation::NothingPosted => KeyboardDeliveryOutcome::Delivered, + DeliveryExpectation::Unavailable => KeyboardDeliveryOutcome::Unavailable, + DeliveryExpectation::Caret { start, expected } => wait_for_caret_delivery( + start, + expected, + || { + if crate::unicode_keystroke::is_secure_input_enabled() { return None; } - caret_offset_from_location(range.location).map(|offset| (offset, range.length)) - }) - }, - || { - if started.elapsed() >= Duration::from_secs(10) { - return false; - } - std::thread::sleep(Duration::from_millis(10)); - true - }, + // SAFETY: self retains the original control on this worker. + unsafe { copy_selected_range(self.element) }.and_then(|range| { + if range.length < 0 { + return None; + } + caret_offset_from_location(range.location) + .map(|offset| (offset, range.length)) + }) + }, + || started.elapsed(), + || std::thread::sleep(Duration::from_millis(10)), + ), + }; + log::info!( + "[insertion] final keyboard delivery outcome={outcome:?} elapsed_ms={}", + started.elapsed().as_millis() ); - if outcome == KeyboardDeliveryOutcome::TimedOut { - log::warn!( - "[insertion] target caret did not acknowledge posted keyboard input within 10s" - ); - } - outcome == KeyboardDeliveryOutcome::Delivered + outcome } } @@ -468,118 +479,250 @@ impl Drop for KeyboardDelivery { } } -#[derive(Debug, PartialEq, Eq)] -enum KeyboardDeliveryOutcome { +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum KeyboardDeliveryOutcome { Delivered, Unavailable, + NoProgress, TimedOut, } +const DELIVERY_NO_PROGRESS_BUDGET: Duration = Duration::from_millis(250); +const DELIVERY_TOTAL_BUDGET: Duration = Duration::from_secs(10); + +#[derive(Debug, PartialEq, Eq)] +enum DeliveryExpectation { + NothingPosted, + Unavailable, + Caret { start: usize, expected: usize }, +} + +/// Pure accounting, independent of AX ownership. A terminal capture cannot +/// substitute for this cumulative offset: previously posted keys may still queue. +#[derive(Debug)] +struct KeyboardDeliveryProgress { + start: Option, + expected: Option, + posted: bool, +} + +impl KeyboardDeliveryProgress { + fn new(start: Option) -> Self { + Self { + start, + expected: start, + posted: false, + } + } + + fn record_posted(&mut self, text: &str, newline_mode: crate::types::MacosNewlineMode) { + let mut units = 0usize; + for ch in text.chars().filter(|ch| *ch != '\r') { + self.posted = true; + units = units.saturating_add(ch.len_utf16()); + if ch == '\n' && newline_mode == crate::types::MacosNewlineMode::Return { + // A submitting Return can clear the field or move focus. Keep + // its keys, but never wait for a monotonically increasing caret. + self.expected = None; + } + } + self.expected = self.expected.and_then(|offset| offset.checked_add(units)); + } + + fn expected(&self) -> DeliveryExpectation { + if !self.posted { + return DeliveryExpectation::NothingPosted; + } + match (self.start, self.expected) { + (Some(start), Some(expected)) => DeliveryExpectation::Caret { start, expected }, + _ => DeliveryExpectation::Unavailable, + } + } +} + fn wait_for_caret_delivery( start: usize, - posted_text: &str, + expected: usize, mut read: impl FnMut() -> Option<(usize, isize)>, - mut wait: impl FnMut() -> bool, + mut elapsed: impl FnMut() -> Duration, + mut pause: impl FnMut(), ) -> KeyboardDeliveryOutcome { - // AX offsets count UTF-16 units. CR is consumed without posting a key. - let units = posted_text - .chars() - .filter(|ch| *ch != '\r') - .map(char::len_utf16) - .sum(); - if units == 0 { - return KeyboardDeliveryOutcome::Delivered; - } - let Some(expected) = start.checked_add(units) else { - return KeyboardDeliveryOutcome::Unavailable; - }; + let mut high_water = start; + let mut last_progress = Duration::ZERO; loop { + let now = elapsed(); + if now >= DELIVERY_TOTAL_BUDGET { + return KeyboardDeliveryOutcome::TimedOut; + } + if now.saturating_sub(last_progress) >= DELIVERY_NO_PROGRESS_BUDGET { + return KeyboardDeliveryOutcome::NoProgress; + } let Some((offset, selected_length)) = read() else { return KeyboardDeliveryOutcome::Unavailable; }; + let now = elapsed(); + if now >= DELIVERY_TOTAL_BUDGET { + return KeyboardDeliveryOutcome::TimedOut; + } if selected_length == 0 && offset >= expected { return KeyboardDeliveryOutcome::Delivered; } - if !wait() { - return KeyboardDeliveryOutcome::TimedOut; + if offset > high_water { + high_water = offset; + last_progress = now; + } + if now.saturating_sub(last_progress) >= DELIVERY_NO_PROGRESS_BUDGET { + return KeyboardDeliveryOutcome::NoProgress; } + pause(); } } #[cfg(test)] mod keyboard_delivery_tests { use super::*; + use crate::types::MacosNewlineMode; + use std::cell::Cell; + + #[test] + fn cumulative_receipt_counts_only_posted_unicode_and_ignores_swallowed_cr() { + let mut progress = KeyboardDeliveryProgress::new(Some(7)); + assert_eq!(progress.expected(), DeliveryExpectation::NothingPosted); + progress.record_posted("A🙂\r", MacosNewlineMode::ShiftReturn); + progress.record_posted("\n界", MacosNewlineMode::ShiftReturn); + assert_eq!( + progress.expected(), + DeliveryExpectation::Caret { + start: 7, + expected: 12 + } + ); + } + + #[test] + fn submitting_return_and_unknown_offsets_keep_posted_input_fallback() { + let mut progress = KeyboardDeliveryProgress::new(Some(5)); + progress.record_posted("first", MacosNewlineMode::Return); + progress.record_posted("\nsecond", MacosNewlineMode::Return); + progress.record_posted("more", MacosNewlineMode::Return); + assert_eq!(progress.expected(), DeliveryExpectation::Unavailable); + let mut unknown = KeyboardDeliveryProgress::new(None); + unknown.record_posted("text", MacosNewlineMode::ShiftReturn); + assert_eq!(unknown.expected(), DeliveryExpectation::Unavailable); + let mut cr = KeyboardDeliveryProgress::new(None); + cr.record_posted("\r", MacosNewlineMode::Return); + assert_eq!(cr.expected(), DeliveryExpectation::NothingPosted); + } #[test] - fn posted_input_waits_until_target_consumes_the_last_character() { - // A selected range / intermediate caret is not an insertion receipt. + fn delivery_offset_overflow_does_not_wrap_into_a_false_receipt() { + let mut progress = KeyboardDeliveryProgress::new(Some(usize::MAX)); + progress.record_posted("x", MacosNewlineMode::ShiftReturn); + assert_eq!(progress.expected(), DeliveryExpectation::Unavailable); + } + + #[test] + fn final_delivery_waits_for_the_cumulative_end_not_a_selected_range() { let mut samples = [(120, 20), (101, 0), (119, 0), (120, 0)].into_iter(); - let mut waits = 0; + let clock = Cell::new(Duration::ZERO); assert_eq!( wait_for_caret_delivery( 100, - &"字".repeat(20), + 120, || samples.next(), - || { - waits += 1; - true - } + || clock.get(), + || clock.set(clock.get() + Duration::from_millis(10)) ), KeyboardDeliveryOutcome::Delivered ); - assert_eq!(waits, 3); + assert_eq!(clock.get(), Duration::from_millis(30)); } #[test] - fn unavailable_or_stalled_targets_do_not_wait_forever() { + fn stale_readable_caret_stops_after_short_no_progress_budget() { + let clock = Cell::new(Duration::ZERO); assert_eq!( wait_for_caret_delivery( - 0, - "input", - || None, - || panic!("unavailable target must stop") + 100, + 120, + || Some((100, 0)), + || clock.get(), + || clock.set(clock.get() + Duration::from_millis(10)) ), - KeyboardDeliveryOutcome::Unavailable + KeyboardDeliveryOutcome::NoProgress ); - let mut waits = 0; + assert_eq!(clock.get(), DELIVERY_NO_PROGRESS_BUDGET); + } + + #[test] + fn progressing_target_can_take_longer_than_one_no_progress_budget() { + let clock = Cell::new(Duration::ZERO); + let offset = Cell::new(0); assert_eq!( wait_for_caret_delivery( 0, - "input", - || Some((3, 0)), + 5, || { - waits += 1; - waits < 3 - } + offset.set(offset.get() + 1); + Some((offset.get(), 0)) + }, + || clock.get(), + || clock.set(clock.get() + Duration::from_millis(200)) ), - KeyboardDeliveryOutcome::TimedOut + KeyboardDeliveryOutcome::Delivered ); - assert_eq!(waits, 3); + assert_eq!(clock.get(), Duration::from_millis(800)); } #[test] - fn unicode_and_crlf_wait_for_the_actual_utf16_end() { - let mut samples = [(11, 0), (12, 0)].into_iter(); - let mut waits = 0; + fn even_progressing_targets_have_a_hard_deadline() { + let clock = Cell::new(Duration::ZERO); + let offset = Cell::new(0); assert_eq!( wait_for_caret_delivery( - 7, - "A🙂\r\n界", - || samples.next(), + 0, + usize::MAX, || { - waits += 1; - true - } + offset.set(offset.get() + 1); + Some((offset.get(), 0)) + }, + || clock.get(), + || clock.set(clock.get() + Duration::from_millis(100)) ), - KeyboardDeliveryOutcome::Delivered + KeyboardDeliveryOutcome::TimedOut ); + assert_eq!(clock.get(), DELIVERY_TOTAL_BUDGET); + } + + #[test] + fn unavailable_range_never_waits() { assert_eq!( - waits, 1, - "must neither stop at a scalar offset nor wait for swallowed CR" + wait_for_caret_delivery( + 0, + 5, + || None, + || Duration::ZERO, + || panic!("unavailable target must not wait") + ), + KeyboardDeliveryOutcome::Unavailable ); + } + + #[test] + fn a_slow_ax_read_cannot_extend_the_total_deadline() { + let clock = Cell::new(Duration::ZERO); assert_eq!( - wait_for_caret_delivery(7, "\r", || panic!("no keys were posted"), || false), - KeyboardDeliveryOutcome::Delivered + wait_for_caret_delivery( + 0, + 5, + || { + clock.set(DELIVERY_TOTAL_BUDGET); + Some((5, 0)) + }, + || clock.get(), + || panic!("deadline already elapsed"), + ), + KeyboardDeliveryOutcome::TimedOut ); } } diff --git a/openless-all/app/src-tauri/src/host_document/mod.rs b/openless-all/app/src-tauri/src/host_document/mod.rs index ab011509a..d6670a2fb 100644 --- a/openless-all/app/src-tauri/src/host_document/mod.rs +++ b/openless-all/app/src-tauri/src/host_document/mod.rs @@ -29,7 +29,7 @@ mod macos; #[cfg(target_os = "macos")] -pub(crate) use macos::KeyboardDelivery; +pub(crate) use macos::{KeyboardDelivery, KeyboardDeliveryOutcome}; // `minimal_edit` 目前只有 macOS 的观察回调在用,非 macOS 构建下没有消费方。 #[allow(unused_imports)] diff --git a/openless-all/app/src-tauri/src/lib.rs b/openless-all/app/src-tauri/src/lib.rs index 534fcf7d8..48b09e5b8 100644 --- a/openless-all/app/src-tauri/src/lib.rs +++ b/openless-all/app/src-tauri/src/lib.rs @@ -33,6 +33,8 @@ mod core_adapters; mod correction; #[cfg(target_os = "macos")] mod macos_dictation_key; +#[cfg(target_os = "macos")] +mod macos_streaming_input; mod qa_adapter; mod tauri_coordinator_host; // 托盘麦克风设备变更监听:macOS CoreAudio / Windows MMDevice 原生通知(空闲零唤醒), @@ -121,6 +123,8 @@ const OPENLESS_BUNDLE_ID: &str = "com.openless.app"; /// 第一次 show 时把 QA 浮窗摆到屏幕底部居中;之后的 show 不再 reposition, /// 让用户拖动后的位置在 hide → show 之间得以保持。详见 issue #118 v2。 static QA_WINDOW_POSITIONED: AtomicBool = AtomicBool::new(false); +#[cfg(target_os = "macos")] +static LESS_COMPUTER_WINDOW_POSITIONED: AtomicBool = AtomicBool::new(false); /// 聊天面板退场动画的世代计数:hide 先发 `chat-panel:closing` 让前端播 220ms /// 退场动画、240ms 后才真正 hide;期间再次 show 会推进世代,作废挂起的 hide。 static QA_PANEL_EPOCH: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); @@ -238,6 +242,26 @@ macro_rules! app_invoke_handler_desktop { commands::cloud_sync_upload, commands::cloud_sync_restore, commands::cloud_sync_delete, + commands::cloud_sync_e2ee_status, + commands::cloud_sync_e2ee_claim_setup_prompt, + commands::cloud_sync_e2ee_prepare_enable, + commands::cloud_sync_e2ee_create, + commands::cloud_sync_e2ee_unlock, + commands::cloud_sync_e2ee_lock, + commands::cloud_sync_e2ee_set_enabled, + commands::cloud_sync_e2ee_sync_now, + commands::cloud_sync_e2ee_cancel, + commands::cloud_sync_e2ee_preview_restore, + commands::cloud_sync_e2ee_apply_restore, + commands::cloud_sync_e2ee_change_password, + commands::cloud_sync_e2ee_delete_remote, + commands::cloud_sync_e2ee_sign_out, + commands::cloud_sync_e2ee_begin_sign_in, + commands::cloud_sync_e2ee_poll_sign_in, + commands::cloud_sync_e2ee_cancel_sign_in, + commands::cloud_sync_e2ee_get_ui_preferences, + commands::cloud_sync_e2ee_get_ui_preferences_snapshot, + commands::cloud_sync_e2ee_set_ui_preferences_checked, commands::marketplace_logout, commands::list_vocab, commands::add_vocab, @@ -329,6 +353,8 @@ macro_rules! app_invoke_handler_desktop { commands::set_quick_note_hotkey, commands::set_style_pack_hotkeys, commands::qa_window_dismiss, + commands::qa_window_set_expanded, + commands::qa_get_snapshot, commands::qa_toggle_recording, commands::qa_submit_text, commands::qa_set_edit_instruction_mode, @@ -488,6 +514,26 @@ macro_rules! app_invoke_handler_mobile { $crate::commands::cloud_sync_upload, $crate::commands::cloud_sync_restore, $crate::commands::cloud_sync_delete, + $crate::commands::cloud_sync_e2ee_status, + $crate::commands::cloud_sync_e2ee_claim_setup_prompt, + $crate::commands::cloud_sync_e2ee_prepare_enable, + $crate::commands::cloud_sync_e2ee_create, + $crate::commands::cloud_sync_e2ee_unlock, + $crate::commands::cloud_sync_e2ee_lock, + $crate::commands::cloud_sync_e2ee_set_enabled, + $crate::commands::cloud_sync_e2ee_sync_now, + $crate::commands::cloud_sync_e2ee_cancel, + $crate::commands::cloud_sync_e2ee_preview_restore, + $crate::commands::cloud_sync_e2ee_apply_restore, + $crate::commands::cloud_sync_e2ee_change_password, + $crate::commands::cloud_sync_e2ee_delete_remote, + $crate::commands::cloud_sync_e2ee_sign_out, + $crate::commands::cloud_sync_e2ee_begin_sign_in, + $crate::commands::cloud_sync_e2ee_poll_sign_in, + $crate::commands::cloud_sync_e2ee_cancel_sign_in, + $crate::commands::cloud_sync_e2ee_get_ui_preferences, + $crate::commands::cloud_sync_e2ee_get_ui_preferences_snapshot, + $crate::commands::cloud_sync_e2ee_set_ui_preferences_checked, $crate::commands::marketplace_logout, $crate::commands::list_vocab, $crate::commands::add_vocab, @@ -504,6 +550,8 @@ macro_rules! app_invoke_handler_mobile { $crate::commands::stop_dictation, $crate::commands::cancel_dictation, $crate::commands::qa_window_dismiss, + $crate::commands::qa_window_set_expanded, + $crate::commands::qa_get_snapshot, $crate::commands::qa_toggle_recording, $crate::commands::qa_submit_text, $crate::commands::qa_set_edit_instruction_mode, @@ -553,13 +601,8 @@ fn run_desktop() { #[cfg(not(target_os = "windows"))] let coordinator = Arc::new(coordinator::Coordinator::new()); let core_backend = coordinator.backend(); - // 启动时把偏好里的 active ASR 同步进凭据库;get_credentials 按凭据库的 active 渠道取密钥。 - let startup_active_asr = core_backend.get_preferences().active_asr_provider; - if !startup_active_asr.is_empty() { - if let Err(error) = commands::sync_active_asr_provider_to_vault(&startup_active_asr) { - log::warn!("[startup] sync active ASR provider from preferences failed: {error}"); - } - } + // Runtime effects and active-provider mirroring follow Core startup/recovery + // in tauri_events::start; pending restore must not mutate the old vault here. let builder = tauri::Builder::default(); // macOS:胶囊要叠到别的 app 的全屏 Space 之上,必须是「非激活 NSPanel」(普通 // NSWindow 即便设 collectionBehavior 也做不到 —— tauri#9556 / #11488)。下面 setup 里 @@ -589,7 +632,8 @@ fn run_desktop() { .try_state::>() .map(|s| Arc::clone(&*s)) { - if coordinator.backend().get_preferences().start_minimized { + if coordinator.startup_error().is_none() + && coordinator.backend().get_preferences().start_minimized { log::info!( "[single-instance] start_minimized=true → skipping show on relaunch" ); @@ -622,20 +666,6 @@ fn run_desktop() { init_file_logger(); log::info!("=== OpenLess 启动 ==="); - #[cfg(target_os = "windows")] - { - let target = openless_core::WindowsKeyboardRuntimeTarget::from( - &coordinator.backend().get_preferences(), - ); - if let Err(err) = crate::windows_ime_profile::apply_windows_openless_keyboard_list( - target.openless_language_profile_enabled, - ) { - log::warn!( - "[windows-ime] apply keyboard list visibility pref on startup failed: {err}" - ); - } - } - // Capsule 启动时定位到屏幕底部居中并隐藏;coordinator 按需显示。 // 与 Swift `CapsuleWindowController.repositionToBottomCenter` 同语义。 if let Some(capsule) = app.get_webview_window("capsule") { @@ -691,9 +721,9 @@ fn run_desktop() { let _ = capsule.hide(); } - // QA / Less Computer / glow 浮窗改为懒创建(不再在 tauri.conf.json eager 声明): + // QA / Less Computer 浮窗懒创建(不在 tauri.conf.json eager 声明): // 用到时才 build(ensure_qa_window / ensure_less_computer_window / - // ensure_less_computer_glow_window),idle 时根本没有它们的 WebKit 进程 —— + // ensure_less_computer_window),idle 时没有额外的 WebKit 进程 —— // 省 3 个常驻 webview。定位 + QA 拖拽修复在创建/show 路径里补。 // 主窗口磨砂:macOS 用 NSVisualEffectView,Windows 用 Mica。 @@ -739,8 +769,8 @@ fn run_desktop() { // 于 prefs。 let force_show = std::env::var("OPENLESS_SHOW_MAIN_ON_START").ok().as_deref() == Some("1"); - let suppress_show = - !force_show && coordinator.backend().get_preferences().start_minimized; + let suppress_show = !force_show && coordinator.startup_error().is_none() + && coordinator.backend().get_preferences().start_minimized; if suppress_show { log::info!("[main] start_minimized=true → 跳过初始 show,等用户点托盘"); } else { @@ -849,12 +879,15 @@ fn run_desktop() { log::warn!("[startup] default window icon missing; tray icon disabled"); } - // Spin up hotkey listener; coordinator owns the lifecycle. + // Bind recovery effects before Core startup; the Ready handler + // starts hotkey supervisors once the recovery fence is clear. let app_handle = app.handle().clone(); coordinator.tauri_host().bind(app_handle); - coordinator.sync_capsule_style_from_preferences(); + coordinator.bind_restore_runtime_effects()?; + if core_backend.ensure_runtime_ready().is_ok() { + coordinator.sync_capsule_style_from_preferences(); + } crate::tauri_events::start(app.handle().clone(), Arc::clone(&core_backend)); - coordinator.start_hotkey_listener(); // QA / custom combo hotkeys use `global-hotkey` (Carbon on macOS). // Start those after RunEvent::Ready, when the AppKit event loop is live. if std::env::var("OPENLESS_SHOW_MAIN_ON_START").ok().as_deref() == Some("1") { @@ -877,19 +910,7 @@ fn run_desktop() { .run(|app, event| match event { RunEvent::Ready => { let coordinator = app.state::>(); - // 同步启动 QA hotkey listener。和 dictation hotkey 平行,互不抢状态。 - coordinator.start_qa_hotkey_listener(); - coordinator.start_selection_polish_hotkey_listener(); - // 选区语音复用选区润色热键,不再单独注册 voice hotkey。 - // 启动「快速 Agent」双热键监听(功能默认关闭,启用后才注册)。 - coordinator.start_coding_agent_hotkey_listener(); - // 启动自定义组合键监听器。当 trigger == Custom 时替代 modifier-only 监听器。 - coordinator.start_combo_hotkey_listener(); - coordinator.start_translation_hotkey_listener(); - coordinator.start_switch_style_hotkey_listener(); - coordinator.start_open_app_hotkey_listener(); - coordinator.start_quick_note_hotkey_listener(); - coordinator.start_style_pack_hotkey_listeners(); + coordinator.start_hotkey_supervisors_when_ready(); } #[cfg(target_os = "macos")] RunEvent::Reopen { .. } => show_main_window(app), @@ -1945,14 +1966,13 @@ fn wait_for_app_activation(app: &AppHandle) { #[cfg(not(target_os = "macos"))] fn wait_for_app_activation(_app: &AppHandle) {} -/// QA 浮窗的目标尺寸(issue #118;统一聊天面板后与 Less Computer 同尺寸)。 -/// 窗口固定大小,内容在面板内部的 MessageScroller 里滚动。 -const QA_WINDOW_WIDTH: f64 = 420.0; -const QA_WINDOW_HEIGHT: f64 = 540.0; +/// QA starts as a small composer and grows downwards after a question. +const QA_WINDOW_WIDTH: f64 = 480.0; +const QA_WINDOW_HEIGHT: f64 = 80.0; +const QA_WINDOW_EXPANDED_HEIGHT: f64 = 560.0; /// 胶囊与 QA 窗口的间距,与设计稿一致。 const QA_WINDOW_GAP_TO_CAPSULE: f64 = 8.0; /// 给 macOS Dock 留的下边距(与 capsule 同源)。 -const DOCK_BOTTOM_PADDING_FOR_QA: f64 = 80.0; #[derive(Clone, Copy, Debug, PartialEq)] struct LogicalMonitorFrame { @@ -2149,6 +2169,23 @@ fn floating_window_monitor_frame( ))) } +/// First presentation may follow the pointer; resizing an existing chat stays +/// on its own monitor. Work areas exclude the Dock/menu bar/taskbar. +fn chat_window_work_area(window: &tauri::WebviewWindow, initial: bool) -> tauri::Result> { + #[cfg(target_os = "macos")] + if initial { + if let Some(target) = capsule_target_monitor(window) { + return Ok(Some((target.logical_work_area(), target.scale.max(0.1)))); + } + } + #[cfg(not(target_os = "macos"))] + let _ = initial; + let Some(monitor) = window.current_monitor()? else { return Ok(None); }; + let area = monitor.work_area(); + let scale = monitor.scale_factor().max(0.1); + Ok(Some((logical_monitor_frame(area.position.x, area.position.y, area.size.width, area.size.height, scale), scale))) +} + #[cfg(target_os = "macos")] fn macos_mouse_cursor_point() -> Option<(f64, f64)> { macos_capsule_ax::mouse_cursor_point() @@ -2429,18 +2466,39 @@ fn clamp_to_monitor( /// 把 QA 浮窗放到屏幕底部居中、紧贴胶囊上方。tauri 启动期 + show 之前都会调一次, /// 防止用户切换显示器后位置错乱。 fn position_qa_window(window: &tauri::WebviewWindow) -> tauri::Result<()> { - let Some(frame) = floating_window_monitor_frame(window)? else { + let Some((frame, scale)) = chat_window_work_area(window, true)? else { return Ok(()); }; let capsule_height = capsule_height_for_qa(); let (x, y) = bottom_center_position( frame, QA_WINDOW_WIDTH, - QA_WINDOW_HEIGHT, - DOCK_BOTTOM_PADDING_FOR_QA + capsule_height + QA_WINDOW_GAP_TO_CAPSULE, + QA_WINDOW_EXPANDED_HEIGHT, + capsule_height + QA_WINDOW_GAP_TO_CAPSULE, ); - window.set_size(tauri::LogicalSize::new(QA_WINDOW_WIDTH, QA_WINDOW_HEIGHT))?; - window.set_position(LogicalPosition::new(x, y))?; + window.set_position(tauri::PhysicalPosition::new((x * scale).round() as i32, (y * scale).round() as i32))?; + window.set_size(tauri::PhysicalSize::new((QA_WINDOW_WIDTH * scale).round() as u32, (QA_WINDOW_HEIGHT * scale).round() as u32))?; + Ok(()) +} + +/// Called on the native main thread by the restricted QA command. The compact +/// state has a genuinely small native frame, so hidden content cannot eat clicks. +pub(crate) fn set_qa_window_expanded(app: &AppHandle, expanded: bool) -> Result<(), String> { + let window = app.get_webview_window("qa").ok_or_else(|| "qa_window_unavailable".to_string())?; + let area = chat_window_work_area(&window, false).map_err(|_| "qa_geometry_unavailable")?; + let scale = area.map(|(_, scale)| scale).unwrap_or(window.scale_factor().map_err(|_| "qa_geometry_unavailable")?); + let position = window.inner_position().map_err(|_| "qa_geometry_unavailable")?.to_logical::(scale); + let mut width = QA_WINDOW_WIDTH; + let mut height = if expanded { QA_WINDOW_EXPANDED_HEIGHT } else { QA_WINDOW_HEIGHT }; + let (mut x, mut y) = (position.x, position.y); + if let Some((frame, _)) = area { + width = width.min((frame.width - 32.0).max(240.0)); + height = height.min((frame.height - 64.0).max(QA_WINDOW_HEIGHT)); + x = x.clamp(frame.x + 16.0, (frame.x + frame.width - width - 16.0).max(frame.x + 16.0)); + y = y.clamp(frame.y + 32.0, (frame.y + frame.height - height - 16.0).max(frame.y + 32.0)); + } + window.set_position(tauri::PhysicalPosition::new((x * scale).round() as i32, (y * scale).round() as i32)).map_err(|_| "qa_position_failed")?; + window.set_size(tauri::PhysicalSize::new((width * scale).round() as u32, (height * scale).round() as u32)).map_err(|_| "qa_resize_failed")?; Ok(()) } @@ -2559,8 +2617,15 @@ fn make_chat_window_panel_macos(window: &tauri::WebviewWindow use tauri_nspanel::WebviewWindowExt; match window.to_panel() { Ok(panel) => { - const NS_NONACTIVATING_PANEL_MASK: i32 = 1 << 7; - panel.set_style_mask(NS_NONACTIVATING_PANEL_MASK); + use objc2::msg_send; + use objc2::runtime::AnyObject; + let raw = &*panel as *const _ as *mut AnyObject; + if !raw.is_null() { + unsafe { + let current: usize = msg_send![raw, styleMask]; + let _: () = msg_send![raw, setStyleMask: current | (1usize << 7)]; + } + } // 浮层级别(NSFloatingWindowLevel):盖普通窗口,不盖菜单栏/胶囊(25)。 panel.set_level(3); panel.set_collection_behaviour( @@ -2690,7 +2755,8 @@ fn ensure_less_computer_window( .shadow(true) .always_on_top(true) .skip_taskbar(true) - .resizable(false) + .resizable(true) + .min_inner_size(760.0, 520.0) .focused(false) .visible(false) .accept_first_mouse(true) @@ -2703,6 +2769,7 @@ fn ensure_less_computer_window( let _ = app.run_on_main_thread(move || { make_chat_window_panel_macos(&w_clone, "less-computer"); make_chat_window_draggable_macos(&w_clone, "less-computer"); + LESS_COMPUTER_WINDOW_POSITIONED.store(false, Ordering::Relaxed); }); Some(w) } @@ -2732,7 +2799,8 @@ fn ensure_less_computer_window( .shadow(true) .always_on_top(true) .skip_taskbar(true) - .resizable(false) + .resizable(true) + .min_inner_size(760.0, 520.0) .focused(false) .visible(false) .build() @@ -2743,41 +2811,6 @@ fn ensure_less_computer_window( }) } -/// 懒创建 Less Computer glow 描边窗(macOS only)。shadow:false、无 acceptFirstMouse。 -/// 它的 level/collectionBehavior/ignore-mouse 在每次 show_less_computer_glow 里幂等设置, -/// 所以创建时不需要额外原生配置。 -#[cfg(target_os = "macos")] -fn ensure_less_computer_glow_window( - app: &AppHandle, -) -> Option> { - if let Some(w) = app.get_webview_window("less-computer-glow") { - return Some(w); - } - match WebviewWindowBuilder::new( - app, - "less-computer-glow", - WebviewUrl::App("index.html?window=less-computer-glow".into()), - ) - .title("OpenLess Less Computer Glow") - .inner_size(800.0, 600.0) - .decorations(false) - .transparent(true) - .shadow(false) - .always_on_top(true) - .skip_taskbar(true) - .resizable(false) - .focused(false) - .visible(false) - .build() - { - Ok(w) => Some(w), - Err(e) => { - log::warn!("[less-computer-glow] lazy window create failed: {e}"); - None - } - } -} - /// 带退场动画地隐藏聊天面板:先发 `chat-panel:closing` 让前端播退场动画, /// 240ms 后真正 hide。期间再次 show(epoch 前进)则作废本次挂起的 hide —— /// 避免「关的动画还没放完用户又唤起 → 窗口被旧定时器藏掉」。 @@ -3291,33 +3324,26 @@ pub(crate) fn hide_selection_voice_intent_prompt(_app: &AppHa // 操作仍按平台分支,macOS 的 NSWindow/AppKit 调整不能流入 Windows 构建。 // Linux 的产品窗口由 egui Host 接入,不在 Tauri 创建;不支持的平台保留 no-op。 -/// Less Computer 浮窗尺寸:与 QA 同款「统一聊天面板」固定大小 —— 窗口出现即 -/// 定死,内容只在面板内部的 MessageScroller 里滚动,不再按内容自适应缩放窗口。 +/// Less Computer defaults to a desktop workspace; users can resize it afterwards. #[cfg(any(target_os = "macos", target_os = "windows"))] -const LESS_COMPUTER_WINDOW_WIDTH: f64 = 420.0; +const LESS_COMPUTER_WINDOW_WIDTH: f64 = 990.0; #[cfg(any(target_os = "macos", target_os = "windows"))] -const LESS_COMPUTER_WINDOW_HEIGHT: f64 = 540.0; +const LESS_COMPUTER_WINDOW_HEIGHT: f64 = 680.0; -/// 把 Less Computer 浮窗(固定尺寸)摆到屏幕底部居中、紧贴胶囊上方。 +/// Position the initial workspace within the monitor; subsequent shows preserve user geometry. #[cfg(target_os = "macos")] fn position_less_computer_window( window: &tauri::WebviewWindow, ) -> tauri::Result<()> { - let Some(frame) = floating_window_monitor_frame(window)? else { + let Some((frame, scale)) = chat_window_work_area(window, true)? else { return Ok(()); }; - let capsule_height = capsule_height_for_qa(); - let (x, y) = bottom_center_position( - frame, - LESS_COMPUTER_WINDOW_WIDTH, - LESS_COMPUTER_WINDOW_HEIGHT, - DOCK_BOTTOM_PADDING_FOR_QA + capsule_height + QA_WINDOW_GAP_TO_CAPSULE, - ); - window.set_size(tauri::LogicalSize::new( - LESS_COMPUTER_WINDOW_WIDTH, - LESS_COMPUTER_WINDOW_HEIGHT, - ))?; - window.set_position(LogicalPosition::new(x, y))?; + let width = LESS_COMPUTER_WINDOW_WIDTH.min((frame.width - 32.0).max(760.0)); + let height = LESS_COMPUTER_WINDOW_HEIGHT.min((frame.height - 32.0).max(520.0)); + let x = frame.x + (frame.width - width).max(0.0) / 2.0; + let y = frame.y + (frame.height - height).max(0.0) / 2.0; + window.set_position(tauri::PhysicalPosition::new((x * scale).round() as i32, (y * scale).round() as i32))?; + window.set_size(tauri::PhysicalSize::new((width * scale).round() as u32, (height * scale).round() as u32))?; Ok(()) } @@ -3336,8 +3362,11 @@ pub(crate) fn show_less_computer_window(app: &AppHandle) { // voice Agent turn. Keep every AppKit-backed window mutation on the main // thread; macOS aborts the process if a converted NSPanel is resized or moved // from that worker while WebKit is servicing its custom URL scheme. - if let Err(e) = position_less_computer_window(&window_clone) { - log::warn!("[less-computer] position before show failed: {e}"); + if !LESS_COMPUTER_WINDOW_POSITIONED.load(Ordering::Relaxed) { + match position_less_computer_window(&window_clone) { + Ok(()) => LESS_COMPUTER_WINDOW_POSITIONED.store(true, Ordering::Relaxed), + Err(e) => log::warn!("[less-computer] position before show failed: {e}"), + } } // A lazily-created window starts with Tauri's visible=false state. Cocoa's // orderFrontRegardless alone does not always clear that state, leaving the first @@ -3393,88 +3422,8 @@ pub(crate) fn hide_less_computer_window(app: &AppHandle) { #[cfg(not(any(target_os = "macos", target_os = "windows")))] pub(crate) fn hide_less_computer_window(_app: &AppHandle) {} -/// 显示全屏彩虹描边浮层:盖满当前显示器、点击穿透、置顶。Agent 工作时点亮整屏边缘。 -#[cfg(target_os = "macos")] -pub(crate) fn show_less_computer_glow(app: &AppHandle) { - let Some(window) = ensure_less_computer_glow_window(app) else { - return; - }; - // 盖满胶囊所在的那块显示器(跟随鼠标光标,见 floating_window_monitor_frame), - // 含菜单栏/Dock 区域。frame 已是「逻辑坐标」—— Retina 上 monitor.size() 是物理像素(2x), - // 直接拿去 set_size 会把窗口铺成两倍、错位、不贴边。 - let frame = floating_window_monitor_frame(&window) - .ok() - .flatten() - .or_else(|| { - let monitor = app.primary_monitor().ok().flatten()?; - let size = monitor.size(); - let pos = monitor.position(); - Some(logical_monitor_frame( - pos.x, - pos.y, - size.width, - size.height, - monitor.scale_factor(), - )) - }); - if let Some(frame) = frame { - let _ = window.set_position(tauri::LogicalPosition::new(frame.x, frame.y)); - let _ = window.set_size(tauri::LogicalSize::new(frame.width, frame.height)); - } - // 点击穿透:纯视觉浮层,绝不拦截鼠标。 - let _ = window.set_ignore_cursor_events(true); - // issue #470:通知 glow 前端「可见」,恢复发光动画(隐藏时会 emit(false) 卸载发光层以释放 GPU)。 - let _ = window.emit("less-computer-glow:active", true); - let window_clone = window.clone(); - let app_for_reassert = app.clone(); - let _ = app.run_on_main_thread(move || { - use objc2::msg_send; - use objc2::runtime::AnyObject; - match window_clone.ns_window() { - Ok(handle) => { - let ns = handle as *mut AnyObject; - if ns.is_null() { - let _ = window_clone.show(); - } else { - unsafe { - // 抬到菜单栏(24)/Dock 之上,让描边能真正贴到屏幕最外缘(含顶部菜单栏区域)。 - let _: () = msg_send![ns, setLevel: 25i64]; - // 所有 Space 都显示、不参与窗口循环、全屏 app 上也叠加(273 = - // CanJoinAllSpaces|Stationary|FullScreenAuxiliary)。macOS 26 会在 - // 运行中把窗口从「全 Space 贴附」剥离且同值写入救不回(详见 - // show_capsule_window_no_activate 的重注册注释);glow show 频率低, - // 每次都走重注册序列:先以去掉 CanJoinAllSpaces 位的 272 上屏, - // 下一个 tick 再写 273 —— 可见状态下的位翻转才触发重新注册。 - let _: () = msg_send![ns, setCollectionBehavior: 272u64]; - let _: () = msg_send![ns, setIgnoresMouseEvents: true]; - let _: () = msg_send![ns, orderFrontRegardless]; - } - let window_for_reassert = window_clone.clone(); - std::thread::spawn(move || { - std::thread::sleep(std::time::Duration::from_millis(30)); - let _ = app_for_reassert.run_on_main_thread(move || { - let Ok(handle) = window_for_reassert.ns_window() else { - return; - }; - let ns = handle as *mut AnyObject; - if ns.is_null() { - return; - } - unsafe { - let _: () = msg_send![ns, setCollectionBehavior: 273u64]; - } - }); - }); - } - } - Err(_) => { - let _ = window_clone.show(); - } - } - }); -} - -#[cfg(not(target_os = "macos"))] +/// Less Computer presents work and recording feedback inside its panel. +/// Keep the host port callable without creating a full-screen glow WebView. pub(crate) fn show_less_computer_glow(_app: &AppHandle) {} /// 隐藏全屏彩虹描边浮层。 diff --git a/openless-all/app/src-tauri/src/macos_streaming_input.rs b/openless-all/app/src-tauri/src/macos_streaming_input.rs new file mode 100644 index 000000000..90c79696d --- /dev/null +++ b/openless-all/app/src-tauri/src/macos_streaming_input.rs @@ -0,0 +1,626 @@ +//! Serial macOS keyboard posting with one terminal AX delivery barrier. +//! +//! AX references are created, used and released on the worker thread. The +//! cloneable handle contains only channels and completion state, never raw AX +//! pointers. Once a write is queued, dropping its future does not revoke it; +//! callers must await `finish` before restoring TIS, including on cancellation. + +#![cfg(target_os = "macos")] + +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::{mpsc, Arc, OnceLock}; + +use openless_core::ports::InsertWriteResult; +use openless_core::{BackendError, BackendErrorCode}; +use parking_lot::Mutex; +use tokio::sync::{oneshot, Notify}; + +use crate::host_document::{KeyboardDelivery, KeyboardDeliveryOutcome}; +use crate::selection::SelectionInsertionTarget; +use crate::types::MacosNewlineMode; + +#[derive(Clone)] +pub(crate) struct MacStreamingInput { + inner: Arc, +} + +struct WorkerHandle { + // Taking the sender seals the queue atomically with respect to new writes. + commands: Mutex>>, + completion: Arc, + closed: Arc, +} + +enum Command { + Write { + text: String, + reply: oneshot::Sender>, + }, + Finish, +} + +#[derive(Default)] +struct Completion { + result: OnceLock>, + ready: Notify, +} + +impl Completion { + fn settle(&self, result: Result<(), BackendError>) { + if self.result.set(result).is_ok() { + self.ready.notify_waiters(); + } + } + + async fn wait(&self) -> Result<(), BackendError> { + loop { + let notified = self.ready.notified(); + if let Some(result) = self.result.get() { + return result.clone(); + } + notified.await; + } + } +} + +// A panic or an unexpectedly abandoned channel must wake all terminal waiters. +struct WorkerExit(Arc); + +impl Drop for WorkerExit { + fn drop(&mut self) { + self.0.settle(Err(worker_stopped())); + } +} + +impl Drop for WorkerHandle { + fn drop(&mut self) { + // Best effort cleanup when the last handle goes away. This cannot + // replace awaiting finish before restoring the caller's input source. + if let Some(sender) = self.commands.get_mut().take() { + if sender.send(Command::Finish).is_err() { + self.completion.settle(Err(worker_stopped())); + } + } + } +} + +impl MacStreamingInput { + pub(crate) fn spawn( + target: SelectionInsertionTarget, + newline_mode: MacosNewlineMode, + closed: Arc, + ) -> Result { + Self::spawn_with_backend( + move || NativeInput { + target, + newline_mode, + submitted_return: false, + }, + closed, + ) + } + + // B need not be Send: it is constructed and destroyed inside this thread. + fn spawn_with_backend( + create: impl FnOnce() -> B + Send + 'static, + closed: Arc, + ) -> Result { + let (sender, receiver) = mpsc::channel(); + let completion = Arc::new(Completion::default()); + let worker_completion = Arc::clone(&completion); + let worker_closed = Arc::clone(&closed); + std::thread::Builder::new() + .name("openless-macos-stream-input".into()) + .spawn(move || { + let _exit = WorkerExit(Arc::clone(&worker_completion)); + let mut input = InputState::new(create()); + let mut failed: Option = None; + while let Ok(command) = receiver.recv() { + match command { + Command::Write { text, reply } => { + let result = if let Some(error) = &failed { + Err(error.clone()) + } else { + input.write(&text, &worker_closed) + }; + match &result { + Err(error) => failed = Some(error.clone()), + Ok(result) if result.written_chars < text.chars().count() => { + failed = Some(BackendError::new( + BackendErrorCode::Platform, + "native keyboard insertion stopped after a partial write", + )); + } + _ => {} + } + // A dropped receiver does not abandon a committed + // native write or the terminal delivery barrier. + let _ = reply.send(result); + } + Command::Finish => break, + } + } + // Previous write failures were reported to Core already. Its + // clipboard reconciliation must still be able to finish cleanup. + let result = input.finish(); + worker_completion.settle(result); + }) + .map_err(|error| { + BackendError::new( + BackendErrorCode::Platform, + format!("start macOS streaming input worker: {error}"), + ) + })?; + Ok(Self { + inner: Arc::new(WorkerHandle { + commands: Mutex::new(Some(sender)), + completion, + closed, + }), + }) + } + + pub(crate) async fn write(&self, text: String) -> Result { + let (reply, receiver) = oneshot::channel(); + { + let commands = self.inner.commands.lock(); + if self.inner.closed.load(Ordering::Acquire) { + return Err(input_closed()); + } + let sender = commands.as_ref().ok_or_else(input_closed)?; + sender + .send(Command::Write { text, reply }) + .map_err(|_| worker_stopped())?; + } + receiver.await.map_err(|_| worker_stopped())? + } + + /// Seal writes, drain everything already posted, then confirm the cumulative + /// caret. Concurrent or cancelled finish callers share one terminal result. + /// The caller may set `closed` to cancel not-yet-started writes, but finish + /// itself does not cancel writes that were accepted before this barrier. + pub(crate) async fn finish(&self) -> Result<(), BackendError> { + { + if let Some(sender) = self.inner.commands.lock().take() { + if sender.send(Command::Finish).is_err() { + self.inner.completion.settle(Err(worker_stopped())); + } + } + } + self.inner.completion.wait().await + } +} + +fn input_closed() -> BackendError { + BackendError::new( + BackendErrorCode::Cancelled, + "macOS streaming insertion is closed", + ) +} + +fn worker_stopped() -> BackendError { + BackendError::new( + BackendErrorCode::Internal, + "macOS streaming input worker stopped", + ) +} + +/// Only native side effects are replaceable in tests; queueing, target guards, +/// prefix accounting and terminal ordering exercise the production code. +trait InputBackend { + type Delivery; + fn restore_target(&mut self) -> bool; + fn capture_delivery(&mut self) -> Option; + fn is_focused(&mut self, delivery: &Self::Delivery) -> bool; + fn post(&mut self, text: &str) -> usize; + fn record_posted(&mut self, delivery: &mut Self::Delivery, posted: &str); + fn finish_delivery(&mut self, delivery: Self::Delivery) -> Result<(), BackendError>; +} + +struct InputState { + backend: B, + captured: bool, + delivery: Option, +} + +impl InputState { + fn new(backend: B) -> Self { + Self { + backend, + captured: false, + delivery: None, + } + } + + fn write( + &mut self, + text: &str, + closed: &AtomicBool, + ) -> Result { + if closed.load(Ordering::Acquire) { + return Err(input_closed()); + } + if text.is_empty() { + return Ok(InsertWriteResult { written_chars: 0 }); + } + if !self.backend.restore_target() { + return Err(BackendError::new( + BackendErrorCode::Platform, + "original text insertion target is unavailable", + )); + } + if !self.captured { + self.delivery = self.backend.capture_delivery(); + self.captured = true; + } + if self + .delivery + .as_ref() + .is_some_and(|delivery| !self.backend.is_focused(delivery)) + { + return Err(BackendError::new( + BackendErrorCode::Platform, + "original text insertion control lost focus", + )); + } + // Restoring focus / AX capture can take time. A cancellation that won + // during those operations must not start posting a fresh batch. + if closed.load(Ordering::Acquire) { + return Err(input_closed()); + } + let written_chars = self.backend.post(text); + if let Some(delivery) = self.delivery.as_mut() { + let posted: String = text.chars().take(written_chars).collect(); + self.backend.record_posted(delivery, &posted); + } + Ok(InsertWriteResult { written_chars }) + } + + fn finish(mut self) -> Result<(), BackendError> { + match self.delivery.take() { + Some(delivery) => self.backend.finish_delivery(delivery), + None => Ok(()), + } + } +} + +struct NativeInput { + target: SelectionInsertionTarget, + newline_mode: MacosNewlineMode, + submitted_return: bool, +} + +impl InputBackend for NativeInput { + type Delivery = KeyboardDelivery; + + fn restore_target(&mut self) -> bool { + crate::selection::reactivate_selection_insertion_target(&self.target) + } + + fn capture_delivery(&mut self) -> Option { + KeyboardDelivery::capture() + } + + fn is_focused(&mut self, delivery: &Self::Delivery) -> bool { + // Explicit Return mode can submit/replace the focused control. Preserve + // its existing posted-input fallback after an actual submitting key; + // the original application check still runs before every later batch. + self.submitted_return || delivery.is_focused() + } + + fn post(&mut self, text: &str) -> usize { + match crate::unicode_keystroke::type_unicode_chunk_with_options(text, self.newline_mode) { + Ok(written) => written, + Err(error) => { + let written = error.typed_chars(); + log::warn!("[insertion] keyboard posting failed after {written} chars: {error}"); + written + } + } + } + + fn record_posted(&mut self, delivery: &mut Self::Delivery, posted: &str) { + delivery.record_posted(posted, self.newline_mode); + if self.newline_mode == MacosNewlineMode::Return && posted.contains('\n') { + self.submitted_return = true; + } + } + + fn finish_delivery(&mut self, delivery: Self::Delivery) -> Result<(), BackendError> { + let outcome = delivery.finish(); + if outcome != KeyboardDeliveryOutcome::Delivered { + log::warn!("[insertion] using posted-input completion; caret outcome={outcome:?}"); + } + // Unsupported/stalled AX targets already use posting completion. Never + // turn an unobservable caret into a retry/paste of text already sent. + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::rc::Rc; + use std::time::Duration; + + struct FakeInput { + events: mpsc::Sender, + restore: bool, + focused: bool, + observable: bool, + limit: usize, + post_gate: Option>, + finish_gate: Option>, + cancel_during_restore: Option>, + } + + impl FakeInput { + fn new(events: mpsc::Sender) -> Self { + Self { + events, + restore: true, + focused: true, + observable: true, + limit: usize::MAX, + post_gate: None, + finish_gate: None, + cancel_during_restore: None, + } + } + } + + // Rc deliberately makes the receipt !Send, like the real AX reference. + impl InputBackend for FakeInput { + type Delivery = (Rc<()>, String); + fn restore_target(&mut self) -> bool { + if let Some(closed) = &self.cancel_during_restore { + closed.store(true, Ordering::Release); + } + self.restore + } + fn capture_delivery(&mut self) -> Option { + self.events.send("capture".into()).unwrap(); + self.observable.then(|| (Rc::new(()), String::new())) + } + fn is_focused(&mut self, _: &Self::Delivery) -> bool { + self.focused + } + fn post(&mut self, text: &str) -> usize { + self.events.send(format!("post:{text}")).unwrap(); + if let Some(gate) = self.post_gate.take() { + gate.recv_timeout(Duration::from_secs(2)).unwrap(); + } + text.chars().count().min(self.limit) + } + fn record_posted(&mut self, delivery: &mut Self::Delivery, text: &str) { + delivery.1.push_str(text); + } + fn finish_delivery(&mut self, delivery: Self::Delivery) -> Result<(), BackendError> { + self.events.send(format!("ack:{}", delivery.1)).unwrap(); + if let Some(gate) = self.finish_gate.take() { + gate.recv_timeout(Duration::from_secs(2)).unwrap(); + } + self.events.send("finished".into()).unwrap(); + Ok(()) + } + } + + fn event(events: &mpsc::Receiver) -> String { + events.recv_timeout(Duration::from_secs(2)).unwrap() + } + + #[tokio::test] + async fn writes_do_not_wait_for_ack_and_finish_waits_for_the_combined_receipt() { + let (tx, events) = mpsc::channel(); + let (release, gate) = mpsc::channel(); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.finish_gate = Some(gate); + backend + }, + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + assert_eq!(input.write("A🙂".into()).await.unwrap().written_chars, 2); + assert_eq!(input.write("B".into()).await.unwrap().written_chars, 1); + assert_eq!(event(&events), "capture"); + assert_eq!(event(&events), "post:A🙂"); + assert_eq!(event(&events), "post:B"); + assert!(events.try_recv().is_err()); + let mut finish = std::pin::pin!(input.finish()); + assert!(futures_util::poll!(finish.as_mut()).is_pending()); + assert_eq!(event(&events), "ack:A🙂B"); + assert!(futures_util::poll!(finish.as_mut()).is_pending()); + release.send(()).unwrap(); + finish.await.unwrap(); + input.finish().await.unwrap(); + assert_eq!(event(&events), "finished"); + assert_eq!( + input.write("late".into()).await.unwrap_err().code, + BackendErrorCode::Cancelled + ); + } + + #[tokio::test] + async fn a_dropped_write_and_finish_future_do_not_abandon_queued_input() { + let (tx, events) = mpsc::channel(); + let (release, gate) = mpsc::channel(); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.post_gate = Some(gate); + backend + }, + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + { + let mut write = std::pin::pin!(input.write("committed".into())); + assert!(futures_util::poll!(write.as_mut()).is_pending()); + assert_eq!(event(&events), "capture"); + assert_eq!(event(&events), "post:committed"); + } + { + let mut finish = std::pin::pin!(input.finish()); + assert!(futures_util::poll!(finish.as_mut()).is_pending()); + } + release.send(()).unwrap(); + input.finish().await.unwrap(); + assert_eq!(event(&events), "ack:committed"); + assert_eq!(event(&events), "finished"); + } + + #[tokio::test] + async fn cancellation_rejects_queued_writes_but_drains_the_started_batch() { + let (tx, events) = mpsc::channel(); + let (release, gate) = mpsc::channel(); + let closed = Arc::new(AtomicBool::new(false)); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.post_gate = Some(gate); + backend + }, + Arc::clone(&closed), + ) + .unwrap(); + let mut first = std::pin::pin!(input.write("first".into())); + assert!(futures_util::poll!(first.as_mut()).is_pending()); + assert_eq!(event(&events), "capture"); + assert_eq!(event(&events), "post:first"); + let mut second = std::pin::pin!(input.write("cancelled".into())); + assert!(futures_util::poll!(second.as_mut()).is_pending()); + closed.store(true, Ordering::Release); + let mut finish = std::pin::pin!(input.finish()); + assert!(futures_util::poll!(finish.as_mut()).is_pending()); + release.send(()).unwrap(); + assert_eq!(first.await.unwrap().written_chars, 5); + assert_eq!(second.await.unwrap_err().code, BackendErrorCode::Cancelled); + finish.await.unwrap(); + assert_eq!(event(&events), "ack:first"); + assert_eq!(event(&events), "finished"); + } + + #[tokio::test] + async fn target_failure_prevents_posting_and_does_not_block_cleanup() { + for restore_failure in [true, false] { + let (tx, events) = mpsc::channel(); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.restore = !restore_failure; + backend.focused = false; + backend + }, + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + assert_eq!( + input.write("must not post".into()).await.unwrap_err().code, + BackendErrorCode::Platform + ); + input.finish().await.unwrap(); + assert!(events.try_iter().all(|event| !event.starts_with("post:"))); + } + } + + #[tokio::test] + async fn cancellation_during_target_restore_is_checked_before_posting() { + let (tx, events) = mpsc::channel(); + let closed = Arc::new(AtomicBool::new(false)); + let cancel = Arc::clone(&closed); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.cancel_during_restore = Some(cancel); + backend + }, + closed, + ) + .unwrap(); + assert_eq!( + input.write("must not post".into()).await.unwrap_err().code, + BackendErrorCode::Cancelled + ); + input.finish().await.unwrap(); + assert!(events.try_iter().all(|event| !event.starts_with("post:"))); + } + + #[tokio::test] + async fn unobservable_targets_keep_posting_fallback_without_recapturing() { + let (tx, events) = mpsc::channel(); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.observable = false; + backend + }, + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + input.write("one".into()).await.unwrap(); + input.write("two".into()).await.unwrap(); + input.finish().await.unwrap(); + assert_eq!( + events.try_iter().collect::>(), + ["capture", "post:one", "post:two"] + ); + } + + #[tokio::test] + async fn partial_writes_account_only_for_the_posted_prefix_and_stop_later_input() { + let (tx, events) = mpsc::channel(); + let input = MacStreamingInput::spawn_with_backend( + move || { + let mut backend = FakeInput::new(tx); + backend.limit = 2; + backend + }, + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + assert_eq!(input.write("A🙂B".into()).await.unwrap().written_chars, 2); + assert!(input.write("duplicate".into()).await.is_err()); + input.finish().await.unwrap(); + assert_eq!( + events.try_iter().collect::>(), + ["capture", "post:A🙂B", "ack:A🙂", "finished"] + ); + } + + #[tokio::test] + async fn last_handle_drop_closes_the_queue_and_drains_its_receipt() { + let (tx, events) = mpsc::channel(); + let input = MacStreamingInput::spawn_with_backend( + move || FakeInput::new(tx), + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + input.write("done".into()).await.unwrap(); + let completion = Arc::clone(&input.inner.completion); + drop(input); + completion.wait().await.unwrap(); + assert_eq!( + events.try_iter().collect::>(), + ["capture", "post:done", "ack:done", "finished"] + ); + } + + #[tokio::test] + async fn worker_start_panic_wakes_write_and_finish_waiters() { + let input = MacStreamingInput::spawn_with_backend( + || -> FakeInput { panic!("test worker initialization failure") }, + Arc::new(AtomicBool::new(false)), + ) + .unwrap(); + assert_eq!( + input.write("not posted".into()).await.unwrap_err().code, + BackendErrorCode::Internal + ); + assert_eq!( + input.finish().await.unwrap_err().code, + BackendErrorCode::Internal + ); + } +} diff --git a/openless-all/app/src-tauri/src/persistence/android_credentials.rs b/openless-all/app/src-tauri/src/persistence/android_credentials.rs index 83530f772..c6d17e1f4 100644 --- a/openless-all/app/src-tauri/src/persistence/android_credentials.rs +++ b/openless-all/app/src-tauri/src/persistence/android_credentials.rs @@ -124,6 +124,58 @@ fn open_envelope( .map_err(StoreError::Crypto) } +/// Inspect the last durable candidate without completing migrations or recovery. +/// Startup with an E2EE recovery marker must not rename, chmod, reset a key, +/// mark migration complete, or delete any envelope before its restore lease. +pub(super) fn read_only( + path: &Path, + crypto: &mut impl AndroidCredentialsCrypto, +) -> Result { + match fs::read(verified_v2_temporary_path(path)) { + Ok(bytes) => return open_envelope(&bytes, crypto).map(ReadOutcome::Plaintext), + Err(error) if error.kind() == io::ErrorKind::NotFound => {} + Err(error) => return Err(io_error("read verified recovery candidate", error)), + } + let bytes = match fs::read(path) { + Ok(bytes) if !bytes.is_empty() => Some(bytes), + Ok(_) => Some(Vec::new()), + Err(error) if error.kind() == io::ErrorKind::NotFound => None, + Err(error) => return Err(io_error("read without migration", error)), + }; + let bytes = if bytes.as_ref().is_none_or(Vec::is_empty) { + match fs::read(path.with_extension("legacy.tmp")) { + Ok(candidate) => candidate, + Err(error) if error.kind() == io::ErrorKind::NotFound => match bytes { + Some(bytes) => bytes, + None => return Ok(ReadOutcome::Missing), + }, + Err(error) => return Err(io_error("read legacy recovery candidate", error)), + } + } else { + bytes.ok_or(StoreError::InvalidEnvelope)? + }; + match bytes + .iter() + .copied() + .find(|byte| !byte.is_ascii_whitespace()) + { + Some(b'{') => open_envelope(&bytes, crypto).map(ReadOutcome::Plaintext), + Some(_) => { + if crypto.migration_complete().map_err(StoreError::Crypto)? { + return Err(StoreError::InvalidEnvelope); + } + let plaintext = base64::engine::general_purpose::STANDARD + .decode(&bytes) + .map_err(|_| StoreError::InvalidEnvelope)?; + if plaintext.is_empty() { + return Err(StoreError::InvalidEnvelope); + } + Ok(ReadOutcome::Legacy(plaintext)) + } + None => Err(StoreError::InvalidEnvelope), + } +} + pub(super) fn read( path: &Path, crypto: &mut impl AndroidCredentialsCrypto, @@ -746,6 +798,73 @@ mod tests { } } + #[test] + fn read_only_preserves_verified_candidates_and_invalidated_key_envelopes() { + let path = test_path("android-read-only-pending"); + let pending = verified_v2_temporary_path(&path); + let mut crypto = TestCrypto::default(); + write_verified(&path, b"old committed root", &mut crypto).unwrap(); + let old = fs::read(&path).unwrap(); + let sealed = crypto.seal(b"new verified root", ENVELOPE_AAD).unwrap(); + let candidate = envelope_for(&sealed).unwrap(); + fs::write(&pending, &candidate).unwrap(); + #[cfg(unix)] + { + fs::set_permissions(&path, fs::Permissions::from_mode(0o644)).unwrap(); + } + crypto.fail_next_mark_migration = Some(CryptoErrorKind::TemporarilyUnavailable); + assert_eq!( + read_only(&path, &mut crypto).unwrap(), + ReadOutcome::Plaintext(b"new verified root".to_vec()) + ); + assert!(crypto.fail_next_mark_migration.is_some()); + assert_eq!(fs::read(&path).unwrap(), old); + assert_eq!(fs::read(&pending).unwrap(), candidate); + #[cfg(unix)] + { + assert_eq!( + fs::metadata(&path).unwrap().permissions().mode() & 0o777, + 0o644 + ); + } + crypto.fail_next_open = Some(CryptoErrorKind::KeyMissingOrInvalidated); + assert!(matches!( + read_only(&path, &mut crypto), + Err(StoreError::Crypto(CryptoErrorKind::KeyMissingOrInvalidated)) + )); + assert_eq!(crypto.delete_key_calls, 0); + assert_eq!(fs::read(&path).unwrap(), old); + assert_eq!(fs::read(&pending).unwrap(), candidate); + fs::write(&pending, b"invalid candidate").unwrap(); + assert!(read_only(&path, &mut crypto).is_err()); + assert_eq!(fs::read(&path).unwrap(), old); + remove_test_parent(&path); + } + + #[test] + fn read_only_legacy_recovery_never_promotes_or_marks_a_source() { + let path = test_path("android-read-only-legacy"); + fs::create_dir_all(path.parent().unwrap()).unwrap(); + let candidate = path.with_extension("legacy.tmp"); + let bytes = base64::engine::general_purpose::STANDARD.encode(b"legacy root"); + fs::write(&candidate, &bytes).unwrap(); + let mut crypto = TestCrypto::default(); + assert_eq!( + read_only(&path, &mut crypto).unwrap(), + ReadOutcome::Legacy(b"legacy root".to_vec()) + ); + assert!(!path.exists()); + assert_eq!(fs::read(&candidate).unwrap(), bytes.as_bytes()); + assert!(!crypto.migration_complete().unwrap()); + crypto.mark_migration_complete().unwrap(); + assert!(matches!( + read_only(&path, &mut crypto), + Err(StoreError::InvalidEnvelope) + )); + assert!(candidate.exists()); + remove_test_parent(&path); + } + #[test] fn v2_round_trip_hides_plaintext() { let path = test_path("android-v2-round-trip"); diff --git a/openless-all/app/src-tauri/src/persistence/credentials.rs b/openless-all/app/src-tauri/src/persistence/credentials.rs index 645b61f07..2821bcf92 100644 --- a/openless-all/app/src-tauri/src/persistence/credentials.rs +++ b/openless-all/app/src-tauri/src/persistence/credentials.rs @@ -60,6 +60,9 @@ const RESERVED_EXTRA_HEADER_NAMES: &[&str] = &[ const KEYRING_CHUNK_MAX_UTF16_UNITS: usize = 1000; static CREDENTIALS_LOCK: OnceLock> = OnceLock::new(); +static SYNC_WRITE_GATE: OnceLock< + Mutex>>, +> = OnceLock::new(); // Keychain 访问节流:每进程只补写/扫描一次,避免重复授权弹窗。 #[cfg(not(target_os = "android"))] @@ -85,6 +88,367 @@ fn credentials_lock() -> &'static Mutex<()> { CREDENTIALS_LOCK.get_or_init(|| Mutex::new(())) } +fn sync_write_gate() -> Option> { + SYNC_WRITE_GATE + .get_or_init(|| Mutex::new(None)) + .lock() + .clone() +} + +fn install_sync_write_gate( + installed: &mut Option>, + gate: std::sync::Arc, +) -> Result<()> { + if let Some(current) = installed.as_ref() { + anyhow::ensure!( + std::sync::Arc::ptr_eq(current, &gate), + "credential vault already has a different encrypted sync gate" + ); + } else { + *installed = Some(gate); + } + Ok(()) +} + +fn sync_access_error( + error: openless_core::cloud_sync_e2ee_documents::DocumentError, +) -> anyhow::Error { + use openless_core::cloud_sync_e2ee_documents::DocumentError; + use openless_core::{BackendError, BackendErrorCode}; + let code = if error == DocumentError::SourceChanged { + BackendErrorCode::Busy + } else { + BackendErrorCode::OutcomeUnknown + }; + BackendError::new( + code, + if code == BackendErrorCode::Busy { + "credential store is busy with encrypted sync" + } else { + "credential store requires encrypted sync recovery" + }, + ) + .into() +} + +/// The lease precedes both the vault lock and the initial read. Cancellation of +/// the async caller cannot release it: this entire function runs in its worker. +fn mutate_credentials( + origin: openless_core::credentials::ChangeOrigin, + update: impl FnOnce(&mut CredsRoot) -> Result, +) -> Result<()> { + mutate_credentials_with( + sync_write_gate(), + origin, + load_credentials_for_update, + update, + save_credentials, + ) +} + +fn mutate_credentials_with( + gate: Option>, + origin: openless_core::credentials::ChangeOrigin, + load: impl FnOnce() -> Result, + update: impl FnOnce(&mut CredsRoot) -> Result, + persist: impl FnOnce(&CredsRoot) -> Result<()>, +) -> Result<()> { + let was_unbound = gate.is_none(); + let permit = gate + .map(|gate| gate.begin_mutation()) + .transpose() + .map_err(sync_access_error)?; + let _guard = credentials_lock().lock(); + // First binding may win the lock after this worker observed no gate. + // Such a worker must retry; it cannot write through a newly installed barrier. + if was_unbound && sync_write_gate().is_some() { + return Err(sync_access_error( + openless_core::cloud_sync_e2ee_documents::DocumentError::SourceChanged, + )); + } + let prepared = (|| -> Result<(CredsRoot, bool)> { + let mut root = load()?; + let changed = update(&mut root)?; + Ok((root, changed)) + })(); + let (root, changed) = match prepared { + Ok(result) => result, + Err(error) => { + if let Some(permit) = permit { + permit.abort_unmodified().map_err(sync_access_error)?; + } + return Err(error); + } + }; + if !changed { + if let Some(permit) = permit { + permit.abort_unmodified().map_err(sync_access_error)?; + } + return Ok(()); + } + if let Err(error) = persist(&root) { + // The chunked writer can prove that the old manifest never changed. + // Other native failures remain uncertain and intentionally retain intent. + if matches!( + error.downcast_ref::(), + Some(VaultCommitFailure::Unchanged) + ) { + if let Some(permit) = permit { + permit.abort_unmodified().map_err(sync_access_error)?; + } + } + return Err(error); + } + if let Some(permit) = permit { + permit.commit(origin).map_err(sync_access_error)?; + } + Ok(()) +} + +fn require_sync_exclusive(permit: &openless_core::credentials::ExclusivePermit) -> Result<()> { + let gate = sync_write_gate() + .ok_or_else(|| anyhow::anyhow!("encrypted sync credential gate is not bound"))?; + if !permit.belongs_to(&gate) { + anyhow::bail!("encrypted sync credential lease belongs to another gate"); + } + Ok(()) +} + +fn validate_sync_key(value: &openless_core::SecretValue) -> Result<()> { + use base64::Engine; + let encoded = value.expose_secret(); + anyhow::ensure!(encoded.len() == 43, "invalid encrypted sync key encoding"); + let decoded = zeroize::Zeroizing::new( + base64::engine::general_purpose::URL_SAFE_NO_PAD + .decode(encoded) + .map_err(|_| anyhow::anyhow!("invalid encrypted sync key encoding"))?, + ); + anyhow::ensure!( + decoded.len() == 32 + && base64::engine::general_purpose::URL_SAFE_NO_PAD.encode(&*decoded) == encoded, + "invalid encrypted sync key encoding" + ); + Ok(()) +} + +#[cfg(not(target_os = "android"))] +fn read_sync_secret_raw( + account: &openless_core::credentials::SyncSecretAccount, +) -> Result> { + get_keyring_password(account.as_str())? + .map(|raw| { + let value = openless_core::SecretValue::new(raw); + validate_sync_key(&value)?; + Ok(value) + }) + .transpose() +} + +#[cfg(not(target_os = "android"))] +fn write_sync_secret_raw( + account: &openless_core::credentials::SyncSecretAccount, + value: &openless_core::SecretValue, +) -> Result<()> { + set_keyring_password(account.as_str(), value.expose_secret()) +} + +#[cfg(not(target_os = "android"))] +fn remove_sync_secret_raw(account: &openless_core::credentials::SyncSecretAccount) -> Result<()> { + match keyring_entry_for(account.as_str())?.delete_credential() { + Ok(()) | Err(keyring::Error::NoEntry) => Ok(()), + Err(_) => anyhow::bail!("could not remove encrypted sync key from system credential store"), + } +} + +#[cfg(any(target_os = "android", test))] +struct SyncSecretCrypto { + inner: C, + account: String, +} + +#[cfg(any(target_os = "android", test))] +impl SyncSecretCrypto { + fn aad(&self, original: &[u8]) -> Vec { + let mut aad = b"openless-e2ee-local-keystore\0v1\0".to_vec(); + aad.extend_from_slice(self.account.as_bytes()); + aad.push(0); + aad.extend_from_slice(original); + aad + } +} + +#[cfg(any(target_os = "android", test))] +impl + super::android_credentials::AndroidCredentialsCrypto for SyncSecretCrypto +{ + fn seal( + &mut self, + plaintext: &[u8], + aad: &[u8], + ) -> std::result::Result< + super::android_credentials::SealedPayload, + super::android_credentials::CryptoErrorKind, + > { + self.inner.seal(plaintext, &self.aad(aad)) + } + fn open( + &mut self, + sealed: &super::android_credentials::SealedPayload, + aad: &[u8], + ) -> std::result::Result, super::android_credentials::CryptoErrorKind> { + self.inner.open(sealed, &self.aad(aad)) + } + fn delete_key( + &mut self, + ) -> std::result::Result<(), super::android_credentials::CryptoErrorKind> { + // This namespace never owns the provider vault's shared master key. + Ok(()) + } + fn migration_complete( + &mut self, + ) -> std::result::Result { + // Sync keys have never had a plaintext format. Reject downgrade without + // reading or modifying the provider vault's independent migration marker. + Ok(true) + } + fn mark_migration_complete( + &mut self, + ) -> std::result::Result<(), super::android_credentials::CryptoErrorKind> { + Ok(()) + } +} + +#[cfg(any(target_os = "android", test))] +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "camelCase", deny_unknown_fields)] +struct AndroidSyncKeyRecord { + version: u32, + account: String, + value: String, +} + +#[cfg(any(target_os = "android", test))] +impl Drop for AndroidSyncKeyRecord { + fn drop(&mut self) { + use zeroize::Zeroize; + self.value.zeroize(); + } +} + +#[cfg(any(target_os = "android", test))] +fn read_android_sync_key_with_crypto( + path: &Path, + account: &openless_core::credentials::SyncSecretAccount, + crypto: &mut impl super::android_credentials::AndroidCredentialsCrypto, +) -> Result> { + use super::android_credentials::ReadOutcome; + match std::fs::metadata(path) { + Ok(meta) => anyhow::ensure!( + meta.len() <= 16_384, + "encrypted sync key envelope exceeds limit" + ), + Err(error) if error.kind() == std::io::ErrorKind::NotFound => {} + Err(_) => anyhow::bail!("could not inspect encrypted sync key envelope"), + } + let bytes = match super::android_credentials::read(path, crypto) + .map_err(|_| anyhow::anyhow!("could not open Android Keystore sync key"))? + { + ReadOutcome::Missing => return Ok(None), + ReadOutcome::Legacy(mut bytes) => { + use zeroize::Zeroize; + bytes.zeroize(); + anyhow::bail!("legacy plaintext sync keys are not supported"); + } + ReadOutcome::Plaintext(bytes) => zeroize::Zeroizing::new(bytes), + }; + let mut record: AndroidSyncKeyRecord = serde_json::from_slice(&bytes) + .map_err(|_| anyhow::anyhow!("invalid encrypted sync key record"))?; + anyhow::ensure!( + record.version == 1 && record.account == account.as_str(), + "encrypted sync key binding mismatch" + ); + let value = openless_core::SecretValue::new(std::mem::take(&mut record.value)); + validate_sync_key(&value)?; + Ok(Some(value)) +} + +#[cfg(any(target_os = "android", test))] +fn write_android_sync_key_with_crypto( + path: &Path, + account: &openless_core::credentials::SyncSecretAccount, + value: &openless_core::SecretValue, + crypto: &mut impl super::android_credentials::AndroidCredentialsCrypto, +) -> Result<()> { + validate_sync_key(value)?; + let record = AndroidSyncKeyRecord { + version: 1, + account: account.as_str().into(), + value: value.expose_secret().into(), + }; + let bytes = zeroize::Zeroizing::new( + serde_json::to_vec(&record) + .map_err(|_| anyhow::anyhow!("cannot encode encrypted sync key record"))?, + ); + super::android_credentials::write_verified(path, &bytes, crypto) + .map_err(|_| anyhow::anyhow!("could not save Android Keystore sync key")) +} + +#[cfg(target_os = "android")] +fn android_sync_key_path( + account: &openless_core::credentials::SyncSecretAccount, +) -> Result { + let credential_path = android_credentials_path()?; + let parent = credential_path + .parent() + .context("Android credential directory is unavailable")?; + Ok(parent + .join("sync-secrets") + .join(format!("{}.json", account.as_str()))) +} + +#[cfg(target_os = "android")] +fn read_sync_secret_raw( + account: &openless_core::credentials::SyncSecretAccount, +) -> Result> { + let mut crypto = SyncSecretCrypto { + inner: super::android_credentials::AndroidKeystoreCrypto, + account: account.as_str().into(), + }; + read_android_sync_key_with_crypto(&android_sync_key_path(account)?, account, &mut crypto) +} + +#[cfg(target_os = "android")] +fn write_sync_secret_raw( + account: &openless_core::credentials::SyncSecretAccount, + value: &openless_core::SecretValue, +) -> Result<()> { + let mut crypto = SyncSecretCrypto { + inner: super::android_credentials::AndroidKeystoreCrypto, + account: account.as_str().into(), + }; + write_android_sync_key_with_crypto( + &android_sync_key_path(account)?, + account, + value, + &mut crypto, + ) +} + +#[cfg(target_os = "android")] +fn remove_sync_secret_raw(account: &openless_core::credentials::SyncSecretAccount) -> Result<()> { + let path = android_sync_key_path(account)?; + // Remove only this binding, never the shared non-exportable Keystore master key. + for item in [ + path.clone(), + path.with_extension("json.tmp"), + path.with_extension("json.pending"), + ] { + super::android_credentials::secure_remove(&item) + .map_err(|_| anyhow::anyhow!("could not remove Android sync key envelope"))?; + } + Ok(()) +} + #[cfg(target_os = "android")] fn android_marketplace_token() -> &'static Mutex> { ANDROID_MARKETPLACE_TOKEN.get_or_init(|| Mutex::new(None)) @@ -120,7 +484,13 @@ fn store_credentials_cache(root: &CredsRoot) { } fn record_vault_read_failure(error: &anyhow::Error) { - let chain = format!("{error:#}"); + // Serde errors may echo a malformed field's raw string (including a secret). + // Preserve native Keystore error categories while keeping payload diagnostics local. + let chain = if error.downcast_ref::().is_some() { + "credential payload could not be decoded".to_string() + } else { + format!("{error:#}") + }; *last_vault_read_error_slot().lock() = Some(chain.clone()); let mut logged = last_vault_read_error_logged_slot().lock(); if logged.as_deref() != Some(chain.as_str()) { @@ -240,6 +610,10 @@ fn creds_default_omni() -> String { #[derive(Debug, Serialize, Deserialize, Default, Clone)] #[allow(non_snake_case)] struct CredsOmniEntry { + #[serde(flatten)] + channel: ChannelMeta, + #[serde(skip_serializing_if = "Option::is_none")] + displayName: Option, #[serde(skip_serializing_if = "Option::is_none")] apiKey: Option, #[serde(skip_serializing_if = "Option::is_none")] @@ -254,6 +628,9 @@ struct CredsOmniEntry { impl CredsOmniEntry { fn is_empty(&self) -> bool { + if self.channel.providerType.is_some() { + return false; + } self.apiKey.as_deref().unwrap_or("").is_empty() && self.baseURL.as_deref().unwrap_or("").is_empty() && self.model.as_deref().unwrap_or("").is_empty() @@ -1180,6 +1557,63 @@ fn mark_marketplace_token_verified() { MARKETPLACE_TOKEN_REJECTED.store(false, Ordering::SeqCst); } +#[cfg(any(not(target_os = "android"), test))] +fn set_marketplace_token_with( + gate: Option>, + value: &str, + load: impl FnOnce() -> Result, + persist: impl FnOnce(&CredsRoot) -> Result<()>, +) -> Result<()> { + mutate_credentials_with( + gate, + openless_core::credentials::ChangeOrigin::LocalOnly, + load, + |root| { + write_marketplace_github_token(root, Some(value.to_string())); + Ok(true) + }, + |root| { + persist(root)?; + // Keep verification in the same vault critical section as publication. + if value.trim().is_empty() { + invalidate_marketplace_token_process_local(); + } else { + mark_marketplace_token_verified(); + } + Ok(()) + }, + ) +} + +#[cfg(any(not(target_os = "android"), test))] +fn remove_marketplace_token_with( + gate: Option>, + load: impl FnOnce() -> Result, + persist: impl FnOnce(&CredsRoot) -> Result<()>, +) -> Result<()> { + // Block new reads immediately, including when the gate is busy with restore. + invalidate_marketplace_token_process_local(); + let result = mutate_credentials_with( + gate, + openless_core::credentials::ChangeOrigin::LocalOnly, + load, + |root| { + // A concurrent login could have finished while this worker waited for the lock. + invalidate_marketplace_token_process_local(); + write_marketplace_github_token(root, None); + Ok(true) + }, + persist, + ); + if result.is_err() { + // Read/gate failures happen before the update closure. Reassert the local + // revocation after any earlier in-flight login has left its vault section. + let _guard = credentials_lock().lock(); + invalidate_marketplace_token_process_local(); + } + result +} + fn read_legacy_credentials_file(path: &Path) -> Option { if !path.exists() { return None; @@ -1221,13 +1655,103 @@ fn remove_legacy_credentials_file_best_effort() { struct CredsChunkManifest { openless_credentials_storage: String, version: u32, - /// Earlier vaults used UUID-prefixed chunks. Keep reading them during migration; - /// current chunked writes use stable names so item authorizations can persist. + /// Every new Windows write uses a private generation; old stable chunks remain + /// readable until one atomic manifest update commits the new complete payload. #[serde(default, skip_serializing_if = "Option::is_none")] generation: Option, chunks: usize, } +#[derive(Debug, thiserror::Error)] +pub(crate) enum VaultCommitFailure { + #[error("credential vault write failed before commit")] + Unchanged, + #[error("credential vault commit result requires reconciliation")] + Unknown, +} + +/// Each candidate lives under a new UUID namespace. The single manifest is the +/// only publication point: readers never guess a generation from orphan chunks. +#[cfg(any(not(any(target_os = "macos", target_os = "android")), test))] +fn save_chunked_credentials_with( + json: &str, + mut read: impl FnMut(&str) -> Result>, + mut write: impl FnMut(&str, &str) -> Result<()>, + mut delete: impl FnMut(&str) -> Result<()>, +) -> Result<()> { + let previous_head = + read(KEYRING_CREDENTIALS_ACCOUNT).map_err(|_| VaultCommitFailure::Unchanged)?; + let previous = match previous_head.as_deref() { + Some(head) => match read_chunk_manifest(head) { + Some(manifest) if manifest.chunks > 0 => Some(manifest), + Some(_) => return Err(VaultCommitFailure::Unchanged.into()), + None => { + decode_single_credentials(head).map_err(|_| VaultCommitFailure::Unchanged)?; + None + } + }, + None => None, + }; + decode_single_credentials(json).map_err(|_| VaultCommitFailure::Unchanged)?; + let generation = uuid::Uuid::new_v4().to_string(); + let chunks = chunk_json_payload(json); + let accounts = (0..chunks.len()) + .map(|index| chunk_account(Some(&generation), index)) + .collect::>(); + let candidate = CredsChunkManifest { + openless_credentials_storage: "chunked".into(), + version: 1, + generation: Some(generation), + chunks: chunks.len(), + }; + let candidate_head = + serde_json::to_string(&candidate).map_err(|_| VaultCommitFailure::Unchanged)?; + let prepared = (|| -> Result<()> { + for (account, chunk) in accounts.iter().zip(&chunks) { + write(account, chunk)?; + } + let mut recovered = zeroize::Zeroizing::new(String::with_capacity(json.len())); + for account in &accounts { + let chunk = + zeroize::Zeroizing::new(read(account)?.ok_or(VaultCommitFailure::Unchanged)?); + if recovered.len().saturating_add(chunk.len()) > json.len() { + return Err(VaultCommitFailure::Unchanged.into()); + } + recovered.push_str(&chunk); + } + if recovered.as_str() != json { + return Err(VaultCommitFailure::Unchanged.into()); + } + Ok(()) + })(); + if prepared.is_err() { + for account in &accounts { + let _ = delete(account); + } + return Err(VaultCommitFailure::Unchanged.into()); + } + + // Even a failed native call may have committed. Confirm the exact head before + // deciding whether a candidate may be discarded, or old chunks may be pruned. + let _publication = write(KEYRING_CREDENTIALS_ACCOUNT, &candidate_head); + match read(KEYRING_CREDENTIALS_ACCOUNT) { + Ok(Some(head)) if head == candidate_head => {} + Ok(head) if head == previous_head => { + for account in &accounts { + let _ = delete(account); + } + return Err(VaultCommitFailure::Unchanged.into()); + } + _ => return Err(VaultCommitFailure::Unknown.into()), + } + if let Some(previous) = previous { + for index in 0..previous.chunks { + let _ = delete(&chunk_account(previous.generation.as_deref(), index)); + } + } + Ok(()) +} + /// Legacy UUID-prefixed and current stable chunk names share one reader. fn chunk_account(generation: Option<&str>, index: usize) -> String { match generation { @@ -1413,7 +1937,6 @@ fn load_keyring_credentials_with( Ok(Some(root)) } -#[cfg(any(not(target_os = "android"), test))] fn decode_single_credentials(json: &str) -> Result { // Serde defaults alone would accept unrelated JSON as an empty configuration. let payload: serde_json::Value = @@ -1543,11 +2066,143 @@ fn load_credentials_for_update() -> Result { Ok(root) } +/// Pending restore startup may inspect existing sources, but the restore lease +/// exclusively owns their eventual migration/replacement. Never synthesize an +/// empty vault from a failed native read or a corrupt legacy source. +fn load_credentials_for_recovery_readonly() -> Result { + #[cfg(not(target_os = "android"))] + let mut root = load_desktop_credentials_readonly_with( + get_keyring_password, + || { + let path = credentials_path()?; + match std::fs::read(path) { + Ok(bytes) => { + let bytes = zeroize::Zeroizing::new(bytes); + let json = std::str::from_utf8(&bytes) + .context("invalid legacy credential encoding")?; + decode_single_credentials(json).map(Some) + } + Err(error) if error.kind() == std::io::ErrorKind::NotFound => Ok(None), + Err(_) => anyhow::bail!("could not read legacy credential source"), + } + }, + cfg!(target_os = "macos"), + )?; + #[cfg(target_os = "android")] + let mut root = { + let path = android_credentials_path()?; + let mut crypto = super::android_credentials::AndroidKeystoreCrypto; + let mut loaded = load_android_credentials_readonly_at(&path, &mut crypto)?; + if loaded.is_none() { + for source in android_legacy_credentials_paths(&path) { + loaded = load_android_credentials_readonly_at(&source, &mut crypto)?; + if loaded.is_some() { + break; + } + } + } + loaded.unwrap_or_default() + }; + migrate_channels(&mut root); + Ok(root) +} + +#[cfg(any(not(target_os = "android"), test))] +fn load_desktop_credentials_readonly_with( + mut read: impl FnMut(&str) -> Result>, + legacy_file: impl FnOnce() -> Result>, + prefer_single: bool, +) -> Result { + if prefer_single { + if let Some(json) = read(KEYRING_SINGLE_CREDENTIALS_ACCOUNT)? { + let json = zeroize::Zeroizing::new(json); + return decode_single_credentials(&json); + } + } + if let Some(root) = load_keyring_credentials_with( + &mut read, + |_, _| anyhow::bail!("read-only credential loading cannot consolidate"), + false, + )? { + return Ok(root); + } + if let Some(root) = legacy_file()? { + return Ok(root); + } + let mut root = CredsRoot::default(); + for account in CredentialAccount::all() { + if let Some(value) = read(account.keyring_account())? { + write_account(&mut root, *account, Some(value)); + } + } + Ok(clean_credentials(&root)) +} + +#[cfg(any(target_os = "android", test))] +fn load_android_credentials_readonly_at( + path: &Path, + crypto: &mut impl super::android_credentials::AndroidCredentialsCrypto, +) -> Result> { + use super::android_credentials::ReadOutcome; + let bytes = + match super::android_credentials::read_only(path, crypto).map_err(anyhow::Error::new)? { + ReadOutcome::Missing => return Ok(None), + ReadOutcome::Plaintext(bytes) | ReadOutcome::Legacy(bytes) => { + zeroize::Zeroizing::new(bytes) + } + }; + let json = + std::str::from_utf8(&bytes).context("invalid read-only Android credential encoding")?; + let root = decode_single_credentials(json)?; + // Legacy OAuth remains excluded even while the encrypted restore barrier + // temporarily prevents rewriting its old source envelope. + Ok(Some(android_persistable_credentials(&root))) +} + +fn load_credentials_for_sync_binding_with( + readonly_required: bool, + readonly: impl FnOnce() -> Result, + ordinary: impl FnOnce() -> Result, +) -> Result { + if readonly_required { + readonly() + } else { + ordinary() + } +} + +/// Bound readers may run before recovery or while an exclusive restore is +/// preparing. Only inspect complete sources; the next gated save can migrate +/// legacy storage. A failed read leaves no default cache and remains retryable. +fn load_credentials_readonly_into_cache_with( + loader: impl FnOnce() -> Result, +) -> Result { + if let Some(cached) = credentials_cache().lock().as_ref().cloned() { + return Ok(cached); + } + match loader() { + Ok(root) => { + clear_vault_read_error(); + store_credentials_cache(&root); + Ok(root) + } + Err(error) => { + record_vault_read_failure(&error); + Err(error) + } + } +} + fn load_credentials_raw() -> CredsRoot { if let Some(cached) = credentials_cache().lock().as_ref().cloned() { return cached; } + if sync_write_gate().is_some() { + return load_credentials_readonly_into_cache_with(load_credentials_for_recovery_readonly) + .unwrap_or_default(); + } + #[cfg(target_os = "android")] { return load_credentials_into_cache_with(load_android_credentials); @@ -1572,6 +2227,14 @@ fn load_credentials_for_update_raw() -> Result { return Ok(cached); } + load_credentials_for_sync_binding_with( + sync_write_gate().is_some(), + || load_credentials_readonly_into_cache_with(load_credentials_for_recovery_readonly), + load_credentials_for_update_unbound, + ) +} + +fn load_credentials_for_update_unbound() -> Result { #[cfg(target_os = "android")] { return android_credentials_root_for_update(load_android_credentials); @@ -1604,6 +2267,26 @@ fn load_credentials_for_update_raw() -> Result { } } +fn finish_credential_write(root: &CredsRoot, outcome: Result<()>) -> Result<()> { + match outcome { + Ok(()) => { + store_credentials_cache(root); + Ok(()) + } + Err(error) => { + // A native write may have committed even though confirmation failed. + // Reconciliation must read the OS store rather than a stale process cache. + if !matches!( + error.downcast_ref::(), + Some(VaultCommitFailure::Unchanged) + ) { + *credentials_cache().lock() = None; + } + Err(error) + } + } +} + fn save_credentials(root: &CredsRoot) -> Result<()> { let mut cleaned = clean_credentials(root); let current_revision = credentials_cache() @@ -1618,8 +2301,7 @@ fn save_credentials(root: &CredsRoot) -> Result<()> { #[cfg(target_os = "android")] { - save_android_credentials(&cleaned)?; - store_credentials_cache(&cleaned); + finish_credential_write(&cleaned, save_android_credentials(&cleaned))?; return Ok(()); } @@ -1628,8 +2310,10 @@ fn save_credentials(root: &CredsRoot) -> Result<()> { let json = serde_json::to_string(&cleaned).context("encode credentials failed")?; // Updating this stable item keeps the user's authorization attached to it. // Do not recreate entries or rewrite/delete legacy chunks on each save. - set_keyring_password(KEYRING_SINGLE_CREDENTIALS_ACCOUNT, &json)?; - store_credentials_cache(&cleaned); + finish_credential_write( + &cleaned, + set_keyring_password(KEYRING_SINGLE_CREDENTIALS_ACCOUNT, &json), + )?; remove_legacy_credentials_file_best_effort(); return Ok(()); } @@ -1637,55 +2321,17 @@ fn save_credentials(root: &CredsRoot) -> Result<()> { #[cfg(not(any(target_os = "android", target_os = "macos")))] { let json = serde_json::to_string(&cleaned).context("encode credentials failed")?; - let previous_manifest = get_keyring_password(KEYRING_CREDENTIALS_ACCOUNT) - .ok() - .flatten() - .and_then(|value| read_chunk_manifest(&value)); - let chunks = chunk_json_payload(&json); - - // Publish the chunk count only after all writes succeed. Existing chunk - // names remain stable; this format is retained for bounded platform stores. - for (index, chunk) in chunks.iter().enumerate() { - let account = chunk_account(None, index); - keyring_entry_for(&account)? - .set_password(chunk) - .with_context(|| format!("write system credential vault chunk {index}"))?; - } - - let manifest = CredsChunkManifest { - openless_credentials_storage: "chunked".to_string(), - version: 1, - generation: None, - chunks: chunks.len(), - }; - let manifest_json = - serde_json::to_string(&manifest).context("encode credential manifest failed")?; - keyring_entry()? - .set_password(&manifest_json) - .context("write system credential vault manifest")?; - - // 清理旧 chunks: - // 1) 旧 manifest 用 UUID generation → 那一代 chunks 全删(迁移到 stable name) - // 2) 旧 manifest 也是 stable name,但 chunks 数量比这次多 → 删多余的 idx - if let Some(previous) = previous_manifest { - match previous.generation.as_deref() { - Some(prev_gen) => { - for index in 0..previous.chunks { - delete_keyring_password(&chunk_account(Some(prev_gen), index)); - } - } - None => { - for index in chunks.len()..previous.chunks { - delete_keyring_password(&chunk_account(None, index)); - } - } - } - } - + let outcome = save_chunked_credentials_with( + &json, + get_keyring_password, + set_keyring_password, + |account| { + delete_keyring_password(account); + Ok(()) + }, + ); + finish_credential_write(&cleaned, outcome)?; remove_legacy_credentials_file_best_effort(); - // 写完成功后立刻刷新 process cache —— 同进程后续读不再回 Keychain。 - // 见 CREDENTIALS_CACHE 的 doc。 - store_credentials_cache(&cleaned); Ok(()) } } @@ -2175,6 +2821,296 @@ fn channel_has_secrets(root: &CredsRoot, kind: ChannelKind, id: &str) -> bool { } } +fn canonical_headers(headers: &Option>) -> Result> { + headers + .as_ref() + .map(|values| { + let ordered = values.iter().collect::>(); + serde_json::to_string(&ordered).context("encode sync provider headers") + }) + .transpose() +} + +fn sync_channel( + id: &str, + namespace: openless_core::credentials::SyncNamespace, + meta: &ChannelMeta, + name: &Option, + active: &str, +) -> openless_core::credentials::SyncChannel { + openless_core::credentials::SyncChannel { + id: id.into(), + namespace, + provider_type: meta.providerType.clone().unwrap_or_else(|| id.into()), + name: name.clone().unwrap_or_default(), + enabled: meta.enabled, + order: meta.order.unwrap_or(u32::MAX), + active: id == active, + } +} + +/// Project actual storage fields, not lookup_account's compatibility fallbacks. +/// In particular appKey=None must not become a duplicated apiKey after a restore. +fn export_sync_credentials_root( + root: &CredsRoot, +) -> Result { + use openless_core::credentials::{SyncCredentialRecord, SyncCredentials, SyncNamespace}; + let mut snapshot = SyncCredentials { + channels: Vec::new(), + credentials: Vec::new(), + }; + macro_rules! accounts { + ($entry:expr, $( $name:literal => $field:ident ),+ $(,)?) => {{ + let mut values = BTreeMap::new(); + $(if let Some(value) = &$entry.$field { values.insert($name.into(), value.clone()); })+ + values + }}; + } + for (id, entry) in &root.providers.asr { + snapshot.channels.push(sync_channel( + id, + SyncNamespace::Asr, + &entry.channel, + &entry.displayName, + &root.active.asr, + )); + snapshot.credentials.push(SyncCredentialRecord { channel_id: id.clone(), namespace: SyncNamespace::Asr, + accounts: accounts!(entry, + "asr.api_key"=>apiKey, "asr.endpoint"=>baseURL, "asr.model"=>model, + "asr.vocabulary_id"=>vocabularyId, "asr.advanced_config"=>advancedConfig, + "volcengine.app_key"=>appKey, "volcengine.access_key"=>accessKey, + "volcengine.resource_id"=>resourceId, "volcengine.service"=>volcengineService, + "volcengine.auth_mode"=>authMode, "volcengine.api_key"=>volcengineApiKey, + "xfyun.app_id"=>xfyunAppId, "xfyun.api_key"=>xfyunApiKey, + "tencent_cloud.app_id"=>tencentCloudAppId, "tencent_cloud.secret_id"=>tencentCloudSecretId, + "tencent_cloud.secret_key"=>tencentCloudSecretKey), + }); + } + for (id, entry) in &root.providers.llm { + snapshot.channels.push(sync_channel( + id, + SyncNamespace::Llm, + &entry.channel, + &entry.displayName, + &root.active.llm, + )); + let mut values = accounts!(entry, "ark.api_key"=>apiKey, "ark.endpoint"=>baseURL, "ark.model_id"=>model, + "ark.request_format"=>requestFormat, "ark.messages_thinking"=>messagesThinking, + "ark.max_tokens"=>maxTokens, "ark.thinking_budget"=>thinkingBudget); + if let Some(value) = entry.temperature { + values.insert("ark.temperature".into(), value.to_string()); + } + if let Some(value) = canonical_headers(&entry.extraHeaders)? { + values.insert("ark.extra_headers".into(), value); + } + snapshot.credentials.push(SyncCredentialRecord { + channel_id: id.clone(), + namespace: SyncNamespace::Llm, + accounts: values, + }); + } + let mut omni_ids = root.omni.providers.keys().cloned().collect::>(); + // Omni has a fixed-provider selector, which may be persisted before any key. + if !root.omni.active.is_empty() && !omni_ids.contains(&root.omni.active) { + omni_ids.push(root.omni.active.clone()); + } + omni_ids.sort(); + for (index, id) in omni_ids.iter().enumerate() { + let empty = CredsOmniEntry::default(); + let entry = root.omni.providers.get(id).unwrap_or(&empty); + let mut channel = sync_channel( + id, + SyncNamespace::Omni, + &entry.channel, + &entry.displayName, + &root.omni.active, + ); + if entry.channel.order.is_none() { + channel.order = u32::try_from(index).context("too many Omni providers")?; + } + snapshot.channels.push(channel); + let mut values = + accounts!(entry, "omni.api_key"=>apiKey, "omni.endpoint"=>baseURL, "omni.model"=>model); + if let Some(value) = entry.temperature { + values.insert("omni.temperature".into(), value.to_string()); + } + if let Some(value) = canonical_headers(&entry.extraHeaders)? { + values.insert("omni.extra_headers".into(), value); + } + snapshot.credentials.push(SyncCredentialRecord { + channel_id: id.clone(), + namespace: SyncNamespace::Omni, + accounts: values, + }); + } + snapshot + .channels + .sort_by(|a, b| (a.namespace, a.order, &a.id).cmp(&(b.namespace, b.order, &b.id))); + snapshot + .credentials + .sort_by(|a, b| (a.namespace, &a.channel_id).cmp(&(b.namespace, &b.channel_id))); + snapshot.validate().map_err(anyhow::Error::new)?; + Ok(snapshot) +} + +fn capture_sync_credentials_with( + load: impl FnOnce() -> Result, +) -> Result { + export_sync_credentials_root(&load()?) +} + +fn restored_channel_meta(channel: &openless_core::credentials::SyncChannel) -> ChannelMeta { + ChannelMeta { + providerType: Some(channel.provider_type.clone()), + order: Some(channel.order), + enabled: channel.enabled, + lastTest: None, + } +} + +fn apply_sync_credentials_root( + root: &CredsRoot, + snapshot: &openless_core::credentials::SyncCredentials, +) -> Result { + use openless_core::credentials::SyncNamespace; + snapshot.validate().map_err(anyhow::Error::new)?; + let accounts = snapshot + .credentials + .iter() + .map(|record| { + ( + (record.namespace, record.channel_id.as_str()), + &record.accounts, + ) + }) + .collect::>(); + let mut next = root.clone(); // Preserve Marketplace OAuth and all unrelated local root state. + next.version = CHANNELS_SCHEMA_VERSION; + next.providers = CredsProviders::default(); + next.omni.providers.clear(); + next.active.asr.clear(); + next.active.llm.clear(); + next.omni.active.clear(); + for channel in &snapshot.channels { + let values = accounts + .get(&(channel.namespace, channel.id.as_str())) + .context("missing sync credential channel")?; + let value = |name: &str| values.get(name).cloned(); + let name = (!channel.name.is_empty()).then(|| channel.name.clone()); + match channel.namespace { + SyncNamespace::Asr => { + next.providers.asr.insert( + channel.id.clone(), + CredsAsrEntry { + channel: restored_channel_meta(channel), + displayName: name, + apiKey: value("asr.api_key"), + baseURL: value("asr.endpoint"), + model: value("asr.model"), + vocabularyId: value("asr.vocabulary_id"), + advancedConfig: value("asr.advanced_config"), + appKey: value("volcengine.app_key"), + accessKey: value("volcengine.access_key"), + resourceId: value("volcengine.resource_id"), + volcengineService: value("volcengine.service"), + authMode: value("volcengine.auth_mode"), + volcengineApiKey: value("volcengine.api_key"), + xfyunAppId: value("xfyun.app_id"), + xfyunApiKey: value("xfyun.api_key"), + tencentCloudAppId: value("tencent_cloud.app_id"), + tencentCloudSecretId: value("tencent_cloud.secret_id"), + tencentCloudSecretKey: value("tencent_cloud.secret_key"), + }, + ); + if channel.active { + next.active.asr = channel.id.clone(); + } + } + SyncNamespace::Llm => { + let mut protocol = openless_core::llm_protocol::LlmProtocolConfig { + format: openless_core::llm_protocol::LlmRequestFormat::default_for( + &channel.provider_type, + ), + ..Default::default() + }; + for key in [ + "ark.request_format", + "ark.messages_thinking", + "ark.max_tokens", + "ark.thinking_budget", + ] { + if let Some(value) = values.get(key) { + protocol.apply(key, value)?; + } + } + let temperature = values + .get("ark.temperature") + .map(|value| parse_llm_temperature(value)) + .transpose()? + .flatten(); + let headers = values + .get("ark.extra_headers") + .map(|value| parse_extra_headers_json(value)) + .transpose()?; + protocol.validate()?; + if let Some(headers) = &headers { + protocol.validate_headers(headers)?; + } + next.providers.llm.insert( + channel.id.clone(), + CredsLlmEntry { + channel: restored_channel_meta(channel), + displayName: name, + apiKey: value("ark.api_key"), + baseURL: value("ark.endpoint"), + model: value("ark.model_id"), + temperature, + extraHeaders: headers, + requestFormat: value("ark.request_format"), + messagesThinking: value("ark.messages_thinking"), + maxTokens: value("ark.max_tokens"), + thinkingBudget: value("ark.thinking_budget"), + }, + ); + if channel.active { + next.active.llm = channel.id.clone(); + } + } + SyncNamespace::Omni => { + anyhow::ensure!( + channel.id == channel.provider_type, + "Omni provider identity cannot be remapped" + ); + let temperature = values + .get("omni.temperature") + .map(|value| parse_llm_temperature(value)) + .transpose()? + .flatten(); + let headers = values + .get("omni.extra_headers") + .map(|value| parse_extra_headers_json(value)) + .transpose()?; + next.omni.providers.insert( + channel.id.clone(), + CredsOmniEntry { + channel: restored_channel_meta(channel), + displayName: name, + apiKey: value("omni.api_key"), + baseURL: value("omni.endpoint"), + model: value("omni.model"), + temperature, + extraHeaders: headers, + }, + ); + if channel.active { + next.omni.active = channel.id.clone(); + } + } + } + } + Ok(next) +} + /// 凭据存储——系统凭据库;旧 JSON 文件只作为迁移来源。 pub struct CredentialsVault; @@ -2182,6 +3118,91 @@ impl CredentialsVault { /// 系统凭据库 service name;macOS 下对应 Keychain service。 pub const SERVICE_NAME: &'static str = "com.openless.app"; + pub(crate) fn bind_sync_gate( + gate: std::sync::Arc, + ) -> Result<()> { + let _guard = credentials_lock().lock(); + let mut installed = SYNC_WRITE_GATE.get_or_init(|| Mutex::new(None)).lock(); + // Binding is deliberately independent of OS authorization and migration. + // Status/read/export lazily inspect the native store under this barrier; + // denial must remain retryable rather than disabling sync construction. + install_sync_write_gate(&mut installed, gate) + } + + pub(crate) fn export_sync_credentials_readonly( + ) -> Result { + let _guard = credentials_lock().lock(); + // Cold capture uses the same strict read-only loader as bound getters. + // Legacy sources remain readable without migration, even before startup + // recovery. Failed OS access leaves the next capture free to retry. + anyhow::ensure!( + sync_write_gate().is_some(), + "encrypted sync credential gate is not bound" + ); + capture_sync_credentials_with(|| { + let mut root = + load_credentials_readonly_into_cache_with(load_credentials_for_recovery_readonly)?; + migrate_channels(&mut root); + Ok(root) + }) + } + + pub(crate) fn export_sync_credentials( + permit: &openless_core::credentials::ExclusivePermit, + ) -> Result { + require_sync_exclusive(permit)?; + let _guard = credentials_lock().lock(); + capture_sync_credentials_with(load_credentials_for_update) + } + + pub(crate) fn replace_sync_credentials( + snapshot: &openless_core::credentials::SyncCredentials, + permit: &openless_core::credentials::ExclusivePermit, + ) -> Result<()> { + require_sync_exclusive(permit)?; + let _guard = credentials_lock().lock(); + let current = load_credentials_for_update()?; + let replacement = apply_sync_credentials_root(¤t, snapshot)?; + // The outer restore transaction owns the exclusive generation/receipt. + save_credentials(&replacement) + } + + pub(crate) fn read_sync_secret( + account: &openless_core::credentials::SyncSecretAccount, + ) -> Result> { + let _guard = credentials_lock().lock(); + read_sync_secret_raw(account) + } + + pub(crate) fn write_sync_secret( + account: &openless_core::credentials::SyncSecretAccount, + value: &openless_core::SecretValue, + ) -> Result<()> { + validate_sync_key(value)?; + let _guard = credentials_lock().lock(); + if let Some(existing) = read_sync_secret_raw(account)? { + if existing == *value { + return Ok(()); + } + anyhow::bail!("refusing to replace an existing encrypted sync key binding"); + } + write_sync_secret_raw(account, value)?; + let stored = read_sync_secret_raw(account)? + .context("encrypted sync key write could not be verified")?; + anyhow::ensure!( + stored == *value, + "encrypted sync key write verification failed" + ); + Ok(()) + } + + pub(crate) fn remove_sync_secret( + account: &openless_core::credentials::SyncSecretAccount, + ) -> Result<()> { + let _guard = credentials_lock().lock(); + remove_sync_secret_raw(account) + } + /// Last envelope/keyring read failure, if this process has not successfully /// loaded credentials since. Distinguishes "vault unreadable" from /// "user has not configured a provider" (empty default is volcengine). @@ -2195,10 +3216,13 @@ impl CredentialsVault { } pub fn save_metadata(metadata: openless_core::CredentialMetadata) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - apply_credential_metadata(&mut root, metadata)?; - save_credentials(&root) + mutate_credentials( + openless_core::credentials::ChangeOrigin::User, + move |root| { + apply_credential_metadata(root, metadata)?; + Ok(true) + }, + ) } pub fn channel_has_secrets(kind: ChannelKind, id: &str) -> Result { @@ -2216,15 +3240,14 @@ impl CredentialsVault { } pub fn set(account: CredentialAccount, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - let v = if value.is_empty() { - None - } else { - Some(value.to_string()) - }; - write_account(&mut root, account, v); - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + write_account( + root, + account, + (!value.is_empty()).then(|| value.to_string()), + ); + Ok(true) + }) } pub fn get_for_asr_provider(id: &str, account: CredentialAccount) -> Result> { @@ -2235,21 +3258,24 @@ impl CredentialsVault { } pub fn set_for_asr_provider(id: &str, account: CredentialAccount, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - let active = root.active.asr.clone(); - root.active.asr = id.to_string(); - let value = (!value.is_empty()).then(|| value.to_string()); - write_account(&mut root, account, value); - root.active.asr = active; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + let active = root.active.asr.clone(); + root.active.asr = id.to_string(); + write_account( + root, + account, + (!value.is_empty()).then(|| value.to_string()), + ); + root.active.asr = active; + Ok(true) + }) } pub fn remove(account: CredentialAccount) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - write_account(&mut root, account, None); - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + write_account(root, account, None); + Ok(true) + }) } /// GitHub OAuth token for authenticated marketplace operations. @@ -2277,9 +3303,9 @@ impl CredentialsVault { } pub fn set_marketplace_github_token(value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); #[cfg(target_os = "android")] { + let _guard = credentials_lock().lock(); ensure_android_marketplace_legacy_scrubbed()?; *android_marketplace_token().lock() = (!value.trim().is_empty()).then(|| MarketplaceGithubToken(value.to_string())); @@ -2288,34 +3314,30 @@ impl CredentialsVault { } else { mark_marketplace_token_verified(); } - return Ok(()); - } - #[cfg(not(target_os = "android"))] - { - let mut root = load_credentials_for_update()?; - write_marketplace_github_token(&mut root, Some(value.to_string())); - save_credentials(&root)?; - mark_marketplace_token_verified(); Ok(()) } + #[cfg(not(target_os = "android"))] + set_marketplace_token_with( + sync_write_gate(), + value, + load_credentials_for_update, + save_credentials, + ) } pub fn remove_marketplace_github_token() -> Result<()> { - let _guard = credentials_lock().lock(); - invalidate_marketplace_token_with(|| { - #[cfg(target_os = "android")] - { - // Retry the durable legacy scrub on every logout until it has - // actually completed. Process memory is already invalidated. - return ensure_android_marketplace_legacy_scrubbed(); - } - #[cfg(not(target_os = "android"))] - { - let mut root = load_credentials_for_update()?; - write_marketplace_github_token(&mut root, None); - save_credentials(&root) - } - }) + #[cfg(target_os = "android")] + { + invalidate_marketplace_token_process_local(); + let _guard = credentials_lock().lock(); + invalidate_marketplace_token_with(ensure_android_marketplace_legacy_scrubbed) + } + #[cfg(not(target_os = "android"))] + remove_marketplace_token_with( + sync_write_gate(), + load_credentials_for_update, + save_credentials, + ) } #[cfg(test)] @@ -2408,14 +3430,17 @@ impl CredentialsVault { } pub fn set_for_llm_provider(id: &str, account: CredentialAccount, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - let active = root.active.llm.clone(); - root.active.llm = id.to_string(); - let value = (!value.is_empty()).then(|| value.to_string()); - write_account(&mut root, account, value); - root.active.llm = active; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + let active = root.active.llm.clone(); + root.active.llm = id.to_string(); + write_account( + root, + account, + (!value.is_empty()).then(|| value.to_string()), + ); + root.active.llm = active; + Ok(true) + }) } pub fn get_active_omni() -> String { @@ -2428,18 +3453,18 @@ impl CredentialsVault { } fn select_active_provider(slot: openless_core::ProviderSlot, id: &str) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - let mut metadata = credential_metadata(&root); - let revision = metadata.revision(); - metadata - .select_active_provider(slot, id.to_string()) - .map_err(|error| anyhow::anyhow!(error.message))?; - if metadata.revision() == revision { - return Ok(()); - } - apply_credential_metadata(&mut root, metadata)?; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + let mut metadata = credential_metadata(root); + let revision = metadata.revision(); + metadata + .select_active_provider(slot, id.to_string()) + .map_err(anyhow::Error::new)?; + if metadata.revision() == revision { + return Ok(false); + } + apply_credential_metadata(root, metadata)?; + Ok(true) + }) } pub fn get_for_omni_provider(id: &str, account: CredentialAccount) -> Result> { @@ -2448,15 +3473,15 @@ impl CredentialsVault { } pub fn set_for_omni_provider(id: &str, account: CredentialAccount, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); - let mut root = load_credentials_for_update()?; - write_omni_account( - &mut root, - id, - account, - (!value.is_empty()).then(|| value.to_string()), - )?; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + write_omni_account( + root, + id, + account, + (!value.is_empty()).then(|| value.to_string()), + )?; + Ok(true) + }) } pub fn get_active_omni_extra_headers() -> HashMap { @@ -2490,57 +3515,51 @@ impl CredentialsVault { } pub fn set_active_omni_temperature(value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let temperature = parse_llm_temperature(value)?; - let mut root = load_credentials_for_update()?; - let entry = root - .omni - .providers - .entry(root.omni.active.clone()) - .or_default(); - entry.temperature = temperature; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + root.omni + .providers + .entry(root.omni.active.clone()) + .or_default() + .temperature = temperature; + Ok(true) + }) } pub fn set_omni_temperature_for_provider(id: &str, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let temperature = parse_llm_temperature(value)?; - let mut root = load_credentials_for_update()?; - root.omni - .providers - .entry(id.to_string()) - .or_default() - .temperature = temperature; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + root.omni + .providers + .entry(id.to_string()) + .or_default() + .temperature = temperature; + Ok(true) + }) } pub fn set_active_omni_extra_headers_json(value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let headers = parse_extra_headers_json(value)?; - let mut root = load_credentials_for_update()?; - let entry = root - .omni - .providers - .entry(root.omni.active.clone()) - .or_default(); - entry.extraHeaders = if headers.is_empty() { - None - } else { - Some(headers) - }; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + root.omni + .providers + .entry(root.omni.active.clone()) + .or_default() + .extraHeaders = (!headers.is_empty()).then_some(headers); + Ok(true) + }) } pub fn set_omni_extra_headers_json_for_provider(id: &str, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let headers = parse_extra_headers_json(value)?; - let mut root = load_credentials_for_update()?; - root.omni - .providers - .entry(id.to_string()) - .or_default() - .extraHeaders = (!headers.is_empty()).then_some(headers); - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + root.omni + .providers + .entry(id.to_string()) + .or_default() + .extraHeaders = (!headers.is_empty()).then_some(headers); + Ok(true) + }) } pub fn get_active_llm_extra_headers() -> HashMap { @@ -2564,16 +3583,15 @@ impl CredentialsVault { } pub fn set_active_llm_temperature(value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let temperature = parse_llm_temperature(value)?; - let mut root = load_credentials_for_update()?; - let entry = root - .providers - .llm - .entry(root.active.llm.clone()) - .or_default(); - entry.temperature = temperature; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + root.providers + .llm + .entry(root.active.llm.clone()) + .or_default() + .temperature = temperature; + Ok(true) + }) } pub fn get_llm_protocol_option(id: Option<&str>, account: &str) -> Result> { @@ -2587,51 +3605,46 @@ impl CredentialsVault { } pub fn set_llm_protocol_option(id: Option<&str>, account: &str, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let mut config = openless_core::llm_protocol::LlmProtocolConfig::default(); config.apply(account, value)?; - let mut root = load_credentials_for_update()?; - let id = id.unwrap_or(&root.active.llm).to_string(); - let entry = root.providers.llm.entry(id).or_default(); - *entry.protocol_option(account)? = - (!value.trim().is_empty()).then(|| value.trim().to_string()); - entry.channel.lastTest = None; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + let id = id.unwrap_or(&root.active.llm).to_string(); + let entry = root.providers.llm.entry(id).or_default(); + *entry.protocol_option(account)? = + (!value.trim().is_empty()).then(|| value.trim().to_string()); + entry.channel.lastTest = None; + Ok(true) + }) } /// 写入指定 LLM 渠道的采样温度,不改变 active 渠道。 pub fn set_llm_temperature_for_provider(id: &str, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let temperature = parse_llm_temperature(value)?; - let mut root = load_credentials_for_update()?; - set_llm_temperature_for_provider_in_root(&mut root, id, temperature); - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + set_llm_temperature_for_provider_in_root(root, id, temperature); + Ok(true) + }) } pub fn set_active_llm_extra_headers_json(value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let headers = parse_extra_headers_json(value)?; - let mut root = load_credentials_for_update()?; - let entry = root - .providers - .llm - .entry(root.active.llm.clone()) - .or_default(); - entry.extraHeaders = if headers.is_empty() { - None - } else { - Some(headers) - }; - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + root.providers + .llm + .entry(root.active.llm.clone()) + .or_default() + .extraHeaders = (!headers.is_empty()).then_some(headers); + Ok(true) + }) } /// 写入指定 LLM 渠道的额外请求头,不改变 active 渠道。 pub fn set_llm_extra_headers_json_for_provider(id: &str, value: &str) -> Result<()> { - let _guard = credentials_lock().lock(); let headers = parse_extra_headers_json(value)?; - let mut root = load_credentials_for_update()?; - set_llm_extra_headers_for_provider_in_root(&mut root, id, headers); - save_credentials(&root) + mutate_credentials(openless_core::credentials::ChangeOrigin::User, |root| { + set_llm_extra_headers_for_provider_in_root(root, id, headers); + Ok(true) + }) } pub fn snapshot() -> CredentialsSnapshot { @@ -3368,7 +4381,6 @@ mod tests { #[test] fn android_startup_failure_does_not_cache_default_or_suppress_retry() { - use anyhow::Context; reset_credentials_cache_for_tests(); let first = load_credentials_into_cache_with(|| { Err(anyhow!("injected startup scrub failure") @@ -3404,9 +4416,20 @@ mod tests { let _ = std::fs::remove_dir_all(dir); } + #[test] + fn malformed_payload_errors_never_echo_private_field_values() { + reset_credentials_cache_for_tests(); + let error = serde_json::from_str::(r#"{"version":"private-canary-secret"}"#) + .unwrap_err(); + super::record_vault_read_failure(&anyhow::Error::new(error)); + let recorded = CredentialsVault::last_read_error().unwrap(); + assert_eq!(recorded, "credential payload could not be decoded"); + assert!(!recorded.contains("private-canary-secret")); + super::clear_vault_read_error(); + } + #[test] fn android_for_update_path_retries_and_does_not_cache_on_envelope_error() { - use anyhow::Context; reset_credentials_cache_for_tests(); let err = android_credentials_root_for_update(|| { Err(anyhow!("temporarily unavailable") @@ -3815,3 +4838,766 @@ mod tests { ); } } + +#[cfg(test)] +mod encrypted_sync_tests { + use super::*; + use openless_core::credentials::{ + ChangeOrigin, SyncNamespace, SyncSecretAccount, SyncWriteGate, + }; + use std::cell::{Cell, RefCell}; + + struct Temporary(PathBuf); + impl Temporary { + fn new() -> Self { + let path = + std::env::temp_dir().join(format!("openless-vault-sync-{}", uuid::Uuid::new_v4())); + std::fs::create_dir_all(&path).unwrap(); + Self(path) + } + } + impl Drop for Temporary { + fn drop(&mut self) { + let _ = std::fs::remove_dir_all(&self.0); + } + } + + fn root_with_secret(value: &str) -> CredsRoot { + let mut root = CredsRoot::default(); + root.version = 2; + root.active.asr = "stable-channel".into(); + root.providers.asr.insert( + "stable-channel".into(), + CredsAsrEntry { + channel: ChannelMeta { + providerType: Some("openai-compatible".into()), + order: Some(0), + enabled: true, + lastTest: None, + }, + apiKey: Some(value.into()), + ..Default::default() + }, + ); + root + } + fn installed_chunks(json: &str, generation: Option<&str>) -> HashMap { + let chunks = chunk_json_payload(json); + let manifest = CredsChunkManifest { + openless_credentials_storage: "chunked".into(), + version: 1, + generation: generation.map(str::to_string), + chunks: chunks.len(), + }; + let mut values = HashMap::from([( + KEYRING_CREDENTIALS_ACCOUNT.into(), + serde_json::to_string(&manifest).unwrap(), + )]); + for (i, part) in chunks.into_iter().enumerate() { + values.insert(chunk_account(generation, i), part); + } + values + } + fn read_root(values: &RefCell>) -> CredsRoot { + load_keyring_credentials_with( + |key| Ok(values.borrow().get(key).cloned()), + |_, _| panic!("reader must not write"), + false, + ) + .unwrap() + .unwrap() + } + + #[test] + fn sync_gate_binding_is_lazy_and_preserves_pending_recovery() { + let temp = Temporary::new(); + let path = temp.0.join("generation.json"); + let gate = SyncWriteGate::open(path.clone()).unwrap(); + drop(gate.begin_mutation().unwrap()); + let before = std::fs::read(&path).unwrap(); + let mut installed = None; + install_sync_write_gate(&mut installed, gate.clone()).unwrap(); + install_sync_write_gate(&mut installed, gate.clone()).unwrap(); + assert!(std::sync::Arc::ptr_eq(installed.as_ref().unwrap(), &gate)); + assert!(gate.recovery_required().unwrap()); + assert_eq!(std::fs::read(&path).unwrap(), before); + let other = SyncWriteGate::open(temp.0.join("other.json")).unwrap(); + assert!(install_sync_write_gate(&mut installed, other).is_err()); + assert!(std::sync::Arc::ptr_eq(installed.as_ref().unwrap(), &gate)); + } + + #[test] + fn readonly_warm_cache_retries_denial_and_only_real_read_clears_failure() { + reset_credentials_cache_for_tests(); + let failure = load_credentials_readonly_into_cache_with(|| { + Err(anyhow::anyhow!("fixture native access denied")) + }) + .unwrap_err(); + assert!(failure.to_string().contains("fixture native access denied")); + assert!(credentials_cache().lock().is_none()); + let recorded = CredentialsVault::last_read_error().unwrap(); + + // A cache hit itself is not a successful OS read. Seed only the cache + // slot, without the successful-load/save helper's error-latch update. + *credentials_cache().lock() = Some(root_with_secret("fixture-cached")); + let cached = + load_credentials_readonly_into_cache_with(|| panic!("must use cache")).unwrap(); + assert_eq!( + cached.providers.asr["stable-channel"].apiKey.as_deref(), + Some("fixture-cached") + ); + assert_eq!( + CredentialsVault::last_read_error().as_deref(), + Some(recorded.as_str()) + ); + + *credentials_cache().lock() = None; + let loaded = load_credentials_readonly_into_cache_with(|| { + Ok(root_with_secret("fixture-retry-succeeded")) + }) + .unwrap(); + assert_eq!( + loaded.providers.asr["stable-channel"].apiKey.as_deref(), + Some("fixture-retry-succeeded") + ); + assert!(credentials_cache().lock().is_some()); + assert!(CredentialsVault::last_read_error().is_none()); + reset_credentials_cache_for_tests(); + } + + #[test] + fn bound_cold_read_preserves_legacy_file_until_a_real_save() { + let temp = Temporary::new(); + let path = temp.0.join("legacy.json"); + let mut legacy = root_with_secret("fixture-legacy-provider"); + legacy.version = 1; + legacy.marketplace.githubAccessToken = + Some(MarketplaceGithubToken("fixture-local-oauth".into())); + let original = serde_json::to_vec(&legacy).unwrap(); + std::fs::write(&path, &original).unwrap(); + let loaded = load_credentials_for_sync_binding_with( + true, + || { + load_desktop_credentials_readonly_with( + |_| Ok(None), + || decode_single_credentials(&std::fs::read_to_string(&path)?).map(Some), + true, + ) + }, + || panic!("bound read must not call the migration loader"), + ) + .unwrap(); + assert_eq!( + loaded.providers.asr["stable-channel"].apiKey.as_deref(), + Some("fixture-legacy-provider") + ); + assert_eq!( + lookup_marketplace_github_token(&loaded).as_deref(), + Some("fixture-local-oauth") + ); + assert_eq!(std::fs::read(&path).unwrap(), original); + } + + #[test] + fn recovery_binding_uses_only_readers_and_preserves_the_pending_gate() { + let temp = Temporary::new(); + let path = temp.0.join("generation.json"); + let gate = SyncWriteGate::open(path.clone()).unwrap(); + drop(gate.begin_mutation().unwrap()); + let before = std::fs::read(&path).unwrap(); + let json = serde_json::to_string(&root_with_secret("fixture-source")).unwrap(); + let chunks = installed_chunks(&json, Some("prior-generation")); + let root = load_credentials_for_sync_binding_with( + gate.recovery_required().unwrap(), + || { + load_desktop_credentials_readonly_with( + |account| Ok(chunks.get(account).cloned()), + || panic!("complete chunks must not probe a legacy file"), + true, + ) + }, + || panic!("pending startup must not call the migration loader"), + ) + .unwrap(); + assert_eq!( + root.providers.asr["stable-channel"].apiKey.as_deref(), + Some("fixture-source") + ); + assert_eq!(std::fs::read(&path).unwrap(), before); + let error = load_credentials_for_sync_binding_with( + gate.recovery_required().unwrap(), + || { + load_desktop_credentials_readonly_with( + |_| Err(anyhow::anyhow!("fixture native access denied")), + || panic!("native errors must not fall back"), + true, + ) + }, + || panic!("must not migrate after denial"), + ); + assert!(error.is_err()); + assert!(gate.recovery_required().unwrap()); + assert_eq!(std::fs::read(&path).unwrap(), before); + let single = load_desktop_credentials_readonly_with( + |account| { + assert_eq!(account, KEYRING_SINGLE_CREDENTIALS_ACCOUNT); + Ok(Some(json.clone())) + }, + || panic!("v2 has priority"), + true, + ) + .unwrap(); + assert_eq!( + single.providers.asr["stable-channel"].apiKey.as_deref(), + Some("fixture-source") + ); + assert!(load_desktop_credentials_readonly_with( + |_| Ok(Some("{}".into())), + || panic!("corrupt source must not fall back"), + true + ) + .is_err()); + assert!(load_desktop_credentials_readonly_with( + |_| Ok(None), + || Err(anyhow::anyhow!("unreadable legacy source")), + false + ) + .is_err()); + let legacy = load_desktop_credentials_readonly_with( + |account| Ok((account == "asr.api_key").then(|| "legacy-source".into())), + || Ok(None), + false, + ) + .unwrap(); + assert_eq!( + lookup_account(&legacy, CredentialAccount::AsrApiKey).as_deref(), + Some("legacy-source") + ); + let empty = + load_desktop_credentials_readonly_with(|_| Ok(None), || Ok(None), false).unwrap(); + assert!(empty.providers.asr.is_empty()); + } + + #[cfg(not(windows))] + #[test] + fn recovery_android_vault_read_is_strict_and_does_not_scrub_or_migrate() { + use base64::Engine; + let temp = Temporary::new(); + let path = temp.0.join("credentials.enc.json"); + let mut root = root_with_secret("private-provider"); + write_marketplace_github_token(&mut root, Some("legacy-oauth".into())); + let bytes = + base64::engine::general_purpose::STANDARD.encode(serde_json::to_vec(&root).unwrap()); + std::fs::write(&path, &bytes).unwrap(); + let mut crypto = super::super::android_credentials::TestCrypto::default(); + let loaded = load_android_credentials_readonly_at(&path, &mut crypto) + .unwrap() + .unwrap(); + assert_eq!( + loaded.providers.asr["stable-channel"].apiKey.as_deref(), + Some("private-provider") + ); + assert!(lookup_marketplace_github_token(&loaded).is_none()); + assert_eq!(std::fs::read(&path).unwrap(), bytes.as_bytes()); + assert_eq!(crypto.delete_key_calls, 0); + std::fs::write( + &path, + base64::engine::general_purpose::STANDARD.encode(b"{}"), + ) + .unwrap(); + assert!(load_android_credentials_readonly_at(&path, &mut crypto).is_err()); + assert!(path.exists()); + } + + #[test] + fn generation_writer_preserves_old_data_at_every_precommit_failure() { + let old = serde_json::to_string(&root_with_secret(&"old".repeat(1500))).unwrap(); + let new = serde_json::to_string(&root_with_secret(&"new".repeat(1500))).unwrap(); + let initial = installed_chunks(&old, None); + for failed_piece in 0..chunk_json_payload(&new).len() { + let values = RefCell::new(initial.clone()); + let writes = Cell::new(0); + let result = save_chunked_credentials_with( + &new, + |key| Ok(values.borrow().get(key).cloned()), + |key, value| { + if key != KEYRING_CREDENTIALS_ACCOUNT { + let n = writes.get(); + writes.set(n + 1); + if n == failed_piece { + anyhow::bail!("fixture failure"); + } + } + values.borrow_mut().insert(key.into(), value.into()); + Ok(()) + }, + |key| { + values.borrow_mut().remove(key); + Ok(()) + }, + ); + assert!(result.is_err()); + assert_eq!( + read_root(&values).providers.asr["stable-channel"].apiKey, + root_with_secret(&"old".repeat(1500)).providers.asr["stable-channel"].apiKey + ); + assert_eq!( + values.borrow().get(KEYRING_CREDENTIALS_ACCOUNT), + initial.get(KEYRING_CREDENTIALS_ACCOUNT) + ); + } + } + + #[test] + fn generation_writer_verifies_chunks_and_head_without_claiming_fake_success() { + let old = serde_json::to_string(&root_with_secret("old")).unwrap(); + let new = serde_json::to_string(&root_with_secret(&"new".repeat(1000))).unwrap(); + for mode in [ + "head_read", + "chunk_read", + "corrupt_chunk", + "head_noop", + "head_error", + "head_confirmation", + ] { + let values = RefCell::new(installed_chunks(&old, Some("old-generation"))); + let switched = Cell::new(false); + let result = save_chunked_credentials_with( + &new, + |key| { + if mode == "head_read" && key == KEYRING_CREDENTIALS_ACCOUNT { + anyhow::bail!("fixture"); + } + if mode == "head_confirmation" + && key == KEYRING_CREDENTIALS_ACCOUNT + && switched.get() + { + anyhow::bail!("fixture"); + } + if key.starts_with(KEYRING_CREDENTIALS_CHUNK_PREFIX) + && !key.contains("old-generation") + { + if mode == "chunk_read" { + anyhow::bail!("fixture"); + } + if mode == "corrupt_chunk" { + return Ok(Some("corrupt".into())); + } + } + Ok(values.borrow().get(key).cloned()) + }, + |key, value| { + if key == KEYRING_CREDENTIALS_ACCOUNT { + if mode == "head_error" { + anyhow::bail!("fixture"); + } + if mode == "head_noop" { + return Ok(()); + } + switched.set(true); + } + values.borrow_mut().insert(key.into(), value.into()); + Ok(()) + }, + |key| { + values.borrow_mut().remove(key); + Ok(()) + }, + ); + assert!(result.is_err(), "{mode}"); + let expected = if mode == "head_confirmation" { + "new".repeat(1000) + } else { + "old".into() + }; + assert_eq!( + read_root(&values).providers.asr["stable-channel"] + .apiKey + .as_deref(), + Some(expected.as_str()) + ); + } + } + + #[test] + fn generation_commit_survives_lost_ack_and_cleanup_failure_and_migrates_legacy() { + let old = serde_json::to_string(&root_with_secret("old")).unwrap(); + let new = serde_json::to_string(&root_with_secret("new")).unwrap(); + for initial in [ + installed_chunks(&old, None), + installed_chunks(&old, Some("previous-generation")), + HashMap::from([(KEYRING_CREDENTIALS_ACCOUNT.into(), old.clone())]), + ] { + let values = RefCell::new(initial); + save_chunked_credentials_with( + &new, + |key| Ok(values.borrow().get(key).cloned()), + |key, value| { + values.borrow_mut().insert(key.into(), value.into()); + if key == KEYRING_CREDENTIALS_ACCOUNT { + anyhow::bail!("lost native ack"); + } + Ok(()) + }, + |_| anyhow::bail!("cleanup denied"), + ) + .unwrap(); + assert_eq!( + read_root(&values).providers.asr["stable-channel"] + .apiKey + .as_deref(), + Some("new") + ); + let head = values.borrow()[KEYRING_CREDENTIALS_ACCOUNT].clone(); + assert!(read_chunk_manifest(&head).unwrap().generation.is_some()); + } + } + + #[test] + fn full_provider_capture_roundtrips_fixed_ids_and_keeps_local_oauth() { + let mut root = root_with_secret("asr-primary"); + let asr = root.providers.asr.get_mut("stable-channel").unwrap(); + asr.appKey = None; + asr.accessKey = Some("legacy-access".into()); + asr.resourceId = Some("resource".into()); + asr.volcengineApiKey = Some("new-service-key".into()); + asr.vocabularyId = Some("vocab".into()); + asr.advancedConfig = Some("{\"verboseJson\":true}".into()); + asr.xfyunAppId = Some("xfyun-id".into()); + asr.xfyunApiKey = Some("xfyun-secret".into()); + asr.tencentCloudAppId = Some("tencent-id".into()); + asr.tencentCloudSecretId = Some("tencent-secret-id".into()); + asr.tencentCloudSecretKey = Some("tencent-secret".into()); + asr.channel.lastTest = Some(ChannelTest { + ok: true, + latencyMs: Some(1), + at: 5, + error: None, + }); + root.active.llm = "stable-llm".into(); + root.providers.llm.insert( + "stable-llm".into(), + CredsLlmEntry { + channel: ChannelMeta { + providerType: Some("custom".into()), + order: Some(5), + enabled: true, + lastTest: asr.channel.lastTest.clone(), + }, + displayName: Some("Named provider".into()), + apiKey: Some("llm-secret".into()), + baseURL: Some("https://api.example/v1".into()), + model: Some("model".into()), + temperature: Some(0.7), + extraHeaders: Some(HashMap::from([( + "x-provider-key".into(), + "header-secret".into(), + )])), + requestFormat: Some("chat_completions".into()), + messagesThinking: Some("adaptive".into()), + maxTokens: Some("4096".into()), + thinkingBudget: None, + }, + ); + root.omni.active = "custom".into(); + for id in ["custom", "qwen3-omni", "volcengine-omni"] { + root.omni.providers.insert( + id.into(), + CredsOmniEntry { + apiKey: Some(format!("{id}-secret")), + baseURL: Some("https://omni.example".into()), + model: Some("omni-model".into()), + temperature: Some(0.8), + extraHeaders: Some(HashMap::from([( + "x-extra".into(), + "omni-extra-secret".into(), + )])), + ..Default::default() + }, + ); + } + write_marketplace_github_token(&mut root, Some("local-only-oauth".into())); + let count = Cell::new(0); + let capture = capture_sync_credentials_with(|| { + count.set(count.get() + 1); + Ok(root.clone()) + }) + .unwrap(); + assert_eq!(count.get(), 1); + assert!(!format!("{capture:?}").contains("secret")); + assert!(!capture.credentials.iter().any(|record| record + .accounts + .values() + .any(|value| value == "local-only-oauth"))); + assert!(!capture + .credentials + .iter() + .find(|record| record.namespace == SyncNamespace::Asr) + .unwrap() + .accounts + .contains_key("volcengine.app_key")); + assert_eq!( + capture + .channels + .iter() + .filter(|c| c.namespace == SyncNamespace::Omni) + .count(), + 3 + ); + let restored = apply_sync_credentials_root(&root, &capture).unwrap(); + assert_eq!(export_sync_credentials_root(&restored).unwrap(), capture); + assert_eq!( + lookup_marketplace_github_token(&restored).as_deref(), + Some("local-only-oauth") + ); + assert!(restored + .providers + .asr + .values() + .all(|entry| entry.channel.lastTest.is_none())); + assert!(restored + .providers + .llm + .values() + .all(|entry| entry.channel.lastTest.is_none())); + let mut excluded = capture.clone(); + excluded.credentials[0] + .accounts + .insert("github.oauth_token".into(), "not-allowed".into()); + assert!(apply_sync_credentials_root(&root, &excluded).is_err()); + let mut invalid_protocol = capture.clone(); + let accounts = &mut invalid_protocol + .credentials + .iter_mut() + .find(|record| record.namespace == SyncNamespace::Llm) + .unwrap() + .accounts; + accounts.insert("ark.request_format".into(), "messages".into()); + accounts.insert("ark.messages_thinking".into(), "budget".into()); + accounts.insert("ark.thinking_budget".into(), "4096".into()); + assert!(apply_sync_credentials_root(&root, &invalid_protocol).is_err()); + assert!( + capture_sync_credentials_with(|| Err(anyhow::anyhow!("unreadable fixture vault"))) + .is_err() + ); + } + + #[test] + fn mutation_lease_precedes_read_and_lives_until_actual_save_finishes() { + let temp = Temporary::new(); + let gate = SyncWriteGate::open(temp.0.join("generation.json")).unwrap(); + mutate_credentials_with( + Some(gate.clone()), + ChangeOrigin::User, + || { + assert!(gate.try_exclusive().is_err()); + Ok(root_with_secret("old")) + }, + |root| { + root.active.asr = "changed".into(); + Ok(true) + }, + |_| { + assert!(gate.try_exclusive().is_err()); + Ok(()) + }, + ) + .unwrap(); + assert_eq!(gate.generation().unwrap().get(), 1); + let exclusive = gate.try_exclusive().unwrap(); + assert!(mutate_credentials_with( + Some(gate.clone()), + ChangeOrigin::User, + || panic!("must reject before read"), + |_| Ok(true), + |_| Ok(()) + ) + .is_err()); + drop(exclusive); + assert!(mutate_credentials_with( + Some(gate.clone()), + ChangeOrigin::User, + || Err(anyhow::anyhow!("read failed")), + |_| Ok(true), + |_| Ok(()) + ) + .is_err()); + assert!(!gate.recovery_required().unwrap()); + mutate_credentials_with( + Some(gate.clone()), + ChangeOrigin::LocalOnly, + || Ok(root_with_secret("old")), + |_| Ok(true), + |_| Ok(()), + ) + .unwrap(); + assert_eq!(gate.generation().unwrap().get(), 1); + assert!(mutate_credentials_with( + Some(gate.clone()), + ChangeOrigin::User, + || Ok(root_with_secret("old")), + |_| Ok(true), + |_| Err(VaultCommitFailure::Unknown.into()) + ) + .is_err()); + assert!(gate.recovery_required().unwrap()); + } + + #[test] + fn unknown_publication_drops_cache_before_reconciliation() { + let old = root_with_secret("old"); + let new = root_with_secret("new"); + store_credentials_cache(&old); + assert!(finish_credential_write(&new, Err(VaultCommitFailure::Unchanged.into())).is_err()); + assert_eq!( + credentials_cache().lock().as_ref().unwrap().providers.asr["stable-channel"] + .apiKey + .as_deref(), + Some("old") + ); + assert!(finish_credential_write(&new, Err(VaultCommitFailure::Unknown.into())).is_err()); + assert!(credentials_cache().lock().is_none()); + let count = Cell::new(0); + let loaded = load_credentials_into_cache_with(|| { + count.set(count.get() + 1); + Ok(Some(new)) + }); + assert_eq!(count.get(), 1); + assert_eq!( + loaded.providers.asr["stable-channel"].apiKey.as_deref(), + Some("new") + ); + reset_credentials_cache_for_tests(); + } + + #[test] + fn failed_revocation_after_concurrent_login_keeps_oauth_unusable() { + use std::sync::{mpsc, Arc}; + use std::time::{Duration, Instant}; + let root = Arc::new(Mutex::new(root_with_secret("provider-only"))); + store_credentials_cache(&root.lock()); + mark_marketplace_token_verified(); + let (started_tx, started_rx) = mpsc::channel(); + let (release_tx, release_rx) = mpsc::channel(); + let login_root = root.clone(); + let login = std::thread::spawn(move || { + set_marketplace_token_with( + None, + "new-oauth", + || Ok(login_root.lock().clone()), + |next| { + started_tx.send(()).unwrap(); + release_rx.recv_timeout(Duration::from_secs(5)).unwrap(); + *login_root.lock() = next.clone(); + store_credentials_cache(next); + Ok(()) + }, + ) + }); + started_rx.recv_timeout(Duration::from_secs(5)).unwrap(); + let revoke = std::thread::spawn(move || { + remove_marketplace_token_with( + None, + || Ok(root.lock().clone()), + |_| Err(VaultCommitFailure::Unchanged.into()), + ) + }); + let start = Instant::now(); + while !marketplace_token_is_rejected() && start.elapsed() < Duration::from_secs(5) { + std::thread::yield_now(); + } + let saw_revocation = marketplace_token_is_rejected(); + release_tx.send(()).unwrap(); + login.join().unwrap().unwrap(); + assert!(revoke.join().unwrap().is_err()); + assert!(saw_revocation); + assert!(marketplace_token_is_rejected()); + assert!(credentials_cache() + .lock() + .as_ref() + .and_then(lookup_marketplace_github_token) + .is_none()); + reset_credentials_cache_for_tests(); + mark_marketplace_token_verified(); + } + + #[cfg(not(windows))] + #[test] + fn sync_key_write_does_not_complete_or_delete_main_vault_migration() { + use super::super::android_credentials::{AndroidCredentialsCrypto, ReadOutcome}; + use base64::Engine; + let temp = Temporary::new(); + let main_path = temp.0.join("credentials.enc.json"); + let legacy = serde_json::to_vec(&root_with_secret("legacy-provider-secret")).unwrap(); + std::fs::write( + &main_path, + base64::engine::general_purpose::STANDARD.encode(&legacy), + ) + .unwrap(); + let account = + SyncSecretAccount::new(format!("cloud-sync.e2ee.key.{}", "c".repeat(64))).unwrap(); + let key = openless_core::SecretValue::new( + base64::engine::general_purpose::URL_SAFE_NO_PAD.encode([8; 32]), + ); + let mut wrapper = SyncSecretCrypto { + inner: super::super::android_credentials::TestCrypto::default(), + account: account.as_str().into(), + }; + write_android_sync_key_with_crypto( + &temp.0.join("sync-key.json"), + &account, + &key, + &mut wrapper, + ) + .unwrap(); + assert!(!wrapper.inner.migration_complete().unwrap()); + assert!(wrapper.migration_complete().unwrap()); + wrapper.delete_key().unwrap(); + assert_eq!(wrapper.inner.delete_key_calls, 0); + assert!(matches!( + super::super::android_credentials::read(&main_path, &mut wrapper.inner).unwrap(), + ReadOutcome::Legacy(_) + )); + let migrated = + load_android_credentials_from_path_with_crypto(&main_path, &mut wrapper.inner) + .unwrap() + .unwrap(); + assert_eq!( + migrated.providers.asr["stable-channel"].apiKey.as_deref(), + Some("legacy-provider-secret") + ); + assert!(wrapper.inner.migration_complete().unwrap()); + } + + #[cfg(not(windows))] + #[test] + fn android_sync_key_envelope_is_account_bound_and_never_plaintext() { + use base64::Engine; + let temp = Temporary::new(); + let path = temp.0.join("sync-key.json"); + let account = + SyncSecretAccount::new(format!("cloud-sync.e2ee.local.{}", "a".repeat(64))).unwrap(); + let other = + SyncSecretAccount::new(format!("cloud-sync.e2ee.local.{}", "b".repeat(64))).unwrap(); + let key = openless_core::SecretValue::new( + base64::engine::general_purpose::URL_SAFE_NO_PAD.encode([7; 32]), + ); + let mut crypto = SyncSecretCrypto { + inner: super::super::android_credentials::TestCrypto::default(), + account: account.as_str().into(), + }; + write_android_sync_key_with_crypto(&path, &account, &key, &mut crypto).unwrap(); + let bytes = std::fs::read(&path).unwrap(); + assert!(!String::from_utf8_lossy(&bytes).contains(key.expose_secret())); + assert_eq!( + read_android_sync_key_with_crypto(&path, &account, &mut crypto).unwrap(), + Some(key.clone()) + ); + crypto.account = other.as_str().into(); + assert!(read_android_sync_key_with_crypto(&path, &other, &mut crypto).is_err()); + assert!(path.exists()); + assert!(super::super::android_credentials::read(&path, &mut crypto.inner).is_err()); + assert!(path.exists()); + assert!(validate_sync_key(&openless_core::SecretValue::new("not-a-key")).is_err()); + } +} diff --git a/openless-all/app/src-tauri/src/selection.rs b/openless-all/app/src-tauri/src/selection.rs index d8106db74..a41503e2a 100644 --- a/openless-all/app/src-tauri/src/selection.rs +++ b/openless-all/app/src-tauri/src/selection.rs @@ -506,6 +506,12 @@ pub(crate) fn reactivate_selection_insertion_target(target: &SelectionInsertionT let Some(pid) = captured.front_app_pid else { return false; }; + // Streaming writes usually already own the foreground application. + // Do not reactivate it and sleep for 80ms on every delta; the caller + // still validates the captured text control before posting keys. + if current_front_app_pid() == Some(pid) { + return true; + } // 预览窗是 OpenLess 自己的窗口,确认后需要把焦点交还原应用再粘贴。 // NSRunningApplication activate 是 best-effort,且部分 app(Electron、 // 自绘窗口)恢复 key window 需要 >120ms——固定 sleep 一次就核 pid 会 diff --git a/openless-all/app/src-tauri/src/tauri_events.rs b/openless-all/app/src-tauri/src/tauri_events.rs index 6bb39ff86..ad87e1cb1 100644 --- a/openless-all/app/src-tauri/src/tauri_events.rs +++ b/openless-all/app/src-tauri/src/tauri_events.rs @@ -60,7 +60,26 @@ pub fn start(app: AppHandle, backend: Arc) { log::error!("[core-events] backend start failed: {error}"); return; } + if backend.ensure_runtime_ready().is_err() { + return; + } let preferences = backend.get_preferences(); + if !preferences.active_asr_provider.is_empty() { + if let Err(error) = crate::commands::sync_active_asr_provider_to_vault( + &preferences.active_asr_provider, + ) { + log::warn!("[startup] active ASR provider mirror failed: {error}"); + } + } + #[cfg(target_os = "windows")] + { + let target = openless_core::WindowsKeyboardRuntimeTarget::from(&preferences); + if let Err(error) = crate::windows_ime_profile::apply_windows_openless_keyboard_list( + target.openless_language_profile_enabled, + ) { + log::warn!("[windows-ime] startup keyboard visibility failed: {error}"); + } + } if let Err(error) = backend .services() .remote_input @@ -136,6 +155,16 @@ async fn forward_legacy_event( } match kind { BackendEventKind::PreferencesChanged(_) => emit_preferences(app, backend), + BackendEventKind::CloudSyncStateChanged(event) => { + let _ = app.emit_to("main", "cloud-sync-e2ee:state", event); + } + BackendEventKind::CloudSyncConflictDetected(event) => { + let _ = app.emit_to("main", "cloud-sync-e2ee:conflict", event); + } + BackendEventKind::CloudSyncRestoreCompleted(event) => { + emit_preferences(app, backend); + let _ = app.emit_to("main", "cloud-sync-e2ee:restored", event); + } BackendEventKind::CredentialsChanged(status) => { let _ = app.emit("credentials:changed", status); } @@ -304,7 +333,7 @@ async fn forward_legacy_event( let _ = app.emit_to( crate::coordinator::qa_event_target(), "qa:level", - serde_json::json!({ "level": level.level }), + serde_json::json!({ "sessionId": level.session_id, "level": level.level }), ); } BackendEventKind::QaState(state) => { diff --git a/openless-all/app/src-tauri/tauri.macos-mlx.conf.json b/openless-all/app/src-tauri/tauri.macos-mlx.conf.json index 4dcbd2b5d..d1fc4359c 100644 --- a/openless-all/app/src-tauri/tauri.macos-mlx.conf.json +++ b/openless-all/app/src-tauri/tauri.macos-mlx.conf.json @@ -5,6 +5,13 @@ }, "bundle": { "macOS": { + "dmg": { + "background": "dmg/installer-background@2x.png", + "windowPosition": { "x": 120, "y": 120 }, + "windowSize": { "width": 768, "height": 512 }, + "appPosition": { "x": 216, "y": 253 }, + "applicationFolderPosition": { "x": 552, "y": 253 } + }, "files": { "Resources/mlx.metallib": "target/release/openless-mlx/mlx.metallib" } diff --git a/openless-all/app/src/components/AutoUpdate.tsx b/openless-all/app/src/components/AutoUpdate.tsx index 907d8e969..674a012e4 100644 --- a/openless-all/app/src/components/AutoUpdate.tsx +++ b/openless-all/app/src/components/AutoUpdate.tsx @@ -340,7 +340,7 @@ export function UpdateDialog({ style={{ position: 'fixed', inset: 0, - background: 'rgba(0,0,0,0.22)', + background: 'var(--ol-dialog-backdrop)', display: 'grid', placeItems: 'center', zIndex: 40, @@ -350,10 +350,10 @@ export function UpdateDialog({
    diff --git a/openless-all/app/src/components/CloudSyncSetupPrompt.tsx b/openless-all/app/src/components/CloudSyncSetupPrompt.tsx new file mode 100644 index 000000000..c634280dd --- /dev/null +++ b/openless-all/app/src/components/CloudSyncSetupPrompt.tsx @@ -0,0 +1,214 @@ +import { useEffect, useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { CloudIcon, XIcon } from 'lucide-react'; +import { isTauri } from '../lib/ipc/shared'; +import { cloudSyncE2eeClaimSetupPrompt } from '../lib/ipc/cloud-sync-e2ee'; +import { CloudSyncSection } from '../pages/settings/CloudSyncSection'; +import { Modal } from './ui/Modal'; + +const PROMPT_EVENTS = new Set([ + 'backend_started', + 'preferences_changed', + 'credentials_changed', + 'dictation_completed', + 'dictation_state_changed', + 'qa_state', + 'selection_state_changed', + 'selection_voice_state_changed', + 'less_computer_event', + 'local_asr_engine_changed', + 'permission_changed', +]); + +/** Core owns eligibility and the durable once-per-installation claim. */ +export function CloudSyncSetupPrompt({ + blocked, + onSetup, +}: { + blocked: boolean; + onSetup: () => void; +}) { + const { t } = useTranslation(); + const [open, setOpen] = useState(false); + const checkRef = useRef(0); + const focusRef = useRef(null); + + useEffect(() => { + if (!isTauri || blocked) return; + let cancelled = false; + let inFlight = false; + let timer: ReturnType | undefined; + let unlisten: (() => void) | undefined; + const check = async () => { + if (cancelled || inFlight || document.visibilityState !== 'visible' || !document.hasFocus()) + return; + inFlight = true; + const request = ++checkRef.current; + try { + const claimed = await cloudSyncE2eeClaimSetupPrompt(); + if ( + !cancelled && + checkRef.current === request && + claimed && + document.visibilityState === 'visible' && + document.hasFocus() + ) + setOpen(true); + } catch { + // Denied credential reads and in-progress saves never consume consent + // or display a misleading configuration-complete message. + } finally { + inFlight = false; + } + }; + const schedule = () => { + if (timer) clearTimeout(timer); + timer = setTimeout(() => { + void check(); + }, 300); + }; + const invalidate = () => { + checkRef.current += 1; + setOpen(false); + }; + const eligibilityChanged = () => { + invalidate(); + schedule(); + }; + void import('@tauri-apps/api/event') + .then(async ({ listen }) => { + const handle = await listen<{ kind: { type: string } }>('backend:event', ({ payload }) => { + if (PROMPT_EVENTS.has(payload.kind.type)) eligibilityChanged(); + }); + if (cancelled) handle(); + else { + unlisten = handle; + schedule(); + } + }) + .catch(() => {}); + window.addEventListener('focus', schedule); + window.addEventListener('blur', invalidate); + document.addEventListener('visibilitychange', eligibilityChanged); + return () => { + cancelled = true; + checkRef.current += 1; + if (timer) clearTimeout(timer); + unlisten?.(); + window.removeEventListener('focus', schedule); + window.removeEventListener('blur', invalidate); + document.removeEventListener('visibilitychange', eligibilityChanged); + }; + }, [blocked]); + + useEffect(() => { + if (!open || blocked) return; + const previous = document.activeElement; + focusRef.current?.focus(); + return () => { + if (previous instanceof HTMLElement) previous.focus(); + }; + }, [open, blocked]); + + if (!open || blocked) return null; + return ( + setOpen(false)} width="min(480px, 100%)" zIndex={75}> +
    { + if (event.key === 'Escape') { + event.preventDefault(); + event.stopPropagation(); + setOpen(false); + } + if (event.key === 'Tab') { + const buttons = [...event.currentTarget.querySelectorAll('button')]; + const last = buttons[buttons.length - 1]; + const next = event.shiftKey ? last : buttons[0]; + if (document.activeElement === (event.shiftKey ? buttons[0] : last)) { + event.preventDefault(); + next?.focus(); + } + } + }} + > +
    +
    + ); +} + +/** Available before API-key setup. Opening this never enables sync or uploads. */ +export function CloudSyncWelcome() { + const { t } = useTranslation(); + const [open, setOpen] = useState(false); + return ( + <> + + {open && ( + setOpen(false)} width="min(680px, 100%)" zIndex={50}> +
    + +
    + +
    + )} + + ); +} diff --git a/openless-all/app/src/components/FloatingShell.tsx b/openless-all/app/src/components/FloatingShell.tsx index 114462417..b6c2bbe2f 100644 --- a/openless-all/app/src/components/FloatingShell.tsx +++ b/openless-all/app/src/components/FloatingShell.tsx @@ -8,6 +8,7 @@ import { Tooltip } from './Tooltip'; import { WindowChrome, detectOS, type OS } from './WindowChrome'; import { AudioCueListener } from './AudioCue'; import { SettingsModal } from './SettingsModal'; +import { CloudSyncSetupPrompt } from './CloudSyncSetupPrompt'; import { Overview } from '../pages/Overview'; import { History } from '../pages/History'; import { Vocab } from '../pages/Vocab'; @@ -635,6 +636,10 @@ function FloatingShellBody({ closing={providerPromptMount.closing} onLater={rememberProviderPrompt} onOpenSettings={openProviderSettings} + onRestore={() => { + rememberProviderPrompt(); + openSettings('privacy'); + }} /> ) : hotkeyPromptMount.mounted ? ( ) : null} + openSettings('privacy')} + /> {/* tab 切换 + provider prompt + footer popover 公用的入场关键帧 */} @@ -899,10 +908,12 @@ function ProviderSetupPrompt({ closing = false, onLater, onOpenSettings, + onRestore, }: { closing?: boolean; onLater: () => void; onOpenSettings: () => void; + onRestore: () => void; }) { const { t } = useTranslation(); return ( @@ -915,7 +926,7 @@ function ProviderSetupPrompt({ alignItems: 'center', justifyContent: 'center', padding: 28, - background: 'rgba(15,17,22,0.28)', + background: 'var(--ol-dialog-backdrop)', backdropFilter: 'blur(6px) saturate(140%)', WebkitBackdropFilter: 'blur(6px) saturate(140%)', animation: closing @@ -926,10 +937,10 @@ function ProviderSetupPrompt({
    {t('shell.providerPrompt.body')}
    +
    + + ); +} diff --git a/openless-all/app/src/i18n/de.ts b/openless-all/app/src/i18n/de.ts index f095de625..711afbd00 100644 --- a/openless-all/app/src/i18n/de.ts +++ b/openless-all/app/src/i18n/de.ts @@ -1,6 +1,163 @@ import type { zhCN } from './zh-CN'; export const de: typeof zhCN = { + cloudSyncE2ee: { + setupPromptTitle: 'Einrichtung verschlüsselt sichern?', + setupPromptBody: + 'Die Dienste sind eingerichtet. Einstellungen, API-Schlüssel und Textverlauf werden auf diesem Gerät verschlüsselt. Erst nach Ihrer Zustimmung und Aktivierung werden Daten hochgeladen.', + setupPromptLater: 'Jetzt nicht', + setupPromptOpen: 'Verschlüsselte Synchronisierung', + title: 'Verschlüsselte Cloud-Synchronisierung', + description: 'Vor der Synchronisierung mit deinem GitHub-Konto auf diesem Gerät verschlüsseln.', + enable: 'Verschlüsselte Synchronisierung aktivieren', + refresh: 'Status aktualisieren', + loading: 'Synchronisierungsstatus wird geprüft…', + signIn: 'Mit GitHub anmelden', + signOut: 'Abmelden', + account: 'Synchronisierungskonto', + keyLocked: 'Auf diesem Gerät gesperrt', + keyUnlocked: 'Auf diesem Gerät entsperrt', + hasSnapshot: 'Eine verschlüsselte Cloud-Sicherung ist verfügbar.', + noSnapshot: 'Noch keine verschlüsselte Cloud-Sicherung.', + snapshotUnknown: 'Cloud-Sicherung noch nicht geprüft.', + lastSync: 'Zuletzt synchronisiert: {{time}}', + syncNow: 'Jetzt synchronisieren', + checkPending: 'Ausstehendes Ergebnis prüfen', + unlock: 'Entsperren', + lock: 'Dieses Gerät sperren', + changePassword: 'Sync-Passwort ändern', + restore: 'Cloud-Wiederherstellung prüfen', + delete: 'Cloud-Sicherung löschen', + working: 'Wird verarbeitet…', + cancelTask: 'Aktuellen Vorgang abbrechen', + cancelRequested: 'Abbruch angefordert. Der Vorgang wird beendet.', + done: 'Synchronisierungseinstellungen aktualisiert.', + restored: 'Cloud-Daten wiederhergestellt. Gerätespezifische Einstellungen prüfen.', + retryAfter: 'In {{seconds}} Sekunden erneut versuchen.', + passwordWarning: + 'Bewahre dein Sync-Passwort sicher auf. Es ist nicht wiederherstellbar; bei Verlust können Cloud-Daten unlesbar werden.', + consentTitle: 'Ende-zu-Ende-verschlüsselte Synchronisierung aktivieren', + consentDescription: + 'Die Synchronisierung umfasst Dienstzugangsdaten und private Textverläufe. Alles wird vor dem Upload lokal verschlüsselt. Prüfe zuerst den vollständigen Umfang.', + scopeSummary: 'Vollständigen Umfang anzeigen', + consentCheck: + 'Ich verstehe den Umfang und stimme der verschlüsselten Synchronisierung dieser Daten zu.', + continue: 'Weiter', + createTitle: 'Sync-Passwort erstellen', + unlockTitle: 'Cloud-Sicherung entsperren', + passwordTitle: 'Sync-Passwort ändern', + create: 'Verschlüsselte Sicherung erstellen', + password: 'Sync-Passwort', + newPassword: 'Neues Sync-Passwort', + currentPassword: 'Aktuelles Sync-Passwort', + confirmPassword: 'Neues Passwort bestätigen', + passwordPolicy: + '12–128 Zeichen mit Groß- und Kleinbuchstaben sowie einer Zahl. Keine üblichen Passwörter verwenden.', + rememberKey: 'Entsperrschlüssel im sicheren Speicher dieses Geräts merken', + disableTitle: 'Verschlüsselte Synchronisierung ausschalten?', + disableDescription: + 'Weitere Synchronisierung wird gestoppt. Cloud-Sicherung und lokale Daten bleiben erhalten. Löschen ist eine separate Aktion.', + confirmDisable: 'Synchronisierung ausschalten', + deleteTitle: 'Verschlüsselte Cloud-Sicherung löschen?', + deleteDescription: + 'Nur die Cloud-Sicherung dieses Kontos wird gelöscht. Lokale Daten bleiben. Für ein anderes Gerät wird danach eine neue Sicherung benötigt.', + backupRetention: + 'Nach dem Löschen können Sicherungskopien des Dienstes bis zu {{days}} Tage aufbewahrt werden.', + deleteCheck: 'Ich bestätige die Löschung dieser Cloud-Sicherung.', + confirmDelete: 'Cloud-Sicherung löschen', + restoreTitle: 'Wiederherstellung prüfen', + restoreDescription: + 'Prüfe die Datenkategorien. Vertrauliche Werte bleiben verborgen. Ohne Bestätigung wird nichts wiederhergestellt.', + deviceReview: + 'Nach der Wiederherstellung {{count}} Geräteeinstellungen prüfen, etwa Tastenkürzel, Modellpfade, Mikrofone und Systemrechte.', + restoreMode: 'Wiederherstellungsart', + merge: 'Zusammenführen und Konflikte lösen', + replace: 'Synchronisierte lokale Daten durch Cloud-Daten ersetzen', + replaceWarning: + 'Lokale Daten im Sync-Umfang werden ersetzt. Zum Behalten lokaler Änderungen Zusammenführen wählen.', + restoreCheck: 'Ich habe Wiederherstellungsart und Konfliktentscheidungen geprüft.', + applyRestore: 'Wiederherstellung bestätigen', + conflictProgress: '{{selected}} von {{total}} Konflikten gelöst', + conflictItem: 'Konflikt {{index}} · {{category}}', + conflictLocal: 'Lokal behalten', + conflictCloud: 'Cloud verwenden', + previous: 'Zurück', + next: 'Weiter', + scope: { + preferences: 'App-Einstellungen und Oberfläche.', + credentials: + 'ASR-, LLM- und Omni-Kanäle samt API-Schlüsseln, IDs, Access Keys und Secret Keys.', + personal: 'Wörterbuch, eigene Wortlisten, Korrekturen, Stilpakete und Symbole.', + history: 'Alle Diktat- und Kurznotiz-Texte sowie Aktivitätsstatistiken.', + device: 'Geräteprofile zur Prüfung auf dem Zielgerät.', + excluded: + 'Nicht enthalten: OAuth-Anmeldesitzungen, Sync-Passwörter oder abgeleitete Schlüssel, OS-Zugangsdaten, PINs, Geräteberechtigungen, Originalaufnahmen oder Modellgewichte.', + }, + states: { + disabled: 'Synchronisierung aus', + sign_in_required: 'GitHub-Anmeldung erforderlich', + unlock_required: 'Zum Entsperren Passwort eingeben', + ready: 'Aktuell', + pending: 'Lokale Änderungen warten auf Synchronisierung', + syncing: 'Synchronisierung läuft', + conflict: 'Konflikte prüfen', + failed: 'Synchronisierung benötigt Aufmerksamkeit', + outcome_unknown: 'Cloud-Ergebnis noch unbestätigt', + recovery_required: 'Lokale Wiederherstellung erforderlich', + }, + categories: { + preferences: 'App-Einstellungen', + ui_preferences: 'Oberfläche', + channels: 'Dienstkanäle und Zugangsdaten', + provider_credentials: 'Dienstzugangsdaten', + dictionary: 'Wörterbuch', + vocabulary_presets: 'Eigene Wortlisten', + corrections: 'Korrekturen', + style_packs: 'Stilpakete und Symbole', + history: 'Textverlauf', + activity: 'Aktivitätsstatistiken', + device_profile: 'Geräteprofile', + other: 'Weitere Sync-Daten', + }, + conflictReasons: { + both_modified: 'Lokale und Cloud-Version wurden geändert.', + delete_modify: 'Eine Version wurde gelöscht, die andere geändert.', + no_common_baseline: 'Keine gemeinsame Ausgangsversion. Wähle die zu behaltende Version.', + other: 'Lokale oder Cloud-Version wählen. Werte werden nicht angezeigt.', + }, + errors: { + unknown: 'Vorgang fehlgeschlagen. Status aktualisieren und erneut versuchen.', + signIn: 'Erneut bei GitHub anmelden.', + unlock: 'Dieses Gerät zuerst mit dem Sync-Passwort entsperren.', + unavailable: + 'Verschlüsselte Synchronisierung nicht verfügbar. Native App verwenden und Dienst später prüfen.', + weakPassword: 'Ein stärkeres Passwort mit passender Länge und Zeichenwahl verwenden.', + passwordMismatch: 'Die Passwörter stimmen nicht überein.', + invalidPassword: + 'Passwort entsperrt die Sicherung nicht oder verschlüsselte Daten konnten nicht geprüft werden.', + secureStorage: + 'Zugriff auf sicheren Speicher verweigert. Berechtigungen prüfen oder ohne gespeicherten Schlüssel entsperren.', + changed: 'Daten wurden geändert. Dialog schließen, aktualisieren und neue Vorschau prüfen.', + accountChanged: 'GitHub-Konto geändert. Vor dem Fortfahren aktualisieren.', + busy: 'Ein Sync-Vorgang läuft. Warten oder zuerst abbrechen.', + cancelled: 'Vorgang abgebrochen.', + network: 'Sync-Dienst nicht erreichbar. Verbindung prüfen und erneut versuchen.', + rateLimited: 'Zu viele Anfragen. Vor erneutem Versuch warten.', + outcomeUnknown: + 'Cloud-Ergebnis unbestätigt. Ausstehenden Vorgang prüfen, bevor eine neue Sicherung erstellt wird.', + recovery: + 'Lokale Wiederherstellung nötig. Daten dieses Geräts behalten und Cloud-Sicherung nicht überschreiben.', + rolledBack: + 'Wiederherstellung fehlgeschlagen; lokale Änderungen zurückgesetzt. Vor erneutem Versuch aktualisieren.', + tooLarge: 'Verschlüsselte Sicherung überschreitet das Größenlimit.', + reviewRequired: 'Zuerst Sync-Umfang und Wiederherstellungsvorschau prüfen.', + choicesRequired: 'Für jeden Konflikt lokal oder Cloud wählen.', + invalidData: + 'Verschlüsselte Sicherung nicht verifizierbar. Lokale Daten wurden nicht ersetzt.', + localData: + 'Lokale Daten konnten nicht sicher vorbereitet werden. Aktualisieren und erneut versuchen.', + }, + }, cloudSync: { title: 'Cloud-Synchronisierung', description: @@ -110,6 +267,18 @@ export const de: typeof zhCN = { cancel: 'Abbrechen', }, qa: { + compact: { + closeError: 'Schließen fehlgeschlagen. Erneut versuchen.', + sendError: 'Senden fehlgeschlagen. Deine Eingabe bleibt erhalten. Erneut versuchen.', + microphoneError: 'Die Mikrofonaktion ist fehlgeschlagen. Erneut versuchen.', + modeError: 'Der Bearbeitungsmodus wurde nicht geändert. Erneut versuchen.', + conversation: 'Aktuelles Gespräch', + sending: 'Deine Frage wird gesendet…', + addUnavailable: 'Inhalt hinzufügen · noch nicht verfügbar', + browserUnavailable: 'Vorschau führt keine Befehle aus', + answer: 'OpenLess-Antwort', + layoutError: 'Das Fenster konnte nicht vergrößert werden. Schließe und öffne es erneut.', + }, title: 'Nachfragen', headerHint: 'Jederzeit fragen', thinking: 'Denkt nach…', @@ -142,6 +311,48 @@ export const de: typeof zhCN = { editInstructionMode: 'Bearbeitungsanweisung', }, lessComputer: { + desktop: { + approvedSubmitted: 'Freigabe gesendet', + deniedSubmitted: 'Ablehnung gesendet', + agents: 'Deine Agenten', + configured: 'Aktuell konfiguriert', + agentSettings: 'In Einstellungen wählen', + historyUnavailable: 'Verlauf · nicht verfügbar', + sessionUnavailable: 'Neue Sitzung · nicht verfügbar', + agentHint: 'Wähle den Agenten in den Einstellungen.', + workspace: 'Arbeitsbereich', + multitask: 'Mehrere Aufgaben', + unavailable: 'Noch nicht verfügbar', + historyHint: + 'Verlauf und mehrere Sitzungen sind für diese vier Agenten noch nicht verfügbar.', + signedIn: 'Angemeldet', + signIn: 'Anmelden', + currentSession: 'Aktuelles Gespräch', + minimize: 'Minimieren', + maximize: 'Maximieren / Wiederherstellen', + windowError: 'Die Fensteraktion ist fehlgeschlagen. Erneut versuchen.', + emptyHint: 'Beschreibe eine Aufgabe oder nutze dein eingerichtetes Sprachkürzel.', + voiceHint: 'Sprachkürzel gedrückt halten', + idle: 'Wartet auf eine Aufgabe', + waitingApproval: 'Wartet auf Freigabe', + submittingApproval: 'Wird gesendet…', + approvalError: 'Die Freigabe wurde nicht gesendet. Erneut versuchen.', + approvalExpired: 'Dieser Durchlauf ist beendet. Eine Freigabe ist nicht mehr möglich.', + sendError: 'Senden fehlgeschlagen. Deine Eingabe bleibt erhalten. Erneut versuchen.', + browserUnavailable: 'Die Browser-Vorschau führt keine Befehle aus. Nutze die Desktop-App.', + cancelHint: 'Eine laufende Aufgabe kannst du über die Kapsel abbrechen.', + inputHint: 'Enter zum Senden · Umschalt + Enter für eine neue Zeile', + activity: 'Aufgabenaktivität', + noActivity: 'Noch keine Aktivität', + activityHint: 'Werkzeugaufrufe und Freigaben erscheinen hier, sobald eine Aufgabe startet.', + currentTask: 'Aktuelle Aufgabe', + toolActive: 'Wird aufgerufen', + toolReported: 'Aufruf gemeldet', + approval: 'Aktionsfreigabe', + apiCost: 'API-Kosten dieses Durchlaufs', + activitySource: + 'Folgt der aktuellen Aufgabe. Kosten erscheinen nur, wenn der Dienst sie meldet.', + }, title: 'Less Computer', subtitle: 'Was soll dein Computer tun?', you: 'Du', @@ -1492,15 +1703,16 @@ export const de: typeof zhCN = { bailianVocabularyIdLabel: 'Wörterbuch-ID für Begriffe (optional)', bailianVocabularyIdNote: 'Wenn du bei DashScope ein Begriffswörterbuch erstellt hast, gib seine vocab-... ID ein. Leer lassen, um keine Begriffe zu übergeben.', - bailianProtocolLabel: "API-Typ", - bailianProtocolNote: "Die manuelle Auswahl ersetzt die Erkennung anhand des Modellnamens und gilt pro Kanal für Prüfung und Aufnahme. Beachten Sie die Modelldokumentation.", + bailianProtocolLabel: 'API-Typ', + bailianProtocolNote: + 'Die manuelle Auswahl ersetzt die Erkennung anhand des Modellnamens und gilt pro Kanal für Prüfung und Aufnahme. Beachten Sie die Modelldokumentation.', bailianProtocolOptions: { - "auto": "Automatisch", - "dashscope-realtime": "Echtzeit (DashScope)", - "qwen-realtime": "Echtzeit (Qwen Realtime)", - "multimodal": "Synchron, nicht in Echtzeit (Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "Synchron, nicht in Echtzeit (Qwen3-ASR)", - "async-transcription": "Asynchron (Dateitranskription)", + auto: 'Automatisch', + 'dashscope-realtime': 'Echtzeit (DashScope)', + 'qwen-realtime': 'Echtzeit (Qwen Realtime)', + multimodal: 'Synchron, nicht in Echtzeit (Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': 'Synchron, nicht in Echtzeit (Qwen3-ASR)', + 'async-transcription': 'Asynchron (Dateitranskription)', }, bailianModelRealtimeHint: 'Echtzeitmodell · transkribiert während des Sprechens.', bailianModelSyncFileHint: diff --git a/openless-all/app/src/i18n/en.ts b/openless-all/app/src/i18n/en.ts index 2a9919e82..5914b80f0 100644 --- a/openless-all/app/src/i18n/en.ts +++ b/openless-all/app/src/i18n/en.ts @@ -4,6 +4,159 @@ import type { zhCN } from './zh-CN'; // Type-level guarantee that en mirrors the zh-CN shape. export const en: typeof zhCN = { + cloudSyncE2ee: { + setupPromptTitle: 'Back up your setup securely?', + setupPromptBody: + 'Your service setup is complete. Settings, service API keys and text history are encrypted on this device. Uploads start only after you review the scope and enable sync.', + setupPromptLater: 'Not now', + setupPromptOpen: 'Explore encrypted sync', + title: 'Encrypted cloud sync', + description: 'Encrypt on this device before syncing with your GitHub account.', + enable: 'Enable encrypted sync', + refresh: 'Refresh status', + loading: 'Checking sync status…', + signIn: 'Sign in with GitHub', + signOut: 'Sign out', + account: 'Sync account', + keyLocked: 'Locked on this device', + keyUnlocked: 'Unlocked on this device', + hasSnapshot: 'An encrypted cloud backup is available.', + noSnapshot: 'No encrypted cloud backup yet.', + snapshotUnknown: 'Cloud backup has not been checked yet.', + lastSync: 'Last synced {{time}}', + syncNow: 'Sync now', + checkPending: 'Check pending result', + unlock: 'Unlock', + lock: 'Lock this device', + changePassword: 'Change sync password', + restore: 'Review cloud restore', + delete: 'Delete cloud backup', + working: 'Working securely…', + cancelTask: 'Cancel current task', + cancelRequested: 'Cancellation requested. Waiting for the task to settle.', + done: 'Sync settings updated.', + restored: 'Cloud data restored. Review settings specific to this device.', + retryAfter: 'Try again in {{seconds}} seconds.', + passwordWarning: + 'Keep your sync password safe. It cannot be recovered; losing it can make cloud data unreadable.', + consentTitle: 'Enable end-to-end encrypted sync', + consentDescription: + 'This sync includes service credentials and private text history. Data is encrypted on your device before upload. Review the full scope first.', + scopeSummary: 'View everything included', + consentCheck: 'I understand the full scope and agree to sync this data in encrypted form.', + continue: 'Continue', + createTitle: 'Create a sync password', + unlockTitle: 'Unlock your cloud backup', + passwordTitle: 'Change your sync password', + create: 'Create encrypted backup', + password: 'Sync password', + newPassword: 'New sync password', + currentPassword: 'Current sync password', + confirmPassword: 'Confirm new password', + passwordPolicy: + 'Use 12–128 characters with uppercase and lowercase letters and a number. Avoid common passwords.', + rememberKey: 'Remember the unlock key in this device’s secure storage', + disableTitle: 'Turn off encrypted sync?', + disableDescription: + 'This stops further sync. Your cloud backup and local data are kept. Deleting the cloud backup is a separate action.', + confirmDisable: 'Turn off sync', + deleteTitle: 'Delete the encrypted cloud backup?', + deleteDescription: + 'Only this account’s cloud backup is deleted. Local data is kept. You will need a new backup to restore on another device.', + backupRetention: + 'After deletion, service backup copies may be retained for up to {{days}} days.', + deleteCheck: 'I confirm deletion of this cloud backup.', + confirmDelete: 'Delete cloud backup', + restoreTitle: 'Review before restoring', + restoreDescription: + 'Review the categories below. Sensitive values stay hidden. Nothing is restored until you confirm.', + deviceReview: + 'After restoring, review {{count}} device settings, including shortcuts, model paths, microphones and system permissions.', + restoreMode: 'How to restore', + merge: 'Merge and resolve conflicts', + replace: 'Replace synced local data with cloud data', + replaceWarning: + 'This replaces local data within the sync scope. Choose merge if you need to keep local changes.', + restoreCheck: 'I have reviewed the restore mode and conflict choices.', + applyRestore: 'Confirm restore', + conflictProgress: '{{selected}} of {{total}} conflicts resolved', + conflictItem: 'Conflict {{index}} · {{category}}', + conflictLocal: 'Keep local', + conflictCloud: 'Use cloud', + previous: 'Previous', + next: 'Next', + scope: { + preferences: 'App preferences and interface settings.', + credentials: + 'ASR, LLM and Omni channels, including service API keys, IDs, access keys and secret keys.', + personal: 'Dictionary, custom vocabulary presets, corrections, style packs and icons.', + history: 'All dictation and quick-note text history, plus activity statistics.', + device: 'Device configuration profiles, to review on the receiving device.', + excluded: + 'Not included: OAuth login sessions, sync passwords or derived keys, OS credential files, PINs, device permissions, original audio/video recordings, or model weights.', + }, + states: { + disabled: 'Sync is off', + sign_in_required: 'GitHub sign-in required', + unlock_required: 'Enter your password to unlock', + ready: 'Up to date', + pending: 'Local changes are waiting to sync', + syncing: 'Sync in progress', + conflict: 'Review conflicting changes', + failed: 'Sync needs attention', + outcome_unknown: 'Waiting to confirm the cloud result', + recovery_required: 'Local recovery is required', + }, + categories: { + preferences: 'App preferences', + ui_preferences: 'Interface settings', + channels: 'Service channels and credentials', + provider_credentials: 'Service credentials', + dictionary: 'Dictionary', + vocabulary_presets: 'Custom vocabulary presets', + corrections: 'Corrections', + style_packs: 'Style packs and icons', + history: 'Text history', + activity: 'Activity statistics', + device_profile: 'Device profiles', + other: 'Other synced data', + }, + conflictReasons: { + both_modified: 'Both local and cloud versions changed.', + delete_modify: 'One version was deleted while the other changed.', + no_common_baseline: 'No shared baseline is available. Choose which version to keep.', + other: 'Choose the local or cloud version. Values are not displayed.', + }, + errors: { + unknown: 'The operation could not be completed. Refresh the status and try again.', + signIn: 'Sign in to GitHub again.', + unlock: 'Unlock this device with your sync password first.', + unavailable: + 'Encrypted sync is unavailable here. Use the native app and check the service later.', + weakPassword: 'Choose a stronger password meeting the length and character requirements.', + passwordMismatch: 'The two passwords do not match.', + invalidPassword: + 'The password could not unlock this backup, or the encrypted data could not be verified.', + secureStorage: + 'Secure storage denied access. Check device permissions, or unlock without remembering the key.', + changed: 'Data changed during review. Close this dialog, refresh, and review a new preview.', + accountChanged: 'The GitHub account changed. Refresh before continuing.', + busy: 'Another sync task is running. Wait or cancel it first.', + cancelled: 'The task was cancelled.', + network: 'Could not reach the sync service. Check your connection and try again.', + rateLimited: 'Too many requests. Wait before retrying.', + outcomeUnknown: + 'The cloud result is not confirmed. Check the pending result before creating another backup.', + recovery: + 'Local recovery is needed. Keep this device’s data and do not overwrite the cloud backup.', + rolledBack: 'Restore failed and local changes were rolled back. Refresh before trying again.', + tooLarge: 'The encrypted backup exceeds the service’s size limit.', + reviewRequired: 'Review the full sync scope and the cloud restore preview before continuing.', + choicesRequired: 'Choose local or cloud for every conflict.', + invalidData: 'The encrypted backup could not be verified. Local data was not replaced.', + localData: 'Could not prepare local data securely. Refresh and try again.', + }, + }, cloudSync: { title: 'Cloud sync', description: @@ -110,6 +263,18 @@ export const en: typeof zhCN = { cancel: 'Cancel', }, qa: { + compact: { + closeError: 'Could not close. Try again.', + sendError: 'Could not send. Your draft is kept here; try again.', + microphoneError: 'The microphone action failed. Try again.', + modeError: 'Edit mode was not changed. Try again.', + conversation: 'Current conversation', + sending: 'Sending your question…', + addUnavailable: 'Add content · not available yet', + browserUnavailable: 'Preview cannot run commands', + answer: 'OpenLess answer', + layoutError: 'Could not expand the window. Close and reopen it.', + }, title: 'Ask', headerHint: 'Ask anytime', thinking: 'Thinking…', @@ -142,6 +307,46 @@ export const en: typeof zhCN = { editInstructionMode: 'Edit instruction', }, lessComputer: { + desktop: { + approvedSubmitted: 'Approval sent', + deniedSubmitted: 'Denial sent', + agents: 'Your agents', + configured: 'Configured agent', + agentSettings: 'Choose in Settings', + historyUnavailable: 'History · unavailable', + sessionUnavailable: 'New session · unavailable', + agentHint: 'Choose your agent in Settings.', + workspace: 'Workspace', + multitask: 'Multiple tasks', + unavailable: 'Not available yet', + historyHint: 'History and multiple sessions are not available for these four agents yet.', + signedIn: 'Signed in', + signIn: 'Sign in', + currentSession: 'Current conversation', + minimize: 'Minimize', + maximize: 'Maximize / restore', + windowError: 'The window action failed. Try again.', + emptyHint: 'Describe a task, or use your configured voice shortcut to get started.', + voiceHint: 'Hold your voice shortcut', + idle: 'Waiting for a task', + waitingApproval: 'Waiting for approval', + submittingApproval: 'Submitting…', + approvalError: 'Approval was not submitted. Try again.', + approvalExpired: 'This turn has ended. Approval is no longer available.', + sendError: 'Could not send. Your draft is saved here; try again.', + browserUnavailable: 'This browser preview cannot run commands. Use the desktop app.', + cancelHint: 'Cancel a running task from the capsule.', + inputHint: 'Enter to send · Shift + Enter for a new line', + activity: 'Task activity', + noActivity: 'No activity yet', + activityHint: 'Tool calls and approvals will appear here when a task starts.', + currentTask: 'Current task', + toolActive: 'Calling tool', + toolReported: 'Call reported', + approval: 'Action approval', + apiCost: 'API cost this turn', + activitySource: 'Updates with this task. Cost appears only when reported by the service.', + }, title: 'Less Computer', subtitle: 'What should your computer do?', you: 'You', @@ -1462,15 +1667,16 @@ export const en: typeof zhCN = { bailianVocabularyIdLabel: 'Hotword Vocabulary ID (optional)', bailianVocabularyIdNote: 'If you have created a DashScope hotword vocabulary, enter its vocab-... ID. Leave blank to skip hotwords.', - bailianProtocolLabel: "API type", - bailianProtocolNote: "Manual selection overrides model-name detection and is saved per channel for both validation and recording. Choose the API specified by the model documentation.", + bailianProtocolLabel: 'API type', + bailianProtocolNote: + 'Manual selection overrides model-name detection and is saved per channel for both validation and recording. Choose the API specified by the model documentation.', bailianProtocolOptions: { - "auto": "Automatic", - "dashscope-realtime": "Realtime (DashScope)", - "qwen-realtime": "Realtime (Qwen Realtime)", - "multimodal": "Non-realtime synchronous (Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "Non-realtime synchronous (Qwen3-ASR)", - "async-transcription": "Non-realtime asynchronous (file transcription)", + auto: 'Automatic', + 'dashscope-realtime': 'Realtime (DashScope)', + 'qwen-realtime': 'Realtime (Qwen Realtime)', + multimodal: 'Non-realtime synchronous (Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': 'Non-realtime synchronous (Qwen3-ASR)', + 'async-transcription': 'Non-realtime asynchronous (file transcription)', }, bailianModelRealtimeHint: 'Realtime model · transcribes as you speak.', bailianModelSyncFileHint: diff --git a/openless-all/app/src/i18n/es.ts b/openless-all/app/src/i18n/es.ts index eea8bd8b3..da7eb9384 100644 --- a/openless-all/app/src/i18n/es.ts +++ b/openless-all/app/src/i18n/es.ts @@ -1,6 +1,161 @@ import type { zhCN } from './zh-CN'; export const es: typeof zhCN = { + cloudSyncE2ee: { + setupPromptTitle: '¿Guardar una copia cifrada?', + setupPromptBody: + 'Los servicios están configurados. Los ajustes, claves de API e historial de texto se cifran en este dispositivo. Solo se suben tras revisar el alcance y activar la sincronización.', + setupPromptLater: 'Ahora no', + setupPromptOpen: 'Ver sincronización cifrada', + title: 'Sincronización cifrada en la nube', + description: 'Cifra en este dispositivo antes de sincronizar con tu cuenta de GitHub.', + enable: 'Activar sincronización cifrada', + refresh: 'Actualizar estado', + loading: 'Comprobando la sincronización…', + signIn: 'Iniciar sesión con GitHub', + signOut: 'Cerrar sesión', + account: 'Cuenta de sincronización', + keyLocked: 'Bloqueado en este dispositivo', + keyUnlocked: 'Desbloqueado en este dispositivo', + hasSnapshot: 'Hay una copia cifrada en la nube.', + noSnapshot: 'Todavía no hay una copia cifrada en la nube.', + snapshotUnknown: 'La copia en la nube aún no se ha comprobado.', + lastSync: 'Última sincronización: {{time}}', + syncNow: 'Sincronizar ahora', + checkPending: 'Comprobar resultado pendiente', + unlock: 'Desbloquear', + lock: 'Bloquear este dispositivo', + changePassword: 'Cambiar contraseña de sincronización', + restore: 'Revisar restauración desde la nube', + delete: 'Eliminar copia en la nube', + working: 'Procesando…', + cancelTask: 'Cancelar tarea actual', + cancelRequested: 'Cancelación solicitada. Esperando a que termine la tarea.', + done: 'Configuración de sincronización actualizada.', + restored: 'Datos restaurados. Revisa los ajustes específicos de este dispositivo.', + retryAfter: 'Inténtalo de nuevo en {{seconds}} segundos.', + passwordWarning: + 'Guarda tu contraseña. No se puede recuperar; perderla puede impedir leer los datos de la nube.', + consentTitle: 'Activar sincronización cifrada de extremo a extremo', + consentDescription: + 'Incluye credenciales de servicios e historial de textos privados. Los datos se cifran en el dispositivo antes de subirlos. Revisa todo el alcance.', + scopeSummary: 'Ver el alcance completo', + consentCheck: 'Entiendo el alcance y acepto sincronizar estos datos cifrados.', + continue: 'Continuar', + createTitle: 'Crear contraseña de sincronización', + unlockTitle: 'Desbloquear copia en la nube', + passwordTitle: 'Cambiar contraseña de sincronización', + create: 'Crear copia cifrada', + password: 'Contraseña de sincronización', + newPassword: 'Nueva contraseña de sincronización', + currentPassword: 'Contraseña actual', + confirmPassword: 'Confirmar nueva contraseña', + passwordPolicy: + 'Usa 12–128 caracteres con mayúsculas, minúsculas y un número. Evita contraseñas comunes.', + rememberKey: 'Recordar la clave en el almacenamiento seguro del dispositivo', + disableTitle: '¿Desactivar la sincronización cifrada?', + disableDescription: + 'Se detiene la sincronización. Se conservan la copia en la nube y los datos locales. Eliminar la copia es una acción separada.', + confirmDisable: 'Desactivar sincronización', + deleteTitle: '¿Eliminar la copia cifrada en la nube?', + deleteDescription: + 'Solo se elimina la copia en la nube de esta cuenta. Los datos locales permanecen. Necesitarás una nueva copia para restaurar en otro dispositivo.', + backupRetention: + 'Tras la eliminación, el servicio puede conservar copias de seguridad durante un máximo de {{days}} días.', + deleteCheck: 'Confirmo que quiero eliminar esta copia en la nube.', + confirmDelete: 'Eliminar copia en la nube', + restoreTitle: 'Revisar antes de restaurar', + restoreDescription: + 'Revisa las categorías. Los valores sensibles permanecen ocultos. No se restaura nada hasta que confirmes.', + deviceReview: + 'Después de restaurar, revisa {{count}} ajustes del dispositivo: atajos, rutas de modelos, micrófonos y permisos del sistema.', + restoreMode: 'Modo de restauración', + merge: 'Combinar y resolver conflictos', + replace: 'Reemplazar datos locales sincronizados por los de la nube', + replaceWarning: + 'Se reemplazarán los datos locales incluidos. Elige combinar para conservar cambios locales.', + restoreCheck: 'He revisado el modo y las decisiones sobre conflictos.', + applyRestore: 'Confirmar restauración', + conflictProgress: '{{selected}} de {{total}} conflictos resueltos', + conflictItem: 'Conflicto {{index}} · {{category}}', + conflictLocal: 'Conservar local', + conflictCloud: 'Usar nube', + previous: 'Anterior', + next: 'Siguiente', + scope: { + preferences: 'Preferencias de la aplicación y de la interfaz.', + credentials: + 'Canales ASR, LLM y Omni con claves API, IDs, claves de acceso y claves secretas.', + personal: 'Diccionario, vocabularios personalizados, correcciones, estilos e iconos.', + history: 'Todo el historial de textos dictados y notas rápidas, y estadísticas de actividad.', + device: 'Perfiles de configuración para revisar en el dispositivo de destino.', + excluded: + 'No incluye sesiones OAuth, contraseñas de sincronización ni claves derivadas, archivos de credenciales del sistema, PIN, permisos, grabaciones originales de audio/vídeo ni pesos de modelos.', + }, + states: { + disabled: 'Sincronización desactivada', + sign_in_required: 'Se requiere iniciar sesión con GitHub', + unlock_required: 'Introduce tu contraseña para desbloquear', + ready: 'Actualizado', + pending: 'Cambios locales pendientes de sincronizar', + syncing: 'Sincronizando', + conflict: 'Revisar cambios en conflicto', + failed: 'La sincronización requiere atención', + outcome_unknown: 'Resultado en la nube sin confirmar', + recovery_required: 'Se requiere recuperación local', + }, + categories: { + preferences: 'Preferencias de la aplicación', + ui_preferences: 'Interfaz', + channels: 'Canales y credenciales de servicios', + provider_credentials: 'Credenciales de servicios', + dictionary: 'Diccionario', + vocabulary_presets: 'Vocabularios personalizados', + corrections: 'Correcciones', + style_packs: 'Estilos e iconos', + history: 'Historial de textos', + activity: 'Estadísticas de actividad', + device_profile: 'Perfiles de dispositivos', + other: 'Otros datos sincronizados', + }, + conflictReasons: { + both_modified: 'Se modificaron las versiones local y de la nube.', + delete_modify: 'Se eliminó una versión y se modificó la otra.', + no_common_baseline: 'No hay una base común. Elige la versión que quieres conservar.', + other: 'Elige la versión local o de la nube. No se muestran los valores.', + }, + errors: { + unknown: 'No se pudo completar la operación. Actualiza el estado y vuelve a intentarlo.', + signIn: 'Vuelve a iniciar sesión con GitHub.', + unlock: 'Primero desbloquea el dispositivo con la contraseña de sincronización.', + unavailable: + 'La sincronización cifrada no está disponible. Usa la aplicación nativa y comprueba el servicio más tarde.', + weakPassword: 'Elige una contraseña más fuerte que cumpla los requisitos.', + passwordMismatch: 'Las contraseñas no coinciden.', + invalidPassword: + 'La contraseña no desbloqueó la copia o no se pudieron verificar los datos cifrados.', + secureStorage: + 'Acceso al almacenamiento seguro denegado. Revisa permisos o desbloquea sin recordar la clave.', + changed: 'Los datos cambiaron. Cierra el diálogo, actualiza y revisa una nueva vista previa.', + accountChanged: 'La cuenta GitHub cambió. Actualiza antes de continuar.', + busy: 'Hay otra tarea de sincronización en curso. Espera o cancélala.', + cancelled: 'Tarea cancelada.', + network: 'No se pudo conectar con el servicio. Comprueba la conexión y vuelve a intentarlo.', + rateLimited: 'Demasiadas solicitudes. Espera antes de reintentar.', + outcomeUnknown: + 'Resultado sin confirmar. Comprueba la operación pendiente antes de crear otra copia.', + recovery: + 'Se necesita recuperación local. Conserva los datos de este dispositivo y no sobrescribas la copia en la nube.', + rolledBack: + 'La restauración falló y se revirtieron los cambios locales. Actualiza antes de reintentar.', + tooLarge: 'La copia cifrada supera el límite de tamaño del servicio.', + reviewRequired: 'Revisa el alcance y la vista previa de restauración antes de continuar.', + choicesRequired: 'Elige local o nube para cada conflicto.', + invalidData: 'No se pudo verificar la copia cifrada. No se reemplazaron datos locales.', + localData: + 'No se pudieron preparar los datos locales de forma segura. Actualiza y vuelve a intentarlo.', + }, + }, cloudSync: { title: 'Sincronización en la nube', description: @@ -110,6 +265,18 @@ export const es: typeof zhCN = { cancel: 'Cancelar', }, qa: { + compact: { + closeError: 'No se pudo cerrar. Inténtalo de nuevo.', + sendError: 'No se pudo enviar. Tu texto se conserva. Inténtalo de nuevo.', + microphoneError: 'La acción del micrófono ha fallado. Inténtalo de nuevo.', + modeError: 'No se cambió el modo de edición. Inténtalo de nuevo.', + conversation: 'Conversación actual', + sending: 'Enviando tu pregunta…', + addUnavailable: 'Añadir contenido · aún no disponible', + browserUnavailable: 'La vista previa no ejecuta comandos', + answer: 'Respuesta de OpenLess', + layoutError: 'No se pudo ampliar la ventana. Ciérrala y vuelve a abrirla.', + }, title: 'Preguntar', headerHint: 'Pregunta cuando quieras', thinking: 'Pensando…', @@ -142,6 +309,48 @@ export const es: typeof zhCN = { editInstructionMode: 'Instrucción de edición', }, lessComputer: { + desktop: { + approvedSubmitted: 'Aprobación enviada', + deniedSubmitted: 'Rechazo enviado', + agents: 'Tus agentes', + configured: 'Agente configurado', + agentSettings: 'Elegir en Ajustes', + historyUnavailable: 'Historial · no disponible', + sessionUnavailable: 'Nueva sesión · no disponible', + agentHint: 'Elige tu agente en Ajustes.', + workspace: 'Espacio de trabajo', + multitask: 'Varias tareas', + unavailable: 'Aún no disponible', + historyHint: + 'El historial y las sesiones múltiples aún no están disponibles para estos cuatro agentes.', + signedIn: 'Sesión iniciada', + signIn: 'Iniciar sesión', + currentSession: 'Conversación actual', + minimize: 'Minimizar', + maximize: 'Maximizar / restaurar', + windowError: 'La acción de la ventana ha fallado. Inténtalo de nuevo.', + emptyHint: 'Describe una tarea o usa tu atajo de voz configurado para empezar.', + voiceHint: 'Mantén pulsado tu atajo de voz', + idle: 'Esperando una tarea', + waitingApproval: 'Esperando aprobación', + submittingApproval: 'Enviando…', + approvalError: 'No se ha enviado la aprobación. Inténtalo de nuevo.', + approvalExpired: 'Este turno ha terminado. Ya no se puede aprobar.', + sendError: 'No se pudo enviar. Tu texto sigue aquí. Inténtalo de nuevo.', + browserUnavailable: 'Esta vista previa no ejecuta comandos. Usa la aplicación de escritorio.', + cancelHint: 'Cancela una tarea en curso desde la cápsula.', + inputHint: 'Intro para enviar · Mayús + Intro para una nueva línea', + activity: 'Actividad de la tarea', + noActivity: 'Aún no hay actividad', + activityHint: + 'Las llamadas a herramientas y las aprobaciones aparecerán al iniciar una tarea.', + currentTask: 'Tarea actual', + toolActive: 'Llamada en curso', + toolReported: 'Llamada recibida', + approval: 'Aprobación de acción', + apiCost: 'Coste de API de este turno', + activitySource: 'Sigue la tarea actual. El coste solo aparece si el servicio lo comunica.', + }, title: 'Less Computer', subtitle: '¿Qué quieres que haga tu ordenador?', you: 'Tú', @@ -1483,15 +1692,16 @@ export const es: typeof zhCN = { bailianVocabularyIdLabel: 'ID del vocabulario de palabras clave (opcional)', bailianVocabularyIdNote: 'Si creaste un vocabulario en DashScope, introduce su ID vocab-... Déjalo vacío para no usar palabras clave.', - bailianProtocolLabel: "Tipo de API", - bailianProtocolNote: "La selección manual prevalece sobre el nombre del modelo y se guarda por canal para validar y grabar. Consulte la documentación del modelo.", + bailianProtocolLabel: 'Tipo de API', + bailianProtocolNote: + 'La selección manual prevalece sobre el nombre del modelo y se guarda por canal para validar y grabar. Consulte la documentación del modelo.', bailianProtocolOptions: { - "auto": "Automático", - "dashscope-realtime": "Tiempo real (DashScope)", - "qwen-realtime": "Tiempo real (Qwen Realtime)", - "multimodal": "Síncrono no en tiempo real (Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "Síncrono no en tiempo real (Qwen3-ASR)", - "async-transcription": "Asíncrono (transcripción de archivos)", + auto: 'Automático', + 'dashscope-realtime': 'Tiempo real (DashScope)', + 'qwen-realtime': 'Tiempo real (Qwen Realtime)', + multimodal: 'Síncrono no en tiempo real (Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': 'Síncrono no en tiempo real (Qwen3-ASR)', + 'async-transcription': 'Asíncrono (transcripción de archivos)', }, bailianModelRealtimeHint: 'Modelo en tiempo real: transcribe mientras hablas.', bailianModelSyncFileHint: diff --git a/openless-all/app/src/i18n/fr.ts b/openless-all/app/src/i18n/fr.ts index 0030543a5..0539bb07b 100644 --- a/openless-all/app/src/i18n/fr.ts +++ b/openless-all/app/src/i18n/fr.ts @@ -1,6 +1,164 @@ import type { zhCN } from './zh-CN'; export const fr: typeof zhCN = { + cloudSyncE2ee: { + setupPromptTitle: 'Sauvegarder votre configuration ?', + setupPromptBody: + 'Les services sont configurés. Réglages, clés API et historique texte sont chiffrés sur cet appareil. L’envoi commence uniquement après examen du périmètre et activation.', + setupPromptLater: 'Pas maintenant', + setupPromptOpen: 'Découvrir la synchronisation', + title: 'Synchronisation cloud chiffrée', + description: 'Chiffrez sur cet appareil avant de synchroniser avec votre compte GitHub.', + enable: 'Activer la synchronisation chiffrée', + refresh: 'Actualiser l’état', + loading: 'Vérification de la synchronisation…', + signIn: 'Se connecter avec GitHub', + signOut: 'Se déconnecter', + account: 'Compte de synchronisation', + keyLocked: 'Verrouillé sur cet appareil', + keyUnlocked: 'Déverrouillé sur cet appareil', + hasSnapshot: 'Une sauvegarde cloud chiffrée est disponible.', + noSnapshot: 'Aucune sauvegarde cloud chiffrée pour le moment.', + snapshotUnknown: 'La sauvegarde cloud n’a pas encore été vérifiée.', + lastSync: 'Dernière synchronisation : {{time}}', + syncNow: 'Synchroniser maintenant', + checkPending: 'Vérifier le résultat en attente', + unlock: 'Déverrouiller', + lock: 'Verrouiller cet appareil', + changePassword: 'Modifier le mot de passe', + restore: 'Examiner la restauration cloud', + delete: 'Supprimer la sauvegarde cloud', + working: 'Traitement en cours…', + cancelTask: 'Annuler la tâche en cours', + cancelRequested: 'Annulation demandée. Fin de la tâche en cours.', + done: 'Paramètres de synchronisation mis à jour.', + restored: 'Données cloud restaurées. Vérifiez les réglages propres à cet appareil.', + retryAfter: 'Réessayez dans {{seconds}} secondes.', + passwordWarning: + 'Conservez votre mot de passe. Il est irrécupérable ; sa perte peut rendre les données cloud illisibles.', + consentTitle: 'Activer la synchronisation chiffrée de bout en bout', + consentDescription: + 'La synchronisation inclut les identifiants de services et l’historique de textes privés. Les données sont chiffrées sur l’appareil avant envoi. Consultez le périmètre complet.', + scopeSummary: 'Voir le périmètre complet', + consentCheck: + 'Je comprends le périmètre et j’accepte la synchronisation chiffrée de ces données.', + continue: 'Continuer', + createTitle: 'Créer un mot de passe de synchronisation', + unlockTitle: 'Déverrouiller la sauvegarde cloud', + passwordTitle: 'Modifier le mot de passe de synchronisation', + create: 'Créer une sauvegarde chiffrée', + password: 'Mot de passe de synchronisation', + newPassword: 'Nouveau mot de passe', + currentPassword: 'Mot de passe actuel', + confirmPassword: 'Confirmer le nouveau mot de passe', + passwordPolicy: + '12 à 128 caractères avec majuscule, minuscule et chiffre. Évitez les mots de passe courants.', + rememberKey: 'Mémoriser la clé dans le stockage sécurisé de cet appareil', + disableTitle: 'Désactiver la synchronisation chiffrée ?', + disableDescription: + 'Les synchronisations cessent. La sauvegarde cloud et les données locales sont conservées. La suppression est une action distincte.', + confirmDisable: 'Désactiver la synchronisation', + deleteTitle: 'Supprimer la sauvegarde cloud chiffrée ?', + deleteDescription: + 'Seule la sauvegarde cloud de ce compte sera supprimée. Les données locales restent. Une nouvelle sauvegarde sera nécessaire pour un autre appareil.', + backupRetention: + 'Après suppression, les copies de sauvegarde du service peuvent être conservées jusqu’à {{days}} jours.', + deleteCheck: 'Je confirme la suppression de cette sauvegarde cloud.', + confirmDelete: 'Supprimer la sauvegarde cloud', + restoreTitle: 'Examiner avant de restaurer', + restoreDescription: + 'Vérifiez les catégories. Les valeurs sensibles restent masquées. Rien n’est restauré avant confirmation.', + deviceReview: + 'Après restauration, vérifiez {{count}} réglages de l’appareil : raccourcis, chemins des modèles, microphones et autorisations système.', + restoreMode: 'Mode de restauration', + merge: 'Fusionner et résoudre les conflits', + replace: 'Remplacer les données locales synchronisées par le cloud', + replaceWarning: + 'Les données locales du périmètre seront remplacées. Choisissez la fusion pour conserver vos modifications locales.', + restoreCheck: 'J’ai vérifié le mode et mes choix pour les conflits.', + applyRestore: 'Confirmer la restauration', + conflictProgress: '{{selected}} conflits résolus sur {{total}}', + conflictItem: 'Conflit {{index}} · {{category}}', + conflictLocal: 'Garder la version locale', + conflictCloud: 'Utiliser le cloud', + previous: 'Précédent', + next: 'Suivant', + scope: { + preferences: 'Préférences de l’application et de l’interface.', + credentials: + 'Canaux ASR, LLM et Omni, avec clés API, identifiants, clés d’accès et clés secrètes.', + personal: + 'Dictionnaire, listes de vocabulaire personnalisées, corrections, styles et icônes.', + history: + 'Tout l’historique textuel de dictée et de notes rapides, ainsi que les statistiques d’activité.', + device: 'Profils de configuration à vérifier sur l’appareil de destination.', + excluded: + 'Exclus : sessions OAuth, mots de passe de synchronisation ou clés dérivées, fichiers d’identifiants système, PIN, autorisations, enregistrements audio/vidéo originaux et poids des modèles.', + }, + states: { + disabled: 'Synchronisation désactivée', + sign_in_required: 'Connexion GitHub requise', + unlock_required: 'Saisissez le mot de passe pour déverrouiller', + ready: 'À jour', + pending: 'Modifications locales en attente', + syncing: 'Synchronisation en cours', + conflict: 'Examiner les conflits', + failed: 'La synchronisation nécessite votre attention', + outcome_unknown: 'Résultat cloud à confirmer', + recovery_required: 'Récupération locale requise', + }, + categories: { + preferences: 'Préférences de l’application', + ui_preferences: 'Interface', + channels: 'Canaux et identifiants de services', + provider_credentials: 'Identifiants de services', + dictionary: 'Dictionnaire', + vocabulary_presets: 'Vocabulaire personnalisé', + corrections: 'Corrections', + style_packs: 'Styles et icônes', + history: 'Historique textuel', + activity: 'Statistiques d’activité', + device_profile: 'Profils des appareils', + other: 'Autres données synchronisées', + }, + conflictReasons: { + both_modified: 'Les versions locale et cloud ont été modifiées.', + delete_modify: 'Une version a été supprimée, l’autre modifiée.', + no_common_baseline: 'Aucune base commune. Choisissez la version à conserver.', + other: 'Choisissez la version locale ou cloud. Les valeurs restent masquées.', + }, + errors: { + unknown: 'L’opération n’a pas abouti. Actualisez l’état et réessayez.', + signIn: 'Reconnectez-vous à GitHub.', + unlock: 'Déverrouillez d’abord cet appareil avec votre mot de passe.', + unavailable: + 'Synchronisation chiffrée indisponible. Utilisez l’application native et vérifiez le service plus tard.', + weakPassword: 'Choisissez un mot de passe plus fort respectant les critères.', + passwordMismatch: 'Les mots de passe ne correspondent pas.', + invalidPassword: + 'Le mot de passe n’a pas déverrouillé la sauvegarde, ou les données chiffrées sont invérifiables.', + secureStorage: + 'Accès au stockage sécurisé refusé. Vérifiez les autorisations ou déverrouillez sans mémoriser la clé.', + changed: 'Les données ont changé. Fermez, actualisez et examinez un nouvel aperçu.', + accountChanged: 'Le compte GitHub a changé. Actualisez avant de continuer.', + busy: 'Une tâche de synchronisation est en cours. Attendez ou annulez-la.', + cancelled: 'Tâche annulée.', + network: 'Service de synchronisation inaccessible. Vérifiez votre connexion et réessayez.', + rateLimited: 'Trop de demandes. Attendez avant de réessayer.', + outcomeUnknown: + 'Résultat cloud non confirmé. Vérifiez l’opération en attente avant une nouvelle sauvegarde.', + recovery: + 'Une récupération locale est nécessaire. Conservez les données de cet appareil sans écraser la sauvegarde cloud.', + rolledBack: + 'La restauration a échoué ; les modifications locales ont été annulées. Actualisez avant de réessayer.', + tooLarge: 'La sauvegarde chiffrée dépasse la limite de taille du service.', + reviewRequired: 'Examinez le périmètre et l’aperçu de restauration avant de continuer.', + choicesRequired: 'Choisissez local ou cloud pour chaque conflit.', + invalidData: + 'Sauvegarde chiffrée invérifiable. Les données locales n’ont pas été remplacées.', + localData: 'Impossible de préparer les données locales en sécurité. Actualisez et réessayez.', + }, + }, cloudSync: { title: 'Synchronisation cloud', description: @@ -110,6 +268,18 @@ export const fr: typeof zhCN = { cancel: 'Annuler', }, qa: { + compact: { + closeError: 'Impossible de fermer. Réessayez.', + sendError: 'Échec de l’envoi. Votre saisie est conservée. Réessayez.', + microphoneError: 'L’action du microphone a échoué. Réessayez.', + modeError: 'Le mode d’édition n’a pas été modifié. Réessayez.', + conversation: 'Conversation actuelle', + sending: 'Envoi de votre question…', + addUnavailable: 'Ajouter du contenu · pas encore disponible', + browserUnavailable: 'L’aperçu n’exécute aucune commande', + answer: 'Réponse d’OpenLess', + layoutError: 'Impossible d’agrandir la fenêtre. Fermez-la, puis rouvrez-la.', + }, title: 'Questions', headerHint: 'Posez une question à tout moment', thinking: 'Réflexion…', @@ -142,6 +312,50 @@ export const fr: typeof zhCN = { editInstructionMode: 'Instruction de modification', }, lessComputer: { + desktop: { + approvedSubmitted: 'Approbation envoyée', + deniedSubmitted: 'Refus envoyé', + agents: 'Vos agents', + configured: 'Agent configuré', + agentSettings: 'Choisir dans Réglages', + historyUnavailable: 'Historique · indisponible', + sessionUnavailable: 'Nouvelle session · indisponible', + agentHint: 'Choisissez votre agent dans les réglages.', + workspace: 'Espace de travail', + multitask: 'Plusieurs tâches', + unavailable: 'Pas encore disponible', + historyHint: + 'L’historique et les sessions multiples ne sont pas encore disponibles pour ces quatre agents.', + signedIn: 'Connecté', + signIn: 'Se connecter', + currentSession: 'Conversation actuelle', + minimize: 'Réduire', + maximize: 'Agrandir / restaurer', + windowError: 'L’action sur la fenêtre a échoué. Réessayez.', + emptyHint: 'Décrivez une tâche ou utilisez votre raccourci vocal configuré pour commencer.', + voiceHint: 'Maintenez votre raccourci vocal', + idle: 'En attente d’une tâche', + waitingApproval: 'En attente d’approbation', + submittingApproval: 'Envoi en cours…', + approvalError: 'L’approbation n’a pas été envoyée. Réessayez.', + approvalExpired: 'Ce tour est terminé. L’approbation n’est plus disponible.', + sendError: 'Échec de l’envoi. Votre saisie est conservée. Réessayez.', + browserUnavailable: + 'Cet aperçu dans le navigateur n’exécute aucune commande. Utilisez l’application de bureau.', + cancelHint: 'Annulez une tâche en cours depuis la capsule.', + inputHint: 'Entrée pour envoyer · Maj + Entrée pour une nouvelle ligne', + activity: 'Activité de la tâche', + noActivity: 'Aucune activité pour l’instant', + activityHint: + 'Les appels d’outils et les approbations apparaîtront ici au début d’une tâche.', + currentTask: 'Tâche actuelle', + toolActive: 'Appel en cours', + toolReported: 'Appel reçu', + approval: 'Approbation d’action', + apiCost: 'Coût API de ce tour', + activitySource: + 'Suit la tâche actuelle. Le coût s’affiche uniquement lorsque le service le communique.', + }, title: 'Less Computer', subtitle: 'Que doit faire votre ordinateur ?', you: 'Vous', @@ -1503,15 +1717,16 @@ export const fr: typeof zhCN = { bailianVocabularyIdLabel: 'ID du vocabulaire de mots-clés (facultatif)', bailianVocabularyIdNote: 'Si vous avez créé un vocabulaire dans DashScope, saisissez son ID vocab-... Laissez vide pour ne pas utiliser de mots-clés.', - bailianProtocolLabel: "Type d’API", - bailianProtocolNote: "Le choix manuel remplace la détection par nom et est enregistré par canal pour la validation et l’enregistrement. Consultez la documentation du modèle.", + bailianProtocolLabel: 'Type d’API', + bailianProtocolNote: + 'Le choix manuel remplace la détection par nom et est enregistré par canal pour la validation et l’enregistrement. Consultez la documentation du modèle.', bailianProtocolOptions: { - "auto": "Automatique", - "dashscope-realtime": "Temps réel (DashScope)", - "qwen-realtime": "Temps réel (Qwen Realtime)", - "multimodal": "Synchrone hors temps réel (Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "Synchrone hors temps réel (Qwen3-ASR)", - "async-transcription": "Asynchrone (transcription de fichier)", + auto: 'Automatique', + 'dashscope-realtime': 'Temps réel (DashScope)', + 'qwen-realtime': 'Temps réel (Qwen Realtime)', + multimodal: 'Synchrone hors temps réel (Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': 'Synchrone hors temps réel (Qwen3-ASR)', + 'async-transcription': 'Asynchrone (transcription de fichier)', }, bailianModelRealtimeHint: 'Modèle en temps réel : transcrit pendant que vous parlez.', bailianModelSyncFileHint: diff --git a/openless-all/app/src/i18n/index.ts b/openless-all/app/src/i18n/index.ts index f9f72963a..078247f47 100644 --- a/openless-all/app/src/i18n/index.ts +++ b/openless-all/app/src/i18n/index.ts @@ -117,6 +117,7 @@ export function getLocalePreference(): SupportedLocale | typeof FOLLOW_SYSTEM_VA */ export async function setLocalePreference( pref: SupportedLocale | typeof FOLLOW_SYSTEM_VALUE, + source: 'user' | 'sync-restore' = 'user', ): Promise { const resolved = resolveLocalePreference(pref); if (pref === FOLLOW_SYSTEM_VALUE) { @@ -124,6 +125,7 @@ export async function setLocalePreference( } else { window.localStorage.setItem(LOCALE_STORAGE_KEY, pref); } + window.dispatchEvent(new CustomEvent('openless:ui-preferences-changed', { detail: { source, key: 'locale' } })); await applyLocale(resolved); return resolved; } diff --git a/openless-all/app/src/i18n/ja.ts b/openless-all/app/src/i18n/ja.ts index 7dece6e8f..0248baa20 100644 --- a/openless-all/app/src/i18n/ja.ts +++ b/openless-all/app/src/i18n/ja.ts @@ -6,6 +6,159 @@ import { en } from './en'; // 更新してください(更新されない key は ...en で英語にフォールバックします)。 export const ja: typeof zhCN = { ...en, + cloudSyncE2ee: { + setupPromptTitle: '設定を暗号化してバックアップしますか?', + setupPromptBody: + 'サービスの設定が完了しました。設定、API キー、テキスト履歴はこの端末で暗号化されます。対象を確認して同期を有効にした後にのみアップロードされます。', + setupPromptLater: '今はしない', + setupPromptOpen: '暗号化同期について', + title: '暗号化クラウド同期', + description: 'この端末で暗号化してから、GitHub アカウントで端末間を同期します。', + enable: '暗号化同期を有効にする', + refresh: '状態を更新', + loading: '同期状態を確認中…', + signIn: 'GitHub でログイン', + signOut: 'ログアウト', + account: '同期アカウント', + keyLocked: 'この端末ではロック中', + keyUnlocked: 'この端末でロック解除済み', + hasSnapshot: '暗号化されたクラウドバックアップがあります。', + noSnapshot: '暗号化クラウドバックアップはまだありません。', + snapshotUnknown: 'クラウドバックアップは未確認です。', + lastSync: '最終同期:{{time}}', + syncNow: '今すぐ同期', + checkPending: '未確定の結果を確認', + unlock: 'ロック解除', + lock: 'この端末をロック', + changePassword: '同期パスワードを変更', + restore: 'クラウドからの復元を確認', + delete: 'クラウドバックアップを削除', + working: '処理中…', + cancelTask: '現在の処理をキャンセル', + cancelRequested: 'キャンセルを要求しました。処理の終了を待っています。', + done: '同期設定を更新しました。', + restored: 'クラウドのデータを復元しました。この端末固有の設定を確認してください。', + retryAfter: '{{seconds}} 秒後に再試行してください。', + passwordWarning: + '同期パスワードは安全に保管してください。再発行できず、紛失するとクラウドのデータを読めなくなる場合があります。', + consentTitle: 'エンドツーエンド暗号化同期を有効にする', + consentDescription: + 'サービスの認証情報と非公開のテキスト履歴も同期します。アップロード前に端末で暗号化します。対象範囲を確認してください。', + scopeSummary: '同期する全データを確認', + consentCheck: '対象範囲を理解し、これらのデータの暗号化同期に同意します。', + continue: '続ける', + createTitle: '同期パスワードを設定', + unlockTitle: 'クラウドバックアップを解除', + passwordTitle: '同期パスワードを変更', + create: '暗号化バックアップを作成', + password: '同期パスワード', + newPassword: '新しい同期パスワード', + currentPassword: '現在の同期パスワード', + confirmPassword: '新しいパスワードを再入力', + passwordPolicy: + '12~128 文字で英大文字・英小文字・数字を含めてください。よくあるパスワードは避けてください。', + rememberKey: 'この端末の安全なストレージに解除キーを記憶する', + disableTitle: '暗号化同期をオフにしますか?', + disableDescription: + '以後の同期を停止します。クラウドのバックアップとローカルのデータは残ります。削除は別の操作です。', + confirmDisable: '同期をオフにする', + deleteTitle: '暗号化クラウドバックアップを削除しますか?', + deleteDescription: + 'このアカウントのクラウドバックアップのみ削除します。ローカルデータは残ります。別の端末で復元するには新しいバックアップが必要です。', + backupRetention: + '削除後も、サービスのバックアップコピーは最長 {{days}} 日間保持される場合があります。', + deleteCheck: 'このクラウドバックアップの削除を確認します。', + confirmDelete: 'クラウドバックアップを削除', + restoreTitle: '復元前に確認', + restoreDescription: + 'データの種類を確認してください。機密の値は表示しません。確認するまで復元しません。', + deviceReview: + '復元後は、ショートカット、モデルの場所、マイク、システム権限など {{count}} 件の端末設定を確認してください。', + restoreMode: '復元方法', + merge: 'マージして競合を解決', + replace: '同期対象のローカルデータをクラウドの内容で置換', + replaceWarning: + '同期範囲のローカルデータを置き換えます。ローカルの変更を残すにはマージを選んでください。', + restoreCheck: '復元方法と競合の選択を確認しました。', + applyRestore: '復元を確認', + conflictProgress: '{{total}} 件中 {{selected}} 件を選択済み', + conflictItem: '競合 {{index}} · {{category}}', + conflictLocal: 'ローカルを使用', + conflictCloud: 'クラウドを使用', + previous: '前へ', + next: '次へ', + scope: { + preferences: 'アプリの環境設定と表示設定。', + credentials: + 'ASR・LLM・Omni の接続設定と、API キー、ID、アクセスキー、シークレットキーなどの認証情報。', + personal: '辞書、カスタム語彙プリセット、修正ルール、スタイルパックとアイコン。', + history: 'すべての音声入力・クイックメモのテキスト履歴と利用統計。', + device: '復元先の端末で確認するデバイス設定プロファイル。', + excluded: + 'OAuth ログイン状態、同期パスワード・派生キー、OS の認証情報ファイル、PIN、端末の権限、元の録音・動画、モデルの重みは含みません。', + }, + states: { + disabled: '同期はオフです', + sign_in_required: 'GitHub ログインが必要です', + unlock_required: 'パスワードを入力して解除してください', + ready: '同期済み', + pending: 'ローカルの変更は同期待ちです', + syncing: '同期中', + conflict: '競合する変更を確認してください', + failed: '同期の確認が必要です', + outcome_unknown: 'クラウドの結果は未確定です', + recovery_required: 'ローカル状態の復旧が必要です', + }, + categories: { + preferences: 'アプリ設定', + ui_preferences: '表示設定', + channels: 'サービス接続と認証情報', + provider_credentials: 'サービス認証情報', + dictionary: '辞書', + vocabulary_presets: 'カスタム語彙プリセット', + corrections: '修正ルール', + style_packs: 'スタイルとアイコン', + history: 'テキスト履歴', + activity: '利用統計', + device_profile: '端末設定プロファイル', + other: 'その他の同期データ', + }, + conflictReasons: { + both_modified: 'ローカルとクラウドの両方で変更されています。', + delete_modify: '一方で削除され、もう一方で変更されています。', + no_common_baseline: '共通の同期履歴がありません。残す側を選んでください。', + other: 'ローカルかクラウドを選択してください。値は表示しません。', + }, + errors: { + unknown: '操作を完了できませんでした。状態を更新して再試行してください。', + signIn: 'GitHub に再ログインしてください。', + unlock: '同期パスワードでこの端末を解除してください。', + unavailable: + '暗号化同期は利用できません。ネイティブアプリで後ほどサービスを確認してください。', + weakPassword: '長さと文字種の条件を満たす、推測されにくいパスワードにしてください。', + passwordMismatch: 'パスワードが一致しません。', + invalidPassword: 'このパスワードで解除できないか、暗号化データを検証できませんでした。', + secureStorage: + '安全なストレージへのアクセスが拒否されました。権限を確認するか、キーを記憶せずに解除してください。', + changed: + '確認中にデータが変わりました。閉じて状態を更新し、再度プレビューを取得してください。', + accountChanged: 'GitHub アカウントが変わりました。更新してから続けてください。', + busy: '別の同期処理が実行中です。待つか先にキャンセルしてください。', + cancelled: '処理をキャンセルしました。', + network: '同期サービスに接続できません。ネットワークを確認して再試行してください。', + rateLimited: 'リクエストが多すぎます。しばらく待ってから再試行してください。', + outcomeUnknown: + 'クラウドの結果が未確定です。新しいバックアップを作る前に未確定の結果を確認してください。', + recovery: + 'ローカル状態の復旧が必要です。この端末のデータを保持し、クラウドを上書きしないでください。', + rolledBack: '復元に失敗し、ローカルの変更を元に戻しました。更新してから再試行してください。', + tooLarge: '暗号化バックアップがサービスのサイズ上限を超えています。', + reviewRequired: '続ける前に同期対象と復元プレビューを確認してください。', + choicesRequired: 'すべての競合でローカルかクラウドを選択してください。', + invalidData: '暗号化バックアップを検証できませんでした。ローカルデータは置き換えていません。', + localData: 'ローカルデータを安全に準備できませんでした。更新して再試行してください。', + }, + }, cloudSync: { title: 'クラウド同期', description: 'GitHub アカウントで辞書、スタイル、個人設定をデバイス間で同期します。', @@ -101,6 +254,18 @@ export const ja: typeof zhCN = { cancel: 'キャンセル', }, qa: { + compact: { + closeError: '閉じられませんでした。再試行してください。', + sendError: '送信できませんでした。入力は保持されています。再試行してください。', + microphoneError: 'マイク操作に失敗しました。再試行してください。', + modeError: '編集モードを変更できませんでした。再試行してください。', + conversation: '現在の会話', + sending: '質問を送信中…', + addUnavailable: 'コンテンツを追加 · 未対応', + browserUnavailable: 'プレビューでは実行できません', + answer: 'OpenLess の回答', + layoutError: 'ウィンドウを展開できませんでした。閉じてから開き直してください。', + }, title: '質問', headerHint: 'いつでも質問', thinking: '思考中…', @@ -133,6 +298,48 @@ export const ja: typeof zhCN = { editInstructionMode: '編集指示', }, lessComputer: { + desktop: { + approvedSubmitted: '許可を送信しました', + deniedSubmitted: '拒否を送信しました', + agents: 'エージェント', + configured: '現在の設定', + agentSettings: '設定で選択', + historyUnavailable: '履歴 · 未対応', + sessionUnavailable: '新しい会話 · 未対応', + agentHint: '使用するエージェントは設定で選択します。', + workspace: 'ワークスペース', + multitask: '複数のタスク', + unavailable: 'まだ利用できません', + historyHint: '4つのエージェントの履歴と複数会話には、まだ対応していません。', + signedIn: 'ログイン済み', + signIn: 'ログイン', + currentSession: '現在の会話', + minimize: '最小化', + maximize: '最大化 / 元に戻す', + windowError: 'ウィンドウ操作に失敗しました。再試行してください。', + emptyHint: '具体的なタスクを入力するか、設定した音声ショートカットで始めましょう。', + voiceHint: '音声ショートカットを長押し', + idle: '指示を待っています', + waitingApproval: '承認待ち', + submittingApproval: '送信中…', + approvalError: '承認を送信できませんでした。再試行してください。', + approvalExpired: 'このターンは終了しました。承認はできません。', + sendError: '送信できませんでした。入力は保持されています。再試行してください。', + browserUnavailable: + 'ブラウザのプレビューでは実行できません。デスクトップアプリをご利用ください。', + cancelHint: '実行中のタスクはカプセルからキャンセルできます。', + inputHint: 'Enter で送信 · Shift + Enter で改行', + activity: 'タスクの動き', + noActivity: 'まだ動きはありません', + activityHint: 'タスクが始まると、ツール呼び出しと承認がここに表示されます。', + currentTask: '現在のタスク', + toolActive: '呼び出し中', + toolReported: '呼び出しを受信', + approval: '操作の承認', + apiCost: '今回の API 料金', + activitySource: + '現在のタスクに合わせて更新。料金はサービスから報告された場合のみ表示します。', + }, title: 'Less Computer', subtitle: 'コンピュータに何をさせますか?', you: 'あなた', @@ -1448,15 +1655,16 @@ export const ja: typeof zhCN = { bailianVocabularyIdLabel: 'ホットワード Vocabulary ID(任意)', bailianVocabularyIdNote: 'DashScope でホットワード辞書を作成済みの場合は vocab-... ID を入力します。空欄なら送信しません。', - bailianProtocolLabel: "API の種類", - bailianProtocolNote: "手動選択はモデル名による判定より優先され、検証と録音用にチャネルごとに保存されます。モデルのドキュメントに従って選択してください。", + bailianProtocolLabel: 'API の種類', + bailianProtocolNote: + '手動選択はモデル名による判定より優先され、検証と録音用にチャネルごとに保存されます。モデルのドキュメントに従って選択してください。', bailianProtocolOptions: { - "auto": "自動判定", - "dashscope-realtime": "リアルタイム(DashScope)", - "qwen-realtime": "リアルタイム(Qwen Realtime)", - "multimodal": "非リアルタイム同期(Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "非リアルタイム同期(Qwen3-ASR)", - "async-transcription": "非リアルタイム非同期(ファイル文字起こし)", + auto: '自動判定', + 'dashscope-realtime': 'リアルタイム(DashScope)', + 'qwen-realtime': 'リアルタイム(Qwen Realtime)', + multimodal: '非リアルタイム同期(Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': '非リアルタイム同期(Qwen3-ASR)', + 'async-transcription': '非リアルタイム非同期(ファイル文字起こし)', }, bailianModelRealtimeHint: 'リアルタイムモデル · 話しながら文字起こし。', bailianModelSyncFileHint: '同期録音モデル · 話し終えてから一括で文字起こし(1 本 ≤ 5 分)。', diff --git a/openless-all/app/src/i18n/ko.ts b/openless-all/app/src/i18n/ko.ts index f91eab8bb..fc5b4eb3b 100644 --- a/openless-all/app/src/i18n/ko.ts +++ b/openless-all/app/src/i18n/ko.ts @@ -6,6 +6,157 @@ import { en } from './en'; // 갱신해 주세요(갱신되지 않은 key 는 ...en 으로 영어로 fallback 됩니다). export const ko: typeof zhCN = { ...en, + cloudSyncE2ee: { + setupPromptTitle: '설정을 암호화해 백업할까요?', + setupPromptBody: + '서비스 설정이 완료되었습니다. 설정, API 키, 텍스트 기록은 이 기기에서 암호화됩니다. 범위를 확인하고 동기화를 켠 후에만 업로드됩니다.', + setupPromptLater: '나중에', + setupPromptOpen: '암호화 동기화 알아보기', + title: '암호화 클라우드 동기화', + description: '이 기기에서 암호화한 후 GitHub 계정으로 기기 간에 동기화합니다.', + enable: '암호화 동기화 사용', + refresh: '상태 새로고침', + loading: '동기화 상태 확인 중…', + signIn: 'GitHub로 로그인', + signOut: '로그아웃', + account: '동기화 계정', + keyLocked: '이 기기에서 잠김', + keyUnlocked: '이 기기에서 잠금 해제됨', + hasSnapshot: '암호화된 클라우드 백업이 있습니다.', + noSnapshot: '아직 암호화된 클라우드 백업이 없습니다.', + snapshotUnknown: '클라우드 백업을 아직 확인하지 않았습니다.', + lastSync: '마지막 동기화: {{time}}', + syncNow: '지금 동기화', + checkPending: '확인 대기 결과 조회', + unlock: '잠금 해제', + lock: '이 기기 잠그기', + changePassword: '동기화 비밀번호 변경', + restore: '클라우드 복원 검토', + delete: '클라우드 백업 삭제', + working: '처리 중…', + cancelTask: '현재 작업 취소', + cancelRequested: '취소를 요청했습니다. 작업이 종료되기를 기다립니다.', + done: '동기화 설정을 업데이트했습니다.', + restored: '클라우드 데이터를 복원했습니다. 이 기기의 전용 설정을 확인하세요.', + retryAfter: '{{seconds}}초 후 다시 시도하세요.', + passwordWarning: + '동기화 비밀번호를 안전하게 보관하세요. 복구할 수 없으며, 분실하면 클라우드 데이터를 읽지 못할 수 있습니다.', + consentTitle: '종단 간 암호화 동기화 사용', + consentDescription: + '서비스 자격 증명과 비공개 텍스트 기록도 동기화됩니다. 업로드 전에 기기에서 암호화합니다. 전체 범위를 확인하세요.', + scopeSummary: '전체 동기화 범위 보기', + consentCheck: '전체 범위를 이해했으며 이 데이터를 암호화해 동기화하는 데 동의합니다.', + continue: '계속', + createTitle: '동기화 비밀번호 설정', + unlockTitle: '클라우드 백업 잠금 해제', + passwordTitle: '동기화 비밀번호 변경', + create: '암호화 백업 만들기', + password: '동기화 비밀번호', + newPassword: '새 동기화 비밀번호', + currentPassword: '현재 동기화 비밀번호', + confirmPassword: '새 비밀번호 확인', + passwordPolicy: '12~128자로 영문 대문자, 소문자, 숫자를 포함하세요. 흔한 비밀번호는 피하세요.', + rememberKey: '이 기기의 보안 저장소에 잠금 해제 키 기억', + disableTitle: '암호화 동기화를 끌까요?', + disableDescription: + '이후 동기화를 중지합니다. 클라우드 백업과 로컬 데이터는 유지됩니다. 백업 삭제는 별도 작업입니다.', + confirmDisable: '동기화 끄기', + deleteTitle: '암호화된 클라우드 백업을 삭제할까요?', + deleteDescription: + '이 계정의 클라우드 백업만 삭제합니다. 로컬 데이터는 유지됩니다. 다른 기기에서 복원하려면 새 백업이 필요합니다.', + backupRetention: '삭제 후에도 서비스의 백업 사본이 최대 {{days}}일 동안 보관될 수 있습니다.', + deleteCheck: '이 클라우드 백업 삭제에 동의합니다.', + confirmDelete: '클라우드 백업 삭제', + restoreTitle: '복원 전 검토', + restoreDescription: + '데이터 종류를 확인하세요. 민감한 값은 표시하지 않습니다. 확인 전에는 복원하지 않습니다.', + deviceReview: + '복원 후 단축키, 모델 경로, 마이크, 시스템 권한 등 기기 설정 {{count}}개를 확인하세요.', + restoreMode: '복원 방식', + merge: '병합하고 충돌 해결', + replace: '동기화 대상 로컬 데이터를 클라우드 데이터로 교체', + replaceWarning: + '동기화 범위의 로컬 데이터를 교체합니다. 로컬 변경을 유지하려면 병합을 선택하세요.', + restoreCheck: '복원 방식과 충돌 선택을 확인했습니다.', + applyRestore: '복원 확인', + conflictProgress: '충돌 {{total}}개 중 {{selected}}개 해결', + conflictItem: '충돌 {{index}} · {{category}}', + conflictLocal: '로컬 유지', + conflictCloud: '클라우드 사용', + previous: '이전', + next: '다음', + scope: { + preferences: '앱 환경설정과 인터페이스 설정.', + credentials: 'ASR·LLM·Omni 채널과 API 키, ID, 액세스 키, 시크릿 키 등의 자격 증명.', + personal: '사전, 사용자 어휘 프리셋, 교정, 스타일 팩과 아이콘.', + history: '전체 받아쓰기·빠른 메모 텍스트 기록과 활동 통계.', + device: '복원 대상 기기에서 확인할 기기 설정 프로필.', + excluded: + 'OAuth 로그인 상태, 동기화 비밀번호·파생 키, OS 자격 증명 파일, PIN, 기기 권한, 원본 녹음·동영상, 모델 가중치는 포함하지 않습니다.', + }, + states: { + disabled: '동기화 꺼짐', + sign_in_required: 'GitHub 로그인 필요', + unlock_required: '비밀번호를 입력해 잠금을 해제하세요', + ready: '최신 상태', + pending: '로컬 변경 동기화 대기 중', + syncing: '동기화 중', + conflict: '충돌하는 변경 검토 필요', + failed: '동기화 확인 필요', + outcome_unknown: '클라우드 결과 확인 대기 중', + recovery_required: '로컬 상태 복구 필요', + }, + categories: { + preferences: '앱 환경설정', + ui_preferences: '인터페이스 설정', + channels: '서비스 채널 및 자격 증명', + provider_credentials: '서비스 자격 증명', + dictionary: '사전', + vocabulary_presets: '사용자 어휘 프리셋', + corrections: '교정 규칙', + style_packs: '스타일 팩과 아이콘', + history: '텍스트 기록', + activity: '활동 통계', + device_profile: '기기 설정 프로필', + other: '기타 동기화 데이터', + }, + conflictReasons: { + both_modified: '로컬과 클라우드 양쪽에서 변경되었습니다.', + delete_modify: '한쪽에서 삭제하고 다른 쪽에서 변경했습니다.', + no_common_baseline: '공통 동기화 기준이 없습니다. 유지할 버전을 선택하세요.', + other: '로컬 또는 클라우드를 선택하세요. 실제 값은 표시하지 않습니다.', + }, + errors: { + unknown: '작업을 완료하지 못했습니다. 상태를 새로고침한 후 다시 시도하세요.', + signIn: 'GitHub에 다시 로그인하세요.', + unlock: '먼저 동기화 비밀번호로 이 기기를 잠금 해제하세요.', + unavailable: + '암호화 동기화를 사용할 수 없습니다. 네이티브 앱에서 나중에 서비스를 확인하세요.', + weakPassword: '길이와 문자 조건을 충족하는 더 강력한 비밀번호를 사용하세요.', + passwordMismatch: '두 비밀번호가 일치하지 않습니다.', + invalidPassword: + '비밀번호로 백업을 잠금 해제할 수 없거나 암호화 데이터를 검증하지 못했습니다.', + secureStorage: + '보안 저장소 접근이 거부되었습니다. 권한을 확인하거나 키를 기억하지 않고 잠금 해제하세요.', + changed: + '검토 중 데이터가 변경되었습니다. 창을 닫고 새로고침한 후 미리보기를 다시 확인하세요.', + accountChanged: 'GitHub 계정이 변경되었습니다. 새로고침한 후 계속하세요.', + busy: '다른 동기화 작업이 실행 중입니다. 기다리거나 먼저 취소하세요.', + cancelled: '작업이 취소되었습니다.', + network: '동기화 서비스에 연결할 수 없습니다. 네트워크를 확인한 후 다시 시도하세요.', + rateLimited: '요청이 너무 많습니다. 잠시 후 다시 시도하세요.', + outcomeUnknown: + '클라우드 결과가 확인되지 않았습니다. 새 백업을 만들기 전에 대기 중인 결과를 확인하세요.', + recovery: + '로컬 상태 복구가 필요합니다. 이 기기의 데이터를 보관하고 클라우드 백업을 덮어쓰지 마세요.', + rolledBack: '복원에 실패해 로컬 변경을 되돌렸습니다. 새로고침한 후 다시 시도하세요.', + tooLarge: '암호화 백업이 서비스 크기 제한을 초과합니다.', + reviewRequired: '계속하기 전에 동기화 범위와 복원 미리보기를 확인하세요.', + choicesRequired: '각 충돌에 대해 로컬 또는 클라우드를 선택하세요.', + invalidData: '암호화 백업을 검증하지 못했습니다. 로컬 데이터는 교체되지 않았습니다.', + localData: '로컬 데이터를 안전하게 준비하지 못했습니다. 새로고침한 후 다시 시도하세요.', + }, + }, cloudSync: { title: '클라우드 동기화', description: 'GitHub 계정으로 사전, 스타일, 개인 설정을 기기 간에 동기화합니다.', @@ -99,6 +250,18 @@ export const ko: typeof zhCN = { cancel: '취소', }, qa: { + compact: { + closeError: '닫지 못했습니다. 다시 시도하세요.', + sendError: '전송하지 못했습니다. 입력 내용은 유지됩니다. 다시 시도하세요.', + microphoneError: '마이크 작업에 실패했습니다. 다시 시도하세요.', + modeError: '편집 모드를 변경하지 못했습니다. 다시 시도하세요.', + conversation: '현재 대화', + sending: '질문 전송 중…', + addUnavailable: '콘텐츠 추가 · 아직 지원 안 함', + browserUnavailable: '미리보기에서는 실행할 수 없음', + answer: 'OpenLess 답변', + layoutError: '창을 확장하지 못했습니다. 닫고 다시 열어 주세요.', + }, title: '질문', headerHint: '언제든 질문하세요', thinking: '생각 중…', @@ -131,6 +294,47 @@ export const ko: typeof zhCN = { editInstructionMode: '편집 지시', }, lessComputer: { + desktop: { + approvedSubmitted: '허용을 제출했습니다', + deniedSubmitted: '거부를 제출했습니다', + agents: '내 에이전트', + configured: '현재 설정', + agentSettings: '설정에서 선택', + historyUnavailable: '기록 · 아직 지원 안 함', + sessionUnavailable: '새 대화 · 아직 지원 안 함', + agentHint: '사용할 에이전트는 설정에서 선택하세요.', + workspace: '작업 공간', + multitask: '여러 작업', + unavailable: '아직 사용할 수 없음', + historyHint: '네 에이전트의 기록과 여러 대화 기능은 아직 지원하지 않습니다.', + signedIn: '로그인됨', + signIn: '로그인', + currentSession: '현재 대화', + minimize: '최소화', + maximize: '최대화 / 복원', + windowError: '창 작업에 실패했습니다. 다시 시도하세요.', + emptyHint: '구체적인 작업을 입력하거나 설정한 음성 단축키로 시작하세요.', + voiceHint: '음성 단축키를 길게 누르세요', + idle: '지시 대기 중', + waitingApproval: '승인 대기 중', + submittingApproval: '제출 중…', + approvalError: '승인이 제출되지 않았습니다. 다시 시도하세요.', + approvalExpired: '이 차례는 종료되어 더 이상 승인할 수 없습니다.', + sendError: '전송하지 못했습니다. 입력 내용은 유지됩니다. 다시 시도하세요.', + browserUnavailable: + '브라우저 미리보기에서는 명령을 실행할 수 없습니다. 데스크톱 앱을 사용하세요.', + cancelHint: '실행 중인 작업은 캡슐에서 취소할 수 있습니다.', + inputHint: 'Enter로 전송 · Shift + Enter로 줄 바꿈', + activity: '작업 활동', + noActivity: '아직 활동이 없습니다', + activityHint: '작업이 시작되면 도구 호출과 승인이 여기에 표시됩니다.', + currentTask: '현재 작업', + toolActive: '호출 중', + toolReported: '호출 기록 수신', + approval: '작업 승인', + apiCost: '이번 API 비용', + activitySource: '현재 작업과 함께 업데이트됩니다. 비용은 서비스가 보고할 때만 표시됩니다.', + }, title: 'Less Computer', subtitle: '컴퓨터로 무엇을 할까요?', you: '나', @@ -1440,15 +1644,16 @@ export const ko: typeof zhCN = { bailianVocabularyIdLabel: '핫워드 Vocabulary ID(선택)', bailianVocabularyIdNote: 'DashScope에서 핫워드 사전을 만들었다면 vocab-... ID를 입력하세요. 비워 두면 핫워드를 전송하지 않습니다.', - bailianProtocolLabel: "API 유형", - bailianProtocolNote: "수동 선택은 모델 이름 감지보다 우선하며 검증과 녹음에 사용할 채널별 설정으로 저장됩니다. 모델 문서에 따라 선택하세요.", + bailianProtocolLabel: 'API 유형', + bailianProtocolNote: + '수동 선택은 모델 이름 감지보다 우선하며 검증과 녹음에 사용할 채널별 설정으로 저장됩니다. 모델 문서에 따라 선택하세요.', bailianProtocolOptions: { - "auto": "자동 감지", - "dashscope-realtime": "실시간 (DashScope)", - "qwen-realtime": "실시간 (Qwen Realtime)", - "multimodal": "비실시간 동기 (Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "비실시간 동기 (Qwen3-ASR)", - "async-transcription": "비실시간 비동기 (파일 전사)", + auto: '자동 감지', + 'dashscope-realtime': '실시간 (DashScope)', + 'qwen-realtime': '실시간 (Qwen Realtime)', + multimodal: '비실시간 동기 (Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': '비실시간 동기 (Qwen3-ASR)', + 'async-transcription': '비실시간 비동기 (파일 전사)', }, bailianModelRealtimeHint: '실시간 모델 · 말하는 동안 바로 전사.', bailianModelSyncFileHint: '동기 녹음 모델 · 말을 마친 뒤 전체 전사(한 클립 ≤ 5분).', @@ -2152,8 +2357,7 @@ export const ko: typeof zhCN = { groupDownload: '다운로드 및 관리', groupOther: '기타', mirrorLabel: '다운로드 미러', - mirrorDesc: - 'HuggingFace, 커뮤니티 미러 또는 지원 모델의 공식 ModelScope 저장소를 선택합니다.', + mirrorDesc: 'HuggingFace, 커뮤니티 미러 또는 지원 모델의 공식 ModelScope 저장소를 선택합니다.', mirrorHuggingface: 'HuggingFace 공식 (huggingface.co)', mirrorHfMirror: '중국 미러 (hf-mirror.com)', mirrorModelscope: 'ModelScope 공식 (modelscope.cn)', diff --git a/openless-all/app/src/i18n/zh-CN.ts b/openless-all/app/src/i18n/zh-CN.ts index bd06ec819..7fc137deb 100644 --- a/openless-all/app/src/i18n/zh-CN.ts +++ b/openless-all/app/src/i18n/zh-CN.ts @@ -2,6 +2,147 @@ // 八个语言文件共享同一结构;新增或删除 key 时同步更新全部语言。 export const zhCN = { + cloudSyncE2ee: { + setupPromptTitle: '为配置开启加密备份?', + setupPromptBody: + '服务配置已完成。配置、服务 API 密钥和历史文本会先在此设备加密。查看同步范围并主动开启后,才会上传。', + setupPromptLater: '暂不开启', + setupPromptOpen: '了解加密同步', + title: '加密云同步', + description: '在本机加密后,通过 GitHub 账号跨设备同步。', + enable: '启用加密同步', + refresh: '刷新状态', + loading: '正在读取同步状态…', + signIn: '使用 GitHub 登录', + signOut: '退出登录', + account: '同步账号', + keyLocked: '此设备尚未解锁', + keyUnlocked: '此设备已解锁', + hasSnapshot: '云端已有加密备份。', + noSnapshot: '云端尚无加密备份。', + snapshotUnknown: '尚未检查云端备份。', + lastSync: '上次同步:{{time}}', + syncNow: '立即同步', + checkPending: '核对待确认结果', + unlock: '解锁', + lock: '锁定此设备', + changePassword: '更改同步密码', + restore: '审阅云端恢复', + delete: '删除云端备份', + working: '正在处理…', + cancelTask: '取消当前任务', + cancelRequested: '已请求取消,正在等待当前任务结束。', + done: '同步设置已更新。', + restored: '已恢复云端资料,请核对本设备的专属设置。', + retryAfter: '请在 {{seconds}} 秒后重试。', + passwordWarning: '请妥善保管同步密码。密码无法找回,遗失后可能无法读取云端资料。', + consentTitle: '启用端到端加密同步', + consentDescription: + '同步内容包含服务凭据和私密文本历史,资料会在本机加密后上传。请先了解完整范围。', + scopeSummary: '查看完整同步范围', + consentCheck: '我已了解完整范围,并同意加密同步这些资料。', + continue: '继续', + createTitle: '设置同步密码', + unlockTitle: '解锁云端备份', + passwordTitle: '更改同步密码', + create: '创建加密备份', + password: '同步密码', + newPassword: '新同步密码', + currentPassword: '当前同步密码', + confirmPassword: '再次输入新密码', + passwordPolicy: '使用 12–128 个字符,包含大写字母、小写字母和数字,避免常见弱密码。', + rememberKey: '在此设备的安全存储中记住解锁密钥', + disableTitle: '关闭加密同步?', + disableDescription: + '关闭后停止后续同步,云端备份和本机资料都会保留。删除云端备份是另一项独立操作。', + confirmDisable: '关闭同步', + deleteTitle: '删除云端加密备份?', + deleteDescription: + '仅删除当前账号的云端备份,本机资料保留。以后在其他设备恢复前,需要重新创建备份。', + backupRetention: '删除后,服务备份副本最多保留 {{days}} 天。', + deleteCheck: '我确认删除这份云端备份。', + confirmDelete: '删除云端备份', + restoreTitle: '恢复前审阅', + restoreDescription: '请检查下列资料类别,敏感值不会展示。确认之前不会恢复任何内容。', + deviceReview: '恢复后请核对 {{count}} 项设备配置,包括快捷键、模型目录、麦克风及系统授权。', + restoreMode: '恢复方式', + merge: '合并,并逐项处理冲突', + replace: '使用云端资料替换本机同步资料', + replaceWarning: '此操作会替换同步范围内的本机资料。若要保留本机修改,请选择合并。', + restoreCheck: '我已检查恢复方式和冲突处理选择。', + applyRestore: '确认恢复', + conflictProgress: '已处理 {{selected}} / {{total}} 项冲突', + conflictItem: '冲突 {{index}} · {{category}}', + conflictLocal: '保留本机', + conflictCloud: '使用云端', + previous: '上一页', + next: '下一页', + scope: { + preferences: '应用偏好与界面设置。', + credentials: 'ASR、LLM、Omni 渠道及服务 API keys、ID、access key、secret key 等凭据。', + personal: '词典、自定义词汇预设、纠错、风格包及图标。', + history: '全部听写与速记文本历史,以及活动统计。', + device: '设备配置档案,恢复后需在目标设备核对。', + excluded: + '不包含 OAuth 登录态、同步密码或派生密钥、操作系统凭据文件、PIN、设备权限、原始录音与视频,以及模型权重。', + }, + states: { + disabled: '同步已关闭', + sign_in_required: '需要登录 GitHub', + unlock_required: '请输入密码解锁', + ready: '已同步', + pending: '本机更改待同步', + syncing: '正在同步', + conflict: '请审阅冲突更改', + failed: '同步需要处理', + outcome_unknown: '云端结果待确认', + recovery_required: '需要恢复本机同步状态', + }, + categories: { + preferences: '应用偏好', + ui_preferences: '界面设置', + channels: '服务渠道与凭据', + provider_credentials: '服务凭据', + dictionary: '词典', + vocabulary_presets: '自定义词汇预设', + corrections: '纠错规则', + style_packs: '风格包与图标', + history: '文本历史', + activity: '活动统计', + device_profile: '设备配置档案', + other: '其他同步资料', + }, + conflictReasons: { + both_modified: '本机和云端都修改了这项资料。', + delete_modify: '一端删除了这项资料,另一端进行了修改。', + no_common_baseline: '没有共同的同步基线,请选择要保留的一端。', + other: '请选择本机或云端版本,具体值不会展示。', + }, + errors: { + unknown: '操作未能完成,请刷新状态后重试。', + signIn: '请重新登录 GitHub。', + unlock: '请先使用同步密码解锁此设备。', + unavailable: '加密同步暂不可用,请使用原生客户端并稍后检查服务。', + weakPassword: '请使用满足长度和字符要求、且不常见的强密码。', + passwordMismatch: '两次输入的密码不一致。', + invalidPassword: '密码无法解锁这份备份,或加密资料校验未通过。', + secureStorage: '安全存储拒绝访问。请检查设备授权,或取消记住密钥后解锁。', + changed: '审阅期间资料已改变。请关闭弹窗、刷新状态,并重新获取预览。', + accountChanged: 'GitHub 账号已改变,请刷新后再继续。', + busy: '已有同步任务在运行,请等待或先取消。', + cancelled: '任务已取消。', + network: '暂时无法连接同步服务,请检查网络后重试。', + rateLimited: '请求过于频繁,请稍后重试。', + outcomeUnknown: '云端结果尚未确认。请先核对待确认结果,不要重复创建备份。', + recovery: '本机同步状态需要恢复。请保留本机资料,不要覆盖云端备份。', + rolledBack: '恢复失败,本机更改已回滚。请刷新状态后重试。', + tooLarge: '加密备份超出服务的大小限制。', + reviewRequired: '请先确认完整同步范围,并审阅云端恢复预览。', + choicesRequired: '请为每项冲突选择本机或云端版本。', + invalidData: '加密备份未通过校验,本机资料未被替换。', + localData: '无法安全准备本机资料,请刷新后重试。', + }, + }, cloudSync: { title: '云同步', description: '使用 GitHub 账号,在设备之间同步词典、风格与个人偏好。', @@ -102,6 +243,18 @@ export const zhCN = { cancel: '取消', }, qa: { + compact: { + closeError: '关闭失败,请重试。', + sendError: '发送失败,输入已保留,请重试。', + microphoneError: '麦克风操作失败,请重试。', + modeError: '编辑模式未更改,请重试。', + conversation: '当前会话', + sending: '正在发送提问…', + addUnavailable: '添加内容 · 暂不可用', + browserUnavailable: '预览不执行指令', + answer: 'OpenLess 回答', + layoutError: '窗口展开失败,请关闭后重新打开。', + }, title: '划词追问', headerHint: '随时提问', thinking: '思考中…', @@ -133,6 +286,46 @@ export const zhCN = { editInstructionMode: '编辑指令', }, lessComputer: { + desktop: { + approvedSubmitted: '已提交允许', + deniedSubmitted: '已提交拒绝', + agents: '你的 Agents', + configured: '当前配置', + agentSettings: '在设置中选择', + historyUnavailable: '历史记录 · 暂不可用', + sessionUnavailable: '新会话 · 暂不可用', + agentHint: '在设置中选择使用的 Agent。', + workspace: '工作区', + multitask: '多任务', + unavailable: '暂不可用', + historyHint: '四个 Agent 的历史与多会话功能尚未开放。', + signedIn: '已登录', + signIn: '登录账号', + currentSession: '当前会话', + minimize: '最小化', + maximize: '最大化 / 还原', + windowError: '窗口操作未完成,请重试。', + emptyHint: '写下具体任务,或用已配置的说话快捷键,让想法开始行动。', + voiceHint: '按住说话快捷键', + idle: '等待指令', + waitingApproval: '等待你的确认', + submittingApproval: '正在提交…', + approvalError: '审批未提交成功,请重试。', + approvalExpired: '此轮已结束,审批已不可用。', + sendError: '发送失败,输入已保留。请重试。', + browserUnavailable: '浏览器预览不会执行指令,请在桌面应用中使用。', + cancelHint: '可从胶囊取消正在运行的任务。', + inputHint: 'Enter 发送 · Shift + Enter 换行', + activity: '任务动态', + noActivity: '尚无任务活动', + activityHint: '任务开始后,工具调用与审批会显示在这里。', + currentTask: '当前任务', + toolActive: '调用中', + toolReported: '已收到调用记录', + approval: '操作审批', + apiCost: '本轮 API 费用', + activitySource: '随当前任务更新。费用仅在服务返回时显示。', + }, title: 'Less Computer', subtitle: '想让电脑做什么?', you: '你', @@ -1391,15 +1584,16 @@ export const zhCN = { '按所选请求格式和模型支持的参数启用、关闭或降低思考,不向提示词注入控制指令。', bailianVocabularyIdLabel: '热词 Vocabulary ID(可选)', bailianVocabularyIdNote: '如已在百炼创建热词表,可填写 vocab-...;留空则不下发热词。', - bailianProtocolLabel: "接口类型", - bailianProtocolNote: "手动选择优先于模型名称,按渠道保存,同时用于验证和录音。请根据模型文档选择接口。", + bailianProtocolLabel: '接口类型', + bailianProtocolNote: + '手动选择优先于模型名称,按渠道保存,同时用于验证和录音。请根据模型文档选择接口。', bailianProtocolOptions: { - "auto": "自动识别", - "dashscope-realtime": "实时(DashScope)", - "qwen-realtime": "实时(Qwen Realtime)", - "multimodal": "非实时同步(Fun-ASR / Qwen-Audio)", - "qwen-multimodal": "非实时同步(Qwen3-ASR)", - "async-transcription": "非实时异步(文件转写)", + auto: '自动识别', + 'dashscope-realtime': '实时(DashScope)', + 'qwen-realtime': '实时(Qwen Realtime)', + multimodal: '非实时同步(Fun-ASR / Qwen-Audio)', + 'qwen-multimodal': '非实时同步(Qwen3-ASR)', + 'async-transcription': '非实时异步(文件转写)', }, bailianModelRealtimeHint: '实时模型 · 边说边出字。', bailianModelSyncFileHint: '同步录音模型 · 说完后整段转写(单条 ≤ 5 分钟)。', diff --git a/openless-all/app/src/i18n/zh-TW.ts b/openless-all/app/src/i18n/zh-TW.ts index b90190748..b4f98e6f8 100644 --- a/openless-all/app/src/i18n/zh-TW.ts +++ b/openless-all/app/src/i18n/zh-TW.ts @@ -2,6 +2,147 @@ import type { zhCN } from './zh-CN'; // 繁體中文資源,與其餘七種語言共用同一組文案 key。 export const zhTW: typeof zhCN = { + cloudSyncE2ee: { + setupPromptTitle: '為設定開啟加密備份?', + setupPromptBody: + '服務設定已完成。設定、服務 API 金鑰及歷史文字會先在此裝置加密。檢視同步範圍並主動開啟後,才會上傳。', + setupPromptLater: '暫不開啟', + setupPromptOpen: '了解加密同步', + title: '加密雲端同步', + description: '在本機加密後,透過 GitHub 帳號跨裝置同步。', + enable: '啟用加密同步', + refresh: '重新整理狀態', + loading: '正在讀取同步狀態…', + signIn: '使用 GitHub 登入', + signOut: '登出', + account: '同步帳號', + keyLocked: '此裝置尚未解鎖', + keyUnlocked: '此裝置已解鎖', + hasSnapshot: '雲端已有加密備份。', + noSnapshot: '雲端尚無加密備份。', + snapshotUnknown: '尚未檢查雲端備份。', + lastSync: '上次同步:{{time}}', + syncNow: '立即同步', + checkPending: '核對待確認結果', + unlock: '解鎖', + lock: '鎖定此裝置', + changePassword: '變更同步密碼', + restore: '檢閱雲端還原', + delete: '刪除雲端備份', + working: '正在處理…', + cancelTask: '取消目前工作', + cancelRequested: '已請求取消,正在等待目前工作結束。', + done: '同步設定已更新。', + restored: '已還原雲端資料,請核對此裝置的專屬設定。', + retryAfter: '請在 {{seconds}} 秒後重試。', + passwordWarning: '請妥善保管同步密碼。密碼無法找回,遺失後可能無法讀取雲端資料。', + consentTitle: '啟用端對端加密同步', + consentDescription: + '同步內容包含服務憑證和私人文字歷史,資料會在本機加密後上傳。請先了解完整範圍。', + scopeSummary: '查看完整同步範圍', + consentCheck: '我已了解完整範圍,並同意加密同步這些資料。', + continue: '繼續', + createTitle: '設定同步密碼', + unlockTitle: '解鎖雲端備份', + passwordTitle: '變更同步密碼', + create: '建立加密備份', + password: '同步密碼', + newPassword: '新同步密碼', + currentPassword: '目前同步密碼', + confirmPassword: '再次輸入新密碼', + passwordPolicy: '使用 12–128 個字元,包含大寫字母、小寫字母和數字,避免常見弱密碼。', + rememberKey: '在此裝置的安全儲存空間記住解鎖金鑰', + disableTitle: '關閉加密同步?', + disableDescription: + '關閉後停止後續同步,雲端備份和本機資料都會保留。刪除雲端備份是另一項獨立操作。', + confirmDisable: '關閉同步', + deleteTitle: '刪除雲端加密備份?', + deleteDescription: + '僅刪除目前帳號的雲端備份,本機資料保留。之後在其他裝置還原前,需要重新建立備份。', + backupRetention: '刪除後,服務備份副本最多保留 {{days}} 天。', + deleteCheck: '我確認刪除這份雲端備份。', + confirmDelete: '刪除雲端備份', + restoreTitle: '還原前檢閱', + restoreDescription: '請檢查下列資料類別,敏感值不會顯示。確認之前不會還原任何內容。', + deviceReview: '還原後請核對 {{count}} 項裝置設定,包括快捷鍵、模型目錄、麥克風及系統授權。', + restoreMode: '還原方式', + merge: '合併,並逐項處理衝突', + replace: '使用雲端資料取代本機同步資料', + replaceWarning: '此操作會取代同步範圍內的本機資料。若要保留本機修改,請選擇合併。', + restoreCheck: '我已檢查還原方式和衝突處理選擇。', + applyRestore: '確認還原', + conflictProgress: '已處理 {{selected}} / {{total}} 項衝突', + conflictItem: '衝突 {{index}} · {{category}}', + conflictLocal: '保留本機', + conflictCloud: '使用雲端', + previous: '上一頁', + next: '下一頁', + scope: { + preferences: '應用程式偏好與介面設定。', + credentials: 'ASR、LLM、Omni 渠道及服務 API keys、ID、access key、secret key 等憑證。', + personal: '詞典、自訂詞彙預設、修正、風格包及圖示。', + history: '全部聽寫與速記文字歷史,以及活動統計。', + device: '裝置設定檔,還原後需在目標裝置核對。', + excluded: + '不包含 OAuth 登入狀態、同步密碼或衍生金鑰、作業系統憑證檔案、PIN、裝置權限、原始錄音與影片,以及模型權重。', + }, + states: { + disabled: '同步已關閉', + sign_in_required: '需要登入 GitHub', + unlock_required: '請輸入密碼解鎖', + ready: '已同步', + pending: '本機變更待同步', + syncing: '正在同步', + conflict: '請檢閱衝突變更', + failed: '同步需要處理', + outcome_unknown: '雲端結果待確認', + recovery_required: '需要復原本機同步狀態', + }, + categories: { + preferences: '應用程式偏好', + ui_preferences: '介面設定', + channels: '服務渠道與憑證', + provider_credentials: '服務憑證', + dictionary: '詞典', + vocabulary_presets: '自訂詞彙預設', + corrections: '修正規則', + style_packs: '風格包與圖示', + history: '文字歷史', + activity: '活動統計', + device_profile: '裝置設定檔', + other: '其他同步資料', + }, + conflictReasons: { + both_modified: '本機和雲端都修改了這項資料。', + delete_modify: '一端刪除了這項資料,另一端進行了修改。', + no_common_baseline: '沒有共同的同步基準,請選擇要保留的一端。', + other: '請選擇本機或雲端版本,具體值不會顯示。', + }, + errors: { + unknown: '操作未能完成,請重新整理狀態後重試。', + signIn: '請重新登入 GitHub。', + unlock: '請先使用同步密碼解鎖此裝置。', + unavailable: '加密同步暫不可用,請使用原生用戶端並稍後檢查服務。', + weakPassword: '請使用符合長度和字元要求、且不常見的強密碼。', + passwordMismatch: '兩次輸入的密碼不一致。', + invalidPassword: '密碼無法解鎖這份備份,或加密資料驗證未通過。', + secureStorage: '安全儲存空間拒絕存取。請檢查裝置授權,或取消記住金鑰後解鎖。', + changed: '檢閱期間資料已變更。請關閉對話框、重新整理狀態,並重新取得預覽。', + accountChanged: 'GitHub 帳號已變更,請重新整理後再繼續。', + busy: '已有同步工作在執行,請等待或先取消。', + cancelled: '工作已取消。', + network: '暫時無法連線同步服務,請檢查網路後重試。', + rateLimited: '請求過於頻繁,請稍後重試。', + outcomeUnknown: '雲端結果尚未確認。請先核對待確認結果,不要重複建立備份。', + recovery: '本機同步狀態需要復原。請保留本機資料,不要覆寫雲端備份。', + rolledBack: '還原失敗,本機變更已回復。請重新整理狀態後重試。', + tooLarge: '加密備份超出服務的大小限制。', + reviewRequired: '請先確認完整同步範圍,並檢閱雲端還原預覽。', + choicesRequired: '請為每項衝突選擇本機或雲端版本。', + invalidData: '加密備份未通過驗證,本機資料未被取代。', + localData: '無法安全準備本機資料,請重新整理後重試。', + }, + }, cloudSync: { title: '雲端同步', description: '使用 GitHub 帳號,在裝置之間同步詞典、風格與個人偏好。', @@ -102,6 +243,18 @@ export const zhTW: typeof zhCN = { cancel: '取消', }, qa: { + compact: { + closeError: '關閉失敗,請重試。', + sendError: '傳送失敗,輸入已保留,請重試。', + microphoneError: '麥克風操作失敗,請重試。', + modeError: '編輯模式未變更,請重試。', + conversation: '目前對話', + sending: '正在傳送提問…', + addUnavailable: '新增內容 · 暫不可用', + browserUnavailable: '預覽不執行指令', + answer: 'OpenLess 回答', + layoutError: '視窗展開失敗,請關閉後重新開啟。', + }, title: '劃詞追問', headerHint: '隨時提問', thinking: '思考中…', @@ -133,6 +286,46 @@ export const zhTW: typeof zhCN = { editInstructionMode: '編輯指令', }, lessComputer: { + desktop: { + approvedSubmitted: '已提交允許', + deniedSubmitted: '已提交拒絕', + agents: '你的 Agents', + configured: '目前設定', + agentSettings: '在設定中選擇', + historyUnavailable: '歷史記錄 · 暫不可用', + sessionUnavailable: '新對話 · 暫不可用', + agentHint: '在設定中選擇使用的 Agent。', + workspace: '工作區', + multitask: '多工', + unavailable: '暫不可用', + historyHint: '四個 Agent 的歷史與多對話功能尚未開放。', + signedIn: '已登入', + signIn: '登入帳號', + currentSession: '目前對話', + minimize: '最小化', + maximize: '最大化 / 還原', + windowError: '視窗操作未完成,請重試。', + emptyHint: '寫下具體任務,或用已設定的說話快捷鍵,讓想法開始行動。', + voiceHint: '按住說話快捷鍵', + idle: '等待指令', + waitingApproval: '等待你的確認', + submittingApproval: '正在提交…', + approvalError: '審批未提交成功,請重試。', + approvalExpired: '此輪已結束,審批已不可用。', + sendError: '傳送失敗,輸入已保留。請重試。', + browserUnavailable: '瀏覽器預覽不會執行指令,請在桌面應用程式中使用。', + cancelHint: '可從膠囊取消正在執行的任務。', + inputHint: 'Enter 傳送 · Shift + Enter 換行', + activity: '任務動態', + noActivity: '尚無任務活動', + activityHint: '任務開始後,工具呼叫與審批會顯示在這裡。', + currentTask: '目前任務', + toolActive: '呼叫中', + toolReported: '已收到呼叫記錄', + approval: '操作審批', + apiCost: '本輪 API 費用', + activitySource: '隨目前任務更新。費用僅在服務回傳時顯示。', + }, title: 'Less Computer', subtitle: '想讓電腦做什麼?', you: '你', diff --git a/openless-all/app/src/lib/encryptedSyncUiBridge.ts b/openless-all/app/src/lib/encryptedSyncUiBridge.ts new file mode 100644 index 000000000..dc692ce1e --- /dev/null +++ b/openless-all/app/src/lib/encryptedSyncUiBridge.ts @@ -0,0 +1,203 @@ +// The main native window owns the device-local UI mirror. Every write shares +// this queue and a native revision, including the initial consent preparation. +import { invokeOrMock, isTauri } from './ipc/shared'; +import { + getLocalePreference, + setLocalePreference, + SUPPORTED_LOCALES, + type SupportedLocale, +} from '../i18n'; +import { readFontScale, setFontScale, type FontScaleId } from './fontScale'; + +type UiPreferences = { locale?: string; fontScale?: string }; +type UiSnapshot = { preferences: UiPreferences | null; revision: string | null }; +type UiKey = 'locale' | 'fontScale'; +type Status = { + sequence: string; + account: { githubId: string } | null; + vaultId: string | null; + consentVersion: string | null; +}; +type Restored = { sequence: string; accountId: string; vaultId: string; taskId: string | null }; +let installation: Promise | null = null; +let flushBridge: (() => Promise) | null = null; + +export async function flushEncryptedSyncUiPreferences(): Promise { + await installEncryptedSyncUiBridge(); + if (!flushBridge) throw new Error('cloud_sync_unavailable'); + await flushBridge(); +} + +export function installEncryptedSyncUiBridge(): Promise { + if (!isTauri || new URLSearchParams(location.search).has('window')) return Promise.resolve(); + return (installation ??= install()); +} + +async function install(): Promise { + let ready = false; + let choiceEpoch = 0; + let obsoleteThrough = 0; + let restoredSequence = 0n; + let restorationEpoch = 0; + let settledRestorationEpoch = 0; + let known: UiSnapshot = { preferences: null, revision: null }; + const choices = new Map(); + let queue: Promise = Promise.resolve(); + const unavailable = (): never => { + throw new Error('cloud_sync_unavailable'); + }; + const readStatus = () => invokeOrMock('cloud_sync_e2ee_status', undefined, unavailable); + const readUi = () => + invokeOrMock('cloud_sync_e2ee_get_ui_preferences_snapshot', undefined, unavailable); + const sameScope = (a: Status, b: Status) => + a.account?.githubId === b.account?.githubId && a.vaultId === b.vaultId; + const belongs = (state: Status, event: Restored) => + state.account?.githubId === event.accountId && state.vaultId === event.vaultId; + const failed = () => window.dispatchEvent(new Event('openless:sync-ui-persistence-failed')); + const enqueue = (work: () => Promise): Promise => { + const next = queue.catch(() => {}).then(work); + queue = next.catch(failed); + return next; + }; + const invalidate = (through: number) => { + obsoleteThrough = Math.max(obsoleteThrough, through); + for (const [key, choice] of choices) if (choice.epoch <= through) choices.delete(key); + }; + const apply = async (preferences: UiPreferences, expectedEpoch: number) => { + if ( + (choices.get('locale')?.epoch ?? 0) <= expectedEpoch && + (preferences.locale === 'system' || + SUPPORTED_LOCALES.some((locale) => locale === preferences.locale)) + ) { + await setLocalePreference(preferences.locale as SupportedLocale | 'system', 'sync-restore'); + } + if ( + (choices.get('fontScale')?.epoch ?? 0) <= expectedEpoch && + ['small', 'medium', 'large'].includes(preferences.fontScale ?? '') + ) { + setFontScale(preferences.fontScale as FontScaleId, 'sync-restore'); + } + }; + const reconcile = async (through: number) => { + const current = await readUi(); + known = current; + invalidate(through); + if (current.preferences) await apply(current.preferences, through); + }; + const persist = async (explicit: boolean, epoch: number) => { + if (!explicit && (epoch !== choiceEpoch || epoch <= obsoleteThrough)) return; + const status = await readStatus(); + if (!explicit && (epoch !== choiceEpoch || epoch <= obsoleteThrough || !status.consentVersion)) + return; + const current = await readUi(); + if (restorationEpoch !== settledRestorationEpoch) { + if (explicit) throw new Error('cloud_sync_ui_restore_pending'); + return; + } + // A restore or rollback may have happened without its notification reaching + // this WebView. Rebase from native, but never replay the old user's intent + // over that revision. A subsequent edit uses the refreshed revision. + if (current.revision !== known.revision) { + known = current; + invalidate(epoch); + if (current.preferences) await apply(current.preferences, epoch); + throw new Error('cloud_sync_ui_revision_changed'); + } + if (!explicit && epoch <= obsoleteThrough) return; + const pending = [...choices].filter( + ([, value]) => value.epoch > obsoleteThrough && value.epoch <= epoch, + ); + if (!pending.length && current.preferences) return; + const desired = { + locale: getLocalePreference(), + fontScale: readFontScale(), + ...current.preferences, + }; + for (const [key, choice] of pending) desired[key] = choice.value; + try { + await invokeOrMock( + 'cloud_sync_e2ee_set_ui_preferences_checked', + { + ...desired, + expectedRevision: current.revision, + }, + unavailable, + ); + await reconcile(epoch); + } catch (error) { + // Refresh even after CAS failure or an uncertain reply. Keeping the old + // revision would make future edits fail until the WebView restarts. + await reconcile(epoch); + throw error; + } + }; + const changed = (event: Event) => { + if (!ready || (event as CustomEvent<{ source?: string }>).detail?.source === 'sync-restore') + return; + const epoch = ++choiceEpoch; + const values = { locale: getLocalePreference(), fontScale: readFontScale() }; + const detailKey = (event as CustomEvent<{ key?: UiKey }>).detail?.key; + const storageKey = (event as StorageEvent).key; + const keys: UiKey[] = detailKey + ? [detailKey] + : storageKey === 'ol-font-scale' + ? ['fontScale'] + : storageKey + ? ['locale'] + : ['locale', 'fontScale']; + for (const key of keys) choices.set(key, { epoch, value: values[key] }); + void enqueue(() => persist(false, epoch)).catch(() => {}); + }; + const { listen } = await import('@tauri-apps/api/event'); + await listen('cloud-sync-e2ee:restored', ({ payload }) => { + if ( + !/^(0|[1-9]\d{0,19})$/.test(payload.sequence) || + BigInt(payload.sequence) <= restoredSequence + ) + return; + const eventChoiceEpoch = choiceEpoch; + const notificationEpoch = ++restorationEpoch; + // Pause old writes immediately, but retain their choices until native has + // verified this event's scope. A late event from another vault must not + // discard the current user's pending changes. + void enqueue(async () => { + try { + if (BigInt(payload.sequence) <= restoredSequence) return; + const before = await readStatus(); + if (!belongs(before, payload)) return; + const current = await readUi(); + const after = await readStatus(); + if ( + !belongs(after, payload) || + !sameScope(before, after) || + BigInt(payload.sequence) <= restoredSequence + ) + return; + invalidate(eventChoiceEpoch); + known = current; + restoredSequence = BigInt(payload.sequence); + if (current.preferences) await apply(current.preferences, eventChoiceEpoch); + } finally { + settledRestorationEpoch = notificationEpoch; + if (notificationEpoch === restorationEpoch && choices.size > 0) { + void enqueue(() => persist(false, choiceEpoch)).catch(() => {}); + } + } + }).catch(() => {}); + }); + window.addEventListener('openless:ui-preferences-changed', changed); + window.addEventListener('storage', (event) => { + if (event.key === 'ol-font-scale' || event.key?.includes('locale')) changed(event); + }); + flushBridge = () => enqueue(() => persist(true, choiceEpoch)); + try { + await enqueue(async () => { + known = await readUi(); + if (known.preferences) await apply(known.preferences, choiceEpoch); + }); + } catch { + // Settings remain available to retry a denied keychain read. + } finally { + ready = true; + } +} diff --git a/openless-all/app/src/lib/fontScale.ts b/openless-all/app/src/lib/fontScale.ts index 6ca8de617..bfc7c5b29 100644 --- a/openless-all/app/src/lib/fontScale.ts +++ b/openless-all/app/src/lib/fontScale.ts @@ -32,10 +32,11 @@ export function applyFontScale(id: FontScaleId): void { (document.documentElement.style as CSSStyleDeclaration & { zoom?: string }).zoom = String(scale); } -export function setFontScale(id: FontScaleId): void { +export function setFontScale(id: FontScaleId, source: 'user' | 'sync-restore' = 'user'): void { applyFontScale(id); try { window.localStorage.setItem(FONT_SCALE_KEY, id); + window.dispatchEvent(new CustomEvent('openless:ui-preferences-changed', { detail: { source, key: 'fontScale' } })); } catch { /* 忽略 */ } diff --git a/openless-all/app/src/lib/ipc/cloud-sync-e2ee.browser.test.ts b/openless-all/app/src/lib/ipc/cloud-sync-e2ee.browser.test.ts new file mode 100644 index 000000000..8f32a0cab --- /dev/null +++ b/openless-all/app/src/lib/ipc/cloud-sync-e2ee.browser.test.ts @@ -0,0 +1,48 @@ +// @ts-nocheck — Node-only runtime harness; production UI and IPC remain strictly typed. +import assert from 'node:assert/strict'; +import * as api from './cloud-sync-e2ee'; + +const operations: Array<() => Promise> = [ + api.cloudSyncE2eeStatus, + api.cloudSyncE2eeClaimSetupPrompt, + () => api.cloudSyncE2eePrepareEnable(api.CLOUD_SYNC_E2EE_CONSENT_VERSION), + () => + api.cloudSyncE2eeCreate({ + password: 'SyntheticOnly1A', + passwordConfirmation: 'SyntheticOnly1A', + rememberKey: true, + consentVersion: api.CLOUD_SYNC_E2EE_CONSENT_VERSION, + observedRevision: '0', + }), + () => api.cloudSyncE2eeUnlock({ password: 'SyntheticOnly1A', rememberKey: true }), + api.cloudSyncE2eeLock, + () => api.cloudSyncE2eeSetEnabled(true), + api.cloudSyncE2eeSyncNow, + () => api.cloudSyncE2eeCancel('task'), + () => api.cloudSyncE2eePreviewRestore('1'), + () => + api.cloudSyncE2eeApplyRestore({ previewId: 'preview', mode: 'replace', conflictChoices: [] }), + () => + api.cloudSyncE2eeChangePassword({ + currentPassword: 'SyntheticOnly1A', + newPassword: 'SyntheticOnly2A', + confirmation: 'SyntheticOnly2A', + rememberKey: true, + }), + () => + api.cloudSyncE2eeDeleteRemote({ + expectedVaultId: 'vault', + observedRevision: '1', + confirmed: true, + }), + api.cloudSyncE2eeSignOut, + api.cloudSyncE2eeGetUiPreferences, + api.mirrorEncryptedSyncUiPreferences, +]; +for (const invoke of operations) { + await assert.rejects( + invoke, + (error: unknown) => api.encryptedSyncErrorKey(error) === 'unavailable', + ); +} +console.log('cloud-sync-e2ee.browser.test.ts passed'); diff --git a/openless-all/app/src/lib/ipc/cloud-sync-e2ee.test.ts b/openless-all/app/src/lib/ipc/cloud-sync-e2ee.test.ts new file mode 100644 index 000000000..1e661457f --- /dev/null +++ b/openless-all/app/src/lib/ipc/cloud-sync-e2ee.test.ts @@ -0,0 +1,142 @@ +// @ts-nocheck — Node-only runtime harness; production UI and IPC remain strictly typed. +import assert from 'node:assert/strict'; +import type { EncryptedSyncStatus } from './cloud-sync-e2ee'; + +const calls: Array<{ command: string; args: unknown }> = []; +const response = { marker: 'native-result' }; +let failure: unknown = null; +const stored = new Map([ + ['ol.locale', 'fr'], + ['ol-font-scale', 'large'], +]); +Object.defineProperty(globalThis, 'window', { + configurable: true, + value: { + localStorage: { getItem: (key: string) => stored.get(key) ?? null }, + addEventListener() {}, + __TAURI_INTERNALS__: { + invoke: async (command: string, args: unknown) => { + if (command === 'get_startup_snapshot') + return { contractVersion: '2.0.0', backend: { running: true } }; + if (command === 'set_remote_locale') return; + calls.push({ command, args }); + if (failure) throw failure; + return response; + }, + }, + }, +}); + +try { + const api = await import('./cloud-sync-e2ee'); + const secret = 'OnlyA1SyntheticFixture'; + const create = { + password: secret, + passwordConfirmation: secret, + rememberKey: true, + consentVersion: api.CLOUD_SYNC_E2EE_CONSENT_VERSION, + observedRevision: '9007199254740993', + }; + const change = { + currentPassword: secret, + newPassword: `${secret}2`, + confirmation: `${secret}2`, + rememberKey: false, + }; + const apply = { + previewId: 'preview', + mode: 'merge' as const, + conflictChoices: [{ id: 'opaque', side: 'cloud' as const }], + }; + const deletion = { + expectedVaultId: 'vault', + observedRevision: '9007199254740993', + confirmed: true, + }; + const cases: Array<[string, unknown, () => Promise]> = [ + ['status', undefined, api.cloudSyncE2eeStatus], + ['claim_setup_prompt', undefined, api.cloudSyncE2eeClaimSetupPrompt], + [ + 'prepare_enable', + { consentVersion: api.CLOUD_SYNC_E2EE_CONSENT_VERSION }, + () => api.cloudSyncE2eePrepareEnable(api.CLOUD_SYNC_E2EE_CONSENT_VERSION), + ], + ['create', create, () => api.cloudSyncE2eeCreate(create)], + [ + 'unlock', + { password: secret, rememberKey: false }, + () => api.cloudSyncE2eeUnlock({ password: secret, rememberKey: false }), + ], + ['lock', undefined, api.cloudSyncE2eeLock], + ['set_enabled', { enabled: false }, () => api.cloudSyncE2eeSetEnabled(false)], + ['sync_now', undefined, api.cloudSyncE2eeSyncNow], + ['cancel', { taskId: 'task' }, () => api.cloudSyncE2eeCancel('task')], + [ + 'preview_restore', + { observedRevision: '9007199254740993' }, + () => api.cloudSyncE2eePreviewRestore('9007199254740993'), + ], + ['apply_restore', apply, () => api.cloudSyncE2eeApplyRestore(apply)], + ['change_password', change, () => api.cloudSyncE2eeChangePassword(change)], + ['delete_remote', deletion, () => api.cloudSyncE2eeDeleteRemote(deletion)], + ['sign_out', undefined, api.cloudSyncE2eeSignOut], + ['get_ui_preferences', undefined, api.cloudSyncE2eeGetUiPreferences], + ]; + for (const [command, args, invoke] of cases) { + assert.equal(await invoke(), response); + assert.deepEqual(calls.pop(), { command: `cloud_sync_e2ee_${command}`, args: args ?? {} }); + } + // The mirror uses the same revisioned queue as live changes; exercised by + // scripts/encrypted-sync-ui-bridge.test.mjs, including consent preparation. + assert.equal(stored.get('ol.locale'), 'fr'); + assert.equal(stored.get('ol-font-scale'), 'large'); + failure = { + code: 'provider', + details: { reason: 'revision_conflict' }, + message: 'DO_NOT_RENDER_PRIVATE_RESPONSE', + }; + assert.equal(await api.cloudSyncE2eeSyncNow().catch((error: unknown) => error), failure); + assert.equal(api.encryptedSyncErrorKey(failure), 'changed'); + assert.equal(api.encryptedSyncErrorKey({ message: 'DO_NOT_RENDER_PRIVATE_RESPONSE' }), 'unknown'); + assert.equal(api.encryptedSyncErrorKey({ details: { reason: '__proto__' } }), 'unknown'); + + const status = { + sequence: '9007199254740993', + account: { githubId: 'owner', login: 'name' }, + vaultId: 'vault', + taskId: 'task', + serviceOrigin: 'https://sync.example', + } as EncryptedSyncStatus; + const event = { + sequence: '9007199254740994', + accountId: 'owner', + vaultId: 'vault', + taskId: 'task', + }; + assert(api.matchesEncryptedSyncEvent(status, event, status.sequence)); + for (const invalid of [ + { ...event, sequence: status.sequence }, + { ...event, sequence: '01' }, + { ...event, sequence: '18446744073709551616' }, + { ...event, accountId: 'other' }, + { ...event, vaultId: 'other' }, + { ...event, taskId: 'old-task' }, + ]) + assert(!api.matchesEncryptedSyncEvent(status, invalid, status.sequence)); + assert( + api.matchesEncryptedSyncEvent(status, { ...event, taskId: 'new-task' }, status.sequence, false), + ); + assert.notEqual( + api.encryptedSyncScope(status), + api.encryptedSyncScope({ ...status, serviceOrigin: 'https://other.example' }), + ); + assert.equal(api.syncSequence('18446744073709551615'), 18446744073709551615n); + assert.equal(api.syncSequence('not-a-sequence'), null); + assert(api.syncPasswordMeetsBasicRequirements('LongFixture1Ab')); + assert(api.syncPasswordMeetsBasicRequirements('A1' + '界'.repeat(10)) === false); + assert(!api.syncPasswordMeetsBasicRequirements('shortA1')); + assert(!api.syncPasswordMeetsBasicRequirements('A1a' + '界'.repeat(126))); +} finally { + Reflect.deleteProperty(globalThis, 'window'); +} +console.log('cloud-sync-e2ee.test.ts passed'); diff --git a/openless-all/app/src/lib/ipc/cloud-sync-e2ee.ts b/openless-all/app/src/lib/ipc/cloud-sync-e2ee.ts new file mode 100644 index 000000000..2a47bb1a5 --- /dev/null +++ b/openless-all/app/src/lib/ipc/cloud-sync-e2ee.ts @@ -0,0 +1,243 @@ +import { invokeOrMock, isTauri } from './shared'; + +export const CLOUD_SYNC_E2EE_CONSENT_VERSION = 'encrypted-full-snapshot-v1'; + +export type EncryptedSyncState = + | 'disabled' + | 'sign_in_required' + | 'unlock_required' + | 'ready' + | 'pending' + | 'syncing' + | 'conflict' + | 'failed' + | 'outcome_unknown' + | 'recovery_required'; + +export interface EncryptedSyncStatus { + sequence: string; + enabled: boolean; + authState: 'signed_out' | 'signed_in' | 'expired'; + keyState: 'locked' | 'unlocked'; + syncState: EncryptedSyncState; + account: { githubId: string; login: string } | null; + vaultId: string | null; + keyId: string | null; + localGeneration: string; + lastSyncedLocalGeneration: string | null; + remoteRevision: string | null; + lastSuccessfulSyncAt: string | null; + pendingOperationId: string | null; + lastError: { code: string; retryAfterSeconds: number | null } | null; + recoveryRequired: boolean; + hasCloudSnapshot: boolean | null; + taskId: string | null; + serviceOrigin: string; + backupRetentionDays: number | null; + consentVersion: string | null; +} + +export interface EnablePreparation { + nextStep: 'create' | 'unlock' | 'restore_review' | 'ready'; + status: EncryptedSyncStatus; +} + +export interface SyncConflictChoice { + id: string; + side: 'local' | 'cloud'; +} +export interface RestorePreview { + previewId: string; + unconfirmedOperationId?: string | null; + observedRevision: string; + localGeneration: string; + counts: Record; + deviceSettingsToReview: string[]; + conflicts: Array<{ id: string; kind: string; reason: string }>; +} + +export interface EncryptedSyncEventScope { + sequence: string; + accountId: string | null; + vaultId: string | null; + taskId: string | null; +} +export interface EncryptedSyncEvent extends EncryptedSyncEventScope { + status: EncryptedSyncStatus; +} +export interface EncryptedSyncConflictEvent extends EncryptedSyncEventScope { + preview: RestorePreview; +} +export interface EncryptedSyncRestoreEvent extends EncryptedSyncEventScope { + localGeneration: string; + uiPreferences: Record; +} + +// Browser previews have neither a native vault nor a verified GitHub session. +// Never invent an enabled/unlocked/successful state in the preview adapter. +function unavailable(): never { + throw Object.assign(new Error('cloud_sync_e2ee_unavailable'), { + code: 'unsupported', + details: { reason: 'service_unavailable' }, + }); +} + +export const cloudSyncE2eeStatus = (): Promise => + invokeOrMock('cloud_sync_e2ee_status', undefined, unavailable); +export const cloudSyncE2eeClaimSetupPrompt = (): Promise => + invokeOrMock('cloud_sync_e2ee_claim_setup_prompt', undefined, unavailable); +export const cloudSyncE2eePrepareEnable = (consentVersion: string): Promise => + invokeOrMock('cloud_sync_e2ee_prepare_enable', { consentVersion }, unavailable); +export const cloudSyncE2eeCreate = (input: { + password: string; + passwordConfirmation: string; + rememberKey: boolean; + consentVersion: string; + observedRevision: string; +}): Promise => invokeOrMock('cloud_sync_e2ee_create', input, unavailable); +export const cloudSyncE2eeUnlock = (input: { + password: string; + rememberKey: boolean; +}): Promise => invokeOrMock('cloud_sync_e2ee_unlock', input, unavailable); +export const cloudSyncE2eeLock = (): Promise => + invokeOrMock('cloud_sync_e2ee_lock', undefined, unavailable); +export const cloudSyncE2eeSetEnabled = (enabled: boolean): Promise => + invokeOrMock('cloud_sync_e2ee_set_enabled', { enabled }, unavailable); +export const cloudSyncE2eeSyncNow = (): Promise => + invokeOrMock('cloud_sync_e2ee_sync_now', undefined, unavailable); +export const cloudSyncE2eeCancel = (taskId: string): Promise => + invokeOrMock('cloud_sync_e2ee_cancel', { taskId }, unavailable); +export const cloudSyncE2eePreviewRestore = (observedRevision: string): Promise => + invokeOrMock('cloud_sync_e2ee_preview_restore', { observedRevision }, unavailable); +export const cloudSyncE2eeApplyRestore = (input: { + previewId: string; + mode: 'replace' | 'merge'; + conflictChoices: SyncConflictChoice[]; +}): Promise => + invokeOrMock('cloud_sync_e2ee_apply_restore', input, unavailable); +export const cloudSyncE2eeChangePassword = (input: { + currentPassword: string; + newPassword: string; + confirmation: string; + rememberKey: boolean; +}): Promise => + invokeOrMock('cloud_sync_e2ee_change_password', input, unavailable); +export const cloudSyncE2eeDeleteRemote = (input: { + expectedVaultId: string; + observedRevision: string; + confirmed: boolean; +}): Promise => + invokeOrMock('cloud_sync_e2ee_delete_remote', input, unavailable); +export const cloudSyncE2eeSignOut = (): Promise => + invokeOrMock('cloud_sync_e2ee_sign_out', undefined, unavailable); +export const cloudSyncE2eeGetUiPreferences = (): Promise<{ + locale?: string; + fontScale?: string; +} | null> => invokeOrMock('cloud_sync_e2ee_get_ui_preferences', undefined, unavailable); + +export async function mirrorEncryptedSyncUiPreferences(): Promise { + if (!isTauri) unavailable(); + const { flushEncryptedSyncUiPreferences } = await import('../encryptedSyncUiBridge'); + await flushEncryptedSyncUiPreferences(); +} + +export function syncSequence(value: unknown): bigint | null { + if (typeof value !== 'string' || !/^(0|[1-9]\d{0,19})$/.test(value)) return null; + const sequence = BigInt(value); + return sequence <= 18446744073709551615n ? sequence : null; +} + +export function encryptedSyncScope(status: EncryptedSyncStatus): string { + return JSON.stringify([status.serviceOrigin, status.account?.githubId ?? null, status.vaultId]); +} + +/** State events establish task transitions; conflict/restore events must match it. */ +export function matchesEncryptedSyncEvent( + status: EncryptedSyncStatus, + event: EncryptedSyncEventScope, + watermark: string, + requireTask = true, +): boolean { + const incoming = syncSequence(event.sequence); + const previous = syncSequence(watermark); + return ( + incoming !== null && + previous !== null && + incoming > previous && + event.accountId === (status.account?.githubId ?? null) && + event.vaultId === status.vaultId && + (!requireTask || event.taskId === status.taskId) + ); +} + +// Only these value-free codes may influence UI text. Raw server messages, +// unknown detail fields and credential-bearing strings are never displayed. +const errorKeys = { + sign_in_required: 'signIn', + unlock_required: 'unlock', + sync_documents_locked: 'unlock', + service_unavailable: 'unavailable', + unsupported_protocol: 'unavailable', + weak_password: 'weakPassword', + password_confirmation_mismatch: 'passwordMismatch', + invalid_password_or_ciphertext: 'invalidPassword', + secure_storage_denied: 'secureStorage', + revision_conflict: 'changed', + cloud_deleted: 'changed', + conflict: 'reviewRequired', + stale_preview: 'changed', + sync_documents_source_changed: 'changed', + account_changed: 'accountChanged', + busy: 'busy', + runtime_busy: 'busy', + revision_rollback: 'invalidData', + cancelled: 'cancelled', + stale_task: 'changed', + transport_failed: 'network', + rate_limited: 'rateLimited', + service_failed: 'network', + outcome_unknown: 'outcomeUnknown', + recovery_required: 'recovery', + local_storage_unavailable: 'recovery', + sync_journal_unavailable: 'recovery', + sync_restore_rolled_back: 'rolledBack', + payload_too_large: 'tooLarge', + consent_required: 'reviewRequired', + restore_review_required: 'reviewRequired', + sync_conflict_choice_required: 'choicesRequired', + invalid_response: 'invalidData', + sync_documents_invalid: 'invalidData', + sync_documents_invalid_reference: 'invalidData', + sync_documents_duplicate_id: 'invalidData', + sync_documents_excluded_field: 'invalidData', + sync_documents_missing_tombstone: 'invalidData', + sync_documents_unsupported: 'unavailable', + sync_documents_capture_failed: 'localData', + secure_random_unavailable: 'localData', + crypto_worker_failed: 'localData', +} as const; +export type EncryptedSyncErrorKey = (typeof errorKeys)[keyof typeof errorKeys] | 'unknown'; + +export function encryptedSyncErrorKey(error: unknown): EncryptedSyncErrorKey { + if (!error || typeof error !== 'object') return 'unknown'; + const value = error as { message?: unknown; code?: unknown; details?: { reason?: unknown } }; + for (const reason of [value.details?.reason, value.code, value.message]) { + if (typeof reason === 'string' && Object.prototype.hasOwnProperty.call(errorKeys, reason)) { + return errorKeys[reason as keyof typeof errorKeys]; + } + } + return 'unknown'; +} + +/** Advisory form check only; Core owns normalization and the complete policy. */ +export function syncPasswordMeetsBasicRequirements(password: string): boolean { + const normalized = password.normalize('NFC'); + const length = Array.from(normalized).length; + return ( + length >= 12 && + length <= 128 && + /[a-z]/.test(normalized) && + /[A-Z]/.test(normalized) && + /[0-9]/.test(normalized) + ); +} diff --git a/openless-all/app/src/lib/ipc/index.ts b/openless-all/app/src/lib/ipc/index.ts index 971f257c8..f2ef4c633 100644 --- a/openless-all/app/src/lib/ipc/index.ts +++ b/openless-all/app/src/lib/ipc/index.ts @@ -161,6 +161,8 @@ export { getQaHotkeyLabel, setQaHotkey, qaWindowDismiss, + qaWindowSetExpanded, + qaGetSnapshot, qaToggleRecording, qaSubmitText, qaSetEditInstructionMode, diff --git a/openless-all/app/src/lib/ipc/qa.ts b/openless-all/app/src/lib/ipc/qa.ts index b560f166e..850e8b755 100644 --- a/openless-all/app/src/lib/ipc/qa.ts +++ b/openless-all/app/src/lib/ipc/qa.ts @@ -1,4 +1,4 @@ -import type { QaHotkeyBinding } from '../types'; +import type { QaHotkeyBinding, QaStatePayload } from '../types'; import { invokeOrMock } from './shared'; import { formatComboLabel, defaultQaShortcut } from '../hotkey'; @@ -16,12 +16,24 @@ export function qaWindowDismiss(): Promise { return invokeOrMock('qa_window_dismiss', undefined, () => undefined); } +export function qaWindowSetExpanded(expanded: boolean): Promise { + return invokeOrMock('qa_window_set_expanded', { expanded }, () => undefined); +} + export function qaToggleRecording(): Promise { return invokeOrMock('qa_toggle_recording', undefined, () => undefined); } -export function qaSubmitText(text: string): Promise { - return invokeOrMock('qa_submit_text', { text }, () => undefined); +export function qaSubmitText(text: string, expectedSessionId?: string | null): Promise { + return invokeOrMock( + 'qa_submit_text', + expectedSessionId === undefined ? { text } : { text, expectedSessionId, enforceContext: true }, + () => undefined, + ); +} + +export function qaGetSnapshot(): Promise { + return invokeOrMock('qa_get_snapshot', undefined, () => ({ kind: 'idle', messages: [] })); } export function qaSetEditInstructionMode(enabled: boolean): Promise { diff --git a/openless-all/app/src/main.tsx b/openless-all/app/src/main.tsx index 702ba5d0e..057a5fe64 100644 --- a/openless-all/app/src/main.tsx +++ b/openless-all/app/src/main.tsx @@ -5,8 +5,10 @@ import { SplashVideo } from './components/SplashVideo'; import { detectOS } from './components/WindowChrome'; import { i18nReady } from './i18n'; import { initThemeMode } from './lib/themeMode'; +import { installEncryptedSyncUiBridge } from './lib/encryptedSyncUiBridge'; import './styles/tokens.css'; import './styles/global.css'; +import './styles/overlays.css'; import type { OS } from './components/WindowChrome'; @@ -46,4 +48,7 @@ const renderApp = () => { }; // Mount only after the selected local language chunk is ready; avoid mixed-language startup. -void i18nReady.then(renderApp); +void i18nReady.then(async () => { + if (isMainWindow) await installEncryptedSyncUiBridge().catch(() => {}); + renderApp(); +}); diff --git a/openless-all/app/src/pages/LessComputerPanel.tsx b/openless-all/app/src/pages/LessComputerPanel.tsx index 77ac390f6..2ee9c4838 100644 --- a/openless-all/app/src/pages/LessComputerPanel.tsx +++ b/openless-all/app/src/pages/LessComputerPanel.tsx @@ -1,26 +1,23 @@ -// LessComputerPanel.tsx — Less Computer 语音 Agent 浮窗(窗口 label = "less-computer")。 -// -// 结构 = 官方 shadcn base 组件文档 message-scroller-demo **同款骨架**: -// MessageScrollerProvider → Card(CardHeader 标题/副行/CardAction ✕ → -// CardContent(p-0) 内 MessageScroller / Empty 空状态 → CardFooter 内 -// InputGroup 输入组)。组件源码 1:1 来自官方 registry(components/chat/ui/, -// 仅按 CLI 规则改 import 路径),行为来自 @shadcn/react 官方 primitive。 -// -// 「电脑操控」形态:不带头像 —— 用户指令 = Bubble align="end"(官方 bubble-demo -// 同款);工具调用 = Marker + Spinner/✓ + shimmer(官方 marker-demo 同款); -// 上下文压缩 = Marker separator;思考 = 与转译胶囊一模一样的 SiriGL 流体圆点。 -// -// 事件流:`user`(fresh=true 清空重开)→ delta/tool/compaction/approval 交错 → -// completed(落成本)/ error / cancelled。浮窗首次创建时后端事件可能先于 -// listener 注册到达(webview 冷加载),丢掉 user 事件后其余事件必须自愈补轮, -// 不能对空轮次静默丢弃(真机「后端在跑、前端一片空白」的根因)。 -// -// 窗口固定尺寸(Rust 侧创建即定死 420×540),内容只在滚动框内滚动。 -// 关闭:Esc / ✕ → less_computer_window_dismiss → 后端隐藏窗口。 - +// Less Computer desktop workspace. The event replay and voice projection remain +// authoritative; history/multi-session placeholders never invent executable state. import { useEffect, useRef, useState, type KeyboardEvent as ReactKeyboardEvent } from 'react'; import { useTranslation } from 'react-i18next'; -import { ArrowUpIcon, CheckIcon, MessageCircleDashedIcon, XIcon } from 'lucide-react'; +import { + ActivityIcon, + ArrowUpIcon, + CheckIcon, + ChevronRightIcon, + CircleDotIcon, + HistoryIcon, + LayersIcon, + Maximize2Icon, + MicIcon, + MinusIcon, + PlusIcon, + ShieldCheckIcon, + TerminalIcon, + XIcon, +} from 'lucide-react'; import { MessageScroller, MessageScrollerButton, @@ -29,47 +26,37 @@ import { MessageScrollerProvider, MessageScrollerViewport, } from '../components/chat/ui/message-scroller'; -import { - Card, - CardAction, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from '../components/chat/ui/card'; -import { - Empty, - EmptyDescription, - EmptyHeader, - EmptyMedia, - EmptyTitle, -} from '../components/chat/ui/empty'; -import { - InputGroup, - InputGroupAddon, - InputGroupButton, - InputGroupInput, -} from '../components/chat/ui/input-group'; -import { Marker, MarkerContent, MarkerIcon } from '../components/chat/ui/marker'; -import { Bubble, BubbleContent } from '../components/chat/ui/bubble'; -import { Button } from '../components/chat/ui/button'; -import { Spinner } from '../components/chat/ui/spinner'; -import { ThinkingOrb } from '../components/chat/avatars'; +import { AgentBuddy, type BuddyColor } from '../components/chat/AgentBuddy'; +import { VoiceWaveform } from '../components/chat/VoiceWaveform'; import { AssistantMarkdown } from '../components/chat/markdown'; import { useChatPanelLifecycle } from '../components/chat/lifecycle'; -import { cn } from '../components/chat/lib/utils'; +import { GithubLoginModal } from '../components/GithubLoginModal'; import { chatPanelFocusKeyboard, + getSettings, isTauri, lessComputerApprove, lessComputerSubmitText, lessComputerSync, lessComputerWindowDismiss, + marketplaceAuthStatus, } from '../lib/ipc'; import { reconcileLessComputerReplay, reduceLessComputerVoice } from '../lib/lessComputerReplay'; -import type { LessComputerEvent, LessComputerVoiceEvent } from '../lib/types'; -import '../components/chat/chat.css'; +import type { + CodingAgentProviderId, + LessComputerEvent, + LessComputerVoiceEvent, + UserPreferences, +} from '../lib/types'; +import './less-computer-panel.css'; + +type Translate = ReturnType['t']; +const AGENTS: { id: CodingAgentProviderId; name: string; color: BuddyColor }[] = [ + { id: 'claude-code-cli', name: 'Claude Code', color: 'coral' }, + { id: 'opencode-cli', name: 'OpenCode', color: 'amber' }, + { id: 'codex-cli', name: 'Codex', color: 'violet' }, + { id: 'dsh-cli', name: 'dsh', color: 'mint' }, +]; type RunStatus = 'idle' | 'working' | 'done' | 'error' | 'cancelled'; @@ -81,7 +68,7 @@ interface TextSegment { interface ToolSegment { kind: 'tool'; name: string; - /** 后端没有工具结束事件:下一个事件(delta/tool/approval/收尾)到达即视为结束。 */ + /** 后端没有工具结束事件:下一个事件到达时仅停止活动指示,不推断工具成功。 */ running: boolean; } @@ -90,7 +77,9 @@ interface ApprovalSegment { token: string; command: string; reason: string; - /** 用户已点过的结果,决定按钮禁用态。undefined = 待处理。 */ + /** Only confirmed IPC results become decisions. Pending requests remain undecided. */ + pending?: boolean; + failed?: boolean; decision?: 'approved' | 'denied'; } @@ -129,75 +118,68 @@ function updateLastTurn(turns: Turn[], fn: (t: Turn) => Turn): Turn[] { return [...list.slice(0, -1), fn(list[list.length - 1])]; } -/** 把流里还在扫光的工具行停下来(下一个事件到达 = 上一个工具已结束)。 */ +/** 把流里还在扫光的工具行停下来(下一个事件到达仅停止工具活动指示)。 */ function settleRunningTools(segments: Segment[]): Segment[] { if (!segments.some((s) => s.kind === 'tool' && s.running)) return segments; return segments.map((s) => (s.kind === 'tool' && s.running ? { ...s, running: false } : s)); } -// 浏览器预览(vite dev,非 Tauri):?window=less-computer&demo=1 注入两轮演示对话 -// (第一轮完成态含成本行;第二轮进行中,覆盖「文本 → 工具行 → 压缩行 → 进行中 -// 工具行 → 审批卡」交错流与新轮次锚定),方便调样式。 -function getPreviewTurns(): Turn[] { - if (isTauri || typeof window === 'undefined') return []; - if (new URLSearchParams(window.location.search).get('demo') !== '1') return []; - return [ - { - user: '看一下下载文件夹里最大的三个文件是什么', - segments: [ - { kind: 'tool', name: 'Bash', running: false }, - { - kind: 'text', - content: - '最大的三个文件:\n1. `Xcode_26.5.xip` — 12.4 GB\n2. `ubuntu-24.04.iso` — 5.8 GB\n3. `设计素材包.zip` — 2.1 GB', - }, - ], - status: 'done', - errorMsg: '', - costUsd: 0.012, - }, - { - user: '帮我把桌面上的截图整理到「本周素材」文件夹', - segments: [ - { kind: 'text', content: '好的,我先看一下桌面上有哪些截图。' }, - { kind: 'tool', name: 'Bash', running: false }, - { kind: 'compaction' }, - { kind: 'text', content: '找到 6 张截图,正在移动并按日期重命名…' }, - { kind: 'tool', name: 'Bash', running: true }, - { - kind: 'approval', - token: 'demo', - command: 'mv ~/Desktop/Screenshot*.png ~/Documents/本周素材/', - reason: 'Moving files outside the working directory.', - }, - ], - status: 'working', - errorMsg: '', - costUsd: null, - }, - ]; -} - -/** macOS movableByWindowBackground 拖动把手(header 区域整条可拖,普通箭头指针)。 */ -const drag = { 'data-tauri-drag-region': true } as const; - -/** 已应用事件的最大 seq。放模块级而不是 effect 闭包:StrictMode/HMR 重挂载时 - * 组件 state 保留,若水位归零会把同一批积压重放两遍、轮次翻倍。后端 seq 全局 - * 单调不回卷(新会话只清缓冲),webview 整页重载时本变量归零、恰好与「需要 - * 完整重放」对齐。 */ +// Keep the replay watermark across StrictMode/HMR effect remounts. A whole +// WebView reload resets both state and watermark so the backend can replay it. let lcAppliedSeq = 0; export function LessComputerPanel() { const { t } = useTranslation(); - // 连续对话:每按一次说话键追加一轮(除非后端标记 fresh=新会话则清空重开)。 - const [turns, setTurns] = useState(getPreviewTurns); + const [turns, setTurns] = useState([]); const [voice, setVoice] = useState(null); - // 新会话计数:fresh 时 +1,作为壳 key 重放入场动画 —— 浮窗是常驻 webview - // (hide/show 复用),没有这个的话再次唤起时内容直接闪现,很突兀。 const [sessionSeq, setSessionSeq] = useState(0); - // 出现/消失动画:后端 show/hide 发 chat-panel:shown / chat-panel:closing。 + const [provider, setProvider] = useState(null); + const [signedIn, setSignedIn] = useState(null); + const [loginOpen, setLoginOpen] = useState(false); + const [windowError, setWindowError] = useState(false); + const turnEpoch = useRef(0); + const approvalRequests = useRef(new Map()); const { enterEpoch, closing } = useChatPanelLifecycle(); + // Read actual configuration and account status; browser previews stay unavailable. + useEffect(() => { + if (!isTauri) return; + let cancelled = false; + let revision = 0; + let unlisten: (() => void) | undefined; + const refresh = async () => { + const current = ++revision; + const results = await Promise.allSettled([getSettings(), marketplaceAuthStatus()]); + if (cancelled || current !== revision) return; + const [settings, account] = results; + setProvider(settings.status === 'fulfilled' ? settings.value.codingAgentProvider : null); + setSignedIn(account.status === 'fulfilled' ? account.value.signedIn : null); + }; + void (async () => { + try { + const { listen } = await import('@tauri-apps/api/event'); + const handle = await listen('prefs:changed', (event) => { + revision += 1; + setProvider(event.payload.codingAgentProvider); + }); + if (cancelled) { + handle(); + return; + } + unlisten = handle; + } catch { + /* focus refresh still works when the optional subscription fails */ + } + if (!cancelled) void refresh(); + })(); + window.addEventListener('focus', refresh); + return () => { + cancelled = true; + unlisten?.(); + window.removeEventListener('focus', refresh); + }; + }, [loginOpen]); + // ── 后端事件订阅(mount 一次)──────────────────────────────────────── // // 冷加载竞态补偿:webview 首次创建需要数百毫秒,后端在此期间 emit 的事件 @@ -243,6 +225,8 @@ export function LessComputerPanel() { if (cancelled) return; const reconciled = reconcileLessComputerReplay(lcAppliedSeq, replay, pending); if (reconciled.reset) { + turnEpoch.current += 1; + approvalRequests.current.clear(); setTurns([]); setVoice(null); } @@ -271,6 +255,8 @@ export function LessComputerPanel() { setVoice((previous) => reduceLessComputerVoice(previous, ev)); break; case 'user': { + turnEpoch.current += 1; + approvalRequests.current.clear(); // 一轮新对话。fresh=true(后端无可续会话→新会话)则清空历史重开;否则追加为后续轮次。 setTurns((prev) => (ev.fresh ? [emptyTurn(ev.text)] : [...prev, emptyTurn(ev.text)])); if (ev.fresh) setSessionSeq((seq) => seq + 1); @@ -366,120 +352,299 @@ export function LessComputerPanel() { } }; - const onApproval = (token: string, approved: boolean) => { - setTurns((prev) => - prev.map((tn) => ({ - ...tn, - segments: tn.segments.map((s) => - s.kind === 'approval' && s.token === token - ? { ...s, decision: approved ? 'approved' : ('denied' as const) } - : s, - ), - })), + const onApproval = async (token: string, approved: boolean) => { + const currentTurn = turns[turns.length - 1]; + if (!isTauri || currentTurn?.status !== 'working' || approvalRequests.current.has(token)) + return; + const card = currentTurn.segments.find( + (segment) => segment.kind === 'approval' && segment.token === token, ); - void lessComputerApprove(token, approved); + if (!card || card.kind !== 'approval' || card.decision) return; + const request = Symbol(token); + const epoch = turnEpoch.current; + approvalRequests.current.set(token, request); + const update = (patch: Partial) => + setTurns((previous) => + previous.map((turn) => ({ + ...turn, + segments: turn.segments.map((segment) => + segment.kind === 'approval' && segment.token === token + ? { ...segment, ...patch } + : segment, + ), + })), + ); + update({ pending: true, failed: false }); + try { + await lessComputerApprove(token, approved); + if (turnEpoch.current === epoch) + update({ pending: false, decision: approved ? 'approved' : 'denied' }); + } catch { + if (turnEpoch.current === epoch) update({ pending: false, failed: true }); + } finally { + if (approvalRequests.current.get(token) === request) approvalRequests.current.delete(token); + } }; - const onClose = () => void lessComputerWindowDismiss(); + const windowAction = async (action: 'hide' | 'minimize' | 'maximize') => { + if (!isTauri) return; + setWindowError(false); + try { + if (action === 'hide') await lessComputerWindowDismiss(); + else { + const { getCurrentWindow } = await import('@tauri-apps/api/window'); + const nativeWindow = getCurrentWindow(); + if (action === 'minimize') await nativeWindow.minimize(); + else await nativeWindow.toggleMaximize(); + } + } catch { + setWindowError(true); + } + }; - // ── Esc 关闭 ──────────────────────────────────────────────────────── useEffect(() => { const onKey = (event: KeyboardEvent) => { - if (event.key === 'Escape') { - event.preventDefault(); - void lessComputerWindowDismiss(); - } + if (event.key !== 'Escape' || event.isComposing || event.keyCode === 229) return; + event.preventDefault(); + if (loginOpen) { + event.stopPropagation(); + setLoginOpen(false); + } else void windowAction('hide'); }; window.addEventListener('keydown', onKey, true); return () => window.removeEventListener('keydown', onKey, true); - }, []); + }, [loginOpen]); - const working = turns.some((tn) => tn.status === 'working'); + const working = turns.some((turn) => turn.status === 'working'); + const latestTurn = turns[turns.length - 1]; + const status = runStatusLabel(latestTurn, t); - // ── 官方 message-scroller-demo 同款骨架 ───────────────────────────── return ( - - +
    - - {t('lessComputer.title')} - - {working ? ( - - {t('lessComputer.working')} + + +
    +
    + + {t('lessComputer.desktop.currentSession')} +
    +
    + - - - - {turns.length === 0 ? ( - - - - - - {t('lessComputer.title')} - {t('lessComputer.subtitle')} - - - ) : ( - - - - {turns.map((turn, ti) => ( - - ))} - - - - + + + +
    +
    + +
    + {windowError && ( +

    + {t('lessComputer.desktop.windowError')} +

    )} - - +
    +

    {t('lessComputer.title')}

    + + + {status} + +
    +
    + + {turns.length === 0 ? ( +
    + +

    {t('lessComputer.subtitle')}

    +

    {t('lessComputer.desktop.emptyHint')}

    + + + {t('lessComputer.desktop.voiceHint')} + +
    + ) : ( + + + + {turns.map((turn, index) => ( + + ))} + + + + + )} +
    +
    -
    - - +
    + +
    + {loginOpen && isTauri && ( + setLoginOpen(false)} + onSuccess={() => { + setSignedIn(true); + setLoginOpen(false); + }} + /> + )} + ); } -// ── 底部输入区:官方 demo 同款 InputGroup,打字 + 语音两种形式完整 ──── -// -// · 打字:单行输入 + 右下发送(官方 demo 的 block-end addon 布局);Enter 走 -// 表单提交;IME 组合中的 Enter(选字确认)不触发(isComposing/keyCode 229 -// 守卫)。点进输入框时 chat_panel_focus_keyboard 让非激活面板成为 key window -// (不激活 app,主窗口不动)。 -// · 语音:录音红光、转译思考黑光绕输入组一圈圈跑(olchat-ring),输入框本体 -// 保持可见;只显示Core提供的voice_state,与聊天事件共用seq重放和session归属。 +function runStatusLabel(turn: Turn | undefined, t: Translate): string { + if (!turn) return t('lessComputer.desktop.idle'); + if ( + turn.status === 'working' && + turn.segments.some((segment) => segment.kind === 'approval' && !segment.decision) + ) + return t('lessComputer.desktop.waitingApproval'); + if (turn.status === 'working') return t('lessComputer.working'); + if (turn.status === 'done') return t('lessComputer.done'); + if (turn.status === 'cancelled') return t('common.cancelled'); + if (turn.status === 'error') return t('lessComputer.error'); + return t('lessComputer.desktop.idle'); +} + +function voiceTime(elapsedMs: number): string { + const seconds = Math.floor(Math.max(0, Number.isFinite(elapsedMs) ? elapsedMs : 0) / 1000); + return `${Math.floor(seconds / 60)}:${String(seconds % 60).padStart(2, '0')}`; +} + function Composer({ working, voice, @@ -487,272 +652,365 @@ function Composer({ }: { working: boolean; voice: LessComputerVoiceEvent | null; - t: ReturnType['t']; + t: Translate; }) { const [text, setText] = useState(''); - const busy = working || (voice !== null && voice.phase !== 'idle'); - // 输入组环形光:录音红光 → 转译黑光 → 指令落定(agent 已在跑)即停。 - const ring = - voice?.phase === 'recording' - ? 'recording' - : (voice?.phase === 'starting' || voice?.phase === 'transcribing') && !working - ? 'thinking' - : undefined; - // IME 组合期间的 Enter 是「选字确认」不是「发送」。keydown 里 isComposing - // 已覆盖大部分场景,keyCode 229 兜底 WebKit 老行为。 + const [submitting, setSubmitting] = useState(false); + const [failed, setFailed] = useState(false); + const submittingRef = useRef(false); const composingRef = useRef(false); - - const send = () => { + const speaking = voice !== null && voice.phase !== 'idle'; + const busy = working || speaking || submitting; + const voiceLabel = + voice?.phase === 'recording' + ? t('overview.inAppDictation.recording') + : voice?.phase === 'starting' + ? t('common.loading') + : t('overview.inAppDictation.processing'); + const send = async () => { const trimmed = text.trim(); - if (!trimmed || busy) return; - setText(''); - void lessComputerSubmitText(trimmed); - }; - - const onKeyDown = (event: ReactKeyboardEvent) => { - if (event.key !== 'Enter') return; - if (composingRef.current || event.nativeEvent.isComposing || event.keyCode === 229) { - event.preventDefault(); + if (!isTauri || !trimmed || busy || submittingRef.current || composingRef.current) return; + submittingRef.current = true; + setSubmitting(true); + setFailed(false); + try { + await lessComputerSubmitText(trimmed); + // Keep a draft typed while the IPC was pending. The actual user event owns the chat. + setText((current) => (current === text ? '' : current)); + } catch { + setFailed(true); + } finally { + submittingRef.current = false; + setSubmitting(false); } }; - + const onKeyDown = (event: ReactKeyboardEvent) => { + if (event.key !== 'Enter' || event.shiftKey) return; + event.preventDefault(); + if (composingRef.current || event.nativeEvent.isComposing || event.keyCode === 229) return; + void send(); + }; return ( -
    { - event.preventDefault(); - send(); - }} - className="w-full" - > - - setText(event.currentTarget.value)} - onKeyDown={onKeyDown} - onCompositionStart={() => { - composingRef.current = true; - }} - onCompositionEnd={() => { - composingRef.current = false; - }} - onFocus={() => void chatPanelFocusKeyboard()} - onPointerDown={() => void chatPanelFocusKeyboard()} - /> - - {voice && voice.phase !== 'idle' && ( - - {voice.phase === 'recording' - ? t('overview.inAppDictation.recording') - : voice.phase === 'starting' - ? t('common.loading') - : t('overview.inAppDictation.processing')} - {voice.phase === 'recording' && ( - + { + event.preventDefault(); + void send(); + }} + > +
    +

    D3b;o-N3 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%0Dwj~|PrwDC$aZdpZuMG@%TXebo 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ȈKozqoI&Gr@>GN%0@+xtmP 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¨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