From 01f1c9783f84b528e7fe1d7def3efe69839bea0e Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:02:06 +0530 Subject: [PATCH 01/12] docs: plan for retention archive-before-delete + scheduled cleanup Co-Authored-By: Claude Fable 5 --- docs/RETENTION_BACKUP_PLAN.md | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/RETENTION_BACKUP_PLAN.md diff --git a/docs/RETENTION_BACKUP_PLAN.md b/docs/RETENTION_BACKUP_PLAN.md new file mode 100644 index 00000000..df19e48c --- /dev/null +++ b/docs/RETENTION_BACKUP_PLAN.md @@ -0,0 +1,62 @@ +# Retention backup: archive-before-delete + automatic history cleanup + +Status: Phase 1 in progress (branch `feat/retention-backup`). Phase 2 not started. + +## Problem + +Continuous screen capture writes full-resolution PNGs into `captures/` with no retention: +~170MB/day (~5GB/month) measured on a live profile (1,379 files / 838MB over ~5 days). Nothing +prunes automatically - the only lever is the manual "delete older than N days" button in +Settings > Data & Privacy, and that delete is permanent. There is no way to keep old history +before clearing it: the existing backup engine (`src/main/backup/`) exports projects + +conversations only, never the capture/meeting files that retention deletes. + +## Phase 1 - "Back up & delete" (manual, this branch) + +A fail-closed archive step in front of the existing category delete. + +User-visible behavior: + +1. Settings > Data & Privacy grows a "Back up & delete" action next to the existing delete and + retention buttons for the file-centric categories (captures, meetings, generated images). +2. Clicking it opens the normal save dialog. The user picks any destination (external SSD, NAS). +3. The app stages one ZIP - e.g. `offgrid-captures-before-2026-07-26.zip` - containing every file + the delete would remove, plus a `manifest.json` (category, cutoff, created-at, file count, + total bytes). +4. Only after the ZIP is confirmed delivered does the real delete run. Cancel or any archive + failure = nothing is deleted, ever. + +Design: + +- **One source of truth for "what a category deletes".** The per-category userData dir list moves + out of `clearCategory`'s switch into a pure module (`src/main/data-categories.ts`) that both the + delete path and the archive path read. Two lists would drift into "backed up X, deleted Y". +- **Collector** - `collectCategoryFiles(dirs, olderThanDays?)` returns exactly the files + `clearDirs`/`clearDirsOlderThan` would remove (same mtime cutoff). +- **Stager** - streams the files into a ZIP via JSZip with STORE compression (PNGs do not + compress; the corpus is ~1GB, so never buffer it in memory) + writes `manifest.json`. +- **Orchestrator** - `archiveThenClear(category, olderThanDays)`: collect -> stage -> deliver via + the existing `DesktopBackupSink` (save dialog) -> on confirmed delivery only, call the existing + `clearCategory`. Zero files to archive skips the dialog and clears directly. The destination is + injectable (sink today, fixed folder later) so Phase 2 reuses the same seam. +- **Untouched contracts** - `clearCategory` itself does not change; pro's + `clearRemovedCaptureProjections` keys off missing files and we copy before deleting, so the pro + side needs zero changes. +- **Tests in the same pass** - the dir-map DRY guard, age-cutoff selection, ZIP + manifest + contents, and the ordering contract (canceled/failed archive leaves every file in place), run + against real temp dirs with a fake sink. + +## Phase 2 - automatic history cleanup (next) + +One setting plus a nightly job, built on the Phase 1 seam: + +- Settings: "Keep screen history for 30 / 60 / 90 days / forever" + optional archive folder. +- A scheduled daily job runs the same archive-then-delete machinery with a fixed-folder + destination instead of a dialog: old frames archived (if a folder is set), then pruned. Disk + usage stays flat at roughly one retention window. +- Ships OFF by default; deleting history silently is an explicit opt-in. +- This matches the field standard: Microsoft Recall caps storage and deletes oldest-first; + Rewind asks once how long to keep history. + +Out of scope for both phases (tracked separately in the bloat notes): compressing captures at +write time (WebP/JPEG instead of PNG) and encoding frames into HEVC segments for Replay. From e2701cb9fb0f15c4de4ca22ab0df97819654a9e2 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:04:03 +0530 Subject: [PATCH 02/12] refactor(privacy): one source of truth for category->dirs (delete + summary) CATEGORY_DIRS in the new pure data-categories module now feeds clearCategory, getDataSummary, and (next) the retention archive, so the archive can never back up a different file set than the delete removes. Co-Authored-By: Claude Fable 5 --- src/main/__tests__/data-categories.test.ts | 30 +++++++++++++++++ src/main/data-categories.ts | 23 +++++++++++++ src/main/data-privacy.ts | 39 +++++++++++++--------- 3 files changed, 76 insertions(+), 16 deletions(-) create mode 100644 src/main/__tests__/data-categories.test.ts create mode 100644 src/main/data-categories.ts diff --git a/src/main/__tests__/data-categories.test.ts b/src/main/__tests__/data-categories.test.ts new file mode 100644 index 00000000..97f2590b --- /dev/null +++ b/src/main/__tests__/data-categories.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, it } from 'vitest' +import { ARCHIVABLE_CATEGORIES, CATEGORY_DIRS, type DataCategoryId } from '../data-categories' + +describe('the data-category dir map (SSOT for delete + archive)', () => { + it('gives every category at least one userData-relative dir name', () => { + for (const [id, dirs] of Object.entries(CATEGORY_DIRS)) { + expect(dirs.length, `category ${id} has no dirs`).toBeGreaterThan(0) + for (const dir of dirs) { + // Relative names only - callers resolve against userData. A path separator or + // traversal here would silently point delete/archive somewhere else. + expect(dir).not.toMatch(/[/\\]|\.\./) + expect(dir.trim().length).toBeGreaterThan(0) + } + } + }) + + it('archivable categories are a subset of the map', () => { + const ids = Object.keys(CATEGORY_DIRS) as DataCategoryId[] + for (const id of ARCHIVABLE_CATEGORIES) { + expect(ids).toContain(id) + } + }) + + it('keeps the retention-critical mappings stable', () => { + // The retention flows (age-based delete + pre-delete archive) are wired to these + // two categories; renaming their dirs is a data-loss-shaped change - fail loudly. + expect(CATEGORY_DIRS.captures).toEqual(['captures']) + expect(CATEGORY_DIRS.meetings).toEqual(['meetings']) + }) +}) diff --git a/src/main/data-categories.ts b/src/main/data-categories.ts new file mode 100644 index 00000000..e34f771f --- /dev/null +++ b/src/main/data-categories.ts @@ -0,0 +1,23 @@ +// The single source of truth for which userData directories each data category owns. +// Pure data (no imports) so it is unit-testable and shared by every consumer: +// - data-privacy's delete paths (clearCategory, getDataSummary), and +// - the retention archive (backup/retention-archive.ts), which must ZIP exactly the +// files the delete would remove. +// Two lists here would drift into "backed up X, deleted Y" - that is the bug class +// this module exists to prevent. Dir names are userData-relative; callers resolve +// them against app.getPath('userData'). + +export type DataCategoryId = 'chats' | 'memories' | 'captures' | 'meetings' | 'images' + +export const CATEGORY_DIRS: Record = { + chats: ['uploads'], + memories: ['entity-photos'], + captures: ['captures'], + meetings: ['meetings'], + images: ['generated-images', 'artifacts-library', 'style-thumbs'] +} + +/** Categories whose deletable payload is files on disk - the ones worth archiving + * before a delete. chats/memories are DB-centric and already covered by the full + * backup engine (backup/data-port.ts). */ +export const ARCHIVABLE_CATEGORIES: readonly DataCategoryId[] = ['captures', 'meetings', 'images'] diff --git a/src/main/data-privacy.ts b/src/main/data-privacy.ts index 16dd04a6..c475af33 100644 --- a/src/main/data-privacy.ts +++ b/src/main/data-privacy.ts @@ -7,9 +7,10 @@ import path from 'path' import { app } from 'electron' import { getDB } from './database' import { deleteByKinds, deleteByKindsOlderThan, resetVectors } from './vectors' +import { CATEGORY_DIRS, type DataCategoryId } from './data-categories' export interface DataCategory { - id: 'chats' | 'memories' | 'captures' | 'meetings' | 'images' + id: DataCategoryId label: string detail: string count?: number @@ -18,6 +19,9 @@ export interface DataCategory { const ud = (...p: string[]): string => path.join(app.getPath('userData'), ...p) +/** The category's userData dirs, absolute - resolved from the shared SSOT map. */ +const categoryDirs = (id: DataCategoryId): string[] => CATEGORY_DIRS[id].map((d) => ud(d)) + function dirSize(p: string): { bytes: number; files: number } { let bytes = 0, files = 0 @@ -279,14 +283,17 @@ function clearFiles(...files: string[]): void { /** Summary of what's stored, per category, for the Delete-my-data screen. */ export function getDataSummary(): DataCategory[] { - const captures = dirSize(ud('captures')) - const meetings = dirSize(ud('meetings')) - const images = (() => { - const a = dirSize(ud('generated-images')), - b = dirSize(ud('artifacts-library')), - c = dirSize(ud('style-thumbs')) - return { bytes: a.bytes + b.bytes + c.bytes, files: a.files + b.files + c.files } - })() + const sumDirs = (id: DataCategoryId): { bytes: number; files: number } => + categoryDirs(id).reduce( + (acc, dir) => { + const s = dirSize(dir) + return { bytes: acc.bytes + s.bytes, files: acc.files + s.files } + }, + { bytes: 0, files: 0 } + ) + const captures = sumDirs('captures') + const meetings = sumDirs('meetings') + const images = sumDirs('images') return [ { id: 'chats', @@ -335,21 +342,21 @@ export async function clearCategory( switch (id) { case 'chats': clearTables(...CHAT_TABLES) - clearDirs(ud('uploads')) + clearDirs(...categoryDirs('chats')) break case 'memories': clearTables(...MEMORY_TABLES) - clearDirs(ud('entity-photos')) + clearDirs(...categoryDirs('memories')) // Delete ONLY the memory-side vectors (not the shared lancedb dir — that // would wipe capture/meeting/chat vectors and dangle the live handle). await deleteByKinds(['memory', 'entity', 'fact']) break case 'captures': if (olderThanDays && olderThanDays > 0) { - clearDirsOlderThan(olderThanDays, ud('captures')) + clearDirsOlderThan(olderThanDays, ...categoryDirs('captures')) await deleteByKindsOlderThan(['screen'], Date.now() - olderThanDays * 86_400_000) // prune stale capture vectors too } else { - clearDirs(ud('captures')) + clearDirs(...categoryDirs('captures')) await deleteByKinds(['screen']) // full clear → drop capture vectors too // Registered cleaners below remove the semantic source rows. Drop their indexing // receipts here as well so a future capture can never inherit a stale marker. @@ -364,16 +371,16 @@ export async function clearCategory( break case 'meetings': if (olderThanDays && olderThanDays > 0) { - clearDirsOlderThan(olderThanDays, ud('meetings')) + clearDirsOlderThan(olderThanDays, ...categoryDirs('meetings')) await deleteByKindsOlderThan(['meeting'], Date.now() - olderThanDays * 86_400_000) // prune stale meeting vectors too } else { - clearDirs(ud('meetings')) + clearDirs(...categoryDirs('meetings')) await deleteByKinds(['meeting']) // full clear → drop meeting vectors too } pruneDanglingMeetings() // drop rows whose media we just deleted (no ghosts) break case 'images': - clearDirs(ud('generated-images'), ud('artifacts-library'), ud('style-thumbs')) + clearDirs(...categoryDirs('images')) break } for (const cleaner of categoryCleaners.get(id)?.values() ?? []) { From 7ce647523e1d89fe8d91708d2d1defa3e9032188 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:06:22 +0530 Subject: [PATCH 03/12] feat(backup): retention archive core - collect, stage, archive-then-clear Collects exactly the files clearCategory would remove (same top-level mtime cutoff, symlinks skipped), streams them into a STORE ZIP with a manifest, and enforces the fail-closed ordering: delete runs only after a confirmed delivery; cancel or any failure deletes nothing. Destination is an injected seam so Phase 2's scheduled cleanup reuses the same orchestration. 12 tests cover the cutoff semantics, ZIP round-trip, and every ordering branch. Co-Authored-By: Claude Fable 5 --- .../__tests__/retention-archive.test.ts | 171 ++++++++++++++++ src/main/backup/retention-archive.ts | 191 ++++++++++++++++++ 2 files changed, 362 insertions(+) create mode 100644 src/main/backup/__tests__/retention-archive.test.ts create mode 100644 src/main/backup/retention-archive.ts diff --git a/src/main/backup/__tests__/retention-archive.test.ts b/src/main/backup/__tests__/retention-archive.test.ts new file mode 100644 index 00000000..d9d8b817 --- /dev/null +++ b/src/main/backup/__tests__/retention-archive.test.ts @@ -0,0 +1,171 @@ +import fs from 'node:fs' +import os from 'node:os' +import path from 'node:path' +import JSZip from 'jszip' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { + archiveThenClear, + collectCategoryFiles, + stageRetentionArchive, + type ArchiveClearDeps, + type DoomedFile +} from '../retention-archive' + +let userData: string +let temp: string + +const write = (rel: string, content = 'x', ageDays = 0): string => { + const abs = path.join(userData, rel) + fs.mkdirSync(path.dirname(abs), { recursive: true }) + fs.writeFileSync(abs, content) + if (ageDays > 0) { + const t = new Date(Date.now() - ageDays * 86_400_000) + fs.utimesSync(abs, t, t) + } + return abs +} + +/** Age a directory itself (clearDirsOlderThan cuts on TOP-LEVEL entry mtime). */ +const ageDir = (rel: string, ageDays: number): void => { + const t = new Date(Date.now() - ageDays * 86_400_000) + fs.utimesSync(path.join(userData, rel), t, t) +} + +beforeEach(() => { + userData = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-ret-ud-')) + temp = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-ret-tmp-')) +}) +afterEach(() => { + fs.rmSync(userData, { recursive: true, force: true }) + fs.rmSync(temp, { recursive: true, force: true }) +}) + +describe('collectCategoryFiles', () => { + it('collects everything for a full clear, across all of the category dirs', () => { + write('generated-images/a.png') + write('artifacts-library/b.html') + write('style-thumbs/c.png') + const files = collectCategoryFiles(userData, 'images') + expect(files.map((f) => f.zipKey).sort()).toEqual([ + 'artifacts-library/b.html', + 'generated-images/a.png', + 'style-thumbs/c.png' + ]) + }) + + it('mirrors the retention delete: only top-level entries older than the cutoff', () => { + write('captures/old.png', 'old', 10) + write('captures/new.png', 'new', 1) + const files = collectCategoryFiles(userData, 'captures', 7) + expect(files.map((f) => f.zipKey)).toEqual(['captures/old.png']) + }) + + it('an old day-directory contributes every file under it, keyed by relative path', () => { + write('meetings/2026-01-01/audio.m4a', 'a', 1) // fresh file INSIDE an old dir + ageDir('meetings/2026-01-01', 30) + const files = collectCategoryFiles(userData, 'meetings', 7) + expect(files.map((f) => f.zipKey)).toEqual(['meetings/2026-01-01/audio.m4a']) + }) + + it('never follows symlinks and survives a missing category dir', () => { + const real = write('captures/real.png', 'r', 10) + fs.symlinkSync(real, path.join(userData, 'captures', 'link.png')) + const files = collectCategoryFiles(userData, 'captures', 7) + expect(files.map((f) => f.zipKey)).toEqual(['captures/real.png']) + expect(collectCategoryFiles(userData, 'images')).toEqual([]) // dirs never created + }) +}) + +describe('stageRetentionArchive', () => { + it('stages a ZIP holding the files plus an accurate manifest', async () => { + write('captures/old.png', 'PNGDATA', 10) + const files = collectCategoryFiles(userData, 'captures', 7) + const staged = await stageRetentionArchive(files, { + category: 'captures', + olderThanDays: 7, + tempDir: temp + }) + expect(staged.suggestedName).toMatch(/^offgrid-captures-before-\d{4}-\d{2}-\d{2}\.zip$/) + + const zip = await JSZip.loadAsync(fs.readFileSync(staged.zipPath)) + expect(await zip.file('captures/old.png')!.async('string')).toBe('PNGDATA') + const manifest = JSON.parse(await zip.file('manifest.json')!.async('string')) + expect(manifest).toMatchObject({ + surface: 'offgrid-desktop-retention', + category: 'captures', + olderThanDays: 7, + fileCount: 1, + totalBytes: 'PNGDATA'.length + }) + expect(Date.parse(manifest.cutoffIso)).toBeLessThan(Date.now()) + }) + + it('names a full clear archive by the day it was made', async () => { + const staged = await stageRetentionArchive([], { category: 'images', tempDir: temp }) + expect(staged.suggestedName).toMatch(/^offgrid-images-all-\d{4}-\d{2}-\d{2}\.zip$/) + expect(staged.manifest.cutoffIso).toBeNull() + }) +}) + +describe('archiveThenClear (the ordering contract)', () => { + const doomed: DoomedFile[] = [{ absPath: '/tmp/x', zipKey: 'captures/x', bytes: 1 }] + const staged = { zipPath: '/tmp/z.zip', suggestedName: 'z.zip', manifest: {} as never } + + const deps = (over: Partial): ArchiveClearDeps => ({ + collect: () => doomed, + stage: vi.fn(async () => staged), + deliver: vi.fn(async () => ({ canceled: false, path: '/ssd/z.zip' })), + clear: vi.fn(async () => ({ success: true })), + ...over + }) + + it('clears only after a confirmed delivery, reporting where the archive went', async () => { + const d = deps({}) + const result = await archiveThenClear(d) + expect(result).toEqual({ status: 'cleared', archivedFiles: 1, archivePath: '/ssd/z.zip' }) + expect(d.clear).toHaveBeenCalledTimes(1) + }) + + it('a canceled save dialog deletes nothing', async () => { + const d = deps({ deliver: vi.fn(async () => ({ canceled: true })) }) + expect(await archiveThenClear(d)).toEqual({ status: 'canceled' }) + expect(d.clear).not.toHaveBeenCalled() + }) + + it('an archive failure deletes nothing', async () => { + const d = deps({ + stage: vi.fn(async () => { + throw new Error('disk full') + }) + }) + expect(await archiveThenClear(d)).toEqual({ status: 'failed', error: 'disk full' }) + expect(d.clear).not.toHaveBeenCalled() + }) + + it('a delivery failure deletes nothing', async () => { + const d = deps({ + deliver: vi.fn(async () => { + throw new Error('destination unwritable') + }) + }) + expect(await archiveThenClear(d)).toEqual({ + status: 'failed', + error: 'destination unwritable' + }) + expect(d.clear).not.toHaveBeenCalled() + }) + + it('zero doomed files skips the dialog and clears directly', async () => { + const d = deps({ collect: () => [] }) + expect(await archiveThenClear(d)).toEqual({ status: 'cleared', archivedFiles: 0 }) + expect(d.stage).not.toHaveBeenCalled() + expect(d.deliver).not.toHaveBeenCalled() + expect(d.clear).toHaveBeenCalledTimes(1) + }) + + it('reports honestly when the archive saved but the delete failed', async () => { + const d = deps({ clear: vi.fn(async () => ({ success: false })) }) + const result = await archiveThenClear(d) + expect(result.status).toBe('failed') + }) +}) diff --git a/src/main/backup/retention-archive.ts b/src/main/backup/retention-archive.ts new file mode 100644 index 00000000..97e784de --- /dev/null +++ b/src/main/backup/retention-archive.ts @@ -0,0 +1,191 @@ +// Archive-before-delete for the file-centric data categories (captures, meetings, +// images): collect exactly the files the category delete would remove, stage them +// into one ZIP with a manifest, deliver it to a user-chosen destination, and only +// then let the real delete run. Fail closed - a canceled or failed archive means +// nothing is deleted. +// +// Electron-free on purpose: everything here takes plain paths and injected deps +// (the save-dialog sink, clearCategory) so the ordering contract is unit-testable +// against real temp dirs. The Electron wiring lives in retention-archive-ipc.ts. +import fs from 'node:fs' +import os from 'node:os' +import path from 'node:path' +import JSZip from 'jszip' +import { CATEGORY_DIRS, type DataCategoryId } from '../data-categories' + +export interface DoomedFile { + absPath: string + /** Path inside the ZIP, `/` so multi-dir categories stay distinct. */ + zipKey: string + bytes: number +} + +/** + * The files `clearCategory(category, olderThanDays)` would remove. Mirrors the delete's + * exact semantics (data-privacy clearDirs/clearDirsOlderThan): the age cutoff applies to + * TOP-LEVEL entries by mtime, and an old top-level directory is removed whole - so an old + * day-directory contributes every file under it. Symlinks are never followed (same rule + * as the backup archive: no symlinks in an archive). + */ +export function collectCategoryFiles( + userDataDir: string, + category: DataCategoryId, + olderThanDays?: number +): DoomedFile[] { + const cutoff = olderThanDays && olderThanDays > 0 ? Date.now() - olderThanDays * 86_400_000 : null + const out: DoomedFile[] = [] + for (const dirName of CATEGORY_DIRS[category]) { + const root = path.join(userDataDir, dirName) + let entries: string[] + try { + entries = fs.readdirSync(root) + } catch { + continue // missing dir - nothing to archive there + } + for (const name of entries) { + const fp = path.join(root, name) + let st: fs.Stats + try { + st = fs.lstatSync(fp) + } catch { + continue + } + if (st.isSymbolicLink()) continue + if (cutoff !== null && st.mtimeMs >= cutoff) continue + if (st.isDirectory()) collectUnder(fp, `${dirName}/${name}`, out) + else if (st.isFile()) out.push({ absPath: fp, zipKey: `${dirName}/${name}`, bytes: st.size }) + } + } + return out +} + +function collectUnder(dir: string, keyPrefix: string, out: DoomedFile[]): void { + let entries: fs.Dirent[] + try { + entries = fs.readdirSync(dir, { withFileTypes: true }) + } catch { + return + } + for (const entry of entries) { + const fp = path.join(dir, entry.name) + const key = `${keyPrefix}/${entry.name}` + if (entry.isSymbolicLink()) continue + if (entry.isDirectory()) collectUnder(fp, key, out) + else if (entry.isFile()) { + try { + out.push({ absPath: fp, zipKey: key, bytes: fs.statSync(fp).size }) + } catch { + /* vanished between readdir and stat */ + } + } + } +} + +export interface RetentionManifest { + surface: 'offgrid-desktop-retention' + category: DataCategoryId + olderThanDays: number | null + /** Everything in the archive is older than this instant (null = full clear). */ + cutoffIso: string | null + createdIso: string + fileCount: number + totalBytes: number + note: string +} + +export interface StagedArchive { + zipPath: string + suggestedName: string + manifest: RetentionManifest +} + +/** + * Stream the doomed files into one ZIP (STORE - the corpus is mostly PNG/media that + * does not recompress, and it can be ~1GB, so never buffer it) plus a manifest.json. + */ +export async function stageRetentionArchive( + files: DoomedFile[], + opts: { category: DataCategoryId; olderThanDays?: number; tempDir?: string } +): Promise { + const now = new Date() + const cutoff = + opts.olderThanDays && opts.olderThanDays > 0 + ? new Date(now.getTime() - opts.olderThanDays * 86_400_000) + : null + const manifest: RetentionManifest = { + surface: 'offgrid-desktop-retention', + category: opts.category, + olderThanDays: opts.olderThanDays && opts.olderThanDays > 0 ? opts.olderThanDays : null, + cutoffIso: cutoff ? cutoff.toISOString() : null, + createdIso: now.toISOString(), + fileCount: files.length, + totalBytes: files.reduce((sum, f) => sum + f.bytes, 0), + note: 'Files archived by Off Grid AI Desktop before a category delete. Database rows and search vectors for this category were deleted, not archived.' + } + const zip = new JSZip() + zip.file('manifest.json', JSON.stringify(manifest, null, 2)) + for (const file of files) { + zip.file(file.zipKey, fs.createReadStream(file.absPath)) + } + const stageDir = await fs.promises.mkdtemp( + path.join(opts.tempDir ?? os.tmpdir(), 'offgrid-retention-') + ) + const day = now.toISOString().slice(0, 10) + const suggestedName = cutoff + ? `offgrid-${opts.category}-before-${cutoff.toISOString().slice(0, 10)}.zip` + : `offgrid-${opts.category}-all-${day}.zip` + const zipPath = path.join(stageDir, suggestedName) + await new Promise((resolve, reject) => { + zip + .generateNodeStream({ type: 'nodebuffer', streamFiles: true, compression: 'STORE' }) + .pipe(fs.createWriteStream(zipPath)) + .on('finish', () => resolve()) + .on('error', reject) + }) + return { zipPath, suggestedName, manifest } +} + +export interface ArchiveDelivery { + canceled: boolean + path?: string +} + +/** The injected seams: today's sink is the save dialog; Phase 2's scheduled cleanup + * swaps `deliver` for a fixed-folder copy with no dialog - same orchestration. */ +export interface ArchiveClearDeps { + collect: () => DoomedFile[] + stage: (files: DoomedFile[]) => Promise + deliver: (zipPath: string, suggestedName: string) => Promise + clear: () => Promise<{ success: boolean }> +} + +export type ArchiveClearResult = + | { status: 'cleared'; archivedFiles: number; archivePath?: string } + | { status: 'canceled' } + | { status: 'failed'; error: string } + +/** + * The ordering contract: delete runs ONLY after the archive is confirmed delivered. + * Cancel or any archive failure leaves every file in place. Zero doomed files skips + * the archive (nothing file-based to lose) and clears directly. + */ +export async function archiveThenClear(deps: ArchiveClearDeps): Promise { + try { + const files = deps.collect() + if (files.length === 0) { + const cleared = await deps.clear() + return cleared.success + ? { status: 'cleared', archivedFiles: 0 } + : { status: 'failed', error: 'Nothing to archive, but the delete failed.' } + } + const staged = await deps.stage(files) + const delivery = await deps.deliver(staged.zipPath, staged.suggestedName) + if (delivery.canceled) return { status: 'canceled' } + const cleared = await deps.clear() + return cleared.success + ? { status: 'cleared', archivedFiles: files.length, archivePath: delivery.path } + : { status: 'failed', error: 'The archive was saved, but the delete failed.' } + } catch (e) { + return { status: 'failed', error: e instanceof Error ? e.message : String(e) } + } +} From 0afdffad29ca2f1b862705a41e11a7618ff3babb Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:09:12 +0530 Subject: [PATCH 04/12] feat(backup): wire archive-before-delete over IPC (data:archive-clear) Shared contract type + preload archiveDataCategory; the handler binds the orchestration to the real userData dir, the save-dialog sink, and clearCategory, and refuses non-archivable categories. Co-Authored-By: Claude Fable 5 --- src/main/backup/retention-archive-ipc.ts | 31 ++++++++++++++++++++++++ src/main/backup/retention-archive.ts | 7 +++--- src/main/ipc.ts | 7 ++++++ src/preload/index.ts | 10 +++++++- src/shared/backup-contracts.ts | 11 +++++++++ 5 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/main/backup/retention-archive-ipc.ts diff --git a/src/main/backup/retention-archive-ipc.ts b/src/main/backup/retention-archive-ipc.ts new file mode 100644 index 00000000..4680628f --- /dev/null +++ b/src/main/backup/retention-archive-ipc.ts @@ -0,0 +1,31 @@ +// Electron wiring for archive-before-delete: binds the pure retention-archive +// orchestration to the real userData dir, the save-dialog sink, and clearCategory. +import os from 'node:os' +import { app } from 'electron' +import { ARCHIVABLE_CATEGORIES, type DataCategoryId } from '../data-categories' +import { clearCategory } from '../data-privacy' +import { + archiveThenClear, + collectCategoryFiles, + stageRetentionArchive, + type ArchiveClearResult +} from './retention-archive' +import { DesktopBackupSink } from './sink' + +export async function archiveThenClearCategory( + id: string, + olderThanDays?: number +): Promise { + if (!(ARCHIVABLE_CATEGORIES as readonly string[]).includes(id)) { + return { status: 'failed', error: `Category "${id}" cannot be archived before delete.` } + } + const category = id as DataCategoryId + const sink = new DesktopBackupSink() + return archiveThenClear({ + collect: () => collectCategoryFiles(app.getPath('userData'), category, olderThanDays), + stage: (files) => + stageRetentionArchive(files, { category, olderThanDays, tempDir: os.tmpdir() }), + deliver: (zipPath, suggestedName) => sink.deliverFile(zipPath, suggestedName), + clear: () => clearCategory(category, olderThanDays) + }) +} diff --git a/src/main/backup/retention-archive.ts b/src/main/backup/retention-archive.ts index 97e784de..0a036b66 100644 --- a/src/main/backup/retention-archive.ts +++ b/src/main/backup/retention-archive.ts @@ -11,6 +11,7 @@ import fs from 'node:fs' import os from 'node:os' import path from 'node:path' import JSZip from 'jszip' +import type { RetentionArchiveClearContract } from '../../shared/backup-contracts' import { CATEGORY_DIRS, type DataCategoryId } from '../data-categories' export interface DoomedFile { @@ -159,10 +160,8 @@ export interface ArchiveClearDeps { clear: () => Promise<{ success: boolean }> } -export type ArchiveClearResult = - | { status: 'cleared'; archivedFiles: number; archivePath?: string } - | { status: 'canceled' } - | { status: 'failed'; error: string } +// The renderer-facing shape is the shared contract - one definition, both sides. +export type ArchiveClearResult = RetentionArchiveClearContract /** * The ordering contract: delete runs ONLY after the archive is confirmed delivered. diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 7dd84793..d6fa2ece 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -1706,6 +1706,13 @@ export function setupIPC() { ) ) ipcMain.handle('data:delete-all', () => import('./data-privacy').then((m) => m.deleteAllData())) + // Archive-before-delete: ZIP what the delete would remove to a user-picked + // destination, then clear - fail closed (see backup/retention-archive.ts). + ipcMain.handle('data:archive-clear', (_e, id: string, olderThanDays?: number) => + import('./backup/retention-archive-ipc').then((m) => + m.archiveThenClearCategory(id, olderThanDays) + ) + ) // --- Image generation (stable-diffusion.cpp) ---------------------------- ipcMain.handle('imagegen:status', async () => { diff --git a/src/preload/index.ts b/src/preload/index.ts index c4ce7977..0434b7cf 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -14,8 +14,10 @@ import type { import { BACKUP_EXPORT_ALL_CHANNEL, BACKUP_IMPORT_CHANNEL, + RETENTION_ARCHIVE_CLEAR_CHANNEL, type BackupDeliveryContract, - type BackupRestoreSummaryContract + type BackupRestoreSummaryContract, + type RetentionArchiveClearContract } from '../shared/backup-contracts' console.log('PRELOAD SCRIPT LOADED') @@ -406,6 +408,12 @@ const offGridApi = { getDataSummary: () => ipcRenderer.invoke('data:summary'), clearDataCategory: (id: string, olderThanDays?: number) => ipcRenderer.invoke('data:clear', id, olderThanDays), + archiveDataCategory: (id: string, olderThanDays?: number) => + ipcRenderer.invoke( + RETENTION_ARCHIVE_CLEAR_CHANNEL, + id, + olderThanDays + ) as Promise, deleteAllData: () => ipcRenderer.invoke('data:delete-all'), exportBackup: () => ipcRenderer.invoke(BACKUP_EXPORT_ALL_CHANNEL) as Promise, diff --git a/src/shared/backup-contracts.ts b/src/shared/backup-contracts.ts index 074b492c..8c639d15 100644 --- a/src/shared/backup-contracts.ts +++ b/src/shared/backup-contracts.ts @@ -12,3 +12,14 @@ export interface BackupRestoreSummaryContract { messagesAdded: number documentsAdded: number } + +// Retention archive (archive-before-delete) - see src/main/backup/retention-archive.ts. +export const RETENTION_ARCHIVE_CLEAR_CHANNEL = 'data:archive-clear' + +/** Result of an archive-then-clear run. `canceled` = user closed the save dialog; + * nothing was deleted. `failed` = archive or delete failed; on an archive failure + * nothing was deleted (fail closed). */ +export type RetentionArchiveClearContract = + | { status: 'cleared'; archivedFiles: number; archivePath?: string } + | { status: 'canceled' } + | { status: 'failed'; error: string } From c15a2b5e36158805d8407cd27bab602c77b08eb3 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:13:06 +0530 Subject: [PATCH 05/12] feat(privacy): Back up first toggle - archive to ZIP before any delete Archivable categories (captures, meetings, images - shared contract, same list the IPC handler enforces) get a per-row toggle; when on, the retention chips and All route through data:archive-clear: pick a destination, the ZIP is written, and only then does the delete run. Cancel or failure deletes nothing and says so. 5 UI tests cover the routing, gating, and fail-closed messaging. Co-Authored-By: Claude Fable 5 --- src/main/data-categories.ts | 10 +- .../src/components/setup/DataPrivacyPanel.tsx | 59 +++++++++- .../setup/__tests__/DataPrivacyPanel.test.tsx | 108 ++++++++++++++++++ src/shared/backup-contracts.ts | 7 ++ 4 files changed, 175 insertions(+), 9 deletions(-) create mode 100644 src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx diff --git a/src/main/data-categories.ts b/src/main/data-categories.ts index e34f771f..ab9ee7a6 100644 --- a/src/main/data-categories.ts +++ b/src/main/data-categories.ts @@ -7,7 +7,10 @@ // this module exists to prevent. Dir names are userData-relative; callers resolve // them against app.getPath('userData'). -export type DataCategoryId = 'chats' | 'memories' | 'captures' | 'meetings' | 'images' +import type { DataCategoryId } from '../shared/backup-contracts' + +export { ARCHIVABLE_CATEGORIES } from '../shared/backup-contracts' +export type { DataCategoryId } export const CATEGORY_DIRS: Record = { chats: ['uploads'], @@ -16,8 +19,3 @@ export const CATEGORY_DIRS: Record = { meetings: ['meetings'], images: ['generated-images', 'artifacts-library', 'style-thumbs'] } - -/** Categories whose deletable payload is files on disk - the ones worth archiving - * before a delete. chats/memories are DB-centric and already covered by the full - * backup engine (backup/data-port.ts). */ -export const ARCHIVABLE_CATEGORIES: readonly DataCategoryId[] = ['captures', 'meetings', 'images'] diff --git a/src/renderer/src/components/setup/DataPrivacyPanel.tsx b/src/renderer/src/components/setup/DataPrivacyPanel.tsx index cf2af14b..b6d800d4 100644 --- a/src/renderer/src/components/setup/DataPrivacyPanel.tsx +++ b/src/renderer/src/components/setup/DataPrivacyPanel.tsx @@ -1,8 +1,9 @@ import { useCallback, useEffect, useState } from 'react' -import { Trash, Warning } from '@phosphor-icons/react' +import { Archive, Trash, Warning } from '@phosphor-icons/react' +import { ARCHIVABLE_CATEGORIES, type DataCategoryId } from '../../../../shared/backup-contracts' interface DataCategory { - id: 'chats' | 'memories' | 'captures' | 'meetings' | 'images' + id: DataCategoryId label: string detail: string count?: number @@ -22,6 +23,18 @@ export function DataPrivacyPanel(): React.ReactElement { const api = window.api const [cats, setCats] = useState([]) const [busy, setBusy] = useState(null) + // Per-category "Back up first": when on, the delete buttons archive to a + // user-picked ZIP before clearing (fail closed - cancel deletes nothing). + const [backupFirst, setBackupFirst] = useState>(new Set()) + + const toggleBackupFirst = (id: DataCategoryId): void => { + setBackupFirst((prev) => { + const next = new Set(prev) + if (next.has(id)) next.delete(id) + else next.add(id) + return next + }) + } const refresh = useCallback(async () => { try { @@ -54,6 +67,24 @@ export function DataPrivacyPanel(): React.ReactElement { const what = olderThanDays ? `${c.label.toLowerCase()} older than ${olderThanDays} days` : `all ${c.label.toLowerCase()}` + if (backupFirst.has(c.id)) { + if ( + !window.confirm( + `Back up ${what} to a ZIP, then delete? You'll pick where the backup is saved - canceling that deletes nothing.` + ) + ) + return + setBusy(c.id) + try { + const result = await api.archiveDataCategory(c.id, olderThanDays) + if (result.status === 'failed') + window.alert(`Backup failed - nothing was deleted. ${result.error}`) + await refresh() + } finally { + setBusy(null) + } + return + } if ( !window.confirm( `Delete ${what}? This permanently removes it from this device and can't be undone.` @@ -118,6 +149,22 @@ export function DataPrivacyPanel(): React.ReactElement {
+ {ARCHIVABLE_CATEGORIES.includes(c.id) ? ( + + ) : null} {RETENTION[c.id]?.map((r) => (
diff --git a/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx b/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx new file mode 100644 index 00000000..d6f794f6 --- /dev/null +++ b/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx @@ -0,0 +1,108 @@ +// @vitest-environment jsdom +// The archive-before-delete UI contract: "Back up first" appears only for archivable +// categories, and when it is on the delete buttons route to archiveDataCategory (the +// fail-closed IPC) instead of the plain delete. +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { cleanup, render, screen, waitFor } from '@testing-library/react' +import userEvent from '@testing-library/user-event' +import { DataPrivacyPanel } from '../DataPrivacyPanel' +import { ARCHIVABLE_CATEGORIES } from '../../../../../shared/backup-contracts' + +const SUMMARY = [ + { id: 'chats', label: 'Chats', detail: 'Conversations and messages', count: 3 }, + { + id: 'captures', + label: 'Screen captures', + detail: 'Captured frames and OCR', + count: 10, + bytes: 5e6 + }, + { id: 'meetings', label: 'Meetings', detail: 'Recordings and transcripts', count: 2, bytes: 1e6 }, + { id: 'images', label: 'Generated images & artifacts', detail: 'Images', count: 1, bytes: 1e6 } +] + +const api = { + getDataSummary: vi.fn(async () => SUMMARY), + clearDataCategory: vi.fn(async () => ({ success: true })), + archiveDataCategory: vi.fn(async () => ({ status: 'cleared', archivedFiles: 10 })), + deleteAllData: vi.fn(async () => ({ success: true })) +} + +beforeEach(() => { + ;(window as unknown as { api: unknown }).api = api + vi.spyOn(window, 'confirm').mockReturnValue(true) + vi.spyOn(window, 'alert').mockImplementation(() => {}) +}) +afterEach(() => { + cleanup() + vi.restoreAllMocks() + api.clearDataCategory.mockClear() + api.archiveDataCategory.mockClear() +}) + +const backupToggle = (label: string): HTMLElement => + screen.getByRole('button', { name: `Back up ${label} before deleting` }) + +describe(' archive-before-delete', () => { + it('offers Back up first for exactly the archivable categories', async () => { + render() + await waitFor(() => expect(screen.getByText('Screen captures')).toBeTruthy()) + expect(screen.getAllByRole('button', { name: /back up .* before deleting/i })).toHaveLength( + ARCHIVABLE_CATEGORIES.length + ) + expect(screen.queryByRole('button', { name: /back up chats/i })).toBeNull() + }) + + it('with Back up first ON, a retention chip archives instead of plain-deleting', async () => { + const user = userEvent.setup() + render() + await waitFor(() => expect(screen.getByText('Screen captures')).toBeTruthy()) + + await user.click(backupToggle('Screen captures')) + await user.click(screen.getAllByRole('button', { name: '> 30 days' })[0]!) + + expect(api.archiveDataCategory).toHaveBeenCalledWith('captures', 30) + expect(api.clearDataCategory).not.toHaveBeenCalled() + }) + + it('with Back up first OFF, the chip plain-deletes as before', async () => { + const user = userEvent.setup() + render() + await waitFor(() => expect(screen.getByText('Screen captures')).toBeTruthy()) + + await user.click(screen.getAllByRole('button', { name: '> 30 days' })[0]!) + + expect(api.clearDataCategory).toHaveBeenCalledWith('captures', 30) + expect(api.archiveDataCategory).not.toHaveBeenCalled() + }) + + it('a failed archive tells the user nothing was deleted', async () => { + api.archiveDataCategory.mockResolvedValueOnce({ + status: 'failed', + error: 'disk full' + } as never) + const user = userEvent.setup() + render() + await waitFor(() => expect(screen.getByText('Screen captures')).toBeTruthy()) + + await user.click(backupToggle('Screen captures')) + await user.click(screen.getAllByRole('button', { name: '> 3 days' })[0]!) + + await waitFor(() => + expect(window.alert).toHaveBeenCalledWith(expect.stringContaining('nothing was deleted')) + ) + }) + + it('a declined confirm never reaches the archive IPC', async () => { + vi.spyOn(window, 'confirm').mockReturnValue(false) + const user = userEvent.setup() + render() + await waitFor(() => expect(screen.getByText('Screen captures')).toBeTruthy()) + + await user.click(backupToggle('Screen captures')) + await user.click(screen.getAllByRole('button', { name: '> 30 days' })[0]!) + + expect(api.archiveDataCategory).not.toHaveBeenCalled() + expect(api.clearDataCategory).not.toHaveBeenCalled() + }) +}) diff --git a/src/shared/backup-contracts.ts b/src/shared/backup-contracts.ts index 8c639d15..170e3a4e 100644 --- a/src/shared/backup-contracts.ts +++ b/src/shared/backup-contracts.ts @@ -16,6 +16,13 @@ export interface BackupRestoreSummaryContract { // Retention archive (archive-before-delete) - see src/main/backup/retention-archive.ts. export const RETENTION_ARCHIVE_CLEAR_CHANNEL = 'data:archive-clear' +export type DataCategoryId = 'chats' | 'memories' | 'captures' | 'meetings' | 'images' + +/** Categories whose deletable payload is files on disk - the ones worth archiving + * before a delete. Shared so the renderer offers "Back up & delete" for exactly the + * categories the main-process handler accepts. */ +export const ARCHIVABLE_CATEGORIES: readonly DataCategoryId[] = ['captures', 'meetings', 'images'] + /** Result of an archive-then-clear run. `canceled` = user closed the save dialog; * nothing was deleted. `failed` = archive or delete failed; on an archive failure * nothing was deleted (fail closed). */ From addb4351654068b329cd4243b5b2b81e1a2e0fdf Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:26:12 +0530 Subject: [PATCH 06/12] test(e2e): retention Back up first surface - gating, arming, screenshot Runs with ELECTRON_RUN_AS_NODE unset (VSCode-extension shells export it, which makes Playwright's electron.launch die with 'bad option: --remote-debugging-port'). Co-Authored-By: Claude Fable 5 --- e2e/retention-backup.spec.ts | 77 +++++++++++++++++++++ e2e/screenshots/retention-backup-panel.png | Bin 0 -> 116344 bytes 2 files changed, 77 insertions(+) create mode 100644 e2e/retention-backup.spec.ts create mode 100644 e2e/screenshots/retention-backup-panel.png diff --git a/e2e/retention-backup.spec.ts b/e2e/retention-backup.spec.ts new file mode 100644 index 00000000..dac72550 --- /dev/null +++ b/e2e/retention-backup.spec.ts @@ -0,0 +1,77 @@ +/** + * Archive-before-delete surface (Settings > Data & privacy): the "Back up first" + * toggle exists for exactly the file-centric categories, arms visibly, and the + * summary reflects seeded capture files. Fresh temp profile; UI-state clicks only - + * the actual archive flow opens a native save dialog, which is covered by the + * unit/integration tests (retention-archive.test.ts), not driven here. + */ +import { test, expect, type ElectronApplication, type Page } from '@playwright/test' +import { launchOffGrid } from './helpers/launch' +import os from 'os' +import path from 'path' +import fs from 'fs' +import { openSettingsSection } from './helpers/settings' +import { completeOnboarding } from './helpers/onboarding' + +let app: ElectronApplication +let page: Page +let userDataDir: string + +test.beforeAll(async () => { + userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-retention-')) + // Seed a few old capture files so the captures row has data and enabled buttons. + const captures = path.join(userDataDir, 'captures') + fs.mkdirSync(captures, { recursive: true }) + const old = new Date(Date.now() - 10 * 86_400_000) + for (const name of ['capture-1.png', 'capture-2.png', 'capture-3.png']) { + const p = path.join(captures, name) + fs.writeFileSync(p, 'fake-png-bytes') + fs.utimesSync(p, old, old) + } + app = await launchOffGrid({ + env: { + ...process.env, + OFFGRID_USER_DATA: userDataDir, + OFFGRID_PRO: '0', + NODE_ENV: 'production' + } + }) + page = await app.firstWindow() + await page.emulateMedia({ reducedMotion: 'reduce' }) + await page.waitForLoadState('domcontentloaded') + await completeOnboarding(page) +}) + +test.afterAll(async () => { + await app?.close() + fs.rmSync(userDataDir, { recursive: true, force: true }) +}) + +test('Back up first is offered for file categories and arms visibly', async () => { + await page.getByRole('button', { name: 'Settings', exact: true }).first().click() + await openSettingsSection(page, 'Data & privacy') + await expect(page.getByText('Your data on this device')).toBeVisible() + + // Exactly the archivable categories offer the toggle; chats does not. + await expect( + page.getByRole('button', { name: 'Back up Screen captures before deleting' }) + ).toBeVisible() + await expect( + page.getByRole('button', { name: 'Back up Meetings before deleting' }) + ).toBeVisible() + await expect( + page.getByRole('button', { name: 'Back up Generated images & artifacts before deleting' }) + ).toBeVisible() + await expect(page.getByRole('button', { name: /Back up Chats/ })).toHaveCount(0) + + // Seeded captures show up in the summary (3 files). + await expect(page.getByText(/3 items/)).toBeVisible() + + // Arm the toggle for captures - pressed state flips (pure UI state, no delete). + const toggle = page.getByRole('button', { name: 'Back up Screen captures before deleting' }) + await expect(toggle).toHaveAttribute('aria-pressed', 'false') + await toggle.click() + await expect(toggle).toHaveAttribute('aria-pressed', 'true') + + await page.screenshot({ path: 'e2e/screenshots/retention-backup-panel.png' }) +}) diff --git a/e2e/screenshots/retention-backup-panel.png b/e2e/screenshots/retention-backup-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..44427d886d32782fc953f291dd4ad8939df1cabd GIT binary patch literal 116344 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 A1poj5 literal 0 HcmV?d00001 From da9fe7153297d899eca6cc7b716bc4d0ca804e20 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:32:15 +0530 Subject: [PATCH 07/12] feat(backup): auto-cleanup engine - daily archive-then-prune on the same seam Retention off = no-op; no archive folder = plain rolling window; folder set = verified copy (size-checked, collision-suffixed) before the prune, fail closed. 9 tests cover due-ness, delivery verification, and every ordering branch. Co-Authored-By: Claude Fable 5 --- .../backup/__tests__/auto-cleanup.test.ts | 145 ++++++++++++++++++ src/main/backup/auto-cleanup.ts | 109 +++++++++++++ src/shared/backup-contracts.ts | 32 ++++ 3 files changed, 286 insertions(+) create mode 100644 src/main/backup/__tests__/auto-cleanup.test.ts create mode 100644 src/main/backup/auto-cleanup.ts diff --git a/src/main/backup/__tests__/auto-cleanup.test.ts b/src/main/backup/__tests__/auto-cleanup.test.ts new file mode 100644 index 00000000..5a1a71d5 --- /dev/null +++ b/src/main/backup/__tests__/auto-cleanup.test.ts @@ -0,0 +1,145 @@ +import fs from 'node:fs' +import os from 'node:os' +import path from 'node:path' +import JSZip from 'jszip' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { + AUTO_CLEANUP_INTERVAL_MS, + cleanupDue, + folderDeliver, + runAutoCleanup +} from '../auto-cleanup' + +let userData: string +let temp: string +let archiveDir: string + +const writeOldCapture = (name: string, content = 'png', ageDays = 40): void => { + const dir = path.join(userData, 'captures') + fs.mkdirSync(dir, { recursive: true }) + const p = path.join(dir, name) + fs.writeFileSync(p, content) + const t = new Date(Date.now() - ageDays * 86_400_000) + fs.utimesSync(p, t, t) +} + +beforeEach(() => { + userData = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-auto-ud-')) + temp = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-auto-tmp-')) + archiveDir = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-auto-arc-')) +}) +afterEach(() => { + for (const d of [userData, temp, archiveDir]) fs.rmSync(d, { recursive: true, force: true }) +}) + +describe('cleanupDue', () => { + it('is due on first ever run, after the interval, and not before', () => { + const now = 1_800_000_000_000 + expect(cleanupDue(null, now)).toBe(true) + expect(cleanupDue(now - AUTO_CLEANUP_INTERVAL_MS - 1, now)).toBe(true) + expect(cleanupDue(now - AUTO_CLEANUP_INTERVAL_MS + 60_000, now)).toBe(false) + }) +}) + +describe('folderDeliver', () => { + const stage = (content: string): string => { + const dir = fs.mkdtempSync(path.join(temp, 'stage-')) + const p = path.join(dir, 'a.zip') + fs.writeFileSync(p, content) + return p + } + + it('copies into the folder, verifies the size, and removes staging', async () => { + const staged = stage('ZIPBYTES') + const result = await folderDeliver(archiveDir)(staged, 'offgrid-captures.zip') + expect(result.canceled).toBe(false) + expect(fs.readFileSync(result.path!, 'utf8')).toBe('ZIPBYTES') + expect(fs.existsSync(staged)).toBe(false) + }) + + it('never overwrites an earlier archive - collisions get a suffix', async () => { + fs.writeFileSync(path.join(archiveDir, 'offgrid-captures.zip'), 'EARLIER') + const result = await folderDeliver(archiveDir)(stage('NEWER'), 'offgrid-captures.zip') + expect(path.basename(result.path!)).toBe('offgrid-captures-2.zip') + expect(fs.readFileSync(path.join(archiveDir, 'offgrid-captures.zip'), 'utf8')).toBe('EARLIER') + }) + + it('an unwritable destination throws (which the orchestration treats as: do not prune)', async () => { + const file = path.join(temp, 'not-a-dir') + fs.writeFileSync(file, 'x') + await expect(folderDeliver(file)(stage('Z'), 'a.zip')).rejects.toThrow() + }) +}) + +describe('runAutoCleanup', () => { + it('does nothing when retention is off', async () => { + const clear = vi.fn(async () => ({ success: true })) + const result = await runAutoCleanup({ + config: { retentionDays: 0, archiveDir: null }, + userDataDir: userData, + clear + }) + expect(result.status).toBe('off') + expect(clear).not.toHaveBeenCalled() + }) + + it('with no archive folder it is a plain rolling window - prune, no ZIP', async () => { + writeOldCapture('old.png') + const clear = vi.fn(async () => ({ success: true })) + const result = await runAutoCleanup({ + config: { retentionDays: 30, archiveDir: null }, + userDataDir: userData, + clear + }) + expect(result).toMatchObject({ status: 'cleared', archivedFiles: 0 }) + expect(clear).toHaveBeenCalledTimes(1) + expect(fs.readdirSync(archiveDir)).toEqual([]) + }) + + it('with a folder it archives the old captures, then prunes', async () => { + writeOldCapture('old.png', 'OLDPNG') + writeOldCapture('fresh.png', 'FRESH', 1) // inside the window - not archived + const clear = vi.fn(async () => ({ success: true })) + const result = await runAutoCleanup({ + config: { retentionDays: 30, archiveDir }, + userDataDir: userData, + tempDir: temp, + clear + }) + expect(result.status).toBe('cleared') + expect(result.archivedFiles).toBe(1) + const zip = await JSZip.loadAsync(fs.readFileSync(result.archivePath!)) + expect(await zip.file('captures/old.png')!.async('string')).toBe('OLDPNG') + expect(zip.file('captures/fresh.png')).toBeNull() + expect(clear).toHaveBeenCalledTimes(1) + }) + + it('a failed archive means nothing is pruned (fail closed)', async () => { + writeOldCapture('old.png') + const file = path.join(temp, 'blocked') + fs.writeFileSync(file, 'x') // archiveDir points at a FILE - copy will fail + const clear = vi.fn(async () => ({ success: true })) + const result = await runAutoCleanup({ + config: { retentionDays: 30, archiveDir: file }, + userDataDir: userData, + tempDir: temp, + clear + }) + expect(result.status).toBe('failed') + expect(clear).not.toHaveBeenCalled() + }) + + it('nothing older than the window archives nothing and still reports cleared', async () => { + writeOldCapture('fresh.png', 'F', 2) + const clear = vi.fn(async () => ({ success: true })) + const result = await runAutoCleanup({ + config: { retentionDays: 30, archiveDir }, + userDataDir: userData, + tempDir: temp, + clear + }) + expect(result).toMatchObject({ status: 'cleared', archivedFiles: 0 }) + expect(fs.readdirSync(archiveDir)).toEqual([]) // no empty ZIPs accumulating + expect(clear).toHaveBeenCalledTimes(1) + }) +}) diff --git a/src/main/backup/auto-cleanup.ts b/src/main/backup/auto-cleanup.ts new file mode 100644 index 00000000..08ebdf7b --- /dev/null +++ b/src/main/backup/auto-cleanup.ts @@ -0,0 +1,109 @@ +// Automatic history cleanup: the scheduled (Phase 2) reuse of the archive-then-clear +// seam. Instead of the manual save dialog, delivery is a verified copy into a fixed +// archive folder - or, with no folder configured, a plain prune with no archive. +// Same fail-closed rule: when a backup IS requested, a failed or unverifiable copy +// means nothing gets deleted. +// +// Electron-free: paths and the clear callback are injected, so the due-ness math, +// the folder delivery, and the ordering are all unit-testable against temp dirs. +// The Electron wiring (settings, scheduler, IPC) lives in retention-archive-ipc.ts. +import fs from 'node:fs' +import path from 'node:path' +import type { + AutoCleanupConfigContract, + AutoCleanupRunContract +} from '../../shared/backup-contracts' +import { + archiveThenClear, + collectCategoryFiles, + stageRetentionArchive, + type ArchiveDelivery +} from './retention-archive' + +/** Once a day, with a margin so a drifting timer can't skip a whole day. */ +export const AUTO_CLEANUP_INTERVAL_MS = 23.5 * 60 * 60 * 1000 + +export function cleanupDue(lastRunAt: number | null, now: number): boolean { + return lastRunAt === null || now - lastRunAt >= AUTO_CLEANUP_INTERVAL_MS +} + +/** + * Deliver a staged ZIP into a fixed folder, verified: the copy must exist at the + * staged size before we report success (success is what authorizes the prune). + * A name collision gets a numeric suffix instead of overwriting an earlier archive. + * Staging is removed on every path, mirroring DesktopBackupSink. + */ +export function folderDeliver(archiveDir: string) { + return async (zipPath: string, suggestedName: string): Promise => { + try { + await fs.promises.mkdir(archiveDir, { recursive: true }) + const parsed = path.parse(suggestedName) + let dest = path.join(archiveDir, suggestedName) + for (let n = 2; fs.existsSync(dest); n++) { + dest = path.join(archiveDir, `${parsed.name}-${n}${parsed.ext}`) + } + await fs.promises.copyFile(zipPath, dest) + const staged = await fs.promises.stat(zipPath) + const copied = await fs.promises.stat(dest) + if (copied.size !== staged.size) { + await fs.promises.rm(dest, { force: true }) + throw new Error('The archive copy did not match the staged file.') + } + return { canceled: false, path: dest } + } finally { + await fs.promises.rm(zipPath, { force: true }) + await fs.promises.rmdir(path.dirname(zipPath)).catch(() => undefined) + } + } +} + +export interface AutoCleanupRunOptions { + config: AutoCleanupConfigContract + userDataDir: string + tempDir?: string + /** The real category delete (clearCategory('captures', retentionDays)). */ + clear: () => Promise<{ success: boolean }> + now?: number +} + +/** One cleanup pass over screen captures. Pure orchestration - callers persist the result. */ +export async function runAutoCleanup(opts: AutoCleanupRunOptions): Promise { + const ranAt = opts.now ?? Date.now() + const days = opts.config.retentionDays + if (!Number.isInteger(days) || days <= 0) return { status: 'off', ranAt } + + if (opts.config.archiveDir === null) { + // Plain rolling window - the user chose no backup, so prune directly. + const cleared = await opts.clear() + return cleared.success + ? { status: 'cleared', ranAt, archivedFiles: 0 } + : { status: 'failed', ranAt, error: 'The prune failed.' } + } + + const archiveDir = opts.config.archiveDir + const result = await archiveThenClear({ + collect: () => collectCategoryFiles(opts.userDataDir, 'captures', days), + stage: (files) => + stageRetentionArchive(files, { + category: 'captures', + olderThanDays: days, + tempDir: opts.tempDir + }), + deliver: folderDeliver(archiveDir), + clear: opts.clear + }) + if (result.status === 'cleared') { + return { + status: 'cleared', + ranAt, + archivedFiles: result.archivedFiles, + archivePath: result.archivePath + } + } + // folderDeliver never cancels; normalize everything else to failed. + return { + status: 'failed', + ranAt, + error: result.status === 'failed' ? result.error : 'The archive was canceled.' + } +} diff --git a/src/shared/backup-contracts.ts b/src/shared/backup-contracts.ts index 170e3a4e..4e947a0f 100644 --- a/src/shared/backup-contracts.ts +++ b/src/shared/backup-contracts.ts @@ -30,3 +30,35 @@ export type RetentionArchiveClearContract = | { status: 'cleared'; archivedFiles: number; archivePath?: string } | { status: 'canceled' } | { status: 'failed'; error: string } + +// Automatic history cleanup (Phase 2) - a daily job that archives-then-prunes old +// screen captures using the same fail-closed machinery as the manual flow. +// Config is a single app_settings key so the renderer saves it via settings:save. +export const AUTO_CLEANUP_SETTING_KEY = 'autoCleanup' + +export interface AutoCleanupConfigContract { + /** Keep screen history for this many days; 0 = automatic cleanup off. */ + retentionDays: number + /** Archive old captures to this folder before pruning; null = prune without backup. */ + archiveDir: string | null +} + +export const AUTO_CLEANUP_DEFAULTS: AutoCleanupConfigContract = { + retentionDays: 0, + archiveDir: null +} + +export interface AutoCleanupRunContract { + /** 'off' = retention disabled, nothing ran. 'failed' = archive or prune failed; + * on an archive failure nothing was pruned (fail closed). */ + status: 'off' | 'cleared' | 'failed' + ranAt: number + archivedFiles?: number + archivePath?: string + error?: string +} + +export interface AutoCleanupStatusContract { + config: AutoCleanupConfigContract + lastRun: AutoCleanupRunContract | null +} From 3949b155df462f484392da7b0256e30004fa8eb5 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:33:53 +0530 Subject: [PATCH 08/12] feat(backup): wire automatic cleanup - settings-backed config, scheduler, IPC Config lives in app_settings under one key (sanitized on read - the renderer writes it via settings:save); last-run state persists beside it. Hourly due-check + a startup check give a daily cadence that survives sleep. IPC: status, run-now, and a native archive-folder picker. Co-Authored-By: Claude Fable 5 --- src/main/backup/retention-archive-ipc.ts | 96 +++++++++++++++++++++++- src/main/index.ts | 2 + src/main/ipc.ts | 10 +++ src/preload/index.ts | 7 ++ 4 files changed, 112 insertions(+), 3 deletions(-) diff --git a/src/main/backup/retention-archive-ipc.ts b/src/main/backup/retention-archive-ipc.ts index 4680628f..0f9c2ce7 100644 --- a/src/main/backup/retention-archive-ipc.ts +++ b/src/main/backup/retention-archive-ipc.ts @@ -1,9 +1,19 @@ -// Electron wiring for archive-before-delete: binds the pure retention-archive -// orchestration to the real userData dir, the save-dialog sink, and clearCategory. +// Electron wiring for archive-before-delete and the scheduled automatic cleanup: +// binds the pure orchestrations to the real userData dir, the save-dialog sink / +// archive folder, the settings store, and clearCategory. import os from 'node:os' -import { app } from 'electron' +import { app, BrowserWindow, dialog } from 'electron' +import { + AUTO_CLEANUP_DEFAULTS, + AUTO_CLEANUP_SETTING_KEY, + type AutoCleanupConfigContract, + type AutoCleanupRunContract, + type AutoCleanupStatusContract +} from '../../shared/backup-contracts' import { ARCHIVABLE_CATEGORIES, type DataCategoryId } from '../data-categories' import { clearCategory } from '../data-privacy' +import { getSetting, saveSetting } from '../database' +import { cleanupDue, runAutoCleanup } from './auto-cleanup' import { archiveThenClear, collectCategoryFiles, @@ -29,3 +39,83 @@ export async function archiveThenClearCategory( clear: () => clearCategory(category, olderThanDays) }) } + +// --- Automatic history cleanup (Phase 2) ----------------------------------- + +const AUTO_CLEANUP_STATE_KEY = 'autoCleanupLastRun' + +/** Sanitize whatever is in settings into a valid config - the renderer writes this + * key directly via settings:save, so never trust its shape. */ +export function readAutoCleanupConfig(): AutoCleanupConfigContract { + const raw = getSetting>( + AUTO_CLEANUP_SETTING_KEY, + AUTO_CLEANUP_DEFAULTS + ) + const days = Number(raw?.retentionDays) + return { + retentionDays: Number.isInteger(days) && days > 0 && days <= 3650 ? days : 0, + archiveDir: + typeof raw?.archiveDir === 'string' && raw.archiveDir.length > 0 ? raw.archiveDir : null + } +} + +export function getAutoCleanupStatus(): AutoCleanupStatusContract { + return { + config: readAutoCleanupConfig(), + lastRun: getSetting(AUTO_CLEANUP_STATE_KEY, null) + } +} + +let cleanupRunning = false + +/** One cleanup pass now (manual "Run now" or the scheduler). Persists the result. */ +export async function runAutoCleanupNow(): Promise { + if (cleanupRunning) + return { status: 'failed', ranAt: Date.now(), error: 'A cleanup is already running.' } + cleanupRunning = true + try { + const config = readAutoCleanupConfig() + const result = await runAutoCleanup({ + config, + userDataDir: app.getPath('userData'), + tempDir: os.tmpdir(), + clear: () => clearCategory('captures', config.retentionDays) + }) + if (result.status !== 'off') saveSetting(AUTO_CLEANUP_STATE_KEY, result) + return result + } finally { + cleanupRunning = false + } +} + +async function maybeRunScheduledCleanup(): Promise { + try { + const { config, lastRun } = getAutoCleanupStatus() + if (config.retentionDays <= 0) return + if (!cleanupDue(lastRun?.ranAt ?? null, Date.now())) return + const result = await runAutoCleanupNow() + if (result.status === 'failed') console.error('[auto-cleanup] run failed:', result.error) + } catch (e) { + console.error('[auto-cleanup] scheduled run crashed:', e) + } +} + +/** Daily cadence via an hourly due-check, plus one check shortly after startup so a + * Mac that sleeps through the timer still cleans up on the next launch. */ +export function setupAutoCleanupScheduler(): void { + setTimeout(() => void maybeRunScheduledCleanup(), 90_000) + setInterval(() => void maybeRunScheduledCleanup(), 60 * 60_000) +} + +/** Native folder picker for the archive destination. Returns null when canceled. */ +export async function pickArchiveDir(): Promise { + const options: Electron.OpenDialogOptions = { + title: 'Choose a folder for capture archives', + properties: ['openDirectory', 'createDirectory'] + } + const owner = BrowserWindow.getFocusedWindow() + const result = owner + ? await dialog.showOpenDialog(owner, options) + : await dialog.showOpenDialog(options) + return result.canceled ? null : (result.filePaths[0] ?? null) +} diff --git a/src/main/index.ts b/src/main/index.ts index 2249a0c9..16e737a7 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -401,6 +401,8 @@ app.whenReady().then(async () => { setupRagIPC() setupMcpIpc() // basic MCP connectors (management + chat tool extension) setupDesktopBackupIPC() + // Automatic history cleanup (archive-then-prune old captures) - daily, opt-in. + import('./backup/retention-archive-ipc').then((m) => m.setupAutoCleanupScheduler()) // one OpenAI-compatible local gateway (LLM + STT); auto-picks a free port. Async, so handle a // rejection on the promise (a try/catch around a fire-and-forget async call can't catch it). startModelServer().catch((e) => console.error('[model-server] start failed', e)) diff --git a/src/main/ipc.ts b/src/main/ipc.ts index d6fa2ece..663201f9 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -1713,6 +1713,16 @@ export function setupIPC() { m.archiveThenClearCategory(id, olderThanDays) ) ) + // Automatic history cleanup: status, manual run, and the archive-folder picker. + ipcMain.handle('data:auto-cleanup-status', () => + import('./backup/retention-archive-ipc').then((m) => m.getAutoCleanupStatus()) + ) + ipcMain.handle('data:auto-cleanup-run', () => + import('./backup/retention-archive-ipc').then((m) => m.runAutoCleanupNow()) + ) + ipcMain.handle('data:pick-archive-dir', () => + import('./backup/retention-archive-ipc').then((m) => m.pickArchiveDir()) + ) // --- Image generation (stable-diffusion.cpp) ---------------------------- ipcMain.handle('imagegen:status', async () => { diff --git a/src/preload/index.ts b/src/preload/index.ts index 0434b7cf..88886888 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -15,6 +15,8 @@ import { BACKUP_EXPORT_ALL_CHANNEL, BACKUP_IMPORT_CHANNEL, RETENTION_ARCHIVE_CLEAR_CHANNEL, + type AutoCleanupRunContract, + type AutoCleanupStatusContract, type BackupDeliveryContract, type BackupRestoreSummaryContract, type RetentionArchiveClearContract @@ -414,6 +416,11 @@ const offGridApi = { id, olderThanDays ) as Promise, + getAutoCleanupStatus: () => + ipcRenderer.invoke('data:auto-cleanup-status') as Promise, + runAutoCleanupNow: () => + ipcRenderer.invoke('data:auto-cleanup-run') as Promise, + pickArchiveDir: () => ipcRenderer.invoke('data:pick-archive-dir') as Promise, deleteAllData: () => ipcRenderer.invoke('data:delete-all'), exportBackup: () => ipcRenderer.invoke(BACKUP_EXPORT_ALL_CHANNEL) as Promise, From 2eab444f74cdc29022a2f85d25fe64dc7590a405 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:36:45 +0530 Subject: [PATCH 09/12] feat(privacy): Automatic cleanup controls - retention window, archive folder, run now Off by default. Choosing a window reveals the folder picker (optional - no folder means a plain rolling window), a Run now button, and the last-run line; a failed run says plainly that nothing was deleted. Saves through the generic settings key and re-reads main's sanitized copy. 4 UI tests. Co-Authored-By: Claude Fable 5 --- .../src/components/setup/DataPrivacyPanel.tsx | 130 +++++++++++++++++- .../setup/__tests__/DataPrivacyPanel.test.tsx | 70 +++++++++- 2 files changed, 196 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/components/setup/DataPrivacyPanel.tsx b/src/renderer/src/components/setup/DataPrivacyPanel.tsx index b6d800d4..81c01add 100644 --- a/src/renderer/src/components/setup/DataPrivacyPanel.tsx +++ b/src/renderer/src/components/setup/DataPrivacyPanel.tsx @@ -1,6 +1,19 @@ import { useCallback, useEffect, useState } from 'react' -import { Archive, Trash, Warning } from '@phosphor-icons/react' -import { ARCHIVABLE_CATEGORIES, type DataCategoryId } from '../../../../shared/backup-contracts' +import { Archive, ArrowsClockwise, FolderOpen, Trash, Warning, X } from '@phosphor-icons/react' +import { + ARCHIVABLE_CATEGORIES, + AUTO_CLEANUP_SETTING_KEY, + type AutoCleanupConfigContract, + type AutoCleanupStatusContract, + type DataCategoryId +} from '../../../../shared/backup-contracts' + +const RETENTION_CHOICES = [ + { days: 0, label: 'Off' }, + { days: 30, label: '30 days' }, + { days: 60, label: '60 days' }, + { days: 90, label: '90 days' } +] interface DataCategory { id: DataCategoryId @@ -26,6 +39,8 @@ export function DataPrivacyPanel(): React.ReactElement { // Per-category "Back up first": when on, the delete buttons archive to a // user-picked ZIP before clearing (fail closed - cancel deletes nothing). const [backupFirst, setBackupFirst] = useState>(new Set()) + // Automatic history cleanup (Phase 2): config + last run, owned by the main process. + const [auto, setAuto] = useState(null) const toggleBackupFirst = (id: DataCategoryId): void => { setBackupFirst((prev) => { @@ -45,9 +60,35 @@ export function DataPrivacyPanel(): React.ReactElement { } }, [api]) + const refreshAuto = useCallback(async () => { + try { + setAuto(await api.getAutoCleanupStatus()) + } catch { + /* keep last */ + } + }, [api]) + useEffect(() => { refresh() - }, [refresh]) + refreshAuto() + }, [refresh, refreshAuto]) + + // Save, then re-read from main - it sanitizes the config, so main stays the SSOT. + const saveAutoCleanup = async (config: AutoCleanupConfigContract): Promise => { + await api.saveSetting(AUTO_CLEANUP_SETTING_KEY, config) + await refreshAuto() + } + + const runCleanupNow = async (): Promise => { + setBusy('auto-cleanup') + try { + await api.runAutoCleanupNow() + await refresh() + await refreshAuto() + } finally { + setBusy(null) + } + } // Time-based retention is offered for captures + meetings (they accumulate). const RETENTION: Record = { @@ -199,6 +240,89 @@ export function DataPrivacyPanel(): React.ReactElement { )} + {/* Automatic history cleanup */} + {auto ? ( +
+
+
+
Automatic cleanup
+
+ Keep screen captures for a window - older ones are archived to a folder you pick + (optional), then removed. Runs daily. +
+
+
+ {RETENTION_CHOICES.map((choice) => ( + + ))} +
+
+ {auto.config.retentionDays > 0 ? ( +
+
+ + {auto.config.archiveDir ? ( + + ) : null} +
+
+ {auto.lastRun ? ( + + {auto.lastRun.status === 'failed' + ? `Last run failed - nothing was deleted. ${auto.lastRun.error ?? ''}` + : `Last run ${new Date(auto.lastRun.ranAt).toLocaleString()} - ${auto.lastRun.archivedFiles ?? 0} file${(auto.lastRun.archivedFiles ?? 0) === 1 ? '' : 's'} archived`} + + ) : null} + +
+
+ ) : null} +
+ ) : null} + {/* Full reset */}
diff --git a/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx b/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx index d6f794f6..42509d31 100644 --- a/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx +++ b/src/renderer/src/components/setup/__tests__/DataPrivacyPanel.test.tsx @@ -25,7 +25,14 @@ const api = { getDataSummary: vi.fn(async () => SUMMARY), clearDataCategory: vi.fn(async () => ({ success: true })), archiveDataCategory: vi.fn(async () => ({ status: 'cleared', archivedFiles: 10 })), - deleteAllData: vi.fn(async () => ({ success: true })) + deleteAllData: vi.fn(async () => ({ success: true })), + getAutoCleanupStatus: vi.fn(async () => ({ + config: { retentionDays: 0, archiveDir: null }, + lastRun: null + })), + saveSetting: vi.fn(async () => true), + runAutoCleanupNow: vi.fn(async () => ({ status: 'cleared', ranAt: 1, archivedFiles: 4 })), + pickArchiveDir: vi.fn(async () => '/Volumes/SSD/Archive') } beforeEach(() => { @@ -38,6 +45,9 @@ afterEach(() => { vi.restoreAllMocks() api.clearDataCategory.mockClear() api.archiveDataCategory.mockClear() + api.saveSetting.mockClear() + api.runAutoCleanupNow.mockClear() + api.getAutoCleanupStatus.mockClear() }) const backupToggle = (label: string): HTMLElement => @@ -106,3 +116,61 @@ describe(' archive-before-delete', () => { expect(api.clearDataCategory).not.toHaveBeenCalled() }) }) + +describe(' automatic cleanup', () => { + it('defaults to Off, hiding the folder/run controls', async () => { + render() + await waitFor(() => expect(screen.getByText('Automatic cleanup')).toBeTruthy()) + expect(screen.getByRole('button', { name: 'Off' }).getAttribute('aria-pressed')).toBe('true') + expect(screen.queryByRole('button', { name: /run now/i })).toBeNull() + }) + + it('choosing a window saves the config and re-reads main-sanitized status', async () => { + const user = userEvent.setup() + render() + await waitFor(() => expect(screen.getByText('Automatic cleanup')).toBeTruthy()) + + await user.click(screen.getByRole('button', { name: '30 days' })) + + expect(api.saveSetting).toHaveBeenCalledWith('autoCleanup', { + retentionDays: 30, + archiveDir: null + }) + // Saved, then re-fetched - main's sanitized copy is the source of truth. + await waitFor(() => expect(api.getAutoCleanupStatus.mock.calls.length).toBeGreaterThan(1)) + }) + + it('with retention on, offers the folder picker and Run now, and reports the last run', async () => { + api.getAutoCleanupStatus.mockResolvedValue({ + config: { retentionDays: 30, archiveDir: null }, + lastRun: { status: 'cleared', ranAt: 1756100000000, archivedFiles: 12 } + } as never) + const user = userEvent.setup() + render() + await waitFor(() => expect(screen.getByText(/no backup - choose a folder/i)).toBeTruthy()) + expect(screen.getByText(/12 files archived/i)).toBeTruthy() + + await user.click(screen.getByText(/no backup - choose a folder/i)) + expect(api.pickArchiveDir).toHaveBeenCalled() + await waitFor(() => + expect(api.saveSetting).toHaveBeenCalledWith('autoCleanup', { + retentionDays: 30, + archiveDir: '/Volumes/SSD/Archive' + }) + ) + + await user.click(screen.getByRole('button', { name: /run now/i })) + expect(api.runAutoCleanupNow).toHaveBeenCalledTimes(1) + }) + + it('a failed last run says nothing was deleted', async () => { + api.getAutoCleanupStatus.mockResolvedValue({ + config: { retentionDays: 30, archiveDir: '/gone' }, + lastRun: { status: 'failed', ranAt: 1756100000000, error: 'drive unplugged' } + } as never) + render() + await waitFor(() => + expect(screen.getByText(/last run failed - nothing was deleted/i)).toBeTruthy() + ) + }) +}) From 6135223e72d7b06285546256e9437e2c4a833244 Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Tue, 25 Aug 2026 16:37:28 +0530 Subject: [PATCH 10/12] test(e2e): automatic-cleanup surface - arms from Off, reveals folder + run now Co-Authored-By: Claude Fable 5 --- docs/RETENTION_BACKUP_PLAN.md | 2 +- e2e/retention-backup.spec.ts | 17 +++++++++++++++++ e2e/screenshots/retention-auto-cleanup.png | Bin 0 -> 127821 bytes e2e/screenshots/retention-backup-panel.png | Bin 116344 -> 124753 bytes 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 e2e/screenshots/retention-auto-cleanup.png diff --git a/docs/RETENTION_BACKUP_PLAN.md b/docs/RETENTION_BACKUP_PLAN.md index df19e48c..bd6225b9 100644 --- a/docs/RETENTION_BACKUP_PLAN.md +++ b/docs/RETENTION_BACKUP_PLAN.md @@ -1,6 +1,6 @@ # Retention backup: archive-before-delete + automatic history cleanup -Status: Phase 1 in progress (branch `feat/retention-backup`). Phase 2 not started. +Status: Phase 1 and Phase 2 code-complete on branch `feat/retention-backup` (pending on-device verification + PR). ## Problem diff --git a/e2e/retention-backup.spec.ts b/e2e/retention-backup.spec.ts index dac72550..6d69bb15 100644 --- a/e2e/retention-backup.spec.ts +++ b/e2e/retention-backup.spec.ts @@ -75,3 +75,20 @@ test('Back up first is offered for file categories and arms visibly', async () = await page.screenshot({ path: 'e2e/screenshots/retention-backup-panel.png' }) }) + +test('Automatic cleanup arms from Off and reveals folder + Run now', async () => { + await expect(page.getByText('Automatic cleanup')).toBeVisible() + const off = page.getByRole('button', { name: 'Off', exact: true }) + await expect(off).toHaveAttribute('aria-pressed', 'true') + await expect(page.getByRole('button', { name: /run now/i })).toHaveCount(0) + + await page.getByRole('button', { name: '30 days', exact: true }).click() + await expect(page.getByRole('button', { name: '30 days', exact: true })).toHaveAttribute( + 'aria-pressed', + 'true' + ) + await expect(page.getByText(/no backup - choose a folder/i)).toBeVisible() + await expect(page.getByRole('button', { name: /run now/i })).toBeVisible() + + await page.screenshot({ path: 'e2e/screenshots/retention-auto-cleanup.png' }) +}) diff --git a/e2e/screenshots/retention-auto-cleanup.png b/e2e/screenshots/retention-auto-cleanup.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4086f08f715b6f58c8be0d0a4fa4a032d8fb5e GIT binary patch literal 127821 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 b=eDGi=aw97XA9t8wyB@Ld@fu0j@SPHYk~9D literal 0 HcmV?d00001 diff --git a/e2e/screenshots/retention-backup-panel.png b/e2e/screenshots/retention-backup-panel.png index 44427d886d32782fc953f291dd4ad8939df1cabd..31fc48747822593fd3d5c339d50b59cd824d2f5e 100644 GIT binary patch delta 76918 zcmb4rbyQY+*R6nbcef%+cbAk32#5+QAR#3n-LdJAR+Lg2L`6c8?v@s$JEf$NhPycL z@vZN>W86Cif1ESG=h=JzR?Ic$Tzfwp^LrO&L1```{lUoQOx_)fSr+Fq5mVaUM1|lI z)4dNlO!t4Rkmqaf7*&L@+biln*Hw7WQWZEMaR)7c$Q>2i_u>tkW5%w^WS6rFGm)ex zE?<%)Ckaz*ot?Wn1RNILjBj_?{3N=LRfuJqGQC4R63AAcF7tGvLd{_JvSIM4ljDis zGoDxWJjm(ME7GI&fJygbrh-O+GsDpc+;P9R$w{|6cr_fkS?+b}Gmw z1V0|FSEcE9x6D~MKbKLssF>JSjgZjL1QDBwflrU7Khd^_*KH4*rBHiNE{ryYk{XJL zSdWmY5#37Va~4C^JXcS29#5JDXBf9cPI~RpDFn3}Scqw-9X*$jVH+)jx8 z*`1=SnU|Mmi0Y}^cUR*vjYn-_NrhPxN!FxAFV{|U;JcY6!gnsZh~rt`{gal# zmFR<=1g`x{to`lxkm(-&!_by?Sw3B~iy!!8*n&QUe*FD)ZP|Yt>}^uJT#THZS_;LT3^&F)==k zpzN(z*Y0JjCB1(A`gb>SN}60D5K;N$Mwi`Uy`c= zX`)Gv55zaOkRqfJywQb5RUM|F+Ewe-)lbutX;Ak>QvmI7cjZbh8fz-{U&p~5AS%vE z7LG2xV#mF9o1C%6D1GRAMGPcD?xNm;hGT%|N0)w#Q5*dm?d}V#S4=b88iP(>u?a12 zF$rx(g}h8euV;$95z^Egvv~ICp*B+9(6Xj)$*3bg7iH9R+O2V`vm<9tZ-J5PC_HbR zZB;H-6>o=|{;hdo7NLP(_YG4;vX9 zn{04e4X382KK%N$E~3h5<#oq>crLA$F}4Du#nv2J{QUgztKB+GMy8rp5oE)2(qml; zYk#AGu+VoTVt%X!sR`W`2_RXaW?jb1*$SJrQDzMCZ8wEH!0bE5lY)Qc{xF%y#+5`>82| z_nig4<}p@rBeJD;M8EXdBK_CC{$_5cC(L;=LQMj~+h>(Qu?maHf8o6Yvxi^_Ze43T%7kGtu-WFrV6_8xM74Lo9 z6w)@YHU75Xc16tFXyZO!%EZLPYjJhGO&>6^Ua?)dl5}8&;(0u!HHkc9H1g-UynIRE zAE(=>8qT$s`_0264w)&=z7xvdH-gvL9=BXfTXSMYXf~KyGw_*x{oZoma%b{mfxf{n z3SaM-)I1Z>$!=gdeBZwKbI^OR`1-EB{$Y2~x=!K1l$yiu@iID%%FMX-Gw+WzC;M_g zC*M_wiFL0U)o$wch8nO){-r&Y4yJ}m6rcfIQ79EEwOpr=f=Xqve5N5Od>ZRAi(?N(84|ShE-p7 zr_AXlp=%F+F4e;N)_l9n(W=0h5YCr9*4u3H* z$Pb<8VcOc5ZYXe6BSXieURZ!^)TDXinCZAaaZ<5f-SFv6o?6s>9^F!nyh_ekr!1GX zG3=<*Z!fPfdhNutijcCY_Bb9p4HsLF`l4Z0R#w`+6Ep3g%KVY1M|%=g-Q?-xc`1pR zH??pu_Nvy{_}L!fa)AnO();LF46CxIr{|9&cS}Zo`OJo^Xx2gkwGYJM^Y=Gr=i7tu zX-^M+rt~`bsz{r4y&11?soCz5=(W|-ns8tFbSy*4pQ6(c$AOWdKx8Cha2-#ZNaete zkB^Uy;eiFJ?)-e)wf!-E>+xmZgOaxr&h8X@jY7{Bd(!NY+uf=ghM|O#9V6f3_K7}+ z$d_C6Wk*L7=?+Ag_#8&~ z2z$b*1$1?Fqdz_E{}4~lrIoFkC%8yVPX5(>_i5>9yk*n7F!9}|;U?{`4Ozr_c{QpV zT^kzL9lE9B5Jr3ol!a5MF?K8lck!rrWu>d-)zS3R_a?lLtarG&bUiIrM!s@1Z@lJu zw9$|G)`!~4llpV6l?3CU#kb3*Dp)bm}YB$g*3Ids7P=~x;zx& zS5ReFF{T~W%=fJq55_yOoo^#2MOk{GE`6XNviQ3`5Z68GatC2{OT&D7oI~t8zk&Hl z()L&RCaCSovZOE6=|oUz;)F$$GnAu#@9sAJh+Nn@V5<#{z|AQT+o$vUHdN+drWsOu znYJYzIXjKl3t)6#T`au)R)ShWHoy81xrVn0!Ne%#UIcxDh0y?qUaO5ApYdbC?zCJI zL7?|$6Q$GRnOPa_LXrVAt-g&&!?v^Eqc-o?-21rUMYD|(f25c~$S5s& z`SSeUBvRx23yN(2#eWnPMU1kUFRhqsUEKTc;&fEW+Fu=Ux@eA@k(YKO^*FWMBDy&v zze`I?=N6@L=M$XVua=8EE9E=?8pGPJ=HIW2s7Df4qlYAmt$awW#>2-SFS2+^^PFQ- zgQ!^X%bnqaY{r0`L0Qez;MMJJnZXG6prh3g!g2v$Ax|-yp2juXF`?A%WT{7K*U=B6 zA2!6^6@=_&a5}LI#DI@ zTMrs|j%LONHVrkk+sXjf5;3Egy+XFZ-pE(WhRcnrOwzY!W@b=PQ6CmtT}|05H|tJT ziQ_iB*1dE0+H%tysEhEW*W6ZVDf6ZlTNWaM2C#D9x-vSrEmbnL4oC7yXF+9h9;aH}K{ z8;S$@6Ez}fL`!o4LMNQMM^jVt==ZONF&p@*dBO}^qV@3#%s9FhRGwgfh-jY}bP)tm zotv3j8!IDy8;UWIqlu=Bqj&8HXB>5#Mm`773Kcm7&<*IIj4eCU4Z%b{b*A+`K^E1| z#>MHLRjKQ$tE(5$cM_kYItUDjsV@U3$oQKj)OozhE<)-3+MZ2EUE6n)UoEvseQP5l ze-S=lc6hUE8!nWJ{q0I5Eeif4jl`Pr+A@EK=lHIv%25n~0$5>0krS;ktcDVK`c*V* zTyzbTk3Ba55^tnBvBuonCSXXRp?mw{1qlPgL=A$tzE@9{lxy3ZZP8p$mGd{aiR3@7 zVfd1`fv?$AYBxJ&Q{NCMX09rrdpo|Yb?luwqY!a_-FBc=j-u0bx9iUug76LZl@t_e z)s()qqFpJ`dUxA$Fz>CX-OTa9_GS!*4B5R|z5UkqIG*4$TwD@qp^h08Gz_fEcL(B0 z=BW9MF5>BmCT}lv;$ma_2IHbproxd2=!}G{p6&cri%vBPM0!21JLQ?f2JE zN{yFM6EF!G!riPqx9Xylezq%L$v{)%P*9)Qcpp|pq~BqJhzl6r$ewzE~QR7uMYX%&U^Uv!xBHUYWYwze`x zUYePmWu;6+G_(q;Ogj_v^eXC;{AoQPIIPgk%*+z-X)Ts4?2q32l~;^KAN2M1{wOJ! zURn8=gm1mtn-y06!#^wxxANimHODX^g?#-4)IP2ITw298lLYM*@Pxj7`^IrUS5|!M zhOzcZ*lqtVr3jk$95W55&5t(1f(aSD54PraR|Yc>#&E6$+l3D5q1;c8N|fZiPY=vu z*(`%oKECFmwY=Ro)p7lUr;2p$h0!3)8!VK2SWtaSY*H2;4hcQ|fki+tpc0_?@qy4o z`b;89O3b6un=jewMeo#1%V|IUfT{g(S+vyt$%hoo&lijKUTN!>+0VB@VSpUOb{JF0 zviBuGNagGM`bbGHP$|j>;rW(vT8fM*Rx6-=m!Tq$zf?;WMn}~X%KRf$4y{8BA%2Aa^n|HM~+`y3H;Y;c7}u;Tmc5l($=hD76^vvsDJIjM(o-3`R(UJ9HN23zZ) z-%^@>GM;w?p97QkDZ!H7$5eSy3)+eOm>)9TrX{YKxKc*!o@2~Q387igZ){RC&gWNVsZod_W znQsx(Dg!gq3`d)W%ew!=tCA9tF;(MR8t62rgIka@p`oFlGoBQd_a_V&)z-@X2;(nA zp``L)PMSukH_-a%vny#cQ3>-Rjr3&-wB8Owrj!YeBt}}=Fn=R=0jXMFCgZ=r-7c%oHFE((fO>XkhlGQT*<=FwrjyW z%C%^3_6=h55DS#D7jcNX>ImCGFos~E1f2^$Vm@U1Yoz2+nf>M5CmqE2bfQFSk7Q*p z;K{|O^^&|2i!tm>6ymqNr^kyz3tjPXr7NHFQvXNFJ2WECDxt6F_+~TCj#j#D!x1Hm zIW&)VN^wb9AMbCnrzwPzz^vR7_>D!~E6}Ub^T1xWOmI-+{(Jo@@v(_Aho6UshxLe| zGGVQ}jPoj$r&;{qhWdO1xsY!Q4GoR^R^v@=5pB{$D9f3@SBD*Tm;1Mlf6+@7V46ppI`X=7!)(WRmMg}kdkX_Yp2KC-SXsu zKR!MtG`=u+NX)8~N*;u%{RJt4_Psvx757wVq(4m_Gseb!XAwpIpw<_S%G;jUp|8kl zn8doJko&>sOP)wLing{k)k*Vxp}(iKG&}Bv*o3#gj4-RyX8i~hM3yg8kT%WbUkl9G zR4wj_`&HUW99XF6ZZ1*~eZ65nwbw7q zhh$?Ir)Dtm5H=vq7wyG}onDcT{;(YKC|kzlkoz}K4{>EcNK-s6dd4ecVID!@wvp<_ z889QAk0-OR@*v&p)!F*AU};=z+QVYL5zc->-c{S#^-M{Inl9IwpIIbKskE5r~Y12(E5J3DFWW+Kj zmm=+nPk9!}Y#BMt@qOD`NNdag!1+^>-x8T|{QKb!tJ0^I&Yw-j4W)WCDR>xvb=oCd z2^+M`-TS-r7pP6kAq9xZK%XuTr6u9!EA+g&vUshMRB`vUFB-{T(ZU2aZz3~Vnj2j{ z2V|s8V`Jkxl@F&2{&8YdmQ1VTfQdP@^M?FIvT$$fJbwImd;I6IK}2z%51Vta)Nya! z2b#w<*OUKn1-9Q7$FjaK{SB{X3Th>VcGNq4iF-a^bUM1A8*<A;QUthpfPe zny)V<7edX8n)naA`Pa9P&KeN+K!5D_5(B{Ow~M5*va+hgvTGJwJ&;?a{jaZ~yNc=# z1#iE?w3Ft*{)68k_nXBu`QXG^Zve698u(@trx z!w^YgC?ixDx zj$AzEVO428%skEE)TD6n&V!Iy;qY|`jb;9OXhBWumQ*UEkZ zVZo^aGv`l$*oEJrC{u7fY;El5=zwu2McQkmp&`R&vKngo%Owj7iyJZsaw=I~p;zJT zii^HB`~`DYNm)5X%mL#Tn|d;*02IcRp+e)m^~wA@SvYvlL_|d7w(tl4>)d5878SjE zrO+1WWPbR+<=m%wilefq0pvfiJ8&nO^2 zfBn7IyMUQ^OmuWE-O>U8SOt}D-@Y}$E_pWou-fxLnbB)*b{36KS7_*tE&hK5e-!H{ z6l*yWQc_BUQ)dH+e*v>DV3@|++f}?cL`7ZaT4RQCpiP~wjh5s){Osa?eE^pO)95RV zqA0(2@7|TO-fE~gC+v$)j*kuaX6Ip;Nl#BV5QosHFlu`4s&cw}zjlrN5|Axib8F)j zH+J^+g8RnbYh97!y!dYkhMZ?uWFbaTlby43-re_i#><_qs3m5uNc+PLEmeDNO!*#$ z)IVkJ|IIjLliLv=Pn9M)tx@f0XBV?_JW=72@3_?4>(WJBI$BT$6y~mvkI&B(q#Af> zKb`;1+UMpMi$EEHYZRL7-OhltOGCIn6O+>V$01Ws5rKP3o$b*>Ki7JmFS(b^BQo9V*8n^B2aupCh zTwPtAor@FUj9$KejX_)f;EQQckkB`QKu%O~JvkuRY*k4-{Ec4>(bBzaoS2Hg^c$n) zQlW?_TWHmEk8y7dORAyl?D>otZbAilS|A9>Apy!l=FOM3;gGpQ8OnslV$;Zc&EAB^ zByx80``0L(C4-Fj@xUV+n2!jaZB3s3E`jf5rcdU-BYnDWT&7at{L4VL=J$vt5d07` z3T=>)@X!b0sW&z@vZ*EV9uMCk%f>RtQw--$yEs@;R)&2YhbHo-kuUYM#dCii>@&<*9{L-3l~mQ0O@sl zdb-?RTU%>Wb3%c}!o}4&IH;{>$SNvIbvYw?b#;~Bq%G&5a2=RVN8DB5Nq|St;N-OW z!5$JgMe}#vNB*kKLkyT9KCgYdmuG0VvTo_<#24IN{lcAf>s7B;!iyL7`y10R>e7ll z6EyFU<@r*WC9s3Thq1ud_L_?$MDeOBaSs)mls_aTs-cH&^k`?_cyV-q8ok zoO)2wY5A@(b?z@|+7}54h}+LDdb<7LFJ>O@?l?w!WS_Cjy)XXXPWG=43ubr;3A2+Z zWT`6Y-P7?(gfpb1WDm*|x*Z*k)_-)qNWX?$6l;&T1Tr={LDWOYVO$E%{l$!^Yj<;O zcNV{AsUUGMas4#Sn@3I0$gmkNhqBKx-q_mOdalR;w?O`#n!H_`;6GHIi`9nr13ZjJHLIwz)gQ&=V#sV1>>VpuI~~~ zx)1Mn!e==3hoVYwjR%c#tf?94>B#T3@kj4&zlFJtOTW?;vM9qd(?Rv*y|(|WqMy9HGFrk?Y^a^rYN%P)>FX$Jxk+`hP3R&;q-gd z#+BhXH_J$`NX+(PJ{y|c=Y<%iPo6MAiEE!|zI6Ad*%$^xkg?hp(~0RH{&I|h>za~t;~64z`E;=7`p;n-s2j? zd#J#W9T~`d@XuR3y`iqMx3MvGC&CRwFZdi&XUz^&#QWK@XPU}S*2*Pi+)T5{D8w*I zyhxBwFHH1;sY5tzcwl4RT$Z$=!EVr}x$*&o?m~A8p|VakkctL}J4-MQoGyRNmp<9i z(&@hO2D*u@?FNwg$gNm*Uu)_1v!2Hy2jz>ZLCLy zMomD0v#_$p_*rM>>Q@~?!-8ick7N3(W`73P947N${U780z`qwV$}$d*5x-dJ3BkE zv9WN<9+gn)qNNC%~*UFVi>!#PB@ zUBoh%x_%wG4ukAikwqWSc9THqPE@+VwRz7*i0He`zY=p;cw%Zg@Lua@l1;VT?M&?) zjWqQXX?}DYd`4+HMg|}apsiSp7XO<2_7cCHQQUDcp3hj=W@4<;%>hQm%&{sDN{RdV z`X_b%nCsO?d4C?25o1T9P&uqL{-^~PB3InW(?4je3CH??OCeYy8OzK)BF3q6M0seSvo(ymyY zTdzF!lg5X;?|~Y|o@Z9yI#7omAA6N8nvE^!b%Az|ARRi=VO?v{R2W_Jv)b!O_=#}_ z{B3p=)9?DVVmjmOn9qUsj;c@m6FdNcLF1kwd&vXb=h|dVRGhtXLo8|wO*I|9xsi*g z`Nf@WoaJ`;V1jQEJT=E#FV&^pz?Bg0qlDA32sVhO#>T0U4@$EBDc*-S$D2i70Kc*1 zMPG)v?|vAI7q(6u1C?tGQZUUKkiph1dNQ&iBSE&SFm_<1ieYOFz;RUq1 z&Q7jt*KkUHL&}S}AZv7|;_kFCPWaW>M$gX9^1VYPq%jq=(#@>(R=kzBAc^yOanXF~ zC!C~q{7&lkW%$U9gkGPZ?%9=^ zk%3zwkBt-yxhUTbXQ891`bowZG-oJhf_0YJN}39e=h(GoZZFhQ8+LvCB1n)?8#XZnu7L}IfnBGE=2Qp($eP=Ejba(}cd`ckrD02BS`kD@eUZBy-2xkbUs?>gg}* zegW87y+0H7bOwq!G}^bXUuS36j`&ZC7&T%o1_%UN6B0(jG*!0~o5yWse%IIi+)=@a zQu(mxWV!z%uM%|Kk4Jrm@*stU)1$k_7O+l-W@sB$wkbRb@~(7R8xwQn$5R;E@%8mJ zr+MyY%n^(1-!IcwR#FOT6|udoN#7Qm=f2dN6+!LU$}06hkUF7|Qm}S3P&;yhLMbuo zerlYpZe|U33B8)Ly}jQOH7P0DBMS7k6q5|w{gE8{JSqM`;Pdb4G+vP7(y%|+GKp`e z>R&W$kh~H5@$PKCu9bpx6HW__N1e|=kvZRSw0=IKFID=DAKmRqk!TQIB>h7}fBziR z_c_`ktLl1T@}%*zqKiZ5!?ufotOoe%;e^bWoRz1;e2TA?7W8`kVIM}(I7pQoOwgju zJ4omOqE6NM8xjNs24Xk8sDSARDA_zk{g=38wMvb8$#_eF*ftFz?gM>3)q~R&6nGp1iZh~eONv)wZDA9bc zNrNO-6^&z>Y)>{QIB!tJF5)C$iIAeV?Pe76l#{L3)5T8YINtuwO_gYC!S&Tt@QreO zT3uZo@1uJhV?^;ui~5eaJF3Wc!otErZ*T8t!~Iq1&?2GlI6|^i9(B)@&DLwfZy$zfY%uGy_EqSta-v=VC|p zx7F+Dn@ld>P#a9_ks%>OZN1dIt`TXglO6^l=~I#zTXj-@UQIYgX-;ZyhFca?=vhL+AkB!(cqoAB&!D&aIgC^$J1A5uRH?z0hcgFIQ4F!>t``0(>P!4UOo;P7F*w z!dgeAimntHMso5jT6XKjjgfnFm;S+<{gXDM3nRv9MoroESz@#1AG+hTG7xwr2jeP; z`Fh+-9Au>T*#I>byKOH(^#!X^FDH=_ZLWybqIkVME#l;blvk#CMB!Nzje!D%flt%A z>m2x*Brklb7>k$BkfuH|SFb|2{72)h9uW8M;w#G=_^0GkFhHZQOq3!3UA^w}$bxx1_4OU&a2iRKNk$nBC=eP-n0xTW7(==%kJl1IVY&|cv znP@s%9M^~K@yweg%%92h z13w{*xvp+*X@X@1>$A#HahwlkR_DgPKGK%rTUIGcs}3MMml{f4&3^zUci&wOMBPnv zn65{!4BYt<`@`2Cqs{Rkw*K6VhA3nNP>;u-PzDW8y*xZRqFqbJ978+EkurAc>1W4T z;7MevKu5-LJ@&vJwH#^xxbzKs=eKV+tMPDg8!9$PnHqGagJvRxFcrTkCI}^E1m$Ji z8N+KMSF{a@(FcADrc*;4IW;~`x>JcriEP0hop9Bl|ic zp>rhLTPTdC)pla$b55DA7ej6C`_SO&L|MH925rpFV025w zFCR62vq6aRONd&M@T>NTp9!lq-lj(30KLO$MQ-b@EJHaj-G{HZr4vaf6fdiu%)By~ z59SD$NCGEs!T6}9iI+6IR3PE)jyZH=e=Iaa?uoq*? z%7HV-m*(GpRuMI{XLlpUsp<=b1XJaJ-U)D{nIbabn9gw@HW-ZGNE7^yZ#G=!aAmCd z+Px3v+saO>XQ&mj9TcE=ZV^3cWU>I2oYYEmb+DQ77>A9s(jTfxpSlc(Np>7B2sK> zbPBJI85PWH-OLWt;+P~Q=}b!ww_qZ3eSf4=e{4|B2#nad4M~9eELmsxvq|7(KrkTX zx#OF6+%PuU1|tM0S}CG-=>^Pe)ssV4;>X(i8{gjJd$+go{neS7OZf-=V? zk~fQp$fRfAj>vVry4zd=t>D|w2dG_UE;`GE=YHku0etM}b+q$c^<65)+M8YgqL z1{drG`|iLC?r4ms+?PN`4;vKxAn*}sH^AAV zV`3UpoO99fVmyzlJt2?h9}*2&!UKRN1)BO((A3warwc9m*gRb!oj+(_R2}~G@GFi$ zRs@aE)1iVi4QV|<+`%2-vx(na`<{VG0;0Y!@@y=mWMg+xvpxfIcLo=Kj$YJOHt%^q zm{p7|H2}jOf(u-M!ILh%2%?+W?t8jouXT&Q?Zo#Yka6YR60_=z6<1)yi-=o95xWP} zF|p@feM>V~^EB+C-~+1y6Ak?VEz4b$x?$hk)u6WpNdAT-1m)HeFA^zMG~6AV>viBo!-%z_)CM2-KZouDC_9ct2yt1r}+tx+tsd<$+G*r|%9{Q;Z^#*}aZXmxT zcd$J_x&mjAMS4wZZk6%3pGC!!ZzN>M%=&timnQn}z?w3{28>}Ps?TbPg75EtN<1Ep zD|D`-3KYY&5ri4XbRPUcnfAJqS5)JD$YO_!EVOR$$C}+R4g`ia4b$<;C9OMmGzi}4 z?tkC9iqn}S0yZj%<#8D1fk&98v=qi?6U{qC!@whITmSLI!k+qloW48u3*;Os--8Fg zh;x_Ee(naHg3cW12ldkpzF`p&gM_vqO8r`GY9$QdsLCBdFPSo%-GI_&)T2C6R@^S4^mAlif2v0n^l;=Kg?h`U| zBW7k#7vE6qllSl6mp7Zg6?Y2Q$`B}G*WL<8d51hwl5a{GR6f4crFwI57o z^4*1&deYF27dJLGn!+dv=|p)!Z~0OL?*H1NU%go>Kw9a}$(2xi#o3;xmLI&TlwdiK zy98ADOE$HhtmT(dcu3NHund4_jW}`}o+&NRX6cH!n}dBAs@jHlPHSYHH@k0$yzYE6 zac(rzw=F7E5er{BIodNWs$El8RqbeaZc}a^DYZG6=8GZL8xS+W`iHE#LEN~>k_wzd z!PEY0Ryp0nv4&}GvdtJDaH-Pfz#v~=HFqlpX@WvX(dHxLbtovQWmVhedAwgJC^bD% z|0n>#5unV=(zSxgv#GC7KvZ-et`N#yP$v!}sl1-UO-$Fo^FbXOy9`7($*Uch9%*-u zBf`Tw+S*=(g1k3Ren(3SXfkjY!o;#P@F^)SZt$E+yc@&e22(s(9gvusnwmm9C^3st zu~%cU>_}JQ(#T6`&TS72-1cpa;!ev`*O~p_nq0yCa#O?SI$b1OM7zS>nArGCZJWp{ zv+Ahu*Uin%GwVPI^awOZ2J-F9p>M)6_+K|%GMF-9S8XCZN}fpj=t zXpG4Tc5{h*ox*h01peM!aE`z8bOF=}kdG8WR}-=5odXN3jK^=zH!YxzQgcwCb3d-8 z%VY0Q=+|sIxa`s>gv#v2+ z@M~9ivkoG7l7tJlJDRWvo@1vMz6YVS6-?KIxexrsE_6`bz|>_&Vg`4Y2Ooj0CVc$d zlp@k`UTb(mLf%vB_5LvygyDnv&Mpy(Cg z_6t#L-BeW#FSoVLtF3(*#(U|~C7nw>48N{t>~I3xryznZG!M9C10_o+H!t20%UQ5c z-y!nS<;&BmbTZzRo}pnEuJx`W4tn@oVjc^Utt=^9J3f-;?RIieKtqRzuyi z?drFufS&EKw@NSe^pf~33iBDA_{FNqm=`Z*mY1JWtyy39w-9VeW@vWrzC*)_^&j3e z4gX(4nORxiHps$;?kH~P)OOc@qJDZe#paUGjd$uSIDSawZbM&9kH-f6n*d3{7U>p$ zlhJq){QHVue0wgepoNzD7nks1-z#+pzP6ph^Wlj1lWy8d=!4~(ny;gLUUP5rqF0qX znfdWvOZ(G9lWY_(Akl`vpFfsDz6}rmIrHK)UFyuP6 zu9~S*SOvV6+VMw&H62R#`;1~aH>Cm#3V01M;Mp}BT?bq|nWM>?#u@BB+l;^8#h*i3 zflO(oK|#{a)AdF9^=WEp344#Lgm9My{W@^h#hA9(vsVoWwywtfQKzt&Gef2?5cl-n z@3M2l7yV&M(_Uat6bLgL14OQCkxuh z-w+#mM98ngpev@xbm}weBhJ}WHRIb18t?C9!EA%OtphzA@C)$h?In}mqrhzJaYeRXH)5iJss$&fuFmS+}#hshdkd7&by@6H?gsowA0J%W`p#*qNAgs zOQPxyCC7vHhdxmdT`pw2mJj(`o&9fh`u=6YQgDKNi3@ z2dl8U%!wlmR#4#lz37ODcwr~Z_}uag`zpuaG%>CK9;Dm`U<(1pj%9w;!mnQuy%!6O z|K|fh?sJNXJhW~R@(aalb_E<^YML$9E-vG_AN^5Af?KplT3VWcfuWuR zWcJu=_ioK4gI$hVEhRcy56lFJYN|_&aHLCvCC)tH#nagJ+3Ai z3WHPY4}5?~8Da>2fR-42{C~GE{kMAw)&xOToM1`S)6-Lwi+=m|*WBDC9J2r2djy6g zTSOH9>eZ_(>R{v`!!E`6Uuj_SXmg*XQse&L4Qv1T zeEz@uYM@G1K_P~1FD_~6YS8hZiXx-~SH#5+K}~~Uk^jmzc*=%=i30_Ork#kI`k2AqBeE87);US_`$7uF5&?r4VsUoSOqGI~d5>B&o zM^_gR>?G*VvGLCx1AjeBSTs5W;}@uiYaq1$fFcV}5GRR%1j>Pc+O9`S#Aa!H#axx6&;T?O!m07GJHw%^CR$` zRg&#a5HN!|6!g%#-?TQB%%sx_-6=9P0MWp>@)VerXjGT4u#^O)q<#{%s~QIfDYG{a zLYdeEBZP8#@)l;r^DkD1j~tLtY_q0R-wAE)zik7wpV17KPLb4|`O5LMkRo>)Y?0AHXxljhbD&&L}pG)l$5 zPz^E$h)qnJAVVL(epCsdb4ErULXm4tm`MrN|BR~enB>>bRQAd?eDfOg+-6=X$fJz} z99jL870&&cnR$tpst4#7oT0%hjYQxCfKR=Hz$E0T#USYlC42{5I1RjkUYr^3h8kdm z@&tBeD99$PCM_)uoP0i)rL2Z{MKkRm54C~!$!enV0K)2gJt}i&b(nM%_8okhDs3jE zGnpE|b2L(7a|WlRvNv3yq$>()I{8owqxU{@r4{KRINUBC?E|qAi|}M*WPtB#$|!?- zzpUV0%sF-O1AU!5ng6LAj_0Ey)CJBl2lJOQrfxsqx){W;5=Z_9wKsYTq5_C@ibKOl zplEyJF_;At98+mdv0LRkP9>drX4Ux@r5C~@EQSZ6XH3D$6B-|XPC}02A^-RHT{G|I=~8#ChLT=^N_HQ% zWHQf3B(Mqqv*!N;7QHT91>=JGDI*SVBLc$+S~q3a>iN44?8{x&xm^S=4sg*q=rk9! z|LjZ(u3;zoG|-MAm9ulck*~22ODp}3MU)k_xWf0VO=x&iJh%?u^rh(E!xoqKc&v)#)iVB8=ya*TkkGGVbW5|2WDzP9>YG&kk&A)UEY+&VdTa? zF`ZEf>;Qk6A)(_S59st&cR4+FlcS@6O!J0yC-5VkEq-Se%7U!lK!CucrJ@R{L7HD1 ztPSQ*f?X1oe2VxZ_lGqx1f(wD8UaG#C$GY=)$dq30egmQPp!VEH$kJBLp@&JqH#kT zw+Ac@>=q^_=0_SZ{+{Qa=n|Cu7uN8)h|7}ZK)wvK?5|$OCJbgig0dmcjPsq7QQ{fA zOM*S@))_3*zen^cicO>F#U0JThXvoLsN&Rz&lBVR_T^9E^wH_i_CUEG^Kz0>Qq%1# z(%n68gh~F;H~~XkirlC)-oxOiJU2%kMDy{2r6O6%1B@8o8ubBlKla+~2W3KylOnnFBodP%x<% zEQSi0ImcnEyMFW)hy9JeN-P+=;GEx{52shc3?tzD%=@zObFFoTnj6hbO(UuJP${0m z%oWWnKT>QBQ?{L94_D7H%mKN%xzLNgDIj+-)#>KteTtG|el-xvC}6{jA4)-b2cHQr z%BP@WzL9Xrd-ClC$am*fHzA=^C+JH7qhS-^6*_>Y-@oxxFLj#nY#;M^+vZiIRJRfg zr9@ymn*xQjo-8OFi0$+QA_2qti$6?m)7sHZy8WatsvjMdxO&y10SUtAzjDjRlwG&b z2t6CW!-Dk>*fJ`4VrDi8Z$q#e{#^eQrt7IL8Vo?-QarSF%ff5;k`~wWu zq^N8R&)aaCi(Jmk`Cm5N;1syEke*=Ml<#yxR|J`8J52gsrF#l$e60}@s^wM|cDhL# zmNBSwPu|LkbIh6a#Kx3%+s9O9i0XfVvjxRLl2pWrpqBmy@K9P3DAtpuLP?6Nvi!96 z*9I&}>$@*qHlznD%*C2?FlaA-cm)VU%OE$?WYjU(wfj!=Hb zbvQ%Cg78h+NS(d_af{oGix&-*&e%mKu3(+xZcenB%=k`xNB>akwruZiBc~9bK^WE| z44hOw%je#A1NL)T<&D?5x#n=k!a_Dh29aiGzcJ#l(TN=WD%seu9YQ>z7=F^PD(|Q< zs6!QXv>gWHeeR|eydd!zL`%^y1H1a#htSDzf(IdZAIE?2i+=)y7toN(%5_1_ z!|W-=X84e#T;{T~cR1_`>6H4*JAb{4iSv7Q%Px@4MevxHH+Q5XfxLmH^Fh51sXYGj z^WJNaF13gPahIbi@%w{9O&C5U&3QQ|HT;wO3TT=IsQXdMwYT_hZo_6G(f0E(uqNFdf?hqkB4vH;682-dzFy7%Oh<4 z%`pJZ{T57{+VoZ}aHQ^Dx;8azl}u+4Dw+jc-ZtPMhb zeI1-)LJpVS0or?27!846f3c|}LBI*u*8w&|#GkZAi#s99wUTNoD)JUX=vv&+^6hnX z>25V}<0T5$LH{(6Qt5l(-UE-Cbf6BLrQDwlW-#N%k<;yzvWS8|{*&t=2~-X#b}G+| z^5NAo^@`-r>&js@F5Zfl4{Wl`lyxD`pZi(7PDoh#`SS{z?B#;NDcy!+K0!Y48zbn9 zK;HhgjnK~3*_;XEfw!ng!Tt;ZZSD|MQaJp64UB65r5Ix&v?;QGffyPC^+`X3kbnS& zkgpvW89c14vjA2*IUVjoY1)Y zzl!3?sq{bINU}vN0Dmz`y82iFfZ)+gzbG!l&rfm^RB}x_kCQdl*x1-mz6l7K>};0r zA7ZQ*rl>5>*JGFoZK%<%pm`eNhVn{=envtThWI9HJIIwDQ)Oe5QZ3Q~D`sxU?SL z-eCou9pF@_T}(_&BB=PTv&*oZw^Vq)#}xWHh=O1^z5xsN+OR+Z5PIt62Z?$TMGPvF zMCKyike4rB%n8#89|z{+5FTcM>I1cHO|L=--(1JJ0QmsO7Axwu-sWfMBmj$sv^z0K zDKOxD1ZZ9-o`zfX#OL4}-T@N$nGW@|7=X9w6li)Hi3J2(E@#UR=@L`3#FQ{IxC#nZ ze!TaWzc5(_sldwx_QZwd<;3`SEJj8f?8~XN6H>jJOp@xFJz%`~vJy;mD-p`VZ)Eks zP!E+e|04YtI^J16DHZ{EiOQ5H^(ehEfdke?z7y$uM>mx8d6hS}!^Z?sZkK(;`P}k? zoY%=X>s2cCzY$7CAv=knEOE!0h+Ml02=IY`1GvLB*MRT;y*@b!yYzs8mVUEc!@68A zA|Y|Ur84w;7XdF+-S&e*BgH5NDf_Q}1>qa$>Le-PdR?&I#JmZ8`WP))v8;|GShDnd zy~+2oc~z6a_JzCiiauB`Zkd_~!n1(Th>!1~VBKh0I{1C+n>>;b|spG(Cd- zVbT0!&yz$!3l>UoO|<{R+FOQYnRac%0@5iVDWxDN64KHoD2<9J4U!_=b2sg9ZM}2XS&_NS0LxfTbOIN?*{1JIs^ow4t`*$$!K(CR@P=7Z2!IWm|9aonl zzKnZUb>anJMlUW#&7H_7*scMjYZ902?+CFHb0lN|(5@>^9l5@~wnnfj3}acO#5*p% znpaEZBO2Z38)?$C8o4UcE`nntJS^;n>vBf*8R$U;3(R_^XW|-a2>TeOg6U}dc%Q(i zndnRsru|en7^R)%_*CVPm-56F6qj%c&hkX^CCv&Uz|>1?QQwsOd=1buSCGu=F^k^^ zmANvPkV&vkt^2)$*z58Go5v*wa%qxZU)8I0(YlL8MNI?1H{Zlo5V7uAfXj!C^`~nH zclhi>=Mwt#>2qS04?qShD1@Y^Ggx1Kx#9agZiJkg@a^=OcsBJcICf6oMkYQWE=8uk z+#!o%jCgm+0CL1nCK9aw*45#5bL>oOstBGH94$Ci>Va?6hEFQUhtBd|aClJdXi?b- zu#xnGSXpKH&!Z-Mpc)RWb5du^^+^yqUz}``{`qp`IW)rh@p0`cFZ9f_*tjN52Pem0 zP77Jz2?(mUD1@AzcjB7-ylQ~j0c6Vhs51O~9=hzq&fAooL zESR+w89b=>_JZGRj~*p$WGR0IgpMU1jR+u>Km;ORXLn=nk>8~Z3<`>*73`D!?!IlH zH9!CMj^yPS54gsLK*`<9U)*z6ENVhsr(i+R@%RGf6oa$Yd2k(Ib8ClR6ftNxGaTG$ zYe2r%$nw|h6D@rUhCJ)(8jD10D?;;1z2d&x@f_^w;X%nRlLdjn!IWHjI<;TgwUZHn zCw`syyvi>3OeW`k!V5fBq%T9o7N^%fb@e2>i5mnT(z~e{0=aQ&c&ZV zGh-WTD4GBGv?*0SueG&RDicXapq!SYpB%hMEb6tZ1;Tr2X+N+kXwbQe5Zpex761N9K&{dJ z?SY+YBkl%UbH}`-Ykg2;Vfbd2800B4`Y|a;N9F8o`!^EVaxUhoc=8Lkfea~kc3TPX zrLk0zmLySuMN(VhQq%MEU8UV90#WT_9hHc4K}i#|@+ zk}4Bi%o-|qz^inNI#=5Q^LtY{R=LgpbE~E(N|v=b7zF`^hxi{(;*V@xX60A~4L`;l|(p4Ay~$eYrjuts9v6^a)tExQ{{~ z-}v@qIQOYeB~~Dp_B(>QBN#IhZ#I3HCSB{@q?G?f&gEie+!ZHHNC@DT>(8d4lt(BR1)Rm#r!O@nuiIM z<8(&rfIQR)&_uomV8Z9no&Y;0OBJ;00RV01kv`D{~q<@&lu3C05k|zH?dq>$(I?bb>gidppG-wq@47kPz zZWv>g&o&H*R+^KWPN9^8rdg{4w!L>Sj$&M)-6UUL`X*pMqVUHq(2`|d7{xU86(~D# z#RBqC{QgV#qhxw6S5@FCbH!dG55Kj64Ej~CmtC0SJ~!Y_Kr5g`B9Ap4yG~4U>7$3Y zvEf4u8UZ@f=9$K~FoMptghJ5`Rt#4(gCA|s+VuPwz>6Y~ZPNaL1f0!{ncl|60JLi^ z!N(C^(1sXv!dQ(n&61)#o&-p9^M@*3O{%d0fDvcN&_((nXinw*2{Ph4dN|XFp=32j z>L1iCv<_;PM)tPg;1u7Mws5XGS7=10?!|MfPDm?q!&Rl!*slyb8JMExZqC)O($v%h5EVQqnb=Ox+`HuzfjJf@>h zcGH+3J)|*D?JlACtH&82G zB4wxhEETx*^D&ABblt*+cZ0K8(`OBEwrAKpKoa_W;3C}rBll^8o+RZ zE=H{n{p=+DoBx5B8m#wD!dU2J@{Ntm8LR9#()PCu!$28wPwT{Kzl&rZ8UV=18_vJa zrR4!*{PT7CArpG1k{lq)5A7^%OU|-Gl97+H8(5d2k?nkbqvz~-Fp#)_vgS^fY$zuF z`BzT@4$NMMR#VLU!3rwO`H*}`8G`%uJeMSt{kOt|pMmC~;j`{Ls~1U}ggTC|*A{wu zl#cu}=qO(f$yWH=N zWh{u9m?zD%U5pCh1knd55MG%;v9kcD;q~Z`=Cv;CcZ>8c6uN-7T!*Xa>|g4am=5I0 zaQPdb?;*Lj!UaHPqean{^bTZse9B|9qXkfwt2b}KVYg(~1|_u#WoN~+z*{{lXj;|g z>;ilYG6ncb_c9Bd(euU=)06Wt?iN}JSEYrvXl<-8C-e@4cWnbE1((R(Yr z9P^;USY{r;ThG1HmSaacS152~hh9X3qBs6#{KLKU{As*uFhcPzI^!{ zbY@`owpDTY{t45CSj8F?fFswz88`cJ<*j9rJV5`_h>VPCnh@?|l#RUU5-8PCJe3+f z2Y{2{AaaJHsufmA(5MJu4X>B*aFgyeSOy=0hYOb$A_<_pe=KOy8h!?)*>gDRy7}lE z6y6upzME}q=+8`>qBfo(jAgRg#j9xr70_;EW^|6~1?M$kVKE2XBTa>u4@yRoDI@}E^OUkN`4 zNWn5b$gl>KgpRByyKo0CjOYIiKWiMav4*{tc*g2B{{TD8=+g?(=MsUk?gDjno?+s5 z%q?vVDcf6H2oJKNJq)CB$ID;`MM$4=^d%!D<){!1r2i(};NFl2J^nZ76TyqFlYPd^ zk4Sxtxud72rOy2gNH)*DhBk=Q?d^TCdoqOs1=4rk3A@ecjKN3&mba!$PO&*Zx9raT!IldU&4*#1v_9`2BdypTr{b}8qO%chVFx9kR5;?!AYKOs@E|8NP>7h}B`K3Xt{gZ=) zWYvj9<&o-UQ?Ju6u@aa+@DxEjVB|tx%AfHx)9iYa3(D{(ju?P$qmc4az8QN{BOf2N z9rbnI^-<3Q;eKlW(Ob7}Z8B>^sGfZj9lqAHQ;MffJV=ZYZ{EFaPoJKZSsmYg zQQZUK(~j0h_C2OA*%|(RlkIS3xSRggn$(ERh5Qw;Lh$tAWOS3LZ@+<+yolgjZw->y zC-HH!1!djM9w?=7!*J#gtq{^{d!OW8*0OAN z^1dzgbFNuP%2iO4WzN`Zpx`Esa{otw2X<7A-_&WC>3_JwG4WA+O~&uR68Q&h&?x@D zq^$p+GS(>n{Xe8S!4Af`9)T|7HvD%9FVH{r*V*n^d6i-yjOmyx1k; zECV!}*rx{RForUHNQ!W5TwK6YK)QrQMDUHi{HHwN^E}nL0iedf62Y5l1`)o%6?6{< zsVFLQfy*9*j!eH(bp9!` zkbn~f@I*7>1+3gF3kPbfa&8P4mjf7NQvr9Q836hMx+&!N^A}l8(Bs|*^C5wG?Jius zQr8I0d3~dh?S)%f`yjvt9-yk2=D)&l$Xod{{=$7%K-yx6;)|uEq=3yDN2%li8#B0- z02vb-2r9-gRK$4=#5v|)>crlmgqm}6MjVkcfX^}#|9>@4 zC>l%1>gb>a6@J3ud+(zUy?~XLmex27(*z81IQA63tk4B9n;onB&tu=@T{CTVe9Uo% zP(wq5Ludj5PuT5=RRr!~sCe(Vv_$kBBOCP+kmmr9@rw>rx7Cw+78^Uc!`QSI7+8*q44A8$^L4}uMBLrJez^*2BOoyNI=#P2bW1HZ-t8qzsIpDEfn zbaLSUJT`Wbjb9*3k8HwVIXEETZoX#kBSX`BUO@1JA`n>rn}Q|a6NKs0L^HCJ1f@iwx zkD#amQEfO6GJ|IANQ`Lw-OS%_BMZR)>M|21QHmo2I>8kgv-N11%)xeNxG@1!tM9 z3e-(-%BqpmI@2_OvsBVVQH&03mzaV!Ibb_HA_1N!z*e-}1`R+Snh3<5`HV_I2BAqb z`{|FdderHE3UlcRcpRm1G1{Nc0t6<7SmfU?I{&A&Qt%~ppKltVxu#PvFP)`D9(je} z%kAH3ENl&t(b3iQ z>4S?6;Ko3SIDlO;GqDV&{p~53Okd{YprlrMwlJr$s-z$xgj5x-k3kLrHT)P}>D8}a zu@fG!_3>}tefyAtOdn{whwrT~kj{RED(KW2MgjiJN#MgYOkuM7E43y26)40WYC=PB zDa9JvvH4;1N3*27@OZozrlR{8Qm6~D zOYTs(XNxbMQ{fw8qEHTxh>-09HQRzVl` zxpEl$a&Ccs{V&iN`h55fx2l7V11cyb9sXEo6`WjLh;ebZ4h{r+{H;+=DOuUGIyR5= zJ~&?^RcDRZ1N6u9^ydMrA#p)Az~WaVdNYzP^gJq2W(;pE8;TK#;EF(QlijpL{0A%m zaA?ruUoz+bayrnG6;yy^)U6FLUKtq~F5PMn!h`?%QXKb_PkdDY(Vk=#0GJX&O=-r;z3PA#%<0F-l0jj+89>xR@HxQQts+OJt1 zZq!Z+RB|L1Y3m0X~uMXm~70t4`fSD`V0l0dopJOy$BKzRKf z>If8_2Fh?K!zVv~I*r+Vym~tpu!T-JQ6C-bW|Fu&Z|<^Jc1pV`z4?(cjA{fyq~#p) z;e!YG{s8?s|BCVZJXiq44<;QzU3yzZr4ITl9zwRu;Af-dehof&Y^02SG;7Tv0i-SsJ@W`Lab+AF5 zg?3Ek4xJ?WeHWlp=i8%D(UqurMCEf-|I=fGr_c|&xqOkpw3fRAP9(r^v2zFiC>5FdFkHY=3~ED_t45m(xH|N49Pn)gb)S)R1Em+H5?y@d4RU z=-Hl7Y|bP?v_#KE@$2k9AWGwY3{N7 z0kedmI~Z8(K-K}L1GwEGmoHwRFdhQitYHeg4$1SrOW(ApZu7I!*Bn9U7r2Pv;TX&} ziOI_WGW-pC(yeU}O(E@|s?vwRZ8Dl^*aOo|GmzW5YH>K@Pdp8RPnbVYH!lKlOaq_Q zrXc|5aA|ocO8f^7JL|XWWjlM^UK~n}6{brk9!4fhLF~-PE9>l{A{!8h2=t|i!F8oAh$)U5yCr5CLi8{2~H|Gdt*o!SV!P*6#=- zVyeaBJF`Q%IXN9#%N|w+yZgj4(P(o8=MiiUpaLu zeS$#dwhnseo8Q4VC`6KkRW6)*3NL=cU>nxMU2x@f$cGq4GC^<>J1EetVTfWAf(Bsl zfXO*{9%g)dId~ONkxc*KDaWh=N4G2v=Ike)`pmKPPu2%Mok*203>9)>UivZi9jn_a zi2dj*0{$W3$^B#TH%Pf4eyRKURS-9qGRXwNU*#MUfa(G(VkvY#P?i(u&0)MMA>46+ zu^WmMkb71z7!{*o&~Wa9entHd-aNRo58*K4FD6Vfe?jd+sAyJkva_?8tlWa2PbN?l zZWliTnAD$qd^yMiX><(ocCGBdaL{CpM5X%JT3UVsMI%6d_hCMPct^N@CnqM{Knn&l z%FQ(RF&8CtbbE~)@aY^n;(b4({)f-pF^bQx?16x=Awyo9&xJ2k z-TDX0aDcIfK=OO`_SXp>)C7p&N|1XyLNoMKjF1boLVefi`au}n6$iVA8n#XhKN5o) z!hLfFO#|=}G75_4adD2&gT-;hB|BE8gQrMQRyIIRvlh&DK?leUD8JAZ!rC*}@q+rF z`=6l=O-W7R-wO^724Shp8JbtWo{6xqn7|8c>plCli7uEOwxpo8RN!M^=L&4!eWf-F z0 zi}WjVXjsw~%!Up^s517yO~6JHhi>i?O3KeZZ&`GrweB1jv+ej6eFE+TJoz0JtOj0y zHdv0lQU^YYXQ@0lFRvSu+t9x&4pgj-`QR0N1d5isU&}!<4E5O;`x8tgHIB~Czt%r& zKy?>%S=U*hJVLNEt^#TdzAu?Fs5V1mK@zLrNWUrOodtx@6}?g7gcE2T1Jd(3wV85) zJ!Ud2XZ%nLR)7!$)aDSx{sAmh;8M`Gsm1(I1*(&}y1LDnS^s9%wps3y^JT)R`Veir zQ02D6`XdLRAO(=wb%C>TXlMxB8SV&7>*^W*19?1dY@aHFt#(k3%pRFN`CwP4>_+?c zGH&)AYm^f4Bewv^yR<(zKhb&*!$8}+B|QaD_p}FDnm{rL_06}S`8d(%M+HlQVhP=Y zQh-MfMk2^mZMfuhw3q-L*OhH$c%?RwFZJoLnraW~iWmfk{z7eVVL)vXxaUB)2(|?s z*y?rjiIvqFfF&`0DS%<264oWc?H|1Z;g`H#cmUcIRKgeNKcU0<0cAT{Uke2r3biip zgYK@=*3{gm{V8jTsN41Q)Tp>q*x<#cDQ-_<(v%RqNLc?F(fF}L@LMDfGM~r(Q8zsC z=E_JI3bQ0Z7AGKX+!N!gnhgPLo)5#(nT3U^^`$n21BzIKhDT5~iB$BsuOTyvxOKi3 z;xkmkGp>pY6m;x8>6C}_V!XV(TfMl$zqVHkn1oQ$mT*E(UxB;fX!=>QxH}A6I>j?* zL!*!=VgdrbnD&-)f(vjbE#ENKw|vXguVkxaM|t*1byT=8AWfV^*PSn(F1*QJV-Tqq zO}eORb7CHe2A4<<+vdFwjmGae*%sAnOjowOWN2`cxxr(Ox(A-Nx}ZixT6SRQPe9sd zP{zDf)-OIhnGcX0R7*(BFUv>r^F32gCK0fnh5hAoZquW8b(f!uJ<+g%A`VwWBvaJX{8E{OMu4#DHYt zJLwWHXksJVnz{>hs!Dr;HqzP1yvyCYHz8!Qi7P058UZ<}A#OaUE*=@RzBe><8qnwE zM9>MN(zRhyl-S&Zyngp2j~5e1=JOEd3D%8E`Vfn315baMjcy$-V+C@yzae~-*dyWB zyYdG+rj-oM91{>qW;c5W!IdWXTZHpuBj$pz{n>Pe=j5_dsHHy$0jYxylV`~Kr;2=o zYXpa(po|H)`p8`Jv%hGtF^q+9cgE*-zXS0IoI3r5=K})+;Cgr=RAptmZ&=;~;Y@v{ z1j7TeoZ0Wd?lZnPJw5Hdfm+qY#KaV7Bx$UI3Jp1Qf5J>mvS!uT?0=C zpth?+Ss2eKEkJ{d&@t?O(?bE6gISp3?M`C)p0tq37h|c@a4k?Z?3tlI9{wPV=rB&; zrS7o-kUa=_b5rCp28T_uZGz0BDN+st#NVC`JOeA#R8h;?2w)}G%H^JmWuz6ido$IDW9=&>;{D4{8G3mnp`#!_r<0NbpyTI^6{jS!SD6PKBKI-( zSn3=&AC}{^$w5gS;fgM{zP2o`NbuB@>|))=xi~Z=6*MkU4-tF`<`LQVyY@ z+HJL7ZvU;_!Jhz?Z8j5BTe+8TaHTpCRH!%?JaZi==E`mW?0*4pqtG23L<)Cljd1oq z)p`i_5b4|mBn7ySCV2)GDWEZDVUhE8 z1%CtH-W&#n8-Pk!6+jR-uR{%&#~}3J;^(KBN{fz$1|SfzN@99Ney_cy#cJvu1zBRE zOY1d0@%L&%3&0-JzkJSqr>*!PqLnFY2>Qbe4IwTP0{k{^;_6p#{5(U~A!5W9vS0>l zm%o+G>bL^V3JO`y{a+*rI{jBYBxPjSLdy3L3W8@I& zitQ$`#;LS1HTX7I1io;fzE=gd;gE+G7sH!(inrxlS+3K z)jevMauySF){j-rC~mIj`50P-Wo>u%L!4@KdAzsW=fuKdI2ab*t{aVeR3~VT;EN?; z-@lV)NW83fq%MwC#(ll!DO#hwu0#y&X74e432J^90~5ev@SKvf`A+j@QW^baRlDlyTqgVP|{S>YnJd-!rKExF&{pjuq4GSKBT{ zR&v|B^-w^Ch1yCbr{*^_;Hh&XV0)Ol&#X=Wyq#gTeS@S@uIWHfQO;5u zHqibRMKsSzDd+?Pq+dQlvN#G7S(wW+z;P9h@NaB>ek zu|$IJZP6lx(<%jTVm%`3>NhoE?vW=K2k+t`SEXWHXk~26l!!H@oqDXW9T^gyGEVuv z3r=Nw>J@7p!o}G>GM5!pU~QdZJcpFS$RErjiS<{+kHCMTB1MU zK>~Th(~=ucaVfEA4EB*s>={M^Sp5q6Dqp*cHXVkT^kVLJhj(|kwtU$!Fle4Oq4^nJ zdwQ+XV6%0mYUY>zlB`*iyiWpJHwIB@xjs);@nEr`%u$W854}$braY-PUO{J=FU2hW zj5PxmUryG}to}u9aisKVU2B6+RTXe?bmm7jm@;?W5?$36sS$d{Ogeq5W9_b#yH* z8+NR8`tO7w!%sk0mp~q|=d&~sygle49f6_@hMjYU4GhXrWF)+ghDQ16rrQc7+-D{OLYQ*mWn$>?KE$jTV;DKT;1Xr&xs4|ChC1S^I=&9$+6f^TYpIrlwG2jpDWr-KTxy% zn8?Q1z`#HuM8_|amX`Jd2*PU9{g+c|k|@vDhWq1UeA+x4-1xN72VXphBoap)U5zFZ zzmI)c3ft(}nRi8o{qv;dkYzOzelc8%Q`xPSDNLGMmXIrI$-miG#wQbJVmoG6L7hP| zK!z(FS;(HiDAh|zrYdA@G9y@|{vb*d$siN$0E6z34|IP@X<{xYxMG}i%10+y#zmP_ zKBpmF-h}3#^D#~J-hq4Y(VD8Kr>M2H>Xn(ub(95aqU|a3JChvSQa?VLH}{JowXMgM zDmMasUs^D_dw9$Tk$t4H-XB3SK0#z+Q+Mke0V+GGetc!QfXEFOb>^02#H!@*UeUtk_!<*r>*vT+ROFLca zbe(?Kwn9G?F&tjF%}zC4s%|?G5HoyxXN3FgqQL=x4cTX1HHHcVgnV6A>qS!+j{xG!7%2B#-!4*L8@z;l4$O??|~O8bfP)e&*71 z=eI7mY$7x!DBPF#(yTqM-NO{+s?2Jo7;%``{KVpgaMrYR+~p!ln(>Qp<4U1S%x%)& zjXG-9CZkh}(6E{bnXL3~P8>9a*R~<2xdQ#R(wN`ygM*6=S{sYshb#-QN3Kfz>bhEA zGW!-cPV!wbiF;m934Zu=YvWn>F$OwDN7lk=HWFnSk3f6tELywE{uq}p==G+_dX)lK!9O=_`fxX5D^4@2i$=|mF%Uzjy&-e_B0s&~!Z2CviU*tPu zs5proNMXKIPUJ>=U$-eXOVcqbpq7CE^lE4-Hc#c!`mJcpq!!Q?zPQVdOLNifvM1zt zBgxkT@A)1df!1m!*9AaiOTlma%EK&f&c4U_V@|pRm5SB%fn#f8LhL9#;SWz>DFA02 z(mvb8_e$~C8m637v85z!+0?yg2f&N~9+fX@3i4@w^@8yH73-B*BSey_hkrL}U50d5 z&4a!+<|k$8!HAuo^?f97er=8e<5l;4wkQwpL!!-d1GV2A2zDDX2MNFP?PvOl4_=6` zh672d>-Of7akKWxsXz*Ak}_Er70Hck^_}t|QGS9d1`mc|0)W^cZNCR5I;Y_Gg`&Mz z_ zCCJ}`#?O$$C?g5JBlEcaOX@68?}QUHWg=2%g6?}8BhA`7L%#UBkzXs1pu)9ra=24s zlPz1us@4bmeDkBM`YX}H%MwHZF=<8ji|8lymKz72wJW%UbmeC)Evnby=hLhtDGI!n z90#gc?HKHDz^#P2@lT159fypp`a-)rbCHpm*$Bh|7}!K3o*i#0e?PB;)TL zy^1ASW-ZC{2|cz+Esdt(v6XAGzv(c+;9pm;OV)Zu5kObL#CMGyu-e`XaBlXc0utP1 zq7`U25WFl%Epx^AQsBglR>oD}@a}>7b>+Qfmkh-=TSs8Aa>8qu{Z1#-Kzru-vwY{J zY)m&SjIt0sFb|bX-n^Q@pnLYQs@L4h*$Tx4tV1JMQ5$s1=Ar7~n(X%TTo?KUNw&P4 zP%RIr6*&NuQDxaz8In~r?6=;#>t#`J&{I`TV>EYmta*I%CSF@ql0gW9Xaxk@OL z2y?YQ`qr(`Te&+6Uz?0V2#y1}_Xw^Fm}O7wAVT=u3fyBa#c2m@LoD^^1GgJ_pc@4U z1D99Q*YWNw^*{Raf^YuC)-><_g1w3r~+E zdfvSWJ>(47PpV}7%QGhOTPrsM*>R+k*>iP{04P8+jEWdRiDWywJP_$4QI_#Xl`Q@V z!O7#GLhDR7hSnI|WjJlVpn~_2MYV2l&3pfhX>APcC%L;ANNbg~%edH&84=B7{pwDCRbolb@WwUS`Cfj8*Rn z|HZiLdKL23KwANyV&e7{s{FfU2dGV{_*9Wstb>5a;k3u#Lv17h7C%swN@i&z#5%xk zA10-Y)eHvY>0*nkk0=nNA@|dBj10oGx$zF^qcccAZF+u1>5Uy!l0-CyCI1Ap7(f8qKxpa} zRbB7y@l65j-dqbKA!~kBLYa(H(6T8a+DXrnvZ~GogkIq*%k+i*IaoF4xI;+B;J|Tt z9Ictw7%Q9HEWO0w-rc0ppo*K1^JGAJ~e+gjykyvbeg4>7zZRVriblK%B zm;KDoJo0|cVQv@8I})kQyf>(gvhYGCKvMxqRY;F`YUppsjoOEYJv#<`P!a{~nK z_Yc@pgPK40tVXHD(`c2M5<0gyMwVO8ZZ)dKhu@ufmB|(%3GeJf^hlZ>sTvW>5jJC9 zz3~fU=jlvdG-_=iuM;$QbWW*2#gLDq@MK*C1XO!b^otN6@R;6tUgZ3Mt&(O&OwYug-!6XWw*fqlW@ zS5$Y-j?qa-KPE81z?&UQ_SRwn!GY1K5T!#`PoJ}0sb&o;o;*d+N^48m7tBvGl4%xc zq2xc9+5eFokn?UeaE5ckqNOU|qCVJJKo*dA) zIL7I~*N`4KaRVeFQz=2s+UB~*F1WBieK6bTP`@}xvS(@h<41;z8y}JmUy*@4f14)N zF3bV^#H)qo`#wyjL^eIMv*oRxY1VUqx@=NguDz&sV{FG)v~JHiAxfD?yY4XA#q{P_ zJkT{jQpu{Mer0I=+~-Qrfb<#q z(GY3epgxdi+7mn#h64nn#kIL>H1ocGq1Z^|Ib}Slv*k=d7YQlJn`IrWIqc4xM`|0d zxOeE&g{LgMh{`nW^|;S_nWD$>E}@5NneLMDT8XQ$k-ynkR>`tPtqJz_u-48he|uNl zHUZg==&K%^Bs~h#H1sBd`c5s1q(qz2uX);hJRH~h*Lk@eez8heKlFan@mbg#mEM8m zsZ@X#&BnoG#y%rW!N!s3K6%rT!1%9l=%oV_tQ44qI=(L(QGbG0A zudiAZ)*CH`IPm1r-}|;w-G3z!*$hg3et2o?HJhtq3ze{1rpI8CxIk>w8te_S@lBSS5hKv|F{;=zuA@4iXHnAIM6c-vXArKE@53a+@#W zHe`49Rhg`5m|FT89Z@Mp9DBB+`ubn`bZ_7vH~ivy3v?%Gj`}@y`bKaVY&b z8g~f4n9<|;LPk8l6Zv0D`krVv8S>|jy3d5dqC-OC`!~f_Z^|?$$9tF4;H6%C@ZbR( zn#+UI6o5I9&fQ$RJk@l8N!Xu&fTYS#D+w@06xAsw2T*Je_w{Z+@-CcZI-Xje0+~A@ z$v1II9PB@6R#?oGK6uw~(x7;?gaM)_K>W+`yLnT{Y~W$exJPi`Q(!BD))*4Jgy6P> z6>>wrY`~MaasmJd?Dw;EasoW46j5>mZWL6FBS00xr30o{d$1gTo0~K`QJxa z5f2zIbWO#1*UCAhe?ZX>2 zJCU#%P6c!19^@&ihiHKj7|_aD@#df)>L<0yn_1Lo$iF2rDm2b1oEvy{BH;w$(N$o_ zcqI;N09XapN-FTUNzc;Kz&CDpf@08Mj@<#4xgVg7x(bjU0IR+T=oe^4k_2t&Ip*Q| zL|K+Wn@5C)_XBio$uC|AJFjVF7OWlsXV~<(jT7Kp878Fk>;fd!S^;}DbGyC0z4@wq z7l2)1Jwgv5cFZ9&6kFJC?redX#SKMbn!?&*B01iF-=`Yw*9vyAR{d3}`~|~ClgjEU zcOfkUgA7l#YTYRTTE4NA6to;sc+VVn2jKCFfF?spd3kyL zdqQs8m-JY##&PLS-@YpKA5Vnj^StZ10Vj%)1h){Mpsx_Xp>DjlqB$Gj-l_dx>nA{9wZH5P^^>w|!wpc4fDu<);|1!N4UH72YeR7 zXlGB4sN-_9V-I*?Q&Lk0kJU;+LpV&qZ#BLNlAI_Cm2~lIc=$u+LGzxVGc+{$ulz;3 z8k}WN(ubbRE-mdtq#hi1!~ui^+({7go~xQ(SO>p6Ady zvq7c8qsQD_4|}XKg$`h44N7#PGz)7BUw?ozOFHo^HWngY83{kan42B_e%d`hph@D_ z7ICI)*JeS92$3X6Pn7V1#&U+$un?i>L`g|GKEa0QkTb*L)b;7ws|5uA#{U1-zrV*S zmwTmCwGF@9?1knBoUmGET^kM?Y6IzL0?heIpr@T)x0i|l^^u^s_%wV=x*v`tPLGIx zfqW)IYw9aqQzpHjHC==;Y;S(y=baA51gLG`izzvV_H48V0oUX}K2aU7)hcvC@ci?g zC};}Gm&@q?+mE1kwj7iFL1|7014s}Al;GPOQQ}h?NbFtq+LW6Vb%)=T~4+Gop`Vy`@r1n(PcaAi~b_r)3i z@%N3hd=MNEBKmtx^*^gcf7gcbzg9{E!~d^Z(X#(9y#w;+Ux$4Eoem1i+_Y>#wKl{5_?T8L!?5J?d%9VB2kY#!-+O-k>%IIRp9)fP|1I+M_wSE-Q~pm& z%Ktp9zn)clh)*5BH!B3FP8YKgng&3y*Ecq}LcE%BmZkfFAMK7~p9e$bp{A^?Ec{n; zv&#gC!H5r5v`z>(N?USp#$ii7QMlXBzHEl;%NG;<%nWIVtkG`X!QE!~xg zF}`U&($f0lV4fYD*tOhTy{A`KNQj68tyZHkpq0RbW&^cXJh6Rk0x1J+9$GeDp90`k zGy+y^+g(7fz{T+il$26y$X?S1EbQk@@fT_#sY_~UmhZklRN{=7_ke#u<&^2V3spNDp#;y(jeT$9q`o%acT zy~f(*b-64iX4lO+yQb6h1IrPa+~vB;@vC=Y>=l~VX*$D^^3R@M7c5~NanP}-Qlo4d z^dYxsA0|pc6hMlQRzF;XCm`TLW$;2z7$&;4-Ocr(x*G46oCJdS zVGCpl6FGv_M&97ILhbIxN@Rzw&TIAU`(nZ!cMuqjFN5?2xU!LF&~B9jD4Lj<2=;7{ z#nB*vrRWVP=_$BWegf;uSmL@hr%(f(E<9DW$O6uO)=C-wx^G|VC8}uz_ViRmOAuxoVsbs+^j4tkhU`y=c^h#i(F}c$HZm^BoH*(fjXc+HLgV5xz5k;1T%-mG{oI*AXnj{pfckm$6G9ydm%&y zxgDEhiB(Z|=q=UpKOF+@+fGaY4D4&% zJ2+^cjs39tRE%t!2s{g!I4qSKpw+m^OB*x+ePyUb(a?&Oy+kxh+k}nTcuj?=jci~d#@kbv=I(5rMms=dC51W}daadD|@`F z*`Jmnx$-yN`OMG6%CWY2{gnGuRi;{YeUS4@l(-$I?vKu-(NK~1W_dX+bqD)*F6Ujh zsrjz=KFvhiP>K$|F&`gTq8hlu&4rSG==msf0}c)1$~p+)uj~Zp zRv%;s8VaJ^W{Q4!K0TX6Bgt;#ES2w1L1VN~nn_C43l1!n9*FB{YxMGwKu>18a^)MK z#ev6X7|@_^u0KJSr+rbvHJy6h1TQ5QB!VGX*hqw2qU?}kJiTMRcl=Rk08=0%I!!Jr zxh=4CoQF=Mh7Js(E4l_LfJiG?8|#m2jr(ljDO!W!435)nB_-M0aMEXKjf~;wLA46h z#?vRppla4)t1IJ}1%VS)2|xyZuftwoj1G;?!(1yARm`>a4rI*DT>-I`2uv_k;oNBI zPQY%&5ONI$z*f_yq5yv|s&f7m5_2p5R?MZsQX@;B@{F6%P8>G982!RBEw>&OdJY+G zfmXImF9WY+dztklW-c{S6E+h~FcM$Rc65bOBKD|*oI1j6c&dffsLDUb5E;iyyK9a&LiRsy&i?xH-7F{u{3vyHxssP zt9*`Lb@7TyHVtLuXUe}n$kF}*bM)M+*T#}%Uw1AN*9HrV>ZpuPHxJ6ATy8Zv2GX`D z%hLA&Uf2LmRdLACFy5Tm=;o_lZr|D^IPH1{cR|LgX*5AIb6-IF z4L+G!+efE+uWfL245+uBMx7yNQ>Cl?cBmlT-!PDH!Q9odV+Bu{o76Tw^QlJi(gb!k z^;>UHfvJ6-F|F4 zvW5TkdHO+_!|Nft(_hyu`Z={m7m=h>*Vadhiq}?C$J< zRFPh9&YI!$ClHa5&;c+I8b@Lv|b^696RnJk5k2AL54-V!`e~I{%DtkMsAv*!cJFut~7{Ok9cMzY$KvQ|@U(M==5e^og>j8iw@V0>Amdne|J37hEfIDd`(Sv3M!HN6s0Z%Zq|%1QyP-#iQz=R@4TXI48kos@J_)49`}3!i7E+q`~k4X>@`b#{h+et#4} z_asrwqJKT_!2~#7XeLVM=C@RNHE+!Cf8V7YV<^%JL!h(K=ug}Kc`Ps8O%NEITxqTR z?Zt5AN>{au>H_W8A(MKrO7pB4Nfb&n zYLGM!G|yd#LP#{AQA#B$O*Bg?O-hPJmF6_3H23{Z)3VlmulsqvZF`^XeZOJ-<=R$t zUDtV@$8qfYZ`w(fZZB4k+8Gy~JJOuCmSnKrV(579y{aXJ+4k3GKj{mu{lv zIa1IQT=VrU43p(HTpv?F%YSX*cHXuAXc(53Ig(TQ2a}Ks3?16}@^b+wni<@L)eV+^ ztX5mz&{IRc6GL1A)h{@HS!sI6v)83E`4qI&;c{#21<204;cw748C&zf^}DK|q?w}G z;Ca*Dr;|{z{t^;UCUTeUOWvt6yG&u3co)s)T3Um3>2~W?hVNrj} zy&ZB#K$oi9bbLLYY2k4%@Di=x{_Cmh*S|~BJKUU++1z{y<1~&a2h(hLMP(&m5;J}G z?o-yhp4kG0-n*}=pOE6&Z!k4|*vGYs&SJ_o(=9qso_~DQ%Nv^Km&eYnJtt|`96`e% z*cq1J+w_c2(Am`$Qj{+!D@T^tUgMM7;$5|Dd~`Hk^XVr^i31u@D6%nnV-PiZyEnIH z@@`szlZ6Ea)19}KcW~x_%dPj;qA}FgB!grosEQ?^AfJ?czmDUiW%;u)Os$ua;;w&? zywOJD^}ah=&R4cH0{O;p8W!eHYe({!t*$#6jmhE1EUvD~zfj4T;ZwNt2E`X#@tJgD&1 z9qU!0)rgZVlM7Og{>luuAJWJ)#56LseffK*bxPNlr7mFVQ<62)B+J!XVcfx+H)fKV zcdf-31{c_oj;yILGiWQ=7!<~xdY9fUYwV(JtqN%`gtXvRjO*z(1bCl+a^y6l95h(_ z!BN>vmc}F=4)sV$8qr{uy%$SP`2~R4&pqm?5;`g6kNMB`4V&x_)p*7dU*fmH&dF(~ zUQWHf!P^%NvTbJCu9Nx}^+C>wZvA&<+by<++>SMIRD5*EiGs4C+9s&^(FYDvcYn|Z zyJ4-2PelT{q+xsVsqU8EO(%}F z(R#1!%^~w4!syUNFiARc>!DpC(G{;4nnan&OPanxDY%nCh8R;~VB(J4>WAeQv(r$F zfNom8e7S*>rs&8$DBYGTaqQfwxW7s_(>4YRf3M5F4cz3%-@?!UKIcl5k51$tH-scg z6wg=fyum{Dg+qu!OD75v6=9 z+@*a@n-Gq`)=X*W@Ns#GDQIvw6>XgCl$Df)GRW-#rl6O+DByRiod=DF%A4nCT6=yF z-3@K;3)=RJhPo!Nw7D0TKt*2zFBwkU&u@fWoSkbE^l35}H&r12gMRgtF06~{#&n^i zJm9%os<5C$QXTr6&EPWA)6=`zZ`sMte+ytBp(&e*bTkHKanx6bkHt8~n0;wz$B4;M zd2@4f_-2e~UI>4aH`HEsy)OU3oMrPB(m7dk9mI&uc^FPG5{JP2>?C{aw!#&yxfWkv zeb`|>$zsoov1Ef6WKWP{6gNyvySYk7oN#%50G*y2f^e`Q7T;GGZoe1bkP3sR`ZPHjc&oLGY&%&)>S}lXgBp36p|Ldwy!V_|A{S}qLFII5$Jp2 zxv^PuVfMtvuDs{YJ~s|Z?j8OzJP5m+aYgRAB;)7sSq7YKQ(do@{k4(nWl_vaKBchv zImItSPO2@ZsTbq-E zi^N%)Yb}lb%VH;|xG{Ii20J^uq+=Rl%w5j4iR)21xE1dAEZbS};&W!AjXvr8t6PQo zus^HZIeewZtz>amcCGWVr=@zj*{vQPd;3e*7hT=xH0hF29b*yr$ht1!!O@1&gDewF z#-F7QzA>r2vqIm4+U~>Gu&>Qb!ou&bE-4`~=IIDbU*=H~fLNi9xta}z#xwEC%mKc8 zlC)Bb?axDr>BDdwVF2~pA#)=b#6vz*GoaoI14hTky(CB8pEy&>eh$Il?bfV%h6;?L zKe2*8KB}#r20YXr`qJm+p!8!Z=S}=620eu-4LL4CkJWZ<1`!ZM3Tgm^LOo0ANZ!n) zDGma6V3{-0ATEuiI@K>b+tqgXa?~;%`f2`RG!@OcZW=P4XQ8L)H>BWMdBYgF26h(4 z3~b~d(xsjhCM42e%G%9@)|Vlg<{j{R+$rYIU6;n2d`g5ZxLvd??$G@QbnGejkGME) zT(od;GklSLkrcxboF{UhtZCOVTOGkACa&;ix?hNp=YLNFj7ovTcw#NRIwz%K=xg3p zS!WEc6->R;iQc>1q%qFDLcMuWOlMYCQXaD2Cvw0pw?7xPYM?u!KtVsNCu zWW}1gk6xCJfvMXxS@iE&EGoN%rSxVMO3(9M&bfuep|Gh}MY6l^i1OM9(K)qdUOOYe z=DUC4jI5N$JqD)For8m?Ybu@Z1x*Tbm2Csmc|7 z+YJL7fh{VIK_?$1m0h*hW$$CXtH$ghLX#I8mVTVuZ78HnHC{xb&j|hjs%~P=JhlJL z^jRVGME5rhS2x%R6n^3E9-m;l)drx?BWI1LtHPQh2pim;3ly-C22Cn^p}HZP@9^ z3+;V*?VSwdq@ zC@P40?$i!z5sT&SA}#6W$sDe`>KUtRY=W95XirKcaK5N#OnUXv6v1fiBTIU>n`+&^5H^2? z4Sp9$e&=6Kx#417UG_K1^FLjTAI~gt^M0puel(CXnR*qobpfQ&o@OR3888T$a0iB- zR;@JsC;F5`{Eyc>??s3~)tklIWDpk}k8wv^gCWH*PNRnXSRib%z0e078(qfBeGV{~ zdK^CT-xBy15eaLDLk5VHwJt3+oENp0CU^1V9auvCeOUA{-#WRtWQBQZ3)U#S)*Y@pQ zL{LpRoL7;0mY6?_(DVV&a8R2gb88hPWxy5CC>V~WhcXn=5$_Ogb=MR5f6!?l?9~ZM z9u9L*3jEbb&i(@O5DiV#Ma&-$i31m61;Iy2F|sF+ZNa`=t_N8tbSx}-2(3h#4GDqo z%vUgb%(M;S5b!&VPvuHjq}^U0B#(p3v>alAw`bE5Q6xuk6fm&=(`_`5^nQ82KwIf7 z0cVq9K_=ijq81^dplOqlhyV)jD~jx`tS_kbPB`9Q?PMz zVogwi!REe{%os5fGPId6u&a;dFV3IQdWjJYDJdy>ZiDHUFJFd&_l06mACZocPg(@u zhBp+4GfpcdB%}#fa|V+$E8o3afBlxYNWxN(v_3_Yvzk2X0iv@bMWn94bpb=DSV_{Z z+i2MqKIoG!#m|GfNz}|-LYG-VnZQ_dBOm{E6IZmA|zVb8I?)<;}i}^8uGFRb5J+y&tir8kLP~nYC{npPVysI?A_?ysS~d*xQ)w)NHvq~m z#lwfKsw2sCI=+0dH>@LrQV-8LsIP?OQT?EQqU7*FLMBH?3zVkmRAJdyg#@j310CIt z^%%PY1IQo=ac3^35B?ipv25KYgkO6m+!G|Sn2*Jl**~ws^S5#OA$V)s2UxQd6coiN zExB$R_0F1_#<^=@lH$}`e*gA;Y@*>w||gzLt*Xt|7zu{QTD=? zu*xX#+G5E^j~5DRU5ktPeYtDa?WMSXa7CZI#N|uIdn7c~or-ixAI9p2oqV$`+P^w! zyl+wakVVJsyL{iPB}*=x{3Bj<+W{JHmL>P2H5ORAds`armY&{mcMH2%($_)-7ANbW zW|ude+qMkbNk2$Dr|wTZ6Ar_^Lw|rvOtS1JotgxvCGKtKR}47OZQK|f92_C-mH{@o zMxm#xtAQjcAClS-9s0^Zrp4m1K-_a6tM_p{)=%_hT$j_)IZN1w&QhXWuExG1Jm+OUm1n z1LfCOnjS%n#!{75veP|!)CQ9(5XN5jR)bD_w~VND^K)3oYh0NoxGRF!Uc`r>^3qQ{ z7o>xS6pRoT7gq>!1{!aNhc6&uu&fxohLmg-9^VB-a3l<3t_u2hA_l_IE=RZs5xUb& ztqVJN#?j9Mjra&pX=XW+yo62OY)a=H#|{lwmpB>(lL!y>#vWY9?c2AF0TU_7yb8Ye-}f+84(lnX?!2OI{-*+L~> zT$y^4t?NNrr|kliW{iJ+8M$-9vEE5`n5S-becTGLfD*1eZdHtW=gr9mPu&~kchMRu zMKne3Svnh5!`ai_{gH%iDreMtzKL8yf%^9T`h=K>u-jo_$OG;vJ&4REF8yK9!Vkjb zSIyMd*I&N8vT$Q*S=pnH794i$1qBQD!V93dC8wn4KN)PMOSW2hk4YimE-2fm^k02d zKA2wRJ-D|6u5G4_uiFA@TtIxMt4Sy9%1LTNO+7X~#2rbX5ysa3h9uyx` zR2&;Q;1iXjcZnhR{28(hq{jv$9%S?AOUp|XSX{Q%(KUoa2YX*1389eAInBKqMdjku zTV1fZ@uG+m(j0$&reFU^_AdCk{7abAM+PRQ&k0;<^TFyF^!xIs&OY4E!4Zd{SY_o+ z^X74mfBx=qK76O|zrTgv{8XG?gu0fy{_ba1P472HlaIC^QZh9)g)CSk&*08PaDge= zdXkDPRZVQ&NZ820deb#gTJF1=5GAChqhsmJYMlG?kNx_q^!&BTUSG_RnC$Jhm+Www zFO7*CCT(_R$0R3Lj|f({8vOe7zy1;DLvB_Rt-P9oLcpDNm1&f&yJQna5Av|)4o2Q3 zO}zZ=d*@KMB>imbzu%x2Dy@`w0*jSB?j?PD!zvRuq%?YYd7+L`L5!fD-cYHoyXos^ zMI$m0#EjfNFK}g#*iyrFUe@Hr+sIoeuN|b!VxYfGZ!g5ZL!j3<&eu?tQK+vnTKe`n zoqNKh!dMCp4i5g6Z+8e*W75XU!a^#2g*^Yx5dDWXQUkxw#Ez$-ShZ>u71i~tS9kL8 zOt|oEw8RCQ6K-N_JpiF33(I4=YyopZY)#DW5uHKC143z&hCXx29llWD`foqYNz$QH z)s-*qyowCDpXhfmeVNZ0IpVSgzHjzt6&~x@Z$+=?o$kXwRru{^{?m60`}T`P@8{!- z{g@({9x+n}34i;>Cx5-gzy7+<3YFdK2VYh&1siCS(Xzki|MBwM;`nt3iGO&PGf*xF zef!_nf=9K8jdVUD^sg7QJguoA*U&UkI&$R39{W{7 z!E4>H5;Y6Yim&QLzW{EZ{-eT>^9NlgWVdOyxOd+*=`^;ndCLAZ(CuL6K=(OhbQ(h& zc2`K@o~c(at#K$;fQr_?ECYvf;xC%VrllQM{0jB_Ye#GAMB$ zP8p?j$L8g^;NxakXN=@6AI{yte^;(R>Ala@)fL+Z;sp)U^CKfqBFLBs2qAZY#s?uW zfni-;T`9;_3bRdp{J28uO6_}0#0vlNfzZODTER#Zf;Jw)h_4bNQ&HV#8hg5si{G z@HG0R=VXHkY1CK$P=w4pPQMKsHjrlyT)`$xL$h4WTtu)b_^BgtlosnNosEu-tqKvV zx*ewW5M?^*vYI@kzG@C~^77(j^7>MaYY`@FcI$YR?XgMxga^!c0ARAZf=;YkzrL;j z>iaiURl#&8hU$=((-(kHVvPpFQvb}%Ow2PtodhGW^5MfGuZ?IdhJL#m=g5LLxs$E5 zrt)GHf?hTS}|t+Kn4QexOTKH8{#kW7LDLqj5Hi zit!5?gtD_vMJbk>mDRb8EZBsaf`XHe?^&zeeB9@*d`QJ|p<$_!QCeYjvz*B|*xv=$ z*}DMOnLfiJLTv?#i>J0-ie?cemG_LMwtg!)Vi7BT7h11?yLTIK2^(55(*h@7aA06* zID(<}FgK&5!48k6C7y-2naB@3zbqKfV?H?ut&t%0Tk6%rk)5nJM4&$w z5AJ<`nT74$!fWfvDM{a#f}BVSxL>>-rrPQu#TloVxyjL^Z(+>~4Gv~sY{p$rXhfQ0 z4M=tH%44Yi99$k@>IsHY<1!%N2Ey;hsEGolF{kJR#@@>!7{|`fm08byRDN14V@7tP zZulZfp~1R@U~Mtwg|!Qa>Ag#e$VFykU4D~v1ri(bTPHkDsYda`3_+=(@7vtmj7JT< z!ermO5}mT7l-Hl%VgEpuddlO+hcXae-lY~80$C8h6t&^HAE)BEJw;!arxn&zrEFQW z&K}D8T(PwFRCNulM#G-3$wfI(N2Z@`-R3AUZf@oOF=j?j)|J8 z&$9JBn3WTaCJlUxHyx%v*xA~Sq5M5D{%|ft^#-Q(U7I`6FsC7zSz%C2@$;PvnhsE8 zTQ!Mt2B1ny$M693D31Wy4mRC zv-ogiA^l9gLN0ap;;CLi0Jc&{s6VGh#E4|p6Y)kYJh8>>I zDTQlB`f;4$qA493NGbBH!b*m7g-UiGqe-fVD4So`Sm3RB>xDkc{R>YxV`DrLi}*V( z{-_aOv{}_SJp?%%4NnCg-&;pAoBLyfWPy5Zw zmrRNSkw%SoCX3X!V_L(8=|ruk*~yr@9^;i_M2ne|Bh^3z^773%zXd{2FkP(}XE6WZ_3Hy>xke9CWZh7M$jtPzrR%Dy3c}>)Qi(*lY?zXX zISz4grZ_YD6WT`7Z_Z2s1wp<*0I8p(q?@R>D!3F|Wo+allPfci<|FNnOY0VH-*x%Yw*~b5|9U+WcUlNddvITRb?gIh}nY~ zP45$Rxk&PqEK-`xj*v$Y!8Y1`2ue&(IR?~0$)7an&M=0rW7I<>*1VauZXJWFDkhhA zp*ijUqt67R>4~Y?;ktbd*EC?a1>6ON%TPuYtz{My|r18i**dA->p?A!Xu^h zIp1O0LyHl&6u(SBrNcb!l(euR*%#k1@^}l_< z!@X#O#sR+p7c!pAu`(`1>&LJK`9ZuUWT~v9Xp+epn3Xoze?`)r=X7k&4xEM>x(;fI zJiN+zP$$I?$GAIjM8craB_fWX?4w8hr}YHYyalfOd`u%h%`VCEvFi6A-3yzjjV9A zJrSXR=5X7S#7*uX%a~Xc7OI``_{J!}XC?T-4&>z|uYUFeDx>p^)fa2|e>+i}nam8a>!{%%gP<8_EmRW^val>G5s!wcT4id~tDU3ds*Kva+={a4lFEjFDsqL{x28A65oB(?~!!!ff@E_&h=)8gf63MVQ z)lkEY6}NL5WeWbki(R6$-!La}AT+qg}FLNIT_Fqfw4BKEovIzBovmtN} zZ_gkCZszqxiuJ_$HhUU#UgU$HBe8?Ttb`F_ubElA!Kl3hfr> z?|c7hsXPyh%$yQ4OmY3}e7SurpO)G}FMAo{)zmtYI9;R-Nrr}0!-aPqXPl4t)dzm- zid4GpM4#KycaYE!?IBg7r6TH%pPOp% zoHp62|I{xD{OqNE`z6XIGUGEpo8g~-iSp+U{vXhSk>2x9#hml}@>Ze6Jp;YUm<^nb z-eRcTi7|=o<-6yYzx7YVeXR2Oxl4V!s}f8=C9=;%Y)AC6qO!7>)KDZ2y!j;3{AWCm zXc^E%hlyI<3-LlpB7>P3l0(l6H#>;_wiTRw5zKs%Y?U~bm)~k)Ovk~@9ITPAJ_ir- zh@`de0e}sIhXc@XBmhRD!$M^-oMAINd`aV9V_d z4BCOHV>4gzwZBeDv@;oKn6lKLeOtK4q*lX$Lx+S}d!Ib}$ipb*Oy~^i{0j;S(2o&T zY0Jkao*i*L>q6_$$sXZegTNj15%jNQ4T^*P?at|m8Ta?pBeH|UtRj*{{+G&9IPrr*;z~MF!3VRT&B84wsT0e_Hm_Q1e%K<;q zoT0Nb5v9#1J#kD~db=b_@njqic+%?d;rXj!jmMM*55IHvPF%uyKIh$Z*d9 zUx6uK0SWzGR^eu%gvsv|Gc;zT#2ikgKIgAL58 zx-4z~Se~X|_#M0;p5*7}hEA1BooHqiw|LK8==G|&n2whA_5S0>kAo#gxQ$&o&$9z$ zxo8d`-V}yexv}Tgt#$F&xFidKv0}po+DWg9l@MvjV4>{S(i9EW5rp^{6jt=*O(ZmlmFfUDezrJ|xD=2r++Nxg$UAv0;u9K)~1_N&J31Y*`W2JF08uPil+H^x}g z+J$381&BL<0!vz489DD>G%{1Q$CM8af)|E)xf&6=@!>Ii1bDrkj_y6^H?$acN|ZdL zFlZ)!e(;Ryc0%WYECcj=?o;hPm^>YWmL|@28jWW_YP?b8gPl=PAPRZu(=ETGf6znj z?tt5Hu7=_`WN!z=tip+BeQe+9*gbQbetlm3<@V@PVZCN&LWOJDl9iqbnK7n8v>%>n zu!Z3Z)r?ta-5WelADug{gVRiT*FN<$qkg!rCHq-gl`T1EWSu0HV#OuN{f$u>=;Wev zFd)qmDCo(PZC1}(jKe#zs<0Ah~Z3y1J4qP#0xU__1q^-qbWTva(5{ zs_H78VVcC`Bm4UG=DzJVp;anc6}PlwV5A@XoTe;0dz|Op9&G8~U)HE1gE&d5beFHwW0es5SzhIccGZgHccw)5{mRMs_ z(Vn?5u#6)kXHhz&N(Y~JC8Om%8D}tufio7{Z=3u4)6ra@zg&1r9W`K`;5F`Kv@58V zE*E~w`+W`lzxsvJk8k=L&JuUlA8T^18VWv;rugep8a)8nM8;D z#`*@h9$$%?xSfFaf!C>SA~2`J)5Lu5uTK6Q&^C3A9aGiQ$LE-I>s)?VNokfipcC}x z9|0AdjBtf=7C4mEaj{dc%ggOP%0jk;cWaFc5l4ClhPKRrd%=8^h7l72g(d2bU`;bJ z8X&Q)No3M!q2lkT<#RVtM=;BJ&T*eOE$3>kwm%yS;1Jq+D9`$;nK#nXR)k5SG|5H9 zigQ49;%Qp3>h6tnbPLl}q@WPnU|9D{iy@{<;(dStlbG!2QO7`FO9UZ5nv^r9sG?Gh zrZE3|M7%5k9fS z$77^m1@6}=Las>kXD3}AdOu+ZUU7@6Fa1nr7u|Ro)QqKYe1Q}pq!(zk6JjR^QmZiM zV*kCbQ&Ur*;2^Pmy?~q8M`8m_&MWVZ5#y)xZCu!DF`efrz9B}x`kS<1hE(Big$51) zrD3A3n!T>T>LDyGt(&DAAHv=Q;9-uJkWM6&Ez#cUFbLpS%(nBuY#72BPwDA>l>XYB ziknoz;x^C~tbfDTHw2Xj&LjYh_DD-97pVF8$m>L!>6Y#3wC@3<@>gxvHTU#f0H_8{ z!;Zr?@UqpCJo~+$c|Gnf=fPwwiQ+{QCWv~hs8?8 zyY|GCs|(Sn+Ld>dDQ!`t2j~&}2i-$A&30GSj*}A(tEi8L+|# zoza`ncv@4`BD31TgxT*W3MNyj|egBj50?I3jb$&Kj|A8~Cy;=~w+#dCWTDhfO zqow|>N97T9EYorCyGBMT&_@S{e{dhp?mg3MI_-=}EYOWLU@+dTBkCSytV#Y-_9(9L z=+|v{XN-WA%`wT^&xtA`Z83mf>Mrk1_N`TWtxUqoRI3tF4ph!(x6bp5i8;ZfsVqHF z3k+?;rh(b*IlB9wED#c_*)Z&D@e%45jDIx)?wQMcM&HR-65ErQQODbetq$Xe*RPA( z9RR2cC#`j`x-FTjpqf>UOFt)GhS(4NY zwr0u`t-3lo+)NloWFB*aAOUjE+`o$oX#oD{vUg<`DF9q9Tv#GLo?*46sab4{pas@$ zuJV9aRaLs&PK?*^_*?Glsp3>^`TQNh=S_>Qqz%cPlC=Koi(fCy>=19TN0XV=#EXGbAmqdAdI7p!)zX_hhLKA<>hS`l9Tye zngLBYAY#^bPEAACh!hSVuLo+pv3TrJae;E3%cn8oOn$r5MhvveiNowdj;c?=`Ey2K zlpv={%pQ^uOL{?^FR(n8`EF)ks|F0sronEYUSL+t_RBA=i1#06LR78tGhKKtah@va zt{QYdm}DN))3CKA?P%(06O)pnBHfIg8Te3qd`T$M&!1n+w3T9Kk7Z1dZR$ZOR}+#T zCTh<*ed?fmctF5uosT&L!E;M;AYd=y;g`|BAZJY5X~D?CVqI%~I{c5H7(EWVU`ji( zm6G1&bP0^^IhTon3#=Yrj*10~e;AQ4_0j3xDf*JmCrrdLf~rZ9%GLRFG*7XSA8n8<2&n0sA_4VDh5;(wo5J$%iR@tHCcglmQ1@|Ps)ogUc z4=!n(m+XsQ`bf&Vmu|7H^39K9f0YG2+Wqyag+HE#l_He1)%&u4ypsF=YRW9b1Tyb_ldbvw$!O6c%v@AHdUWkKlAMd)oSp!rwr<@DvA}ih>lKp(v*=a+7k-hr6H+w6 ztrlcV6yN_$ayRw2-~UfI(Er5$`$_8m4oCr+niBnvDalze{B{jje!qr4uIT^&>gTid z*DJB(=T-Vaij7G9!sm#8M5cbn4Zn3tE4=^5UeJ8|)4>3bwIfD2ckUzvJ+w#2O4BGGtGaz(IVDA6O8DX5nt)RjS^%?PBGRm*01p|1ZB{|9K^j z{P_%-ulofZQ_lRp#r^d${O`Zo{p*4C%BMmvG4>Rq4HlNF4@>a+Zvv^mY`O(9zwOi# zKlkm61+C;&JtyZ)Mnvf!Tm9u1{w}?myiefk-z9M?9~(se?|UWs{oNr{OMcJpjuPn4 zp82<(TcwbYIH7A;`~6JKAQk}K5)sP(n_D^UhWn26yM9)e|9fHk|HDoI0NBKd^R(Ww z3Rpp>A;e6Se1#QE6kOrNP&d=cd*}SCHkyBy68`v%_S6LOL>Dsn-xS_a zeG?`6{4Tts_(ALZ(Bb`0lmY+qe{;?EFQKZbsrh-m49e|qJN-I}^*x@5E~8OeV;aQ?cpvH#k=eyeZ4?T~H5Si0?F|0}l0zrN*v|JB}~A1?j~ z6EP2s^_Z$ECF`Z6<=%{pf2vOZ-Q(=Nvt-+!n5EQDSg+2^i>BwK+LZRmxcmRbBOUjX zYy4lx2Cje4?|gK({`0d1o1?X_T)#dsck(;rOX*$UyQDFJ+Mi&tze$|2pP!_l1~vOl z9KYiG9sK@c$B!33fH&f3Q@Q=;Hd|fttr+-!*6F`avv7^+l#u+1d=dLH`4f~;PT#-l zAx3gppi?ptb9F5ueUXqM5CSV`Oh83(nT~();st@Yf$iYWQP$FG0OEo!AiO z8*~*G4KRt_MQ6SMgmZCyu1j7 z2^3AIJBqIZ;{``^(S4GJG$ltmdv*k%i0tfukV~^gQf>xVyc7}uQ6NEql4X-X;W(3F zy-7sG9~fas)=$w3p1$n9Q%GpMb#dXDI}e~y0gU>JFA5u-kiv0|3C;VT>^FA%cYFH_ zmBJ|piW@xb(r!$$PnLNMO^`H<{GM^y9*_+Q2-v1}26Iwt!vRX?B5MkA!tAsfFwy#T zZ^S-2vx$gIz`Rd_!Y5(U@?*|4+*J^Y_JYHL#*^eacdi)twF*4|$SIGNL)xGp?(l9^7( zt}{_yFn{RN6A=FOfu9Vr{qnOgWOWi0wg}`;KqCNV*9dAHKTgQj2rz^|TZ>-bLMAZX zh7GyUwSo1O1$T(ABJKVh$_~iL+%ant`Qb;79C4I)x#q4Yvx-eXfB=rctR9;M{l)3F zjN62Rlha=seFi)%a*B$I0MerygC1!Qg#-nO0>}ebe86CEoqko}57+?O?6!{WyFQT? zBDA$0^^An)db)DG3{Qz2RZ68q9COp*wcJtR^d4LWsoq6rrEn?+mWziut zt5)5T9*c)cx8bI%6DT*ViGV@KbK&iCn>q`7oJW6rEUb6)NM->XZVYhYO-W~WcbQy* zmCL^IC!5z+uC65j(S?jwwvuv#3jwNbP%)UB95`@U$z7V}`wm5X%2|=fK}l1r{%4P5 zv=@YOu6-FIMgg9|ou9w7Q79`wt{D{3a8#ruRS04*(uTn*iEun))pBBx>D zZX!^%7RrOjyx!E&-Hv4j9U}XoJDU~osPErU4Tm7`T~Hz^Tf~q7;s7>;Ge9hcE;zNc zpg#|QbP!(+1eXZGG&D3c@}rNw5)?K4;`~ye*0BS@#!?8pn&?|{d%Z-*XO~~5CD}ZR z`&XaX59y{kD9u$3i@N(m!UmD${KD7#U}{%58Xsw~V9GH_RQw-W28MWvX3*)C;nK4O zD_AYTz}rKDHrra)f|%_s>0_9GEd^f^5G(Nr5==-0vIJ@w>z)J_BR*`brd&>HruRY3 z#&QLh{ndm%>z)V~2giY{9Z*)s7nYTmv%2wYU@FR9;mMrIyD*we>*55f8-~ zXb+Xue3OEr1Mgs}ePy>p1MldBkl=~U`bpZPk}8!Sy85#We>P~}+cvMB(b)~vJM*l7 zr`@A};}+_KTz!T*iOli%(DiH9oXn^)u1LRMxvb$-zJlvG#`u~`osy>b{&>lMHz@S; z%z*@_c9UvfD_mT63Zy^1)eRX*)HeptA+tZ*{ zuQw`z90S8gsI_%;Hf`A8&~aT1*1-A^K?w6gM6GU_oW2?H;~iAKk^Hb*C#O|`hI}$c z_<|YKVjyKCEC!augAaH2JcOI4C3k5C8_7XNb5u{yvnR}H|Gs^jWIc0SH|_z)iBapv zb~pVf_HgJ_yHfR{#=sWbuyXZkp=XuYNHLf<4n`5211JNIO2$-xc!B?h-QL6-RmIC!mODM(AYA=**e-CY#D`etHhLo{&$vbXUpD9+J7iB=$y{kBiIV z_028j3^zd&JqojUul3m9>Rl?*Yq3%hEK6aAeTQJnN&-t5`A?p6SD#beU4Be6`Q-U# zA`vyq(9_csF3(U|QBe#;xDO!*?IMa1BV}9LlpJd4QD8`a9{N7{)X!bgd-sDk-G~?& z#3#ldj^;~@i@PbUDxHK)e5RL>b?9cheYI|I0mnm}V+^^NQ3bupfp)HlTl1iIr5)$$ z;a!NCB8glr^JCxLdMtZ8}P2emR8xJijVBX{Wf8E$~e9i zJss7rLrTSGbuYGcgor6h^tQFN!7kFkR(S?#oG9XuIcp@BrR@++n{A%n3p(dO440Ah zo;~N?)rYtwahe=EcC6BCyO(ABI(|^;$UaFz+8K_vDbOLlzP^F|@K=F(5wna*J^t~6 z{~#({V2rN~w{P3_TA-g&Ace;$ZPU$@N(jFnkUHCTE>!XAL`{wA`Ge1RCBMpawz&D!pPGO)y$gjN2q%sf-O9!mbN%pVka)xG>^w7F&^iiYe{MDTkX$Eh9ll^~_4CDo( zPO6@V{@kQ!%|7txdb%HUy8Op%z$a^5lmsh`0| z;@a8Sc{*4D7M9XjRGLJ_3;qL(N`i{b&a9g_-p599+S@Ol1<^C6X<%Sr+e%13G8!ZB zBkR_UVcj+)b=XME+84g^M#YU7C8Dnf8h#^uvos3{AlUcRTjM5dC^4 z!`j%hfy@3>!cx-rXSMsJ#tObM4&&N6!WP*@ipk%)(KG+;=6$#McU-YHI5fkndZ@%l zA;bD+bIKmJGs70~OI)!N=(~>=`SRs)7+E7X41x?UuE?(Kn5W&0OS^;F-qP|hZ8dDm z0;^4F?6BE@CYD!FP$CPvcMky%8so<>Sm8vf@pYW(;fF)Spef@A8%oV0L9&n2RxV8D ziQghU5hd??IzO$Q&{Y~*Ll+188%CO_K4F#in6ZB#Q>2_K&GN=+x~@%)U-RQnL+1TP zcnRXziTguyTVFM2@YVgAl$wmuQi{@}Twz!-B1lb{3DN`tC?kNREyiTZF@Ct zahJ_f;1N^bb7mGUc6JjmuTa&tz>dL8O`TdavMXGpj&8Mv`JdhWi*xsHFnaECyE=In z88DaF@;gMsDsHwqg(nrY&u-r}kYqs|PV=#I8WNvxlb}KalMl@sc6Ekm?Qg2Fm`|Ob zFaJd`9Iha(SlsY9!>07xHEq#Z84m?6j75KU$~eSiQg#IiFT0^wiP$ znf34WUF{aHdAZ(^01DhqQc1g0#4L4VKA}EaX;JrkF?9b3eOw6fLmjdDmjmbDPzkSm z%dHdtee3wqm(EkA5$}B2W9Mw;>kVK*NoQloe_tQ=qAJovWDjr0n5t zJ}IcA;CzU;sf}=6SnW@MXok>>QYi^wCh{8p#CZ`tlYxvx-5 zqpB>UL@+piz0-T-yk-|aJa;U=fqfV{xh>4gz5wgM6fE->hk5HNYR5Fo?RP1#(F8E&DXfhCQjvR=nl?+x2dtl+d5mIeK(-JYtd9 z_#w$EgQ6Pn|4zx2=g+5FuF!aD}5KZ@{ZYsEh3OTCgBxtY-P zS4oko$sOo;FJJV#fHhq%A*%7x!<^Y-Vi%RBEw?Qn!M+sF;sjZV!rB}-|fPU`KN zOO2R6WR>&XtESq7cL-3|$Z7%bZfs)06y8-qx+}CeRU&Jh)%OtRWclM3)R?pNhJH{; zIgGukV=+tY>PDsw6tLTq^7a!(rcoiBU&s|tkS35H?5=0eo<;tD-RDCq-?Hm(YBjC( z>KzxBUYt<)H;)UK*Bjq62P7N^I3^OlhIrZu?q-~#qPFNrHIXIhhx^$fjCt(YK(ztPC7fN&{ zVoNh94C2)_U$ZyOuZxeQ{&vJHYf+6OBI?C9R;QnR=)Wvz(u+vHf_c_D7M8vbh$czY zPVYy(wfHrE5#wXqU}b6`)IzinBI1FBO+3W}8shy_HE;|w=eVOK_e-yG!q*)A(NZ*;vzY!SjS3R7RF2ANCp@{+7!IqyH! zpOz-P7SH=}z1zsPjW0wwhDeZ5SYvhc)=YeIrss@|@jzJIES!eXm&A|T<-39Z=3pmPkHUYeD>cVaQ5BF)=YgLDevw_)aY` z)9M!s{4R7t#ud(=uCVXFPGX#ZG(0fSMcXt~mgEV=UH)v#@C86Znb630!Hq?U-Plo} z)wsIru#lb(8PDMO-Ir30CZAkRV}7Z>e@9*JbJeB4c3=F%p|yeFBvlYoLj)bvNWwNqDp%+uQJo<3 zK=-N0!zJ<=PCkvtng;cW)+mg#A#e=>V+*wOMVDZ84WBHKRBVD)$Op|7!hjC|dbV?D zOqh8EGOBQ{pwl}JoH0S#CDO;9*AzV0s^3eCXyaLqNmo!*439m${ zKimox(@$%cR6n8%4j%PaU_l1MbpGP3Ea&sC<(U1|O6=wcZeYB4QzG!(%dzS%tvw}I zcYfM?wL~b&4HvyJ-BN(!DSzx94Hkb?w8DD*awk z^k?2rF>Wv*$;)3FeW!LZVzAZKqdd`D%s;5%Fd1pEU3=45b&X)jt5>_E8UTU^1_mCK zwQy$0e2_^u4re};k6e{0w9QA44khv;o3?H>U(N_{|AyfJzCGA5vvz39^Mo1X$L=UC zFBj5SDS#**!VSyWTzA+-0?8=dhxcCIzJ7keL2Z-G+siX03uCpfZy8)UAFH&J(VKKn zI)$Agf|T~y?(v*SzR<|=(V{zTzH9TQ&vzS)J>(tlcjk;Vs;c(&VAv4{#Qc=C#4}(Q5m*ZBG+Aip)Wznb_)ICa~n%1^tX5 zp=Cy$Ou<3n95hmTaWYH+T5D8X`xfs|aOBdD4K}>6i&_3PZD-z0jiuH|;_CAyt5zFl z>>PZzc`ldDoAs1qwTxv1^QUg7sMzK92j!;=^+_Y6=bw;o@uWui`qTLRt!5_8&`afT zH;&&4mJJcZF4fb0PWvESUtli+eTZ5?RP;TfP<7XU}SsI<;a>m zij*ggK@K-E={Ksr=iD)p+?4LS)Dp;Aq_j)TW_<~@VRG+T9bsNwD&`G3ZwFMju%yh- z#U#YaO0G?jVIMhk@TB@vQoE1vvo7pJ=)1g!Kb4-@ue`dq`bA`wV8)_j<(zn*1?Ap3 zhQC$#gN#y~0bv_kl3o2^5<(p20woAh(=BD_f;t_H^I{DT`R@ z8eYAe=RnwZ?nJJQI-yo;r8LLx1JH?8*i^;H$$hxxYhvakWAJB%SxJP|86g@R{YIGV zcD`;@%7CmseAf>%H15+QEY1;9E@NO5p0!4Vhv(tgfS1Y4ky4f&W;Gt3K^z;$Vo66F z7B5L+bPR5|=AG=K(?D&&MzU<$_fT+2xkZ7~GaZ+dKmwwcohPklgkB8;S8>Ou_kx*wyWLjkS2gPKXSqFNBAjeo=e z!Hbk3qTtUgG)TiABkNc>KW}2n=yg`v@9FZHX0M`8Ah? z{(}wul)+$z``%N5Uct8j_3ZdR!H=4ageO+#7Ti{VVUX~tjPzN`rk&a+su zs(dipOuxvpi)wZv^7_3ZgC{*@pB%`-js*dMcHgrg z8Xyxyizvy#cB3IV?DXv(IJ?+X#NW#bM96?y#F^X)b-9k$9Jl!5=C~zbjGsGqD?(m^ zwt6F*7wM{T^!}Vc7lAFc92|UEJn2%~qfTp{s_$W!(+JI?U$5hSY<*P~U5Wtv>88vV z>*ZAid=lUA-mA$;Q}%i-Cg_#lbmF66*~*k$5q)?2P zQvM0+k6B;p@~-o3s8*G8^AxdnkuOS+%wL$Rp1eKXBe%qhWyoRvm7_=VCcaB!OnnwC zeUk4D7H8c=)2=G@w?Dbk**klm>Qv@Ia*|^uj=lGB9PZcQy6$gve;>c!zaEZre9n75r$s8-4ckKd zTJ^u2Q5BfmvnP@7@+~YSRHE&y46j&+blKvQ;f@NOJ>a;dFuPO>;U`oeasDAq8PasXO_?kozMczCPxa#$IJpucD>S4_ z0FqXwy8u8xYWIPeIBGJpypY)}6wESLH1;$7TEy zpl}pBWI#^Y8nC!`%lfG=4D;)~f^#iQ_7QMhOu#LLaz}6c95N|!d*HVGsV-3GTT$GJ zs0dQ8%U3uMsf~B!G39hujb&!xi^|(MKz$Ft+8qP+fMV*r2ZkCUqU z?bdMDqVzX*m7oGTf#DgHB|MXWh!(3b0?qO3M%3Y8CU=G!x)nH>Lo3+nJaxEjAXsv9 z9&i~kga-h!UV*mZ5JwIM{sBqPme>niExP#cz}sgeRa)bCFU;pI80@7x2;t_(YRf)0 zGEoxIBk9UBIL>o(55tCh8e$X#s@YBoyy;e{Ng5n&T#g7rtg`6z=J^D&g9ZVxRa6j= zYsP#TUkmzOAKS?UR}WqfF`k2FVRbsnHQ95Ya+Yp}591*76++Z8 zO9vCdF*4WMtcmKAy;MEeSFFNuDfOU!E>AbKBLEWNO)%3GG8t2M@rVOZRub|wz?*}a zY&ijkS<|b%+1KEhB5;K&izc{HgNw!oC!SaarVFc7K@CaeX1HQ1eo_V2G2cf zyTw`)qD$^1$6MFFc$P>O#J#~=@Vp|(SS1h!y4BqKI!u%C#I+K}wj1~FWqOcAyvvYz zKApbxNo1jxDTw4c|8m!IZGr&5{@_>~Lr0vL!;fyBVX~>7`+d*4JCFqT`vwfzf+)s9 z%(aXMwA1sI(x%erQCZ^kGi9@tHKslt7DaexD>ZuiV_Ktd(MnO!7ENh*u735E@ccF_ z+nqaird^E|gxo01)GffY5hlQG`MWF_NAFCR4bWd`%S$T!7cA%>PC)pvdGp)V+myP5 z?{`KWB4^g_tSKaoMkuTXioWmK+f@5!!pR)l*2)I^qn)Y(!kj|@YU{91;Pjm%X zJb!pKK2P_vrZPYAQlrLq`)9o3=+!Yk*W~hctL9EN9^?RS36@=uF?fT&Q046@_lOvE zd;=dBZJ|sgO5VCs?{2w#`rL<#J1)Sez^&~VDm1>dg#o46U(a_$_-7EakS2CmY0%XW z&~-1@Db~j>Nb>QiaLh*SEj?VK zQzlqdRWfH5>4&v9iM9&MU?DoyRVR0d*rEa($4$T2W^%_;_g#nKi46W@W`A(}iT2i|QBe z`-D%ouyM9!$Bo5lyk@OKtPv}DVxxq13VRnTGn=Qvuq@XrqgNqi_PFjsc_K08laNl; z8PT+&Y0)Z=Kr@+S0m+%k=C2Bf7~+Y2>;2`Z3Bu`V^@%ehb7KXoQ1GSPr0{<3n&V?6 zW)Y*K;3oR)?o9proaz^d9{Kfn>q@@LL4mHq{W68F9=GI)Mf7BJQ}^OTzSYzsNX_kq}$5NL|9uXJUt-0z% zJ&y|s4FwX5*D5+MoT)W^ZCIUM)nmTyC+jPgPXtEnu^?pi??BFyW|{kB!Z$!!#Jf70S`OUjsP{dI)i|+;3hR~a164x2^S4`24we!vOORrg{R6>I8rw=bO z4;L;EHlapuUr06in6fdNh`bP)WI5h~pHV7JZfEUU*t0rnVWX)yl2;k3zb;o1(L7{T zNaH*_WhnCo8PGyTB&OZqjWz!N_LQZ8mqAjIt2&diYHIFmMBt6I$in*Q#>PgRl~!_3A-a+*v7$6D3{0U_G!wu6 z_pgU|;s``#TsnQeOz3rWW}IrD&aHj>XaGI!xH;p+GX{z=B1;Bh*BKUb#g*$sK}Aq0 zK)G{O$x*^Gg!MQEv)3O?6w89KGSJ^!n)ru zqnw-v{fC6x5g=9{{oO67jerLd;N~}T2`U9fZiex$IPaLJm;2Cuan0o;oiPViefHAh z#IlxIy?jXfim8i=TC53loqeT_<9etXYkr1F>5ih2HOmcFCXN-ix;3=q!XhcqS%56S zXz_GT`a-_e8S0+%;x$GC-#ELXdMp`H-z8IJjV~e>v&xPW1wQ|MQP_YY(zSc2T`2(I*Fe3}zx2s5)sthC4$Guq zxGVbjfk-jJ8>QeUPwKH)S7(Nd95B>tf>$?i@0*h}9~w?EgfOE2N^iw`n4Bp zF2#JQ6}o3Wux7fw+V0UpiS;?l#b$r7_3XUKr4V= zR13rnQ%1SIw51tV0Ao2C;YZrrWB7m zGzZ{PRavccAajuGOsHm-DAMiVSAO=P%SE{WS|Zdy!zJIkuP9SdpafzMGExRZICA$U z9^0*wMg*3!fzKI0fs9M4%}YSisGw7|ZNnDEJEkEvy%S_Tv5;K|Xu9?!ir*G)#FT3% z+-1bwrzYl(R=7=8KwX9FY$`>8%cq@v55SCM)w76z0w|8Uc5`|ifT)7rSgaW&`hv8Q z+JhagUG2R41f8hq*;XKDLs6J#QV*05l`f;N={exM2apG3h=M+9XwG)-a&n~$LY1qM zIsE+4^(lSO7WfupqJhhqoInt(WXyOra z31Xx2Vmi_q>axzkK{J{*Od#t#eoolc<7JiLT$@t;sl3qkXMjJ#-uLC#js>waarlfe9e!PY>dqC%$xhJ*)Gl`zZFt*B$QVPmC`|R9 zZ5Xl&y)c1>3<&RVy&k-kFJ^uJvYlak^g3QxMne>}o9xYWeKbY1pUA5vqES3J=J_&Q0r~Ob?rivNzYDVfimed zdy0-g2WY#8u`$c@NWz9bi`}w0D)sh3e4QiUk_`s#0L5| ziUk=GchnzrN3R6w+^Y5jozhqj6XR*U+Fzr3f?yV4Cr@8|KF~z((HkgY^cyZ@Z~iKL&P>nE+@rWRyiCU_ z3osP4c!5M7k~}itr-vmgI63cYRKB#+@5=e<_Or*7QJsMmoWGxO{UT{A29 z^P5QrXvS!%D&L#%dZ*re<5L=Cl`H)BD%9>Y-7ld@h~r|MH`VD`sl!tpeIQ#}G+BMp zApwu>|A@Rt-@O&i5a&>n?4Ve<%`kP**`^OxwRl`(cECjtlRay9eWAC6oTS(s&DLwErQU4)@_(#Sd%+k30H&8e^_1}((&Wa+pWBjYWq;S{kD z7f%!#E?rb+CxW>K9`5k=;wf#ct0M~vkq36_8P%+c6sILuozD94FyaSfh1_r-z%j5{ zQ+dA89_ZgN`z`u#oLTbLL(IDAqsfh8El$*(38WR-OAicla=@)sO!JqVO6HPfKVcbs z-UkySInw$*%gEu8- ztT6?G$?n>d^WIWdGHqUu-=@qe?Cj3BNq-3#dfQkBF-;RyGXMJaO^Mp>0QN-maPPBMF6vc7yJWPu?fbPCWW3dSFmAuKeqZzCuI&S1b&NVLcPiOHMDV zYC7`K&!37)g>;&$HtRm*CVyK+9x;Gb^VjK?oS7_ZIhRB3Se(lw7S zHO|~EOdab+q99;X#B#|y!=w57xXeG%;Z0F?`dV9F)w_2WwJtUW%xW;(X}1jpxZ7|k zzW9Dbvf;?bgiZfv9-(oPAd#HQ3i)INQ^=zYVnIIc$lFQn{eNmYT1?xzcC7xqu14kZ z=!~jBfN03$%~k}^&4MDR;OqKfOm4ZGkG^QYSPCGNr%yMf!goFd!w#+1qF5xd=!b2U?MXs_g?1_S_N%qkp0Ww;v>0>EclBv@x3 z4bel_>79E;L?;l7PNV6Gxi<4|6D^US2uk{!rrq3||68B~56f?enxv9sV7S6&T)G}W zL{;gcF#S0+IHk3UZAI^Kk0@j7Mkw9gObbkgEZ{+IJ~pz>ZyMkw>-ZEX2K-aucw?Bh zS-5ES>xq_t9F4Hgw+!Yc>Ip4c1=Ze$+q3hYQiP6+m>YzqteB-+(vU9wYCbi<03OW; zi~SZJJYY4Rb(pxl^(9`h+r25wX+J3E+XW>-;OD~cS+Qca43xo7%8a+(GFn5XQzV0w zE6nXd%fdu?nVh%CJ*U5lRxMd3Hgq_KV*+Z?PX^CY%*nqmT(o!=wgyYoxPAKddd`_K zgWbUi{MOF=aoCgimFcn0{-eB@dy5kA?q+kyAGj45<*JxVzzwp;i$@+Gn> z-x)|7RS)D#q)V&lT;H}F`kGRb^N&W;kM!?YJ} zX5scl7PZb%eoc;m;+2>#O^|YRPUfbBHhkjVsQ9&;$4{**<4u5XrnVP-x)&pTAWZ@; zrPZ7?;l*Aw+hTyJPL-x@!^ z=v5IIK!B#_6vf1CmpN10U*PWMK~O&=~#dIF;}!CVGva}b>E_e z^Ft_=i>K!*cuLsZ+&~rw$O-k)$iM`#-&Qg`>cD5O;$+6x==}j=N8t*u$3HAjwKzk) zH7au76Pb{w&bud_=qyDo<_A#`=zSxg5z<-8fc#lvhF^126D=dK7O(k2qYQn?fSRCeDd=uQdzuPRI4s zP6IdyhP)+F3AoQz@hg~tN3_4|Bya?E!=_> z^BFNB!K$(=uzxJn19~|(6&pU{cD`S!8kf*7cSx2U!4m@HT#$nwMn*=!U;$(^XojH% zW*I8FwMjJl_6;@1fornY-`^h+lfe(6J=xOIfPDSK;O&A|l$&lF)yMal3ztcj%k8#9Z!3zS8z$eqrq`%qb3YtJ zf$%Zi06T|=c-9?cs?XX4`#=_}E=B1>0a#gwqyt6DIU{i8zherQLu(88Uy_sgd3e;G zA<~skVl|q-0k};Oyk+9R|J;Rr54JJ@L?}s!K)G)K^pP1T0dmu#Hm5$orW!EOP{XNbK;y#48P`9SPS+1Vh6FrF=q7eg zWYBkGeIt&&g#GC@qfez4Tc=9bFF)p%pJArCpjENFq3;Q=YohNI*xz+^b%D!;e*qW& z^XE^nKV6NN1Z|U56jXN&rmnU#f{zSntmTm}reOMl7wAZU^(omeDpX7Q8!*|Fj!3|N zJoa4hi`BLsZ=jDt6e#&~AYlgEk|J=tX-nWW>T#@PFBk^3Z|7UnK#w&L_9o*G8B*NL zp(11EFxs_9-7wbxdQs-ITM^&>$5{|Bvg@9M5=yQ9gfTsm(3O|Q{6kZYHIiw2@8_BI zQT^tvdDzFYBa;<_jOv7vIWSha?eR=M7D&zMYp6F*r&Jsi!3zZ@I^L9=a&B&Jg_B{B zb((Wm*~n{k!K%0inCRl8wP;XG2cRhQIVCSI0C+}IDL~_(5TMbI66j39s7SG~v0h+l z_V?daY}9aTG%@lhWWy#VUd$OVk*2c3ATT-35Q^1yo0hcHhI017D8;b!N$>sr;4Nz* zcTtPR@nsjR(Zwbpxr?LMyp9iSi2s}Y{N_?WGj@FY-8?h5LX&%v8aC}ucIY~R&5*TZ zF%E~NaP+?sLb_ubHX1t8GgV5shfT0l%fKR5m6r`X!{54)V*rMa%{ z-)vAAV^7QZ>I*>zfO!VZhdYmlV$`8JoN?BZydBFTu7yI3X6x#r{^a1+0sZ zdJg`-hNdPM;DxL0K;$R)p5f)igF6TE|1u>byBz@^cH(d?1c52Irp4SQURGG;X7&rJ zKhENd0~~!f>4Y%IQu4h?ZbY3Akb*lwcZuQU3~&j3)%V@s-2L1K!Fm4>7sx-xjdUC8 zKy)?xy1Th6kBe{CMs26VqRb76*iP=*{*0}|n8Eq74Z`h>@zX!hh+O#^ZfH)_*sPpQ z=OT2eq=3P{jfJ(Q5wJ2!7&R>VDqRu~zyLCdbTZ6}Pxesk!xI6b;}lhG2})utl!_+E zAc&!7Kk#srB@-0yIteTwP=O`ygebxIf(6=#3<08R6tQbhiV+ZbgoO2lv7Kd!jzzeOf^L1;ZU#MHZ~Any@$_{Z#0y1ltGN$;oMgQ-y(*l?0xUI_5iQ z;xuhNfT@%Uk$o+t25V-D5Oa}Y6Ge|VLCYNS75QUr6KA&Wm5q5O%W9a5Hd&bxz9UJQ z?s8J1nz!t9I#254d5iF0-%f@w5G7UHm7@rMAII5Kr|OdaS`u-hZppimJMk8}&EniE z?2BBl0el?P$oR*-U7I>j+!B+a?N;NKUC`S}RP$P7aoRc-8aq60taYl{fuE^~aa)Pt z+^j|@?}ow{U6KpSwr#t7lrGC^-oaETsj9MrZFYVgdCsK(j*8YJ9R9Zi{<9as3G=9* zv(%(hsG8FBM7I&C#j1U)Xwok}prOI?x|_DulFDX}nN_sGq1G{t0N1bhL&IbkRickA z{+y6PW#xPD>6wlqbW0NKAw{7w%FdrRzjk9}X7EAmMj!j~vXi}b!eR$wD}+q$nU(&1 zNu{Qv>vd}l*d1KhcyKktH?eQ)0unD-G~6L}zfGDIWkF|oscN5$-HBlY9zSwt!=bPzl(1UjspK{H_f@$w)P5VZ z;M|!VyH|7Q@EQX7ZQl(10&Onpco>m3E%Mn+zb>X@{_iomogQ?S0|jWYpxv88)$*=!l~vQ5(C!!`rLD5a18tV+i3jJNxdjYhX?RjVbT zF`HiiH7)M!O7g+9%_zJ7)cL@Jx!H0fda$5c^|e~p*7(G;GzHSr(k@)^`@etq211KU zdpTtB&)d`P7r%>a1zCNg`DgrYeF!hUWGX{Ge#X2t% z=62z|vOp?I$IMh^M8n3ePQ%uwPeG|qV~a4b;8ym1%v+eU0k>|@vTcn%zY(zY^K>?% z?J(Mm?AxP;I}T&s_u3*^3|CxMOAPNeuSP`RVql24cN)^TtXRbO8+WwXROUE6$@9Oe zbZpTQVTWW@m6-@npDw8u9sOz*B5A!NzfXrKn`!O{^xAHk6ttuTQ4XHGoJf6O zcaoy>jBn!onMPl+n+)M#eEISP zi<0)2+^zTQv)Qeq+IF&PQh= zQMX2@co9b z)KoIvmbBRV(f%gyD4}Ij(1SsRIv?V|%Z+1}dUiPN9IyIO!YfMyc|p2`HYlc0?nZuM zr@=HndtonQV`Gz-b-h;^ADpqi@hInVS~4>(ubLn7aB!NAtw=06knd14miuwXP=mgO zV@2(zfZxZ&lfC`b zW}ce7auhk)!X0^2l4P?Q@tnWTog|MXmcEpcf{a9E+P`o3V7M`qkM%`rNNBKbu&|dx zHzK9qPLkJ|QPWXAc&cTcW8>?%>3#C(0k>&;dY>Zom?^ebe0;odSK@Ko>5;#s8che) zB5kzsSmm+H?ucFUTPM%-^!p;A25MjYToV%$PZqUKWq%km$-d;gIuyvDIB1b!e=wiK zmbtdwr&YDp`CL&3)$KH1C5)%?m>W*JI{M0t5QmWP3@9L2c?C~ET2w7NIkki94hOQzX_X?+7$ta%vk4%-) zc+0PSN-a-KGfQSjs`fnZJgC=+v6^Wv+3r=d8SlQ)(a{k^eXrPI(?H{Wwa57}xCO-4 zS`#lg9fOvz%6#0t)o!6XWo5SuM-}tS2Vx71*RiuNYrR4(Fm??UlB-D*+V)kk$i%N* zx@KcJITLPHh>695I`d~;Q28uB-xhsnV|*pa)%mdSDRx>-*rbyv+o~!P*PEW4k(m^7 za*c|)-@VPl(UwyIOL%hq>?c0nL&!Gww=WxGBa6H%(r4CJtdjC`4*E~ERQuvLm#dC8ntUjE zPh_%U^}ZFE+@_(a(?1s@SUq=ge5kP8og!zjk*+gvu)U~d)1x4+OF+q`ms)@rcNwf! zR*17WZOy$D&&|s#vsv7MMO59+coNsVo01gu^*c)&PuwNS5w(`-rr<+mq}H-|d$`0Z zX&{MiAV=5xiL!og>vN&xsp!+AB+H%8pQ9NgWJmV)_B!H3cNhDzp0z&fo9>e0S8(1M zG|d{ZY6hjc4|tcHN7ynEd&(<@l`OgMn%cjLR5e!h-TP zPiM-P2<7P$?1ChR{lu|c8gRTY=R~O-gl|(o4e%TMq3JEU!H9Kdg@)$YyfW5cdiKj> zil=1)E9&AG+w~0n1KyIhA1EX-zwoDytn=rqNtI8TIOGfEb4BVD-*&Ns$ z&&y1{%8_#@&0Aik(B^clLW?e6=Qz4AHtX>G2FRt0FKF!SyhIa@@#8l+5Sv8uK|jFX%wkAG(!&6^xF+ob85!g z_zsuQ#k7)VFt3~VJKb{yNfTsDUN*g1zGFw9?MP6oV$69{f+eS~euL!e(Ms7W(fmPw z;8i`(a4pyUgq_4Y8Z=nv@b(VJPBXJCTbV0b4=Q#?Ss0kq{A?0Pm^9NrolMkyY~$UH zP%xsh|9!^)15(9;d+ok*j*f`Dd_bk~sKaa|y>UmZ=b+Z>v~>)t=j?Vw0*eZ8U9W_H zoSsm+an+_}RhBw#FZA~-A3C|9YwX=|R>If3iqg6H4x2MhD<$aN) zobHGkc0${?ds2#?g9WB#@(lFeHNR`CcT<)}%68$JJDD_&33T_?#%K7cS4idpl{7En z;>r~uPkqUZtyviv8MW{kDR>>NXPQIBi`aTo#~63o(>M|(BU9hby?b|dQ~Fo}tEx}K zPU9to&sonysA?VLf)x|JYG!OjtL7H%LItCf{`{GRJ={vC#*1TBRR?R(rM9)G+1#II zZ%4<(_TX>ueZazh{M+r%4%YEKjv=dEcu# zZcZTGZn>p3R;|(Ar?y-@*~ewLRUl%VclC4|s*R(J&w}cb@ zVVa?DL$IUG?Hui$1iN$je1ie@qZUX#Wlx$?U%OxZ^rj1nqmWM^Lr1jAo9NNb@=zbW z(A;gczKI~UHyv}a8|?+Ay*u+m^+VXDrzeNR0!$jE)-7Rd9_I-Pao&2hv&E-Z%=e}0 zxahZ6COsK*JzQ=j*k0tIJXSquwr9&F;H{l#rL^`1|RSOTAn_1W}2sVMav9Z&Jr2u`^w*JJWG#ezePt6LvZ zItC}}{nKXL&R}f~67cP54;Nb;Tq?C&9ToD%5B+4nz0i{=%w*Pq#Cpm;@jbiHCnhT^ z3r`bP(qv_~^wmJ_@=%c}ZQHJNs$Uv2b3%e#lBC45XAjf1O^Y?-OibSKI_=D{9Jg|> z%AehbjlaP1tg7}LK1K3()#yUC!dEgzqs11wC3Gp}E2WFpx1ehIIw&0OEVm5nEvx&Y z!W?(POf%QnUn2YcIl3ROJ&>iGt^tg}K|Lmy_@d)?lo#PPa-kqSE`r{PHFowNcEuI8lFC_9C*wiuIr5E!0ovZ$&+} zctTf_=}F~B!6{2JSXsQjzE1Y5r%t2XK8H;1UVk~_V5LFFmSW7n_OZs)CdTU$d8(4K zr+~)9)_hlKqG4N9pc_}XKZa_|KA=jQ5)IeMr%#_Q4BK#BLvIj_vuBXvnV>akSyWS8 z`et9%NrBUZiem@IG4%YykPGUAbSKXhe_k~t5w9m}$MB5bYIRe*Z&agY7%)u7+2i%7 z9bq%=r6rXYP8K#>>d*0^G;EDX*;4#4zFag``DTPmzrB^^%kr8eX*4e<7cZ|1^p2uo z%a6I;A4!-}rw&)E`YgOJktaTLg!L!uk$;mc^og2Zb3gHsx~IozM4%;ov%>UEA+LT< zu82ok#!ZUec@%cP08D3Kj=|GrkmyCC6hy_|MDw}uogQtTr*<~qm})o(OyrUG?#*lb z!hg8LGF|0!BT$avekFjo2letQW_MFr44SWF7mM?ZLAQX~OIxepmNxcuJ(6~`}J^7YQg)~9Y>!IF+=OiV_@meiGYCBXM>PH8@ z$=dSX?Nr?-jRGyJ&j@iCn)u9ryRkz_nr%zr%nH-Hwv$_~ej~?rS#^5pWz5S8$L)>c zq85C09J8`zc7G>1wSrdzvJR#0mUUU4M-Pm&hKGmMtt=jhHl;Zf7_xoId_O&R(WEG= z>O|FdI9cZQ*kJ$?B9>F3AZ<187%I%i$k@88^(2MB)O&%7EcPKyDWmvL;$4RKN+nk8 zm;O9N42)_#7F3KniZ=Vgd9?se)qT;I(aXQNU99f1v-jR-eHm=z)SIqye7LK`p2WKI zyV}D6|A~;01lwyp1O2e&=lDy(;g{t2Sy;MU#mS-Y+aZ~WR!eXgC&R9KM$NP*>UG45_>>=R&3_9Dg1x{RnC5rUb~)OF)uGU|uT}Gk)|KoiSxp|t ztvO0=+vZRf(dFN-nZ1G2(i>FFgqd33TCF;*+%fRW~tB!Zn{7qkS0F(d-%;@Q3#7m`Ws4*reEBkd~5}%Swd6fBNg=EClNK2hC zWpN@b%J`J;p;P<*sNI+gRLlbaV!c^fS?0s_f-RVoe5JyAdhzElx<5YsbUns=fMVpB zW+p~bdO1!rMiBE-PKe)4DVrF;B&xauhzR$^!P8yc-`~%ir!fEfV@xa8r#|N4*$*D| z2KOb4Zt*Lgk-YcoP$)+O_0{BjFkU_VJcDdLW#U?B$bQ~ljS$8qLGPNZ*n`c_xFn3U z7xFgzud+JX+&MK9O)GvqgBZ}eDk!FLIM~`2K9XKe68m=dz^%W?EL!gg1wwm{jW8Ct zNOz(Hxz&4cUM+&70hiNjpLq44diL#jJgSs1&uu);&ZB){Z1+6Nlh+Ha?oUrYiI z#PM{A@NB}@5N~dS;){R%p#bwrZ-$ygj1%QC^pNS5k+L5AK}Fn&3E^}Q;2om)}D8$6Xm@nzuE;>KvmwIsXreJ*!UqK9!a+WOHE^d6Q0riuPO;8)U za&$#^%YLK^9SmG*9&u`!kLI!wC#l=TZ4n!=v7YM=koPB1@(um+CFY~4=0xX-$tAIc zvo?unR4%MPNE6&hpQ4ba7>qD#G*8?t40&fmXWEykF~z~f zw9cJ0`42|>1Jpd4?2@lq(B7&3{X2*Bqe{9Ffl_wY#hDZ72$E#s!I&RTDDFz^jRd8= z7tKHJdU|7!x%+jNoy*rLj;e5!jONpj$^H4>3!gG|E5o2A4CgGdSJ<=eZh23YJcG~= zX*-Df#liku{U#{As9-!Q9%UNnyV1N(g|Px-MeEDMC7ZL+NG0sb_iOK))0+Wai#jFC zCNu(8-maFvW9Opad^BJfJ^!s~lB|&(8o1ox;m(kmQkJI1#WGa^(gOg)f!qw`imoPa zGUu-7r^5zOuX^KBx8}naam>SpqyUUC0?<1{Rd)O7r)(aL8?#cf3Z{VIVQ(9fRcS8) z*M#?d)cs7LD^UUnQtnrwMfQxI^IIzX&>kW^59_vz zi)y_In4oL#7qq4U^iYf;eQb`xoF-;aOg;=1X?E!qy9USExQxNKhEu6C1MZVXR2f4Xk6atlqq+ zcwvXz3Js>6IZ6yhf_H_m&YNmS>jag zSq>;QsK}J5@C-6Gw6^XTvgvVhN4tOYuwsMalBIBC(N#Sd*II>#%UML#YXAKeBW>VrnA%S&!cgx34JLwZ2VYP$h z&n;(A-f^Dz@c|xZZ?a772EnY_mucMD7wOu%#MB5T21}f!^rv zeZRjBIo_wkJE<=i$9E34uaz?7Pn(w;(!EXcnrq3OEcMrJ)@H@hBPkJAb+e4~f0}`h zM4+Hz?&pfXTEVH~{?_pGeN9I8>oZD0#X?4&pBER4ti_@q)K}ONStP2zDA5aae)OB4 zI2~vF$~dD+hJpzqRZsuXaLT=iP`*4oARr$Oq4uxDhz{~X;Fu>#ZJswT&q_jh6McA; zAS6J!^`)aoOY09f$G{MOfFm`sDTipE%U}MT!&CECK^_0?8}Ftl$&^KcGo=F6?f70~ z_~}<~T_3!8IrRD&*0YrQ@LDqvJmf*({PQjd`c7_yXrE&Zz->JGtMY-&aN`|myEG&1 z=3jvcUgmz;KtQO(jkNvG-J^fh5ulsl_y7Fb1Uz18MtHlwuMt=W?U0rPK*ryHLG8Un ze_F^HbW8p7`54kie?UmH+qu6lqIDG?z?;iZD_Str(TQ~}gu-mI*n7>5`hUF=X7ETGuKpX6pnL-dyk_>at$m8;wAptgLy>Be}@{q;F(kaRP?-e6*4x^w3T zy$t#T5Lz32AZUtjX(|7?W9Ebc+yds2x6{-nyN&oieaY=+BkiEu6hU*NkLGc(Tpg`Y zN>|PS{>hM4zVY@vmGpQ7rco7Q~RM(-WuHTdQML&x08gAKtrX z2(^%${Z+DjN~Z+J2&i`VW2Vb58j@7!W(S1suGG z-EvaKWuUeAglwDlXTKEnr&5?Z0tvS_O-V{BG`a(S%X0b7&70Mu4eOKj3fHNrv*OEO zzg{D{^5;ku)-zBUV!HNL5JlrgrV;bh)-XSYYL9KhsQlc+FEHoK>Sz zr=-XwipQbTa(KL*2M-sQW$_5OV619^$z8k3`{G5!R{R^kZUgx$ANL~9tU7VT^}#gw z?~PAepR?A}n?ebC@bFE4MMRZSWa~8bCZ|%qInL<^D?-Ckwfgb?3LHusI)1yAVNYC= z{PB&eyENa4)y9z1W9Xi{u({X#k)t@!unlgp6J7mZAMp0q4@?`gdc_RY*CVAp^qQ(g zZ;p?5$C45f=!8eJUwYI#-6Vrk-;*p8SN9PifsUl&N6aZ1@i^uZ@j?nyxJ~qZ2^JKwz~XH7%i3~<>ue?g3f-TsGfzwhYq{=?d)xR96~0Ee z&3_A+u?0@^Z+FW9e>jL0`DoIeYyp}^J(W{BY+~_m$ab0*nt0PIC8mEJJ6^Gyp@9M- zk8#{CL?9w6TD3E1NQ` z+O4gv)yl&as2u0 zf8M9ZCD%Ir46kYLed;3WEvsqYTX(p)4l>JDa#35-LI2s40oTM^$lB|o9|@_%2DG}N z&v6;t%CJ>i4*~@WKwz}%!F=?|);<0{%PUa+xUJ`;VI?APcUMLZ)3lBkHrx1%{^>cW zsb9^_&5g~adKP6Ucj@ZX%T!mWu3Q;Ek$>~%%|$N^2M33p2h|&%SGoK-uo%A26ZOYj zSf7)AH><4e?KZJ|HjhG?=AFOo1v_o*s7_`qgbejLpp>c%nLx@zI8ec;W=TJ`y+ zU?yZ|!0?y=MMy|U%vyG~{o=)o$jN5(gMTiBmNS5lfjIT5M#8ho%yX}QUw<56sIRA& zOset7NF>xmHZ(vUUpm{icuHV{ab3S!^4{Y^p^hlsY6?uBBEsg@Rz(MSdHHN)TTCTX zul)L>Ie`eLi*^!6&cR-8iXg`)4| zaqg1ibfD4;F>&!mCRb$r<6>5oYiGRJ;0L-07Qe&k^EDqA9(VUel-PlmQoLHQSmYo8VI@(E!b3 z2n3VUqgj4rze%gvl-hAF<^$oqlf6m*ofEJe?&pAd3Ca!v4Vk{9P}~6C82rQn)4o*U zxJL9sO=p{r*MJ?U_RoSzKW0=3ein_}AoVgj3Hyb(ajjz)Bl7$>zByVqg}YjZP#2A! z#8>f*EH+y>s-WQ5Zg2y02e5lGNquS$4{c*(gNVztjefYospu+5t{jKTV*@VI%=hoV z0+9`9AGC|Ki;2Mx)YzejL8$-@CyWd5iDTfcRjBA}W~0OZJXg4+HG*C@FT_%CKJv_K zPQ`I(s87|^BOIXFgaY0`cafQxuM_F%>2UDxMLXxpCWzDLkPNSRi{sy~ui2bwW9;ng zymkBb1JRXN;S7OM&~w14n}tqPakx_UkBkT(^9R|14&`_*e>4GG8?NrdmbPxGuvWMn%z=AGea~$HajTALAvz$bihh_Z>|(i`hf$p z2MXce1IY>!3iJt1hR+dPHuQ9K4X*a^D_dLEX|G}o@VxS?IRK+k1#9eV7LbyXDz<+M z4xW{rIJFUzkSGvGIJpLJ@vSS$0|Op6yLnj(rbL}tegd6m5H1HW0BAF4C=qEl3g%H= zoIjr&&rmsHOP!;}1_n z{U|_Dv~z`x7s+jxshkrl4m2~9gxwVBT>^Ed>S&tj-(!6Nf7E``x4peRJ3IT_B{DoR zR@ys1vc%q=C!pd1ecUB2=9b}LzOl_hcLzx)8JkJSS8C))hDJ%#A>ovJpv*3-@;hMa zMtVj_J5-sC@#ST_*i22!^zrf8kU0eac98h0^6~k5Lq%q7R?-C~NDo71agF8hRKxHo z-QBxC1NOeZ3t3QA%#M}oQfTk@`l_gbySY0II%QBHI~n_{xkH=<1xE*q9p&EsRFQG|r8$JTcDm{|z*1&%!h4den*_3g8Jm)lf|6fuON|8yi{d&A_=_Q(Nm##haS7V_{(t&SBQu z*6Hd8pV}=&^Q)nuflN;3T*gCH=1g&-s?PhxuuWb>Ssm?JG#Q@D$jekO$(8In z+urB^_%w5zu*}^_?86_b6p%pL?gcC+lz_}|Yw-s?D;xr({jwvdom-1LXgozHZ@=vN z_@8n?tBOy}S8h2iZYC!Ok6}JXU27oVPFT4y)Eh8?GH%J&r9hpG6T7}GVg~0vHBoy7 ztcM(}WXn2b#+NyQ+os*g9r0p>B0*(#tBUUBCOz~tTHg4SvVNSe`XBnA3AF`Uge1F2 zMsg{PF*xn6WYmCn6rYe_j9$>hK|o0Ujy!|T@CAnEo{LX~g;`CypE-5WK|H2Ceu&#{g_Uy^3<}VuSi6LpoNs`H#j44%!6Q zj;`SRSv!IKYPEy(SA)7Gv7=Cj5_G|sD4<{-fGU!b?f?!I;AoezN|(TkCkS+Vs2PgM zj%bYUi8h$<>=rYM9EUS1iNm;i7Lyw4tckGAcZaR~cM757XjV9uREdw#28KyQ^Fezx zE5e29Qer*d+1&i1Ot>Rzqmo(o=P$X2fIrEpyim_b{oO;9ntQa}J<}52^9$!Pao4>&cjmhD z8E6WFbY0U_vTk#857D!VOWHhM?uuW4W!}8Dmg3i-XVaLPuGAnnkeO>)P&hrkWpmAh zMuX&=8U5=%I`4PyXt#JAHsW= zo#c`_%gWj4|kSF46o5je@ZrUFc3F`C2L8;r+AER=zw|l zN?zs106p>f1odI%!KGblmqq#aDe2Pd2@~=nu|Ssi(^QdHMlA9%~V;{-Yt-vC! zE6Tksn-DQ$`51UGPbcyjhqi|ZNt8BDv^DDW?=|g-cT^llH9VEDOx=`4r34fv_kL2` zNPd_Prx8bOnRb}cGu%XzExqAI4?fVKRGBz0*5TC=!-qMEtu;|M(v|4m^j@StV6DA6 z=pmjT6Biy>X%l8}H_LMQR%lR~U(5@|;1}yfrTO*PG}gBC{Pt@ou6TUJvEl89Pl4HK zKPEZDO4_&txhoVTh)wu?;#)3WYZI{+JX3VsMPBN+U}i!wkKJ>Nyz-*(-KU^io&T#J zq4MF`1>!GxkDg3vb%f|l16hU=HDq}|GR7?(#L?x!B9{4Z6{qTH1)S~7ik-oP=fMZ< z51EQc!m=q4Q-Fxo?FytzB`Nzn)Iy>LGa3U)+2d8)t86@+ES|xHs|P*s+c6pg-fg$UTNKr5JY^t56(&Kc|B&V-~T2bfWPupojrq z5e+^BzLaXLI0^=9?@mzc0#S3yfCnLX%!oXGTHKHN`fx(lyr{0OF5=hWb;{Q7L0XY* zLmPg{*H(L5iT4)f#AA6SRfD~*ny^(m*oBZ=(hDmd+~*Y;r)ra-9Eu2Yq3gL@%DO(J`JTiKhuME}R@OF_-kSXc>ju+**`5nM}f1H3+LI z=h25;rM&N+p~wSMPJ@|L^|D+mThFM*fZlpDbOP8gZtAS3?(7DGs25pT+!MnCY@^OxnZE{0J-K` zVp$3#ST9dMx<92U>z<7U##>(ZYpSoAHQm{N8hu#kQB-Ahku{iiC5qQ+OVHqy^vlnK zEz)rwMh!fCKJyNSE9XzwM;z-0&hxa|t<9mXG0v131a~|A*NdVMAFdukaJO65p?|G- z8hlXOJ)m}8dt2$)ovyM8kunABI$0nDJ-c`73}+O4#xqM7Qd8uT=(XgW!4%`qlYJWn z76VwEU01JO9nO0u(tHYJh=AfTh)4+)p`I>G5mjp)qST&V?{=yxt3G}@ZhzHJ5a^Mm zlJ}G@O40<>Di7p5K`*|Bq#=|wNAYRWc~T+oOKj6KjGn+qQ#M2+1Exh;W{y8Ou}#N= zbG5=`AvpiGq$jF~%fw_^d^}6Cn)PFt()tQe)+Lg#KKkkIQHZiO*8+3rP2&+H8?{|w zTwS)#XULY!0{h~%=_Sw@DEZk{ds;WFDeW;4PTAM;HiT82`; z@t`o-n=7-#Hb|G!1iM{)v!ymZ{>~*T+KE0+ljgX!*<^g}8K%QxO|AlsGTTtnmKjta z<=l_J3i`0!J=MrEd4+m)${5qsa_@u)ZJa*V(y}y<(wsT-k$?^=lux->I%Qhj0q8188sL<#Qe6q869e`3(OK2Xi;CO zYKdh6pEINo4Tvd&ZPwm?jN*o@6H)>^iz!^1$ zQJa*+;-8}U(^qEa??bjhaS%j8A^#>;k`2{4fzDPWE9yB*7;VPdw;;xkhZ)ODSIZ~^ zHWjV3`#LxmhARA1P$p+c9CoiF=9SlcjA&*ojd@1H+OUJU?#5Y<`s)Zs#%)r@M+}Xr zA+)Jh)_lqG8bN~(H!2U~{XZJX?R}&@U$N>uwj~Q*m)y&u<2BHQ9p{|YYHEI$Q9>?; zF%2<{vr`{u$${FVB65ZWb#sok$5g;nSQRTAikC{hQHKWspAqqGz7vEn!pNLS3(M|I zU370(R%XpuS?&1)%EX(5HsK(wGkiFyV{#ooMBcT|TQSf539q_w8`K%5UAF(Yxk0|F z>c?iQA&zPN?YsGTMY?L<3L8e5-a^D~RZ~BJ(Nrw>*F{J5vjfrLXG^;+_8A=xw&nr% z7pMQY3XolshbkZAo>AbONcl!1LnMi{;;p6A<~muy8&(RNzKRuU_F;aI%`9MGn$MM--YUYgfD9 z7WE6My4iX2&eD3fwR(?yT52MhN)}s2k@dW6-LT~w&?7;+;-#vo*bcxno6w2>re8VM#F_iXsmH(TN@^fy70r$8O<~b6(m+ z)qDN>7PfEMz)F%%H5AY)x0m7k?YGQr(wlC4(kXZmg{g>4hX7TB-4}TAMKF_A<_mL3 zG6qd1CI?N9*5kwl-b)<>$(;oVOPyBCkMCIB>W zh$Yi8$03e^Plo*Y4xVv;@b~XCwYgBCxIcsTc{%AnFSo}Cff>^h?c%`AgdK-t80fnK zF;%sf)3957OZdj9AvhXn6b(6nfUjjy+{={ZP#a9n%${ig5Wg%cmbqbMMdH~S$xQ%p zfO?Hwy@oJ0(*P1D9yZV42U}HtVnkypp%tO}@hg>wZ|G=fXdJlTIW4BpS-*#>v~Y|5 z7Qgk}XU1s8VQ3>WZP8hcg-CXE#_T<^chcreyjGLCvu70iFYPrlWcAZfZ4Vzt;m34b z2~5r<(~85!LGcz+{lTvRCgL4<(^r#TCABGXJ{C-Kj?m4iMtgAq3#9EZr0^IdZA;4y zP|~)f$$k9$xTOUg_SRl{x~ZtBq_WtrX>WSpn_&`$l%nkr0y!iQHbA}Jh*-JM0j|(t zTjI{@Sk@0|CiGbgWIuS=@ur1G|5*NRW_y6~W$I&%KgM#AhRnh^u`d=+W2q^x0;lU7ItMTfOcfU_aZK!;n{cTW~` z6p0fh$crkbx95H*x+M=xI6p?P8|#q3zRWP6KcmQ~CsHS6fdOm%Jcu(1{fFtLgHh8ywuhZW+Cz&7xtF? zc1-P=bA!0ojoSc;G7UY?3{XQC$Dp`cv;J(s&=hteea&L?>UUA%W`Pgr`4y0mwC>LP zh2c?ARHUQ>;Cq2P0LqspbDHG~8yo-UT(k^4u$@2<12y8+DA7rr(md**1dcuA4&*{Y zLsjYpL9d5AQ4z+$uP?Xzv=A40c{Fu&p}3{x2$CdtYtGKj|e0qWtmNQv8Ou2!vY@oYFj^^pUV4suN{-MW1AoHe@-8?mIjz{g;{9{d zvQxB=t)E9dawaI!`JHqwpWdF4$@9|U16JDqSJVF3glU1od0RXkAQl~XLVL}k)p=Ro z5i}uJgKAJ^tM-sOCdfnR>zHEGfN0wH6K*Oh3*!Jr2g3axL#e`b4@W1z81ws-Y3~4E z%O}BaC0VdHxZ(xKoVY>QDKc2Hkw*4~nAk--?O=6uhe3VtS|(;0?!a|P?{ij>m6O|+ zET4^XY8G<2FegAYG(1o}Y}gh}u0kZ+hCPooEa&1n>gnt28ycou0A? zb3&d6=O|yf$SNMpFfyF3GA%f>WH^sUd?4z?lX30-faNTdeaSiJJu;)fk;`dBIq{0y)5#43Yu*3TnPrOONcDO1XRPMfqIk|iOQ z4fOk2X$fC&6g}78o6l|ypgupBL4xbI?|t;f^p0vgqw!TG4V6Tgk9AeV-VfXM0xgx4 zw3ct+CX9cnqCGR(LbH_w-AhJh^LZ_>8v_NyO?s#Ms}KabIxqV%M5XH?E&(UK3V0Z` z%hs0#m@wM{F9QUW#xV4JiKi%(9EDB|2$X{pl?7uRh+}VsnP9fexn4JXNf3t7Gk(nB zAc=lqKS06GbUEBE_@}S9-h~_v(L?f)(6184KIN1+=3EJx{AcIBVoOEeA0SnQP)-6^ zsd?>rE=_{|`L>@!LX7qWEiH44IAfr%0riQTR>t233BED1C0?>ZxQZCy0|IeRM(p+u zd@xc1E2no8HKlI_G?2DeyYbc7;%>XcKGFm!lFydO)f6P`5Yb1RwcQAHlHGzn1~wASswLyyd5VTwZ{R#ub1O z9QNGYT=*T_O>=1feDq0)iD7|8pqKrYMWaH{W$#yeE>|NVXEah9thLXay@WRC|M<8F z7{dRt@XsV*g!W%K&qq&mEO8-Funk-Q(W@DdygSB2)z;Q(*^hey346V>G~nZJ+MB+= z(ZuAG#^b!V1_nYKObQJ3sayGO%Kg`#H#NI>urc`1M=HJOOnmx@x?_i@pRaF*e9Bh^B1jb;>rcwi(Lw_tH=AD7?B-w&M=AjbL3r{>3f=|JV% zR!RQ5wi&(ZKhCl?&)W*gP*FeDj@1K7jJwA%}Y4cr= zyLRXJ|7M|{!Yd#Q#bqE+cD_Zp?K9IqDXc%gCw&y)4$J2W39i5I18bO~f<=aUcyi<6zYvS8@ zb7qj0{wBo-^FvgR^nL*&$oOsro+^}3F!x%b8{2p`U$jN>nw28+cg=`*{*wz3e-D#7 zl8{gW!sXAi@e2l0&4~RZ!r37k!trLfzhn)D6nVkB3#(x)0Rb6I#IS$>YxIz)?a*u2 z6`p(dW+5}Z(Gl|Rqr|=eQ>Y9qi(l)g4N2bpDVJ;S-(T2G%B8S(dWrm9j6HL7h=2pb(x?*qlu`({X2K>(lhO_xV75+jssz+1`Jxmv?+TK3n6;W^0MY# zo?)A+rvaQN@H8zhq5@3~_4FPGJ0EZNrEad*Q>*O@R^_|GKrG?E5h8&rNbHshonGJ^ zecd(xvkq%vS^?1uYE@w!G#yBj10F`( z`zyEekLTk2!=BJ|z)YLp$B$(&^8|P$@ zda@B*WzRDKLoi^jUZSL7W$pGpRWqw701uJ!7{U$Rwa^R1j6nzB8ioXrbvn2Jka0eS zco{?`-i%dNNXCP6m%6`O1rewwrYiXhQD474f+-0w*}>g8o|i(zpFbyOG59oWt&ZJ@ z#+pU124quY695rcKu(H^GJh7L6G|4pTjY{9JD)Qdd&9;$uBATF4qJpwVW$zK%E4xj zWmOqMN37ri@{0g%4uft0JzB0n>u7=mBIS;Va+Rw~9>+W-r=>9Ux@9Hs8e&=}o_a8r z;hvMwLmuN}Cp$&Jl_1r&4;_5Q5>&ssnOV+%t$+L53@mAnyJmB}!z9NV+2F_xhU`6a@Am z*(C)A;!xx3Z7ZDhv2;U3ckw8-zeTtg>7 zdOpDp&Dl*ftmkS+yh2--T>ZdW9`wj`ci)4xO_>^XTJ0f4=P&s2o6Xqx+phd`l)sY) zr$3Kx^Ax@`XL076>_~Rq-L^kO9a74T0)f%0ej-$`g;PV6-M5LqjR@zVv z2t2{2o0yo8&joY{c&|58LoF2@=~2ja+I6?4j%GtlgC1$oxDUOcQ*#ePY z9rniHPR`&5{@DxvR=&&mf24kN1_nE>-k%yc>o}YrUG2+j_$3FRm-1ZN_$;rtv zhy&H=ASM1WxRI7G)TrR-iLn!xpmX8!au}~yd01GiU^WowA_b5An%2n%iP>|`GHMG* zvBIdvOpL$H1D>l30vT7XUe)p2gH+G%eAjG@H`M{eu$rAs62=4R6&?k)Xu1E2fpqEJ zPuC1=*XBCnh>nLYZfHQXkXQ(U4~xjswrry&e$zEv@dxOG z_qu3=9Z2ftY}*hGdN^)l4DOf)0W&tKh$aLbIffYZ-N({TUnM2CuI>Z!>(10TJXp+9 zx_b!6a%ft-0$~5lG3{i;)U*C@2U-pXdMN&{Xr+`gPJ2Ga!W` z4}V!Fwob25e_`~M`)wtk$3Vz|>(SrjA^h|yeXw0+bj*KOIiL*oe-jm?F#p6U@9Iv# zs0Sqsn?Xp!xtyMpb3Y+i^I$2j?LKWJI?)f`2obF_0pGrmXxxP)!a2);WGqQWdtk&I>d{`>_HNR4;PGpL6Ag zqG4iMg~3mBejf8@iPh{@i|QG7hmi3b$#3GV$7`_j#{C03u~-}=OP1?Ck`%;j{Tw>` z11+zkXW7%gYbWyild*}D1GqIoMoJ3;5l#DX?CCc%nOfpO#A|fYc_g%J?-_xC&8oN+ z{Nl7->W8m`fE3Lj2#TH_irVerJUl$ZyjJ(uMmNgl-c_IMJrfgaSf%Que7q~*@)Zn| z-g-PEkAv4R$u&~39YcL};(!C^AVl%H<3Jnc?roDtM6f#Em^5sj$j~XFu zD%0f<7=J`#B9zd^MOl_eAulnWyXs+b3O4r1&K#;(y=RF=!iOT*DxVVST|)kd=;5J* zANF@$ZX%ZdPOG4&qRtM+U0lQG`?Mnm# z4~+~9J!ytns%RYy>pVWB)cQ_MV~)T%a$V!)@2MbV8p=+jBtk+>pooFN;OCF0dhvUV zkT+2|Ee6yAU(L)p*>x9~C&!IQI$Zg-zd(+?@~kyfS>_TRQ9a%q*mv0NJGF4UQyHXy z2SoS56Gd09yKbXMuKx4mgKY_(q~Rj~tOM|c89J4a^J6#dZSF?k8Ux$u^qn>u?nUnA z*{@H)ND{4I`9f;i7NhKs6bw^n;)5l*tsoDG#iU~Mg@VoSplCSOOBOG~F0N!q^9BTc z?$=|S`Jo#3ki2s8tEjWmDS+hgE@dLC4Ab7ZbPrZq>5<@`Pw z-b0pAMzyhoC-1SSw~22>@;J!8bqmcPCnrz46!`d*w3MavmZSI;MMuZd0SBndHS0}O zv|59VQq!hwo^3w@I#fgi1u*9>65h3M4z3716gaa54p3fhE)o0uNUV3FGk{i~aR`3i zr1`~EzE%SR2{3f{1Rti^u!yoMcEUC#10opJi_IY~53N|T&f+W^-HLENbPdT6fz zIec09rYqU4QM_t5!=E%mKMoUl2w(w8ZNCrUL-0xsFp~w>!@in&@~_;Sfz1_gdv~Gd zdCEFGxHrINK*_xa@c*S85w}r03SM7gIwycmj=g|AZsl1ByIg4;%$3{wV25deNtPJq zUb(ci1QJOkzn$xvuSWrc@mvfZSf;%&kN^QZNY=@PB2kz^oM@qu{#LV3SSumpa>3)_ zj?h7*di8b!FYHs;Qt}z-P+6+H%p@eum6j8ez$e!>phb^1GRp(Se)`l42a7AOg&IBe z0Fd#)ce&B_aKVynE=6#I3ZW`DX`OUhreCUn(L#Oz*9M>Uz|nF{w)0CtRx2B;q0$BN z?Jf@~4WT1&(;;`V7*EiX7;2FPaJ7zeN9-O~(@(xOG-k`P5`}Nd>W5C6r?KQf?48S6cYNVON;0ruL(D*AYWe+`lgcSq@L+k1C z5uEn`l3NO|vLDN5rsAPTWGmsEb<#ZNJ=gBDM5Is!Yu`AxM9c&fD-VEEMQ>)}WyLeU z+ts`kvt%@GW?dZzzZC7R1?h60Jzj#yZq0XW+-pW=irNp6U9+sZ@hg$@`iAEh)rnrB zNkp)~pTQU+Rp{IKI!K)l9UWcc`gXu{NPEVT=Ja69BdN4_h~-@C=D5jf4TS>qFrS#7 z<>q)hUrX9geQWPi+93z1anFpYFR<&n`-bW46PArU*JH;`>Hmkjw~p#+U%y60MU=8Y zRLVjrL8Ti+KtZ}wr9(hKLh6gU5xXb>kx&Grl#)h4H_{;u5+Z^iAT538GIpHbd){~4 zd&m9f?s3i@?!Dm~Ykk%e^Om;XzBt8eD z@VV1PI-3Ofyx+bJx`CpZ+;H)A9fqLa!=B`*|#^wtFp$Gf?)f?LZk6e%NxzGu^!Uv%Xqjt@I1{G zE#1Fl>D8g468wSwh+p>Oa~UroI683nuoHS#jMv86K`-i>n2rbSCO1 z1WKHq5H)FhOdCOA(k5`jHnD#Xlze*Syji~bm|XZ^0uh{~(@rG~(ju2<^Wd$nEjwS< zFO<#g4dv;T(1tT z5w%7eS%ulRG3B(E1q!1ghKH0#(en2#Mogp+zEO=5wWnV%aC@oc1bJy(|8$Z&Zpi%U z%+)t1J(4$yyZt21tzvhk&39@GeMo{ft5bLc7Z;F0B1mXOD&d{79ba~Q!K`nI{5jfW zR5EtxW)WNZoB}AXR=Z1&)bWV>F6Nku`pjkN%JUqmAxkLAwF|&=0D)RD?HNW-YSInL zt(WE=x#&Z15LXUOT!@+SmVBcD2j0i(S+?3)_75&o(oU(hkd8WK*i803IbY?cWAb$* zak1-SUG$A7KAf|Q)sDVq43hJMk9mt1)4Mk0wIal|EGYOh3ORTqF*XTIKT;%AmUJEwKfJuseD7tDG|o8fyhVBs81-r%^VJ3Puy>S zW&ya857P%Z)r(oah0}>`WffBB*AZ4T$^@P-9y^#;ukNE47GOKGm-gYx^T*cp)`14n zkF)a9Uv_yWja7c?I;=QD`uMYr4?5uq+Sj)pnOSE?J87I zp+F4xHwg?3%!k#BFL!XI{;7cARulAVPt~$X&*sVxM1dlevEK2hwTO;ebIX~50JKyr zb~?#=>Zi)V+>hbcC(A6HNo%+uV1UseHHNfP$wPyTg+uJ`b#D;HMF`-p7kzRYlgUO7 zUKZ?^++yn}zVJ1Jhi&Ke3sCX_dr5IxvrtP0wy=;*!@k+j;mDc%?j@DWTS!C6LlmDS zo|?q&GpNt_lkMx#Z_0k#eB5GyfjNww#@rCkR8v`=c6fbR+!Y?(T2<1d-Fx%K=|;|W=f(S9-mnSAaPGW!t4x;h;oNw7qCQhVO#*ieQIYQdeG z>kp_PP9s-6-l%`;sW<#d=8rch6#qGUWh1MD$g*EQF$rA)L@>Cw)w`X?kd%G$MVc+_ zhSWC4tQ^_-=6z4R%(qKSX9u_tRW>VO>?@1#U?dT4&geFVfO*WBuoshy$C+I+X7nF-6C>OB&XkqQ!bQmkGUgd5))d%T&l z({pq%{aJ9MF`(Xv@bG6DliQ^8-Kk;0a3D^dU`-G5lbX(pI^A)kY0~X|svMD7`t5qJ zS=p^$L!#*8<2jO7PDD-myUd?mUzcoRv41X)*>rcgqt>8T*xAa>hjTj(>O_2Kk19g_ zzVl|R!nVXz>4>k7x^1z1iIlmkMx6xXCM0FEO4Th8Ex?<61< zBOUSEaW0xF#)7IjUTdwgH%Xn+PfJ0mvL_eaF-N{udZHc_3FDrE#g&x9eCHvjn5T(h zAizS!ylO{gxmyI8=+#q6)AJuKS!Nj>3u2z=6^mD`e5ZB;a;&JdW0*E%D&mLp_X8L-Ul5~kyp3N-q}1W zBAIRz@2R5BwRNMOEQYmamHCYx~|dC0xn7IMsMR z%4a4_{%c{OK#(S(QWYI9iTX7-quYpl#8s6ZxJfH0eMjAO<1Jga9%SFTmdC*@p1ayF zo9Xe@b^dl0+k*3L3}5#HBc@vb7|3;1i_^X5)kU0s6IbH#%!myfN+|K9AU%uzszHW^ zJ9Cc;`TL6G$%WojHC37Tna2`?Yw3@KuQCuD1M;v?XF>MO<0@j&mnT6O`z$bec-fy( zQI?56;=nAlcjQw=3=M3&`GRNIM|s`>DQ$v=`J6$Pu(F-06c!>poP z-C6pYxv5_J_I1+rhTO_Bx}ne)=?0OZ`rQ>@%j9Z1$R{XB2CBQKVftcB=>^Nh<~nzI z1 zMc>!*x9ft%zr9*>odaWL0zZEcEV_7X^9V|6perVEiorm)TO<`MNOD=*Zk5Rn9_!RC zc8bSI>d`jahsIVjTg-JxE5CDXj;+S~cc>UYZ@k2l&mOGsRaj5Af-R7g<+$zan33z$ zdk6D{jrU-}Gt!bbcp+c9>s)G&>hRmLvV2~$&xiYTJX60LuGtNuTqjVu-j(JPBW5~X zhc>!afY|6nva{|(o!26KQRNc`{hceXmKHbunvud#=@?I01`a{ zo@E;`eUiG%pms;b*$^t0(82qc#j}Li`V_BIeGAayNr{(?-rw+IpAE(6=qC~Dh9}pq zSaDv_EjYXPR}(5-uVK*Qx9%MS;T;v5*Wb;fs-!B0SqFL?R&Uav%$+7sp*fotrvg>q z^EHfQDZ>^u90g{Yaeg*1lNsA7pM{x7U{DROpp_MM9fFGOc=?z6Y)V0+9OX#=FAHmL z-lUFmN$J=;#S)p&yPR^;PlEMSq9CtoxRg{vTvia-zCcV78rxfu%3{8{XLN^h4N9Ql6~nmL!)h1*Jyw9G2`+xmG9L8nz^FX zJ^vY}#_~(=;{AvSJB=QK|4&gBK?EyLcz3pAbL!h6H4Q=>NY#_w^gW4lXrI7zsoi1J~18SyvC7+v1(+O%Vd1- za`$VcQ>j!@*8rbYa#CW(E2FT(a7{ZS&+f<00|es6PzC9h@&59>W7icAeUO#+p`H^N zYg(DgedQtkhr&o@GX$I3+uBG#sE3`uZzW@-ERKD_x6G^Yb>O+;Mc%to2OsiIiPehu z@Q7O;4y)9ms=ND>5-6Q0z2WhZ!Jr!)p~?5}C@AjzY11+)lTvh-Q(V2KXT)EI<;}ue zWZt*6d$#^CC#*^%8@UGuxCegeK%~gO7q}GX8nsE24dytJ`V<#`mWPC!H`+qkL&+BxC0&gi9B7gEtOoT%JAB2qGo(e|Weh=Ku ze}AW+9x!xm3uU>uLxwC*NdkyXDKIy18yIYwC1BKT{tnt|r zaM~qW_2Z_qv{NU*n7=4_t<>TNAAqn%fw7qO7FZSd|M7<&8)aZGA3Z6qW;dZU+w|k> z{>!}MfBu^|%O55!KDyR`r?qdM?aVnWAfU}iAgnYrS^w!71DXUpI3x}qu6K_F`gii7 z@Ob*+^OlyMk*^lfW~8FPe@goF_fR5v@f^qipc5g=Vcgjy;-{nLizXeB!C=$Le=!_5 zVB``kd51})!96E=Rr|zcTo7n%O;Kd;_ft_(A&R9m-)SzcD7az?@7*g)mZ>y{7-+7v zYUDu0cnj>--W4H5M3ThZvsbVCEwdtSbJRr6y7RCnfZXvA{%7ylmL7+Ai=k-U%mh4? z4;nr_o(FciXEvtUoQs$QK?2yAq|0m1Yf>Q0&0W=DWMh#?RF$aGc}xnvV+@`63H90` zuXT=Kjt#(&RDC{qy8#UlOJfq(p?`fb0%0uwix-SRm5m}TUtp`}?8K}bPJzn);77D~jI!Gm4X5SC-I5v{t-Pa|VpX1ZnNy(3^a$;M=O z%_m0{jcE+tTs?@il`KEKlUejUY5j&dn~Ll$RwI+(btr)Y;o{;#@ZUB0_UtL)Zr%;l z;qf1hUDr$!K3CS%q{7%|g*SOq$uV8hp(Lq0JNW+0JqKuk%wR+Kzlc9y9*}{Jay+B) z${x%98VnWQUx}17lq!3_{5X^qM#25hf?>6Mh>e8Q0!4#m{Y_LOm??)%VBU_t$nf5I zu-a~aWRiv#(5Vak!H_WzBBvX-KCuZDaT&1IRZKnj?b?R$VBukdwbmaql>IDO7er=7 zqG?yv99l>9JEZ)yY593olz8>UvaLot&jfd#759I1@v14OD9P7kD$UuCX~JJOfRcVs zY60isvu!#(Kb|iJRS+Q2GPV=0E{avEjB=$sY(?sI$;Qb1qe8`Vw+NBh1ZsKOwvCRN;2lRqMSD$T!i@Xh3t61w&9O zDM$V1h#sgNw|!kEts8wP=FYQs?_-2?mZ*b%COxf)ex7F!b;kdM0C#PFr?=u$Qyxgq zsUSB!Vnx4~gQ_Uq*@e?YUFzdd_S1cU*`~C)GSw4}1D?Mkv8tZRjnxR{p)c8+tf2zw zR1u$Sow}f?}F3y1} z2UdnzoBNL&E-P0Q?4cs#!K1VIy>#V6Z=908K7&1TD{x*=D+op>KZxukIiE^bphaKO8Rjfoe+apwH2yTOPSiA ztziju{5Y^}g=BA1L)UAJ(lP@e20l{!{_N7(3+{#Cv~XuKBWIII9gv#y{57@<;yx_v zc*E;sVk3Q}s^qwJNoH6~lbuKMwhPL$*U<+&6dOnvs}gbJo}J=Ix_Y%}u9-3>CM-g* zoh?Q?Np54|L6_leT*AjsO@4@b*h$IAtyn-n10-TiL9fo;(w)Tjz(NRm(b>WJQs-oW zdK4iNOdz}jlQ18H3L*ny5BO_Mk9D8g{0T@59o^^tei&?-0VV^(Kqm{g^NTd%IkfIy zTgKvx&!Lt!&N+7m;H-0ADg+IQnq_^=SntC9Sy7jspkv~vmqBEObzN0iQn5$z`S#?A?^mXc7kZT6+nWamNZgYRF{r0 zLGiUndOXPFnA5w?C$kTro+?T?hKTjxH(kM20 zaAfR8YyN0aP(;LH8tF-z5sSfINzc}A3BwegUdBVZr}nQb6yAMTp}v%QgV}2!uAp

J9 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 From bbecc86fe170d353cbe82fbdbc64a4c042bb012c Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Wed, 26 Aug 2026 12:42:25 +0530 Subject: [PATCH 11/12] test(backup): cover the retention IPC wiring at its true boundaries Electron, the settings store, and clearCategory are the mocked seams; config sanitization, last-run persistence, the concurrency guard, the category refusal, and a real file->folder archive run for real. Raises new-code coverage over the pre-push floor. Co-Authored-By: Claude Fable 5 --- .../__tests__/retention-archive-ipc.test.ts | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 src/main/backup/__tests__/retention-archive-ipc.test.ts diff --git a/src/main/backup/__tests__/retention-archive-ipc.test.ts b/src/main/backup/__tests__/retention-archive-ipc.test.ts new file mode 100644 index 00000000..fcdea36d --- /dev/null +++ b/src/main/backup/__tests__/retention-archive-ipc.test.ts @@ -0,0 +1,147 @@ +// The Electron wiring layer, tested at its true boundaries: electron (app paths, +// dialog), the settings store, and clearCategory are mocked; everything between - +// config sanitization, state persistence, the concurrency guard, the category +// refusal, and the archive->clear ordering against REAL temp files - runs for real. +import fs from 'node:fs' +import os from 'node:os' +import path from 'node:path' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' + +const boundary = vi.hoisted(() => ({ + userDataDir: '', + settings: new Map(), + clearCalls: [] as { id: string; olderThanDays?: number }[], + clearResult: { success: true }, + dialogResult: { canceled: true, filePaths: [] as string[] } +})) + +vi.mock('electron', () => ({ + app: { getPath: () => boundary.userDataDir }, + BrowserWindow: { getFocusedWindow: () => null }, + dialog: { showOpenDialog: async () => boundary.dialogResult } +})) + +vi.mock('../../database', () => ({ + getSetting: (key: string, dflt: T): T => + boundary.settings.has(key) ? (boundary.settings.get(key) as T) : dflt, + saveSetting: (key: string, value: unknown): void => { + boundary.settings.set(key, value) + } +})) + +vi.mock('../../data-privacy', () => ({ + clearCategory: async (id: string, olderThanDays?: number) => { + boundary.clearCalls.push({ id, olderThanDays }) + return boundary.clearResult + } +})) + +import { + archiveThenClearCategory, + getAutoCleanupStatus, + pickArchiveDir, + readAutoCleanupConfig, + runAutoCleanupNow +} from '../retention-archive-ipc' + +beforeEach(() => { + boundary.userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-ipc-ud-')) + boundary.settings.clear() + boundary.clearCalls = [] + boundary.clearResult = { success: true } + boundary.dialogResult = { canceled: true, filePaths: [] } +}) +afterEach(() => { + fs.rmSync(boundary.userDataDir, { recursive: true, force: true }) + vi.restoreAllMocks() +}) + +describe('archiveThenClearCategory', () => { + it('refuses a category that is not archivable, touching nothing', async () => { + const result = await archiveThenClearCategory('chats', 7) + expect(result.status).toBe('failed') + expect(boundary.clearCalls).toEqual([]) + }) + + it('with nothing to archive it clears directly (no dialog involved)', async () => { + const result = await archiveThenClearCategory('captures', 7) + expect(result).toMatchObject({ status: 'cleared', archivedFiles: 0 }) + expect(boundary.clearCalls).toEqual([{ id: 'captures', olderThanDays: 7 }]) + }) +}) + +describe('readAutoCleanupConfig (sanitizes whatever the renderer wrote)', () => { + it('defaults to off with no folder', () => { + expect(readAutoCleanupConfig()).toEqual({ retentionDays: 0, archiveDir: null }) + }) + + it('rejects junk shapes instead of trusting them', () => { + boundary.settings.set('autoCleanup', { retentionDays: 'soon', archiveDir: 42 }) + expect(readAutoCleanupConfig()).toEqual({ retentionDays: 0, archiveDir: null }) + boundary.settings.set('autoCleanup', { retentionDays: -5, archiveDir: '' }) + expect(readAutoCleanupConfig()).toEqual({ retentionDays: 0, archiveDir: null }) + boundary.settings.set('autoCleanup', { retentionDays: 999999, archiveDir: null }) + expect(readAutoCleanupConfig()).toEqual({ retentionDays: 0, archiveDir: null }) + }) + + it('passes a valid config through', () => { + boundary.settings.set('autoCleanup', { retentionDays: 30, archiveDir: '/Volumes/SSD' }) + expect(readAutoCleanupConfig()).toEqual({ retentionDays: 30, archiveDir: '/Volumes/SSD' }) + }) +}) + +describe('runAutoCleanupNow', () => { + it('is a no-op when retention is off, and persists nothing', async () => { + const result = await runAutoCleanupNow() + expect(result.status).toBe('off') + expect(boundary.settings.has('autoCleanupLastRun')).toBe(false) + expect(boundary.clearCalls).toEqual([]) + }) + + it('runs the prune and persists the result as the last run', async () => { + boundary.settings.set('autoCleanup', { retentionDays: 30, archiveDir: null }) + const result = await runAutoCleanupNow() + expect(result.status).toBe('cleared') + expect(boundary.clearCalls).toEqual([{ id: 'captures', olderThanDays: 30 }]) + expect(getAutoCleanupStatus().lastRun).toMatchObject({ status: 'cleared' }) + }) + + it('archives real old captures into the configured folder before clearing', async () => { + const archiveDir = fs.mkdtempSync(path.join(os.tmpdir(), 'offgrid-ipc-arc-')) + try { + const captures = path.join(boundary.userDataDir, 'captures') + fs.mkdirSync(captures, { recursive: true }) + const old = new Date(Date.now() - 60 * 86_400_000) + fs.writeFileSync(path.join(captures, 'old.png'), 'OLD') + fs.utimesSync(path.join(captures, 'old.png'), old, old) + boundary.settings.set('autoCleanup', { retentionDays: 30, archiveDir }) + + const result = await runAutoCleanupNow() + + expect(result).toMatchObject({ status: 'cleared', archivedFiles: 1 }) + expect(fs.readdirSync(archiveDir)).toHaveLength(1) + expect(boundary.clearCalls).toEqual([{ id: 'captures', olderThanDays: 30 }]) + } finally { + fs.rmSync(archiveDir, { recursive: true, force: true }) + } + }) + + it('never runs two cleanups at once', async () => { + boundary.settings.set('autoCleanup', { retentionDays: 30, archiveDir: null }) + const [first, second] = await Promise.all([runAutoCleanupNow(), runAutoCleanupNow()]) + const statuses = [first.status, second.status].sort() + expect(statuses).toEqual(['cleared', 'failed']) + expect(boundary.clearCalls).toHaveLength(1) + }) +}) + +describe('pickArchiveDir', () => { + it('returns null when the dialog is canceled', async () => { + expect(await pickArchiveDir()).toBeNull() + }) + + it('returns the chosen folder', async () => { + boundary.dialogResult = { canceled: false, filePaths: ['/Volumes/SSD/Archive'] } + expect(await pickArchiveDir()).toBe('/Volumes/SSD/Archive') + }) +}) From 09d83206683165e3d597c8e9eca6c88b035873bc Mon Sep 17 00:00:00 2001 From: siddWednesday Date: Wed, 26 Aug 2026 12:48:50 +0530 Subject: [PATCH 12/12] refactor(backup): retention IPC registration behind an injectable boundary Same seam as backup/ipc.ts: the channel->handler map lives with its handlers and is tested with a fake boundary (registration, dispatch, the scheduled due-check). Clears the pre-push new-code function floor. Co-Authored-By: Claude Fable 5 --- .../__tests__/retention-archive-ipc.test.ts | 42 +++++++++++++++++++ src/main/backup/retention-archive-ipc.ts | 18 +++++++- src/main/ipc.ts | 20 ++------- 3 files changed, 62 insertions(+), 18 deletions(-) diff --git a/src/main/backup/__tests__/retention-archive-ipc.test.ts b/src/main/backup/__tests__/retention-archive-ipc.test.ts index fcdea36d..ad770ba2 100644 --- a/src/main/backup/__tests__/retention-archive-ipc.test.ts +++ b/src/main/backup/__tests__/retention-archive-ipc.test.ts @@ -39,8 +39,10 @@ vi.mock('../../data-privacy', () => ({ import { archiveThenClearCategory, getAutoCleanupStatus, + maybeRunScheduledCleanup, pickArchiveDir, readAutoCleanupConfig, + registerRetentionIpc, runAutoCleanupNow } from '../retention-archive-ipc' @@ -145,3 +147,43 @@ describe('pickArchiveDir', () => { expect(await pickArchiveDir()).toBe('/Volumes/SSD/Archive') }) }) + +describe('registerRetentionIpc', () => { + it('registers all four channels and dispatches through to the handlers', async () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors the boundary signature + const handlers = new Map unknown>() + registerRetentionIpc({ handle: (channel, handler) => void handlers.set(channel, handler) }) + expect([...handlers.keys()].sort()).toEqual([ + 'data:archive-clear', + 'data:auto-cleanup-run', + 'data:auto-cleanup-status', + 'data:pick-archive-dir' + ]) + // Dispatch smoke: the refusal branch proves args flow through the boundary. + const refused = (await handlers.get('data:archive-clear')!(null, 'chats')) as { + status: string + } + expect(refused.status).toBe('failed') + const status = (await handlers.get('data:auto-cleanup-status')!(null)) as { + config: { retentionDays: number } + } + expect(status.config.retentionDays).toBe(0) + expect(await handlers.get('data:pick-archive-dir')!(null)).toBeNull() + }) +}) + +describe('maybeRunScheduledCleanup', () => { + it('does nothing while retention is off', async () => { + await maybeRunScheduledCleanup() + expect(boundary.clearCalls).toEqual([]) + expect(boundary.settings.has('autoCleanupLastRun')).toBe(false) + }) + + it('runs once when due, then holds until the next day', async () => { + boundary.settings.set('autoCleanup', { retentionDays: 30, archiveDir: null }) + await maybeRunScheduledCleanup() // never ran -> due + expect(boundary.clearCalls).toHaveLength(1) + await maybeRunScheduledCleanup() // just ran -> not due + expect(boundary.clearCalls).toHaveLength(1) + }) +}) diff --git a/src/main/backup/retention-archive-ipc.ts b/src/main/backup/retention-archive-ipc.ts index 0f9c2ce7..c01ba8d3 100644 --- a/src/main/backup/retention-archive-ipc.ts +++ b/src/main/backup/retention-archive-ipc.ts @@ -88,7 +88,7 @@ export async function runAutoCleanupNow(): Promise { } } -async function maybeRunScheduledCleanup(): Promise { +export async function maybeRunScheduledCleanup(): Promise { try { const { config, lastRun } = getAutoCleanupStatus() if (config.retentionDays <= 0) return @@ -107,6 +107,22 @@ export function setupAutoCleanupScheduler(): void { setInterval(() => void maybeRunScheduledCleanup(), 60 * 60_000) } +/** IPC registration over an injectable boundary (same seam as backup/ipc.ts), so the + * channel->handler map is testable without Electron's real ipcMain. */ +export interface RetentionIpcBoundary { + // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors Electron's ipcMain.handle signature + handle(channel: string, handler: (event: unknown, ...args: any[]) => unknown): void +} + +export function registerRetentionIpc(ipc: RetentionIpcBoundary): void { + ipc.handle('data:archive-clear', (_e, id: string, olderThanDays?: number) => + archiveThenClearCategory(id, olderThanDays) + ) + ipc.handle('data:auto-cleanup-status', () => getAutoCleanupStatus()) + ipc.handle('data:auto-cleanup-run', () => runAutoCleanupNow()) + ipc.handle('data:pick-archive-dir', () => pickArchiveDir()) +} + /** Native folder picker for the archive destination. Returns null when canceled. */ export async function pickArchiveDir(): Promise { const options: Electron.OpenDialogOptions = { diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 663201f9..3d9ba975 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -1706,23 +1706,9 @@ export function setupIPC() { ) ) ipcMain.handle('data:delete-all', () => import('./data-privacy').then((m) => m.deleteAllData())) - // Archive-before-delete: ZIP what the delete would remove to a user-picked - // destination, then clear - fail closed (see backup/retention-archive.ts). - ipcMain.handle('data:archive-clear', (_e, id: string, olderThanDays?: number) => - import('./backup/retention-archive-ipc').then((m) => - m.archiveThenClearCategory(id, olderThanDays) - ) - ) - // Automatic history cleanup: status, manual run, and the archive-folder picker. - ipcMain.handle('data:auto-cleanup-status', () => - import('./backup/retention-archive-ipc').then((m) => m.getAutoCleanupStatus()) - ) - ipcMain.handle('data:auto-cleanup-run', () => - import('./backup/retention-archive-ipc').then((m) => m.runAutoCleanupNow()) - ) - ipcMain.handle('data:pick-archive-dir', () => - import('./backup/retention-archive-ipc').then((m) => m.pickArchiveDir()) - ) + // Archive-before-delete + automatic history cleanup - the channel map lives with + // its handlers (backup/retention-archive-ipc.ts) behind an injectable boundary. + void import('./backup/retention-archive-ipc').then((m) => m.registerRetentionIpc(ipcMain)) // --- Image generation (stable-diffusion.cpp) ---------------------------- ipcMain.handle('imagegen:status', async () => {