From 300dcb605ef40458859f40724e5a08cf6b0e686d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 18:47:49 +0000 Subject: [PATCH 001/140] Initial plan From 753e136384f585e77abbc720cdba779535befa0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 18:52:28 +0000 Subject: [PATCH 002/140] Retire deprecated bip110 flake input; collapse Bitcoin node tiles to two --- README.md | 5 +- app/sovran_systemsos_web/server.py | 51 +++++-------------- .../static/js/features.js | 6 +-- .../static/js/service-detail.js | 2 +- flake.nix | 4 +- modules/bip110.nix | 23 --------- modules/core/role-logic.nix | 3 +- modules/core/roles.nix | 1 - modules/core/sovran-hub.nix | 5 +- modules/modules.nix | 1 - 10 files changed, 20 insertions(+), 81 deletions(-) delete mode 100755 modules/bip110.nix diff --git a/README.md b/README.md index 7b1c1fb..df93ef6 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ The control center is the **Hub** — a built-in panel that lets the operator la │ flake.nix │ │ inputs: nixpkgs, │ │ nix-bitcoin, nixvim, │ - │ btc-clients, bip110 │ + │ btc-clients │ └───────────┬─────────────┘ │ nixosModules.Sovran_SystemsOS ▼ @@ -78,10 +78,9 @@ Defaults follow the import order in `modules/modules.nix`. Toggles live in `cust | `bitcoinecosystem.nix` | **on** | bitcoind/electrs/LND/RTL/BTCPay (over Tor) | | `wallet-autoconnect.nix` | **on** | Sparrow/Bisq ↔ node handshake | | `haven.nix` | off | Nostr relay | -| `bip110.nix` | off | Bitcoin Knots BIP-110 | | `element-calling.nix` | off | LiveKit + JWT for E2E calling | | `mempool.nix` | off | Mempool.space dashboard | -| `bitcoin-core.nix` | off | Standalone bitcoind | +| `bitcoin-core.nix` | off | Switch node to Bitcoin Core (replaces default Bitcoin Knots + BIP110) | | `rdp.nix` | off | xrdp remote desktop | | `sshd.nix` | off | Public-facing OpenSSH | diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 778da52..f5a8d5e 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -222,28 +222,16 @@ FEATURE_REGISTRY = [ "conflicts_with": [], "port_requirements": [], }, - { - "id": "bip110", - "name": "Bitcoin Knots + BIP110", - "description": "Only one Bitcoin node implementation can be active at a time: Bitcoin Knots (default), Bitcoin Knots + BIP110, or Bitcoin Core. Enabling this option replaces the default Bitcoin Knots with Bitcoin Knots + BIP110 consensus changes. It will disable the currently active alternative.", - "category": "bitcoin", - "needs_domain": False, - "domain_name": None, - "needs_ddns": False, - "extra_fields": [], - "conflicts_with": ["bitcoin-core"], - "port_requirements": [], - }, { "id": "bitcoin-core", "name": "Bitcoin Core", - "description": "Only one Bitcoin node implementation can be active at a time: Bitcoin Knots (default), Bitcoin Knots + BIP110, or Bitcoin Core. Enabling this option replaces the default Bitcoin Knots with Bitcoin Core. It will disable the currently active alternative.", + "description": "Only one Bitcoin node implementation can be active: Bitcoin Knots + BIP110 (default) or Bitcoin Core. Enabling this replaces Knots + BIP110 with Bitcoin Core. Your timechain data is preserved.", "category": "bitcoin", "needs_domain": False, "domain_name": None, "needs_ddns": False, "extra_fields": [], - "conflicts_with": ["bip110"], + "conflicts_with": [], "port_requirements": [], }, { @@ -283,7 +271,6 @@ FEATURE_SERVICE_MAP = { "haven": "haven-relay.service", "element-calling": "livekit.service", "mempool": "mempool.service", - "bip110": None, "bitcoin-core": None, "btcpay-web": "btcpayserver.service", "sshd": "sshd.service", @@ -331,7 +318,6 @@ SERVICE_DOMAIN_MAP: dict[str, str] = { # For features that share a unit, disambiguate by icon field FEATURE_ICON_MAP = { - "bip110": "bip110", "bitcoin-core": "bitcoin-core", } @@ -352,7 +338,7 @@ ROLE_CATEGORIES: dict[str, set[str] | None] = { ROLE_FEATURES: dict[str, set[str] | None] = { "server_plus_desktop": None, "desktop": {"rdp", "sshd"}, - "node": {"rdp", "bip110", "bitcoin-core", "mempool", "btcpay-web", "sshd"}, + "node": {"rdp", "bitcoin-core", "mempool", "btcpay-web", "sshd"}, } SERVICE_DESCRIPTIONS: dict[str, str] = { @@ -1606,7 +1592,7 @@ def _is_feature_enabled_in_config(feature_id: str) -> bool | None: return False # Default off in Node role; only on via explicit hub toggle unit = FEATURE_SERVICE_MAP.get(feature_id) if unit is None: - return None # bip110, bitcoin-core — can't determine from config + return None # bitcoin-core — can't determine from config cfg = load_config() for svc in cfg.get("services", []): if svc.get("unit") == unit: @@ -2343,8 +2329,8 @@ def _get_bitcoind_version() -> str | None: """Run ``bitcoind --version`` and return the raw version string, or None on error. Parses the first output line to extract the token after "version ". - For example: "Bitcoin Knots daemon version v29.3.knots20260210+bip110-v0.4.1" - returns "v29.3.knots20260210+bip110-v0.4.1". + For example: "Bitcoin Knots daemon version v29.3.knots20260508" + returns "v29.3.knots20260508". Works regardless of whether the RPC server is ready (IBD, warmup, etc.). Results are cached for 60 seconds (_BTC_VERSION_CACHE_TTL). @@ -2379,26 +2365,13 @@ def _get_bitcoind_version() -> str | None: def _format_bitcoin_version(raw_version: str, icon: str = "") -> str: """Format a raw version string from ``bitcoind --version`` for tile display. - Strips the ``+bip110-vX.Y.Z`` patch suffix so the base version is shown - cleanly (e.g. "v29.3.knots20260210+bip110-v0.4.1" → "v29.3.knots20260210"). - For the BIP110 tile (icon == "bip110") a " (bip110 vX.Y.Z)" tag is appended - including the patch version. + For the BIP110 tile (icon == "bip110") a " (bip110)" tag is appended, + since mainline Bitcoin Knots (29.3.knots20260508+) now includes BIP-110 + and no longer carries a separate ``+bip110-vX.Y.Z`` suffix. """ - # Extract the BIP110 patch version before stripping the suffix - bip110_ver = "" - bip_match = re.search(r"\+bip110-v(\S+)", raw_version) - if bip_match: - bip110_ver = bip_match.group(1) - - # Strip the +bip110... suffix for the base Knots version - display = re.sub(r"\+bip110\S*", "", raw_version) - - # For BIP110 tile, append both the tag and the patch version - if icon == "bip110": - if bip110_ver: - display += f" (bip110 v{bip110_ver})" - elif "(bip110)" not in display.lower(): - display += " (bip110)" + display = raw_version + if icon == "bip110" and "(bip110)" not in display.lower(): + display += " (bip110)" return display diff --git a/app/sovran_systemsos_web/static/js/features.js b/app/sovran_systemsos_web/static/js/features.js index fee6ede..e575cce 100644 --- a/app/sovran_systemsos_web/static/js/features.js +++ b/app/sovran_systemsos_web/static/js/features.js @@ -415,10 +415,8 @@ function handleFeatureToggle(feat, newEnabled) { if (conflictNames.length > 0) { var confirmMsg; - if (feat.id === "bip110") { - confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Knots + BIP110 will disable Bitcoin Core (if active). Your timechain data will be preserved — you will not need to re-download the timechain. Continue?"; - } else if (feat.id === "bitcoin-core") { - confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Core will disable Bitcoin Knots + BIP110 (if active). Your timechain data will be preserved — you will not need to re-download the timechain. Continue?"; + if (feat.id === "bitcoin-core") { + confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Core will replace Bitcoin Knots + BIP110. Your timechain data will be preserved — you will not need to re-download the timechain. Continue?"; } else { confirmMsg = "This will disable " + conflictNames.join(", ") + ". Continue?"; } diff --git a/app/sovran_systemsos_web/static/js/service-detail.js b/app/sovran_systemsos_web/static/js/service-detail.js index 4f8711c..29e1531 100644 --- a/app/sovran_systemsos_web/static/js/service-detail.js +++ b/app/sovran_systemsos_web/static/js/service-detail.js @@ -242,7 +242,7 @@ async function openServiceDetailModal(unit, name, icon) { var addonBtnCls = feat.enabled ? "btn btn-close-modal" : "btn btn-primary"; // Section title: use a more specific label for mutually-exclusive Bitcoin node features - var addonSectionTitle = (feat.id === "bip110" || feat.id === "bitcoin-core") + var addonSectionTitle = (feat.id === "bitcoin-core") ? "\u20BF Bitcoin Node Selection" : "\uD83D\uDD27 Addon Feature"; diff --git a/flake.nix b/flake.nix index f8c07fa..1b6b366 100755 --- a/flake.nix +++ b/flake.nix @@ -7,10 +7,9 @@ nixvim.url = "github:nix-community/nixvim"; btc-clients.url = "github:emmanuelrosa/btc-clients-nix"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11"; - bip110.url = "github:emmanuelrosa/bitcoin-knots-bip-110-nix"; }; - outputs = { self, nixpkgs, nix-bitcoin, nixvim, btc-clients, nixpkgs-stable, bip110, ... }: + outputs = { self, nixpkgs, nix-bitcoin, nixvim, btc-clients, nixpkgs-stable, ... }: let overlay-stable = final: prev: { @@ -56,7 +55,6 @@ btc-clients.packages.${pkgs.system}.bisq2 btc-clients.packages.${pkgs.system}.sparrow ]; - sovran_systemsOS.packages.bip110 = bip110.packages.${pkgs.system}.bitcoind-knots-bip-110; }; }; }; diff --git a/modules/bip110.nix b/modules/bip110.nix deleted file mode 100755 index e229a80..0000000 --- a/modules/bip110.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.sovran_systemsOS; -in -{ - options.sovran_systemsOS.packages.bip110 = lib.mkOption { - type = lib.types.nullOr lib.types.package; - default = null; - description = "BIP110 Bitcoin package"; - }; - - config = lib.mkIf ( - cfg.features.bip110 && - cfg.packages.bip110 != null - ) { - services.bitcoind.package = lib.mkForce cfg.packages.bip110; - - environment.systemPackages = [ - cfg.packages.bip110 - ]; - }; -} diff --git a/modules/core/role-logic.nix b/modules/core/role-logic.nix index 0a09f14..fafb030 100755 --- a/modules/core/role-logic.nix +++ b/modules/core/role-logic.nix @@ -24,7 +24,7 @@ }) # ── Bitcoin Node Only Role ──────────────────────────────── - # Bitcoin ecosystem + mempool + bip110, BTCPay runs but not exposed via Caddy + # Bitcoin ecosystem + mempool, BTCPay runs but not exposed via Caddy (lib.mkIf config.sovran_systemsOS.roles.node { sovran_systemsOS.services = { bitcoin = lib.mkDefault true; @@ -36,7 +36,6 @@ sovran_systemsOS.features = { mempool = lib.mkDefault true; - bip110 = lib.mkDefault true; }; sovran_systemsOS.web.btcpayserver = lib.mkDefault false; diff --git a/modules/core/roles.nix b/modules/core/roles.nix index 45e9483..48f6972 100755 --- a/modules/core/roles.nix +++ b/modules/core/roles.nix @@ -43,7 +43,6 @@ # ── Features (default OFF — user can enable in custom.nix) ── features = { haven = lib.mkEnableOption "Haven NOSTR relay"; - bip110 = lib.mkEnableOption "BIP-110 Bitcoin Better Money"; mempool = lib.mkEnableOption "Bitcoin Mempool Explorer"; element-calling = lib.mkEnableOption "Element Video and Audio Calling"; bitcoin-core = lib.mkEnableOption "Bitcoin Core"; diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index bf34456..ac119a8 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -29,10 +29,7 @@ let ] # ── Bitcoin Base (node implementations) ──────────────────── ++ lib.optionals cfg.services.bitcoin [ - { name = "Bitcoin Knots + BIP110"; unit = "bitcoind.service"; type = "system"; icon = "bip110"; enabled = cfg.features.bip110; category = "bitcoin-base"; credentials = [ - { label = "Tor Address — Access from anywhere via Tor Browser"; file = "/var/lib/tor/onion/bitcoind/hostname"; prefix = "http://"; } - ]; } - { name = "Bitcoin Knots"; unit = "bitcoind.service"; type = "system"; icon = "bitcoind"; enabled = cfg.services.bitcoin && !cfg.features.bitcoin-core && !cfg.features.bip110; category = "bitcoin-base"; credentials = [ + { name = "Bitcoin Knots + BIP110"; unit = "bitcoind.service"; type = "system"; icon = "bip110"; enabled = cfg.services.bitcoin && !cfg.features.bitcoin-core; category = "bitcoin-base"; credentials = [ { label = "Tor Address — Access from anywhere via Tor Browser"; file = "/var/lib/tor/onion/bitcoind/hostname"; prefix = "http://"; } ]; } { name = "Bitcoin Core"; unit = "bitcoind.service"; type = "system"; icon = "bitcoin-core"; enabled = cfg.features.bitcoin-core; category = "bitcoin-base"; credentials = [ diff --git a/modules/modules.nix b/modules/modules.nix index 09ef561..aecd688 100755 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -31,7 +31,6 @@ # ── Features (default OFF — enable in custom.nix) ───────── ./haven.nix - ./bip110.nix ./element-calling.nix ./mempool.nix ./bitcoin-core.nix From e0bff2d64087d68820b6530b2d9ed29fbef16754 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 18:55:46 +0000 Subject: [PATCH 003/140] Fix bitcoin-core confirmation dialog: show always when enabling (not just on conflicts) --- app/sovran_systemsos_web/static/js/features.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/app/sovran_systemsos_web/static/js/features.js b/app/sovran_systemsos_web/static/js/features.js index e575cce..794a012 100644 --- a/app/sovran_systemsos_web/static/js/features.js +++ b/app/sovran_systemsos_web/static/js/features.js @@ -413,14 +413,11 @@ function handleFeatureToggle(feat, newEnabled) { }); } - if (conflictNames.length > 0) { - var confirmMsg; - if (feat.id === "bitcoin-core") { - confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Core will replace Bitcoin Knots + BIP110. Your timechain data will be preserved — you will not need to re-download the timechain. Continue?"; - } else { - confirmMsg = "This will disable " + conflictNames.join(", ") + ". Continue?"; - } + if (feat.id === "bitcoin-core") { + var confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Core will replace Bitcoin Knots + BIP110 as the active node. Your timechain data will be preserved — you will not need to re-download the timechain. Continue?"; openFeatureConfirm(confirmMsg, proceedAfterConflictCheck); + } else if (conflictNames.length > 0) { + openFeatureConfirm("This will disable " + conflictNames.join(", ") + ". Continue?", proceedAfterConflictCheck); } else { proceedAfterConflictCheck(); } From 3ad09e478ba84a230dee3dbfa9ed914b5aa13451 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:12:56 +0000 Subject: [PATCH 004/140] Initial plan From e1ae63e8bc9663bd2a4bbea7c559dc98df784305 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:16:36 +0000 Subject: [PATCH 005/140] Add deprecated bip110 no-op shim and Hub migration - modules/core/roles.nix: re-declare bip110 as a nullOr bool no-op option so existing custom.nix files with `lib.mkForce true` continue to evaluate; add config.warnings block that fires only when the stale flag is explicitly set - server.py: add DEPRECATED_FEATURE_IDS constant; skip deprecated ids in _read_hub_overrides and _write_hub_overrides; add _migrate_strip_deprecated_features helper that rewrites the Hub Managed section without deprecated lines on startup; add @app.on_event("startup") handler _startup_migrate_deprecated_features --- app/sovran_systemsos_web/server.py | 52 +++++++++++++++++++++++++++++- modules/core/roles.nix | 24 ++++++++++++++ 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index f5a8d5e..683ca7f 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -265,6 +265,10 @@ FEATURE_REGISTRY = [ }, ] +# Feature ids that have been removed/deprecated. The Hub must never write these +# back into custom.nix, and should strip any it finds (see startup migration). +DEPRECATED_FEATURE_IDS: set[str] = {"bip110"} + # Map feature IDs to their systemd units in config.json FEATURE_SERVICE_MAP = { "rdp": "gnome-remote-desktop.service", @@ -1505,7 +1509,9 @@ def _read_hub_overrides() -> tuple[dict, str | None, str | None, str | None]: r'sovran_systemsOS\.features\.([a-zA-Z0-9_-]+)\s*=\s*(?:lib\.mkForce\s+)?(true|false)\s*;', section, ): - features[m.group(1)] = m.group(2) == "true" + feat_id = m.group(1) + if feat_id not in DEPRECATED_FEATURE_IDS: + features[feat_id] = m.group(2) == "true" for m in re.finditer( r'sovran_systemsOS\.web\.btcpayserver\s*=\s*(?:lib\.mkForce\s+)?(true|false)\s*;', section, @@ -1538,6 +1544,8 @@ def _write_hub_overrides(features: dict, nostr_npub: str | None, timezone: str | """Write the Hub Managed section inside custom.nix.""" lines = [] for feat_id, enabled in features.items(): + if feat_id in DEPRECATED_FEATURE_IDS: + continue val = "true" if enabled else "false" if feat_id == "btcpay-web": lines.append(f" sovran_systemsOS.web.btcpayserver = lib.mkForce {val};") @@ -1583,6 +1591,40 @@ def _write_hub_overrides(features: dict, nostr_npub: str | None, timezone: str | f.write(content) +def _migrate_strip_deprecated_features() -> None: + """One-time migration: remove deprecated feature lines from the Hub Managed + section of custom.nix. Any feature id in DEPRECATED_FEATURE_IDS is dropped + while all other Hub-managed settings (other features, nostr_npub, timezone, + locale) are preserved byte-for-byte in meaning. + + This is a no-op (and never raises) if CUSTOM_NIX is missing, unreadable, or + contains no deprecated lines. + """ + try: + with open(CUSTOM_NIX, "r") as f: + content = f.read() + except (FileNotFoundError, OSError): + return + + # Quick-exit: if none of the deprecated ids appear, nothing to do. + hub_begin = content.find(HUB_BEGIN) + hub_end = content.find(HUB_END) + if hub_begin == -1 or hub_end == -1: + return + section = content[hub_begin:hub_end] + if not any(f"features.{dep_id}" in section for dep_id in DEPRECATED_FEATURE_IDS): + return + + try: + features, nostr_npub, timezone, locale = _read_hub_overrides() + # _read_hub_overrides already excludes DEPRECATED_FEATURE_IDS, so + # calling _write_hub_overrides with its output drops the stale lines. + _write_hub_overrides(features, nostr_npub, timezone, locale) + except Exception: + # Never let a migration failure break startup. + pass + + # ── Feature status helpers ───────────────────────────────────────── def _is_feature_enabled_in_config(feature_id: str) -> bool | None: @@ -4570,6 +4612,14 @@ async def _startup_recover_stale_status(): await loop.run_in_executor(None, _recover_stale_status, REBUILD_STATUS, REBUILD_LOG, REBUILD_UNIT) +@app.on_event("startup") +async def _startup_migrate_deprecated_features(): + """Strip deprecated feature lines (e.g. bip110) from the Hub Managed section + of custom.nix so they are never re-written and do not cause stale warnings.""" + loop = asyncio.get_event_loop() + await loop.run_in_executor(None, _migrate_strip_deprecated_features) + + async def _background_domain_reachability_checker(): """Periodically curl configured domains and cache reachability results.""" await asyncio.sleep(_DOMAIN_REACHABILITY_STARTUP_DELAY) diff --git a/modules/core/roles.nix b/modules/core/roles.nix index 48f6972..0180622 100755 --- a/modules/core/roles.nix +++ b/modules/core/roles.nix @@ -48,6 +48,19 @@ bitcoin-core = lib.mkEnableOption "Bitcoin Core"; rdp = lib.mkEnableOption "Gnome Remote Desktop"; sshd = lib.mkEnableOption "SSH remote access"; + + # Deprecated: BIP-110 is now built into mainline Bitcoin Knots and is the + # default node. This option is retained ONLY so that existing machines with + # `sovran_systemsOS.features.bip110 = lib.mkForce true;` left in their local + # custom.nix continue to evaluate. It has no effect and will be removed in a + # future release once the Hub has cleaned up old custom.nix files. + bip110 = lib.mkOption { + type = lib.types.nullOr lib.types.bool; + default = null; + internal = true; + visible = false; + description = "(Deprecated, no-op) BIP-110 is now built into Bitcoin Knots."; + }; }; # ── Web exposure (controls Caddy vhosts) ────────────────── @@ -88,4 +101,15 @@ description = "Nostr public key (npub1...) for Haven relay"; }; }; + + config = lib.mkIf (config.sovran_systemsOS.features.bip110 != null) { + warnings = [ + '' + sovran_systemsOS.features.bip110 is deprecated and has no effect: + BIP-110 is now built into mainline Bitcoin Knots, which is the default node. + You can safely remove the `sovran_systemsOS.features.bip110` line from + /etc/nixos/custom.nix. The Sovran Hub will also remove it automatically. + '' + ]; + }; } From a652fd69d6ffa045ea53f8b8f0c7921a56ef9496 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:18:28 +0000 Subject: [PATCH 006/140] Address code review: fix whitespace and log migration exceptions --- app/sovran_systemsos_web/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 683ca7f..5db2959 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1608,7 +1608,7 @@ def _migrate_strip_deprecated_features() -> None: # Quick-exit: if none of the deprecated ids appear, nothing to do. hub_begin = content.find(HUB_BEGIN) - hub_end = content.find(HUB_END) + hub_end = content.find(HUB_END) if hub_begin == -1 or hub_end == -1: return section = content[hub_begin:hub_end] @@ -1622,7 +1622,7 @@ def _migrate_strip_deprecated_features() -> None: _write_hub_overrides(features, nostr_npub, timezone, locale) except Exception: # Never let a migration failure break startup. - pass + logger.exception("_migrate_strip_deprecated_features: unexpected error (non-fatal)") # ── Feature status helpers ───────────────────────────────────────── From 9d212675bcde2a188cccdaac07f3f6c4180c478a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:36:51 +0000 Subject: [PATCH 007/140] Initial plan From afb6a2f5151d8235bb7f99a7feedfccacba22b1d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:42:23 +0000 Subject: [PATCH 008/140] Add live BIP-110 deployment status: new helpers, endpoint, badge UI --- app/sovran_systemsos_web/server.py | 133 ++++++++++++++++++ app/sovran_systemsos_web/static/css/tiles.css | 51 +++++++ .../static/js/service-detail.js | 46 ++++++ app/sovran_systemsos_web/static/js/tiles.js | 68 ++++++++- 4 files changed, 297 insertions(+), 1 deletion(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 5db2959..0a436a5 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -2253,6 +2253,9 @@ _BTC_VERSION_CACHE_TTL = 60 # seconds — version doesn't change at runtime # Cache for ``bitcoind --version`` output (available even before RPC is ready) _btcd_version_cache: tuple[float, str | None] = (0.0, None) +# Cache for ``bitcoin-cli getdeploymentinfo`` output (BIP-110 live status) +_btc_deployment_cache: tuple[float, dict | None] = (0.0, None) + # ── Generic service version detection (NixOS store path) ───────── @@ -2367,6 +2370,119 @@ def _get_bitcoin_version_info() -> dict | None: return None +def _get_bitcoin_deployment_info() -> dict | None: + """Call bitcoin-cli getdeploymentinfo and return parsed JSON, or None on error. + + Results are cached for _BTC_VERSION_CACHE_TTL seconds. Never raises. + """ + global _btc_deployment_cache + now = time.monotonic() + cached_at, cached_val = _btc_deployment_cache + if now - cached_at < _BTC_VERSION_CACHE_TTL: + return cached_val + + try: + result = subprocess.run( + ["bitcoin-cli", f"-datadir={BITCOIN_DATADIR}", "getdeploymentinfo"], + capture_output=True, + text=True, + timeout=10, + ) + if result.returncode != 0: + _btc_deployment_cache = (now, None) + return None + info = json.loads(result.stdout) + _btc_deployment_cache = (now, info) + return info + except Exception: + _btc_deployment_cache = (now, None) + return None + + +def _get_bip110_status() -> dict: + """Return a dict describing the live BIP-110 deployment/signaling state. + + The returned struct has four stable keys:: + + { + "supported": bool, # node build is BIP-110-capable + "signaling": bool, # node is actively signaling / locked-in / active + "state": str, # "active" | "locked_in" | "signaling" | + # "not_signaling" | "unsupported" | "unknown" + "source": str, # "getdeploymentinfo" | "subversion" | "none" + } + + Resolution order (authoritative → fallback → honest unknown): + + 1. ``getdeploymentinfo`` (authoritative) — scan the ``deployments`` dict for an + entry whose key (case-insensitive) contains "bip110" or "110". The exact + deployment key name is **not** hard-coded because it may vary across Knots + releases; detection is intentionally generic so that a name change degrades + to "unknown" rather than producing a false result. + + 2. Subversion fallback — if getdeploymentinfo is unavailable or yields no + recognisable BIP-110 entry, inspect the ``subversion`` field from + ``getnetworkinfo``. A case-insensitive match for "bip110" or "uasf" in the + subversion string is treated as "signaling". + + 3. Unknown — if the node is entirely unreachable or neither source is + conclusive, return state="unknown", signaling=False, source="none". + """ + _unknown: dict = {"supported": False, "signaling": False, "state": "unknown", "source": "none"} + + # ── 1. getdeploymentinfo (authoritative) ────────────────────────── + deploy_info = _get_bitcoin_deployment_info() + if deploy_info is not None: + deployments = deploy_info.get("deployments", {}) + if isinstance(deployments, dict): + for key, entry in deployments.items(): + # Generic scan: match key containing "bip110" or "110" + if not ("bip110" in key.lower() or "110" in key.lower()): + continue + if not isinstance(entry, dict): + continue + + # bip9 / bip8 status field + bip9 = entry.get("bip9", {}) or {} + bip8 = entry.get("bip8", {}) or {} + status = ( + bip9.get("status") + or bip8.get("status") + or entry.get("status") + or "" + ).lower() + active = entry.get("active", False) + + if active or status == "active": + return {"supported": True, "signaling": True, "state": "active", "source": "getdeploymentinfo"} + if status == "locked_in": + return {"supported": True, "signaling": True, "state": "locked_in", "source": "getdeploymentinfo"} + if status in ("started", "defined"): + # Check whether the node is currently signaling this period + stats = bip9.get("statistics") or bip8.get("statistics") or {} + signaling = bool(stats.get("signaling", False)) if stats else False + if signaling: + return {"supported": True, "signaling": True, "state": "signaling", "source": "getdeploymentinfo"} + return {"supported": True, "signaling": False, "state": "not_signaling", "source": "getdeploymentinfo"} + if status == "failed": + return {"supported": True, "signaling": False, "state": "not_signaling", "source": "getdeploymentinfo"} + # Entry found but status unrecognised — node supports BIP-110 but state unclear + return {"supported": True, "signaling": False, "state": "unknown", "source": "getdeploymentinfo"} + + # ── 2. Subversion fallback ───────────────────────────────────────── + net_info = _get_bitcoin_version_info() + if net_info is not None: + subversion = net_info.get("subversion", "") or "" + sv_lower = subversion.lower() + if "bip110" in sv_lower or "uasf-bip110" in sv_lower or "uasf" in sv_lower: + return {"supported": True, "signaling": True, "state": "signaling", "source": "subversion"} + # Node is reachable via RPC but no BIP-110 marker found anywhere + return {"supported": False, "signaling": False, "state": "unsupported", "source": "subversion"} + + # ── 3. Node unreachable / RPC not ready ─────────────────────────── + return _unknown + + def _get_bitcoind_version() -> str | None: """Run ``bitcoind --version`` and return the raw version string, or None on error. @@ -2481,6 +2597,19 @@ async def api_bitcoin_version(): } +@app.get("/api/bitcoin/bip110") +async def api_bitcoin_bip110(): + """Return live BIP-110 deployment/signaling status from bitcoin-cli. + + Always returns HTTP 200. When bitcoind is unreachable or the node is mid-IBD + the response will contain ``state = "unknown"`` so the UI can render a neutral + badge rather than an error toast. + """ + loop = asyncio.get_event_loop() + status = await loop.run_in_executor(None, _get_bip110_status) + return status + + @app.get("/api/services") async def api_services(): cfg = load_config() @@ -2661,6 +2790,8 @@ async def api_services(): btc_ver = _format_bitcoin_version(raw_ver, icon=icon) service_data["bitcoin_version"] = btc_ver # backwards compat service_data["version"] = btc_ver + if icon == "bip110": + service_data["bip110"] = await loop.run_in_executor(None, _get_bip110_status) return service_data results = await asyncio.gather(*[get_status(s) for s in services]) @@ -2945,6 +3076,8 @@ async def api_service_detail(unit: str, icon: str | None = None): btc_ver = _format_bitcoin_version(raw_ver, icon=icon) service_detail["bitcoin_version"] = btc_ver # backwards compat service_detail["version"] = btc_ver + if icon == "bip110": + service_detail["bip110"] = await loop.run_in_executor(None, _get_bip110_status) return service_detail diff --git a/app/sovran_systemsos_web/static/css/tiles.css b/app/sovran_systemsos_web/static/css/tiles.css index 32f2278..e8aba2c 100644 --- a/app/sovran_systemsos_web/static/css/tiles.css +++ b/app/sovran_systemsos_web/static/css/tiles.css @@ -155,6 +155,57 @@ white-space: nowrap; } +/* ── BIP-110 status badge (tile + detail modal) ───────────────────── */ + +.tile-bip110-badge { + display: inline-flex; + align-items: center; + gap: 3px; + font-size: 0.64rem; + font-weight: 600; + border-radius: 4px; + padding: 2px 6px; + margin-top: 4px; + white-space: nowrap; + letter-spacing: 0.02em; +} + +.tile-bip110-badge--active { + background: rgba(109, 191, 139, 0.18); + color: var(--green); + border: 1px solid rgba(109, 191, 139, 0.3); +} + +.tile-bip110-badge--locked_in { + background: rgba(94, 173, 138, 0.15); + color: var(--accent-color); + border: 1px solid rgba(94, 173, 138, 0.3); +} + +.tile-bip110-badge--signaling { + background: rgba(94, 173, 138, 0.12); + color: var(--accent-color); + border: 1px solid rgba(94, 173, 138, 0.2); +} + +.tile-bip110-badge--not_signaling { + background: rgba(229, 165, 10, 0.12); + color: var(--yellow); + border: 1px solid rgba(229, 165, 10, 0.25); +} + +.tile-bip110-badge--unsupported { + background: rgba(94, 122, 106, 0.12); + color: var(--grey); + border: 1px solid rgba(94, 122, 106, 0.2); +} + +.tile-bip110-badge--unknown { + background: transparent; + color: var(--text-dim); + border: 1px solid var(--border-color); +} + /* ── Service detail modal sections ───────────────────────────────── */ .svc-detail-section { diff --git a/app/sovran_systemsos_web/static/js/service-detail.js b/app/sovran_systemsos_web/static/js/service-detail.js index 29e1531..87918bf 100644 --- a/app/sovran_systemsos_web/static/js/service-detail.js +++ b/app/sovran_systemsos_web/static/js/service-detail.js @@ -107,6 +107,52 @@ async function openServiceDetailModal(unit, name, icon) { '' + ''; + // Section B2: BIP-110 live status (bip110 tile only) + if (icon === 'bip110' && data.bip110) { + var bip110 = data.bip110; + var bip110State = bip110.state || 'unknown'; + var bip110BadgeCls, bip110Label, bip110Tooltip; + switch (bip110State) { + case 'active': + bip110BadgeCls = 'tile-bip110-badge--active'; + bip110Label = 'BIP\u2011110: Active \u2713'; + bip110Tooltip = 'BIP-110 is active on this node'; + break; + case 'locked_in': + bip110BadgeCls = 'tile-bip110-badge--locked_in'; + bip110Label = 'BIP\u2011110: Locked In'; + bip110Tooltip = 'BIP-110 is locked in and will activate shortly'; + break; + case 'signaling': + bip110BadgeCls = 'tile-bip110-badge--signaling'; + bip110Label = 'BIP\u2011110: Signaling'; + bip110Tooltip = 'Node is signaling readiness for BIP-110'; + break; + case 'not_signaling': + bip110BadgeCls = 'tile-bip110-badge--not_signaling'; + bip110Label = 'BIP\u2011110: Not Signaling'; + bip110Tooltip = 'Node supports BIP-110 but is not signaling this period'; + break; + case 'unsupported': + bip110BadgeCls = 'tile-bip110-badge--unsupported'; + bip110Label = 'BIP\u2011110: Not Supported'; + bip110Tooltip = 'This node build does not include BIP-110'; + break; + default: + bip110BadgeCls = 'tile-bip110-badge--unknown'; + bip110Label = 'BIP\u2011110: \u2014'; + bip110Tooltip = 'Status unavailable (node syncing or RPC not ready)'; + } + var bip110Source = bip110.source ? ' (source: ' + escHtml(bip110.source) + ')' : ''; + html += '
' + + '
BIP-110 Deployment Status
' + + '
' + + '' + escHtml(bip110Label) + '' + + bip110Source + + '
' + + '
'; + } + // Section C: Domain diagnostics (domain services) if (data.needs_domain) { var steps = data.domain_check_steps || []; diff --git a/app/sovran_systemsos_web/static/js/tiles.js b/app/sovran_systemsos_web/static/js/tiles.js index d1bac29..7d8b974 100644 --- a/app/sovran_systemsos_web/static/js/tiles.js +++ b/app/sovran_systemsos_web/static/js/tiles.js @@ -4,6 +4,46 @@ // Keyed by tileId: { progress: float, timestamp: ms } var _btcSyncPrev = {}; +// ── BIP-110 badge helper ────────────────────────────────────────── + +function _renderBip110Badge(bip110) { + if (!bip110) return ''; + var state = bip110.state || 'unknown'; + var label, cls, title; + switch (state) { + case 'active': + label = 'BIP\u2011110: Active \u2713'; + cls = 'tile-bip110-badge--active'; + title = 'BIP-110 is active on this node'; + break; + case 'locked_in': + label = 'BIP\u2011110: Locked In'; + cls = 'tile-bip110-badge--locked_in'; + title = 'BIP-110 is locked in and will activate shortly'; + break; + case 'signaling': + label = 'BIP\u2011110: Signaling'; + cls = 'tile-bip110-badge--signaling'; + title = 'Node is signaling readiness for BIP-110'; + break; + case 'not_signaling': + label = 'BIP\u2011110: Not Signaling'; + cls = 'tile-bip110-badge--not_signaling'; + title = 'Node supports BIP-110 but is not signaling this period'; + break; + case 'unsupported': + label = 'BIP\u2011110: Not Supported'; + cls = 'tile-bip110-badge--unsupported'; + title = 'This node build does not include BIP-110'; + break; + default: + label = 'BIP\u2011110: \u2014'; + cls = 'tile-bip110-badge--unknown'; + title = 'Status unavailable (node syncing or RPC not ready)'; + } + return '
' + escHtml(label) + '
'; +} + // ── Render: initial build ───────────────────────────────────────── function buildTiles(services, categoryLabels) { @@ -165,7 +205,8 @@ function buildTile(svc) { var ver = svc.version || svc.bitcoin_version || ''; var versionLabel = ver ? '
' + escHtml(ver) + '
' : ''; - tile.innerHTML = '' + escHtml(svc.name) + '
' + escHtml(svc.name) + '
' + versionLabel + '
' + st + '
'; + var bip110Badge = (svc.icon === 'bip110') ? _renderBip110Badge(svc.bip110) : ''; + tile.innerHTML = '' + escHtml(svc.name) + '
' + escHtml(svc.name) + '
' + versionLabel + bip110Badge + '
' + st + '
'; tile.style.cursor = "pointer"; tile.addEventListener("click", function() { @@ -265,6 +306,31 @@ function updateTiles(services) { } } } + // Update BIP-110 badge for bip110 tiles + if (svc.icon === 'bip110') { + var badgeHtml = _renderBip110Badge(svc.bip110); + var badgeEl = tile.querySelector(".tile-bip110-badge"); + if (badgeEl) { + // Replace existing badge in-place + var tmp = document.createElement("div"); + tmp.innerHTML = badgeHtml; + var newBadge = tmp.firstElementChild; + if (newBadge) { + badgeEl.replaceWith(newBadge); + } else { + badgeEl.remove(); + } + } else if (badgeHtml) { + // Insert badge after version label (or after tile-name if no version) + var anchorEl = tile.querySelector(".tile-version") || tile.querySelector(".tile-name"); + if (anchorEl) { + var tmpDiv = document.createElement("div"); + tmpDiv.innerHTML = badgeHtml; + var newBadgeEl = tmpDiv.firstElementChild; + if (newBadgeEl) anchorEl.insertAdjacentElement("afterend", newBadgeEl); + } + } + } } } } From bf56dfdb68510a1a8c78d62d4a385f323b0f578f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:46:40 +0000 Subject: [PATCH 009/140] Address code review: tighten bip110 key matching, fix redundant condition, extract shared badge config, add CSS classes --- app/sovran_systemsos_web/server.py | 10 +++-- app/sovran_systemsos_web/static/css/tiles.css | 12 ++++++ app/sovran_systemsos_web/static/js/helpers.js | 14 +++++++ .../static/js/service-detail.js | 39 ++----------------- app/sovran_systemsos_web/static/js/tiles.js | 35 +---------------- 5 files changed, 38 insertions(+), 72 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 0a436a5..2eea02f 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -2436,8 +2436,10 @@ def _get_bip110_status() -> dict: deployments = deploy_info.get("deployments", {}) if isinstance(deployments, dict): for key, entry in deployments.items(): - # Generic scan: match key containing "bip110" or "110" - if not ("bip110" in key.lower() or "110" in key.lower()): + # Generic scan: match key that contains "bip110" (case-insensitive). + # Deliberately not matching bare "110" to avoid false positives on + # unrelated deployments whose names happen to include that digit sequence. + if "bip110" not in key.lower(): continue if not isinstance(entry, dict): continue @@ -2460,7 +2462,7 @@ def _get_bip110_status() -> dict: if status in ("started", "defined"): # Check whether the node is currently signaling this period stats = bip9.get("statistics") or bip8.get("statistics") or {} - signaling = bool(stats.get("signaling", False)) if stats else False + signaling = bool(stats.get("signaling", False)) if signaling: return {"supported": True, "signaling": True, "state": "signaling", "source": "getdeploymentinfo"} return {"supported": True, "signaling": False, "state": "not_signaling", "source": "getdeploymentinfo"} @@ -2474,7 +2476,7 @@ def _get_bip110_status() -> dict: if net_info is not None: subversion = net_info.get("subversion", "") or "" sv_lower = subversion.lower() - if "bip110" in sv_lower or "uasf-bip110" in sv_lower or "uasf" in sv_lower: + if "bip110" in sv_lower or "uasf-bip110" in sv_lower: return {"supported": True, "signaling": True, "state": "signaling", "source": "subversion"} # Node is reachable via RPC but no BIP-110 marker found anywhere return {"supported": False, "signaling": False, "state": "unsupported", "source": "subversion"} diff --git a/app/sovran_systemsos_web/static/css/tiles.css b/app/sovran_systemsos_web/static/css/tiles.css index e8aba2c..94e9f7f 100644 --- a/app/sovran_systemsos_web/static/css/tiles.css +++ b/app/sovran_systemsos_web/static/css/tiles.css @@ -206,6 +206,18 @@ border: 1px solid var(--border-color); } +.bip110-status-row { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; +} + +.bip110-source-label { + color: var(--text-dim); + font-size: 0.75rem; +} + /* ── Service detail modal sections ───────────────────────────────── */ .svc-detail-section { diff --git a/app/sovran_systemsos_web/static/js/helpers.js b/app/sovran_systemsos_web/static/js/helpers.js index 470e711..d452fca 100644 --- a/app/sovran_systemsos_web/static/js/helpers.js +++ b/app/sovran_systemsos_web/static/js/helpers.js @@ -60,3 +60,17 @@ async function apiFetch(path, options) { } return res.json(); } + + +// ── BIP-110 badge state config ──────────────────────────────────── +// Shared lookup used by tiles.js and service-detail.js. +// Keys match the "state" values returned by /api/bitcoin/bip110. + +var BIP110_BADGE_CONFIG = { + active: { cls: 'tile-bip110-badge--active', label: 'BIP\u2011110: Active \u2713', title: 'BIP-110 is active on this node' }, + locked_in: { cls: 'tile-bip110-badge--locked_in', label: 'BIP\u2011110: Locked In', title: 'BIP-110 is locked in and will activate shortly' }, + signaling: { cls: 'tile-bip110-badge--signaling', label: 'BIP\u2011110: Signaling', title: 'Node is signaling readiness for BIP-110' }, + not_signaling: { cls: 'tile-bip110-badge--not_signaling',label: 'BIP\u2011110: Not Signaling', title: 'Node supports BIP-110 but is not signaling this period' }, + unsupported: { cls: 'tile-bip110-badge--unsupported', label: 'BIP\u2011110: Not Supported', title: 'This node build does not include BIP-110' }, + unknown: { cls: 'tile-bip110-badge--unknown', label: 'BIP\u2011110: \u2014', title: 'Status unavailable (node syncing or RPC not ready)' } +}; diff --git a/app/sovran_systemsos_web/static/js/service-detail.js b/app/sovran_systemsos_web/static/js/service-detail.js index 87918bf..a86a6c6 100644 --- a/app/sovran_systemsos_web/static/js/service-detail.js +++ b/app/sovran_systemsos_web/static/js/service-detail.js @@ -111,43 +111,12 @@ async function openServiceDetailModal(unit, name, icon) { if (icon === 'bip110' && data.bip110) { var bip110 = data.bip110; var bip110State = bip110.state || 'unknown'; - var bip110BadgeCls, bip110Label, bip110Tooltip; - switch (bip110State) { - case 'active': - bip110BadgeCls = 'tile-bip110-badge--active'; - bip110Label = 'BIP\u2011110: Active \u2713'; - bip110Tooltip = 'BIP-110 is active on this node'; - break; - case 'locked_in': - bip110BadgeCls = 'tile-bip110-badge--locked_in'; - bip110Label = 'BIP\u2011110: Locked In'; - bip110Tooltip = 'BIP-110 is locked in and will activate shortly'; - break; - case 'signaling': - bip110BadgeCls = 'tile-bip110-badge--signaling'; - bip110Label = 'BIP\u2011110: Signaling'; - bip110Tooltip = 'Node is signaling readiness for BIP-110'; - break; - case 'not_signaling': - bip110BadgeCls = 'tile-bip110-badge--not_signaling'; - bip110Label = 'BIP\u2011110: Not Signaling'; - bip110Tooltip = 'Node supports BIP-110 but is not signaling this period'; - break; - case 'unsupported': - bip110BadgeCls = 'tile-bip110-badge--unsupported'; - bip110Label = 'BIP\u2011110: Not Supported'; - bip110Tooltip = 'This node build does not include BIP-110'; - break; - default: - bip110BadgeCls = 'tile-bip110-badge--unknown'; - bip110Label = 'BIP\u2011110: \u2014'; - bip110Tooltip = 'Status unavailable (node syncing or RPC not ready)'; - } - var bip110Source = bip110.source ? ' (source: ' + escHtml(bip110.source) + ')' : ''; + var bip110Cfg = BIP110_BADGE_CONFIG[bip110State] || BIP110_BADGE_CONFIG.unknown; + var bip110Source = bip110.source ? ' (source: ' + escHtml(bip110.source) + ')' : ''; html += '
' + '
BIP-110 Deployment Status
' + - '
' + - '' + escHtml(bip110Label) + '' + + '
' + + '' + escHtml(bip110Cfg.label) + '' + bip110Source + '
' + '
'; diff --git a/app/sovran_systemsos_web/static/js/tiles.js b/app/sovran_systemsos_web/static/js/tiles.js index 7d8b974..045ccd2 100644 --- a/app/sovran_systemsos_web/static/js/tiles.js +++ b/app/sovran_systemsos_web/static/js/tiles.js @@ -9,39 +9,8 @@ var _btcSyncPrev = {}; function _renderBip110Badge(bip110) { if (!bip110) return ''; var state = bip110.state || 'unknown'; - var label, cls, title; - switch (state) { - case 'active': - label = 'BIP\u2011110: Active \u2713'; - cls = 'tile-bip110-badge--active'; - title = 'BIP-110 is active on this node'; - break; - case 'locked_in': - label = 'BIP\u2011110: Locked In'; - cls = 'tile-bip110-badge--locked_in'; - title = 'BIP-110 is locked in and will activate shortly'; - break; - case 'signaling': - label = 'BIP\u2011110: Signaling'; - cls = 'tile-bip110-badge--signaling'; - title = 'Node is signaling readiness for BIP-110'; - break; - case 'not_signaling': - label = 'BIP\u2011110: Not Signaling'; - cls = 'tile-bip110-badge--not_signaling'; - title = 'Node supports BIP-110 but is not signaling this period'; - break; - case 'unsupported': - label = 'BIP\u2011110: Not Supported'; - cls = 'tile-bip110-badge--unsupported'; - title = 'This node build does not include BIP-110'; - break; - default: - label = 'BIP\u2011110: \u2014'; - cls = 'tile-bip110-badge--unknown'; - title = 'Status unavailable (node syncing or RPC not ready)'; - } - return '
' + escHtml(label) + '
'; + var cfg = BIP110_BADGE_CONFIG[state] || BIP110_BADGE_CONFIG.unknown; + return '
' + escHtml(cfg.label) + '
'; } // ── Render: initial build ───────────────────────────────────────── From 44737f5571a4a0670d0a3206185195d9c253bd49 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 19:49:01 +0000 Subject: [PATCH 010/140] Fix docstring accuracy, extract _firstElementFromHtml helper, address all code review feedback --- app/sovran_systemsos_web/server.py | 6 +++--- app/sovran_systemsos_web/static/js/tiles.js | 20 +++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 2eea02f..a8e043d 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -2415,15 +2415,15 @@ def _get_bip110_status() -> dict: Resolution order (authoritative → fallback → honest unknown): 1. ``getdeploymentinfo`` (authoritative) — scan the ``deployments`` dict for an - entry whose key (case-insensitive) contains "bip110" or "110". The exact + entry whose key (case-insensitive) contains "bip110". The exact deployment key name is **not** hard-coded because it may vary across Knots releases; detection is intentionally generic so that a name change degrades to "unknown" rather than producing a false result. 2. Subversion fallback — if getdeploymentinfo is unavailable or yields no recognisable BIP-110 entry, inspect the ``subversion`` field from - ``getnetworkinfo``. A case-insensitive match for "bip110" or "uasf" in the - subversion string is treated as "signaling". + ``getnetworkinfo``. A case-insensitive match for "bip110" or "uasf-bip110" + in the subversion string is treated as "signaling". 3. Unknown — if the node is entirely unreachable or neither source is conclusive, return state="unknown", signaling=False, source="none". diff --git a/app/sovran_systemsos_web/static/js/tiles.js b/app/sovran_systemsos_web/static/js/tiles.js index 045ccd2..e07bf04 100644 --- a/app/sovran_systemsos_web/static/js/tiles.js +++ b/app/sovran_systemsos_web/static/js/tiles.js @@ -13,6 +13,12 @@ function _renderBip110Badge(bip110) { return '
' + escHtml(cfg.label) + '
'; } +function _firstElementFromHtml(html) { + var tmp = document.createElement("div"); + tmp.innerHTML = html; + return tmp.firstElementChild || null; +} + // ── Render: initial build ───────────────────────────────────────── function buildTiles(services, categoryLabels) { @@ -281,21 +287,13 @@ function updateTiles(services) { var badgeEl = tile.querySelector(".tile-bip110-badge"); if (badgeEl) { // Replace existing badge in-place - var tmp = document.createElement("div"); - tmp.innerHTML = badgeHtml; - var newBadge = tmp.firstElementChild; - if (newBadge) { - badgeEl.replaceWith(newBadge); - } else { - badgeEl.remove(); - } + var newBadge = _firstElementFromHtml(badgeHtml); + if (newBadge) { badgeEl.replaceWith(newBadge); } else { badgeEl.remove(); } } else if (badgeHtml) { // Insert badge after version label (or after tile-name if no version) var anchorEl = tile.querySelector(".tile-version") || tile.querySelector(".tile-name"); if (anchorEl) { - var tmpDiv = document.createElement("div"); - tmpDiv.innerHTML = badgeHtml; - var newBadgeEl = tmpDiv.firstElementChild; + var newBadgeEl = _firstElementFromHtml(badgeHtml); if (newBadgeEl) anchorEl.insertAdjacentElement("afterend", newBadgeEl); } } From 370786d1dc746f632b0d2b2022d581560ae4ec25 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 20:07:44 +0000 Subject: [PATCH 011/140] Initial plan From 732a7cd260de73bdfc44c5e2f8f724e76ee2559f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 20:11:58 +0000 Subject: [PATCH 012/140] Fix BIP110 detection for reduced_data deployments --- app/sovran_systemsos_web/server.py | 64 +++++-- app/sovran_systemsos_web/static/js/helpers.js | 12 +- app/tests/test_bip110_status.py | 166 ++++++++++++++++++ 3 files changed, 221 insertions(+), 21 deletions(-) create mode 100644 app/tests/test_bip110_status.py diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index a8e043d..6d4b8d7 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -2256,6 +2256,13 @@ _btcd_version_cache: tuple[float, str | None] = (0.0, None) # Cache for ``bitcoin-cli getdeploymentinfo`` output (BIP-110 live status) _btc_deployment_cache: tuple[float, dict | None] = (0.0, None) +# Bitcoin Knots exposes BIP-110 as the `reduced_data` versionbits deployment +# (RDTS, bit 4) in getdeploymentinfo. See Knots src/deploymentinfo.cpp, +# src/kernel/chainparams.cpp, and doc/bips.md. +BIP110_DEPLOYMENT_NAMES = {"reduced_data", "rdts", "bip110", "uasf-bip110"} +BIP110_VERSIONBITS_BIT = 4 +BIP110_SUBVERSION_MARKERS = {"bip110", "uasf-bip110", "reduced_data", "rdts"} + # ── Generic service version detection (NixOS store path) ───────── @@ -2414,16 +2421,16 @@ def _get_bip110_status() -> dict: Resolution order (authoritative → fallback → honest unknown): - 1. ``getdeploymentinfo`` (authoritative) — scan the ``deployments`` dict for an - entry whose key (case-insensitive) contains "bip110". The exact - deployment key name is **not** hard-coded because it may vary across Knots - releases; detection is intentionally generic so that a name change degrades - to "unknown" rather than producing a false result. + 1. ``getdeploymentinfo`` (authoritative) — scan ``deployments`` for BIP-110. + Bitcoin Knots currently exposes BIP-110 as ``reduced_data`` (RDTS, bit 4; + see Knots deploymentinfo.cpp / chainparams.cpp / doc/bips.md), so matching + first uses known deployment names, then falls back to versionbits bit 4. 2. Subversion fallback — if getdeploymentinfo is unavailable or yields no recognisable BIP-110 entry, inspect the ``subversion`` field from - ``getnetworkinfo``. A case-insensitive match for "bip110" or "uasf-bip110" - in the subversion string is treated as "signaling". + ``getnetworkinfo``. A case-insensitive match for known BIP-110 markers + (including "bip110", "uasf-bip110", "reduced_data", "rdts") is treated as + "signaling". 3. Unknown — if the node is entirely unreachable or neither source is conclusive, return state="unknown", signaling=False, source="none". @@ -2435,14 +2442,37 @@ def _get_bip110_status() -> dict: if deploy_info is not None: deployments = deploy_info.get("deployments", {}) if isinstance(deployments, dict): + matched_entry: dict | None = None + + # Primary match: known deployment names (case-insensitive contains) for key, entry in deployments.items(): - # Generic scan: match key that contains "bip110" (case-insensitive). - # Deliberately not matching bare "110" to avoid false positives on - # unrelated deployments whose names happen to include that digit sequence. - if "bip110" not in key.lower(): - continue if not isinstance(entry, dict): continue + key_lower = key.lower() + if not any(name in key_lower for name in BIP110_DEPLOYMENT_NAMES): + continue + matched_entry = entry + break + + # Secondary match: versionbits bit (fallback only) + if matched_entry is None: + for _, entry in deployments.items(): + if not isinstance(entry, dict): + continue + bip9 = entry.get("bip9", {}) or {} + bip8 = entry.get("bip8", {}) or {} + bit = bip9.get("bit") + if bit is None: + bit = bip8.get("bit") + if bit is None: + bit = entry.get("bit") + if bit != BIP110_VERSIONBITS_BIT: + continue + matched_entry = entry + break + + if matched_entry is not None: + entry = matched_entry # bip9 / bip8 status field bip9 = entry.get("bip9", {}) or {} @@ -2460,9 +2490,13 @@ def _get_bip110_status() -> dict: if status == "locked_in": return {"supported": True, "signaling": True, "state": "locked_in", "source": "getdeploymentinfo"} if status in ("started", "defined"): - # Check whether the node is currently signaling this period + # Check whether deployment is currently signaling in this period. stats = bip9.get("statistics") or bip8.get("statistics") or {} - signaling = bool(stats.get("signaling", False)) + signaling = bool( + stats.get("signaling") + or stats.get("signalling") + or (isinstance(stats.get("count"), int) and stats.get("count", 0) > 0) + ) if signaling: return {"supported": True, "signaling": True, "state": "signaling", "source": "getdeploymentinfo"} return {"supported": True, "signaling": False, "state": "not_signaling", "source": "getdeploymentinfo"} @@ -2476,7 +2510,7 @@ def _get_bip110_status() -> dict: if net_info is not None: subversion = net_info.get("subversion", "") or "" sv_lower = subversion.lower() - if "bip110" in sv_lower or "uasf-bip110" in sv_lower: + if any(marker in sv_lower for marker in BIP110_SUBVERSION_MARKERS): return {"supported": True, "signaling": True, "state": "signaling", "source": "subversion"} # Node is reachable via RPC but no BIP-110 marker found anywhere return {"supported": False, "signaling": False, "state": "unsupported", "source": "subversion"} diff --git a/app/sovran_systemsos_web/static/js/helpers.js b/app/sovran_systemsos_web/static/js/helpers.js index d452fca..24f8caf 100644 --- a/app/sovran_systemsos_web/static/js/helpers.js +++ b/app/sovran_systemsos_web/static/js/helpers.js @@ -67,10 +67,10 @@ async function apiFetch(path, options) { // Keys match the "state" values returned by /api/bitcoin/bip110. var BIP110_BADGE_CONFIG = { - active: { cls: 'tile-bip110-badge--active', label: 'BIP\u2011110: Active \u2713', title: 'BIP-110 is active on this node' }, - locked_in: { cls: 'tile-bip110-badge--locked_in', label: 'BIP\u2011110: Locked In', title: 'BIP-110 is locked in and will activate shortly' }, - signaling: { cls: 'tile-bip110-badge--signaling', label: 'BIP\u2011110: Signaling', title: 'Node is signaling readiness for BIP-110' }, - not_signaling: { cls: 'tile-bip110-badge--not_signaling',label: 'BIP\u2011110: Not Signaling', title: 'Node supports BIP-110 but is not signaling this period' }, - unsupported: { cls: 'tile-bip110-badge--unsupported', label: 'BIP\u2011110: Not Supported', title: 'This node build does not include BIP-110' }, - unknown: { cls: 'tile-bip110-badge--unknown', label: 'BIP\u2011110: \u2014', title: 'Status unavailable (node syncing or RPC not ready)' } + active: { cls: 'tile-bip110-badge--active', label: 'Active', title: 'BIP-110 is active on this node' }, + locked_in: { cls: 'tile-bip110-badge--locked_in', label: 'Locked In', title: 'BIP-110 is locked in and will activate shortly' }, + signaling: { cls: 'tile-bip110-badge--signaling', label: 'Signaling', title: 'Node is signaling readiness for BIP-110' }, + not_signaling: { cls: 'tile-bip110-badge--not_signaling',label: 'Not Signaling', title: 'Node supports BIP-110 but is not signaling this period' }, + unsupported: { cls: 'tile-bip110-badge--unsupported', label: 'Not Supported', title: 'This node build does not include BIP-110' }, + unknown: { cls: 'tile-bip110-badge--unknown', label: '\u2014', title: 'Status unavailable (node syncing or RPC not ready)' } }; diff --git a/app/tests/test_bip110_status.py b/app/tests/test_bip110_status.py new file mode 100644 index 0000000..fafec4f --- /dev/null +++ b/app/tests/test_bip110_status.py @@ -0,0 +1,166 @@ +import unittest +from unittest.mock import patch +from pathlib import Path +import sys +import types + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + + +def _install_web_stubs(): + if "fastapi" in sys.modules: + return + + class _HTTPException(Exception): + def __init__(self, status_code=None, detail=None): + super().__init__(detail) + self.status_code = status_code + self.detail = detail + + class _FastAPI: + def __init__(self, *args, **kwargs): + pass + + def mount(self, *args, **kwargs): + return None + + def add_middleware(self, *args, **kwargs): + return None + + def __getattr__(self, _name): + def _decorator_factory(*args, **kwargs): + def _decorator(func): + return func + + return _decorator + + return _decorator_factory + + class _BaseModel: + pass + + class _StaticFiles: + def __init__(self, *args, **kwargs): + pass + + class _Jinja2Templates: + def __init__(self, *args, **kwargs): + pass + + class _BaseHTTPMiddleware: + pass + + fastapi_module = types.ModuleType("fastapi") + fastapi_module.FastAPI = _FastAPI + fastapi_module.HTTPException = _HTTPException + sys.modules["fastapi"] = fastapi_module + + responses_module = types.ModuleType("fastapi.responses") + responses_module.HTMLResponse = object + responses_module.JSONResponse = object + responses_module.RedirectResponse = object + sys.modules["fastapi.responses"] = responses_module + + staticfiles_module = types.ModuleType("fastapi.staticfiles") + staticfiles_module.StaticFiles = _StaticFiles + sys.modules["fastapi.staticfiles"] = staticfiles_module + + templating_module = types.ModuleType("fastapi.templating") + templating_module.Jinja2Templates = _Jinja2Templates + sys.modules["fastapi.templating"] = templating_module + + requests_module = types.ModuleType("fastapi.requests") + requests_module.Request = object + sys.modules["fastapi.requests"] = requests_module + + pydantic_module = types.ModuleType("pydantic") + pydantic_module.BaseModel = _BaseModel + sys.modules["pydantic"] = pydantic_module + + starlette_base_module = types.ModuleType("starlette.middleware.base") + starlette_base_module.BaseHTTPMiddleware = _BaseHTTPMiddleware + sys.modules["starlette.middleware.base"] = starlette_base_module + + starlette_middleware_module = types.ModuleType("starlette.middleware") + starlette_middleware_module.base = starlette_base_module + sys.modules["starlette.middleware"] = starlette_middleware_module + + starlette_module = types.ModuleType("starlette") + starlette_module.middleware = starlette_middleware_module + sys.modules["starlette"] = starlette_module + + +_install_web_stubs() +from sovran_systemsos_web import server + + +class Bip110StatusTests(unittest.TestCase): + def _status(self, deploy_info, net_info): + with patch.object(server, "_get_bitcoin_deployment_info", return_value=deploy_info), patch.object( + server, "_get_bitcoin_version_info", return_value=net_info + ): + return server._get_bip110_status() + + def test_started_reduced_data_reports_signaling(self): + deploy_info = { + "deployments": { + "reduced_data": { + "type": "bip9", + "active": False, + "bip9": { + "bit": 4, + "status": "started", + "statistics": {"elapsed": 833, "count": 4, "threshold": 1109}, + "signalling": "--#--", + }, + } + } + } + + result = self._status(deploy_info, {"subversion": "/Satoshi:29.0.0/"}) + self.assertEqual( + result, + {"supported": True, "signaling": True, "state": "signaling", "source": "getdeploymentinfo"}, + ) + + def test_active_reduced_data_reports_active(self): + deploy_info = { + "deployments": {"reduced_data": {"active": True, "bip9": {"bit": 4, "status": "active"}}} + } + + result = self._status(deploy_info, {"subversion": "/Satoshi:29.0.0/"}) + self.assertEqual(result["state"], "active") + self.assertTrue(result["supported"]) + self.assertTrue(result["signaling"]) + self.assertEqual(result["source"], "getdeploymentinfo") + + def test_locked_in_reduced_data_reports_locked_in(self): + deploy_info = { + "deployments": {"reduced_data": {"active": False, "bip9": {"bit": 4, "status": "locked_in"}}} + } + + result = self._status(deploy_info, {"subversion": "/Satoshi:29.0.0/"}) + self.assertEqual(result["state"], "locked_in") + self.assertTrue(result["supported"]) + self.assertTrue(result["signaling"]) + self.assertEqual(result["source"], "getdeploymentinfo") + + def test_no_bip110_deployment_and_plain_subversion_reports_unsupported(self): + deploy_info = { + "deployments": { + "taproot": {"type": "bip9", "active": True, "bip9": {"bit": 2, "status": "active"}}, + } + } + result = self._status(deploy_info, {"subversion": "/Satoshi:27.0.0/"}) + self.assertEqual( + result, + {"supported": False, "signaling": False, "state": "unsupported", "source": "subversion"}, + ) + + def test_node_unreachable_reports_unknown(self): + result = self._status(None, None) + self.assertEqual(result, {"supported": False, "signaling": False, "state": "unknown", "source": "none"}) + + +if __name__ == "__main__": + unittest.main() From 00b5bf5166c06f1ec32c1f0f8b798fa246bb8ef3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Jun 2026 20:15:35 +0000 Subject: [PATCH 013/140] Refine BIP110 matching and add regression coverage --- app/sovran_systemsos_web/server.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 6d4b8d7..4262ea8 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -2437,6 +2437,16 @@ def _get_bip110_status() -> dict: """ _unknown: dict = {"supported": False, "signaling": False, "state": "unknown", "source": "none"} + def _deployment_bit(entry: dict) -> int | None: + bip9 = entry.get("bip9", {}) or {} + bip8 = entry.get("bip8", {}) or {} + bit = bip9.get("bit") + if bit is None: + bit = bip8.get("bit") + if bit is None: + bit = entry.get("bit") + return bit + # ── 1. getdeploymentinfo (authoritative) ────────────────────────── deploy_info = _get_bitcoin_deployment_info() if deploy_info is not None: @@ -2444,12 +2454,12 @@ def _get_bip110_status() -> dict: if isinstance(deployments, dict): matched_entry: dict | None = None - # Primary match: known deployment names (case-insensitive contains) + # Primary match: known deployment names (case-insensitive exact match) for key, entry in deployments.items(): if not isinstance(entry, dict): continue key_lower = key.lower() - if not any(name in key_lower for name in BIP110_DEPLOYMENT_NAMES): + if key_lower not in BIP110_DEPLOYMENT_NAMES: continue matched_entry = entry break @@ -2459,14 +2469,7 @@ def _get_bip110_status() -> dict: for _, entry in deployments.items(): if not isinstance(entry, dict): continue - bip9 = entry.get("bip9", {}) or {} - bip8 = entry.get("bip8", {}) or {} - bit = bip9.get("bit") - if bit is None: - bit = bip8.get("bit") - if bit is None: - bit = entry.get("bit") - if bit != BIP110_VERSIONBITS_BIT: + if _deployment_bit(entry) != BIP110_VERSIONBITS_BIT: continue matched_entry = entry break @@ -2492,10 +2495,13 @@ def _get_bip110_status() -> dict: if status in ("started", "defined"): # Check whether deployment is currently signaling in this period. stats = bip9.get("statistics") or bip8.get("statistics") or {} + # Some Knots outputs expose only ``count`` (not explicit signaling bool), + # so treat count>0 as a conservative signaling indicator for this period. + count = stats.get("count") signaling = bool( stats.get("signaling") or stats.get("signalling") - or (isinstance(stats.get("count"), int) and stats.get("count", 0) > 0) + or (isinstance(count, int) and count > 0) ) if signaling: return {"supported": True, "signaling": True, "state": "signaling", "source": "getdeploymentinfo"} From 7f185b03550611b7159b909b8b9b0af73d8cdd6b Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Thu, 4 Jun 2026 16:06:58 -0500 Subject: [PATCH 014/140] moved to new bitcoin-knots with bip110 --- modules/bitcoinecosystem.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/bitcoinecosystem.nix b/modules/bitcoinecosystem.nix index ffe27f8..e5e9168 100755 --- a/modules/bitcoinecosystem.nix +++ b/modules/bitcoinecosystem.nix @@ -4,7 +4,7 @@ lib.mkIf config.sovran_systemsOS.services.bitcoin { services.bitcoind = { enable = true; - package = config.nix-bitcoin.pkgs.bitcoind-knots; + package = pkgs.bitcoind-knots; dataDir = "/run/media/Second_Drive/BTCEcoandBackup/Bitcoin_Node"; txindex = true; tor.proxy = true; From d9811d2375754cae521720fc55f55cd9209ca17f Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Fri, 5 Jun 2026 10:04:13 -0500 Subject: [PATCH 015/140] updated stable branch --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 1b6b366..0015b85 100755 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,7 @@ nix-bitcoin.url = "github:fort-nix/nix-bitcoin/release"; nixvim.url = "github:nix-community/nixvim"; btc-clients.url = "github:emmanuelrosa/btc-clients-nix"; - nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11"; + nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05"; }; outputs = { self, nixpkgs, nix-bitcoin, nixvim, btc-clients, nixpkgs-stable, ... }: From 2903a61944dba020ba480a11188818c883e8c69d Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Fri, 5 Jun 2026 10:27:51 -0500 Subject: [PATCH 016/140] updated nix packages --- flake.lock | 92 +++++++++++++++++------------------------------------- 1 file changed, 29 insertions(+), 63 deletions(-) diff --git a/flake.lock b/flake.lock index ee2212c..a2a534b 100755 --- a/flake.lock +++ b/flake.lock @@ -1,33 +1,15 @@ { "nodes": { - "bip110": { + "btc-clients": { "inputs": { "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1778967282, - "narHash": "sha256-0g9RvVCD6zxY2vy54GhbB1OeeEZdKuxTr9r0whcpRjQ=", - "owner": "emmanuelrosa", - "repo": "bitcoin-knots-bip-110-nix", - "rev": "8d23ed98940d70e42ee870d719677a073a0a5920", - "type": "github" - }, - "original": { - "owner": "emmanuelrosa", - "repo": "bitcoin-knots-bip-110-nix", - "type": "github" - } - }, - "btc-clients": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1779889285, - "narHash": "sha256-5QOMNn/rxJjsy9n2pAG5+AwUXOAPXSzcr62y1tGHXKA=", + "lastModified": 1780397635, + "narHash": "sha256-6WH7LKD6i91VLWoz4mEpoULtqVinCEZxG7ZjJPMSi3k=", "owner": "emmanuelrosa", "repo": "btc-clients-nix", - "rev": "9a3dd86e11ea5fb17ace9043aa3d0d5ed359a3ca", + "rev": "feacd7684dc6bfcd49c57764944a2049bbd71924", "type": "github" }, "original": { @@ -105,7 +87,7 @@ "inputs": { "extra-container": "extra-container", "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "nixpkgs-25_05": "nixpkgs-25_05", "nixpkgs-unstable": "nixpkgs-unstable" }, @@ -126,16 +108,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1777728799, - "narHash": "sha256-z7jjYQqhkFKab92VQ3duB7QVO7f7Y62qTFrJYXO/lyo=", + "lastModified": 1780218263, + "narHash": "sha256-T/f0pPDrH3Qc1VXyQXbK7yfHWRn90l3xwplc/nsxin4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4b2287113c2f9a2331c04899b2e2e5ab92dea9c5", + "rev": "7fc393d1b46fa000d48ff14e8b6a3c9985f03af0", "type": "github" }, "original": { "owner": "nixos", - "ref": "master", "repo": "nixpkgs", "type": "github" } @@ -158,16 +139,16 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1751274312, - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", + "lastModified": 1780453794, + "narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", + "rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-24.11", + "ref": "nixos-26.05", "repo": "nixpkgs", "type": "github" } @@ -189,21 +170,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1777728799, - "narHash": "sha256-z7jjYQqhkFKab92VQ3duB7QVO7f7Y62qTFrJYXO/lyo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4b2287113c2f9a2331c04899b2e2e5ab92dea9c5", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1778737229, "narHash": "sha256-6xWoytx8jFW4PF1GjRm/i/53trbpKGfz6zjzQGBr4cI=", @@ -219,13 +185,13 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { - "lastModified": 1779560665, - "narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", + "lastModified": 1780243769, + "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", + "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", "type": "github" }, "original": { @@ -235,13 +201,13 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1779259093, - "narHash": "sha256-7DKWmH23hL2eYdkxCKeqj2i+yljTKuU+3Nk1UPHOnxc=", + "lastModified": 1780336545, + "narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d99b013d5d1931ad77fe3912ed218170dec5d9a4", + "rev": "4df1b885d76a54e1aa1a318f8d16fd6005b6401f", "type": "github" }, "original": { @@ -254,15 +220,15 @@ "nixvim": { "inputs": { "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "systems": "systems_2" }, "locked": { - "lastModified": 1779816597, - "narHash": "sha256-Kgod3gZlhSp6WozZ2pFaclXbWpjs6kQLAtldoxb85Lc=", + "lastModified": 1780646548, + "narHash": "sha256-Ckyl/l1XBmEwnaHcHD8PvBZk1uph0NqwbJ//CAvB7iE=", "owner": "nix-community", "repo": "nixvim", - "rev": "297f9341476ba7f821a42d7a2805e206ef8c6ef8", + "rev": "816a15282e58678dde831477964987d0262d4293", "type": "github" }, "original": { @@ -273,10 +239,9 @@ }, "root": { "inputs": { - "bip110": "bip110", "btc-clients": "btc-clients", "nix-bitcoin": "nix-bitcoin", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "nixpkgs-stable": "nixpkgs-stable", "nixvim": "nixvim" } @@ -298,15 +263,16 @@ }, "systems_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1774449309, + "narHash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=", "owner": "nix-systems", "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "rev": "c29398b59d2048c4ab79345812849c9bd15e9150", "type": "github" }, "original": { "owner": "nix-systems", + "ref": "future-26.11", "repo": "default", "type": "github" } From 6c48a9e2391b787c8bb45b34bb9d293bb03edf4d Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Fri, 5 Jun 2026 10:29:20 -0500 Subject: [PATCH 017/140] sync and removed element-desktop and bitwarden desktop --- configuration.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configuration.nix b/configuration.nix index 7863170..73c120b 100644 --- a/configuration.nix +++ b/configuration.nix @@ -145,10 +145,10 @@ ranger fastfetch gedit openssl pwgen aspell aspellDicts.en lm_sensors hunspell hunspellDicts.en_US - synadm brave dua bitwarden-desktop + synadm brave dua gparted pv unzip parted screen zenity libargon2 gnome-terminal libreoffice-fresh - dig firefox element-desktop wp-cli axel + dig firefox wp-cli axel lk-jwt-service livekit-libwebrtc livekit-cli livekit matrix-synapse age ]; From 7a3a39027569fbe5e63015131748184e2d82add1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:56:09 +0000 Subject: [PATCH 018/140] Initial plan From dae409e1065fb6295416fc57ff49816fd7c4cd64 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Jun 2026 18:13:16 +0000 Subject: [PATCH 019/140] Plan README changes with placeholder screenshot --- assets/desktop-screenshot.png | 1485 +++++++++++++++++++++++++++++++++ 1 file changed, 1485 insertions(+) create mode 100644 assets/desktop-screenshot.png diff --git a/assets/desktop-screenshot.png b/assets/desktop-screenshot.png new file mode 100644 index 0000000..c0de9d8 --- /dev/null +++ b/assets/desktop-screenshot.png @@ -0,0 +1,1485 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page not found · GitHub · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ Skip to content + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ + + +
+
+ +
+
+ 404 “This is not the web page you are looking for” + + + + + + + + + + + + +
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + From bc01e1e24e377374d1835c4fbf6585e5e830ff6a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Jun 2026 18:13:46 +0000 Subject: [PATCH 020/140] Add desktop screenshot placeholder and README embed --- README.md | 8 ++++++++ assets/desktop-screenshot.png | Bin 306654 -> 70 bytes 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index df93ef6..474a6e2 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,14 @@
+
+ +Sovran_SystemsOS desktop + +*The Sovran_SystemsOS desktop — "Privacy. Sovereignty. Bitcoin."* + +
+ --- ## Table of Contents diff --git a/assets/desktop-screenshot.png b/assets/desktop-screenshot.png index c0de9d828a90a612f3f775ae6361c92987caf8d6..08cd6f2bfd1b53ec5a4db72bed55f40907e8bdfa 100644 GIT binary patch literal 70 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

x!;E}#3-e7}+|2ybwbRqnO)?_0 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 QEwTjlr7}u#bL_ad0Kw~EkpKVy From 12a81708d49bb457a9ae31ab32c472c71f0067aa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Jun 2026 18:14:13 +0000 Subject: [PATCH 021/140] Improve screenshot alt text for accessibility --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 474a6e2..72f68e5 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@

-Sovran_SystemsOS desktop +Sovran_SystemsOS desktop showing application dock and PRIVACY. SOVEREIGNTY. BITCOIN. tagline *The Sovran_SystemsOS desktop — "Privacy. Sovereignty. Bitcoin."* From 2e4bd9fa0fc7ab40af11a363368fd25143827d79 Mon Sep 17 00:00:00 2001 From: Sovran Systems <99053422+naturallaw777@users.noreply.github.com> Date: Fri, 5 Jun 2026 13:27:04 -0500 Subject: [PATCH 022/140] Add files via upload --- assets/desktop-screenshot.png | Bin 70 -> 311720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/desktop-screenshot.png b/assets/desktop-screenshot.png index 08cd6f2bfd1b53ec5a4db72bed55f40907e8bdfa..44327cd07241ed6815ca2a0cc5c610fd5e696dd1 100644 GIT binary patch literal 311720 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

>$7?|eIyfF3I;_rW^Rz3@KQc_|5Rk84RT+PvE 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 literal 70 zcmeAS@N?(olHy`uVBq!ia0y~yU|F!$tge12k Date: Fri, 5 Jun 2026 15:15:19 -0500 Subject: [PATCH 023/140] Add files via upload --- assets/desktop-screenshot.png | Bin 311720 -> 452923 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/desktop-screenshot.png b/assets/desktop-screenshot.png index 44327cd07241ed6815ca2a0cc5c610fd5e696dd1..85bfa0c0de7ee84d961d6fe8b8a4dea1e3f98d81 100644 GIT binary patch literal 452923 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 z zvgV9earC);Ym`=<3rlP~&Gc*UH;_hNrivH|-T$fYGfu#um|x`IZ;FJdNCpxB9a*Y!;hmxZ~}S z!a1eacQ4qxyFJzdCFezjke<>XfVS(*Pk zcKtdX{{NZ3lW#4IjXJ2b)+_k2*vqdaZsGH1dLEkmJMvg!7sI}TbKlj;MM<;0EtBqb zV^*8&J3Zo^q1MsxJ9C?PbXJsC+4s&ED>hi)`x>+5)>;j@mFxeUEBdToeSM-!Fwd<5i=QX$n~m#V z|8J^K;Lc$eC~UCUalkPn;Wpno;e_YO@y9Rn$M+`3|I(ZFNO41M#Xq+Ywo?)j*^7(( zHTjbBPid*FJX9qdb+T!4KxBI1rHPXZ{$9QBxMMT_`Om+r?0NsqUTN`W_vX86ZRb`b z%`Nuy$n!s*X8b>;j-8X?7gPS`&J9-^Bf=l|PWrjQK>hrultj6EzE{t`_6=S4z&QIE z@08TNku!_;gH}1NJo%jK>N`{J&t0dMynK7TlhL5PEJCtiPvzO;7oIXa|8vMKxb@l3 zxLI#^)_Jav5OR*(wlV4by8MD4XD&Z9mEy>asPfDgZOEUN%U30K+rM7mT*as627_-e zzQ0Kk?A$M&D%!Vhe>KNpfq!noj<*vxXBPZ<5xAp%x7huu=YR{SfkWeFdlZwV!p89JNad=dfIC{XRR?e*N}^2Nm~R=5IK?BW|;i_Ss^~$j`5aM1pUzU~Si9_Qz+`Z@$^|ndM=qTH=cK-ZOJ~qy$a;ZF`)T z&+94MZ7Z*^!QtI0DLrdGi<{XGU-wzTZ}DH*-rTdOLgpg9N*5Az`CnDrRnIj0}GUG&L8+}!{XSm zGp=%;f_C1=L*SAoNXyCX?J$5ufm3m+kCUm zwf|sKlucl`p7ChO{5{Hi_uuQ}+1Y@;mQ1$~N!|Gw@z!*e>;;&U%;CyJ|zd zw2x)0Wx_be^7m^j`J#;6)h||0;^_IiK-tujX-~#OC!9 zA`v~anv=f@I;FBn*A%-ZmrWJhH^;Sqb$j_&@tT9|5s&;;Ij3D(;uiRB+vaqIh0zKu z-8@&??ssf{eCtHS+=C}OJf_~_c>HGn8_kU=+f)-1E?Deny*;-!jitddvD#Z_o{eFH zGLxdsu?CC2tG#@DDt_~(#MJt)JIZ{Gfk$WCg#(;cb6l9Kmvl~!`^7QmYs2mbE!>4C zavV5X4vDn1>#_7CaI*_+iTZJfb^W1(@*H&;&N5$YBc3xPPl&lUZOxo1BF?_4dt2^4 zDcUDd5|z6pZO55mF2`3Tihbgs;Dw*7~uUscQDww3^K+QOR=Y2A^j(OnmjG z?@s*J59^jTM*cjo_|8(bU@8`P~fT;D1XS1(hvhIt#)9EXPHG~tJJ+?$>rER~U3#`&CiL!$Zb;+&`Q z2E1=>G0d~bnNzHFuI_36qX%=hKXhWRQtMKkcH(o|+GZ1mY}VcXzo^#yHvQkF`=23d zuC0V};I||OO&PJ5J2%?l3 zN}A5M`@T)zd%L&wiZ=Heb1Dt@r9Ek$dc@gQ_M2zcGb)<)`&lzgM}JmogN{+U`1Y zYsZNb$GG?`SPyVd`+w=I%WVDXEjtzqpZ}Z~8}i=#D^sxn!wikI^0>poj7JVc9I`KB zSbpat-;JA=`^paK@Hn;bKKi!5ru;|$-@ps^n<5&I|DV6tn1AxxRpvD-tnI_E>YvxNx_HwK^B51fMQKY>?kl7+zsY&sKf`n>AgBvTWOuz(3mi85e z3SCWSCYQgcu3lx8{{HLV!Zs_@((vzZ*R9KYb!U0)lHVb3GvDsLzPqj5wL|bj)ASVA z-iF|#5woWp_{4QDxmS@-H>fnEd4fS-=egg8(e=LsvRLI^JGRbWR0`UpM*Qma|l3vip0kNI)pv z=R%N+*{tV*`e#-3XK<^m|- zb+5lXn7RC^Y(>TNpG^AO?CwvMUwc5zxO>GWMuxa2$2%TeQPy>euWLt#gT%BI z*H*1eUnIwLYw92US85X_FZOjjVW>EJ&f37x@Y{}wThqE{e3ui}G>SQNRY|0OBEwdN zSAqH~#81_KWohH9GRiKCJAN&QH#oG1*YGJrso_0MHy*Vu8M=$4rWpuN?)m@us!Kh` zj2>R?Q+(^?rU&Q=SD)|DHGHUh{^z;CDel)EXfs-co;G)oJU&I#ZT;@<>i;jhk2rFE z40J4t;n|ai zZ?)Wme?MW6wW(d&aIS4?<%G@F6;%uTOTVn(wb^s}`Jb1`{Q1v|*DWwT!IS!*jbX=m z1_PDU#6t}7)>ppH__OL@^Ry`&KHf8LI@ZQ}ssDGmny6y8s5irguU;FfSXYKk8%kfsNPZNalpCg%YxAde#5Vm%0aPtykQ{q^JBSXw9*R;75JR zc1N%MzuUr~_jb8S*Q+__!`FMM@^r4+%EGW*=fb2&k?EV*ckn)7pJWswdAmkEY$NNv z_g`ZkOvyO=Iw_}j-9yiE%iYXj&yLF`%ndtG686YEAyv+%d;gY8zfLh|>Ky)@Ir01Z zoL#Ffxk{e8$(zK`@Y^Y(IwHP2sxq*N$Few*0)O(j%lEy~SryU4ac}pr+$%nJuBj@7EJ)D} z+C5nAw#^-uOG4@xhrFYPS1YOP?*6$mU?A&0rIL z#I|DEv6YtXbM9Jt9zJl`xy87zZ+*Zro4a?8oe9QLZ+}k=?h6kzp z8FvXTa{0oPEo?AhlH%FbPB!UlL!PDEnecu;!&o51ba%E)LS)L@v}IH0|17>Gz_h+~ zsaMu_uP6=AfFx;U|9dmP=Kr^!af*XSvc}i&obt7RVAUTNoqgtf&pwttTVYGbdUyF1 zf@PL<^7B6Z+ABG|@NS%bI(0>9po}K5tLHf@h59 z_+Q8|KahL0+<;@{wN;tD51t)+zT)^5KW}*R?49iJMYk^|*ywV9 zPHI1p{r&w(8xvD`NrtE&Ml+92{8XV?zT)m{CaVkorr%~df4?ra;oa7I%$rZ&oEto2 ze%Zf>^9%)MAD(f3_|nF@A^!IDEwyv=IdhUy^E`y|v+RSLyp{?Du60w^{`%+6dD-Xt zqpM!#ZZnzKR;$+jG_%Qfs!jf7ootym#9EpZW2#V-hc2n87%wn5B&6kI2)> z-xIH14i7BrGfXyEW$}2UUBZ`7@r$niofh>jD|k;}htjnT)9%)P2xF3Ad1?|8Eh#u- zg=Aj+Q*{kngNakru03Pk^jmgnWrKEN=Z>gU9o7Rk_y6Q*oOku-;>!(lS#Q_hV*NI$ za>Bl6A9t@~oMu*=EV$3}^7GJLGWBB4_vaK_dN)|xI_RB9H_k9R^WkUJdegOwZKn&o zk$jpT_V}&SqL6U%SM0V$*6`zk9=|7&Y%P?>GH)DQ-rmq5P@ytd$6(Q*44sn7TOjb?s#Pd|HdB16Jbp=nY@4NC=> z_pMclFq-`{|69SCCm%C{cy4dgoqH?XE74=C)l@eRpY-y<>y;HIsJcM zy!zK%`N2HN3C}<2bC>+jR?bZB=1o{oufO{W?#sNnBoWrZlr#$oTi;JJtT%Lhk)maldzq&DHnPhm7Zc z&%7=FIPbe$=+P+aZf&0ptsgrLXM9orS^Kxh{FuVA2XpdOzGPQDvhd?ENqScM*X4lq z{PW3aHLss>HZdgg6v`y`C~`EVm8W@Eukx`DJ8^8K#r1!-?`>`!IWhN!%aTC7+b08> zA9mN|?wWSc>}~3C&*fiF{<{6AeBs%cr7ZnQ0T0cf zr%vFwo=>koTqYK%`)X@KfC)_*oozg&O)a&O?9_&102^6yEDAIq%hGFTegCf`^2U`w{a~=)}47Go-a4t4H5Rwc*j_m!fY2h?bE+*y*Vk_ zi{0IOKCI2J?RJ-|Y`OpEm-&qYn@;QP-tha~Zecb?_kACG?|lAU{lV_%6vL*^ear3t zX3i--XL+amel6%?*eTwrWz~oB-fX*_SMl8P*^T5Mci+D|Byn=8@6{_S6beqNPT!Dr zHY@JiCg-4}HNWa^R=*c7xRts5Q~v*N`7wXDu9lvXuPpZ5rvCGz+KTtp_YZR(pMOBM z{ExoUG6o}-(DTCcf2i1fmKPU_I2~Jl_vq|4>`B#I@1eKeX!COx*o`U$^b|8m)G@Dh}=Nb&nn|ub=aJ{r*OavK3WpO#j?gw?An- z@25}P-&f(A3lF=goHZ;zSNvw<@q!-@+d=e))$xD1CTm@fvdLb0nKAZDK~}8e_G$ZT zPkLK?yOG?vsH0nNS4Z``ozv%*-Rf-SuhaCeJSF#L^LcK=V~@7l{dY|GcrSS6l%IFf z?N9evzdLch?wj$xFHiN8k9^qV9Cs|P`t8vdFT~%LSe*m~%elXFANOKIg!~c9}!>_rKJrEB}7?WleQJ|ElM0uh*xSd`^3} z`~SZw+)C2(AB0*yY}qa}?a-lJ>YF}y`qwns-^|v}+xb*%kN>sTmFH{a?peRv`&`b? z;-gE})+nQQYSZ$?ukZNzY3B7cSEZ#KDRsl z>+5UFClj1IlCFQ)$uh&D>}F-U-i`-Mr=A*pzgMgu9{<9c<8 zQo8DtH@}_4dmA&3PhWYP8kqTR%rD>fS=K_l@NuvC=Y5y$CP=7UTK4Vc^VT^fmpo-^ zzZl-BzQ1?J9{GY#C)GD!_OpJt*ZGKnkW>Mn^s#pFg3( zGE^{7Z~vpBuyqk9Psjh`Qd3joXqphU)@^0XBW3xY2Is5q7606QIR2=-SZQHnL9^o-9*)=Hi{&>vtt? zM`#|3It@A%(y#9P$vIW8H2-{XxA%IY&f0f;egTvJ-Qx3yW-flS_4<4RL&Jly<@cw) zU%El$)4cC<&fK_h?bq&mpAYiacI^MPdVf+Ndfo0mQSIq2!!HUGvw#`Fvh6U$x!Wl`M`2UdMm8 zlB@dh@J_|kz0W6k>m@$z5(VAtq^l5LBtPX`&J2kwH)Bt6T{!dpOX1wRKIijaF4D=Z zGyXt$+N4XY6U@JQZ4EoTytE@VN?`MsnaRi+kMwM^=gKZVk6s?c@ar(+xgSJ+zmH=;~kRgBHAx{_wdJF5~nF`0-x; zzj^w+O12Jxz^OT?VsH# zKKFFb=W~xIIL93eU$@6dGxuriyI!#cQENZ-q}w!qK5su?{@)9CnXk{xAMbs}@bCBb zyXWfTY7CbKX)>}eHR?JX(fzqEx!<}^{LNn`y?sBD{{3CE`NuQ!{hbS9{%&0#wEAkr zMZ4b*LN}UacpN=(M$pLl$$GO}1}j2W%aq?KjH!OR_0R3d|9&DzZzz0RR{wO>YK`e$ z8ct7Q-klZmJoagdy8TRUy&Vntb)Thc{ybj(c+cTm4H|tv-u0Re1DPSZ@#LZf3~2R@6o2y z`p?bx|1331dq3GIdg}X!6B8Fjg&YVy$;KIEY5jCc@P?%V z**toEHxqxq-TCL!>B`5__fNEn$IOuOl~On2m{eEu+xq^qH~zI<20X>TotPF)DcU({ z*)x$Krb`@5jaMRq?=R@w?q6~Eb^n7Ei|-v#KWEXby}w9x>O#e=z$wg6wD)~DYQ?*V`Nen*L< zBMlHcrpU$?^FLZQc(Cp*0MtCkDP z^GTIDQ@xG^&S3~vmZ|&kP^SFO#yMrTGHc#fZx>qr+mM54-`BJGg2xTRYaSNm?ffYg z_jgu!@p;?t0&I!Swrjyo+n& zv(`?V|5WkktZJ7n7L2FwZCYgP$N5&L`gROMz^4oQT=G3WPu}BQBp*BTqj^1R^)+qI za1ArF9Uh$XOnQDExWD1+l6-}w2H)M*eqH_J4#=5?NNTnCmdoV8Vh^K19wj-sW9_-^N)pXYzq zxHDnHw38=KvKTCRo!WbJwb1geu(eT(WAr{B68{(f$l}?w=zZ;5r)6!OR=qKVYogqw zeD4ePx9mM1U&R^!XTAQW|Nnk3KeatEqoPBAB4E`E^!Xqox|@ER5sK;m~kvF}C~2$#)~)zR&ub z1*j0L^ho;_`@Z72_0MzL_n%c2k3WN-xTHyW7Q^v{rv%dHmWrLT z)cbe7`{S$0Le=NCiiDM&``EMGzFGNxK}sEa>eG#KH6IlB75^>IaF@IFO(vMbTQ%T3 z=z1NqygMhhUXPo7eUBK6G@DDHi^%aQO$Ll^*Mve>&oE2;dDz*xCr|F_1ZV!It5&aj za_958r!yA!tMCH_&dV(t~V@)4yEr8wspWZ+F&;Ma>d53ajv~j<4d*9{&IC{iizn z)PCC=`S)upA2j~9{52z4%4YM-I}_eHpS=+l{CMV){RWw9f9_dX64$lx@2tP&Spu6H zpUS?ku)b$~@B6;XLd`L|!Ziwns=ij1GeCx^Y{(tTD39qlM1?AsIK>>YEGOF)c z6HiQZmpgfV|G(0{f9>@Tn&tl}1YVgTd{^gvo=kjlh5=Ut0;bS;jMh+6*hN+d4J8XFqO6o63cvCPEP;vHd_Bt`}+De{r|`QVeb2y+0l8sI{9lpG)rU$F*m`Xxa{IgDm|XRngPrR8rrQ5|yjNmXh{eYv+dnOq|2sp0=ap62 zsx9d|FZNnKIBEHG@A43>hoPENy?!cX?mIZ?&b{ffRUGmE*6V*f|Griq)TWp*XVxR{ z_+LUwAG*T#Fdb2Oux*CcMMy8H-pyCD zB6-rWHU61fURga~aaC#AvSl4vg2!%&eBrMDw#WW)?E5P5LYd83DKj>NB>n%(@6hXc z&~Ibjo}kmkZ4XuTD>cLGo_gu+|6>&Q@l?3N1%{H_QUOvP7iUe{*~*mP^sIO>S6GX? zT5 zzqWdn+@HA>t+HK@f*58!?=(Mq{>hV+N&Iu(tz8oA+qOaJLcZaQY}@d=5}-5WL1Ae3 z^Q3>#x0~t3Z%wbO2y!X47Nlpg-n^7CL;k?MrHj&a6bf^`FP? z`AjdJ8yTJE_;dQFTukwa%Fs;v6`AK|6PsrL(o6J+fACRnmjl0-#N~UHrI>KC^ItlA zAaj!Q%#0bV+cWrPJ^!)zY~rz#{a^bm_$t1f@Qw_OY~^A}()`)*aPRjcYvMbD{pVC2 z>}l;azkBkDvhdIEDK49YLT|qAO1_byX80rK;gv@gx4x~d%;_$jsWwkOnP+2h&F9(o zA3bR1e|Eu{|LN2Ay>k}#+s!&V+br3~=|S-M!@izfL1y2j^L8{&_Ot5TzW?!CnW7Vl zZ}xt__vh{Xf4brEwWWN^mdu<2;N^MWOupGC)PK93A3yJZ z`1$AW|Nrwn8MUNxf9WFmig%yqoo-~8J8|QN#r*$&Qe!HghQ@qs)!y-Hb@;}|=d2&@ zeLiRNdA|dG6K3hw2+jI4e|n71n)^vRO-Zj&~=o3?o2<;wZe7h9sHJbBi(RA_5di^S>t`f~I4mOuBt*?<3^ z!XZ!fy}KFDq<*S=Hgo=xpp_p!9p+ojtToZ3$B6Ti{gVsM8?P1pd^$a`=gRSk=eBO0 zwl+C=PTjAUZ~k7d{`|cD-}60>-{v2ec(`J5pBK-%S?^~#ZCkNSaSf;OZbP=U_fV*bS{IlW1$nI?QMCd@O+SK(&x+Azn5>h?c5UteGUeCGKYwO6%LUl-i@ z^*7q`%LV6(pQrgBPm9j;J2~M}z&)pTo5fxouMUlQQ?T*zhUxOh{H))enEvneeuqgH zzEA5qb<3@8%f$y%=5Kc84`h_xW#SUGH)*XR&ta1%*6TL!(stPzWjB4*t*pay-eq{F zUd)#La(&SXxqZ?se-aO~owIx{Q+A_{{o2}S_tGpaRgvuJ$#+gf2dUI&Cq5Uyb#2=A zYY+B3kN@{Hx#E50d;9(7_S=1`?4pu89&6a^Pu^5579u>!IC;mnTiKDD(|EJ5uk%$B zICSR1{1dyolh4`zuL*g$dH&xVA-lPoe9em&cFbUNs?$9)f7#DNdb~6De?Dhz`ESSL z%H!7e4$i*+Nz5y8W#R)(bCp-Z$>{=ZU++9V!*FfF`+Mx=mmi1Df4?C4>8?8a^5AIm z*x&WO&mDKqf4c1d^799nZO+SWzuD2j#x~!`<5W$%7!QZAl^y5L6E@T4zS5S=StmNH zZGq&%sJTfgDKk#J5b{rx^`@j3r9`E0)k z?E7+$|m+%|3L4llSTzG=@%+nA|EGrg7`65s#Bb>07S+butz@fWfV@1ORf zU|*V`s$})YfSqSdug4trum2Scy8H3-=lTC-p3CUp`+juKQ{Dd#Yoi_?mjB5y_2I)U z_o|*Tgsj{D&-zaN{k?Ol-|dtsezURW+vfR?XJxNj7S?U?WrK6&+12r9FMKe_uQ)7S z@!%l)<$~bMXHS?~U+?>y8~5u{^Unk9b`8aSpU+v(|NU-vf0VADbJ}hDbCzYdOU>_n zXft1;5F<57)c*U<^Qw`nSW_lEb@CDrSSGhygH>|>kE8mQPp1U`IN@&RwKV8q6Suxk zQNhxZjp)l-iT9bKdaA0ypvhdHqpT264Sl% zTfcu?er`9t_?)G>dcd!1+xMMh=C?cXtMs+yg9c`hlz7jR%Ei1oH;!FtOx)()lbBS~ zR2%n2NpJU?&vR-%o#Z?)ahIc0^qiWNjwhDOW21`EuFp8+$T^4=XFL{FC+Sh&$xbZl3Zt!?iDZMfvZf}$5;ln$!dfnwJS)z+o>>edK+^*5-eI{qP`!UzGx<5x-)K08^ zywb{S@7LEm&YJG23Ym0kCEG*)`cHO8cDJ0A*s#jw(T?wT86{7NN}*R)GoQ>~Rp!&*|9Hm3hYM}kExA7$ zUt4y-GBvR`S!-&MVz`mwRn2DyI5|1xXHDP?%?>^F)a&lr4Az(>Hy)Y4VpM#~y)zdiBCZt(r| z%T=-8>cOJI4)P)(|Piw3cCqwu4Lk*W%sV@9JzT^u<(t>RBxNa z?RPtpk2CY%ncuQ^8QbbPJ61a9J}lblvNh^#v5WB0JJ+3EW)}$mLB^!?))=N<)d2RT5BQeVIHJbxI^enyAvE;YLOMj*Ec|j7-UJ9?xIn2uMKY87RGu1vjW71Yd9i4F`V^*u+ z^wX(}qFTcHO_#mhDStyDePv(wLi$+8JAUluuF`C+>t^wrcYRdM zwEdkUwlq*neWI-82j9q7i#1Mp9^PUwZG%YA>afd`(mH#7E}L^-qfcU0$O_lMxMeyV zO>^!P9Jq4RId=cg@3nI_Yr9VByZPb9i36Hu3rP zJjI~gT^ZX18P0ErFJ_ptUrqPvM5}1IEnll=IV;V+eD2eIb+74Oj|BS`^|WZ6j$HEL z{@h!+?s8W(#C@yYZK>F_ck7}98*VRANZ&tOFElpeJ@;iZ=au3~Z-p4ld#yj-`#tCD zR=){Xvih$l1!YgnG&}p!)a}#z*>R1UU%YR>wzm4L@?7raujfls?{0|*^P9zEaXG6{ zHf2TP-&u_Tll>zyXRd#yI^o=Eo(b1mav8d0J^#0)-S4^}x#61Unq7B(|7^S~5*K&B z;_Kf#+v>dxr$@~GWvI-s%<}sdUU`>)Q8e)ge{_kZ=> zcZxq`w|w$womjfMaAW$Hef9~DRj!}5KHm5Gdf{>Xx^uPr_jcdE|1tXAzq9!jFTQ{O zD1QELu-b8Tfox9S11}cOUeVVlyhcJP#&XW{)!7#}EI8_2KkaYct+tQn<D`7H7|` zWs;t+yHtO6^;&lGYOB0Gf51=Zf}pPV@~>I?Ql;ycEx8wFaBbPoHOmxh7tCP2zd_D* zjmo4c0Y=N--97WkZn>$O$=bbohj~DZ4hrih~690DpJm!0M!lNBi zw|$O@`Mv0o`j&nAvfpwFWg^d}-=E^#zr|eB@NjQbjOao7I(c!d$u4OJ}|G%&Q{_Obne+?5CI3?)BCF?Zp>d=oZW1SvXQ|M(isiJh1 z^mYZVrBjtxd|#1qF67pNGv^oHpCql%dNkng(`8#8RBdwa;W}7$ct!Eg<36k2T&dg5 z7&^JyI^>}8l=7&#Rbo<-8!|WFi+WSzE;d__ul41(_c8h>+}w}oa9uOsdp~D+hSi%_ z39ajzy_RsCihlo=kHymW*X}E+3ajnke5|xhxV55H*KYdHOUciwK5ReOfA;mw362)p zlREU?8prl{&SX6AUHg&v%6wU1rhBHJWcV zG0N=kmLKiQUneg2)#H7z>TC2Ye&4q{3Q861cHhi05#K5;eL2JX7E{^M!@u9AXRzt| zWV{OAyZ2b@)Nkx_%)dGkyK{noP2uexpzWN2TtEuruC9H>&TPjFDdha4&S<( z{Xt57XRuigi^v4w6&YSJlb+sI?P^+nG*rno`oGMyB>`%l4El3xMO{;^HJ=BmUpcvl z(akBK`;nB+ySImaq=oeC*7Uj9{de`{+WlMd_jMcDU3N>`t~z;ArJc{~oZZ)=4w;$7=6BAqIpZ}_Spt=4?Ap&ES#}$!&bg8 z2XFdr)B6|lvSjt$dkPlHwpSI>%N^%Geax6Ayz+XuYi*a@qBBCTN*-L4wfU@>u#;=G zLv9I=$f@kGCQqB3SGM7`U$gf-y1IUuNZ*2E4^&Tfn{7L?e_kb9e%0w{p}BWCy3`|V zoz~3Dc+K*}MgH@aX0D%6P0K%>G3AiEs#6lwxjkfZ!KEp(SC&5ebxQ8Fz(>vK{Ar6< z``GPT8lbcy<7fVR#%p;Wp!ej}^~E2f_UyH~%ebO9`N}k=)q4%SRF}AWm9FYq z=Cfw*xgV;*b91AAU;lhXYFq8wt>?R6mA;jgx})L!o$bwpnZ^~<8t2__|Gjl?`}UVc zVRL1}uO2vjdv-JGt!h zF56At_Gn%0^xPxbc709K?%47N7k|sEC?p2%``T`w(60X8X~s0}P1jURIlUDtT(1O& z9{)AB>`2d)mAN;)a!YK!b6r1K#r3w^uf1s5RL4t3DogEes>Z8(I%lfq?U8K6!_h}oXVMupX0CkS%6Il?*$zrFQ7@8U6=Bc$kO<`4Vc`%7il zJwCcx;!^68>kKTqmZkY&>-oLx^&TIMt6Fm=_U^*HA3pdUW?p4GYkytt{&a?jC<|F* z)-&b5S&d_!-4b<}SNwaf>GsIJeLHKn@A$la-^ZMbcCr5}nHNlw;z^Z0td*{<^Y-}q z&vzS}%3jSmo-3DJ^IGEe`(4Jn-|e(co-BOD?f8mZN%ap4QYTMIoVdh>b>m^asghB9 zCw-l2bgo)%$M3kd4W5=Wx8yy2)1!8)aQ%vkH4%HlSE;t&O;pX|y|;6Z-P;>q_a9GZ z)w;C)5{K6LTc(cVByJa_xEm|`ae(h zw2}1DIBN;6%f$|NovztUGkdegbLQ%G4P80`zrS>`Zt=gZe`fzBHkR%81&hN3#Q*%s zZ$HG{=AX$`_1SjT|D${VPfPn9d%wqO#(&k@`;K_0|FL4WIQcK%Tg_+rwar(yu*&Tg zId|aM=l$$DH~!wK^S3=v9JY4Ws^*;N-$wb1XUDV-YY77T@$f)(nQm2iOBu3$DH3>zO_r!iHEuS zSl_K9D*b=|C2Bc(+~n4pHSJ6$%a&cdnGIeg>KX0Ydi0LuhVLVm;S;~?{ zmv{MZEeh|B{5a?CN{<6eDkklTH*j>&EXw)uZN0|IgOc{njFYdG2Fy)6pSM`tGc7ix zMoK5*!w0b$N76X!q<=59`*=wI$g&qp7({HZeVwFr>wvc!_l>&u=jQ#(iQj$UYsx&n zHLUWr>f&28dS#Avm;dLv^?qHgu7v)y$^Q&9=Bw)czw|eM$;&sPnU6cK#PQm#{kgY8 zJV1Wi{y!cYrkz;4D)V94^y^zLJI=WFVCHk*c%7m^J};jJ^n`Fcy2 z*5iHeDs?59&m~_963~6B^z30LZ_g3Ks|$R7>d$L&{GhoaRP*zT{dJBmctGPb#%sXgY!FImJj+><+dUA`^%CNngI5ai~yc27nZmL{p9#~%lK#Xj+<{Aw6|RJUu}16ne@4Z39OH~ zKQlF~oxVbGW&Mo{{#PY`-{&#zR?hz>&Caovp={?1QJ+kg$Q-BkrCqz<>Mb+NbKN5l z)$JT$xaQYp^~CZ>RyTq56|Fa#MSnbf_&i8X>*3tP3o8FhI~HW;yB^qC@#~ZA-Hxs^ ze*dH`wl39E4?5%Q_dT`R|Bla^YgW16bF*5sr+OVJytB#9$hms+-HB)Cn~9v8d&2pO z#kAJEdbR3(W^=lYo^LDNIAM>-t^CWZ*6r_aPm@l#wLkx{l>d1a8*Vj~%)VO}+f>AS zU$5h4o!78$*MG5{wR7|MO|GWD6YPBOIP0JIp1(IY8-1VB?z3Bd|Cu)Sh;2))XGxTZ zr@m!>Tb@<_(B{A|4(p2bl>4`e!;X z*W6sO<@{k;J zQ?h0!>sOl(S8uPd=vXY3b^H3HD`gxeq4~zjo`xTGb}M;owsLc^isn9LmY}sNNN?(j zqlJI}vVLjN>WVn{__D$Gqt?v3xWnFGEuC3)G}|zuIcjr;`|!PhIlk|CbZ(qi?=nH&MV;%DHwIm>dT`%K(e0(Qu*YuA zqI=KV_A2lc+}j=&AGuCa?AF>1rhDx+=;<$K&HLN)rP@5TA)o!c6GOtU^M`l4XnxqM z_Gg>!x`p#xxz!(7b2!cUo+*1lm7!_6SBvBJ_Np|7OpO=~-dV}Y*`@!luF{z{^-_}f zR)!aWi%v>>PQU$mNxfCm4gUb|z3UIht>}|9lc{Ib5>;Ds*eW8^yJxr5?!UhUD})z5 zHBu|p>~>I%IO+erQr>aOpY7qg7v{d)Qnl6N5sTlEeH`_>b~jsF`E2zLo^)lpb(c(- z&MT4Zoc<&FoVIJPF1q5DA{M?TrEq(a^NRgVU7ozwdk>p)J9eztB+-5=hyBw1plA|Dt`H|zqC)(CbMhhyBdG~hW8I}3&bh?O?&?$Ck7748eVsM!zbD5kqd&8s zXJ%;&7w7+6YpuCHsvzrnueDO@oboq?2OE!MyRR_pye5;j#AoHJiYM&f4a>gi_MG54 zRwMdYn6+4V_RZISk|RDJTK;gg-PaXb!H*=16z%OEG|%u2zT)IKH(#RG+hDVqyzC{0 ziZtt(w=Ee16t9*D= z+1X0Y;#O;G@;CPc`J-iDUKs!7{V%nl@ztloA6e7u<*wX}J+`ddaqiuNo6kIrw`NNC zb${_TAO3jx-MiFwNj&!E@383OY+`sH^Y{DSYYyTCY+D>VJss*3bgv%0c6kZIAz#Uf zo@F=x`*+L>NP67=&hcNm^0lxFQCs~Uw2H;72{K68B3a!3%Eq+a_WI$vsSaL8E~*qg z3BLI?e?I5EN2;vf4r_0?m{#|F+Ir#KseGU8VQT@pB)D4F<_SHYk`OAn&F{nV`&II* z%c6a4WD=$3F zW7fFt*#_nxH?OU=INQE{q{U^`yIct_wR%hFeEzP-CT>4Q$}pWE*^H}PJ)Zn@k0 z#^Kw4ziM?~(X0HoajV$-KZm>?C_V4_KBafVxtF(Rbl*|AeKWsj^`|MP;}5$TpYxJU zYyUg{+=|aW_r592KKD!SQTu`G0@)Yl*hetTzwURoxxVz_vCEGZhbTS|7c-b7QPvaN zc-`~Rb-V6T{aUHjOovn6%rx?PAe!uzv*Ve0&d)dBIrb>>urBY?jP?mRoE!GXRNlRQw<2SaT1I5_%OaPf-}m@`&hO3Cw7K_S>fG=tW^?b? z$(bE7DQyy68n#;X@!WHNcPB`1c~|-2)ozD*n--)W-nMUX>281K)!+Bj{7mYLDP0hv zC+Zsg{Kqea^zxV4Ut;HM{(Jjw-qr_CC;d08couq~p?L6 zkBiO6AL5%&TYq<6o+P8lw&JLu+J*@0Grsy2>JKv*9tlo0J6gBo_ulExHPpSDE-w4z z;_dl!ZfbqA!h&a6-S+FszILXpd{<{BwQ$M$hW94NCLR3zqtUZjHU1ErL@XPV=IQtA zWNm7TFZfDp2&|KeN|B2B{3FiBbC2J(8GM#2FJ0cp;^+{v`svOCx56e(i#WH#j47yH zh-d1}yx(7Q?rutToalD(z=Snx%{DQuKFL^|!5|*Y9lrVS?s>jH*4#CGD)HEvr_aOo zo>Z9Ip=X_ia@H@iUuYcRczQzJ!J;(Ai)&SPvj3sxrLr#mO82BWcD~x5&-SgeP-SBH z>nT|Y9FJ#Qny}&7o&C0D4`fZqUMXXFfde!#-eZ1*+9d)H#y#$gbbFjSc^yyfz z=Rse++NV?>-E)%RbF13cE;WmLx^3_M-nDC8)(EU#Jze)yNB0Z6ugBBpRkj|8+EX0j zemtl@Lz^pl)~=-IanZ?>Cw%G?xz4>eu{Nt=f~%FmF3bGVTXXN}_BOnDwEp{+`H~tl zPkTRSwT+FMQH+mB;~!IaO{2Ieo3AN-j!0Ns@<_E{G^T zpsM;IRMn*E&AvWa`z_`dFBnW+b)0q5_P{RN;A@IgB=>)ITvS|l?V9l9L{?ncYQ6f%pNq~ouWhx7o2s(z=Fz?&2_fGj64{dXDqAKd&p&*@c)o*- z3s1GT=ur)e#=^jB0n5znPC3i(ock$OTB18EVs*uIiHI5jLz$^FR324cpMR|DE1P{x z<1GJl*8rtC5$|d*x7t+w-aDacuXLp1^Rk{yzp$k&W-H%Xnp%aesNQ13xIv+Fqjuk` z^*U?}VeL~6ExEVugwmGvu?+9NiElVl`>T5UJ?8#*kNxGZG}dj+VfgU4b!sHrC##CI z9gD>uRK-d#{INK3bMF7c>x83MeA&XU6reYK<+UtMfw)hl^D@l(%jSeMBJ=E@iw9lEi0|FgcudWZa@4t1&gT%IYngkhuB zG0kmTCf&$A_;0@K&7ZdVX)Q*=%i37Pq_yWgDGtooIMFCYJ7lTXhJ(g+x98^kecwLg z*H7mM2Qqs!r!IJ=k==RXSjTsPs3YnNgtdQYG;L^+kf^)nH|2ZO`491L9QW8Iq{gJJ zUb#@!S@T;ZM@i4|g*nF!CSPQUw)@I#R`}pA- z1XXqJ%j*~(1Ti1joZy}*S^xU>+;{OWpU=75=w7aQd-<;F+6NC~=W*}3@w>cl&6&F^ zy_hRyZDd*U7;W}^W^Z_2bAyki?pf#D=QX!;Z9cBqYVkfGwCBW^BTn7|4AoPDEEx|( zKVxL*Hfc&=-J^DD?<39IiSzz`4(>Erl;r(Y%ko;n>b@w0lmGX8uu(J5ZMz}JGR?y8 zP>}D(U4g9Yk2p7lO;wlu%d}{JrIPlFfTe6p8LUN<1Lg!Ky%)^>ENYe|v~SI%gGU9O zgVfB#!dE|Bn_%J;$i!JNORzC}uid)uEJ+8{8!qxr?O48QO-jdFAH&MqwK;#E==Qu8 zS$&pcV(|)3&P^(e*P?nkZKlls>N4-^*6ji=j7hflxRsh5XA~r_;b@<6i{t<1@0vb- zM{fkY+Ii(=N7S2BR@1kh{MtGdY&p3V!V&t$ily*X&7%i6H)o6>vlU*HyG zy8F!O?T^~Ink$x0H~$!O{&i#f_m7MImrmH#Z(ZhFh$4-6i~>vAz65 zN!W#IzM6FQ26nl-tTBygj4wX^=`yoexH;g40!KmN9XIVMsyp^eJ-@!V<*Cr>=bQ}N zqpdUz9%ig@;O5wxmif+=ND^}@_gkUA_Ko$FRZeTzn3{cDGb9?8%=bCDvSw$C{OqK+ z9S=Rj=bZR(xqOjI*ZQLYTm>qMmz@KrY6g}BAMpSGOJoZdPozLW=Dbx;p2V#Lovbot z^Oe#`I_womr!5xF*wR+`IZ@}fl9;X4ol>^e$j>tM_nWP5T<+iB{K-VS)pI$ksB5b4 zt*;3W9?IHu@0i2f|IR4>!LNlq@JU;q7FH9g#V|1w*t#|!?p=Ioc|j;rp9&vlN! zb^7CV#t%%--*^R9>f6ZOpIm!y{oB<)rtDT%cAvz0Q*rL?a^2IfYlDKXNp%K>NVr`0Ni9-2@a*Y^tJ`{#gU(kPul#a{al@9q zOk!^TZZkYEd1HC{Z|`G^%=jwShNXsXO1am%=bvqxb(J+HW>??y_}xFR-<$jY?e+S9 zwroX)oeqi2lciXF{j2HUfu2yMr=}PKloH(b&>$xPu_T2kB zwlS@BkWf1kb8mTrYw5YWE4SaTVcaoKL&37TkgK7&s8jTI{_!W*ekvcFBD;lI@^?kpa*Ox7RT3^_OgpT@8m^sLtH56o!V~x= zLN;thf#A988vSdYWGbFkJ zdZO8S(x>ub&0d$S9gn3BY&hfe@0R4xIiAlXLJujZ^eH|1sOjQ!Tj17Cri9Ff#MW=s zEDf7KvOCVWZsqr_KA)jrG1IgYvklv3bwA7Bb8DvS!pncu*_PDpt}lr@_Y`yGZb9-cWCSS%hiRyEB`Pv z+!1HEu{?2CkUzWF%RGWOYxbOjj0}1Ev}>|1oLDTfbZ@&> zU$W0h!;stawjTduSiR@9K~nh94%e$oWKL+FoWgK8_0dL8CuISS#pU@4hnMF+o45XN z!=)YVK@C>@U5{9Mmd)O$k^Pb@WykTQ^Bk2Yt;sc1HDcW-IeY7po%_v9UWAConx7Ho ztF?Q5e-HmAtCS-WNxdJQ3Iu=Fbf0Q+M63Gwf{=%OlkH9)%dT@=k@_gASK%|q>Ss?9 zZz(g(c^Ve(mAdMx=A)HT$ISQcZec9ARu9DH@x_s!R%JQJ-%U28i!7XR53`(v^3{R0<%g*K>*9W@c~Phqg$d(98Hd#txx20OJ=S5oLQC%}!)%cl?xr6q3a(Dhl}ns9 zoX$EVdu_wr?s=zPiQD&Hy}dqJ$o)xH&ke494_^Ac7E(?AIPZW&5@UCwm+j>J^*y`$ zE$6TNtyUnVwC~#Io%8(kdJNY@ZEWK0w`n^z&p}1s@9K_-O)V;WKXNuTSaeB$%5yoh z=FTLiGl9P_Yq6%N9W>(iDN)mI*C6w2;35hQbTOlQ}&QYW#ME=f!|9jra z+&LVr>DsnZp;IGZc}K>>3sd(^V9#bgQn@NwxbvZU?}3b~h0_HX&gG;XOSoip?yE>l ztPMlVle?3{817_FV_$QodAa_VgN)ptjV^7hxqs^Zm(sG^leu_L@$k;G)Nt??`LXTw z#Wz*v3CG*_NzPxjp?M;ERS389rrnWh(7PB$k^p>GU(5%L6-=|liD>w>| z8R@Xj&*5KY#eOe}W3gA@^kpf5as{i_@M-rPH|S7yO4Kz}4b_>Z z(PzlP#>{4*IpMW~iC(7UtRAn`tvbr3J6C>B2)dRvS;FPes>D0TLh64Sl+UT)EIKd0 zqE%6wL&986o9W(Dhn*7KGnhBT9eHprp^+o!K)}vJH`>m+6wYa%^LkI@3^9p-a|@14 zKP2#6_S{aH8~L*jU0LeBz4?>c*-z_l*MxkltGivBwxC)sa>MO!;mrK+KSf?SY9Eqz z^(tsM#Q43_HjdJ=>ZnZlJaE0X|F+Bl%O5^_b1OTtKfm1*kUlr7+k-P9NZ^gJ z>#n(f82i&7(pZK(9vv!zHIV#*no4$EzlgcrP;tG9tf}r$q z=vy8`gZLkYd7KR8zqV|f@;;NNE7F7Ej@ySz8!i~|bS~0R_qo(|;muO^hS)a~E*R~} zQavW6w)(2g^Qs&MQ5VL8fIlR`TD!wv$qC)c)T?6qo-EUwZl3&JLIG%#NLnW+VCPtcHgZ{lFbSU zJ7OMgY?o8?xw*a6Q$xg9!)4}YyRYk3{o-R=y|Zt9_ng?=y8QNiG3U>&wY&%zVS4Mar z$MKeuk4+{H50&zR4Xs`(BZN^7TTsce(ggwju#&VoyZ2f4yHoVZ!D^c@f zleK?o&Zfl3QqKupFSal(TGcUQN=0?skz17v2QJrkPpE8|y6nKdFWO?2b-xYS3qE{t zlJ~JUVUY0VV)(w=eS7SV8u5jvIoS{U2%0vhe>mf}?w9G&y`$B|4U%uo4J4P?^8`zW6$Z&l30Ev+iTr2WA0@h*WZ?I(Kk_i^k|ORgLg{5 zzcfinuvzZu*RCy?uz7b4LxKIf>yaCb&PQ>vGgN%oa&h}~why`27cVWn&&N=3n(>aL z!q%+WwqXonf(+&iJzpN2J9Tu0|EXtN_OeYo@>8$Z@$jk+r!|}cVN*=AuNmwqYB_F} ztHQ&yC~B=8d%*XO?1@{e3wG+BN%M%DReUt!^#N~|W&wA@*Vl88KRKeZc(z$`uWDbC zlk@@&yT2PEg%mS3pZw{2dTJ@dH{-&D+~T=+4}Gr`64HAvl=f-o{b!&9eGXr>eyj~D z-eRBFoxdr&!H9nz>+b!(FIyGNJ3ow_0lNzb6@8?u*!HdDQ@$Ay#;Ckv#+L~yZI=Z<>&v+-=BS) zBy)A$FeE15>p5$ae`DTrN$#FrUZDr< z#~LJ`-X2+Rz02>f)iPE-_h({c=*-ZW zp^>H8>x+MMzT0QMT1n~gkpfO3N#Dq9eQt`! zBF`_JX|IY8)bN*AN0dJx4(L@E7LsU?28~dsi&(?b-I^}t-pP5 z*TS4vG5H@<&gbvHoHA)n?81YRxoJgZ>@%;{9CF!gU}Gh1I&<5}9VRm)4Gu?L4>}MV zB`6=L`&zK&@YAd2i6AHxPu=OX`FB@-jkA3*Cnj7gMR->G z_X`Z)JvsJ0y7Bq;yv1R&?p9oxea+ps;Nu596Ca^jrhBu(ip!)cwylYov{p>Y=fX!F z|GIN0&)6LQs=YtM&QFFpU|u8l;?63;m90&)r}G8(xrq3dDCF(0n+* zob$ttUl*oI%s>56y77RggoQfm?Wm*ISA1vYR42`%}RfB zAi3_h(tmcT`JXGMduN+|`j=kvNAYC)#5ME1U#PW&JZGEL@u%~08~2m{62B&#{!!a! z|0F4Na;$xM>9L;kj0To}SKt1T{FQ-!ZGJ}7$)$D2=P%h_67l%>KR3Tm^3k4scUSB2 z=l+RN=R1DN)NqkTOE6cIrp8)hz7VaDMI3);njAY>KZW^A_rZeSt23{iec;KpK#4Ws z+p*<*)l5_89DZUYK3#VH?ls#5Kk+;}a{F|r^0Jf{pI3a=UCXSxQeds!#Z2KN8Rx%0 zI`QAL$6s=C@aH>)`yVGCdOiK)>H3EBhW{&%_&@TVF{8+)&}Q9q`Q`g&iau#WQ+Ah)T*I$U=dEu$0qH@Jtb7{hsPVP9%b_I@TH+?3x zp4GF$brw%#I{#N}pNJ3yNXe_n`HQ}=Tz$xRds8+Dq?3rM< z+sQd)$IMK76}fwvOBGukiYxiopV+=|zWTdW6D}vbuTMx_dE&9pO#SOt+xAAJKVD?l z>K~kc=I&!VU*<`Dg-;HNN?l_0xxMGMl<1YmO5ugoi`&>GWRE^#6Op)-ULN>mKhr5->E)d!M``)NAL>q{U3WAJ;fGSFTHY`+2?75_mk@uXT@^=Khb&d#B9Nh zQtp-FyOzB57wBEJVeS1$X-7>~SC&+soRq}5y}xHJyIT7y{!GehmSFGB31N%7mpgoW za&}VD+B1KnwT^AMtnhRVt7hv|S?dkkw%yCR?si2-%lt=G@c9c3>-&FAk#}009N*zy zZfI7`rMG%tY3augTuUX|PcyYBe!n|+U$f$Y@@EVip1e6{p!IB;@-)dDlPRUSjVF8E zuii+%{$qOa#^v6cqT$_Ph4q)yKF+tP-L1ho>7w=R$QhM|rQWYT|J0M0Tr$}$a6y5H z>y4eex_Zz0%0xythuya6cm6C<*q(Hnd2h(Vg{vbMd7r(w^=$CzinnjCb}66rQ2O7p z>$Lj2-uiT5uP%dmnIB)jjd@n2V;`SH>N`!>QfgZc(^WGI`e3 zyqU3=o=x$tN!%~yzR^kr4g}L4{bsrxKP22hNd#7)IRs5`py+R6a8a~x8v6ioMJ5Sq( zIh!E2)7w1`>#R;ZadH$kFx+tl4K-1KIhym z;QMu;wv7977e}B-b&Ks|M`_+{-JFzUeW{bZIw5`YGtM}hKQdUeSwU&dx-|*4wX!=E z46|+rtnLbN?R`;B{pJs%6WbFRrQ&iUKrqXkJ+mzq; z3O|+Wa=ZKNJ#aHG^qC@4f|h33iYMYQ6cWQc>X)P z-JnP;X`5`f+vze-UFC0U9fpck=L+N>dQ3j@AoqKE{oQykwY0LI>)KMQRi8#GJ1yVb z<^5y53*(G8tzJ)WE9GoI|1N;BK<&Jyp@!hm2Z5$hwKpXmnC&&RTu{_?W4++4yBs&C zO%4o_pJKQBGjqf88;7G;o!1lm#T7X9xBrUf`%BKRyRhZ9Nrr~C9z#XU?3)fapfPVP@AyWpjMYBzJ^tom>7I!)|Y8`NrM_SDzt*$M>y z{9RtOOS9Z(7Q+rUzNb74&^rQ_q)vZc9U$Va7LlDCw_JxgXuHvsbu8+A3vP?u`H;(#PjmW`nBooZ#JJkdR?YJv)AY!%e(tBhhvuiZggKSom2hy z_V*8$S`O~%nQt%rZjm2B!Q8WomqRcE`_acu&!Ie`Vnj|Ej-c=`~&l zw3@9;9y{)^vo8D1Sin4Q$&QQ(rQ2R6UiLaH!JOtM(H78KW-KY&eyg-=+-XM5&Td&&BS#^k!Z8;fs=Dw?Z_Zpiq1^HAU7mz$;6?{)Zh`NjA6 zWAdMW#O{{;(s$tT$~b%ef^TZ8>reiOJ@)+Mr~47z2~Qap{FI$<^>0bg-YB+w{SP|5SLvImJzZpPq4=1l~Jr zcFlhGrT_{$n*+ zWhKmUgvE?2C6)ef+WTN=GupX6WKqmF*AR_ zdclCj=M~eWkH_ump8Y#3dH?K{UzHr{1(S>l4jw;W`t6d-Pyba8+@+toN_|-?)gC>z zyz17rX@QF->tbF8rrQ=Np&l#ZA4YzxWpQNC=soPtcR1s2h{w!IwrLlF_Rm!+xO<9M zK?MvBXlPynG^2wd~W1Ia$&$#~Gr^m})Z~fDv*4R<} zZ{?O#&p4IO$)4M{LNMpVmS}#fXY()T?@Y*?yz-Qd!vC__DbXq$iuE)%ZM(>m-FN-= zOnvLA(GkzeH=kN$drp@B0Gre1Z4WQUPTjfCyhLp8WSOFcjFNflRvC3qm{+%`=(ow6 zId=^w-S}@j+roPG^|e}`FQjmlGqJKcYc>_n>0P<}<^8zXEydbF4wvfOw0R5On5qRB z$85=u^xb^s``zdFkF>EK+a37i4WEBoarwfzPVbL2eB3j`Um_wpzWLfNUHkrJ^~RRL zN3)JemN0A+nw!;EVldCKZO*%__fDTxe^g9U*Ef-_KK^;<;YW<`941fxcJjM=&?nnH zKSO7nUf*BLXdtMn8^;ltVmH)E5hmu0qSZJrP?`^~&Ojg!g0dM=oBzmNR# z;hWOth}jl}b(|g5pCau|pJ(2%*?0E6?&9)KB{DC1@;5K|uWD@Cy)1L-0+XYE^Cri9s9Gzw z-8Acs_V(EpX^jgXZ#7SQ6?10wIm-z_odq-h9X=U+Hs9%R;?xs`_8|6aV>m8^CjJ!Y0<7L)z(XjJikzI`NV~J zzfZ0G<`vcK5D;~6=Z)$Ym#%J33(=7L| z$W~$g^#Ss~j+HcVA6s)KB%|a;hG2O`oy`H`HxFfJd_1=Ij@)C*vX%RG^QzW#eOtm2 zT_pW$@siwLuc%;)w&w2Z(_37mlNU^B3gU8DT^}EGz4!4a!-2_PKJZQ0y!-F$l1nGHD}*%d zy!n2LhbY4yPm!k!_4aG7X!5za(rke%Pn+`=c%u&VN7ex3%J&R-Y?(R!Y1O65MhvK;!SDXk+swg~H+VXz;HIqZFyfITF0}lVuI%qs$bM!46%iWtCGg^9%Ew*c**ulfrgce>=l)N>gxmYEaeXb0%39mKx&ET@zUXVlsD0 zrmYsKx!>Na)3jtq*yHlZ1=pV65%RY#-FZACT9NIr?S(l`??Ot#E-PoefH${aU3=ancwY*>S zamkws`Rlhso-v$HI+yqGIaiU%=BWQZtDnsAtn+2G@>(e`qW#WG(_s0n^A{{usqkyW z?l@kz?L$nTkX!D0WzkLCZ0dW{v_9=PquhFq1J9l{Yr={zzczE~iDc&iC*9y||jGr8RX@0!?kk#ZTZ}ghfR4sQqahI_@ zTXlZjfdxks!Y8KRRy4lnJGI?w$~qaK1sAyRWDyt@6}8QQmJp z?iIPp%PkmpPGN9dTe|8mpJ})0(%*vGK^NSdvw5>~W2RbhGUq+nY33og)#?1@e**X3 zwccP`GI>#8-(;EFX8hjCc}qClq$en81aTY|xOVf*=H7s~>&uR8db}^r=KLSU?Bst> zWS>3%;TLgM=x$b>M^RZTOTZa}DI$q`IBYbm?H0Yx*O7a$^Yv!!kXO8A7Z+Hv-YWVi z={s5N@L&6|O*4w!@86x$JhQ7Pac1%Z&$kDHx9<7qz~oRm$9UGK8j0kh-}kl!Kejx+ zj?*J~!>dPTP9odIyta#GF+6w{lXN9MsrvKYtG@mfzgo{eEzEp<^)_3>Mp*`%437B~ z70>;vXPGgax%-vvY3;n5pUy^nsf+&#_u8Ky^v_O(r8a}^fb_gLPZeaBMU*{+)}ajg+O zVWsd**Vs^VNJG{VD!<{lkoV z-97u~e%$`@;@mI4tlyn7ddy#**5bLY{^0TVk7TBNw!iuDtio(F3Fe@8tS>(K9=Lt@ zf$aD6N&Yi8%bm`feJlNczQXTWcW<~HSaK}CZ_eRXy}$p~HgC#vnK(T;s(zl_DQBsA z>4||M4;)IFyA@`w`fP9fSeWtLAvZA*%L5k<)P!w2uh%&1{A$QQFXa(UrtcEv_^ zAFq6>j|+X4bJ>u|ur$r}!i~7PH7vfLn5KQ)Zfke`)i3vDk>9GlJdepg3ypvDd)5K( zbN{dOu2)bo(LS;<&vl8)l;Di2n<3g8@()CbZYT^|;ZqUe0Rb6*cHFqX(1NW?O*EVViP_HF5{AFf}u;*JJyxfgf-M4-gU*XJrWPI`5w)l@q3ceHls zjORU#yYAIrj%=NIAuQja%a617)xLZGG-sWu)!xGJM(b1Fy!Y|OSA&=8@pH#>Jr$K> zOPI@?$(pXa<<&#oXA9>nHe45}ckiQdqVGog@;SSs9n9zU z-)O9E59*8Y_;N9_d74ts^Wems9R1UM`WrqNPJXa6F8FPZwTh0W&+KRHTK{dPC%DhM z$2_ajZ_4?PZ#>+Oe)^%`6%uo#>%yDvJ-Kr`Q-hxeFP{IP^6hp9?(O2Mg@mLU9#)7g zRN?**EAnBsbgrsVe%|~0LMBEGXKbx@ioE2mt!!x(Yd>H8w)T(>kAo(w!2*x%E-|ZA z{TIux4&v&I?t0}i$Mn&~xi+&6&3`Tnj9DAG(dOmJGrd8-&gANxY@M#tEwq)P>Z-{5 z!kH_VzU}<`%~D)wR^$V1hw_I86DQ>S*~Vz_)qLq6t^G$|On>q%)Q3tM^NjxH7EMeV2SR*$|v}MXlU!eaM@ep-~5|n5@~<4~VnAUA*G-fweMm z6Qe&@cb;o%-+q1_`=NDCnQXIfUP#?p4=QmwbkF>?X3^qpIQ^<<%iNCChj))Y{yd3o z>K-xY%HCbG`0lQ&k@=e74!<#Ro_+i_>pmx^+tcG8Jrtew#OxHGzLkWW8pFM`b9&8DUM$H;wdJj8 zlONu;-F4-8 z+6fQl?Dq%?|1KKxuE(md|{r=abpG@wdaaLv*x`O=YK!v{(j*FY7FnD zZ9X0Qh4ti3(O1s#uTOmsnU-6@^W4;wa}(cB!>cRh4HHBc?95fY^Uw0#=LtGVf);+; z8n|~TaR!EQox3T)7QoE6WYR%FbG!0$jg#-(%X>fDb$S$o7OICpwoPtjIuipeTmomKO5|fpe zNMe#^?TWdsT72$4SNro29kx=&&$c$JZz}G#F=yc~RjX>byg~dz@1vBnTTNSdMHSm0 zX%@Wi>}W3+d~&tq`J13)8DRlaXHK+bKD5f|1jhx*Q1_+p-#sc?$FZ?>XZ`YmRcu>& zS8~4B(~A%OKY#h6^)r|4&K2MfWGXnhZD$|%l)UFMC7suom8{k>v~t?LbLP`qT0+M( zoDTf`HBs~9{%^-+?(SV(cr|zW$Gor8*Um6vQ`z{b@aX$<0;O_d^SRH8olOaSW)?6z zd}`#osD-T);+1+*rCU=TyBqY%l-}V=;mL3GBY-1W3@xAUig1itU2<;es^j8UqnBODUV0{5xc{9}+#=x*ANrKi&8rn!p3S>j zEY&A&cnh!b3^17&0ClA z>i6n7PyHgo9|V>q95CFX_f1!Ose>2ewyWGTjZ!x}77Oyy%t$^k^Uh5X55L~iGU1o> zCZC-1l=T&($c`z7%N9pmRa)kA-uP_BxxD)a!oRreY_EQB|7J^{QqS_31K&3Kht&K$ z)yFL{?}+S~r)fTuSq_*yyuSOzFaKGJd6VY8S8xl`Vp7q|rQS7Z(vEOd_ zyqgiFcP^Mc4=wz>n}g+sTjk0rwPqhT9lL*AL21L*-dk~+3+B}Q<#E;0oAi9!Pp=(k zQlnYwJoE1F+~e|GA>I7F@#KVXJv}zv$NkBFl9J=t-^sd$K3lkc|NlAmvo=)eKF%-y zb1ug7-QoxBC+26$*4sRs#r!#b`!a1-!MeXIc$2>{1V=AOO0M-gCg1+!F_XIL*X!x! z1%EtudM&#B?$_xB1ul<|OzdP~6|CoOE`IAqD%+*8-7JSWDPv4&LX4?cEHS>Ap=UKn^_t@M0n3#My zQH$Y_bBL?^?mE4lzfQiiH>&&iVo~ACqpChTiY%B71!@u!#zu?bpglZ9#ff{Kkio52HpPQlFM){uX$nH_PV_5 z9PS)VYPwPi}oOo1!3Dzv}1w^sK)&2RN5-dNWAc`}XN> zI+io(v;JfMp8q=+zdMs*s&JA~3^E%bBqS82kn~KB^+rp}v*{;p@70Pdo-FQscN@pf zP=%GJFS{-$U9~u0$=YL;yYR=(+!)I>F-j$rxUH0(EmYkn5FB3N3Ob@@} zu(0su;-IOK8BeN@Z#t}0v#jTT+J$yih6=8myXUVubGgv$$l={5jKXa8bZ@w6{NSPP z)jW?M!7CaLR=DI?>V98;L1xqH6Pu6jXs)zcerogCdZvcuvMk#h@5fA3my28I`H1i4 zr<+S7t=8ZE_@Qf_hKb5gRgiGr;x`*O7I*qIckk{z_v)(_L&Xc9Tk*=xd9`Kgh6k<>Kj(h2 zSfFVu{qf0@q*#kU-Do>|lc&$82iXQ0+pc`P?C#&1i4!h3d|zHs(z+~DI`z1?EKh&F z)RCuhbFaS+Whl7s<6T?3E&JTNkU9N&oJSXhoZH`%dh^N8I}ajH-1JpZDHh{dzQ5hW zVO@Y_+icGTr;Sac7rx!JoMYqB9sTL%>E#nGLKq4npGl^LKFd`4_<@U0Y?kaIOYZz- zQySiwFLLw9NNZg0@z(XB*F$>^7ucIs{Zi4AcJ{oH2Hd=yf2pKEtld-+C(HBa7fF-+S$>3jkxzUFN5-&RqV zA$4B+`GK3;=G;BluztdYZ%-x9e|plIHcuVm&5wL>ALhg|9;h|Wt#@R&yUOUYPi2W} zdwJZGwG|cO4}<2un-lA$ULx}J&9l0IAE6$<-f*4e{@rCW`}XhhuH{~_U+f>AXk|ZO zdB*wg=N(^eiq3MosI%*;%te#=@$Xb61Lthk-oEL=geTLVyy5b_Tz0BYe}jS4^O7U! zrt=wQw4LiaTF5YSPHfiiqgUqjN}gmCkvdd1>CU?DicY^xQmoVGKk+Ck+j&FqOmfuz z9{Z->)76V6xo!A&QJdW)acc6y9JkOy~E`H$sdQ=_n&>9 zapsTz&*?_xS?X67uIRJmzxMfB^sjXOzNF9p&yVL*l-n`hC_Hxg+=&6w& z83AFBKPgs#5*mwE#{0jMw9arB{P%nL)Az9O%R`3cDaVdI4|()_&VTKdr*up%{e8WC zS$EFQocG_)yym?Uy^f2M_dwQU-%AqHi*!v&f2-G)vGVxe-f{#~uoR@+E?a4)qiM;d z@p;Q!(T^YWCY_mTx4XMwrQgBIx6$(^7A(Ht;c&EM<#OXUib7IGySt8nlB3wNQ-|uA z8crMVe?4$0=EBcrZ-7Cd1UkpnX6RHhS(>GyDyt8eo zjC=}vnaf@{q_aFhFJ&DhFFdHc>vk?Le}VQN zt&jr+d;SI+hdvL_*moe`eYV%c)Z*Izejh`2KmEWJu4lt=E^%I*+&!7J$#Y^Ce&pKq zZ5zAJuB&%mhuS=~>3r9;`Ase;V>Ikq2F@5}r~33?9P6)^dbC;SmKcNE>g2F*`jLA< zlR0Yo$)8slon|}#zSXMnvvuE`*pDB$cxP-r9bBKr%68U%ch{e&8NbV=maALMzhJ;v zApS;ME^gt=kj*Kl)2FAYrcdAPBH?jv-35t{Dxi$NEK*{7?#d@`x<1VOAgg1!+i5Y& z0T#V8H|O4ooH*yM>$LroHfv9RwPg9MlQ(m}dFdYPesob(E6M2OP0?9tAG9rZ7yb7; z`4=3M8U8ub5;-&zO7i|*+` zv7(84GG=&`#T@u>qhX!F>@`mfI%#5`yQ&oy96Ep3W1KnzR5E#-4er z-|WbUd^}6c(_#JuhJ<&Ea=FgVJ~MUBUDq8U=|>mOo@yTQY3IZ)bv-}cXNG(2CHLR{ zq5SPdU(Mf`X@}L9%{lc$S!VzA_V9E6b56_`WV*lbG|!Z-KT%uu^zZo-Ka@Xx;7k2`=kf2A_b)Pk7HIrX!>_v6oBKHWFVc@T2Jx$XFx|0jMJ{rkaS zu=KH#kbsS2wLt14+0;KqNyab#+}Wh}*^4Whqu{5`9hum_x91aVZ zC$%mvxV7`K^RfAhK2|Qfet+pax1w)q+RZ6{>W<4tsis-}H#V^ISN+fHulqt~?(w>R zDK(P&UAdf40Jp=F_c0Gwo@W$!)&Glg{-jkks(zlcryG9#{4%}aWnQzwUbWV?0-Ng1 zaTmWH4X&$O>hWaGo#QPt6YUoobp>-a9!Y+n?H0((t#`0M<=6ZR5)Y4WDU43%*b=j& zyQ8_aYL7=>bK?Ssf;SIhUhnVp>q%?iwun_({5D)ge8YtajRkSO+VdJKyLsl{vt9Jh zARsL{GB5MuhBkjMK@rU@I$uPLwU##9?zAs;^vLk|epBa1mrwSrBCBVv@4P~v-kdK%Q2HxiAnS7tn725T6fe@-l30>N`9W+U+UQPH!q`0bm`Qb18spdoi~mg z^15=xQ(7zI+1FyP%%x=?JUfl1uJD_(ZsS?qtr}lz7PdD|SRavIvOdiHgjnA4X;n`p zb`@#{&A0Jd`Bm#l)5K%-T_Q5uMNa&Yx^Sh`JL>-YFrCZ^vUzWPl|yo_a5*GL&*Z*7 zXL*0X!cF$O+>ZXtpKets{amtc$Md*vK~~l7lgp|eY+5n>7DLLni9CC zv}mWoC8cyeS+|UH9@Ty}Hj!s8^ZOTgUUqx_{?yC=bCSh8{+CHdCSKuW*%|yJFTZ}J zs`k#E+n?^)>hpHb%~d<*+WnTjx7#hA)vI#W?I$dyCp7XTy>8z(FO})a{osDjb+XYh zlXp&w>>eF(Phftzr-n;~efyq|uJNZ?<4-l8Y8Pr+-~avcuG1@DhcA;>G%&tlX;A!z zGi>r(Cnc3FvJFR;nrJW{_}tsa5t!8mW_+4~dre~(NTPG|Hvm3TL!EsC8PNj zPxR`=bs4hR{Pt}AnIT&ax<&LKKh12EdSmWot_Z0Of&8j^Gi60{?gTgnMj84^t7)+7 zm%TH1{%U^aec^tQ9nagim+yUl$NS|QyZw1_X^;N!ZHxRcw@UZrhK4PHYNvQJ)D5-&^LI<~x+<#JW&%*z+}#H1z!F5RzulY5z& z=CRr$CGi<&IBqJ;3E5G&Jv^4>uchQF(U!wAJ(ym7tYtaSDtICzq=w&7;6O%m*4A4S ze)&eM@o-eVe|pKJjnV81(>BX6&$u$fQ9z+fsevOn|*h` znmgyy6Eg=VuZPQWsy{t>VrM`xGZ_`Rs`}3az z)?a-Ps>QKb!*lJD5JCGqQ9K7BvIh zw~F4IE9tC%cg#EPn^(=V$^W^{qM9$V1)kV>ype5E;9OISOKtu^8xJaQIcFplZQ`j9&3t9Phes2*JOAW^eMjO@{xjqMG>uArAo9?EU(W#t?Ak`Nn0&R;?fHJ z)&tAfe<=2S3;Vb?d_Hg0p+jn?(%t?(`5_>kE3kw2&)3A>>#_CbulBIDcsJ~4tv~Jl zq?KWh#6-2n!cRZ@3r{n04!2oj^Rq%?=>Zqb)m87-&f2t2P{zF==VOol9@f`e81FM~ z)o}RX|NY^-@Bf%(wmCc$3R`n2MAy;qd;xZcz$acAj<*h9~&0}fuzw`Fy!ez0xTXPz%>9IrDtwTUuqi-<~_6J@K# z#yjOx&+`@qk=EWK={d_&?tMIWG$C~5jC`iuZS3YYIk$8r78^;wE4p8Jravn4&&~ON zCH3mAZ9dSqP((Fx4yU~;&ry-;fR%|d8O@*W7A>18awF2fT4QNqPy6KgHAYI(r3zK2 zJikX^cbRPa;{Kc6((Cq$nb-V`nvmqM-76*Fyv*}Wa!pI>T7n9$ z9g^U${`Tfrcijh9-w&@V+1UB-^{=mas(s_morZ5d&*ByYCg0QBWLBNOMY_h~`Msqv zADuKCPiZy_6wg!iW!P|G&7s9{4CN(?7nmBhtH1wM9b>a6n7@IuC1Ew&-GCdxom*tf z!yZX)&~w`A74bFv!`aj4j-Hw*wSY5mhwvNOMtPgmi4^ta^nPh%aT*ne%D{wP!bKI=L;-o2F)Yd9`knO1+Z(oFNX z(}9E)M}#+T%lmLo{GTPC{RXzRKHD6`%Z1m^jqE-9NSUGMQpX{V`M=+!7oH0~*I3GT zOk&Ub+V{-OAC=etNt{#v?08QXBIxY znSOM^`CDr~E_Eo>nU{Qe(kc(t2C0qdyBJqlvZep-vlWZ~{fal>*n=aJ{r#rsvF(<4 z@+Koi3++t;U&G{jq;GEi3|Kx<7sf>#m&b!{&e)#yq{2I3Zznk|nl}Q~F z&~Xn)5n7+i+^|ZmA}2iGxJ^#Ug5j3nywB^R1y{DU-D28R`B8LjeU!k;9@FmGZhc2S zhp&D3Q@mE@{;%cHAItOqTDx3x)IR0akjKb$^1X}<52N(-eJrMN&LXZ62ZhZ3>gq%` zM+G#lYKypf;GseblcRWT?5jIj{>`0&ZF19mWE}%qzc~qT1f~dv+RXW|^L4;>GqXcW zeK~UFqMXc}9^R{d*SNV;WZ{x`2d+t7`NTCNxp~n|t_NEh*H#5Y3x?S|*zmaGb5N0$ zzfXnV;V|bF3z%HQo@mY~Pq4ps?fSzTM;mspxDj6@=V$*^WJbtBMWv=7u8DDMO~(Um zD$Wq=KS$XpM=iYK96~GZ!h;WN$u6zKW^{;8@(of&32`#TS~EP7w@tuid$x! zKM=*e)+9&d;ODExSWi0?SnmlbGGDTss+qSft$o+{E|9 z3o+=Jq%%~Ms8}9&eBfYG(v0QFvnFI|u8w;A_xJgO*?vp~GXgIkm=qeZ_tV+{`wvMo zPBiwm1vQi^PD$PHobjQWR+?m=(uS`KLZ_Nq7SF8ui~2b z=cV<-fb*%kPTLGT-(2k6D<$LFs<`4V*OePpvV0By4~rkLE*3qlzP8DUyIHp4QQ!N= z^QPA@XlIG<@%BHs&wroHxiybE<$p@7$P<{kVdaCUzQgI!JEK+_d`MdwdhUs^utY@I z0k+3mmPgxs`XDAzeps<*>NB-lzPkrHoJ zf1KXhBieWH$c0l1Jvv&q92x~!6;E_`ugF*`$fmfZ&o-Tm4k{2b;%4=>I6 zlw~Z#T-T(pE6A7E(s6DV&-q`?(+_{Iol~=>fA+dvOxy2&SkAGNYg2T9*WsnloZgnT zUpd)XdD>xOYcS7I&4%e~4)44n&E-{b#H!-f0nG*b1QRP=54!OwYFBW{Rx+k#b8fe< zQ(yJ`eS<2S2eVA$!mdLOM)p~A^n+MV_neSx3uC+WgQKKj>hk?eum0CE*XSJF_dGXZ z_qVDFtH$Ulhut$Dur(;Nhp}DV|J%mKC}CSi+{dH|-3&_~wla3;C^3cP6>jpo&1c%< z<;h{^@F0Qt+3x#C`|kf#c9HHk`>d25)A%p{{b8=TEZ_hCiQiz_ZF@_U@=xjunl>|<$wPady#0L!F_#Csm}}Ur(z#!ye_Qab?7&B~Cy`<2b-bEQ}XXdhKw0@rdiznvWCGU^t%J&&(PIWFgXSR3sM|IH!67&CES^ix7qZF6`Y9dHcv$^O$}Eo`-Xq&DhL37TC;vvS*dyRgR@= zToM|#wDsy7GHBW?=8`%*uu3q z#a8sr7aKDh(YUQ$1=-B(^UKwymAz-&Be2{4pQ*wXi!XcilV3lp-ng~SzHINCr#EWf z1TPRhzs6kkId=1VUdSBY*!=O4z>Vj2&n-C?8%$k3JwNb-%TwV82OnkD ze_4Nlt)S6Wq}3oQJ?oLl@2y4E=VydniglmDvh|Feptg>pgNxmZb@>l|-LK+}Nmyue zm+{o4&$(Cg(hVvi60EE3+k!m_R>`> z;`8b0ulxA>$Nc#44~wmomL51#_@yn>;@hF^&f4An`#!CAm=^qVP3o^^Q>Wdw0__p| zzuY$|=I3OK{v(mKg=I(Tn*&xg=M}g_rYNmoTOX|bd_&+I&9yrW7|x3EM;|kkDvZ$Q zm?e5Z@LSzOwwzWzpKYm<8F^*t9GS`a?{~dkr((pI;QHbJNBO|NFWe8L%=(?j5wZK# z-;O?OzSZ_WVNEsFnJ?s&22`GYT)&$~*nTKt-^_`z?s?Ckc!zhAF2D^zg(SndDEwf*{@ z?B{d!S|8h~*QEl2)22=P zaDbWr!7crG?$2|__A_tAx%+O6Zw4x+?vEB(M zn*&aZFU@opoMcn>L6<=yR_A#t!zPZ&H_hyKimdZwC|JvPHj-hE;nHB`eqFxUqH7Pm z?Z1TBs0^giJ)3Z1JW@X>-t62Q;#_jREpa1%@$TV9xw>X!} zwJ4uzNltItDg0nj$A>-7ZTaoLDC;-u-`Y|oad7>zPnv=2e)z9k9LMdT9lE1e>R!oF z(Yc`;Kc6ZPPAw|Pl?YG!dn-KuK;d!O`%jbw6nU6ze%(msXlCe>yubUiUx=1npG>6p zwSy6>!X8$#&HGsJYUT1pVXG4}GdYjT*4rF1XbIc6{QSnl{r`XTKi>6vU2~A@$vdnJ zGm`UfeZ5|9s#)`N)&bF%T#M(d%{rqgAXy|TYR{BadZ6NlQZv`}+0A0PC%NN)IOSZ; zK5O$RPCUz)r8v`k#W#sR7mlyo|0_|Z`rqbqSnI;?DB4_2jYlrrR#ujJVONvo0zz^3Cs{spZi@dXT#C-_^+HTYc^fIQe7t5C4b?~1Cz&}=kH@nOf?SM za5ojk+!qnU;nmSq~RhF`J+zNY=XgY*N-;(Cl8kRCMTu5RwxQc zQ?GlnN&b-A*<;7--?ciec*(f$^}5}Yre(Eo^t=+^-|@=bj_JBV;IW$m7DZQoFZ>>| z@yq;p_M>cP0w>MB!|>vzPZV=R`z)@H2iWVlclTK{cbLt3$?#j4A%;gR%9Jat?9G9F zdygNJJFcs+DnjS)x4auCno9+zFm2nDx@ONuN1cmWW^V)=l7xjK+fQ^qxLU3p($A>v zeZk%7N^O(Bcfk8Q&1+v-O<|4D)L}Jc5#{~frYj-aus|>}?^)pe;`6qw6YV@dZdN(+ zTRiS}@s0;8#ht>Z72f5IKYl%L5351woYG5nd!B~t9S=(7Otd{xCGcpk{2zt9U&p@g z_o`@!+J24y;Yx8kVRzYDnMDP{+wa$L%T>N$toi93-?XyA(1AB6 zCP0T{mMg>U*Gsgu{1TprL>)VKHPq(!r1Zni6Yx16K|!PjN~SQ)r`S>$~6QX&~Xe4A7A*H%yNp5^U?SBwplWge6W zuG!PSWovVRUeiJ@xjkQGG|nGCI8{CI|NkE*W>?v!WwJAHx3#&-mhb<#yx>^<&-ojU zH7w@%>b|de>C(v$%fb^EFk~!XyOGu5p8uOouIjV@!<7FTHILp|e>{D^ilsE~$LA#e zz{gBWZ07eX$<+Sx+z|MPQ7_VC$Hy7nN+Ex}-W`BcQuj=aye@C}q49o|{F>aDYcKE3 zsjQXv%Bj3)+-dHp-ManXuiG0!?|T(_UKU;aX?3O9D&_D$UNL89HlEhsFOy$)dG^6K z0k`iQdU&|~;f;rV*6$ny+J3bD|H55hw(`lWinhZ`QcvxCKCfGQ-3}&oo0pyuk&%vj zil4biMRKpJP4by zYt@m&+vT-?ENuS$6}@qmVPX1))1M0;=-zjHFfDMSV~#{d|85_Kg0+kdD=*Kxa?gF* z%Bw~_vJ3vm7L+kx&EQ;L_t$mDkDcj{KDWpBwl6kbcv8_I`okjCC9kD}H&^K^EAexQ z>8)t)Y5#j#{_xC)vOf;2k8gLEv*G9sjfiVDlv8>=>;1Bc&Ud!Wc~ir=;lc%(hd1Bv z<4ri^<@(s(CR;qN_@Lnmeb$P9q4%ARzCBocF6qy))&9)wiYLC$I{15k`B~;4tJmiy zD&IJA|IZ&!i>&v0HQ)E~?s@4ie_U{H+k~)!yTSg9p$!TjHhx#N-q5E!_xbd0(FBEc zZhkI1-v9o7%(A0n@yh&tPp2&l57%t{%YM#T#P!Fy?e9AdKN40bx>x!8;{|7aP<#8x z)OC|%t={h`F1)>Vdy|K$?cqMzbN2shG9Eix9=pkY?(nZ)Rb1*{-pTs9?D)NI_oIDJ zIT_Z~eDq#X_oV;f36tK!C_}#e-)lMgYK>|(vtBWOIIZmP>b1&IQH<__K9?0PZDRSA z$XdGj<|?CkE$80b7cjh*er>p6$s>u_v}31EarIfgT2awg$NJ|H*B$C{3e#>b-JAY+@>ZOMF2VDgjb-|r3Z66dnc6G>)PPrUGQ zes*%w;~=JMxe`s2t|&Al^teg5t=-kOZKC&^Sq*WTyyB{s2UOqf+Y);>^2p>}tNZU;r}B zW}fi3hZhd_Kbm2?`{R#=&Jj1a3b$Xsw&2i?UiZZ-y=2+`)&I8o_UAbFhE~-(f9KU7 z*?0fX_78oLt+h4EC-qBPZ8=z z?6+;)5NNVWa?+iX=|4rUa(`sCSe11DrQE+)-T4Qa+xIcYu2sBMlJJ+K?$TeyX(u24 zbC-EnbKqgrzx5Yp%gx!}I3aA|MmCG~3n7I?Km2z*d0~I><8z&bNv0-|SJoVUA73lD zKxWz%xtjO08Snl0{GXe{)W%=2tEtFH@p6TA-2H{V$Fk?`WcLx&tN#Ce!(o|L?f6Yi z&)?azCGu9h3ynW~>C?p(`F4H%f6hq$IQm?+Ti)*eqyPU7@BZ-q-;cnU;-h+VsvimQ z&E(B^zW7yE!dk}V4=a0oWtbed7dx8zN%f%v{p(kVfG~V!o19wmi3{*`*S#Qes4Ve?|IO|KjsD-{82uao^Uy$NhKP zPuKtZy5spm)0)4pw?CX%&3AZBJ@?kzdB?ruzHse%I{kjj^uH%kBW}mAuXw?fH9tFO zuHD4{eY#V^DlT@{2_#A!in`7+dCq6seeWNyTD|TNs8UPjx%cr~`GbeD{nzAKUqg3sK4($~vLi7d+2dShvsr zadQ44`TyVT*#d)j=ROiE=?y5o#P$D^{{N=W-`=~6xEahlxc2@pv3cLNEHB?)Rl1kg z+vK#|!hh2jFFf(X*zBKz2Ip?B@&3Et3Hds0J{Lde)zVD)SS=gTM z-Q(iU)(I<@Z>+KE8gGbtbQi>p+vO9$>wMNzOKnP zAAC5!Peyxvz4V>d^De3Z1-Bd-4UQeGKfZop6suEQBm0A6?Txo>I9(}#3Z+6_yb1#E7=Wv^TTfNpkRqjb@n#NLVk?VbjF7$Epuy}+f=FT!U zdcSVgh9xep`m=niZ+5lq3gu0LO$+X=`FBdwKULVk=);3%{$s71 z78!hewq=iGpvb`}?(;KlbZ-o0mYn)=g=xI>)==hDEgSiBmJy3L>=8}+|Gu6fp=}$_ zHiwE5*84yE^ACz;S-d;`?wIp@3tKk3C52~x_CLOI+G$O)tmszmmr-eRJ{_4djW5^m zLYn8}>-Hs_e0HCFL;h$TI?EBIdbD@SQ8nu~Q}*4+f~^IxIreCgdgzCe-`O2aygRB` zXJ2zj7Ct>yYmXP}zWtqN6If3j?b_1nH0RN21{1Tx?1hIa<@~H_MZecouYIYRdd}KB zcVqj>>`>1XHjQ)rX`Nc0z=JiHWqvk=&^v#$WCqbWHzs_}dxw1?M(j46x3cJ=>z-frIf8A%~!o z(+eK5if^$wkRZW2r{quPjp{pg5(Y6-16CeSoca5_y}jO#$!AWZy~l6AS8GK|?3 z{>6%@Ziv5 zpmlk|=ClRjVH+;HT2y5-zjo(4*naHY(zzBNCDW5CpU3@qC;vxLf+gCzDf-_N@r8SD zRP!3t=;yItKYi%JxvR&%KU$#>kh4JXwpP{j6NZ!bFsHfgjXR#Xe6HAOuh$>??pLr+ zShB#G(ck753zPJNSF6{%iMVQ3_FU3EI6JL2>&pMf&z4574H0B)CExJFu^{>gmo039?^a2sX$@sNTEe_Wq3Gp4z1%Wp5%5u8#k^n4v*|W8svh zAg#;x7cJY*_WIU*(zowC5mj+a`qVXJiK$+!*P`as-OBt>!*90f$A@$}|_)^zJ1ve2r_Wmnz@# z&0_3)G6$|*6FX$k68|+YcHJU5w%pv6oRv2Zx-@*;vux81p1+HCteC3UF1+sV{R`(9 z5?M5uS6TgNcgk5MHRW^Ro0E)wRkxcXO!=e*7cSd&U{8;#mDXjx*_UV5xfsl2yc)gm z#@z$?yWYod+1eOi^;7&oWhl!@2Vc2FJUz(J@haOOjWzzy)#6!! ztnPf*8&5DsF*=F{@abLJkiuXQF@NDUrvpD^b>n|6T)I^CPR(cEv)=-vq-Ac@Gw5{{ zJT}ko$(A|twe91V<#9aw{?0GF^nM?|Y5KwpQTKDTTvwikKYDF`mt(DnMc3Z&Yi>8{ z|J6w>J+9nsY`O2_oKDf2 zKmPCGtNs|5aj(gY#hFX`cNqi!ddJ&`3*@gBy- z6}<7`s}EW|4}9ANUnVbTKHjLY?$6meZ@b$+hoE^4dOSyWC$fI+= zUi}R?wrJCn!)}GQ*qQ_RU)lCPn)AzkS;$Mv?2kLo*YoMu zUF?4RdH#uwtJm+7I%gSEbW-)k=5&6B1D})Lzc!8E#TNhLkoZUG{U7-n8m#x1tN;5a z|BvziOYwR}^SdR&O;xs>u70L^i|hJByz*ETr(82Qc0^Mzkt27{vYrc`d4JvQf7ySy zX#bBRs`QrRlr@@MOd->!7d|-9cxCSNedW>zW_wHKw6?TZW#%yKxOq75!tb?b)-Sh6 zFOPmb|M$n8GQt;9uFd}zEwJ1%V9kyrs_wE`r4M+w*T~zK9Wy?#j_rK>p;PbwS>;vV zf4$J(f_ZuE7vUSlwpQ<#kGIE+Vc1Y%08K z^dwadADEEdW^krt-@;YrD)-rI-PyJBcbR|rW#eG|{l6|=uFanty!_thdEYA^_iZk^ z5mLHPqp9ijgHx%s7g8D4`8oZ6blK0%qT}&~dlviGpG@;?{UvlvDC*^rEpOdxt=WIG zJ2K=w^5j_EZzS-;l6&h}ogK4F7yei0Pnz}0A#XSD0qbc^NsG;_14FM(TW|ku$xRh; z{~*_mmp)HF@j7*lYkquwN}#)ho6P>_6}3v)b@}!3D+IKDcJZ1yE(=$_YZg2!+tE<| zr<%@+MW6Y4w%*7)_|4)$?R#d`tc_Q0a!!(vkU7%yR_wtNVSlHcLB~Fyx9!)iFISyc z`AqW697EyiHyhdQK6dsWzR36N>}>YyywP&GCgqDyG%Hl3-qikauJ!)Gi|+Eg=I@m_ zcoK9%<{sY_nSWwNu#T?Ty^6z8q~h=u7i#eQ$A{ZXgU?(je{n`JDl zb)WH9>IKciadWw&uQq(xC-C6l)TX`vc_e1sI`$;f(&5UJ8|`($DpzklUi&I{NH)Jo_HNnwbKh+uB3Q0D{brW<)7!ZDIgf=3lk~UWZ>=H&el2T~ zo6+`ZQ{4*T@P#}FmUnY8mE6n=S;F5|Sz=-N<$o6I8GY78JR&k0ce&%GOMb*^tg4%_ zfFb;7(Ooyud6M6J^Z!MdT3&zYv0_7M^o|?zJ~~@UwobSI`sVVFJBIF#+N{Yu8h39b zpRe6;_>k_$U$g(tm>XPi{Ps3yhDFQQ%a`A;7O$#ePsnYs|NHS(MvSOfQ`hzFYZnCt z&8_b8_v9`V^?E8Kc6SR$yIhe5lYK)F7yG{dwL5-3i~g{`{64FY#gAtBmP=gn|30)E zrk|7f^GJNZLw>%#T;-R*H@nZ3;aqfzF}^-z!ole<*(N%kndra?zxvs6>QSWy7%pg~c2- z{9ep`k5!(}+rnL^s>_&i>7vo=@0X$%)c2LvY+EY5Z|ZsbqR?ksEB~q&{n@&hBP?uc z<=yYgu4zuoKPs}yb;BdA3zH(|zn(dPH>oY~wF~=lof*ygxw{2Ta&H*8wYDy3ThcOh zli|I8$7fGyW)3dAQ2gGv;@ubh#M?JFE39gXncy7RdUV;Y8?Eo8-*Y*N&Alkev#8Sl zevR;tWw+QZ_U^gHpTKQAfxqfO&1>cp_8-`Ot&e5ux3k*HG*w}Pqmo0<;sXbgcIhp+ z|Lejn=j(#++oFRae%@v`NDpJQD7K$6zee<#IDexvTY*eR7{?md%A>PS%1AXSvU>8Z z7HZ9(|Nm`>^fIdpQkv`6yGFvo~$tY|OYJe@%>JTXS}=*Up|8yZIW+3MJ-;NzHqo zIN8^Xb87Z|cf0w=C#iaGNOS>48Z|m2#376C{OSs_X+RDa$ zxNz#0qOVsRzgJzjzEwYDmy6jh%_e5mrLjVzLGHteRg5g|IgI&n0?#&P ziN~(vFMav?#D29Kd2$zHUmj|3&JfUA6}CphU>Q^BjNbQu9;e29+P*w+nQPFRtqSDb?uw(bv%;w^C zl}uq=hD;2mh0ndMT@{Zi9@_t$SN`|ko307Lxvfj|_B&)b)|^S#-~U4?W6}2|DqjLJ z=ZdhOdj9!?js7k3yp)hl0U{CZ3yn1r1ejkGefrSMFwd~yvt>l`q^_+|nLp}o?4F`< zZ`)-*2??2=EWr@xz>r6`y$gzz7Ej@btNF-!p(XC49xKnCLg{C5|F}cetlMVHWKi(0 z^}_5t*2nw`FFrlsdv;(BvsCc(AjQ((`=y@Axku&fzFYQzdH+TZrPsb*4tCQIubH{o z$$!aX2c8MsZ4318^6X4t)5_BLq!u+LSMq0Yl>m!gfLe$g2S-Uwpw8MbxO4ZCUu z`gpljr@mB5=P8-a{(aBc2O5qJj-1W`;ZqLoW@Y^4C@sYiSN-^_MzgcfV@GSP>fX#9 zYQajs_HJ!p`*!cWK+S{N-_8#f8((jnX}s+5&*|~4>pu$!cpdulA%A|g*qU&jYGHP@ zqwO-x@3MqGiu`@COV8#!Kd-Wv>M{FS8}vUcY?l#wy7c(bqjN3*(RR|BKbVmIhtox8%%~dv{{$mX}MSa-|vG?Rzd)Qd-(tYTM=dX7hWyi$BHYg;&4Z zsa{ubl7FEr@1%-nH&uV!IBqvhgnP+Wi~oP}A5U=R>#OSI&fAeF=x6(N%C1MTYvW79 zSgV}2T+wVby0&yt$m=!i6>IL@-Fo!!?28$;yB@!OC_8_p*KMVBYG*>6_`@V7iapqK zylTUFw!1erSF15?Z`!2zDas&r*G1Vc3!f|RUa)`3hQQ-(0+-umpPy?=uf6aj@Eqg1 zmo4u@HvEl$*QCJj9?5cSo5$n)IT10Y#vxoYzBKkYFUah0(Dtc*?>FOL=h}^bejL@9 zvrXbsqQUPae-lgO?yWMvQ2qMyiTwd>rKS=QC6T=E_L^#0=QZ4XY7}PoQ?1Cpny2~A z!8_e{e9Kcdyz03A>Yji4x#I8F>l+guep~3S#FcD(?7_$5^6m=* z4zx+B{owNHkhv<}uCyWL6oc6rmy?Wy3`K{X*u}kNM9(#BD%;BDzBmKu( zwHsDFH_3b2bOAte?VrP*vjFHPKkp3mb1uYgba9w!_n%Gs0UZa+AtUb%qU> z{j3!^m~1|u*=*oAfniDcn@z@X(c5^m!`E@GzG(F4oZjv?P404aDmp%*PgirZSij#> zyv2W!lK-Vup<$vK9%pAAzxwX*)>p4zG`%Tj2s?1}O#B~_eZmU@${dfkY8*0W7Vv$s ziTgFf21kjbib0Rh`~R+bT$aG{fZgt1O>t;%rSq(3USZnnZfpFXrgDVecCM?fbZmS~ z>%9D^lCydT{5DTmwBYcQgP)%-Jk9w)|FhwT`Rfy_)-@cIU)Scud3mP0zSoNhksqwJ zU)a>EH7(#_|C}(TosnmOcd4U&Xv5Cmp(0DT<3tz~yd0;jsBe(1 zB?ra*F_by|Qc57uuWnajV1%Kik?HD@RQ~;a|9@ZT>Tq}4 zbBFitIw}^OFg>=c?V8kk>kqX%9=1sf{qrqtl@{YL582eeXV>nx+q848EIKK{EX94% zs>fx~(Qn*h3GK3CYH3$nt#x`9>4yY;{dK{a|LC^cd9&vvw#%(5c%`Yn{M-(o+jDeg z*?iq{_R+kVhx6aEACTG3pK4;d^w^cUO4C^=1h2SvBvv znqf;oDC^2~2NO51I+$5-TjWGvqpf7+{Ha1mepTh3md<>|*d;pOB1G4Kals+3YwI}r z?Eh8xyq?Eq|Ka12$^Hqe*KT)P7|rxtIyk1k;d6a8^*+c(bp!E4>^ctbc6Z@6`<+%u~;`?qOfb4;RW zlR5iCpYx81QXIjL^@Ken*t)-c7F=y>>AXQEg7w1j_WU}@57QhLHmq}Mcy7PhyoUM3 zIfhkJ+WDE?8I)Ok8GJdJ|H>RNXxPd%OKRC+cLR+XVJ99hVxM>LXMJ>MSFn@%uD~tL z0_+WsU083gVhi6kg?*#oL8g#^MTrTAQw2ng4L^NhD7WH@K6fN5c|%5LYgx#q!li0g z>g#RUqSDoiUgCPD==j zmIVh2E-ac7EPw7|#Gwf3$}Ub-t(Vd=%Vks^D3;DQxIdRuVp_?|7_*JmYHO!Nuv#$8 zNfKmo%v^69c%lt(dMKkI?<%F1B*Lbok&`E#K z0YRhI$F8;paS*=3W{>hhL%rg{TKBr15uBwn#uD*yhuKKU3Ov!<~ia(v< zg%2y2H}5-mZui@++y6cal-({3@3?j&sasZnMRiTY$0P~Cfa#lWotbg-n$67zw^nHu zO-NHuKEyovTEazN^G6MT`5P{A z(sLE97eiCeX+$mOM(r}uJw+xOaYN}JXSkxu~} z34c~>TG69(A);JF?JS?mg5A~&c60G|IoH^Wv$L*g^1!$uj5UI-z?-f1xo+E+NS=d>9<+3=+i2FC;=r|n;X2b&^RUAguJz~_nqOJ6 zyl};g`uB^v1%K2naVVTo9Cz)-5B?f?Sy|Z?6>@%7KbM@Sy8oyxXX~e}@?|pWJhg2P zgysLU`2BzO(&E*M#Rd0kzaP9MV6gwwrPB*T=Zl%&ui>`)-+I2ivMX>#^hS%8^R@3j zOUTHy@G@mw&wM1CSca~YYs9}hL2d|p@-KK=QeCwAA5om2A>zW#*o_REL} zX{|{@m2$}&bd@xwpALvh-u-qP?_S4CtGEw*c)IOzh=a7~o44OSYrIx!s*z*QHRGPX zzr317mT%6U)_2TXULWc@Q03~eP}*-Le|=@4sa^H+?gCqW(Z!7B4tne?`=q59a_-bi zY+ZQRceTTH(SV{@1%_`{kLz~qcMfNE%#UpyO=W@#JnsB8 z@==xoZx`i+Gj_8c3|;-ug6~w8)Rvdr&XXo{9Z0lonRhRa<=A?$>)D%cB-}cY!OZ@z0y|F`d*>JpQfwxzV>HlaUUy+ZCf~34WXQmuwE{(O5vp!tSx^-Au<}imsWBf;@3)0I3o)qmgNU;`Muck9k zQd;$~NYjs%F~?gC9j7qAX?wo#TEUiPg%1}myx86P=8V&V<(t&*>dfp@mg|n}_#DO1 zaC>s@P41Z0j2}Y2eAra0prgs}UsE7;zWK;o`$anvGs`|)J?6MvWI@#Gm_P3o3@%u< z#w=}E5a4o-!8QCq65piUhoG9B?X$SSk^idfp;T=j2h>CxTN~2)&YC&3NA7 z&MhV7Rp(y&warsa*0ti6HRbZQ7JGluOL(nm*HNV@(_9quDxLY1x6P{PayiuGWFU5` zbkV(4Y$^d7PXaYW9#q@4wY43pNnPt0C1Kx?F}LE?wIc^6|7!}f%GxUUy?ARuO!^Pi z)V0?a+o{jC^$O)})i}%dNRxFEhJm&R{EDe2d*|>(q9`!{)Q|Pi#J=RiVXxeC4N##di{f zZ%+K@dPhK~=AHt_gBx5tPWu9drfIBtl)Ox-C_9#6t-_qVNkS9O&Gm0dtexV@vnD8z zMY-~Wi&Mb#byfEsFuHv%j4^Ll`0y};z12zaq3*;LwSgkDwNhgLeEIO?XWR_)Y+WAR zp7-rnw_UE0xxf8uvnuQNmc$(&=2&i4e!uw2+T0)7t4#zVUN|^DXKD0zhz<}GW8;!a zVtwS&#^k@Ch$*Y_hvOGN<@c(bhc|S6UNu!)F>q$FWNGbUi$~56cCpHo-B91~@=xUq z%W5^5r3LR}|978@ly>?w_eMo?Ud{74#SFqNZcQ8sT5DHbUEa8>cZ=Gk${n^AHWurc z9!z_4=R@uB!UxrLPk#1xhs}J_A{+X7dSK}CB(0X+D~kffH7@>>F=DVeYWi|lOzX3y zOwo_xQ}*3E$#7tC$c{~O?rxR1(D%$b`0iov%*$MH>7mAAjn6}?|90`%Zwsk@6qcME zd{4!Uadn}!)UtYg<*V~#5B6QL(VsG}adPp3U0f&5zHt+1jcJ!VAXeGr+1+a47LnDu zF68rrLu#6#=NC-+@ahU**!l`t6S2O#mI^QcTBI&r9&_o4;UXkp5bu zm$MpXlw_3DvMuy5p1c3n;$4C9Nxs#}1u4u9!K@uy_XHk3mwd)?qDA?Rdmn$NA-(`)iTuB{TN( zJf9{h=C?dOOqW3<+&$bgFNyo7^jh9jmZzG}T%)@Mj)??lYU-{3{>!w}z~l3S6Rvl% zx>JtUhX{8KTLp!UepUK(v{`pO4tZ7hT56hYmSX+v4e^KXN1tB& z>fghHVxPuLZzosRcM;`!sU~$?n#UOeW-~wNS*F79?8Oho%>iqA86tLk^O>%Ec-BP? zhL5_UjM6_08XG;d8I+V|wv`^8+QH^utizyMDs}B%El;R%bV8|H+`1dqb9xjmRcW$z zu3yQvqAR3$Q3SV}vx2}kn@!ikx*h;QmFePnw zcj)4G8*T@#Dt?y2_3k6<$)>8s3dbw|Dc|is?0H?#Y>vrx_oe&Z?#K&1JR{|6>9L1r z`}T4f&kmb(GNXv`gVlv}^TiieY|yn+&OT_8ZFisT!c;Tkg;^qJ17>bGcEF9*H0#3~ zk6OW5>(-jE)@^*hWoC7OZyfvUsRc?WFF)Dfw)R=5-7%@AsdgEcEw37CdYw*oH2C;Q zZDo*l#-z<*+hwxX=y)_Aa_xKGCb9RJ`MOuK>e>GmN4yQ;QCQk(BQf1*Rj=iq31U(g zH~h+(9PnTZ*HJaK$%!Af^ps8ZlVps4|8Ui_J7#z1XMcKjBWI7H-P9hXdmV=rCj3gO zJ}a^7sr59|8TG|-SutXgt{v~A7IXP8`ZIUVT(RX^8fy>7)R~0!p4;+syBI^dN#%1s zccuf8^Y4CTVDNu9Cw66Ve38TiOQR36tot|BHHZ9mn&k4}cj7#WS=BsCW-8gNnw-TY zDVt(ZqAYQ&)T~bZwTjuD#ku7?lJT`G?v~bQf7#c0$TVNlc=OkPPb}6YTc4Y??VfY3 z>N~ZHs=HTi-;RjCmOUf5yF7J?3 zvmf1aQF--Q%Q&jL?A#QML(?;7yxv<87vK2y*AWJzNd3TD&*!cwKV{`?b@FrWqI1U8 zdnMN{XX{LKS-08Gbz_Rj*2z{kjy39LoVPZccPU2d>y)-{yq+BM9JVlDFT8$l&hoDT z3fnH(T7ETmcYCcVFz<*%M~~WDR(~^wb)Q|gPHLRwxo~ULTjv#hH$nnkGs7k+Ebh4` zu6btS!;3e(&ZSKWbdyX)5GHC~+ZP0TDZU9vzsPabjhAua!MzVpo}8wzxX0*}#$r#q zZ|)Xrj8AERxEZek)62hCecf~P;K9;QJFiqN%vvkTIqP-!f-av2!pE=jUq8CMcfKxn z_Nk1wEPFhXtCChbF?wS<|n`_1D^k9y)7LqknzdJe7Bm zcW)^5PCjA;^^D29C7V=Ngh!<`?Khkxbp73X_5YFT$2kI4SDakZr zQ$G5-y4mzi{Tu5bH@GpZ6G@V)$US_{2#M z->+^jCmyblSk-Cpa_-}0J9^5Vz1+65H~Y$pnH^WwW&SOn6c8)e5!Arpa>YQ)VD=e< zZw6bmcw_(8o~>B9(`5GSpj9s;dW%>5zZ-F{>`z|qWkafqOPp3B?=Ce*X)+4#&<1y*N zdzH@Ds#okJy=SFu&PQ*#XYaJ~RZ~}VSYJ1N zfxzMK1=E)~%wcNa5;89ce0YUtak7%2B@-*_p(f3|&6?+C9(ioJxW_1}KeJZ5DO5@- zD>_`xbGx7Q(luN2e{L>R(idFVp<=)N^UjSiUMrvcc9*X;VJvufsFmeFjNWmlg$_$a zzTd0P*IJsjZ#AP+3zO>s#VNsmcdz)+q_!Yg+En(bntlKCr;D2PVw@Z@79RQBthV5V z#*$-G3-V5>u5$a4aZgWimY&SBg~8{wSY)h}bX1~dDao|A&;7$&_wItO^nG3j$Is=P z6Am)5IUcwkSKS*PUu&wr|4)(KzaNjcTq`;`NtK6bzOAjT>3dJdrSrV6-i=oOTyp9B z%s*>_{!hCi`tR@F_qF;2p9v1#4b|NNCs z-WB~HW|}Cchkg0}<#)#qFW32v0=qWr&I2v(ojl*u?529xq@LFo8l6{Msap2quIm|l zK2fXeZw+4SH@|ox8S=?*llE?w1(Vse>*QU*wAn}@R}EU&9O zpLMU`oV~D-?a^dQCa2z?U-mGH{VyxJYv+I3MD(rul~b{Sg7=d}KJDWsldE^_?+$P&{O=vVEZu`m^itKACNA%(szIG?Og5XtD$$otx=opD-){a1wE)X2J*QmdZC6s}yT zDWxenX;)g_$#Ct|DDPio9S)6)O16ku*8Mz|9{G{iyV>>&8~ct&4^Lb8UikF$v(%mk z9~G-q*m-{DiJnqpe34=B;n&FpM*ez62`v|s_DARM-TLfaZhiToi>5OpnA$cgEU`Bi z+jK2y_uFmFTgB}Eee8D>^0)me(qpJG)k{J~#zlZ-$J=eUA5_Mf@`R;5R=<9?dtni0 z|G&5WH!7_b<}mCyaQ%OY{;&9YS#`NBnheYh8;ZZT-T%zba;=}|!Q0TAF*}P?*KFlz zV(7R17O}WAMuvfl+rCcBOXkRf-1x3D4;mcV%d8)%*nB*d{UUlN(|y~23r<`V_{p}0 z-$9Y1Bf4*vEZfq~2ftFCKdkAOTz8ON|8;vhuTA!W1?=1ZeN=k#>E{!gwrE7r&Ju(DtK^}&a= zG5*M_)c%JnYRemDB;6LGN6h{3OHfwYdv_{n{4%PrSBHo-OaEl1#YMzO8e2 z)X!`T|7Z};9L6|zm+<#BQJl%OJgm(H$^5(D9hqsrTX64Fu4y(KIOOjZnkj5^^>J}~ zEiLE}z$miZ`HJ_Ata~;&d!LrwNSpn3$GL;aI+ z+oxj@2O^}aw1OWUTeR)i6tB}h6QA74kTmmcO4|7PkYxd9&fc#!IU9d&yHPcpHDbqE z#tB>tRWb_qEm>mB%flnW@XfZl@8JKVS`r2q81|gV&sxB}`*A1te^$}oBHwOhOV264 zs~zx}|6uL?TbvDTpZ^sL8XVa6^A>CG{L_1WiY()`YlzzzP{KInpoiMoUti{b*ju}u zVcveW+2`lBPtK2Mvb6qZ{qFxixf9L{W`CSKuPs?DWP#i+QQ3Lz+UM@d`aSu}-*ccy z>cxI0!3X8-`5gzC!g%_2KT=|;5`FPJF-Pu}Qq*g3Bd15LNlZVECp-6Y_Qyv@7awX} zKEKY&&;D;o#@da4zujIOqSbp#`_He}>zy@Q_kO=8J^%Ne=O0%3*JfR@*rd9O?LhH4 zOZAV-j?UZq-{+63mkIv*cwGMc<38)Yb+6Y=WS3yre!s4I+Uci>x_k^7Jxd?& z2=OXz{TfmEn6d83UiMGr{QAn02K)i<3z#f-bQElRA`q?~_9K*W=hcGGE2`T-&iQB) zS8$N^WRy(t8N;hz8x|Gqsyuc7SLB!Q%|Uz?1-A=3#gmR-mP>ay96zsEr{Cr?d&h&hm9g{Kj? zMK6{aa5KY$9Jy%^#St^9Mk!wqP_Re>8s(N z&V~Q-=>Kyy@iQl{ll9E6=DRr>o(4J0QePcsyHx0=_zWX$?fSD<_fBIx9b)Bvf0~E% z$=Oco?<;amB_+a|gx=eI|G(+Qi5GaO5_-_&qP~vN&XGeW|Dw`N$#k;B}{JA}nO^JA~= zHNW@Ie$Rs?&XZnD*>Zg6#qPU5ey`sDO;3qm?|YZYzkn~*?G2~Pf# z2i|pZ23xl6Kel<^zGZu#|JIpaRq^!TX3K1gYl*4`v;$=7L~+3eX;A% z)Pq@U{c}zhITU?(6|yCu3{(Y%KVy_TuYD}-tg?V}tm!r1*?(2n0<-Mm=abyUgxcFyLDdrm*J58zLEz5by? z{@>EyZ?~&|FO_LepIa)n|L58KPiKtJKe@jD-&fPLQ>@%#8$z^tU+8T==BB{ECws-2 zeY@)qG==^76zad>&^?1WA^FFew_UET{64R%a({jve!=iYd%ER@A2+O0)n$sG^~o=I z&-=mucwPuQo2jnu`rmJk{kc=R{v!9OKi7BixjL!7Uc6uP;wA3G=NRH{86Ws`VQb)x zIR)pr<5j$`Ulc94YD|UXz-Ll)0RKoY|oWyVUBjJnB!~0rO zx$^hFHM>`S{_dB(MygyZPbVkmUACQT@nrg!wGXeY+-mbVpZQJo!@#PiLi=}IH91si zefnPV)eSC^axD9w+rIbg(Y+p5oqK39L&ZT>aTC@F3@;8me0hEU3B~#eu`l;)e)u8% z`^MqjJKyh*KO}xX;^6++(z3hDdJeO;dWm~XGOx{Z>wWZM;+}smG8OsDYNsqYub(q1 zUt9IToZ@p2kK6w%-1q6z=`XeWf0mn6l@lPj`^=-lY70 zkCV7!;y#wx+uA>P@HSpCL_Gd2x5bwy-#K{C{l1XzkzDzh^L7y9o3B+7Yiztb4B}@v ze-nMl`)3!cMh>e`Hlqet`(@>wf2ym61*-Nf{3_o5@Ek+^{qz^C4-fA7@P$3nNR@Bj zA9kh(ng2g4t#yy9KeJ5aWZ~6-iFHfciy6!Ezc})Ro|38gw7bQ+rsAFO78xm%CE?Ek zHqM_mjXD2c-`sN?4{w*Q6cCup@cn7r#C>b8EDN@IG?8aVV9J>wu0P)KGmll3zT`jK zvwPw~X1(d`s=v%^vRyTu8js)IF{`bu{aoMqRZy@rc-x&N6P;oi4@`~AA#9~ZXEN%?Ag`5^znX1#8K z^&L_BjGZy-0^gjses43c@R+2{;~wLRS1XtIaWlwCNlAS(j>^6?X;BeN(Vaid%QxpI zbWFX(aMHZuXE=ZFr{L8)S27hG{{LBe-JY*gTsQ+YA1JO0RP4Oot#aP_{hlW~rv`Oy zH{oEad!a19j`=d{zLyhix655N_Vt<#3Un}vw6dHceWJ=cb%1;R`X@c_CT2rhth2?RcqFKi@Y5qdZ172 z_0Ge6)-C6rnBRZWC8|B+^wX@0=P#GffA;C==@-96wRBAzeE)srs=8LB-5_OYRj@c_ z>xW{$b(8(Y*mvyqV-8(n!_s^G-|zSHb5`-1-Do%_VfX2TGRuMI^XvCnGR&)YIr3od zpL^54FJ8xd%bYKQZ{z&${~l<(+xY(Z%iBiPa{t4oG|MtRI3j$>@%-nC%jxDT-B>*O zOi~hbYWF)CJt+VGc5ch5!X+F%GmX$F28G%suAM>kH&8n>p%WtoWE~x zD0PeIB-Kerr!LvJ<_6dLf1hl)WTfVQsi@Xca=R>bT4BdrrVppWJ@3DMt`@s-VrKcI zw&wDh&I4x*UNPx?zx7<%=J~7Y6AQVf|Ie^zvXuL?{CXtkiMbC7zAc=7QG05|!{64y zKVL0A$=p|WPW~8|Zv4-Cb}S;y_l-V?xqsz6pk2)z=EL#r-oM`ECmQ~|+P3lgkA!KS z>vnwE%koXdxAkxR-+G%j9}fTMJZyK?+V;}sW|mJ|Ex)apni;kGPRVRprJKusY~5ci zV^sU+h)KH0&b3>&icI^h%C^i*>D8q4c8}~EYn>$@IDC9{by{6Od0v*G2 z+V5n)t9(&L$s4~(U%FHIrrBH)tGutZDdb)58TDyQ*1OH01?+4$S>N{lUG4M26BRW- z-G8e;&ra}|mA+EEuGjJ8r)mEA2mE!V9xZtJaGB9;(Mk6nOr6MX!F=H6)YzL-86R{q z9XPvZ&&GAPPVEe-KPtG`@MuJ$$@dP%4cB(1=@maemztmd{>M{>-Rq(!cUy=Bc{QrM z1D#8AJ>12>#AM2yaLuj9RM$S<`0D@Me{&7lmNXhL%$d8fk>sc)HO&M^rVwF3tZFy!riYj$R) zF}rd4xg%`SISi9_JiQjZq2i;gLEF~%*EzVHuinXI=4Y&l=+x@6;`{e_*U}xoJ1Q#@ zHm_fh(^c{Dtes8Kw|gJjD*u1{#dKg*=;{SqkAaqjmGApJ_eR$0wL*2PGyAtZD$)>q za=(yqU&+V#!Z&FQl3`PY7}uBvOuc&J@saq)_x}H6<=gwt)aUlQFB^6=Q!+->*R z`fYz{-21xD_JPaJGfVp4@$w&ddwjp}@x8fLVY?finTR}Ob_t0V)o3VK!|T1$^>g3q zA5N{6Q_g>7)0lnsLZsf(IX;G^=`Z(7sy@k9m~edJ>pKFAM7gy359>uT9y)Nzp;D@W zx%0fSb^~wVl^#h(mt_yHF6>y!rQeeJWC5eZo+zz@KSb|reDVCo)*U=`2M>K_W?&Sn z{gr&;rjXv>Pc?t8``d9n;^@`Bj~SS~U0%m8b)Wt$U<+ee zr_n~{h&MC7KYZadWASUI_cu!Iju;A5m8wpCY<%w8obt{Y8n&Dlr625H|4%z__cQew z%XcSmIdAYh`r%8+=@);VuXjFe5;2qceu%)G0->U?ONZci5@->Cz`fmUrrYzuob4T6Do_-R%$7*YD*tzgwc5xASS*oubocf1HkA*Q~+o z-F;`y+J_Pj?6DiP8l;RGILdAv>+PB?aN_KdayqvU17Kd6;y%{GYJgnk(~O z7AC3*ItsAx_6YsIA2oZA$)q1Y&+B>b^LLeCS)lsq=Z5J?ehuF9UN(Q6uG)3tj)UR_ zJDp3qEle8OAHVD8HM?G)-!=LD+rxtOH8P*?tXsj@$|$+u4bvC4f@|xi9hmrT0&AH) z>n(xp#wi`S_xB3c)trgDP$~Y|Z>QvLxo@=#HVdC!H6tSX;{E&m2M;>x#O;xY&fjZV z_n}!n;pwTVJD$zTF1R~?{ZU@?I|59e$qQW%h9(yCy`Ih>716rkf9td(efvM|K6h;U zvi}0{J9f2{*ZeZB`1+{-!Q1~OT-z)kMtEFF-y~YF<=Ug4&*vX6K5yIpd|ox*F$tS5 z7n~Cr*Ja%GY`VefJg+^w?+%9)*WKAUY|&yOpI8?Zi+#J9$>#CEzWyr@S5|ROpU?vd zneqqA44$pmF!}P$RDtyxgV&5(F?A9z_*iFg&D-}K1c8! zC!?RmN0*xa?Dj|Y_?r8=h5oMPxh5F%X$yN;N9|UH@&m0EKQH|iDh+UP)Kmy)aE)1_ zaVtG6!L;C(;dLkL+YkMZzh#`>@c5kbdc_}C>KRu}`YL)-Bh&iW0j4b<0!_bVihf-y z*vYm0=B%R9MKKI~|Ekur`!gW_bQgtosF=nl62WpRN-nbDJ^XsBy!SdV&{@Tau z1*WzON9VM?J7T=AJJ#Qd`~S8=xxL@(cxPQT3Ra#k$dqe-(2@OJ^Z(Bm?s&PS6AAs?>Y_p=P(=)D@kRmrff zNbrKw5^k$o|M%~BaQs8&$H&Fro#sgeRfvmauur{S$ESQCef|5R_V4Q0?Cn(Id-=PU zFW_Kh=VB8$G?AgNhqvdaN zENjiz=kA9J8@-OY@7&+PH{W&2w!cbZ7IN=wK1D?E z95`@IV)bRkT*!3LTFaw-E|WG~d-Uh?dH;W9$0XBLs>=5sHtcOql95P0UGnfTD23M6 z)>{1g@i^O|SUZM`0W>t=@n}Ia-=RA@iwh6)nkW4K`~7%i`rNAwm)wn{{eLZ;B2~IG zyC=XPXD-_Oda=0jjG_DI&GY~2oVWSxBUk-K ze6r1|V6pv2x;`Ej2#uOHe@CC+zFE6}p3G*eIJ*CQe^Jk;J(*7#;;X*|PHVcC6}QAh zOlziPvD*8c&*kj?|M^_=@8|QMcZ$y!zPz+FW><;k{Mv7kda=8vJfBnS_oR(K_J_CD zv}Z@a*`ZknJ}lEeCjsXx|? zA3oe)yM(uB`c%;-Y-FV@f(wF zG+F3Noc`qd-|;}|@w)qqI6d?~ykwPYJ}|*sFLxd{=ZE`x_0x2I^Ykn=oHljga|_+P z$5UD*)~!9gzZA9>VEfwskUMD_T&cV^la{)#da1A|sI{A?w?2B35<|wXsSWeWxf!R& zO4oEW*YS5xt(%nM|NgUzu6Ox7j}jRlG0*e$llSj^#BZ{!U*+ea@85lIRqlQJWw)it zi;Kphbw!)kt>B1xz0>=yT;an{Uk`fl&1$HV*nD<-X1mk_|2Un^Ilechbv$|Nzb54- ze{p8{pJ#`ca8}$=YcR@uw~xD_v|LuF5GA+ zdvHr-&5z9e)2ALt?_}(LD%9&=m%+yIbi;<9?Kk#kX+GbPmuv0NP+%3w=W}D#Np;@@ z35oeKyA=17=Q)cxFFd_4Ns}l3n@!%cC(;$1k1oh>`qF&$%*&V{o=vYGct`5+e(b&f zM|)w*G3A%Go=+Ul{9|b@YHj`}U>;)0G)qn4?ScH)P772ghk~2Ttq%SH(o3rTN*#W3 zhwu6$vunpaKN-*e>2tev!sGL~n@+0LJZNOMFfcf9+0QyxXGYPZ-wfM-?Yw&bnn=X- z)2X1wGf2UYsq1T6?SG#1uXwxl`lreB|ER=QJZxPSY9aX4?5cJ!*Un{oWhcudu$%5& zt8D0a`2OO0ZC0z7)5SGCtlqtr`kGqG_)KL^c5c0gY~z%Y|DIQ!4A=bIw^<=3D(ukial>D<)-V$pNs$dE8OP)pU;)|Yrjuak+1pS`0soDfAjS} z&gP#m@SD?@v8&Kg#PPJ(vVv8owl#TMbX{2Z$t33Jc~Cpm^yp0~t)T0wH&^eF-{|DK z|IU|~kX0XgCV%N&7wqMF^^0PtvdHV8rX?CT3Vx^E+f%tFL~D+$O7-?yQwIe*WI&Hi_$JLLKNyg9YOB(8Pe z`^jbsyp~^%$*)ql$hiOC;_Mx(w)da6t*|Yh5jM4WQE`jbmKXVNT0$Q+H!$+rCVP0Z z+197T9i2b__~~`~r^oG_UjFZ2^_7W#3S0tLXT?9A`TOq#6TAC+-f|q8I3?!(1V&G` z^@jXsueRy%+f6)^cw*AitMy$eZ%f#|NPhXNDHEOg+hq49?cGKUHh~N~RQoEqWmY_1 za(zwpMW@Tl{oU*9?Pb(?rt&s1M7=)ZI{%z-uH@73%?5?yF4ml_DAS^ z`P9V%cFUN4xqa^WStB<)XOrjY4XjI@wst7YtN+*fF>2B^dEeH%{bd~|Z*U~bJ_ns_ z^XKR1kD%jvx8E(hz2e&Hx}Qt*{w%&J?!NJfWa^bDtya~qjBJAKo|odoUH`B1y1L~I z_vgm!_sTv(>wuJ#YNqJvBv? zbK$<;Z9NMAs=lzB-F)f$uT!jgO>L%~o21H0&0B^imRu2cVL5b5A*EIA=8eLVnpbnp z586v#9Z}Hb(o7PtLelYjzO`mC1 zGbhkZ`NWLG6GuwtX)@@F+%agJe@|kmiW}#tW#^)N)=s~1EXJ~J`(ZP&u9;6DD})|I zur(NinNhD-?qoNaYnk*a6ei!bUHLb_U#YsF2h7;LV+`y?E8Ho2v6Nw2;s_vTqI zD*LZ*F5V+P@$qlFN1oS0;wOEZ*<5;G@?EUy?;34!$G^6zEv|VFv>l`0u}eO^H^D64 z>iB{yrwo#dn7-G!z2+}uv74gCbNt)SoC^0x8c$9|q~_FWyiaL7@saCt-?jZ=B5NEK zwI*KcIZ$SQe&SCx&}t@)#XZMl-83V=_sw>3ocPWDHqU~MS5Ml+#NPdQNhvy$#VG2m z!Qvh@uc{QTY^d8o0hujonP<2E-NXA26Ed5bcZkKD`Vdfj>6u)$akQ1?>v@ff8UL1= zuMum>Y)f-1x0ihTTY~MM`O(NH8_wUj#6KlUKGV>8S-81rX5ubS@4McaAG}Vl2+QBH z`mEWp9PahU&WG%m)9umBd9-)6)scHyEPuk@-|Ct5zNF8|%H)4f&qUD{iT_Dbxl%P9 z-=2J1ar{|@t@GlEc#HzSJsYd@4g`=DNO*EQRcE zUrgs(5R_>6<>VFbXj=x(?8A2zyi{A=H{ZQ@Zr8EZ())d82idLu6fi4v`NV6#YLZt* zW=aHK*!NE2Q~Vl!p|ERzJd|$n$K-I!_k5~bWc}&&*8gpu968({tgnWvA55OP;$#NT zAN{pI_Im#P(8gc*DyJ!jf6ZgAq`QH(hfdC5Rb3N%%KkRv>&YsvLaY-He_q(*)Obc? zu_>F^B&(^C+ZblQ_~C1Iv+1nwv`Z!WDZi7Sh;Gwl(D6)XZjht zHefky{d7s}zPx;P0pUISE&jZFu97Km^GCMPzMeB>r8TqPO);6%SYR~IUb=q9$M(!7 zQ_Yi+D>bG~JKVV?yIgYXl36*Qi7; zKglqw*WUE_`phWF?P&&-Fy)~i`%h5uz&oL~Foh0DkLE{oRR`Z)KbQG*A!*bJTD z-m5>Rsw}?B!u+t1)j=jM+(*ZAvd7II!8L!T1+Q9NVtuUhy4K#q+6=<0|7;UFaPvp@ z;U7(6R*~8>&sN>bXKhep|DXQ2zx2U*ad0_Wf8}p8{_ErRw%~3ylDtme(pchZ@J~9-Z6!|+TTt(xo}jI( z_N!*k>D|BVaj~z$B@K~noVSy2{>VT1qj1W+EfVuJE6%Kpd8V+qboQf?^CeHNwyaou z>0aI1-+T64-T3(RpVRTqvgy7p#m&p7hqiuL`(VFkO!id6c%-rdT<*VSPGzuw7C6v_ zg&K=_7}CLoG7@odm(wGWWp(loRAkl9Jzlx~yzt-0YhSjXUJ_`!>`0AK)cuuZ`+a=; z-v0>HPh6>*uY7*}NfqN$89}UZmy7I;3ZoZgmQ`CnHngt4 zZuwJp=8x>@bGBw~dO2MyQmD>N@T40wh8lT?j^Ah4u z&M;W4xxp~S>)o{;qYtwKzg;q3b~$!XqBJ|69kw#*$**mDC##TeSDD4;pD=^ z!o|kP+9|*qogm$+;?gGOd#miW-|pRa@4kC?d3*7{&;P66Zw`*laTRS#TxeVZfc=acD%`&zP%@2ad%(fzE{ZM1lw&=Cf<^D8CdC&izV z-)O_6GbgP{queglZ?5V!#py*eYXW@ks7&aavQX)#>YSLXDQ32+8udr+a2PnQxoJ7| zQ2eup9GA3&kF1#1Y`Blb@W7>|#wP4nvQEi6GWiG?tL=9<8=8LXi;(a+o9RzyN=)e5 zeqxhczk*xztrR2G2fw_3E*8;gXDC+VOj4_IPF=d=X}q%GO!dksl3%AP95X6-v_+`+ z@6tblrxgzz;@ZhFG5Wbzh~u1K{#UPG%`}*K%7|l$b7_rcP>b~HC`Wmhxo9`kbeeJDk%)H2@Av+T7r$l)Pgsn)OFgSR%BSeNEcB#7;Qd zr1gx1XTh>g?OF{xIma*QAI`o0HtB_s_GJ4-vl#e|U$QuUdfjIfpuAJ8{0CDUXVgxC z2`_{`Pb$6k78DjoSu6@4MV}Q+uHjV5{~57;dO_YQ>1WYjyROcWXm;?L{v{8@CS^<&-~S=V=*}jYQ#%zp?7|;KYH|A4Yu2~i zX0e$4$9VhXi#t?(1-i{EEoX)=-y5!_)~Ww+8RNspLPrGH`b(=jubz~@D9^ZVj)$L> zqY1b5N&Sbne7KLM*G~3J^41CeHrFsvW&afWq(qh(hI?5i#y{_B>o?rjQXE|Sw1)d> zY8KPWq#pf~`VXJ1QakspXTcxA&8i1jHhQUtYOlRplOwzK(<8AcA;ImLYd4oxYyWcR z?<=_U;3d!1`BpAJm8Us3tUS*$v%UGAj%e}QN9rnv&J{g~{OW&uw(uz_!{tk7x=ddn z?iRCXzuo)o!dnXTqHMBM#Bcnm_V9U;y0-VUut@c!_@+29!#f79 z=exolPx8KyqWNy!=29u^LZ9`Qngmi5V(K~l^woFFVJL3sn7VW6Ea>Tk-4t&#V=M zZR_XqhHTq^=G)SmyX#}>)j!xWIJg(pYt&EKUsQeeTf4%x+^6{_Of^ysnco)N{I}~? zc;?C$yv}=eN^L4XuyuBY)>IZA$&~{Q4z3k+<)De2XvoFMFRc z^|$i&_(|bur+gDuMmAdhpR&L7#QmPz?x35FTdQz8zUuc) zZ~h=>r(^c@BIoR%<}dxUz2)1|@SnyC98FNvA=NV%&Gfs_Np(sBe?k0 z`50cg*WZHvaXiXmig_*_pwVgQvv9{bmlYf;`&wSxU3rrh#`V=hwO;DX<@hA8X7zI~ zEY=!5?VoXe)|-E4e(rRg=HxNqPZ0ACv0#~NW~(2iefOyA+?aAca-FaEdOcZ4+vIrF(ezHa zl?&qRr?WV2$kTeb>rbG@blbn5J3r=5iWf?FR1`a5VQZ-nucDYkP51iGF6U(DclLV= zJl4%MnkiK9H+JzKPA=E83q@FkZXev)9+U9HqoMQPN&VN~g!;~wy!B0YPxj#4{=C^` z`i!7&k=v&i#QkdtoAjhy=3SuJ9rO7mkCar+ju4xV~wsU_S~Ew zW|cISR(H-6NSb$I=WFMWA32hCEbTSi2X$&#A^*&X4;~Gkb)I#c>esWcy;b!n>0CO2 z{~D;qVL6%4ZSQ;h<5Q1@@Dzr{_t)<%@lx{nVtaSZZR>KTle_k^Tr3Jrz8eP$(UAJB z8}~>3Ti7Vq%~G*3FZ0{_M?17VR_}=_UbE)5_1d2SS(=Vtw*E6ZHhsY#!R!n1k{^_B zM%UResztqYdcA9}%C44VspeUX2XWqT%yL=`w=%4(VayRbK&Xw!t=ZB`= zy|?oEt!+}T1E6)!F|gt_F7aC(`K}&Kju(1hX}K&)Tdrzp#7hq^9fz0GCiIz1m^4Rg z)8CJ`uIF$Y^;*W?{SkikZS2b*!Y=y%p8Kepmd|o2Gf_X^AH40_%lZCy?=9Oj^^)%` z_j;E4J0GV^Vhq@J-%VqQV}ew&L)(G_mmbCjef;Z4thj#k{QZl8)4IM+|Lp&B_NniwzvmVO^l8=KQq#;- z3t8)%dTLYPg+Oz$^S8er&##(gWV1Ohe%+tn3epU++}x{=EO!VB*fLS1;qCWpb)q}3 z3ay-W%vVCTeeT+tf6~YI`>c6^jp;IX24Gxs;Lr=0z~Uh?nk+dp12n0YO;W={WYoE=|vmu1rC|9xBk z75z)stG|@~+xdk2?fL${i{6G$Ir1gTt0}eZSGt1$iz5_iGjJNf*esw19$dz|F()rS zqBAK$g*j$cq;HI5-88R=rHlgSzQ0-HImgOq{((g*r|Ku|+8Y(u+1aYaDgJi8q!xFz z>zbIyzgNni7T#2&wB*lyo#V$n+iNX<&3-ED^(VypEJ@NO-e{gSkeHYaQ{OgGHeIoO9`=&g7N2WWAPfx$A zkkq4Z`1MRt{msCr)mMU=c0|-aTcu*dxa^Oh@%(>3kNgO7^K59p%qr;+;aSotmmcNO zGWYw!9~CTycP^<-)?~aMe@cF7!cM=v(RWjN^f@<3R~?dwKeTbCn2<0RW2fFmg~;-< zR^^{d{|FvAai`gEpUQ#9*0YV4pA$Mg{WPdurSNS2+$Y;2Z<>3*n<4DDV z(Gzk=rJ*RAdOx zm~2vdu6Svy+DFwp<_cf)AN~+Uhw6I?Q&ZysB+-3gmaX`A=6LZ zGw1M{i@86a%&ld(^x$GnWsQ24lkZ=aK6LVBve~AvOZL8_@!oZDJ^EVG@c?nz`xTxp%$_TS0C7rYGetpJwmz z-=%j?BuVH&_gvqZ!Rei)I%nqOFTZ|MPwMoHxTcJS$}#nz8nmYNZQS;7X*+*LHO6Ci zUVkgPxU^DDZL7?woyr~eVr^z7e_#3Xb9}r>*&bf@U#SP6$`F@2q;|imhLKnD-8<&bqc)@pJuUToeapx+%RkytlsxrQF4e+Sryq-4i(Z;Cu z9+&A6i{4l#U-GEa%x5|IzT=5`<=#FPVU+{T97?ah3BA+1GN*p|^_y0`r4|2nEEDou zSM(_7e23~O>E%_u#&2`X*RQ|rt*FMhuJljI6j_Izr#?=}mNWR(mh#-gt*qu|UGDE@ zVZpxt8E?H0$ES8Z&wruZsc+cDbndGCoU7zRYouD-%cW)3u{ZZQzdg;c_t6jk+y6ALKMHyKygD$aevY6< zeVy#fpEvh0zxB3$IsIaad;sh7`lp}F-R{2d`YHYPr}(wH z_T;UflGD(?ll9!UR4t|&rTv$h6~3mkxXosm`a{HrOMi2%`0e+$SDGK&$Nb(pxm0O? zvi<&PR`ZQ^{hfHH{^mce+w%?11*w%aSo}Ahw4d?KM(I!67kpc)rp43#Pv&d?=x(f?x%E%Bw9_>1xk9i0H{CKv z^a==c63pi+%T4BYIrz*f=X)AVy;7cg^Nq@%kH6>@b;Vwb7hQMU#r}hJmaCunGSRKOuB;Df zx;pWGh{aU4!e3W6mns>qtZ_|KDq%5f_;=;htQ`wkR*C+;6fz<8wERZCPu7!5rx|&L z++5F=xKj0i7Bk1|P=2*3HH+?^(LQ=OQu>O;WTTx0n%}Q+xbxnTC=EXUYmw;d^+l_$ zsn@e~zCCa^H`t)9$s>mIztSh|$ytV~^RtaNez_^aCAl$gYKCf4^3{)hhv!xt0(U5m ztL;DedWz>F|6MQ4t?D1WnrwKigS#~D!cN;q%l@vM>m=yj+NB`ldn`N)wiaN5llWEV zo&SRVb<8~fMrZe05syWyKSvfzU(w&S(u!Mkq0pM6Hrh)M@p>=164dnK{)4k`_ze9U zH0xQuma1&GeX6%J{za<5-xK}ub$1nJdw3YcF5qviUVCKw53A`fUs@W-PgfAz^=je` zp)b2UO4?t|+cMcY_h=f&BPp{viU-b$O?WbWM%}XP-sGF|nszLmx{jM1KY3p`t@N{W z)}LqhmYeQrRhhA)?R(Zl25WtvDc?%h9#fsZ;I>H0(is-c3bAWW`+V{)sC-=IU9ih? z;kz}5mu`F(Jaf)@{9SpoyYQ{WRP8yS z%FS!~`=IvI3xt`2FRwazO>N@Iy-PhqYMz_4D121Cv&pf>rfJ6ZM&*m3Hs&tp()X8k z?e&_e_N(~AuCz5$6B&YM?KF%3p?2)YB}L_nsxs3{(|v_b>ObvQ_$fQ_kJ|cRwa#;V zb4qIdi>`al624%i(CfGrPmL-U-tci#i0yf)`cqZriGp#&s|*iu&=8wxlvMien=#v` zt4p&)U4Of_^oL#nQ>~Wn#ph=xb%bQ3s_uSc)nw{<=+>2_e7B2Pbc)`}9luYYuHC-Kym@G6RV)?93CUVFEF=L_RY z!Pd9(;;t^;DDhvLbJ5m+o^|f*S8qmplyoXS>7TJaUt#mxH2uu*8Je_x;Wr>uFA?Zq=|{V&~J;c?LM z^0p`2zuhu%?I@Vkd?umt@h|V6%4rsxKfnDJT3W4nVaoq$^X@bFE!>}_s#cXy5~ayx zbiX}IvP*kK@4=~Nj~9ymW`AD3V5tCuqSA(IN+GR=Y;G*8qHgo{axTA^wR)0_My5}| z=k}%Bpx;} zmz|~fnu$T}AKz_!bT7hve7@ zxb*ie@JVal@lR+<)6ZW5M*Vr$PRtAn=oGAdyDzzBy~2ShX?i=ZHbqu%E#ob%=5C4S zw(*&D%vt)!#!kOrR~EA^OP83QX=!)ZX1ReNs-g z;;O6N%RKrHtbTQJf#=Z;UYpM@X;u1VQt@a~?!uDEcZ5{-CztJBm8Wk$t&{OYUiNH@ z1%G~um$XORezj(8rNXo+8=a%GTBhx>x7QOgJhhEYVc)5otA`Fe$%{(weDP9j^C7mx zW#8gXZqAsq<NMGF+SX&W7Dp^>pJ`VGvm}h<|=uwzEb@%Pff+VjZ@KX?xd`f?9QtV zuDKQNkn<{!aDCz;r2iyGT%|PcuFvXCM>IM6*vz@K?fjoj{p-ig@KMcCB)Ddtkj`D6 zfV0vOD`&WHS@O#r@Qc0FzwmZx-*Oo0pm z#Kyl)s>z>X6>%`KM7k7G3xw7-!r-)gf+|Ly6dM^~Y-4*TsL50}Gg!9XE`MdYQ4R`qCa!u+_yiT|G=YD zrDrFD&bq&S?JJG8FkkYhOATW0__V#?XY%jsTkVy8?sfTRb^Ob!Y8IVr=HDN+Zq(Vo zonF556Wf+;1)*0(f6M=V<>@(Ds8(_ggSuaN6>HIx+bXNG_N%ysT)6UYL-^-3!+)Zt zrxy8yatXVXW^Z+v=d!3IEIqWs=z5>O_4*(wwbjhV_xBx(UoY-6CEvXKM&-$Q8@%h} z&T$LOKeM{yfQ0@jEnChdhyEt~4!7QVY3X0XGMgojKWl?VAYO?v+v*JY~s_%;2iSj)^S)4>hS zq>BbJOi5R{3U;&dTuu18C6eWsghaB}=2RibumktU-+zv8U&Hd~){-Z63ytIWb9>@f z$ouR1|GroC$3L=T>y{N$d~D`_eLQ)BZS2lNQ{#HBO{-U5H`%{%&zmLBzRq0mNAUBk zr1Y=b1(u)4`gVl%P^|F5s|x-zvkMpT*~c3$+phkBYm4)@{uc`#h$gS>jbAGJe39?( zz|+qi|2?{;A!PbEcIzbQ~ZIoYyoezDh2#3!P!+z*WA9gu3Wx0wAtA;;2+1N`-iH#TRAjVxbW}U-rKD1 zXW3}A>&;{a|9uvhZ^fPtEPBWnB@>?er|+1=L%p}VOFo^xy2YH`YUOg?^UZ>dEs9R7 z1Ke^;A1d&5DW~^;a@R>nOMkj~&Q6}FqX`_3igxZ^llR{0gg&Ri-IY)K%6l z`Tuk4^;e6N&b_S)pZrCsq~_D=k5ide3ZJ?(qd4;3g81^m z8~$JP5tqu|y~EU`A$X?Hi5sj{Fch{A$ORIij(Wj%B*XCOw({$!)@)K99P| z*PjaAZ;aT!##?;vjsss~3VZZ9H_VPRDtv0ueQneIm{*H#{S3_A;GS0%9TTknZQIv7 zyDdZIEOLLZSDn*sxbMi5&8Jqzo%XT5?W-HDq4K?6Bx;d0=e3>Ijjxuhn9T4!v(G!( zBlE$luZvU~7Cx~si?wlCu&A}QZwJ}T3&BwxNmJ_r^RW;4#l_O%>kxY--bT#c( z_%3+Gw)exA=`1%QKY910X}?nQT0hgf@UbMPRL{y^`g+>-Yd<~uy8J2+_ga;c?>{^- zuZ+E=bIrsTRHrrTuhzZ8dF;z12LJ5_(~neSs8^~>b>!SW{Mq~1Z=IKW7MIR=d2Qlb ztB)avKB{ZfA361PtKPBg*H$iMSU>B}wvvp{&h;dry9;-z zzfJLVpH$dXSFl#&BgpS7w?<0+TV~RBecjwe4N=^pjhd2fxrxz7zCMpx^k~Ay?QMdM z62gBw4*1Pcjfyd1II>7Q;+(!U4;cl>$Mq;eqrQbl5x{knJ8 z1s%@ngoGsu%CgN*ZOpsa7Gpa9wbFiZb*{;W-j_(->fNrjMoYl$Ncks;l51~O-R53R z$}N-Xd%F9l-um*ZrPZ11J3=iQwN>}8RyeRpW#*j8(_Xhej`5KTSkdh^rDxfcrTedK zE}#C+!7KDtj_?2dR*ue>S&cG3^1PlM>UenNkb=PCI->Qg}puhps@i$Y^&s~XR$I+nWl{+1_OE>4+q z!o|(zbL`Rc>0R5xcW%3M;s3R+T^Fh!H}!qC`yP|3vg@?l@?CpbI&;t8O}!g;h>^X& zwA!=5v#v8}f9%4KosTtt_Fs|cT|FuKo=IW0t?<)oEm%jBh>zCB}aPQ-V2_Rc4 zQ}4!2iVr`L|H*1C-^H7all$K1N9~im?9F6z_t2e?hHmap5iK85;?HeA6E!iRJ*lc) zVgJp|j-AB`*@b%^MP#0@_)sga)UcH++qvbM(^@4ST?Mn$1(mz?TI;rVb)Dj=k6EOp zwrk$UgdX(ui!ToJT~`J`dZUtI}SIU*|oPtc=M^3v9HdY+jRR>a{Qvz z%-5eian&zm@~oR{Ed1~B?a1BJF8%Bc@@lQO|cat~A94E%v{U<|1bIhbW3^!a;;$Uh?lz6MTV%{l-)GFmzw&#~t+myz~PQ2*7 zy594Cx=T=zyvljyrn70x$vlTH9E##zZKirU$YWvfuN-YlRlWKc*?3Ed%e(b9T#|n% z@$>9n|LkeDOCJc`oo>GJW52{>Z>BdF4#hlLD4zH9+NqX+q+`lGLHRk)BDQZ&YTvoT zI@d)(&C5^qW9Eugk1A}Q2}O7|2EL9InY`t7`?r)iTaOk$@31@fTRT-t`{nQcz&TYF4Lcs+p$;(--<}<`10!gx_yg6OO7mk|805QKhIm&{p9ED_cM#nwA;NXM^sDb z=z*@rk2V}Cwhu$Ee%TSxV_7?O-uo=?>3MyXN~>~9^pa;UonkuQPIUkARZ2E;iXT09 zKChnOQ?z!nf%4f2vg%^``>WpW5-Hnjt@=Fi_R(&3@%)r6VeIR+oPKEU!?csj|K8Q) znw<~Mn?`BBG^l*Jiz#on^^=EsJ+e&i?d8)*XK~{{8s${iAQIWiD)-SO4&> z`HO6;|F5R~-8@r{Cv^LFlW##u|BrvQzwz(H+w9FJw!A#J^>@qRTlKjcC%XK$mSpU+ z{rf{?Q$U;RtkWB&aAv(-YJbxDR_BMUx%ID}&kz0`Wte&MZ^s#)5bXw@^-QgI8)n$V z{P;7o=d`Eig5LMeJ&qDA9Jw6^S7uC}lYhX2zvjEpV{P423cQ#0O%r#pDz5LkzVz#r z!wMXaavrfoZ*F7?49k>0%I7Vuyux;UPI%vc*P`WI+CsT}E7HtDmV9P1F#9>z=iiMw z`%mRNpUyqQ7+>@IR@nFDHFYcBI39DAbg+7w!?WxLQ^IfME$iP_Pn=r6^H=rpP5-CI z7BBm|Hm|;bY0iXoPqZsncK*Zsdd^LMcQ{>N{#Weu+cPg)%Fd+j#sV~YF3 zXBP`rC>b1UUUk%ven|T-d7L-8+n~7o z6c;Tsdb&PXu&KcuR%U_qWUhdSs znV;AF(8T(djdEo_-G=cVRr zr#`MezGhGHt9Z}Z)5TW#c&lVY%?_V<^4T24u&5VohRn?Bfh#r7OSB|P9OXP-I)m{* zhvqabJKyzj8uK4T+`SSrN#@q$qqp-D@80|A6Q29BCGy33uf@V10XECYk>AoB;k$mQopI7ST1Qo9?pTucx z`Bt=(V}DfZD%;MFKXT^p5DF9JU|L~laO}YMzZK5P|8{SE9=vL;YJOGmGG42*yY`-L zI&<~1vXpw*)+BX5naO*zc|>wAYW+Q*-KzC%|B`im)6YGu>~s}M$kaU0ve;^6sLBtK zr_ytKjs)=uYauIX}MVD zqpRJ&?;%Sj%-Gx?8Pxr&!X`;LzMHQ};HJc>T^0%A%2px`5v>uf1>YH%8=qdCty=h? zd#?MThn-i~^qpG65_J2D=yFb_Sx(jK3lm~%6Hfj4!?__wv3bsaPF?TQKQC+w-*WTx z^qW0rSK0(VN|$i?S}nXunuT%AtslGIynH$1OID-Gjug3Og$9oh_Xw8)9;Ovr4Kt_h z@taede{lC~A48S$rnO!Z=T7~rb~*Orm-9Nu!lU-Jt1GLKUe1YgPN-k@miO|G3uu*SocQC4xnI+i6lOpB<4eN3uTH+h+u)=2 zS%E{r?Ljr$2Og*Fh1Z^~|2^I78OOZ1Z1>1V0f&P5%9Geu^lDx&PCJ;XdhzY%YUd+A zg4{a$_~JrOaXoygZz#t2Zr8!p1iumv|CJi(WHNiszqIwv>1NGK3Y-%PE?>J?8FuQu4(q0? zJlyJ2pOja8n!U$wd+&=qA5O5&Ul~3B>O%G zai5oRKXq;LgU*Nhiaeh^#lq~E^;YTlX1mzE56_*o(kv*l$w>@VaC;{Yzk>GtD1^Qp)8xrDR7yTlqOTkp{I?G#5rrfmGIU4c3$S)X3k)4n{t z_n<(;)(s2_Ov>xd6{PY=D)E{+G1ckbPL^zfZt`D4Gk6K)n~SC!>PDjqxV-JGG} zfrJ9jp%<@Kxh&uJa$jG-ig3ovik(j`HFwU?TeDSwVcv7s(uJG9t~V83!rdCbOpW)i37!n&$8^k zs(iDOPYqugx^UsLnJM}!11#qGo>qU`B_x(P<%GsQrrLQTQCU`A2jdLbSI)n;<3?$v z(2f@_KPqeveYW|ruit>9YC^H()p;(ZO^3IHdS5JX|JPx8{*8{Tqavpo+mzigenIm- z2`%PcXd;lX>)+!UP25xNxBi@P^7o>rd%J|gGlPzu;IK(%@Cdnn-EHRl^Xn{%7sj8s zWVI(@-gHL616fh#H;mbieNJ%Z&OUr*QT*nEN|#?7O|Vp5WM`pWf5c|4*7P0QOMdEI zd%M(D+q>$vijm*ZA4QJQQ+LE^GTOP9JhhrB_wm>>pY{Fnmkf7txm*us{a`D9OoAnm zA=}wu@#+hQrq=A7;CL_U5%018etJ<7jYlReT@{eMn47hANrc7!Hm1*W@*YIoJ5u^n z*`q{y*YRC@TbTdl+&;~0^H?dw^Y&>At}$*jGhzUB#s40?ppIy;3jEOTsDa;-Zp@A&EV zJm{?5CcW4%kC?(k)N3rXj_f*-e_iK7%-OreR=cmim7U~y`iq(Gxs@9@9{jeu62+1j zG3#vP62z@baW#pMOoS_|?gLhZv4YLuB>V2&)`wqb zzqua!Q#oet%gB;o%?U>YR3c)PwyErAsk*u1iRg=k8F}814Yu~RWhK|&n=^mju1&rL zW=p!>mT|Lgxc^>JsW3LoYH9aH`R9N9S5Eg`&5_e^HjVj5)8Bs#jZQ}v#2Ca1h3OWy zw0v@pc3R#QGkeD7zpr#ss`fp4IcHvf#FQO;I*cj@9v4|We~|lUg?7eA<_^VsG%{Io418 z{C0$|vs-i9JIOlj`;x`0gpLH1t#j?sPp<0p+*#oN$(`xVr6qkYQdeq~?Uwy^P;q+j zsgoar4^*(l#oRaNVQTUG_FU(%MW7(pJtnc#!l;!?T|yVTL>x3ckhi@#o#)$cTZTr7 zC?U+Us58B_$F;Da(I^XRO0gKr`2_()mzU> z&-|QZ`|tTyzBy{y!8aKX&zUzpV#*Ico5v~#YG0;IFZtx+t?zJY^5zRsD||T$u4O)7 zaDMWSZ=b^0Wm3=1Ziq-b%Hbk<{4nFZ=LhfS2(T%J=mrF>I^AnIN$9+XRmIaO_DwF^ zw^Uzpx@NRwTj(Br)~PjdH+5iZ0d`#KPwmlv$kIE@72Ex;m|DqrCnRk_2Jdr^WOQ=ug=KLShUYUvMf93??#dEB{79pcYe#B#B}E4PvhF~ z?^~IZ7Ui60IuOMj>X7PIx-@LB(PAaBxrgl=-#~h`fh|?AA|Dzgj6opmv{E*z4^Iy+180qHfhC9Jv8sv)SSB2 zZcogQt2{a%f8xpN+t)ki*DJo=-ccwW`per})bp!qlbrN9H&%7SgA5D86qPvo7|s5v zt&^_lFy~lwo_Ff?WtacVZ~Z&3YHHEfzGm~ie>`92e*XByUutRVTYmSP-_z`;<|#$~ z{geEwC#dM2jhbWP@42_Hx9u1Gv(Wgv$L36N^>6m4-mDL^ncLp%_%IeX0B*<&ZdezjN2LucFX zSiM@fu=Kap$Ito;{)%n?x71+`+tmHWpR^ZSIi#l9O-l6qzv`puf0dQdlP>tOz4mYa zslTDXFmP*b#NLcc%ck3(?9o@dWWVkHuD^^Y^W{HXUz)c*W7QpD;R&mvEpqPP{HD#P zS5!VN>R!l{m4EwJaYs1)Hb4GttM}_y>;79?F#37KziQ~I5vue3oxa>qJVjRS)z9ek zj*wQF+)uAvxE;1K3*0UB`;*;z%b@&0wbDW6t@f|}T`s!4e)kgv)wYZ~>FcZOB(qff zq^4cD;rq==RP*EAoNXLU49j2hKRWYgd7!i*W0-W@imvQw`#-DBcpJamU+?DrV@0c# zGEZN6#n)r~>-;zMoc)RGH-1?*;o9Wx+}g+q>fc4ERxtVaXg3@?5Y=tKcI>iR2A;^DGr0vscW{X8v-z zJ*645qV(hwV&}Cuq}&od>UHV*#)79ND`lffG=$&JnD=JYp$fKsdHZAC&(Hh+RsCP; zTz}-_u9Z=1&wt*0VEJjuV-gaAERHj#xeJNUU#~TD<~o;u9de~N_u5uWeSJMS>FDe9 znYvTh{MYKtoND!_X3gc@H6Kei-!BB;#qIIfyl}Pm=Sg3}PrvE^cFFrw@6L56jn3zV zpOj^tC~;##=d|5+dGEPDeJR)cwsRk!HK)Pd9}6pY$NcWNXt{lr+fy$WhU~@J$2mV< z={#mz&TF;m?e5!e6&Sw#b}kXUWxz8xYE#&!YCCqW2mk)b2{d;8*PSJ%QndWM(B0r| z+Z+_F)NU`9cm4GGOftvQi8~G~oXqz=H<=mS16Xs~Zv7jDQ}h4sxh5&ne(L|1I@ide zdl|bL?%%uf;NLqv`P(*SY#EwXUnhQk_ggMULTQVc>OP+uSGGNQT~qWYtq4mry~Hob zyrOr#wExDLp=pME~(?Vxhaeq%z)YD>ozH9D6fr!-`%o+@tdWCOyi^#0jeCj1yUS578<>M+v zL6**U2kuV(w&?bmG>%7HW-$tTtd6rUl$($~fnhSk8Apb0$%vzho3ncw(`{C`g6)zC-*h;{;0jz?%sap zW89vA3YKqWRzxHi(+wPQ1H5_#gY;O!)2dYPHqc zy`QFXt>tK9*!`9-EqlZL_lpbIl`mG8PT|bCe%C2er7h&rN~zh^-p9|MY<(-hZL+&6 z&g;{i1qV0Ih}-n$>Fs#013jDu5|6Ey85@}X^sN(bOkcDke#N}>rGC4--@ZNjb9PCf z+QqlE>lWK8Gbh9rx@5Ma$Gp2Uu#)ZR*+eEAL&XT0{_?IrS?3zNgo-$iaOB8*pZ!`&^sAMV%kxTE z?YS!dmj}MkXOPZU>71zX`FF&x5XJhaTVGpPxWm&Y-9HGKaxoO)TvxO^N;P=4*Tj_q zua)-4L_K$IcpkF7T&(Dshw8#$bHAqnd1cmj?%s7b^>qz+yY_NY`2z)G39EDI^S!3_ z286I45tcCAAhk>-!cC%H^W}q+dETCqDo-{=6)&B)b!p+Y+1IbXUAlMCp6L@jbp2;M z`_kkX7}w~3z;oUVhRu2FwNDjPS2zEylbq~dPj!g4JtLVDSq zj82y&K?ZuhUSYFWxSl^AeXQofMA^u_i+YdVT=qzFebRpW1IBVr(%-~g^zZ&xk^Hwr zO7+>UoqLbo?G|7Dy6I5w>rkQFa@WG{Nh=%^JES#Jc-}vu;394*r*@7HNA`Wo>UbB^ z@jx@d@a!+1iIW^-+q@@N=j47fU;1+6?jt|?wh5iC%$(pfzx|cx%Zig#!d$0s?olz_ z%Bscrd&=qF8?A=VW(j(N>bxD?^U{UxY36F3eE+oHFs#WuDe}$3Q!<+G;%e0{F6|LM zC-A`X`rFvHIllF!x+j0GTJ)jk;KzcF_|AwkJB2svaNldYw0-B_mr-{^bOjP61LN1_ z=0}Pzc$$+CBAO+-eY^QfU4hQdk5|`vL?1kH-^<`;)DzM7kyqETUhn9>b~niKNuWWX zqQ%6FH?Cj$_T-MG-*ZK|!mCYT z8Jr8_ICRAl_TN7&!7P3J&OFt4xsuaL!Z)G|ljL>Z@%)pGPk$c1J^Xf;^jsb#W&Y2r zZ(DDPRkN6TM3hBBoHdO*wQTMwxy@$DHgEXbg)?W}HrU_Lz)4Vf}eto>~S9Fg5BRSRWwV_{2Zp~cTy6B@?i=gG@w=%rZ z9VTjYT1s?w0p*BurHWM|7ftekMaXi=fnJCmeEKHIN3t#SL>rx+kSG47-7 zj9&haJ}%0xR$m1sCqy;;kyM7KWvsh_W z|8Mr=zg*d(=DTNWysHa3`&dx+Wd7d0E7sgT-8$>V;Wr^`Qr=yAt9nuOr|KNl19R0c zE|iFm-4L`hMLD$b_Fca3-@k7ND;6z$mUmjU&aQRY6VHVk7_KnPo-La<&+gdU$?7+3 zb~XNp3lTQu5o}Xjvvo_0t#6AU^W&LYuJE}eICnp;>py&#S#I9m0}p@7Cgj$z?EkPd zR8>{#_ydmf-v!zd_r9GxZ_1*zZp>I$S-bzVxVW;miEC#GrU> zhysUg!uMO=6>pX052fusc=#|gAAj|Vs1C!A%NmZUPg?es@xz&yHy*s(bL@J}!iE_Y zF`8v{@EqVvjlye zd2siNnOoyuF!8(!*%^L#`zOAD+br2mOnZzP*QxLL>RtYobHlC=HYx|Qiz}wE%wU=E zWP7~Cc?X7w>aMIgOERiu?yoZ2C00{h-2J;fSS{+z+LG23u~R$Vhne;k`kq)*zxn88 z^SHy0!{ghe4*uKF?(2WY?|ZK5_Kw$Uf*DNbKH;CitnFUYEv=PVQ#$L9=K`*ZV+p%& zAClnzE^l+ZyL^B5hr0QBUNCW95r`IK$)X7%*2>~LRn zdtxi!UE7t4DxoYt7QG9q@@P06zpB`D+3g!wPTM&f&hNCnR%X2S!YXx@1HG@O^k`4c zo~fZ6>1M$D^Q_PM2UA|0%qnt?NDJTOWYn3pd6};>H}ioU^Ba49vE2WDZMKCB-%HcW z3OthzZ}&Sl>-DpM^o!ajJ0j;y(7DF_xRRmaZdv#7e)-4I@xR&L?fWa&^xHOpW!`(` zEoQcwb5$AbJ`0K}HO>Aavcv71o6-TLz`TaLdF|~xLWD1x|D1bl(F&82rB5bZdiu$O zz3Aqqb-dOpSIzIac~{hbjB-ud9a6m}v}xIv_|1<(>o^(H?#79ypPI`U;KJFSmzP&i z|9?XF@42^+q^!4l&Lz(I;O?6br@rrPdpp_Pf`u_h!tI>xr$27x>$uHjJoMhQl-gtBp zx9{x(EH`vt@80)qv)}wHH@klDF8xwI4Yc#@^TzFWO)}TD+s=7V{3E%<@yV^wPgRR! zQ=3XvG~X?)ox7^mHu_xIZrOM5-uqkc;Pqa&`*Hqd;TVsSt&wu?KYUwm-?@9YHA_2l z&x|i!B}Z0oDRJ6T5}4P)Bv&=jr(?mqNmaeCm|}15+xBs-$@ljy&MN8?+aGj%e>d;( z)9v;>2gL8x{;uZecf4o8TT{9}@ZZwcSMdMrEgkH>T`XFPejYNb!C$&baB4c%Gsm%e+=X?gK5aev2i|9cNB z*%}@_dzrlFBM+<>@u8dG_^C(T2`)l7CJbfZ>oU{MX@lWjgn^Yt}aj(qrbD!C?^4*d%JO9?CJzpXdT=I2i?zH6X z^W$9vZV7xlcHDj6f8Cl71?>tPkA?g@I$DlB*_ym*`y)kFH#3HymmG?9W@q-*+FCPC zGd`ST+7fm2_xbq`mzu{pS6DncT7IwDuvO-=(UFxgoBzbm*|_sU_-Za@ha(J9^R!fZ zUov=ak5+gb^vQI)e(ceeckW!x6Y)$ved#ixmKfS&nO3eTfXaKYsXTZQro_cQwm# z1=anxrcMy(^V;g-xhUl0-tYGgzs|2^@t3#l(UhrZYrvsH*+3*4!ZH@eY;B8+)gXdSVNP7M?)v~-5fy~zINBC z>o^wfsQsy#7hl&U&c7yn7n|fa8~)>u1&>MW`BS@|*-hY>>bhx%zl+{}TNZfU1w7$= zvDf`u}?M{jTo1 zjo~~CQtGd+n3rCo9(+8`*66PwV~>Ok-*1!EdGBmrH95toRqOBnDD`J;KmR=Y)h_!> z#{B!$k|ME!X+vVi?Ay{U-xL4LnrFRG`OdQdhDVYo%%bwXNIZG8?yk!mUf)|5$-({= zOHIs9Yl~-F$xYwE`uwJ>|GI{A-+y-e?AA-KvHkYqmFkyU!VhA^ZeKbqthYhDf2GP3 z#m5s)pC}SC&+O@(la+0}dd`l;2A7V7+sutp&;S2HzLH)4-TOsP;-cb>OZ(E6L{#Yr z96iQt_b>j>>xwV#ajpE5uRrqnq#w#HeAdpUf+O)^?S|v!^*@V$Tw7l+$G`u(-kZCO z0tZ@{I-FFMj$EAX^5y!GbrV-DliVsSG4q?s1&QX_v!!d^a>qB_Y%hFzhnu6|cF=jF z3og%JNzRk{Xe-aH{O`-v_ghy_*}Bgn{h*=9l~`S=ZOZEEH*Z!P z(kl%ywTm}zn(e;*#@#ms`|BG*tF6|?ba4vK3EjE7^{CyK4^R5{F`nPWkTKNfL+r`O9oEbMRBuMxig_x1dv)&GA#PmGf({J^8bB0Y5m z&+!tA!_}tcy$Mkfp%Uj0d#~TuB!0h+U#jKj-1%l!<+-x=?WQj9XuEps`W4l6k8Oh< zO0JC3IFcy6X!8!Ua>1XWpW+uS-LH98e&Ve2@zLAMFSIY+bN+_rwKVe?$M>H$@?(De z`l$MWDVqiV-qd7^@!N8{`|($&Y}q}}t_UPoiYZI(KP!=QzlQhrSu^3Y>fVOZs^{{H zOd}a&J}CcxUElClS$-F%@oepnH`Bj8YgF6*!F0N&S!JqM_OZ;wm|LKk?@`&uXOy1`jKmErT3@-<5{t1f=2kvHQ>R*yPXTeCA^NmOgD)}Pzb zHg#W9-+cdlh5brJbl{yGm#gmHS*qSBG+)A%`IYm7$fN&??;kn5zK+%Z-%S6yuAKVaK-QVzv_%F9RJ?yKR)P^ zb5rH((qtx^orV)N*4@4T!y%(^&+hf#8GcXLKaq38s-*3=6*-zFrF_;dR|uI?@Y;L# z)hoi5|F@PYFZ&Ys(n09zciE`>+sbcgK6&~6(GG*;n(4Nmm3_0{ie?DiU3s-8<>@r0 z=C15ztF&??l*;w1TIx=yUeX9%JcrjQ)TZt+7{B@c`;4i<%zD1U1*HOK#J?;q}b@2vA6drE`Wl@Bh5xURoRQJL!T zVvl9pj|bBC8{5o^jjk2$zd2F+!pZu{!FI_$OOBt+G~g^Sy*#JFNqculYTaoek*)8{ zWKUfEEicNsZpq&GYxtVA$MtBXjn8r2{JaA4`8JI$pnK?Swz;!$jS9 zdOFtyyqZy3zf`GuO^orOn@1eF%}SAWA{mG-oGo>6@Q=CiQM+D)lk}_W|Xk#4K z)Jhxfbt|3*y|1=oa1~(L$*#y~_O5hguEvsO;lT>M>GkRf@I_?oL_lCJt$n{C*BB{9W3ypKtEoG`Zy_Qw0-ea?qRVz&st!!r%S%JpW(B|6qMF+rNN^FYsCh zw}RSLrHwwTTRUH~Xq)|b@V-tm{?GUSQg#&gQ5(oy1*(*tP_69r$ds zr{uRp{I9k58~K^f3M8EAWSDL<$4OCX$KIU>{~mU(+MR60?tWR~!%5@Q{hkd=4-16W zty8mJw5`&9BS+hXs1sivt)J7zkp266;Fjn5>q_Mn8RP!7`0qI#CdKUY$y)E{RG!G2 zcke0i9E#9O33BwC9M34&DCuM&m3;Tfp`+^-Ep`)VQH-m7T&mF!plfh2?(i0~RaNH7 zHI52iW$|1q)qD{Ls-mSL&-R!ilbbMa@mK?~1*z|883$ zD$bbh*-(5vjTJOH@p)IvjqiEkA{W1Ye-c$z|9V}_593Xzwwkswm2{na@vAOrCZ8++ zKXuR){Yt^)n#^^_GVbl)z$0{V|KwQ}H@Q;$8kQFZ*d{YfwD@N3x6GJfHTAOn_H1dJ zJNJ_}Jv#dFEz|kW1vYLed+a~Ge#UiYX% zqTM2eSG||b|CaqsZrSf&uO+8BKJxSEoc!vy9bY?h&-26+Pr{Q7Zanlc;|w_TL`ALK zKfYeHF=|EZ^?&{!MS_LJW`zCjRa4!|G$&@hnD5GvqOCU_7&i(8b_8}9TKsufUGXvg zfBcU6?{e$^ojAU*-=@PwB{=EO+fMeyOs*Ygm)p0f|G(1z;OF`pF}0p`N3<4Q@}9JD zq4Uc2&h-za1UY!(_Wb7&IwpDEb=F^RcX7qF7hd(o{QVv{^IU`J8Q;iTkg1rJQm|vbJV^51N#PkW|mfo2dVGYKAEjj zp9WhCFj-Dh$Nq0jzusEE_^ix#kWq`Rjw51g z1LF}XiSx}}tXI-f+&2jFFFFv&e5Zox?@#+S|9`vf+od@lr37!x?NPT2k)Eqo|GMG) z|LA(rAHU=lIb`%}W}d#=cj5Drv~a-$4jqwW5_j^-e;k{>kEwXW$EdlomUGz|^->z` zs^gLusg!$~z1YZEaNqF2x~p$<4~D+7_g+T;Jc&e!fQbIRCc` z3?Ghm|6BJh#LM*F)==#Rtu;3^=6%!raIXIM^N+ud#~nWWkS}SE$+DP3FN_;m0!)7# zw*Ni<;obE$;&nAl(sR$L8A}}%T5fpEwzs$S&}pFui**HG{S z)5_X%y53!VVzh!cJyqm~ zX5Ww4j1?b4GaPT4{@KT|;h5xk^LhQx-`h5CG`+9)dB)2ni__JeR_(ZXSAnPb=MJU0 zeta^kZ{PlACeLZG@OtMKlL%&Y{TW@Kp1q!wDU@6_-Sl+dy_o4&?oTwCnYH@-N0u9` z3%&YwloYl5^&Bu}yQZ~ftHw&U;CC;4_i|rJXb4rxzoJpFMe*LRgZ_^M*f^RFYb|~E z)&4J^+5c1ghvitzYy*9H+SQh^Waav#uwFcvS7MjrDj?T);Qnu^eLwHlvTZ-EDA7}HA-7ng8Y4#tN z@Ws^v2Ax?9)yEDmjxAw&!y2`y&)9bA3C;X1&aWhy4WEVFuMT6mvDfoO*!J%^?oBK+ zt}Lv!e17xF+uTk2rzvd^`S?`yIct8d#hd>bAEzZBUgpDQ!#J;oae~j=nU5wm_Gmot zEN3y_Ez8&L+;}rhX6vNnn1fI5>}`C0da4wX^S|^HPF2e=c)=kbFL=^@h}(N9&)v*QuLn#g^@6ef$5wuDvdr1xxGbA}VWRqb_o*?h*~!c2ZzI#h9QSAK{o~JO^IQD+_nTw? zFS$eI^BMUW_ejg9J$GNeR`HVXgOajd$Be}+5&IbSF@3r?eZ%jW{tsUA*GYUc-`A5| zBkDS7P3S5C#vU#g+dbdy>-p|UuYY`T`TdU6xJNn{*`&V~d|}%2@BBZFeSgdC*#B1_ zUm_4#lI*wX`tzmJ9~uh9Hr9Q-xA~9fsibS4&!kP$+V)XxdgtT6%cuC9{1!M{Vp+A} zzNOlE(fUoL)t!@8uHW@OVCVfspX<{OnND}SRV;YyhhDTq%)GFv-Nl?AxwbH~+;|ic z#ilM_`bSr6;tIXxT1^Hvb2lA*pRJla`K^%W>VsxnGNwnO=l^1~VR4U;UgLDG>m*}{ zsh0sOvqU3ra|Tauql;_p!mtOmZ$$6>d2{^Zlm7jzm8tE@OcL1%X3`yuIT?&sSHw(X zYIOVB*uVeJY>v8@#XBY+7hp7tlSr+Zw&L9eb++h_AFj>+%bD|k?)+oH{{?kKIGh|9 z`Na&x%Ac|A|GN3V;giUk-q^!Ei%wi!w7g@}yy{~Q%F3Jb>t1S42q-+)Sh`Mle)WVW zSH3@c#>UUjKY6O7)$4hSo=z=0o>a41WpR=4(wBPLvL{51dM`~E(S2{XAy40s>*rOm zP40{{*8eRGsNZ_?oaeV+KJK$UnBFj%b_)9+bSu{{72@pPv-9@s=sWgzmP;;JJiYpy zjme6G>&gsN*D=eiI6C`%4b%7I%pwoFRCIqwr`_YO3EH&$og>1+B826Uz-)mWpC%=>0c3Ck?Hi>0& z_BOGu~Il{-5Fd{!f)F zSSnt&-)nOayur-GsPfN_pQ(8B(aZBI+5O`xd*0VQN=@$D`vug@{f>qAo;Hdy6TEfI!7u3^-(!PE;n!O}8}1W% z%i6h_N9AM7=5L-c@7GKD+1TTRG(j zuZF~Mg+$YJ(>;PVyr_Bc$mu}VVL5d{F$r&NP_D~l!UbE2`-g}?V@-7Kih3^Tei&pmzs-B#|#g1 zg$-gAzpk|_oM)uFDS$Nzo3 zUcym;W#+CUkNGxv?X|z~M&8SKx1zVgDi@dAp6#~{_u2f7m5ZIE_`R0nRsQjJTW`pz zGtOIUZdG|%DNt#_iI>;EDdsd!y5Bu-g)n2-n%z9kseh6l{he-^A!T@8plj{d#QN{H zdwyr{?>u{1_fUD7y`{VjqYTvF2`TJdR@w%pEHou}J{NG-C z*7q;@8W^t}I##4y$onw=&(C^ZyRWF_REmQ56mR4_R_4>|_ zxlH~I;;R`X7j|ZAt3KR!bN&-ywQ|)>r(|Ut8TdoK2S0kfk4e#jcSKQlarJKE0;ds|Lgz5sr4WIAC$dT_F)M%y`_7n;=r*7H`DiXtguvnvvJP$ zv$rP3F!-%=*kAGf?`6({`OcLKezHBj#L;V=WbA_XvR}ic;xD@GT=S>q^pZ=L z+785|PWtrm$moz>(G(^6h{^$B_Ck zW{LXhZ2Rd)yo{b39{uKT+R+$1Q-ra~cIL#c|Bl@D&OM#aZum(BCmiX?5?peSVaN4- z%f19@Rrr14bFG=BCYO`&VeS7{#uk63&u7iy;Oz@wju4*s^lb9MxADI`Yxv`BrcS!3 zA$42p!=Jm=f1d6C8UA5k%gV1o$pTIdYadOu|K5La^6V8VK?|49QrvngvE$UaZNKNt z^ZJ=D@%vKs3)^k+cl#$v7)*UOzbjqp_CHnW(?2&I618r~UH*&fvr3fF(yFOe+w1G^ zo|kx*e&*ZiTOM!g{NL^0ay$EEeCo8#^DBSI-{Sr$I>mN>oZ^-68;33)k8j&rzjC9t zwCc(!48QJs=fry#MV=}-zy9X8WA_^bS1!Aew&tY$-||141v_gc*BzYGp~@Ap&+O$( z6_?FHm-`oZ^-A@nR(RPzdx{=3<(?$waiy%cZkEZ;$#bocr-IKjWM7^yPb*L{1*RA#vxwCAa0o%?BoFdY`%Y zUw+l!vR_s+|Igi6?P0$6Q*7?rX>qn8A9-&aVw)ow&bn+@(ZjOeMiJc}LVuV2pPy3i zTX)W{Ve|3Cy=!j-{m7p_pHXaqMewApR-0HDf@2+Dt^GS^vxH^ktbcRz1pfSgv$uRt ztm{s@e|wCx-_}M|DRS;n(N> zy?ya#b*`OO;{ID76V#vAw`V>!o#!7DIemFl>7Nq0kg4xiSgvbay|!LHnSb4vWc>@X z3v;Il^!*JN6)aEdf3fQC%BF*se^WzT8Q;y9&Pez=|JBFzD{mDz-c33X;HCIJ-{8*P z&-1 zZ&@oc;O((e-ctI_7@= zv3lC)wKnIiR)sP8Ro*&%Np^z4i{L$PTyV9U^xrZZ9M_prM_?;4LAn`6+ z>c-}YJ{n7|St+TV;{a>I&*O@gAIss3Frp13&d0>5FGvk_^&h=mNUMqb+ zI`P7)3_g`h4WAS`0%Lx#MTP6KdZ|6BVJ_|#?wMACU zxqUll?PNY~e*MqRRqvNSnK;en){5Z2DvV*tR>I{M(oN+iKd5>A>eb?A;cc((8_Q~C zN1kRVxTa;Unfi9xi#4ga9or_kKRBvdQ}_73qKh75-KSXwuYTNpc+F5G#z6XMK+^?2 z{_cH0wHNRCeK9>o>B&OFufG-tFe#Yau6d%!SH1hu%vY`FcdncL;m4Bw?MZJw$TD7w zx-b4GmV@zl;jXVWE^15)6-$q6x9q%j>FJ$EzS+F@zwfrq-+IRR!~fkSirkEvsTTf0 zr#@6x8NHvocm1{V*FWt{;LWQ1Ht$>X>tC$zgS{NHWluSzCv&H)2(mvj=f}Qx5*4fV zuD?}$b=SSWm2s@ucc+%VUnirnbiov^?{#bM%htI6`Mh-VZot@!JX|LOJx zGLy_sHDCL%mH(>0X@li9CT7+8z1QklyK5y6&RV-xyXj64o6IE!W3T@|c#7K3FW7Ix zW+`-G-${myoT7`r?#3SAp4Xbd=*y$TxR7Ghwa~MRtRrh>< zxBJIodAURO|G)Y_xg*2XnzTTYDIp{6%=~)QYw`89Pd-DpN;GX~J2Uv`cj3i31r;=Kl{p+wo*l_l0}++AP~; z+04W9dt?ut=n6X}bY0$uNk39 z*&pMIT9a>R?EG0HH!u9q%jNU>GJpFtzqWWbbIUQ~^ES=VdHW>a@BP0|^JVJP?+f_U zCrbW);yKwM|DNWJ((ADgtL>I3e|)p~{{j8_Qs#Tr|7$g(H(PRCQZ!KWoz?Ps{cgVf zf1c`p{BpV8abW-pC)4JYZ}S>vwR`LDWSO12&$7?%+wP3aT+{UZypr}$rvz_!F1K5K zYSps~wm*;C{}VL7Tho2_w#=yuHw=?McE`u$UvF7h(|YZi*q_%wpMN}YnE&zJ@Ar(C zH&02pmTLWA+w6R|~@=P1fnngc6^naf~`Q1|Sy6?a5 zJ8~rQq?gU-OuSsxvGLuM(!y6OmnSWkEpPc$J3&BWs#nC00>yW`-`nl^{*V3Ii-r|C za?E`KJ6@l&erUl|U-ilJPT}v^jC}nWa$79V|NH*`uiX26pY{A~-65f&+kU62d#3#E?cA+pd%j+au6VKV z|KZQ)|8t*dn7||>HI2h(S=+Dm^?$Q_WDJ>%)6e;Qd0aWq)?b6Asqv%Y{PTyu?=Ix%(=Rnsc8mwXS23dz1Mp0i7BSD|<6ukQ)(_P>Aq?c0l=r}_9-t<}q4Wp>A5ZNp8Yt6$^U zBc)?{wKSuyY`-hGFhobHTcbSCV`u*H>#NUa1qB_>I24tAG;M8rdfFfLw3<(+)h~W% zt(}lB#lOSuK#P!ZQMA9q;Twe!o3mJNs83livAtonMECmt%=;|f>Il>@Fdbq0qUm|# z&GPm~y~+7a-hGVcWL|0%epD$Cjhkcf+c^B1^Nwv(HqMLjKjIcBXI#dk<~O6Ewf-k} zMD~+Um4A+ZyZ!j|?ze5*@6~XteVnBI6wt<@noSom1Ke1B_w9ET?BD`}|>r}cIx zY`gw}vo_%VN^n}C2%*@G(Z%e9&xYL8psiz<8())Jr_v#&= zPH8K)_)PI;Ha5ww`8@l6%VUd(tyQ8WO6q+F5;B$+T>bNN#p?6T27JlK``nAW8I!C& zI7J(1$Vh63T<{^Y<`nva0#a>3Dg0`Qr)B zdic69=xc5so2QGF?ytv3!Ajm;m_WlNqsWusFc>+4#+Fvg<%(~*S zV;!^R+!pa^YZP6rgznqFte#<*tX6aXcr(9Uhxxr4;dPG_R=GyOntm&9B&RZtQWag z{l3;CbFtu*L(igf8h7oo+Oy?_>I4DBfT*2CsT^~nZ$}lLKD+(FpU>xyZ}0yj_HN(n zJmu7DA2z((6>L!cE@scCQ>!aJ9u?m$GcUGIQ>wB&R$SS=??}6RUB~zP_3{Y|_U+?~ z|Mw~HM)G;vk7ta}KWO@V-n>ZKnuAqvOHf8e#(@_XlNFY$mx0;IYm3SDmd~qiN=R(GQ{){}`t|CH)vFI{uiw+u{{MaA zmMz;7+TWHRXk?e|VCJ)6xV-GGFw>0#602+EyBg&Gzc>!E|H7R+J*?bf4;J^^9rCk& z*D`Z+TH^b?`@24$vlc&Z_giO4iNgX7-ZOSdmpcS!7}PoabWP|D_*o;j*uA&u@h*$+ zcZv%yd8(@_S;$;J+A&f2!i5_dJ?v-ZF1X|8n-?iP>DGk;2|3=~r!Gn|$dw$}erf)t zgdO5*UB4xr+PUuI1eG04malZ^ef|GxnYte`IeWietN1!Ke4cNZ|gRyI+O9|g}c2|cD8ofxmm3DpXp?${keab z|8ddtqL`19=O6lB%lxf{q2uGR*ZBz#oiq<5T6UY_;9+(=;p>z2#Qd=D@2oLq2-Q~g1&`F)Cb4UO#A7T>JgU%=Gz3bIb2ER=?lLUi|FL!OQ;ky+^yn z-QyC>?wva>UoR8?|JQZHygL>;@%!$a+5dHoFk|)mzo8tOh41%%m-5d!(2(ERG2^UF zOx4My5gW6X>Ixp`l;k*&AF*4SN9fq%pRZQ0e>BNkpOZ1PHda=y>V;xV>D8K=+*>Bu zCM#1SjPC8)Tvs4g6Tg(9iPgk$3nS|~7THbHvvc=uT-h8q;fUPs_l++v|L2yk{h`=r z`^}_T+<%+)$|;`|bZS{R$^34K@C?bz%l*xtF3Hg-IAQMH611{o*REX#(?fo8rOzu> zlhNFG^;&f6tDbAHwE(T}{WQ*gT(R%UwC_{-&wnrcez)A&t5f-z93z{8Ec1-!nq8oF z;S?cIMcI*~p(OoYIr7s&;XZpg%j-w;hFPci>rC@}xhY`+ zK`jc4B6J>ZaOQ8mCdDnT*AlksO`f3Bf{;%ScC7o#bz4P3X@bCnK4Io;nSavrZO(FB zUml^A`18}#3sJM*ub!l>+2XJJFU8%0PzcxA;` zS8y%zgAM<2nPMHA`%->e48=5;KKN~yxA$vU&A*?|JMR>B-EBD)9z=_23$2#jX_>WLi1d`+f(#r=4PJ$f0O*FvO=Ga>((wyyMOKN*;@vav%8+Qvs>;ubo9CT9*+2*2_8FU zJ8e_$vQc8 z>3r+E6Ygvmo}$4$DQL!;#4eUr)$X3@!k+6jRU37q&r38LCLQr$Xm~HZEobdyo%exp zQI*Sj9`7iSVL#JzJ+7K}cU@+<@TWBOK9@<)!nTvfDOw z6;1HZw7LK6dz7o?GAE87UJtJX`@8B*KfLvNTz6Yr)t?{7?TkyIk9rd)|FN z&rf<QK|z*1fB#;IdCwCc`k5x0WvyV>Sw?+Har&2|| zsXpXQSLV9jUVXFlh09C|1gbp zfqg}NZLO`%`Q|Mt&QpUprUWJK@B3QCZsh57W9wDZs}Fg9DKNZVyWdXc_(A9TAI++p zn5JC1Xm$JR#cR7|D~yB>TsyVBL?))-AnS!SAO23>KVK!D%j;*0n`GaCc$;@8q#B(L zS#n=FY4q^;<2_Ate#rlQ;XcEnkjd}YJs|5-5>t@;uD*qEwXTmV5uTTG%|KET>p<<{$Fd@!0)vXx)pKg(eM)4ykXq zXYUuac^l0?F|ffc&qT~Yu1lhE-^{`FXr&d)VtfH!xNxohto2wJEK4W&8}ToXj!m*&VvcN6Sr_*Z);o`ygcbx zkK_!)WVUDL=5|-V+bb@ezsK<1j>mq&x1<@O<}#H`{g9Zz(~&LWA}X$L5_@Zf;Q3`% zd-nc#YY<|SyMW*Mc=BHk?g!s*=i75Aez?B>-_dPlKJuBD zR;E}49uy^#dPXDTzp7e5f$ljSn}nHr0frIc+Mte@nSa)HdqO z$$*D(UuxR4gpRvS_~rG#Q}qMiO~%UE=}*OLEsm_PuH)Vk_mOEy+F?C!9@eIRZ)dNt zF7p>zlR0;5o0x;1f5x3Gu3PbS>Q_3Mnx7t+HDg!C`JSLsLXzg0w<@2og`)z)8oSmsGQ*eN>AXfbRzsK^|oJBORUTW%_>~AT_ z@Zr5{H-mtR;Jm6=o^Lk(e)qxFd7Vh(&4x9r82cV4JY6-_tX?>bvro9db%8Pi^AVn< zI+IsV*zxh0bm0X@_QbtkuN`K6KEMBb_LgE6OV0rI=jv4UJMI!P;^vu;hn1N)ug^R|ie3jb8~l*>QSVlQH5n5^d8G(|`|e4WwH zof~b=WUt$&#`GoX;oS0jM@_HC2s2%(u*=;Lw?=aNohofU`x?ExT|d)g48L<^yqzv7 zbZNr6KObB-t~&)s&D?RMVo+>D-}sK=B0?TU+Il=TgZ_LfNdpynf0ihn;ny?=b&?sr)?e73fQYd!pSJO6lW`Tf|1 z%T%HtthpGMas1L!?~AvtwVgG;eMcjnWlz>&wZosRQ;)5SkT6*Kq4)1*0jBzYpXYD< zey=+5(GkvweL1YleCG9ROg{cd{`^1YrAa4^p13WTle72SS@Zi$^^rf)ErOgfd6$aT z)!tse@wwdYs$&WiHtb_Vw@p5VUpBdDJi zSN*p0`TTmthYQyoxOJ`b@A^BP0y@}Z1;)eFTLrrBcu9@}p_{&xG_ zw*30v(F`Y^L>!vJ6}|UYF~{jgYjqzO-Mgl-WG;te^@CebDY_UYG=z-&pv-D z>hWZMyMsSIKK}Ua(a{1K^OTllR~}xyYqj}eG4uY~2aOZ56%@Yh`t@q{$Hnr0In?Kt z2;HlEKKFt_!0oBh$xr*^9c3dH_^#XVa{s=4c7nA6pC?Y&e0y-8pg_ddQxbNsUcEju z^Z3fohyMNVe7z?5S+ti$(6LjBHz#Cw{d~W&sPlNm+=rl1H*dRt65_Enf@S|ty)%0f zrTT703ZE&jd%ZJT4*O=lo^$WEyxW_qu}z0%*M39K$eM!=zm-;YuV2VrXSr+x-|u3} zj&;wu*b}tcS07&5+p4>GcaXsB|3)hoah_iHUwTX04zuSMQ`vbLK2`g<^{INWWlip{ zitL|yeh+87=If1np5^lk+3G3|@*Ad~laaBhHfx!%r%#PXBY$%UrmdC z)HVN~$mi$hkB5ezJ^pg}e73cwes({97sQGemP=+IyWK6$%wTr6BsgO!k8$p+{a=b( z5;Rl-CExbdo0fnswT^&H1v%Q*q(^+q#Qxn$-bJdiM7k)RyXwG== zv{1HB*|&4ygr$3ne2ZTl{3}sW?7S^`_w(m-tF%}+V@fW%KD6UnWUrNJIn^gy##;Q* z{@b;B5U=WlKbhYb@POZT+p3-E6Ecud;atMlsW z@MvY;qfWPy|1UeV;xrFO7+=isgHNZ&^PT@}@ce^i+WQvE|Aow+I>)Ck66w*oY|gyD zmb)(d%tzn-Z7WmK7oZDZswUdnyz&%GwKt|Apx zV;MFTW*%9sxWK*~qk9Hi+^^?~8$Ynf<^GtSJ)Hq5^0&$t&USO=4z5!U@!RqE=Od95@&++70@_D^iK(n%%D<-|o9W$J zV3a*UyP#WWL)uxXIpzO$N?4cae7je@{z9|6q1xS5VNB0h4AhyzbmIG_T?>1&|NcJ( zC7Fr~jTzbb&IA-R-ef7*d8g{Q+;!Tk35oT<9vO<`lJT4Y@@n9-^MsQn7(1*=i9?lBXtBOkP5_5{YmV8_&?(g}(-xu%PDf#)?S?7KCo}Br0O5ZxD zXJV66(vk-;UQ^gNy_PYw5B4w;-H^h5e$kYs_dhFsKAo<(^hmw$|Me^lhN=rpYR)^a zjNq}ofAOc-ZU2b|(n&_%R^KL{u5T(;^F1UMos;-PZ-s0$Z|gE4cT2Vdm#WuJirwU6 z-_aVXz4XwhbQuB1(vrQQdl;1yIp(R$nd#(Me43&e%=2^Z(>RU(obKv0ZHZMHQ@LXt z-wRGFox=c{(a*@qInu%@?DRw9gp0pHg14!w&SfRBn;##x%P$Jidbs7XU-wlTbC>j< zj^;z3ZFK6g3q2-?%@LM)EUBTawx*%}(f0R`j&^UX`B`+v_D_LD-(;m*-4%vS)ta0i zG~E`sohWKzpKWJx=cKiynT$$letsGL8LrwchWTn1#y>mS6t!=Y74t)53@Y{Ph)#Hs`r* zJsOi_!^4$%byr?t>smNP$o}`s^9)SiZY1*?7_Zy^ugb#GJY_lG;T4=W5)Shk6g}~< z`S;`T49nLEHJ@i28zevTIWxzS+c@pakvE6=S|59ynQ6@av#m;D*`2Jkn9{SR0Z|W+ z+yC3hYr6H+>aRO~?CWRdw>i*YCbaR+vm3LP?diyzF5PTc_orfwbt+ejg2lEyAuN1a z>myC>H>fn8oUHD;G>qxP3Z9BP+3WW*DCtD+J2b_ut8#q@M|eyj>kP@|bE~2}b{&bj zEfD>nTD_Lvx3_o4=XJXu{ETzi;gabu^4Q`= z?|cpmTXdnA>tN~z`+0T0GPi8qmh^AxXI{t2Q(l;K_XWART-#Vsv`!{V{(IiB{q}07 z`yMA8<~2L;M02um!>(s@_K8%NCbV$uS$XC_)$6tFYenLswrJ?oPpeqNm0I|}9R1PVjwMdQs-x&pnZ=_dL^Vn&HqmDQuxwQ-J* z=N*4aJ)c`H7hycF?$^r+H64eFG?;FE2i4#V2YAizWjys&k=wa+C+pHl?SH@Dm%koY zKQ}Nh!p-vu3w>s^4s6FZx+CqubYKs%_PrI~7hseijc| za(10uR`F`(@((wX`yWmAw?BGJI=AKVzTdGvb1Vek@B6JcO*cC2kTo+~zFBIWT@ zHye-3-T2?|cjL=tvmdod=O1~!et(V*?j<}xLIeRcK6 z-S>6!ZgK%!F04Cu$s`}G`+7BeW6DYQ8|C+FKZ2&2o<~0WcEenvVCBcR`SsRr?&lKo zo>sr#*KV&L)3KpNib2WGz`A{b(uZTW17j@f?aXeb1fQ90&JUVg-244r^YyrT*;C;+ zlDc&ZJ{)9s_EKkCrpaQ#n83~Jw~hb)XGW&FZ=2^oY`6cTD06({&s~DTg*U&R4wSH* z*in$XVY;>)=QS%2N4qT@Pp-*vA7c6(f46|SXkGXEy0_Wi%B46Q!;h=Shj^W>xjrpA zFZ21)4Vw9zPO8oLwlz~@TGx;F-1wCC1>JrfLm zKC|EXr)W;iC(R#!-`BPOe!pM7-}awHRCLsav)gVz=-BC=u=%X{;kfE|qHf|GT^md>$feo-*0iJ zoM+|g5ZSct8`E7W1LmXWj=uV|>D#j(X$(8+4GX5Tu6%!ZzOh0~vte$$qt{dy>{61J#UKcGmeZ&8MTj-KP(GgRO7ky;bgbN(_S~($lIM< zViZ=o_VK>^DiSZ=?-g!2R5`CbXeG<_QeFv88})^kJPf~uUN$lIiqrh^f$hA=21om^ zSAu{1`@X;3na`Hx`~PQ*0@D7nCk*aLEz;G0sOZ;pUnAzuXPZBNXQqF6`u~sro=>l| zH7b{OY|-R+dReOPb<(XZ>lcP-E!?`*beY95k8X(_uU7s1aqwn(@|_nKBX*tP-Yq=s zNY=q7R?sSnf?q3_Kb%v1t}*-*1Cz|lgqxpIE#BRD%rhf=7gGSQ>Jr{sdc;o8@oV zyO($89O){VWcl|FoShuI|NXfV{NqvC?ZkHviw(-(JuI{Bwb}dQy?Eg{%jYwF%A|Km zeo@rfd7V{!PXA#(Tak9TGKqD2KBX^Qe))Uto$~v&JDy&PK4i(Jv8lP>lI3gd)~oZ^ zy9FmJ|NC`)|Do@-v-K1f6&|1Sw~3?GiScNXAiG?J!;vuQZj~PyCxvW&?7lzs?D}g` zs^^_geqI!{wq?Sam%m=GKi(=H*W%1)$x?p5*#G9b;8X6^)z)d}XHEUWbBq1=% z-!0;A_jAhG|Gb~#ay>WJ$ejvbmbZ;}J73n(e{bK{gXZ)Nv#w}-p1W~R@974o|!oY+tMmjh1b0Wt!)hAaAIEU$6&YE;9tcpZ*>KWZ+2&;qH{K~?%Qxw zY~l6GpKEJAJY=_cx8w1H%6Ytsee?R(__Qv(xbb4}EraZXo45`bg|4?>H-&#G=l|~? z4p)4;nO^w&?e@pF-Rq>?WemkPtQ0*xP51Co@mQHtD?3`9wbx#}cdu`zar&bV)b%y23=ekcg{_Nd?AF^O;BWu;dW#{ai&|})hKg6PA;X-sHP@mJf3EpqR@K>5 z+|3dG=Ly%HU$3KczqIzvU463n_V-#5F4i4=!rHmh8}IY{Df2B~A?7~oh?=CF$C=*C zS0=pO(x)JJRj;9$DL+gr?S`YU5m&j?yxGmC_bhs1Az@yr#I=uIR6o^l3a`GXh&0=R z&WYKp+%LZfY*2oEmZ>jwYm)24+V9cK-T;x1ZA{aG6NH zdiqh?-#svEjd8yIlWp?+f>qWgT=^!+KUMpc*x985a~E?O|7VttF_2v%8K}s~yC$gO z+iUT|A61wp$%O>2a={e=BEqiOyIrA;1IZb#qAC0O^j(xET9z&%LIKhGV_kTI&a_p zezn1L6TO~W&z8*EkU7K1waK9Dj6{#TJ>z`6zaqM4bq(v(z1I0=^)5+PQncBhGC$bu zvXAEn=`;CrdNe-Ru%6nr?Q2}@bzbMol8t+g6un61d3>Z{0^1ag*P2tNC5C7Ey;(eA zx`M*ZONNuSC(PAQGUP6|%H9wr_QRv#&}x~p!3yGir``K6F)%1Fc)B=-yk4+yp`5Z? z4@35`RiUc`G(;AaFbKAK%sxM}p#DY)%S(^w-)6J4MJIf?X{s8qXpQg9e>{AGx6=de z?|fs^b^pB6k#CJ>>(@?j);ToEWzLNKPi!4Uo!2&Rs6DW$aWcnc0~t--*}L+8FWj`) zgCnu%NaKYE)6Vcbo3XL|&|j&w=|T+0XD&Ltg^TUZobJHIZU+lx)6%(e@)AijK?!7zh_@Wips_raV`nGOskzVdCrwQ6JF1vp0 z<2Q&r?2$5c%B6D)yFRUKP5tKA?mSr_QLb{wy~APh(pq{G7?}>ltiIcMeh}^RRPg?i8U!66pP=BshOOjjV^_N>$)Xh`7 zxr9kcb7{#V>ywi-mfGhvIB)9lbvPp0a#;OdJ;Cr;p!9_ z|39A<7ijYz^plzvbY4_GKZD`o!~g!*CNFjAyX8xDuz%?sqjM;hcuJ@=cMk)Id}T>E0+b5E4Qv;nsvHvK}wfcXvg#CTYff7 zo@gxF@-Au{JJ zmvI>#S2Xu7idTDX`u9&v=DtJ8zEgbdi`f%bhbZ1w%KqD6!G7U)^l7Q$O(BVF4ZH6f z39aD^IJ!WW=gM@;eK-F}6df-QnWe(@Sd>NMnuL9&EC+{3`1VD$zT6IGJl@$9Fo3I2z3a~dY4*xFn%zMR_X&$>tB*VFS4pS#GMRGzN9;Z&pM zvs|U7{hLH}Qk-JN7`i?*SV>O%;31m3QtQ(Z+qx-vZ?9Vz`ZUFw2mDOx+3q1cA+&DN z1kLR=-oZ_OEw6|_eyF`sCU8{{U!!xX!7*#U5XLFT@5#%1bg}3jjQ4xG*pz{zr%pFcIDJ)yUA9r)B<%NOt9ykW3}s!l z)xM_ie#eD|k2|zlYwY?T?<v2WOsj|#Ya6fzl!SB1|DwF}vE{JHB(HTlrX0#TEafUwd&K7YoOg@Q zGz^&h5nqsZVY%?^<=e4XAmtMVit_qv?@xTCe_ZX35r>6*MEGdpzdHC{z;59Sv zU0=C^!K=bQ7a!+&R3kd)nn=Erv@jE zC@~+f-NL}Tvv;Crb@@Ve<+UOF%uD9)``q~;yY=H@_k+p3q4Raym1TeAeCmZ+P<5Hcy|WHsyEz{-UW5gRZ+D z+?v+?F0a<|tBT}mPcO8&a`@QC|H;I#b*)}6y{gl_JbjCBwbaoM`Qg_l?7HACULO3&_R2}7>x)hmZQXk$Rzf^* z`ci9);=}0=P9592N^$W-$pwe!DNoCJb?Z;a-t{{l_fEBP-Z_c4TU#RE$|i2d=i=Sh zifu$Ik4*U~U-faD^rORPyu`njo_1PL?JfDLmp3T*?!6rEFEx(3Pr9xL%ZiycES?;; zi?3@RyC+l3C*PUuN*3$7mHU5)@!iU=f3lQ$p=5wm5VNp*|IzpLzZG6dOYt1!7Az7t z(YWA1!K)&}MKieOZO!YO>v+Ls!Y0<4*vL6^}j52f0&f?_W~c$efv(g$FrvH&^oc!P)1wwi`4m~r=MgF87;VYdYAuv zxz#-`2UJVz|5ouX2tRrMp_JY2#8>=FuT4HJ`o}18m00D8zZLGq{zn>j@0h5STlA`; zl0#M|CL}a*ncg{(sgWGJ3Ow2>f8O=ve|=<9$j&2-8g3rf7B(1ve-(Lt?%itJJEtXo z$j+0PtMw=R?cd0|_jnk-OPjsAKIfi+JzIj{_IGKI=54(<$?$ZYXTvv98O>Zx{skdA zkKSyqZ`d=r-Py0>BGa-d0fwmPWE zaCYhe-wp4!3Lgu%Guh3p(fqw&%IsBC(yP1J~CE^Tr>T%kZ0vo#E=L*ubfe7Ypn5 zJbLVP*7oYQ1ER`ZmdEBCjGZF7Q?Jsx8yo_v`JACFics-o3y(rC?!rlo*pQ z^9IkGP4SuxYmH96dtTZ%IqHK!jZd1J-hA`(=_lh#eCki^{=r7+V-)6AT&A&l#_ z&x{U!yB`-S(vn*Ych>N+W;rT7)E09-c6Y+v3ry}zZ?p>n-Z2Xn1~6oFF8*K;ZgpWF z)5OV4ZY?#7`%Qfo?z%ej+#%C!o94#crmCu63v`S(+_~Gbu5w$Ik(unXSnGA%3<3MR zHdz!4{V7sC;PQ8?++17x@USVXCwY~q`^^6pQMN)@Rao}$|K^ci>-s#@89_RwAA#&U0d&JA5{w$?^U&xwfVZdfj9YswGD%N*miT~ z1A7(XZ7SF^rdox~sjT08ZTEGC*-^c58(XRbJSOQDEm7emz=T`L;?luQ zPfzD^7`68tQsHQI5)_=|_I~M!LsQI}vQK^7Af6-e+x#e}Yg|4RrvhdlPf2gFD$T(s`@wWpS^jrDX(O7^Q}XgLM!VI@7SBx`Rd@0s$W0#-XDx=lyzGk_Ej5kMw}L}Si!T|X@=vnpZqz}c8V98ZEej?2=+|PQ#g84>_k*P zR|H2>bB4l0k1135C#;eNrk+b=aw#?}i=5H0mCZwB>U^Eq&O95~{yj6Y`#>do=v}T(-5QESv@m{iYi4 zotzw|+6Z)Nbg$m7bo0iuUtLu{7ReovO6lJF{NaKP%XD>C3N3k~)jl!2m-EOmh9zPX zGFsa<{9L=TYR+7rSYP(D3DLE$9(dD1gNuY=nu!Qw%%=wqv*z5{^lOc6a7@#KRL&;mwlwaJ84tOeg2UPG>r3XZS9M-k zCVq>zK-aY;a?*uo(Wn|Q5CWPPN@@@~O_!1&&+%KL6DEQ`Cu zP`^)Hz@?mdGMnjz6Af=~H8yQ_mD~5AJmW6Y)OYtjakb3clg6+^d;6;kj=Mzpo=Ro) zeEGh)pmkO6;R{Jp0xwm(Dhujua*iL>*s=U?acRKCUq7WxdZjq;Gu~NNC30|qg)s}bxtVeo#^O2IR;9%{?K;poX()Ba5)OgEM-(f+K@)YrXXsjhD`Vl6&h z@sncopE1ejVC(Zrp8J;t3NQEyMi}qhpXSrV;hI)4fBWtG%i0cvKD)nb>glWqA>KE2 z3-b14;WeM&*{dd@7C503ZwwP*%DcYy0ymISpNLa9U=g~jDUL1-GYDF7u znWnsNo*8&OqW{l~i5HpzvhtW~c#rZpDmeyR{kgd0onKO#0CUmnKmk?WX=2xm8eKVE zR0Y`Yr88x>WtBLrNxo}j(qOamL6iLau3N729zX7tT)X1=&feIm_3I{H=-Rziob3!x zsN*lo*Yyg&-)rx|&{b$`D9ntYkz`~BO$jz?XnpYCRMu(g{d<+B^PaHp@4sySu>9x(HO3`+5g{Gc2hQzX((r}h&oul04(I<1 zMEs9?vG+~7T!)SGEAJoKX~w1DTefd&T;g(hMxa2ld(&s3rRSp$u%537E?&pDfMr6O zg{AnP@_Vdn5kHRdZKCmV^ zo^9!5&*PnY>6j!>eW>=GCZ~z6H@BXSy*8gC_V&xY%Ku}uKkAh_cI;^W+}}87w)4V( z7Y?B>bWgr-6Meh^k!Up_wV;fW*^z8#9b;! zu6)+LQO>aX_4)huHWy^i)N?$`3|L>EzfQn#q4tf1rjC|5a|@s41w*F!^WEtB+X* z*$&K;8kglBcQSOp&LnunTmE4A63#%rUDsMRw!cZ(8!mFsfn~wl%b@{UCxZKoda{o` z%iPpeqB-y1wEA^VW!7ZoTuJ=Kar^%-u773E|0G`tdS3ovzJ2q~`gbnxs?<%F+0WbG zHNB(i_8ik2U-}d8)USW~CGEHU>;3JY&ToD7JLI1~!@gZ5Oy4g}4qo-YF0Sd|z5gFp zGuyaG3Er%lUM27>G&R@4q;KhlZD!jS1!yfye8REgYw3huy%h&H*szCrD6R?L6XA6F zdG-TwuVbH2GaguS1q@pR1bDXW-N$mPP|UZ5<^x@@1ugYtirfpr5s+%2oI*LD< zt%03uj=|z}>-gTf2Ctv8`e|sIZg%X{wO95tI8I{l>e==*n<2|hZ@#nLeD+sMK5qFX z$Cb%B;P<-NYRO14#4-MbqpEAEVyKBDa?{t?3=5IFtpMQVK zHp!IF_iyhFu2Es(XlrU){+H#&tJjh*swOUwW17vfcjLz=lXMl2IQq4?83oKpnZ(e3 zxy9nn*^lA#(vPwPCS3S&Q9xxuq~ro`uGMw_wPJL2Zi+ez9!%`i-2BZcdY;0`)(dGY zvshgG9M?v%i3#!fWU4>=VWDmOD6hZrNaYEznoy)ra3zf&U~Mt~IP*eL6J$>-b-TGf|?%a=u6Fu(NH!rB?+aaMP@XwI<|MU3Ozx40#-x?Rm++-h7 z^3>tQy&M7l8@3a^-Y@*`cR#nG?!t%PdB?6PNqg8>Y}v0E6)$%{cHyBP+S#>+ze7@8 zFF8z6nP8pi&XF-C!db{sFd(7v(jotVNpef3DL5*qZFz0hbN4NGfz0&>YH1k;EtfR( zVwvCWDllo>`mQAAp!|#++eZ>JBeru`@A^71<9}g6fU(n~jSn6y+jpl=C5Y=#RFwWy zYwa+@BWkTy<_ZG5U#3JS2QSLI$)K(i@bzjs_Y0of6tSIGuf8_lUEKbcDgE&2TN5&C zpEJs7i8J$maL5$MiD9a``O@^o6nn2Q2d-MDIhqEwMU15(_nIEPzsxu5+dZDrLlw_W zjXPAXWWRUb>EP!*K_$cN-ldbTdz!5m3aY+!mPof-!n9@a$Agvq4YvGsce?N1EPFm< z)7iQG+trVAg#OH3@ZH#T_Jo@apZ2vS@U$7^Jy5V)bpN3o|0?Yk=lAl#KX37`RW>T! z8M5N1x5}@~u$_ksg$kQCCv1q3o%+PYU@E6UN2UQ!<%BuEJyn$sD`jsqNT~|Fb}fow z&Rx#Cvo|yDFf=iKRa7a$_4Y73>++}T*N6$WKkS>?^Q~2;*!AedOS^;`e&y$Ia5``^ zX)id!Mu%^57JJ{(-il5ZopWPyQg10#n~waKc} z(;m((IVHir^6sRqiJT?BS01amX2cK^yN+#dL#nmHmAc9w4Nj|A5{16TC4WuZeC@mS zsaM?(@3S=@Ymhl&5IKwGk9mSAw z;f!h{gJVW+_R*#GJ9*Zejdux1x7oZbEc(ux)Cc7Z2lLgMBVUIy*c>UYVONZJz_`be z(_!TkM}f!-1}Y)D<0jibYP_0d`BrS{iMBX3u^8?p(l?%KtiF5d+w?{zJ(U)<4e>2= zwi{0 z^$Dt4DLRW8Z6cKf)SN5d)id1Djy=k(P_bZr_PRGL%d-4!Dh}jVxJ~G^Fl;HzS*(6) z!lw;~Et!>eM@oCCpH+}mOZ}jdy_dJadjI^417;^K2!B6t+oXV}vT>j1#7`$}MAY&M zPR8fUzER{BIwhlgMKkdxgPwb7)Abn>54uQZFs?96Hhks%x?#qG2nMDC#Q>q)jK8

diSX)Q1#&B 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≻qr^eG<6vg5`N^RKbkVPJ?ZNm$$QoEUlOEFT2r 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

#NDr24m6x#V2~GX5^mD>xUImzk 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

-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 literal 311720 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

8mw&LBOu4 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

>$7?|eIyfF3I;_rW^Rz3@KQc_|5Rk84RT+PvE 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 From b93e8202d12b2508f744a6dd1e2f438bbb18389b Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Tue, 9 Jun 2026 11:03:40 -0500 Subject: [PATCH 024/140] nixpkgs update --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index a2a534b..ba9bc70 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1780397635, - "narHash": "sha256-6WH7LKD6i91VLWoz4mEpoULtqVinCEZxG7ZjJPMSi3k=", + "lastModified": 1781013869, + "narHash": "sha256-XlEUtL+8M6kbPdmIh4sQQ7G02/1CwHQEk1RPvIMEWOs=", "owner": "emmanuelrosa", "repo": "btc-clients-nix", - "rev": "feacd7684dc6bfcd49c57764944a2049bbd71924", + "rev": "9a6c78204dc8961840375b110bca595b1f6f084c", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1780453794, - "narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=", + "lastModified": 1780902259, + "narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338", + "rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1780243769, - "narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", + "lastModified": 1780749050, + "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", + "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1780646548, - "narHash": "sha256-Ckyl/l1XBmEwnaHcHD8PvBZk1uph0NqwbJ//CAvB7iE=", + "lastModified": 1780995253, + "narHash": "sha256-6Lsoyw2XPvY8YNMCtPnsyw0JVVtHsXP2xtrFJBBTAOQ=", "owner": "nix-community", "repo": "nixvim", - "rev": "816a15282e58678dde831477964987d0262d4293", + "rev": "43a7e6f82978ac975c3bba6728869b231e7a1ba0", "type": "github" }, "original": { From 57b6d7089417f86fe79964460bbed159fa34b6e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 18:40:41 +0000 Subject: [PATCH 025/140] Initial plan From 2c5917e8d493a3f0529138aaac9957fd3e460744 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Jun 2026 18:41:49 +0000 Subject: [PATCH 026/140] Remove orphaned ./branding.nix import from iso/common.nix --- iso/common.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/iso/common.nix b/iso/common.nix index ef7077f..5974f47 100644 --- a/iso/common.nix +++ b/iso/common.nix @@ -16,7 +16,6 @@ in { imports = [ "${modulesPath}/installer/cd-dvd/installation-cd-graphical-gnome.nix" - ./branding.nix ]; image.baseName = lib.mkForce "Sovran_SystemsOS"; From 519454906042ed2331afc41ef82492719441958d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Jun 2026 14:49:39 +0000 Subject: [PATCH 027/140] Initial plan From da03832c0e307ebdecd1e5bfb4211487382f3c55 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Jun 2026 14:52:26 +0000 Subject: [PATCH 028/140] feat: migrate Matrix federation from port 8448 to .well-known/matrix/server on 443 - modules/core/caddy.nix: replace $MATRIX:8448 site with .well-known/matrix/server handler inside $MATRIX vhost - modules/element-calling.nix: add .well-known/matrix/server respond directive, remove $MATRIX:8448 block - modules/synapse.nix: remove 8448 TCP/UDP firewall openings - app/sovran_systemsos_web/server.py: remove _PORTS_MATRIX_FEDERATION constant, set matrix-synapse.service to [], simplify api_service_detail to only check LiveKit extra ports - app/sovran_systemsos_web/static/onboarding.js: remove 8448 row from Step 4, update totals to 3/8 (3 required + 5 optional) --- app/sovran_systemsos_web/server.py | 23 ++++--------------- app/sovran_systemsos_web/static/onboarding.js | 7 +++--- modules/core/caddy.nix | 8 +++---- modules/element-calling.nix | 5 +--- modules/synapse.nix | 3 --- 5 files changed, 12 insertions(+), 34 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 4262ea8..7535467 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -281,9 +281,6 @@ FEATURE_SERVICE_MAP = { } # Port requirements for service tiles (keyed by unit name or icon) -_PORTS_MATRIX_FEDERATION = [ - {"port": "8448", "protocol": "TCP", "description": "Matrix server-to-server federation"}, -] _PORTS_ELEMENT_CALLING = [ {"port": "7881", "protocol": "TCP", "description": "LiveKit WebRTC signalling"}, {"port": "7882", "protocol": "UDP", "description": "LiveKit media (UDP mux)"}, @@ -296,7 +293,7 @@ SERVICE_PORT_REQUIREMENTS: dict[str, list[dict]] = { # Infrastructure "caddy.service": [], # Communication - "matrix-synapse.service": _PORTS_MATRIX_FEDERATION, + "matrix-synapse.service": [], "livekit.service": _PORTS_ELEMENT_CALLING, # Domain-based apps (80/443 handled by end-to-end domain reachability checks) "btcpayserver.service": [], @@ -2983,28 +2980,16 @@ async def api_service_detail(unit: str, icon: str | None = None): "status": ps, "description": p.get("description", ""), }) - extra_ports = port_statuses if unit in ("matrix-synapse.service", "livekit.service") else [] + extra_ports = port_statuses if unit == "livekit.service" else [] - if needs_domain and unit in ("matrix-synapse.service", "livekit.service"): + if needs_domain and unit == "livekit.service": if has_domain_issues: domain_check_steps.append({ "step": 4, - "label": "Federation Port" if unit == "matrix-synapse.service" else "Additional Ports Required", + "label": "Additional Ports Required", "status": "skipped", "detail": "Skipped until Steps 1-3 are complete", }) - elif unit == "matrix-synapse.service": - if extra_ports: - matrix_open = extra_ports[0]["status"] != "closed" - domain_check_steps.append({ - "step": 4, - "label": "Federation Port", - "status": "ok" if matrix_open else "error", - "detail": ( - f"Matrix federation port 8448 (TCP) is {'open' if matrix_open else 'closed'}.\n" - f"Matrix federation requires port 8448 (TCP) forwarded to {internal_ip}" - ), - }) else: extra_open = all(p["status"] != "closed" for p in extra_ports) domain_check_steps.append({ diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js index 2b0138e..30dd1b8 100644 --- a/app/sovran_systemsos_web/static/onboarding.js +++ b/app/sovran_systemsos_web/static/onboarding.js @@ -545,14 +545,13 @@ async function loadStep4() { html += '80TCP' + ip + 'HTTP'; html += '443TCP' + ip + 'HTTPS'; html += '22TCP' + ip + 'SSH Remote Access'; - html += '8448TCP' + ip + 'Matrix Federation'; html += ''; html += '

8mw&LBOu4 z@Ch6YEJErN5rN?Xdd;-URydv)_3XS+eb`9%P&ft-!)&! z^R{|x{@eTa{++w`*7^MBbLY-?@4v!+f2B~#L6IW;i`HCuEsPxzhSOQ3l3bep&i(MB zhyQ!iy!Y>a|J$cu8_zax|Ms`<^M9MK|GE8J^Xt9$9Q8jjt*y}y*tedAO~CJN`~(S! zWOG3iCl?;3$p!~GwsiXbUz6NYQR%qmaYoWMLvtmzOW|^hGJd>D`SI$>)BQhBUi|;@ z;LDQ}-wX5ivNYbEI-w^ZFWOQ#pV4Zja_gE6_qS{gQ2nXM(4@f8bnoS6arN_YPSS=y zJ;JwmP2O+1l$A4nT2pS#Jukb^20Ny$yStt(JLRWJ==0+( z;r|XrrZQHov)h~f^JT%BNmp(y{BpJDx&AX*^K!@9bv^fYsd4ZfubOyjd+{9B15=aT zcN-el<(L1Q>)()9&HieKjMTL5vhda^uOt_AG|ZUMF=M8Obn=#Sei0QZyYkX*2&^xx zk$gROX?F+5hT@71wG|8rCQ>(|}hZ97}^-h*NFJq0}- zCMOy^HIqJy)VN7_E;)LyNG<8yncKqWFY+iY+Sqwa=%u*X zSA;SJ8a3xH@^XE>itECO>0f*-JiM5f=Wbmox5AR~*QA>zjJpDVtynaF4#$c=*Elcm z9ltc?7}w3)C%ZOQgl67evS8N9h%mid)-tgPag4i;xg@F<7Ft|mIxDo`cJK8+7xKO= z>=O$xZpeOk`MvNJmkX=XHhzz8biBAkum0K|;RD@|nl{IMntsN2eJexb^WQEqu7UR+ zx;-wCz4|1y=g!-6I|G-w95Oj}>wWZb$uM@ak4=uB*8jbq(II)aUdpbb=*#pRrDt;+ zwpAZ|>sXMz`unl3_vXI7ch~v-yTlE5-{*cmkuk%=r6eQ5!DZ5wIZer?UHZv6Q#wUN zIC(l0crM?*zv%n>y6=0xzx#W%fByg9^XL5e&3~mkam&^1t4td`HKyxKeC670A)0wk zq<`U~#_5crx3~oj1+$h<*QzOAwVw-wmjEjr4!!-V#$7asZ{3!Cc=v3iCli>Nf z#!(Bl^=ZrW`7WsZyG!fpg_Y;~d>1^@v}`|ok!cp!g>}!Yo-Ost&)d!x`<~xVNZLzD z%rI%m8{mMDh{b}oMI5_0|X9^C1;{yFsgcfPVc&2tY< z&&#iUx%J@myxiKC(+n>tDHt3#+Q=LINLu=STIbxt1_wD!L5W6o4I_zG!I{gWjefAl z@BH}n`uh6s*ZclIjknqJUEqnZCR3q~gLlr6S<`1uZc(oc$S7a3=4VV=x69I{QVuSE z4x}&LV#vjF`-jhZKHa?F>;5+@wtP@w?dbGLv#eWMylQI9TI(QPLfGl})RwOGPv+KE?1_F>Wx8>5 z)6CL?iXLz0ue`PDozwA^mzOUpd~)qk&4PEQmNE!mG(7F{XzpKIQ5LI9srT2+OuF~3 z=u(>6+p49{p5I_~yxV)mbFs*OZH0wDSf6S19NL`txkaXmo`V6h3o}UFzpJX!-V5@Z5n|=FszTCXO z_olNgzj&@+-tObpo@28#n*w!M`gC_{Ufc9|ilX|8^A(G}ed3C~Xf}I>h<5+aKVM9w zdPNE^O`0};lSa$KS6=Iw7hSrpurxw?az0OSZD{!?z4)2xT`uW2J6wE%imTPQ(!aK= z9bB&>)4ter&8gBeG7q1~&6+7##s2zg(dP+#YBx4=t||FtlQ`o+*Ve_VYZfgi-(z7e zv|#;(UF(w*xr(cl1ZFtQxnc3FKimAO;Fcn*Mh!FWtzOqvSDzPtR9~sf5Ue_F=Db4j z-k{VKWw}kAGq!&(3w`if<5H5^c~`#%vFm?K7AxF*eztVkwS6xC*L+l;tgoQ@b*97_ zodC6OPk0WCXnuZW^Xt#ekMXsCe)Ru)_GK}9?Zmlj-v;`BW%6%VHaM6p!JMpdTi5SV z&@7Kj*M8k%kPAGZqQ+&rcl+Mr$K`dh@%7&Kt9vG2j1+M-s7+&Xlu%LFD5t%qxqsCY zzlnvXo&FpZvF>_%=<#XIFovqQf~qPZzT;YXDPF4?mI_#1ShlY9mfQL#{4q@TuSYF+ z)p@yKh4-sspGQH*@($hH`@{cItBTM2l`w`y_ll~mIfA4nazHosB%V(^z5^Lbn zDsd|eU-L^SMj%BvmER?yTA8&cqKnP2vDnL$K}hlM$&)|M%l-Lt|6l6+iz_X;ep_GX zsXX?*=DfJ!waLYgR9Lp{3HT&d_*dyVIK=g)0FEa<&%>cU6%H$B>W9;oJQR?L!($ z&-A*t-E?Zb%RRm0l>da70G%+8-TCZi_j)HSKAb%*{rSEFMh`7yWYb)kN{qvW!&e4b ze!aPo^U93LJ0`uopf^KTygyhZDH@a)T`tIn_3;L;N+ytZ`x{rmUsCZ4}MQ7_tIy+v5x3@%Z# ze~V5X*>kL6hVbgZ-)*f8H~vJnB!)i!p~xu2%%mjzEB)6Ob^iJPAKd%N|GqzNPRF7+ z`vAUC<>&^no{i4Y@%uJ^|MoWBzkl)a z^;NUny%?D?RAyDI+&VESamlJHzE7?monYhL7}2OcF-~7%-u(V{<=x$nzi3!8?rK_M z?)4<}+FlN_@wZ!}CDXom z^%{?cJb|#UPXE##T}gL;9g+F8xb^l%$C5o3+GTbNWKSC>&TwZDke=w$@a~0x-pm4F zL*tGf!?2!bM~pU}I{WVEM6KN7^KY)Nv`g>b{yfEAd$XjWqrSwOoXN)nvlwIVSe)4? zSEN<)=~2X&rAH(*>dv3^3Nma6dFwN;c*Fl=MO&BHM`Yfbl_NCc;Ki32U!GjOdH%ip z|C|2(@_Q`gPrqj09X# z_raeMfiE`aJ4|Fy*miHJY9y!Tl*3PadoTWV4NKKBn|tlkZgH0M^z_G{6^}=o1f~6s z5^P#+B~RZuP82la(dgQ!dIWy9NF>h@I|SxfX}OR7R&T)GfJQMzM`;(fda2aTt=?CYn(Fd5?Dd`3wdh30 zNPStde@%QQS`Tu`77uR0cy-&DeiDI&0*9qlkPgX{FE>5!V>M&$*=<)EVJeXbG zoPU3BUB!nd&*f)tyf;a~M55DRVv=?7lsT*8Pq}Y?b7^AH?$l@Y>m;?bPLvrg5NCP* z{Q2X}isIAWt*E&7WWKgr?(!hT>)jp~xEC3)1e{o(mnLg$TrAOcrp9r4%yl_C-Mx&T ztL|we%%1b}PPql+t%oNJZ#w$_y<;+GR=}!Ui(QuaE8UmPT)n0ORElX`oqAog&^ZnMFIwJ{){$Hg7bhexxZt|mv+WCW z3bJ^U9GQ4If9?Hu&P=m!(TSW6&!pcOWs8r#Qem0=BdPCdT*s9Bxx8i)i_!J-Q*w@q z=hu21Nnm2QSZ(`%Yj*Vgs`TgT^Y>SLG_sOk6?Z>5$i>Y?VM>hYeC;c<)O}}Os$o%Z zIda5n<;4sWJNxv>>qBPre3~k@AbH87*rS1ue%389U9my#R-5Y))*VZpo-d8rIQ8fL zIlp@DcwK9aDUy9?Av67W&f=D1k7ut8Xihe3O?$Uawy*3$PJ+4qIzEeACqr}Q&t-TU zAzS)&`R%V>EFY$PvdK4*GSptue|Eb1(!>%U#$l84ep4oAIN{rr`t<&t+sL1b{KcDZolgCQ0g}zFrj|&R%Jz+Zi5x|9h|DF^N<5 z=jO|9w&8BOvjqUf{tqsfmNOy66agB*E2t2fFN`7&GvG-h~xv`xN&k9PWO*L`6 z{OWXy=%LEZ^+JW)lwbJS`E@_6q7GHH-I=TXVD$;MeAYyZbyi>R z1?^s;CpJlmp|K;f*Ufp8klW80PuFi!oFb+qWY6BonXa>S>Zk49u1nsA%(52l;BaGL zoVcO=#PN65+keMb=KhI_XY>*3+0wJ6$JFiCo~|dMDShtGDqNJ;wnZs1PvlT*5t!)i z<>HdPdUltXVUn-0aB!BFZ6!m;*EmH6rjHAl3SJb(&p6lGzW8$e-|gx3pHEKS|Ghl_ z|MmUL-@Vgfomg?)U(xI6wmoSXJq->%7e9pXUHNDKyRUx3=a>8cTz>Iyy|ht zZxOw(+U+i-8SSw-_8(W=^x~uCxfh;9?0z)kkp0W)>)stXbB=qFNA}Si53B62V&U^{ zX#G1h?VZ+@=Y5+aR~A~B&G=NY=TE3;Z0^JBEvNb1rx!fES~&HEUuAr$4=CgD-(49z zHD#BkuyCgAOlYeXiOcj&4cM~tP2Tpv z4W=RtXVy%)6xD6WqNJvyld#6IFt>eL(AN^PsrQ8+`Eu00ZaSRjq>;LQP2ba%Wj}P7 z8r2pH=Dxl2;_t!Tf7;_s_A-k6ef5)>vrGCU$J zyjQ~R$7=bLtBdzkzTmBLeBgfZ#;&Do(f{QNbCY&&T`0h5ywOEDaMrsx`ya2YpB>+C zRaMHBe1gMJaO0CBr!JYz?3`P+>{YDK(Ju2W-&sCs^9l}5w2ip%M)T?F(_g+_t*V{K zT^zl!NJDdncFvb#(WG)Yx~Qs zTdZHTJwCPJ!iUqMNyndEocql(JX2VGhV}u@3w={BY;d?{{W^oc^5m2QM~<)v3cik0 z5dU9ked*EX&)St+)vQ zxE5zQb@rp(V)8zo?aBhmZXGUyx!?ER{(bv?&EE&|d!N@nbl}_Gba%n>1rIKtP-dIL zcF;jVNh-|R?^KQwtLK`3$I9liaLkzDG1t!8YS(vzAD{adnXjK5^zYuZFU%Rv3@#!k zl$RcGQ+a)ulP9oY``zcwZ!d0tx2j+6agNSJ2ahc($IfSJP1Iif^vx~}MyuU@A)FUh z{<6_tu+??r+cOi37;Vl^zOns>=sDxlLI0NQnpPQn_4$(tkJ{6g9^t&e=ic};E9z}{ za9u>`+gEkEbEjUv>%TBLc}DWFn4c;O4qprsGtGMGvQux>`Ioad3E9@mSuoz(C{*+` zfU91sFUQi-v+GS*wo8z}g6XjbV^hVpXjrd)_Il+$w<8*kX;*PJul7nc(eA9*R=;rilhyXafo!fJ1M0|tl@clOsw{2)&JA$ zbNBuiyMK4`b*7}|#lg%M8MY`088qLFW7F6smXB&KS|3!jz0zIvhYXLWpn$gk^V zXUZ1T^t&h=YyR}m&_ZPHl4%SY9u5~0S9r?H#T*a6$05J3Lr%t1C2dV7r_5}B^-Qnu zSs9m>A9TI4c1sgSKrZ85AI;oA>w=FWn=-uoIy@e*N4bj&EZ?^IO&*)9cEKf;eb;u( znI$`CuF21Je-1v}p=BZ?YaaJu?w^H`p?PTsE|$KzcV_k+r{kiFcQF>a-nzpyr7`7%)#6=HOAmZnbMRKH7rb_J02ML zHN-JbslK7GoqGWTli;F*;`~2WU$2>O`SW6mSksi~+dltYb@-wu#|jD=bT~L&xc0nw z!5O~;<-h(-|IQY_XY1dqyWjl&b|*V{|U=2vqaVKNfnovUK;&z*spNy7I2n_uPkDjxs5y!_!}@g*X%o^>rj6A;H9P=y^1oji7V$$j;Vi@p;_d5DsAbnm>;!u za~R%6Oq;`-c&cfiSaj>%9cTV2Pt~({#f;{r~It^Zq}G z`|)PVq@o#J-X&-b#| zubkhUdEA6|O>ji_jp&RSGeuSx$n>2* z7kPa8xu4!A?oPgDwqmW~=`~+ui(du3+>})M^U3#ZJvT2*3JG?9cD-vg|0;gOyyHs8 z^!pxXC!Tf6Q+@p=!)k_XU*6_`!g&VuWvtgP3QfzNZyi2C{Cilewu63;@B&%yiMDcj z0vxIQugl})H-4M9?|uK_3%}ZXk8XXnIDOT-U>>dAo5f$*s3a*onjXU`k44Rc!D)V9@!ocvEvq)NiQ3qy#M*}yc}D3*;n2$J404aMsFoab_c~?&AaO+_9ZFByI$6xL8jrD9x zo1lKiW!d}w@+)`E?^#rSN%`^T#PuUS3V!QVS@W-icwPPF@y(=H`JfEbXi#=i;XI%3NpLg+W&5HX51$|$1^c}+ckID9}b`L!` z->^8>rlV}?s-Dw=$B%A!amfE_+2aD%>lX`mExWDbow;nwtSQ!vw>FB*(Viy69ctNq zd!P4d$8*IZk=DKM_L;ZDPq|X*I>FZd>W8T&F_zpJ>JIDYTYa55 zqvIflNM`Am&+5+}pZ__1dAj_bj=C}x`MEFR?ab%fUF7dylz!Yoc4gramUoqzg1xL6 z$$NFwznd4%;!%5@d`m)b?b?YZj68{qjBTMSnEqco_boi1H&3p`_I`Dhm|FF}i2}=6 zb?z=TFgq@``?=yz#shnQ9~QT-S@G>xbo@@viAQoh{0!6#JUERz4jyx1TWERb-oD}= zkDC4eh$kPJeoAOs`0UL`H=C}X7x-&EgTQX)g-N1q4}W}_qsIE;il=A0RIhi#CiBUU z)ta7HKQ7P_*cSHZZo1Oc;M-4TGL|&$T0ZfS{PKTh&mR@OE!?VDVqh=ZH#NZio~!TC zj7!T^_byRx&rXvOcSyV!{`qmuj;7Zy^kOgPPILF#X4Snqu{B`N+_kBP3t|#ycqEj+ zaGsl>+-k3zVwA?>Pz_T3C`VHfL9}o99n> z&)e?2_HgL&Ppg!d?w@+xBj>a943D36OOy=+nPnQ9I2I{(EnwgiVeNYVZq@d(pKD|H z?LNNS_8xCf+r2fsQsSYhoX*m3tj00T2u+pOCEKO6rYtN-}>RsEm4ua~%U%~Mlk z67FgAw9z@TTUM&caPPktFXsGv_F4Y_=X%>;4?e$rTkG5@oMpJP)X4GIlKi~68t1vP z*P7OCD?gI_RP$-|zndpte!To#MsndL&Hq)e&dfY+EhFt#>pG>&KbYl(W@2e% z?Yf@tT|$p%Ngm&|a_;xDkB_dYS)sk7Z`y`{-*@hQvYxr==2eU3?>ztA-Sl_H=7utz z)>yGl`3C=ar}VF%?c1Zo&U3nRcB9m%T{k+-36Xa zb?f)74OM^Dp~7$pUj+iI4I@E`m0BL987 zwd|+g*W2a3K6Ey;QDvI3<)R`3*9S(4vy89H^WMqH%=zP?m*1PkH_TJih)!yE zILkNBqWstM%JbzG>tsTwCVaBi+PA)6Slc%|p_Kl<&-Ykg*aH`Q+1I$O(=U$uAGZHHb>H_Ods|66dvUIgnp;vg*8ZI_qg6OH)J5gqHGzcAx3z0e zZe1U8f&0fZz52(#Kcc@BNVEwupJ_WGQr^`ad{Dt}+0wlRzpm=r9g?_ye@F4I=Np5B zUe5V7XC4Qm zbEP?o@z<&zmZMvF`}_i9<2HYN=bE){HFIBC(bQYdmzi#lYw+72`Qj-{#_^yddKL^y zNzYny)<>}{-5tc)q|i~KGHDtAN`_cP+j!2?tXli#Pu=z;u{Wea?SMm5-TwWi0*f@d z)}7n(c+(24?3LGeZfI%mOqURfwc0ng>BiRLH;%JB4hT*(G?-XdW%Tdo8CgQodL}Kj-K5OdFX`n++!# zrm$>K`{ZP{&+JrKfLP<4>W2&8@!MDZEUKt^J^TH)8v7n6h6han+6vAovaYiq1}N|O z)~o;O@#c^2^ScdPG|cCmOAWG<){aS7E5ssVno;F{I*%UZQACRG@1K41WBzvi&55Gw`5K~iuCrBVG%RAsHCKF-&%1{8OHAGonO=>1Gu`&BnG~F)-`mOl z{L-?k9~W+`G7vOuN$7AtW_|V3i_kCK>JN{fcek(B3G}#bE6CgU{HN0r4j#dY9Bv$C z!Cnn5E*xDRj61e9Z_m$-y?yW2$NBaDes0~kUfI`c>GkHn`qNdECUPvEXm-B8xqp89 z{XLtvi)ZxP=DL>rc5w5vRlA}7Y42R!|Hu4H_}uM(PH|uOaZgEt&J^#@EzW(P?q5~h z$l&`?ttFWC#o4_4Yrd_Yc@KuDFMT;PyZdrdz#NJ5pM&|Y&ozHNkBQM#EWDWO_|}8w zKOYoq>7UB8G-F*snzoOywS-UG1=DG#pMxfGH=0y4)ZePiV|ut|4om1Y#Y`!|@ zRqWa@6^Fw=8{*hM-qoCTWtEiY9N9Uwkvl)l-1S7kK+w1&k%2d8U*dTV>9uFNH~#yg z^6SCJ59i-Gp4h+p`s;kj4NV#sC(a1q>5%AgdCAu3IPXA^D^z=XX9(;K4tb4w_ zT-(C)a*duA-ySMWvDmNJV8gWWeV{>2W!bL>8Q(vCez5&rkBw9Zzfz)_=hNpu^qpt0 zSaI=fORX39_sDL3`@+6rUyey@j6&_sZwxE!Ke=r&E2CBY$s5XDIVH`T>yoPL(pJVY ztUh`FTWa;5wMiGch1Oqt+nsFt`Ie6lZ|0-epU%ybU+;Svw9HDTd()AovnssL7^I)y zujHC+w@;?;Td>}y@D-=5)(Obw%nuI`)tvpoT&BdD@zzD9A~Da6hr51d*1n#xMR!YC zhY!=mDB+AvN@YO}aTE2=tc(wnd&=_SbmF0vE_I5kl}EEgpYpByws>-`LDYrSt|xwd z^q8jEBXB@@ai8yVhihw| zK0D_xKX2~*#FQi4Ek~@p)K32LPHc2gm?-IP#nXR2&aSrf`Ck1!x0I9r`l{bs<1J^x zqQd65Uj9v9{jbIRS7&b2oW8_*SxVvB2@B2m!(wk;YO^gMJ@;_(CsyeXZX&@wwI){Tj-)wB_8&ODaD(_tiADC#j7F#@b7_ z_Q_|R(-lxv4{f=ewP|mUctz+VmKWcQ&Kqx8$$#h0-g8zGUCoP27Mfh_Rh{@I>G*r5 zhMuVlIhVB58X7!)arL}C|NeUUH~qjKaP4NR=OfLRn?xOFs9X|~G~4&`{)ff+ zcdzotuPPSKR267cQ=D`rfBgoD4u|T-Pc=*D^?zM|u5|vlec!B(Ds!c2{rsugaKyo- z>2B_wy&Jz@viW~eJ?xC|gn(({A#!=@aSyHs-`8e&ap$PU-{n)Jj?Y=b^o1v#Z*u$^ z&F$iO^K*ZyZQC2F*C(qf#{KfJF<*pF!?7=N>y>}LEYLYRhw00t{bd=;Hi(4#-z_L< zO#6CXH0F5P<*VN+Kl)xT`t5MG`sAPas)bBjl2rqir|p$|`YSzG)w0qmnq{Z@EcHJJ z#r$&gD`S&V*SIx^ffo2NiP#nfzdZh^Jj60f)oZuOlDx~jM;PvDyqcS3Vx7|Wk>ngi~!6KI_9O6k%N-`5K zeR(i_e%$N#`+m>;?*E0ek;BX7$dP-dLaB2ZB$f%J{ds!*kNkc6-(QOTD+{xXj?2DW zCo;)9Yv2Qw^W=FTmCHQCxvVGhGyo~3JoygCgXes<1XC9_m>zwT+H zx5b}Y`i`6zT9WN9t0`9e>TqveY(zucpGSP|zh~UkHI+G`m;NlK`jOkp^S$406HhEhBv6Y)C`)G9wt1Z9+fUY|yM#^MynlLD z$#j+%TUVU#WiDYV**)`a=u{cukk{vTItwiqbV_mQ=~!OV|2ISBVPHkg`^+Dgmw%Y@ z|Jv3I&hg9B1y$~*Oz?Q*7rNzG*@M0N{F!H@JHNjoEOB<>h6CaniZ5J^)L?4?78eCh zRs3w2@_VY?-wz*e?zWE3e>Xv+L&)&hj4P3jGKq@>+_dk!de0VL|M_J6pSkryoE|MR zf>ytLbjxDta#Cu#HMb&CdPMs zR>lRs{IK71R^~CyQdTultTnaK{GZ4Q4yj#H&D~os*d@tZ_io*n8n|_S(w}0xt833S zl)9YbyfFLVlJj$1_Rre-Drf}*)2aCm*W`@TMSPh$EN!Q!tN%Lr@x@{F^1Qp1Ti<)1 z54I9YQgoG>F1~v~_R<`+htjwId@JR=`s4EAkCTnJJ{9C}OK><;xwDsnHL*j{^5^9L z8-CxuFSDmmBQ50w2ls7RkzzwtCgBUg54Y_qefuH&{(sKCwqxHtS{MW;)?E1cdd&u} zr*{O5Hz$R8^|~+qI8%5*xZj+~H#bc7aPfJQwQ|mMlb@NoJNJexI4R`kdGejd#tgZ$ zLAK}TMwH!y3=`^2%JhtxpDvr=cx7ggnGebOMf0k{TzxoE>ap8+I`3wB!gl~Lj zGvDn!ONP7li%-7-mHL=A82^Z<@!P&)m38)~;MJcSy55I>%Bo9Mci1kzvaoLI?&G50 zt^Q{?Y-HZDf62TDlY6<6#m@(L8CE~j=(4l6`}yPFwQ~%&=Uq=$RDF_qUQm!FWzBCM zp%%r7k~J^ezHhVt_d(Q^iE&FKW8uO5#>{d@Cb&E{Sn%LS`}g&KkL@nubxM+O*?45G ztp5jw#mA3W?b&BuSM*& zg&!@`uFg8!p|SKx#CIJ}>rk7;e=^@PeNlRA@bui8zUt_in>Z641J;F1@7BHYhv|#d zFYETjzCIVHKU<~0)w(`Tbn4E&)hntj%-9QS=O;7oSoGGQv0MIfq^%p1q%I`9^W+i$_*71u;e)dC&fLt!~hg z(v;c_WevM>UY}xFqxLWL@xip`&+V>gdQ4%FTW@#cmfOj27MK3>=j|)jxledq-6bi~ z7dgdYjaH8H#%Nig4v+79GH%!Zz4rQi{Z~!DD~zx8yoFdUZ>5sZ8;>GELXvdbSQ zi}&aMKQ?{u>*}}+37#gEIy)nGsj{;x?E~1W=l{9Oes8s+p`eAI%c4)Bn-h}0U#e+4 z*ZkyPYEqh?nWByQXFGTD#Tom(t_QJv%q8Xyy7+ zvwg?Mi&r;yt$Z|nZ9}JdZ_4#pCd0-WA>(7}=g-$yUXj+=^^&)iWzhl#{dLVMPA4aG zE;6+--E*wk{QHZO9(#kj{uGwv$*L=VlbLICn8B!Pi(&Kh=Yb2Fw&%ZPv16F4@o+=a zVvnk6oLg_*z9sqiD!;vo!2*UORi&;=m+P#I6pUDAz`=6H=ZM$Jf;k))LiU8Uv%J{3 zV@Zfcn48OyfV!6(Z(aSc>h{mjE$2f&#;DBs>Az;>_s?}#fuFv)AgQ|TT zs`;0?_P1@iX>;PJzF%bZ?h7|x+wSx1IDKTl-IcF$^XJaU<8@iF-DHmS4_Ch#f&0Dg zpS#?7^>~``uB9)p*w}4*rL9vmb!pO63%Tfh{3~_5!xv_3>5DW@0Ij9kFS{@2(`;Tb zbGbDhWwD{_*M43t`{dc5XtCoCq9qOue(qVO<_q5L_z^E~beHM*E2_nZynK#?1$)^z zoPV)y<(KlOJ|}BlYm~oQ$-6&>dE?q_B^#x0=?fI&)|=nBr*_mTYdJ%&m*nE$!`qjA zoF8wfJ3nMP=gQyDmoRIEoV)RqQLvY1exH0zMSl3(eSdGwes0SwBq&>b#Ia`8k!*=Y z+p6z9Jf|TgYhPLMH)j6J6IMlPyE&PUP8Vx3oj2`r;*T#+KAc;7QT$sw*E~QdT-B{^kWk{^X%Dj-C#qtd0Xc^zhf$YU*n7^OI6{^F6(_MWihsO zGpv6s-IU@MtNAaaBkSxpzwEB(T#;M;&N<1t>U{5`{j2_&h(DrJ`T){NWzUPWq+Go~b7 zb8EU_{rBhP#fzWczF+4p(Agr;^!0`h!$bz11i=>`t559T?a%(_$9nq@OW1dBU!Y=s z*z3HDl7Ui#k-mGs{m&n3>wnFis1z?Dvir?~A15phb*U&Azgb+K{r>9zV*f=G8ul3f za7jKFC4TB}(8Twj4~H^sN!hyM71!%E7kF>YZ#!eux@*a|$!qyD3^(4bi8Tn#Z~T+Y zz`Z9ec6H$Y+f0nRw(xir?o$`^w=+M@Hmf3dqUz-5SJE!+`I(UHQu+;#&9cNBZ2m zLCMoH?3WiSzABda{gTPW?%(RS{^9x#;Y*f^9$hl+YHxj*OX8lu&&i=1*U$dHt@zud zOAG#OlM?@LY8+gfSNvqT($d}&%lhU`_f*oAKjJdsr(>Is^#AQq4a>gF&npsrbieC~ zZ^-38+f9@eSN`0rAlQ&Jdq>fVr2^ONCPbZQx_k7Fp>^YSNq+{7X&j!;pka``tj{#M zqBI=*r%lr|PfBDguZ@ZLvwVt*m%i5mPxIo!oeB&a_yiV6oU*C1{B^tfVfa0(7w;F! zAIMM*5Ks_HKLJ+H`z6@2AtcmwOV| zg*Ar^#1>3`H+z!F(^=b1`PYSA|7Y?+tkU!Cat1HWT%RD3RZS~@n;hjl`zYY!-7^Qm z6&OU1`mg%GQtOXoTmtvr4^O;boi+&Fv%2%N$*R8j-x7BJT{W{RLVT`N;EFG~-%f9N z{M<9&@X*mu@zv~EdYigx^87->%)9>InI5~w=1kw)C!MX!k~a1wZT#UQyW-q0DS_Kt z&)RKxb&L1>E{<7S=Xbwz+;r{B(rkm`?f<>ME&phtlDYLcuj=*KBZrsx6t43-{ZxE% zR8+b`q+EWA^MOvM3pIc4$IZHW|J$QS`?=DlUiihaZQZ|fD%YP+OOq{Kyj@gfB3FHw zlTBU6@$ZH50Y9_WGsJ5B{i-Oy(nq5k|xg`fDp8xamZh`gd z_o~PDC+wNr?K&?apsk}(ux=m zyj<+c(ms=&wLGr*9-ZSE&sf` z8~^uX|4*G3mEAngw@2!&`LIsoI77;8fg*`M_jG5YNoO7;ZL}$t+4QXH&W^t`BkN{K zGR6h{&g@}vT(J0LSVoxjezC8TrB}=T{mGZw$oX;YuOqv9W^C#d6nz|T$ujkd^T8?F zL0_+*oncY8D{4C58}D}0^UqEyYcGnKXMN(+%eg!9^!{h78$|wGd7^!1#1^G1=KQ^n z?7ydqYw-6f#jJ7{mJ0ZqUA9eEVE##i)$5HWRu;zU9NlB~dF8K9m-Q+WO>*r|URjp= z>$TFP3r~zpx7Y8KP@8)pW}!$;`4eSFg-Nrn#1t8>Of7vpU(_&nPoUn!pVNwe#pXPI z!+L=0nEmvg?*CdV3jbVLAe$HacdqBfhe6-Us6IlM%)n_N@F7Rb%d68*(?cA?w%a7}MJ0}#M3Y5`&ekUqozT||97eAg< z?|*k^SM9dftLN^MSi6>+Pr$fw%?26v$NTHfGV|Kk$;{$9R0D+#I~8QV{N8=#|C4I_H;N~87JSyaSW~?D<`Ca73ErRm zc+w&Su0O9Yyw^O7pEqKKo=>jLtf})W^>=zyuCR&As`EJBy;XFj-4C|oXQcmU#)lo- z@bdwq=g*mP-xj_4}Xdtg>A7 zE7YzyRpsL{pU!oi&a+uxxFs*xCbEEYoyVW+>73U%wEmtA^;z_2_A65ZO|A=TrX;2I z7#>^V*3NsZ@wG>!=Kt4h0>O_;6b0Az)_+pl=#t*xu#xr4HHVHx8b%pg8Rouj+ilXY zd(V&SrP-b?ldd&2l)Q7ysW)I~IpFj!@XMRazoXaR4`{ER)my7~Wfog{_am025${ht z`1SSTXXC$*rfm7TJu!Dy&et?H;Yznf0dBYT&zTl{IIDkX@(m4jaeHQ$qyqt6$JqYm z-T(jL=*z?5N&-ioU1?bp8o|7gzbZ}CPke#*`)dx5zok$7*vjO^PYY< z{oF_Yfob@Jlk&^smwx%XXlu>AKjuHJ1LW_ror!;d+L%q8(0QUmMDCf$)9Ps3_s6ty2IQx63m_7kGUk-B`x>Z_55_$e7{4RM$9v z<7cNg6t!sY+tu-rIkbMs$%?SMTj#v2TNe`ab~e{C4gpiv+SH}{zPT;u&o)9@zDuOn2kEJbS?(*%Qy1pXqM@EN|b-%KF0XFL&2XCQW1QR>$v^uq;)@v&wl4~S7s@Dzdl7I+WLBy=E=0? zuyQ4bo)fFSi4|MOaBhn_s(&))#ED<+TIa$=s+%{fr{DYkNBtrHyVv6BaxM#w8(ll< zF4n>9oBV(6gSqve=3chr7u|S2{ae>%1;wx@?8)ct_kI8KbN_G7TDvdpEDbGO#tNHw zrLII&`&jS)Z~E&J@2g^lprbcUk8*YfPunZAbxG3kNpo9FJJ#2#wwrVdPrNoOxnAey z;WfUGH@?u#Pxm}2`oc2##lI1}M;?GYFo3CqiR1rG0kg!o)pzoin!Vuuw*2YT z_BTmC^;sv?pACNI)&BJAbJ3878vd&WW}ju|+wfgAC}}_Zu;5HLXgQ6bJ(F9DpSD5g z+4i7Q5|fSV%PeG8CoU@N*uTK%oM=bwuLA-eo#o#?y*Ro5*XzC2&y&wSVz*7?Z@no# zyQ9N{HUH1I>rM6*!Fd|Oy)Gq2x|_w$Fb(ok@$tbnXQR32PorR;{}?yTx$tipXgvRZoh)ed+GE zQ+ef`txuSO?nNca9$xdS!p~cFnQUZnjjP)e`)-eoCQp6tOpk6qeJwvcpmI~i60f4D zhnvl>PMI7u_2~@ty6Jb#&b^C&c74I>!#N^;ez(`xq#i#LJZ;m_pPs8zoRqSTPdt5e zeWvH^h;EG)=e0HdJ}ol(-FLRIrtCthxLf<-hc{y8FuaZEideZcr|06@cUH5N1Ws^W zi0XbaKW9eq)B6t#L{4Ugdb)bOp8G`2|D(^r4hfEpKeFl{*mv3eGp|>iFL!Y#Cy(~R zn$i?mAr7q{J$-rqrr&?Dcjwx#0X|b^Kjcs_V6##Z`gY~viQiBEfBP@DzecN#fi3#} zxt*Eq5#>B?Wq%Lb|FDw%qI}U!W%jekt+z}$rXM_`GynCx2=0tWt2B$>nXbIFtp1rU z)9E?V^JgV5WVm+Nsc`2PmMQc2MNYP{blUBjH}%C&cMgxynV19CSo$Ax) zPtMO0`;q;4r%!Hf#lu}Hf=`z|7majSzwDKdn_{T?=DU1pM>qTV&)L2J`72d)!>e~`hv)q84QyM-T@;qM^3$P>3_+jkLXTU^@U(;A?GtCM|5v{6eE&a0J0H^M@^DZ}X}P1b zjC0C6%PoftI>Sslw@M_7Yszg(mIrum+_^JM+(7w5Ef;y>DMTCCi7_r;}m#s|-wT`weV z?zPx*{{2ID_Rg*?esp#FG4TzBvkO171UKtUUHo&V;J+uV>C?A6+35t@Xd=;CpUb*RQQ4EZ>o@-M4#-%Y{wy(Q+w5naD|<_equUQZj9>>% zLb4v8ta;trTBc8QG4G*{iYKq<@7?pg{_oc~kuN=`&imFTF$kVfSR@;$fA7uPfB(e) z{GGQ!J;AV}JlJnpq>91qeUdBE>%VOO@$|V(mygPYrzbm^YLq$;E!1!S|0TLP`}&E` zYmE74e9Miw=%q2cdY!=;(e7KvB*L_27e2c(*D6#;kcIPRO6fk%`l5GpgdfN3jGxL7 zJ8}NhPsL|z*N7~TUZyI#K)Q2AwnF{gJu#a$eOTLZ*u{m(@EAvn5NlN*x9&oR=kH^a z?$|~*#x0%^EqJ&_GfL(2b=_I|;daHjtus_vU(ES;$3y1)%k#!8FKTw1>wDgvxz6GI zJML+j(zkswJ^7cam2DND{oU-@qJ%XLbD|%_XqD|$wT)ii+j-i4+ME4Ft2gw1D!4am zT6Xf}4|nfedstu*)>D2{u)sowuYK_}jjj?C(8SOG`nnI<|6k1BAM|*a^55Ic|F5ra zueX)BKVR_KIqk2X>pwo<|Ji=l=PuS&b*+3xEBsTYr6Z z#gjM&4-wbEC2#FNw@3PlxLRGZx>Vdcv+d6N?`vHwqn(=xG z7Dk3o6*i{xulw%5|Nd+B_Po2hYF~eQckkW1clS<<>&NY@`T6GM=JfOPS`$TF14Y^b zYx#WA)6>(dtA9T`JKH?}UWk|GQaRhIFE1`G4tHN4x3|hP+@?A1{HdbFtf!*ar?bBJ zSP`~zTdK~~(oO7Nh1ZLH+|0z3P$jF`>N(TD-9n}@W9`;lMzOOGH6JejxaIvDd*4&h zcJk9S=UZD_SMT0!&d1N6e@B9ct@+@!lP6EUe0j2&onOwTg5g0<$vqpB^Pi`DvhlAx zmDlQU`SX3b^&;9!mu;8$Y2!0@`jfpgu4EQS-O@Tb*>Iz7^YhAipWK4IV=dJ_Z|_~L z)V(>}+O+SIUv`*wIM>b3Hn*8F)^1&=`}vzk{LgvMm&!FQds6@B+^!pff(J89q~^=>4bCL>sC2r29__EM%m8s##y$(c3aN zhHbyrNB+x#7i>-+5q)=jMTWDY_c|-{p8cDi<$wCW`TMiNGSTaEe^`c=S5~hU-+IL< zn)~hAvy&WzI8-(;a4Pc{R(RS>PB`9o{pXRB`u~nfTF;aGuXZx!li^JNp5q4(9y2rC zmczMWW3Rw&l`RWur(d`gwfpMn*LAn=t~&R=f7kbYzvK2#W0{uBSX;5>-tPDNc5R(w z75dfozLo17!*!Y49t-g5a9%z4Df&#n(|rBs+t$~8=DVcC)L_tM#<=41UXkzJEniN2 zUc%nPSv5QR-2JUBjvV#tFLK=9_owbtd~3v%;z#jadKstXmA3eaZJ5sxGKG8P&qP+i z15YYXt-p0Ocz&T+TFEiq6o!BjRfS^?%q;v%0~O5jrhInvve~)+Lh8#U+(JyMOq&{X zkEt*>{%o0i?`mz?>3zFWuQMCDEGx+1Y+;aF#KOWbcR_30(|0+!|Lfe&Pm5t&cg#ZY zyQI-o2KH+!-gFg(*NgwNO8T&lb>G=&iT#TvS}SX(dQMWQeZ2bq45QRdDoUPp+yaaZ zZ!P*B&#|ul_GV|X^|tpGWq%^_^Vd%iF+Mvf^{1jor-nkNrk=cFkG%P}?)X2CW*8=4 zF+MvZGjdwhA|^+X9h;Mn_dPz||NYw+E}^6mG#=u%w#Ieh=OtIr;u zZB0u2`s(WH@bzx?W!w%0MN*86fogOAt=6xvJTt@4slvMaUCob&?V@WMx*ki_HvJFg zah~+&`Tsv3Q%~RXpHx*<_3vB${(F~iJ2N^PUdlXub(Ne=+MgNwf6xCPJV{~FwA9*X z#`9mEPAj#2*DS)paY8~VImk;hMaA&we${glk7IHpHsxB&^_%nN&oU`|^e9^F{0zgz z3l}!Bo-rw{x0`NX`|QiQ*xlvt@0EUdurO$)%91HTzuuT0vq+xw zMd{y*#r^+2P2c}y*0BkS&PocCCN(rjJf35$+3BGdwdcjccDb&jNlTsTuC59_Z~uSK z1P7xlTectHEA0}f%+}h`k)k8EJ(qjp*}2B$FDET6es(5L$}Z-z$<-5Gf7Lv{efuI~ zSM=n>MCI4<)ocHL$z-iup~ZE1+9X%zPbzg{eU zea%+B`)G)Npx_zLzx@l67IA7W70~Ma|Ia*rwn?TEoN`{(cA<3SsRreUpdk#Z1;cXd2@5~>0U>#uD-q| za zWSpL+tL`_)qVSW75_k1{fgq1a)33oQmsGvQ>K_U78!oG|+V|m5_x-=`_RmaP6QRRe z>ozr5XyWtA?)>O4&+Gp^=cxGe<72+vpMvUY>vWq_PE%DnSEN4au>XH)e!rx#o0ok; z`*{y{7Z*<#7e!UGUA2wHev?!#cI)r^abv$N+rEizE+%Jhu-g@UzbhXx(c?($_22jZ z|M1^k{yvc>RM^vVk_vxRZ->lvU)9O-e_yn}-&ftb>}9&&{MtVs<=@1ucyJrG7U0&_ z)jkQXT)t5Tf5NsF|Gd=jvp9DmlK|t)S6`>B@~(fWzt1H37|;H_3;{O{JzXws%RRl# ze>(`gzqxt)-;(Ow^zz@@A=fLwmbGEKR@@r{{Qd0ckdn&&N>r1 zTd(GIFGok)I{$e#Kc_|K&9p3jR(d^lx{sRRMAnzP=Up$|nEku&t##QOi(k(!u3M+) z&!O1DC9kqnBY$i?93l`IZye7?izBFiM=H+F&QCl*ut%*!N-s7naOJwZQCx{N})$?a!V)jQ{&8 zTv~c|(a$@R?f-pTU;kO!blTM`@+|+RU0=%_Ucy}Z^Hb5x$eY!y^*h3z?w#^~b?5CE z-Ji18?620y@5)gQdL5N3Ss~7LGPzRff8T_J9bB7Yvpr=_ZRK|0Ke^j`)s}*U_TPI; z4SBBnG&pg{7_{!?`c#%C@m}bo;n4&0R&7tsKWu$s6W__J(~KU3{M>kLiQ_}3k}o%X zlcn-gCtvd5VPH`95p!a^#9Vpz%xnMmR?N~}PU0$@ssarTPE0H(IZP6^z5N>h#_+y{ z(VJr*Z%7EwbC#HC8~D@2$oG1XZ!d58nH@W_7JoQ#A^GXso6MUe_XZ?-WL$U`|5jrG zBPVYS6YCB0*ryVw^TYo*DF_4{aCC8LD6tAP&xuf)Sdg)c-L@OAe$JiHlix4ZoQy_$s!3V9h8y?#|7+ke91d8f;wef#X>`fpErS`}wBG2lS& z>s_;!`OY#qSvaRUd|gfM-(T@IpU*s0cIP^(^xP)qKzNFb_66h1CdM;;mgy~)uCkGP z-orm5chaGaxyLi@OS9afqm^cE(8>O^#FL$0mg~Dnue2I87dHxTVyBn;gZcCjSwr0ogm&@mi#jViuaBz`$ zP%07?#lUc^;=%imOC|)VO+NWD_wxHapZlWocV0E{ReIT6JE@~3YoAZ--7~*_c}`Z- zjoy~?S~~wv&ec`lE-$xyUT5vC*D@ zLXnASGM8nLA;*$AHkqHA`E734?78`Qk2$~mt!=rp)m>5#u3WVLNh-tGcC2HUQczrY|2VUQV8@AVYt8T5Y$|yf#8UB~k$>;ESK2>o z?iuii{#kHJgF}fSp~o^T^Vyr5++sQp<`nwYzp1{zd5sYFBL)YS6@hBHbG@#bUwJ)C z&F1{3w-Gwew!5+X4E`Jbv@3g-K-`Xr`%hh6W~Zf;lANsUe8t3?H4 zM76_m?(h41egChkjm_-cN0k`8JXcleZ)6J2n9j5$=6b1&`b;0b4vRp?Jdfpu^f~O4e(7-A)uTzvGNoc32ZWxV>N#1((TOARMU~Oim~a15zu&9QFD@>&ntJLv z_qx|b=bDu!Pq}1r_S&^;)22;}&fA%Kex7ag_I)4UY(Bqh9=nr=BKx69T$iQ>74=@{ zU2V)0t6KK^?e_hjPOYx~{_b&1@_|EP3mh~hH>DUIm6)|rg8R`^#|s}OEzt^6n&`3g z(#jC8>!nkjr#770d2HwF%3bTY6?0Da9e;dkr^J&ULzjAQE+y_)M$=#4|MBZsYqwZW zR%Z9n$Ms*_>nk1}YTcZE{^vni0ShArfgmH7V>1@Men0#7zTM$>?gqrqKmD9v-fmC+ z{d*q9|ISU2xo_>kk}xC9YVNw#t0xDoVtB_D5*D!RdF8BSzI*;v-7d8Ia)9}DeDwb> zm;LA4R4xk8F$z0;QZCba|K=l)Kl-ROGt4neS@VWzVZsBK6DdZ$y}qS~U-2AX!LWdl zvC;V5uD&ep)0>QD`pj_pvB5=YVNSnYzDEImJGz3{pK`AAE;X70&- zd1?N-s89`&l34!bl3dT(lnxtQp6L@C+m>xJ&!ga&{>~C<3&$Nt&Tg$U+rlI@Dck#A zveZvG?RTcC&J15B{K$qgJ%9I=J<=I8*=7-r$XhfD;wWA#9qFVvWk~&{x{8 zgjgEZBowVa<60!OYkhXWCcSv}gIz1Q=I>8idZ*W!=M4J}iOVIj3^B(otKZ$(n0&lN zUBo;5`qzht+xulKjl{ZVZoCm&e$O)R&5rsX@&5}xJ<;TGFlXopSk=j3vFH$&;Kjl@ z-!3orpJ(CeAoYAsc3Y;2IS5F%9ZcGo`aa&QDCM+rf6eP7ABF9fukYC#BBroIsk7z7 zMeSoVxcGIKu4$OVBz66rZS}N!WwR5dl-;-a%(D6UV4?Gz!pM`?ml&x%ynOjsue^ET zBbTF1HP2?I3$2{;yvlBufkV59+M1ciZfs1xed|_-$4719k5BGuzpJZz`*~-~!cD47 zr!riPP6*U|o1+qYdFQd`XXk%E>0eiLXGft(OX`h%wZ}ImAFtZH_vXEOZ6I*$vL)r@q`$wvmzI>V{c)eTe9PcV(#8*q)#tr<^-9d?hr49^FOj*5A!SQW zbG!cU?Xl$OIxW_Jbedl5u1D{7xAV)dd+oL{;>MoJ(+>}~>y?z;m^RmIY0%0mI|`H2 z&(FJi%Sutszrso5IeT(M=x&Dx@#;(pjzO2V{I;vOU;Djw!^)MN#rJOCuKx7o$GUo-hMgTs!vlitG~ZX?)k|p7--IFY}nRgY%CYQF^N?$b5`At6BC7x z`)jaR-r-efv9}H^UHa0>S;Xnf*RON4^7V_mn*Te`a5sH1(>UG6zu?@2@B=1VQ}h*; zCOqHe#8Gqkxt z-E`??h}B#<-X-R%etG5(ZOqB=B{O#&(F_ae&B}2+|)Vq zt*gJSH1&@yzgt>5>DH}V@1p9iubRIu$Wcz>agU*5iwKkHIf?8nnY#afzh5`MqMW?k zZ|nar%k96~I36_FxGO(iS97&E6C3+SLB*u%>fbYs)35BT>~hSRmG-$qaB-B|QQ<=0 z%b@boC-&L>e{b*m&9hKcoyr?AwOg1`a_lZ%!s%^^`=`_ym&Crw))&0yUC}Y3v67tFY(WhkHz=Q)4#m9xC_)u_u$%@ z_}ES1zlnGKdDkT!rzBTO9{W-F*#6(ge*L&TGYXGMyngfM&gSa#|CoQDpKGh`nPyZv zS>1Qn!(-CNdn70OES;tkd&_F!SL^#f&pkUkn_0|g+SkpiW*#zH<;fbl+I7lHp}qI@ zEd&kJJeLKnZ0#1?`{&c?<+-zq*J=DuR9f|Zb;ONRzeA5Y%g5YnO5E6M%62JuI983tE>qradSRfAA9Bh zb&)d5WrofM5gv7ph9x1=E34n$(QZFm_%cGxvtx&qX`qv79g zIVoJZAubx2)^lr{w&VG%%X_lI&YIp&JoQ4J)xs{YUT=Hy@xJ+MqpsepG*p>0GcD)L zjEnPsU0J@&e?FhfTH&bwr^WxDzP|6K!9qx{;MGpAq0uhr+|kdl&; zt9fwne0Z;NX=Zuil^kTXNO^`nuTJ=bwj~WcptI;r8#!W&iUt zjh}nh|6A%}WSDfMW2*N1mv7(JzT5fyPl8d0gX0P*mI(`XIaOEx-k5w`&3|UjtY>q} z?^V9KvNA?b-XwczbIZ@SLjCH`&dwJ1KjMA#(z?0U=jYqMuhe@i!?B_$d&&L!jwLGB zOYhZue(~78;?I?p!CG0l9gVIF@|c*;f0jtMduzI8x>gor)2ra1Q+unw*ZsbI|69v* z&V?72xhUNWi2wideEq()YuAQo`OYxBIe?zvh8l z?Dg(er;Q<1UoN_Te{=8h_510!w>2?YKJPK^%|01YbgV~m{+}oF`y?*TIho>f`HNzq zn8hir;`QG&ejKo8^t{BoI6_A+a?_Kg)8p=K$=v+f%42GJ7uz)l*51I2W=u`Bl1?rS zkKOzJoZkP3JNZnZ%(}wfVte;!(PcJ{oQPwIR3?wwP3 z?5`XD;xd-L2M*pH90{MNo!y*ve$VT3PnTut#qay`pt1RO`I`^TGbgyPoSPZE$>{6h zY4^9*{QB}T$m@J@{f8fqpP!$vu5`I4bVW>SRBSD0u9QITy*)oW)#rU+HvJ*z)N%Cj z%F?1MLcjO~ znL3Up{r|Q8|11v`nd1+8ir=wU3OH3b*?c;oJk#gcrnPsg%k2OCczieZ?!`Z=4_LQl ze*6Bl(&@!6d(ptBn?AQ*^Awh^cyRD&w|MllqY~Nq`So8ezR$bA&G+(_q>U?LbT&rt z2t3;OV@u{`xnD<|7q6F&jgOb_KI*kJsO3TIyf+LC$#ayiUFZM3xc~pfx#f2wwWcna z^85Sy`ad7#W$a2$6v`gk@qE{;Ww{ai|2?<=|MSz+)AqkE_Ad)s`SJ1b|7XMZeVV%d z&)Ivm)t2m&6l#xh-aY^Chp0vOgpMTw5pExtmpKTyFMqb_P|wjRw=LxQ&(APSzPTy& z|G&rbr&oDg$lCFJ_k#DQ6<1kKa*^77=zir><|_yIosCr9$Nc0!n!Ap3r9q?fr?My8 zZCz_U+Lq{4EUh&xQf6KM;c@&K#~b(U z+ZP^J>8f}oH}~@F*|W8?mM}g0rhhbPqbs-gD*p3-9*M7eE!o!D<7%*YQ&KDcmD0D{ zZs%P#@fBJdxA)nNi;IsY8K%wpUi+cB>o$*~f#@}Umo@{P!(ki-S!Z7C|Mz--m~N1c z*#4hq^Z&iC|E1o#uwq?1LzeWu)acfvg_}2j?yRqWbUOau>bcfsLKC|Fc}`;RU|k)+ zkrTh|{nhaJyPHzIb>xhBlb_mt?~yV+)iHBUv1Uzy*Yz*Q+S=^@+&KPdHp8imz9@KUlXJ?_1~T6cGgv2 zGL9bQ{%W*{sfAe1S ze6!hS#kg3{?N}vapI1Gz^>wzYl2L1bu%=hV!hiyqe#~`IX(_Q?zu*4*uh+BfzTZ6m?@hY>`*$xjr|P&QoT#|M&>APnWpVmJ z^rm_D?iD{jrz+&B@asgoeU8K~9<%rb@m~+>H~pIaPge1!*@HvICPF7`?CxK`AHT`# zXN}$Lx2KZvF=srrFY|155BOsTk+C5UFYWU6dO6x3+e7`TKwQ z@&Bvb)7_0`s!S?=ey;cU<3y>t9K{rkt}_*e<6-i8y~bdHz(`t?ia z^eOQvYTr{g*S02IEWNvLpPf?I(WKhiT3K1yy*JlXX`Xyq1j^B~U5}Oca+|rY2vY2y zx&2Pj=}p$tD%YjYdUnsY+Wz~^^SO679WCAKw2_0Mr`TnS&gpG$a^lM#zn1?0NdMoX znejH4uU}7(77LgVl6qH>A>HTt*3{F}boW&ju8c@J!6#?&qc{Igef9S@8*`(%iekkD zS|=P$`uOMP=hb0rtKMupZe?X9pfJy)=H2J{(#BOi`BRzl{Y`3nuILML&hL<&;n~o5 zI5$*TIB;Xcn|JTT=7pblE?@DW(Z_1-FQ*&F|J-bo4>`u~vqb7;k@xPd#%`s2wta0W z9`{N=-E*0*Z)siWfA!eysfr9$9(C%Ut_eo|`Wvw^;pjQZ;5+LY7#YKRF`oe@k+jQ;!Ddk38UT( zXWG|l9Z+z4Cp0x+=R*5mPdrvNm(I&}*0bbvmS4nK*1G!WhA1~L#a+90U0V|uyGdtV zA=50Q)UK!%#m7Vo`IQrLBwsj*9CCK>y?lcG?w`kBy^cP5c{v?4^>EuPdCkU!3sXb7 z{e@)>VwV^!R%DXt^Uth{z6Qsv}V8dn|_ILAIePHpb9p4c4) z4-Ygl=jYs>rZ3VmMR&1Vue7z_+x6=+IvKl@MeA;APMxsPzvj`x6eYp#qg_WI`G^1g za#TEC=UWQ1K#S%HmIM9Iv^u?1Umxk5e81+$?BCzte{Z>9!Ot|WO}otDSc^cv&8HJP zi=XEnpJ|bK>C{y1*|TQFTu=2;%wLgt%iZqN#E*}UAAkH&Slz$wef53rlUM$!z0?j| zc`(O)Yr@t2T-ztR1f9?fUUuYBq2iHsvAeCTtVN~==k5*Px_+8yQ116@CWT z-4EFRoNT{x_3C0TSNUenRW45tmhP>w+n#=Y-oAf!hc5_s9y!#?J!Lh6(>}dLLF(tf zuBka_(35(4+DZedd^y{yS5Gt*Q(FC(E{b9li8wPufQdmO-HBt8(4S?2?wqT=csD$I z5aJ!MO`WB32=`?~M)|3Atnf1I&Pan|;(jZ0+ChI1);Exk1D zZ1lPL_UomOt$6LG8@owmuGh5hSs_;=x7shBBlSb%d=~eU`-_=Qa~!mo9HdnqE-BB$ zcsG&h6{rT2u38*w_F3^mN_xsMbAG4t=&cUfRZ=|LcUiz0sbP zC%3)jl{T~a`B?q+tG1O(n9uhyUDMy&RAC+DrzO*)sWDw8{y$@rvPPiL&c551Z~uNW z*x>puk z7@soV)8F1pgNi?c2Kx(o#k-Gk%gX-$;{Sij+qb1L;a)3moOCRcP)Mt;y1w_rp@#0`eHlBr8_$cA1^%IzH^!6vY#*g z>!ZwhZg0}6nZNaU-t>7puAMmg^!N&G*%NIk9_v_l-bs3Qx1}lO=BKZBLmu6q&ck@Y zxo9d&_P$ze`~ACuPis#u=zP-7%zg9x#G8(9eJ(EDCo@S=a?*W2EnOx?CIbhy6OD-% zC(S-zmS?ZT$k5TqqSC1_k!6Cz1RgKe-4=#dEmlvRk;1{Y;&KXyV2BPM+X0{0sIZq$ zztt>!af@#UQwoD2>uG!O6H1znQj^_M)Ovapv$RT*4FrF_y)MZ3B$9hWCA-JWx1r3+ z9EQmpHzq1F=(a3-Iq!Mt_b)LP^#_Y>6=oQva(Q+(%qb2#xOLU92l5iDm24E09{cDP z@E*QmQD1xc^~Z`iibdyMzkc1Ux%hnE>NuZYH4gIoBt3TYN>ytv{m?Q+sKd(I`n&v% zcnz_V*!iZ}VQP~D8|@5>?umQ8tdvuF)mHdCw)|L<;qkJ2H@2+}(JDO0sMxV0CQZ%A zbw866!?7EGety0@)8zS|L#^Du`DJc=JGRYfpF*q5RimtLZz7*^a8C4LyZKEtM95R~ zYs8wZTT9>F+1Z(LY1><7c7D74-zpVbBB%HL;5fu#;?d%=q)*(s{@Uy&y!E4NL)_&_-MB1zk3%ie*6;bFKb`7 zr|C_ZB%ZQWb_ecOC1)fOKWA#O39E4;CjSdJF* ze)08sSta-C*OHTyXGzT#VW|D`;^O4xeqNd$Va7WaZhBU6Ahb ze~;Ta!HtK6!WMjC{xDPE#&^YZP>-_5b|D*5u_V&7v8nQ0zzPOeOIdRJQ9 zeN~&eDh#$3ptq|dD6fR$LZSUU>mSjvZ00-ce)Vi!=QfFNO4B6X!(sO}Z(6rbPp)6Q z>uCI+PvUcB=Wfe2ZhQ5^UvigT&5xVz3ru|<&&j{LYwKgDcK=r?p@tS(I`WJjo=zu% zHg2grJxy5MPlUVmSlcmG@99f|G_PuGjkRn(oW+pnc)20;$RD_>?Pa=&$E zn7ZhT)~;zjDq-tlb|xHT zI{(?q%6k5fi^4~PHl{>Iv;{jCd=Z-bcC{h@`U@pfR9c_^WOcsU=is8HQIManFTioW z`}pG%Gj1IXTKDtR)qthSj#opL+ACCKaJ04g3Ok)~QCZqBi($)s2@aNn5swZZeHG2X z&?H)Z|L&C=Q#@2Q-Q4HC@2l?VZL!y~ zk?R({if608_la+g_bGudHY)E87QQ<9cfsYq<@;g+@9#;Oc|TS3)9xvtw$-{#dz5#_ zZSa(2l6d4*Z>HjGq!J#z;n#dFfzAmGk_~l5U(@cnN|@U`VL8z$!Kj=fG($ysnffc? zkCw`JThc7IF$euvXq>{pB*46Eab?nd##=SFI$kc2J`l0vNLaQ^-+X*CbYS z|2B*|tu3M!0e&qFjv`}VM^nQPyeFi_ifI-y-C-< z;$PLQpC8MzA2>xA?&KDGCDPS@TX9C4q=4nlDMlSlRu&H=bCydNya_E8lSrPm&hQw= zflX_c&##(Q%-iwo?0oZmrF(+4G;b|?wCmTAq;s;@GiTfFE&cPuX`_Z`-mNVw_wSFd zVB%1kxP0|j_epas3Lmw+juu=Pp_O-IgW~klbFHq{Jv!p)dpUXIk13kLvu4fuBOi99 zBH|?rl^RDAU7>+9dYf7h-EE0p^CVo}`(#?+XuqmRDj-nO>37Cd0m8@V~{ zr-70ZcYvVg(&xK^xR^Aid9m}!1Z>Ox^5XR}-?^&_*REQvV0120Y2pmK++QCa9!}m^ zQD6W6Tkh=zHGJv3;yv+>E+LR+k@Yxh?m2VXT9SXNS-AlEVg0Z{A<}tn)PH;T+}#O(ipp6a*|AgcP52Xe;Qu zY}J>1D7s)yVZ*ALgv#x69$S^)*{C!5q`<|-zwF=M-+o@DXSD3X?ST2Gtb`p!nQs~X zkQZeLzs>LF(7jd|>H<Oaz6^a>HG$bUfO*0h z2fJ*Zv?NA8R>8@EGk7V{@v9FP>lh zZfEW9?}g`HOTYU6YW+Vh!Pl=}zu*6U-^$?S9-6mr-<}_}*=qi2!+K?=W)1PJcciwm zpVp35xH4k`gMdPE%w;R<+Ok)7b{0oRxdjQFmlAB;pwz=Mae`COidAc**qlqnE&FWi z|J9`Mbd{}8<)=JcRG%+}MRepJKF{XaMSL&S`8>ODF*;6Wa)pp)< zPQ}I*+qXaedfj}gm#UJKZPk}6D}zHhW@Xe#IG?LDnmNO)w#sVmww%|Gj&|SPmLEPV z?C^fM)<`CU@RxG@2kvxD>(p2^;ZU*d{p&%EEv~t6qRn<$layEExT*rb)G^P6ukc=cQ3gY<#bA&Pb{B)0^uZM9r9 z)32?jIX=4&%&O*KXaCGEP1fx~=^FzP`S57s6RY z_pS+Yy|PTk{=0)fTXbj3RK|p!voj2x-*QzwY!%PBeJ#n*H6`q^)XIR6hy8+*&(mUm zJq?fh7&E;gDk^H7v}sp|#dGGhIU?8A{;-*0ZCPYlAgjb6v8(Q5()0E8U$akdv%Nmo zwECNGcb<^bl-(L(c1?Q5`m6t537A=WczJ<~5d=h_*Pzt->s@7LGc!7E&N zM5?&;RXSKM?-rW=ajR<9&i!>drV`ctNvcouj*dEV5{Eb zb5~Esz4)fsFrkn&wO6r0;mivE>r>Lr-mQDB@Qg`FfIZ>qQjy0ec=d#q8Sb8`nl$Un zjwyjGtc((kYL4H;i>>>w&KEVZnBzU6r_GgT`uoSrwpk?$PkSn;+^O*Q&6TcK1_2-0 zt6g^;+wBr^IZ@Jb!3nd7`FGn+Sbn$hzy9U*`u+R%?VG2V+#_pU#&adH+{sW|dlhSF z1s8+TgE_xtv>lj&q~C`!G)CC$%ebiI;gikC^W!J5MoKF+6gf;SP?ftN#(q!U zVH@Ly9m&W2G*jy1|F7MCCn!8zyvVHirIyh#DJkh&w{A^ZIpz5-_HXhpc3e41=lG#}~vn;cxB}%j&ET*v21p}o>+HZ?*2cQyz}?{Oxqa3#UQe(qV3e@ z2B~`M%at-8_yUi*$Nm2Ed1;X5OrKfHKHmTT`~QyT^Qzl;S9_~Y-nGp0>Q_&uiSoO{ zy%@M&Z4hhV?l|GrD|Pk8g$1vr1WQUvo)lRseX_Zp&hEZi(9q`LmBKma&YioQ?#F#T zx##*-UTMQ57lHSS*Gyz&7g_pvPvw`h-^%3g&NHk1)ggE`sz6{qlV0nTdCz_4SY&=$ z;yG*C&c5AcZ*M&~xb?vuj$^C-X^VN!6L?wTb-g6^I&Z8w&s`Iq%LYDo>m}O~XQf$9 zO}nb7%y6o0_oIyq6&n<02nkqhd%QEwYHr+ygvM8FGkxyv`}^DD6odKEC@Dd^llvD& zXk^7mo8`<{m$_@5^sa~dr@UxOlz17UHPNH0FV=0Q09*L#Q}^N*er!CaU8k3ve7wgo zg&`yI+RxA8UP~7}uViT8Sg5VYGuf$5rt%@@!|RtiwY?h~>mtJPeE*cl-mKcKaz@8?ytkTbktxKW zxaje&w{PFRO8QbKv%-YMVMFzGy>*#OlP-SVbM4wSAFH>sC!cC>jWY3wYr4d*9T>Df@_wc=!pX9XPSx0TTU(VL{L{@2fT#-5HL`p%Kv_Mgt)#nRW()pk3&v~$O(Gwpgef!=9!2+hlS$&UXD-w^dc%9$R z){w?kmi8c>W99W%(xs=roV&ie`wWvOV_o>U{|Z~{S-*Z>_mcf!lHrEcTy6?m{UrsL zs%WyNOFfTyeCxwQ-`w0>US3`vNh6!GHxi9j8Qw^1ml-^<0p6thUZsh2wNX_39OqT{dK1UbZ`Y zjl|7MNw=>xv2tJAyMeDZD{{l<`44~R*Vh}(JoB`u_U4;LW_F#^mr9*8y;%bqHCm@Q zWmpxRn>}k*+SysEs#Cj`hR0X77PBqjR$Myayxs3N>2{wbl`M;o^-Pbi)0};lZ3nN` z9NUNq$}8SJ;W3`+V>40Ukn@p$`}Wn?<jAs{jSCkxe41C?bu`In<`t9N!)?6#|DDZ`xo*rGd^CjhrQ?J> zOmSKc1}myw+&;8m<(xfJg19c$t*ZU}?5z3yJr*;)%&uIofB1R+{~z*yFLq8=@0YQx zd2(XnzMS}N>(}oGf%zOurpN@&^RBF*L9#+8ncVkDIz$ zp@NyI;k8w)`0f^gU5VGOUhS1Id~{->a+i#p9Yf7GMTyRq*Sq%rc&h*JerCMdqL-JK znVa{&*mdJ+)jR3c_j+CI@0uBYZ;k&77;d_Kz@*nO`PiMp zNiZ2(RB?_w&=!Ag{019bba4daQdLyQkvgSKsy1y;N0H zR3vr;FOE`Lkg&7ug#RQ%6{ZCnlaFidPKpdOyPZ8FZNqd0h967^qPQeCcyKc8SjJw) zDL8{^|EjdbqEB61S_D4pPwR5(GF=^hzx;pg#)v=s{~rAFUB7?cd2x}xShXg0k5&KK zwRNRk_pd#$Y_-8N1#VG!6;%3i-GVL5vzaB8lDFk< z-?D|nKSS#M+m~-&y;D+p@^r0w^O?^YHOozIY`-Yb@|Ghc@zRk_ufwv(GxPJ^k0mg? zy87ya?wflM{ zc(R(Wk#F(8KR>0ftv~<#^P$f+Tz<2@MlXu`&VH+FVdY(burS0{sp zPW05nZ;7+d77luQ`g)&&QR$M4h8cecyH5`sbC0K3)q1IGsPJcqSIi?O(B3tWV?L zD*lO#p&PPQR^4De&@s0@^Z$~5-L_*X`>w>hrcGpgHN)rVC3Amkjd|V-{NI)_1*&R& z789QvUU%Kv<z{3kyxYUbB(%fH#GHS=NoA1H%qu&}o}8GNdwctD*Oez4=9@XQ99tr=O`!PsS?}dR z8zXZ5|Et|y_Ws(AWnKA^OMPdX*FIS+zw&enXn^bD;^Q$E)#rRvYGy~f&1arwHgUp| z*Spqb_84lWp418yXqm3ms_X2o_~*@a2ZpAkElGdgd#qyS?(Arpu(PJ_?X9iG>E~pu z%W{f~i#JA03HtW!o87;^@8kCrIQAdq@bEBPz{#fmnAapd+>WE&VO@QM>if5EBe%Xv z?|ZBhx#^0D@39R#D=VCx|Nf~gW?Zm%@#90S+{^vuTGjmcAf2Cc`f2ged3MT^l|E^Hlaw~ki%CvS)|we4IE~q2ZOvq_7r*=MP6>5-crj0KpIWWN;B;h{&t2W_ zd`_mx3QA^XW<64+cmMqSEG;c%8oT>KA!yg+yyr&8nmAOh`dsqT{b0Xz(#o5g)BR@{ zD9-d~3l+V$MkcZEu}tOX6UF;~O%*d%PTkkj!l%x3;Dk$Chlj`1#t^Ng-xzLei`AOC zWQCn;Z^NBQQ&+B+H!q9v&-ag*Dihdvabv`rCnqOMJlncx#?xORk9~LCZsuqaIKMu6 zd&WgyUtiy~kE6ryRln!2|KL2y$++j$Bi0Eo6pC*cMXdR@GK9BjE5j>;>gKR{MQM#H zoIyJlt=^q|_LXVyaz9fZ+sU5NyEK>H*^_#D*46A+Mx{4%%(iqjF5~sEF{)p4djGx* z^TP7QoBFbL)-T%GU-IQtJl{9%ReN?ns&rA|4Df23;kW#1<&wU~74s50mMn_#l-h7| zfzxjhp*14q$S$j_ga9r%P#!jr+Lr6J}+7<2-?)a=`!#6RhQDm zeZ7r0iq77WTp;l8@!gut&(F?Um%WLo`Fysww|D#g|9|syZa=G(n^Vi$zRTuWhOEN8JPbsLhmfdL6s8zpbnzhN#Xyw)k z52wBIKD9MwMt0O91(TR0H9M94TN9r6ma2xYf3~_RV+r?_n9CutJ67#&{KK<)E1R3% zbY9O;wH?bge_K?%=kgq*Ii8#m%lIZuc*6B4NP;KrdS$k$-+@$y<&2C?Dj)t#Rmy*N zRsWq`Q2pgC0)@ddKU|OGXi|97yc@Ope4r zi_a0^?!2fg*RHkkFiV7_8A6BE*6eZ*?yDyEtoD_DT5@vTYpcG^ zrKiOdSroJ^jJ?`<9qdwi3VVysffk~MSmj1u<9;3YVdYr{4uS5YdUNdeXFop|oxk(w zg|E?K`uDaLrwd%#yr%TxhqWr6*Gqk`UrktkVr|!lP)>&c4tr;pjeliUx%Gz3ZF;gq zUV@$B#D&shKUM}Wm#coWF~8=q^wFe?20cM5zntf{uX*&uQ(25Tr2RK1L&JwXnp)o% zFg9KN`(Jm~T!Yj$o(2iy{yjgR_1FJ-GS9X;Z~x!FpP!voWmObpyl_JBtg@TQ`FXb1 zv(MhEd_MQQ&F3?#*RSQjwbw0#IrLMB)lo@xrH7S$$=*uGB%bd%wsU%&w%||4nKQc- zwOg)OnDaIpE>pUekg!4_pq|C$m{(Zl^+XBWD9l7^V^a-W%2 zH5I~2!iQqN|FP1yP~q(mQLNt(6~vVssp{gR8hmQH_$%i~&89VlmsOtDOK-^Dx2oyN zZOzH*^&h$8IVP4Lo4JX(>+|mV|Nl%^hv(nfaZ$L*@Y&+EsScao{E?VYeCBB}#|*D! zr?&bs7PQsPH|25WILLdre>y{;Yfxhin>M3M2<<{)$b@a0}+e95}ja3`G4tRNN zuvx6IblnsO?Rh7`M*Dl`|WPsy}VZG>#qqK4Oxn7 zTGz*YO$?RXmT^+xK%op5)0fryC9%vdqOa4QbO>^b>z(=bHTT}0na1n!y3Y1k{;xBdt>W!#blM#jEh=rd!sfVJ75!R zS={K$*pPU*O*2=2n%BC=VGqtnT$Aak2~)Dszka`;p(oL3rV7LP&sY5VZUtZ0N|riv zk?lpPF6X}M!G)(cffC`(&1qM!UOhY8JpW-+tNz|EO5A_=dRnOq5Z?G?#H}UOIPcHb~43GqmWUW&4iFr!Mc- zo+-1GNCrPw|wgoDd&|H#i6^rcbw`!^W^UnZHE(D z4=33?cW5`v*6H)+o+MY{k@b=5h=2fR=AA7o+mFjEYpzu~*uao#*(A?q+#j>h-@ag9 z-nkUrgB%kCuBzpJ5ae-S;M8bXdcVH*{k~)=gEpTA5rx&)W?ao)a$5XPkZO&)7sD@& zEB@v^fs5TtO-znF{`f*@lA==b(x8>ww||%a_fMWr-tJALn77KGuX3%g?`>*brogg! z*~bc*FoV!}8d9w6wczo^G|9|HH57wHx#6R+=z}1zZ#}~>k{B^qEtc}N; z4EvYL?tOD?DvLfX@!XZD6SwEbk!eLz?VA7Ri@M*s6{?S~ z<~Yvp(3H!m(ezrObMn>Q_|BDS$CaC+*Yxpd0Pl3fuxZ9ipnB1Hw8Jor}2Pm>H=9&vTv z^UPVxE>sw&<=xx!^I^VS&AUH4D{LH7gdL~+ifNm_+GAtm=VPUJ&F@tt|IL0~yffy- zGOhns3rym66e!O1eE#`ok;1K__?0<|9E%UI`)gTy{^91SH4fJiv%Q|&cFxkA$5v*W zMv#76;*#K(*EoeQy$sn|WaDqnquKJJw9bpsn_m5P>({q$-}V&l@8npulI!UiwqrB0td#Ek(^+z> zkllenfA5z|pfOwjibJ16^!?N(pG+w_H^-7&TrVd#cWr*gj=V1~T$DBzK0cPTaKV>G z6~>dd>du@_S6=aJ1tXuS#;ML_U2IZ5A=e#TCN1$h!NL%G`N>94JJ?!)slJOgJvLq? zYkJo}^hWjr5r+^yW~J33lY*3z&h%vNYLno-8)B-s_QNwF2cxM$u9}fz&c{r76+%{Z zrL!H|z3BoYo2`fJl;44pS?UZ6=DmCOe181*#%j9>K5FuRJ~T_4=lQ4z@BCNisnRk* zg?&j#r^)pB_6pWdt)wR@{``CDc5L9D*;~G!diCIL$fNQu(Bc}Sj)b$@nOj%2Jt&{G z-&`pFeQfi;7;m99)BoIzJ}T}k@Fid0)H*svSN4$>d?&-7x8efN})Pjzx$#;or0$$wXqamrQweC>I+<{oacGMvEp$!Jj{#|-VX zuYaGXT)aGKm&=q6h0|*+mL3+m$UH5s%=Vx0%ML3eX%8NaI#;{(72iJVz2;KnIU*s} z?fS5iAwWaq&t`_kjuXXqyJKT#$JPJ6zW*n9C^o47IO7!~!P*0o8)K|RxSo9a`R?7j zbA5id3vJGOFTbSh-q&;V@y7_Ac^-GlZs$(Rt^a<}UG}(OkeA}0f=vOvGkEl-ZrQM4 zd4Q^dI|I*$4-=Ku{pZcG_*kWQq({=&=d#9=nO4V*=K5{jx>b{*>i4&|Z&lw6{Tv+JL&cD?!qgVY= zx0qhk?sq>m;;)+T6mbhuS6uSCD#(K=z`ZeZPVu?cDH2N*!p%ms@DI1RMI#Mq3Cvb-zTh_^#^Sf_c zJzD*9W$;`3|3A+Q-fZDqYksHTFt7O?gR(a_e3tbw_hm_Lt@-)Mxt;Ibjg8J63oCYC zTq3EYv{}ddW1{6}#thbrO36GCNB&2(K4VfkmbCH10q^U@sV6+;8(2Ljsc260irrID zczxYn?z}x0OYc5CJw5;KH@4?KlUP15W*oB+e0yi-=8#P#vEf_oCcN@WZRlpGVX>0) zf5P2*J-&YL>eb#alMj@tC_R|7`mwX^`Cyyc6(@Q0?GKB4Ub%R&@Y5Ade=fzAb<$_g z9=`n2M{V-I|2L~YFR<);>}RrhRlnsvX?Z=Nb`Aj*zDW!Ry=@%27ddn-Qe~W?6Brde zP1Q>}?q*`;+YQ$f_im8=X!hvn?GJ79uM6tWOI?3$+m=Ndag%a_A8~#Va1;{olwt8; zQ1NTB*q^-5a`);_e*;7BUbVITe70Tshzi?%nY*!5r-n`q{d#)Mnyjt6YJPsY|L;}) z|Ml-{-~V-Px49p_anfv_C8uIC7%wlWQWNVw+RT1GetX^CzV&mQ7EH|C|7ptp^dvT? zS)h;?17LXY#%(&&1*-~zSoA2)KzF+hB>}k6q$>)Ej&Caj;wQ{*x{!N}9#}>P2 zy;rh6yI1@yettN(YFA>?5pDYyok5(EMaNfO&z|>us@G%3#Rp}t8)yojNL}PVdFsK; zxReQZJ2)FMo*e1Sy}j+0ujkcU+~@88@2~&R{J!S7b$D#)RnTzb*7db-@0Q=cyEQvp zM0sAy8w2Z5yR#|HJdeCS_Ro}+;FxuxN?Y}=mve*H(p6lKcKGdid#uAUOX_4=|Jhv@ zyBv8#R6Lv3T+4b@(;9QGT*h7f-knyR*ql$wqLs`HSzD!yp3GS-@v<{r)2vMEeq)QI zLG#%y21=G%7i1Xv=UaSy66}Ak=(R30Gc%~AaCiQm-|6;$C7<`GaB5E3b!Da+@6MMA zx*x?)``mr`X{UFrRk6$6W7lu)C=E(_b?V!cmD~>HnL@7?Ouu=NOW$CZ!pwaN8qV+M zOYZrkw0uou-7#CkNmrztUJ0=H>UgZIw5+IFHC^ca+6ZL@w~k4sarRe=@5;<9cW7gK zZ+QDR=bxl=k(S?^A9?>(Wn(z9Xzx?4SkDGMt4Du>z8?7a=z|ZZ3g=e!t$M1A4bBG` zGZp4X7kU0&+kC{Kq37V*$;Ut1`=l^+%o1IsGRZ0D?zY^!#pio_`izcQBwvm4wX~DB zD(Ns3Gig%b5n0ET5DSNLbg>ng3AWrwykNS;2cmCAVWOvD^Th6zi2rOoe_ zJnr3FYkPSauWtOln!mrEGYSUs@$u@$?b%Vkpgtw#%RzbD6A?_DUZ0Z>Wu23lS9n@? z`ni5Wj(E4Y z@p8wps++_xrbZb>H{O|NC(8cK-gq#`AxE;WfV_ z(Dv}cg$KUocekXUpSN+Np{l1f``6Tx5)t27&CSg}YxV`L)M7BuiwiNE%;0>?V!mbZ zvd0!KCWe7lg^yfV)|qrhKh(RCVe+c?*zEj$m6v_ZLsw0e&f8IU?M&o*`6_wA*z2)- ztF}J2=sW!Vz5Ryj@4K&hwHCg!SiAgJpteeo+*YR+m6L@sJqm$6E^G^wekmE93zUt! zk&@?qz;}i7Dy0Y7>-YWo|L5&}uS@H$?R(G9$9Hdg+1poFS65e8zu))!odUJR5)^uBLhUz7T@^tz^i{2K-R z&Vm9F(Gmlbwj}i4Hkn|UDA<~~U{-5a<$~ZzMi+0Kvw68_S(Q}NtLuV1SqpdS@EjIa zR=)r9T=~EK`~Uwwt+(69YiHHhSLOF>#Tk}NnIKtx*iU70;~V+Q6MffgE?gY`dy0c( zoy~RIx;GN(F&-ChU!JZ1r~0)oz1Q#m_iN#IeofhVU0t%t7b2H>Y!bblxqJ0#y}8z}7M%}{h+67; zRrGG;LOq7NOLem1YPP?aa82$dkH#w}1)qJpN`9@B{daR|@PaMR-HR5^iVKOzznSS; zuO1&7wLP)w>1D+}Th*+&3s{moYTitL|8xI7hG$=Xu85fvTA%i+KvCzqQ~$I0{VV=_ zsh-sQfI~$y?yZ+n!3=f2X{*@#o`;=LSQ#dx(-z3d(7>#;;Kljp)6cETxvktG81SYb z>*}$TravEqnyg+L9$L_O;_IGfc0QZWZ#Hj@>g|~FU0%TOm}GjQ#H1-%?7J3msQWM; zH2lM3U}eR{61PyGW#O%ZZ=Zj%E_?Ii_Wr-OFHW3jntg58yz=jN%k%HsJ zpoE!IZ>F#s@u<`p+XZ#q?wxJcJN+0t+pp!mv&+t!Uf=WMQFn)mpncu(<>An!ixnZrxLNM9tlHlFPAO7vk=`eEVH}YrW>f4A@Tx})K7 zk*mY(zio{F{k;BP`t{E-*Z&?-w|i(|!*g_7?(MSuyKjHB(LTP+VwqsI3&Ro{fo6pX zDze8--}*jX{rye0ieO{5{|AxTkzZGTkZEyRDA3ZF^~EJ*ZP;OhKlAVZzIWrsjqCgV zef3&ebbIagcel2_{y6`S3k&089Zvi02VOCBC~!EtB-|0)v}#RAg5m|2!aG?WO|z%` z5uU1{TGr8gX}Q{-h7NZ=`M`xaRaITg%*=gGcFq#B>R<)=&C`e$bvt3Us}eSOr|Q*FG-kCP35 z`E*XZv1-w!NY&-M*Cq@8%1r)vR&xfs=$EyLwn~cvu8Jqm`K%FPCMX%RF?Ig=tUb${ zgFYBDxO|)_EIz@yZ^|YU!;i1D*PoeT$IKA6HtH+?{lDu1tmV#pm~wF4-`6Qpy_e!O zT7}Y|OsJge!Nj3i{`TJ03=^4l|M_-*C*7RBXY1Rw20RBhX+`dwRm?7|9Jger&weF? zQzGBq++EG}?s?JS!-o@k*=D?oKAC2l{q4=ehlwmALGSKwuTM&H@@Nd?-tepTO6}xg z-_7$?7b+UD2+ns;OvGq}!N zU8-05QYT>7b<^`-k{Lo7IjguA+r69J!DztXc7S7o()HOl^0fq+C;0^V&bTRJdg7&` zn*#$=hvBNVx8HJh-eKlG74pU)MX&gWsB_|a?WF=vM`qh>l@^<#K{h24~Hl3Y;p~>y>QStamDvSje7r9Q4EsIQDH0Siwyq#agu9r3&MEw8rIZb?H<_V(wWHqUFm zy}7wL{Vdnv3tR^hmU;YAKdR2+Xpn#J&ccO`imK25G#{3~l4WX85F^YpYl36uo-J?J zZeO)kD)~*H^}84H5*a2^*W>H&etDR9z4Z98WB01Eqa|7f)^;88WdO+HGz(xvCsC2obb5 z%fDx17(kTfVTc@SM*{{^xU7=gl_Do%PaPN!jg`=h>UH*{Zx^vah-tfAac0 zCboqyHwVDauohJA$TluV}y*1%$H)z ztJ{Qmbt3IvN1v(nV!3(3#O<&Buh~->O>K{C`KiovSk}5sq`GSohh*Ho7e(j4_kO)1 zC005=kwIapfmoG`i$Pklu%*^KR;5SQ`TJ|1oDjTT%J`t|b-u#^1s>1-H(I8iK~ZO; zF6VB)yR4<`(UDGOcK(R9S03CIaSdATa?$9O-lWF67D9{NH>n9S-miMSc5U?bRg2cf z?X5c4#MtZ1U?!gUgM zd# zF`cRD*;}J-@5;?y8^(Pop`ak+XxCF)Ti5FLI+g|r5r6yq#6p)%oPSPcyt-H&Qho9I zlNjd5>Pnm$2PQbQ`yNosy%z-uPypk?ek$+5w#k0_)NzM%lHim2Ok~np6Z>GqTl(zm^VOxLE!P5SJ~@k)}B-i zI;FsI@7~7boRW~ci%!XHHkxsr~C8*?isl@H|$7fmxEM~30ve3Yxw6eYU zc%ewlzh?PA4z7*+|9m=qeNANaJdM>iE*puQS~ls$zp%_H%DEwKXX{v;rCFqUn2k+X zSsgkWl`cyvUekYeEaY6!BmpNbPnVvJxwp5ON|kzkT9q1pc9!YwLfNOES6{R;nmEgY zajH{CKu5sQIal49c1%2Os~&k{N5`w#hN21rKWq0s{dDC1-~RoN=Y0S2WzDYKscZ{6 zMJ7wOX8oG>$2O>+lXXJH(jTYa%vhGTCQmr??6w#IhL;?EZs~4P_KANiD!bn1bh0hm zwW4RwamAqiUyRpFrN8dtlAC(|dF_4mm5i^$B#MG>zR^zWXK-6>*t}b*W>Tszn=c~ey4T!FJ~?zHKUnIj4lnEQqL-W&Dj@F z@%3u>>8D0acecIS)_Bmdy*RUEjgjiCUq<_QgCOpuFY}N%2n%Ei6l<7{TiVvAHJ=Y~aJqs3Ax#C}b8U|?Zu5c1gY={5Ud0|SMLiTs`uI9!~? zids*%HCWD3HtG?Z`Kmy%?M2Zwix9rPUg3tK{~J&9E;tZ;t|R53?iu+4*2hMZ`tNO; zU6*5Id1Gt3etgi0x2(Qtiu_#1w>$XrW=V2f`C%Oxq~|8!Hiwfp>A>wDoW}|tAM=$q z+rz`q@L}fpx?_cN_uaGe3eB3*wD61CYGp{$9CZdqpMUNQ4Owe{WpBTK@BV#%hTY}w|6SX@?`!n_ zuTxF4udj*RTy}PrY4){sd-LDcW?x?yyF2aeEz@lKzc5CgPp6{F5~ zc)YG>(e;zxMP$#j3g<=1t`WJiDu3V3%Kweb^PY=$w@T;l%6xd}^yi;@1P(cHUApyW zfp0*N*YUz7BKzhGZ=DsyE!*?O(_lfWc|bw)x`<;lxct0SS~z6emtVZxL0~>h&qkf?zAi_O9XZm* zD_yqdZ`t0s?|<*amfy8aKPPi+1_$fR3CE>aO#ZFj8I$+z&CTuis18;hU&mF7I?HNR8wa_RKAofU@ZK31_R%9>&KUlwG(CorAQZ_%!aWHjwso zRId1cVd2-;^TijgxSBQp|DWgFN12#bD9cYZRWjTV`E_-a*7G?koPtvFZ&f_99)y<$ zo?2pPDz-kA!z;n>)!aAHl1k~jto?m_Y`)z{-Wp{)U!TW+{=T%cQujYEof5>QsoK!V zopa~8WRi(s*O4rv#TMR+YbI@&cC$3GW|N>pcA)3_J-<#J>y@rOFD)ar=k>bXT}P7y zSajaGMOKU6{_?bE-}H@p753ecy3;4kZgy~m*-}$B!(%eXKi1lFFu5o!QZNZ@OLD(F zdC8IHlb;s!`L7k8UdYbC@WCek+?}0Qy+j3VuFFbGPYyDXtPa|_C93M^vB@GU<}@s{ z)>^7-*R^M3rw7MR{r{izJ0i5EK07=2`^swjr@!k0R=Xx_QqgP;sbvnm{p^;r^eJb+Nn4Zf(ij z_ugEp_j-K&-vj@c9T!iOh<%jjxAKzehf1%1o_8~sCigpWG3!tDdjGcaeY*W`Nx`pQ zzO9SdS#c%CmC$cNwuHq zUHsUAValC<`A3dVG~_gTFZPVrYEq%mwbCx`IgI%}aciek?N88H-5Hhb%scr=-TsZ~ zk`0dhkG9&Tb{si%dP{b(W*p1w*QZv_-MQ}f=lTElgsoRR@F{y;ntKn=E$+ABVreLNyY>3LlFPo~@wKH}qgG#ky?)=Xtd${2 zYAI9a_TKxJKV#>oQ`*nZ&R^elJ4=?rU{YeGU8jiaTzP3v^xo%}?M1{h!P%9G?lk#_WZf;Kh z{`Kq5b*C-UKRVV0a%Vi`k$x^)EP8hd%UK4=!v_yGHvX%7S8z3|q}PLqq0Pg^iKE@x z+1Yt|eBDkJF6Y88CoX>cSlD9|`t~I=lhUufd$&e?RqwZtTYo)!>nqXlxR28F|MxCj zsCd0}%IzH@PCH+_3Cb1Kz1z3-yKeNZke4^r=hqbd|M$1=`J^o2X^#sQ)vT&gDSRhm z_2uBczrUBN9J{edTkLN2`@Ngf&ha!kc>TN*?627HxY9|*_T6oviBp`4&K+=hX}W01 zivCsq)?7$5k-d}0f7WBmFQ-*+iTLK3=qQ&ugpr|F^C) zG6-5eKf~32*JNKtG^hCj%gsz&>W0o8yY?8ai}>Rfcj04o&kxl3Hw63XxR>-mjYO&epK?zaU> zJayaq@x$T%o}M0ql=Azf-{*MiKb=#2%rMh>W=_@opGUuZgT6`1-xyZq3f$ z7x_k$OY`0C_xon&?b?{0aG>I{@I=n5PPZHmNhbH`M(%mi9slRhj~g=#lW#cd2QMv> zO@Du{R@yvo$|R|;$70Lxe*M^g|KjcIuXnBEaAtbMwt|)A*oF7Han*0Ttl#~(@nK7* z%F~I;?sZ>(yG>e9<4 zo?kyy`gi)>o4DNhb&0`RPwR!;QB~qnrHn7Sr}&9$RL6Y@%kI6oRIfHell8Od`7Iaw zmUi(-GPWwQFdTn)AW$Lk+}Gb-tq1qrdwB5P!-Mnw-JADsUs8Si#{Jtb+>e%d@mf;q zg{<70*>+RpUzBoJ7F2o|v1m4^FenJkQsCtDKD1MDYfzw|vr16G3aNeeY(l~{f-`!T z9%<`7*T8&2`GEcj_sjd=!vEIB_=Ff9A) zt#fm&&2w)(d0uoi>g~VZ`z^}f#cXX+dwfXJQmEjwcx7hi)*4GQ? z1Z5^&UgmqOSGP}Xrio(W;(HYjTg6)hST|WTX-ZMf4^Vnji`}Otp_4}t3Eeg5y@mrtU;)Mq;ur%;#g>)1hURwJ4+S>U2=f3~-+F5gc z`MaOT%=a1Q-?O>@nX$o8jHQw5-{b0gZ*Fd`|Gd5K^S$`})2+`{to-sSd%f-Ucb3Ns zCu~d!_s?3eL)k%qWvbWHsp0W6HKvD7c~$*x=kf2g_S0|gE`PtwceW4n{2Jxf(87+6 zt69E6qTH^*#kcsDyW}5_;XZas=hd~sw`L2EyvjVwZ+2g0DbL{#FD@HT(A2BQBnkbi}$ZO4(fWeH5cP{q)l7TRk(Z+ae!tG`TuWX?pEi ziz#fsU;5W?D}8-Ufv5ZEBj)(}2aW7fytO)^`6s?%QW~+W7jbUNhBF z3(2V|XH-|{#%(NEJX`ahVe_o&Ri2ibky&2qyWSPpB_Hcy-}kZC{{LtD|9kKM-kZH{ z=dtro&rB0H>avclmK8p#ba9ny^-^U9t6rfr=r<1$1FGFXqV{yKhMmU`%3GH zbU$8tsat<<$jY!*fjbx3HoIhoE=)@Hu*nX3wg z+TFIc34D7){QhqHamYYMTKexx|N3435Bzi5cwj>9Pw)7B`EP6g*4EA`Hd=RZ-Ro5! z(zoBQ`yF2Qd;9vxeKA6&QU^Dmx7%I#INOsoak8nSLh{8vwl`mNC3yu)GhS<)n*L8v zl37Xf$;IU3|6b1j?scJ~6d?{+dg>t}H#-d263ufrv_{oxA)ckCJN18V!}gi4%&~NxryrQ|Zi~3aQEV z?tk}o+m*juwCIV$oW|`hOqCfH2rN7lw&U>+%kv*?3uH?y1Y4z|Cv>u0QJStOkbLHA z%)1|Yt&76eUR`b4=cAl{Oqo|%Oy|V(b9wnDuU(bgJ~gkZsOL%Jo4_pLIO(ESzl!v` zLiRZYN(>4NnU0+btc_FpPOr}2r@!M2x4nX5pu`#$MhAC2wU@u0RZa%hfa@wGLPpaJ_6%Ka-sEtOtzTybJr5r3xW8cSAyrHQV6^tFap zc0nhe$5%YOt+GY)&BsTa3r$@cB$98H};nU9zG zKHG4Hr*fr_bnh{4{XGT$#os^g(U01a@vw>Y{hK?IY>XN4X3HMiF(@)Jaw*DHy-+;& z!}fcP(fsqV+du89EPj5s>h{{%W_fqEW`D29++$*Q?>Y!GAI@_@381UpM#u-*@Hq7GD_4 zWi*#`u9Y#bUN9xkv9)jKy3en)*UQ;dY>3eDn{C$Hv1H2DsNBE1zAA~F5MWukZSIut z?3;=TPI}MJ&o>8+_pS}m*1FWz%B?0ODJxt1=i~9*ZzuNoh0S(#5Wc3#^oN0ygVB>q zvn7P#3$OW|3%75F>xkJGKA&6t{oT|cE=GrGXL5~xigq7;dOb#%eVy+&{p1D(rCYnx z-|s4Y?U4NW8wUf+g7b39Ps4iz)0V~@;C(kU<73K!8|7vDKL36H|A92WO~KDar@L*B z`qw-X4v#53`t0oN?YXzBK0G-1F=%ComguKer-cUT=VVIzUNo^zubj91@U0gUc5_@j z;CgL?RP`z|Q+CrCoQf?E`ilSj_!z(M%cZT?*D*9KT)5C{>7kiMa~kf>-mubm+0w3Q zoPrnG<|ofuBfUuVRt1Ccs%X<4Uv{KzH$9@jV|#x0zhAFy&oeI)kFVJnwYKQo);vZ9 zpO8hN>au|;wHv022;SSrNBzHzT8>WnXj0`#qn}fr{7s`ro&inVC21&#b*) z`(1Ze(#3B5JwLu#=gV8xv{;{e@ZiCrR_=AX-|c#OdiweK_VKNMf4n?j_v^*teyclz zPHu1SuX16^{$T9v^k6t^?3c(gr4bYY7)s>uO@XRPhZiaSNc*#(|X^Z_I{&fyF||ZvwG>G zZfm)z#@|XR$Jr->ZDit-ohS z{`oll>B>rqE?TJ!6Mi)qNVYk7OyrZC>t-bsE_xw+U5MGfZ680+|Ih2*!li9h^X0>} zwb4`Bi=KRT4=cYYp(gM+=iZ*m@R*G!O6MBz%&&YlQ-R~r6HcA&KW0d6y*2Oqw>{tQ zRd?&fcbo`c6R|Px?=QE-dCNX7E6=(i-=tts_vJ@_-Iv8#TX$7`Rj;b9dVYSsefG6A zv+aKcitcsfILK?+clq+|=y@9Q_JxmrY)t-HW5;o*tZkY~)-r{_6y5S$E069Jji1_} z!NIKbXpZ-!Q;~Ptl&n;k^(X13X)a-yc>3ufgFR0s-Q1jZcF(I-t6Mm-w@NXzB|fm= zV|-GyGijqbM^lYm{f`e1+2#LSw0{4FC(Be+X6H=KR1wBS3LM|$Ek4};|2zKw$@zay zy4(M{Shcq9=+y8tv+eWG&N{D@B+xRa*yY62qMbGS;?`UDZO*&9t6jdX;{Cn7j*H(t z=l0?-ywfE1>&_Cdkd7(o^D5I0HnIM!ndf12OzqUu^m&!btnA)>|H8nKtf~Jmr#vZD znDg+24w>U~YfrwpTE6z(%a?)+Ib1V*KRo*8&T=*D>&D}9=il*5#b3*H;9#BLm6`0u z)*hC3ZtJBZ$9kpj*M7hI@L}Tp@9XzHo0WQc+TL%svbk)to=Gxrl+?UU+PI_S<)xj) z&%b^VaaMGZXzI0PW@LEY_xMA7{iDv(*VkSesn061+2T1#NhDEXRkHfhJ|lLCzy5CN zK_?3LntVL=dVT%-`r7x~>ppLPc5e3V+qZX@yu8%PE%xWv`uox>3#T}7EHr6&y=&cT zJ|3PaUaIH6*KK_nUjNy=KAFMI=s|^4OGx25Pp_4WB^MkuS4fs=P-I?oJ+3$IfmPY%X)2zt4nFvJT+X`g(UJOphyUBW;1RmGReSy3U$a)*TYtQ1z_Igiv)cj7 zV%zh@dutT$XP8KRJvL2uc6C+t>#tT!M&~A7lMOa;OjcgJKIg`V@cOUe^H6!hzvhu-cv57k$|pLjCMoHWJOAGoo$B)>q~(JTn+Z0Aa2X`lFfK0d z;pv<)vD75A>z_&J`Uyc?#a~P!ze@(2Ok5M9-EaTz$0b$o>guZ3Uw655{jPn@roS|# z@9Ha&$Vow4(^F3y>68{e*PCks&ZE?WG;vXR+=$JgW($BeZ-eMh;~Sl(IO zDV?BL#Kv$SK#5i5kCWZ}^Wk1kU%5yw%B*jhlJITGgPhQHpUyi?YETlXR(D`w$$N5O zQKNvvIR^IPBDaYrm5mzH1Q{5T4_tVzw|Zmk?Xq9fV-E?I9JtQGKf%R8$Wv+O<=;ik zw!-blS&9t$wyurH(e4siB=lIV!{L;6s+k9$~oZ_C3>^Lr(a7xLR(u$#ff z6mTGH3dh7LDy7JeIIh)xOTSXo{_qVwitPx|C?&t5{|J>?DHK^>VT)l9D%2E|g?Ww1(t&RTo zQU3q)b8~k$859&*Dz=o}*|I4pC{)7aam^wVLAHbO|BlA5iQN2bbN00-MLT2kp8vK} zIm0i)cJRfC6Uv~&SC#vF`g)lby?(Bg(K*Yy>1J`#A6G-C1Y97CrX#WxG-FQ++mXYD-Q6<6L zips;=*52Ot;i&$d+V6Mwz5l)M{{8#+GfZ;IY|gI^(Q@yXvn_aV;BmkGzIQuICn^1j zTzK;g!|G*>!Ue}Cx&#Tm$k?@vfra6SKx46kLW2U&{EA1+9$5I)3B!ndTEY zzSD9pPV8kBwO{paO2mmGi+4Rq5z;*DE(>~Uc$SJd$=Y&li!v0jnRsP>=Mn**x%U$8 zPWGsJ#hk+PHfhcVtx^FNmIDkE43{3aNIrEUL~pwG)KkL$|Gn?G`!-{W(e%@vsngDd z1#CRpmh$NjvqzMJkWJ(-J*mYG@{tR>)|)RgkF39>xr#y8?f;H_prrGE`P}`#4>0qu ziQ1Z#le1?1`t{qln}7P{&hXAcSXdb3+maU-`sIIp%wE4YY~G9qbCi>1b~-f(|83>y z*fS@7_4WHTpU}-V?s%wMpzUWnS0k%PdttZBoP&*F=>mZtE5~#>%o~F=TY<@~$XjH*^eH8*=~N z$8W3G@2$F9dcE-7f{oU$XO$NxF)o>s^}C5_!ND`dA@!F3!;Z)9a(J2KIDfW=;Y(w# zdZEaah3Car{y10sis{00|L5bqd-DuL zZkNAt@Tu$1A*4bn*z^{QZ7^{i7qD3Ous!A|~2R`lPJ1 z$Vm|-;x1RYC2DQhs;PUczqfwfHT}GMSZCNJ^#xzg+uPUwt2tIFV3Kxr*4KXvowK|x zZs=7m*kK;Aeu}=$|3kC$_w6itdTOcnv@(TYuk| zOCOVuXD^);trIo%;<0N&zrXL@lX!Tda(k=5?(+BRu4V;!iQZM&HPcXSX-Gu9GDqFV z&+$Ie^TbS~K-U<43-e}hmYv+{C@sPi@X|a5bchJI{+QfK|_`^hdmwe7{!@HkmXNk(ZU z=GE1V5|4Y$zV!6;7#&Ng*&iz6z#4M()z{_os_|U9Pu}*6 z^06D8!s>mp*2m87EV%TBC8%pr)XIHZb8k1>R~2Mrc(}@06#e*c;>C(d#Y_AR7KaKP zSuDqR;Khj-o6p;APd?5k*tPcdHlvhN!jW4I7nvp3U)my(dR&6(&!6Z1Jbb*Zi90Gk zi#>Ilb>ohs%Q7Q@gp!;$3)|(2VyAbMy}i?UY{JYHZ#2BQKc3ZypCoX=qMF%LD_qOp z{_~e@+qX%c?vOhwlC!4f5$N8qFE1``zgM+7Xx*2u-%X`>H{FhG6X8%%c+}X;E?@m; zqtil#mLCr;u%C?TaD26l|JPharboM;U)%fl+wDY&cXxJfj#|4-GiuR=-v0mAoyy{LpZO1W^u6BY#G(0Q4UN5|Tb>b>HTN@#Rlmq|%-v3vdP~hOTv-UXOR`Vt$_V*Qx;?|q{d;4ww zez`pR{vDmAH?|gsbBTlnCH5E|>zi-!@x|i)yxY6hu3yj3khS&JyV%{4m%qvWu2fW= z+#|6zet+Hdb+L&Wd@?o*E>!BS-jcWHfLeL1)!{D>Su5@KsJ_1RQmLeh>-ns9y{(JN zu6>!j;LDzGPRnz?RCcjCC-fMm1g+X^>ZdhPPqkx_y`ZK=r-0=1I}e#JFK;}Yy>-@v zhn9&SnHKfkT4Z{1ss~fbzU4FC>lVE;XkV?Id??Fy&9xNU318hFIX+G6RuG)gX~OAp zru0JboH@s9&lks@FZJY*>?+!6V`zAgW#I(D6SE_F=AYfkKCvuAnW4dIdh5e|_x^9V z6lr*5LSc&M7Js3@zjHfJ-QOD^sr&mumdd#)2j0AFefT@<%y0W^44zjQeGQ^c8!4$K z+Bv=d8{aQmnYUWFi1)SPjfzyJM;VS81-V-%lv_ORsa_X7Ph-0KF&igFh2$TGqE#k; zFYi>`^#8~W9wj9M(S(VG=OlxzKT0~gq%rVuOJ_T!DjMxom^8&jNHWq;3+Pe)|eI{_U3MgJa&aY|9AM}bkB(5h{@=?~-BqOWS0X#Q+b z5^*YcXVEvAjs2@#)k>8El8@)Cu29<x3-L zCmt&7@DPexxJ9!ldh#UcliEpr(rt+nEk3Q`=C@}q6=ZO^Lb_6(xAY=Z5Nlg9owtN8DUcX#iX#^dd_MA$x~Y=t^CZmxK8lrk4#3@33_w4 zF?D*fn+NosbU6Eq{qfrsdlyWd5|UeZPV%wS*||E0d6G{|Sb0Bm?J5D8Ifk2P)8;~nc>vp5Q{Fh1ui-|@&%i@~q)MMx;hSC{cIEabS&aAD@Q&{T_y>kdrnIMFb>q2X0|tlrjorItgjS#1h0m^Exl=@-4!=@zQM`!K|qZWnNi6 zzw_c}kKIibt1Fr>HYzJMWNYJR6iA-GA|UNnuOzF$-}ek%fGdlzYX3 ziW_(yGBG#^u&sM+(YM%UjbQTflBEY1O^P~pVcD&BmyUYR-O_erTAkv>liNNo+0+;2 zvE1S8=Qh2$@>jk#>??SY^xAQ<_T0+~6T5v^#Qyp);n*Lczb?8TxQ;eW{(QjIlf|i} z*C3~*H*0I$O3MzuBd7B_KR#(Y>Y&4zxcDB&>d^fYKNl(P?7Mwkxl@Jt-R?@AQ(3Vg zuhUj`N%@><5S|_GynON+RWU|}$qHUuKOA8ZZ$2>fet%nWfb6H16KydXKXR7v9Lqc_ z6SyKF&C}s)>~TjSr!B727}o54pVd0K_+~<*;gqb!dJGX3U$3nA%k%lpx(KTicbn$* z%wJgcPRZed;7rqNVt0L>1-`C0WZ}ByK99&Do_niSE5)@mGbV9zILx}h+hMh5jhA!N z%^>efcNQm}(~xBrHGaHy&IHD->(m~Lc5vwge~@&%{O+#FHi6U=93CASuUaN18NZwA z!7DIff|9$PlG9x4CFi(Ude1lKZD8@T*HFv;8nrf#S$MB|>PoXtZ_iapis%EcwfdMA_fvQJZk`g(dmt4=th z6;}r>HkR1BK4PV+)T(2F%GXR5_3%h)uJ@Z{Vq{eH=mYMi*(^Yp2tz*8r>MM7hEF1rXD7|wkB7eF+AZNReK&W7 zT+jc-m-w4FdOrF{WxBihEH(`2&(^t?d~9mS?ZY0j|7S$J4^|5AT4lpzPPRv&EP(G4T-pq7P)5vedYqJfj7jOu+uI&70*1WZ?@#I%lDLKdL@2fSQp1Ji~ zs9f;UWd`B7nq1DdoWFS7J~O&YU2_W@&4su+RHK$x@W&wqT0>Jz;J2RsW+dx zCMm4AF1LPp%nGj1+QyKy37<8}?%DSS>IBBwS)<@q2jW;Qnhi-Tf4qf3vb4l2}rnHka!kr z7LdTxT4$#hyK2STQckn=3)ZeVZ&#4CjgL^U~S3?w67?pVV9zZN-2D zP2&ySZ|_P~#~<@y)VM5kGGmU<3VG?^(uj5{N!e)g;XvlB7J&4DZ@ ze}@>D)4C2{;dXiH?R_ZF%#HU& z)s&5`!ne*;EYg{>fm20gN&CsXwVS=Sly$xCyu`btnX^gINK#vMg)Q%{x!H41O;Ei2 zo2`fUL{Hm--i<6OrQE>}lOC;9kNofWJ=MYCoQ2?u#cGz%gEFc)Pwbc;na;FL!*5B0 zXo=r6Ujf0679)>n;Y5S4D}`K-%@Pj3D*M)Kf`a3W`@S;`@@C%fx^ai$LRjkzwVdst zmwkeqpQ;2O){A{3^0lwK%_#Ki%96?5URB^FLEJrhUH7gqzAC(R;*`qTU%MtZ>&<1K zVySdnps_7WfOW$2>NvyY=e{Kg9f}HAe=XHHLtbNVk-_D11|h}d9^-Y444zAvr8MR^ zI{7A06UryKTB>eR`|+!H!V3@Htj0Ix5ysIh zbCl=LTfW_bA@W5&Po2VoHEahzPO`q!eKwn8ayZ8!X^p04o(pm2+a7KB`*hl=XELi6 zocprjp^WgQ%%34{IZgYVW+nZ5@iFyD;Z_F{HJb0U zoOgRvs486`{$|?cCL^id)-|bL47imxJdl0+OXe_V;oLN%1flIS{GYX`y;}E;`(&g3yK^`=_1k%6K~{NUNp7^(dWqa^0LDSRTs!nNrS3mJwe4})< z#%$(GCAGzG`8a*2PK)}sVd8{NGi{e`YO|+XoL%`PYRf-0yE41;FE1T+oV>N+@}2~% z5$m*Xx}M5{S-)*3O}SIf zWoyf%%FwuA!?hKC(;stmXWYr`VHabyN}E4H>(?TYpdyxIG7Je;htv#@Y!I|q=bhK_ zV$tCp&zq)ftzw?IFegfNi}tCPZ*G0tvChy-HcPM(s>PCh$^*P5DtL5IG zI45W|r`H3Wm+5QV#6Ndx9`o-DnPqmvS;f~nreZOAkJC25>#J3(;%w$4V86|(}* z%I>JTWzA!7S3c+9i?w`fg}su3HU0eEtle`tPHbWP{i5Z_TEPpc4F||Z;#wiy-kX)`h#CT;3XGkd?{?#co)&##HAPpD;v{GaHk=Q+Oa&3 zP^VpwBeD+pL~p+8|HUKg!Xlndm0nG;d|y>>p0KmZp+S$A=rm=NultrUFMqpR=Yc8kHOM?#UD?6Yg($uPwaKxP}E}G|{$r$LgIEY)Tls(Bl!RW%)rdKk@3wIut%)jz_-gCutC$8(I z91b1_eNNbzYCi8U68KuA`+P@`kb%qjv!b7RJEa`E^=>nLv0xUFJ>BP`aC}t=ucblL z1P0~#F2WK`pI@>byLc}%?|k(H1`cWWW8B^%0v-vClZ>~pB7@KX=j-@v?s6_cMJ*dcRm+r9SW!}t|_F0LGo=oj=o0Ku%ckcW}+paS; zX88##J8oGo=^dr(csgbJMl(6nTsVz)9TKS6RGcBS-+3jkZ|z9 zg@C0|wf`?HG{0Bzc<xOuAj-+7L#E+b^H$ zOqX9fookJTn|27dr2*rVru70GOCI~2FXlTmr#w}ajbp)~Jd?hjqo-xIPGj1T!ZD}e z`_mckJ-9Ts{+XeaGHqdkMqJcf`74adZ}T@!Yd5<#sm0ma*CcBDD*i&3Q(+t%+b*v- zYI|eLH-Empb3>X%d2TyRcywmgcD)p(sk$p?9)A&Dtf~39=ZUF!nAMaW)||QO2N(Ap zKd?r6o=Q05lb@*Ii7e)m2k zZs*Nd)ubtA!2ENw@oBZ3b(M$vw2U1mXP4FlTYbx#B_7ScOnBjw^woP;x(m1OTXw5b zc=1V=N%FACbzq)C` zSB@zY6OCHm@XgsbjiDfV+Qdb_dZnX^n0>rfshJ+0_R(xRbL>&hZDGMPet7KSzSZjM zvrCA%S2uXmKlka;y~-V()r&UP1)bvBb1|lCo8}BBxBHiscjm5}am!}8ckHi%z};nb zE1$i&)ZVj;;fv*Ry)Bs+r#!zFyK94n<;pif?pIWFsu`IWI)c2;fBzH1H&IZ~BT_ru zlcUW?z|&yePN5|t^PXSL+Pc2(>uP?R4+je3_dl-=5;D35I#}e_uCM3+AGWV4f4(mE zY0=ToF)2MOHIA#j&f58AGgA@UoWl0qmiq&NUS32L=>Pnnk=7&wp6U`UO6*8Ut zaPivvmA`L$EnL}>o_a8crQAw5x0QdZimSU=-*#^)1LOTEjQBs0=>FIncJzTQZGjb`}sJIBo0F3+kq z4w`*1s94v(b)u)pN6)x9LH`Oh*G@KGZ2z&{v%Ptm#@Hp{FSX*I5*xm~&4*p#q zttLxYP3T&=V1g6N1dlZjc1>8lAYkKS^~ASJ^yfc%8@x35;^Ev6_toxvF?sdtT+Ljo zo&2*CANJ%J?d*S;e)od4X2P?B4YCF^zXq$DO~{e)U+(bi?;M`P%k3|JGo3eaeh^F8 zi3fg{W@`Cf+p)||os-vB^{?l`7bn-1PWqO)SnV{UZ<}3m*Gyv@_4huGudL4>St7Aq z?T6>n>vQZJtWQs!8r8jTf|u6k^40li_e#5XjU-R+-D-F+f=_*Fx=mU_SXWrqBvy>0J%krE&K_DkZTGpDW?J2Q#8ZMQaj-IB4Xl7TU~XQ!V=t4dPG zBEg0UKDys#e3PFX#3gucmf_>`|Gw_bNK$0gi-C%cVBH(l#k5ho<5$#I<7O_3p3 zdrpRHQwtL(x7?1NjzzZn1kL;ygc?0XmO3OjD^GGMOnVmQcYteO$~CF8-;P+#Z1q(? zKWEdMb6ez=EnELK`%ehhm5-a}ZY+>uQ<&T$>r}ES+WP$U1+o`U`*8}N$n<`DORA}F zlI`+i2QOQ5&(PY$ns7|*@6OHcR*NsM`gLhamhjqjNny-g?+kO&mS1puHaDqp=H2Es z`^~oglGWKOzjxN=EbY&q^Df=o*Sf{Lq-<7(+O@m?K2BTgx>_WvSc-R9ZqRJ5#8 zGgqp!t^HlMn(Y>2;OR;8QjV$#%{X;6+p=j63#A6lbBRAH;8rC9DjRK z{NL&M|6bnl)<66F^Pvalt+X8iR~J8J<$3bV=2-!Q@RdnId$#HvoGHksD4?|1VG5I; zGXq~o!?9bA4Gc`3qA?{BsmD}Y6jan4r%5%jUMcEuQEL>h=}cI3{MJ!_v9Bpw=BjIa z#H?!eSS~eQ(|+>L*_1g!@0Y7@57SiJ@nTQGWG|)3)w}}b4R+@7ZzpUQ+rHH%l~>nb z&Z2EI7F`Y%UG9+a*H&Lc^38)S3(kvc_}&sX_?s(~xpd;8%TiUUlN)s&raN3+t3Ovp zI(Wf0t2&`S#iu;CZ?Ku8l`1VY%Wb;Z&D6f`o1#~P1m_hMu2Bh^vqkFCttT_qPFrsG zVw>itB{^HfrascDc37}Yt8&v%=Oi-=&)G}G=HD*5ueZ`O?d;_HS7yy#8C>LcXQ^H+ z$CMdPNvp%tUnn3OL>_XgeEklN+uUS zJM;5Qx?S+RoQ`PT7;^S;UW zW}nV0otvP)TuD*-h}W{ou`ebw#J$yYVyabVP`dPYUW1C}<%xIAjnl<$Y-*pkbscy5 zp2V^czO0{5d!F27dSSJ=a-Lw;s@>D3-fa1lwrF)`&x<8%!>)W$JY{k@_7{)oVZNX9 zSTxj6w{H6!UTyXE!GFm;d(U1@_o-a5@rlZpgs|XOcZ@D8&0U#%A$NXQ&RF=WoFq7kLNG9v#*I>T5NXwtlnH^D^A-Qp;JF)0)=YlJvn#s)b*py zyRLNYVknuu%;nmHJ`Z2^-Q`<-rw6rknm2qdzp~drBXO?M@9<)Q1yhVfdJH}P+gIm{ z>3A32`~LTTd|2uH;&(ewzcHR6$y3JDz~~~hfMwzZucj7{(^1MUxrvp*Er%a+>^)KU zL8$6Wvoqg*jYFT*np0RbBSm~$T|8A%PcQLsP;l%#k}#i<{dB^&oyG5MpO=(}*3FmC zdcQ8tfBxmr<)6jNpM43MJN0L1TG%!F{eLd4QOllGaeeo_pI5Bsb*c6VaJne;hIt=Y zuuQ?_$&Vl4o1e?~JYIP+Wzw>hQ&&o!(ea%8XX&hB*9jTt_|~i{7dLt^%gaP~!O_Gi ztCSaP(Xuhlw!fGdvL`#^xk-m%qmrlc#I(L{7M=T>+b89RU+-|bdE)#gA^nPNkwI5X zUq=1k<95*8Gd=LoS<8DbITk(Neqoo=HOuoE4w7}Y^Bs*C(!PGXe?n?`T1uAYS=*yi z(>Goah&ZKnweEFp?!%R7=coOD{cQ99MLJjKJ-hz*`njW(JLf1rohEzy+#YRB>z z-!)5T=6zd#dyVwp{i=<;K`)w9nW7bQoFpRV-V)ioAR;7i|JJrVzulM=b zx}}U~&$t$D&Fq_5X}WgL{LMck14Td+$%hX*Jd|FUa@;Wc`jkJ8M`Z3O^V=7_K6Y08 z&Fsi8&x7urDoH=RRj+uW_Bq#(<#Tjdq}Ojd7-ChqHE3%{V%jB}Wo0IuPdNnwuN{T*7NogI`bga@>#58OQ#|c#{4}-wd3biLcG;S3B%hOWQ7Q#VV!`~Oz6E59CI6_?fhX*Of)p`#+(^uzA#$t*f6 ze_qD^{ke@d-*_Cp<;b=xL~qwJf7^yHixTHfzL~zxZ?d&c!p(0xF5jQGc=nqGxmGil z9(eZV^yb$)uRhnAc=SDUwXeW}a^Lq-DR#?Fn47Q8j`Xbx-*ABSg1~>H{d=+m?)us< zsY^^Vv3S0Uz0~w`RC(PQo_T677x&vFE!&q?qJHj^w)2yRJ)a$9R;nF-m|!9E?DOB7 zd951aKWDF$TyWxCp3XJrh`TGdEHw8&ec^ffs_7>`FL20O=9X4CfBB}#zx5|n3h;$# zUQ943eq`e5+Z(BGzPUg286&SzS132PUcyVAL$j{@%`)>|oc;H6)1Ms0)urm+XC8^( zKWFBxh(oVt-dXlkH@-ALHMhm0aN=i8pRM0qKmWP*$v67f?8*%>FFro^Sw1Us*57ll zYOgN(wc%9w=~q6#-*3BTFkP);-m-A}gk4^~=O_8z-n^9SobgS|n$P0m51VGaW&M&S zeZ9LoukU&Jr0DOfL#3bXG~V!WqWEkM@jbVtq{AQH+?K4o#mf8;LE zf7AWT=CIn)yx{rYuhcY#H8Jef{pRSYy+z`5>AF|a&MzXF8c!ctQ=p@`=lkJ9-qW2d z7G|mjPhxm%v8(oX*^!8g9m@@;W;{FXUG#u$vdT;!wVRnzj7u5Q_U%(>H2M14@^9YM zJLNMfzws_$R(8smcgAk^MB&W>J6Ggin0C6{U}5;w6RFZBLcvyDj0(L9J$7GP>n1JV z@UJT*y5pa2tvsLgYt1)3i}+WuOD5a8Dr}IH4t?Hx+@$dUt8kV|L+M$89#(_!b5;3m|1Lp}lAfIVHomojR?G@7S+YKCWv?^x{mZ@odz1Nl2h-E)6SD5@ z*QmMT>JhMT{k~tXqRZbkocS|%=JJ-9%5x$a7nWznE}dIezt1Bo#fh1vr{#=N@`R=T zi~eTlE=rq_%FweWh9$`NrA$lfp59HfS1)yJ%6#?tuiWeO6`s1MYkr%h^kT$9yOCF^Z}pe&vc`)mvwA;->=ruc(`YC7D*J)f zrT6iDACJ0MiS3Ly(rIB5t>0)g>6nV|y!wAXpYQuvvu>Ty|LLYx;;H*p z9pBq_9gy`dzq{Ll$KVjh$F7Bo%@>QjyS?=>hqA>-V@4gL$+H*@SvG!N7Ww6QQNMXe z+KD@Bd8L@Uk{)mWB$DyoH2TvX!Lu>?|H`NSN;fmxl{2Mi_m_8(hr47s&W4!!27k?3 zwe;Vedq#(MJrp`ud3XAk>J~;b>1!GnyiEONI7;Ma|5g)tq5t=N`}LfjvcTlm4hrfV z7hZ43zhr#sUi;<$JOK_H>%}-($~;aNCD>-8E7 ze>s(?634wdWLM=x{h~S7oW-tOwNyOr#SvJpah5gX{pBmw@7LbZC@JLf{{NO!JoaAg z=I2IDs?#pkUsW!68ew!_mLtaW*M0u$;d$F^uIgCTS%0}z)!41baY1_1so?1M^WSKF zwG`lZGiPTr(^or5{}vO4{&*donE9e+Sjf-`M~79bfV7=I-+MTql!q_e<`XX)STV(p34yapBKhHV<+H>&2pPI#t%5 z$ynBN_p66wr{>v=7SW&VGDnVOTKTm&J+ao_6flKXpqXpYYv$>d=7-aiUr71%yv%g+ z;Yr%Lxa8;CD;rN2?M+NP9bSFGRX=$C^8K+N^{mwcqsttgpO}*IEH&-pj6l1bH!B?3 zsyqZHZ##dfRjc^Qo(oyba}#^x6iXBu?FyIvez@#c%)S|6i_)J>bmHcV(Qs^tliap% z&n}j)mI5yXirJW17{1!c`Wrn@T_3loV-o9$lP00c3s!kfs{6S*{-^xEr{e#<@Bd!^=luWE_j@1xxV1IgN%Ly-0g-2XY#lC%Ov@g3R>gb7 zt@tW2U8z#E*;$H1*}*tjgE>3M#%{sjO(SPsK%b)u`eOuHWchnp_pLhIq75zyP-=H(pjOigRey%wo;YxR5+8ET*;vAqyEl;`^T5Te*`43x|9qOh|JT>`|M&XW{}Qf$z;E~YVfws^Pbas( z+w=7h_x(S;=l>j=zVFY|lPN}?YOAucDp$PlIjZW&!_U9y@WNS*2J7o=1UqJ3z4p`i zv)kS&&qbmhemIq5b^igwJqv*Y;>SbghO5ckm-ZI1-7+qOnXB1fxRqxVKd zu^-oVe`h(9gBk}u2Jj{Oul7FNYUQ_n+4{Mw%>6vO!|ZQ8YR@S0`Z~;$(S1 z@2vlR@?UJq;a`{M=x(lRKRdHI?OaCg{qLzFJ0^UNebRmT6LTYL&enXccjp`ZHq~GK zxXJ6zRmu6oIn6H25pZJ+afAkkJx4vHe_w~N>H?^BX?dHfH z)A>Bjbj^dscV`}2A<6qP!^lqdq=Au8-^GIuPV|*ddSSts5P7HPOmY;5!)DuWTqkF+ zs7_AMwk@|M>kF?xV`By3AOjUblLFAo=S$+?Hg02zAT!y`3~c*m1R16SafVU zx(m)VILg@_Fj!_Ttkivq@zR2u-@m*(o!-!Hcsg4$qw!{TE3Zo33#-$W$905C^wbR| zx69u7aaMTAs-Mr=cUJ5byY_3*))S?xKYaSLVEg6&YxJjnFZoiM_@;#Sm>9>;`?}np z_b)2AGtI5CJ0@}C@ycmGzUBT2o{{`5t#e0mzkPkVKT@5xPN9XO>0HDi+NVXWdXW-A{Xy zW3rW0|Kk@2VmIHIX&}XyEZ+NmZl8MROwoz6JQsE_e0X-+D$St5smZ`NICQ-Tm*mmF zl8Og>Y#noE&RXR^=}Qie>3iFwoTpn^R!gRw4CJiA0xtF;81J zb_dpjCbg+9zutU1eyDNRl}(AuoIBd->3=`%Yz@{+wEpWaF0-|Kesk~3r_2t$6aL@br1O9E^o4IGJo}SU*uLf0*@Yh`+x6AY zxV@@9GXKJNp_V__cm6rIYW>^o3Qy{{$3*qiRz3P0^#&7Gz zOZ4XNd~s%FKZC(sm2~yxA0HY_WA5_M`B$)F%g2l<^LklJ1Xj$FYS6jh_UulyY8sov zoXID4Y7`Zg6qJ+{yfrZWysV{1UD?-E{>W8l=QXRO*GC+AnwfdeqbrCbXyak_b;d#y zwYF7XoYiaa-))h)vf+#?QI+o=&ndrk{oeP0ZQV(;+nX5E3~XmF+3v3z%D?fE$WrB> zS31wLr^m&x?GBy4J#6Z-Br2oEPQHIAkPugm2yQgC1NNY|O!d@{xZI7%DS*UOMwi?}EYSe4j5R zI&C6tZp%JvJWbp4ZD0H6x`nU&)|PqAaCGn7U;8M?yW`Bf&@C@+T{)n&?p|2+_N1x1 zGNSWW|F`sKUa97KZu_|+RmqD92I_jAlQzY@+10!%y?S-!&LziodHu7l_^)-d{f~LZ z+}!BZ%W|@3+<5!({Gl1=ZuV}qtl6>W-_7+zM?lpTN6{O~~n zN9d%(hnrt~$fz-!)#LUuV^W_wgO2aq4vXituO?4%5@WRD>+k1VC#!kpunptY5+hG_ z&sodPHN2TO>3&i~in?`mXrj19MqaCr&32uX4o9A5_IzGB%Mc-htfeoWnNGM8{_ck7 zBBhxdy<%?~#U6Ax`mkN@w9MRM-(3@)e-2P*==^f;MBe;N(fY*~#n&0?W$f-U`@CpF zY3xn44sQ;o&6WR)=bb(?^ZHeh167>5CtdTduTe6Mib&tlpm=2Iy|3$b$roO?yl$NG zx52e+$A-EU$&cr!T5~P5|`)6oy2tE%9S%du}=yZI_FqCe{|v~pHke4mZlJgzbQsD=gj$arF$cX!aq8Y0_T`<^E-u{M6mgMJ z;z8k$g~!+2@Sb>fSImpOKJVt0YJK=-CsuO?j9kBZ1<`cahL9e%35{bu){_0h*~Tkrh$ z#r}EP%wKaZ8vS}1qInHeUglW;pPts9x9$E_&Y$;nYtPr8OZ{r!eQEyZ*x$!XFHZO> zZkrhOh3Dt~m}{r%r?b9rC|Ath-p<$6(Rkorz?XNaE}ffP=gplncV2Jbx_Ik7b-Mgp z9Vd1KinzNo9jM;yRASuV)HNehZpR^=MI9$9O3KQr(pI*M=^dzK5!hDMlV(2G`-Mb= z$Q%<3g}$e<$MY&C%)0h=LTNbHsp!W~u39^-a$NW|WK*p;=W=LRja)50P7{KJH=TSZ$}-fRS@7{VQO?x5a5VmaBSeq z@mS_~xoDwg{U%=i9gPR{G_F3kTJ>sguiyDA*(Nea4lA~b%u+n7RC-~Phi@fIvhfP> zg~jKtESS}&Zs+N?Jbm%y%^oo-hjt0ii0p2c)jyv;VX61Lh8EtW@8^;wpm@&$C@1=vbWwjq(tj$nr%USL=<=^F*4*u)YJmPj6S3RC5 z{CtXA#ygMLuMK-rre8i_XZ$vE^6r9gQ=2=pn87Y*VQM_!$H`QZP`pUv(v|0p!KXj0 z;5fgl@xW3e`zxDVno8#QxCx89>UFiXv$MCepL3m9%n&qx+Q#&r0ul8VsXgB(ds=y_ zEiN>Yn>~~H=qZI0bL_HbKda$f6)yJwu!ls3gpI&%_4nQ{Q?vf-8k?G)cye|7pKReD zF6oEb0v>ocmV7?k|Jy})Nz|$GnZJCDSA+`}7|Hd=*EmlJSdl4q_;6RprK#~{fAbXz z97SGFjQD+^OTnTtWX=Ldc1XapFg4B=m z)&{Uo@=YnaLj@GVEvtn8v zZ1^>^Z29_2n*x~G4)AcJ6zg8=e0oiysHo-iMt9vs9u zm`W0yy%=}hc(Uof|GUNmp{l`?0`p8}aGz#7;KC`;%9YD--0w-_swaVV@xGwCc z8}vDFO4pJ5pCzOc4T?P6JD=WreKI_r{YqlO2d=YAp1=7o_kqc74(Ek`EyA51ov&Y7 zG=DZKT%pZ~uP4?N@ zCtrX6KX98*e*eA)67@!2aXZ(lFJ?V%^L5|%AJXhrF(#(gm9OvJ&EIEI`TAa4B`-9O zf~bV^FV?Y_ylmZaL$>o$;QM)^pZ9w?`R4EQ{b@cwn1DK1|frXs>T$Kbrj^Udc!?RxlNuj@+J@2cNl_wTPZDZ3u?=4`bF zZ&Hh-qyPL%_kS*Zo-Dh|*>8@Mq8l?$2$Mrf-U7X!AA~KQaLj8~URYdN^4z9x-KCcY zWM$+}N4=$u_io!i`F|+#iv4<{iWf$!Uxk<1$zR~k z_M~ZRf90p6e%@cpaM$?syN1lKmK#dftd%Q^FM7jt`d0q#TZyK#+vOAt z#An~W@#?CZLqN%ojq2;|e>q6)-008AoGr~ftGAtbPuZ-R@+WhpGVaazyUB`M*qg2Y zzE#cdX1^n!e8p!Ty>QlfB14kes>#)hZ^!>x*4gd3GVAk}by4S^E{Z#xCGBx7{(Aks z2j8b(ZWH4?8)m&I=)vj(55K;j-BmF0)wd@LO*iH|VyI-%oV~Z}=54+2zp_Ic`ovPI zHl=Ctb@|F)zvQB)mi#v*i#ufYe~Al)n|0UT&dJ`W+q$Z1`M$tAOTu;p-TV^y^RR%_ zs>^G_C4WbhGFKm+7kbfFJ5OOl>8|IDvd4T>_Xf-_e>}h3FlOndH(jh|Z)#%sV$_Tm z1)UD}ZdG?uP`JA9d!l_$&8#ICIv(}RG@5ntLfsqo_?oNxex*rii+oXOopgF>B*&Xh z)lWyh9#)qxC~?c!)<1hD<4m@-X(5XFcII~`c2l#ObIlu>jX%8> zS-R+^k+OP|=c0@3c_)Ro;gLr}w}d}o)lxOl zK5F4tDrvpmUcuwV`Sum>4?9R*s=J(T&-0DSt4^+3y&EznEz9W}^mI>hai=>zoNupPTc3uj=2@F0}EN_BA{8S=E*%`C5NX4~s6^ zRW@Vo@`b|OZzLUS`B=V9&*QjY>J%@s!)KG>?paoao!1{NUf`O~vHaML&GF&$tQ{|N zrfk`=^^X44W&JZhHTfM=t~|f?$6S6+hQc(BWQ~d$PL7@LeE;O{m0RlReEx)}o>l8| z%|G4O|6acTJI+$d$1PK>Rw7{ugUF$tu7eM^K4}f#_jjiL9g%RK#W{-?&nU}@`zoHj zVdbwqhdOyQY~FgfR|T62bG1&ZoP7Rl2)n_gw1%0puA1!Jwd-bQkDk)$^wkTs`A_Oy z7Sman@#bh~V6&vh;V*a6c0@m)z3)m?v|Zz-6mgZkALgv>-nuWxebdTAtez$>>Wnik zTvPjWTdZNt?N!fCpZR2Yx#;_Yl`6k3^v9+yb3b;~CilfYrtm4Lp})1hdPti*ULEqs zA;H&5!C~{))CKdu`0YGfW*t=gF=3L=p{k=>XJ+nS^D=X7`_?_YZxnUURbAGpP1#pg zlHhMIvHx=-lUh<%RF2dOU*QTzk-Of1p5O1dbY-&E&2^W5$~7kysC9+Bl>g@}Z?{|j z*b|Ci{_ODX-n7VWcy9OR=iuK_p{C3Pm2N;ZCxb& zz{A}zICQbI%A?S|SLf}Cd@Zr7aJj7EMPTlWG-zz20KG*!L z%AJ-K*&&LemXvuSB}+VV@85ASk9aoy;_XwC9A}c}hwW&4Ce5+Nlbz*7)8CgX zneHl9C#_#JMJ#*$;aNvZ6HmW(3R`_Iec#iijfZ`!_s=wr4~@^Z7dE%}ZFAk_cz?|9 zpA+5LuJcb>S+$<++4*|~A`^^e_1OJSDtbRJXxWl`Ys9J|s;nLr{y8)M&yOWn6e8y} z8%S(Ue*5L@8M=68Kuz2C7t z=5Bhnn~PrYZx@{MEi3-X{qpG#Dt}IYsd;9fc!}tz+rpnVPMN6k^OLr|^OG-cOr|+r zdtLPHn&6xT<(|7=uC6?1kSMUj3N&}bp_6o-$z=JzcMm_jI3>Cx-S5KE2RX4d7Vjr$2oaa`8aj zX8%{k&9=H_3L6-2i!L~9k-q=s$FIx3YfUjqdKq`mt*qehue|4GjJbVhwq-1Q8anUS zjQG{h+|=iCoeO+9U1Y_@Ga-z7Iqm;k`F*!nd7fIBhv2NE2SqG8R#^YN8~(2Dv#58e zf?$GyYwV?_nKwTCi_ZVwZC~+(Z$d>E!@7BIuk1OPA@cO)^LdlEyQLkwWPdp;ddbFz zac5`o?fCOctXl5et(144ei}W!D*Eo$@#xIAXXH(bs<~SE)L*9jc(C@xt-?2(JZ>H{ zGucW?J%PovI97GLF_3iVa)e_uTJhT-j%!N%R@ z>k>kFzcdAWW?(U9VVZvSXtl$7gA1I=3;zY>?vB%R+q-KX3$I(nd)F0N%ThHD$-aDa zJO6&TY*^i_RE{U>cQ6d0G9<^tS@*^ zzO4Vq+^pVSXClck?}OUT4A;d4HM4$9zWAg(uC)AEp@_98|JSE!u{W14G7sEsw&$bz zyoV}{S`NF6lG9queb2bxvwVNf?tAI?YZ{>!bjp3rl(kms>_4`({r^kTN5vW-c?zmR~BW@2z2o%JlDD8UiJIe z=9}Y!T-U!_a&~&++5OW@>w->o&fiz*5bq|JKHcv|lm72RM)EJFR-L{#ZC`KO^6ip5 zQ*@L}97RqSUbud2zyFtouen&REw%qzHQVy-n#ryT7XtNy8uqQq-Dtn}wd#c4lI|P( zBy(S%uI}Vd7yc}iR$(pSDwlYCbF#SI_o=h1653d@o?7xM zh$O5kJ8Sz#`8*Gw()?Ney&_Rpf6d(OJXz1`_owcB+wYHV{7$;J_LF7Kx4O%hdAg%6 zP2oAiYkj`BswFRRn{KgVcyPwPAGas?KHK=IKJKW}bT8A$DMweG`{(P*{qo|Tta(>0 z*KL@)Jn`i*rjD9ykJ-B1()GJsuWH74rN_m6&kF8d*>mPk()6$w^Lo|6$gg4y zpHzPw{eCoF*~e#H{Qj>i)9-b>le@{wAb0bMprgZsDH9*9{qp3=|G%GlpIlg}@_{qN z!F|@#dC6`vu7zJdtaY#Za(MaU>Lrs;1bQx>y4k-a*rIvYi#Mz9@BMtI`<3aU9XbKd zazC1{S-sIS+NUO7|MGU)HM2KwBmA^dCheJN&Tz=-l5XyX3i(5^rK+K9XM1M;^I55R z;aXU>wfFJO*S!{6Mc0;fgc}tsUjbLruIcA*u7;-dlywk~Yq@VP*P#w6*=g zjv!s*73YmJ?(Qsp)wofdDbKXpQ&IiiWb3b7uOto%y*BvW6aKk9*HWUG=g!}>&8*Ah z`z)>5)~w`YGd2$OcDq>H{{8RA<#~1=HTWK<7-{yIN*sA`#gBy{|If9P+5f-2F4I4F z(DZDOvBa5)N{@VlBZ_?c>_5g;evtAOKfOp>+uEe~oQhX`_2YBt^OKttrKBbGKGsG2 zUwOZ)esfrq`P^eOqhsB-hg`hnee&1o)UX@5Q_VYy@BP*h_`c}nqP-cjb}v}DdZXEz z4Yv%>TvPk8hBjWRWlY(E_koH0%Okk|d36uax^ zB$lq<`|(=({&StYFM|%vo_c+4+=OYbw0-%4fw;aqb_toQ0csg0&l?m|2JZ8zJ- zi~B5yO+Edk^MWyp)u}Ia+rp<#TbaY$ZK|rRD!{>F_LRwX!TO}jd%9AsMRB zqikh+N$b5yTTI)H^p88wsb2lMPkQ$pQ}>^XDt^t@i(2S1?eJ{YR|)se8hM}gSpPAp zkG;gVYw3lPPagh|wg30~(d^?ZeWg}1+&op=YO8X6|0n*sr(fRPb++JQI2)R3%)I9( z=Np}w3X|CXKVX-u`qimXX7_dL0)^7Al7b2c%IiLQr*D6MDO+oz*s2>+*(aXMUWw3- zzdZkZJfqY{E-|^XbH%1X3d{6MYXkp0n!fwMsTcnv-_D5qziFQNnY;+SpX>j)Y}I}> z+3u!x_OqG2`pe@>CKT(uzU$w#(yZ~TT2qZd^c~Z~HMdxkbk{RA?%RAFv}{6D>RXA> z@5EgW3EDZ)4bQIJ*S@2$KIh=IW}%~nuWHvl+V<^6?6n22AN9{Hp7{NxmiMvsYSmZj zwmaWV-S#ig?e6TUOSwWqch(lU&kDYlDQQ)I{MqNZj13$Q?)^LYes;|Zw?&z1Qpc8Z z_%H=XWZwT*9xwmz+3DoxCWTCkHMHteD~wIIb{zkHx8lKLc?p}Uv%fhNQ`L&YbDlAO zOflIM`0JJZ-%E@x$YR#kP!RLwRT?OvEC%s=q)SHS7+^WNMJT%wBm`G zcClg#N5}+^;Q4#ERmzqve;rq)38~mlJBmb z+2*tA%-oo4r2&wm@YGX#XYSmq^|I3Iw=%}8wZd@=QZ zxa-9=Be(aH{5LXAI?57mzjwyMr?KUl(*;Acb*h%y#Xs4bu=Y}Z{-@EgT>o%pE7M<^s<|vtMD)pp>|3$G4@0SRrOw|?VKP$eh6{}yo@IdI72j33( zJPx{gFd^ZDSkm=-}s?S#aop-)VFvak5sptx|_gSYscU3g5>pEEOxZ$p4M8+PyZBzaUgBDf_y((?K zP|3#hJSnpOlA6Q&=*`jhUcZ~|dhNiKGdw5$vzr{fJ@3xNqW4#HI5Hv|UW!`UE;OFG zHOOSf=F4(b!H!{zudM6PdD6hx!s)O$;#p<1?lko*M~kBGcY;#aOqnL>?v}kTci$_9 z%|a<3%d@5jX@^}8pZB=ZF86*vsQ!0HzV7QYhKUzAQWT97lo))k9xpm{ z()qqb{bTw6diQ1&6s)*#WRLk-b(T*iPd$=*7hP1JZ}IQN?z_FtvwM8ko=B*Rau=}a zVE6c9{r}7T-ngCWB8wGYzdVx`yY=F$Ypvm_iQ8C;G{e;Tu4&I**^dThC;AZGA1IIn#A6CH}_ZMQlvd&t{b$TgFiPPVMG?Gux+);t|5ey4U)mKXz_Z z`%yB-Ni^6tj#0EXf;F96|wghZmm}JU8ZR6zx2w=Yi9So zFLo7O>pRW9&+M)BoYNoVRvmWdTmN@u`n$cqk2NliP7=>Zi&d1$-|wpVfB#RRWlxF8xx22#6HjlNBKyLjqW=B4yWw>o%lU-b zo0XfN8RrHcJD1E~_^jLXjOp>DIeT3<{#;$T|4z&2<(reZa;`nQtEl8TsiQ-E^M-pr zc>t1GBxHJn6n&@+p=td-F*4k@3vh3 z`0}>xQi*An=1l_6`ug^+ldwKprFzlV(ownCKz(nOIPaC!w`29T_c6}A!XvRz&v%{W z!3PCP9M&v8xl&r1oqY)h>#`GnM0k(Qy8O9@{Y+Z#n~o-P@$6MLSD)`(b@_5%__wz8j{DR1Dx(pMznx%~XXIXH3&HHpr|8L%>PjflGEW1~- z%)~hEWwx2k>i=6`UR4g`Ou770D7ZR)+w$F!>&#NNZr)f~%?7xmoQwyv<_-R|DO~J<8CxRR-=MJATKR%0LudVsyI)N+C z-#RLAuitfM@rr7ZLi^1V_A(ePT(!+@kNUkkvAO$Ad8L-hUi}@h;+1T*o}>Tmr~@4y z45j{e>pwU9^UCckGxB)TdvW&p{crYtTV`*(FhHpyKD=$)EULKbJ*Kl;@+_^4p{mYbhcCT0&QT6H0?E8OS zp1*6pv+j7dikS6`gIBJc5fO8h;W#GuYW}YmzxnNdHf}6-Z{V z@=w3?>lG_so||wyE%TM_i5kAtT@!-y?rIxf-oBw^Y1+%_M#V0_{ht@_Y<_bzJ^SN> zdwSWW*VzQ8b6&{J&3N%Q!BKfbN;Kv?F-hI`AeZShatTVYn; za9=h!skQ38OO0Se%jdq=2C{qD%!;Gmcj|^Oh!kp-3YxC9|M|Z1f35Ns)n`85`gq`| zg>U}e!t-@srPKHSS^8z^?w4DWXL%Y=6#IK<*}roqou04F%w2zSrhXA`)YSu%t3N7V ze^me8`D1@g$9MUU_iRizHT94|BWr;nf_U)`|6H-s@JaM{Xez&-_7Z%Jt;3l1t!k)khpEuFKU;Y z_Gr$pv@6prH+}cIzF)deZhA;)__pqYO5#iHazj>MJ$s9BGE=Z|XzuCE=Tny||6ITE ztJJ1*DMu>bf8N%=>dn3>#synfPD?4RcM;`S;}tOfdV0N%7)Oi&w^XX4!+9O2JNw0U zl(XKm`x}^RjDT&LbRq@UJ{jdD)k0zf`I&z!NGz9h~;v*^Y$ooDiAPhWAmSs7jH;%)W$Z84{8@KP0>`G*WU zgndoy>sm{mf7v+qML~AA&#nCMYj6MLpV{@cFmCsZ>F1ihTwnD!ylc(2ue%?`lpeYo z>6C3RxkhY<)SKM@dsf^i-gi6Lo0Vy|(yiGCizY9t&Q9R|vQ;kf?SF@@syAcGube&= zv>;gLgW{SLc`2C}b#La@eA$(3osRmbQ$O2vpMs1eW7eu<>6^^#{eMrm z=l%J}|L7m{9lt3i4rhEc*$hw5o!$5)ujHHlzKUNrpFcS_(^|r7?_DGA<7)$&g`Q0+ zm#Keo{{MrEweFn$r}wgW|GnOL=1cB`RgdFq|Fz!#^JpR8s-mc?kuiPthTZnk@y`n; zpPrH4zRFkEA|q1CI(6@=izk)dv>m(Szxw{C9{)e0ONGlPIwaU`3(ie<3tDK(Qs%s( zlA%eGsnKs^TJsjx_scq8DZkdXJ+V&k%JTy5lj-E>F&!-_hf} zXU*@m`G++XM4SC>swONs_N8a?!lM&Ag^w(mH_s*Q`2T<3Uo{_3|Np@F*IhwH1I@XO zo`(|V*s0$9uzRag*wGS^?z@3U&(HAQwo`r8Sq<*;^c9XR9cP0a*z%~z*R zXEJ|1nK#=o+VI=v@`zgwGs=Hemb|~(d$+v$o9+MGOScN<&AGB~gS#tlOrn!5UySRw z&2j4=c?)o`TuZ-g>*dY!V&2Awmn#!io7~~}m2@V7N*zTT(?Hgz$tUJ)3sbR%eie=`_wYrjI~szYFJjhdGVlqp52dy%Pa2- zzP}gfyy(KA#weCE&pO%!)y;mb&A}Z-Lvg~r|<7RQed%0+(`drkM6mb0-+uWI^)Aj92T_SxMSYvP=9m( zznvL-szYBmJTSWP;@ple?mHRoJ{P!DPIm_x-)Y#q00=`?CJ` z`>IYhmaQd1=R+!IXfiGqiu>?R`upGO^Y;|09Mf4?vwZ(11(u*2E%)y3{C;iv{-4Lr z|GC|0ePM;gv93j%cCl=hn>;(Ful3vFgF7-$ar|{USYzE`@&58lwf%3x|3225`t;F; z;=A|5BlU_yZ`hYAU#R@H^dl>i_l^DkEUTMtJ!r2^UFxvFo5PuzhlT5mkFWCcqOUun zc;f#Y&XeL1|Hqwks;m0P)2yYT`dXqpnhd-{)${+Je(s)DC*Ufe*t0BP^BLvqHU`UN zW#sHW^d0B_cTB$igK)leae2Oi)fb7G-oLU%cgCwy}qG-pmsxI?vGa|SI_@<=WcqumOjVYNgsO+E+qu``n`Lw@uB;_&-RCx%lWM5z2bA$ z=WGJY6`j!evz7&1;)GxE;jf6@^g2)d~L`&S(!_c z4^_XfR(CXLRSWn!Z5D6;1G|q$*1rCJ|L3XIK7Vb!T?D1Oc{v05IgCwDo%;46S?_z& zJ=OW^+>5o{UjJS6G~?XgzOBL=DihASnJ~^#Z1h{pFxY=RGju%SvE>D@ehbdNgLG-UvUYc{)Yg{{4 zc{8kHMdkq}&wEzZf8R;_+x*(L`}i03b2E*u>lN>eQs`4k5u27&@%YD!m)rOL_*I@i zXPJ#;@SI6%XBK&;7;5FDtvI5y=!;EY$*UKio~j+*GVS|W|KjaA&;IM5o%o(>M!JZ} zj9G4hPtGn%DXK~S@yxod|KE}0_x~@J-+g%FPLE9+gpcKHc2riF8M?4ANBCY<-j}=c z|K54B)BM3g6X%uZqn@?JocdL`f$Zq+k9)zTlZ;^?T!umWO&%R7j-1O6R7w5TeJWZ&f+zoQ=H87A+H>3%ueb@LxDx%TTVK^(#&oA!3a#7L%JeXboicek2@|KVTr zD~0)kA1$7;-ht!D%*ho8u3xs+-z#KWC40TSIU+z~e$dMEGymm;{7}AlyzTn^|0zkc z_LcRgr?qeuv)}P~zb1)sx|C)5o%zp0gRaG2TYZviqH>tvg3WtUi!44r3tGMV>GP~r zt3DRY$kO8H)PJ@KlAs`vZ-cY zsk!%%i_){AMT}}!zixbZG4ap7Z#}FEOW9`pR>M1@bYSjYSFfIsbkT>5eMAt?c!JovCr1 z@qOl9<}Le@mkZ3?uUO2gb$zSY{{^#Cj3U=Dah^SMCM7hH>2{6Z(<}G&X6N$qEa>Ps zQYgd!=wpV8wdjJ#%pF_ncdpcayS*-vTl`kh4W+aBo28bt^u3=mZ_kHkllg7u*j1^t zw_9EF`E6u$S(bCNj*-dPju-o0A6_n3^=D@JecS5K@5=WVpO!sg@pWR#y$dW$3NGt7 z#XfnwhUsufT;r_=Iel%JU;S?%O9}fQ`nV_O-;Oik*W!30pQK1FObPQ+R5^6_N$>3Q zHvj(Z|K*%s|6=8fi^(4~H;0OZz4xBbzCYkp@8iiApM1D!eg1F$|NB37UZ2awwKZDd z=TfE&mX#AC9(txP{{H`a{mWa%{kIRyJamP@Ynu6KXZLPJCBfaoz8}x;`?hudAN9xK z?>eNPX_F#Pr&u$-?kg(3ukm+pN~QgrNRvM0;I-T4 z#)dY$lQ6cNRkvu?|7FZ)c1Li3+Ig&Yo7d50_VFJ*w`6}?RcN@YqMci2$Elo_C71gSzg-Qdx9mys`If$pD|-qJ8Sld-@2EWUq4J;^NVq{cWBG8 z6T4FtT^xdEskiM=USI!lb+h`q(`R32vGD2%N3;1X+dvlfx_bMq*U2-sU-RVusris2v5j0HNCg8ekwaxZhN!K3kK5M<}ZPC-?q5E!} zVNGOOWN_&@(-y0Ci)YF8582!6eesi;&o=LyhRm0R^av`B$UeSairJ6_i|Ch4=zhRy8V2`E7f(0C!C(Ol6Op6_S zEFDt5yZ!%`|8GhC=hDu$MSc!ma_#M3i>~K{^IIn!HI3MAcHMSC;~{3Nu1hL`?@hlR zUCPJwB}~!dSmB$!=T|Y`-hFpld>Qv@*UtRY(YFsr%HMFZd%p7gYt>ER@6NyQXXSij zo9k;Fa^KS*4g9IrRnc{_mxcdX@9?8P?mqjk|m2R4rIh}>Lxj-`&|@rXFr_y z=ST0s<8qTLI__Ib_WI8;_7+mtoBd`bd$Y!|s9jIqI}et>pS$;4{NFQs&+m75p1|jpytMtf`}L*If9}0~Ys#U- zg*PYnEY|S7oMPiB$+X1komUCVZnfRf6GPVPGWWZhy_@#;^f|TUsJ3~Z3$C%Bn|*%M z!FlQn_eo?+e~JIf@kaRCKea0l9M*&4MK^SH#N`d!3=dgY3PhZ-ye^&Fd5+`4*3c8L z|8u{Y=Ceh0=`uC5#{qhEYWHlvR;8#p38pWT=DKiu!o1(Fc9_jS(>g;*M6$%Q;hd`H z<1^2BMYm1JjGW(}|4T;vp|V0lgOtUt?frj_e$3XC%}iE)u;`PJ#gm|o6PWsRHa>o_ z(jHVhtIw~{oyViV#PK;yN9D9FbISsimGk;0U-qwmW^MmF(n?({^;Ko+{x=UEEnHC4 zF<j-K8r2O zc3<|-`N!RU&JmVP-)v<5?CUyxk;90%LJ`ycnp@A`f~pxu3P zwOt$U4?6h6U zUzIkTUlZ85oS*lr#f8*qp>N}^--jL;5T1Qcy6d`Q10Rdn=6?zwn~oil6oeITc{rAz-*5Tr z*K79U8*S{q^x1VC5vWX=R6bLaX=2oxI33rPz%?Il%kTKN(EW+C`QpPI-zR;n&{?_a zpt#(xtY^NBIxMD}CtZ!%cKVIz#cA4F-=8^U<-S<^boQ>O*b_Tva`2^Tv)P!Otv#^# z_2D1?7B~CbRQ^f7SN)p(erx$%{qOu&C2OoswB&6%Gfi-wM@L8AffF^WCU5?jzyHf6 z`(Jl2pRYSyxFGP!S%n0#C(EZfz7Jwl7UuU|c-`*by7Ir%>&yN;x%eF=Vw6WdnFywK79az4Ci+d<>7n~JNv5{&PsU%Su3)cCn*Ve&&hjtd8VT6JHz zSi&Nuv;5DBr=LnbRGD7=bV$&&PwD;EKeK*rKP~k5%6;97j+@u|t2uOgm~<>ow2|sh zInGofc%-Qz^;J%2ChvihE^O?}`FZbsKfM3_i@D$3{bTB1-pg)(@Z?>ljZKHgtbDZ? z&bcXaE1Fsa<&G5|s(w6u-ZFV|F4$){_h_ja=-6>yl@uNG}o-QKu7In!{?8E z1TBQvInU|z)&E<4{_mmm{y53UB}slp?)lG7nMX(;+pTda#8u+r{qGNt-~Vs__iOg{ zHW{nn%}#62)rGnVpJdx!RATb;+3fqjzO3K>Rli<+r?K0V`|N9XO$avqoRoLu>PsX2 znneN&CSSZEYPvkGk?eTjdb7q07%tzM}-T$T*-_OQ8 zGxu6oaOP^#%||^B3-}{WufEEet8l^h+tT{H(D~B$*H3UeUGt^t*5A4tRst60)-nq2 zyRE<4I32&JzDi@~vNe{Izkbx3_9%Iy$b6AmY5d<_@3e34yixf?DLr@ccJHNj=0V+N ziLJlp)CU}i-1lvX#E%ECwE!R0<$rna|G!cG*9_SsUd9`j$JzXS_y6nbf6wjJ*Q+rc z>lN5E_1Bz}b4^Y!apw0uYa;fss-oz_Bm1AHnB(g+zsT40@B6#(1}}%IO~%eYnQ0CB z%C^D_ex|sDc5Gh!INJW7<9BuY2{li@WzVlw{As>le6B;||M`2(`?sp^eE0j@_mI;2 zzqj50y>@fKH^p|La<3&Cor^S1PE+<)QF57>%3dZGA($lH+33(VdB2c_hk$~^6O}ey zWdR-ajT0QQSzH(BL|zdJ5^|j=a#B#TsLgmz?X&G?-v7N-ZjZ^a?FqDQw{Jz;Aunm;9&xxW6_znL#s9;?(=X7}gHYz6 ziZWFe1U|U&G zP2kem{8s-# z_{WRjk5j#`$WO4EYO?FU*Kb*V`#;}~$Jf5Q`FHyLjvN-&okgNYH zF*a+jxc4$OKgHN;e<$z+8MRI2H5BZeUb#~vYgOc$R8a>WjwM|`8sDD%ey8I0_r3M+ z-DF~Ow<{a0dA-p|RC8)g+ST3eOs9VO)V?qD(P^zV_+9$b$Wz;xVP^%en*5dn3_eE| z8FXpv+P3rOiEroH@89}&aC`pW3%ASapS=CH&^uF$DM;_?teh>3UP}U0MT49>5`geFkf2rdys^Y_S%f{!!w7J>xwa3rZfBg9R zdu-4(7oqtxF4eX~(dFnum~>)3Ps(dETg?A_nR z#C>dVd$?HMX2EnOhm^IV>RMA(UBUw!)PnZUS!Q){^S6dLkNa!)zgrY(cXEB@p9`To z>s9@hO<$kT#Qgd|PVRpwo8wR~$NR{Y$us?L4q;taLJmV((mT?$Mi;!wD&Lc@lSuD?o$%Bbg7k6 zz>m3o@1Ds{bB)|4x98io`Tr(<*~_0J8L*vMpi_DJlDW*gg-^E2*HyoMy#7zO{k{K- z*RNIGztEjsfB(!qHOv3sdiY>#^OxS{ zFV7b0Z+2SsD*339rK(asv!LMWtarj^7n~`y;+H?WMCnP(jE>D3ir<;ppBGyehm%0iS&@+U-`~t#)@q_Ay!z#a11o&5&F6DoBWX z+fw)0LM%@dd=i@Oz5e>|&C&J${P%CGOnASO`FRIVVWyt@$5*RMQ#bE>AR|BJf6KDR zB^Q%8PN+1q957%x{wi(nDz8kfL%)nXYuBZR?p8ehfJxPK!?BhknFx2Mo$EH7tDWNT zKqhkQv@}VkFCQ<6rI1$&~Eeoi1uZ;%q$b zhg}p7UH|us{Y|vIL&_Ni(ZI$g-ew0Mr?m9s*SGKeI^e%;N%4jHU(XgC=Mq)54>0Tz zTzJ?!WiyL}m(!$%DV*XH-tj};&OUiU~rmDT9(HEA}5@1bQ} ztj(NSPdr$csF|4=ZTZcx|8--S|Ao@#>bVE&%qwg4EB~(BSF>WhOriPHyjL=pLQYtv zv%83Je}DMviBhYt$4RTLYmPVxO=Q@!`|NJ%wXfe^+uHl%-|35gr#}sPQMs`a$nJ}JD7+1-h?H+gsuW--MZ?oGB&z0B2SzfR-kqM3T)3!X={ z7pOXBE=fp}jXAHgLcM>H2*(;DtB=kK8+OHP`Sz1Z)l?vZ>v&btyx+-U7nk-5&rSIG zd5P2Stx-=tNgdl4E$Mdl>-@D_CvMH0wJdYiUxU>-*Z$Noc7J|xDDLNV7q3&-q_U%; zXTN=WcJJQ3#vBI&kGSc!27crU5ficC-ZDFT>B@jtU#$Osy??*vk?xv9i!@Iddf9qv zoM>-nu?)=%{Z39SURm7ti?4S2y|+us z`+t@1{=1h?F!y`(Bo!l%BNGg6`X+DZ*_M>Eb|i+|9bWZZAD7qm?)D zSBp(dzdY+NjJe6C-6$AQW3US*lw@e0Zj=e>L7#Hq7f2Mr&qOg_%BOs4Inz4`QH ziQ0=-dL2GX%y-{*rnv2ptVQy)A0Hx~e*0N*bHR$fhUbru9zS>Gl*mB`1%pE$Utix@ zKH2{nqwJy*R<2X}dp}!fn$9>=8+5f(BDsjss{5Sb(+LNB+O%f*iF-|RTc)3`y-P4q zP$X$bdwkvb-TRKK-OJb-wcFb7%F0z%4J$1U{Wf`iQK4*o?9M;_^{4(#xBq`f-L5!t z-Hs!wxs&x1J$Y8F@|h>QKuhVA%cNy{uTMUFzxHO`tEr3StB+5Xul;{^NA`>xD-$Pu7PxG~#wA4%M zORT0v%$!m&W3_@nr`7Vln-UUP+jl8lG%nx&>Ad~M|68v|b@FduJZrnOcDAX>LKk1o z*rc7Z(GyrJPlzV>EHN@F6SA;V5SU|;y;iv0^s~sdMCa%BLUSv3YHFR^xW4*P-r-ZL z&QG2(b;eh%qm5J3R$eMrxFFLPt#^H8?Yz0{OFzChuH4DZ!gM@ij?||awg;73mM^ty zcgq%)tcvH|AMw?ib3&GgtLLnMg($H+IWuM+G>dO3ShQ%rOWXAoJj=po zC!DoW3H4-Lxc$%F_r=rZdO10!d4ba}5lP zH>XvVt0^xE3H?*2b&5skp%~AlynKTne^!5=SDP8$>vVVOG{xkT8Y`6*4{u=edLuH$ zUC(V{*Jh>SC+8knRZmX|Rev-?#i`5W;t>J&4C$_;TRdh62^nf`>Hibo|St|aqTR>_ukC0I5 zxxky>Ei*12S1mrrKBstXn72#Gneg;49ia?MTBnP?;(BvKeEGC>6IX3~^SZC^@|Azt z9^0!jU$m6;_55aKTJ2x^l-Jd!;N6*veCum}+g#sVdgk}eKkv3?E?>jLa<13y z>qLJA2jRJXiv^@+O-**Wzxv;%P2Ytr<8nXGn<>#2py8IVY*|6-u zapFUlYfD;yUO=j&%8I`)mTJGRoWrPLIOFs0xIXE(_8J{C=GQ#8zQn#g|87<8^KTQa z-&mZUxN+9042HfcV2(_*Y02QHoRWHD2y|Q*J$sm z4u9KAk?XXlFaPjDE^EQ8T9$;hzLT$5s-Jsm-qgfUYgF@8(V)jr%StgIpz{CK1uIrf z{yyVJV&;`+PlMJ+=Wf+!N}jCD)X28jG+JH#O5=f_Lbo3N%>I(Xxa-HW8MkV8us0rv zSrfos*~#=}V>`$7(jy<58g8BS+-)-H*PFBWeQ>S!FG`yTu@_Fs` zb@pFR+X60v(!EGNa5kg{>c<|hjSy4sJ1bsE__DvAaveY`kH@?P$&39HW@U8{K| zT`ud)&7T&++l{YEwrL6*~+sY2pg)wFyE`O2)@0Z9ogM;yfBoKL%_#;T|a z@UDE%;Gd@)4>$wwu_Z~jSoxdc0 z&&--ns;~GKu}2Bs4%;GmvqE9gPWjdGYXd~R7-sx6syVz`AzJ#<_B*aTyyvc_83-zt z&s016>|3_joFne#-;Nn2)Yx9oVQgqpXqmF6bMAz1?6+RZ)PCBz`~U6f)$^tx)&wD(WzzeS(_^Ge<=(`3%&19s-8vc9j#3*)$OReE2_pR?Lt z4f1*$jxEbn@>3~g*pU*LTYAycUgq|ys};I4s=`m%Pn-2pqbsDP=;zLv=T{v4RR6}T z=iaQ7^3RgP)H0vu-@R&J$!S$I$un$Td7?F&x^|5Aj0Xp-3f3f9Kl>-smA^nyCpEFr zH1*-0nbX9DSza8K+?;i%c{$_X^Cww;pP!y~v;Gjr+2FG+eRK8+=9?5h|G$yth1A!b z-)0|RRoMOZ@zFZhQ_RQgnu;R3OoSIq{Czr9g?kEr^u#CgIJfpXt1U7#K4-^rT;y`w z_dE4LLT$!({q}#pGxvAvrSh0pk~tYXr#l?&&((`wp!`qN**+$;D9($G+x6Uq13M4rJ%1Vg?(ea9p1A$bHJ)1d znI$*qEb!7=642VPSG{QI!fSUPT3_$kTyXuEMAG}iF+4j(E)}co$&zb2cKU+BnQIeP zO-iwE=4ep%>v;E-Z+`XPd+Y6MU#HvO{r^Y1B>R4;kbBz!h7&87Ok(}5AbU;v{rfk$ z#%^l^m(SXDB1!qsSN^?UH~xQ@pI7rla}(2Zo(`9joSl;%`lzvUo>(E_>3VcxaY|wF zhyQ=??BDmbdw%C7jy?vrhv(icu6=&AXi1j1;<@FVZ_jt|W{cmi6Lo$>++Ko!J!cu4PhW8R_XM z%5cNl$8TnDX;*ns*GFDG`xSS?PEC7eT=vU<4}lz02@dp>v3uUFaYb0?SXG5x%=VLf z=b17@EFYAgEJ-+f$Eh~RD06N%(+tjqJRF5yT1yTIaCc6={rBE!_P_djZvAe~m-+MT z`ul&E!Y}2&Ym_(@uuNx9N#VseOh*@+o}R3wqn>Wi7axSaNjZiri|cfms8#{+v7A@!r*c|%N>Kl^{>@Ui;& zAA)w6q-p!RdMxNnpK*Lau}*sWz53`)zxK@f+pc)a`+oyBB^*6NqC~@5`Pb^hj`_Mz)+PYQ$XH~H`{eABJ_>KL!*=}L=&$e&0TyI?b z%zlx#^wh_F_Vuqq-l?R`t-QjxH*wAWzc)o1lB)jutbF1Vy~gs*^iRiQCNc@GT(N3{ z;jtex7S3u_iuj>)JUxy1=8;dv2h~)Cf|7ZnFW(mk(8`k1ys&CXMTf3jD%q$Vee~|Y6LHYhq zm-Op*{hpf76ws;_p1yj~pL5f=FW3dNKbv=AfzOIY{`QB=eg-{>&u%PA{dhsOF5|l0 zCQ;j6srvc1@8%xy(N&YrY3Q7xz!Iv&8WJL_DY$X}y#J@xPdmZ#weGCj!CAlk4p&=k z{?uTx@Zj3N|K3)=>+P%ldt&dd_i=aSOW2yvDJb<#oxAGuL&H69D`om^bPr2USYB@- zutZOBdX8;@>aPRB`G2$Tr`vtmQQmp3IV||*(o5m@?^p{tt!z&2s`B3t+Qs&E_x}H- zN@4FG^A^2wkr6er*E+xZkXCG6?z|i2;rUf{xoi@5vX0*MGneI=RClOBl5?_c*}A7* zVae*VzDX%QzxmH+N6FmZ#x)=0lS5omZaka6`tR4C=k-5l3l?vVImz z^kqojgKl*69_@4Qn@c-u}i{IMoE4mHdp4GPh+Vb&! zamvI$>$xr*51-#(d*zJrx&(H;=Snx;o32f)x%trW`F+N@=j&E}zsnZl>U!`DPxe~x zxfN5_eS5Ne!kx;t=d&W}Ugb9R3q53g5vJ#G+gL~a@mcAv|F14&85lqCaLr6+5PjkN z_HMb|him`;+4m@2eLEvm#znz}rI(9wR>u`fAw@QZBZXH&Exr2Q$=vxl_59tRQ_t^= zuAV#1Xhvg>jWT!2o5cw{OD`t=dD^A+@Ud)jh-Yi<1^yKdkyiyWcdNcFdtG$p*47>S znqS|(*gX4Ub97DR;Wv3*tr9CXSePw3rX6l*S@`IPRPx%XAy+yZL>g2II2$?LzFAkT zU%j2Zs`^6xQ@{UD%_rARzf-LCa<-$sqL+uKgVVI$RzW32rKx*NUQ{eJNH|=eq@?82 zm*^51qVKx)_cr+-7vEPsaNobVGBDN$&pt4jXk6aV{;PPUk4A58snN3QNsU2@3sxHyM>hEV?wr1){cv^Z zvAN3_Y#-lE7G-&%!&&#L^;H(<1=FALb?Gva4zWMJ6dO8b&ifF%vv%%dM$O6oGv%*^ ze4W{+>~P-ejO42GSI+!%_S^8kMq+!$rrx8k_CH?x?$R4eJ@JQswQtz7AJ1s7RWFbFb{@Gj~6!_iV76 z_^W0T^YS_CmazL-?ALk2SmG8V@cSzFj+w_o-k2nQH(sM!eEYqc?0ZqC_1t+mIXu6Z z0|PHsO{~57_wB2n>R}Jnrp=%AO-w;3C@?jn$6+d z_b=z#rmc}ZJtvfmZY5<&SErtiyLV`-SbVmt^xKThzAkz0e>Y9|r?qanhxx^G4*hH= z?xBF|n|INO-+p0>;rW?0z{386Hr^<${`X_Yp&)a^V?eZl(vwAw^pDp^Z;L4v@J13c*d-QkyW%V2N z`%KRLo6LPdSbO3n8D)?3GfF@0l^o_Txm?i2^ks_Tj;R$4Yc~EhWisJvP0uMiV99wQ z`0acJhv{>Z9M^_q|ve6-;v3m{@xIechMX`uF$!?EZA@P1#!Q;xb`H&ABt{XF4VbHU41z z)nRUS$MOHS1c(3E)7kz%pKnwCeqGtprG>Lprtv10=qQ(OkuTJC5&Inx8u~D~kl{$c z`uSO6Tj$L9yQ)#?QHZhvlll`OA-6LfJrfGOTx`D>dxmqm+*^H%@l=Di0_Opiu;eQn zz9*NRvs7m@I1{O1DHvpL?ZB8OKaFL|&+_LdPb~eSGs{YvO?vvWiM@R>>bE-Osva%; z=Kudhuzbz;w@(D5&Aft7CG|Dz3E%O`BTmzBvJpq1_1)LY_y4`R{Qva$+w~9Ac5l^O z^vI~OPUA&*nt_P=N?kQ|{h4-C&Tp}8>3*unIji#i_NcXa%OC&h{4)7X-nCm@#=;BK zuLWH%VYJ#FquG}%C>RR^U40H3Z#CvBfYN*Sb z665K8H^4_=!TDRe9xa=y5_kXG)3a$Wmn%K$5|T7KHseKZxZLmlf0vf_+laUPrjX1Ugpe8#&()xAw zGm{+^HMIG0`jjtXNm}KRu7}m(SJosF(kk1zCTepIF7X>)yX(TjyDd zKY>&NneE{_K)L#xzvzP3SDpvg_oRwnsQDDNG0>fvbqA<%VDr0Q)xrG4zoQW+>XM@_ z{@9p&`}u)AOi97J9mJ3PyVU>cY5IGA&ZezlcQ#bbDYSaNZGXfco$J>>)jvHfq2S>1 zhwbN-dGo#&mn%p`*V&{p-r{abVB6fergM>r@51!l|2HPZ9ll_gy6|}ZqO84KrExne z-*carYQKA2ez)|}w0m@c5&Fl)&d-Q`;7Ve`n|6^d)4!1 zv~Rl^^!@AXq8r9$VJjRQQ$$p}l)O~lyj^kUuNN2BOn2@5&s3|H{HT_H>7;V5yFAv zx4nb3*o2ER_f*xZZ{t|5I6 zxN+m#{_}J8to^ppch8;3%%XEUX9pkt@<)H3-x-Dr4*wsvp7KvtUGwz&eJM=`^KJjw zeoMQ3mO8aEW&)_acSt9+A#U!U`3e88d|&@rWI_9Ty~`|X*q+sI_+P{MZN5JDO?j3V zmmf9V@L%!6l=;COTcf_mCcb~ZNBt}o(@}8n|Hr%3cfQHm8bhi6vd%SC>?e!^8~T)m zBLx*Lv-z8DNw;n6owQ}P<_0aTm7BKSn*J|5{s!v(e>{|(uz|~Pbz-2X;FOeG zNg@W~3pn@MZN6Rgy7xsbe_Y+`=taNRpP23bF3(>8*TlX8{DUuYDK~|E0ce(k@?jne*N<-GY)~!7Oah@`Ce8?&h@9{9PWJEZ!ThSI#h-8YC;9H|?F#o?mZNORwATKT>e;w|X48>DAx% zg!;o7an6=gxj+3AeG@-J!C^WF)0a!2fIs-}vnt1h-Um%L;{Uw(YLKEoB{Ct{T=~!y z%}p$fRZlEbvwOY7zRYDz(Yn6!%9POe43*2cE(Fe6_FU5;+w%LB*K4127eu~a_|Qzy zkYmBYe-9tNF6WD{d3<3;yL|N@x#gWtXBcb?h8lG?CFMvbqRTO^Do%)RFK|L^zxzwQ73_+9tv z@yXrqyYq6KWmnHPZ%mx{v2LD3*5iBSx3eFZ<>gw{Z8fj>8UHWtd%E4nS7)u)O^%TM zoygo~-}uaP{S;@dyO%F+3jAAgsB7;AhPj?gb9y}4I=jRdsLyA7nm_#-m#&I}+19@+ z!z9zv!bC$gkE(p%KX+@YvF81cIk)?z5`VNUsEE!{&U{2Khb3U z!a1i{EB|wS(?3(gT6y(#zQBU>-3kAH3caz97u$4yUaxOssru!rJ^f3YI!rwO>@Hlk zZ>_+-ZBL4#%>Kq-k-Y3R_jJ>nXW6>1rc6D++`C*t|KxNf8Mi4K-z3VOerhsFU!0Gx{3cy4|MT|!`jXBWo<_$rb9*{{n_FPf8bQo_nz z*`71?q28vc9H#z`KW&^NcXzDxj_T18`K=tSF2FK5``VIMS2jMJdwTb;iSF|Mqvh{b zo>!iBmvNFclHIDaE8E`18%6O(MzYkO za?_mjWDgHF3;e)nS5CPL%a5{d-2d))*Wrg}gy#sUe{7JmKTsXVG)MQsvQ+)+!HHMh zAK0dzzkICHq5pr#=Fonvl^mUUOFvyo-?yf|@cFT&tN*^1e)}y=uUf2eLEyf$I{nXq zj)zltCr;9czqzgd{*P(AtWG*l_j-ALj1nu!a)9iDD}|KowD_1~S%|8179`@jEx z{=;L-Zg!bUYB;bhsT4hOqOyJEm#Q^Q2aheQsVI)G`#)3v&-VXX|4zLXId=T6+gpq5 zrLPv0ypmk0qx$v7nU{>Q|7KJ=81qkREWhFEn-=b8`SJSWpg9FOi`&w++5dc?P;*9H z+Eq(VmiPUA8^fw2J2w7ay{a-m?CJx?S}zv<7oSyc+&7qYJ;3j2)1G?P-{NWen)bZ< zYF^i`A#qC?BL*uP*z%WYVSR_o_D3SAJ*^rdx~BD-TPAO`PCbL?-c*G z@87At>-Q$Hom!OgAa(0zk0(tPjI&%qrkE@57L2Vret7r&Unibzx8L`(QGG@3g-6xz z;#f`uUT=SU;f{ONv6aPtC3AkqSN&^^|MhqF{@<#%AJ;lhG_nj8oICesBX|3%UsIDO zn}`aY6+2~{zqzmTnc z^O$}A+un@-D(Ts8^W3d>-~JxIc>kw$+4}b_D}J8a>u+EFzJK23YS~-wbxuFKyx{M& z*V5+ea%!G0mX@#D@^{+lx9sZ!?l|3%OZO+{7yp0D+w7L)V=ITED^3;Cn+9WyQO{Nza!bI&~&-eP6#k@7- z@8>NY5_j(1%X**lwaRw-lAHZgqkBFnZhfA`;j_R-i(9ZT#llSb{?`xD{|_GDHoxl1 zm(+xm1AVSHCmJ0o@R1Q-uCnq}Ore}hs0-Ulm6!j_^S|5uee-bszLFm|r^_r|xvOsb z=8JtEyb~FP8BQ)T)}9jde2(``BkABX*EQ3ZG(MZSxZU_!?Sh!;%O1@!%;^biYKl0> z6(k?;!f0vr%B8T!;*rI!_tp37?z`VVCts2BxKY-qZ4G1djLmvNhhX;77Nh zX&=k0n%Lw^M*?4&7>R6ry`+79<+Gpj|IWQPJrbz}YM+A$H$ZQqZYJR`&@vCb2d;cCJ-)_pa zRWBuwB+AZNhRbK~ zo5=LV>8-5R?{L=@KfT$r7XB&T_le0!b=J&- z0?+51XuVedZ1I}D3^kt2Jv%Snx}~rvZoU6bug;U-7i{E--D-UC^a>+KN1^vFKc-3h z|LuL>zwh(LxvO_;Rx5_JhG?B;n|6Nb&y^F(ch+8P{=QS)`G||tlPiZJX1x0snE!vp z_d9Fvndg1oSGoNES@YQK+H>bwzdD_Ge(572MMe|h3Q-l8RkL>H@H;>Hm2u`(?4qe6 zY)3XsG~M`guG#x76{~Z%-IDf?xn1!n>-EX(x9aP+nwv*O&(`#G(t0#!7l&Ee>(tLq zZ_Wj`#T0&zT(;^I12dCQ{7w$d%vD*{MIV02{`#`{{QuSW-`Z7kuhk6|GYW8z5)zh< zcS@U-8mQ!M>Z_m#b?tMd7@Q#8^70tXK|&Qr_GF>H&@$x-3NYW z^@1GpvTbX(&dpn%cYgEcw@Wfssx*5zzS_HJ>SY%*-~4X5pYy)It^2=QzyAO3N85U% zk9ArEs($4D$Q!=WP49ME`Z+e6w&{y}7JtpV7|_5FDAcquW$m)s(!KxQ=KT-5e%IFL zz1-68RwwJ!@4nylH}97Gj=Dv6?Mm6}3eA*~um7OulTBJGr)~Ml@73^uYSpoB~PN zM^*RkjjLb3`~UCyjsL6bKYn_?zsfc0@8Nwpc^Zu!o=Z1{oYeYhqQF-;`?# z4(#Wqt(v#(gX86WR(ir!@0RjU70k?D+nWPg`X<&lSGbq^Z_6B~dbSCZ^5SpiZokdm z&Yrw`?#@*8g#rsE{?rWC+t=jSpfyqB?)`m#*7C>wUHyLlufy-VePnK0Ts2vG<@eqo zv36%pyG=Wq_Au~XTIjIWm4*BLY8|ar_Y~u=PVC@MWfVAU9pF4CLrbqzuXK(D&m8X{ z&mh5%OeP(HE(aB6+?ZvtXxh~qMMsWFNgUYpz3W?-hR4HPti$Z zmTS2jUD?3c7MOh1;Lg9j=J|i0&Ax)nC4|CW}o&SpU z#UpLmze)45*Dw3!bKI!vYiR$0RmNdC;u^;t8~E0+6|a!ij&0HIzqLl#Ci}mF13Oc? zo4|tQ#;T_3z8L}wnA1I;E?g;GANeChJ$Z|e?}v_a>$5D94J1V7c1GRb`2 z%;K#(H}2hAd*yxCiXRDT5vE^ft|*vr{=c!v0?vRo|FT)%a*upF=>6>AUH*Spj{m;@ zIiULYq?Z;OU#R`%*x%Bgm4=wxJbcKyt7@oCNn@rb=b z#(m!#*gk%{mS*K)#qO@>%l&ny$g`zKZ0@biKF89^c34r=OwDuBLzZc#0t?)iKlKw{ zklB}HxSV0{rdP(k8>+*S^b%^hOuAf`srlS9o$}aW^310W8!kO9_o-d?&*Iw_y>D~p zy^Gw>&eXVbrlHD~2RpCzCx4y){P2vhJyV2PnT%&FnDLI%^X?Ni$hwmxWcIvk$D#*iR3 zL76qsB|)`gl7`E|Q>#AwcTr60=$SNWSzWI~n^5QUjZ;00?ce0M`YD~-Gs`_c?qo_u ze)@k$2hEPq-ipS11&i9Zzq|MA>iOEQ`+rR}|Mx+==ECE7#w!)K_3ia8FOz&ycRl3P zEz=hr+CS%{HEcKAZq@Go$R#+u#r0r?aOJLGr?AOMySP57CQB*>aZWOxH*xjVS3N(o z&Lsc;VtdRx?Ck#1*I}<)N~Zl|Wm@f8tIF$Yc_G1IwPqZ5);;E}mwM&z*4AWy`CfW* zmP3MW#CE$+Cex;Yi-wk2$Cu7q(Of8Y{{F|tmk(d>>$hZh-_+^Fzj#R(E8{MjO`nz9SvEb=~gu$*poTOL`_fF0Na6 zXjNjNe!q5Ln4!_}9JMq7>4+7AMt8%%_wW1mYxVvQGsFKK_kZ{QqVeD9`H2tKY_)S1 zb+O~#v+=~5bE{)Cmxs^!Qx~}Us@he@`~~MkosAAZGBx8fteVyBv(=?RW7EX0`6>&p zKHGVyi}Qk{sqeu#J?~>H^I|#rHve-`D2Vf!InkVb;Tm?SGq-wk`+`^7h1bd3Cw+S! zu%5XwIPvf7CBhreyx~-|U|R0qYvaE7>5j(p!LtAM>u9WAwJIvPXRDrX@bgUqEW+RT zQ>G*p{E*4setY(Hz4ve5UW}N|qkP}w>r4hWy%)dqjX2HwZ@f`X#;xSa9QZ7a^6*>PrNP`kS9 z`+JLSh(2Asq9$YG{Ab4;YCnZWgh(99IU!;6JHG1Sz3K5c{=eD$d;Z^J59c;}@M;&A zoj2YYWxPNBY;o9UCKIJevm-fU1gDghm;b&SxBl|fE1s_$cJ7;T_vXusZh8sM!SYpy z#P9d^_SV%uNS^y#F-gny?qv_gs!z4+_!W(GS&mys{J(MKTB&D7>h4B!8v%**J$k?A zIV)^1ONhPpVTJ1Vdm6Q^A2t6Q%kKwmKlJNuef^l#Sv^Oeard3eta@^jy;Dw#8%+*8 zmDs?k{pH>2)*aKTYqTbI2?+8p?s&#klKS6sUHS5?d}qm1r|cFrXYId#|Hh3MU#sJ; z>;J9{Q*!F(y41T+iDPQK=;x&Q(<>QVZ*b_VX=%RYzqEMv_V~S@kL~|?XluF6uD?J2 z&X%veea-#8TS|vdPOr*JMFRyDr$=`uxbBTt57aBt=9r}$5n;Z;*zmoL)s? z^Z&ouKh-=*|7i8e5QbI<+0MInJo?!#z1$V|{M-NEZ|*IhXZh>d*~QQEgBE#A309rF zyDopy?CT$f&OM%6xr$A!kphRYewo@toQQq;TgRKU!*b+zgX{2KHe8pVY}-B~hb2^?SW?Q(0v znb7l5tKU|9|CG1>`s;7it&44XGZ!QWpP$XdpnK9aF7%Yk!iC29-`HJ!9^1IK-7x50 z5&W^6F-z@@)PXlOUve+D%l*72|L5C3(`|vb-ExnsyzyTecaqKUcjk{1dslG>uHCjc zTDM}&qMgq-PEQXwQTkIl-*ECm3A?5&xfExQ(7kMVIvYJNl}uP-@oK^4yR~O+|3}aN z{Y(A-pI_Niye3)6zloMrP;fS2VJ}^>vt!-kx$Ud?Gp;ID^|HLM=n7p@Uf|MMyd;QA zbb{;mnU#yCrdu*?F+CRXcuq(0VTlWqGgdL!y5IeJe@=!};O6HFy4N=?uw$QfyvK3H zNB)H@>{3nw3!a~B{`hrgGlMM09J%Ayxx)4sN<9?$b^f#(I0WO_n`X|u>Hb9LWRL2p zS1Hc()~ec8s!VKki}JkA!?^30tMjFbcUvCcJ-yp&SAD^OGj{BMt*UPFrKTTvW-H(J zDBFFX3)=51YM%e?f3xTR!?Uk< z&%UnzxQKiDZ56LY4XI{JoK&2&v=kU(PHotDC|ax9E%@Z!`Kq6n%UShI66)o;@apdF z&Y1}zbGtsDyZ-WS-mkRn|BuDJe|GQS^SC?z?{xn@zkipjZcwAuasj61nTlGAW|_;@ zF{hr^`c=DhrGzeH#Mc6uoeX#Lw*J0*@8aISGa?vfs?GAVxOl4gl3lWzLv;39-^*8) zzI=07TEpS_t75am3io$!*jlFYS)%fK&exgKvSKFx5^Z!iw`bziCI;CI8OH`SjkFUd ztu~!uc~$+CJ7&`-bpehLPNpsCH~&5lR^YhMDBO5bwxdhrbb^8OWED?2&$3JRdMm@{ z=r{x~}A`N7(#(&*WORf{<}a~RGgJinwW?cSVnL0;vFtr%m7a`yCpeZP;+(^hU& zYAfsIb)O=$$9>N1KkjM;V$0lSimW=qW7fWR@d{C6_cMXNFW$Yjcy}~^?ERV-QLiUT zuXSJlII1Okx6I49=Bw6>-;}uM298{lA4e8|c5lCwk ze7Ra$W&5t?=)3>CxBt?=_ilg1>i>t<-pg*^8_utMc;eB-?b(mTEZLuTM9%y>hw-A$ z9j~%)iE~d}-J06!bUY5P}b7MzV)XiOm z`#syU!q!dX<+3U~cXr>im0TB&ikphhe8#x;>Q9HCJuPQuS8FnrJieMfE8%`&Z(Q>) z!3gU#?hDDz>z1c@Dr`_VoiRUrkHz%g^R0fZa&nG;nv_?26$mQ6X$nV$cYslq-?DJ7{<{EZ9eW!2te>Thx; zs`&o;tFh^A*lv4?6|1_0l209A6ExM9-nwgUxq$n#TTi=Brpj-!_0~IfLUupnq7co{ zu1<-!E9UYDr9SuZpZ}gOZbz}h`IVFQ?n+#rck8wFw_oS3JvKL!-+!_0Nmum`t>a=7 zRj*At@nr6rc4zBT3fxMQraV-3pWNV~TE6=X%ZoiZ+!Gfsx$pnG`JegwFZ1g+|9^D% zA9p_AJ2|y-{!4oom#kmx!sRvDQH#0Y%%!fVwIW>01ya=>yN0f~evG>}*T#d%Ytxq# zx%13bK6NQ5ow?Jsc=6%IB?b&0b0$12YFiW9^gP|>tnsmVB6VVolRBo{Z9lL6`_=5$ zqbCkM{C(r2U7&Et&!c|(S3UKdefbqT)AG}+!Y&yL-d32&%T)5f-1~3q0;I*uSiW{w^4g|eR^wJ#)Yj%mEOlB<+LS+P587y+LdXO z;>K#op5w|IYsQ&vzS7w#!w=g8S2346jKTzu;FXRq4Hf42zB~W*#=|2?XP;~I+HI4*Fk6y)zoF(zX=&-db@47C zEC~eFUn@-XJ#JS{r&CP zsm~65uT0Tvus;;e89^c46)PRs97E{|G01$huNmLJFdR}cIltOOa2M>zj!WG471%EeDUMi zPUecGhTH-_T@!i@k3~EWdOjyS@A-^3yN;MGx%ZDVd987L@YIe2JZ#JfWtp!oi7fRn zb#Ym}kK?(C)HQhymTA3S8rK>{Rkxh46MS<~^Z!!5UnlOF-e+ZMTxzt@F3zCjP+2pF z+y(KOo3*E$VA0CZv+G?^+`CpW_{0Pcx~8`A_Q6@51Eu7k>MauN#OS<7bfr*7m-Dtvg&QqDE`>#Kj9A00*4Y>l2h z+q2%_#n-E$*JZC{+u$xM!o%I*tW4?Z0Zors(J{ zUw&@GtBB>3;v+sjv6s;n(MOZ>VhOaGBDPU?9Pxl#pD!`2PFV%7L2c z-?LWcIZuDinYSiRO78c@S7w%BJprMLd(TD3tq$D#JV#M#am?K-S{)IxrB^o^=I{z; z>MJrE6$r4m3UH^&oje-(=c5)2!!hgKQ?Bm!377M_CVKwz#;pSG+tcsg30)f~?A;Kr zt>2eCeaT+G@(ZtxZ#?1qICZ7?>d-IKkJ?<0@ZR~_dzb05*(yt0_s$B>%kn<5V&+my z1}{4;JBL+Xiz<(N<97Z0E?GfE%3-_;lCN(F~FV;6SKOkrpyRmkNYs@Q-<`Yrb z%7UJn->1q?o3e3DPTp=S&)`+_XW9R(Si54&&fqoE>a=5))S8}Z&7a~o>8ge*Q^?F3 zp0edmE(Rx-sb?&+;y2zq_VZY1jl*-v)mGxqW^I00oLN%q z+Ml>B@W~wM5_UaL-ru3@ue*-4PF?u?%7VZ9*v`B;veu#Qs_nb1Z<>D@lr)~677Sx6 zoE@s~*ShR0J7|vbLFCqNKbdTdm>WY=S6(%~^0n=`BWRH7LbV1fug2?+!|S&yy)s#6 z9(>iQ=&Pj5qh^m4t5)RR&M7?_w4>vg>e9pwiGqTn)0Zhta=Vzedg?MyG5Q|-!c-pzHgZL7m9Ub`E}QXx@roBmH2fk~9JKRkob>CzmgWE1 ziO!XK*w1C93(l;{aOwTE=4!m*K6Me(my(tRr`Boc{GufA6O z^_$+ov%@0co?=(`ffy%yLBRvZZkYIP{lk#CM$9&`>+pwgseiNBqvY)@rDrS%UOe+} z(iF@gULszxVJYCLms`G-8}DxZg%y_sWt%q37|rSzBIla{q6TPKEGUBCMV*OSYWWbBpcs3H-gv|K`NcYyREx-#qJmsDFGyuSM%VH;wy^Y6W)|?R9!u zenpmPac%d}&k3KhPySe^9L~?e6gusDO>ALkLS2~k!h_7e4sGsORWwQag^Fxy>bw(+ z+r;d;_K7Q>Yn=IMflTo{6^FQ`Axf803_LD9d9`)5Sy#wz&q*oP4GeN;Bi7DI+B)lz z>)Wdj3*7(B-=)v6ywnzCZCh1+rqVTX1U!_dW@n-ezd5UB6<}w8XW)Z1Ms= zpM2kN?aooo@1dSEZ*Gu$(J*u7&ik*`njI~pzI~Y2C-R12YWwd``9}6N0tYvEPD*J@ z|G3l0Uvd4tKRJh*pFLeP@uZdE!U}e##sig`em$OHymEHW^vAn*s#hPlR#Ldyo|UQb za=PvBli6MZ3z#LB|D6(Zd3nLJhch`9Z$*In0gSeaIzV-1*ZyzEO?rsaEnaaDEZ#$a`uwCnQ}9O82fKAGD% zdY_prdSY*RC?}6YtpZ>Dj}=SAjke3JchJ`46bxQ}-FV{NdpA2B_txo8|Fg$BU+!zl zrOs<#Rz5v!uH3!O$EB-ME7$Wp(^J*WGD{gkj@)wl=e=*uvkyE+U9^-@K>;JWd*MEt)&)S+E)F^p9d8Nv+rkfViSFMU)mjCG= zZ_*t_EBV&h+y1Zkb!STmE0cI@z-OlH14jeryF2Xcj{fzjVmTM+qVJ>@i3_h!)d;x> zEbu>PaOc1U@hX*1xw67_yAyuSKRqRq<;B87tE5~5MO@8Jv7L+&HN7#sj(*OpIr9aTqJmzxluIzuC;h$_sLh&Ur%11kaNI7fJ0~I)%;AR<&FXi!smZD zW5ce-axhdiO+YgHugGtkb&i%R9M=XF6~0f>tYQ{C;I%{{wDi%XD@!v)T-$oDe?R^I z>lIF;Y@JJIJg%>(ShG0(`fr!?zU?1^jb6{Ge%-fzd+OcVi|NlA&bz+9#NQxrv{1zL zQOqTI53MyWtCXByMh41+&l20U&b7j`fuT)n<%e z=$mXJdvm8xtl9aVTN~#od>2h+X#H)mQm8ZQ(WN6x3uS`09Z{YddUd1c>&34gSf!>f ztvTZp@z%Iz&!K+*-}Z6KWggFdJ>|Qzm)@!w5r-Z$=PML9sRb>q+iw2it7ps91umHfT zEB|WCXH&BmEY@4BSIV>A=x6GKhOCU{?swl}T)m}d?d)+5z1kV1wMfq|I?zNSLo4pu z`DOQCXPjH?wlZomt%J0e-=EKn7f*1LW4sJkM(mcyF7@ zw$%DtpQlc`v&Z9g_Qh*#dTiVx*8J=XU@T<=A@9;S)hX`X0>Im=81H+rlLem`2`B0sfVvcF-0bGoOtZ`y!uL|$hACn zCebvve2u@_?e+&w)y23W7;~&qWcpAZ(jZW_x|S9M(4^J@5(o@2uZ~< zcYIAfcC)CQx1q<;yY1n0r906&+RHEaEuTF78|PW|e|4L-K7Uwuab?=Ky;Gw?_&@Nd ziMvIx=Ey$r)O}kJRNGf4FTe4JX#Ssi)l}XC*KPbB-(>Gv$S!vwbyC3m{WI6QQL+uQ!$|Nr;={{QFq z|9^e||G&?_-Lsul;ttL3U=$Rw^paP(anG-;O=QO!qu=lEz5l-d->=u-=iC4PZU6uC z&%b~F{M2~XHnsMo+F^^Q8@v{2E`J`;_Fg%}K>KRO-M(+0;h(H3v{pY<8HoWs_)1y?@)c5iCkf{=fyWE)*J1blU%m1P5Syh zzJB5a!&x;65n)}scHDmaF!jsPSvxi_Fk-7ayRnx=n}1i-x9O9K3bTvi7Ypuke$zanW)+?GM*Ds?}V# z6Hh-;y;<5`=j}-|mJ9|r8527nTU*;E_SC0&3J%Xt9XcXEtFCO>y}M@dyV?up&ot6D z?YE2icysmnHqmnHQw8TI{<5)4mgP~q*#4f^E6Ke?On@BJ%P4`QQKl{Ql2z z@%iOjoj;Y7j(uS}S{IPH{MGKw-(FV~mP7`q?|pRr<>`ekf>&d-L8uYg>~KB>-5<165o~i{p$ZevN71M)Z+fkx->Z4dXI*~ zd3)#O{419KV2D`a6R8#+Fw0q>N!k9|w}xPE(^Pw|hXuhdUNMamoX^i}ta-Z6@YpHu z^~-+N+$vC9sd{#$Pucy$EgVlw?OvbOIpWhbW5&^bYy1Cye*XFV{Q3L(zhA%azq0!0 z`~Sc1@2{_`|Nlo(>8gp6NkP#pt*4FKznq$|;owK<@9gE1>kRe7yxzo#msWe~*nf}D zR!%u{ALRZ0|BfD6wDj-aKmR_vZ@(3_sv}Y9D06Gc$)rQw_DgeTG>3;M)u%^n4C*zj zvaI-$w||wcVD+}U^RL{qo7Vky>rBz^#Q(m6{6}u~n=^1sILXg2#XI+Hfomk|gDk$c zk{8b|;+f>oaIW)eY}SUy4y!eCMU;*_U3uQwX?n@?iRnFpfi6ex?1|ey|NM&?O?j8N z_RTvkwQnlNm!#!Pk@dkZm)b~M&iVTM^M1Ge|G!?J{l98&{QK{_|JK;$o;Krg-|n-} zdS>qutwx)-F|mieo3aXa%{ONK_)M(gK-sqB@~vzcZ=XN^Tem-M{j;M-{{MMy|NqZ> zd$;VxrSeq)N7h;GxVa_E_~?T7vs^l6h^!93TyyJPt=xC^y5J1q>GQ5HXx|+5?BT;_ z4+4G%YNqx`Zg-pf{(M;ce;F_7{D$> z-}k#OGce89mdej#`TOE#&mnfJrVRe1o(==;upH6J?>Yiba`_2qtUFp5BI4SY<)r@g z>-Cq{q)YlPMy+Sn*zF!w&|&gu1abv=g1GS;5mprH1QNq2tfx7jO`x34@OEdJVNfosbVHbJ9f z63M?xS)QHWx%{uE+~(WKHO~tfYR=caZ++OfA$bDl?px1`-j>hV{M760-+H0ET78G< z(R~auO)@`1ejj=M*!lSRQfB@aIX{AG-S$^9bB3EKzQ6o-`MvE?+G(p@B$L&?ynes; zN8TfiuQM|ir5utyQf+9hdH?8*)UY+T{{MVlUw8Z2^S{3;jW7Ct{#CiR)gyatui3E~ z|1z(xZi-cjpTzX|K*L;?J|nYD&0jb1FL|VAW_)`GhnMD6jnsMp!OxlY`{$p39=;}3 z((qV>^%qmiu${{H=P<4QY3fs9aPw30vSoqu&+F^z<=1C)UE;jus5Q;|e(Q~nhu=)u zPCofGWqCnjBU6F?i|3AsSFYHtUp=pG(#<3MTlZdOS1`_cm6m<#^+Jb+b9`UgmR@Xa z?MQ3c{oZAU$Bg^yr(e^JHjjDNIxVU7`Gnv}@4Jo5M5ph#Gw1v&;qOl`|Esfm_J8K} z-+!z2$G^Y+`fuJn{YTqvCvV%5dwW}3N6$v}T+nJI<03|{gZow_Jb&fmbj74MD`fF3 zH_hLN7XRIn`#ZD#_O`zf@}avq6a_WY{s$f2C)=rg^ul)eH3|XgGiSSLuHD+*btu#J zyN91_Xy3EF20KgHXI56cEIz*7bfxrz#0MAoZRX6n^?dQFVp~jlRe`Gl-(TsLO=hjG+(uG-MKJc zlPKxrTj!t8zaM`$>+Uv{q{X>6Oxb?Fcyy#}=fQJJXQ{5a`>&K!^|kxU&^qnSjJ=f_ z=b}V5XHCi5+F=p?b<6tTH+Sa=t!AI@v*g)>v;?&$9o5MfSDxqFFS|d_`_s~oSC-^8 zurqyTCUcg5 zVRXFxXD zJ5Rj6=628Em_)8ikHqh;L&rQgn6r8wu^kV*a^t4bhBut)E2WlhHA@n*=1*2oH7nNp zb6`r7gyWWd&Mt>pxmeP;}wn_~v=jZjV1gPIX_8OE}-VacA#0zpW3;53;l^{Pm`B z?wf|0C#)u$uliYI_wt%z@QPN(K({>&s|B#_ipJIaU~;`7e<9jA3vn-FL9jJ+7jW>8aUC7-&@9B@8pY~zw0i_ zZ}5m;KVxR()?IfE+!NoQ_;BsF^2cvCGdts!FfcHjXe+w)Jh?O>oL6*noL&>5c};De?7W=Qd1u#qU$o_n*psFI+l{;I zYh!t?%T>E;+rGAiDXAzOx>kO>HRwg{#qTPiE1%AFh~v5P+|Fflap(K2)%Eio4{M#W zd*>#9_2;thrstI_mL_-4h};-mw?X^+PVvzDE6#82(fYWCf79Y=r`QiLJ>7Et;^dys z-y`ZvME2#ZeSh+U2m?cbqQoj0W|kM-4*EM=bG_Z3o>4fel(Z#p)^tH(ml}!nUNdZd zY2}5^Pk$k7qBG;*rsTa-j$Cxh60}GYQ?xJ&Zz*p1eyDJT>h1*Txss*)O~zWqyS6qt zzCCjN*n>I=LzRE52d}LCk>~Tn;%lYU24fB-LAFoMWV%ILcSI9P)?PNd| zLj&{8xaF%>wq8v!@m6q{&!%pEQ0cR-lc&^|2tT!Co{Q)GKWExs<19bP{@~M}v=w&h zI*X#O__kRWg{1vGzj*1Rn3l*_SD*W}vxrXU>w4IF;==i`w&NFEY>IB2%VT>x=d-K2 zeXyg-nu9X(JDOUpKW_1`$JW?Mb7IwjViU3n`)B87+L z#brl*PNhm$kLP0^fL;IQERce~3K!6B+EtLIkqEqZ5} z)nj2i>EBsa;rv-mTpcy3Z=^kcS9#959{oDZ;|Ryb`a}`AO?}5J&CdsSzha!%sIrYg zV{X)~hf99R{N1-N>3U!i!yS%YkrOxt7MxFfv#NF8)}kfRY0X=%`F?(N{mQATdpB9z zc7GBIZuEM_wLU)d+{y5b_e*3ZC%cDz-kYBwTb!?bN4{_&Z~NCR#UBLw)@Zy{=e@M# z)QPSi>%$k9YAY!nI&;SCO!cD~OYE!ue|&a(!`9l{wQQ^0ky`d999jw)fkDrR(P%3bx+Be0l$>iE01e2Q=65iKnLhS?B9< zqRMJ>tlFllYk%L|t2c?4H#MwW_3O7q$tORU?c-xuAds;BLFbj+>r0>86*NiJ1haYk z-#cgGKW*;?Up{?b64s;H8Fcw=5LV`9ch){3L;k+W(T6X~ zg_@JHrWDsdThH>R`||ut62G35@8|5i7Nwc0KI8Y@LzCa6*0=d(e#~3FKQ{BXg>-j# z)syN)OY?Sgd~09lS^r+t-l+9qY7%c1>(XiapI`XmZ(izik2xx*L|F0T>)v(yL&9Et z<`S}Pxj*B42ann3)8C%{eSc8lFZUbUgQre1nD@!^F}~bC{q*Jf0_!=ozbE_L{&4z{ zoBf^2tsCBUs}~t;wL5WF;qUjNh+q6?@Bf-C8vn0c{egFzzw2a?z<-lpo{w#q_rBJD z?<+xfW6?NaJ-%wiyY*+TXc(#eS(z^!UL1U*uVsGpa;*~1OHt-tnaM6Zs-8Pf>nhxx z7+K)|S9WQ_?RlJQ3)_6G8BYIw`d@bYlK8MV)11C%-{!q$-Ly^a_{Ep=Esxpl(N;?~ z@2$5!{w{L&^vvgeM*n`E`}F+cafQ6@p6_4Ej&6H!{rt=`>laOzGvj_4uOOAb2dw<31n9G*dZ~t`U${wkU zZXFtV+{$~)%zTAk70az>$SKqkO1ph8T0H;v?F#qrUwd@hv~Q-lF}^yfCo zd3D!cNGj&uY3_Lw==jd-e~OUX)r)O5p=Y|L&MjKkE0(y}Nr>Pj%nPOXrvFm7nDJ|F@{ef2QKcynNpytej`f zKF%NC{N?^>%a{B0wp{-E_WUm4;-d7vTkT4$Q~YW-%X@P>Hhj77WA^fXWn<2z{jKM` zRdarxPJ3yZ74~#~g5BSrTo)9#@8P;v?B@aNfAek}aw(f@XSDC8@Xb8d z>&xpWZb;p7FaOrMU0>_=M&F&(asTl1@FwTUAD*<=>{#~iSo6Ju`X}EDSHvIj@h;Lg z<~MLH$o=&@+{OK-qn+;syRhZ|rN2fR3TNkPXjDqBJpWSt-cIc`JxPUj>sp1(T->Vo zU%U%nw6VW@@W9EZ@yIj@etGYZT9hDcP`Xk zstvuuai!nB=F0I)Sqzuz^`9^KziU-c%1{1h-g2#(^jERif}8($eqigV zK3yyR{A1d}w35PKd%HB8s-Cn-z3N^)xj6Qhcw5Bbcg{T$hFzlCVZD>We#!Dn6yM9s ze}47;N#RdyYcqeTh;-fLzFXIJ`1!EP2mvjB` z-mERx-tj1zTu3vYH2s&)lUZVl(otSHD^~tnn!F)6X}6E^p&!rl)_K`4*ZONNzBl<# zy^6>Gy)v`^-JZ5}@9w`dcjtZD9qXap4KrV(y*G-WSXDX_e55PhQ7G6r|+ir8`fQQ-2WvZ&iK#1Bdxb2 zY8V+HAe4boszIC6x%S(pqTAd2s=`+Br-(58lw|l|kzkoff7oV<~qQbX#KAtPVoXW)Tfkow(kYMFrsiMUHk2jq7 z(lPD)+9lS1>`Mcew)I_v>i^)N;J{p9I+r2wv07K*=|Dq4?W1Q{UH>pLG|c6gcwu$r zMBxR#N()o3h``nY=&-W?ujjgS{JsS1GpHdA>P-SNAodQXZQZjr^nTD$xw0+Sp1*}V zcC#QzoPmMifQ-NbkZ%ik?|NpPw?d$(ZBp=~0-W=rPV$#L;x97n^n=|b`*HS}r82B8I z&EEYgcKf7xe^vf6n$2S?mVXg(M{fPIuT`eGx3{hJn^%2jX?nBEZJR$8bNCf0%u7ssd9(@y*n8lWs66uxo8TacUE{!^{PXq5}95 z)GN6zXolHrez@`7%$~iUTdWih+kLiwdCk~RJGCcsijhuEgiDXd!JB{7?k;^M*`U;^ zHK%94)Z6(I^?moac70`id#L%0%BoDe`TZVS$}>xArxb5r_edpRzGK@1P9d9#R&S-| z@-SQvO85S(tFiT#relL!e3b3uwyY0x_B*McY+D)@-f==A@!PpZAEk-E^ior%WLzu0 z^!MM{^9&82Z(0TLtXf+guA!oIpQux$e(jufg&BLs1&6c~PuLkw zr7o(iGuZbjY-%RMI~Ln#egOpv#f(*@?p<=<5Aw7;n>j(6^#=$0$3XSj34+cpZXF() zOD&!z-7s8Ve&_V0UpB=G3=br42wYS;L17kz+is0I3J7vN{r5GA&4o+YZc&g{XzTi8Hi;K^pBWIR~NGe}5-7)2wPSE_! zgDWC)N(2Qf_urqtZEnm41%KYE)xUbA_znmsDg~`dOj{~a{9(qN;<@ozdnaXn|6CMd zXxQCR+dre!?O^fE3#{oDEer{hV&4`oT(f$%|0zQT)&{>~AramPwPeOwlV>l`YWuvY zwR6VGz&j?3Jhv!LI^b;axblwk*Gj?N3DY?)zW!@=OhP?{qCNH+0e5h;9%%GR< z{NI{uRpS3ZpEV-ouQu;+n0naw`6Yo9^9-|8*(x-G>9g6FosRs$ne(jeWZ5c3(m4;KSiO#XU??sb{NL3*!sKV;DXP=DV^7D z7i~DC)amj2r+~4fpyA}pZ#JF!IL&Le|0+g?*%M#*f7mNNV`j(9nXWE9**9EvMM(e4 z*W*2ySL)m}DIsr4hk&HgAq}>eeo*6HcEx$lHrF73LB}-n z%Jy98xektr2Ar9K%4b~Ge3}#=zHvg5xN4M#hh6UPtXY0rA38KoJ7~C5>`=+BfQ^hN zrvKY|Pv!9Z$Et}lJ7>(8*(;d*<-whqAGhvO{HLPDV-|Ga6U&2(2mTyjUg25WcSGpj zO!05*3=P63LK_$&i+UM&7qi4aYR;~bH`aFkoo~f_y7bD{Jl<6iJ2uX4b2&0&nuq4s z%O=Mpa(%@4XU#OPvYH#?!m*O^fNjo-vcJ2vB><5B-(A!>iNZ5x~PBa`0G}mht?qXO5AKmBsVfzjUb^ z*=)JmJNuCC#*jnT^dnsM7`r@(y>|B3xs|-J3+J?3r*yOv7XV#0FJaEmWc39>$-O#)2=j-RMvOnE=H$~mPf$L>U#;3UbdzoeR?Vi`? z+y9Qf{$#6qh{DJ0;-3!EK1bH9F<*Ff?(V01B33rC|M;USUf213Qm^W^{J-w=xH5Se zEE@GT{hQUbeP7YBef#dLb@)-YzbAKFPkrJHi%h=W27%h?0{f3FdOcx@{uG%_>{^Ky za|#ZyIbN)}YbV|wzrCh-nPMdKhW^<8p8;`!Yzgews~pz96TVp4Br)+ppx27%51oI{ zAE{ZUK3AT5Ug^IVT6bG_alUbJa?4)(_4U^(Q~kqjy^4#%wjWO3@2|YrnDK$5&z0vt z7kt!SWUn8;t#a?JuQ@i~8&*Lkl*X=C(Xl^ixakryB4};*~BxWs%(T6}uZ?lu;Njvq-8J3?#U9m?t`W-U7#aeJGPPn@KDk*N1f$H%Oj z9yUC;v=M5OxtTrPKWqN=sRt()@i;K%4Vd%yxvXwO8c^%kIM0Ny-)Tq`&BzNk22^ zkkCy!awB5#`s?1=zE7O`j81Ns`Vy`f;C`EvJ&)nQPnli29%xmGXDEi9(NU?}dgB1| zueNOrtJpO-J#!cXtTNioue?YMT=;@vhgivemzE@k=Y>-l&NlCV5pb|WbFu_)%=1IC z^Yg;l;}lA@PugWKwIkPF&QDTwc~hY6*K~i+)t`b5Ri69n zt@fDxy5U%xppYh{?;t%nD(A~AL52|i0271w4-6Oh_-APMP5IUHh?yaVNAAwS&KiA( z!wv^?k4)@KcXsr@`SQ<>cfU%PEW2bWQrg*ZYun%T`~P2y+8(t#Rch_#hkX?ngze>* z$|nEdkvqO@mSHfn*_`yBIv-DdySCeL(lbA0m6SWqo3duPX(qd5=RQrB7T(35w|}|f zzRaGDnoEEG6914;HdFV`e8<2m>C3)8m1q#&k@&}^{Y;Hk6Vqg#S82N${vKr(op?W{Q2MK-^2f3oEvR&ynFSf(zRN%E`!Z2X045x-PYOuZN`hb zK(+@=*Elc4m(O@ncu>$q%3GqS|*&suPzpzsNsoO;ehPRCshtR5c{ zYF+91+1fON;Xs(#wJkq)oxJV8pBp3~X&g@NH|<3g?-O=lG?E=V^;OWJ>8U4n9Gz7hv;60dci#&onfQ}h8ES6`D>JlTnEBA<_9>Sx&z9YS zk0wh$jJuzh6y&vWLdT5^8KpC4Y|Lx#%fH;dT<_BpBbEo*Y=&xO<lad4lm7ScNd>2QUhN-+vT359E%JD`o zr!?2O3BUHV)bIDTVc>tPas2w1NCcWL}3b9z%?+OPQUg|mOj zJbIMhaaz*tSAwbJ41I|%SduUuCGkaFY+OJ7PY)(c#7gWDy zCvom|VOml>(X@ag`*y#XThE64nq3P{yyTfKKRtd%%ZsmdnQN=vKYsemDx-cz#p2Hv zh8kWSp;QKkZ#zm|m(|bx6Jo-Dii<%r&f9;N(e4ucERGW_>du?v>(_tZoxJhmt#{tH zub)|d*Z2Rs*DJY?C?IBQb6k5sgQ3Dkf{FQqZShx**q3Yp z5es;(9ch?X)iCADb%r@!7j}IzIMr5u(0Czt+{t(6rPbGTcNi}F++22=-)sFL?}~l3 zADIq4a{0=BVAJ}U6GM;B4L^Tu`nx-GVh^>f?RxW!*ZA{;sar&sUQXv1&6GE{th_o^ zbML}~o_FNMF3#uAF8u4OWSt?I?XG6ez~IHGYsrw>kSCVP@G0q%oCB9Q(tYq-hAUMtN3e%dn?+eZi+Y9SP-OfbEW~qfeCxR zCdDUY^0J_Boz*=3KW&v9}|sk86u zxU|#p_YVy&87l^cK82S{Klb`_Td_0fsQzwC<@6GMa%7V2zHQ&zUMfsvnB%v^F8KLm z^|@@e=C^m7RNvhf5&q_O&i`(w?Y|;qRvcnj^Pt-Q|9bY8<*Uyh?v7mY{mi$(r)!Vt zD7j5?|1vr7&JmIQk}(gu%M;Aa!w$Qv&aA0&TK!9gZ$)K=3X5vs%)NRk*Y_Jf-TRr9 zk>Po;@8(cnH^-N246d3gS|nXyZ;qB&b>22?@l4@vuAD9VJ&Nq#?(OHxFn7=V{J$`NK zB-j4_t6JTSkmG^d7MU| zn*{|Izun#?y1Dz{!|=2vM%`=;pFO?SsM|U`3*fH&a9#71-77Z3%^Y9Uf=h~PWW~yyXeG?QY8}2&6c;~ zt=wPg)tIm^*Xn*G#N)?ujX}<5>#NUJ%cos!XJEKy7`nGFdd&;V1uhO3muOqtEO6v3 znYX(?{qc~V)gS^f$&opI@!Y1MesrS5j^Wa~}CtNy{K&||g zqmH6MX?CKHjh<`|9K!7XI5x1|{A}~}=cYRqyt{s{@VLpFd?uiN+CTmCy3aWrTwSIn zr0&(o;+S=+S3vvdsrD~|zxSQ;ogpE6Ah_40-LR3%vFXCk1zug7!Ws50k*T(~TAJ~Q z(PCav)D$6y%%-9nNoxfb9K5S@`*pKh=jC~m(^D_4eXM&-;ydf+$qU^}1TF6{r7$!Y zZuSj3$Jo!#`C3e(=gzj+Cp=+Yu6GtS$4#AEC8=?+t^bK*%X&)=r=%}Kc{=^FDS zOffS=`RtdMd-|78*x=C0mS9|&b>Z*|rZ@k#23oLPUN)n1s#5Y}J88k>^0`6tcV3_O zTWpC&X|l+Kj_#fqUa^xK@|X(PS+}15yXk(jVKjMeqP~h!@=sRfJcfCm8s^-ble^#h zxE%3a9CEp%BX4W2w8tWg8y{z?*kt=(pC@vuOGWDWmOniYTv#_R+Yl>q+uv zan55XoAfcmSjLg1^v=->0bZI*U7mdZ9-jR;`oxS7iI*DZd*utTn7GpHTE)bPIMr^ZE+EEy9x!+ThMFWoldJ#W6uO7V#zTTDYwTXFFJ z>ymi?@wjZ)Uga$@64O~44taELY8Bij-so?ly>!-f@9n?B>u22bZU3-vj=FNA?MF$u zSD!8)e9OweKaz7tIC#Sj@Cy?vw1hhpl`$EExT%=qd+OmMKD7aTntfWfHVh4nvwdE_X0`eo`D=Ud>vMJT#y_Q&l&@oH z`r~!k#O_^jcF#t^hw7jH9Z)ni?k`eJ`Y*X=&xyz=m(Vv~!~Z`kVDMXP)V)S$H^Y>Z zh@N?ZwDa6IH%>7yO2wS>eYLsu?xE^-w|c$sDFub|XU_D9@R%`kX3xu0>J`jwU$-9+ z=6tNEAN;Jq#HVyZ{PSBfM{2Jf?)Y#pFlp|YQ#y^I8+tXg>=XijaBECum)2P!aif%F zRtAF~qwZO`fUE^R>o(n4_VfDhMc$2G5!>!Qarn6F;^L`ceLLkQ=X@)?xBa!?%cp@) z!i(1La9NT$>-%|r?QM+?%`77>ujd@WwkPi>Iy5)0@T!fI)SdRd>dai*6MU1Nnre!RN4rQbn*Z$i z^XJdMf8Ty}t*yetf94)3GNxO_tQpdaL#}UsXOo>Ak;2U`oy^$v)z6yWcJQ;w z?hX5Gw<93(hEV~NNvYy`L*LywT&wml2ne2C|NoDU+1Jx26M|OzGcj0n&RUh=TgmGB zdF#q~S+4~a9Bd3R&blY0UzX0g@4&^y*7a*#gePA6_5J*M!OJGS6}oP_{yy8Ja&W#K z^VJA8iz(VypFi)_x_h{CfuphD=igte_QvJjezonZV?~R_rTMQ*Og}Royt%(%^5HOU z26yF7T?Q}qSD(vXX&N%*G2PV>TqxnNFePJ$z=DIGS4>r=aBeOAmZ)@5AxFHnY|7^s zyA~H`ti2t!f7Y@})1)QbqPmUy&Mbb?cTU=imWRMiB1ch>^X>+5-{pXp2NQchVy2eF3Sxr zWMGK=w8ot^K(?}UmcW98f)<63BUOw|<}9<@{@(HWoZ^GlYwc6i1cj1&W-s>_(!Vof z!Y8$w#qEhHpVMozKFjorO!{}T`?$T|(+oAC-7fWF=ROPkvgEZ}z&9}|ZTEu(e_LC6 zN*w1O4NK|sdi`+e7MCAoYn{wLc;CFuaPY6>owI7EXJ@&dGQZDLY*4mwhQ>dh%YH3i z?)yrwQh_x~bY)#U~LsP@Eo8s4de3&_9UgM?9 z^(vvR_c)SYOyGa3qvX4I4@a)c2?^z6SF_9hOPe@wUj3>e{-rze-Tq0(&)7^WO_}#u z{qqbhZmk6qt{?nup>WdOTB9U6P_7O_k*Bx+*}in~7e=K^^~#Hn zQN&pOw<-!N_0pXD+OuE*r? z+f4CJGW^3ubV+@tf$V#m@Otsj zWsav!@Bfpz{O|kq2@BpPyuO)pHC@Q)+~=K>=k5NR<2B9X#UqZcX{n3;?5zH2mcg}B z``pS%+3Nvkek3*>zN|l4-tS@8uWB`q|9jVbOE^`cQJeJpa<#4u|L?fo9nu%ozMsBQ zH{oBkrrKZc>-I~EV&|XybLzkJ*UD#VcXI8875gY?U;Cq&@<3e>+yBqE&3{?gC1A`g%q=XuIVtRnTaSeDlUs&r z;alnspUawI^*zOX+Iog3>1j0=S*w3qUOX1-V)(e7Q|$8m)n6?P{_UI|blLvHy$H4F zua%0vK6^HE3*5T7bG^kf`~2@OX2;(=*YM@O_sf_1bN`&G-~KCR$z6rNl?N`)7pd%< zfBpLXHLNd=+t)rl>lE9)gu>5~ z%kC{wHEmfvYk{%A_xIDL_?vwGp1OBWQop77U-6%I;x*h8{#n0J_gzz!f7SHF&(xCC zzi-Q4S5GW0{d`Bp`~Mef+}rDOL^S*)UDPMn-jem0 z6Y=Z*jZF0wa__#1upIoTXMpZ-F0dG6oGj^O^R>a z@eGqIVbH!kKmYcBha$0P-Cu6?CJN~lx^36-wPI=Z{I$^bK`JH$A zACFgSr2R2CcTFT?U>U! zoA1@Uy0^!FFaMAaTB~#Evi!#7yY9}}=zaSCkv)2Q-Ok>voA9rjbN-=eSDssTt=RvQ z>w@D#@ux?w2M7F07rJpX;M>d@&!l-<|L!;X_e~~f(Zj83B9>1}{%*gr@H5b;t7_9$b zb4uyovylyDHJ^nP*uA{%`OT)?`j_*0tJdGiwPu%Jh|jCNyKAwG7}vCRY4?dIq)X4~ zIJ=(O`gohI;3vL|O1_8JOi@w`$~*7yglqP(9N&~_pHKal>hjsIB6Y@zby>UbZFc{=9I8?FXB`oZojKqQ3s!3Xi3|@@+ax z?Qhr2jjcb=_Hw^a=OjsE%?>v#HYqJFXn#eJ0Z5@f1H>9er3OU z$C&7U$NA&c;}}GW`6vA2=?K|z^GN#i^}b)XgQnY~1(LSU65kve=Bg2V@M(%#@?x&N z@%dL*Y|FjvpWPH8dvj|ygALcaSiw}jdxr?j(7 zkm>3y$BrB8)eZ*T@m_M(p@A)dNiFb9m#d+qpmK^4w`GN((Z4IE?Q8Q^mI}?_b$*>9 zx1D=R2E)0=o8dM}6WvyVw>5lUZ2x`P>#|)BXYn3AWmmITBTYH<^(Tn&4Rbiu7^8ni z?ppc$JTsFCgD}TNL7~LMN{1%R+8oEOar9UgL%thg8oIR5?Rn|veG zvG>IL_wu=C5~gRZR$vd_om(Rm#>1ZhG1Z~$N2-dI{fphgC0qgv7(EWF#H|&0e>r+J z%iF)R=elp^-LH7*XS|WIv3A%Qonv+STgAi})P?o;)=Yw}1<+mhP)zPh?r-<(X9edN zg@wc81!vx53lUlx!87~RX=aEu6BP4Wjds5atD1hOG?U{3Lqopcb~DAF3vRxd#`yZ0 z#CcW46e++;-@QqZz`Gh?g!W3CpUk@ ze4kmqaQ}>%F*ed`w_aS9Icr(v&7)s?4BdRhZ@RhtJ*W_1!Vo`EBHu?skHJ;x;Q_j%fJ;CvKSDx7co%c)!!j~N1>#}8`9-n;E#rZ-9nRkU8%W}@W5&8Ui zT=L(SOQQvHzIx89`#q=2&F9ar%DuC~Z*R-Jed$7~@j|~#F)w9G&(Dwhmwhv5{@yZ~ zl_y?)UXrrv=H}@~9G9Jlt=79M{*TE?Dak|gYgU}^>x>i-qvt|#wtP4P07SF-1G zsVi3Qzdvi@5BcQnPe4sw{oF0rcHNJ3cV{ioE0;K9e9`*zg0wS1k*%In+4;RMxjm>b zfB)>O(Xl^ucE>XK;_sh0WApKpmq<*XPaVU8m{+qEq`zEYXwbfKHF?o&)(3pY{C67t z*!@XIfrY6gjYmB({N$Ejb7Zf&Kb+^*;o-82A#MNs^UMEgTs7%^Rdy+=KY!cx8#}@` zI-V=p`}xS;S=Se=?)WFOcfqWC%m1JDIn&iE@%g9eEs5lgnWB?>7wRc(Yg3seyTv7e zxqp2P!Q#$}%rs?^t}~$Pu%g z?Ej&EwsW}|=I&nK+2L{I%YE&zLoRxk8oDnj?pYcezd1kj>Hf}Gz2BWyJGQIW&G|Lw zOWwR`&yN?*xv6X8u`g`G1VLpb8NW%-W?fDHoz~S}c~oXfuS~#axzNgkk0Uo-SKli0 z`qi_^MW6}H_a>{s6POzPe;?jRyymIkkj{K1T`5XZcU!RBx;58MW?Ra~YVR;IoVek? z$KIgwM;pH!=xiOo^nL4c_q`@^R52%#`imZTvD7F@bLWe%&Fow z^JdO)?N1KJ(Q)%*vIs*J`d`knv5&fuqf#;at}%_nK_31evc%{wDK!ec1PW zQB-T`nE95a@}<)Qx7Qo47FX}AzQ%nhqeJ|;GOK5V=F%OCOK<$@-~IpV@>xlj|E^p0 zr+kBV^Sc?=Tc*iXY~3aJE^W?kV`JmZS+ka9maN{IceM2;$21w9xEDQ6ZsAQl+f~;( zgh$y#PdFmR;LrN1xG8bsm0%Z!Cycw|m7EM4oEjg#V`D1WmZ0Kc5+G>tr%vTq%%;59 z`SV`<>)_B-OPgeOL;LdK&PCZ$n*C3ad$^{mnTaj3YC53vl@E7PMXK-yTeN0 za`EZ^41Jr19(GF2wKcSx_95mC6H zQ9bq5!H?YGD;U!@?J9ooCFk^%xAKNcmuzj1P5ScTsPiU|^w3XV{>?t~q3L&NURBj< zo;Q>~?@2T1L zkFH0T9rvD8F28#X^Skp3;RzE#15yh0+pY)A{29W+swUaM9QpPy+p|W7xs2z7=dVA1 zHp0xtjQ8Tt-v{L5w4Y|w8dOZmX*jCyt)cSfF|UE9ylr%kgtX|ayDh&X&u46y_|SUN zht>I2*Q2VQx!B!oPnA0|<>RNK`V+7J8ZjED%ipXCovQHB?8x@rK4$MGPVCGy=%3fR zsXJk7|fCOx9eUc~U||NrOG&b)iFp-Tc(*+6x*JzgK^&i(X&px7M;@ zO7@yq=^mFOM{h5<7i~V1qeIc~9P_Q?VjH~fuC6roO;)uGT;$?9Nu#?&>PuC9s>tuE zeS8_87aZ!lbLg)4#r2Qx?)~NSCS0XdBkgzIQs?b!J32Tz&xlvtDY9A75N>>FYHRDP z>#x7o)z;P5Z(U}g!+GnL%I9y~2R3ssHKl?kW;uM>8BU0m?AKtPARhfjaNBQHfd&4@ zA~R&24`zP-xrrsFqVDwqZ6_g}S;sT^V@*OPN2p))SpM5||0nJB&#vx~QuUhhyXsLm>+Ieh-?t{{%#vRQf360VK4W~L8C08gz4cw++RfQr5rRuu7%KQARy9<2%8MoR zUuR|bYYOe!PCiIsnC_@Uu!M- z5L74Da)AC^LEyxX&oY)HwyCZdA-vkJz&qx=jnfAPn=a# zy=QlDT18Uz%sZ#D)c5|9sh7O=^^4rQ_1Af3L{u(Mw+=kyJ5yqw*@5f}m#afMw0}BU zc2vL5{QCDn=(Lvd6~7Kif0*FK^~zCe<&jRtO*fXZWW?^h8|qU!MVGC=)_&82%d9}Oox7CInS6!q6LuM!?^~6T{tU2r8y1I_0(dD=ic7s*ljs=P$n3*828Aq*O$f zVSB?ou~de6tnYd1Shq1V{xW(c#pyPQv;F@0Db6nriT#`V=+cDqjLj||OBnd#zFr70 zOx(HAn1B6s>6cB;#>Rr%b8l~(HFHXkThFUhr->&vTr$rS*;C$JWnC)#e%00Io|F7L z7jB##ID_53I5}ea@9n99%U>iz*69gf1}!yOAC|o~x-hZyuFKVf z+&+p)g^adB(`D|7c;@+Seq5I;wZ*sV`w^^<4U z9`C#F{WNmX$?xgGPQ|ahpC48~vQl%#(alGhZ6se@V80=-pJAa!(2*`Q5qn}7yc&ws-^8_?yo*B z$9|ZrFW#bRV_iC{V(m&<9E?Uj=_4U#vp$Aj6<@Zc{B&y%ZmHz&%yx(_* z2b>%iH*5cC=-R~Ppts=o9ZoL3Cr1Roam?N)!Er&FQ)J`w%}eag%T$Cgom$Y(X1!ay z*n)Zg{F(Q47kmwg-}nAdV97+DwUc*Dp4RHp(i-`3{m-T6-8I9!G}F|~l4Kq&%KxHh z(Ug5!!E4c*62pD7T$OK5ZC&nC&zE&$$C5jLV;A4zWPK*EN0aLjpRwlBS<3_kFaLFa zl6xh-&W)u$rS`tVsyD)=8|s}+xjx^~HH|0=bbH+8@{Dms=dCNxJ2&1pUp#S@7e7OR zti+^-ISsbcI9XokI@Hd)yT5Fg&ba{gN&t8H0|d2eyhcBXV5c2Gj_N zH#_D)62#c~zttS7=+`YYOx zUjI6M$s?&SzgchY)!S>nXGr0;I_nu=vOwU$?-(6{1>wO{f9=`l^lPH=iiDH|^*x3~O+=`*)po3+Jbg?({Um0x@b>wOy&zDFi8*}OJ> z&IfyHX1B*}zPB;&(EDjsABz$p7bc>M*6dbt0HpW z#-|n+wie_sIOcbORs8Xt9Z7f3%xVvb3*ZmRtG#<>*DK4Lg6p%HgPt=nG{`1+FmgT2 z4sKn0pM&LvZ;0`x+mixA9!xE10*#gQ?y&r=l=g3j)eOOjLBYW{**rd+&kalw7881% zbneU*le52{uibhrs#{Q5$kJIpbouwrgvY0fH_rIB=9c!w`*sY+jtDhue*WQO(Ttg) z$y=Yhnffk{T6=q2>AP=xXDBsiD!=*r>G1lFir|oUQUy;HFP-J)eE&G2S#IuvFLjo4 z|J@VVUg5+%!8~C8_F(@`#sc9Nso)uN*0yLFfd%Ek*C!P0%9D@aTPpJMT8Z07`5BR> zXJ22HP;TonbW1YaT4R=)a%z)X-74ngg?w{-{?31w+;Qzz+vAG8aZ%Y9k9A(rUVpoG zuFqdb|I3>#W$_tp95*Y}xm&6#Jp z=5g$fqViW8f1DM*t)N!1(j?H2UuSR1@6QKnnzUAW*7nUf{q0Ep)M+9N57bswgfN_E zotx(A&=BXYu45zDa^=SPn2n`bD?23CMlU+YJS*(xwTF7UBR}}2v2|_n$vp1ll(a=~ zqMPaa{rA@9ZM|lv?j@?}=yHb%dWnYBlGO#i;Ie0InZPMx#W zEbhdoeS2ijUzr(hF#mqZccEJArH;{}-rZ`>x|wB)0aH3QY!FOlcKKA-aoJNo zda`xKhDKgnaq{Hiea{@9ZPrRTWzpdFDdHnrqWJnPr$f!ouC6pKV_&;9Z)>!XiA{=( zX8KPv$9g{_9Wh0vWe(*b6IMNU>r7Hh?tuYR`RGb4jc`?sDK zX^?dR$~oHuRtYYsuD{H6W1U@dv*fXfrL%o}&NP>vblceD&M1+z`L0gGvorgoEGLxg zb(=Bim(V|VCndKve{O7hyZo=lQW0%wmIE1UBm14dFH=2{Qt|M^jFcw*#+QuW94`k3 zb_Ds}ebT+<9Q!QGI}>l}a%FAF{QvXDcK$PW?q1)=_3eFc#~hDcVR7pgKfZbDLU`@T z=Q}q9)i^z6e!$QbGGBQ0i9GA`>$a!5P7z{wV41Ljsfg)Y1bZpRg@F0t1??{1Vyw1% zdWozKopbZ}Z9b+8el8^k_I}iv=Cc0Ta+ztrHw$obTYnD|6I4F-?v}~f^XL1&c246{ zKB70nS*N2;oVBX8X7BrR_Rh6_c7N7u2>ia5Sh09UsLbx0Zk1tC*>|^Hy6LN6(tkDm z)5WFBy~RsQZ8h1ym8j}xs{Lj(UH|74_q-EvyLA@5>bvs1VDbB&Yf~KsE!h^>^u3mm zzkb$E&v}8_gWoZ{q8t}OSDwEg>cM&J)&quRy?G{+>wir+$G=%j_+Iz*O_x%wzx9X; ziLKVLntHR9(IEG>neXSSy*-9WF4DOkZv6{gnB|v0Za*qqbf@Rr$(kImJXOQ~gq=cP zsy{fWrKK$m*^#{Z_WgdzV-3&Vsm@z+IM2u8*7;>G6}LZOvG`;C^gvwTV|H)GnL*wz z-%`5Y-(?Ql7jdsRl;MD>&BocaN%I^+*O(>V_{F@!p+Rj`M#^_zw_rnFjbGgRn3X;? zs&E@`yZ!L{#fxP(9hE)>);Y(k3$A^;s@Tb8{j;y17x$Q%`E4oQB&M{eE^*gSFQel7 z?vI}Q&rUr>Egw zbLreRC0~<;O8FYOSN`NqiH@6egK0s@s<8Qs?}vxHd8qkH!-`=YJ9ysmz~Kf*`*~h0 zFDC4AYufxU_;_@o%-wrSMRE^HT{4tc2@z4fqa7y2oPPR6d;9c%fnN=`MSF=w*&m(% zNOG%V4BNK-5*OV%X3RV(;j9}eIC|N2)jdCel9@-oAf9uM( z?G(^ll$YsvciaB@e;u{?23_+WD&=q-6@S~x5ueID{nd@FRy!?!`aZo9s!;k=%w|f| zmFI$oB^$NfK3=IJ>^f8QY$A$#%Rh0Dz>_bse$CtI6d zsk~J-G21g`huZD1+Ffs~cPf6hmJL(?E-0AHBWSph_kyF#u^D!O@Af+WS#JF_q@eM~ z>LodLPyg9$+Oj9_-MTA0bI<;&Kcao)@r`pbN6OMbV;54tKYsuGd;b6L^1q)obR2tC zTyXPc^!@8@21%;|J{cW*`)1e8f_gUBk1@uzdFL1^1f;dIlJ-3?t_TQYxN$J!l6Hkz zzu1EL%kAb*lxESlZERsXt35TdGsV2{pwbP?XP*Mts;4#j8*MvmDj6UB?4#U7|Eld# zD&>ibT3=k=7IyN_>-F;wZghI&>L;CI)phY=yZF2*PVEN^e)Dsi7S`O@dZMw{^+MV2 z8)xQzv58>~GSq&S@YZ2*@3p9&4vD0?y>WAo|GIKiY0jQsPRK^^ zM(Gjd+j(=(hlTlJ` zVqH0Z1i?F=j+WPK4G0WlJkhHET>2{aDTXIUKn>P)EpJ#e(mPA}xy0{&UdC^u#hAeE z%v-fjB2~joXtU_09Fu6PP*3fq$8QUQSd%~fdsaI!T0HuhUosy{#&*7Wy{re{um|SU${QMC_3%+83ivdqnC>>m?!wGT5);3!QI(&n@(+fwoE+4Gxyc!md6Lo z{Uk!C$}v2!GEiZ(WUOY1J`vr}_RHt=tIuXrg=0<^HOtuDw%EJ&x4fXRrr7U#MZ+yx zLT@*#@2Wq%;)PIY`|s!P3VhGSNle>fb<*XE>&q8=7tEYFCF|d>*SS*z-ezvycCkx% z-bI(#9q*^CIQ_7Fs-^9um9MMT*Lt;_nqlL9y-9QV&FbEnD+7Hmn_PQTx_axi=AN6f z`_F4@of7mpf9c^8Ly^Vy`343&2OT|iZe~l0mdLJlOWqf$wXBe7LBY22SyxLoUriC2 z!dEl@pqr7{f`xX%7k6=K-W4i+zKk`drIb%ZOi|rocH7)vITZ&N2S0jyOZx(k&Ch3Q z7Zzl0VR;a;foO zp71AW-8ml_CNsmp12%UuKeY0!O5C~NJL}Pp6LxKHD!n>+dD%U~L+h63Fz)D@wd>}r zPh4HkKn>h*k7G;-A;h8{-}JOju0GFlCPY8@8`I?QdJYtPwgHx!uH+ zwepo%2RGl_(B}t#&apb1RGR)xX!F&@Z}YBM-r_tPmnG}9z4`wlUpcmI9L7(YcjcrO z=#+0Xtm$&urJ)kHZTq`3d)JrU;tE|nYuQHY8++QV`YYtddJJ4F;9}Wf;empKUPj^zoDIGxOWEvg_c}ZA zY4akxX-hxxEGn>goA%&{)Vh-G@1BV)|Fq=Btmc(}+hrH^Uz=m2$M=25oR+`}4>hHC zVe&n)m*&=Q;ry<8EowK5p>|r>siQV>OApAtvu#rSbItp}!|#QMW}IaIe#5ImhkvcN z%7m?ZS@QSJu;zcdQ7wOJ>f+Md+wML*qmw4Ff3bC#+w+$;i+9ViZ(pM?AeVJv;;))1 zYa2Bmg{`~sN!#opL&MEq)*q!;*)TltQh3z3$Z9&nsPX z@{F$IhOw2)9&Zsl%y=~^`lnC)1WS$oapAA0nn`lZ-Ipn?vGCBjk9RpXW>mlGEGfEd za(4Giy(^Y;toW0HJRL)&7niOEZAO^z(Iri{5nYr;gd)YnCsZ+~@JkHQd1-anD3Un&I8U1-sOZA^Xn~ z*gW%?HaJXU`tte8^Yo`|GUre9mu+b-emdulAn$+AHJTBf<`!K|g4J95O*4K^JZkA7 zZM4_;^Mb)VudZ?NIVtt8TL+oBv*wSiJSy zYyDpxlGm7L?fhM);jnuuTkagbiFP~Bs2uVX-K%f7{dL!o{2FKGeW@}}D_`rLX4$fm z!KQVk_%4Qq_YVG*DjL24d>g_xOt)rv0U1;^4?l0W?$tq0#>&kr9EB&wZqa24E0TM? z?7uZOCPl!>zx?E=EZw zgAV3u`XTo)O+dJ1uO_$T{(~+;+K*z@+ST5c`R@KE|LEeJu1k#9grsACd_D4}ai_=a zpX(ef!WT0#EWO~~&cq;d%JXyYE7nwoqNHxyLuCim^u!lbn;!r-dslg8%se?aM+mCXJkF(fIj%U!4L`~wB0jZzy5wL{sizx$RP=BunUf7{(z z{AoeGn~v|wQE6`e@_*9=?uxrlwdd+`_VxHZS#0Ni?}^J}A?f^cDJf_D64Zm=UuaSJ zdE2#|d9MM(RHZGSb;WmaF&tP5Y1(p}dlJPc_3AU1z?Lm#%Tix#6*HY87kuBQbLvy0 z$*Urom2>O1@6CN#e~Zp=$Z>90exCKvgR1-P z>snrOU4*X%>-I~JQvyCs2(k4D@6k>>B5zQ4OhD!d$D2tVVWP~lDj578?r>W%>)D!F zJx!My-y2)ZdN!?S}E&~Er<#~y{bdz;=3)L3+sGb&n)Xx`5G!$BPVB=A;$iE zLY=?lj3ZC}a<{yFX!kGa_4~an(R+Rc9{~6+R`_uzCe_h9_*cR*ux0XO9GAuJ*jycT%H&Tdk;j==y20 zcKf*7ZJe9!7JB7aE#((B{QJ5~c#TJ^OR(0Z?Ug#|_2+-=J$9;?U-`wS7pEWoEB3p< z9`%a3=bzQCuPXhIPFq7`*>7qr51*8w6&i&m%MHFiDlg7#ebvtZtVT&E?M{J zV470QC(qB`P6w-7UkS2rm7DUuC_>OH^7%%|swFSu&wcpnF1a+yO^a~`>#NTVJ0E$h zJg;HLaNy{JgR&yLzkCa9!Z|NIwOL+wddr=uPd2ACe0It4zR?{OvY{QL68FZaC@ zU-nNj72mkA<%_WBwSOT~{&};!c)s%d>gCtu)8v!u&tCT0@+CU7>eqI|FA}LqY5JuP zU~2)?jvn$+%E`O1pji9Ai%43Z{k;>D+&p#yfi_W5+om^r10m;3JL zx@_KWx_1l;tQc5>_bI+Vd+?Cd*2s&&L%Y~)<>KW?4Rf5~*cy?<k{DA?-nKbwQU8(sun&rjcr5~osetwYO6H`+hl*s!>KREteYQ6KX!|E@kquLJL zd)TX?{deCdy_4$Bzc*G*5ZiZ^*~-=L>3-D(XKQ{JJN&Zdt@=B2o6Mn$^DoYvcK!i( zw(f6{{XajPpS(Zr?!WxyFTND-c=^cDc;yA=Unbw?+3|!PzQU?|BKgmTxqFV;-*)`P zpOkI==ERD>H;Y&Daz9IBEtfU9tyh?pm9p$x|CjrxU%s?Ax&Ih+&P@AUP4=%lZREq2 z{EyyeTR7+0qgVMa-}=kGjMsJ8ofBs(6(drhpBhy=&*s4kmOG90ll&*H{OK+-?cc)9 z=haGsI;`)`e7|Zd^C#W^l53|-o~^#|3A=6O6`^9+{r{w9pWhJLJTGwm=FC6kfhE7J zU!L9WprdnW%@ifWoO5TQt`za+X8z5d-r0Y2!u22N)*k;I--OLC_OKCjojUDq_rjmy zuVu2&$M-Af>2%sXy}LNv?0X`w$N#+wf4_fH__}jN(RYQv_lws2nseDAiTCJs`>RXp z=Q8kqojL7l`pnGoid+54;_O#7y}mkpoHDQO^b*FCQ~o}g^p@##e85#LuWPScU{dl}pINi;nZpJ=-kN=She?P0+cbqhy8uyRU_-w{K z;|hykla-!dQT}Uf`C|#|v4&-zZqK*6wBM=WoOA6wDWCXjjB9rGR9x?i=sNezFu_>n zsj~0B&;@_KT;^jepKt!wG9~Jt&BnXQ!m5tHmM=T-B+H)pYo*aw^;@UHm&@%tIQxd~ zZT5zy%jZqFq7NQ%QPNR5*1;huAOEj(3**^dbBjC4vjX-?t%_Z|`f2z-mnrvuq-%Tp z7kl!-&iec}^}rsdH_s-rRT;a^zCZ1(?&F0Y-kMG|ZxwsFf99LZ`wJevxx9Z;j@+`c zO<$z8c6@UG6<&Pc=c4D2gI+^ZiDc8`XKp|0c+1az{k{C_k!x>Lf5@`_+UO=S>tFA; z$K{3k^Zh(8*=^GKf7LGC_^rQRtBq%0>wce2qPiWEF3X>^+uL?}O~;+?urME&XH%pM zzK3;mh}$mw>%D{Z>rRmg|Eeu5{~lj`-epSS@5v$a7vI18e8tm;3D%{TbgCb$V=P*K z#%ndB$N#-Cv;RF_9q{t$drjl3)7E{|F%kCozx~bX>kFS69`B|6trwTe9 zPgR}x^>Xr)^ivPN-z})$vvF#*@xR(%@0WIc@&9Rk`ma#QvZv>_tV%d$+`9hh>ux=p z9rF)ZhVQbIKOR)^>vz)= zuZY|Id`dv!w)~xkdPSCt-!E(9kKO$8yugzGaTESkd#Y{y^F@3z^OFAo-{Q94`4wID zJ2?1PImZQthUX7&b4vQ0)?M+EnPH9FBKz)lQjg;ArMxWWfUf^h$X0M*X6QI^cBA~O z^9&8gl|FvEbX!eQ2D;FTfng03lL>>UaoFS(kxoH|4-QNIpFX^{)fuXtp+VQ7fsNtI zp-F2#wXiVQFn#>LZpG(!XGN60z*OAeV98)$5WEOFh_c>p{{8#+&)>~tWSG+vtLt>L zwOFu%9jfv`C&(xP!L4h}p7k3(d)LCiaIW2RM(0eCZb6~MMjl?Mx(6a)CwJW1W_nCx z>6D=I<*?IX7#J9ASpNOo|Nr?rlR2FHw!0QZOqY4j<#6>x#pj%Mk7p;Vp1*pxgDJe- z<#xsjhRDSnzKxqVPcD=;@-b#;J={OfK*hzyCMTVN;ivJO^IyJf-0YLX9H4W!z39vS z2bMOsn5&l9U5@!W_tnOLhmL!7qUx6$seb3t3jO7?(rT8S-N%g~a+7!q^o(sMRhugB zH9NBKfws@T*w;7j-kPNAoy6TB)8Hy}@mkUW3(1CH%N4O&akY8|CmCcs4yp1q_*fiJ zIW4|myY?xD2G+DCt1HaQyu^hCPkxYywl2Ts67oP%Lr}odjMLM;yCL`Q=l_Bq?|v)# z{*{qobIz(o&2tx8G8bsQaQxm7#Qc<5o6UcD1*6ndk%r)iD+|^>^LZD)EVjy6>qC?Q zBey_r_L&kHzMWU&Qa&*=ERaain$ur>wlp=0VMViZ^_f|_?$7$f<&{2n>!D=_l{MoU z?(wvpW>}N5Yg568ACj+P?yx?daO7Nqe!%>L0`g7Hzh-j0vwyfchxMyeLs8|FVkz{mSW^ z+Lv)2+0eW3;_#N*nSZj3UvPDm3*t<;jK!Q|*%3{@Jtu8J(EK%w$k*rd$KBp~Hvt$;y6zQoh z+BtzkkbN_cMd1nAug@QrirMsc-A??dzeVkp?xS3W00HPGq&tE_YIX zW%F>u&hfVY{ZeS^G*$)$@2q-1hSp|1QJWca-xgakeR26~dulWHS>_6v*;&WFNhzqP zxXqpxwRo$EKoFd0OLjxnu_%|JUWr1Dv+7R{!R@OwV+E%{K2SOZ6=VX8R z&V6C^vzNvu84UZ9SA3PLoOI;mo(3~f?gKl0j^DceuH>#;;z`z@4_7xB*QHHb7v=GN z)w1qv;s0-W3ts&eRq!*ZPzehB{U`P7-HU8jg10fmueh{)LZXsaTm)>KJ8rVynQ&mU<+>Gj z{!VUSw_mfuYwmYbn}r9P8-DGXTjj;mFxx?&+hON|e@$FF4xM=~w!q!R|F%q>y|Kx= z`3rW>sN3Ay9%!~=%KO-!!$;3`bSTe%v2)h-|7u6h%q{4>#nCXA`+$p&&Oc|RxMSCD z3Hdrm%*l@l4HQ3U3|{v&@vWCP7Xt&s4L&R14+(lzCyVAYl zJ2$Hd8O65>8c5ygJyM@4(r$SxyCc3U*kwky=wdvv1~c+17hj=G%7u&vWmUuU)4uUc2hmI=gjot6zWkfA-D$w_C%? zzXo4DAKYFa9=?2~o%Q<)(Aww)>?KneGj^2N%u#UA51s$lyEsVPRG+=)9grt)(6F*;>_F_`Q&MmcW&wgw^xoO%*mFcbfndKv2O*bsnTRzp% z$CB-U^0jQ4$(d=BPik<;o~dQKDAaaXPke#@$@y1`cOBADW!U!E#?a`yT|oK6)VK*= z@tZz>Ip$Dr{FS_9+#z`7u<&8wqbv>A zms~lsY)ZI*$>dm3J6c1{EUr@y`xk~hl6RTXg*<#t`;7+-U-h{2^*k+dp&-%<~7v1kV$FXOD+&sZ^Z^1o# zxeLemnjSGaG970X6r5x||Buk2F3)b3i0lJW&cCvXS1xJsGw+zQFnq?^Df^UH8s5!$ z=5JiMOvS}#(TuHYcFp1s;V%$M%F!uQE!#Hv@_F9xtbz?yJB|hv?zoaJBG2&PP|K1k zh6{{u)jApuyn6VPslL2TH zH~5TK<^qT7UhFz)*Q|AKR+y(%7T8{okFu7spXUEjg74^=Gd?~#N=N&cCoh<8I;ZdF zC58${n@Jr3|Ct}y2j70$p|!PR6Vm~vBRe@8_*I@vvSs?R=w3nj)EkxT=Y_Z#JQ`ii z%Vu4$%v}0SxX)JGNyUk|D^A|#L*Z9e+Xj1|*;8zOuAO$xnoU}A*Odi3gBHx(S#pJS zpH&(I!$rY;@%rZ+e>=Q>C&utVrzQSr1p}903-cb)Bc2uW?g}oboZJ3)`U%TthA+yQ z0}PC(y_%ZsKQZKQpS@zP&IRjJSI%rnKd{ZeD(Y2&@~fq%)X&t*{fTm66Hi@dlA);N zd+3mll5_EV@y4a|9eYaTvp9Q8nyi&eK{D{+peL370{=WLm z@ohKD>-W<#E-*BREiSw$oO#;hMOxYN=^>Xk?~Qs9)%^eKC8ov;ee2vZ^x{-cI0fCC zRgiIE+NQHl|NQyY;Tk3MhhN3*$E?+YTVl)>8b6wG_Kbf1Hb#aANefmpF)-W~%CgPj zxRCs+xSA{S{HHYx4W~Dj9r?M`?)$mux3erxW@wroeR#2IyVB?7E(dg4q|{$U2j96f z?b>oTSH1luy7`x%FZ~?4RkDt4I*X#=v-OUzm&<;=c_(Aai*v$tcc$llS<3jKA!U)l z%pN9&a`r~S<%i9fzD)V!c{TpsUCF;`3^hsjcHBGspmasG-q*@orx{vZU+r9bH+hzA zwCK%O?<2l$SRkB|63C}0c(M1@n;neV-rjfK99jD}e9waqvH}v#UyEHVSW-3TEnIMJ zcK@8MT{{o=Y-VD(rn)rEZ0Vk+Esg7&FLYc>*JiBp65nx*~VnzOH7j@%gJ<>ImdOjqPx#UeYb9B;F!DQYWnN)=iYv9@@E(r=CE(sqQNYn_aRom+VFS9bJZ5nw^Maz zzgPD$T~l={S&O^sCPT?gLGedd_A9O1v}CJo;9U)VYq|dIleB$T{oJ?pM_O#Aqq1N7 zE%u00H#^sC^6}X+Var$L<5&LJ<=i<-^eM)2&G&g>CyMOtzYa6-Wym{=yr+ZBP*{9aVAki*W zf$eH0*X4p@5-(Q9d7Yozx}bf^v!(lbUYPBIBRKW>1FNJO-3i-L z_I_D%I_u%e?5QzrWsx^7ZJ2r0sbSle*o~#>W~MLFg10;g;<^yBM7gyoR?eW%c2%c} z$R-8F2iL{qt}bL~;mDd|>X^yI&@lf-FN&9EvKLSvJ?_JrNuCv zP51Gs1rCk=2jm$uICSO2Zr)aQNM__?FiQzEC{Js4I}=ozd~VW`JAagQRD2FSwUXH; zJJ~NsKklro@v7gYug{y^JEFcz-BvOA@uc;(^*1A$7Vo*Ou=bO=Nk&%Ysj1x^0bASH zueN_rQJT7eIYDUU%Ja6Sho^k!Pzm*7Xn5<`&iaGpk6=UFg-3}i_qH+g))_Dyo>Og5 z>9kdN?k}5ZGdEueUwd=K)vSw7PFqeJZN2~cu;Tgt$wHgu7!zG}rcO9{E$)upf=fnS zCwChg-x785tC^jY9`!>-`q#esGo{t^<}*sfRop(IEG#^kV=A`=x99I0-{z!me8*wo ztK;1$yYqmNjDoG%%K7F=HfB5T~ zv7@!#%N6A}omQ)!3i^LYIr+n$)P%P0bEOog?({jcv?=Gs=eFEyYS=(rpeI(O{f znONpm*%w4#aVPHb+*Eunv_rST@ync*b>AjsKD>EbfZt~CL_bL;20iv&B5?OzT*LEj z!|X{+3@eRoJ*H(|=x#PR^ul)Yu0ZXL(^PH;_gy{3ebtNaZY+DQ>Ai^Xy#niFT4zM> zzA3duqWyH!rxkN9TuGl^;kDHE^PibFmR~U2sxjX#^sjknPpw&w?znV!tH0Ir zjlP8<(fLAxY|0F}3+&FT&lO^RaAv_wS(c;BO)P!fLJCpl`R5B~Pq=t@RWs+8O^#1^ zj$F~Y_kP;?#cMb1n&W#n!$0rsndMKf%{$AuR=+CkfmKFGURsz=lvnGPdEU39J||!K zw{yGsuFVUYS1##&w&s>hT-)M%dv~r@cqUVJ{nYKb!dBux%4DwXUgv4>l>0zUP|$o` zx4f9Mwk!+`*VGm+WaA_-FN?0*vR#pT1)8`|5oHilIOoey!=Pu`wz?(FHj9^0 zs)6%{v1fLb`r&Q!-CiVmtx*f%ooBte_H(=Yx$0lBjYX;)6TNPyWGD7s`dJ_V z5qF9ksy~JJ&$zZ|=FF8Ij=#hgYFuYC%n^v)Ydlf9bZ2zf-=o2Q7Ddd6l&u=L|s5M_;0ppCe>|ak$OgVF~VUE#U8vfKnQGg%ox50m&ve;s zubDod?H?~W+PTxTMSH*L{*aaKygZWYYm{b~Pn64R#jiVW zCae?Z4)oI0OADU2iIht8_O``SyhM`Vu00Pe0r;S9!}iRt96s z;=g;8vRNOqiSjWVG%CE-y7TiQV+L^z=?B8ae+2h&C#h@5&(D5y>5O9oTY{16{au?g zjy+nH`Xl1q9PK#0MR^t`FCKngx5P1cspIY~k6z6#+W7d|pC?f#&Th54ch74ccjrzq zmhxk@(|*OAsR%n0={Ch*r19*PsYzRJcV26)i#@k!**~Y(dPffWbglINHSf%#?t|Z! zyu0e5s>i6n6;k_b6KCw2Qr`8F_nifnvM_Y8e{nxx6q9`GvT&n4(*=PLn>AT)3d$vz zOgv^sZZ=zS>*t@Zo+Yn7N2KW)=e^haU|n=?vYuJ_wKFf~t&My*bC#%{j%lRJ7Co^O z8sZ-d*0{cjl3M&LYx>)7;lB^Rb$q_vRjaM_oaeqE+lsiewr1f4a(ad6ZJ!q^<2NHFZ5vFXv(KVBL$)68b}F!fs$ zN=@BsxO_E#IlH6a?!$dAMbGwSPhnxnV0fl4Y`u2xyh%%{=ikWM`ED2QZNuA>Ci|E# zNjbhss8)UB^l|~sDKV?W4k`$xa$H}>YLK;chG$>9bDd3>Sl;RD!aCwgxjssBel@I} z^4>s2Nl0vKmv^|ZuGo=Ri@GiTR5;~0axFT(yz0lC0`vJ#KYcXO%@Y?5mP+M5pz67D zrmyDu1NzgxX3Tv&&2#grhp!b(gg)QAyvcg0H4mc{gOb&BHrt|ODju$13l1Nv@4K&N z$vFLg*sd<<)<4lJuUuPm25ArDtHj z()dTb)YyeeJi z|Ne%*voB4&!M62@Tl2On8Rh48EZscwImf)uF=v*(mOs)ov;Jkt6}4%VD_?QxYMy^| zvsf>_;zY6jXQS-`TIZ|EzE)nna&#l>0oBImf)~?{K8U!m;&a{&DS!RY<2pC$0}pN6 ze>I{1yVBo`;vuz$<<-v5`IO<6d|YGcZwb@qw>ubtU& z|FX=M9WH;9m#9vkwf@m!2H9OvtiS&@WUtJ3>r*?|F;D1w;+34|Eh{US?>>FCnPJAZ zXKckk_c^{k@sxj$(NwLjDbrI9RnGnGx%v4EPt`5QKQI}IHk>@LUiVqZ0^wDb_cK<# z_-3BS@O%5wnrknwxNK9{^XdKEH$o;G>ZA1%|63|)@At?*i{_PZ)5VuG0%SulhRSOU8w-Q~ET|>&8eKl=->d4czf_vf>;KNKciqg> z)}8t7``v32R@<&Lr60`MH+x$4&+U=n&2F{Drz+X6rkl;zHh90v&vLi%&eK2oztmZD z20Y%*^evw|y8f2W3dJ=K_S=Ye$G>jTR=p}xcRzRc&GVCEIM#(pE4KZW7TEFE=DX+W z)bl&%>VJMX<-f?+$^{wb+wb$fxj*gXx7`+&{>#O^EIz(w`<8#Y>f7%HcIQ{t`)v;w z+xCpv;@)W|mqv~Y&Ro-$zsqO*t?z4lzj$G7>7TDMc558cQ|d?p*H7}eCT}J zt<@4Y_Um4LYc6%{+kIY6^}4$U{^drV{|7SQp4F%CZ%c+1##>TsU*0_4%6#yj?h3bsYPD%apMS48Q2f5e?CUE1N#|o4^`ds~+|iyU zd*e1s#chTgZ0j@rH~ramgqW-D+)+5LB z7FWHn7u!%Dt#)I-pIDe4hyJ7QED8U&`E324#HO2)^|$y_kW$W{-CW;hoSwVkIa7)6 zgwF-M3IAO)qpjCYnxpk8cF(E1FBl&z&F6daC@-qEAmLo_!>NCl&q!E*D0lmjdt3$F zr{ZOz;{iN z->fCC{_Le4w|B69TlB|Yr+L?Pu@$cm{L7u0v46wqV8Q+BjK8<5mi+GYTUmeWd&72l zzVCdDHDU|07uO0jh%x-$o;dT@9orKVUw6A1h1WL)&F9{+TXLGPX-@wCHOA#-X^;2c zTzU49ji&zA>f-v_W_AAT-||m=`+Cl5&D{QlC1Eq4UXt6w(f-tVLw&T<_WLR>oBwM3 zf9lM-d?jP0z?=KiBEMPREqR-o@cg0sA3adH^x@m?{c~*pO+EMJi?>));)e-!FE%sq zLTB6<7#PA1++NPc$Z(OFQ3@`oPsHW! z9aQGQnT{!w7ql8MN--38g68m`;vmX`TVMf_QU-=OtQ;3W5^#Ku>3w|dj;*{3rb~8f zK9d$$Q?AIfMBV;HbQI|533!QY>CcUpHH9zk4&SZ=VIj2jR@p z9_9CH-yf~pz+hpVldu2j@HYjCx0)S1`LCawKH5IJ@5bD;^+kKkcCY1S5ZqvKdp8OvQF?w%Eq-q49`~(Z)AS0&2$0rcqxl7p-XsiEyoDJ5ax<51n$}Z@Iv2z1kv~h6rv#jTu$CnBm7Oi05KGN`|jzJ;j((3uW z)1(**IQ?qwX~YJwJ@`~&y5=2M$>bnLg{(hcK9)Y(uK)J(y8u=OmW&6Ciyf~CpE)d5 z@`d|_#FFKC4GEsA8jKpA>+8gn4l$i)VEFGioh8S0tx=*QFTW3 zU2yDy(@Nke&h5d&--3Jm0;+P)Kr+RukzYb zFqO4|@q?6;fLy^bjqg|F3qKd>jjohO%zbQ^qaAvz;k__ zSyUFofmw52RxU1alw_Dc<8eP|_-WzKA3D{}r|*P0G_Z*;xwhbUo+PiE-gkKk*_SJ& z4^#(n+A+9!fFk>ms-++3Z1~&F>$pB}{!nJ%U3m0x)we~~IZTXFa|DksdA@X_3~2B` zG9=`HbXdop6;0wUhc$VFbbPd%XB6=?xUacxp?3L<+T=h1s~Nv}CMheq&zm5sHmRei z#!$hb`LofEADfxKpWAqJTY?FHkm9xntb&bI6+snxT53~t8Kx^i2I&^ee6#99rU19# z&rca)YR^UQKGYLfaPX#~a)}0q@~W+DjlX!DoMfUI8a_ncsdf`)J5cFhY|YWd&cZ1p zuHvvIFD|7gdcO7rZ+p zS5hBpO>*hxWY{3PvPalq$%4Bqg2J_bdwzTsY1J!h^gc&!n;B-Xu0Akl}P zfkCe6mn1_$n%LLQixb@>8TO-Q+L$bdhQ3)B6D#lQD!b%yUg3Qp+u_U5!SS{D^C4S`;ee39Zv|ba&p&2;q~&5qMq82)XFTPzv-Svt1OAuHjXamTb9vSpvFPpW*Ir!4V@ z6-V!pnr~a)EaI2d6IdXuF!h#>=vC$;jTYM&IOc}DN?iUc=dYdOhTEP?0!tWT{xwWA{i4HK^c$z!KCIH2WP*j5p{48SnzjA=Sj^_$yL@Oj2v7) zv^xZUY-Rm*jbRQ8c>KTVL!)@JMd#7YA3x<9@N!(ZcQEve-%PJw2|aF3Rz@brDtiV2 zy_HuFbEb+mcyG=+-H|4i%24yfWPOW&a|Flb>HZs|JTCP5NpoDNyC8h*u#`zyy`TSA zhPsJWe;6I6B-y@sV?BS zd7MmNem2B$zPJF(i<>2jvm=`Aay#dkczE7rm^jgELQ{(8%DOo1IhQpJ8P4(Cy5SgL zqY(07w?bLcw?gl~U6zX<=r}aQow%dU;Wn*k-oEmjB}?)eI2wO9b$D*8lRH&*KEHFC z2t$Ihkd#(~gyUjPCAD9_W-k44{!f;2utPzGmV^KI2i^O$qu15lk6Zl7 zCW(W|pA@vt1@p6SkBVkF8>r5GrF)y$~l<~ z=5{35&tQG^KlkJ5f1-XuRe$(yoL~5a@ke_<)0X9n?>;n$E}Swiz(##asDRm{%&ja3 zc0M@uR&{0N1)tkxPOHK;N|v-<^*i)0_v68T8@zI2^}_!>*L`|nb#Az4}Q%LFiMzllQX>hk5et%@&}6ds8 zymVyTzf1F9&5}6VaGB$NcEFAOnsRPWY|e@87iapG&m3<0Wr5u5iGM%OioKrr^+Y;v zv0uyUeJs-DOftVKga4UrsE;<={NLwk})XD|C2W~$4?sVW^?t@Lb+{eBcas7V#mOD6m+F6fe+ewG2 zOvOk%kvD11k=*_NnZ7JCd>FMuDdf%DZI$0zp1nNgzTB=q zmF?AMi4Fggc=W9$1KfNLz20&2z(3Q7D=SW1@Qr^j5jNlb`ngpfwD(`?*~hj^a9*h- zPs0CgIZ6Ldo!t2KIg@(K#NgBS+vl{#{BzmxpQpr{&BsOM(%rK+F0Wr!DzxJN_M_#$ z+s~ibEB|asksMEH{H?GO=4q+Pg6~9_WOrV7$>0B+Y0JwW;`^Jemf2mu|0VKS#&X%; z9`|={Te@`KnK_KR{?1ys_R#z9a{s&LbtLT9&v|>?+fuh~JNviw2NzZCh^$e zw>h&H|Ngeq^FPDA`2U$RD&^Cvzs~G9BV8Le!&v%8z2cI+N0YutA5$x25jb%1zWdiX zy>H^9_=_*bp4k%A~NL)t45p zu(nSWt>t|aFMn7htv%&v($8N%cq{Vv+&$L+tJreG{~n)@5g(1}*mVW-&K`Tf`SEn! zvHaPMoFHO*osxo0b2ma-9-u*Wz;jR7JKilO4 zt$cZ3a2@#f`9Y1$%$2tFi}UJr|MPcTcs3=9nljfgRa2C+-q?-;j$4sYDtfDmS2PF~8Jy%IDu zkzj{3W^lo6mi=7M^Pu)P0|Q$?v^3lf5JSO_@OZ<${l5ybrTv^-X1Ok3^K?1ewMCQO zEi2(m==%3`Us7)JN408{T|bS=m7rkDeKL%j+!z&(COH6J5bA> z|J(efUoCx?q)Rt+Uwmorzr>cq&6-o}nniZZ5BLjC zI-YspTfL8qWA15=3;Qk{c{N2#Z()|f!Zl4Djq=SC8vipf*f4}%lXt2A_^JKF2oEKM~Z#=Vrk2!kNwdQQe459jD%H>(6FZkw1q)RjS18#g zut0s?{+eeWiqz$!b=yr}HQx7$6i8PB)u3!w4i~GH``nXc*r2!AsKjgG%%C{O3p$mI ziVThu8qW8nU5s#=w!p4gW5*5#+w{iS#jKG`TO|b@zcM5$_USS>v41sCl4_XXuxAmE z!-4~ajxH+C&%Lcaa8i`PqxI~y2D!+lO15{JQ}TXVE%a!6#n{C5j$4W0YeDzIM-G9E z3^oejY1J)D6__TiZIA5we`dXz5o?3-MxTaxp_)4ur#(1XZ8-n%)2jdXCU>1)p^;>I z^OShY8CW~_L|uRxLk@G&dWNSAm)O=TvixJ3E^|24sV9kfWAR7H3vC~AvW_IZzw|FL z#Bbh?btPIVQ$ht8KZFY?Km7f5mSsZMlVb)9^91XB9}8>v3h;dh6Hwn+@$F2FLls-+ zhND6<>rS3mUaut0b3${yp?BsTZI{ec36@^)u+pLR?bqw9Gr+Ch1xI5fMKnHiTK?m> z&$>~dRsZ~17m=B42};sy8Do1~th>{6`u06c-dVh^f;0Xr!^MeS9~c9K>TGjZbiY4$ zachq5=$Jmm<-$^S1`hs`&;xBHY{x#hPf!Z{@psishjNJ{$GwVMboDpE5>JK)`WYtGju#s?JowhO;5Sc_YFYc- zKYp7m1Nj_6)+jo3@2zFyt@4`mt~RMV_h5$H5jW5TnflbK3YXe>lMXE9V`5-Xa+=Q6 z(suV*=g+4d#)q#vW~e;dygXI>ZlZv;I`@UU7p(f(Y|pn@c)EUNC{zF?0`;j?KT^K# z^ho((%#a{^;f#=A7h}t@g2g8uzm8!P;Ni5`{3U0%L%)Q|>8xxA{!`~__eTjlg}>3ocVc8J=C7_pT>_VIJdjnIkpr8Jj+b zGR!z|(s+Tm?t+U)o=iy&yt|OYA>cr~W6y#0w-;3N9{9CjStOGeZwsf5_z{1dI6GbW z7t+iIXQaFf&RkirbMJ>^9=A>guk~X(pc;8Adcr+^h8FLvuLVw#tOvxQ1B?gMuYGX; zVbalhq2^~vb?P_niwquJQ?E71@ooZ_0vmr7SFK|I(0uTE!E(7N3YM2vw}-#CRu8RW zXgJ-d#|a;8%KUcil<2QL3_KT<9j-szZqeYku3%B{{OM_Ir4l;~rv1vvJHeygr&Zzj zWyzOKuRh**Qe_K1!O<6KBk@cn3?y z#_i{2+}=G=UUjykgCqN5vqQ$}^J?!nFWPD{2ykg$J-=COL$vC&%bL*)dahn)bG#~9 z9g8=uK6KqN!{y25#gQ}3f>~?h7~EcRTmbiVWdqlmdU(BJ>u7wq+sP(d&4i(Da?syB zRS%X0moUVLZP^4`72L>loRw2x?QC($$Jf#s4tRZ8$7l=g_i_Z3TXDJ;f%FSJw|e^_ zQ-J;Cwe!w5=LM^DipeuP_@iPH!eH3+P0+>X%U5IXkMn9@FFN;YgZifmXG$GfX9 z==tVfZ|A1Z(JyJySj*F_F%g^^EWUn@a!lWHg`vSTa%-xKakmjeo#Ao$hr1QZnm&Ep zd5mqUB?D7xAA@fj+g;)LhowwFqmK_)NGnK!M;|$s*O@gE#%erOX_(qHv}^ zQp3zt0hc~Tj{dJw$6w64`ND`rsr|OJ(c$)o?-VqW%5R)}uQFTsDMN#(#C%3u%rVJ{ zZnkIc)^HW>{Bw26kC+gj%qhAIb^^)9pkDKt8@cml#P?Yk*T^!gx72mHD9e@*tEPJ} zvF&Yuz_LqB&b4fcpgO`q!s2TB>+hV6cm0@rB^aJFo&{ehk-=l$wWr{tHp2lm4{-09 zafgBN^@ew|1?C3q=J_hg!h1)&p`>QfBcJRy9Zk@RKeb4M;3=Hob z@>#&E)Cw$h>#|$9YU3DeQoea}WH*J*pDxvF#S=5b@N1=?5(A54(Z5rn4dz}YuXUS) zG|y!;Gwfjati3R0)!GyzE+_Wl`Hn>{Pc|&qT_3pT4$s~+hCNFK7d&^(T(MQ=+9LMG zf?dC4vOs;`9d*-^%uKdE+9tOAcES1Y%qr2_80Pd&nRRo@C$6SvDdDZ4<)J6i)zg;N zo16V(WvDpOr?DyuG9sxW{Ks_a1J;X^3;y1@Hb>pPbdxIEfu#=8$g>JR9gbc2&#Dkp z_VHSju27h{1J8k4$0I7y_R&SfrfX-O?O*52!0;exiIE?}#3nakaOQp_-f$ygAKMml zm-x?32O^IYrlxaa5+h<$co)&Qr&qOG$@3V_?|a5!cYRi*XP0S}g{bmR~zlPE~_*Vs{g4 zKEUy)bHFhshI76wOkX0_wiQ}`U^6+W5HxL9na|hHO-3D>zZr5)SG~4{KNd1P2-XoZw`GZ6_D!u znUi#rmBE5DzJX0a;0W@7;u@A&k)XqbPc%3;cX%9_yEOea>#hR~DoiXH3}%dPbvhVU zoYxf-VfPYXDBu$cFn8!$aFIoDLfBtWZR#*7N8922s+zz=M*D~>=?6gLhMkp9v~JG5 zAj5hmskE!3+UW60@YHMif3KMn8vWH(U8Sf0=Td*Uy4&XKd_GVoep~#U*^|HNckKH2 zrGLwt?{*^F8gFK6Z z1Aln*Kl9vU1_v4|<}=@jf4__8G}tgS>M=mZ>ay+w|a?S&7VX6d@c9? zogOm(Z%4dlcQK>Pn;)wgzU6bjxj)VBcdh7xpGm)tRld~z9?c_OiJK?N6p6Bf@pZUA8JDAedl&drFE;^x9imwmp1zu8Man#xpMe{ z+`)#ww~J=|y}e)iNzvEyQ&^5{IGE|BE*M`mXWo5evD0j zrI~+kPwn~}$9dt>mC&R+2Haou9CE)-V0dV_VgKwYtylJ+o5{KN#h1jmMy?zCb&cQN zkE>N%#C_F1nEATFLCfif|G3TQ&A++vxDdCV*VN;$%nC9D8GdhnYVvzKKj-?>^^asX z@A~xd#1~7@(vtiCP9NQR{i8MGjs3dnH}}_mc6E8)9iLabkA+z{pb45N;(q@XT#$Qp zv7o#g`-goX*X91cDf;!fhRnKuEK#2})JIRd`M&elor0CW(lu(Y=kNVJyIIW4oN1x$ zi>ANRS-<6X-~ZO%Z!u?C)s$w#g#X*--2AtBdh`8{)_mYdz8@!ORsP2-{nqzNxBcQX z8;Z;l{%->%;EesdT695ub2z>Py6XYXV_<05%z(7o05rHBi98U%z`y_+*knV}!B8MZ zxSzkT>Py1Ez@*&IS=Sf}5?v10Hn*&{zf+?acGhLB|3^jJ+aCj-WhuA`?q{grw%)ep zesQg4@HvmwpG4RF>)Oh_O6!5>+Gkt8g_-Tw{T-3_T(ooZV@9C^hyQK9@;|^@?(EvD zQ9^G2B^!EQyfhcOZSNwp$Xe;svQMlDd|d@ywPChOo5GY|B2$`ZpX5{41>vT;6@4?nlLOu64V<-4$D6 z-n!7o-9(K+A!$<3{Ff$-yS}T*GBC`MzFsALXXY{CFy5<~^=@b0cb!XodfoNz=V#Mq zJ!NX*V|c#A{D6#Lr2Xpqz4v#nZ0EW?` z2>b6)jn=(!#8xzxp@fZAFKnORJ>JKea}ca>d^-R3{5DdEs&sRwuFJV+>0j=sz2 z_lZr2LsU^I?f>qB+m^kFVP1Z+RW$x^ZQ`-0QU(?lsT+)pRclfn=}8EPWK;+rdUs&s zmCN&7m;6{Rvb6L--NrMY3O;8i-@7mKCbYXx^)y3Ev#P=O)(0;hbBlB{*lxMh5$F;4 zMD&OAbHnwfVcGMFZB+Ch@SfY6yr(SSw8b`^=fCQ&y?Z9^`=!54F-nf1A^!{Kg~#6C z85s_kNxWWcC@377{k^+mLPSpH^CGo1^)@vLJGRVQCwXSV2D{Cs3=NaYa#haxK7T%A zW`yVR5S0gedhYF*dHv(Y6up(t(tJN=TbO>B++aI-=8T!0t1Z%B%L#{nubP`QVoED^ zzdhMhxK^LZp@YZc{8PS5-%rm;VNS155R6PaIL+ky{oVGyvvTi$y_&_AxwO)k$&YuB zV~@E&MP2lUP3zKQwe{Kzm7LD_1nE6Y`4_x*MZg-b12K1*=cX|*Dcp41qV3=eo~Q4f zmv%G#;w%>rm-1;zE1rE|dBXofU(CYoYOU}-ga48Zn=jRhE&Li%@Y?aw%J)8-F84Gv zYA$9pby84S(ziXTZ&ByFv~$zuEWN?_Ks{#Px2-dEZ4NHgfBQA|XyhA9G1r7?=kvG( z#g(>%yjM+8R8(81nwkDZ>MO$|DTW7%yH~g|C}fCLDlM~b_rE{&^@`)Iw-m4LtrgT# zv-xgYwylE8Av$TNg3aG4#k$?Tq74wYgyU320)9ltYTE{4;$IX23>2}hC zql$8AxvWQ`gxsy(-!6W0Zfz~ww1#~NUw0+4E9&+$W?!n+-}uz@X_Mr!*q_gqXX?e@ zbI$s$R3qHddLwSnv8os8$9@X2F28$qmqn26{mAu#xmlOp>MzACWoBUbv)GjR*5_AJ z4BS7mxePXMol?Bm+I#N@ww+alrwyw&1;>T%mbz>BcuTQ=AZz97N482OP)T@DoXaw%C4RDD)Jf&pV{NGEDq)ZziC$|9=x_j z`EPg80cWQpI%m%Ktg7Q$Wc+mJq=kj-A`B0tBg<+-bEAc08FmPG@8+^CUi0AK#sf!X z|316FOg+@6>DpN)p0y8ea{cwce&T(~vt_3F{{>aX+0 z6CW3C7u(QRsx{@SXl{9S;-k;sxz`w{JWta-^(tTI++MF0O7{+0@vK+8_G|0yuafVC zJiaf^zJ5?@>F>u&+U0NT%#?e$J8j#F|IFvQ18fTqzJD}7A@-`zVc*%`Y~rRL%G%Kn{FhkRkLjod9_(DTUYa2q{{V6Ggs~X z^>EkImFG|N-MIa(*l%WlP4mMix5`K-1zLbV@)}xiRTt;oj4_G)G;B^@NC_c1>ryEK02QCcjY7* z>pPY2Pj0MVe)F}@Rv(#?3bg^3hLe}1SPK9EE zx>tWmUoALk$u`4=Iq6W!!(g@GITrcl$2!w*RebU|IVF7T95;xjv0 z-lqFyyKOeCVm}fxfA;z%V%g_kq&aOqwSDjE&xZfc`D#u3R5#!9?5ckeJsq~0lXSW7 zW(DlNB&D&h@AP(wlUqKA?s{8mC4ALJ^Q4HxejDjT->j6GtFrrkE#Ax|?^hM|Ht3tZ z%-snK1>S7w7cSbFm~E7JEG(E|-u9~J3wD;cJyV~`?5}a>=GOv_@Pto2l8*&m*6GBD ztmq8AY^~0lf&GF@jazE^j}*?neq&!$(Ie3kqC`_HLQkI&u6zqsl2 zQzw7tn&4)C_ z-eg?A{^I|f{>EQB6DA*e->*JTC9~`G;=7`mOA~hfi>YdP`t9%IgDh6}ckKH6&qUg_ z*6?B5)16jg^Dd`Uznjyo__gxe7Pj-5*WXY6bXCMh_WIX^6;-mkHI|A5{;Vr=zb?hV zu!n)kS6J*>TRDl%;Qp8^t1o<6+e}?GYaMx%&YyDI5$pU>+1v0%%=VA zS3deoaK*;Uc`Vk&vHv6fMk>8L?oj+QT`ukQugou}(n7z^UCHhHR&^;$tljPKb$n-2 zSE{}0WMHUoWZ?Bnn_K6!{QrEn@607u?%!rCjrbqgz4Ohng#1-c zj(YLg$CCEfS4Q;j`F_rI)6*&6q%U22Kf`aQ)6=P{tJ40Ord{p6e)V-tdFtY&VO!0$ zWlt!I&YheaA9UTl|IM}oVb19icP~y}l+o_DKK1RcQ-+gQM*hAz@k5H5SkIK@5i3f0 z%(uJwzS(gx^vM;Ab?&wMZiKG;vjRSFvuxhU5U%yZdW{0?RuR-sE_S1)b9Cop)uXZ@^i{ zXKJFm+2i^zxTzG*dh>T{(CcfnUq4EAzog`{CM5avr;cpdn^yy@B=hPtpP7rUKE`Dz z7{2-co75Ed<&M6K-M!Yxyo!0`q`Xr6()0ks%=<;H2Ugik?=b(kqV1aMw~{GOHmoUr z?>6hfv|kd_S6E*@{!IMjpThe0kECsrf^6sHx-JcVx3>OKcYORt^XNy>caKe(9=^u; zmyhh(LlfTJ$t+kkYx%x3zPmSr(=u;}d!)-Xn@i2Qcl_ykhux0@?#)hBR5HsevebR8 z>n%6y_nSR?74I5HTwQQw+tuX>zop%|j($J$*6Q#rshM|kQ<64!hg=HjFJ+CIwse2) zO^bAn6J_D)hyH0t8=Tv;@BYtxci%0Cq}GWzs;Mm6nwF+D6u5W-Xo6)cbs@wdWWA!AD4?^LOY?$`#GH{^6tud)IQawe1V0i|os` zcz0$^`QtL>JF?R(U$GZ||CpAev%j0mdCd-KpRx;&PcfJzU9s2`wk2obn)hiTD}8gT z3w@b)tZI|q{CdIr@I}jS+}HY^_wj4V*V(f!H_Q3gG6%nDH(56G+HE=g4U0d>{C@V* z^G0d)>xIiy`F1U0xwRwx=e0+>a3O z4LYpOF4K)NRrCB_NAzkL9TxLk+cACdqG=Mrxv$bZuDwao;+|_bD=}8vP)O+I#RWV6 z>|Jd)c`1W*v)^h5ZqE2ErFoaQZ_RX@|5|>cXKL907vZZES1$TA%WGoejzUQN|HGPO=^?WgrqGmMlDbaZK&+?;f-ZD)AovY>j$qQdL%!>8~3 zT>U*+ey-0K&J$&~Q{ua-;wo-$_Ftg9y2!oRjCa|*lRMrjhg~^dJ*)L$(|eP3v5|A5 z?I*9E_TZKFvQK-ZT&~=?xM^O^f^%!GeVTjz=pFCX)j{6pN_U5A-En)+xidCWJ;YAq zNJzYm-uci_*Qs%}hP`Y5TSx#o{dQRs(_Q%LXNU84lcd%++ z@r}ecf|1_d>)KMzyp2C~u+OAz#-}-3E~`X`ZaANP?r9e9w%d=G!+-CtT6%6}z@?!1 zr&F|c&hix2R7|_aou0~nLnL|mcFU_4Tl89kw!SrszT~x2*HpwgPIrlGdd-;`tussn zHPh0<&g^_qb9L2$7k_47Unq0ons#2)w{NxY7H-#QT~RqH%1ZoClEq(lpW~);Hb0hB zer4S2wZOS-LjK}XrSE4aKdR2O^YJ^i@Q9zsLmt;hec{*pdcWzotyS5&BgEtU+}ma$ zZ;z+l*mdHIIthx)|ZTdU+ z){66Xg>#SF36@QH_RafyJE!MY(Tw1aUSGc%Twj0g@XqhkUnLwa?Y56<*|KcW#L%vp zuH7AJX=&G@ww#+?uD`|q`ot}rOKRFyS)S<8Gn-}oyn5l(pqZy!TwJ=Qw{~SHC5Cxv zPON%sy3SfUX-==+YDaOA)X+U5yD!gQeWf_+Ny_uXpQ1lA`D^XDCc8ND`PzRsm#vhx zoxHeqR@s9|mnCk$jTSwfasSf>H(6I7L(Ns}!50=YddQXUbqUL@nAs-EWb%P6zbg9x zzsniBO>gB+zjA-RMSa;O`wZ=eZ9F+Vi>y|~Y@VF#cjdz&!PxfomooG>2YTAhm3^CH zWgKHNHJRVF=6&yVxji3erDb2+d@I#i?3+{^AN%W*!AGy>PS&x!@7LfV-(Pg5UqAoz z^zHidZS8HU51x@+?XyyLwe!4eOS5t=H}?t8bzIdXQn`#+s? zk=w){9{|KGarU1zykw%&r;3x~267Wep+?$29nx8wVk1JXna*~zS z%#JN;x=XwyOQ)w=KCSdSvnC=o_I=sz*w6R4AM5xWS^6bw{kcP{`o4dQIalNyDq;w zIivp4uiT%lEDQ}(LF?@of8WQ&!2IRwzb-{@<<^Mp-#brKM$CUb(^<2y=I*WSQs1^L zx99)w?uC9?LS;zpH)l)m^?qr~OZb#Ws@# zHs^o8eYJgo$i2>v9hwXC(pKs3kohB>s^R3~b+`6Q!v9spQ>HDi)IIZy*;VU|D4sq z#K(f7` zbakz8wAnhLez(FYzh-ZgaQyo8L-zG^9{C^pUl=4uo$h&HI_vSSyV;o+UawG1Z4J#f z625HQQgGb7_{hslkHRDF4I@$YZ`Z@=&6Z9hFF z$gA^r#OI~Qp8f0=R}EV`N7rHcNeS+Q+aEh*$L>jsI(>Tf?CJXPcGchB+}xZVb=tAd z<;c~^8CM@kZ{y21vDMzTc z#%*$UbH8j)<2ZCRV}+DYTFqqncp3iPb9Yr${C{_t{rB$c?`t2PZlA3@Gk9&-3hyfJ zdlrqso^!N2%HAuR+?-Iw+VJh2w84bc?>Ooc{4=@TFLUMm_#&5a;VZA~<$32W>@99d zzGE?Me(C4z&c|=PdZXi`c3b(b&W<%+kQ><8E8SG88}Q2bS&L`ziLA(Kw^vOsx@Py9 zDNj3)zCq<%Z+~Cn{+GVJc>y{Ly>niNzn<>r?y%<2^;-uw+J1@sd6=cJeeV2QrXEX6 zJnuIqFE^~y`KO&%Z?tv&i95Gv@6}y*dy;2o`8}B~huit(>}qDL^hxbRn;en^@K;^ z0^yjq5&Kr{Gi9E$a>GUmu~eruUms4W|GK@#=Kjaie>{}dOqmd}Dd2x6TZV~+uFsOy zNh{-=!~TTt%UV$#P@2lK((9FS_afn`vHL$gxcBhGo44gJCTMTfUdJhHDVLOQ_-S`x zx5Ji>4W~RbRTsGwE!s09N;PGr;j(9D@f~KL;&Rf~l<8PbJg2(;y2W(gacG*U1Dh z38br~sVbda6Kc3<`-h*0DpyGxD}_vRj&z-Ih;Qb9ZHP zhU`7GX65!Tuc|H?o)s$i?YpT?EB?v}og<5kro~A1sfYGV(aL;&l)ZSR{(@Zo*Q-QV zlo>ZqU!5%V^wQ0=Ud3AZSH|8Kr%gQ?HS>bWlxs70|16rHDRorXDd^r^Gto`&ICpEC zZe6zac6&+GHO^-nXR2w3ttndT`TR`R+0qH@*OcDxG?{ws^i|$W#YNWT@Am!s_4@n! z`|G>*%xQhYb;L_c+h2Fh>Z>Utg~wc6+N+uxHgLRL)P875k2#-Nujgv!(6D`H7mND* z{+n07_57wc4-dDWpJ!YB=}E3o(C#z0&c69+@#${(tLD&_ox#hWKDJWn*pyTM|6ud+ z_51&|>es#e`TPB6Kf$L;md3)`m)a(Om)KDjY(C@uxxbfp-444GI$_!QFq?BnO1H1^ zX*zB0vVFP4j?YTAw`X5|uX^{@p8ZYvOCRN!%v$Rg{JLoUC+o$A8Fe!PUotTSr99hl zMP0$6S=8Y-$F$R)9y_!yko$V8;#S3FB?p#hO?<5}=k)cu&&TJ- zua0@0Tz5lrYj~vTv%LOQzrC(&>90KHeX3E7dve&4u0kHpPBGo6bT7@Yvzvr%e+n*o z_0Q>}z1UIx{_X5@?^plP(){}7r1ccxr$Ii8OQJm1HfFqLS=ZcExMs@x#9P`Y%O{Ed zQo4Hh&%8%7Zj?wTv#DJQ?V5E(bfxw*<=4r6w*snSw#{2~bmzlw>fWC+z1HlR=#X13 zE_kxjD9EQPQq%RDke<^bkEz~C(=OjXCA{L*wiXFv>D;sV85-M}O0QYPo5$a@*9wc= zCR}@B>ocFL--J!qtFOKKT&;YK*UshpZeLzu>DD=WwVJizxkhgX%z$|vbcnt8^ep^1gr6GD$=ssHlWsh4UZcJzqS8K*g>EQf*H!_KP?Gv*~qzWj3go$I7$4aY=1EQHUk5?h|hHDgwH+_m@I z*$ul&H{6>U9&%4scz0I&%=Mm^XGMQ`ml9SM_BBE7=+`2?qd!-#-k6koV9kt@n=#U? z3Elo-ylMA0o9X3LbCqrnEw83nEgzGS|9tr_RxwYTnJeyD#hN!_a?cipAbb z>s;DX{QTVP{JN`mcbDhqzzu6+QmgP zif-*>-${d)E4)w5^MZf;(_MkF)$`Q)=_ zpL(CZKK&xslS?bU^__7kv5_nGz5n<5zV|Dh*8jg>_tyXa%lR39gG$c%cuiD$w&(R# zG27b7#tAI`mvtX*az1^=b^h9#ug25OwU$&wrUs@PuHMw}TWhaf*t>mmj-3!yRMOU; z>$iG_{2WexbGv5smGvv{YFSo8<>WN8>g(6z-{Y#EPTMMWQKc)g&~*B$P`!5-!*>6Pc*WVf=H-mb?-^Vr zU~2&aFZQJ_pD`uL_o#`-T2G@>MqxpAmD*uN?=D6p?hl%IYU{PAcW=H=dVTx*ynWw~ z>R%2lUe|g%X+`3U*H+P8vkI3za_Z8UUX)9;_vV5+p)B#!(-#3s-PJw!>%x?exGvNqU_=A`qjo;zCXMawlU5u z^kt$_QEjbml$=dPfsI^e#{TD(P> zJ-2qGg{`r$fAah9)?MF!ef+sOXL{<*K9}+ohtu1PBzEpHD4W(&5`4ELHTkrd-Lv+` zA9w68e{c5R$oA^))jnH9yw{oaf84HI!kMEU{O96QhTPjJm2S&l%<9@=mU?H|I)$j3 z+ou-n+~WOI!`Jl0GSh3_?{!XY*Yz&rS(#<2ru9tx^T%%mwcp?Et^S^upVz%}{xmNC zuTw6jEoHT?JA1A5H23`z)yz*HI868V5lI)Ay7Knz+q=KN+x!3D@1JiI>z_wu&kfgq zQEbvQm+fv$`jSnH_E?rZ|8*{V{oZe{Rzv!@&r zJL>4;<#}xP-FH8`m*32r{`Q;J^%{}2n%56WPF8ZAGf``v`KHpX&vLFh*q}AAj=e|82MXUVnGbkFIl{bGGY;ZFx6uL#X*z^BnGDzJGtNo@2=~IMdT`u)*O8`_xt_7%lCgQ-v9Ue|J&;M{{;mDEnnWVl+vnk z5zD+_>lF7o*>YcArqL7nalhvC+5KP5|3BMadwaWW)t8QrEz{zEPL2OL zQU2$|?f0ry&k)Yd*cG#L7tdm zqTOFS*A|2$m(_sRE~v-^M4^4tIF zwC0z;U->1f&gRAAhu==h*MIz8|J%R*_4R*Ww%5JYe!p+Fu%YL%D6PV^YlLKuUCFyH zROUPX&6xwQj|Tc373N>k;$d6$^kezo2m8M_zW;IXH~)PFy)0kd)VnucB)J7`ExLH7 z)U^HMQD@`1!QtY&JbPw#f8XC(_w5sZ-FI=j|Mq{){r^4T?{wKRh4qf*`;w0bbsCn< zT=maua(CF=u#@UvKWR<-8#-0!v zSKC&nlHb?=eSQD`P5j?C>UJMH+xg{1FUHK>H__s>neVGx&Mm87?a3_JF{$L0{$1tW zjKZ#=OeKcv9B7ZB2Xj`t|GM>-U!J*t^$Oj<3CW zW7C$x$lu-9ef_sz6zg35ZSNcgMWrH(JI{W8JS_k3!|L_>>t;XSqn!9}*ZTj<%=f=) z-v5ig{^i{A`+^q_FaG`UN95F98+2kfMZI%h_4AF=BF~=m;2pc>M)_qXByG$R6qbC! z{nPRIyImhwTWwvIaeL*;6_a=Wlnb{EtyVNL+OO{)akC&Xosq%Cv3kYbWh)zUG!NeS zZxqU(=FrUd=+2x%5y6FTS-dmcey-s^{-+`&;Cg}dEMvte?Hj%++W|%>ci+9dyxc`aiC@m<$HxDEj@La)uX|Qu zBi7_PbJeuft5?TPljU!}eOU4IrbQK}S+!rKy61|v`W(*M?EdN9kDF`1&QjN@)1SV5 z&9RwhldPYvT3P=7j_RWMzgEuwHGSXr>i_@F|NnD$clqa-?77lRCAP&AX8gE3|KAt= ze~pAW8IzB*U>thsw-<&>VSN<05QIGDHn^!@)% z|L%$Z{~-UbfB)yt{|~$>lX4ujT(e|NpiBe~;3-w8Kx|erYd$d#12b@igxvC+8uFxx)8vA@v@ujZFt9&`r&;Q`b$jaLG zr{GWc{{O%0KdIM$I`{SK-s{2n@O;Bg@;x9lq}{rlr% z_V;)9Zogl@<=pI&9d?TZ7oOf@r2Xj8S)R&|3X{?Vm+q@7ulPHocFI-v%j@7?I! zFyWGZ|F35i&*e|gy}$HN?9uv~#rfacf49cO+8hq?D>XY8^;LJ(q)D%mck+lB3qQB2 z|MuqR?)Q6te|qNT;*uS7YL)bw%m>cb4+Va`b~aCW-?fv|%nYZRKm7Fg;l0D*>)+k` zx$gbXch&sw?#txae>gT_ODObHc_ERVoi6?nfduPv*6w8g8J>Z>tCET2i1s+e%!BqzxVsS>i0iCKli^^ zS9GTT_ushd-3P85jJE%qJnhCOy=SZfulpU(FG<+!Zuj)wa@l~n!BMAgUQvw*={RO< zzM65)YtD6I9L5V6JLc{*p2g0#)|P!P@0kWR^~a^>nOTm`cok)EZ(`OJ=jtn3E>SbK z3M~!wi~J~8JWWS@>HBwA_V)bi&j0Zu{)e%Pe%_DNpB3A_^dIQn*e~#Q%C4l+&wnPI ze7n8&$-nzS_kTRz|B*dk{>sF-XOkuiyzH?MS9Muav{ck{TCk!+w~6qkwK_b{FJzQ= zHP#%FSDX+|Jx}d$LnHTRmMSrqnEXbFlsYleGQUe`%;h&62zj znKSJJ}pSr<)&*V41etc5BT(^DqEknUTzbpH!(((>5{zg}OzeqDe5{vVfa$J@#EFX?h$9l7z+ z679kj8#+5>f}7VYnlUH-^z_Pt@Ygy|Pt7pFY)0c>3`noKMt9^Viy#9@~{b%`oALrVC z_;T~|dYjs+;>Gzch1-H}`t@xuve{Gody2>X-Npa^&A$KTWc_dZzdyd${wlWr9AEqK z|L;GiqZLbaU6%B_%Bt?Fs*TKSDzhm2UBut*<^1$eh|c@NOFCWUYQI?j|5EGvOY)>> z;ZBy$z4t0r1tiVF9>$#S&%H2db6{8Rts6FB0Vg&s{h_9E{QLa73*RvRKeXJ%WTj4U zr0SWSGiH1Z6Eriw$h9}pf_-#lOU z?bolW?YHmVyE7#zW+78(u)yn^$F>$k>}_1vRc`1Mu5)m&`m%PNX+hJjw%V-Nnil4@ za{aGW=Jubb+kfW%|3G}pwOex*=0EM1z3!s5a=T^Q`#U>7-&(!??!7x1bJHWk)-Sto z=Dyx!ZJ`S)yEL}@tebMrbJ^BYpWpAWtNDHRxBRWt^7)g_sf4pDohlJ@%-VkX-TR-_ zuKz17|2*ugcRl?+=I*{dJC$xt6w-SX6MpodTiL45n-+fcyt*{;RLHke+WqtFs+Z;Q zKRsRT8fEn{<<8aANd4=L*=(}hoSI7`-r9frnE$6y{)c(}WApmIpZ}kKZvRtu{u!gH z-zTRR``-Vf`~Q#l{vSvE-+kkkxBJ!m|MUM7`FS0yQX_ZN^)wu*IQiODKxkT4<I84!-mYK!(tH2!-T!}d$N#zXu%OyP zZfDllHDy*NwwFt!suM2!y8CC<=P$nT@w?`%mx9hK8|LUl2%-Pwg3zNi-?!30W{kHXb+p3S>ZckM+skkXSea^{irKcQ) zxdZ*8V-rf4Aa)x8?u%b^rI@`~RiwKbqIQoL;Z_ z|NqV3?+i}&tv*-mceQrohoXg7cUoLNcFV)X8N9elVT-DUqvZKtIo#`$-5eJ!tl zUVi^)@Ozg<0{7lO_*}MRNd~j$xv1CYA{?sLq^{vSro3^g!`+*qY$)KkaZVS7mH2ntM? z66Q6RW7Ti%<#yj6%hp#`NUdoQEHM|_e_`K)D|!cPkIp+g+kE=zrw6_(F3z8*Gii3G ztB+2>tI(=Q!}hv!atHMU4PLS_c6kV}ocVY4_PTFd@=RtM+PYTnwTkSrm|$@yLUGZ& zd2(rL;&0B*?3B2Dw&C^16%8EAq#S3y@H#qO!nDDJp(*SY3xm_7CsJ$?U7`%#XSW{H znS6);@1cH=xm(PR3%N~CHt7)BHGjte$+?ORh^g`ErJd#j|j?6Mbuo&Bb&R zlC~I6iWA;;-P^YH zT9mZgTw%c^z3H#tzTNxp*K7Va_6BBlWiKu)eCc)c>zoa*x0KJCzGcfJ-Q48#b-RvS z_b8FLFMI8^ZlvSxr6-!sUfR_EbyHAI_^wM+r?;JX`14Fs;J>rHzSEl)Yv(HI{y)bj zQ@T`Jf7OvVPNt~joCJY}OES5d`rFPL`yX6tm@=cSQ1*?2PJ>d((@FQfuZ!81w4r=L z#qW)`rt`_xA3yc5e4R|#a_yKaCwx9y8S?gQvG5i=@^DU!U{YY0hhXH~--j-qy8g}P zcjM>n>&`xpH2voDGrs2C&ENiJJw_VuR@w0`VqLr7sK#HO|8C2Qa(^CojO<`Y@N^5) zOYU965&5EW-cSFhllJheKHtF8(Bk6bnE3k9r%MkP#7`CDndAcOPybjbjLPTq|h zm2@usIsRAu-?u;uv!}ux`7vcR?Q9-1_@o9-3``@qyGt_fy<|H*d+G;G)0vMC43nkqasn{Y~{q<(ucbfR)3j&RFtz&NH|8QUCAz|C^gqyRE0atK7NR zz5ia(>$TP2Y#z^f?zAsJ=ZXD)_4)fhb!pF>Ig`;LGqvaD#}9q{H4pl{wmx#>(cGH# z_0|4=tM$*y%c{Dtv#P5adNWer^|h%rv!M8dMwG_EKxdZZj-W+n8f1bllM82CtaE5!?9}FfolT2Y2Al9 z9w;|Wsrn_p?pE3B`Zsqgd?$0MFPGMN^g=DhMpp60gc+?KJ5PVHSi_+x^zCU#{JfB_ zAzxqItN%CKen#al_nr(!8D0NXOlD!8XN;wOKhFGjzih!OS7FKNc3V_BFS;uV-TH7) zzgO>G7H3YA2S>`s4H;}+B~zc)W_3202^2Ce_vnqTig~v6@Ji`RcRt4J32tDJnV6_@ z%rNxz5v4PsU&{)w3Kc3oU$G(MZ}t76&uX7+teK}BHDV~(A}ZqU<@Cqyl*r@A2RdQ? zM$+Y)vMt+medHHM>OC^=SoLs)lf(0X=ko+A-`@SsmQ=ezMdbXm;=XS;z1f(UTAd!g zOrN)~;)2UtL8;qIj8oiGyi{jAnW1#KuUuOwRn>mh?m3fQ1wZr?C*j-$`%ffcU#=E<`_nZsZDkM^ySaVTW6Vn z{ybW>@THW%=3E8E+(46*MNgTUBwoLMUevnY{EzW5*9D7r&$LMGz9eFP@r(5QqlKPs z(X}n?{BlNW2FDl#gZ8Yy*rzowdVYbEilp*v4O1zGro1Y*l!kx*8gJkKd~e@A$G1hEDJAo68qV7msBOp^cKf`NHN*MUBA!mVn-f4~P3%ukam(F154@Q_ zy{ANZL4DJcO5gD3^KNv{$_d}~Nq_2$#=LW`HGg=RyA3o$T9(CKaWIMc`{7lneC(ce zQC7ZQtc>@z<$am^+CBHelLeeyCybPoG&hRfU|6VfrAvWHDo~lpL4hM_uC$v+!xD$a zjtD+K`JXdQSLfZ{vL-*vtvV~{V(MXKbA7p=i_`i3T{LDtuFd&8^y`&D@P!M~>PmDA%kSA7iSUcP@*^{@ByX3f{0|3y22Ric3*q-vqQV$++h zUIw8A6oAfy56l*wLpT@v&WV^HXZ@23_-`6aB^kDMd*1DvFJf|0)F^Vjo zvFG``^TOY)s$O2P*lfxlcmBq{m&dkDUA7>5E6=|vhjuQCE9A>=kDR7-=^aPw@kb$9Qni}Z){$_PtMW&qg&i!B&^vGmAfoxZCf;}=89W8U+1hb*d1WR z{`bi9Uy331$JYciE3);*b}wiDb#sG#$L{)Fms2-&Om=WDXJF6}o5|W4*!l4@!_kYZ z1{S;C-P*o>@3XhNu2|cdCQlK(qM&vxJ(wZ)#G;;yauN&%3sTpZG*#XG_O0jHHQikg zubatKd}-gk@26^Q$@i2}p(!3;f`isgwPdt7Y<&K$`TC^{_lhUnJh1DWtQOyk({Ic@ zyA7xC%(_3ThHLHHhNL5pqeQqr?YVQ}6L;8+WtO&OT+26#g&bv#nzwiDZI`I**(WE< zbhM?0-Z`@~W^-JopSDsf3xkyD;;lziJetm&XmV&eBITeg^{hd4=WpG+>goAiJbm+S zm83WdswA~4`5fwaQ6|Xf(BSG~B7MF+)$-}3g*(2Nsc_89E%NYE__({{gJo*yqkw!C zLGEh`ngLq5n;Io8mrN9M3SbGF;Hs#>qJ8p!NBZ3$ou1_j-yBwXp)uv|)4Bsf^J2XY z1}j~PJA3mt$Fk4j6N`4XTl$s=U)2rSb-6=GDUn%d!K>g(jVt`;_T(Ks^ZLB@b-wOp z8S@v_y7la?%2;Rkhk2FDj%h!oF5dsJan|;E*6&(nFMGDJI|vm@W%3B>7VnI)GPdk= zNq>Al!_y{)+tTgjm2c{d4W+@cNufbm{flH5$#X`mGnb10acKVj=X>AF&fRY?{c`lS zoO^qJd!{9?t$i}l{k(Pl;XRek;`8>GUj3wc|Np)6_x~^QOJC(OXb4kK%28J8_Hmml zTDb1gLgg)qi{5c?FbfHO`}S>3#KuG4|7LByb@?*0lJQo_ZEqee`24d*Z+>`}h^Er2 z5Utjvg#j8d^>@GSo_A;K>yzqx=RBX+lbe<`$5ZQa$n^?OFOD6;f^7$t&jsvU8)n|< zzS-uO&C8E^o!%^mYfTESADO^?F+nWNL8a@NOWDPzGamK$KYA!@bVf(PtmkrtoNz3t zskCm7&QflN@}8q7;^Hw)ck|h^ zv!7pAFTQ-aZUGY)*QxI-CoMlzeVs@5&C9>~x93~EWp8pUFB`m zNYdZ4Z~x2vKRe&c{5+O_-`q4#PnC>4<0<|w)vq# zlvtkGY_FB(`#$!be^>df`u_iaTd&6zA7m9@6SFVrU=!=pc||Xpm@?LW{`u!r=xV#4 zC;jDEcAg4^tp%{Cc(Bo3zL@`h$z|Uz5y4HOY0+!LSQ|VnZ%AEC+%2QMUO3?v-;zUX z&R*R4NYehC>mSaP+TCL6mT#iZF;D3TIX*F5*!cL8n*x`QwLSD{>hPNQyz;Euh}JczH@z$wH|q=>*ecj)hvhJbgMb|9{;Ui>XTv zkg&O;u+sEq#09oJOdQO!TTEmG6jh#fc4P>02uxtrXO3dB^AP{e8GR+kgAf zl_%#&yq`0vq>52|pXMcpGp5;YHU8RZd^rpZl^52uToe%I+^D*(jKA!88?$e z1n$}WiL&=p?0l!HS>8L3gUQH%xiiD)T2{8Hmg9qfk2+^$G;Uupa(NQs=rbuWhu!;P zoI*~vri%iLlZb%(lZL|GJGwZVc^d>gj<-28oM4I+Q*sb@^FP6(posH`RD_N(UPE9Kll{29^;39jOe4>NUMsb2BHFvv^#t+^l&j7*EuV7p*~!T(zEudAIJnxxT?*eKJ-oR}n6cy08o>!2ITe=1f|?8)u9bPMEWIR{m=L+S z@Uduk+|K_84(@)x?|0kv{fP$;xgMKkntiROcdm@Qy!MmNyUX9l?XCLyDm0soo$daw zYunex?fvz-{Qv&T%l#s=k4m^dnb@TB_|;yHjO61illW!l+8ZpYd#b&?vmmwV*5!GI z2Ol18=a;pLS?Qy_R7CS_=K0TVZfId)@0ZjlXv;qS>?rx`E9>U;NQ13 z>=ASJ%{x(Rzvb9|yC3DkBEi5qVNs{utQC=_ zyEDw;Kh)&Kxa3*a54~U(j{Ktu45jM~dt+aEh3|UwMCLl1zUoV+3$d9~H(Qj)zC7ja zw#hGz$Lg44iQ*$BjiiN{OYg-0{QGtKp3=8nr+x&xM0qrCXjmY@s$(V~9C3wFOLfg! z{R0awu%>EVXi2#!!J)AJRl*Ll&Yu?zf>{_gCiO;4RCAvE>9fz~F5|B;i7W!Gdk@TL z(C)6{vfsO4&HDXM!r#{xY|?w-$Tg=WBsNL>hmNpEjW3tdjv3bqepd4dY81<7``aEr zkkDgzO-JXfz0jN%8MZfz8B-lA7nw+BPtdp#E&F@2`|0>wH}^bE`d^yurhCo%R=n|! zC&lGGf3L55r_JEiKU;V0AvXidhK3a{K3!k4`#-n!Yhm8` z%@Q#u4RUSlKi__J%qm6Xwusp38(ZxJIS+*IE4tqGRQuG^O*?MC5V73wW3l|-7w+|+ z7c(?;)GeNQ`e~DbfLOWdwD-Rct(g+FJ@0NCuXJABck2CTm+BAn{FR`G(T+)2kb6L=LDYY1+Ukxk^k z8`8Px+1(w<8xJM*7EU*f%#N_=tT;3ycMEU6$A=eX1451!Pqtb%hQw~g zuUwLjC$bf%>VM0r{QP_SzL(5j8`PH9?w2!>3R4u&WN?&jC@9jgQ*!Q82<;Q!&-d}_ zxy5b_3~VcY9rRheGa=<^Q}(qzpD%^mR{yuZ^ZWSxYZ0=SEbe8rotP0IwTySIGrOCiSo`Gk^oUfl< z*Bm-EFMj{!{TY=n=YOxRFTH+d;(Kq|W~YN)0s(90ZF_kASld*iiJT`6DRt;DOx4nh z5B~EsUN(Mv&Xb+akLUj_$-5tSH(05ojBP?d%bKkhTvEg~3J4jgyftb+;@z;ONNMk` zA4etbdL~}gnW9~F%(!jqw?k{yT^KJMJ3hx_skU*<(r)tC5j4nMzu#h zf3(a#c*&ZNN6oj@&s%ps!R7g*dBsbo_MGfW|Go2SL*H+4!L83r!?+xH&Iv^@1)7TT ze0$ce?zgwvt}kg{-bJHL3hu^c+un67ITm-LzSU{3RQVn!!5r;_A03t*Svtuw`^qAI zmI)uu1b>N@DB@yx_m0tTn{M#p^-FzLUNTN|IcL*XzKX1XQ}seE!W0;8~x{*d&}?N z+gttJY__k8i1xIdFU?(_e0h0!cjb3bk+~+)*=5OzC}Z2J5!*^$etUa+?M6Yxh^_hpuxje7A1gneuYFg1|JOBpm2EN%7w*2}p8t36`MjH( zQY%t!^!i@k=|9KfBF@4&hU6-b=D|s64x{Kk9|E7}X8`k|<;>{%O z>dv%yb)M4u7J*iW$)BeDTWh*HZttdoS7+uW9b^tWq<5`>lgZ`S($$G4vn)%6{CYk2 zYV}GwGAI?S%dU_7^*iHUhq=WZ<}5$oo0r?KY`nZ+5r?&anAxpBmI{ABhrq|f$MT47x?(`MF% zSgTt;ArbA#5n_B2q73bCXC7J*y?G}0^i#WZGRwn)Nacxap{zgv2pz5ZEx zRdw~;V3#FRlmtK2%3qipr+)r(kD=bTo1I&ybxaA%S!>w%{`ZmiMP)}?EIW0iW7k5~_1+t0+}}>x7FQUXwm3C||C!%nBg0L- zFR!JGr71Z&&DH8nxkpgPHW$X`)z*4}C2k1?=SuATp9 z{hkC*eSsY5OdUCs{iPg!J;uLJNPK#;T-tu6U&IB!X@>9mnRuEGbhLhz-h2OtZ``Il zm*yN9$)7j!Z~Ff&d;7vsAW-j$fZ#!)&57KC-}ieQxnZ(BMZH~wL&r0-RoJQ9W3L7i z&o(2!-+U~>=|wuzj>cZlYEiP>oDs4%URdbj42Il;()O&s`OTZUHZ7RkEHkq$KePYa zdjI0PGQIS>-;VXX8(c4#t`3iyz?RW)re@Z!%ZGS) zU+_fV_?5R=IB=)$*#b7twSFqz*C!|JmNf0;*uWa}@at?D#mk*(n}coKQVXw$E}2)G z#-I6q>-y?g|NNaHdZvHdw%(FhJ;nTj{rf*_YpcK8h0k6YWnb}RV!L_n%}0XY_;~)E zIsfm@V(YR$XXEQR7aJRX)KX8q7M~#T<<0bO%f2e={kR)-`}+0gzxQo0xIJ^`vyaKg zrO&Flq%*nr?D)*Z#8CbH-P{>7B6gL$yp-x~dw%mZIom1`!MjW5uQ62p`d`L-N`3ak zH>+EI&Pu(ly*>BNmd*=;OLk<&yQs`Rzk6!p54)a8Zu>7rY)opke#ZJSQbS;A>DH*9 zulN7U4w@2|C7`sx=?J&}o)3q(^-I3QJULR*yzla7atXL^tAn_z4FHs*h}WA8`+hvUOz=4YT|mWhlTYM*EpAo zg>GZs;rUGIkdW2;svDo%xZN(KpO@CGrg=hw{sd1ShDzwBa$M#fea%SHRnO;i1nW3)uNI7}(@ zCWor$6c+`q7D0(AKP;J>xGqdqk<(1s?5o=H(A76_p~0^-v-$eQx78CI*Bn2w(1CNV zJOc+)e507!(i0N$6EDPeU-7c9)|+IpQB&-!#`+6)`2UOFmfXGYBMR zTP>WYq$6{Ub)v}5!`I#!_i!picj@<)Pja@nZCEVqVZ?*E`>^G&q;3ZQ^^OLkBqv=1NF;xJjfmD^0Gr zvEhQ}PFEJ)2PKEsn@W9dzrL>Ov%c>BFS5tW?`;0t{{6(p=R6T}gPBe^bzEDxtmER| zRKXh)TQ6KHD2UpgHzn~^(lHJ%whZOMV=o@|ER%gF5*o3{UU8N9c>}WtG502OTC<$opAB!iiimU z9npD#GP@Y_mjonXtQ3Hzs|W&UMJUaKSZak^f~@e4PZx!o8U80GnrskyH`F$$(r>y^qnVCk6ZL$Xzy;$^u8 zQA39n97`3y)~s7#Ifofai81&J3D^$*^sGa zjSo2l+!eTY%zZJ#j$LI-<{2F(wTiOy##ghx?s~oc{+>$jgxtmVGEAi2U3601Uv%}< z#>wi(kNJi9_pv_P$gRKYMAYs3*Y_7*em4Kt%IJ50zimH$-0zpK{hN-HJ9?Jy5r0y0 z_S*TN_cC{0mi683+Yoe$#c^+-_%oIZ$1fxa2@2de;OFOO^m*njin5)$d&9$NR_4RtsTOUWaaLDctkB^@pq{Z!UeA#+!P!IQ9WSpJbVs3}>rM__& zv{q=x{@gxAMM14O^q6*%7Vq=yUPlE(UVhtzqZzuALQ0O-TW;+Bd#A3>!8e|l z*VkTNUq8KDG@0QcgX;uF6Go=)gG#F&F`S8CvOUJTIcv--ghy( z&Fi!Jq*iL4(AJ1ZVYG`{`^@|2!A?n6OSa^rY3aQ?9!M4}dK>zs)0JQ zF7CRJop3>FvCzg1Osy`DJgy1*o?G;wcuGcnW5*0vB@N4q%b%(Q9(-}2Jc5Be)Ohpm ziJB={DPr0V4O+#Er?ou)7U{we*t%oCf$;_gMom@$W!Z_p?&RNWUA+6Xo#(_&@3Jnh znDIRBHA|b{Y!}A_5hs32hJe;PpHAn+)xSRfO*hK?;q$V7Uq!Js8RxQ9#g2Gnr^Iqs ziS_T$c_8ywd8PE@qz^r@CMFYDZLF>ac=796S4-&AScuj2bT8vRDZRe`WQqOFwTN8Q4hV9*}oAczHU4h$}UW)ljHi;eg7l>dtv2U28j}Zvo9XZY0dh5kL}oJF01%E`OQY0 z0av6i?I=nUR<^cHi%&kipQYtV4qw}^UeO)}CbK0`rBod&I`j1)wJU*10c1sWaDzP8ELYDYgF6>vhrl%ii8CzrVNmxnBVn z=R?=@ZHtSIBAbsNQg}4g>!;JhyW8*QMfS;C?@PG&sPW*UYrBG0hOC+zwb;)^dGTVe z*Bdu(G@d;9_V)byyGpsaSQ;a@B|TmHe%Igk?{_|5sXlK)#fjvUh$!jL@d}yRLUm1r zdvaFofS}wvDtfNLjSc- zOJY%c8N>G=s^P zY4_eSDo%9!du92zIs10LUzOy~+bF2pIbq=eAA_o&v+prW>!q{2&FfTb37H|?w7bKl zb>dPDC6*P8k1VEHM3~v^TCH^5bDHkO_f_v-EdQ6X>A6aiP#Oce zcVZcz-dxe#gID%zK9>t>RG)a8byDG@xCcB}l58J6{jxFh|NHqIGa5vnc78gg_x|Zq zTW`H6)8JWOy7n$T`Z=xcY3R{>`>XZui;YicdpTdeU-fF`%#~aBS3I8h;7Gu}`hWR* zUjA7BcWP}-)Yq>^e)w&hBNQiHw(Zq+5yPLeBTp|j2`tQft@L|U?rd?L<=#bmc~l8n}O#{#cn>9&n}e z{qJ{->Sxw$y*AJNU7oeLJlBJoSn;#DYjVwI-;UdvdwyQ}@^f<-Spq_|#A@$vzg88; zr=a4o;aD3(We5BA2YH+Od&It|{u5M;cquP&V@KiRso^n(wzg}hT(a8w#*;Zz@X`yR z(5_QUi#A`}axH2b+gaK2JAy2Y&8HWiel>TNpy170bDqyUup#w&eO~?bw^Or@KGg1T z@ksPua^Zx)6+fk~4^}RpSM{Kg{Z?6Y+U(QTuU(Apb1z`sw6rPQ@ZPM~_c#3zHD6=< z{*Q2&TGq2OK6fQn+wvw%277uym=C+na0L3-W4}OnToG?XbOVS1I z3Wu47@#ZEXI$X^W+fR9AdMRv8exQ@P?3Z54PG8xLLMrzxzWklrZ~sxe{^QZ__v&uv zZogY~QdJzZ{JygPp^+?CBY^D1<3bTr=QnRWKAzunHd!^`g7`}gu?*2)l_ zsVkRnU%r0-_3wWV@C$5=(0cyq=f{m3SFT*yUjAmslS!x7Jgr&Su_V9lbM&X5e=hsm z-du5&;m#uE>{anDo~5p0jMrv%#X=zE6~;DP!u)JKj%!u)7FM5YXvh4f%U`XZHOk@2wa8`?&tduId7b3EF4s ztA4yVqOwDILWdR8k~xcStSp+bw(89ks}1T~4ftT~zDlqDVbG2W&kf7cH)N*8ZT8!yqh0gx;AG*cHsW0OZHrv~C!CxsZffx% z`|82?x~nt${~kDVg+m~io!9W=Y@?;eIO1|vd-d3P@${!IG(O&(`Rwb*`rrMxcmyDl%?oVNfV2^kHBq z`2BW!di06f$q8pWR{raH@Wrey>(4Uj{5h+eOD`PC5$cm@6%%;1>wEA1Z!;TB#eH8^ zvj17|jQv40W5~QR$DJ$}kH*}XRm5~+X>PX31C>oP^!9g@MabOlIlS;<;M+FF{)Dw_ z9VVQg>hELrsrAxzVfYlePV%=_lYGFIdlb>&3uB*9|j~Ju022J-$CVq z4O}fRa=c3x*z0(T{pEExXJRtgY+da*q4&3sre&M*`MK(5QXlg2g`KKiZadQGqT^Ih za{k=^ud}7=-<>;nHG0{%w>E#O>$iNl;(6w|hjap$erm2_$)Rg+7S&&>;@#dFE3M@4 z|Hi^}yN}tc>)t81cAJ~Y-P`-V|Nrw(r#M+;&3#h#Px7=`#NRc0zw6w!bM24m8UNXJ zQ_^H5i>AujtdEa`g6l^i&Wr3r3pWFc@iW*-iGPx;! zn%Ok-_Vj1$y_pSy3L8||0t7WzE&Q&$K63T1){{rK3jXAhtA6zI-gaJ3&4l$V47b?k zCKxd?1W0MLf90}$e%SNCfey6*E?42C$Cudlv^CiL2xBf=oNLhKy0L>}#UoAaymJMG zYXsX%VQT?IatpT2n{=`)&$Fs$cWy94Lcv3&ke%&vx9&~;e(%$??J-3cU1yu;{du;1 z|KAhJ{Qf>ZE-?xZcPuq&lejnU#hN*HYOlxg>)!qN%Y0Aa!$(Vd-8Nrb@x1$|li_;X zSRJwE0~&92&prSA(?<5_tutqu`R#TTJ$*Irp55u7)#hz&?z8ssPmtN#nVcQ}!YX&0 zyyqS%fi!I=uh3PYVi&tuj-0MMeE6{NWbu|>GKp^uIsp1-|ff@eyGRR^UO>sNNeldiT7HI{d(@_bI=A#8J>gLKO%AIS^%-b@ry6zQEX2R{=JbvOk zn-n9M8#wOGTvqqs!NK3eKm;{N{ozVH3&_`k2N@B4ODTW|lP zzwhhoH{UGz(yI54lR;P<;$d%AzEV2)6xY6 z*;<_J>QC!#zmom+cU{H(Uh{huuh(v$dRjFta%Fb?e^X}#T|28b9 z38xSBDG5gzJl^a%Tg)I=`1a&L2CgF<5fdbxnO$vl92qr-}sSJt$CkXgjo!gQj^C8~#^sG`EnD%o{&#M6Sw1}u%8 z%x`_;i&&MEJxY$o{fIc8Sk5PO?!>y{$m~ZN4+Scj1q7Y0bes(ej*V=KWBe$f!^FH$ zfN8NomG#9LyWChV@=R0wFz?G}b+uRJYu?JPk)4+Ow~FJYfOLS|WVP%QQI0}EJff#X zSPnP;|FOnCl;czsr$BMtvmZ~ar}4*cea9ky@w3R@rTW{SH#AoEblqKPbY1MysY%K+ zW)@q$G&7EGIjjA~jY&{9a#zmRRiXZNixA3&)e1C6b+B7{dzS{&%a^n$yML>+`AVisIX+; zy?giO%}ZKX@aM-yucbwgo_s9*Ticsfe1G3_Hnv~w?d`|?W!kUAaNWFkZ)eur=>Ivk zN=y?4FGdxoB{{V?I#tyE{q^k00d96wSJGH}1iq_RU8vjw|htxKzk+ELJ1(OXm;A zgf*%zJ$`08mrM1!S)?AnEvzYUGfMiEVV3Rr&plhO&AQQ`tfXYPdFz|Bvh$x0G5ZU} zu|0ZPl*fHP-)y4BE`i;z50)?0)>p2Kd;B%EM{0k^CDsM?ix`-l*n}M`s=77N7P?cvpZ+EJIS@wffUve||p4-Zn?8q48vTy~_Ds(=6Y|;Y|CL zPEX^_xoNc}A+{o(!)2l1M2QbuMHmj+Z+ZXZvHdz9pDed4Sp^jm?r!YY=dv%23v4Z_ z>-_U&_fzBB8^fHH9A`YAnaU*}uv6x#?hm$Rk)LktUkb%Umwss!ESS>bdc6MJS)&xg z%OPqHch9)4%rzxYf#=Y<>r;zX=H>A7_Pn()tJuM1p3iyW(1vUF``7;GwznxP$#UTj z-S=nBy$vhUPcKqpy1Ql7zZ;3S%yrL7*p}VfzU06nzZrqI3*Veb^jN9ds>;F9bUpY~ zrZHOtOUeQ^39-{1EQ$x^85y>ft-2Y`S-eL6R>|B$ehix&$~?0T%QkelHOM$OdT?dW zdn=Nrp5er>A-E=nMML?~+5A0~myh*M^*VZ4it+cas{e;&%kLDO)}43FB}7Lox-M$= z%#|TpOFSkPC8!3L_$I|jif4N2`E}LaPZ!*OQ)lYwr$L-EBu@xNo{^sO{qz10-1fhV z?QdVdoqp4bFGet8d){5^`#<~a|9`eGcaO7PoxiPWyC>IfH>IE@Yql!o^oR%n= z{6y{CwB^68`V@TTeEwqik;Am#K)&b0bFFxx+*30oPAoPaNyXhIoG%S zEei9LD_7Q(lV&lff1IkGz3;tw*HWekM(Loi;BN`Lw@B?QbKy^VJc+4na>H)3X3^xV zm7m`-FbG6k>`3^_5GuT9?_=Z7*W%QA&rfhl6yshYvGMDr6VG>E@@KgJrTYn^qtmw* z$pai;L|=ZI+PZ!JBT@0Q<_^~s`@JGvwX&RC5`-o@FNkS$ol(TPW&OQd`_pb-dv9Cy zAiMv!vE$4m8iH*dEtYoY=bIIAe&ZK7>@+j*kJADUAJe2g?n1I^{_M`oO>UeVOixcg z+V|+uJUa&eHSZfk9WeB|GFA`o7a^& zbHepFs$|3_-pQ13D3DImGcK9K;rT#s&eck8!xw%+%F|bBhCRxN=4r1KV>_~A8lRHe zQj_j}r4AXpySLs>X1vUm>Yji1u$<@IJuki2zXGFO?4tqzzmgL^Yj~_3ccd+vC;m_08 z%*mONfB*aA?Dc!gJ_aN%3)}r_)#`Kh|NoqdUd33j@zO#qeLagthCDWRr)_@@{N>NN{q2;+WYCF4|Jda$ z>i$%S1U{I;#&F?sc-)?flTEDLVmc8I8bY$qJb9wRpz!F=&(G6!B0&S3S6>-d&$F!j zw8Z85hbGp5OLnWvR@~b^?ewe}EB)kLIaI9UauN%35*AG1E8llWTj#N~+G9!Si2|NC zqE25k5?Z$H$w3KYQ`^wB=Z=IPpHUmF!qK#HrDnFSrs%mn7oScD4i0vFz}!&K{&Ssn z?8{T9J*=X(>OHxm7t8QV-90MV4z!1CuF8teYHi7Iq2TjNeyA^~^__iZzxtstCdO

'; // Optional ports table html += '
'; html += '
Optional — Only needed if you enable Element Calling:
'; - html += '
These 5 additional port openings are required on top of the 4 required ports above.
'; + html += '
These 5 additional port openings are required on top of the 3 required ports above.
'; html += ''; html += ''; html += ''; @@ -566,8 +565,8 @@ async function loadStep4() { // Totals html += '
'; - html += 'Total port openings: 4 (without Element Calling)
'; - html += 'Total port openings: 9 (with Element Calling — 4 required + 5 optional)'; + html += 'Total port openings: 3 (without Element Calling)
'; + html += 'Total port openings: 8 (with Element Calling — 3 required + 5 optional)'; html += '
'; html += '
' diff --git a/modules/core/caddy.nix b/modules/core/caddy.nix index 4841d07..9ea7bdf 100755 --- a/modules/core/caddy.nix +++ b/modules/core/caddy.nix @@ -94,10 +94,10 @@ EOF $MATRIX { reverse_proxy /_matrix/* http://localhost:8008 reverse_proxy /_synapse/client/* http://localhost:8008 -} - -$MATRIX:8448 { - reverse_proxy http://localhost:8008 + handle /.well-known/matrix/server { + header Content-Type application/json + respond \`{"m.server":"$MATRIX:443"}\` 200 + } } EOF fi diff --git a/modules/element-calling.nix b/modules/element-calling.nix index 7f8674b..4ea502b 100755 --- a/modules/element-calling.nix +++ b/modules/element-calling.nix @@ -68,10 +68,7 @@ $MATRIX { header /.well-known/matrix/* Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" header /.well-known/matrix/* Access-Control-Allow-Headers "X-Requested-With, Content-Type, Authorization" respond /.well-known/matrix/client \`{ "m.homeserver": {"base_url": "https://$MATRIX" }, "org.matrix.msc4143.rtc_foci": [{ "type":"livekit", "livekit_service_url":"https://$ELEMENT_CALLING/livekit/jwt" }] }\` -} - -$MATRIX:8448 { - reverse_proxy http://localhost:8008 + respond /.well-known/matrix/server \`{"m.server":"$MATRIX:443"}\` } $ELEMENT_CALLING { diff --git a/modules/synapse.nix b/modules/synapse.nix index fab8552..cbda194 100755 --- a/modules/synapse.nix +++ b/modules/synapse.nix @@ -250,9 +250,6 @@ CREDS ''; }; - networking.firewall.allowedTCPPorts = [ 8448 ]; - networking.firewall.allowedUDPPorts = [ 8448 ]; - sovran_systemsOS.domainRequirements = [ { name = "matrix"; label = "Matrix Synapse"; example = "matrix.yourdomain.com"; } ]; From 33688f3015bede9ef26bb4090c49e781be16ec22 Mon Sep 17 00:00:00 2001 From: Sovran Systems <99053422+naturallaw777@users.noreply.github.com> Date: Sat, 13 Jun 2026 11:50:43 -0500 Subject: [PATCH 029/140] Clarify Element Calling 30000-40000 range needs separate TCP and UDP forwards The onboarding Step 4 port table listed the 30000-40000 TURN relay range as a single "TCP/UDP" row, which is ambiguous on most routers where TCP and UDP forwards are separate entries. Split it into two explicit rows (TCP and UDP), add a clarifying note, and update the totals so users create both forwarding rules. --- app/sovran_systemsos_web/static/onboarding.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js index 30dd1b8..fbabcf0 100644 --- a/app/sovran_systemsos_web/static/onboarding.js +++ b/app/sovran_systemsos_web/static/onboarding.js @@ -355,9 +355,9 @@ async function loadStep3() { + 'Before you continue:' + '
    ' + '
  1. Create an account at https://njal.la
  2. ' - + '
  3. Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.
  4. ' + + '
  5. Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you like.
  6. ' + '
  7. In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address:
    ' - + '' + escHtml(externalIp) + '
  8. ' + + '' + escHtml(externalIp) + '' + '
  9. Njal.la will give you a curl command like:
    ' + 'curl "https://njal.la/update/?h=sub.domain.com&k=abc123&auto"
  10. ' + '
  11. Enter the subdomain and paste that curl command below for each service
  12. ' @@ -370,7 +370,7 @@ async function loadStep3() { html += ''; html += ''; html += ''; - html += ''; + html += ''; html += '

    ℹ Paste the curl URL from your Njal.la dashboard\'s Dynamic record

    '; html += ''; html += ''; @@ -551,7 +551,7 @@ async function loadStep4() { // Optional ports table html += '
    '; html += '
    Optional — Only needed if you enable Element Calling:
    '; - html += '
    These 5 additional port openings are required on top of the 3 required ports above.
    '; + html += '
    These additional port openings are required on top of the 3 required ports above.
    '; html += '
PortProtocolForward toPurpose
'; html += ''; html += ''; @@ -559,14 +559,16 @@ async function loadStep4() { html += ''; html += ''; html += ''; - html += ''; + html += ''; + html += ''; html += '
PortProtocolForward toPurpose
7882UDP' + ip + 'LiveKit media (UDP mux)
5349TCP' + ip + 'TURN over TLS
3478UDP' + ip + 'TURN (STUN/relay)
30000–40000TCP/UDP' + ip + 'TURN relay (WebRTC)
30000–40000TCP' + ip + 'TURN relay (WebRTC) — TCP rule
30000–40000UDP' + ip + 'TURN relay (WebRTC) — UDP rule
'; + html += '
ℹ The 30000–40000 range must be forwarded for both TCP and UDP. On most routers these are two separate forwarding rules.
'; html += '
'; // Totals html += '
'; html += 'Total port openings: 3 (without Element Calling)
'; - html += 'Total port openings: 8 (with Element Calling — 3 required + 5 optional)'; + html += 'Total port openings: 9 (with Element Calling — 3 required + 6 optional; the 30000–40000 range counts as one TCP rule and one UDP rule)'; html += '
'; html += '
' From d49ff5002a939accbe33aa2cd01f38e772a1a061 Mon Sep 17 00:00:00 2001 From: Sovran Systems <99053422+naturallaw777@users.noreply.github.com> Date: Sat, 13 Jun 2026 11:59:18 -0500 Subject: [PATCH 030/140] Fix Element Calling 30000-40000 port note: single rule with both TCP and UDP The previous change incorrectly split the 30000-40000 TURN relay range into two rows and told users to create two separate forwarding rules. On most routers this range is a single port-forwarding rule with a protocol selector set to "Both" (or TCP/UDP). Revert to a single row (protocol "TCP & UDP"), update the note to say it's one rule with both protocols enabled, and restore the totals to 3 required + 5 optional = 8. --- app/sovran_systemsos_web/static/onboarding.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js index fbabcf0..c103d50 100644 --- a/app/sovran_systemsos_web/static/onboarding.js +++ b/app/sovran_systemsos_web/static/onboarding.js @@ -551,7 +551,7 @@ async function loadStep4() { // Optional ports table html += '
'; html += '
Optional — Only needed if you enable Element Calling:
'; - html += '
These additional port openings are required on top of the 3 required ports above.
'; + html += '
These 5 additional port openings are required on top of the 3 required ports above.
'; html += ''; html += ''; html += ''; @@ -559,16 +559,15 @@ async function loadStep4() { html += ''; html += ''; html += ''; - html += ''; - html += ''; + html += ''; html += '
PortProtocolForward toPurpose
7882UDP' + ip + 'LiveKit media (UDP mux)
5349TCP' + ip + 'TURN over TLS
3478UDP' + ip + 'TURN (STUN/relay)
30000–40000TCP' + ip + 'TURN relay (WebRTC) — TCP rule
30000–40000UDP' + ip + 'TURN relay (WebRTC) — UDP rule
30000–40000TCP & UDP' + ip + 'TURN relay (WebRTC)
'; - html += '
ℹ The 30000–40000 range must be forwarded for both TCP and UDP. On most routers these are two separate forwarding rules.
'; + html += '
ℹ The 30000–40000 range is a single forwarding rule — just set its protocol to both TCP and UDP (often shown as "Both" or "TCP/UDP" on your router).
'; html += '
'; // Totals html += '
'; html += 'Total port openings: 3 (without Element Calling)
'; - html += 'Total port openings: 9 (with Element Calling — 3 required + 6 optional; the 30000–40000 range counts as one TCP rule and one UDP rule)'; + html += 'Total port openings: 8 (with Element Calling — 3 required + 5 optional)'; html += '
'; html += '
' From 4329dde0a11ee4e1b883ce4ff773fed2c913f2d1 Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Thu, 18 Jun 2026 16:05:02 -0500 Subject: [PATCH 031/140] nixpkgs update --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index ba9bc70..462d53e 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1781013869, - "narHash": "sha256-XlEUtL+8M6kbPdmIh4sQQ7G02/1CwHQEk1RPvIMEWOs=", + "lastModified": 1781789880, + "narHash": "sha256-HU/J4pFFkC2XXsYO8B3QFneTV2NWEXFuNi4QmV/4ZA8=", "owner": "emmanuelrosa", "repo": "btc-clients-nix", - "rev": "9a6c78204dc8961840375b110bca595b1f6f084c", + "rev": "10f0300231075e6c7417030fbcbf9f056d0a7c21", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1780902259, - "narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=", + "lastModified": 1781216227, + "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca", + "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1780749050, - "narHash": "sha256-3av0pIjlOWQ6rDbNOmpUSvbNnJkGORQKKjb4LtCZsIY=", + "lastModified": 1781577229, + "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", + "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", "type": "github" }, "original": { @@ -203,11 +203,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1780336545, - "narHash": "sha256-vhVhuXzFrIOfcssC/9hDHx7MHzDKjF3keHuREOQqQiQ=", + "lastModified": 1781607440, + "narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4df1b885d76a54e1aa1a318f8d16fd6005b6401f", + "rev": "3e41b24abd260e8f71dbe2f5737d24122f972158", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1780995253, - "narHash": "sha256-6Lsoyw2XPvY8YNMCtPnsyw0JVVtHsXP2xtrFJBBTAOQ=", + "lastModified": 1781713417, + "narHash": "sha256-Kaj44jTNmnaFhKrcADx8nXmUYPa7l2HYfb7m6lEPy7Q=", "owner": "nix-community", "repo": "nixvim", - "rev": "43a7e6f82978ac975c3bba6728869b231e7a1ba0", + "rev": "caee4e5d4161778815f522d9ea1c9e3dc42462b7", "type": "github" }, "original": { From 1a8b18f5bc20f419daf068e5f6737de2fab6e048 Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Thu, 18 Jun 2026 16:51:15 -0500 Subject: [PATCH 032/140] removed uneeded livekit-cli --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 73c120b..0355c5e 100644 --- a/configuration.nix +++ b/configuration.nix @@ -149,7 +149,7 @@ gparted pv unzip parted screen zenity libargon2 gnome-terminal libreoffice-fresh dig firefox wp-cli axel - lk-jwt-service livekit-libwebrtc livekit-cli livekit + lk-jwt-service livekit-libwebrtc livekit matrix-synapse age ]; From e2ddf78c23229ad5a4b7bfb2374fa9dd7ad874e1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 23 Jun 2026 00:40:49 +0000 Subject: [PATCH 033/140] Initial plan From e2db7f95d8ef5e9fafb3843c35eba297a060e1a6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 23 Jun 2026 00:44:39 +0000 Subject: [PATCH 034/140] Rewrite Njal.la domain-setup instructions (no IP box, Name-field clarification, subdomain-or-domain) --- .../static/js/features.js | 53 ++++++++++++++----- app/sovran_systemsos_web/static/onboarding.js | 26 +++++---- .../templates/onboarding.html | 5 +- 3 files changed, 56 insertions(+), 28 deletions(-) diff --git a/app/sovran_systemsos_web/static/js/features.js b/app/sovran_systemsos_web/static/js/features.js index 794a012..666f9c7 100644 --- a/app/sovran_systemsos_web/static/js/features.js +++ b/app/sovran_systemsos_web/static/js/features.js @@ -73,22 +73,47 @@ function openDomainSetupModal(feat, onSaved) { npubField = '
'; } - var externalIp = _cachedExternalIp || "your external IP"; + var introHtml; + if (_currentRole === "node") { + introHtml = + '

To enable ' + escHtml(feat.name) + ', it needs its own domain from Njal.la.

' + + '
    ' + + '
  1. Create an account at njal.la.
  2. ' + + '
  3. Set up a domain for it — either a free subdomain or a separate domain. Pick one option:
  4. ' + + '
'; + } else { + introHtml = + '

To enable ' + escHtml(feat.name) + ', it needs its own domain from Njal.la. ' + + 'In your Njal.la account, set up a domain for it — either a free subdomain or a separate domain. Pick one option:

'; + } $domainSetupBody.innerHTML = '
' + - '

Before continuing:

' + - '
    ' + - '
  1. Create an account at https://njal.la
  2. ' + - '
  3. Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.
  4. ' + - '
  5. In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address:
    ' + - '' + escHtml(externalIp) + '
  6. ' + - '
  7. Njal.la will give you a curl command like:
    ' + - 'curl "https://njal.la/update/?h=sub.domain.com&k=abc123&auto"
  8. ' + - '
  9. Enter the subdomain and paste that curl command below
  10. ' + + introHtml + + '
    ' + + 'Option A — Free subdomain (recommended)' + + '
      ' + + '
    1. In Njal.la, open a domain you own and click "Add record".
    2. ' + + '
    3. Set record type to Dynamic.
    4. ' + + '
    5. In the Name field, type ONLY the host part — the word before your domain.
      ' + + '(Example only, your choice — for "call.yourdomain.com" you'd type just:  call)
      ' + + '⚠ Do NOT type the full domain here — Njal.la adds it automatically.
    6. ' + + '
    7. A Dynamic record has NO IP field — the IP auto-fills after the rebuild/reboot.
    8. ' + + '
    9. Copy the curl command Njal.la gives you, e.g.:
      ' + + 'curl "https://njal.la/update/?h=call.yourdomain.com&k=abc123&auto"
    10. ' + '
    ' + + '
    ' + + '
    ' + + 'Option B — Separate / new domain' + + '
      ' + + '
    1. In Njal.la, buy the domain you want.
    2. ' + + '
    3. Add a Dynamic record as in Option A. If this domain is dedicated to the service, leave the Name field blank or use @.
    4. ' + + '
    5. Copy the curl command Njal.la gives you.
    6. ' + + '
    ' + + '
    ' + + '

    Below, enter the full domain for this service — a subdomain (e.g. call.yourdomain.com) or a separate domain (e.g. call.com) — and paste its curl command.

    ' + '
' + - '
' + + '
' + '

ℹ Paste the full curl command from your Njal.la dashboard\'s Dynamic record

' + npubField + '
'; @@ -103,7 +128,7 @@ function openDomainSetupModal(feat, onSaved) { ddnsUrl = ddnsUrl.trim(); npub = npub.trim(); - if (!subdomain) { alert("Please enter a subdomain."); return; } + if (!subdomain) { alert("Please enter a domain."); return; } if (feat.id === "haven" && !npub) { alert("Please enter your Nostr public key."); return; } var saveBtn = document.getElementById("domain-setup-save-btn"); @@ -159,14 +184,14 @@ function openDomainReconfigureModal(feat, existingDomain, onSaved) { '

Troubleshooting steps:

' + '
    ' + '
  1. Log into your Njal.la dashboard at https://njal.la
  2. ' + - '
  3. Find the DNS record for ' + escHtml(currentDomain || "your domain") + '
  4. ' + + '
  5. Find the DNS record for ' + escHtml(currentDomain || "your domain") + '. In Njal.la\'s Name field, note that only the host part is stored (the word before the domain) — not the full domain.
  6. ' + '
  7. Verify it has a Dynamic record pointing to your current external IP:
    ' + '' + escHtml(externalIp) + '
  8. ' + '
  9. If the IP is wrong or the record is missing, update it
  10. ' + '
  11. If you changed the DDNS curl command, paste the updated one below
  12. ' + '
' + '
' + - '
' + + '
' + '

ℹ Paste the full curl command from your Njal.la dashboard\'s Dynamic record

' + npubField + '
'; diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js index c103d50..2a23aa2 100644 --- a/app/sovran_systemsos_web/static/onboarding.js +++ b/app/sovran_systemsos_web/static/onboarding.js @@ -333,8 +333,6 @@ async function loadStep3() { return; } - var externalIp = (networkData && networkData.external_ip) || "Unknown (could not retrieve)"; - // Build set of enabled service units var enabledUnits = new Set(); (_servicesData || []).forEach(function(svc) { @@ -352,18 +350,24 @@ async function loadStep3() { html += '

No domain-based services are enabled for your role. You can skip this step.

'; } else { html += '
' - + 'Before you continue:' + + '

Sovran_SystemsOS uses Njal.la for domains and Dynamic DNS.

' + '
    ' - + '
  1. Create an account at https://njal.la
  2. ' - + '
  3. Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you like.
  4. ' - + '
  5. In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address:
    ' - + '' + escHtml(externalIp) + '
  6. ' - + '
  7. Njal.la will give you a curl command like:
    ' - + 'curl "https://njal.la/update/?h=sub.domain.com&k=abc123&auto"
  8. ' - + '
  9. Enter the subdomain and paste that curl command below for each service
  10. ' + + '
  11. Create an account at https://njal.la.
  12. ' + + '
  13. Buy at least one domain. Each service below needs its own domain — you can either give each service its own subdomain of a single domain you buy (subdomains are free, and one domain can have many), OR use a separate domain for each. Your choice.
  14. ' + + '
  15. For each service, add a Dynamic record in Njal.la:' + + '
      ' + + '
    • In the Njal.la Name field, type ONLY the host part — the word before your domain.
      ' + + '(Example only, your choice — for "call.yourdomain.com" you'd type just: call.)
      ' + + 'If you bought a whole separate domain just for this service, leave Name blank or use @.
      ' + + '⚠ Do NOT type the full domain in the Name field — Njal.la adds it automatically.
    • ' + + '
    • A Dynamic record has NO IP field. You don't enter an IP anywhere — it auto-fills once Sovran_SystemsOS updates it (on save, and again after reboot).
    • ' + + '
    ' + + '
  16. ' + + '
  17. Njal.la gives you a curl command like:
    ' + + 'curl "https://njal.la/update/?h=call.yourdomain.com&k=abc123&auto"
  18. ' + '
' + '
'; - html += '

Enter each fully-qualified subdomain (e.g. matrix.yourdomain.com) and its Njal.la DDNS curl command.

'; + html += '

Enter each service\'s full domain — a subdomain (e.g. call.yourdomain.com) or a separate domain (e.g. call.com) — and its Njal.la DDNS curl command.

'; relevantDomains.forEach(function(d) { var currentVal = (_domainsData && _domainsData[d.name]) || ""; html += '
'; diff --git a/app/sovran_systemsos_web/templates/onboarding.html b/app/sovran_systemsos_web/templates/onboarding.html index 685fee5..699a8ee 100644 --- a/app/sovran_systemsos_web/templates/onboarding.html +++ b/app/sovran_systemsos_web/templates/onboarding.html @@ -128,9 +128,8 @@

Domain Configuration

Sovran_SystemsOS uses Njal.la for domains and Dynamic DNS. - First, create an account at Njal.la and purchase a new domain, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost. - Then, in the Njal.la web interface, create a Dynamic record pointing to this machine's external IP address (shown below). - Finally, paste the DDNS curl command from your Njal.la dashboard for each service below. + Create an account at Njal.la, then for each service below, add a Dynamic record — no IP needed, it auto-populates once the DDNS curl command runs. + Paste the curl command from your Njal.la dashboard for each service.

From bbf3ce436c2013239e75a1ab9d2cce817f295960 Mon Sep 17 00:00:00 2001 From: Sovran Systems <99053422+naturallaw777@users.noreply.github.com> Date: Tue, 23 Jun 2026 20:03:26 -0500 Subject: [PATCH 035/140] fix(element-calling): enable LiveKit embedded TURN with runtime matrix domain + cert LiveKit was exiting cleanly with "TURN domain required" because turn.enabled was set in the build-time config but turn.domain was never provided to the process (the old livekit-runtime-config.service wrote a YAML that nothing read). A clean exit (status 0) meant Restart=on-failure never restarted it, so the Hub reported the service as Inactive. This replaces the dead runtime-config oneshot with livekit-turn-setup.service, which at runtime: - reads the matrix domain from /var/lib/domains/matrix (no hardcoding) - copies Caddy's already-issued matrix cert/key into /var/lib/livekit - generates a complete LiveKit config (incl. turn.domain + TLS cert/key) at /run/livekit/livekit.yaml The livekit.service ExecStart is overridden to load that runtime config (mirroring the existing Caddy ExecStart override pattern in modules/core/caddy.nix), since turn.domain is only known at runtime. The cert is delivered via LoadCredential so it is readable under DynamicUser=true without weakening the sandbox. Also aligns the RTC media port range (rtc.port_range_start/end = 30000-40000) so it matches the forwarded ports, and drops the now-redundant manual 30000-40000 firewall ranges (covered by services.livekit settings/openFirewall). --- modules/element-calling.nix | 76 ++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/modules/element-calling.nix b/modules/element-calling.nix index 4ea502b..014b941 100755 --- a/modules/element-calling.nix +++ b/modules/element-calling.nix @@ -34,8 +34,8 @@ lib.mkIf config.sovran_systemsOS.features.element-calling { }; ####### ENSURE SERVICES START AFTER KEY EXISTS ####### - systemd.services.livekit.after = [ "livekit-key-setup.service" ]; - systemd.services.livekit.wants = [ "livekit-key-setup.service" ]; + systemd.services.livekit.after = [ "livekit-key-setup.service" "livekit-turn-setup.service" ]; + systemd.services.livekit.wants = [ "livekit-key-setup.service" "livekit-turn-setup.service" ]; systemd.services.lk-jwt-service.after = [ "livekit-key-setup.service" ]; systemd.services.lk-jwt-service.wants = [ "livekit-key-setup.service" ]; @@ -89,11 +89,17 @@ EOF ''; }; - ####### LIVEKIT RUNTIME CONFIG ####### - systemd.services.livekit-runtime-config = { - description = "Generate LiveKit runtime config from domain files"; + ####### LIVEKIT TURN SETUP (runtime cert + config) ####### + # Replaces the old dead livekit-runtime-config.service. At runtime this: + # * reads the matrix domain from /var/lib/domains/matrix (never hardcoded) + # * copies Caddy's already-issued matrix cert/key into /var/lib/livekit + # so LoadCredential can stage them for the (DynamicUser) livekit unit + # * writes a complete LiveKit config (with turn.domain substituted) that the + # overridden ExecStart loads. + systemd.services.livekit-turn-setup = { + description = "Stage TURN cert and generate LiveKit runtime config from domain files"; + after = [ "caddy.service" "livekit-key-setup.service" ]; before = [ "livekit.service" ]; - after = [ "livekit-key-setup.service" ]; requiredBy = [ "livekit.service" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { @@ -103,20 +109,42 @@ EOF unitConfig = { ConditionPathExists = "/var/lib/domains/element-calling"; }; - path = [ pkgs.coreutils ]; + path = [ pkgs.coreutils pkgs.findutils ]; script = '' MATRIX=$(cat /var/lib/domains/matrix) mkdir -p /run/livekit - cat > /run/livekit/runtime-config.yaml < /run/livekit/livekit.yaml < Date: Wed, 24 Jun 2026 01:19:37 +0000 Subject: [PATCH 036/140] Initial plan From 8fd076191d710873a3537267df5fbeab424b5a10 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Jun 2026 01:21:05 +0000 Subject: [PATCH 037/140] fix: deliver livekit config via LoadCredential to fix DynamicUser permission denied --- modules/element-calling.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/element-calling.nix b/modules/element-calling.nix index 014b941..c49163e 100755 --- a/modules/element-calling.nix +++ b/modules/element-calling.nix @@ -144,7 +144,7 @@ turn: key_file: /run/credentials/livekit.service/turn-key EOF - chmod 640 /run/livekit/livekit.yaml + chmod 644 /run/livekit/livekit.yaml ''; }; @@ -174,10 +174,11 @@ EOF # weakening it. Everything else about the standard unit is left intact. systemd.services.livekit.serviceConfig.ExecStart = lib.mkForce [ "" - "${pkgs.livekit}/bin/livekit-server --config /run/livekit/livekit.yaml --key-file /run/credentials/livekit.service/livekit-secrets" + "${pkgs.livekit}/bin/livekit-server --config /run/credentials/livekit.service/livekit-config --key-file /run/credentials/livekit.service/livekit-secrets" ]; systemd.services.livekit.serviceConfig.LoadCredential = [ + "livekit-config:/run/livekit/livekit.yaml" "livekit-secrets:${livekitKeyFile}" "turn-cert:/var/lib/livekit/turn.crt" "turn-key:/var/lib/livekit/turn.key" From bf9c6dd62779dc08c5491614475bad7c36f63abe Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Wed, 24 Jun 2026 13:19:41 -0500 Subject: [PATCH 038/140] added onlyoffice --- configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration.nix b/configuration.nix index 0355c5e..def3887 100644 --- a/configuration.nix +++ b/configuration.nix @@ -150,7 +150,7 @@ libargon2 gnome-terminal libreoffice-fresh dig firefox wp-cli axel lk-jwt-service livekit-libwebrtc livekit - matrix-synapse age + matrix-synapse age onlyoffice-desktopeditors ]; # ── Shell ────────────────────────────────────────────────── From 053c417c90aab3464f663953f73809fd86c8b4d2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Jun 2026 19:03:36 +0000 Subject: [PATCH 039/140] Initial plan From 8452ea8fcff372de5c0fd882a6bef33faaf4e79e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Jun 2026 19:06:12 +0000 Subject: [PATCH 040/140] Align router setup wording and local port statuses --- app/sovran_systemsos_web/server.py | 16 ++++++----- .../static/js/service-detail.js | 27 ++++++++++--------- app/sovran_systemsos_web/static/onboarding.js | 26 ++++++++++-------- .../templates/onboarding.html | 8 +++--- 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 7535467..5a6a97c 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -2986,18 +2986,22 @@ async def api_service_detail(unit: str, icon: str | None = None): if has_domain_issues: domain_check_steps.append({ "step": 4, - "label": "Additional Ports Required", + "label": "Router Setup Needed", "status": "skipped", - "detail": "Skipped until Steps 1-3 are complete", + "detail": "Finish the domain steps first, then forward the Element Call ports in your router.", }) else: - extra_open = all(p["status"] != "closed" for p in extra_ports) + # These checks are local-only (listening/firewall state on this computer), + # not an outside-in verification of router/NAT forwarding. + all_local_ready = all(p["status"] != "closed" for p in extra_ports) domain_check_steps.append({ "step": 4, - "label": "Additional Ports Required", - "status": "ok" if extra_open else "error", + "label": "Router Setup Needed" if all_local_ready else "Sovran_SystemsOS Port Setup Needed", + "status": "warning" if all_local_ready else "error", "detail": ( - "Element-Call/LiveKit requires additional forwarded ports for WebRTC and TURN traffic." + "Sovran_SystemsOS is ready to use these ports on this computer. Now forward them in your router so Element Call can work from outside your home network." + if all_local_ready + else "Sovran_SystemsOS is not ready to use all required Element Call ports on this computer yet. Fix the ports marked “Not ready” below, then forward them in your router." ), }) diff --git a/app/sovran_systemsos_web/static/js/service-detail.js b/app/sovran_systemsos_web/static/js/service-detail.js index a86a6c6..2437c8c 100644 --- a/app/sovran_systemsos_web/static/js/service-detail.js +++ b/app/sovran_systemsos_web/static/js/service-detail.js @@ -158,16 +158,16 @@ async function openServiceDetailModal(unit, name, icon) { data.extra_ports.forEach(function(p) { var statusIcon, statusClass2; if (p.status === "listening") { - statusIcon = "✅ Open"; + statusIcon = "✅ Ready"; statusClass2 = "port-status-listening"; } else if (p.status === "firewall_open") { - statusIcon = "🟡 Firewall open"; + statusIcon = "✅ Ready"; statusClass2 = "port-status-open"; } else if (p.status === "closed") { - statusIcon = "❌ Closed"; + statusIcon = "❌ Not ready"; statusClass2 = "port-status-closed"; } else { - statusIcon = "— Unknown"; + statusIcon = "— Could not check"; statusClass2 = "port-status-unknown"; } extraRows += '' + @@ -178,11 +178,13 @@ async function openServiceDetailModal(unit, name, icon) { ''; }); html += '
' + - '
Step 4: Additional Ports
' + + '
Ports to Forward in Your Router
' + + '
These checks only confirm that Sovran_SystemsOS is prepared on this computer. Your router still needs to forward these ports from the public internet to this computer.
' + '' + - '' + + '' + '' + extraRows + '' + '
PortProtocolDescriptionStatus
PortProtocolUsed ForSovran_SystemsOS Status
' + + '
Next step: Log in to your router and forward the ports above to this Sovran_SystemsOS computer.
Full public port verification requires an outside internet check, so the Hub cannot fully confirm router forwarding from inside your home network.
' + '
'; } } else if (data.port_statuses && data.port_statuses.length > 0) { @@ -191,16 +193,16 @@ async function openServiceDetailModal(unit, name, icon) { data.port_statuses.forEach(function(p) { var statusIcon, statusClass2; if (p.status === "listening") { - statusIcon = "✅ Open"; + statusIcon = "✅ Ready"; statusClass2 = "port-status-listening"; } else if (p.status === "firewall_open") { - statusIcon = "🟡 Firewall open"; + statusIcon = "✅ Ready"; statusClass2 = "port-status-open"; } else if (p.status === "closed") { - statusIcon = "🔴 Closed"; + statusIcon = "❌ Not ready"; statusClass2 = "port-status-closed"; } else { - statusIcon = "— Unknown"; + statusIcon = "— Could not check"; statusClass2 = "port-status-unknown"; } portTableRows += '' + @@ -211,9 +213,10 @@ async function openServiceDetailModal(unit, name, icon) { ''; }); html += '
' + - '
Port Status
' + + '
Port Requirements
' + + '
This shows whether Sovran_SystemsOS is ready to use this port on this computer. If you need access from outside your home network, forward this port in your router.
' + '' + - '' + + '' + '' + portTableRows + '' + '
PortProtocolDescriptionStatus
PortProtocolUsed ForSovran_SystemsOS Status
' + '
'; diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js index 2a23aa2..91d97a5 100644 --- a/app/sovran_systemsos_web/static/onboarding.js +++ b/app/sovran_systemsos_web/static/onboarding.js @@ -516,7 +516,7 @@ async function saveStep3() { async function loadStep4() { var body = document.getElementById("step-4-body"); if (!body) return; - body.innerHTML = '

Checking ports…

'; + body.innerHTML = '

Loading router setup…

'; var networkData = null; @@ -536,36 +536,36 @@ async function loadStep4() { + '

'; html += '
'; - html += ' Forward ports to this machine\'s internal IP:'; + html += ' Forward router traffic to this Sovran_SystemsOS computer:'; html += ' ' + ip + ''; html += '
'; // Required ports table html += '
'; - html += '
Required Ports — open these on your router:
'; + html += '
Required Router Rules
'; html += ''; - html += ''; + html += ''; html += ''; - html += ''; + html += ''; html += ''; - html += ''; + html += ''; html += '
PortProtocolForward toPurpose
PortProtocolForward ToUsed For
80TCP' + ip + 'HTTP
80TCP' + ip + 'HTTP / SSL setup
443TCP' + ip + 'HTTPS
22TCP' + ip + 'SSH Remote Access
22TCP' + ip + 'Remote SSH access
'; html += '
'; // Optional ports table html += '
'; - html += '
Optional — Only needed if you enable Element Calling:
'; - html += '
These 5 additional port openings are required on top of the 3 required ports above.
'; + html += '
Element Call Router Rules
'; + html += '
Only add these if you enable Element Call. These ports help video and audio calls connect reliably.
'; html += ''; - html += ''; + html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; - html += ''; + html += ''; html += '
PortProtocolForward toPurpose
PortProtocolForward ToUsed For
7881TCP' + ip + 'LiveKit WebRTC signalling
7882UDP' + ip + 'LiveKit media (UDP mux)
5349TCP' + ip + 'TURN over TLS
3478UDP' + ip + 'TURN (STUN/relay)
30000–40000TCP & UDP' + ip + 'TURN relay (WebRTC)
30000-40000TCP & UDP' + ip + 'TURN relay (WebRTC)
'; - html += '
ℹ The 30000–40000 range is a single forwarding rule — just set its protocol to both TCP and UDP (often shown as "Both" or "TCP/UDP" on your router).
'; + html += '
ℹ The 30000-40000 range is a single forwarding rule — just set its protocol to both TCP and UDP (often shown as "Both" or "TCP/UDP" on your router).
'; html += '
'; // Totals @@ -592,6 +592,10 @@ async function loadStep4() { + '' + ''; + html += '
' + + 'Important: The Hub can show which ports Sovran_SystemsOS needs, but it cannot fully confirm router forwarding from inside your home network. Full public port verification requires an outside internet check.' + + '
'; + body.innerHTML = html; } diff --git a/app/sovran_systemsos_web/templates/onboarding.html b/app/sovran_systemsos_web/templates/onboarding.html index 699a8ee..c810cab 100644 --- a/app/sovran_systemsos_web/templates/onboarding.html +++ b/app/sovran_systemsos_web/templates/onboarding.html @@ -148,14 +148,14 @@ '; + html += '
' + routerIpHelp + '
'; // Required ports table html += '
'; @@ -570,8 +577,8 @@ async function loadStep4() { // Totals html += '
'; - html += 'Total port openings: 3 (without Element Calling)
'; - html += 'Total port openings: 8 (with Element Calling — 3 required + 5 optional)'; + html += 'Total port openings: 3 (without Element Call)
'; + html += 'Total port openings: 8 (with Element Call — 3 required + 5 optional)'; html += '
'; html += '
' @@ -586,7 +593,7 @@ async function loadStep4() { + '
  • Open your router\'s admin panel — usually http://192.168.1.1 or http://192.168.0.1
  • ' + '
  • Look for "Port Forwarding", "NAT", or "Virtual Server" in the settings
  • ' + '
  • Create a new rule for each port listed above
  • ' - + '
  • Set the destination/internal IP to ' + ip + '
  • ' + + '
  • ' + destinationInstruction + '
  • ' + '
  • Set both internal and external port to the same number
  • ' + '
  • Save and apply changes
  • ' + '' diff --git a/app/tests/test_service_detail_router_wording.py b/app/tests/test_service_detail_router_wording.py new file mode 100644 index 0000000..1894ab6 --- /dev/null +++ b/app/tests/test_service_detail_router_wording.py @@ -0,0 +1,171 @@ +import unittest +from pathlib import Path +from unittest.mock import mock_open, patch +import sys +import types + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + + +def _install_web_stubs(): + if "fastapi" in sys.modules: + return + + class _HTTPException(Exception): + def __init__(self, status_code=None, detail=None): + super().__init__(detail) + self.status_code = status_code + self.detail = detail + + class _FastAPI: + def __init__(self, *args, **kwargs): + pass + + def mount(self, *args, **kwargs): + return None + + def add_middleware(self, *args, **kwargs): + return None + + def __getattr__(self, _name): + def _decorator_factory(*args, **kwargs): + def _decorator(func): + return func + + return _decorator + + return _decorator_factory + + class _BaseModel: + pass + + class _StaticFiles: + def __init__(self, *args, **kwargs): + pass + + class _Jinja2Templates: + def __init__(self, *args, **kwargs): + pass + + class _BaseHTTPMiddleware: + pass + + fastapi_module = types.ModuleType("fastapi") + fastapi_module.FastAPI = _FastAPI + fastapi_module.HTTPException = _HTTPException + sys.modules["fastapi"] = fastapi_module + + responses_module = types.ModuleType("fastapi.responses") + responses_module.HTMLResponse = object + responses_module.JSONResponse = object + responses_module.RedirectResponse = object + sys.modules["fastapi.responses"] = responses_module + + staticfiles_module = types.ModuleType("fastapi.staticfiles") + staticfiles_module.StaticFiles = _StaticFiles + sys.modules["fastapi.staticfiles"] = staticfiles_module + + templating_module = types.ModuleType("fastapi.templating") + templating_module.Jinja2Templates = _Jinja2Templates + sys.modules["fastapi.templating"] = templating_module + + requests_module = types.ModuleType("fastapi.requests") + requests_module.Request = object + sys.modules["fastapi.requests"] = requests_module + + pydantic_module = types.ModuleType("pydantic") + pydantic_module.BaseModel = _BaseModel + sys.modules["pydantic"] = pydantic_module + + starlette_base_module = types.ModuleType("starlette.middleware.base") + starlette_base_module.BaseHTTPMiddleware = _BaseHTTPMiddleware + sys.modules["starlette.middleware.base"] = starlette_base_module + + starlette_middleware_module = types.ModuleType("starlette.middleware") + starlette_middleware_module.base = starlette_base_module + sys.modules["starlette.middleware"] = starlette_middleware_module + + starlette_module = types.ModuleType("starlette") + starlette_module.middleware = starlette_middleware_module + sys.modules["starlette"] = starlette_module + + +_install_web_stubs() +from sovran_systemsos_web import server + + +class ServiceDetailRouterWordingTests(unittest.IsolatedAsyncioTestCase): + async def test_livekit_service_detail_includes_internal_ip(self): + service_cfg = { + "services": [ + {"unit": "livekit.service", "icon": "element-call", "enabled": True, "type": "system"} + ] + } + domain_eval = { + "domain_status": {"status": "ok"}, + "domain_reachable": {"reachable": True}, + "domain_check_steps": [], + "has_issues": False, + } + + with ( + patch.object(server, "load_config", return_value=service_cfg), + patch.object(server, "_read_hub_overrides", return_value=({}, None, None)), + patch.object(server.sysctl, "is_active", return_value="active"), + patch.dict(server.SERVICE_DOMAIN_MAP, {"livekit.service": "element-call"}, clear=False), + patch.dict( + server.SERVICE_PORT_REQUIREMENTS, + {"livekit.service": [{"port": "7881", "protocol": "TCP", "description": "LiveKit"}]}, + clear=False, + ), + patch("builtins.open", mock_open(read_data="call.example.com\n")), + patch.object(server, "_evaluate_domain_checklist", return_value=domain_eval), + patch.object(server, "_get_internal_ip", return_value="192.168.1.44"), + patch.object(server, "_save_internal_ip"), + patch.object(server, "_get_listening_ports", return_value={"tcp": {7881}, "udp": set()}), + patch.object(server, "_get_firewall_allowed_ports", return_value={"tcp": set(), "udp": set()}), + ): + result = await server.api_service_detail("livekit.service") + + self.assertEqual(result["internal_ip"], "192.168.1.44") + self.assertEqual(result["extra_ports"][0]["status"], "listening") + self.assertEqual(result["domain_check_steps"][-1]["label"], "Router Setup Needed") + + async def test_livekit_router_step_uses_not_ready_yet_wording(self): + service_cfg = { + "services": [ + {"unit": "livekit.service", "icon": "element-call", "enabled": True, "type": "system"} + ] + } + domain_eval = { + "domain_status": {"status": "ok"}, + "domain_reachable": {"reachable": True}, + "domain_check_steps": [], + "has_issues": False, + } + + with ( + patch.object(server, "load_config", return_value=service_cfg), + patch.object(server, "_read_hub_overrides", return_value=({}, None, None)), + patch.object(server.sysctl, "is_active", return_value="active"), + patch.dict(server.SERVICE_DOMAIN_MAP, {"livekit.service": "element-call"}, clear=False), + patch.dict( + server.SERVICE_PORT_REQUIREMENTS, + {"livekit.service": [{"port": "7881", "protocol": "TCP", "description": "LiveKit"}]}, + clear=False, + ), + patch("builtins.open", mock_open(read_data="call.example.com\n")), + patch.object(server, "_evaluate_domain_checklist", return_value=domain_eval), + patch.object(server, "_get_internal_ip", return_value="192.168.1.44"), + patch.object(server, "_save_internal_ip"), + patch.object(server, "_get_listening_ports", return_value={"tcp": set(), "udp": set()}), + patch.object(server, "_get_firewall_allowed_ports", return_value={"tcp": set(), "udp": set()}), + ): + result = await server.api_service_detail("livekit.service") + + self.assertEqual(result["extra_ports"][0]["status"], "closed") + self.assertIn("Not ready yet", result["domain_check_steps"][-1]["detail"]) + + +if __name__ == "__main__": + unittest.main() From 346798b6c2cacf4d8bb83940d524b730fcc44203 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Jun 2026 22:19:14 +0000 Subject: [PATCH 049/140] fix: simplify internal IP copy handling --- app/sovran_systemsos_web/static/js/service-detail.js | 3 ++- app/sovran_systemsos_web/static/onboarding.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/sovran_systemsos_web/static/js/service-detail.js b/app/sovran_systemsos_web/static/js/service-detail.js index 627f9a4..036e90f 100644 --- a/app/sovran_systemsos_web/static/js/service-detail.js +++ b/app/sovran_systemsos_web/static/js/service-detail.js @@ -154,7 +154,8 @@ async function openServiceDetailModal(unit, name, icon) { '
    '; if (unit === "livekit.service" && data.extra_ports && data.extra_ports.length > 0) { - var internalIp = (data.internal_ip && String(data.internal_ip).trim()) ? String(data.internal_ip).trim() : ""; + var trimmedInternalIp = data.internal_ip ? String(data.internal_ip).trim() : ""; + var internalIp = trimmedInternalIp || ""; var internalIpHtml = internalIp ? escHtml(internalIp) : "Could not detect"; var routerIpHelp = internalIp ? "Use this IP address as the destination/internal IP when creating each router forwarding rule." diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js index b703b4d..f6b5868 100644 --- a/app/sovran_systemsos_web/static/onboarding.js +++ b/app/sovran_systemsos_web/static/onboarding.js @@ -527,7 +527,8 @@ async function loadStep4() { return; } - var internalIp = (networkData && networkData.internal_ip && String(networkData.internal_ip).trim()) ? String(networkData.internal_ip).trim() : ""; + var trimmedInternalIp = (networkData && networkData.internal_ip) ? String(networkData.internal_ip).trim() : ""; + var internalIp = trimmedInternalIp || ""; var hasInternalIp = !!internalIp; var ip = escHtml(internalIp || "Could not detect"); var routerIpHelp = hasInternalIp From 83c9acb5118b2797b2958e75f6abde416911c32f Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Thu, 25 Jun 2026 16:26:43 -0500 Subject: [PATCH 050/140] updated nixpkgs and btc clients --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 462d53e..d12efb9 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1781789880, - "narHash": "sha256-HU/J4pFFkC2XXsYO8B3QFneTV2NWEXFuNi4QmV/4ZA8=", + "lastModified": 1781968640, + "narHash": "sha256-ySgKs6YZRJRsBVoMnmOBGQiNRaX7M9FxMnHA29kovqA=", "owner": "emmanuelrosa", "repo": "btc-clients-nix", - "rev": "10f0300231075e6c7417030fbcbf9f056d0a7c21", + "rev": "3959faadf6c9d3148e1d819ae85b7f32da5b005b", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1781216227, - "narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=", + "lastModified": 1782233679, + "narHash": "sha256-QyuGP5+QOtmXpy4i2X4DhBVBaySBdDKQEhqKcphcp34=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0", + "rev": "667d5cf1c59585031d743c78b394b0a647537c35", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1781713417, - "narHash": "sha256-Kaj44jTNmnaFhKrcADx8nXmUYPa7l2HYfb7m6lEPy7Q=", + "lastModified": 1782254890, + "narHash": "sha256-kjsEECqhpPnJWqhooXp6tWh2qGQftCPAo2G1GvZtKdw=", "owner": "nix-community", "repo": "nixvim", - "rev": "caee4e5d4161778815f522d9ea1c9e3dc42462b7", + "rev": "dbf9550dba8448b03e11d58e5695d6c44a464554", "type": "github" }, "original": { From 4aaf10f3a0621eafe04713eea9deb8c5411de116 Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Tue, 30 Jun 2026 12:14:53 -0500 Subject: [PATCH 051/140] Update nixpkgs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index d12efb9..826414c 100755 --- a/flake.lock +++ b/flake.lock @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1782233679, - "narHash": "sha256-QyuGP5+QOtmXpy4i2X4DhBVBaySBdDKQEhqKcphcp34=", + "lastModified": 1782691344, + "narHash": "sha256-i5nw9BYYsMDAaOC4J+JmTof6b2GhlyH076awYRNrTV8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "667d5cf1c59585031d743c78b394b0a647537c35", + "rev": "1f01958ffb5b3545c96d9ef2f4e24c5e5e1eb846", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1781577229, - "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", + "lastModified": 1782723713, + "narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", + "rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1782254890, - "narHash": "sha256-kjsEECqhpPnJWqhooXp6tWh2qGQftCPAo2G1GvZtKdw=", + "lastModified": 1782706849, + "narHash": "sha256-b2ODGxKD3hgrwuesLtDomp2DKF3UiOn3+EBTDXpcqGo=", "owner": "nix-community", "repo": "nixvim", - "rev": "dbf9550dba8448b03e11d58e5695d6c44a464554", + "rev": "c6a99bb41fb0f37e03ca38b1d81b006e98e3bf1a", "type": "github" }, "original": { From f85633c9ba5d8b7da88194c708b2ffe9857e10a8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Jun 2026 17:35:17 +0000 Subject: [PATCH 052/140] Initial plan From 84490e8d94f0da7cada8b938bc8d3b766df5a9f8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Jun 2026 17:37:21 +0000 Subject: [PATCH 053/140] Fix TemplateResponse calls to use Starlette 1.1.0+ keyword-argument style --- app/sovran_systemsos_web/server.py | 35 ++++--- app/tests/test_template_response_signature.py | 99 +++++++++++++++++++ 2 files changed, 121 insertions(+), 13 deletions(-) create mode 100644 app/tests/test_template_response_signature.py diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 39f9bdf..4b0634b 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1950,10 +1950,13 @@ def _verify_support_removed() -> bool: @app.get("/login", response_class=HTMLResponse) async def login_page(request: Request): - return templates.TemplateResponse("login.html", { - "request": request, - "asset_version": ASSET_VERSION, - }) + return templates.TemplateResponse( + request=request, + name="login.html", + context={ + "asset_version": ASSET_VERSION, + }, + ) @app.get("/auto-login") @@ -2018,20 +2021,26 @@ async def api_logout(request: Request): @app.get("/", response_class=HTMLResponse) async def index(request: Request): - return templates.TemplateResponse("index.html", { - "request": request, - "asset_version": ASSET_VERSION, - }) + return templates.TemplateResponse( + request=request, + name="index.html", + context={ + "asset_version": ASSET_VERSION, + }, + ) @app.get("/onboarding", response_class=HTMLResponse) async def onboarding(request: Request): _ensure_onboarding_reopened_for_migration() - return templates.TemplateResponse("onboarding.html", { - "request": request, - "asset_version": ASSET_VERSION, - "onboarding_js_hash": _ONBOARDING_JS_HASH, - }) + return templates.TemplateResponse( + request=request, + name="onboarding.html", + context={ + "asset_version": ASSET_VERSION, + "onboarding_js_hash": _ONBOARDING_JS_HASH, + }, + ) @app.get("/api/onboarding/status") diff --git a/app/tests/test_template_response_signature.py b/app/tests/test_template_response_signature.py new file mode 100644 index 0000000..4be6620 --- /dev/null +++ b/app/tests/test_template_response_signature.py @@ -0,0 +1,99 @@ +"""Regression test for Starlette 1.1.0+ TemplateResponse keyword-argument style. + +Prior to this fix, the three HTML routes called: + templates.TemplateResponse("name.html", {"request": request, ...}) +which passes the context dict as the second positional argument. With the +updated Starlette/FastAPI versions shipped in NixOS unstable (Starlette 1.1.0, +FastAPI 0.136.3) that positional argument is the template name, causing Jinja2 +to receive a dict as a cache key and raise: + TypeError: unhashable type: 'dict' + +The fix updates every call to use keyword arguments: + templates.TemplateResponse(request=request, name="name.html", context={...}) +""" + +import ast +import unittest +from pathlib import Path + + +SERVER_PY = Path(__file__).resolve().parents[1] / "sovran_systemsos_web" / "server.py" + + +def _template_response_calls(source: str): + """Return a list of ast.Call nodes that are TemplateResponse calls.""" + tree = ast.parse(source) + calls = [] + for node in ast.walk(tree): + if not isinstance(node, ast.Call): + continue + func = node.func + if isinstance(func, ast.Attribute) and func.attr == "TemplateResponse": + calls.append(node) + return calls + + +class TemplateResponseSignatureTests(unittest.TestCase): + def setUp(self): + self.source = SERVER_PY.read_text() + self.calls = _template_response_calls(self.source) + + def test_at_least_one_template_response_call_found(self): + self.assertGreater(len(self.calls), 0, "No TemplateResponse calls found in server.py") + + def test_no_old_style_positional_dict_context(self): + """No TemplateResponse call should pass a dict literal as its second positional arg. + + The old style was: + templates.TemplateResponse("name.html", {"request": request, ...}) + where args[0] is a string and args[1] is a Dict node. That pattern + triggers the Starlette 1.1.0 bug. + """ + for call in self.calls: + positional = call.args + if len(positional) >= 2 and isinstance(positional[1], ast.Dict): + self.fail( + f"Found old-style TemplateResponse call at line {call.lineno}: " + "second positional argument is a dict literal. " + "Use keyword arguments (request=, name=, context=) instead." + ) + + def test_request_not_duplicated_in_context(self): + """The 'request' key must not appear inside the context= dict when + request= is already passed as a dedicated keyword argument.""" + for call in self.calls: + kw_dict = {kw.arg: kw.value for kw in call.keywords if isinstance(kw, ast.keyword)} + + if "request" not in kw_dict: + continue # no request= kwarg, nothing to check + + context_node = kw_dict.get("context") + if not isinstance(context_node, ast.Dict): + continue + + for key_node in context_node.keys: + if isinstance(key_node, ast.Constant) and key_node.value == "request": + self.fail( + f"TemplateResponse at line {call.lineno} passes 'request' both as " + "request= keyword argument and inside the context dict." + ) + + def test_all_calls_use_keyword_arguments(self): + """Every TemplateResponse call should use keyword arguments for request, name, + and context rather than relying on positional ordering.""" + for call in self.calls: + kw_args = {kw.arg for kw in call.keywords if isinstance(kw, ast.keyword)} + self.assertIn( + "request", + kw_args, + f"TemplateResponse at line {call.lineno} is missing keyword argument 'request='.", + ) + self.assertIn( + "name", + kw_args, + f"TemplateResponse at line {call.lineno} is missing keyword argument 'name='.", + ) + + +if __name__ == "__main__": + unittest.main() From 0eba3c406b6f85e18981592c1793078abfe14e7e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Jul 2026 23:33:55 +0000 Subject: [PATCH 054/140] Initial plan From b7e79010cfc63a3826b5faae6f1ab7ca2a812889 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 3 Jul 2026 23:35:30 +0000 Subject: [PATCH 055/140] fix: desktop-only safety fixes (nix-bitcoin compat, mkForce, conditional caddy) 1. Add nix-bitcoin.generateSecrets = lib.mkDefault true global compat default in role-logic.nix so Desktop Only systems can evaluate while nix-bitcoin is still globally imported by the flake. 2. Harden Desktop Only role: change all server/node service and feature disables from lib.mkDefault false to lib.mkForce false so they cannot be overridden by custom.nix or option defaults. - sovran_systemsOS.services: synapse, bitcoin, vaultwarden, wordpress, nextcloud - sovran_systemsOS.features: haven, mempool, element-calling, bitcoin-core - sovran_systemsOS.web.btcpayserver 3. Make Caddy conditional in caddy.nix: enable = needsHttpsPorts || extraVhosts != "" so Caddy does not run on Desktop Only installs with no web services. --- modules/core/caddy.nix | 5 ++++- modules/core/role-logic.nix | 28 ++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/modules/core/caddy.nix b/modules/core/caddy.nix index 9ea7bdf..9017352 100755 --- a/modules/core/caddy.nix +++ b/modules/core/caddy.nix @@ -16,7 +16,10 @@ let in { services.caddy = { - enable = true; + # Only enable Caddy when at least one domain-based service needs it or + # the operator has defined custom vhosts. This prevents Caddy from + # running on Desktop Only installs that have no web services configured. + enable = needsHttpsPorts || extraVhosts != ""; user = "caddy"; group = "root"; }; diff --git a/modules/core/role-logic.nix b/modules/core/role-logic.nix index fafb030..eab8332 100755 --- a/modules/core/role-logic.nix +++ b/modules/core/role-logic.nix @@ -3,6 +3,13 @@ { config = lib.mkMerge [ + # nix-bitcoin is globally imported by the flake (nixosModules.Sovran_SystemsOS). + # This default satisfies nix-bitcoin's generateSecrets assertion so that Desktop + # Only systems can evaluate without enabling any Bitcoin services. + { + nix-bitcoin.generateSecrets = lib.mkDefault true; + } + # ── Server+Desktop Role (default) ───────────────────────── (lib.mkIf config.sovran_systemsOS.roles.server_plus_desktop { sovran_systemsOS.web.btcpayserver = lib.mkDefault true; @@ -12,15 +19,24 @@ (lib.mkIf config.sovran_systemsOS.roles.desktop { services.desktopManager.gnome.enable = true; + # Force all server/node services and features off so they cannot be + # accidentally enabled via custom.nix or option defaults on Desktop Only. sovran_systemsOS.services = { - synapse = lib.mkDefault false; - bitcoin = lib.mkDefault false; - vaultwarden = lib.mkDefault false; - wordpress = lib.mkDefault false; - nextcloud = lib.mkDefault false; + synapse = lib.mkForce false; + bitcoin = lib.mkForce false; + vaultwarden = lib.mkForce false; + wordpress = lib.mkForce false; + nextcloud = lib.mkForce false; }; - sovran_systemsOS.web.btcpayserver = lib.mkDefault false; + sovran_systemsOS.features = { + haven = lib.mkForce false; + mempool = lib.mkForce false; + element-calling = lib.mkForce false; + bitcoin-core = lib.mkForce false; + }; + + sovran_systemsOS.web.btcpayserver = lib.mkForce false; }) # ── Bitcoin Node Only Role ──────────────────────────────── From f9044466a1949ad714879993ef5e1a31502ee1de Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Sat, 4 Jul 2026 11:25:52 -0500 Subject: [PATCH 056/140] Update nixpkgs --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 826414c..08cafa3 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1781968640, - "narHash": "sha256-ySgKs6YZRJRsBVoMnmOBGQiNRaX7M9FxMnHA29kovqA=", + "lastModified": 1783086783, + "narHash": "sha256-NxXpNF/9tq2nI+SxFHUxjro3u11SF3l4vs7bawdMKkQ=", "owner": "emmanuelrosa", "repo": "btc-clients-nix", - "rev": "3959faadf6c9d3148e1d819ae85b7f32da5b005b", + "rev": "4f6d07cae877ef58f0fbc9e731c99800ddb80859", "type": "github" }, "original": { @@ -52,11 +52,11 @@ ] }, "locked": { - "lastModified": 1778716662, - "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "lastModified": 1782949081, + "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", "type": "github" }, "original": { @@ -108,11 +108,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1780218263, - "narHash": "sha256-T/f0pPDrH3Qc1VXyQXbK7yfHWRn90l3xwplc/nsxin4=", + "lastModified": 1782911660, + "narHash": "sha256-PbR+tJ5E/Ux+01UtdFKqblccVA4/FgWbkym4ev3VHHQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7fc393d1b46fa000d48ff14e8b6a3c9985f03af0", + "rev": "cf720c15e108d432d29041cc5a185630809acefb", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1782691344, - "narHash": "sha256-i5nw9BYYsMDAaOC4J+JmTof6b2GhlyH076awYRNrTV8=", + "lastModified": 1782999065, + "narHash": "sha256-5Dgj5+pIQYZKrXUGaLCk7CKfN3MmpwIhO94++WVxvng=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1f01958ffb5b3545c96d9ef2f4e24c5e5e1eb846", + "rev": "80d591ed473cfc46329932c2aadac9b435342c7c", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1782723713, - "narHash": "sha256-oPXCU/SSUokcGaJREHibG1CBX3+s/W7orDWQOZDsEeQ=", + "lastModified": 1782959384, + "narHash": "sha256-xnJJk+ct+D2+wdRxj1wk36w5zV9RVESwRqcklPdt3fM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b5aa0fbd538984f6e3d201be0005b4463d8b09f8", + "rev": "65179426c83bb3f6bc14898b42ea1c6f01d374b0", "type": "github" }, "original": { @@ -203,11 +203,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1781607440, - "narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=", + "lastModified": 1782948114, + "narHash": "sha256-AXmz9ho4Lud5CsbrZsuSVwpQZ4o5FgZ1chxBn5cJ8+0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e41b24abd260e8f71dbe2f5737d24122f972158", + "rev": "9e92285f211dad236540fd617d7e30e0b99bc0e1", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1782706849, - "narHash": "sha256-b2ODGxKD3hgrwuesLtDomp2DKF3UiOn3+EBTDXpcqGo=", + "lastModified": 1783173302, + "narHash": "sha256-nlnOw/zsD2H2NHSZ5oNWwcjuM17vipyAapfXsO78GjY=", "owner": "nix-community", "repo": "nixvim", - "rev": "c6a99bb41fb0f37e03ca38b1d81b006e98e3bf1a", + "rev": "a402fdf2a1ef297d8ea7c95b90d6af0dbe90ab11", "type": "github" }, "original": { From 3cf55e53a54e22d4bac4294c72f7d5074301fc09 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 17:36:29 +0000 Subject: [PATCH 057/140] Initial plan From 47ecc7b9a404423cd12a9e22db6927ab0b3f429a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 17:39:14 +0000 Subject: [PATCH 058/140] Stage Hub full updates for next reboot --- app/sovran_systemsos_web/server.py | 18 ++++++---- app/tests/test_hub_update_boot_staging.py | 40 +++++++++++++++++++++++ modules/core/sovran-hub.nix | 34 +++++-------------- 3 files changed, 60 insertions(+), 32 deletions(-) create mode 100644 app/tests/test_hub_update_boot_staging.py diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 4b0634b..e22d738 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1219,7 +1219,7 @@ def _generate_qr_base64(data: str) -> str | None: # ── Update helpers (file-based, no systemctl) ──────────────────── def _read_update_status() -> str: - """Read the status file. Returns RUNNING, SUCCESS, FAILED, or IDLE.""" + """Read the status file. Returns RUNNING, REBOOT_REQUIRED, SUCCESS, FAILED, or IDLE.""" try: with open(UPDATE_STATUS, "r") as f: return f.read().strip() @@ -4755,17 +4755,21 @@ def _recover_stale_status(status_file: str, log_file: str, unit_name: str) -> bo except Exception: pass - new_status = "SUCCESS" if unit_result == "success" else "FAILED" + if unit_result == "success": + new_status = "REBOOT_REQUIRED" if unit_name == UPDATE_UNIT else "SUCCESS" + else: + new_status = "FAILED" try: with open(status_file, "w") as f: f.write(new_status) except OSError: pass - msg = ( - "\n[Update completed successfully while the server was restarting.]\n" - if new_status == "SUCCESS" - else "\n[Update encountered an error. See log above for details.]\n" - ) + if new_status == "REBOOT_REQUIRED": + msg = "\n[Update staged successfully while the server was restarting. Reboot required.]\n" + elif new_status == "SUCCESS": + msg = "\n[Update completed successfully while the server was restarting.]\n" + else: + msg = "\n[Update encountered an error. See log above for details.]\n" try: with open(log_file, "a") as f: f.write(msg) diff --git a/app/tests/test_hub_update_boot_staging.py b/app/tests/test_hub_update_boot_staging.py new file mode 100644 index 0000000..3e9e5bf --- /dev/null +++ b/app/tests/test_hub_update_boot_staging.py @@ -0,0 +1,40 @@ +import unittest +from pathlib import Path + + +HUB_NIX = Path(__file__).resolve().parents[2] / "modules" / "core" / "sovran-hub.nix" + + +def _section(source: str, start: str, end: str) -> str: + start_idx = source.index(start) + end_idx = source.index(end, start_idx) + return source[start_idx:end_idx] + + +class HubUpdateBootStagingTests(unittest.TestCase): + def setUp(self): + self.source = HUB_NIX.read_text() + self.update_section = _section( + self.source, + 'update-script = pkgs.writeShellScript "sovran-hub-update.sh" \'\'', + "# ── Rebuild wrapper script", + ) + self.rebuild_section = _section( + self.source, + 'rebuild-script = pkgs.writeShellScript "sovran-hub-rebuild.sh" \'\'', + "# ── Brave launcher wrapper", + ) + + def test_full_update_uses_boot_not_switch(self): + self.assertIn("nixos-rebuild boot --flake /etc/nixos", self.update_section) + self.assertNotIn("nixos-rebuild switch --flake /etc/nixos", self.update_section) + + def test_full_update_marks_reboot_required(self): + self.assertIn('echo "REBOOT_REQUIRED" > "$STATUS"', self.update_section) + + def test_rebuild_path_keeps_switch_semantics(self): + self.assertIn("nixos-rebuild switch --flake /etc/nixos", self.rebuild_section) + + +if __name__ == "__main__": + unittest.main() diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index ac119a8..12e9695 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -146,33 +146,16 @@ let echo "" if [ "$RC" -eq 0 ]; then - echo "── Step 2/3: nixos-rebuild ──────────────────────────" - SWITCH_OUT=$(nixos-rebuild switch --flake /etc/nixos --print-build-logs \ + echo "── Step 2/3: nixos-rebuild boot (stage next reboot) ─" + BOOT_OUT=$(nixos-rebuild boot --flake /etc/nixos --print-build-logs \ --option connect-timeout 10 \ --option stalled-download-timeout 90 \ --option download-attempts 7 \ --option fallback true 2>&1) - SWITCH_RC=$? - echo "$SWITCH_OUT" - if [ "$SWITCH_RC" -eq 0 ]; then - echo "[OK] switch succeeded" - elif echo "$SWITCH_OUT" | grep -q "switchInhibitors\|Pre-switch checks failed"; then - echo "" - echo " ✓ Build succeeded — a reboot is required to apply this update" - echo " (Critical system components changed; running nixos-rebuild boot instead)" - if nixos-rebuild boot --flake /etc/nixos --print-build-logs \ - --option connect-timeout 10 \ - --option stalled-download-timeout 90 \ - --option download-attempts 7 \ - --option fallback true 2>&1; then - echo "REBOOT_REQUIRED" > "$STATUS" - exit 0 - else - echo "[ERROR] nixos-rebuild boot also failed" - RC=1 - fi - else - echo "[ERROR] nixos-rebuild switch failed" + BOOT_RC=$? + echo "$BOOT_OUT" + if [ "$BOOT_RC" -ne 0 ]; then + echo "[ERROR] nixos-rebuild boot failed" RC=1 fi echo "" @@ -188,9 +171,10 @@ let if [ "$RC" -eq 0 ]; then echo "══════════════════════════════════════════════════" - echo " ✓ Update completed successfully" + echo " ✓ Update staged successfully" + echo " Reboot required to activate the new system" echo "══════════════════════════════════════════════════" - echo "SUCCESS" > "$STATUS" + echo "REBOOT_REQUIRED" > "$STATUS" else echo "══════════════════════════════════════════════════" echo " ✗ Update failed — see errors above" From 644baeb29b6c727bdbe54735f0b3d09b4aaa4f34 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 17:40:29 +0000 Subject: [PATCH 059/140] Polish staged-update test and log header formatting --- app/tests/test_hub_update_boot_staging.py | 8 ++++++-- modules/core/sovran-hub.nix | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/tests/test_hub_update_boot_staging.py b/app/tests/test_hub_update_boot_staging.py index 3e9e5bf..df92a81 100644 --- a/app/tests/test_hub_update_boot_staging.py +++ b/app/tests/test_hub_update_boot_staging.py @@ -6,8 +6,12 @@ HUB_NIX = Path(__file__).resolve().parents[2] / "modules" / "core" / "sovran-hub def _section(source: str, start: str, end: str) -> str: - start_idx = source.index(start) - end_idx = source.index(end, start_idx) + start_idx = source.find(start) + if start_idx == -1: + raise AssertionError(f"Expected section start not found: {start!r}") + end_idx = source.find(end, start_idx) + if end_idx == -1: + raise AssertionError(f"Expected section end not found: {end!r}") return source[start_idx:end_idx] diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index 12e9695..719d90f 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -146,7 +146,7 @@ let echo "" if [ "$RC" -eq 0 ]; then - echo "── Step 2/3: nixos-rebuild boot (stage next reboot) ─" + echo "── Step 2/3: nixos-rebuild boot (stage next reboot) ──" BOOT_OUT=$(nixos-rebuild boot --flake /etc/nixos --print-build-logs \ --option connect-timeout 10 \ --option stalled-download-timeout 90 \ From 4be0ea11ff7c43a7b0a3fddcb260ce784cb2736d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 17:41:36 +0000 Subject: [PATCH 060/140] Adjust update status docstring ordering --- app/sovran_systemsos_web/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index e22d738..8ba366d 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1219,7 +1219,7 @@ def _generate_qr_base64(data: str) -> str | None: # ── Update helpers (file-based, no systemctl) ──────────────────── def _read_update_status() -> str: - """Read the status file. Returns RUNNING, REBOOT_REQUIRED, SUCCESS, FAILED, or IDLE.""" + """Read the status file. Returns RUNNING, SUCCESS, REBOOT_REQUIRED, FAILED, or IDLE.""" try: with open(UPDATE_STATUS, "r") as f: return f.read().strip() From 08f9bf9850c17c412ef4c2576b704f4b597b8968 Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Mon, 13 Jul 2026 13:02:42 -0500 Subject: [PATCH 061/140] nixpkgs update and btc client update --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 08cafa3..274f9d8 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1783086783, - "narHash": "sha256-NxXpNF/9tq2nI+SxFHUxjro3u11SF3l4vs7bawdMKkQ=", + "lastModified": 1783519926, + "narHash": "sha256-2zwAN4lNitHFrHVnRZG3YcvpdtWOoF0cOBstxMeB1KI=", "owner": "emmanuelrosa", "repo": "btc-clients-nix", - "rev": "4f6d07cae877ef58f0fbc9e731c99800ddb80859", + "rev": "731a1e11c2fefb14f0aa4b1f03cfa85c19c28d71", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1782999065, - "narHash": "sha256-5Dgj5+pIQYZKrXUGaLCk7CKfN3MmpwIhO94++WVxvng=", + "lastModified": 1783856661, + "narHash": "sha256-ZGP04e+Q6WyQJGA9ZvI5CL6+heGQldbAG9U1T9NGvmU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "80d591ed473cfc46329932c2aadac9b435342c7c", + "rev": "569d578509928497eddc3fdbf94a799027050be4", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1782959384, - "narHash": "sha256-xnJJk+ct+D2+wdRxj1wk36w5zV9RVESwRqcklPdt3fM=", + "lastModified": 1783776592, + "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65179426c83bb3f6bc14898b42ea1c6f01d374b0", + "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3", "type": "github" }, "original": { @@ -203,11 +203,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1782948114, - "narHash": "sha256-AXmz9ho4Lud5CsbrZsuSVwpQZ4o5FgZ1chxBn5cJ8+0=", + "lastModified": 1783791668, + "narHash": "sha256-zbcZ1dmBTPfJ7Mlqh/yLEPGpgJnwuv4Xr1xucy2WqMA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9e92285f211dad236540fd617d7e30e0b99bc0e1", + "rev": "716c7a2664ca8325617b8a7fbb609273f2c4cae7", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1783173302, - "narHash": "sha256-nlnOw/zsD2H2NHSZ5oNWwcjuM17vipyAapfXsO78GjY=", + "lastModified": 1783941741, + "narHash": "sha256-F+3M1IZrJa920cx2/k2AMKqedEodxLF7COJVkLJwUBo=", "owner": "nix-community", "repo": "nixvim", - "rev": "a402fdf2a1ef297d8ea7c95b90d6af0dbe90ab11", + "rev": "e6715f01d9f56f07a27a01386b85ae22b06f0705", "type": "github" }, "original": { From ac1aff9d7f8ef587fde3d7b37d433427d5f406a0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 18:20:58 +0000 Subject: [PATCH 062/140] Initial plan From c22ff00abf78a54ba7abc8037da89ae60adcec65 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 18:24:43 +0000 Subject: [PATCH 063/140] feat(element-calling): universal LiveKit interface detection, JWT/Caddy fixes --- modules/element-calling.nix | 60 ++++++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/modules/element-calling.nix b/modules/element-calling.nix index c49163e..64bd962 100755 --- a/modules/element-calling.nix +++ b/modules/element-calling.nix @@ -72,17 +72,30 @@ $MATRIX { } $ELEMENT_CALLING { - handle /livekit/jwt/sfu/get { + # Route all current lk-jwt-service authorization endpoints to port 8073, + # stripping the /livekit/jwt prefix that Caddy adds on the public URL. + @lk_jwt path /livekit/jwt/sfu/get* /livekit/jwt/get_token* /livekit/jwt/healthz* /livekit/jwt/sfu_webhook* /livekit/jwt/delegate_delayed_leave* + handle @lk_jwt { uri strip_prefix /livekit/jwt reverse_proxy [::1]:8073 { header_up Host {host} header_up X-Forwarded-Server {host} header_up X-Real-IP {remote_host} header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} } } handle { - reverse_proxy localhost:7880 + reverse_proxy localhost:7880 { + header_up Host {host} + header_up X-Forwarded-Proto {scheme} + header_up X-Forwarded-For {remote_host} + header_up X-Real-IP {remote_host} + transport http { + read_timeout 300s + write_timeout 300s + } + } } } EOF @@ -94,8 +107,11 @@ EOF # * reads the matrix domain from /var/lib/domains/matrix (never hardcoded) # * copies Caddy's already-issued matrix cert/key into /var/lib/livekit # so LoadCredential can stage them for the (DynamicUser) livekit unit - # * writes a complete LiveKit config (with turn.domain substituted) that the - # overridden ExecStart loads. + # * detects the primary network interface from the IPv4 default route so + # LiveKit only advertises real ICE candidates — not VPN/container/private + # addresses from interfaces like Tailscale or Docker bridges + # * writes a complete LiveKit config (with turn.domain and interface + # substituted) that the overridden ExecStart loads. systemd.services.livekit-turn-setup = { description = "Stage TURN cert and generate LiveKit runtime config from domain files"; after = [ "caddy.service" "livekit-key-setup.service" ]; @@ -109,7 +125,7 @@ EOF unitConfig = { ConditionPathExists = "/var/lib/domains/element-calling"; }; - path = [ pkgs.coreutils pkgs.findutils ]; + path = [ pkgs.coreutils pkgs.findutils pkgs.iproute2 pkgs.gawk ]; script = '' MATRIX=$(cat /var/lib/domains/matrix) @@ -123,16 +139,37 @@ EOF cp "$KEY" /var/lib/livekit/turn.key chmod 640 /var/lib/livekit/turn.crt /var/lib/livekit/turn.key - # Generate the full LiveKit config the daemon will load. turn.domain is - # only known at runtime, so it is substituted here. The cert/key paths - # point at the LoadCredential-staged copies under /run/credentials. + # Detect the primary network interface from the IPv4 default route. + # Restricting LiveKit to this single interface prevents it from + # advertising VPN/container/private ICE candidates (e.g. Tailscale, + # Docker bridges) that remote peers cannot reach, which causes all + # ICE negotiation attempts to fail with responsesReceived: 0. + IFACE=$(ip -4 route show default | awk '/^default/ { for(i=1;i<=NF;i++) if($i=="dev" && (i+1)<=NF) { print $(i+1); exit } }') + if [ -z "$IFACE" ]; then + echo "ERROR: Could not detect a default-route network interface from 'ip -4 route show default'." >&2 + echo "ERROR: Cannot generate a valid LiveKit config without a real interface to bind ICE candidates to." >&2 + echo "ERROR: Ensure a default IPv4 route is configured, e.g.: ip route add default via dev " >&2 + echo "ERROR: Inspect the current routing table with: ip -4 route show" >&2 + exit 1 + fi + echo "Detected primary network interface: $IFACE" + + # Generate the full LiveKit config the daemon will load. turn.domain and + # rtc.interfaces.includes are only known at runtime, so they are + # substituted here. The cert/key paths point at the LoadCredential-staged + # copies under /run/credentials. cat > /run/livekit/livekit.yaml < /run/lk-jwt-service/env < Date: Mon, 13 Jul 2026 23:25:36 +0000 Subject: [PATCH 064/140] Initial plan From 54bea9bb5c924a6e831bd015d0ec8faa7b256c41 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 13 Jul 2026 23:48:12 +0000 Subject: [PATCH 065/140] fix: tighten GRD boot credential setup --- app/tests/test_rdp_module_boot_setup.py | 74 ++++++++++++++ modules/rdp.nix | 130 ++++++++++++++---------- 2 files changed, 149 insertions(+), 55 deletions(-) create mode 100644 app/tests/test_rdp_module_boot_setup.py mode change 100755 => 100644 modules/rdp.nix diff --git a/app/tests/test_rdp_module_boot_setup.py b/app/tests/test_rdp_module_boot_setup.py new file mode 100644 index 0000000..bbd1f9c --- /dev/null +++ b/app/tests/test_rdp_module_boot_setup.py @@ -0,0 +1,74 @@ +import unittest +from pathlib import Path + + +RDP_NIX = Path(__file__).resolve().parents[2] / "modules" / "rdp.nix" + + +def _section(source: str, start: str, end: str) -> str: + start_idx = source.find(start) + if start_idx == -1: + raise AssertionError(f"Expected section start not found: {start!r}") + end_idx = source.find(end, start_idx) + if end_idx == -1: + raise AssertionError(f"Expected section end not found: {end!r}") + return source[start_idx:end_idx] + + +class RdpModuleBootSetupTests(unittest.TestCase): + def setUp(self): + self.source = RDP_NIX.read_text() + self.gnome_service = _section( + self.source, + "systemd.services.gnome-remote-desktop = {", + "systemd.tmpfiles.rules = [", + ) + self.setup_service = _section( + self.source, + "systemd.services.gnome-remote-desktop-setup = {", + "};\n}", + ) + + def test_does_not_redeclare_gnome_remote_desktop_user(self): + self.assertNotIn("users.users.gnome-remote-desktop", self.source) + self.assertNotIn("createHome = true;", self.source) + + def test_main_service_requires_setup_before_starting(self): + self.assertIn('wantedBy = [ "graphical.target" ];', self.gnome_service) + self.assertIn('after = [ "gnome-remote-desktop-setup.service" ];', self.gnome_service) + self.assertIn('requires = [ "gnome-remote-desktop-setup.service" ];', self.gnome_service) + + def test_setup_waits_for_configuration_service_and_bounded_timeout(self): + self.assertIn('wantedBy = [ "graphical.target" ];', self.setup_service) + self.assertIn('before = [ "gnome-remote-desktop.service" ];', self.setup_service) + self.assertIn('"dbus.service"', self.setup_service) + self.assertIn('"gnome-remote-desktop-configuration.service"', self.setup_service) + self.assertNotIn("RemainAfterExit", self.setup_service) + self.assertIn('TimeoutStartSec = "2min";', self.setup_service) + self.assertIn('timeout --kill-after=5s 15s', self.setup_service) + + def test_setup_runs_grdctl_as_gnome_remote_desktop_user(self): + self.assertIn("runuser -u gnome-remote-desktop -- \\", self.setup_service) + self.assertIn('grdctl --system "$@"', self.setup_service) + + def test_hub_files_are_the_source_of_truth_for_username_and_password(self): + self.assertIn('DEFAULT_USERNAME="sovran"', self.setup_service) + self.assertIn('if [ ! -f "$USERNAME_FILE" ]; then', self.setup_service) + self.assertIn("USERNAME=\"$(tr -d '\\n' < \"$USERNAME_FILE\")\"", self.setup_service) + self.assertIn('if [ ! -f "$PASSWORD_FILE" ]; then', self.setup_service) + self.assertIn('PASSWORD="$(tr -d \'\\n\' < "$PASSWORD_FILE")"', self.setup_service) + self.assertIn('grdctl_system rdp set-credentials "$USERNAME" "$PASSWORD"', self.setup_service) + self.assertNotIn('grdctl --system rdp set-credentials sovran "$PASSWORD"', self.setup_service) + + def test_secure_permissions_are_enforced_for_state_and_secret_files(self): + self.assertIn('"d /var/lib/gnome-remote-desktop/tls 0700', self.source) + self.assertIn('chmod 700 \\', self.setup_service) + self.assertIn('chmod 600 "$USERNAME_FILE"', self.setup_service) + self.assertIn('chmod 600 "$PASSWORD_FILE"', self.setup_service) + self.assertIn('chmod 600 "$CRED_FILE"', self.setup_service) + self.assertIn('chmod 600 "$TLS_DIR/rdp-tls.key"', self.setup_service) + self.assertIn('chmod 644 "$TLS_DIR/rdp-tls.crt"', self.setup_service) + + +if __name__ == "__main__": + unittest.main() diff --git a/modules/rdp.nix b/modules/rdp.nix old mode 100755 new mode 100644 index e8af84b..647d913 --- a/modules/rdp.nix +++ b/modules/rdp.nix @@ -2,70 +2,87 @@ lib.mkIf config.sovran_systemsOS.features.rdp { - users.users.gnome-remote-desktop = { - isSystemUser = true; - group = "gnome-remote-desktop"; - home = "/var/lib/gnome-remote-desktop"; - createHome = true; - }; - users.groups.gnome-remote-desktop = {}; - # Enable the GNOME Remote Desktop service at the system level services.gnome.gnome-remote-desktop.enable = true; # Open RDP port in the firewall networking.firewall.allowedTCPPorts = [ 3389 ]; - # Ensure the service actually starts and waits for setup to complete + # Ensure the service only starts after setup succeeds systemd.services.gnome-remote-desktop = { wantedBy = [ "graphical.target" ]; after = [ "gnome-remote-desktop-setup.service" ]; - wants = [ "gnome-remote-desktop-setup.service" ]; + requires = [ "gnome-remote-desktop-setup.service" ]; }; systemd.tmpfiles.rules = [ - "d /var/lib/gnome-remote-desktop 0750 gnome-remote-desktop gnome-remote-desktop -" - "d /var/lib/gnome-remote-desktop/.local 0750 gnome-remote-desktop gnome-remote-desktop -" - "d /var/lib/gnome-remote-desktop/.local/share 0750 gnome-remote-desktop gnome-remote-desktop -" - "d /var/lib/gnome-remote-desktop/.local/share/gnome-remote-desktop 0750 gnome-remote-desktop gnome-remote-desktop -" + "d /var/lib/gnome-remote-desktop/.local 0700 gnome-remote-desktop gnome-remote-desktop -" + "d /var/lib/gnome-remote-desktop/.local/share 0700 gnome-remote-desktop gnome-remote-desktop -" + "d /var/lib/gnome-remote-desktop/.local/share/gnome-remote-desktop 0700 gnome-remote-desktop gnome-remote-desktop -" + "d /var/lib/gnome-remote-desktop/tls 0700 gnome-remote-desktop gnome-remote-desktop -" ]; systemd.services.gnome-remote-desktop-setup = { description = "Configure GNOME Remote Desktop RDP"; - wantedBy = [ "multi-user.target" ]; + wantedBy = [ "graphical.target" ]; before = [ "gnome-remote-desktop.service" ]; - after = [ "systemd-tmpfiles-setup.service" "network-online.target" ]; - wants = [ "network-online.target" ]; + after = [ + "dbus.service" + "systemd-tmpfiles-setup.service" + "network-online.target" + "gnome-remote-desktop-configuration.service" + ]; + wants = [ + "network-online.target" + "gnome-remote-desktop-configuration.service" + ]; serviceConfig = { Type = "oneshot"; - RemainAfterExit = true; + TimeoutStartSec = "2min"; }; path = [ - pkgs.gnome-remote-desktop - pkgs.polkit - pkgs.openssl - pkgs.hostname + pkgs.coreutils pkgs.gawk + pkgs.gnome-remote-desktop + pkgs.hostname + pkgs.openssl + pkgs.polkit + pkgs.systemd + pkgs.util-linux ]; script = '' - # Ensure directory structure exists - mkdir -p /var/lib/gnome-remote-desktop/.local/share/gnome-remote-desktop - chown -R gnome-remote-desktop:gnome-remote-desktop /var/lib/gnome-remote-desktop + set -euo pipefail - TLS_DIR="/var/lib/gnome-remote-desktop/tls" - CRED_FILE="/var/lib/gnome-remote-desktop/rdp-credentials" + STATE_DIR="/var/lib/gnome-remote-desktop" + TLS_DIR="$STATE_DIR/tls" + USERNAME_FILE="$STATE_DIR/rdp-username" + PASSWORD_FILE="$STATE_DIR/rdp-password" + CRED_FILE="$STATE_DIR/rdp-credentials" + DEFAULT_USERNAME="sovran" + + grdctl_system() { + timeout --kill-after=5s 15s \ + runuser -u gnome-remote-desktop -- \ + grdctl --system "$@" + } + + mkdir -p "$STATE_DIR/.local/share/gnome-remote-desktop" "$TLS_DIR" + chown -R gnome-remote-desktop:gnome-remote-desktop "$STATE_DIR" + chmod 700 \ + "$STATE_DIR" \ + "$STATE_DIR/.local" \ + "$STATE_DIR/.local/share" \ + "$STATE_DIR/.local/share/gnome-remote-desktop" \ + "$TLS_DIR" - # Regenerate TLS certificate if missing OR if ownership is wrong - # (disable/re-enable cycle can break ownership or grdctl state) NEED_REGEN=0 if [ ! -f "$TLS_DIR/rdp-tls.crt" ] || [ ! -f "$TLS_DIR/rdp-tls.key" ]; then NEED_REGEN=1 - elif [ "$(stat -c '%U' "$TLS_DIR/rdp-tls.key" 2>/dev/null)" != "gnome-remote-desktop" ]; then + elif [ "$(stat -c '%U:%G' "$TLS_DIR/rdp-tls.key" 2>/dev/null)" != "gnome-remote-desktop:gnome-remote-desktop" ]; then NEED_REGEN=1 fi if [ "$NEED_REGEN" = "1" ]; then - mkdir -p "$TLS_DIR" rm -f "$TLS_DIR/rdp-tls.key" "$TLS_DIR/rdp-tls.crt" openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 \ -sha256 -nodes -days 3650 \ @@ -75,39 +92,40 @@ lib.mkIf config.sovran_systemsOS.features.rdp { echo "Generated new RDP TLS certificate" fi - # Always fix ownership and permissions (handles re-enable after disable) - chown -R gnome-remote-desktop:gnome-remote-desktop "$TLS_DIR" + chown gnome-remote-desktop:gnome-remote-desktop "$TLS_DIR/rdp-tls.key" "$TLS_DIR/rdp-tls.crt" chmod 600 "$TLS_DIR/rdp-tls.key" chmod 644 "$TLS_DIR/rdp-tls.crt" - # Configure TLS certificate - grdctl --system rdp set-tls-cert "$TLS_DIR/rdp-tls.crt" - grdctl --system rdp set-tls-key "$TLS_DIR/rdp-tls.key" - - # Generate password on first boot only - PASSWORD="" - if [ ! -f /var/lib/gnome-remote-desktop/rdp-password ]; then - PASSWORD=$(openssl rand -base64 16) - echo "$PASSWORD" > /var/lib/gnome-remote-desktop/rdp-password - chmod 600 /var/lib/gnome-remote-desktop/rdp-password - else - PASSWORD=$(cat /var/lib/gnome-remote-desktop/rdp-password) + if [ ! -f "$USERNAME_FILE" ]; then + printf '%s\n' "$DEFAULT_USERNAME" > "$USERNAME_FILE" fi + USERNAME="$(tr -d '\n' < "$USERNAME_FILE")" + if [ -z "$USERNAME" ]; then + USERNAME="$DEFAULT_USERNAME" + printf '%s\n' "$USERNAME" > "$USERNAME_FILE" + fi + chown gnome-remote-desktop:gnome-remote-desktop "$USERNAME_FILE" + chmod 600 "$USERNAME_FILE" - # Write username to a separate file for the hub - echo "sovran" > /var/lib/gnome-remote-desktop/rdp-username - chmod 600 /var/lib/gnome-remote-desktop/rdp-username + if [ ! -f "$PASSWORD_FILE" ]; then + openssl rand -base64 16 > "$PASSWORD_FILE" + fi + PASSWORD="$(tr -d '\n' < "$PASSWORD_FILE")" + if [ -z "$PASSWORD" ]; then + echo "RDP password file is empty: $PASSWORD_FILE" >&2 + exit 1 + fi + chown gnome-remote-desktop:gnome-remote-desktop "$PASSWORD_FILE" + chmod 600 "$PASSWORD_FILE" - # Get current IP address - LOCAL_IP=$(hostname -I | awk '{print $1}') + LOCAL_IP="$(hostname -I | awk '{print $1}')" - # Always rewrite the credentials file with the current IP cat > "$CRED_FILE" < Date: Mon, 13 Jul 2026 23:54:08 +0000 Subject: [PATCH 066/140] fix: apply hub-managed GRD credentials at boot --- app/tests/test_rdp_module_boot_setup.py | 23 +++++++++++++--- modules/rdp.nix | 36 +++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/app/tests/test_rdp_module_boot_setup.py b/app/tests/test_rdp_module_boot_setup.py index bbd1f9c..8cb8c8b 100644 --- a/app/tests/test_rdp_module_boot_setup.py +++ b/app/tests/test_rdp_module_boot_setup.py @@ -3,6 +3,9 @@ from pathlib import Path RDP_NIX = Path(__file__).resolve().parents[2] / "modules" / "rdp.nix" +USERNAME_READ = "USERNAME=\"$(tr -d '\\n' < \"$USERNAME_FILE\")\"" +USERNAME_LENGTH_GUARD = "if [ \"''${#USERNAME}\" -gt 32 ]; then" +SHORT_PASSWORD_GUARD = 'if [ "\'\'${#PASSWORD}" -lt 8 ]; then' def _section(source: str, start: str, end: str) -> str: @@ -45,7 +48,9 @@ class RdpModuleBootSetupTests(unittest.TestCase): self.assertIn('"gnome-remote-desktop-configuration.service"', self.setup_service) self.assertNotIn("RemainAfterExit", self.setup_service) self.assertIn('TimeoutStartSec = "2min";', self.setup_service) - self.assertIn('timeout --kill-after=5s 15s', self.setup_service) + self.assertIn('timeout --kill-after=5s 10s', self.setup_service) + self.assertIn('echo "grdctl command timed out: $*" >&2', self.setup_service) + self.assertIn('echo "grdctl command failed (exit $rc): $*" >&2', self.setup_service) def test_setup_runs_grdctl_as_gnome_remote_desktop_user(self): self.assertIn("runuser -u gnome-remote-desktop -- \\", self.setup_service) @@ -54,20 +59,30 @@ class RdpModuleBootSetupTests(unittest.TestCase): def test_hub_files_are_the_source_of_truth_for_username_and_password(self): self.assertIn('DEFAULT_USERNAME="sovran"', self.setup_service) self.assertIn('if [ ! -f "$USERNAME_FILE" ]; then', self.setup_service) - self.assertIn("USERNAME=\"$(tr -d '\\n' < \"$USERNAME_FILE\")\"", self.setup_service) + self.assertIn(USERNAME_READ, self.setup_service) + self.assertIn(USERNAME_LENGTH_GUARD, self.setup_service) + self.assertIn('case "$USERNAME" in', self.setup_service) + self.assertIn('[A-Za-z_][A-Za-z0-9_-]*)', self.setup_service) + self.assertIn("RDP username is too long (''${#USERNAME} characters, maximum 32)", self.setup_service) + self.assertIn("RDP username must start with a letter or underscore and contain only letters, numbers, underscores, and hyphens", self.setup_service) self.assertIn('if [ ! -f "$PASSWORD_FILE" ]; then', self.setup_service) - self.assertIn('PASSWORD="$(tr -d \'\\n\' < "$PASSWORD_FILE")"', self.setup_service) + self.assertIn("tr -d '\\n'", self.setup_service) + self.assertIn('"$PASSWORD_FILE"', self.setup_service) + self.assertIn(SHORT_PASSWORD_GUARD, self.setup_service) + self.assertIn("RDP password is too short (''${#PASSWORD} characters, minimum 8)", self.setup_service) self.assertIn('grdctl_system rdp set-credentials "$USERNAME" "$PASSWORD"', self.setup_service) self.assertNotIn('grdctl --system rdp set-credentials sovran "$PASSWORD"', self.setup_service) def test_secure_permissions_are_enforced_for_state_and_secret_files(self): self.assertIn('"d /var/lib/gnome-remote-desktop/tls 0700', self.source) - self.assertIn('chmod 700 \\', self.setup_service) + self.assertIn("chmod 700", self.setup_service) self.assertIn('chmod 600 "$USERNAME_FILE"', self.setup_service) self.assertIn('chmod 600 "$PASSWORD_FILE"', self.setup_service) self.assertIn('chmod 600 "$CRED_FILE"', self.setup_service) self.assertIn('chmod 600 "$TLS_DIR/rdp-tls.key"', self.setup_service) self.assertIn('chmod 644 "$TLS_DIR/rdp-tls.crt"', self.setup_service) + self.assertIn('LOCAL_IP="$(hostname -I | awk \'{print $1}\')"', self.setup_service) + self.assertIn('LOCAL_IP="127.0.0.1"', self.setup_service) if __name__ == "__main__": diff --git a/modules/rdp.nix b/modules/rdp.nix index 647d913..2499491 100644 --- a/modules/rdp.nix +++ b/modules/rdp.nix @@ -61,9 +61,22 @@ lib.mkIf config.sovran_systemsOS.features.rdp { DEFAULT_USERNAME="sovran" grdctl_system() { - timeout --kill-after=5s 15s \ + local rc=0 + + if timeout --kill-after=5s 10s \ runuser -u gnome-remote-desktop -- \ - grdctl --system "$@" + grdctl --system "$@"; then + return 0 + else + rc=$? + fi + + if [ "$rc" -eq 124 ] || [ "$rc" -eq 137 ]; then + echo "grdctl command timed out: $*" >&2 + fi + echo "grdctl command failed (exit $rc): $*" >&2 + + return "$rc" } mkdir -p "$STATE_DIR/.local/share/gnome-remote-desktop" "$TLS_DIR" @@ -104,6 +117,18 @@ lib.mkIf config.sovran_systemsOS.features.rdp { USERNAME="$DEFAULT_USERNAME" printf '%s\n' "$USERNAME" > "$USERNAME_FILE" fi + if [ "''${#USERNAME}" -gt 32 ]; then + echo "RDP username is too long (''${#USERNAME} characters, maximum 32): $USERNAME from $USERNAME_FILE" >&2 + exit 1 + fi + case "$USERNAME" in + [A-Za-z_][A-Za-z0-9_-]*) + ;; + *) + echo "RDP username must start with a letter or underscore and contain only letters, numbers, underscores, and hyphens: $USERNAME from $USERNAME_FILE" >&2 + exit 1 + ;; + esac chown gnome-remote-desktop:gnome-remote-desktop "$USERNAME_FILE" chmod 600 "$USERNAME_FILE" @@ -115,10 +140,17 @@ lib.mkIf config.sovran_systemsOS.features.rdp { echo "RDP password file is empty: $PASSWORD_FILE" >&2 exit 1 fi + if [ "''${#PASSWORD}" -lt 8 ]; then + echo "RDP password is too short (''${#PASSWORD} characters, minimum 8): $PASSWORD_FILE" >&2 + exit 1 + fi chown gnome-remote-desktop:gnome-remote-desktop "$PASSWORD_FILE" chmod 600 "$PASSWORD_FILE" LOCAL_IP="$(hostname -I | awk '{print $1}')" + if [ -z "$LOCAL_IP" ]; then + LOCAL_IP="127.0.0.1" + fi cat > "$CRED_FILE" < Date: Tue, 14 Jul 2026 00:26:18 +0000 Subject: [PATCH 067/140] Initial plan From 3da6eff9fa55aded3778ea2897ade2745ba4f535 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Jul 2026 00:28:17 +0000 Subject: [PATCH 068/140] fix(rdp): run grdctl --system directly as root, remove runuser/polkit/util-linux Root cause: gnome-remote-desktop-setup.service ran as root but dropped privileges via `runuser -u gnome-remote-desktop`. Non-root grdctl --system attempts authorisation through pkexec. The Nix-store pkexec binary is not setuid, so every system-mode credential call silently failed while the script still printed "configured successfully". GNOME Remote Desktop then started without applied credentials, causing Remmina to loop at the login dialog. Fix: - Remove `runuser -u gnome-remote-desktop --` from grdctl_system helper; the root-run oneshot service can call grdctl --system directly. - Remove pkgs.polkit and pkgs.util-linux from the setup service path as neither polkit nor runuser is needed any more. - Update tests: rename test_setup_runs_grdctl_as_gnome_remote_desktop_user to test_setup_runs_grdctl_directly_as_root and assert that runuser, pkexec, and sudo are absent; add test_privilege_escalation_packages_absent_from_setup_path. All 21 app/tests pass. --- app/tests/test_rdp_module_boot_setup.py | 12 ++++++++++-- modules/rdp.nix | 3 --- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/tests/test_rdp_module_boot_setup.py b/app/tests/test_rdp_module_boot_setup.py index 8cb8c8b..bb29820 100644 --- a/app/tests/test_rdp_module_boot_setup.py +++ b/app/tests/test_rdp_module_boot_setup.py @@ -52,9 +52,17 @@ class RdpModuleBootSetupTests(unittest.TestCase): self.assertIn('echo "grdctl command timed out: $*" >&2', self.setup_service) self.assertIn('echo "grdctl command failed (exit $rc): $*" >&2', self.setup_service) - def test_setup_runs_grdctl_as_gnome_remote_desktop_user(self): - self.assertIn("runuser -u gnome-remote-desktop -- \\", self.setup_service) + def test_setup_runs_grdctl_directly_as_root(self): + # The oneshot service already runs as root; system-mode grdctl must be + # invoked directly so it does not attempt pkexec authorisation. self.assertIn('grdctl --system "$@"', self.setup_service) + self.assertNotIn("runuser", self.setup_service) + self.assertNotIn("pkexec", self.setup_service) + self.assertNotIn("sudo", self.setup_service) + + def test_privilege_escalation_packages_absent_from_setup_path(self): + self.assertNotIn("pkgs.polkit", self.setup_service) + self.assertNotIn("pkgs.util-linux", self.setup_service) def test_hub_files_are_the_source_of_truth_for_username_and_password(self): self.assertIn('DEFAULT_USERNAME="sovran"', self.setup_service) diff --git a/modules/rdp.nix b/modules/rdp.nix index 2499491..c658631 100644 --- a/modules/rdp.nix +++ b/modules/rdp.nix @@ -46,9 +46,7 @@ lib.mkIf config.sovran_systemsOS.features.rdp { pkgs.gnome-remote-desktop pkgs.hostname pkgs.openssl - pkgs.polkit pkgs.systemd - pkgs.util-linux ]; script = '' set -euo pipefail @@ -64,7 +62,6 @@ lib.mkIf config.sovran_systemsOS.features.rdp { local rc=0 if timeout --kill-after=5s 10s \ - runuser -u gnome-remote-desktop -- \ grdctl --system "$@"; then return 0 else From cf53c870b61e0bde5ea9f14526d4232e053ee70d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Jul 2026 00:29:26 +0000 Subject: [PATCH 069/140] =?UTF-8?q?style:=20fix=20spelling=20authorisation?= =?UTF-8?q?=20=E2=86=92=20authorization=20in=20test=20comment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/tests/test_rdp_module_boot_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/tests/test_rdp_module_boot_setup.py b/app/tests/test_rdp_module_boot_setup.py index bb29820..c070034 100644 --- a/app/tests/test_rdp_module_boot_setup.py +++ b/app/tests/test_rdp_module_boot_setup.py @@ -54,7 +54,7 @@ class RdpModuleBootSetupTests(unittest.TestCase): def test_setup_runs_grdctl_directly_as_root(self): # The oneshot service already runs as root; system-mode grdctl must be - # invoked directly so it does not attempt pkexec authorisation. + # invoked directly so it does not attempt pkexec authorization. self.assertIn('grdctl --system "$@"', self.setup_service) self.assertNotIn("runuser", self.setup_service) self.assertNotIn("pkexec", self.setup_service) From 49728fbc84a16ccd0686ab731525c2dce8847b49 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Jul 2026 15:51:34 +0000 Subject: [PATCH 070/140] Initial plan From f9a140f11977aa3f019288e40934df348f8ddc12 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Jul 2026 15:54:40 +0000 Subject: [PATCH 071/140] fix(rdp): prepend /run/wrappers/bin to PATH and add pkexec preflight check GRD 50.x invokes pkexec internally for every grdctl --system call, even when the caller is root. An isolated systemd script PATH does not include /run/wrappers/bin automatically, causing exit 70 at boot. Changes: - Prepend /run/wrappers/bin to PATH at script start so every subsequent grdctl --system resolves the NixOS setuid pkexec wrapper. - Add an explicit preflight check (test -x /run/wrappers/bin/pkexec) with a clear error message before the first grdctl_system call. - pkgs.polkit remains absent from the service path. - Update test_setup_runs_grdctl_directly_as_root to reflect that pkexec now appears in the preflight check (not as a direct invocation). - Add test_run_wrappers_bin_prepended_to_path and test_pkexec_preflight_check. --- app/tests/test_rdp_module_boot_setup.py | 31 ++++++++++++++++++++++--- modules/rdp.nix | 16 +++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/app/tests/test_rdp_module_boot_setup.py b/app/tests/test_rdp_module_boot_setup.py index c070034..4948b47 100644 --- a/app/tests/test_rdp_module_boot_setup.py +++ b/app/tests/test_rdp_module_boot_setup.py @@ -53,17 +53,42 @@ class RdpModuleBootSetupTests(unittest.TestCase): self.assertIn('echo "grdctl command failed (exit $rc): $*" >&2', self.setup_service) def test_setup_runs_grdctl_directly_as_root(self): - # The oneshot service already runs as root; system-mode grdctl must be - # invoked directly so it does not attempt pkexec authorization. + # The oneshot service runs as root; grdctl --system is called directly. + # GRD 50.x invokes pkexec internally, but the call itself is plain + # grdctl --system, not a manual pkexec invocation. self.assertIn('grdctl --system "$@"', self.setup_service) self.assertNotIn("runuser", self.setup_service) - self.assertNotIn("pkexec", self.setup_service) self.assertNotIn("sudo", self.setup_service) + # No direct Nix-store pkexec invocation (pkgs.polkit}/bin/pkexec). + self.assertNotIn("pkgs.polkit}/bin/pkexec", self.setup_service) def test_privilege_escalation_packages_absent_from_setup_path(self): self.assertNotIn("pkgs.polkit", self.setup_service) self.assertNotIn("pkgs.util-linux", self.setup_service) + def test_run_wrappers_bin_prepended_to_path(self): + # /run/wrappers/bin must be prepended to PATH before any grdctl_system + # invocation so that grdctl --system resolves the NixOS setuid pkexec. + path_export = 'export PATH="/run/wrappers/bin:$PATH"' + grdctl_marker = "grdctl_system" + script = self.setup_service + path_idx = script.find(path_export) + grdctl_idx = script.find(grdctl_marker) + self.assertGreater(path_idx, -1, f"{path_export!r} not found in setup script") + self.assertGreater( + grdctl_idx, path_idx, + "PATH export must appear before the first grdctl_system usage", + ) + + def test_pkexec_preflight_check(self): + # A preflight must confirm /run/wrappers/bin/pkexec is executable + # with a clear error message before any GRD configuration changes. + self.assertIn("test -x /run/wrappers/bin/pkexec", self.setup_service) + self.assertIn( + "/run/wrappers/bin/pkexec is absent or not executable", + self.setup_service, + ) + def test_hub_files_are_the_source_of_truth_for_username_and_password(self): self.assertIn('DEFAULT_USERNAME="sovran"', self.setup_service) self.assertIn('if [ ! -f "$USERNAME_FILE" ]; then', self.setup_service) diff --git a/modules/rdp.nix b/modules/rdp.nix index c658631..e162b94 100644 --- a/modules/rdp.nix +++ b/modules/rdp.nix @@ -51,6 +51,13 @@ lib.mkIf config.sovran_systemsOS.features.rdp { script = '' set -euo pipefail + # GRD 50.x invokes pkexec internally for every grdctl --system call, even + # when the caller is root. NixOS exposes the required setuid wrapper at + # /run/wrappers/bin/pkexec; the Nix-store polkit binary is not setuid and + # must not shadow it. Prepend the wrapper directory so every subsequent + # grdctl --system resolves the correct binary. + export PATH="/run/wrappers/bin:$PATH" + STATE_DIR="/var/lib/gnome-remote-desktop" TLS_DIR="$STATE_DIR/tls" USERNAME_FILE="$STATE_DIR/rdp-username" @@ -166,6 +173,15 @@ lib.mkIf config.sovran_systemsOS.features.rdp { chown gnome-remote-desktop:gnome-remote-desktop "$CRED_FILE" chmod 600 "$CRED_FILE" + # Preflight: the NixOS setuid pkexec wrapper must be present and executable + # before any grdctl --system call. Absence means the system was booted + # without security.wrappers or the wrapper directory is not mounted yet. + if ! test -x /run/wrappers/bin/pkexec; then + echo "Preflight check failed: /run/wrappers/bin/pkexec is absent or not executable." >&2 + echo "GNOME Remote Desktop system configuration requires the NixOS setuid pkexec wrapper at /run/wrappers/bin/pkexec." >&2 + exit 1 + fi + grdctl_system rdp enable grdctl_system rdp set-tls-cert "$TLS_DIR/rdp-tls.crt" grdctl_system rdp set-tls-key "$TLS_DIR/rdp-tls.key" From b4ff21e1ce8880885b21486da8875f7ababc20e9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:14:53 +0000 Subject: [PATCH 072/140] Initial plan From 5b3a6c4be8cf9b83bfc69c3979fd2ebfd0421918 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:24:16 +0000 Subject: [PATCH 073/140] feat: server-side loopback overrides and Hub diagnostic fixes - Add modules/core/local-domain-loopback.nix: systemd service and activation script that write configured service domains to a Sovran-managed block in /etc/hosts (127.0.0.1 / ::1) so requests originating on this computer reach Caddy without NAT loopback. - Import local-domain-loopback.nix in modules/modules.nix. - server.py: add _validate_domain_value, _is_loopback_address, _resolve_all_addresses, _trigger_hosts_update helpers. - server.py: update _check_domain_reachable to use --resolve so reachability is checked locally via Caddy, not via NAT loopback. - server.py: update _evaluate_domain_checklist, api_services inline DNS check, and api_domains_check to recognise loopback resolution as an intentional local override rather than a DNS mismatch. - server.py: call _trigger_hosts_update from api_domains_set after saving a service domain so the /etc/hosts entry is applied immediately. - Add app/tests/test_loopback_diagnostics.py with 47 tests covering domain validation, loopback detection, diagnostic checklist logic, composite health, and api_domains_check." --- app/sovran_systemsos_web/server.py | 226 ++++++++++---- app/tests/test_loopback_diagnostics.py | 399 +++++++++++++++++++++++++ modules/core/local-domain-loopback.nix | 143 +++++++++ modules/modules.nix | 1 + 4 files changed, 705 insertions(+), 64 deletions(-) create mode 100644 app/tests/test_loopback_diagnostics.py create mode 100644 modules/core/local-domain-loopback.nix diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 8ba366d..d6660f9 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -8,6 +8,7 @@ import contextlib import glob import hashlib import hmac +import ipaddress import json import logging import os @@ -80,6 +81,15 @@ DOMAINS_DIR = "/var/lib/domains" NOSTR_NPUB_FILE = "/var/lib/secrets/nostr_npub" NJALLA_SCRIPT = "/var/lib/njalla/njalla.sh" +# Systemd service that rewrites the Sovran-managed /etc/hosts loopback block +SOVRAN_HOSTS_SERVICE = "sovran-hosts-update.service" + +# Domain keys that produce a public HTTPS virtual host via Caddy +_SERVICE_DOMAIN_KEYS = frozenset([ + "matrix", "wordpress", "nextcloud", "btcpayserver", + "vaultwarden", "haven", "element-calling", +]) + INTERNAL_IP_FILE = "/var/lib/secrets/internal-ip" ZEUS_CONNECT_FILE = "/var/lib/secrets/zeus-connect-url" @@ -964,18 +974,87 @@ def _check_port_status( return "closed" + +# Regex for validating domain values written into /etc/hosts. Rejects anything +# containing whitespace, newlines, or characters that could escape a hosts entry. +_SAFE_DOMAIN_RE = re.compile( + r'^(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$' +) + + +def _validate_domain_value(domain: str) -> bool: + """Return True if *domain* is a valid hostname safe to write into /etc/hosts. + + Rejects values containing whitespace, newlines, or other characters that + could inject additional entries or corrupt the hosts file. + """ + if not domain or len(domain) > 253: + return False + # Guard against newline / whitespace injection before regex check. + if any(c in domain for c in ('\n', '\r', ' ', '\t', '#')): + return False + return bool(_SAFE_DOMAIN_RE.match(domain)) + + +def _is_loopback_address(ip: str) -> bool: + """Return True if *ip* is a loopback address (127.0.0.0/8 or ::1).""" + try: + return ipaddress.ip_address(ip).is_loopback + except ValueError: + return False + + +def _resolve_all_addresses(domain: str) -> list[str]: + """Return all IP addresses that *domain* resolves to, or an empty list.""" + try: + results = socket.getaddrinfo(domain, None) + seen: list[str] = [] + for r in results: + addr = r[4][0] + if addr not in seen: + seen.append(addr) + return seen + except Exception: + return [] + + +def _trigger_hosts_update() -> None: + """Start the sovran-hosts-update systemd service (best-effort, no-op if unavailable).""" + try: + subprocess.run( + ["systemctl", "start", SOVRAN_HOSTS_SERVICE], + timeout=30, + check=False, + capture_output=True, + ) + except Exception: + pass + + def _check_domain_reachable(domain: str) -> dict: - """Curl the domain to verify end-to-end HTTPS reachability.""" + """Check HTTPS reachability for *domain* via local Caddy (loopback). + + Using ``--resolve`` ensures the request reaches Caddy on this computer + without depending on router NAT loopback or the public DNS result. + A successful local check is sufficient to confirm that Caddy and the + virtual-host configuration are working correctly. + """ try: result = subprocess.run( - ["curl", "-sS", "-o", "/dev/null", "-w", "%{http_code}", "--max-time", "10", f"https://{domain}"], + [ + "curl", "-sS", "-o", "/dev/null", "-w", "%{http_code}", + "--max-time", "10", + "--resolve", f"{domain}:443:127.0.0.1", + "--resolve", f"{domain}:80:127.0.0.1", + f"https://{domain}", + ], capture_output=True, text=True, timeout=15, ) status_code = result.stdout.strip() if status_code and status_code.isdigit() and int(status_code) > 0: - return {"reachable": True, "status_code": int(status_code)} + return {"reachable": True, "status_code": int(status_code), "via_loopback": True} return {"reachable": False, "error": result.stderr.strip() or "No response"} except subprocess.TimeoutExpired: return {"reachable": False, "error": "timeout"} @@ -984,25 +1063,28 @@ def _check_domain_reachable(domain: str) -> dict: def _check_domain_health_fast(domain: str | None, external_ip: str) -> bool: - """Fast domain issue check for tile health (no curl/subprocess calls).""" + """Fast domain issue check for tile health (no curl/subprocess calls). + + Returns ``True`` when a domain issue is detected that warrants + ``needs_attention``, ``False`` otherwise. + Loopback resolution is treated as an intentional server-local override, + not a DNS mismatch. + """ if not domain: return True - resolved_ip: str | None = None - try: - results = socket.getaddrinfo(domain, None) - if results: - resolved_ip = results[0][4][0] - except socket.gaierror: - resolved_ip = None - except Exception: - resolved_ip = None - - if not resolved_ip: + addrs = _resolve_all_addresses(domain) + if not addrs: return True + + # If every resolved address is loopback the intentional /etc/hosts + # override is in place — this is healthy, not a mismatch. + if all(_is_loopback_address(a) for a in addrs): + return False + if external_ip == "unavailable": return False - return resolved_ip != external_ip + return not any(a == external_ip for a in addrs) def _is_domain_reachable_cached(domain: str) -> bool | None: @@ -1070,15 +1152,8 @@ def _evaluate_domain_checklist( "detail": domain, }) - resolved_ip: str | None = None - try: - results = socket.getaddrinfo(domain, None) - if results: - resolved_ip = results[0][4][0] - except socket.gaierror: - resolved_ip = None - except Exception: - resolved_ip = None + addrs = _resolve_all_addresses(domain) + resolved_ip: str | None = addrs[0] if addrs else None if not resolved_ip: domain_status = { @@ -1105,7 +1180,29 @@ def _evaluate_domain_checklist( "has_issues": True, } - if external_ip == "unavailable": + # Detect intentional server-local loopback override from /etc/hosts. + # When all addresses are loopback the public DNS is not checked via the + # system resolver (which would always return the override). We proceed + # to the reachability check so Caddy health can still be verified. + loopback_override = all(_is_loopback_address(a) for a in addrs) + + if loopback_override: + domain_status = { + "status": "local_override", + "resolved_ip": resolved_ip, + "expected_ip": external_ip, + } + steps.append({ + "step": 2, + "label": "DNS / Local Override", + "status": "ok", + "detail": ( + "Server-local loopback override is active — this computer routes the domain " + "directly to Caddy. Public DNS verification is skipped on this computer; " + "confirm your DNS provider points the domain to your external IP separately." + ), + }) + elif external_ip == "unavailable": domain_status = { "status": "error", "resolved_ip": resolved_ip, @@ -1117,7 +1214,7 @@ def _evaluate_domain_checklist( "status": "warning", "detail": f"Resolves to {resolved_ip} (external IP unavailable for comparison)", }) - elif resolved_ip != external_ip: + elif not any(a == external_ip for a in addrs): domain_status = { "status": "dns_mismatch", "resolved_ip": resolved_ip, @@ -2749,19 +2846,17 @@ async def api_services(): break has_domain_issues = False if needs_domain and domain and enabled: + addrs = _resolve_all_addresses(domain) dns_ok = True - try: - results = socket.getaddrinfo(domain, None) - if results: - resolved_ip = results[0][4][0] - if ( - _cached_external_ip != "unavailable" - and resolved_ip != _cached_external_ip - ): - dns_ok = False - else: - dns_ok = False - except (socket.gaierror, Exception): + if not addrs: + dns_ok = False + elif all(_is_loopback_address(a) for a in addrs): + # Intentional server-local /etc/hosts override — not a mismatch. + dns_ok = True + elif ( + _cached_external_ip != "unavailable" + and not any(a == _cached_external_ip for a in addrs) + ): dns_ok = False if not dns_ok: @@ -3886,6 +3981,12 @@ async def api_domains_set(req: DomainSetRequest): except Exception: pass + # Regenerate the server-local /etc/hosts loopback entries so the newly + # saved domain is immediately reachable on this computer without NAT + # loopback support on the router. + if req.domain_name in _SERVICE_DOMAIN_KEYS: + _trigger_hosts_update() + return {"ok": True} @@ -3933,38 +4034,35 @@ async def api_domains_check(req: DomainCheckRequest): external_ip = _cached_external_ip def check_domain(domain: str) -> dict: - try: - results = socket.getaddrinfo(domain, None) - if not results: - return { - "domain": domain, "status": "unresolvable", - "resolved_ip": None, "expected_ip": external_ip, - } - resolved_ip = results[0][4][0] - if external_ip == "unavailable": - return { - "domain": domain, "status": "error", - "resolved_ip": resolved_ip, "expected_ip": external_ip, - } - if resolved_ip == external_ip: - return { - "domain": domain, "status": "connected", - "resolved_ip": resolved_ip, "expected_ip": external_ip, - } - return { - "domain": domain, "status": "dns_mismatch", - "resolved_ip": resolved_ip, "expected_ip": external_ip, - } - except socket.gaierror: + addrs = _resolve_all_addresses(domain) + if not addrs: return { "domain": domain, "status": "unresolvable", "resolved_ip": None, "expected_ip": external_ip, } - except Exception: + resolved_ip = addrs[0] + # Server-local /etc/hosts loopback override — report as such rather + # than as a DNS mismatch. Public DNS cannot be verified from this + # computer when the override is active. + if all(_is_loopback_address(a) for a in addrs): + return { + "domain": domain, "status": "local_override", + "resolved_ip": resolved_ip, "expected_ip": external_ip, + } + if external_ip == "unavailable": return { "domain": domain, "status": "error", - "resolved_ip": None, "expected_ip": external_ip, + "resolved_ip": resolved_ip, "expected_ip": external_ip, } + if any(a == external_ip for a in addrs): + return { + "domain": domain, "status": "connected", + "resolved_ip": resolved_ip, "expected_ip": external_ip, + } + return { + "domain": domain, "status": "dns_mismatch", + "resolved_ip": resolved_ip, "expected_ip": external_ip, + } check_results = await asyncio.gather(*[ loop.run_in_executor(None, check_domain, d) for d in req.domains diff --git a/app/tests/test_loopback_diagnostics.py b/app/tests/test_loopback_diagnostics.py new file mode 100644 index 0000000..a229d90 --- /dev/null +++ b/app/tests/test_loopback_diagnostics.py @@ -0,0 +1,399 @@ +"""Tests for server-local loopback diagnostics and domain validation. + +Covers: +- Domain value validation and injection prevention. +- Loopback address detection (IPv4 and IPv6). +- _resolve_all_addresses returning multiple addresses. +- _check_domain_health_fast with loopback resolution. +- _evaluate_domain_checklist with loopback override — no false dns_mismatch. +- _evaluate_domain_checklist with genuine DNS mismatch — still reports error. +- api_services health stays "healthy" when domain resolves to loopback. +- api_services health stays "needs_attention" when DNS is genuinely wrong. +- api_domains_check returns "local_override" for loopback-resolved domains. +""" + +import unittest +from pathlib import Path +from unittest.mock import MagicMock, mock_open, patch +import sys +import types + +sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + + +# --------------------------------------------------------------------------- +# Minimal stubs so server.py can be imported without the full FastAPI stack. +# --------------------------------------------------------------------------- + +def _install_web_stubs(): + if "fastapi" in sys.modules: + return + + class _HTTPException(Exception): + def __init__(self, status_code=None, detail=None): + super().__init__(detail) + self.status_code = status_code + self.detail = detail + + class _FastAPI: + def __init__(self, *args, **kwargs): + pass + + def mount(self, *args, **kwargs): + return None + + def add_middleware(self, *args, **kwargs): + return None + + def __getattr__(self, _name): + def _decorator_factory(*args, **kwargs): + def _decorator(func): + return func + return _decorator + return _decorator_factory + + class _BaseModel: + pass + + class _StaticFiles: + def __init__(self, *args, **kwargs): + pass + + class _Jinja2Templates: + def __init__(self, *args, **kwargs): + pass + + class _BaseHTTPMiddleware: + pass + + fastapi_module = types.ModuleType("fastapi") + fastapi_module.FastAPI = _FastAPI + fastapi_module.HTTPException = _HTTPException + sys.modules["fastapi"] = fastapi_module + + responses_module = types.ModuleType("fastapi.responses") + responses_module.HTMLResponse = object + responses_module.JSONResponse = object + responses_module.RedirectResponse = object + sys.modules["fastapi.responses"] = responses_module + + staticfiles_module = types.ModuleType("fastapi.staticfiles") + staticfiles_module.StaticFiles = _StaticFiles + sys.modules["fastapi.staticfiles"] = staticfiles_module + + templating_module = types.ModuleType("fastapi.templating") + templating_module.Jinja2Templates = _Jinja2Templates + sys.modules["fastapi.templating"] = templating_module + + requests_module = types.ModuleType("fastapi.requests") + requests_module.Request = object + sys.modules["fastapi.requests"] = requests_module + + pydantic_module = types.ModuleType("pydantic") + pydantic_module.BaseModel = _BaseModel + sys.modules["pydantic"] = pydantic_module + + starlette_base_module = types.ModuleType("starlette.middleware.base") + starlette_base_module.BaseHTTPMiddleware = _BaseHTTPMiddleware + sys.modules["starlette.middleware.base"] = starlette_base_module + + starlette_middleware_module = types.ModuleType("starlette.middleware") + starlette_middleware_module.base = starlette_base_module + sys.modules["starlette.middleware"] = starlette_middleware_module + + starlette_module = types.ModuleType("starlette") + starlette_module.middleware = starlette_middleware_module + sys.modules["starlette"] = starlette_module + + +_install_web_stubs() +from sovran_systemsos_web import server # noqa: E402 + + +# =========================================================================== +# Domain value validation +# =========================================================================== + +class TestValidateDomainValue(unittest.TestCase): + """_validate_domain_value must reject anything that could corrupt /etc/hosts.""" + + def _v(self, value: str) -> bool: + return server._validate_domain_value(value) + + # -- Valid values -------------------------------------------------------- + + def test_simple_domain_valid(self): + self.assertTrue(self._v("cloud.example.com")) + + def test_subdomain_valid(self): + self.assertTrue(self._v("matrix.home.example.org")) + + def test_single_label_with_tld_valid(self): + self.assertTrue(self._v("example.com")) + + def test_hyphen_in_domain_valid(self): + self.assertTrue(self._v("my-nextcloud.example.com")) + + # -- Injection / malformed values ---------------------------------------- + + def test_empty_string_invalid(self): + self.assertFalse(self._v("")) + + def test_newline_injection_invalid(self): + self.assertFalse(self._v("evil.com\n127.0.0.1 other.host")) + + def test_carriage_return_injection_invalid(self): + self.assertFalse(self._v("evil.com\r127.0.0.1 other.host")) + + def test_space_injection_invalid(self): + self.assertFalse(self._v("evil.com 127.0.0.1")) + + def test_hash_comment_injection_invalid(self): + self.assertFalse(self._v("evil.com# comment")) + + def test_bare_hostname_no_dot_invalid(self): + self.assertFalse(self._v("localhost")) + + def test_bare_ip_invalid(self): + self.assertFalse(self._v("192.168.1.1")) + + def test_too_long_invalid(self): + self.assertFalse(self._v("a" * 254 + ".com")) + + def test_leading_dot_invalid(self): + self.assertFalse(self._v(".example.com")) + + def test_trailing_dot_invalid(self): + self.assertFalse(self._v("example.com.")) + + +# =========================================================================== +# Loopback address detection +# =========================================================================== + +class TestIsLoopbackAddress(unittest.TestCase): + + def test_ipv4_loopback(self): + self.assertTrue(server._is_loopback_address("127.0.0.1")) + + def test_ipv4_loopback_other(self): + self.assertTrue(server._is_loopback_address("127.0.0.2")) + + def test_ipv4_loopback_high(self): + self.assertTrue(server._is_loopback_address("127.255.255.255")) + + def test_ipv6_loopback(self): + self.assertTrue(server._is_loopback_address("::1")) + + def test_public_ipv4_not_loopback(self): + self.assertFalse(server._is_loopback_address("203.0.113.10")) + + def test_private_ipv4_not_loopback(self): + self.assertFalse(server._is_loopback_address("192.168.1.50")) + + def test_ipv6_public_not_loopback(self): + self.assertFalse(server._is_loopback_address("2001:db8::1")) + + def test_invalid_string_not_loopback(self): + self.assertFalse(server._is_loopback_address("not-an-ip")) + + +# =========================================================================== +# _check_domain_health_fast +# =========================================================================== + +class TestCheckDomainHealthFast(unittest.TestCase): + """_check_domain_health_fast returns True when there is an issue, + False when everything looks fine.""" + + def _fast(self, domain, external_ip, resolved_addrs): + with patch.object(server, "_resolve_all_addresses", return_value=resolved_addrs): + return server._check_domain_health_fast(domain, external_ip) + + def test_no_domain_no_issue(self): + # None/empty domain: the fast check reports True (handled by checklist). + result = server._check_domain_health_fast(None, "203.0.113.10") + self.assertTrue(result) + + def test_empty_domain_no_issue(self): + result = server._check_domain_health_fast("", "203.0.113.10") + self.assertTrue(result) + + def test_loopback_ipv4_no_issue(self): + """Loopback override must not be flagged as a DNS mismatch.""" + result = self._fast("cloud.example.com", "203.0.113.10", ["127.0.0.1"]) + self.assertFalse(result) + + def test_loopback_ipv6_no_issue(self): + result = self._fast("cloud.example.com", "203.0.113.10", ["::1"]) + self.assertFalse(result) + + def test_matches_external_ip_no_issue(self): + result = self._fast("cloud.example.com", "203.0.113.10", ["203.0.113.10"]) + self.assertFalse(result) + + def test_mismatch_is_an_issue(self): + result = self._fast("cloud.example.com", "203.0.113.10", ["198.51.100.1"]) + self.assertTrue(result) + + def test_unavailable_external_ip_no_issue(self): + result = self._fast("cloud.example.com", "unavailable", ["198.51.100.1"]) + self.assertFalse(result) + + def test_multiple_addresses_one_matches_no_issue(self): + """If any resolved address matches external_ip the check should pass.""" + result = self._fast( + "cloud.example.com", "203.0.113.10", + ["198.51.100.1", "203.0.113.10"], + ) + self.assertFalse(result) + + +# =========================================================================== +# _evaluate_domain_checklist — loopback override path +# =========================================================================== + +class TestEvaluateDomainChecklistLoopback(unittest.TestCase): + + def _eval(self, domain, external_ip, resolved_addrs, reachable_result=None): + with ( + patch.object(server, "_resolve_all_addresses", return_value=resolved_addrs), + patch.object(server, "_check_domain_reachable", + return_value=reachable_result or {"reachable": True, "status_code": 200}), + ): + return server._evaluate_domain_checklist(domain, external_ip) + + def test_loopback_dns_step_is_ok_not_error(self): + result = self._eval("cloud.example.com", "203.0.113.10", ["127.0.0.1"]) + dns_step = next(s for s in result["domain_check_steps"] if s["step"] == 2) + self.assertEqual(dns_step["status"], "ok") + self.assertNotIn("mismatch", dns_step.get("detail", "").lower()) + + def test_loopback_domain_status_is_local_override(self): + result = self._eval("cloud.example.com", "203.0.113.10", ["127.0.0.1"]) + self.assertEqual(result["domain_status"]["status"], "local_override") + + def test_loopback_has_no_issues_when_reachable(self): + result = self._eval( + "cloud.example.com", "203.0.113.10", ["127.0.0.1"], + reachable_result={"reachable": True, "status_code": 200}, + ) + self.assertFalse(result["has_issues"]) + + def test_loopback_has_issues_when_caddy_unreachable(self): + """A loopback override with Caddy down should still report an issue.""" + result = self._eval( + "cloud.example.com", "203.0.113.10", ["127.0.0.1"], + reachable_result={"reachable": False, "error": "connection refused"}, + ) + self.assertTrue(result["has_issues"]) + + def test_ipv6_loopback_no_issue(self): + result = self._eval("cloud.example.com", "203.0.113.10", ["::1"]) + self.assertEqual(result["domain_status"]["status"], "local_override") + self.assertFalse(result["has_issues"]) + + def test_genuine_mismatch_still_reports_error(self): + result = self._eval("cloud.example.com", "203.0.113.10", ["198.51.100.1"]) + self.assertEqual(result["domain_status"]["status"], "dns_mismatch") + self.assertTrue(result["has_issues"]) + + def test_correct_public_dns_still_reports_ok(self): + result = self._eval("cloud.example.com", "203.0.113.10", ["203.0.113.10"]) + self.assertEqual(result["domain_status"]["status"], "connected") + self.assertFalse(result["has_issues"]) + + def test_no_domain_has_issues(self): + result = self._eval(None, "203.0.113.10", []) + self.assertTrue(result["has_issues"]) + + +# =========================================================================== +# api_services — composite health with loopback +# =========================================================================== + +class TestApiServicesLoopbackHealth(unittest.IsolatedAsyncioTestCase): + + async def _get_health(self, resolved_addrs, cached_reachable): + """Return the health value for a single domain-requiring service.""" + service_cfg = { + "services": [ + {"unit": "caddy.service", "icon": "nextcloud", "enabled": True, "type": "system"} + ] + } + with ( + patch.object(server, "load_config", return_value=service_cfg), + patch.object(server, "_read_hub_overrides", return_value=({}, None, None)), + patch.object(server.sysctl, "is_active", return_value="active"), + patch.dict(server.SERVICE_DOMAIN_MAP, {"caddy.service": "nextcloud"}, clear=False), + patch("builtins.open", mock_open(read_data="cloud.example.com\n")), + patch.object(server, "_resolve_all_addresses", return_value=resolved_addrs), + patch.object(server, "_is_domain_reachable_cached", return_value=cached_reachable), + patch.object(server, "_get_listening_ports", + return_value={"tcp": {80, 443}, "udp": set()}), + patch.object(server, "_get_firewall_allowed_ports", + return_value={"tcp": set(), "udp": set()}), + patch.object(server, "_cached_external_ip", "203.0.113.10"), + ): + results = await server.api_services() + + return results[0]["health"] + + async def test_loopback_and_reachable_is_healthy(self): + """Loopback override + Caddy reachable → healthy, not needs_attention.""" + health = await self._get_health(["127.0.0.1"], cached_reachable=True) + self.assertEqual(health, "healthy") + + async def test_loopback_and_caddy_down_is_needs_attention(self): + """Loopback override + Caddy unreachable → needs_attention (genuine issue).""" + health = await self._get_health(["127.0.0.1"], cached_reachable=False) + self.assertEqual(health, "needs_attention") + + async def test_correct_dns_and_reachable_is_healthy(self): + health = await self._get_health(["203.0.113.10"], cached_reachable=True) + self.assertEqual(health, "healthy") + + async def test_dns_mismatch_is_needs_attention(self): + health = await self._get_health(["198.51.100.1"], cached_reachable=True) + self.assertEqual(health, "needs_attention") + + +# =========================================================================== +# api_domains_check — loopback detection +# =========================================================================== + +class TestApiDomainsCheckLoopback(unittest.IsolatedAsyncioTestCase): + + async def _check(self, resolved_addrs, external_ip="203.0.113.10"): + with ( + patch.object(server, "_resolve_all_addresses", return_value=resolved_addrs), + patch.object(server, "_cached_external_ip", external_ip), + ): + result = await server.api_domains_check( + MagicMock(domains=["cloud.example.com"]) + ) + return result["domains"][0] + + async def test_loopback_ipv4_returns_local_override(self): + result = await self._check(["127.0.0.1"]) + self.assertEqual(result["status"], "local_override") + + async def test_loopback_ipv6_returns_local_override(self): + result = await self._check(["::1"]) + self.assertEqual(result["status"], "local_override") + + async def test_correct_dns_returns_connected(self): + result = await self._check(["203.0.113.10"]) + self.assertEqual(result["status"], "connected") + + async def test_mismatch_returns_dns_mismatch(self): + result = await self._check(["198.51.100.1"]) + self.assertEqual(result["status"], "dns_mismatch") + + async def test_no_resolution_returns_unresolvable(self): + result = await self._check([]) + self.assertEqual(result["status"], "unresolvable") + + +if __name__ == "__main__": + unittest.main() diff --git a/modules/core/local-domain-loopback.nix b/modules/core/local-domain-loopback.nix new file mode 100644 index 0000000..4ac94e6 --- /dev/null +++ b/modules/core/local-domain-loopback.nix @@ -0,0 +1,143 @@ +{ config, pkgs, lib, ... }: + +# ── Server-local domain loopback overrides ──────────────────────────────────── +# +# Some routers (especially newer ISP-provided devices) do not support NAT +# loopback (hairpin NAT). When a request originates on this computer and +# targets a public domain name that resolves to the router's WAN address, the +# router may refuse to loop the connection back in — causing Nextcloud, WordPress +# background jobs, and other server-side callbacks to fail even when the service +# is fully operational from the internet. +# +# This module installs a one-shot systemd service, +# ``sovran-hosts-update.service``, that reads the configured service domains +# from ``/var/lib/domains/`` at boot (and whenever triggered by the Hub after a +# domain is saved) and writes ``127.0.0.1`` entries for them into a dedicated +# Sovran-managed block in ``/etc/hosts``. +# +# With those entries in place: +# • Requests originating on this computer resolve the public domain name to +# 127.0.0.1, reach Caddy directly, and never touch the router. +# • Caddy still receives the correct public hostname via TLS SNI so virtual- +# host routing and certificate validation continue to work. +# • The Sovran Hub can verify Caddy reachability locally without needing NAT +# loopback. +# +# Limitation: this does not help other devices on your home network (phones, +# laptops). Those devices resolve domains via the router's DNS and still depend +# on NAT loopback (or require manual router DNS overrides). For now, only +# server-originated requests benefit from this override. +# +# On NixOS, /etc/hosts is normally a symlink into the Nix store and is +# regenerated by the system activation script. The ``system.activationScripts`` +# hook below converts it to a writable file each time the system is activated +# (i.e. after every ``nixos-rebuild switch``) and then injects the Sovran block. +# The same script is also run by the ``sovran-hosts-update.service`` unit so +# that the Hub can trigger it immediately after saving a domain without +# requiring a full rebuild. + +{ + # ── Helper script (stored in the Nix store, never reads /var/lib at eval) ── + + environment.systemPackages = [ pkgs.coreutils ]; + + environment.etc."sovran-hosts-update.sh" = { + mode = "0755"; + text = '' + #!/bin/sh + # Regenerate the Sovran-managed loopback block in /etc/hosts. + # Safe to run multiple times — idempotent. + set -euf + + DOMAINS_DIR="/var/lib/domains" + HOSTS_FILE="/etc/hosts" + BEGIN_MARKER="# Sovran managed begin — server-local loopback overrides" + END_MARKER="# Sovran managed end" + + # ── Step 1: ensure /etc/hosts is a regular writable file ────────────── + # On NixOS /etc/hosts starts as a symlink to the Nix store. We replace + # it with a copy so we can append our block without touching the store. + if [ -L "$HOSTS_FILE" ]; then + TARGET=$(readlink -f "$HOSTS_FILE") + cp --no-preserve=all "$TARGET" "$HOSTS_FILE.sovran-tmp" + mv "$HOSTS_FILE.sovran-tmp" "$HOSTS_FILE" + chmod 644 "$HOSTS_FILE" + fi + + # ── Step 2: remove any existing Sovran block ────────────────────────── + # Use a temp file so the operation is atomic. + TMP=$(mktemp "$HOSTS_FILE.XXXXXX") + trap 'rm -f "$TMP"' EXIT + awk " + /^$BEGIN_MARKER\$/ { skip=1; next } + /^$END_MARKER\$/ { skip=0; next } + !skip + " "$HOSTS_FILE" > "$TMP" + + # ── Step 3: collect valid configured service domains ────────────────── + ENTRIES="" + for KEY in matrix wordpress nextcloud btcpayserver vaultwarden haven element-calling; do + FILE="$DOMAINS_DIR/$KEY" + [ -f "$FILE" ] || continue + # Read the domain value (strip all whitespace, limit to 253 chars) + DOMAIN=$(tr -d '[:space:]' < "$FILE" | head -c 253) + [ -z "$DOMAIN" ] && continue + # Validate: must match a reasonable hostname pattern + if ! printf '%s' "$DOMAIN" | grep -qE \ + '^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$'; then + echo "sovran-hosts-update: skipping invalid domain value for $KEY: $DOMAIN" >&2 + continue + fi + ENTRIES="$ENTRIES +127.0.0.1 $DOMAIN +::1 $DOMAIN" + done + + # ── Step 4: append the Sovran block if there are any entries ────────── + if [ -n "$ENTRIES" ]; then + printf '\n%s\n' "$BEGIN_MARKER" >> "$TMP" + printf '%s\n' "# These entries route configured service domains to local Caddy." >> "$TMP" + printf '%s\n' "# They are managed automatically — do not edit this block." >> "$TMP" + printf '%s\n' "$ENTRIES" >> "$TMP" + printf '%s\n' "$END_MARKER" >> "$TMP" + fi + + # ── Step 5: atomically replace /etc/hosts ───────────────────────────── + mv "$TMP" "$HOSTS_FILE" + chmod 644 "$HOSTS_FILE" + ''; + }; + + # ── Systemd service ──────────────────────────────────────────────────────── + + systemd.services.sovran-hosts-update = { + description = "Update /etc/hosts with Sovran server-local loopback overrides"; + documentation = [ "https://github.com/naturallaw777/sovran-systems" ]; + + # Run before Caddy so loopback entries are ready when it starts. + before = [ + "caddy.service" + "network-online.target" + ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = "/etc/sovran-hosts-update.sh"; + }; + }; + + # ── Activation script (runs after every nixos-rebuild switch) ───────────── + # This ensures the loopback block survives rebuilds that restore the /etc/hosts + # symlink. The "users" and "etc" scripts must complete first. + + system.activationScripts.sovranDomainLoopback = { + text = '' + if [ -x /etc/sovran-hosts-update.sh ] && [ -d /var/lib/domains ]; then + /etc/sovran-hosts-update.sh || true + fi + ''; + deps = [ "etc" "users" ]; + }; +} diff --git a/modules/modules.nix b/modules/modules.nix index aecd688..f348a55 100755 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -16,6 +16,7 @@ ./core/remote-deploy.nix ./core/no-sleep.nix ./core/cpu-performance.nix + ./core/local-domain-loopback.nix # ── Always on (no flag) ─────────────────────────────────── ./php.nix From dcd699d31e8a62155f5b2020e728a8b5f2450c75 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 15:26:43 +0000 Subject: [PATCH 074/140] fix: address code review feedback - Use set -eu (not set -euf) in sovran-hosts-update.sh - Add sync note for domain validation regex between shell and Python - Rename `seen` to `unique_addresses` in _resolve_all_addresses - Improve loopback override UI message with external DNS check guidance - Add docstring note about first-address display in _resolve_all_addresses" --- app/sovran_systemsos_web/server.py | 23 ++++++++++++++++------- modules/core/local-domain-loopback.nix | 6 ++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index d6660f9..76674f3 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -977,6 +977,8 @@ def _check_port_status( # Regex for validating domain values written into /etc/hosts. Rejects anything # containing whitespace, newlines, or characters that could escape a hosts entry. +# NOTE: The equivalent pattern in modules/core/local-domain-loopback.nix (shell +# grep -E) must be kept in sync with this Python regex. _SAFE_DOMAIN_RE = re.compile( r'^(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$' ) @@ -1005,15 +1007,20 @@ def _is_loopback_address(ip: str) -> bool: def _resolve_all_addresses(domain: str) -> list[str]: - """Return all IP addresses that *domain* resolves to, or an empty list.""" + """Return all unique IP addresses that *domain* resolves to, or an empty list. + + The first element is the address that the system resolver would normally + use for a connection. All elements are checked when determining whether + any address matches the expected public IP or is a loopback address. + """ try: results = socket.getaddrinfo(domain, None) - seen: list[str] = [] + unique_addresses: list[str] = [] for r in results: addr = r[4][0] - if addr not in seen: - seen.append(addr) - return seen + if addr not in unique_addresses: + unique_addresses.append(addr) + return unique_addresses except Exception: return [] @@ -1198,8 +1205,10 @@ def _evaluate_domain_checklist( "status": "ok", "detail": ( "Server-local loopback override is active — this computer routes the domain " - "directly to Caddy. Public DNS verification is skipped on this computer; " - "confirm your DNS provider points the domain to your external IP separately." + "directly to Caddy without going through the router. " + "Public DNS cannot be verified from this computer while the override is in place. " + "To check your public DNS from outside, use a tool such as " + "https://dnschecker.org or run: dig @1.1.1.1 " + domain ), }) elif external_ip == "unavailable": diff --git a/modules/core/local-domain-loopback.nix b/modules/core/local-domain-loopback.nix index 4ac94e6..ffe8292 100644 --- a/modules/core/local-domain-loopback.nix +++ b/modules/core/local-domain-loopback.nix @@ -47,7 +47,7 @@ #!/bin/sh # Regenerate the Sovran-managed loopback block in /etc/hosts. # Safe to run multiple times — idempotent. - set -euf + set -eu DOMAINS_DIR="/var/lib/domains" HOSTS_FILE="/etc/hosts" @@ -75,6 +75,8 @@ " "$HOSTS_FILE" > "$TMP" # ── Step 3: collect valid configured service domains ────────────────── + # NOTE: The hostname validation regex below must stay in sync with + # _SAFE_DOMAIN_RE in app/sovran_systemsos_web/server.py. ENTRIES="" for KEY in matrix wordpress nextcloud btcpayserver vaultwarden haven element-calling; do FILE="$DOMAINS_DIR/$KEY" @@ -82,7 +84,7 @@ # Read the domain value (strip all whitespace, limit to 253 chars) DOMAIN=$(tr -d '[:space:]' < "$FILE" | head -c 253) [ -z "$DOMAIN" ] && continue - # Validate: must match a reasonable hostname pattern + # Validate: must match a reasonable hostname pattern (no injection) if ! printf '%s' "$DOMAIN" | grep -qE \ '^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$'; then echo "sovran-hosts-update: skipping invalid domain value for $KEY: $DOMAIN" >&2 From 2bdedf80d717563a0cece8f9f5bd5ab87a389f66 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 16:41:20 +0000 Subject: [PATCH 075/140] Initial plan From 8869f16fec86050bf12e3b2508ed9fd6686f3a4c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 16:50:01 +0000 Subject: [PATCH 076/140] feat: implement consistent restart UX across Sovran_SystemsOS Hub - Add Restart Entire System sidebar action with amber treatment and divider - Add shared restart confirmation dialog with conflict detection - Update reboot overlay: new title, body copy, status progression, error card - Improve doReboot(): failure handling, aria-live status messages - Standardize 'restart required' / 'Restart Entire System' terminology - Update security.js reboot flow to use shared doReboot() - Update installer.py button label - Add .btn-restart-amber, .restart-conflict-box, .sidebar-restart-btn CSS --- .../static/css/layout.css | 15 +++++ .../static/css/modals.css | 42 ++++++++++++++ app/sovran_systemsos_web/static/js/events.js | 50 +++++++++++++++++ app/sovran_systemsos_web/static/js/rebuild.js | 2 +- .../static/js/security.js | 19 +++---- app/sovran_systemsos_web/static/js/state.js | 9 +++ app/sovran_systemsos_web/static/js/tiles.js | 17 ++++++ app/sovran_systemsos_web/static/js/update.js | 38 ++++++++++++- app/sovran_systemsos_web/templates/index.html | 55 +++++++++++++++---- iso/installer.py | 2 +- 10 files changed, 223 insertions(+), 26 deletions(-) diff --git a/app/sovran_systemsos_web/static/css/layout.css b/app/sovran_systemsos_web/static/css/layout.css index aa90940..446b3fd 100644 --- a/app/sovran_systemsos_web/static/css/layout.css +++ b/app/sovran_systemsos_web/static/css/layout.css @@ -84,6 +84,21 @@ margin: 16px 0; } +/* ── Sidebar restart button (amber/muted treatment) ─────────────── */ + +.sidebar-restart-btn { + border-color: rgba(184, 125, 0, 0.25); +} + +.sidebar-restart-btn:hover { + border-color: #b87d00; + background-color: rgba(184, 125, 0, 0.08); +} + +.sidebar-restart-btn .sidebar-restart-hint { + color: #c98d08; +} + /* ── Upgrade modal ──────────────────────────────────────────────── */ .upgrade-dialog { diff --git a/app/sovran_systemsos_web/static/css/modals.css b/app/sovran_systemsos_web/static/css/modals.css index 5afe44b..c08322a 100644 --- a/app/sovran_systemsos_web/static/css/modals.css +++ b/app/sovran_systemsos_web/static/css/modals.css @@ -102,6 +102,48 @@ button.btn-reboot:hover:not(:disabled) { background-color: #529E7E; } +/* Restart = AMBER (manual restart action) */ +.btn-restart-amber { + background-color: #b87d00; + color: #fff; +} + +.btn-restart-amber:hover:not(:disabled) { + background-color: #9a6800; +} + +/* Restart conflict warning box */ +.restart-conflict-box { + background-color: rgba(180, 100, 0, 0.12); + border-left: 3px solid #c97a00; + border-radius: 6px; + padding: 12px 14px; + margin-bottom: 14px; +} + +.restart-conflict-title { + font-size: 0.88rem; + font-weight: 700; + color: #e69000; + margin: 0 0 6px 0; +} + +.restart-conflict-desc { + font-size: 0.83rem; + color: var(--text-secondary); + line-height: 1.5; + margin: 0; +} + +/* Reboot error card actions row */ +.reboot-error-actions { + display: flex; + gap: 12px; + justify-content: center; + flex-wrap: wrap; + margin-top: 20px; +} + .btn-save { background-color: var(--yellow); color: #0A1A10; diff --git a/app/sovran_systemsos_web/static/js/events.js b/app/sovran_systemsos_web/static/js/events.js index ae413dd..67923ce 100644 --- a/app/sovran_systemsos_web/static/js/events.js +++ b/app/sovran_systemsos_web/static/js/events.js @@ -44,6 +44,25 @@ if ($upgradeCloseBtn) $upgradeCloseBtn.addEventListener("click", closeUpgradeMod if ($upgradeCancelBtn) $upgradeCancelBtn.addEventListener("click", closeUpgradeModal); if ($upgradeModal) $upgradeModal.addEventListener("click", function(e) { if (e.target === $upgradeModal) closeUpgradeModal(); }); +// Restart confirm dialog +if ($restartConfirmCancel) $restartConfirmCancel.addEventListener("click", closeRestartConfirmDialog); +if ($restartConfirmModal) $restartConfirmModal.addEventListener("click", function(e) { if (e.target === $restartConfirmModal) closeRestartConfirmDialog(); }); +if ($restartConfirmModal) $restartConfirmModal.addEventListener("keydown", function(e) { if (e.key === "Escape") closeRestartConfirmDialog(); }); +if ($restartConfirmOk) $restartConfirmOk.addEventListener("click", function() { + if ($restartConfirmOk.disabled) return; + $restartConfirmOk.disabled = true; + closeRestartConfirmDialog(); + doReboot(); +}); + +// Reboot error card buttons +var $rebootErrorCloseBtn = document.getElementById("reboot-error-close-btn"); +var $rebootErrorRetryBtn = document.getElementById("reboot-error-retry-btn"); +if ($rebootErrorCloseBtn) $rebootErrorCloseBtn.addEventListener("click", function() { + if ($rebootOverlay) $rebootOverlay.classList.remove("visible"); +}); +if ($rebootErrorRetryBtn) $rebootErrorRetryBtn.addEventListener("click", doReboot); + // ── Upgrade modal functions ─────────────────────────────────────── function openUpgradeModal() { @@ -54,6 +73,37 @@ function closeUpgradeModal() { if ($upgradeModal) $upgradeModal.classList.remove("open"); } +// ── Restart confirm dialog functions ───────────────────────────── + +var _restartDialogOpener = null; + +function openRestartConfirmDialog() { + if (!$restartConfirmModal) return; + _restartDialogOpener = document.activeElement; + + // Detect conflicting operations + var conflicted = !!_updatePollTimer || !!_rebuildPollTimer; + if ($restartConflictBox) $restartConflictBox.style.display = conflicted ? "" : "none"; + if ($restartConfirmOk) $restartConfirmOk.disabled = conflicted; + + $restartConfirmModal.classList.add("open"); + + // Focus Cancel initially for safety + var cancelBtn = document.getElementById("restart-confirm-cancel-btn"); + if (cancelBtn) setTimeout(function() { cancelBtn.focus(); }, 50); +} + +function closeRestartConfirmDialog() { + if ($restartConfirmModal) $restartConfirmModal.classList.remove("open"); + // Re-enable confirm button for next open + if ($restartConfirmOk) $restartConfirmOk.disabled = false; + // Return focus to the element that opened the dialog + if (_restartDialogOpener && _restartDialogOpener.focus) { + try { _restartDialogOpener.focus(); } catch (_) {} + _restartDialogOpener = null; + } +} + async function doUpgradeToServer() { var confirmBtn = $upgradeConfirmBtn; if (confirmBtn) { confirmBtn.disabled = true; confirmBtn.textContent = "Upgrading…"; } diff --git a/app/sovran_systemsos_web/static/js/rebuild.js b/app/sovran_systemsos_web/static/js/rebuild.js index 41b7a03..91189a4 100644 --- a/app/sovran_systemsos_web/static/js/rebuild.js +++ b/app/sovran_systemsos_web/static/js/rebuild.js @@ -69,7 +69,7 @@ function onRebuildDone(result) { // Auto-reload the page after a short delay so tiles and toggles reflect the new state setTimeout(function() { window.location.reload(); }, 1200); } else if (result === "reboot_required") { - if ($rebuildStatus) $rebuildStatus.textContent = "✓ Done — reboot required"; + if ($rebuildStatus) $rebuildStatus.textContent = "✓ Done — restart required"; if ($rebuildReboot) $rebuildReboot.style.display = "inline-flex"; } else { if ($rebuildStatus) $rebuildStatus.textContent = "✗ Something went wrong"; diff --git a/app/sovran_systemsos_web/static/js/security.js b/app/sovran_systemsos_web/static/js/security.js index f17eda1..78fa6b6 100644 --- a/app/sovran_systemsos_web/static/js/security.js +++ b/app/sovran_systemsos_web/static/js/security.js @@ -145,28 +145,25 @@ function openSecurityModal() { if (rebootBtn) { // Keep button disabled for 5 seconds to prevent accidental clicks var countdown = 5; - rebootBtn.textContent = "I have written down my new password \u2014 Reboot now (" + countdown + ")"; + rebootBtn.textContent = "I have written down my new password \u2014 Restart Entire System (" + countdown + ")"; var timer = setInterval(function() { countdown--; if (countdown <= 0) { clearInterval(timer); rebootBtn.disabled = false; - rebootBtn.textContent = "I have written down my new password \u2014 Reboot now"; + rebootBtn.textContent = "I have written down my new password \u2014 Restart Entire System"; } else { - rebootBtn.textContent = "I have written down my new password \u2014 Reboot now (" + countdown + ")"; + rebootBtn.textContent = "I have written down my new password \u2014 Restart Entire System (" + countdown + ")"; } }, 1000); rebootBtn.addEventListener("click", function() { rebootBtn.disabled = true; - rebootBtn.textContent = "Rebooting\u2026"; - if ($rebootOverlay) $rebootOverlay.classList.add("visible"); - _rebootStartTime = Date.now(); - _serverWentDown = false; - setTimeout(waitForServerReboot, REBOOT_INITIAL_DELAY); - var rebootCtrl = new AbortController(); - setTimeout(function() { rebootCtrl.abort(); }, REBOOT_REQUEST_TIMEOUT); - fetch("/api/reboot", { method: "POST", signal: rebootCtrl.signal }).catch(function() {}); + rebootBtn.textContent = "Restarting\u2026"; + // Hide the security reset overlay so the shared reboot overlay is visible + var $secResetOverlay2 = document.getElementById("security-reset-overlay"); + if ($secResetOverlay2) $secResetOverlay2.classList.remove("visible"); + doReboot(); }, { once: true }); } } catch (err) { diff --git a/app/sovran_systemsos_web/static/js/state.js b/app/sovran_systemsos_web/static/js/state.js index 30b4bff..53c57d2 100644 --- a/app/sovran_systemsos_web/static/js/state.js +++ b/app/sovran_systemsos_web/static/js/state.js @@ -49,6 +49,9 @@ const $btnSave = document.getElementById("btn-save-report"); const $btnCloseModal = document.getElementById("btn-close-modal"); const $rebootOverlay = document.getElementById("reboot-overlay"); +const $rebootMainCard = document.getElementById("reboot-main-card"); +const $rebootErrorCard = document.getElementById("reboot-error-card"); +const $rebootSubmessage = document.getElementById("reboot-submessage"); const $credsModal = document.getElementById("creds-modal"); const $credsTitle = document.getElementById("creds-modal-title"); @@ -101,5 +104,11 @@ const $upgradeConfirmBtn = document.getElementById("upgrade-confirm-btn"); const $upgradeCancelBtn = document.getElementById("upgrade-cancel-btn"); const $upgradeCloseBtn = document.getElementById("upgrade-close-btn"); +// Restart confirm dialog +const $restartConfirmModal = document.getElementById("restart-confirm-modal"); +const $restartConfirmOk = document.getElementById("restart-confirm-ok-btn"); +const $restartConfirmCancel = document.getElementById("restart-confirm-cancel-btn"); +const $restartConflictBox = document.getElementById("restart-conflict-box"); + // System status banner // (removed — health is now shown per-tile via the composite health field) \ No newline at end of file diff --git a/app/sovran_systemsos_web/static/js/tiles.js b/app/sovran_systemsos_web/static/js/tiles.js index e07bf04..b2bbfc5 100644 --- a/app/sovran_systemsos_web/static/js/tiles.js +++ b/app/sovran_systemsos_web/static/js/tiles.js @@ -133,6 +133,23 @@ function renderSidebarSupport(supportServices) { var hr = document.createElement("hr"); hr.className = "sidebar-divider"; $sidebarSupport.appendChild(hr); + + // ── Restart Entire System button (bottom, visually separated) + var restartDivider = document.createElement("hr"); + restartDivider.className = "sidebar-divider"; + $sidebarSupport.appendChild(restartDivider); + + var restartBtn = document.createElement("button"); + restartBtn.className = "sidebar-support-btn sidebar-restart-btn"; + restartBtn.id = "sidebar-btn-restart"; + restartBtn.innerHTML = + '' + + '' + + 'Restart Entire System' + + 'Restarts the computer, desktop, and all services' + + ''; + restartBtn.addEventListener("click", function() { openRestartConfirmDialog(); }); + $sidebarSupport.appendChild(restartBtn); } function buildTile(svc) { diff --git a/app/sovran_systemsos_web/static/js/update.js b/app/sovran_systemsos_web/static/js/update.js index 791e8d2..0537f49 100644 --- a/app/sovran_systemsos_web/static/js/update.js +++ b/app/sovran_systemsos_web/static/js/update.js @@ -154,7 +154,7 @@ function onUpdateDone(result) { if ($modalStatus) $modalStatus.textContent = "✓ Update complete"; if ($btnReboot) $btnReboot.style.display = "inline-flex"; } else if (result === "reboot_required") { - if ($modalStatus) $modalStatus.textContent = "✓ Update complete — reboot required"; + if ($modalStatus) $modalStatus.textContent = "✓ Update complete — restart required"; if ($btnReboot) $btnReboot.style.display = "inline-flex"; } else { if ($modalStatus) $modalStatus.textContent = "✗ Update failed"; @@ -179,23 +179,50 @@ function saveErrorReport() { var _rebootStartTime = 0; var _serverWentDown = false; +var _rebootFailed = false; + +function _setRebootStatus(msg) { + if ($rebootSubmessage) $rebootSubmessage.textContent = msg; +} function doReboot() { if ($modal) $modal.classList.remove("open"); if ($rebuildModal) $rebuildModal.classList.remove("open"); stopUpdatePoll(); stopRebuildPoll(); + // Reset overlay to main card + if ($rebootMainCard) $rebootMainCard.style.display = ""; + if ($rebootErrorCard) $rebootErrorCard.style.display = "none"; + _setRebootStatus("Sending restart request\u2026"); if ($rebootOverlay) $rebootOverlay.classList.add("visible"); _rebootStartTime = Date.now(); _serverWentDown = false; + _rebootFailed = false; var rebootCtrl = new AbortController(); setTimeout(function() { rebootCtrl.abort(); }, REBOOT_REQUEST_TIMEOUT); - fetch("/api/reboot", { method: "POST", signal: rebootCtrl.signal }).catch(function() {}); + fetch("/api/reboot", { method: "POST", signal: rebootCtrl.signal }) + .then(function(res) { + if (!res.ok) { + // Definitive HTTP error — server rejected the request before going down + _rebootFailed = true; + if ($rebootMainCard) $rebootMainCard.style.display = "none"; + if ($rebootErrorCard) $rebootErrorCard.style.display = ""; + // Leave overlay visible so the error card is shown + } + // HTTP 2xx: request accepted, proceed with polling + }) + .catch(function() { + // Connection dropped or request aborted — the server is likely already going + // down as part of the restart. Treat as success and continue polling. + }); // Wait before the first check — NixOS shutdown after an update can take 20-40s setTimeout(waitForServerReboot, REBOOT_INITIAL_DELAY); } function waitForServerReboot() { + if (_rebootFailed) return; + // Update status on first check (server hasn't gone down yet) + if (!_serverWentDown) _setRebootStatus("Waiting for the computer to shut down\u2026"); var controller = new AbortController(); var timeoutId = setTimeout(function() { controller.abort(); }, REBOOT_FETCH_TIMEOUT); @@ -205,18 +232,23 @@ function waitForServerReboot() { if (_serverWentDown) { // Server is responding after having been down — reboot is complete. // Any response (even 401/500) means the server process is back. + _setRebootStatus("System is back online. Reconnecting\u2026"); window.location.reload(); } else if ((Date.now() - _rebootStartTime) < 90000) { // Server still responding but hasn't gone down yet — keep waiting setTimeout(waitForServerReboot, REBOOT_CHECK_INTERVAL); } else { // Been over 90 seconds and server is responding — just reload + _setRebootStatus("System is back online. Reconnecting\u2026"); window.location.reload(); } }) .catch(function() { clearTimeout(timeoutId); - _serverWentDown = true; + if (!_serverWentDown) { + _serverWentDown = true; + _setRebootStatus("The computer is restarting\u2026"); + } setTimeout(waitForServerReboot, REBOOT_CHECK_INTERVAL); }); } diff --git a/app/sovran_systemsos_web/templates/index.html b/app/sovran_systemsos_web/templates/index.html index 3168de4..b29c1b3 100644 --- a/app/sovran_systemsos_web/templates/index.html +++ b/app/sovran_systemsos_web/templates/index.html @@ -61,7 +61,7 @@
    @@ -164,7 +164,7 @@
    @@ -240,26 +240,61 @@ You will need it to log in to your computer
    and the Sovran Hub at sovransystemsos.local.

    -
    -
    -

    System Rebooting

    + +
    + +

    Restarting Entire System

    - Sovran_SystemsOS is now restarting.
    - This page will automatically reconnect once the system is back online. + The entire computer is restarting, including the desktop and all hosted services.
    + This page will reconnect automatically when Sovran_SystemsOS is back online.

    -
    + -

    Stay tuned…

    +

    Sending restart request…

    +
    + + +
    + + + diff --git a/iso/installer.py b/iso/installer.py index fcbb730..98c5865 100644 --- a/iso/installer.py +++ b/iso/installer.py @@ -1169,7 +1169,7 @@ class InstallerWindow(Adw.ApplicationWindow): btn_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0) btn_box.set_halign(Gtk.Align.CENTER) btn_box.set_margin_bottom(32) - reboot_btn = Gtk.Button(label="I Have Written Down My Password — Reboot Now") + reboot_btn = Gtk.Button(label="I Have Written Down My Password — Restart Entire System") reboot_btn.add_css_class("suggested-action") reboot_btn.add_css_class("pill") reboot_btn.connect("clicked", lambda b: subprocess.run(["sudo", "reboot"])) From aaf34de72aa912bfc6b17fc1c69dd60846691475 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 16:51:52 +0000 Subject: [PATCH 077/140] refactor: improve variable name in openRestartConfirmDialog for clarity --- app/sovran_systemsos_web/static/js/events.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/sovran_systemsos_web/static/js/events.js b/app/sovran_systemsos_web/static/js/events.js index 67923ce..4576a4f 100644 --- a/app/sovran_systemsos_web/static/js/events.js +++ b/app/sovran_systemsos_web/static/js/events.js @@ -82,9 +82,9 @@ function openRestartConfirmDialog() { _restartDialogOpener = document.activeElement; // Detect conflicting operations - var conflicted = !!_updatePollTimer || !!_rebuildPollTimer; - if ($restartConflictBox) $restartConflictBox.style.display = conflicted ? "" : "none"; - if ($restartConfirmOk) $restartConfirmOk.disabled = conflicted; + var isOperationInProgress = !!_updatePollTimer || !!_rebuildPollTimer; + if ($restartConflictBox) $restartConflictBox.style.display = isOperationInProgress ? "" : "none"; + if ($restartConfirmOk) $restartConfirmOk.disabled = isOperationInProgress; $restartConfirmModal.classList.add("open"); From 19fc9fc9c91a98d9cbd036d4ba06410f838321dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 18:55:54 +0000 Subject: [PATCH 078/140] Initial plan From d91664fcb9f85eb7f398b811ad08de19fb3db477 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Jul 2026 18:58:10 +0000 Subject: [PATCH 079/140] feat: move Reboot button from sidebar to header, between role badge and Sign Out --- .../static/css/header.css | 27 +++++++++++++++++++ .../static/css/layout.css | 15 ----------- app/sovran_systemsos_web/static/js/events.js | 3 +++ app/sovran_systemsos_web/static/js/state.js | 3 +++ app/sovran_systemsos_web/static/js/tiles.js | 17 ------------ app/sovran_systemsos_web/templates/index.html | 1 + 6 files changed, 34 insertions(+), 32 deletions(-) diff --git a/app/sovran_systemsos_web/static/css/header.css b/app/sovran_systemsos_web/static/css/header.css index d4c2f90..edd43e0 100644 --- a/app/sovran_systemsos_web/static/css/header.css +++ b/app/sovran_systemsos_web/static/css/header.css @@ -91,3 +91,30 @@ border-color: var(--accent-color); color: var(--accent-color); } + +/* ── Header reboot button ───────────────────────────────────────── */ + +.btn-header-reboot { + background: transparent; + border: 1px solid rgba(184, 125, 0, 0.35); + color: #c98d08; + font-size: 0.78rem; + font-weight: 600; + padding: 4px 12px; + border-radius: var(--radius-btn); + cursor: pointer; + transition: border-color 0.15s, color 0.15s, background-color 0.15s; +} + +.btn-header-reboot:hover { + border-color: #b87d00; + color: #e0a010; + background-color: rgba(184, 125, 0, 0.1); +} + +@media (max-width: 480px) { + .btn-header-reboot { + padding: 4px 8px; + font-size: 0.72rem; + } +} diff --git a/app/sovran_systemsos_web/static/css/layout.css b/app/sovran_systemsos_web/static/css/layout.css index 446b3fd..aa90940 100644 --- a/app/sovran_systemsos_web/static/css/layout.css +++ b/app/sovran_systemsos_web/static/css/layout.css @@ -84,21 +84,6 @@ margin: 16px 0; } -/* ── Sidebar restart button (amber/muted treatment) ─────────────── */ - -.sidebar-restart-btn { - border-color: rgba(184, 125, 0, 0.25); -} - -.sidebar-restart-btn:hover { - border-color: #b87d00; - background-color: rgba(184, 125, 0, 0.08); -} - -.sidebar-restart-btn .sidebar-restart-hint { - color: #c98d08; -} - /* ── Upgrade modal ──────────────────────────────────────────────── */ .upgrade-dialog { diff --git a/app/sovran_systemsos_web/static/js/events.js b/app/sovran_systemsos_web/static/js/events.js index 4576a4f..2d54236 100644 --- a/app/sovran_systemsos_web/static/js/events.js +++ b/app/sovran_systemsos_web/static/js/events.js @@ -48,6 +48,9 @@ if ($upgradeModal) $upgradeModal.addEventListener("click", function(e) { if (e.t if ($restartConfirmCancel) $restartConfirmCancel.addEventListener("click", closeRestartConfirmDialog); if ($restartConfirmModal) $restartConfirmModal.addEventListener("click", function(e) { if (e.target === $restartConfirmModal) closeRestartConfirmDialog(); }); if ($restartConfirmModal) $restartConfirmModal.addEventListener("keydown", function(e) { if (e.key === "Escape") closeRestartConfirmDialog(); }); + +// Header Reboot button +if ($headerRebootBtn) $headerRebootBtn.addEventListener("click", function() { openRestartConfirmDialog(); }); if ($restartConfirmOk) $restartConfirmOk.addEventListener("click", function() { if ($restartConfirmOk.disabled) return; $restartConfirmOk.disabled = true; diff --git a/app/sovran_systemsos_web/static/js/state.js b/app/sovran_systemsos_web/static/js/state.js index 53c57d2..235a080 100644 --- a/app/sovran_systemsos_web/static/js/state.js +++ b/app/sovran_systemsos_web/static/js/state.js @@ -110,5 +110,8 @@ const $restartConfirmOk = document.getElementById("restart-confirm-ok-btn"); const $restartConfirmCancel = document.getElementById("restart-confirm-cancel-btn"); const $restartConflictBox = document.getElementById("restart-conflict-box"); +// Header reboot button +const $headerRebootBtn = document.getElementById("btn-header-reboot"); + // System status banner // (removed — health is now shown per-tile via the composite health field) \ No newline at end of file diff --git a/app/sovran_systemsos_web/static/js/tiles.js b/app/sovran_systemsos_web/static/js/tiles.js index b2bbfc5..e07bf04 100644 --- a/app/sovran_systemsos_web/static/js/tiles.js +++ b/app/sovran_systemsos_web/static/js/tiles.js @@ -133,23 +133,6 @@ function renderSidebarSupport(supportServices) { var hr = document.createElement("hr"); hr.className = "sidebar-divider"; $sidebarSupport.appendChild(hr); - - // ── Restart Entire System button (bottom, visually separated) - var restartDivider = document.createElement("hr"); - restartDivider.className = "sidebar-divider"; - $sidebarSupport.appendChild(restartDivider); - - var restartBtn = document.createElement("button"); - restartBtn.className = "sidebar-support-btn sidebar-restart-btn"; - restartBtn.id = "sidebar-btn-restart"; - restartBtn.innerHTML = - '' + - '' + - 'Restart Entire System' + - 'Restarts the computer, desktop, and all services' + - ''; - restartBtn.addEventListener("click", function() { openRestartConfirmDialog(); }); - $sidebarSupport.appendChild(restartBtn); } function buildTile(svc) { diff --git a/app/sovran_systemsos_web/templates/index.html b/app/sovran_systemsos_web/templates/index.html index b29c1b3..9b495b0 100644 --- a/app/sovran_systemsos_web/templates/index.html +++ b/app/sovran_systemsos_web/templates/index.html @@ -24,6 +24,7 @@ Sovran_SystemsOS Hub
    Loading… +
    From d99d7213ecd63729635ad2873ad34392601d4544 Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Wed, 15 Jul 2026 15:25:14 -0500 Subject: [PATCH 080/140] updated readme --- README.md | 1107 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 997 insertions(+), 110 deletions(-) diff --git a/README.md b/README.md index 72f68e5..9816800 100644 --- a/README.md +++ b/README.md @@ -1,159 +1,1046 @@
    -Sovran Systems +Sovran Systems logo # Sovran_SystemsOS -`Base Development` · NixOS Flake · AGPL-3.0 +### Your Bitcoin life. Your keys. Your node. Your machine. -[Sovran Systems](https://sovransystems.com) +Sovran_SystemsOS is a free and open-source Bitcoin operating system built for +self-custody, private peer-to-peer exchange, independent verification, and +digital sovereignty. + +Every installation includes a private NixOS desktop with **Sparrow Wallet, +Bisq, and Bisq 2** ready to use. Move beyond custodial exchanges, use Bitcoin +without making a centralized platform the center of your financial life, and +grow into running your own Bitcoin and Lightning infrastructure when you are +ready. + +**Privacy. Sovereignty. Bitcoin.** + +[Visit the Website](https://sovransystems.com) · +[Download the ISO](https://downloads.sovransystems.com/Sovran_SystemsOS.iso) · +[Verify the Download](https://downloads.sovransystems.com/Sovran_SystemsOS.iso.sha256) · +[Build from Source](#build-from-source)
    -Sovran_SystemsOS desktop showing application dock and PRIVACY. SOVEREIGNTY. BITCOIN. tagline +Sovran_SystemsOS private Bitcoin desktop -*The Sovran_SystemsOS desktop — "Privacy. Sovereignty. Bitcoin."* +*Bitcoin sovereignty from the first boot.*
    --- -## Table of Contents +## Bitcoin software should help you leave the middleman behind -1. [What This Repo Is](#what-this-repo-is) -2. [Architecture](#architecture) -3. [Module Catalog](#module-catalog) -4. [The Three Modes (internal reference)](#the-three-modes-internal-reference) -5. [Build & Deploy Reference](#build--deploy-reference) -6. [Networking & Reverse Proxy](#networking--reverse-proxy) -7. [Security Posture](#security-posture) -8. [Backups & Recovery](#backups--recovery) -9. [License](#license) +Bitcoin gives people the ability to hold and transfer value without asking a +bank, exchange, or custodian for permission. But that freedom depends on the +software and infrastructure you choose to use. + +Sovran_SystemsOS brings the essential tools together in one operating system: + +- **Hold your own keys** with Sparrow Wallet. +- **Buy and sell Bitcoin peer-to-peer** with Bisq and Bisq 2. +- **Use non-KYC Bitcoin tools** without depending on a custodial exchange account. +- **Verify your own Bitcoin** with a full node. +- **Connect your wallets to your node**, not a stranger's. +- **Use Lightning** with LND and Ride The Lightning. +- **Accept Bitcoin directly** with BTCPay Server. +- **Route the Bitcoin stack through Tor** for stronger network privacy. +- **Control everything from the Sovran Hub.** + +No custodian needs to hold your Bitcoin. No outside node needs to tell your +wallet what happened on the Bitcoin network. No third-party cloud needs to +control your data or services. + +> Sovran_SystemsOS provides tools for self-custody and peer-to-peer Bitcoin +> use. Users remain responsible for protecting their keys, understanding their +> trades, following applicable laws, and maintaining secure backups. --- -## What This Repo Is +## Bitcoin tools included from day one -Sovran_SystemsOS is defined entirely as a **Nix flake** (`flake.nix`) and built from source. There is no pre-built binary — the System Installer is produced from this tree. Everything the system does is declared here. +You do not need the largest computer or a fully synchronized Bitcoin node to +begin taking control of your Bitcoin. -The control center is the **Hub** — a built-in panel that lets the operator launch, monitor, and toggle services without touching a terminal. Under the hood, the Hub writes to `custom.nix`, which feeds back into the flake. +Every Sovran_SystemsOS mode includes the standard desktop Bitcoin applications: +**Sparrow Wallet, Bisq, and Bisq 2**. -## Architecture +### Sparrow Wallet -``` - ┌─────────────────────────┐ - │ flake.nix │ - │ inputs: nixpkgs, │ - │ nix-bitcoin, nixvim, │ - │ btc-clients │ - └───────────┬─────────────┘ - │ nixosModules.Sovran_SystemsOS - ▼ - ┌──────────────────────────┐ imports ┌──────────────────────────┐ - │ configuration.nix │────────────▶│ modules/modules.nix │ - │ boot / fs / users / │ │ core/* + services + opt │ - │ desktop / nix settings │ │ features │ - └──────────────────────────┘ └──────────┬───────────────┘ - ▲ │ - │ ./role-state.nix (mode/role) ▼ - │ ./custom.nix (user overrides) ┌────────────────────┐ - │ │ modules/*.nix │ - └───────── sovran-hub writes ───────▶│ synapse / wordpress│ - │ nextcloud / etc. │ - └────────────────────┘ -``` +Sparrow is a privacy-focused desktop Bitcoin wallet built for transparent, +secure self-custody. -- **`flake.nix`** declares two NixOS configurations: - - `nixosConfigurations.nixos` — the running system. - - `nixosConfigurations.sovran_systemsos-iso` — the System Installer. -- **`configuration.nix`** owns host concerns (boot, filesystems, users, desktop, locale, Nix settings, firewall, audio, backups). -- **`modules/modules.nix`** is the service router. Every other module is opt-in via flags read from `role-state.nix` and `custom.nix`. +Use Sparrow to: -## Module Catalog +- Create and manage Bitcoin wallets +- Connect signing devices and hardware wallets +- Build and inspect transactions +- Manage UTXOs and coin selection +- Use multisignature wallets +- Connect directly to your own Electrs server in Node mode -Defaults follow the import order in `modules/modules.nix`. Toggles live in `custom.nix` (the Hub writes them) and `role-state.nix`. +Your keys remain under your control. -| Module | Default | Purpose | +### Bisq + +Bisq is a decentralized peer-to-peer Bitcoin exchange. + +It allows buyers and sellers to trade directly without depositing their +Bitcoin with a centralized exchange. There is no central company holding user +funds and no conventional exchange account standing between participants. + +### Bisq 2 + +Bisq 2 is the next generation of the Bisq peer-to-peer trading network. It is +installed alongside Bisq so users can access both generations of the Bisq +ecosystem from the Sovran_SystemsOS desktop. + +Together, Sparrow, Bisq, and Bisq 2 provide a practical path to obtaining, +holding, and using Bitcoin without making a custodial exchange the center of +your financial life. + +--- + +## Three modes, one path toward Bitcoin sovereignty + +Every mode includes the same private NixOS and GNOME foundation, the Sovran +Hub, Sparrow Wallet, Bisq, and Bisq 2. + +What changes is how much Bitcoin and self-hosting infrastructure runs on the +machine. + +| Mode | Best for | Bitcoin capability | |---|---|---| -| `core/*` | **on** | Roles, Caddy, Njalla, Hub, desktop, perf, ssh-bootstrap | -| `php.nix`, `credentials.nix` | **on** | Required by web services & secrets | -| `synapse.nix` | **on** | Matrix homeserver | -| `wordpress.nix` | **on** | WordPress + PHP-FPM vhost | -| `nextcloud.nix` | **on** | Files / calendar / contacts | -| `vaultwarden.nix` | **on** | Bitwarden-compatible secrets vault | -| `bitcoinecosystem.nix` | **on** | bitcoind/electrs/LND/RTL/BTCPay (over Tor) | -| `wallet-autoconnect.nix` | **on** | Sparrow/Bisq ↔ node handshake | -| `haven.nix` | off | Nostr relay | -| `element-calling.nix` | off | LiveKit + JWT for E2E calling | -| `mempool.nix` | off | Mempool.space dashboard | -| `bitcoin-core.nix` | off | Switch node to Bitcoin Core (replaces default Bitcoin Knots + BIP110) | -| `rdp.nix` | off | xrdp remote desktop | -| `sshd.nix` | off | Public-facing OpenSSH | +| **Desktop** | Everyday users and computers with modest hardware | Sparrow, Bisq, and Bisq 2 for self-custody and peer-to-peer Bitcoin use | +| **Node** | People ready to verify and operate their own Bitcoin infrastructure | Everything in Desktop plus Bitcoin Knots, Electrs, LND, RTL, BTCPay Server, Tor, and wallet-to-node connections | +| **Server + Desktop** | Bitcoiners who also want to reclaim their communications, cloud, passwords, and web services | The complete Node stack plus private self-hosted services | -> Tor is wired directly into the Bitcoin stack. In `modules/bitcoinecosystem.nix`, `bitcoind`, `electrs`, and `lnd` all set `tor.enforce = true` and `tor.proxy = true`, and onion services are exposed for them. +### Desktop — start with your keys -## The Three Modes (internal reference) +Desktop mode is not a reduced or Bitcoin-free edition. -Selected by `role-state.nix`, resolved by `modules/core/role-logic.nix`. All three configurations are produced from this same flake. +It is a private everyday computer that includes: -| Mode | What's enabled on top of the base NixOS + GNOME | -|---|---| -| **Desktop** | Private daily-driver. Sparrow + Bisq included. | -| **Node** | Desktop + full Bitcoin stack (bitcoind/electrs/LND/RTL/BTCPay over Tor). | -| **Server+Desktop** | Node + self-hosting services (Synapse, Nextcloud, WordPress, Vaultwarden, Element Calling, etc.). | +- Sparrow Wallet +- Bisq +- Bisq 2 +- A clean GNOME desktop +- Privacy-respecting everyday applications +- Tor +- The Sovran Hub -## Build & Deploy Reference +This gives people a lower-hardware path to Bitcoin self-custody and +peer-to-peer, non-KYC Bitcoin tools from the first boot. -Internal commands. Run from the flake root. +You can begin with Desktop today and move to your own node when your hardware, +storage, and needs are ready. -| Action | Command | -|---|---| -| Build the System Installer | `nix build .#nixosConfigurations.sovran_systemsos-iso.config.system.build.isoImage` | -| Switch now | `sudo nixos-rebuild switch --flake .#nixos` | -| Test in current boot only | `sudo nixos-rebuild test --flake .#nixos` | -| Stage for next boot | `sudo nixos-rebuild boot --flake .#nixos` | -| Build only (no activation) | `nixos-rebuild build --flake .#nixos` | -| Update pinned inputs | `nix flake update` (then rebuild) | -| Rollback last switch | `sudo nixos-rebuild switch --rollback` | -| Garbage-collect (>7 days) | Automatic weekly; manual: `sudo nix-collect-garbage -d` | +**Recommended hardware:** -## Networking & Reverse Proxy +- 64-bit Intel or AMD processor, approximately 2015 or newer +- 8 GB RAM +- 256 GB SSD +- Any broadband connection -- **Firewall on by default** (`networking.firewall.enable = true`). Port are opened by the module that needs it. -- **Caddy** (`modules/core/caddy.nix`) terminates TLS for all HTTP services. -- **Njalla** dynamic DNS (`modules/core/njalla.nix`) keeps records in sync via a 15-minute cron job. -- **Tor** is enabled with `torsocks` available. The Bitcoin stack uses it directly — see [Security Posture](#security-posture). -- **SSH:** localhost-only by default (`core/sshd-localhost.nix`). - -## Security Posture +### Node — verify your own money -Facts about the defaults, straight from `configuration.nix` and the modules: +Node mode includes the private desktop and adds the full Bitcoin stack. -- **Reproducible builds.** Every artifact derives from `flake.lock`. The same commit produces the same OS. -- **Bitcoin stack over Tor.** In `modules/bitcoinecosystem.nix`, `bitcoind`, `electrs`, and `lnd` all set `tor.enforce = true`, and onion services are exposed for `bitcoind`, `electrs`, `lnd`, and friends. -- **Firewall on, public sshd off, RDP off, auto-login off, fail2bain active** -- **Kernel surface trimmed.** `boot.blacklistedKernelModules = [ "rxrpc" ];` -- **Weekly garbage collection** with `--delete-older-than 7d`. +Instead of asking someone else's server about your wallet and transactions, +you operate the infrastructure that performs the verification. -## Backups & Recovery +The Node stack includes: -`services.rsnapshot` snapshots hourly and daily to `/run/media/Second_Drive/BTCEcoandBackup/NixOS_Snapshot_Backup`: +- **Bitcoin Knots** — independently verify the Bitcoin timechain and consensus rules +- **Electrs** — connect compatible wallets to your own node +- **LND** — operate a Lightning node +- **Ride The Lightning** — manage Lightning through a web interface +- **BTCPay Server** — accept Bitcoin payments without a payment processor +- **Sparrow Wallet** — connect your wallet to your own infrastructure +- **Bisq and Bisq 2** — trade Bitcoin peer-to-peer +- **Tor integration** — improve network privacy across the Bitcoin stack +- **Sovran Hub** — launch, monitor, and reach everything from one place -``` -backup /home/ localhost/ -backup /var/lib/ localhost/ -backup /etc/nixos/ localhost/ -backup /etc/nix-bitcoin-secrets/ localhost/ -retain hourly 5 -retain daily 5 -cron hourly 0 * * * * -cron daily 50 21 * * * +Your node verifies. Your wallet connects to it. Your keys remain yours. + +**Recommended hardware:** + +- x86 Intel or AMD processor, approximately three years old or newer +- 16 GB RAM +- 500 GB NVMe SSD for the operating system +- 2 TB NVMe SSD for the Bitcoin timechain +- Unmetered broadband +- Approximately 200 Mbps download and 50 Mbps upload + +### Server + Desktop — sovereignty beyond money + +Server + Desktop includes the complete Bitcoin Node stack and extends the same +ownership model to the rest of your digital life. + +Run your own: + +- Private cloud +- Files, calendars, and contacts +- Encrypted communications +- Password vault +- Website +- Nostr relay +- Bitcoin payment infrastructure + +Bitcoin sovereignty is the foundation. Server + Desktop applies that principle +to your data, communications, identity, and services. + +**Recommended hardware:** + +- x86 Intel or AMD processor, approximately three years old or newer +- 32 GB RAM +- 500 GB NVMe SSD for the operating system +- 2 TB NVMe SSD for the Bitcoin timechain +- Unmetered broadband +- Approximately 200 Mbps download and 50 Mbps upload +- A domain for publicly accessible self-hosted services + +--- + +## Use Sovran_SystemsOS your way + +You do not have to replace the operating system on your current computer to +benefit from Sovran_SystemsOS. + +### Use it as your everyday computer + +Install Sovran_SystemsOS on a desktop, laptop, or mini PC and use its clean +GNOME desktop as your daily operating system. + +You receive a private desktop, the Sovran Hub, everyday applications, Bitcoin +software, and the tools included with your selected mode. + +### Use it as a private Bitcoin and home server + +Prefer to keep using Windows, macOS, Linux, Android, or iOS? + +Install Sovran_SystemsOS on a separate computer and let it run quietly on your +local network. From another device connected to the same network, open a web +browser and visit: + +```text +http://sovransystemsos.local ``` -The second drive is mounted by label (`BTCEcoandBackup`) with `nofail` so a missing drive doesn't block boot. +Sign in to the Sovran Hub and manage the system from your: + +- Windows computer +- Mac +- Linux computer +- Phone +- Tablet +- Any other device with a modern web browser + +Your Sovran_SystemsOS machine can operate as a private, headless Bitcoin and +self-hosting appliance. It can run without a monitor during everyday use while +you control it from the devices you already know. + +Your existing devices remain familiar. Sovran_SystemsOS provides the +independent infrastructure behind them. + +> **Local access:** `sovransystemsos.local` is intended for devices connected +> to the same local network as the Sovran_SystemsOS machine. The Hub is +> protected by authentication and is not automatically exposed to the public +> internet. + +--- + +## The Sovran Hub + +### Your private infrastructure, controlled from any screen. + +The Sovran Hub is the command center built into Sovran_SystemsOS. It is both a +local desktop application and a private web interface served directly by your +Sovran_SystemsOS machine. + +Use the Hub directly from the Sovran_SystemsOS desktop, or open it from another +device at: + +```text +http://sovransystemsos.local +``` + +From one place, the Hub helps you: + +- Open and monitor your services +- See what is running +- Start and stop supported services +- Configure system features +- Manage service domains +- Reach your Bitcoin tools +- Manage your private cloud and communications +- Perform supported system operations +- Control Sovran_SystemsOS without everyday terminal commands + +Nothing needs to be installed on the device opening the Hub. You only need a +modern browser and access to the same local network. + +### Example home setup + +```text + Your local network + │ + ┌──────────────────────┼──────────────────────┐ + │ │ │ + Windows laptop Phone or tablet Mac or Linux + │ │ │ + └──────── Browser: sovransystemsos.local ────┘ + │ + ▼ + ┌──────────────────────────┐ + │ Sovran_SystemsOS │ + │ │ + │ • Sovran Hub │ + │ • Bitcoin node │ + │ • Sparrow Wallet │ + │ • Bisq and Bisq 2 │ + │ • Lightning │ + │ • Private cloud │ + │ • Communications │ + │ • Password vault │ + │ • Hosted services │ + └──────────────────────────┘ +``` + +Keep using the devices you already own. Sovran_SystemsOS becomes the private +Bitcoin and digital infrastructure behind them. + +--- + +## What is included? + +Depending on the selected mode and enabled features, Sovran_SystemsOS brings +together a growing collection of private, open-source tools. + +### Your money — Bitcoin sovereignty + +- Bitcoin Knots +- Electrs +- LND +- Ride The Lightning +- BTCPay Server +- Sparrow Wallet +- Bisq +- Bisq 2 +- Tor integration +- Automatic wallet-to-node connections +- Optional Mempool explorer + +Run your own Bitcoin infrastructure. Verify your own money. Trust no one. + +### Your voice — private communications + +- Matrix Synapse +- Element +- Optional Element calling +- Optional Haven Nostr relay + +Communicate without making Big Tech the owner of your identity or +conversations. + +### Your cloud — self-hosting and storage + +- Nextcloud +- Vaultwarden +- WordPress +- Caddy +- Private service domains +- Optional remote desktop + +Keep your files, passwords, calendar, contacts, website, and services on +hardware you control. + +### Your desktop + +- GNOME desktop +- Brave +- Firefox +- File management +- Calendar and contacts +- Email client +- Office applications +- System monitoring tools +- Administration utilities + +Not every service is enabled in every mode. The Sovran Hub presents and +manages the features available on your system. + +--- + +## What makes Sovran_SystemsOS different? + +There are Linux distributions that can run a Bitcoin wallet. There are node +projects that can run Bitcoin services. There are self-hosting projects that +can replace individual cloud applications. + +Sovran_SystemsOS brings those worlds together. + +### Bitcoin from the first boot + +Sparrow, Bisq, and Bisq 2 are not optional suggestions buried in +documentation. They are installed as part of the operating system and +available from the desktop. + +### A complete path + +Begin with a private desktop and self-custody. Grow into peer-to-peer Bitcoin +exchange, your own node, Lightning, Bitcoin payments, and complete +self-hosting. + +### One control center + +The Sovran Hub brings the Bitcoin stack, private services, credentials, system +status, and supported configuration into one interface. + +### Your hardware + +The system runs on a computer you control. Your node, wallets, data, services, +and system configuration do not depend on a Sovran Systems cloud account. + +### Reproducible foundation + +Sovran_SystemsOS is built declaratively with NixOS and Nix flakes. Its inputs +are pinned, its configuration can be audited, and the system can be rebuilt +from source. + +--- + +# Download and install it yourself + +Sovran_SystemsOS is free and open source. You can download the installer, +verify it, write it to a USB drive, and install it yourself. + +You remain in control from the very first step. + +## What is an ISO? + +An ISO is a complete installation image containing the operating system and +the files required to boot the Sovran_SystemsOS installer. + +The ISO is not copied to a USB drive like an ordinary document. It must be +written to the USB drive with an imaging application such as Balena Etcher. + +## What you need + +Before beginning, you will need: + +- A compatible 64-bit computer +- A USB drive that can be erased +- Another computer for downloading and preparing the installer +- An internet connection +- A USB imaging application such as Balena Etcher +- A backup of anything important on the destination computer + +> **Important:** Installing an operating system can erase the selected +> destination drive. Back up important files and review every disk selection +> carefully before continuing. + +--- + +## Step 1: Download the ISO + +Download the Sovran_SystemsOS installer: + +### [Download Sovran_SystemsOS.iso](https://downloads.sovransystems.com/Sovran_SystemsOS.iso) + +Depending on your browser and internet connection, the download may take some +time. Do not rename or modify the file before verifying it. + +The downloaded file should be named: + +```text +Sovran_SystemsOS.iso +``` + +--- + +## Step 2: Download the checksum + +Download the matching SHA-256 checksum: + +### [Download Sovran_SystemsOS.iso.sha256](https://downloads.sovransystems.com/Sovran_SystemsOS.iso.sha256) + +A checksum is a digital fingerprint of a file. + +Verifying the checksum confirms that: + +- The complete ISO downloaded successfully +- The file was not accidentally corrupted +- The downloaded file matches the published image + +The checksum produced from your ISO must match the published checksum exactly. + +--- + +## Step 3: Verify the ISO + +Place the ISO and checksum file in the same folder, then follow the +instructions for your current operating system. + +### Linux + +Open a terminal in the download folder and run: + +```bash +sha256sum Sovran_SystemsOS.iso +``` + +You can also ask the checksum file to perform the comparison: + +```bash +sha256sum --check Sovran_SystemsOS.iso.sha256 +``` + +A successful comparison should report: + +```text +Sovran_SystemsOS.iso: OK +``` + +### macOS + +Open Terminal in the download folder and run: + +```bash +shasum -a 256 Sovran_SystemsOS.iso +``` + +Compare the value shown in Terminal with the value inside: + +```text +Sovran_SystemsOS.iso.sha256 +``` + +### Windows PowerShell + +Open PowerShell in the download folder and run: + +```powershell +Get-FileHash .\Sovran_SystemsOS.iso -Algorithm SHA256 +``` + +Compare the value under `Hash` with the published checksum. + +### If the values do not match + +Do not install the image if the checksums are different. + +1. Delete the downloaded ISO. +2. Download it again. +3. Repeat the verification. +4. Continue only after the values match exactly. + +--- + +## Step 4: Write the ISO to a USB drive + +Balena Etcher is available for Linux, macOS, and Windows. + +1. Download and install Balena Etcher. +2. Connect the USB drive. +3. Open Balena Etcher. +4. Choose **Flash from file**. +5. Select `Sovran_SystemsOS.iso`. +6. Choose **Select target**. +7. Select the correct USB drive. +8. Review the selected drive carefully. +9. Choose **Flash**. +10. Wait for the writing and verification process to finish. + +> **Warning:** Flashing the ISO erases the selected USB drive. Verify that you +> selected the USB drive and not another storage device. + +After flashing, your current operating system may report that it cannot read +the USB drive or may show several unfamiliar partitions. This can be normal for +a bootable Linux installer. + +Do not format the USB drive after flashing it. + +--- + +## Step 5: Boot from the USB drive + +1. Leave the prepared USB drive connected. +2. Shut down or restart the destination computer. +3. Open the computer's boot-device menu. +4. Select the USB drive. +5. Start the Sovran_SystemsOS installer. + +Common boot-menu keys include: + +- `F12` +- `F11` +- `F10` +- `F9` +- `Esc` +- `Delete` + +The correct key depends on the computer manufacturer. It is often briefly +shown on screen when the computer first powers on. + +If the normal operating system starts instead, restart and try the boot-menu +key again. + +--- + +## Step 6: Install Sovran_SystemsOS + +Follow the on-screen installer. + +Before confirming the installation: + +- Verify that you selected the correct destination drive. +- Back up any important data on that drive. +- Understand that existing partitions and data may be erased. +- Disconnect unrelated external drives if you are unsure which drive is which. +- Confirm that the computer is connected to reliable power. + +When installation is complete: + +1. Restart the computer. +2. Remove the USB drive when instructed. +3. Allow Sovran_SystemsOS to start from the installed drive. +4. Complete the initial setup. + +--- + +## Step 7: Open the Sovran Hub + +You can open the Hub directly from the Sovran_SystemsOS desktop. + +You can also open it from another device on the same local network. + +On your laptop, phone, tablet, or other computer, open a browser and visit: + +```text +http://sovransystemsos.local +``` + +Sign in using your Sovran_SystemsOS credentials. + +You can now use the Hub without sitting in front of the Sovran_SystemsOS +computer. + +### If `sovransystemsos.local` does not open + +Check the following: + +1. Make sure the Sovran_SystemsOS machine is powered on. +2. Make sure both devices are connected to the same local network. +3. Confirm that you entered the full address: + + ```text + http://sovransystemsos.local + ``` + +4. Avoid guest Wi-Fi networks, which may prevent devices from seeing one another. +5. Allow the Sovran_SystemsOS machine a few minutes to finish starting. +6. Temporarily disconnect a VPN that may be interfering with local-network access. +7. Try another browser or device on the same network. + +Some networks or devices may not support `.local` address discovery correctly. +Network isolation, custom DNS settings, VPNs, and some routers can interfere +with local-device discovery. + +--- + +## Two paths to get started + +### Download and install + +Sovran_SystemsOS is free, public, and open source. + +Download the ISO, verify the checksum, flash it to USB, and install it on your +own hardware. + +[Download the ISO](https://downloads.sovransystems.com/Sovran_SystemsOS.iso) + +### Guided help + +Not technical? You do not have to figure everything out alone. + +Visit the Sovran Systems website to learn about guided setup, supported +hardware, and Royal Membership. + +[Visit Sovran Systems](https://sovransystems.com) + +--- + +# For developers + +Sovran_SystemsOS combines the reproducibility of NixOS, the Bitcoin service +modules of nix-bitcoin, the desktop Bitcoin packages provided by +`btc-clients-nix`, and the Sovran Hub into a complete Bitcoin operating system. + +The operating system configuration, installer, Hub, desktop integration, +Bitcoin services, and optional self-hosting services are maintained in this +repository. + +## Technology + +- **NixOS and Nix flakes** for reproducible system configuration +- **nix-bitcoin** for declarative Bitcoin and Lightning services +- **btc-clients-nix** for Sparrow, Bisq, and Bisq 2 packages +- **Python and FastAPI** for the Sovran Hub backend +- **JavaScript, HTML, and CSS** for the Hub interface +- **GNOME** for the desktop environment +- **Caddy** for local and public service routing +- **Tor** for Bitcoin network privacy +- **AGPL-3.0** licensing + +--- + +## Build from source + +### Prerequisites + +You need a system with Nix installed and flakes enabled. + +Clone the repository: + +```bash +git clone https://github.com/naturallaw777/sovran-systems.git +cd sovran-systems +``` + +Build the installer: + +```bash +nix build \ + .#nixosConfigurations.sovran_systemsos-iso.config.system.build.isoImage +``` + +The resulting build output will be available through the `result` symlink. + +--- + +## Common development commands + +Run these commands from the flake root. + +### Build the installer + +```bash +nix build \ + .#nixosConfigurations.sovran_systemsos-iso.config.system.build.isoImage +``` + +### Build the system configuration + +```bash +nixos-rebuild build --flake .#nixos +``` + +### Test without making the change permanent + +```bash +sudo nixos-rebuild test --flake .#nixos +``` + +### Activate the new configuration + +```bash +sudo nixos-rebuild switch --flake .#nixos +``` + +### Stage the configuration for the next boot + +```bash +sudo nixos-rebuild boot --flake .#nixos +``` + +### Update pinned flake inputs + +```bash +nix flake update +``` + +Review and test input updates before committing the modified `flake.lock`. + +### Roll back the last activated generation + +```bash +sudo nixos-rebuild switch --rollback +``` + +--- + +## Repository map + +| Path | Purpose | +|---|---| +| `flake.nix` | Declares flake inputs, the running system, and installer outputs | +| `flake.lock` | Pins dependencies for reproducible builds | +| `configuration.nix` | Base host, boot, desktop, user, security, backup, and system configuration | +| `modules/` | Core modules, Bitcoin services, self-hosted services, and optional features | +| `modules/core/` | Roles, Hub integration, Caddy, desktop, support, and other core behavior | +| `app/` | Sovran Hub backend, templates, static assets, scripts, and web interface | +| `iso/` | Installer configuration, installer code, and installer assets | +| `assets/` | Repository documentation images | +| `custom.template.nix` | Template for local features and service overrides | +| `role-state.nix` | Selected Sovran_SystemsOS mode or role | + +--- + +## Architecture overview + +Sovran_SystemsOS is assembled from a reproducible Nix flake. + +```text + ┌─────────────────────────┐ + │ flake.nix │ + │ │ + │ Inputs and system │ + │ build outputs │ + └────────────┬────────────┘ + │ + ▼ + ┌─────────────────────────┐ + │ configuration.nix │ + │ │ + │ Host, desktop, users, │ + │ boot, security, backup │ + └────────────┬────────────┘ + │ + ▼ + ┌─────────────────────────┐ + │ modules/modules.nix │ + │ │ + │ Core modules, services, │ + │ and optional features │ + └────────────┬────────────┘ + │ + ┌──────────────────┼──────────────────┐ + │ │ │ + ▼ ▼ ▼ + ┌────────────┐ ┌────────────┐ ┌────────────┐ + │ Sovran Hub │ │ Bitcoin │ │ Private │ + │ and desktop│ │ ecosystem │ │ services │ + └────────────┘ └────────────┘ └────────────┘ +``` + +The Hub writes supported user choices into the local configuration. NixOS then +rebuilds the machine into the selected declarative state. + +--- + +## Module overview + +### Core modules + +Core modules provide the base Sovran_SystemsOS experience, including: + +- Role selection and role logic +- Sovran Hub +- GNOME desktop integration +- Caddy +- Local Hub access +- Network and domain support +- Local SSH operations +- Remote deployment support +- Technical support controls +- Performance and power behavior + +### Bitcoin services + +The Bitcoin stack includes: + +- Bitcoin Knots +- Electrs +- LND +- Ride The Lightning +- BTCPay Server +- Sparrow Wallet +- Bisq +- Bisq 2 +- Wallet-to-node connections +- Tor integration + +### Private services + +Self-hosted services include: + +- Matrix Synapse +- Nextcloud +- Vaultwarden +- WordPress + +### Optional features + +Optional features include: + +- Haven Nostr relay +- Element calling +- Mempool explorer +- Bitcoin Core selection +- Remote desktop +- Public-network SSH + +Feature availability and defaults may change as Sovran_SystemsOS develops. +Review the relevant Nix module before relying on a specific default in a +production environment. + +--- + +## Security approach + +Sovran_SystemsOS is designed around local ownership and explicit control. + +Its security foundations include: + +- Reproducible builds from pinned flake inputs +- Firewall enabled by default +- Public SSH disabled by default +- Remote desktop disabled by default +- Hub authentication +- Local-network Hub access through `sovransystemsos.local` +- Tor integration for the Bitcoin stack +- User-controlled service exposure +- Declarative system configuration +- Restricted technical-support access +- Auditable open-source code + +No operating system can guarantee complete security. Users should still apply +updates, protect credentials, maintain backups, secure their local network, +and review any services they choose to expose publicly. + +Bitcoin users must also securely back up wallet seed phrases, descriptors, +channel backups, and other recovery information. Never store your only wallet +backup on the same computer that holds the wallet. + +--- + +## Acknowledgements + +Sovran_SystemsOS stands on the work of exceptional free and open-source +projects and contributors. + +### NixOS + +Deep gratitude goes to the **NixOS team, the Nixpkgs maintainers, and the +broader Nix community**. + +NixOS provides the reproducible, declarative foundation that makes +Sovran_SystemsOS possible. Its module system, package ecosystem, flakes, and +generation-based system management allow an entire Bitcoin operating system +to be described, audited, rebuilt, upgraded, and rolled back from source. + +Sovran_SystemsOS would not have the same reliability, transparency, or +reproducibility without their years of work. + +### nix-bitcoin + +Special thanks go to the **nix-bitcoin project and its contributors**. + +nix-bitcoin provides the declarative foundation for building and operating +Bitcoin and Lightning services on NixOS. Its work makes it possible to +configure complex Bitcoin infrastructure—including nodes, Electrs, Lightning, +Tor integration, and related services—in a reproducible and auditable way. + +Sovran_SystemsOS builds upon that foundation to make this infrastructure +approachable through an integrated desktop, installer, and Sovran Hub. + +### Emmanuel Rosa and btc-clients-nix + +Special thanks go to **Emmanuel Rosa** for +[`btc-clients-nix`](https://github.com/emmanuelrosa/btc-clients-nix). + +The project provides Nix packages for the Bitcoin desktop software central to +the Sovran_SystemsOS experience: + +- Sparrow Wallet +- Bisq +- Bisq 2 + +This work helps make it possible for Sovran_SystemsOS to deliver self-custody +and peer-to-peer Bitcoin tools as part of every installation. + +### The upstream Bitcoin ecosystem + +Sovran_SystemsOS also depends on the work of the developers and communities +behind: + +- Bitcoin Knots +- Bitcoin Core +- Sparrow Wallet +- Bisq +- Bisq 2 +- Electrs +- LND +- Ride The Lightning +- BTCPay Server +- Tor +- NixOS +- GNOME +- Caddy +- Nextcloud +- Matrix Synapse +- Element +- Vaultwarden +- WordPress +- Every other upstream project included in the system + +Sovran Systems did not create these foundations. Our work is to bring them +together into a cohesive operating system that helps more people use Bitcoin +privately, independently, and with confidence. + +Thank you to every developer, maintainer, reviewer, tester, documentarian, and +user who keeps this ecosystem alive. + +--- ## License -Licensed under the **GNU Affero General Public License v3.0** — see [`LICENSE`](./LICENSE). +Sovran_SystemsOS is free and open-source software licensed under the +[GNU Affero General Public License v3.0](LICENSE). + +The AGPL-3.0 protects your freedom to: + +- Use Sovran_SystemsOS +- Study how the system works +- Modify the source code +- Share original or modified versions +- Build and operate the system on your own hardware + +If you distribute a modified version, you must make its corresponding source +code available under the same license. + +Because Sovran_SystemsOS includes the browser-based Sovran Hub, operators who +modify the covered software and make that modified version available for users +to interact with over a network must offer those users access to its +corresponding source code, as required by the AGPL-3.0. + +Sovran_SystemsOS is provided **without warranty**, as described in the full +license. + +> Individual upstream applications, packages, artwork, fonts, and other +> components included with or built by Sovran_SystemsOS may have their own +> licenses and copyright holders. The AGPL-3.0 license for this repository does +> not replace the licenses of independent upstream projects. + +Read the complete license terms in [`LICENSE`](LICENSE). + +--- + +
    + +## Privacy. Sovereignty. Bitcoin. + +### Your Bitcoin life. Your keys. Your node. Your machine. + +[Visit Sovran Systems](https://sovransystems.com) · +[Download Sovran_SystemsOS](https://downloads.sovransystems.com/Sovran_SystemsOS.iso) · +[View the License](LICENSE) + +
    From 907808823efec04c716f399911983a0b29b47fe2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:23:44 +0000 Subject: [PATCH 081/140] Initial plan From f9c42f45199859d05feaa8bb4c8f3aace1a2e3c4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:26:59 +0000 Subject: [PATCH 082/140] fix: convert sovran-hosts-update to writeShellApplication with explicit runtimeInputs - Replace environment.etc raw script with pkgs.writeShellApplication - Declare runtimeInputs: pkgs.coreutils, pkgs.gawk, pkgs.gnugrep - Use awk -v for safe marker variable passing (no shell interpolation) - Point systemd ExecStart and activation script at lib.getExe hostsUpdateScript - Keep /etc/sovran-hosts-update.sh as a source symlink for operator discoverability - Remove environment.systemPackages reliance - Emit warning (not silently swallow) on activation failure - Add structural regression tests (19 new tests, all passing) --- app/tests/test_local_domain_loopback_nix.py | 130 ++++++++++++++++++++ modules/core/local-domain-loopback.nix | 58 ++++++--- 2 files changed, 171 insertions(+), 17 deletions(-) create mode 100644 app/tests/test_local_domain_loopback_nix.py diff --git a/app/tests/test_local_domain_loopback_nix.py b/app/tests/test_local_domain_loopback_nix.py new file mode 100644 index 0000000..365930a --- /dev/null +++ b/app/tests/test_local_domain_loopback_nix.py @@ -0,0 +1,130 @@ +"""Structural regression tests for modules/core/local-domain-loopback.nix. + +Verifies that the sovran-hosts-update helper: + - is built as a pkgs.writeShellApplication with explicit runtimeInputs + (gawk, gnugrep, coreutils); + - uses ``lib.getExe hostsUpdateScript`` for both the systemd ExecStart and + the activation script so that both contexts share the same Nix-store + executable; + - does NOT point ExecStart at the raw /etc path; + - includes element-calling in the supported domain list; + - uses ``awk -v`` for safe marker-variable passing rather than interpolating + marker text directly into the awk program; + - retains the domain validation regex (idempotency / injection prevention); + - exposes /etc/sovran-hosts-update.sh as a symlink via ``source =`` (not a + second raw ``text =`` body); + - does NOT rely on environment.systemPackages for the helper's dependencies. +""" + +import unittest +from pathlib import Path + +NIX_FILE = ( + Path(__file__).resolve().parents[2] + / "modules" + / "core" + / "local-domain-loopback.nix" +) + + +class LocalDomainLoopbackNixStructureTests(unittest.TestCase): + def setUp(self): + self.source = NIX_FILE.read_text() + + # ── writeShellApplication and explicit runtimeInputs ──────────────────── + + def test_uses_write_shell_application(self): + self.assertIn("pkgs.writeShellApplication", self.source) + + def test_runtime_inputs_includes_coreutils(self): + self.assertIn("pkgs.coreutils", self.source) + + def test_runtime_inputs_includes_gawk(self): + self.assertIn("pkgs.gawk", self.source) + + def test_runtime_inputs_includes_gnugrep(self): + self.assertIn("pkgs.gnugrep", self.source) + + def test_runtime_inputs_block_present(self): + self.assertIn("runtimeInputs", self.source) + + # ── Both execution paths use lib.getExe ───────────────────────────────── + + def test_exec_start_uses_lib_get_exe(self): + """systemd ExecStart must reference the Nix-store executable.""" + self.assertIn("ExecStart = lib.getExe hostsUpdateScript", self.source) + + def test_activation_script_uses_lib_get_exe(self): + """Activation text must call the same Nix-store executable.""" + self.assertIn("${lib.getExe hostsUpdateScript}", self.source) + + def test_exec_start_does_not_point_to_etc_path(self): + """ExecStart must NOT use the raw /etc path (which lacks a deterministic PATH).""" + self.assertNotIn('ExecStart = "/etc/sovran-hosts-update.sh"', self.source) + + # ── /etc symlink uses source =, not a second text = body ──────────────── + + def test_etc_entry_uses_source_not_text(self): + """The /etc/sovran-hosts-update.sh entry must be a symlink (source =), + not a second raw script body (text =).""" + self.assertIn( + 'environment.etc."sovran-hosts-update.sh".source', self.source + ) + + def test_etc_source_points_to_get_exe(self): + self.assertIn( + 'environment.etc."sovran-hosts-update.sh".source = lib.getExe hostsUpdateScript', + self.source, + ) + + # ── element-calling domain is supported ───────────────────────────────── + + def test_element_calling_domain_key_present(self): + self.assertIn("element-calling", self.source) + + # ── Robust awk -v variable passing ────────────────────────────────────── + + def test_awk_uses_dash_v_for_begin_marker(self): + """awk must receive the begin marker via -v, not by shell interpolation.""" + self.assertIn('awk -v begin=', self.source) + + def test_awk_uses_dash_v_for_end_marker(self): + self.assertIn('-v end=', self.source) + + def test_awk_does_not_interpolate_marker_into_program(self): + """The old pattern interpolated $BEGIN_MARKER directly into the awk source.""" + self.assertNotIn('/$BEGIN_MARKER', self.source) + self.assertNotIn('/$END_MARKER', self.source) + + # ── Domain validation ──────────────────────────────────────────────────── + + def test_domain_validation_regex_present(self): + """The hostname validation regex must still be present for injection prevention.""" + self.assertIn("grep -qE", self.source) + self.assertIn("[a-zA-Z0-9]", self.source) + + def test_invalid_domain_warning_present(self): + self.assertIn("skipping invalid domain value", self.source) + + # ── No environment.systemPackages reliance ─────────────────────────────── + + def test_no_environment_system_packages_for_helper(self): + """The helper's tools are declared via runtimeInputs; the module must + not add them to environment.systemPackages.""" + self.assertNotIn("environment.systemPackages", self.source) + + # ── Idempotency: existing Sovran block is removed before rewriting ─────── + + def test_existing_block_removal_logic_present(self): + """awk strip of the managed block must be present for idempotency.""" + self.assertIn("skip=1", self.source) + self.assertIn("skip=0", self.source) + + # ── Activation script warns on failure rather than silently swallowing ─── + + def test_activation_script_emits_warning_on_failure(self): + self.assertIn("warning: sovran-hosts-update", self.source) + + +if __name__ == "__main__": + unittest.main() diff --git a/modules/core/local-domain-loopback.nix b/modules/core/local-domain-loopback.nix index ffe8292..a49f684 100644 --- a/modules/core/local-domain-loopback.nix +++ b/modules/core/local-domain-loopback.nix @@ -32,22 +32,31 @@ # regenerated by the system activation script. The ``system.activationScripts`` # hook below converts it to a writable file each time the system is activated # (i.e. after every ``nixos-rebuild switch``) and then injects the Sovran block. -# The same script is also run by the ``sovran-hosts-update.service`` unit so -# that the Hub can trigger it immediately after saving a domain without -# requiring a full rebuild. +# The same wrapped Nix-store executable is reused by both the activation hook +# and the ``sovran-hosts-update.service`` unit, ensuring a deterministic runtime +# PATH in every execution context. -{ - # ── Helper script (stored in the Nix store, never reads /var/lib at eval) ── +let + # ── Wrapped Nix-store executable ────────────────────────────────────────── + # Built with pkgs.writeShellApplication so that all required runtime tools + # (awk, grep, coreutils) are declared explicitly and injected into PATH by + # Nix. Both the systemd service and the activation hook reference this same + # store-path executable — there is no second raw script body. + hostsUpdateScript = pkgs.writeShellApplication { + name = "sovran-hosts-update"; - environment.systemPackages = [ pkgs.coreutils ]; + # Declare every external command the script calls. These packages are + # added to the script's runtime PATH by writeShellApplication; nothing from + # the system PATH is relied upon. + runtimeInputs = [ + pkgs.coreutils # readlink, cp, mv, chmod, mktemp, rm, tr, head + pkgs.gawk # awk + pkgs.gnugrep # grep + ]; - environment.etc."sovran-hosts-update.sh" = { - mode = "0755"; text = '' - #!/bin/sh # Regenerate the Sovran-managed loopback block in /etc/hosts. # Safe to run multiple times — idempotent. - set -eu DOMAINS_DIR="/var/lib/domains" HOSTS_FILE="/etc/hosts" @@ -66,13 +75,14 @@ # ── Step 2: remove any existing Sovran block ────────────────────────── # Use a temp file so the operation is atomic. + # awk -v passes marker strings safely without shell interpolation. TMP=$(mktemp "$HOSTS_FILE.XXXXXX") trap 'rm -f "$TMP"' EXIT - awk " - /^$BEGIN_MARKER\$/ { skip=1; next } - /^$END_MARKER\$/ { skip=0; next } + awk -v begin="$BEGIN_MARKER" -v end="$END_MARKER" ' + $0 == begin { skip=1; next } + $0 == end { skip=0; next } !skip - " "$HOSTS_FILE" > "$TMP" + ' "$HOSTS_FILE" > "$TMP" # ── Step 3: collect valid configured service domains ────────────────── # NOTE: The hostname validation regex below must stay in sync with @@ -110,6 +120,14 @@ ''; }; +in +{ + # ── /etc/sovran-hosts-update.sh — operator discoverability symlink ───────── + # Retain the familiar /etc path so administrators can inspect or manually + # invoke the helper. The target is the wrapped Nix-store executable, so + # there is no second raw script body to keep in sync. + environment.etc."sovran-hosts-update.sh".source = lib.getExe hostsUpdateScript; + # ── Systemd service ──────────────────────────────────────────────────────── systemd.services.sovran-hosts-update = { @@ -126,18 +144,24 @@ serviceConfig = { Type = "oneshot"; RemainAfterExit = true; - ExecStart = "/etc/sovran-hosts-update.sh"; + # Point directly at the wrapped Nix-store executable, not the /etc path. + ExecStart = lib.getExe hostsUpdateScript; }; }; # ── Activation script (runs after every nixos-rebuild switch) ───────────── # This ensures the loopback block survives rebuilds that restore the /etc/hosts # symlink. The "users" and "etc" scripts must complete first. + # The same wrapped Nix-store executable used by the systemd service is + # referenced here, guaranteeing identical runtime dependencies in both + # execution contexts. system.activationScripts.sovranDomainLoopback = { text = '' - if [ -x /etc/sovran-hosts-update.sh ] && [ -d /var/lib/domains ]; then - /etc/sovran-hosts-update.sh || true + if [ -d /var/lib/domains ]; then + if ! ${lib.getExe hostsUpdateScript}; then + echo "warning: sovran-hosts-update: failed to update /etc/hosts loopback entries" >&2 + fi fi ''; deps = [ "etc" "users" ]; From 233a6e17a8a1f55ec8144a70ec36d37d3f3a4fe2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:33:53 +0000 Subject: [PATCH 083/140] Initial plan From e18ea204bff617ed9406795e365ab6408de67072 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:36:33 +0000 Subject: [PATCH 084/140] fix: group sovran hosts append redirection --- app/tests/test_local_domain_loopback_nix.py | 50 ++++++++++++++++++++- modules/core/local-domain-loopback.nix | 12 ++--- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/app/tests/test_local_domain_loopback_nix.py b/app/tests/test_local_domain_loopback_nix.py index 365930a..fe79872 100644 --- a/app/tests/test_local_domain_loopback_nix.py +++ b/app/tests/test_local_domain_loopback_nix.py @@ -16,11 +16,14 @@ Verifies that the sovran-hosts-update helper: - does NOT rely on environment.systemPackages for the helper's dependencies. """ +import shutil +import subprocess import unittest from pathlib import Path +REPO_ROOT = Path(__file__).resolve().parents[2] NIX_FILE = ( - Path(__file__).resolve().parents[2] + REPO_ROOT / "modules" / "core" / "local-domain-loopback.nix" @@ -31,6 +34,14 @@ class LocalDomainLoopbackNixStructureTests(unittest.TestCase): def setUp(self): self.source = NIX_FILE.read_text() + def _helper_script(self) -> str: + start = self.source.index("text = ''") + len("text = ''") + end = self.source.index(" '';", start) + return "\n".join( + line[6:] if line.startswith(" ") else line + for line in self.source[start:end].splitlines() + ).lstrip("\n") + # ── writeShellApplication and explicit runtimeInputs ──────────────────── def test_uses_write_shell_application(self): @@ -120,6 +131,43 @@ class LocalDomainLoopbackNixStructureTests(unittest.TestCase): self.assertIn("skip=1", self.source) self.assertIn("skip=0", self.source) + def test_managed_block_uses_grouped_append_redirect(self): + self.assertIn('} >> "$TMP"', self.source) + self.assertEqual(self.source.count('>> "$TMP"'), 1) + + def test_helper_script_passes_shellcheck(self): + shellcheck = shutil.which("shellcheck") + if shellcheck is None: + self.skipTest("shellcheck is not installed") + proc = subprocess.run( + [shellcheck, "-s", "bash", "-"], + input=self._helper_script(), + text=True, + capture_output=True, + check=False, + ) + output = proc.stdout + proc.stderr + self.assertEqual(proc.returncode, 0, output) + self.assertNotIn("SC2129", output) + + def test_helper_derivation_builds_when_nix_available(self): + nix = shutil.which("nix") + if nix is None: + self.skipTest("nix is not installed") + proc = subprocess.run( + [ + nix, + "build", + '.#nixosConfigurations.nixos.config.environment.etc."sovran-hosts-update.sh".source', + "--no-link", + ], + cwd=REPO_ROOT, + text=True, + capture_output=True, + check=False, + ) + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + # ── Activation script warns on failure rather than silently swallowing ─── def test_activation_script_emits_warning_on_failure(self): diff --git a/modules/core/local-domain-loopback.nix b/modules/core/local-domain-loopback.nix index a49f684..89adfed 100644 --- a/modules/core/local-domain-loopback.nix +++ b/modules/core/local-domain-loopback.nix @@ -107,11 +107,13 @@ let # ── Step 4: append the Sovran block if there are any entries ────────── if [ -n "$ENTRIES" ]; then - printf '\n%s\n' "$BEGIN_MARKER" >> "$TMP" - printf '%s\n' "# These entries route configured service domains to local Caddy." >> "$TMP" - printf '%s\n' "# They are managed automatically — do not edit this block." >> "$TMP" - printf '%s\n' "$ENTRIES" >> "$TMP" - printf '%s\n' "$END_MARKER" >> "$TMP" + { + printf '\n%s\n' "$BEGIN_MARKER" + printf '%s\n' "# These entries route configured service domains to local Caddy." + printf '%s\n' "# They are managed automatically — do not edit this block." + printf '%s\n' "$ENTRIES" + printf '%s\n' "$END_MARKER" + } >> "$TMP" fi # ── Step 5: atomically replace /etc/hosts ───────────────────────────── From d2c50038b3cf56d03455fada60eb5550d3101c73 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:37:48 +0000 Subject: [PATCH 085/140] test: derive nix helper build attr from flake --- app/tests/test_local_domain_loopback_nix.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/tests/test_local_domain_loopback_nix.py b/app/tests/test_local_domain_loopback_nix.py index fe79872..3b13958 100644 --- a/app/tests/test_local_domain_loopback_nix.py +++ b/app/tests/test_local_domain_loopback_nix.py @@ -16,12 +16,23 @@ Verifies that the sovran-hosts-update helper: - does NOT rely on environment.systemPackages for the helper's dependencies. """ +import re import shutil import subprocess import unittest from pathlib import Path +NIX_STRING_INDENT = 6 REPO_ROOT = Path(__file__).resolve().parents[2] +FLAKE_SOURCE = (REPO_ROOT / "flake.nix").read_text() +PRIMARY_NIXOS_CONFIGURATION = re.search( + r"nixosConfigurations\.([A-Za-z0-9_-]+)\s*=", + FLAKE_SOURCE, +).group(1) +HELPER_BUILD_ATTR = ( + f'.#nixosConfigurations.{PRIMARY_NIXOS_CONFIGURATION}.config.environment.etc.' + '"sovran-hosts-update.sh".source' +) NIX_FILE = ( REPO_ROOT / "modules" @@ -38,7 +49,9 @@ class LocalDomainLoopbackNixStructureTests(unittest.TestCase): start = self.source.index("text = ''") + len("text = ''") end = self.source.index(" '';", start) return "\n".join( - line[6:] if line.startswith(" ") else line + line[NIX_STRING_INDENT:] + if line.startswith(" " * NIX_STRING_INDENT) + else line for line in self.source[start:end].splitlines() ).lstrip("\n") @@ -158,7 +171,7 @@ class LocalDomainLoopbackNixStructureTests(unittest.TestCase): [ nix, "build", - '.#nixosConfigurations.nixos.config.environment.etc."sovran-hosts-update.sh".source', + HELPER_BUILD_ATTR, "--no-link", ], cwd=REPO_ROOT, From 24e3049b288daf5c9892c1e435a90ecfa767323f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 16 Jul 2026 20:38:48 +0000 Subject: [PATCH 086/140] test: harden flake configuration detection --- app/tests/test_local_domain_loopback_nix.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/tests/test_local_domain_loopback_nix.py b/app/tests/test_local_domain_loopback_nix.py index 3b13958..72d2a12 100644 --- a/app/tests/test_local_domain_loopback_nix.py +++ b/app/tests/test_local_domain_loopback_nix.py @@ -25,10 +25,13 @@ from pathlib import Path NIX_STRING_INDENT = 6 REPO_ROOT = Path(__file__).resolve().parents[2] FLAKE_SOURCE = (REPO_ROOT / "flake.nix").read_text() -PRIMARY_NIXOS_CONFIGURATION = re.search( +PRIMARY_NIXOS_CONFIGURATION_MATCH = re.search( r"nixosConfigurations\.([A-Za-z0-9_-]+)\s*=", FLAKE_SOURCE, -).group(1) +) +if PRIMARY_NIXOS_CONFIGURATION_MATCH is None: + raise RuntimeError("Could not determine the primary nixosConfigurations entry from flake.nix") +PRIMARY_NIXOS_CONFIGURATION = PRIMARY_NIXOS_CONFIGURATION_MATCH.group(1) HELPER_BUILD_ATTR = ( f'.#nixosConfigurations.{PRIMARY_NIXOS_CONFIGURATION}.config.environment.etc.' '"sovran-hosts-update.sh".source' @@ -161,7 +164,6 @@ class LocalDomainLoopbackNixStructureTests(unittest.TestCase): ) output = proc.stdout + proc.stderr self.assertEqual(proc.returncode, 0, output) - self.assertNotIn("SC2129", output) def test_helper_derivation_builds_when_nix_available(self): nix = shutil.which("nix") From ce4a8f5a70f548836e5bbbd8f779faf3e2ca04e7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:49:35 +0000 Subject: [PATCH 087/140] Initial plan From 08f650cc3555ce68c1afc70d7f72120fecf2faa7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:56:08 +0000 Subject: [PATCH 088/140] Implement reliable exFAT manual backup workflow --- .../scripts/sovran-hub-backup.sh | 650 ++++++++++++++---- app/sovran_systemsos_web/server.py | 100 ++- app/sovran_systemsos_web/static/js/support.js | 7 +- app/tests/test_manual_backup_workflow.py | 41 ++ modules/core/sovran-hub.nix | 11 +- 5 files changed, 676 insertions(+), 133 deletions(-) create mode 100644 app/tests/test_manual_backup_workflow.py diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index d6a285f..d402255 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -17,13 +17,24 @@ set -euo pipefail BACKUP_LOG="/var/log/sovran-hub-backup.log" BACKUP_STATUS="/var/log/sovran-hub-backup.status" MEDIA_ROOT="/run/media" -MIN_FREE_GB=10 HUB_CONFIG_JSON="/var/lib/sovran-hub/config.json" ROLE_STATE_NIX="/etc/nixos/role-state.nix" +SECOND_DRIVE_MOUNT="/run/media/Second_Drive" +SAFETY_MARGIN_BYTES=$((1024 * 1024 * 1024)) # ── Internal drive labels/paths to NEVER use as backup targets ─── INTERNAL_LABELS=("BTCEcoandBackup" "sovran_systemsos") -INTERNAL_MOUNTS=("/run/media/Second_Drive" "/boot/efi" "/") +INTERNAL_MOUNTS=("$SECOND_DRIVE_MOUNT" "/boot/efi" "/") + +FAILED_ALREADY=0 +BACKUP_COMPLETE=0 +LND_STOPPED=0 +LND_UNITS_TO_RESTART=() + +ARCHIVE_FILES=() +DB_DUMP_FILES=() +MANIFEST_EXCLUDES=() +LND_BACKUP_NOTES=() # ── Logging helpers ────────────────────────────────────────────── @@ -37,16 +48,58 @@ set_status() { } fail() { + FAILED_ALREADY=1 log "ERROR: $*" set_status "FAILED" exit 1 } +cleanup() { + local rc=$? + local restart_failed=0 + + if [[ "$LND_STOPPED" -eq 1 ]]; then + log "Restarting previously active LND-related services…" + for (( idx=${#LND_UNITS_TO_RESTART[@]}-1 ; idx>=0 ; idx-- )); do + local unit="${LND_UNITS_TO_RESTART[$idx]}" + if systemctl start "$unit"; then + log "Started $unit" + else + log "ERROR: Failed to start $unit" + restart_failed=1 + fi + done + LND_STOPPED=0 + fi + + if [[ "$restart_failed" -eq 1 ]]; then + rc=1 + FAILED_ALREADY=1 + set_status "FAILED" + fi + + if [[ "$BACKUP_COMPLETE" -eq 1 && "$rc" -eq 0 ]]; then + return + fi + + if [[ "$FAILED_ALREADY" -eq 0 ]]; then + log "ERROR: Backup terminated unexpectedly (exit code $rc)." + set_status "FAILED" + fi +} + +trap cleanup EXIT +trap 'exit 1' INT TERM + +require_cmd() { + local cmd="$1" + command -v "$cmd" >/dev/null 2>&1 || fail "Required command not found: $cmd" +} + # ── Check whether a mount point is an internal drive ──────────── is_internal() { local mnt="$1" - # Reject known internal mount points and their subdirectories for internal in "${INTERNAL_MOUNTS[@]}"; do if [[ "$mnt" == "$internal" || "$mnt" == "${internal}/"* ]]; then return 0 @@ -59,39 +112,37 @@ is_internal() { find_external_drive() { local target="" - # lsblk JSON output: NAME,LABEL,MOUNTPOINT,HOTPLUG,RM,TYPE - if command -v lsblk &>/dev/null; then - while IFS=$'\t' read -r dev_type hotplug removable label mountpoint; do - # Must be a partition or disk, and be removable/hotplug - [[ "$dev_type" == "part" || "$dev_type" == "disk" ]] || continue - [[ "$hotplug" == "1" || "$removable" == "1" ]] || continue - [[ -n "$mountpoint" ]] || continue - # Filter out internal labels - local skip=0 - for lbl in "${INTERNAL_LABELS[@]}"; do - [[ "$label" == "$lbl" ]] && skip=1 && break - done - [[ "$skip" -eq 1 ]] && continue + while IFS=$'\t' read -r dev_type hotplug removable label mountpoint; do + [[ "$dev_type" == "part" || "$dev_type" == "disk" ]] || continue + [[ "$hotplug" == "1" || "$removable" == "1" ]] || continue + [[ -n "$mountpoint" ]] || continue - # Filter out internal mount points - is_internal "$mountpoint" && continue + local skip=0 + for lbl in "${INTERNAL_LABELS[@]}"; do + [[ "$label" == "$lbl" ]] && skip=1 && break + done + [[ "$skip" -eq 1 ]] && continue - if mountpoint -q "$mountpoint" 2>/dev/null; then - target="$mountpoint" - break - fi - done < <(lsblk -J -o NAME,LABEL,MOUNTPOINT,HOTPLUG,RM,TYPE 2>/dev/null | \ - python3 -c " + is_internal "$mountpoint" && continue + + if mountpoint -q "$mountpoint" 2>/dev/null; then + target="$mountpoint" + break + fi + done < <(lsblk -J -o NAME,LABEL,MOUNTPOINT,HOTPLUG,RM,TYPE 2>/dev/null | \ + python3 -c " import sys, json -data = json.load(sys.stdin) + def flatten(devs): for d in devs: yield d for c in d.get('children', []): yield from flatten([c]) + +data = json.load(sys.stdin) for d in flatten(data.get('blockdevices', [])): - print('\t'.join([ + print('\\t'.join([ d.get('type') or '', str(d.get('hotplug') or '0'), str(d.get('rm') or '0'), @@ -99,24 +150,10 @@ for d in flatten(data.get('blockdevices', [])): d.get('mountpoint') or '', ])) " 2>/dev/null || true) - fi - # Fallback: walk /run/media/ if lsblk produced nothing if [[ -z "$target" && -d "$MEDIA_ROOT" ]]; then while IFS= read -r -d '' mnt; do is_internal "$mnt" && continue - # Check label via lsblk on the device backing this mount - local dev - dev=$(findmnt -n -o SOURCE "$mnt" 2>/dev/null || true) - if [[ -n "$dev" ]]; then - local lbl - lbl=$(lsblk -n -o LABEL "$dev" 2>/dev/null || true) - local skip=0 - for internal_lbl in "${INTERNAL_LABELS[@]}"; do - [[ "$lbl" == "$internal_lbl" ]] && skip=1 && break - done - [[ "$skip" -eq 1 ]] && continue - fi if mountpoint -q "$mnt" 2>/dev/null; then target="$mnt" break @@ -128,16 +165,10 @@ for d in flatten(data.get('blockdevices', [])): } # ── Detect the configured system role ─────────────────────────── -# -# Priority: -# 1. Hub config JSON (/var/lib/sovran-hub/config.json) — "role" key -# 2. role-state.nix (/etc/nixos/role-state.nix) — grep for true flag -# 3. Default: server_plus_desktop detect_role() { local role="server_plus_desktop" - # 1. Try the Hub config JSON if [[ -f "$HUB_CONFIG_JSON" ]] && command -v python3 &>/dev/null; then local r r=$(python3 -c \ @@ -149,7 +180,6 @@ detect_role() { fi fi - # 2. Fall back to parsing role-state.nix if [[ -f "$ROLE_STATE_NIX" ]]; then if grep -q 'roles\.desktop = lib\.mkDefault true' "$ROLE_STATE_NIX" 2>/dev/null; then role="desktop" @@ -161,6 +191,64 @@ detect_role() { echo "$role" } +validate_target_mount() { + local target="$1" + [[ "$target" == "${MEDIA_ROOT}/"* ]] || fail "Target '$target' must be mounted under $MEDIA_ROOT." + [[ -d "$target" ]] || fail "Target path '$target' does not exist." + mountpoint -q "$target" || fail "Target path '$target' is not a mount point." + + local fstype="" + fstype=$(findmnt -n -o FSTYPE -T "$target" 2>/dev/null || true) + [[ -n "$fstype" ]] || fail "Could not determine filesystem type for '$target'." + + if [[ "$fstype" != "exfat" && "$fstype" != "fuseblk" ]]; then + fail "Target '$target' must be exFAT (detected filesystem: $fstype)." + fi + + if [[ "$fstype" == "fuseblk" ]]; then + local src_dev blk_type + src_dev=$(findmnt -n -o SOURCE -T "$target" 2>/dev/null || true) + blk_type="" + if [[ -n "$src_dev" ]]; then + blk_type=$(lsblk -no FSTYPE "$src_dev" 2>/dev/null || true) + [[ -z "$blk_type" ]] && blk_type=$(blkid -o value -s TYPE "$src_dev" 2>/dev/null || true) + fi + if [[ "$blk_type" != "exfat" && "$blk_type" != "fuseblk" ]]; then + fail "Target '$target' is fuseblk but not identified as exFAT-compatible." + fi + fi + + local write_test + write_test="$target/.sovran-write-test-$$" + if ! ( : > "$write_test" && echo "ok" >> "$write_test" && rm -f "$write_test" ); then + fail "Target '$target' is not writable." + fi + + log "Verified backup target filesystem: $fstype" +} + +has_unit() { + systemctl cat "$1" >/dev/null 2>&1 +} + +is_unit_active() { + systemctl is-active --quiet "$1" +} + +estimate_path_bytes() { + local path="$1" + shift || true + [[ -e "$path" ]] || { + echo 0 + return + } + + local size + size=$(du -s -B1 -x "$@" "$path" 2>/dev/null | awk '{print $1}' || true) + [[ -n "$size" ]] || size=0 + echo "$size" +} + # ── Initialise log file ────────────────────────────────────────── : > "$BACKUP_LOG" @@ -169,14 +257,30 @@ set_status "RUNNING" log "=== Sovran_SystemsOS External Hub Backup ===" log "Starting backup process…" +require_cmd tar +require_cmd sha256sum +require_cmd findmnt +require_cmd lsblk +require_cmd mountpoint +require_cmd df +require_cmd du +require_cmd awk +require_cmd sort +require_cmd find +require_cmd systemctl +require_cmd hostname +require_cmd date +require_cmd python3 +require_cmd runuser + # ── Detect system role ─────────────────────────────────────────── ROLE="$(detect_role)" case "$ROLE" in - desktop) ROLE_LABEL="Desktop Only" ;; - node) ROLE_LABEL="Node (Bitcoin-only)" ;; - server_plus_desktop) ROLE_LABEL="Server + Desktop" ;; - *) ROLE_LABEL="$ROLE" ;; + desktop) ROLE_LABEL="Desktop Only" ;; + node) ROLE_LABEL="Node (Bitcoin-only)" ;; + server_plus_desktop) ROLE_LABEL="Server + Desktop" ;; + *) ROLE_LABEL="$ROLE" ;; esac log "Detected role: $ROLE_LABEL" @@ -184,7 +288,6 @@ log "Detected role: $ROLE_LABEL" if [[ -n "${BACKUP_TARGET:-}" ]]; then TARGET="$BACKUP_TARGET" - # Safety: never allow internal drives even if explicitly passed if is_internal "$TARGET"; then fail "Target '$TARGET' is an internal system drive and cannot be used for external backup." fi @@ -193,106 +296,361 @@ else log "Auto-detecting external USB drives…" TARGET="$(find_external_drive)" if [[ -z "$TARGET" ]]; then - fail "No external USB drive detected. " \ - "Please plug in an exFAT-formatted USB drive (≥500 GB) and try again." + fail "No external USB drive detected. Please plug in an exFAT-formatted USB drive and try again." fi log "Detected external drive: $TARGET" fi -# ── Verify mount point ─────────────────────────────────────────── +validate_target_mount "$TARGET" -[[ -d "$TARGET" ]] || fail "Target path '$TARGET' does not exist." -mountpoint -q "$TARGET" || fail "Target path '$TARGET' is not a mount point." +# ── Plan role-aware source scope and exclusions ───────────────── -# ── Check free disk space (require ≥ 10 GB) ────────────────────── +LND_AVAILABLE=0 +if [[ "$ROLE" != "desktop" ]] && [[ -d /var/lib/lnd ]] && has_unit "lnd.service"; then + LND_AVAILABLE=1 +fi -FREE_KB=$(df -k --output=avail "$TARGET" | tail -1) -FREE_GB=$(( FREE_KB / 1024 / 1024 )) +if [[ "$ROLE" == "desktop" ]]; then + MANIFEST_EXCLUDES+=("/etc/nix-bitcoin-secrets (not applicable for Desktop Only role)") +else + MANIFEST_EXCLUDES+=("/etc/nix-bitcoin-secrets skipped when path absent") +fi + +MANIFEST_EXCLUDES+=( + "/run/media/Second_Drive (never traversed)" + "/run/media/Second_Drive/BTCEcoandBackup/Bitcoin_Node (excluded; internal second-drive data)" + "/run/media/Second_Drive/BTCEcoandBackup/Electrs_Data (excluded; internal second-drive data)" + "/var/lib/bitcoind (excluded from manual backup)" + "/var/lib/electrs (excluded from manual backup)" + "/var/lib/*/log and /var/lib/*/logs" + "/var/lib/*/cache and /var/lib/*/tmp" + "/home/*/.cache and /home/*/.local/share/Trash" +) + +if [[ "$ROLE" == "desktop" || "$LND_AVAILABLE" -eq 1 ]]; then + MANIFEST_EXCLUDES+=("/var/lib/lnd from general /var/lib archive") +fi + +# ── Estimate required free space ───────────────────────────────── + +ETC_NIXOS_BYTES=$(estimate_path_bytes /etc/nixos) +HOME_BYTES=$(estimate_path_bytes /home --exclude='*/.cache' --exclude='*/.local/share/Trash' --exclude='*/Trash') +SECRETS_BYTES=0 +if [[ "$ROLE" != "desktop" ]]; then + SECRETS_BYTES=$(estimate_path_bytes /etc/nix-bitcoin-secrets) +fi + +VAR_LIB_BYTES=$(estimate_path_bytes /var/lib \ + --exclude='bitcoind' \ + --exclude='electrs' \ + --exclude='lnd' \ + --exclude='*/log' \ + --exclude='*/logs' \ + --exclude='*/cache' \ + --exclude='*/tmp') + +LND_BYTES=0 +if [[ "$LND_AVAILABLE" -eq 1 ]]; then + LND_BYTES=$(estimate_path_bytes /var/lib/lnd) +fi + +ESTIMATED_BYTES=$(( ETC_NIXOS_BYTES + HOME_BYTES + SECRETS_BYTES + VAR_LIB_BYTES + LND_BYTES )) +REQUIRED_BYTES=$(( ESTIMATED_BYTES + (ESTIMATED_BYTES / 5) + SAFETY_MARGIN_BYTES )) + +FREE_BYTES=$(df -B1 --output=avail "$TARGET" | tail -1 | tr -d ' ') +FREE_GB=$(( FREE_BYTES / 1024 / 1024 / 1024 )) +REQUIRED_GB=$(( REQUIRED_BYTES / 1024 / 1024 / 1024 )) + +log "Estimated backup size: $(( ESTIMATED_BYTES / 1024 / 1024 / 1024 )) GB" +log "Required free space (with safety margin): ${REQUIRED_GB} GB" log "Free space on drive: ${FREE_GB} GB" -(( FREE_GB >= MIN_FREE_GB )) || \ - fail "Not enough free space on drive (${FREE_GB} GB available, ${MIN_FREE_GB} GB required)." + +(( FREE_BYTES >= REQUIRED_BYTES )) || \ + fail "Not enough free space on drive (${FREE_GB} GB available, ${REQUIRED_GB} GB required)." # ── Create timestamped backup directory ───────────────────────── TIMESTAMP="$(date '+%Y%m%d_%H%M%S')" BACKUP_DIR="${TARGET}/Sovran_SystemsOS_Backup/${TIMESTAMP}" -mkdir -p "$BACKUP_DIR" +DB_DUMP_DIR="$BACKUP_DIR/database-dumps" +mkdir -p "$BACKUP_DIR" "$DB_DUMP_DIR" log "Backup destination: $BACKUP_DIR" -# ── Stage 1/4: NixOS configuration ────────────────────────────── +create_tar_archive() { + local archive_name="$1" + shift + local archive_path="$BACKUP_DIR/$archive_name" + + log "Creating $archive_name …" + tar \ + --create \ + --file "$archive_path" \ + --numeric-owner \ + --acls \ + --xattrs \ + --sparse \ + --one-file-system \ + "$@" + + ARCHIVE_FILES+=("$archive_name") + log "Created archive: $archive_name" +} + +export_postgresql_dumps() { + if ! command -v pg_dump >/dev/null 2>&1 || ! has_unit "postgresql.service"; then + log "PostgreSQL tools/service not available — skipping PostgreSQL exports." + return + fi + + if ! is_unit_active "postgresql.service"; then + log "PostgreSQL service is not active — skipping PostgreSQL exports." + return + fi + + log "Exporting PostgreSQL globals and databases…" + local globals_file="$DB_DUMP_DIR/postgresql_globals.sql" + runuser -u postgres -- pg_dumpall --globals-only > "$globals_file" || \ + fail "Failed to export PostgreSQL globals." + DB_DUMP_FILES+=("database-dumps/postgresql_globals.sql") + + local dbs + dbs=$(runuser -u postgres -- psql -Atqc "SELECT datname FROM pg_database WHERE datistemplate = false AND datallowconn AND datname <> 'postgres';" 2>/dev/null || true) + + if [[ -z "$dbs" ]]; then + log "No non-template PostgreSQL application databases found." + return + fi + + while IFS= read -r db; do + [[ -n "$db" ]] || continue + local safe_db + safe_db="$(echo "$db" | tr -c '[:alnum:]_.-' '_')" + local out_file="$DB_DUMP_DIR/postgresql_${safe_db}.dump" + runuser -u postgres -- pg_dump --format=custom --file "$out_file" "$db" || \ + fail "Failed to export PostgreSQL database '$db'." + DB_DUMP_FILES+=("database-dumps/postgresql_${safe_db}.dump") + done <<< "$dbs" +} + +export_mariadb_dumps() { + local dump_cmd="" + local query_cmd="" + local mariadb_unit="" + + if command -v mariadb-dump >/dev/null 2>&1; then + dump_cmd="mariadb-dump" + elif command -v mysqldump >/dev/null 2>&1; then + dump_cmd="mysqldump" + fi + + if command -v mariadb >/dev/null 2>&1; then + query_cmd="mariadb" + elif command -v mysql >/dev/null 2>&1; then + query_cmd="mysql" + fi + + if [[ -z "$dump_cmd" || -z "$query_cmd" ]]; then + log "MariaDB dump/query tools not available — skipping MariaDB exports." + return + fi + + if has_unit "mariadb.service" && is_unit_active "mariadb.service"; then + mariadb_unit="mariadb.service" + elif has_unit "mysql.service" && is_unit_active "mysql.service"; then + mariadb_unit="mysql.service" + else + log "MariaDB service is not active — skipping MariaDB exports." + return + fi + + log "Exporting MariaDB databases from ${mariadb_unit}…" + + local dbs + dbs=$($query_cmd -N -e "SHOW DATABASES" 2>/dev/null || true) + if [[ -z "$dbs" ]]; then + log "No MariaDB databases found." + return + fi + + while IFS= read -r db; do + [[ -n "$db" ]] || continue + case "$db" in + information_schema|performance_schema|mysql|sys) continue ;; + esac + + local safe_db out_file + safe_db="$(echo "$db" | tr -c '[:alnum:]_.-' '_')" + out_file="$DB_DUMP_DIR/mariadb_${safe_db}.sql" + + $dump_cmd --single-transaction --quick --routines --events --triggers "$db" > "$out_file" || \ + fail "Failed to export MariaDB database '$db'." + + DB_DUMP_FILES+=("database-dumps/mariadb_${safe_db}.sql") + done <<< "$dbs" +} + +export_lnd_scb_if_possible() { + [[ "$LND_AVAILABLE" -eq 1 ]] || return + + local scb_file="$BACKUP_DIR/lnd-static-channel-backup.scb" + local attempts=( + "lncli exportchanbackup --all --output_file $scb_file" + "lncli -n mainnet exportchanbackup --all --output_file $scb_file" + "runuser -u lnd -- lncli exportchanbackup --all --output_file $scb_file" + "runuser -u lnd -- lncli -n mainnet exportchanbackup --all --output_file $scb_file" + ) + + if ! command -v lncli >/dev/null 2>&1; then + log "lncli not available — skipping Static Channel Backup export." + LND_BACKUP_NOTES+=("Static Channel Backup skipped (lncli unavailable)") + return + fi + + if ! is_unit_active "lnd.service"; then + log "LND service is not active — skipping Static Channel Backup export." + LND_BACKUP_NOTES+=("Static Channel Backup skipped (lnd.service inactive)") + return + fi + + log "Exporting LND Static Channel Backup…" + local attempt + for attempt in "${attempts[@]}"; do + if eval "$attempt" >/dev/null 2>&1; then + DB_DUMP_FILES+=("lnd-static-channel-backup.scb") + LND_BACKUP_NOTES+=("Static Channel Backup exported via lncli") + log "LND Static Channel Backup exported." + return + fi + done + + log "WARNING: Unable to export LND Static Channel Backup with available lncli invocations." + LND_BACKUP_NOTES+=("Static Channel Backup export failed (no compatible lncli invocation succeeded)") +} + +capture_active_lnd_dependents() { + [[ "$LND_AVAILABLE" -eq 1 ]] || return + + LND_UNITS_TO_RESTART=() + local raw_units="" + raw_units=$(systemctl show lnd.service -p RequiredBy -p WantedBy --value 2>/dev/null | tr ' ' '\n' | grep '\.service$' | sort -u || true) + + while IFS= read -r unit; do + [[ -n "$unit" ]] || continue + if is_unit_active "$unit"; then + LND_UNITS_TO_RESTART+=("$unit") + fi + done <<< "$raw_units" + + if is_unit_active "lnd.service"; then + LND_UNITS_TO_RESTART+=("lnd.service") + fi +} + +stop_lnd_stack_if_needed() { + [[ "$LND_AVAILABLE" -eq 1 ]] || return + + capture_active_lnd_dependents + + if [[ "${#LND_UNITS_TO_RESTART[@]}" -eq 0 ]]; then + log "No active LND-related services needed stopping." + return + fi + + log "Stopping active services that depend on LND for clean /var/lib/lnd archive…" + + local unit + for unit in "${LND_UNITS_TO_RESTART[@]}"; do + if [[ "$unit" == "lnd.service" ]]; then + continue + fi + systemctl stop "$unit" || fail "Failed to stop dependent service: $unit" + log "Stopped $unit" + done + + if printf '%s\n' "${LND_UNITS_TO_RESTART[@]}" | grep -qx 'lnd.service'; then + systemctl stop lnd.service || fail "Failed to stop lnd.service" + log "Stopped lnd.service" + fi + + LND_STOPPED=1 +} + +# ── Stage 1/5: NixOS configuration ────────────────────────────── log "" -log "── Stage 1/4: NixOS configuration (/etc/nixos) ──────────────" +log "── Stage 1/5: NixOS configuration (/etc/nixos) ──────────────" if [[ -d /etc/nixos ]]; then - rsync -a --info=progress2 /etc/nixos/ "$BACKUP_DIR/nixos/" 2>&1 | tee -a "$BACKUP_LOG" || \ - fail "Stage 1 failed while copying /etc/nixos" + create_tar_archive "etc-nixos.tar" -C / etc/nixos log "Stage 1 complete." else log "WARNING: /etc/nixos not found — skipping." fi -# ── Stage 2/4: Secrets ────────────────────────────────────────── +# ── Stage 2/5: Secrets ────────────────────────────────────────── log "" -log "── Stage 2/4: Secrets ───────────────────────────────────────" -mkdir -p "$BACKUP_DIR/secrets" - +log "── Stage 2/5: Secrets (/etc/nix-bitcoin-secrets) ───────────" if [[ "$ROLE" == "desktop" ]]; then log "Skipping /etc/nix-bitcoin-secrets — not applicable for Desktop Only role." +elif [[ -e /etc/nix-bitcoin-secrets ]]; then + create_tar_archive "etc-nix-bitcoin-secrets.tar" -C / etc/nix-bitcoin-secrets else - if [[ -e /etc/nix-bitcoin-secrets ]]; then - rsync -a --info=progress2 /etc/nix-bitcoin-secrets "$BACKUP_DIR/secrets/" 2>&1 | tee -a "$BACKUP_LOG" || \ - log "WARNING: Could not copy /etc/nix-bitcoin-secrets — continuing." - else - log " (not found: /etc/nix-bitcoin-secrets — skipping)" - fi + log "(not found: /etc/nix-bitcoin-secrets — skipping)" fi - log "Stage 2 complete." -# ── Stage 3/4: Home directory ──────────────────────────────────── +# ── Stage 3/5: Home directory ─────────────────────────────────── log "" -log "── Stage 3/4: Home directory (/home) ───────────────────────" +log "── Stage 3/5: Home directory (/home) ───────────────────────" if [[ -d /home ]]; then - rsync -a --info=progress2 \ - --exclude='.cache/' \ - --exclude='.local/share/Trash/' \ - --exclude='*/Trash/' \ - /home/ "$BACKUP_DIR/home/" 2>&1 | tee -a "$BACKUP_LOG" || \ - fail "Stage 3 failed while copying /home" + create_tar_archive "home.tar" \ + -C / \ + --exclude='home/*/.cache' \ + --exclude='home/*/.local/share/Trash' \ + --exclude='home/*/Trash' \ + home log "Stage 3 complete." else log "WARNING: /home not found — skipping." fi -# ── Stage 4/4: System data ─────────────────────────────────────── +# ── Stage 4/5: Database exports + LND artifacts ──────────────── log "" -log "── Stage 4/4: System data (/var/lib) ────────────────────────" -if [[ "$ROLE" == "desktop" ]]; then - if [[ -d /var/lib ]]; then - rsync -a --info=progress2 \ - --filter='- /lnd/***' \ - --exclude='logs/' \ - --exclude='log/' \ - --exclude='*/logs/' \ - --exclude='*/log/' \ - /var/lib/ "$BACKUP_DIR/var-lib/" 2>&1 | tee -a "$BACKUP_LOG" || \ - fail "Stage 4 failed while copying /var/lib for Desktop Only role" - log "Stage 4 complete (Desktop Only role excludes /var/lib/lnd)." - else - log "WARNING: /var/lib not found — skipping." +log "── Stage 4/5: Database and LND consistency exports ─────────" +export_postgresql_dumps +export_mariadb_dumps +export_lnd_scb_if_possible + +if [[ "$LND_AVAILABLE" -eq 1 ]]; then + stop_lnd_stack_if_needed + create_tar_archive "var-lib-lnd-clean.tar" -C / var/lib/lnd + LND_BACKUP_NOTES+=("Created clean raw /var/lib/lnd archive after controlled service stop") +fi + +log "Stage 4 complete." + +# ── Stage 5/5: System data ────────────────────────────────────── + +log "" +log "── Stage 5/5: System data (/var/lib) ───────────────────────" +if [[ -d /var/lib ]]; then + VAR_LIB_EXCLUDES=( + --exclude='var/lib/bitcoind' + --exclude='var/lib/electrs' + --exclude='var/lib/*/log' + --exclude='var/lib/*/logs' + --exclude='var/lib/*/cache' + --exclude='var/lib/*/tmp' + ) + + if [[ "$ROLE" == "desktop" || "$LND_AVAILABLE" -eq 1 ]]; then + VAR_LIB_EXCLUDES+=(--exclude='var/lib/lnd') fi -elif [[ -d /var/lib ]]; then - rsync -a --info=progress2 \ - --exclude='logs/' \ - --exclude='log/' \ - --exclude='*/logs/' \ - --exclude='*/log/' \ - /var/lib/ "$BACKUP_DIR/var-lib/" 2>&1 | tee -a "$BACKUP_LOG" || \ - fail "Stage 4 failed while copying /var/lib" - log "Stage 4 complete." + + create_tar_archive "var-lib.tar" -C / "${VAR_LIB_EXCLUDES[@]}" var/lib + log "Stage 5 complete." else log "WARNING: /var/lib not found — skipping." fi @@ -301,21 +659,83 @@ fi log "" log "Generating BACKUP_MANIFEST.txt …" +MANIFEST_FILE="$BACKUP_DIR/BACKUP_MANIFEST.txt" +CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" + { echo "Sovran_SystemsOS Backup Manifest" - echo "Generated: $(date)" + echo "Generated: $(date -Is)" + echo "Timestamp: $TIMESTAMP" echo "Hostname: $(hostname)" echo "Role: $ROLE_LABEL" echo "Target: $TARGET" echo "" - echo "Contents:" - find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 | sort -} > "$BACKUP_DIR/BACKUP_MANIFEST.txt" -log "Manifest written to $BACKUP_DIR/BACKUP_MANIFEST.txt" + echo "Source paths included:" + echo "- /etc/nixos" + echo "- /home" + if [[ "$ROLE" != "desktop" ]]; then + echo "- /etc/nix-bitcoin-secrets (when present)" + fi + echo "- /var/lib" + echo "" + echo "Exclusions:" + for ex in "${MANIFEST_EXCLUDES[@]}"; do + echo "- $ex" + done + echo "" + echo "Archives:" + for archive in "${ARCHIVE_FILES[@]}"; do + echo "- $archive" + done + echo "" + echo "Database and LND exports:" + if [[ "${#DB_DUMP_FILES[@]}" -eq 0 && "${#LND_BACKUP_NOTES[@]}" -eq 0 ]]; then + echo "- none" + else + for dump in "${DB_DUMP_FILES[@]}"; do + echo "- $dump" + done + for note in "${LND_BACKUP_NOTES[@]}"; do + echo "- $note" + done + fi + echo "" + echo "Restore guidance:" + echo "- Verify artifacts: cd '$BACKUP_DIR' && sha256sum -c SHA256SUMS.txt" + echo "- Extract a tar archive: sudo tar --acls --xattrs --numeric-owner -xpf .tar -C /" + echo "- PostgreSQL globals: sudo -u postgres psql -f database-dumps/postgresql_globals.sql" + echo "- PostgreSQL DB dump: sudo -u postgres pg_restore --create --clean --if-exists -d postgres database-dumps/postgresql_.dump" + echo "- MariaDB DB dump: mariadb < database-dumps/mariadb_.sql" + echo "- LND SCB: keep lnd-static-channel-backup.scb with wallet seed for channel recovery procedures" + echo "" + echo "Important note: Bitcoin blockchain and Electrs index data are intentionally excluded" + echo "from manual external backup because they already live on the internal second drive" + echo "(/run/media/Second_Drive) and are reconstructable/internal-backup data." + echo "" + echo "Artifact listing:" + find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f | sort +} > "$MANIFEST_FILE" + +ARCHIVE_FILES+=("BACKUP_MANIFEST.txt") + +# ── Generate checksums for all backup artifacts ───────────────── + +log "Generating SHA-256 checksums …" +( + cd "$BACKUP_DIR" + while IFS= read -r -d '' file; do + sha256sum "$file" + done < <(find . -mindepth 1 -maxdepth 2 -type f ! -name 'SHA256SUMS.txt' -print0 | sort -z) +) > "$CHECKSUM_FILE" + +log "Manifest written to $MANIFEST_FILE" +log "Checksums written to $CHECKSUM_FILE" # ── Done ───────────────────────────────────────────────────────── log "" log "All Finished! Your data is now backed up to a third location." log "Please eject the drive safely before removing it from your Sovran Pro." + +BACKUP_COMPLETE=1 set_status "SUCCESS" diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 76674f3..5b8f999 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1451,6 +1451,12 @@ def _read_backup_status() -> str: return "IDLE" +def _write_backup_status(value: str) -> None: + """Write backup status file.""" + with open(BACKUP_STATUS, "w") as f: + f.write(value) + + def _read_backup_log(offset: int = 0) -> tuple[str, int]: """Read the backup log file from the given byte offset. Returns (new_text, new_offset).""" @@ -1467,6 +1473,12 @@ def _read_backup_log(offset: int = 0) -> tuple[str, int]: return "", 0 +def _append_backup_log(line: str) -> None: + """Append one line to backup log.""" + with open(BACKUP_LOG, "a") as f: + f.write(line.rstrip("\n") + "\n") + + _INTERNAL_LABELS = {"BTCEcoandBackup", "sovran_systemsos"} _INTERNAL_MOUNTS = {"/", "/boot/efi"} _INTERNAL_MOUNT_PREFIX = "/run/media/Second_Drive" @@ -1490,7 +1502,7 @@ def _detect_external_drives() -> list[dict]: /run/media/ directly if lsblk is unavailable, applying the same label/path filters. - Returns a list of dicts with name, path, free_gb, total_gb. + Returns a list of dicts with name, path, free_gb, total_gb, fstype. """ import json as _json import subprocess as _subprocess @@ -1501,7 +1513,7 @@ def _detect_external_drives() -> list[dict]: # ── Primary path: lsblk JSON ──────────────────────────────── try: result = _subprocess.run( - ["lsblk", "-J", "-o", "NAME,LABEL,MOUNTPOINT,HOTPLUG,RM,TYPE"], + ["lsblk", "-J", "-o", "NAME,LABEL,FSTYPE,MOUNTPOINT,HOTPLUG,RM,TYPE"], capture_output=True, text=True, timeout=10 ) if result.returncode == 0: @@ -1519,6 +1531,7 @@ def _detect_external_drives() -> list[dict]: hotplug = str(dev.get("hotplug", "0")) rm = str(dev.get("rm", "0")) label = dev.get("label") or "" + fstype = (dev.get("fstype") or "").lower() mountpoint = dev.get("mountpoint") or "" if dev_type not in ("part", "disk"): @@ -1544,6 +1557,7 @@ def _detect_external_drives() -> list[dict]: "path": mountpoint, "free_gb": free_gb, "total_gb": total_gb, + "fstype": fstype, }) seen_paths.add(mountpoint) except OSError: @@ -1577,11 +1591,20 @@ def _detect_external_drives() -> list[dict]: st = os.statvfs(drive_path) total_gb = round((st.f_blocks * st.f_frsize) / (1024 ** 3), 1) free_gb = round((st.f_bavail * st.f_frsize) / (1024 ** 3), 1) + fstype = "" + try: + fstype = _subprocess.run( + ["findmnt", "-n", "-o", "FSTYPE", "-T", drive_path], + capture_output=True, text=True, timeout=5 + ).stdout.strip().lower() + except Exception: + fstype = "" drives.append({ "name": drive_name, "path": drive_path, "free_gb": free_gb, "total_gb": total_gb, + "fstype": fstype, }) seen_paths.add(drive_path) except OSError: @@ -3682,6 +3705,22 @@ async def api_backup_drives(): return {"drives": drives} +async def _monitor_backup_subprocess(proc: asyncio.subprocess.Process) -> None: + """Mark status FAILED if backup subprocess exits unexpectedly.""" + rc = await proc.wait() + if rc == 0: + return + + loop = asyncio.get_event_loop() + status = await loop.run_in_executor(None, _read_backup_status) + if status in {"SUCCESS", "FAILED"}: + return + + msg = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Backup subprocess exited unexpectedly (code {rc})." + await loop.run_in_executor(None, _append_backup_log, msg) + await loop.run_in_executor(None, _write_backup_status, "FAILED") + + @app.post("/api/backup/run") async def api_backup_run(target: str = ""): """Start the backup script as a background subprocess. @@ -3692,6 +3731,26 @@ async def api_backup_run(target: str = ""): if status == "RUNNING": return {"ok": True, "status": "already_running"} + drives = await loop.run_in_executor(None, _detect_external_drives) + if not drives: + raise HTTPException(status_code=400, detail="No external backup drive detected.") + + drive_map = {d.get("path", ""): d for d in drives if d.get("path")} + if target: + if target not in drive_map: + raise HTTPException(status_code=400, detail="Selected backup target is not an available external drive.") + selected = drive_map[target] + else: + selected = drives[0] + + selected_target = selected.get("path", "") + selected_fstype = (selected.get("fstype") or "").lower() + if selected_fstype and selected_fstype not in {"exfat", "fuseblk"}: + raise HTTPException( + status_code=400, + detail=f"Selected drive filesystem '{selected_fstype}' is not supported for manual backup.", + ) + # Clear stale log before starting try: with open(BACKUP_LOG, "w") as f: @@ -3699,21 +3758,34 @@ async def api_backup_run(target: str = ""): except OSError: pass - env = dict(os.environ) - if target: - env["BACKUP_TARGET"] = target + try: + await loop.run_in_executor(None, _write_backup_status, "RUNNING") + except OSError as exc: + raise HTTPException(status_code=500, detail=f"Could not set backup status: {exc}") - # Fire-and-forget: the script writes its own status/log files. - # Progress is read by the client via /api/backup/status (same pattern - # as /api/updates/run and the rebuild feature). - await asyncio.create_subprocess_exec( - "/usr/bin/env", "bash", BACKUP_SCRIPT, - stdout=asyncio.subprocess.DEVNULL, - stderr=asyncio.subprocess.DEVNULL, - env=env, + await loop.run_in_executor( + None, + _append_backup_log, + f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Starting backup process…", ) - return {"ok": True, "status": "started"} + env = dict(os.environ) + env["BACKUP_TARGET"] = selected_target + + try: + proc = await asyncio.create_subprocess_exec( + "/usr/bin/env", "bash", BACKUP_SCRIPT, + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.DEVNULL, + env=env, + ) + except Exception as exc: + await loop.run_in_executor(None, _append_backup_log, f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Failed to launch backup script: {exc}") + await loop.run_in_executor(None, _write_backup_status, "FAILED") + raise HTTPException(status_code=500, detail="Failed to launch backup process.") + + asyncio.create_task(_monitor_backup_subprocess(proc)) + return {"ok": True, "status": "started", "target": selected_target} # ── Feature Manager endpoints ───────────────────────────────────── diff --git a/app/sovran_systemsos_web/static/js/support.js b/app/sovran_systemsos_web/static/js/support.js index 6078888..f6dd50c 100644 --- a/app/sovran_systemsos_web/static/js/support.js +++ b/app/sovran_systemsos_web/static/js/support.js @@ -491,7 +491,7 @@ function renderBackupReady(drives) { '
    Requirements
    ', '
      ', '
    1. USB hard drive plugged into one of the open USB ports on your Sovran Pro
    2. ', - '
    3. At least 500 GB of free space on the drive
    4. ', + '
    5. Enough free space for your selected backup data (the backup checks this before starting)
    6. ', '
    7. Drive must be formatted as exFAT
    8. ', '
    ', '
    ', @@ -584,9 +584,10 @@ async function pollBackupStatus() { logDiv.scrollTop = logDiv.scrollHeight; } _backupLogOffset = data.offset; - if (!data.running) { + var result = (data.result || "").toLowerCase(); + if (result === "success" || result === "failed") { stopBackupPoll(); - renderBackupDone(data.result === "success"); + renderBackupDone(result === "success"); } } catch (_) {} } diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py new file mode 100644 index 0000000..109bc8c --- /dev/null +++ b/app/tests/test_manual_backup_workflow.py @@ -0,0 +1,41 @@ +import unittest +from pathlib import Path + + +REPO_ROOT = Path(__file__).resolve().parents[2] +BACKUP_SCRIPT = REPO_ROOT / "app" / "sovran_systemsos_web" / "scripts" / "sovran-hub-backup.sh" +SERVER_FILE = REPO_ROOT / "app" / "sovran_systemsos_web" / "server.py" +SUPPORT_JS = REPO_ROOT / "app" / "sovran_systemsos_web" / "static" / "js" / "support.js" + + +class ManualBackupWorkflowTests(unittest.TestCase): + def test_backup_script_uses_tar_archives_with_checksums_and_exclusions(self): + source = BACKUP_SCRIPT.read_text() + + self.assertIn("tar \\", source) + self.assertIn("--create", source) + self.assertIn("--one-file-system", source) + self.assertIn("sha256sum", source) + self.assertIn("export_postgresql_dumps", source) + self.assertIn("export_mariadb_dumps", source) + self.assertIn("export_lnd_scb_if_possible", source) + self.assertIn("--exclude='var/lib/bitcoind'", source) + self.assertIn("--exclude='var/lib/electrs'", source) + self.assertIn("--exclude='var/lib/lnd'", source) + self.assertIn("set_status \"RUNNING\"", source) + self.assertIn("set_status \"SUCCESS\"", source) + self.assertIn("set_status \"FAILED\"", source) + self.assertNotIn("rsync -a", source) + + def test_backend_and_frontend_use_explicit_backup_terminal_states(self): + server_source = SERVER_FILE.read_text() + support_source = SUPPORT_JS.read_text() + + self.assertIn("_write_backup_status, \"RUNNING\"", server_source) + self.assertIn("_monitor_backup_subprocess", server_source) + self.assertIn("asyncio.create_task(_monitor_backup_subprocess(proc))", server_source) + self.assertIn("result === \"success\" || result === \"failed\"", support_source) + + +if __name__ == "__main__": + unittest.main() diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index 719d90f..af01ed7 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -388,7 +388,16 @@ in pkgs.nftables pkgs.iptables pkgs.hostname - ] ++ lib.optional cfg.services.bitcoin config.services.bitcoind.package; + pkgs.coreutils + pkgs.findutils + pkgs.gnugrep + pkgs.gnutar + pkgs.util-linux + ] + ++ lib.optional cfg.services.bitcoin config.services.bitcoind.package + ++ lib.optionals cfg.services.bitcoin [ pkgs.lnd ] + ++ lib.optionals (cfg.services.nextcloud || cfg.services.synapse) [ config.services.postgresql.package ] + ++ lib.optionals config.services.mysql.enable [ config.services.mysql.package ]; }; systemd.services.sovran-hub-update = { From 9a76e71dd0be779efac974c338986f373ab50caa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Jul 2026 16:58:34 +0000 Subject: [PATCH 089/140] Address validation feedback for backup workflow --- app/sovran_systemsos_web/scripts/sovran-hub-backup.sh | 4 ++-- app/sovran_systemsos_web/server.py | 3 ++- app/sovran_systemsos_web/static/js/support.js | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index d402255..9d2a2b9 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -664,7 +664,7 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" { echo "Sovran_SystemsOS Backup Manifest" - echo "Generated: $(date -Is)" + echo "Generated: $(date -u '+%Y-%m-%dT%H:%M:%SZ')" echo "Timestamp: $TIMESTAMP" echo "Hostname: $(hostname)" echo "Role: $ROLE_LABEL" @@ -701,7 +701,7 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" fi echo "" echo "Restore guidance:" - echo "- Verify artifacts: cd '$BACKUP_DIR' && sha256sum -c SHA256SUMS.txt" + echo "- Verify artifacts: cd && sha256sum -c SHA256SUMS.txt" echo "- Extract a tar archive: sudo tar --acls --xattrs --numeric-owner -xpf .tar -C /" echo "- PostgreSQL globals: sudo -u postgres psql -f database-dumps/postgresql_globals.sql" echo "- PostgreSQL DB dump: sudo -u postgres pg_restore --create --clean --if-exists -d postgres database-dumps/postgresql_.dump" diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 5b8f999..7faa16f 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1502,7 +1502,8 @@ def _detect_external_drives() -> list[dict]: /run/media/ directly if lsblk is unavailable, applying the same label/path filters. - Returns a list of dicts with name, path, free_gb, total_gb, fstype. + Returns: + list[dict]: Each dict contains name, path, free_gb, total_gb, fstype. """ import json as _json import subprocess as _subprocess diff --git a/app/sovran_systemsos_web/static/js/support.js b/app/sovran_systemsos_web/static/js/support.js index f6dd50c..a1e272b 100644 --- a/app/sovran_systemsos_web/static/js/support.js +++ b/app/sovran_systemsos_web/static/js/support.js @@ -584,7 +584,7 @@ async function pollBackupStatus() { logDiv.scrollTop = logDiv.scrollHeight; } _backupLogOffset = data.offset; - var result = (data.result || "").toLowerCase(); + const result = (data.result || "").toLowerCase(); if (result === "success" || result === "failed") { stopBackupPoll(); renderBackupDone(result === "success"); From 994a5ca1cd9bda063d9d1a88437f63f5ddb9dfa1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:00:32 +0000 Subject: [PATCH 090/140] Refine backup validation and manifest details --- .../scripts/sovran-hub-backup.sh | 3 +- app/sovran_systemsos_web/server.py | 37 ++++++++++++++++++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index 9d2a2b9..c0c1525 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -355,6 +355,7 @@ if [[ "$LND_AVAILABLE" -eq 1 ]]; then fi ESTIMATED_BYTES=$(( ETC_NIXOS_BYTES + HOME_BYTES + SECRETS_BYTES + VAR_LIB_BYTES + LND_BYTES )) +# Require 20% growth headroom plus an additional fixed 1 GiB safety margin. REQUIRED_BYTES=$(( ESTIMATED_BYTES + (ESTIMATED_BYTES / 5) + SAFETY_MARGIN_BYTES )) FREE_BYTES=$(df -B1 --output=avail "$TARGET" | tail -1 | tr -d ' ') @@ -716,8 +717,6 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f | sort } > "$MANIFEST_FILE" -ARCHIVE_FILES+=("BACKUP_MANIFEST.txt") - # ── Generate checksums for all backup artifacts ───────────────── log "Generating SHA-256 checksums …" diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 7faa16f..c8cd4e8 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1493,6 +1493,41 @@ def _is_internal_mount(mnt: str) -> bool: return False +def _is_supported_backup_fstype(path: str, fstype: str) -> bool: + """Return whether the target filesystem type is supported for manual backup.""" + fstype = (fstype or "").lower() + if fstype == "exfat": + return True + if fstype != "fuseblk": + return False + + src_dev = "" + try: + result = subprocess.run( + ["findmnt", "-n", "-o", "SOURCE", "-T", path], + capture_output=True, text=True, timeout=5, + ) + if result.returncode == 0: + src_dev = result.stdout.strip() + except Exception: + src_dev = "" + + if not src_dev: + return False + + for cmd in ( + ["lsblk", "-no", "FSTYPE", src_dev], + ["blkid", "-o", "value", "-s", "TYPE", src_dev], + ): + try: + result = subprocess.run(cmd, capture_output=True, text=True, timeout=5) + if result.returncode == 0 and result.stdout.strip().lower() in {"exfat", "fuseblk"}: + return True + except Exception: + continue + return False + + def _detect_external_drives() -> list[dict]: """Scan for mounted external USB drives. @@ -3746,7 +3781,7 @@ async def api_backup_run(target: str = ""): selected_target = selected.get("path", "") selected_fstype = (selected.get("fstype") or "").lower() - if selected_fstype and selected_fstype not in {"exfat", "fuseblk"}: + if selected_fstype and not _is_supported_backup_fstype(selected_target, selected_fstype): raise HTTPException( status_code=400, detail=f"Selected drive filesystem '{selected_fstype}' is not supported for manual backup.", From a1d8d3d4434f384b2872517c59a3b27224db320a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 16:23:49 +0000 Subject: [PATCH 091/140] Initial plan From 98f63fde73267867bc448296e15615f6c93ae8ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 16:29:10 +0000 Subject: [PATCH 092/140] Fix Manual Backup exit-code-127: add bash+gawk to service PATH, harden launcher --- app/sovran_systemsos_web/server.py | 34 +++++++- app/tests/test_manual_backup_workflow.py | 100 +++++++++++++++++++++++ modules/core/sovran-hub.nix | 2 + 3 files changed, 132 insertions(+), 4 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index c8cd4e8..494d4af 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -3742,8 +3742,18 @@ async def api_backup_drives(): async def _monitor_backup_subprocess(proc: asyncio.subprocess.Process) -> None: - """Mark status FAILED if backup subprocess exits unexpectedly.""" + """Drain stderr, then mark status FAILED if backup subprocess exits unexpectedly.""" + stderr_chunks: list[bytes] = [] + + async def _drain_stderr() -> None: + if proc.stderr is not None: + async for line in proc.stderr: + stderr_chunks.append(line) + + drain_task = asyncio.create_task(_drain_stderr()) rc = await proc.wait() + await drain_task + if rc == 0: return @@ -3752,7 +3762,9 @@ async def _monitor_backup_subprocess(proc: asyncio.subprocess.Process) -> None: if status in {"SUCCESS", "FAILED"}: return - msg = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Backup subprocess exited unexpectedly (code {rc})." + stderr_text = b"".join(stderr_chunks).decode("utf-8", errors="replace").strip() + detail = f" — stderr: {stderr_text}" if stderr_text else "" + msg = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Backup subprocess exited unexpectedly (code {rc}).{detail}" await loop.run_in_executor(None, _append_backup_log, msg) await loop.run_in_executor(None, _write_backup_status, "FAILED") @@ -3808,11 +3820,25 @@ async def api_backup_run(target: str = ""): env = dict(os.environ) env["BACKUP_TARGET"] = selected_target + bash_path = shutil.which("bash") + if bash_path is None: + no_bash_msg = ( + f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Cannot start backup:" + " interpreter 'bash' not found on PATH." + " Ensure pkgs.bash is in the sovran-hub-web service PATH." + ) + await loop.run_in_executor(None, _append_backup_log, no_bash_msg) + await loop.run_in_executor(None, _write_backup_status, "FAILED") + raise HTTPException( + status_code=500, + detail="Backup interpreter (bash) not available. Check service PATH configuration.", + ) + try: proc = await asyncio.create_subprocess_exec( - "/usr/bin/env", "bash", BACKUP_SCRIPT, + bash_path, BACKUP_SCRIPT, stdout=asyncio.subprocess.DEVNULL, - stderr=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, env=env, ) except Exception as exc: diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index 109bc8c..27ada9d 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -1,3 +1,4 @@ +import asyncio import unittest from pathlib import Path @@ -6,6 +7,7 @@ REPO_ROOT = Path(__file__).resolve().parents[2] BACKUP_SCRIPT = REPO_ROOT / "app" / "sovran_systemsos_web" / "scripts" / "sovran-hub-backup.sh" SERVER_FILE = REPO_ROOT / "app" / "sovran_systemsos_web" / "server.py" SUPPORT_JS = REPO_ROOT / "app" / "sovran_systemsos_web" / "static" / "js" / "support.js" +NIX_HUB_FILE = REPO_ROOT / "modules" / "core" / "sovran-hub.nix" class ManualBackupWorkflowTests(unittest.TestCase): @@ -36,6 +38,104 @@ class ManualBackupWorkflowTests(unittest.TestCase): self.assertIn("asyncio.create_task(_monitor_backup_subprocess(proc))", server_source) self.assertIn("result === \"success\" || result === \"failed\"", support_source) + # ── Regression tests for exit-code-127 / missing-interpreter bug ────────── + + def test_nix_service_path_includes_bash_and_gawk(self): + """Regression: pkgs.bash and pkgs.gawk must appear in the sovran-hub-web + service path so that the backup shell script and its awk calls can be + resolved at runtime without producing exit code 127.""" + nix_source = NIX_HUB_FILE.read_text() + self.assertIn( + "pkgs.bash", + nix_source, + "pkgs.bash must be declared in the sovran-hub-web systemd service path", + ) + self.assertIn( + "pkgs.gawk", + nix_source, + "pkgs.gawk must be declared in the sovran-hub-web systemd service path", + ) + + def test_server_resolves_bash_via_shutil_which(self): + """Regression: server must locate bash with shutil.which() rather than + relying on /usr/bin/env bash, so a missing interpreter is caught early + with a clear diagnostic instead of a cryptic exit-code-127 failure.""" + source = SERVER_FILE.read_text() + self.assertIn( + 'shutil.which("bash")', + source, + "server.py must resolve bash via shutil.which to catch missing interpreter", + ) + self.assertNotIn( + '"/usr/bin/env", "bash"', + source, + "server.py must not use /usr/bin/env bash (relies on PATH, causes code 127)", + ) + + def test_server_logs_actionable_message_when_bash_missing(self): + """Regression: when bash is absent the server must write an actionable log + entry and set FAILED status before returning an HTTP error.""" + source = SERVER_FILE.read_text() + self.assertIn( + "bash_path is None", + source, + "server.py must check that bash_path is not None before launching", + ) + self.assertIn( + "interpreter", + source, + "server.py missing-bash error message must reference 'interpreter'", + ) + + def test_server_captures_stderr_from_backup_subprocess(self): + """Regression: the backup subprocess must use stderr=PIPE so that any + startup error (e.g. code 127 from a missing command) is captured and + surfaced in the backup log rather than being silently discarded.""" + source = SERVER_FILE.read_text() + self.assertIn( + "stderr=asyncio.subprocess.PIPE", + source, + "backup subprocess must use stderr=PIPE to capture diagnostic output", + ) + self.assertIn( + "stderr_text", + source, + "_monitor_backup_subprocess must capture and log stderr content", + ) + + def test_monitor_includes_stderr_detail_in_failed_message(self): + """Regression: _monitor_backup_subprocess must append captured stderr to + the FAILED log entry so the UI shows what went wrong (e.g. 'bash: not + found') rather than only the raw exit code.""" + source = SERVER_FILE.read_text() + self.assertIn("stderr_text", source) + self.assertIn('if stderr_text else ""', source) + + def test_exit_code_127_subprocess_stderr_drain(self): + """Behavioral regression: a subprocess that exits 127 must have its + stderr drained without deadlock by the async drain loop.""" + + async def _run(): + proc = await asyncio.create_subprocess_exec( + "bash", "-c", "echo 'bash: command not found' >&2; exit 127", + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + ) + chunks: list[bytes] = [] + + async def _drain(): + async for line in proc.stderr: + chunks.append(line) + + drain_task = asyncio.create_task(_drain()) + rc = await proc.wait() + await drain_task + return rc, b"".join(chunks).decode() + + rc, stderr_out = asyncio.run(_run()) + self.assertEqual(rc, 127) + self.assertIn("bash: command not found", stderr_out) + if __name__ == "__main__": unittest.main() diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index af01ed7..a21e4ee 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -382,6 +382,8 @@ in }; path = [ + pkgs.bash + pkgs.gawk pkgs.qrencode pkgs.curl pkgs.iproute2 From 9f917d69da2e3b37903f22f0723c9a5144d71be7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 16:30:38 +0000 Subject: [PATCH 093/140] Address code review: compute stderr_text only when chunks are present --- app/sovran_systemsos_web/server.py | 7 +++++-- app/tests/test_manual_backup_workflow.py | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index 494d4af..d255171 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -3762,8 +3762,11 @@ async def _monitor_backup_subprocess(proc: asyncio.subprocess.Process) -> None: if status in {"SUCCESS", "FAILED"}: return - stderr_text = b"".join(stderr_chunks).decode("utf-8", errors="replace").strip() - detail = f" — stderr: {stderr_text}" if stderr_text else "" + detail = "" + if stderr_chunks: + stderr_text = b"".join(stderr_chunks).decode("utf-8", errors="replace").strip() + if stderr_text: + detail = f" — stderr: {stderr_text}" msg = f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] ERROR: Backup subprocess exited unexpectedly (code {rc}).{detail}" await loop.run_in_executor(None, _append_backup_log, msg) await loop.run_in_executor(None, _write_backup_status, "FAILED") diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index 27ada9d..35911c9 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -108,8 +108,10 @@ class ManualBackupWorkflowTests(unittest.TestCase): the FAILED log entry so the UI shows what went wrong (e.g. 'bash: not found') rather than only the raw exit code.""" source = SERVER_FILE.read_text() + self.assertIn("stderr_chunks", source) self.assertIn("stderr_text", source) - self.assertIn('if stderr_text else ""', source) + # stderr detail is conditionally appended only when non-empty + self.assertIn('detail = f" — stderr: {stderr_text}"', source) def test_exit_code_127_subprocess_stderr_drain(self): """Behavioral regression: a subprocess that exits 127 must have its From 28f1f4fe74f768e63e08952915d25181d19b506e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 17:44:54 +0000 Subject: [PATCH 094/140] Initial plan From 2d48bd8d77707143edb991d66468a8587decb69c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 18:00:29 +0000 Subject: [PATCH 095/140] Fix home.tar exit-1 failure: add tar tolerance, partial atomics, INCOMPLETE marker, flock, browser cache exclusions --- .../scripts/sovran-hub-backup.sh | 176 +++++- app/tests/test_manual_backup_workflow.py | 520 ++++++++++++++++++ 2 files changed, 687 insertions(+), 9 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index c0c1525..522926a 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -32,6 +32,8 @@ LND_STOPPED=0 LND_UNITS_TO_RESTART=() ARCHIVE_FILES=() +ARCHIVE_WARNINGS=() +PARTIAL_FILES=() DB_DUMP_FILES=() MANIFEST_EXCLUDES=() LND_BACKUP_NOTES=() @@ -58,6 +60,14 @@ cleanup() { local rc=$? local restart_failed=0 + # Remove any partial archive files or temporary diagnostic files + if [[ "${#PARTIAL_FILES[@]}" -gt 0 ]]; then + local partial + for partial in "${PARTIAL_FILES[@]}"; do + [[ -f "$partial" ]] && rm -f "$partial" || true + done + fi + if [[ "$LND_STOPPED" -eq 1 ]]; then log "Restarting previously active LND-related services…" for (( idx=${#LND_UNITS_TO_RESTART[@]}-1 ; idx>=0 ; idx-- )); do @@ -86,6 +96,11 @@ cleanup() { log "ERROR: Backup terminated unexpectedly (exit code $rc)." set_status "FAILED" fi + + # Mark the backup directory as incomplete so failed runs are identifiable + if [[ -n "${BACKUP_DIR:-}" && -d "${BACKUP_DIR:-}" && ! -f "${BACKUP_DIR:-}/BACKUP_COMPLETE" ]]; then + touch "${BACKUP_DIR}/INCOMPLETE" 2>/dev/null || true + fi } trap cleanup EXIT @@ -257,6 +272,16 @@ set_status "RUNNING" log "=== Sovran_SystemsOS External Hub Backup ===" log "Starting backup process…" +# ── Acquire exclusive run lock ──────────────────────────────────── +# Prevents two simultaneous backup runs (e.g. from double-click or +# stale RUNNING status after a Hub restart). + +LOCK_FILE="/var/lock/sovran-hub-backup.lock" +exec {LOCK_FD}>>"$LOCK_FILE" 2>/dev/null || \ + fail "Cannot open lock file: $LOCK_FILE. Ensure /var/lock is writable." +flock --nonblock "$LOCK_FD" 2>/dev/null || \ + fail "Another backup is already running. Wait for it to complete or check $BACKUP_STATUS." + require_cmd tar require_cmd sha256sum require_cmd findmnt @@ -272,6 +297,8 @@ require_cmd hostname require_cmd date require_cmd python3 require_cmd runuser +require_cmd mktemp +require_cmd flock # ── Detect system role ─────────────────────────────────────────── @@ -324,7 +351,15 @@ MANIFEST_EXCLUDES+=( "/var/lib/electrs (excluded from manual backup)" "/var/lib/*/log and /var/lib/*/logs" "/var/lib/*/cache and /var/lib/*/tmp" - "/home/*/.cache and /home/*/.local/share/Trash" + "/home/*/.cache (system and application disk caches)" + "/home/*/.local/share/Trash and /home/*/Trash (trash directories)" + "/home/*/.mozilla/firefox/*/cache2 and */startupCache (Firefox volatile cache — profile data is kept)" + "/home/*/.config/google-chrome/*/Cache (Chrome disk cache — profile data is kept)" + "/home/*/.config/chromium/*/Cache (Chromium disk cache — profile data is kept)" + "/home/*/.config/BraveSoftware/Brave-Browser/*/Cache (Brave disk cache — profile data is kept)" + "/home/*/.local/share/baloo (KDE file indexer — rebuilt automatically)" + "/home/*/.thumbnails (thumbnail cache — rebuilt automatically)" + "/home/*/.xsession-errors and .xsession-errors.old (X session error logs)" ) if [[ "$ROLE" == "desktop" || "$LND_AVAILABLE" -eq 1 ]]; then @@ -375,28 +410,114 @@ TIMESTAMP="$(date '+%Y%m%d_%H%M%S')" BACKUP_DIR="${TARGET}/Sovran_SystemsOS_Backup/${TIMESTAMP}" DB_DUMP_DIR="$BACKUP_DIR/database-dumps" mkdir -p "$BACKUP_DIR" "$DB_DUMP_DIR" +# Write an INCOMPLETE marker immediately; it is removed only on successful completion. +# Failed runs keep this marker so they are easily identifiable and not confused with +# complete backups during restore selection. +touch "$BACKUP_DIR/INCOMPLETE" log "Backup destination: $BACKUP_DIR" create_tar_archive() { - local archive_name="$1" - shift + _create_archive_impl STRICT "$@" +} + +# ── Helper: classify a GNU tar (LC_ALL=C) diagnostic line ──────── +# Returns 0 (true) if the message is an allowlisted transient condition +# that is safe to ignore for /home (live desktop file changes). +# Only two verified GNU tar messages qualify; all others are fatal. +_is_home_warning_allowlisted() { + local msg="$1" + case "$msg" in + *"file changed as we read it"*) return 0 ;; + *"file removed before we read it"*) return 0 ;; + *) return 1 ;; + esac +} + +# ── Internal archive builder ────────────────────────────────────── +# mode: STRICT — any tar error fails. +# HOME — tar exit 1 is accepted when every diagnostic is an +# allowlisted transient condition (live file changes). +_create_archive_impl() { + local mode="$1"; shift + local archive_name="$1"; shift local archive_path="$BACKUP_DIR/$archive_name" + local partial_path="${archive_path}.partial" + local diag_tmp + diag_tmp="$(mktemp /tmp/sovran-tar-diag.XXXXXX)" + PARTIAL_FILES+=("$partial_path" "$diag_tmp") log "Creating $archive_name …" - tar \ + + local tar_rc=0 + LC_ALL=C tar \ --create \ - --file "$archive_path" \ + --file "$partial_path" \ --numeric-owner \ --acls \ --xattrs \ --sparse \ --one-file-system \ - "$@" + "$@" 2>"$diag_tmp" || tar_rc=$? + # Log every tar diagnostic to the backup log so it appears in the Hub UI + local has_fatal_diag=0 + if [[ -s "$diag_tmp" ]]; then + while IFS= read -r diag_line; do + [[ -n "$diag_line" ]] || continue + log "tar: $diag_line" + if [[ "$mode" == "HOME" ]] && ! _is_home_warning_allowlisted "$diag_line"; then + has_fatal_diag=1 + fi + done < "$diag_tmp" + fi + + local accept=0 + if [[ "$tar_rc" -eq 0 ]]; then + accept=1 + elif [[ "$mode" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then + accept=1 + log "NOTE: $archive_name completed with nonfatal warnings (live files changed" \ + "during backup — this is normal on an active desktop and does not affect" \ + "the safety of your backup)." + ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings — live files changed during backup (normal on an active desktop)") + fi + + if [[ "$accept" -eq 0 ]]; then + rm -f "$partial_path" "$diag_tmp" + if [[ "$tar_rc" -gt 1 ]]; then + fail "tar exited with fatal code $tar_rc while creating $archive_name." + elif [[ "$mode" == "HOME" ]]; then + fail "tar exited with code $tar_rc and unrecognized diagnostics while creating $archive_name." + else + fail "tar exited with code $tar_rc while creating $archive_name." + fi + fi + + # Verify the partial archive is non-empty and readable (spot-check first entry) + if [[ ! -s "$partial_path" ]]; then + rm -f "$partial_path" "$diag_tmp" + fail "Archive $archive_name is empty after creation." + fi + + local spot_entry + spot_entry="$(LC_ALL=C tar --list --file "$partial_path" 2>/dev/null | head -1 || true)" + if [[ -z "$spot_entry" ]]; then + rm -f "$partial_path" "$diag_tmp" + fail "Archive $archive_name failed readability check." + fi + + # Atomic publish: rename partial to final path only after acceptance + mv "$partial_path" "$archive_path" + rm -f "$diag_tmp" ARCHIVE_FILES+=("$archive_name") log "Created archive: $archive_name" } +# ── Home archive: tolerates allowlisted live-file warnings ─────── +create_home_tar_archive() { + _create_archive_impl HOME "$@" +} + export_postgresql_dumps() { if ! command -v pg_dump >/dev/null 2>&1 || ! has_unit "postgresql.service"; then log "PostgreSQL tools/service not available — skipping PostgreSQL exports." @@ -605,11 +726,24 @@ log "Stage 2 complete." log "" log "── Stage 3/5: Home directory (/home) ───────────────────────" if [[ -d /home ]]; then - create_tar_archive "home.tar" \ + create_home_tar_archive "home.tar" \ -C / \ --exclude='home/*/.cache' \ --exclude='home/*/.local/share/Trash' \ --exclude='home/*/Trash' \ + --exclude='home/*/.mozilla/firefox/*/cache2' \ + --exclude='home/*/.mozilla/firefox/*/startupCache' \ + --exclude='home/*/.mozilla/firefox/*/thumbnails' \ + --exclude='home/*/.config/google-chrome/*/Cache' \ + --exclude='home/*/.config/google-chrome/*/Code Cache' \ + --exclude='home/*/.config/chromium/*/Cache' \ + --exclude='home/*/.config/chromium/*/Code Cache' \ + --exclude='home/*/.config/BraveSoftware/Brave-Browser/*/Cache' \ + --exclude='home/*/.config/BraveSoftware/Brave-Browser/*/Code Cache' \ + --exclude='home/*/.local/share/baloo' \ + --exclude='home/*/.thumbnails' \ + --exclude='home/*/.xsession-errors' \ + --exclude='home/*/.xsession-errors.old' \ home log "Stage 3 complete." else @@ -708,13 +842,24 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" echo "- PostgreSQL DB dump: sudo -u postgres pg_restore --create --clean --if-exists -d postgres database-dumps/postgresql_.dump" echo "- MariaDB DB dump: mariadb < database-dumps/mariadb_.sql" echo "- LND SCB: keep lnd-static-channel-backup.scb with wallet seed for channel recovery procedures" + echo "- Note: when restoring /var/lib, exclude raw DB directories (var/lib/postgresql, var/lib/mysql)" + echo " and restore from native dumps instead for PostgreSQL and MariaDB" + echo "" + echo "Nonfatal warnings:" + if [[ "${#ARCHIVE_WARNINGS[@]}" -eq 0 ]]; then + echo "- none" + else + for warning in "${ARCHIVE_WARNINGS[@]}"; do + echo "- $warning" + done + fi echo "" echo "Important note: Bitcoin blockchain and Electrs index data are intentionally excluded" echo "from manual external backup because they already live on the internal second drive" echo "(/run/media/Second_Drive) and are reconstructable/internal-backup data." echo "" echo "Artifact listing:" - find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f | sort + find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f ! -name 'INCOMPLETE' | sort } > "$MANIFEST_FILE" # ── Generate checksums for all backup artifacts ───────────────── @@ -724,7 +869,7 @@ log "Generating SHA-256 checksums …" cd "$BACKUP_DIR" while IFS= read -r -d '' file; do sha256sum "$file" - done < <(find . -mindepth 1 -maxdepth 2 -type f ! -name 'SHA256SUMS.txt' -print0 | sort -z) + done < <(find . -mindepth 1 -maxdepth 2 -type f ! -name 'SHA256SUMS.txt' ! -name 'INCOMPLETE' -print0 | sort -z) ) > "$CHECKSUM_FILE" log "Manifest written to $MANIFEST_FILE" @@ -733,8 +878,21 @@ log "Checksums written to $CHECKSUM_FILE" # ── Done ───────────────────────────────────────────────────────── log "" +if [[ "${#ARCHIVE_WARNINGS[@]}" -gt 0 ]]; then + log "Backup completed with nonfatal warnings:" + for warning in "${ARCHIVE_WARNINGS[@]}"; do + log " WARNING: $warning" + done + log "Your important data is backed up. The warnings above indicate files that changed" + log "during backup, which is normal on an active desktop and does not affect your backup." + log "" +fi log "All Finished! Your data is now backed up to a third location." log "Please eject the drive safely before removing it from your Sovran Pro." +# Remove incomplete marker and write completion marker only after all work succeeds +rm -f "$BACKUP_DIR/INCOMPLETE" +echo "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" > "$BACKUP_DIR/BACKUP_COMPLETE" + BACKUP_COMPLETE=1 set_status "SUCCESS" diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index 35911c9..1721ac0 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -1,4 +1,8 @@ import asyncio +import os +import subprocess +import sys +import tempfile import unittest from pathlib import Path @@ -138,6 +142,522 @@ class ManualBackupWorkflowTests(unittest.TestCase): self.assertEqual(rc, 127) self.assertIn("bash: command not found", stderr_out) + # ── Tests for home tar exit-1 tolerance (production fix) ────────────────── + + def test_backup_script_has_home_tar_archive_function(self): + """The script must define create_home_tar_archive for /home only, + separate from the strict create_tar_archive used for other sources.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "create_home_tar_archive", + source, + "backup script must define create_home_tar_archive for /home", + ) + self.assertIn( + "_is_home_warning_allowlisted", + source, + "backup script must define _is_home_warning_allowlisted helper", + ) + self.assertIn( + "ARCHIVE_WARNINGS", + source, + "backup script must track nonfatal warnings in ARCHIVE_WARNINGS", + ) + + def test_backup_script_allowlist_covers_verified_gnu_tar_messages(self): + """The allowlist must contain the exact GNU tar (LC_ALL=C) strings for + the two permitted transient conditions.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "file changed as we read it", + source, + "allowlist must include exact GNU tar 'file changed as we read it' message", + ) + self.assertIn( + "file removed before we read it", + source, + "allowlist must include exact GNU tar 'file removed before we read it' message", + ) + + def test_backup_script_stage3_uses_home_tar_function(self): + """Stage 3 must call create_home_tar_archive (not create_tar_archive) + so the /home archive tolerates live file changes on an active desktop.""" + source = BACKUP_SCRIPT.read_text() + # The home archive call must use the tolerant function + self.assertIn( + 'create_home_tar_archive "home.tar"', + source, + "Stage 3 must use create_home_tar_archive for home.tar", + ) + + def test_backup_script_strict_function_still_used_for_etc(self): + """create_tar_archive (strict) must still be used for /etc/nixos, + secrets, var-lib-lnd-clean, and var-lib — only /home is tolerant.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'create_tar_archive "etc-nixos.tar"', + source, + "etc-nixos must use strict create_tar_archive", + ) + self.assertIn( + 'create_tar_archive "var-lib.tar"', + source, + "var-lib must use strict create_tar_archive", + ) + + # ── Tests for partial-file atomic publish ───────────────────────────────── + + def test_backup_script_uses_partial_path_and_atomic_rename(self): + """Archives must be written to a .partial path and atomically renamed + to the final name only after acceptance, so a failed run never leaves a + partial archive that appears complete.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + ".partial", + source, + "backup script must write to a .partial path before renaming", + ) + self.assertIn( + 'mv "$partial_path" "$archive_path"', + source, + "backup script must atomically rename partial to final archive path", + ) + self.assertIn( + "PARTIAL_FILES", + source, + "backup script must track partial files for cleanup", + ) + + # ── Tests for INCOMPLETE / BACKUP_COMPLETE markers ──────────────────────── + + def test_backup_script_writes_incomplete_marker(self): + """A backup directory must be marked INCOMPLETE immediately after + creation, so interrupted or failed runs are identifiable.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'touch "$BACKUP_DIR/INCOMPLETE"', + source, + "backup script must create INCOMPLETE marker after mkdir", + ) + + def test_backup_script_writes_backup_complete_marker(self): + """A BACKUP_COMPLETE file must be written only after all work succeeds, + so restore tools can distinguish complete from incomplete backups.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'BACKUP_COMPLETE"', + source, + "backup script must write BACKUP_COMPLETE file on success", + ) + self.assertIn( + 'rm -f "$BACKUP_DIR/INCOMPLETE"', + source, + "backup script must remove INCOMPLETE marker on success", + ) + + # ── Tests for concurrency lock ───────────────────────────────────────────── + + def test_backup_script_uses_flock_concurrency_lock(self): + """The script must acquire an exclusive flock before starting work to + prevent two simultaneous backup runs.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "flock", + source, + "backup script must use flock for concurrency protection", + ) + self.assertIn( + "LOCK_FILE", + source, + "backup script must define a LOCK_FILE for the flock", + ) + + # ── Tests for expanded home exclusions ──────────────────────────────────── + + def test_backup_script_home_excludes_browser_caches(self): + """The home archive must exclude browser disk caches (volatile data) + while keeping profile data, bookmarks, and user documents.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "--exclude='home/*/.mozilla/firefox/*/cache2'", + source, + "backup script must exclude Firefox cache2 directory", + ) + self.assertIn( + "--exclude='home/*/.config/google-chrome/*/Cache'", + source, + "backup script must exclude Chrome Cache directory", + ) + self.assertIn( + "--exclude='home/*/.config/chromium/*/Cache'", + source, + "backup script must exclude Chromium Cache directory", + ) + self.assertIn( + "--exclude='home/*/.config/BraveSoftware/Brave-Browser/*/Cache'", + source, + "backup script must exclude Brave Cache directory", + ) + + def test_backup_script_home_excludes_other_volatile_caches(self): + """The home archive must exclude baloo, thumbnails, and X session + error logs — all volatile/reconstructable content.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "--exclude='home/*/.local/share/baloo'", + source, + ) + self.assertIn( + "--exclude='home/*/.thumbnails'", + source, + ) + self.assertIn( + "--exclude='home/*/.xsession-errors'", + source, + ) + + # ── Tests for require_cmd additions ─────────────────────────────────────── + + def test_backup_script_requires_mktemp_and_flock(self): + """The script must explicitly check for mktemp and flock via require_cmd + so that missing tools fail early with a clear error.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "require_cmd mktemp", + source, + "backup script must require mktemp", + ) + self.assertIn( + "require_cmd flock", + source, + "backup script must require flock", + ) + + # ── Behavioral tests ────────────────────────────────────────────────────── + + def test_allowlist_accepts_file_changed_message(self): + """Behavioral: _is_home_warning_allowlisted returns true for the exact + GNU tar 'file changed as we read it' message (LC_ALL=C).""" + script = r""" +_is_home_warning_allowlisted() { + local msg="$1" + case "$msg" in + *"file changed as we read it"*) return 0 ;; + *"file removed before we read it"*) return 0 ;; + *) return 1 ;; + esac +} +msgs=( + "tar: /home/user/firefox.db: file changed as we read it" + "tar: /home/user/.local/share/app: file removed before we read it" +) +for msg in "${msgs[@]}"; do + _is_home_warning_allowlisted "$msg" || { echo "BLOCKED: $msg"; exit 1; } + echo "ALLOWED: $msg" +done +""" + result = subprocess.run(["bash", "-c", script], capture_output=True, text=True) + self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") + self.assertIn("ALLOWED", result.stdout) + self.assertNotIn("BLOCKED", result.stdout) + + def test_allowlist_rejects_fatal_diagnostics(self): + """Behavioral: _is_home_warning_allowlisted returns false for permission + errors, I/O errors, write errors, and other fatal conditions.""" + script = r""" +_is_home_warning_allowlisted() { + local msg="$1" + case "$msg" in + *"file changed as we read it"*) return 0 ;; + *"file removed before we read it"*) return 0 ;; + *) return 1 ;; + esac +} +msgs=( + "tar: /home/user/file: Permission denied" + "tar: /dev/sdb: Cannot read: Input/output error" + "tar: Error is not recoverable: exiting now" + "Write error" + "tar: /home/user: Cannot stat: No such file or directory" +) +for msg in "${msgs[@]}"; do + _is_home_warning_allowlisted "$msg" && { echo "ALLOWED_BUT_SHOULD_NOT: $msg"; exit 1; } + echo "CORRECTLY_BLOCKED: $msg" +done +""" + result = subprocess.run(["bash", "-c", script], capture_output=True, text=True) + self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") + self.assertIn("CORRECTLY_BLOCKED", result.stdout) + self.assertNotIn("ALLOWED_BUT_SHOULD_NOT", result.stdout) + + def test_home_tar_exits_1_with_only_allowlisted_warnings_is_accepted(self): + """Behavioral: _create_archive_impl in HOME mode accepts tar exit 1 when + every diagnostic is allowlisted and publishes the final archive.""" + with tempfile.TemporaryDirectory() as tmpdir: + src = os.path.join(tmpdir, "home", "user1") + dest = os.path.join(tmpdir, "backup") + os.makedirs(src, exist_ok=True) + os.makedirs(dest, exist_ok=True) + with open(os.path.join(src, "testfile.txt"), "w") as f: + f.write("test content\n") + + # Emulate the allowlist + acceptance logic in HOME mode + script = f"""#!/usr/bin/env bash +set -euo pipefail +BACKUP_DIR="{dest}" +ARCHIVE_FILES=() +ARCHIVE_WARNINGS=() +PARTIAL_FILES=() + +log() {{ echo "$*"; }} +fail() {{ echo "FAIL: $*" >&2; exit 1; }} + +_is_home_warning_allowlisted() {{ + local msg="$1" + case "$msg" in + *"file changed as we read it"*) return 0 ;; + *"file removed before we read it"*) return 0 ;; + *) return 1 ;; + esac +}} + +_create_archive_impl() {{ + local mode="$1"; shift + local archive_name="$1"; shift + local archive_path="$BACKUP_DIR/$archive_name" + local partial_path="${{archive_path}}.partial" + local diag_tmp + diag_tmp="$(mktemp /tmp/sovran-tar-diag.XXXXXX)" + PARTIAL_FILES+=("$partial_path" "$diag_tmp") + + local tar_rc=0 + LC_ALL=C tar --create --file "$partial_path" \ + --numeric-owner --sparse --one-file-system \ + "$@" 2>"$diag_tmp" || tar_rc=$? + + # Inject a simulated allowlisted warning to match production scenario + echo "tar: {src}/testfile.txt: file changed as we read it" >> "$diag_tmp" + tar_rc=1 # simulate exit 1 + + local has_fatal_diag=0 + if [[ -s "$diag_tmp" ]]; then + while IFS= read -r diag_line; do + [[ -n "$diag_line" ]] || continue + if [[ "$mode" == "HOME" ]] && ! _is_home_warning_allowlisted "$diag_line"; then + has_fatal_diag=1 + fi + done < "$diag_tmp" + fi + + local accept=0 + if [[ "$tar_rc" -eq 0 ]]; then + accept=1 + elif [[ "$mode" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then + accept=1 + ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings") + fi + + [[ "$accept" -eq 1 ]] || {{ rm -f "$partial_path" "$diag_tmp"; fail "Rejected"; }} + [[ -s "$partial_path" ]] || {{ rm -f "$partial_path" "$diag_tmp"; fail "Empty"; }} + + mv "$partial_path" "$archive_path" + rm -f "$diag_tmp" + ARCHIVE_FILES+=("$archive_name") + echo "CREATED: $archive_name" +}} + +create_home_tar_archive() {{ _create_archive_impl HOME "$@"; }} + +create_home_tar_archive "home.tar" -C "{tmpdir}" home +echo "WARNINGS: ${{#ARCHIVE_WARNINGS[@]}}" +[[ -f "{dest}/home.tar" ]] && echo "FILE_EXISTS" || echo "FILE_MISSING" +[[ ! -f "{dest}/home.tar.partial" ]] && echo "PARTIAL_CLEANED" || echo "PARTIAL_LEFT" +""" + script_file = os.path.join(tmpdir, "test.sh") + with open(script_file, "w") as sf: + sf.write(script) + result = subprocess.run(["bash", script_file], capture_output=True, text=True) + self.assertEqual(result.returncode, 0, f"stdout: {result.stdout}\nstderr: {result.stderr}") + self.assertIn("CREATED: home.tar", result.stdout) + self.assertIn("FILE_EXISTS", result.stdout) + self.assertIn("PARTIAL_CLEANED", result.stdout) + + def test_home_tar_exits_1_with_fatal_diagnostic_fails(self): + """Behavioral: _create_archive_impl in HOME mode must fail when tar exit 1 + includes a non-allowlisted diagnostic (e.g. permission denied).""" + with tempfile.TemporaryDirectory() as tmpdir: + dest = os.path.join(tmpdir, "backup") + os.makedirs(dest, exist_ok=True) + + script = f"""#!/usr/bin/env bash +set -euo pipefail +BACKUP_DIR="{dest}" +ARCHIVE_FILES=() +ARCHIVE_WARNINGS=() +PARTIAL_FILES=() + +fail() {{ echo "CORRECTLY_FAILED: $*"; exit 1; }} +log() {{ echo "$*"; }} + +_is_home_warning_allowlisted() {{ + local msg="$1" + case "$msg" in + *"file changed as we read it"*) return 0 ;; + *"file removed before we read it"*) return 0 ;; + *) return 1 ;; + esac +}} + +# Simulate tar exit 1 with a fatal permission-denied diagnostic +archive_name="home.tar" +partial_path="$BACKUP_DIR/$archive_name.partial" +diag_tmp=$(mktemp) +echo "tar: /home/user/locked: Permission denied" > "$diag_tmp" + +tar_rc=1 +has_fatal_diag=0 +while IFS= read -r diag_line; do + [[ -n "$diag_line" ]] || continue + if ! _is_home_warning_allowlisted "$diag_line"; then + has_fatal_diag=1 + fi +done < "$diag_tmp" +rm -f "$diag_tmp" + +if [[ "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then + echo "INCORRECTLY_ACCEPTED" + exit 0 +else + fail "tar exit 1 with Permission denied" +fi +""" + script_file = os.path.join(tmpdir, "test.sh") + with open(script_file, "w") as sf: + sf.write(script) + result = subprocess.run(["bash", script_file], capture_output=True, text=True) + self.assertEqual(result.returncode, 1, f"Should have failed: {result.stdout}") + self.assertIn("CORRECTLY_FAILED", result.stdout) + + def test_home_tar_exits_2_always_fails(self): + """Behavioral: tar exit code 2 (fatal) must always fail even in HOME mode.""" + with tempfile.TemporaryDirectory() as tmpdir: + dest = os.path.join(tmpdir, "backup") + os.makedirs(dest, exist_ok=True) + + script = f"""#!/usr/bin/env bash +BACKUP_DIR="{dest}" +ARCHIVE_WARNINGS=() + +fail() {{ echo "CORRECTLY_FAILED: $*"; exit 1; }} +log() {{ echo "$*"; }} + +_is_home_warning_allowlisted() {{ + case "$1" in + *"file changed as we read it"*) return 0 ;; + *"file removed before we read it"*) return 0 ;; + *) return 1 ;; + esac +}} + +tar_rc=2 +has_fatal_diag=0 + +accept=0 +if [[ "$tar_rc" -eq 0 ]]; then + accept=1 +elif [[ "HOME" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then + accept=1 +fi + +if [[ "$accept" -eq 0 ]]; then + if [[ "$tar_rc" -gt 1 ]]; then + fail "tar exited with fatal code $tar_rc" + fi +fi +echo "SHOULD_NOT_REACH_HERE" +""" + script_file = os.path.join(tmpdir, "test.sh") + with open(script_file, "w") as sf: + sf.write(script) + result = subprocess.run(["bash", script_file], capture_output=True, text=True) + self.assertEqual(result.returncode, 1, f"Should have failed: {result.stdout}") + self.assertIn("CORRECTLY_FAILED", result.stdout) + self.assertNotIn("SHOULD_NOT_REACH_HERE", result.stdout) + + def test_partial_file_cleanup_on_failure(self): + """Behavioral: a .partial file must be removed when the archive creation + fails, so no incomplete archive is left on the destination.""" + with tempfile.TemporaryDirectory() as tmpdir: + dest = os.path.join(tmpdir, "backup") + os.makedirs(dest, exist_ok=True) + + partial_path = os.path.join(dest, "home.tar.partial") + + script = f"""#!/usr/bin/env bash +BACKUP_DIR="{dest}" +PARTIAL_FILES=() + +fail() {{ + # Simulate cleanup removing partial files + for p in "${{PARTIAL_FILES[@]}}"; do + [[ -f "$p" ]] && rm -f "$p" + done + echo "FAILED: $*" + exit 1 +}} +log() {{ :; }} + +partial_path="$BACKUP_DIR/home.tar.partial" +diag_tmp=$(mktemp) +PARTIAL_FILES+=("$partial_path" "$diag_tmp") + +# Simulate partial archive being written +touch "$partial_path" + +# Simulate a fatal error +fail "tar exited with code 2" +""" + script_file = os.path.join(tmpdir, "test.sh") + with open(script_file, "w") as sf: + sf.write(script) + result = subprocess.run(["bash", script_file], capture_output=True, text=True) + self.assertEqual(result.returncode, 1, f"Should have failed: {result.stdout}") + self.assertFalse( + os.path.exists(partial_path), + "Partial file must be removed on failure", + ) + self.assertIn("FAILED", result.stdout) + + def test_archive_warnings_recorded_in_manifest(self): + """Source text: ARCHIVE_WARNINGS must be written into BACKUP_MANIFEST.txt + so the user can see which archives had nonfatal live-file warnings.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "ARCHIVE_WARNINGS[@]", + source, + "backup script must iterate ARCHIVE_WARNINGS in manifest generation", + ) + self.assertIn( + "Nonfatal warnings:", + source, + "manifest must include a 'Nonfatal warnings:' section", + ) + + def test_backup_script_logs_warnings_before_success_message(self): + """Source text: when ARCHIVE_WARNINGS is non-empty, the script must log + the warnings before the 'All Finished!' success message.""" + source = BACKUP_SCRIPT.read_text() + # Both constructs must be present + self.assertIn( + "#ARCHIVE_WARNINGS[@]}\" -gt 0", + source, + "backup script must check ARCHIVE_WARNINGS count before success message", + ) + self.assertIn( + "All Finished!", + source, + ) + if __name__ == "__main__": unittest.main() From 98d17423ff4627c4f1d84852f6c43a501038be07 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 18:02:41 +0000 Subject: [PATCH 096/140] Fix test assertion pattern and replace em dashes in new log messages --- app/sovran_systemsos_web/scripts/sovran-hub-backup.sh | 4 ++-- app/tests/test_manual_backup_workflow.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index 522926a..3a8c96e 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -477,9 +477,9 @@ _create_archive_impl() { elif [[ "$mode" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then accept=1 log "NOTE: $archive_name completed with nonfatal warnings (live files changed" \ - "during backup — this is normal on an active desktop and does not affect" \ + "during backup -- this is normal on an active desktop and does not affect" \ "the safety of your backup)." - ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings — live files changed during backup (normal on an active desktop)") + ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings -- live files changed during backup (normal on an active desktop)") fi if [[ "$accept" -eq 0 ]]; then diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index 1721ac0..ab57f9c 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -649,7 +649,7 @@ fail "tar exited with code 2" source = BACKUP_SCRIPT.read_text() # Both constructs must be present self.assertIn( - "#ARCHIVE_WARNINGS[@]}\" -gt 0", + "${#ARCHIVE_WARNINGS[@]}", source, "backup script must check ARCHIVE_WARNINGS count before success message", ) From 9169e5978024f79b94105ff7fe6b09e2c006b065 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 18:05:46 +0000 Subject: [PATCH 097/140] Address code review: source allowlist function from script in tests, fix find exclusions for BACKUP_COMPLETE, simplify log message --- .../scripts/sovran-hub-backup.sh | 8 +-- app/tests/test_manual_backup_workflow.py | 69 ++++++++++--------- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index 3a8c96e..9604589 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -476,9 +476,7 @@ _create_archive_impl() { accept=1 elif [[ "$mode" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then accept=1 - log "NOTE: $archive_name completed with nonfatal warnings (live files changed" \ - "during backup -- this is normal on an active desktop and does not affect" \ - "the safety of your backup)." + log "NOTE: $archive_name completed with nonfatal warnings (live files changed during backup -- this is normal on an active desktop and does not affect the safety of your backup)." ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings -- live files changed during backup (normal on an active desktop)") fi @@ -859,7 +857,7 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" echo "(/run/media/Second_Drive) and are reconstructable/internal-backup data." echo "" echo "Artifact listing:" - find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f ! -name 'INCOMPLETE' | sort + find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' | sort } > "$MANIFEST_FILE" # ── Generate checksums for all backup artifacts ───────────────── @@ -869,7 +867,7 @@ log "Generating SHA-256 checksums …" cd "$BACKUP_DIR" while IFS= read -r -d '' file; do sha256sum "$file" - done < <(find . -mindepth 1 -maxdepth 2 -type f ! -name 'SHA256SUMS.txt' ! -name 'INCOMPLETE' -print0 | sort -z) + done < <(find . -mindepth 1 -maxdepth 2 -type f ! -name 'SHA256SUMS.txt' ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' -print0 | sort -z) ) > "$CHECKSUM_FILE" log "Manifest written to $MANIFEST_FILE" diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index ab57f9c..8d6fbaf 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -336,43 +336,38 @@ class ManualBackupWorkflowTests(unittest.TestCase): # ── Behavioral tests ────────────────────────────────────────────────────── def test_allowlist_accepts_file_changed_message(self): - """Behavioral: _is_home_warning_allowlisted returns true for the exact - GNU tar 'file changed as we read it' message (LC_ALL=C).""" - script = r""" -_is_home_warning_allowlisted() { - local msg="$1" - case "$msg" in - *"file changed as we read it"*) return 0 ;; - *"file removed before we read it"*) return 0 ;; - *) return 1 ;; - esac -} + """Behavioral: _is_home_warning_allowlisted (from the actual backup script) + returns true for the exact GNU tar 'file changed as we read it' message (LC_ALL=C).""" + script = f"""#!/usr/bin/env bash +# Load the production function directly from the backup script to avoid logic drift +eval "$(awk '/^_is_home_warning_allowlisted[(][)]/,/^[}}]/' {BACKUP_SCRIPT})" msgs=( "tar: /home/user/firefox.db: file changed as we read it" "tar: /home/user/.local/share/app: file removed before we read it" ) -for msg in "${msgs[@]}"; do - _is_home_warning_allowlisted "$msg" || { echo "BLOCKED: $msg"; exit 1; } +for msg in "${{msgs[@]}}"; do + _is_home_warning_allowlisted "$msg" || {{ echo "BLOCKED: $msg"; exit 1; }} echo "ALLOWED: $msg" done """ - result = subprocess.run(["bash", "-c", script], capture_output=True, text=True) - self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") - self.assertIn("ALLOWED", result.stdout) - self.assertNotIn("BLOCKED", result.stdout) + with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete=False) as f: + f.write(script) + script_path = f.name + try: + result = subprocess.run(["bash", script_path], capture_output=True, text=True) + self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") + self.assertIn("ALLOWED", result.stdout) + self.assertNotIn("BLOCKED", result.stdout) + finally: + os.unlink(script_path) def test_allowlist_rejects_fatal_diagnostics(self): - """Behavioral: _is_home_warning_allowlisted returns false for permission - errors, I/O errors, write errors, and other fatal conditions.""" - script = r""" -_is_home_warning_allowlisted() { - local msg="$1" - case "$msg" in - *"file changed as we read it"*) return 0 ;; - *"file removed before we read it"*) return 0 ;; - *) return 1 ;; - esac -} + """Behavioral: _is_home_warning_allowlisted (from the actual backup script) + returns false for permission errors, I/O errors, write errors, and other + fatal conditions.""" + script = f"""#!/usr/bin/env bash +# Load the production function directly from the backup script to avoid logic drift +eval "$(awk '/^_is_home_warning_allowlisted[(][)]/,/^[}}]/' {BACKUP_SCRIPT})" msgs=( "tar: /home/user/file: Permission denied" "tar: /dev/sdb: Cannot read: Input/output error" @@ -380,15 +375,21 @@ msgs=( "Write error" "tar: /home/user: Cannot stat: No such file or directory" ) -for msg in "${msgs[@]}"; do - _is_home_warning_allowlisted "$msg" && { echo "ALLOWED_BUT_SHOULD_NOT: $msg"; exit 1; } +for msg in "${{msgs[@]}}"; do + _is_home_warning_allowlisted "$msg" && {{ echo "ALLOWED_BUT_SHOULD_NOT: $msg"; exit 1; }} echo "CORRECTLY_BLOCKED: $msg" done """ - result = subprocess.run(["bash", "-c", script], capture_output=True, text=True) - self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") - self.assertIn("CORRECTLY_BLOCKED", result.stdout) - self.assertNotIn("ALLOWED_BUT_SHOULD_NOT", result.stdout) + with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete=False) as f: + f.write(script) + script_path = f.name + try: + result = subprocess.run(["bash", script_path], capture_output=True, text=True) + self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") + self.assertIn("CORRECTLY_BLOCKED", result.stdout) + self.assertNotIn("ALLOWED_BUT_SHOULD_NOT", result.stdout) + finally: + os.unlink(script_path) def test_home_tar_exits_1_with_only_allowlisted_warnings_is_accepted(self): """Behavioral: _create_archive_impl in HOME mode accepts tar exit 1 when From 9785b8717d328ac3ed3744855ba35c8eb8f1a3ca Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 18:08:33 +0000 Subject: [PATCH 098/140] Address code review round 2: Python regex for function extraction, bash 4.1+ comment, find -print0 for manifest, mktemp 0600 comment --- .../scripts/sovran-hub-backup.sh | 6 +- app/tests/test_manual_backup_workflow.py | 73 ++++++++++++------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index 9604589..24dbe6e 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -277,6 +277,7 @@ log "Starting backup process…" # stale RUNNING status after a Hub restart). LOCK_FILE="/var/lock/sovran-hub-backup.lock" +# Note: exec {LOCK_FD}>>file requires bash 4.1+ (NixOS provides bash 5.x). exec {LOCK_FD}>>"$LOCK_FILE" 2>/dev/null || \ fail "Cannot open lock file: $LOCK_FILE. Ensure /var/lock is writable." flock --nonblock "$LOCK_FD" 2>/dev/null || \ @@ -443,6 +444,8 @@ _create_archive_impl() { local archive_path="$BACKUP_DIR/$archive_name" local partial_path="${archive_path}.partial" local diag_tmp + # mktemp creates files with mode 0600 (owner-only) by default, so tar + # diagnostics (which may include file paths) are not readable by other users. diag_tmp="$(mktemp /tmp/sovran-tar-diag.XXXXXX)" PARTIAL_FILES+=("$partial_path" "$diag_tmp") @@ -857,7 +860,8 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" echo "(/run/media/Second_Drive) and are reconstructable/internal-backup data." echo "" echo "Artifact listing:" - find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' | sort + find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f \ + ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' -print0 | sort -z | tr '\0' '\n' } > "$MANIFEST_FILE" # ── Generate checksums for all backup artifacts ───────────────── diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index 8d6fbaf..f5c1dc8 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -1,5 +1,6 @@ import asyncio import os +import re import subprocess import sys import tempfile @@ -14,6 +15,18 @@ SUPPORT_JS = REPO_ROOT / "app" / "sovran_systemsos_web" / "static" / "js" / "sup NIX_HUB_FILE = REPO_ROOT / "modules" / "core" / "sovran-hub.nix" +def _extract_bash_function(script_path: Path, func_name: str) -> str: + """Extract a bash function definition from a shell script using Python regex. + Returns the complete function definition as a string that can be inlined into + test scripts, avoiding eval of awk output and the associated risks.""" + source = script_path.read_text() + pattern = r"^" + re.escape(func_name) + r"\(\) \{.*?^}" + match = re.search(pattern, source, re.MULTILINE | re.DOTALL) + if match is None: + raise ValueError(f"Function '{func_name}' not found in {script_path}") + return match.group(0) + + class ManualBackupWorkflowTests(unittest.TestCase): def test_backup_script_uses_tar_archives_with_checksums_and_exclusions(self): source = BACKUP_SCRIPT.read_text() @@ -337,19 +350,22 @@ class ManualBackupWorkflowTests(unittest.TestCase): def test_allowlist_accepts_file_changed_message(self): """Behavioral: _is_home_warning_allowlisted (from the actual backup script) - returns true for the exact GNU tar 'file changed as we read it' message (LC_ALL=C).""" - script = f"""#!/usr/bin/env bash -# Load the production function directly from the backup script to avoid logic drift -eval "$(awk '/^_is_home_warning_allowlisted[(][)]/,/^[}}]/' {BACKUP_SCRIPT})" -msgs=( - "tar: /home/user/firefox.db: file changed as we read it" - "tar: /home/user/.local/share/app: file removed before we read it" -) -for msg in "${{msgs[@]}}"; do - _is_home_warning_allowlisted "$msg" || {{ echo "BLOCKED: $msg"; exit 1; }} - echo "ALLOWED: $msg" -done -""" + returns true for the exact GNU tar 'file changed as we read it' message (LC_ALL=C). + The function definition is extracted from the production script via Python regex + to ensure the test exercises the real allowlist without eval-of-awk risks.""" + func_def = _extract_bash_function(BACKUP_SCRIPT, "_is_home_warning_allowlisted") + script = ( + "#!/usr/bin/env bash\n" + + func_def + "\n" + + 'msgs=(\n' + + ' "tar: /home/user/firefox.db: file changed as we read it"\n' + + ' "tar: /home/user/.local/share/app: file removed before we read it"\n' + + ")\n" + + 'for msg in "${msgs[@]}"; do\n' + + ' _is_home_warning_allowlisted "$msg" || { echo "BLOCKED: $msg"; exit 1; }\n' + + ' echo "ALLOWED: $msg"\n' + + "done\n" + ) with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete=False) as f: f.write(script) script_path = f.name @@ -365,21 +381,22 @@ done """Behavioral: _is_home_warning_allowlisted (from the actual backup script) returns false for permission errors, I/O errors, write errors, and other fatal conditions.""" - script = f"""#!/usr/bin/env bash -# Load the production function directly from the backup script to avoid logic drift -eval "$(awk '/^_is_home_warning_allowlisted[(][)]/,/^[}}]/' {BACKUP_SCRIPT})" -msgs=( - "tar: /home/user/file: Permission denied" - "tar: /dev/sdb: Cannot read: Input/output error" - "tar: Error is not recoverable: exiting now" - "Write error" - "tar: /home/user: Cannot stat: No such file or directory" -) -for msg in "${{msgs[@]}}"; do - _is_home_warning_allowlisted "$msg" && {{ echo "ALLOWED_BUT_SHOULD_NOT: $msg"; exit 1; }} - echo "CORRECTLY_BLOCKED: $msg" -done -""" + func_def = _extract_bash_function(BACKUP_SCRIPT, "_is_home_warning_allowlisted") + script = ( + "#!/usr/bin/env bash\n" + + func_def + "\n" + + 'msgs=(\n' + + ' "tar: /home/user/file: Permission denied"\n' + + ' "tar: /dev/sdb: Cannot read: Input/output error"\n' + + ' "tar: Error is not recoverable: exiting now"\n' + + ' "Write error"\n' + + ' "tar: /home/user: Cannot stat: No such file or directory"\n' + + ")\n" + + 'for msg in "${msgs[@]}"; do\n' + + ' _is_home_warning_allowlisted "$msg" && { echo "ALLOWED_BUT_SHOULD_NOT: $msg"; exit 1; }\n' + + ' echo "CORRECTLY_BLOCKED: $msg"\n' + + "done\n" + ) with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete=False) as f: f.write(script) script_path = f.name From c5982ccb14e8e6e625089a781ff6fc9298847ce8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Jul 2026 18:11:19 +0000 Subject: [PATCH 099/140] Final polish: explicit LOCK_FD close, tar --list SIGPIPE comment, marker timing comment, _extract_bash_function docstring --- app/sovran_systemsos_web/scripts/sovran-hub-backup.sh | 10 ++++++++++ app/tests/test_manual_backup_workflow.py | 11 +++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index 24dbe6e..3e7c05c 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -68,6 +68,9 @@ cleanup() { done fi + # Release the concurrency lock file descriptor if it was opened + [[ -n "${LOCK_FD:-}" ]] && exec {LOCK_FD}>&- 2>/dev/null || true + if [[ "$LND_STOPPED" -eq 1 ]]; then log "Restarting previously active LND-related services…" for (( idx=${#LND_UNITS_TO_RESTART[@]}-1 ; idx>=0 ; idx-- )); do @@ -500,6 +503,9 @@ _create_archive_impl() { fail "Archive $archive_name is empty after creation." fi + # Fast readability check: read only the first tar entry header (~512 bytes). + # head -1 closes the pipe after one line, sending SIGPIPE to tar which then + # exits early — so this is O(1) regardless of archive size. local spot_entry spot_entry="$(LC_ALL=C tar --list --file "$partial_path" 2>/dev/null | head -1 || true)" if [[ -z "$spot_entry" ]]; then @@ -860,6 +866,10 @@ CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" echo "(/run/media/Second_Drive) and are reconstructable/internal-backup data." echo "" echo "Artifact listing:" + # INCOMPLETE exists at this point (created at backup start); BACKUP_COMPLETE does not + # exist yet (written after checksums). Excluding both marker files here is intentional: + # INCOMPLETE is excluded so it doesn't appear as a data artifact, and BACKUP_COMPLETE + # is excluded defensively for consistency should the ordering ever change. find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f \ ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' -print0 | sort -z | tr '\0' '\n' } > "$MANIFEST_FILE" diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index f5c1dc8..cb3da74 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -17,8 +17,15 @@ NIX_HUB_FILE = REPO_ROOT / "modules" / "core" / "sovran-hub.nix" def _extract_bash_function(script_path: Path, func_name: str) -> str: """Extract a bash function definition from a shell script using Python regex. - Returns the complete function definition as a string that can be inlined into - test scripts, avoiding eval of awk output and the associated risks.""" + + The pattern matches from 'funcname() {' to the first line whose only content + is '}' (the function closing brace, at column 0). This works correctly for + functions whose control structures (case/if/while/for) use indented braces, + because only the function's own closing brace sits at column 0. It would not + correctly extract a function that contains a nested function definition. + + Returns the complete function definition, safe to inline into a test bash + script without eval or awk.""" source = script_path.read_text() pattern = r"^" + re.escape(func_name) + r"\(\) \{.*?^}" match = re.search(pattern, source, re.MULTILINE | re.DOTALL) From e0656b6cc03ac571d04631e4b2e980f9cc671a8d Mon Sep 17 00:00:00 2001 From: naturallaw77 Date: Sun, 19 Jul 2026 16:59:19 -0500 Subject: [PATCH 100/140] nixpkgs update --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 274f9d8..61c5900 100755 --- a/flake.lock +++ b/flake.lock @@ -139,11 +139,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1783856661, - "narHash": "sha256-ZGP04e+Q6WyQJGA9ZvI5CL6+heGQldbAG9U1T9NGvmU=", + "lastModified": 1784432872, + "narHash": "sha256-n3gKTBIV4ZA5VQpUakffBe3KGu4+mhPoA34rrqS0GkA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "569d578509928497eddc3fdbf94a799027050be4", + "rev": "fd1462031fdee08f65fd0b4c6b64e22239a77870", "type": "github" }, "original": { @@ -187,11 +187,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1783776592, - "narHash": "sha256-UgCQzxeWI75XM8G+hPrPh+MKzEPjG3SpAj7dtqSbksA=", + "lastModified": 1784356753, + "narHash": "sha256-12KrbMiWLcf8m7pCvAtZh1ZrgF85ZXDXvfR/fWTKy84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e7a3ca8092b61ff85b6a45bf863ea2b2d6a661b3", + "rev": "61b7c44c4073f0b827768aff0049561b5110ea5a", "type": "github" }, "original": { @@ -203,11 +203,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1783791668, - "narHash": "sha256-zbcZ1dmBTPfJ7Mlqh/yLEPGpgJnwuv4Xr1xucy2WqMA=", + "lastModified": 1783915482, + "narHash": "sha256-FmieJB8/OUvNxbkboi7+IGfIuSXY3nF/hZQm8kD0r50=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "716c7a2664ca8325617b8a7fbb609273f2c4cae7", + "rev": "6cdc7fc76e8bf7fde9fa43a849fcaaa70e230dee", "type": "github" }, "original": { @@ -224,11 +224,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1783941741, - "narHash": "sha256-F+3M1IZrJa920cx2/k2AMKqedEodxLF7COJVkLJwUBo=", + "lastModified": 1784057377, + "narHash": "sha256-yycNej5//EsRbV10moBoh+/63vXEwZD1ZFEiRm6C9rQ=", "owner": "nix-community", "repo": "nixvim", - "rev": "e6715f01d9f56f07a27a01386b85ae22b06f0705", + "rev": "07180a087e4a00720dc0731cbcd8dec796974381", "type": "github" }, "original": { From 3d7f5410d4c246102e79c7c996be1c956a459305 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:34:57 +0000 Subject: [PATCH 101/140] Initial plan From 1a3c014183924562b86e24e6674dc09528dc4cce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:45:04 +0000 Subject: [PATCH 102/140] feat: replace tar+DB+LND backup with ext4+rsync workflow - Rewrite sovran-hub-backup.sh: rsync-based mirror to stable current/ path, ext4 validation, no tar/pg_dump/mariadb-dump/LND orchestration, exit-24 nonfatal for /home, INCOMPLETE/BACKUP_COMPLETE markers, flock - Update server.py: _is_supported_backup_fstype accepts only ext4 - Update support.js: require ext4, explain database limitations, update failure message from exFAT to ext4 - Update sovran-hub.nix: replace pkgs.gnutar with pkgs.rsync + pkgs.acl - Rewrite test_manual_backup_workflow.py: 40 new tests covering rsync options, ext4 acceptance, exit-24 handling, no-delete, stable current/ path, INCOMPLETE markers, behavioral rsync tests, and regressions --- .../scripts/sovran-hub-backup.sh | 694 +++------- app/sovran_systemsos_web/server.py | 39 +- app/sovran_systemsos_web/static/js/support.js | 19 +- app/tests/test_manual_backup_workflow.py | 1156 +++++++++-------- modules/core/sovran-hub.nix | 3 +- 5 files changed, 797 insertions(+), 1114 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index 3e7c05c..c995cc1 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # ── Sovran Hub External Backup Script ──────────────────────────── -# Backs up Sovran_SystemsOS data to an external USB hard drive. +# Backs up Sovran_SystemsOS data to an external USB hard drive using rsync. # Designed for the Hub web UI (no GUI dependencies). # # Your Sovran Pro already backs up your data automatically to its @@ -8,6 +8,15 @@ # This script creates an additional copy on an external USB drive — # storing your data in a third location for maximum protection. # +# The external drive must be formatted as ext4. Files are stored as +# directly browsable files under Sovran_SystemsOS_Backup/current/. +# Later runs update the same mirror and only transfer changed or new +# files, making repeat backups fast. +# +# PostgreSQL and MariaDB/MySQL databases are NOT included. Bitcoin +# blockchain and Electrs index data are NOT included (they live on +# the internal second drive). +# # Usage: # BACKUP_TARGET=/run/media// bash sovran-hub-backup.sh # (or run with no env var to auto-detect the first external USB drive) @@ -28,15 +37,11 @@ INTERNAL_MOUNTS=("$SECOND_DRIVE_MOUNT" "/boot/efi" "/") FAILED_ALREADY=0 BACKUP_COMPLETE=0 -LND_STOPPED=0 -LND_UNITS_TO_RESTART=() +RSYNC_WARNINGS=() -ARCHIVE_FILES=() -ARCHIVE_WARNINGS=() -PARTIAL_FILES=() -DB_DUMP_FILES=() -MANIFEST_EXCLUDES=() -LND_BACKUP_NOTES=() +# Stable mirror path — not timestamped so later runs update the same +# destination and only transfer new or changed files. +CURRENT_DIR_NAME="Sovran_SystemsOS_Backup/current" # ── Logging helpers ────────────────────────────────────────────── @@ -58,39 +63,10 @@ fail() { cleanup() { local rc=$? - local restart_failed=0 - - # Remove any partial archive files or temporary diagnostic files - if [[ "${#PARTIAL_FILES[@]}" -gt 0 ]]; then - local partial - for partial in "${PARTIAL_FILES[@]}"; do - [[ -f "$partial" ]] && rm -f "$partial" || true - done - fi # Release the concurrency lock file descriptor if it was opened [[ -n "${LOCK_FD:-}" ]] && exec {LOCK_FD}>&- 2>/dev/null || true - if [[ "$LND_STOPPED" -eq 1 ]]; then - log "Restarting previously active LND-related services…" - for (( idx=${#LND_UNITS_TO_RESTART[@]}-1 ; idx>=0 ; idx-- )); do - local unit="${LND_UNITS_TO_RESTART[$idx]}" - if systemctl start "$unit"; then - log "Started $unit" - else - log "ERROR: Failed to start $unit" - restart_failed=1 - fi - done - LND_STOPPED=0 - fi - - if [[ "$restart_failed" -eq 1 ]]; then - rc=1 - FAILED_ALREADY=1 - set_status "FAILED" - fi - if [[ "$BACKUP_COMPLETE" -eq 1 && "$rc" -eq 0 ]]; then return fi @@ -219,21 +195,8 @@ validate_target_mount() { fstype=$(findmnt -n -o FSTYPE -T "$target" 2>/dev/null || true) [[ -n "$fstype" ]] || fail "Could not determine filesystem type for '$target'." - if [[ "$fstype" != "exfat" && "$fstype" != "fuseblk" ]]; then - fail "Target '$target' must be exFAT (detected filesystem: $fstype)." - fi - - if [[ "$fstype" == "fuseblk" ]]; then - local src_dev blk_type - src_dev=$(findmnt -n -o SOURCE -T "$target" 2>/dev/null || true) - blk_type="" - if [[ -n "$src_dev" ]]; then - blk_type=$(lsblk -no FSTYPE "$src_dev" 2>/dev/null || true) - [[ -z "$blk_type" ]] && blk_type=$(blkid -o value -s TYPE "$src_dev" 2>/dev/null || true) - fi - if [[ "$blk_type" != "exfat" && "$blk_type" != "fuseblk" ]]; then - fail "Target '$target' is fuseblk but not identified as exFAT-compatible." - fi + if [[ "$fstype" != "ext4" ]]; then + fail "Target '$target' must be formatted as ext4 (detected filesystem: $fstype). Manual Backup requires an ext4-formatted external drive for Linux metadata preservation. exFAT, FAT32, and NTFS are not supported." fi local write_test @@ -245,14 +208,6 @@ validate_target_mount() { log "Verified backup target filesystem: $fstype" } -has_unit() { - systemctl cat "$1" >/dev/null 2>&1 -} - -is_unit_active() { - systemctl is-active --quiet "$1" -} - estimate_path_bytes() { local path="$1" shift || true @@ -267,6 +222,48 @@ estimate_path_bytes() { echo "$size" } +# ── Run rsync for one source tree ──────────────────────────────── +# allow_vanished: "yes" means rsync exit 24 (vanished files) is nonfatal. +# For /home only — files may disappear while the desktop is active. +# All other nonzero exit codes are always fatal. +run_rsync() { + local label="$1" + local allow_vanished="$2" + shift 2 + # Remaining args are passed directly to rsync (filters + source + dest). + + local rsync_err_tmp + rsync_err_tmp="$(mktemp /tmp/sovran-rsync-err.XXXXXX)" + + local rc=0 + rsync \ + --archive \ + --acls \ + --xattrs \ + --hard-links \ + --numeric-ids \ + --one-file-system \ + --partial \ + "$@" 2>"$rsync_err_tmp" || rc=$? + + if [[ -s "$rsync_err_tmp" ]]; then + while IFS= read -r rline; do + log "rsync: $rline" + done < "$rsync_err_tmp" + fi + rm -f "$rsync_err_tmp" + + if [[ "$rc" -eq 0 ]]; then + return 0 + elif [[ "$allow_vanished" == "yes" && "$rc" -eq 24 ]]; then + log "NOTE: $label — some files vanished during sync (normal on an active desktop). Your important data is backed up." + RSYNC_WARNINGS+=("$label: some files vanished during sync (rsync exit 24 — normal on active desktop)") + return 0 + else + fail "rsync failed for $label (exit code $rc). See the rsync errors above." + fi +} + # ── Initialise log file ────────────────────────────────────────── : > "$BACKUP_LOG" @@ -286,22 +283,17 @@ exec {LOCK_FD}>>"$LOCK_FILE" 2>/dev/null || \ flock --nonblock "$LOCK_FD" 2>/dev/null || \ fail "Another backup is already running. Wait for it to complete or check $BACKUP_STATUS." -require_cmd tar -require_cmd sha256sum +require_cmd rsync require_cmd findmnt require_cmd lsblk require_cmd mountpoint require_cmd df require_cmd du require_cmd awk -require_cmd sort require_cmd find -require_cmd systemctl require_cmd hostname require_cmd date require_cmd python3 -require_cmd runuser -require_cmd mktemp require_cmd flock # ── Detect system role ─────────────────────────────────────────── @@ -327,50 +319,28 @@ else log "Auto-detecting external USB drives…" TARGET="$(find_external_drive)" if [[ -z "$TARGET" ]]; then - fail "No external USB drive detected. Please plug in an exFAT-formatted USB drive and try again." + fail "No external USB drive detected. Please plug in an ext4-formatted USB drive and try again." fi log "Detected external drive: $TARGET" fi validate_target_mount "$TARGET" -# ── Plan role-aware source scope and exclusions ───────────────── +# ── Set up stable backup destination ──────────────────────────── +# Subsequent runs update the same mirror, transferring only new or changed files. -LND_AVAILABLE=0 -if [[ "$ROLE" != "desktop" ]] && [[ -d /var/lib/lnd ]] && has_unit "lnd.service"; then - LND_AVAILABLE=1 -fi +BACKUP_DIR="${TARGET}/${CURRENT_DIR_NAME}" +mkdir -p "$BACKUP_DIR" -if [[ "$ROLE" == "desktop" ]]; then - MANIFEST_EXCLUDES+=("/etc/nix-bitcoin-secrets (not applicable for Desktop Only role)") -else - MANIFEST_EXCLUDES+=("/etc/nix-bitcoin-secrets skipped when path absent") -fi - -MANIFEST_EXCLUDES+=( - "/run/media/Second_Drive (never traversed)" - "/run/media/Second_Drive/BTCEcoandBackup/Bitcoin_Node (excluded; internal second-drive data)" - "/run/media/Second_Drive/BTCEcoandBackup/Electrs_Data (excluded; internal second-drive data)" - "/var/lib/bitcoind (excluded from manual backup)" - "/var/lib/electrs (excluded from manual backup)" - "/var/lib/*/log and /var/lib/*/logs" - "/var/lib/*/cache and /var/lib/*/tmp" - "/home/*/.cache (system and application disk caches)" - "/home/*/.local/share/Trash and /home/*/Trash (trash directories)" - "/home/*/.mozilla/firefox/*/cache2 and */startupCache (Firefox volatile cache — profile data is kept)" - "/home/*/.config/google-chrome/*/Cache (Chrome disk cache — profile data is kept)" - "/home/*/.config/chromium/*/Cache (Chromium disk cache — profile data is kept)" - "/home/*/.config/BraveSoftware/Brave-Browser/*/Cache (Brave disk cache — profile data is kept)" - "/home/*/.local/share/baloo (KDE file indexer — rebuilt automatically)" - "/home/*/.thumbnails (thumbnail cache — rebuilt automatically)" - "/home/*/.xsession-errors and .xsession-errors.old (X session error logs)" -) - -if [[ "$ROLE" == "desktop" || "$LND_AVAILABLE" -eq 1 ]]; then - MANIFEST_EXCLUDES+=("/var/lib/lnd from general /var/lib archive") -fi +# Write an INCOMPLETE marker immediately; replaced by BACKUP_COMPLETE only +# after all rsync stages and manifest write succeed. Failed or interrupted +# runs keep this marker so they are clearly identifiable. +touch "$BACKUP_DIR/INCOMPLETE" +log "Backup destination: $BACKUP_DIR" # ── Estimate required free space ───────────────────────────────── +# PostgreSQL/MariaDB raw directories and Bitcoin/Electrs data are excluded +# from the estimate to avoid inflating the required size. ETC_NIXOS_BYTES=$(estimate_path_bytes /etc/nixos) HOME_BYTES=$(estimate_path_bytes /home --exclude='*/.cache' --exclude='*/.local/share/Trash' --exclude='*/Trash') @@ -380,21 +350,20 @@ if [[ "$ROLE" != "desktop" ]]; then fi VAR_LIB_BYTES=$(estimate_path_bytes /var/lib \ + --exclude='postgresql' \ + --exclude='mysql' \ + --exclude='mariadb' \ --exclude='bitcoind' \ --exclude='electrs' \ - --exclude='lnd' \ --exclude='*/log' \ --exclude='*/logs' \ --exclude='*/cache' \ --exclude='*/tmp') -LND_BYTES=0 -if [[ "$LND_AVAILABLE" -eq 1 ]]; then - LND_BYTES=$(estimate_path_bytes /var/lib/lnd) -fi - -ESTIMATED_BYTES=$(( ETC_NIXOS_BYTES + HOME_BYTES + SECRETS_BYTES + VAR_LIB_BYTES + LND_BYTES )) -# Require 20% growth headroom plus an additional fixed 1 GiB safety margin. +ESTIMATED_BYTES=$(( ETC_NIXOS_BYTES + HOME_BYTES + SECRETS_BYTES + VAR_LIB_BYTES )) +# Require 20% growth headroom plus a fixed 1 GiB safety margin. +# Later incremental runs need far less space, but a conservative first-run +# check protects against running out of space mid-backup. REQUIRED_BYTES=$(( ESTIMATED_BYTES + (ESTIMATED_BYTES / 5) + SAFETY_MARGIN_BYTES )) FREE_BYTES=$(df -B1 --output=avail "$TARGET" | tail -1 | tr -d ' ') @@ -408,391 +377,81 @@ log "Free space on drive: ${FREE_GB} GB" (( FREE_BYTES >= REQUIRED_BYTES )) || \ fail "Not enough free space on drive (${FREE_GB} GB available, ${REQUIRED_GB} GB required)." -# ── Create timestamped backup directory ───────────────────────── - -TIMESTAMP="$(date '+%Y%m%d_%H%M%S')" -BACKUP_DIR="${TARGET}/Sovran_SystemsOS_Backup/${TIMESTAMP}" -DB_DUMP_DIR="$BACKUP_DIR/database-dumps" -mkdir -p "$BACKUP_DIR" "$DB_DUMP_DIR" -# Write an INCOMPLETE marker immediately; it is removed only on successful completion. -# Failed runs keep this marker so they are easily identifiable and not confused with -# complete backups during restore selection. -touch "$BACKUP_DIR/INCOMPLETE" -log "Backup destination: $BACKUP_DIR" - -create_tar_archive() { - _create_archive_impl STRICT "$@" -} - -# ── Helper: classify a GNU tar (LC_ALL=C) diagnostic line ──────── -# Returns 0 (true) if the message is an allowlisted transient condition -# that is safe to ignore for /home (live desktop file changes). -# Only two verified GNU tar messages qualify; all others are fatal. -_is_home_warning_allowlisted() { - local msg="$1" - case "$msg" in - *"file changed as we read it"*) return 0 ;; - *"file removed before we read it"*) return 0 ;; - *) return 1 ;; - esac -} - -# ── Internal archive builder ────────────────────────────────────── -# mode: STRICT — any tar error fails. -# HOME — tar exit 1 is accepted when every diagnostic is an -# allowlisted transient condition (live file changes). -_create_archive_impl() { - local mode="$1"; shift - local archive_name="$1"; shift - local archive_path="$BACKUP_DIR/$archive_name" - local partial_path="${archive_path}.partial" - local diag_tmp - # mktemp creates files with mode 0600 (owner-only) by default, so tar - # diagnostics (which may include file paths) are not readable by other users. - diag_tmp="$(mktemp /tmp/sovran-tar-diag.XXXXXX)" - PARTIAL_FILES+=("$partial_path" "$diag_tmp") - - log "Creating $archive_name …" - - local tar_rc=0 - LC_ALL=C tar \ - --create \ - --file "$partial_path" \ - --numeric-owner \ - --acls \ - --xattrs \ - --sparse \ - --one-file-system \ - "$@" 2>"$diag_tmp" || tar_rc=$? - - # Log every tar diagnostic to the backup log so it appears in the Hub UI - local has_fatal_diag=0 - if [[ -s "$diag_tmp" ]]; then - while IFS= read -r diag_line; do - [[ -n "$diag_line" ]] || continue - log "tar: $diag_line" - if [[ "$mode" == "HOME" ]] && ! _is_home_warning_allowlisted "$diag_line"; then - has_fatal_diag=1 - fi - done < "$diag_tmp" - fi - - local accept=0 - if [[ "$tar_rc" -eq 0 ]]; then - accept=1 - elif [[ "$mode" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then - accept=1 - log "NOTE: $archive_name completed with nonfatal warnings (live files changed during backup -- this is normal on an active desktop and does not affect the safety of your backup)." - ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings -- live files changed during backup (normal on an active desktop)") - fi - - if [[ "$accept" -eq 0 ]]; then - rm -f "$partial_path" "$diag_tmp" - if [[ "$tar_rc" -gt 1 ]]; then - fail "tar exited with fatal code $tar_rc while creating $archive_name." - elif [[ "$mode" == "HOME" ]]; then - fail "tar exited with code $tar_rc and unrecognized diagnostics while creating $archive_name." - else - fail "tar exited with code $tar_rc while creating $archive_name." - fi - fi - - # Verify the partial archive is non-empty and readable (spot-check first entry) - if [[ ! -s "$partial_path" ]]; then - rm -f "$partial_path" "$diag_tmp" - fail "Archive $archive_name is empty after creation." - fi - - # Fast readability check: read only the first tar entry header (~512 bytes). - # head -1 closes the pipe after one line, sending SIGPIPE to tar which then - # exits early — so this is O(1) regardless of archive size. - local spot_entry - spot_entry="$(LC_ALL=C tar --list --file "$partial_path" 2>/dev/null | head -1 || true)" - if [[ -z "$spot_entry" ]]; then - rm -f "$partial_path" "$diag_tmp" - fail "Archive $archive_name failed readability check." - fi - - # Atomic publish: rename partial to final path only after acceptance - mv "$partial_path" "$archive_path" - rm -f "$diag_tmp" - ARCHIVE_FILES+=("$archive_name") - log "Created archive: $archive_name" -} - -# ── Home archive: tolerates allowlisted live-file warnings ─────── -create_home_tar_archive() { - _create_archive_impl HOME "$@" -} - -export_postgresql_dumps() { - if ! command -v pg_dump >/dev/null 2>&1 || ! has_unit "postgresql.service"; then - log "PostgreSQL tools/service not available — skipping PostgreSQL exports." - return - fi - - if ! is_unit_active "postgresql.service"; then - log "PostgreSQL service is not active — skipping PostgreSQL exports." - return - fi - - log "Exporting PostgreSQL globals and databases…" - local globals_file="$DB_DUMP_DIR/postgresql_globals.sql" - runuser -u postgres -- pg_dumpall --globals-only > "$globals_file" || \ - fail "Failed to export PostgreSQL globals." - DB_DUMP_FILES+=("database-dumps/postgresql_globals.sql") - - local dbs - dbs=$(runuser -u postgres -- psql -Atqc "SELECT datname FROM pg_database WHERE datistemplate = false AND datallowconn AND datname <> 'postgres';" 2>/dev/null || true) - - if [[ -z "$dbs" ]]; then - log "No non-template PostgreSQL application databases found." - return - fi - - while IFS= read -r db; do - [[ -n "$db" ]] || continue - local safe_db - safe_db="$(echo "$db" | tr -c '[:alnum:]_.-' '_')" - local out_file="$DB_DUMP_DIR/postgresql_${safe_db}.dump" - runuser -u postgres -- pg_dump --format=custom --file "$out_file" "$db" || \ - fail "Failed to export PostgreSQL database '$db'." - DB_DUMP_FILES+=("database-dumps/postgresql_${safe_db}.dump") - done <<< "$dbs" -} - -export_mariadb_dumps() { - local dump_cmd="" - local query_cmd="" - local mariadb_unit="" - - if command -v mariadb-dump >/dev/null 2>&1; then - dump_cmd="mariadb-dump" - elif command -v mysqldump >/dev/null 2>&1; then - dump_cmd="mysqldump" - fi - - if command -v mariadb >/dev/null 2>&1; then - query_cmd="mariadb" - elif command -v mysql >/dev/null 2>&1; then - query_cmd="mysql" - fi - - if [[ -z "$dump_cmd" || -z "$query_cmd" ]]; then - log "MariaDB dump/query tools not available — skipping MariaDB exports." - return - fi - - if has_unit "mariadb.service" && is_unit_active "mariadb.service"; then - mariadb_unit="mariadb.service" - elif has_unit "mysql.service" && is_unit_active "mysql.service"; then - mariadb_unit="mysql.service" - else - log "MariaDB service is not active — skipping MariaDB exports." - return - fi - - log "Exporting MariaDB databases from ${mariadb_unit}…" - - local dbs - dbs=$($query_cmd -N -e "SHOW DATABASES" 2>/dev/null || true) - if [[ -z "$dbs" ]]; then - log "No MariaDB databases found." - return - fi - - while IFS= read -r db; do - [[ -n "$db" ]] || continue - case "$db" in - information_schema|performance_schema|mysql|sys) continue ;; - esac - - local safe_db out_file - safe_db="$(echo "$db" | tr -c '[:alnum:]_.-' '_')" - out_file="$DB_DUMP_DIR/mariadb_${safe_db}.sql" - - $dump_cmd --single-transaction --quick --routines --events --triggers "$db" > "$out_file" || \ - fail "Failed to export MariaDB database '$db'." - - DB_DUMP_FILES+=("database-dumps/mariadb_${safe_db}.sql") - done <<< "$dbs" -} - -export_lnd_scb_if_possible() { - [[ "$LND_AVAILABLE" -eq 1 ]] || return - - local scb_file="$BACKUP_DIR/lnd-static-channel-backup.scb" - local attempts=( - "lncli exportchanbackup --all --output_file $scb_file" - "lncli -n mainnet exportchanbackup --all --output_file $scb_file" - "runuser -u lnd -- lncli exportchanbackup --all --output_file $scb_file" - "runuser -u lnd -- lncli -n mainnet exportchanbackup --all --output_file $scb_file" - ) - - if ! command -v lncli >/dev/null 2>&1; then - log "lncli not available — skipping Static Channel Backup export." - LND_BACKUP_NOTES+=("Static Channel Backup skipped (lncli unavailable)") - return - fi - - if ! is_unit_active "lnd.service"; then - log "LND service is not active — skipping Static Channel Backup export." - LND_BACKUP_NOTES+=("Static Channel Backup skipped (lnd.service inactive)") - return - fi - - log "Exporting LND Static Channel Backup…" - local attempt - for attempt in "${attempts[@]}"; do - if eval "$attempt" >/dev/null 2>&1; then - DB_DUMP_FILES+=("lnd-static-channel-backup.scb") - LND_BACKUP_NOTES+=("Static Channel Backup exported via lncli") - log "LND Static Channel Backup exported." - return - fi - done - - log "WARNING: Unable to export LND Static Channel Backup with available lncli invocations." - LND_BACKUP_NOTES+=("Static Channel Backup export failed (no compatible lncli invocation succeeded)") -} - -capture_active_lnd_dependents() { - [[ "$LND_AVAILABLE" -eq 1 ]] || return - - LND_UNITS_TO_RESTART=() - local raw_units="" - raw_units=$(systemctl show lnd.service -p RequiredBy -p WantedBy --value 2>/dev/null | tr ' ' '\n' | grep '\.service$' | sort -u || true) - - while IFS= read -r unit; do - [[ -n "$unit" ]] || continue - if is_unit_active "$unit"; then - LND_UNITS_TO_RESTART+=("$unit") - fi - done <<< "$raw_units" - - if is_unit_active "lnd.service"; then - LND_UNITS_TO_RESTART+=("lnd.service") - fi -} - -stop_lnd_stack_if_needed() { - [[ "$LND_AVAILABLE" -eq 1 ]] || return - - capture_active_lnd_dependents - - if [[ "${#LND_UNITS_TO_RESTART[@]}" -eq 0 ]]; then - log "No active LND-related services needed stopping." - return - fi - - log "Stopping active services that depend on LND for clean /var/lib/lnd archive…" - - local unit - for unit in "${LND_UNITS_TO_RESTART[@]}"; do - if [[ "$unit" == "lnd.service" ]]; then - continue - fi - systemctl stop "$unit" || fail "Failed to stop dependent service: $unit" - log "Stopped $unit" - done - - if printf '%s\n' "${LND_UNITS_TO_RESTART[@]}" | grep -qx 'lnd.service'; then - systemctl stop lnd.service || fail "Failed to stop lnd.service" - log "Stopped lnd.service" - fi - - LND_STOPPED=1 -} - -# ── Stage 1/5: NixOS configuration ────────────────────────────── +# ── Stage 1/4: NixOS configuration ────────────────────────────── log "" -log "── Stage 1/5: NixOS configuration (/etc/nixos) ──────────────" +log "── Stage 1/4: NixOS configuration (/etc/nixos) ──────────────" if [[ -d /etc/nixos ]]; then - create_tar_archive "etc-nixos.tar" -C / etc/nixos + run_rsync "/etc/nixos" no /etc/nixos/ "$BACKUP_DIR/etc/nixos/" log "Stage 1 complete." else log "WARNING: /etc/nixos not found — skipping." fi -# ── Stage 2/5: Secrets ────────────────────────────────────────── +# ── Stage 2/4: Secrets ────────────────────────────────────────── log "" -log "── Stage 2/5: Secrets (/etc/nix-bitcoin-secrets) ───────────" +log "── Stage 2/4: Secrets (/etc/nix-bitcoin-secrets) ───────────" if [[ "$ROLE" == "desktop" ]]; then log "Skipping /etc/nix-bitcoin-secrets — not applicable for Desktop Only role." elif [[ -e /etc/nix-bitcoin-secrets ]]; then - create_tar_archive "etc-nix-bitcoin-secrets.tar" -C / etc/nix-bitcoin-secrets + run_rsync "/etc/nix-bitcoin-secrets" no /etc/nix-bitcoin-secrets/ "$BACKUP_DIR/etc/nix-bitcoin-secrets/" else log "(not found: /etc/nix-bitcoin-secrets — skipping)" fi log "Stage 2 complete." -# ── Stage 3/5: Home directory ─────────────────────────────────── +# ── Stage 3/4: Home directory ─────────────────────────────────── +# Rsync exit code 24 (vanished source files) is treated as nonfatal here +# because the desktop may be active and files can disappear between the +# directory scan and the copy. All other nonzero exit codes remain fatal. log "" -log "── Stage 3/5: Home directory (/home) ───────────────────────" +log "── Stage 3/4: Home directory (/home) ───────────────────────" if [[ -d /home ]]; then - create_home_tar_archive "home.tar" \ - -C / \ - --exclude='home/*/.cache' \ - --exclude='home/*/.local/share/Trash' \ - --exclude='home/*/Trash' \ - --exclude='home/*/.mozilla/firefox/*/cache2' \ - --exclude='home/*/.mozilla/firefox/*/startupCache' \ - --exclude='home/*/.mozilla/firefox/*/thumbnails' \ - --exclude='home/*/.config/google-chrome/*/Cache' \ - --exclude='home/*/.config/google-chrome/*/Code Cache' \ - --exclude='home/*/.config/chromium/*/Cache' \ - --exclude='home/*/.config/chromium/*/Code Cache' \ - --exclude='home/*/.config/BraveSoftware/Brave-Browser/*/Cache' \ - --exclude='home/*/.config/BraveSoftware/Brave-Browser/*/Code Cache' \ - --exclude='home/*/.local/share/baloo' \ - --exclude='home/*/.thumbnails' \ - --exclude='home/*/.xsession-errors' \ - --exclude='home/*/.xsession-errors.old' \ - home + run_rsync "/home" yes \ + --exclude='.cache/' \ + --exclude='.local/share/Trash/' \ + --exclude='Trash/' \ + --exclude='.mozilla/firefox/*/cache2/' \ + --exclude='.mozilla/firefox/*/startupCache/' \ + --exclude='.mozilla/firefox/*/thumbnails/' \ + --exclude='.config/google-chrome/*/Cache/' \ + --exclude='.config/google-chrome/*/Code Cache/' \ + --exclude='.config/chromium/*/Cache/' \ + --exclude='.config/chromium/*/Code Cache/' \ + --exclude='.config/BraveSoftware/Brave-Browser/*/Cache/' \ + --exclude='.config/BraveSoftware/Brave-Browser/*/Code Cache/' \ + --exclude='.local/share/baloo/' \ + --exclude='.thumbnails/' \ + --exclude='.xsession-errors' \ + --exclude='.xsession-errors.old' \ + /home/ "$BACKUP_DIR/home/" log "Stage 3 complete." else log "WARNING: /home not found — skipping." fi -# ── Stage 4/5: Database exports + LND artifacts ──────────────── +# ── Stage 4/4: System data ────────────────────────────────────── +# PostgreSQL/MariaDB raw database directories are excluded. Application +# databases must be backed up separately with native database tools. +# Bitcoin/Electrs data are excluded; they live on the internal second drive. log "" -log "── Stage 4/5: Database and LND consistency exports ─────────" -export_postgresql_dumps -export_mariadb_dumps -export_lnd_scb_if_possible - -if [[ "$LND_AVAILABLE" -eq 1 ]]; then - stop_lnd_stack_if_needed - create_tar_archive "var-lib-lnd-clean.tar" -C / var/lib/lnd - LND_BACKUP_NOTES+=("Created clean raw /var/lib/lnd archive after controlled service stop") -fi - -log "Stage 4 complete." - -# ── Stage 5/5: System data ────────────────────────────────────── - -log "" -log "── Stage 5/5: System data (/var/lib) ───────────────────────" +log "── Stage 4/4: System data (/var/lib) ───────────────────────" if [[ -d /var/lib ]]; then - VAR_LIB_EXCLUDES=( - --exclude='var/lib/bitcoind' - --exclude='var/lib/electrs' - --exclude='var/lib/*/log' - --exclude='var/lib/*/logs' - --exclude='var/lib/*/cache' - --exclude='var/lib/*/tmp' - ) - - if [[ "$ROLE" == "desktop" || "$LND_AVAILABLE" -eq 1 ]]; then - VAR_LIB_EXCLUDES+=(--exclude='var/lib/lnd') - fi - - create_tar_archive "var-lib.tar" -C / "${VAR_LIB_EXCLUDES[@]}" var/lib - log "Stage 5 complete." + run_rsync "/var/lib" no \ + --exclude='postgresql/' \ + --exclude='mysql/' \ + --exclude='mariadb/' \ + --exclude='bitcoind/' \ + --exclude='electrs/' \ + --exclude='*/log/' \ + --exclude='*/logs/' \ + --exclude='*/cache/' \ + --exclude='*/tmp/' \ + /var/lib/ "$BACKUP_DIR/var/lib/" + log "Stage 4 complete." else log "WARNING: /var/lib not found — skipping." fi @@ -802,107 +461,88 @@ fi log "" log "Generating BACKUP_MANIFEST.txt …" MANIFEST_FILE="$BACKUP_DIR/BACKUP_MANIFEST.txt" -CHECKSUM_FILE="$BACKUP_DIR/SHA256SUMS.txt" { echo "Sovran_SystemsOS Backup Manifest" - echo "Generated: $(date -u '+%Y-%m-%dT%H:%M:%SZ')" - echo "Timestamp: $TIMESTAMP" + echo "Updated: $(date -u '+%Y-%m-%dT%H:%M:%SZ')" echo "Hostname: $(hostname)" echo "Role: $ROLE_LABEL" echo "Target: $TARGET" echo "" - echo "Source paths included:" - echo "- /etc/nixos" - echo "- /home" + echo "Backup type: Live rsync mirror (directly browsable files)" + echo "Location: ${BACKUP_DIR}" + echo "" + echo "Source paths mirrored:" + echo "- /etc/nixos → current/etc/nixos/" if [[ "$ROLE" != "desktop" ]]; then - echo "- /etc/nix-bitcoin-secrets (when present)" + echo "- /etc/nix-bitcoin-secrets (when present) → current/etc/nix-bitcoin-secrets/" fi - echo "- /var/lib" + echo "- /home → current/home/" + echo "- /var/lib → current/var/lib/" echo "" echo "Exclusions:" - for ex in "${MANIFEST_EXCLUDES[@]}"; do - echo "- $ex" - done + echo "- /var/lib/postgresql (PostgreSQL raw database files — not included)" + echo "- /var/lib/mysql, /var/lib/mariadb (MariaDB raw database files — not included)" + echo "- /var/lib/bitcoind (Bitcoin blockchain — excluded; lives on internal second drive)" + echo "- /var/lib/electrs (Electrs index — excluded; lives on internal second drive)" + echo "- /run/media/Second_Drive (internal second drive — never traversed)" + echo "- /var/lib/*/log, /var/lib/*/logs, /var/lib/*/cache, /var/lib/*/tmp" + echo "- Browser disk caches, thumbnail caches, trash directories, X session error logs" echo "" - echo "Archives:" - for archive in "${ARCHIVE_FILES[@]}"; do - echo "- $archive" - done - echo "" - echo "Database and LND exports:" - if [[ "${#DB_DUMP_FILES[@]}" -eq 0 && "${#LND_BACKUP_NOTES[@]}" -eq 0 ]]; then - echo "- none" - else - for dump in "${DB_DUMP_FILES[@]}"; do - echo "- $dump" - done - for note in "${LND_BACKUP_NOTES[@]}"; do - echo "- $note" - done - fi + echo "Important limitations:" + echo "- PostgreSQL and MariaDB/MySQL application databases are NOT included in this" + echo " backup. If you use Nextcloud, Matrix/Synapse, or other database-backed" + echo " applications, their data must be backed up separately using native tools." + echo "- Bitcoin blockchain data and Electrs indexes are NOT included; they are" + echo " reconstructable or stored on the internal second drive." + echo "- This is a live file-level mirror, not a transactional database backup." + echo " Files being written during the backup may be in an inconsistent state." echo "" echo "Restore guidance:" - echo "- Verify artifacts: cd && sha256sum -c SHA256SUMS.txt" - echo "- Extract a tar archive: sudo tar --acls --xattrs --numeric-owner -xpf .tar -C /" - echo "- PostgreSQL globals: sudo -u postgres psql -f database-dumps/postgresql_globals.sql" - echo "- PostgreSQL DB dump: sudo -u postgres pg_restore --create --clean --if-exists -d postgres database-dumps/postgresql_.dump" - echo "- MariaDB DB dump: mariadb < database-dumps/mariadb_.sql" - echo "- LND SCB: keep lnd-static-channel-backup.scb with wallet seed for channel recovery procedures" - echo "- Note: when restoring /var/lib, exclude raw DB directories (var/lib/postgresql, var/lib/mysql)" - echo " and restore from native dumps instead for PostgreSQL and MariaDB" + echo "- Files are directly browsable on the backup drive under: ${BACKUP_DIR}" + echo "- To restore a directory:" + echo " sudo rsync -aAXH --numeric-ids current/etc/nixos/ /etc/nixos/" + echo " sudo rsync -aAXH --numeric-ids current/home/ /home/" + echo " sudo rsync -aAXH --numeric-ids current/var/lib/ /var/lib/" + echo "- To copy individual files:" + echo " sudo cp -a current/home/username/ /home/username/" + echo "- When restoring /etc/nixos to replacement hardware, regenerate" + echo " hardware-configuration.nix for the new hardware before rebuilding." echo "" echo "Nonfatal warnings:" - if [[ "${#ARCHIVE_WARNINGS[@]}" -eq 0 ]]; then + if [[ "${#RSYNC_WARNINGS[@]}" -eq 0 ]]; then echo "- none" else - for warning in "${ARCHIVE_WARNINGS[@]}"; do + for warning in "${RSYNC_WARNINGS[@]}"; do echo "- $warning" done fi echo "" - echo "Important note: Bitcoin blockchain and Electrs index data are intentionally excluded" + echo "Note: Bitcoin blockchain and Electrs index data are intentionally excluded" echo "from manual external backup because they already live on the internal second drive" echo "(/run/media/Second_Drive) and are reconstructable/internal-backup data." - echo "" - echo "Artifact listing:" - # INCOMPLETE exists at this point (created at backup start); BACKUP_COMPLETE does not - # exist yet (written after checksums). Excluding both marker files here is intentional: - # INCOMPLETE is excluded so it doesn't appear as a data artifact, and BACKUP_COMPLETE - # is excluded defensively for consistency should the ordering ever change. - find "$BACKUP_DIR" -mindepth 1 -maxdepth 2 -type f \ - ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' -print0 | sort -z | tr '\0' '\n' } > "$MANIFEST_FILE" -# ── Generate checksums for all backup artifacts ───────────────── - -log "Generating SHA-256 checksums …" -( - cd "$BACKUP_DIR" - while IFS= read -r -d '' file; do - sha256sum "$file" - done < <(find . -mindepth 1 -maxdepth 2 -type f ! -name 'SHA256SUMS.txt' ! -name 'INCOMPLETE' ! -name 'BACKUP_COMPLETE' -print0 | sort -z) -) > "$CHECKSUM_FILE" - log "Manifest written to $MANIFEST_FILE" -log "Checksums written to $CHECKSUM_FILE" # ── Done ───────────────────────────────────────────────────────── log "" -if [[ "${#ARCHIVE_WARNINGS[@]}" -gt 0 ]]; then +if [[ "${#RSYNC_WARNINGS[@]}" -gt 0 ]]; then log "Backup completed with nonfatal warnings:" - for warning in "${ARCHIVE_WARNINGS[@]}"; do + for warning in "${RSYNC_WARNINGS[@]}"; do log " WARNING: $warning" done - log "Your important data is backed up. The warnings above indicate files that changed" - log "during backup, which is normal on an active desktop and does not affect your backup." + log "Your important data is backed up. The warnings above indicate files that" + log "vanished during backup, which is normal on an active desktop." log "" fi log "All Finished! Your data is now backed up to a third location." +log "Files are directly browsable on the drive under: ${BACKUP_DIR}" log "Please eject the drive safely before removing it from your Sovran Pro." -# Remove incomplete marker and write completion marker only after all work succeeds +# Remove incomplete marker and write completion marker only after all work succeeds. +# A later successful run will update the same mirror and replace any INCOMPLETE state. rm -f "$BACKUP_DIR/INCOMPLETE" echo "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" > "$BACKUP_DIR/BACKUP_COMPLETE" diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py index d255171..198bf24 100644 --- a/app/sovran_systemsos_web/server.py +++ b/app/sovran_systemsos_web/server.py @@ -1494,38 +1494,13 @@ def _is_internal_mount(mnt: str) -> bool: def _is_supported_backup_fstype(path: str, fstype: str) -> bool: - """Return whether the target filesystem type is supported for manual backup.""" + """Return whether the target filesystem type is supported for manual backup. + + Manual Backup requires ext4 for Linux metadata preservation (ACLs, xattrs, + hard links). exFAT, FAT32, NTFS, and other filesystems are not supported. + """ fstype = (fstype or "").lower() - if fstype == "exfat": - return True - if fstype != "fuseblk": - return False - - src_dev = "" - try: - result = subprocess.run( - ["findmnt", "-n", "-o", "SOURCE", "-T", path], - capture_output=True, text=True, timeout=5, - ) - if result.returncode == 0: - src_dev = result.stdout.strip() - except Exception: - src_dev = "" - - if not src_dev: - return False - - for cmd in ( - ["lsblk", "-no", "FSTYPE", src_dev], - ["blkid", "-o", "value", "-s", "TYPE", src_dev], - ): - try: - result = subprocess.run(cmd, capture_output=True, text=True, timeout=5) - if result.returncode == 0 and result.stdout.strip().lower() in {"exfat", "fuseblk"}: - return True - except Exception: - continue - return False + return fstype == "ext4" def _detect_external_drives() -> list[dict]: @@ -3799,7 +3774,7 @@ async def api_backup_run(target: str = ""): if selected_fstype and not _is_supported_backup_fstype(selected_target, selected_fstype): raise HTTPException( status_code=400, - detail=f"Selected drive filesystem '{selected_fstype}' is not supported for manual backup.", + detail=f"Selected drive filesystem '{selected_fstype}' is not supported for manual backup. Manual Backup requires an ext4-formatted drive.", ) # Clear stale log before starting diff --git a/app/sovran_systemsos_web/static/js/support.js b/app/sovran_systemsos_web/static/js/support.js index a1e272b..acae4cf 100644 --- a/app/sovran_systemsos_web/static/js/support.js +++ b/app/sovran_systemsos_web/static/js/support.js @@ -491,8 +491,9 @@ function renderBackupReady(drives) { '
    Requirements
    ', '
      ', '
    1. USB hard drive plugged into one of the open USB ports on your Sovran Pro
    2. ', - '
    3. Enough free space for your selected backup data (the backup checks this before starting)
    4. ', - '
    5. Drive must be formatted as exFAT
    6. ', + '
    7. Enough free space for your data (the backup checks this before starting)
    8. ', + '
    9. Drive must be formatted as ext4 (a Linux filesystem). Drives with exFAT, FAT32, or NTFS are not supported. To format a drive as ext4, use a Linux tool such as GParted or mkfs.ext4 — note that formatting erases all data on the drive.
    10. ', + '
    11. The drive is intended for Linux/Sovran recovery. It may not be directly readable by Windows or macOS without additional software.
    12. ', '
    ', '
    ', @@ -501,17 +502,25 @@ function renderBackupReady(drives) { '
      ', '
    1. NixOS configuration (/etc/nixos)
    2. ', '
    3. nix-bitcoin secrets (/etc/nix-bitcoin-secrets)
    4. ', - '
    5. System service data (/var/lib) including Vaultwarden, bitcoind, LND, sovran-hub, domains, and secrets
    6. ', + '
    7. System service data (/var/lib) — excluding databases and blockchain data (see note below)
    8. ', '
    9. Home directory (/home)
    10. ', '
    ', '', '
    ', + '
    ', + '\u2139\ufe0f', + 'Database and Blockchain Data', + '
    ', + '

    Application databases stored in PostgreSQL or MariaDB/MySQL are not included in Manual Backup. Bitcoin blockchain and Electrs index data are also excluded (they are stored on the internal second drive). If you use Nextcloud, Matrix, or other database-backed applications, back up those databases separately with their native tools.

    ', + '
    ', + + '
    ', '
    ', '\u23f1\ufe0f', 'Time Estimate', '
    ', - '

    This backup can take up to 4 hours depending on the amount of data stored on your Sovran Pro and the speed of your external hard drive. Be patient\u2026

    ', + '

    The first backup may take a while depending on how much data you have. Later backups are much faster because only changed or new files are copied. Files are stored directly on the drive and can be browsed without any special software.

    ', '
    ', driveSelector, @@ -619,7 +628,7 @@ function renderBackupDone(success) { '
    ', '
    \u26a0\ufe0f
    ', '

    Backup Failed

    ', - '

    The backup did not complete successfully. Please check that the USB drive is still connected, has enough free space, and is formatted as exFAT. Then try again.

    ', + '

    The backup did not complete successfully. Please check that the USB drive is still connected, has enough free space, and is formatted as ext4. Then try again.

    ', '', '', '
    ', diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index cb3da74..0687263 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -15,45 +15,325 @@ SUPPORT_JS = REPO_ROOT / "app" / "sovran_systemsos_web" / "static" / "js" / "sup NIX_HUB_FILE = REPO_ROOT / "modules" / "core" / "sovran-hub.nix" -def _extract_bash_function(script_path: Path, func_name: str) -> str: - """Extract a bash function definition from a shell script using Python regex. - - The pattern matches from 'funcname() {' to the first line whose only content - is '}' (the function closing brace, at column 0). This works correctly for - functions whose control structures (case/if/while/for) use indented braces, - because only the function's own closing brace sits at column 0. It would not - correctly extract a function that contains a nested function definition. - - Returns the complete function definition, safe to inline into a test bash - script without eval or awk.""" - source = script_path.read_text() - pattern = r"^" + re.escape(func_name) + r"\(\) \{.*?^}" - match = re.search(pattern, source, re.MULTILINE | re.DOTALL) - if match is None: - raise ValueError(f"Function '{func_name}' not found in {script_path}") - return match.group(0) - - class ManualBackupWorkflowTests(unittest.TestCase): - def test_backup_script_uses_tar_archives_with_checksums_and_exclusions(self): - source = BACKUP_SCRIPT.read_text() + # ── Core design: rsync, no tar, no DB, no LND ───────────────────────────── - self.assertIn("tar \\", source) - self.assertIn("--create", source) + def test_backup_script_uses_rsync_not_tar(self): + """New design: backup must use rsync, not tar archives.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("rsync", source, "backup script must use rsync") + self.assertIn("--archive", source, "rsync must be called with --archive flag") + self.assertNotIn("tar --create", source, "backup script must not create tar archives") + self.assertNotIn("--file ", source, "backup script must not write tar --file output") + + def test_backup_script_has_no_database_dump_functions(self): + """Removed: PostgreSQL and MariaDB dump functions must not exist.""" + source = BACKUP_SCRIPT.read_text() + self.assertNotIn("pg_dump", source, "backup script must not contain pg_dump") + self.assertNotIn("pg_dumpall", source, "backup script must not contain pg_dumpall") + self.assertNotIn("mariadb-dump", source, "backup script must not contain mariadb-dump") + self.assertNotIn("mysqldump", source, "backup script must not contain mysqldump") + self.assertNotIn("export_postgresql_dumps", source) + self.assertNotIn("export_mariadb_dumps", source) + + def test_backup_script_has_no_lnd_service_orchestration(self): + """Removed: LND stop/restart and SCB export must not exist.""" + source = BACKUP_SCRIPT.read_text() + self.assertNotIn("export_lnd_scb_if_possible", source) + self.assertNotIn("stop_lnd_stack_if_needed", source) + self.assertNotIn("lncli", source, "backup script must not call lncli") + self.assertNotIn("LND_STOPPED", source, "backup script must not track LND_STOPPED state") + self.assertNotIn("LND_UNITS_TO_RESTART", source) + + def test_backup_script_has_no_tar_dependencies(self): + """Removed: sha256sum checksums for tar artifacts must not exist.""" + source = BACKUP_SCRIPT.read_text() + self.assertNotIn("sha256sum", source, "backup script must not generate tar checksums") + self.assertNotIn("SHA256SUMS", source, "backup script must not write SHA256SUMS.txt") + + # ── Rsync options ────────────────────────────────────────────────────────── + + def test_backup_script_rsync_uses_metadata_preserving_options(self): + """Rsync must be called with Linux metadata-preserving options.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("--archive", source) + self.assertIn("--acls", source) + self.assertIn("--xattrs", source) + self.assertIn("--hard-links", source) + self.assertIn("--numeric-ids", source) self.assertIn("--one-file-system", source) - self.assertIn("sha256sum", source) - self.assertIn("export_postgresql_dumps", source) - self.assertIn("export_mariadb_dumps", source) - self.assertIn("export_lnd_scb_if_possible", source) - self.assertIn("--exclude='var/lib/bitcoind'", source) - self.assertIn("--exclude='var/lib/electrs'", source) - self.assertIn("--exclude='var/lib/lnd'", source) - self.assertIn("set_status \"RUNNING\"", source) - self.assertIn("set_status \"SUCCESS\"", source) - self.assertIn("set_status \"FAILED\"", source) - self.assertNotIn("rsync -a", source) + + def test_backup_script_rsync_no_delete(self): + """Rsync must NOT use --delete or --delete-delay. + Accidental source deletion must not silently wipe the backup copy.""" + source = BACKUP_SCRIPT.read_text() + self.assertNotIn("--delete", source, + "rsync must not use --delete; accidental source deletion must not erase backup") + + def test_backup_script_uses_stable_current_mirror_path(self): + """Backup must write to a stable 'current/' path, not timestamped directories. + Later runs should update the same mirror.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("Sovran_SystemsOS_Backup/current", source, + "backup must use a stable 'current' mirror path") + # Must not create new timestamped directories per run + self.assertNotIn( + "date '+%Y%m%d_%H%M%S'", + source, + "backup must not create timestamped per-run directories", + ) + + def test_backup_script_source_destination_mapping(self): + """Each source tree must be synced to a matching destination path.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("/etc/nixos/", source) + self.assertIn('"$BACKUP_DIR/etc/nixos/"', source) + self.assertIn("/home/", source) + self.assertIn('"$BACKUP_DIR/home/"', source) + self.assertIn("/var/lib/", source) + self.assertIn('"$BACKUP_DIR/var/lib/"', source) + + # ── ext4 filesystem validation ───────────────────────────────────────────── + + def test_backup_script_requires_ext4_filesystem(self): + """Backup script must reject non-ext4 filesystems and require ext4.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'fstype" != "ext4"', + source, + "backup script must check for ext4 filesystem", + ) + self.assertIn("ext4", source, "backup script must reference ext4") + self.assertNotIn( + '"exfat"', + source, + "backup script must not accept exFAT (old requirement)", + ) + self.assertNotIn( + '"fuseblk"', + source, + "backup script must not accept fuseblk/NTFS", + ) + + def test_backup_script_rejects_unsupported_filesystems_in_error_message(self): + """The ext4 rejection message must mention the unsupported filesystem types.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "exFAT, FAT32, and NTFS are not supported", + source, + "error message must clearly list unsupported filesystem types", + ) + + def test_backend_accepts_ext4_rejects_exfat(self): + """Backend _is_supported_backup_fstype must accept ext4 and reject exFAT.""" + server_source = SERVER_FILE.read_text() + # Must accept ext4 + self.assertIn( + 'return fstype == "ext4"', + server_source, + "backend must accept only ext4", + ) + # Must not accept exFAT + self.assertNotIn( + 'fstype == "exfat"', + server_source, + "backend must not accept exFAT", + ) + self.assertNotIn( + 'fuseblk', + server_source.split("_is_supported_backup_fstype")[1][:500], + "backend must not accept fuseblk", + ) + + def test_frontend_requires_ext4_not_exfat(self): + """Frontend UI copy must require ext4 and not mention exFAT as the requirement.""" + support_source = SUPPORT_JS.read_text() + self.assertIn( + "ext4", + support_source, + "support.js must mention ext4 as the required filesystem", + ) + # The word exFAT must not appear as a requirement (it may appear in a + # note about unsupported formats, but the requirement itself must say ext4) + requirements_section = re.search( + r"Requirements.*?What gets backed up", + support_source, + re.DOTALL, + ) + if requirements_section: + req_text = requirements_section.group(0) + self.assertNotIn( + "Drive must be formatted as exFAT", + req_text, + "Requirements section must not say 'formatted as exFAT'", + ) + self.assertIn( + "ext4", + req_text, + "Requirements section must say ext4", + ) + + def test_frontend_failure_message_says_ext4(self): + """Failure message in renderBackupDone must say ext4, not exFAT.""" + support_source = SUPPORT_JS.read_text() + self.assertNotIn( + "formatted as exFAT", + support_source, + "failure message must not say 'formatted as exFAT'", + ) + self.assertIn( + "formatted as ext4", + support_source, + "failure message must say 'formatted as ext4'", + ) + + # ── Database exclusions ──────────────────────────────────────────────────── + + def test_backup_script_excludes_postgresql_and_mariadb(self): + """PostgreSQL and MariaDB raw database directories must be excluded.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("--exclude='postgresql/'", source, + "rsync must exclude postgresql directory") + self.assertIn("--exclude='mysql/'", source, + "rsync must exclude mysql directory") + self.assertIn("--exclude='mariadb/'", source, + "rsync must exclude mariadb directory") + + def test_backup_script_excludes_bitcoin_and_electrs(self): + """Bitcoin blockchain and Electrs index data must be excluded.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("--exclude='bitcoind/'", source, + "rsync must exclude bitcoind directory") + self.assertIn("--exclude='electrs/'", source, + "rsync must exclude electrs directory") + + def test_manifest_states_database_exclusion(self): + """The manifest must explicitly state that PostgreSQL and MariaDB are excluded.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "PostgreSQL and MariaDB/MySQL application databases are NOT included", + source, + "manifest must state that databases are not included", + ) + self.assertIn( + "Bitcoin blockchain data and Electrs indexes are NOT included", + source, + "manifest must state that blockchain data is not included", + ) + + def test_manifest_has_no_tar_restore_instructions(self): + """Manifest must not mention tar extraction, pg_restore, or LND SCB.""" + source = BACKUP_SCRIPT.read_text() + self.assertNotIn( + "tar --acls --xattrs", + source, + "manifest must not give tar restore instructions", + ) + self.assertNotIn( + "pg_restore", + source, + "manifest must not reference pg_restore", + ) + self.assertNotIn( + "lnd-static-channel-backup.scb", + source, + "manifest must not reference LND SCB restore procedures", + ) + + def test_manifest_has_rsync_restore_guidance(self): + """Manifest must provide rsync-based restore guidance.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + "rsync -aAXH --numeric-ids", + source, + "manifest must show rsync restore command", + ) + + # ── Exit code 24 (vanished files) for /home only ────────────────────────── + + def test_backup_script_exit_code_24_nonfatal_for_home(self): + """Rsync exit code 24 (vanished files) must be nonfatal for /home only.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + '"$rc" -eq 24', + source, + "backup script must handle rsync exit code 24", + ) + self.assertIn( + 'allow_vanished" == "yes"', + source, + "exit 24 acceptance must be gated on allow_vanished flag", + ) + + def test_backup_script_home_stage_allows_vanished(self): + """Stage 3 (/home) must call run_rsync with allow_vanished=yes.""" + source = BACKUP_SCRIPT.read_text() + # The /home call must pass "yes" as the allow_vanished argument + self.assertIn( + 'run_rsync "/home" yes', + source, + "/home stage must pass allow_vanished=yes to run_rsync", + ) + + def test_backup_script_other_stages_disallow_vanished(self): + """Stages other than /home must call run_rsync with allow_vanished=no.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'run_rsync "/etc/nixos" no', + source, + "/etc/nixos stage must use allow_vanished=no", + ) + self.assertIn( + 'run_rsync "/var/lib" no', + source, + "/var/lib stage must use allow_vanished=no", + ) + + # ── INCOMPLETE / BACKUP_COMPLETE markers ────────────────────────────────── + + def test_backup_script_writes_incomplete_marker(self): + """A backup directory must be marked INCOMPLETE immediately after + creation, so interrupted or failed runs are identifiable.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'touch "$BACKUP_DIR/INCOMPLETE"', + source, + "backup script must create INCOMPLETE marker after mkdir", + ) + + def test_backup_script_writes_backup_complete_marker(self): + """A BACKUP_COMPLETE file must be written only after all work succeeds.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn( + 'BACKUP_COMPLETE"', + source, + "backup script must write BACKUP_COMPLETE file on success", + ) + self.assertIn( + 'rm -f "$BACKUP_DIR/INCOMPLETE"', + source, + "backup script must remove INCOMPLETE marker on success", + ) + + # ── Concurrency lock ────────────────────────────────────────────────────── + + def test_backup_script_uses_flock_concurrency_lock(self): + """The script must acquire an exclusive flock before starting work.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("flock", source, "backup script must use flock") + self.assertIn("LOCK_FILE", source, "backup script must define LOCK_FILE") + + # ── Status states ───────────────────────────────────────────────────────── + + def test_backup_script_uses_running_success_failed_states(self): + """Status values must be RUNNING, SUCCESS, and FAILED.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn('set_status "RUNNING"', source) + self.assertIn('set_status "SUCCESS"', source) + self.assertIn('set_status "FAILED"', source) def test_backend_and_frontend_use_explicit_backup_terminal_states(self): + """Backend and frontend must use consistent terminal state handling.""" server_source = SERVER_FILE.read_text() support_source = SUPPORT_JS.read_text() @@ -62,85 +342,69 @@ class ManualBackupWorkflowTests(unittest.TestCase): self.assertIn("asyncio.create_task(_monitor_backup_subprocess(proc))", server_source) self.assertIn("result === \"success\" || result === \"failed\"", support_source) - # ── Regression tests for exit-code-127 / missing-interpreter bug ────────── + # ── Nix service PATH ────────────────────────────────────────────────────── - def test_nix_service_path_includes_bash_and_gawk(self): - """Regression: pkgs.bash and pkgs.gawk must appear in the sovran-hub-web - service path so that the backup shell script and its awk calls can be - resolved at runtime without producing exit code 127.""" + def test_nix_service_path_includes_rsync_and_acl(self): + """pkgs.rsync and pkgs.acl must appear in the sovran-hub-web service path + so that rsync with ACL/xattr support is available at runtime.""" nix_source = NIX_HUB_FILE.read_text() self.assertIn( - "pkgs.bash", + "pkgs.rsync", nix_source, - "pkgs.bash must be declared in the sovran-hub-web systemd service path", + "pkgs.rsync must be declared in the sovran-hub-web service path", ) self.assertIn( - "pkgs.gawk", + "pkgs.acl", nix_source, - "pkgs.gawk must be declared in the sovran-hub-web systemd service path", + "pkgs.acl must be declared in the sovran-hub-web service path", ) + def test_nix_service_path_includes_bash_and_gawk(self): + """Regression: pkgs.bash and pkgs.gawk must appear in the service path.""" + nix_source = NIX_HUB_FILE.read_text() + self.assertIn("pkgs.bash", nix_source, + "pkgs.bash must be declared in the sovran-hub-web service path") + self.assertIn("pkgs.gawk", nix_source, + "pkgs.gawk must be declared in the sovran-hub-web service path") + + def test_nix_service_path_has_no_gnutar(self): + """pkgs.gnutar must be removed from the service path (no longer needed).""" + nix_source = NIX_HUB_FILE.read_text() + self.assertNotIn( + "pkgs.gnutar", + nix_source, + "pkgs.gnutar must be removed from the service path (tar is no longer used)", + ) + + # ── Regression tests for exit-code-127 / missing-interpreter bug ────────── + def test_server_resolves_bash_via_shutil_which(self): - """Regression: server must locate bash with shutil.which() rather than - relying on /usr/bin/env bash, so a missing interpreter is caught early - with a clear diagnostic instead of a cryptic exit-code-127 failure.""" + """Regression: server must locate bash with shutil.which().""" source = SERVER_FILE.read_text() - self.assertIn( - 'shutil.which("bash")', - source, - "server.py must resolve bash via shutil.which to catch missing interpreter", - ) - self.assertNotIn( - '"/usr/bin/env", "bash"', - source, - "server.py must not use /usr/bin/env bash (relies on PATH, causes code 127)", - ) + self.assertIn('shutil.which("bash")', source) + self.assertNotIn('"/usr/bin/env", "bash"', source) def test_server_logs_actionable_message_when_bash_missing(self): - """Regression: when bash is absent the server must write an actionable log - entry and set FAILED status before returning an HTTP error.""" + """Regression: when bash is absent the server must write an actionable log.""" source = SERVER_FILE.read_text() - self.assertIn( - "bash_path is None", - source, - "server.py must check that bash_path is not None before launching", - ) - self.assertIn( - "interpreter", - source, - "server.py missing-bash error message must reference 'interpreter'", - ) + self.assertIn("bash_path is None", source) + self.assertIn("interpreter", source) def test_server_captures_stderr_from_backup_subprocess(self): - """Regression: the backup subprocess must use stderr=PIPE so that any - startup error (e.g. code 127 from a missing command) is captured and - surfaced in the backup log rather than being silently discarded.""" + """Regression: backup subprocess must use stderr=PIPE.""" source = SERVER_FILE.read_text() - self.assertIn( - "stderr=asyncio.subprocess.PIPE", - source, - "backup subprocess must use stderr=PIPE to capture diagnostic output", - ) - self.assertIn( - "stderr_text", - source, - "_monitor_backup_subprocess must capture and log stderr content", - ) + self.assertIn("stderr=asyncio.subprocess.PIPE", source) + self.assertIn("stderr_text", source) def test_monitor_includes_stderr_detail_in_failed_message(self): - """Regression: _monitor_backup_subprocess must append captured stderr to - the FAILED log entry so the UI shows what went wrong (e.g. 'bash: not - found') rather than only the raw exit code.""" + """Regression: _monitor_backup_subprocess must append captured stderr.""" source = SERVER_FILE.read_text() self.assertIn("stderr_chunks", source) self.assertIn("stderr_text", source) - # stderr detail is conditionally appended only when non-empty self.assertIn('detail = f" — stderr: {stderr_text}"', source) def test_exit_code_127_subprocess_stderr_drain(self): - """Behavioral regression: a subprocess that exits 127 must have its - stderr drained without deadlock by the async drain loop.""" - + """Behavioral regression: a subprocess that exits 127 drains stderr without deadlock.""" async def _run(): proc = await asyncio.create_subprocess_exec( "bash", "-c", "echo 'bash: command not found' >&2; exit 127", @@ -162,525 +426,319 @@ class ManualBackupWorkflowTests(unittest.TestCase): self.assertEqual(rc, 127) self.assertIn("bash: command not found", stderr_out) - # ── Tests for home tar exit-1 tolerance (production fix) ────────────────── + # ── Rsync exit code 24 behavioral tests ────────────────────────────────── - def test_backup_script_has_home_tar_archive_function(self): - """The script must define create_home_tar_archive for /home only, - separate from the strict create_tar_archive used for other sources.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "create_home_tar_archive", - source, - "backup script must define create_home_tar_archive for /home", - ) - self.assertIn( - "_is_home_warning_allowlisted", - source, - "backup script must define _is_home_warning_allowlisted helper", - ) - self.assertIn( - "ARCHIVE_WARNINGS", - source, - "backup script must track nonfatal warnings in ARCHIVE_WARNINGS", - ) - - def test_backup_script_allowlist_covers_verified_gnu_tar_messages(self): - """The allowlist must contain the exact GNU tar (LC_ALL=C) strings for - the two permitted transient conditions.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "file changed as we read it", - source, - "allowlist must include exact GNU tar 'file changed as we read it' message", - ) - self.assertIn( - "file removed before we read it", - source, - "allowlist must include exact GNU tar 'file removed before we read it' message", - ) - - def test_backup_script_stage3_uses_home_tar_function(self): - """Stage 3 must call create_home_tar_archive (not create_tar_archive) - so the /home archive tolerates live file changes on an active desktop.""" - source = BACKUP_SCRIPT.read_text() - # The home archive call must use the tolerant function - self.assertIn( - 'create_home_tar_archive "home.tar"', - source, - "Stage 3 must use create_home_tar_archive for home.tar", - ) - - def test_backup_script_strict_function_still_used_for_etc(self): - """create_tar_archive (strict) must still be used for /etc/nixos, - secrets, var-lib-lnd-clean, and var-lib — only /home is tolerant.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - 'create_tar_archive "etc-nixos.tar"', - source, - "etc-nixos must use strict create_tar_archive", - ) - self.assertIn( - 'create_tar_archive "var-lib.tar"', - source, - "var-lib must use strict create_tar_archive", - ) - - # ── Tests for partial-file atomic publish ───────────────────────────────── - - def test_backup_script_uses_partial_path_and_atomic_rename(self): - """Archives must be written to a .partial path and atomically renamed - to the final name only after acceptance, so a failed run never leaves a - partial archive that appears complete.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - ".partial", - source, - "backup script must write to a .partial path before renaming", - ) - self.assertIn( - 'mv "$partial_path" "$archive_path"', - source, - "backup script must atomically rename partial to final archive path", - ) - self.assertIn( - "PARTIAL_FILES", - source, - "backup script must track partial files for cleanup", - ) - - # ── Tests for INCOMPLETE / BACKUP_COMPLETE markers ──────────────────────── - - def test_backup_script_writes_incomplete_marker(self): - """A backup directory must be marked INCOMPLETE immediately after - creation, so interrupted or failed runs are identifiable.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - 'touch "$BACKUP_DIR/INCOMPLETE"', - source, - "backup script must create INCOMPLETE marker after mkdir", - ) - - def test_backup_script_writes_backup_complete_marker(self): - """A BACKUP_COMPLETE file must be written only after all work succeeds, - so restore tools can distinguish complete from incomplete backups.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - 'BACKUP_COMPLETE"', - source, - "backup script must write BACKUP_COMPLETE file on success", - ) - self.assertIn( - 'rm -f "$BACKUP_DIR/INCOMPLETE"', - source, - "backup script must remove INCOMPLETE marker on success", - ) - - # ── Tests for concurrency lock ───────────────────────────────────────────── - - def test_backup_script_uses_flock_concurrency_lock(self): - """The script must acquire an exclusive flock before starting work to - prevent two simultaneous backup runs.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "flock", - source, - "backup script must use flock for concurrency protection", - ) - self.assertIn( - "LOCK_FILE", - source, - "backup script must define a LOCK_FILE for the flock", - ) - - # ── Tests for expanded home exclusions ──────────────────────────────────── - - def test_backup_script_home_excludes_browser_caches(self): - """The home archive must exclude browser disk caches (volatile data) - while keeping profile data, bookmarks, and user documents.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "--exclude='home/*/.mozilla/firefox/*/cache2'", - source, - "backup script must exclude Firefox cache2 directory", - ) - self.assertIn( - "--exclude='home/*/.config/google-chrome/*/Cache'", - source, - "backup script must exclude Chrome Cache directory", - ) - self.assertIn( - "--exclude='home/*/.config/chromium/*/Cache'", - source, - "backup script must exclude Chromium Cache directory", - ) - self.assertIn( - "--exclude='home/*/.config/BraveSoftware/Brave-Browser/*/Cache'", - source, - "backup script must exclude Brave Cache directory", - ) - - def test_backup_script_home_excludes_other_volatile_caches(self): - """The home archive must exclude baloo, thumbnails, and X session - error logs — all volatile/reconstructable content.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "--exclude='home/*/.local/share/baloo'", - source, - ) - self.assertIn( - "--exclude='home/*/.thumbnails'", - source, - ) - self.assertIn( - "--exclude='home/*/.xsession-errors'", - source, - ) - - # ── Tests for require_cmd additions ─────────────────────────────────────── - - def test_backup_script_requires_mktemp_and_flock(self): - """The script must explicitly check for mktemp and flock via require_cmd - so that missing tools fail early with a clear error.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "require_cmd mktemp", - source, - "backup script must require mktemp", - ) - self.assertIn( - "require_cmd flock", - source, - "backup script must require flock", - ) - - # ── Behavioral tests ────────────────────────────────────────────────────── - - def test_allowlist_accepts_file_changed_message(self): - """Behavioral: _is_home_warning_allowlisted (from the actual backup script) - returns true for the exact GNU tar 'file changed as we read it' message (LC_ALL=C). - The function definition is extracted from the production script via Python regex - to ensure the test exercises the real allowlist without eval-of-awk risks.""" - func_def = _extract_bash_function(BACKUP_SCRIPT, "_is_home_warning_allowlisted") - script = ( - "#!/usr/bin/env bash\n" - + func_def + "\n" - + 'msgs=(\n' - + ' "tar: /home/user/firefox.db: file changed as we read it"\n' - + ' "tar: /home/user/.local/share/app: file removed before we read it"\n' - + ")\n" - + 'for msg in "${msgs[@]}"; do\n' - + ' _is_home_warning_allowlisted "$msg" || { echo "BLOCKED: $msg"; exit 1; }\n' - + ' echo "ALLOWED: $msg"\n' - + "done\n" - ) - with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete=False) as f: - f.write(script) - script_path = f.name - try: - result = subprocess.run(["bash", script_path], capture_output=True, text=True) - self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") - self.assertIn("ALLOWED", result.stdout) - self.assertNotIn("BLOCKED", result.stdout) - finally: - os.unlink(script_path) - - def test_allowlist_rejects_fatal_diagnostics(self): - """Behavioral: _is_home_warning_allowlisted (from the actual backup script) - returns false for permission errors, I/O errors, write errors, and other - fatal conditions.""" - func_def = _extract_bash_function(BACKUP_SCRIPT, "_is_home_warning_allowlisted") - script = ( - "#!/usr/bin/env bash\n" - + func_def + "\n" - + 'msgs=(\n' - + ' "tar: /home/user/file: Permission denied"\n' - + ' "tar: /dev/sdb: Cannot read: Input/output error"\n' - + ' "tar: Error is not recoverable: exiting now"\n' - + ' "Write error"\n' - + ' "tar: /home/user: Cannot stat: No such file or directory"\n' - + ")\n" - + 'for msg in "${msgs[@]}"; do\n' - + ' _is_home_warning_allowlisted "$msg" && { echo "ALLOWED_BUT_SHOULD_NOT: $msg"; exit 1; }\n' - + ' echo "CORRECTLY_BLOCKED: $msg"\n' - + "done\n" - ) - with tempfile.NamedTemporaryFile(mode="w", suffix=".sh", delete=False) as f: - f.write(script) - script_path = f.name - try: - result = subprocess.run(["bash", script_path], capture_output=True, text=True) - self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") - self.assertIn("CORRECTLY_BLOCKED", result.stdout) - self.assertNotIn("ALLOWED_BUT_SHOULD_NOT", result.stdout) - finally: - os.unlink(script_path) - - def test_home_tar_exits_1_with_only_allowlisted_warnings_is_accepted(self): - """Behavioral: _create_archive_impl in HOME mode accepts tar exit 1 when - every diagnostic is allowlisted and publishes the final archive.""" - with tempfile.TemporaryDirectory() as tmpdir: - src = os.path.join(tmpdir, "home", "user1") - dest = os.path.join(tmpdir, "backup") - os.makedirs(src, exist_ok=True) - os.makedirs(dest, exist_ok=True) - with open(os.path.join(src, "testfile.txt"), "w") as f: - f.write("test content\n") - - # Emulate the allowlist + acceptance logic in HOME mode - script = f"""#!/usr/bin/env bash -set -euo pipefail -BACKUP_DIR="{dest}" -ARCHIVE_FILES=() -ARCHIVE_WARNINGS=() -PARTIAL_FILES=() - -log() {{ echo "$*"; }} -fail() {{ echo "FAIL: $*" >&2; exit 1; }} - -_is_home_warning_allowlisted() {{ - local msg="$1" - case "$msg" in - *"file changed as we read it"*) return 0 ;; - *"file removed before we read it"*) return 0 ;; - *) return 1 ;; - esac -}} - -_create_archive_impl() {{ - local mode="$1"; shift - local archive_name="$1"; shift - local archive_path="$BACKUP_DIR/$archive_name" - local partial_path="${{archive_path}}.partial" - local diag_tmp - diag_tmp="$(mktemp /tmp/sovran-tar-diag.XXXXXX)" - PARTIAL_FILES+=("$partial_path" "$diag_tmp") - - local tar_rc=0 - LC_ALL=C tar --create --file "$partial_path" \ - --numeric-owner --sparse --one-file-system \ - "$@" 2>"$diag_tmp" || tar_rc=$? - - # Inject a simulated allowlisted warning to match production scenario - echo "tar: {src}/testfile.txt: file changed as we read it" >> "$diag_tmp" - tar_rc=1 # simulate exit 1 - - local has_fatal_diag=0 - if [[ -s "$diag_tmp" ]]; then - while IFS= read -r diag_line; do - [[ -n "$diag_line" ]] || continue - if [[ "$mode" == "HOME" ]] && ! _is_home_warning_allowlisted "$diag_line"; then - has_fatal_diag=1 - fi - done < "$diag_tmp" - fi - - local accept=0 - if [[ "$tar_rc" -eq 0 ]]; then - accept=1 - elif [[ "$mode" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then - accept=1 - ARCHIVE_WARNINGS+=("$archive_name: nonfatal warnings") - fi - - [[ "$accept" -eq 1 ]] || {{ rm -f "$partial_path" "$diag_tmp"; fail "Rejected"; }} - [[ -s "$partial_path" ]] || {{ rm -f "$partial_path" "$diag_tmp"; fail "Empty"; }} - - mv "$partial_path" "$archive_path" - rm -f "$diag_tmp" - ARCHIVE_FILES+=("$archive_name") - echo "CREATED: $archive_name" -}} - -create_home_tar_archive() {{ _create_archive_impl HOME "$@"; }} - -create_home_tar_archive "home.tar" -C "{tmpdir}" home -echo "WARNINGS: ${{#ARCHIVE_WARNINGS[@]}}" -[[ -f "{dest}/home.tar" ]] && echo "FILE_EXISTS" || echo "FILE_MISSING" -[[ ! -f "{dest}/home.tar.partial" ]] && echo "PARTIAL_CLEANED" || echo "PARTIAL_LEFT" -""" - script_file = os.path.join(tmpdir, "test.sh") - with open(script_file, "w") as sf: - sf.write(script) - result = subprocess.run(["bash", script_file], capture_output=True, text=True) - self.assertEqual(result.returncode, 0, f"stdout: {result.stdout}\nstderr: {result.stderr}") - self.assertIn("CREATED: home.tar", result.stdout) - self.assertIn("FILE_EXISTS", result.stdout) - self.assertIn("PARTIAL_CLEANED", result.stdout) - - def test_home_tar_exits_1_with_fatal_diagnostic_fails(self): - """Behavioral: _create_archive_impl in HOME mode must fail when tar exit 1 - includes a non-allowlisted diagnostic (e.g. permission denied).""" + def test_run_rsync_exit_24_nonfatal_for_home(self): + """Behavioral: run_rsync with allow_vanished=yes treats exit 24 as a + nonfatal warning (recorded in RSYNC_WARNINGS) and does not fail.""" with tempfile.TemporaryDirectory() as tmpdir: dest = os.path.join(tmpdir, "backup") os.makedirs(dest, exist_ok=True) script = f"""#!/usr/bin/env bash set -euo pipefail -BACKUP_DIR="{dest}" -ARCHIVE_FILES=() -ARCHIVE_WARNINGS=() -PARTIAL_FILES=() +RSYNC_WARNINGS=() -fail() {{ echo "CORRECTLY_FAILED: $*"; exit 1; }} log() {{ echo "$*"; }} +fail() {{ echo "FAILED: $*" >&2; exit 1; }} -_is_home_warning_allowlisted() {{ - local msg="$1" - case "$msg" in - *"file changed as we read it"*) return 0 ;; - *"file removed before we read it"*) return 0 ;; - *) return 1 ;; - esac +run_rsync() {{ + local label="$1" + local allow_vanished="$2" + shift 2 + + local rc=24 # simulate rsync exit 24 + + if [[ "$rc" -eq 0 ]]; then + return 0 + elif [[ "$allow_vanished" == "yes" && "$rc" -eq 24 ]]; then + log "NOTE: $label — some files vanished during sync (normal on an active desktop)." + RSYNC_WARNINGS+=("$label: some files vanished during sync") + return 0 + else + fail "rsync failed for $label (exit code $rc)" + fi }} -# Simulate tar exit 1 with a fatal permission-denied diagnostic -archive_name="home.tar" -partial_path="$BACKUP_DIR/$archive_name.partial" -diag_tmp=$(mktemp) -echo "tar: /home/user/locked: Permission denied" > "$diag_tmp" - -tar_rc=1 -has_fatal_diag=0 -while IFS= read -r diag_line; do - [[ -n "$diag_line" ]] || continue - if ! _is_home_warning_allowlisted "$diag_line"; then - has_fatal_diag=1 - fi -done < "$diag_tmp" -rm -f "$diag_tmp" - -if [[ "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then - echo "INCORRECTLY_ACCEPTED" - exit 0 -else - fail "tar exit 1 with Permission denied" -fi +run_rsync "/home" yes /home/ "{dest}/home/" +echo "WARNINGS: ${{#RSYNC_WARNINGS[@]}}" +echo "SUCCESS" """ script_file = os.path.join(tmpdir, "test.sh") with open(script_file, "w") as sf: sf.write(script) result = subprocess.run(["bash", script_file], capture_output=True, text=True) - self.assertEqual(result.returncode, 1, f"Should have failed: {result.stdout}") - self.assertIn("CORRECTLY_FAILED", result.stdout) + self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") + self.assertIn("SUCCESS", result.stdout) + self.assertIn("WARNINGS: 1", result.stdout) - def test_home_tar_exits_2_always_fails(self): - """Behavioral: tar exit code 2 (fatal) must always fail even in HOME mode.""" + def test_run_rsync_exit_24_fatal_for_non_home(self): + """Behavioral: run_rsync with allow_vanished=no treats exit 24 as fatal.""" with tempfile.TemporaryDirectory() as tmpdir: dest = os.path.join(tmpdir, "backup") os.makedirs(dest, exist_ok=True) script = f"""#!/usr/bin/env bash -BACKUP_DIR="{dest}" -ARCHIVE_WARNINGS=() +RSYNC_WARNINGS=() -fail() {{ echo "CORRECTLY_FAILED: $*"; exit 1; }} log() {{ echo "$*"; }} +fail() {{ echo "CORRECTLY_FAILED: $*"; exit 1; }} -_is_home_warning_allowlisted() {{ - case "$1" in - *"file changed as we read it"*) return 0 ;; - *"file removed before we read it"*) return 0 ;; - *) return 1 ;; - esac +run_rsync() {{ + local label="$1" + local allow_vanished="$2" + shift 2 + + local rc=24 # simulate rsync exit 24 + + if [[ "$rc" -eq 0 ]]; then + return 0 + elif [[ "$allow_vanished" == "yes" && "$rc" -eq 24 ]]; then + RSYNC_WARNINGS+=("$label: vanished") + return 0 + else + fail "rsync failed for $label (exit code $rc)" + fi }} -tar_rc=2 -has_fatal_diag=0 - -accept=0 -if [[ "$tar_rc" -eq 0 ]]; then - accept=1 -elif [[ "HOME" == "HOME" && "$tar_rc" -eq 1 && "$has_fatal_diag" -eq 0 ]]; then - accept=1 -fi - -if [[ "$accept" -eq 0 ]]; then - if [[ "$tar_rc" -gt 1 ]]; then - fail "tar exited with fatal code $tar_rc" - fi -fi +run_rsync "/etc/nixos" no /etc/nixos/ "{dest}/etc/nixos/" echo "SHOULD_NOT_REACH_HERE" """ script_file = os.path.join(tmpdir, "test.sh") with open(script_file, "w") as sf: sf.write(script) result = subprocess.run(["bash", script_file], capture_output=True, text=True) - self.assertEqual(result.returncode, 1, f"Should have failed: {result.stdout}") + self.assertEqual(result.returncode, 1) self.assertIn("CORRECTLY_FAILED", result.stdout) self.assertNotIn("SHOULD_NOT_REACH_HERE", result.stdout) - def test_partial_file_cleanup_on_failure(self): - """Behavioral: a .partial file must be removed when the archive creation - fails, so no incomplete archive is left on the destination.""" - with tempfile.TemporaryDirectory() as tmpdir: - dest = os.path.join(tmpdir, "backup") - os.makedirs(dest, exist_ok=True) + def test_run_rsync_other_nonzero_codes_always_fatal(self): + """Behavioral: rsync exit codes other than 0 and 24 (for home) are fatal.""" + for rc in [1, 10, 11, 12, 23, 25]: + with tempfile.TemporaryDirectory() as tmpdir: + dest = os.path.join(tmpdir, "backup") + os.makedirs(dest, exist_ok=True) - partial_path = os.path.join(dest, "home.tar.partial") + script = f"""#!/usr/bin/env bash +RSYNC_WARNINGS=() + +fail() {{ echo "CORRECTLY_FAILED: $*"; exit 1; }} +log() {{ echo "$*"; }} + +run_rsync() {{ + local label="$1" + local allow_vanished="$2" + shift 2 + + local rc={rc} # simulated exit code + + if [[ "$rc" -eq 0 ]]; then + return 0 + elif [[ "$allow_vanished" == "yes" && "$rc" -eq 24 ]]; then + RSYNC_WARNINGS+=("$label: vanished") + return 0 + else + fail "rsync failed for $label (exit code $rc)" + fi +}} + +run_rsync "/home" yes /home/ "{dest}/home/" +echo "SHOULD_NOT_REACH_HERE" +""" + script_file = os.path.join(tmpdir, "test.sh") + with open(script_file, "w") as sf: + sf.write(script) + result = subprocess.run(["bash", script_file], capture_output=True, text=True) + self.assertEqual(result.returncode, 1, + f"Exit code {rc} should fail: {result.stdout}") + self.assertIn("CORRECTLY_FAILED", result.stdout) + + # ── Behavioral: repeated runs target same 'current' mirror ────────────── + + def test_repeated_runs_use_same_current_directory(self): + """Behavioral: a second call to the backup logic must sync to the same + BACKUP_DIR (not create a new timestamped directory) so only changed + files are transferred.""" + with tempfile.TemporaryDirectory() as tmpdir: + target = os.path.join(tmpdir, "drive") + os.makedirs(target, exist_ok=True) script = f"""#!/usr/bin/env bash -BACKUP_DIR="{dest}" -PARTIAL_FILES=() +set -euo pipefail +TARGET="{target}" +CURRENT_DIR_NAME="Sovran_SystemsOS_Backup/current" +BACKUP_DIR="${{TARGET}}/${{CURRENT_DIR_NAME}}" +mkdir -p "$BACKUP_DIR" +echo "$BACKUP_DIR" +""" + for _ in range(2): + script_file = os.path.join(tmpdir, "test.sh") + with open(script_file, "w") as sf: + sf.write(script) + result = subprocess.run(["bash", script_file], capture_output=True, text=True) + self.assertEqual(result.returncode, 0) + backup_dir = result.stdout.strip() + self.assertEqual( + backup_dir, + os.path.join(target, "Sovran_SystemsOS_Backup", "current"), + ) -fail() {{ - # Simulate cleanup removing partial files - for p in "${{PARTIAL_FILES[@]}}"; do - [[ -f "$p" ]] && rm -f "$p" - done - echo "FAILED: $*" - exit 1 -}} -log() {{ :; }} + # ── Behavioral: INCOMPLETE/BACKUP_COMPLETE marker lifecycle ───────────── -partial_path="$BACKUP_DIR/home.tar.partial" -diag_tmp=$(mktemp) -PARTIAL_FILES+=("$partial_path" "$diag_tmp") + def test_incomplete_marker_written_before_work_starts(self): + """Behavioral: INCOMPLETE marker must exist during backup and be removed on success.""" + with tempfile.TemporaryDirectory() as tmpdir: + backup_dir = os.path.join(tmpdir, "current") + os.makedirs(backup_dir, exist_ok=True) -# Simulate partial archive being written -touch "$partial_path" + script = f"""#!/usr/bin/env bash +set -euo pipefail +BACKUP_DIR="{backup_dir}" +BACKUP_COMPLETE=0 -# Simulate a fatal error -fail "tar exited with code 2" +touch "$BACKUP_DIR/INCOMPLETE" +[[ -f "$BACKUP_DIR/INCOMPLETE" ]] && echo "INCOMPLETE_EXISTS" + +# Simulate successful completion +rm -f "$BACKUP_DIR/INCOMPLETE" +echo "done" > "$BACKUP_DIR/BACKUP_COMPLETE" +BACKUP_COMPLETE=1 + +[[ ! -f "$BACKUP_DIR/INCOMPLETE" ]] && echo "INCOMPLETE_REMOVED" +[[ -f "$BACKUP_DIR/BACKUP_COMPLETE" ]] && echo "COMPLETE_EXISTS" """ script_file = os.path.join(tmpdir, "test.sh") with open(script_file, "w") as sf: sf.write(script) result = subprocess.run(["bash", script_file], capture_output=True, text=True) - self.assertEqual(result.returncode, 1, f"Should have failed: {result.stdout}") - self.assertFalse( - os.path.exists(partial_path), - "Partial file must be removed on failure", + self.assertEqual(result.returncode, 0, f"stderr: {result.stderr}") + self.assertIn("INCOMPLETE_EXISTS", result.stdout) + self.assertIn("INCOMPLETE_REMOVED", result.stdout) + self.assertIn("COMPLETE_EXISTS", result.stdout) + + # ── Behavioral: actual rsync with real source/dest trees ───────────────── + + def test_rsync_mirrors_source_to_dest(self): + """Behavioral: rsync correctly mirrors a source tree to a destination.""" + with tempfile.TemporaryDirectory() as tmpdir: + src = os.path.join(tmpdir, "etc", "nixos") + dest = os.path.join(tmpdir, "backup", "etc", "nixos") + os.makedirs(src, exist_ok=True) + os.makedirs(os.path.join(tmpdir, "backup", "etc"), exist_ok=True) + + # Write test files + with open(os.path.join(src, "configuration.nix"), "w") as f: + f.write("{ ... }: {}\n") + with open(os.path.join(src, "custom.nix"), "w") as f: + f.write("{ ... }: {}\n") + + result = subprocess.run( + ["rsync", "--archive", "--one-file-system", + src + "/", dest + "/"], + capture_output=True, text=True, ) - self.assertIn("FAILED", result.stdout) + self.assertEqual(result.returncode, 0, f"rsync failed: {result.stderr}") + self.assertTrue(os.path.exists(os.path.join(dest, "configuration.nix"))) + self.assertTrue(os.path.exists(os.path.join(dest, "custom.nix"))) - def test_archive_warnings_recorded_in_manifest(self): - """Source text: ARCHIVE_WARNINGS must be written into BACKUP_MANIFEST.txt - so the user can see which archives had nonfatal live-file warnings.""" - source = BACKUP_SCRIPT.read_text() - self.assertIn( - "ARCHIVE_WARNINGS[@]", - source, - "backup script must iterate ARCHIVE_WARNINGS in manifest generation", + def test_rsync_second_run_only_transfers_changes(self): + """Behavioral: a second rsync run to the same dest only copies changed files.""" + with tempfile.TemporaryDirectory() as tmpdir: + src = os.path.join(tmpdir, "source") + dest = os.path.join(tmpdir, "backup") + os.makedirs(src) + os.makedirs(dest) + + with open(os.path.join(src, "file.txt"), "w") as f: + f.write("initial content\n") + + # First run + r1 = subprocess.run( + ["rsync", "--archive", "--one-file-system", src + "/", dest + "/"], + capture_output=True, text=True, + ) + self.assertEqual(r1.returncode, 0) + + # Modify one file and add another; advance mtime so rsync detects the change + with open(os.path.join(src, "file.txt"), "w") as f: + f.write("updated content\n") + import time as _time + future_mtime = _time.time() + 2 + os.utime(os.path.join(src, "file.txt"), (future_mtime, future_mtime)) + + with open(os.path.join(src, "new.txt"), "w") as f: + f.write("new file\n") + + # Second run + r2 = subprocess.run( + ["rsync", "--archive", "--one-file-system", src + "/", dest + "/"], + capture_output=True, text=True, + ) + self.assertEqual(r2.returncode, 0) + + # Both files exist in dest + with open(os.path.join(dest, "file.txt")) as fh: + self.assertEqual(fh.read(), "updated content\n") + self.assertTrue(os.path.exists(os.path.join(dest, "new.txt"))) + + # ── Script syntax check ────────────────────────────────────────────────── + + def test_backup_script_passes_bash_syntax_check(self): + """bash -n must report no syntax errors in the backup script.""" + result = subprocess.run( + ["bash", "-n", str(BACKUP_SCRIPT)], + capture_output=True, text=True, ) - self.assertIn( - "Nonfatal warnings:", - source, - "manifest must include a 'Nonfatal warnings:' section", + self.assertEqual( + result.returncode, 0, + f"bash -n failed:\n{result.stderr}", ) - def test_backup_script_logs_warnings_before_success_message(self): - """Source text: when ARCHIVE_WARNINGS is non-empty, the script must log - the warnings before the 'All Finished!' success message.""" + # ── Home exclusions ────────────────────────────────────────────────────── + + def test_backup_script_home_excludes_browser_caches(self): + """Home sync must exclude browser disk caches.""" source = BACKUP_SCRIPT.read_text() - # Both constructs must be present + self.assertIn("--exclude='.mozilla/firefox/*/cache2/'", source) + self.assertIn("--exclude='.config/google-chrome/*/Cache/'", source) + self.assertIn("--exclude='.config/chromium/*/Cache/'", source) + self.assertIn("--exclude='.config/BraveSoftware/Brave-Browser/*/Cache/'", source) + + def test_backup_script_home_excludes_other_volatile_caches(self): + """Home sync must exclude baloo, thumbnails, and X session error logs.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("--exclude='.local/share/baloo/'", source) + self.assertIn("--exclude='.thumbnails/'", source) + self.assertIn("--exclude='.xsession-errors'", source) + + # ── require_cmd ────────────────────────────────────────────────────────── + + def test_backup_script_requires_rsync_and_flock(self): + """Script must require rsync and flock via require_cmd.""" + source = BACKUP_SCRIPT.read_text() + self.assertIn("require_cmd rsync", source) + self.assertIn("require_cmd flock", source) + + def test_backup_script_does_not_require_tar_or_sha256sum(self): + """Script must not require tar or sha256sum (no longer used).""" + source = BACKUP_SCRIPT.read_text() + self.assertNotIn("require_cmd tar", source) + self.assertNotIn("require_cmd sha256sum", source) + + # ── Frontend database limitation notice ────────────────────────────────── + + def test_frontend_mentions_database_limitation(self): + """Frontend must explain that PostgreSQL/MariaDB databases are excluded.""" + support_source = SUPPORT_JS.read_text() self.assertIn( - "${#ARCHIVE_WARNINGS[@]}", - source, - "backup script must check ARCHIVE_WARNINGS count before success message", + "PostgreSQL", + support_source, + "UI must mention PostgreSQL exclusion", ) self.assertIn( - "All Finished!", - source, + "not included", + support_source, + "UI must explain that databases are not included", ) diff --git a/modules/core/sovran-hub.nix b/modules/core/sovran-hub.nix index a21e4ee..e083991 100644 --- a/modules/core/sovran-hub.nix +++ b/modules/core/sovran-hub.nix @@ -393,7 +393,8 @@ in pkgs.coreutils pkgs.findutils pkgs.gnugrep - pkgs.gnutar + pkgs.rsync + pkgs.acl pkgs.util-linux ] ++ lib.optional cfg.services.bitcoin config.services.bitcoind.package From 228de54d627c651788025d599391338a57ceac9b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 20 Jul 2026 22:47:53 +0000 Subject: [PATCH 103/140] refactor: rename CURRENT_DIR_NAME to BACKUP_SUBPATH for clarity --- app/sovran_systemsos_web/scripts/sovran-hub-backup.sh | 8 ++++---- app/tests/test_manual_backup_workflow.py | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index c995cc1..ec27892 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -39,9 +39,9 @@ FAILED_ALREADY=0 BACKUP_COMPLETE=0 RSYNC_WARNINGS=() -# Stable mirror path — not timestamped so later runs update the same -# destination and only transfer new or changed files. -CURRENT_DIR_NAME="Sovran_SystemsOS_Backup/current" +# Stable rsync mirror sub-path under the target drive. Not timestamped +# so later runs update the same destination and only transfer new or changed files. +BACKUP_SUBPATH="Sovran_SystemsOS_Backup/current" # ── Logging helpers ────────────────────────────────────────────── @@ -329,7 +329,7 @@ validate_target_mount "$TARGET" # ── Set up stable backup destination ──────────────────────────── # Subsequent runs update the same mirror, transferring only new or changed files. -BACKUP_DIR="${TARGET}/${CURRENT_DIR_NAME}" +BACKUP_DIR="${TARGET}/${BACKUP_SUBPATH}" mkdir -p "$BACKUP_DIR" # Write an INCOMPLETE marker immediately; replaced by BACKUP_COMPLETE only diff --git a/app/tests/test_manual_backup_workflow.py b/app/tests/test_manual_backup_workflow.py index 0687263..bd41b43 100644 --- a/app/tests/test_manual_backup_workflow.py +++ b/app/tests/test_manual_backup_workflow.py @@ -76,6 +76,8 @@ class ManualBackupWorkflowTests(unittest.TestCase): source = BACKUP_SCRIPT.read_text() self.assertIn("Sovran_SystemsOS_Backup/current", source, "backup must use a stable 'current' mirror path") + self.assertIn("BACKUP_SUBPATH", source, + "stable sub-path must be defined in BACKUP_SUBPATH variable") # Must not create new timestamped directories per run self.assertNotIn( "date '+%Y%m%d_%H%M%S'", @@ -566,8 +568,8 @@ echo "SHOULD_NOT_REACH_HERE" script = f"""#!/usr/bin/env bash set -euo pipefail TARGET="{target}" -CURRENT_DIR_NAME="Sovran_SystemsOS_Backup/current" -BACKUP_DIR="${{TARGET}}/${{CURRENT_DIR_NAME}}" +BACKUP_SUBPATH="Sovran_SystemsOS_Backup/current" +BACKUP_DIR="${{TARGET}}/${{BACKUP_SUBPATH}}" mkdir -p "$BACKUP_DIR" echo "$BACKUP_DIR" """ From 539d2bc48d3e83d76d557457926800a26528263c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 20 Jul 2026 23:56:15 +0000 Subject: [PATCH 104/140] Initial plan From 0c90c8a82778cbb871eb8fc68c7ec96777881e17 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Jul 2026 00:03:12 +0000 Subject: [PATCH 105/140] Fix rsync destination-directory failure: add sync_tree with mkdir -p, mount check, path-safety, stale-marker cleanup, and 19 behavioral tests --- .../scripts/sovran-hub-backup.sh | 75 +- app/tests/test_manual_backup_workflow.py | 656 +++++++++++++++++- 2 files changed, 706 insertions(+), 25 deletions(-) diff --git a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh index ec27892..5a20db2 100755 --- a/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh +++ b/app/sovran_systemsos_web/scripts/sovran-hub-backup.sh @@ -46,7 +46,8 @@ BACKUP_SUBPATH="Sovran_SystemsOS_Backup/current" # ── Logging helpers ────────────────────────────────────────────── log() { - local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*" + local msg + msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*" echo "$msg" | tee -a "$BACKUP_LOG" } @@ -65,7 +66,9 @@ cleanup() { local rc=$? # Release the concurrency lock file descriptor if it was opened - [[ -n "${LOCK_FD:-}" ]] && exec {LOCK_FD}>&- 2>/dev/null || true + if [[ -n "${LOCK_FD:-}" ]]; then + exec {LOCK_FD}>&- 2>/dev/null || true + fi if [[ "$BACKUP_COMPLETE" -eq 1 && "$rc" -eq 0 ]]; then return @@ -222,15 +225,49 @@ estimate_path_bytes() { echo "$size" } -# ── Run rsync for one source tree ──────────────────────────────── +# ── Sync one source tree to its backup destination ─────────────── +# Usage: sync_tree