From 12bacd66f78917410f937b5d9fdac8f0a5f9b570 Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Mon, 6 Jul 2026 18:23:50 -0400 Subject: [PATCH 01/76] chore: vendor git-filter-repo script + bundling spec and plan --- .../plans/2026-07-06-bundle-filter-repo.md | 79 + .../2026-07-06-bundle-filter-repo-design.md | 68 + .../resources/git-filter-repo/COPYING.mit | 19 + src-tauri/resources/git-filter-repo/README.md | 15 + .../resources/git-filter-repo/git-filter-repo | 4976 +++++++++++++++++ 5 files changed, 5157 insertions(+) create mode 100644 docs/superpowers/plans/2026-07-06-bundle-filter-repo.md create mode 100644 docs/superpowers/specs/2026-07-06-bundle-filter-repo-design.md create mode 100644 src-tauri/resources/git-filter-repo/COPYING.mit create mode 100644 src-tauri/resources/git-filter-repo/README.md create mode 100644 src-tauri/resources/git-filter-repo/git-filter-repo diff --git a/docs/superpowers/plans/2026-07-06-bundle-filter-repo.md b/docs/superpowers/plans/2026-07-06-bundle-filter-repo.md new file mode 100644 index 0000000..6d8ad14 --- /dev/null +++ b/docs/superpowers/plans/2026-07-06-bundle-filter-repo.md @@ -0,0 +1,79 @@ +# Bundle git-filter-repo + Actionable Prerequisites — Implementation Plan + +> Spec: `docs/superpowers/specs/2026-07-06-bundle-filter-repo-design.md`. Branch: `bundle-filter-repo`. +> The vendored script already exists at `src-tauri/resources/git-filter-repo/{git-filter-repo, COPYING.mit, README.md}`. + +**Gates (run the relevant ones after each task; all green before "done"):** +`cargo test -p git-core -p git-it` · `cargo clippy -p git-core -p git-it -- -D warnings` · `npm run check` · `npm test` · `npm run build` + +**Ordering is sequential and load-bearing** — this is a coupled change: Task 1 (git-core signatures) must compile before Task 2 (src-tauri uses them); Task 4 (`types.ts`) must match Task 1 (`types.rs`). Do not reorder. + +--- + +### Task 1 — git-core: parameterize filter-repo invocation + prerequisites (Rust) + +**Files:** `crates/git-core/src/types.rs`, `crates/git-core/src/rewrite.rs`, `crates/git-core/src/git_ops.rs` + +- `types.rs`: add to `PrerequisiteCheck`: `pub python3: bool`, `pub python3_version: Option`. Keep `filter_repo` / `filter_repo_version` (now = the *bundled* script). +- `rewrite.rs::rewrite_history`: add a parameter `filter_repo_argv: &[String]` (the invocation prefix, e.g. `["python3", "/…/git-filter-repo"]`). Replace `Command::new("git-filter-repo")` with `Command::new(&filter_repo_argv[0])` then `.args(&filter_repo_argv[1..])`, then the existing `--commit-callback …`, `--force --partial --replace-refs delete-no-add`, and optional `--refs` args. Update the spawn-error message to drop `brew install git-filter-repo` (say the bundled filter-repo failed to launch and reference Python). +- Extract the argv assembly into a pure, testable helper, e.g. `fn build_filter_repo_argv(prefix: &[String], callback: &str, refs: Option<&str>) -> Vec` and have `rewrite_history` use it, so it can be unit-tested without spawning. +- `git_ops.rs::check_prerequisites`: change signature to `check_prerequisites(filter_repo_argv: &[String]) -> PrerequisiteCheck`. Probe: `git --version` (existing), `python3 --version` → `python3`/`python3_version`, and ` --version` → `filter_repo`/`filter_repo_version`. Preserve the existing shell-out safety conventions. + +**Tests:** unit-test `build_filter_repo_argv` for a representative prefix + options (with and without `--refs`). Update any existing `check_prerequisites` callers/tests to pass a prefix. + +**Gate:** `cargo test -p git-core` + `cargo clippy -p git-core -- -D warnings`. + +--- + +### Task 2 — src-tauri: resource resolver, command wiring, install command (Rust) + +**Files:** `src-tauri/src/filter_repo.rs` (new), `src-tauri/src/commands.rs`, `src-tauri/src/lib.rs`, `src-tauri/tauri.conf.json` + +- `filter_repo.rs`: `pub fn filter_repo_argv(app: &tauri::AppHandle) -> Vec`. Resolve the bundled script: production via `app.path().resolve("resources/git-filter-repo/git-filter-repo", BaseDirectory::Resource)`; if that path doesn't exist (i.e. `tauri dev`), fall back to the source tree relative to `CARGO_MANIFEST_DIR` (`.../src-tauri/resources/git-filter-repo/git-filter-repo`). Return `vec!["python3".into(), ]`. +- `commands.rs`: `check_prerequisites` becomes an `AppHandle`-taking command that resolves the argv and calls `git_ops::check_prerequisites(&argv)`. `apply_rewrite` resolves the argv and passes it to `rewrite_history`. Add `#[tauri::command] fn install_command_line_tools() -> Result` that runs `xcode-select --install` and returns a friendly status (treat the "already installed" nonzero exit as an informative Ok/Err with a clear message). +- `lib.rs`: register `install_command_line_tools` in the invoke handler. +- `tauri.conf.json`: add the vendored dir under `bundle.resources` so `resources/git-filter-repo/**` ships in the `.app`. + +**Gate:** `cargo test -p git-it` + `cargo clippy -p git-it -- -D warnings`. + +--- + +### Task 3 — src-tauri integration test: real bundled-script run + +**Files:** `src-tauri/tests/filter_repo_bundled.rs` (new; or a gated `#[test]` module) + +- Resolve the dev resource path (source tree, `CARGO_MANIFEST_DIR`). Skip gracefully if `python3` is absent so the test never flakes on a bare box. +- Create a temp git repo with ≥2 commits (set `GIT_AUTHOR_*`/`GIT_COMMITTER_*` for determinism). Call `git_core::rewrite::rewrite_history(repo, &[DateMapping…], &RewriteOptions{…}, |_|{})` with prefix `["python3", ]`. Assert the targeted commit's committer/author date changed to the mapped value. + +**Gate:** `cargo test -p git-it` (runs on macOS + CI). + +--- + +### Task 4 — frontend: types, api, actionable banner (Svelte/TS) + +**Files:** `src/lib/types.ts`, `src/lib/api.ts`, `src/lib/components/PrereqBanner.svelte` + +- `types.ts`: add `python3: boolean` and `python3Version: string | null` to `PrerequisiteCheck` (match the Rust serde camelCase). +- `api.ts`: add `installCommandLineTools: () => invoke("install_command_line_tools")`. +- `PrereqBanner.svelte`: `ok = check.git && check.python3`. When `!git || !python3`, show one concise line + an **"Install Command Line Tools"** button that calls `api.installCommandLineTools()` and surfaces the returned status inline (and disables while running). Remove the `brew install git-filter-repo` block. If `check.python3 && !check.filterRepo` (packaging bug), show a short diagnostic line, no install button. + +**Gate:** `npm run check` + `npm test` + `npm run build`. + +--- + +### Task 5 — docs: README + CLAUDE.md + +**Files:** `README.md`, `CLAUDE.md` + +- README **Prerequisites**: replace the two `brew install` blocks with: Git It needs `git` and `python3`, both provided by the **Xcode Command Line Tools** (`xcode-select --install`); `git-filter-repo` is **bundled**. Keep the startup-banner mention (now offers a one-click install). Update the "No Python interpreter is bundled" sentence to: the interpreter is host-provided (CLT), and the `git-filter-repo` script is bundled. +- CLAUDE.md: update the note that currently says `git-filter-repo` must be on PATH — it's bundled; the app invokes it with host `python3`. + +**Gate:** none (docs). + +--- + +### Task 6 — full gates + adversarial review + manual preview + +- Run the entire gate suite green. +- Adversarial multi-lens review (packaging/path-resolution/notarization, argv+prereq correctness & shell-out safety, banner UX & Rust/TS type-sync). +- Manual: a real commit-time edit through the running app to confirm the bundled script drives a rewrite end-to-end. diff --git a/docs/superpowers/specs/2026-07-06-bundle-filter-repo-design.md b/docs/superpowers/specs/2026-07-06-bundle-filter-repo-design.md new file mode 100644 index 0000000..4253120 --- /dev/null +++ b/docs/superpowers/specs/2026-07-06-bundle-filter-repo-design.md @@ -0,0 +1,68 @@ +# Bundle git-filter-repo + Actionable Prerequisites — Design + +**Goal:** On a typical developer Mac, require **zero manual installs** to use Git It (including commit-time editing). On a bare Mac, require **one action**. + +## Background + +Today the README asks users to `brew install git` and `brew install git-filter-repo`. +- `git` is needed for everything; `git-filter-repo` is needed **only** for commit-time editing. +- The app shells out to `git-filter-repo` as a `PATH` binary at `crates/git-core/src/rewrite.rs:133` (`Command::new("git-filter-repo")`), and `crates/git-core/src/path_setup.rs` prepends Homebrew bins so a Finder-launched app can find it. +- `crates/git-core/src/git_ops.rs::check_prerequisites` probes `git --version` and `git-filter-repo --version` on `PATH`. +- `src/lib/components/PrereqBanner.svelte` shows static "brew install" text when `!git || !filterRepo`. + +Key facts established during design: +- `git-filter-repo` is a **single, self-contained Python script** (~206 KB), shebang `#!/usr/bin/env python3`, **MIT-licensed** (only its test harness is GPL; we do not vendor that). +- `python3 {#if check && !ok} +{:else if check && check.python3 && !check.filterRepo} + {/if} @@ -50,6 +72,29 @@ .banner p { margin: 6px 0 0 0; } + .actions { + display: flex; + align-items: center; + gap: 10px; + margin-top: 8px; + } + .actions button { + font: inherit; + color: #fff; + background: #b45309; + border: none; + border-radius: 6px; + padding: 5px 12px; + cursor: pointer; + } + .actions button:disabled { + opacity: 0.6; + cursor: default; + } + .status { + color: var(--text); + opacity: 0.85; + } code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; background: #00000010; diff --git a/src/lib/types.ts b/src/lib/types.ts index 693743d..f97a496 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -34,6 +34,8 @@ export type SafetyRef = { export type PrerequisiteCheck = { git: boolean; gitVersion: string | null; + python3: boolean; + python3Version: string | null; filterRepo: boolean; filterRepoVersion: string | null; }; From fb81426472ed8e4c4f48ed8ae2961ec858d999ae Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 10:06:23 -0400 Subject: [PATCH 05/76] fix(ci): use workspace-root target dir for macos release artifacts --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0c546fd..184cf7a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -167,7 +167,7 @@ jobs: - name: Normalize macOS artifact filenames shell: bash - working-directory: src-tauri/target/${{ matrix.target }}/release/bundle + working-directory: target/${{ matrix.target }}/release/bundle env: ARCH: ${{ matrix.arch }} run: | @@ -186,9 +186,9 @@ jobs: with: name: release-macos-${{ matrix.arch }} path: | - src-tauri/target/${{ matrix.target }}/release/bundle/dmg/*.dmg - src-tauri/target/${{ matrix.target }}/release/bundle/macos/*.app.tar.gz - src-tauri/target/${{ matrix.target }}/release/bundle/macos/*.app.tar.gz.sig + target/${{ matrix.target }}/release/bundle/dmg/*.dmg + target/${{ matrix.target }}/release/bundle/macos/*.app.tar.gz + target/${{ matrix.target }}/release/bundle/macos/*.app.tar.gz.sig if-no-files-found: error release: From 00a93d1a94cd592da2b3085290f5c2025539150d Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 10:45:26 -0400 Subject: [PATCH 06/76] fix(ci): guard ai changelog by size, bump ai-inference to v2, pin macos-26 --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3aa4c8..4dc6d3d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: run: npm audit --omit=dev --audit-level=high rust-check: - runs-on: macos-latest + runs-on: macos-26 steps: - name: Check out repository uses: actions/checkout@v6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 184cf7a..4456e99 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,7 +73,7 @@ jobs: build-macos: permissions: contents: read - runs-on: macos-latest + runs-on: macos-26 needs: decide if: ${{ needs.decide.outputs.skip != 'true' }} strategy: @@ -219,6 +219,7 @@ jobs: path: release-assets/macos-x86_64 - name: Group the changelog + id: group env: PREV_TAG: ${{ needs.decide.outputs.previous_tag }} VERSION: ${{ needs.decide.outputs.version }} @@ -227,13 +228,18 @@ jobs: [ -n "$PREV_TAG" ] && range="${PREV_TAG}..HEAD" git log "$range" --no-merges --pretty='%s' \ | node scripts/ci/gen-changelog.mjs > grouped-changelog.md + echo "chars=$(wc -c < grouped-changelog.md | tr -d ' ')" >> "$GITHUB_OUTPUT" echo "----- grouped-changelog.md -----" cat grouped-changelog.md - name: Rewrite the changelog (GitHub Models) id: changelog_ai + # gpt-5 via GitHub Models caps the request body near 4000 tokens; skip the + # AI rewrite for an oversized changelog (e.g. the first release, which spans + # all history) and fall back to the grouped changelog in the next step. + if: ${{ fromJSON(steps.group.outputs.chars) <= 10000 }} continue-on-error: true - uses: actions/ai-inference@v1 + uses: actions/ai-inference@v2 with: model: openai/gpt-5 system-prompt: | From 1c9ef7ebae011719fbac7925282562859827d1f7 Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 11:05:01 -0400 Subject: [PATCH 07/76] feat: add git-it.app marketing landing site in website/ --- website/.nojekyll | 0 website/404.html | 107 +++ website/CNAME | 1 + website/assets/css/styles.css | 391 ++++++++ .../assets/fonts/anton-latin-400-normal.woff2 | Bin 0 -> 18612 bytes website/assets/fonts/fonts.css | 42 + .../ibm-plex-mono-latin-400-normal.woff2 | Bin 0 -> 14708 bytes .../ibm-plex-mono-latin-500-normal.woff2 | Bin 0 -> 14888 bytes .../ibm-plex-sans-latin-400-normal.woff2 | Bin 0 -> 22588 bytes .../ibm-plex-sans-latin-600-normal.woff2 | Bin 0 -> 24252 bytes website/assets/img/apple-touch-icon.png | Bin 0 -> 5843 bytes website/assets/img/favicon.ico | Bin 0 -> 7394 bytes website/assets/img/favicon.svg | 8 + website/assets/img/og.png | Bin 0 -> 75462 bytes website/assets/js/app.js | 37 + website/guides.html | 197 ++++ website/index.html | 875 ++++++++++++++++++ website/robots.txt | 4 + website/site.webmanifest | 21 + website/sitemap.xml | 13 + 20 files changed, 1696 insertions(+) create mode 100644 website/.nojekyll create mode 100644 website/404.html create mode 100644 website/CNAME create mode 100644 website/assets/css/styles.css create mode 100644 website/assets/fonts/anton-latin-400-normal.woff2 create mode 100644 website/assets/fonts/fonts.css create mode 100644 website/assets/fonts/ibm-plex-mono-latin-400-normal.woff2 create mode 100644 website/assets/fonts/ibm-plex-mono-latin-500-normal.woff2 create mode 100644 website/assets/fonts/ibm-plex-sans-latin-400-normal.woff2 create mode 100644 website/assets/fonts/ibm-plex-sans-latin-600-normal.woff2 create mode 100644 website/assets/img/apple-touch-icon.png create mode 100644 website/assets/img/favicon.ico create mode 100644 website/assets/img/favicon.svg create mode 100644 website/assets/img/og.png create mode 100644 website/assets/js/app.js create mode 100644 website/guides.html create mode 100644 website/index.html create mode 100644 website/robots.txt create mode 100644 website/site.webmanifest create mode 100644 website/sitemap.xml diff --git a/website/.nojekyll b/website/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/website/404.html b/website/404.html new file mode 100644 index 0000000..9a69642 --- /dev/null +++ b/website/404.html @@ -0,0 +1,107 @@ + + +Git It — Not found + + + + + + + + + + + + + + +
+ +
+
+
+ // SIGNAL LOST +

404

+

This route isn't in the MAGI system.

+ +
+
+
+ +
+
+ + +
+ + + Git It + + · + This site collects nothing — no analytics, no cookies, no third-party requests. + · + Bundles git-filter-repo (MIT). + · + Made for macOS + · + © 2026 + · + git-it.app +
+
+
+
+ + diff --git a/website/CNAME b/website/CNAME new file mode 100644 index 0000000..ef1ff19 --- /dev/null +++ b/website/CNAME @@ -0,0 +1 @@ +git-it.app diff --git a/website/assets/css/styles.css b/website/assets/css/styles.css new file mode 100644 index 0000000..0083c04 --- /dev/null +++ b/website/assets/css/styles.css @@ -0,0 +1,391 @@ +/* Git It — design tokens, reset, page ground. + Ported verbatim from design/hero-mockup-v1.html (:root tokens, reset, + .page background, .wrap container). Only the font vars are swapped to + the self-hosted stacks (see assets/fonts/fonts.css). */ + +:root{ + --void:#0A0C0F; --void2:#0E1216; --panel:#12171C; + --line:#232A31; --line2:#2E3742; + --bone:#EAE6DA; --haze:#8A94A0; --haze-dim:#7C8794; + --orange:#F2542D; --orange-deep:#C23A18; + --phosphor:#46E88B; --alert:#FF4438; + --font-display:"Anton","Arial Narrow",Impact,sans-serif; + --font-body:"IBM Plex Sans",system-ui,-apple-system,sans-serif; + --font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace; + --edge:14px; +} +*{box-sizing:border-box;} +html{-webkit-text-size-adjust:100%;} +body{margin:0;} +.page{ + background: + radial-gradient(1100px 600px at 78% -8%, rgba(242,84,45,.10), transparent 60%), + radial-gradient(900px 700px at 8% 110%, rgba(70,232,139,.05), transparent 55%), + var(--void); + color:var(--bone); + font-family:var(--font-body); + -webkit-font-smoothing:antialiased; + min-height:100vh; + position:relative; + overflow-x:hidden; +} +/* ambient scanlines + grid */ +.page::before{ + content:"";position:fixed;inset:0;pointer-events:none;z-index:2; + background: + linear-gradient(rgba(255,255,255,.02) 1px, transparent 1px) 0 0/100% 3px, + linear-gradient(90deg, rgba(255,255,255,.015) 1px, transparent 1px) 0 0/64px 100%; + mix-blend-mode:screen;opacity:.5; +} +.page::after{ + content:"";position:fixed;inset:0;pointer-events:none;z-index:3; + background:radial-gradient(120% 90% at 50% 0%, transparent 60%, rgba(0,0,0,.55) 100%); +} +.wrap{max-width:1240px;margin:0 auto;padding:0 clamp(20px,4vw,48px);position:relative;z-index:5;} + +/* ---- nav (Task 2) ---- */ +nav{position:sticky;top:0;z-index:20; + backdrop-filter:blur(8px);background:linear-gradient(var(--void),rgba(10,12,15,.72)); + border-bottom:1px solid transparent;transition:border-color .2s;} +nav.is-scrolled{border-bottom-color:var(--line);} +.nav-in{display:flex;align-items:center;justify-content:space-between;gap:20px; + height:60px;} +.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-mono); + font-size:14px;letter-spacing:.16em;color:var(--bone);text-transform:uppercase; + text-decoration:none;white-space:nowrap;flex-shrink:0;} +.brand svg{display:block;} +.brand:focus-visible{outline:2px solid var(--orange);outline-offset:3px;} +.nav-links{display:flex;align-items:center;gap:26px;font-family:var(--font-mono); + font-size:12px;letter-spacing:.14em;text-transform:uppercase;} +.nav-links a{color:var(--haze);text-decoration:none;position:relative;padding:4px 0;} +.nav-links a::before{content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%); + color:var(--orange);opacity:0;transition:opacity .18s;} +.nav-links a:hover{color:var(--bone);} +.nav-links a:hover::before{content:"›";opacity:1;} +.nav-links a:focus-visible{outline:2px solid var(--orange);outline-offset:3px;color:var(--bone);} +.nav-dl{color:var(--bone)!important;border:1px solid var(--orange);padding:8px 14px!important; + background:rgba(242,84,45,.08);} +.nav-dl:hover{background:var(--orange);color:var(--void)!important;} +@media(max-width:720px){.hide-sm{display:none;}} + +/* ---- button components (Task 2) ---- */ +.btn{font-family:var(--font-mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase; + text-decoration:none;padding:15px 22px;display:inline-flex;align-items:center;gap:12px; + position:relative;border:1px solid transparent;transition:transform .12s,background .18s,color .18s;} +.btn:focus-visible{outline:2px solid var(--bone);outline-offset:3px;} +.btn-primary{background:var(--orange);color:var(--void);font-weight:600;} +.btn-primary:hover{background:#ff6a44;transform:translateY(-1px);} +.btn-ghost{color:var(--bone);border-color:var(--line2);background:var(--void2);} +.btn-ghost:hover{border-color:var(--bone);} +/* corner brackets */ +.btn::before,.btn::after{content:"";position:absolute;width:8px;height:8px;opacity:0;transition:opacity .18s,inset .18s;} +.btn-ghost::before{left:5px;top:5px;border-left:2px solid var(--orange);border-top:2px solid var(--orange);} +.btn-ghost::after{right:5px;bottom:5px;border-right:2px solid var(--orange);border-bottom:2px solid var(--orange);} +.btn-ghost:hover::before,.btn-ghost:hover::after{opacity:1;} + +/* ---- boot reveal (Task 2) ---- */ +.reveal{opacity:1;} +@media(prefers-reduced-motion:no-preference){ + .reveal{animation:rise .7s cubic-bezier(.2,.8,.2,1) both;} + .d1{animation-delay:.06s}.d2{animation-delay:.16s}.d3{animation-delay:.28s} + .d4{animation-delay:.42s}.d5{animation-delay:.56s}.d6{animation-delay:.7s} + .headline .line > span{transform:translateY(110%);animation:slideup .9s cubic-bezier(.16,1,.3,1) both;} + .headline .l1 > span{animation-delay:.18s}.headline .l2 > span{animation-delay:.30s} +} +@keyframes rise{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}} +@keyframes slideup{from{transform:translateY(110%);}to{transform:translateY(0);}} + +/* ---- scroll reveal (Task 2) — hidden only when motion is allowed ---- */ +[data-reveal]{opacity:1;transform:none;} +@media(prefers-reduced-motion:no-preference){ + html.js [data-reveal]{opacity:0;transform:translateY(16px);} + html.js [data-reveal].in-view{opacity:1;transform:none;transition:.6s cubic-bezier(.2,.8,.2,1);} +} + +/* ---- visually-hidden (a11y text alternatives) ---- */ +.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px; + overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;} + +/* ---- hero (Task 3) ---- */ +.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); + gap:clamp(28px,4vw,56px);align-items:center; + padding:clamp(48px,8vh,104px) 0 clamp(40px,6vh,72px);} +@media(max-width:900px){.hero{grid-template-columns:1fr;gap:36px;}} + +.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono); + font-size:12.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--bone); + border:1px solid var(--line2);padding:7px 12px;border-radius:2px;background:var(--void2);} + +h1.headline{font-family:var(--font-display);font-weight:400;color:var(--bone); + margin:22px 0 0;line-height:.9;letter-spacing:.005em;text-transform:uppercase; + font-size:clamp(3.2rem,12vw,8.4rem);text-wrap:balance;} +.headline .line{display:block;overflow:hidden;} +.headline .line > span{display:block;} +.headline em{font-style:normal;color:var(--orange);} + +.anno{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em;color:var(--haze); + margin:20px 0 0;text-transform:uppercase;border-left:2px solid var(--orange);padding-left:12px;} +.anno b{color:var(--bone);font-weight:600;} + +.subhead{max-width:52ch;margin:20px 0 0;color:#C7CDD4;font-size:clamp(1rem,1.15vw,1.12rem); + line-height:1.6;} +.subhead .strong{color:var(--bone);} + +.microline{margin:14px 0 0;font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em; + text-transform:uppercase;} +.microline a{color:var(--haze);text-decoration:none;border-bottom:1px solid var(--line2); + padding-bottom:2px;transition:color .18s,border-color .18s;} +.microline a:hover{color:var(--bone);border-color:var(--orange);} +.microline a:focus-visible{outline:2px solid var(--orange);outline-offset:3px;} + +.cta-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px;} + +.readout{display:flex;flex-wrap:wrap;gap:22px;margin-top:34px;font-family:var(--font-mono); + font-size:12.5px;letter-spacing:.08em;color:var(--haze);text-transform:uppercase;} +.readout .g{color:var(--phosphor);} +.readout span{display:inline-flex;gap:8px;align-items:baseline;} + +/* ---- console / HUD panel (Task 3) ---- */ +.console{position:relative;background:linear-gradient(var(--panel),var(--void2)); + border:1px solid var(--line2);padding:0;min-width:0;} +.console .brk{position:absolute;width:14px;height:14px;z-index:2;} +.brk.tl{left:-1px;top:-1px;border-left:2px solid var(--orange);border-top:2px solid var(--orange);} +.brk.tr{right:-1px;top:-1px;border-right:2px solid var(--orange);border-top:2px solid var(--orange);} +.brk.bl{left:-1px;bottom:-1px;border-left:2px solid var(--orange);border-bottom:2px solid var(--orange);} +.brk.br{right:-1px;bottom:-1px;border-right:2px solid var(--orange);border-bottom:2px solid var(--orange);} +.con-head{display:flex;align-items:center;justify-content:space-between; + padding:11px 14px;border-bottom:1px solid var(--line);font-family:var(--font-mono); + font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--haze);} +.con-head .live{display:inline-flex;align-items:center;gap:7px;color:var(--phosphor);} +.con-head .dot{width:7px;height:7px;border-radius:50%;background:var(--phosphor); + box-shadow:0 0 8px var(--phosphor);} +@media(prefers-reduced-motion:no-preference){.con-head .dot{animation:blink 2.4s steps(1) infinite;}} +@keyframes blink{0%,70%{opacity:1;}71%,100%{opacity:.25;}} +.con-body{padding:8px 6px 4px;position:relative;overflow:hidden;} +.con-hex{position:absolute;right:-38px;top:50%;transform:translateY(-50%);width:230px;height:230px; + opacity:.10;pointer-events:none;} +@media(prefers-reduced-motion:no-preference){.con-hex{animation:spin 60s linear infinite;transform-origin:50% 50%;}} +@keyframes spin{to{transform:translateY(-50%) rotate(360deg);}} +.con-foot{display:flex;justify-content:space-between;gap:10px;padding:11px 14px; + border-top:1px solid var(--line);font-family:var(--font-mono);font-size:11.5px; + letter-spacing:.08em;color:var(--haze-dim);text-transform:uppercase;} +.con-foot b{color:var(--bone);} +svg.graph{width:100%;height:auto;display:block;} +svg.graph text{font-family:var(--font-mono);} + +/* ---- hazard divider (Task 3 — shared; label set via data-label) ---- */ +.hazard{height:26px;margin-top:8px;position:relative; + background:repeating-linear-gradient(-45deg,var(--orange) 0 14px,var(--void) 14px 28px); + opacity:.9;} +.hazard::after{content:attr(data-label);position:absolute;left:50%;top:50%; + transform:translate(-50%,-50%);background:var(--void);color:var(--haze); + font-family:var(--font-mono);font-size:11px;letter-spacing:.24em;padding:5px 16px; + border:1px solid var(--line2);text-transform:uppercase;white-space:nowrap;} + +/* ---- what's-different strip (Task 4) ---- */ +.why{padding:clamp(40px,7vh,72px) 0 clamp(8px,3vh,24px);} +.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,24px); + margin-top:clamp(36px,5vh,52px);} +@media(max-width:760px){.why-grid{grid-template-columns:1fr;}} +.why-item{position:relative;background:linear-gradient(var(--panel),var(--void2)); + border:1px solid var(--line);padding:26px 24px;} +.why-item::before,.why-item::after{content:"";position:absolute;width:12px;height:12px;} +.why-item::before{left:-1px;top:-1px;border-left:2px solid var(--orange);border-top:2px solid var(--orange);} +.why-item::after{right:-1px;bottom:-1px;border-right:2px solid var(--orange);border-bottom:2px solid var(--orange);} +.why-item .tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.2em; + color:var(--haze-dim);text-transform:uppercase;} +.why-item h3{font-family:var(--font-body);font-weight:700;font-size:1.14rem;color:var(--bone); + margin:12px 0 0;line-height:1.25;letter-spacing:.005em;} +.why-item p{margin:12px 0 0;color:#C7CDD4;font-size:.98rem;line-height:1.6;} +.why-item p em{font-style:italic;color:var(--bone);} +@media(prefers-reduced-motion:no-preference){ + .why-grid [data-reveal]:nth-child(1){transition-delay:0s;} + .why-grid [data-reveal]:nth-child(2){transition-delay:.12s;} + .why-grid [data-reveal]:nth-child(3){transition-delay:.24s;} +} + +/* ---- spec band (Task 5 — ported from mockup) ---- */ +.spec{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line); + border:1px solid var(--line);margin:40px 0 64px;} +@media(max-width:760px){.spec{grid-template-columns:repeat(2,1fr);}} +.cell{background:var(--void2);padding:20px 18px;} +.cell .lbl{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;color:var(--haze-dim); + text-transform:uppercase;} +.cell .val{font-family:var(--font-mono);font-size:14.5px;letter-spacing:.02em;color:var(--bone); + margin-top:8px;text-transform:uppercase;} +.cell .val.o{color:var(--orange);} + +/* ---- feature panels (Task 6) — .op-panel component ---- */ +#features{padding:clamp(48px,7vh,88px) 0 clamp(24px,4vh,48px); + display:flex;flex-direction:column;gap:clamp(56px,9vh,104px);} +.op-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); + gap:clamp(28px,4vw,64px);align-items:center;} +.op-panel.reverse .op-copy{order:2;} +.op-panel.reverse .op-illo{order:1;} +/* the signature TIME panel: give the illustration extra width */ +.op-panel--wide{grid-template-columns:minmax(0,.9fr) minmax(0,1.25fr);} +@media(max-width:900px){ + .op-panel,.op-panel--wide{grid-template-columns:1fr;gap:28px;} + /* stack: copy first, illustration below (override .reverse order too) */ + .op-panel .op-copy,.op-panel.reverse .op-copy{order:1;} + .op-panel .op-illo,.op-panel.reverse .op-illo{order:2;} +} +.op-code{font-family:var(--font-mono);font-size:12px;letter-spacing:.24em; + text-transform:uppercase;color:var(--orange);} +.op-copy h2{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(2rem,4.4vw,3.1rem);margin:14px 0 0;text-wrap:balance;} +.op-copy p{max-width:46ch;margin:18px 0 0;color:#C7CDD4; + font-size:clamp(1rem,1.1vw,1.08rem);line-height:1.6;} +.op-copy p code{font-family:var(--font-mono);font-size:.9em;color:var(--bone); + background:var(--void2);border:1px solid var(--line2);border-radius:2px;padding:1px 5px;} +.op-list{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-direction:column;gap:10px; + font-family:var(--font-mono);font-size:12.5px;letter-spacing:.04em;color:var(--haze); + text-transform:uppercase;} +.op-list li{position:relative;padding-left:20px;line-height:1.4;} +.op-list li::before{content:"›";position:absolute;left:0;top:0;color:var(--orange);} +.op-illo .console{max-width:100%;} +.op-illo svg.graph{max-height:420px;} + +/* ---- multi-repo line (Task 8) — compact centered mono note under the grid ---- */ +.multi-repo{margin:clamp(28px,5vh,56px) 0 0;text-align:center; + font-family:var(--font-mono);font-size:12.5px;letter-spacing:.08em; + color:var(--haze);text-transform:uppercase;} + +/* ---- download section (Task 9) — the primary CTA ---- */ +.dl{padding:clamp(48px,8vh,96px) 0 clamp(40px,7vh,80px);text-align:center; + display:flex;flex-direction:column;align-items:center;} +.dl-head{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(2.4rem,6vw,4rem);margin:14px 0 0;} +.dl-sub{max-width:52ch;margin:20px 0 0;color:#C7CDD4; + font-size:clamp(1rem,1.1vw,1.08rem);line-height:1.6;} +.dl-sub code{font-family:var(--font-mono);font-size:.9em;color:var(--bone); + background:var(--void2);border:1px solid var(--line2);border-radius:2px;padding:1px 5px;} +.dl-btns{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:clamp(28px,5vh,44px);} +.dl-btn{padding:19px 30px;font-size:14px;} +.dl-note{margin:16px 0 0;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em; + color:var(--haze);} +.dl-trust{margin:clamp(24px,4vh,36px) 0 0;font-family:var(--font-mono);font-size:13px; + letter-spacing:.06em;color:var(--phosphor);} +.dl-req{margin-top:14px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em; + color:var(--haze);} + +/* ---- in-page guides section (Task 10) — two briefing cards ---- */ +#guides{padding:clamp(48px,7vh,88px) 0 clamp(24px,4vh,48px);} +.guides-head{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(2rem,4.4vw,3.1rem);margin:14px 0 0;} +.guide-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,2vw,24px); + margin-top:clamp(32px,5vh,48px);} +@media(max-width:760px){.guide-cards{grid-template-columns:1fr;}} +.guide-card{display:block;text-decoration:none;transition:transform .12s,border-color .18s;} +.guide-card:hover{transform:translateY(-2px);border-color:var(--orange);} +.guide-card:focus-visible{outline:2px solid var(--orange);outline-offset:3px;} +.guide-card-body{padding:24px 24px 26px;} +.guide-card-body h3{font-family:var(--font-body);font-weight:700;font-size:1.14rem; + color:var(--bone);margin:0;line-height:1.25;letter-spacing:.005em;} +.guide-card-body p{margin:12px 0 0;color:#C7CDD4;font-size:.98rem;line-height:1.6;} +.guide-card-go{display:inline-block;margin-top:18px;font-family:var(--font-mono); + font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--orange);} +.guide-card:hover .guide-card-go{color:var(--bone);} + +/* ---- guides.html page (Task 10) — briefings with mono step numbers ---- */ +.guides-page{padding:clamp(40px,7vh,80px) 0 clamp(48px,8vh,88px);} +.guides-title{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(2.6rem,7vw,4.4rem);margin:14px 0 0;} +.guides-lede{max-width:56ch;margin:18px 0 0;color:#C7CDD4; + font-size:clamp(1rem,1.15vw,1.12rem);line-height:1.6;} +.guide{margin-top:clamp(48px,8vh,80px);scroll-margin-top:80px;} +.guide h2{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(1.9rem,4.4vw,3rem);margin:12px 0 0;} +.guide-sub{max-width:52ch;margin:16px 0 0;color:#C7CDD4; + font-size:clamp(1rem,1.1vw,1.08rem);line-height:1.6;} +.steps{list-style:none;margin:clamp(24px,4vh,36px) 0 0;padding:0; + display:flex;flex-direction:column;gap:clamp(16px,2.5vh,24px);} +.step{display:grid;grid-template-columns:auto minmax(0,1fr);gap:20px;align-items:start; + position:relative;background:linear-gradient(var(--panel),var(--void2)); + border:1px solid var(--line);padding:22px 24px;} +.step-n{font-family:var(--font-mono);font-weight:500;font-size:1.4rem;letter-spacing:.06em; + color:var(--orange);line-height:1;} +.step-body h3{font-family:var(--font-body);font-weight:700;font-size:1.05rem;color:var(--bone); + margin:0;line-height:1.3;letter-spacing:.005em;} +.step-body p{margin:8px 0 0;color:#C7CDD4;font-size:.98rem;line-height:1.6;} +.step-body code{font-family:var(--font-mono);font-size:.9em;color:var(--bone); + background:var(--void2);border:1px solid var(--line2);border-radius:2px;padding:1px 5px;} +.step-body strong{color:var(--bone);font-weight:600;} + +/* ---- community section (Task 12) — "Built in the open." ---- */ +#community{padding:clamp(48px,7vh,88px) 0 clamp(24px,4vh,48px);} +.community-head{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(2rem,4.4vw,3.1rem);margin:14px 0 0;} +.community-lede{max-width:56ch;margin:18px 0 0;color:#C7CDD4; + font-size:clamp(1rem,1.1vw,1.08rem);line-height:1.6;} +.community-links{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(24px,4vh,36px);} +.community-note{margin:clamp(24px,4vh,36px) 0 0;font-family:var(--font-mono); + font-size:12.5px;letter-spacing:.04em;color:var(--haze);line-height:1.7;} +.community-note a{color:var(--bone);text-decoration:none;border-bottom:1px solid var(--line2); + padding-bottom:1px;transition:color .18s,border-color .18s;} +.community-note a:hover{color:var(--bone);border-color:var(--orange);} +.community-note a:focus-visible{outline:2px solid var(--orange);outline-offset:3px;} + +/* ---- footer (Task 12) — shared across all pages ---- */ +.foot{border-top:1px solid var(--line);margin-top:clamp(40px,7vh,72px); + padding:clamp(36px,6vh,56px) 0 clamp(28px,4vh,40px);} +.foot-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,48px);} +@media(max-width:640px){.foot-cols{grid-template-columns:1fr;gap:28px;}} +.foot-col h2{font-family:var(--font-mono);font-size:11px;font-weight:400;letter-spacing:.24em; + text-transform:uppercase;color:var(--haze-dim);margin:0 0 16px;} +.foot-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;} +.foot-col a{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em; + color:var(--haze);text-decoration:none;transition:color .18s;} +.foot-col a:hover{color:var(--bone);} +.foot-col a:focus-visible{outline:2px solid var(--orange);outline-offset:3px;color:var(--bone);} +.foot-bar{margin-top:clamp(32px,5vh,48px);padding-top:clamp(22px,3vh,28px); + border-top:1px solid var(--line); + display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px; + font-family:var(--font-mono);font-size:11.5px;letter-spacing:.08em; + color:var(--haze);text-transform:uppercase;} +.foot-brand{display:inline-flex;align-items:center;gap:9px;color:var(--bone);} +.foot-brand svg{display:block;} +.foot-bar .sep{color:var(--line2);} +.foot-priv{text-transform:none;letter-spacing:.04em;color:var(--haze);} + +/* ---- FAQ section (Task 11) — accessible native details/summary ---- */ +#faq{padding:clamp(48px,7vh,88px) 0 clamp(24px,4vh,48px);} +.faq-head{font-family:var(--font-display);font-weight:400;text-transform:uppercase; + color:var(--bone);line-height:.96;letter-spacing:.01em; + font-size:clamp(2rem,4.4vw,3.1rem);margin:14px 0 0;} +.faq-list{margin-top:clamp(28px,5vh,44px);border:1px solid var(--line); + background:linear-gradient(var(--panel),var(--void2));} +.faq-item{border-bottom:1px solid var(--line);} +.faq-item:last-child{border-bottom:0;} +.faq-item summary{list-style:none;cursor:pointer;padding:18px 22px; + display:flex;align-items:center;gap:12px; + font-family:var(--font-mono);font-size:13px;letter-spacing:.06em; + text-transform:uppercase;color:var(--bone); + transition:color .18s,background .18s;} +.faq-item summary::-webkit-details-marker{display:none;} +.faq-item summary::before{content:"›";color:var(--orange);font-size:1.1em;line-height:1; + transition:transform .18s;} +.faq-item[open] summary::before{transform:rotate(90deg);} +.faq-item summary:hover{color:var(--bone);background:rgba(242,84,45,.05);} +.faq-item summary:focus-visible{outline:2px solid var(--orange);outline-offset:-2px;} +.faq-a{padding:0 22px 20px 46px;} +.faq-a p{margin:0;max-width:70ch;color:#C7CDD4;font-size:.98rem;line-height:1.65;} + +/* ---- 404 / not-found page (Task 13) — "signal lost" ---- */ +.notfound{min-height:52vh;display:flex;flex-direction:column;align-items:center; + justify-content:center;text-align:center; + padding:clamp(56px,12vh,120px) 0 clamp(48px,9vh,96px);} +.notfound-chip{display:inline-flex;align-items:center;font-family:var(--font-mono); + font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--haze); + border:1px solid var(--line2);padding:7px 14px;border-radius:2px;background:var(--void2);} +.notfound-code{font-family:var(--font-display);font-weight:400;color:var(--bone); + line-height:.9;letter-spacing:.02em;font-size:clamp(5rem,22vw,12rem);margin:22px 0 0;} +.notfound-line{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em; + color:var(--haze);margin:16px 0 0;} +.notfound-back{margin-top:clamp(28px,5vh,44px);} diff --git a/website/assets/fonts/anton-latin-400-normal.woff2 b/website/assets/fonts/anton-latin-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..69d48b9af8be985ae9ac4808be7c70a2c833405a GIT binary patch literal 18612 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 L#|5GZWZo43FQg+3 literal 0 HcmV?d00001 diff --git a/website/assets/fonts/fonts.css b/website/assets/fonts/fonts.css new file mode 100644 index 0000000..406ab22 --- /dev/null +++ b/website/assets/fonts/fonts.css @@ -0,0 +1,42 @@ +/* Self-hosted fonts — zero third-party requests at runtime. + Anton (OFL), IBM Plex Sans + IBM Plex Mono (OFL). */ + +@font-face { + font-family: "Anton"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("../fonts/anton-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Sans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("../fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Sans"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url("../fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("../fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); +} diff --git a/website/assets/fonts/ibm-plex-mono-latin-400-normal.woff2 b/website/assets/fonts/ibm-plex-mono-latin-400-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0804aaff92260b5359330f63e05b9ac25ccabeee GIT binary patch literal 14708 zcmV-)Ig7@3Pew8T0RR9106BC35dZ)H0HGiN067o<0RR9100000000000000000000 z0000QOdEz$9EMf~U;uu?K%G5`TK0we>7U<4oqgE|L^X$*rj z8;_19%I%W^bO(SBuPiMn*f#0ijzrPkb7(X&f{g=!B742;|Gy8w1P?Xm&z;E?bn2ER0SB@N_|ohnR#tmztr{aO7{OhZ>6~^sZ*r{s<4EH4Dw+^f;SyWMD_#BD1JaCUG$UB8U?kpU?cMV6-Uq|O<_fGpiN*+6o|bB1jrJ2rAzlx?#_2c zgagkjBm=2TmlU1Tnn7(K5WM|?iUDakwSHWmB<1+|}P?0FC<>z&ptG-EseJQc5 zFBw?2b#}sz4`c{~Q(|%m&viCct)AK3lD)!xYEuGG z&U7YI6WD%wR{d6~RQ^6aleH;nb8x9zKC&cxVxk+-0+iUo#S7RHwwMeY;_1g)UR)B% zPD;dT!vEYoEZTIUck@nZ)IvxM{X))62l}sFHFvkN8H85e-vo`Q@nyesFCci_p^Z#w zRAl{{|B2Jur{F?pJT){`Wcrn5lnf!f?d9`Ux5YtA1Y{))X@4Mqy8%dq zAnU9M8_1AT$fQE%6tY|)I}~#AzoG!t26*_935S4oEXnXn=ltc2FFl9$Aa9W)`^aDb zigz(=DbWhZa{htLOR-1Mdg5bQa_HEPNOj0m&?O1Py20#1OS5+!pW$A(yCt!ab8 z4Cb(a<=0vf1twYHF{=m^(?UVM#{*CkK(rtSh|cj^u;Ena3&jnK#;OdP7n{d;cd?NS z?AnFxd0B3=p9&2U2bg^ZDO{}Z3|_?n zM;NSeLajE+aWgD|@B_V&6c-^ukTj!VDHAsIg60q)A($Uf*c;Q-Nc*++E2fL0lk*WE zEbKVKz)$F{fDA#9$d)a84@i8O!*$>Oy`rmro{BXHox|hk-b4J^0umfr3^6!wAR>J= zzLm_IJu#@kd&fv2Oqxqtq(??%lDZ^BI4r~vN6xpCBQjQTZ=5g-gV=Hd9VqZk1lkNO zM>u^_Fk%Qlz+`ZB5Y-WbCM8mYd=Dg_L7aJ-LKG*f{Yab`q6Q+^GNnt695LVIr4I!1 zmJ!DwnxZL0RmoU-Pu9LB4m?dE>h6#*XH1_qb;{(S#0%$-#gQdLntnJS)ghr&{t2!Vo~#c?vkiUkKO zC}M6RL5_f^BLerEK8zLkKzcp}fqCp-MXcu>QELL0mSbT8SoR~Z9T)(BIqQOa%1O{; zrc?g^JtzelY>Yv#0a6M72FT$+0y5xXI0QV5k)8!QG4UaQdzf*+6faGkCjU>_hBr;5 zbLn1skWC?!IAoMZjcKZ;Yo^V@5@9pO;tn$moWT-$l3w$($p12`KfJhZmmo zk%}c^@Qm=K22I)&8@g+*UoqlH1kenM`=HncD5^pCjBZhP*KNT6|Hs7qf8*+Kz}3@L z;#JL6^i{%@J6GmiiC(F?TzlCC0n7l_13Q32YCwzvKn$_YA7W5&jsJ6ths6m}p-UE~ zK#7u+tLBfz2gOf-Mh%)IaF;Ayib~$Nrbv}7O;xhRYS*bvw;Z|HniPrF%0q#_W~g<= zRUBW))9nA4&x*x(~_QnM;&v@adl3*;H-1b zyXcHn`t|5FsLy~Q!zPRxGj7(DX){L5TV}zc6_(UnZoM_uT4#gRO!ZOUxvLaeq-gTG zMV4A@iDe!$NyTWZ&2Y>i9iFd`IhI<9y9=qiV~*z7tvMEHj)R(0iJLxgce=?m7_>FC zEv{aSc)8YyVgXQj=3{NhhV_FRVo;uU?5xyd&!k7P_9V4bAJ8Rd@DXK^x!n04+r&VfCmCJcY{VUf8^_5(%)e4Nwg=9oIyYunl zq84-W04ugC;Fmdmn$1*u{&~*dvs}O6vUA^aI61V2uLf%x=xNplWszC$jz(Nq?9X3- z@Kg`p;7zrs)_9e{4Q+$wEvt4^5~v=n!2-bvzNX?G4-k(-8bxMwG3<&b&xV79l}IXWnsD^wo8Pq2W(e zpWDvx+tFE9NUg+-d5N)=)oVwysbamL#0t-HA3=TWWd}hEbf`ZWZT2D_tGA)N@^K zCj0|SfA@2)wO#0(FV5zSMHkw+n`$8o$I(td3PPXWD{Yhtgc7+ddRJ?i^^&%!c8u1s zUh#OIQEFyU7*V*A9!e&_=n8kfWS&i=<~BCgcRX;Op%<)|B-|79EUY5fy}P5pVM6mT z-CJVZ6@a>R18A*;H(`m8hH6-5Z|rV{2ly{h0-1wnq3LRGd0-@$|QmF9w6QWOca#XK$*$R2o$b( z#x-+q%Ww|pG6#m%D^F&s6#gx_*4zlT0B<^x*szT{hBz0FmBh<3aziW}VDR11z9vOJslu3liO3HDTed(Dvz>z8Lu1usSSUT9^ae*W+@j~GV_DVSn4gj#$|1L z9Rq`+I!+nm7Lq3uNfLuajHWb{(o&63Ajd{he^#5SG)3o(R()AB*AaX{ib+etjbTg2 zE!o?$n9BGh<}x*dI}R@F?B{nhtvLWH1B?hrl_|>ehZAQWFm`uM0IGa*Z^>2odiU>% zI1#eZk;Ik^S-K@rWkc7sD|4SbkZjvvQD}@pEXr1!aQiS5yt$43C2pQDnf2+mjo6fS zHx9;F15^$eAyIh4$P1(-u%-a=6wy9$EO8xLiWQ!X3YLTGj^mE6)GE z@>}`C!-)nG2DrO}OHBfIS8vX-lQ!cgGQIplTs4X(`|x6i&4opB(dt*mp%@Wj@PMYO z<1055mTO-v#KPW@_W8+lyZCTOWr;nKOr&fe4%&r+WzkZ6xz(?EYGAl+9S710tCd)_ zIkU|((;Zc`U|=}=w$^1t$>4AU5MF*1IDSsz&Zf`pirG%U+;m{=U;Dw-{9py@*Z+9v zQt3zRTyRvFmauHN>6k!stI?WVoBBZo?pHzbr$YWzx__^IUiM4*Y3_Lkkw>i| zn1QjHS9d9Yw7J?l%p$sZN36yPe+=eN!l$p<;_Gnu;Sv$w%o)pRq6o>CTzgAh6g!LP z`Obnf4}h(1cm9QiVDUz`q$dF`hvqORVM}p4b#JJw9V(i`puoVm+}gwzmTi6Zlo^v# zk))x^6xBh!yuQYktbpbLB_db8lfheI2K&+ywOm)Oc!T6*q1=f^U0?GP8PV^pO`7x-Ay>nD=PLeZO2tb?yBXI!`w|BVMXmAC zKBonLI_`>DY^f`BgcAXhGic|gU$JNj3qtLJVOazlBq};E=QtN^i`=$87}Blu4`(nz z2t(AJZ8|`Cbb)~u)T=>4ZR%m6UenI>mBS{qFUSk-`tKXc7r_I#-*A~VOtQ3)-@dZm z3>`2TgOhV~y826JjEUUdO5Ya!G7Q;48Z@EQ61noKbbV148b?23cimZs{(eMC?*E(u zWIZU@``OyjOYX4cPtH;nj#_1|^Y?tT{tst|%bt|%o!&Ql02l9>+M63TwC`M5z#@3J z>aB>gCg>NSs{u(BbpATLD9|V(B&w!svBp}?g~t(_5Ai_{S;@%wzdVY@mcv_Qh2|;U z?So7MEsi&ad2`6&0EXj87=c7f0K8TToWZ4-P>WYwuy=)?AVY}3no~xPN+__ZCZ@iI z0okA2$hxRs9ImpycyyP+E(?1vB_~k41U3P!q&%xoQVAxMC0vyKQpo;3tBlZ!6GAU& z3e5LvG^{&7#Nw9p@SR`sXl0>I&!lfYdvACSjv}yjTJ67@S!=FF$y%YRxv07n>#Q=? z`XBrmz8!?B-!$o@YBuMJe%F=)2_h6l__F{tuwkoef64FFE9+m9F9}&rLm%boD?GC`o}6 z#C(3IN%972Frwu)(%kc`!zplhAmflqWas8wi+$QYrYRYNqbw&h=SETrw6f?eKw!ta zyNp~Qov*Z?0sC6Xnd|5q4w+s56tb*W5(1R*0>8B7@(mhDf2Qy1)8` zem4~b_if6Iq4|T=4c9qP2Tut9xhG>s>wJ!J%-y>72RB2*-~6yph``7qScc}wMr-n* zvDko};-o~e$P zG3HO|5Cv&0+O1Z0CDa(s9tLTuk-FyRK!2%&`+&(AkQt*BqsCMYf~d7Uh=beq?i_qv0@J zL7%eA$m`#=b^EC@g{)(GZ|j#OGsTig7<-lYr9_b-lH_ZO`s-*AqcC%Bk3yYZ9aA&6 zW0rmC{)xjBnN(YUZ+7Pvh~IPtMmXn#bhAuf><#}QelJb)7E4IG3RsKuSYygpDXh-cur8C<(p>K(Wu$56MDXk!&Q|sCVBj=vrJ)jH4roCbOZ*1MKe~1xFi&Vx3|iczNSxX3{79 z@m8+fIoCRGpjoG8e%zZBnu(&Ddf+dGZV3&ob6WD*@}mj36U4Bwopb`LW6&@}Of@0y60O$Q3OHj+Pw-;aiV_qb4!js)T<$#$rzZuxl!g zh8ghGT1)iX$%JlZpF4p>SafdTd!`lPV~Yx>uK-^@e&69f%rSHu7n>mFYK z547@-?soA|g)zWTEA329*7sZ9X1I{UKdDJf+P9sy47RbBW#lgTuu4HxX&Lm~i1?`^ zk33A&(dlh6D8xFUbuTyv1)>%@j{gAu(9efi{ef2_-9o5Z7u?nG=P1l=xn2A%yk*{T zM`0iqW|DuL5coIPpvFQ(V zLS;h4b+I}y_EV@P;?XEg|H1az>=q{4LIH7f^p71lzzNOa8uHOOUziAk-6@j5Mm%|;Cb}&&zTXo1!D(^63|Ru9@li|l4@Qeo<@l%!F~7skBezaF zvG-`t*leCDpOv%6L>R13xr&FJ0}aihRDbby7HD(p%&UQ?CC<(x$}|-;4hhqQ)hu%$ zV83ubaPWb*Jsv|8VoebnitVcNq*{y9K=|idurjsQuCdn7=cmj<>&9Kt8i*IUP zQvP0D7405}X4)*GbL9`?SJjS1;~!Qy#+!Quu~obEDl%_$VR$-d2bOm#~JfE;tlm-Htez>C@U0RCKF6M=DXE~GI={7~i8D@(IA#U|Sd8dp{3zcdDh#A7zh@|0`wrF$z%_r|AO!z{Om$9kZx@zB;T zP1v)fbPc>>O<+mc^XM&K*fr>13imDb4wl`9x~69QI#L-u25pA>H%E_E{5p~mqQA8* zq4ZjA+5Sh_ZmlH#5uaXo1j$t-)9d={bhwOWCJ(^?8$5TFhEOoYW|h zNkMMlmovd4eI|?T$k|BHF^L8f`Z)Y-X#G+en`nIz#ELn_%*f)`zudT5k1en|0ZqKx z4miB#NblmHmHl<^kM)N7#bp<5sQ z(3-5+`3h|`V+tw*HHBeEk{e;9i5%>n8DsZu=8~f3&=)X%C=|YM9%?X)?8fX zb5X+i=XOah?sKiKMXNVjclNm%Hd!R7v)>*20*xS;Lw>=MrY`f*-=64$H~UQe&G*v` zFekZolnZNM6%`oWAdXT~yvYZP=)n}JULseTbl0rt74jx)J_eLI9Lk?>QJUi>wNKJx zmZ1Afv4t=wZL^haaUZn%<+TN!TE8~H28Y~(?#;IHbGWl-FNv{(^3Cq84lu#3?k%=5 zbogZPygc>w*z0OW=Ns?oKv6GdZYF8aBkz)yz`jhQ8i=4%?F0=(YTB2uCDQ+PqBW$= z%!BGr9gM!0h(`qGFcnT6W)dDDUiL8@pQ=rHZ)Dec=YQ+y-AG8u;_TD&%uP@afi*^FJSf&G={dFA!Dv$;8b^TQ?=|CRtZ&)#-sH# z8uR$5rzRs)F+hAO-cS%bl~;_*!WHwTV#mJ-G4wGX=4TYm&bG0s2CNd57ng@3OMa@^ z{+*xmgya8iPOeV70H$4_&gIUI@xYxMoEzXVp4q*7s|!BLgMV04BwoN4J9%ac#_1sa z_~FXtMVTLAv}T=ZH&uGzJ?4qrM4pO%7{^%8DzkgTJ_riiY)}~TL1C+qeT$`F-D2Ba z`&iS-cYoSUCU5@fF4>FJa9Y^x7S0b9@O_^|Wv#o*+HYFix9glPOLtCl$9l&z8?XCF zY;pgd^wqcjPro8(!F>I4%56*Un1yd*C==DDZ*dboIA%P$+80U`xAF|tI=QkV6Wfw% zznE5Ph$^VEgGbUK#89l4E@n5HAPYiu^#XX|s(sc1O_c&Z0CN#*&iB^yc9=8Qe5wG} zyY1U!#_A(dMBL|3_x7p#B+h>;1FE*X`TqG3hXKXA_PzC1U5Iy?zHF$<1;sRn%w~PR zTWBYjH3l>lVhWo8JHhNTj>(1Kmxx?er*Jjcamq4K-q28P`BVG8uNDd+0=-zP)h`aM z*mcd!nVI=aO{yN6F{5UvEU7_Vr-i$zt5@vUhZrpO=>T}$Zj(ad2`vdpJc_pC z-w6i%!fu`t%*Ex2t`~-H%DyqYAUKpV6P~7YFErqfgMU~CZ4E2PKv6Oc9Wgk!WdTeM z-f`ZK6T9lwQ-2(_7RvN?or95~JMfv|I4KkVtoz~}#2i;NC(#3M(eoyi#XJxZl^V#a za715oWkqbQx)y|2OFcghgRHDqH|Pe^c04KA+)xu&tM2XQEz~Ffc)L4cL!V~sX=TfB1VzW9!&VWV)?4VNjT+_CF;FyAA-$uaX zS|ZI^+}R zB%1rfcTt&oseUh2mFlfiRuCy!*a#sT|GX!M@%_Hwk}Elx%hFQbd;dr>P?}slH2s|a zInnz0X}|JkxudWgHAAT zvvOH<%Yh<#q0!&y4+gqhr0+G+%mE7v`Jpru%lJ$ks~$#!y!7{}#*8YpDkDlY zzE3aIa&Ry&z+l>}ogL!0`DSjAlkti9v1@(pQUPLL?X=w8Yl{tgHUx_IKB1 zVn9@hR_Z~0$geTw17*_MH1NRll#@d@SL%Px?2=qqyMA1ui(^j1&fhi~HvYBK@D?{v zJAH7*Qhoo~-1+wfB2kaJGN-xDZ4%I!Qg>|ISz(3NnqrsM#hf??T;0Tp>s0-8NIMia zorNr&&M7{ksM(Y^+kM>b49#9mnYDATh#2aAvz1~Zo#)us2QPh6{M1_t=JXxdw~w83 zQp-~04am*(`8t|M2yuONp>b&C?nq5zSs4#KvU|ge-J)TxkUK2e9gUp-(xqD3mG=b= zyeNNRLh$)j372rTBk)-7#(4+K{Fa0U@&5+2pr(pndd!?An_GWA1s#h@A&?5Xyzb)o zM>w@k$t@IWw^Uj$2J#E2_FQ;A6Nl}(u`T{IUuNd9$#-AFve9&&U9OkhW<0&wN1{&0 z#!4J)!8BI2K^^jXpf|_}kGCwyqdaA)SWhYa*~t~@A15Xxew_YGJ#S)T#n-{Yz9tEX z_40o$J-lN^NvH^sxf_N0ah+k?DUoauomp(R%a8J32gudJ^?yG(&L&_JbK`Qw1tdO+ z@J)JL)@@YLqLumKLh*m}g26NJmnTSUP}FVQJ**hI?s;6qEz+uH?1s(U)x@ag_uQL2 zn~cR5pkXK#CihUcDQV)0U~7Ck;)6d4oSS?Bpz{`1D*=;|JY6_e9(Y9yYzVrBmy_5d zTmh&%fK{WBXf^iR9TsR=dT2QeJA8L3!^J>_=)6Z_ZeUw!_S1VrUe;7^E3!b+e2*Grd*%1#BmmG&sg z{iZ)LIepWQao4Yq-sH~RaxxEG%3f-~ugglwT8Fn|H*oRTe6s}FWhRowzv*EsCLxvo zGi}+W_L<)=p?a1kZ|l$b@cq0s&nq(n{Ua&|^&{H;7&tQjh*zN}T1bCURk0IwYRRSD z*U2&}`Khj*+glfU|7oGV%gtHcJa9`^*BRMckQvFy^RdS?6x>Poiyh(o%(!UXJv=$w zvHsTnBKIxAvtxXB=fA=DftQs6F`}xRVlgU`$9V3bW zMl^8(RWYZZvTs8}Ty;8SSVhl!)6Y5<3oMZO@Bvz0%<*Efo?-vNz`rR;1RmSL?_Y`F z7eWxy4*!vZaHF6d`R%Dlo#*S(j&3j z47&u79j*nbrG$cZ#09CPgn|JC45cfzlu|*!T)I+A3FWMNxB8;n1Zc|mti?l9BYvd6 z9;W%R{zjPQC;IF98~U4JnxE=#g=zgWey+cvzoowurs+k&8Tr$Flm9ZCImE5Zf8qZ9 zdJF>z{yTleR4niHtKhl*>a7^wN-X+)guLjR=uF9Qxot5IOSk57>`5<#(;KfSkupur z;I_<+Z<^f9WE(KC&8aJN)I4iSReVM2kGM)Z?=SEOEqpCYRD7%Ps`q$mSaUMuL zkWT-)8}O*z_%Gd2)yz@d%*oQvx!W@(UgBW9j-5PWxEn#oHkFQqJg%yPG$A_%9(ivT z_==iGF38ik_*!c&X8g$gfKj9?fgiaaz=l#L|Ac*CCPInvh{4@n9u!LPvBQtt57?e0 zNV8CCDuZbMvL|~qC&s%cqbhLXy}Njn%12RpP?V%<8^)cYBMlfFlSNZ%G(BzF0GS#Ep)EG&?N|SQ>4l9g7MY?v z&ly=E)?+k53;rEj*5NlPOs?uoMXNN?KEf1DTGr3KqP`jnWR7t$H zVDt^)0}UReApIa{mC>8gB{OD%K~JD7y%j2m#j5dyCCNglstVM&sz8!6zf2}c73BT6 zn)y(?LgmRSqCLt`G>)=U0P0DpoGbELz$KP!E0FV`nH9u){1S|3LHr9Pq^v)qc1>$w z@~hU^rmDI}WRLZU%zv(jo~ZaTmak*MJDm`HbaMJHDt_VQV<-4T$rn!0wo9^$w-LEnssgB{hX5igxr?vd512rK=LF1z?r8r^`xb`>a|4*Hwl%0PPhz!-7hir zy*_E7r62e~ba18@B6Vm-#=v=9x>|V>_bT|HR!)bIc@~uB&GDj*9RNA~4k=PBm)xRG z?7*+^&jljLdBU!)MvE}fNM-+NVPd+L^S!oV#t}s9&@d|c3mUWro|$Y#WDKjF5LQTe zsge%~iDE4DV0~zCja@o{f>30`T)2QNlxYfp&WQD6ao>|g$Q#E2g8K+y$nW`llKYey zPW9U`5^m%>@eEQo;#r&7(q%A+-&N#IHnmoX9k4$fIXKQnW)q_gGqY^8^ujj+5(FJ1 z8@Z2_QTG`0{mMxHV7`m->VZ-8H!bE0?Y{l;d+8%?7hRZ`ncE3$&D}}AR z0>C49LE@%fw;-*G_x)alSasB7GF@asyFuwAv$Fow*3^T?AD}q4aIQ57Xy`NywG)rR20c%G>0jKeCX620H z4Pptu8$*n;bXqF`^slR?kr+F`$c^LR>*gHWB}_Q5S_=b@4;VRRl*RpDn4es5AJ?KD znAj%FC0iP<1SUeHp zNi)o%VXB@ju)mu+K5nhMYO zE+_!ZVN{H{d*e2(vK4uIdlE;m4+Pzw*pDV;>xqAxP%F10nfc13jACOco!(Rs8a8{6VEbe*Q?>WDA?GI(xH7|Z3Wk3p=*RTKb)TAX`mLyPHuY3 zW9cjc5^kkf_1RJHOdZ`FV}Z5wBpoE3p6jUufa%I`jCa;6**C`3sSbT3rG^M*WvQq z|HW+1HG`^2 z24a+U%ol~w)jW}o73ys$lO=fsfwGq@9B2`sqR*frUf05x=v813<5Um9oPEWIuG~4f zb|kcJT#?xtgGuVcIEN?mq}NLm9=Jt^TXmyDH#&syPO_%pSe)~O62^@V0V!AqM+^WG z@m3MLiIX_yoio6CS0)*KghqVhL~EyA>ZK)W<7A`t7E@_mS+uP(P2IR#kOpYkHLP1^ zf^je?NzWNwJr7{^{37N!Hjz%Og)L{!X>NVOLOj(h^eV>{2#h@pYphQHq#Li1+;o@2zPRy;4;r6(wq z`%!fEOM_a@Hq)w0EOGx>Iw*V3>+Fyud&)g!aIbvAlM}gPx9*bi@O)P6J(e<#TJuT& zOVRL9@0W}};ftry-H^OmyD%cfo2`w0{J)R90{GT%;gcd6KOqhykPkd5D>*rUaI0y* zh*h*Y>3b(V?$w3fxpy(^7Y?9$-t+^96;>NiELst%$x@ajc+3f63IGSxeybpe?O;}~ z5E2x%&)&p_ej-X9YCxHM@zM6Fsm`BH*PST?G2zV*nV42oTTs1sB=KLyp}>yE7t@3jgKdfks=yB3ZML2}va;3J^Xi ze;~;m;+yic->_IKnIRo>qID;tz|%ueuo6zUBwSGKa-r(ouub_!v)DixMQ%V!#zjRHecxvaUAs*l)qYau)^_n{HkS_={hP zinZ7i{L^^b5HA=0iwwO%{7dF&toJcBLjrW>%=x1EpAESU1;A2*Kx;WpTTaLhxb0xo z%!Ny^x^K71p8UoOp9oCSe9CNK#N0`+#meWLxuMpL>;aen&Sw*Drva8_`aJP=JU3{j z3KE-$dM7|y2yWo%f;I@KbG=&XDZfa)#`zdhs&Cu9%8S*~PfVlt0txzo)~z+7sf3i3 zUqIR>U7XoTvc#?lJl}>~J*#VD&!X0Q7bI+TLXDUBLEMfCM|ZK~wF9t|i<6j!Vj(#E zopOTllxoKMW5~vCzPlQmL`FSzaJ)K=Sk$a!J<3%C)DGu&Bu#PP#GJd=$WwXnQcS%F=E)>*yyP&>PzJ<807pXt(!(v=ou8@FY$!`jOg3Kpj%7zoX()b8Qkb1z7O zHNDjm*FqwNxBNBb~sUVV}Q>_A~r75M{=uJFoGpu8vLR!*y#{zmzPj($a zGDT!P0gG9W5LR;>;ZBOLlNz&t2PL4rzE)?}@yFA-0p{{ahJjZ2d3djGbz07d^Hix0 zaVbJuA9g)8v%i*ch}Uo^s_EL`7s#B4bjTUg-+Ueh40CgX-&W?OR_hTfo({fpgMLn7 zO2@_~E?&dMrjo&~7%XP(y1Hu&ee`yXk6gz!@b-sv z&X}=;?M-*5pa*c{-)?D0IfYMy~4cmMC z{#P`vtat4g%%L*R{j>uY+ ze;sU)AqZpW;!gu+easBNGQO4yC1er|Z&-4=a;@64Ytu`R8o`Qn#iGTbwS;HHJmMZv zYRSmlwrAVR>fI!&RPRpX`ph}bF?sZaI-eo7SHy+oj$SvMU|A&Bp z%HMec`48aIlD$J*`M8aB|MTDWEh>e9HW)yFe_Z-@s%DaZ4EhY2pNhv*5Xla&rxXsf z1jOQ~(x_YmSHwZ|3De`CqA8<=qaxyi7mQIRA&Zm?6e~@4z@VlSn+|sJgOQP-q=!o( zijGHQiB^ncDW5tUEXu?J~L?wCfab3^?B(ARdpm zm~s&iKs!kA_u&xGDhm#k9003vmlZ_GvkFGcjS9}*T!q0umlNJAXAMX#flU&5iV1SX*i|ZYDaV=4m$Chk}F?(0r&Cp<|<4@moB|A@S**3CzT@mR;cox`|K zfzH$j{`NS@-S77I^jV5m-qa7{?=Nj|%fY52ZU2oo);vwd-#UF?m;1CI7tZz%$nNN9 z`|NCb@6KbCt!?LtdQupF*2jMF=QeHUKGo-`HUixs5H%6;L=e;u;Y0)?URCeo9rq3g zj$Clb71un)hNpRkXL)XH=j&^))AwmTI3Yp%W+dYzBrN(uVPOGWnX`5sBt{Vbzy|n; z3`NEGyDG5`TK0we>7U<4oqgBk~kX$*s4 z8;g)7Y@0^(;5-1)W%qZIqX;$*All&dD1wax0vS0<_W$3Glf#Od!4D&*z_JoluvXSW zsEk5)EqB|2(WYJDMSUVJ(l{cz$2~7|j<9~@xk3Ech{cHv5`@CB^sGC(EaM3cv*rEh z3jh35(rOK4*aI8S*z~r%^4DiP<40)eBVL~We!o7~KCg$t5%vHoB(jMepNf#taX`XE z*bl}8sP7S-IkS7&fG=P2(&34GAzUq`PAR8fWPr9An}C7abRs#B5EKvuiHM_=mQVz3 z6z%CEU41TpbJe=YpRVg`U0=1|zKDmvZ$IY+T$V^2rRhrR3L2L!f7#8y(rp01EP?;G z*1z4NuHvqS>FH@6!hS@blPs|g2=l)%3wrtZkZ}8CfP~9Ceo43=;o_Im-d)*Fc`M~m zf&zFtAOTpmT(0Sy8PCKMT&hGRoK}Wc`V-ts0L;5zJ842FypD$gk*-!LiBeC*CTH^H z%(gF+O<5|pEL}E4vaQ?);m2(0u%&B|3n3z&s*Cpl&bL$rFwkHTj;z3)Tg1A21Q#lH zEpU`z8m?gE|LQa6|G&-3RQJ6qNz=x%TGIy7sc91gS&fF$T}};2QvK?;{*=C+{y-bG zZ6Ym0m%g+snpuR{oH=qt6eJFbf*^3X;r^dZv)!>gJ~;&ZdLZs|ZK~1Vv9!CR5qK?I zU_$vomP{xg5$URgS4XH2VnEK1A zmLSm!;sQlG|DMNwieI|McVgeja0HDcAY4#mRAk*yiyrMsZ2VnQTQ^hcLjefF9|i8HUo(CPv<4U#U#NnvN9vEogKYxgrJ`edh&~D0LK7i9BP3rlzD9sldLc#&5Oay-YgG_KNvQ5@Y*fi zn$StW+(22vq{-6!n6wwKT$g7}5)EAXmW$b&;+rN46u>?#aW>!JSnkGAY~TdW)RM+U-d0F2oSBC}Y4X9s(sy_9FI%mxGKD-5 zCd^l$T2gSN%#LFd$dk?&E&BjWCSwID)KvG5Nf9ZFW6~sv63Um!XLJ6Rz+NGf=&*tn zq||Gfzai^hFtLmkq}&`9^G!G2aQ(GuP^DZM3k?ZL9Gh=ODN3K(*L_Tpd+!Q=ZJodD z4}abYd&Zf_6f0Q43RbX!6|5iyf*_~U%rj-lmWu&hh*!--Q7H2aOj$4n;)1#`f)gwi z_|`UoPd%<+$H&4D6qux;xHtvrb;yQ2`yIg(3; zA;49=dRS^oL8wwr)Sq*?A9UB1;gT-|Y|9=3zpx12} z^);Y+WG}D~1q$eZ*(d~N8fpSs3ruZMl)U5q=vhLRX4k<^qG<=~q zAIOLDHa?1%`7GYfZ(KyOPFu8S@pzk$+YP4R39=Lls?uj|#MG#LHZ}#?QO)LFygwg& zv=X2BjEQe_0LFrL542@~))Ht?G)Nsx1_k*4AHo06Mn%Brc+@tk9L0_jMs7cn;R-a9Weyyokg@m>1W}#tJ#SAdn zBvS;bMZ{F-WbhtPGqs|+;-j9KMj395w(9)_9W?Wru2_?|(3Lq8UA^{h*I=su_bq&0 zK6_Per$Iw@+hLbI_B!N%gFbh}un~vtcht#ajyrv#*Qtx=&R@86c7p}xn&(6Fec&S> zTkKN{EwbEF%Y5b&1J+n+m33C@v({FdY_`QV8*O)HeQ3H=#;|iJ<5bE8X#nt3xRqHT zB4DFJMMy#i5CD@~21Ck&rUPiIf~Fg2abT#u4E3DhJJ9bsL3{f09>mF44xxM0cVKVs zp+#@qWIADgAz#u?w;P+Sbt3)m;Oa$*PPD(UjDtoVtl=lu=f^Lce4g@5LPMi%LM=}XH`1Z!S_695ed*M{|k5Qyu z)aiPq{@p|ESjTQ%0Bg1KC62?+%QHz_*824`tgM#?P8n2>>Mv5;*=lRnSdh+nslaBd ze;Y5QldX;~d~VSEC4po>PKQ?q8^8ssleIt^dBBN7PZvu=p#()_CBardXwtGXowWU9 zHT`;>BJSQw1Vm}*Sg4xYG(hG9Y6HkBFslVH{}=Q=gZd5ZX#lwfDQ-O#2AOn6C8U+8 zpT@w`GR1Zx@`&axm%PU$o`BQYEy?x#SO>sWEZYm)YPGK>5j=2ZoU_tmge|X7f>%#i zm00tIT2DP%0d-2tA!|zrpH%ATb(OHII>7hT6iQp2#HU;L`zt-Twk~%{JE!J(>U4j? zaG&PN$6g5aqMsEskH3!?VVqDA4H*oi{Lu~BL4On0T}x^uE|u5;)5*wF!w=m|*Y zJa7)xe#4;4}lo zE2ng>w3D-O5_|g0x-`-3>1^R-@cA znuo!AmKpo!{RZ#*L@`W4L`lNYllGn(Ny;21w98U3l0!Ju;aL^XUn4&fQliPdnFYZS z{$Iz$K;TuPLY9FcuI`6gX5}2&4jT(_RVoWyf$NYM zCv9)&=s#g-Z2I@U7yS)gaJLR_EPuM5Eh!}nqZkS{}FfVo2#hJ5*55{!m{wnTI$+g0m}__GBBSddbEhVDTa~E zZ_rv}wYygg!Q%RG!joo0=M0&<>e$HYJhrm&fjgDnrb~N#MeQ;b90`I3Veww5b9ZDX zqwxRs0m1bq(Mp0@nuRw(3f%)|?}RxEW4{DkM7s z#do=f{LW}Vl4QlPDkeMZ;Z}O`mgG56%1Up}#qnB|&?qNU)!ooAmZ-oB+9>b8G@v|M z`B(-}%&^yTL8uc3Dj?x*WnN5w3J(2@NNc6IO;rm$4_e&=j`d+MT%4+hDmBU#5XwPV z*EUQg7Mk66`MBV<)v4J-ExM-?kCF0d%6qoMe05B_L3gvkyO*vowb^TcE2Z!Ej~Q@U zG?$MJYo0_2fp$`0)>d9xwLFq@BVcPSh9~iMe_TnAp<6ciIhqZior{ASpWF(wCa|Gp z6ZP!Q;ZG@D#GXw0*ix_q+An(?RN5@2N8*DV0$t2|>zk)ok7+d9mu6h;vGa?s(i$h< z%@(kdQSyYwS1Iyu&P%<~6X`&Jhs;-b8a!n>?|gLMbUAe#2rupZdIuwQ;VSxH8U{ew8uucS}JDE3J_8Z z($U&>=sJTCYOQMYdcey^gdpm(bU2?L+d+l(+t)+gEdKkEky(agbaHwS3Kq>}laDs3 z7t*6}TMXu=Frgg?2O(E9ZQVH3{wEZ5pMH9A`DESsrDkR&&Ka3~s8C|` zA40K_!%3Kyz{;UCMMj5A66G_pQFYdI&hHTkxCar5WX1p99fVr_{q7%5xUS+^RA}3qJx$Az|)vDX@cWu%;;ut+98H$-;Z<_buZG1X82c0iiPdPVmG_ zG~-jFF@TrKeykkC%3dt*25vtF5bIYqQ0w%(cMGBWfF!L4S=jDniCL@=E)u35+op`V zv4i-}tC*Oh_FDSEZ%%2Q(na+O4}-oIAU;qV$Y`sMwiWRN%7QHW_6-ss+nP%w>&c(x zD0b{=I}(UuVzEm%E!)gdUslJOjk@yQ$antlwB*A!wbOgA`Az;il{~3`z4_kc2Gtr? z0WY)ATj_dL_fH#Cu4g5w4?OJiDuWPiD+xmamoPQpFQ;q=nEX1#Z)D*y3c0Uj(ASa_ z94|)0iU79)P<-~UDVUJ|hq63j!ab7Gsg=K~>`%hMZNZPi%f*$1bx_j8pT9`b>AlUu zVCew?YbQ@3T_*(8emu6iwICi^pi07kbEKJfhwHnrB{>*J)q{An7l2C#W<8x60lrrr zHR~yfIleNW%io$ObX9E0l8DuCcea~Uqy6`#p@V<-f^BB&vP%!`WGh5xcW&UWYSy)I;`ZDy1z;XiA~s-y+z)jB5+WZW_S$Qd4pp! zg>R38N{(6&V*?J&F$7wKan>yrGY&Li%T5pFU@#y#!7^kiz$m3ZEuZeC=6U`kD>?VY zYX}LeGILCTizeH;R5^P4daNbxD!Ibi!${vj3=X@iE36KYIkWzE75z_TMFR`llMHFR zlV+Ewn3kZZ@NnFoNHIJuJUX2bF;B4tSRDidly82AOWn*f_W>11SpEs z#T`Lu-4NwKqQ7j?mW090e9q5~)n+zAj2S?f60sf~*Q_#=qsGtdvYWupA&m=W*oWxI z9@F#>ho?Rmjm{XGg{_l=Q-Wk>?S{3uFSuaENGVIGMMvUYVp@H%g`Y5G)KvSrbNlK) ztPFthv7d*T+VEir(z{F4@M}-J@7@07_oi+?`TbfG)3pEl{YoEi+X{8OsdAxkM`GnO zbBT(x&~8!oZ~{L`V@KD0x{E1qnjE8)J8n}Q$|Z}W@V?5B-ayEk#i&_Tv68=3u9o?1 z>=^FPi--<(C=d4Lp!)7+utmLe$szoc#Rg8i)pzT)E`hb5Lt{_R><=V4+R;~KcWP-r zq;}iOnX>HEnvkwL&33zQ1UjeB`TeD@!N9)FeM9-CNytQHUb0SUn|*U z2$z|GW_x?Au)d|_rbERG)XK`LTEc-8wU?^pYm2Esw95!5kDoi>gEj*^ajTBzbhAT&#{kWk`{!_7N%kv4}`h8}J z%A~uJy^mh$PWSnqC5}U!WuGjV{>7zNqM7^N8#RX#F^g}IH|R%wFz7#RECPqMklk15 zv@2flS6Rg}maDWe92R_r!;r{b?W%Ke*okj(gA@LaWi~Qk;_xA2G%=W5PUMjpOeVW& zvB{y*nI8$Rt=TA-+_kpTwT$;19V zZACD558tYh!rfE}Uqz;79SEQQr8M*FFG0^d9X+KnQyrahU0|ll6MEw7-%ewnUysz@ z<8K6XN|S`P#@~wT!cVU`c;A2DJr5+l)HfRQBp@RRaH9Urp_Ep`9nCdpMb-yk;!uh% zCne0;lWyJ90PIOG*%L6P^y@xO*MHpK%RCPG{NJhCDBlL<*|gEFL+?(ePqQ}j04Ns# zn!8V>G{39ms5o+;zn9f@{hzkdTgu%~RPfs>#XzxtTj{IwyRPwuA7Y)h%frimg&<66 z9?t%F+3+tFby1I8YGgsKn(ZbA*2ptWD9U`}5gp~`bB~H9y=)Zn>)841I)2m5gc3G; z+Tk5LrX8NmwO}IleQ{#9_`!6%MVqYbs?;Ve_~{SC-ErbRd&Gj#mJWZ>KW)$8;Iuvc zUt9>N zcm~&sjVRW~iCv=W({W~1va*Fe#*yZr%2g(@a*q3l>YA=KC9k>3ktFRk4ZB9av7NDLBqqpF1DT=QPL{{uWVYt6X)rU*9u!h`W9Jo#`(qKQ5XU zYZ^(06cPRr+vqRT7St@LNgMs8JvK700iN0jpFR?6-HS>`SB-pfC7nl<0n=2n6+zr= zuLsx9WMdkcz~=ED0n4dFfIJ!PtXyOu##VNf*Sbd_@w%3(s_H!%UxH|#RaeQVsGH?^ zw{x0KYLHM(HepFQvd>oA8D9|_uFrC9Z;0y}NBCfHi?q($iP>_A-wqoS_= zO_Bl&_9;7zx~YL8vBn@3G1=b&Fr+qrA&VTFT9b5j@RWM}DLY-FQ1Q47f-1wD8P4+5 zSl9%IN*KY%V!=={bT2}U$oCKLV1V_>cXax@Bv{Ybkz5XBB{`OIirGwr$)*V`H#|Hu zJTX`y`yM(uLlqshwhrJ7SD}_<>`k+;X@Qg$%cGY>IKxW~i_&ldcN?bK=b2|hftjWA zx^Glpa7{H#GERdSrW`Gv zaeaB`EI?RM28pLsq_6Ur17i*8la@?$#h~lUWchwlL*|NOp*wHVr23kc7JZGBc54R|y?r6=et|lt4wx>0GDf=hwmKu7U5mruYT0R6WF0vF z2Sh&NhkWwCpB4UH+flM~t>V8e8|W+a*e)CDxsLygMa3QN1L&KOMMSIEq?0>avu=^59T74+~u-sPAjJ=cfDde-?glwXBmR zPV7Rwsfd}U=VTcG+E%)mc|k=8OK_f)N&i`Md2$RPfN2 zXA{AX2=w({sCPY`@CZEd*_IGob;NGWd24z!TmBVoyg)d1Y5#@2zpdTB^%ky+l+DY{ znGv0nayN)dZ-+e_8J_jgq?~JWP+u1E`-$s$b)A-|ptI=;;_>UC30=OD5!e|G3^2+! z!D#b2`_H@?kr}!Fd{P^!4P%-cjPmnn>VrNjqL^KQtrF|{UsJi;DMZ9S`WzR+=;W|O zMo&ghzK-_dSoKT zdgpu>;xV$7O-!eUHPL2e^)hLhQYNrjZAU<@ms~GJp&#Y+bHj=Qc7NRC zDUVwPYEG(}v;~GCPogOEns*)Jf34R&FQ>i7JtzNKuy;5p zFzt~OpNn@hcGyy}Nm;?={;qc<{=*T<(&Vz)>@~Es+!-+&mRpOJzsSh zra%r3+z%k%Zx~VPNEO)e8`5%G#?LDTRH}h$)fFn0DQCsx>Ob5q1fh^9P+{7A!R)&( zt-Sf!e(&pLktObb>UR9xU^$p(InbEv?##%+P!1rM@!*m324@UeWa<(;`p$nG3Wf9E z9W=f~rq11|J=q$#fFL7~J%7%oMoK&NA zOlw1UZ1o4t%`@Q}vcX;V%BggeGKN0?v!06n$;zs5tJJA=+f7`S@pAk!%gAjv!e-4G z*|`(n-Lp7Gq(O7X%aI-wYRrxd{S*63_e=Ye487T*5gwF!Id?P$BXX~)>yrW%Gn-K3 zwI0t=6|jibS3aE3-Y6m2REsn;u2?HolQBcbyc?mgRNN1-OSe+%<1tu<1Co#z8+9n4 z==T>fl%Bj#k?*OGSESdvYt_&SZjnhn<;CJ}HlXz6Q_6gALm~#NcUQF2e+*uT!%$0^ zW9Q!#`nG7i`&aDuP2Stuy{R>IQ)|cG*2zBQYn!jS=EFpQ)#3~~`~o50P9_TX=n10% zrHpwK3>G~tu)8KEW$$w}3@4qW+GW8^Tpi~VxpuJ#Jg63+&GZ0M&tOyN+2r$i^Jpu@ z1)B=QD}RxXdn5hU>a5h*My=wm*TQhq$Ver48;S|+_-OuPWX^}^8dfGF~X>X(nM@f=mSKdG?=f@5G!R8Tu7(}$i*@ne`1+H8Cq7MSnm~K zEyYW=zJZJhNG5HT8T5Lk-l&&lX>;Pfw~F^_EUnaNT^w!V&C?0H=g5I0O8lia7iVV4 zCIHv}ea~yTGs}O6*6dY~n{=~uP2@E4=ywI;NmS}2aY31YrlMAZ3#?9C>74%l`Eg_S zlievHRY4)(>}i$#lB=PY(g@ifTQKz>>2gQhQHj!|U+5j0?=D|;Bb;7e5v>0((WCJy z?0`^?k~vCzIo@Sgzu)=cyHQ&I?c=LO8=1u%X&xSK^{v0T%(v{(dLIna=nf>yKTy=Y z1y_QdWz7v!;@R$H$_?0GKIE>~X5d4#AxnC6^-Fkg~*lcMH_FzZ#f%*_odf+HrR zp{FAK6&j3sg~mVV(xGo?1qzj3&OyH26R|r*Cw&+y>GgOp{1%3Hj{!X4DlI%F`O@zx zl)tGZPKj2krZEQ3H4zCJC@@-2EKqeZ;zo73tBmwUqrS{l-5?|l6{-t|Na-Gl{_LX} z=^00}f7mMyZ!Ev%qOYqL*mIqd--5da6P{cBNbvY22=wLtTTaERV>sz;dhXLtaL-n~(Z!=8ty=2Gx^LL&Y^R$BH(WbvU}k|`{)wwOlfKLZADCNquvZq@eH z>bX~gcUgRv%Fy{4xO!PVEzV#5EpI;qi+h9uBfmrE?y0?%dF-xqQ(6mTGmgx9&gJU0 zwMB8I&Lkr@^DZ{mXo{THwa)2n6y`EE&!9dq;R-4Pbp>~HgZZLUJJia)e-xcrHYFpj z)C%aN{#W2Fd_46lnd~bnp1%eBs-Hx^s;;TfRQaU#+r~RJ18RV;>smJGPdXAIiA{FjhkD3@6gZge% zfxV~Q$6mvDI9w@|yU!1!DF^MlIPlY`PlMwG{eBAkKMT?n zgCd|>t}KvoTYKKCy;jgy`Xf0m^hTw{xhmI-jVc$e%2m(RcqMmgSOCt|`izoVX5Vau z+GQY8v-Wm07Fw3NZuYp_271Kr?|Jr5)|D;I{^g$=zj1@f{>i!q%!WfM@zJbE!`>jU8@`&Y6HbSj$PaqGZ=fY}u#PXa8(GE}*oZ%76VWaD# zOU6Xp!EL=k9q5ig>{vD$;`_-M9-URSSDkXwlfl^GMj-Q`ELl=0YZ1hMzr_?#vs3@g$^eOlf)DZ#6#?c4G=O7FZI2X0G z4)I&RGkQD+@o%|IWwxa0{B(!N8;ICV-4NH(J)-RIz3`sz*n4GPJ0*F+FVYKpFMj7m zykl?4!*eKLkGFC`sXvbV=q%a?H zh#(8ZvW#R_lC9ejV;KZ?n&}Rr=t;~j??wv}Q9TY++4_W~3^?oqgxo4;g!X?_Wh+W3 z5naCqfG>89$mG{l+<%hFhhp)X0RoJF;b1D=>SYjb6jxh zct)S5j6$KDItUP4A%M!N^{UuTdX91x4gj%#8HT_v@hb4%TMGr2LjW+=uTIIdrb)Nw!W!Zy%dUca1^&erw5BqU~2pkjp$68)Q zupBgMYKjzcSmh{u;r7qsGGTkzC~A0g$yh@8f-&RaDAZvv$R%|I(?J+#pzeZt*|21$ zxA0or(=czBqiM&|SDho@jwugH1@pA|O0az=}@{GMcodYO8J&!lLftxGrax`O=HO)=UszP0_F|;p6 zEVyNxa)}gtEy<$Q9QKwDL>#N+?F7@Ah7ll8k;o0E$hU)MBkL z3z9pYreWE7<1JtyW)r5oRDyu8X3YATAnA__E9I zC_~}L3~yzI4M#YO39W;yE*-$oco3~yPNe}09H%L_v#;Q}X*kRr8S31pP7UDhX**LH zeu1gZqT>q|r0o(W+_PF(2LnGgQ7CCdqp(-3u2>GZj|-xHnfN-~Q9H_nddxE2~n+ObI1rP|>E15EE*I~6I4jxbw1Ckk~hQtMH#H3f+SjMcI@Nr{;B>>1| zp$)PCQ}r?;hkz=C<|@<+$YLWUIE2wCaN{Z3XU>gKFZ#k`Mn92N)~lT+jdiBp%?)f7Zh@5*)6z59mHJetFgIGb78 z^5*XHGA&%X5UAh}7WKuDFFV7{7Mu+(k6@S_n-2oCQ4+QvTUy)D63bw`+FOpWubT;v zYR8ipP@nfPA?+OW=q>^%iR;{Fx}-pJ8O@58?M`O!!Al@1q+*ns@t6X@G?jV7)eo%P9qt%KgpZFt={P7h{|^@<3?srJNEXu5m6rwI=3DcTd&X=_gf6O255 zMw&P_9M^_)E9#~m%yI$Z9yP9v&LkAOSw2VXzt{V@HmQ9rG;GrezsRYN-qnua_H<7# zu5AKexYStGq;hj;(Aww}HMA+#@A0F3jc^e=*g{Z;lY{M4M;K0&q=2Cd;y{DM!bI-p zzzy&oRAA(%P*+0S-m3uUg;Nq49o%|C<){nzH6F`DK z8tHsAqg50CgR`NUYU$RC(Wu>wu2ysNCZkxO02gyInm%Z}-_p$VrpuXMvyD$u!c zOJ~Q44BW9w1;nrlu2=z>7`TjBQUKsp%kuJBMDt7zqDVS-=aJ6CE9M%W;yP}h*mW~B zRLmFuqw&_5r^#S4qZD8)n1dK^v(Dp{!sKIfm1ebovf*w5E~F<`IG=`7;caiZ<7km% z#1J2q#(wS>i2Fb209IjDn=rh~ASS%-#MW3&6oqna(@*dASFiJ`d9=wTgpGT=^`4%&^!UtK zRO6XG)4tv4YA4c*)2b^(B+omiZ$wO5Y5)6j*IoJX);+^FcsNfFV6JVS{g$_!Cyyhl zZE*(Qof8Jq_ulxK)YemW1g55CWNX!x7rW(5fAOL&5853lt&f#;Xik#YEqYso*UTol^*~#kP*FWZ` zI|mhOZx|3XxzNHaNNtfnG4EKpT3GMxy?}vjwP*@ZC>Krepg;qL4*wCyTk$i63r2V+a{quZ6P*q}S0KGASYGKGDrv ze?Jz+NQ;uCJD<;U ziEp*&&l&i)hcsKI8`6XCy*6Vdx>C!8$`Js=0)q%62^<(|5{P7JuI+n~2JIAs0OtY= zBllaFeFD&r8qD#A>)FQfU$Qecr$@$}l@Z`My$AxlkM8bB7=>a-Wmqm?pkFO%m#qp= z%FjS?bXh=GKqnz)K+J~_4`g9H^lJsUBUE>T8C5Qk#0|%}iAS!;bt`Om&$=me z+s}uXRJl#)EH(-TsjnD*eXhS<{|Cc}RQCsHhz@)9KGna*KZIb2e8OHe%`4W^!D508 za1PK-{wm3BM5MjVKy6YU9(TBN7v@s8x7RsA;^FcvBHp!y9U@JTh6H=;d`VgAfvwaD z0CT{(#fE#0@`PVJR<8e5tX!s(8>w|vURGgWTq}?)l6noO8dn&H>f`s;5BzZNyr(sv zA26cP+M`-BZRfT}koGk!t>gqw1KPqy8M*3Op(2 zu};!Hfh$0*-ib+~^u@8ZAA0TD%_cn^`{P{4Za^uIMeM}f&FNm+RDzDSk8`={(S6Ed-?D9{(ZAm)05WjA8^HJuO zF5J4q0t5?W!99m|i#T)uFSM=~Q2=A=c!M>^erOu)gP0Dt{P^JhfNfl+)8i7rl0CgJ+&ggf5=@LZjM3#upWW79>Cwvl~l_>uxo(1idz@B)yn$KIDPR~mVu8Z^vBmJ+)@8He-!%9D7M;O!=yE7)>>ipz zTb%u!OC#>rw+oUsI?&ka?oW}4umVQJF#A3nPWEK?dVAR2?-itRMdRE;rp`bHcM(*@ zoro=6-Jk&=EoD1T%9B4dQ>hQWk&boPWC-TLUTF{wm|YthK*>=plt9Hyp6+opnW1vr zPf3Cp=FX&qn*{8rU6DR*!-dpw zx@93Se&+!2o`oecEL(;iPtMUdWS6wkbt!<=6BTw!7#Ih*utMi*nHadIB?L!nkF5YS zi?qh5q9vFGdm4HTU|bSDuRteg6TI>zxWbK=>Q*f?19#wP)Dmc0sJk`PtkZA+T#RY6 z0e4OL5$7qxFVB=q%vxyrg{_=_J=3xB^-L%!j0@LOD<GKQs zeSW{-njzoq&3C;8mv}x1qyCuF|&<#&5y%hB>+j+9RAdI%}==xa^U4p zj1q^rB_EGXyHn8PHsN=(CSb58|DjO`LP3aI0IGkBsL)W~kzoG!O&C6GzSa=&V*wwUz zS3uS5cmMaSUH?_`8qW{IbNv_GKa(IcE}wUlVjYCQWXQ9De6H4Ti_CvQUKTWmug~=( zzQ2_K!A)?sDm6z7{ru`5^DpIXi=Ait9bQ{8TLhkO3CsZ_1WWo?4$c<+?)?U_hZqKQ zHW79G+3W%a6@Gz$?(7@h(rNry!I3@>>ANlOWjjL=l0fcOZ2 zFD-+WQ;+xc9-;JsuGBV+@;tdwyPs^b%V=PbH8HDc(boz4jhL#(0Ppb`4&W;&G^mFQgE*l&bG?m%u>nC`M?~WgyRxwOUsyl} z2%Q***_er5z0X0#7*N2RSHQe8R}bKZZc?Fy1u}5J&@pllHI=$bs9#l$2*KS=s1&Ya z%2qirE;t@IG9ZbwyLr1gVd_?-WCRB8WqQy|9adu{7GeXoV5@GFF@$Zpi(jnGl!qI} zVh8##fZ6yRgE|@Y+kSleGFt(y8lfv1;0%Uh5f0RAi>;s?L#t8%+6Te^{sEaE7sP1? z3IQg9Lcc*FFkWjZu%`uZ)!lp>#n`q@n5^8U(sZ8Z%C}W~)!Swwq?9K4Hh8RK>?BDf zuL##eOq+U19cERQ9&!`kU0t-PRjeulD>DrnrzX{U*tBTYf~m4M!J;{@0B2H51yonuCQ7cp$DY}qIA3kks!B)7s|pb z)T9Z4%-SWnno%|Dvdmd8AEC8TDg(V}#KoWU!2S>@VPIrpW&yCWv2$=LRmR25!^_7n zpj=Q$SiVS6qQ!_6CtiX?Nsv`#mQ+(*bGo}Oc)qh^JhEp@4SjhZxQmatZfZ$1m@0Fef>UuCPRAKI6Bl9u7vW-T$0gBXOlFk4AzLac(iN{M3o=f@8Cb+Z zbY@6NHnx0H{cl)k8I5&zR7(y2IUg%kkL8JfMYUf>&nHds>i;2!i6R2aFrypTP-uVL zpO9<(SG|d{lK%Voh=OOfFJ87keiLN3UQHdy>4vDr%{{ZgFPdO?0<5tYG9qiTmkC*+ zLsv(ZB$OXdVEme2nF*qW@nuxz>JU_hM1rsioWPnPJhn;YOA%u_E6Sm=`^`G_vzi6t_U3Rvx(>?BUX}QFC7wI+&f_c-{CZMJe3S zmo+2#%0}N@6fM}sEbV2XrC#$L_=9;Xy z%Zo7s0R#OL4IUtr|H|EZARzVS|MmUX{{IUO3vNIsBVMo(gaN;@ilB-fP_Q=?HFO>* zG8{}m2Ub9)Hf-=OAYe8SQqXV?FhcNP0myJ$xByCAoN3JTEUwk4E_{I>`wDa$6GHbY zE(lS^3~VSiggdkLh>7nXeiF`v0$}t+v90$TSf(vn8q_dlY#;H|+>To;rtC}FkO&m> z@<{ue-}el+vYXe+Gm|O_GWwmKy^IISj9_%Dhf>C(S!DvFQuG=PZ=LhGM4R`=*seL) z$|}TM-%PXX3MK@|XfE)dkjOqHOn{+;X|bSTvGu1=0y#WNzDaRdQ^xn=mX#rXK|o>uvjLW)3YEwIln3?i^{zYQevk zdwO4KH<**>!B2FkcrYk*RRZTQ!OI1TK{`0hu%p^zbjd&F)^zqH$=IPWJ;r4vh@L|b zlU@|Y!-+R5qZy5kv*^r2tfO#tAA+`wIHPnS%2FGN<>9p(Pl&khr*&6F`OefHrgA`$ zKzH$OLAN2R{l7JWeSoX?e!5gup|Lws*sBHOGI;`u<(r~4R>6If{wTWkt*KS$4eo*_ z793AjXG8@+dP2etrFz0I&iBAF8;76J{$+mAF&k8>y;sNgho5G+|8oJm&ks~Rw`z@K z9ytMpiR%E@9ASa7fOWdt#TH!vPDd$tRd<>HVv?I?_jB`9DT8v~Z|ASA11PwO-VEXs zl2H2n&An+2XtO1NA@MRs?0He=##nERByA56*_@z#?)%KE(Bg)5uv9n@;Zj1#=uP&b z){7SP5ak5;VKg-bfu|A@1pt8tqC!LZs{jc?0tN4a3UKx(B%Z{dWCJU8ic=2~mEJ0a z->fv$)jc|Uh;D5UJerzizI1g|Txo*1;w_rvd5jAS26N*OP$`v?IskThu%3LM;PE51 z5EN*RLaS1&E{LLbw!k69M!VLN^hQN#Lmx7jL#2qpD+>J!qzuam=afP5zvX{2MOJ-|6_g+&yMSr1?1{1*dK zqGbV5f2FTJIp|$}|J`D+Rd8;R-CD`b${Yr@4;~}R5AVu*UdgUI0~W|^OzG@jaBCkL z^HcI40Ybw$gtc6P$g)8+$&-#}_$CZQ1_uM9O|~X^SU*~+Kyu@jQ3mgg%WNFje`_pn zfS`@{uN6jeLPurd@Rro|D=CE-^eqzNbNS3;>j%QFan2exFn|QH?|MUvKI^%tGQDx= zkb-vfH&Dg~*`@R_6a4EhpOFd|Gb*@p^)acOeqBt?rwAQE-J3AR*|^=#9hPe!!e9;I-2b0~EgSahd-@~PkB$G8D0~^r2c?ZYwn~EM$_M?Y z*Ey|$2x3q)u|BL_HF0-u40|e^cDX8O#AFa{Eqd=O+DCAdqh8j&g-$Q^MzEyI9rnQ#p_uYc&|2V{KbHj#+6z44 zqY+31qrF*#PG6xLXela21`d^_gruZps3hCU$fO0AFO1W$8x4q|Y6;s}gplzYh`EfO z80O|i2oNyUGGw&645jFRI95xuPukxB|qrUsR0FvTjJwAcQY6QD#n{xSA%bOdrh zs#m}Omi9ks1kvbeQd?zU19F31QX&q}6N@pan?RRhg5)?qiwePKRV6KnudnQ8(r9?H&*%=-Mbe6Wi%Gsd{BN@#&pTu%y;2>1dmWgP}Y$06bQ1Z5BU50ajZ0g89seL zP6WWj#8e@fCYqUG#^U}9G+JF7U6P8lntCj8XT2`3etms&dNTVddZQ7%9Xe4oee3p# z{rb-vWhzQm!s7NoK{XaPD^U=H@|BQ3ddV`^Om2Oek5wO& zLLl13IuI!JqJb_u%}sN{Jra0Nxk6+UFPzuLn6Kad1!Che6=b~hudekOOz#PGzxI&` zHR9}R?xL!QnPam{v(AhQvnE#e%LHWY(NWtWx>-f5tm+>6k#bCKEo&1Ir(^a~mHvx)S6IShJxM{EY}|DB^LS7s@`G z$$*Z`p@q~MGzJycSJ8ORhrC?$`+7!gW0LbJ2#TESa+PCvWpaICRvv26n9LVD|JMr8 zB})t7NJYjFjW9`BGzF`)`e){?hHF8JZ+-aOh2QnGM>v0d9+Slu&XY6zNk~ zOx*%p3tUjJBlVB3_T*Fa@EYcLD8emn|9LXF2x+ND_)MTqui!2fZsXBDBYb@!hR>0rsOv+Uv^SI-wA-*W{^dE?!$paIl zPgx>94~sY=o!bc66{bGvlES^h0f9ke8#vOZXEY1gf-j7z9M31#Kh?r#8@G5jTY(@c zw7(_q7X3iqxIc@GuZ>`Tzt*JxT%t3Q8zsXKY}}DBJd18I%Fp#xeO}?8=J}9wEj+MUf*gu)gv6=r88hU zk`eo+$#l4LXl3xT?t(ss)B0_vT*VLMC(0!kS6TgM5*V64B(_ywd$PdYd0*b|#6g%5 z!R`|u-OvRDu);5+F2#$ zXcp@*TUv{7oD41SSFnHjVwpT*8Y{059v+kh2VA-#Fs}ayZGr%>LVq^A#*|PHk(Q=U zCPo9}6xkfSK~3`}tZ^WU(!4}GkyxtzDcdxC$LZ9zKca4!Q6i(wz(C6CxIhvWBh@GN z1mdVbjvr+?UBAVHOTpG`&eMl*HSGk+-K#n_EDsM0G<_(MwEs*$iV>8?C=PHn#Od`q z00PTD0G^jzqo2#5!QaW!0tmO*g<%?s%NaNZ44;$eD650rEKldh)UF?r!CybGFiy;N zU?f3Da*>egFSAT)oKQ3&2r*OnH6nyCQ335ww5bzUy-DHM1xX|Q2HFKxh4iOZH;Lqm zQA|2*Cz(|sS)?Wfv>);;dL@{C4iDugA74t^T+ayI!RIhhlYNtVQ&f6c`cek98L=_u zkeFZ2-l6PFDSiPk3-E~Gceu$!SI(Lkk04lhqNS&u?=2c=SZa0}*zKtfXpD$6{c(2x zdKVNbSaScwH>sEO%VBhiULndz7(6S2W|z;5#|P( zW?GQfRSpM#OGDH+ARf5C7?=UCaZTQN0ql+YY$tb<3uqvi~=_C34RS(`BEPvitj$)cDq%tz`(EtipOcfa? z-FXQTd>mWCu3>l*2P+Xd|EWa6PPE1Hc)oXRgLtA)`5?iRK{x)k?-|I~#HWb~(Dk!> zZZmUWtd{OVOI3=W{ou3jknUsERj;}@UkEIdaKj(A?xUWc2*rKUy>1|X$A0XPcu`;@ zHr@hhkfLM(Y|Iu>yb+k1ycB{kPLTgczoS9d%5Y~5H-kt~grJCy<8KTG034a^aIk{h zqLT0v?s5a(U3MhnCLGvsLyT}kUAIQDoO2!n(t18q`i%m6vd+a{5=%f}}xCyIym0`SHZDbZj;B9~dX&w#msfV|&R z^2+?!@5@ef$o$Kd2Oj9*a#b#R0b@vDf=DKQzyrd4;N76zke|o2t^#FiB5Xw0Q~2os zD9v9|WrY%jsp6nUiNDoR^YrfRiWej6@R0#huBeM6t*pvbT{*d6 zEs7(|v@B*e&o?jf0atRo*{5*koMRsJPxLrtRI(Q>{#)Az^snuGRh0O)hQLcml_6!z zQNNTAZIS4=Nk5W%dl03Eu8n2W$0%fR7wGX_It7t}#flazntdO;fB)OXoi*rGfvF9) zT%4{Te&NxPo=x)vqDgUej3sFLA!fdp-Xh3+l3WjX!h*};5{yLB37sJzaYy_j7U83# z;tHq~B~ez^Wu>+r-=%rhR{KCREk0Lkti!InUh^CIDePIN*hd{k2W$E;8iy8lcrqN8 z^OFCqc=;0=GA)8*!Q?i;+84A4$tXiG)#~ z8J!iQxu7q~OsRnS%q`_1m~%{V&N>ry%{myH^=THlpdFCanc3@`O`5U5vj<2I|Y6wBdcXb)FdUUt|LJK%^T_6U;0=UbuQ4FPl1Kjs5$b_x(11ZXL~g0f-oaTY|gDuplSUkc*46?cI?R}w#BMzP1zyl^fy*_9;=tab!9g2j zT5<^SAbCXHX%LQ);Ft-q{e?hap!@kur%e)tYv-iZ1kjXp%~50A&ut2PGiE)lE>40Qv`D z!KCsMi7FXDgj5f?mmo2@A=wACXB=}O@{Y&`#!1m~WlI+>p8U_D{|{o*AfQf3ixG^8 zH%t5`xgd09vY%ZX(!wdN1wroID@}l&z#KD+hP|!!)g$vUF=A^`?wAhA-S#hNkjmum zd5Y^pY}GP0w}f-*UQ#E_s_t8R1)-)~$9N)}|9F=C50ejgHayfU6Yq=Nv}&G9jXb(X zh_r$+8Uh;R27ZeVec3lf(GPpAgw1@>tcE0l?d4idmwyW5&e??&58bGdg_W4!-yOqp z!^ja2cM1^yHr41rnBjZMJ}-=k&Jco@SwK^b#NAW7Y;{wlBT{ie@5KBcAe`aKHPV+x zmBi=j_TsCc5&vgal)VD~fTzbQqhYs}AA+0+uu$WmF|AFB4bL88P%oW?C7pG35!y%9 z);@!O>lF8)oMyzbB|xM_xO|i0-(m@A1h1MD+yrN zdilDTRrBCT0x2zWI54}=$49fAe3I!mqEH#6_AQ@}0*1j+CninSj@5IDlhslR+N)Kf z6J}j24rNF14167F4+u2u8w&oWO)~-Puc-==m||Vf!>?WV@Z<+DPR8#^t-ajnDUxVB zg1nsukD?OMjk(+YNWKt%WPVkZ@y-7OP*Q0PnbQ9UG*V=?v(Lkoyq&8VV)Mn`1I6q%`h&rr!Gj%|zMB`jRiU>~b`m z>by{YE5a!fu!6(WQq&Z@kmC1sL(Ep(E#d2uE%EEJyn2?f!Xc;NB6_^nl{XKc03T@m znP_AExTL~=5S938v@zldJ?4lvhUkE-Wt0ey%Vx7)e}6VK{eOiPfX%h4OT{FU|1nee z+S9DXr|B_rnO(zr3xb7x>lbNeq|_xNZn{JouWUa&@WtFu24%)^G}z9a;!(LDcIMrExUi z0AZ={=@B6P63;BD;K4Ga4-5_T8<#`i{-a#8aDxtfjiOWVEQ!n~joB*9My+B%4+l{N ztXiWXknkUvt95J`_A9b?%o}jd_6qdE>CZ?${JUO7Fz?Vbq3Txp#P^|R7I7&)WSIWpSWRCIU3$bI~gnWl#0eX{kH=;GS^ zi!INYw~67A0)ZL3 zI(1eqDcWQ2$v!n&tsdHtfJ15aS|f1;Sv*?JhR7w>PTBg)(J<*DlJ2JMAP_A`NHU5y zl@lYrRs*rX>S&K#d9fy*y0W4`ZRO-#QGi62WvOumM;h>dokb);q?>hS(%Nt z`n$}yXDNa&IL2|LA%x;cmgHm1px9T#ini1|3gFt|a$OOoD^p;=KzY>3iiexyHD(5&=JA*H$>M<4}exlTO8GXor4hRItvQ-8%s8D8^f;O&kgU(1o zvQ-kqQdy0U=QyLG6^vAflFki!qX|NZ+yyj`kr}5u*(Au$xd_BYGmVQNaDY;?3~Sah z49>0#Ne*HPi|VjweeGx26g$h9EM|;5s&4tb5Vt;p>gtG9%Wu4Z3zM#Xbe&cF1>J++ zVEqnTReMHY;{Ytd{dC;ZRP-$ORVFF+heY4kytHBGGpbNaF+IYVMx=c(gov9vFD*b8 zl3QVTg>G6RcG)#$Iy!x05IYeV%E7b)DHf{E#&RC3#D5zogjmKoq&e%D3+s$F>)-Ub zk{n%NfKPBw3Qku%o7i;8JSwV7B&gmvP>+HyCcYUA>W@x46N|9ybX+(e8yNoHh0(TN zX@p6v+PGr4E^}RC}2Afd1z%o2mPj zZLz^-V~M4a%f|(e)U&d+X179ms6xah(YsKV&%j4$0;!(Ctb=L}z~2T_ogl^d9R zZo>S`AgXz^ek3cN@Vhv{q`*ult}~$b5O(N@>y~*MkZF)VlBMOp6d^mWH%_~&1j0?F zG?-Q16z-JK^2xhYAxsD25>%&l*}FL+l9}8TU_w)ktBvcs9ihZ`(9HE#&BQc_N>8Zv6-8+4Cya!233Co`be`g=SU~pQj<|`qEZb#0P#nxX_I} z!W-qRrP7v%)J>tx!VY%LBO}|Ln(0W&s>tyzow*H{{%S%ftav0G$WaoJC4I{75wN%o zm^0VnX!-Pdi|v!tf!B_{xC~~pi9~{nK$ots3xu$=4?I_yN>s~CWxkwV{m~DGozpWe zSE~7=LgF>v`aP1m?B%PNK4>UPfK^al$~J5mRXF*Q=@`UOnOv-FwjzhP#>Wc1V;&$R z3IJ=_7V(o|p1u0TSHIQhSdB^bikX7g`rXi0G>bM_V(hN??lVq$$^LA1T<6NK zhhr$0MpLKov5Kh1@DX)w6cwRMuYOFu7K+2}v7{|VUX9nwqqE)Y=*@UD@;9Rcd$6g4 z<>Mt@qt~H*T~)2rxc8Rr;P#wEaF$U92BHmI*H983Tn3=6 z&^X?%eE4S@?*H>m3NuvAS51}r!!pc}>Y-h3&#f+96$khC4j`4fY?{SEIAYo5j=C7V zFfv&nD4H5nH^?T%m!eiyN25IH{$q6K2Q2?%FoN_QAp-`-PqZi#(P>YDi*i$es{Y}O z_BRTHG$ccdg=AF8Tk526VzpiUMoEe-r8)L~?GZ>Y;?}Ni-*d$_rTH(H)xR5{q7<5l z5qs?8{Z2^x^tZxOy0XKuDZJ4=mJ ztA(_sNEL2qGv3v*Q10?gp%z-R(&O)tp|w+1@>GPN&n>r=L3PQKbkl%1Bi%$(hhNkv zkD%2;dhaFxWuKTemsqDE!LC)AYdXRXjMC&m1);1vjb$I5CAW-|5}{$F$85>AI3W@2 zQ=UeBck>3$cnTm`Rjva#?fud#McvovwEQmWpUBFHQkt|xe&grGi_{xnFaoXMNCzF2 z6wae-$>-dMS%{R9jUl!h^r1T&d6a&RRg7@a*=}oW`j7sLus%&P@_A1Y}|i%MFa zQWF+SeO8`8knORvE&YC1ZIp#T%-+4yF=&xYJAW)dpiiI+&{&9)&W0J;VkgQiX<1IN z%+3=NH*pstw%U*;oQa`ewHYIXiXx1$=E>AU?iPf;Lx0pfO^`LSr-{p5dkXF&Bz1i~ zT=6OYSXosG-se+M1Fxll(nR)uyDGOpU=czQQs(;u34(--4o>W1 z8j5{{HTN$Xh!CPEvi$UTy!pPJwDDUQ%opnL5P=whG68{16OrZuTUyLueuB9Fn^JUD z7#FOZQ$PqIFZ`}ajcbgDv_Y^|uAdF7K0$&s4|^bdJ|6JBV!!Twv9aEk;)BHj3| zm@^m1w=iC*BCDNGy?0IlWisKfy4w|K6c=RyXvgG!#@T(uGck586!aX?U8F~!DQg`3 zu$A}os{TV=bMT%v)jHLeOM5ge6yVuY3MB8tXZY|-_1HPs15MBn!~qw+7UBi8U-HZm zF1x?l5A^*9AB#TXz)gSw)T%$s|Aw(2sqy{dj|Y(V>q<(@IPkX5nnuL&e2Y7pDv^D9 zFfN`I<8>XvF`h$ zuCplb0Do-bVZBr1I&!wN6Rza`&-IIKt=XducV{+Me{LU}iBN307 za{8TapHgQN2Wt$u+TNap>~6X{ zoW;!JrZYK>-|y!CJ&@_!%e$+ai+gEXOFJtY3;Q(Jww88QHWqeQvnVO)pdo;RhLrDJ zId)|ubj?^XWoZ<*fc#xJ5J+7dc5-%Q(NKo2I61vHpcA%0-szy>Fn~5Ym+?E^q_d4) zvoYvb;obnypX}@Iz=miYh-&y$f2V&8Eh=i4B1t}wQ|TRh#Mk(I2)fyfxp9{gB;#Ks zGy*`Wx`0$oK$eSnk_i<`$`_#f$WLD|!$4O7X0*6&G#mb;gjbotr#);{$qQuTO04=b zmU|-s%$@FZia&GZJh(!1&_ zePA-zyp+#c#8^_IFUq_b*OpB#S%0M_^0aQ%g&GSEmO7c~2`$;#h;f9nwk2;SUZRWp zZ_3!k0vO`2VG7S9VGdf=IFPKyS^H4CMnyxc(zgt#tHqXow}>OR{{7koBI=Lm@kE6( zm1T%+=VS~!4L()Kz0>-vobna-$2t%WcV-Oh_Cb4({LY~*WrsoNN?EqP5&58-Vj<_3FhvpzT>C@?4^#m&yS^I~#O2rS zZHc8`l_edcnc<`BB|6)*^xeIV!cVn=V1O;X;Ki>V$4z18KZ{!i0;}xWCteYk) z`HI4}^bwQz)su|bs7n-$rBVMBytI`OUvZt`nHoQMZL3s`BM~KbdOEk_tQ}s6u&>mg zcg)syF>B2^?o6B>;8n85Cq!?+5r__-g9V3u^vC2Grv>%8t;Vy4U*^=9yWI(T5MOe# zX1S~Ai1-%M3VTNEHm}*Dg{O5_ZB?5Dx!}UW%RboCgdDKUPS|)=#X=Bv_B_Xl?Y9N8Z>Y%WXZT)zp;H7scpv!ZfJJ(=!i_}nQ{u!- z%e}$7Xd5N&D(P_#Z4{uDv%45bd)9wh<8a>^?UPmrc!jP=^8i>&e4>zC9l>HiTKJ-z zSIRjDGy6LjxkV?2G0Jjj32tfwdU)@+4qm<6I5!3~$6rl&&+>%_Z4VrWM8is-cfJLNL+pS-uoN@?bKWG0A zk~KC!$t5^g#+XFRAR;!D@3)h!GsQaShl6bkwI`S$!xAjjj22-`o~5~0DT7qRT6}p} zcsL4F{dwD@Ub!pH2s~a7Dmx6|L^FzOHd2TDC)N6p1{tPgG{0=Tv{C{>W)vv!PRKa5 zYz1tjIN)xS5(QaKEP#cMIgYiNvFWYb5^ae?IyMZqu&H~ZrXe{+p~m*m?LjwAL^)P~ zH;}nH4ml*%ra~^JIfmpik-6oICDIls+KDy|R<8E5-PTJkDA`EPY#|8FqjL$&CfB!- zdsF3HmR70Dtzaq<+1an)WB;=2=SG%F*`?`nIaSu*&$QBXdAx3_6^g0&a5x_b|;x0h<+3d*c$kQ<%;hB+}_gVEteNzOd_ zE$uJkJO0s4oZ4s=R$8p{WNtY{Zv2FHG>5psq^S~t=e~;Smwde{%TwhPsUdOVLllqM z*CtZ-D9NhTMxuSgrARr`cn;oH@o+(KS++ulIb12b@p}TYc&L}UxJN7hTz)52KSqe*JsK^H@5I%*=%|+zP$%k2_RBdhXiJ|c4Z9lgL@P|`1#HH70pQtH6-uy8&BRKQmlP?V^OX>HCWp2_`^~yB5f}ViB zQ@rIk9qfk3F_DRy$t4C-%U`xBygj>++uqc z36;0&8uT$lsxyZl@yN~In<^5&IT-?}avpvvWa7!8@TyCBGBA^^b3PNg^*r0exDn^} z5YD^FK@hL;0O=Q7MY;=zL{ieU&u?x*vf3tjVjaJDyDy4dqeP;F_56hV)>mD7O|+xm zoa+f{c|?PWO&Qjwp7&@}NXrT!_s849$DkgRS&T@>%&WT*@p5ZHf0L~An?2KZB~$9T zQUqb;gdv;mW~`8T+=L}qpP?eKMICeWA`w#=X~7EF{%jRgpV6;PDSFTEzjH>`u^B$| zYGi7hCJ<3Tk9;9}=uc9WUxC-_8w0B`VVE*Bo$Kg>wR8#A?G-h+_YKfDufR^pg1X>b z`P?1AD3hrUFR4x(gHq?0DWg^lnbG1m=F&(&R-b(Dm%#XSSb%SvkUh0L1lz(^s!O z7Rg8Po7{dGIQEo#ORJ1q3#m0LofrzoL?%~Nb17ga*8OrX1HFfjjYCf`xuSwy ziz&nO@_ef@IF%@xqwZs!u1;qF#tn%%z|ImJ4+|)aPxJ_srkq=+o7hFW)*-NpMZjSA z6ZQ+_9_{7|N)x1>__(;x>GQI|Zj6q6AS{yQSyGA6`lK=m>is@{U@1Ll?n^oW+~co1 z1Bd{na#$krdI@}J;x(M~K46G&7a!QK+M6^J;nCP${Dgas7{~8SUeDiUgBR_0%AHqq&`~JI;k9~_BTCc$O+)BB8O|z72Cmy zfqNgkA=%@jL^`m+)6NBo46Z^~)6R9J%i*(bYe#xVuCz(EbKkIWJsCSo7lRugt#z>$ zXO#v0M0LpWP>Pa&p+m?x)%cn?_ixkedTeDXf0j5h0{^%Yja#nwz(`757OkA8kIC0? zj_}rQJPnJWjZ)n|Qa$;y@Z~TpqqCdG4U`+QB)v4QcT@eoXwQm|<=wnC$_cK=f6sbe zZO-#8oNIW@6)9#jyK13x^KuOEF1E-*a)clyjI2*qx(_Y z?{;Fpxs0X&20ZJSJ@;&47GY;CA>n;T9M0$yyUDUXm#2I6R>BNv8a=cu%=qS1eiVsecl-3mSCeMndsc7v&Sw#%0S!P=c zLLRAF`ZM$=R@Imu3B6fWrzC91$soOxSe?Bfuk$P=eclCIQvrK!?g>25g0{G<{I>eT zYptyNmwIS8wSjA`Amai^4ukJm<6`#dNTr3$bQ%X2Cti$LzrfZkFqk2+w?ODPvRN?INa+vMHz} z?V(XvisqsE_BBPoLQZwb{fbW^mAZbO+1<}7aWfy|n27H4UTPqRyNd?VT{n8NH2W!W z8UBIc>|dsuy|rzNSK^>$w#Kq6>rM)f`PfA zFSv&%tW#0Hq?n$-prA3vr${I4p#BT@0ZfhBa))Mj#%`vMA~{v=ie&7B4mvJaD* zvs=%GuOioz@?z$O)TG!PAD`76`fJj9{J7qv*5T?zOluZ#t|GLy_yW|zd>iR0^ZkIE z7%BZ37ZWB-8@)3js@FlG{cQB1fU6Lr)(e&>NJ4=LUN;AGvhoq~mDJ@`T~Bsi1`w!_ z&gT-qv}NrzjoHd99XqP4#Hxt6GF)X!hoPB^bNivamJ#_@g+4Z7FOA%)a+OD_(q3a)7)i2d?qrrcJ58EKh?876k?p{mx<_i|9Gketur&DI4G>z+N$Vo=Y31V z?wOR`!D^g(2SuI$g)H>@oUokU+}uKkQGO5<})C&Ff3eeBYxWN;w#vezh_ZrI574l@z5;4iXIfe@wRuHE$fnY)2 zbcW_9XNXDkLbq&$4h7QSb_KHo;W#)FCz#{WaK**5SIKu0v7&8qo00q?t@Vn80EVNX zzw9l;G-yL!PnME1J~W}B=ZMNp0FVO06Kj7O7Htp*s7A0EqhNb|?lzR{%rEgok6)<; z=HwZd0q`C{{v6 zPGse78CqjnL@p61br1T*4zL@4D#(3@4s{SH&|Q(zH=ffO$n-*V&JiA1I-pmBy8$L; z6^Tx4h(=SvxrFjrjZV+opc|TLmUJh;QSd~(%lKLv8M5e?w(%)GASu6+P6OGrh5ptl zi?O?T#Z#R2tt=Ny|NJmkko+E=kf7Es|{Z_xZ^Lo$u)>?OzB6J&T&Y=cl6aP#}BLHTJ10 z!-vW*#5{_`)tz`W$mpxr%#t zJU*P&h3omx?Vw4MD9u3@EVhUp>j!gB?>s5-G3q4U)TZo>&-1V<Qddoy8cz zijp-CmXYtVijC1*%mad3ZS7l(^W`^q!+qpdq!&}DSHCUbch^2&?se`%tB*Aw>C5F+XPfm8@G<`y|YaD7<{$D(eN5nz456qc$CLR#d zO`jTv3ndEQ0=1SJV;N*KmQX|lDD~b4e~u^uZU)wdfl{&j(?pZU!Kf5e50W@@R2`2$ zy5=62{{@3(UeG-MI`&>N$4GTmPyU2|+)|$oOK~I-q{&nml1b}ajhYzL{B5Z4{s-? zT&T{$@!OvV*52o|0QG|nk1ImmvWYzt%8Hk$i0M&+{|zJVy=uFoyK3wFd9Y}h3^H)N zy9lB{peSjb;3lG_T?;W{7YUU}Y}`t4nXc@D&gBA4;U8 z0yYRz)5e@`)F{8pqF+0YQy|ruOXfQb?Sd)R6qPa|gCL`ft(A zGvBb85%5`@A9bbBduuxyvTMHzhU%GYUe{Qz`?4~P8>HDk$f@m2!_g&0i}b&W%1ZQC60Z&PB`w1%_dKinlaH|E|ddbcuXwhskL!4tBJ&xoB2=-wE{fBhGOKhL% zwWoFrb9+QOOGzjSeEQ$#0_sKV-7{R1XQcadKa~~6+os^HSSCYuY%ebc?e}n1mZ$(?-9&U3fFAuhk}2u2 z@1l?3-;BLj=jysav&>v^qq*B(GBJ)J)l@cM10j5>pnJv5prZ}mXRc_MC^HB)e2sbh zkT_H0m?keG)q|!{fssJ!PC9Z|R@r1uovaAW-Zhi~Ixk zLAY>);I?=qV&{SFX4^bE_+u@@dOlajzF>Aychp6ujCy#~ljyB0Ld_6lXsWAXy!5-m zIh+3vC@HvE7QUp2jaySWvxU@nuHXTgW}$!O+MmOjrWQyLV_7v1VYG|9Lnd;+yFpEL z;*^x2dM>RpHcc>~5G%C9U=P8&g6y^ym9+|e1fIEV(PE{U-WRdsCn5VaLjN4JZVu=J zINmrhf1BlAQM16T_xkp~KY~xjJ||FZp(#9c-`XP#kFs)3vza;Guq}ti*TW%0h;oce z$*mw)ziPfM&jvCVn}UQ-Fk{)C(#@RCm7u z`9}N0!#xPqDQRC}g>nE8@Ja5tOeES$=In^R2ggrhsNDwIX>%8Me^%&9>VD>Wkv37h4Ik;rwtIWD8OvSg zwsD1~&Ng7BQ&80!>z{woa>BkGJtf^D!7K{DaX5c;M1T91B!4(Pu4R24srn=c1Xlus zN5agpak_gLOHYGWC<#!k_3t}c&jxSf>@)E|j3vC9@vN4&nXD4d89>2`_{PjnfS;Y4 zRYqPat3e_DK6A!H-}UHbE%lG+dr8$fmAIQh#UK5u*e7}U`Yn#VdcSsfx|{29gAj{0 zr5+a)8AZ|sGs$RrvDs&@N`{J&UyZ%2-!6-XSr+jDYs&?zdZM4`>6R~dXwiNZ-v!T*!uPP9_sgNF<_`bzIOSOVTRG&rbeeq!%quf=;virHrkl3<4DhyP$9HE39#_liNBU5cXy{(XL z?nI`ly;9ox61{6S!?cSzRCE8RbEbnAK6$_C>erhmEP^o(Om^%w!4Cr)F@bHFox$uL zfLP9@VX`p*uSnE_ympyjm`?In)6xuqd^!`V#AG> z**tA|R?!?3W{Rj}&b@WN#I+^%VEE_f(e3-`T#V)ES1k!swhOw2*~TzFL7qode-8kG z^})#_X1>F7n}x#375WofZhJ_Od2M<5Q(OOs8s3Ci($9762mYBgq~r)}v_UWi8VJAD zZss{)IdW6>`QSK`%=RWFN_gVAw3C6y|D(;?=C|W>;dINc(EhXv*ukDo{u89sOlh#ZdvB==#FbW9tGO*=UzWLL^9IjwV`o(jqV&%Yy>Oomgx zGw^)B*aS6F=JZCHs8vu=i>8gk+I7h{+x&zExNBoF9nR+e1gRHR=>5j@Eg5m;yy6G~o43KWwuSxN=G-m`v zLF)eoUI4xj0AN-~R!S0x73AE9lk-?F4-YT=By;N0^wib!PbLSKCq$QZ4)v{I&in=E zRIazT3YLW;n&H|4$W&`ob~+q{`9U#>jnW^*>yhYdm+~nheg^Vl2A^i7W({!vq?v@E zh=%;hwIM_V3PbOodcSbr>dI6ILYRLwGU?D&y>ZAR+jRd< z(YJqiujYe5_4s{T@Hu3Iehb?6x27D+ykzzbc!lRa4{r0jczJPM*mhLAp>=b4Suo4J zZotjnOx~h93xEYkMUpf?U~3CUp>jQa7V0YvaqSDw-5{-po^Jd$=Fs;UXGVbxx^@fI z!AJ-0pw+4R4F^t{;)vx7eNlgpbt_xt#BkoJ%_F_Zq{Q5B_GRz;CbzqFFxpkuI%GVK zPN2)LZRVzi^$z6a*iROdB;-X;D9ElGo)7*XP_HJhLDkapkAm?Gbo{rmaVY%)Xh$lG zOUST)uCf@ZvPrmXu~E$CMlbEA!j@D?b8=ibB&(^76jWv@1|;d~Slu7$vPEaPDBJl*;R}^Wb@>Wr)^QSbTyipTJb6b$l_5HX(q@9??`2QNtdOc2TfL;ApZjv=36_73rh_KSjr{Yzs0C7?p%BK>{DUB4oLi5p*znFrAN`UR zSV6{?{|NtxEhn$=PW6}M4ZMtXbyX3(e-9<5q#ynv{`0$3^^itQk{5A3XSK(ug^@P6?AK4?X|I)lM^%7r_6gLJtt2($MgHhaIG|@ zT$1K7Yj=X`zpQU&yoq(MY8w7ZUB}vwU!Rebu^vyDk6-nC9IGl^za=hp|4RC>3lF9I z^rZ0)3!#|zdfworyXXfv8~$nC@wBnC{He??qfh?b2)`gBIb(rP^e?6T+fq?H{_~Zr z+&oeC+g^#Hof~#5&gDLX?__K&)WC#2@bT5LRA+Wk7`nHn_HuyJcjL~rOpty0Y0gEi z>zGUb7iL}CC-G;=F`4lR(UEy+@rnr9=2!jI8ll5p=k0j%S4L{xucO=^3r$}uZI2{E zlQ-62FA~^WWH^kbx*DRrK_ZQhKwe+|JFDBi~YY@MWyHY(Pz3klIBK@ncBzvV+ z_V5-{)%{)eN-aHDs_u7av9A1Is{-1;YhAQN?r&|hcfA*}&~zXb(Eg#ruJZo{70~{n z!#V%=U|cHy4^aW_pVaXe&&vNjDxm#CH}c{7|Lp2x5K7bhUyfco?gP+ z|1+s~DQ&9T_1Jd4eb~MA86*Zgbo8-ZcVj*K3An`o0H>_Jy01yv>T|7nJl62i>Z>Ja}7&tS$(%;4kVS$I=+!z%bA2f>rO=c@jzZZ`e_x`N zS0TGht$&^yw4eU+&r1+k*c8-tZ6DMP#af_VZx~B|r)%nvJTbKxsT({k)T0790~7~w ztwI5goXv@H-u$XImU8vg6gE&dV8|R0P%@QxHc&TsTBt_=>R3R`Hto1Nq#U7`Jvh7S zL=RP|jlJKyYLsa`**j{G8NJazZ?yX1>CQ#hF?#Xj{AW-ic!sNC;D`Qt?3SW22EQo< z9K{O(pM^#wiL<-gVe}jV@6Lpd?KZ^4ahQAbc{(3G8WI)D$-vxQz|>0<`jCn=kkg6p z2$7yLk&t$ewhOz|8^N=gkNV_{2Dly75LmCJdt<1>n+AlE+T;&U!pQ5ToK|XWyXqhaYx3G?1_Eo<9BkcU5;N@z9K}k&F&~ zz!pBBe1+mSv_B7TZ&#}^^x5$J_oGng+kvOz+YrJ_7N9Dyqh|uCgfW<0+D3CBz-}b2 zaxAX)HOPe4pHnHpgjUGpGlbaC{2vW&krL2L2U?DFY3i%prg1tDyB1q-5o|K)MdKH| z(ILjnnmY-HA9=8sJ9R21GeXuRh22Y3whJ2~moUs>jT`_!C->AIo57mHDyWLlp=U>( z@@UoU$nM$BT-p%0@0ez?8ohqQnWosAi4nmFV`vlPCEJNNFHp&s%dp$*AErHzi zgto7cP*g`~i^0wgaBu`f5bEA~bUkw`8L55=Av$Mc9e3oJmXkt_l!~ksj-9v)rgAER z7DDN4Y#mxMahm#EP3|7l|3{YHs-ty>T_h_rE3XJWQKwx+8pgm+Lr6q@*Le@4%nd2+PNwC2(Q|&WZ`ffVFfdm$;N`z&(KX@D4qI1N9Fe036gT8Eh5dWO3l7o?e*( zq_7iv>hCTRoq2ata}f`f(gI5D==XFzD1kNS88igRW-<~vp}wcr;L9>63sQIs&>+C3 z6`B08KXas%K(K2BeTJQ3NgC-K@i|9EkK%i63@K%aK#oh*%oy^@Y{3v@JKHYcW@>A4 zlk^wHS5;!*d+qi3mxdc{{QR*p>G1F)7y}I#<8q`?JGQDYSEk6kkK3I_$7tLWM#d;a z2yl3mXz9{n9;ETBlT}%!a0ZV9%*T3#E$Gd7A%m(jHl5=xcelVsx(BAw`ZO?5UR@|9 zght*$+e>|{7&(`lz8zb*Y0aLaQCLSoimK32TU!U zWYGpZ70FJ&fl>W_{23p9n~z6y(Kk76*6Rk#>anpxSc4^ED-Sl<17(O<1+HY7HhI3= z>n*28Qr*-XjKZ zqSK<$NZbbqpu*59W|I+&+^bapsx;LyoYGq>A$6HOqOZDbLKp6t!XLJ@uQaXVtOSBL_g6!L_f^WdI&p$D+{_a}7sOv45NhwGv z$D#vTh%0a<01N_%Q&T19N4jcNk(JIaYz21CBGQ1FW*MAeZ9$hhKm${`@2V+_5^QH# zOxqxg<6uRF_pC|wLZc1&7md5;&4ugHb7OiCd?otRypb34tE&r1Jf9*)4WnL;Q`6XL zywXc|S#HK7W8v7F`NzHrWOo|INUw=4fKBrUJ0hGLjBGIj{IBEU+39Xq+q-L!H+OSaU)`Oe zQ`FlR;2^_%fccXdU%;R_+69LOCdlu-S=$vG-uI~|Ua9wZw(>FLOWQ4C5~*#Br`i4N z#6fET-4k&a+t=%eG1&yR<|dI;lY2O2o1}J}+4<)xQuUYG!R2KbG6SEkF@I`ur;6PI zZq15#O}9iF=o9!0qeuONtzXa*RToM$C=(nU@C;}te7cOcILr>0VITBh2v$^kdUIXq zd^RWw-TUT2{-gHH0bkmcK&Z;qiMvUF&*aO86(Fn9#bObUtM@> zMJTKt(JRHuiVz?>q2TBmGY2#_7a7b3A=Bfnwv+}gF7a{Go7uE+^I`)pH?8B&rfmCM z+_bjGgN0dL^1|dSgu*NYQscq;e7Tj|riLpJrLLp zS7@@^_mj|=T}-yZtyI(29<@>{dM=)p6m=XSxCOD>NcnGk7uQk5xLpX7RuDF8l`{?b znIrPE0m#qV*l~Hex)d`8d2@ou&m79ope)^n#vZ9DdrO3npCusQ3>5vQ2lZ;D=m7j2 zBl67+X8w?!0;=-^1ddUsB^1XYb$44k_e#Ikr1dMnTflvQ3qSxpou_Hg=S7^mr(-hw z1mFtrJy2oT&N!R$zBkzbXq%8V6*tla;%Y`CDy<0HOt^;t0RmeALK%UC0(dpU6{3P3 zTq+wD*Coy!93_EcSAdVL%IoIYky0ZES3eX20GPw-rG?2ew(b6;fLWUdyG+i#9HZh# z>BC>+VQcB)g#nMwhZ+5gMpQ<3|9`ALsJ$Ou7`GE(6t*j6N9DI5>2) zCWlk=1Sl3W?9U)d3)&VmFy!44}Tz3r+-dn zQRP3Y4p%zg^thU!>)Y81`4>k2F~T`l#iZ+HwusS;VAL{ZO(Li;vSv~d-h|_fJ#it_ zD@xVhFKS&sI5V+PlMNpp*oRH@#Ew*KWL5PJ-1qe5>DwvQ7uk2sBjjPc`qPh9bulf~^P_n2BAh-$02i{V|}Ab@(2H4B*rzt(*4XXx4Uwp&;=9c0&L# z6rwW~X-mO1^g->3gMonJpaghSwloxc^T5W)&r}8hz`v-!v<&B(3QV#|0JFv@xn$|> z9h1N|L!;g&cAT-P#7qJ`yFas0xO8DNjb~N70v(6rsdT8{I<8CH0X>sOG~8k)Te(uL z+A2-5*m5begXbB1*t8co@@t*Dnt7Jmm$(qfQbRw~NR4QXic}e>M7&xW)w;+SMQORGQiifoRNQ6b0S`OXQS#_%P(o7{bpw7j zxN8VjaTl1lf`V!rn0@&Sqk9TUQj};hAt3gH+(p7DlP0lLY0_U0s$_|r;lHbSWbD{; z;K+$H7p~m6^C0KRi#G)yzWn$Lpwy2_e};@0Ghxb%ISZDoa7gLdZI2N8wy-8*gNw4? z0ekJ!>5OBJ+hntLq%|aX_y!1)uaJR2M?wNy0j-JJOf|(c%dIdj6rw?Z7OaTSM{|AB zfniJRv`N-FYJ6BQ0m}j>3^Z7kL26W6rB=5(8V%~*)2P`HO<}`O!;CP}aI1~7%VZz4 z7;TJJy$-qHoMPLQ*lw26aG*<>^DesNvMa8-rrdQmRJdif9d>%}wmT}_)#JBp<0UgDj=iJkw*%B2Sd6JXLG7I!hNWt*mWq?OfT@de;UA zHz9oP+LA^1yKmne1BUEbPU-7WPJQ)3Gs%!~0&f~n(GMJ95>Rc#er!M+qy zT@CfBsa6fAmZ++l3f0w6ubOJvxkW1VtT@&6HNV~YAUpl5>D$q8VGm8jzQk zU(k(&pAU!L%;fB0Q#fUv#hsQ=k*WCrFXZ3nd+XmPb}<>G=GwMrBU-eJ0$9I@TQ447 zyq{0cTW9UlzLV*3-_bPpXYRxuxx>DL>3-kdbhmG3y4|-m&04B`;P%{(+j7d~YWo)g z0&qZl11;OHqH5HKs9gb{zExvQU-Mxh#2XFm^2#N|SMK|lFJX0~k2g*CYXA@3qo3@s R;$T5nL-p?z%LdxSxC2frlW_n5 literal 0 HcmV?d00001 diff --git a/website/assets/fonts/ibm-plex-sans-latin-600-normal.woff2 b/website/assets/fonts/ibm-plex-sans-latin-600-normal.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..08c0d5adcbdd87d740ed91568f9836134c84bdfb GIT binary patch literal 24252 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 literal 0 HcmV?d00001 diff --git a/website/assets/img/favicon.ico b/website/assets/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5fc7bdb9f38a4f78720fa2bbff05d7479bdff08f GIT binary patch literal 7394 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 Knp*x(6#XA#9K8kr literal 0 HcmV?d00001 diff --git a/website/assets/img/favicon.svg b/website/assets/img/favicon.svg new file mode 100644 index 0000000..8a8530e --- /dev/null +++ b/website/assets/img/favicon.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/website/assets/img/og.png b/website/assets/img/og.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9247d6404c07845959a72bf13570d0d9c02c20 GIT binary patch literal 75462 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%0A4LT62InPZ>?wZu03?ijc+SF>K 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 literal 0 HcmV?d00001 diff --git a/website/assets/js/app.js b/website/assets/js/app.js new file mode 100644 index 0000000..b9c5fa3 --- /dev/null +++ b/website/assets/js/app.js @@ -0,0 +1,37 @@ +/* Git It marketing site — client behavior. + Progressive enhancement only: the page is fully functional without JS. */ +(function () { + "use strict"; + + /* (a) Sticky-nav border: add .is-scrolled once the page moves past 8px. */ + var nav = document.querySelector("nav"); + if (nav) { + var onScroll = function () { + nav.classList.toggle("is-scrolled", window.scrollY > 8); + }; + onScroll(); + window.addEventListener("scroll", onScroll, { passive: true }); + } + + /* (b) Scroll reveal: fade [data-reveal] elements in as they enter view — + only when the user has not asked to reduce motion. Otherwise reveal + everything immediately so no content stays hidden. */ + var reveals = document.querySelectorAll("[data-reveal]"); + var allowMotion = window.matchMedia("(prefers-reduced-motion: no-preference)").matches; + + if (!allowMotion || !("IntersectionObserver" in window)) { + for (var i = 0; i < reveals.length; i++) reveals[i].classList.add("in-view"); + return; + } + + var io = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + if (entry.isIntersecting) { + entry.target.classList.add("in-view"); + io.unobserve(entry.target); + } + }); + }, { rootMargin: "0px 0px -10% 0px", threshold: 0.1 }); + + reveals.forEach(function (el) { io.observe(el); }); +})(); diff --git a/website/guides.html b/website/guides.html new file mode 100644 index 0000000..41e5983 --- /dev/null +++ b/website/guides.html @@ -0,0 +1,197 @@ + + +Git It — Guides + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ OP // GUIDES +

Guides.

+

Two short briefings — get Git It running, then bend the timeline with confidence.

+ +
+ BRIEFING 01 +

Getting started

+

Install prerequisites, grab the build, open your first repo.

+
    +
  1. + 01 +
    +

    Install the tools

    +

    Run xcode-select --install — this gives you git and python3, the two things Git It expects on your PATH.

    +
    +
  2. +
  3. + 02 +
    +

    Download the build

    +

    Grab the signed & notarized .dmg from the latest release — Apple Silicon or Intel, whichever matches your Mac.

    +
    +
  4. +
  5. + 03 +
    +

    Drag into Applications

    +

    Drag Git It into Applications and launch — it opens with a normal double-click.

    +
    +
  6. +
  7. + 04 +
    +

    Open your first repository

    +

    Open a repo from the app and explore the commit graph.

    +
    +
  8. +
+
+ +
+ BRIEFING 02 +

Commit-time editing

+

Shift, set, or compress commit times — with a preview and one-click undo.

+
    +
  1. + 01 +
    +

    Select a range

    +

    Select a commit or a range in the graph.

    +
    +
  2. +
  3. + 02 +
    +

    Choose a mode

    +

    Pick Offset (shift by a delta), Exact (set a specific time), or Compress (squeeze the range into a new window).

    +
    +
  4. +
  5. + 03 +
    +

    Preview

    +

    Preview the result before anything is written.

    +
    +
  6. +
  7. + 04 +
    +

    Apply

    +

    Apply — a git-bundle backup is taken automatically first.

    +
    +
  8. +
  9. + 05 +
    +

    Undo if needed

    +

    Changed your mind? Undo in one click.

    +
    +
  10. +
+
+
+
+
+ +
+
+ + +
+ + + Git It + + · + This site collects nothing — no analytics, no cookies, no third-party requests. + · + Bundles git-filter-repo (MIT). + · + Made for macOS + · + © 2026 + · + git-it.app +
+
+
+
+ + diff --git a/website/index.html b/website/index.html new file mode 100644 index 0000000..66bd338 --- /dev/null +++ b/website/index.html @@ -0,0 +1,875 @@ + + +Git It — a native macOS git client + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ ◇ native macOS git client · Apple Silicon + Intel + +

+ Bend the + timeline. +

+ +

Commit-time editing — shift, set, or compress any range. Preview, then undo.

+ +

A fast, native git client for macOS — commit graph, branches, merges, per-hunk diffs, remotes, and a built-in GitHub dashboard. Local-first: no account, no analytics, no tracking.

+ +

Real app, shipping — see it on GitHub ↗

+ + + +
+ No account + No tracking + Native — no Electron + Auto-updates +
+
+ + +

Diagram: a commit graph with one commit's timestamp being rewritten from 14:22 to 09:05.

+
+
+ + + +
+
+

Why Git It

+
+
+ 01 +

Commit-time editing

+

Reshape when history happened, right in the client. A rarity in any git GUI.

+
+
+ 02 +

A safety net for every rewrite

+

Automatic backup (a git bundle) + one-click undo before any destructive op, plus a reflog browser.

+
+
+ 03 +

Local-first & free

+

No account, no analytics; native (no Electron); source-available for noncommercial use.

+
+
+
+
+ + + +
+
+
Platform
macOS 12.3+
+
Architecture
Apple Silicon · Intel
+
Engine
Rust · Tauri 2 · Svelte 5 (no Electron)
+
Price
Free · Source-available
+
+
+ + + +
+
+ + +
+
+ OP // GRAPH +

Read history at a glance.

+

Multi-lane commit graph with curved or angular edges, ref badges (branches, tags, remotes, HEAD), infinite-scroll loading, right-click checkout / branch / tag / fetch.

+
    +
  • Curved & angular lanes
  • +
  • Ref badges — branch · tag · remote · HEAD
  • +
  • Infinite-scroll history
  • +
  • Right-click: checkout · branch · tag · fetch
  • +
+
+
+ +

Diagram: a multi-lane commit graph. The tip commit "ship: release v1.0" carries HEAD, main, and origin/main badges; a second lane branches and rejoins with green edges; the base commit is tagged v1.0. One row is highlighted as selected.

+
+
+ + +
+
+ OP // TIME +

Commit-time editing.

+

Select a range and shift by an offset, set an exact time, or compress the range proportionally into a new window. Preview before it rewrites; undo in one click. Powered by a bundled git-filter-repo.

+
    +
  • OFFSET — shift the whole range
  • +
  • EXACT — set a precise timestamp
  • +
  • COMPRESS — squeeze into a new window
  • +
  • Preview → apply → one-click undo
  • +
+
+
+ +

Diagram: a vertical timeline of seven commits, each with a timestamp. A bracket labeled SELECTED marks a three-commit range; two of those commits show their times being rewritten — 14:22 to 09:05 and 11:58 to 08:30, old times struck through, new times in green. A REWRITE control offers three modes — OFFSET (active), EXACT, and COMPRESS — with a delta of minus five hours seventeen minutes, and a PREVIEW / UNDO strip below, noting an automatic backup bundle was written.

+
+
+ + +
+
+ OP // MERGE +

Integrate, and resolve.

+

Merge (plain or --no-ff), cherry-pick, and revert — with an in-app conflict resolver: use-ours, use-theirs, continue, or abort, file by file.

+
    +
  • Merge · cherry-pick · revert
  • +
  • Plain or --no-ff
  • +
  • Resolver: ours / theirs / continue / abort
  • +
  • File-by-file, in-app
  • +
+
+
+ +

Diagram: two branch lanes, OURS and THEIRS, converging into a single merge commit that reports one conflict. A conflict resolver panel for the file src/app.rs shows the two conflicting versions with use-ours and use-theirs toggle chips (use-ours selected), plus continue and abort controls.

+
+
+ + +
+
+ OP // REWRITE +

Rewrite history — safely.

+

Soft/mixed/hard reset, amend, rebase-onto, and interactive rebase (reorder / squash / drop / reword). Every destructive op takes a configurable auto-backup (a git bundle) first, with one-click undo and a reflog browser.

+
    +
  • Reset · amend · rebase-onto
  • +
  • Interactive: reorder / squash / drop / reword
  • +
  • Auto-backup bundle before every op
  • +
  • One-click undo · reflog browser
  • +
+
+
+ +

Diagram: an interactive-rebase todo list of five commits, each with a drag handle and an action chip — pick, reword, squash (highlighted), drop (struck through), and pick. Below, a green BACKUP CREATED confirmation names a pre-rebase git bundle, alongside a one-click UNDO control.

+
+
+ + +
+
+ OP // DIFF +

Stage exactly what you mean.

+

A working-copy file list with whole-file and per-hunk stage / unstage / discard, syntax-highlighted diffs (unified or split, highlighted offline via bundled Shiki), a commit composer, and stash.

+
    +
  • Per-hunk stage · unstage · discard
  • +
  • Unified or split view
  • +
  • Offline syntax highlighting
  • +
  • Commit composer · stash
  • +
+
+
+ +

Diagram: a side-by-side split diff of a file. The first hunk is unstaged with a STAGE chip: a removed line "timeout(30)" in red on the old side, and two added lines "timeout(60)" and "retry(3)" in green on the new side. The second hunk is already staged (STAGED chip) with an added "fsync()" line. Below, a commit composer shows one hunk staged, with commit and stash controls.

+
+
+ + +
+
+ OP // REMOTE +

Push, pull, and GitHub — in one place.

+

Streamed pull (merge or rebase) and push (--force-with-lease, --set-upstream) with live progress, cancel, and an ahead/behind indicator. Plus a built-in GitHub dashboard: pull requests, issues, releases, and CI runs. Credentials are prompted on demand and never stored (a transient 0600 file, deleted immediately after).

+
    +
  • Streamed pull & push — live progress
  • +
  • Ahead / behind indicator
  • +
  • GitHub: PRs · issues · releases · CI
  • +
  • Credentials never stored on disk
  • +
+
+
+ +

Diagram: a remote sync readout for origin/main showing an ahead-by-two, behind-by-one indicator, a streaming git push log with a progress bar at 69% and a cancel control, and a note that credentials are a transient 0600 file. Below, a mini GitHub dashboard shows a pull-request chip, an issue chip, and a green CI-passing chip.

+
+
+ +
+ +

Also — open several repos at once, as tabs or a sidebar list, your choice.

+
+ + + +
+
+ OP // DOWNLOAD +

Download Git It.

+

Open the .dmg, drag Git It into Applications, launch. It keeps itself up to date after that — with an optional beta channel in Settings → Updates.

+ + + +

each runs fully native; in-app updates track the right build.

+ +

Signed & notarized by Apple — opens with a normal double-click.

+ +
macOS 12.3+ · needs git + python3 on PATH (xcode-select --install)
+
+
+ + + + + + + +
+
+ OP // FAQ +

Questions, answered.

+
+
+ Is it really private? +

No account, no backend, no analytics. Your repos and credentials stay on your Mac. The only network calls are the git/GitHub operations you trigger, plus a version check for updates. Credentials are prompted on demand and never written to disk beyond a transient 0600 file that's deleted right after.

+
+
+ Do I have to bypass Gatekeeper? +

No — the release is signed and notarized by Apple; it opens with a normal double-click. (Only self-built ad-hoc copies trigger the Gatekeeper prompt.)

+
+
+ Why macOS only? +

Native vibrancy and title-bar handling are macOS-specific. Apple Silicon and Intel builds are both fully native (no Electron).

+
+
+ Is rewriting history safe? +

Destructive ops take an automatic git-bundle backup first, force-push is always --force-with-lease, and there's one-click undo plus a reflog browser.

+
+
+ What do I need installed? +

git and python3 — both from the Xcode Command Line Tools (xcode-select --install). git-filter-repo is bundled.

+
+
+ How do updates work? +

In-app auto-updates, with an optional beta channel in Settings → Updates.

+
+
+ Apple Silicon or Intel? +

Download the .dmg that matches your Mac; each runs fully native. Updates then track the right build.

+
+
+ What's the license? +

Free and source-available under CC BY-NC-SA 4.0 — use it for any work (including at your job); you just can't resell or repackage the app itself, and forks stay under the same license. Not an OSI open-source license.

+
+
+
+
+ + + +
+
+ OP // COMMUNITY +

Built in the open.

+

Git It is developed in public. Read the source, file an issue, or open a pull request — everything happens on GitHub.

+ +

+ Source-available under CC BY-NC-SA 4.0 — not an OSI open-source license.
+ Contributions welcome — accepted under the project's CC BY-NC-SA 4.0 license. +

+
+
+
+ +
+
+ + +
+ + + Git It + + · + This site collects nothing — no analytics, no cookies, no third-party requests. + · + Bundles git-filter-repo (MIT). + · + Made for macOS + · + © 2026 + · + git-it.app +
+
+
+
+ + diff --git a/website/robots.txt b/website/robots.txt new file mode 100644 index 0000000..044a05d --- /dev/null +++ b/website/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://git-it.app/sitemap.xml diff --git a/website/site.webmanifest b/website/site.webmanifest new file mode 100644 index 0000000..5622aaf --- /dev/null +++ b/website/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "Git It", + "short_name": "Git It", + "description": "A native macOS git client.", + "start_url": "/", + "display": "standalone", + "theme_color": "#0A0C0F", + "background_color": "#0A0C0F", + "icons": [ + { + "src": "/assets/img/favicon.svg", + "sizes": "any", + "type": "image/svg+xml" + }, + { + "src": "/assets/img/apple-touch-icon.png", + "sizes": "180x180", + "type": "image/png" + } + ] +} diff --git a/website/sitemap.xml b/website/sitemap.xml new file mode 100644 index 0000000..fe6564a --- /dev/null +++ b/website/sitemap.xml @@ -0,0 +1,13 @@ + + + + https://git-it.app/ + weekly + 1.0 + + + https://git-it.app/guides.html + monthly + 0.6 + + From 422f8c1e26ae3263f08e9e3c5165c57e72c3802d Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 11:05:01 -0400 Subject: [PATCH 08/76] ci: deploy website/ to github pages on main --- .github/workflows/deploy-pages.yml | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/deploy-pages.yml diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml new file mode 100644 index 0000000..cb95930 --- /dev/null +++ b/.github/workflows/deploy-pages.yml @@ -0,0 +1,36 @@ +name: deploy-pages + +# Deploys the static marketing site in website/ to GitHub Pages whenever it +# changes on main. Requires Pages to be enabled with "Source: GitHub Actions" +# in repo Settings -> Pages (one-time). Runs on demand via workflow_dispatch too. +on: + push: + branches: [main] + paths: + - 'website/**' + - '.github/workflows/deploy-pages.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/checkout@v4 + - uses: actions/configure-pages@v5 + - uses: actions/upload-pages-artifact@v3 + with: + path: website + - id: deployment + uses: actions/deploy-pages@v4 From 2a32832c43f39102b68f69b5271456e75038982e Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 11:31:07 -0400 Subject: [PATCH 09/76] chore: license under CC BY-NC-SA 4.0 (source-available, noncommercial) --- CLAUDE.md | 5 +- LICENSE | 481 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 10 +- package.json | 2 +- 4 files changed, 494 insertions(+), 4 deletions(-) create mode 100644 LICENSE diff --git a/CLAUDE.md b/CLAUDE.md index eec71b6..ee39485 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5,8 +5,9 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **Git It** — a native macOS git client (commit graph, branches, merges, rebases, working-copy diffs, remotes) with first-class commit-time editing. Also hosts the headless **agent** that lets the sibling iOS app drive local git remotely. Tauri 2 (Rust) + SvelteKit 5 (runes). -macOS only; window uses native `NSVisualEffect` vibrancy (glass panels). Private; `UNLICENSED` -— licensing is intentionally undecided, do not add a LICENSE. +macOS only; window uses native `NSVisualEffect` vibrancy (glass panels). Licensed +**CC BY-NC-SA 4.0** (source-available, noncommercial — see `LICENSE`); **not** OSI +open source, so never describe it as "open source". ## Commands diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0b0305e --- /dev/null +++ b/LICENSE @@ -0,0 +1,481 @@ +Git It +Copyright (c) 2026 Ash Shah + +Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 +International License (CC BY-NC-SA 4.0). The complete legal text follows the +plain-language summary below. + +============================================================================== +PLAIN-LANGUAGE SUMMARY (a courtesy explanation, not a substitute for the +license text that follows) +============================================================================== + +You are free to use, study, modify, and share Git It, under these terms: + + * Use it for anything, including your job and commercial projects. + Running Git It to manage your repositories -- at home or at work -- is + fine. The "NonCommercial" restriction is about the software itself, not + about the work you produce with it. + + * Don't commercialize the app itself. You may not sell Git It, repackage + and sell it, or offer it as a paid hosted service or paid API. + + * Attribution. Keep the credit and this license with any copies or + modified versions you share. + + * ShareAlike. If you distribute a modified version, license your changes + under these same terms (CC BY-NC-SA 4.0). + +Want to use Git It commercially in a way this license doesn't allow? Open an +issue to work something out. + +Git It bundles git-filter-repo, which is licensed separately under the MIT +License; its notice ships with the app at +src-tauri/resources/git-filter-repo/COPYING.mit and is not affected by this +license. + +This is a source-available, noncommercial license. It is NOT an OSI-approved +open-source license. + +============================================================================== +FULL LICENSE TEXT +============================================================================== + +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/README.md b/README.md index 778f7c9..2dc9f4b 100644 --- a/README.md +++ b/README.md @@ -125,4 +125,12 @@ For zero-friction installs, sign with an Apple Developer ID and notarize — `ta ## License -Not yet decided. Until a license is chosen, all rights are reserved — please don't redistribute. A license will be added before any public release. +**Free · source-available · noncommercial** — Git It is licensed under [Creative Commons Attribution-NonCommercial-ShareAlike 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) (CC BY-NC-SA 4.0). See [`LICENSE`](LICENSE) for the full terms. + +- **Use it for anything, including at work.** Managing your repositories with Git It — personal or commercial — is fine. The noncommercial term is about the app itself, not the work you produce with it. +- **Don't commercialize the app.** No reselling, repackaging-and-selling, or offering it as a paid hosted service. +- **ShareAlike.** Distribute modified versions under these same terms. + +Want a commercial arrangement this license doesn't cover? Open an issue. This is a source-available, noncommercial license — **not** an OSI-approved open-source license. + +Git It bundles [`git-filter-repo`](https://github.com/newren/git-filter-repo) under the MIT License; its notice ships at [`src-tauri/resources/git-filter-repo/COPYING.mit`](src-tauri/resources/git-filter-repo/COPYING.mit). diff --git a/package.json b/package.json index 3cdfbd1..2c9549e 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "test": "vitest run", "test:watch": "vitest" }, - "license": "UNLICENSED", + "license": "CC-BY-NC-SA-4.0", "dependencies": { "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2.7.1", From ffbb05b05f495241c28b2137fca4d5ed55bd54f7 Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 12:16:46 -0400 Subject: [PATCH 10/76] docs: add DESIGN.md documenting Classic + NERV design languages as app themes --- DESIGN.md | 375 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 375 insertions(+) create mode 100644 DESIGN.md diff --git a/DESIGN.md b/DESIGN.md new file mode 100644 index 0000000..b906a3a --- /dev/null +++ b/DESIGN.md @@ -0,0 +1,375 @@ +--- +version: alpha +name: Git It +description: >- + Design language for the Git It macOS git client. Two themes share ONE + semantic-token contract so users can toggle between them at runtime: + "Classic" — the native-macOS vibrancy UI shipping today — and "NERV" — + the dark editorial console language from the git-it.app marketing site. + Components reference semantic tokens by intent; switching theme swaps the + values behind those tokens, never the component CSS. +# NOTE: the DESIGN.md standard is single-theme-per-file. This file extends it +# with a `themes` map so both appearances live in one contract, which is what +# the upcoming theming-system work needs. Values below are the CANONICAL +# (dark) values; Classic's full light / dark / glass triple and the complete +# graph-lane palettes are in the prose "Colors" section. + +spacing: { xs: 4px, sm: 6px, md: 8px, lg: 12px, xl: 16px, xxl: 24px } + +themes: + classic: + colors: + bg-app: "#0f1115" + surface: "#1b1f26" + surface-raised: "#181b20" # popovers / menus / sticky headers + surface-header: "#1a1e24" # toolbars / section headers / gutters + surface-input: "#1a1e24" + control: "#2a313b" + control-hover: "#353d48" + border: "#353c46" + border-subtle: "#20252c" + text-primary: "#e5e7eb" + text-secondary: "#9ca3af" + text-tertiary: "#9ca3af" # Classic has two text levels; tertiary collapses to secondary + row-hover: "#1c2027" + row-selected: "#1e40af66" + border-selected: "#60a5fa" + accent: "#3b82f6" + accent-hover: "#2563eb" + danger: "#ef4444" + warning: "#fbbf24" # detached HEAD / status-modified gold + success: "#3fb950" # status-added + diff-add: "#3fb950" + diff-del: "#f85149" + typography: + display: { fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif", fontWeight: 600 } + body: { fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif", fontSize: 14px, fontWeight: 400 } + mono: { fontFamily: "ui-monospace, SFMono-Regular, Menlo, 'Cascadia Code', monospace", fontSize: 12px } + rounded: { sm: 4px, md: 6px, lg: 10px, pill: 999px } + nerv: + colors: + bg-app: "#0A0C0F" # --void + surface: "#12171C" # --panel + surface-raised: "#0E1216" # --void2 + surface-header: "#0E1216" + surface-input: "#0E1216" + control: "#0E1216" + control-hover: "#14181d" + border: "#2E3742" # --line2 + border-subtle: "#232A31" # --line + text-primary: "#EAE6DA" # --bone + text-secondary: "#8A94A0" # --haze + text-tertiary: "#7C8794" # --haze-dim (AA on --void) + row-hover: "rgba(242,84,45,.06)" + row-selected: "rgba(242,84,45,.10)" + border-selected: "#F2542D" + accent: "#F2542D" # --orange (the lead accent) + accent-hover: "#ff6a44" + danger: "#FF4438" # --alert + warning: "#F2542D" # NERV uses orange for warning; red reserved for hazard/conflict + success: "#46E88B" # --phosphor (status / OK / added) + diff-add: "#46E88B" + diff-del: "#FF4438" + typography: + display: { fontFamily: "Anton, 'Arial Narrow', Impact, sans-serif", fontWeight: 400, letterSpacing: 0.01em } + body: { fontFamily: "'IBM Plex Sans', system-ui, -apple-system, sans-serif", fontSize: 14px, fontWeight: 400 } + mono: { fontFamily: "'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace", fontSize: 12px } + rounded: { sm: 0px, md: 2px, lg: 2px, pill: 999px } # near-sharp; framing via corner brackets, not radius + +components: + button-primary: + classic: { backgroundColor: "{classic.colors.accent}", textColor: "#ffffff", rounded: "{classic.rounded.md}" } + nerv: { backgroundColor: "{nerv.colors.accent}", textColor: "{nerv.colors.bg-app}", rounded: "{nerv.rounded.md}" } + panel: + classic: { backgroundColor: "{classic.colors.surface}", rounded: "{classic.rounded.md}" } # + macOS vibrancy in glass mode + nerv: { backgroundColor: "{nerv.colors.surface}", rounded: "{nerv.rounded.md}" } # + HUD corner brackets, no vibrancy +--- + +# Git It — Design Language + +## Overview + +Git It ships **one product with two skins**. This document defines the shared +**semantic-token contract** both skins implement, then describes each skin's +design language and how components render in it. The upcoming theming work will +let a user toggle between them in **Settings → Appearance**. + +- **Classic** — what ships today. A native-macOS, information-dense git client + in the **Fork / Tower / SourceTree** lineage: monochrome-neutral chrome, a + single **blue** accent, and its signature material — **real macOS vibrancy** + (the desktop wallpaper frosts through translucent panels). Calm, professional, + gets out of the way. +- **NERV** — the design language of the **git-it.app** marketing site brought + back into the app. A dark **"NERV / EVA console"**: near-black ground, a lead + **burnt-orange** accent, **phosphor-green** reserved for status, condensed + display type (**Anton**) + **IBM Plex** body/mono, and HUD motifs (corner + brackets, hazard stripes, hexagons, mono readouts). Opinionated, technical, + memorable. + +**The load-bearing idea for the theming phase:** NERV-as-an-app-theme is a +**re-skin of the same dense app**, not the marketing site's spacious editorial +layout. **Layout, density, spacing, and component structure stay identical +across themes.** What changes is *color, type, shape (radius), elevation +material, and decorative motif*. A user toggling to NERV gets the same +30px-row commit graph and the same panels — dressed in the console language. + +### Token architecture (primitive → semantic → component) + +Following design-token best practice, tokens are named **by intent, not +appearance** and resolved in three tiers: + +1. **Primitive** — raw values (a hex, a px). Per-theme (`#3b82f6`, `#F2542D`). +2. **Semantic** — intent aliases that components actually use + (`accent`, `surface`, `text-secondary`, `diff-add`). **The key set is + identical across themes**; only the values differ. This is the contract. +3. **Component** — a component may map a semantic token to a local role + (`button-primary.backgroundColor → {accent}`). + +Because component CSS references **semantic** tokens only, switching a theme is +purely swapping the primitive→semantic value layer — no component change. Git It +**already proves this pattern**: today a `[data-tauri="true"]` attribute on +`` re-declares the surface tokens as translucent `rgba()` to turn on glass +*without touching any component*. The theme toggle extends the exact same +mechanism with `[data-theme="nerv"]`. + +--- + +## Colors + +Both themes provide values for the **same semantic keys**. Classic is a +three-mode system (macOS chooses light/dark; glass activates in-app); NERV is +dark-only. + +### Semantic color contract + +| Semantic token | Role | Classic — light / dark / glass | NERV | +|---|---|---|---| +| `bg-app` | App background | `#eceef1` / `#0f1115` / `transparent`¹ | `#0A0C0F` | +| `surface` | Panels, cards, rows | `#ffffff` / `#1b1f26` / `rgba(255,255,255,.16)` · `rgba(28,32,39,.24)` | `#12171C` | +| `surface-raised` | Popovers, menus, sticky headers | `rgba(250,250,252,.85)` · `rgba(24,27,32,.88)` (glass) | `#0E1216` | +| `surface-header` | Toolbars, section headers, gutters | `#f1f3f5` / `#1a1e24` / translucent | `#0E1216` | +| `surface-input` | Form fields | `#f7f8fa` / `#1a1e24` / translucent | `#0E1216` | +| `control` | Button fill | `#e9ecef` / `#2a313b` / `rgba(…, .62–.66)`² | `#0E1216` (ghost + orange border) | +| `control-hover` | Button hover | `#dfe3e8` / `#353d48` / translucent | `#14181d` | +| `border` | Structural dividers | `#d6d9de` / `#353c46` / `rgba(255,255,255,.4)` · `rgba(120,130,142,.34)` | `#2E3742` | +| `border-subtle` | Fine row separators | `#eef0f3` / `#20252c` / translucent | `#232A31` | +| `text-primary` | Primary text | `#1a1d20` / `#e5e7eb` | `#EAE6DA` (warm bone) | +| `text-secondary` | Muted / secondary | `#6b7280` / `#9ca3af` | `#8A94A0` | +| `text-tertiary` | Labels, meta (AA-min) | (use `text-secondary`) | `#7C8794` | +| `row-hover` | Row hover | `#f5f7fa` / `#1c2027` | `rgba(242,84,45,.06)` | +| `row-selected` | Selected row fill | `#bfdbfe` / `#1e40af66` | `rgba(242,84,45,.10)` | +| `border-selected` | Selected row / focus edge | `#2563eb` / `#60a5fa` | `#F2542D` | +| `accent` | Lead accent / brand | `#2563eb` / `#3b82f6` (blue) | `#F2542D` (burnt orange) | +| `accent-hover` | Accent hover | `#1d4ed8` / `#2563eb` | `#ff6a44` | +| `success` | Added / OK / live | `#2da44e` / `#3fb950` | `#46E88B` (phosphor) | +| `warning` | Modified / detached HEAD | `#bf8700`·`#b45309` / `#e3b341`·`#fbbf24` | `#F2542D`³ | +| `danger` | Destructive / deleted | `#dc2626`·`#cf222e` / `#ef4444`·`#f85149` | `#FF4438` | +| `diff-add` | Diff added | `#2da44e` · bg `rgba(46,160,67,.18–.24)` | `#46E88B` · bg `rgba(70,232,139,.15)` | +| `diff-del` | Diff removed | `#cf222e` · bg `rgba(210,35,35,.18–.24)` | `#FF4438` · bg `rgba(255,68,56,.15)` | + +¹ In glass mode the app background is `transparent` so the native `NSVisualEffect` +material (the desktop wallpaper, frosted) shows through. NERV has **no vibrancy** — +it is an opaque near-black ground. +² Button fill is deliberately *more opaque* than other surfaces in glass mode for +legibility. +³ NERV reserves **red (`danger`) for hazard/conflict only**; ordinary warnings use +the orange accent. Accent discipline: **orange leads, green is status-only.** + +### Accent discipline (differs sharply between themes) +- **Classic:** one calm blue accent; color is used sparingly and semantically + (status add/mod/del, ref lanes). Neutral-forward. +- **NERV:** **orange is the only brand accent**; **green (`success`) appears + only for status/OK/added**; **red (`danger`) only for hazard/conflict**; a + warm **bone** for headings. This restraint is what keeps NERV from reading as + a generic dark theme — do not introduce decorative green or red. + +### Commit-graph lane palette (semantic key `graph.lane.1…8`) +The graph cycles 8 lane colors, per-branch overridable. This is a **first-class +themeable token** — the graph is the centre of the app. + +- **Classic** (`src/lib/graph/colors.ts`): `#378ADD` `#1D9E75` `#D85A30` + `#7F77DD` `#BA7517` `#D4537E` `#639922` `#5F5E5A`. +- **NERV** (proposed — tune during implementation, keep 8 distinguishable hues + in the NERV register): `#F2542D` (orange) `#46E88B` (phosphor) `#5AA9E6` + (steel-cyan) `#9B7FE0` (violet) `#E8A33D` (amber) `#E0608A` (pink) `#EAE6DA` + (bone) `#8A94A0` (haze). Ref badges tint from the lane color in both themes; + ref *kind* is shown by the RefIcon glyph, not color — keep that. + +**Diff syntax highlighting** is Shiki. Classic uses `github-light` / `github-dark`. +NERV should ship a **dark, orange/green-leaning Shiki theme** (or reuse a dark +theme tuned to the NERV palette) so code reads on the void ground. + +--- + +## Typography + +| Role | Classic | NERV | +|---|---|---| +| **Display** (titles, section labels) | System **San Francisco**, weight 600 (no heavy display face) | **Anton** — condensed, heavy, uppercase; the EVA title-card voice. Use sparingly (headers, `OP //` labels). | +| **Body / UI** | System SF stack, **14px** base, weights 400/500/600 | **IBM Plex Sans** at the same sizes/weights | +| **Mono** (diffs, SHAs, hashes, readouts) | **SF Mono** (`ui-monospace, SFMono-Regular, Menlo`) | **IBM Plex Mono** | + +- **Scale is shared and dense** (a professional tool): base 14px; UI text + 11–13px; mono 11–12px; a few 15–18px headings. **Do not enlarge type for + NERV** — keep the app's density; NERV expresses itself through *family + + uppercase mono labels*, not bigger text. +- NERV leans **mono-forward** for labels/readouts/status (uppercase, tracked + `0.08–0.2em`), matching the site. Classic uses proportional SF for labels. +- Fonts are **self-hosted** for NERV (`website/assets/fonts/` — Anton + IBM Plex + woff2); the app currently loads **no** custom faces. The theming phase must + bundle the NERV woff2 into the app and `@font-face` them (no network at + runtime). + +--- + +## Layout (Layout & Spacing) + +**Layout and density are theme-independent** — both skins render the identical +information architecture: + +- Compact, panel-based shell: resizable sidebar (default 240px), commit graph + + details pane, status bar (24px), optional repo tabs (~28px). +- **Commit rows are 30px** (`GraphHistory.svelte:31`); this and all spacing stay + fixed across themes. +- Spacing rhythm: an informal **4 / 6 / 8 / 10 / 12 / 16 / 18px** scale + (tokenized above as `spacing.xs…xxl`); panel padding ~`16px 18px`; column gaps + ~12px. + +What themes may adjust: **decorative framing** (NERV adds thin corner-bracket +frames + hazard-stripe section dividers + faint hex/scanline texture; Classic is +plain hairline-bordered panels) — but not the box model / density. + +--- + +## Elevation & Depth + +This is one of the biggest felt differences between the themes. + +- **Classic** — depth comes from the **OS vibrancy material**, not shadows. + Always-on panels are flat (1px `border` + a translucent tint over the + `NSVisualEffect` "popover/acrylic" material; `tauri.conf.json` `transparent:true` + + `windowEffects`). **No CSS `backdrop-filter` on always-on surfaces** — a + second CSS blur over the native material tanked framerate + (`+page.svelte:777–785`). Shadows + `blur(20px) saturate(140%)` appear **only + on transient overlays** (dialogs `0 12px 32px rgba(0,0,0,.28)`, menus + `0 8px 24px`). Selection uses **inset box-shadow** (`inset 2px 0 0 accent`) so + flex layout never shifts. +- **NERV** — **flat and opaque**; no vibrancy, no soft shadows. Depth reads + through the **HUD language**: thin **corner brackets** framing panels/consoles, + **hazard-stripe dividers** (diagonal orange/void) with a mono chip label, + hairline `border` on the void ground, and a faint fixed **scanline + grid** + overlay. Keep transient overlays legible (an opaque `surface-raised` on the + void ground) rather than blurred. + +--- + +## Shapes + +| | Classic | NERV | +|---|---|---| +| Controls (buttons, segs) | `6px` radius | near-sharp (`0–2px`); "framed" via corner brackets | +| Panels / cards | `6px` | `2px` (essentially square) | +| Dialogs | `8–10px` | `2px` + corner brackets | +| Chips / pills / badges | fully round `999px` | keep `999px` for ref/branch chips **or** square them to `2px` (decide once, apply consistently) | +| Dots (graph) | `50%` | `50%` (unchanged) | + +NERV's identity is **angular** — favour sharp corners + bracket accents over +rounded rectangles. Classic is the friendly macOS `6px`-everywhere rounding. + +--- + +## Components + +How key surfaces render per theme. Components reference the semantic tokens +above; only these *treatments* differ. + +| Component | Classic | NERV | +|---|---|---| +| **Primary button** | `accent` (blue) fill, white text, `6px` | `accent` (orange) fill, `bg-app` text, near-square; mono uppercase label | +| **Ghost / secondary button** | `control` fill, `border`, `6px` | `surface-raised` + `border`, corner brackets that light up on hover | +| **Panel / console** | `surface` tint over vibrancy, 1px `border`, flat | `surface` opaque, 1px `border`, **corner brackets**, optional mono header bar (`◇ LABEL … ● LIVE`) | +| **Toolbar / overlay header** | translucent `surface-header`, native traffic lights kept, window-centered title | opaque `surface-header`, mono wordmark, hazard underline | +| **Sidebar / tabs** | neutral, `row-hover`/`row-selected` blues, resize handle thickens to `accent` on hover | same layout; orange selection edge, mono section labels, resize handle → orange | +| **Commit graph** | 8 blue-family+earthy lanes, `accent` HEAD ring, dots in lane color | 8 NERV-register lanes (orange/phosphor-led), orange HEAD ring; same 30px rows, same curved/angular option | +| **Ref badge** | outlined pill tinted by lane color; kind = glyph | same, tinted by NERV lane color; consider squared chip | +| **Diff** | green `#2da44e` / red `#cf222e`, Shiki github-*; per-hunk stage | phosphor `#46E88B` / alert `#FF4438`, dark Shiki; identical hunk UI | +| **Status bar** | 24px, `surface-header`, muted proportional text | 24px, opaque, **mono** readout style | +| **Dialog / menu** | `surface-raised`, `10px`, soft shadow + CSS blur | `surface-raised`, `2px`, corner brackets, no blur, hazard header chip | +| **Segmented control** | the primary picker idiom — keep in both | keep; NERV uses mono labels + orange active segment | +| **Spinners / status** | fast functional spinners | add a mono/`● LIVE`-style blinking status dot idiom | + +--- + +## Do's and Don'ts + +**Do** +- **Reference semantic tokens** (`var(--accent)`, `var(--surface)`) in component + CSS — never raw hex. This is what makes a one-attribute theme swap possible. +- **Keep the semantic key set identical** across themes; add a key to *both* + themes or neither. +- **Extend the existing `[data-tauri]` pattern**: set `[data-theme="nerv"]` on + `` and re-declare the token block; leave component CSS untouched. + Classic keeps its light/dark/glass logic; NERV is a third top-level branch + (dark-only, opaque, no vibrancy). +- **Treat the commit-graph lane palette + diff colors as themeable tokens** — + they carry meaning and must read on each theme's ground. +- **Respect `prefers-reduced-motion`** in both themes (already the app's rule); + NERV's boot/scanline flourishes must degrade to static. +- **Bundle NERV's fonts** (Anton + IBM Plex woff2) into the app and `@font-face` + them locally — no runtime network. +- **Preserve accent discipline in NERV**: orange leads, green = status only, red + = hazard/conflict only, bone for headings. + +**Don't** +- Don't change **layout, density, spacing, or component structure** per theme — + NERV is a re-skin, not the marketing layout. +- Don't hardcode a theme's colors/fonts in a component. +- Don't put a CSS `backdrop-filter` on always-on panels (kills framerate over + the native material) — that constraint holds for Classic; NERV is opaque so it + simply doesn't need blur. +- Don't let NERV drop below **AA contrast** (the site already tunes `#7C8794` + for this) — an app is read all day. +- Don't enlarge type or add whitespace to "make it feel like the site" — keep + the professional density. + +--- + +## Implementation notes for the theming phase + +- **Current source of truth (Classic):** all tokens live in one + `:global(:root)` block, `src/routes/+page.svelte:611–704` — light `612–642`, + dark `@media prefers-color-scheme` `644–669`, glass `[data-tauri="true"]` + `674–704`. Toggle logic: `src/lib/tauriMode.ts`. Vibrancy config: + `src-tauri/tauri.conf.json` (transparent + Overlay titlebar + `windowEffects + popover/acrylic`). Lane palette: `src/lib/graph/colors.ts`. Diff colors: + `DiffView.svelte`. Shiki themes: `src/lib/diff/highlight.ts`. +- **Current source of truth (NERV):** the shipped marketing site — + `website/assets/css/styles.css` (`:root` token block) and + `website/assets/fonts/` (Anton + IBM Plex woff2). +- **Suggested mechanism:** promote the token block to a small dedicated + stylesheet with three cascading layers — base (light), `@media` dark, + `[data-tauri]` glass — and add a parallel `:root[data-theme="nerv"]` block + (dark-only, opaque) plus `:root[data-theme="nerv"][data-tauri="true"]` if any + glass interplay is wanted (likely NERV ignores vibrancy). A user setting in + **Settings → Appearance** writes `data-theme` to `` and persists it + (mirror the existing appearance settings + `tauriMode.ts`). +- **Open decisions for that phase:** NERV lane palette final values; whether ref + chips go square in NERV; a NERV Shiki syntax theme; whether Classic's + automatic light/dark stays independent of the Classic/NERV toggle (recommended: + yes — theme = Classic/NERV; within Classic, macOS still drives light/dark). +- **A real app icon** is still outstanding (current `src-tauri/icons/icon-source.svg` + is a placeholder; web favicon is stock SvelteKit) — out of scope here but + related brand work. + +--- + +## Sources + +- DESIGN.md format: the [DESIGN.md spec](https://github.com/google-labs-code/design.md) + (Google) and [Atlassian's DESIGN.md write-up](https://www.atlassian.com/blog/how-we-build/atlassians-design-md-is-here-what-we-learned-testing-portable-design-context-in-practice). +- Design-token tiering (primitive → semantic → component) and intent-based + naming follow common design-system practice + ([UXPin](https://www.uxpin.com/studio/blog/what-are-design-tokens/), + [Contentful](https://www.contentful.com/blog/design-token-system/)). +- Classic values extracted from this repo (anchors above); NERV values from + `website/` (this PR). From c18e9496c4b874448eddcc1dc20db928737e511a Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 12:25:15 -0400 Subject: [PATCH 11/76] chore: ship SIL OFL notices for bundled Anton + IBM Plex fonts --- website/assets/fonts/Anton-OFL.txt | 93 ++++++++++++++++++++++++++++ website/assets/fonts/IBMPlex-OFL.txt | 93 ++++++++++++++++++++++++++++ website/assets/fonts/fonts.css | 5 +- 3 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 website/assets/fonts/Anton-OFL.txt create mode 100644 website/assets/fonts/IBMPlex-OFL.txt diff --git a/website/assets/fonts/Anton-OFL.txt b/website/assets/fonts/Anton-OFL.txt new file mode 100644 index 0000000..93fedde --- /dev/null +++ b/website/assets/fonts/Anton-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Anton Project Authors (https://github.com/googlefonts/AntonFont.git) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/website/assets/fonts/IBMPlex-OFL.txt b/website/assets/fonts/IBMPlex-OFL.txt new file mode 100644 index 0000000..c35c4c6 --- /dev/null +++ b/website/assets/fonts/IBMPlex-OFL.txt @@ -0,0 +1,93 @@ +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/website/assets/fonts/fonts.css b/website/assets/fonts/fonts.css index 406ab22..8929b90 100644 --- a/website/assets/fonts/fonts.css +++ b/website/assets/fonts/fonts.css @@ -1,5 +1,8 @@ /* Self-hosted fonts — zero third-party requests at runtime. - Anton (OFL), IBM Plex Sans + IBM Plex Mono (OFL). */ + Anton (© 2020 The Anton Project Authors) and IBM Plex Sans + IBM Plex Mono + (© 2017 IBM Corp., Reserved Font Name "Plex") are licensed under the SIL Open + Font License 1.1. Full license + notices: Anton-OFL.txt and IBMPlex-OFL.txt + (this directory), shipped with the font binaries per the OFL. */ @font-face { font-family: "Anton"; From 512b942688e74983ccf90fedabb5b2fc74103301 Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 12:34:26 -0400 Subject: [PATCH 12/76] chore: sync package-lock.json license to CC-BY-NC-SA-4.0 --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index a97e1a5..e389e7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "": { "name": "git-it", "version": "0.1.0", - "license": "UNLICENSED", + "license": "CC-BY-NC-SA-4.0", "dependencies": { "@tauri-apps/api": "^2", "@tauri-apps/plugin-dialog": "^2.7.1", From fb490ee0dca9967cb60ea5d327fd32ff6459184d Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 12:44:02 -0400 Subject: [PATCH 13/76] fix: scope sticky nav styles to the primary nav so the footer nav doesn't stick --- website/assets/css/styles.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/website/assets/css/styles.css b/website/assets/css/styles.css index 0083c04..41f27d4 100644 --- a/website/assets/css/styles.css +++ b/website/assets/css/styles.css @@ -43,11 +43,12 @@ body{margin:0;} } .wrap{max-width:1240px;margin:0 auto;padding:0 clamp(20px,4vw,48px);position:relative;z-index:5;} -/* ---- nav (Task 2) ---- */ -nav{position:sticky;top:0;z-index:20; +/* ---- nav (Task 2) — scoped to the primary header nav so the footer + nav (nav.foot-cols[aria-label="Footer"]) doesn't inherit sticky/z-index ---- */ +nav[aria-label="Primary"]{position:sticky;top:0;z-index:20; backdrop-filter:blur(8px);background:linear-gradient(var(--void),rgba(10,12,15,.72)); border-bottom:1px solid transparent;transition:border-color .2s;} -nav.is-scrolled{border-bottom-color:var(--line);} +nav[aria-label="Primary"].is-scrolled{border-bottom-color:var(--line);} .nav-in{display:flex;align-items:center;justify-content:space-between;gap:20px; height:60px;} .brand{display:flex;align-items:center;gap:10px;font-family:var(--font-mono); From 74c4c324a3d72bad7565c8c952b5ac4ee3d83aab Mon Sep 17 00:00:00 2001 From: Ash Shah <494shah@gmail.com> Date: Tue, 7 Jul 2026 12:57:33 -0400 Subject: [PATCH 14/76] fix: add html5 doctype + full document structure to pages (exits quirks mode, adds lang) --- website/404.html | 8 +++++++- website/guides.html | 8 +++++++- website/index.html | 8 +++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/website/404.html b/website/404.html index 9a69642..b972359 100644 --- a/website/404.html +++ b/website/404.html @@ -1,3 +1,6 @@ + + + Git It — Not found @@ -14,7 +17,8 @@ - + +